@mitre/hdf-mappings 3.1.0-rc.1 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -223,7 +223,7 @@ hdf-mappings/go/
223
223
  ```
224
224
 
225
225
  ```go
226
- import "github.com/mitre/hdf-libs/hdf-mappings/go/cci"
226
+ import "github.com/mitre/hdf-libs/hdf-mappings/go/v3/cci"
227
227
 
228
228
  controls := cci.GetCCINistMappings("CCI-000001")
229
229
  // Returns: []string{"AC-1 a", "AC-1.1 (i and ii)", "AC-1 a 1"}
@@ -236,14 +236,14 @@ nist := cci.CCIToNIST([]string{"CCI-000366", "CCI-000001"})
236
236
  ```
237
237
 
238
238
  ```go
239
- import "github.com/mitre/hdf-libs/hdf-mappings/go/cwe"
239
+ import "github.com/mitre/hdf-libs/hdf-mappings/go/v3/cwe"
240
240
 
241
241
  controls := cwe.NISTControls("CWE-476") // prefix form
242
242
  controls = cwe.NISTControls("476") // numeric form — equivalent
243
243
  ```
244
244
 
245
245
  ```go
246
- import "github.com/mitre/hdf-libs/hdf-mappings/go/awsconfig"
246
+ import "github.com/mitre/hdf-libs/hdf-mappings/go/v3/awsconfig"
247
247
 
248
248
  controls := awsconfig.NISTControls("SECRETSMANAGER_SCHEDULED_ROTATION_SUCCESS_CHECK")
