@poe-platform/safe-bash 0.1.600 → 0.1.602

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.
Files changed (100) hide show
  1. package/dist/safe-bash/chunks/{chunk-IYFB6VED.js → chunk-4BYUV5PA.js} +6 -4
  2. package/dist/safe-bash/chunks/{chunk-IYFB6VED.js.map → chunk-4BYUV5PA.js.map} +1 -1
  3. package/dist/safe-bash/chunks/{chunk-PE5NZIA2.js → chunk-6LSSEOG7.js} +3 -3
  4. package/dist/safe-bash/chunks/{chunk-3Y5PKSHX.js → chunk-AD7UAP5B.js} +10 -8
  5. package/dist/safe-bash/chunks/{chunk-3Y5PKSHX.js.map → chunk-AD7UAP5B.js.map} +1 -1
  6. package/dist/safe-bash/chunks/{chunk-XBLVOMEJ.js → chunk-AFH57PPL.js} +2 -2
  7. package/dist/safe-bash/chunks/{chunk-FMTBJ7SG.js → chunk-CEPNDODE.js} +3 -3
  8. package/dist/safe-bash/chunks/chunk-CXMIIXJA.js +178 -0
  9. package/dist/safe-bash/chunks/chunk-CXMIIXJA.js.map +7 -0
  10. package/dist/safe-bash/chunks/{chunk-E3NZKSTA.js → chunk-F5TCC4UG.js} +12 -10
  11. package/dist/safe-bash/chunks/{chunk-E3NZKSTA.js.map → chunk-F5TCC4UG.js.map} +1 -1
  12. package/dist/safe-bash/chunks/{chunk-TJVKGNKA.js → chunk-FWDMJTQO.js} +9 -7
  13. package/dist/safe-bash/chunks/{chunk-TJVKGNKA.js.map → chunk-FWDMJTQO.js.map} +1 -1
  14. package/dist/safe-bash/chunks/{chunk-LHKAA57T.js → chunk-GFZKQIPL.js} +8 -6
  15. package/dist/safe-bash/chunks/{chunk-LHKAA57T.js.map → chunk-GFZKQIPL.js.map} +1 -1
  16. package/dist/safe-bash/chunks/{chunk-W3TLNFDB.js → chunk-HHJSJWUD.js} +9 -7
  17. package/dist/safe-bash/chunks/{chunk-W3TLNFDB.js.map → chunk-HHJSJWUD.js.map} +1 -1
  18. package/dist/safe-bash/chunks/{chunk-XYVCXUGM.js → chunk-KZ7QCYNT.js} +10 -8
  19. package/dist/safe-bash/chunks/{chunk-XYVCXUGM.js.map → chunk-KZ7QCYNT.js.map} +1 -1
  20. package/dist/safe-bash/chunks/{chunk-HQCBEAFK.js → chunk-N5CYTGBN.js} +10 -8
  21. package/dist/safe-bash/chunks/{chunk-HQCBEAFK.js.map → chunk-N5CYTGBN.js.map} +1 -1
  22. package/dist/safe-bash/chunks/{chunk-H6E6F5KJ.js → chunk-PCLOK32J.js} +9 -7
  23. package/dist/safe-bash/chunks/{chunk-H6E6F5KJ.js.map → chunk-PCLOK32J.js.map} +1 -1
  24. package/dist/safe-bash/chunks/{chunk-BXVGCJXW.js → chunk-PFMSKAFQ.js} +12 -10
  25. package/dist/safe-bash/chunks/{chunk-BXVGCJXW.js.map → chunk-PFMSKAFQ.js.map} +1 -1
  26. package/dist/safe-bash/chunks/{chunk-PMBBUNNN.js → chunk-PW4WQSCS.js} +11 -9
  27. package/dist/safe-bash/chunks/{chunk-PMBBUNNN.js.map → chunk-PW4WQSCS.js.map} +1 -1
  28. package/dist/safe-bash/chunks/{chunk-OECKXHVJ.js → chunk-RNKTWFEM.js} +2 -2
  29. package/dist/safe-bash/chunks/{chunk-2PQ3XOCQ.js → chunk-UYX72YHY.js} +4 -172
  30. package/dist/safe-bash/chunks/chunk-UYX72YHY.js.map +7 -0
  31. package/dist/safe-bash/chunks/{chunk-QAZN7SAN.js → chunk-WPEMUXV4.js} +7 -5
  32. package/dist/safe-bash/chunks/{chunk-QAZN7SAN.js.map → chunk-WPEMUXV4.js.map} +1 -1
  33. package/dist/safe-bash/commands/csplit/index.browser.js +5 -4
  34. package/dist/safe-bash/commands/factor/index.browser.js +4 -3
  35. package/dist/safe-bash/commands/getopt/index.browser.js +4 -3
  36. package/dist/safe-bash/commands/hexdump/index.browser.js +4 -3
  37. package/dist/safe-bash/commands/iconv/index.browser.js +4 -3
  38. package/dist/safe-bash/commands/line-endings/index.browser.js +5 -4
  39. package/dist/safe-bash/commands/llm/index.browser.js +5 -4
  40. package/dist/safe-bash/commands/network/index.browser.js +6 -5
  41. package/dist/safe-bash/commands/op/index.browser.js +5664 -0
  42. package/dist/safe-bash/commands/op/index.browser.js.map +7 -0
  43. package/dist/safe-bash/commands/op/index.d.ts +14 -0
  44. package/dist/safe-bash/commands/op/index.d.ts.map +1 -0
  45. package/dist/safe-bash/commands/op/index.js +4684 -0
  46. package/dist/safe-bash/commands/op/index.js.map +7 -0
  47. package/dist/safe-bash/commands/op/op.test.d.ts +2 -0
  48. package/dist/safe-bash/commands/op/op.test.d.ts.map +1 -0
  49. package/dist/safe-bash/commands/op/op.test.js +159 -0
  50. package/dist/safe-bash/commands/op/op.test.js.map +1 -0
  51. package/dist/safe-bash/commands/pr/index.browser.js +4 -3
  52. package/dist/safe-bash/commands/tsort/index.browser.js +4 -3
  53. package/dist/safe-bash/commands/xml/index.browser.js +5 -4
  54. package/dist/safe-bash/commands/yq/index.browser.js +6 -5
  55. package/dist/safe-bash/core.browser.js +455 -101
  56. package/dist/safe-bash/core.browser.js.map +4 -4
  57. package/dist/safe-bash/index.d.ts +1 -0
  58. package/dist/safe-bash/index.d.ts.map +1 -1
  59. package/dist/safe-bash/index.js +1 -0
  60. package/dist/safe-bash/index.js.map +1 -1
  61. package/dist/safe-bash/internal/op/admin.d.ts +31 -0
  62. package/dist/safe-bash/internal/op/backend.d.ts +8 -0
  63. package/dist/safe-bash/internal/op/cli.d.ts +80 -0
  64. package/dist/safe-bash/internal/op/documents.d.ts +6 -0
  65. package/dist/safe-bash/internal/op/encoding.d.ts +15 -0
  66. package/dist/safe-bash/internal/op/environment-commands.d.ts +11 -0
  67. package/dist/safe-bash/internal/op/environment.d.ts +9 -0
  68. package/dist/safe-bash/internal/op/file-mode.d.ts +1 -0
  69. package/dist/safe-bash/internal/op/host-contracts.d.ts +12 -0
  70. package/dist/safe-bash/internal/op/index.d.ts +19 -0
  71. package/dist/safe-bash/internal/op/items.d.ts +3 -0
  72. package/dist/safe-bash/internal/op/references.d.ts +4 -0
  73. package/dist/safe-bash/internal/op/secrets.d.ts +13 -0
  74. package/dist/safe-bash/internal/op/templates.d.ts +10 -0
  75. package/dist/safe-bash/internal/op/types.d.ts +202 -0
  76. package/dist/safe-bash/shell/arrays/state.js +1 -1
  77. package/dist/safe-bash/shell/arrays/state.js.map +1 -1
  78. package/dist/safe-bash/shell/background-jobs.d.ts +39 -0
  79. package/dist/safe-bash/shell/background-jobs.d.ts.map +1 -0
  80. package/dist/safe-bash/shell/background-jobs.js +85 -0
  81. package/dist/safe-bash/shell/background-jobs.js.map +1 -0
  82. package/dist/safe-bash/shell/display.js +7 -7
  83. package/dist/safe-bash/shell/display.js.map +1 -1
  84. package/dist/safe-bash/shell/parser.d.ts +1 -0
  85. package/dist/safe-bash/shell/parser.d.ts.map +1 -1
  86. package/dist/safe-bash/shell/parser.js +8 -8
  87. package/dist/safe-bash/shell/parser.js.map +1 -1
  88. package/dist/safe-bash/shell/runtime.d.ts +7 -1
  89. package/dist/safe-bash/shell/runtime.d.ts.map +1 -1
  90. package/dist/safe-bash/shell/runtime.js +295 -46
  91. package/dist/safe-bash/shell/runtime.js.map +1 -1
  92. package/dist/safe-bash/shell/shell.d.ts.map +1 -1
  93. package/dist/safe-bash/shell/shell.js +11 -2
  94. package/dist/safe-bash/shell/shell.js.map +1 -1
  95. package/package.json +9 -2
  96. package/dist/safe-bash/chunks/chunk-2PQ3XOCQ.js.map +0 -7
  97. /package/dist/safe-bash/chunks/{chunk-PE5NZIA2.js.map → chunk-6LSSEOG7.js.map} +0 -0
  98. /package/dist/safe-bash/chunks/{chunk-XBLVOMEJ.js.map → chunk-AFH57PPL.js.map} +0 -0
  99. /package/dist/safe-bash/chunks/{chunk-FMTBJ7SG.js.map → chunk-CEPNDODE.js.map} +0 -0
  100. /package/dist/safe-bash/chunks/{chunk-OECKXHVJ.js.map → chunk-RNKTWFEM.js.map} +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/commands/op/index.ts", "../../../../op/src/index.ts", "../../../../op/src/cli.ts", "../../../../op/src/encoding.ts", "../../../../op/src/encoding-runtime.ts", "../../../../../node_modules/@kayahr/text-encoding/src/main/encodings/shift_jis.ts", "../../../../../node_modules/@kayahr/text-encoding/src/main/decoders/ShiftJISDecoder.ts", "../../../../../node_modules/@kayahr/text-encoding/data/jis0208.cp.js", "../../../../../node_modules/@kayahr/text-encoding/src/main/AbstractDecoder.ts", "../../../../../node_modules/@kayahr/text-encoding/src/main/ByteBuffer.ts", "../../../../../node_modules/@kayahr/text-encoding/src/main/constants.ts", "../../../../../node_modules/@kayahr/text-encoding/src/main/util.ts", "../../../../../node_modules/@kayahr/text-encoding/src/main/encoders/ShiftJISEncoder.ts", "../../../../../node_modules/@kayahr/text-encoding/src/main/AbstractEncoder.ts", "../../../../../node_modules/@kayahr/text-encoding/src/main/encoders/JIS0208Index.ts", "../../../../../node_modules/@kayahr/text-encoding/src/main/encoders/CodePointIndex.ts", "../../../../../node_modules/@kayahr/text-encoding/src/main/Encoding.ts", "../../../../../node_modules/@kayahr/text-encoding/src/main/encodings/gbk.ts", "../../../../../node_modules/@kayahr/text-encoding/src/main/decoders/GBDecoder.ts", "../../../../../node_modules/@kayahr/text-encoding/data/gb18030.cp.js", "../../../../../node_modules/@kayahr/text-encoding/data/gb18030.ranges.js", "../../../../../node_modules/@kayahr/text-encoding/src/main/encoders/GBEncoder.ts", "../../../../../node_modules/@kayahr/text-encoding/src/main/index-no-encodings.ts", "../../../../../node_modules/@kayahr/text-encoding/src/main/encodings/utf-8.ts", "../../../../../node_modules/@kayahr/text-encoding/src/main/decoders/UTF8Decoder.ts", "../../../../../node_modules/@kayahr/text-encoding/src/main/encoders/UTF8Encoder.ts", "../../../../../node_modules/@kayahr/text-encoding/src/main/TextDecoder.ts", "../../../../../node_modules/@kayahr/text-encoding/src/main/TextEncoder.ts", "../../../../op/src/completion.ts", "../../../../op/src/completion-resolver.ts", "../../../../op/src/catalog.ts", "../../../../op/src/flag-values.ts", "../../../../op/src/duration.ts", "../../../../op/src/file-mode.ts", "../../../../op/src/csv-values.ts", "../../../../op/src/help-renderer.ts", "../../../../op/src/plugin-list-output.ts", "../../../../op/src/plugin-catalog.ts", "../../../../op/src/secrets.ts", "../../../../op/src/handler-preparation.ts", "../../../../op/src/environment-commands.ts", "../../../../op/src/environment.ts", "../../../../op/src/documents.ts", "../../../../op/src/items.ts", "../../../../op/src/backend.ts", "../../../../op/src/references.ts", "../../../../op/src/crypto-browser.ts", "../../../../op/src/otp.ts", "../../../../op/src/admin.ts", "../../../../op/src/auth.ts", "../../../../op/src/selectors.ts", "../../../../op/src/permissions.ts", "../../../../op/src/plugin-scopes.ts", "../../../../op/src/vault-options.ts", "../../../../op/src/templates.ts", "../../../../op/src/bindings.ts", "../../../../op/src/plugin-selection.ts", "../../../../op/src/object-vaults.ts", "../../../../op/src/types.ts"],
4
+ "sourcesContent": ["import { createOp, type OpCommandContext, type OpCommandOptions } from \"@poe-platform/op\";\nimport { readBytes, resolvePath, type CommandDefinition, type VirtualShellPlugin } from \"../../contracts/index.js\";\n\nexport { createObjectBackend } from \"@poe-platform/op\";\nexport type { OpBackend, OpObjectBackendOptions, OpBackendRequest, OpResolvedApproval } from \"@poe-platform/op\";\n\nexport interface OpCommandsOptions extends OpCommandOptions {\n readonly replace?: boolean;\n readonly authentication?: OpCommandContext[\"authentication\"];\n readonly pluginScope?: OpCommandContext[\"pluginScope\"];\n readonly confirmPluginClear?: OpCommandContext[\"confirmPluginClear\"];\n readonly selectPlugin?: OpCommandContext[\"selectPlugin\"];\n}\n\nexport function createOpCommand(options: OpCommandsOptions): CommandDefinition {\n const command = createOp(options);\n const authentication = options.authentication === undefined ? undefined : Object.freeze({ ...options.authentication });\n const pluginScope = options.pluginScope === undefined ? undefined : Object.freeze({ ...options.pluginScope });\n const confirmPluginClear = options.confirmPluginClear;\n const selectPlugin = options.selectPlugin;\n return {\n name: \"op\",\n description: \"Object-backed secrets with explicitly granted virtual shell capabilities\",\n async execute(context) {\n const { fs, signal, cwd } = context;\n const invocation: OpCommandContext = {\n args: context.args,\n env: { ...context.env },\n signal,\n stdin: readBytes(context.stdin, signal),\n stdout: context.stdout,\n stderr: context.stderr,\n ...(authentication === undefined ? {} : { authentication }),\n ...(pluginScope === undefined ? {} : { pluginScope }),\n ...(confirmPluginClear === undefined ? {} : { confirmPluginClear }),\n ...(selectPlugin === undefined ? {} : { selectPlugin }),\n async readFile(path) {\n signal.throwIfAborted();\n const resolved = resolvePath(cwd, path);\n const capabilities = fs.capabilitiesFor ? await fs.capabilitiesFor(resolved, { signal }) : fs.capabilities;\n if (capabilities.read !== true) throw new Error(\"op requires VFS read capability\");\n const bytes = await fs.readFile(resolved, { signal, maxBytes: 16 * 1024 * 1024 });\n signal.throwIfAborted();\n return Uint8Array.from(bytes);\n },\n async writeFile(path, bytes, settings = {}) {\n signal.throwIfAborted();\n const resolved = resolvePath(cwd, path);\n const capabilities = fs.capabilitiesFor ? await fs.capabilitiesFor(resolved, { signal }) : fs.capabilities;\n if (capabilities.readOnly || capabilities.write !== true || capabilities.permissions !== true || capabilities.exclusiveCreate !== true) {\n throw new Error(\"op requires VFS write, permissions and exclusive-create capabilities\");\n }\n const mode = settings.mode ?? 0o600;\n const data = Uint8Array.from(bytes);\n signal.throwIfAborted();\n try {\n await fs.writeFile(resolved, data, { signal, mode, flag: \"wx\" });\n } catch (error) {\n if (!settings.overwrite || !error || typeof error !== \"object\" || !(\"code\" in error) || error.code !== \"EEXIST\") throw error;\n if (!fs.chmod || capabilities.stat !== true) throw new Error(\"op requires VFS chmod and stat capabilities to overwrite\");\n const status = await fs.lstat(resolved, { signal });\n if (status.type !== \"file\") throw new Error(\"op output must be a regular file\");\n await fs.chmod(resolved, mode, { signal });\n signal.throwIfAborted();\n await fs.writeFile(resolved, data, { signal, mode, flag: \"w\" });\n }\n signal.throwIfAborted();\n },\n ...(context.invoke === undefined ? {} : {\n async invoke(name, args, settings) {\n signal.throwIfAborted();\n const result = await context.invoke!(name, args, {\n signal, cwd, stdin: context.stdin, stdinIsDefault: context.stdinIsDefault ?? false,\n env: { ...settings.env }, replaceEnv: true,\n stdout: settings.stdout ?? context.stdout,\n stderr: settings.stderr ?? context.stderr,\n });\n signal.throwIfAborted();\n return result;\n },\n } satisfies Pick<OpCommandContext, \"invoke\">),\n };\n return command.execute(invocation);\n },\n };\n}\n\nexport function opCommands(options: OpCommandsOptions): VirtualShellPlugin {\n const definition = createOpCommand(options);\n const replace = options.replace ?? false;\n return {\n name: \"op-commands\",\n setup(host) {\n if (!replace && host.commands.has(\"op\")) throw new Error(\"Command already registered: op\");\n host.commands.register(definition, { replace });\n },\n };\n}\n", "import { createOpCommand, type OpCommandOptions } from \"./cli.js\";\nimport { createSecretHandlers } from \"./secrets.js\";\nimport { createCompletionHandler } from \"./completion.js\";\nimport { createEnvironmentHandlers } from \"./environment-commands.js\";\nimport { createDocumentHandlers } from \"./documents.js\";\nimport { createItemHandlers } from \"./items.js\";\n\nexport * from \"./types.js\";\nexport * from \"./cli.js\";\nexport type { OpConfirmOverwrite, OpSelectPlugin } from \"./host-contracts.js\";\nexport type { OpAdminHook, OpAdminHookResult, OpAdminContext } from \"./admin.js\";\nexport type { OpItemTemplate } from \"./templates.js\";\nexport { createObjectBackend } from \"./backend.js\";\nexport { parseSecretReference } from \"./references.js\";\nexport { createSecretHandlers } from \"./secrets.js\";\nexport { captureEnvironment, restoreEnvironment, type EnvironmentSnapshot } from \"./environment.js\";\nexport { createEnvironmentHandlers, type EnvironmentCommandContext } from \"./environment-commands.js\";\nexport { createDocumentHandlers, type OpDocumentHandlerOptions } from \"./documents.js\";\nexport { createItemHandlers } from \"./items.js\";\n\nexport function createOp(options: OpCommandOptions) {\n return createOpCommand({\n ...options,\n handlers: { ...createSecretHandlers(options.backend), ...createDocumentHandlers(options.backend), ...createItemHandlers(options.backend), ...createEnvironmentHandlers(options.backend), completion: createCompletionHandler(options.channel), ...options.handlers },\n });\n}\n", "import type { OpBackend, OpBackendContext, OpBackendRequest, OpBindingTarget, OpPreparedBinding } from \"./types.js\";\nimport type { OpHandlerPreparation, OpPreparedEffect, OpPreparedHandler } from \"./handler-preparation.js\";\nimport { createOpTextCodec } from \"./encoding.js\";\nimport { createCompletionCallbackHandler } from \"./completion.js\";\nimport { renderOpHelp } from \"./help-renderer.js\";\nimport { renderPluginList } from \"./plugin-list-output.js\";\nimport { validateOpFlagValue } from \"./flag-values.js\";\nimport { parseOpFileMode } from \"./file-mode.js\";\nimport { parseOpCsv } from \"./csv-values.js\";\nexport { parseOpFileMode } from \"./file-mode.js\";\nexport { createOpTextCodec } from \"./encoding.js\";\nimport { opCommandCatalog, opGlobalFlags, opRootFlags, type OpCatalogCommand, type OpFlagDefinition } from \"./catalog.js\";\n\nexport interface OpOutputSink {\n isTTY?: boolean;\n write(data: Uint8Array): Promise<void>;\n}\n\nexport interface OpFileWriteOptions {\n mode?: number;\n overwrite?: boolean;\n}\n\nexport interface OpCommandContext {\n args: readonly string[];\n env: Record<string, string>;\n signal: AbortSignal;\n binding?: OpBackendContext[\"binding\"];\n authentication?: OpBackendContext[\"authentication\"];\n pluginScope?: OpBackendContext[\"pluginScope\"];\n confirmPluginClear?: OpBackendContext[\"confirmPluginClear\"];\n selectPlugin?: OpBackendContext[\"selectPlugin\"];\n stdin: AsyncIterable<Uint8Array>;\n stdout: OpOutputSink;\n stderr: OpOutputSink;\n invoke?: (command: string, args: readonly string[], options: {\n env: Readonly<Record<string, string>>;\n stdout?: OpOutputSink;\n stderr?: OpOutputSink;\n }) => Promise<{ exitCode: number }>;\n readFile?: (path: string) => Promise<Uint8Array>;\n writeFile?: (path: string, data: Uint8Array, options?: OpFileWriteOptions) => Promise<void>;\n}\n\nexport interface OpCommandOptions {\n backend: OpBackend;\n version?: string;\n channel?: \"stable\" | \"beta\";\n authorize?: (request: OpBackendRequest, context: Readonly<Pick<OpBackendContext, \"signal\" | \"pluginScope\" | \"authentication\">>) =>\n \"allow\" | \"deny\" | \"ask\" | Promise<\"allow\" | \"deny\" | \"ask\">;\n approve?: (request: OpBackendRequest, context: Readonly<Pick<OpBackendContext, \"signal\" | \"pluginScope\" | \"authentication\">>) => boolean | Promise<boolean>;\n approvalMode?: \"resolved\" | \"literal\";\n authorizeResolution?: OpCommandOptions[\"approve\"];\n approveResolved?: (approval: OpResolvedApproval, context: Readonly<Pick<OpBackendContext, \"signal\" | \"pluginScope\" | \"authentication\">>) => boolean | Promise<boolean>;\n handlers?: Readonly<Record<string, (request: OpBackendRequest, context: OpCommandContext) => Promise<{ exitCode: number }>>>;\n}\n\nexport interface OpResolvedApproval {\n readonly operation: Readonly<{ resource: string; action: string }>;\n readonly backendId: string;\n readonly accountId: string | null;\n readonly targets: readonly OpBindingTarget[];\n readonly optionNames: readonly string[];\n readonly mutation: Readonly<{ requested: boolean; propertyNames: readonly string[]; assignmentNames: readonly string[]; batchSize?: number }>;\n readonly output: Readonly<{ kind: \"none\" | \"stdout\" | \"file\"; destination?: string }>;\n readonly child?: Readonly<{ executable: string; argv: readonly string[]; environmentNames: readonly string[] }>;\n}\n\ntype FlagValue = string | boolean | readonly string[];\n\nexport function selectOpGlobalFlags(flags: OpBackendRequest[\"flags\"]): OpBackendRequest[\"flags\"] {\n return Object.freeze(Object.fromEntries(Object.entries(flags).filter(([name]) => Object.hasOwn(opGlobalFlags, name))));\n}\n\nexport function selectOpBackendContext(context: OpCommandContext): OpBackendContext {\n return Object.freeze({\n signal: context.signal,\n ...(context.binding === undefined ? {} : { binding: context.binding }),\n ...(context.authentication === undefined ? {} : { authentication: context.authentication }),\n ...(context.pluginScope === undefined ? {} : { pluginScope: context.pluginScope }),\n ...(context.confirmPluginClear === undefined ? {} : { confirmPluginClear: context.confirmPluginClear }),\n ...(context.selectPlugin === undefined ? {} : { selectPlugin: context.selectPlugin }),\n });\n}\n\nfunction booleanValue(value: string): boolean | undefined {\n if ([\"true\", \"1\", \"t\", \"TRUE\", \"True\", \"T\"].includes(value)) return true;\n if ([\"false\", \"0\", \"f\", \"FALSE\", \"False\", \"F\"].includes(value)) return false;\n return undefined;\n}\n\nfunction flagValue(name: string, definition: OpFlagDefinition, value: string | undefined): FlagValue {\n if (definition.kind === \"boolean\") {\n if (value === undefined) return true;\n const parsed = booleanValue(value);\n if (parsed !== undefined) return parsed;\n throw new Error(`invalid boolean value for --${name}`);\n }\n if (definition.kind === \"optional\" && value === undefined) return true;\n if (value === undefined) throw new Error(`flag needs a value: --${name}`);\n validateOpFlagValue(name, definition, value);\n if (definition.kind === \"array\") return [value];\n if (definition.kind === \"csv\") return definition.valueSyntax === \"csv\" ? parseOpCsv(value) : value.split(\",\");\n return value;\n}\n\nfunction commandFlags(command: OpCatalogCommand | undefined, channel: \"stable\" | \"beta\", root: boolean): Record<string, OpFlagDefinition> {\n return Object.fromEntries(Object.entries({ ...opGlobalFlags, ...(root ? opRootFlags : {}), ...command?.flags }).filter(([, flag]) => channel === \"beta\" || flag.availability !== \"beta\"));\n}\n\nfunction scanCommand(argv: readonly string[], channel: \"stable\" | \"beta\", resolvedFlags?: Record<string, OpFlagDefinition>) {\n const tokens = [...argv];\n const path: string[] = [];\n const args: string[] = [];\n const flags: Record<string, FlagValue> = Object.create(null);\n let command: OpCatalogCommand | undefined;\n let candidates = opCommandCatalog.filter(entry => channel === \"beta\" || entry.availability !== \"beta\");\n let literal = false;\n let help = argv[0] === \"help\";\n for (let index = help ? 1 : 0; index < tokens.length; index++) {\n const token = tokens[index]!;\n if (literal) { args.push(token); continue; }\n if (token === \"--\") { literal = true; continue; }\n if (token.startsWith(\"-\") && token !== \"-\") {\n const available = resolvedFlags ?? {};\n if (!resolvedFlags) {\n for (const candidate of candidates) {\n for (const [name, definition] of Object.entries(commandFlags(candidate, channel, path.length === 0))) {\n const previous = available[name];\n available[name] = { ...definition,\n alias: previous?.alias ?? definition.alias,\n longAliases: [...new Set([...(previous?.longAliases ?? []), ...(definition.longAliases ?? [])])],\n };\n }\n }\n }\n if (!token.startsWith(\"--\") && token.length > 2 && token[2] !== \"=\") {\n const firstName = Object.keys(available).find(key => available[key]!.alias === token[1]);\n if (!firstName) throw new Error(`unknown shorthand flag: ${token[1]}`);\n const first = available[firstName]!;\n tokens.splice(index, 1, ...(first.kind === \"boolean\" ? [token.slice(0, 2), `-${token.slice(2)}`] : [`${token.slice(0, 2)}=${token.slice(2)}`]));\n index--;\n continue;\n }\n const equal = token.indexOf(\"=\");\n const long = token.startsWith(\"--\");\n const spelling = token.slice(long ? 2 : 1, equal < 0 ? undefined : equal);\n const name = long ? Object.hasOwn(available, spelling) ? spelling : Object.keys(available).find(key => available[key]!.longAliases?.includes(spelling))\n : Object.keys(available).find(key => available[key]!.alias === spelling);\n const definition = name === undefined || !Object.hasOwn(available, name) ? undefined : available[name];\n if (!name || !definition) throw new Error(`unknown flag: ${token.slice(0, equal < 0 ? undefined : equal)}`);\n if (!resolvedFlags && !command && equal < 0 && !Object.hasOwn(commandFlags(undefined, channel, path.length === 0), name)) {\n index++;\n continue;\n }\n let value = equal < 0 ? undefined : token.slice(equal + 1);\n if (value === undefined && definition.kind !== \"boolean\" && definition.kind !== \"optional\") {\n value = tokens[++index];\n if (value === undefined) throw new Error(`flag needs a value: --${name}`);\n }\n const parsed = flagValue(name, definition, value);\n const previous = flags[name];\n flags[name] = Array.isArray(previous) && Array.isArray(parsed) ? [...previous, ...parsed] : parsed;\n continue;\n }\n if (command) { args.push(token); continue; }\n if (token === \"help\" && path.length === 0) { help = true; continue; }\n candidates = candidates.filter(entry => entry.path[path.length] === token || (entry.path.length === path.length + 1 && entry.aliases.includes(token)));\n if (candidates.length === 0) throw new Error(`unknown command: ${[...path, token].join(\" \")}`);\n path.push(candidates[0]!.path[path.length]!);\n command = candidates.find(entry => entry.path.length === path.length);\n }\n help ||= flags.help === true || path.length === 0 || (!command && args.length === 0);\n return { path, args, flags, command, help };\n}\n\nfunction parseCommand(argv: readonly string[], env: Readonly<Record<string, string>>, channel: \"stable\" | \"beta\") {\n const resolved = scanCommand(argv, channel);\n const parsed = scanCommand(argv, channel, commandFlags(resolved.command, channel, resolved.path.length === 0));\n const { path, flags, command } = parsed;\n if (path.length > 0 && flags.version !== undefined) throw new Error(\"unknown flag: --version\");\n const available = commandFlags(command, channel, path.length === 0);\n for (const [name, definition] of Object.entries(available)) {\n const value = definition.env === undefined ? undefined : env[definition.env];\n if (flags[name] === undefined && value !== undefined && value !== \"\") {\n if (definition.invalidEnv === \"ignore\" && definition.kind === \"boolean\" && booleanValue(value) === undefined) continue;\n flags[name] = flagValue(name, definition, value);\n }\n }\n if (flags.format !== undefined && flags.format !== \"json\" && flags.format !== \"human-readable\") throw new Error(\"format must be json or human-readable\");\n return parsed;\n}\n\nfunction freezeJson(value: unknown): unknown {\n if (value !== null && typeof value === \"object\") {\n for (const child of Object.values(value)) freezeJson(child);\n Object.freeze(value);\n }\n return value;\n}\n\nasync function readInput(context: OpCommandContext, encoding: unknown): Promise<{ input: unknown; chunks: Uint8Array[] }> {\n const chunks: Uint8Array[] = [];\n let length = 0;\n for await (const chunk of context.stdin) {\n context.signal.throwIfAborted();\n length += chunk.byteLength;\n if (length > 16 * 1024 * 1024) throw new Error(\"stdin exceeds 16 MiB\");\n chunks.push(Uint8Array.from(chunk));\n }\n if (length === 0) return { input: undefined, chunks };\n const bytes = new Uint8Array(length);\n let offset = 0;\n for (const chunk of chunks) { bytes.set(chunk, offset); offset += chunk.length; }\n const text = createOpTextCodec(encoding).decoder().decode(bytes);\n try { return { input: freezeJson(JSON.parse(text)), chunks }; } catch { return { input: text, chunks }; }\n}\n\nfunction record(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value) && !(value instanceof Uint8Array);\n}\n\nfunction conceal(value: unknown): unknown {\n if (Array.isArray(value)) return value.map(conceal);\n if (!record(value)) return value;\n const hidden = [\"CONCEALED\", \"OTP\", \"SSHKEY\"].includes(String(value.type).toUpperCase()) || value.purpose === \"PASSWORD\";\n return Object.fromEntries(Object.entries(value).map(([key, entry]) => [key,\n hidden && key === \"value\" ? \"(use 'op item get --reveal' to reveal)\" : conceal(entry),\n ]));\n}\n\nfunction metadata(value: unknown): unknown {\n if (Array.isArray(value)) return value.map(metadata);\n if (!record(value)) return value;\n return Object.fromEntries(Object.entries(value).filter(([key]) => key !== \"content\").map(([key, entry]) => [key, metadata(entry)]));\n}\n\nexport function renderOpOutput(result: unknown, request: OpBackendRequest): Uint8Array | undefined {\n const encoder = createOpTextCodec(request.flags.encoding);\n const { resource, action, flags } = request;\n const format = flags.format;\n let value = result;\n if (resource === \"plugin\" && action === \"list\" && format !== \"json\" && Array.isArray(value) && value.every(record)) return encoder.encode(renderPluginList(value));\n if (resource === \"document\" && action === \"get\") {\n const content = record(value) ? value.content : value;\n if (content instanceof Uint8Array) return content;\n if (typeof content === \"string\") return new TextEncoder().encode(content);\n throw new Error(\"document backend did not return document content\");\n }\n if (resource === \"item\" || resource === \"document\") value = metadata(value);\n if (resource === \"item\" && flags.otp === true) {\n const values = request.args.length === 1 && request.args[0] === \"-\" && Array.isArray(value) ? value : [value];\n const codes: string[] = [];\n for (const entry of values) {\n if (typeof entry !== \"string\" || ![6, 8].includes(entry.trim().length) || !Array.from(entry.trim()).every(character => character >= \"0\" && character <= \"9\")) {\n throw new Error(\"backend did not return a generated one-time password\");\n }\n codes.push(entry.trim());\n }\n if (!codes.length) throw new Error(\"backend did not return a generated one-time password\");\n return encoder.encode(`${codes.join(\"\\n\")}\\n`);\n }\n if (resource === \"item\" && flags.fields !== undefined) {\n const selectors = typeof flags.fields === \"string\" ? parseOpCsv(flags.fields) : flags.fields;\n if (!Array.isArray(selectors)) throw new Error(\"fields must be a list\");\n const fields = record(value) && Array.isArray(value.fields) ? value.fields : Array.isArray(value) ? value : [value];\n const selected = selectors.flatMap(selector => {\n const equal = selector.indexOf(\"=\");\n const key = equal < 0 ? \"label\" : selector.slice(0, equal);\n const match = (equal < 0 ? selector : selector.slice(equal + 1)).toLowerCase();\n if (key !== \"label\" && key !== \"type\") throw new Error(\"field selectors must use label or type\");\n const matches = fields.filter(field => record(field) && (String(field[key] ?? \"\").toLowerCase() === match || (key === \"label\" && String(field.id ?? \"\").toLowerCase() === match)));\n if (!matches.length) throw new Error(\"selected field was not found\");\n return matches;\n });\n if (format === \"json\") value = selected.length === 1 ? selected[0] : selected;\n else {\n const visible = flags.reveal === true ? selected : selected.map(conceal);\n const values = visible.map(field => {\n const text = String(record(field) ? field.value ?? \"\" : field);\n return Array.from(text).some(character => ',\"\\r\\n'.includes(character)) ? `\"${text.split('\"').join('\"\"')}\"` : text;\n });\n return encoder.encode(`${values.join(\",\")}\\n`);\n }\n }\n if (resource === \"item\" && format !== \"json\" && flags.reveal !== true) value = conceal(value);\n if (value === undefined) return undefined;\n if (value instanceof Uint8Array) return value;\n if (format === \"json\") return encoder.encode(`${JSON.stringify(value, null, 2)}\\n`);\n if (typeof value === \"string\") return encoder.encode(value.endsWith(\"\\n\") ? value : `${value}\\n`);\n if (Array.isArray(value)) {\n if (value.length === 0) return new Uint8Array();\n if (value.every(row => row !== null && typeof row === \"object\" && !Array.isArray(row))) {\n const keys = [...new Set(value.flatMap(row => Object.keys(row)))];\n return encoder.encode(`${keys.join(\"\\t\")}\\n${value.map(row => keys.map(key => typeof row[key] === \"object\" ? JSON.stringify(row[key]) : String(row[key] ?? \"\")).join(\"\\t\")).join(\"\\n\")}\\n`);\n }\n }\n if (value !== null && typeof value === \"object\" && !Array.isArray(value)) {\n return encoder.encode(`${Object.entries(value).map(([key, entry]) => `${key}: ${typeof entry === \"object\" ? JSON.stringify(entry) : String(entry)}`).join(\"\\n\")}\\n`);\n }\n return encoder.encode(`${JSON.stringify(value)}\\n`);\n}\n\nasync function policyResult<Value>(callback: () => Value | Promise<Value>, signal: AbortSignal): Promise<Value> {\n signal.throwIfAborted();\n let abort!: () => void;\n const cancelled = new Promise<never>((_resolve, reject) => {\n abort = () => reject(new Error(\"operation aborted\"));\n signal.addEventListener(\"abort\", abort, { once: true });\n });\n try {\n return await Promise.race([Promise.resolve().then(() => {\n signal.throwIfAborted();\n return callback();\n }), cancelled]);\n } catch {\n throw new Error(\"authorization failed\");\n } finally {\n signal.removeEventListener(\"abort\", abort);\n }\n}\n\nfunction approvalManifest(request: OpBackendRequest, requests: readonly OpBackendRequest[], prepared: OpPreparedBinding, effects: readonly OpPreparedEffect[]): OpResolvedApproval {\n if (typeof prepared.backendId !== \"string\" || (prepared.accountId !== null && typeof prepared.accountId !== \"string\")) throw new Error(\"Invalid binding metadata\");\n const targets = prepared.targets.map(target => {\n if (!Number.isInteger(target.requestIndex) || target.requestIndex < 0 || target.requestIndex >= requests.length || typeof target.resource !== \"string\" || typeof target.revision !== \"string\" || ![\"object\", \"collection\", \"field\", \"section\"].includes(target.kind)) throw new Error(\"Invalid binding target metadata\");\n for (const name of [\"id\", \"account\", \"parentId\"] as const) if (target[name] !== undefined && typeof target[name] !== \"string\") throw new Error(\"Invalid binding target metadata\");\n return { requestIndex: target.requestIndex, resource: target.resource, kind: target.kind, revision: target.revision,\n ...(target.id === undefined ? {} : { id: target.id }), ...(target.account === undefined ? {} : { account: target.account }), ...(target.parentId === undefined ? {} : { parentId: target.parentId }) };\n });\n const file = effects.find(effect => effect.kind === \"file\");\n const child = effects.find(effect => effect.kind === \"invoke\");\n if (effects.filter(effect => effect.kind === \"file\").length > 1 || effects.filter(effect => effect.kind === \"invoke\").length > 1) throw new Error(\"Multiple output destinations are unsupported\");\n if (file && typeof file.path !== \"string\") throw new Error(\"Invalid output metadata\");\n if (child && (typeof child.command !== \"string\" || !Number.isSafeInteger(child.argumentCount) || child.argumentCount! < 0 || !Array.isArray(child.environmentNames) || !child.environmentNames.every(name => typeof name === \"string\"))) throw new Error(\"Invalid child metadata\");\n const mutations = requests.filter(entry => ![\"get\", \"list\", \"read\", \"inspect\", \"ratelimit\"].includes(entry.action));\n const inputs = mutations.flatMap(entry => Array.isArray(entry.input) ? entry.input : entry.input === undefined ? [] : [entry.input]);\n const propertyNames = [...new Set(inputs.flatMap(input => record(input) ? Object.keys(input) : []))].sort();\n const assignmentNames = [...new Set(mutations.filter(entry => entry.resource === \"item\" && [\"create\", \"edit\", \"update\"].includes(entry.action)).flatMap(entry => entry.args.filter(arg => arg.includes(\"=\")).map(arg => arg.slice(0, arg.indexOf(\"=\")))))].sort();\n const manifest: OpResolvedApproval = {\n operation: { resource: request.resource, action: request.action }, backendId: prepared.backendId, accountId: prepared.accountId, targets,\n optionNames: Object.keys(request.flags).sort(),\n mutation: { requested: mutations.length > 0, propertyNames, assignmentNames,\n ...(requests.some(entry => Array.isArray(entry.input)) ? { batchSize: inputs.length } : {}) },\n output: file ? { kind: \"file\", destination: file.path } : { kind: effects.some(effect => effect.kind === \"stdout\") ? \"stdout\" : \"none\" },\n ...(child ? { child: { executable: child.command!, argv: Array.from({ length: child.argumentCount! }, () => \"[redacted]\"), environmentNames: [...child.environmentNames!] } } : {}),\n };\n return freezeJson(manifest) as OpResolvedApproval;\n}\n\nexport function createOpCommand(options: OpCommandOptions): { name: \"op\"; execute(context: OpCommandContext): Promise<{ exitCode: number }> } {\n const { backend, authorize, approve, authorizeResolution, approveResolved, approvalMode = \"resolved\", version = \"0.0.1\", channel = \"stable\" } = options;\n const handlers = { ...options.handlers };\n const planners = new Map(Object.entries(handlers).flatMap(([key, handler]) => typeof (handler as Partial<OpPreparedHandler>).prepare === \"function\" ? [[key, (handler as OpPreparedHandler).prepare.bind(handler)] as const] : []));\n return {\n name: \"op\",\n async execute(callerContext) {\n const context: OpCommandContext = {\n ...callerContext,\n binding: undefined,\n args: Object.freeze([...callerContext.args]),\n env: Object.freeze({ ...callerContext.env }),\n ...(callerContext.pluginScope === undefined ? {} : { pluginScope: Object.freeze({ ...callerContext.pluginScope }) }),\n };\n let binding: OpPreparedBinding | undefined;\n let finished = false;\n let approved = false;\n const original = { ...context,\n stdin: { [Symbol.asyncIterator]: context.stdin[Symbol.asyncIterator].bind(context.stdin) },\n stdout: { isTTY: context.stdout.isTTY, write: context.stdout.write.bind(context.stdout) },\n stderr: { isTTY: context.stderr.isTTY, write: context.stderr.write.bind(context.stderr) },\n ...(context.readFile ? { readFile: context.readFile.bind(context) } : {}),\n ...(context.writeFile ? { writeFile: context.writeFile.bind(context) } : {}),\n ...(context.invoke ? { invoke: context.invoke.bind(context) } : {}),\n };\n try {\n context.signal.throwIfAborted();\n const biometric = context.env.OP_BIOMETRIC_UNLOCK_ENABLED;\n if (biometric !== undefined && biometric !== \"true\" && biometric !== \"false\") throw new Error(\"OP_BIOMETRIC_UNLOCK_ENABLED must be true or false.\");\n const integration = biometric === undefined ? callerContext.authentication?.integration ?? \"manual\" : biometric === \"true\" ? \"app\" : \"manual\";\n context.authentication = Object.freeze({ ...callerContext.authentication, integration });\n if (context.args[0] === \"__complete\" || context.args[0] === \"__completeNoDesc\") {\n return await createCompletionCallbackHandler(channel)({ resource: context.args[0], action: \"\", args: context.args.slice(1), flags: {} }, context);\n }\n const parsed = parseCommand(context.args, context.env, channel);\n if (parsed.flags.version === true) {\n await context.stdout.write(new TextEncoder().encode(`${version}\\n`));\n return { exitCode: 0 };\n }\n if (parsed.flags.help !== true) createOpTextCodec(parsed.flags.encoding);\n if (parsed.help) {\n await context.stdout.write(new TextEncoder().encode(renderOpHelp(parsed.path, channel)));\n return { exitCode: 0 };\n }\n const codec = createOpTextCodec(parsed.flags.encoding);\n const decodeArgument = (value: string) => codec.decoder().decode(new TextEncoder().encode(value));\n parsed.args = parsed.args.map(decodeArgument);\n for (const [name, value] of Object.entries(parsed.flags)) {\n if (name === \"encoding\") continue;\n if (typeof value === \"string\") parsed.flags[name] = decodeArgument(value);\n else if (Array.isArray(value)) parsed.flags[name] = value.map(decodeArgument);\n }\n if (!parsed.command) throw new Error(\"a command is required\");\n const limits = parsed.command.args;\n if (limits && parsed.args.length < limits.min) throw new Error(`expected at least ${limits.min} arguments but got ${parsed.args.length} instead`);\n if (limits?.max !== undefined && parsed.args.length > limits.max) throw new Error(`expected at most ${limits.max} arguments but got ${parsed.args.length} instead`);\n const key = parsed.path.join(\" \");\n const handler = Object.hasOwn(handlers, key) ? handlers[key] : undefined;\n const requiresInput = limits?.stdinAlternative === true && parsed.args.length === 0;\n for (const value of Object.values(parsed.flags)) if (Array.isArray(value)) Object.freeze(value);\n const literalRequest: OpBackendRequest = Object.freeze({\n resource: parsed.path.length === 1 ? parsed.path[0]! : parsed.path.slice(0, -1).join(\" \"),\n action: parsed.path.length === 1 ? \"\" : parsed.path.at(-1)!,\n args: Object.freeze(parsed.args), flags: Object.freeze({ ...parsed.flags }),\n });\n const executionContext = Object.freeze({\n signal: context.signal,\n ...(context.authentication === undefined ? {} : { authentication: context.authentication }),\n ...(context.pluginScope === undefined ? {} : { pluginScope: context.pluginScope }),\n });\n const decision = authorize ? await policyResult(() => authorize(literalRequest, executionContext), context.signal) : \"allow\";\n context.signal.throwIfAborted();\n if (decision !== \"allow\" && decision !== \"ask\") throw new Error(\"permission denied\");\n if (approvalMode !== \"resolved\" && approvalMode !== \"literal\") throw new Error(\"Unsupported approval mode\");\n const resolved = decision === \"ask\" && approvalMode === \"resolved\";\n if (decision === \"ask\") {\n if (!resolved) {\n if (!approve || await policyResult(() => approve(literalRequest, executionContext), context.signal) !== true) throw new Error(\"permission denied\");\n } else {\n if (!authorizeResolution || !approveResolved || !backend.prepareBinding || !backend.validateBinding || !backend.cancelBinding || (handler && !planners.has(key))) throw new Error(\"Resolved approval is unsupported\");\n if (await policyResult(() => authorizeResolution(literalRequest, executionContext), context.signal) !== true) throw new Error(\"Resolution permission denied\");\n }\n }\n context.signal.throwIfAborted();\n context.stdin = original.stdin;\n context.readFile = original.readFile;\n const buffered = !handler || requiresInput ? await readInput(context, parsed.flags.encoding) : undefined;\n const input = buffered?.input;\n if (requiresInput && input === undefined) throw new Error(\"An object selector or piped input is required\");\n if (handler && buffered) context.stdin = { async *[Symbol.asyncIterator]() { yield* buffered.chunks; } };\n const request: OpBackendRequest = input === undefined ? literalRequest : Object.freeze({ ...literalRequest, input });\n if (resolved) {\n const validate = (): void | Promise<void> => {\n context.signal.throwIfAborted();\n if (!approved || !binding || finished) throw new Error(\"Resolved approval is not active\");\n const pending = backend.validateBinding!(binding.handle, selectOpBackendContext(context));\n if (pending !== undefined) return Promise.resolve(pending).then(() => { context.signal.throwIfAborted(); });\n context.signal.throwIfAborted();\n };\n const handoff = <Value>(effect: () => Promise<Value>): Promise<Value> => {\n const pending = validate();\n return pending === undefined ? effect() : pending.then(effect);\n };\n context.stdout = { isTTY: original.stdout.isTTY, async write(bytes) { return handoff(() => original.stdout.write(bytes)); } };\n context.stderr = { isTTY: original.stderr.isTTY, async write(bytes) { return handoff(() => original.stderr.write(bytes)); } };\n if (original.writeFile) context.writeFile = async (path, bytes, writeOptions) => handoff(() => original.writeFile!(path, bytes, writeOptions));\n if (original.invoke) context.invoke = async (command, args, invokeOptions) => handoff(() => original.invoke!(command, args, invokeOptions));\n const restoration = original as OpCommandContext & { restoreEnvironment?: (snapshot: unknown, context: { signal: AbortSignal }) => Promise<void> };\n if (restoration.restoreEnvironment) Object.assign(context, { async restoreEnvironment(snapshot: unknown) { return handoff(() => restoration.restoreEnvironment!(snapshot, { signal: context.signal })); } });\n let preparation: OpHandlerPreparation | undefined;\n if (handler) preparation = await policyResult(() => planners.get(key)!(request, context), context.signal);\n const requests = preparation?.requests ?? [request];\n const pending = Promise.resolve().then(() => {\n context.signal.throwIfAborted();\n return backend.prepareBinding!(requests, selectOpBackendContext(context));\n }).then(value => {\n if (finished || context.signal.aborted) backend.cancelBinding!(value.handle);\n else binding = value;\n return value;\n });\n const prepared = await policyResult(() => pending, context.signal);\n const manifest = await policyResult(() => {\n const destination = request.flags[\"out-file\"];\n const effects: readonly OpPreparedEffect[] = preparation ? preparation.complete(prepared.metadata) : [typeof destination === \"string\" ? { kind: \"file\", path: destination } : { kind: \"stdout\" }];\n return approvalManifest(literalRequest, requests, prepared, effects);\n }, context.signal);\n if (await policyResult(() => approveResolved!(manifest, executionContext), context.signal) !== true) throw new Error(\"permission denied\");\n if (preparation) Object.assign(context, preparation.context, { authentication: executionContext.authentication, pluginScope: executionContext.pluginScope });\n context.binding = prepared.handle;\n approved = true;\n await validate();\n }\n if (handler) return await handler(request, context);\n const destination = parsed.flags[\"out-file\"];\n const writeOptions = typeof destination === \"string\" ? { mode: parseOpFileMode(parsed.flags[\"file-mode\"]), overwrite: parsed.flags.force === true } : undefined;\n if (typeof destination === \"string\" && !context.writeFile) throw new Error(\"file output requires a host writeFile capability\");\n const result = await backend.execute(request, selectOpBackendContext(context));\n context.signal.throwIfAborted();\n const output = renderOpOutput(result, request);\n if (output !== undefined) {\n if (typeof destination === \"string\") {\n await context.writeFile!(destination, output, writeOptions);\n } else await context.stdout.write(output);\n }\n return { exitCode: 0 };\n } catch (error) {\n await original.stderr.write(new TextEncoder().encode(`op: ${context.signal.aborted ? \"operation aborted\" : error instanceof Error ? error.message : \"operation failed\"}\\n`));\n return { exitCode: context.signal.aborted ? 130 : 1 };\n } finally {\n finished = true;\n if (binding) backend.cancelBinding!(binding.handle);\n }\n },\n };\n}\n", "import { TextDecoder, createTextEncoder } from \"./encoding-runtime.js\";\n\nexport interface OpTextCodec {\n encode(input?: string): Uint8Array<ArrayBuffer>;\n decoder(options?: { fatal?: boolean; ignoreBOM?: boolean }): {\n readonly encoding: string;\n readonly fatal: boolean;\n readonly ignoreBOM: boolean;\n decode(input?: ArrayBufferLike | ArrayBufferView, options?: { stream?: boolean }): string;\n };\n}\n\nexport function createOpTextCodec(value: unknown): OpTextCodec {\n const aliases: Readonly<Record<string, string>> = {\n \"\": \"utf-8\", shift_jis: \"shift_jis\", \"shift-jis\": \"shift_jis\",\n shiftjis: \"shift_jis\", sjis: \"shift_jis\", gbk: \"gbk\",\n };\n const label = value === undefined ? \"\" : typeof value === \"string\" ? value.toLowerCase() : undefined;\n if (label === undefined || !Object.hasOwn(aliases, label)) throw new Error(\"unsupported character-encoding\");\n const encoding = aliases[label]!;\n const encoder = createTextEncoder(encoding);\n return {\n encode: encoder.encode.bind(encoder),\n decoder: (options) => new TextDecoder(encoding, options),\n };\n}\n", "// Keep encoding registration and implementation types out of the public codec declaration.\nimport \"@kayahr/text-encoding/encodings/shift_jis\";\nimport \"@kayahr/text-encoding/encodings/gbk\";\nexport { TextDecoder, createTextEncoder } from \"@kayahr/text-encoding/no-encodings\";\n", "/*\n * Copyright (C) 2021 Klaus Reimer <k@ailis.de>\n * See LICENSE.md for licensing information.\n */\n\nimport { ShiftJISDecoder } from \"../decoders/ShiftJISDecoder.ts\";\nimport { ShiftJISEncoder } from \"../encoders/ShiftJISEncoder.ts\";\nimport { registerEncoding } from \"../Encoding.ts\";\n\nregisterEncoding(\n \"shift_jis\",\n [\n \"csshiftjis\",\n \"ms932\",\n \"ms_kanji\",\n \"shift-jis\",\n \"shift_jis\",\n \"sjis\",\n \"windows-31j\",\n \"x-sjis\"\n ],\n ShiftJISDecoder,\n ShiftJISEncoder\n);\n", "/*\n * Copyright (C) 2021 Klaus Reimer <k@ailis.de>\n * See LICENSE.md for licensing information.\n */\n\nimport jis0208 from \"../../../data/jis0208.cp.js\";\nimport { AbstractDecoder } from \"../AbstractDecoder.ts\";\nimport { type ByteBuffer, END_OF_BUFFER } from \"../ByteBuffer.ts\";\nimport { FINISHED } from \"../constants.ts\";\nimport { inRange, isASCII } from \"../util.ts\";\n\n/**\n * Decoder for shift_jis encoding.\n */\nexport class ShiftJISDecoder extends AbstractDecoder {\n private lead = 0x00;\n\n /** @inheritdoc */\n public decode(buffer: ByteBuffer): number | number[] | null {\n const byte = buffer.read();\n if (byte === END_OF_BUFFER) {\n if (this.lead !== 0x00) {\n this.lead = 0x00;\n return this.fail();\n }\n return FINISHED;\n }\n if (this.lead !== 0x00) {\n const lead = this.lead;\n let index: number | null = null;\n this.lead = 0x00;\n const offset = (byte < 0x7F) ? 0x40 : 0x41;\n const leadOffset = (lead < 0xA0) ? 0x81 : 0xC1;\n if (inRange(byte, 0x40, 0x7E) || inRange(byte, 0x80, 0xFC)) {\n index = (lead - leadOffset) * 188 + byte - offset;\n }\n if (index != null && inRange(index, 8836, 10715)) {\n return 0xE000 - 8836 + index;\n }\n const codePoint = (index == null) ? null : jis0208[index] || null;\n if (codePoint == null && isASCII(byte)) {\n buffer.write(byte);\n }\n return codePoint ?? this.fail();\n }\n if (isASCII(byte) || byte === 0x80) {\n return byte;\n }\n if (inRange(byte, 0xA1, 0xDF)) {\n return 0xFF61 - 0xA1 + byte;\n }\n if (inRange(byte, 0x81, 0x9F) || inRange(byte, 0xE0, 0xFC)) {\n this.lead = byte;\n return null;\n }\n return this.fail();\n }\n}\n", "export default [12288,12289,12290,65292,65294,12539,65306,65307,65311,65281,12443,12444,180,65344,168,65342,65507,65343,12541,12542,12445,12446,12291,20189,12293,12294,12295,12540,8213,8208,65295,65340,65374,8741,65372,8230,8229,8216,8217,8220,8221,65288,65289,12308,12309,65339,65341,65371,65373,12296,12297,12298,12299,12300,12301,12302,12303,12304,12305,65291,65293,177,215,247,65309,8800,65308,65310,8806,8807,8734,8756,9794,9792,176,8242,8243,8451,65509,65284,65504,65505,65285,65283,65286,65290,65312,167,9734,9733,9675,9679,9678,9671,9670,9633,9632,9651,9650,9661,9660,8251,12306,8594,8592,8593,8595,12307,0,0,0,0,0,0,0,0,0,0,0,8712,8715,8838,8839,8834,8835,8746,8745,0,0,0,0,0,0,0,0,8743,8744,65506,8658,8660,8704,8707,0,0,0,0,0,0,0,0,0,0,0,8736,8869,8978,8706,8711,8801,8786,8810,8811,8730,8765,8733,8757,8747,8748,0,0,0,0,0,0,0,8491,8240,9839,9837,9834,8224,8225,182,0,0,0,0,9711,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65296,65297,65298,65299,65300,65301,65302,65303,65304,65305,0,0,0,0,0,0,0,65313,65314,65315,65316,65317,65318,65319,65320,65321,65322,65323,65324,65325,65326,65327,65328,65329,65330,65331,65332,65333,65334,65335,65336,65337,65338,0,0,0,0,0,0,65345,65346,65347,65348,65349,65350,65351,65352,65353,65354,65355,65356,65357,65358,65359,65360,65361,65362,65363,65364,65365,65366,65367,65368,65369,65370,0,0,0,0,12353,12354,12355,12356,12357,12358,12359,12360,12361,12362,12363,12364,12365,12366,12367,12368,12369,12370,12371,12372,12373,12374,12375,12376,12377,12378,12379,12380,12381,12382,12383,12384,12385,12386,12387,12388,12389,12390,12391,12392,12393,12394,12395,12396,12397,12398,12399,12400,12401,12402,12403,12404,12405,12406,12407,12408,12409,12410,12411,12412,12413,12414,12415,12416,12417,12418,12419,12420,12421,12422,12423,12424,12425,12426,12427,12428,12429,12430,12431,12432,12433,12434,12435,0,0,0,0,0,0,0,0,0,0,0,12449,12450,12451,12452,12453,12454,12455,12456,12457,12458,12459,12460,12461,12462,12463,12464,12465,12466,12467,12468,12469,12470,12471,12472,12473,12474,12475,12476,12477,12478,12479,12480,12481,12482,12483,12484,12485,12486,12487,12488,12489,12490,12491,12492,12493,12494,12495,12496,12497,12498,12499,12500,12501,12502,12503,12504,12505,12506,12507,12508,12509,12510,12511,12512,12513,12514,12515,12516,12517,12518,12519,12520,12521,12522,12523,12524,12525,12526,12527,12528,12529,12530,12531,12532,12533,12534,0,0,0,0,0,0,0,0,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,0,0,0,0,0,0,0,0,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,963,964,965,966,967,968,969,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1040,1041,1042,1043,1044,1045,1025,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1072,1073,1074,1075,1076,1077,1105,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,0,0,0,0,0,0,0,0,0,0,0,0,0,9472,9474,9484,9488,9496,9492,9500,9516,9508,9524,9532,9473,9475,9487,9491,9499,9495,9507,9523,9515,9531,9547,9504,9519,9512,9527,9535,9501,9520,9509,9528,9538,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9312,9313,9314,9315,9316,9317,9318,9319,9320,9321,9322,9323,9324,9325,9326,9327,9328,9329,9330,9331,8544,8545,8546,8547,8548,8549,8550,8551,8552,8553,0,13129,13076,13090,13133,13080,13095,13059,13110,13137,13143,13069,13094,13091,13099,13130,13115,13212,13213,13214,13198,13199,13252,13217,0,0,0,0,0,0,0,0,13179,12317,12319,8470,13261,8481,12964,12965,12966,12967,12968,12849,12850,12857,13182,13181,13180,8786,8801,8747,8750,8721,8730,8869,8736,8735,8895,8757,8745,8746,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20124,21782,23043,38463,21696,24859,25384,23030,36898,33909,33564,31312,24746,25569,28197,26093,33894,33446,39925,26771,22311,26017,25201,23451,22992,34427,39156,32098,32190,39822,25110,31903,34999,23433,24245,25353,26263,26696,38343,38797,26447,20197,20234,20301,20381,20553,22258,22839,22996,23041,23561,24799,24847,24944,26131,26885,28858,30031,30064,31227,32173,32239,32963,33806,34915,35586,36949,36986,21307,20117,20133,22495,32946,37057,30959,19968,22769,28322,36920,31282,33576,33419,39983,20801,21360,21693,21729,22240,23035,24341,39154,28139,32996,34093,38498,38512,38560,38907,21515,21491,23431,28879,32701,36802,38632,21359,40284,31418,19985,30867,33276,28198,22040,21764,27421,34074,39995,23013,21417,28006,29916,38287,22082,20113,36939,38642,33615,39180,21473,21942,23344,24433,26144,26355,26628,27704,27891,27945,29787,30408,31310,38964,33521,34907,35424,37613,28082,30123,30410,39365,24742,35585,36234,38322,27022,21421,20870,22290,22576,22852,23476,24310,24616,25513,25588,27839,28436,28814,28948,29017,29141,29503,32257,33398,33489,34199,36960,37467,40219,22633,26044,27738,29989,20985,22830,22885,24448,24540,25276,26106,27178,27431,27572,29579,32705,35158,40236,40206,40644,23713,27798,33659,20740,23627,25014,33222,26742,29281,20057,20474,21368,24681,28201,31311,38899,19979,21270,20206,20309,20285,20385,20339,21152,21487,22025,22799,23233,23478,23521,31185,26247,26524,26550,27468,27827,28779,29634,31117,31166,31292,31623,33457,33499,33540,33655,33775,33747,34662,35506,22057,36008,36838,36942,38686,34442,20420,23784,25105,29273,30011,33253,33469,34558,36032,38597,39187,39381,20171,20250,35299,22238,22602,22730,24315,24555,24618,24724,24674,25040,25106,25296,25913,39745,26214,26800,28023,28784,30028,30342,32117,33445,34809,38283,38542,35997,20977,21182,22806,21683,23475,23830,24936,27010,28079,30861,33995,34903,35442,37799,39608,28012,39336,34521,22435,26623,34510,37390,21123,22151,21508,24275,25313,25785,26684,26680,27579,29554,30906,31339,35226,35282,36203,36611,37101,38307,38548,38761,23398,23731,27005,38989,38990,25499,31520,27179,27263,26806,39949,28511,21106,21917,24688,25324,27963,28167,28369,33883,35088,36676,19988,39993,21494,26907,27194,38788,26666,20828,31427,33970,37340,37772,22107,40232,26658,33541,33841,31909,21000,33477,29926,20094,20355,20896,23506,21002,21208,21223,24059,21914,22570,23014,23436,23448,23515,24178,24185,24739,24863,24931,25022,25563,25954,26577,26707,26874,27454,27475,27735,28450,28567,28485,29872,29976,30435,30475,31487,31649,31777,32233,32566,32752,32925,33382,33694,35251,35532,36011,36996,37969,38291,38289,38306,38501,38867,39208,33304,20024,21547,23736,24012,29609,30284,30524,23721,32747,36107,38593,38929,38996,39000,20225,20238,21361,21916,22120,22522,22855,23305,23492,23696,24076,24190,24524,25582,26426,26071,26082,26399,26827,26820,27231,24112,27589,27671,27773,30079,31048,23395,31232,32000,24509,35215,35352,36020,36215,36556,36637,39138,39438,39740,20096,20605,20736,22931,23452,25135,25216,25836,27450,29344,30097,31047,32681,34811,35516,35696,25516,33738,38816,21513,21507,21931,26708,27224,35440,30759,26485,40653,21364,23458,33050,34384,36870,19992,20037,20167,20241,21450,21560,23470,24339,24613,25937,26429,27714,27762,27875,28792,29699,31350,31406,31496,32026,31998,32102,26087,29275,21435,23621,24040,25298,25312,25369,28192,34394,35377,36317,37624,28417,31142,39770,20136,20139,20140,20379,20384,20689,20807,31478,20849,20982,21332,21281,21375,21483,21932,22659,23777,24375,24394,24623,24656,24685,25375,25945,27211,27841,29378,29421,30703,33016,33029,33288,34126,37111,37857,38911,39255,39514,20208,20957,23597,26241,26989,23616,26354,26997,29577,26704,31873,20677,21220,22343,24062,37670,26020,27427,27453,29748,31105,31165,31563,32202,33465,33740,34943,35167,35641,36817,37329,21535,37504,20061,20534,21477,21306,29399,29590,30697,33510,36527,39366,39368,39378,20855,24858,34398,21936,31354,20598,23507,36935,38533,20018,27355,37351,23633,23624,25496,31391,27795,38772,36705,31402,29066,38536,31874,26647,32368,26705,37740,21234,21531,34219,35347,32676,36557,37089,21350,34952,31041,20418,20670,21009,20804,21843,22317,29674,22411,22865,24418,24452,24693,24950,24935,25001,25522,25658,25964,26223,26690,28179,30054,31293,31995,32076,32153,32331,32619,33550,33610,34509,35336,35427,35686,36605,38938,40335,33464,36814,39912,21127,25119,25731,28608,38553,26689,20625,27424,27770,28500,31348,32080,34880,35363,26376,20214,20537,20518,20581,20860,21048,21091,21927,22287,22533,23244,24314,25010,25080,25331,25458,26908,27177,29309,29356,29486,30740,30831,32121,30476,32937,35211,35609,36066,36562,36963,37749,38522,38997,39443,40568,20803,21407,21427,24187,24358,28187,28304,29572,29694,32067,33335,35328,35578,38480,20046,20491,21476,21628,22266,22993,23396,24049,24235,24359,25144,25925,26543,28246,29392,31946,34996,32929,32993,33776,34382,35463,36328,37431,38599,39015,40723,20116,20114,20237,21320,21577,21566,23087,24460,24481,24735,26791,27278,29786,30849,35486,35492,35703,37264,20062,39881,20132,20348,20399,20505,20502,20809,20844,21151,21177,21246,21402,21475,21521,21518,21897,22353,22434,22909,23380,23389,23439,24037,24039,24055,24184,24195,24218,24247,24344,24658,24908,25239,25304,25511,25915,26114,26179,26356,26477,26657,26775,27083,27743,27946,28009,28207,28317,30002,30343,30828,31295,31968,32005,32024,32094,32177,32789,32771,32943,32945,33108,33167,33322,33618,34892,34913,35611,36002,36092,37066,37237,37489,30783,37628,38308,38477,38917,39321,39640,40251,21083,21163,21495,21512,22741,25335,28640,35946,36703,40633,20811,21051,21578,22269,31296,37239,40288,40658,29508,28425,33136,29969,24573,24794,39592,29403,36796,27492,38915,20170,22256,22372,22718,23130,24680,25031,26127,26118,26681,26801,28151,30165,32058,33390,39746,20123,20304,21449,21766,23919,24038,24046,26619,27801,29811,30722,35408,37782,35039,22352,24231,25387,20661,20652,20877,26368,21705,22622,22971,23472,24425,25165,25505,26685,27507,28168,28797,37319,29312,30741,30758,31085,25998,32048,33756,35009,36617,38555,21092,22312,26448,32618,36001,20916,22338,38442,22586,27018,32948,21682,23822,22524,30869,40442,20316,21066,21643,25662,26152,26388,26613,31364,31574,32034,37679,26716,39853,31545,21273,20874,21047,23519,25334,25774,25830,26413,27578,34217,38609,30352,39894,25420,37638,39851,30399,26194,19977,20632,21442,23665,24808,25746,25955,26719,29158,29642,29987,31639,32386,34453,35715,36059,37240,39184,26028,26283,27531,20181,20180,20282,20351,21050,21496,21490,21987,22235,22763,22987,22985,23039,23376,23629,24066,24107,24535,24605,25351,25903,23388,26031,26045,26088,26525,27490,27515,27663,29509,31049,31169,31992,32025,32043,32930,33026,33267,35222,35422,35433,35430,35468,35566,36039,36060,38604,39164,27503,20107,20284,20365,20816,23383,23546,24904,25345,26178,27425,28363,27835,29246,29885,30164,30913,31034,32780,32819,33258,33940,36766,27728,40575,24335,35672,40235,31482,36600,23437,38635,19971,21489,22519,22833,23241,23460,24713,28287,28422,30142,36074,23455,34048,31712,20594,26612,33437,23649,34122,32286,33294,20889,23556,25448,36198,26012,29038,31038,32023,32773,35613,36554,36974,34503,37034,20511,21242,23610,26451,28796,29237,37196,37320,37675,33509,23490,24369,24825,20027,21462,23432,25163,26417,27530,29417,29664,31278,33131,36259,37202,39318,20754,21463,21610,23551,25480,27193,32172,38656,22234,21454,21608,23447,23601,24030,20462,24833,25342,27954,31168,31179,32066,32333,32722,33261,33311,33936,34886,35186,35728,36468,36655,36913,37195,37228,38598,37276,20160,20303,20805,21313,24467,25102,26580,27713,28171,29539,32294,37325,37507,21460,22809,23487,28113,31069,32302,31899,22654,29087,20986,34899,36848,20426,23803,26149,30636,31459,33308,39423,20934,24490,26092,26991,27529,28147,28310,28516,30462,32020,24033,36981,37255,38918,20966,21021,25152,26257,26329,28186,24246,32210,32626,26360,34223,34295,35576,21161,21465,22899,24207,24464,24661,37604,38500,20663,20767,21213,21280,21319,21484,21736,21830,21809,22039,22888,22974,23100,23477,23558,23567,23569,23578,24196,24202,24288,24432,25215,25220,25307,25484,25463,26119,26124,26157,26230,26494,26786,27167,27189,27836,28040,28169,28248,28988,28966,29031,30151,30465,30813,30977,31077,31216,31456,31505,31911,32057,32918,33750,33931,34121,34909,35059,35359,35388,35412,35443,35937,36062,37284,37478,37758,37912,38556,38808,19978,19976,19998,20055,20887,21104,22478,22580,22732,23330,24120,24773,25854,26465,26454,27972,29366,30067,31331,33976,35698,37304,37664,22065,22516,39166,25325,26893,27542,29165,32340,32887,33394,35302,39135,34645,36785,23611,20280,20449,20405,21767,23072,23517,23529,24515,24910,25391,26032,26187,26862,27035,28024,28145,30003,30137,30495,31070,31206,32051,33251,33455,34218,35242,35386,36523,36763,36914,37341,38663,20154,20161,20995,22645,22764,23563,29978,23613,33102,35338,36805,38499,38765,31525,35535,38920,37218,22259,21416,36887,21561,22402,24101,25512,27700,28810,30561,31883,32736,34928,36930,37204,37648,37656,38543,29790,39620,23815,23913,25968,26530,36264,38619,25454,26441,26905,33733,38935,38592,35070,28548,25722,23544,19990,28716,30045,26159,20932,21046,21218,22995,24449,24615,25104,25919,25972,26143,26228,26866,26646,27491,28165,29298,29983,30427,31934,32854,22768,35069,35199,35488,35475,35531,36893,37266,38738,38745,25993,31246,33030,38587,24109,24796,25114,26021,26132,26512,30707,31309,31821,32318,33034,36012,36196,36321,36447,30889,20999,25305,25509,25666,25240,35373,31363,31680,35500,38634,32118,33292,34633,20185,20808,21315,21344,23459,23554,23574,24029,25126,25159,25776,26643,26676,27849,27973,27927,26579,28508,29006,29053,26059,31359,31661,32218,32330,32680,33146,33307,33337,34214,35438,36046,36341,36984,36983,37549,37521,38275,39854,21069,21892,28472,28982,20840,31109,32341,33203,31950,22092,22609,23720,25514,26366,26365,26970,29401,30095,30094,30990,31062,31199,31895,32032,32068,34311,35380,38459,36961,40736,20711,21109,21452,21474,20489,21930,22766,22863,29245,23435,23652,21277,24803,24819,25436,25475,25407,25531,25805,26089,26361,24035,27085,27133,28437,29157,20105,30185,30456,31379,31967,32207,32156,32865,33609,33624,33900,33980,34299,35013,36208,36865,36973,37783,38684,39442,20687,22679,24974,33235,34101,36104,36896,20419,20596,21063,21363,24687,25417,26463,28204,36275,36895,20439,23646,36042,26063,32154,21330,34966,20854,25539,23384,23403,23562,25613,26449,36956,20182,22810,22826,27760,35409,21822,22549,22949,24816,25171,26561,33333,26965,38464,39364,39464,20307,22534,23550,32784,23729,24111,24453,24608,24907,25140,26367,27888,28382,32974,33151,33492,34955,36024,36864,36910,38538,40667,39899,20195,21488,22823,31532,37261,38988,40441,28381,28711,21331,21828,23429,25176,25246,25299,27810,28655,29730,35351,37944,28609,35582,33592,20967,34552,21482,21481,20294,36948,36784,22890,33073,24061,31466,36799,26842,35895,29432,40008,27197,35504,20025,21336,22022,22374,25285,25506,26086,27470,28129,28251,28845,30701,31471,31658,32187,32829,32966,34507,35477,37723,22243,22727,24382,26029,26262,27264,27573,30007,35527,20516,30693,22320,24347,24677,26234,27744,30196,31258,32622,33268,34584,36933,39347,31689,30044,31481,31569,33988,36880,31209,31378,33590,23265,30528,20013,20210,23449,24544,25277,26172,26609,27880,34411,34935,35387,37198,37619,39376,27159,28710,29482,33511,33879,36015,19969,20806,20939,21899,23541,24086,24115,24193,24340,24373,24427,24500,25074,25361,26274,26397,28526,29266,30010,30522,32884,33081,33144,34678,35519,35548,36229,36339,37530,38263,38914,40165,21189,25431,30452,26389,27784,29645,36035,37806,38515,27941,22684,26894,27084,36861,37786,30171,36890,22618,26626,25524,27131,20291,28460,26584,36795,34086,32180,37716,26943,28528,22378,22775,23340,32044,29226,21514,37347,40372,20141,20302,20572,20597,21059,35998,21576,22564,23450,24093,24213,24237,24311,24351,24716,25269,25402,25552,26799,27712,30855,31118,31243,32224,33351,35330,35558,36420,36883,37048,37165,37336,40718,27877,25688,25826,25973,28404,30340,31515,36969,37841,28346,21746,24505,25764,36685,36845,37444,20856,22635,22825,23637,24215,28155,32399,29980,36028,36578,39003,28857,20253,27583,28593,30000,38651,20814,21520,22581,22615,22956,23648,24466,26007,26460,28193,30331,33759,36077,36884,37117,37709,30757,30778,21162,24230,22303,22900,24594,20498,20826,20908,20941,20992,21776,22612,22616,22871,23445,23798,23947,24764,25237,25645,26481,26691,26812,26847,30423,28120,28271,28059,28783,29128,24403,30168,31095,31561,31572,31570,31958,32113,21040,33891,34153,34276,35342,35588,35910,36367,36867,36879,37913,38518,38957,39472,38360,20685,21205,21516,22530,23566,24999,25758,27934,30643,31461,33012,33796,36947,37509,23776,40199,21311,24471,24499,28060,29305,30563,31167,31716,27602,29420,35501,26627,27233,20984,31361,26932,23626,40182,33515,23493,37193,28702,22136,23663,24775,25958,27788,35930,36929,38931,21585,26311,37389,22856,37027,20869,20045,20970,34201,35598,28760,25466,37707,26978,39348,32260,30071,21335,26976,36575,38627,27741,20108,23612,24336,36841,21250,36049,32905,34425,24319,26085,20083,20837,22914,23615,38894,20219,22922,24525,35469,28641,31152,31074,23527,33905,29483,29105,24180,24565,25467,25754,29123,31896,20035,24316,20043,22492,22178,24745,28611,32013,33021,33075,33215,36786,35223,34468,24052,25226,25773,35207,26487,27874,27966,29750,30772,23110,32629,33453,39340,20467,24259,25309,25490,25943,26479,30403,29260,32972,32954,36649,37197,20493,22521,23186,26757,26995,29028,29437,36023,22770,36064,38506,36889,34687,31204,30695,33833,20271,21093,21338,25293,26575,27850,30333,31636,31893,33334,34180,36843,26333,28448,29190,32283,33707,39361,40614,20989,31665,30834,31672,32903,31560,27368,24161,32908,30033,30048,20843,37474,28300,30330,37271,39658,20240,32624,25244,31567,38309,40169,22138,22617,34532,38588,20276,21028,21322,21453,21467,24070,25644,26001,26495,27710,27726,29256,29359,29677,30036,32321,33324,34281,36009,31684,37318,29033,38930,39151,25405,26217,30058,30436,30928,34115,34542,21290,21329,21542,22915,24199,24444,24754,25161,25209,25259,26000,27604,27852,30130,30382,30865,31192,32203,32631,32933,34987,35513,36027,36991,38750,39131,27147,31800,20633,23614,24494,26503,27608,29749,30473,32654,40763,26570,31255,21305,30091,39661,24422,33181,33777,32920,24380,24517,30050,31558,36924,26727,23019,23195,32016,30334,35628,20469,24426,27161,27703,28418,29922,31080,34920,35413,35961,24287,25551,30149,31186,33495,37672,37618,33948,34541,39981,21697,24428,25996,27996,28693,36007,36051,38971,25935,29942,19981,20184,22496,22827,23142,23500,20904,24067,24220,24598,25206,25975,26023,26222,28014,29238,31526,33104,33178,33433,35676,36000,36070,36212,38428,38468,20398,25771,27494,33310,33889,34154,37096,23553,26963,39080,33914,34135,20239,21103,24489,24133,26381,31119,33145,35079,35206,28149,24343,25173,27832,20175,29289,39826,20998,21563,22132,22707,24996,25198,28954,22894,31881,31966,32027,38640,25991,32862,19993,20341,20853,22592,24163,24179,24330,26564,20006,34109,38281,38491,31859,38913,20731,22721,30294,30887,21029,30629,34065,31622,20559,22793,29255,31687,32232,36794,36820,36941,20415,21193,23081,24321,38829,20445,33303,37610,22275,25429,27497,29995,35036,36628,31298,21215,22675,24917,25098,26286,27597,31807,33769,20515,20472,21253,21574,22577,22857,23453,23792,23791,23849,24214,25265,25447,25918,26041,26379,27861,27873,28921,30770,32299,32990,33459,33804,34028,34562,35090,35370,35914,37030,37586,39165,40179,40300,20047,20129,20621,21078,22346,22952,24125,24536,24537,25151,26292,26395,26576,26834,20882,32033,32938,33192,35584,35980,36031,37502,38450,21536,38956,21271,20693,21340,22696,25778,26420,29287,30566,31302,37350,21187,27809,27526,22528,24140,22868,26412,32763,20961,30406,25705,30952,39764,40635,22475,22969,26151,26522,27598,21737,27097,24149,33180,26517,39850,26622,40018,26717,20134,20451,21448,25273,26411,27819,36804,20397,32365,40639,19975,24930,28288,28459,34067,21619,26410,39749,24051,31637,23724,23494,34588,28234,34001,31252,33032,22937,31885,27665,30496,21209,22818,28961,29279,30683,38695,40289,26891,23167,23064,20901,21517,21629,26126,30431,36855,37528,40180,23018,29277,28357,20813,26825,32191,32236,38754,40634,25720,27169,33538,22916,23391,27611,29467,30450,32178,32791,33945,20786,26408,40665,30446,26466,21247,39173,23588,25147,31870,36016,21839,24758,32011,38272,21249,20063,20918,22812,29242,32822,37326,24357,30690,21380,24441,32004,34220,35379,36493,38742,26611,34222,37971,24841,24840,27833,30290,35565,36664,21807,20305,20778,21191,21451,23461,24189,24736,24962,25558,26377,26586,28263,28044,29494,29495,30001,31056,35029,35480,36938,37009,37109,38596,34701,22805,20104,20313,19982,35465,36671,38928,20653,24188,22934,23481,24248,25562,25594,25793,26332,26954,27096,27915,28342,29076,29992,31407,32650,32768,33865,33993,35201,35617,36362,36965,38525,39178,24958,25233,27442,27779,28020,32716,32764,28096,32645,34746,35064,26469,33713,38972,38647,27931,32097,33853,37226,20081,21365,23888,27396,28651,34253,34349,35239,21033,21519,23653,26446,26792,29702,29827,30178,35023,35041,37324,38626,38520,24459,29575,31435,33870,25504,30053,21129,27969,28316,29705,30041,30827,31890,38534,31452,40845,20406,24942,26053,34396,20102,20142,20698,20001,20940,23534,26009,26753,28092,29471,30274,30637,31260,31975,33391,35538,36988,37327,38517,38936,21147,32209,20523,21400,26519,28107,29136,29747,33256,36650,38563,40023,40607,29792,22593,28057,32047,39006,20196,20278,20363,20919,21169,23994,24604,29618,31036,33491,37428,38583,38646,38666,40599,40802,26278,27508,21015,21155,28872,35010,24265,24651,24976,28451,29001,31806,32244,32879,34030,36899,37676,21570,39791,27347,28809,36034,36335,38706,21172,23105,24266,24324,26391,27004,27028,28010,28431,29282,29436,31725,32769,32894,34635,37070,20845,40595,31108,32907,37682,35542,20525,21644,35441,27498,36036,33031,24785,26528,40434,20121,20120,39952,35435,34241,34152,26880,28286,30871,33109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24332,19984,19989,20010,20017,20022,20028,20031,20034,20054,20056,20098,20101,35947,20106,33298,24333,20110,20126,20127,20128,20130,20144,20147,20150,20174,20173,20164,20166,20162,20183,20190,20205,20191,20215,20233,20314,20272,20315,20317,20311,20295,20342,20360,20367,20376,20347,20329,20336,20369,20335,20358,20374,20760,20436,20447,20430,20440,20443,20433,20442,20432,20452,20453,20506,20520,20500,20522,20517,20485,20252,20470,20513,20521,20524,20478,20463,20497,20486,20547,20551,26371,20565,20560,20552,20570,20566,20588,20600,20608,20634,20613,20660,20658,20681,20682,20659,20674,20694,20702,20709,20717,20707,20718,20729,20725,20745,20737,20738,20758,20757,20756,20762,20769,20794,20791,20796,20795,20799,20800,20818,20812,20820,20834,31480,20841,20842,20846,20864,20866,22232,20876,20873,20879,20881,20883,20885,20886,20900,20902,20898,20905,20906,20907,20915,20913,20914,20912,20917,20925,20933,20937,20955,20960,34389,20969,20973,20976,20981,20990,20996,21003,21012,21006,21031,21034,21038,21043,21049,21071,21060,21067,21068,21086,21076,21098,21108,21097,21107,21119,21117,21133,21140,21138,21105,21128,21137,36776,36775,21164,21165,21180,21173,21185,21197,21207,21214,21219,21222,39149,21216,21235,21237,21240,21241,21254,21256,30008,21261,21264,21263,21269,21274,21283,21295,21297,21299,21304,21312,21318,21317,19991,21321,21325,20950,21342,21353,21358,22808,21371,21367,21378,21398,21408,21414,21413,21422,21424,21430,21443,31762,38617,21471,26364,29166,21486,21480,21485,21498,21505,21565,21568,21548,21549,21564,21550,21558,21545,21533,21582,21647,21621,21646,21599,21617,21623,21616,21650,21627,21632,21622,21636,21648,21638,21703,21666,21688,21669,21676,21700,21704,21672,21675,21698,21668,21694,21692,21720,21733,21734,21775,21780,21757,21742,21741,21754,21730,21817,21824,21859,21836,21806,21852,21829,21846,21847,21816,21811,21853,21913,21888,21679,21898,21919,21883,21886,21912,21918,21934,21884,21891,21929,21895,21928,21978,21957,21983,21956,21980,21988,21972,22036,22007,22038,22014,22013,22043,22009,22094,22096,29151,22068,22070,22066,22072,22123,22116,22063,22124,22122,22150,22144,22154,22176,22164,22159,22181,22190,22198,22196,22210,22204,22209,22211,22208,22216,22222,22225,22227,22231,22254,22265,22272,22271,22276,22281,22280,22283,22285,22291,22296,22294,21959,22300,22310,22327,22328,22350,22331,22336,22351,22377,22464,22408,22369,22399,22409,22419,22432,22451,22436,22442,22448,22467,22470,22484,22482,22483,22538,22486,22499,22539,22553,22557,22642,22561,22626,22603,22640,27584,22610,22589,22649,22661,22713,22687,22699,22714,22750,22715,22712,22702,22725,22739,22737,22743,22745,22744,22757,22748,22756,22751,22767,22778,22777,22779,22780,22781,22786,22794,22800,22811,26790,22821,22828,22829,22834,22840,22846,31442,22869,22864,22862,22874,22872,22882,22880,22887,22892,22889,22904,22913,22941,20318,20395,22947,22962,22982,23016,23004,22925,23001,23002,23077,23071,23057,23068,23049,23066,23104,23148,23113,23093,23094,23138,23146,23194,23228,23230,23243,23234,23229,23267,23255,23270,23273,23254,23290,23291,23308,23307,23318,23346,23248,23338,23350,23358,23363,23365,23360,23377,23381,23386,23387,23397,23401,23408,23411,23413,23416,25992,23418,23424,23427,23462,23480,23491,23495,23497,23508,23504,23524,23526,23522,23518,23525,23531,23536,23542,23539,23557,23559,23560,23565,23571,23584,23586,23592,23608,23609,23617,23622,23630,23635,23632,23631,23409,23660,23662,20066,23670,23673,23692,23697,23700,22939,23723,23739,23734,23740,23735,23749,23742,23751,23769,23785,23805,23802,23789,23948,23786,23819,23829,23831,23900,23839,23835,23825,23828,23842,23834,23833,23832,23884,23890,23886,23883,23916,23923,23926,23943,23940,23938,23970,23965,23980,23982,23997,23952,23991,23996,24009,24013,24019,24018,24022,24027,24043,24050,24053,24075,24090,24089,24081,24091,24118,24119,24132,24131,24128,24142,24151,24148,24159,24162,24164,24135,24181,24182,24186,40636,24191,24224,24257,24258,24264,24272,24271,24278,24291,24285,24282,24283,24290,24289,24296,24297,24300,24305,24307,24304,24308,24312,24318,24323,24329,24413,24412,24331,24337,24342,24361,24365,24376,24385,24392,24396,24398,24367,24401,24406,24407,24409,24417,24429,24435,24439,24451,24450,24447,24458,24456,24465,24455,24478,24473,24472,24480,24488,24493,24508,24534,24571,24548,24568,24561,24541,24755,24575,24609,24672,24601,24592,24617,24590,24625,24603,24597,24619,24614,24591,24634,24666,24641,24682,24695,24671,24650,24646,24653,24675,24643,24676,24642,24684,24683,24665,24705,24717,24807,24707,24730,24708,24731,24726,24727,24722,24743,24715,24801,24760,24800,24787,24756,24560,24765,24774,24757,24792,24909,24853,24838,24822,24823,24832,24820,24826,24835,24865,24827,24817,24845,24846,24903,24894,24872,24871,24906,24895,24892,24876,24884,24893,24898,24900,24947,24951,24920,24921,24922,24939,24948,24943,24933,24945,24927,24925,24915,24949,24985,24982,24967,25004,24980,24986,24970,24977,25003,25006,25036,25034,25033,25079,25032,25027,25030,25018,25035,32633,25037,25062,25059,25078,25082,25076,25087,25085,25084,25086,25088,25096,25097,25101,25100,25108,25115,25118,25121,25130,25134,25136,25138,25139,25153,25166,25182,25187,25179,25184,25192,25212,25218,25225,25214,25234,25235,25238,25300,25219,25236,25303,25297,25275,25295,25343,25286,25812,25288,25308,25292,25290,25282,25287,25243,25289,25356,25326,25329,25383,25346,25352,25327,25333,25424,25406,25421,25628,25423,25494,25486,25472,25515,25462,25507,25487,25481,25503,25525,25451,25449,25534,25577,25536,25542,25571,25545,25554,25590,25540,25622,25652,25606,25619,25638,25654,25885,25623,25640,25615,25703,25711,25718,25678,25898,25749,25747,25765,25769,25736,25788,25818,25810,25797,25799,25787,25816,25794,25841,25831,33289,25824,25825,25260,25827,25839,25900,25846,25844,25842,25850,25856,25853,25880,25884,25861,25892,25891,25899,25908,25909,25911,25910,25912,30027,25928,25942,25941,25933,25944,25950,25949,25970,25976,25986,25987,35722,26011,26015,26027,26039,26051,26054,26049,26052,26060,26066,26075,26073,26080,26081,26097,26482,26122,26115,26107,26483,26165,26166,26164,26140,26191,26180,26185,26177,26206,26205,26212,26215,26216,26207,26210,26224,26243,26248,26254,26249,26244,26264,26269,26305,26297,26313,26302,26300,26308,26296,26326,26330,26336,26175,26342,26345,26352,26357,26359,26383,26390,26398,26406,26407,38712,26414,26431,26422,26433,26424,26423,26438,26462,26464,26457,26467,26468,26505,26480,26537,26492,26474,26508,26507,26534,26529,26501,26551,26607,26548,26604,26547,26601,26552,26596,26590,26589,26594,26606,26553,26574,26566,26599,27292,26654,26694,26665,26688,26701,26674,26702,26803,26667,26713,26723,26743,26751,26783,26767,26797,26772,26781,26779,26755,27310,26809,26740,26805,26784,26810,26895,26765,26750,26881,26826,26888,26840,26914,26918,26849,26892,26829,26836,26855,26837,26934,26898,26884,26839,26851,26917,26873,26848,26863,26920,26922,26906,26915,26913,26822,27001,26999,26972,27000,26987,26964,27006,26990,26937,26996,26941,26969,26928,26977,26974,26973,27009,26986,27058,27054,27088,27071,27073,27091,27070,27086,23528,27082,27101,27067,27075,27047,27182,27025,27040,27036,27029,27060,27102,27112,27138,27163,27135,27402,27129,27122,27111,27141,27057,27166,27117,27156,27115,27146,27154,27329,27171,27155,27204,27148,27250,27190,27256,27207,27234,27225,27238,27208,27192,27170,27280,27277,27296,27268,27298,27299,27287,34327,27323,27331,27330,27320,27315,27308,27358,27345,27359,27306,27354,27370,27387,27397,34326,27386,27410,27414,39729,27423,27448,27447,30428,27449,39150,27463,27459,27465,27472,27481,27476,27483,27487,27489,27512,27513,27519,27520,27524,27523,27533,27544,27541,27550,27556,27562,27563,27567,27570,27569,27571,27575,27580,27590,27595,27603,27615,27628,27627,27635,27631,40638,27656,27667,27668,27675,27684,27683,27742,27733,27746,27754,27778,27789,27802,27777,27803,27774,27752,27763,27794,27792,27844,27889,27859,27837,27863,27845,27869,27822,27825,27838,27834,27867,27887,27865,27882,27935,34893,27958,27947,27965,27960,27929,27957,27955,27922,27916,28003,28051,28004,27994,28025,27993,28046,28053,28644,28037,28153,28181,28170,28085,28103,28134,28088,28102,28140,28126,28108,28136,28114,28101,28154,28121,28132,28117,28138,28142,28205,28270,28206,28185,28274,28255,28222,28195,28267,28203,28278,28237,28191,28227,28218,28238,28196,28415,28189,28216,28290,28330,28312,28361,28343,28371,28349,28335,28356,28338,28372,28373,28303,28325,28354,28319,28481,28433,28748,28396,28408,28414,28479,28402,28465,28399,28466,28364,28478,28435,28407,28550,28538,28536,28545,28544,28527,28507,28659,28525,28546,28540,28504,28558,28561,28610,28518,28595,28579,28577,28580,28601,28614,28586,28639,28629,28652,28628,28632,28657,28654,28635,28681,28683,28666,28689,28673,28687,28670,28699,28698,28532,28701,28696,28703,28720,28734,28722,28753,28771,28825,28818,28847,28913,28844,28856,28851,28846,28895,28875,28893,28889,28937,28925,28956,28953,29029,29013,29064,29030,29026,29004,29014,29036,29071,29179,29060,29077,29096,29100,29143,29113,29118,29138,29129,29140,29134,29152,29164,29159,29173,29180,29177,29183,29197,29200,29211,29224,29229,29228,29232,29234,29243,29244,29247,29248,29254,29259,29272,29300,29310,29314,29313,29319,29330,29334,29346,29351,29369,29362,29379,29382,29380,29390,29394,29410,29408,29409,29433,29431,20495,29463,29450,29468,29462,29469,29492,29487,29481,29477,29502,29518,29519,40664,29527,29546,29544,29552,29560,29557,29563,29562,29640,29619,29646,29627,29632,29669,29678,29662,29858,29701,29807,29733,29688,29746,29754,29781,29759,29791,29785,29761,29788,29801,29808,29795,29802,29814,29822,29835,29854,29863,29898,29903,29908,29681,29920,29923,29927,29929,29934,29938,29936,29937,29944,29943,29956,29955,29957,29964,29966,29965,29973,29971,29982,29990,29996,30012,30020,30029,30026,30025,30043,30022,30042,30057,30052,30055,30059,30061,30072,30070,30086,30087,30068,30090,30089,30082,30100,30106,30109,30117,30115,30146,30131,30147,30133,30141,30136,30140,30129,30157,30154,30162,30169,30179,30174,30206,30207,30204,30209,30192,30202,30194,30195,30219,30221,30217,30239,30247,30240,30241,30242,30244,30260,30256,30267,30279,30280,30278,30300,30296,30305,30306,30312,30313,30314,30311,30316,30320,30322,30326,30328,30332,30336,30339,30344,30347,30350,30358,30355,30361,30362,30384,30388,30392,30393,30394,30402,30413,30422,30418,30430,30433,30437,30439,30442,34351,30459,30472,30471,30468,30505,30500,30494,30501,30502,30491,30519,30520,30535,30554,30568,30571,30555,30565,30591,30590,30585,30606,30603,30609,30624,30622,30640,30646,30649,30655,30652,30653,30651,30663,30669,30679,30682,30684,30691,30702,30716,30732,30738,31014,30752,31018,30789,30862,30836,30854,30844,30874,30860,30883,30901,30890,30895,30929,30918,30923,30932,30910,30908,30917,30922,30956,30951,30938,30973,30964,30983,30994,30993,31001,31020,31019,31040,31072,31063,31071,31066,31061,31059,31098,31103,31114,31133,31143,40779,31146,31150,31155,31161,31162,31177,31189,31207,31212,31201,31203,31240,31245,31256,31257,31264,31263,31104,31281,31291,31294,31287,31299,31319,31305,31329,31330,31337,40861,31344,31353,31357,31368,31383,31381,31384,31382,31401,31432,31408,31414,31429,31428,31423,36995,31431,31434,31437,31439,31445,31443,31449,31450,31453,31457,31458,31462,31469,31472,31490,31503,31498,31494,31539,31512,31513,31518,31541,31528,31542,31568,31610,31492,31565,31499,31564,31557,31605,31589,31604,31591,31600,31601,31596,31598,31645,31640,31647,31629,31644,31642,31627,31634,31631,31581,31641,31691,31681,31692,31695,31668,31686,31709,31721,31761,31764,31718,31717,31840,31744,31751,31763,31731,31735,31767,31757,31734,31779,31783,31786,31775,31799,31787,31805,31820,31811,31828,31823,31808,31824,31832,31839,31844,31830,31845,31852,31861,31875,31888,31908,31917,31906,31915,31905,31912,31923,31922,31921,31918,31929,31933,31936,31941,31938,31960,31954,31964,31970,39739,31983,31986,31988,31990,31994,32006,32002,32028,32021,32010,32069,32075,32046,32050,32063,32053,32070,32115,32086,32078,32114,32104,32110,32079,32099,32147,32137,32091,32143,32125,32155,32186,32174,32163,32181,32199,32189,32171,32317,32162,32175,32220,32184,32159,32176,32216,32221,32228,32222,32251,32242,32225,32261,32266,32291,32289,32274,32305,32287,32265,32267,32290,32326,32358,32315,32309,32313,32323,32311,32306,32314,32359,32349,32342,32350,32345,32346,32377,32362,32361,32380,32379,32387,32213,32381,36782,32383,32392,32393,32396,32402,32400,32403,32404,32406,32398,32411,32412,32568,32570,32581,32588,32589,32590,32592,32593,32597,32596,32600,32607,32608,32616,32617,32615,32632,32642,32646,32643,32648,32647,32652,32660,32670,32669,32666,32675,32687,32690,32697,32686,32694,32696,35697,32709,32710,32714,32725,32724,32737,32742,32745,32755,32761,39132,32774,32772,32779,32786,32792,32793,32796,32801,32808,32831,32827,32842,32838,32850,32856,32858,32863,32866,32872,32883,32882,32880,32886,32889,32893,32895,32900,32902,32901,32923,32915,32922,32941,20880,32940,32987,32997,32985,32989,32964,32986,32982,33033,33007,33009,33051,33065,33059,33071,33099,38539,33094,33086,33107,33105,33020,33137,33134,33125,33126,33140,33155,33160,33162,33152,33154,33184,33173,33188,33187,33119,33171,33193,33200,33205,33214,33208,33213,33216,33218,33210,33225,33229,33233,33241,33240,33224,33242,33247,33248,33255,33274,33275,33278,33281,33282,33285,33287,33290,33293,33296,33302,33321,33323,33336,33331,33344,33369,33368,33373,33370,33375,33380,33378,33384,33386,33387,33326,33393,33399,33400,33406,33421,33426,33451,33439,33467,33452,33505,33507,33503,33490,33524,33523,33530,33683,33539,33531,33529,33502,33542,33500,33545,33497,33589,33588,33558,33586,33585,33600,33593,33616,33605,33583,33579,33559,33560,33669,33690,33706,33695,33698,33686,33571,33678,33671,33674,33660,33717,33651,33653,33696,33673,33704,33780,33811,33771,33742,33789,33795,33752,33803,33729,33783,33799,33760,33778,33805,33826,33824,33725,33848,34054,33787,33901,33834,33852,34138,33924,33911,33899,33965,33902,33922,33897,33862,33836,33903,33913,33845,33994,33890,33977,33983,33951,34009,33997,33979,34010,34000,33985,33990,34006,33953,34081,34047,34036,34071,34072,34092,34079,34069,34068,34044,34112,34147,34136,34120,34113,34306,34123,34133,34176,34212,34184,34193,34186,34216,34157,34196,34203,34282,34183,34204,34167,34174,34192,34249,34234,34255,34233,34256,34261,34269,34277,34268,34297,34314,34323,34315,34302,34298,34310,34338,34330,34352,34367,34381,20053,34388,34399,34407,34417,34451,34467,34473,34474,34443,34444,34486,34479,34500,34502,34480,34505,34851,34475,34516,34526,34537,34540,34527,34523,34543,34578,34566,34568,34560,34563,34555,34577,34569,34573,34553,34570,34612,34623,34615,34619,34597,34601,34586,34656,34655,34680,34636,34638,34676,34647,34664,34670,34649,34643,34659,34666,34821,34722,34719,34690,34735,34763,34749,34752,34768,38614,34731,34756,34739,34759,34758,34747,34799,34802,34784,34831,34829,34814,34806,34807,34830,34770,34833,34838,34837,34850,34849,34865,34870,34873,34855,34875,34884,34882,34898,34905,34910,34914,34923,34945,34942,34974,34933,34941,34997,34930,34946,34967,34962,34990,34969,34978,34957,34980,34992,35007,34993,35011,35012,35028,35032,35033,35037,35065,35074,35068,35060,35048,35058,35076,35084,35082,35091,35139,35102,35109,35114,35115,35137,35140,35131,35126,35128,35148,35101,35168,35166,35174,35172,35181,35178,35183,35188,35191,35198,35203,35208,35210,35219,35224,35233,35241,35238,35244,35247,35250,35258,35261,35263,35264,35290,35292,35293,35303,35316,35320,35331,35350,35344,35340,35355,35357,35365,35382,35393,35419,35410,35398,35400,35452,35437,35436,35426,35461,35458,35460,35496,35489,35473,35493,35494,35482,35491,35524,35533,35522,35546,35563,35571,35559,35556,35569,35604,35552,35554,35575,35550,35547,35596,35591,35610,35553,35606,35600,35607,35616,35635,38827,35622,35627,35646,35624,35649,35660,35663,35662,35657,35670,35675,35674,35691,35679,35692,35695,35700,35709,35712,35724,35726,35730,35731,35734,35737,35738,35898,35905,35903,35912,35916,35918,35920,35925,35938,35948,35960,35962,35970,35977,35973,35978,35981,35982,35988,35964,35992,25117,36013,36010,36029,36018,36019,36014,36022,36040,36033,36068,36067,36058,36093,36090,36091,36100,36101,36106,36103,36111,36109,36112,40782,36115,36045,36116,36118,36199,36205,36209,36211,36225,36249,36290,36286,36282,36303,36314,36310,36300,36315,36299,36330,36331,36319,36323,36348,36360,36361,36351,36381,36382,36368,36383,36418,36405,36400,36404,36426,36423,36425,36428,36432,36424,36441,36452,36448,36394,36451,36437,36470,36466,36476,36481,36487,36485,36484,36491,36490,36499,36497,36500,36505,36522,36513,36524,36528,36550,36529,36542,36549,36552,36555,36571,36579,36604,36603,36587,36606,36618,36613,36629,36626,36633,36627,36636,36639,36635,36620,36646,36659,36667,36665,36677,36674,36670,36684,36681,36678,36686,36695,36700,36706,36707,36708,36764,36767,36771,36781,36783,36791,36826,36837,36834,36842,36847,36999,36852,36869,36857,36858,36881,36885,36897,36877,36894,36886,36875,36903,36918,36917,36921,36856,36943,36944,36945,36946,36878,36937,36926,36950,36952,36958,36968,36975,36982,38568,36978,36994,36989,36993,36992,37002,37001,37007,37032,37039,37041,37045,37090,37092,25160,37083,37122,37138,37145,37170,37168,37194,37206,37208,37219,37221,37225,37235,37234,37259,37257,37250,37282,37291,37295,37290,37301,37300,37306,37312,37313,37321,37323,37328,37334,37343,37345,37339,37372,37365,37366,37406,37375,37396,37420,37397,37393,37470,37463,37445,37449,37476,37448,37525,37439,37451,37456,37532,37526,37523,37531,37466,37583,37561,37559,37609,37647,37626,37700,37678,37657,37666,37658,37667,37690,37685,37691,37724,37728,37756,37742,37718,37808,37804,37805,37780,37817,37846,37847,37864,37861,37848,37827,37853,37840,37832,37860,37914,37908,37907,37891,37895,37904,37942,37931,37941,37921,37946,37953,37970,37956,37979,37984,37986,37982,37994,37417,38000,38005,38007,38013,37978,38012,38014,38017,38015,38274,38279,38282,38292,38294,38296,38297,38304,38312,38311,38317,38332,38331,38329,38334,38346,28662,38339,38349,38348,38357,38356,38358,38364,38369,38373,38370,38433,38440,38446,38447,38466,38476,38479,38475,38519,38492,38494,38493,38495,38502,38514,38508,38541,38552,38549,38551,38570,38567,38577,38578,38576,38580,38582,38584,38585,38606,38603,38601,38605,35149,38620,38669,38613,38649,38660,38662,38664,38675,38670,38673,38671,38678,38681,38692,38698,38704,38713,38717,38718,38724,38726,38728,38722,38729,38748,38752,38756,38758,38760,21202,38763,38769,38777,38789,38780,38785,38778,38790,38795,38799,38800,38812,38824,38822,38819,38835,38836,38851,38854,38856,38859,38876,38893,40783,38898,31455,38902,38901,38927,38924,38968,38948,38945,38967,38973,38982,38991,38987,39019,39023,39024,39025,39028,39027,39082,39087,39089,39094,39108,39107,39110,39145,39147,39171,39177,39186,39188,39192,39201,39197,39198,39204,39200,39212,39214,39229,39230,39234,39241,39237,39248,39243,39249,39250,39244,39253,39319,39320,39333,39341,39342,39356,39391,39387,39389,39384,39377,39405,39406,39409,39410,39419,39416,39425,39439,39429,39394,39449,39467,39479,39493,39490,39488,39491,39486,39509,39501,39515,39511,39519,39522,39525,39524,39529,39531,39530,39597,39600,39612,39616,39631,39633,39635,39636,39646,39647,39650,39651,39654,39663,39659,39662,39668,39665,39671,39675,39686,39704,39706,39711,39714,39715,39717,39719,39720,39721,39722,39726,39727,39730,39748,39747,39759,39757,39758,39761,39768,39796,39827,39811,39825,39830,39831,39839,39840,39848,39860,39872,39882,39865,39878,39887,39889,39890,39907,39906,39908,39892,39905,39994,39922,39921,39920,39957,39956,39945,39955,39948,39942,39944,39954,39946,39940,39982,39963,39973,39972,39969,39984,40007,39986,40006,39998,40026,40032,40039,40054,40056,40167,40172,40176,40201,40200,40171,40195,40198,40234,40230,40367,40227,40223,40260,40213,40210,40257,40255,40254,40262,40264,40285,40286,40292,40273,40272,40281,40306,40329,40327,40363,40303,40314,40346,40356,40361,40370,40388,40385,40379,40376,40378,40390,40399,40386,40409,40403,40440,40422,40429,40431,40445,40474,40475,40478,40565,40569,40573,40577,40584,40587,40588,40594,40597,40593,40605,40613,40617,40632,40618,40621,38753,40652,40654,40655,40656,40660,40668,40670,40669,40672,40677,40680,40687,40692,40694,40695,40697,40699,40700,40701,40711,40712,30391,40725,40737,40748,40766,40778,40786,40788,40803,40799,40800,40801,40806,40807,40812,40810,40823,40818,40822,40853,40860,40864,22575,27079,36953,29796,20956,29081,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32394,35100,37704,37512,34012,20425,28859,26161,26824,37625,26363,24389,20008,20193,20220,20224,20227,20281,20310,20370,20362,20378,20372,20429,20544,20514,20479,20510,20550,20592,20546,20628,20724,20696,20810,20836,20893,20926,20972,21013,21148,21158,21184,21211,21248,21255,21284,21362,21395,21426,21469,64014,21660,21642,21673,21759,21894,22361,22373,22444,22472,22471,64015,64016,22686,22706,22795,22867,22875,22877,22883,22948,22970,23382,23488,29999,23512,23532,23582,23718,23738,23797,23847,23891,64017,23874,23917,23992,23993,24016,24353,24372,24423,24503,24542,24669,24709,24714,24798,24789,24864,24818,24849,24887,24880,24984,25107,25254,25589,25696,25757,25806,25934,26112,26133,26171,26121,26158,26142,26148,26213,26199,26201,64018,26227,26265,26272,26290,26303,26362,26382,63785,26470,26555,26706,26560,26625,26692,26831,64019,26984,64020,27032,27106,27184,27243,27206,27251,27262,27362,27364,27606,27711,27740,27782,27759,27866,27908,28039,28015,28054,28076,28111,28152,28146,28156,28217,28252,28199,28220,28351,28552,28597,28661,28677,28679,28712,28805,28843,28943,28932,29020,28998,28999,64021,29121,29182,29361,29374,29476,64022,29559,29629,29641,29654,29667,29650,29703,29685,29734,29738,29737,29742,29794,29833,29855,29953,30063,30338,30364,30366,30363,30374,64023,30534,21167,30753,30798,30820,30842,31024,64024,64025,64026,31124,64027,31131,31441,31463,64028,31467,31646,64029,32072,32092,32183,32160,32214,32338,32583,32673,64030,33537,33634,33663,33735,33782,33864,33972,34131,34137,34155,64031,34224,64032,64033,34823,35061,35346,35383,35449,35495,35518,35551,64034,35574,35667,35711,36080,36084,36114,36214,64035,36559,64036,64037,36967,37086,64038,37141,37159,37338,37335,37342,37357,37358,37348,37349,37382,37392,37386,37434,37440,37436,37454,37465,37457,37433,37479,37543,37495,37496,37607,37591,37593,37584,64039,37589,37600,37587,37669,37665,37627,64040,37662,37631,37661,37634,37744,37719,37796,37830,37854,37880,37937,37957,37960,38290,63964,64041,38557,38575,38707,38715,38723,38733,38735,38737,38741,38999,39013,64042,64043,39207,64044,39326,39502,39641,39644,39797,39794,39823,39857,39867,39936,40304,40299,64045,40473,40657,0,0,8560,8561,8562,8563,8564,8565,8566,8567,8568,8569,65506,65508,65287,65282,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8560,8561,8562,8563,8564,8565,8566,8567,8568,8569,8544,8545,8546,8547,8548,8549,8550,8551,8552,8553,65506,65508,65287,65282,12849,8470,8481,8757,32394,35100,37704,37512,34012,20425,28859,26161,26824,37625,26363,24389,20008,20193,20220,20224,20227,20281,20310,20370,20362,20378,20372,20429,20544,20514,20479,20510,20550,20592,20546,20628,20724,20696,20810,20836,20893,20926,20972,21013,21148,21158,21184,21211,21248,21255,21284,21362,21395,21426,21469,64014,21660,21642,21673,21759,21894,22361,22373,22444,22472,22471,64015,64016,22686,22706,22795,22867,22875,22877,22883,22948,22970,23382,23488,29999,23512,23532,23582,23718,23738,23797,23847,23891,64017,23874,23917,23992,23993,24016,24353,24372,24423,24503,24542,24669,24709,24714,24798,24789,24864,24818,24849,24887,24880,24984,25107,25254,25589,25696,25757,25806,25934,26112,26133,26171,26121,26158,26142,26148,26213,26199,26201,64018,26227,26265,26272,26290,26303,26362,26382,63785,26470,26555,26706,26560,26625,26692,26831,64019,26984,64020,27032,27106,27184,27243,27206,27251,27262,27362,27364,27606,27711,27740,27782,27759,27866,27908,28039,28015,28054,28076,28111,28152,28146,28156,28217,28252,28199,28220,28351,28552,28597,28661,28677,28679,28712,28805,28843,28943,28932,29020,28998,28999,64021,29121,29182,29361,29374,29476,64022,29559,29629,29641,29654,29667,29650,29703,29685,29734,29738,29737,29742,29794,29833,29855,29953,30063,30338,30364,30366,30363,30374,64023,30534,21167,30753,30798,30820,30842,31024,64024,64025,64026,31124,64027,31131,31441,31463,64028,31467,31646,64029,32072,32092,32183,32160,32214,32338,32583,32673,64030,33537,33634,33663,33735,33782,33864,33972,34131,34137,34155,64031,34224,64032,64033,34823,35061,35346,35383,35449,35495,35518,35551,64034,35574,35667,35711,36080,36084,36114,36214,64035,36559,64036,64037,36967,37086,64038,37141,37159,37338,37335,37342,37357,37358,37348,37349,37382,37392,37386,37434,37440,37436,37454,37465,37457,37433,37479,37543,37495,37496,37607,37591,37593,37584,64039,37589,37600,37587,37669,37665,37627,64040,37662,37631,37661,37634,37744,37719,37796,37830,37854,37880,37937,37957,37960,38290,63964,64041,38557,38575,38707,38715,38723,38733,38735,38737,38741,38999,39013,64042,64043,39207,64044,39326,39502,39641,39644,39797,39794,39823,39857,39867,39936,40304,40299,64045,40473,40657,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]\n", "/*\n * Copyright (C) 2021 Klaus Reimer <k@ailis.de>\n * See LICENSE.md for licensing information.\n */\n\nimport type { ByteBuffer } from \"./ByteBuffer.ts\";\nimport type { Decoder } from \"./Decoder.ts\";\n\n/**\n * Base class for decoders.\n */\nexport abstract class AbstractDecoder implements Decoder {\n /** True to throw an exception when a character can't be decoded. False to decode to a replacement character instead. */\n protected readonly fatal: boolean;\n\n /**\n * @param fatal - True to throw an exception when a character can't be decoded. False to decode to a\n * replacement character instead.\n */\n public constructor(fatal = false) {\n this.fatal = fatal;\n }\n\n /**\n * Fails the decoding by throwing an exception (if fatal flag is true) or returning a replacement character.\n *\n * @returns Replacement character to use for the character which could not be decoded.\n * @throws TypeError - When fatal flag is set to true.\n */\n protected fail(): number {\n if (this.fatal) {\n throw new TypeError(\"Decoder error\");\n }\n return 0xFFFD;\n }\n\n /** @inheritdoc */\n public abstract decode(buffer: ByteBuffer): number | number[] | null;\n}\n", "/*\n * Copyright (C) 2021 Klaus Reimer <k@ailis.de>\n * See LICENSE.md for licensing information.\n */\n\n/** Special value returned when end of the buffer has been hit. */\nexport const END_OF_BUFFER = -1;\n\n/**\n * A byte buffer which allows bytes to be read and restored.\n */\nexport class ByteBuffer {\n /** The input bytes. */\n private readonly bytes: readonly number[] | Uint8Array;\n\n /** Current position in the input bytes. */\n private position = 0;\n\n /** Bytes which have been written back to the buffer. */\n private readonly restoredBytes: number[] = [];\n\n /**\n * Creates a new byte buffer backed by the given byte array.\n *\n * @param bytes - Array of initial bytes in the buffer.\n */\n public constructor(bytes: number[] | Uint8Array) {\n this.bytes = bytes;\n }\n\n /**\n * Checks if end of buffer has been hit.\n *\n * @returns True if end of buffer, false if not.\n */\n public isEndOfBuffer(): boolean {\n return this.position >= this.bytes.length && this.restoredBytes.length === 0;\n }\n\n /**\n * Reads the next byte from the buffer and returns it. END_OF_BUFFER is returned when there are no more bytes to\n * read.\n *\n * @returns The read byte or END_OF_BUFFER when no more bytes to read.\n */\n public read(): number {\n return this.restoredBytes.pop() ?? this.bytes[this.position++] ?? END_OF_BUFFER;\n }\n\n /**\n * Restores the specified bytes so they are returned by the next reads in the given order.\n *\n * @param bytes - The bytes to restore.\n */\n public write(...bytes: number[]): void {\n for (let index = bytes.length - 1; index >= 0; --index) {\n this.restoredBytes.push(bytes[index]);\n }\n }\n}\n", "/*\n * Copyright (C) 2021 Klaus Reimer <k@ailis.de>\n * See LICENSE.md for licensing information.\n */\n\n/** The default encoding used for encoding and decoding texts. */\nexport const DEFAULT_ENCODING = \"utf-8\";\n\n/** Value returned by decoders/encoders when finished encoding/decoding. */\nexport const FINISHED = -1;\n", "/*\n * Copyright (C) 2021 Klaus Reimer <k@ailis.de>\n * See LICENSE.md for licensing information.\n */\n\n/**\n * Checks if given value is an ASCII character. An ASCII character is a numeric value in the range\n * 0x00 to 0x7F, inclusive.\n *\n * @param value - The value to test.\n * @returns True if value is an ASCII character, false if not.\n */\nexport function isASCII(value: number): boolean {\n return value >= 0x00 && value <= 0x7F;\n}\n\n/**\n * Converts a UTF16 code unit to bytes.\n *\n * @param codeUnit - The code unit to convert\n * @param bigEndian - True if big endian, false if little endian.\n * @returns The converted bytes.\n */\nexport function convertCodeUnitToBytes(codeUnit: number, bigEndian: boolean): [ number, number ] {\n const byte1 = codeUnit >> 8;\n const byte2 = codeUnit & 0x00FF;\n return bigEndian ? [ byte1, byte2 ] : [ byte2, byte1 ];\n}\n\n/**\n * Checks if given value is within the given range.\n *\n * @param value - The value to test.\n * @param min - The minimum value in the range, inclusive.\n * @param max - The maximum value in the range, inclusive.\n * @returns True if value >= min and value <= max.\n */\nexport function inRange(value: number, min: number, max: number): boolean {\n return value >= min && value <= max;\n}\n", "/*\n * Copyright (C) 2021 Klaus Reimer <k@ailis.de>\n * See LICENSE.md for licensing information.\n */\n\nimport { AbstractEncoder } from \"../AbstractEncoder.ts\";\nimport { type ByteBuffer, END_OF_BUFFER } from \"../ByteBuffer.ts\";\nimport { FINISHED } from \"../constants.ts\";\nimport { inRange, isASCII } from \"../util.ts\";\nimport { getShiftJISPointer } from \"./JIS0208Index.ts\";\n\n/**\n * Encoder for shift_jis encoding.\n */\nexport class ShiftJISEncoder extends AbstractEncoder {\n /** @inheritdoc */\n public encode(buffer: ByteBuffer): number | number[] {\n let codePoint = buffer.read();\n if (codePoint === END_OF_BUFFER) {\n return FINISHED;\n }\n if (isASCII(codePoint) || codePoint === 0x0080) {\n return codePoint;\n }\n if (codePoint === 0x00A5) {\n return 0x5C;\n }\n if (codePoint === 0x203E) {\n return 0x7E;\n }\n if (inRange(codePoint, 0xFF61, 0xFF9F)) {\n return codePoint - 0xFF61 + 0xA1;\n }\n if (codePoint === 0x2212) {\n codePoint = 0xFF0D;\n }\n const index = getShiftJISPointer(codePoint);\n if (index == null) {\n return this.fail(codePoint);\n }\n const lead = Math.floor(index / 188);\n\n const leadOffset = (lead < 0x1F) ? 0x81 : 0xC1;\n const trail = index % 188;\n const offset = (trail < 0x3F) ? 0x40 : 0x41;\n return [ lead + leadOffset, trail + offset ];\n }\n}\n", "/*\n * Copyright (C) 2021 Klaus Reimer <k@ailis.de>\n * See LICENSE.md for licensing information.\n */\n\nimport type { ByteBuffer } from \"./ByteBuffer.ts\";\nimport type { Encoder } from \"./Encoder.ts\";\n\nexport const NO_TRAILING_BYTES: readonly number[] = [];\n\n/**\n * Base class for encoders.\n */\nexport abstract class AbstractEncoder implements Encoder {\n /** @inheritdoc */\n public getTrailingBytes(): readonly number[] {\n return NO_TRAILING_BYTES;\n }\n\n /** @inheritdoc */\n public abstract encode(buffer: ByteBuffer): number | number[];\n\n /**\n * Fails the encoding by throwing an exception\n *\n * @param codePoint - The code point which could not be encoded.\n */\n protected fail(codePoint: number): never {\n throw new TypeError(`The code point ${codePoint} could not be encoded`);\n }\n}\n", "/*\n * Copyright (C) 2021 Klaus Reimer <k@ailis.de>\n * See LICENSE.md for licensing information.\n */\n\nimport jis0208 from \"../../../data/jis0208.cp.js\";\nimport { CodePointIndex } from \"./CodePointIndex.ts\";\n\nconst SHIFT_JIS_EXCLUDED_POINTERS = [ 8272, 8835 ] as const;\n\nlet jis0208Index: CodePointIndex | null = null;\nlet shiftJISIndex: CodePointIndex | null = null;\n\n/**\n * Returns the JIS0208 pointer for the given code point.\n *\n * @param codePoint - Code point to look up.\n * @returns The pointer or null if the code point is not indexed.\n */\nexport function getJIS0208Pointer(codePoint: number): number | null {\n jis0208Index ??= new CodePointIndex(jis0208);\n return jis0208Index.get(codePoint);\n}\n\n/**\n * Returns the Shift_JIS pointer for the given code point.\n *\n * @param codePoint - Code point to look up.\n * @returns The pointer or null if the code point is not indexed.\n */\nexport function getShiftJISPointer(codePoint: number): number | null {\n shiftJISIndex ??= new CodePointIndex(jis0208, 0, SHIFT_JIS_EXCLUDED_POINTERS);\n return shiftJISIndex.get(codePoint);\n}\n", "/*\n * Copyright (C) 2021 Klaus Reimer <k@ailis.de>\n * See LICENSE.md for licensing information.\n */\n\n/** Reverse index from Unicode code points to encoding pointers. */\nexport class CodePointIndex {\n private readonly bmp = new Uint16Array(0x10000);\n private readonly supplementary: Map<number, number> | null = null;\n\n /**\n * Creates a reverse index for the given code point table.\n *\n * @param codePoints - Code point table to index.\n * @param start - First table pointer to include.\n * @param excludedRange - Optional inclusive table pointer range to exclude.\n */\n public constructor(codePoints: readonly number[], start = 0, excludedRange?: readonly [ number, number ]) {\n for (let pointer = start; pointer < codePoints.length; ++pointer) {\n const codePoint = codePoints[pointer];\n if (codePoint === 0 || (excludedRange != null && pointer >= excludedRange[0] && pointer <= excludedRange[1])) {\n continue;\n }\n if (codePoint <= 0xFFFF) {\n if (this.bmp[codePoint] === 0) {\n this.bmp[codePoint] = pointer + 1;\n }\n } else {\n this.supplementary ??= new Map<number, number>();\n if (!this.supplementary.has(codePoint)) {\n this.supplementary.set(codePoint, pointer);\n }\n }\n }\n }\n\n /**\n * Overrides the pointer for the given BMP code point.\n *\n * @param codePoint - BMP code point to override.\n * @param pointer - Table pointer to store.\n */\n public setBMP(codePoint: number, pointer: number): void {\n this.bmp[codePoint] = pointer + 1;\n }\n\n /**\n * Returns the pointer for the given code point.\n *\n * @param codePoint - Code point to look up.\n * @returns The pointer or null if the code point is not indexed.\n */\n public get(codePoint: number): number | null {\n if (codePoint <= 0xFFFF) {\n const pointer = this.bmp[codePoint];\n return pointer === 0 ? null : pointer - 1;\n }\n return this.supplementary?.get(codePoint) ?? null;\n }\n}\n", "/*\n * Copyright (C) 2021 Klaus Reimer <k@ailis.de>\n * See LICENSE.md for licensing information.\n */\n\nimport type { Decoder, DecoderConstructor } from \"./Decoder.ts\";\nimport type { Encoder, EncoderConstructor } from \"./Encoder.ts\";\n\n/** Map with registered encodings. Map key is any lower-cased encoding label. */\nconst encodings = new Map<string, Encoding>();\n\n/**\n * Registers an encoding.\n *\n * @param name - The encoding name.\n * @param labels - The list of encoding labels.\n * @param decoder - The constructor of the decoder which can decode this encoding.\n * @param encoder - The constructor of the encoder which can encode this encoding.\n * @returns The created and registered encoding.\n */\nexport function registerEncoding(name: string, labels: readonly string[], decoder: DecoderConstructor,\n encoder: EncoderConstructor): Encoding {\n const encoding = new Encoding(name, decoder, encoder);\n for (const label of labels) {\n encodings.set(label, encoding);\n }\n return encoding;\n}\n\n/**\n * Returns the encoding for the specified label.\n *\n * @param label - The label of the encoding to look for.\n * @returns The found encoding.\n * @throws RangeError - When encoding was not found.\n */\nexport function getEncoding(label: string): Encoding {\n const encoding = encodings.get(label.trim().toLowerCase());\n if (encoding == null) {\n throw new RangeError(`Encoding not supported: ${label}`);\n }\n return encoding;\n}\n\n/**\n * Encoding.\n */\nexport class Encoding {\n /** The encoding name. */\n private readonly name: string;\n\n /** The constructor of the decoder which can decode this encoding. */\n private readonly decoder: DecoderConstructor;\n\n /** The constructor of the encoder which can encode this encoding. */\n private readonly encoder: EncoderConstructor;\n\n /**\n * Creates a new encoding.\n *\n * @param name - The encoding name.\n * @param decoder - The constructor of the decoder which can decode this encoding.\n * @param encoder - The constructor of the encoder which can encode this encoding.\n */\n public constructor(name: string, decoder: DecoderConstructor, encoder: EncoderConstructor) {\n this.name = name;\n this.decoder = decoder;\n this.encoder = encoder;\n }\n\n /**\n * Returns the encoding name.\n *\n * @returns The encoding name.\n */\n public getName(): string {\n return this.name;\n }\n\n /**\n * Creates a new decoder for this encoding.\n *\n * @param fatal - True to throw exception on decoding errors, false to use replacement characters instead for\n * characters which can't be decoded.\n * @returns The created decoder.\n */\n public createDecoder(fatal?: boolean): Decoder {\n return new this.decoder(fatal);\n }\n\n /**\n * Creates a new encoder for this encoding.\n *\n * @returns The created encoder.\n */\n public createEncoder(): Encoder {\n return new this.encoder();\n }\n}\n", "/*\n * Copyright (C) 2021 Klaus Reimer <k@ailis.de>\n * See LICENSE.md for licensing information.\n */\n\nimport { GBDecoder } from \"../decoders/GBDecoder.ts\";\nimport { GBKEncoder } from \"../encoders/GBEncoder.ts\";\nimport { registerEncoding } from \"../Encoding.ts\";\n\nregisterEncoding(\n \"gbk\",\n [\n \"chinese\",\n \"csgb2312\",\n \"csiso58gb231280\",\n \"gb2312\",\n \"gb_2312\",\n \"gb_2312-80\",\n \"gbk\",\n \"iso-ir-58\",\n \"x-gbk\"\n ],\n GBDecoder,\n GBKEncoder\n);\n", "/*\n * Copyright (C) 2021 Klaus Reimer <k@ailis.de>\n * See LICENSE.md for licensing information.\n */\n\nimport gb18030 from \"../../../data/gb18030.cp.js\";\nimport gb18030ranges from \"../../../data/gb18030.ranges.js\";\nimport { AbstractDecoder } from \"../AbstractDecoder.ts\";\nimport { type ByteBuffer, END_OF_BUFFER } from \"../ByteBuffer.ts\";\nimport { FINISHED } from \"../constants.ts\";\nimport { inRange, isASCII } from \"../util.ts\";\n\n/**\n * Returns the code point for the given gb18030 index.\n *\n * @param index - The index in the gb18030 code point table.\n * @returns The code point corresponding to the given index.\n */\nfunction getCodePoint(index: number): number | null {\n if ((index > 39419 && index < 189000) || (index > 1237575)) {\n return null;\n }\n if (index >= 189000) {\n return 0x10000 + index - 189000;\n }\n if (index === 7457) {\n return 0xE7C7;\n }\n\n let lower = 0;\n let upper = gb18030ranges.length - 1;\n while (lower < upper) {\n const middle = (lower + upper + 1) >> 1;\n if (gb18030ranges[middle][0] <= index) {\n lower = middle;\n } else {\n upper = middle - 1;\n }\n }\n const [ pointerOffset, codePointOffset ] = gb18030ranges[lower];\n return codePointOffset + index - pointerOffset;\n}\n\n/**\n * Decoder for gb18030 and gbk encoding.\n */\nexport class GBDecoder extends AbstractDecoder {\n private first = 0x00;\n private second = 0x00;\n private third = 0x00;\n\n /**\n * Decodes a byte while a multi-byte sequence is pending.\n *\n * @param buffer - The byte buffer to decode.\n * @param byte - The byte to decode.\n * @returns The decoded code point, or null if more bytes are needed.\n */\n private decodePending(buffer: ByteBuffer, byte: number): number | null {\n if (this.third !== 0x00) {\n if (!inRange(byte, 0x30, 0x39)) {\n buffer.write(this.second, this.third, byte);\n this.first = 0x00;\n this.second = 0x00;\n this.third = 0x00;\n return this.fail();\n }\n const codePoint = getCodePoint((((this.first - 0x81) * 10 + this.second - 0x30) * 126 + this.third - 0x81)\n * 10 + byte - 0x30);\n this.first = 0x00;\n this.second = 0x00;\n this.third = 0x00;\n return codePoint ?? this.fail();\n }\n if (this.second !== 0x00) {\n if (inRange(byte, 0x81, 0xFE)) {\n this.third = byte;\n return null;\n }\n buffer.write(this.second, byte);\n this.first = 0x00;\n this.second = 0x00;\n return this.fail();\n }\n if (inRange(byte, 0x30, 0x39)) {\n this.second = byte;\n return null;\n }\n const lead = this.first;\n this.first = 0x00;\n if (inRange(byte, 0x40, 0x7E) || inRange(byte, 0x80, 0xFE)) {\n const offset = byte < 0x7F ? 0x40 : 0x41;\n return gb18030[(lead - 0x81) * 190 + (byte - offset)];\n }\n if (isASCII(byte)) {\n buffer.write(byte);\n }\n return this.fail();\n }\n\n /** @inheritdoc */\n public decode(buffer: ByteBuffer): number | number[] | null {\n const byte = buffer.read();\n if (byte === END_OF_BUFFER) {\n if (this.first === 0x00) {\n return FINISHED;\n }\n this.first = 0x00;\n this.second = 0x00;\n this.third = 0x00;\n return this.fail();\n }\n if (this.first !== 0x00) {\n return this.decodePending(buffer, byte);\n }\n if (isASCII(byte)) {\n return byte;\n }\n if (byte === 0x80) {\n return 0x20AC;\n }\n if (inRange(byte, 0x81, 0xFE)) {\n this.first = byte;\n return null;\n }\n return this.fail();\n }\n}\n", "export default [19970,19972,19973,19974,19983,19986,19991,19999,20000,20001,20003,20006,20009,20014,20015,20017,20019,20021,20023,20028,20032,20033,20034,20036,20038,20042,20049,20053,20055,20058,20059,20066,20067,20068,20069,20071,20072,20074,20075,20076,20077,20078,20079,20082,20084,20085,20086,20087,20088,20089,20090,20091,20092,20093,20095,20096,20097,20098,20099,20100,20101,20103,20106,20112,20118,20119,20121,20124,20125,20126,20131,20138,20143,20144,20145,20148,20150,20151,20152,20153,20156,20157,20158,20168,20172,20175,20176,20178,20186,20187,20188,20192,20194,20198,20199,20201,20205,20206,20207,20209,20212,20216,20217,20218,20220,20222,20224,20226,20227,20228,20229,20230,20231,20232,20235,20236,20242,20243,20244,20245,20246,20252,20253,20257,20259,20264,20265,20268,20269,20270,20273,20275,20277,20279,20281,20283,20286,20287,20288,20289,20290,20292,20293,20295,20296,20297,20298,20299,20300,20306,20308,20310,20321,20322,20326,20328,20330,20331,20333,20334,20337,20338,20341,20343,20344,20345,20346,20349,20352,20353,20354,20357,20358,20359,20362,20364,20366,20368,20370,20371,20373,20374,20376,20377,20378,20380,20382,20383,20385,20386,20388,20395,20397,20400,20401,20402,20403,20404,20406,20407,20408,20409,20410,20411,20412,20413,20414,20416,20417,20418,20422,20423,20424,20425,20427,20428,20429,20434,20435,20436,20437,20438,20441,20443,20448,20450,20452,20453,20455,20459,20460,20464,20466,20468,20469,20470,20471,20473,20475,20476,20477,20479,20480,20481,20482,20483,20484,20485,20486,20487,20488,20489,20490,20491,20494,20496,20497,20499,20501,20502,20503,20507,20509,20510,20512,20514,20515,20516,20519,20523,20527,20528,20529,20530,20531,20532,20533,20534,20535,20536,20537,20539,20541,20543,20544,20545,20546,20548,20549,20550,20553,20554,20555,20557,20560,20561,20562,20563,20564,20566,20567,20568,20569,20571,20573,20574,20575,20576,20577,20578,20579,20580,20582,20583,20584,20585,20586,20587,20589,20590,20591,20592,20593,20594,20595,20596,20597,20600,20601,20602,20604,20605,20609,20610,20611,20612,20614,20615,20617,20618,20619,20620,20622,20623,20624,20625,20626,20627,20628,20629,20630,20631,20632,20633,20634,20635,20636,20637,20638,20639,20640,20641,20642,20644,20646,20650,20651,20653,20654,20655,20656,20657,20659,20660,20661,20662,20663,20664,20665,20668,20669,20670,20671,20672,20673,20674,20675,20676,20677,20678,20679,20680,20681,20682,20683,20684,20685,20686,20688,20689,20690,20691,20692,20693,20695,20696,20697,20699,20700,20701,20702,20703,20704,20705,20706,20707,20708,20709,20712,20713,20714,20715,20719,20720,20721,20722,20724,20726,20727,20728,20729,20730,20732,20733,20734,20735,20736,20737,20738,20739,20740,20741,20744,20745,20746,20748,20749,20750,20751,20752,20753,20755,20756,20757,20758,20759,20760,20761,20762,20763,20764,20765,20766,20767,20768,20770,20771,20772,20773,20774,20775,20776,20777,20778,20779,20780,20781,20782,20783,20784,20785,20786,20787,20788,20789,20790,20791,20792,20793,20794,20795,20796,20797,20798,20802,20807,20810,20812,20814,20815,20816,20818,20819,20823,20824,20825,20827,20829,20830,20831,20832,20833,20835,20836,20838,20839,20841,20842,20847,20850,20858,20862,20863,20867,20868,20870,20871,20874,20875,20878,20879,20880,20881,20883,20884,20888,20890,20893,20894,20895,20897,20899,20902,20903,20904,20905,20906,20909,20910,20916,20920,20921,20922,20926,20927,20929,20930,20931,20933,20936,20938,20941,20942,20944,20946,20947,20948,20949,20950,20951,20952,20953,20954,20956,20958,20959,20962,20963,20965,20966,20967,20968,20969,20970,20972,20974,20977,20978,20980,20983,20990,20996,20997,21001,21003,21004,21007,21008,21011,21012,21013,21020,21022,21023,21025,21026,21027,21029,21030,21031,21034,21036,21039,21041,21042,21044,21045,21052,21054,21060,21061,21062,21063,21064,21065,21067,21070,21071,21074,21075,21077,21079,21080,21081,21082,21083,21085,21087,21088,21090,21091,21092,21094,21096,21099,21100,21101,21102,21104,21105,21107,21108,21109,21110,21111,21112,21113,21114,21115,21116,21118,21120,21123,21124,21125,21126,21127,21129,21130,21131,21132,21133,21134,21135,21137,21138,21140,21141,21142,21143,21144,21145,21146,21148,21156,21157,21158,21159,21166,21167,21168,21172,21173,21174,21175,21176,21177,21178,21179,21180,21181,21184,21185,21186,21188,21189,21190,21192,21194,21196,21197,21198,21199,21201,21203,21204,21205,21207,21209,21210,21211,21212,21213,21214,21216,21217,21218,21219,21221,21222,21223,21224,21225,21226,21227,21228,21229,21230,21231,21233,21234,21235,21236,21237,21238,21239,21240,21243,21244,21245,21249,21250,21251,21252,21255,21257,21258,21259,21260,21262,21265,21266,21267,21268,21272,21275,21276,21278,21279,21282,21284,21285,21287,21288,21289,21291,21292,21293,21295,21296,21297,21298,21299,21300,21301,21302,21303,21304,21308,21309,21312,21314,21316,21318,21323,21324,21325,21328,21332,21336,21337,21339,21341,21349,21352,21354,21356,21357,21362,21366,21369,21371,21372,21373,21374,21376,21377,21379,21383,21384,21386,21390,21391,21392,21393,21394,21395,21396,21398,21399,21401,21403,21404,21406,21408,21409,21412,21415,21418,21419,21420,21421,21423,21424,21425,21426,21427,21428,21429,21431,21432,21433,21434,21436,21437,21438,21440,21443,21444,21445,21446,21447,21454,21455,21456,21458,21459,21461,21466,21468,21469,21470,21473,21474,21479,21492,21498,21502,21503,21504,21506,21509,21511,21515,21524,21528,21529,21530,21532,21538,21540,21541,21546,21552,21555,21558,21559,21562,21565,21567,21569,21570,21572,21573,21575,21577,21580,21581,21582,21583,21585,21594,21597,21598,21599,21600,21601,21603,21605,21607,21609,21610,21611,21612,21613,21614,21615,21616,21620,21625,21626,21630,21631,21633,21635,21637,21639,21640,21641,21642,21645,21649,21651,21655,21656,21660,21662,21663,21664,21665,21666,21669,21678,21680,21682,21685,21686,21687,21689,21690,21692,21694,21699,21701,21706,21707,21718,21720,21723,21728,21729,21730,21731,21732,21739,21740,21743,21744,21745,21748,21749,21750,21751,21752,21753,21755,21758,21760,21762,21763,21764,21765,21768,21770,21771,21772,21773,21774,21778,21779,21781,21782,21783,21784,21785,21786,21788,21789,21790,21791,21793,21797,21798,21800,21801,21803,21805,21810,21812,21813,21814,21816,21817,21818,21819,21821,21824,21826,21829,21831,21832,21835,21836,21837,21838,21839,21841,21842,21843,21844,21847,21848,21849,21850,21851,21853,21854,21855,21856,21858,21859,21864,21865,21867,21871,21872,21873,21874,21875,21876,21881,21882,21885,21887,21893,21894,21900,21901,21902,21904,21906,21907,21909,21910,21911,21914,21915,21918,21920,21921,21922,21923,21924,21925,21926,21928,21929,21930,21931,21932,21933,21934,21935,21936,21938,21940,21942,21944,21946,21948,21951,21952,21953,21954,21955,21958,21959,21960,21962,21963,21966,21967,21968,21973,21975,21976,21977,21978,21979,21982,21984,21986,21991,21993,21997,21998,22000,22001,22004,22006,22008,22009,22010,22011,22012,22015,22018,22019,22020,22021,22022,22023,22026,22027,22029,22032,22033,22034,22035,22036,22037,22038,22039,22041,22042,22044,22045,22048,22049,22050,22053,22054,22056,22057,22058,22059,22062,22063,22064,22067,22069,22071,22072,22074,22076,22077,22078,22080,22081,22082,22083,22084,22085,22086,22087,22088,22089,22090,22091,22095,22096,22097,22098,22099,22101,22102,22106,22107,22109,22110,22111,22112,22113,22115,22117,22118,22119,22125,22126,22127,22128,22130,22131,22132,22133,22135,22136,22137,22138,22141,22142,22143,22144,22145,22146,22147,22148,22151,22152,22153,22154,22155,22156,22157,22160,22161,22162,22164,22165,22166,22167,22168,22169,22170,22171,22172,22173,22174,22175,22176,22177,22178,22180,22181,22182,22183,22184,22185,22186,22187,22188,22189,22190,22192,22193,22194,22195,22196,22197,22198,22200,22201,22202,22203,22205,22206,22207,22208,22209,22210,22211,22212,22213,22214,22215,22216,22217,22219,22220,22221,22222,22223,22224,22225,22226,22227,22229,22230,22232,22233,22236,22243,22245,22246,22247,22248,22249,22250,22252,22254,22255,22258,22259,22262,22263,22264,22267,22268,22272,22273,22274,22277,22279,22283,22284,22285,22286,22287,22288,22289,22290,22291,22292,22293,22294,22295,22296,22297,22298,22299,22301,22302,22304,22305,22306,22308,22309,22310,22311,22315,22321,22322,22324,22325,22326,22327,22328,22332,22333,22335,22337,22339,22340,22341,22342,22344,22345,22347,22354,22355,22356,22357,22358,22360,22361,22370,22371,22373,22375,22380,22382,22384,22385,22386,22388,22389,22392,22393,22394,22397,22398,22399,22400,22401,22407,22408,22409,22410,22413,22414,22415,22416,22417,22420,22421,22422,22423,22424,22425,22426,22428,22429,22430,22431,22437,22440,22442,22444,22447,22448,22449,22451,22453,22454,22455,22457,22458,22459,22460,22461,22462,22463,22464,22465,22468,22469,22470,22471,22472,22473,22474,22476,22477,22480,22481,22483,22486,22487,22491,22492,22494,22497,22498,22499,22501,22502,22503,22504,22505,22506,22507,22508,22510,22512,22513,22514,22515,22517,22518,22519,22523,22524,22526,22527,22529,22531,22532,22533,22536,22537,22538,22540,22542,22543,22544,22546,22547,22548,22550,22551,22552,22554,22555,22556,22557,22559,22562,22563,22565,22566,22567,22568,22569,22571,22572,22573,22574,22575,22577,22578,22579,22580,22582,22583,22584,22585,22586,22587,22588,22589,22590,22591,22592,22593,22594,22595,22597,22598,22599,22600,22601,22602,22603,22606,22607,22608,22610,22611,22613,22614,22615,22617,22618,22619,22620,22621,22623,22624,22625,22626,22627,22628,22630,22631,22632,22633,22634,22637,22638,22639,22640,22641,22642,22643,22644,22645,22646,22647,22648,22649,22650,22651,22652,22653,22655,22658,22660,22662,22663,22664,22666,22667,22668,22669,22670,22671,22672,22673,22676,22677,22678,22679,22680,22683,22684,22685,22688,22689,22690,22691,22692,22693,22694,22695,22698,22699,22700,22701,22702,22703,22704,22705,22706,22707,22708,22709,22710,22711,22712,22713,22714,22715,22717,22718,22719,22720,22722,22723,22724,22726,22727,22728,22729,22730,22731,22732,22733,22734,22735,22736,22738,22739,22740,22742,22743,22744,22745,22746,22747,22748,22749,22750,22751,22752,22753,22754,22755,22757,22758,22759,22760,22761,22762,22765,22767,22769,22770,22772,22773,22775,22776,22778,22779,22780,22781,22782,22783,22784,22785,22787,22789,22790,22792,22793,22794,22795,22796,22798,22800,22801,22802,22803,22807,22808,22811,22813,22814,22816,22817,22818,22819,22822,22824,22828,22832,22834,22835,22837,22838,22843,22845,22846,22847,22848,22851,22853,22854,22858,22860,22861,22864,22866,22867,22873,22875,22876,22877,22878,22879,22881,22883,22884,22886,22887,22888,22889,22890,22891,22892,22893,22894,22895,22896,22897,22898,22901,22903,22906,22907,22908,22910,22911,22912,22917,22921,22923,22924,22926,22927,22928,22929,22932,22933,22936,22938,22939,22940,22941,22943,22944,22945,22946,22950,22951,22956,22957,22960,22961,22963,22964,22965,22966,22967,22968,22970,22972,22973,22975,22976,22977,22978,22979,22980,22981,22983,22984,22985,22988,22989,22990,22991,22997,22998,23001,23003,23006,23007,23008,23009,23010,23012,23014,23015,23017,23018,23019,23021,23022,23023,23024,23025,23026,23027,23028,23029,23030,23031,23032,23034,23036,23037,23038,23040,23042,23050,23051,23053,23054,23055,23056,23058,23060,23061,23062,23063,23065,23066,23067,23069,23070,23073,23074,23076,23078,23079,23080,23082,23083,23084,23085,23086,23087,23088,23091,23093,23095,23096,23097,23098,23099,23101,23102,23103,23105,23106,23107,23108,23109,23111,23112,23115,23116,23117,23118,23119,23120,23121,23122,23123,23124,23126,23127,23128,23129,23131,23132,23133,23134,23135,23136,23137,23139,23140,23141,23142,23144,23145,23147,23148,23149,23150,23151,23152,23153,23154,23155,23160,23161,23163,23164,23165,23166,23168,23169,23170,23171,23172,23173,23174,23175,23176,23177,23178,23179,23180,23181,23182,23183,23184,23185,23187,23188,23189,23190,23191,23192,23193,23196,23197,23198,23199,23200,23201,23202,23203,23204,23205,23206,23207,23208,23209,23211,23212,23213,23214,23215,23216,23217,23220,23222,23223,23225,23226,23227,23228,23229,23231,23232,23235,23236,23237,23238,23239,23240,23242,23243,23245,23246,23247,23248,23249,23251,23253,23255,23257,23258,23259,23261,23262,23263,23266,23268,23269,23271,23272,23274,23276,23277,23278,23279,23280,23282,23283,23284,23285,23286,23287,23288,23289,23290,23291,23292,23293,23294,23295,23296,23297,23298,23299,23300,23301,23302,23303,23304,23306,23307,23308,23309,23310,23311,23312,23313,23314,23315,23316,23317,23320,23321,23322,23323,23324,23325,23326,23327,23328,23329,23330,23331,23332,23333,23334,23335,23336,23337,23338,23339,23340,23341,23342,23343,23344,23345,23347,23349,23350,23352,23353,23354,23355,23356,23357,23358,23359,23361,23362,23363,23364,23365,23366,23367,23368,23369,23370,23371,23372,23373,23374,23375,23378,23382,23390,23392,23393,23399,23400,23403,23405,23406,23407,23410,23412,23414,23415,23416,23417,23419,23420,23422,23423,23426,23430,23434,23437,23438,23440,23441,23442,23444,23446,23455,23463,23464,23465,23468,23469,23470,23471,23473,23474,23479,23482,23483,23484,23488,23489,23491,23496,23497,23498,23499,23501,23502,23503,23505,23508,23509,23510,23511,23512,23513,23514,23515,23516,23520,23522,23523,23526,23527,23529,23530,23531,23532,23533,23535,23537,23538,23539,23540,23541,23542,23543,23549,23550,23552,23554,23555,23557,23559,23560,23563,23564,23565,23566,23568,23570,23571,23575,23577,23579,23582,23583,23584,23585,23587,23590,23592,23593,23594,23595,23597,23598,23599,23600,23602,23603,23605,23606,23607,23619,23620,23622,23623,23628,23629,23634,23635,23636,23638,23639,23640,23642,23643,23644,23645,23647,23650,23652,23655,23656,23657,23658,23659,23660,23661,23664,23666,23667,23668,23669,23670,23671,23672,23675,23676,23677,23678,23680,23683,23684,23685,23686,23687,23689,23690,23691,23694,23695,23698,23699,23701,23709,23710,23711,23712,23713,23716,23717,23718,23719,23720,23722,23726,23727,23728,23730,23732,23734,23737,23738,23739,23740,23742,23744,23746,23747,23749,23750,23751,23752,23753,23754,23756,23757,23758,23759,23760,23761,23763,23764,23765,23766,23767,23768,23770,23771,23772,23773,23774,23775,23776,23778,23779,23783,23785,23787,23788,23790,23791,23793,23794,23795,23796,23797,23798,23799,23800,23801,23802,23804,23805,23806,23807,23808,23809,23812,23813,23816,23817,23818,23819,23820,23821,23823,23824,23825,23826,23827,23829,23831,23832,23833,23834,23836,23837,23839,23840,23841,23842,23843,23845,23848,23850,23851,23852,23855,23856,23857,23858,23859,23861,23862,23863,23864,23865,23866,23867,23868,23871,23872,23873,23874,23875,23876,23877,23878,23880,23881,23885,23886,23887,23888,23889,23890,23891,23892,23893,23894,23895,23897,23898,23900,23902,23903,23904,23905,23906,23907,23908,23909,23910,23911,23912,23914,23917,23918,23920,23921,23922,23923,23925,23926,23927,23928,23929,23930,23931,23932,23933,23934,23935,23936,23937,23939,23940,23941,23942,23943,23944,23945,23946,23947,23948,23949,23950,23951,23952,23953,23954,23955,23956,23957,23958,23959,23960,23962,23963,23964,23966,23967,23968,23969,23970,23971,23972,23973,23974,23975,23976,23977,23978,23979,23980,23981,23982,23983,23984,23985,23986,23987,23988,23989,23990,23992,23993,23994,23995,23996,23997,23998,23999,24000,24001,24002,24003,24004,24006,24007,24008,24009,24010,24011,24012,24014,24015,24016,24017,24018,24019,24020,24021,24022,24023,24024,24025,24026,24028,24031,24032,24035,24036,24042,24044,24045,24048,24053,24054,24056,24057,24058,24059,24060,24063,24064,24068,24071,24073,24074,24075,24077,24078,24082,24083,24087,24094,24095,24096,24097,24098,24099,24100,24101,24104,24105,24106,24107,24108,24111,24112,24114,24115,24116,24117,24118,24121,24122,24126,24127,24128,24129,24131,24134,24135,24136,24137,24138,24139,24141,24142,24143,24144,24145,24146,24147,24150,24151,24152,24153,24154,24156,24157,24159,24160,24163,24164,24165,24166,24167,24168,24169,24170,24171,24172,24173,24174,24175,24176,24177,24181,24183,24185,24190,24193,24194,24195,24197,24200,24201,24204,24205,24206,24210,24216,24219,24221,24225,24226,24227,24228,24232,24233,24234,24235,24236,24238,24239,24240,24241,24242,24244,24250,24251,24252,24253,24255,24256,24257,24258,24259,24260,24261,24262,24263,24264,24267,24268,24269,24270,24271,24272,24276,24277,24279,24280,24281,24282,24284,24285,24286,24287,24288,24289,24290,24291,24292,24293,24294,24295,24297,24299,24300,24301,24302,24303,24304,24305,24306,24307,24309,24312,24313,24315,24316,24317,24325,24326,24327,24329,24332,24333,24334,24336,24338,24340,24342,24345,24346,24348,24349,24350,24353,24354,24355,24356,24360,24363,24364,24366,24368,24370,24371,24372,24373,24374,24375,24376,24379,24381,24382,24383,24385,24386,24387,24388,24389,24390,24391,24392,24393,24394,24395,24396,24397,24398,24399,24401,24404,24409,24410,24411,24412,24414,24415,24416,24419,24421,24423,24424,24427,24430,24431,24434,24436,24437,24438,24440,24442,24445,24446,24447,24451,24454,24461,24462,24463,24465,24467,24468,24470,24474,24475,24477,24478,24479,24480,24482,24483,24484,24485,24486,24487,24489,24491,24492,24495,24496,24497,24498,24499,24500,24502,24504,24505,24506,24507,24510,24511,24512,24513,24514,24519,24520,24522,24523,24526,24531,24532,24533,24538,24539,24540,24542,24543,24546,24547,24549,24550,24552,24553,24556,24559,24560,24562,24563,24564,24566,24567,24569,24570,24572,24583,24584,24585,24587,24588,24592,24593,24595,24599,24600,24602,24606,24607,24610,24611,24612,24620,24621,24622,24624,24625,24626,24627,24628,24630,24631,24632,24633,24634,24637,24638,24640,24644,24645,24646,24647,24648,24649,24650,24652,24654,24655,24657,24659,24660,24662,24663,24664,24667,24668,24670,24671,24672,24673,24677,24678,24686,24689,24690,24692,24693,24695,24702,24704,24705,24706,24709,24710,24711,24712,24714,24715,24718,24719,24720,24721,24723,24725,24727,24728,24729,24732,24734,24737,24738,24740,24741,24743,24745,24746,24750,24752,24755,24757,24758,24759,24761,24762,24765,24766,24767,24768,24769,24770,24771,24772,24775,24776,24777,24780,24781,24782,24783,24784,24786,24787,24788,24790,24791,24793,24795,24798,24801,24802,24803,24804,24805,24810,24817,24818,24821,24823,24824,24827,24828,24829,24830,24831,24834,24835,24836,24837,24839,24842,24843,24844,24848,24849,24850,24851,24852,24854,24855,24856,24857,24859,24860,24861,24862,24865,24866,24869,24872,24873,24874,24876,24877,24878,24879,24880,24881,24882,24883,24884,24885,24886,24887,24888,24889,24890,24891,24892,24893,24894,24896,24897,24898,24899,24900,24901,24902,24903,24905,24907,24909,24911,24912,24914,24915,24916,24918,24919,24920,24921,24922,24923,24924,24926,24927,24928,24929,24931,24932,24933,24934,24937,24938,24939,24940,24941,24942,24943,24945,24946,24947,24948,24950,24952,24953,24954,24955,24956,24957,24958,24959,24960,24961,24962,24963,24964,24965,24966,24967,24968,24969,24970,24972,24973,24975,24976,24977,24978,24979,24981,24982,24983,24984,24985,24986,24987,24988,24990,24991,24992,24993,24994,24995,24996,24997,24998,25002,25003,25005,25006,25007,25008,25009,25010,25011,25012,25013,25014,25016,25017,25018,25019,25020,25021,25023,25024,25025,25027,25028,25029,25030,25031,25033,25036,25037,25038,25039,25040,25043,25045,25046,25047,25048,25049,25050,25051,25052,25053,25054,25055,25056,25057,25058,25059,25060,25061,25063,25064,25065,25066,25067,25068,25069,25070,25071,25072,25073,25074,25075,25076,25078,25079,25080,25081,25082,25083,25084,25085,25086,25088,25089,25090,25091,25092,25093,25095,25097,25107,25108,25113,25116,25117,25118,25120,25123,25126,25127,25128,25129,25131,25133,25135,25136,25137,25138,25141,25142,25144,25145,25146,25147,25148,25154,25156,25157,25158,25162,25167,25168,25173,25174,25175,25177,25178,25180,25181,25182,25183,25184,25185,25186,25188,25189,25192,25201,25202,25204,25205,25207,25208,25210,25211,25213,25217,25218,25219,25221,25222,25223,25224,25227,25228,25229,25230,25231,25232,25236,25241,25244,25245,25246,25251,25254,25255,25257,25258,25261,25262,25263,25264,25266,25267,25268,25270,25271,25272,25274,25278,25280,25281,25283,25291,25295,25297,25301,25309,25310,25312,25313,25316,25322,25323,25328,25330,25333,25336,25337,25338,25339,25344,25347,25348,25349,25350,25354,25355,25356,25357,25359,25360,25362,25363,25364,25365,25367,25368,25369,25372,25382,25383,25385,25388,25389,25390,25392,25393,25395,25396,25397,25398,25399,25400,25403,25404,25406,25407,25408,25409,25412,25415,25416,25418,25425,25426,25427,25428,25430,25431,25432,25433,25434,25435,25436,25437,25440,25444,25445,25446,25448,25450,25451,25452,25455,25456,25458,25459,25460,25461,25464,25465,25468,25469,25470,25471,25473,25475,25476,25477,25478,25483,25485,25489,25491,25492,25493,25495,25497,25498,25499,25500,25501,25502,25503,25505,25508,25510,25515,25519,25521,25522,25525,25526,25529,25531,25533,25535,25536,25537,25538,25539,25541,25543,25544,25546,25547,25548,25553,25555,25556,25557,25559,25560,25561,25562,25563,25564,25565,25567,25570,25572,25573,25574,25575,25576,25579,25580,25582,25583,25584,25585,25587,25589,25591,25593,25594,25595,25596,25598,25603,25604,25606,25607,25608,25609,25610,25613,25614,25617,25618,25621,25622,25623,25624,25625,25626,25629,25631,25634,25635,25636,25637,25639,25640,25641,25643,25646,25647,25648,25649,25650,25651,25653,25654,25655,25656,25657,25659,25660,25662,25664,25666,25667,25673,25675,25676,25677,25678,25679,25680,25681,25683,25685,25686,25687,25689,25690,25691,25692,25693,25695,25696,25697,25698,25699,25700,25701,25702,25704,25706,25707,25708,25710,25711,25712,25713,25714,25715,25716,25717,25718,25719,25723,25724,25725,25726,25727,25728,25729,25731,25734,25736,25737,25738,25739,25740,25741,25742,25743,25744,25747,25748,25751,25752,25754,25755,25756,25757,25759,25760,25761,25762,25763,25765,25766,25767,25768,25770,25771,25775,25777,25778,25779,25780,25782,25785,25787,25789,25790,25791,25793,25795,25796,25798,25799,25800,25801,25802,25803,25804,25807,25809,25811,25812,25813,25814,25817,25818,25819,25820,25821,25823,25824,25825,25827,25829,25831,25832,25833,25834,25835,25836,25837,25838,25839,25840,25841,25842,25843,25844,25845,25846,25847,25848,25849,25850,25851,25852,25853,25854,25855,25857,25858,25859,25860,25861,25862,25863,25864,25866,25867,25868,25869,25870,25871,25872,25873,25875,25876,25877,25878,25879,25881,25882,25883,25884,25885,25886,25887,25888,25889,25890,25891,25892,25894,25895,25896,25897,25898,25900,25901,25904,25905,25906,25907,25911,25914,25916,25917,25920,25921,25922,25923,25924,25926,25927,25930,25931,25933,25934,25936,25938,25939,25940,25943,25944,25946,25948,25951,25952,25953,25956,25957,25959,25960,25961,25962,25965,25966,25967,25969,25971,25973,25974,25976,25977,25978,25979,25980,25981,25982,25983,25984,25985,25986,25987,25988,25989,25990,25992,25993,25994,25997,25998,25999,26002,26004,26005,26006,26008,26010,26013,26014,26016,26018,26019,26022,26024,26026,26028,26030,26033,26034,26035,26036,26037,26038,26039,26040,26042,26043,26046,26047,26048,26050,26055,26056,26057,26058,26061,26064,26065,26067,26068,26069,26072,26073,26074,26075,26076,26077,26078,26079,26081,26083,26084,26090,26091,26098,26099,26100,26101,26104,26105,26107,26108,26109,26110,26111,26113,26116,26117,26119,26120,26121,26123,26125,26128,26129,26130,26134,26135,26136,26138,26139,26140,26142,26145,26146,26147,26148,26150,26153,26154,26155,26156,26158,26160,26162,26163,26167,26168,26169,26170,26171,26173,26175,26176,26178,26180,26181,26182,26183,26184,26185,26186,26189,26190,26192,26193,26200,26201,26203,26204,26205,26206,26208,26210,26211,26213,26215,26217,26218,26219,26220,26221,26225,26226,26227,26229,26232,26233,26235,26236,26237,26239,26240,26241,26243,26245,26246,26248,26249,26250,26251,26253,26254,26255,26256,26258,26259,26260,26261,26264,26265,26266,26267,26268,26270,26271,26272,26273,26274,26275,26276,26277,26278,26281,26282,26283,26284,26285,26287,26288,26289,26290,26291,26293,26294,26295,26296,26298,26299,26300,26301,26303,26304,26305,26306,26307,26308,26309,26310,26311,26312,26313,26314,26315,26316,26317,26318,26319,26320,26321,26322,26323,26324,26325,26326,26327,26328,26330,26334,26335,26336,26337,26338,26339,26340,26341,26343,26344,26346,26347,26348,26349,26350,26351,26353,26357,26358,26360,26362,26363,26365,26369,26370,26371,26372,26373,26374,26375,26380,26382,26383,26385,26386,26387,26390,26392,26393,26394,26396,26398,26400,26401,26402,26403,26404,26405,26407,26409,26414,26416,26418,26419,26422,26423,26424,26425,26427,26428,26430,26431,26433,26436,26437,26439,26442,26443,26445,26450,26452,26453,26455,26456,26457,26458,26459,26461,26466,26467,26468,26470,26471,26475,26476,26478,26481,26484,26486,26488,26489,26490,26491,26493,26496,26498,26499,26501,26502,26504,26506,26508,26509,26510,26511,26513,26514,26515,26516,26518,26521,26523,26527,26528,26529,26532,26534,26537,26540,26542,26545,26546,26548,26553,26554,26555,26556,26557,26558,26559,26560,26562,26565,26566,26567,26568,26569,26570,26571,26572,26573,26574,26581,26582,26583,26587,26591,26593,26595,26596,26598,26599,26600,26602,26603,26605,26606,26610,26613,26614,26615,26616,26617,26618,26619,26620,26622,26625,26626,26627,26628,26630,26637,26640,26642,26644,26645,26648,26649,26650,26651,26652,26654,26655,26656,26658,26659,26660,26661,26662,26663,26664,26667,26668,26669,26670,26671,26672,26673,26676,26677,26678,26682,26683,26687,26695,26699,26701,26703,26706,26710,26711,26712,26713,26714,26715,26716,26717,26718,26719,26730,26732,26733,26734,26735,26736,26737,26738,26739,26741,26744,26745,26746,26747,26748,26749,26750,26751,26752,26754,26756,26759,26760,26761,26762,26763,26764,26765,26766,26768,26769,26770,26772,26773,26774,26776,26777,26778,26779,26780,26781,26782,26783,26784,26785,26787,26788,26789,26793,26794,26795,26796,26798,26801,26802,26804,26806,26807,26808,26809,26810,26811,26812,26813,26814,26815,26817,26819,26820,26821,26822,26823,26824,26826,26828,26830,26831,26832,26833,26835,26836,26838,26839,26841,26843,26844,26845,26846,26847,26849,26850,26852,26853,26854,26855,26856,26857,26858,26859,26860,26861,26863,26866,26867,26868,26870,26871,26872,26875,26877,26878,26879,26880,26882,26883,26884,26886,26887,26888,26889,26890,26892,26895,26897,26899,26900,26901,26902,26903,26904,26905,26906,26907,26908,26909,26910,26913,26914,26915,26917,26918,26919,26920,26921,26922,26923,26924,26926,26927,26929,26930,26931,26933,26934,26935,26936,26938,26939,26940,26942,26944,26945,26947,26948,26949,26950,26951,26952,26953,26954,26955,26956,26957,26958,26959,26960,26961,26962,26963,26965,26966,26968,26969,26971,26972,26975,26977,26978,26980,26981,26983,26984,26985,26986,26988,26989,26991,26992,26994,26995,26996,26997,26998,27002,27003,27005,27006,27007,27009,27011,27013,27018,27019,27020,27022,27023,27024,27025,27026,27027,27030,27031,27033,27034,27037,27038,27039,27040,27041,27042,27043,27044,27045,27046,27049,27050,27052,27054,27055,27056,27058,27059,27061,27062,27064,27065,27066,27068,27069,27070,27071,27072,27074,27075,27076,27077,27078,27079,27080,27081,27083,27085,27087,27089,27090,27091,27093,27094,27095,27096,27097,27098,27100,27101,27102,27105,27106,27107,27108,27109,27110,27111,27112,27113,27114,27115,27116,27118,27119,27120,27121,27123,27124,27125,27126,27127,27128,27129,27130,27131,27132,27134,27136,27137,27138,27139,27140,27141,27142,27143,27144,27145,27147,27148,27149,27150,27151,27152,27153,27154,27155,27156,27157,27158,27161,27162,27163,27164,27165,27166,27168,27170,27171,27172,27173,27174,27175,27177,27179,27180,27181,27182,27184,27186,27187,27188,27190,27191,27192,27193,27194,27195,27196,27199,27200,27201,27202,27203,27205,27206,27208,27209,27210,27211,27212,27213,27214,27215,27217,27218,27219,27220,27221,27222,27223,27226,27228,27229,27230,27231,27232,27234,27235,27236,27238,27239,27240,27241,27242,27243,27244,27245,27246,27247,27248,27250,27251,27252,27253,27254,27255,27256,27258,27259,27261,27262,27263,27265,27266,27267,27269,27270,27271,27272,27273,27274,27275,27276,27277,27279,27282,27283,27284,27285,27286,27288,27289,27290,27291,27292,27293,27294,27295,27297,27298,27299,27300,27301,27302,27303,27304,27306,27309,27310,27311,27312,27313,27314,27315,27316,27317,27318,27319,27320,27321,27322,27323,27324,27325,27326,27327,27328,27329,27330,27331,27332,27333,27334,27335,27336,27337,27338,27339,27340,27341,27342,27343,27344,27345,27346,27347,27348,27349,27350,27351,27352,27353,27354,27355,27356,27357,27358,27359,27360,27361,27362,27363,27364,27365,27366,27367,27368,27369,27370,27371,27372,27373,27374,27375,27376,27377,27378,27379,27380,27381,27382,27383,27384,27385,27386,27387,27388,27389,27390,27391,27392,27393,27394,27395,27396,27397,27398,27399,27400,27401,27402,27403,27404,27405,27406,27407,27408,27409,27410,27411,27412,27413,27414,27415,27416,27417,27418,27419,27420,27421,27422,27423,27429,27430,27432,27433,27434,27435,27436,27437,27438,27439,27440,27441,27443,27444,27445,27446,27448,27451,27452,27453,27455,27456,27457,27458,27460,27461,27464,27466,27467,27469,27470,27471,27472,27473,27474,27475,27476,27477,27478,27479,27480,27482,27483,27484,27485,27486,27487,27488,27489,27496,27497,27499,27500,27501,27502,27503,27504,27505,27506,27507,27508,27509,27510,27511,27512,27514,27517,27518,27519,27520,27525,27528,27532,27534,27535,27536,27537,27540,27541,27543,27544,27545,27548,27549,27550,27551,27552,27554,27555,27556,27557,27558,27559,27560,27561,27563,27564,27565,27566,27567,27568,27569,27570,27574,27576,27577,27578,27579,27580,27581,27582,27584,27587,27588,27590,27591,27592,27593,27594,27596,27598,27600,27601,27608,27610,27612,27613,27614,27615,27616,27618,27619,27620,27621,27622,27623,27624,27625,27628,27629,27630,27632,27633,27634,27636,27638,27639,27640,27642,27643,27644,27646,27647,27648,27649,27650,27651,27652,27656,27657,27658,27659,27660,27662,27666,27671,27676,27677,27678,27680,27683,27685,27691,27692,27693,27697,27699,27702,27703,27705,27706,27707,27708,27710,27711,27715,27716,27717,27720,27723,27724,27725,27726,27727,27729,27730,27731,27734,27736,27737,27738,27746,27747,27749,27750,27751,27755,27756,27757,27758,27759,27761,27763,27765,27767,27768,27770,27771,27772,27775,27776,27780,27783,27786,27787,27789,27790,27793,27794,27797,27798,27799,27800,27802,27804,27805,27806,27808,27810,27816,27820,27823,27824,27828,27829,27830,27831,27834,27840,27841,27842,27843,27846,27847,27848,27851,27853,27854,27855,27857,27858,27864,27865,27866,27868,27869,27871,27876,27878,27879,27881,27884,27885,27890,27892,27897,27903,27904,27906,27907,27909,27910,27912,27913,27914,27917,27919,27920,27921,27923,27924,27925,27926,27928,27932,27933,27935,27936,27937,27938,27939,27940,27942,27944,27945,27948,27949,27951,27952,27956,27958,27959,27960,27962,27967,27968,27970,27972,27977,27980,27984,27989,27990,27991,27992,27995,27997,27999,28001,28002,28004,28005,28007,28008,28011,28012,28013,28016,28017,28018,28019,28021,28022,28025,28026,28027,28029,28030,28031,28032,28033,28035,28036,28038,28039,28042,28043,28045,28047,28048,28050,28054,28055,28056,28057,28058,28060,28066,28069,28076,28077,28080,28081,28083,28084,28086,28087,28089,28090,28091,28092,28093,28094,28097,28098,28099,28104,28105,28106,28109,28110,28111,28112,28114,28115,28116,28117,28119,28122,28123,28124,28127,28130,28131,28133,28135,28136,28137,28138,28141,28143,28144,28146,28148,28149,28150,28152,28154,28157,28158,28159,28160,28161,28162,28163,28164,28166,28167,28168,28169,28171,28175,28178,28179,28181,28184,28185,28187,28188,28190,28191,28194,28198,28199,28200,28202,28204,28206,28208,28209,28211,28213,28214,28215,28217,28219,28220,28221,28222,28223,28224,28225,28226,28229,28230,28231,28232,28233,28234,28235,28236,28239,28240,28241,28242,28245,28247,28249,28250,28252,28253,28254,28256,28257,28258,28259,28260,28261,28262,28263,28264,28265,28266,28268,28269,28271,28272,28273,28274,28275,28276,28277,28278,28279,28280,28281,28282,28283,28284,28285,28288,28289,28290,28292,28295,28296,28298,28299,28300,28301,28302,28305,28306,28307,28308,28309,28310,28311,28313,28314,28315,28317,28318,28320,28321,28323,28324,28326,28328,28329,28331,28332,28333,28334,28336,28339,28341,28344,28345,28348,28350,28351,28352,28355,28356,28357,28358,28360,28361,28362,28364,28365,28366,28368,28370,28374,28376,28377,28379,28380,28381,28387,28391,28394,28395,28396,28397,28398,28399,28400,28401,28402,28403,28405,28406,28407,28408,28410,28411,28412,28413,28414,28415,28416,28417,28419,28420,28421,28423,28424,28426,28427,28428,28429,28430,28432,28433,28434,28438,28439,28440,28441,28442,28443,28444,28445,28446,28447,28449,28450,28451,28453,28454,28455,28456,28460,28462,28464,28466,28468,28469,28471,28472,28473,28474,28475,28476,28477,28479,28480,28481,28482,28483,28484,28485,28488,28489,28490,28492,28494,28495,28496,28497,28498,28499,28500,28501,28502,28503,28505,28506,28507,28509,28511,28512,28513,28515,28516,28517,28519,28520,28521,28522,28523,28524,28527,28528,28529,28531,28533,28534,28535,28537,28539,28541,28542,28543,28544,28545,28546,28547,28549,28550,28551,28554,28555,28559,28560,28561,28562,28563,28564,28565,28566,28567,28568,28569,28570,28571,28573,28574,28575,28576,28578,28579,28580,28581,28582,28584,28585,28586,28587,28588,28589,28590,28591,28592,28593,28594,28596,28597,28599,28600,28602,28603,28604,28605,28606,28607,28609,28611,28612,28613,28614,28615,28616,28618,28619,28620,28621,28622,28623,28624,28627,28628,28629,28630,28631,28632,28633,28634,28635,28636,28637,28639,28642,28643,28644,28645,28646,28647,28648,28649,28650,28651,28652,28653,28656,28657,28658,28659,28660,28661,28662,28663,28664,28665,28666,28667,28668,28669,28670,28671,28672,28673,28674,28675,28676,28677,28678,28679,28680,28681,28682,28683,28684,28685,28686,28687,28688,28690,28691,28692,28693,28694,28695,28696,28697,28700,28701,28702,28703,28704,28705,28706,28708,28709,28710,28711,28712,28713,28714,28715,28716,28717,28718,28719,28720,28721,28722,28723,28724,28726,28727,28728,28730,28731,28732,28733,28734,28735,28736,28737,28738,28739,28740,28741,28742,28743,28744,28745,28746,28747,28749,28750,28752,28753,28754,28755,28756,28757,28758,28759,28760,28761,28762,28763,28764,28765,28767,28768,28769,28770,28771,28772,28773,28774,28775,28776,28777,28778,28782,28785,28786,28787,28788,28791,28793,28794,28795,28797,28801,28802,28803,28804,28806,28807,28808,28811,28812,28813,28815,28816,28817,28819,28823,28824,28826,28827,28830,28831,28832,28833,28834,28835,28836,28837,28838,28839,28840,28841,28842,28848,28850,28852,28853,28854,28858,28862,28863,28868,28869,28870,28871,28873,28875,28876,28877,28878,28879,28880,28881,28882,28883,28884,28885,28886,28887,28890,28892,28893,28894,28896,28897,28898,28899,28901,28906,28910,28912,28913,28914,28915,28916,28917,28918,28920,28922,28923,28924,28926,28927,28928,28929,28930,28931,28932,28933,28934,28935,28936,28939,28940,28941,28942,28943,28945,28946,28948,28951,28955,28956,28957,28958,28959,28960,28961,28962,28963,28964,28965,28967,28968,28969,28970,28971,28972,28973,28974,28978,28979,28980,28981,28983,28984,28985,28986,28987,28988,28989,28990,28991,28992,28993,28994,28995,28996,28998,28999,29000,29001,29003,29005,29007,29008,29009,29010,29011,29012,29013,29014,29015,29016,29017,29018,29019,29021,29023,29024,29025,29026,29027,29029,29033,29034,29035,29036,29037,29039,29040,29041,29044,29045,29046,29047,29049,29051,29052,29054,29055,29056,29057,29058,29059,29061,29062,29063,29064,29065,29067,29068,29069,29070,29072,29073,29074,29075,29077,29078,29079,29082,29083,29084,29085,29086,29089,29090,29091,29092,29093,29094,29095,29097,29098,29099,29101,29102,29103,29104,29105,29106,29108,29110,29111,29112,29114,29115,29116,29117,29118,29119,29120,29121,29122,29124,29125,29126,29127,29128,29129,29130,29131,29132,29133,29135,29136,29137,29138,29139,29142,29143,29144,29145,29146,29147,29148,29149,29150,29151,29153,29154,29155,29156,29158,29160,29161,29162,29163,29164,29165,29167,29168,29169,29170,29171,29172,29173,29174,29175,29176,29178,29179,29180,29181,29182,29183,29184,29185,29186,29187,29188,29189,29191,29192,29193,29194,29195,29196,29197,29198,29199,29200,29201,29202,29203,29204,29205,29206,29207,29208,29209,29210,29211,29212,29214,29215,29216,29217,29218,29219,29220,29221,29222,29223,29225,29227,29229,29230,29231,29234,29235,29236,29242,29244,29246,29248,29249,29250,29251,29252,29253,29254,29257,29258,29259,29262,29263,29264,29265,29267,29268,29269,29271,29272,29274,29276,29278,29280,29283,29284,29285,29288,29290,29291,29292,29293,29296,29297,29299,29300,29302,29303,29304,29307,29308,29309,29314,29315,29317,29318,29319,29320,29321,29324,29326,29328,29329,29331,29332,29333,29334,29335,29336,29337,29338,29339,29340,29341,29342,29344,29345,29346,29347,29348,29349,29350,29351,29352,29353,29354,29355,29358,29361,29362,29363,29365,29370,29371,29372,29373,29374,29375,29376,29381,29382,29383,29385,29386,29387,29388,29391,29393,29395,29396,29397,29398,29400,29402,29403,58566,58567,58568,58569,58570,58571,58572,58573,58574,58575,58576,58577,58578,58579,58580,58581,58582,58583,58584,58585,58586,58587,58588,58589,58590,58591,58592,58593,58594,58595,58596,58597,58598,58599,58600,58601,58602,58603,58604,58605,58606,58607,58608,58609,58610,58611,58612,58613,58614,58615,58616,58617,58618,58619,58620,58621,58622,58623,58624,58625,58626,58627,58628,58629,58630,58631,58632,58633,58634,58635,58636,58637,58638,58639,58640,58641,58642,58643,58644,58645,58646,58647,58648,58649,58650,58651,58652,58653,58654,58655,58656,58657,58658,58659,58660,58661,12288,12289,12290,183,713,711,168,12291,12293,8212,65374,8214,8230,8216,8217,8220,8221,12308,12309,12296,12297,12298,12299,12300,12301,12302,12303,12310,12311,12304,12305,177,215,247,8758,8743,8744,8721,8719,8746,8745,8712,8759,8730,8869,8741,8736,8978,8857,8747,8750,8801,8780,8776,8765,8733,8800,8814,8815,8804,8805,8734,8757,8756,9794,9792,176,8242,8243,8451,65284,164,65504,65505,8240,167,8470,9734,9733,9675,9679,9678,9671,9670,9633,9632,9651,9650,8251,8594,8592,8593,8595,12307,58662,58663,58664,58665,58666,58667,58668,58669,58670,58671,58672,58673,58674,58675,58676,58677,58678,58679,58680,58681,58682,58683,58684,58685,58686,58687,58688,58689,58690,58691,58692,58693,58694,58695,58696,58697,58698,58699,58700,58701,58702,58703,58704,58705,58706,58707,58708,58709,58710,58711,58712,58713,58714,58715,58716,58717,58718,58719,58720,58721,58722,58723,58724,58725,58726,58727,58728,58729,58730,58731,58732,58733,58734,58735,58736,58737,58738,58739,58740,58741,58742,58743,58744,58745,58746,58747,58748,58749,58750,58751,58752,58753,58754,58755,58756,58757,8560,8561,8562,8563,8564,8565,8566,8567,8568,8569,59238,59239,59240,59241,59242,59243,9352,9353,9354,9355,9356,9357,9358,9359,9360,9361,9362,9363,9364,9365,9366,9367,9368,9369,9370,9371,9332,9333,9334,9335,9336,9337,9338,9339,9340,9341,9342,9343,9344,9345,9346,9347,9348,9349,9350,9351,9312,9313,9314,9315,9316,9317,9318,9319,9320,9321,8364,59245,12832,12833,12834,12835,12836,12837,12838,12839,12840,12841,59246,59247,8544,8545,8546,8547,8548,8549,8550,8551,8552,8553,8554,8555,59248,59249,58758,58759,58760,58761,58762,58763,58764,58765,58766,58767,58768,58769,58770,58771,58772,58773,58774,58775,58776,58777,58778,58779,58780,58781,58782,58783,58784,58785,58786,58787,58788,58789,58790,58791,58792,58793,58794,58795,58796,58797,58798,58799,58800,58801,58802,58803,58804,58805,58806,58807,58808,58809,58810,58811,58812,58813,58814,58815,58816,58817,58818,58819,58820,58821,58822,58823,58824,58825,58826,58827,58828,58829,58830,58831,58832,58833,58834,58835,58836,58837,58838,58839,58840,58841,58842,58843,58844,58845,58846,58847,58848,58849,58850,58851,58852,12288,65281,65282,65283,65509,65285,65286,65287,65288,65289,65290,65291,65292,65293,65294,65295,65296,65297,65298,65299,65300,65301,65302,65303,65304,65305,65306,65307,65308,65309,65310,65311,65312,65313,65314,65315,65316,65317,65318,65319,65320,65321,65322,65323,65324,65325,65326,65327,65328,65329,65330,65331,65332,65333,65334,65335,65336,65337,65338,65339,65340,65341,65342,65343,65344,65345,65346,65347,65348,65349,65350,65351,65352,65353,65354,65355,65356,65357,65358,65359,65360,65361,65362,65363,65364,65365,65366,65367,65368,65369,65370,65371,65372,65373,65507,58854,58855,58856,58857,58858,58859,58860,58861,58862,58863,58864,58865,58866,58867,58868,58869,58870,58871,58872,58873,58874,58875,58876,58877,58878,58879,58880,58881,58882,58883,58884,58885,58886,58887,58888,58889,58890,58891,58892,58893,58894,58895,58896,58897,58898,58899,58900,58901,58902,58903,58904,58905,58906,58907,58908,58909,58910,58911,58912,58913,58914,58915,58916,58917,58918,58919,58920,58921,58922,58923,58924,58925,58926,58927,58928,58929,58930,58931,58932,58933,58934,58935,58936,58937,58938,58939,58940,58941,58942,58943,58944,58945,58946,58947,58948,58949,12353,12354,12355,12356,12357,12358,12359,12360,12361,12362,12363,12364,12365,12366,12367,12368,12369,12370,12371,12372,12373,12374,12375,12376,12377,12378,12379,12380,12381,12382,12383,12384,12385,12386,12387,12388,12389,12390,12391,12392,12393,12394,12395,12396,12397,12398,12399,12400,12401,12402,12403,12404,12405,12406,12407,12408,12409,12410,12411,12412,12413,12414,12415,12416,12417,12418,12419,12420,12421,12422,12423,12424,12425,12426,12427,12428,12429,12430,12431,12432,12433,12434,12435,59250,59251,59252,59253,59254,59255,59256,59257,59258,59259,59260,58950,58951,58952,58953,58954,58955,58956,58957,58958,58959,58960,58961,58962,58963,58964,58965,58966,58967,58968,58969,58970,58971,58972,58973,58974,58975,58976,58977,58978,58979,58980,58981,58982,58983,58984,58985,58986,58987,58988,58989,58990,58991,58992,58993,58994,58995,58996,58997,58998,58999,59000,59001,59002,59003,59004,59005,59006,59007,59008,59009,59010,59011,59012,59013,59014,59015,59016,59017,59018,59019,59020,59021,59022,59023,59024,59025,59026,59027,59028,59029,59030,59031,59032,59033,59034,59035,59036,59037,59038,59039,59040,59041,59042,59043,59044,59045,12449,12450,12451,12452,12453,12454,12455,12456,12457,12458,12459,12460,12461,12462,12463,12464,12465,12466,12467,12468,12469,12470,12471,12472,12473,12474,12475,12476,12477,12478,12479,12480,12481,12482,12483,12484,12485,12486,12487,12488,12489,12490,12491,12492,12493,12494,12495,12496,12497,12498,12499,12500,12501,12502,12503,12504,12505,12506,12507,12508,12509,12510,12511,12512,12513,12514,12515,12516,12517,12518,12519,12520,12521,12522,12523,12524,12525,12526,12527,12528,12529,12530,12531,12532,12533,12534,59261,59262,59263,59264,59265,59266,59267,59268,59046,59047,59048,59049,59050,59051,59052,59053,59054,59055,59056,59057,59058,59059,59060,59061,59062,59063,59064,59065,59066,59067,59068,59069,59070,59071,59072,59073,59074,59075,59076,59077,59078,59079,59080,59081,59082,59083,59084,59085,59086,59087,59088,59089,59090,59091,59092,59093,59094,59095,59096,59097,59098,59099,59100,59101,59102,59103,59104,59105,59106,59107,59108,59109,59110,59111,59112,59113,59114,59115,59116,59117,59118,59119,59120,59121,59122,59123,59124,59125,59126,59127,59128,59129,59130,59131,59132,59133,59134,59135,59136,59137,59138,59139,59140,59141,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,59269,59270,59271,59272,59273,59274,59275,59276,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,963,964,965,966,967,968,969,65040,65042,65041,65043,65044,65045,65046,65077,65078,65081,65082,65087,65088,65085,65086,65089,65090,65091,65092,65047,65048,65083,65084,65079,65080,65073,65049,65075,65076,59287,59288,59289,59290,59291,59292,59293,59294,59295,59142,59143,59144,59145,59146,59147,59148,59149,59150,59151,59152,59153,59154,59155,59156,59157,59158,59159,59160,59161,59162,59163,59164,59165,59166,59167,59168,59169,59170,59171,59172,59173,59174,59175,59176,59177,59178,59179,59180,59181,59182,59183,59184,59185,59186,59187,59188,59189,59190,59191,59192,59193,59194,59195,59196,59197,59198,59199,59200,59201,59202,59203,59204,59205,59206,59207,59208,59209,59210,59211,59212,59213,59214,59215,59216,59217,59218,59219,59220,59221,59222,59223,59224,59225,59226,59227,59228,59229,59230,59231,59232,59233,59234,59235,59236,59237,1040,1041,1042,1043,1044,1045,1025,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,59296,59297,59298,59299,59300,59301,59302,59303,59304,59305,59306,59307,59308,59309,59310,1072,1073,1074,1075,1076,1077,1105,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,59311,59312,59313,59314,59315,59316,59317,59318,59319,59320,59321,59322,59323,714,715,729,8211,8213,8229,8245,8453,8457,8598,8599,8600,8601,8725,8735,8739,8786,8806,8807,8895,9552,9553,9554,9555,9556,9557,9558,9559,9560,9561,9562,9563,9564,9565,9566,9567,9568,9569,9570,9571,9572,9573,9574,9575,9576,9577,9578,9579,9580,9581,9582,9583,9584,9585,9586,9587,9601,9602,9603,9604,9605,9606,9607,9608,9609,9610,9611,9612,9613,9614,9615,9619,9620,9621,9660,9661,9698,9699,9700,9701,9737,8853,12306,12317,12318,59324,59325,59326,59327,59328,59329,59330,59331,59332,59333,59334,257,225,462,224,275,233,283,232,299,237,464,236,333,243,466,242,363,250,468,249,470,472,474,476,252,234,593,7743,324,328,505,609,59337,59338,59339,59340,12549,12550,12551,12552,12553,12554,12555,12556,12557,12558,12559,12560,12561,12562,12563,12564,12565,12566,12567,12568,12569,12570,12571,12572,12573,12574,12575,12576,12577,12578,12579,12580,12581,12582,12583,12584,12585,59341,59342,59343,59344,59345,59346,59347,59348,59349,59350,59351,59352,59353,59354,59355,59356,59357,59358,59359,59360,59361,12321,12322,12323,12324,12325,12326,12327,12328,12329,12963,13198,13199,13212,13213,13214,13217,13252,13262,13265,13266,13269,65072,65506,65508,59362,8481,12849,59363,8208,59364,59365,59366,12540,12443,12444,12541,12542,12294,12445,12446,65097,65098,65099,65100,65101,65102,65103,65104,65105,65106,65108,65109,65110,65111,65113,65114,65115,65116,65117,65118,65119,65120,65121,65122,65123,65124,65125,65126,65128,65129,65130,65131,12350,12272,12273,12274,12275,12276,12277,12278,12279,12280,12281,12282,12283,12295,59380,59381,59382,59383,59384,59385,59386,59387,59388,59389,59390,59391,59392,9472,9473,9474,9475,9476,9477,9478,9479,9480,9481,9482,9483,9484,9485,9486,9487,9488,9489,9490,9491,9492,9493,9494,9495,9496,9497,9498,9499,9500,9501,9502,9503,9504,9505,9506,9507,9508,9509,9510,9511,9512,9513,9514,9515,9516,9517,9518,9519,9520,9521,9522,9523,9524,9525,9526,9527,9528,9529,9530,9531,9532,9533,9534,9535,9536,9537,9538,9539,9540,9541,9542,9543,9544,9545,9546,9547,59393,59394,59395,59396,59397,59398,59399,59400,59401,59402,59403,59404,59405,59406,59407,29404,29405,29407,29410,29411,29412,29413,29414,29415,29418,29419,29429,29430,29433,29437,29438,29439,29440,29442,29444,29445,29446,29447,29448,29449,29451,29452,29453,29455,29456,29457,29458,29460,29464,29465,29466,29471,29472,29475,29476,29478,29479,29480,29485,29487,29488,29490,29491,29493,29494,29498,29499,29500,29501,29504,29505,29506,29507,29508,29509,29510,29511,29512,29513,29514,29515,29516,29518,29519,29521,29523,29524,29525,29526,29528,29529,29530,29531,29532,29533,29534,29535,29537,29538,29539,29540,29541,29542,29543,29544,29545,29546,29547,29550,29552,29553,57344,57345,57346,57347,57348,57349,57350,57351,57352,57353,57354,57355,57356,57357,57358,57359,57360,57361,57362,57363,57364,57365,57366,57367,57368,57369,57370,57371,57372,57373,57374,57375,57376,57377,57378,57379,57380,57381,57382,57383,57384,57385,57386,57387,57388,57389,57390,57391,57392,57393,57394,57395,57396,57397,57398,57399,57400,57401,57402,57403,57404,57405,57406,57407,57408,57409,57410,57411,57412,57413,57414,57415,57416,57417,57418,57419,57420,57421,57422,57423,57424,57425,57426,57427,57428,57429,57430,57431,57432,57433,57434,57435,57436,57437,29554,29555,29556,29557,29558,29559,29560,29561,29562,29563,29564,29565,29567,29568,29569,29570,29571,29573,29574,29576,29578,29580,29581,29583,29584,29586,29587,29588,29589,29591,29592,29593,29594,29596,29597,29598,29600,29601,29603,29604,29605,29606,29607,29608,29610,29612,29613,29617,29620,29621,29622,29624,29625,29628,29629,29630,29631,29633,29635,29636,29637,29638,29639,29643,29644,29646,29650,29651,29652,29653,29654,29655,29656,29658,29659,29660,29661,29663,29665,29666,29667,29668,29670,29672,29674,29675,29676,29678,29679,29680,29681,29683,29684,29685,29686,29687,57438,57439,57440,57441,57442,57443,57444,57445,57446,57447,57448,57449,57450,57451,57452,57453,57454,57455,57456,57457,57458,57459,57460,57461,57462,57463,57464,57465,57466,57467,57468,57469,57470,57471,57472,57473,57474,57475,57476,57477,57478,57479,57480,57481,57482,57483,57484,57485,57486,57487,57488,57489,57490,57491,57492,57493,57494,57495,57496,57497,57498,57499,57500,57501,57502,57503,57504,57505,57506,57507,57508,57509,57510,57511,57512,57513,57514,57515,57516,57517,57518,57519,57520,57521,57522,57523,57524,57525,57526,57527,57528,57529,57530,57531,29688,29689,29690,29691,29692,29693,29694,29695,29696,29697,29698,29700,29703,29704,29707,29708,29709,29710,29713,29714,29715,29716,29717,29718,29719,29720,29721,29724,29725,29726,29727,29728,29729,29731,29732,29735,29737,29739,29741,29743,29745,29746,29751,29752,29753,29754,29755,29757,29758,29759,29760,29762,29763,29764,29765,29766,29767,29768,29769,29770,29771,29772,29773,29774,29775,29776,29777,29778,29779,29780,29782,29784,29789,29792,29793,29794,29795,29796,29797,29798,29799,29800,29801,29802,29803,29804,29806,29807,29809,29810,29811,29812,29813,29816,29817,29818,57532,57533,57534,57535,57536,57537,57538,57539,57540,57541,57542,57543,57544,57545,57546,57547,57548,57549,57550,57551,57552,57553,57554,57555,57556,57557,57558,57559,57560,57561,57562,57563,57564,57565,57566,57567,57568,57569,57570,57571,57572,57573,57574,57575,57576,57577,57578,57579,57580,57581,57582,57583,57584,57585,57586,57587,57588,57589,57590,57591,57592,57593,57594,57595,57596,57597,57598,57599,57600,57601,57602,57603,57604,57605,57606,57607,57608,57609,57610,57611,57612,57613,57614,57615,57616,57617,57618,57619,57620,57621,57622,57623,57624,57625,29819,29820,29821,29823,29826,29828,29829,29830,29832,29833,29834,29836,29837,29839,29841,29842,29843,29844,29845,29846,29847,29848,29849,29850,29851,29853,29855,29856,29857,29858,29859,29860,29861,29862,29866,29867,29868,29869,29870,29871,29872,29873,29874,29875,29876,29877,29878,29879,29880,29881,29883,29884,29885,29886,29887,29888,29889,29890,29891,29892,29893,29894,29895,29896,29897,29898,29899,29900,29901,29902,29903,29904,29905,29907,29908,29909,29910,29911,29912,29913,29914,29915,29917,29919,29921,29925,29927,29928,29929,29930,29931,29932,29933,29936,29937,29938,57626,57627,57628,57629,57630,57631,57632,57633,57634,57635,57636,57637,57638,57639,57640,57641,57642,57643,57644,57645,57646,57647,57648,57649,57650,57651,57652,57653,57654,57655,57656,57657,57658,57659,57660,57661,57662,57663,57664,57665,57666,57667,57668,57669,57670,57671,57672,57673,57674,57675,57676,57677,57678,57679,57680,57681,57682,57683,57684,57685,57686,57687,57688,57689,57690,57691,57692,57693,57694,57695,57696,57697,57698,57699,57700,57701,57702,57703,57704,57705,57706,57707,57708,57709,57710,57711,57712,57713,57714,57715,57716,57717,57718,57719,29939,29941,29944,29945,29946,29947,29948,29949,29950,29952,29953,29954,29955,29957,29958,29959,29960,29961,29962,29963,29964,29966,29968,29970,29972,29973,29974,29975,29979,29981,29982,29984,29985,29986,29987,29988,29990,29991,29994,29998,30004,30006,30009,30012,30013,30015,30017,30018,30019,30020,30022,30023,30025,30026,30029,30032,30033,30034,30035,30037,30038,30039,30040,30045,30046,30047,30048,30049,30050,30051,30052,30055,30056,30057,30059,30060,30061,30062,30063,30064,30065,30067,30069,30070,30071,30074,30075,30076,30077,30078,30080,30081,30082,30084,30085,30087,57720,57721,57722,57723,57724,57725,57726,57727,57728,57729,57730,57731,57732,57733,57734,57735,57736,57737,57738,57739,57740,57741,57742,57743,57744,57745,57746,57747,57748,57749,57750,57751,57752,57753,57754,57755,57756,57757,57758,57759,57760,57761,57762,57763,57764,57765,57766,57767,57768,57769,57770,57771,57772,57773,57774,57775,57776,57777,57778,57779,57780,57781,57782,57783,57784,57785,57786,57787,57788,57789,57790,57791,57792,57793,57794,57795,57796,57797,57798,57799,57800,57801,57802,57803,57804,57805,57806,57807,57808,57809,57810,57811,57812,57813,30088,30089,30090,30092,30093,30094,30096,30099,30101,30104,30107,30108,30110,30114,30118,30119,30120,30121,30122,30125,30134,30135,30138,30139,30143,30144,30145,30150,30155,30156,30158,30159,30160,30161,30163,30167,30169,30170,30172,30173,30175,30176,30177,30181,30185,30188,30189,30190,30191,30194,30195,30197,30198,30199,30200,30202,30203,30205,30206,30210,30212,30214,30215,30216,30217,30219,30221,30222,30223,30225,30226,30227,30228,30230,30234,30236,30237,30238,30241,30243,30247,30248,30252,30254,30255,30257,30258,30262,30263,30265,30266,30267,30269,30273,30274,30276,57814,57815,57816,57817,57818,57819,57820,57821,57822,57823,57824,57825,57826,57827,57828,57829,57830,57831,57832,57833,57834,57835,57836,57837,57838,57839,57840,57841,57842,57843,57844,57845,57846,57847,57848,57849,57850,57851,57852,57853,57854,57855,57856,57857,57858,57859,57860,57861,57862,57863,57864,57865,57866,57867,57868,57869,57870,57871,57872,57873,57874,57875,57876,57877,57878,57879,57880,57881,57882,57883,57884,57885,57886,57887,57888,57889,57890,57891,57892,57893,57894,57895,57896,57897,57898,57899,57900,57901,57902,57903,57904,57905,57906,57907,30277,30278,30279,30280,30281,30282,30283,30286,30287,30288,30289,30290,30291,30293,30295,30296,30297,30298,30299,30301,30303,30304,30305,30306,30308,30309,30310,30311,30312,30313,30314,30316,30317,30318,30320,30321,30322,30323,30324,30325,30326,30327,30329,30330,30332,30335,30336,30337,30339,30341,30345,30346,30348,30349,30351,30352,30354,30356,30357,30359,30360,30362,30363,30364,30365,30366,30367,30368,30369,30370,30371,30373,30374,30375,30376,30377,30378,30379,30380,30381,30383,30384,30387,30389,30390,30391,30392,30393,30394,30395,30396,30397,30398,30400,30401,30403,21834,38463,22467,25384,21710,21769,21696,30353,30284,34108,30702,33406,30861,29233,38552,38797,27688,23433,20474,25353,26263,23736,33018,26696,32942,26114,30414,20985,25942,29100,32753,34948,20658,22885,25034,28595,33453,25420,25170,21485,21543,31494,20843,30116,24052,25300,36299,38774,25226,32793,22365,38712,32610,29240,30333,26575,30334,25670,20336,36133,25308,31255,26001,29677,25644,25203,33324,39041,26495,29256,25198,25292,20276,29923,21322,21150,32458,37030,24110,26758,27036,33152,32465,26834,30917,34444,38225,20621,35876,33502,32990,21253,35090,21093,30404,30407,30409,30411,30412,30419,30421,30425,30426,30428,30429,30430,30432,30433,30434,30435,30436,30438,30439,30440,30441,30442,30443,30444,30445,30448,30451,30453,30454,30455,30458,30459,30461,30463,30464,30466,30467,30469,30470,30474,30476,30478,30479,30480,30481,30482,30483,30484,30485,30486,30487,30488,30491,30492,30493,30494,30497,30499,30500,30501,30503,30506,30507,30508,30510,30512,30513,30514,30515,30516,30521,30523,30525,30526,30527,30530,30532,30533,30534,30536,30537,30538,30539,30540,30541,30542,30543,30546,30547,30548,30549,30550,30551,30552,30553,30556,34180,38649,20445,22561,39281,23453,25265,25253,26292,35961,40077,29190,26479,30865,24754,21329,21271,36744,32972,36125,38049,20493,29384,22791,24811,28953,34987,22868,33519,26412,31528,23849,32503,29997,27893,36454,36856,36924,40763,27604,37145,31508,24444,30887,34006,34109,27605,27609,27606,24065,24199,30201,38381,25949,24330,24517,36767,22721,33218,36991,38491,38829,36793,32534,36140,25153,20415,21464,21342,36776,36777,36779,36941,26631,24426,33176,34920,40150,24971,21035,30250,24428,25996,28626,28392,23486,25672,20853,20912,26564,19993,31177,39292,28851,30557,30558,30559,30560,30564,30567,30569,30570,30573,30574,30575,30576,30577,30578,30579,30580,30581,30582,30583,30584,30586,30587,30588,30593,30594,30595,30598,30599,30600,30601,30602,30603,30607,30608,30611,30612,30613,30614,30615,30616,30617,30618,30619,30620,30621,30622,30625,30627,30628,30630,30632,30635,30637,30638,30639,30641,30642,30644,30646,30647,30648,30649,30650,30652,30654,30656,30657,30658,30659,30660,30661,30662,30663,30664,30665,30666,30667,30668,30670,30671,30672,30673,30674,30675,30676,30677,30678,30680,30681,30682,30685,30686,30687,30688,30689,30692,30149,24182,29627,33760,25773,25320,38069,27874,21338,21187,25615,38082,31636,20271,24091,33334,33046,33162,28196,27850,39539,25429,21340,21754,34917,22496,19981,24067,27493,31807,37096,24598,25830,29468,35009,26448,25165,36130,30572,36393,37319,24425,33756,34081,39184,21442,34453,27531,24813,24808,28799,33485,33329,20179,27815,34255,25805,31961,27133,26361,33609,21397,31574,20391,20876,27979,23618,36461,25554,21449,33580,33590,26597,30900,25661,23519,23700,24046,35815,25286,26612,35962,25600,25530,34633,39307,35863,32544,38130,20135,38416,39076,26124,29462,30694,30696,30698,30703,30704,30705,30706,30708,30709,30711,30713,30714,30715,30716,30723,30724,30725,30726,30727,30728,30730,30731,30734,30735,30736,30739,30741,30745,30747,30750,30752,30753,30754,30756,30760,30762,30763,30766,30767,30769,30770,30771,30773,30774,30781,30783,30785,30786,30787,30788,30790,30792,30793,30794,30795,30797,30799,30801,30803,30804,30808,30809,30810,30811,30812,30814,30815,30816,30817,30818,30819,30820,30821,30822,30823,30824,30825,30831,30832,30833,30834,30835,30836,30837,30838,30840,30841,30842,30843,30845,30846,30847,30848,30849,30850,30851,22330,23581,24120,38271,20607,32928,21378,25950,30021,21809,20513,36229,25220,38046,26397,22066,28526,24034,21557,28818,36710,25199,25764,25507,24443,28552,37108,33251,36784,23576,26216,24561,27785,38472,36225,34924,25745,31216,22478,27225,25104,21576,20056,31243,24809,28548,35802,25215,36894,39563,31204,21507,30196,25345,21273,27744,36831,24347,39536,32827,40831,20360,23610,36196,32709,26021,28861,20805,20914,34411,23815,23456,25277,37228,30068,36364,31264,24833,31609,20167,32504,30597,19985,33261,21021,20986,27249,21416,36487,38148,38607,28353,38500,26970,30852,30853,30854,30856,30858,30859,30863,30864,30866,30868,30869,30870,30873,30877,30878,30880,30882,30884,30886,30888,30889,30890,30891,30892,30893,30894,30895,30901,30902,30903,30904,30906,30907,30908,30909,30911,30912,30914,30915,30916,30918,30919,30920,30924,30925,30926,30927,30929,30930,30931,30934,30935,30936,30938,30939,30940,30941,30942,30943,30944,30945,30946,30947,30948,30949,30950,30951,30953,30954,30955,30957,30958,30959,30960,30961,30963,30965,30966,30968,30969,30971,30972,30973,30974,30975,30976,30978,30979,30980,30982,30983,30984,30985,30986,30987,30988,30784,20648,30679,25616,35302,22788,25571,24029,31359,26941,20256,33337,21912,20018,30126,31383,24162,24202,38383,21019,21561,28810,25462,38180,22402,26149,26943,37255,21767,28147,32431,34850,25139,32496,30133,33576,30913,38604,36766,24904,29943,35789,27492,21050,36176,27425,32874,33905,22257,21254,20174,19995,20945,31895,37259,31751,20419,36479,31713,31388,25703,23828,20652,33030,30209,31929,28140,32736,26449,23384,23544,30923,25774,25619,25514,25387,38169,25645,36798,31572,30249,25171,22823,21574,27513,20643,25140,24102,27526,20195,36151,34955,24453,36910,30989,30990,30991,30992,30993,30994,30996,30997,30998,30999,31000,31001,31002,31003,31004,31005,31007,31008,31009,31010,31011,31013,31014,31015,31016,31017,31018,31019,31020,31021,31022,31023,31024,31025,31026,31027,31029,31030,31031,31032,31033,31037,31039,31042,31043,31044,31045,31047,31050,31051,31052,31053,31054,31055,31056,31057,31058,31060,31061,31064,31065,31073,31075,31076,31078,31081,31082,31083,31084,31086,31088,31089,31090,31091,31092,31093,31094,31097,31099,31100,31101,31102,31103,31106,31107,31110,31111,31112,31113,31115,31116,31117,31118,31120,31121,31122,24608,32829,25285,20025,21333,37112,25528,32966,26086,27694,20294,24814,28129,35806,24377,34507,24403,25377,20826,33633,26723,20992,25443,36424,20498,23707,31095,23548,21040,31291,24764,36947,30423,24503,24471,30340,36460,28783,30331,31561,30634,20979,37011,22564,20302,28404,36842,25932,31515,29380,28068,32735,23265,25269,24213,22320,33922,31532,24093,24351,36882,32532,39072,25474,28359,30872,28857,20856,38747,22443,30005,20291,30008,24215,24806,22880,28096,27583,30857,21500,38613,20939,20993,25481,21514,38035,35843,36300,29241,30879,34678,36845,35853,21472,31123,31124,31125,31126,31127,31128,31129,31131,31132,31133,31134,31135,31136,31137,31138,31139,31140,31141,31142,31144,31145,31146,31147,31148,31149,31150,31151,31152,31153,31154,31156,31157,31158,31159,31160,31164,31167,31170,31172,31173,31175,31176,31178,31180,31182,31183,31184,31187,31188,31190,31191,31193,31194,31195,31196,31197,31198,31200,31201,31202,31205,31208,31210,31212,31214,31217,31218,31219,31220,31221,31222,31223,31225,31226,31228,31230,31231,31233,31236,31237,31239,31240,31241,31242,31244,31247,31248,31249,31250,31251,31253,31254,31256,31257,31259,31260,19969,30447,21486,38025,39030,40718,38189,23450,35746,20002,19996,20908,33891,25026,21160,26635,20375,24683,20923,27934,20828,25238,26007,38497,35910,36887,30168,37117,30563,27602,29322,29420,35835,22581,30585,36172,26460,38208,32922,24230,28193,22930,31471,30701,38203,27573,26029,32526,22534,20817,38431,23545,22697,21544,36466,25958,39039,22244,38045,30462,36929,25479,21702,22810,22842,22427,36530,26421,36346,33333,21057,24816,22549,34558,23784,40517,20420,39069,35769,23077,24694,21380,25212,36943,37122,39295,24681,32780,20799,32819,23572,39285,27953,20108,31261,31263,31265,31266,31268,31269,31270,31271,31272,31273,31274,31275,31276,31277,31278,31279,31280,31281,31282,31284,31285,31286,31288,31290,31294,31296,31297,31298,31299,31300,31301,31303,31304,31305,31306,31307,31308,31309,31310,31311,31312,31314,31315,31316,31317,31318,31320,31321,31322,31323,31324,31325,31326,31327,31328,31329,31330,31331,31332,31333,31334,31335,31336,31337,31338,31339,31340,31341,31342,31343,31345,31346,31347,31349,31355,31356,31357,31358,31362,31365,31367,31369,31370,31371,31372,31374,31375,31376,31379,31380,31385,31386,31387,31390,31393,31394,36144,21457,32602,31567,20240,20047,38400,27861,29648,34281,24070,30058,32763,27146,30718,38034,32321,20961,28902,21453,36820,33539,36137,29359,39277,27867,22346,33459,26041,32938,25151,38450,22952,20223,35775,32442,25918,33778,38750,21857,39134,32933,21290,35837,21536,32954,24223,27832,36153,33452,37210,21545,27675,20998,32439,22367,28954,27774,31881,22859,20221,24575,24868,31914,20016,23553,26539,34562,23792,38155,39118,30127,28925,36898,20911,32541,35773,22857,20964,20315,21542,22827,25975,32932,23413,25206,25282,36752,24133,27679,31526,20239,20440,26381,31395,31396,31399,31401,31402,31403,31406,31407,31408,31409,31410,31412,31413,31414,31415,31416,31417,31418,31419,31420,31421,31422,31424,31425,31426,31427,31428,31429,31430,31431,31432,31433,31434,31436,31437,31438,31439,31440,31441,31442,31443,31444,31445,31447,31448,31450,31451,31452,31453,31457,31458,31460,31463,31464,31465,31466,31467,31468,31470,31472,31473,31474,31475,31476,31477,31478,31479,31480,31483,31484,31486,31488,31489,31490,31493,31495,31497,31500,31501,31502,31504,31506,31507,31510,31511,31512,31514,31516,31517,31519,31521,31522,31523,31527,31529,31533,28014,28074,31119,34993,24343,29995,25242,36741,20463,37340,26023,33071,33105,24220,33104,36212,21103,35206,36171,22797,20613,20184,38428,29238,33145,36127,23500,35747,38468,22919,32538,21648,22134,22030,35813,25913,27010,38041,30422,28297,24178,29976,26438,26577,31487,32925,36214,24863,31174,25954,36195,20872,21018,38050,32568,32923,32434,23703,28207,26464,31705,30347,39640,33167,32660,31957,25630,38224,31295,21578,21733,27468,25601,25096,40509,33011,30105,21106,38761,33883,26684,34532,38401,38548,38124,20010,21508,32473,26681,36319,32789,26356,24218,32697,31535,31536,31538,31540,31541,31542,31543,31545,31547,31549,31551,31552,31553,31554,31555,31556,31558,31560,31562,31565,31566,31571,31573,31575,31577,31580,31582,31583,31585,31587,31588,31589,31590,31591,31592,31593,31594,31595,31596,31597,31599,31600,31603,31604,31606,31608,31610,31612,31613,31615,31617,31618,31619,31620,31622,31623,31624,31625,31626,31627,31628,31630,31631,31633,31634,31635,31638,31640,31641,31642,31643,31646,31647,31648,31651,31652,31653,31662,31663,31664,31666,31667,31669,31670,31671,31673,31674,31675,31676,31677,31678,31679,31680,31682,31683,31684,22466,32831,26775,24037,25915,21151,24685,40858,20379,36524,20844,23467,24339,24041,27742,25329,36129,20849,38057,21246,27807,33503,29399,22434,26500,36141,22815,36764,33735,21653,31629,20272,27837,23396,22993,40723,21476,34506,39592,35895,32929,25925,39038,22266,38599,21038,29916,21072,23521,25346,35074,20054,25296,24618,26874,20851,23448,20896,35266,31649,39302,32592,24815,28748,36143,20809,24191,36891,29808,35268,22317,30789,24402,40863,38394,36712,39740,35809,30328,26690,26588,36330,36149,21053,36746,28378,26829,38149,37101,22269,26524,35065,36807,21704,31685,31688,31689,31690,31691,31693,31694,31695,31696,31698,31700,31701,31702,31703,31704,31707,31708,31710,31711,31712,31714,31715,31716,31719,31720,31721,31723,31724,31725,31727,31728,31730,31731,31732,31733,31734,31736,31737,31738,31739,31741,31743,31744,31745,31746,31747,31748,31749,31750,31752,31753,31754,31757,31758,31760,31761,31762,31763,31764,31765,31767,31768,31769,31770,31771,31772,31773,31774,31776,31777,31778,31779,31780,31781,31784,31785,31787,31788,31789,31790,31791,31792,31793,31794,31795,31796,31797,31798,31799,31801,31802,31803,31804,31805,31806,31810,39608,23401,28023,27686,20133,23475,39559,37219,25000,37039,38889,21547,28085,23506,20989,21898,32597,32752,25788,25421,26097,25022,24717,28938,27735,27721,22831,26477,33322,22741,22158,35946,27627,37085,22909,32791,21495,28009,21621,21917,33655,33743,26680,31166,21644,20309,21512,30418,35977,38402,27827,28088,36203,35088,40548,36154,22079,40657,30165,24456,29408,24680,21756,20136,27178,34913,24658,36720,21700,28888,34425,40511,27946,23439,24344,32418,21897,20399,29492,21564,21402,20505,21518,21628,20046,24573,29786,22774,33899,32993,34676,29392,31946,28246,31811,31812,31813,31814,31815,31816,31817,31818,31819,31820,31822,31823,31824,31825,31826,31827,31828,31829,31830,31831,31832,31833,31834,31835,31836,31837,31838,31839,31840,31841,31842,31843,31844,31845,31846,31847,31848,31849,31850,31851,31852,31853,31854,31855,31856,31857,31858,31861,31862,31863,31864,31865,31866,31870,31871,31872,31873,31874,31875,31876,31877,31878,31879,31880,31882,31883,31884,31885,31886,31887,31888,31891,31892,31894,31897,31898,31899,31904,31905,31907,31910,31911,31912,31913,31915,31916,31917,31919,31920,31924,31925,31926,31927,31928,31930,31931,24359,34382,21804,25252,20114,27818,25143,33457,21719,21326,29502,28369,30011,21010,21270,35805,27088,24458,24576,28142,22351,27426,29615,26707,36824,32531,25442,24739,21796,30186,35938,28949,28067,23462,24187,33618,24908,40644,30970,34647,31783,30343,20976,24822,29004,26179,24140,24653,35854,28784,25381,36745,24509,24674,34516,22238,27585,24724,24935,21321,24800,26214,36159,31229,20250,28905,27719,35763,35826,32472,33636,26127,23130,39746,27985,28151,35905,27963,20249,28779,33719,25110,24785,38669,36135,31096,20987,22334,22522,26426,30072,31293,31215,31637,31935,31936,31938,31939,31940,31942,31945,31947,31950,31951,31952,31953,31954,31955,31956,31960,31962,31963,31965,31966,31969,31970,31971,31972,31973,31974,31975,31977,31978,31979,31980,31981,31982,31984,31985,31986,31987,31988,31989,31990,31991,31993,31994,31996,31997,31998,31999,32000,32001,32002,32003,32004,32005,32006,32007,32008,32009,32011,32012,32013,32014,32015,32016,32017,32018,32019,32020,32021,32022,32023,32024,32025,32026,32027,32028,32029,32030,32031,32033,32035,32036,32037,32038,32040,32041,32042,32044,32045,32046,32048,32049,32050,32051,32052,32053,32054,32908,39269,36857,28608,35749,40481,23020,32489,32521,21513,26497,26840,36753,31821,38598,21450,24613,30142,27762,21363,23241,32423,25380,20960,33034,24049,34015,25216,20864,23395,20238,31085,21058,24760,27982,23492,23490,35745,35760,26082,24524,38469,22931,32487,32426,22025,26551,22841,20339,23478,21152,33626,39050,36158,30002,38078,20551,31292,20215,26550,39550,23233,27516,30417,22362,23574,31546,38388,29006,20860,32937,33392,22904,32516,33575,26816,26604,30897,30839,25315,25441,31616,20461,21098,20943,33616,27099,37492,36341,36145,35265,38190,31661,20214,32055,32056,32057,32058,32059,32060,32061,32062,32063,32064,32065,32066,32067,32068,32069,32070,32071,32072,32073,32074,32075,32076,32077,32078,32079,32080,32081,32082,32083,32084,32085,32086,32087,32088,32089,32090,32091,32092,32093,32094,32095,32096,32097,32098,32099,32100,32101,32102,32103,32104,32105,32106,32107,32108,32109,32111,32112,32113,32114,32115,32116,32117,32118,32120,32121,32122,32123,32124,32125,32126,32127,32128,32129,32130,32131,32132,32133,32134,32135,32136,32137,32138,32139,32140,32141,32142,32143,32144,32145,32146,32147,32148,32149,32150,32151,32152,20581,33328,21073,39279,28176,28293,28071,24314,20725,23004,23558,27974,27743,30086,33931,26728,22870,35762,21280,37233,38477,34121,26898,30977,28966,33014,20132,37066,27975,39556,23047,22204,25605,38128,30699,20389,33050,29409,35282,39290,32564,32478,21119,25945,37237,36735,36739,21483,31382,25581,25509,30342,31224,34903,38454,25130,21163,33410,26708,26480,25463,30571,31469,27905,32467,35299,22992,25106,34249,33445,30028,20511,20171,30117,35819,23626,24062,31563,26020,37329,20170,27941,35167,32039,38182,20165,35880,36827,38771,26187,31105,36817,28908,28024,32153,32154,32155,32156,32157,32158,32159,32160,32161,32162,32163,32164,32165,32167,32168,32169,32170,32171,32172,32173,32175,32176,32177,32178,32179,32180,32181,32182,32183,32184,32185,32186,32187,32188,32189,32190,32191,32192,32193,32194,32195,32196,32197,32198,32199,32200,32201,32202,32203,32204,32205,32206,32207,32208,32209,32210,32211,32212,32213,32214,32215,32216,32217,32218,32219,32220,32221,32222,32223,32224,32225,32226,32227,32228,32229,32230,32231,32232,32233,32234,32235,32236,32237,32238,32239,32240,32241,32242,32243,32244,32245,32246,32247,32248,32249,32250,23613,21170,33606,20834,33550,30555,26230,40120,20140,24778,31934,31923,32463,20117,35686,26223,39048,38745,22659,25964,38236,24452,30153,38742,31455,31454,20928,28847,31384,25578,31350,32416,29590,38893,20037,28792,20061,37202,21417,25937,26087,33276,33285,21646,23601,30106,38816,25304,29401,30141,23621,39545,33738,23616,21632,30697,20030,27822,32858,25298,25454,24040,20855,36317,36382,38191,20465,21477,24807,28844,21095,25424,40515,23071,20518,30519,21367,32482,25733,25899,25225,25496,20500,29237,35273,20915,35776,32477,22343,33740,38055,20891,21531,23803,32251,32252,32253,32254,32255,32256,32257,32258,32259,32260,32261,32262,32263,32264,32265,32266,32267,32268,32269,32270,32271,32272,32273,32274,32275,32276,32277,32278,32279,32280,32281,32282,32283,32284,32285,32286,32287,32288,32289,32290,32291,32292,32293,32294,32295,32296,32297,32298,32299,32300,32301,32302,32303,32304,32305,32306,32307,32308,32309,32310,32311,32312,32313,32314,32316,32317,32318,32319,32320,32322,32323,32324,32325,32326,32328,32329,32330,32331,32332,32333,32334,32335,32336,32337,32338,32339,32340,32341,32342,32343,32344,32345,32346,32347,32348,32349,20426,31459,27994,37089,39567,21888,21654,21345,21679,24320,25577,26999,20975,24936,21002,22570,21208,22350,30733,30475,24247,24951,31968,25179,25239,20130,28821,32771,25335,28900,38752,22391,33499,26607,26869,30933,39063,31185,22771,21683,21487,28212,20811,21051,23458,35838,32943,21827,22438,24691,22353,21549,31354,24656,23380,25511,25248,21475,25187,23495,26543,21741,31391,33510,37239,24211,35044,22840,22446,25358,36328,33007,22359,31607,20393,24555,23485,27454,21281,31568,29378,26694,30719,30518,26103,20917,20111,30420,23743,31397,33909,22862,39745,20608,32350,32351,32352,32353,32354,32355,32356,32357,32358,32359,32360,32361,32362,32363,32364,32365,32366,32367,32368,32369,32370,32371,32372,32373,32374,32375,32376,32377,32378,32379,32380,32381,32382,32383,32384,32385,32387,32388,32389,32390,32391,32392,32393,32394,32395,32396,32397,32398,32399,32400,32401,32402,32403,32404,32405,32406,32407,32408,32409,32410,32412,32413,32414,32430,32436,32443,32444,32470,32484,32492,32505,32522,32528,32542,32567,32569,32571,32572,32573,32574,32575,32576,32577,32579,32582,32583,32584,32585,32586,32587,32588,32589,32590,32591,32594,32595,39304,24871,28291,22372,26118,25414,22256,25324,25193,24275,38420,22403,25289,21895,34593,33098,36771,21862,33713,26469,36182,34013,23146,26639,25318,31726,38417,20848,28572,35888,25597,35272,25042,32518,28866,28389,29701,27028,29436,24266,37070,26391,28010,25438,21171,29282,32769,20332,23013,37226,28889,28061,21202,20048,38647,38253,34174,30922,32047,20769,22418,25794,32907,31867,27882,26865,26974,20919,21400,26792,29313,40654,31729,29432,31163,28435,29702,26446,37324,40100,31036,33673,33620,21519,26647,20029,21385,21169,30782,21382,21033,20616,20363,20432,32598,32601,32603,32604,32605,32606,32608,32611,32612,32613,32614,32615,32619,32620,32621,32623,32624,32627,32629,32630,32631,32632,32634,32635,32636,32637,32639,32640,32642,32643,32644,32645,32646,32647,32648,32649,32651,32653,32655,32656,32657,32658,32659,32661,32662,32663,32664,32665,32667,32668,32672,32674,32675,32677,32678,32680,32681,32682,32683,32684,32685,32686,32689,32691,32692,32693,32694,32695,32698,32699,32702,32704,32706,32707,32708,32710,32711,32712,32713,32715,32717,32719,32720,32721,32722,32723,32726,32727,32729,32730,32731,32732,32733,32734,32738,32739,30178,31435,31890,27813,38582,21147,29827,21737,20457,32852,33714,36830,38256,24265,24604,28063,24088,25947,33080,38142,24651,28860,32451,31918,20937,26753,31921,33391,20004,36742,37327,26238,20142,35845,25769,32842,20698,30103,29134,23525,36797,28518,20102,25730,38243,24278,26009,21015,35010,28872,21155,29454,29747,26519,30967,38678,20020,37051,40158,28107,20955,36161,21533,25294,29618,33777,38646,40836,38083,20278,32666,20940,28789,38517,23725,39046,21478,20196,28316,29705,27060,30827,39311,30041,21016,30244,27969,26611,20845,40857,32843,21657,31548,31423,32740,32743,32744,32746,32747,32748,32749,32751,32754,32756,32757,32758,32759,32760,32761,32762,32765,32766,32767,32770,32775,32776,32777,32778,32782,32783,32785,32787,32794,32795,32797,32798,32799,32801,32803,32804,32811,32812,32813,32814,32815,32816,32818,32820,32825,32826,32828,32830,32832,32833,32836,32837,32839,32840,32841,32846,32847,32848,32849,32851,32853,32854,32855,32857,32859,32860,32861,32862,32863,32864,32865,32866,32867,32868,32869,32870,32871,32872,32875,32876,32877,32878,32879,32880,32882,32883,32884,32885,32886,32887,32888,32889,32890,32891,32892,32893,38534,22404,25314,38471,27004,23044,25602,31699,28431,38475,33446,21346,39045,24208,28809,25523,21348,34383,40065,40595,30860,38706,36335,36162,40575,28510,31108,24405,38470,25134,39540,21525,38109,20387,26053,23653,23649,32533,34385,27695,24459,29575,28388,32511,23782,25371,23402,28390,21365,20081,25504,30053,25249,36718,20262,20177,27814,32438,35770,33821,34746,32599,36923,38179,31657,39585,35064,33853,27931,39558,32476,22920,40635,29595,30721,34434,39532,39554,22043,21527,22475,20080,40614,21334,36808,33033,30610,39314,34542,28385,34067,26364,24930,28459,32894,32897,32898,32901,32904,32906,32909,32910,32911,32912,32913,32914,32916,32917,32919,32921,32926,32931,32934,32935,32936,32940,32944,32947,32949,32950,32952,32953,32955,32965,32967,32968,32969,32970,32971,32975,32976,32977,32978,32979,32980,32981,32984,32991,32992,32994,32995,32998,33006,33013,33015,33017,33019,33022,33023,33024,33025,33027,33028,33029,33031,33032,33035,33036,33045,33047,33049,33051,33052,33053,33055,33056,33057,33058,33059,33060,33061,33062,33063,33064,33065,33066,33067,33069,33070,33072,33075,33076,33077,33079,33081,33082,33083,33084,33085,33087,35881,33426,33579,30450,27667,24537,33725,29483,33541,38170,27611,30683,38086,21359,33538,20882,24125,35980,36152,20040,29611,26522,26757,37238,38665,29028,27809,30473,23186,38209,27599,32654,26151,23504,22969,23194,38376,38391,20204,33804,33945,27308,30431,38192,29467,26790,23391,30511,37274,38753,31964,36855,35868,24357,31859,31192,35269,27852,34588,23494,24130,26825,30496,32501,20885,20813,21193,23081,32517,38754,33495,25551,30596,34256,31186,28218,24217,22937,34065,28781,27665,25279,30399,25935,24751,38397,26126,34719,40483,38125,21517,21629,35884,25720,33088,33089,33090,33091,33092,33093,33095,33097,33101,33102,33103,33106,33110,33111,33112,33115,33116,33117,33118,33119,33121,33122,33123,33124,33126,33128,33130,33131,33132,33135,33138,33139,33141,33142,33143,33144,33153,33155,33156,33157,33158,33159,33161,33163,33164,33165,33166,33168,33170,33171,33172,33173,33174,33175,33177,33178,33182,33183,33184,33185,33186,33188,33189,33191,33193,33195,33196,33197,33198,33199,33200,33201,33202,33204,33205,33206,33207,33208,33209,33212,33213,33214,33215,33220,33221,33223,33224,33225,33227,33229,33230,33231,33232,33233,33234,33235,25721,34321,27169,33180,30952,25705,39764,25273,26411,33707,22696,40664,27819,28448,23518,38476,35851,29279,26576,25287,29281,20137,22982,27597,22675,26286,24149,21215,24917,26408,30446,30566,29287,31302,25343,21738,21584,38048,37027,23068,32435,27670,20035,22902,32784,22856,21335,30007,38590,22218,25376,33041,24700,38393,28118,21602,39297,20869,23273,33021,22958,38675,20522,27877,23612,25311,20320,21311,33147,36870,28346,34091,25288,24180,30910,25781,25467,24565,23064,37247,40479,23615,25423,32834,23421,21870,38218,38221,28037,24744,26592,29406,20957,23425,33236,33237,33238,33239,33240,33241,33242,33243,33244,33245,33246,33247,33248,33249,33250,33252,33253,33254,33256,33257,33259,33262,33263,33264,33265,33266,33269,33270,33271,33272,33273,33274,33277,33279,33283,33287,33288,33289,33290,33291,33294,33295,33297,33299,33301,33302,33303,33304,33305,33306,33309,33312,33316,33317,33318,33319,33321,33326,33330,33338,33340,33341,33343,33344,33345,33346,33347,33349,33350,33352,33354,33356,33357,33358,33360,33361,33362,33363,33364,33365,33366,33367,33369,33371,33372,33373,33374,33376,33377,33378,33379,33380,33381,33382,33383,33385,25319,27870,29275,25197,38062,32445,33043,27987,20892,24324,22900,21162,24594,22899,26262,34384,30111,25386,25062,31983,35834,21734,27431,40485,27572,34261,21589,20598,27812,21866,36276,29228,24085,24597,29750,25293,25490,29260,24472,28227,27966,25856,28504,30424,30928,30460,30036,21028,21467,20051,24222,26049,32810,32982,25243,21638,21032,28846,34957,36305,27873,21624,32986,22521,35060,36180,38506,37197,20329,27803,21943,30406,30768,25256,28921,28558,24429,34028,26842,30844,31735,33192,26379,40527,25447,30896,22383,30738,38713,25209,25259,21128,29749,27607,33386,33387,33388,33389,33393,33397,33398,33399,33400,33403,33404,33408,33409,33411,33413,33414,33415,33417,33420,33424,33427,33428,33429,33430,33434,33435,33438,33440,33442,33443,33447,33458,33461,33462,33466,33467,33468,33471,33472,33474,33475,33477,33478,33481,33488,33494,33497,33498,33501,33506,33511,33512,33513,33514,33516,33517,33518,33520,33522,33523,33525,33526,33528,33530,33532,33533,33534,33535,33536,33546,33547,33549,33552,33554,33555,33558,33560,33561,33565,33566,33567,33568,33569,33570,33571,33572,33573,33574,33577,33578,33582,33584,33586,33591,33595,33597,21860,33086,30130,30382,21305,30174,20731,23617,35692,31687,20559,29255,39575,39128,28418,29922,31080,25735,30629,25340,39057,36139,21697,32856,20050,22378,33529,33805,24179,20973,29942,35780,23631,22369,27900,39047,23110,30772,39748,36843,31893,21078,25169,38138,20166,33670,33889,33769,33970,22484,26420,22275,26222,28006,35889,26333,28689,26399,27450,26646,25114,22971,19971,20932,28422,26578,27791,20854,26827,22855,27495,30054,23822,33040,40784,26071,31048,31041,39569,36215,23682,20062,20225,21551,22865,30732,22120,27668,36804,24323,27773,27875,35755,25488,33598,33599,33601,33602,33604,33605,33608,33610,33611,33612,33613,33614,33619,33621,33622,33623,33624,33625,33629,33634,33648,33649,33650,33651,33652,33653,33654,33657,33658,33662,33663,33664,33665,33666,33667,33668,33671,33672,33674,33675,33676,33677,33679,33680,33681,33684,33685,33686,33687,33689,33690,33693,33695,33697,33698,33699,33700,33701,33702,33703,33708,33709,33710,33711,33717,33723,33726,33727,33730,33731,33732,33734,33736,33737,33739,33741,33742,33744,33745,33746,33747,33749,33751,33753,33754,33755,33758,33762,33763,33764,33766,33767,33768,33771,33772,33773,24688,27965,29301,25190,38030,38085,21315,36801,31614,20191,35878,20094,40660,38065,38067,21069,28508,36963,27973,35892,22545,23884,27424,27465,26538,21595,33108,32652,22681,34103,24378,25250,27207,38201,25970,24708,26725,30631,20052,20392,24039,38808,25772,32728,23789,20431,31373,20999,33540,19988,24623,31363,38054,20405,20146,31206,29748,21220,33465,25810,31165,23517,27777,38738,36731,27682,20542,21375,28165,25806,26228,27696,24773,39031,35831,24198,29756,31351,31179,19992,37041,29699,27714,22234,37195,27845,36235,21306,34502,26354,36527,23624,39537,28192,33774,33775,33779,33780,33781,33782,33783,33786,33787,33788,33790,33791,33792,33794,33797,33799,33800,33801,33802,33808,33810,33811,33812,33813,33814,33815,33817,33818,33819,33822,33823,33824,33825,33826,33827,33833,33834,33835,33836,33837,33838,33839,33840,33842,33843,33844,33845,33846,33847,33849,33850,33851,33854,33855,33856,33857,33858,33859,33860,33861,33863,33864,33865,33866,33867,33868,33869,33870,33871,33872,33874,33875,33876,33877,33878,33880,33885,33886,33887,33888,33890,33892,33893,33894,33895,33896,33898,33902,33903,33904,33906,33908,33911,33913,33915,33916,21462,23094,40843,36259,21435,22280,39079,26435,37275,27849,20840,30154,25331,29356,21048,21149,32570,28820,30264,21364,40522,27063,30830,38592,35033,32676,28982,29123,20873,26579,29924,22756,25880,22199,35753,39286,25200,32469,24825,28909,22764,20161,20154,24525,38887,20219,35748,20995,22922,32427,25172,20173,26085,25102,33592,33993,33635,34701,29076,28342,23481,32466,20887,25545,26580,32905,33593,34837,20754,23418,22914,36785,20083,27741,20837,35109,36719,38446,34122,29790,38160,38384,28070,33509,24369,25746,27922,33832,33134,40131,22622,36187,19977,21441,33917,33918,33919,33920,33921,33923,33924,33925,33926,33930,33933,33935,33936,33937,33938,33939,33940,33941,33942,33944,33946,33947,33949,33950,33951,33952,33954,33955,33956,33957,33958,33959,33960,33961,33962,33963,33964,33965,33966,33968,33969,33971,33973,33974,33975,33979,33980,33982,33984,33986,33987,33989,33990,33991,33992,33995,33996,33998,33999,34002,34004,34005,34007,34008,34009,34010,34011,34012,34014,34017,34018,34020,34023,34024,34025,34026,34027,34029,34030,34031,34033,34034,34035,34036,34037,34038,34039,34040,34041,34042,34043,34045,34046,34048,34049,34050,20254,25955,26705,21971,20007,25620,39578,25195,23234,29791,33394,28073,26862,20711,33678,30722,26432,21049,27801,32433,20667,21861,29022,31579,26194,29642,33515,26441,23665,21024,29053,34923,38378,38485,25797,36193,33203,21892,27733,25159,32558,22674,20260,21830,36175,26188,19978,23578,35059,26786,25422,31245,28903,33421,21242,38902,23569,21736,37045,32461,22882,36170,34503,33292,33293,36198,25668,23556,24913,28041,31038,35774,30775,30003,21627,20280,36523,28145,23072,32453,31070,27784,23457,23158,29978,32958,24910,28183,22768,29983,29989,29298,21319,32499,34051,34052,34053,34054,34055,34056,34057,34058,34059,34061,34062,34063,34064,34066,34068,34069,34070,34072,34073,34075,34076,34077,34078,34080,34082,34083,34084,34085,34086,34087,34088,34089,34090,34093,34094,34095,34096,34097,34098,34099,34100,34101,34102,34110,34111,34112,34113,34114,34116,34117,34118,34119,34123,34124,34125,34126,34127,34128,34129,34130,34131,34132,34133,34135,34136,34138,34139,34140,34141,34143,34144,34145,34146,34147,34149,34150,34151,34153,34154,34155,34156,34157,34158,34159,34160,34161,34163,34165,34166,34167,34168,34172,34173,34175,34176,34177,30465,30427,21097,32988,22307,24072,22833,29422,26045,28287,35799,23608,34417,21313,30707,25342,26102,20160,39135,34432,23454,35782,21490,30690,20351,23630,39542,22987,24335,31034,22763,19990,26623,20107,25325,35475,36893,21183,26159,21980,22124,36866,20181,20365,37322,39280,27663,24066,24643,23460,35270,35797,25910,25163,39318,23432,23551,25480,21806,21463,30246,20861,34092,26530,26803,27530,25234,36755,21460,33298,28113,30095,20070,36174,23408,29087,34223,26257,26329,32626,34560,40653,40736,23646,26415,36848,26641,26463,25101,31446,22661,24246,25968,28465,34178,34179,34182,34184,34185,34186,34187,34188,34189,34190,34192,34193,34194,34195,34196,34197,34198,34199,34200,34201,34202,34205,34206,34207,34208,34209,34210,34211,34213,34214,34215,34217,34219,34220,34221,34225,34226,34227,34228,34229,34230,34232,34234,34235,34236,34237,34238,34239,34240,34242,34243,34244,34245,34246,34247,34248,34250,34251,34252,34253,34254,34257,34258,34260,34262,34263,34264,34265,34266,34267,34269,34270,34271,34272,34273,34274,34275,34277,34278,34279,34280,34282,34283,34284,34285,34286,34287,34288,34289,34290,34291,34292,34293,34294,34295,34296,24661,21047,32781,25684,34928,29993,24069,26643,25332,38684,21452,29245,35841,27700,30561,31246,21550,30636,39034,33308,35828,30805,26388,28865,26031,25749,22070,24605,31169,21496,19997,27515,32902,23546,21987,22235,20282,20284,39282,24051,26494,32824,24578,39042,36865,23435,35772,35829,25628,33368,25822,22013,33487,37221,20439,32032,36895,31903,20723,22609,28335,23487,35785,32899,37240,33948,31639,34429,38539,38543,32485,39635,30862,23681,31319,36930,38567,31071,23385,25439,31499,34001,26797,21766,32553,29712,32034,38145,25152,22604,20182,23427,22905,22612,34297,34298,34300,34301,34302,34304,34305,34306,34307,34308,34310,34311,34312,34313,34314,34315,34316,34317,34318,34319,34320,34322,34323,34324,34325,34327,34328,34329,34330,34331,34332,34333,34334,34335,34336,34337,34338,34339,34340,34341,34342,34344,34346,34347,34348,34349,34350,34351,34352,34353,34354,34355,34356,34357,34358,34359,34361,34362,34363,34365,34366,34367,34368,34369,34370,34371,34372,34373,34374,34375,34376,34377,34378,34379,34380,34386,34387,34389,34390,34391,34392,34393,34395,34396,34397,34399,34400,34401,34403,34404,34405,34406,34407,34408,34409,34410,29549,25374,36427,36367,32974,33492,25260,21488,27888,37214,22826,24577,27760,22349,25674,36138,30251,28393,22363,27264,30192,28525,35885,35848,22374,27631,34962,30899,25506,21497,28845,27748,22616,25642,22530,26848,33179,21776,31958,20504,36538,28108,36255,28907,25487,28059,28372,32486,33796,26691,36867,28120,38518,35752,22871,29305,34276,33150,30140,35466,26799,21076,36386,38161,25552,39064,36420,21884,20307,26367,22159,24789,28053,21059,23625,22825,28155,22635,30000,29980,24684,33300,33094,25361,26465,36834,30522,36339,36148,38081,24086,21381,21548,28867,34413,34415,34416,34418,34419,34420,34421,34422,34423,34424,34435,34436,34437,34438,34439,34440,34441,34446,34447,34448,34449,34450,34452,34454,34455,34456,34457,34458,34459,34462,34463,34464,34465,34466,34469,34470,34475,34477,34478,34482,34483,34487,34488,34489,34491,34492,34493,34494,34495,34497,34498,34499,34501,34504,34508,34509,34514,34515,34517,34518,34519,34522,34524,34525,34528,34529,34530,34531,34533,34534,34535,34536,34538,34539,34540,34543,34549,34550,34551,34554,34555,34556,34557,34559,34561,34564,34565,34566,34571,34572,34574,34575,34576,34577,34580,34582,27712,24311,20572,20141,24237,25402,33351,36890,26704,37230,30643,21516,38108,24420,31461,26742,25413,31570,32479,30171,20599,25237,22836,36879,20984,31171,31361,22270,24466,36884,28034,23648,22303,21520,20820,28237,22242,25512,39059,33151,34581,35114,36864,21534,23663,33216,25302,25176,33073,40501,38464,39534,39548,26925,22949,25299,21822,25366,21703,34521,27964,23043,29926,34972,27498,22806,35916,24367,28286,29609,39037,20024,28919,23436,30871,25405,26202,30358,24779,23451,23113,19975,33109,27754,29579,20129,26505,32593,24448,26106,26395,24536,22916,23041,34585,34587,34589,34591,34592,34596,34598,34599,34600,34602,34603,34604,34605,34607,34608,34610,34611,34613,34614,34616,34617,34618,34620,34621,34624,34625,34626,34627,34628,34629,34630,34634,34635,34637,34639,34640,34641,34642,34644,34645,34646,34648,34650,34651,34652,34653,34654,34655,34657,34658,34662,34663,34664,34665,34666,34667,34668,34669,34671,34673,34674,34675,34677,34679,34680,34681,34682,34687,34688,34689,34692,34694,34695,34697,34698,34700,34702,34703,34704,34705,34706,34708,34709,34710,34712,34713,34714,34715,34716,34717,34718,34720,34721,34722,34723,34724,24013,24494,21361,38886,36829,26693,22260,21807,24799,20026,28493,32500,33479,33806,22996,20255,20266,23614,32428,26410,34074,21619,30031,32963,21890,39759,20301,28205,35859,23561,24944,21355,30239,28201,34442,25991,38395,32441,21563,31283,32010,38382,21985,32705,29934,25373,34583,28065,31389,25105,26017,21351,25569,27779,24043,21596,38056,20044,27745,35820,23627,26080,33436,26791,21566,21556,27595,27494,20116,25410,21320,33310,20237,20398,22366,25098,38654,26212,29289,21247,21153,24735,35823,26132,29081,26512,35199,30802,30717,26224,22075,21560,38177,29306,34725,34726,34727,34729,34730,34734,34736,34737,34738,34740,34742,34743,34744,34745,34747,34748,34750,34751,34753,34754,34755,34756,34757,34759,34760,34761,34764,34765,34766,34767,34768,34772,34773,34774,34775,34776,34777,34778,34780,34781,34782,34783,34785,34786,34787,34788,34790,34791,34792,34793,34795,34796,34797,34799,34800,34801,34802,34803,34804,34805,34806,34807,34808,34810,34811,34812,34813,34815,34816,34817,34818,34820,34821,34822,34823,34824,34825,34827,34828,34829,34830,34831,34832,34833,34834,34836,34839,34840,34841,34842,34844,34845,34846,34847,34848,34851,31232,24687,24076,24713,33181,22805,24796,29060,28911,28330,27728,29312,27268,34989,24109,20064,23219,21916,38115,27927,31995,38553,25103,32454,30606,34430,21283,38686,36758,26247,23777,20384,29421,19979,21414,22799,21523,25472,38184,20808,20185,40092,32420,21688,36132,34900,33335,38386,28046,24358,23244,26174,38505,29616,29486,21439,33146,39301,32673,23466,38519,38480,32447,30456,21410,38262,39321,31665,35140,28248,20065,32724,31077,35814,24819,21709,20139,39033,24055,27233,20687,21521,35937,33831,30813,38660,21066,21742,22179,38144,28040,23477,28102,26195,34852,34853,34854,34855,34856,34857,34858,34859,34860,34861,34862,34863,34864,34865,34867,34868,34869,34870,34871,34872,34874,34875,34877,34878,34879,34881,34882,34883,34886,34887,34888,34889,34890,34891,34894,34895,34896,34897,34898,34899,34901,34902,34904,34906,34907,34908,34909,34910,34911,34912,34918,34919,34922,34925,34927,34929,34931,34932,34933,34934,34936,34937,34938,34939,34940,34944,34947,34950,34951,34953,34954,34956,34958,34959,34960,34961,34963,34964,34965,34967,34968,34969,34970,34971,34973,34974,34975,34976,34977,34979,34981,34982,34983,34984,34985,34986,23567,23389,26657,32918,21880,31505,25928,26964,20123,27463,34638,38795,21327,25375,25658,37034,26012,32961,35856,20889,26800,21368,34809,25032,27844,27899,35874,23633,34218,33455,38156,27427,36763,26032,24571,24515,20449,34885,26143,33125,29481,24826,20852,21009,22411,24418,37026,34892,37266,24184,26447,24615,22995,20804,20982,33016,21256,27769,38596,29066,20241,20462,32670,26429,21957,38152,31168,34966,32483,22687,25100,38656,34394,22040,39035,24464,35768,33988,37207,21465,26093,24207,30044,24676,32110,23167,32490,32493,36713,21927,23459,24748,26059,29572,34988,34990,34991,34992,34994,34995,34996,34997,34998,35000,35001,35002,35003,35005,35006,35007,35008,35011,35012,35015,35016,35018,35019,35020,35021,35023,35024,35025,35027,35030,35031,35034,35035,35036,35037,35038,35040,35041,35046,35047,35049,35050,35051,35052,35053,35054,35055,35058,35061,35062,35063,35066,35067,35069,35071,35072,35073,35075,35076,35077,35078,35079,35080,35081,35083,35084,35085,35086,35087,35089,35092,35093,35094,35095,35096,35100,35101,35102,35103,35104,35106,35107,35108,35110,35111,35112,35113,35116,35117,35118,35119,35121,35122,35123,35125,35127,36873,30307,30505,32474,38772,34203,23398,31348,38634,34880,21195,29071,24490,26092,35810,23547,39535,24033,27529,27739,35757,35759,36874,36805,21387,25276,40486,40493,21568,20011,33469,29273,34460,23830,34905,28079,38597,21713,20122,35766,28937,21693,38409,28895,28153,30416,20005,30740,34578,23721,24310,35328,39068,38414,28814,27839,22852,25513,30524,34893,28436,33395,22576,29141,21388,30746,38593,21761,24422,28976,23476,35866,39564,27523,22830,40495,31207,26472,25196,20335,30113,32650,27915,38451,27687,20208,30162,20859,26679,28478,36992,33136,22934,29814,35128,35129,35130,35131,35132,35133,35134,35135,35136,35138,35139,35141,35142,35143,35144,35145,35146,35147,35148,35149,35150,35151,35152,35153,35154,35155,35156,35157,35158,35159,35160,35161,35162,35163,35164,35165,35168,35169,35170,35171,35172,35173,35175,35176,35177,35178,35179,35180,35181,35182,35183,35184,35185,35186,35187,35188,35189,35190,35191,35192,35193,35194,35196,35197,35198,35200,35202,35204,35205,35207,35208,35209,35210,35211,35212,35213,35214,35215,35216,35217,35218,35219,35220,35221,35222,35223,35224,35225,35226,35227,35228,35229,35230,35231,35232,35233,25671,23591,36965,31377,35875,23002,21676,33280,33647,35201,32768,26928,22094,32822,29239,37326,20918,20063,39029,25494,19994,21494,26355,33099,22812,28082,19968,22777,21307,25558,38129,20381,20234,34915,39056,22839,36951,31227,20202,33008,30097,27778,23452,23016,24413,26885,34433,20506,24050,20057,30691,20197,33402,25233,26131,37009,23673,20159,24441,33222,36920,32900,30123,20134,35028,24847,27589,24518,20041,30410,28322,35811,35758,35850,35793,24322,32764,32716,32462,33589,33643,22240,27575,38899,38452,23035,21535,38134,28139,23493,39278,23609,24341,38544,35234,35235,35236,35237,35238,35239,35240,35241,35242,35243,35244,35245,35246,35247,35248,35249,35250,35251,35252,35253,35254,35255,35256,35257,35258,35259,35260,35261,35262,35263,35264,35267,35277,35283,35284,35285,35287,35288,35289,35291,35293,35295,35296,35297,35298,35300,35303,35304,35305,35306,35308,35309,35310,35312,35313,35314,35316,35317,35318,35319,35320,35321,35322,35323,35324,35325,35326,35327,35329,35330,35331,35332,35333,35334,35336,35337,35338,35339,35340,35341,35342,35343,35344,35345,35346,35347,35348,35349,35350,35351,35352,35353,35354,35355,35356,35357,21360,33521,27185,23156,40560,24212,32552,33721,33828,33829,33639,34631,36814,36194,30408,24433,39062,30828,26144,21727,25317,20323,33219,30152,24248,38605,36362,34553,21647,27891,28044,27704,24703,21191,29992,24189,20248,24736,24551,23588,30001,37038,38080,29369,27833,28216,37193,26377,21451,21491,20305,37321,35825,21448,24188,36802,28132,20110,30402,27014,34398,24858,33286,20313,20446,36926,40060,24841,28189,28180,38533,20104,23089,38632,19982,23679,31161,23431,35821,32701,29577,22495,33419,37057,21505,36935,21947,23786,24481,24840,27442,29425,32946,35465,35358,35359,35360,35361,35362,35363,35364,35365,35366,35367,35368,35369,35370,35371,35372,35373,35374,35375,35376,35377,35378,35379,35380,35381,35382,35383,35384,35385,35386,35387,35388,35389,35391,35392,35393,35394,35395,35396,35397,35398,35399,35401,35402,35403,35404,35405,35406,35407,35408,35409,35410,35411,35412,35413,35414,35415,35416,35417,35418,35419,35420,35421,35422,35423,35424,35425,35426,35427,35428,35429,35430,35431,35432,35433,35434,35435,35436,35437,35438,35439,35440,35441,35442,35443,35444,35445,35446,35447,35448,35450,35451,35452,35453,35454,35455,35456,28020,23507,35029,39044,35947,39533,40499,28170,20900,20803,22435,34945,21407,25588,36757,22253,21592,22278,29503,28304,32536,36828,33489,24895,24616,38498,26352,32422,36234,36291,38053,23731,31908,26376,24742,38405,32792,20113,37095,21248,38504,20801,36816,34164,37213,26197,38901,23381,21277,30776,26434,26685,21705,28798,23472,36733,20877,22312,21681,25874,26242,36190,36163,33039,33900,36973,31967,20991,34299,26531,26089,28577,34468,36481,22122,36896,30338,28790,29157,36131,25321,21017,27901,36156,24590,22686,24974,26366,36192,25166,21939,28195,26413,36711,35457,35458,35459,35460,35461,35462,35463,35464,35467,35468,35469,35470,35471,35472,35473,35474,35476,35477,35478,35479,35480,35481,35482,35483,35484,35485,35486,35487,35488,35489,35490,35491,35492,35493,35494,35495,35496,35497,35498,35499,35500,35501,35502,35503,35504,35505,35506,35507,35508,35509,35510,35511,35512,35513,35514,35515,35516,35517,35518,35519,35520,35521,35522,35523,35524,35525,35526,35527,35528,35529,35530,35531,35532,35533,35534,35535,35536,35537,35538,35539,35540,35541,35542,35543,35544,35545,35546,35547,35548,35549,35550,35551,35552,35553,35554,35555,38113,38392,30504,26629,27048,21643,20045,28856,35784,25688,25995,23429,31364,20538,23528,30651,27617,35449,31896,27838,30415,26025,36759,23853,23637,34360,26632,21344,25112,31449,28251,32509,27167,31456,24432,28467,24352,25484,28072,26454,19976,24080,36134,20183,32960,30260,38556,25307,26157,25214,27836,36213,29031,32617,20806,32903,21484,36974,25240,21746,34544,36761,32773,38167,34071,36825,27993,29645,26015,30495,29956,30759,33275,36126,38024,20390,26517,30137,35786,38663,25391,38215,38453,33976,25379,30529,24449,29424,20105,24596,25972,25327,27491,25919,35556,35557,35558,35559,35560,35561,35562,35563,35564,35565,35566,35567,35568,35569,35570,35571,35572,35573,35574,35575,35576,35577,35578,35579,35580,35581,35582,35583,35584,35585,35586,35587,35588,35589,35590,35592,35593,35594,35595,35596,35597,35598,35599,35600,35601,35602,35603,35604,35605,35606,35607,35608,35609,35610,35611,35612,35613,35614,35615,35616,35617,35618,35619,35620,35621,35623,35624,35625,35626,35627,35628,35629,35630,35631,35632,35633,35634,35635,35636,35637,35638,35639,35640,35641,35642,35643,35644,35645,35646,35647,35648,35649,35650,35651,35652,35653,24103,30151,37073,35777,33437,26525,25903,21553,34584,30693,32930,33026,27713,20043,32455,32844,30452,26893,27542,25191,20540,20356,22336,25351,27490,36286,21482,26088,32440,24535,25370,25527,33267,33268,32622,24092,23769,21046,26234,31209,31258,36136,28825,30164,28382,27835,31378,20013,30405,24544,38047,34935,32456,31181,32959,37325,20210,20247,33311,21608,24030,27954,35788,31909,36724,32920,24090,21650,30385,23449,26172,39588,29664,26666,34523,26417,29482,35832,35803,36880,31481,28891,29038,25284,30633,22065,20027,33879,26609,21161,34496,36142,38136,31569,35654,35655,35656,35657,35658,35659,35660,35661,35662,35663,35664,35665,35666,35667,35668,35669,35670,35671,35672,35673,35674,35675,35676,35677,35678,35679,35680,35681,35682,35683,35684,35685,35687,35688,35689,35690,35691,35693,35694,35695,35696,35697,35698,35699,35700,35701,35702,35703,35704,35705,35706,35707,35708,35709,35710,35711,35712,35713,35714,35715,35716,35717,35718,35719,35720,35721,35722,35723,35724,35725,35726,35727,35728,35729,35730,35731,35732,35733,35734,35735,35736,35737,35738,35739,35740,35741,35742,35743,35756,35761,35771,35783,35792,35818,35849,35870,20303,27880,31069,39547,25235,29226,25341,19987,30742,36716,25776,36186,31686,26729,24196,35013,22918,25758,22766,29366,26894,38181,36861,36184,22368,32512,35846,20934,25417,25305,21331,26700,29730,33537,37196,21828,30528,28796,27978,20857,21672,36164,23039,28363,28100,23388,32043,20180,31869,28371,23376,33258,28173,23383,39683,26837,36394,23447,32508,24635,32437,37049,36208,22863,25549,31199,36275,21330,26063,31062,35781,38459,32452,38075,32386,22068,37257,26368,32618,23562,36981,26152,24038,20304,26590,20570,20316,22352,24231,59408,59409,59410,59411,59412,35896,35897,35898,35899,35900,35901,35902,35903,35904,35906,35907,35908,35909,35912,35914,35915,35917,35918,35919,35920,35921,35922,35923,35924,35926,35927,35928,35929,35931,35932,35933,35934,35935,35936,35939,35940,35941,35942,35943,35944,35945,35948,35949,35950,35951,35952,35953,35954,35956,35957,35958,35959,35963,35964,35965,35966,35967,35968,35969,35971,35972,35974,35975,35976,35979,35981,35982,35983,35984,35985,35986,35987,35989,35990,35991,35993,35994,35995,35996,35997,35998,35999,36000,36001,36002,36003,36004,36005,36006,36007,36008,36009,36010,36011,36012,36013,20109,19980,20800,19984,24319,21317,19989,20120,19998,39730,23404,22121,20008,31162,20031,21269,20039,22829,29243,21358,27664,22239,32996,39319,27603,30590,40727,20022,20127,40720,20060,20073,20115,33416,23387,21868,22031,20164,21389,21405,21411,21413,21422,38757,36189,21274,21493,21286,21294,21310,36188,21350,21347,20994,21000,21006,21037,21043,21055,21056,21068,21086,21089,21084,33967,21117,21122,21121,21136,21139,20866,32596,20155,20163,20169,20162,20200,20193,20203,20190,20251,20211,20258,20324,20213,20261,20263,20233,20267,20318,20327,25912,20314,20317,36014,36015,36016,36017,36018,36019,36020,36021,36022,36023,36024,36025,36026,36027,36028,36029,36030,36031,36032,36033,36034,36035,36036,36037,36038,36039,36040,36041,36042,36043,36044,36045,36046,36047,36048,36049,36050,36051,36052,36053,36054,36055,36056,36057,36058,36059,36060,36061,36062,36063,36064,36065,36066,36067,36068,36069,36070,36071,36072,36073,36074,36075,36076,36077,36078,36079,36080,36081,36082,36083,36084,36085,36086,36087,36088,36089,36090,36091,36092,36093,36094,36095,36096,36097,36098,36099,36100,36101,36102,36103,36104,36105,36106,36107,36108,36109,20319,20311,20274,20285,20342,20340,20369,20361,20355,20367,20350,20347,20394,20348,20396,20372,20454,20456,20458,20421,20442,20451,20444,20433,20447,20472,20521,20556,20467,20524,20495,20526,20525,20478,20508,20492,20517,20520,20606,20547,20565,20552,20558,20588,20603,20645,20647,20649,20666,20694,20742,20717,20716,20710,20718,20743,20747,20189,27709,20312,20325,20430,40864,27718,31860,20846,24061,40649,39320,20865,22804,21241,21261,35335,21264,20971,22809,20821,20128,20822,20147,34926,34980,20149,33044,35026,31104,23348,34819,32696,20907,20913,20925,20924,36110,36111,36112,36113,36114,36115,36116,36117,36118,36119,36120,36121,36122,36123,36124,36128,36177,36178,36183,36191,36197,36200,36201,36202,36204,36206,36207,36209,36210,36216,36217,36218,36219,36220,36221,36222,36223,36224,36226,36227,36230,36231,36232,36233,36236,36237,36238,36239,36240,36242,36243,36245,36246,36247,36248,36249,36250,36251,36252,36253,36254,36256,36257,36258,36260,36261,36262,36263,36264,36265,36266,36267,36268,36269,36270,36271,36272,36274,36278,36279,36281,36283,36285,36288,36289,36290,36293,36295,36296,36297,36298,36301,36304,36306,36307,36308,20935,20886,20898,20901,35744,35750,35751,35754,35764,35765,35767,35778,35779,35787,35791,35790,35794,35795,35796,35798,35800,35801,35804,35807,35808,35812,35816,35817,35822,35824,35827,35830,35833,35836,35839,35840,35842,35844,35847,35852,35855,35857,35858,35860,35861,35862,35865,35867,35864,35869,35871,35872,35873,35877,35879,35882,35883,35886,35887,35890,35891,35893,35894,21353,21370,38429,38434,38433,38449,38442,38461,38460,38466,38473,38484,38495,38503,38508,38514,38516,38536,38541,38551,38576,37015,37019,37021,37017,37036,37025,37044,37043,37046,37050,36309,36312,36313,36316,36320,36321,36322,36325,36326,36327,36329,36333,36334,36336,36337,36338,36340,36342,36348,36350,36351,36352,36353,36354,36355,36356,36358,36359,36360,36363,36365,36366,36368,36369,36370,36371,36373,36374,36375,36376,36377,36378,36379,36380,36384,36385,36388,36389,36390,36391,36392,36395,36397,36400,36402,36403,36404,36406,36407,36408,36411,36412,36414,36415,36419,36421,36422,36428,36429,36430,36431,36432,36435,36436,36437,36438,36439,36440,36442,36443,36444,36445,36446,36447,36448,36449,36450,36451,36452,36453,36455,36456,36458,36459,36462,36465,37048,37040,37071,37061,37054,37072,37060,37063,37075,37094,37090,37084,37079,37083,37099,37103,37118,37124,37154,37150,37155,37169,37167,37177,37187,37190,21005,22850,21154,21164,21165,21182,21759,21200,21206,21232,21471,29166,30669,24308,20981,20988,39727,21430,24321,30042,24047,22348,22441,22433,22654,22716,22725,22737,22313,22316,22314,22323,22329,22318,22319,22364,22331,22338,22377,22405,22379,22406,22396,22395,22376,22381,22390,22387,22445,22436,22412,22450,22479,22439,22452,22419,22432,22485,22488,22490,22489,22482,22456,22516,22511,22520,22500,22493,36467,36469,36471,36472,36473,36474,36475,36477,36478,36480,36482,36483,36484,36486,36488,36489,36490,36491,36492,36493,36494,36497,36498,36499,36501,36502,36503,36504,36505,36506,36507,36509,36511,36512,36513,36514,36515,36516,36517,36518,36519,36520,36521,36522,36525,36526,36528,36529,36531,36532,36533,36534,36535,36536,36537,36539,36540,36541,36542,36543,36544,36545,36546,36547,36548,36549,36550,36551,36552,36553,36554,36555,36556,36557,36559,36560,36561,36562,36563,36564,36565,36566,36567,36568,36569,36570,36571,36572,36573,36574,36575,36576,36577,36578,36579,36580,22539,22541,22525,22509,22528,22558,22553,22596,22560,22629,22636,22657,22665,22682,22656,39336,40729,25087,33401,33405,33407,33423,33418,33448,33412,33422,33425,33431,33433,33451,33464,33470,33456,33480,33482,33507,33432,33463,33454,33483,33484,33473,33449,33460,33441,33450,33439,33476,33486,33444,33505,33545,33527,33508,33551,33543,33500,33524,33490,33496,33548,33531,33491,33553,33562,33542,33556,33557,33504,33493,33564,33617,33627,33628,33544,33682,33596,33588,33585,33691,33630,33583,33615,33607,33603,33631,33600,33559,33632,33581,33594,33587,33638,33637,36581,36582,36583,36584,36585,36586,36587,36588,36589,36590,36591,36592,36593,36594,36595,36596,36597,36598,36599,36600,36601,36602,36603,36604,36605,36606,36607,36608,36609,36610,36611,36612,36613,36614,36615,36616,36617,36618,36619,36620,36621,36622,36623,36624,36625,36626,36627,36628,36629,36630,36631,36632,36633,36634,36635,36636,36637,36638,36639,36640,36641,36642,36643,36644,36645,36646,36647,36648,36649,36650,36651,36652,36653,36654,36655,36656,36657,36658,36659,36660,36661,36662,36663,36664,36665,36666,36667,36668,36669,36670,36671,36672,36673,36674,36675,36676,33640,33563,33641,33644,33642,33645,33646,33712,33656,33715,33716,33696,33706,33683,33692,33669,33660,33718,33705,33661,33720,33659,33688,33694,33704,33722,33724,33729,33793,33765,33752,22535,33816,33803,33757,33789,33750,33820,33848,33809,33798,33748,33759,33807,33795,33784,33785,33770,33733,33728,33830,33776,33761,33884,33873,33882,33881,33907,33927,33928,33914,33929,33912,33852,33862,33897,33910,33932,33934,33841,33901,33985,33997,34000,34022,33981,34003,33994,33983,33978,34016,33953,33977,33972,33943,34021,34019,34060,29965,34104,34032,34105,34079,34106,36677,36678,36679,36680,36681,36682,36683,36684,36685,36686,36687,36688,36689,36690,36691,36692,36693,36694,36695,36696,36697,36698,36699,36700,36701,36702,36703,36704,36705,36706,36707,36708,36709,36714,36736,36748,36754,36765,36768,36769,36770,36772,36773,36774,36775,36778,36780,36781,36782,36783,36786,36787,36788,36789,36791,36792,36794,36795,36796,36799,36800,36803,36806,36809,36810,36811,36812,36813,36815,36818,36822,36823,36826,36832,36833,36835,36839,36844,36847,36849,36850,36852,36853,36854,36858,36859,36860,36862,36863,36871,36872,36876,36878,36883,36885,36888,34134,34107,34047,34044,34137,34120,34152,34148,34142,34170,30626,34115,34162,34171,34212,34216,34183,34191,34169,34222,34204,34181,34233,34231,34224,34259,34241,34268,34303,34343,34309,34345,34326,34364,24318,24328,22844,22849,32823,22869,22874,22872,21263,23586,23589,23596,23604,25164,25194,25247,25275,25290,25306,25303,25326,25378,25334,25401,25419,25411,25517,25590,25457,25466,25486,25524,25453,25516,25482,25449,25518,25532,25586,25592,25568,25599,25540,25566,25550,25682,25542,25534,25669,25665,25611,25627,25632,25612,25638,25633,25694,25732,25709,25750,36889,36892,36899,36900,36901,36903,36904,36905,36906,36907,36908,36912,36913,36914,36915,36916,36919,36921,36922,36925,36927,36928,36931,36933,36934,36936,36937,36938,36939,36940,36942,36948,36949,36950,36953,36954,36956,36957,36958,36959,36960,36961,36964,36966,36967,36969,36970,36971,36972,36975,36976,36977,36978,36979,36982,36983,36984,36985,36986,36987,36988,36990,36993,36996,36997,36998,36999,37001,37002,37004,37005,37006,37007,37008,37010,37012,37014,37016,37018,37020,37022,37023,37024,37028,37029,37031,37032,37033,37035,37037,37042,37047,37052,37053,37055,37056,25722,25783,25784,25753,25786,25792,25808,25815,25828,25826,25865,25893,25902,24331,24530,29977,24337,21343,21489,21501,21481,21480,21499,21522,21526,21510,21579,21586,21587,21588,21590,21571,21537,21591,21593,21539,21554,21634,21652,21623,21617,21604,21658,21659,21636,21622,21606,21661,21712,21677,21698,21684,21714,21671,21670,21715,21716,21618,21667,21717,21691,21695,21708,21721,21722,21724,21673,21674,21668,21725,21711,21726,21787,21735,21792,21757,21780,21747,21794,21795,21775,21777,21799,21802,21863,21903,21941,21833,21869,21825,21845,21823,21840,21820,37058,37059,37062,37064,37065,37067,37068,37069,37074,37076,37077,37078,37080,37081,37082,37086,37087,37088,37091,37092,37093,37097,37098,37100,37102,37104,37105,37106,37107,37109,37110,37111,37113,37114,37115,37116,37119,37120,37121,37123,37125,37126,37127,37128,37129,37130,37131,37132,37133,37134,37135,37136,37137,37138,37139,37140,37141,37142,37143,37144,37146,37147,37148,37149,37151,37152,37153,37156,37157,37158,37159,37160,37161,37162,37163,37164,37165,37166,37168,37170,37171,37172,37173,37174,37175,37176,37178,37179,37180,37181,37182,37183,37184,37185,37186,37188,21815,21846,21877,21878,21879,21811,21808,21852,21899,21970,21891,21937,21945,21896,21889,21919,21886,21974,21905,21883,21983,21949,21950,21908,21913,21994,22007,21961,22047,21969,21995,21996,21972,21990,21981,21956,21999,21989,22002,22003,21964,21965,21992,22005,21988,36756,22046,22024,22028,22017,22052,22051,22014,22016,22055,22061,22104,22073,22103,22060,22093,22114,22105,22108,22092,22100,22150,22116,22129,22123,22139,22140,22149,22163,22191,22228,22231,22237,22241,22261,22251,22265,22271,22276,22282,22281,22300,24079,24089,24084,24081,24113,24123,24124,37189,37191,37192,37201,37203,37204,37205,37206,37208,37209,37211,37212,37215,37216,37222,37223,37224,37227,37229,37235,37242,37243,37244,37248,37249,37250,37251,37252,37254,37256,37258,37262,37263,37267,37268,37269,37270,37271,37272,37273,37276,37277,37278,37279,37280,37281,37284,37285,37286,37287,37288,37289,37291,37292,37296,37297,37298,37299,37302,37303,37304,37305,37307,37308,37309,37310,37311,37312,37313,37314,37315,37316,37317,37318,37320,37323,37328,37330,37331,37332,37333,37334,37335,37336,37337,37338,37339,37341,37342,37343,37344,37345,37346,37347,37348,37349,24119,24132,24148,24155,24158,24161,23692,23674,23693,23696,23702,23688,23704,23705,23697,23706,23708,23733,23714,23741,23724,23723,23729,23715,23745,23735,23748,23762,23780,23755,23781,23810,23811,23847,23846,23854,23844,23838,23814,23835,23896,23870,23860,23869,23916,23899,23919,23901,23915,23883,23882,23913,23924,23938,23961,23965,35955,23991,24005,24435,24439,24450,24455,24457,24460,24469,24473,24476,24488,24493,24501,24508,34914,24417,29357,29360,29364,29367,29368,29379,29377,29390,29389,29394,29416,29423,29417,29426,29428,29431,29441,29427,29443,29434,37350,37351,37352,37353,37354,37355,37356,37357,37358,37359,37360,37361,37362,37363,37364,37365,37366,37367,37368,37369,37370,37371,37372,37373,37374,37375,37376,37377,37378,37379,37380,37381,37382,37383,37384,37385,37386,37387,37388,37389,37390,37391,37392,37393,37394,37395,37396,37397,37398,37399,37400,37401,37402,37403,37404,37405,37406,37407,37408,37409,37410,37411,37412,37413,37414,37415,37416,37417,37418,37419,37420,37421,37422,37423,37424,37425,37426,37427,37428,37429,37430,37431,37432,37433,37434,37435,37436,37437,37438,37439,37440,37441,37442,37443,37444,37445,29435,29463,29459,29473,29450,29470,29469,29461,29474,29497,29477,29484,29496,29489,29520,29517,29527,29536,29548,29551,29566,33307,22821,39143,22820,22786,39267,39271,39272,39273,39274,39275,39276,39284,39287,39293,39296,39300,39303,39306,39309,39312,39313,39315,39316,39317,24192,24209,24203,24214,24229,24224,24249,24245,24254,24243,36179,24274,24273,24283,24296,24298,33210,24516,24521,24534,24527,24579,24558,24580,24545,24548,24574,24581,24582,24554,24557,24568,24601,24629,24614,24603,24591,24589,24617,24619,24586,24639,24609,24696,24697,24699,24698,24642,37446,37447,37448,37449,37450,37451,37452,37453,37454,37455,37456,37457,37458,37459,37460,37461,37462,37463,37464,37465,37466,37467,37468,37469,37470,37471,37472,37473,37474,37475,37476,37477,37478,37479,37480,37481,37482,37483,37484,37485,37486,37487,37488,37489,37490,37491,37493,37494,37495,37496,37497,37498,37499,37500,37501,37502,37503,37504,37505,37506,37507,37508,37509,37510,37511,37512,37513,37514,37515,37516,37517,37519,37520,37521,37522,37523,37524,37525,37526,37527,37528,37529,37530,37531,37532,37533,37534,37535,37536,37537,37538,37539,37540,37541,37542,37543,24682,24701,24726,24730,24749,24733,24707,24722,24716,24731,24812,24763,24753,24797,24792,24774,24794,24756,24864,24870,24853,24867,24820,24832,24846,24875,24906,24949,25004,24980,24999,25015,25044,25077,24541,38579,38377,38379,38385,38387,38389,38390,38396,38398,38403,38404,38406,38408,38410,38411,38412,38413,38415,38418,38421,38422,38423,38425,38426,20012,29247,25109,27701,27732,27740,27722,27811,27781,27792,27796,27788,27752,27753,27764,27766,27782,27817,27856,27860,27821,27895,27896,27889,27863,27826,27872,27862,27898,27883,27886,27825,27859,27887,27902,37544,37545,37546,37547,37548,37549,37551,37552,37553,37554,37555,37556,37557,37558,37559,37560,37561,37562,37563,37564,37565,37566,37567,37568,37569,37570,37571,37572,37573,37574,37575,37577,37578,37579,37580,37581,37582,37583,37584,37585,37586,37587,37588,37589,37590,37591,37592,37593,37594,37595,37596,37597,37598,37599,37600,37601,37602,37603,37604,37605,37606,37607,37608,37609,37610,37611,37612,37613,37614,37615,37616,37617,37618,37619,37620,37621,37622,37623,37624,37625,37626,37627,37628,37629,37630,37631,37632,37633,37634,37635,37636,37637,37638,37639,37640,37641,27961,27943,27916,27971,27976,27911,27908,27929,27918,27947,27981,27950,27957,27930,27983,27986,27988,27955,28049,28015,28062,28064,27998,28051,28052,27996,28000,28028,28003,28186,28103,28101,28126,28174,28095,28128,28177,28134,28125,28121,28182,28075,28172,28078,28203,28270,28238,28267,28338,28255,28294,28243,28244,28210,28197,28228,28383,28337,28312,28384,28461,28386,28325,28327,28349,28347,28343,28375,28340,28367,28303,28354,28319,28514,28486,28487,28452,28437,28409,28463,28470,28491,28532,28458,28425,28457,28553,28557,28556,28536,28530,28540,28538,28625,37642,37643,37644,37645,37646,37647,37648,37649,37650,37651,37652,37653,37654,37655,37656,37657,37658,37659,37660,37661,37662,37663,37664,37665,37666,37667,37668,37669,37670,37671,37672,37673,37674,37675,37676,37677,37678,37679,37680,37681,37682,37683,37684,37685,37686,37687,37688,37689,37690,37691,37692,37693,37695,37696,37697,37698,37699,37700,37701,37702,37703,37704,37705,37706,37707,37708,37709,37710,37711,37712,37713,37714,37715,37716,37717,37718,37719,37720,37721,37722,37723,37724,37725,37726,37727,37728,37729,37730,37731,37732,37733,37734,37735,37736,37737,37739,28617,28583,28601,28598,28610,28641,28654,28638,28640,28655,28698,28707,28699,28729,28725,28751,28766,23424,23428,23445,23443,23461,23480,29999,39582,25652,23524,23534,35120,23536,36423,35591,36790,36819,36821,36837,36846,36836,36841,36838,36851,36840,36869,36868,36875,36902,36881,36877,36886,36897,36917,36918,36909,36911,36932,36945,36946,36944,36968,36952,36962,36955,26297,36980,36989,36994,37000,36995,37003,24400,24407,24406,24408,23611,21675,23632,23641,23409,23651,23654,32700,24362,24361,24365,33396,24380,39739,23662,22913,22915,22925,22953,22954,22947,37740,37741,37742,37743,37744,37745,37746,37747,37748,37749,37750,37751,37752,37753,37754,37755,37756,37757,37758,37759,37760,37761,37762,37763,37764,37765,37766,37767,37768,37769,37770,37771,37772,37773,37774,37776,37777,37778,37779,37780,37781,37782,37783,37784,37785,37786,37787,37788,37789,37790,37791,37792,37793,37794,37795,37796,37797,37798,37799,37800,37801,37802,37803,37804,37805,37806,37807,37808,37809,37810,37811,37812,37813,37814,37815,37816,37817,37818,37819,37820,37821,37822,37823,37824,37825,37826,37827,37828,37829,37830,37831,37832,37833,37835,37836,37837,22935,22986,22955,22942,22948,22994,22962,22959,22999,22974,23045,23046,23005,23048,23011,23000,23033,23052,23049,23090,23092,23057,23075,23059,23104,23143,23114,23125,23100,23138,23157,33004,23210,23195,23159,23162,23230,23275,23218,23250,23252,23224,23264,23267,23281,23254,23270,23256,23260,23305,23319,23318,23346,23351,23360,23573,23580,23386,23397,23411,23377,23379,23394,39541,39543,39544,39546,39551,39549,39552,39553,39557,39560,39562,39568,39570,39571,39574,39576,39579,39580,39581,39583,39584,39586,39587,39589,39591,32415,32417,32419,32421,32424,32425,37838,37839,37840,37841,37842,37843,37844,37845,37847,37848,37849,37850,37851,37852,37853,37854,37855,37856,37857,37858,37859,37860,37861,37862,37863,37864,37865,37866,37867,37868,37869,37870,37871,37872,37873,37874,37875,37876,37877,37878,37879,37880,37881,37882,37883,37884,37885,37886,37887,37888,37889,37890,37891,37892,37893,37894,37895,37896,37897,37898,37899,37900,37901,37902,37903,37904,37905,37906,37907,37908,37909,37910,37911,37912,37913,37914,37915,37916,37917,37918,37919,37920,37921,37922,37923,37924,37925,37926,37927,37928,37929,37930,37931,37932,37933,37934,32429,32432,32446,32448,32449,32450,32457,32459,32460,32464,32468,32471,32475,32480,32481,32488,32491,32494,32495,32497,32498,32525,32502,32506,32507,32510,32513,32514,32515,32519,32520,32523,32524,32527,32529,32530,32535,32537,32540,32539,32543,32545,32546,32547,32548,32549,32550,32551,32554,32555,32556,32557,32559,32560,32561,32562,32563,32565,24186,30079,24027,30014,37013,29582,29585,29614,29602,29599,29647,29634,29649,29623,29619,29632,29641,29640,29669,29657,39036,29706,29673,29671,29662,29626,29682,29711,29738,29787,29734,29733,29736,29744,29742,29740,37935,37936,37937,37938,37939,37940,37941,37942,37943,37944,37945,37946,37947,37948,37949,37951,37952,37953,37954,37955,37956,37957,37958,37959,37960,37961,37962,37963,37964,37965,37966,37967,37968,37969,37970,37971,37972,37973,37974,37975,37976,37977,37978,37979,37980,37981,37982,37983,37984,37985,37986,37987,37988,37989,37990,37991,37992,37993,37994,37996,37997,37998,37999,38000,38001,38002,38003,38004,38005,38006,38007,38008,38009,38010,38011,38012,38013,38014,38015,38016,38017,38018,38019,38020,38033,38038,38040,38087,38095,38099,38100,38106,38118,38139,38172,38176,29723,29722,29761,29788,29783,29781,29785,29815,29805,29822,29852,29838,29824,29825,29831,29835,29854,29864,29865,29840,29863,29906,29882,38890,38891,38892,26444,26451,26462,26440,26473,26533,26503,26474,26483,26520,26535,26485,26536,26526,26541,26507,26487,26492,26608,26633,26584,26634,26601,26544,26636,26585,26549,26586,26547,26589,26624,26563,26552,26594,26638,26561,26621,26674,26675,26720,26721,26702,26722,26692,26724,26755,26653,26709,26726,26689,26727,26688,26686,26698,26697,26665,26805,26767,26740,26743,26771,26731,26818,26990,26876,26911,26912,26873,38183,38195,38205,38211,38216,38219,38229,38234,38240,38254,38260,38261,38263,38264,38265,38266,38267,38268,38269,38270,38272,38273,38274,38275,38276,38277,38278,38279,38280,38281,38282,38283,38284,38285,38286,38287,38288,38289,38290,38291,38292,38293,38294,38295,38296,38297,38298,38299,38300,38301,38302,38303,38304,38305,38306,38307,38308,38309,38310,38311,38312,38313,38314,38315,38316,38317,38318,38319,38320,38321,38322,38323,38324,38325,38326,38327,38328,38329,38330,38331,38332,38333,38334,38335,38336,38337,38338,38339,38340,38341,38342,38343,38344,38345,38346,38347,26916,26864,26891,26881,26967,26851,26896,26993,26937,26976,26946,26973,27012,26987,27008,27032,27000,26932,27084,27015,27016,27086,27017,26982,26979,27001,27035,27047,27067,27051,27053,27092,27057,27073,27082,27103,27029,27104,27021,27135,27183,27117,27159,27160,27237,27122,27204,27198,27296,27216,27227,27189,27278,27257,27197,27176,27224,27260,27281,27280,27305,27287,27307,29495,29522,27521,27522,27527,27524,27538,27539,27533,27546,27547,27553,27562,36715,36717,36721,36722,36723,36725,36726,36728,36727,36729,36730,36732,36734,36737,36738,36740,36743,36747,38348,38349,38350,38351,38352,38353,38354,38355,38356,38357,38358,38359,38360,38361,38362,38363,38364,38365,38366,38367,38368,38369,38370,38371,38372,38373,38374,38375,38380,38399,38407,38419,38424,38427,38430,38432,38435,38436,38437,38438,38439,38440,38441,38443,38444,38445,38447,38448,38455,38456,38457,38458,38462,38465,38467,38474,38478,38479,38481,38482,38483,38486,38487,38488,38489,38490,38492,38493,38494,38496,38499,38501,38502,38507,38509,38510,38511,38512,38513,38515,38520,38521,38522,38523,38524,38525,38526,38527,38528,38529,38530,38531,38532,38535,38537,38538,36749,36750,36751,36760,36762,36558,25099,25111,25115,25119,25122,25121,25125,25124,25132,33255,29935,29940,29951,29967,29969,29971,25908,26094,26095,26096,26122,26137,26482,26115,26133,26112,28805,26359,26141,26164,26161,26166,26165,32774,26207,26196,26177,26191,26198,26209,26199,26231,26244,26252,26279,26269,26302,26331,26332,26342,26345,36146,36147,36150,36155,36157,36160,36165,36166,36168,36169,36167,36173,36181,36185,35271,35274,35275,35276,35278,35279,35280,35281,29294,29343,29277,29286,29295,29310,29311,29316,29323,29325,29327,29330,25352,25394,25520,38540,38542,38545,38546,38547,38549,38550,38554,38555,38557,38558,38559,38560,38561,38562,38563,38564,38565,38566,38568,38569,38570,38571,38572,38573,38574,38575,38577,38578,38580,38581,38583,38584,38586,38587,38591,38594,38595,38600,38602,38603,38608,38609,38611,38612,38614,38615,38616,38617,38618,38619,38620,38621,38622,38623,38625,38626,38627,38628,38629,38630,38631,38635,38636,38637,38638,38640,38641,38642,38644,38645,38648,38650,38651,38652,38653,38655,38658,38659,38661,38666,38667,38668,38672,38673,38674,38676,38677,38679,38680,38681,38682,38683,38685,38687,38688,25663,25816,32772,27626,27635,27645,27637,27641,27653,27655,27654,27661,27669,27672,27673,27674,27681,27689,27684,27690,27698,25909,25941,25963,29261,29266,29270,29232,34402,21014,32927,32924,32915,32956,26378,32957,32945,32939,32941,32948,32951,32999,33000,33001,33002,32987,32962,32964,32985,32973,32983,26384,32989,33003,33009,33012,33005,33037,33038,33010,33020,26389,33042,35930,33078,33054,33068,33048,33074,33096,33100,33107,33140,33113,33114,33137,33120,33129,33148,33149,33133,33127,22605,23221,33160,33154,33169,28373,33187,33194,33228,26406,33226,33211,38689,38690,38691,38692,38693,38694,38695,38696,38697,38699,38700,38702,38703,38705,38707,38708,38709,38710,38711,38714,38715,38716,38717,38719,38720,38721,38722,38723,38724,38725,38726,38727,38728,38729,38730,38731,38732,38733,38734,38735,38736,38737,38740,38741,38743,38744,38746,38748,38749,38751,38755,38756,38758,38759,38760,38762,38763,38764,38765,38766,38767,38768,38769,38770,38773,38775,38776,38777,38778,38779,38781,38782,38783,38784,38785,38786,38787,38788,38790,38791,38792,38793,38794,38796,38798,38799,38800,38803,38805,38806,38807,38809,38810,38811,38812,38813,33217,33190,27428,27447,27449,27459,27462,27481,39121,39122,39123,39125,39129,39130,27571,24384,27586,35315,26000,40785,26003,26044,26054,26052,26051,26060,26062,26066,26070,28800,28828,28822,28829,28859,28864,28855,28843,28849,28904,28874,28944,28947,28950,28975,28977,29043,29020,29032,28997,29042,29002,29048,29050,29080,29107,29109,29096,29088,29152,29140,29159,29177,29213,29224,28780,28952,29030,29113,25150,25149,25155,25160,25161,31035,31040,31046,31049,31067,31068,31059,31066,31074,31063,31072,31087,31079,31098,31109,31114,31130,31143,31155,24529,24528,38814,38815,38817,38818,38820,38821,38822,38823,38824,38825,38826,38828,38830,38832,38833,38835,38837,38838,38839,38840,38841,38842,38843,38844,38845,38846,38847,38848,38849,38850,38851,38852,38853,38854,38855,38856,38857,38858,38859,38860,38861,38862,38863,38864,38865,38866,38867,38868,38869,38870,38871,38872,38873,38874,38875,38876,38877,38878,38879,38880,38881,38882,38883,38884,38885,38888,38894,38895,38896,38897,38898,38900,38903,38904,38905,38906,38907,38908,38909,38910,38911,38912,38913,38914,38915,38916,38917,38918,38919,38920,38921,38922,38923,38924,38925,38926,24636,24669,24666,24679,24641,24665,24675,24747,24838,24845,24925,25001,24989,25035,25041,25094,32896,32895,27795,27894,28156,30710,30712,30720,30729,30743,30744,30737,26027,30765,30748,30749,30777,30778,30779,30751,30780,30757,30764,30755,30761,30798,30829,30806,30807,30758,30800,30791,30796,30826,30875,30867,30874,30855,30876,30881,30883,30898,30905,30885,30932,30937,30921,30956,30962,30981,30964,30995,31012,31006,31028,40859,40697,40699,40700,30449,30468,30477,30457,30471,30472,30490,30498,30489,30509,30502,30517,30520,30544,30545,30535,30531,30554,30568,38927,38928,38929,38930,38931,38932,38933,38934,38935,38936,38937,38938,38939,38940,38941,38942,38943,38944,38945,38946,38947,38948,38949,38950,38951,38952,38953,38954,38955,38956,38957,38958,38959,38960,38961,38962,38963,38964,38965,38966,38967,38968,38969,38970,38971,38972,38973,38974,38975,38976,38977,38978,38979,38980,38981,38982,38983,38984,38985,38986,38987,38988,38989,38990,38991,38992,38993,38994,38995,38996,38997,38998,38999,39000,39001,39002,39003,39004,39005,39006,39007,39008,39009,39010,39011,39012,39013,39014,39015,39016,39017,39018,39019,39020,39021,39022,30562,30565,30591,30605,30589,30592,30604,30609,30623,30624,30640,30645,30653,30010,30016,30030,30027,30024,30043,30066,30073,30083,32600,32609,32607,35400,32616,32628,32625,32633,32641,32638,30413,30437,34866,38021,38022,38023,38027,38026,38028,38029,38031,38032,38036,38039,38037,38042,38043,38044,38051,38052,38059,38058,38061,38060,38063,38064,38066,38068,38070,38071,38072,38073,38074,38076,38077,38079,38084,38088,38089,38090,38091,38092,38093,38094,38096,38097,38098,38101,38102,38103,38105,38104,38107,38110,38111,38112,38114,38116,38117,38119,38120,38122,39023,39024,39025,39026,39027,39028,39051,39054,39058,39061,39065,39075,39080,39081,39082,39083,39084,39085,39086,39087,39088,39089,39090,39091,39092,39093,39094,39095,39096,39097,39098,39099,39100,39101,39102,39103,39104,39105,39106,39107,39108,39109,39110,39111,39112,39113,39114,39115,39116,39117,39119,39120,39124,39126,39127,39131,39132,39133,39136,39137,39138,39139,39140,39141,39142,39145,39146,39147,39148,39149,39150,39151,39152,39153,39154,39155,39156,39157,39158,39159,39160,39161,39162,39163,39164,39165,39166,39167,39168,39169,39170,39171,39172,39173,39174,39175,38121,38123,38126,38127,38131,38132,38133,38135,38137,38140,38141,38143,38147,38146,38150,38151,38153,38154,38157,38158,38159,38162,38163,38164,38165,38166,38168,38171,38173,38174,38175,38178,38186,38187,38185,38188,38193,38194,38196,38198,38199,38200,38204,38206,38207,38210,38197,38212,38213,38214,38217,38220,38222,38223,38226,38227,38228,38230,38231,38232,38233,38235,38238,38239,38237,38241,38242,38244,38245,38246,38247,38248,38249,38250,38251,38252,38255,38257,38258,38259,38202,30695,30700,38601,31189,31213,31203,31211,31238,23879,31235,31234,31262,31252,39176,39177,39178,39179,39180,39182,39183,39185,39186,39187,39188,39189,39190,39191,39192,39193,39194,39195,39196,39197,39198,39199,39200,39201,39202,39203,39204,39205,39206,39207,39208,39209,39210,39211,39212,39213,39215,39216,39217,39218,39219,39220,39221,39222,39223,39224,39225,39226,39227,39228,39229,39230,39231,39232,39233,39234,39235,39236,39237,39238,39239,39240,39241,39242,39243,39244,39245,39246,39247,39248,39249,39250,39251,39254,39255,39256,39257,39258,39259,39260,39261,39262,39263,39264,39265,39266,39268,39270,39283,39288,39289,39291,39294,39298,39299,39305,31289,31287,31313,40655,39333,31344,30344,30350,30355,30361,30372,29918,29920,29996,40480,40482,40488,40489,40490,40491,40492,40498,40497,40502,40504,40503,40505,40506,40510,40513,40514,40516,40518,40519,40520,40521,40523,40524,40526,40529,40533,40535,40538,40539,40540,40542,40547,40550,40551,40552,40553,40554,40555,40556,40561,40557,40563,30098,30100,30102,30112,30109,30124,30115,30131,30132,30136,30148,30129,30128,30147,30146,30166,30157,30179,30184,30182,30180,30187,30183,30211,30193,30204,30207,30224,30208,30213,30220,30231,30218,30245,30232,30229,30233,39308,39310,39322,39323,39324,39325,39326,39327,39328,39329,39330,39331,39332,39334,39335,39337,39338,39339,39340,39341,39342,39343,39344,39345,39346,39347,39348,39349,39350,39351,39352,39353,39354,39355,39356,39357,39358,39359,39360,39361,39362,39363,39364,39365,39366,39367,39368,39369,39370,39371,39372,39373,39374,39375,39376,39377,39378,39379,39380,39381,39382,39383,39384,39385,39386,39387,39388,39389,39390,39391,39392,39393,39394,39395,39396,39397,39398,39399,39400,39401,39402,39403,39404,39405,39406,39407,39408,39409,39410,39411,39412,39413,39414,39415,39416,39417,30235,30268,30242,30240,30272,30253,30256,30271,30261,30275,30270,30259,30285,30302,30292,30300,30294,30315,30319,32714,31462,31352,31353,31360,31366,31368,31381,31398,31392,31404,31400,31405,31411,34916,34921,34930,34941,34943,34946,34978,35014,34999,35004,35017,35042,35022,35043,35045,35057,35098,35068,35048,35070,35056,35105,35097,35091,35099,35082,35124,35115,35126,35137,35174,35195,30091,32997,30386,30388,30684,32786,32788,32790,32796,32800,32802,32805,32806,32807,32809,32808,32817,32779,32821,32835,32838,32845,32850,32873,32881,35203,39032,39040,39043,39418,39419,39420,39421,39422,39423,39424,39425,39426,39427,39428,39429,39430,39431,39432,39433,39434,39435,39436,39437,39438,39439,39440,39441,39442,39443,39444,39445,39446,39447,39448,39449,39450,39451,39452,39453,39454,39455,39456,39457,39458,39459,39460,39461,39462,39463,39464,39465,39466,39467,39468,39469,39470,39471,39472,39473,39474,39475,39476,39477,39478,39479,39480,39481,39482,39483,39484,39485,39486,39487,39488,39489,39490,39491,39492,39493,39494,39495,39496,39497,39498,39499,39500,39501,39502,39503,39504,39505,39506,39507,39508,39509,39510,39511,39512,39513,39049,39052,39053,39055,39060,39066,39067,39070,39071,39073,39074,39077,39078,34381,34388,34412,34414,34431,34426,34428,34427,34472,34445,34443,34476,34461,34471,34467,34474,34451,34473,34486,34500,34485,34510,34480,34490,34481,34479,34505,34511,34484,34537,34545,34546,34541,34547,34512,34579,34526,34548,34527,34520,34513,34563,34567,34552,34568,34570,34573,34569,34595,34619,34590,34597,34606,34586,34622,34632,34612,34609,34601,34615,34623,34690,34594,34685,34686,34683,34656,34672,34636,34670,34699,34643,34659,34684,34660,34649,34661,34707,34735,34728,34770,39514,39515,39516,39517,39518,39519,39520,39521,39522,39523,39524,39525,39526,39527,39528,39529,39530,39531,39538,39555,39561,39565,39566,39572,39573,39577,39590,39593,39594,39595,39596,39597,39598,39599,39602,39603,39604,39605,39609,39611,39613,39614,39615,39619,39620,39622,39623,39624,39625,39626,39629,39630,39631,39632,39634,39636,39637,39638,39639,39641,39642,39643,39644,39645,39646,39648,39650,39651,39652,39653,39655,39656,39657,39658,39660,39662,39664,39665,39666,39667,39668,39669,39670,39671,39672,39674,39676,39677,39678,39679,39680,39681,39682,39684,39685,39686,34758,34696,34693,34733,34711,34691,34731,34789,34732,34741,34739,34763,34771,34749,34769,34752,34762,34779,34794,34784,34798,34838,34835,34814,34826,34843,34849,34873,34876,32566,32578,32580,32581,33296,31482,31485,31496,31491,31492,31509,31498,31531,31503,31559,31544,31530,31513,31534,31537,31520,31525,31524,31539,31550,31518,31576,31578,31557,31605,31564,31581,31584,31598,31611,31586,31602,31601,31632,31654,31655,31672,31660,31645,31656,31621,31658,31644,31650,31659,31668,31697,31681,31692,31709,31706,31717,31718,31722,31756,31742,31740,31759,31766,31755,39687,39689,39690,39691,39692,39693,39694,39696,39697,39698,39700,39701,39702,39703,39704,39705,39706,39707,39708,39709,39710,39712,39713,39714,39716,39717,39718,39719,39720,39721,39722,39723,39724,39725,39726,39728,39729,39731,39732,39733,39734,39735,39736,39737,39738,39741,39742,39743,39744,39750,39754,39755,39756,39758,39760,39762,39763,39765,39766,39767,39768,39769,39770,39771,39772,39773,39774,39775,39776,39777,39778,39779,39780,39781,39782,39783,39784,39785,39786,39787,39788,39789,39790,39791,39792,39793,39794,39795,39796,39797,39798,39799,39800,39801,39802,39803,31775,31786,31782,31800,31809,31808,33278,33281,33282,33284,33260,34884,33313,33314,33315,33325,33327,33320,33323,33336,33339,33331,33332,33342,33348,33353,33355,33359,33370,33375,33384,34942,34949,34952,35032,35039,35166,32669,32671,32679,32687,32688,32690,31868,25929,31889,31901,31900,31902,31906,31922,31932,31933,31937,31943,31948,31949,31944,31941,31959,31976,33390,26280,32703,32718,32725,32741,32737,32742,32745,32750,32755,31992,32119,32166,32174,32327,32411,40632,40628,36211,36228,36244,36241,36273,36199,36205,35911,35913,37194,37200,37198,37199,37220,39804,39805,39806,39807,39808,39809,39810,39811,39812,39813,39814,39815,39816,39817,39818,39819,39820,39821,39822,39823,39824,39825,39826,39827,39828,39829,39830,39831,39832,39833,39834,39835,39836,39837,39838,39839,39840,39841,39842,39843,39844,39845,39846,39847,39848,39849,39850,39851,39852,39853,39854,39855,39856,39857,39858,39859,39860,39861,39862,39863,39864,39865,39866,39867,39868,39869,39870,39871,39872,39873,39874,39875,39876,39877,39878,39879,39880,39881,39882,39883,39884,39885,39886,39887,39888,39889,39890,39891,39892,39893,39894,39895,39896,39897,39898,39899,37218,37217,37232,37225,37231,37245,37246,37234,37236,37241,37260,37253,37264,37261,37265,37282,37283,37290,37293,37294,37295,37301,37300,37306,35925,40574,36280,36331,36357,36441,36457,36277,36287,36284,36282,36292,36310,36311,36314,36318,36302,36303,36315,36294,36332,36343,36344,36323,36345,36347,36324,36361,36349,36372,36381,36383,36396,36398,36387,36399,36410,36416,36409,36405,36413,36401,36425,36417,36418,36433,36434,36426,36464,36470,36476,36463,36468,36485,36495,36500,36496,36508,36510,35960,35970,35978,35973,35992,35988,26011,35286,35294,35290,35292,39900,39901,39902,39903,39904,39905,39906,39907,39908,39909,39910,39911,39912,39913,39914,39915,39916,39917,39918,39919,39920,39921,39922,39923,39924,39925,39926,39927,39928,39929,39930,39931,39932,39933,39934,39935,39936,39937,39938,39939,39940,39941,39942,39943,39944,39945,39946,39947,39948,39949,39950,39951,39952,39953,39954,39955,39956,39957,39958,39959,39960,39961,39962,39963,39964,39965,39966,39967,39968,39969,39970,39971,39972,39973,39974,39975,39976,39977,39978,39979,39980,39981,39982,39983,39984,39985,39986,39987,39988,39989,39990,39991,39992,39993,39994,39995,35301,35307,35311,35390,35622,38739,38633,38643,38639,38662,38657,38664,38671,38670,38698,38701,38704,38718,40832,40835,40837,40838,40839,40840,40841,40842,40844,40702,40715,40717,38585,38588,38589,38606,38610,30655,38624,37518,37550,37576,37694,37738,37834,37775,37950,37995,40063,40066,40069,40070,40071,40072,31267,40075,40078,40080,40081,40082,40084,40085,40090,40091,40094,40095,40096,40097,40098,40099,40101,40102,40103,40104,40105,40107,40109,40110,40112,40113,40114,40115,40116,40117,40118,40119,40122,40123,40124,40125,40132,40133,40134,40135,40138,40139,39996,39997,39998,39999,40000,40001,40002,40003,40004,40005,40006,40007,40008,40009,40010,40011,40012,40013,40014,40015,40016,40017,40018,40019,40020,40021,40022,40023,40024,40025,40026,40027,40028,40029,40030,40031,40032,40033,40034,40035,40036,40037,40038,40039,40040,40041,40042,40043,40044,40045,40046,40047,40048,40049,40050,40051,40052,40053,40054,40055,40056,40057,40058,40059,40061,40062,40064,40067,40068,40073,40074,40076,40079,40083,40086,40087,40088,40089,40093,40106,40108,40111,40121,40126,40127,40128,40129,40130,40136,40137,40145,40146,40154,40155,40160,40161,40140,40141,40142,40143,40144,40147,40148,40149,40151,40152,40153,40156,40157,40159,40162,38780,38789,38801,38802,38804,38831,38827,38819,38834,38836,39601,39600,39607,40536,39606,39610,39612,39617,39616,39621,39618,39627,39628,39633,39749,39747,39751,39753,39752,39757,39761,39144,39181,39214,39253,39252,39647,39649,39654,39663,39659,39675,39661,39673,39688,39695,39699,39711,39715,40637,40638,32315,40578,40583,40584,40587,40594,37846,40605,40607,40667,40668,40669,40672,40671,40674,40681,40679,40677,40682,40687,40738,40748,40751,40761,40759,40765,40766,40772,40163,40164,40165,40166,40167,40168,40169,40170,40171,40172,40173,40174,40175,40176,40177,40178,40179,40180,40181,40182,40183,40184,40185,40186,40187,40188,40189,40190,40191,40192,40193,40194,40195,40196,40197,40198,40199,40200,40201,40202,40203,40204,40205,40206,40207,40208,40209,40210,40211,40212,40213,40214,40215,40216,40217,40218,40219,40220,40221,40222,40223,40224,40225,40226,40227,40228,40229,40230,40231,40232,40233,40234,40235,40236,40237,40238,40239,40240,40241,40242,40243,40244,40245,40246,40247,40248,40249,40250,40251,40252,40253,40254,40255,40256,40257,40258,57908,57909,57910,57911,57912,57913,57914,57915,57916,57917,57918,57919,57920,57921,57922,57923,57924,57925,57926,57927,57928,57929,57930,57931,57932,57933,57934,57935,57936,57937,57938,57939,57940,57941,57942,57943,57944,57945,57946,57947,57948,57949,57950,57951,57952,57953,57954,57955,57956,57957,57958,57959,57960,57961,57962,57963,57964,57965,57966,57967,57968,57969,57970,57971,57972,57973,57974,57975,57976,57977,57978,57979,57980,57981,57982,57983,57984,57985,57986,57987,57988,57989,57990,57991,57992,57993,57994,57995,57996,57997,57998,57999,58000,58001,40259,40260,40261,40262,40263,40264,40265,40266,40267,40268,40269,40270,40271,40272,40273,40274,40275,40276,40277,40278,40279,40280,40281,40282,40283,40284,40285,40286,40287,40288,40289,40290,40291,40292,40293,40294,40295,40296,40297,40298,40299,40300,40301,40302,40303,40304,40305,40306,40307,40308,40309,40310,40311,40312,40313,40314,40315,40316,40317,40318,40319,40320,40321,40322,40323,40324,40325,40326,40327,40328,40329,40330,40331,40332,40333,40334,40335,40336,40337,40338,40339,40340,40341,40342,40343,40344,40345,40346,40347,40348,40349,40350,40351,40352,40353,40354,58002,58003,58004,58005,58006,58007,58008,58009,58010,58011,58012,58013,58014,58015,58016,58017,58018,58019,58020,58021,58022,58023,58024,58025,58026,58027,58028,58029,58030,58031,58032,58033,58034,58035,58036,58037,58038,58039,58040,58041,58042,58043,58044,58045,58046,58047,58048,58049,58050,58051,58052,58053,58054,58055,58056,58057,58058,58059,58060,58061,58062,58063,58064,58065,58066,58067,58068,58069,58070,58071,58072,58073,58074,58075,58076,58077,58078,58079,58080,58081,58082,58083,58084,58085,58086,58087,58088,58089,58090,58091,58092,58093,58094,58095,40355,40356,40357,40358,40359,40360,40361,40362,40363,40364,40365,40366,40367,40368,40369,40370,40371,40372,40373,40374,40375,40376,40377,40378,40379,40380,40381,40382,40383,40384,40385,40386,40387,40388,40389,40390,40391,40392,40393,40394,40395,40396,40397,40398,40399,40400,40401,40402,40403,40404,40405,40406,40407,40408,40409,40410,40411,40412,40413,40414,40415,40416,40417,40418,40419,40420,40421,40422,40423,40424,40425,40426,40427,40428,40429,40430,40431,40432,40433,40434,40435,40436,40437,40438,40439,40440,40441,40442,40443,40444,40445,40446,40447,40448,40449,40450,58096,58097,58098,58099,58100,58101,58102,58103,58104,58105,58106,58107,58108,58109,58110,58111,58112,58113,58114,58115,58116,58117,58118,58119,58120,58121,58122,58123,58124,58125,58126,58127,58128,58129,58130,58131,58132,58133,58134,58135,58136,58137,58138,58139,58140,58141,58142,58143,58144,58145,58146,58147,58148,58149,58150,58151,58152,58153,58154,58155,58156,58157,58158,58159,58160,58161,58162,58163,58164,58165,58166,58167,58168,58169,58170,58171,58172,58173,58174,58175,58176,58177,58178,58179,58180,58181,58182,58183,58184,58185,58186,58187,58188,58189,40451,40452,40453,40454,40455,40456,40457,40458,40459,40460,40461,40462,40463,40464,40465,40466,40467,40468,40469,40470,40471,40472,40473,40474,40475,40476,40477,40478,40484,40487,40494,40496,40500,40507,40508,40512,40525,40528,40530,40531,40532,40534,40537,40541,40543,40544,40545,40546,40549,40558,40559,40562,40564,40565,40566,40567,40568,40569,40570,40571,40572,40573,40576,40577,40579,40580,40581,40582,40585,40586,40588,40589,40590,40591,40592,40593,40596,40597,40598,40599,40600,40601,40602,40603,40604,40606,40608,40609,40610,40611,40612,40613,40615,40616,40617,40618,58190,58191,58192,58193,58194,58195,58196,58197,58198,58199,58200,58201,58202,58203,58204,58205,58206,58207,58208,58209,58210,58211,58212,58213,58214,58215,58216,58217,58218,58219,58220,58221,58222,58223,58224,58225,58226,58227,58228,58229,58230,58231,58232,58233,58234,58235,58236,58237,58238,58239,58240,58241,58242,58243,58244,58245,58246,58247,58248,58249,58250,58251,58252,58253,58254,58255,58256,58257,58258,58259,58260,58261,58262,58263,58264,58265,58266,58267,58268,58269,58270,58271,58272,58273,58274,58275,58276,58277,58278,58279,58280,58281,58282,58283,40619,40620,40621,40622,40623,40624,40625,40626,40627,40629,40630,40631,40633,40634,40636,40639,40640,40641,40642,40643,40645,40646,40647,40648,40650,40651,40652,40656,40658,40659,40661,40662,40663,40665,40666,40670,40673,40675,40676,40678,40680,40683,40684,40685,40686,40688,40689,40690,40691,40692,40693,40694,40695,40696,40698,40701,40703,40704,40705,40706,40707,40708,40709,40710,40711,40712,40713,40714,40716,40719,40721,40722,40724,40725,40726,40728,40730,40731,40732,40733,40734,40735,40737,40739,40740,40741,40742,40743,40744,40745,40746,40747,40749,40750,40752,40753,58284,58285,58286,58287,58288,58289,58290,58291,58292,58293,58294,58295,58296,58297,58298,58299,58300,58301,58302,58303,58304,58305,58306,58307,58308,58309,58310,58311,58312,58313,58314,58315,58316,58317,58318,58319,58320,58321,58322,58323,58324,58325,58326,58327,58328,58329,58330,58331,58332,58333,58334,58335,58336,58337,58338,58339,58340,58341,58342,58343,58344,58345,58346,58347,58348,58349,58350,58351,58352,58353,58354,58355,58356,58357,58358,58359,58360,58361,58362,58363,58364,58365,58366,58367,58368,58369,58370,58371,58372,58373,58374,58375,58376,58377,40754,40755,40756,40757,40758,40760,40762,40764,40767,40768,40769,40770,40771,40773,40774,40775,40776,40777,40778,40779,40780,40781,40782,40783,40786,40787,40788,40789,40790,40791,40792,40793,40794,40795,40796,40797,40798,40799,40800,40801,40802,40803,40804,40805,40806,40807,40808,40809,40810,40811,40812,40813,40814,40815,40816,40817,40818,40819,40820,40821,40822,40823,40824,40825,40826,40827,40828,40829,40830,40833,40834,40845,40846,40847,40848,40849,40850,40851,40852,40853,40854,40855,40856,40860,40861,40862,40865,40866,40867,40868,40869,63788,63865,63893,63975,63985,58378,58379,58380,58381,58382,58383,58384,58385,58386,58387,58388,58389,58390,58391,58392,58393,58394,58395,58396,58397,58398,58399,58400,58401,58402,58403,58404,58405,58406,58407,58408,58409,58410,58411,58412,58413,58414,58415,58416,58417,58418,58419,58420,58421,58422,58423,58424,58425,58426,58427,58428,58429,58430,58431,58432,58433,58434,58435,58436,58437,58438,58439,58440,58441,58442,58443,58444,58445,58446,58447,58448,58449,58450,58451,58452,58453,58454,58455,58456,58457,58458,58459,58460,58461,58462,58463,58464,58465,58466,58467,58468,58469,58470,58471,64012,64013,64014,64015,64017,64019,64020,64024,64031,64032,64033,64035,64036,64039,64040,64041,11905,59414,59415,59416,11908,13427,13383,11912,11915,40884,13726,13850,13838,11916,11927,14702,14616,40885,14799,14815,14963,14800,40886,40887,15182,15470,15584,11943,59441,40888,11946,16470,16735,11950,17207,11955,11958,11959,59451,17329,17324,11963,17373,17622,18017,17996,40889,18211,18217,18300,18317,11978,18759,18810,18813,18818,18819,18821,18822,18847,18843,18871,18870,40890,59477,19619,19615,19616,19617,19575,19618,19731,19732,19733,19734,19735,19736,19737,19886,40891,58472,58473,58474,58475,58476,58477,58478,58479,58480,58481,58482,58483,58484,58485,58486,58487,58488,58489,58490,58491,58492,58493,58494,58495,58496,58497,58498,58499,58500,58501,58502,58503,58504,58505,58506,58507,58508,58509,58510,58511,58512,58513,58514,58515,58516,58517,58518,58519,58520,58521,58522,58523,58524,58525,58526,58527,58528,58529,58530,58531,58532,58533,58534,58535,58536,58537,58538,58539,58540,58541,58542,58543,58544,58545,58546,58547,58548,58549,58550,58551,58552,58553,58554,58555,58556,58557,58558,58559,58560,58561,58562,58563,58564,58565]\n", "export default [[0, 128], [36, 165], [38, 169], [45, 178], [50, 184], [81, 216], [89, 226], [95, 235], [96, 238], [100, 244], [103, 248], [104, 251], [105, 253], [109, 258], [126, 276], [133, 284], [148, 300], [172, 325], [175, 329], [179, 334], [208, 364], [306, 463], [307, 465], [308, 467], [309, 469], [310, 471], [311, 473], [312, 475], [313, 477], [341, 506], [428, 594], [443, 610], [544, 712], [545, 716], [558, 730], [741, 930], [742, 938], [749, 962], [750, 970], [805, 1026], [819, 1104], [820, 1106], [7922, 8209], [7924, 8215], [7925, 8218], [7927, 8222], [7934, 8231], [7943, 8241], [7944, 8244], [7945, 8246], [7950, 8252], [8062, 8365], [8148, 8452], [8149, 8454], [8152, 8458], [8164, 8471], [8174, 8482], [8236, 8556], [8240, 8570], [8262, 8596], [8264, 8602], [8374, 8713], [8380, 8720], [8381, 8722], [8384, 8726], [8388, 8731], [8390, 8737], [8392, 8740], [8393, 8742], [8394, 8748], [8396, 8751], [8401, 8760], [8406, 8766], [8416, 8777], [8419, 8781], [8424, 8787], [8437, 8802], [8439, 8808], [8445, 8816], [8482, 8854], [8485, 8858], [8496, 8870], [8521, 8896], [8603, 8979], [8936, 9322], [8946, 9372], [9046, 9548], [9050, 9588], [9063, 9616], [9066, 9622], [9076, 9634], [9092, 9652], [9100, 9662], [9108, 9672], [9111, 9676], [9113, 9680], [9131, 9702], [9162, 9735], [9164, 9738], [9218, 9793], [9219, 9795], [11329, 11906], [11331, 11909], [11334, 11913], [11336, 11917], [11346, 11928], [11361, 11944], [11363, 11947], [11366, 11951], [11370, 11956], [11372, 11960], [11375, 11964], [11389, 11979], [11682, 12284], [11686, 12292], [11687, 12312], [11692, 12319], [11694, 12330], [11714, 12351], [11716, 12436], [11723, 12447], [11725, 12535], [11730, 12543], [11736, 12586], [11982, 12842], [11989, 12850], [12102, 12964], [12336, 13200], [12348, 13215], [12350, 13218], [12384, 13253], [12393, 13263], [12395, 13267], [12397, 13270], [12510, 13384], [12553, 13428], [12851, 13727], [12962, 13839], [12973, 13851], [13738, 14617], [13823, 14703], [13919, 14801], [13933, 14816], [14080, 14964], [14298, 15183], [14585, 15471], [14698, 15585], [15583, 16471], [15847, 16736], [16318, 17208], [16434, 17325], [16438, 17330], [16481, 17374], [16729, 17623], [17102, 17997], [17122, 18018], [17315, 18212], [17320, 18218], [17402, 18301], [17418, 18318], [17859, 18760], [17909, 18811], [17911, 18814], [17915, 18820], [17916, 18823], [17936, 18844], [17939, 18848], [17961, 18872], [18664, 19576], [18703, 19620], [18814, 19738], [18962, 19887], [19043, 40870], [33469, 59244], [33470, 59336], [33471, 59367], [33484, 59413], [33485, 59417], [33490, 59423], [33497, 59431], [33501, 59437], [33505, 59443], [33513, 59452], [33520, 59460], [33536, 59478], [33550, 59493], [37845, 63789], [37921, 63866], [37948, 63894], [38029, 63976], [38038, 63986], [38064, 64016], [38065, 64018], [38066, 64021], [38069, 64025], [38075, 64034], [38076, 64037], [38078, 64042], [39108, 65074], [39109, 65093], [39113, 65107], [39114, 65112], [39115, 65127], [39116, 65132], [39265, 65375], [39394, 65510], [189000, 65536]]\n", "/*\n * Copyright (C) 2021 Klaus Reimer <k@ailis.de>\n * See LICENSE.md for licensing information.\n */\n\nimport gb18030 from \"../../../data/gb18030.cp.js\";\nimport gb18030ranges from \"../../../data/gb18030.ranges.js\";\nimport { AbstractEncoder } from \"../AbstractEncoder.ts\";\nimport { type ByteBuffer, END_OF_BUFFER } from \"../ByteBuffer.ts\";\nimport { FINISHED } from \"../constants.ts\";\nimport { isASCII } from \"../util.ts\";\nimport { CodePointIndex } from \"./CodePointIndex.ts\";\n\nconst GB18030_2005_PUA_POINTERS = [\n [ 0xE78D, 7182 ],\n [ 0xE78E, 7183 ],\n [ 0xE78F, 7184 ],\n [ 0xE790, 7185 ],\n [ 0xE791, 7186 ],\n [ 0xE792, 7187 ],\n [ 0xE793, 7188 ],\n [ 0xE794, 7201 ],\n [ 0xE795, 7202 ],\n [ 0xE796, 7208 ],\n [ 0xE81E, 23775 ],\n [ 0xE826, 23783 ],\n [ 0xE82B, 23788 ],\n [ 0xE82C, 23789 ],\n [ 0xE832, 23795 ],\n [ 0xE843, 23812 ],\n [ 0xE854, 23829 ],\n [ 0xE864, 23845 ]\n] as const;\n\nlet gbIndex: CodePointIndex | null = null;\n\n/**\n * Returns the GB18030 two-byte pointer for the given code point.\n *\n * @param codePoint - Code point to look up.\n * @returns The pointer or null if the code point is not indexed.\n */\nfunction getGBPointer(codePoint: number): number | null {\n if (gbIndex == null) {\n gbIndex = new CodePointIndex(gb18030);\n for (const [ puaCodePoint, pointer ] of GB18030_2005_PUA_POINTERS) {\n gbIndex.setBMP(puaCodePoint, pointer);\n }\n }\n return gbIndex.get(codePoint);\n}\n\n/**\n * Returns the index for the given code point.\n *\n * @param codePoint - The code point to search for.\n * @returns The found index or null if not found.\n */\nexport function getIndex(codePoint: number): number {\n if (codePoint === 0xE7C7) {\n return 7457;\n }\n let start = 0;\n let end = gb18030ranges.length;\n while (start < end) {\n const middle = Math.floor((start + end) / 2);\n if (gb18030ranges[middle][1] <= codePoint) {\n start = middle + 1;\n } else {\n end = middle;\n }\n }\n const entry = gb18030ranges[start - 1];\n return entry[0] + codePoint - entry[1];\n}\n\n/**\n * Base class for gb18030 and gbk encoders.\n */\nexport abstract class GBEncoder extends AbstractEncoder {\n private readonly gbkFlag: boolean;\n\n /**\n * @param gbkFlag - True for gbk encoding, false for gb18030 encoding.\n */\n protected constructor(gbkFlag = false) {\n super();\n this.gbkFlag = gbkFlag;\n }\n\n /** @inheritdoc */\n public encode(buffer: ByteBuffer): number | number[] {\n const codePoint = buffer.read();\n if (codePoint === END_OF_BUFFER) {\n return FINISHED;\n }\n if (isASCII(codePoint)) {\n return codePoint;\n }\n if (codePoint === 0xE5E5) {\n return this.fail(codePoint);\n }\n if (this.gbkFlag && codePoint === 0x20AC) {\n return 0x80;\n }\n const index = getGBPointer(codePoint);\n if (index !== null) {\n const lead = Math.floor(index / 190) + 0x81;\n const trail = index % 190;\n const offset = trail < 0x3F ? 0x40 : 0x41;\n return [ lead, trail + offset ];\n }\n if (this.gbkFlag) {\n return this.fail(codePoint);\n }\n const rangeIndex = getIndex(codePoint);\n const byte1 = Math.floor(rangeIndex / 12600);\n const byte2 = Math.floor(rangeIndex / 1260) % 10;\n const byte3 = Math.floor(rangeIndex / 10) % 126;\n const byte4 = rangeIndex % 10;\n return [ byte1 + 0x81, byte2 + 0x30, byte3 + 0x81, byte4 + 0x30 ];\n }\n}\n\n/**\n * Encoder for gb18030 encoding.\n */\nexport class GB18030Encoder extends GBEncoder {\n /** @inheritdoc */\n public constructor() {\n super(false);\n }\n}\n\n/**\n * Encoder for gbk encoding.\n */\nexport class GBKEncoder extends GBEncoder {\n /** @inheritdoc */\n public constructor() {\n super(true);\n }\n}\n", "/*\n * Copyright (C) 2021 Klaus Reimer <k@ailis.de>\n * See LICENSE.md for licensing information.\n */\n\nimport \"./encodings/utf-8.ts\";\n\nexport * from \"./TextDecoder.ts\";\nexport * from \"./TextEncoder.ts\";\n", "/*\n * Copyright (C) 2021 Klaus Reimer <k@ailis.de>\n * See LICENSE.md for licensing information.\n */\n\nimport { UTF8Decoder } from \"../decoders/UTF8Decoder.ts\";\nimport { UTF8Encoder } from \"../encoders/UTF8Encoder.ts\";\nimport { registerEncoding } from \"../Encoding.ts\";\n\nregisterEncoding(\n \"utf-8\",\n [\n \"unicode-1-1-utf-8\",\n \"unicode11utf8\",\n \"unicode20utf8\",\n \"utf-8\",\n \"utf8\",\n \"x-unicode20utf8\"\n ],\n UTF8Decoder,\n UTF8Encoder\n);\n", "/*\n * Copyright (C) 2021 Klaus Reimer <k@ailis.de>\n * See LICENSE.md for licensing information.\n */\n\nimport { AbstractDecoder } from \"../AbstractDecoder.ts\";\nimport { type ByteBuffer, END_OF_BUFFER } from \"../ByteBuffer.ts\";\nimport { FINISHED } from \"../constants.ts\";\nimport { inRange } from \"../util.ts\";\n\n/**\n * Decoder for utf-8 encoding.\n */\nexport class UTF8Decoder extends AbstractDecoder {\n private codePoint = 0;\n private bytesSeen = 0;\n private bytesNeeded = 0;\n private lowerBoundary = 0x80;\n private upperBoundary = 0xBF;\n\n /** @inheritdoc */\n public decode(buffer: ByteBuffer): number | number[] | null {\n const byte = buffer.read();\n if (byte === END_OF_BUFFER) {\n if (this.bytesNeeded !== 0) {\n this.bytesNeeded = 0;\n return this.fail();\n }\n return FINISHED;\n }\n if (this.bytesNeeded === 0) {\n if (inRange(byte, 0x00, 0x7F)) {\n return byte;\n } else if (inRange(byte, 0xC2, 0xDF)) {\n this.bytesNeeded = 1;\n this.codePoint = byte & 0x1F;\n } else if (inRange(byte, 0xE0, 0xEF)) {\n if (byte === 0xE0) {\n this.lowerBoundary = 0xA0;\n }\n if (byte === 0xED) {\n this.upperBoundary = 0x9F;\n }\n this.bytesNeeded = 2;\n this.codePoint = byte & 0xF;\n } else if (inRange(byte, 0xF0, 0xF4)) {\n if (byte === 0xF0) {\n this.lowerBoundary = 0x90;\n }\n if (byte === 0xF4) {\n this.upperBoundary = 0x8F;\n }\n this.bytesNeeded = 3;\n this.codePoint = byte & 0x7;\n } else {\n return this.fail();\n }\n return null;\n }\n if (!inRange(byte, this.lowerBoundary, this.upperBoundary)) {\n this.codePoint = this.bytesNeeded = this.bytesSeen = 0;\n this.lowerBoundary = 0x80;\n this.upperBoundary = 0xBF;\n buffer.write(byte);\n return this.fail();\n }\n this.lowerBoundary = 0x80;\n this.upperBoundary = 0xBF;\n this.codePoint = (this.codePoint << 6) | (byte & 0x3F);\n this.bytesSeen += 1;\n if (this.bytesSeen !== this.bytesNeeded) {\n return null;\n }\n const codePoint = this.codePoint;\n this.codePoint = this.bytesNeeded = this.bytesSeen = 0;\n return codePoint;\n }\n}\n", "/*\n * Copyright (C) 2021 Klaus Reimer <k@ailis.de>\n * See LICENSE.md for licensing information.\n */\n\nimport { AbstractEncoder } from \"../AbstractEncoder.ts\";\nimport { type ByteBuffer, END_OF_BUFFER } from \"../ByteBuffer.ts\";\nimport { FINISHED } from \"../constants.ts\";\nimport { inRange, isASCII } from \"../util.ts\";\n\n/**\n * Encoder for utf-8 encoding.\n */\nexport class UTF8Encoder extends AbstractEncoder {\n /** @inheritdoc */\n public encode(buffer: ByteBuffer): number | number[] {\n const codePoint = buffer.read();\n if (codePoint === END_OF_BUFFER) {\n return FINISHED;\n }\n if (isASCII(codePoint)) {\n return codePoint;\n }\n let count: number;\n let offset: number;\n if (inRange(codePoint, 0x0080, 0x07FF)) {\n count = 1;\n offset = 0xC0;\n } else if (inRange(codePoint, 0x0800, 0xFFFF)) {\n count = 2;\n offset = 0xE0;\n } else if (inRange(codePoint, 0x10000, 0x10FFFF)) {\n count = 3;\n offset = 0xF0;\n } else {\n return this.fail(codePoint);\n }\n const bytes = [ (codePoint >> (6 * count)) + offset ];\n while (count > 0) {\n const temp = codePoint >> (6 * (count - 1));\n bytes.push(0x80 | (temp & 0x3F));\n count -= 1;\n }\n return bytes;\n }\n}\n", "/*\n * Copyright (C) 2021 Klaus Reimer <k@ailis.de>\n * See LICENSE.md for licensing information.\n */\n\nimport { ByteBuffer } from \"./ByteBuffer.ts\";\nimport { DEFAULT_ENCODING, FINISHED } from \"./constants.ts\";\nimport type { Decoder } from \"./Decoder.ts\";\nimport { type Encoding, getEncoding } from \"./Encoding.ts\";\n\nconst OUTPUT_CHUNK_SIZE = 4096;\n\ninterface BufferedOutput {\n readonly chunks: string[];\n readonly codePoints: number[];\n}\n\n/**\n * Converts one or more code points to a string.\n *\n * @param codePoints - Code point or code points to convert.\n * @returns The created string.\n */\nfunction codePointsToString(codePoints: number | number[]): string {\n return typeof codePoints === \"number\" ? String.fromCodePoint(codePoints) : String.fromCodePoint(...codePoints);\n}\n\n/**\n * Flushes buffered code points to the given output chunks.\n *\n * @param output - Output chunks to append the created string to.\n * @param codePoints - Code points to flush.\n */\nfunction flushCodePoints(output: string[], codePoints: number[]): void {\n output.push(String.fromCodePoint(...codePoints));\n codePoints.length = 0;\n}\n\n/**\n * Buffers a decoded code point, flushing a full chunk to the output.\n *\n * @param output - Output chunks to append full chunks to.\n * @param codePoints - Code point buffer.\n * @param codePoint - Decoded code point to buffer.\n */\nfunction appendCodePoint(output: string[], codePoints: number[], codePoint: number): void {\n codePoints.push(codePoint);\n if (codePoints.length === OUTPUT_CHUNK_SIZE) {\n flushCodePoints(output, codePoints);\n }\n}\n\n/**\n * Buffers one or more decoded code points, flushing full chunks to the output.\n *\n * @param output - Output chunks to append full chunks to.\n * @param codePoints - Code point buffer.\n * @param result - Decoded code point or code points to buffer.\n */\nfunction appendCodePoints(output: string[], codePoints: number[], result: number | number[]): void {\n if (typeof result === \"number\") {\n appendCodePoint(output, codePoints, result);\n } else {\n for (const codePoint of result) {\n appendCodePoint(output, codePoints, codePoint);\n }\n }\n}\n\n/**\n * The TextDecoder represents a decoder for a specific text encoding, such as UTF-8, ISO-8859-2, KOI8-R, GBK, etc.\n * A decoder takes a stream of bytes as input and emits a stream of code points.\n */\nexport class TextDecoder implements globalThis.TextDecoder {\n /** True if byte order marker is ignored. */\n public readonly ignoreBOM: boolean;\n\n /** True if error mode is fatal. */\n public readonly fatal: boolean;\n\n private readonly enc: Encoding;\n private readonly bomEncoding: boolean;\n private seenBOM = false;\n private decoder: Decoder | null = null;\n\n /**\n * Creates text decoder for the given encoding.\n *\n * @param label - The label of the encoding. Defaults to 'utf-8'\n */\n public constructor(label = DEFAULT_ENCODING, { fatal = false, ignoreBOM = false }: TextDecoderOptions = {}) {\n this.enc = getEncoding(label);\n const name = this.enc.getName();\n this.bomEncoding = name === \"utf-8\" || name === \"utf-16le\" || name === \"utf-16be\";\n this.fatal = fatal;\n this.ignoreBOM = ignoreBOM;\n }\n\n /** @returns The name of the encoding. */\n public get encoding(): string {\n return this.enc.getName();\n }\n\n /**\n * Decoded the given input into string and returns it.\n *\n * @param input - The input to decode.\n * @param options - The decoding options.\n * @returns The decoded string.\n */\n public decode(input?: BufferSource | ArrayBufferLike | ArrayBufferView, { stream = false }: TextDecodeOptions = {}): string {\n let bytes: Uint8Array;\n if (input instanceof Uint8Array) {\n bytes = input;\n } else if (input instanceof ArrayBuffer\n || (typeof SharedArrayBuffer === \"function\" && input instanceof SharedArrayBuffer)) {\n bytes = new Uint8Array(input);\n } else if (ArrayBuffer.isView(input)) {\n bytes = new Uint8Array(input.buffer, input.byteOffset, input.byteLength);\n } else {\n bytes = new Uint8Array(0);\n }\n\n // An empty streaming input cannot produce output. A final empty input must still flush a pending decoder state.\n if (bytes.byteLength === 0 && (stream || this.decoder == null)) {\n return \"\";\n }\n\n // Initialize decoder if not already done\n if (this.decoder == null) {\n this.decoder = this.enc.createDecoder(this.fatal);\n this.seenBOM = false;\n }\n\n try {\n // Decode the input bytes\n const inputStream = new ByteBuffer(bytes);\n const bufferedOutput: BufferedOutput | null = bytes.byteLength >= OUTPUT_CHUNK_SIZE\n ? { chunks: [], codePoints: [] }\n : null;\n let decoded = \"\";\n let result: number | number[] | null;\n while (!inputStream.isEndOfBuffer()) {\n result = this.decoder.decode(inputStream);\n if (result != null) {\n if (bufferedOutput == null) {\n decoded += codePointsToString(result);\n } else {\n appendCodePoints(bufferedOutput.chunks, bufferedOutput.codePoints, result);\n }\n }\n }\n if (!stream) {\n do {\n result = this.decoder.decode(inputStream);\n if (result === FINISHED) {\n break;\n }\n if (result != null) {\n if (bufferedOutput == null) {\n decoded += codePointsToString(result);\n } else {\n appendCodePoints(bufferedOutput.chunks, bufferedOutput.codePoints, result);\n }\n }\n } while (!inputStream.isEndOfBuffer());\n }\n if (bufferedOutput != null) {\n if (bufferedOutput.codePoints.length > 0) {\n flushCodePoints(bufferedOutput.chunks, bufferedOutput.codePoints);\n }\n decoded = bufferedOutput.chunks.join(\"\");\n }\n\n // Remove BOM header from output if ignoreBOM flag is not set\n if (this.bomEncoding && !this.ignoreBOM && !this.seenBOM) {\n if (decoded.length > 0) {\n this.seenBOM = true;\n if (decoded[0] === \"\\uFEFF\") {\n decoded = decoded.substring(1);\n }\n }\n }\n\n return decoded;\n } finally {\n if (!stream) {\n this.decoder = null;\n }\n }\n }\n}\n", "/*\n * Copyright (C) 2021 Klaus Reimer <k@ailis.de>\n * See LICENSE.md for licensing information.\n */\n\nimport { ByteBuffer } from \"./ByteBuffer.ts\";\nimport { FINISHED } from \"./constants.ts\";\nimport type { Encoder } from \"./Encoder.ts\";\nimport { type Encoding, getEncoding } from \"./Encoding.ts\";\n\n/**\n * Returns the Unicode scalar value at the given UTF-16 offset. Lone surrogates are replaced with U+FFFD.\n *\n * @param string - Input string.\n * @param offset - UTF-16 offset to read.\n * @returns Unicode scalar value.\n */\nfunction readCodePoint(string: string, offset: number): number {\n const codePoint = string.codePointAt(offset)!;\n return codePoint >= 0xD800 && codePoint <= 0xDFFF ? 0xFFFD : codePoint;\n}\n\n/**\n * Converts string to code points.\n *\n * @param string - Input string of UTF-16 code units.\n * @returns Code points.\n */\nfunction stringToCodePoints(string: string): number[] {\n const codePoints = new Array<number>(string.length);\n let sourceOffset = 0;\n let outputOffset = 0;\n while (sourceOffset < string.length) {\n const codePoint = readCodePoint(string, sourceOffset);\n codePoints[outputOffset++] = codePoint;\n sourceOffset += codePoint > 0xFFFF ? 2 : 1;\n }\n codePoints.length = outputOffset;\n return codePoints;\n}\n\n/**\n * Adds encoded bytes to the given output array.\n *\n * @param output - Output array to add the encoded bytes to.\n * @param result - Encoded byte or bytes to add.\n */\nfunction appendEncodedBytes(output: number[], result: number | number[]): void {\n if (Array.isArray(result)) {\n output.push(...result);\n } else {\n output.push(result);\n }\n}\n\n/**\n * Encodes a single code point with the given encoder.\n *\n * @param encoder - Encoder to use.\n * @param input - Reusable input buffer.\n * @param output - Reusable output buffer receiving the encoded bytes.\n * @param codePoint - Code point to encode.\n */\nfunction encodeCodePoint(encoder: Encoder, input: ByteBuffer, output: number[], codePoint: number): void {\n input.write(codePoint);\n output.length = 0;\n while (!input.isEndOfBuffer()) {\n const result = encoder.encode(input);\n appendEncodedBytes(output, result);\n }\n}\n\n/**\n * The TextEncoder represents an encoder for a specific text encoding, such as UTF-8, ISO-8859-2, KOI8-R, GBK, etc.\n * An encoder takes a string and emits an array of encoded bytes.\n */\nexport class TextEncoder implements globalThis.TextEncoder {\n private readonly enc: Encoding;\n\n /**\n * Creates a new encoder for the given encoding.\n *\n * @param label - The encoding label. Defaults to UTF-8\n */\n public constructor(label = \"utf-8\") {\n this.enc = getEncoding(label);\n }\n\n /** @returns The name of the encoding. */\n public get encoding(): string {\n return this.enc.getName();\n }\n\n /**\n * Encodes the given string and returns the encoded bytes.\n *\n * @param input - The string to encode.\n * @returns The encoded bytes.\n */\n public encode(input = \"\"): Uint8Array<ArrayBuffer> {\n const encoder = this.enc.createEncoder();\n\n // Encode the input string\n const inputStream = new ByteBuffer(stringToCodePoints(input));\n const output: number[] = [];\n let result: number | number[] | null;\n while (true) {\n result = encoder.encode(inputStream);\n if (result === FINISHED) {\n break;\n }\n appendEncodedBytes(output, result);\n }\n\n // Create and return byte array with encoded string\n return new Uint8Array(output);\n }\n\n /** @inheritdoc */\n public encodeInto(source: string, destination: Uint8Array): TextEncoderEncodeIntoResult {\n const encoder = this.enc.createEncoder();\n const input = new ByteBuffer([]);\n const bytes: number[] = [];\n let sourceOffset = 0;\n let written = 0;\n let trailingBytes = encoder.getTrailingBytes();\n\n // Keep each accepted source prefix independently decodable, including final bytes for stateful encodings.\n while (sourceOffset < source.length && written < destination.byteLength) {\n const codePoint = readCodePoint(source, sourceOffset);\n encodeCodePoint(encoder, input, bytes, codePoint);\n const candidateTrailingBytes = encoder.getTrailingBytes();\n if (written + bytes.length + candidateTrailingBytes.length > destination.byteLength) {\n break;\n }\n destination.set(bytes, written);\n written += bytes.length;\n sourceOffset += codePoint > 0xFFFF ? 2 : 1;\n trailingBytes = candidateTrailingBytes;\n }\n\n destination.set(trailingBytes, written);\n written += trailingBytes.length;\n\n return { read: sourceOffset, written };\n }\n}\n\n/**\n * Creates and returns a new text encoder for the given encoding. When encoding is utf-8 then the built-in\n * text encoder (which only supports utf-8) is returned. Otherwise our own implementation is returned for this\n * specific encoding.\n *\n * @param label - The encoding label. Defaults to \"utf-8\".\n * @returns The created text encoder.\n */\nexport function createTextEncoder(label = \"utf-8\"): globalThis.TextEncoder | TextEncoder {\n return typeof globalThis.TextEncoder === \"function\" && getEncoding(label).getName() === \"utf-8\"\n ? new globalThis.TextEncoder()\n : new TextEncoder(label);\n}\n", "import type { OpCommandContext } from \"./cli.js\";\nimport type { OpBackendRequest } from \"./types.js\";\nimport { resolveOpCompletion } from \"./completion-resolver.js\";\n\nexport function createCompletionCallbackHandler(channel: \"stable\" | \"beta\" = \"stable\") {\n return async (request: OpBackendRequest, context: OpCommandContext): Promise<{ exitCode: number }> => {\n if (request.resource !== \"__complete\" && request.resource !== \"__completeNoDesc\") throw new Error(\"Invalid completion callback\");\n context.signal.throwIfAborted();\n const result = resolveOpCompletion(request.args, channel);\n const lines = result.candidates.map(candidate => request.resource === \"__complete\" ? `${candidate.value}\\t${candidate.description}` : candidate.value);\n lines.push(`:${result.directive}`);\n await context.stdout.write(new TextEncoder().encode(`${lines.join(\"\\n\")}\\n`));\n return { exitCode: 0 };\n };\n}\n\nexport function createCompletionHandler(channel: \"stable\" | \"beta\" = \"stable\") {\n if (channel !== \"stable\" && channel !== \"beta\") throw new Error(\"Invalid completion channel\");\n return async (request: OpBackendRequest, context: OpCommandContext): Promise<{ exitCode: number }> => {\n const shell = request.args[0];\n if (request.args.length !== 1 || ![\"bash\", \"zsh\", \"fish\", \"powershell\"].includes(shell)) {\n throw new Error(\"completion requires one shell: bash, zsh, fish, or powershell\");\n }\n context.signal.throwIfAborted();\n let lines: string[];\n if (shell === \"bash\") {\n lines = [\n \"_op() {\",\n \" local response directive choice current op_cword\",\n \" local -a op_words\",\n ' if declare -F _get_comp_words_by_ref >/dev/null; then',\n ' _get_comp_words_by_ref -n =: -w op_words -i op_cword -c current || return',\n ' else',\n ' op_words=(\"${COMP_WORDS[@]}\")',\n ' op_cword=$COMP_CWORD',\n ' current=\"${op_words[op_cword]}\"',\n ' fi',\n ' op_words[op_cword]=\"$current\"',\n ' COMPREPLY=()',\n ' response=$(OP_COMPATIBILITY_CHANNEL=' + channel + ' \"${op_words[0]}\" __completeNoDesc \"${op_words[@]:1:op_cword}\" 2>/dev/null) || return',\n ' directive=\"${response##*$\\'\\\\n\\'}\"',\n ' case \"$directive\" in',\n ' :0) while IFS= read -r choice; do COMPREPLY+=(\"$choice\"); done < <(compgen -f -- \"$current\") ;;',\n ' :4) while IFS= read -r choice; do [[ \"$choice\" == :4 ]] || COMPREPLY+=(\"$choice\"); done <<< \"$response\" ;;',\n ' esac',\n '}',\n 'complete -o filenames -F _op op',\n ];\n } else if (shell === \"zsh\") {\n lines = [\n '#compdef op',\n '_op() {',\n ' local line directive',\n ' local -a response candidates descriptions',\n ' response=(\"${(@f)$(OP_COMPATIBILITY_CHANNEL=' + channel + ' \"${words[1]}\" __complete \"${(@)words[2,CURRENT]}\" 2>/dev/null)}\")',\n ' directive=\"${response[-1]}\"',\n ' case \"$directive\" in',\n ' :0) _files ;;',\n ' :4)',\n ' for line in \"${response[@]}\"; do',\n ' [[ \"$line\" == :4 ]] && continue',\n ' candidates+=(\"${line%%$\\'\\\\t\\'*}\")',\n ' descriptions+=(\"${line#*$\\'\\\\t\\'}\")',\n ' done',\n ' (( ${#candidates} )) && compadd -d descriptions -- \"${candidates[@]}\"',\n ' ;;',\n ' esac',\n ' return 0',\n '}',\n 'compdef _op op',\n ];\n } else if (shell === \"fish\") {\n lines = [\n 'function __op_candidates',\n ' set -lx OP_COMPATIBILITY_CHANNEL ' + channel,\n ' set -l tokens (commandline -opc)',\n ' set -l current (commandline -ct)',\n ' set -l response ($tokens[1] __complete $tokens[2..-1] \"$current\" 2>/dev/null)',\n ' set -l directive $response[-1]',\n ' switch \"$directive\"',\n ' case :0',\n ' __fish_complete_path \"$current\"',\n ' case :4',\n ' set -e response[-1]',\n ' for candidate in $response',\n ' printf \"%s\\\\n\" \"$candidate\"',\n ' end',\n ' end',\n 'end',\n \"complete -c op -f -a '(__op_candidates)'\",\n ];\n } else {\n lines = [\n 'Register-ArgumentCompleter -Native -CommandName op -ScriptBlock {',\n ' param($wordToComplete, $commandAst, $cursorPosition)',\n ' $program = $commandAst.CommandElements[0].Value',\n ' $arguments = @()',\n ' foreach ($element in ($commandAst.CommandElements | Select-Object -Skip 1)) {',\n ' if ($element.Extent.EndOffset -ge $cursorPosition) { break }',\n ' if ($element -is [System.Management.Automation.Language.StringConstantExpressionAst]) { $arguments += $element.Value }',\n ' else { $arguments += $element.Extent.Text }',\n ' }',\n ' $current = $wordToComplete',\n ' if ($current -eq \"\" -and ($PSVersionTable.PSVersion -lt [version]\"7.3\" -or $PSNativeCommandArgumentPassing -eq \"Legacy\")) { $current = \\'\"\"\\' }',\n ' $previousChannel = $env:OP_COMPATIBILITY_CHANNEL',\n ' try {',\n \" $env:OP_COMPATIBILITY_CHANNEL = '\" + channel + \"'\",\n ' $response = @(& $program __complete @arguments $current 2>$null)',\n ' } finally { $env:OP_COMPATIBILITY_CHANNEL = $previousChannel }',\n ' if ($response.Count -eq 0) { return }',\n ' $directive = $response[-1]',\n ' if ($directive -eq \":0\") { return }',\n ' if ($directive -ne \":4\") { \"\"; return }',\n ' if ($response.Count -eq 1) { \"\"; return }',\n ' foreach ($line in $response[0..($response.Count - 2)]) {',\n ' $parts = $line.Split([char]9, 2)',\n ' $description = if ($parts.Count -gt 1) { $parts[1] } else { \" \" }',\n \" [System.Management.Automation.CompletionResult]::new($parts[0], $parts[0], 'ParameterValue', $description)\",\n ' }',\n '}',\n ];\n }\n await context.stdout.write(new TextEncoder().encode(`${lines.join(\"\\n\")}\\n`));\n return { exitCode: 0 };\n };\n}\n", "import { getOpCommandFlags, opCatalogNodes, opCommandCatalog, opGlobalFlags, type OpCatalogCommand, type OpFlagDefinition } from \"./catalog.js\";\nimport { validateOpFlagValue } from \"./flag-values.js\";\n\nexport interface OpCompletionResult {\n readonly candidates: readonly { readonly value: string; readonly description: string }[];\n readonly directive: 0 | 4;\n}\n\nexport function resolveOpCompletion(words: readonly string[], channel: \"stable\" | \"beta\" = \"stable\"): OpCompletionResult {\n const catalog = opCommandCatalog.filter(command => channel === \"beta\" || command.availability !== \"beta\");\n const previous = words.slice(0, -1);\n const current = words.at(-1) ?? \"\";\n const path: string[] = [];\n const used = new Set<string>();\n let command: OpCatalogCommand | undefined;\n let pending: string | undefined;\n let stopped = false;\n let invalid = false;\n let help = false;\n const available = () => getOpCommandFlags(path, channel);\n const consume = (name: string, definition: OpFlagDefinition, value: string | undefined, spelling: string) => {\n used.add(definition.longAliases?.includes(spelling) ? spelling : name);\n if (name === \"help\" || name === \"version\") help = true;\n if (definition.kind === \"boolean\") {\n if (value !== undefined && ![\"true\", \"false\", \"1\", \"0\", \"t\", \"f\", \"TRUE\", \"FALSE\", \"True\", \"False\", \"T\", \"F\"].includes(value)) invalid = true;\n } else if (definition.kind !== \"optional\" && value === undefined) pending = name;\n if (name === \"format\" && value !== undefined && ![\"json\", \"human-readable\"].includes(value)) invalid = true;\n if (definition.completionRejectEmpty && value === \"\") invalid = true;\n if (value !== undefined) {\n try { validateOpFlagValue(name, definition, value); } catch { invalid = true; }\n }\n };\n for (const token of previous) {\n if (pending !== undefined) {\n if (pending === \"format\" && ![\"json\", \"human-readable\"].includes(token)) invalid = true;\n if (available()[pending]?.completionRejectEmpty && token === \"\") invalid = true;\n const definition = available()[pending];\n if (definition) {\n try { validateOpFlagValue(pending, definition, token); } catch { invalid = true; }\n }\n pending = undefined;\n continue;\n }\n if (stopped || invalid) break;\n if (token === \"--\") { stopped = true; break; }\n if (token.startsWith(\"-\") && token !== \"-\") {\n const flags = available();\n if (token.startsWith(\"--\")) {\n const equal = token.indexOf(\"=\");\n const spelling = token.slice(2, equal < 0 ? undefined : equal);\n const name = Object.hasOwn(flags, spelling) ? spelling : Object.keys(flags).find(key => flags[key]!.longAliases?.includes(spelling));\n if (!name) { invalid = true; break; }\n consume(name, flags[name]!, equal < 0 ? undefined : token.slice(equal + 1), spelling);\n } else {\n for (let index = 1; index < token.length; index++) {\n const name = Object.keys(flags).find(key => flags[key]!.alias === token[index]);\n if (!name) { invalid = true; break; }\n const definition = flags[name]!;\n const remainder = token.slice(index + 1);\n const attached = remainder.startsWith(\"=\") || definition.kind !== \"boolean\";\n consume(name, definition, attached && remainder ? remainder.startsWith(\"=\") ? remainder.slice(1) : remainder : undefined, name);\n if (attached) break;\n }\n }\n continue;\n }\n if (command) continue;\n if (path.length === 0 && token === \"help\") { stopped = true; break; }\n const candidates = catalog.filter(entry => path.every((part, index) => entry.path[index] === part) && (entry.path[path.length] === token || entry.path.length === path.length + 1 && entry.aliases.includes(token)));\n if (!candidates.length) { invalid = true; break; }\n path.push(candidates[0]!.path[path.length]!);\n command = candidates.find(entry => entry.path.length === path.length);\n }\n if (invalid || pending !== undefined || stopped) return { candidates: [], directive: 0 };\n if (help) return { candidates: [], directive: 4 };\n if (current.startsWith(\"-\")) {\n if (current.includes(\"=\")) return { candidates: [], directive: 0 };\n const flags = available();\n const inherited = path.length ? Object.keys(opGlobalFlags).filter(name => name !== \"help\") : [];\n const local = Object.keys(flags).filter(name => !inherited.includes(name));\n const candidates: { value: string; description: string }[] = [];\n const required: { value: string; description: string }[] = [];\n for (const name of [...inherited.sort(), ...local.sort()]) {\n const definition = flags[name];\n if (!definition || definition.completionVisible === false || used.has(name) && definition.kind !== \"array\" && definition.valueSyntax !== \"csv\") continue;\n for (const value of [`--${name}`, ...(definition.alias ? [`-${definition.alias}`] : [])]) {\n if (value.startsWith(current)) {\n const candidate = { value, description: definition.description ?? \"\" };\n candidates.push(candidate);\n if (definition.completionRequired && !used.has(name)) required.push(candidate);\n }\n }\n }\n return { candidates: required.length ? required : candidates, directive: 4 };\n }\n if (command) return { candidates: [], directive: 0 };\n const names = new Set(catalog.filter(entry => path.every((part, index) => entry.path[index] === part)).map(entry => entry.path[path.length]!));\n if (!path.length) names.add(\"help\");\n return { candidates: [...names].sort().filter(value => value.startsWith(current)).map(value => ({ value, description: opCatalogNodes.find(node => node.path.join(\" \") === [...path, value].join(\" \"))?.summary ?? \"Help about any command\" })), directive: 4 };\n}\n", "export type OpFlagKind = \"string\" | \"boolean\" | \"optional\" | \"array\" | \"csv\";\n\nexport interface OpFlagDefinition {\n readonly kind: OpFlagKind;\n readonly alias?: string;\n readonly env?: string;\n readonly invalidEnv?: \"ignore\";\n readonly longAliases?: readonly string[];\n readonly availability?: \"beta\";\n readonly description?: string;\n readonly metavar?: string;\n readonly defaultDisplay?: string;\n readonly helpVisible?: boolean;\n readonly completionVisible?: boolean;\n readonly completionRequired?: boolean;\n readonly completionRejectEmpty?: boolean;\n readonly allowedValues?: readonly string[];\n readonly normalizeValues?: \"trim-lowercase\" | \"lowercase\";\n readonly valueSyntax?: \"duration\" | \"go-duration\" | \"file-mode\" | \"csv\" | \"password-recipe\";\n}\n\nexport interface OpCatalogCommand {\n readonly path: readonly string[];\n readonly flags: Readonly<Record<string, OpFlagDefinition>>;\n readonly aliases: readonly string[];\n readonly availability: \"stable\" | \"beta\" | \"extension\";\n readonly summary: string;\n readonly description: string;\n readonly synopsis: string;\n readonly examples?: string;\n readonly helpGroup: \"management\" | \"commands\";\n readonly helpOrder: number;\n readonly args?: Readonly<{ min: number; max?: number; stdinAlternative?: boolean }>;\n}\n\ninterface NodeDeclaration {\n readonly path: string;\n readonly summary: string;\n readonly description?: string;\n readonly synopsis?: string;\n readonly examples?: string;\n readonly helpGroup?: \"management\" | \"commands\";\n readonly helpOrder?: number;\n readonly flags?: string;\n readonly flagOverrides?: Readonly<Record<string, { [Key in keyof OpFlagDefinition]?: OpFlagDefinition[Key] | null }>>;\n readonly aliases?: readonly string[];\n readonly availability?: OpCatalogCommand[\"availability\"];\n readonly args?: OpCatalogCommand[\"args\"];\n}\n\nexport const opReferenceUrl = \"https://www.1password.dev/cli/reference\";\nexport const opMetadataVersion = \"2.39.0\";\n\nfunction freezeFlag(flag: OpFlagDefinition): OpFlagDefinition {\n return Object.freeze({ ...flag, ...(flag.longAliases ? { longAliases: Object.freeze([...flag.longAliases]) } : {}), ...(flag.allowedValues ? { allowedValues: Object.freeze([...flag.allowedValues]) } : {}) });\n}\n\nconst vaultPermissionValues = Object.freeze([\n \"allow_viewing\", \"allow_editing\", \"allow_managing\", \"view_items\", \"create_items\",\n \"view_and_copy_passwords\", \"edit_items\", \"archive_items\", \"delete_items\",\n \"view_item_history\", \"import_items\", \"export_items\", \"copy_and_share_items\",\n \"print_items\", \"manage_vault\", \"read_items\", \"write_items\", \"share_items\",\n]);\n\nexport const opGlobalFlags: Readonly<Record<string, OpFlagDefinition>> = Object.freeze(Object.fromEntries(\n Object.entries({\n \"account\": {\n \"kind\": \"string\",\n \"env\": \"OP_ACCOUNT\",\n \"description\": \"Select the account to execute the command by account shorthand, sign-in address, account ID, or user ID. For a list of available accounts, run 'op account list'. Can be set as the OP_ACCOUNT environment variable.\",\n \"metavar\": \"account\"\n },\n \"cache\": {\n \"kind\": \"boolean\",\n \"env\": \"OP_CACHE\",\n \"description\": \"Store and use cached information. Caching is enabled by default on UNIX-like systems. Caching is not available on Windows. Options: true, false. Can also be set with the OP_CACHE environment variable.\",\n \"metavar\": \"\",\n \"defaultDisplay\": \"true\"\n },\n \"config\": {\n \"kind\": \"string\",\n \"env\": \"OP_CONFIG_DIR\",\n \"description\": \"Use this configuration directory.\",\n \"metavar\": \"directory\"\n },\n \"debug\": {\n \"kind\": \"boolean\",\n \"env\": \"OP_DEBUG\",\n \"description\": \"Enable debug mode. Can also be enabled by setting the OP_DEBUG environment variable to true.\",\n \"metavar\": \"\"\n },\n \"encoding\": {\n \"kind\": \"string\",\n \"description\": \"Use this character encoding type. Default: UTF-8. Supported: SHIFT_JIS, gbk.\",\n \"metavar\": \"type\"\n },\n \"format\": {\n \"kind\": \"string\",\n \"env\": \"OP_FORMAT\",\n \"description\": \"Use this output format. Can be 'human-readable' or 'json'. Can be set as the OP_FORMAT environment variable.\",\n \"metavar\": \"string\",\n \"defaultDisplay\": \"\\\"human-readable\\\"\"\n },\n \"help\": {\n \"kind\": \"boolean\",\n \"alias\": \"h\",\n \"description\": \"Get help for op.\",\n \"metavar\": \"\"\n },\n \"iso-timestamps\": {\n \"kind\": \"boolean\",\n \"env\": \"OP_ISO_TIMESTAMPS\",\n \"invalidEnv\": \"ignore\",\n \"description\": \"Format timestamps according to ISO 8601 / RFC 3339. Can be set as the OP_ISO_TIMESTAMPS environment variable.\",\n \"metavar\": \"\"\n },\n \"no-color\": {\n \"kind\": \"boolean\",\n \"description\": \"Print output without color.\",\n \"metavar\": \"\"\n },\n \"session\": {\n \"kind\": \"string\",\n \"env\": \"OP_SESSION\",\n \"description\": \"Authenticate with this session token. 1Password CLI outputs session tokens for successful 'op signin' commands when 1Password app integration is not enabled.\",\n \"metavar\": \"token\"\n }\n} satisfies Record<string, OpFlagDefinition>).map(([name, flag]) => [name, freezeFlag(flag)]),\n));\n\nexport const opRootFlags: Readonly<Record<string, OpFlagDefinition>> = Object.freeze(Object.fromEntries(\n Object.entries({\n \"version\": {\n \"kind\": \"boolean\",\n \"alias\": \"v\",\n \"description\": \"version for op\",\n \"metavar\": \"\"\n }\n} satisfies Record<string, OpFlagDefinition>).map(([name, flag]) => [name, freezeFlag(flag)]),\n));\n\nconst definitions: Readonly<Record<string, OpFlagDefinition>> = {\n \"environment\": { \"kind\": \"array\", \"availability\": \"beta\", \"description\": \"Read variables from these Environments before starting the process.\", \"metavar\": \"strings\" },\n \"file-mode\": {\n \"kind\": \"string\",\n \"valueSyntax\": \"file-mode\",\n \"description\": \"Set filemode for the output file. It is ignored without the --out-file flag.\",\n \"metavar\": \"filemode\",\n \"defaultDisplay\": \"0600\"\n },\n \"force\": {\n \"kind\": \"boolean\",\n \"alias\": \"f\",\n \"description\": \"Do not prompt for confirmation.\",\n \"metavar\": \"\"\n },\n \"in-file\": {\n \"kind\": \"string\",\n \"alias\": \"i\",\n \"description\": \"The filename of a template file to inject.\",\n \"metavar\": \"string\"\n },\n \"out-file\": {\n \"kind\": \"string\",\n \"alias\": \"o\",\n \"description\": \"Write the injected template to a file instead of stdout.\",\n \"metavar\": \"string\"\n },\n \"no-newline\": {\n \"kind\": \"boolean\",\n \"alias\": \"n\",\n \"description\": \"Do not print a new line after the secret.\",\n \"metavar\": \"\"\n },\n \"env-file\": {\n \"kind\": \"array\",\n \"description\": \"Enable Dotenv integration with specific Dotenv files to parse. For example: --env-file=.env.\",\n \"metavar\": \"stringArray\"\n },\n \"no-masking\": {\n \"kind\": \"boolean\",\n \"env\": \"OP_RUN_NO_MASKING\",\n \"description\": \"Disable masking of secrets on stdout and stderr.\",\n \"metavar\": \"\"\n },\n \"raw\": {\n \"kind\": \"boolean\",\n \"description\": \"Only return the session token.\",\n \"metavar\": \"\"\n },\n \"all\": {\n \"kind\": \"boolean\",\n \"description\": \"Sign out of all signed-in accounts.\",\n \"metavar\": \"\"\n },\n \"forget\": {\n \"kind\": \"boolean\",\n \"description\": \"Remove the details for a 1Password account from this device.\",\n \"metavar\": \"\"\n },\n \"channel\": {\n \"kind\": \"string\",\n \"description\": \"Look for updates from a specific channel. allowed: stable, beta\",\n \"metavar\": \"string\"\n },\n \"directory\": {\n \"kind\": \"string\",\n \"description\": \"Download the update to this ''path''.\",\n \"metavar\": \"string\"\n },\n \"address\": {\n \"kind\": \"string\",\n \"description\": \"The sign-in address for your account.\",\n \"metavar\": \"string\"\n },\n \"email\": {\n \"kind\": \"string\",\n \"description\": \"The email address associated with your account.\",\n \"metavar\": \"string\"\n },\n \"shorthand\": {\n \"kind\": \"string\",\n \"description\": \"Set a custom account shorthand for your account.\",\n \"metavar\": \"string\"\n },\n \"signin\": {\n \"kind\": \"boolean\",\n \"description\": \"Immediately sign in to the added account.\",\n \"metavar\": \"\"\n },\n \"file-name\": {\n \"kind\": \"string\",\n \"description\": \"Set the file's name.\",\n \"metavar\": \"name\"\n },\n \"tags\": {\n \"kind\": \"csv\",\n \"valueSyntax\": \"csv\",\n \"description\": \"Set the tags to the specified (comma-separated) values.\",\n \"metavar\": \"tags\"\n },\n \"title\": {\n \"kind\": \"string\",\n \"description\": \"Set the document item's title.\",\n \"metavar\": \"title\"\n },\n \"vault\": {\n \"kind\": \"string\",\n \"description\": \"Look for the item in this vault.\",\n \"metavar\": \"string\"\n },\n \"include-archive\": {\n \"kind\": \"boolean\",\n \"env\": \"OP_INCLUDE_ARCHIVE\",\n \"description\": \"Include document items in the Archive. Can also be set using OP_INCLUDE_ARCHIVE environment variable.\",\n \"metavar\": \"\"\n },\n \"archive\": {\n \"kind\": \"boolean\",\n \"description\": \"Move the document to the Archive.\",\n \"metavar\": \"\"\n },\n \"expires-in\": {\n \"kind\": \"string\",\n \"valueSyntax\": \"duration\",\n \"description\": \"Set how the long the events-api token is valid for in (s)econds, (m)inutes, (h)ours, (d)ays, and/or (w)eeks.\",\n \"metavar\": \"duration\"\n },\n \"features\": {\n \"kind\": \"csv\",\n \"valueSyntax\": \"csv\",\n \"description\": \"Set the comma-separated list of features the integration token can be used for. Options: 'signinattempts', 'itemusages', 'auditevents'.\",\n \"metavar\": \"features\"\n },\n \"description\": {\n \"kind\": \"string\",\n \"description\": \"Set the group's description.\",\n \"metavar\": \"string\"\n },\n \"name\": {\n \"kind\": \"string\",\n \"description\": \"Change the group's name.\",\n \"metavar\": \"name\"\n },\n \"user\": {\n \"kind\": \"string\",\n \"description\": \"List groups that a user belongs to.\",\n \"metavar\": \"user\"\n },\n \"category\": {\n \"kind\": \"string\",\n \"description\": \"Set the item's category.\",\n \"metavar\": \"category\"\n },\n \"dry-run\": {\n \"kind\": \"boolean\",\n \"description\": \"Test the command and output a preview of the resulting item.\",\n \"metavar\": \"\"\n },\n \"favorite\": {\n \"kind\": \"boolean\",\n \"description\": \"Add item to favorites.\",\n \"metavar\": \"\"\n },\n \"generate-password\": {\n \"kind\": \"optional\",\n \"valueSyntax\": \"password-recipe\",\n \"description\": \"Add a randomly-generated password to a Login or Password item.\",\n \"metavar\": \"recipe\"\n },\n \"reveal\": {\n \"kind\": \"boolean\",\n \"description\": \"Don't conceal sensitive fields.\",\n \"metavar\": \"\"\n },\n \"ssh-generate-key\": {\n \"kind\": \"string\",\n \"allowedValues\": [\"ed25519\", \"rsa\", \"rsa2048\", \"rsa3072\", \"rsa4096\", \"rsa-2048\", \"rsa-3072\", \"rsa-4096\"],\n \"normalizeValues\": \"lowercase\",\n \"description\": \"The type of SSH key to create: Ed25519 or RSA. For RSA, specify 2048, 3072, or 4096 (default) bits. Possible values: 'ed25519', 'rsa', 'rsa2048', 'rsa3072', 'rsa4096'.\",\n \"metavar\": \"\",\n \"defaultDisplay\": \"Ed25519\"\n },\n \"template\": {\n \"kind\": \"string\",\n \"description\": \"Specify the file path to read an item template from.\",\n \"metavar\": \"string\"\n },\n \"url\": {\n \"kind\": \"string\",\n \"description\": \"Set the URL associated with the item\",\n \"metavar\": \"URL\"\n },\n \"fields\": {\n \"kind\": \"csv\",\n \"valueSyntax\": \"csv\",\n \"longAliases\": [\n \"field\"\n ],\n \"description\": \"Return data from specific fields. Use 'label=' to get the field by name or 'type=' to filter fields by type. Specify multiple in a comma-separated list.\",\n \"metavar\": \"strings\"\n },\n \"otp\": {\n \"kind\": \"boolean\",\n \"description\": \"Output the primary one-time password for this item.\",\n \"metavar\": \"\"\n },\n \"share-link\": {\n \"kind\": \"boolean\",\n \"description\": \"Get a shareable link for the item.\",\n \"metavar\": \"\"\n },\n \"categories\": {\n \"kind\": \"csv\",\n \"valueSyntax\": \"csv\",\n \"description\": \"Only list items in these categories (comma-separated).\",\n \"metavar\": \"categories\"\n },\n \"long\": {\n \"kind\": \"boolean\",\n \"description\": \"Output a more detailed item list.\",\n \"metavar\": \"\"\n },\n \"current-vault\": {\n \"kind\": \"string\",\n \"description\": \"Vault where the item is currently saved.\",\n \"metavar\": \"string\"\n },\n \"destination-vault\": {\n \"kind\": \"string\",\n \"description\": \"The vault you want to move the item to.\",\n \"metavar\": \"string\"\n },\n \"emails\": {\n \"kind\": \"csv\",\n \"valueSyntax\": \"csv\",\n \"description\": \"Email addresses to share with.\",\n \"metavar\": \"strings\"\n },\n \"view-once\": {\n \"kind\": \"boolean\",\n \"description\": \"Expire link after a single view.\",\n \"metavar\": \"\"\n },\n \"can-create-vaults\": {\n \"kind\": \"boolean\",\n \"description\": \"Allow the service account to create new vaults.\",\n \"metavar\": \"\"\n },\n \"language\": {\n \"kind\": \"string\",\n \"description\": \"Provide the user's account language.\",\n \"metavar\": \"string\",\n \"defaultDisplay\": \"\\\"en\\\"\"\n },\n \"fingerprint\": {\n \"kind\": \"boolean\",\n \"description\": \"Get the user's public key fingerprint.\",\n \"metavar\": \"\"\n },\n \"me\": {\n \"kind\": \"boolean\",\n \"description\": \"Get the authenticated user's details.\",\n \"metavar\": \"\"\n },\n \"public-key\": {\n \"kind\": \"boolean\",\n \"description\": \"Get the user's public key.\",\n \"metavar\": \"\"\n },\n \"travel-mode\": {\n \"kind\": \"string\",\n \"allowedValues\": [\"on\", \"off\"],\n \"description\": \"Turn Travel Mode on or off for the user.\",\n \"metavar\": \"on|off\",\n \"defaultDisplay\": \"off\"\n },\n \"deauthorize-devices-after\": {\n \"kind\": \"string\",\n \"valueSyntax\": \"go-duration\",\n \"description\": \"Deauthorize the user's devices after a time (rounded down to seconds).\",\n \"metavar\": \"duration\"\n },\n \"group\": {\n \"kind\": \"string\",\n \"description\": \"The group to receive access.\",\n \"metavar\": \"group\"\n },\n \"allow-admins-to-manage\": {\n \"kind\": \"string\",\n \"allowedValues\": [\"true\", \"false\", \"TRUE\", \"FALSE\", \"True\", \"False\", \"t\", \"f\", \"T\", \"F\", \"1\", \"0\"],\n \"description\": \"Set whether administrators can manage the vault. If not provided, the default policy for the account applies.\",\n \"metavar\": \"true|false\"\n },\n \"icon\": {\n \"kind\": \"string\",\n \"description\": \"Set the vault icon.\",\n \"metavar\": \"string\"\n },\n \"permission\": {\n \"kind\": \"csv\",\n \"allowedValues\": vaultPermissionValues,\n \"normalizeValues\": \"trim-lowercase\",\n \"description\": \"List only vaults that the specified user/group has this permission for.\",\n \"metavar\": \"permissions\"\n },\n \"all-servers\": {\n \"kind\": \"boolean\",\n \"description\": \"Grant access to all current and future servers in the authenticated account.\",\n \"metavar\": \"\"\n },\n \"server\": {\n \"kind\": \"string\",\n \"description\": \"Only look for tokens for this 1Password Connect server.\",\n \"metavar\": \"string\"\n },\n \"vaults\": {\n \"kind\": \"csv\",\n \"valueSyntax\": \"csv\",\n \"description\": \"Grant the Connect server access to these vaults.\",\n \"metavar\": \"strings\"\n },\n \"role\": {\n \"kind\": \"string\",\n \"allowedValues\": [\"manager\", \"member\"],\n \"normalizeValues\": \"lowercase\",\n \"description\": \"Specify the user's role as a member or manager. Default: member.\",\n \"metavar\": \"string\"\n },\n \"no-input\": {\n \"kind\": \"boolean\",\n \"description\": \"Do not prompt for input on interactive terminal.\",\n \"metavar\": \"input\"\n },\n \"permissions\": {\n \"kind\": \"csv\",\n \"allowedValues\": vaultPermissionValues,\n \"normalizeValues\": \"trim-lowercase\",\n \"description\": \"The permissions to grant to the group.\",\n \"metavar\": \"permissions\"\n },\n \"vars\": {\n \"kind\": \"csv\",\n \"valueSyntax\": \"csv\",\n \"description\": \"Capture only these comma-separated variable names, including names that are unset.\",\n \"metavar\": \"strings\"\n },\n \"shell\": {\n \"kind\": \"string\",\n \"description\": \"Print restoration commands for bash, zsh, sh, fish, or powershell.\",\n \"metavar\": \"string\"\n }\n};\n\nconst declarations: readonly NodeDeclaration[] = [\n {\"path\":\"\",\"summary\":\"Portable op-compatible command interface\",\"description\":\"This portable implementation exposes an op-compatible command interface with a configurable backend and host approval policies.\\n\\nStable command metadata targets 1Password CLI 2.39.0. Beta commands and local extensions are identified separately.\"},\n {\"path\":\"account\",\"summary\":\"Manage your locally configured 1Password accounts\",\"helpGroup\":\"management\",\"helpOrder\":0},\n {\"path\":\"connect\",\"summary\":\"Manage Connect server instances and tokens in your 1Password account\",\"helpGroup\":\"management\",\"helpOrder\":1},\n {\"path\":\"document\",\"summary\":\"Perform CRUD operations on Document items in your vaults\",\"helpGroup\":\"management\",\"helpOrder\":2},\n {\"path\":\"events-api\",\"summary\":\"Manage Events API integrations in your 1Password account\",\"helpGroup\":\"management\",\"helpOrder\":3},\n {\"path\":\"group\",\"summary\":\"Manage the groups in your 1Password account\",\"helpGroup\":\"management\",\"helpOrder\":4},\n {\"path\":\"item\",\"summary\":\"Perform CRUD operations on the 1Password items in your vaults\",\"helpGroup\":\"management\",\"helpOrder\":5},\n {\"path\":\"plugin\",\"summary\":\"Manage the shell plugins you use to authenticate third-party CLIs\",\"helpGroup\":\"management\",\"helpOrder\":6},\n {\"path\":\"service-account\",\"summary\":\"Manage service accounts\",\"helpGroup\":\"management\",\"helpOrder\":7},\n {\"path\":\"user\",\"summary\":\"Manage users within this 1Password account\",\"helpGroup\":\"management\",\"helpOrder\":8},\n {\"path\":\"vault\",\"summary\":\"Manage permissions and perform CRUD operations on your 1Password vaults\",\"helpGroup\":\"management\",\"helpOrder\":9},\n {\"path\":\"completion\",\"summary\":\"Generate shell completion information\",\"synopsis\":\"<shell> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"description\":\"Print a shell adapter for Bash, Zsh, fish, or PowerShell. Source the generated text in the selected shell to activate command and flag completion.\\n\\nCompletion callbacks return catalog metadata without loading a backend. Backend-backed argument suggestions are not provided.\",\"examples\":\"Load Bash completions:\\n\\n\\tsource <(op completion bash)\\n\\nLoad fish completions:\\n\\n\\top completion fish | source\"},\n {\"path\":\"inject\",\"summary\":\"Inject secrets into a config file\",\"helpGroup\":\"commands\",\"helpOrder\":1,\"flags\":\"file-mode force in-file out-file\",\"description\":\"Substitute secret references inside a template. Templates come from stdin or --in-file; output goes to stdout or --out-file.\\n\\nThe result can contain plaintext secrets. Host authorization may deny the operation before resolution begins.\",\"examples\":\"Render a template into a separate file:\\n\\n\\top inject --in-file ./example.conf.tpl --out-file ./example.conf\"},\n {\"path\":\"read\",\"summary\":\"Read a secret reference\",\"synopsis\":\"<reference> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":2,\"flags\":\"file-mode force no-newline out-file\",\"flagOverrides\":{\"out-file\":{\"description\":\"Write the secret to a file instead of stdout.\"}},\"description\":\"Resolve an op:// secret reference and write its value. References may address fields or attachments and can include supported attribute queries.\\n\\nOutput is plaintext or raw attachment bytes, not a secrecy boundary. --out-file redirects the result to a file, and --no-newline suppresses a trailing newline for text.\",\"examples\":\"Resolve a password field:\\n\\n\\top read op://example-vault/example-item/password\",\"args\":{\"min\":1,\"max\":1}},\n {\"path\":\"run\",\"summary\":\"Pass secrets as environment variables to a process\",\"synopsis\":\"-- <command> <command>... [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":3,\"flags\":\"env-file environment no-masking\",\"description\":\"Start a child command with resolved secret values in its environment. Put -- before the child command so its options are not parsed as op flags.\\n\\nDotenv input remains UTF-8. Output masking is enabled unless --no-masking is requested; masking is not a substitute for keeping child output confidential.\",\"examples\":\"Pass resolved environment values to a child:\\n\\n\\top run --env-file ./example.env -- ./example-worker\",\"args\":{\"min\":1}},\n {\"path\":\"signin\",\"summary\":\"Sign in to a 1Password account\",\"helpGroup\":\"commands\",\"helpOrder\":4,\"flags\":\"force raw\",\"flagOverrides\":{\"force\":{\"description\":\"Ignore warnings and print raw output from this command.\"}},\"description\":\"Request authentication from the configured backend. Manual mode returns a session token for subsequent operations; app integration delegates authentication to a configured host hook. Backend capabilities determine which authentication methods are available.\"},\n {\"path\":\"signout\",\"summary\":\"Sign out of a 1Password account\",\"helpGroup\":\"commands\",\"helpOrder\":5,\"flags\":\"all forget\"},\n {\"path\":\"update\",\"summary\":\"Check for and download updates.\",\"helpGroup\":\"commands\",\"helpOrder\":6,\"flags\":\"channel directory\"},\n {\"path\":\"whoami\",\"summary\":\"Get information about a signed-in account\",\"helpGroup\":\"commands\",\"helpOrder\":7,\"args\":{\"min\":0,\"max\":0}},\n {\"path\":\"account add\",\"summary\":\"Add an account to sign in to for the first time\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"flags\":\"address email raw shorthand signin\"},\n {\"path\":\"account get\",\"summary\":\"Get details about your account\",\"helpGroup\":\"commands\",\"helpOrder\":1},\n {\"path\":\"account list\",\"summary\":\"List users and accounts set up on this device\",\"helpGroup\":\"commands\",\"helpOrder\":2,\"aliases\":[\"ls\"]},\n {\"path\":\"account forget\",\"summary\":\"Remove a 1Password account from this device\",\"synopsis\":\"[ <account> ] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":3,\"flags\":\"all\",\"flagOverrides\":{\"all\":{\"description\":\"Forget all authenticated accounts.\"}}},\n {\"path\":\"connect group\",\"summary\":\"Manage group access to Secrets Automation\",\"helpGroup\":\"management\",\"helpOrder\":0},\n {\"path\":\"connect server\",\"summary\":\"Manage Connect servers\",\"helpGroup\":\"management\",\"helpOrder\":1},\n {\"path\":\"connect token\",\"summary\":\"Manage Connect server tokens\",\"helpGroup\":\"management\",\"helpOrder\":2},\n {\"path\":\"connect vault\",\"summary\":\"Manage Connect server vault access\",\"helpGroup\":\"management\",\"helpOrder\":3},\n {\"path\":\"document create\",\"summary\":\"Create a document item\",\"synopsis\":\"[{ <file> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"flags\":\"file-name tags title vault\",\"flagOverrides\":{\"vault\":{\"description\":\"Save the document in this vault. Default: Private, Personal, or Employee, depending on your account type.\",\"metavar\":\"vault\"}},\"description\":\"Upload file bytes or read them from stdin when no file is given or the file argument is -. The file name and title can be supplied explicitly. Choose the destination with --vault.\\n\\nDocument uploads preserve their binary content.\"},\n {\"path\":\"document get\",\"summary\":\"Download a document\",\"synopsis\":\"{ <itemName> | <itemID> } [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":1,\"flags\":\"file-mode force include-archive out-file vault\",\"flagOverrides\":{\"force\":{\"alias\":null,\"description\":\"Forcibly print an unintelligible document to an interactive terminal. If --out-file is specified, save the document to a file without prompting for confirmation.\"},\"out-file\":{\"description\":\"Save the document to the file path instead of stdout.\",\"metavar\":\"path\"},\"vault\":{\"description\":\"Look for the document in this vault.\",\"metavar\":\"vault\"}},\"description\":\"Download the document as bytes. With no output path, bytes go to stdout; --out-file writes a file instead. --file-mode controls the output file mode.\\n\\n--force permits binary output to an interactive terminal and skips overwrite confirmation for a destination file. Document bytes are not text-transcoded.\",\"examples\":\"Save a document without interpreting its contents as text:\\n\\n\\top document get 'Example document' --out-file ./example-document.bin\",\"args\":{\"min\":1,\"max\":1}},\n {\"path\":\"document edit\",\"summary\":\"Edit a document item\",\"synopsis\":\"{ <itemName> | <itemID> } [{ <file> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":2,\"flags\":\"file-name tags title vault\",\"flagOverrides\":{\"tags\":{\"description\":\"Set the tags to the specified (comma-separated) values. An empty value removes all tags.\"},\"vault\":{\"description\":\"Look up document in this vault.\",\"metavar\":\"vault\"}},\"description\":\"Replace the selected document's content using file bytes or stdin. File name, title, tags, and vault selectors remain separate from the binary payload.\"},\n {\"path\":\"document delete\",\"summary\":\"Delete or archive a document item\",\"synopsis\":\"[{ <itemName> | <itemID> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":3,\"flags\":\"archive vault\",\"flagOverrides\":{\"vault\":{\"description\":\"Delete the document in this vault.\",\"metavar\":\"vault\"}},\"aliases\":[\"remove\",\"rm\"]},\n {\"path\":\"document list\",\"summary\":\"Get a list of documents\",\"helpGroup\":\"commands\",\"helpOrder\":4,\"flags\":\"include-archive vault\",\"flagOverrides\":{\"vault\":{\"description\":\"Only list documents in this vault.\",\"metavar\":\"vault\"}},\"aliases\":[\"ls\"]},\n {\"path\":\"events-api create\",\"summary\":\"Set up an integration with the Events API\",\"synopsis\":\"<name> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"flags\":\"expires-in features\"},\n {\"path\":\"group user\",\"summary\":\"Manage group membership\",\"helpGroup\":\"management\",\"helpOrder\":0},\n {\"path\":\"group create\",\"summary\":\"Create a group\",\"synopsis\":\"<name> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"flags\":\"description\"},\n {\"path\":\"group get\",\"summary\":\"Get details about a group\",\"synopsis\":\"[{ <groupName> | <groupID> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":1},\n {\"path\":\"group edit\",\"summary\":\"Edit a group's name or description\",\"synopsis\":\"[{ <groupName> | <groupID> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":2,\"flags\":\"description name\",\"flagOverrides\":{\"description\":{\"description\":\"Change the group's description.\",\"metavar\":\"description\"}}},\n {\"path\":\"group delete\",\"summary\":\"Remove a group\",\"synopsis\":\"[{ <groupName> | <groupID> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":3,\"aliases\":[\"remove\",\"rm\"]},\n {\"path\":\"group list\",\"summary\":\"List groups\",\"helpGroup\":\"commands\",\"helpOrder\":4,\"flags\":\"user vault\",\"flagOverrides\":{\"vault\":{\"description\":\"List groups that have direct access to a vault.\",\"metavar\":\"vault\"}},\"aliases\":[\"ls\"]},\n {\"path\":\"item template\",\"summary\":\"Manage templates\",\"helpGroup\":\"management\",\"helpOrder\":0},\n {\"path\":\"item create\",\"summary\":\"Create an item\",\"synopsis\":\"[ - ] [ <assignment>... ] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"flags\":\"category dry-run favorite generate-password reveal ssh-generate-key tags template title url vault\",\"flagOverrides\":{\"title\":{\"description\":\"Set the item's title.\"},\"vault\":{\"description\":\"Save the item in this vault. Default: Private, Personal, or Employee, depending on your account type.\",\"metavar\":\"vault\"}},\"description\":\"Create an item from assignments, a JSON template file, or JSON received on stdin. A leading - selects stdin; it cannot be combined with --template. Assignments override matching template fields.\\n\\nAssignment syntax is [section.]field[type]=value. Escape punctuation in field and section names with a backslash. For confidential values, prefer a template or stdin over command-line assignments, which may remain in shell history.\\n\\nPassword generation accepts a recipe of length and character classes. SSH key generation accepts an explicit key type.\",\"examples\":\"Prepare a JSON template and create an item from it:\\n\\n\\top item template get Login --out-file ./example-login.json\\n\\top item create --template ./example-login.json --vault 'Example vault'\"},\n {\"path\":\"item get\",\"summary\":\"Get an item's details\",\"synopsis\":\"[{ <itemName> | <itemID> | <shareLink> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":1,\"flags\":\"fields include-archive otp reveal share-link vault\",\"flagOverrides\":{\"include-archive\":{\"description\":\"Include items in the Archive. Can also be set using OP_INCLUDE_ARCHIVE environment variable.\"}},\"description\":\"Choose an item using its name, ID, or sharing link. The --vault selector narrows the lookup; service-account requests need a vault selection.\\n\\nFor batch input, pass - and provide selectors on stdin. JSON objects with id properties can also identify the requested items.\\n\\nUse --fields to select labels or types, --otp for the primary one-time password, and --format=json for structured output. Human output conceals sensitive fields unless --reveal is supplied. Use op read for the value behind a secret reference.\",\"examples\":\"Select fields by their labels:\\n\\n\\top item get 'Example item' --fields label=username,label=password --format=json\\n\\nSelect concealed fields:\\n\\n\\top item get 'Example item' --fields type=concealed\\n\\nRead a batch of item IDs:\\n\\n\\top item list --vault 'Example vault' --format=json | op item get -\",\"args\":{\"min\":0,\"max\":1,\"stdinAlternative\":true}},\n {\"path\":\"item edit\",\"summary\":\"Edit an item's details\",\"synopsis\":\"{ <itemName> | <itemID> | <shareLink> } [ <assignment> ... ] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":2,\"flags\":\"dry-run favorite generate-password reveal tags template title url vault\",\"flagOverrides\":{\"dry-run\":{\"description\":\"Perform a dry run of the command and output a preview of the resulting item.\"},\"favorite\":{\"description\":\"Whether this item is a favorite item. Options: true, false\"},\"generate-password\":{\"description\":\"Give the item a randomly generated password.\"},\"tags\":{\"description\":\"Set the tags to the specified (comma-separated) values. An empty value will remove all tags.\"},\"template\":{\"description\":\"Specify the filepath to read an item template from.\"},\"title\":{\"description\":\"Set the item's title.\"},\"vault\":{\"description\":\"Edit the item in this vault.\",\"metavar\":\"vault\"}},\"description\":\"Select the item first, then provide assignments or a JSON template containing the changes. Existing fields remain unless the update replaces or removes them. Use --dry-run to inspect the resulting item before writing it.\\n\\nAvoid placing confidential values directly in command arguments.\"},\n {\"path\":\"item delete\",\"summary\":\"Delete or archive an item\",\"synopsis\":\"[{ <itemName> | <itemID> | <shareLink> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":3,\"flags\":\"archive vault\",\"flagOverrides\":{\"archive\":{\"description\":\"Move the item to the Archive.\"}},\"aliases\":[\"remove\",\"rm\"]},\n {\"path\":\"item list\",\"summary\":\"List items\",\"helpGroup\":\"commands\",\"helpOrder\":4,\"flags\":\"categories favorite include-archive long tags vault\",\"flagOverrides\":{\"favorite\":{\"description\":\"Only list favorite items\"},\"include-archive\":{\"description\":\"Include items in the Archive. Can also be set using OP_INCLUDE_ARCHIVE environment variable.\"},\"tags\":{\"description\":\"Only list items with these tags (comma-separated).\"},\"vault\":{\"description\":\"Only list items in this vault.\",\"metavar\":\"vault\"}},\"aliases\":[\"ls\"]},\n {\"path\":\"item move\",\"summary\":\"Move an item between vaults\",\"synopsis\":\"[{ <itemName> | <itemID> | <shareLink> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":5,\"flags\":\"current-vault destination-vault reveal\",\"aliases\":[\"mv\"],\"flagOverrides\":{\"destination-vault\":{\"completionRequired\":true,\"completionRejectEmpty\":true}}},\n {\"path\":\"item share\",\"summary\":\"Share an item\",\"synopsis\":\"{ <itemName> | <itemID> } [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":6,\"flags\":\"emails expires-in vault view-once\",\"flagOverrides\":{\"expires-in\":{\"description\":\"Expire link after the duration specified in (s)econds, (m)inutes, (h)ours, (d)ays, and/or (w)eeks.\",\"longAliases\":[\"expiry\"],\"defaultDisplay\":\"7d\"}}},\n {\"path\":\"plugin credential\",\"summary\":\"Manage credentials for shell plugins\",\"helpGroup\":\"management\",\"helpOrder\":0},\n {\"path\":\"plugin list\",\"summary\":\"List all available shell plugins\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"aliases\":[\"ls\"]},\n {\"path\":\"plugin clear\",\"summary\":\"Clear shell plugin configuration\",\"synopsis\":\"<plugin-name> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":1,\"flags\":\"all force\",\"flagOverrides\":{\"all\":{\"description\":\"Clear all configurations for this plugin that apply to this directory and/or terminal session, including the global default.\"},\"force\":{\"description\":\"Apply immediately without asking for confirmation.\"}},\"aliases\":[\"reset\"],\"description\":\"Remove applicable plugin defaults. A single clear removes the active scope; --all includes the other applicable directory, terminal, and global defaults. Confirmation and host authorization are separate decisions: --force does not override authorization.\"},\n {\"path\":\"plugin init\",\"summary\":\"Configure a shell plugin\",\"synopsis\":\"[ <plugin-executable> ] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":2},\n {\"path\":\"plugin inspect\",\"summary\":\"Inspect your existing shell plugin configurations\",\"synopsis\":\"[ <plugin-name> ] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":3,\"aliases\":[\"info\"]},\n {\"path\":\"plugin run\",\"summary\":\"Provision credentials from 1Password and run this command\",\"synopsis\":\"<command>... [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":4},\n {\"path\":\"service-account create\",\"summary\":\"Create a service account\",\"synopsis\":\"<serviceAccountName> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"flags\":\"can-create-vaults expires-in raw vault\",\"flagOverrides\":{\"expires-in\":{\"description\":\"Set how long the service account is valid for in (s)econds, (m)inutes, (h)ours, (d)ays, or (w)eeks.\"},\"raw\":{\"description\":\"Only return the service account token.\"},\"vault\":{\"kind\":\"array\",\"description\":\"Give access to this vault with a set of permissions. Has syntax <vault-name>:<permission>[,<permission>]\",\"metavar\":\"stringArray\"}}},\n {\"path\":\"service-account ratelimit\",\"summary\":\"Retrieve rate limit usage for a service account\",\"synopsis\":\"[{ <serviceAccountName> | <serviceAccountID> }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":1,\"aliases\":[\"ratelimits\"]},\n {\"path\":\"user recovery\",\"summary\":\"Manage user recovery in your 1Password account\",\"helpGroup\":\"management\",\"helpOrder\":0},\n {\"path\":\"user provision\",\"summary\":\"Provision a user in the authenticated account\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"flags\":\"email language name\",\"flagOverrides\":{\"email\":{\"description\":\"Provide the user's email address.\",\"completionRequired\":true,\"completionRejectEmpty\":true},\"name\":{\"description\":\"Provide the user's name.\",\"metavar\":\"string\",\"completionRequired\":true,\"completionRejectEmpty\":true}}},\n {\"path\":\"user confirm\",\"summary\":\"Confirm a user\",\"synopsis\":\"[{ <email> | <name> | <userID> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":1,\"flags\":\"all\",\"flagOverrides\":{\"all\":{\"description\":\"Confirm all unconfirmed users.\"}}},\n {\"path\":\"user get\",\"summary\":\"Get details about a user\",\"synopsis\":\"[{ <email> | <name> | <userID> | --me | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":2,\"flags\":\"fingerprint me public-key\"},\n {\"path\":\"user edit\",\"summary\":\"Edit a user's name or Travel Mode status\",\"synopsis\":\"[{ <email> | <name> | <userID> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":3,\"flags\":\"name travel-mode\",\"flagOverrides\":{\"name\":{\"description\":\"Set the user's name.\",\"metavar\":\"string\"}}},\n {\"path\":\"user suspend\",\"summary\":\"Suspend a user\",\"synopsis\":\"[{ <email> | <name> | <userID> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":4,\"flags\":\"deauthorize-devices-after\"},\n {\"path\":\"user reactivate\",\"summary\":\"Reactivate a suspended user\",\"synopsis\":\"[{ <email> | <name> | <userID> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":5},\n {\"path\":\"user delete\",\"summary\":\"Remove a user and all their data from the account\",\"synopsis\":\"[{ <email> | <name> | <userID> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":6,\"aliases\":[\"remove\",\"rm\"]},\n {\"path\":\"user list\",\"summary\":\"List users\",\"helpGroup\":\"commands\",\"helpOrder\":7,\"flags\":\"group vault\",\"flagOverrides\":{\"group\":{\"description\":\"List users who belong to a group.\"},\"vault\":{\"description\":\"List users who have direct access to vault.\",\"metavar\":\"vault\"}},\"aliases\":[\"ls\"]},\n {\"path\":\"vault group\",\"summary\":\"Manage group vault access\",\"helpGroup\":\"management\",\"helpOrder\":0},\n {\"path\":\"vault user\",\"summary\":\"Manage user vault access\",\"helpGroup\":\"management\",\"helpOrder\":1},\n {\"path\":\"vault create\",\"summary\":\"Create a new vault\",\"synopsis\":\"<name> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"flags\":\"allow-admins-to-manage description icon\",\"flagOverrides\":{\"description\":{\"metavar\":\"description\"}}},\n {\"path\":\"vault get\",\"summary\":\"Get details about a vault\",\"synopsis\":\"[{ <vaultName> | <vaultID> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":1},\n {\"path\":\"vault edit\",\"summary\":\"Edit a vault's name, description, icon, or Travel Mode status\",\"synopsis\":\"[{ <vaultName> | <vaultID> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":2,\"flags\":\"description icon name travel-mode\",\"flagOverrides\":{\"description\":{\"description\":\"Change the vault's description.\",\"metavar\":\"description\"},\"icon\":{\"description\":\"Change the vault's icon.\",\"metavar\":\"icon\"},\"name\":{\"description\":\"Change the vault's name.\"},\"travel-mode\":{\"description\":\"Turn Travel Mode on or off for the vault.\"}}},\n {\"path\":\"vault delete\",\"summary\":\"Remove a vault\",\"synopsis\":\"[{ <vaultName> | <vaultID> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":3,\"aliases\":[\"remove\",\"rm\"]},\n {\"path\":\"vault list\",\"summary\":\"List all vaults in the account\",\"helpGroup\":\"commands\",\"helpOrder\":4,\"flags\":\"group permission user\",\"flagOverrides\":{\"group\":{\"description\":\"List vaults a group has access to.\",\"metavar\":\"string\"},\"user\":{\"description\":\"List vaults that a given user has access to.\",\"metavar\":\"string\"}},\"aliases\":[\"ls\"],\"args\":{\"min\":0,\"max\":0}},\n {\"path\":\"connect group grant\",\"summary\":\"Grant a group access to manage Secrets Automation\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"flags\":\"all-servers group server\",\"flagOverrides\":{\"server\":{\"description\":\"The server to grant access to.\",\"metavar\":\"server\"},\"group\":{\"completionRequired\":true,\"completionRejectEmpty\":true}}},\n {\"path\":\"connect group revoke\",\"summary\":\"Revoke a group's access to manage Secrets Automation\",\"helpGroup\":\"commands\",\"helpOrder\":1,\"flags\":\"all-servers group server\",\"flagOverrides\":{\"all-servers\":{\"description\":\"Revoke access to all current and future servers in the authenticated account.\"},\"group\":{\"description\":\"The group to revoke access from.\",\"completionRequired\":true,\"completionRejectEmpty\":true},\"server\":{\"description\":\"The server to revoke access to.\",\"metavar\":\"server\"}}},\n {\"path\":\"connect server create\",\"summary\":\"Set up a Connect server\",\"synopsis\":\"<name> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"flags\":\"force vaults\",\"flagOverrides\":{\"force\":{\"description\":\"Do not prompt for confirmation when overwriting credential files.\"}}},\n {\"path\":\"connect server get\",\"summary\":\"Get a Connect server\",\"synopsis\":\"[{ <serverName> | <serverID> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":1},\n {\"path\":\"connect server edit\",\"summary\":\"Rename a Connect server\",\"synopsis\":\"{ <serverName> | <serverID> } [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":2,\"flags\":\"name\",\"flagOverrides\":{\"name\":{\"description\":\"Change the server's name.\"}}},\n {\"path\":\"connect server delete\",\"summary\":\"Remove a Connect server\",\"synopsis\":\"[{ <serverName> | <serverID> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":3,\"aliases\":[\"remove\",\"rm\"]},\n {\"path\":\"connect server list\",\"summary\":\"List Connect servers\",\"helpGroup\":\"commands\",\"helpOrder\":4,\"aliases\":[\"ls\"]},\n {\"path\":\"connect token create\",\"summary\":\"Issue a token for a 1Password Connect server\",\"synopsis\":\"<tokenName> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"flags\":\"expires-in server vault\",\"flagOverrides\":{\"expires-in\":{\"description\":\"Set how long the Connect token is valid for in (s)econds, (m)inutes, (h)ours, (d)ays, and/or (w)eeks.\"},\"server\":{\"description\":\"Issue a token for this server.\",\"completionRequired\":true},\"vault\":{\"kind\":\"array\",\"description\":\"Issue a token on these vaults.\",\"metavar\":\"stringArray\"}}},\n {\"path\":\"connect token edit\",\"summary\":\"Rename a Connect server token\",\"synopsis\":\"<token> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":1,\"flags\":\"name server\",\"flagOverrides\":{\"name\":{\"description\":\"Change the token's name.\",\"metavar\":\"string\"}}},\n {\"path\":\"connect token delete\",\"summary\":\"Revoke a token for a Connect server\",\"synopsis\":\"[ <token> ] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":2,\"flags\":\"server\",\"aliases\":[\"remove\",\"rm\"]},\n {\"path\":\"connect token list\",\"summary\":\"Get a list of tokens\",\"helpGroup\":\"commands\",\"helpOrder\":3,\"flags\":\"server\",\"flagOverrides\":{\"server\":{\"description\":\"Only list tokens for this Connect server.\",\"metavar\":\"server\"}},\"aliases\":[\"ls\"]},\n {\"path\":\"connect vault grant\",\"summary\":\"Grant a Connect server access to a vault\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"flags\":\"server vault\",\"flagOverrides\":{\"server\":{\"description\":\"The server to be granted access.\",\"completionRequired\":true,\"completionRejectEmpty\":true},\"vault\":{\"description\":\"The vault to grant access to.\",\"completionRequired\":true,\"completionRejectEmpty\":true}}},\n {\"path\":\"connect vault revoke\",\"summary\":\"Revoke a Connect server's access to a vault\",\"helpGroup\":\"commands\",\"helpOrder\":1,\"flags\":\"server vault\",\"flagOverrides\":{\"server\":{\"description\":\"The server to revoke access from.\",\"metavar\":\"server\",\"completionRequired\":true,\"completionRejectEmpty\":true},\"vault\":{\"description\":\"The vault to revoke a server's access to.\",\"metavar\":\"vault\",\"completionRequired\":true,\"completionRejectEmpty\":true}}},\n {\"path\":\"group user grant\",\"summary\":\"Add a user to a group\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"flags\":\"group role user\",\"flagOverrides\":{\"group\":{\"description\":\"Specify the group to add the user to.\",\"metavar\":\"string\",\"completionRequired\":true,\"completionRejectEmpty\":true},\"user\":{\"description\":\"Specify the user to add to the group.\",\"metavar\":\"string\",\"completionRequired\":true,\"completionRejectEmpty\":true}}},\n {\"path\":\"group user revoke\",\"summary\":\"Remove a user from a group\",\"helpGroup\":\"commands\",\"helpOrder\":1,\"flags\":\"group user\",\"flagOverrides\":{\"group\":{\"description\":\"Specify the group to remove the user from.\",\"metavar\":\"string\",\"completionRequired\":true,\"completionRejectEmpty\":true},\"user\":{\"description\":\"Specify the user to remove from the group.\",\"metavar\":\"string\",\"completionRequired\":true,\"completionRejectEmpty\":true}}},\n {\"path\":\"group user list\",\"summary\":\"Retrieve users that belong to a group\",\"synopsis\":\"<group> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":2,\"aliases\":[\"ls\"]},\n {\"path\":\"item template get\",\"summary\":\"Get an item template\",\"synopsis\":\"[{ <category> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"flags\":\"file-mode force out-file\",\"flagOverrides\":{\"out-file\":{\"description\":\"Write the template to a file instead of stdout.\"}}},\n {\"path\":\"item template list\",\"summary\":\"Get a list of templates\",\"helpGroup\":\"commands\",\"helpOrder\":1,\"aliases\":[\"ls\"],\"args\":{\"min\":0,\"max\":0}},\n {\"path\":\"plugin credential import\",\"summary\":\"Import credentials for a shell plugin\",\"synopsis\":\"<plugin-name> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0},\n {\"path\":\"user recovery begin\",\"summary\":\"Begin recovery for users in your 1Password account\",\"synopsis\":\"[ { <email> | <name> | <userID> } ] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0},\n {\"path\":\"vault group grant\",\"summary\":\"Grant a group permissions to a vault\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"flags\":\"group no-input permissions vault\",\"flagOverrides\":{\"vault\":{\"description\":\"The vault to grant group permissions to.\",\"metavar\":\"vault\",\"completionRequired\":true,\"completionRejectEmpty\":true},\"group\":{\"completionRequired\":true,\"completionRejectEmpty\":true},\"permissions\":{\"completionRequired\":true,\"completionRejectEmpty\":true}}},\n {\"path\":\"vault group revoke\",\"summary\":\"Revoke a portion or the entire access of a group to a vault\",\"helpGroup\":\"commands\",\"helpOrder\":1,\"flags\":\"group no-input permissions vault\",\"flagOverrides\":{\"group\":{\"description\":\"The group to revoke access from.\",\"completionRequired\":true,\"completionRejectEmpty\":true},\"permissions\":{\"description\":\"The permissions to revoke from the group.\"},\"vault\":{\"description\":\"The vault to revoke access to.\",\"metavar\":\"vault\",\"completionRequired\":true,\"completionRejectEmpty\":true}}},\n {\"path\":\"vault group list\",\"summary\":\"List all the groups that have access to the given vault\",\"synopsis\":\"[{ <vault> | - }] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":2,\"aliases\":[\"ls\"]},\n {\"path\":\"vault user grant\",\"summary\":\"Grant a user access to a vault\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"flags\":\"no-input permissions user vault\",\"flagOverrides\":{\"permissions\":{\"description\":\"The permissions to grant to the user.\",\"completionRequired\":true,\"completionRejectEmpty\":true},\"user\":{\"description\":\"The user to receive access.\",\"completionRequired\":true,\"completionRejectEmpty\":true},\"vault\":{\"description\":\"The vault to grant access to.\",\"metavar\":\"vault\",\"completionRequired\":true,\"completionRejectEmpty\":true}}},\n {\"path\":\"vault user revoke\",\"summary\":\"Revoke a portion or the entire access of a user to a vault\",\"helpGroup\":\"commands\",\"helpOrder\":1,\"flags\":\"no-input permissions user vault\",\"flagOverrides\":{\"permissions\":{\"description\":\"The permissions to revoke from the user.\"},\"user\":{\"description\":\"The user to revoke access from.\",\"completionRequired\":true,\"completionRejectEmpty\":true},\"vault\":{\"description\":\"The vault to revoke access to.\",\"metavar\":\"vault\",\"completionRequired\":true,\"completionRejectEmpty\":true}}},\n {\"path\":\"vault user list\",\"summary\":\"List all users with access to the vault and their permissions\",\"synopsis\":\"<vault> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":2,\"aliases\":[\"ls\"]},\n {\"path\":\"environment read\",\"summary\":\"Read an Environment\",\"synopsis\":\"<environment> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"availability\":\"beta\",\"args\":{\"min\":1,\"max\":1}},\n {\"path\":\"environment snapshot create\",\"summary\":\"Capture an environment snapshot\",\"synopsis\":\"<name> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"availability\":\"extension\",\"flags\":\"vars\",\"args\":{\"min\":1,\"max\":1}},\n {\"path\":\"environment snapshot get\",\"summary\":\"Get an environment snapshot\",\"synopsis\":\"<snapshot> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"availability\":\"extension\",\"args\":{\"min\":1,\"max\":1}},\n {\"path\":\"environment snapshot list\",\"summary\":\"List environment snapshots\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"availability\":\"extension\",\"args\":{\"min\":0,\"max\":0}},\n {\"path\":\"environment snapshot delete\",\"summary\":\"Delete an environment snapshot\",\"synopsis\":\"<snapshot> [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"availability\":\"extension\",\"args\":{\"min\":1,\"max\":1}},\n {\"path\":\"environment snapshot restore\",\"summary\":\"Restore an environment snapshot\",\"synopsis\":\"<snapshot> [-- command args...] [flags]\",\"helpGroup\":\"commands\",\"helpOrder\":0,\"availability\":\"extension\",\"flags\":\"shell no-masking\",\"flagOverrides\":{\"no-masking\":{\"env\":null,\"description\":\"Do not conceal captured values in child process output.\"}},\"description\":\"Restore the snapshot through a host callback, start a child with the restored environment, or print shell commands with --shell.\\n\\nSelected snapshots affect only captured names; null entries explicitly remove those names. Complete snapshots also remove known current extras. Shell evaluation is not atomic, and readonly variables may prevent changes.\",\"examples\":\"Print commands for restoring captured variables:\\n\\n\\top environment snapshot restore example --shell=bash\",\"args\":{\"min\":1}},\n {\"path\":\"environment\",\"summary\":\"Manage Environments and local snapshots\",\"synopsis\":\"[command] [flags]\",\"helpGroup\":\"management\",\"helpOrder\":99,\"availability\":\"extension\"},\n {\"path\":\"environment snapshot\",\"summary\":\"Manage local environment snapshots\",\"synopsis\":\"[command] [flags]\",\"helpGroup\":\"management\",\"helpOrder\":99,\"availability\":\"extension\"},\n];\n\nexport const opCatalogNodes: readonly OpCatalogCommand[] = Object.freeze(declarations.map(declaration => {\n const { flags: names = \"\", flagOverrides = {}, path: name, ...metadata } = declaration;\n const path = name ? name.split(\" \") : [];\n const group = declarations.some(child => name ? child.path.startsWith(name + \" \") : child.path !== \"\");\n const flags = Object.fromEntries(names.split(\" \").filter(Boolean).map(flag => {\n const merged = { ...(definitions[flag] ?? opGlobalFlags[flag]), ...flagOverrides[flag] };\n return [flag, freezeFlag(Object.fromEntries(Object.entries(merged).filter(([, value]) => value !== null)) as unknown as OpFlagDefinition)];\n }));\n return Object.freeze({\n ...metadata,\n path: Object.freeze(path),\n flags: Object.freeze(flags),\n aliases: Object.freeze([...(metadata.aliases ?? [])]),\n availability: metadata.availability ?? \"stable\",\n description: metadata.description ?? metadata.summary,\n synopsis: metadata.synopsis ?? (group ? \"[command] [flags]\" : \"[flags]\"),\n helpGroup: metadata.helpGroup ?? \"commands\",\n helpOrder: metadata.helpOrder ?? 0,\n ...(metadata.args ? { args: Object.freeze({ ...metadata.args }) } : {}),\n });\n}));\n\nexport const opCommandCatalog: readonly OpCatalogCommand[] = Object.freeze(opCatalogNodes.filter(node =>\n node.path.length > 0 && !opCatalogNodes.some(child =>\n child.path.length > node.path.length && node.path.every((part, index) => child.path[index] === part),\n ),\n));\n\nexport function getOpCommandFlags(path: readonly string[], channel: \"stable\" | \"beta\" = \"stable\"): Readonly<Record<string, OpFlagDefinition>> {\n const node = opCatalogNodes.find(entry => entry.path.join(\" \") === path.join(\" \"));\n return Object.freeze(Object.fromEntries(Object.entries({\n ...opGlobalFlags,\n ...(path.length === 0 ? opRootFlags : {}),\n ...node?.flags,\n ...(path.length ? { help: freezeFlag({ ...opGlobalFlags.help!, description: `help for ${path.at(-1)}` }) } : {}),\n }).filter(([, flag]) => channel === \"beta\" || flag.availability !== \"beta\")));\n}\n", "import type { OpFlagDefinition } from \"./catalog.js\";\nimport { isOpDuration } from \"./duration.js\";\nimport { parseOpFileMode } from \"./file-mode.js\";\nimport { parseOpCsv } from \"./csv-values.js\";\n\nfunction isPasswordRecipe(value: string): boolean {\n let lengthSeen = false;\n for (const part of value.split(\",\")) {\n if ([\"letters\", \"digits\", \"symbols\"].includes(part.toLowerCase())) continue;\n const digits = part.startsWith(\"+\") ? part.slice(1) : part;\n if (!digits || !Array.from(digits).every(character => character >= \"0\" && character <= \"9\")) return false;\n const length = Number(digits);\n if (lengthSeen || length < 1 || length > 64) return false;\n lengthSeen = true;\n }\n return true;\n}\n\nexport function validateOpFlagValue(name: string, definition: OpFlagDefinition, value: string): void {\n if (definition.valueSyntax === \"password-recipe\" && !isPasswordRecipe(value)) throw new Error(`invalid value for --${name}`);\n if (definition.valueSyntax === \"csv\") parseOpCsv(value);\n if (definition.valueSyntax === \"duration\" && !isOpDuration(value)) throw new Error(`invalid value for --${name}`);\n if (definition.valueSyntax === \"go-duration\" && !isOpDuration(value, false)) throw new Error(`invalid value for --${name}`);\n if (definition.valueSyntax === \"file-mode\") {\n try { parseOpFileMode(value); } catch { throw new Error(`invalid value for --${name}`); }\n }\n if (!definition.allowedValues) return;\n const values = definition.kind === \"csv\" ? value.split(\",\") : [value];\n for (const entry of values) {\n const normalized = definition.normalizeValues === \"trim-lowercase\" ? entry.trim().toLowerCase() : definition.normalizeValues === \"lowercase\" ? entry.toLowerCase() : entry;\n if (!definition.allowedValues.includes(normalized)) throw new Error(`invalid value for --${name}`);\n }\n}\n", "const magnitudeLimit = 1n << 63n;\nconst nanoseconds: Readonly<Record<string, bigint>> = Object.freeze({\n ns: 1n, us: 1000n, \"\u00B5s\": 1000n, \"\u03BCs\": 1000n, ms: 1000000n,\n s: 1000000000n, m: 60000000000n, h: 3600000000000n,\n});\n\nfunction isDigit(character: string | undefined): boolean {\n return character !== undefined && character >= \"0\" && character <= \"9\";\n}\n\nfunction roundedHundredths(value: number): bigint {\n if (value === 0) return 0n;\n const buffer = new DataView(new ArrayBuffer(8));\n buffer.setFloat64(0, value);\n const bits = buffer.getBigUint64(0);\n const exponent = Number(bits >> 52n);\n const significand = (bits & ((1n << 52n) - 1n)) + (exponent === 0 ? 0n : 1n << 52n);\n const shift = (exponent === 0 ? 1 : exponent) - 1023 - 52;\n const numerator = significand * 100n;\n if (shift >= 0) return numerator << BigInt(shift);\n const denominator = 1n << BigInt(-shift);\n const quotient = numerator / denominator;\n const remainder = numerator % denominator;\n return quotient + (remainder * 2n > denominator || remainder * 2n === denominator && quotient % 2n !== 0n ? 1n : 0n);\n}\n\nexport function isOpDuration(value: string, extendedUnits = true): boolean {\n const negative = value[0] === \"-\";\n let cursor = value[0] === \"+\" || negative ? 1 : 0;\n if (value.slice(cursor) === \"0\") return true;\n if (cursor === value.length) return false;\n let total = 0n;\n while (cursor < value.length) {\n const start = cursor;\n while (isDigit(value[cursor])) cursor++;\n const integerEnd = cursor;\n if (value[cursor] === \".\") cursor++;\n const fractionStart = cursor;\n while (isDigit(value[cursor])) cursor++;\n const numberEnd = cursor;\n if (integerEnd === start && fractionStart === numberEnd) return false;\n while (cursor < value.length && !isDigit(value[cursor]) && value[cursor] !== \".\") cursor++;\n const unitName = value.slice(numberEnd, cursor);\n let component: bigint;\n if (extendedUnits && (unitName === \"d\" || unitName === \"w\")) {\n const hours = Number(value.slice(start, numberEnd)) * (unitName === \"d\" ? 24 : 168);\n if (!Number.isFinite(hours) || hours > Number(magnitudeLimit) / Number(nanoseconds.h!) + 1) return false;\n component = roundedHundredths(hours) * 36000000000n;\n } else {\n if (!Object.hasOwn(nanoseconds, unitName)) return false;\n const unit = nanoseconds[unitName]!;\n let integer = 0n;\n for (let index = start; index < integerEnd; index++) {\n integer = integer * 10n + BigInt(value[index]!);\n if (integer > magnitudeLimit) return false;\n }\n component = integer * unit;\n if (component > magnitudeLimit) return false;\n let fraction = 0n;\n let scale = 1;\n for (let index = fractionStart; index < numberEnd; index++) {\n const next = fraction * 10n + BigInt(value[index]!);\n if (fraction > (magnitudeLimit - 1n) / 10n || next > magnitudeLimit) break;\n fraction = next;\n scale *= 10;\n }\n component += BigInt(Math.trunc(Number(fraction) * (Number(unit) / scale)));\n }\n if (component > magnitudeLimit) return false;\n total = BigInt.asUintN(64, total + component);\n if (total > magnitudeLimit) return false;\n }\n return total <= magnitudeLimit - (negative ? 0n : 1n);\n}\n", "export function parseOpFileMode(value: unknown): number {\n if (value === undefined) return 0o600;\n if (typeof value !== \"string\" || value.length < 3) throw new Error(\"file-mode requires at least three octal digits\");\n let mode = 0;\n for (const character of value) {\n if (character < \"0\" || character > \"7\") throw new Error(\"file-mode must be an octal permission mode\");\n mode = mode * 8 + Number(character);\n if (mode > 0xffffffff) throw new Error(\"file-mode exceeds uint32 range\");\n }\n return mode;\n}\n", "export function parseOpCsv(value: string): string[] {\n if (value === \"\") return [];\n let input = \"\";\n for (let index = 0; index < value.length; index++) {\n if (value[index] === \"\\r\" && (value[index + 1] === \"\\n\" || index === value.length - 1)) continue;\n input += value[index];\n }\n let cursor = 0;\n while (input[cursor] === \"\\n\") cursor++;\n if (cursor === input.length) throw new Error(\"CSV flag requires a record\");\n const fields: string[] = [];\n let field = \"\";\n let quoted = false;\n let closed = false;\n for (; cursor < input.length; cursor++) {\n const character = input[cursor]!;\n if (quoted) {\n if (character !== '\"') field += character;\n else if (input[cursor + 1] === '\"') { field += '\"'; cursor++; }\n else { quoted = false; closed = true; }\n } else if (character === \"\\n\") return [...fields, field];\n else if (character === \",\") { fields.push(field); field = \"\"; closed = false; }\n else if (closed || character === '\"' && field.length !== 0) throw new Error(\"Invalid CSV quoting\");\n else if (character === '\"') quoted = true;\n else field += character;\n }\n if (quoted) throw new Error(\"Unterminated quoted CSV field\");\n return [...fields, field];\n}\n", "import { getOpCommandFlags, opCatalogNodes, type OpFlagDefinition } from \"./catalog.js\";\n\nfunction wrap(text: string, width: number): string[] {\n const lines: string[] = [];\n let line = \"\";\n for (const word of text.split(\" \").filter(Boolean)) {\n if (line && line.length + word.length + 1 > width) { lines.push(line); line = \"\"; }\n line += (line ? \" \" : \"\") + word;\n }\n if (line) lines.push(line);\n return lines;\n}\n\nfunction flagSyntax(name: string, flag: OpFlagDefinition): string {\n const value = flag.metavar ?? (flag.kind === \"boolean\" ? \"\" : \"string\");\n return `${flag.alias ? `-${flag.alias}, ` : \" \"}--${name}${flag.kind === \"optional\" ? `[=${value}]` : value ? ` ${value}` : \"\"}`;\n}\n\nexport function renderOpHelp(path: readonly string[], channel: \"stable\" | \"beta\" = \"stable\"): string {\n const node = opCatalogNodes.find(entry => entry.path.join(\" \") === path.join(\" \") && (channel === \"beta\" || entry.availability !== \"beta\"));\n if (!node) throw new Error(\"Unknown help topic\");\n const children = opCatalogNodes.filter(entry => entry.path.length === path.length + 1 && path.every((part, index) => entry.path[index] === part) && (channel === \"beta\" || entry.availability !== \"beta\"));\n const prefix = `op${path.length ? ` ${path.join(\" \")}` : \"\"}`;\n const lines = [node.description, \"\", `Usage: ${prefix} ${node.synopsis}`, \"\"];\n if (node.availability !== \"stable\") lines.push(`Availability: ${node.availability}`, \"\");\n if (node.aliases.length) lines.push(\"Aliases:\", ` ${[path.at(-1), ...node.aliases].join(\", \")}`, \"\");\n for (const group of [\"management\", \"commands\"] as const) {\n const entries = children.filter(child => child.helpGroup === group).sort((first, second) => first.helpOrder - second.helpOrder || first.path.at(-1)!.localeCompare(second.path.at(-1)!));\n if (!entries.length) continue;\n lines.push(group === \"management\" ? \"Management Commands:\" : \"Commands:\");\n const width = Math.max(...entries.map(child => child.path.at(-1)!.length)) + 1;\n for (const child of entries) {\n lines.push(` ${child.path.at(-1)!.padEnd(width)} ${child.summary}${child.availability === \"stable\" ? \"\" : ` [${child.availability}]`}`);\n }\n lines.push(\"\");\n }\n if (node.examples) lines.push(\"Examples:\", node.examples, \"\");\n const flags = Object.entries(getOpCommandFlags(path, channel)).filter(([name, flag]) => flag.helpVisible !== false && (!path.length || name === \"help\" || Object.hasOwn(node.flags, name))).sort(([first], [second]) => first.localeCompare(second));\n lines.push(path.length ? \"Flags:\" : \"Global Flags:\");\n const width = Math.max(...flags.map(([name, flag]) => flagSyntax(name, flag).length)) + 3;\n for (const [name, flag] of flags) {\n const description = `${flag.description ?? \"\"}${flag.defaultDisplay === undefined ? \"\" : ` (default ${flag.defaultDisplay})`}${flag.availability === \"beta\" ? \" [beta]\" : \"\"}`;\n const wrapped = wrap(description, Math.max(20, 143 - width - 2));\n lines.push(` ${flagSyntax(name, flag).padEnd(width)}${wrapped[0] ?? \"\"}`.trimEnd());\n for (const continuation of wrapped.slice(1)) lines.push(`${\" \".repeat(width + 2)}${continuation}`);\n }\n lines.push(\"\");\n if (path.length) lines.push(\"To list the global flags available on every command, run 'op --help'.\");\n if (children.length) lines.push(...(path.length ? [\"\"] : []), `Run '${prefix} [command] --help' for more information on the command.`);\n return `${lines.join(\"\\n\")}\\n`;\n}\n", "import { pluginRequiredFieldLabels } from \"./plugin-catalog.js\";\n\nexport function renderPluginList(plugins: readonly Record<string, unknown>[]): string {\n if (!plugins.length) return \"\";\n const rows = [[\"EXECUTABLE\", \"NAME\", \"REQUIRED FIELDS\"], ...plugins.map(plugin => {\n const executable = typeof plugin.executable === \"string\" ? plugin.executable : typeof plugin.id === \"string\" ? plugin.id : \"-\";\n const name = typeof plugin.plugin_name === \"string\" ? plugin.plugin_name : typeof plugin.name === \"string\" ? plugin.name : executable;\n const key = typeof plugin.executable === \"string\" ? plugin.executable : typeof plugin.plugin_name === \"string\" ? plugin.plugin_name : \"\";\n const requiredFields = plugin.source === \"1password-registry\" && Object.hasOwn(pluginRequiredFieldLabels, key) ? pluginRequiredFieldLabels[key]! : \"-\";\n return [executable, name, requiredFields];\n })];\n const executableWidth = Math.max(...rows.map(row => row[0]!.length)) + 4;\n const nameWidth = Math.max(...rows.map(row => row[1]!.length)) + 4;\n return rows.map(row => `${row[0]!.padEnd(executableWidth)}${row[1]!.padEnd(nameWidth)}${row[2]}`).join(\"\\n\") + \"\\n\";\n}\n", "import type { OpObject } from \"./types.js\";\n\nexport const pluginRequiredFieldLabels: Readonly<Record<string, string>> = Object.freeze({\n \"akamai\": \"Client Secret, Host, Access Token, Client Token\",\n \"claude\": \"API Key\",\n \"argocd\": \"Auth Token\",\n \"aws\": \"Access Key ID, Secret Access Key\",\n \"cdk\": \"Access Key ID, Secret Access Key\",\n \"sam\": \"Access Key ID, Secret Access Key\",\n \"eksctl\": \"Access Key ID, Secret Access Key\",\n \"awslogs\": \"Access Key ID, Secret Access Key\",\n \"axiom\": \"Token, Organization\",\n \"binance-cli\": \"API Key, API Secret\",\n \"cachix\": \"Token\",\n \"cargo\": \"Token\",\n \"circleci\": \"Token\",\n \"civo\": \"API Key\",\n \"cline\": \"API Key\",\n \"wrangler\": \"Token\",\n \"crash\": \"Host, Username, Password\",\n \"crowdin\": \"Token\",\n \"agent\": \"API Key\",\n \"databricks\": \"Host, Token\",\n \"dog\": \"API Key, App Key\",\n \"descope\": \"Project ID, Management Key\",\n \"doctl\": \"Token\",\n \"exercism\": \"URL, API Key, Directory\",\n \"expo\": \"Token\",\n \"eas\": \"Token\",\n \"fastly\": \"Token\",\n \"flyctl\": \"Token\",\n \"fly\": \"Token\",\n \"fossa\": \"API Key\",\n \"tea\": \"Token, Host Address, User\",\n \"gh\": \"Token\",\n \"copilot\": \"Token\",\n \"glab\": \"Token\",\n \"gemini\": \"API Key\",\n \"vault\": \"Token\",\n \"heroku\": \"API Key\",\n \"hcloud\": \"Token\",\n \"brew\": \"Token\",\n \"huggingface-cli\": \"User Access Token\",\n \"influx\": \"Host, Organization, Access Token\",\n \"junie\": \"API Key\",\n \"kaggle\": \"Token, Username\",\n \"kiro-cli\": \"API Key\",\n \"lacework\": \"Account, API Key ID, API Secret\",\n \"forge\": \"Token\",\n \"vapor\": \"Token\",\n \"linode-cli\": \"Token\",\n \"localstack\": \"API Key\",\n \"atlas\": \"Public Key, Private Key\",\n \"mysql\": \"Password\",\n \"ngrok\": \"Authtoken\",\n \"ohdear\": \"Token\",\n \"okta\": \"Token, Org URL\",\n \"openai\": \"API Key\",\n \"oaieval\": \"API Key\",\n \"oaievalset\": \"API Key\",\n \"codex\": \"API Key\",\n \"opencode\": \"API Key\",\n \"tofu\": \"Depends on configured credentials\",\n \"pd\": \"API Key\",\n \"psql\": \"Host, User, Password\",\n \"pg_dump\": \"Host, User, Password\",\n \"pg_restore\": \"Host, User, Password\",\n \"pgcli\": \"Host, User, Password\",\n \"pulumi\": \"Token\",\n \"twine\": \"Token\",\n \"flit\": \"Token\",\n \"hatch\": \"Token\",\n \"rdme\": \"API Key\",\n \"redis-cli\": \"Password\",\n \"rediscloud\": \"Account Key, User Key\",\n \"scw\": \"Access Key ID, Secret Access Key\",\n \"sentry-cli\": \"Token\",\n \"snowsql\": \"Account, Username, Password\",\n \"snyk\": \"Token\",\n \"src\": \"Token\",\n \"stripe\": \"Key\",\n \"todoist\": \"Token\",\n \"td\": \"API Key\",\n \"tugboat\": \"Token\",\n \"twilio\": \"Account SID, API Key, API Secret\",\n \"upctl\": \"Username, Password\",\n \"upstash\": \"API Key, Email\",\n \"vercel\": \"Token\",\n \"vsql\": \"Username, Password, Database\",\n \"vultr-cli\": \"API Key\",\n \"ysqlsh\": \"Host, Username, Password\",\n \"zapier\": \"Key\",\n \"zcli\": \"Subdomain, Email, Token\",\n});\n\nexport interface OpPluginAvailability {\n readonly source?: string;\n readonly name?: string;\n readonly executable?: string;\n readonly plugin_name?: string;\n readonly id?: string;\n}\n\nconst nativePlugins: readonly OpPluginAvailability[] = Object.freeze([\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Akamai CLI\",\"executable\":\"akamai\",\"plugin_name\":\"Akamai\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Claude Code\",\"executable\":\"claude\",\"plugin_name\":\"Anthropic\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Argo CD CLI\",\"executable\":\"argocd\",\"plugin_name\":\"Argo CD\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"AWS CLI\",\"executable\":\"aws\",\"plugin_name\":\"AWS\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"AWS CDK Toolkit\",\"executable\":\"cdk\",\"plugin_name\":\"AWS\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"AWS SAM CLI\",\"executable\":\"sam\",\"plugin_name\":\"AWS\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"eksctl CLI\",\"executable\":\"eksctl\",\"plugin_name\":\"AWS\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"awslogs\",\"executable\":\"awslogs\",\"plugin_name\":\"AWS\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Axiom CLI\",\"executable\":\"axiom\",\"plugin_name\":\"Axiom\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Binance CLI\",\"executable\":\"binance-cli\",\"plugin_name\":\"Binance\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Cachix CLI\",\"executable\":\"cachix\",\"plugin_name\":\"Cachix\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Cargo CLI\",\"executable\":\"cargo\",\"plugin_name\":\"Cargo\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"CircleCI CLI\",\"executable\":\"circleci\",\"plugin_name\":\"CircleCI\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Civo CLI\",\"executable\":\"civo\",\"plugin_name\":\"Civo\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Cline CLI\",\"executable\":\"cline\",\"plugin_name\":\"Cline\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Cloudflare Workers CLI\",\"executable\":\"wrangler\",\"plugin_name\":\"Cloudflare Workers\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"CrateDB Shell\",\"executable\":\"crash\",\"plugin_name\":\"CrateDB\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Crowdin CLI\",\"executable\":\"crowdin\",\"plugin_name\":\"Crowdin\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Cursor CLI\",\"executable\":\"agent\",\"plugin_name\":\"Cursor\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Databricks CLI\",\"executable\":\"databricks\",\"plugin_name\":\"Databricks\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Dogshell\",\"executable\":\"dog\",\"plugin_name\":\"Datadog\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Descope CLI\",\"executable\":\"descope\",\"plugin_name\":\"Descope\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"DigitalOcean CLI\",\"executable\":\"doctl\",\"plugin_name\":\"DigitalOcean\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Exercism CLI\",\"executable\":\"exercism\",\"plugin_name\":\"Exercism\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Expo CLI\",\"executable\":\"expo\",\"plugin_name\":\"Expo\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"EAS CLI\",\"executable\":\"eas\",\"plugin_name\":\"Expo\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Fastly CLI\",\"executable\":\"fastly\",\"plugin_name\":\"Fastly\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Flyctl\",\"executable\":\"flyctl\",\"plugin_name\":\"Fly.io\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Fly\",\"executable\":\"fly\",\"plugin_name\":\"Fly.io\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"FOSSA CLI\",\"executable\":\"fossa\",\"plugin_name\":\"FOSSA\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Gitea CLI\",\"executable\":\"tea\",\"plugin_name\":\"Gitea\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"GitHub CLI\",\"executable\":\"gh\",\"plugin_name\":\"GitHub\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"GitHub Copilot CLI\",\"executable\":\"copilot\",\"plugin_name\":\"GitHub Copilot\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"GitLab CLI\",\"executable\":\"glab\",\"plugin_name\":\"GitLab\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Google Gemini CLI\",\"executable\":\"gemini\",\"plugin_name\":\"Google Gemini CLI\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Vault CLI\",\"executable\":\"vault\",\"plugin_name\":\"HashiCorp Vault\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Heroku CLI\",\"executable\":\"heroku\",\"plugin_name\":\"Heroku\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Hetzner Cloud CLI\",\"executable\":\"hcloud\",\"plugin_name\":\"Hetzner Cloud\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Homebrew CLI\",\"executable\":\"brew\",\"plugin_name\":\"Homebrew\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"HuggingFace CLI\",\"executable\":\"huggingface-cli\",\"plugin_name\":\"Hugging Face\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"InfluxDB CLI\",\"executable\":\"influx\",\"plugin_name\":\"InfluxDB\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"JetBrains Junie CLI\",\"executable\":\"junie\",\"plugin_name\":\"JetBrains Junie\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Kaggle CLI\",\"executable\":\"kaggle\",\"plugin_name\":\"Kaggle\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Kiro CLI\",\"executable\":\"kiro-cli\",\"plugin_name\":\"Kiro\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Lacework CLI\",\"executable\":\"lacework\",\"plugin_name\":\"Lacework\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Laravel Forge CLI\",\"executable\":\"forge\",\"plugin_name\":\"Laravel Forge\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Laravel Vapor CLI\",\"executable\":\"vapor\",\"plugin_name\":\"Laravel Vapor\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Linode CLI\",\"executable\":\"linode-cli\",\"plugin_name\":\"Linode\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"LocalStack CLI\",\"executable\":\"localstack\",\"plugin_name\":\"LocalStack\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"MongoDB Atlas CLI\",\"executable\":\"atlas\",\"plugin_name\":\"MongoDB Atlas\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"mysql\",\"executable\":\"mysql\",\"plugin_name\":\"MySQL\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"ngrok CLI\",\"executable\":\"ngrok\",\"plugin_name\":\"ngrok\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Oh Dear CLI\",\"executable\":\"ohdear\",\"plugin_name\":\"Oh Dear\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Okta CLI\",\"executable\":\"okta\",\"plugin_name\":\"Okta\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"OpenAI CLI\",\"executable\":\"openai\",\"plugin_name\":\"OpenAI\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"OpenAI Evals CLI\",\"executable\":\"oaieval\",\"plugin_name\":\"OpenAI\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"OpenAI Eval Set CLI\",\"executable\":\"oaievalset\",\"plugin_name\":\"OpenAI\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"OpenAI Codex\",\"executable\":\"codex\",\"plugin_name\":\"OpenAI\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"OpenCode CLI\",\"executable\":\"opencode\",\"plugin_name\":\"OpenCode\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"OpenTofu\",\"executable\":\"tofu\",\"plugin_name\":\"OpenTofu\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Pipedream CLI\",\"executable\":\"pd\",\"plugin_name\":\"Pipedream\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"psql\",\"executable\":\"psql\",\"plugin_name\":\"PostgreSQL\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"pg_dump\",\"executable\":\"pg_dump\",\"plugin_name\":\"PostgreSQL\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"pg_restore\",\"executable\":\"pg_restore\",\"plugin_name\":\"PostgreSQL\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"pgcli\",\"executable\":\"pgcli\",\"plugin_name\":\"PostgreSQL\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Pulumi CLI\",\"executable\":\"pulumi\",\"plugin_name\":\"Pulumi\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Twine\",\"executable\":\"twine\",\"plugin_name\":\"PyPI\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Flit\",\"executable\":\"flit\",\"plugin_name\":\"PyPI\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Hatch\",\"executable\":\"hatch\",\"plugin_name\":\"PyPI\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"ReadMe CLI\",\"executable\":\"rdme\",\"plugin_name\":\"ReadMe\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Redis CLI\",\"executable\":\"redis-cli\",\"plugin_name\":\"Redis\"}),\n Object.freeze({\"source\":\"1password-registry\",\"plugin_name\":\"rediscloud\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Scaleway CLI\",\"executable\":\"scw\",\"plugin_name\":\"Scaleway\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Sentry CLI\",\"executable\":\"sentry-cli\",\"plugin_name\":\"Sentry\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Snowflake CLI\",\"executable\":\"snowsql\",\"plugin_name\":\"Snowflake\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Snyk CLI\",\"executable\":\"snyk\",\"plugin_name\":\"Snyk\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Sourcegraph CLI\",\"executable\":\"src\",\"plugin_name\":\"Sourcegraph\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Stripe CLI\",\"executable\":\"stripe\",\"plugin_name\":\"Stripe\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Todoist CLI\",\"executable\":\"todoist\",\"plugin_name\":\"Todoist\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Treasure Data Toolbelt\",\"executable\":\"td\",\"plugin_name\":\"Treasure Data\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Tugboat CLI\",\"executable\":\"tugboat\",\"plugin_name\":\"Tugboat\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Twilio CLI\",\"executable\":\"twilio\",\"plugin_name\":\"Twilio\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"UpCloud CLI\",\"executable\":\"upctl\",\"plugin_name\":\"UpCloud\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Upstash CLI\",\"executable\":\"upstash\",\"plugin_name\":\"Upstash\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Vercel CLI\",\"executable\":\"vercel\",\"plugin_name\":\"Vercel\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Vertica CLI\",\"executable\":\"vsql\",\"plugin_name\":\"Vertica\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Vultr CLI\",\"executable\":\"vultr-cli\",\"plugin_name\":\"Vultr\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"YugabyteDB SQL Shell\",\"executable\":\"ysqlsh\",\"plugin_name\":\"YugabyteDB\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Zapier CLI\",\"executable\":\"zapier\",\"plugin_name\":\"Zapier\"}),\n Object.freeze({\"source\":\"1password-registry\",\"name\":\"Zendesk CLI\",\"executable\":\"zcli\",\"plugin_name\":\"Zendesk\"}),\n]);\n\nexport function availablePlugins(configured: readonly OpObject[]): OpPluginAvailability[] {\n const entries = nativePlugins.map(plugin => ({ ...plugin }));\n const executables = new Set(nativePlugins.flatMap(plugin => plugin.executable ? [plugin.executable.toLowerCase()] : []));\n for (const plugin of configured) {\n if (executables.has(plugin.id.toLowerCase())) continue;\n executables.add(plugin.id.toLowerCase());\n entries.push({ id: plugin.id, name: typeof plugin.name === \"string\" ? plugin.name : plugin.id });\n }\n return entries;\n}\n", "import type { OpBackend, OpBackendRequest } from \"./types.js\";\nimport { selectOpBackendContext, selectOpGlobalFlags, type OpCommandContext } from \"./cli.js\";\nimport { createOpTextCodec } from \"./encoding.js\";\nimport { parseOpFileMode } from \"./file-mode.js\";\nimport { createHandlerPreparation, createSourceSnapshot, type OpEffectIntent } from \"./handler-preparation.js\";\n\ntype SecretHandler = (request: OpBackendRequest, context: OpCommandContext) => Promise<{ exitCode: number }>;\n\nfunction word(character: string): boolean {\n return character.length === 1 && ((character >= \"a\" && character <= \"z\") || (character >= \"A\" && character <= \"Z\") || (character >= \"0\" && character <= \"9\") || character === \"_\");\n}\n\nfunction expand(value: string, env: Readonly<Record<string, string>>, escapes = true): string {\n let output = \"\";\n for (let position = 0; position < value.length;) {\n const character = value[position]!;\n if (escapes && character === \"\\\\\" && position + 1 < value.length) {\n output += value[position + 1];\n position += 2;\n continue;\n }\n if (character !== \"$\") {\n output += character;\n position++;\n continue;\n }\n let end = position + 1;\n let name: string;\n let fallback = \"\";\n if (value[end] === \"{\") {\n end = value.indexOf(\"}\", end + 1);\n if (end < 0) throw new Error(\"Unclosed environment variable\");\n name = value.slice(position + 2, end).trim();\n const separator = name.indexOf(\":-\");\n if (separator >= 0) {\n fallback = name.slice(separator + 2);\n name = name.slice(0, separator).trim();\n }\n end++;\n } else {\n while (end < value.length && word(value[end]!)) end++;\n name = value.slice(position + 1, end);\n }\n if (!name || !Array.from(name).every(word) || (name[0]! >= \"0\" && name[0]! <= \"9\")) {\n output += character;\n position++;\n continue;\n }\n const key = Object.keys(env).find(candidate => candidate.toLowerCase() === name.toLowerCase());\n output += key === undefined ? fallback : env[key];\n position = end;\n }\n return output;\n}\n\nasync function cancellable<Value>(signal: AbortSignal, operation: () => Promise<Value>): Promise<Value> {\n signal.throwIfAborted();\n let abort!: () => void;\n const cancelled = new Promise<never>((_resolve, reject) => {\n abort = () => reject(signal.reason);\n signal.addEventListener(\"abort\", abort, { once: true });\n });\n try {\n const value = await Promise.race([operation(), cancelled]);\n signal.throwIfAborted();\n return value;\n } finally {\n signal.removeEventListener(\"abort\", abort);\n }\n}\n\nasync function template(value: string, env: Readonly<Record<string, string>>, resolve: (reference: string) => Promise<string>, variables = true): Promise<string> {\n let output = \"\";\n let position = 0;\n while (position < value.length) {\n if (value.startsWith(\"{{\", position)) {\n let start = position + 2;\n while (value[start] === \" \") start++;\n if (value[start] === '\"') {\n let end = start + 1;\n let escaped = false;\n for (; end < value.length; end++) {\n if (!escaped && value[end] === '\"') break;\n if (!escaped && value[end] === \"\\\\\") escaped = true;\n else escaped = false;\n }\n const literal = JSON.parse(value.slice(start, end + 1)) as string;\n let close = end + 1;\n while (value[close] === \" \") close++;\n if (!value.startsWith(\"}}\", close)) throw new Error(\"Invalid template literal\");\n output += literal;\n position = close + 2;\n continue;\n }\n const end = value.indexOf(\"}}\", start);\n if (end < 0) throw new Error(\"Unclosed secret template\");\n const content = value.slice(start, end).trim();\n const reference = variables ? expand(content, env) : content;\n if (!reference.startsWith(\"op://\")) throw new Error(\"Expected a secret reference in template\");\n output += await resolve(reference);\n position = end + 2;\n continue;\n }\n const previous = value[position - 1] ?? \"\";\n if (value.startsWith(\"op://\", position) && !(word(previous) || (previous !== \"\" && \"-+\\\\.\".includes(previous)))) {\n let end = position + 5;\n while (end < value.length) {\n const character = value[end]!;\n if (character === \"$\") {\n if (value[end + 1] === \"{\") {\n const close = value.indexOf(\"}\", end + 2);\n if (close < 0) throw new Error(\"Unclosed environment variable\");\n end = close + 1;\n continue;\n }\n end++;\n continue;\n }\n if (!word(character) && !\"/-?_.=&%\".includes(character)) break;\n end++;\n }\n const reference = value.slice(position, end);\n output += await resolve(variables ? expand(reference, env) : reference);\n position = end;\n continue;\n }\n if (variables && value[position] === \"$\") {\n let end = position + 1;\n if (value[end] === \"{\") {\n const close = value.indexOf(\"}\", end + 1);\n if (close < 0) throw new Error(\"Unclosed environment variable\");\n end = close + 1;\n } else {\n while (end < value.length && word(value[end]!)) end++;\n }\n output += expand(value.slice(position, end), env);\n position = end;\n continue;\n }\n output += value[position];\n position++;\n }\n return output;\n}\n\nfunction dotenv(source: string, env: Record<string, string>): Set<string> {\n const keys = new Set<string>();\n let position = 0;\n while (position < source.length) {\n while (position < source.length && source[position]!.trim() === \"\") position++;\n if (position === source.length) break;\n if (source[position] === \"#\") {\n while (position < source.length && source[position] !== \"\\n\") position++;\n continue;\n }\n const start = position;\n while (position < source.length && source[position] !== \"=\" && source[position] !== \"\\n\") position++;\n if (source[position] !== \"=\") throw new Error(\"Invalid dotenv assignment\");\n let key = source.slice(start, position).trim();\n if (key.startsWith(\"export \")) key = key.slice(7).trim();\n key = expand(key, env);\n if (!key || key.includes(\"\\0\") || key.includes(\"=\") || key.includes(\"op://\")) throw new Error(\"Invalid dotenv key\");\n position++;\n while (source[position] === \" \" || source[position] === \"\\t\") position++;\n const quote = source[position] === \"'\" || source[position] === '\"' ? source[position++]! : undefined;\n let raw = \"\";\n let closed = quote === undefined;\n while (position < source.length) {\n const character = source[position]!;\n if (quote !== undefined && character === quote) {\n closed = true;\n position++;\n break;\n }\n if (quote === undefined && (character === \"\\n\" || character === \"\\r\" || character === \"#\")) break;\n if (character === \"\\\\\" && quote !== \"'\" && position + 1 < source.length) {\n raw += character + source[position + 1];\n position += 2;\n } else {\n raw += character;\n position++;\n }\n }\n if (!closed) throw new Error(\"Unclosed dotenv quote\");\n if (quote !== undefined) {\n while (source[position] === \" \" || source[position] === \"\\t\" || source[position] === \"\\r\") position++;\n if (position < source.length && source[position] !== \"#\" && source[position] !== \"\\n\") throw new Error(\"Unexpected text after dotenv quote\");\n }\n while (position < source.length && source[position] !== \"\\n\") position++;\n const value = quote === undefined ? raw.trim() : raw;\n Object.defineProperty(env, key, { value: quote === \"'\" ? value : expand(value, env), enumerable: true, writable: true, configurable: true });\n keys.add(key);\n }\n return keys;\n}\n\nexport function createMaskedSink(sink: OpCommandContext[\"stdout\"], secrets: readonly string[], signal: AbortSignal) {\n const encoder = new TextEncoder();\n const patterns = [...new Set(secrets)].filter(Boolean).map(secret => encoder.encode(secret)).sort((left, right) => right.length - left.length);\n const replacement = encoder.encode(\"<concealed by 1Password>\");\n let pending = new Uint8Array();\n let queue = Promise.resolve();\n async function drain(final: boolean) {\n const output: number[] = [];\n let position = 0;\n while (position < pending.length) {\n const remaining = pending.length - position;\n const matches = patterns.filter(pattern => pattern.subarray(0, Math.min(pattern.length, remaining)).every((byte, offset) => byte === pending[position + offset]));\n if (!final && matches.some(pattern => pattern.length > remaining)) break;\n const match = matches.find(pattern => pattern.length <= remaining);\n if (match) {\n for (const byte of replacement) output.push(byte);\n position += match.length;\n } else output.push(pending[position++]!);\n }\n pending = pending.slice(position);\n if (output.length) await cancellable(signal, () => sink.write(new Uint8Array(output)));\n }\n return {\n sink: {\n write(data: Uint8Array): Promise<void> {\n const copy = Uint8Array.from(data);\n queue = queue.then(async () => {\n signal.throwIfAborted();\n const next = new Uint8Array(pending.length + copy.length);\n next.set(pending);\n next.set(copy, pending.length);\n pending = next;\n await drain(false);\n });\n return queue;\n }\n },\n async flush() {\n await queue;\n await drain(true);\n }\n };\n}\n\nfunction outputFile(request: OpBackendRequest, context: OpCommandContext): { path: string; options: { mode: number; overwrite: boolean } } | undefined {\n const path = request.flags[\"out-file\"];\n if (typeof path !== \"string\" || !path) return undefined;\n if (!context.writeFile) throw new Error(\"Host writeFile capability is required\");\n const mode = parseOpFileMode(request.flags[\"file-mode\"]);\n return { path, options: { mode, overwrite: request.flags.force === true } };\n}\n\nexport function createSecretHandlers(backend: OpBackend): Record<string, SecretHandler> {\n function resolver(request: OpBackendRequest, context: OpCommandContext, secrets: string[] = []) {\n return async (reference: string): Promise<string> => {\n const result = await cancellable(context.signal, () => backend.execute({ resource: \"secret\", action: \"read\", args: [reference], flags: selectOpGlobalFlags(request.flags) }, selectOpBackendContext(context)));\n if (typeof result !== \"string\") throw new Error(\"Backend read must resolve to text\");\n secrets.push(result);\n return result;\n };\n }\n const handlers: Record<string, SecretHandler> = {\n async read(request, context) {\n context.signal.throwIfAborted();\n if (request.args.length !== 1) throw new Error(\"read requires one secret reference\");\n const output = outputFile(request, context);\n const value = await cancellable(context.signal, () => backend.execute({ resource: \"secret\", action: \"read\", args: [request.args[0]!], flags: selectOpGlobalFlags(request.flags) }, selectOpBackendContext(context)));\n let bytes: Uint8Array;\n if (value instanceof Uint8Array) {\n bytes = Uint8Array.from(value);\n } else {\n if (typeof value !== \"string\" && !(typeof value === \"number\" && Number.isSafeInteger(value) && value >= 0)) throw new Error(\"Backend read must resolve to text, bytes, or a nonnegative safe integer\");\n bytes = createOpTextCodec(request.flags.encoding).encode(String(value) + (output || request.flags[\"no-newline\"] === true ? \"\" : \"\\n\"));\n }\n await cancellable(context.signal, () => output ? context.writeFile!(output.path, bytes, output.options) : context.stdout.write(bytes));\n return { exitCode: 0 };\n },\n async inject(request, context) {\n context.signal.throwIfAborted();\n if (request.args.length) throw new Error(\"inject does not accept positional arguments\");\n const output = outputFile(request, context);\n const input = request.flags[\"in-file\"];\n let source = \"\";\n const decoder = createOpTextCodec(request.flags.encoding).decoder();\n if (typeof input === \"string\" && input) {\n if (!context.readFile) throw new Error(\"Host readFile capability is required\");\n source = decoder.decode(await cancellable(context.signal, () => context.readFile!(input)));\n } else {\n const iterator = context.stdin[Symbol.asyncIterator]();\n while (true) {\n const next = await cancellable(context.signal, () => iterator.next());\n if (next.done) break;\n source += decoder.decode(next.value, { stream: true });\n }\n source += decoder.decode();\n }\n const value = await template(source, context.env, resolver(request, context));\n const bytes = createOpTextCodec(request.flags.encoding).encode(value);\n await cancellable(context.signal, () => output ? context.writeFile!(output.path, bytes, output.options) : context.stdout.write(bytes));\n return { exitCode: 0 };\n },\n async run(request, context) {\n context.signal.throwIfAborted();\n if (!request.args.length) throw new Error(\"run requires a command\");\n if (!context.invoke) throw new Error(\"Host invoke capability is required\");\n const env = { ...context.env };\n const parsedKeys = new Set<string>();\n const files = request.flags[\"env-file\"];\n for (const path of typeof files === \"string\" ? [files] : Array.isArray(files) ? files : []) {\n if (!context.readFile) throw new Error(\"Host readFile capability is required\");\n const source = new TextDecoder().decode(await cancellable(context.signal, () => context.readFile!(path)));\n for (const key of dotenv(source, env)) parsedKeys.add(key);\n }\n const secrets: string[] = [];\n const resolve = resolver(request, context, secrets);\n const environmentKeys = new Set<string>();\n const environments = request.flags.environment ?? request.flags.environments;\n for (const id of typeof environments === \"string\" ? [environments] : Array.isArray(environments) ? environments : []) {\n const result = await cancellable(context.signal, () => backend.execute({ resource: \"environment\", action: \"read\", args: [id], flags: selectOpGlobalFlags(request.flags) }, selectOpBackendContext(context)));\n let values: Record<string, string>;\n if (typeof result === \"string\") {\n values = {};\n dotenv(result, values);\n } else {\n if (result === null || typeof result !== \"object\" || (Object.getPrototypeOf(result) !== Object.prototype && Object.getPrototypeOf(result) !== null)) throw new Error(\"Backend environment read must resolve to a string record or dotenv text\");\n const entries = Object.entries(result);\n if (entries.some(([, value]) => typeof value !== \"string\")) throw new Error(\"Backend environment values must be strings\");\n values = Object.fromEntries(entries);\n }\n for (const [key, value] of Object.entries(values)) {\n Object.defineProperty(env, key, { value, enumerable: true, writable: true, configurable: true });\n secrets.push(value);\n environmentKeys.add(key);\n }\n }\n const variables = { ...env };\n for (const [key, value] of Object.entries(env)) {\n if (environmentKeys.has(key)) continue;\n const resolveValue = (reference: string) => resolve(parsedKeys.has(key) ? reference : expand(reference, variables, false));\n env[key] = value.startsWith(\"op://\") ? await resolveValue(value) : await template(value, variables, resolveValue, false);\n }\n if (request.flags[\"no-masking\"] === true) return cancellable(context.signal, () => context.invoke!(request.args[0]!, request.args.slice(1), { env, stdout: context.stdout, stderr: context.stderr }));\n const stdout = createMaskedSink(context.stdout, secrets, context.signal);\n const stderr = createMaskedSink(context.stderr, secrets, context.signal);\n try {\n return await cancellable(context.signal, () => context.invoke!(request.args[0]!, request.args.slice(1), { env, stdout: stdout.sink, stderr: stderr.sink }));\n } finally {\n await Promise.all([stdout.flush(), stderr.flush()]);\n }\n }\n };\n for (const [name, handler] of Object.entries(handlers)) {\n Object.assign(handler, {\n async prepare(request: OpBackendRequest, context: OpCommandContext) {\n const source = createSourceSnapshot(context);\n const requests: OpBackendRequest[] = [];\n const flags = selectOpGlobalFlags(request.flags);\n const collect = async (reference: string) => {\n requests.push({ resource: \"secret\", action: \"read\", args: [reference], flags });\n return \"\";\n };\n if (name === \"read\") {\n if (request.args.length !== 1) throw new Error(\"read requires one secret reference\");\n await collect(request.args[0]!);\n } else if (name === \"inject\") {\n if (request.args.length) throw new Error(\"inject does not accept positional arguments\");\n const path = request.flags[\"in-file\"];\n const bytes = typeof path === \"string\" && path ? await source.file(path) : await source.input();\n await template(createOpTextCodec(request.flags.encoding).decoder().decode(bytes), source.context.env, collect);\n } else {\n if (!request.args.length) throw new Error(\"run requires a command\");\n const env = { ...source.context.env };\n const parsedKeys = new Set<string>();\n const files = request.flags[\"env-file\"];\n for (const path of typeof files === \"string\" ? [files] : Array.isArray(files) ? files : []) {\n for (const key of dotenv(new TextDecoder().decode(await source.file(path)), env)) parsedKeys.add(key);\n }\n const environments = request.flags.environment;\n const ids = typeof environments === \"string\" ? [environments] : Array.isArray(environments) ? environments : [];\n for (const id of ids) requests.push({ resource: \"environment\", action: \"read\", args: [id], flags });\n let dependent = false;\n const referenceKeys = new Set<string>();\n for (const [key, value] of Object.entries(env)) {\n const resolveValue = async (reference: string) => {\n referenceKeys.add(key);\n if (!parsedKeys.has(key) && reference.includes(\"$\")) dependent = true;\n return collect(parsedKeys.has(key) ? reference : expand(reference, env, false));\n };\n if (value.startsWith(\"op://\")) await resolveValue(value);\n else await template(value, env, resolveValue, false);\n }\n const effect: OpEffectIntent = { kind: \"invoke\", command: request.args[0]!, args: request.args.slice(1), environmentNames: Object.keys(env), masking: request.flags[\"no-masking\"] !== true };\n return createHandlerPreparation(requests, source.context, [effect], metadata => {\n const names = new Set(Object.keys(env));\n for (let index = 0; index < ids.length; index++) {\n const environment = metadata[index]?.environment;\n if (!environment || !environment.dependenciesComplete) throw new Error(\"Environment dependency metadata is unavailable\");\n if (dependent) throw new Error(\"Secret-dependent lookup targets are unsupported\");\n for (const key of environment.names) {\n if (referenceKeys.has(key)) throw new Error(\"Environment overrides a planned secret source\");\n names.add(key);\n }\n }\n return [{ ...effect, environmentNames: [...names] }];\n });\n }\n const output = outputFile(request, source.context);\n return createHandlerPreparation(requests, source.context, [output ? { kind: \"file\", ...output } : { kind: \"stdout\" }]);\n },\n });\n }\n return handlers;\n}\n", "import type { OpCommandContext, OpFileWriteOptions } from \"./cli.js\";\nimport type { OpBackendRequest } from \"./types.js\";\nimport type { EnvironmentSnapshot } from \"./environment.js\";\n\nexport interface OpPreparedEffect {\n readonly kind: \"stdout\" | \"file\" | \"invoke\" | \"restore\";\n readonly path?: string;\n readonly options?: Readonly<OpFileWriteOptions>;\n readonly command?: string;\n readonly argumentCount?: number;\n readonly environmentNames?: readonly string[];\n readonly unsetNames?: readonly string[];\n readonly masking?: boolean;\n}\n\nexport interface OpEffectIntent extends OpPreparedEffect {\n readonly args?: readonly string[];\n}\n\nexport interface OpHandlerRequestMetadata {\n readonly environment?: {\n readonly names: readonly string[];\n readonly unsetNames?: readonly string[];\n readonly scope?: \"complete\" | \"selected\";\n readonly dependenciesComplete: boolean;\n };\n}\n\nexport interface OpHandlerPreparation {\n readonly requests: readonly OpBackendRequest[];\n readonly context: OpCommandContext;\n readonly effects: readonly OpPreparedEffect[];\n complete(metadata: readonly OpHandlerRequestMetadata[]): readonly OpPreparedEffect[];\n}\n\nexport type OpPreparedHandler = ((request: OpBackendRequest, context: OpCommandContext) => Promise<{ exitCode: number }>) & {\n prepare(request: OpBackendRequest, context: OpCommandContext): Promise<OpHandlerPreparation>;\n};\n\nasync function acquire<Value>(signal: AbortSignal, operation: () => Promise<Value>): Promise<Value> {\n signal.throwIfAborted();\n let abort!: () => void;\n const cancelled = new Promise<never>((_resolve, reject) => {\n abort = () => reject(new Error(\"Operation aborted\"));\n signal.addEventListener(\"abort\", abort, { once: true });\n });\n try {\n const value = await Promise.race([operation(), cancelled]);\n signal.throwIfAborted();\n return value;\n } finally {\n signal.removeEventListener(\"abort\", abort);\n }\n}\n\nexport function createSourceSnapshot(source: OpCommandContext, maxBytes = 16 * 1024 * 1024) {\n const signal = source.signal;\n const readFile = source.readFile?.bind(source);\n const stdin = source.stdin;\n const files = new Map<string, Uint8Array>();\n let input: Promise<Uint8Array> | undefined;\n const context: OpCommandContext = {\n ...source,\n args: Object.freeze([...source.args]),\n env: Object.freeze({ ...source.env }),\n stdout: Object.freeze({ isTTY: source.stdout.isTTY, write: source.stdout.write.bind(source.stdout) }),\n stderr: Object.freeze({ isTTY: source.stderr.isTTY, write: source.stderr.write.bind(source.stderr) }),\n ...(source.writeFile ? { writeFile: source.writeFile.bind(source) } : {}),\n ...(source.invoke ? { invoke: source.invoke.bind(source) } : {}),\n ...(source.authentication ? { authentication: Object.freeze({ ...source.authentication }) } : {}),\n ...(source.pluginScope ? { pluginScope: Object.freeze({ ...source.pluginScope }) } : {}),\n async readFile(path) {\n signal.throwIfAborted();\n const bytes = files.get(path);\n if (!bytes) throw new Error(\"Unplanned file acquisition\");\n return Uint8Array.from(bytes);\n },\n stdin: {\n async *[Symbol.asyncIterator]() {\n signal.throwIfAborted();\n if (!input) throw new Error(\"Unplanned stdin acquisition\");\n yield Uint8Array.from(await input);\n },\n },\n };\n return {\n context,\n async file(path: string): Promise<Uint8Array> {\n signal.throwIfAborted();\n if (!files.has(path)) {\n if (!readFile) throw new Error(\"Host readFile capability is required\");\n const bytes = await acquire(signal, () => readFile(path));\n if (bytes.byteLength > maxBytes) throw new Error(\"Prepared source exceeds byte limit\");\n files.set(path, Uint8Array.from(bytes));\n }\n return Uint8Array.from(files.get(path)!);\n },\n input(): Promise<Uint8Array> {\n input ??= (async () => {\n const chunks: Uint8Array[] = [];\n let size = 0;\n const iterator = stdin[Symbol.asyncIterator]();\n while (true) {\n const next = await acquire(signal, () => iterator.next());\n if (next.done) break;\n if (next.value.byteLength > maxBytes - size) throw new Error(\"Prepared source exceeds byte limit\");\n chunks.push(Uint8Array.from(next.value));\n size += next.value.byteLength;\n }\n const bytes = new Uint8Array(size);\n let offset = 0;\n for (const chunk of chunks) { bytes.set(chunk, offset); offset += chunk.byteLength; }\n return bytes;\n })();\n return input.then(bytes => Uint8Array.from(bytes));\n },\n };\n}\n\nfunction freezeTree<Value>(value: Value): Value {\n if (value !== null && typeof value === \"object\" && !(value instanceof Uint8Array)) {\n for (const child of Object.values(value)) freezeTree(child);\n Object.freeze(value);\n }\n return value;\n}\n\nfunction effectMetadata(effects: readonly OpEffectIntent[]): readonly OpPreparedEffect[] {\n return freezeTree(effects.map(effect => {\n const { args, ...metadata } = effect;\n return structuredClone({ ...metadata, ...(args === undefined ? {} : { argumentCount: args.length }) });\n }));\n}\n\nexport function createHandlerPreparation(\n requests: readonly OpBackendRequest[], context: OpCommandContext, effects: readonly OpEffectIntent[],\n complete: (metadata: readonly OpHandlerRequestMetadata[]) => readonly OpEffectIntent[] = () => effects,\n): OpHandlerPreparation {\n let admitted: readonly OpEffectIntent[] | undefined;\n const signal = context.signal;\n const allowed = (kind: OpPreparedEffect[\"kind\"]) => {\n signal.throwIfAborted();\n if (!admitted) throw new Error(\"Preparation is incomplete\");\n return admitted.filter(effect => effect.kind === kind);\n };\n const same = (first: readonly string[], second: readonly string[]) => first.length === second.length && first.every((value, index) => value === second[index]);\n const namesMatch = (expected: readonly string[] | undefined, env: Readonly<Record<string, unknown>>) => expected !== undefined && same([...expected].sort(), Object.keys(env).sort());\n const guarded: OpCommandContext = {\n ...context,\n stdout: {\n isTTY: context.stdout.isTTY,\n async write(bytes) {\n if (!allowed(\"stdout\").length && !allowed(\"invoke\").length) throw new Error(\"Unplanned output\");\n await acquire(signal, () => context.stdout.write(Uint8Array.from(bytes)));\n },\n },\n stderr: {\n isTTY: context.stderr.isTTY,\n async write(bytes) {\n if (!allowed(\"invoke\").length) throw new Error(\"Unplanned error output\");\n await acquire(signal, () => context.stderr.write(Uint8Array.from(bytes)));\n },\n },\n ...(context.writeFile ? { async writeFile(path: string, bytes: Uint8Array, options?: OpFileWriteOptions) {\n if (!allowed(\"file\").some(effect => effect.path === path && effect.options?.mode === options?.mode && effect.options?.overwrite === options?.overwrite)) throw new Error(\"Unplanned file output\");\n await acquire(signal, () => context.writeFile!(path, Uint8Array.from(bytes), options ? { ...options } : undefined));\n } } : {}),\n ...(context.invoke ? { async invoke(command: string, args: readonly string[], options: Parameters<NonNullable<OpCommandContext[\"invoke\"]>>[2]) {\n if (!allowed(\"invoke\").some(effect => effect.command === command && same(effect.args ?? [], args) && namesMatch(effect.environmentNames, options.env))) throw new Error(\"Unplanned child invocation\");\n return acquire(signal, () => context.invoke!(command, Object.freeze([...args]), { ...options, env: Object.freeze({ ...options.env }) }));\n } } : {}),\n };\n const restoration = context as OpCommandContext & { restoreEnvironment?: (snapshot: EnvironmentSnapshot, context: { signal: AbortSignal }) => Promise<void> };\n if (restoration.restoreEnvironment) {\n const restore = restoration.restoreEnvironment.bind(context);\n Object.assign(guarded, { async restoreEnvironment(snapshot: EnvironmentSnapshot) {\n const values = Object.fromEntries(Object.entries(snapshot.variables).filter(([, value]) => value !== null));\n const unsets = Object.entries(snapshot.variables).filter(([, value]) => value === null).map(([key]) => key);\n if (!allowed(\"restore\").some(effect => namesMatch(effect.environmentNames, values) && unsets.every(key => effect.unsetNames?.includes(key)))) throw new Error(\"Unplanned environment restoration\");\n await acquire(signal, () => restore(structuredClone(snapshot), { signal }));\n } });\n }\n return Object.freeze({\n requests: freezeTree(requests.map(request => structuredClone(request))),\n context: guarded,\n effects: effectMetadata(effects),\n complete(metadata: readonly OpHandlerRequestMetadata[]) {\n context.signal.throwIfAborted();\n if (metadata.length !== requests.length) throw new Error(\"Incomplete binding metadata\");\n admitted = freezeTree(complete(metadata).map(effect => structuredClone(effect)));\n return effectMetadata(admitted);\n },\n });\n}\n", "import type { OpBackend, OpBackendRequest } from \"./types.js\";\nimport { selectOpBackendContext, selectOpGlobalFlags, type OpCommandContext } from \"./cli.js\";\nimport { captureEnvironment, restoreEnvironment, type EnvironmentSnapshot } from \"./environment.js\";\nimport { createMaskedSink } from \"./secrets.js\";\nimport { createOpTextCodec } from \"./encoding.js\";\nimport { createHandlerPreparation, createSourceSnapshot, type OpEffectIntent } from \"./handler-preparation.js\";\n\nexport interface EnvironmentCommandContext extends OpCommandContext {\n restoreEnvironment?: (snapshot: EnvironmentSnapshot, context: { signal: AbortSignal }) => Promise<void>;\n}\n\nfunction metadata(value: unknown): { id: string; name: string; variables: number; scope: string } {\n if (value === null || typeof value !== \"object\" || !(\"snapshot\" in value) || !(\"id\" in value) || typeof value.id !== \"string\") throw new Error(\"Invalid stored environment snapshot\");\n restoreEnvironment(value.snapshot, {});\n const snapshot = value.snapshot as EnvironmentSnapshot;\n return { id: value.id, name: \"name\" in value && typeof value.name === \"string\" ? value.name : value.id, variables: Object.keys(snapshot.variables).length, scope: snapshot.scope };\n}\n\nfunction shellScript(shell: string, snapshot: EnvironmentSnapshot, current: Record<string, string>): string {\n if (![\"bash\", \"zsh\", \"sh\", \"fish\", \"powershell\"].includes(shell)) throw new Error(\"Unsupported restoration shell\");\n const names = new Set([...(snapshot.scope === \"complete\" ? Object.keys(current) : []), ...Object.keys(snapshot.variables)]);\n for (const name of names) {\n if (![...name].every((character, index) => character === \"_\" || (character >= \"A\" && character <= \"Z\") || (character >= \"a\" && character <= \"z\") || (index > 0 && character >= \"0\" && character <= \"9\"))) {\n throw new Error(\"Environment contains a name that cannot be restored by a shell script\");\n }\n }\n const lines: string[] = [];\n for (const name of names) {\n const value = Object.hasOwn(snapshot.variables, name) ? snapshot.variables[name] : undefined;\n if (value === null || value === undefined) {\n lines.push(shell === \"fish\" ? `set -e ${name}` : shell === \"powershell\" ? `Remove-Item Env:${name} -ErrorAction SilentlyContinue` : `unset ${name}`);\n continue;\n }\n if (shell === \"powershell\") lines.push(`$env:${name} = '${value.split(\"'\").join(\"''\")}'`);\n else if (shell === \"fish\") lines.push(`set -gx ${name} '${value.split(\"\\\\\").join(\"\\\\\\\\\").split(\"'\").join(\"\\\\'\")}'`);\n else lines.push(`export ${name}='${value.split(\"'\").join(\"'\\\\''\")}'`);\n }\n return `${lines.join(\"\\n\")}\\n`;\n}\n\nexport function createEnvironmentHandlers(backend: OpBackend) {\n const handlers: Record<string, (request: OpBackendRequest, context: EnvironmentCommandContext) => Promise<{ exitCode: number }>> = {};\n for (const action of [\"create\", \"get\", \"list\", \"delete\", \"restore\"]) {\n handlers[`environment snapshot ${action}`] = Object.assign(async (request: OpBackendRequest, context: EnvironmentCommandContext) => {\n context.signal.throwIfAborted();\n if (action === \"list\" ? request.args.length !== 0 : action === \"restore\" ? request.args.length < 1 : request.args.length !== 1) throw new Error(\"Invalid environment snapshot arguments\");\n let value: unknown;\n if (action === \"create\") {\n const selected = request.flags.vars;\n if (selected !== undefined && (!Array.isArray(selected) || selected.some(name => typeof name !== \"string\"))) throw new Error(\"Invalid snapshot variable selection\");\n const snapshot = captureEnvironment(context.env, { names: selected as readonly string[] | undefined });\n value = metadata(await backend.execute({ ...request, resource: \"environment snapshot\", args: [], input: { name: request.args[0], snapshot } }, selectOpBackendContext(context)));\n } else if (action === \"restore\") {\n const stored = await backend.execute({ resource: \"environment snapshot\", action: \"get\", args: [request.args[0]], flags: selectOpGlobalFlags(request.flags) }, selectOpBackendContext(context));\n metadata(stored);\n const snapshot = structuredClone((stored as { snapshot: EnvironmentSnapshot }).snapshot);\n const variables = restoreEnvironment(snapshot, context.env);\n context.signal.throwIfAborted();\n if (request.flags.shell !== undefined) {\n if (typeof request.flags.shell !== \"string\" || request.args.length !== 1) throw new Error(\"Shell output cannot be combined with a child command\");\n await context.stdout.write(createOpTextCodec(request.flags.encoding).encode(shellScript(request.flags.shell, snapshot, context.env)));\n } else if (request.args.length > 1) {\n if (!context.invoke) throw new Error(\"Environment restoration requires a host invocation capability\");\n if (request.flags[\"no-masking\"] === true) {\n const result = await context.invoke(request.args[1], request.args.slice(2), { env: variables });\n context.signal.throwIfAborted();\n return result;\n }\n const values = Object.values(snapshot.variables).filter((value): value is string => typeof value === \"string\");\n const stdout = createMaskedSink(context.stdout, values, context.signal);\n const stderr = createMaskedSink(context.stderr, values, context.signal);\n const result = await context.invoke(request.args[1], request.args.slice(2), { env: variables, stdout: stdout.sink, stderr: stderr.sink });\n context.signal.throwIfAborted();\n await stdout.flush();\n await stderr.flush();\n return result;\n } else {\n if (!context.restoreEnvironment) throw new Error(\"Host environment restoration is unavailable; use --shell or supply a child command after --\");\n await context.restoreEnvironment(snapshot, { signal: context.signal });\n context.signal.throwIfAborted();\n }\n return { exitCode: 0 };\n } else {\n value = await backend.execute({ ...request, resource: \"environment snapshot\" }, selectOpBackendContext(context));\n if (action === \"list\") {\n if (!Array.isArray(value)) throw new Error(\"Invalid snapshot collection\");\n value = value.map(metadata);\n } else if (action === \"get\") metadata(value);\n }\n context.signal.throwIfAborted();\n if (value !== undefined) await context.stdout.write(createOpTextCodec(request.flags.encoding).encode(`${JSON.stringify(value, null, 2)}\\n`));\n return { exitCode: 0 };\n }, {\n async prepare(request: OpBackendRequest, context: EnvironmentCommandContext) {\n const source = createSourceSnapshot(context);\n if (action === \"list\" ? request.args.length !== 0 : action === \"restore\" ? request.args.length < 1 : request.args.length !== 1) throw new Error(\"Invalid environment snapshot arguments\");\n if (action === \"create\") {\n const selected = request.flags.vars;\n if (selected !== undefined && (!Array.isArray(selected) || selected.some(name => typeof name !== \"string\"))) throw new Error(\"Invalid snapshot variable selection\");\n const snapshot = captureEnvironment(source.context.env, { names: selected as readonly string[] | undefined });\n return createHandlerPreparation([{ ...request, resource: \"environment snapshot\", args: [], input: { name: request.args[0], snapshot } }], source.context, [{ kind: \"stdout\", environmentNames: Object.keys(snapshot.variables), unsetNames: Object.entries(snapshot.variables).filter(([, value]) => value === null).map(([key]) => key) }]);\n }\n if (action !== \"restore\") return createHandlerPreparation([{ ...request, resource: \"environment snapshot\" }], source.context, [{ kind: \"stdout\" }]);\n const nested = { resource: \"environment snapshot\", action: \"get\", args: [request.args[0]!], flags: selectOpGlobalFlags(request.flags) };\n const effect: OpEffectIntent = request.flags.shell !== undefined ? { kind: \"stdout\" } : request.args.length > 1 ? { kind: \"invoke\", command: request.args[1]!, args: request.args.slice(2), masking: request.flags[\"no-masking\"] !== true } : { kind: \"restore\" };\n return createHandlerPreparation([nested], source.context, [effect], metadata => {\n const environment = metadata[0]?.environment;\n if (!environment || !environment.dependenciesComplete || !environment.scope || !environment.unsetNames) throw new Error(\"Snapshot key metadata is unavailable\");\n const unsetNames = new Set(environment.unsetNames);\n if (environment.scope === \"complete\") for (const key of Object.keys(source.context.env)) if (!environment.names.includes(key)) unsetNames.add(key);\n const names = new Set(environment.scope === \"selected\" && effect.kind === \"invoke\" ? Object.keys(source.context.env) : []);\n for (const key of environment.names) if (!unsetNames.has(key)) names.add(key);\n for (const key of unsetNames) names.delete(key);\n return [{ ...effect, environmentNames: [...names], unsetNames: [...unsetNames] }];\n });\n },\n });\n }\n return handlers;\n}\n", "export interface EnvironmentSnapshot {\n readonly version: 1;\n readonly scope: \"complete\" | \"selected\";\n readonly variables: Readonly<Record<string, string | null>>;\n}\n\nfunction variableEntries(value: unknown, allowUnset: boolean): [string, string | null][] {\n if (value === null || typeof value !== \"object\" || Array.isArray(value)) throw new Error(\"Invalid environment variables\");\n const entries: [string, string | null][] = [];\n for (const name of Reflect.ownKeys(value)) {\n if (typeof name !== \"string\" || !name || name.includes(\"=\") || name.includes(\"\\0\")) throw new Error(\"Invalid environment variable name\");\n const descriptor = Object.getOwnPropertyDescriptor(value, name)!;\n if (!Object.hasOwn(descriptor, \"value\")) throw new Error(\"Environment variables must be data properties\");\n const content: unknown = descriptor.value;\n if (content === undefined || (allowUnset && content === null)) {\n if (allowUnset) entries.push([name, null]);\n continue;\n }\n if (typeof content !== \"string\" || content.includes(\"\\0\")) throw new Error(\"Invalid environment variable value\");\n entries.push([name, content]);\n }\n return entries;\n}\n\nexport function captureEnvironment(\n environment: Readonly<Record<string, string | undefined>>,\n options: { readonly names?: readonly string[] } = {},\n): EnvironmentSnapshot {\n const entries = new Map(variableEntries(environment, false));\n let captured = [...entries];\n if (options.names !== undefined) {\n captured = [...new Set(options.names)].map(name => [name, entries.get(name) ?? null]);\n variableEntries(Object.fromEntries(captured), true);\n }\n return Object.freeze({\n version: 1,\n scope: options.names === undefined ? \"complete\" : \"selected\",\n variables: Object.freeze(Object.fromEntries(captured)),\n });\n}\n\nexport function restoreEnvironment(\n snapshot: unknown,\n current: Readonly<Record<string, string | undefined>>,\n): Record<string, string> {\n if (snapshot === null || typeof snapshot !== \"object\" || Array.isArray(snapshot)) throw new Error(\"Invalid environment snapshot\");\n const descriptors = Object.getOwnPropertyDescriptors(snapshot);\n const version = descriptors.version?.value;\n const scope = descriptors.scope?.value;\n if (version !== 1 || (scope !== \"complete\" && scope !== \"selected\") || !Object.hasOwn(descriptors.variables ?? {}, \"value\")) {\n throw new Error(\"Invalid environment snapshot\");\n }\n const variables = variableEntries(descriptors.variables.value, true);\n const result = new Map(scope === \"selected\" ? variableEntries(current, false) : []);\n for (const [name, value] of variables) {\n if (value === null) result.delete(name);\n else result.set(name, value);\n }\n return Object.fromEntries(result) as Record<string, string>;\n}\n", "import { parseOpFileMode, renderOpOutput, selectOpBackendContext, type OpCommandContext, type OpCommandOptions } from \"./cli.js\";\nimport type { OpBackend, OpBackendRequest } from \"./types.js\";\nimport { createHandlerPreparation, createSourceSnapshot } from \"./handler-preparation.js\";\n\nexport interface OpDocumentHandlerOptions {\n maxBytes?: number;\n}\n\nfunction textFlag(request: OpBackendRequest, name: string): string | undefined {\n const value = request.flags[name];\n if (value === undefined) return undefined;\n if (typeof value !== \"string\") throw new Error(`--${name} requires a string`);\n return value;\n}\n\nasync function uploadBytes(context: OpCommandContext, path: string | undefined, maxBytes: number): Promise<Uint8Array> {\n context.signal.throwIfAborted();\n if (path !== undefined && path !== \"-\") {\n if (!context.readFile) throw new Error(\"document upload requires a host readFile capability\");\n const bytes = await context.readFile(path);\n context.signal.throwIfAborted();\n if (bytes.byteLength > maxBytes) throw new Error(\"document exceeds byte limit\");\n return Uint8Array.from(bytes);\n }\n const chunks: Uint8Array[] = [];\n let length = 0;\n for await (const chunk of context.stdin) {\n context.signal.throwIfAborted();\n if (chunk.byteLength > maxBytes - length) throw new Error(\"document exceeds byte limit\");\n length += chunk.byteLength;\n chunks.push(Uint8Array.from(chunk));\n }\n const bytes = new Uint8Array(length);\n let offset = 0;\n for (const chunk of chunks) { bytes.set(chunk, offset); offset += chunk.length; }\n return bytes;\n}\n\nfunction readable(bytes: Uint8Array): boolean {\n try {\n const text = new TextDecoder(\"utf-8\", { fatal: true }).decode(bytes);\n return Array.from(text).every(character => {\n const code = character.codePointAt(0)!;\n return code === 9 || code === 10 || code === 13 || (code >= 32 && code !== 127 && (code < 128 || code > 159));\n });\n } catch { return false; }\n}\n\nexport function createDocumentHandlers(backend: OpBackend, options: OpDocumentHandlerOptions = {}): NonNullable<OpCommandOptions[\"handlers\"]> {\n const maxBytes = options.maxBytes ?? 16 * 1024 * 1024;\n if (!Number.isSafeInteger(maxBytes) || maxBytes < 0) throw new Error(\"maxBytes must be a nonnegative safe integer\");\n const handlers: Record<string, NonNullable<OpCommandOptions[\"handlers\"]>[string]> = {};\n for (const action of [\"create\", \"edit\"] as const) {\n const mutation = async (request: OpBackendRequest, context: OpCommandContext): Promise<OpBackendRequest> => {\n if (request.args.length > (action === \"create\" ? 1 : 2) || (action === \"edit\" && !request.args[0])) throw new Error(`invalid arguments for document ${action}`);\n const path = request.args[action === \"create\" ? 0 : 1];\n const explicitName = textFlag(request, \"file-name\");\n const title = textFlag(request, \"title\");\n const vault = textFlag(request, \"vault\");\n const filename = explicitName ?? (path !== undefined && path !== \"-\" ? path.split(\"\\\\\").join(\"/\").split(\"/\").at(-1) : undefined);\n if (filename === \"\") throw new Error(\"document filename must not be empty\");\n const content = await uploadBytes(context, path, maxBytes);\n const input = {\n content,\n ...(filename === undefined ? action === \"create\" ? { name: \"stdin\" } : {} : { name: filename }),\n ...(title === undefined ? action === \"create\" ? { title: filename ?? \"stdin\" } : {} : { title }),\n ...(action === \"create\" && vault !== undefined ? { vault } : {}),\n ...(request.flags.tags === undefined ? {} : { tags: request.flags.tags }),\n };\n context.signal.throwIfAborted();\n return { ...request, resource: \"document\", action, args: action === \"create\" ? [] : [request.args[0]!], input };\n };\n handlers[`document ${action}`] = Object.assign(async (request: OpBackendRequest, context: OpCommandContext) => {\n const prepared = await mutation(request, context);\n const result = await backend.execute(prepared, selectOpBackendContext(context));\n context.signal.throwIfAborted();\n const output = renderOpOutput(result, request);\n if (output !== undefined) await context.stdout.write(output);\n return { exitCode: 0 };\n }, {\n async prepare(request: OpBackendRequest, context: OpCommandContext) {\n const source = createSourceSnapshot(context, maxBytes);\n const path = request.args[action === \"create\" ? 0 : 1];\n if (path === undefined || path === \"-\") await source.input();\n const prepared = await mutation(request, { ...source.context, readFile: source.file });\n return createHandlerPreparation([prepared], source.context, [{ kind: \"stdout\" }]);\n },\n });\n }\n handlers[\"document get\"] = Object.assign(async (request: OpBackendRequest, context: OpCommandContext) => {\n if (request.args.length !== 1 || !request.args[0] || request.args[0] === \"-\") throw new Error(\"document get requires one document name or ID\");\n const path = textFlag(request, \"out-file\");\n const mode = path === undefined ? undefined : parseOpFileMode(request.flags[\"file-mode\"]);\n if (path !== undefined && !context.writeFile) throw new Error(\"document output requires a host writeFile capability\");\n context.signal.throwIfAborted();\n const result = await backend.execute(request, selectOpBackendContext(context));\n context.signal.throwIfAborted();\n const bytes = renderOpOutput(result, request);\n if (!(bytes instanceof Uint8Array)) throw new Error(\"document backend did not return content\");\n if (bytes.byteLength > maxBytes) throw new Error(\"document exceeds byte limit\");\n if (path !== undefined) await context.writeFile!(path, bytes, { mode, overwrite: request.flags.force === true });\n else {\n if (context.stdout.isTTY && request.flags.force !== true && !readable(bytes)) throw new Error(\"refusing binary document output to terminal; use --force or --out-file\");\n await context.stdout.write(bytes);\n }\n return { exitCode: 0 };\n }, {\n async prepare(request: OpBackendRequest, context: OpCommandContext) {\n const source = createSourceSnapshot(context, maxBytes);\n const path = textFlag(request, \"out-file\");\n return createHandlerPreparation([request], source.context, [path === undefined ? { kind: \"stdout\" } : { kind: \"file\", path, options: { mode: parseOpFileMode(request.flags[\"file-mode\"]), overwrite: request.flags.force === true } }]);\n },\n });\n return Object.freeze(handlers);\n}\n", "import { parseAssignment } from \"./backend.js\";\nimport { renderOpOutput, selectOpBackendContext, type OpCommandContext, type OpCommandOptions } from \"./cli.js\";\nimport type { OpBackend, OpBackendRequest } from \"./types.js\";\nimport { createOpTextCodec } from \"./encoding.js\";\nimport { createHandlerPreparation, createSourceSnapshot } from \"./handler-preparation.js\";\n\nfunction record(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value) && !(value instanceof Uint8Array);\n}\n\nasync function cancellable<Value>(signal: AbortSignal, operation: () => Promise<Value>): Promise<Value> {\n signal.throwIfAborted();\n let abort!: () => void;\n const cancelled = new Promise<never>((_resolve, reject) => {\n abort = () => reject(signal.reason);\n signal.addEventListener(\"abort\", abort, { once: true });\n });\n try {\n const value = await Promise.race([operation(), cancelled]);\n signal.throwIfAborted();\n return value;\n } finally {\n signal.removeEventListener(\"abort\", abort);\n }\n}\n\nasync function stdinText(context: OpCommandContext, encoding: unknown): Promise<string> {\n const decoder = createOpTextCodec(encoding).decoder({ fatal: true });\n const iterator = context.stdin[Symbol.asyncIterator]();\n let source = \"\";\n let length = 0;\n while (true) {\n const next = await cancellable(context.signal, () => iterator.next());\n if (next.done) break;\n length += next.value.byteLength;\n if (length > 16 * 1024 * 1024) throw new Error(\"Item template stdin exceeds 16 MiB\");\n source += decoder.decode(next.value, { stream: true });\n }\n return (source + decoder.decode()).trim();\n}\n\nfunction metadata(value: unknown): unknown {\n if (Array.isArray(value)) return value.map(metadata);\n if (!record(value) || !Array.isArray(value.files)) return value;\n return {\n ...value,\n files: value.files.map(file => record(file) ? Object.fromEntries(Object.entries(file).filter(([key]) => key !== \"content\")) : file)\n };\n}\n\nexport function createItemHandlers(backend: OpBackend): NonNullable<OpCommandOptions[\"handlers\"]> {\n const handlers: Record<string, NonNullable<OpCommandOptions[\"handlers\"]>[string]> = {};\n for (const action of [\"create\", \"edit\"] as const) {\n const mutation = async (request: OpBackendRequest, context: OpCommandContext): Promise<OpBackendRequest> => {\n context.signal.throwIfAborted();\n const args = [...request.args];\n const positional: string[] = [];\n let stdinMarker = false;\n if (action === \"edit\") {\n const selector = args.shift();\n if (!selector || selector === \"-\") throw new Error(\"item edit requires an item selector\");\n positional.push(selector);\n } else if (args[0] === \"-\") {\n args.shift();\n stdinMarker = true;\n }\n const assignments = args.map(source => ({ source, parsed: parseAssignment(source) }));\n for (const { parsed } of assignments) {\n if (parsed.type === \"file\" && !parsed.value) throw new Error(\"File assignments require a file path\");\n }\n const path = request.flags.template;\n if (path !== undefined && (typeof path !== \"string\" || !path)) throw new Error(\"--template requires a file path\");\n if (path !== undefined && (stdinMarker || request.input !== undefined)) throw new Error(\"Cannot combine --template with stdin item templates\");\n const piped = await stdinText(context, request.flags.encoding);\n if (piped && (path !== undefined || request.input !== undefined)) throw new Error(\"Cannot combine multiple item template sources\");\n if (stdinMarker && !piped && request.input === undefined) throw new Error(\"Expected an item JSON template on stdin\");\n let source = piped;\n if (typeof path === \"string\") {\n if (!context.readFile) throw new Error(\"Item templates require a host readFile capability\");\n const bytes = await cancellable(context.signal, () => context.readFile!(path));\n source = createOpTextCodec(request.flags.encoding).decoder({ fatal: true }).decode(bytes);\n }\n let input: Record<string, unknown> | Record<string, unknown>[] | undefined;\n if (source || path !== undefined || request.input !== undefined) {\n let parsed: unknown;\n try { parsed = request.input === undefined ? JSON.parse(source) : request.input; }\n catch { throw new Error(\"Invalid item JSON template\"); }\n if (Array.isArray(parsed)) {\n if (action !== \"create\" || path !== undefined || !parsed.length || parsed.some(value => !record(value))) throw new Error(\"Item JSON templates must be a nonempty array of objects on create stdin\");\n } else if (!record(parsed)) throw new Error(\"Item JSON template must be an object\");\n input = structuredClone(parsed);\n }\n for (const { source: assignment, parsed } of assignments) {\n if (parsed.type !== \"file\") {\n positional.push(assignment);\n continue;\n }\n if (!context.readFile) throw new Error(\"File attachments require a host readFile capability\");\n const bytes = await cancellable(context.signal, () => context.readFile!(parsed.value!));\n input ??= {};\n for (const item of Array.isArray(input) ? input : [input]) {\n if (item.files !== undefined && !Array.isArray(item.files)) throw new Error(\"Item files must be an array\");\n item.files = [...(item.files as unknown[] | undefined) ?? [], {\n name: parsed.field,\n size: bytes.byteLength,\n content: Uint8Array.from(bytes),\n ...(parsed.section === undefined ? {} : { section: { label: parsed.section } })\n }];\n }\n }\n const flags = { ...request.flags };\n delete flags.template;\n return { ...request, args: positional, flags, ...(input === undefined ? {} : { input }) };\n };\n handlers[`item ${action}`] = Object.assign(async (request: OpBackendRequest, context: OpCommandContext) => {\n const prepared = await mutation(request, context);\n const result = await cancellable(context.signal, () => backend.execute(prepared, selectOpBackendContext(context)));\n const output = renderOpOutput(metadata(result), request);\n if (output !== undefined) await cancellable(context.signal, () => context.stdout.write(output));\n return { exitCode: 0 };\n }, {\n async prepare(request: OpBackendRequest, context: OpCommandContext) {\n const source = createSourceSnapshot(context);\n await source.input();\n const prepared = await mutation(request, { ...source.context, readFile: source.file });\n return createHandlerPreparation([prepared], source.context, [{ kind: \"stdout\" }]);\n },\n });\n }\n return handlers;\n}\n", "import { deriveItemFieldReferences, parseSecretReference } from \"./references.js\";\nimport { opCrypto } from \"#op-crypto\";\nimport { generateOtp } from \"./otp.js\";\nimport { createAccountScope, executeAdmittedAdminRequest } from \"./admin.js\";\nimport { beginAuthentication, validateAuthentication } from \"./auth.js\";\nimport { objectBatchCommands, parseObjectSelectors } from \"./selectors.js\";\nimport { validateVaultOptions } from \"./vault-options.js\";\nimport { getItemTemplate, listItemTemplates } from \"./templates.js\";\nimport { createBindingManager, normalizeObjectRequest } from \"./bindings.js\";\nimport { availablePlugins } from \"./plugin-catalog.js\";\nimport { selectCreationVault } from \"./object-vaults.js\";\nimport type { OpAdminContext } from \"./admin.js\";\nimport type { OpBackendRequest, OpField, OpFile, OpItem, OpObject, OpObjectBackend, OpObjectBackendOptions, OpSection } from \"./types.js\";\n\nfunction strings(value: OpBackendRequest[\"flags\"][string]): readonly string[] {\n return typeof value === \"string\" ? value === \"\" ? [] : value.split(\",\") : Array.isArray(value) ? value : [];\n}\n\nfunction generatePassword(recipe: string | boolean | readonly string[]): string {\n const alphabets: Record<string, string> = { letters: \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\", digits: \"0123456789\", symbols: \"!@.-_*\" };\n let length = 32;\n let alphabet = \"\";\n let hasLength = false;\n for (const part of recipe === true || recipe === \"\" ? [\"letters\", \"digits\", \"symbols\"] : strings(recipe)) {\n const label = part.toLowerCase();\n const digits = part.startsWith(\"+\") ? part.slice(1) : part;\n if (Object.hasOwn(alphabets, label)) alphabet += alphabets[label];\n else if (digits.length && [...digits].every(character => \"0123456789\".includes(character)) && !hasLength) { length = Number(digits); hasLength = true; }\n else throw new Error(\"Invalid password recipe\");\n }\n if (!Number.isInteger(length) || length < 1 || length > 64) throw new Error(\"Password length must be between 1 and 64\");\n if (!alphabet) alphabet = Object.values(alphabets).join(\"\");\n alphabet = [...new Set(alphabet)].join(\"\");\n const cutoff = 256 - (256 % alphabet.length);\n let password = \"\";\n while (password.length < length) {\n for (const byte of opCrypto.getRandomValues(new Uint8Array(64))) {\n if (byte < cutoff) password += alphabet[byte % alphabet.length];\n if (password.length === length) break;\n }\n }\n return password;\n}\n\nexport function parseAssignment(source: string): { section?: string; field: string; type?: string; value?: string } {\n const names: string[] = [];\n let name = \"\";\n let offset = 0;\n for (; offset < source.length; offset++) {\n const character = source[offset]!;\n if (character === \"\\\\\") {\n const next = source[++offset];\n if (!next || !\".\\\\=\".includes(next)) throw new Error(\"Invalid field name escape\");\n name += next;\n } else if (character === \".\") { names.push(name); name = \"\"; }\n else if (character === \"=\" || character === \"[\") break;\n else name += character;\n }\n names.push(name);\n if (names.length > 2 || names.some(part => !part)) throw new Error(\"Invalid field assignment\");\n let type: string | undefined;\n if (source[offset] === \"[\") {\n const closing = source.indexOf(\"]\", offset);\n if (closing < 0) throw new Error(\"Invalid field type\");\n type = source.slice(offset + 1, closing);\n offset = closing + 1;\n }\n if (offset < source.length && source[offset] !== \"=\") throw new Error(\"Invalid field assignment\");\n if (offset === source.length && !type) throw new Error(\"Assignment requires a value or type\");\n return { ...(names.length === 2 ? { section: names[0]! } : {}), field: names.at(-1)!, ...(type === undefined ? {} : { type }), ...(source[offset] === \"=\" ? { value: source.slice(offset + 1) } : {}) };\n}\n\nfunction itemPatch(input: Record<string, unknown>, args: readonly string[], flags: OpBackendRequest[\"flags\"], nextId: () => string): Record<string, unknown> {\n const result = structuredClone(input);\n for (const key of [\"title\", \"category\"]) if (typeof flags[key] === \"string\") result[key] = flags[key];\n if (typeof result.category === \"string\") result.category = result.category.toUpperCase().split(\" \").join(\"_\");\n if (flags.tags !== undefined) result.tags = [...strings(flags.tags)];\n if (flags.favorite !== undefined) result.favorite = flags.favorite === true || flags.favorite === \"true\";\n if (typeof flags.url === \"string\") result.urls = [{ href: flags.url, primary: true }];\n if (flags[\"ssh-generate-key\"]) throw new Error(\"SSH generation is not supported by the object backend\");\n const fields = structuredClone(result.fields ?? []) as OpField[];\n const files = structuredClone(result.files ?? []) as OpFile[];\n let sections = structuredClone(result.sections ?? []) as OpSection[];\n if (!Array.isArray(fields) || !Array.isArray(files) || !Array.isArray(sections)) throw new Error(\"Item fields, files and sections must be arrays\");\n for (const field of fields) if (record(field)) delete field.reference;\n for (const section of sections) {\n if (!record(section)) throw new Error(\"Invalid item section\");\n if (section.id === undefined) section.id = nextId();\n if (typeof section.id !== \"string\" || !section.id) throw new Error(\"Invalid item section ID\");\n }\n for (const member of [...fields, ...files]) {\n if (!record(member)) throw new Error(\"Invalid item field or file\");\n if (member.id === undefined) member.id = nextId();\n if (typeof member.id !== \"string\" || !member.id) throw new Error(\"Invalid item field or file ID\");\n if (member.section === undefined) continue;\n const reference = member.section;\n if (!record(reference) || (typeof reference.id !== \"string\" && typeof reference.label !== \"string\")) throw new Error(\"Invalid item section reference\");\n const matches = sections.filter(section => typeof reference.id === \"string\" ? section.id === reference.id : section.label?.split(\" \").join(\"\").toLowerCase() === reference.label?.split(\" \").join(\"\").toLowerCase());\n if (matches.length > 1) throw new Error(\"Ambiguous section\");\n const section = matches[0] ?? { ...reference, id: reference.id ?? nextId() };\n if (!matches.length) sections.push(section);\n member.section = { ...section };\n }\n const types: Record<string, string> = { text: \"STRING\", password: \"CONCEALED\", email: \"EMAIL\", url: \"URL\", phone: \"PHONE\", otp: \"OTP\", date: \"DATE\", monthyear: \"MONTH_YEAR\", address: \"ADDRESS\", reference: \"REFERENCE\", menu: \"MENU\", concealed: \"CONCEALED\" };\n for (const source of args) {\n const parsed = parseAssignment(source);\n let section: OpSection | undefined;\n if (parsed.section) {\n const matches = sections.filter(entry => entry.id === parsed.section || entry.label?.split(\" \").join(\"\").toLowerCase() === parsed.section!.split(\" \").join(\"\").toLowerCase());\n if (matches.length > 1) throw new Error(\"Ambiguous section\");\n section = matches[0];\n if (!section) { section = { id: nextId(), label: parsed.section }; sections.push(section); }\n }\n const matches = fields.filter(field => (!section || field.section?.id === section.id) && [field.id, field.label, field.name, field.n].some(value => typeof value === \"string\" && value.split(\" \").join(\"\").toLowerCase() === parsed.field.split(\" \").join(\"\").toLowerCase()));\n if (matches.length > 1) throw new Error(\"Ambiguous field\");\n let field = matches[0];\n if (parsed.type === \"delete\") {\n if (!field) throw new Error(\"Field not found\");\n if (field.purpose) throw new Error(\"Built-in fields cannot be deleted\");\n fields.splice(fields.indexOf(field), 1);\n if (field.section && ![...fields, ...files].some(entry => entry.section?.id === field!.section!.id)) sections = sections.filter(entry => entry.id !== field!.section!.id);\n continue;\n }\n if (parsed.type && !Object.hasOwn(types, parsed.type)) throw new Error(\"Unsupported field type\");\n if (!field) {\n const purpose = !section && [\"username\", \"password\", \"notesPlain\"].includes(parsed.field) ? ({ username: \"USERNAME\", password: \"PASSWORD\", notesPlain: \"NOTES\" } as Record<string, string>)[parsed.field] : undefined;\n field = { id: purpose ? parsed.field : nextId(), label: parsed.field, type: parsed.field === \"password\" ? \"CONCEALED\" : \"STRING\", ...(purpose ? { purpose } : {}), ...(section ? { section } : {}) };\n fields.push(field);\n }\n if (parsed.type) field.type = types[parsed.type];\n if (parsed.value !== undefined) field.value = parsed.value;\n }\n result.fields = fields;\n if (result.files !== undefined) result.files = files;\n result.sections = sections;\n if (flags[\"generate-password\"] !== undefined && flags[\"generate-password\"] !== false) {\n if (![\"LOGIN\", \"PASSWORD\"].includes(String(result.category))) throw new Error(\"Password generation requires a Login or Password item\");\n let password = fields.find(field => field.purpose === \"PASSWORD\" || field.id === \"password\");\n if (!password) { password = { id: \"password\", label: \"password\", purpose: \"PASSWORD\", type: \"CONCEALED\" }; fields.push(password); }\n password.value = generatePassword(flags[\"generate-password\"]);\n }\n return result;\n}\n\nfunction record(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value) && (Object.getPrototypeOf(value) === Object.prototype || Object.getPrototypeOf(value) === null);\n}\n\nfunction merge(target: Record<string, unknown>, patch: Record<string, unknown>): Record<string, unknown> {\n const result = { ...target };\n for (const [key, value] of Object.entries(patch)) {\n Object.defineProperty(result, key, { value: record(value) && record(target[key]) ? merge(target[key], value) : structuredClone(value), writable: true, enumerable: true, configurable: true });\n }\n return result;\n}\n\nfunction select<T extends OpObject>(objects: readonly T[], selector: string): T {\n const folded = selector.toLowerCase();\n const ids = objects.filter(object => object.id.toLowerCase() === folded);\n const matches = ids.length ? ids : objects.filter(object => [object.name, object.title, object.label].some(value => typeof value === \"string\" && value.toLowerCase() === folded));\n if (matches.length !== 1) throw new Error(matches.length ? \"Ambiguous object selector\" : \"Object not found\");\n return matches[0]!;\n}\n\nexport function createObjectBackend(options: OpObjectBackendOptions = {}): OpObjectBackend {\n const resources = new Map<string, OpObject[]>();\n const adminHooks = { ...options.adminHooks };\n const authenticationPolicy = { ...options.authentication ?? { mode: \"object-store\" as const } };\n const clock = options.clock ?? { now: Date.now };\n const ssh = options.ssh === undefined ? undefined : { ...options.ssh };\n let sequence = 0;\n function nextId(): string {\n let id: string;\n do { id = (++sequence).toString(36).padStart(26, \"a\"); } while ([...resources.values()].some(entries => entries.some(entry => entry.id.toLowerCase() === id || [entry.fields, entry.sections, entry.files].some(children => Array.isArray(children) && children.some(child => record(child) && typeof child.id === \"string\" && child.id.toLowerCase() === id)))));\n return id;\n }\n for (const [resource, objects] of Object.entries({ ...options.resources, vault: options.vaults ?? options.resources?.vault ?? [], item: options.items ?? options.resources?.item ?? [], document: options.documents ?? options.resources?.document ?? [], account: options.accounts ?? options.resources?.account ?? [] })) {\n const entries = structuredClone(objects) as OpObject[];\n const ids = new Set<string>();\n for (const entry of entries) {\n if (!record(entry) || typeof entry.id !== \"string\" || !entry.id || ids.has(entry.id.toLowerCase())) throw new Error(\"Invalid or duplicate object ID\");\n ids.add(entry.id.toLowerCase());\n }\n resources.set(resource, entries);\n }\n\n let defaultVault: string | undefined;\n if (options.defaultVault !== undefined) {\n const supplied = options.defaultVault;\n const vault = typeof supplied === \"string\" && supplied ? resources.get(\"vault\")?.find(vault => vault.id.toLowerCase() === supplied.toLowerCase()) : undefined;\n if (!vault) throw new Error(\"defaultVault must identify an existing vault ID\");\n defaultVault = vault.id;\n }\n validateAuthentication(resources, authenticationPolicy);\n\n function vaultReference(value: unknown, source = resources): { id: string; name?: string } {\n const selector = typeof value === \"string\" ? value : record(value) ? value.id : undefined;\n if (typeof selector !== \"string\" || !selector) throw new Error(\"A vault is required\");\n const vault = select(source.get(\"vault\") ?? [], selector);\n return { id: vault.id, ...(vault.name === undefined ? {} : { name: vault.name }) };\n }\n\n for (const item of resources.get(\"item\") ?? []) item.vault = vaultReference(item.vault);\n for (const document of resources.get(\"document\") ?? []) if (document.vault !== undefined) document.vault = vaultReference(document.vault);\n\n const bindings = createBindingManager(resources, authenticationPolicy, clock, (command, context) => Object.hasOwn(adminHooks, command) || Object.hasOwn((context as OpAdminContext).adminHooks ?? {}, command), defaultVault);\n\n return {\n prepareBinding: bindings.prepareBinding,\n validateBinding: bindings.validateBinding,\n cancelBinding: bindings.cancelBinding,\n snapshot() {\n const { vault, item, document, account, ...extensions } = Object.fromEntries(resources);\n return structuredClone({ vaults: vault, items: item, documents: document, accounts: account, resources: extensions, ...(defaultVault === undefined ? {} : { defaultVault }), ...(authenticationPolicy.mode === \"managed\" ? { authentication: authenticationPolicy } : {}) }) as unknown as OpObjectBackendOptions;\n },\n async execute(request, context) {\n context.signal.throwIfAborted();\n const prepared = !context.binding && request.resource === \"plugin\" && request.action === \"inspect\" && request.args.length === 0\n ? await bindings.prepareBinding([request], context) : undefined;\n if (prepared) context = { ...context, binding: prepared.handle };\n async function executeOperation(request: OpBackendRequest, executionResources: Map<string, OpObject[]>): Promise<unknown> {\n request = normalizeObjectRequest(request);\n const authentication = beginAuthentication(request, context, executionResources, authenticationPolicy, clock);\n request = authentication.request;\n const scope = createAccountScope(request, authentication.resources);\n async function executeScoped(resources: Map<string, OpObject[]>): Promise<unknown> {\n const { resource, action, args, flags } = request;\n if ([\"session\", \"session default\"].includes(resource)) throw new Error(\"Session state requires typed authentication hooks\");\n const command = action ? `${resource} ${action}` : resource;\n const batch = args.length === 1 && args[0] === \"-\" && objectBatchCommands.includes(command);\n const targetSelectors = batch ? parseObjectSelectors(request.input) : args;\n const vaulted = resource === \"item\" || resource === \"document\";\n const invocationHooks = { ...adminHooks, ...context.adminHooks };\n if (resource === \"plugin\" && !Object.hasOwn(invocationHooks, command)) {\n const configured = resources.get(\"plugin\") ?? [];\n if (action === \"list\") {\n if (args.length) throw new Error(\"Unexpected arguments\");\n return availablePlugins(configured);\n }\n if (action === \"inspect\" && args.length === 1 && !configured.some(plugin => plugin.id.toLowerCase() === args[0]!.toLowerCase()) && availablePlugins([]).some(plugin => plugin.executable?.toLowerCase() === args[0]!.toLowerCase())) throw new Error(\"Plugin configuration is unavailable\");\n }\n if (Object.hasOwn(invocationHooks, command) || !(resource === \"account\" && [\"create\", \"edit\", \"update\", \"delete\"].includes(action))) {\n const adminContext = { ...context, adminHooks: invocationHooks, nextId };\n const admin = await executeAdmittedAdminRequest(action === \"update\" ? { ...request, action: \"edit\" } : request, adminContext, resources, nextId, scope.account, authentication.sessionId, authentication.recordSignin);\n context.signal.throwIfAborted();\n if (admin.handled) return admin.value;\n }\n if (resource === \"item template\") {\n const templates = resources.get(resource) ?? [];\n if (action === \"list\" && !args.length) return listItemTemplates(templates);\n if (action === \"get\" && args.length === 1) return getItemTemplate(args[0]!, templates);\n throw new Error(\"Invalid item template request\");\n }\n if (resource === \"secret\" && action === \"read\") {\n if (args.length !== 1) throw new Error(\"One secret reference is required\");\n const reference = parseSecretReference(args[0]!);\n const vault = select(resources.get(\"vault\") ?? [], reference.vault);\n const items = (resources.get(\"item\") ?? []).filter(item => item.state !== \"DELETED\" && item.state !== \"ARCHIVED\" && record(item.vault) && item.vault.id === vault.id) as OpItem[];\n const item = select(items, reference.item);\n let candidates: (OpField | OpFile)[] = [...item.fields ?? [], ...item.files ?? []];\n if (reference.section) {\n const sections = new Map<string, OpSection>();\n for (const section of item.sections ?? []) sections.set(section.id, section);\n for (const field of candidates) if (field.section) sections.set(field.section.id, { ...field.section, ...sections.get(field.section.id) });\n const section = select([...sections.values()], reference.section);\n candidates = candidates.filter(field => field.section?.id === section.id);\n }\n const field = select(candidates, reference.field);\n const attribute = reference.query?.attribute ?? reference.query?.attr ?? (Object.hasOwn(field, \"content\") ? \"content\" : \"value\");\n const sshFormat = reference.query?.[\"ssh-format\"];\n if (sshFormat !== undefined) {\n if (!ssh) throw new Error(\"SSH transformation requires an injected hook\");\n if (sshFormat !== \"openssh\" && sshFormat !== \"pkcs1\" && sshFormat !== \"pkcs8\") throw new Error(\"Unsupported SSH format\");\n if (attribute !== \"value\" || field.type !== \"SSHKEY\" || typeof field.value !== \"string\") throw new Error(\"SSH private key field is unavailable\");\n context.signal.throwIfAborted();\n try { return await ssh.transform(field.value, sshFormat); }\n finally { context.signal.throwIfAborted(); }\n }\n if (attribute === \"otp\") {\n if (field.type !== \"OTP\" || typeof field.value !== \"string\") throw new Error(\"OTP field is unavailable\");\n const code = await generateOtp(field.value);\n context.signal.throwIfAborted();\n return code;\n }\n const attributes = item.files?.some(file => file === field) ? [\"type\", \"content\", \"size\", \"id\", \"name\"] : [\"type\", \"value\", \"id\", \"purpose\"];\n if (!attributes.includes(attribute) || !Object.hasOwn(field, attribute)) throw new Error(\"Secret attribute is unavailable\");\n return structuredClone(field[attribute]);\n }\n if (![\"list\", \"get\", \"create\", \"edit\", \"update\", \"delete\", ...(resource === \"item\" ? [\"move\"] : [])].includes(action)) throw new Error(\"Unsupported backend action\");\n if (!resource) throw new Error(\"Resource is required\");\n const objects = resources.get(resource) ?? [];\n let candidates = vaulted ? objects.filter(object => object.state !== \"DELETED\" && (object.state !== \"ARCHIVED\" || flags[\"include-archive\"] === true || (action !== \"list\" && targetSelectors.some(selector => object.id.toLowerCase() === selector.toLowerCase())))) : objects;\n const vaultSelector = action === \"move\" ? flags[\"current-vault\"] : flags.vault;\n if (typeof vaultSelector === \"string\") {\n const vault = vaultReference(vaultSelector, resources);\n candidates = candidates.filter(object => record(object.vault) ? object.vault.id === vault.id : object.vault === vault.id);\n }\n if (action === \"list\") {\n if (args.length) throw new Error(\"List does not accept a selector\");\n if (resource === \"item\") {\n const categories = strings(flags.categories).map(value => value.toUpperCase().split(\" \").join(\"_\"));\n const tags = strings(flags.tags);\n candidates = candidates.filter(object => (!categories.length || categories.includes(String(object.category))) && (!flags.favorite || object.favorite === true) && (!tags.length || tags.some(tag => Array.isArray(object.tags) && object.tags.some(value => typeof value === \"string\" && (value === tag || value.startsWith(`${tag}/`))))));\n }\n return structuredClone(candidates);\n }\n if (action === \"create\") {\n const bulk = resource === \"item\" && Array.isArray(request.input);\n const inputs = bulk ? request.input as unknown[] : [request.input ?? {}];\n if (!inputs.length || inputs.some(input => !record(input))) throw new Error(\"Create requires an object input\");\n const createdItems: OpObject[] = [];\n for (const source of inputs) {\n let input = structuredClone(source) as Record<string, unknown>;\n if (resource === \"item\") {\n const copying = input.id !== undefined;\n for (const key of [\"id\", \"version\", \"created_at\", \"updated_at\", \"last_edited_by\"]) delete input[key];\n const keyType = flags[\"ssh-generate-key\"];\n if (keyType !== undefined && keyType !== false) {\n if (!ssh) throw new Error(\"SSH generation requires an injected hook\");\n let type = keyType === true || keyType === \"\" ? \"ed25519\" : keyType;\n if (typeof type === \"string\") {\n type = type.toLowerCase();\n if (type.startsWith(\"rsa-\")) type = `rsa${type.slice(4)}`;\n }\n if (typeof type !== \"string\" || ![\"ed25519\", \"rsa\", \"rsa2048\", \"rsa3072\", \"rsa4096\"].includes(type)) throw new Error(\"Unsupported SSH key type\");\n const category = flags.category ?? input.category;\n if (category !== undefined && (typeof category !== \"string\" || category.toUpperCase().split(\" \").join(\"_\") !== \"SSH_KEY\")) throw new Error(\"SSH generation requires the SSH Key category\");\n context.signal.throwIfAborted();\n let generated: Awaited<ReturnType<NonNullable<OpObjectBackendOptions[\"ssh\"]>[\"generate\"]>>;\n try { generated = await ssh.generate(type); }\n finally { context.signal.throwIfAborted(); }\n if (generated.category !== \"SSH_KEY\" || !Array.isArray(generated.fields)) throw new Error(\"Invalid generated SSH key\");\n const fields = new Map((Array.isArray(input.fields) ? input.fields : []).map((field: OpField) => [field.id, field]));\n for (const field of generated.fields) fields.set(field.id, structuredClone(field));\n input = { ...input, category: generated.category, fields: [...fields.values()] };\n }\n const category = flags.category ?? input.category;\n if (typeof category === \"string\") {\n if (input.title !== undefined && typeof input.title !== \"string\") throw new Error(\"Item title must be a string\");\n const supplied = typeof input.category === \"string\" && Array.isArray(input.fields) ? { ...input, id: input.category, title: typeof input.title === \"string\" ? input.title : \"\" } : undefined;\n const template = getItemTemplate(category, resources.get(\"item template\") ?? [], supplied);\n const fields = new Map(template.fields.map(field => [field.id, field]));\n if (input.fields !== undefined && !Array.isArray(input.fields)) throw new Error(\"Item fields must be an array\");\n for (const field of input.fields as unknown[] ?? []) {\n if (!record(field) || typeof field.id !== \"string\") throw new Error(\"Item fields require IDs\");\n fields.set(field.id, merge(fields.get(field.id) ?? {}, field) as OpField);\n }\n input = { ...merge(template, input), category: template.category, fields: [...fields.values()] };\n }\n input = itemPatch(input, args[0] === \"-\" ? args.slice(1) : args, { ...flags, \"ssh-generate-key\": false, ...(typeof input.category === \"string\" ? { category: input.category } : {}) }, nextId);\n if (copying) {\n const sectionIds = new Map<string, string>();\n for (const section of input.sections as OpSection[]) {\n const folded = section.id.toLowerCase();\n if (sectionIds.has(folded)) throw new Error(\"Duplicate item section ID\");\n const id = nextId();\n sectionIds.set(folded, id);\n section.id = id;\n }\n for (const field of input.fields as OpField[]) {\n if (!field.purpose && ![\"username\", \"password\", \"notesPlain\"].includes(field.id)) field.id = nextId();\n }\n for (const file of input.files as OpFile[] ?? []) file.id = nextId();\n for (const member of [...input.fields as OpField[], ...input.files as OpFile[] ?? []]) {\n if (member.section) member.section.id = sectionIds.get(member.section.id.toLowerCase()) ?? member.section.id;\n }\n }\n }\n else if (resource === \"vault\") {\n if (args.length > 1) throw new Error(\"One vault name is required\");\n if (args[0] !== undefined) input.name = args[0];\n for (const key of [\"description\", \"icon\", \"allow-admins-to-manage\"]) if (flags[key] !== undefined) input[key] = flags[key];\n validateVaultOptions(input);\n } else if (args.length || request.input === undefined) throw new Error(\"Create requires an object input\");\n let id = input.id;\n if (id === undefined) {\n id = nextId();\n }\n if (typeof id !== \"string\" || !id || objects.some(object => object.id.toLowerCase() === id.toLowerCase())) throw new Error(\"Invalid or duplicate object ID\");\n const created: OpObject = { ...input, id, ...(scope.account !== undefined && resource !== \"account\" ? { account: scope.account } : {}) };\n if (vaulted) {\n created.vault = vaultReference(selectCreationVault(resources.get(\"vault\") ?? [], flags.vault ?? input.vault, defaultVault).id, resources);\n created.state = \"ACTIVE\";\n }\n context.signal.throwIfAborted();\n const current = [...resources.get(resource) ?? [], ...createdItems];\n if (current.some(entry => entry.id.toLowerCase() === created.id.toLowerCase())) throw new Error(\"Invalid or duplicate object ID\");\n createdItems.push(created);\n }\n if (!flags[\"dry-run\"]) resources.set(resource, [...resources.get(resource) ?? [], ...createdItems]);\n return structuredClone(bulk ? createdItems : createdItems[0]);\n }\n if (args.length < 1 || (args.length > 1 && !(resource === \"item\" && [\"edit\", \"update\"].includes(action)))) throw new Error(\"One object selector is required\");\n const targets = (batch ? targetSelectors : [args[0]!]).map(selector => select(candidates, selector));\n if (action === \"get\") {\n const values = await Promise.all(targets.map(async object => {\n if (resource === \"item\") object = deriveItemFieldReferences(object as OpItem);\n if (resource === \"item\" && flags.fields !== undefined) {\n const fields = (object as OpItem).fields ?? [];\n const selected: OpField[] = [];\n for (const selector of strings(flags.fields)) {\n const separator = selector.indexOf(\"=\");\n const key = separator < 0 ? \"label\" : selector.slice(0, separator);\n const value = (separator < 0 ? selector : selector.slice(separator + 1)).toLowerCase();\n if (![\"label\", \"type\"].includes(key)) throw new Error(\"Unsupported field selector\");\n const matches = fields.filter(field => String(field[key] ?? (key === \"label\" ? field.id : \"\")).toLowerCase() === value);\n if (!matches.length) throw new Error(\"Field not found\");\n for (const field of matches) if (!selected.includes(field)) selected.push(field);\n }\n return structuredClone(selected);\n }\n if (resource === \"item\" && flags.otp) {\n const field = (object as OpItem).fields?.find(candidate => candidate.type === \"OTP\");\n if (typeof field?.value !== \"string\") throw new Error(\"OTP field is unavailable\");\n const code = await generateOtp(field.value);\n context.signal.throwIfAborted();\n return code;\n }\n return structuredClone(object);\n }));\n return batch ? resource === \"item\" && flags.fields !== undefined ? values.flat() : values : values[0];\n }\n if (action === \"delete\") {\n if (resource === \"vault\" && targets.some(object => [...resources.values()].some(entries => entries.some(entry => entry.state !== \"DELETED\" && (record(entry.vault) ? entry.vault.id === object.id : entry.vault === object.id))))) throw new Error(\"Vault is not empty\");\n resources.set(resource, vaulted ? objects.map(entry => targets.includes(entry) ? { ...entry, state: flags.archive ? \"ARCHIVED\" : \"DELETED\" } : entry) : objects.filter(entry => !targets.includes(entry)));\n return undefined;\n }\n if (action === \"move\") {\n const destination = vaultReference(flags[\"destination-vault\"], resources);\n const moved = [...new Set(targets)].map(object => {\n const item = { ...structuredClone(object), id: nextId(), vault: destination } as OpItem;\n for (const field of item.fields ?? []) delete field.reference;\n return item;\n });\n resources.set(resource, [...objects.map(entry => targets.includes(entry) ? { ...entry, state: \"DELETED\" } : entry), ...moved]);\n return structuredClone(batch ? moved : moved[0]);\n }\n if (!batch && request.input !== undefined && !record(request.input)) throw new Error(\"Update requires an object input\");\n const patch = (batch ? {} : request.input ?? {}) as Record<string, unknown>;\n const updates = new Map(targets.map(object => {\n if (Object.hasOwn(patch, \"id\") && patch.id !== object.id) throw new Error(\"Object IDs cannot be changed\");\n let updated = merge(object, patch) as OpObject;\n if (resource === \"item\") updated = itemPatch(updated, args.slice(1), flags, nextId) as OpObject;\n if (resource === \"vault\") {\n for (const key of [\"name\", \"description\", \"icon\", \"travel-mode\"]) if (flags[key] !== undefined) updated[key] = flags[key];\n validateVaultOptions(updated);\n }\n if (vaulted) updated.vault = vaultReference(updated.vault, resources);\n return [object, updated] as const;\n }));\n context.signal.throwIfAborted();\n if (!flags[\"dry-run\"]) resources.set(resource, objects.map(entry => updates.get(entry) ?? entry));\n return structuredClone(batch ? targets.map(object => updates.get(object)!) : updates.get(targets[0]!));\n }\n const result = await executeScoped(scope.resources);\n context.signal.throwIfAborted();\n if (context.binding) bindings.validateBinding(context.binding, context);\n scope.commit(result);\n if (defaultVault !== undefined && !authentication.resources.get(\"vault\")?.some(vault => vault.id === defaultVault)) throw new Error(\"Cannot remove the configured default vault\");\n const beforeCommit = new Map(executionResources);\n authentication.commit();\n if (!context.binding) bindings.published(beforeCommit);\n return result;\n }\n try { return await (context.binding ? bindings.execute(request, context, executeOperation) : executeOperation(request, resources)); }\n finally { if (prepared) bindings.cancelBinding(prepared.handle); }\n }\n };\n}\n", "import type { OpBackend, OpBackendContext, OpItem, OpSecretReference } from \"./types.js\";\n\nexport function parseSecretReference(reference: string): OpSecretReference {\n if (reference.slice(0, 5).toLowerCase() !== \"op://\") throw new Error(\"Invalid secret reference scheme\");\n const queryStart = reference.indexOf(\"?\");\n const path = reference.slice(5, queryStart < 0 ? undefined : queryStart);\n const parts = path.split(\"/\");\n const allowed = \"abcdefghijklmnopqrstuvwxyz0123456789-_. \\t\\n\\r\\v\\f\";\n if ((parts.length !== 3 && parts.length !== 4) || parts.some(part => !part || [...part.toLowerCase()].some(character => !allowed.includes(character)))) {\n throw new Error(\"Invalid secret reference path; use IDs for unsupported names\");\n }\n const result: OpSecretReference = { vault: parts[0]!, item: parts[1]!, field: parts[parts.length - 1]! };\n if (parts.length === 4) result.section = parts[2]!;\n if (queryStart >= 0) {\n const query: Record<string, string> = {};\n for (const entry of reference.slice(queryStart + 1).split(\"&\")) {\n const separator = entry.indexOf(\"=\");\n const key = entry.slice(0, separator);\n const value = entry.slice(separator + 1);\n if (separator < 1 || !value || ![\"attribute\", \"attr\", \"ssh-format\"].includes(key) || Object.hasOwn(query, key)) throw new Error(\"Invalid secret reference query\");\n query[key] = value;\n }\n if (query.attribute && query.attr) throw new Error(\"Conflicting attribute parameters\");\n result.query = query;\n }\n return result;\n}\n\nexport function deriveItemFieldReferences(item: OpItem): OpItem {\n const result = structuredClone(item);\n if (result.fields === undefined) return result;\n result.fields = result.fields.map(field => {\n try {\n const parts = [result.vault.id, result.id, ...(field.section === undefined ? [] : [field.section.id]), field.id];\n if (parts.some(part => typeof part !== \"string\" || !part)) throw new Error();\n const reference = `op://${parts.join(\"/\")}`;\n const parsed = parseSecretReference(reference);\n if (parsed.vault !== result.vault.id || parsed.item !== result.id || parsed.section !== field.section?.id || parsed.field !== field.id || parsed.query !== undefined) throw new Error();\n return { ...field, reference };\n } catch {\n throw new Error(\"Cannot derive field reference from item IDs\");\n }\n });\n return result;\n}\n\nexport async function resolveSecretReference(reference: string, backend: OpBackend, context: OpBackendContext): Promise<unknown> {\n context.signal.throwIfAborted();\n parseSecretReference(reference);\n const value = await backend.execute({ resource: \"secret\", action: \"read\", args: [reference], flags: {} }, context);\n context.signal.throwIfAborted();\n return value;\n}\n", "const nativeCrypto = globalThis.crypto;\nif (typeof nativeCrypto?.getRandomValues !== \"function\" || typeof nativeCrypto.randomUUID !== \"function\" || typeof nativeCrypto.subtle?.importKey !== \"function\" || typeof nativeCrypto.subtle.sign !== \"function\") {\n throw new Error(\"Secure Web Crypto is required for op\");\n}\n\nexport const opCrypto = nativeCrypto;\n", "import { opCrypto } from \"#op-crypto\";\n\nfunction decodeBase32(value: string): Uint8Array<ArrayBuffer> {\n const alphabet = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567\";\n const bytes: number[] = [];\n let pending = 0;\n let count = 0;\n let padding = false;\n for (const character of value.toUpperCase()) {\n if (character === \" \" || character === \"\\t\" || character === \"\\n\" || character === \"\\r\") continue;\n if (character === \"=\") { padding = true; continue; }\n const digit = alphabet.indexOf(character);\n if (digit < 0 || padding) throw new Error(\"Invalid OTP secret encoding\");\n pending = (pending << 5) | digit;\n count += 5;\n if (count >= 8) {\n count -= 8;\n bytes.push((pending >>> count) & 255);\n pending &= (1 << count) - 1;\n }\n }\n if (bytes.length === 0 || pending !== 0) throw new Error(\"Invalid OTP secret encoding\");\n return Uint8Array.from(bytes);\n}\n\nexport async function generateOtp(value: string, now = Date.now()): Promise<string> {\n let secret = value;\n let digits = 6;\n let period = 30;\n let algorithm = \"SHA1\";\n if (value.startsWith(\"otpauth://\")) {\n let uri: URL;\n try { uri = new URL(value); } catch { throw new Error(\"Invalid OTP configuration\"); }\n if (uri.hostname !== \"totp\" || uri.username || uri.password || uri.port) throw new Error(\"Invalid OTP configuration\");\n secret = uri.searchParams.get(\"secret\") ?? \"\";\n digits = Number(uri.searchParams.get(\"digits\") ?? \"6\");\n period = Number(uri.searchParams.get(\"period\") ?? \"30\");\n algorithm = (uri.searchParams.get(\"algorithm\") ?? \"SHA1\").toUpperCase();\n }\n if (![6, 8].includes(digits) || !Number.isSafeInteger(period) || period < 1 || !Number.isSafeInteger(now) || now < 0) {\n throw new Error(\"Invalid OTP configuration\");\n }\n const hashes: Record<string, string> = { SHA1: \"SHA-1\", SHA256: \"SHA-256\", SHA512: \"SHA-512\" };\n if (!Object.hasOwn(hashes, algorithm)) throw new Error(\"Invalid OTP algorithm\");\n const rawKey = decodeBase32(secret);\n const counter = new Uint8Array(8);\n new DataView(counter.buffer).setBigUint64(0, BigInt(Math.floor(now / 1000 / period)));\n try {\n const key = await opCrypto.subtle.importKey(\"raw\", rawKey, { name: \"HMAC\", hash: hashes[algorithm] }, false, [\"sign\"]);\n const digest = new Uint8Array(await opCrypto.subtle.sign(\"HMAC\", key, counter));\n const offset = digest[digest.length - 1] & 15;\n const binary = new DataView(digest.buffer).getUint32(offset) & 0x7fffffff;\n return String(binary % 10 ** digits).padStart(digits, \"0\");\n } finally {\n rawKey.fill(0);\n }\n}\n", "import type { OpAuthenticationPolicy, OpBackendContext, OpBackendRequest, OpClock, OpObject, OpSession, OpTerminalAccount } from \"./types.js\";\nimport { beginAuthentication, sameData } from \"./auth.js\";\nimport { objectBatchCommands, parseObjectSelectors } from \"./selectors.js\";\nimport { changeVaultPermissions, expandVaultPermissions } from \"./permissions.js\";\nimport { clearPluginDefaults } from \"./plugin-scopes.js\";\n\nexport interface OpAdminHookResult {\n value?: unknown;\n resources?: Readonly<Record<string, readonly OpObject[]>>;\n authentication?: {\n sessions?: readonly OpSession[];\n terminalAccounts?: readonly OpTerminalAccount[];\n signedInSession?: string;\n };\n}\n\nexport type OpAdminHook = (request: OpBackendRequest, context: OpBackendContext, resources: ReadonlyMap<string, readonly OpObject[]>) => Promise<OpAdminHookResult>;\n\nexport interface OpAdminContext extends OpBackendContext {\n adminHooks?: Readonly<Record<string, OpAdminHook>>;\n nextId?: () => string;\n authenticationPolicy?: OpAuthenticationPolicy;\n clock?: OpClock;\n}\n\nexport const externalCommands = new Set([\n \"account add\", \"signin\", \"service-account create\", \"service-account ratelimit\",\n \"connect server create\", \"connect token create\", \"events-api create\",\n \"user provision\", \"user recovery begin\", \"plugin init\", \"plugin run\",\n \"item share\", \"update\", \"plugin credential import\",\n]);\n\nconst relations: Readonly<Record<string, readonly [string, string, string, string]>> = {\n \"group user\": [\"group\", \"group\", \"user\", \"user\"],\n \"vault user\": [\"vault\", \"vault\", \"user\", \"user\"],\n \"vault group\": [\"vault\", \"vault\", \"group\", \"group\"],\n \"connect vault\": [\"server\", \"connect server\", \"vault\", \"vault\"],\n \"connect group\": [\"server\", \"connect server\", \"group\", \"group\"],\n};\n\nfunction record(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value) && (Object.getPrototypeOf(value) === Object.prototype || Object.getPrototypeOf(value) === null);\n}\n\nfunction merge(target: Record<string, unknown>, patch: Record<string, unknown>): Record<string, unknown> {\n const result = { ...target };\n for (const [key, value] of Object.entries(patch)) {\n Object.defineProperty(result, key, { value: record(value) && record(target[key]) ? merge(target[key], value) : structuredClone(value), enumerable: true, configurable: true, writable: true });\n }\n return result;\n}\n\nfunction select(objects: readonly OpObject[], selector: unknown): OpObject {\n if (typeof selector !== \"string\" || !selector) throw new Error(\"Object selector is required\");\n const folded = selector.toLowerCase();\n const ids = objects.filter(object => object.id.toLowerCase() === folded);\n const matches = ids.length ? ids : objects.filter(object => [object.name, object.title, object.email, object.shorthand, object.url, object.address, object.user_uuid, object.userId].some(value => typeof value === \"string\" && value.toLowerCase() === folded));\n if (matches.length !== 1) throw new Error(matches.length ? \"Ambiguous object selector\" : \"Object not found\");\n return matches[0]!;\n}\n\nfunction selectors(request: OpBackendRequest): string[] {\n if (request.args.length === 1 && request.args[0] === \"-\") {\n return parseObjectSelectors(request.input);\n }\n if (request.args.length !== 1) throw new Error(\"One object selector is required\");\n return [...request.args];\n}\n\nfunction stringList(value: unknown): string[] {\n if (value === undefined) return [];\n const values = typeof value === \"string\" ? value.split(\",\") : value;\n if (!Array.isArray(values) || values.some(entry => typeof entry !== \"string\" || !entry)) throw new Error(\"Invalid list value\");\n return [...new Set(values as string[])];\n}\n\nfunction objectId(resources: ReadonlyMap<string, readonly OpObject[]>): string {\n const used = new Set<string>();\n for (const objects of resources.values()) {\n for (const object of objects) {\n used.add(object.id.toLowerCase());\n for (const children of [object.fields, object.sections, object.files]) {\n if (!Array.isArray(children)) continue;\n for (const child of children) {\n if (record(child) && typeof child.id === \"string\") used.add(child.id.toLowerCase());\n }\n }\n }\n }\n let sequence = 1;\n while (used.has(sequence.toString(36).padStart(26, \"a\"))) sequence++;\n return sequence.toString(36).padStart(26, \"a\");\n}\n\nexport function createAccountScope(request: OpBackendRequest, source: Map<string, OpObject[]>): { resources: Map<string, OpObject[]>; account?: string; commit: (value?: unknown) => void } {\n const accounts = source.get(\"account\") ?? [];\n const globalCommand = request.flags.account === undefined && (request.resource === \"account\" || (request.resource === \"signout\" && request.flags.all === true) || request.resource === \"item template\");\n let selected: OpObject | undefined;\n if (request.flags.account !== undefined) selected = select(accounts, request.flags.account);\n else if (!globalCommand && accounts.length) {\n const session = (source.get(\"session\") ?? []).at(-1);\n if (session) selected = select(accounts, record(session.account) ? session.account.id : session.account);\n else if (accounts.length === 1) selected = accounts[0];\n else throw new Error(\"Account selection is required\");\n }\n if (!selected) return { resources: source, commit() {} };\n const accountId = selected.id;\n const accountReference = (value: unknown): string => select(accounts, record(value) ? value.id : value).id;\n const ownership = (resource: string, object: OpObject, all: ReadonlyMap<string, readonly OpObject[]>, seen = new Set<OpObject>()): string | undefined => {\n if (resource === \"account\") return object.id;\n if (seen.has(object)) return undefined;\n seen.add(object);\n const owners = new Set<string>();\n if (object.account !== undefined) owners.add(accountReference(object.account));\n const links: [string, string][] = [];\n if (object.vault !== undefined) links.push([\"vault\", \"vault\"]);\n if (object.item !== undefined) links.push([\"item\", \"item\"]);\n const relation = relations[resource];\n if (relation) links.push([relation[0], relation[1]], [relation[2], relation[3]]);\n if (resource === \"connect token\") links.push([object.integrationId !== undefined ? \"integrationId\" : \"server\", \"connect server\"]);\n if (resource === \"session\" && object.user !== undefined) links.push([\"user\", \"user\"]);\n for (const [key, target] of links) {\n if (object[key] === undefined || object[key] === \"*\" || object[key] === \"managers\") continue;\n const value = object[key];\n const candidates = all.get(target) ?? [];\n const linked = select(candidates, record(value) ? value.id : value);\n const owner = ownership(target, linked, all, new Set(seen));\n if (owner === undefined) return undefined;\n owners.add(owner);\n }\n if (owners.size > 1) throw new Error(\"Object links cross account boundaries\");\n return owners.values().next().value ?? (accounts.length === 1 ? accountId : undefined);\n };\n const resources = new Map<string, OpObject[]>();\n for (const [resource, objects] of source) {\n const visible = objects.filter(object => {\n if (resource === \"item template\" && object.account === undefined) return true;\n const owner = ownership(resource, object, source);\n if (owner === undefined && resource === request.resource && request.action === \"list\") throw new Error(\"Account ownership is unavailable for this resource\");\n return owner === accountId;\n });\n resources.set(resource, structuredClone(visible));\n }\n for (const [flag, resource] of [[\"vault\", \"vault\"], [\"current-vault\", \"vault\"], [\"destination-vault\", \"vault\"], [\"group\", \"group\"], [\"user\", \"user\"], [\"server\", \"connect server\"]]) {\n const value = request.flags[flag!];\n if (value === undefined) continue;\n if (flag === \"vault\" && request.action === \"create\" && [\"service-account\", \"connect token\"].includes(request.resource)) {\n const grants = typeof value === \"string\" ? [value] : value;\n if (!Array.isArray(grants) || grants.some(grant => typeof grant !== \"string\")) throw new Error(\"Invalid vault grants\");\n for (const grant of grants as string[]) {\n const separator = request.resource === \"service-account\" ? grant.lastIndexOf(\":\") : grant.lastIndexOf(\",\");\n const hasPermissions = separator >= 0 && (request.resource === \"service-account\" || [\"r\", \"w\"].includes(grant.slice(separator + 1)));\n select(resources.get(\"vault\") ?? [], hasPermissions ? grant.slice(0, separator) : grant);\n }\n } else select(resources.get(resource!) ?? [], value);\n }\n if (request.resource === \"connect server\" && request.action === \"create\") {\n for (const vault of stringList(request.flags.vaults)) select(resources.get(\"vault\") ?? [], vault);\n }\n const batchInput = request.args.length === 1 && request.args[0] === \"-\" && objectBatchCommands.includes(`${request.resource} ${request.action}`);\n const inputs = request.resource === \"item\" && request.action === \"create\" && Array.isArray(request.input) ? request.input : [request.input];\n for (const input of batchInput ? [] : inputs) {\n if (!record(input)) continue;\n if (input.account !== undefined && accountReference(input.account) !== accountId) throw new Error(\"Object account differs from selected account\");\n if (input.vault !== undefined) select(resources.get(\"vault\") ?? [], record(input.vault) ? input.vault.id : input.vault);\n }\n const targetResource = request.resource === \"user recovery\" ? \"user\" : request.resource;\n if (request.resource !== \"item template\" && request.args[0] !== undefined && request.args[0] !== \"-\" && [\"get\", \"edit\", \"update\", \"delete\", \"move\", \"share\", \"suspend\", \"reactivate\", \"confirm\", \"inspect\", \"clear\", \"forget\", \"begin\"].includes(request.action)) {\n try { select(resources.get(targetResource) ?? [], request.args[0]); }\n catch (error) {\n let known = true;\n try { select(source.get(targetResource) ?? [], request.args[0]); }\n catch (lookupError) { if (lookupError instanceof Error && lookupError.message === \"Object not found\") known = false; }\n if (known) throw error;\n }\n }\n const initial = structuredClone(resources);\n return {\n resources,\n account: accountId,\n commit(value) {\n const projected = (request.resource === \"environment\" && request.action === \"read\") || (request.resource === \"item\" && request.flags.fields !== undefined);\n for (const entry of projected ? [] : Array.isArray(value) ? value : [value]) {\n if (!record(entry) || typeof entry.id !== \"string\") continue;\n if (entry.account !== undefined && accountReference(entry.account) !== accountId) throw new Error(\"Result account differs from selected account\");\n const id = entry.id.toLowerCase();\n const existing = (source.get(request.resource) ?? []).find(object => object.id.toLowerCase() === id);\n if (existing && ownership(request.resource, existing, source) !== accountId) throw new Error(\"Result belongs to a different account\");\n }\n const changes = new Map<string, OpObject[]>();\n for (const [resource, objects] of resources) {\n const before = initial.get(resource) ?? [];\n if (sameData(objects, before)) continue;\n const originals = new Map(before.map(object => [object.id.toLowerCase(), object]));\n const proposed = new Map(objects.map(object => [object.id.toLowerCase(), object]));\n const current = new Map((source.get(resource) ?? []).map(object => [object.id.toLowerCase(), object]));\n for (const id of new Set([...originals.keys(), ...proposed.keys()])) {\n const original = originals.get(id);\n const replacement = proposed.get(id);\n if (sameData(original, replacement)) continue;\n if (!sameData(current.get(id), original)) throw new Error(\"Object changed during scoped operation\");\n if (replacement === undefined) current.delete(id);\n else {\n const published = structuredClone(replacement);\n if (!original && published.account === undefined && resource !== \"account\" && resource !== \"item template\") published.account = accountId;\n current.set(id, published);\n }\n }\n changes.set(resource, [...current.values()]);\n }\n const candidate = new Map([...source, ...changes]);\n for (const [resource, objects] of changes) {\n const scopedIds = new Set((resources.get(resource) ?? []).map(object => object.id));\n for (const object of objects) {\n if (!scopedIds.has(object.id)) continue;\n if (resource === \"item template\" && object.account === undefined) continue;\n if (ownership(resource, object, candidate) !== accountId) throw new Error(\"Object account differs from selected account\");\n }\n }\n for (const [resource, objects] of changes) source.set(resource, objects);\n }\n };\n}\n\nexport async function executeAdminRequest(request: OpBackendRequest, context: OpAdminContext, resources: Map<string, OpObject[]>): Promise<{ handled: boolean; value?: unknown }> {\n context.signal.throwIfAborted();\n if (context.binding) throw new Error(\"Direct admin execution does not support bindings\");\n const adminContext = context as OpAdminContext;\n const authentication = beginAuthentication(request, context, resources, adminContext.authenticationPolicy ?? { mode: \"object-store\" }, adminContext.clock ?? { now: Date.now });\n request = authentication.request;\n const scope = createAccountScope(request, authentication.resources);\n const nextId = (context as OpAdminContext).nextId ?? (() => objectId(resources));\n const result = await executeAdmittedAdminRequest(request, context, scope.resources, nextId, scope.account, authentication.sessionId, authentication.recordSignin);\n context.signal.throwIfAborted();\n if (result.handled) {\n scope.commit(result.value);\n authentication.commit();\n }\n return result;\n}\n\nexport async function executeAdmittedAdminRequest(request: OpBackendRequest, context: OpBackendContext, resources: Map<string, OpObject[]>, nextId: () => string, selectedAccount?: string, sessionId?: string, recordSignin?: (session: OpSession, nextId: () => string) => void): Promise<{ handled: boolean; value?: unknown }> {\n const { resource, action, args, flags } = request;\n const owned = [\"account\", \"signin\", \"signout\", \"whoami\", \"group\", \"user\", \"user recovery\", \"service-account\", \"connect server\", \"connect token\", \"events-api\", \"environment\", \"plugin\"];\n context.signal.throwIfAborted();\n const command = action ? `${resource} ${action}` : resource;\n if (command === \"signin\" && sessionId !== undefined) {\n if (args.length) throw new Error(\"Unexpected arguments\");\n const session = (resources.get(\"session\") ?? []).find(entry => entry.id === sessionId)!;\n recordSignin?.(session as OpSession, nextId);\n return { handled: true, value: session.mode === \"manual\" ? session.token : undefined };\n }\n if (args.length === 1 && args[0] === \"-\" && objectBatchCommands.includes(command)) {\n const targetResource = resource === \"vault group\" ? \"vault\" : resource;\n const batch = parseObjectSelectors(request.input);\n let candidates = resources.get(targetResource) ?? [];\n if (resource === \"item\") {\n candidates = candidates.filter(object => object.state !== \"DELETED\" && (object.state !== \"ARCHIVED\" || flags[\"include-archive\"] === true || batch.some(selector => object.id.toLowerCase() === selector.toLowerCase())));\n const vaultSelector = action === \"move\" ? flags[\"current-vault\"] : flags.vault;\n if (vaultSelector !== undefined) {\n const vault = select(resources.get(\"vault\") ?? [], vaultSelector);\n candidates = candidates.filter(object => (record(object.vault) ? object.vault.id : object.vault) === vault.id);\n }\n }\n for (const selector of batch) select(candidates, selector);\n }\n const hook = (context as OpAdminContext).adminHooks?.[command];\n if (context.binding && (hook || externalCommands.has(command))) throw new Error(\"External admin hooks do not support bindings\");\n if (hook || externalCommands.has(command)) {\n if (!hook) throw new Error(\"Admin command requires an injected hook\");\n let result: OpAdminHookResult;\n try {\n const scope = context.pluginScope;\n const hookContext = Object.freeze({\n signal: context.signal,\n ...(context.authentication === undefined ? {} : { authentication: Object.freeze({ ...context.authentication }) }),\n ...(scope === undefined ? {} : { pluginScope: Object.freeze({ cwd: scope.cwd, home: scope.home, ...(scope.terminalSession === undefined ? {} : { terminalSession: scope.terminalSession }) }) }),\n });\n result = await hook(structuredClone(request), hookContext, structuredClone(resources));\n if (!record(result) || (result.resources !== undefined && !record(result.resources))) throw new Error();\n if (result.resources && [\"session\", \"session default\", \"app default\"].some(key => Object.hasOwn(result.resources!, key))) throw new Error(\"Use typed authentication hook state\");\n if (result.authentication !== undefined && (!record(result.authentication) || (result.authentication.sessions !== undefined && !Array.isArray(result.authentication.sessions)) || (result.authentication.terminalAccounts !== undefined && !Array.isArray(result.authentication.terminalAccounts)))) throw new Error();\n for (const entries of Object.values(result.resources ?? {})) {\n if (!Array.isArray(entries)) throw new Error();\n const ids = new Set<string>();\n for (const entry of entries) {\n if (!record(entry) || typeof entry.id !== \"string\" || !entry.id || ids.has(entry.id.toLowerCase())) throw new Error();\n ids.add(entry.id.toLowerCase());\n }\n }\n result = structuredClone(result);\n } catch {\n throw new Error(\"Admin hook failed\");\n }\n context.signal.throwIfAborted();\n for (const [key, entries] of Object.entries(result.resources ?? {})) resources.set(key, entries as OpObject[]);\n if (result.authentication?.sessions !== undefined) resources.set(\"session\", [...result.authentication.sessions]);\n if (result.authentication?.terminalAccounts !== undefined) resources.set(\"session default\", [...result.authentication.terminalAccounts]);\n if ([\"signin\", \"account add\"].includes(command) && result.authentication?.sessions?.length) {\n const mode = flags.session === undefined ? context.authentication?.integration ?? \"manual\" : \"manual\";\n const candidates = result.authentication.sessions.filter(session => session.mode === mode && (selectedAccount === undefined || session.account === selectedAccount) && (session.mode !== \"app\" || session.terminalId === context.authentication?.terminalId) && (result.authentication?.signedInSession === undefined || session.id === result.authentication.signedInSession));\n if (candidates.length !== 1) throw new Error(\"Signin hook must identify its authenticated session\");\n recordSignin?.(candidates[0]!, nextId);\n } else if (command === \"signin\") {\n throw new Error(\"Signin hook must provide authenticated session state\");\n }\n return { handled: true, value: structuredClone(result.value) };\n }\n\n if (!owned.includes(resource) && !Object.hasOwn(relations, resource) && !(resource === \"vault\" && action === \"list\" && (flags.user !== undefined || flags.group !== undefined))) return { handled: false };\n\n const working = structuredClone(resources);\n const entries = (key: string): OpObject[] => working.get(key) ?? [];\n const account = (): OpObject => {\n if (flags.account !== undefined) return select(entries(\"account\"), flags.account);\n const session = entries(\"session\").at(-1);\n if (session) return select(entries(\"account\"), session.account);\n if (entries(\"account\").length !== 1) throw new Error(\"Account selection is required\");\n return entries(\"account\")[0]!;\n };\n const session = (): OpObject => {\n const candidates = entries(\"session\").filter(entry => sessionId === undefined || entry.id === sessionId).filter(entry => flags.account === undefined || entry.account === account().id).filter(entry => flags.session === undefined || entry.token === flags.session);\n const selected = candidates.at(-1);\n if (!selected) throw new Error(\"No authenticated session\");\n return selected;\n };\n const remove = (key: string, objects: readonly OpObject[]) => {\n const ids = new Set(objects.map(object => object.id));\n working.set(key, entries(key).filter(object => !ids.has(object.id)));\n for (const [relation, [parent, parentResource, child, childResource]] of Object.entries(relations)) {\n working.set(relation, entries(relation).filter(entry => !(parentResource === key && ids.has(String(entry[parent]))) && !(childResource === key && ids.has(String(entry[child])))));\n }\n if (key === \"connect server\") working.set(\"connect token\", entries(\"connect token\").filter(entry => !ids.has(String(entry.integrationId ?? entry.server))));\n if (key === \"account\" || key === \"user\") working.set(\"session\", entries(\"session\").filter(entry => !ids.has(String(entry[key]))));\n if (key === \"account\") working.set(\"session default\", entries(\"session default\").filter(entry => !ids.has(String(entry.account))));\n if (key === \"account\") working.set(\"app default\", entries(\"app default\").filter(entry => !ids.has(String(entry.account))));\n };\n let value: unknown;\n if (resource === \"whoami\" && action === \"\") {\n if (args.length) throw new Error(\"Unexpected arguments\");\n const current = session();\n value = current.identity ?? select(entries(\"user\"), current.user);\n } else if (resource === \"signout\" && action === \"\") {\n if (args.length || (flags.all === true && flags.account !== undefined)) throw new Error(\"Conflicting account selection\");\n const selectedAccounts = flags.all === true ? entries(\"account\") : [account()];\n const ids = new Set(selectedAccounts.map(entry => entry.id));\n working.set(\"session\", entries(\"session\").filter(entry => !ids.has(String(entry.account))));\n working.set(\"session default\", entries(\"session default\").filter(entry => !ids.has(String(entry.account))));\n if (flags.forget === true) remove(\"account\", selectedAccounts);\n } else if (resource === \"account\") {\n if (action === \"list\") {\n if (args.length) throw new Error(\"Unexpected arguments\");\n value = entries(\"account\");\n } else if (action === \"get\") {\n if (args.length > 1) throw new Error(\"One object selector is required\");\n value = args.length ? select(entries(\"account\"), args[0]) : account();\n } else if (action === \"forget\") {\n if (args.length > 1 || (flags.all === true && (args.length || flags.account !== undefined))) throw new Error(\"Conflicting account selection\");\n remove(\"account\", flags.all === true ? entries(\"account\") : [args.length ? select(entries(\"account\"), args[0]) : account()]);\n } else throw new Error(\"Unsupported admin action\");\n } else if (Object.hasOwn(relations, resource)) {\n const [parent, parentResource, child, childResource] = relations[resource]!;\n if (![\"grant\", \"revoke\", \"list\"].includes(action) || (action === \"list\" && resource.startsWith(\"connect\"))) throw new Error(\"Unsupported admin action\");\n if (action === \"list\") {\n if (args[0] === \"-\" && resource !== \"vault group\") throw new Error(\"Batch selectors are unsupported for this relationship\");\n const owners = selectors(request).map(selector => select(entries(parentResource), selector));\n value = owners.flatMap(owner => entries(resource).filter(entry => entry[parent] === owner.id).map(entry => ({ ...select(entries(childResource), entry[child]), ...(entry.role === undefined ? {} : { role: entry.role }), ...(entry.permissions === undefined ? {} : { permissions: entry.permissions }) })));\n } else {\n if (args.length) throw new Error(\"Unexpected arguments\");\n if (resource === \"connect group\" && flags[\"all-servers\"] === true && flags.server !== undefined) throw new Error(\"Conflicting server selection\");\n const owner = resource === \"connect group\" && flags.server === undefined ? flags[\"all-servers\"] === true ? \"*\" : \"managers\" : select(entries(parentResource), flags[parent]).id;\n const member = select(entries(childResource), flags[child]);\n const existing = entries(resource).find(entry => entry[parent] === owner && entry[child] === member.id);\n const permissions = stringList(flags.permissions);\n const role = typeof flags.role === \"string\" ? flags.role.toLowerCase() : flags.role ?? \"member\";\n if (resource === \"group user\" && (typeof role !== \"string\" || ![\"member\", \"manager\"].includes(role))) throw new Error(\"Invalid group role\");\n const remaining = resource.startsWith(\"vault \") ? changeVaultPermissions(stringList(existing?.permissions), permissions, action === \"grant\" ? \"grant\" : \"revoke\") : [];\n const relation: OpObject = { ...existing, id: existing?.id ?? nextId(), [parent]: owner, [child]: member.id, ...(resource === \"group user\" ? { role } : {}), ...(resource.startsWith(\"vault \") ? { permissions: remaining } : {}) };\n const others = entries(resource).filter(entry => entry !== existing);\n const keep = action === \"grant\" || (resource.startsWith(\"vault \") && remaining.length > 0);\n working.set(resource, keep ? [...others, relation] : others);\n value = keep ? relation : undefined;\n }\n } else if (resource === \"environment\" && action === \"read\") {\n const environment = select(entries(resource), selectors(request)[0]);\n if (!record(environment.variables)) throw new Error(\"Environment variables are unavailable\");\n value = environment.variables;\n } else if (resource === \"plugin\") {\n if (action === \"list\") {\n if (args.length) throw new Error(\"Unexpected arguments\");\n value = entries(resource);\n } else if (action === \"inspect\") {\n if (!args.length) throw new Error(\"Plugin selection capability is unavailable\");\n value = select(entries(resource), selectors(request)[0]);\n } else if (action === \"clear\") {\n if (args.length !== 1 || args[0] === \"-\") throw new Error(\"Exactly one plugin is required\");\n const plugin = select(entries(resource), args[0]);\n const replacement = await clearPluginDefaults(plugin, context, flags.all === true, flags.force === true);\n context.signal.throwIfAborted();\n const current = resources.get(resource) ?? [];\n if (!sameData(current.find(entry => entry.id === plugin.id), plugin)) throw new Error(\"Plugin changed during confirmation\");\n resources.set(resource, current.map(entry => entry.id === plugin.id ? replacement : entry));\n return { handled: true };\n } else throw new Error(\"Unsupported admin action\");\n } else if ([\"group\", \"user\", \"connect server\", \"connect token\", \"vault\"].includes(resource)) {\n let candidates = entries(resource);\n if (resource === \"connect token\" && flags.server !== undefined) {\n const server = select(entries(\"connect server\"), flags.server);\n candidates = candidates.filter(entry => (entry.integrationId ?? entry.server) === server.id);\n }\n if (action === \"list\") {\n if (args.length) throw new Error(\"Unexpected arguments\");\n for (const [relation, [parent, parentResource, child, childResource]] of Object.entries(relations)) {\n const filterKey = resource === parentResource ? child : resource === childResource ? parent : undefined;\n if (!filterKey || flags[filterKey] === undefined) continue;\n const filterResource = resource === parentResource ? childResource : parentResource;\n const filter = select(entries(filterResource), flags[filterKey]);\n candidates = candidates.flatMap(entry => {\n const grant = entries(relation).find(link => link[filterKey] === filter.id && link[resource === parentResource ? parent : child] === entry.id);\n if (resource === \"vault\" && !expandVaultPermissions(stringList(flags.permission)).every(permission => expandVaultPermissions(stringList(grant?.permissions)).includes(permission))) return [];\n return grant ? [{ ...entry, ...(relation === \"group user\" && resource === \"user\" ? { role: grant.role } : {}) }] : [];\n });\n }\n value = candidates;\n } else if (resource === \"group\" && action === \"create\") {\n if (args.length > 1 || (request.input !== undefined && !record(request.input))) throw new Error(\"Create requires an object input\");\n const input = record(request.input) ? request.input : {};\n const name = args[0] ?? input.name;\n const id = input.id ?? nextId();\n if (typeof name !== \"string\" || !name || typeof id !== \"string\" || !id || candidates.some(entry => entry.id.toLowerCase() === id.toLowerCase())) throw new Error(\"Invalid or duplicate object\");\n const created = { ...input, id, name, ...(selectedAccount === undefined ? {} : { account: selectedAccount }), ...(flags.description === undefined ? {} : { description: flags.description }) };\n working.set(resource, [...candidates, created]);\n value = created;\n } else {\n const supported = resource === \"user\" ? [\"get\", \"edit\", \"delete\", \"confirm\", \"suspend\", \"reactivate\"] : [\"get\", \"edit\", \"delete\"];\n if (!supported.includes(action) || resource === \"vault\") throw new Error(\"Unsupported admin action\");\n if (flags.all === true && args.length) throw new Error(\"Conflicting user selection\");\n const targets = resource === \"user\" && action === \"confirm\" && flags.all === true ? candidates.filter(entry => entry.state === \"PENDING\") : resource === \"user\" && flags.me === true && action === \"get\" ? [select(candidates, session().user)] : selectors(request).map(selector => select(candidates, selector));\n if (action === \"get\") {\n value = targets.map(target => {\n const attribute = flags[\"public-key\"] === true ? \"public_key\" : flags.fingerprint === true ? \"fingerprint\" : undefined;\n if (attribute && target[attribute] === undefined) throw new Error(\"User key material is unavailable\");\n return attribute ? target[attribute] : target;\n });\n } else if (action === \"delete\") {\n if (resource === \"connect token\") {\n working.set(resource, entries(resource).map(entry => targets.includes(entry) ? { ...entry, state: \"REVOKED\" } : entry));\n } else remove(resource, targets);\n }\n else {\n const patch = args[0] === \"-\" ? {} : request.input ?? {};\n if (!record(patch)) throw new Error(\"Update requires an object input\");\n value = targets.map(target => {\n if (Object.hasOwn(patch, \"id\") && patch.id !== target.id) throw new Error(\"Object IDs cannot be changed\");\n const updated = merge(target, patch) as OpObject;\n for (const key of [\"name\", \"description\", \"travel-mode\"]) if (flags[key] !== undefined) updated[key] = flags[key];\n if (updated[\"travel-mode\"] !== undefined && ![\"on\", \"off\"].includes(String(updated[\"travel-mode\"]))) throw new Error(\"Invalid travel mode\");\n if (action === \"confirm\" || action === \"reactivate\") {\n if (target.state !== (action === \"confirm\" ? \"PENDING\" : \"SUSPENDED\")) throw new Error(\"Invalid user state transition\");\n updated.state = \"ACTIVE\";\n }\n if (action === \"suspend\") {\n if (target.state !== \"ACTIVE\") throw new Error(\"Invalid user state transition\");\n if (flags[\"deauthorize-devices-after\"] !== undefined) throw new Error(\"Admin command requires an injected hook\");\n updated.state = \"SUSPENDED\";\n working.set(\"session\", entries(\"session\").filter(entry => entry.user !== target.id));\n }\n working.set(resource, entries(resource).map(entry => entry.id === target.id ? updated : entry));\n return updated;\n });\n }\n if (Array.isArray(value) && args[0] !== \"-\" && flags.all !== true) value = value[0];\n }\n } else throw new Error(\"Unsupported admin action\");\n context.signal.throwIfAborted();\n for (const [key, objects] of working) resources.set(key, objects);\n return { handled: true, value: structuredClone(value) };\n}\n", "import type { OpAuthenticationPolicy, OpBackendContext, OpBackendRequest, OpClock, OpObject, OpSession } from \"./types.js\";\n\nfunction record(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value) && (Object.getPrototypeOf(value) === Object.prototype || Object.getPrototypeOf(value) === null);\n}\n\nexport function sameData(left: unknown, right: unknown): boolean {\n if (Object.is(left, right)) return true;\n if (left instanceof Uint8Array && right instanceof Uint8Array) return left.length === right.length && left.every((value, index) => value === right[index]);\n if (left instanceof Date && right instanceof Date) return left.getTime() === right.getTime();\n if (Array.isArray(left) && Array.isArray(right)) return left.length === right.length && left.every((value, index) => sameData(value, right[index]));\n if (!record(left) || !record(right)) return false;\n const keys = Object.keys(left);\n return keys.length === Object.keys(right).length && keys.every(key => Object.hasOwn(right, key) && sameData(left[key], right[key]));\n}\n\nfunction sameAuthorization(left: OpObject | undefined, right: OpObject | undefined): boolean {\n return left !== undefined && right !== undefined && sameData({ ...left, lastActivityAt: 0 }, { ...right, lastActivityAt: 0 });\n}\n\nfunction suspendedUser(session: OpObject, resources: ReadonlyMap<string, readonly OpObject[]>): boolean {\n return typeof session.user === \"string\" && (resources.get(\"user\") ?? []).some(user => user.id === session.user && user.state === \"SUSPENDED\");\n}\n\nexport function validateAuthentication(resources: ReadonlyMap<string, readonly OpObject[]>, policy: OpAuthenticationPolicy): void {\n if (![\"managed\", \"object-store\"].includes(policy.mode)) throw new Error(\"Invalid authentication policy\");\n const sessions = resources.get(\"session\") ?? [];\n const defaults = resources.get(\"session default\") ?? [];\n const appDefaults = resources.get(\"app default\") ?? [];\n if (policy.mode !== \"managed\" && (sessions.length || defaults.length || appDefaults.length)) throw new Error(\"Session state requires explicit managed authentication migration\");\n const accounts = resources.get(\"account\") ?? [];\n if (appDefaults.length > 1 || appDefaults.some(entry => typeof entry.id !== \"string\" || !entry.id || !accounts.some(account => account.id === entry.account))) throw new Error(\"Invalid app account preference\");\n const tokens = new Set<string>();\n const ids = new Set<string>();\n for (const session of sessions) {\n if (typeof session.id !== \"string\" || !session.id || ids.has(session.id.toLowerCase())) throw new Error(\"Invalid session ID\");\n ids.add(session.id.toLowerCase());\n if (typeof session.account !== \"string\" || !accounts.some(account => account.id === session.account)) throw new Error(\"Invalid session account\");\n if (![session.issuedAt, session.lastActivityAt].every(value => typeof value === \"number\" && Number.isFinite(value) && value >= 0) || Number(session.lastActivityAt) < Number(session.issuedAt)) throw new Error(\"Session timestamps require explicit migration\");\n if (session.revokedAt !== undefined && (typeof session.revokedAt !== \"number\" || !Number.isFinite(session.revokedAt) || session.revokedAt < Number(session.issuedAt))) throw new Error(\"Invalid session revocation\");\n if (session.mode === \"manual\") {\n if (typeof session.token !== \"string\" || !session.token || tokens.has(session.token)) throw new Error(\"Invalid manual session token\");\n tokens.add(session.token);\n } else if (session.mode === \"app\") {\n if (typeof session.terminalId !== \"string\" || !session.terminalId || session.token !== undefined) throw new Error(\"Invalid app authorization\");\n } else throw new Error(\"Session mode requires explicit migration\");\n if (session.user !== undefined && (typeof session.user !== \"string\" || !(resources.get(\"user\") ?? []).some(user => user.id === session.user))) throw new Error(\"Invalid session user\");\n }\n const terminals = new Set<string>();\n for (const entry of defaults) {\n if (typeof entry.terminalId !== \"string\" || !entry.terminalId || terminals.has(entry.terminalId) || !accounts.some(account => account.id === entry.account)) throw new Error(\"Invalid terminal account selection\");\n terminals.add(entry.terminalId);\n }\n}\n\nexport function inspectAuthentication(request: OpBackendRequest, context: OpBackendContext, source: Map<string, OpObject[]>, policy: OpAuthenticationPolicy, clock: OpClock) {\n if (request.resource === \"app default\") throw new Error(\"App preference is updated only by signin\");\n validateAuthentication(source, policy);\n const managed = policy.mode === \"managed\";\n const command = request.action ? `${request.resource} ${request.action}` : request.resource;\n const local = [\"signin\", \"signout\", \"account add\", \"account list\", \"account forget\", \"item template list\", \"item template get\", \"plugin list\", \"plugin inspect\", \"plugin clear\", \"completion\"].includes(command);\n const terminalId = context.authentication?.terminalId;\n const integration = context.authentication?.integration === undefined ? \"manual\" : context.authentication.integration;\n if (integration !== \"manual\" && integration !== \"app\") throw new Error(\"Invalid authentication integration mode\");\n if (terminalId !== undefined && (typeof terminalId !== \"string\" || !terminalId)) throw new Error(\"Invalid authentication terminal identity\");\n const admittedAt = clock.now();\n if (!Number.isFinite(admittedAt) || admittedAt < 0) throw new Error(\"Invalid authentication clock\");\n const accounts = source.get(\"account\") ?? [];\n const selectAccount = (selector: unknown): string => {\n if (typeof selector !== \"string\" || !selector) throw new Error(\"Account selection is required\");\n const folded = selector.toLowerCase();\n const ids = accounts.filter(account => account.id.toLowerCase() === folded);\n const matches = ids.length ? ids : accounts.filter(account => [account.name, account.title, account.email, account.shorthand, account.url, account.address, account.user_uuid, account.userId].some(value => typeof value === \"string\" && value.toLowerCase() === folded));\n if (matches.length !== 1) throw new Error(\"Account selection is required\");\n return matches[0]!.id;\n };\n let account = request.flags.account === undefined ? undefined : selectAccount(request.flags.account);\n let session: OpSession | undefined;\n const sessions = (source.get(\"session\") ?? []) as OpSession[];\n if (request.flags.session !== undefined) {\n session = sessions.find(entry => entry.mode === \"manual\" && entry.token === request.flags.session);\n if (!session || (account !== undefined && account !== session.account)) throw new Error(\"Invalid session\");\n account = session.account;\n } else if (managed) {\n account ??= (integration === \"app\" ? source.get(\"app default\")?.[0]?.account : (source.get(\"session default\") ?? []).find(entry => entry.terminalId === terminalId)?.account) as string | undefined;\n if (!local || command === \"signin\") {\n if (local && !account && accounts.length === 1 && integration === \"manual\") account = accounts[0]!.id;\n if (!local && !account) throw new Error(\"Account selection is required\");\n session = integration === \"app\" ? sessions.filter(entry => entry.account === account && entry.mode === \"app\" && entry.terminalId === terminalId).sort((left, right) => right.issuedAt - left.issuedAt)[0] : undefined;\n if (!session && !local) throw new Error(\"No authenticated session\");\n }\n }\n if (session && suspendedUser(session, source)) throw new Error(\"Session user is suspended\");\n if (session && (session.revokedAt !== undefined || admittedAt < session.lastActivityAt || admittedAt - session.lastActivityAt >= (session.mode === \"manual\" ? 1_800_000 : 600_000) || (session.mode === \"app\" && admittedAt - session.issuedAt >= 43_200_000))) {\n if ([\"signin\", \"signout\", \"account forget\"].includes(command)) session = undefined;\n else throw new Error(\"Session expired or revoked\");\n }\n const global = request.resource === \"account\" && ([\"list\", \"add\"].includes(request.action) || request.action === \"forget\" && (request.args.length > 0 || request.flags.all === true)) || request.resource === \"signout\" && request.flags.all === true || request.resource === \"item template\";\n const scopedRequest = account !== undefined && !global ? { ...request, flags: { ...request.flags, account } } : request;\n if (managed && !global && account === undefined && (integration === \"app\" || ![\"signin\", \"signout\"].includes(command) || accounts.length > 1)) throw new Error(\"Account selection is required\");\n return { request: scopedRequest, session, command, local, admittedAt, account, terminalId, integration };\n}\n\nexport function beginAuthentication(request: OpBackendRequest, context: OpBackendContext, source: Map<string, OpObject[]>, policy: OpAuthenticationPolicy, clock: OpClock) {\n const { request: scopedRequest, session, command, local, admittedAt, account, terminalId, integration } = inspectAuthentication(request, context, source, policy, clock);\n const original = structuredClone(source);\n const resources = structuredClone(source);\n let signedIn: { session: OpSession; nextId: () => string } | undefined;\n return {\n request: scopedRequest,\n resources,\n sessionId: session?.id,\n recordSignin(granted: OpSession, nextId: () => string) {\n if (![\"signin\", \"account add\"].includes(command)) throw new Error(\"Unexpected signin result\");\n signedIn = { session: structuredClone(granted), nextId };\n },\n commit() {\n context.signal.throwIfAborted();\n if (session && (suspendedUser(session, source) || !sameAuthorization(session, (source.get(\"session\") ?? []).find(entry => entry.id === session.id)))) throw new Error(\"Authorization changed during operation\");\n if ([\"signin\", \"account add\"].includes(command) && terminalId !== undefined) {\n const defaults = resources.get(\"session default\") ?? [];\n const selected = defaults.filter(entry => entry.terminalId === terminalId).at(-1);\n if (selected) resources.set(\"session default\", defaults.filter(entry => entry.terminalId !== terminalId || entry === selected));\n }\n validateAuthentication(resources, policy);\n const candidate = new Map(source);\n for (const [resource, objects] of resources) {\n const before = original.get(resource) ?? [];\n if (sameData(objects, before)) continue;\n const initial = new Map(before.map(entry => [entry.id.toLowerCase(), entry]));\n const proposed = new Map(objects.map(entry => [entry.id.toLowerCase(), entry]));\n const current = new Map((source.get(resource) ?? []).map(entry => [entry.id.toLowerCase(), entry]));\n for (const id of new Set([...initial.keys(), ...proposed.keys()])) {\n if (sameData(initial.get(id), proposed.get(id))) continue;\n if (!sameData(initial.get(id), current.get(id)) && !(resource === \"session\" && sameAuthorization(initial.get(id), current.get(id)))) throw new Error(command === \"plugin clear\" && resource === \"plugin\" ? \"Plugin changed during confirmation\" : \"Object changed during authenticated operation\");\n const replacement = proposed.get(id);\n if (replacement) current.set(id, resource === \"session\" && sameAuthorization(replacement, current.get(id)) ? { ...replacement, lastActivityAt: Math.max(Number(replacement.lastActivityAt), Number(current.get(id)!.lastActivityAt)) } : replacement);\n else current.delete(id);\n }\n candidate.set(resource, [...current.values()]);\n }\n const invalidatedUsers = new Set((candidate.get(\"user\") ?? []).filter(user => {\n const previous = (source.get(\"user\") ?? []).find(entry => entry.id === user.id);\n return previous?.state !== user.state && (previous?.state === \"SUSPENDED\" || user.state === \"SUSPENDED\");\n }).map(user => user.id));\n if (invalidatedUsers.size) candidate.set(\"session\", (candidate.get(\"session\") ?? []).filter(entry => typeof entry.user !== \"string\" || !invalidatedUsers.has(entry.user)));\n for (const entry of candidate.get(\"session\") ?? []) {\n if (suspendedUser(entry, candidate) && !sameAuthorization(entry, (source.get(\"session\") ?? []).find(existing => existing.id === entry.id))) throw new Error(\"Cannot authorize a suspended user\");\n }\n if (signedIn) {\n const grantedId = signedIn.session.id;\n const granted = (candidate.get(\"session\") ?? []).find(entry => entry.id === grantedId) as OpSession | undefined;\n const mode = request.flags.session === undefined ? integration : \"manual\";\n const signedInAt = clock.now();\n if (!Number.isFinite(signedInAt) || signedInAt < admittedAt || !granted || !sameAuthorization(granted, signedIn.session) || granted.mode !== mode || (account !== undefined && granted.account !== account) || suspendedUser(granted, candidate) || granted.revokedAt !== undefined || signedInAt < granted.lastActivityAt || signedInAt - granted.lastActivityAt >= (granted.mode === \"app\" ? 600_000 : 1_800_000) || (granted.mode === \"app\" && (terminalId === undefined || granted.terminalId !== terminalId || signedInAt - granted.issuedAt >= 43_200_000))) throw new Error(\"Invalid signin authorization\");\n const key = granted.mode === \"app\" ? \"app default\" : \"session default\";\n if (granted.mode === \"app\" || terminalId !== undefined) {\n const matches = (entries: readonly OpObject[]) => granted.mode === \"app\" ? entries : entries.filter(entry => entry.terminalId === terminalId);\n if (!sameData(matches(original.get(key) ?? []), matches(source.get(key) ?? []))) throw new Error(\"Account preference changed during signin\");\n const defaults = candidate.get(key) ?? [];\n const existing = matches(defaults)[0];\n let id = existing?.id;\n while (id === undefined) {\n const proposed = signedIn.nextId();\n if (![...candidate.values()].some(entries => entries.some(entry => entry.id.toLowerCase() === proposed.toLowerCase() || [entry.fields, entry.sections, entry.files].some(children => Array.isArray(children) && children.some(child => record(child) && typeof child.id === \"string\" && child.id.toLowerCase() === proposed.toLowerCase()))))) id = proposed;\n }\n const preference = { id, account: granted.account, ...(granted.mode === \"manual\" ? { terminalId } : {}) };\n candidate.set(key, [...(granted.mode === \"app\" ? [] : defaults.filter(entry => entry.terminalId !== terminalId)), preference]);\n }\n }\n if (session && (!local || command === \"signin\")) {\n const current = (candidate.get(\"session\") ?? []).find(entry => entry.id === session.id) as OpSession | undefined;\n if (current && current.revokedAt === undefined && sameAuthorization(current, session)) {\n candidate.set(\"session\", (candidate.get(\"session\") ?? []).map(entry => entry === current ? { ...current, lastActivityAt: Math.max(current.lastActivityAt, admittedAt) } : entry));\n }\n }\n validateAuthentication(candidate, policy);\n for (const [resource, objects] of candidate) source.set(resource, objects);\n },\n };\n}\n", "export const objectBatchCommands = Object.freeze([\n \"vault get\", \"vault edit\", \"vault delete\", \"item get\", \"item delete\", \"item move\", \"vault group list\", \"document delete\",\n \"group get\", \"group edit\", \"group delete\",\n \"user get\", \"user edit\", \"user delete\", \"user confirm\", \"user reactivate\", \"user suspend\"\n]);\n\nexport function parseObjectSelectors(input: unknown): string[] {\n const selectors: string[] = [];\n const invalid = () => new Error(\"Object selectors are required\");\n const collect = (value: unknown): void => {\n if (Array.isArray(value)) {\n for (const entry of value) collect(entry);\n return;\n }\n if (typeof value === \"string\") {\n if (!value.trim()) throw invalid();\n selectors.push(value);\n return;\n }\n if (value === null || typeof value !== \"object\" || (Object.getPrototypeOf(value) !== Object.prototype && Object.getPrototypeOf(value) !== null)) throw invalid();\n const descriptor = Object.getOwnPropertyDescriptor(value, \"id\");\n if (!descriptor) return;\n if (!(\"value\" in descriptor) || typeof descriptor.value !== \"string\" || !descriptor.value.trim()) throw invalid();\n selectors.push(descriptor.value);\n };\n if (typeof input !== \"string\") collect(input);\n else {\n const source = input.trim();\n if (!source.startsWith(\"{\") && !source.startsWith(\"[\")) {\n for (const line of source.split(\"\\n\")) if (line.trim()) selectors.push(line.trim());\n } else {\n let start = 0;\n let depth = 0;\n let quoted = false;\n let escaped = false;\n for (let index = 0; index < source.length; index++) {\n const character = source[index]!;\n if (depth === 0) {\n if (!character.trim()) { start = index + 1; continue; }\n if (character !== \"{\" && character !== \"[\") throw invalid();\n }\n if (quoted) {\n if (escaped) escaped = false;\n else if (character === \"\\\\\") escaped = true;\n else if (character === '\"') quoted = false;\n } else if (character === '\"') quoted = true;\n else if (character === \"{\" || character === \"[\") depth++;\n else if (character === \"}\" || character === \"]\") {\n depth--;\n if (depth === 0) {\n let value: unknown;\n try { value = JSON.parse(source.slice(start, index + 1)); }\n catch { throw invalid(); }\n collect(value);\n start = index + 1;\n }\n }\n }\n if (depth !== 0 || quoted) throw invalid();\n }\n }\n if (!selectors.length) throw invalid();\n return selectors;\n}\n", "const prerequisites: Readonly<Record<string, readonly string[]>> = {\n view_items: [],\n create_items: [\"view_items\"],\n view_and_copy_passwords: [\"view_items\"],\n edit_items: [\"view_and_copy_passwords\", \"view_items\"],\n archive_items: [\"edit_items\", \"view_and_copy_passwords\", \"view_items\"],\n delete_items: [\"edit_items\", \"view_and_copy_passwords\", \"view_items\"],\n view_item_history: [\"view_and_copy_passwords\", \"view_items\"],\n import_items: [\"create_items\", \"view_items\"],\n export_items: [\"view_item_history\", \"view_and_copy_passwords\", \"view_items\"],\n copy_and_share_items: [\"view_item_history\", \"view_and_copy_passwords\", \"view_items\"],\n print_items: [\"view_item_history\", \"view_and_copy_passwords\", \"view_items\"],\n manage_vault: [],\n};\n\nconst umbrellas: Readonly<Record<string, readonly string[]>> = {\n allow_viewing: [\"view_items\", \"view_and_copy_passwords\", \"view_item_history\"],\n allow_editing: [\"create_items\", \"edit_items\", \"archive_items\", \"delete_items\", \"import_items\", \"export_items\", \"copy_and_share_items\", \"print_items\"],\n allow_managing: [\"manage_vault\"],\n};\n\nconst moveRequirements = [\"view_items\", \"edit_items\", \"archive_items\", \"view_and_copy_passwords\", \"view_item_history\", \"copy_and_share_items\"];\n\nexport function expandVaultPermissions(permissions: readonly string[]): string[] {\n const expanded = new Set<string>();\n for (const permission of permissions) {\n if (Object.hasOwn(umbrellas, permission)) {\n for (const granular of umbrellas[permission]!) expanded.add(granular);\n } else if (Object.hasOwn(prerequisites, permission) || permission === \"move_items\") expanded.add(permission);\n else throw new Error(\"Invalid vault permission\");\n }\n if (moveRequirements.every(permission => expanded.has(permission))) expanded.add(\"move_items\");\n return [...expanded];\n}\n\nexport function changeVaultPermissions(current: readonly string[], requested: readonly string[], action: \"grant\" | \"revoke\"): string[] {\n if (action === \"grant\" && !requested.length) throw new Error(\"Vault permissions are required\");\n if (action === \"revoke\" && !requested.length) return [];\n if (requested.includes(\"move_items\")) throw new Error(\"move_items is derived from its underlying vault permissions\");\n const existing = expandVaultPermissions(current).filter(permission => permission !== \"move_items\");\n const selected = expandVaultPermissions(requested).filter(permission => permission !== \"move_items\");\n const remaining = new Set(action === \"grant\" ? [...existing, ...selected] : existing.filter(permission => !selected.includes(permission)));\n const missing = new Set<string>();\n const dependent = new Set<string>();\n for (const permission of remaining) {\n for (const prerequisite of prerequisites[permission]!) {\n if (!remaining.has(prerequisite)) {\n missing.add(prerequisite);\n dependent.add(permission);\n }\n }\n }\n if (missing.size) {\n throw new Error(action === \"grant\"\n ? `Required vault permissions must be granted explicitly: ${[...missing].sort().join(\", \")}`\n : `Dependent vault permissions must also be revoked: ${[...dependent].sort().join(\", \")}`);\n }\n return expandVaultPermissions([...remaining]);\n}\n", "import type { OpBackendContext, OpObject, PluginDefault, PluginScope } from \"./types.js\";\n\nfunction object(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction absolutePath(value: unknown): { root: string; segments: string[] } {\n const invalid = () => new Error(\"Plugin scope requires normalized absolute paths\");\n if (typeof value !== \"string\" || value.includes(\"\\\\\") || [...value].some(character => character.charCodeAt(0) < 32 || character.charCodeAt(0) === 127)) throw invalid();\n let root: string;\n let remainder: string;\n let windows = false;\n if (value.startsWith(\"//\")) {\n const parts = value.slice(2).split(\"/\");\n if (parts.length < 2 || !parts[0] || !parts[1]) throw invalid();\n root = `//${parts[0]}/${parts[1]}`;\n remainder = value.slice(root.length + 1);\n if (value === `${root}/`) throw invalid();\n windows = true;\n } else if (value.startsWith(\"/\")) {\n root = \"/\";\n remainder = value.slice(1);\n } else if (value.length >= 3 && \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\".includes(value[0]!) && value.slice(1, 3) === \":/\") {\n root = value.slice(0, 3);\n remainder = value.slice(3);\n windows = true;\n } else throw invalid();\n const segments = remainder === \"\" ? [] : remainder.split(\"/\");\n const checked = windows && root.startsWith(\"//\") ? [...root.slice(2).split(\"/\"), ...segments] : segments;\n if (checked.some(segment => !segment || segment === \".\" || segment === \"..\" || (windows && ([...segment].some(character => '<>:\"|?*'.includes(character)) || segment.endsWith(\".\") || segment.endsWith(\" \"))))) throw invalid();\n return { root, segments };\n}\n\nfunction directoryChain(cwd: string, home: string): string[] {\n const current = absolutePath(cwd);\n absolutePath(home);\n const chain: string[] = [];\n for (let length = current.segments.length; length >= 0; length--) {\n const directory = current.root + (length && !current.root.endsWith(\"/\") ? \"/\" : \"\") + current.segments.slice(0, length).join(\"/\");\n chain.push(directory);\n if (directory === home) break;\n }\n return chain;\n}\n\nfunction parseScope(value: unknown): PluginScope {\n if (!object(value)) throw new Error(\"Invalid plugin default scope\");\n if (value.kind === \"global\") return { kind: \"global\" };\n if (value.kind === \"directory\" && typeof value.path === \"string\") {\n absolutePath(value.path);\n return { kind: \"directory\", path: value.path };\n }\n if (value.kind === \"terminal\" && typeof value.terminalSession === \"string\" && value.terminalSession.length > 0) return { kind: \"terminal\", terminalSession: value.terminalSession };\n throw new Error(\"Invalid plugin default scope\");\n}\n\nexport async function clearPluginDefaults(plugin: OpObject, context: OpBackendContext, all: boolean, force: boolean): Promise<OpObject> {\n context.signal.throwIfAborted();\n if (Object.hasOwn(plugin, \"configuration\")) throw new Error(\"Plugin configuration requires explicit scope migration\");\n const trustedScope = context.pluginScope;\n if (!trustedScope) throw new Error(\"Plugin scope context is unavailable\");\n const { cwd, home, terminalSession } = trustedScope;\n const chain = directoryChain(cwd, home);\n if (terminalSession !== undefined && (typeof terminalSession !== \"string\" || !terminalSession.length)) throw new Error(\"Invalid plugin terminal identity\");\n if (plugin.defaults !== undefined && !Array.isArray(plugin.defaults)) throw new Error(\"Invalid plugin defaults\");\n const ids = new Set<string>();\n const scopes = new Set<string>();\n const defaults: PluginDefault[] = (plugin.defaults ?? []).map((entry: unknown) => {\n if (!object(entry) || typeof entry.id !== \"string\" || !entry.id || !object(entry.configuration)) throw new Error(\"Invalid plugin default\");\n const scope = parseScope(entry.scope);\n const key = JSON.stringify(scope);\n if (ids.has(entry.id) || scopes.has(key)) throw new Error(\"Plugin defaults contain duplicate IDs or scopes\");\n ids.add(entry.id);\n scopes.add(key);\n return { id: entry.id, scope, configuration: entry.configuration };\n });\n const applicable = defaults.flatMap(entry => {\n const scope = entry.scope;\n const priority = scope.kind === \"global\" ? chain.length + 1 : scope.kind === \"terminal\" ? scope.terminalSession === terminalSession ? 0 : -1 : chain.indexOf(scope.path) < 0 ? -1 : chain.indexOf(scope.path) + 1;\n return priority < 0 ? [] : [{ entry, priority }];\n }).sort((left, right) => left.priority - right.priority);\n const selected = all ? applicable : applicable.slice(0, 1);\n if (!selected.length) return plugin;\n if (!force) {\n const confirm = context.confirmPluginClear;\n if (!confirm) throw new Error(\"Plugin clear confirmation capability is unavailable\");\n const confirmation = Object.freeze({ pluginId: plugin.id, defaults: Object.freeze(selected.map(({ entry }) => Object.freeze({ id: entry.id, scope: Object.freeze({ ...entry.scope }) }))) });\n let onAbort!: () => void;\n const aborted = new Promise<never>((_resolve, reject) => {\n onAbort = () => reject(new DOMException(\"Plugin clear aborted\", \"AbortError\"));\n context.signal.addEventListener(\"abort\", onAbort, { once: true });\n if (context.signal.aborted) onAbort();\n });\n let accepted: boolean;\n try {\n accepted = await Promise.race([aborted, Promise.resolve().then(() => {\n context.signal.throwIfAborted();\n return confirm(confirmation, Object.freeze({ signal: context.signal }));\n })]);\n } catch {\n if (context.signal.aborted) throw new DOMException(\"Plugin clear aborted\", \"AbortError\");\n throw new Error(\"Plugin clear confirmation failed\");\n } finally {\n context.signal.removeEventListener(\"abort\", onAbort);\n }\n if (accepted !== true) throw new Error(\"Plugin clear was not confirmed\");\n }\n context.signal.throwIfAborted();\n const removed = new Set(selected.map(({ entry }) => entry.id));\n return { ...plugin, defaults: (plugin.defaults as PluginDefault[]).filter(entry => !removed.has(entry.id)) };\n}\n", "const icons = new Set([\n \"airplane\", \"application\", \"art-supplies\", \"bankers-box\", \"brown-briefcase\",\n \"brown-gate\", \"buildings\", \"cabin\", \"castle\", \"circle-of-dots\", \"coffee\",\n \"color-wheel\", \"curtained-window\", \"document\", \"doughnut\", \"fence\", \"galaxy\",\n \"gears\", \"globe\", \"green-backpack\", \"green-gem\", \"handshake\", \"heart-with-monitor\",\n \"house\", \"id-card\", \"jet\", \"large-ship\", \"luggage\", \"plant\", \"porthole\", \"puzzle\",\n \"rainbow\", \"record\", \"round-door\", \"sandals\", \"scales\", \"screwdriver\", \"shop\",\n \"tall-window\", \"treasure-chest\", \"vault-door\", \"vehicle\", \"wallet\", \"wrench\"\n]);\n\nexport function validateVaultOptions(value: Readonly<Record<string, unknown>>): void {\n if (value.icon !== undefined && (typeof value.icon !== \"string\" || !icons.has(value.icon))) throw new Error(\"Invalid vault icon\");\n if (value[\"travel-mode\"] !== undefined && value[\"travel-mode\"] !== \"on\" && value[\"travel-mode\"] !== \"off\") throw new Error(\"Invalid travel mode\");\n}\n", "import type { OpField, OpObject, OpSection } from \"./types.js\";\n\nexport interface OpItemTemplate {\n title: string;\n category: string;\n fields: OpField[];\n sections?: OpSection[];\n [key: string]: unknown;\n}\n\nconst login: OpItemTemplate = {\n title: \"\",\n category: \"LOGIN\",\n fields: [\n { id: \"username\", type: \"STRING\", purpose: \"USERNAME\", label: \"username\", value: \"\" },\n { id: \"password\", type: \"CONCEALED\", purpose: \"PASSWORD\", label: \"password\", password_details: { strength: \"TERRIBLE\" }, value: \"\" },\n { id: \"notesPlain\", type: \"STRING\", purpose: \"NOTES\", label: \"notesPlain\", value: \"\" }\n ]\n};\n\nfunction normalize(value: string): string {\n return value.toUpperCase().split(\" \").join(\"_\");\n}\n\nexport function getItemTemplate(category: string, templates: readonly OpObject[] = [], fallback?: OpObject): OpItemTemplate {\n const selector = normalize(category);\n const matches = templates.filter(template => [template.id, template.name, template.category].some(value => typeof value === \"string\" && normalize(value) === selector));\n if (matches.length > 1) throw new Error(\"Ambiguous item template\");\n let selected = matches[0];\n if (!selected) {\n if (selector === \"LOGIN\") return structuredClone(login);\n if (typeof fallback?.category === \"string\" && normalize(fallback.category) === selector) selected = fallback;\n else throw new Error(\"Item template schema is unavailable\");\n }\n if (typeof selected.category !== \"string\" || !selected.category || typeof selected.title !== \"string\" || !Array.isArray(selected.fields) || selected.fields.some(field => field === null || typeof field !== \"object\" || typeof field.id !== \"string\" || typeof field.type !== \"string\")) throw new Error(\"Invalid item template schema\");\n const result: Record<string, unknown> = structuredClone(selected);\n delete result.id;\n delete result.name;\n return result as OpItemTemplate;\n}\n\nexport function listItemTemplates(templates: readonly OpObject[] = []): string[] {\n const names = new Map<string, string>([[\"LOGIN\", \"Login\"]]);\n for (const template of templates) {\n const schema = getItemTemplate(template.id, templates);\n names.set(normalize(schema.category), template.name ?? schema.category);\n }\n return [...names.values()];\n}\n", "import { createAccountScope, externalCommands } from \"./admin.js\";\nimport { opCrypto } from \"#op-crypto\";\nimport { inspectAuthentication, sameData } from \"./auth.js\";\nimport { parseSecretReference } from \"./references.js\";\nimport { parseObjectSelectors } from \"./selectors.js\";\nimport { selectPluginId } from \"./plugin-selection.js\";\nimport { selectCreationVault } from \"./object-vaults.js\";\nimport type { OpAdminContext } from \"./admin.js\";\nimport type { OpAuthenticationPolicy, OpBackendContext, OpBackendRequest, OpBindingHandle, OpBindingPrepareContext, OpBindingRequestMetadata, OpBindingTarget, OpClock, OpObject, OpPreparedBinding } from \"./types.js\";\n\nfunction record(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value) && (Object.getPrototypeOf(value) === Object.prototype || Object.getPrototypeOf(value) === null);\n}\n\nexport function normalizeObjectRequest(request: OpBackendRequest): OpBackendRequest {\n if (request.resource === \"item\" && request.action === \"get\" && request.args.length === 0 && request.input !== undefined) request = { ...request, args: [\"-\"] };\n if (request.resource === \"item\" && request.action === \"create\" && typeof request.flags.account === \"string\" && typeof request.flags.vault === \"string\" && request.input !== undefined) {\n const inputs = Array.isArray(request.input) ? request.input : [request.input];\n const normalized = inputs.map(input => record(input) ? { ...input, account: request.flags.account, vault: request.flags.vault } : input);\n request = { ...request, input: Array.isArray(request.input) ? normalized : normalized[0] };\n }\n return request;\n}\n\nfunction select(objects: readonly OpObject[], selector: unknown): OpObject {\n if (typeof selector !== \"string\" || !selector) throw new Error(\"Binding target is required\");\n const folded = selector.toLowerCase();\n const ids = objects.filter(object => object.id.toLowerCase() === folded);\n const matches = ids.length ? ids : objects.filter(object => [object.name, object.title, object.label, object.email, object.shorthand, object.url, object.address, object.user_uuid, object.userId].some(value => typeof value === \"string\" && value.toLowerCase() === folded));\n if (matches.length !== 1) throw new Error(\"Binding target is missing or ambiguous\");\n return matches[0]!;\n}\n\nfunction metadata(source: Map<string, OpObject[]>): Map<string, OpObject[]> {\n const section = (value: unknown) => {\n if (!record(value)) throw new Error(\"Invalid section metadata\");\n return { id: value.id, ...(value.label === undefined ? {} : { label: value.label }) };\n };\n const keys = [\"id\", \"name\", \"title\", \"label\", \"email\", \"shorthand\", \"url\", \"address\", \"user_uuid\", \"userId\", \"account\", \"vault\", \"state\", \"category\", \"favorite\", \"tags\", \"group\", \"user\", \"server\", \"integrationId\", \"item\", \"permissions\", \"terminalId\"];\n return new Map([...source].map(([resource, objects]) => [resource, objects.map(object => {\n const result = Object.fromEntries(keys.filter(key => Object.hasOwn(object, key)).map(key => [key, structuredClone(object[key])])) as OpObject;\n if (resource === \"item\") {\n result.fields = (object.fields as OpObject[] | undefined)?.map(field => ({ ...Object.fromEntries([\"id\", \"label\", \"name\", \"type\", \"purpose\"].filter(key => Object.hasOwn(field, key)).map(key => [key, structuredClone(field[key])])), ...(field.section === undefined ? {} : { section: section(field.section) }) }));\n result.files = (object.files as OpObject[] | undefined)?.map(file => ({ id: file.id, name: file.name, ...(file.section === undefined ? {} : { section: section(file.section) }) }));\n result.sections = (object.sections as OpObject[] | undefined)?.map(section);\n }\n return result;\n })]));\n}\n\ninterface Step {\n original: OpBackendRequest;\n resolved: OpBackendRequest;\n dependencies: { resource: string; id?: string }[];\n status: \"pending\" | \"running\" | \"complete\";\n}\n\ninterface Binding {\n generation: number;\n expiresAt: number;\n signal: AbortSignal;\n authentication: OpBackendContext[\"authentication\"];\n pluginScope: OpBackendContext[\"pluginScope\"];\n steps: Step[];\n cancelled: boolean;\n staged?: Map<string, OpObject[]>;\n queue: Promise<void>;\n abort: () => void;\n}\n\nexport function createBindingManager(source: Map<string, OpObject[]>, policy: OpAuthenticationPolicy, clock: OpClock, hasHook: (command: string, context: OpBackendContext) => boolean, defaultVault?: string) {\n const backendId = opCrypto.randomUUID();\n let generation = 0;\n const bindings = new WeakMap<OpBindingHandle, Binding>();\n const environmentMetadata = new WeakMap<OpObject, OpBindingRequestMetadata>();\n function indexEnvironments(): void {\n for (const resource of [\"environment\", \"environment snapshot\"]) {\n for (const object of source.get(resource) ?? []) {\n if (environmentMetadata.has(object)) continue;\n const snapshot = resource === \"environment snapshot\";\n const value = snapshot ? object.snapshot : object;\n let metadata: OpBindingRequestMetadata = {};\n if (record(value) && record(value.variables) && (!snapshot || (value.version === 1 && [\"complete\", \"selected\"].includes(String(value.scope))))) {\n const entries = Object.entries(value.variables);\n if (entries.every(([key, value]) => key && !key.includes(\"=\") && !key.includes(\"\\0\") && (typeof value === \"string\" && !value.includes(\"\\0\") || snapshot && value === null))) {\n metadata = { environment: Object.freeze({\n names: Object.freeze(entries.map(([key]) => key)),\n ...(snapshot ? { unsetNames: Object.freeze(entries.filter(([, value]) => value === null).map(([key]) => key)), scope: value.scope as \"complete\" | \"selected\" } : {}),\n dependenciesComplete: snapshot || entries.every(([, value]) => typeof value === \"string\" && !value.toLowerCase().includes(\"op://\"))\n }) };\n }\n }\n environmentMetadata.set(object, Object.freeze(metadata));\n }\n }\n }\n indexEnvironments();\n function published(before: ReadonlyMap<string, OpObject[]>): void {\n if (before.size !== source.size || [...source].some(([key, objects]) => before.get(key) !== objects)) {\n indexEnvironments();\n generation++;\n }\n }\n const invalid = () => new Error(\"Binding is invalid or no longer current\");\n function cancel(binding: Binding): void {\n binding.cancelled = true;\n binding.staged = undefined;\n binding.steps = [];\n binding.signal.removeEventListener(\"abort\", binding.abort);\n }\n function validate(handle: OpBindingHandle, context: OpBackendContext): Binding {\n const binding = bindings.get(handle);\n if (!binding) throw invalid();\n try {\n context.signal.throwIfAborted();\n binding.signal.throwIfAborted();\n const now = clock.now();\n if (binding.cancelled || generation !== binding.generation || !Number.isFinite(now) || now >= binding.expiresAt || !sameData(binding.authentication, context.authentication) || !sameData(binding.pluginScope, context.pluginScope)) throw invalid();\n for (const step of binding.steps) inspectAuthentication(step.resolved, context, source, policy, clock);\n return binding;\n } catch {\n cancel(binding);\n throw invalid();\n }\n }\n return {\n async prepareBinding(requests: readonly OpBackendRequest[], context: OpBindingPrepareContext): Promise<OpPreparedBinding> {\n context.signal.throwIfAborted();\n if (context.binding || requests.length > 1024) throw new Error(\"Invalid binding plan\");\n context = Object.freeze({ ...context, authentication: structuredClone(context.authentication), pluginScope: structuredClone(context.pluginScope) });\n const preparedGeneration = generation;\n const now = clock.now();\n const expiresAt = context.expiresAt ?? now + 60_000;\n if (!Number.isFinite(now) || !Number.isFinite(expiresAt) || expiresAt <= now) throw new Error(\"Invalid binding deadline\");\n const targets: OpBindingTarget[] = [];\n const requestMetadata: OpBindingRequestMetadata[] = requests.map(() => Object.freeze({}));\n const accounts = new Set<string | null>();\n const view = requests.length ? metadata(source) : new Map<string, OpObject[]>();\n const steps: Step[] = [];\n for (const [requestIndex, detached] of structuredClone(requests).entries()) {\n let request = normalizeObjectRequest(detached);\n const command = `${request.resource} ${request.action}`.trim();\n if (request.action === \"create\" && request.input !== undefined && !(record(request.input) || request.resource === \"item\" && Array.isArray(request.input) && request.input.length > 0 && request.input.every(record))) throw new Error(\"Create requires an object input\");\n const pluginInspect = request.resource === \"plugin\" && request.action === \"inspect\";\n if (hasHook(command, context) || externalCommands.has(command) || request.flags[\"ssh-generate-key\"] !== undefined && request.flags[\"ssh-generate-key\"] !== false || request.flags[\"ssh-format\"] || request.resource === \"plugin\" && !pluginInspect || [\"session\", \"session default\", \"app default\"].includes(request.resource)) throw new Error(\"Operation does not support bindings\");\n if (!pluginInspect && ![\"list\", \"get\", \"create\", \"edit\", \"update\", \"delete\", \"move\", \"read\"].includes(request.action) || request.resource.includes(\" \") && request.resource !== \"environment snapshot\") throw new Error(\"Operation does not support bindings\");\n request = inspectAuthentication(request, context, source, policy, clock).request;\n const scope = createAccountScope(request, view);\n const resources = scope.resources;\n const account = scope.account;\n if (pluginInspect) {\n if (request.args.length > 1 || request.args[0] === \"-\") throw new Error(\"Exactly one plugin is required\");\n if (!request.args.length) request = { ...request, args: [await selectPluginId(resources.get(\"plugin\") ?? [], context, account ?? null)] };\n context.signal.throwIfAborted();\n if (generation !== preparedGeneration) throw invalid();\n }\n accounts.add(account ?? null);\n const dependencies: Step[\"dependencies\"] = [];\n const add = (resource: string, object: OpObject, kind: OpBindingTarget[\"kind\"] = \"object\", parentId?: string): void => {\n targets.push(Object.freeze({ requestIndex, resource, kind, id: object.id, ...(account === undefined ? {} : { account }), ...(parentId === undefined ? {} : { parentId }), revision: String(generation) }));\n if (kind === \"object\") dependencies.push({ resource, id: object.id });\n };\n const flags: Record<string, string | boolean | readonly string[]> = { ...request.flags, ...(account === undefined ? {} : { account }) };\n if (account !== undefined) add(\"account\", select(resources.get(\"account\") ?? [], account));\n for (const key of [\"vault\", \"current-vault\", \"destination-vault\"]) {\n if (flags[key] !== undefined) {\n const vault = select(resources.get(\"vault\") ?? [], flags[key]);\n flags[key] = vault.id;\n add(\"vault\", vault);\n }\n }\n request = { ...request, flags };\n if (request.resource === \"secret\" && request.action === \"read\") {\n if (request.args.length !== 1) throw new Error(\"One secret reference is required\");\n const reference = parseSecretReference(request.args[0]!);\n if (reference.query?.[\"ssh-format\"] !== undefined) throw new Error(\"SSH hooks do not support bindings\");\n const vault = select(resources.get(\"vault\") ?? [], reference.vault);\n const item = select((resources.get(\"item\") ?? []).filter(object => (record(object.vault) ? object.vault.id : object.vault) === vault.id && object.state !== \"ARCHIVED\" && object.state !== \"DELETED\"), reference.item);\n let fields = [...item.fields as OpObject[] ?? [], ...item.files as OpObject[] ?? []];\n let section: OpObject | undefined;\n if (reference.section !== undefined) {\n const sections = new Map((item.sections as OpObject[] ?? []).map(entry => [entry.id, entry]));\n for (const field of fields) if (record(field.section) && typeof field.section.id === \"string\" && !sections.has(field.section.id)) sections.set(field.section.id, field.section as OpObject);\n section = select([...sections.values()], reference.section);\n fields = fields.filter(field => record(field.section) && field.section.id === section!.id);\n add(\"item\", section, \"section\", item.id);\n }\n const field = select(fields, reference.field);\n add(\"vault\", vault);\n add(\"item\", item);\n add(\"item\", field, \"field\", item.id);\n const query = request.args[0]!.indexOf(\"?\");\n request = { ...request, args: [`op://${[vault.id, item.id, ...(section ? [section.id] : []), field.id].join(\"/\")}${query < 0 ? \"\" : request.args[0]!.slice(query)}`] };\n } else {\n const objects = resources.get(request.resource) ?? [];\n const vaulted = [\"item\", \"document\"].includes(request.resource);\n let candidates = objects;\n const vaultId = request.action === \"move\" ? flags[\"current-vault\"] : flags.vault;\n if (vaulted && vaultId !== undefined) candidates = candidates.filter(object => (record(object.vault) ? object.vault.id : object.vault) === vaultId);\n const selected: OpObject[] = [];\n if ([\"list\", \"create\"].includes(request.action)) {\n targets.push(Object.freeze({ requestIndex, resource: request.resource, kind: \"collection\", ...(account === undefined ? {} : { account }), revision: String(generation) }));\n dependencies.push({ resource: request.resource });\n if (request.action === \"list\") {\n if (vaulted) candidates = candidates.filter(object => object.state !== \"DELETED\" && (object.state !== \"ARCHIVED\" || flags[\"include-archive\"] === true));\n if (request.resource === \"item\") {\n const strings = (value: unknown): readonly string[] => typeof value === \"string\" ? value.split(\",\") : Array.isArray(value) ? value : [];\n const categories = strings(flags.categories).map(value => value.toUpperCase().split(\" \").join(\"_\"));\n const tags = strings(flags.tags);\n candidates = candidates.filter(object => (!categories.length || categories.includes(String(object.category))) && (!flags.favorite || object.favorite === true) && (!tags.length || tags.some(tag => Array.isArray(object.tags) && object.tags.some(value => typeof value === \"string\" && (value === tag || value.startsWith(`${tag}/`))))));\n }\n selected.push(...candidates);\n }\n else if (vaulted) {\n const inputs = Array.isArray(request.input) ? request.input : [request.input];\n const resolvedInputs: unknown[] = [];\n for (const input of inputs) {\n const selector = flags.vault ?? (record(input) ? input.vault : undefined);\n const vault = selectCreationVault(resources.get(\"vault\") ?? [], selector, defaultVault);\n add(\"vault\", vault);\n resolvedInputs.push({ ...(record(input) ? input : {}), vault: vault.id });\n }\n request = { ...request, input: Array.isArray(request.input) ? resolvedInputs : resolvedInputs[0] };\n }\n } else {\n const batch = request.args[0] === \"-\";\n const selectors = batch ? parseObjectSelectors(request.input) : request.args.length ? [request.args[0]!] : request.resource === \"account\" && account !== undefined ? [account] : [];\n if (!selectors.length) throw new Error(\"Binding target is required\");\n for (const selector of selectors) {\n const candidatesForSelector = vaulted ? candidates.filter(object => object.state !== \"DELETED\" && (object.state !== \"ARCHIVED\" || flags[\"include-archive\"] === true || object.id.toLowerCase() === selector.toLowerCase())) : candidates;\n selected.push(select(candidatesForSelector, selector));\n }\n if (batch) request = { ...request, input: selected.map(object => ({ id: object.id })) };\n else if (request.args.length) request = { ...request, args: [selected[0]!.id, ...request.args.slice(1)] };\n }\n for (const object of selected) {\n add(request.resource, object);\n if ([\"environment\", \"environment snapshot\"].includes(request.resource) && [\"get\", \"read\"].includes(request.action)) {\n const original = source.get(request.resource)?.find(entry => entry.id === object.id);\n requestMetadata[requestIndex] = original ? environmentMetadata.get(original) ?? Object.freeze({}) : Object.freeze({});\n }\n if (vaulted && object.vault !== undefined) add(\"vault\", select(resources.get(\"vault\") ?? [], record(object.vault) ? object.vault.id : object.vault));\n if (request.resource === \"item\" && request.action === \"get\") {\n const fields = object.fields as OpObject[] ?? [];\n let selectedFields = fields;\n if (flags.fields !== undefined) {\n const selectors = typeof flags.fields === \"string\" ? flags.fields.split(\",\") : Array.isArray(flags.fields) ? flags.fields : [];\n selectedFields = selectors.flatMap(selector => {\n const separator = selector.indexOf(\"=\");\n const key = separator < 0 ? \"label\" : selector.slice(0, separator);\n const value = (separator < 0 ? selector : selector.slice(separator + 1)).toLowerCase();\n if (![\"label\", \"type\"].includes(key)) throw new Error(\"Unsupported field selector\");\n const matches = fields.filter(field => String(field[key] ?? (key === \"label\" ? field.id : \"\")).toLowerCase() === value);\n if (!matches.length) throw new Error(\"Field not found\");\n return matches;\n });\n } else if (flags.otp) selectedFields = fields.filter(field => field.type === \"OTP\").slice(0, 1);\n for (const field of selectedFields) {\n if (record(field.section) && typeof field.section.id === \"string\") add(\"item\", field.section as OpObject, \"section\", object.id);\n add(\"item\", field, \"field\", object.id);\n }\n }\n }\n }\n steps.push({ original: detached, resolved: request, dependencies, status: \"pending\" });\n }\n if (generation !== preparedGeneration) throw invalid();\n if (accounts.size > 1) throw new Error(\"A binding requires one account scope\");\n const handle = Object.freeze({}) as OpBindingHandle;\n const binding: Binding = { generation, expiresAt, signal: context.signal, authentication: structuredClone(context.authentication), pluginScope: structuredClone(context.pluginScope), steps, cancelled: false, queue: Promise.resolve(), abort: () => cancel(binding) };\n bindings.set(handle, binding);\n context.signal.addEventListener(\"abort\", binding.abort, { once: true });\n validate(handle, context);\n return Object.freeze({ backendId, accountId: accounts.values().next().value ?? null, handle, targets: Object.freeze(targets), metadata: Object.freeze(requestMetadata) });\n },\n validateBinding(handle: OpBindingHandle, context: OpBackendContext): void { validate(handle, context); },\n cancelBinding(handle: OpBindingHandle): void {\n const binding = bindings.get(handle);\n if (!binding) throw invalid();\n cancel(binding);\n },\n published,\n async execute(request: OpBackendRequest, context: OpAdminContext, operation: (request: OpBackendRequest, resources: Map<string, OpObject[]>) => Promise<unknown>): Promise<unknown> {\n const handle = context.binding!;\n const binding = validate(handle, context);\n const step = binding.steps.find(candidate => candidate.status === \"pending\" && sameData(candidate.original, request));\n if (!step || hasHook(`${request.resource} ${request.action}`.trim(), context)) { cancel(binding); throw invalid(); }\n step.status = \"running\";\n const previous = binding.queue;\n let release!: () => void;\n binding.queue = new Promise<void>(resolve => { release = resolve; });\n try {\n await previous;\n validate(handle, context);\n binding.staged ??= structuredClone(source);\n for (const dependency of step.dependencies) {\n const original = source.get(dependency.resource);\n const staged = binding.staged.get(dependency.resource);\n if (!sameData(dependency.id === undefined ? original : original?.find(object => object.id === dependency.id), dependency.id === undefined ? staged : staged?.find(object => object.id === dependency.id))) throw invalid();\n }\n const result = await operation(structuredClone(step.resolved), binding.staged);\n validate(handle, context);\n step.status = \"complete\";\n if (binding.steps.every(candidate => candidate.status === \"complete\")) {\n const before = new Map(source);\n for (const [resource, objects] of binding.staged) if (!sameData(source.get(resource), objects)) source.set(resource, objects);\n published(before);\n binding.generation = generation;\n binding.staged = undefined;\n }\n return result;\n } catch (error) {\n cancel(binding);\n throw error;\n } finally { release(); }\n }\n };\n}\n", "import type { OpBackendContext, OpObject } from \"./types.js\";\nimport { availablePlugins } from \"./plugin-catalog.js\";\n\nexport async function selectPluginId(plugins: readonly OpObject[], context: OpBackendContext, accountId: string | null): Promise<string> {\n const { signal, selectPlugin } = context;\n signal.throwIfAborted();\n if (!selectPlugin) throw new Error(\"Plugin selection capability is unavailable\");\n const candidates = Object.freeze(availablePlugins(plugins).flatMap(plugin => {\n const id = plugin.executable ?? plugin.id;\n return id === undefined ? [] : [Object.freeze({ id, name: plugin.plugin_name ?? plugin.name ?? id })];\n }));\n let abort!: () => void;\n let selected: unknown;\n try {\n selected = await Promise.race([\n new Promise<never>((_resolve, reject) => {\n abort = () => reject(new Error(\"Plugin selection cancelled\"));\n signal.addEventListener(\"abort\", abort, { once: true });\n }),\n Promise.resolve().then(() => {\n signal.throwIfAborted();\n return selectPlugin(candidates, Object.freeze({ signal, accountId }));\n })\n ]);\n signal.throwIfAborted();\n } catch {\n signal.throwIfAborted();\n throw new Error(\"Plugin selection failed\");\n } finally { signal.removeEventListener(\"abort\", abort); }\n if (selected === undefined) throw new Error(\"Plugin selection cancelled\");\n if (typeof selected !== \"string\" || !candidates.some(candidate => candidate.id === selected)) throw new Error(\"Invalid plugin selection\");\n const configured = plugins.find(plugin => plugin.id.toLowerCase() === selected.toLowerCase());\n if (!configured) throw new Error(\"Plugin configuration is unavailable\");\n return configured.id;\n}\n", "import type { OpObject } from \"./types.js\";\n\nexport function selectCreationVault(vaults: readonly OpObject[], selector: unknown, defaultVault?: string): OpObject {\n if (selector === undefined) {\n if (defaultVault !== undefined) {\n const vault = vaults.find(vault => vault.id === defaultVault);\n if (!vault) throw new Error(\"Default vault is unavailable in the selected scope\");\n return vault;\n }\n if (vaults.length !== 1) throw new Error(\"Select a vault or configure defaultVault\");\n return vaults[0]!;\n }\n if (selector !== null && typeof selector === \"object\" && !Array.isArray(selector)) selector = (selector as Record<string, unknown>).id;\n if (typeof selector !== \"string\" || !selector) throw new Error(\"A vault is required\");\n const folded = selector.toLowerCase();\n const ids = vaults.filter(vault => vault.id.toLowerCase() === folded);\n const matches = ids.length ? ids : vaults.filter(vault => typeof vault.name === \"string\" && vault.name.toLowerCase() === folded);\n if (matches.length !== 1) throw new Error(matches.length ? \"Ambiguous object selector\" : \"Object not found\");\n return matches[0]!;\n}\n", "import type { OpAdminContext } from \"./admin.js\";\nimport type { OpSelectPlugin } from \"./host-contracts.js\";\n\nexport interface OpBackendRequest {\n resource: string;\n action: string;\n args: readonly string[];\n flags: Readonly<Record<string, string | boolean | readonly string[]>>;\n input?: unknown;\n}\n\nexport interface OpBackendContext {\n signal: AbortSignal;\n readonly binding?: OpBindingHandle;\n readonly authentication?: Readonly<OpAuthenticationContext>;\n readonly pluginScope?: PluginScopeContext;\n readonly selectPlugin?: OpSelectPlugin;\n readonly confirmPluginClear?: (confirmation: PluginClearConfirmation, context: { readonly signal: AbortSignal }) => boolean | Promise<boolean>;\n}\n\ndeclare const bindingBrand: unique symbol;\n\nexport interface OpBindingHandle {\n readonly [bindingBrand]: true;\n}\n\nexport interface OpBindingTarget {\n readonly requestIndex: number;\n readonly resource: string;\n readonly kind: \"object\" | \"collection\" | \"field\" | \"section\";\n readonly id?: string;\n readonly account?: string;\n readonly parentId?: string;\n readonly revision: string;\n}\n\nexport interface OpBindingPrepareContext extends OpBackendContext {\n readonly expiresAt?: number;\n}\n\nexport interface OpPreparedBinding {\n readonly backendId: string;\n readonly accountId: string | null;\n readonly handle: OpBindingHandle;\n readonly targets: readonly OpBindingTarget[];\n readonly metadata: readonly OpBindingRequestMetadata[];\n}\n\nexport interface OpBindingRequestMetadata {\n readonly environment?: {\n readonly names: readonly string[];\n readonly unsetNames?: readonly string[];\n readonly scope?: \"complete\" | \"selected\";\n readonly dependenciesComplete: boolean;\n };\n}\n\nexport type PluginScope =\n | { readonly kind: \"global\" }\n | { readonly kind: \"directory\"; readonly path: string }\n | { readonly kind: \"terminal\"; readonly terminalSession: string };\n\nexport interface PluginScopeContext {\n readonly cwd: string;\n readonly home: string;\n readonly terminalSession?: string;\n}\n\nexport interface PluginDefault {\n readonly id: string;\n readonly scope: PluginScope;\n readonly configuration: Readonly<Record<string, unknown>>;\n}\n\nexport interface PluginClearConfirmation {\n readonly pluginId: string;\n readonly defaults: readonly { readonly id: string; readonly scope: PluginScope }[];\n}\n\nexport interface OpBackend {\n execute(request: OpBackendRequest, context: OpBackendContext): Promise<unknown>;\n prepareBinding?(requests: readonly OpBackendRequest[], context: OpBindingPrepareContext): Promise<OpPreparedBinding>;\n validateBinding?(handle: OpBindingHandle, context: OpBackendContext): void | Promise<void>;\n cancelBinding?(handle: OpBindingHandle): void;\n}\n\nexport interface OpObjectBackend extends OpBackend {\n execute(request: OpBackendRequest, context: OpAdminContext): Promise<unknown>;\n prepareBinding(requests: readonly OpBackendRequest[], context: OpBindingPrepareContext): Promise<OpPreparedBinding>;\n validateBinding(handle: OpBindingHandle, context: OpBackendContext): void;\n cancelBinding(handle: OpBindingHandle): void;\n snapshot(): OpObjectBackendOptions;\n}\n\nexport interface OpObject {\n id: string;\n name?: string;\n title?: string;\n [key: string]: unknown;\n}\n\nexport interface OpObjectReference {\n id: string;\n name?: string;\n}\n\nexport interface OpAccount extends OpObject {\n email?: string;\n url?: string;\n}\n\nexport interface OpClock {\n now(): number;\n}\n\nexport interface OpAuthenticationContext {\n terminalId?: string;\n integration?: \"manual\" | \"app\";\n}\n\nexport interface OpAppAccountSelection extends OpObject {\n account: string;\n}\n\nexport type OpSession = OpObject & {\n account: string;\n user?: string;\n identity?: unknown;\n issuedAt: number;\n lastActivityAt: number;\n revokedAt?: number;\n} & ({ mode: \"manual\"; token: string } | { mode: \"app\"; terminalId: string });\n\nexport interface OpTerminalAccount extends OpObject {\n account: string;\n terminalId: string;\n}\n\nexport interface OpAuthenticationPolicy {\n mode: \"object-store\" | \"managed\";\n}\n\nexport interface OpVault extends OpObject {\n name: string;\n account?: string | OpObjectReference;\n description?: string;\n}\n\nexport interface OpSection extends OpObject {\n label?: string;\n}\n\nexport interface OpField extends OpObject {\n reference?: string;\n label?: string;\n type?: string;\n purpose?: string;\n value?: string;\n section?: OpSection;\n}\n\nexport interface OpFile extends OpObject {\n name: string;\n content?: string | Uint8Array;\n size?: number;\n type?: string;\n section?: OpSection;\n}\n\nexport interface OpItemInput extends OpObject {\n title: string;\n vault: string | OpObjectReference;\n category?: string;\n state?: \"ACTIVE\" | \"ARCHIVED\" | \"DELETED\";\n fields?: readonly OpField[];\n sections?: readonly OpSection[];\n files?: readonly OpFile[];\n tags?: readonly string[];\n}\n\nexport interface OpItem extends OpItemInput {\n vault: OpObjectReference;\n}\n\nexport interface OpDocument extends OpObject {\n vault?: string | OpObjectReference;\n content?: string | Uint8Array;\n state?: \"ACTIVE\" | \"ARCHIVED\" | \"DELETED\";\n tags?: readonly string[];\n}\n\nexport interface OpObjectBackendOptions {\n defaultVault?: string;\n authentication?: OpAuthenticationPolicy;\n clock?: OpClock;\n ssh?: {\n generate: (type: string) => Promise<{ category: \"SSH_KEY\"; fields: readonly OpField[] }>;\n transform: (source: string, format: \"openssh\" | \"pkcs1\" | \"pkcs8\") => string | Promise<string>;\n };\n adminHooks?: OpAdminContext[\"adminHooks\"];\n vaults?: readonly OpVault[];\n items?: readonly OpItemInput[];\n documents?: readonly OpDocument[];\n accounts?: readonly OpAccount[];\n resources?: Readonly<Record<string, readonly OpObject[]>>;\n}\n\nexport interface OpSecretReference {\n vault: string;\n item: string;\n section?: string;\n field: string;\n query?: Readonly<Record<string, string>>;\n}\n"],
5
+ "mappings": ";;;;;;;;;;;AAAA;;;ACAA;;;ACAA;;;ACAA;;;ACAA;;;ACAA;;;ACAA;;;ACAA;AAAA,IAAO,qBAAQ,CAAC,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAI,OAAM,KAAI,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,MAAK,MAAK,OAAM,OAAM,OAAM,MAAK,OAAM,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAI,KAAI,KAAI,OAAM,MAAK,OAAM,OAAM,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,MAAK,MAAK,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,OAAM,MAAK,MAAK,MAAK,MAAK,OAAM,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,MAAK,MAAK,OAAM,MAAK,MAAK,MAAK,MAAK,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,GAAE,GAAE,GAAE,GAAE,MAAK,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,GAAE,GAAE,GAAE,GAAE,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,GAAE,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,OAAM,OAAM,OAAM,MAAK,OAAM,MAAK,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,MAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,MAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,MAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,MAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,MAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,MAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,MAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,MAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,GAAE,GAAE,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,OAAM,OAAM,OAAM,OAAM,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,OAAM,OAAM,OAAM,OAAM,OAAM,MAAK,MAAK,MAAK,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,CAAC;;;ACAr3nD;AAWM,IAAgB,kBAAhB,MAA+B;;EAEd;;;;;EAMnB,YAAmB,QAAQ,OAAK;AAC5B,SAAK,QAAQ;EACjB;;;;;;;EAQU,OAAI;AACV,QAAI,KAAK,OAAO;AACZ,YAAM,IAAI,UAAU,eAAe;IACvC;AACA,WAAO;EACX;;;;AClCJ;AAMO,IAAM,gBAAgB;AAKvB,IAAO,aAAP,MAAiB;;EAEF;;EAGT,WAAW;;EAGF,gBAA0B,CAAA;;;;;;EAO3C,YAAmB,OAA4B;AAC3C,SAAK,QAAQ;EACjB;;;;;;EAOO,gBAAa;AAChB,WAAO,KAAK,YAAY,KAAK,MAAM,UAAU,KAAK,cAAc,WAAW;EAC/E;;;;;;;EAQO,OAAI;AACP,WAAO,KAAK,cAAc,IAAG,KAAM,KAAK,MAAM,KAAK,UAAU,KAAK;EACtE;;;;;;EAOO,SAAS,OAAe;AAC3B,aAAS,QAAQ,MAAM,SAAS,GAAG,SAAS,GAAG,EAAE,OAAO;AACpD,WAAK,cAAc,KAAK,MAAM,KAAK,CAAC;IACxC;EACJ;;;;AC1DJ;AAMO,IAAM,mBAAmB;AAGzB,IAAM,WAAW;;;ACTxB;AAYM,SAAU,QAAQ,OAAa;AACjC,SAAO,SAAS,KAAQ,SAAS;AACrC;AAuBM,SAAU,QAAQ,OAAe,KAAa,KAAW;AAC3D,SAAO,SAAS,OAAO,SAAS;AACpC;;;ALzBM,IAAO,kBAAP,cAA+B,gBAAe;EACxC,OAAO;;EAGR,OAAO,QAAkB;AAC5B,UAAM,OAAO,OAAO,KAAI;AACxB,QAAI,SAAS,eAAe;AACxB,UAAI,KAAK,SAAS,GAAM;AACpB,aAAK,OAAO;AACZ,eAAO,KAAK,KAAI;MACpB;AACA,aAAO;IACX;AACA,QAAI,KAAK,SAAS,GAAM;AACpB,YAAM,OAAO,KAAK;AAClB,UAAI,QAAuB;AAC3B,WAAK,OAAO;AACZ,YAAM,SAAU,OAAO,MAAQ,KAAO;AACtC,YAAM,aAAc,OAAO,MAAQ,MAAO;AAC1C,UAAI,QAAQ,MAAM,IAAM,GAAI,KAAK,QAAQ,MAAM,KAAM,GAAI,GAAG;AACxD,iBAAS,OAAO,cAAc,MAAM,OAAO;MAC/C;AACA,UAAI,SAAS,QAAQ,QAAQ,OAAO,MAAM,KAAK,GAAG;AAC9C,eAAO,QAAS,OAAO;MAC3B;AACA,YAAM,YAAa,SAAS,OAAQ,OAAO,mBAAQ,KAAK,KAAK;AAC7D,UAAI,aAAa,QAAQ,QAAQ,IAAI,GAAG;AACpC,eAAO,MAAM,IAAI;MACrB;AACA,aAAO,aAAa,KAAK,KAAI;IACjC;AACA,QAAI,QAAQ,IAAI,KAAK,SAAS,KAAM;AAChC,aAAO;IACX;AACA,QAAI,QAAQ,MAAM,KAAM,GAAI,GAAG;AAC3B,aAAO,QAAS,MAAO;IAC3B;AACA,QAAI,QAAQ,MAAM,KAAM,GAAI,KAAK,QAAQ,MAAM,KAAM,GAAI,GAAG;AACxD,WAAK,OAAO;AACZ,aAAO;IACX;AACA,WAAO,KAAK,KAAI;EACpB;;;;AMxDJ;;;ACAA;AAQO,IAAM,oBAAuC,CAAA;AAK9C,IAAgB,kBAAhB,MAA+B;;EAE1B,mBAAgB;AACnB,WAAO;EACX;;;;;;EAUU,KAAK,WAAiB;AAC5B,UAAM,IAAI,UAAU,kBAAkB,SAAS,uBAAuB;EAC1E;;;;AC7BJ;;;ACAA;AAMM,IAAO,iBAAP,MAAqB;EACN,MAAM,IAAI,YAAY,KAAO;EAC7B,gBAA4C;;;;;;;;EAS7D,YAAmB,YAA+B,QAAQ,GAAG,eAA2C;AACpG,aAAS,UAAU,OAAO,UAAU,WAAW,QAAQ,EAAE,SAAS;AAC9D,YAAM,YAAY,WAAW,OAAO;AACpC,UAAI,cAAc,KAAM,iBAAiB,QAAQ,WAAW,cAAc,CAAC,KAAK,WAAW,cAAc,CAAC,GAAI;AAC1G;MACJ;AACA,UAAI,aAAa,OAAQ;AACrB,YAAI,KAAK,IAAI,SAAS,MAAM,GAAG;AAC3B,eAAK,IAAI,SAAS,IAAI,UAAU;QACpC;MACJ,OAAO;AACH,aAAK,kBAAkB,oBAAI,IAAG;AAC9B,YAAI,CAAC,KAAK,cAAc,IAAI,SAAS,GAAG;AACpC,eAAK,cAAc,IAAI,WAAW,OAAO;QAC7C;MACJ;IACJ;EACJ;;;;;;;EAQO,OAAO,WAAmB,SAAe;AAC5C,SAAK,IAAI,SAAS,IAAI,UAAU;EACpC;;;;;;;EAQO,IAAI,WAAiB;AACxB,QAAI,aAAa,OAAQ;AACrB,YAAM,UAAU,KAAK,IAAI,SAAS;AAClC,aAAO,YAAY,IAAI,OAAO,UAAU;IAC5C;AACA,WAAO,KAAK,eAAe,IAAI,SAAS,KAAK;EACjD;;;;ADlDJ,IAAM,8BAA8B,CAAE,MAAM,IAAI;AAGhD,IAAI,gBAAuC;AAmBrC,SAAU,mBAAmB,WAAiB;AAChD,oBAAkB,IAAI,eAAe,oBAAS,GAAG,2BAA2B;AAC5E,SAAO,cAAc,IAAI,SAAS;AACtC;;;AFnBM,IAAO,kBAAP,cAA+B,gBAAe;;EAEzC,OAAO,QAAkB;AAC5B,QAAI,YAAY,OAAO,KAAI;AAC3B,QAAI,cAAc,eAAe;AAC7B,aAAO;IACX;AACA,QAAI,QAAQ,SAAS,KAAK,cAAc,KAAQ;AAC5C,aAAO;IACX;AACA,QAAI,cAAc,KAAQ;AACtB,aAAO;IACX;AACA,QAAI,cAAc,MAAQ;AACtB,aAAO;IACX;AACA,QAAI,QAAQ,WAAW,OAAQ,KAAM,GAAG;AACpC,aAAO,YAAY,QAAS;IAChC;AACA,QAAI,cAAc,MAAQ;AACtB,kBAAY;IAChB;AACA,UAAM,QAAQ,mBAAmB,SAAS;AAC1C,QAAI,SAAS,MAAM;AACf,aAAO,KAAK,KAAK,SAAS;IAC9B;AACA,UAAM,OAAO,KAAK,MAAM,QAAQ,GAAG;AAEnC,UAAM,aAAc,OAAO,KAAQ,MAAO;AAC1C,UAAM,QAAQ,QAAQ;AACtB,UAAM,SAAU,QAAQ,KAAQ,KAAO;AACvC,WAAO,CAAE,OAAO,YAAY,QAAQ,MAAM;EAC9C;;;;AI9CJ;AASA,IAAM,YAAY,oBAAI,IAAG;AAWnB,SAAU,iBAAiB,MAAc,QAA2B,SAClE,SAA2B;AAC/B,QAAM,WAAW,IAAI,SAAS,MAAM,SAAS,OAAO;AACpD,aAAW,SAAS,QAAQ;AACxB,cAAU,IAAI,OAAO,QAAQ;EACjC;AACA,SAAO;AACX;AASM,SAAU,YAAY,OAAa;AACrC,QAAM,WAAW,UAAU,IAAI,MAAM,KAAI,EAAG,YAAW,CAAE;AACzD,MAAI,YAAY,MAAM;AAClB,UAAM,IAAI,WAAW,2BAA2B,KAAK,EAAE;EAC3D;AACA,SAAO;AACX;AAKM,IAAO,WAAP,MAAe;;EAEA;;EAGA;;EAGA;;;;;;;;EASjB,YAAmB,MAAc,SAA6B,SAA2B;AACrF,SAAK,OAAO;AACZ,SAAK,UAAU;AACf,SAAK,UAAU;EACnB;;;;;;EAOO,UAAO;AACV,WAAO,KAAK;EAChB;;;;;;;;EASO,cAAc,OAAe;AAChC,WAAO,IAAI,KAAK,QAAQ,KAAK;EACjC;;;;;;EAOO,gBAAa;AAChB,WAAO,IAAI,KAAK,QAAO;EAC3B;;;;AXxFJ,iBACI,aACA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;GAEJ,iBACA,eAAe;;;AYtBnB;;;ACAA;;;ACAA;AAAA,IAAO,qBAAQ,CAAC,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,MAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,MAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,MAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAI,KAAI,KAAI,KAAI,OAAM,OAAM,MAAK,OAAM,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,MAAK,MAAK,OAAM,KAAI,OAAM,OAAM,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,MAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,MAAK,OAAM,OAAM,MAAK,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,MAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,MAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,MAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,MAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,MAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,MAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,MAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,MAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,MAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,MAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,MAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,MAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,MAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,MAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,MAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,MAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,OAAM,KAAK;;;ACA1w3I;AAAA,IAAO,yBAAQ,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,GAA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",
6
+ "names": ["TextDecoder", "TextEncoder", "TextDecoder", "metadata", "command", "word", "width", "name", "definition", "previous", "selectors", "pending", "writeOptions", "destination", "metadata", "end", "metadata", "metadata", "result", "value", "bytes", "record", "account", "selectors", "record", "object", "record", "object", "session", "object", "record", "entries", "template", "vault", "record", "select", "object", "metadata", "value", "field", "strings", "selectors", "record", "section", "matches", "field", "merge", "select", "object", "vault", "request", "resources", "item", "candidates", "category", "template", "id", "record", "cancellable", "metadata", "source", "createOpCommand"]
7
+ }