@plugjs/cov8-html 0.0.4 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/public/report.js DELETED
@@ -1 +0,0 @@
1
- window.__initCoverage__({"results":{"buffers.ts":{"code":"import { BUFFERS } from './constants'\n\nconst pool: Buffer[] = new Array(BUFFERS.POOL_SIZE)\nlet offset = -1\n\n/** A `RecyclableBuffer` is a `Buffer` that can be recycled by a pool. */\nexport interface RecyclableBuffer extends Buffer {\n /** Recycle this buffer. */\n recycle(): void\n}\n\n/**\n * Allocate a {@link RecyclableBuffer} of _size_ bytes.\n *\n * Up to {@link BUFFERS.POOL_SIZE} (64) buffers will be recycled once their\n * `recycle()` method is called _if_ their size is not bigger than\n * {@link BUFFERS.BUFFER_SIZE} (8192 bytes).\n */\nexport function allocateBuffer(size: number): RecyclableBuffer {\n if (size > BUFFERS.BUFFER_SIZE) {\n const buffer = Buffer.allocUnsafeSlow(size) as RecyclableBuffer\n buffer.recycle = () => void 0\n return buffer\n }\n\n const buffer = offset >= 0 ? pool[offset--] : Buffer.allocUnsafeSlow(BUFFERS.BUFFER_SIZE)\n const recyclable = buffer.subarray(0, size) as RecyclableBuffer\n let recycled = false\n recyclable.recycle = (): void => queueMicrotask(() => {\n if ((offset >= BUFFERS.POOL_SIZE) || recycled) return\n pool[++offset] = buffer\n recycled = true\n })\n\n return recyclable as RecyclableBuffer\n}\n","codeCoverage":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,1,1,1,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,32166,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,-2,-2,-2,-2,-2,-2,-2,-2,32166,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,32166,32166,32166,32166,32164,32164,32164,32164,32164,32164,32164,32164,32164,32164,32164,32164,32164,32164,32164,32164,32164,32164,32164,32164,32164,32164,32164,32164,32164,32164,32164,32164,32164,793,793,793,793,793,793,793,793,793,793,793,793,793,793,32164,32164,32164,31371,31371,31371,31371,31371,31371,31371,31371,31371,31371,31371,31371,31371,31371,31371,31371,31371,31371,31371,31371,31371,31371,31371,31371,31371,31371,31371,31371,31371,31371,31371,31371,31371,31371,31371,31371,31371,31371,31371,31371,31371,31371,31371,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,20786,20786,-2,-2,-2,-2,-2,-2,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,824,824,824,824,824,824,824,824,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,20786,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,20786,20786,20786,20786,20786,824,824,824,824,824,824,824,824,824,824,824,824,824,824,824,20786,20786,20786,20786,20786,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,32166,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,32166,32166,-2],"nodeCoverage":{"coveredNodes":112,"missingNodes":0,"ignoredNodes":0,"totalNodes":112,"coverage":100}},"client.ts":{"code":"import assert from 'assert'\nimport { types } from 'util'\n\nimport { ClusterAdapter, ClusterOptions } from './cluster'\nimport { EMPTY_BUFFER, FLAGS } from './constants'\nimport { typedArrayFlags } from './internals'\nimport { Adapter, AdapterResult, Counter, Stats } from './types'\n\n/** JSON replacere function serializing `bigint`, {@link Date}, {@link Set} and {@link Map}. */\nfunction replacer(this: any, key: string, value: any): any {\n if (typeof this[key] === 'bigint') return [ '\\0__$BIGINT$__\\0', this[key].toString() ]\n if (this[key] instanceof Date) return [ '\\0__$DATE$__\\0', this[key].toISOString() ]\n if (this[key] instanceof Set) return [ '\\0__$SET$__\\0', ...value ]\n if (this[key] instanceof Map) return [ '\\0__$MAP$__\\0', ...value.entries() ]\n return value\n}\n\n/** JSON reviver function deserializing `bigint`, {@link Date}, {@link Set} and {@link Map}. */\nfunction reviver(this: any, key: string, value: any): any {\n void key // ignore parameter\n if (Array.isArray(value)) {\n switch (value[0]) {\n case '\\0__$BIGINT$__\\0': return BigInt(value[1])\n case '\\0__$DATE$__\\0': return new Date(value[1])\n case '\\0__$SET$__\\0': return new Set(value.slice(1))\n case '\\0__$MAP$__\\0': return new Map(value.slice(1))\n }\n }\n return value\n}\n\n/** Convert a {@link Serializable} or {@link Appendable} value into a {@link Buffer}. */\nfunction toBuffer<T>(value: Serializable | Appendable, options: T): [ Buffer, T & { flags: number } ] {\n if (Buffer.isBuffer(value)) return [ value, { ...options, flags: FLAGS.BUFFER } ]\n\n switch (typeof value) {\n case 'bigint':\n return [ Buffer.from(value.toString(), 'utf-8'), { ...options, flags: FLAGS.BIGINT } ]\n case 'boolean':\n return [ Buffer.alloc(1, value ? 0xff : 0x00), { ...options, flags: FLAGS.BOOLEAN } ]\n case 'number':\n return [ Buffer.from(value.toString(), 'utf-8'), { ...options, flags: FLAGS.NUMBER } ]\n case 'string':\n return [ Buffer.from(value, 'utf-8'), { ...options, flags: FLAGS.STRING } ]\n case 'object':\n break // more checks below...\n default:\n assert.fail(`Unable to store value of type \"${typeof value}\"`)\n }\n\n // typed arrays are special\n if (types.isTypedArray(value)) {\n const flags = typedArrayFlags(value)\n const buffer = Buffer.from(value.buffer, value.byteOffset, value.byteLength)\n return [ buffer, { ...options, flags } ]\n }\n\n // null is also special...\n if (value === null) return [ EMPTY_BUFFER, { ...options, flags: FLAGS.NULL } ]\n\n // any other \"object\" gets serialized as JSON\n const json = JSON.stringify(value, replacer)\n return [ Buffer.from(json, 'utf-8'), { ...options, flags: FLAGS.JSON } ]\n}\n\n/** Node's own types doesn't provide this... Make our own */\ntype TypedArrayConstructor<T extends NodeJS.TypedArray> = {\n new (buffer: ArrayBuffer, offset?: number, length?: number): T\n BYTES_PER_ELEMENT: number\n}\n\nfunction fromBuffer<T extends Serializable>(result: AdapterResult): ClientResult<T> {\n try {\n const { flags, value, cas } = result\n switch (flags) {\n case FLAGS.BIGINT:\n return { value: BigInt(value.toString('utf-8')) as T, cas }\n case FLAGS.BOOLEAN:\n return { value: !!value[0] as T, cas }\n case FLAGS.NUMBER:\n return { value: Number(value.toString('utf-8' )) as T, cas }\n case FLAGS.STRING:\n return { value: value.toString('utf-8' ) as T, cas }\n\n case FLAGS.NULL:\n return { value: null as T, cas }\n case FLAGS.JSON:\n return { value: JSON.parse(value.toString('utf-8' ), reviver) as T, cas }\n\n case FLAGS.UINT8ARRAY:\n return { value: makeTypedArray(Uint8Array, value) as T, cas }\n case FLAGS.UINT8CLAMPEDARRAY:\n return { value: makeTypedArray(Uint8ClampedArray, value) as T, cas }\n case FLAGS.UINT16ARRAY:\n return { value: makeTypedArray(Uint16Array, value) as T, cas }\n case FLAGS.UINT32ARRAY:\n return { value: makeTypedArray(Uint32Array, value) as T, cas }\n case FLAGS.INT8ARRAY:\n return { value: makeTypedArray(Int8Array, value) as T, cas }\n case FLAGS.INT16ARRAY:\n return { value: makeTypedArray(Int16Array, value) as T, cas }\n case FLAGS.INT32ARRAY:\n return { value: makeTypedArray(Int32Array, value) as T, cas }\n case FLAGS.BIGUINT64ARRAY:\n return { value: makeTypedArray(BigUint64Array, value) as T, cas }\n case FLAGS.BIGINT64ARRAY:\n return { value: makeTypedArray(BigInt64Array, value) as T, cas }\n case FLAGS.FLOAT32ARRAY:\n return { value: makeTypedArray(Float32Array, value) as T, cas }\n case FLAGS.FLOAT64ARRAY:\n return { value: makeTypedArray(Float64Array, value) as T, cas }\n\n case FLAGS.BUFFER:\n default:\n return { value: Buffer.from(value) as T, cas }\n }\n } finally {\n result.recycle()\n }\n}\n\n/** Create a {@link NodeJS.TypedArray} copying the contents of its source {@link Buffer} */\nfunction makeTypedArray<T extends NodeJS.TypedArray>(\n constructor: TypedArrayConstructor<T>,\n source: Buffer,\n): T {\n const clone = Buffer.from(source)\n const { buffer, byteOffset, byteLength } = clone\n return new constructor(buffer, byteOffset, byteLength / constructor.BYTES_PER_ELEMENT)\n}\n\n/* ========================================================================== */\n\n/** Types that can be serialized by our {@link MemxClient}. */\nexport type Serializable = bigint | string | number | boolean | null | object\n\n/** Types that can be appended/prepended by our {@link MemxClient}. */\nexport type Appendable = string | NodeJS.TypedArray\n\n/** The `ClientResult` interface associate a value with its _CAS_. */\nexport interface ClientResult<T extends Serializable> {\n /** The value returned by the {@link MemxClient} */\n value: T\n /** The _CAS_ of the value being returned */\n cas: bigint\n}\n\n/**\n * A `Client` represents a high-level client for a _Memcached_ server.\n */\nexport class MemxClient {\n #adapter!: Adapter\n #prefix: string\n\n /** Construct a new {@link MemxClient} from environment variables */\n constructor()\n /** Construct a new {@link MemxClient} wrapping an existing {@link Adapter} */\n constructor(adapter: Adapter)\n /** Construct a new {@link MemxClient} given the specified {@link ClusterOptions} */\n constructor(options: ClusterOptions)\n\n constructor(adapterOrOptions?: Adapter | ClusterOptions) {\n if (! adapterOrOptions) {\n this.#adapter = new ClusterAdapter()\n } else if ('get' in adapterOrOptions) {\n this.#adapter = adapterOrOptions\n } else if ('hosts' in adapterOrOptions) {\n this.#adapter = new ClusterAdapter(adapterOrOptions)\n }\n\n this.#prefix = ''\n\n assert(this.#adapter, 'Invalid client constructor arguments')\n }\n\n /** Return the {@link Adapter} backing this {@link MemxClient} instance */\n get adapter(): Adapter {\n return this.#adapter\n }\n\n /** Return the prefix prepended to all keys managed by this {@link MemxClient} */\n get prefix(): string {\n return this.#prefix\n }\n\n /** Return a new {@link MemxClient} prefixing keys with the specified `string` */\n withPrefix(prefix: string): MemxClient {\n assert(prefix, 'Invalid prefix')\n const client = new MemxClient(this.#adapter)\n client.#prefix = prefix\n return client\n }\n\n /** Get the value (or `undefined`) associated with the given key */\n async get<T extends Serializable>(key: string): Promise<T | undefined> {\n const result = await this.#adapter.get(this.#prefix + key)\n return result && fromBuffer<T>(result).value\n }\n\n /** Get the value (or `undefined`) associated with the given key, and update its TTL */\n async gat<T extends Serializable>(key: string, ttl: number): Promise<T | undefined> {\n const result = await this.#adapter.gat(this.#prefix + key, ttl)\n return result && fromBuffer<T>(result).value\n }\n\n /** Get the value and _CAS_ associated with the given key */\n async getc<T extends Serializable>(key: string): Promise<ClientResult<T> | undefined> {\n const result = await this.#adapter.get(this.#prefix + key)\n return result && fromBuffer(result)\n }\n\n /** Get the value and _CAS_ associated with the given key, and update its TTL */\n async gatc<T extends Serializable>(key: string, ttl: number): Promise<ClientResult<T> | undefined> {\n const result = await this.#adapter.gat(this.#prefix + key, ttl)\n return result && fromBuffer(result)\n }\n\n async set(key: string, value: Serializable, options?: { cas?: bigint, ttl?: number }): Promise<bigint | undefined> {\n return this.#adapter.set(this.#prefix + key, ...toBuffer(value, options))\n }\n\n async add(key: string, value: Serializable, options?: { ttl?: number }): Promise<bigint | undefined> {\n return this.#adapter.add(this.#prefix + key, ...toBuffer(value, options))\n }\n\n async replace(key: string, value: Serializable, options?: { cas?: bigint, ttl?: number }): Promise<bigint | undefined> {\n return this.#adapter.replace(this.#prefix + key, ...toBuffer(value, options))\n }\n\n append(\n key: string,\n value: Appendable,\n options?: { cas?: bigint },\n ): Promise<boolean> {\n return this.#adapter.append(this.#prefix + key, ...toBuffer(value, options))\n }\n\n prepend(\n key: string,\n value: Appendable,\n options?: { cas?: bigint },\n ): Promise<boolean> {\n return this.#adapter.prepend(this.#prefix + key, ...toBuffer(value, options))\n }\n\n async increment(\n key: string,\n delta?: bigint | number,\n options?: { initial?: bigint | number, cas?: bigint, ttl?: number },\n ): Promise<Counter | undefined> {\n const counter = await this.#adapter.increment(this.#prefix + key, delta, options)\n\n if ((options?.initial !== undefined) && (counter?.value === BigInt(options.initial))) {\n const cas = await this.replace(key, counter.value, { cas: counter.cas, ttl: options.ttl })\n counter.cas = cas ?? counter.cas\n }\n return counter\n }\n\n async decrement(\n key: string,\n delta?: bigint | number,\n options?: { initial?: bigint | number, cas?: bigint, ttl?: number },\n ): Promise<Counter | undefined> {\n const counter = await this.#adapter.decrement(this.#prefix + key, delta, options)\n\n if ((options?.initial !== undefined) && (counter?.value === BigInt(options.initial))) {\n const cas = await this.replace(key, counter.value, { cas: counter.cas, ttl: options.ttl })\n counter.cas = cas ?? counter.cas\n }\n return counter\n }\n\n touch(\n key: string,\n ttl?: number,\n ): Promise<boolean> {\n return this.#adapter.touch(this.#prefix + key, ttl)\n }\n\n delete(\n key: string,\n options?: { cas?: bigint },\n ): Promise<boolean> {\n return this.#adapter.delete(this.#prefix + key, options)\n }\n\n flush(ttl?: number): Promise<void> {\n return this.#adapter.flush(ttl)\n }\n\n noop(): Promise<void> {\n return this.#adapter.noop()\n }\n\n quit(): Promise<void> {\n return this.#adapter.quit()\n }\n\n version(): Promise<Record<string, string>> {\n return this.#adapter.version()\n }\n\n stats(): Promise<Record<string, Stats>> {\n return this.#adapter.stats()\n }\n}\n","codeCoverage":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,-2,-2,-2,-2,-2,114,114,114,114,114,-2,-2,-2,-2,-2,-2,-2,-2,114,114,114,114,114,114,114,-2,-2,-2,-2,-2,114,-2,-2,-2,-2,-2,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,114,114,114,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,114,114,114,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,114,114,114,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,114,114,114,95,95,95,95,95,95,95,95,95,95,95,95,114,114,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,-2,-2,-2,-2,-2,135,135,135,135,135,-2,-2,-2,-2,-2,-2,-2,-2,135,135,135,135,135,135,135,-2,-2,-2,-2,-2,135,-2,-2,-2,-2,-2,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,135,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,36,36,36,36,36,36,36,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,36,36,36,36,36,36,36,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,36,36,36,36,36,36,36,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,36,36,36,36,36,36,36,36,36,36,135,135,135,116,116,116,116,116,116,116,116,116,116,116,116,135,135,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,-2,-2,-2,153,153,153,153,153,153,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,153,153,153,153,153,153,153,153,153,-2,-2,-2,153,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,153,153,153,153,153,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,153,153,153,153,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,152,152,152,152,152,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,1,1,1,1,32,32,32,31,31,31,31,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,152,152,152,152,152,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,152,152,152,152,152,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,152,152,152,152,152,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,153,153,153,153,153,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,152,152,152,152,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,153,153,153,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,153,153,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,130,130,130,130,130,130,130,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,130,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,-2,-2,-2,-2,-2,10,10,10,10,10,10,10,130,130,130,130,130,130,130,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,-2,-2,-2,-2,-2,13,13,13,13,13,13,13,130,130,130,130,130,130,130,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,-2,-2,-2,-2,-2,4,4,4,4,4,4,4,130,130,130,130,130,130,130,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,-2,-2,-2,-2,-2,69,69,69,69,69,69,69,130,130,130,130,130,130,130,130,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,-2,-2,-2,-2,-2,4,4,4,4,4,4,4,130,130,130,130,130,130,130,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,-2,-2,-2,-2,-2,18,18,18,18,18,18,18,130,130,130,130,130,130,130,130,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,130,130,130,130,130,130,130,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,130,130,130,130,130,130,130,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,130,130,130,130,130,130,130,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,130,130,130,130,130,130,130,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,130,130,130,130,130,130,130,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,130,130,130,130,130,130,130,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,130,130,130,130,130,130,130,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,130,130,130,130,130,130,130,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,130,130,130,130,130,130,130,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,130,130,130,130,130,130,130,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,130,130,130,130,130,130,130,130,1,1,1,1,1,1,1,1,1,1,1,130,130,130,130,130,130,1,130,130,130,130,130,130,130,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,11,11,11,11,11,11,11,11,11,11,11,11,-2,-2,-2,-2,-2,-2,-2,-2,11,11,11,-2,-2,-2,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,9,9,9,9,9,9,9,9,9,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,9,9,9,9,9,9,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,9,9,9,9,9,9,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,8,8,8,8,8,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6,6,6,6,6,6,6,6,6,6,6,6,6,-2,-2,-2,-2,-2,-2,-2,-2,-2,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,86,86,86,86,86,86,86,86,86,86,86,86,-2,-2,-2,-2,-2,-2,-2,-2,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,-2,-2,-2,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8,8,8,8,8,8,8,8,8,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,8,8,8,8,-2,-2,-2,-2,-2,-2,-2,-2,8,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,-2,-2,-2,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8,8,8,8,8,8,8,8,8,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,8,8,8,8,-2,-2,-2,-2,-2,-2,-2,-2,8,8,8,8,8,-2,-2,-2,-2,-2,-2,-2,-2,8,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,-2,-2,-2,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,140,140,140,140,140,140,140,140,140,140,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,140,140,140,140,-2,-2,-2,-2,-2,-2,-2,-2,140,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,106,140,140,140,140,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8,8,8,8,8,8,8,8,8,8,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,8,8,8,8,-2,-2,-2,-2,-2,-2,-2,-2,8,8,8,8,8,-2,-2,-2,-2,-2,-2,-2,-2,8,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,1,1,1,1,64,64,64,64,64,64,64,64,64,64,64,64,64,-2,-2,-2,-2,-2,-2,-2,-2,64,64,64,64,64,64,64,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,64,64,64,64,64,64,64,64,64,64,-2,-2,-2,-2,64,64,64,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,64,64,64,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,64,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,1,1,1,1,40,40,40,40,40,40,40,40,40,40,40,40,40,-2,-2,-2,-2,-2,-2,-2,-2,40,40,40,40,40,40,40,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,40,40,40,40,40,40,40,40,40,40,-2,-2,-2,-2,40,40,40,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,40,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,1,1,1,1,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,-2,-2,-2,-2,-2,-2,-2,-2,36,36,36,36,36,36,36,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,36,36,36,36,36,36,36,36,36,36,-2,-2,-2,-2,36,36,36,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,36,36,36,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,36,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,1,1,1,1,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,-2,-2,-2,-2,-2,-2,-2,-2,10,10,10,10,10,10,10,10,10,10,10,10,10,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,-2,-2,-2,-2,10,10,10,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,10,10,10,10,10,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,-2,-2,-2,-2,-2,-2,-2,-2,3,3,3,3,3,3,3,3,3,3,3,3,3,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,-2,-2,-2,-2,3,3,3,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,3,3,3,3,3,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,-2,-2,-2,-2,-2,-2,-2,-2,5,5,5,5,5,5,5,5,5,5,5,5,5,5,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,-2,-2,-2,-2,5,5,5,5,5,5,5,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,5,5,5,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,5,5,5,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,5,5,5,5,5,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,4,4,4,4,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,-2,-2,-2,-2,-2,-2,-2,-2,5,5,5,5,5,5,5,5,5,5,5,5,5,5,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,-2,-2,-2,-2,5,5,5,5,5,5,5,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,5,5,5,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,5,5,5,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,5,5,5,5,5,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,4,4,4,4,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,1,1,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,-2,-2,-2,-2,-2,-2,-2,-2,10,10,10,10,10,10,10,10,10,10,10,10,-2,-2,-2,-2,-2,-2,-2,-2,10,10,10,10,10,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,1,1,1,1,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,-2,-2,-2,-2,-2,-2,-2,-2,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,-2,-2,-2,-2,13,13,13,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,13,13,13,13,13,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,-2,-2,-2,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2],"nodeCoverage":{"coveredNodes":1331,"missingNodes":0,"ignoredNodes":0,"totalNodes":1331,"coverage":100}},"cluster.ts":{"code":"import { Adapter, Counter, AdapterResult, Stats } from './types'\nimport { ServerAdapter, ServerOptions } from './server'\nimport assert from 'assert'\n\nfunction parseHosts(hosts?: string): ServerOptions[] {\n const result: { host: string, port?: number }[] = []\n if (! hosts) return result\n\n for (const part of hosts.split(',')) {\n const [ host, p ] = part.split(':')\n const port = parseInt(p) || undefined\n result.push({ host, port })\n }\n\n return result\n}\n\n\nexport interface ClusterOptions {\n hosts: string | string[] | ServerOptions[],\n timeout?: number,\n ttl?: number\n}\n\nexport class ClusterAdapter implements Adapter {\n readonly servers: readonly ServerAdapter[]\n readonly ttl: number\n\n constructor()\n constructor(servers: ServerAdapter[])\n constructor(options: ClusterOptions)\n\n constructor(serversOrOptions?: ServerAdapter[] | ClusterOptions) {\n // If we have an array of servers, just copy it and use it\n if (Array.isArray(serversOrOptions)) {\n this.servers = [ ...serversOrOptions ]\n\n // This was created with \"options\"... Convert and construct\n } else if (serversOrOptions) {\n const { ttl, timeout, hosts: defs } = serversOrOptions\n const hosts: ServerOptions[] = []\n\n if (Array.isArray(defs)) {\n defs.forEach((def) => {\n if (typeof def === 'string') hosts.push(...parseHosts(def))\n else hosts.push({ port: 11211, ...def })\n })\n } else {\n hosts.push(...parseHosts(defs))\n }\n\n this.servers = hosts.map((host) => new ServerAdapter({ ttl, timeout, ...host }))\n\n // Anything else gets initialized from environment variables\n } else {\n const hosts = parseHosts(process.env.MEMCACHED_HOSTS)\n const ttl = process.env.MEMCACHED_TTL && parseInt(process.env.MEMCACHED_TTL) || undefined\n const timeout = process.env.MEMCACHED_TIMEOUT && parseInt(process.env.MEMCACHED_TIMEOUT) || undefined\n\n this.servers = hosts.map((host) => new ServerAdapter({ ttl, timeout, ...host }))\n }\n\n // Validate and shortcut in case of single-servers setup\n if (this.servers.length < 1) throw new Error('No hosts configured')\n if (this.servers.length === 1) this.server = (): ServerAdapter => this.servers[0]\n\n // Check TTLs are all the same\n this.ttl = this.servers[0].ttl\n this.servers.slice(1).forEach((server) => {\n assert.equal(server.ttl, this.ttl, `TTL Mismatch (${server.ttl} != ${this.ttl})`)\n })\n\n // Freeze our lists of servers\n Object.freeze(this.servers)\n }\n\n server(key: string): ServerAdapter {\n const length = key.length\n\n let hash = 0\n for (let i = 0; i < length; i ++) hash = hash * 31 + key.charCodeAt(i)\n\n return this.servers[hash % this.servers.length]\n }\n\n get(key: string): Promise<AdapterResult | undefined> {\n return this.server(key).get(key)\n }\n\n gat(key: string, ttl: number): Promise<AdapterResult | undefined> {\n return this.server(key).gat(key, ttl)\n }\n\n touch(key: string, ttl?: number): Promise<boolean> {\n return this.server(key).touch(key, ttl)\n }\n\n set(key: string, value: Buffer, options?: { flags?: number; cas?: bigint; ttl?: number }): Promise<bigint | undefined> {\n return this.server(key).set(key, value, options)\n }\n\n add(key: string, value: Buffer, options?: { flags?: number; ttl?: number }): Promise<bigint | undefined> {\n return this.server(key).add(key, value, options)\n }\n\n replace(key: string, value: Buffer, options?: { flags?: number; cas?: bigint; ttl?: number }): Promise<bigint | undefined> {\n return this.server(key).replace(key, value, options)\n }\n\n append(key: string, value: Buffer, options?: { cas?: bigint }): Promise<boolean> {\n return this.server(key).append(key, value, options)\n }\n\n prepend(key: string, value: Buffer, options?: { cas?: bigint }): Promise<boolean> {\n return this.server(key).prepend(key, value, options)\n }\n\n increment(key: string, delta?: number | bigint, options?: { initial?: number | bigint; cas?: bigint; ttl?: number; create?: boolean }): Promise<Counter | undefined> {\n return this.server(key).increment(key, delta, options)\n }\n\n decrement(key: string, delta?: number | bigint, options?: { initial?: number | bigint; cas?: bigint; ttl?: number; create?: boolean }): Promise<Counter | undefined> {\n return this.server(key).decrement(key, delta, options)\n }\n\n delete(key: string, options?: { cas?: bigint }): Promise<boolean> {\n return this.server(key).delete(key, options)\n }\n\n async flush(ttl?: number): Promise<void> {\n await Promise.all(this.servers.map((server) => server.flush(ttl)))\n }\n\n async noop(): Promise<void> {\n await Promise.all(this.servers.map((server) => server.noop()))\n }\n\n async quit(): Promise<void> {\n await Promise.all(this.servers.map((server) => server.quit()))\n }\n\n async version(): Promise<Record<string, string>> {\n const versions = await Promise.all(this.servers.map((server) => server.version()))\n return versions.reduce((v1, v2) => ({ ...v1, ...v2 }))\n }\n\n async stats(): Promise<Record<string, Stats>> {\n const stats = await Promise.all(this.servers.map((server) => server.stats()))\n return stats.reduce((v1, v2) => ({ ...v1, ...v2 }))\n }\n}\n","codeCoverage":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,-2,-2,-2,-2,-2,-2,-2,-2,12,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,-2,-2,-2,-2,12,12,12,12,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,12,12,12,12,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,1,1,1,1,1,1,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,10,10,10,10,10,10,10,10,10,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,34,34,34,34,34,34,34,34,34,34,34,34,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,34,34,34,34,34,34,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,4,4,4,4,16,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,16,16,16,16,16,16,16,16,16,16,7,7,7,7,7,7,7,7,7,10,10,10,10,10,10,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,15,15,15,15,15,15,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5,5,5,5,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5,5,5,5,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,5,5,5,5,5,5,5,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,34,34,34,34,34,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,6,6,6,6,6,6,32,32,32,348,348,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,348,348,348,348,348,348,348,348,348,348,348,348,348,348,348,348,348,348,348,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,34,34,34,34,34,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,32,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,34,34,34,34,1,1,1,1,24,24,24,24,24,24,24,24,24,24,-2,-2,-2,-2,-2,-2,-2,-2,24,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,1,1,1,1,150,150,150,150,150,150,150,-2,-2,-2,-2,-2,-2,-2,-2,150,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,1,1,1,1,18,18,18,18,18,18,18,-2,-2,-2,-2,-2,-2,-2,-2,18,18,18,18,18,-2,-2,-2,-2,-2,-2,-2,-2,18,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,1,1,1,1,11,11,11,11,11,11,11,11,11,-2,-2,-2,-2,-2,-2,-2,-2,11,11,11,11,11,11,-2,-2,-2,-2,-2,-2,-2,-2,11,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,1,1,1,1,64,64,64,64,64,64,64,-2,-2,-2,-2,-2,-2,-2,-2,64,64,64,64,64,64,64,-2,-2,-2,-2,-2,-2,-2,-2,64,64,64,64,64,64,64,64,64,64,-2,-2,-2,-2,64,64,64,64,64,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,64,64,64,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,64,64,64,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,64,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,1,1,1,1,42,42,42,42,42,42,42,-2,-2,-2,-2,-2,-2,-2,-2,42,42,42,42,42,42,42,-2,-2,-2,-2,-2,-2,-2,-2,42,42,42,42,42,42,42,42,42,42,-2,-2,-2,-2,42,42,42,42,42,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,42,42,42,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,42,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,1,1,1,1,38,38,38,38,38,38,38,38,38,38,38,-2,-2,-2,-2,-2,-2,-2,-2,38,38,38,38,38,38,38,-2,-2,-2,-2,-2,-2,-2,-2,38,38,38,38,38,38,38,38,38,38,-2,-2,-2,-2,38,38,38,38,38,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,38,38,38,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,38,38,38,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,38,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,1,1,1,1,12,12,12,12,12,12,12,12,12,12,-2,-2,-2,-2,-2,-2,-2,-2,12,12,12,12,12,12,12,-2,-2,-2,-2,-2,-2,-2,-2,12,12,12,12,12,12,12,12,12,12,-2,-2,-2,-2,12,12,12,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,12,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,-2,-2,-2,-2,-2,-2,-2,-2,5,5,5,5,5,5,5,-2,-2,-2,-2,-2,-2,-2,-2,5,5,5,5,5,5,5,5,5,5,-2,-2,-2,-2,5,5,5,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,5,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,1,1,7,7,7,7,7,7,7,7,7,7,7,7,7,-2,-2,-2,-2,-2,-2,-2,-2,7,7,7,7,7,7,7,7,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,7,7,7,7,7,7,7,7,7,7,-2,-2,-2,-2,7,7,7,7,7,7,7,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,7,7,7,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,7,7,7,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,7,7,7,7,7,7,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,7,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,1,1,1,1,7,7,7,7,7,7,7,7,7,7,7,7,7,-2,-2,-2,-2,-2,-2,-2,-2,7,7,7,7,7,7,7,7,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,7,7,7,7,7,7,7,7,7,7,-2,-2,-2,-2,7,7,7,7,7,7,7,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,7,7,7,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,7,7,7,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,7,7,7,7,7,7,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,7,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,1,1,1,1,14,14,14,14,14,14,14,14,14,14,-2,-2,-2,-2,-2,-2,-2,-2,14,14,14,14,14,14,14,14,14,14,-2,-2,-2,-2,14,14,14,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,14,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,-2,-2,-2,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2],"nodeCoverage":{"coveredNodes":752,"missingNodes":0,"ignoredNodes":0,"totalNodes":752,"coverage":100}},"connection.ts":{"code":"import assert from 'assert'\nimport net, { Socket } from 'net'\n\nimport { Encoder, RawOutgoingPacket } from './encode'\nimport { Decoder, RawIncomingPacket } from './decode'\nimport { BUFFERS, OPCODE } from './constants'\nimport { socketFinalizationRegistry } from './internals'\n\nexport type RawIncomingPackets = [ RawIncomingPacket, ...RawIncomingPacket[] ]\n\nclass Deferred {\n #resolve!: (value: RawIncomingPackets) => void\n #reject!: (reason: Error) => void\n #packets: RawIncomingPacket[] = []\n\n readonly promise: Promise<RawIncomingPackets>\n readonly opcode: OPCODE\n\n constructor(opcode: OPCODE) {\n this.opcode = opcode\n\n this.promise = new Promise((resolve, reject) => {\n this.#resolve = resolve\n this.#reject = reject\n })\n }\n\n append(packet: RawIncomingPacket): void {\n this.#packets.push(packet)\n }\n\n resolve(packet: RawIncomingPacket): void {\n this.#packets.push(packet)\n this.#resolve(this.#packets as RawIncomingPackets)\n }\n\n reject(error: Error): void {\n this.#reject(error)\n }\n}\n\nexport interface ConnectionOptions {\n host: string,\n port?: number,\n timeout?: number,\n}\n\nexport class Connection {\n readonly #decoder = new Decoder((packet) => this.#receive(packet))\n readonly #encoder = new Encoder()\n readonly #buffer = Buffer.allocUnsafeSlow(BUFFERS.BUFFER_SIZE)\n readonly #defers = new Map<number, Deferred>()\n readonly #factory: typeof net.connect\n\n #socket?: Promise<Socket>\n #sequence = 0\n\n readonly #timeout: number\n readonly #host: string\n readonly #port: number\n\n constructor(options: ConnectionOptions)\n constructor(options: ConnectionOptions & { factory?: typeof net.connect }) {\n assert(options, 'No options specified')\n\n const {\n host,\n port = 11211,\n timeout = 1000,\n factory = net.connect,\n } = options\n this.#factory = factory\n\n assert(host, 'No host name specified')\n assert(port > 0 && port < 65536 && (Math.floor(port) == port), `Invalid port ${port}`)\n\n this.#timeout = timeout\n this.#host = host\n this.#port = port\n }\n\n /* ======================================================================== */\n\n get connected(): boolean {\n return !! this.#socket\n }\n\n get host(): string {\n return this.#host\n }\n\n get port(): number {\n return this.#port\n }\n\n get timeout(): number {\n return this.#timeout\n }\n\n /* ======================================================================== */\n\n #connect(): Promise<Socket> {\n return this.#socket || (this.#socket = new Promise((resolve, reject) => {\n const socket: Socket = this.#factory({\n host: this.#host,\n port: this.#port,\n timeout: this.#timeout,\n onread: {\n buffer: this.#buffer,\n callback: (bytes: number, buffer: Buffer): boolean => {\n this.#decoder.append(buffer, 0, bytes)\n return true\n },\n },\n })\n\n socket.on('timeout', () => socket.destroy(new Error('Timeout')))\n socket.on('error', reject)\n\n socket.on('close', () => {\n socketFinalizationRegistry.unregister(this)\n this.#socket = undefined\n })\n\n socket.on('connect', () => {\n socketFinalizationRegistry.register(this, socket, this)\n\n socket.off('error', reject)\n socket.on('error', (error) => {\n for (const deferred of this.#defers.values()) {\n process.nextTick(() => deferred.reject(error))\n }\n this.#defers.clear()\n this.#socket = undefined\n })\n\n socket.unref()\n resolve(socket)\n })\n }))\n }\n\n #receive(packet: RawIncomingPacket): void {\n const deferred = this.#defers.get(packet.sequence)\n if (deferred) {\n if (deferred.opcode === packet.opcode) {\n if ((packet.opcode === OPCODE.STAT) && (packet.key.length !== 0)) {\n return deferred.append(packet)\n }\n return deferred.resolve(packet)\n } else {\n const sent = `0x${deferred.opcode.toString(16).padStart(2, '0')}`\n const received = `0x${packet.opcode.toString(16).padStart(2, '0')}`\n return deferred.reject(new Error(`Opcode mismatch (sent=${sent}, received=${received})`))\n }\n }\n }\n\n async send(packet: RawOutgoingPacket): Promise<RawIncomingPackets> {\n const sequence = ++ this.#sequence\n const buffer = this.#encoder.encode(packet, sequence)\n const deferred = new Deferred(packet.opcode)\n\n this.#defers.set(sequence, deferred)\n\n const socket = await this.#connect()\n socket.write(buffer, (error) => {\n buffer.recycle()\n if (error) return deferred.reject(error)\n })\n\n const timeout = setTimeout(() => deferred.reject(new Error('No response')), this.#timeout)\n\n return deferred.promise.finally(() => {\n clearTimeout(timeout)\n this.#defers.delete(sequence)\n })\n }\n\n async destroy(): Promise<boolean> {\n const socket = await this.#socket\n if (! socket) return false\n\n return new Promise<boolean>((resolve, reject) => {\n socket\n .once('error', reject)\n .once('close', resolve)\n .destroy()\n })\n }\n}\n","codeCoverage":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,20482,20482,20482,20482,20482,20482,20482,20482,20482,-2,-2,-2,20482,20482,20482,20482,20482,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,20482,20482,20482,20482,20482,20482,20482,20482,-2,-2,-2,20482,20482,20482,20482,20482,20482,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,20482,20482,20482,20482,20482,20482,20482,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,20482,20482,1,1,1,1,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,-2,-2,-2,-2,-2,-2,-2,-2,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,1,1,1,1,93,93,93,93,93,93,93,93,93,93,93,93,93,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,93,-2,-2,-2,-2,-2,-2,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,1,1,1,1,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,20476,-2,-2,-2,-2,-2,-2,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,20476,20476,20476,20476,20476,1,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,-2,-2,-2,-2,-2,-2,-2,4,-2,-2,-2,-2,-2,-2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,55,1,1,1,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,1,1,1,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,1,1,1,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,55,55,1,1,1,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,-2,-2,-2,-2,-2,-2,-2,-2,-2,55,55,55,-2,55,55,55,55,55,55,55,1,1,1,1,55,55,55,55,55,55,55,55,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,55,55,55,55,55,55,55,55,55,55,55,55,55,1,1,1,1,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,55,55,55,55,55,55,55,55,55,55,55,55,55,55,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,55,55,55,55,55,55,55,55,55,1,55,55,55,55,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,55,55,55,55,55,55,55,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,55,55,55,-2,55,55,55,55,55,55,55,-2,-2,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,52,52,52,52,52,52,52,52,52,52,52,52,55,55,55,55,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,55,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,-2,-2,-2,-2,-2,-2,-2,-2,-2,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,1,1,1,1,68,68,68,68,68,68,68,68,68,68,-2,-2,-2,-2,-2,-2,-2,-2,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,1,1,1,1,66,66,66,66,66,66,66,66,66,66,-2,-2,-2,-2,-2,-2,-2,-2,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,1,1,1,1,28,28,28,28,28,28,28,28,28,28,28,28,28,-2,-2,-2,-2,-2,-2,-2,-2,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20,20,20,20,20,20,20482,20482,20482,20482,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,-2,-2,-2,-2,-2,-2,-2,-2,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,707,707,707,707,707,707,-2,-2,-2,-2,-2,-2,-2,-2,707,707,707,707,707,707,707,707,-2,-2,-2,-2,-2,-2,-2,-2,707,-2,-2,-2,-2,-2,-2,-2,-2,-2,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,707,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,20,20,20,20,20,20,20,20,20,20482,20482,20482,20482,1,1,1,1,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,20571,-2,-2,-2,-2,-2,-2,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20571,20570,20570,20570,20570,20570,20570,20570,20570,20570,20570,20570,20570,20570,20570,20570,20570,20570,20570,20570,20570,20570,20570,20570,20570,20570,20570,20570,20570,20570,20570,20570,20570,20570,20570,20570,20570,20570,20570,20570,20570,20570,20570,20570,20570,20570,20570,20570,20569,20569,20569,20569,20569,20569,20569,20569,20569,20569,20569,20569,20569,20569,20569,20569,20569,20569,20569,20569,20569,20569,20569,20569,20569,20569,20569,20569,20569,20569,20569,20569,20569,20569,20569,20569,20569,20569,20569,20569,20569,20569,20569,20569,20569,20569,20569,20569,20569,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,20569,20569,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,20569,20569,20569,20569,20569,20569,20569,20569,20569,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20476,20569,20569,20569,20569,20569,20569,20569,20569,20570,20570,20570,20570,20570,20570,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,20570,20570,20570,20570,20570,20570,20571,20571,20571,20571,1,1,1,1,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,20482,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20482,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,20479,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,20479,20479,20479,20479,20479,20479,20480,20482,20482,20482,20482,20482,20482,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20482,20482,20482,20482,20482,20482,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20480,20482,20482,20482,20482,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,1,1,-2],"nodeCoverage":{"coveredNodes":784,"missingNodes":0,"ignoredNodes":0,"totalNodes":784,"coverage":100}},"constants.ts":{"code":"export const EMPTY_BUFFER = Buffer.alloc(0)\n\nexport enum FLAGS {\n // by default everything is a \"buffer\"\n BUFFER = 0x00000000,\n\n // from \"typeof\" we get bigint, boolean, number and string\n BIGINT = 0xCACA0000,\n BOOLEAN = 0xCACA0001,\n NUMBER = 0xCACA0002,\n STRING = 0xCACA0003,\n\n // typeof null === object\n NULL = 0xCACA000E,\n\n // objects become JSON\n JSON = 0xCACA000F,\n\n // typed arrays\n UINT8ARRAY = 0xCACA0010,\n UINT8CLAMPEDARRAY = 0xCACA0011,\n UINT16ARRAY = 0xCACA0012,\n UINT32ARRAY = 0xCACA0013,\n INT8ARRAY = 0xCACA0014,\n INT16ARRAY = 0xCACA0015,\n INT32ARRAY = 0xCACA0016,\n BIGUINT64ARRAY = 0xCACA0017,\n BIGINT64ARRAY = 0xCACA0018,\n FLOAT32ARRAY = 0xCACA0019,\n FLOAT64ARRAY = 0xCACA001A,\n}\n\nexport enum BUFFERS {\n POOL_SIZE = 64,\n BUFFER_SIZE = 8192,\n HEADER_SIZE = 24,\n KEY_SIZE = 250,\n KEY_TOO_BIG = 251,\n}\n\nexport enum OFFSETS {\n MAGIC_$8 = 0,\n OPCODE_$8 = 1,\n KEY_LENGTH_$16 = 2,\n EXTRAS_LENGTH_$8 = 4,\n DATA_TYPE_$8 = 5,\n STATUS_$16 = 6,\n BODY_LENGTH_$32 = 8,\n SEQUENCE_$32 = 12,\n CAS_$64 = 16,\n BODY = 24,\n}\n\nexport enum MAGIC {\n REQUEST = 0x80, // Request packet for this protocol version\n RESPONSE = 0x81, // Response packet for this protocol version\n}\n\nexport enum STATUS {\n OK = 0x0000, // No error\n KEY_NOT_FOUND = 0x0001, // Key not found\n KEY_EXISTS = 0x0002, // Key exists\n TOO_LARGE = 0x0003, // Value too large\n INVALID_ARGS = 0x0004, // Invalid arguments\n ITEM_NOT_STORED = 0x0005, // Item not stored\n NON_NUMERIC_VALUE = 0x0006, // Incr/Decr on non-numeric value\n WRONG_VBUCKET = 0x0007, // The vbucket belongs to another server\n AUTH_ERROR = 0x0008, // Authentication error\n AUTH_CONTINUE = 0x0009, // Authentication continue\n UNKNOWN_COMMAND = 0x0081, // Unknown command\n OUT_OF_MEMORY = 0x0082, // Out of memory\n NOT_SUPPORTED = 0x0083, // Not supported\n INTERNAL_ERROR = 0x0084, // Internal error\n BUSY = 0x0085, // Busy\n TEMPORARY_FAILURE = 0x0086, // Temporary failure\n}\n\nexport enum OPCODE {\n GET = 0x00,\n SET = 0x01,\n ADD = 0x02,\n REPLACE = 0x03,\n DELETE = 0x04,\n INCREMENT = 0x05,\n DECREMENT = 0x06,\n QUIT = 0x07,\n FLUSH = 0x08,\n NOOP = 0x0a,\n VERSION = 0x0b,\n APPEND = 0x0e,\n PREPEND = 0x0f,\n STAT = 0x10,\n TOUCH = 0x1c,\n GAT = 0x1d,\n}\n\nexport enum DATA_TYPE {\n RAW = 0x00,\n}\n\nexport enum VBUCKET {\n NIL = 0x00,\n}\n","codeCoverage":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2],"nodeCoverage":{"coveredNodes":17,"missingNodes":0,"ignoredNodes":0,"totalNodes":17,"coverage":100}},"decode.ts":{"code":"import { DATA_TYPE, EMPTY_BUFFER, MAGIC, OFFSETS } from './constants'\nimport assert from 'assert'\nimport { allocateBuffer, RecyclableBuffer } from './buffers'\n\n// Reading the full header would be like\n// const magic = header.readUInt8 (0)\n// const opcode = header.readUInt8 (1)\n// const key_length = header.readUInt16BE (2)\n// const extras_length = header.readUInt8 (4)\n// const data_type = header.readUInt8 (5)\n// const status = header.readUInt16BE (6)\n// const body_length = header.readUInt32BE (8)\n// const sequence = header.readUInt32BE (12)\n// const cas = header.readBigUInt64BE (16)\n\nexport interface RawIncomingPacket {\n readonly opcode: number\n readonly status: number\n readonly sequence: number\n readonly cas: bigint\n readonly extras: Buffer\n readonly key: Buffer\n readonly value: Buffer\n recycle: () => void\n}\n\nexport class Decoder {\n #consumer: (packet: RawIncomingPacket) => void\n #header = Buffer.allocUnsafeSlow(24)\n #body?: RecyclableBuffer\n #pos = 0\n\n constructor(consumer: (packet: RawIncomingPacket) => void) {\n this.#consumer = consumer\n }\n\n append(buffer: Buffer, start: number, end: number): void {\n const header = this.#header\n\n while (start < end) {\n if (this.#pos < 24) {\n const copied = buffer.copy(header, this.#pos, start, end)\n this.#pos += copied\n start += copied\n }\n\n if (this.#pos < 24) return\n\n let extras = EMPTY_BUFFER\n let key = EMPTY_BUFFER\n let value = EMPTY_BUFFER\n let recycle = () => void 0\n\n const bodyLength = header.readUInt32BE(OFFSETS.BODY_LENGTH_$32)\n if (bodyLength) {\n const body = this.#body || (this.#body = allocateBuffer(bodyLength))\n\n const copied = buffer.copy(body, this.#pos - 24, start, end)\n this.#pos += copied\n start += copied\n\n if (this.#pos - 24 < body.length) return\n\n const keyLength = header.readUInt16BE(OFFSETS.KEY_LENGTH_$16)\n const extrasLength = header.readUInt8(OFFSETS.EXTRAS_LENGTH_$8)\n const valueLength = bodyLength - keyLength - extrasLength\n\n key = keyLength ? body.subarray(extrasLength, extrasLength + keyLength) : EMPTY_BUFFER\n value = valueLength ? body.subarray(extrasLength + keyLength) : EMPTY_BUFFER\n extras = extrasLength ? body.subarray(0, extrasLength) : EMPTY_BUFFER\n recycle = () => void body.recycle()\n }\n\n const packet: RawIncomingPacket = {\n opcode: header.readUInt8(OFFSETS.OPCODE_$8),\n status: header.readUInt16BE(OFFSETS.STATUS_$16),\n sequence: header.readUInt32BE(OFFSETS.SEQUENCE_$32),\n cas: header.readBigUInt64BE(OFFSETS.CAS_$64),\n extras,\n key,\n value,\n recycle,\n }\n\n const magic = header.readUInt8(OFFSETS.MAGIC_$8)\n const dataType = header.readUInt8(OFFSETS.DATA_TYPE_$8)\n assert.equal(magic, MAGIC.RESPONSE, 'Invalid magic in header')\n assert.equal(dataType, DATA_TYPE.RAW, 'Invalid data type in header')\n\n this.#pos = 0\n this.#body = undefined\n this.#consumer(packet)\n }\n }\n}\n","codeCoverage":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,705,705,705,705,705,705,705,705,705,-2,-2,-2,705,705,705,705,705,705,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,1,1,1,705,705,705,705,705,705,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,705,705,705,705,705,705,705,1,1,1,1,1,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,-2,-2,-2,705,705,705,705,705,705,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,705,1,1,1,1,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,-2,-2,-2,-2,-2,-2,-2,-2,5642,5642,5642,5642,5642,5642,5642,-2,-2,-2,-2,-2,-2,-2,-2,5642,5642,5642,5642,5642,-2,-2,-2,-2,-2,-2,-2,-2,5642,-2,-2,-2,-2,-2,-2,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,5642,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,22877,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,27005,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,27005,27005,27005,27005,27005,27005,27005,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,27005,27005,27005,27005,27005,27005,27005,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,27005,27005,27005,27005,27005,27005,27005,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,10181,10181,10181,10181,10181,10181,10181,10181,10181,10181,10181,26645,27005,27005,27005,27005,27005,27005,27005,27005,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,27005,27005,27005,27005,27005,27005,27005,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,26645,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,11682,11682,11682,11682,15810,15810,15810,15810,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,15810,15810,15810,15810,15810,15810,15810,15810,15810,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,15810,15810,15810,15810,15810,15810,15810,15810,15810,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,11682,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,1390,11682,11682,11682,10292,10292,10292,10292,10292,10292,10292,10292,10292,10292,10292,10292,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,15810,15810,15810,14,14,14,14,14,14,14,14,14,14,14,14,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,11471,11471,11471,11471,11471,11471,11471,11471,11471,11471,11471,11471,11471,11471,11471,11471,11471,11471,11471,11471,11471,11471,11471,11471,11471,11471,11471,11471,11471,11471,15810,15810,15810,211,211,211,211,211,211,211,211,211,211,211,211,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,15810,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,309,15810,15810,15810,15810,15810,15810,15810,15810,27005,27005,27005,27005,27005,27005,27005,27005,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,27005,27005,27005,27005,27005,27005,27005,27005,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,27005,27005,27005,27005,27005,27005,27005,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,27005,27005,27005,27005,27005,27005,27005,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,27005,27005,27005,27005,27005,27005,27005,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,27005,27005,27005,27005,27005,27005,27005,27005,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,27005,27005,27005,27005,27005,27005,27005,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,27005,27005,27005,27005,27005,27005,27005,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,22517,27005,27005,27005,27005,27005,27005,5642,5642,5642,5642,1,1,-2],"nodeCoverage":{"coveredNodes":396,"missingNodes":0,"ignoredNodes":0,"totalNodes":396,"coverage":100}},"encode.ts":{"code":"import { allocateBuffer, RecyclableBuffer } from './buffers'\nimport { DATA_TYPE, EMPTY_BUFFER, MAGIC, VBUCKET, OPCODE, OFFSETS } from './constants'\n\n// Writing the full header would be like\n// header.writeUInt8 (magic, 0)\n// header.writeUInt8 (opcode, 1)\n// header.writeUInt16BE (key_length, 2)\n// header.writeUInt8 (extras_length, 4)\n// header.writeUInt8 (data_type, 5)\n// header.writeUInt16BE (status, 6)\n// header.writeUInt32BE (body_length, 8)\n// header.writeUInt32BE (sequence, 12)\n// header.writeBigUInt64BE (cas, 16)\n\n// keep as an \"enum\", the compiler will replace with values\nenum CONSTANTS {\n HEADER_SIZE = 24, // header size\n}\n\nexport interface RawOutgoingPacket {\n readonly opcode: OPCODE\n readonly sequence?: number\n readonly cas?: bigint\n\n readonly extras?: Buffer\n readonly extrasOffset?: number\n readonly extrasLength?: number\n\n readonly key?: Buffer\n readonly keyOffset?: number\n readonly keyLength?: number\n\n readonly value?: Buffer\n readonly valueOffset?: number\n readonly valueLength?: number\n}\n\nexport class Encoder {\n encode(packet: RawOutgoingPacket, seq: number = 0): RecyclableBuffer {\n const {\n opcode,\n sequence = seq,\n cas = 0n,\n\n extras = EMPTY_BUFFER,\n extrasOffset = 0,\n extrasLength = extras.length,\n\n key = EMPTY_BUFFER,\n keyOffset = 0,\n keyLength = key.length,\n\n value = EMPTY_BUFFER,\n valueOffset = 0,\n valueLength = value.length,\n } = packet\n\n const bodyLength = extrasLength + keyLength + valueLength\n const length = bodyLength + CONSTANTS.HEADER_SIZE\n\n const buffer = allocateBuffer(length)\n\n buffer.writeUInt8(MAGIC.REQUEST, OFFSETS.MAGIC_$8)\n buffer.writeUInt8(opcode, OFFSETS.OPCODE_$8)\n buffer.writeUInt16BE(keyLength, OFFSETS.KEY_LENGTH_$16)\n buffer.writeUInt8(extrasLength, OFFSETS.EXTRAS_LENGTH_$8)\n buffer.writeUInt8(DATA_TYPE.RAW, OFFSETS.DATA_TYPE_$8)\n buffer.writeUInt16BE(VBUCKET.NIL, OFFSETS.STATUS_$16)\n buffer.writeUInt32BE(bodyLength, OFFSETS.BODY_LENGTH_$32)\n buffer.writeUInt32BE(sequence, OFFSETS.SEQUENCE_$32)\n buffer.writeBigUInt64BE(cas, OFFSETS.CAS_$64)\n\n let pos = 24\n if (extrasLength) pos += extras.copy(buffer, pos, extrasOffset, extrasOffset + extrasLength)\n if (keyLength) pos += key.copy(buffer, pos, keyOffset, keyOffset + keyLength)\n if (valueLength) pos += value.copy(buffer, pos, valueOffset, valueOffset + valueLength)\n void pos\n\n return buffer // .length === length ? buffer : buffer.subarray(0, length)\n }\n}\n","codeCoverage":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,20484,20484,20484,20484,20484,-2,-2,-2,-2,-2,-2,-2,-2,20484,20484,20484,20484,20484,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,10229,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20461,20461,20461,20461,20461,20461,20461,20461,20461,20461,20461,20461,20461,20461,20461,20461,20461,20461,20461,20461,20461,20461,20461,20461,20461,20461,20461,20461,20461,20461,20461,20461,20461,20461,20461,20461,20461,20461,20461,20461,20461,20461,20461,20461,20461,20461,20461,20461,20461,20461,20461,20461,20461,20461,20461,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,10191,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,20484,1,1,-2],"nodeCoverage":{"coveredNodes":270,"missingNodes":0,"ignoredNodes":0,"totalNodes":270,"coverage":100}},"fake.ts":{"code":"import { Adapter, AdapterResult, Counter, Stats } from './types'\nimport { MemxClient } from './client'\n\ninterface Entry {\n value: Buffer,\n flags: number,\n cas: bigint,\n exp: number,\n}\n\nfunction toExp(ttl: number = 0): number {\n if (ttl === 0) return Number.MAX_SAFE_INTEGER\n return Date.now() + (ttl * 1000)\n}\n\nexport class FakeAdapter implements Adapter {\n #cache = new Map<string, Entry>()\n #cas = 1n\n\n readonly ttl = 0\n\n #get(key: string): Entry | undefined {\n if (key.length > 250) throw new TypeError(`Key too long (len=${key.length})`)\n const entry = this.#cache.get(key)\n if (! entry) return\n\n if (Date.now() > entry.exp) {\n this.#cache.delete(key)\n return\n }\n\n return entry\n }\n\n #set(key: string, value: Buffer, flags?: number, ttl?: number): bigint {\n this.#cache.set(key, {\n value: value,\n flags: flags || 0,\n cas: ++this.#cas,\n exp: toExp(ttl),\n })\n return this.#cas\n }\n\n async get(\n key: string,\n ): Promise<AdapterResult | undefined> {\n const entry = this.#get(key)\n if (! entry) return\n\n return {\n value: entry.value,\n flags: entry.flags,\n cas: entry.cas,\n recycle: () => void 0,\n }\n }\n\n async gat(\n key: string,\n ttl: number,\n ): Promise<AdapterResult | undefined> {\n const entry = this.#get(key)\n if (! entry) return\n\n entry.exp = toExp(ttl)\n\n return {\n value: entry.value,\n flags: entry.flags,\n cas: entry.cas,\n recycle: () => void 0,\n }\n }\n\n async touch(\n key: string,\n ttl: number,\n ): Promise<boolean> {\n const entry = this.#get(key)\n if (entry) entry.exp = toExp(ttl)\n return !! entry\n }\n\n async set(\n key: string,\n value: Buffer,\n options: { flags?: number; cas?: bigint; ttl?: number } = {},\n ): Promise<bigint | undefined> {\n const entry = this.#get(key)\n if (entry && (options.cas !== undefined) && (entry.cas !== options.cas)) {\n return\n }\n\n return this.#set(key, value, options.flags, options.ttl)\n }\n\n async add(\n key: string,\n value: Buffer,\n options: { flags?: number; ttl?: number } = {},\n ): Promise<bigint | undefined> {\n if (this.#get(key)) return\n return this.#set(key, value, options.flags, options.ttl)\n }\n\n async replace(\n key: string,\n value: Buffer,\n options: { flags?: number; cas?: bigint; ttl?: number } = {},\n ): Promise<bigint | undefined> {\n if (! this.#get(key)) return\n return this.#set(key, value, options.flags, options.ttl)\n }\n\n async append(\n key: string,\n value: Buffer,\n options: { cas?: bigint } = {},\n ): Promise<boolean> {\n const entry = this.#get(key)\n if (! entry) return false\n\n if ((options.cas !== undefined) && (options.cas !== entry.cas)) return false\n\n entry.value = Buffer.concat([ entry.value, value ])\n return true\n }\n\n async prepend(\n key: string,\n value: Buffer,\n options: { cas?: bigint } = {},\n ): Promise<boolean> {\n const entry = this.#get(key)\n if (! entry) return false\n\n if ((options.cas !== undefined) && (options.cas !== entry.cas)) return false\n\n entry.value = Buffer.concat([ value, entry.value ])\n return true\n }\n\n async #counter(\n key: string,\n delta: number | bigint,\n options: { initial?: number | bigint; cas?: bigint; ttl?: number; create?: boolean },\n ): Promise<Counter | undefined> {\n const entry = this.#get(key)\n\n if (! entry) {\n if (options.initial !== undefined) {\n const value = Buffer.from(options.initial.toString())\n this.#set(key, value, undefined, options.ttl)\n return { value: BigInt(options.initial), cas: this.#cas }\n } else {\n return\n }\n }\n\n if ((options.cas !== undefined) && (options.cas !== entry.cas)) return\n\n try {\n const value = BigInt(entry.value.toString('utf-8')) + BigInt(delta)\n this.#set(key, Buffer.from(value.toString()), undefined, options.ttl)\n return { value, cas: this.#cas }\n } catch (error: any) {\n throw new TypeError(`${error.message} (status=NON_NUMERIC_VALUE, key=${key})`)\n }\n }\n\n increment(\n key: string,\n delta: number | bigint = 1n,\n options: { initial?: number | bigint; cas?: bigint; ttl?: number; create?: boolean } = {},\n ): Promise<Counter | undefined> {\n return this.#counter(key, delta, options)\n }\n\n decrement(\n key: string,\n delta: number | bigint = 1n,\n options: { initial?: number | bigint; cas?: bigint; ttl?: number; create?: boolean } = {},\n ): Promise<Counter | undefined> {\n return this.#counter(key, -delta, options)\n }\n\n async delete(\n key: string,\n options: { cas?: bigint } = {},\n ): Promise<boolean> {\n const entry = this.#get(key)\n if (entry && (options.cas !== undefined) && (entry.cas !== options.cas)) {\n return false\n }\n\n return this.#cache.delete(key)\n }\n\n async flush(\n ttl?: number,\n ): Promise<void> {\n if (! ttl) return this.#cache.clear()\n\n const wait = toExp(ttl) - Date.now()\n setTimeout(() => this.#cache.clear(), wait)\n }\n\n async noop(): Promise<void> {\n // noop!\n }\n async quit(): Promise<void> {\n // noop!\n }\n\n async version(): Promise<Record<string, string>> {\n return { fake: '0.0.0-fake' }\n }\n\n async stats(): Promise<Record<string, Stats>> {\n return { fake: { version: '0.0.0-fake' } as Stats }\n }\n}\n\nexport class MemxFakeClient extends MemxClient {\n constructor() {\n super(new FakeAdapter())\n }\n}\n","codeCoverage":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,-2,-2,-2,-2,-2,-2,-2,-2,10038,10038,10038,10038,10038,-2,-2,-2,-2,-2,-2,-2,-2,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10038,10038,10038,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,10038,10038,-2,-2,1,1,1,1,1,1,1,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,2,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,2,2,1,1,1,1,2,2,2,1,1,1,2,2,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,20106,20106,20106,20106,20106,20106,20106,20106,-2,-2,-2,-2,-2,-2,-2,-2,20106,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,20106,20106,20106,20106,20106,20106,20106,20106,20106,20106,20106,20106,20106,20106,20106,20106,20106,20106,20106,20106,20106,20106,20106,20106,20106,20106,20106,20106,20106,20106,20106,20106,20106,20106,20106,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,20106,20106,20106,20106,20106,20104,20104,20104,20104,20104,20104,20104,20104,20104,20104,20104,20104,20104,20104,20104,20104,20104,20104,20104,20104,20104,20104,20104,20104,20104,20104,20104,20104,20104,20104,20104,20104,20104,20104,20106,20106,20106,20106,20106,20104,20104,20104,20104,20104,20104,20104,20104,20104,20104,20104,20104,20104,20104,20104,20104,20104,20104,20104,20106,20106,20106,20106,20106,20106,10065,10065,10065,10065,10065,10065,10065,10065,10065,10065,10065,10065,10065,10065,10065,10065,10065,10065,10065,10065,10065,10065,10065,10065,10065,10065,10065,10065,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,20106,20106,20106,20106,20106,20106,10061,10061,10061,10061,10061,10061,10061,10061,10061,10061,10061,10061,20106,20106,20106,20106,1,1,1,1,10035,10035,10035,10035,10035,10035,10035,10035,-2,-2,-2,-2,-2,-2,-2,-2,10035,10035,10035,10035,10035,10035,10035,-2,-2,-2,-2,-2,-2,-2,-2,10035,10035,10035,10035,10035,10035,10035,10035,-2,-2,-2,-2,-2,-2,-2,-2,10035,10035,10035,10035,10035,10035,-2,-2,-2,-2,-2,-2,-2,-2,10035,-2,-2,-2,-2,-2,-2,-2,-2,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,10035,1,1,1,1,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,-2,-2,-2,-2,-2,-2,-2,-2,10044,10044,10044,10044,10044,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10044,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,2,2,2,2,2,2,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10033,10044,10044,10044,10044,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,-2,-2,-2,-2,-2,-2,-2,-2,2,2,2,2,2,2,2,2,2,2,2,-2,-2,-2,-2,-2,-2,-2,-2,2,2,2,2,2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,-2,-2,-2,-2,-2,-2,-2,-2,2,2,2,2,2,2,2,2,2,2,2,-2,-2,-2,-2,-2,-2,-2,-2,2,2,2,2,2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,-2,-2,-2,-2,-2,-2,-2,-2,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,-2,-2,-2,-2,-2,-2,-2,-2,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,-2,-2,-2,-2,10024,10024,10024,10024,10024,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,10024,10024,10024,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,10024,10024,10024,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,10024,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,10024,10024,10024,10024,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,10024,10024,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,10024,10024,10024,10024,10024,10024,10022,10022,10022,10022,10022,10022,10022,10022,10022,10022,10022,10022,10022,10022,10022,10022,10022,10022,10022,10022,10022,10022,10022,10022,10022,10022,10022,10022,10022,10022,10022,10022,10022,10022,10022,10022,10022,10022,10022,10022,10022,10022,10022,10022,10022,10022,10022,10022,10022,10022,10022,10022,10022,10022,10022,10022,10024,10024,10024,10024,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,-2,-2,-2,-2,-2,-2,-2,-2,2,2,2,2,2,2,2,2,2,2,2,2,2,-2,-2,-2,-2,-2,-2,-2,-2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,-2,-2,-2,-2,2,2,2,2,2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,2,2,2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,2,2,2,2,2,2,2,2,2,2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,-2,-2,-2,-2,-2,-2,-2,-2,2,2,2,2,2,2,2,2,2,2,2,2,2,-2,-2,-2,-2,-2,-2,-2,-2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,-2,-2,-2,-2,2,2,2,2,2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,2,2,2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,2,2,2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,2,2,2,2,2,2,2,2,2,2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,1,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,-2,-2,-2,-2,-2,-2,-2,-2,4,4,4,4,4,4,4,4,4,4,4,4,4,-2,-2,-2,-2,-2,-2,-2,-2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,-2,-2,-2,-2,4,4,4,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,4,4,4,4,4,4,4,4,4,4,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,1,1,4,4,4,4,4,4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,4,4,4,4,4,4,4,1,1,1,1,1,4,4,4,4,4,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,4,4,4,4,2,2,2,2,2,2,2,2,2,2,2,4,4,4,4,1,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,-2,-2,-2,-2,-2,-2,-2,-2,4,4,4,4,4,4,4,4,4,4,4,4,4,-2,-2,-2,-2,-2,-2,-2,-2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,-2,-2,-2,-2,4,4,4,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,4,4,4,4,4,4,4,4,4,4,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,1,1,4,4,4,4,4,4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,4,4,4,4,4,4,4,1,1,1,1,1,4,4,4,4,4,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,4,4,4,4,2,2,2,2,2,2,2,2,2,2,2,4,4,4,4,1,1,1,1,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,-2,-2,-2,-2,-2,-2,-2,-2,17,17,17,17,17,17,17,17,17,17,17,17,17,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,-2,-2,-2,-2,17,17,17,17,17,17,17,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,17,17,17,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,17,17,17,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,17,17,17,17,17,17,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,17,17,17,17,17,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,5,5,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5,5,5,5,5,5,17,17,17,17,17,17,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,12,12,17,17,17,17,17,17,17,17,17,17,17,17,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,2,2,2,2,2,2,2,2,2,2,2,2,-2,-2,-2,-2,-2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,17,17,17,17,1,1,1,1,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,-2,-2,-2,-2,-2,-2,-2,-2,9,9,9,9,9,9,9,9,9,9,9,9,9,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,-2,-2,-2,-2,9,9,9,9,9,9,9,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,9,9,9,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,9,9,9,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,9,9,9,9,9,9,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,9,9,9,9,9,9,9,9,9,9,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,1,1,1,1,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,-2,-2,-2,-2,-2,-2,-2,-2,8,8,8,8,8,8,8,8,8,8,8,8,8,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,-2,-2,-2,-2,8,8,8,8,8,8,8,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,8,8,8,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,8,8,8,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,8,8,8,8,8,8,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,8,8,8,8,8,8,8,8,8,8,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,-2,-2,-2,-2,-2,-2,-2,-2,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,-2,-2,-2,-2,5,5,5,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,5,5,5,5,5,5,5,5,5,5,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,5,5,5,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,-2,-2,-2,-2,-2,-2,-2,-2,2,2,2,2,2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,1,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2],"nodeCoverage":{"coveredNodes":831,"missingNodes":0,"ignoredNodes":0,"totalNodes":831,"coverage":100}},"index.ts":{"code":"export type { RecyclableBuffer } from './buffers'\n\nimport * as decode from './decode'\nimport * as encode from './encode'\nimport * as constants from './constants'\nimport * as connection from './connection'\n\nexport {\n decode,\n encode,\n constants,\n connection,\n}\n\nexport * from './fake'\nexport * from './types'\nexport * from './cluster'\nexport * from './server'\nexport * from './client'\nexport * from './utils'\n","codeCoverage":[-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2],"nodeCoverage":{"coveredNodes":41,"missingNodes":0,"ignoredNodes":0,"totalNodes":41,"coverage":100}},"internals.ts":{"code":"// Keep these here: they must be ignored by Istanbul, but ESBUILD swallows\n// commments (for a reason: https://github.com/evanw/esbuild/issues/578)\n\nimport assert from 'assert'\nimport type { Socket } from 'net'\nimport { types } from 'util'\n\nimport { FLAGS } from './constants'\n\nexport const socketFinalizationRegistry = new FinalizationRegistry((socket: Socket): void => {\n if (! socket.destroyed) socket.destroy()\n})\n\nexport function typedArrayFlags(value: NodeJS.TypedArray): FLAGS {\n const flags =\n types.isUint8Array(value) ? FLAGS.UINT8ARRAY :\n types.isUint8ClampedArray(value) ? FLAGS.UINT8CLAMPEDARRAY :\n types.isUint16Array(value) ? FLAGS.UINT16ARRAY :\n types.isUint32Array(value) ? FLAGS.UINT32ARRAY :\n types.isInt8Array(value) ? FLAGS.INT8ARRAY :\n types.isInt16Array(value) ? FLAGS.INT16ARRAY :\n types.isInt32Array(value) ? FLAGS.INT32ARRAY :\n types.isBigUint64Array(value) ? FLAGS.BIGUINT64ARRAY :\n types.isBigInt64Array(value) ? FLAGS.BIGINT64ARRAY :\n types.isFloat32Array(value) ? FLAGS.FLOAT32ARRAY :\n types.isFloat64Array(value) ? FLAGS.FLOAT64ARRAY :\n assert.fail('Unsupported kind of TypedArray')\n return flags\n}\n\nexport function logPromiseError(promise: Promise<any>, message: string): Promise<void> {\n // eslint-disable-next-line no-console\n return promise.catch((error) => console.log(message, error)).then(() => void 0)\n}\n","codeCoverage":[-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,-2,-2,-2,-2,-2,-2,-2,-2,0,-2,-2,-2,-2,-2,-2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,-2,-2,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,11,-2,-2,-2,-2,-2,-2,-2,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,11,11,11,11,11,11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,10,10,10,10,10,10,10,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,9,9,9,9,9,9,9,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8,8,8,8,8,8,8,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,7,7,7,7,7,7,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,5,5,5,5,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,4,4,4,4,4,4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,-2,-2,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,56,56,56,56,56,56,56,56,56,-2,-2,-2,-2,-2,-2,-2,-2,56,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,-2],"nodeCoverage":{"coveredNodes":146,"missingNodes":26,"ignoredNodes":0,"totalNodes":172,"coverage":84}},"server.ts":{"code":"import { Adapter, Counter, AdapterResult, Stats } from './types'\nimport { Connection, ConnectionOptions } from './connection'\nimport { BUFFERS, OPCODE, STATUS } from './constants'\nimport { RawIncomingPacket } from './decode'\n\nconst statsBigInt: readonly string[] = [\n 'auth_cmds', 'auth_errors', 'bytes', 'bytes_read', 'bytes_written', 'cas_badval', 'cas_hits', 'cas_misses',\n 'cmd_flush', 'cmd_get', 'cmd_set', 'cmd_touch', 'conn_yields', 'crawler_items_checked', 'crawler_reclaimed',\n 'curr_items', 'decr_hits', 'decr_misses', 'delete_hits', 'delete_misses', 'direct_reclaims', 'evicted_active',\n 'evicted_unfetched', 'evictions', 'expired_unfetched', 'get_expired', 'get_flushed', 'get_hits', 'get_misses',\n 'hash_bytes', 'idle_kicks', 'incr_hits', 'incr_misses', 'limit_maxbytes', 'listen_disabled_num', 'log_watcher_sent',\n 'log_watcher_skipped', 'log_watchers', 'log_worker_dropped', 'log_worker_written', 'lru_crawler_running',\n 'lru_crawler_starts', 'lru_maintainer_juggles', 'lrutail_reflocked', 'malloc_fails', 'moves_to_cold',\n 'moves_to_warm', 'moves_within_lru', 'read_buf_bytes', 'read_buf_bytes_free', 'read_buf_count', 'read_buf_oom',\n 'reclaimed', 'rejected_connections', 'response_obj_bytes', 'response_obj_count', 'response_obj_oom',\n 'round_robin_fallback', 'slab_reassign_busy_deletes', 'slab_reassign_busy_items', 'slab_reassign_chunk_rescues',\n 'slab_reassign_evictions_nomem', 'slab_reassign_inline_reclaim', 'slab_reassign_rescues', 'slabs_moved',\n 'store_no_memory', 'store_too_large', 'time_in_listen_disabled_us', 'total_items', 'touch_hits', 'touch_misses',\n 'unexpected_napi_ids',\n]\n\nconst statsNumber: readonly string[] = [\n 'connection_structures', 'curr_connections', 'hash_power_level', 'max_connections', 'pid', 'pointer_size',\n 'reserved_fds', 'slab_global_page_pool', 'threads', 'time', 'total_connections', 'uptime',\n] as const\n\nconst statsBoolean: readonly string[] = [ 'accepting_conns', 'hash_is_expanding', 'slab_reassign_running' ] as const\n\nconst statsMicroseconds: readonly string[] = [ 'rusage_system', 'rusage_user' ] as const\n\nfunction injectStats(key: string, value: string, stats: any): Stats {\n if (! key) return stats\n\n if (statsBigInt.includes(key)) {\n stats[key] = BigInt(value)\n } else if (statsNumber.includes(key)) {\n stats[key] = Number(value)\n } else if (statsBoolean.includes(key)) {\n stats[key] = !! Number(value)\n } else if (statsMicroseconds.includes(key)) {\n const splits = value.split('.')\n stats[key] = BigInt(`${splits[0]}${splits[1].padEnd(6, '0')}`)\n } else {\n stats[key] = value\n }\n return stats\n}\n\n\nfunction fail(packet: RawIncomingPacket, key?: string): never {\n const message = packet.value.toString('utf-8') || 'Unknown Error'\n const status = STATUS[packet.status] || `0x${packet.status.toString(16).padStart(4, '0')}`\n throw new Error(`${message} (status=${status}${key ? `, key=${key}` : ''})`)\n}\n\nexport interface ServerOptions extends ConnectionOptions {\n ttl?: number\n}\n\nexport class ServerAdapter implements Adapter {\n #buffer = Buffer.alloc(BUFFERS.KEY_TOO_BIG + 20) // 20 is the max extras we'll write\n\n #connection!: Connection\n #ttl!: number\n\n readonly #id!: string\n\n constructor(options: ServerOptions) {\n this.#connection = new Connection(options)\n this.#ttl = options.ttl || 0 // never\n this.#id = `${this.#connection.host}:${this.#connection.port}`\n }\n\n /* ======================================================================== */\n\n get connected(): boolean {\n return this.#connection.connected\n }\n\n get host(): string {\n return this.#connection.host\n }\n\n get port(): number {\n return this.#connection.port\n }\n\n get timeout(): number {\n return this.#connection.timeout\n }\n\n get ttl(): number {\n return this.#ttl\n }\n\n get id(): string {\n return this.#id\n }\n\n /* ======================================================================== */\n\n #writeKey(key: string, offset: number = 0): number {\n const keyLength = this.#buffer.write(key, offset, BUFFERS.KEY_TOO_BIG, 'utf-8')\n if (keyLength > BUFFERS.KEY_SIZE) throw new Error(`Key too long (len=${keyLength})`)\n return keyLength\n }\n\n /* ======================================================================== */\n\n async #get(\n key: string,\n ttl?: number,\n ): Promise<AdapterResult | undefined> {\n let keyOffset = 0\n if (ttl !== undefined) keyOffset = this.#buffer.writeUInt32BE(ttl)\n const keyLength = this.#writeKey(key, keyOffset)\n\n const [ response ] = await this.#connection.send({\n opcode: ttl ? OPCODE.GAT : OPCODE.GET,\n extras: this.#buffer,\n extrasOffset: 0,\n extrasLength: keyOffset,\n key: this.#buffer,\n keyOffset,\n keyLength,\n })\n\n switch (response.status) {\n case STATUS.OK:\n return {\n value: response.value,\n flags: response.extras.readUInt32BE(),\n cas: response.cas,\n recycle: () => response.recycle(),\n }\n case STATUS.KEY_NOT_FOUND:\n return\n default:\n fail(response, key)\n }\n }\n\n async get(\n key: string,\n ): Promise<AdapterResult | undefined> {\n return this.#get(key)\n }\n\n async gat(\n key: string,\n ttl: number,\n ): Promise<AdapterResult | undefined> {\n return this.#get(key, ttl || 2592000) // TTL 0 is \"invalid arg\"\n }\n\n async touch(\n key: string,\n ttl?: number,\n ): Promise<boolean> {\n const timeToLive = ttl ?? this.#ttl\n\n const keyOffset = this.#buffer.writeUInt32BE(timeToLive)\n const keyLength = this.#writeKey(key, keyOffset)\n\n const [ response ] = await this.#connection.send({\n opcode: OPCODE.TOUCH,\n extras: this.#buffer,\n extrasOffset: 0,\n extrasLength: keyOffset,\n key: this.#buffer,\n keyOffset,\n keyLength,\n })\n\n try {\n switch (response.status) {\n case STATUS.OK:\n return true\n case STATUS.KEY_NOT_FOUND:\n return false\n default:\n fail(response, key)\n }\n } finally {\n response.recycle()\n }\n }\n\n /* ======================================================================== */\n\n async #sar(\n opcode: OPCODE.SET | OPCODE.ADD | OPCODE.REPLACE,\n key: string,\n value: Buffer,\n options: { flags?: number, cas?: bigint, ttl?: number },\n ): Promise<bigint | undefined> {\n const { flags = 0, cas = 0n, ttl = this.#ttl } = options\n\n let keyOffset: number\n keyOffset = this.#buffer.writeUInt32BE(flags)\n keyOffset = this.#buffer.writeUInt32BE(ttl, keyOffset)\n const keyLength = this.#writeKey(key, keyOffset)\n\n const [ response ] = await this.#connection.send({\n opcode: opcode,\n cas,\n extras: this.#buffer,\n extrasOffset: 0,\n extrasLength: keyOffset,\n key: this.#buffer,\n keyOffset,\n keyLength,\n value,\n })\n\n try {\n switch (response.status) {\n case STATUS.OK:\n return response.cas\n case STATUS.KEY_NOT_FOUND:\n case STATUS.KEY_EXISTS:\n return\n default:\n fail(response, key)\n }\n } finally {\n response.recycle()\n }\n }\n\n set(\n key: string,\n value: Buffer,\n options: { flags?: number, cas?: bigint, ttl?: number } = {},\n ): Promise<bigint | undefined> {\n return this.#sar(OPCODE.SET, key, value, options)\n }\n\n add(\n key: string,\n value: Buffer,\n options: { flags?: number, ttl?: number } = {},\n ): Promise<bigint | undefined> {\n return this.#sar(OPCODE.ADD, key, value, options)\n }\n\n replace(\n key: string,\n value: Buffer,\n options: { flags?: number, cas?: bigint, ttl?: number } = {},\n ): Promise<bigint | undefined> {\n return this.#sar(OPCODE.REPLACE, key, value, options)\n }\n\n /* ======================================================================== */\n\n async #pend(\n opcode: OPCODE.APPEND | OPCODE.PREPEND,\n key: string,\n value: Buffer,\n options: { cas?: bigint },\n ): Promise<boolean> {\n const { cas = 0n } = options\n\n const keyLength = this.#writeKey(key)\n\n const [ response ] = await this.#connection.send({\n opcode: opcode,\n cas,\n key: Buffer.from(key, 'utf-8'),\n keyOffset: 0,\n keyLength,\n value,\n })\n\n try {\n switch (response.status) {\n case STATUS.OK:\n return true\n case STATUS.ITEM_NOT_STORED:\n case STATUS.KEY_EXISTS:\n return false\n default:\n fail(response, key)\n }\n } finally {\n response.recycle()\n }\n }\n\n append(\n key: string,\n value: Buffer,\n options: { cas?: bigint } = {},\n ): Promise<boolean> {\n return this.#pend(OPCODE.APPEND, key, value, options)\n }\n\n prepend(\n key: string,\n value: Buffer,\n options: { cas?: bigint } = {},\n ): Promise<boolean> {\n return this.#pend(OPCODE.PREPEND, key, value, options)\n }\n\n /* ======================================================================== */\n\n async #counter(\n opcode: OPCODE.INCREMENT | OPCODE.DECREMENT,\n key: string,\n delta: bigint | number,\n options: { initial?: bigint | number, cas?: bigint, ttl?: number },\n ): Promise<Counter | undefined> {\n const {\n initial,\n cas = 0n,\n ttl = this.#ttl,\n } = options\n\n let keyOffset: number\n keyOffset = this.#buffer.writeBigUInt64BE(BigInt(delta))\n keyOffset = this.#buffer.writeBigUInt64BE(BigInt(initial || 0n), keyOffset)\n keyOffset = this.#buffer.writeUInt32BE(initial == undefined ? 0xffffffff : ttl, keyOffset)\n const keyLength = this.#writeKey(key, keyOffset)\n\n const [ response ] = await this.#connection.send({\n opcode: opcode,\n extras: this.#buffer,\n extrasOffset: 0,\n extrasLength: keyOffset,\n key: this.#buffer,\n keyOffset,\n keyLength,\n cas,\n })\n\n try {\n switch (response.status) {\n case STATUS.OK:\n return {\n value: response.value.readBigUInt64BE(0),\n cas: response.cas,\n }\n case STATUS.KEY_NOT_FOUND:\n case STATUS.KEY_EXISTS:\n return\n default:\n fail(response, key)\n }\n } finally {\n response.recycle()\n }\n }\n\n increment(\n key: string,\n delta: bigint | number = 1,\n options: { initial?: bigint | number, cas?: bigint, ttl?: number, create?: boolean } = {},\n ): Promise<Counter | undefined> {\n return this.#counter(OPCODE.INCREMENT, key, delta, options)\n }\n\n decrement(\n key: string,\n delta: bigint | number = 1,\n options: { initial?: bigint | number, cas?: bigint, ttl?: number, create?: boolean } = {},\n ): Promise<Counter | undefined> {\n return this.#counter(OPCODE.DECREMENT, key, delta, options)\n }\n\n /* ======================================================================== */\n\n async delete(\n key: string,\n options: { cas?: bigint } = {},\n ): Promise<boolean> {\n const { cas = 0n } = options\n\n const keyLength = this.#writeKey(key)\n\n const [ response ] = await this.#connection.send({\n opcode: OPCODE.DELETE,\n key: this.#buffer,\n keyOffset: 0,\n keyLength,\n cas,\n })\n\n try {\n switch (response.status) {\n case STATUS.OK:\n return true\n case STATUS.KEY_NOT_FOUND:\n case STATUS.KEY_EXISTS:\n return false\n default:\n fail(response, key)\n }\n } finally {\n response.recycle()\n }\n }\n\n async flush(ttl: number = 0): Promise<void> {\n const extrasLength = ttl ? this.#buffer.writeUInt32BE(ttl) : 0\n\n const [ response ] = await this.#connection.send({\n opcode: OPCODE.FLUSH,\n extras: this.#buffer,\n extrasOffset: 0,\n extrasLength,\n })\n\n try {\n switch (response.status) {\n case STATUS.OK:\n return\n default:\n fail(response)\n }\n } finally {\n response.recycle()\n }\n }\n\n /* ======================================================================== */\n\n async noop(): Promise<void> {\n const [ response ] = await this.#connection.send({\n opcode: OPCODE.NOOP,\n })\n\n try {\n switch (response.status) {\n case STATUS.OK:\n return\n default:\n fail(response)\n }\n } finally {\n response.recycle()\n }\n }\n\n async quit(): Promise<void> {\n const [ response ] = await this.#connection.send({\n opcode: OPCODE.QUIT,\n })\n\n try {\n switch (response.status) {\n case STATUS.OK:\n return\n default:\n fail(response)\n }\n } finally {\n response.recycle()\n }\n }\n\n async version(): Promise<Record<string, string>> {\n const [ response ] = await this.#connection.send({\n opcode: OPCODE.VERSION,\n })\n\n try {\n switch (response.status) {\n case STATUS.OK:\n return { [this.#id]: response.value.toString('utf-8') }\n default:\n fail(response)\n }\n } finally {\n response.recycle()\n }\n }\n\n async stats(): Promise<Record<string, Stats>> {\n const responses = await this.#connection.send({\n opcode: OPCODE.STAT,\n })\n\n const stats = responses.reduce((result, packet) => {\n try {\n if (packet.status !== STATUS.OK) fail(packet)\n\n const key = packet.key.toString('utf-8')\n const value = packet.value.toString('utf-8')\n\n return injectStats(key, value, result)\n } finally {\n packet.recycle()\n }\n }, {})\n\n return { [this.#id]: stats as Stats }\n }\n}\n","codeCoverage":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,-2,-2,-2,-2,-2,-2,-2,-2,93,93,93,93,93,93,93,-2,-2,-2,-2,-2,-2,-2,-2,93,93,93,93,93,93,93,-2,-2,-2,-2,-2,93,-2,-2,-2,-2,-2,-2,-2,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,1,1,1,1,1,93,93,93,93,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,92,92,92,92,92,92,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,21,21,21,21,21,21,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,9,9,9,9,9,9,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,6,6,6,6,6,6,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,93,93,93,92,92,92,92,92,92,92,92,92,92,92,92,93,93,-2,-2,-2,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,17,17,17,17,17,17,-2,-2,-2,-2,-2,-2,-2,-2,17,-2,-2,-2,-2,-2,-2,-2,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,12,12,12,12,12,12,12,12,12,12,12,12,12,12,17,17,17,5,5,17,17,17,17,17,17,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,38,38,38,38,38,38,38,38,38,38,38,38,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,38,38,38,38,38,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,38,38,38,38,38,38,38,38,38,1,38,38,38,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,24,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,-2,-2,-2,-2,-2,-2,-2,-2,-2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,28,28,28,28,28,28,28,28,28,28,-2,-2,-2,-2,-2,-2,-2,-2,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,1,1,1,1,26,26,26,26,26,26,26,26,26,26,-2,-2,-2,-2,-2,-2,-2,-2,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,1,1,1,1,26,26,26,26,26,26,26,26,26,26,26,26,26,-2,-2,-2,-2,-2,-2,-2,-2,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,1,1,1,1,76,76,76,76,76,76,76,76,76,-2,-2,-2,-2,-2,-2,-2,-2,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,1,1,1,1,10,10,10,10,10,10,10,10,-2,-2,-2,-2,-2,-2,-2,-2,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,-2,-2,-2,-2,-2,-2,-2,-2,20462,20462,20462,20462,20462,20462,20462,20462,-2,-2,-2,-2,-2,-2,-2,-2,20462,20462,20462,20462,20462,-2,-2,-2,-2,-2,-2,-2,-2,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,20462,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,20462,20462,20462,20462,20462,20460,20460,20460,20460,20460,20460,20460,20460,20460,20460,20460,20460,20460,20460,20460,20460,20462,20462,20462,20462,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,-2,-2,-2,-2,-2,-2,-2,-2,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,-2,-2,-2,-2,-2,-2,-2,-2,10211,10211,10211,10211,10211,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,18,18,18,18,18,18,18,18,18,18,10211,10211,10211,10192,10192,10192,10192,10192,10192,10192,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10211,10210,10210,10210,10210,10210,10210,10210,10210,10210,10210,10210,10210,10210,10210,10210,10210,10210,10210,10210,10210,10210,10210,10210,10210,10210,10210,10210,10210,10210,10210,10210,10210,10210,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10164,10210,10210,10210,10210,10210,10210,10210,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,10211,10211,10211,10211,10211,10211,10210,10210,10210,10210,10210,10210,10210,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,10210,10210,10210,10210,10210,10210,10211,10211,10211,10211,1,1,1,1,10193,10193,10193,10193,10193,10193,10193,10193,10193,10193,10193,10193,10193,10193,10193,10193,10193,10193,10193,10193,-2,-2,-2,-2,-2,-2,-2,-2,10193,10193,10193,10193,10193,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,10193,10193,10193,10193,10193,10193,10193,10193,10193,10193,10193,10193,10193,10193,10193,10193,10193,10193,10193,10193,10193,10193,10193,10193,10193,10193,10193,10193,10193,10193,10193,10193,1,1,1,1,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,-2,-2,-2,-2,-2,-2,-2,-2,18,18,18,18,18,18,18,18,18,18,18,-2,-2,-2,-2,-2,-2,-2,-2,18,18,18,18,18,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,1,1,1,1,1,1,1,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,1,1,1,1,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,-2,-2,-2,-2,-2,-2,-2,-2,12,12,12,12,12,12,12,12,12,12,12,12,-2,-2,-2,-2,-2,-2,-2,-2,12,12,12,12,12,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,2,2,2,2,2,2,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,12,12,12,12,12,12,12,12,12,12,12,12,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,12,12,12,12,12,12,12,12,12,12,12,12,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,-2,-2,-2,-2,-2,-2,-2,-2,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,-2,-2,-2,-2,-2,-2,-2,-2,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,-2,-2,-2,-2,10169,10169,10169,10169,10169,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,10169,10169,10169,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,10169,10169,10169,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,10169,10169,10169,10169,10169,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,-2,-2,-2,-2,-2,-2,-2,-2,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10131,10131,10131,10131,10131,10131,10131,10131,10131,10131,10131,10131,10131,10131,10131,10131,10131,10131,10131,10131,10131,10131,10131,10131,10131,10131,10131,10131,10131,10131,10131,10131,10131,10131,10131,10131,10131,10131,10131,10131,10131,10131,10169,10169,10169,10168,10168,10168,10168,10168,10168,10168,10168,10168,2,2,2,2,2,2,2,2,2,2,2,2,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,10169,2,10168,10168,10168,10168,10168,10168,10168,10168,10168,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,10169,10169,10169,10169,10169,10169,10168,10168,10168,10168,10168,10168,10168,10168,10168,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10168,10169,10169,10169,10169,1,1,1,1,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,-2,-2,-2,-2,-2,-2,-2,-2,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,-2,-2,-2,-2,-2,-2,-2,-2,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,-2,-2,-2,-2,10087,10087,10087,10087,10087,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,10087,10087,10087,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,10087,10087,10087,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,10087,1,1,1,1,43,43,43,43,43,43,43,43,43,43,43,43,43,43,-2,-2,-2,-2,-2,-2,-2,-2,43,43,43,43,43,43,43,43,43,43,43,43,43,-2,-2,-2,-2,-2,-2,-2,-2,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,-2,-2,-2,-2,43,43,43,43,43,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,43,43,43,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,43,43,43,43,43,43,43,43,43,43,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,1,1,1,1,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,-2,-2,-2,-2,-2,-2,-2,-2,39,39,39,39,39,39,39,39,39,39,39,39,39,-2,-2,-2,-2,-2,-2,-2,-2,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,-2,-2,-2,-2,39,39,39,39,39,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,39,39,39,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,39,39,39,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,39,39,39,39,39,39,39,39,39,39,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,23,23,23,23,23,23,23,23,23,23,23,-2,-2,-2,-2,-2,-2,-2,-2,23,23,23,23,23,23,23,23,23,23,23,23,23,-2,-2,-2,-2,-2,-2,-2,-2,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,-2,-2,-2,-2,23,23,23,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,23,23,23,23,23,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,23,23,23,23,23,23,23,23,23,23,23,23,23,4,4,4,4,4,4,4,4,4,4,4,4,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,4,23,23,23,23,23,23,23,23,23,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,23,23,23,23,23,23,23,23,23,23,23,23,23,23,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,1,1,1,1,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,-2,-2,-2,-2,-2,-2,-2,-2,15,15,15,15,15,15,15,15,15,15,15,15,15,-2,-2,-2,-2,-2,-2,-2,-2,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,-2,-2,-2,-2,15,15,15,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,15,15,15,15,15,15,15,15,15,15,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,1,1,1,1,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,-2,-2,-2,-2,-2,-2,-2,-2,8,8,8,8,8,8,8,8,8,8,8,8,8,-2,-2,-2,-2,-2,-2,-2,-2,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,-2,-2,-2,-2,8,8,8,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,8,8,8,8,8,8,8,8,8,8,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,29,29,29,29,29,29,29,29,29,29,29,-2,-2,-2,-2,-2,-2,-2,-2,29,29,29,29,29,29,29,29,29,29,29,29,29,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,-2,-2,-2,-2,29,29,29,29,29,29,29,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,29,29,29,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,29,29,29,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,29,29,29,29,29,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,-2,-2,-2,-2,-2,-2,-2,-2,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,20,20,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,18,18,18,18,18,18,18,18,18,18,29,29,29,11,11,11,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,29,29,29,29,29,29,29,29,29,2,2,2,2,2,2,2,2,2,2,2,2,29,29,29,29,29,29,29,29,29,29,29,29,29,2,29,29,29,29,29,29,29,29,29,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,1,1,1,1,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,-2,-2,-2,-2,-2,-2,-2,-2,15,15,15,15,15,15,15,15,15,15,15,15,15,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,-2,-2,-2,-2,15,15,15,15,15,15,15,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,15,15,15,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,15,15,15,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,15,15,15,15,15,15,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,15,15,15,15,15,15,15,15,15,15,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,1,1,1,1,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,-2,-2,-2,-2,-2,-2,-2,-2,14,14,14,14,14,14,14,14,14,14,14,14,14,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,-2,-2,-2,-2,14,14,14,14,14,14,14,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,14,14,14,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,14,14,14,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,14,14,14,14,14,14,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,14,14,14,14,14,14,14,14,14,14,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,-2,-2,-2,-2,-2,-2,-2,-2,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,-2,-2,-2,-2,18,18,18,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,18,18,18,18,18,18,18,18,18,18,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,18,18,18,18,18,18,18,18,18,18,18,18,18,2,2,2,2,2,2,2,2,2,2,2,2,18,18,18,18,18,18,18,18,18,18,18,18,18,2,18,18,18,18,18,18,18,18,18,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,18,18,18,18,18,18,18,18,18,18,18,18,18,18,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,-2,-2,-2,-2,-2,-2,-2,-2,3,3,3,3,3,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,1,1,1,1,1,1,94,94,94,94,94,94,94,94,94,94,94,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,94,94,94,94,94,94,94,94,94,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,94,94,94,94,94,94,94,94,94,94,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,-2,-2,-2,-2,-2,-2,-2,-2,-2,2,2,2,2,2,2,1,1,-2],"nodeCoverage":{"coveredNodes":1715,"missingNodes":0,"ignoredNodes":0,"totalNodes":1715,"coverage":100}},"types.ts":{"code":"export interface AdapterResult {\n value: Buffer\n flags: number,\n cas: bigint\n recycle: () => void\n}\n\nexport interface Counter {\n value: bigint,\n cas: bigint\n}\n\nexport interface Stats {\n /** Process id of this server process (32u) */\n pid: number\n /** Number of secs since the server started (32u) */\n uptime: number\n /** current UNIX time according to the server (32u) */\n time: number\n /** Version string of this server (string) */\n version: string\n /** Default size of pointers on the host OS (generally 32 or 64) (32) */\n pointer_size: number\n /** Accumulated user time for this process (microseconds) (32u.32u) */\n rusage_user: bigint\n /** Accumulated system time for this process (microseconds) (32u.32u) */\n rusage_system: bigint\n /** Current number of items stored (64u) */\n curr_items: bigint\n /** Total number of items stored since the server started (64u) */\n total_items: bigint\n /** Current number of bytes used to store items (64u) */\n bytes: bigint\n /** Max number of simultaneous connections (32u) */\n max_connections: number\n /** Number of open connections (32u) */\n curr_connections: number\n /** Total number of connections opened since the server started running (32u) */\n total_connections: number\n /** Conns rejected in maxconns_fast mode (64u) */\n rejected_connections: bigint\n /** Number of connection structures allocated by the server (32u) */\n connection_structures: number\n /** Connections closed by lack of memory (64u) */\n response_obj_oom: bigint\n /** Total response objects in use (64u) */\n response_obj_count: bigint\n /** Total bytes used for resp. objects. is a subset of bytes from read_buf_bytes (64u) */\n response_obj_bytes: bigint\n /** Total read/resp buffers allocated (64u) */\n read_buf_count: bigint\n /** Total read/resp buffer bytes allocated (64u) */\n read_buf_bytes: bigint\n /** Total read/resp buffer bytes cached (64u) */\n read_buf_bytes_free: bigint\n /** Connections closed by lack of memory (64u) */\n read_buf_oom: bigint\n /** Number of misc fds used internally (32u) */\n reserved_fds: number\n /** Cumulative number of retrieval reqs (64u) */\n cmd_get: bigint\n /** Cumulative number of storage reqs (64u) */\n cmd_set: bigint\n /** Cumulative number of flush reqs (64u) */\n cmd_flush: bigint\n /** Cumulative number of touch reqs (64u) */\n cmd_touch: bigint\n /** Number of keys that have been requested and found present (64u) */\n get_hits: bigint\n /** Number of items that have been requested and not found (64u) */\n get_misses: bigint\n /** Number of items that have been requested but had already expired (64u) */\n get_expired: bigint\n /** Number of items that have been requested but have been flushed via flush_all (64u) */\n get_flushed: bigint\n /** Number of deletions reqs for missing keys (64u) */\n delete_misses: bigint\n /** Number of deletion reqs resulting in an item being removed (64u) */\n delete_hits: bigint\n /** Number of incr reqs against missing keys (64u) */\n incr_misses: bigint\n /** Number of successful incr reqs (64u) */\n incr_hits: bigint\n /** Number of decr reqs against missing keys (64u) */\n decr_misses: bigint\n /** Number of successful decr reqs (64u) */\n decr_hits: bigint\n /** Number of CAS reqs against missing keys (64u) */\n cas_misses: bigint\n /** Number of successful CAS reqs (64u) */\n cas_hits: bigint\n /** Number of CAS reqs for which a key was found, but the CAS value did not match (64u) */\n cas_badval: bigint\n /** Number of keys that have been touched with a new expiration time (64u) */\n touch_hits: bigint\n /** Number of items that have been touched and not found (64u) */\n touch_misses: bigint\n /** Number of rejected storage requests caused by attempting to write a value larger than the -I limit (64u) */\n store_too_large: bigint\n /** Number of rejected storage requests caused by exhaustion of the -m memory limit (relevant when -M is used) (64u) */\n store_no_memory: bigint\n /** Number of authentication commands handled, success or failure (64u) */\n auth_cmds: bigint\n /** Number of failed authentications (64u) */\n auth_errors: bigint\n /** Number of connections closed due to reaching their idle timeout (64u) */\n idle_kicks: bigint\n /** Number of valid items removed from cache to free memory for new items (64u) */\n evictions: bigint\n /** Number of times an entry was stored using memory from an expired entry (64u) */\n reclaimed: bigint\n /** Total number of bytes read by this server from network (64u) */\n bytes_read: bigint\n /** Total number of bytes sent by this server to network (64u) */\n bytes_written: bigint\n /** Number of bytes this server is allowed to use for storage (size_t) */\n limit_maxbytes: bigint\n /** Whether or not server is accepting conns (bool) */\n accepting_conns: boolean\n /** Number of times server has stopped accepting new connections (maxconns) (64u) */\n listen_disabled_num: bigint\n /** Number of microseconds in maxconns (64u) */\n time_in_listen_disabled_us: bigint\n /** Number of worker threads requested (see doc/threads.txt) (32u) */\n threads: number\n /** Number of times any connection yielded to another due to hitting the -R limit (64u) */\n conn_yields: bigint\n /** Current size multiplier for hash table (32u) */\n hash_power_level: number\n /** Bytes currently used by hash tables (64u) */\n hash_bytes: bigint\n /** Indicates if the hash table is being grown to a new size (bool) */\n hash_is_expanding: boolean\n /** Items pulled from LRU that were never touched by get/incr/append/etc before expiring (64u) */\n expired_unfetched: bigint\n /** Items evicted from LRU that were never touched by get/incr/append/etc (64u) */\n evicted_unfetched: bigint\n /** Items evicted from LRU that had been hit recently but did not jump to top of LRU (64u) */\n evicted_active: bigint\n /** If a slab page is being moved (bool) */\n slab_reassign_running: boolean\n /** Total slab pages moved (64u) */\n slabs_moved: bigint\n /** Total items freed by LRU Crawler (64u) */\n crawler_reclaimed: bigint\n /** Total items examined by LRU Crawler (64u) */\n crawler_items_checked: bigint\n /** Times LRU tail was found with active ref. Items can be evicted to avoid OOM errors (64u) */\n lrutail_reflocked: bigint\n /** Items moved from HOT/WARM to COLD LRU's (64u) */\n moves_to_cold: bigint\n /** Items moved from COLD to WARM LRU (64u) */\n moves_to_warm: bigint\n /** Items reshuffled within HOT or WARM LRU's (64u) */\n moves_within_lru: bigint\n /** Times worker threads had to directly reclaim or evict items (64u) */\n direct_reclaims: bigint\n /** Number of LRU crawlers running (64u) */\n lru_crawler_running: bigint\n /** Times an LRU crawler was started (64u) */\n lru_crawler_starts: bigint\n /** Number of times the LRU bg thread woke up (64u) */\n lru_maintainer_juggles: bigint\n /** Slab pages returned to global pool for reassignment to other slab classes (32u) */\n slab_global_page_pool: number\n /** Items rescued from eviction in page move (64u) */\n slab_reassign_rescues: bigint\n /** Valid items evicted during a page move (due to no free memory in slab) (64u) */\n slab_reassign_evictions_nomem: bigint\n /** Individual sections of an item rescued during a page move (64u) */\n slab_reassign_chunk_rescues: bigint\n /** Internal stat counter for when the page mover clears memory from the chunk freelist when it wasn't expecting to (64u) */\n slab_reassign_inline_reclaim: bigint\n /** Items busy during page move, requiring a retry before page can be moved (64u) */\n slab_reassign_busy_items: bigint\n /** Items busy during page move, requiring deletion before page can be moved (64u) */\n slab_reassign_busy_deletes: bigint\n /** Logs a worker never wrote due to full buf (64u) */\n log_worker_dropped: bigint\n /** Logs written by a worker, to be picked up (64u) */\n log_worker_written: bigint\n /** Logs not sent to slow watchers (64u) */\n log_watcher_skipped: bigint\n /** Logs written to watchers (64u) */\n log_watcher_sent: bigint\n /** Number of currently active watchers (64u) */\n log_watchers: bigint\n /** Number of times an unexpected napi id is is received. See doc/napi_ids.txt (64u) */\n unexpected_napi_ids: bigint\n /** Number of times napi id of 0 is received resulting in fallback to round robin thread selection. See doc/napi_ids.txt (64u) */\n round_robin_fallback: bigint\n /** Nuumber of times `malloc` failed (64u) */\n malloc_fails: bigint\n}\n\nexport interface Adapter {\n readonly ttl: number\n\n get(\n key: string,\n ): Promise<AdapterResult | undefined>\n\n gat(\n key: string,\n ttl: number,\n ): Promise<AdapterResult | undefined>\n\n touch(\n key: string,\n ttl?: number,\n ): Promise<boolean>\n\n set(\n key: string,\n value: Buffer,\n options?: { flags?: number, cas?: bigint, ttl?: number },\n ): Promise<bigint | undefined>\n\n add(\n key: string,\n value: Buffer,\n options?: { flags?: number, ttl?: number },\n ): Promise<bigint | undefined>\n\n replace(\n key: string,\n value: Buffer,\n options?: { flags?: number, cas?: bigint, ttl?: number },\n ): Promise<bigint | undefined>\n\n append(\n key: string,\n value: Buffer,\n options?: { cas?: bigint },\n ): Promise<boolean>\n\n prepend(\n key: string,\n value: Buffer,\n options?: { cas?: bigint },\n ): Promise<boolean>\n\n increment(\n key: string,\n delta?: bigint | number,\n options?: { initial?: bigint | number, cas?: bigint, ttl?: number, create?: boolean },\n ): Promise<Counter | undefined>\n\n decrement(\n key: string,\n delta?: bigint | number,\n options?: { initial?: bigint | number, cas?: bigint, ttl?: number, create?: boolean },\n ): Promise<Counter | undefined>\n\n delete(\n key: string,\n options?: { cas?: bigint },\n ): Promise<boolean>\n\n flush(ttl?: number): Promise<void>\n\n noop(): Promise<void>\n\n quit(): Promise<void>\n\n version(): Promise<Record<string, string>>\n\n stats(): Promise<Record<string, Stats>>\n}\n","codeCoverage":[-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2],"nodeCoverage":{"coveredNodes":0,"missingNodes":0,"ignoredNodes":0,"totalNodes":0,"coverage":0}},"utils.ts":{"code":"/* eslint-disable no-console */\n\nimport assert from 'assert'\nimport { MemxClient, Serializable } from './client'\nimport { logPromiseError } from './internals'\n\nexport class Factory<T extends Serializable> {\n #factory: (key: string) => T | Promise<T>\n #client: MemxClient\n #ttl?: number\n\n constructor(client: MemxClient, factory: (key: string) => T | Promise<T>, ttl?: number) {\n assert(typeof factory === 'function', 'Invalid or no factory specified')\n assert(client, 'No client specified')\n\n this.#factory = factory\n this.#client = client\n this.#ttl = ttl\n }\n\n async get(key: string): Promise<T> {\n const cached = await this.#client.getc(key)\n if (cached) {\n void logPromiseError(\n this.#client.touch(key),\n `Factory error touching key \"${this.#client.prefix}${key}\"`)\n return cached.value as T\n }\n\n const created = await this.#factory(key)\n if (created) {\n void logPromiseError(\n this.#client.set(key, created, { ttl: this.#ttl }),\n `Factory error setting key \"${this.#client.prefix}${key}\"`)\n }\n return created\n }\n}\n\nexport class Bundle<T extends Serializable = Serializable> {\n #client: MemxClient\n #name: string\n #ttl: number\n\n constructor(client: MemxClient, name: string, ttl?: number) {\n assert(client, 'No client specified')\n assert(name, 'No bundle name specified')\n\n this.#client = client\n this.#name = name\n this.#ttl = ttl || 0\n }\n\n async #appendKey(key: string): Promise<void> {\n await logPromiseError((async (): Promise<void> => {\n const added = await this.#client.add(this.#name, key, { ttl: this.#ttl })\n if (!added) {\n await this.#client.append(this.#name, `\\0${key}`)\n await this.#client.touch(this.#name, this.#ttl)\n }\n })(), `Bundle \"${this.#client.prefix}${this.#name}\" error recording key \"${key}\"`)\n }\n\n async #removeKey(key: string): Promise<void> {\n await logPromiseError((async (): Promise<void> => {\n const result = await this.#client.getc<string>(this.#name)\n if (! result) return\n const keys = result.value.split('\\0').filter((k) => k !== key).join('\\0')\n await this.#client.set(this.#name, keys, { cas: result.cas, ttl: this.#ttl })\n })(), `Bundle \"${this.#client.prefix}${this.#name}\" error clearing key \"${key}\"`)\n }\n\n async add(key: string, value: T): Promise<void> {\n await this.#client.set(`${this.#name}:${key}`, value, { ttl: this.#ttl })\n await this.#appendKey(key)\n }\n\n async get(key: string): Promise<T | undefined> {\n const result = await this.#client.getc<T>(`${this.#name}:${key}`)\n if (result) return result.value\n await this.#removeKey(key)\n return undefined\n }\n\n async delete(key: string): Promise<void> {\n await this.#client.delete(`${this.#name}:${key}`)\n await this.#removeKey(key)\n }\n\n async list(): Promise<Record<string, T>> {\n const result = await this.#client.getc<string>(this.#name)\n if (! result) return {}\n\n const results: Record<string, T> = {}\n const promises: Promise<void>[] = []\n\n for (const key of new Set(result.value.split('\\0'))) {\n promises.push(this.#client.getc<T>(`${this.#name}:${key}`).then((result) => {\n if (result) results[key] = result.value\n }))\n }\n\n await Promise.all(promises)\n\n await logPromiseError(\n this.#client.set(this.#name, Object.keys(results).join('\\0'), { cas: result.cas, ttl: this.#ttl }),\n `Bundle \"${this.#client.prefix}${this.#name}\" error compacting keys`)\n\n return results\n }\n}\n\nexport class PoorManLock {\n #client: MemxClient\n #name: string\n\n constructor(client: MemxClient, name: string) {\n assert(client, 'No client specified')\n assert(name, 'No lock name specified')\n\n this.#client = client\n this.#name = name\n }\n\n async execute<T>(\n executor: () => T | Promise<T>,\n options?: { timeout?: number, owner?: string },\n ): Promise<T> {\n const { timeout = 5000, owner = false } = options || {}\n const end = Date.now() + timeout\n\n let cas: bigint | undefined\n do {\n cas = await this.#client.add(this.#name, owner, { ttl: 2 })\n if (cas !== undefined) break\n await new Promise((resolve) => setTimeout(resolve, 100))\n } while (Date.now() < end)\n\n if (cas === undefined) {\n const other = await this.#client.getc(this.#name)\n const owner = (other && other.value) ? `\"${other.value}\"` : 'anonymous'\n throw new Error(`Lock \"${this.#client.prefix}${this.#name}\" timeout (owner=${owner})`)\n }\n\n const interval = setInterval(() => {\n void logPromiseError((async (): Promise<void> => {\n const replaced = await this.#client.replace(this.#name, owner, { ttl: 2, cas })\n assert(replaced !== undefined, `Lock \"${this.#client.prefix}${this.#name}\" not replaced`)\n cas = replaced\n })(), `Error extending lock \"${this.#client.prefix}${this.#name}\"`)\n }, 100)\n\n try {\n return await executor()\n } finally {\n clearInterval(interval)\n await logPromiseError(\n this.#client.delete(this.#name, { cas }),\n `Error deleting lock \"${this.#client.prefix}${this.#name}\"`)\n }\n }\n}\n","codeCoverage":[-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,1,2,2,2,2,2,2,2,2,-2,-2,-2,2,2,2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,2,2,2,2,2,2,2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,2,2,2,1,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,2,2,2,2,2,2,2,2,2,-2,-2,-2,2,2,2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,2,2,2,2,2,2,-2,-2,-2,-2,-2,-2,-2,-2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,-2,-2,-2,-2,-2,-2,-2,-2,4,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,1,1,1,1,1,1,4,4,4,4,4,4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,4,4,4,4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,1,1,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,1,6,6,6,6,6,6,6,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,6,6,6,6,6,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,6,6,6,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,6,6,6,6,6,6,-2,-2,-2,-2,-2,-2,-2,-2,6,6,6,6,6,6,-2,-2,-2,-2,-2,-2,-2,-2,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,1,1,1,1,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,-2,-2,-2,-2,-2,-2,-2,-2,13,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,-2,-2,-2,-2,-2,-2,-2,-2,5,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,-2,-2,-2,-2,-2,-2,-2,-2,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,5,5,5,5,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,1,1,13,13,13,13,13,13,13,13,13,13,13,13,13,-2,-2,-2,-2,-2,-2,-2,-2,13,13,13,13,13,13,13,-2,-2,-2,13,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,1,1,1,1,12,12,12,12,12,12,12,12,12,12,12,12,12,-2,-2,-2,-2,-2,-2,-2,-2,12,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,-2,-2,-2,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,9,9,9,9,9,9,9,9,9,9,9,9,12,12,12,12,12,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,12,12,12,12,12,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,12,12,12,12,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,-2,-2,-2,-2,-2,-2,-2,-2,2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,12,12,12,12,12,12,12,12,12,12,12,12,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,-2,-2,-2,-2,-2,-2,-2,-2,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,8,8,12,12,12,12,12,12,4,4,4,4,4,4,4,4,4,4,4,4,4,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,4,4,4,4,4,12,12,12,12,12,4,4,4,4,4,4,4,4,4,4,4,4,4,4,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,4,4,4,4,4,12,12,12,12,12,12,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,-2,-2,-2,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,6,6,6,7,7,7,7,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,12,12,12,12,12,12,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,12,12,12,12,12,12,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,12,12,12,12,12,12,4,4,4,4,4,4,4,4,4,4,4,4,4,4,12,12,12,12,1,1,-2,-2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,3,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,3,3,3,3,-2,-2,-2,-2,-2,-2,-2,-2,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,3,3,3,3,3,3,-2,-2,-2,-2,-2,-2,-2,-2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,6,6,6,6,6,6,6,6,6,6,6,6,6,-2,-2,-2,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,-2,-2,-2,-2,6,6,6,6,6,6,6,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,6,6,6,6,6,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,6,6,6,6,6,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,2,2,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,6,6,6,6,6,6,6,6,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,24,24,24,24,24,24,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,6,6,6,6,6,6,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,4,4,4,4,4,4,6,6,6,6,6,6,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,6,6,6,6,1,1,-2],"nodeCoverage":{"coveredNodes":946,"missingNodes":0,"ignoredNodes":0,"totalNodes":946,"coverage":100}}},"nodes":{"coveredNodes":7341,"missingNodes":26,"ignoredNodes":0,"totalNodes":7367,"coverage":99},"thresholds":{"minimumCoverage":50,"minimumFileCoverage":50,"optimalCoverage":75,"optimalFileCoverage":75},"tree":{"buffers.ts":"buffers.ts","client.ts":"client.ts","cluster.ts":"cluster.ts","connection.ts":"connection.ts","constants.ts":"constants.ts","decode.ts":"decode.ts","encode.ts":"encode.ts","fake.ts":"fake.ts","index.ts":"index.ts","internals.ts":"internals.ts","server.ts":"server.ts","types.ts":"types.ts","utils.ts":"utils.ts"},"date":"2022-08-23T16:08:29.667Z"});