249
249
  mapping := awsconfig.GetByIdentifier("SECRETSMANAGER_SCHEDULED_ROTATION_SUCCESS_CHECK")
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/cci/types.ts","../src/cci/index.ts","../src/nist/types.ts","../src/nist/index.ts","../src/owasp/types.ts","../src/owasp/index.ts","../src/cwe/types.ts","../src/cwe/index.ts","../src/nessus/types.ts","../src/nessus/index.ts","../src/nikto/types.ts","../src/nikto/index.ts","../src/scoutsuite/types.ts","../src/scoutsuite/index.ts","../src/awsconfig/types.ts","../src/awsconfig/index.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/cci/types.ts","../src/cci/index.ts","../src/nist/types.ts","../src/nist/index.ts","../src/owasp/types.ts","../src/owasp/index.ts","../src/cwe/types.ts","../src/cwe/index.ts","../src/nessus/types.ts","../src/nessus/index.ts","../src/nikto/types.ts","../src/nikto/index.ts","../src/scoutsuite/types.ts","../src/scoutsuite/index.ts","../src/awsconfig/types.ts","../src/awsconfig/index.ts"],"mappings":"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"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["rawCCIData","rawNistCCIData","rawNistData","rawOwaspData","mappings","rawMappings","mappings","rawMappings","mappings","rawMappings","mappings","rawMappings","rawMappings"],"sources":["../src/data/cci-mappings.json","../src/data/nist-cci-mappings.json","../src/cci/index.ts","../src/data/nist-descriptions.json","../src/nist/index.ts","../src/data/owasp-nist-mappings.json","../src/owasp/index.ts","../src/data/cwe-nist-mappings.json","../src/cwe/index.ts","../src/data/nessus-nist-mappings.json","../src/nessus/index.ts","../src/data/nikto-nist-mappings.json","../src/nikto/index.ts","../src/data/scoutsuite-nist-mappings.json","../src/scoutsuite/index.ts","../src/data/awsconfig-mappings.json","../src/awsconfig/index.ts"],"sourcesContent":["","","/**\n * CCI (Control Correlation Identifier) mapping functions\n */\n\nimport type { CCIMappings, NistCCIMappings } from './types.js';\nimport rawCCIData from '../data/cci-mappings.json';\nimport rawNistCCIData from '../data/nist-cci-mappings.json';\n\nconst cciData = rawCCIData as CCIMappings;\nconst nistCCIData = rawNistCCIData as NistCCIMappings;\n\n/**\n * Get the definition/description for a CCI ID.\n *\n * @param cciId - The CCI ID (e.g., 'CCI-000001')\n * @returns The CCI definition, or undefined if not found\n *\n * @example\n * ```typescript\n * const def = getCCIDescription('CCI-000001');\n * // Returns: \"The organization develops an access control policy...\"\n * ```\n */\nexport function getCCIDescription(cciId: string): string | undefined {\n if (!cciId || typeof cciId !== 'string') {\n return undefined;\n }\n\n const item = cciData[cciId];\n return item?.def;\n}\n\n/**\n * Get the NIST control mappings for a CCI ID.\n *\n * @param cciId - The CCI ID (e.g., 'CCI-000001')\n * @returns Array of NIST control references, or undefined if not found\n *\n * @example\n * ```typescript\n * const mappings = getCCINistMappings('CCI-000001');\n * // Returns: ['AC-1 a', 'AC-1.1 (i and ii)', 'AC-1 a 1']\n * ```\n */\nexport function getCCINistMappings(cciId: string): string[] | undefined {\n if (!cciId || typeof cciId !== 'string') {\n return undefined;\n }\n\n const item = cciData[cciId];\n return item?.nist;\n}\n\n/**\n * Get all CCI IDs available in the database.\n *\n * @returns Array of all CCI IDs\n *\n * @example\n * ```typescript\n * const ids = getAllCCIIds();\n * // Returns: ['CCI-000001', 'CCI-000002', ...]\n * ```\n */\nexport function getAllCCIIds(): string[] {\n return Object.keys(cciData);\n}\n\n/**\n * Check if a CCI ID exists in the database.\n *\n * @param cciId - The CCI ID to check\n * @returns true if the CCI exists, false otherwise\n *\n * @example\n * ```typescript\n * if (cciExists('CCI-000001')) {\n * console.log('CCI found');\n * }\n * ```\n */\nexport function cciExists(cciId: string): boolean {\n if (!cciId || typeof cciId !== 'string') {\n return false;\n }\n\n return cciId in cciData;\n}\n\n/**\n * Extract the base NIST control identifier from a potentially qualified string.\n * For example, \"SI-10 a 1\" → \"SI-10\", \"AC-3 (2)\" → \"AC-3\".\n */\nfunction baseNistControl(control: string): string {\n const idx = control.search(/[ (.]/);\n return idx === -1 ? control : control.slice(0, idx);\n}\n\n/**\n * Get CCI IDs for a NIST control using the curated mapping table.\n * The input is normalized to its base control before lookup.\n *\n * @param nistControl - NIST control string (e.g., 'SI-10', 'AC-3 (2)')\n * @returns Array of CCI IDs, or undefined if not found\n *\n * @example\n * ```typescript\n * const ccis = getNistCCIMappings('SI-10');\n * // Returns: ['CCI-001310']\n * ```\n */\nexport function getNistCCIMappings(nistControl: string): string[] | undefined {\n if (!nistControl || typeof nistControl !== 'string') {\n return undefined;\n }\n const base = baseNistControl(nistControl);\n return nistCCIData[base];\n}\n\n/**\n * Map NIST 800-53 controls to their CCI IDs using the curated mapping table.\n * Results are deduplicated and sorted.\n *\n * @param nistControls - Array of NIST control strings\n * @returns Deduplicated, sorted array of CCI IDs (empty array if no mappings found)\n *\n * @example\n * ```typescript\n * const ccis = nistToCci(['AC-3', 'SI-10']);\n * // Returns: ['CCI-000213', 'CCI-001310']\n * ```\n */\nexport function nistToCci(nistControls: string[]): string[] {\n const seen = new Set<string>();\n for (const control of nistControls) {\n const ccis = getNistCCIMappings(control);\n if (ccis) {\n for (const cciId of ccis) {\n seen.add(cciId);\n }\n }\n }\n return Array.from(seen).sort();\n}\n\n// Re-export types\nexport type { CCIItem, CCIMappings, NistCCIMappings } from './types.js';\n","","/**\n * NIST SP 800-53 control description functions\n */\n\nimport type { NISTDescriptions } from './types.js';\nimport rawNistData from '../data/nist-descriptions.json';\n\nconst nistData = rawNistData as NISTDescriptions;\n\n/**\n * Get the description for a NIST control ID.\n *\n * @param nistId - The NIST control ID (e.g., 'AC-01', 'AC-01 a', 'AC-01 a 01')\n * @returns The NIST control description, or undefined if not found\n *\n * @example\n * ```typescript\n * const desc = getNISTDescription('AC-01');\n * // Returns: \"ACCESS CONTROL POLICY AND PROCEDURES\"\n * ```\n */\nexport function getNISTDescription(nistId: string): string | undefined {\n if (!nistId || typeof nistId !== 'string') {\n return undefined;\n }\n\n return nistData[nistId];\n}\n\n/**\n * Get all NIST control IDs available in the database.\n *\n * @returns Array of all NIST control IDs\n *\n * @example\n * ```typescript\n * const ids = getAllNISTIds();\n * // Returns: ['AC-01', 'AC-01 a', 'AC-02', ...]\n * ```\n */\nexport function getAllNISTIds(): string[] {\n return Object.keys(nistData);\n}\n\n/**\n * Check if a NIST control ID exists in the database.\n *\n * @param nistId - The NIST control ID to check\n * @returns true if the NIST control exists, false otherwise\n *\n * @example\n * ```typescript\n * if (nistExists('AC-01')) {\n * console.log('NIST control found');\n * }\n * ```\n */\nexport function nistExists(nistId: string): boolean {\n if (!nistId || typeof nistId !== 'string') {\n return false;\n }\n\n return nistId in nistData;\n}\n\n/**\n * Extract the NIST family from a NIST control ID.\n *\n * @param nistId - The NIST control ID (e.g., 'AC-01', 'AC-01 a')\n * @returns The NIST family code (e.g., 'AC'), or undefined if invalid\n *\n * @example\n * ```typescript\n * const family = getNISTFamily('AC-01');\n * // Returns: 'AC'\n *\n * const family2 = getNISTFamily('AC-01 a 01');\n * // Returns: 'AC'\n * ```\n */\nexport function getNISTFamily(nistId: string): string | undefined {\n if (!nistId || typeof nistId !== 'string') {\n return undefined;\n }\n\n // Extract family from format like \"AC-01\" or \"AC-01 a\"\n const match = nistId.match(/^([A-Z]{2})-/);\n if (!match) {\n return undefined;\n }\n\n const family = match[1];\n\n // Validate that this family exists in our database by checking\n // if any controls start with this family\n const familyPrefix = `${family}-`;\n const hasFamily = Object.keys(nistData).some((key) => key.startsWith(familyPrefix));\n\n return hasFamily ? family : undefined;\n}\n\n/**\n * Canonical NIST 800-53 fallback tags for converters when a finding has no\n * CWE or the CWE has no NIST mapping. Categories match heimdall2's global.ts.\n *\n * - SA-11: Developer Security Testing and Evaluation\n * - RA-5: Vulnerability Monitoring and Scanning\n * - SI-2: Flaw Remediation\n * - CM-8: System Component Inventory\n */\n\n/** Static analysis and vulnerability scanning tools (SA-11 + RA-5). */\nexport const DEFAULT_STATIC_ANALYSIS_NIST_TAGS: string[] = ['SA-11', 'RA-5'];\n\n/** Tools that identify outdated packages or flaws requiring patching (SI-2 + RA-5). */\nexport const DEFAULT_REMEDIATION_NIST_TAGS: string[] = ['SI-2', 'RA-5'];\n\n/** Dependency/inventory management tools (CM-8). */\nexport const DEFAULT_COMPONENT_MANAGEMENT_NIST_TAGS: string[] = ['CM-8'];\n\n// Re-export types\nexport type { NISTDescriptions } from './types.js';\n","","/**\n * OWASP Top 10 to NIST mapping functions\n */\n\nimport type { OwaspNistMappings, OwaspNistMapping } from './types.js';\nimport rawOwaspData from '../data/owasp-nist-mappings.json';\n\nconst owaspData = rawOwaspData as OwaspNistMappings;\nconst owaspIndex = new Map<string, OwaspNistMapping>(\n owaspData.map(item => [item['OWASP-ID'], item])\n);\n\n/**\n * Get the NIST mapping for an OWASP Top 10 ID.\n *\n * @param owaspId - The OWASP ID (e.g., 'A1', 'A2')\n * @returns The mapping object, or undefined if not found\n *\n * @example\n * ```typescript\n * const mapping = getOwaspNistMapping('A1');\n * // Returns: { 'OWASP-ID': 'A1', 'OWASP Name': 'Injection', 'NIST-ID': 'SI-10', ... }\n * ```\n */\nexport function getOwaspNistMapping(owaspId: string): OwaspNistMapping | undefined {\n if (!owaspId || typeof owaspId !== 'string') {\n return undefined;\n }\n\n return owaspIndex.get(owaspId);\n}\n\n/**\n * Get the NIST control ID for an OWASP Top 10 ID.\n *\n * @param owaspId - The OWASP ID (e.g., 'A1', 'A2')\n * @returns The NIST control ID, or undefined if not found\n *\n * @example\n * ```typescript\n * const nistId = getOwaspNistControl('A1');\n * // Returns: 'SI-10'\n * ```\n */\nexport function getOwaspNistControl(owaspId: string): string | undefined {\n const mapping = getOwaspNistMapping(owaspId);\n return mapping?.['NIST-ID'];\n}\n\n/**\n * Get the OWASP vulnerability name for an OWASP ID.\n *\n * @param owaspId - The OWASP ID (e.g., 'A1', 'A2')\n * @returns The OWASP vulnerability name, or undefined if not found\n *\n * @example\n * ```typescript\n * const name = getOwaspName('A1');\n * // Returns: 'Injection'\n * ```\n */\nexport function getOwaspName(owaspId: string): string | undefined {\n const mapping = getOwaspNistMapping(owaspId);\n return mapping?.['OWASP Name'];\n}\n\n/**\n * Get all OWASP IDs available in the database.\n *\n * @returns Array of all OWASP IDs\n *\n * @example\n * ```typescript\n * const ids = getAllOwaspIds();\n * // Returns: ['A1', 'A2', 'A3', ..., 'A10']\n * ```\n */\nexport function getAllOwaspIds(): string[] {\n return Array.from(owaspIndex.keys());\n}\n\n/**\n * Check if an OWASP ID exists in the database.\n *\n * @param owaspId - The OWASP ID to check\n * @returns true if the OWASP ID exists, false otherwise\n *\n * @example\n * ```typescript\n * if (owaspExists('A1')) {\n * console.log('OWASP ID found');\n * }\n * ```\n */\nexport function owaspExists(owaspId: string): boolean {\n if (!owaspId || typeof owaspId !== 'string') {\n return false;\n }\n\n return owaspIndex.has(owaspId);\n}\n\n/**\n * Get all OWASP to NIST mappings.\n *\n * @returns Array of all mappings\n *\n * @example\n * ```typescript\n * const mappings = getAllOwaspMappings();\n * // Returns all 10 OWASP Top 10 mappings\n * ```\n */\nexport function getAllOwaspMappings(): OwaspNistMappings {\n return owaspData;\n}\n\n// Re-export types\nexport type { OwaspNistMapping, OwaspNistMappings } from './types.js';\n","","/**\n * Query functions for CWE to NIST mappings\n */\n\nimport type { CweNistMapping, CweNistMappings } from './types.js';\nimport rawMappings from '../data/cwe-nist-mappings.json';\n\nconst mappings = rawMappings as CweNistMappings;\nconst indexById = new Map<number, CweNistMapping>(\n mappings.map(m => [m['CWE-ID'], m])\n);\n\n/**\n * Get the full mapping for a CWE ID\n * @param cweId - The CWE ID (number)\n * @returns The mapping object or undefined if not found\n */\nexport function getCweNistMapping(cweId: number): CweNistMapping | undefined {\n return indexById.get(cweId);\n}\n\n/**\n * Get the NIST control ID for a CWE ID\n * @param cweId - The CWE ID (number)\n * @returns The NIST control ID or undefined if not found\n */\nexport function getCweNistControl(cweId: number): string | undefined {\n const mapping = getCweNistMapping(cweId);\n return mapping?.['NIST-ID'];\n}\n\n/**\n * Get the CWE name for a CWE ID\n * @param cweId - The CWE ID (number)\n * @returns The CWE name or undefined if not found\n */\nexport function getCweName(cweId: number): string | undefined {\n const mapping = getCweNistMapping(cweId);\n return mapping?.['CWE Name'];\n}\n\n/**\n * Get all CWE IDs\n * @returns Array of all CWE IDs\n */\nexport function getAllCweIds(): number[] {\n return Array.from(indexById.keys());\n}\n\n/**\n * Check if a CWE ID exists in the mappings\n * @param cweId - The CWE ID to check\n * @returns True if the CWE ID exists\n */\nexport function cweExists(cweId: number): boolean {\n return indexById.has(cweId);\n}\n\n/**\n * Get all CWE to NIST mappings\n * @returns Array of all mappings\n */\nexport function getAllCweMappings(): CweNistMappings {\n return [...mappings];\n}\n","","/**\n * Query functions for Nessus to NIST mappings\n */\n\nimport type { NessusNistMappings } from './types.js';\nimport rawMappings from '../data/nessus-nist-mappings.json';\n\nconst mappings = rawMappings as NessusNistMappings;\n\n/**\n * Get the NIST control ID for a Nessus plugin family and plugin ID\n * @param pluginFamily - The Nessus plugin family\n * @param pluginId - The Nessus plugin ID (optional, defaults to \"*\")\n * @returns The NIST control ID or undefined if not found\n */\nexport function getNessusNistControl(\n pluginFamily: string,\n pluginId = '*'\n): string | undefined {\n // First try exact match with plugin ID\n const exactMatch = mappings.find(\n (m) => m.pluginFamily === pluginFamily && m.pluginID === pluginId\n );\n if (exactMatch) {\n return exactMatch['NIST-ID'];\n }\n\n // Fall back to wildcard match\n const wildcardMatch = mappings.find(\n (m) => m.pluginFamily === pluginFamily && m.pluginID === '*'\n );\n return wildcardMatch?.['NIST-ID'];\n}\n\n/**\n * Get all mappings for a plugin family\n * @param pluginFamily - The Nessus plugin family\n * @returns Array of mappings for the plugin family\n */\nexport function getNessusPluginFamilyMappings(\n pluginFamily: string\n): NessusNistMappings {\n return mappings.filter((m) => m.pluginFamily === pluginFamily);\n}\n\n/**\n * Get all plugin families\n * @returns Array of all plugin families\n */\nexport function getAllNessusPluginFamilies(): string[] {\n const families = new Set(mappings.map((m) => m.pluginFamily));\n return Array.from(families);\n}\n\n/**\n * Check if a plugin family exists in the mappings\n * @param pluginFamily - The plugin family to check\n * @returns True if the plugin family exists\n */\nexport function nessusPluginFamilyExists(pluginFamily: string): boolean {\n return mappings.some((m) => m.pluginFamily === pluginFamily);\n}\n\n/**\n * Get all Nessus to NIST mappings\n * @returns Array of all mappings\n */\nexport function getAllNessusMappings(): NessusNistMappings {\n return [...mappings];\n}\n","","/**\n * Query functions for Nikto to NIST mappings\n */\n\nimport type { NiktoNistMappings } from './types.js';\nimport rawMappings from '../data/nikto-nist-mappings.json';\n\nconst mappings = rawMappings as NiktoNistMappings;\n\n/**\n * Get the NIST control ID for a Nikto test ID\n * @param niktoId - The Nikto test ID (string or number)\n * @returns The NIST control ID or undefined if not found\n */\nexport function getNiktoNistControl(niktoId: string | number): string | undefined {\n const id = typeof niktoId === 'number' ? niktoId.toString() : niktoId;\n return mappings[id];\n}\n\n/**\n * Get all Nikto test IDs\n * @returns Array of all Nikto test IDs\n */\nexport function getAllNiktoIds(): string[] {\n return Object.keys(mappings);\n}\n\n/**\n * Check if a Nikto test ID exists in the mappings\n * @param niktoId - The Nikto test ID to check\n * @returns True if the Nikto test ID exists\n */\nexport function niktoExists(niktoId: string | number): boolean {\n const id = typeof niktoId === 'number' ? niktoId.toString() : niktoId;\n return id in mappings;\n}\n\n/**\n * Get all Nikto to NIST mappings\n * @returns Object mapping Nikto test IDs to NIST control IDs\n */\nexport function getAllNiktoMappings(): NiktoNistMappings {\n return { ...mappings };\n}\n","","/**\n * Query functions for ScoutSuite to NIST mappings\n */\n\nimport type { ScoutsuiteNistMapping, ScoutsuiteNistMappings } from './types.js';\nimport rawMappings from '../data/scoutsuite-nist-mappings.json';\n\nconst mappings = rawMappings as ScoutsuiteNistMappings;\nconst indexByRule = new Map<string, ScoutsuiteNistMapping>(\n mappings.map(m => [m.RULE, m])\n);\n\n/**\n * Get the full mapping for a ScoutSuite rule\n * @param rule - The ScoutSuite rule name\n * @returns The mapping object or undefined if not found\n */\nexport function getScoutsuiteNistMapping(rule: string): ScoutsuiteNistMapping | undefined {\n return indexByRule.get(rule);\n}\n\n/**\n * Get the NIST control ID for a ScoutSuite rule\n * @param rule - The ScoutSuite rule name\n * @returns The NIST control ID or undefined if not found\n */\nexport function getScoutsuiteNistControl(rule: string): string | undefined {\n const mapping = getScoutsuiteNistMapping(rule);\n return mapping?.['NIST-ID'];\n}\n\n/**\n * Get all ScoutSuite rule names\n * @returns Array of all rule names\n */\nexport function getAllScoutsuiteRules(): string[] {\n return Array.from(indexByRule.keys());\n}\n\n/**\n * Check if a ScoutSuite rule exists in the mappings\n * @param rule - The rule name to check\n * @returns True if the rule exists\n */\nexport function scoutsuiteRuleExists(rule: string): boolean {\n return indexByRule.has(rule);\n}\n\n/**\n * Get all ScoutSuite to NIST mappings\n * @returns Array of all mappings\n */\nexport function getAllScoutsuiteMappings(): ScoutsuiteNistMappings {\n return [...mappings];\n}\n","","/**\n * Query functions for AWS Config to NIST mappings\n */\n\nimport type { AwsConfigNistMapping, AwsConfigNistMappings } from './types.js';\nimport rawMappings from '../data/awsconfig-mappings.json';\n\nconst mappings = rawMappings as AwsConfigNistMappings;\nconst indexByIdentifier = new Map<string, AwsConfigNistMapping>(\n mappings.map(m => [m.AwsConfigRuleSourceIdentifier, m])\n);\nconst indexByRuleName = new Map<string, AwsConfigNistMapping>(\n mappings.map(m => [m.AwsConfigRuleName, m])\n);\n\n/**\n * Get the full mapping for an AWS Config rule by source identifier\n * @param identifier - The AWS Config rule source identifier\n * @returns The mapping object or undefined if not found\n */\nexport function getAwsConfigNistMappingByIdentifier(\n identifier: string\n): AwsConfigNistMapping | undefined {\n return indexByIdentifier.get(identifier);\n}\n\n/**\n * Get the full mapping for an AWS Config rule by rule name\n * @param ruleName - The AWS Config rule name\n * @returns The mapping object or undefined if not found\n */\nexport function getAwsConfigNistMappingByName(\n ruleName: string\n): AwsConfigNistMapping | undefined {\n return indexByRuleName.get(ruleName);\n}\n\n/**\n * Get the NIST control ID for an AWS Config rule by source identifier\n * @param identifier - The AWS Config rule source identifier\n * @returns The NIST control ID or undefined if not found\n */\nexport function getAwsConfigNistControlByIdentifier(identifier: string): string | undefined {\n const mapping = getAwsConfigNistMappingByIdentifier(identifier);\n return mapping?.['NIST-ID'];\n}\n\n/**\n * Get the NIST control ID for an AWS Config rule by rule name\n * @param ruleName - The AWS Config rule name\n * @returns The NIST control ID or undefined if not found\n */\nexport function getAwsConfigNistControlByName(ruleName: string): string | undefined {\n const mapping = getAwsConfigNistMappingByName(ruleName);\n return mapping?.['NIST-ID'];\n}\n\n/**\n * Get all AWS Config rule source identifiers\n * @returns Array of all rule source identifiers\n */\nexport function getAllAwsConfigIdentifiers(): string[] {\n return Array.from(indexByIdentifier.keys());\n}\n\n/**\n * Get all AWS Config rule names\n * @returns Array of all rule names\n */\nexport function getAllAwsConfigRuleNames(): string[] {\n return Array.from(indexByRuleName.keys());\n}\n\n/**\n * Check if an AWS Config rule exists by source identifier\n * @param identifier - The rule source identifier to check\n * @returns True if the rule exists\n */\nexport function awsConfigIdentifierExists(identifier: string): boolean {\n return indexByIdentifier.has(identifier);\n}\n\n/**\n * Check if an AWS Config rule exists by rule name\n * @param ruleName - The rule name to check\n * @returns True if the rule exists\n */\nexport function awsConfigRuleNameExists(ruleName: string): boolean {\n return indexByRuleName.has(ruleName);\n}\n\n/**\n * Get all AWS Config to NIST mappings\n * @returns Array of all mappings\n */\nexport function getAllAwsConfigMappings(): AwsConfigNistMappings {\n return [...mappings];\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
1
+ {"version":3,"file":"index.js","names":["rawCCIData","rawNistCCIData","rawNistData","rawOwaspData","mappings","rawMappings","mappings","rawMappings","mappings","rawMappings","mappings","rawMappings","rawMappings"],"sources":["../src/data/cci-mappings.json","../src/data/nist-cci-mappings.json","../src/cci/index.ts","../src/data/nist-descriptions.json","../src/nist/index.ts","../src/data/owasp-nist-mappings.json","../src/owasp/index.ts","../src/data/cwe-nist-mappings.json","../src/cwe/index.ts","../src/data/nessus-nist-mappings.json","../src/nessus/index.ts","../src/data/nikto-nist-mappings.json","../src/nikto/index.ts","../src/data/scoutsuite-nist-mappings.json","../src/scoutsuite/index.ts","../src/data/awsconfig-mappings.json","../src/awsconfig/index.ts"],"sourcesContent":["","","/**\n * CCI (Control Correlation Identifier) mapping functions\n */\n\nimport type { CCIMappings, NistCCIMappings } from './types.js';\nimport rawCCIData from '../data/cci-mappings.json';\nimport rawNistCCIData from '../data/nist-cci-mappings.json';\n\nconst cciData = rawCCIData as CCIMappings;\nconst nistCCIData = rawNistCCIData as NistCCIMappings;\n\n/**\n * Get the definition/description for a CCI ID.\n *\n * @param cciId - The CCI ID (e.g., 'CCI-000001')\n * @returns The CCI definition, or undefined if not found\n *\n * @example\n * ```typescript\n * const def = getCCIDescription('CCI-000001');\n * // Returns: \"The organization develops an access control policy...\"\n * ```\n */\nexport function getCCIDescription(cciId: string): string | undefined {\n if (!cciId || typeof cciId !== 'string') {\n return undefined;\n }\n\n const item = cciData[cciId];\n return item?.def;\n}\n\n/**\n * Get the NIST control mappings for a CCI ID.\n *\n * @param cciId - The CCI ID (e.g., 'CCI-000001')\n * @returns Array of NIST control references, or undefined if not found\n *\n * @example\n * ```typescript\n * const mappings = getCCINistMappings('CCI-000001');\n * // Returns: ['AC-1 a', 'AC-1.1 (i and ii)', 'AC-1 a 1']\n * ```\n */\nexport function getCCINistMappings(cciId: string): string[] | undefined {\n if (!cciId || typeof cciId !== 'string') {\n return undefined;\n }\n\n const item = cciData[cciId];\n return item?.nist;\n}\n\n/**\n * Get all CCI IDs available in the database.\n *\n * @returns Array of all CCI IDs\n *\n * @example\n * ```typescript\n * const ids = getAllCCIIds();\n * // Returns: ['CCI-000001', 'CCI-000002', ...]\n * ```\n */\nexport function getAllCCIIds(): string[] {\n return Object.keys(cciData);\n}\n\n/**\n * Check if a CCI ID exists in the database.\n *\n * @param cciId - The CCI ID to check\n * @returns true if the CCI exists, false otherwise\n *\n * @example\n * ```typescript\n * if (cciExists('CCI-000001')) {\n * console.log('CCI found');\n * }\n * ```\n */\nexport function cciExists(cciId: string): boolean {\n if (!cciId || typeof cciId !== 'string') {\n return false;\n }\n\n return cciId in cciData;\n}\n\n/**\n * Extract the base NIST control identifier from a potentially qualified string.\n * For example, \"SI-10 a 1\" → \"SI-10\", \"AC-3 (2)\" → \"AC-3\".\n */\nfunction baseNistControl(control: string): string {\n const idx = control.search(/[ (.]/);\n return idx === -1 ? control : control.slice(0, idx);\n}\n\n/**\n * Get CCI IDs for a NIST control using the curated mapping table.\n * The input is normalized to its base control before lookup.\n *\n * @param nistControl - NIST control string (e.g., 'SI-10', 'AC-3 (2)')\n * @returns Array of CCI IDs, or undefined if not found\n *\n * @example\n * ```typescript\n * const ccis = getNistCCIMappings('SI-10');\n * // Returns: ['CCI-001310']\n * ```\n */\nexport function getNistCCIMappings(nistControl: string): string[] | undefined {\n if (!nistControl || typeof nistControl !== 'string') {\n return undefined;\n }\n const base = baseNistControl(nistControl);\n return nistCCIData[base];\n}\n\n/**\n * Map NIST 800-53 controls to their CCI IDs using the curated mapping table.\n * Results are deduplicated and sorted.\n *\n * @param nistControls - Array of NIST control strings\n * @returns Deduplicated, sorted array of CCI IDs (empty array if no mappings found)\n *\n * @example\n * ```typescript\n * const ccis = nistToCci(['AC-3', 'SI-10']);\n * // Returns: ['CCI-000213', 'CCI-001310']\n * ```\n */\nexport function nistToCci(nistControls: string[]): string[] {\n const seen = new Set<string>();\n for (const control of nistControls) {\n const ccis = getNistCCIMappings(control);\n if (ccis) {\n for (const cciId of ccis) {\n seen.add(cciId);\n }\n }\n }\n return Array.from(seen).sort();\n}\n\n// Re-export types\nexport type { CCIItem, CCIMappings, NistCCIMappings } from './types.js';\n","","/**\n * NIST SP 800-53 control description functions\n */\n\nimport type { NISTDescriptions } from './types.js';\nimport rawNistData from '../data/nist-descriptions.json';\n\nconst nistData = rawNistData as NISTDescriptions;\n\n/**\n * Get the description for a NIST control ID.\n *\n * @param nistId - The NIST control ID (e.g., 'AC-01', 'AC-01 a', 'AC-01 a 01')\n * @returns The NIST control description, or undefined if not found\n *\n * @example\n * ```typescript\n * const desc = getNISTDescription('AC-01');\n * // Returns: \"ACCESS CONTROL POLICY AND PROCEDURES\"\n * ```\n */\nexport function getNISTDescription(nistId: string): string | undefined {\n if (!nistId || typeof nistId !== 'string') {\n return undefined;\n }\n\n return nistData[nistId];\n}\n\n/**\n * Get all NIST control IDs available in the database.\n *\n * @returns Array of all NIST control IDs\n *\n * @example\n * ```typescript\n * const ids = getAllNISTIds();\n * // Returns: ['AC-01', 'AC-01 a', 'AC-02', ...]\n * ```\n */\nexport function getAllNISTIds(): string[] {\n return Object.keys(nistData);\n}\n\n/**\n * Check if a NIST control ID exists in the database.\n *\n * @param nistId - The NIST control ID to check\n * @returns true if the NIST control exists, false otherwise\n *\n * @example\n * ```typescript\n * if (nistExists('AC-01')) {\n * console.log('NIST control found');\n * }\n * ```\n */\nexport function nistExists(nistId: string): boolean {\n if (!nistId || typeof nistId !== 'string') {\n return false;\n }\n\n return nistId in nistData;\n}\n\n/**\n * Extract the NIST family from a NIST control ID.\n *\n * @param nistId - The NIST control ID (e.g., 'AC-01', 'AC-01 a')\n * @returns The NIST family code (e.g., 'AC'), or undefined if invalid\n *\n * @example\n * ```typescript\n * const family = getNISTFamily('AC-01');\n * // Returns: 'AC'\n *\n * const family2 = getNISTFamily('AC-01 a 01');\n * // Returns: 'AC'\n * ```\n */\nexport function getNISTFamily(nistId: string): string | undefined {\n if (!nistId || typeof nistId !== 'string') {\n return undefined;\n }\n\n // Extract family from format like \"AC-01\" or \"AC-01 a\"\n const match = nistId.match(/^([A-Z]{2})-/);\n if (!match) {\n return undefined;\n }\n\n const family = match[1];\n\n // Validate that this family exists in our database by checking\n // if any controls start with this family\n const familyPrefix = `${family}-`;\n const hasFamily = Object.keys(nistData).some((key) => key.startsWith(familyPrefix));\n\n return hasFamily ? family : undefined;\n}\n\n/**\n * Canonical NIST 800-53 fallback tags for converters when a finding has no\n * CWE or the CWE has no NIST mapping. Categories match heimdall2's global.ts.\n *\n * - SA-11: Developer Security Testing and Evaluation\n * - RA-5: Vulnerability Monitoring and Scanning\n * - SI-2: Flaw Remediation\n * - CM-8: System Component Inventory\n */\n\n/** Static analysis and vulnerability scanning tools (SA-11 + RA-5). */\nexport const DEFAULT_STATIC_ANALYSIS_NIST_TAGS: string[] = ['SA-11', 'RA-5'];\n\n/** Tools that identify outdated packages or flaws requiring patching (SI-2 + RA-5). */\nexport const DEFAULT_REMEDIATION_NIST_TAGS: string[] = ['SI-2', 'RA-5'];\n\n/** Dependency/inventory management tools (CM-8). */\nexport const DEFAULT_COMPONENT_MANAGEMENT_NIST_TAGS: string[] = ['CM-8'];\n\n// Re-export types\nexport type { NISTDescriptions } from './types.js';\n","","/**\n * OWASP Top 10 to NIST mapping functions\n */\n\nimport type { OwaspNistMappings, OwaspNistMapping } from './types.js';\nimport rawOwaspData from '../data/owasp-nist-mappings.json';\n\nconst owaspData = rawOwaspData as OwaspNistMappings;\nconst owaspIndex = new Map<string, OwaspNistMapping>(\n owaspData.map(item => [item['OWASP-ID'], item])\n);\n\n/**\n * Get the NIST mapping for an OWASP Top 10 ID.\n *\n * @param owaspId - The OWASP ID (e.g., 'A1', 'A2')\n * @returns The mapping object, or undefined if not found\n *\n * @example\n * ```typescript\n * const mapping = getOwaspNistMapping('A1');\n * // Returns: { 'OWASP-ID': 'A1', 'OWASP Name': 'Injection', 'NIST-ID': 'SI-10', ... }\n * ```\n */\nexport function getOwaspNistMapping(owaspId: string): OwaspNistMapping | undefined {\n if (!owaspId || typeof owaspId !== 'string') {\n return undefined;\n }\n\n return owaspIndex.get(owaspId);\n}\n\n/**\n * Get the NIST control ID for an OWASP Top 10 ID.\n *\n * @param owaspId - The OWASP ID (e.g., 'A1', 'A2')\n * @returns The NIST control ID, or undefined if not found\n *\n * @example\n * ```typescript\n * const nistId = getOwaspNistControl('A1');\n * // Returns: 'SI-10'\n * ```\n */\nexport function getOwaspNistControl(owaspId: string): string | undefined {\n const mapping = getOwaspNistMapping(owaspId);\n return mapping?.['NIST-ID'];\n}\n\n/**\n * Get the OWASP vulnerability name for an OWASP ID.\n *\n * @param owaspId - The OWASP ID (e.g., 'A1', 'A2')\n * @returns The OWASP vulnerability name, or undefined if not found\n *\n * @example\n * ```typescript\n * const name = getOwaspName('A1');\n * // Returns: 'Injection'\n * ```\n */\nexport function getOwaspName(owaspId: string): string | undefined {\n const mapping = getOwaspNistMapping(owaspId);\n return mapping?.['OWASP Name'];\n}\n\n/**\n * Get all OWASP IDs available in the database.\n *\n * @returns Array of all OWASP IDs\n *\n * @example\n * ```typescript\n * const ids = getAllOwaspIds();\n * // Returns: ['A1', 'A2', 'A3', ..., 'A10']\n * ```\n */\nexport function getAllOwaspIds(): string[] {\n return Array.from(owaspIndex.keys());\n}\n\n/**\n * Check if an OWASP ID exists in the database.\n *\n * @param owaspId - The OWASP ID to check\n * @returns true if the OWASP ID exists, false otherwise\n *\n * @example\n * ```typescript\n * if (owaspExists('A1')) {\n * console.log('OWASP ID found');\n * }\n * ```\n */\nexport function owaspExists(owaspId: string): boolean {\n if (!owaspId || typeof owaspId !== 'string') {\n return false;\n }\n\n return owaspIndex.has(owaspId);\n}\n\n/**\n * Get all OWASP to NIST mappings.\n *\n * @returns Array of all mappings\n *\n * @example\n * ```typescript\n * const mappings = getAllOwaspMappings();\n * // Returns all 10 OWASP Top 10 mappings\n * ```\n */\nexport function getAllOwaspMappings(): OwaspNistMappings {\n return owaspData;\n}\n\n// Re-export types\nexport type { OwaspNistMapping, OwaspNistMappings } from './types.js';\n","","/**\n * Query functions for CWE to NIST mappings\n */\n\nimport type { CweNistMapping, CweNistMappings } from './types.js';\nimport rawMappings from '../data/cwe-nist-mappings.json';\n\nconst mappings = rawMappings as CweNistMappings;\nconst indexById = new Map<number, CweNistMapping>(\n mappings.map(m => [m['CWE-ID'], m])\n);\n\n/**\n * Get the full mapping for a CWE ID\n * @param cweId - The CWE ID (number)\n * @returns The mapping object or undefined if not found\n */\nexport function getCweNistMapping(cweId: number): CweNistMapping | undefined {\n return indexById.get(cweId);\n}\n\n/**\n * Get the NIST control ID for a CWE ID\n * @param cweId - The CWE ID (number)\n * @returns The NIST control ID or undefined if not found\n */\nexport function getCweNistControl(cweId: number): string | undefined {\n const mapping = getCweNistMapping(cweId);\n return mapping?.['NIST-ID'];\n}\n\n/**\n * Get the CWE name for a CWE ID\n * @param cweId - The CWE ID (number)\n * @returns The CWE name or undefined if not found\n */\nexport function getCweName(cweId: number): string | undefined {\n const mapping = getCweNistMapping(cweId);\n return mapping?.['CWE Name'];\n}\n\n/**\n * Get all CWE IDs\n * @returns Array of all CWE IDs\n */\nexport function getAllCweIds(): number[] {\n return Array.from(indexById.keys());\n}\n\n/**\n * Check if a CWE ID exists in the mappings\n * @param cweId - The CWE ID to check\n * @returns True if the CWE ID exists\n */\nexport function cweExists(cweId: number): boolean {\n return indexById.has(cweId);\n}\n\n/**\n * Get all CWE to NIST mappings\n * @returns Array of all mappings\n */\nexport function getAllCweMappings(): CweNistMappings {\n return [...mappings];\n}\n","","/**\n * Query functions for Nessus to NIST mappings\n */\n\nimport type { NessusNistMappings } from './types.js';\nimport rawMappings from '../data/nessus-nist-mappings.json';\n\nconst mappings = rawMappings as NessusNistMappings;\n\n/**\n * Get the NIST control ID for a Nessus plugin family and plugin ID\n * @param pluginFamily - The Nessus plugin family\n * @param pluginId - The Nessus plugin ID (optional, defaults to \"*\")\n * @returns The NIST control ID or undefined if not found\n */\nexport function getNessusNistControl(\n pluginFamily: string,\n pluginId = '*'\n): string | undefined {\n // First try exact match with plugin ID\n const exactMatch = mappings.find(\n (m) => m.pluginFamily === pluginFamily && m.pluginID === pluginId\n );\n if (exactMatch) {\n return exactMatch['NIST-ID'];\n }\n\n // Fall back to wildcard match\n const wildcardMatch = mappings.find(\n (m) => m.pluginFamily === pluginFamily && m.pluginID === '*'\n );\n return wildcardMatch?.['NIST-ID'];\n}\n\n/**\n * Get all mappings for a plugin family\n * @param pluginFamily - The Nessus plugin family\n * @returns Array of mappings for the plugin family\n */\nexport function getNessusPluginFamilyMappings(\n pluginFamily: string\n): NessusNistMappings {\n return mappings.filter((m) => m.pluginFamily === pluginFamily);\n}\n\n/**\n * Get all plugin families\n * @returns Array of all plugin families\n */\nexport function getAllNessusPluginFamilies(): string[] {\n const families = new Set(mappings.map((m) => m.pluginFamily));\n return Array.from(families);\n}\n\n/**\n * Check if a plugin family exists in the mappings\n * @param pluginFamily - The plugin family to check\n * @returns True if the plugin family exists\n */\nexport function nessusPluginFamilyExists(pluginFamily: string): boolean {\n return mappings.some((m) => m.pluginFamily === pluginFamily);\n}\n\n/**\n * Get all Nessus to NIST mappings\n * @returns Array of all mappings\n */\nexport function getAllNessusMappings(): NessusNistMappings {\n return [...mappings];\n}\n","","/**\n * Query functions for Nikto to NIST mappings\n */\n\nimport type { NiktoNistMappings } from './types.js';\nimport rawMappings from '../data/nikto-nist-mappings.json';\n\nconst mappings = rawMappings as NiktoNistMappings;\n\n/**\n * Get the NIST control ID for a Nikto test ID\n * @param niktoId - The Nikto test ID (string or number)\n * @returns The NIST control ID or undefined if not found\n */\nexport function getNiktoNistControl(niktoId: string | number): string | undefined {\n const id = typeof niktoId === 'number' ? niktoId.toString() : niktoId;\n return mappings[id];\n}\n\n/**\n * Get all Nikto test IDs\n * @returns Array of all Nikto test IDs\n */\nexport function getAllNiktoIds(): string[] {\n return Object.keys(mappings);\n}\n\n/**\n * Check if a Nikto test ID exists in the mappings\n * @param niktoId - The Nikto test ID to check\n * @returns True if the Nikto test ID exists\n */\nexport function niktoExists(niktoId: string | number): boolean {\n const id = typeof niktoId === 'number' ? niktoId.toString() : niktoId;\n return id in mappings;\n}\n\n/**\n * Get all Nikto to NIST mappings\n * @returns Object mapping Nikto test IDs to NIST control IDs\n */\nexport function getAllNiktoMappings(): NiktoNistMappings {\n return { ...mappings };\n}\n","","/**\n * Query functions for ScoutSuite to NIST mappings\n */\n\nimport type { ScoutsuiteNistMapping, ScoutsuiteNistMappings } from './types.js';\nimport rawMappings from '../data/scoutsuite-nist-mappings.json';\n\nconst mappings = rawMappings as ScoutsuiteNistMappings;\nconst indexByRule = new Map<string, ScoutsuiteNistMapping>(\n mappings.map(m => [m.RULE, m])\n);\n\n/**\n * Get the full mapping for a ScoutSuite rule\n * @param rule - The ScoutSuite rule name\n * @returns The mapping object or undefined if not found\n */\nexport function getScoutsuiteNistMapping(rule: string): ScoutsuiteNistMapping | undefined {\n return indexByRule.get(rule);\n}\n\n/**\n * Get the NIST control ID for a ScoutSuite rule\n * @param rule - The ScoutSuite rule name\n * @returns The NIST control ID or undefined if not found\n */\nexport function getScoutsuiteNistControl(rule: string): string | undefined {\n const mapping = getScoutsuiteNistMapping(rule);\n return mapping?.['NIST-ID'];\n}\n\n/**\n * Get all ScoutSuite rule names\n * @returns Array of all rule names\n */\nexport function getAllScoutsuiteRules(): string[] {\n return Array.from(indexByRule.keys());\n}\n\n/**\n * Check if a ScoutSuite rule exists in the mappings\n * @param rule - The rule name to check\n * @returns True if the rule exists\n */\nexport function scoutsuiteRuleExists(rule: string): boolean {\n return indexByRule.has(rule);\n}\n\n/**\n * Get all ScoutSuite to NIST mappings\n * @returns Array of all mappings\n */\nexport function getAllScoutsuiteMappings(): ScoutsuiteNistMappings {\n return [...mappings];\n}\n","","/**\n * Query functions for AWS Config to NIST mappings\n */\n\nimport type { AwsConfigNistMapping, AwsConfigNistMappings } from './types.js';\nimport rawMappings from '../data/awsconfig-mappings.json';\n\nconst mappings = rawMappings as AwsConfigNistMappings;\nconst indexByIdentifier = new Map<string, AwsConfigNistMapping>(\n mappings.map(m => [m.AwsConfigRuleSourceIdentifier, m])\n);\nconst indexByRuleName = new Map<string, AwsConfigNistMapping>(\n mappings.map(m => [m.AwsConfigRuleName, m])\n);\n\n/**\n * Get the full mapping for an AWS Config rule by source identifier\n * @param identifier - The AWS Config rule source identifier\n * @returns The mapping object or undefined if not found\n */\nexport function getAwsConfigNistMappingByIdentifier(\n identifier: string\n): AwsConfigNistMapping | undefined {\n return indexByIdentifier.get(identifier);\n}\n\n/**\n * Get the full mapping for an AWS Config rule by rule name\n * @param ruleName - The AWS Config rule name\n * @returns The mapping object or undefined if not found\n */\nexport function getAwsConfigNistMappingByName(\n ruleName: string\n): AwsConfigNistMapping | undefined {\n return indexByRuleName.get(ruleName);\n}\n\n/**\n * Get the NIST control ID for an AWS Config rule by source identifier\n * @param identifier - The AWS Config rule source identifier\n * @returns The NIST control ID or undefined if not found\n */\nexport function getAwsConfigNistControlByIdentifier(identifier: string): string | undefined {\n const mapping = getAwsConfigNistMappingByIdentifier(identifier);\n return mapping?.['NIST-ID'];\n}\n\n/**\n * Get the NIST control ID for an AWS Config rule by rule name\n * @param ruleName - The AWS Config rule name\n * @returns The NIST control ID or undefined if not found\n */\nexport function getAwsConfigNistControlByName(ruleName: string): string | undefined {\n const mapping = getAwsConfigNistMappingByName(ruleName);\n return mapping?.['NIST-ID'];\n}\n\n/**\n * Get all AWS Config rule source identifiers\n * @returns Array of all rule source identifiers\n */\nexport function getAllAwsConfigIdentifiers(): string[] {\n return Array.from(indexByIdentifier.keys());\n}\n\n/**\n * Get all AWS Config rule names\n * @returns Array of all rule names\n */\nexport function getAllAwsConfigRuleNames(): string[] {\n return Array.from(indexByRuleName.keys());\n}\n\n/**\n * Check if an AWS Config rule exists by source identifier\n * @param identifier - The rule source identifier to check\n * @returns True if the rule exists\n */\nexport function awsConfigIdentifierExists(identifier: string): boolean {\n return indexByIdentifier.has(identifier);\n}\n\n/**\n * Check if an AWS Config rule exists by rule name\n * @param ruleName - The rule name to check\n * @returns True if the rule exists\n */\nexport function awsConfigRuleNameExists(ruleName: string): boolean {\n return indexByRuleName.has(ruleName);\n}\n\n/**\n * Get all AWS Config to NIST mappings\n * @returns Array of all mappings\n */\nexport function getAllAwsConfigMappings(): AwsConfigNistMappings {\n return [...mappings];\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAAA;AACj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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mitre/hdf-mappings",
3
- "version": "3.1.0-rc.1",
3
+ "version": "3.2.0",
4
4
  "description": "CCI/NIST/CIS/CMMC security framework mappings for HDF",
5
5
  "publishConfig": {
6
6
  "access": "public"