From e3cf2409cd275ee9b14ecc2a34c14d5c1a6fa22a Mon Sep 17 00:00:00 2001 From: dev Date: Thu, 1 Oct 2026 23:41:28 +0200 Subject: [PATCH] Sync testdata with DateKeys spec-v0.11 (datekeys-go ae33434) SPEC_VERSION is 0.11. testdata brings format3_signed, format3_signed_cms and format3_sealed, and the vectors ed25519_strict.json, security_cms.json and locator.json; the mutation corpus has 210 cases. ibe-vectors.json adds the three fixtures and remakes the two that Go regenerated, and mutation-texts.json is made again with that reference. This library still reads the security area as a reader of v0.10, so a signature or a seal that the reference checks gives F1 or S1 here. The Verdict type and the texts know F2 to F6 and S3 to S5, and the tests state the gap with testing/pending.ts instead of hiding it; porting the verification makes that file the identity. npm run verify and testdata:check pass. Co-Authored-By: Claude Sonnet 5.5 --- CHANGELOG.md | 5 + README.md | 10 +- src/lib/dkc/fixtures.test.ts | 8 +- src/lib/dkc/open.test.ts | 5 +- src/lib/dkc/security.test.ts | 10 + src/lib/dkc/security.ts | 15 +- src/lib/dkc/testing/ibe-vectors.json | 50 ++- src/lib/dkc/testing/mutation-texts.json | 8 +- src/lib/dkc/testing/pending.ts | 32 ++ src/lib/dkc/testing/vectors.ts | 4 +- src/lib/dkc/vectors.test.ts | 67 +++- src/lib/dkc/version.ts | 4 +- testdata/README.md | 114 +++++- testdata/SOURCE.json | 109 +++--- testdata/fixtures/empty_payload.json | 2 +- testdata/fixtures/format2_empty_payload.json | 2 +- .../format2_time_and_key_portable.dkk.json | 2 +- .../format2_time_and_key_portable.json | 2 +- .../format2_time_and_key_recipients.dkk.json | 2 +- .../format2_time_and_key_recipients.json | 2 +- .../format2_time_and_key_sixteen.json | 2 +- testdata/fixtures/format2_time_only.json | 2 +- .../fixtures/format2_time_only_bloque256.json | 2 +- .../format2_time_only_extensions.json | 2 +- testdata/fixtures/format3_area_1024.json | 2 +- testdata/fixtures/format3_bloque256.json | 2 +- testdata/fixtures/format3_comment_only.json | 2 +- .../fixtures/format3_seal_unsupported.dkc | Bin 1563 -> 1563 bytes .../format3_seal_unsupported.inspect.json | 4 +- .../fixtures/format3_seal_unsupported.json | 26 +- .../format3_seal_unsupported.plaintext | Bin 659 -> 659 bytes testdata/fixtures/format3_sealed.dkc | Bin 0 -> 35611 bytes testdata/fixtures/format3_sealed.inspect.json | 61 +++ testdata/fixtures/format3_sealed.json | 173 +++++++++ testdata/fixtures/format3_sealed.plaintext | Bin 0 -> 32915 bytes testdata/fixtures/format3_security_v2.json | 2 +- .../format3_signature_unsupported.dkc | Bin 1563 -> 1563 bytes ...format3_signature_unsupported.inspect.json | 4 +- .../format3_signature_unsupported.json | 26 +- .../format3_signature_unsupported.plaintext | Bin 659 -> 659 bytes testdata/fixtures/format3_signed.dkc | Bin 0 -> 35611 bytes testdata/fixtures/format3_signed.inspect.json | 61 +++ testdata/fixtures/format3_signed.json | 165 +++++++++ testdata/fixtures/format3_signed.plaintext | Bin 0 -> 32915 bytes testdata/fixtures/format3_signed_cms.dkc | Bin 0 -> 35611 bytes .../fixtures/format3_signed_cms.inspect.json | 61 +++ testdata/fixtures/format3_signed_cms.json | 185 ++++++++++ .../fixtures/format3_signed_cms.plaintext | Bin 0 -> 32915 bytes testdata/fixtures/format3_single.json | 2 +- .../format3_time_and_key_portable.dkk.json | 2 +- .../format3_time_and_key_portable.json | 2 +- testdata/fixtures/format3_tree.json | 2 +- .../fixtures/time_and_key_portable.dkk.json | 2 +- testdata/fixtures/time_and_key_portable.json | 2 +- .../time_and_key_portable_extension.dkk.json | 2 +- .../fixtures/time_and_key_recipients.dkk.json | 2 +- .../fixtures/time_and_key_recipients.json | 2 +- testdata/fixtures/time_only.json | 2 +- testdata/fixtures/time_only_extensions.json | 2 +- testdata/vectors/cbor.json | 2 +- testdata/vectors/dk1.json | 2 +- testdata/vectors/ed25519_strict.json | 150 ++++++++ testdata/vectors/head_schema.json | 2 +- testdata/vectors/inspect_differential.json | 2 +- testdata/vectors/locator.json | 207 +++++++++++ testdata/vectors/mutations.json | 103 ++++-- testdata/vectors/padding.json | 2 +- testdata/vectors/path_fold.json | 2 +- testdata/vectors/paths.json | 2 +- testdata/vectors/profile_quicknet.json | 2 +- testdata/vectors/quicknet_rounds.json | 2 +- testdata/vectors/security.json | 2 +- testdata/vectors/security_cms.json | 349 ++++++++++++++++++ testdata/vectors/tlock_ibe.json | 2 +- 74 files changed, 1896 insertions(+), 192 deletions(-) create mode 100644 src/lib/dkc/testing/pending.ts create mode 100644 testdata/fixtures/format3_sealed.dkc create mode 100644 testdata/fixtures/format3_sealed.inspect.json create mode 100644 testdata/fixtures/format3_sealed.json create mode 100644 testdata/fixtures/format3_sealed.plaintext create mode 100644 testdata/fixtures/format3_signed.dkc create mode 100644 testdata/fixtures/format3_signed.inspect.json create mode 100644 testdata/fixtures/format3_signed.json create mode 100644 testdata/fixtures/format3_signed.plaintext create mode 100644 testdata/fixtures/format3_signed_cms.dkc create mode 100644 testdata/fixtures/format3_signed_cms.inspect.json create mode 100644 testdata/fixtures/format3_signed_cms.json create mode 100644 testdata/fixtures/format3_signed_cms.plaintext create mode 100644 testdata/vectors/ed25519_strict.json create mode 100644 testdata/vectors/locator.json create mode 100644 testdata/vectors/security_cms.json diff --git a/CHANGELOG.md b/CHANGELOG.md index 2bd12c1..28797b5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,11 @@ Cambios notables de la librería TypeScript y de la página. El proyecto usa ver ## Especificación 0.10, en la rama `v0.10` — sin versión +### `testdata` en `spec-v0.11` (01-10-2026) + +- `testdata` se sincroniza con el tag `spec-v0.11` de `datekeys-go` (`ae33434`), y `SPEC_VERSION` pasa a `0.11`. Trae tres fixtures (`format3_signed`, con firma de clave propia; `format3_signed_cms`, con dos certificados sellados; `format3_sealed`, con firma y sello RFC 3161) y tres ficheros de vectores (`ed25519_strict.json`, `security_cms.json` y `locator.json`). El corpus de mutaciones pasa a 210 casos, con uno fuera del §64: una firma de `alg` 1 que no verifica, F2. `ibe-vectors.json` añade los tres fixtures y rehace los de `format3_signature_unsupported` y `format3_seal_unsupported`; `mutation-texts.json` se rehace con el `capsule.Open` de esa referencia. +- **Lo que esta biblioteca no hace todavía:** lee el área de seguridad como un lector de la v0.10, así que una firma o un sello que la referencia comprueba da F1 o S1 aquí, y la referencia da F2 a F6 y S3 a S5. El tipo `Verdict` y los textos ya los conocen. Los tests lo dicen en lugar de ocultarlo: `testing/pending.ts` da lo que esta biblioteca devuelve donde la referencia registra una verificación, y un bloque de `vectors.test.ts` comprueba la estructura de los vectores que aún no se portan. Portar la verificación (§29.8 a §29.11 y el localizador del §44.1) hace esas funciones la identidad. + El formato 3 de la especificación 0.10, según `PLAN_formato3_ts.md` (en `../docs`). La versión que lo publique la decide el autor. ### Llave de palabras y firma de drand diff --git a/README.md b/README.md index 185729d..94db07a 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # datekeys-ts -Implementación en TypeScript del protocolo DateKeys v0.10 y página de prueba en el navegador. Sustituye al prototipo, archivado en `../archive/prototype` (API Quicknet en Go, CLI tlock y cliente Svelte, commit `4d2b0a1`). +Implementación en TypeScript del protocolo DateKeys (formato 3 de la v0.10; con los datos de prueba de la v0.11, cuya verificación de firmas y sellos está pendiente) y página de prueba en el navegador. Sustituye al prototipo, archivado en `../archive/prototype` (API Quicknet en Go, CLI tlock y cliente Svelte, commit `4d2b0a1`). La implementación de referencia es la librería Go `g.activething.com/go/DateKeys`, en `../datekeys-go`. Los planes y el estado del trabajo están en `../docs`, el repositorio privado de documentación del proyecto. @@ -21,7 +21,7 @@ Hay tres números de versión, cada uno con su significado, como en la referenci | Versión | Dónde | Cambia cuando | |---|---|---| | Formato | Dentro de los objetos: el formato de la cápsula, el `VERSION` del prelude de DKC1, 1, 2 o 3 al leer, que fija también la versión de schema de CONTROL_CBOR; y 1 en la trama DKK1 y en el schema de los demás objetos | Cambia el formato. Un lector rechaza una versión que no conoce (§22, §70) | -| Especificación | `SPEC_VERSION` de `src/lib/dkc/version.ts`, hoy `0.10`: la del tag `spec-v0.10` de `datekeys-go` | Cambia el texto normativo | +| Especificación | `SPEC_VERSION` de `src/lib/dkc/version.ts`, hoy `0.11`: la del tag `spec-v0.11` de `datekeys-go` | Cambia el texto normativo | | Librería | `VERSION` de `src/lib/dkc/version.ts`, igual al campo `version` de `package.json` | Cambia la API o el comportamiento. Versionado semántico, sin promesa de estabilidad antes de 1.0.0 | `version.test.ts` comprueba que `VERSION` coincide con `package.json` y con su lockfile, y que `SPEC_VERSION` es la versión que nombran los vectores y fixtures compartidos; `vectors.test.ts` exige esa versión a cada fichero. El pie de la página muestra las dos. @@ -81,7 +81,7 @@ Los tests (`*.test.ts`) están junto a cada fichero. El comportamiento se contrastó con la librería Go en `3820066` (`692cf87` solo cambia la regla de UTF-8 de `dk1_` descrita abajo) mediante un oráculo diferencial fuera del repositorio: 483 527 entradas de tres semillas. Son mutaciones de los cinco `.dkc` oficiales de todas las clases (bits, bytes, truncados, inserciones, borrados, longitudes y campos del prelude, cabeceras reescritas con cambios de CBOR, DateKeys, arrays de extensiones con y sin registro de extensiones, cabeceras `age` de SEALED_CONTROL y de PAYLOAD_AGE, argumentos del stanza tlock, rondas, secciones cambiadas de sitio y combinaciones de varios defectos); CBOR de cada esquema (PUBLIC_HEADER, CONTROL_CBOR, cuerpo y fichero `.dkk`, Provider Profile, arrays de extensiones); `walk`, `peek` y `checkSchema`; cabeceras `age`, preludes, cadenas `dk1_`, rondas y fechas. En todas coinciden el veredicto, el código y el paso, y también el texto del error, el valor decodificado y la salida entera de `datekeys inspect -json`, byte a byte. Un segundo diferencial con otro generador, de 407 196 entradas, se repitió contra `f6f2e9f` (la enmienda de canonicidad de puntos) con el mismo resultado, textos incluidos. -Con la v0.9 se contrastaron contra `spec-v0.9` los 125 casos de `mutations.json`, en memoria y desde un `Blob` con salida, y coinciden el código, el paso y el texto del error de `capsule.Open` en todos. Desde la v0.10 ese contraste está en el repositorio: `src/lib/dkc/testing/mutation-texts.json` congela el texto de `capsule.Open` en `spec-v0.10` para los 209 casos, y `vectors.test.ts` exige el mismo en las dos aperturas. El validador de extensiones del arnés da los textos de `testkit.KnownExtensions`, así que ya coinciden también los casos de extensiones conocidas con datos inválidos. +Con la v0.9 se contrastaron contra `spec-v0.9` los 125 casos de `mutations.json`, en memoria y desde un `Blob` con salida, y coinciden el código, el paso y el texto del error de `capsule.Open` en todos. Desde la v0.10 ese contraste está en el repositorio: `src/lib/dkc/testing/mutation-texts.json` congela el texto de `capsule.Open` en `spec-v0.11` para los 210 casos, y `vectors.test.ts` exige el mismo en las dos aperturas. El validador de extensiones del arnés da los textos de `testkit.KnownExtensions`, así que ya coinciden también los casos de extensiones conocidas con datos inválidos. Como la referencia desde `f6f2e9f`, los errores no copian el texto de una librería: una cabecera `age` que no se puede leer da siempre `agewrap: not an age v1 header: malformed, truncated or beyond the parser limits` (`ERR_INTEGRITY`). El motivo del parser, con las palabras de `age`, queda en `cause` del error, fuera del mensaje, y los tests lo comparan con los textos de `age` para comprobar que se rechaza por la misma razón. @@ -279,7 +279,7 @@ Umbrales de cobertura (`vitest.config.ts`), al 100 % en líneas, ramas, funcione Para regenerarlo: `node scripts/tlock-ts-samples.mjs > ts-samples.json`, y desde el mismo módulo Go temporal, `go run tlock-go-vectors.go ts-samples.json > tlock-vectors.json`. - En `ibe-vectors.json`, H2, H3 y H4 no son públicas en kyber: el script las reescribe con sus etiquetas y las comprueba en cada fixture contra la file key de tlock y contra U = r·G2. Los cifrados de kyber usan un sigma aleatorio, así que el fichero se genera una vez y se congela. Para regenerarlo, desde un módulo Go temporal que requiera la referencia (`replace g.activething.com/go/DateKeys => ../datekeys-go`, `GOFLAGS=-mod=mod`, y la directiva `go` de la referencia, para que se use su toolchain): `go run ibe-go-vectors.go ../datekeys-ts/testdata/fixtures > ibe-vectors.json`. Los siete fixtures del formato 2 se añadieron el 29-09-2026 así, sobre `spec-v0.9`, tomando solo el bloque `fixtures`: los valores de los cinco anteriores salieron idénticos, y el resto del fichero no cambió. Los nueve del formato 3 se añadieron igual el 30-09-2026, sobre `spec-v0.10`, con los doce anteriores idénticos. + En `ibe-vectors.json`, H2, H3 y H4 no son públicas en kyber: el script las reescribe con sus etiquetas y las comprueba en cada fixture contra la file key de tlock y contra U = r·G2. Los cifrados de kyber usan un sigma aleatorio, así que el fichero se genera una vez y se congela. Para regenerarlo, desde un módulo Go temporal que requiera la referencia (`replace g.activething.com/go/DateKeys => ../datekeys-go`, `GOFLAGS=-mod=mod`, y la directiva `go` de la referencia, para que se use su toolchain): `go run ibe-go-vectors.go ../datekeys-ts/testdata/fixtures > ibe-vectors.json`. Los siete fixtures del formato 2 se añadieron el 29-09-2026 así, sobre `spec-v0.9`, tomando solo el bloque `fixtures`: los valores de los cinco anteriores salieron idénticos, y el resto del fichero no cambió. Los nueve del formato 3 se añadieron igual el 30-09-2026, sobre `spec-v0.10`, con los doce anteriores idénticos. El 01-10-2026, sobre `spec-v0.11`, se añadieron `format3_signed`, `format3_signed_cms` y `format3_sealed`, y se rehicieron los dos de `format3_signature_unsupported` y `format3_seal_unsupported`, que Go regeneró con `alg` 4294967295; los demás salieron idénticos. - El writer (`encrypt.test.ts`, `encrypt.stream.test.ts`, `encrypt.internal.test.ts`, `encrypt.property.test.ts`): - con los valores de su registro, reproduce byte a byte el PRELUDE, PUBLIC_HEADER, `header_binding` y CONTROL_CBOR de los siete fixtures de formato 2 de Go, con las mismas longitudes; cada credencial cae en el hueco del registro y la `.dkk` sale igual, salvo su `capsule_digest`; - lo que escribe se abre con `open`: las dos políticas, de 1 a 16 credenciales, cada una sola y todas juntas; contenidos en todos los bordes de trozo y de relleno, hasta 5 000 000 de bytes, con las dos reglas; rondas 1000, 1001 y 2000; @@ -397,7 +397,7 @@ Comprueba que los ficheros coinciden con `SOURCE.json`, sin faltantes ni sobrant `.gitattributes` marca `testdata/**` como binario para que git no altere ningún byte. -Copia actual: la de `testdata/SOURCE.json` (tag `spec-v0.10`, `cc35d2c`), que se sincroniza con `node scripts/sync-testdata.mjs sync --commit spec-v0.10`. +Copia actual: la de `testdata/SOURCE.json` (tag `spec-v0.11`, `ae33434`), que se sincroniza con `node scripts/sync-testdata.mjs sync --commit spec-v0.11`. ## Licencia diff --git a/src/lib/dkc/fixtures.test.ts b/src/lib/dkc/fixtures.test.ts index 5dbc2ce..a2d774a 100644 --- a/src/lib/dkc/fixtures.test.ts +++ b/src/lib/dkc/fixtures.test.ts @@ -16,6 +16,7 @@ import { checkHeadEnd, decodeHead, encodeHead } from './head.ts'; import { inspect, inspectView } from './inspect.ts'; import { paddedLength, type Padding, payloadAgeLength } from './padding.ts'; import { evaluateSecurity, type Verdict, verdictLines } from './security.ts'; +import { isPending, ported } from './testing/pending.ts'; import { h, hx, listTestdata, readBytes, readJSON } from './testing/testdata.ts'; interface FixtureExt { @@ -207,8 +208,11 @@ describe.each(dkcFixtures)('$json.file', ({ json: fx }) => { } expect(hx(encodeHead(decoded))).toBe(fx.head_cbor); const verdicts = evaluateSecurity(security); - expect(verdicts).toEqual({ signature: fx.verdicts!.signature, seal: fx.verdicts!.seal }); - expect(verdictLines(verdicts)).toEqual(fx.verdicts!.lines); + // Where the reference checks a signature or a seal, this library gives what + // a reader of v0.10 gives, until it ports the verification (testing/pending.ts). + const want = ported(fx.verdicts!); + expect(verdicts).toEqual(want); + if (!isPending(fx.verdicts!)) expect(verdictLines(verdicts)).toEqual(fx.verdicts!.lines); }); }); diff --git a/src/lib/dkc/open.test.ts b/src/lib/dkc/open.test.ts index 27f67b7..7ca1547 100644 --- a/src/lib/dkc/open.test.ts +++ b/src/lib/dkc/open.test.ts @@ -26,6 +26,7 @@ import { type Release, type ReleaseSource, suppliedRelease } from './release.ts' import { type Verdict, verdictLines } from './security.ts'; import { MemorySink, type Sink } from './sink.ts'; import { frame, split } from './testing/capsule.ts'; +import { isPending, ported } from './testing/pending.ts'; import { h, hx, listTestdata, readBytes, readJSON } from './testing/testdata.ts'; import { applyEdits, edits } from './testing/vectors.ts'; import { parseX25519Identity, unwrapX25519, x25519PublicKey } from './x25519.ts'; @@ -101,8 +102,8 @@ function expectFiles(f: Fixture, r: Opened, sink: MemorySink): void { f.name, ).toEqual(f.side.files ?? []); expect(opened.files.map(hx), f.name).toEqual(r.head!.files.map((x) => hx(f.plaintext.subarray(f.side.content_offset! + x.start, f.side.content_offset! + x.end)))); - expect(r.verdicts, f.name).toEqual({ signature: f.side.verdicts!.signature, seal: f.side.verdicts!.seal }); - expect(verdictLines(r.verdicts!), f.name).toEqual(f.side.verdicts!.lines); + expect(r.verdicts, f.name).toEqual(ported(f.side.verdicts!)); + if (!isPending(f.side.verdicts!)) expect(verdictLines(r.verdicts!), f.name).toEqual(f.side.verdicts!.lines); expect(r.areaLen, f.name).toBe(f.side.area_len); expect([r.plaintext, r.unusableHeadExtensions], f.name).toEqual([undefined, []]); } diff --git a/src/lib/dkc/security.test.ts b/src/lib/dkc/security.test.ts index c5686d8..49ded30 100644 --- a/src/lib/dkc/security.test.ts +++ b/src/lib/dkc/security.test.ts @@ -82,4 +82,14 @@ describe('verdictLines', () => { expect(lines('F1', 'S2')).toEqual([F1, S2]); expect(verdictText('S0')).toBe(''); }); + + // The verdicts of spec v0.11 (§29.7) that this library does not reach yet: it knows their fixed texts, and leaves to whoever shows + // F3, F4, F6 and S4 the text that names a key, a holder or a time. + it('has the text of the verdicts of v0.11 that do not name anything, and none for those that do', () => { + expect(verdictText('F2')).toBe('La firma no corresponde a este contenido.'); + expect(verdictText('F5')).toBe('Faltan firmas o sellos que la propia cápsula exige: trátala como no firmada.'); + expect(verdictText('S3')).toBe('El sello no corresponde a este contenido.'); + expect(verdictText('S5')).toBe('Sellado después de la fecha de apertura: no prueba nada anterior.'); + for (const v of ['F3', 'F4', 'F6', 'S4'] as const) expect(verdictText(v), v).toBe(''); + }); }); diff --git a/src/lib/dkc/security.ts b/src/lib/dkc/security.ts index f34e4f3..7437de6 100644 --- a/src/lib/dkc/security.ts +++ b/src/lib/dkc/security.ts @@ -30,7 +30,7 @@ const MAX_ALG = 2 ** 32 - 1; * - S1: a seal_type this reader does not implement; * - S2: a seal that does not decode or breaks its schema. */ -export type Verdict = 'X' | 'F0' | 'F1' | 'S0' | 'S1' | 'S2'; +export type Verdict = 'X' | 'F0' | 'F1' | 'F2' | 'F3' | 'F4' | 'F5' | 'F6' | 'S0' | 'S1' | 'S2' | 'S3' | 'S4' | 'S5'; /** The verdicts of the security area of a format 3 capsule. */ export interface Verdicts { @@ -51,6 +51,19 @@ export function verdictText(v: Verdict): string { return 'Lleva un sello de tiempo que esta versión no sabe comprobar: aquí no prueba nada.'; case 'S2': return 'El sello de tiempo es ilegible: no prueba nada.'; + case 'F2': + return 'La firma no corresponde a este contenido.'; + case 'F5': + return 'Faltan firmas o sellos que la propia cápsula exige: trátala como no firmada.'; + case 'S3': + return 'El sello no corresponde a este contenido.'; + case 'S5': + return 'Sellado después de la fecha de apertura: no prueba nada anterior.'; + // F3, F4, F6 and S4 name a key, a holder or a time: whoever shows them writes the text (spec §29.7). + case 'F3': + case 'F4': + case 'F6': + case 'S4': case 'S0': return ''; } diff --git a/src/lib/dkc/testing/ibe-vectors.json b/src/lib/dkc/testing/ibe-vectors.json index 632393e..8400b95 100644 --- a/src/lib/dkc/testing/ibe-vectors.json +++ b/src/lib/dkc/testing/ibe-vectors.json @@ -208,11 +208,21 @@ "name": "format3_seal_unsupported", "round": 2000, "signature": "b6cb8f482a0b15d45936a4c4ea08e98a087e71787caee3f4d07a8a9843b1bc5423c6b3c22f446488b3137eaca799c77e", - "body": "b07b6d9607a20f7f5fc773bea1a8f77a9ad42fffaa359e1449a0412fc657c467bcbfa115bc63ac1ea9bd4285ced4dbd40a5e9559e83c8624c1b99e0a9bf3509ab7c00a12de474f334b900a52307d78cb5968ba02e9b44888a5cc4b444ab31f1477683fac56082e39d2f83e9a1061cbb67e3bd7b05d9475e0f070703733d3afc7", - "gt": "04d467ae9024b08afd732304fd9868df5bbda57bfa9d5bfebf65d031e905d2bf857f8a88fcee62952d39e65c799055d404d766707bb062e52e3c8eea4f66163c20ba7817f9fe5a111cf36ef5fd844386f7ae7bd4d11d6d5c93e2926c8da91fc502b35641a7f0190002912096edc9c76d49962360d2bad1911df467eb86fd72b9c09285f1add48191dff6347f20bd44c50648b4a3bf87eed4d8d7d95a60165d2e946e1ea6fed6810ee4f94d52d953f066c0422adfd4b236f4421c074fb974bec00c4c618c0583f7c2f28e408feb9f90a52e264e5eecf79f00d7ca9a3b4c77008506cf3f0cc7585409ff2d59136776dbb30ff91083ab27c3180009db81de239ad3fc4b9f02ad3d216e582422dcfb82dfa57ef09e4a294cb2190f7a6080193c8c2c0d0f01c1873d1c1d73d955b1e2fb050f943a1fdb1e891e2957985f3bbffd6d7903fa7d9ae10c759bc4024e692c16243e09b054b35400ca1b83f1c3cd6ebf0474315b18f122064eae18a3a76e36ec0261f42fdc6af5117ffc31fbcfcb13d0990319b37af84e940338613f7ec5237fc2fd99830ba1982d4553a85b7039baeb2cd5dc4c3506f64d77b5c181fab62b0552f6092dc25e5ab457a2507c0cf2981130a94390ed662b93141656cf6f62c8345420524d7b17bf4b021b5375b17b6646dbd810f754dd221c39f521b1d1f7bf5b196faff6d7264c00d9971703b0d754c122ebc3eee3ad4c380e4c0cadde7a2207966500b1fcc9f1d5fce28a74457f08bb52d0fe611e970f9fd3b0720245c5a702efb71e71063831d96d4807448f9ac083249d", - "sigma": "bcd006607f91de520e715d7188d07be4", - "r": "6c6bf922679e1ca92f2527fa5874adf3837ddf35851c0d92f79997f9c1cfa987", - "file_key": "d09d6d78026155a099f10861789c5601" + "body": "8f2cb7577b036e54ca2019d01c6941d0ea9f18e3caade81e41c8f77f1514c0a5c75583d6372db607f902d5056c942b0c16c48999c5897a1b44953499a2da59eabc7fbd6ec27886882ce0bf2becdb259b8c62b940dcdfa43865e8de37c74dc49bffa90f04530e33134cc4ee5a843aae112b49ea99eaefc5645b5f963866ed94cb", + "gt": "0a6e979e201b2e75f93ab0af0d266ac7cc8a3617b6aff1e69b65b22dc64055057ce04a5b011c9575306692d12c7673c300aa12d22ecfbf09672bb412f563e8fded84b9a21751c88acffe5802d9a7df55a66be413cd3d2212633403270b96ad32142cc55923292008525f833f2d7b747dbb6f9c7653e219bff4e9c9e0516ebef129884263c4121939b278118d94a42d901045dc777ad453d5d0fe2733da0d22659d61391e6bce2b2cf285ccda5ccbd4d55c7b4d6173131e7fc67d9abd4849f67916e95986d61a47008f4c999f4181b6bf252ad1e82a4e8d28b197d76c08d533427159b66b7e1b2f9b07fda931aa2c5055059ec52f03addc43093aa3e4a9128f8853f2f13cafadf09ceb83a6e2a03c4c289fca5a290db1f1ff03037ad33fee894a0ad29276146cbccdf7433b8c24a1be750355e7c4f9c5d8ffc9824596530677d7fbe31da1424572493ab046340201c20708ae6c523eee32e21fc5ecd62de2fd764180372f617b7fb3fc960554cc4594fa31d74041a3fda4c1291a47a853bcbd3714d9735ee0b398de27283f571d68e37dfcf947d135c0f8db36556318a580de154f874271a4ebdde23bb966d3ef9977640e3b0943c1ee44872ddd379b2a307d1c3baae21bf9546b625f6f2a0aa11bd15c63df7d2315cfa16cf1b59629babca09818e8baab411f7943b1d16ca53df07a417eaeb19b1fb48c3451fe53c0b8d00398872b83f6836e7dc37b3005624488cf81123bfc106d79e3f41e8cfc338b9f960153b4f7a011d90cd0eb81ef3bf6264be3fb165f8989621ee8543ca1741e87091d", + "sigma": "25fedf2e4e3d2db30d94a0b468b90e38", + "r": "51d85fb4996c5c96c33e15def42a07200863bcda50cb31b102ac1e062e361e8a", + "file_key": "ad1ef55f85be2eb6be3b14c2e29d3b10" + }, + { + "name": "format3_sealed", + "round": 1000, + "signature": "b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39", + "body": "a997ce105da38e371d30e785139a09988fa76d996731b452b367b2f162e45e7e50d6b637ba7859285c30d2c4f820af1b102a566baedafd449bf5822b312e47687e42c0415c75d6a1c28f53535f030161d7f76ed21ad0559c06c944134f76171b999565fdc59b95d4ed7e86cde4d69425cc468c85b1034a7b9b9a59bca57851ec", + "gt": "001c6f2698d3a4bc7f23c878263702983399303c88873844513fe85d10955c2b7e69936c732c1077c153c6601d825cf7062afd39ff72904bf52af7a30585da8cb4f0f6ee9d2ac12baf3814c278c09c1742b36a40705b91fe0b227e06497f8083102a98bd58616c3bbb4fb0aad092bb87ba93e3d86b9a9e68140036de255647436b4accad045b329e91fbf432621b28c413e0ca8716dae6632087060a2925f7714d649528aac5b42071c4252435ec7591fd4c7dd13b99e25a1f9e53d3d2ed51c00a4fa88689bdf09ecd5f4ba2900ea126e217e73192188618cb1f458c9e9f7eceb05fd552fc01d1e51197164ed04a84640745cded02537d0586f312159d36ef30e0d7f67b166159a3cac2d6c7de7b9d3d106bd35bde3336ee925cbd3201056c0a0f8437f0bc1acc98afd51c0f0f729f271cbdccd1481da059f6854efe3843897997353495e4b769de981eb57c5639257b0d3b7a8c53f45c42cee145a111e86abd6def541e2bc10a5626499d4f4aa697c64c005e0b1f3b87944ce8267f3e0dad6a012b5c49b77b9917ffa0bad6983b19370c4cbe51c2af02cb987240faf1bac6492214ea3fa45ec28e075ed88df84553660c63ea07fd57c53ce6342d58b9f41025f252e5344ebba00f0df57fd477604b48516c722c5c11f3bfa0eb5d09b8709711190135845ffd12c9e4fb9f90a2f630006304a92e51412710aa7e4dec55628584aa39a84713225957a9bec21771697bd501b4b3b3c0d17725736a05883e1420af57f4985ea2127f7f088250d4fa1470a50fc37311f01ad479d34f6c58c7fb27ab", + "sigma": "561ecf99d0ee7b65b9b8eabdf1326d49", + "r": "2cb8d938e57ac3f488a86ae32e8b8cf337e53d1dc4026251fbb765c7d55a5f56", + "file_key": "e28fad3c090481bd1c51bbe29c1e51e3" }, { "name": "format3_security_v2", @@ -228,11 +238,31 @@ "name": "format3_signature_unsupported", "round": 1001, "signature": "b33bf3667cbd5a82de3a24b4e0e9fe5513cc1a0e840368c6e31f5fcfa79bea03f73896b25883abf2853d10337fb8fa41", - "body": "85ddc68a8dcec80a9e9d123d066b83dc0c16283cb740cfc36ce35d2196ba4826be94684aab2555c03c269fcaf624274419dfe8b4d1dba7a9a04e326decb075d7420688adb9ce607dd827549ef3d089d43b4106818de6e75b8b55360305cc7623cd12ab07ae61078c8b91bf5baf00fe3cb8603745428506a3b78b325dfede923a", - "gt": "0d43b966f4f1f1a43e4bdf25a60b60eedf15cc1f7dc698de7b6d042072d1265b5e501dbb7f0c746c3095682b2e86fda305cf124564884f21141871d5185898cfb7317513c357f95a8fa2755db12fa0eaeb794b157a870a4225df6a0626537cdf1055f6226bd8e3d1abac2688f5511d7e07c9ac7dac5e345fc70a018cbff6f399621d8005e145b9b021142149d4870621140503d9db1e8208b4e8ee73f0091368a3a9e84e8960a611814c63af01ad09140abfb4e1dc5c307af0c308e72ea004571179484e7f6f3de09e88a36de8e979bb4dbeec4371e533ff21efecbc3b56d945e032f5b229908f11bd409c4591adfa850c767c96aa8d3583247a0d2c17afb47861f21766175b7c7b6c6870247aa3750253f17d01603ec0108c633970a2b65ce50733126a7b9af02d813168206328058b7522c1bb09b77ace44a35a2df3a96501440bef3fcd0bab7842d02932771cdf56010035abebd08058b988dc959c722e83bde308eb10a08da4723c21ca948c8823c890d27e84bf0c5943ff0579f958af7002154a40d6481bef47c9b09638dd4f59a704b09c1965e009e5c5109436611d4e763e1db38ef66f66bd2c911cac21dd83038822faaf86b2831099093ed1af66cecb24f7255d3023bedbd26cc79f094c2a388ff7089e59e970f42a6eb64e9d50bb07448cbb244d810db75642ef82cc21b59b42614228a81d85a29159730f96485bc39207dcd0861bdea4b1349026271b4817d8977da1d306dd135e5f7ab85f3f2b5a8e46f71052efa32c0c8e22e38c541ac28c516fa6259a97d0f26db37ae3e25f", - "sigma": "ac43dcfd4164774fc61831d88d384157", - "r": "5bebc6873b788ffcca50e40aad9a76566d44c2240c12f1db6c546a48c08b4ae9", - "file_key": "b48f1a33fd384618c3e5316af390311d" + "body": "956a20295b5d8ff897cdf7fc9e533de6fcb6057fa10b755893897c4c6fb3fb72374e60eec44a7f2389b6b49972e368160c1479b4a14ecaf4ea8c27fb160c585f3c2ac8357be1005d783aa174ffac39775b5f51e4f6f7623fc82b77969cbe6186e5d95281941b126463673b5d33ed12972719d40fc8602bc1952750a42f0d6ea2", + "gt": "14700225b064ece17f372d5137af4c4242db24d8c3bd506b1259ecd21ae3c2845cd56b84fadc5723771e18ae2cc94285051cda39cf875302162539268801b7e9143809495233e5a77842edcbe0baf59ffe085f971329b670b17b0bcf84d8d74b088b75aaf80aae14e624de290d416fa31abe62dedb1c9dd2155d2dc026c4b5eb68121276680026783a36472429454f7f17cecd5400cf6356659665e72b200f750aa9047e84fd5721b5cc40a077dca09d2b9b6b126689439731b196ef1eef50b0095f10ea1f86cdc4d3db1d7ff339584f614f4eaef8463a35c40b6b9025d390dbafde382e73f3394690a3814cdfa65a6615bc8c8bdc4f3a010c6884bc7ff56268d301b4b631698df49a8a8153440cac5a37dda08280dc8bdfce96cbc3193862bb092955dcccd05445bd6fda0b30ef07177a12f241b2b80751528b136bcfd2b92ce0f8d00f892d7523bdb7de3f6f1ab59008d716fe3eaea532f8d76fc46350cb08cab7b28c4aedaa6536ed2023ce0ad4b124f9f734cb8ea7f555510cafb4808e9111a92d0565798da927e5931f6112a132b7e7976c65373e42edbe8444a2f81882e16326c244d6b3bb338dfc54e2c01fe4100a9a2965a72a1d812ecd45fe7d687b2123bd5e2ad48363ebfabe7368c709ee0ae934fe01c4d8328f877f080f334b761568ef4d037787ad6024c736d783c5e10152c2764e6371df3c9d62fd38ad3a5868a46ecb9413ea8f444e25cbf2e655880004d7773e1a83f1396610bee578b948cecab442db420df57323ea0d092001112a10809b0681797825abac68cfd3553f", + "sigma": "d0cc7b69b9ff4006bfff36a70c7987e2", + "r": "42793a9f250083ed5340c13d093381f71f800fdcaa65bf0058c7893e9f29a56a", + "file_key": "7043ce939cf88f8fd50476bb8fc45014" + }, + { + "name": "format3_signed", + "round": 1000, + "signature": "b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39", + "body": "a633e4d9d6b63893e7441848e2e8530fa4aa912d86df7644feee085701a3bb1269a640556de1b08f233397edc405969e006d17781bf2e447a0d23c75ed8b8b5dbb14aec6d2b485ee4a58487a5b6c51645dd9bde14f62ab4676ced2da368e3eae4f292d6ba505506c8c854ff0df690005d909ad470606ab6780d56ddb77e09f3e", + "gt": "08afd5eb35cc1269ffcb356ed60fc50514363f9c7ac28e310558bbfd129f039fe4abdcccfd5294ebdbcce0bd61484a8d0533dd91cfe34dd9871a498e3e7e1ad410993906255df086d2c5112b603941f01e9813f94ad6da342c8a699bc83cee7308fcf55b062be1141aa2a9be56f66dc1ed15d9fcf48310aaf1f614844c206d2b10ebba135df7a55f017233fb362896e00f3d95613ca8ee5dc62bd02fdc87cfc074839593157c74afdda2960d65b5c025dbbc4f2949e2e347a743dd0b3b6ad15c11cd03f50f84c7e67a2d02f8831c2da4a07b64b8981742dab4586b1be1b53145624aa83c44447b7d56b725e288fb4ddd195a69cae2e84b3ac99b9d779f1d174f926528198669acda970e8dfafc2252e96501c92d29e62097da1dab49ffd679ee08c86b5c002068cfcac503d945701b94a27056d9474eacb32e7f1d5c20f81c31c77d77315d3b65239f537c7b728c32dd01d991e294dac259982a5b8ecf5c954574f886dfadc91b76fa981229bebd46183b6f098de205dc203e001494d7aa04a017a9939c3a6398651d3bd58b09f93ce42a4831b1e337a923c451dc1b58c174ed709d2a4b65cfbaa86e545d96ab9744cc05daa4e03fe2484769236636e2c014a767c4fa4aa1b34e5fa0e04da48e7d50ebd8f7957a4a656ec35d5670d2f88fbf561827704a5eed2156f22a7e34458ac470095930f2d816c8a128faf5f89bd22f987f355b94012c7b03823c7f3505986cb917e21873b81d2f71ff0ca7deca1de541ceb4821550edb824aea7be01e8b9d3ca69d248a2c2cbb726776661d3965377b0", + "sigma": "05def51763185fe63e7fe7f2ae189eea", + "r": "222d8e58e9e99a41cb3d32f3aa8dce673ed42ddeb04fad64c3a2251c5ca64d85", + "file_key": "956e9ef859948545f4adb5e8d6c76e0e" + }, + { + "name": "format3_signed_cms", + "round": 1000, + "signature": "b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39", + "body": "9504af06ca444a66940de36d5c15d197d828d2e5f8de834a29190c4d61efe831d719a5acaf7b598b3338134baf78846e139247bf66b694f39d4b6c756c51d8c22264de003d1188485c8ab853438a01eed8acd71beaec168e8507586b56f9216120bec147e04e1c6e2c1c9faa0a0dc5a9f28ba97f3fca64ce81cf4bfe9f7f56e9", + "gt": "194557dea3992a89e3f3c9e18bd7830dcfa80e6ce353e6a978df7f0747790286aa441c1d6625e7a078f93d3d430bd3d5186a9d396b29f82ef16a9d491bd6a7f95ccbb0e67dbbdf387cdaa98f6a8466932bb879d56cde79f2642184087b89bdac020f1902e5b89e119b611134d2de3dadbfe28573bca6fac7e3bace78ace8a10104643f5ba979a0ff1fe78d92c9f1265c12cb2b75750e810c30ef56da94cc08ab70a728526d541eba29659b3a61924fe6e300231f16de4f0e54add69d0020e256032ea3f894c5de0b39bf15fb6e0851931b78579990d9f339032ef7906834e0173bc7149735a716f3f1f22c3d8741e1ca0af3b81cbde5a78bba9116a9f4700de4b6ea6e38681eac76a113a4a5fda67b6b4742faeb7b18396630e045fee91131f70da39c61e72730299206fed44981f8d5ebfb9cf42b60330db1602d6a91f529e4eb0f6fd312f20db3fdc6b5b1066d5e92019ee088f5e8a2cc8351ad059e5d44831cdf4cdfb2b4c4b5e55ea36c6a02c98bfb38b5353b9fcc55409df61050e9d26f0f5113f8bc466a6a875f44ff724391e2c33df0723ff631e0c12f01d9c85be7a987e7a9b755560b07e40cd74a3cf4e481128c4da457ef651a5b439405ec92507fdfe5dfa15f6d93c0369606427896156a6788672f70fbdcdfde021fc706b1f074130af3acb4b84d1e6c08ebf0ffe331d68db84803e1d6ad49ec9a1903e634a5d25607e0d48425cfab07168615bebac1a60793b2e6b11df0594cd7cb6616f6c412946f364fad59057432b7f635bac46ed65a5cd10ccc6eeb429edc5779bb058471", + "sigma": "644b74a1d11765ce2aea0b119b0bc161", + "r": "12b28076640c9005c18ded711e0d83e826039657477a9ab9c2c0973018d9bd6a", + "file_key": "7a27fbf3d45ec8133a3d27340f76f8b3" }, { "name": "format3_single", diff --git a/src/lib/dkc/testing/mutation-texts.json b/src/lib/dkc/testing/mutation-texts.json index 8013d8a..52d93c2 100644 --- a/src/lib/dkc/testing/mutation-texts.json +++ b/src/lib/dkc/testing/mutation-texts.json @@ -1,7 +1,7 @@ { "description": "The text of the error of capsule.Open for every case of testdata/vectors/mutations.json, or ok for a capsule that opens; see the header of scripts/mutation-go-texts.go.", "generator": "scripts/mutation-go-texts.go", - "spec": "0.10", + "spec": "0.11", "cases": [ { "name": "PUBLIC_HEADER_A + SEALED_CONTROL_B", @@ -820,7 +820,11 @@ "text": "ok" }, { - "name": "a signature of alg 1 opens with the verdict F1", + "name": "a signature of alg 4294967295 opens with the verdict F1", + "text": "ok" + }, + { + "name": "a signature of alg 1 that does not verify opens with the verdict F2", "text": "ok" }, { diff --git a/src/lib/dkc/testing/pending.ts b/src/lib/dkc/testing/pending.ts new file mode 100644 index 0000000..0abc9d3 --- /dev/null +++ b/src/lib/dkc/testing/pending.ts @@ -0,0 +1,32 @@ +// What this library does not do yet of spec v0.11: it reads the security area +// of a format 3 capsule as a reader of v0.10 does, so a signature or a seal that +// the reference checks gives F1 or S1 here. The shared fixtures and vectors +// already record the verdicts of the reference (F2 to F6, S3 to S5), and these +// helpers say what this library gives meanwhile, so that the tests state the +// gap instead of hiding it. Porting the verification (spec §29.8 to §29.11) +// makes every function here the identity, and the guard test fails until the +// entries are removed. +import type { Verdict } from '../security'; + +/** Verdicts that a reader of v0.10 cannot reach: those of a signature or a seal that is checked. */ +const SIGNATURE_CHECKED: readonly Verdict[] = ['F2', 'F3', 'F4', 'F5', 'F6']; +const SEAL_CHECKED: readonly Verdict[] = ['S3', 'S4', 'S5']; + +export interface Recorded { + readonly signature: Verdict; + readonly seal: Verdict; +} + +/** The verdicts that this library gives where the reference records `recorded`. */ +export function ported(recorded: Recorded): Recorded { + return { + signature: SIGNATURE_CHECKED.includes(recorded.signature) ? 'F1' : recorded.signature, + seal: SEAL_CHECKED.includes(recorded.seal) ? 'S1' : recorded.seal, + }; +} + +/** Whether the verification of the reference is something this library does not do yet for `recorded`. */ +export function isPending(recorded: Recorded): boolean { + const p = ported(recorded); + return p.signature !== recorded.signature || p.seal !== recorded.seal; +} diff --git a/src/lib/dkc/testing/vectors.ts b/src/lib/dkc/testing/vectors.ts index 746145b..27bdeb1 100644 --- a/src/lib/dkc/testing/vectors.ts +++ b/src/lib/dkc/testing/vectors.ts @@ -80,14 +80,14 @@ export function result(v: unknown, where: string): string { return s === 'ok' ? s : code(s, where); } -/** A verdict of the security area of format 3 (spec §29.7): X, F0, F1, S0, S1 or S2. */ +/** A verdict of the security area of format 3 (spec §29.7): X, F0 to F6 or S0 to S5. */ export function verdict(v: unknown, where: string): Verdict { const s = str(v, where); if (!(VERDICTS as readonly string[]).includes(s)) throw new FormatError(where, `"${s}" is not a verdict`); return s as Verdict; } -const VERDICTS: readonly Verdict[] = ['X', 'F0', 'F1', 'S0', 'S1', 'S2']; +const VERDICTS: readonly Verdict[] = ['X', 'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'S0', 'S1', 'S2', 'S3', 'S4', 'S5']; /** A step of the reading flow of spec §63, 1 to 18. */ export function step(v: unknown, where: string): number { diff --git a/src/lib/dkc/vectors.test.ts b/src/lib/dkc/vectors.test.ts index 4c37956..a8dd15f 100644 --- a/src/lib/dkc/vectors.test.ts +++ b/src/lib/dkc/vectors.test.ts @@ -61,6 +61,7 @@ import { import type { Release, ReleaseSource } from './release.ts'; import { evaluateSecurity, type Verdict, verdictLines } from './security.ts'; import { MemorySink } from './sink.ts'; +import { isPending, ported } from './testing/pending.ts'; import { hasTestdata, hx, listTestdata, readBytes, readJSON } from './testing/testdata.ts'; import { applyEdits, @@ -584,22 +585,25 @@ describe('vectors/mutations.json', () => { const inspected = f.filter((c) => c.error !== 'ok' && c.step <= LAST_INSPECT_STEP); const opened = f.filter((c) => c.step > LAST_INSPECT_STEP); - it('has the cases README counts: 209, 169 of §64 in their runs, 57 in steps 1 to 8 (39 of them from §64), 3 that open', () => { + it('has the cases README counts: 210, 169 of §64 in their runs, 57 in steps 1 to 8 (39 of them from §64), 4 that open', () => { // v0.8.2 had 65 cases, which stay first; v0.9 ran the 33 mutations of the // first two lists of §64 on the format 2 fixtures, the 22 of its third // list and 5 companions with a .dkk; v0.10 adds a case to that list, the // same 33 on the format 3 fixtures, the 47 of the list of format 3 and 3 - // further cases. - expect(f).toHaveLength(209); + // further cases. v0.11 adds one outside §64, a signature of alg 1 that + // does not verify, before the seal of seal_type 1: 205 of the 210 cases. + expect(f).toHaveLength(210); const run = (from: number, to: number, spec: boolean): boolean => f.slice(from, to).every((c) => c.spec === spec); expect([ run(0, 33, true), run(33, 65, false), run(65, 121, true), run(121, 126, false), - run(126, 206, true), - run(206, 209, false), - ]).toEqual([true, true, true, true, true, true]); + run(126, 205, true), + run(205, 206, false), + run(206, 207, true), + run(207, 210, false), + ]).toEqual([true, true, true, true, true, true, true, true]); expect(f.filter((c) => c.spec).length).toBe(169); // README: the same 33 on the fixtures of formats 2 and 3 are named // "format 2: …" and "format 3: …". @@ -610,6 +614,7 @@ describe('vectors/mutations.json', () => { expect(opens.map((c) => [c.spec, c.verdicts!.signature, c.verdicts!.seal])).toEqual([ [true, 'X', 'X'], [true, 'F1', 'S0'], + [false, 'F2', 'S0'], [true, 'F0', 'S1'], ]); expect(inspected.length + opened.length + opens.length).toBe(f.length); @@ -676,7 +681,8 @@ describe('vectors/mutations.json', () => { expect(r.error?.message ?? 'ok', 'the text of capsule.Open').toBe(TEXTS.cases[c.index]!.text); if (c.error === 'ok') { expect({ step: last.step, ok: last.ok, error: r.error }).toEqual({ step: 18, ok: true, error: undefined }); - expect([r.verdicts, verdictLines(r.verdicts!)]).toEqual([{ signature: c.verdicts!.signature, seal: c.verdicts!.seal }, c.verdicts!.lines]); + expect(r.verdicts).toEqual(ported(c.verdicts!)); + if (!isPending(c.verdicts!)) expect(verdictLines(r.verdicts!)).toEqual(c.verdicts!.lines); expect(sink.opened?.head).toBe(r.head); } else { expect({ step: last.step, ok: last.ok, error: last.error }).toEqual({ step: c.step, ok: false, error: c.error }); @@ -716,7 +722,7 @@ describe('vectors/mutations.json', () => { expect(r.error?.message ?? 'ok', 'the text of capsule.Open').toBe(TEXTS.cases[c.index]!.text); if (c.error === 'ok') { // A format 3 capsule that opens leaves the output untouched. - expect([last.step, last.ok, r.verdicts?.signature, r.verdicts?.seal, closed, aborted]).toEqual([18, true, c.verdicts!.signature, c.verdicts!.seal, false, false]); + expect([last.step, last.ok, r.verdicts?.signature, r.verdicts?.seal, closed, aborted]).toEqual([18, true, ported(c.verdicts!).signature, ported(c.verdicts!).seal, false, false]); } else { expect({ step: last.step, ok: last.ok, error: last.error }).toEqual({ step: c.step, ok: false, error: c.error }); expect([closed, aborted, sink.opened]).toEqual([false, true, undefined]); @@ -1145,8 +1151,10 @@ describe('vectors/security.json', () => { const VECTOR_FILES = [ 'vectors/cbor.json', 'vectors/dk1.json', + 'vectors/ed25519_strict.json', 'vectors/head_schema.json', 'vectors/inspect_differential.json', + 'vectors/locator.json', 'vectors/mutations.json', 'vectors/padding.json', 'vectors/path_fold.json', @@ -1154,6 +1162,7 @@ const VECTOR_FILES = [ 'vectors/profile_quicknet.json', 'vectors/quicknet_rounds.json', 'vectors/security.json', + 'vectors/security_cms.json', 'vectors/tlock_ibe.json', ]; @@ -1186,6 +1195,38 @@ describe('testdata/', () => { for (const f of VECTOR_FILES) expect(readme, f).toContain(`\`${f}\``); }); + // The vectors of spec v0.11 for the verification of the signature, the seal + // and the locator (§29.8 to §29.11, §44.1) that this library does not port + // yet: their structure is checked here, and what a reader of v0.10 gives on + // them, so that the gap is stated. Porting makes these blocks check the + // verdicts and the locator themselves. + describe('vectors of v0.11 not ported yet', () => { + it('security_cms.json: every case has a context and verdicts of the table, and the cases without a context are read as the reference reads them', () => { + const f = object(readJSON('vectors/security_cms.json'), 'security_cms.json'); + expect(f.spec).toBe(SPEC_VERSION); + const cases = array(f.cases, 'cases').map((c, i) => object(c, `cases[${i}]`)); + expect(cases.length).toBeGreaterThanOrEqual(20); + for (const [i, c] of cases.entries()) { + const at = `cases[${i}] ${String(c.name)}`; + const recorded = { signature: verdict(c.signature, `${at}.signature`), seal: verdict(c.seal, `${at}.seal`) }; + const ctx = object(c.context, `${at}.context`); + expect(hexOf(ctx.control_commit), at).toHaveLength(32); + expect(hexOf(ctx.head_digest), at).toHaveLength(32); + // Read without the context of a capsule, as a reader of v0.10 does, the reference says exactly what this library says. + if (c.no_context === true) { + expect(evaluateSecurity(hexOf(c.security_cbor)), at).toEqual(recorded); + expect(isPending(recorded), at).toBe(false); + } + } + }); + + it('locator.json and ed25519_strict.json name this specification', () => { + for (const name of ['vectors/locator.json', 'vectors/ed25519_strict.json']) { + expect(object(readJSON(name), name).spec, name).toBe(SPEC_VERSION); + } + }); + }); + it('checks the harness itself', () => { const base = Uint8Array.of(0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39); const ed = (list: unknown): Edit[] => edits(list, 'test'); @@ -1211,9 +1252,15 @@ describe('testdata/', () => { expect(() => keys({ b: 2 }, 'x', ['a'], ['b'])).toThrow(/missing "a"/); expect(() => code('ERR_NOPE', 'x')).toThrow(/not a normative code/); expect(() => step(19, 'x')).toThrow(/outside 1..18/); - expect(() => checkSpec({ spec: '0.8.2' }, 'x')).toThrow(/want 0\.10/); - expect(() => verdict('F2', 'x')).toThrow(/not a verdict/); + expect(() => checkSpec({ spec: '0.8.2' }, 'x')).toThrow(new RegExp(`want ${SPEC_VERSION.replace('.', '\\.')}`)); + expect(() => verdict('F7', 'x')).toThrow(/not a verdict/); expect(hasTestdata('README.md')).toBe(true); expect(errorCode(new Error('x'))).toBe(''); }); }); + +/** The bytes of a hexadecimal string of a vector file. */ +function hexOf(v: unknown): Uint8Array { + if (typeof v !== 'string' || !/^([0-9a-f]{2})*$/.test(v)) throw new FormatError('vector', 'not a hexadecimal string'); + return Uint8Array.from(v.match(/../g) ?? [], (b) => parseInt(b, 16)); +} diff --git a/src/lib/dkc/version.ts b/src/lib/dkc/version.ts index 87867b0..d561f91 100644 --- a/src/lib/dkc/version.ts +++ b/src/lib/dkc/version.ts @@ -12,7 +12,7 @@ export const VERSION = '0.2.0-dev'; /** * The version of the DateKeys Protocol Specification that this library - * implements: the tag spec-v0.10 of the Go reference, whose shared vectors + * implements: the tag spec-v0.11 of the Go reference, whose shared vectors * and fixtures (testdata/) all name it. */ -export const SPEC_VERSION = '0.10'; +export const SPEC_VERSION = '0.11'; diff --git a/testdata/README.md b/testdata/README.md index ba4b909..bf27b4c 100644 --- a/testdata/README.md +++ b/testdata/README.md @@ -44,6 +44,7 @@ Conventions for every file: | `vectors/path_fold.json` | the key of R7 of segments, and their NFD | §29.5, §29.5.1 | | `vectors/head_schema.json` | heads of format 3 and the result of decoding them | §29.4 to §29.6, §69.1 | | `vectors/security.json` | security areas of format 3 and their verdicts | §29.3, §29.7 | +| `vectors/ed25519_strict.json` | Ed25519 signatures and the result of the strict profile of the author signature | v0.11 §29.9 | | `vectors/mutations.json` | the mutation corpus: the 169 mutations of §64 and further cases | §63, §64 | | `vectors/inspect_differential.json` | 5110 mutations of fourteen fixtures with the verdict of steps 1 to 8 | §63 | | `fixtures/.dkc`, `.json` | official capsules and every intermediate value | §67 | @@ -72,7 +73,7 @@ extension and a noncritical CONTROL_CBOR extension. The release that opens each capsule, a published Quicknet signature, is in its `.json`, so they all decrypt offline. -Nine are in format 3. Their plaintext file is BODY, L bytes: the frame, the +Twelve are in format 3. Their plaintext file is BODY, L bytes: the frame, the security area, the head and the files (spec §29.2). | Fixture | Policy | Files | Comment | L | Padding code | P | Area | Verdicts | @@ -86,14 +87,45 @@ security area, the head and the files (spec §29.2). | `format3_security_v2` | `time_only` | 1 | — | 659 | 2 | 768 | 512 | X | | `format3_signature_unsupported` | `time_only` | 1 | — | 659 | 2 | 768 | 512 | F1, S0 | | `format3_seal_unsupported` | `time_only` | 1 | — | 659 | 2 | 768 | 512 | F1, S1 | +| `format3_signed` | `time_only` | 1, `nota.txt`, with mtime | — | 32915 | 2 | 34816 | 32768 | F4, S0 | +| `format3_signed_cms` | `time_only` | 1, `nota.txt`, with mtime | — | 32915 | 2 | 34816 | 32768 | F6, S0 | +| `format3_sealed` | `time_only` | 1, `nota.txt`, with mtime | — | 32915 | 2 | 34816 | 32768 | F4, S4 | -The first five are what `capsule.EncryptFiles` writes. The other four only a +The first five were written by a writer of v0.10, with the area of 512 bytes; +a writer of v0.11 writes the area of 32768 bytes, as in the last three, which +`capsule.EncryptFiles` writes with a signer and a sealer. The next four only a generator of test vectors may write (spec §62.1 rule 13): an area larger than -the 512 bytes of this version, which a reader accepts, a security map of -version 2, which a reader of this version cannot read, an author signature of -`alg` 1 with a random key of 32 bytes and a random signature of 64, and that +512 bytes, a security map of version 2, which a reader of this version cannot +read, an author signature of `alg` 4294967295, an `alg` that no version +defines, with a random key of 32 bytes and a random signature of 64, and that with a seal of `seal_type` 1 and a random token of 32 bytes. None of them has -a verdict that stops the opening. The BODY of `format3_tree` is over two STREAM +a verdict that stops the opening. + +The last three are signed and sealed with test keys (spec v0.11, §29.8 to +§29.11), and their record has a `signature` object, and `seal` in the third: + +- `format3_signed`: `alg` 1. The seed of the test key, which is not a secret, + is in `secret_seed`: Ed25519 is deterministic, so signing `author_message` + with it gives `signature` again. Opening it gives F4 and the key `author_key`, + `dkauthor1…`; with that key among the saved ones, F3. +- `format3_signed_cms`: `alg` 2, two certificates, an ECDSA P-256 one and an + RSA 2048 one, each with a seal CAdES-T from a test authority, dated before + the round time. The record has `signers` (SIGNERS in hexadecimal), + `certificates` (the DER of each), `signature` (the DER of the CMS signature) + and `signer_results`, one for each required signer in the order of SIGNERS: + holder, issuer that the certificate says, result, seal time, and whether the + seal, with its accuracy, precedes the round time. The private keys are not + kept: ECDSA and RSA-PSS are not deterministic, and a reader only verifies. +- `format3_sealed`: `alg` 1 as the first, and a seal of `seal_type` 2 over + `SEAL_SUBJECT`. The record has `seal`: `seal_subject`, the `token` in + hexadecimal, the `holder` of the authority as §29.7 shows it, and the time. + +In the three, the record gives the commitments `control_commit`, `head_digest` +and `signers_digest`, the text `author_message` and its `author_code`, and the +exact content of key 2 of `SECURITY_CBOR`. An implementation checks them from +the control, the head and the security area of the fixture, and the verdicts +from `verdicts`. The certificates and the tokens are random, so these fixtures +are frozen once written like the others. The BODY of `format3_tree` is over two STREAM chunks, with its head in the first. ## Edited files @@ -380,6 +412,76 @@ signature and the seal are evaluated apart, and the first row of the table of give F1 with the seal intact, and a seal that breaks its schema gives S2 even with an unknown `seal_type`, which is read only from a seal that meets it. +## `vectors/security_cms.json` + +Security areas with an author signature of `alg` 2, a CMS signature with +certificates, or a time seal of `seal_type` 2, an RFC 3161 token, each with +the context of its capsule and the verdicts of spec v0.11 §29.7, §29.10 and +§29.11. They complete `security.json`, whose areas have no valid signature or +seal. The file is frozen: the certificates and the tokens are made once, with +test keys, so a second implementation reads them and must reach the same +verdicts. Delete the file to make it again. + +```json +{ "name": "alg 2: a required signer is absent", "security_cbor": "a4…", + "context": { "control_commit": "…", "head_digest": "…", "round_time": "2030-01-01T00:00:00Z" }, + "signature": "F5", "seal": "S0", "signers": [ { "holder": "Ana López", "result": "valid", … }, { "holder": "", "result": "absent", … } ] } +``` + +`context` is what a verdict needs besides `SECURITY_CBOR`; with `no_context` +the area is read as a reader of v0.10 does, without a capsule, and any +signature is F1 and any seal S1. `signers` are the results of the required +signers in the order of SIGNERS, and `foreign_signers` those that are not +required and never count. A valid seal gives `seal_holder` and `seal_time`. +The cases cover F6 with two signers, with a seal after the round time and +with a signer who is not required; F5 for an absent signer, no seal, a seal +from before the certificate was valid and a key 3 beside the signature; F2 in +the context of another head; F1 for SIGNERS out of order or empty, a signature +that is not a CMS, and the lack of a context; and, over an `alg` 1 signature, +the seals S4, S5 (also when the accuracy reaches the round time), S3 (another +subject, an authority expired at its time), S2 (a TSTInfo of version 2, not +DER), S1 (a SHA-384 imprint) and a seal over a capsule without a signature. + +## `vectors/locator.json` + +The extension `datekeys.capsule` of a `.dkk` and what it points to (spec +v0.11, §44.1): a `.dkc` of patterned bytes in an envelope of age whose header +(`envelope_header`) goes in the locator and whose `rest`, without a mark, is +hidden in a `host` file at `host_offset`; the locator sealed with tlock for +round 1000 (`locator_sealed`), with its plaintext of 4096 bytes +(`locator_plaintext`) and its fields; and the data of the extension +(`extension_data`), with the note `note` and the DateKey `datekey`. A reader +opens the locator with the release of round 1000 (`quicknet_rounds.json`), +finds the rest in the host, checks `rest_size`, `rest_digest` and +`capsule_digest`, and gets the `.dkc` back. The file is frozen: the envelope +and the locator hold randomness. + +`padding_cases` give the length of the plaintext of the locator for the length +of its CBOR without the padding of key 6: the least multiple of 4096 that key 6 +can fill exactly, which skips a multiple where the CBOR length of key 6 jumps +(a base of 4070 gives 8192). `uri_cases` give the verdict of the rules of §44.1 +on an address: the scheme `https` or `ipfs`, the raw ASCII authority with no +percent sign or userinfo, a host of letters, digits and hyphens or a public IP +literal, and a port from 1 to 65535. + +## `vectors/ed25519_strict.json` + +Ed25519 signatures, in hexadecimal, and whether the strict profile of the +author signature accepts them (spec v0.11, §29.9): the equation of RFC 8032 +without the cofactor, A and R canonical, S below ℓ and A not of small order. +They follow the cases of «Taming the many EdDSAs»: S + ℓ, the top bits of S, a +non-canonical R, the eight points of small order as A, non-canonical +encodings of A, a key of mixed order with and without the cofactor, and an R +of small order with a key of prime order, which this profile accepts. + +```json +{ "name": "A of small order, the point 0 of the torsion, R the identity and S = 0", "message": "…", "public_key": "0100…", "signature": "0100…", "valid": false, "stdlib": true } +``` + +`stdlib` is what `crypto/ed25519` of Go answers, for the record: where it is +true and `valid` is false, an implementation needs the checks of the profile +before the equation, as `internal/ed25519strict` does. + ## `vectors/mutations.json` The mutation corpus of spec §64, as frozen data. Each case is a `.dkc`, what diff --git a/testdata/SOURCE.json b/testdata/SOURCE.json index f55a4f5..3185cde 100644 --- a/testdata/SOURCE.json +++ b/testdata/SOURCE.json @@ -1,115 +1,130 @@ { "module": "g.activething.com/go/DateKeys", - "commit": "2213b8c3fd7e20dac09b82ae3fba383d8993edd6", + "commit": "ae334343bfa2433bd82b679c8119596dbd4840a4", "files": { - "README.md": "e6d0c3a0fe0fcfdefec609d2c02c4ac667430e45b2eb3756b17d745cb056ae03", + "README.md": "bc32fe488a0e4d2298a9048711c235661187ba57dc3f156767f8cb5b2f3e6416", "fixtures/empty_payload.dkc": "871e9bf05b52bbae17f3adfbbf97b46e7f0e53aa8f57bcaa506e43f36f53a9d4", "fixtures/empty_payload.inspect.json": "373e5d012b023ad58bbb54cbdffe0bed9e50c637438a4083ddb74d5414c59f59", - "fixtures/empty_payload.json": "aa83c8380496b41baf92e582b4cec2a8433a8ec151ee9ebd83b24533dbb9a839", + "fixtures/empty_payload.json": "588c2573d99b953d490e3d9caaa392b804398b1f91d4f95492a01dd5e7e1f8ba", "fixtures/empty_payload.plaintext": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "fixtures/format2_empty_payload.dkc": "7aea2b5aa48b1a46053716f733d50fab9cd0b80b1be67631bcc06c5bb765dc21", "fixtures/format2_empty_payload.inspect.json": "d0bb7356d3970986e6b197640f0b3b38abe9fabf1740b745171b358aa28903ff", - "fixtures/format2_empty_payload.json": "ad76dbc182318553f8ef320bf64018366d30d20e85d5d24dab250457a88d35f9", + "fixtures/format2_empty_payload.json": "0ddce7b0888be7220d1de108d645cfec9fe15d2e33bc00180ae0a0f417a0f1a9", "fixtures/format2_empty_payload.plaintext": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "fixtures/format2_time_and_key_portable.dkc": "600892659fe4890223e895876275f656995d170fda42b07fb2bec0ca51ce4b43", "fixtures/format2_time_and_key_portable.dkk": "095b7bc516a22bf0c2366f0af3cd48bfe857a2354d6e2a9b285278b95e450fe0", - "fixtures/format2_time_and_key_portable.dkk.json": "341c824f6046d9aaa53f7ef5b8f2848cb711a303ae394f1959e9a84445a46f7b", + "fixtures/format2_time_and_key_portable.dkk.json": "7365f2050bd124daf15b3c623254073389e47e43b13e09fc6e03e79b292ecf0a", "fixtures/format2_time_and_key_portable.inspect.json": "522c9a98e5911c86f5f24f278971cf7c7588f6c88aaede3dd1129ee4e042868a", - "fixtures/format2_time_and_key_portable.json": "02077acd5b03b48f9b2f2b92b5c59196004eea85eb9282ed6d556ca578c55e82", + "fixtures/format2_time_and_key_portable.json": "203e39ef29d74a2f28fb7d8530e01869ece0fa8c8e2c86e81a758eca15f39268", "fixtures/format2_time_and_key_portable.plaintext": "937492203d207d6fe36161b8696bf1f05b8b4cc56d855c44853f4b76aad3a05b", "fixtures/format2_time_and_key_recipients.dkc": "1a44fd8708c92e2e0a10cfcb1d864a71331ea9af25d97e1a42e969dc898959e3", "fixtures/format2_time_and_key_recipients.dkk": "2ad99b1556086ec311d7f0b3bd3aaba05e75f45c4fa22490b0d5e8bb0b1a222e", - "fixtures/format2_time_and_key_recipients.dkk.json": "64fdfdbe30bdba18ccd1168e373c8c7bb2882ae0f645aae9545240f87b89e9e2", + "fixtures/format2_time_and_key_recipients.dkk.json": "57edcc56c16ba7e17e6b7ba079688f04431967a90ce3592f065c838a0c9b2a35", "fixtures/format2_time_and_key_recipients.inspect.json": "d975a9eddd45f5d59618ea2455d574d807e57daf08585e840d07986f261bf099", - "fixtures/format2_time_and_key_recipients.json": "3675d94a03fa28539fe84790602d87f7c022bc3247e40555b70c69a106316b15", + "fixtures/format2_time_and_key_recipients.json": "2a1dd1fa810f0b76ccee04320061ffc664c744da1206d60dbb14e0ac01b9635a", "fixtures/format2_time_and_key_recipients.plaintext": "0e9fd50e98a85953aa9cf07a11ee3c62bb3d7622f344f1c6ce744d1ed111659f", "fixtures/format2_time_and_key_sixteen.dkc": "7aaac5c18f216bf53df326ecc817179640a53408cf25dfd50488910a762dc381", "fixtures/format2_time_and_key_sixteen.inspect.json": "492cd0b0dca0030df9332b098d22b4f6aa4adfb57d5540de5325e3e6d5aa3667", - "fixtures/format2_time_and_key_sixteen.json": "f07523610cb7747d1a6c9ce85ca40e807777b357701cbe90ac0debe3383aaa31", + "fixtures/format2_time_and_key_sixteen.json": "5686913ae6c4dd94fc90a96d28d2f7f7ef6fdd5213416d27c7fd85a423be1023", "fixtures/format2_time_and_key_sixteen.plaintext": "e5abfb7b5fdbf297277b6cc4729c15d85435e890b653c2e2342b7031ecd9eab9", "fixtures/format2_time_only.dkc": "f5a40ac6b8a08a0c12db6114c2bca23522d6a77b512b509a217fb15f367813c4", "fixtures/format2_time_only.inspect.json": "40a8683f5204c7b6369558e4775ae6bb6fed978097e9e660de64c06c167b043e", - "fixtures/format2_time_only.json": "63ce6c0888241414c96b39897aabb25fb1170b0560963e5e12f5c8ea82c6bd60", + "fixtures/format2_time_only.json": "db863e7480eae1e1a4df985aa0cfb8456de67a1f0f5a6bcb3dd5fadf2837eb06", "fixtures/format2_time_only.plaintext": "53b8ee821fb7b678e89d4f93da1812339f6cc1ab83aac6ed1432db99df784be5", "fixtures/format2_time_only_bloque256.dkc": "aae769c30d04920801d8b293d30864fbe223c9c9353ec2b4907a1ee1996e39f9", "fixtures/format2_time_only_bloque256.inspect.json": "767766414ad547f0ba95b40059e14b62c81b5489a2afcbc683bf227334d61be7", - "fixtures/format2_time_only_bloque256.json": "8331cd25a8fa504ae9c36cb196eece0e582a0622134e9565118c57937d38e0a9", + "fixtures/format2_time_only_bloque256.json": "9c7db52db560ec1203e811a214d3c6dd5324dac586331332f774a3fccc6ad515", "fixtures/format2_time_only_bloque256.plaintext": "53b8ee821fb7b678e89d4f93da1812339f6cc1ab83aac6ed1432db99df784be5", "fixtures/format2_time_only_extensions.dkc": "fb406100d5703a2e888983b3175ed34a09a34469cc722256e5cf535dd728fbe9", "fixtures/format2_time_only_extensions.inspect.json": "1595d793c1d35bfdaa36576b75f53d734a9e07c2a8a12036295dbaee7f5a7f5a", - "fixtures/format2_time_only_extensions.json": "3c88e91aee4c0e29b212777d910f9d3ba7cfb8875f0b5c510ce5715a4c3d4a9e", + "fixtures/format2_time_only_extensions.json": "5f48a438c8220951df7734fb4fd2172206827145597c43307d12514ce6c3c85a", "fixtures/format2_time_only_extensions.plaintext": "1129768e195e2f1e50b7a6f926b6eebef120212c29b5642c8a662c503b2a9131", "fixtures/format3_area_1024.dkc": "41ea2eed0293e4fef7f4a307b7f16aaf1339f5bf6f4ded7a6a9ae1aebeb0133c", "fixtures/format3_area_1024.inspect.json": "06e6b347926242ae5540f16a053f6a3545743986989bc0be8c39918bce968686", - "fixtures/format3_area_1024.json": "6699df0c349508aab2b604c5387e1e7460b3e5d408832162be9e85e3e430e727", + "fixtures/format3_area_1024.json": "d2722c99bf6c543a1eeb1fdd9cf57506d71b0a324b33458865b043698b7729d3", "fixtures/format3_area_1024.plaintext": "043830350a287cba1fd50f6c063f70a74209895ff0cf03147bb4e5ccdfc206b5", "fixtures/format3_bloque256.dkc": "ff18444f434164ba8e7b26d38c76c7855dc6b0593b2fc8b4e9a95dbf9252d55d", "fixtures/format3_bloque256.inspect.json": "d0007080da5ce079c6ffa3a56bf8ce519d2846a31cc1082fd027f401e4f7bade", - "fixtures/format3_bloque256.json": "c8e25c23ad75935cf40b87300e13a97ca494f3d659ef99c6df7abf8b4edd93ab", + "fixtures/format3_bloque256.json": "9fe4131d6e108a8ed2206ae33ced33ed6ca770b7a0111748cf208fcdd4a916c4", "fixtures/format3_bloque256.plaintext": "9ff2843e40bc1280dbfea8dce9386a42d06e8b43742c2cc6257540770cb53c73", "fixtures/format3_comment_only.dkc": "7f98a89413f08655bbbab28b96585dfa6173c1705dd81a900deba2100d19f2ef", "fixtures/format3_comment_only.inspect.json": "fb56eca8bf42c8c47fde4a1d6b2580fcff386f2f58b566820731dce388542196", - "fixtures/format3_comment_only.json": "2a07ae3535feddb3fab50a449254f702a62269611b296276e85fdc4832decee7", + "fixtures/format3_comment_only.json": "8731bcb3641d7f99f63729e85f1e2960d3f38a6ac64bb3321369bfe3e21fa2b1", "fixtures/format3_comment_only.plaintext": "bc5b05885e608f036d8a14fde8738a8c53b395b71c3bcee99c1eab37ea23e80e", - "fixtures/format3_seal_unsupported.dkc": "9e729c4d523aa8235c1f94b6c4366500a442a7ce69a5f92b9780662daca070e3", - "fixtures/format3_seal_unsupported.inspect.json": "c1adce954b84fd0f43313dc5bec6f294d24aee5b0a26e4deaeafcab3ed41d17e", - "fixtures/format3_seal_unsupported.json": "0e96f0118694149794c9dd2475df551885ef78c65099293cae116daedeeb47f4", - "fixtures/format3_seal_unsupported.plaintext": "b7e84ded53528372d35ef5aef5c7935eff5827824832f8556e6ed06eb2951ef5", + "fixtures/format3_seal_unsupported.dkc": "cd3f68e430c8d41df92a364d65fe29b4aed8ec50e5129595735ede6a8d7df88b", + "fixtures/format3_seal_unsupported.inspect.json": "3300ec8a6024c4b7d4569e31100f8ee9b7d6ef6483120e79c60c4d7d3fec9d8c", + "fixtures/format3_seal_unsupported.json": "593310199c21384c393332de177dddf04ade56d8dd9891d4679fc5fd38e139c6", + "fixtures/format3_seal_unsupported.plaintext": "18e5a8d45af211d036dfe64fc4065c8ada927265200f48a3094aa7ded519b94e", + "fixtures/format3_sealed.dkc": "dde5a072d8783227d28279d06d3d226a1fb967c766da626f889d1c6fd76ac9c7", + "fixtures/format3_sealed.inspect.json": "b984a0755332bad838025e47f8e917b9f18b9bb5c068c2d1ef0070db8e42849c", + "fixtures/format3_sealed.json": "52cda41e8d665c8c734124f9eeb8d4e81b15c59693dff62b3aba497d4aec910e", + "fixtures/format3_sealed.plaintext": "aea0f5feb40acd81ca3b02dd21ea15510234da3ab52b374322f3206e7632d47b", "fixtures/format3_security_v2.dkc": "3d02b39ace010d74604554e378d22fe5ce00cecd998c0f797d657b17620b8912", "fixtures/format3_security_v2.inspect.json": "dba4d21f1d4e228a17c761bae9a4b8c5a91cd9c0123e3141d3782a43c139321e", - "fixtures/format3_security_v2.json": "9edf6cf16d4895d9c34a7f875d9e4d6345a8a143f7c0c42f2200fdc57b13669b", + "fixtures/format3_security_v2.json": "78218ca96fdfe6629853c4b8826e2ba11ee010677e54169ba8286ff9d00c9d6a", "fixtures/format3_security_v2.plaintext": "0c58ef40e4b1c7afde0f6e0a1f4ed7e3d45405757c5143a095f0c2b58042669f", - "fixtures/format3_signature_unsupported.dkc": "83dc0f3b71cd57f2c06b5ea5860c1fd709627c2ab11c86ca1fc3b5a16d89c497", - "fixtures/format3_signature_unsupported.inspect.json": "92ff22c1679229c6ff05345a6d75be6614cefc8b6f41ee151a9697f3c88db34d", - "fixtures/format3_signature_unsupported.json": "1887025edf235540fbe516ac65ca4ac11e401059f2645fb31f53f21ae0603b76", - "fixtures/format3_signature_unsupported.plaintext": "414deeb8dc9f45fcf5f3883154e9f0e5a872ee9438a01b997d2f513b3d5a1eb7", + "fixtures/format3_signature_unsupported.dkc": "e8e3106d8d73bb7b845062e0fe42af21df7d7cd8f63c335cab8dedb3e690df31", + "fixtures/format3_signature_unsupported.inspect.json": "6db653db27604cb07e2cb2c23545fb68542c121e85002762f26c6d39e63bf00c", + "fixtures/format3_signature_unsupported.json": "427dd9201e57c2c6242722bc5b2882dd310225c40b883f9339cdd6c04f87b751", + "fixtures/format3_signature_unsupported.plaintext": "9fe05e6b3a463371b33fc6a81b81d538e572789a8d03ace9f752a931f4ca4728", + "fixtures/format3_signed.dkc": "3c7d3c9e24c02853a0c7761b93bea1120b27fce396468d8d0f68e53aeb668c5e", + "fixtures/format3_signed.inspect.json": "7c37054d542869e766147350e2fa72695f209d39a03726757008e2c2291b0e97", + "fixtures/format3_signed.json": "9d602cda39ce124b604410101a63bd981d21677f9bebb4eda5e4dedbd93531bb", + "fixtures/format3_signed.plaintext": "3de3ccab0ac74f95a76aa45c0f85e1749d4b4a051d87e81828eff6bf24372000", + "fixtures/format3_signed_cms.dkc": "d658f8d5ac2c5550c07b8f8fd6883b2f6dc02ceafc47d436ea02d8950b2548d2", + "fixtures/format3_signed_cms.inspect.json": "afadf530e8146687b25c03f26100ebff18e7f481e0ef09378816bad582270de5", + "fixtures/format3_signed_cms.json": "e88e549a0d0351df83c065a11101e3158b48d473aa9f6dfce1b8adbca96b26d7", + "fixtures/format3_signed_cms.plaintext": "31c35eeeee856277b605fe44203a8f4786bb8f591eda3b6ee58252df5b3cf2f0", "fixtures/format3_single.dkc": "9f68664af8733255084be9036a100b75d27bd16106bf0acff94ce469dd1d1743", "fixtures/format3_single.inspect.json": "7878da921c17aada50e00d5911ea97e8558633a1684fb96acbd00d6f1b117529", - "fixtures/format3_single.json": "dc04aac307230279d004edea594ed2000999a3f207b8b775a62fd0abea6084c4", + "fixtures/format3_single.json": "c99a175287c9555b74e8ae813326f3d7cdce0692a0144ee8e47158775970bcd4", "fixtures/format3_single.plaintext": "74f9dd84d07e95a31e6dc063bf65ce414197acf84aac445eabc76fa4e3f24936", "fixtures/format3_time_and_key_portable.dkc": "680d29962e575689a31543df28433dae7737abd9a793e9cae92ef40920d09636", "fixtures/format3_time_and_key_portable.dkk": "54cc64d849395234b3e093e47f432b72781ccc13f455c9ef394e3554ab566751", - "fixtures/format3_time_and_key_portable.dkk.json": "89c9b07f2089dd8949b8116c69228ad7a2fd8fbf17b9135807d7a3f570544cdf", + "fixtures/format3_time_and_key_portable.dkk.json": "36d343d729d126990754be34f0f67c9faf1529b7d8946e6b34b4d0de5b46b744", "fixtures/format3_time_and_key_portable.inspect.json": "f269af86f5bf84c22a1038fd78db146af93166150755eb1ca35cf15e224035b4", - "fixtures/format3_time_and_key_portable.json": "042965163bb269cab1dd5916629932bd03d24902957b9af8313b982f3edb532b", + "fixtures/format3_time_and_key_portable.json": "ca6623323ada21445c1c131cf278b060c2b22abc670f0889b30540f0abbb8dc6", "fixtures/format3_time_and_key_portable.plaintext": "e6684cf607c102bfa4d6977742d5a7520b0e09483282181bd6d8f5f4ba5f7726", "fixtures/format3_tree.dkc": "217f378faaf795f6a9c416b564fb8931bb2e896918aee870120fd14f9a5da7d1", "fixtures/format3_tree.inspect.json": "643a9dfdc2d0c44b8a1636909c66ed81bfd8c50df2a4cad6566832a8e47ba938", - "fixtures/format3_tree.json": "7ad0c3c54fab4da8b22fb9b9a8bcd4b4752817cb75f89565921995926ae81c53", + "fixtures/format3_tree.json": "1d11d2f12603542039ac6b396ffec69e92bde2689fd54dfc9ef800b6b9f7746b", "fixtures/format3_tree.plaintext": "f69ac5f450966f7d0e9161aa37451d4260b194a750e3e132c02e8a15ba561cfa", "fixtures/time_and_key_portable.dkc": "2e97878078bae6358037a9c264f379a3cbe839f767d69836b0343f35657b2972", "fixtures/time_and_key_portable.dkk": "e528fa2c832c91119f0684bb9d6fb3c4c2d0d55183482890e7c4fe92f668426a", - "fixtures/time_and_key_portable.dkk.json": "1bfbfbc8a24c8169f67aba7706478d722d41057a7522c587cc8c397872db40f4", + "fixtures/time_and_key_portable.dkk.json": "b057c25c9950533c01122cb907a43242b7538a7d427f8fa3cfa34ab6dfb7e390", "fixtures/time_and_key_portable.inspect.json": "238c1f8ca6a6bf69f20bf26f5676e89a0b07e83b4362628560fc2f7522a202c9", - "fixtures/time_and_key_portable.json": "f9db3833709e4cb3f58a96c8ff14fd2b37b0574bcfa44f41a7a564b06ff6f06e", + "fixtures/time_and_key_portable.json": "26467c1b6feafde9b6b49742a87bdb648c1effff6ac99b824561566282ea60ba", "fixtures/time_and_key_portable.plaintext": "937492203d207d6fe36161b8696bf1f05b8b4cc56d855c44853f4b76aad3a05b", "fixtures/time_and_key_portable_extension.dkk": "0bf463a7c65627b7dda2234d728df89ec5b835816a2a37b91497d8fecc5ea548", - "fixtures/time_and_key_portable_extension.dkk.json": "1b2e6eb9ecbeece13b9ec4b9ebf94df6af58792731e690bf571170f631d68402", + "fixtures/time_and_key_portable_extension.dkk.json": "89a96dd9dd1fe30187758d78211a6fbcb4b8cb7487e3a2f224e38874b246e834", "fixtures/time_and_key_recipients.dkc": "69ac110380f5d768b5b6afaa157a50ed17d8ceccfbd4604ffa5b6da38539b635", "fixtures/time_and_key_recipients.dkk": "19f6c47150c3194712d454f43c7392b7344e6b4e7b074d83e9ca5f563a8e072f", - "fixtures/time_and_key_recipients.dkk.json": "8f2bb78f972ccff8d2e2f68ea8e005bd6c1b52435ba92b889c796f018dab8e16", + "fixtures/time_and_key_recipients.dkk.json": "c3712a6afc1e0ad73615ec4329a0009261b32536fd630aff3b01f28b9384b6e9", "fixtures/time_and_key_recipients.inspect.json": "4b32c63d18febe0772837fbcd75a0c971e31378bf799201b720a9d32bdcd8c2b", - "fixtures/time_and_key_recipients.json": "fac88a0fbaabcf0f39191fbbce4bf3882e4bbce68f13e4d8238c2535b5447bc7", + "fixtures/time_and_key_recipients.json": "a00a49e7140fff35f253e42d13d221cfb339a2e59b7b53dbb3b8a32dd00cfe4b", "fixtures/time_and_key_recipients.plaintext": "0e9fd50e98a85953aa9cf07a11ee3c62bb3d7622f344f1c6ce744d1ed111659f", "fixtures/time_only.dkc": "99e915810d595f1092700b728f5e5081d78efe83f5343e76325b1bcc2c33ccf2", "fixtures/time_only.inspect.json": "a4d45f945d6ba6616c01e120ac1133785e5279fea7dcab706b5feee287be8884", - "fixtures/time_only.json": "b1279806b96467cd26b881e4bd7186e92053e210317b4fd974d065c3610a0882", + "fixtures/time_only.json": "cfb7a43154189692ef3a1f08e9a12b5855df1b95c10ae13e05935160a3f9aaaa", "fixtures/time_only.plaintext": "53b8ee821fb7b678e89d4f93da1812339f6cc1ab83aac6ed1432db99df784be5", "fixtures/time_only_extensions.dkc": "0446c9b73e267adcb24e5cc89afba2544a386ec9a050016e06517a4a57aa2085", "fixtures/time_only_extensions.inspect.json": "6f957b028da8a4a495b5e951ced0b91e0678128dac4e962b02d024b9439a0ba1", - "fixtures/time_only_extensions.json": "9f4dca446768b2a523ad0a5ee95de825ee63a0da6c4798b3b3302dd5936ef9d5", + "fixtures/time_only_extensions.json": "c5b6b253c03a95a3878538d98c8114041042f8dce8dbbb382727651781f4a146", "fixtures/time_only_extensions.plaintext": "1129768e195e2f1e50b7a6f926b6eebef120212c29b5642c8a662c503b2a9131", - "vectors/cbor.json": "a955ae65b6e17019992fd3b5348600c5bbb029a462a1f3900c021d934c6aef19", - "vectors/dk1.json": "767e14f10c72efe335b52baf18129a79fe0e33d8f118ed92efeb9b78251826ab", - "vectors/head_schema.json": "f6e5901a15bafdc9c5f6879c46a9c784a50ad23730ce09390475f2c95a6c04d9", - "vectors/inspect_differential.json": "f4215d4ffff091f09ee9bc056a761898d059e073286e4d95841868e447c72e37", - "vectors/mutations.json": "6550d80c4de1e0e72ed5c78be773eb9e101a7e29e42c4ef338723ce0e97500c2", - "vectors/padding.json": "2396fc02db96857de9cdb054ea22b898ab2cda964960d1a00761706a59998f6f", - "vectors/path_fold.json": "bdfad44d28076a48418d9ab18c7f001fd7adc2e27f70330c3d285a779ce58c7d", - "vectors/paths.json": "e8ad92847ded09d4f67c61477dd8403864d04f54a15af6bd7203b514eb342dc2", - "vectors/profile_quicknet.json": "6e67ac8956295229fe1bbe639877c89f4bb4d06b769ff8c0c4c0e186f1b6570b", - "vectors/quicknet_rounds.json": "c1a4c7d9240d438c770cb386c489409b05029df4185a617ff65555128fb4c830", - "vectors/security.json": "425ae16dfd95b9c1eb4f911db6232b6a6e3b29d9f3ea14fecbf1bda9d900957d", - "vectors/tlock_ibe.json": "4f2eb44f3b46387afc35cd92c556ae4c584b7e3aed1cbe53df730b0b07e0a40c" + "vectors/cbor.json": "79d750994eafc4fa718b0997fbb0a70673dc08a129efcd7d0ddc2db922406913", + "vectors/dk1.json": "f5547be887d6ca405518636925018fdec22a5027009651705b07aec80151314a", + "vectors/ed25519_strict.json": "342d866584435b291832d34deb9ce17aef10d99db148b85443e39e9bed321d0a", + "vectors/head_schema.json": "3c7bcf57aa22943cd17005ea9ce426c0b3e7c365a0527a790b5e9e1973f9753f", + "vectors/inspect_differential.json": "e8c99d025ec761690e71ee0c6adfcfd5b680cdcb89024463d8ebbc24be6b0774", + "vectors/locator.json": "a378453dadbafad4c18b5d9fdf4e49cd69f391e08cf16a04935c446395a9767f", + "vectors/mutations.json": "bd2f86fc13d50acd759acf36374df513687566bfdc5b391759c2040a0d796fb3", + "vectors/padding.json": "53d71fc9679d6eda3ba7b7a15752927a1a5fe026bdbd7f93b0ce3569a6a4b22a", + "vectors/path_fold.json": "94c708bf04379984326f786ba1a954a94dc958fa06013c525e7f7a2c14f856bc", + "vectors/paths.json": "3466da7dd82d82c1c43fe956eb91e674065d159c9326e3bc0dcbbe2c6b774251", + "vectors/profile_quicknet.json": "c15ecb111635ecae2084da8511efbee133e97ff07c1c951658b036ce05b69781", + "vectors/quicknet_rounds.json": "0f11bf5c5da88b1e929bb39439001a3a1f8447a85a4b3a25296d40d71a261e50", + "vectors/security.json": "c5c7a0a508daf6a56ee0d2a9a3c1982e8b2d5104621fb78e768bb2a69e5c4c85", + "vectors/security_cms.json": "c29458496bf58ad01514d7d0e0c2a3223a2a95a81d8c426ce642827363b43b68", + "vectors/tlock_ibe.json": "27e9d9ebac4f07700661d2b4c524b10d065c9698e9acc68baa3d2c01bdbb24f2" } } diff --git a/testdata/fixtures/empty_payload.json b/testdata/fixtures/empty_payload.json index 3899f77..5635a6a 100644 --- a/testdata/fixtures/empty_payload.json +++ b/testdata/fixtures/empty_payload.json @@ -1,6 +1,6 @@ { "description": "time_only capsule with an empty payload", - "spec": "0.10", + "spec": "0.11", "format": 1, "file": "empty_payload.dkc", "sha256": "871e9bf05b52bbae17f3adfbbf97b46e7f0e53aa8f57bcaa506e43f36f53a9d4", diff --git a/testdata/fixtures/format2_empty_payload.json b/testdata/fixtures/format2_empty_payload.json index 8fdf39f..e8fdf9b 100644 --- a/testdata/fixtures/format2_empty_payload.json +++ b/testdata/fixtures/format2_empty_payload.json @@ -1,6 +1,6 @@ { "description": "format 2 time_only capsule with an empty content: L = 0, P = 256", - "spec": "0.10", + "spec": "0.11", "format": 2, "file": "format2_empty_payload.dkc", "sha256": "7aea2b5aa48b1a46053716f733d50fab9cd0b80b1be67631bcc06c5bb765dc21", diff --git a/testdata/fixtures/format2_time_and_key_portable.dkk.json b/testdata/fixtures/format2_time_and_key_portable.dkk.json index 79fcb68..174c9a6 100644 --- a/testdata/fixtures/format2_time_and_key_portable.dkk.json +++ b/testdata/fixtures/format2_time_and_key_portable.dkk.json @@ -1,6 +1,6 @@ { "description": "portable X25519 .dkk of format2_time_and_key_portable.dkc", - "spec": "0.10", + "spec": "0.11", "file": "format2_time_and_key_portable.dkk", "sha256": "095b7bc516a22bf0c2366f0af3cd48bfe857a2354d6e2a9b285278b95e450fe0", "credential_id": "e3c7be83cbf1fbd6b115c96411b3bd01", diff --git a/testdata/fixtures/format2_time_and_key_portable.json b/testdata/fixtures/format2_time_and_key_portable.json index 48599df..48e9301 100644 --- a/testdata/fixtures/format2_time_and_key_portable.json +++ b/testdata/fixtures/format2_time_and_key_portable.json @@ -1,6 +1,6 @@ { "description": "format 2 time_and_key capsule with one credential, a portable .dkk, and 15 dummies", - "spec": "0.10", + "spec": "0.11", "format": 2, "file": "format2_time_and_key_portable.dkc", "sha256": "600892659fe4890223e895876275f656995d170fda42b07fb2bec0ca51ce4b43", diff --git a/testdata/fixtures/format2_time_and_key_recipients.dkk.json b/testdata/fixtures/format2_time_and_key_recipients.dkk.json index 5cd0a66..077f928 100644 --- a/testdata/fixtures/format2_time_and_key_recipients.dkk.json +++ b/testdata/fixtures/format2_time_and_key_recipients.dkk.json @@ -1,6 +1,6 @@ { "description": "portable X25519 .dkk of format2_time_and_key_recipients.dkc", - "spec": "0.10", + "spec": "0.11", "file": "format2_time_and_key_recipients.dkk", "sha256": "2ad99b1556086ec311d7f0b3bd3aaba05e75f45c4fa22490b0d5e8bb0b1a222e", "credential_id": "93cedf68421710e83908ec683b104436", diff --git a/testdata/fixtures/format2_time_and_key_recipients.json b/testdata/fixtures/format2_time_and_key_recipients.json index d453028..9cf68cf 100644 --- a/testdata/fixtures/format2_time_and_key_recipients.json +++ b/testdata/fixtures/format2_time_and_key_recipients.json @@ -1,6 +1,6 @@ { "description": "format 2 time_and_key capsule for three known X25519 recipients and a portable .dkk, and 12 dummies", - "spec": "0.10", + "spec": "0.11", "format": 2, "file": "format2_time_and_key_recipients.dkc", "sha256": "1a44fd8708c92e2e0a10cfcb1d864a71331ea9af25d97e1a42e969dc898959e3", diff --git a/testdata/fixtures/format2_time_and_key_sixteen.json b/testdata/fixtures/format2_time_and_key_sixteen.json index 4cbd5c5..f68f0e8 100644 --- a/testdata/fixtures/format2_time_and_key_sixteen.json +++ b/testdata/fixtures/format2_time_and_key_sixteen.json @@ -1,6 +1,6 @@ { "description": "format 2 time_and_key capsule for sixteen known X25519 recipients, without dummies", - "spec": "0.10", + "spec": "0.11", "format": 2, "file": "format2_time_and_key_sixteen.dkc", "sha256": "7aaac5c18f216bf53df326ecc817179640a53408cf25dfd50488910a762dc381", diff --git a/testdata/fixtures/format2_time_only.json b/testdata/fixtures/format2_time_only.json index b653845..b512421 100644 --- a/testdata/fixtures/format2_time_only.json +++ b/testdata/fixtures/format2_time_only.json @@ -1,6 +1,6 @@ { "description": "format 2 time_only capsule, padding code 2 (reforzado): L = 78000, P = 79872, two STREAM chunks", - "spec": "0.10", + "spec": "0.11", "format": 2, "file": "format2_time_only.dkc", "sha256": "f5a40ac6b8a08a0c12db6114c2bca23522d6a77b512b509a217fb15f367813c4", diff --git a/testdata/fixtures/format2_time_only_bloque256.json b/testdata/fixtures/format2_time_only_bloque256.json index e8ffc84..e33a559 100644 --- a/testdata/fixtures/format2_time_only_bloque256.json +++ b/testdata/fixtures/format2_time_only_bloque256.json @@ -1,6 +1,6 @@ { "description": "format 2 time_only capsule with the content of format2_time_only and padding code 1 (bloque256): L = 78000, P = 78080", - "spec": "0.10", + "spec": "0.11", "format": 2, "file": "format2_time_only_bloque256.dkc", "sha256": "aae769c30d04920801d8b293d30864fbe223c9c9353ec2b4907a1ee1996e39f9", diff --git a/testdata/fixtures/format2_time_only_extensions.json b/testdata/fixtures/format2_time_only_extensions.json index 2bba812..5ed3d23 100644 --- a/testdata/fixtures/format2_time_only_extensions.json +++ b/testdata/fixtures/format2_time_only_extensions.json @@ -1,6 +1,6 @@ { "description": "format 2 time_only capsule with a noncritical PUBLIC_HEADER extension and a noncritical CONTROL_CBOR extension", - "spec": "0.10", + "spec": "0.11", "format": 2, "file": "format2_time_only_extensions.dkc", "sha256": "fb406100d5703a2e888983b3175ed34a09a34469cc722256e5cf535dd728fbe9", diff --git a/testdata/fixtures/format3_area_1024.json b/testdata/fixtures/format3_area_1024.json index 54a0756..b3a0fd8 100644 --- a/testdata/fixtures/format3_area_1024.json +++ b/testdata/fixtures/format3_area_1024.json @@ -1,6 +1,6 @@ { "description": "format 3 time_only capsule with a security area of 1024 bytes, as a later version may write it, holding the empty security", - "spec": "0.10", + "spec": "0.11", "format": 3, "file": "format3_area_1024.dkc", "sha256": "41ea2eed0293e4fef7f4a307b7f16aaf1339f5bf6f4ded7a6a9ae1aebeb0133c", diff --git a/testdata/fixtures/format3_bloque256.json b/testdata/fixtures/format3_bloque256.json index 4dc1d3b..71902ca 100644 --- a/testdata/fixtures/format3_bloque256.json +++ b/testdata/fixtures/format3_bloque256.json @@ -1,6 +1,6 @@ { "description": "format 3 time_only capsule with padding code 1 (bloque256) and one file of 20000 bytes", - "spec": "0.10", + "spec": "0.11", "format": 3, "file": "format3_bloque256.dkc", "sha256": "ff18444f434164ba8e7b26d38c76c7855dc6b0593b2fc8b4e9a95dbf9252d55d", diff --git a/testdata/fixtures/format3_comment_only.json b/testdata/fixtures/format3_comment_only.json index a67fa75..455aa3e 100644 --- a/testdata/fixtures/format3_comment_only.json +++ b/testdata/fixtures/format3_comment_only.json @@ -1,6 +1,6 @@ { "description": "format 3 time_only capsule with a comment of two lines, the second one with a TAB, a declared author and no files", - "spec": "0.10", + "spec": "0.11", "format": 3, "file": "format3_comment_only.dkc", "sha256": "7f98a89413f08655bbbab28b96585dfa6173c1705dd81a900deba2100d19f2ef", diff --git a/testdata/fixtures/format3_seal_unsupported.dkc b/testdata/fixtures/format3_seal_unsupported.dkc index 307edba32fbb060647b429383c683c8c4c0b6f82..fcdb590a7901a03bc545c6845ef4b855ef347348 100644 GIT binary patch delta 1362 zcmV-Y1+Ds<44Vv)ArLheXh{_M*$AzkM%VYa5!I0~y?<(Xc{5fsb3|fnR7*)hZc#`_ zY(g+kab`zPP)l-UXJt`iYBOedRaJLOSV&e`P*+ZQGBQFhYeO+nRab4?0Hb5lxf zV^>OLXmmwvR8v}SbZ}ZWa(FLxS2sgtNnuG$PeU(DD|%u|T6IlXa%@2}PAh9qM_6w& zYGz1OV}Da(3NJQmP(nscPfd7EO?Xc=VQ55gbwyKjN;YtAaW^lxW@Jx9F-g0cW`BmYTTv^!R=58@b&>QrCFBSR@<31`!uV>WZ*pfZb}5O%VoYyvMQb=&c4b63FljhqH91x^N=;^K zO$uj7RYF>0bTLa%_M?ym3>|hnBpD$rB4M;rokckr7ZIDU=;UXEOU?ve9L`FUL7{}nj_wt zLTreBMd^?}|B#g8qZ85C3%Z+~UD zsm)}IwFq$vJ4S79l_)oa>Qlm?fzENWO(G@a>B6(h!LpN-ea=nh0_V zwEPAPk-8)g)5#BYwpihmw=`aAe1G#QUfoWJbde3Dd@QKYF*V6P{S4RASEr>aGYdn+ zsnbH2aa{r9_JO*|RJ3_tJ6F9o6h2--;U7d#bXjC4q-6q|L=EPscl~aD_XF@F!AD`Y zW08#&6vz)+)8!bKa(VT!5EIk>n0K{j6FDis`v0{q;@X+VM`mdaW!sDANq;zAUbaj) zWS`@+9cEkF7O)DD&y}jg5#xn;l_LbYJ(qCh3MPMhco(!~tDhHg`dn4BE8w%ztfYhv zS+~Jcl&;1)-TJ&b2DJN>M~IS0kHQi^Yzs2NgmQgD8nu+SSz*fG19}*Ah&lcggP-pn z8sfD%UOM6d*$o7IXV@+SwtvRK5555OG)P2GA%_elbb}#t-cF;)E^gFsu(x7>$?4y^ z7x^V8T4#Ugc~e*_wQ+)@It)o zaA9-#^C4DM(C$WTg{Fu5Ual=;!peB*z8?%7?b^0Q#Hhd>A<(`s@qZfEZ+MU!B2`d& z4RUiSl60EZcoqe&*5 zG%g_mL$F)Y1=y&nbT=1p=WoxHy2PyR@h;+QNlPE&)XN@TEPy<**6L%E&)^yhpJE#3 UV_t^rhyO_k^B#(0H^N~JhIZ^+WdHyG delta 1362 zcmV-Y1+Ds<44Vv)ArMH~YM5Mm`6~~Pb+U> zYBObUa#c((D{)R*G*we!LPAV9T3C2TWjJ;=MOJo4Pjg6dZ8=eISWhudc2x>PY&KR` zWoI~OX;eaWS~N>-FHTWya%Mq8XiQ~NFgSWsH9<>NYC<_>O>|meOm9OrVp2(IOIS@) zFj7l%cz-xm3S=^8FLFj%Nla>PQ!7L^VMRwsOmuEEH!(LtWNb)SXE;bgcTRdxRB||D z3N0-yAWv{fa#B`wI7vA(F;Ht!az=JZG;(P%RcLi9c|tfiGc#>UD|c97G{Weub6Gr2|YF z$1(hn3H|y9U_$>WFJQa&lhV>WZ*pfZb}&(Zh^Cy%cNY;0CRph4h?9eoSx8I+)P|zhA3@Zjkcl<6rCWXv5N?c-?&ZgQ{eO-> zOWmo3agUP!cbag%SHp2{;}7KF@2>Kxt;lgik9^z)q09PwCq;K)5&u-Md_3)Ej8i-f z!~cS@4^LKj2kqL)ECxkx1<`J>0vBx#op?V@k*+FiL#IY2OY+f4;g#!M`s1AF&<_#u z%Pc9}5*1tR_)=8+W4gjm$}jWf#eb;@^F-H>7eVhM?fk}1cv0)BI89z09O&7DA3@=Y zSX+v&H@{ha@nw{`jlioh*eS{9H#`|kluo=X5ZR6Fx!8KHfC48xD_Y2@+)LmU=?<0V z$y0}Bxptq&^e&s$@+$I5b0+a*MO%h3csk&wR4&1O z#H#21d+a+w?qh1^a^8vI=zq=`QTfVC|$IUw=1@*0WdjIgZI;$NPq02Q03GBO=kH; zkb6o&s0+M%L6XzlqN^Rk zLu@i;y9x2r)rJ*KDe)J*!YY)E1H}tVUDtX7F0~-m|CffXdW_UMa`H(4%s0(%D`4h| z=WTg0$TY5;JA*#dTsJ;f@S<+v4E(3Ici$vj*cmeKr}wZ3zhrYQtb6OIC`ap+RB0(yJ$U$JlK=n! diff --git a/testdata/fixtures/format3_seal_unsupported.inspect.json b/testdata/fixtures/format3_seal_unsupported.inspect.json index 747ccfa..36c8bef 100644 --- a/testdata/fixtures/format3_seal_unsupported.inspect.json +++ b/testdata/fixtures/format3_seal_unsupported.inspect.json @@ -1,7 +1,7 @@ { "file": "format3_seal_unsupported.dkc", "format": 3, - "capsule_id": "48da6a985c7bf92b0fbf2042c36b1039", + "capsule_id": "3517684914fad908ad9e46d7f7b811d5", "datekey": "dk1_eyJ2ZXJzaW9uIjoxLCJuZXR3b3JrIjoiZGF0ZWtleXM6cXVpY2tuZXQ6djEiLCJyb3VuZCI6MjAwMH0", "profile": "datekeys:quicknet:v1", "round": 2000, @@ -31,7 +31,7 @@ "step": 4, "name": "header validation", "ok": true, - "detail": "capsule_id=48da6a985c7bf92b0fbf2042c36b1039 datekey=dk1_eyJ2ZXJzaW9uIjoxLCJuZXR3b3JrIjoiZGF0ZWtleXM6cXVpY2tuZXQ6djEiLCJyb3VuZCI6MjAwMH0 policy=time_only profile=datekeys:quicknet:v1" + "detail": "capsule_id=3517684914fad908ad9e46d7f7b811d5 datekey=dk1_eyJ2ZXJzaW9uIjoxLCJuZXR3b3JrIjoiZGF0ZWtleXM6cXVpY2tuZXQ6djEiLCJyb3VuZCI6MjAwMH0 policy=time_only profile=datekeys:quicknet:v1" }, { "step": 5, diff --git a/testdata/fixtures/format3_seal_unsupported.json b/testdata/fixtures/format3_seal_unsupported.json index 0948250..a82f20c 100644 --- a/testdata/fixtures/format3_seal_unsupported.json +++ b/testdata/fixtures/format3_seal_unsupported.json @@ -1,21 +1,21 @@ { - "description": "format 3 time_only capsule with an author-signature of alg 1, as in format3_signature_unsupported, and a seal of seal_type 1 with a random token of 32 bytes: verdicts F1 and S1", - "spec": "0.10", + "description": "format 3 time_only capsule with an author-signature of alg 4294967295, as in format3_signature_unsupported, and a seal of seal_type 1 with a random token of 32 bytes: verdicts F1 and S1", + "spec": "0.11", "format": 3, "file": "format3_seal_unsupported.dkc", - "sha256": "9e729c4d523aa8235c1f94b6c4366500a442a7ce69a5f92b9780662daca070e3", + "sha256": "cd3f68e430c8d41df92a364d65fe29b4aed8ec50e5129595735ede6a8d7df88b", "release": { "round": 2000, "signature": "b6cb8f482a0b15d45936a4c4ea08e98a087e71787caee3f4d07a8a9843b1bc5423c6b3c22f446488b3137eaca799c77e" }, "prelude": "444b43310300000000000079000001ca", - "public_header": "a5006a646174656b65796361700101025048da6a985c7bf92b0fbf2042c36b1039037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d6a41774d48300400", + "public_header": "a5006a646174656b6579636170010102503517684914fad908ad9e46d7f7b811d5037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d6a41774d48300400", "datekey": "dk1_eyJ2ZXJzaW9uIjoxLCJuZXR3b3JrIjoiZGF0ZWtleXM6cXVpY2tuZXQ6djEiLCJyb3VuZCI6MjAwMH0", - "capsule_id": "48da6a985c7bf92b0fbf2042c36b1039", + "capsule_id": "3517684914fad908ad9e46d7f7b811d5", "access_policy": "time_only", "structure": "time_only", "unlock_at": "2023-08-23T16:49:24Z", - "header_binding": "bc80975e44978cb51465890b4499f591ad0b7af61337bb35b25ad2d1d500b6b3", + "header_binding": "2c34950c31c80b62c31da9aa1ca72cf46d38361a60fdf37519c1f734c6646fb9", "outer_stanzas": [ { "type": "tlock", @@ -29,21 +29,21 @@ { "type": "X25519", "args": [ - "irINIJ7PYPkx0Asd7r+Nw3GfeeEnQc6M1u2QWGBtIyc" + "sfu28SAWdZaPq6c3v4bLopEk8YveD80i8b59V4JMfkM" ] } ], - "control_cbor": "a60070646174656b6579732d636f6e74726f6c0103025820bc80975e44978cb51465890b4499f591ad0b7af61337bb35b25ad2d1d500b6b303582075b43a62e103df83789f741e0b2cc4b22a15e948d9105902cae0c735bbf9fa86064800000000000002930702", - "payload_identity": "75b43a62e103df83789f741e0b2cc4b22a15e948d9105902cae0c735bbf9fa86", + "control_cbor": "a60070646174656b6579732d636f6e74726f6c01030258202c34950c31c80b62c31da9aa1ca72cf46d38361a60fdf37519c1f734c6646fb9035820a0cae1dd0fb24ae1ea350ad408afa77bb040fe4553ca5a5e6283be84f1775184064800000000000002930702", + "payload_identity": "a0cae1dd0fb24ae1ea350ad408afa77bb040fe4553ca5a5e6283be84f1775184", "payload_length": 659, "padding": 2, "padded_length": 768, "plaintext_file": "format3_seal_unsupported.plaintext", - "plaintext_sha256": "b7e84ded53528372d35ef5aef5c7935eff5827824832f8556e6ed06eb2951ef5", + "plaintext_sha256": "18e5a8d45af211d036dfe64fc4065c8ada927265200f48a3094aa7ded519b94e", "area_len": 512, - "security_cbor": "a40071646174656b6579732d73656375726974790101025869a30001015820296414f1ab39ebe5d7f366597d677ee979e2071266a1a9d59fd4688810795bde025840eb7530c2c468fd7d86dd2238551c436a713a978219baec42f7b4763ef2a9f3977d52353e8783875a4ee8d03e504883ff1390be2dde82ac86c182b5a79ad4d624035826a2000101582029bdc2748984e5be979d7c79e6c382cb29cfd8924a645fd8c2446f686700f343", - "head_cbor": "a4006d646174656b6579732d686561640101025820ac66fed2ff62fd1bb417ee393b4476a5694b859e7feceb37aaf6cb49401895400581a600686e6f74612e7478740116020003160458205d596d5f49c179f0ec337f4610155fc237e727f9dee85377a5fce67a3c853510051a6abcf9c0", - "salt": "ac66fed2ff62fd1bb417ee393b4476a5694b859e7feceb37aaf6cb4940189540", + "security_cbor": "a40071646174656b6579732d7365637572697479010102586da3001affffffff0158208beec85fe1db5d53dfa1fa5b95afe208c355a1fabe0d3637c1acc09fef0f04c10258400ccc209b32e7826b70b4befbe7bbe504584631422a3b51086e9491885e8aac6d2a0c92c4c85d6c03750ddaa2d873f6d4dce20030b31669f347ee6b9b4f3abd56035826a20001015820c19dc75c9766f13383b991f54a7cfcb16701ad0299fa68d84c5ce2e82a8f18d7", + "head_cbor": "a4006d646174656b6579732d6865616401010258208eb5e2f0920209323e39c54391a74cc873690cd6d7ce94a45b12772f2a5081c10581a600686e6f74612e7478740116020003160458205d596d5f49c179f0ec337f4610155fc237e727f9dee85377a5fce67a3c853510051a6abcf9c0", + "salt": "8eb5e2f0920209323e39c54391a74cc873690cd6d7ce94a45b12772f2a5081c1", "content_offset": 637, "files": [ { diff --git a/testdata/fixtures/format3_seal_unsupported.plaintext b/testdata/fixtures/format3_seal_unsupported.plaintext index 6057caf8260bdd38854a3feb1513fb731626af9b..d9f916e534c47a60030ce154e2382d47055049b2 100644 GIT binary patch delta 217 zcmV;~04D#F1(O8`0006200025kq8`rZKD7h|NsC00azf5?#N%^+g(%Nq54~uui^;9 zRiXO64K_EytiYe|4+OyiSU?QSAe%Dhf@^TJzWe996L T*UprrTM~CKDo}yJlR*Mfub*PI delta 213 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 L#%+XNF?v17Nra14 literal 0 HcmV?d00001 diff --git a/testdata/fixtures/format3_sealed.inspect.json b/testdata/fixtures/format3_sealed.inspect.json new file mode 100644 index 0000000..b20ea4d --- /dev/null +++ b/testdata/fixtures/format3_sealed.inspect.json @@ -0,0 +1,61 @@ +{ + "file": "format3_sealed.dkc", + "format": 3, + "capsule_id": "b3d25bb6c74cda4e014c65e3d2f43a69", + "datekey": "dk1_eyJ2ZXJzaW9uIjoxLCJuZXR3b3JrIjoiZGF0ZWtleXM6cXVpY2tuZXQ6djEiLCJyb3VuZCI6MTAwMH0", + "profile": "datekeys:quicknet:v1", + "round": 1000, + "unlock_at": "2023-08-23T15:59:24Z", + "access_policy": "time_only", + "valid": true, + "checks": [ + { + "step": 1, + "name": "parse DKC1", + "ok": true, + "detail": "magic DKC1" + }, + { + "step": 2, + "name": "prelude", + "ok": true, + "detail": "DKC1 v3, PUBLIC_HEADER_LEN=121, SEALED_CONTROL_LEN=458" + }, + { + "step": 3, + "name": "public header", + "ok": true, + "detail": "121 bytes" + }, + { + "step": 4, + "name": "header validation", + "ok": true, + "detail": "capsule_id=b3d25bb6c74cda4e014c65e3d2f43a69 datekey=dk1_eyJ2ZXJzaW9uIjoxLCJuZXR3b3JrIjoiZGF0ZWtleXM6cXVpY2tuZXQ6djEiLCJyb3VuZCI6MTAwMH0 policy=time_only profile=datekeys:quicknet:v1" + }, + { + "step": 5, + "name": "sealed control structure", + "ok": true, + "detail": "one tlock stanza" + }, + { + "step": 6, + "name": "payload structure", + "ok": true, + "detail": "one X25519 stanza" + }, + { + "step": 7, + "name": "condition", + "ok": true, + "detail": "round 1000, unlock at 2023-08-23T15:59:24Z" + }, + { + "step": 8, + "name": "tlock stanza", + "ok": true, + "detail": "round 1000, chain 52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971" + } + ] +} diff --git a/testdata/fixtures/format3_sealed.json b/testdata/fixtures/format3_sealed.json new file mode 100644 index 0000000..4b61906 --- /dev/null +++ b/testdata/fixtures/format3_sealed.json @@ -0,0 +1,173 @@ +{ + "description": "format 3 time_only capsule with a single file, nota.txt, signed with alg 1 by the test key of format3_signed and sealed with seal_type 2 by a test time-stamping authority before the round time: verdicts F4 and S4, with SEAL_SUBJECT and the token in the record", + "spec": "0.11", + "format": 3, + "file": "format3_sealed.dkc", + "sha256": "dde5a072d8783227d28279d06d3d226a1fb967c766da626f889d1c6fd76ac9c7", + "release": { + "round": 1000, + "signature": "b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39" + }, + "prelude": "444b43310300000000000079000001ca", + "public_header": "a5006a646174656b657963617001010250b3d25bb6c74cda4e014c65e3d2f43a69037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d48300400", + "datekey": "dk1_eyJ2ZXJzaW9uIjoxLCJuZXR3b3JrIjoiZGF0ZWtleXM6cXVpY2tuZXQ6djEiLCJyb3VuZCI6MTAwMH0", + "capsule_id": "b3d25bb6c74cda4e014c65e3d2f43a69", + "access_policy": "time_only", + "structure": "time_only", + "unlock_at": "2023-08-23T15:59:24Z", + "header_binding": "c108d8b34eb0a4237e6aff192364a28d544cb79c84ac5c80d88c26f8bd5560d8", + "outer_stanzas": [ + { + "type": "tlock", + "args": [ + "1000", + "52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971" + ] + } + ], + "payload_stanzas": [ + { + "type": "X25519", + "args": [ + "PQPwIpsXx8ZNHf1Xpr7gnPamVYWLPgD8zIGmXqvSkjY" + ] + } + ], + "control_cbor": "a60070646174656b6579732d636f6e74726f6c0103025820c108d8b34eb0a4237e6aff192364a28d544cb79c84ac5c80d88c26f8bd5560d803582087351091f87f94f2c1155e5bde726116123e321f6cc2c3f2bb934298e0d02ea8064800000000000080930702", + "payload_identity": "87351091f87f94f2c1155e5bde726116123e321f6cc2c3f2bb934298e0d02ea8", + "payload_length": 32915, + "padding": 2, + "padded_length": 34816, + "plaintext_file": "format3_sealed.plaintext", + "plaintext_sha256": "aea0f5feb40acd81ca3b02dd21ea15510234da3ab52b374322f3206e7632d47b", + "area_len": 32768, + "security_cbor": "a40071646174656b6579732d73656375726974790101025869a3000101582092d3a82b1e2387a860d57cae4cc55091d43904fdd625e4d2b285e3a1b4ba674002584024c8a0fd4ef7338a2607c1489e33eb32b2d2c6a9438e8d01d5beb04911acd5bdf7eb4bd958141293e5fe4074276097cd0df21d8ca12b9c2e6cb5164304666c060359038ba20002015903843082038006092a864886f70d010702a08203713082036d020101310d300b06096086480165030402013065060b2a864886f70d0109100104a0560454305202010106032a0304302f300b060960864801650304020104201ce5a87549e8bed1af2238888c5a4e942b3b3de1fa8d757c70941cd21522638d02012a180f32303233303832333135303932375a3003020101a08201b8308201b430820159a0030201020208074ecca73c287e79300a06082a8648ce3d040302304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261301e170d3230303130313030303030305a170d3430303130313030303030305a304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562613059301306072a8648ce3d020106082a8648ce3d03010703420004aa2eb21e68c810b6271dadcc25575401ceccac2461de40cb2bfde25bceaa384abbbba098880bf14316b62769b3596d701d60c8dd1f1313f257d93c4d5f213a53a33b3039300e0603551d0f0101ff04040302078030270603551d0e0420041e4175746f72696461642064652053656c6c61646f20646520707275656261300a06082a8648ce3d0403020349003046022100a05f22801b8432108d6330dd777a25bcfdd1b32db72bc8feb9be522291559e11022100cfd71b1445e68079aa98af90ac7037ab938eb7e4f11279f1476a93ce0b693aff3182013430820130020101304d304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562610208074ecca73c287e79300b0609608648016503040201a07a301a06092a864886f70d010903310d060b2a864886f70d0109100104302b060b2a864886f70d010910020c311c301a30183016041426e0465376bf0d652c266e5940c9d01ba8cea5e9302f06092a864886f70d01090431220420545889d11d3289646f8156538dbcc608e8cc543fa052056a56a85eb7356523f1300a06082a8648ce3d04030204473045022100883cfcc51038245652e767fdfecea1b7153b9158df02d95f3fcfc2b58e575cb1022029b9727ead61a3022bcddd62d704ee26f71de738556d97796de3ce1c408c7419", + "head_cbor": "a4006d646174656b6579732d686561640101025820990d6781941d508558b06652f4c4db8fc56da5a443811b723adfe4370ea139710581a600686e6f74612e7478740116020003160458205d596d5f49c179f0ec337f4610155fc237e727f9dee85377a5fce67a3c853510051a6abcf9c0", + "salt": "990d6781941d508558b06652f4c4db8fc56da5a443811b723adfe4370ea13971", + "content_offset": 32893, + "files": [ + { + "path": "nota.txt", + "size": 22, + "start": 0, + "end": 22, + "sha256": "5d596d5f49c179f0ec337f4610155fc237e727f9dee85377a5fce67a3c853510", + "mtime": 1790769600 + } + ], + "verdicts": { + "signature": "F4", + "seal": "S4", + "lines": [ + "Firmado con la clave dkauthor1jtf6s2c7ywr6scx40jhye32sj82rjp8a6cj7f54jsh36rd96vaqqcg54xg. No prueba quién la tiene.", + "Según un sello a nombre de Autoridad de Sellado de prueba, existía el 2023-08-23T15:09:27Z, antes de que la cápsula pudiera abrirse. DateKeys no comprueba quién emitió el sello." + ], + "author_key": "dkauthor1jtf6s2c7ywr6scx40jhye32sj82rjp8a6cj7f54jsh36rd96vaqqcg54xg" + }, + "signature": { + "alg": 1, + "secret_seed": "294b60d256e79fc4c18b4bcc0a156810b44144619969dadedcbf01d3b37c1054", + "author_key": "dkauthor1jtf6s2c7ywr6scx40jhye32sj82rjp8a6cj7f54jsh36rd96vaqqcg54xg", + "control_commit": "1793cc0adaba31bdbf18cb4c97ba86dcff05bec498c8ecf11668a74bfd71718a", + "head_digest": "a5537946c281a8e22ca9d3a4deb1aebcddf0d299abe47bded31c90157dd72d3a", + "signers_digest": "1665c6f3f1afb37b1a87d87e4265f156d7108c3c1762972d2a4241e6e5ab824e", + "author_message": "datekeys:dkc3:author-signature:v1\n111b174e204e0eaa73b87601e1e1d9b3d60799b5a0a5c0e371a9dc65d1d39f38\n", + "author_code": "111b-174e", + "signature": "24c8a0fd4ef7338a2607c1489e33eb32b2d2c6a9438e8d01d5beb04911acd5bdf7eb4bd958141293e5fe4074276097cd0df21d8ca12b9c2e6cb5164304666c06", + "security_key_2": "a3000101582092d3a82b1e2387a860d57cae4cc55091d43904fdd625e4d2b285e3a1b4ba674002584024c8a0fd4ef7338a2607c1489e33eb32b2d2c6a9438e8d01d5beb04911acd5bdf7eb4bd958141293e5fe4074276097cd0df21d8ca12b9c2e6cb5164304666c06" + }, + "seal": { + "seal_type": 2, + "seal_subject": "8e60fd12a9475d95f77adacf81772774f4a8f508ffc7edda2e15df9ccebf163e", + "token": "3082038006092a864886f70d010702a08203713082036d020101310d300b06096086480165030402013065060b2a864886f70d0109100104a0560454305202010106032a0304302f300b060960864801650304020104201ce5a87549e8bed1af2238888c5a4e942b3b3de1fa8d757c70941cd21522638d02012a180f32303233303832333135303932375a3003020101a08201b8308201b430820159a0030201020208074ecca73c287e79300a06082a8648ce3d040302304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261301e170d3230303130313030303030305a170d3430303130313030303030305a304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562613059301306072a8648ce3d020106082a8648ce3d03010703420004aa2eb21e68c810b6271dadcc25575401ceccac2461de40cb2bfde25bceaa384abbbba098880bf14316b62769b3596d701d60c8dd1f1313f257d93c4d5f213a53a33b3039300e0603551d0f0101ff04040302078030270603551d0e0420041e4175746f72696461642064652053656c6c61646f20646520707275656261300a06082a8648ce3d0403020349003046022100a05f22801b8432108d6330dd777a25bcfdd1b32db72bc8feb9be522291559e11022100cfd71b1445e68079aa98af90ac7037ab938eb7e4f11279f1476a93ce0b693aff3182013430820130020101304d304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562610208074ecca73c287e79300b0609608648016503040201a07a301a06092a864886f70d010903310d060b2a864886f70d0109100104302b060b2a864886f70d010910020c311c301a30183016041426e0465376bf0d652c266e5940c9d01ba8cea5e9302f06092a864886f70d01090431220420545889d11d3289646f8156538dbcc608e8cc543fa052056a56a85eb7356523f1300a06082a8648ce3d04030204473045022100883cfcc51038245652e767fdfecea1b7153b9158df02d95f3fcfc2b58e575cb1022029b9727ead61a3022bcddd62d704ee26f71de738556d97796de3ce1c408c7419", + "holder": "Autoridad de Sellado de prueba", + "time": "2023-08-23T15:09:27Z" + }, + "stages": [ + { + "step": 1, + "name": "parse DKC1", + "ok": true + }, + { + "step": 2, + "name": "prelude", + "ok": true + }, + { + "step": 3, + "name": "public header", + "ok": true + }, + { + "step": 4, + "name": "header validation", + "ok": true + }, + { + "step": 5, + "name": "sealed control structure", + "ok": true + }, + { + "step": 6, + "name": "payload structure", + "ok": true + }, + { + "step": 7, + "name": "condition", + "ok": true + }, + { + "step": 8, + "name": "tlock stanza", + "ok": true + }, + { + "step": 9, + "name": "release", + "ok": true + }, + { + "step": 10, + "name": "release verification", + "ok": true + }, + { + "step": 11, + "name": "open sealed control", + "ok": true + }, + { + "step": 12, + "name": "policy structure", + "ok": true + }, + { + "step": 14, + "name": "control", + "ok": true + }, + { + "step": 15, + "name": "header binding", + "ok": true + }, + { + "step": 16, + "name": "payload identity", + "ok": true + }, + { + "step": 17, + "name": "open payload", + "ok": true + }, + { + "step": 18, + "name": "commit", + "ok": true + } + ] +} diff --git a/testdata/fixtures/format3_sealed.plaintext b/testdata/fixtures/format3_sealed.plaintext new file mode 100644 index 0000000000000000000000000000000000000000..8f5ebf045365c913211e988d8ef07b5a94deb338 GIT binary patch literal 32915 zcmeI*drVVT90%}w?!B};RxAS50c90|Zgk*jk?=IuF%jk@hG)wjQ0bM2t>sbXN{j=d zh#RmmNOZ|!%7BeAoDLt%$=Ec*ung;9V}>l~Hc?nymSL6<7r|YO+3H{W$N%;{H}~eA zlV8p~=W~9!|Na=Jj$s(yPkdB%GnHnOUDzc!s-vrg;+m>5yMqwcP}ao|Vo<&PU9To| z?ZMun$-N&xKeD~;`$T^6hlrVpfdkh&PkmORXAS!BQRiajLhS32((~y@V{hpOCN6%M z+S)=Uhfieq^-q4jaBJ(7Az)?ujU~NZU3B=8?6$JGQ}b?&<+LJ|-)WI>M(&OG7?v2h z{j`CrlXyinrZ+Cgh?I3UaFybal_f+gqdpR^qQ-P0a6C(>An|z+<|QY*Gmp=qSz?%k zi{f~??x9#-6>_7uCSz`R{CHSGQ*%LPhbDQ$&wsVl?5*esnFtIkZedB(>J>Vwi=_#= zSZy3l)WsK2PMpr!Kt81nVo&{VlpR%NT+6J;-JU1#HBi;50 z_}q@(JrkX^H0Ym{_2RU$hZ2)&+`8;z+7KE^(hqZ`P(9h?9E+l@HzdGTmk|iFNO*&4Nm>s47g= JCbKQZ`)|QHhm8OL literal 0 HcmV?d00001 diff --git a/testdata/fixtures/format3_security_v2.json b/testdata/fixtures/format3_security_v2.json index 2ad6a5e..15700b5 100644 --- a/testdata/fixtures/format3_security_v2.json +++ b/testdata/fixtures/format3_security_v2.json @@ -1,6 +1,6 @@ { "description": "format 3 time_only capsule whose security is of version 2: verdict X", - "spec": "0.10", + "spec": "0.11", "format": 3, "file": "format3_security_v2.dkc", "sha256": "3d02b39ace010d74604554e378d22fe5ce00cecd998c0f797d657b17620b8912", diff --git a/testdata/fixtures/format3_signature_unsupported.dkc b/testdata/fixtures/format3_signature_unsupported.dkc index c7b425e341a0b45e8eef055c820c460ce49b722f..15eeb2c4582d009df9a47d83dbadc5f733772e28 100644 GIT binary patch delta 1362 zcmV-Y1+Ds<44Vv)ArPj&R@DejumwkXNhTn;uQZV{y?<<1Z)ZzZbYyBTX;^w@W;kwa zO*u7oc``y+D`-PAR#|H_Y&cX$D|#z4Ni$S!M0I#Ya4$(TZ8CI9YL6Q9@*8L~&?jP%Cp!SY%>YF-U7Uc4TQ#IA?NX zHDP0RZGT5c3N>VGQ)gOHVnuCIYFc`9WKAnDQ*3!-S}{Q{Nm)a7LTpoHQE)>zPGWIM z3N0-yAWBkUSVn0vbZIbcIY?APb2VB=Np3l4Nl$u9OJY=NVsUI?VKOyWZ7+CZ3hj0v zgk;}R^t3oTI<~JPx@mMM<^l2bKfy$Hr2M`0??;9Gn_YY*;1>AYcNJ{|0 zg9-u&^Sf~kbJModrCHTH_bqjtZ~0~4V>WZ*pfZb}b#z!-N@7tm zFbX+sQCe#HOK0yl|yA4wIWiG1mOw!)Z#QL`{?$=~UkDvF(^)yv}HD=hyV52G~{fn*n}< z&@FGtM$Vd$#^}K`J7|H_%wgkEnMtaEUkL#j!_;^uDbS`Bo4vsk@K?go5M_v?V}C?M z{0s~tKC;CUwPYQbUq^QA!@z%V?MZLUU4u;k$jNBD#_IV+No)p9S52yOXrioXFks6a zf+GAJnj4nJq1F+MXy<_?+P%rkFR(gpB2|XBY)POw4s$ z1S+i-1rvg){#GpR$-w(3E1H-qh<~hDX%P1zLdJ~`?@XLB>p6}`AgxH7gOlW?NF;F+ zTY^Uk&A(ZVD$t$x&xlFLO1Av0M(f{|9L0Tw$ilx;_1}u_Gi;>a$A#GZh26##uszJQ z0xv^#aR7_q~QcJAQV_9J2R)UBaHt1|qqp?}ka30A&9nD)xxK>hJ3Q zZIgobAm5|j1K-ySXiDn?@WAYzH9+taFXi85339C`E>$CDY5A<5fuYQ)z_n|RMp+Dx z=v!ufWK^?jPx?o{PKgrc@_$tGls)POD<$GyNAg$I7~{##+p=ry~-CZQOs8Grlp5t_te2Ruyiu|bTFUZg%u&? z=eVsqKsyn?iA@~@qSiT+GyB+wec8&~nMA(io*|=cf&c&j delta 1362 zcmV-Y1+Ds<44Vv)ArR6jYY@YGschHJD);fZR~L~ny?D}Gf#Ozab<2&NjXAo zbwo2kcUMb9c{5Q>FGONbPGm`1VK!4kVJmD$XiITBB|(q_}-@qcL(Kw0}3dp{V9fo{}Aq0j^#>xU#c zet8ivZResd%bnwHZH(l7H!{yuwq6~?_(MJ$=35qseDpQ@TE+a-V>WZ*pfZb}*bbWmq>tH*rN{RW?#NVsuGoO=mVaY-DXKGfz`CXirdX za|&*1K{jwVWG_)-FhgNcLTznNWkPdrXiqCLPH09nb4@a8PBvL|H&J?UNeV43Eg*6> zSxj(iPeLzdZ)qBO-od3Q)EbWFMmXCFfvI}L_teqD^N~uGEE8v3}Y0O{*G_+S1@v6t^gk%3zNoc|iaSfv+kM_uL#XA#HC_G2k;y6u$bh zej~Hx9xp_>1I9?4-iS>wo1%&P8w=|}$|Nb(cjU7>9gQ8wduJC0waK4m)Cypuie8dxu_kGnt?=G$~W)4g#Pdv=qC zDD#aem6x^DyY_xH>!X&9gx{KGBM0Y+Qcp$%sR1>Ceg^&9Ju5pNB5WLLOrt$`el$;P zj*CCn^*!N*40Lm-605FH80;XWx39!okL#8hUi}$>T#DR#QuZMy0)Le|JX{Jq2@}J0 z(1mntOTsO7I@fKRP*OA`=Qm@_xbe&A+t6emU=*}y1LQ_hpid0+RSCtQCc=>9Gd#Px zH;7#H|7tqVMU3}|4Rt!Y8PB93#KHAazRbvwINSD;)-yQC0^Xw^n5Bk;B$ZWZznKRi z!Md8`Z;S%n6h{(KUpKp|yN!5UDW&SU^+Aj{^`}cSj1Dosyzx$CgXyO6XR)ho;YGR?MymV;v5c z9Wz$HIff-b-4RD`$&OFQR)*ZvH$w3C>H!7x|`|+)GIS delta 171 zcmV;c095~z1(O8`000620001jkq8`WX`=uE0azg2e=`yt_#n1L1l+XtF*E!3{`@An zr<~k_00ltUv%_5iSU{<9f9F(2Q(?x@si%Qrjf@fPrKD?0fc11TkD{s7W~q`oN_lQP zQvL6sU9P0@HKe4sG6wY~Lpf^hYyBxzkC(BbYXOn46O#-A6(DWXvp=z;kg9ECKuRgL Zcdo!Ph53D^Vp=*r%H|UJ*-n!|0#a;%O_Kls diff --git a/testdata/fixtures/format3_signed.dkc b/testdata/fixtures/format3_signed.dkc new file mode 100644 index 0000000000000000000000000000000000000000..14c2d3f98f3360286b83671f4e00cc1b0cdf7c67 GIT binary patch literal 35611 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 L^r(~s^u)QNWhL}= literal 0 HcmV?d00001 diff --git a/testdata/fixtures/format3_signed.inspect.json b/testdata/fixtures/format3_signed.inspect.json new file mode 100644 index 0000000..bd2134b --- /dev/null +++ b/testdata/fixtures/format3_signed.inspect.json @@ -0,0 +1,61 @@ +{ + "file": "format3_signed.dkc", + "format": 3, + "capsule_id": "681476c1bfa81dd12fec810ee44fe7f7", + "datekey": "dk1_eyJ2ZXJzaW9uIjoxLCJuZXR3b3JrIjoiZGF0ZWtleXM6cXVpY2tuZXQ6djEiLCJyb3VuZCI6MTAwMH0", + "profile": "datekeys:quicknet:v1", + "round": 1000, + "unlock_at": "2023-08-23T15:59:24Z", + "access_policy": "time_only", + "valid": true, + "checks": [ + { + "step": 1, + "name": "parse DKC1", + "ok": true, + "detail": "magic DKC1" + }, + { + "step": 2, + "name": "prelude", + "ok": true, + "detail": "DKC1 v3, PUBLIC_HEADER_LEN=121, SEALED_CONTROL_LEN=458" + }, + { + "step": 3, + "name": "public header", + "ok": true, + "detail": "121 bytes" + }, + { + "step": 4, + "name": "header validation", + "ok": true, + "detail": "capsule_id=681476c1bfa81dd12fec810ee44fe7f7 datekey=dk1_eyJ2ZXJzaW9uIjoxLCJuZXR3b3JrIjoiZGF0ZWtleXM6cXVpY2tuZXQ6djEiLCJyb3VuZCI6MTAwMH0 policy=time_only profile=datekeys:quicknet:v1" + }, + { + "step": 5, + "name": "sealed control structure", + "ok": true, + "detail": "one tlock stanza" + }, + { + "step": 6, + "name": "payload structure", + "ok": true, + "detail": "one X25519 stanza" + }, + { + "step": 7, + "name": "condition", + "ok": true, + "detail": "round 1000, unlock at 2023-08-23T15:59:24Z" + }, + { + "step": 8, + "name": "tlock stanza", + "ok": true, + "detail": "round 1000, chain 52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971" + } + ] +} diff --git a/testdata/fixtures/format3_signed.json b/testdata/fixtures/format3_signed.json new file mode 100644 index 0000000..b24064c --- /dev/null +++ b/testdata/fixtures/format3_signed.json @@ -0,0 +1,165 @@ +{ + "description": "format 3 time_only capsule with a single file, nota.txt, signed with alg 1 by a test key whose seed the record gives: verdict F4, and the commitments and the message of the signature", + "spec": "0.11", + "format": 3, + "file": "format3_signed.dkc", + "sha256": "3c7d3c9e24c02853a0c7761b93bea1120b27fce396468d8d0f68e53aeb668c5e", + "release": { + "round": 1000, + "signature": "b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39" + }, + "prelude": "444b43310300000000000079000001ca", + "public_header": "a5006a646174656b657963617001010250681476c1bfa81dd12fec810ee44fe7f7037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d48300400", + "datekey": "dk1_eyJ2ZXJzaW9uIjoxLCJuZXR3b3JrIjoiZGF0ZWtleXM6cXVpY2tuZXQ6djEiLCJyb3VuZCI6MTAwMH0", + "capsule_id": "681476c1bfa81dd12fec810ee44fe7f7", + "access_policy": "time_only", + "structure": "time_only", + "unlock_at": "2023-08-23T15:59:24Z", + "header_binding": "10c269d7fcc8ae1f92c9854b8d01b23781fd6c615474c018b5e75c8620d476eb", + "outer_stanzas": [ + { + "type": "tlock", + "args": [ + "1000", + "52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971" + ] + } + ], + "payload_stanzas": [ + { + "type": "X25519", + "args": [ + "TO8ryXIRUX0S1odrqs9IZJ43q7yYotzn/fMycGebKGQ" + ] + } + ], + "control_cbor": "a60070646174656b6579732d636f6e74726f6c010302582010c269d7fcc8ae1f92c9854b8d01b23781fd6c615474c018b5e75c8620d476eb0358203ffe484f443014980f2b2ee8bb66095f6ea418d4c2fce2ae6ad74c550bbefc21064800000000000080930702", + "payload_identity": "3ffe484f443014980f2b2ee8bb66095f6ea418d4c2fce2ae6ad74c550bbefc21", + "payload_length": 32915, + "padding": 2, + "padded_length": 34816, + "plaintext_file": "format3_signed.plaintext", + "plaintext_sha256": "3de3ccab0ac74f95a76aa45c0f85e1749d4b4a051d87e81828eff6bf24372000", + "area_len": 32768, + "security_cbor": "a30071646174656b6579732d73656375726974790101025869a3000101582092d3a82b1e2387a860d57cae4cc55091d43904fdd625e4d2b285e3a1b4ba67400258406f8efe0dfadaf89bf71295167f8d8cc4890de0441a37a26d1f7d0b1f56b79c43c4010861e11742a5431b072b21490d4a976dc9ff385d36242047ad4cb996270b", + "head_cbor": "a4006d646174656b6579732d68656164010102582092a0fe390ff1063d9e93bbafe3ca75be219d950128e2e5aca6a9c12d5c1f1c9b0581a600686e6f74612e7478740116020003160458205d596d5f49c179f0ec337f4610155fc237e727f9dee85377a5fce67a3c853510051a6abcf9c0", + "salt": "92a0fe390ff1063d9e93bbafe3ca75be219d950128e2e5aca6a9c12d5c1f1c9b", + "content_offset": 32893, + "files": [ + { + "path": "nota.txt", + "size": 22, + "start": 0, + "end": 22, + "sha256": "5d596d5f49c179f0ec337f4610155fc237e727f9dee85377a5fce67a3c853510", + "mtime": 1790769600 + } + ], + "verdicts": { + "signature": "F4", + "seal": "S0", + "lines": [ + "Firmado con la clave dkauthor1jtf6s2c7ywr6scx40jhye32sj82rjp8a6cj7f54jsh36rd96vaqqcg54xg. No prueba quién la tiene." + ], + "author_key": "dkauthor1jtf6s2c7ywr6scx40jhye32sj82rjp8a6cj7f54jsh36rd96vaqqcg54xg" + }, + "signature": { + "alg": 1, + "secret_seed": "294b60d256e79fc4c18b4bcc0a156810b44144619969dadedcbf01d3b37c1054", + "author_key": "dkauthor1jtf6s2c7ywr6scx40jhye32sj82rjp8a6cj7f54jsh36rd96vaqqcg54xg", + "control_commit": "9f296b40049889c944be75c61827b694a0104eb5c5424e17217ff1fd32529efe", + "head_digest": "0111835cdde5ef15710cea96fc600757e1695ddc8f44b2b20e57eead31278b92", + "signers_digest": "1665c6f3f1afb37b1a87d87e4265f156d7108c3c1762972d2a4241e6e5ab824e", + "author_message": "datekeys:dkc3:author-signature:v1\n58aedcded250af5f798eeace817f8a5bbd0c245d05627949970b5eb998bb0413\n", + "author_code": "58ae-dcde", + "signature": "6f8efe0dfadaf89bf71295167f8d8cc4890de0441a37a26d1f7d0b1f56b79c43c4010861e11742a5431b072b21490d4a976dc9ff385d36242047ad4cb996270b", + "security_key_2": "a3000101582092d3a82b1e2387a860d57cae4cc55091d43904fdd625e4d2b285e3a1b4ba67400258406f8efe0dfadaf89bf71295167f8d8cc4890de0441a37a26d1f7d0b1f56b79c43c4010861e11742a5431b072b21490d4a976dc9ff385d36242047ad4cb996270b" + }, + "stages": [ + { + "step": 1, + "name": "parse DKC1", + "ok": true + }, + { + "step": 2, + "name": "prelude", + "ok": true + }, + { + "step": 3, + "name": "public header", + "ok": true + }, + { + "step": 4, + "name": "header validation", + "ok": true + }, + { + "step": 5, + "name": "sealed control structure", + "ok": true + }, + { + "step": 6, + "name": "payload structure", + "ok": true + }, + { + "step": 7, + "name": "condition", + "ok": true + }, + { + "step": 8, + "name": "tlock stanza", + "ok": true + }, + { + "step": 9, + "name": "release", + "ok": true + }, + { + "step": 10, + "name": "release verification", + "ok": true + }, + { + "step": 11, + "name": "open sealed control", + "ok": true + }, + { + "step": 12, + "name": "policy structure", + "ok": true + }, + { + "step": 14, + "name": "control", + "ok": true + }, + { + "step": 15, + "name": "header binding", + "ok": true + }, + { + "step": 16, + "name": "payload identity", + "ok": true + }, + { + "step": 17, + "name": "open payload", + "ok": true + }, + { + "step": 18, + "name": "commit", + "ok": true + } + ] +} diff --git a/testdata/fixtures/format3_signed.plaintext b/testdata/fixtures/format3_signed.plaintext new file mode 100644 index 0000000000000000000000000000000000000000..fc5f2580e7681ad54f06bf386f6cc307d159283c GIT binary patch literal 32915 zcmeIu$xD=R0LJn6H?AauA~=GD^NNOoj2CeO14&5@4}uV{(4a5AKU~LA-&b^^umXv| z0uAe6iROZW3y2^th>9NasM*1TSgr>TdUC=2ujumq!gGK4D9T&quJ?DV?^Egx-ICSP zXSz&T*4R*K`Gl}(m3@j3n%c2Glo%cRVW@QD^;p45Vf*h4|EoWbch@FbcX}sh%Cl@* zmiP0u{bKX1>omO6(ekNn`J;V1Co1iy$N472`C{sO_Ob}p|3*F?$bJ}<7?W>*{>}62 zCf%JHr{<0pOn;3JxxYdPAb5KI#g1H>gz9dM!Q4YPN*KruaGhHPv10Dal{-9UmpPJPV5`SxP&I qKi@hmY8trQf0fyq5*83uHFv&{=dICILz;$EWsO>=o4VmmdT? literal 0 HcmV?d00001 diff --git a/testdata/fixtures/format3_signed_cms.dkc b/testdata/fixtures/format3_signed_cms.dkc new file mode 100644 index 0000000000000000000000000000000000000000..551b473f8b1125368dfa8e8a34f08e1b36fa76d8 GIT binary patch literal 35611 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 literal 0 HcmV?d00001 diff --git a/testdata/fixtures/format3_single.json b/testdata/fixtures/format3_single.json index 3b45683..002ad2a 100644 --- a/testdata/fixtures/format3_single.json +++ b/testdata/fixtures/format3_single.json @@ -1,6 +1,6 @@ { "description": "format 3 time_only capsule with a single file, nota.txt, with its mtime", - "spec": "0.10", + "spec": "0.11", "format": 3, "file": "format3_single.dkc", "sha256": "9f68664af8733255084be9036a100b75d27bd16106bf0acff94ce469dd1d1743", diff --git a/testdata/fixtures/format3_time_and_key_portable.dkk.json b/testdata/fixtures/format3_time_and_key_portable.dkk.json index 9ded6e4..0882b2b 100644 --- a/testdata/fixtures/format3_time_and_key_portable.dkk.json +++ b/testdata/fixtures/format3_time_and_key_portable.dkk.json @@ -1,6 +1,6 @@ { "description": "portable X25519 .dkk of format3_time_and_key_portable.dkc", - "spec": "0.10", + "spec": "0.11", "file": "format3_time_and_key_portable.dkk", "sha256": "54cc64d849395234b3e093e47f432b72781ccc13f455c9ef394e3554ab566751", "credential_id": "bdb483fba42daf0b409f44d23033f362", diff --git a/testdata/fixtures/format3_time_and_key_portable.json b/testdata/fixtures/format3_time_and_key_portable.json index c577e8b..b17e49e 100644 --- a/testdata/fixtures/format3_time_and_key_portable.json +++ b/testdata/fixtures/format3_time_and_key_portable.json @@ -1,6 +1,6 @@ { "description": "format 3 time_and_key capsule with one credential, a portable .dkk, and 15 dummies", - "spec": "0.10", + "spec": "0.11", "format": 3, "file": "format3_time_and_key_portable.dkc", "sha256": "680d29962e575689a31543df28433dae7737abd9a793e9cae92ef40920d09636", diff --git a/testdata/fixtures/format3_tree.json b/testdata/fixtures/format3_tree.json index 34d418e..19145d1 100644 --- a/testdata/fixtures/format3_tree.json +++ b/testdata/fixtures/format3_tree.json @@ -1,6 +1,6 @@ { "description": "format 3 time_only capsule with five files in three folders, one of them over two STREAM chunks and one without mtime, a comment of two lines and a declared author", - "spec": "0.10", + "spec": "0.11", "format": 3, "file": "format3_tree.dkc", "sha256": "217f378faaf795f6a9c416b564fb8931bb2e896918aee870120fd14f9a5da7d1", diff --git a/testdata/fixtures/time_and_key_portable.dkk.json b/testdata/fixtures/time_and_key_portable.dkk.json index 4a2ff4d..32c7264 100644 --- a/testdata/fixtures/time_and_key_portable.dkk.json +++ b/testdata/fixtures/time_and_key_portable.dkk.json @@ -1,6 +1,6 @@ { "description": "portable X25519 .dkk of time_and_key_portable.dkc", - "spec": "0.10", + "spec": "0.11", "file": "time_and_key_portable.dkk", "sha256": "e528fa2c832c91119f0684bb9d6fb3c4c2d0d55183482890e7c4fe92f668426a", "credential_id": "3955e944a3c60cfa1fd6485e9693c77d", diff --git a/testdata/fixtures/time_and_key_portable.json b/testdata/fixtures/time_and_key_portable.json index d57efe6..535b9e9 100644 --- a/testdata/fixtures/time_and_key_portable.json +++ b/testdata/fixtures/time_and_key_portable.json @@ -1,6 +1,6 @@ { "description": "time_and_key capsule whose only recipient is a portable .dkk", - "spec": "0.10", + "spec": "0.11", "format": 1, "file": "time_and_key_portable.dkc", "sha256": "2e97878078bae6358037a9c264f379a3cbe839f767d69836b0343f35657b2972", diff --git a/testdata/fixtures/time_and_key_portable_extension.dkk.json b/testdata/fixtures/time_and_key_portable_extension.dkk.json index 1ed6121..904069d 100644 --- a/testdata/fixtures/time_and_key_portable_extension.dkk.json +++ b/testdata/fixtures/time_and_key_portable_extension.dkk.json @@ -1,6 +1,6 @@ { "description": "portable X25519 .dkk of time_and_key_portable.dkc with a noncritical extension: the credential of time_and_key_portable.dkk re-issued with org.example.delivery", - "spec": "0.10", + "spec": "0.11", "file": "time_and_key_portable_extension.dkk", "sha256": "0bf463a7c65627b7dda2234d728df89ec5b835816a2a37b91497d8fecc5ea548", "credential_id": "3955e944a3c60cfa1fd6485e9693c77d", diff --git a/testdata/fixtures/time_and_key_recipients.dkk.json b/testdata/fixtures/time_and_key_recipients.dkk.json index 4fd9722..8d63d98 100644 --- a/testdata/fixtures/time_and_key_recipients.dkk.json +++ b/testdata/fixtures/time_and_key_recipients.dkk.json @@ -1,6 +1,6 @@ { "description": "portable X25519 .dkk of time_and_key_recipients.dkc", - "spec": "0.10", + "spec": "0.11", "file": "time_and_key_recipients.dkk", "sha256": "19f6c47150c3194712d454f43c7392b7344e6b4e7b074d83e9ca5f563a8e072f", "credential_id": "b89292aedf6d05d584cec9a871ce8735", diff --git a/testdata/fixtures/time_and_key_recipients.json b/testdata/fixtures/time_and_key_recipients.json index 1ea76ed..5d83caa 100644 --- a/testdata/fixtures/time_and_key_recipients.json +++ b/testdata/fixtures/time_and_key_recipients.json @@ -1,6 +1,6 @@ { "description": "time_and_key capsule for two known X25519 recipients and a portable .dkk", - "spec": "0.10", + "spec": "0.11", "format": 1, "file": "time_and_key_recipients.dkc", "sha256": "69ac110380f5d768b5b6afaa157a50ed17d8ceccfbd4604ffa5b6da38539b635", diff --git a/testdata/fixtures/time_only.json b/testdata/fixtures/time_only.json index dc11d03..ac9576d 100644 --- a/testdata/fixtures/time_only.json +++ b/testdata/fixtures/time_only.json @@ -1,6 +1,6 @@ { "description": "time_only capsule, two STREAM chunks, no extensions", - "spec": "0.10", + "spec": "0.11", "format": 1, "file": "time_only.dkc", "sha256": "99e915810d595f1092700b728f5e5081d78efe83f5343e76325b1bcc2c33ccf2", diff --git a/testdata/fixtures/time_only_extensions.json b/testdata/fixtures/time_only_extensions.json index 10fddeb..65e2fd9 100644 --- a/testdata/fixtures/time_only_extensions.json +++ b/testdata/fixtures/time_only_extensions.json @@ -1,6 +1,6 @@ { "description": "time_only capsule with a noncritical PUBLIC_HEADER extension and a noncritical CONTROL_CBOR extension", - "spec": "0.10", + "spec": "0.11", "format": 1, "file": "time_only_extensions.dkc", "sha256": "0446c9b73e267adcb24e5cc89afba2544a386ec9a050016e06517a4a57aa2085", diff --git a/testdata/vectors/cbor.json b/testdata/vectors/cbor.json index 4202ede..fafd867 100644 --- a/testdata/vectors/cbor.json +++ b/testdata/vectors/cbor.json @@ -1,5 +1,5 @@ { - "spec": "0.10", + "spec": "0.11", "description": "CBOR profile of spec §58 and the schemas of spec/datekeys.cddl, generated by the reference implementation. accept and reject are walked as one data item of the profile with the limits of walk; schemas are decoded with the decoder of their schema. See testdata/README.md.", "walk": { "max_depth": 3, diff --git a/testdata/vectors/dk1.json b/testdata/vectors/dk1.json index e5ba4fc..f9e4d3e 100644 --- a/testdata/vectors/dk1.json +++ b/testdata/vectors/dk1.json @@ -1,5 +1,5 @@ { - "spec": "0.10", + "spec": "0.11", "description": "Canonical dk1_ strings and rejected encodings (spec §18, §19, §66), generated by the reference implementation.", "vectors": [ { diff --git a/testdata/vectors/ed25519_strict.json b/testdata/vectors/ed25519_strict.json new file mode 100644 index 0000000..027ba46 --- /dev/null +++ b/testdata/vectors/ed25519_strict.json @@ -0,0 +1,150 @@ +{ + "spec": "0.11", + "description": "Ed25519 signatures and the result of the strict profile of the author signature (spec v0.11, §29.9), after the cases of «Taming the many EdDSAs»; stdlib is the result of crypto/ed25519 of Go, for the record. Generated by the reference implementation. See testdata/README.md.", + "vectors": [ + { + "name": "a valid signature", + "message": "446174654b657973", + "public_key": "10770005d22145b75334902d3dbd10491a6f210afa80d3937d761a56c308d5ea", + "signature": "5119b0822de6d25331d7c21c528f4945b8b77253241cc6b83c16ba265409ff0f1fdd979c37e18f4bd6bc9c1c18d4b8746ffdee1ce723e404feb1ca90288c3900", + "valid": true, + "stdlib": true + }, + { + "name": "S + ℓ", + "message": "446174654b657973", + "public_key": "10770005d22145b75334902d3dbd10491a6f210afa80d3937d761a56c308d5ea", + "signature": "5119b0822de6d25331d7c21c528f4945b8b77253241cc6b83c16ba265409ff0f0cb18df95144a2a3ac5994bff6cd97896ffdee1ce723e404feb1ca90288c3910", + "valid": false, + "stdlib": false + }, + { + "name": "S with bit 253 set", + "message": "446174654b657973", + "public_key": "10770005d22145b75334902d3dbd10491a6f210afa80d3937d761a56c308d5ea", + "signature": "5119b0822de6d25331d7c21c528f4945b8b77253241cc6b83c16ba265409ff0f1fdd979c37e18f4bd6bc9c1c18d4b8746ffdee1ce723e404feb1ca90288c3920", + "valid": false, + "stdlib": false + }, + { + "name": "R not canonical", + "message": "446174654b657973", + "public_key": "10770005d22145b75334902d3dbd10491a6f210afa80d3937d761a56c308d5ea", + "signature": "edffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f1fdd979c37e18f4bd6bc9c1c18d4b8746ffdee1ce723e404feb1ca90288c3900", + "valid": false, + "stdlib": false + }, + { + "name": "A of small order, the point 0 of the torsion, R the identity and S = 0", + "message": "446174654b657973200000000000000002", + "public_key": "0100000000000000000000000000000000000000000000000000000000000000", + "signature": "01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "valid": false, + "stdlib": true + }, + { + "name": "A of small order, the point 1 of the torsion, R the identity and S = 0", + "message": "446174654b65797320000000000000000d", + "public_key": "c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac037a", + "signature": "01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "valid": false, + "stdlib": true + }, + { + "name": "A of small order, the point 2 of the torsion, R the identity and S = 0", + "message": "446174654b657973200000000000000001", + "public_key": "0000000000000000000000000000000000000000000000000000000000000080", + "signature": "01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "valid": false, + "stdlib": true + }, + { + "name": "A of small order, the point 3 of the torsion, R the identity and S = 0", + "message": "446174654b657973200000000000000002", + "public_key": "26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc05", + "signature": "01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "valid": false, + "stdlib": true + }, + { + "name": "A of small order, the point 4 of the torsion, R the identity and S = 0", + "message": "446174654b65797320000000000000000f", + "public_key": "ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f", + "signature": "01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "valid": false, + "stdlib": true + }, + { + "name": "A of small order, the point 5 of the torsion, R the identity and S = 0", + "message": "446174654b657973200000000000000019", + "public_key": "26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc85", + "signature": "01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "valid": false, + "stdlib": true + }, + { + "name": "A of small order, the point 6 of the torsion, R the identity and S = 0", + "message": "446174654b657973200000000000000002", + "public_key": "0000000000000000000000000000000000000000000000000000000000000000", + "signature": "01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "valid": false, + "stdlib": true + }, + { + "name": "A of small order, the point 7 of the torsion, R the identity and S = 0", + "message": "446174654b657973200000000000000001", + "public_key": "c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac03fa", + "signature": "01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "valid": false, + "stdlib": true + }, + { + "name": "A not canonical, y = p, sign 0, R the identity and S = 0", + "message": "446174654b657973200000000000000002", + "public_key": "edffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f", + "signature": "01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "valid": false, + "stdlib": true + }, + { + "name": "A not canonical, y = p, sign 1, R the identity and S = 0", + "message": "446174654b657973200000000000000001", + "public_key": "edffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", + "signature": "01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "valid": false, + "stdlib": true + }, + { + "name": "A the identity with the sign bit, R the identity and S = 0", + "message": "446174654b657973200000000000000000", + "public_key": "0100000000000000000000000000000000000000000000000000000000000080", + "signature": "01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "valid": false, + "stdlib": true + }, + { + "name": "A of mixed order, 8 divides k: the equation without the cofactor holds", + "message": "446174654b657973200000000000000006", + "public_key": "b95f1903e3141ba54412bd1138119fbc7ab21aba35be980650ec3337b0a5c5e1", + "signature": "57890b19a0fb99cfa5fae15f2f8364a4d2d70474bea04f66c611aa5e250026a60ccf279cc11141ef368a21cfdad37a727e43f59936c20d753dea73a0e508d60e", + "valid": true, + "stdlib": true + }, + { + "name": "A of mixed order, 8 does not divide k: only the equation with the cofactor holds", + "message": "446174654b657973200000000000000000", + "public_key": "b95f1903e3141ba54412bd1138119fbc7ab21aba35be980650ec3337b0a5c5e1", + "signature": "57890b19a0fb99cfa5fae15f2f8364a4d2d70474bea04f66c611aa5e250026a642a681ccd920aa6da440dc535484ec7ec2904a332dd86256e024a37f6040900f", + "valid": false, + "stdlib": false + }, + { + "name": "R the identity, A of prime order", + "message": "446174654b6579733a205220746865206964656e74697479", + "public_key": "0368d6193d5242089bb4a5c019cceffe6a55d83495e57de52d7711ed864ca77d", + "signature": "01000000000000000000000000000000000000000000000000000000000000007b2ee545c254e47cbe2f2774f74d640944034cc59d1ba903de7ecb767cf95304", + "valid": true, + "stdlib": true + } + ] +} diff --git a/testdata/vectors/head_schema.json b/testdata/vectors/head_schema.json index cc79b19..ea79eef 100644 --- a/testdata/vectors/head_schema.json +++ b/testdata/vectors/head_schema.json @@ -1,5 +1,5 @@ { - "spec": "0.10", + "spec": "0.11", "description": "HEAD_CBOR of format 3 (spec §29.4 to §29.6) and the result of decoding it with no extension known, generated by the reference implementation: layer 2 (type tag and version), layer 3 (the CDDL with R1 and R8), then layer 4 in key order (spec §69.1). See testdata/README.md.", "heads": [ { diff --git a/testdata/vectors/inspect_differential.json b/testdata/vectors/inspect_differential.json index a6f8ecc..dbd21d3 100644 --- a/testdata/vectors/inspect_differential.json +++ b/testdata/vectors/inspect_differential.json @@ -1,5 +1,5 @@ { - "spec": "0.10", + "spec": "0.11", "description": "Differential corpus of the pre-unlock checks (spec §63 steps 1 to 8): deterministic mutations of the official .dkc fixtures with the verdict of the reference implementation. See testdata/README.md.", "format": "Each mutation is bases[base].file (in testdata/fixtures) with its edits applied. An edit is [at, delete, insert]: the delete bytes at offset at of the base are replaced by the bytes of the hex string insert. The edits of one mutation refer to offsets of the unmodified base, are sorted by offset and do not overlap. result is the verdict of steps 1 to 8 of spec §63 (capsule.Inspect, the Quicknet profile pinned, no extension known, no network, no secret): ok, or the normative error code, with step the step that failed. kind names the generator of the mutation and is informative.", "seed": 20260925, diff --git a/testdata/vectors/locator.json b/testdata/vectors/locator.json new file mode 100644 index 0000000..a2b72aa --- /dev/null +++ b/testdata/vectors/locator.json @@ -0,0 +1,207 @@ +{ + "description": "The extension datekeys.capsule of a .dkk and what it points to (spec v0.11, 44.1): an envelope of age with its header apart from its rest, the rest hidden in a host file, the locator sealed with tlock for round 1000, and the data of the extension. Frozen. See testdata/README.md.", + "spec": "0.11", + "round": 1000, + "datekey": "dk1_eyJ2ZXJzaW9uIjoxLCJuZXR3b3JrIjoiZGF0ZWtleXM6cXVpY2tuZXQ6djEiLCJyb3VuZCI6MTAwMH0", + "note": "Cartas del viaje a Lisboa", + "dkc": "ee03814d73b55af618455bc90321bd0c27b16b8b440f1b954664218ecddcf4f33d3838f839d7549fcacc8ab912af943afead15c99524c0bf9a637099db4164c0c010e8201b3ca44f1c2563670910c5dc76aacad8d31a939be742afb6f985971cbc3167a73f7b5700213f35758b8981f210dcab1252433673930e4f7fe2cfc048270c2af4f9e22b8ff2cb2e09c6cc964b02b21b83a0fd293c446c55e1a2ebdd2cbcf997c264602c92d42524b1cd712a506634090180608822f4360d733be5b47bb4ea4018bc3eefe429c1745c809e2a08aeeb897563ab46c9d2fdf834e57d7f1fd5d76f2e583d571ce055a52e2fa15000a0cc387f088767f1177c68af7141f338b71499c05488e90f0c5440c775eff25469a30bee7568b1a1faf998d865f7894bf8b677739e191612774ae8dccc30c8ebc0983edccbfc817cda3b74438bf6f7d761377592db4f52100a19e3b0bbc69273b01d54e2bcd843b5936841cebab1a20d8986b6ba3c23248ce762ac072032cf85a36a3f9cf4059b41f0b0fc2ccf96723552f2a20f6baafa661d1a202bdab2c22028020152d3c5118387ca32b8da9928d303bd2f2a1d1845c01c679d47c31bcbf823dbca5556c7e66315751ddf0e1f97dee3c703b7545cd84217d680470b01f0d57c7a902eacce78e25374fe13b4d7a001e660df9f0a5eaa1499483d08554ab314e6222288e55e1f1c3ed93d897fa3424fee8e13140407950dfc68ba1db731b72028fefd21d8c368fac10a186a73a1310b9d9a65637d54ec9f0a022fe0cca3a2cc81818510568b94c4531ce6c00017b9303c202ff40dc3dd70fb9a8e221773fd57c77b82ae7f4bcaa71fce11edc7e6bed299f5d8b306e2f3ab0f6952f62fe7b61f2358966eaf9f933b538e960ba7536a87ceba023881f1ee66fd9c5c4a7a05548ef93916a32f0d735dc517fde4e787b85c430a1eaf7442f0b71dad8f46c097f624c64b6d3c8bba7824e1d5cda3c43376f0125638b905abc0e0a6be8c3637095c6664df17d234c077a78e6a588c259db83ef42df60744df33c6c7f184092d169a3b4eb703d5936fee55ddf83be09944a6af840ad6d1507c5888111288cd898d6e3a2fb9746c0b62d7ffd7b486e6a507a9cabd14f47b431f26de3470be86021f5a16ea48b7740f9745d29f1cf0bde23a4b639464ceee378bfd3b45040609b27cfd57c31334ef011d94d971b9a5395384d3fb15ead0d7a0e7c01155f0a142b77d85f8196056a55aeac01fa01bc9c33632f242eca3413af62e105448d60c63b84d83f13ce52875c205c8a680f588e6971ac0bc70650a2126e8c105d66b8fd8c812c10f8513238c140bd5c91532e45341b77df32f5f3370f813408f7c3ead91dc17db1d93a722e992fc9539d5a6186d4ccbeca31478286b9891fb9513a961127546c55f3255168fc3cebdd6266837d2bc41e2e5f015f4f7686b6c3fb213e856b47946f6d9f682c4fceb30485dca116067a37090b8c01c45db406fbb920e6825d5cbfe8bad8f965630bb645146d966e8d326d0e24cd330b8d9774ad36a8204e427c6b0ba20db20d03b80d9b94b9e72305a0ee69ca6339df880f329a2a628b1dddf2e90c344c2db01e559332916533a4ef4f4c7d9404da29436b31b81280739fe15eab10d1b4dca7f28b342a25e15f9c21a1bee2b9a10264a2de383a9f1e9aa2bad94366a7eca3764d7fca5bb21a772a70af20a9b8fa02da25a0061fcb7d70b1e819a617b26811a657d9be611c36ea1f9cf15957b50cc4d215db052809e9796f089f4c94e94e852313c7a36b6aaca542090e1d64eeca08b42b266974053a85cc955c0cbe326a5d862ad4a5de60b51957a71c5c49633c7c838c8f5846d85a6f76ad8087c27df203c39997e4efee96a240fefe5900405d91a400d98392cd45079af48b149ec7c95e99a22e8cf024f52f759d47595d6c90c0619a7c9f2001fbaf92a0d43655a3e62653c04c99d56b50503a9487c45e6eb019e926ae451e6eda6ec9f0d4184e0a5dcab7264aa3ccd3df08c482d00bc5b5effe623accd1516dffca98376b9fd596b3eb9e6af0d6d390fc16ec011192ae73d681ce540a19522c19a283d6ccb9906893a222f598d782bc7fa1069011d9e9c5225280c26572ef0e37554ad877d2b64cc8a6f86f06e6fae2009827be6111a88160c98b2980b5c4c16497de5a1e75a307ff9ac581c52e9508916b9138e9df24298d79f280e6003c174c8f88dbcfef977a6309f7db96c44e99b9f43268d2367ef12f879b2ea906c3a555bfb9c09e6e3d10d6b742adb6b4e90bca6572fb4ed3651acfd81642954936e7dc97f034b7e42c08e1838e9032e982e705dce629b00204bf862b7e254a8b49c7b940647f5cf27b5673d4eb1b723ebafaae178acdb5b2e2d4a4176a944e7922ea81f175c6ca09970f602782ed17f71635c4679fb19fe64d9896982575ba2e7ed4f5913dff51d0fdc99b25ef51c88cf3922b85b1615e1943b0d9b69599711e9f0a3664d1d1beeeb81648b579b8965104a0242ac4eebd2c20fb2756dbbe6358a09da0bd4dd543232aa54a92d2a4027b620b51eb80fe8e169061442fc742a70ba449575a3bb83c2a91bff8d249151d99712bc4c413a455ecfeaeaafe14e5ef8f02398d75c1ab697fb2a98c08ed58abe46808445528722b2cd532e08492826d6b9d13a3e564f51a99608d28d13a16a5082a7e20600fc229f7736b3f555f84a49499b15c812b2880842dd0b2cb9865ad9d9499d8304ce32ae6437bbc3dfcd53b7cbb3c07d4b719b48be8ab6848ab4cc7455c5a08c94fb48c003cb65231cf619cba729d9735acd842b3f5dd01809875dd287b6f4bf27f3e4a8e9a796eeb8b80709fed6ef83e598281e679294d32e77ea15927d8f777a8fee3e9e00fef8a4de04a58feb64fed01ca14ced9dea6ee4eea43a0960a5e9e5803b7c778e1125cc981b935099854696c874c7be4d63be2ba06b185b99c949a18b261a72ef52aaf371dd241391c920737ac1dfe17a200d1fcb9a1cc16ed72c5df1b7af3b5ed4f7b3f718d28fb4b6f27bd49175d2a6946b5940cb8bf1dbd0d786cc0a968c0044ff3c172d5841a28c14bdd611fad3029b7601206404594b29adf1efb0d5640fb7422a7ea2d3db8c2c65a3e8bcc65cb2fe7ef724f9cf82159ea6984ec85a4a172d689f614e9a0a0c5893b019fa0701ef339de724395b9f9fce48402f2bf069e2ae51fb23c6cacf58ce3f0dbf927f3ebe888f63b7f3dd10895c99dda8fe60820e8beb18b3490797575fc2ed009f777f9f205b7001cc47fe03d45d022f726376fc9908e66b4659a218e7106929c0443c0deb51c1d36b8783bd4fb91956d80ef2820d6806c2594fdebe33ae620e5e9e816649a6f3ded5943ad676b57d2e8180444d23fdc94c1245008c26e7c726fe1c35d7c33b9a48e3f456317006ed0c8651331b50797f85e22c49e5e3fa34dec19ac7efa9bbd4fe6d529c5e59213c2b1b51657ddb051fc52eb1c6eb24a718d7053a7ddedad40822adff1bdd7957e85b7170eb743fc579aea19daad4f7a6388273916cb66c69e90c9ede83ac8f88fe097d2b752da0c3b2b5d3ca98d4498aca32169b3e7fbe5d8d14a51983a5cfe8f9b775654b244243584278213ee6c5807c67e845213049ceb02ab4b9a52ec1cff8f69ee53794f637aefa865a1f0f3649a14eacf03edb19c777876cbf8c959cb41f86ccb6d5451a1a1c4b3159d89127c6d1f04a1c751c2aba4289d629112e54e2bb119110cc180f6d4ad9857620081813268c50fbf850437e5940843c62c3efaa210a2a318c4e6b4cf89dff2c886d1495043cc9fa1eadf7c852114817f3df7cd1adc0915777e8f83f1bfdfa056f2dcf3d4cebedd888bc70e4f762399ae8979288333be650d00349ebaab3da70e2b48b3a42d9225ed0dec5ccb24e6f73028032763cce6b645abc50af5588c052539ccbae09159b9d5ce17abd7d491aafa904f5c2b4f284f7b19be9a91ab6bb9542cdef9bbb217767e65d38769602e3a6a355889fbda04679e78cb1b4e7b880014f81b623c4c38e19c7b013c8992a0c103dcddb68c0a6d35376d132550a1e06d590e55f4e7bfbc7b8eba4d5d7c923e428551cbafa3d5e31f94ccb38d2b40fbb07cfe35ae7d1538871707a1aff5b91c33e1420a4632d91c5c2cca2838f30768c60ab6a26261d3d74b59b7173a38917b06f866d11b89ef999a2df8b3592f5ce42fb230a095626be28a46015d4106b78a41829f8455fe4e36d473c78bab24cfbbcdc7e11ee6cab0703abd82d86fe0ee1e7c07b82515f453a7bc5cccf67240456b00305908fa926945718b9bedb8c007d59b103e8dcdcc42e2941489e6ce51bde77cc5e556337f08be392181e9325b60e32bb3bac79c1cde2a6bb671ae5bb35d108f676f963feca6aa0eb47de54903ecedbbd46bca7fda54d6854bad92b98e66fafbdaad17c23f9e1b2998b6760cadd57b91182a4e43735a47de9006905a29dd73347592ccb5c4a5230b5e2d4059ed055eb3034f3bfc018360f0549b1a6b2367d6323af05038dfab8db4b35acbec3297ff5e9751185641fc6d772a1e617a615be2d18ba1ee9499851d63b0b921a7ac15e04c4a2507ef25775510fee6b051b5d0c2d210309b1ead2d3f91bbe319032b647dcd7b0ba9563c2800b49c5c5b91a1ac8a2f9032e52f1edbaf2a5ae492b34011e58870d712eb29bfa6b1562cefda3fa1fc0edf17c518446b1b120ce11b416a596cd381eb0be752a5b7ce1d23cea27ad1792667d182bdd11281e80ed8ed9dccc94ba98fd2e6c3895a4f21cf99c11ae36e40ce03c37496ebc2cab7b808b394557266d3ab1d8386abc04ff79bfb38d7fdb4a0e5dd32308475e9860d1a9d73d282c377f35ca76a0a99edcc3140d990cc85dc9a40be0920913ed67e4c4957d728ba038e4b43f983b727e7be0ca5b866bc403f4395e3eed91f224f7cbc0cefda0fcab8681489e56be77bd61ab269805b07d025806c5d74f8c858597960150442688bf97565826146dfbc6a2932580caf1a8a527d27cf8ecabaf9145862ca57f2a5a775cf6b534c186d5ae06ab1e5b82f91931eb07f163f23c04ec8230ba5d1a8930c31d3e622f2c83bd593489c56d6aef562d518a155e28ee6e2b5ac5577a44754b3bd631dc2a643af50cbb9eb6ad5bb21291980f64d7b91348f1aa2fcd8acafa1de5ae890d5143648a2d2bcea7053ea58d3a48d4b3222c36069cdadcba4bf94fca38b406138e4ba188602b286dd7222b86c15146f4e04bae67abcaf5c6cf802d0fade9190dd4aceb47f41e2177c2254a67f4c3fe5d30430d2385094d99da73d98b5c6adcce3b0b4091baa14f522115c145c31f7c9eabe4317d3dc335d2d472df9b250b2c9fc0d1fd1ee15155eca4de87397c5815329069d655d2974e5ef5737d1153a78ea1fcbedb03bcbca663d750e32365f3ed527738c66ac34b5d0fdd1f65afa77c2a322cecd27ceadd2559b1edc51eb44a529011955866d2ac01d3bfdeacb247e8e0fd219492ebc68287849370d5fadb9c1b71b7f4ff4c645ffb6c7ddacea49ab0e79f9c7c83311635593f6a9326877cefe284902e3de0f0d339af7692fe39aef0b3304e4dc45419ac816e61c6090dccec275b1efeed2debdc589a0e4923432469ac24cebe6a0a05fb7d9f0fac9a5f3f88f31cf4d3d725feb6c0066f6fc6c13464a0b2c22e48633dd1ef9c87b18609618fdc5ce4a78358fc82cd6182b286f7a3c915fd0d3732885769332af100f89359f6ce5e4611db542ecd2b9cb751e2e6cd8a5cb0c878886eb84c0d0702cae0a837d161de86aefef6089b2281d6986d478a6edd9a2873106ec42818d6bc2bc2c6de0b10f90354a0733dcaf1c1553cb5e49eed6f24dc15bca702c9502660404d249dc15eda4a854a60c08d4f6e51e291275a53ffb4be824036b3cccd792a67121dc6287ddd70f520447f274459b90d08151ff71ce9b81ce328970359aa7e9278ef85b7a4c8b73a6c9cf1bd8b64ecc8a5d6a5ae859bb8ac5599b20f55b201a389f01aaa7c9933bd79ea7f4cda9a6d0dd5fab81b5559cf9baa549aa74b22a458959b4a925399415693403a2d75e524b5465985cc05f856a7418bce674d642195cbd7d6d3bd5e2cd0ac57fbf293695a9f6d1dab534623665ea31a666cb633497fc597f6a51014ee58c0cca27c2ea8daacdc77770b16178092df935ce9616c95e5ba77e23662f79b6cab6af60c00096361bdd43c94005baf3a321ac3515f6858c60207305f6bd2e28e913354a20d7d5f98a09dba318899d2c9b553129ec2c0673dac849a05c086d6b9fe58b449000c198705cf982fb8ffde27b429ba51103c8d9cafa25b2d34f2a08b28f32d4f3bce6595c4cd9d8c6a482372b0b2c2544036dd43c8ceea748e1b92017a9a03db8719db6560a16e5d88b175fafce2d180c9516db3ed1c627dc3043e0a9aa3ce5bfab086d1bffb5e7efca18803fa0112cb281901e9a77bb7eeefc25169473b99049c06faa36c3306101689f4892bb5056513ce7e73dac906bcc0b721f34266470af08220737f7eb458403746cfc0571fd021e52a87ea03120ab19723a746805ccfa7a445ec25f4eb234a5f18856589012b86f7d3cce63c04faa1097c2e91c829d290dde41734f4cc11f0340423e1c9072348ba80a68846bf61b619a82b956ef6e7d41feb24ccf000a50a159beda6276cae4d18f98dd56fb7dd25e773ed147e7198663ba077382a6ebb9ff9aa07612ca04d0126de1dee66d3ba8c4e2019c6fda91a3b716dedf61f6db20c2a2a1183efd18e70cf584c0696c02e594bf43575c6f23f4383b42f05619853af66f769a756b59ad1f469a480924994cf514e5b6a5474ea5b642477f3a9f30214193a3e778988b98f7942cdc1212d718123a1f9b35af90c611e736dd1adeade640686502b69f9ae534e7c9df7f0fd03bb3eed5f81042c2df16ae1c26e302d8fb5c6caaecdbc8c1ff8ce2dcdac4325eddde37a8a0e060a0054e4be2b5e8cf589f458b69610a873369419b5d67aada89f77330d08b2f8b71f9fc7cce6597ee8f29088f5a89d8ae7611550f5dcca4674e4a7ed1743", + "rest": "8a2689c9bc0a0d9773da3d14f6ff6f14f730dd4a5462e5a47597997bbc6b96bff60fe1a55e2ba4089545184c0b0a973847130fc1324aa7dcdd29896f185fdd77b4800ef385de9d6a6259401f342400c314fc223a1bcbecded2dc7d0b7e34e0fd4c6d2c4d76a36a18cdd0b3f25e98707ed0c1c36859a635b5a09807fbb62edab178e17e42fb4fc7d415d0efde0e643b1cca0e10e05ae67fc93224aaa6287e068d12132f6c26ed78f756d566f83c833413cf9be11b74fabd3bbcfc5a09c346c656149b35ada313d71103862466e18abfece1b5de30d7d2da04ccbd68933cbffdfa3ef38317d0499bf04924582dc6f54edeef6b39df149eb3f386a602a812a01b998c2d54745feca7647c7ab6aba562dce1ce38aa499cad7c2c31bac32c5f2ccf512eb1bdfecc2949e44e9e8e0d718a9f11eb7d8226f8f6a0ca8d2ba55f76f5f52585aba2040797e4936af23bd8409dac6c2a9e72a25fd656889d2f85cb1ca61b4bc97eb4400c63a868af10fe6e0bba88260ec6f9631b6cf1f43c321e5a8507f2c9388173e113573737513dafc8b169bae1d3ad447e1f63d318d33f7c6a36008598aaf236f4cecb705e8925a140a53f4c935a269788b80c55d97571d2526f9fe7e1e88e3d76a2b9820f8ca6e590daec76c9e1d94b1e0e7d87f1160e3be70c3544e5620131fe3cde24da788b4f8e6c466a1525369829d563c21e6f38ea9ef40ee3a31a44bd11f48824dd6019c590ded7f60cde7d61dd36c122f187252f5af081090f14557ca930d061799beb24c67fbefcce03f21440f5d8631bac2419a5b3f56bd1bde054a8096bf16cfe0885d0ef33dc56fcfb951a371eaff0d5cf6e099e512d0d6e16afe5b753bfcb85e325262e2faf6e843478a060a64b5adf2c6038688c37e7e3a8a0bed370b3f8d847e77543413aed6cbec13ac64d6f751d18a3a805ef6741594111b068012a10e5ae943b821069c48efb76c9e9a57e6cfac6a1cf9bef28478d40cd259831aec9d088a2eb5c65ef2361df3e9f657dcd258af93d0780a0be390ebc532ffb45e5999c028f3e762849f9e20e9ecba400539c24ee9fcf5175868b6d876edeed19295640c2acc0852573a89f356ff43f0098439c81800dba4af9c666fd865790e73801ca4e010c12e65495cedfeb6669f7fc149b3b4e6da63b91ecd11bd8dabdd8fa15b2c885a1522a674e34aca1bdc9f5fd3551d0e20a49541d59b653d6a84a2e73289ba8506c1226d60a8c5aa3da866d1f88b75451a893a1e4d456712bfc53aac071dcaad92cfdce420d177a3405a7d89650c29a9040f6517cfdd93a10a6d7e40ce5cb131f0b1569d5a76fb6d51500dcb096d40faa5c04f7220b16f92e465a0de6e3f952e98a55250f02c9bee794825b9d2214f08839e65dd0a3a33af28258e53888926a18cf9168c24a6cece5932e7e114a1351949bead203b8a7912d5c6a5f2e00772ea18fca970e6d02b8113198ead9c36a73b2fe4d12cea0469cb28cbbe45f31e99608e18eca6ad113d12e2ef89e1f5ba3a6eca32288b1be7f951670c7d44f1017dd6f757fab16740c3c3622735a2d8ae90f0bdeca0c4c8e7ef203e2a08868f3755c21fa2fadd4121531344127022f046b34e1ad1c9066afc744fe1bfa5dbfa8c0ffef4ac6fe9960f06b4defad72ecf6efc39204a95f3d27aaf967d43543cf0b3e3dcc932bfdf6234f852b4817e6c21d0289445ace8c7749e314a8256e81c2a82cc414ab60948b1a9a60dab4b86e694689e4d160f2ed1c39971b27171bc7fd1928aa80404433eddad382f92e672c1b92578be6494bc13694be1c165bcbfddc4228957afceb5c867b85bd11c00d50e9c5722907f56dee6f3c45445be0283512aa65b0214ae2927823e941eae8ebfc215cf34e9b14bfc29645e2a63548f022deb49becdf344f1362890c1b3c39123e172c5092bc329a525d3386bea40c6a22d0bf8a8865387496126e63406d163a1f02944418fd8373afd863334ea510534e115e7f4999b4f4a4314ba43955a743a678d211b61b8a1e8619550bcb90816f18845989d80e9994b0ffc1c02236bc8651d5a1a520578df7368ac97715a8d88812944b4d97dfb57959722460388cd39d1d5e06a125653062ea6351943cff52fb7f6350538b80cdea1f3f2370385e87b9ec1aa6916174c4487036787ad62183706cf88b2b9eba7cff2a5a0eca6c1577fa2ed872c7f333e0e18e6479e8ae7060b7dad0a78ba89248c8db0412f251181ee6054c1e67ec4e5f3536610a8acb4cc03e8b06c378c294af6d58acbd8a5ba5629617b90b0fbf01b158d487d2d76d889268feabec421b222e30ab3fbd8cbe6be9ab2dad2b67e1c871d1ee7de65eb160b674262a57a6942e24e1a4210658183eba1dda62dab40c9811e34416ccb9bf977e1a3c5dbb51f0b1cd6d7e855cde268bcfd361a646b2cf65f5e7c6ae0f18001ca16a97ca11c60fbda5146e5574409d06d24a0892a0bde605f5ff0fc84354a2fcd38abe7a9da7049d8fdc966aebaa213cc8bd9e73b1773b6efbc51110865fe1c4464998d682ee08942f48dc01b376edfd42d6223c7dba44a9e5833d1484626072272915ce7f552e92e78d5552919adec3c5508c2084cdfca99228dee9e7e01f7fad976e2dcaced6c82c04f05aad40c7bf04ce6cbfb6f76ccf77cecaadf70f5bed8aa5e202c3dfc23c02174ae385d455d3fcc95df4d5ce5677c9c4e644d5a0384d33db5dbc670e2bb6dda99d1fa53dd7ce86e10eb8f49cb380931ae38a1fbc00b37503dbdbe66d93545b407cde600cf5e9b62c8494dec574b1826e4bed048fe406a96757e19080f8fc935ec05f626a6b3542048f3a678db1f684fb9471c388de7d3bfd3bac2e9dbbde3000c0745d7021b73cb1dc1bf60b91a9df32716819978f7a319d054baf47d2f2739c1ada3c52e228c45c648f3798915259e6ce30d737fe40cc33bb5883e2a2b65a5c97b8bfb4b83e1a8b145b8e3e47f9bf625cb4267268ed30565cf6f908c88a60dc709176fe5b61e32ec48db47a9746b507a7f43566e1a7decacf3e48a40c97c44f57a102df4aadc13a1ef52892a3ff39e59e9cf7cfca6165f09976171db6929b8c523164569c210c924392048b924a6940652b288cc4a40f49ee4b0cf5048e8ac88202582694c27ebd99f0498b07e15df6246444f180cb77936e69d41e6d1ea4a34a2177dd462d1ae229d4f26f07ff46cd673449e5066220c32a2ee1b6b19574b274ce19236b60154ba033a5060b6438f4d4e1508268d8d0a66d6bc465982a2652cb10c107fc676709d3ad2dbbd45c6761c224efe4f83b8a82524fbdedccfb1b47d5ac7d0de640e54068fc1cad6f115baed2e563506d2acdea6b7448263a62b929537f5fd0ae4a5201d5e62fc9e68280df3384ffe146de950c48b2343bab91a901988b1ed8ea9df2c336b404a6fa82010858bc6636ea4c179cd170cdf346a96a79c42ca8f2689d85e698309ab4f67e475a5e0c8bea103e65f885b109b1d9829ff01d36f8ff3e0af6967943ecd2d084bdeb46c808ab9f88d8b6a8305b5a4f42950ec953ec67acaccc0b556f2dbf43f00e2d57172cb81c4f45017af7f0889b981776dacda2c471832d3c82e359453f968f547c00831c5372f48ca9ed8f9be4389311c663522e6ac7d71c3dd048a8206e639f3dcbeb5956c33936da13711310b544d55c5cbedca0feeba63e6f8f334411c84695905046447705cd7ddf69e486475d78c2b342c00d55c18e9345c976196b3d2c4a15ecfa08a20ab0364e20ba311416ca4564a453294854d50cbd279d126e0fb3d0daf277d3dafe419167b9568289eb74f9d132af205c50b518444b11b579d05332d28bd00811e1a7182e436fc5403f0aae620e85ffee1dbcbb09f654fd89509e814d23319c31458ebf130bd31ce9c22cc00d512072dca567e499b2e533372329eb10064f353bfe2fd37be568a73e3687816c36bf3f8f5843d333a88ad81be636a1353950c2e22ebee07ea2b8d295061e7917789aeea9d1b5ecf4f7f9263d55d67d5f02ea35969fdb6a82def84fa43135c46fb9b1a06e744b80d85df2d235a23058802b6e8759a336e06a4d81594abba3c2f9affda78eac173d12c414a6647715c433f532d43bdae6325c8217765b5a152a5765baec0b285a5a6831dab84ebfc0efa475872d60f3fd68be45ee8db5fc3cc9f07c757bafa0d3eefdbca887ba284dd0a9293a0fbda15fc53fdecc2948efa68547ab69954313a26f9f7782ebaab3741322350b8b94a8b77d2c70b0b4e804cd272f3664aede252a57caccdad2c9196d491ba6cc9212805d07c0d4f09c3473c38ecadca31df2f6c854f4fb9fec1c09f36a3310fdf01a989fcfc3085d3fe001cc1417828f3c637f1a8ae74d0855228f7589b2ed9d271bfd0afa35700350019bca855412ac67732011e0329b0eefb750bfd6c95d836ccad627456c4acb763239ff0870043d35f9d07aaa7b78ecd8fa8aad02ab32d8e2a0ced0d5804de487890142ec3ec4342752f8ec51a2721bf7b4a314bfc4c97284f6c6e8f9b95311ef62c9e648ceada0e95374c1561c4735360ef1532afcca6b55975ed60b45005d1b15772d6b689c3a7a20de22a808937d3c6ceea64c21a733a187bd9fc26c94288f43c85517358d882a72f715a759dabdcfa1fc8a88d7a641ecc430d20a3623874147104be2a3a428d7995e992f19164279497af17689fa2348f81eeae75b3b68defab457fa89703d173fdd91e21d56e26f95d5de00f5aae3618cf8e5d00b3d7e9f86435001acb51729a13462a45eb759b11e8a3a597387dc51491bb8617561e1a49477a70207b16f406535f234ab0e2bf718d4a69f9f6c77da9c9ce0c3ca5878601b5665ee02f285d7989c7d800abcdb7bfc9685e164bfbf8f34666fb3013f89f25441af4582bdbfe4137d5ca39202c822965c4c99c75e5e098dbcbabcef3b1ed74a6307ad35d439033c073e874c2be1ce2acc0b88364034ba7724d08112bb7ba2012cd3ff2b71785ba2c589a882bfbdc8521872370e75c5c26a7f3727725ff745f1eedf18cd8e8adfb4c4a1e038846b420c68972bfc316a6ce3619d54c49739182551882a0ff9cfa9113034f61e165184f1304ed8f8b1a35a19a84c529782939f7fd4db5a963ffbab3c75053b377fbc57bd12dd3fbd7a78e721b0c6e75120c97cb2951120f1ca4f16a9fb9dd21f3a0bbf555db943c9c914497c08362e37db3a8abb90c31b03910c3be9feb6da9ee62480fa70b5234e14930981adec95ad16d9785e2555bac9e54c44cb276ac220a2eaffe70aad67051a2aa7b8bb70eb9110265476a3c467eab2d4b62b26efcc480ed161fe831e9ead1765b6c68678a2c7cd938c39409fd468aa8bd3f11c2bcec6266f9667d5054e6d6cb1b50f7f42069de7be18be7a9a332d80ccd4df2089a8636fc463ee0156a5842e9964bf1c5ed932233c5e1b69ff8bfcd8f749ad2753d39aba399401a37e66938a16f35387ad51bd5de670e7fa31616a39ba07c1e8d2c5844ccbd3d54baac735d11a505457c4d8378b7b86116736dedfd85b3edb30f5640f50ac4f3cadfb83476d76c4f676ad3f124e57f0dbaf046815a27bf9a7d26695fea3737cf087006312dd52ae127853dcb3c867406629109e2d40e1c3697c3aafa36bf3802ee0919a066cb2d459cb2e63a6511dbcc0bd432a04181f5fabb101305b298ca232841e1c61a4a1b702b019e83a841832dbeeddbb6f2f1995c2b3f218a0329f536ba9624b5abc22a05476bba6a61de07c4959608db220d82c8a2d8419234b9e0f6a1566ff30ddc200e2313206fc02e185fe297fb5ebf10ee8c078b9dc6fd5a74b96d37ba3bcd26293af7c86505ed83d903696f7df00d85498309043e65eb04ada8b3c62f0f36d2bc20bd32d8adfec149e0984678be5cc95c3cc8d74f3616aa18d3be44217d4ccb740f96ec68bf8e710f8a1f75091917b507a334dc54acd8f1724bff9bfb153ae6120cc2ca0d8281d5db03c5b6940a31a4bb105fc284e7281750ca98e55d08ab4ddc60bf9493ecef3f5224d5a9fbd967af80ec5c7bc1ef55dc9d2e53876522096543f85d498ecbbc67bf876b74c032ce1bb29aaedaf37abd85239c3a1b216ec408996d42ff81e4b32b0ba62a87ed680f0a66f231b4d94fe6cc700376e2f4487ac3a348b1ad9b2d19387115ef97baea23ed9d4dd1d32425db1fe39d8180d7a04efcba5e09272261da3efebdb4ad26e36e33753ac2de6caeb797a6601f8c84ceded75595b877eeee7e59e2c8e0c57c66b815ecca4f82874c2fd4c3346750d37eeecfa68a3dae7d86568301895b72185fe688d83d03b370a8d9dfdc71e41e6684cdd6104e55ff145b3acb485fd2bbfcdd8099c55b8a41aa74b959d575e001dbf29992ebbac2e46ec9831cb5b93c5d9d13e4ba37697c2cf7768b5c8cc5098b36d41c855b7438c62cc38d1b278032e4114702c2c225151393ba1b8465990680bfb426f0c9333f3dc66c08828d9d9aedf6bab9aa199611eeaf7d1fe9cbdd4e4539de06c04a97d442f98299a5a6d0b3b900f3d3efde518d51d47be8afb76a1bbb791d01a08953754fdadc3ad36ae716a3aeada5c63775c91d0faee5fe024c955d934c667390e118189912a72d6a6e502b836e3ad88e5b87c7dacb6f4e619586b69aad976bfd391b0b025f9753c88468631c7a31781ca59f5b874708d3a281c61255b6568d25db7d992f97febfc2e207346cedb7fe37821f1798f331b66fde4c6388f73688f54cd8f25a2c38766c53c48d0f6fca3c43d34a846bfc334116b0a5819daeedefcafe4f73864519359c2fbcafd11012a5f82b9a3e64faef074d675091d7d1a859a822118e3c8632f61c8559f7c41e5172ed3df2684192521a6de5656c75bcbae65301b4cbde6452b88baa02bd0bb3e9eca87f302508b63c58f58b438e47b38dca84d2783214d5087e2001d15a92f62765067138893e7a80428ad3c95ccc614b3e42dcaa35000d20201cb0c48e18b2898acbd8d34690cdb0c0cf74654301389a3d306ec0c6ae78bad5cf8087ee118a1f83159518cb63bcd13c541f9a231203174e4c09cab8f94141bccba3266aef3323b4cee7d2aeaf55236d71f9976b13ffcee890358c5cb634be1", + "envelope_header": "6167652d656e6372797074696f6e2e6f72672f76310a2d3e205832353531392049417861374664446e6836324d526b444b6a46375a7856543871326a4c5a6c5545384f5955654b31726b6b0a4b4e303753547769492f644865395861644833325a664674674e67584a532b3637752b50466b57646c466f0a2d2d2d2071796b634a7476302b3376324b646d2f437a535631784a4d704e5a582f49776e446c62526d3630767861670a", + "host": "d3b9b166a9b2b304971bf45a4e02d185ecc0b1d0920d6b67914e5651c823a2f6dca4595cb1a87480253a442ba86bd32fa6296b5a76723ead55a8f5484eec66d3cae15537801eb8b919370232e1bc423a6c14ea1b918ce4421e103913e6e72b49d6200421c6a6a95a0e48e029a691ca4137ce54e66ccd9a2bf257d9f24e3a57d5ada874b85b3961e0eac4384c62366bda9d0abcd8dc3bcc53fc63bdba5a64b4f3220f4a82afacfbd21259e5caaa17246ac90c8f30fd046dd99c7a89cf1f57a1c299f35da6c97cf3f5b91dda9230670762f366f9f0fb408ddf2d2c285ddf89e678f8a9489f88b5968af5cec162bc1197dc183cdd11c04684d1fa06d5ffd8d96986fe94ded9a4a54dba13ef82da01fac5b9a2795a738f966242849a81fd47a9df1dbed7781fd1171194282539fc9877a6a36a5a0a097eae7003b30a8778c90a6e675cc961c83ae203cef7ba380b4dbf6fb9a53faac2694b4486f319fa4560c5a4099db0c98bc095cc59d3beb2f2c9cd14e935674494128b2912b310c437a7b58e3cebfdee72eb0c70428936c1a0c959fa2ff33efd6559167538ce22e9e949c122330a9d038073b6cfc7e38bddcb8bf91b62ee79772c7886058e2d949c29327433cdeba1c79aa951b049c0908f1d33e2669b93f810455a921f1cfe0a0ed591da7d0059ce518b10a111ba85814c1b6bc674d25443604c171626f1781aaf8b9bb5f11abffbc2ec6c3061c7e6d52b7a4039ca43e341f33a2aad5c2452fd1f02e24ede2f4c4829f8c5a0194a7f67660eaad4ba2340976596218662e03dcafad12f67c544b6b35e285fd4b2ea02e08702ff1dde2058c9f3cd87a18939fa316327584bb82c891aa44b135ed843286d4eccbbaa3b032b677022328380cc246feb9ddcae8789e1e00e1f1fa2cbf5d5b704f7af8e2c3a82430dad07f9f472b2a017e6f460c2b326f090d18601eecc9b1b513a6024e3103b1e316d66aa315b73974051a4415cd7ae35f4128b9866638529c59a2c123bdbb9c5da7aeb40618052c1c2d983cca3a61e2c44e4c59a2e86fd1a17395522ee77ba4e88fa9c29b91e7bf569c06a762ad074a852244ffb4f4fd2d80ff6cc6a16077d8cebb2463c95e3eed915cce30dece6486ea72a2786a25de419a8dce67d8b59b92cd83609af6d45b20fdcb6dd793a1d5f8041cd718a18c145443aa67b5370ad48007d0b5f91daa6e34be851ef02baa81a873ec50949ad11db4665c3e822e94eafce39c204c4a3215958bfe90471fe509f8f66caaeb6e3024b72d4c78925e044acd6e069b173ccdd9409decb6b99d03b889e1959a5f7e63c9e62e7fb33b811e2c1c59407345030481ec0d4783bce6d7bcffb085da831842a04cfa871850f61ffc0fabbc0b40cfac70c5b6203dc09e7e5cc1e6b2a628e22db3444c57edbc00d413b53075ef2a73908dcd92d9240e3163bbd7c1ea40a084570b9968ef9d961e9c3c7b6e18c4435059750b987148911ab80e02938f3d64829e91d8ec8f4bdeb141108a877eba448738f656fe6c6b14f37bc4218678c2b40d229b4c4c2ae44b8d514f73daa3398ac6000be2583af541bc4529d161d6706da9d1f0d349bcfb4ff89b55a509363c54a95635c6ff94e9c7091faa96eeb891a8efadd54b2e235219088e0e1eeb55e3917ea312102a74baafd2124d5e3a2dab587fbd0d9e2167526ebc800d49ffa05bff6ff5677226d85eb4d1f21279806b3d254e277eb322e16514f2528b48f1b5d6d7da4c3fbeba0377238bb6c7bb12ed444c94df49879de1c2f2b13ba08578b81e3d08d92f2a772b02eb2259a307e7d97757f22c079db4b32e06e71df15b0502de748580f68ca7e89f6eca6955e6ae73554614396e9386073eac4ddda9a4dc6b9c07f2a597abc3a3f5d9c480d0774548bfa1d21b51b3b7b82e4938375c879bb2eeba02db7d027ebdd9f411ac012023b320da8bd69f601d0c7649696e2ec8d77f6449ed50ce03c2e09970f71b88193d02bf066b9737929928f208a25da5b102733e453b406e2b1bf6bca3a61ab6b6617077db9cae417a139da15fb44039af66e45c1ec284450e3f7869f62d510727c94a4e33ef75be901a2e4baecf61fd65180cd9ab588f62253f176c6d32ed48ab91e00720e761944ce735771ff83c7d7d6ae2b6d96db8c08c3bed240c1d7394a73635cc1fa352c22aad357ec8355a969ab07cc08a99106ec0879e9af70ca3c4affa1bc2fb0477046ceb3f7db8407cd05d7ef5264842769b09075f6aca28c7539f754f2ab43d8ac966547e199b27d458baa39df20e32f1c609eee59291778c3c6d85de8b18d7cf92fbfdefe76c1bb8b612c61be39c3c301c8d19ad5de56e749ec44dd94773388d7fa8b50cf75bcdb59ce97c0b87f6f23949f60c97ed889b81731d6ae155574ce2e71521e6c05fd994dde4e984340de4b71d875c1e6fdad9b46307c2a350fb3df9e03a8d2f596591c1681caa54dd07752519f79acedff294348a920ff4dd925fa8c27cf0477a4934d4201f51871fef4378cc76dcfaa985062ce2a53c031896ff649dd8aa69b6f6eb76e70647599f424744483837e97e6a302128200c304b4d7a8058495cd5434afd3f58eca2014be54c072c7041c510a8e105906a90ba1898d46a0b0d1f211b5c576435e47626d9deb4ebad549a102990059125474e4a7393e35aba91b38d00cb44ee06318f64199c3506fc53b209504b76b73181a4d2b4d298e04f5764e13b3a992300efb3caf2794b5a54637f316a603f0b50aaf478bb3ceff2ac3a77e309a7592a498eb9577eb8d7ccb989513f628f478415901dd02a072bd437257098c4c9cc8e67c1837ef13c38c49f791261c487391463886c815cb37f173176d8bb41b9c80a215545f84d28a77a58c3211d0a7324a06b9eeb2576eaeca7761efe1c3235b14190f6e34eef87bf857130f65d2764c703cce9883dfc3a8d8c90c99f4ee765f68263b073d26bb585cd2de50c8c98ab9605f91e95a820b82051b95dfcfad1ec4f26df443417c7c0727890e79d3e14203dab694f1fdc1e29e020173efd3dac567c0fa67890118ba630fd212e4a8bf1688d1e622e392c784e2d36ba887777a2df13ae43555cb71d9591cadd5c5b77b3e93f12f03ab91d1946d11b532385bc0eeb79d323f9bf263ba04e5d74b66b95316e07eb73f2196f4f9bba906b59306098cc85cc7958c8d240538668a5a49c480a3f4ce8ff05aa19b6f1b96816a94004314e7a021fabec880ff79a7366be4df988206cce768d0c222ff50737069137524acdf02ffe2be4dfb7e5ede03c0a011f8ce1a9952184154fdab1bb9767f715089897294a2db972899e56b270698cd8c6e3abd4432c9a7b05e2bf1980ed3b9fc5e3e4e446668467b4cc418276533791a569305bb33feab43a85a81cb743de78baf5f5ed8206db1a9db4af041c599caed6cfa9d2a6bc6101e8346ff65b861547487de89bdf6d67f6b21ef79e124d2a544721a8f545a658e7c9c0010d0b926912488b101c9e975f878d9fec63b7abe2998a11f12b9a76f35fd727e732954e15881217bf9b9539c1a5f85494d9e7fd43ce04350deda64793fcec67bf2f5250a2710b33689e135159fc339ee75ed2cb0c756f862c9aae981ed78b1cae302a96414a44e90c7b6a59311ab62508d614560e4534dd7e49dd3f8f010e5186a916853fba9dbc0f1f67cdda894de813250f80e49c1419871e6b77c20c13dbf8ea78c05f25c7ffb6918fd99e0eb3e406a0e99a44ad5121dd88977be14dc883b2e955a050c34ca9bda58205924aa7ec2659b374e9db003466710da6bc5d854646573e26e6dd3a30773cbca9c3e4013fe63e3b754bf72d48d0a0772082241db5442b557ddab94f0372d8753df7c45f58e6ea8227954e6e2842efb44b51da6ebfde2ebd0ca97fae3981280b370f2e298006559e4dd264be171da97e5b1d673c30d5ddb17c76fdd894710658f58583a7ce27cc04dbf3b3de8723df896c0c70c04a1f3397ebae43441b81290e52263beed66030d163b6efe5523fccec4d8cf5bb0f108bfb5cdb482fe0b381c0c2b93ae336957ff08408ec19d90a37fa97b175e8caa459d26cf689e3ee704e1ac0dddda1c91417ffe6ae2ffb4a85be359cb18244ec750d542e7afe343ea999d4ea882da7731d60766f81902b768d281ee47ee0cbc302ba28eea2ed34fe4bd4121f85f7918adc92b3fd67e749340787e17359ab3db802fb14e4c2897a2f2e30c40823a3b3bcd110ad78a2689c9bc0a0d9773da3d14f6ff6f14f730dd4a5462e5a47597997bbc6b96bff60fe1a55e2ba4089545184c0b0a973847130fc1324aa7dcdd29896f185fdd77b4800ef385de9d6a6259401f342400c314fc223a1bcbecded2dc7d0b7e34e0fd4c6d2c4d76a36a18cdd0b3f25e98707ed0c1c36859a635b5a09807fbb62edab178e17e42fb4fc7d415d0efde0e643b1cca0e10e05ae67fc93224aaa6287e068d12132f6c26ed78f756d566f83c833413cf9be11b74fabd3bbcfc5a09c346c656149b35ada313d71103862466e18abfece1b5de30d7d2da04ccbd68933cbffdfa3ef38317d0499bf04924582dc6f54edeef6b39df149eb3f386a602a812a01b998c2d54745feca7647c7ab6aba562dce1ce38aa499cad7c2c31bac32c5f2ccf512eb1bdfecc2949e44e9e8e0d718a9f11eb7d8226f8f6a0ca8d2ba55f76f5f52585aba2040797e4936af23bd8409dac6c2a9e72a25fd656889d2f85cb1ca61b4bc97eb4400c63a868af10fe6e0bba88260ec6f9631b6cf1f43c321e5a8507f2c9388173e113573737513dafc8b169bae1d3ad447e1f63d318d33f7c6a36008598aaf236f4cecb705e8925a140a53f4c935a269788b80c55d97571d2526f9fe7e1e88e3d76a2b9820f8ca6e590daec76c9e1d94b1e0e7d87f1160e3be70c3544e5620131fe3cde24da788b4f8e6c466a1525369829d563c21e6f38ea9ef40ee3a31a44bd11f48824dd6019c590ded7f60cde7d61dd36c122f187252f5af081090f14557ca930d061799beb24c67fbefcce03f21440f5d8631bac2419a5b3f56bd1bde054a8096bf16cfe0885d0ef33dc56fcfb951a371eaff0d5cf6e099e512d0d6e16afe5b753bfcb85e325262e2faf6e843478a060a64b5adf2c6038688c37e7e3a8a0bed370b3f8d847e77543413aed6cbec13ac64d6f751d18a3a805ef6741594111b068012a10e5ae943b821069c48efb76c9e9a57e6cfac6a1cf9bef28478d40cd259831aec9d088a2eb5c65ef2361df3e9f657dcd258af93d0780a0be390ebc532ffb45e5999c028f3e762849f9e20e9ecba400539c24ee9fcf5175868b6d876edeed19295640c2acc0852573a89f356ff43f0098439c81800dba4af9c666fd865790e73801ca4e010c12e65495cedfeb6669f7fc149b3b4e6da63b91ecd11bd8dabdd8fa15b2c885a1522a674e34aca1bdc9f5fd3551d0e20a49541d59b653d6a84a2e73289ba8506c1226d60a8c5aa3da866d1f88b75451a893a1e4d456712bfc53aac071dcaad92cfdce420d177a3405a7d89650c29a9040f6517cfdd93a10a6d7e40ce5cb131f0b1569d5a76fb6d51500dcb096d40faa5c04f7220b16f92e465a0de6e3f952e98a55250f02c9bee794825b9d2214f08839e65dd0a3a33af28258e53888926a18cf9168c24a6cece5932e7e114a1351949bead203b8a7912d5c6a5f2e00772ea18fca970e6d02b8113198ead9c36a73b2fe4d12cea0469cb28cbbe45f31e99608e18eca6ad113d12e2ef89e1f5ba3a6eca32288b1be7f951670c7d44f1017dd6f757fab16740c3c3622735a2d8ae90f0bdeca0c4c8e7ef203e2a08868f3755c21fa2fadd4121531344127022f046b34e1ad1c9066afc744fe1bfa5dbfa8c0ffef4ac6fe9960f06b4defad72ecf6efc39204a95f3d27aaf967d43543cf0b3e3dcc932bfdf6234f852b4817e6c21d0289445ace8c7749e314a8256e81c2a82cc414ab60948b1a9a60dab4b86e694689e4d160f2ed1c39971b27171bc7fd1928aa80404433eddad382f92e672c1b92578be6494bc13694be1c165bcbfddc4228957afceb5c867b85bd11c00d50e9c5722907f56dee6f3c45445be0283512aa65b0214ae2927823e941eae8ebfc215cf34e9b14bfc29645e2a63548f022deb49becdf344f1362890c1b3c39123e172c5092bc329a525d3386bea40c6a22d0bf8a8865387496126e63406d163a1f02944418fd8373afd863334ea510534e115e7f4999b4f4a4314ba43955a743a678d211b61b8a1e8619550bcb90816f18845989d80e9994b0ffc1c02236bc8651d5a1a520578df7368ac97715a8d88812944b4d97dfb57959722460388cd39d1d5e06a125653062ea6351943cff52fb7f6350538b80cdea1f3f2370385e87b9ec1aa6916174c4487036787ad62183706cf88b2b9eba7cff2a5a0eca6c1577fa2ed872c7f333e0e18e6479e8ae7060b7dad0a78ba89248c8db0412f251181ee6054c1e67ec4e5f3536610a8acb4cc03e8b06c378c294af6d58acbd8a5ba5629617b90b0fbf01b158d487d2d76d889268feabec421b222e30ab3fbd8cbe6be9ab2dad2b67e1c871d1ee7de65eb160b674262a57a6942e24e1a4210658183eba1dda62dab40c9811e34416ccb9bf977e1a3c5dbb51f0b1cd6d7e855cde268bcfd361a646b2cf65f5e7c6ae0f18001ca16a97ca11c60fbda5146e5574409d06d24a0892a0bde605f5ff0fc84354a2fcd38abe7a9da7049d8fdc966aebaa213cc8bd9e73b1773b6efbc51110865fe1c4464998d682ee08942f48dc01b376edfd42d6223c7dba44a9e5833d1484626072272915ce7f552e92e78d5552919adec3c5508c2084cdfca99228dee9e7e01f7fad976e2dcaced6c82c04f05aad40c7bf04ce6cbfb6f76ccf77cecaadf70f5bed8aa5e202c3dfc23c02174ae385d455d3fcc95df4d5ce5677c9c4e644d5a0384d33db5dbc670e2bb6dda99d1fa53dd7ce86e10eb8f49cb380931ae38a1fbc00b37503dbdbe66d93545b407cde600cf5e9b62c8494dec574b1826e4bed048fe406a96757e19080f8fc935ec05f626a6b3542048f3a678db1f684fb9471c388de7d3bfd3bac2e9dbbde3000c0745d7021b73cb1dc1bf60b91a9df32716819978f7a319d054baf47d2f2739c1ada3c52e228c45c648f3798915259e6ce30d737fe40cc33bb5883e2a2b65a5c97b8bfb4b83e1a8b145b8e3e47f9bf625cb4267268ed30565cf6f908c88a60dc709176fe5b61e32ec48db47a9746b507a7f43566e1a7decacf3e48a40c97c44f57a102df4aadc13a1ef52892a3ff39e59e9cf7cfca6165f09976171db6929b8c523164569c210c924392048b924a6940652b288cc4a40f49ee4b0cf5048e8ac88202582694c27ebd99f0498b07e15df6246444f180cb77936e69d41e6d1ea4a34a2177dd462d1ae229d4f26f07ff46cd673449e5066220c32a2ee1b6b19574b274ce19236b60154ba033a5060b6438f4d4e1508268d8d0a66d6bc465982a2652cb10c107fc676709d3ad2dbbd45c6761c224efe4f83b8a82524fbdedccfb1b47d5ac7d0de640e54068fc1cad6f115baed2e563506d2acdea6b7448263a62b929537f5fd0ae4a5201d5e62fc9e68280df3384ffe146de950c48b2343bab91a901988b1ed8ea9df2c336b404a6fa82010858bc6636ea4c179cd170cdf346a96a79c42ca8f2689d85e698309ab4f67e475a5e0c8bea103e65f885b109b1d9829ff01d36f8ff3e0af6967943ecd2d084bdeb46c808ab9f88d8b6a8305b5a4f42950ec953ec67acaccc0b556f2dbf43f00e2d57172cb81c4f45017af7f0889b981776dacda2c471832d3c82e359453f968f547c00831c5372f48ca9ed8f9be4389311c663522e6ac7d71c3dd048a8206e639f3dcbeb5956c33936da13711310b544d55c5cbedca0feeba63e6f8f334411c84695905046447705cd7ddf69e486475d78c2b342c00d55c18e9345c976196b3d2c4a15ecfa08a20ab0364e20ba311416ca4564a453294854d50cbd279d126e0fb3d0daf277d3dafe419167b9568289eb74f9d132af205c50b518444b11b579d05332d28bd00811e1a7182e436fc5403f0aae620e85ffee1dbcbb09f654fd89509e814d23319c31458ebf130bd31ce9c22cc00d512072dca567e499b2e533372329eb10064f353bfe2fd37be568a73e3687816c36bf3f8f5843d333a88ad81be636a1353950c2e22ebee07ea2b8d295061e7917789aeea9d1b5ecf4f7f9263d55d67d5f02ea35969fdb6a82def84fa43135c46fb9b1a06e744b80d85df2d235a23058802b6e8759a336e06a4d81594abba3c2f9affda78eac173d12c414a6647715c433f532d43bdae6325c8217765b5a152a5765baec0b285a5a6831dab84ebfc0efa475872d60f3fd68be45ee8db5fc3cc9f07c757bafa0d3eefdbca887ba284dd0a9293a0fbda15fc53fdecc2948efa68547ab69954313a26f9f7782ebaab3741322350b8b94a8b77d2c70b0b4e804cd272f3664aede252a57caccdad2c9196d491ba6cc9212805d07c0d4f09c3473c38ecadca31df2f6c854f4fb9fec1c09f36a3310fdf01a989fcfc3085d3fe001cc1417828f3c637f1a8ae74d0855228f7589b2ed9d271bfd0afa35700350019bca855412ac67732011e0329b0eefb750bfd6c95d836ccad627456c4acb763239ff0870043d35f9d07aaa7b78ecd8fa8aad02ab32d8e2a0ced0d5804de487890142ec3ec4342752f8ec51a2721bf7b4a314bfc4c97284f6c6e8f9b95311ef62c9e648ceada0e95374c1561c4735360ef1532afcca6b55975ed60b45005d1b15772d6b689c3a7a20de22a808937d3c6ceea64c21a733a187bd9fc26c94288f43c85517358d882a72f715a759dabdcfa1fc8a88d7a641ecc430d20a3623874147104be2a3a428d7995e992f19164279497af17689fa2348f81eeae75b3b68defab457fa89703d173fdd91e21d56e26f95d5de00f5aae3618cf8e5d00b3d7e9f86435001acb51729a13462a45eb759b11e8a3a597387dc51491bb8617561e1a49477a70207b16f406535f234ab0e2bf718d4a69f9f6c77da9c9ce0c3ca5878601b5665ee02f285d7989c7d800abcdb7bfc9685e164bfbf8f34666fb3013f89f25441af4582bdbfe4137d5ca39202c822965c4c99c75e5e098dbcbabcef3b1ed74a6307ad35d439033c073e874c2be1ce2acc0b88364034ba7724d08112bb7ba2012cd3ff2b71785ba2c589a882bfbdc8521872370e75c5c26a7f3727725ff745f1eedf18cd8e8adfb4c4a1e038846b420c68972bfc316a6ce3619d54c49739182551882a0ff9cfa9113034f61e165184f1304ed8f8b1a35a19a84c529782939f7fd4db5a963ffbab3c75053b377fbc57bd12dd3fbd7a78e721b0c6e75120c97cb2951120f1ca4f16a9fb9dd21f3a0bbf555db943c9c914497c08362e37db3a8abb90c31b03910c3be9feb6da9ee62480fa70b5234e14930981adec95ad16d9785e2555bac9e54c44cb276ac220a2eaffe70aad67051a2aa7b8bb70eb9110265476a3c467eab2d4b62b26efcc480ed161fe831e9ead1765b6c68678a2c7cd938c39409fd468aa8bd3f11c2bcec6266f9667d5054e6d6cb1b50f7f42069de7be18be7a9a332d80ccd4df2089a8636fc463ee0156a5842e9964bf1c5ed932233c5e1b69ff8bfcd8f749ad2753d39aba399401a37e66938a16f35387ad51bd5de670e7fa31616a39ba07c1e8d2c5844ccbd3d54baac735d11a505457c4d8378b7b86116736dedfd85b3edb30f5640f50ac4f3cadfb83476d76c4f676ad3f124e57f0dbaf046815a27bf9a7d26695fea3737cf087006312dd52ae127853dcb3c867406629109e2d40e1c3697c3aafa36bf3802ee0919a066cb2d459cb2e63a6511dbcc0bd432a04181f5fabb101305b298ca232841e1c61a4a1b702b019e83a841832dbeeddbb6f2f1995c2b3f218a0329f536ba9624b5abc22a05476bba6a61de07c4959608db220d82c8a2d8419234b9e0f6a1566ff30ddc200e2313206fc02e185fe297fb5ebf10ee8c078b9dc6fd5a74b96d37ba3bcd26293af7c86505ed83d903696f7df00d85498309043e65eb04ada8b3c62f0f36d2bc20bd32d8adfec149e0984678be5cc95c3cc8d74f3616aa18d3be44217d4ccb740f96ec68bf8e710f8a1f75091917b507a334dc54acd8f1724bff9bfb153ae6120cc2ca0d8281d5db03c5b6940a31a4bb105fc284e7281750ca98e55d08ab4ddc60bf9493ecef3f5224d5a9fbd967af80ec5c7bc1ef55dc9d2e53876522096543f85d498ecbbc67bf876b74c032ce1bb29aaedaf37abd85239c3a1b216ec408996d42ff81e4b32b0ba62a87ed680f0a66f231b4d94fe6cc700376e2f4487ac3a348b1ad9b2d19387115ef97baea23ed9d4dd1d32425db1fe39d8180d7a04efcba5e09272261da3efebdb4ad26e36e33753ac2de6caeb797a6601f8c84ceded75595b877eeee7e59e2c8e0c57c66b815ecca4f82874c2fd4c3346750d37eeecfa68a3dae7d86568301895b72185fe688d83d03b370a8d9dfdc71e41e6684cdd6104e55ff145b3acb485fd2bbfcdd8099c55b8a41aa74b959d575e001dbf29992ebbac2e46ec9831cb5b93c5d9d13e4ba37697c2cf7768b5c8cc5098b36d41c855b7438c62cc38d1b278032e4114702c2c225151393ba1b8465990680bfb426f0c9333f3dc66c08828d9d9aedf6bab9aa199611eeaf7d1fe9cbdd4e4539de06c04a97d442f98299a5a6d0b3b900f3d3efde518d51d47be8afb76a1bbb791d01a08953754fdadc3ad36ae716a3aeada5c63775c91d0faee5fe024c955d934c667390e118189912a72d6a6e502b836e3ad88e5b87c7dacb6f4e619586b69aad976bfd391b0b025f9753c88468631c7a31781ca59f5b874708d3a281c61255b6568d25db7d992f97febfc2e207346cedb7fe37821f1798f331b66fde4c6388f73688f54cd8f25a2c38766c53c48d0f6fca3c43d34a846bfc334116b0a5819daeedefcafe4f73864519359c2fbcafd11012a5f82b9a3e64faef074d675091d7d1a859a822118e3c8632f61c8559f7c41e5172ed3df2684192521a6de5656c75bcbae65301b4cbde6452b88baa02bd0bb3e9eca87f302508b63c58f58b438e47b38dca84d2783214d5087e2001d15a92f62765067138893e7a80428ad3c95ccc614b3e42dcaa35000d20201cb0c48e18b2898acbd8d34690cdb0c0cf74654301389a3d306ec0c6ae78bad5cf8087ee118a1f83159518cb63bcd13c541f9a231203174e4c09cab8f94141bccba3266aef3323b4cee7d2aeaf55236d71f9976b13ffcee890358c5cb634be1", + "host_offset": 3000, + "locator_plaintext": "a70082a200781c68747470733a2f2f656a656d706c6f2e6f72672f666f746f2e6a706701190bb8a1007842697066733a2f2f62616679626569676479727a74357366703775646d37687537367568377932366e6633656675796c71616266336f636c67747179353566627a64690158200ac808598a3da15de6cb7044f8a7ac60a55c2f1a64d7a36d17c79b74579467810258a86167652d656e6372797074696f6e2e6f72672f76310a2d3e205832353531392049417861374664446e6836324d526b444b6a46375a7856543871326a4c5a6c5545384f5955654b31726b6b0a4b4e303753547769492f644865395861644833325a664674674e67584a532b3637752b50466b57646c466f0a2d2d2d2071796b634a7476302b3376324b646d2f437a535631784a4d704e5a582f49776e446c62526d3630767861670a035820a62604fb56d89d37627c9070de21dd62ae22ce26fe28ae01a6b5ed782fd543a8041913a8055820da2c0d2b02e604e0741faa44d90abebe7dcf83dc376addbca1d46782c89ed9cd06590e7700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "locator_sealed": "6167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a6b4e67484f775a434135654b516832444c516c55753949464d7869654f702f784f61457a734f5161535333782f65523734586c6470696b64643730616c6c712b0a416e343454377876385334456f65796965526f4f6d5a43376a4c396256394469506e564d3046385a5264436d3245576868496548685551726574374b774a444d0a64687a756862494f49353964556e4b6764696566795038505a656b7a6b43527758596862456f67485957770a2d2d2d2059337534684437433451557a34507378436a5951514e42526a64746a7a6834656b544e4c726f6c78426e590a65ea20b4bbc9da9f24a8b9f18cc00c6bc50207140801897dc9ce71b8012bc3b126f5510fd01f818d6852f8ddc117a3152a3e760eb634928de17e708f5194f5b20a0a3067e418b57a95df7b2c9cb2de42c603399a1056bfc65f38152bfcd58501b252a5f5b36996eab5b63e8c44fa72b28c60e913caf3579123d5c1b167749830b7adac1c12a9059295725ed717d50f1d0065c111bd9958177408aa585d905a530ba41aadde33da6d9ac5f4976e55894829a955d143a94cb63d8c12b134704c707a9e4b696226a44a9efe4fe156425727d9c9e0f67b79a206581d02c771a0443da59207a4d1a4d40376ea0c8cff8444d41bbfcf228cc2d044ac5e1c834206e036b44cf9fbc8930f146b9cc1ddbea46f173c9ebffe705de2afed9a730c9e702090ba0104641199449b917916e45e7b7365bd8a7cee9f39f728801984b39fced931e6b326a3a30bb17b41697dee57bacf01578d86852efb16a9c0d8ababcbb38c8cca7bcb90d8bcce8cd1b7740360c21ce702c0948ab9747bbbe57042117d9e24f5b46d847d893ab1ba61c6f5e857794219db7f1c620e27e80f040282287fb47894766babc1178356c3918cbccbc4ce29e04315ff80a5f2de8c8cc6e47809ab9e0455406e761219f11ab80f85241e9bc870427d04b1568ea973fb46f57446d3ddfe2a774ebd1afbe82d56cf88df8ee24b34d4f788ba03e4c28eee79726a48140e4f7545253d8a0116b81e876e05530f9efd7754a63242d6a514975235b73e14dbd154d9b44c1a192f134e20b38f90fa5b856853d3a4297dfc48d8b43916cb3eb902d95d6f8a5f45457ad49dae3de83ff8614befc6a351205e66d8f812a528db70b6b53a52be8a4f1f30ecf2486e57cd6c7ce7cdf363328fa058c4b0b03007b89d1cf9257142a7ddd52a7d5ab4aab79a151e62d10835a4c00410968e41c951644a7d2772334a097a997a1b6031fa59376c0e0932cf71312c71c630b53c53d345315f369961260f8ebb92610f9bdce1413c6cb2be47885093f278008f349f3e5df44b925db20c1caa9afdcba837d5a6ca1f4f4b2e83b81bb3e62fb5053ec4fff01ab6f8a39bef140c4f35287ec105dccef8dc7d9f8736ed475f916b3e20767bb4067b9b7624a3ca81a6719662bdaeff3c757e81f8865cbd42dd84b93db2a3bc758e9a0d82c6c88827c5a27ace0c565ce22edf458d9ae008eb69abf74bdf36f883860aabbba9b5912856c9d32fab5c5c2b2b242a64a1f9d0d3ca466207b4553586a242f81c396de605fcb001e2d34e25d1c81bf14f5e31842c071fafdb6d2a0552b57d6eb08843d0b3fd8f7e9807723e3e404ea7e5a0275df61ef6be9cbf4ff74ef5df0184531641084bdf7bc8dcb13085d77581dc3035ae73e59ac1f9289eea23808c7bda710232230e7f2342df1657e3d302bde341b8c52a56cea90dd4727991386670ac765a27573806a738152e5432a7acbb34453c0f438a6359e9b966084a9180c692a3a212b8ad5ddf52286d4768203a2cb2e602812688a696b1b17de688ce5839d6d89252f30f90641f0a730840f2c105ea68518c8dbb74d82dcc5115b2fdba5cd16c146eb0963d2575600e22f87b1f914268583b19602d92e2ec5e76ca338fd1e15a61fa92ccc3475283e291185a23de78ec9064092afa5f2a4cbed83b56c2d75784f4764e8fdd04548a4e1cf849bf4e2bcab8c412767fb8507b4af37aa9873ab0ace2993848acf670727c327367c20defc285f1153e17283daec4ec28164ae028ba1183f23b32c971fb4248809c2cdda32c5fc74aa291665e5bc3703536f5ad60514948deae0e3994a76cb305bf666c9e8b255d0e4de7330613d650faeb8ff3f797e618a8a6f5622c3c9f7d645c4cf94d7aac1494c5260eaa6b4957a5cc5e0096697c8989a87b61b50d7dcb487b4f183578741bcde8df3c2b6602a251703ac8522e1b4a7ecba0a458f7832e1f4abddeff1ea7d8390158778248c81f9aea12c78dd9eccf08c16700d006fe80e3aa92af343dd1f67c46868f6da781b983c6ae567fc2213864b0a89d1da73a1b72f61d6e07d3bc987bf2dcb36a9e981ede9115b7714d52c1514774a631448240333c8e98ea2915ac5d7b2e300df3d7da8ca9d73c3753bfb0999b59cf9ff24a28c976c454d0e878c3422bb32c5bf0aa413a2f2c232df71ccf4f9412bfac58d9186dfb820c47fabb747ae3828600d6409af0ef2baeca226cd435f5eb4316a867e56627ac723380e6e4df463b3065f821129bace999a509ffbc30bc8fbb741f71f4f0aa9ceba9855a75ea9297eec9f834ff3cf6ed44a3712e2724a9a94716ef2a8d4a0225a5a3dd3894848be32f3a7e1bf14605bb0d1a91297e96ada0589171b0aa20666efc9e38965fea23f567d61b96185364cb53a4ca03c7e54b6c47fcc8ff7197a3f777ce01623627dc2d526151e65c408ab742c4c30cd7145a290b00893e9a312cb34c9205315173ab5696fa02be95641c306b5459c7cd9b01a5a93ef55ad0099db0cf081f069a2f7f7984f69574b9a9c7623c32f0f3da774fd0901ddacdd89acfbc27810efbcae4a0706fb8d597a6138404a823533ed6156377fe2b445c6c7819503cf29f5291912d68ecff2a27f0b79e3052a3950ce1c14fefa538cf11992e14ef4bec75fcbcdfeea29100014455309ef600711b6d4ebb43c7de994b3024be852832cbb06e2b67faf9d1c5596d3f719d9b42f9b182945ffffef6d1cfa0c77b1acb6bbaa25ed6d8d8e7416264baa7cea0290ff066e71f44f4fa0eed8ba79bb13b76496666cdac31faf864022e9fd00cb485c54cfe1662a9e773c51c3726464f4f131138ca23b577ce7ca60c5635d3230971a150afa6d9a3dd812783baf22abdd1709db9091a373be04067dad575357085e343349261dbf3fe963a95a3898f2ce34334262bed0fce9ed3c4141b31430bff947b7bbc7233af4a2937361a1bc8a39e978ea76928befced13e78733abdb7585a5e38ba2e164487ec92b23dab673573f6e9bf335fdf466c011380f81822e9f0cfceb27072e08324fd1936feb33bfdd8012af9d31d79be5c7e9c3caf635df1e6d9490943f66cf0d688c84ce8f4e631e22c118d0841446f8e16338f876c7ed3575cf4990c104ec14d2149772079b71e2913193410b81e068e058b71852e80b3425101cdd66436ad475cdd792a67e9244b8cb752893624fe96446c10a3b6cea8c85ce27b54ac8d650dc9a612edde9790b0f8cd859309c35f10e120e70770e931a7198b33f2a0b128d1aa5874cb8ac17b55a3aa2446e0c29d7bc07d341819fb3ac7084ef6fa6c2ccd1f7edc1be590878e8c22ea882b08a8877a7ea16e3bea6ce6a59e45095a90992a6497eb92454a75f24e78ea0c462d28757f0296261f1524027a8cace29dcd2882054c2de59820b37ceb81b4c74574f8e7272fa01771e9f26c2202d017094dcf9ba6dfdc83b6cd58aea5f3ccf5e6e065c1521e55eec06d06ed137e418bf371652eaf02a3f283d55725330edb40a33b02717e8c6bcb437b4aca7f6e1373f8f33f251c15d3f064c3ca5cb4a1696ef0e0dbac3572d760598bd2a9783b1d33e9f19f3dee0b2b4b6218a94a446d1b1bdb3bdb57d70675b434cdf87721bb910bd808e34498ff6566ba84d328afefe95b0ebc3f8a2e0bde53f02c729ed4f5a5151d0ad1aef4b5741808e955f50a3dcaedeb80c3b33494ac2d94b54881349efa1b9b560185bb6039588efcfb8b63c8538f48700f5d592cb08afa2b7cca34a5d3d972faca8553f74f8ded46b3dbb85f92f976dbb59ea59f72606daf1a62e164f37febdf44111a88b19ff1ccd01afb4adf6dc0fe59c2ded959e18e5cfd4ad37398d23e1aa672b67442c5cbc9ac31d3f94dd78976b3b6271e427c7a3d5d0defc4f5dfc7e61a10a6cf460195c551241327e42cb21a4a6bb448175b8bb3210efbb95eb9a69d94b03eb36233aceb58cdb1ddaaba9b4bf0bcfbb252063200f1829f30bf895e652c1062950117cd6f5662ed29c75a162ff60fad395b386337c8a4390bf0a7b4bd86e146404126265bd511909438f1503edcba451286d9a550e86b4a23125819510423af3097d3f786d7e3d6a7309245468eb8be478d7c627425b3b8c46ea2cf2b63169cc7906a4f879b60d5101baaa72b7a5a61fdd00c44bdf2d129d305779909730a9a49854c8f40c87f709c828591d926adaee844e5060ba168fecd5d8a07ca859d96683e61756a83bd2b2c21abca699c0df9a79784f12ce860868ad93d064f0577d6810bc0447e97de386d3df5956cdc534813cb5a6a0eb52c06855d69b0d16b3e086b1ad1c262a1c6022893c3c456a68f5ae083b229bed0b4422c0ca92285fc12913d83c6e6dd5b81dd1145848be2b44f638e7a97a7bb7b6141ad402c62e02104dd953d9cf3f26a10a1f869d873d2e4485b1c072ebae52f0dfb5a7c76e1b9d4bf2994862ebef8d0b64ed6b9bdb70dfd858277dbae2fd2c930ba5f7a6f946f75d9c10708eb099f81382875dd39e422e73387575eb8c8fcfb1b47e69e695aca4384d43fb0dda680b641612a5354bd5f51433607a6825850c83344fb789e929a29b09b45f2bbab2e42be4b02fc2a9ee4901e23211b72cded2fc852fb03aa434a4e24e6fa32b89622a4269c89494870a79a7c32c932cb1bf49124367a6b28b8a3b41f07f210e4267c386bff7bd84437d680e8cf0a2c5e98fbae26397fc7c6aba6de55105568196b7101c0d9042f1ab21b56db460b865cf8512516939ffad9232afc6776345412a28693b0d69a0ae0fd2f4524d8f0bfaa4b9cbc7d3690cec950034197b3f3b3ddc8aa9a54fd80b565aaa4994e4b9cbe8de6a61a21808ea77751f85e8af0d2894363b45771b2e1016c37bec7966383d46640855fb06fb7405bdbe07ecfdfdc5b3e1f035cb8db4ff47ec73dd6fb7c50abd8e977b60cf968f0c1139ad632aa27fd0ec2e57f15e5d947be0249d5d6c3c512bb8d4b4472b888529ac34f3de2d158a72956d1fd6c598e69e4bea43d94f483071f17cb800c47ddb388342b1cf9e5d0fe56576f01d9c790b801db2ccb393bd9b4c7ce03fac2c3bebe3927513e20f63f07aadc9cc3d14d6cc8f34ef2f8b64b02ad30c69f5643a1ecd2424efaa31f5c090a7bbfc07e16e5307ed5e6750c8fe47ac50620e1f8e17d996a19a41b7563cc83f48169d95ede33983f1d08145ab763056b1efb71367bf46eb3efc2ac7915886987ce7d0e6c3c096b5e3cd79979a318676ef03e94bc09e167cc39b5d07ac2af1e37b6046e5e9a9a95a6d5d0f377618a2619b182f8c4edeb94b0c97f00a44dedc6c708722687ba3de5fa5090e59c911a5b79db584b8bea5552234bd057ffcc303eb5fced6a7990d1da11911041a0a3c4b7c8d5687af57b0195150ac0dc604b71e00ecd76463704cd2a553019c65032adea9406e56169323aa57ed2fb4736c2e5dca1076f539e6169115c43d5f55634bd1c96979620f4ec3bb7cc5c0cbbc0dbe8c67f04e74df97be8c618d75940a95dd1e05bef1fa2cacb6663a1646df626f013a715a81cc93b5e04fa7ec874f529c1e6ea0140e1022e046ab99c34a8e44750f8e0f8be5644767604c708a1f866b33a80bb2df3c545899f66fb8732e432ea53358ee2612460d57cb960f5440c75b5b2a9cd4b6bfc09f67e861377ab4608ad9bd80dd76a40d172cdfd20784213451fb0dbd023b610efb47bf9d0c0e79c3841947af24a42e37d95c0725afa92b5eb1740cf6d73c39701343dff1e8efb18023fd680a116112a4c0536afecec0f8ba648576eacce35eb946c3ed6b804d0446fd46b89fb80f4288c349d0ee58ee523f3219106f1e18fe9e2d4c983fb6", + "extension_data": "a30078194361727461732064656c207669616a652061204c6973626f61017853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d4830025911636167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a6b4e67484f775a434135654b516832444c516c55753949464d7869654f702f784f61457a734f5161535333782f65523734586c6470696b64643730616c6c712b0a416e343454377876385334456f65796965526f4f6d5a43376a4c396256394469506e564d3046385a5264436d3245576868496548685551726574374b774a444d0a64687a756862494f49353964556e4b6764696566795038505a656b7a6b43527758596862456f67485957770a2d2d2d2059337534684437433451557a34507378436a5951514e42526a64746a7a6834656b544e4c726f6c78426e590a65ea20b4bbc9da9f24a8b9f18cc00c6bc50207140801897dc9ce71b8012bc3b126f5510fd01f818d6852f8ddc117a3152a3e760eb634928de17e708f5194f5b20a0a3067e418b57a95df7b2c9cb2de42c603399a1056bfc65f38152bfcd58501b252a5f5b36996eab5b63e8c44fa72b28c60e913caf3579123d5c1b167749830b7adac1c12a9059295725ed717d50f1d0065c111bd9958177408aa585d905a530ba41aadde33da6d9ac5f4976e55894829a955d143a94cb63d8c12b134704c707a9e4b696226a44a9efe4fe156425727d9c9e0f67b79a206581d02c771a0443da59207a4d1a4d40376ea0c8cff8444d41bbfcf228cc2d044ac5e1c834206e036b44cf9fbc8930f146b9cc1ddbea46f173c9ebffe705de2afed9a730c9e702090ba0104641199449b917916e45e7b7365bd8a7cee9f39f728801984b39fced931e6b326a3a30bb17b41697dee57bacf01578d86852efb16a9c0d8ababcbb38c8cca7bcb90d8bcce8cd1b7740360c21ce702c0948ab9747bbbe57042117d9e24f5b46d847d893ab1ba61c6f5e857794219db7f1c620e27e80f040282287fb47894766babc1178356c3918cbccbc4ce29e04315ff80a5f2de8c8cc6e47809ab9e0455406e761219f11ab80f85241e9bc870427d04b1568ea973fb46f57446d3ddfe2a774ebd1afbe82d56cf88df8ee24b34d4f788ba03e4c28eee79726a48140e4f7545253d8a0116b81e876e05530f9efd7754a63242d6a514975235b73e14dbd154d9b44c1a192f134e20b38f90fa5b856853d3a4297dfc48d8b43916cb3eb902d95d6f8a5f45457ad49dae3de83ff8614befc6a351205e66d8f812a528db70b6b53a52be8a4f1f30ecf2486e57cd6c7ce7cdf363328fa058c4b0b03007b89d1cf9257142a7ddd52a7d5ab4aab79a151e62d10835a4c00410968e41c951644a7d2772334a097a997a1b6031fa59376c0e0932cf71312c71c630b53c53d345315f369961260f8ebb92610f9bdce1413c6cb2be47885093f278008f349f3e5df44b925db20c1caa9afdcba837d5a6ca1f4f4b2e83b81bb3e62fb5053ec4fff01ab6f8a39bef140c4f35287ec105dccef8dc7d9f8736ed475f916b3e20767bb4067b9b7624a3ca81a6719662bdaeff3c757e81f8865cbd42dd84b93db2a3bc758e9a0d82c6c88827c5a27ace0c565ce22edf458d9ae008eb69abf74bdf36f883860aabbba9b5912856c9d32fab5c5c2b2b242a64a1f9d0d3ca466207b4553586a242f81c396de605fcb001e2d34e25d1c81bf14f5e31842c071fafdb6d2a0552b57d6eb08843d0b3fd8f7e9807723e3e404ea7e5a0275df61ef6be9cbf4ff74ef5df0184531641084bdf7bc8dcb13085d77581dc3035ae73e59ac1f9289eea23808c7bda710232230e7f2342df1657e3d302bde341b8c52a56cea90dd4727991386670ac765a27573806a738152e5432a7acbb34453c0f438a6359e9b966084a9180c692a3a212b8ad5ddf52286d4768203a2cb2e602812688a696b1b17de688ce5839d6d89252f30f90641f0a730840f2c105ea68518c8dbb74d82dcc5115b2fdba5cd16c146eb0963d2575600e22f87b1f914268583b19602d92e2ec5e76ca338fd1e15a61fa92ccc3475283e291185a23de78ec9064092afa5f2a4cbed83b56c2d75784f4764e8fdd04548a4e1cf849bf4e2bcab8c412767fb8507b4af37aa9873ab0ace2993848acf670727c327367c20defc285f1153e17283daec4ec28164ae028ba1183f23b32c971fb4248809c2cdda32c5fc74aa291665e5bc3703536f5ad60514948deae0e3994a76cb305bf666c9e8b255d0e4de7330613d650faeb8ff3f797e618a8a6f5622c3c9f7d645c4cf94d7aac1494c5260eaa6b4957a5cc5e0096697c8989a87b61b50d7dcb487b4f183578741bcde8df3c2b6602a251703ac8522e1b4a7ecba0a458f7832e1f4abddeff1ea7d8390158778248c81f9aea12c78dd9eccf08c16700d006fe80e3aa92af343dd1f67c46868f6da781b983c6ae567fc2213864b0a89d1da73a1b72f61d6e07d3bc987bf2dcb36a9e981ede9115b7714d52c1514774a631448240333c8e98ea2915ac5d7b2e300df3d7da8ca9d73c3753bfb0999b59cf9ff24a28c976c454d0e878c3422bb32c5bf0aa413a2f2c232df71ccf4f9412bfac58d9186dfb820c47fabb747ae3828600d6409af0ef2baeca226cd435f5eb4316a867e56627ac723380e6e4df463b3065f821129bace999a509ffbc30bc8fbb741f71f4f0aa9ceba9855a75ea9297eec9f834ff3cf6ed44a3712e2724a9a94716ef2a8d4a0225a5a3dd3894848be32f3a7e1bf14605bb0d1a91297e96ada0589171b0aa20666efc9e38965fea23f567d61b96185364cb53a4ca03c7e54b6c47fcc8ff7197a3f777ce01623627dc2d526151e65c408ab742c4c30cd7145a290b00893e9a312cb34c9205315173ab5696fa02be95641c306b5459c7cd9b01a5a93ef55ad0099db0cf081f069a2f7f7984f69574b9a9c7623c32f0f3da774fd0901ddacdd89acfbc27810efbcae4a0706fb8d597a6138404a823533ed6156377fe2b445c6c7819503cf29f5291912d68ecff2a27f0b79e3052a3950ce1c14fefa538cf11992e14ef4bec75fcbcdfeea29100014455309ef600711b6d4ebb43c7de994b3024be852832cbb06e2b67faf9d1c5596d3f719d9b42f9b182945ffffef6d1cfa0c77b1acb6bbaa25ed6d8d8e7416264baa7cea0290ff066e71f44f4fa0eed8ba79bb13b76496666cdac31faf864022e9fd00cb485c54cfe1662a9e773c51c3726464f4f131138ca23b577ce7ca60c5635d3230971a150afa6d9a3dd812783baf22abdd1709db9091a373be04067dad575357085e343349261dbf3fe963a95a3898f2ce34334262bed0fce9ed3c4141b31430bff947b7bbc7233af4a2937361a1bc8a39e978ea76928befced13e78733abdb7585a5e38ba2e164487ec92b23dab673573f6e9bf335fdf466c011380f81822e9f0cfceb27072e08324fd1936feb33bfdd8012af9d31d79be5c7e9c3caf635df1e6d9490943f66cf0d688c84ce8f4e631e22c118d0841446f8e16338f876c7ed3575cf4990c104ec14d2149772079b71e2913193410b81e068e058b71852e80b3425101cdd66436ad475cdd792a67e9244b8cb752893624fe96446c10a3b6cea8c85ce27b54ac8d650dc9a612edde9790b0f8cd859309c35f10e120e70770e931a7198b33f2a0b128d1aa5874cb8ac17b55a3aa2446e0c29d7bc07d341819fb3ac7084ef6fa6c2ccd1f7edc1be590878e8c22ea882b08a8877a7ea16e3bea6ce6a59e45095a90992a6497eb92454a75f24e78ea0c462d28757f0296261f1524027a8cace29dcd2882054c2de59820b37ceb81b4c74574f8e7272fa01771e9f26c2202d017094dcf9ba6dfdc83b6cd58aea5f3ccf5e6e065c1521e55eec06d06ed137e418bf371652eaf02a3f283d55725330edb40a33b02717e8c6bcb437b4aca7f6e1373f8f33f251c15d3f064c3ca5cb4a1696ef0e0dbac3572d760598bd2a9783b1d33e9f19f3dee0b2b4b6218a94a446d1b1bdb3bdb57d70675b434cdf87721bb910bd808e34498ff6566ba84d328afefe95b0ebc3f8a2e0bde53f02c729ed4f5a5151d0ad1aef4b5741808e955f50a3dcaedeb80c3b33494ac2d94b54881349efa1b9b560185bb6039588efcfb8b63c8538f48700f5d592cb08afa2b7cca34a5d3d972faca8553f74f8ded46b3dbb85f92f976dbb59ea59f72606daf1a62e164f37febdf44111a88b19ff1ccd01afb4adf6dc0fe59c2ded959e18e5cfd4ad37398d23e1aa672b67442c5cbc9ac31d3f94dd78976b3b6271e427c7a3d5d0defc4f5dfc7e61a10a6cf460195c551241327e42cb21a4a6bb448175b8bb3210efbb95eb9a69d94b03eb36233aceb58cdb1ddaaba9b4bf0bcfbb252063200f1829f30bf895e652c1062950117cd6f5662ed29c75a162ff60fad395b386337c8a4390bf0a7b4bd86e146404126265bd511909438f1503edcba451286d9a550e86b4a23125819510423af3097d3f786d7e3d6a7309245468eb8be478d7c627425b3b8c46ea2cf2b63169cc7906a4f879b60d5101baaa72b7a5a61fdd00c44bdf2d129d305779909730a9a49854c8f40c87f709c828591d926adaee844e5060ba168fecd5d8a07ca859d96683e61756a83bd2b2c21abca699c0df9a79784f12ce860868ad93d064f0577d6810bc0447e97de386d3df5956cdc534813cb5a6a0eb52c06855d69b0d16b3e086b1ad1c262a1c6022893c3c456a68f5ae083b229bed0b4422c0ca92285fc12913d83c6e6dd5b81dd1145848be2b44f638e7a97a7bb7b6141ad402c62e02104dd953d9cf3f26a10a1f869d873d2e4485b1c072ebae52f0dfb5a7c76e1b9d4bf2994862ebef8d0b64ed6b9bdb70dfd858277dbae2fd2c930ba5f7a6f946f75d9c10708eb099f81382875dd39e422e73387575eb8c8fcfb1b47e69e695aca4384d43fb0dda680b641612a5354bd5f51433607a6825850c83344fb789e929a29b09b45f2bbab2e42be4b02fc2a9ee4901e23211b72cded2fc852fb03aa434a4e24e6fa32b89622a4269c89494870a79a7c32c932cb1bf49124367a6b28b8a3b41f07f210e4267c386bff7bd84437d680e8cf0a2c5e98fbae26397fc7c6aba6de55105568196b7101c0d9042f1ab21b56db460b865cf8512516939ffad9232afc6776345412a28693b0d69a0ae0fd2f4524d8f0bfaa4b9cbc7d3690cec950034197b3f3b3ddc8aa9a54fd80b565aaa4994e4b9cbe8de6a61a21808ea77751f85e8af0d2894363b45771b2e1016c37bec7966383d46640855fb06fb7405bdbe07ecfdfdc5b3e1f035cb8db4ff47ec73dd6fb7c50abd8e977b60cf968f0c1139ad632aa27fd0ec2e57f15e5d947be0249d5d6c3c512bb8d4b4472b888529ac34f3de2d158a72956d1fd6c598e69e4bea43d94f483071f17cb800c47ddb388342b1cf9e5d0fe56576f01d9c790b801db2ccb393bd9b4c7ce03fac2c3bebe3927513e20f63f07aadc9cc3d14d6cc8f34ef2f8b64b02ad30c69f5643a1ecd2424efaa31f5c090a7bbfc07e16e5307ed5e6750c8fe47ac50620e1f8e17d996a19a41b7563cc83f48169d95ede33983f1d08145ab763056b1efb71367bf46eb3efc2ac7915886987ce7d0e6c3c096b5e3cd79979a318676ef03e94bc09e167cc39b5d07ac2af1e37b6046e5e9a9a95a6d5d0f377618a2619b182f8c4edeb94b0c97f00a44dedc6c708722687ba3de5fa5090e59c911a5b79db584b8bea5552234bd057ffcc303eb5fced6a7990d1da11911041a0a3c4b7c8d5687af57b0195150ac0dc604b71e00ecd76463704cd2a553019c65032adea9406e56169323aa57ed2fb4736c2e5dca1076f539e6169115c43d5f55634bd1c96979620f4ec3bb7cc5c0cbbc0dbe8c67f04e74df97be8c618d75940a95dd1e05bef1fa2cacb6663a1646df626f013a715a81cc93b5e04fa7ec874f529c1e6ea0140e1022e046ab99c34a8e44750f8e0f8be5644767604c708a1f866b33a80bb2df3c545899f66fb8732e432ea53358ee2612460d57cb960f5440c75b5b2a9cd4b6bfc09f67e861377ab4608ad9bd80dd76a40d172cdfd20784213451fb0dbd023b610efb47bf9d0c0e79c3841947af24a42e37d95c0725afa92b5eb1740cf6d73c39701343dff1e8efb18023fd680a116112a4c0536afecec0f8ba648576eacce35eb946c3ed6b804d0446fd46b89fb80f4288c349d0ee58ee523f3219106f1e18fe9e2d4c983fb6", + "addresses": [ + { + "uri": "https://ejemplo.org/foto.jpg", + "offset": 3000, + "host": "ejemplo.org" + }, + { + "uri": "ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi", + "offset": 0, + "host": "bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi" + } + ], + "envelope_key": "0ac808598a3da15de6cb7044f8a7ac60a55c2f1a64d7a36d17c79b7457946781", + "rest_digest": "a62604fb56d89d37627c9070de21dd62ae22ce26fe28ae01a6b5ed782fd543a8", + "rest_size": 5032, + "capsule_digest": "da2c0d2b02e604e0741faa44d90abebe7dcf83dc376addbca1d46782c89ed9cd", + "padding_cases": [ + { + "base": 100, + "total": 4096 + }, + { + "base": 3000, + "total": 4096 + }, + { + "base": 4000, + "total": 4096 + }, + { + "base": 4060, + "total": 4096 + }, + { + "base": 4066, + "total": 4096 + }, + { + "base": 4067, + "total": 4096 + }, + { + "base": 4068, + "total": 4096 + }, + { + "base": 4069, + "total": 4096 + }, + { + "base": 4070, + "total": 8192 + }, + { + "base": 4071, + "total": 4096 + }, + { + "base": 4072, + "total": 4096 + }, + { + "base": 4090, + "total": 4096 + }, + { + "base": 4094, + "total": 8192 + }, + { + "base": 4095, + "total": 8192 + }, + { + "base": 4096, + "total": 4096 + }, + { + "base": 4097, + "total": 8192 + }, + { + "base": 4100, + "total": 8192 + }, + { + "base": 8160, + "total": 8192 + }, + { + "base": 8190, + "total": 12288 + }, + { + "base": 8192, + "total": 8192 + }, + { + "base": 8193, + "total": 12288 + }, + { + "base": 12000, + "total": 12288 + } + ], + "uri_cases": [ + { + "uri": "https://ejemplo.org/a.bin", + "ok": true + }, + { + "uri": "https://ejemplo.org:8443/x?y=1", + "ok": true + }, + { + "uri": "ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi", + "ok": true + }, + { + "uri": "ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi/ruta", + "ok": true + }, + { + "uri": "", + "ok": false + }, + { + "uri": "http://ejemplo.org/a", + "ok": false + }, + { + "uri": "file:///etc/passwd", + "ok": false + }, + { + "uri": "ftp://x/y", + "ok": false + }, + { + "uri": "https://user:pass@ejemplo.org/", + "ok": false + }, + { + "uri": "https://", + "ok": false + }, + { + "uri": "ipfs://notacid", + "ok": false + }, + { + "uri": "https://ejemplo.org/ñ", + "ok": false + }, + { + "uri": "https://ejemplo.org/a b", + "ok": false + }, + { + "uri": "https://%D0%B0pple.com/x", + "ok": false + }, + { + "uri": "https://ejemplo.org%E2%80%AEtxt.exe/", + "ok": false + }, + { + "uri": "https://127.0.0.1/", + "ok": false + }, + { + "uri": "https://[::1]/", + "ok": false + }, + { + "uri": "https://0x7f000001/", + "ok": false + }, + { + "uri": "https://a.com:99999999/", + "ok": false + }, + { + "uri": "https://a.com:0/", + "ok": false + }, + { + "uri": "https://xn--pple-43d.com/", + "ok": true + } + ] +} diff --git a/testdata/vectors/mutations.json b/testdata/vectors/mutations.json index 2418822..7bc7e37 100644 --- a/testdata/vectors/mutations.json +++ b/testdata/vectors/mutations.json @@ -1,5 +1,5 @@ { - "spec": "0.10", + "spec": "0.11", "description": "Mutation corpus of spec §64 and further cases of capsule.TestMutationCorpus, generated by the reference implementation: each case is a .dkc and what the reader is given, with the normative error and the step of spec §63 at which capsule.Open fails. See testdata/README.md.", "cases": [ { @@ -7,7 +7,7 @@ "spec": true, "dkc": { "edits": [ - [0, 0, "444b43310100000000000079000001bea5006a646174656b657963617001010250ad4d676812b134ff8a3de263f77018b4037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a734c34384c747739622b5638494e4230387a67436743796f543063365334726651346a48564172494d764b717a556b2f507947394c622f787137737168386e790a4472745547474a3232784d7552396c7641397974457653355468425669596c3161626b7841304f61737a3775464c556237413531726a3936647a7766505870350a6541674162684b75476b7342327352693537376f35324b45506a46705556666a7a3179495541544d4d374d0a2d2d2d2066784c4e656832744651734e707a6f31782f59794d6e7635526f38416c654243516e667071693772446c380ab98ff74adc6c83dc1f8abdd5d8accd5e4b03c62c1157bbe9a881712164d94628aecf4e8d276d55ff090c783177b34f5f5fb8ad75cfe256008aea660ba04487968842d0dbf8f60525f94f9be3413dde0c360f1d2b72339d178605e9f05162cb5ffeafa1b2ffe65deee09b6f6c3025ac63525873293565a662c840a16167652d656e6372797074696f6e2e6f72672f76310a2d3e2058323535313920514f4d767377585969535368313430654e38545345486a6b513236496544586b2b636570506d4f2b53536b0a50466d4849322f446865496b3233314951546f7257635764656870706b6c6634505172764c6765764c6a510a2d2d2d2049726c735279574b72466e325876754841714f4c30324244547a664e6e30527436376945767a4d4335796f0a245dbacd7990d0847915e76f52faaaf447864a03f75c2514fee56fa7778b76486730ed0e7e7094"] + [0, 0, "444b43310100000000000079000001bea5006a646174656b657963617001010250ad4d676812b134ff8a3de263f77018b4037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a744376364f5244346b53426d46596537415141614761456a566e594d515675506e4e7463592b4d48535636746738585a77456e715136534851316b2b3378534c0a4561504d6e6f6974314c503037472b4e7a325a2f457a386c64576e556a6a464c376a4e352b7065694c5a3942335a594c70514469346b2b6c7150704c464e62630a76614f7a2f58634e354f5736534246535373674e512f4f49354d38346c4c75786b576946796146676355380a2d2d2d20377573674e443075364a485130726b576364357168675042434f7a52475763795833496767714b5a466b6f0ace479127b9eba1b173dee3f0766dd2faf51b795e75df95bf021a6e65d3a609f31b931c4df516406d680fe7b7250e61af1fd9993420d1702b6589808da69749b70730fb52d04f5a2f100f7affd0e8c124a1f4dd667e886e420d4b2b6ea6f274e6add3486b87da71be72d21622f9639d21e3a450a717e76eb1b6c1016167652d656e6372797074696f6e2e6f72672f76310a2d3e205832353531392065705076694d31416d3871396e7779466b322b375658352f5a666a5931737353784a626c41484f4d7258450a666533724d7a764630707764397865303238455a2b666363346a3059594e4d30416e7269414d39496b7a510a2d2d2d207135674e2b68785344746f386a4771706675352f4a3455684c6b45636553614b75436a4169672b424c39630a40165418a8936e3f984ab908bc911a9d86ddb22b204c697acede40fa09b098f9d1dc97ccc38b5b"] ] }, "release": { @@ -26,7 +26,7 @@ "spec": true, "dkc": { "edits": [ - [0, 0, "444b43310100000000000079000001bea5006a646174656b657963617001010250ad4d676812b134ff8a3de263f77018b4037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a67492b4f36746b50507576754c6d3456314a4369713563794644554e463532634b662f49424f59532b50335557385053725068564c437337746d5a7634776c490a4564706c48647773384a5268715645484a686d65474f67583369712f445051684b574366584b564773396441437a654c69657352534c74796467582f6f416b380a62435948626e705136755561775854674a5342647748507232587a4e56733234454758492b3676375543770a2d2d2d204d696c6341336d6a3241486d6f2f54697257546e4930336354636c4d4f4c77382f534a6c6a686a7a5752450aacc6c2fbec0f13737228d95ea397df3a692a31594ca786e6c5666a76f652ad5f406f33660d664b94fc69a462763585489e3bc0b16f6f64995812014174cf818973841c6cc1ae4a449d14f58c7fa20aad0706451946bf4d093378491a71890c750bf31bbcd972d754d105ac97528422e621fb43815c3fd3280075776167652d656e6372797074696f6e2e6f72672f76310a2d3e2058323535313920514f4d767377585969535368313430654e38545345486a6b513236496544586b2b636570506d4f2b53536b0a50466d4849322f446865496b3233314951546f7257635764656870706b6c6634505172764c6765764c6a510a2d2d2d2049726c735279574b72466e325876754841714f4c30324244547a664e6e30527436376945767a4d4335796f0a245dbacd7990d0847915e76f52faaaf447864a03f75c2514fee56fa7778b76486730ed0e7e7094"] + [0, 0, "444b43310100000000000079000001bea5006a646174656b657963617001010250ad4d676812b134ff8a3de263f77018b4037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a67492b4f36746b50507576754c6d3456314a4369713563794644554e463532634b662f49424f59532b50335557385053725068564c437337746d5a7634776c490a4564706c48647773384a5268715645484a686d65474f67583369712f445051684b574366584b564773396441437a654c69657352534c74796467582f6f416b380a62435948626e705136755561775854674a5342647748507232587a4e56733234454758492b3676375543770a2d2d2d204d696c6341336d6a3241486d6f2f54697257546e4930336354636c4d4f4c77382f534a6c6a686a7a5752450aacc6c2fbec0f13737228d95ea397df3a692a31594ca786e6c5666a76f652ad5f406f33660d664b94fc69a462763585489e3bc0b16f6f64995812014174cf818973841c6cc1ae4a449d14f58c7fa20aad0706451946bf4d093378491a71890c750bf31bbcd972d754d105ac97528422e621fb43815c3fd3280075776167652d656e6372797074696f6e2e6f72672f76310a2d3e205832353531392065705076694d31416d3871396e7779466b322b375658352f5a666a5931737353784a626c41484f4d7258450a666533724d7a764630707764397865303238455a2b666363346a3059594e4d30416e7269414d39496b7a510a2d2d2d207135674e2b68785344746f386a4771706675352f4a3455684c6b45636553614b75436a4169672b424c39630a40165418a8936e3f984ab908bc911a9d86ddb22b204c697acede40fa09b098f9d1dc97ccc38b5b"] ] }, "release": { @@ -311,7 +311,7 @@ "spec": true, "dkc": { "edits": [ - [0, 0, "444b4331010000000000007900000220a5006a646174656b657963617001010250cf1c8ae418eff0f668d7f12d583bf8cd037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a722b3546693932457845426a7378735a37412b7766387650356d326c343845426f306871384a4f614544556a497a5755736b746e302f2b334153727355694a430a46645a41492f465053786d676a45426a4d354276344b555978787a52356d6d5031334269493831554c69504932467647656d6339467a745030365a615a5442410a675163737531484c6770445a5244556e5473374f436c4a784e5254664d427330444a694f67675959616e550a2d3e20583235353139203251422b626e7750305347555653386848306e754362786f74442f4e6c73667949556a61596b63536e42630a38457241556e65542f594645634e6346464358437747547253556a755949557143632b6746424f377733730a2d2d2d2039534471755649444549384d45556271342f7a48764a4a503643334c75356c714849767a7a724267514a380a2048104484808179e97fdf12c12c589ffb81512f3c65b82683079fcbe64991a1306bd0243a848c5fdba78bc4ad90573e1b65cd334b175b95d67b7bcc94e517cb694c716023a49aafa0d318d8eea1753ab4812440af7daa663fdf3504f2a0cfe9924bb0e40b706600e471bc46c2132ed1973bc7719b9f26d19daa6e6167652d656e6372797074696f6e2e6f72672f76310a2d3e2058323535313920504934394a636c33556c6761666c532f7077565673565552326c684b5143566a525138656670524868544d0a776179557646495137594761735044597750774536317556454e762b58533235316a516f557458623151550a2d2d2d20504753645671536e4c6e6137776b556e66554a494f7055497133325a6f4a5a6452414e4b44503763634d490aafae0228c816da4648807696b39104d16b68ed2d505b7269ac69c76321d4ed43b1e44e92d69b9eb651b8a4280174e9f7ec"] + [0, 0, "444b4331010000000000007900000220a5006a646174656b657963617001010250ac64a02dff47ec22aaf1a44b1a89605d037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a68767130433237775347434a74376745584342595a714a444270556b37436733396b756c4c73584468354a75337354776b734f4146642b537177697a6e45726e0a43547472664754784a4459352b70495679596c4e654b6e435a6e4c4e4f4859336e722b39592b5178424975512f46765671526652465765474648346b54357a710a544641636f4d4269773846614b6c567a3348645933306e757654356f706f464379474864442b4f76526d6f0a2d3e205832353531392063725a766d6b55492b6635457375777652325031484e592f6133744677354d33414732645763452b546b550a2f43664f39437941526c305274436f4255716147384c677231564741416362414a3868384c75566f7962550a2d2d2d20702f396733335a4b43646634546e44534779354633677a7364444167747751427137524754704e547655590a2ba09c52636965e1044d0e1efb695e8604db5416960329759a621c74e888dd0a6c9329c0b094cf3d05b8d41e720553631b140600a745756cc10d336971301eac7ed41a7b6b998fae0a02d8b0d8b1425d559598d7584a65cdb760dedf825e3396149e145eb5cf5252c9750f3d721bb43b92d5d3114fc36d217f78496167652d656e6372797074696f6e2e6f72672f76310a2d3e2058323535313920616a4f4538414932645177536e514e756f677a583731747875725a623845422b636a7253333151374d57770a4e547a3648364f755462343831624d64383041506f685a79356132757a65774c7637596e39664a666a48340a2d2d2d203247677a736e344773317661555845526c6f737859356348653163796c4a625436714149435261393645510af7db1532a00544a0b43d9b03a4f76aea5cf5c4d692bbcbb41d85dced37cf7301263ec638c34bf77b6e6a290c14804a8128"] ] }, "release": { @@ -330,7 +330,7 @@ "spec": true, "dkc": { "edits": [ - [0, 0, "444b43310100000000000079000001bea5006a646174656b657963617001010250e3a16b6e6f0336acd890d979fea4ecb3037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a6c4d72326b35654d72564c4e44344576334a50347064597a6456574d4d496c4c6b517443704e2b7a727542392b775a774b6a726d34542b2b71456c374c79786d0a412f71486546512b412b785a704773687556514734574d32525252345054366e786f7a6e36573552593470536e5a58586c71416e763043413361444b416558620a4e745762674a39522b39645631796c4c4d584e7430444a67654251787450643135575563424f304e4370340a2d2d2d20557276696c5a38394865416474417a5474616d72473935724135573644713570616c3336755a6f755848550aacce4f981e3c57fa797ebe1a01613b5b9de05bbda109b7b83c54c6e2c63c33e81a0298e88d08e47184156670f5216f867c23e471b8b0229dcca8ee7e71649756e6a5feea270f56c0e0985416e9234023028114aa128e0b2bdf4f5c8e1cec4662eea2044cca845c6156dc127f9cf33a005aebef1a8a57c1f1515cb76167652d656e6372797074696f6e2e6f72672f76310a2d3e205832353531392056707356532b37794a7463724976304756786748382f39526d4a434368513571706a5158677771324341490a734d4c39585a354a38523742624b74653135326a425a686a623078546665726a5677332f4e5047666f39590a2d3e20583235353139202b74566b4231753266553658784f666c474b354e4a306d6d686a71376a582b72475a7868696963465356450a78654e54413867786a6554363565722b4170704f3739695753326834457844565364786a463667796451410a2d2d2d20456c506a7a47303464654246344b50686d364378744153756a484f7474686c732b447a374574476c7a436f0a99892829c9f6c1191c249e4c91e536df4ea667166d7b369b2ec62153d4c1164e7b095dea99e31c7f73f6863910b5ffe096"] + [0, 0, "444b43310100000000000079000001bea5006a646174656b6579636170010102503f985af7af37ad62b40ec5ccc3c6b8d1037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a72535a7556584d773838434e535569776746546568424b7342327a362b2f5576376b484c644f502b375375365356336b71616c4f4946375175652f45395356330a426e4541356c31626f45696a524934554d67695648414b62745833686c64744e36376a58507931596e4f3875396e346c445033674845415539423972566d70770a51324a73463543434571474f786f4d68564b6e514d52592b58524e56705a57492b31512b573432736449670a2d2d2d2053692f724e663674344d6833374d33383949546d78786c386e6a667367667341386942446a714e4d3764630a26ff94a0e249fea283ab9d4e8b74a704d66a07a97f85e321ca93b534e7dbf90ceac83c5301e8f8aff0717045f3bbfef4af645186de574d37be73bee41e183438dcc5e8288e5e4b4a1f639803d365e6338b27d340fb80620d372e446c8b379d4c263e8084be50d91c97c9bac5cd4bc7f19e9805fbf1f23d3da7fea26167652d656e6372797074696f6e2e6f72672f76310a2d3e2058323535313920734f7a3373443372772b324f4b614a5533454b505851416736315456336b52716571324f366279443454770a31536f796b4449495a65504a5870496c2f624774746252464e4a4256354966702b622f49564873593632490a2d3e2058323535313920502f35586c485551503548456a485a394d76574c4f314c6c4a766547457a6161583168595962336346306f0a69782b54616370572b784d4c473633366c615039772f4a3273727a437a4e526e496e4466584c71375156410a2d2d2d204f7749452b6270666f746b554a797756656e31686e36685936356d775156665553774e494c5544555279380a00c7e8ab57f200fce774b9424da02c5640392510592575ceb853ac547d00a3ad59a532831f988ade2c35df16cf3204394c"] ] }, "release": { @@ -349,7 +349,7 @@ "spec": true, "dkc": { "edits": [ - [0, 0, "444b43310100000000000079000002d6a5006a646174656b657963617001010250abd437cb5d8c8b56e96e2a163b11f560037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004016167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a743551754a6c384e3459536b616d59455a4a4943744645635661564d794b4e2b5646796f68504f37566e6c75325248306c4579614967376957315157542f48720a462b5a6752797656423438554543375865516d37416174712f6a53352f456d4232716d35416350745856616859666e786738612f7239435a344a5746614644730a4d5a6143434168634c477367306b65776e356a644c6877386545372f7572785a5470676d6244465542766b0a2d2d2d206b5741613768397368485141647a6e4f70666b6742447a4757476775366d38675441647973357a414146410a41e2ccbfbd78709e144ba877fcfbf975a857453dc4709fc2247ff57a356a4cdabe616e5c2431b04f7b720e800b5b9e91935e27035a4532bdb542a100ca254f812c4619dd5f7ffc744eaa3de875b5ddb21be1a4b0611bdc9e01eb1081c34e28a9f2d9887e891b475e06b369f633c95bc5f1c5fe961c286cb75cea3a7acd08422a9690744e5529b41965b5306ca65d729a2d1df678407e0e20d8fe819a8f0af46bb6301e5aa84558f6ab5a29766497478160344419170ca9003c1911f25eca48df8bf52bbe313b5630b0d0298bd91a624776cae3b7cfae8ee47e30bdc02016675b066db933ddda49b0fd76ac244011d090492caaebb4af136899377a9f681d6c21fbae8e3bd5cbc1f6056cd3ea5b0080314dbd6290addcade3ef8f42451181a060c767e79cd1a34a37a0b3594e402f9b5d5987b9c46dfac2d36f5f1581ad2e544ea1dd035e094562e621acbb22d97f2b90c6b1ba6d3e3685bd61082a68c3dbbe2bfb5e788a3aded25a1aef3fd2b68c1abde24c7ced78e83c26f4dbe40cc2ea587b99a2f1d7e0569dfb5c0714918bde9aef55c48d6167652d656e6372797074696f6e2e6f72672f76310a2d3e205832353531392047695a49474f4d71386a4e5a3034633851675770694e7a704a5774733539744451325241346e5a4f5a33380a7333664b413376376f39427a6d347864782b616f7058476e705755475751436a326e7937532f52307256410a2d2d2d20305035624734416d453976553248674e495232486a6b7a4e6f74367844667942544c6d49442b6b6f4f59630a816a62bd612b6dee169cf465bf1519af7be6ec0255937c5752428cc5b7d969bddef5047f5ba1fb2f4c5ef1dd465e578b34"] + [0, 0, "444b43310100000000000079000002d6a5006a646174656b657963617001010250c800935c81d094a93d56b9fad957b18b037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004016167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a7176367034705646773564633853442b396e71623638745964676e5a6b436c39646b5573305a6c2f45484e7036443863397a63526e586472536762385a2f54790a4376442b5269734d47647a526b335232543650794a4a65616c696679384d584c5839417342422f7948564a585a464172654749424259397048734936566477360a6478452f6f644d514e36776a7a5138482f67766d46556a6c7a362b6f566c7a6a6d4537344b7750596863380a2d2d2d205a354d5866734e41556e363653674f7a4e68544b6646776a5839576a6a6c5a586837394d633568756c68380a7ae6cdf03b64354b013c75b59d4b9612d89e29429713d10fb3da6823d330d25ef4db2e811ba54be8777e145a96b4c247bb7fe11432c929edb1627a7ecfaffec3b8af5d84a00c8705c39970600f3a4b7f2c31240a017eabb7e4c68ff8daa4f3fb04385c8e0c8e28bec90cf335090663101144c45cbf8698068e0c38203a2d7e6e3d2ca6c42d965c835db0469a920bb1a33ee455f80e712557dc912d033585004280c45f60b2cf5a7bfbe49426696d4683ca5edeb74cc46ed9bcc907668854974e8ecf9c5e3d93faa061cf81ac6201dfb2a72adc83516a2cbc5d960215627537facc271e25b10784854f5b78dd36ee71738d81ff5c8a8ddc4069ee092ecadbb66cc82f8bd0e4de2ab41fb837a6241583ff6545ffc53c08a558a8f8ef31e8231a0b3b72feceece26f0c5da15ed07b191375336c21fa8c5bc52586a21c85dfe52b8514b1872c8fd8f25b6682f7169471bb30cad79db5536d02c83ce6ec48b0ad8bffd4cab0d1888470c6a5f4c27d71b7e9d865cd5f51a58813f9f09e506ffc8309d3934cb7b820b788cf3d2bf36f08e0cf091326366167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139204165504267554974516f50362b765753446841676f56342f443371756b6e614c4638763648306c426b33490a31783261346d524452744c5959735362634d4b4d4e39734f64787261474c584a69386b79476233517a6b6b0a2d2d2d20425475756333484c656c617934674f4c2b7162483147374b41616e6b31774d6a7a61546b2f3733624b6e4d0a178bb05309a72a9729d9c1d18194140455a5257fb10f0b6d934759dc41be209bab219ea1ff246066ca19f7c8727c1a773c"] ] }, "identities": [ @@ -371,7 +371,7 @@ "spec": true, "dkc": { "edits": [ - [0, 0, "444b43310100000000000079000001bea5006a646174656b657963617001010250e07930029f3f1c94936b910c293c3942037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303120353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a736664414f48784c4146475531796e714268444e6f7143302f33347359386b5664386e6a7a536952306276476b303158766e77514d7250575952364b6f7844320a425359584b5a4a594e3536454e346b436768334669437554496e356f4f346233486444636e467231686a43634b5442304f5362424a376847317345647a3945500a43394b6a466d365051325375706a69594b6d7a324c5259756867374c57366e47655a3241515665526a77380a2d2d2d20724279505962786f395071784c356f31553047556754386672476659754d4d6d4c30342f394833464352550abce15c9d03f838d7039650fdfbad0a3708b4ae795abedee03c3c5db9a178e46dd335c7776be7717f1ad69ec405632ef53614afe339bd2be071002cdb214e6fa3f927eee33fb639024be3206c428dfbd1924572eaed4d22de0d080846cd512b6ab20f0a2da4c923d496518ba79e18148f82d6d84fc39b0203ec76d96167652d656e6372797074696f6e2e6f72672f76310a2d3e2058323535313920496b4e77464f53765239516b366766554449694464562b6c4c5745334c71636f4c6e524d6c6e50537658730a6579795075416a4135345759556d5654336f615255724d486531724563753249634d716830426a656e66670a2d2d2d206135465a4e742b616951464d56474a426d797856765042474558725033457a6974766851472f372f3062770a7ec588991e7188748aa479f6244a93cbacdd822c3d794f6f7ce52c8f91fa6452e6fc4cbb79b7e94e9320c1f889cb5a2701"] + [0, 0, "444b43310100000000000079000001bea5006a646174656b65796361700101025008f94a0475441b20180762647ee71902037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303120353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a71524867577976397033525958546133574f7475324655422b6c42664c636a4239376e6e4774315441437970566a3459665767794867694a4c305861562f62630a4363617a67486a576e624f2b49626172725069626c47653353714951424d44586c76486b697345464a5a7255754f3553612b423071437a5a34503770464170510a645a6a5a347244626835747434487530377858377a4b595245614c655867596545426e38656752395273630a2d2d2d206646456c5275527a3242556f584869437376362f4c33756c7773724c6164586d323272462f7654424f30590ab73671cf5923dfca79ccae9b62bd2a6e773cd2646562934cd65123ecf129a98eb0cd0f6961cc0550bc3e2c5a04bf7c6de0a31bcfaec8b2a9dad8461dc27343af0381d45968c373c8e6a03cbe18a04d7455470a5ffd88c5d4290eb47baf022a523239155562c68b808351c1111386dfdbfcdd3ca412245797eee16a6167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139206a517479704546655849757564546f35677a5145713043796e79562f4f44425138684d69357939694b7a730a66333250657359584932716c6d4e522f455763306533656b7a55764e6a6d4e5846583165532f75767065630a2d2d2d20547746584a554f53524549757a5963556f62306f6550494e65466c552b3671614f436e596a6557783130300a584524bf4c682309dac3175618a4c671f10a6ffa4c3adfb2757ec80745539886340dc7ebd423754d0d4ba7439236edd3aa"] ] }, "release": { @@ -390,7 +390,7 @@ "spec": true, "dkc": { "edits": [ - [0, 0, "444b43310100000000000079000001bea5006a646174656b6579636170010102502f016f62cddb637be4531196fd858abe037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020646264353036643665663736653566333836663431633635316463623830386335626362643735343731636334656166613366346466376164346534633439330a716757425a2f4c5979676e44744374753361632b336e4b6941426562797449455672624d714748363936786e6d705365676f4b734146563747787242477164340a4353756b3544636634356e5759542b556f7233346b7834547646706643635a37466168656168754574576e366f685a61666a4b3170394d52554a4345384546780a4a4f49316152336e55465170652b4c43793548527a4c57444270556e7a4355567a313757435966762b476b0a2d2d2d202b4e74654358434e2b6a6a464c67496f41727535764d4d44663931504e71794b52764378415531353675340a5c5ec56d687e72385d8e3c6f1fd80ef6051f155ae24c1888f94446835abcbbdf1b766b478bbac3f13669772680284dd8e0f59223b29689f93d9dbe3ed167a5f0925b34b62118d75ad82dee01f4ac593c15f5ab3f02c7e7b5a739c244d44a8047591fdc6e1e7f4652938cfee5449dec8c9c63c2036a46cc210f8bb96167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139206438785051576c787141506443346933443937375878483770565038472f4c644b426a74496e6b7a6a30550a446a4c4e4d6267655030746e534679685268467758562b384b7575345530542f34584a4e564a35446e52340a2d2d2d203762654579567638516170784c796c52347359356270776468645634676a4c374d764f546b6b4f775933550a931edca87d78ed596118b696d083f749058d1ef73f8c6b6b1024244998bcb44104be86579f168b0119eb058d3e10760e97"] + [0, 0, "444b43310100000000000079000001bea5006a646174656b6579636170010102505d6090f141146d36ba274b96b44eb941037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020646264353036643665663736653566333836663431633635316463623830386335626362643735343731636334656166613366346466376164346534633439330a6a776d34753269326c797a654b764d754268626954366f74642b5238635378614743442f6a3675534b662f6a2b2f52624c523872535a2b4567624955697544580a4369796c4264467865766c504b415a674c6b6e6547482f3930373248336d73443458326156345463464668474e50584a674e51474e782b75554d3544703775640a7032614c67752f387939636869474a78627148653533514f326c61496a33336f7770464543454349615a770a2d2d2d205464647a684338714142763251315a594c2b2b4d68766c453238424c5550393666654a446e6f4d72752b6f0abfc4d9ad388fb2d3699c69d385a97705e3e1a9dcea072e4d76a211e420ca3545c24cfdb5439cfc8e68e20db7034c7087b9f417cccbb6eed5d94482b75c3cf1d92d08b5eb0e36eb91fa8d02cff034c9c155cf47537395adb30821fa0784f0a434a114120b79ba0b42ff55766adfc9c0941aabee9775be3fd50655746167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139204f756c766c764a4c706f562b3569334768383434685351354b45754d647473396f4f5753575153433253630a33665747774447696866467a2f7671767a77364d667a685254426875614e7151674d3548526a72696b376b0a2d2d2d2073695154577639354b635237576e48414f38547858746b7a45556272387458426c71614d514371347747630a2a9da42ad38e7ea56b45632f351cbf9cd9252ca816517b458154b4ce7c774a6e3df70375e73b07e26d95f783b9a45e020d"] ] }, "release": { @@ -579,7 +579,7 @@ "spec": true, "dkc": { "edits": [ - [0, 0, "444b43310100000000000079000001bea5006a646174656b657963617001010250a7336e7ec2e3ae0b86694ddd7be97da9037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774e483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303420353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a7439545361546770564a6e392b4861653971615944366a5a746e2f493243716d4b542b77756732614a51394c612f4855474d515a337475412f713846475571510a41712b48753433514e6a6f5062703647727678526461354448532f6a50714667504736485a6a3259387a4771523274714c2f692b744a5a46464e44684e375a620a6d5a796e7a55717a6d7659346753324c48507342686c504c792b57766f6d694f5643784d6b35334c612f670a2d2d2d205173416550494e6e34734247574f525258596a6579614d52364a4e644f734259646d6351416e65516e6b410a15bc97bcfc7d847e72586753b8c90e8d39a7d42905a881f8e6152c51d7dc51e41c1d5c81df60fa04c03ba568ef6ec0962867c157c2422f6e04327433ba2c741b8a9217a58d27376a1e7280c1ec7fe6eebadb72ee0882b55d32e167fd72491ac77407b4aaff6c5b972bc61a07401988371fbb0b2b6ebf1307cb8b576167652d656e6372797074696f6e2e6f72672f76310a2d3e2058323535313920573365486f4233743353593277524f46506c6d326e47594e33627363714c714a7a476d35754575787748300a665333744877494255434d36497241336b4a4179353663483836756d7a5436477a63497268526b466a51670a2d2d2d2074694d326b676a652f384c2b494b69736930397076525555304450593371564758493437356831413969380ad2636c0ca74ce080748ad38ba4abe73f7527099ed68830e9fa83512290bcb69401acb6a51ef8017216a42c0fe6da88a310"] + [0, 0, "444b43310100000000000079000001bea5006a646174656b657963617001010250250416bc1e6d8da84f5a69e47a9f66f2037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774e483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303420353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a6969572f64347332684b4964736e71757a69657763522f79354a7544634378506d516b61354c5636332b542f7a686436706d4f46774133736d325655373775720a4663677557416a424976526678676372323841596a685569626a566330744e6d327a4767314e6c766c412b5348463235423472304b532b2f504864674e5463680a627a694d4f417251636b7166702b506d4f585563756b61793659435a4e3069484a62647678564b545345770a2d2d2d20474132673036764f686e3944574e454955374879586e6d533648494c6534666e356a56663357446a4532450a4357b131f0c89f68f84123fcf5ca1a62c50949d3e49fca8563e4e6259fd2bac5a427924211f878883782708204890673b361669cb98f8314aa9cd136ab1373eb76734495dedb036c412c853cb6becf01570da327eac5306ddb8e254f166d838d3fd4b54f945d0f7266550de2332a41fea90a9bfaf91aa6752f36836167652d656e6372797074696f6e2e6f72672f76310a2d3e205832353531392033615136485379414b59494874634e326b625479734455614f38724d4d48695648316d3032612f575445380a6b55616b7a4e714757376a51705374696c6b59785071314e6f4143514f5778794b4367506672316c4466380a2d2d2d2078633856624f6c6d51374b644b2b583468644a4869726168633834652b39354a73416633616b2b706959730ac4caca9a5d2043086011a178e248061d647837ecc36701c3e2143efff01e3045d1c3c5a95c07971c103a930d6925ee0d7e"] ] }, "release": { @@ -874,7 +874,7 @@ "spec": false, "dkc": { "edits": [ - [0, 0, "444b4331010000000000007b000001bea5006a646174656b6579636170010102504139c505614668ac638ccd277b8ac858037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d4830041901006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a716735774a69597a35414e6e3057443858326159465559593868684e654b4562747a6e38327649496871344b32366f79347865317537525233596c6d686879380a4367636a52516f4b4e413556674b65322f3138455139786573422f464953657a336d3458496a614e714166543075756f616a58665163716c565173514e61376f0a7032586f3255416c525955647477423961706152795975775364646741795737636237674b39656769736b0a2d2d2d2073516f5a69636875486738666947764361345a31764638495a4c4c41764c526a644232693749615344526b0a2984fc77430f02f662ca5b4bee9312746ef7de9fe4b16ffca613dc5112f3777108dfb9d3caafc478037a76e6bf8d5648799f867f5447ed7d08330edd5e6625dc65c121ab8b8f85f4037d721ad0d7f152e18f4c889319a313446fe8309de882cbef7fb82632ee7d61ac5c6d1d50fe517008e6ccc0a329f8651d21b66167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139204c4b69506a484f566d7a4450773352536649753841676d5950327a52457875527a38572f6e4142553178550a59314d447658474e526b465966337367764f745469597577344c3769496a6474342b656772542f4d426f510a2d2d2d2043424934544a616e4c4168635564713248376d4b72577a7a4f6c37485a357770585068317a563646526d380a7cdfaa7c546b7b3d7369041837af39b5f37623bbb0aa8b52bb750a739e030fc1299a8735b07220723713ad1b1518544bce"] + [0, 0, "444b4331010000000000007b000001bea5006a646174656b6579636170010102500c85abf16c0f2bcc709c0da0e1cc08fc037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d4830041901006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a7265383037565842584449747676526a43466f65753175323653464f4266304f734762677065756967617a6c626b5a737a4135446876744e75734c73524771320a444375532b6d2f58454b4352644b3350674551564c792b59754b6d636f376a4d4f5578747432466a76572b487437784e675146614e6679656a544c4d333452390a394e2b78655057576e6253534845464d4d4b6f4c4451654f436b77726b694d725764696c4e6463503469630a2d2d2d2056444737647277595354386638396f75346c6134335570353075376d77367a36465572472f7144556157630aa5e35b7b1bb3e53848d54e131a5178a366e127645a4120ea4edc031de27a4d943a4673bed7ae752c958cbbc064f83d36894ae0775c4f9e16b413ee042cd5d686d53713484aa9280cfa5169bf87dc1b9aae0a2f04c6a76e6903d51b311e6c03d5d9664176f1769e7885c56594ae4122b66b07620f8a31114e9663456167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139204e6c6b377277574f4f3466427469597774622b6f35526678716a514638727a384e665768544442363269340a79583178317465616e596949423155434a4a64532f71564d5074427274636563624a49576a6d447177544d0a2d2d2d2045512f727939453048786a416831795a47757564473353787a6f6e4f716d3276574e6f506b52684c6a6f340ae549c4592942f75d80f703118656a4a65cabc1cfdbae6a29ba48fe5173036fe17b73b7bb5e7f76b748ad5e3394e1278973"] ] }, "release": { @@ -893,7 +893,7 @@ "spec": false, "dkc": { "edits": [ - [0, 0, "444b4331010000000000007b000001bea5006a646174656b6579636170010102502dc4f9e83148633f8f6caa8f2bbea7e5037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d4830041901016167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a6b64483338556c314f684b35625a454d7879307a7a4c2f42504c335a6e4b6443683235736c634438736d6f425652665644686a6938746c5141685076456b38530a434b4e535a4967656f527558637a61617362344c4a454d704543334e483636722b49675338347850787651735a546f506c4a314e427170615a532f4d693669520a35307863754753737535575239694c4f714a4348506b7836706c62443434382b3042682b6f684b62485a4d0a2d2d2d20322b73524c3961787a4c68774652385542416f776d4c6c7044432f4f48594f53582b776639492f632b69450ad915d67c3c659115bf2e4ee1888216a31a5901a1bfb3610b9e37b69eeaaed3bc8233e8191bdd3fdc065d388d2c577100b49f6297261b425c41f4ee60f1986b45213ecba95be0c29b255221c32ff0fb0dd5cf77c149726f1e2c3da103a5ff90bdf3570d4e1c2fa20bdc8190fe7f6920969c07743999c41be3126db06167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139207936452f302b4b712b3747567775554d307941384f5336467a68724f6e6368744f5577663741376f757a590a7376387739314e47455a72575654336a6b30393238386d514670596553526b305655667346526c356356670a2d2d2d20587a79673667594274514f5832504775764368336b5253424a4c4a674b73444b55324852376c523072746f0a2c16b48c2582a61a3fa7b70582095d5b89562e0b37b0f40abe69d9bce4bb841fcb63552de5208549e2ff54135d25a57e72"] + [0, 0, "444b4331010000000000007b000001bea5006a646174656b657963617001010250885d52a7545000fb6f8e93096285fe25037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d4830041901016167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a6f76473876746f4958476f4579564a576e466537693763356763486e70333866586f312b71412b586a2b4b5145496656304875524263656a75337434356b7a620a423459633242395650466f2b38674871616c706a38335969484638787076786b74426d4574332b6a447847617249477845416f695a45505238385a69363557430a2f6d7776464368346158724b462f41654d45636a423068417877526677457430576763325668356b4341510a2d2d2d2068587a4e71574467562b6d6c303350734c4b506a6b436745586f55323836664e584f7153616648576869630a174c6be5aa4c300c097fb94a8b53f90f7be231584dc75900a50e007d9bbec6ae7f42cc56f6cc31cdefd68fd91fcb5b2240294e66eb1595ff90796fcfa414414ffacf503dc39d4ca510b476df9d28e32a1f502a9da87497dd42ecc4de068b84c1dd327541c12f847399eed7badaa4e6ff1fb7dd24f163be5048026e6167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139203873623156314f744339396d74664e67424b753036543972614e6556656558764d386e473157587a3758450a5278656b5841596d316a7032644e482f3144546b79714e555176396a4e664d5670443278343454487952670a2d2d2d20713668736f776f7349325a4e514d586a573354614673336a43745a2f36745942594b79662f654e2f41674d0a1e885d09d61b5b6310c724c13e5081d8e8e3af2cb32548d63162dcf2c74b93c3df0134fd7598cf4caa717aecd6fc527a68"] ] }, "release": { @@ -912,7 +912,7 @@ "spec": false, "dkc": { "edits": [ - [0, 0, "444b4331010000000000009c000001bea6006a646174656b657963617001010250923d1b8e0cbb78fbb8b891db77327959037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004000581a200781b6f72672e6578616d706c652e6d7573742d756e6465727374616e6401016167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a736d484d6c3453434930437a666a702b442b54644c65755a51346c59675a417552544d4a364b46687a7a4153644453754f4646365149736e437349334f65386d0a466738707a6564627a4672774a4d38734f3941696e446344494d664d48495472777a4165556850612f385054384a6c4e37565445315a322b6665576f725549780a466f5136316f5165616a75727447706b304f4c344b5a4f6e4f49315967356b6b4a634a746764636c4147450a2d2d2d2030536268574f4656786c344555674363346a4a4178462b6e68374f495a4e3370516a6f723359422b6c50590acbbc28a6bbce6406e2decf3fa61a89952dc3ff3e82769ddcc62c5be78b5a506339601bbc2f8c699b39dc8af00267618bfa7566c172424d7f5cf7bac2d3cc600ca24d813e6b8c1cf572f428f60efde5987a7d20e38a6f3f0d55afa5abb41f8aafa65aff4b2cb4708385ed18a05ea4e034440fc0e2f74232ba3171656167652d656e6372797074696f6e2e6f72672f76310a2d3e205832353531392037672f63454e626a7333575a54635675396b65584770597838346533326c427679344c746d704a524f52380a7556316a356e62364f354f4379652b4442536844686f4f556746396b4a5a53507461426b485333546538590a2d2d2d2039436a4275774f612b4f58656463552b6366377333793666742f4e54362f444b57597846674a37494e386f0af98e5d15848e6e2348798e9abf71ea85bd2850feb29a05d46bf6e386a9fa7ba492658cfe055c08d92c955a79f996cf1d09"] + [0, 0, "444b4331010000000000009c000001bea6006a646174656b657963617001010250ac0da3c51aa9c0191dc83f6d7f965397037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004000581a200781b6f72672e6578616d706c652e6d7573742d756e6465727374616e6401016167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a7046726d45523941354b587768656c716863305576583141426e444f76392b52785575485973545545712f45496a7176574f565a747a4e6a4978654a737150500a464858694f5a6a49464f4d6a35687036626a4b4c65744364475474356c717a77462b6c33786e372b327568434476433741432f34434755755634714d7a6b6f5a0a77753055494630794653684c6951656b394a3361334852697273626f6557693648634f34506343467371300a2d2d2d204154616e516770344e7a614a6535344a2b57725673472b364f767172516e765a41586d742b7564546655410aaa8009a0d36ca25a2239a80f08981817e6fed49f739f1c9196d00b9527ac59094b8b55cabdd66b11c59939b9f192c0313a2aec74e76ea2c2c644e8b88d13b2acc7eeb475f704a0a274dff497cd69833571dbb4b5294e55571ae9834305f3c816a44aea56b1db81f7285f680df2f5547b1b78cc458eee0b4f464ab16167652d656e6372797074696f6e2e6f72672f76310a2d3e205832353531392057734a6b65365a58753159582f7a36442f414f477a67655a7830543934615976585376306551656a5344380a6c6d5873462b4f465a4957302b6c50774c39586134395364756c63666d2f44742f416b526c336a4673584d0a2d2d2d2057646d36364933474972596c323655594c4e57314b73737663412f33334a6b4f45464b4e566a79366b2b340a98c20fbb4cd9ef22576120e7e9fc1da8a2af8dc90bfe8a6c1e7573183b7bdaafa6cc329031f94b8da482a1fd29618e3f48"] ] }, "release": { @@ -931,7 +931,7 @@ "spec": false, "dkc": { "edits": [ - [0, 0, "444b43310100000000000079000001e1a5006a646174656b657963617001010250fe4642a48817441a59752c6ddfcaf52a037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a6d47337473504c7759564a4a364e446d634a4546436b392b325a764d477947732f30505461324842774a6d32506a667064474b32387056324b3251755069542f0a45556969766c6e2f347a336671706c67356832544f2f6252557a644a38463146344a333234774562626655626a6b6f44344e5a4e4674513950714f6f67766a7a0a424161356532443042307a4b74766638364b375a7536524f3543462b47776f4373727230436c3339654d730a2d2d2d2062585351797153613168494973624b49564e4650624e41554672345663757a46417730595631746e6b50450ad04ae72d83d84ae257b1451461fdb72ec89de974b9c9dfdd7356e376608d056b0cd6a9c39feac40045c8e5541a0c3d30228d8d381020aa3c475497c492ea6f8ab37f32505c5b1f50625c910082116fe224e1f4860b872517e55041e2f9240cf2ff39d5ea104e1a1958d9497c5e241d70ee980e73af62f4fb8847cf2374bd61f5f0e3b68b6c6afe83fae7d74bef2df1b7a0484a9c8d2395ed8e486d5567e66167652d656e6372797074696f6e2e6f72672f76310a2d3e2058323535313920456c67706471496e532f63765842564c5258434f71786c707a4c30664e764e2b594b552b6a736656566a340a3263474d39754c79784a354f37477643753753584649446c68697471424459626154786f677a5231632b6b0a2d2d2d204e72615a483079326c774576715a493751785848776f50666f706d514b344a4d365a4978545852785834450aca028d443b8048915916bb338e96de3842e7765ed90bfb8ea125ace7bcb05e71fabc19d7bdc561210c88d46adcb3fd6e8b"] + [0, 0, "444b43310100000000000079000001e1a5006a646174656b6579636170010102506946e5bb3f531636f39c35aaa686a627037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a724154457a304c782b557835787252456870717751683859374734437761437a3765483553315766486f78746646636d3257316c456b78654677436d6571735a0a424d69496578764665303870504e727041367a52596c4b653164596a6248366a6b6a5353784e684c483065316a5337526a61317a2f6c6a64347250306a57312b0a7252664d42397576347a5856383073326645454561594f454f69515939667a4258666e4941545a493262510a2d2d2d20625865366f543648656f524730676b64384f7047363346394450336a534b72452b726b4a44546c556e644d0a7abc6e9823d4012f01694a534e96de47a81bde8c670e10cd63a394b5ec9aadcb223756e8d7007f2dd90a26c117c384511caf8878aa9cca1b116e4087311bc2b4373c92263cc72d4e9acd77b36ef063ffcd21de534579d1b19e3a4f14d88be8a3ea793f2cff2c66b363c6a00a53e39b0a28f558b7a7dd26c4f2256dd4dd1af0371c200f2a37ff1e47f10ce2116ca7b592bb4776533989e4959853e63f62986167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139204552457179397738667348464e456d7554776a64797538663356436e6d6d2f2b534e4f30353273563341300a4c572f625a484633487377304563794d794c725947416e4c51304d745055567a79652b44747676396e57550a2d2d2d2068716f5039444d5853623742752f37714e6f704f624b3071707546496257794b30674556516d76753079770a962abfd95efdd0ffc1d94da0f7742d1f0243fb5ceeafc271fd8f1491074deb48cbfb48ed4e0c3b2725012659214233e05e"] ] }, "release": { @@ -950,7 +950,7 @@ "spec": false, "dkc": { "edits": [ - [0, 0, "444b433101000000000000a0000001bea6006a646174656b657963617001010250abca02675b1fe7d19a66802ff3b6c2dd037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004000581a300781b6f72672e6578616d706c652e6d7573742d756e6465727374616e64010102426b6f6167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a75502b416442592b7870786b6c6a525062326c674a424c4c4a2b4d386a316f2f502b31653349527956314a6d52394a4d56327136714b446f62717047703663700a42786467787a3059595967375862677a475741575972645a41706f473761727658717955656b4867445373644b504b4643667532654e425649452b432f412b680a2f76565359747a486c703661516a376f666663526d7542736e48513968687a54706c4363563345384963510a2d2d2d206c4a69696247715a34644442757a454e7a462f64476c41595a753544496f526c365179684145673461636b0a9cdb7fe6c5a2f869227dc1e388717d76d61393e86522cdc190bc743856be5c2b319855cd48bbda837728553b6adc74386b5919f1d5ac99f1c44b2f9952c4a28cf54b89317e82b6e6f53adade004fd9cd1c596fdf016128854b7c6d5598e12c85c254d4f7ce6bfe79a5b56751948c5bee687e7798997f4288a4cd236167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139204d44636636346d4c7a47423032536231392f78706575637851394a3941385a6b6b396d453271536a6330590a553045684743597665394e5751544c47615176304c726243367a493845727672434566574c4749644433410a2d2d2d205875422f45574662656f794a7a356d413857364b35664b39795a79425368444546394137746b6e396543300a395c678a98a7dfd7aaa913e9b684a2f60419336e8a3a6a10e88db9276c7ebaab6b6e52a2294a3cc5e830d9b5aa99b50890"] + [0, 0, "444b433101000000000000a0000001bea6006a646174656b6579636170010102509678dc7be79306cfdb99f5152e8dccec037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004000581a300781b6f72672e6578616d706c652e6d7573742d756e6465727374616e64010102426b6f6167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a696b7a4d70577a504b707875645234696e4847653370666f2b65332f592b73722b736543597879647450546152506177317a2b783137416a43642b49764c45680a41446e4d764974493834524a59516973496e6a74357062753246733171305470446b37666c5850686837744f3974585859502b4a7744773977625754644265560a505a754f714c6270725746417352696b413237586d7234354979537a376e57454254766d357772614c6a450a2d2d2d20583968566443684c42767344764b666f59765434394165586679454364317732346b4a334d546e50775a670a4b73526ea334b8e38695ca28c372651f018854024c7c766d5e4aae3870c8d5bc5293e29bdba2152709b7d7ff7dc6ae4354ea34d6310b95d8d698c1d6f7ace64b27e89b4d616577fe4a7d413bd82aaa9813301060faab93116a9271a325272d28bc629c508f2e7902b4c3d131a74493d51cc91323cac4dac6118ceb6167652d656e6372797074696f6e2e6f72672f76310a2d3e205832353531392054586f755a6e55717975446b6343344178786870456349633348584961524c35707a64673257565959484d0a50396a2b377431545a6d5a6a58556b58353238664162647558656f507a63567835595265666b76715349630a2d2d2d206e6b4d7a68584c2f38495a59364242595546673434724354746a4f734853514f5034683274493545354c300a49060ad0729e8bbb82f2e3fd4971baf03a3b726f384a3ff0354dbc47a14e9055f27c35f5e7c6922cc03a18ce912e5a2b3e"] ] }, "release": { @@ -976,7 +976,7 @@ "spec": false, "dkc": { "edits": [ - [0, 0, "444b43310100000000000079000001e5a5006a646174656b6579636170010102507c3c0bcb1c53370edeb09fc7a00df30d037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a6739486953774e4c38342f686e544f415a746a53434138484e784c5762456d2f326f79495638416172367255736575426e54427a3246574b70454c536f3053540a4244415a33473352323254353647657a306b6f2f6b30675a626878554e76457455525670676f45317448777865465a4438614e3639366c54756d5048686f6d350a5045704c734b74444465677a645842326b765166536436753859476f495842747236645a5a4668306847590a2d2d2d203746435438376e697a7a326863773866745a4d4a35314e3248336a717378523470537377617a6e41704a670a53a3c590c9e1832a645f2ec5348a4efde9bd18bbb11d82efb96d258cb0c9a92e1333407e622403a971d68e04abd5d724583cc28b6e89548c11c0524f35b294c1d93ee68b21e3128e63c6af8ae9442aaa5c74436d8fb7ae2d6b48bd5b67f1b495a6658e0ef36f52f9f46d0e9cb0241e9457fb190dd747f0c81068d7c25b77d523e68bf4972ce3259f489c4f4ed30170c70fb3fb9e67eaee5eefd15cfce13e1fe3f93f6167652d656e6372797074696f6e2e6f72672f76310a2d3e205832353531392059345355544337426a6c344239562f483043667a647a7478535145484979793048326d4b4c64413035426b0a3930457938764d56314e774333332f674b6157344e324d7874556f6c4c714d2b632f3162775a31397875770a2d2d2d206169624e576738766c6f57674c307a37656c4a3179475237494b6f6c2b41486272712f37345953615366380a116ff5faec36dc3ce211f2aec467b79fb39217da00ba25286cc220855bfc5429f95b06ea4f3ae396d7bf75b3faaa88f42c"] + [0, 0, "444b43310100000000000079000001e5a5006a646174656b657963617001010250150c4bed590fa8b69b37b24fe7449e74037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a70334d69537132514d6961786e7748714d634751642f48565241504a6d3949546b4e6477664d692b676768423944736d32576c364d51374c58325277665749590a435764752b36647a6763696d6475517243676c4d61725164654e6a486433513771624e6a4b73465a66414c583965447355544654704c656931734a7838596f6b0a64375832307557434b6f594d2f744f446c2f626542455255557864764d534b324945776c57434554317a770a2d2d2d203763532f66597a71484f322f426c616e6f4e437565594b665771584f573945316d7a2b5143577638654d6f0aeeb5fb7b4db2e6e42e6d3c200c696c6bdeb9504c65725280bf42774d5abe00fa34a86562a9888e0bd6d4942fdac56b4e66bac743dd201f6a73b13fe9def0d938eccd486b73dfb4c2caad35cdcdf0fd9936f4368a8e4ca4d22eda33bd9ed47d07ca8094eaa7c4fa95ef18b4794783b8b6e87b29beb7055fe05e9cebbe3c6cde8928e4b3cedbac127226aeeb9e5fadfe30c80a5cadfdda0e4ec1280349d5f1643fa1e76167652d656e6372797074696f6e2e6f72672f76310a2d3e205832353531392069586436427564694c4f792b3855366b7446665a5079434f4335534951503863774e6231773436423142670a496d6b2f69716f67336d5a586a4643395435345030626f556a56612f75466e66376a625033584a4a416f510a2d2d2d204e724f526555422f497545796375446f536a6f796838384e6c5341546e356674546d6b5535304d62676e6b0a15ea15cd7225a5a36f61cec1ed1939f0ffb0c535e413a6eac9c178e9baa6ee28ab677603b4ff666a83f360c9caa2b1bc53"] ] }, "release": { @@ -1260,7 +1260,7 @@ "spec": false, "dkc": { "edits": [ - [0, 0, "444b4331010000000000007900000286a5006a646174656b657963617001010250eba68e8138355246ac01d9911932042c037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a71444851786647764964397a4169354b76344e3735564d36302b5a64434e45446f5a68394e6a464f454d6a5a51625a6346536447664e653933777a374c376d2b0a416e5148624938317368384b4d4157782f2b333254736357637735584c526e72764447564e483042363254655049356434563157627971544463577849346f300a3830327442683663515a4537384a6933446e67656f4c65757459693263774a395966357078664e675462380a2d2d2d203330692f617771576866747a56564a3272445959303333374a754241724e7167316767554a3541737068770a58405e1215be567ddfea9fea50dc37a21bbe197d0bbd4196dc1043d9eb43320ca4e8b66a5b6620e1bb93f7d3a6bfb6de32b79b680895b91140e1db9484bc6f9aa023a88dedea23cf3bb871141903165e5e965921933658c0056bef6862e19bea2357c6236205b59be9b222841dd6d3fbc6ac8a0e72efbf39bc1ed6a197f1617ee005b8391c119631fec327df1239cd1401d959742af7ac7eda493d7689ae56ba82a4d1c6c0c2f64c92819f34bb35525c0a3ce122fc31cd8fd9dea81ca4871f6a068e8c9c79b3a6837bdaa9651217ada3d1cbf7d02eb7cf1631ec2688eea893f81439fcc11af68413a9c58d2c4a120dcc4ae999e7d0a993bb2a0c21ae7513515d53b35152cc5995a97650164c9eab0120b4be5f3645b061c1fed088839ed4691b997a214d95134c123db5b4f6d571e31647c518c97e5d9d11bed4a19e9e047b1907e1206167652d656e6372797074696f6e2e6f72672f76310a2d3e205832353531392032674f2f784a506139626e7370346e706830563741783652385648434a63526e4e645134357961687852340a6133426143304e33326c45456958487374494c4e54735531673256427a36775a5a79536c465546573142630a2d2d2d2069712f58645a6a61772f4254485a6e7749663077322f6872524b496c4a4c4753682b7847524d57437457490a08845c17518f84c3c169c3ed5449984d5c815efbb55890d2d6870a598bd2a951d99668c7e3c61fcc3e11c3df1fd6128ca5"] + [0, 0, "444b4331010000000000007900000286a5006a646174656b657963617001010250238e2912d6448dce358dec034cc73984037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a6f7a6b4942556462446f506f4e384449386b5a6b2b3152443053365a3275456752774f48327643764b66494470746331487530553370376f63466f72766352310a44545a37427847535541514f43333845744a734f577a4c676f6b307259316158692b7156714641426442686e784638646c646a4f303562562f67784c693163470a56303545306d7631354d3456396b506948436c69733773766e537a70647961692b7a3132492f68766e56450a2d2d2d20544d77356e5863794e4b6e5864307a66425541587041784d4c70464737415758382b3034374b537853746b0a53271f0f3c6804b29c8c0eaa94a2a8f07614ba1fefdf7ea874dc22c4d52460b845f85001c3c8f5552624376736787f68d618502b4734ca836d1c1edd57f505a9f69c46e59b56505091758a69f73cef35cf1a396274cbfeed30ba1f4603d4dc93a1fa8bd349705fb8a77f9d0ce78f27aa440b66cb31121c6f371f51a97362c68e33bb9054092eafb0785d1ccd8e1ae22f1cb019145a03e20c8cce849c6de0305fa8ccd32f0e93736fe1a53023b16f77250b8ed1e59fdcbce13bfca0d0254083660986fc703b86e1e7bde4522ad9a892662519114a53cdbc968c5fd01a5fe3b78d1ee6977b4b3362e9d6e8aae7ba63cab256a2ea18f0bfef75ebd350de869ab11e9a4ab3c897a1eefdd2b950778c0b7941015af5488e47e472aae0744c751b1823f7d6f923f2e27dffbd4c6e69542ad73a9b75c6d32a4170e4a0099bca1fdb65b2159e4d6167652d656e6372797074696f6e2e6f72672f76310a2d3e2058323535313920567a7161575a2b505844334658513071676b78687873635a536344396d2f765a51317867356d6d474f77770a5167335a7672435375757336676d554663356b7a366f776b506971457853496b70654c6b4471432f7947340a2d2d2d202f49442f4e304a7a4e48512f4e7043776d642f75354f68764242646d61544a4a5a352b315a6e66575541410ad35f0213c77497d92a8fb2e5f34b6e9fe1ab97e1508449ed20985a3fc775153b0fac0aaa2b4cb43e9eee51a42db0f5031f"] ] }, "release": { @@ -1279,7 +1279,7 @@ "spec": false, "dkc": { "edits": [ - [0, 0, "444b43310100000000000079000001bea5006a646174656b65796361700101025057eacaff7bc9814a98046c4c68ca468d037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004016167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a6c78796337346f6b4e3338796255486e796f7548345a585044626a365867474a4e69713968585838575851387a555855335349772b504c687a4c705a386a76730a443778382b3054764537584f38424e6b7365342f34476b72534d346a59724b377431494f6a627070754249696d3352394674692b2f61724b2b76486d51414d740a4b4873384a7a4d58744a53683773334e4a31344a3377726345564c564941303637305061594668652b61300a2d2d2d206b7454684f63646130563553374f5938644a767a746f30304d4b74786a7a724539612b69352b524a3578550a410f1bf2f34fa60a13c27607991777b928180c9cadca7d845f36a931eed847b56ebc12d1363493a794e5e7c1a6c552d30d0414900576c82578a0435aacf48b40ec10ed7f35e1efda3e210fafa365e78c1aa2917cc7dfba2846ff40ffabeaf0640a8910449409d77570178880e7f7e5563e1922e37aa3e0e46a9f626167652d656e6372797074696f6e2e6f72672f76310a2d3e2058323535313920594d444c6f705051466c73425a507466564f4a31374e38556e764656492b6d64564d32472b5563643847410a50533370574f3633304f6e526a7030682f614e564e492f4b4b5836436f3832626554753856366c377076300a2d2d2d20686658517378423864364c4d506b63456d3254754d75776d725042437248715555697270594e70666a6f6f0a4262ed452b397e38cb5f4f4280f9ceea7fff2bce2dfebe440ebb89f5e53a8469f22933a717e199942022ceb130766ce362"] + [0, 0, "444b43310100000000000079000001bea5006a646174656b657963617001010250a44c9b18fda29aea727f5398ecf967ce037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004016167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a6c63594b7261596b51354e557a47317754473534504f723451564551544f33776f724e686c473958763548644a392f586e616a632b38763861475754727859430a47433451544e46326470686859426a786c584759342f626933462f44652f51387a6b326f6a505943614b4f64686b315162713536735a70462b553734425631690a6853376b3068665875307a56784a793730383362525a47514255646d51327770786d374f5175347150426b0a2d2d2d206b4f56306272485667747469364b37386957305463794635304e4c30734e5a674c43596c554458737833410afaff86b4cfe31e63c8a8b360650b864a7fcba198d55b30a3524c9370c874831599108ba46272731fec572558bee41ca296eccea63765fc76edb94faedf7ae2764864d8407f5533c89d66f50eb85976a984dce0183e12bf1fd44495dc6eab3d0a97dcee74ffefdc030bcead0c91e75bd356195a93f581aef95b7fab6167652d656e6372797074696f6e2e6f72672f76310a2d3e2058323535313920747151414b6973347757355a374a57314647446135685a78695642565854756e34696877425175496179630a316d4f4a30652b5439454f53333271587272766e3458614c745a4a34537870764c4f6136614431357379300a2d2d2d20314a6f555851314a43536a767730747851776d58566a6851715356743079546d57426a447564496b6c6b6f0abc50d7be64019eff475ba9913433030b11f821ae0258d42799a9c91e9ec959d7be1a2650e9375e4d8a58ef9cfced9b725b"] ] }, "identities": [ @@ -1301,7 +1301,7 @@ "spec": false, "dkc": { "edits": [ - [0, 0, "444b43310100000000000079000002e8a5006a646174656b65796361700101025065cb0d1fc1c72d136707c2285d34d602037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004016167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a696a34504775343173586c755a2b7943614c7743516f34357438517565687936694a384b527854703349324461486136626b6261585367675073776a687041610a416e756949674f5a6d6f36384249667a75347a6c412b6e57717a537745754d4242703636326d5339436a4f58663038483758656271464c3464367562524244320a797247517768417a484f42386d4a4f6d4f77596230466132726f7861512b2f66586a6d5944723053386a4d0a2d2d2d202b367a795958676b686a4a59484c454d746a4b70683571456c43486b716465346b62636d375639654458380aa9cd9c84e7cfac5bbd3d3b7894da6e579c56b720c7bd6de0c59e41e8cfdd0340d4045b285513107bc3247e6a5e2e54df7e1b96560de030f2af33d772d0ece5eae89681f26193bdfb066570af4d61708bb3461095cf57f5015a24dc21980bf0c0acc9bc3ea234ff9bf5b36ecdd78e78ac14528549d4a095063ee2b032fda952f48a4114e3b5313a8cb6f8150295ee1a275cd67897a57150a0c1c04c0ce56e5ee7ed5a4f4d0adfa203bf9adcecb8a1a94bd079d0a5d2080608a3181dedfe789c4c82001276066c849042a9cc7b286f2cbc2966fc196a43f13a3f8a5526f45e49d55189f831f1c5e1e14f78baa7eba6584ab6a0bde54bbc549541b6743d87a701a6b596940923a52861c4292fcd7e2ba081aa3a3277834df696aa80f012a08b535ccf185b3f38b2a889a0b67adf212af660f56e4444098ef3d9f0246566106f155f0b363a99c13af732d31707665cb70706b7c04ff8679f19db77683927443cb442cdeecb970775185e6f4d35e47e6adb764bc6d997f9c264133cf457b2b3abd01cb7cd0e4dcea0d71c7b24dab09611e8d59a8620c864af749e74b847306f3f55ce3a8d126f6e6167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139206d4a64704730666b3134764767337853556c445665645a7152644a497735694576693866484e466b5a52630a3065496e4f4f53792b30476d78515746506b335333344845685061734c696e4d4974456435456e6f5a336b0a2d2d2d206277344d34446a4459715879686553704f70314f746e6a344a4f363375574643657a3743315470635a47550a3ad4815c963d290c955dddc03d99ed4fda4a45acefe13c99efb5cc2dcc935641e7431274273aa210bcc8a44f0fa77c35fe"] + [0, 0, "444b43310100000000000079000002e8a5006a646174656b6579636170010102501d983beefec16c1a312696440735330c037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004016167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a69446a755a45755974753163303752634756664f65366a6230485378364c664b3933597778386f424e53665352635061332b4758683437716f32627a317355670a476572634a6875506856674b76795137386652465a714339643051534a4546494b6f4f543946596534383164696d76567468325a6d4f733969424469716532490a364f37444445625a36676b4546396f4150784736526578544246664f7748413248507136464d444a7673550a2d2d2d20324d7a364b314a487767506c2b474c74624866484544446735426e46366e424e546d4561616464562b59510a27cb3d15dbe289a224a6dd80ceb66efb4dc6fb517f7e53f585c5e4c93c900989c84ad7c41ceaf9e537af3ed0ce6882a671cd6a840055e9a6ca7df08aa1fa21b1abc2b96624c2cfd748da69b63101ae8e37cca2430725a66645e11ee9f791ea2e633513a1ad37903654e2682043c47f919b2625247a3855519e2cb01192b0b8018a6d7913ee415b54ed4431d2a8de56e8871dce625189d254de34a290091babd44d59271e9e4943fafb56b56758a09e79e27e311261f572be56a59ed24dce10622306a7d2257f8f7cc30d0e1830fd6e2e2313246a608288eab1feae61e1840defe7adf23f925a55689c3a5dbcbef720ed653ec07819af71819ba163dc4a0c71f3f20a54479575f1cdc39c60d5e4a1dc0e18703bff878e311881c1106c27fb40050efd36174ecdf932a23849355ca31a2bcdef7ac522c3bb96e57d7c99dfd38ccd13934d01022b3626f753104652aac296586f02860707873650962cd3f54526969537aef2dfcd03ed0c0c54376f3fd2af298b6b7b7c6289deee061c76517f36b739e5f279bce68d9debc1d977bfbeb604e447c9dd4c75e590fa5ac4e315f8ccd0f4cdd6a02d6167652d656e6372797074696f6e2e6f72672f76310a2d3e205832353531392066524965746e724667663776656456524c47384d746e32444e74707655445a36334755396b5737764d77510a3341357939422b762f594653643250316e7570634467714f7471384b675a3571667869665a6e306244716b0a2d2d2d2054333453676e56766a4e554a4a4e6e3555644855457346394b45774f4c4d3846625a4379622b4d77337a300a2876bbc497d30aad89b7a398c450b2ec4379051454812064220876920857c12b6bb9879ecd56878524050dac76ec3d8bd6"] ] }, "identities": [ @@ -1323,7 +1323,7 @@ "spec": true, "dkc": { "edits": [ - [0, 0, "444b43310200000000000079000001caa5006a646174656b657963617001010250c8cfc53d45c879da916edddf71f3bddd037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a6b656b454639304a4f4d42577a482f5a423659377833734e507a67657239652f6372326e39664e4435484e78413737335244696b313248386435684f494275710a4258524f494c544d6c68717268533569337735635672572f657877684233786151467a3238497a4c4f45525a78753733626a764f395136546439474c4a6a46590a7236765253534c4d515a73754355436f4673386d6d54497068742b76484f6f6f59456f2f6c593261702b4d0a2d2d2d20366775632b59383659546c332f565a456a49784d563734626e6a5162432b68555a335a683149397a4f63590aba78f76d8c46510923279837319ca4da795ff50969ba6c42c3d2b1016f73d19eeb18072dacdd1a82e51ef3826da652e7d4fe10f67b49c972076a54b99b2c3f71d24f1058b9e0e850191ec8aabe3b859bb91c7cec684587ee8489aaae5f1541209077e02915c7b612afc609708ed16bfa1b44e429d8bf587e7979b3b484cd9bdaa7fa8e70d732f86167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139205455765a74436b5343347579546c68554e3957547037616b4547435771434a38525666324d764663466e380a4a6e426c4e57366b4c563366453775535333617347446a6e6a34384c374763484d494c4d466e30335774590a2d2d2d204d58484371435442755151662b63657a4b7656427247334f652f776d7557464543457641525a33666965730a469b5531efc2e60ba2e9ca5b79f6707a8fc21a8e7b4b30d35dafe591620f97738f65ee136cb794ea861fee4e355663dc7aba867a1d589de1c70ce01130c3913a21d8e0fded6031c39c18bee50a398822f7c158ba056d9cdc9ec3aabdf3dfde811650f700360b5ad90bad271b17501d661d0d1799b9bc2140312ede8fee194b1c6b516cde97587011cc69ac19b9ad9d1f16113d4930fcda1299b783ee0d15c9ca538be7f8ecc43c296d13fef4d4740ac34c631837580ef8871a92163574509e248d7919cebac2502899ab4098a046a7664984f962580d5953572e129874f28f1ed6f8bf44f46fb06cca5e995acf6fef20c706e5042e36a23d7c2a301ee1b5eb0fbae0a33c74b6120d08704fd856db0816041674f2ffeac3dec052dad43be2949d"] + [0, 0, "444b43310200000000000079000001caa5006a646174656b657963617001010250c8cfc53d45c879da916edddf71f3bddd037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a747169434d6e35774a344853417548703361596c314e54686a4d67526934593737454c474d3058546c6c306852724e715745745a796d717032564778373748590a46676557557158705235686d7574674c676a61613561665462796e624437324c2b6e754d2f613835797452387841572b5a333936734d54384c2b772b487339480a306b453875366152727279384b6f4353525a6f32634656397767687a2b41336b574c596e42496a614448670a2d2d2d204348783455737050492b38457949444d41626f43304a36304f31447364785356306b716731626d344a526b0a20d9ca389ded14e028fc98ad637c8a95fd0c3ebadbdf395c93b98d3a0a9914d9ab07bcd0b7a64a4f349d9d7d999d6d13b1d84ad4ad4024a1db6fec29c0e0eea1e9787f0a45cfd7ead1cb034e27ffc10b377486845de87d1a358b01ff690e1b48dc584d0b570fa38500e98cae61bb3fb0e38867a6bb6f4862f6caef9ec6be7d5ec50fd06ec90c6c6167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139206579636f762f6a55467a78377065625576534758746166306c7058466b71726f44416f49316e397535436f0a762f3244613867505973355a645a4368724459514f4a545543786373435435617759486c31792b38554c410a2d2d2d2064746c4f4f69556d304844384e4743517561484d663146413454327350425637636c795841686d4846626b0a6531c80ae76fa240364583de6b60c4705324a3fd1bd8c642dd14cebab8939e57b970526958d36b8a4516c0c9e0eed6c896d34809e368417446aafa99cb1ced91446985f9e862076395405c13da232e957096f066cad56feeae9b605e21131f39becfebedb8a54ab7395614ac45145d82e99ca395bb9b7b9841f12eeb4efd3a69666010a28f1722199a59196db2e7e2c9faef2eb3a4eb7aa9929862b87c257198fd1d34d9962fe900aa492613b71e5781298aa479289234157f042a7b6e7a1ed8e1aade69d89d16f9ee8dc2f4807b4f2712549f7b0b59f28a4da8a1dd6050c303f7d4817b878fde6a56b87bfece395984524937a38ce15fefe455891cae24c835bd8dc8ec2b5f03082901c23a0780135d5ef55a04b7c01067a4995ec5c6ab1695"] ] }, "release": { @@ -1342,7 +1342,7 @@ "spec": true, "dkc": { "edits": [ - [0, 0, "444b43310200000000000079000001caa5006a646174656b657963617001010250c8cfc53d45c879da916edddf71f3bddd037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a7042756e7061565a6d64544968414131704954704632797252584c67616d597872353146647a4d2f3955516d7776306c506f624f616f44503933787757486a740a41506f442b62626b434a5532324e61664d3957367a6a6a704a364c71385773423645387233456c6d7746434b373057597958756e7638426f30632b4b627731340a6d364f332f777967703971495a43496f534775304c427a5737435a673945394d315648322f684a7173476f0a2d2d2d20687979676a2f692b777347494f316b394a7652656574416a56774d34332f4e736a67704e6333434f6361670a5eecba56ad5b1b89b5795934b152d3c7a02b958b75c5d115516b01bab5a296cd7c83b956144f17be87fe38c445d05bd3cfd637cf8922286c13a9d2112e1451adaaefc9b21a1c52ffc45ab9338a1325d6344c84f56498e861a153c826f192e332d331dcfcc67596f80bbb64e9502f9c6b6c48c20547580f4f33940820c195ae5a1947cae2559d516167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139205455765a74436b5343347579546c68554e3957547037616b4547435771434a38525666324d764663466e380a4a6e426c4e57366b4c563366453775535333617347446a6e6a34384c374763484d494c4d466e30335774590a2d2d2d204d58484371435442755151662b63657a4b7656427247334f652f776d7557464543457641525a33666965730a469b5531efc2e60ba2e9ca5b79f6707a8fc21a8e7b4b30d35dafe591620f97738f65ee136cb794ea861fee4e355663dc7aba867a1d589de1c70ce01130c3913a21d8e0fded6031c39c18bee50a398822f7c158ba056d9cdc9ec3aabdf3dfde811650f700360b5ad90bad271b17501d661d0d1799b9bc2140312ede8fee194b1c6b516cde97587011cc69ac19b9ad9d1f16113d4930fcda1299b783ee0d15c9ca538be7f8ecc43c296d13fef4d4740ac34c631837580ef8871a92163574509e248d7919cebac2502899ab4098a046a7664984f962580d5953572e129874f28f1ed6f8bf44f46fb06cca5e995acf6fef20c706e5042e36a23d7c2a301ee1b5eb0fbae0a33c74b6120d08704fd856db0816041674f2ffeac3dec052dad43be2949d"] + [0, 0, "444b43310200000000000079000001caa5006a646174656b657963617001010250c8cfc53d45c879da916edddf71f3bddd037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a7042756e7061565a6d64544968414131704954704632797252584c67616d597872353146647a4d2f3955516d7776306c506f624f616f44503933787757486a740a41506f442b62626b434a5532324e61664d3957367a6a6a704a364c71385773423645387233456c6d7746434b373057597958756e7638426f30632b4b627731340a6d364f332f777967703971495a43496f534775304c427a5737435a673945394d315648322f684a7173476f0a2d2d2d20687979676a2f692b777347494f316b394a7652656574416a56774d34332f4e736a67704e6333434f6361670a5eecba56ad5b1b89b5795934b152d3c7a02b958b75c5d115516b01bab5a296cd7c83b956144f17be87fe38c445d05bd3cfd637cf8922286c13a9d2112e1451adaaefc9b21a1c52ffc45ab9338a1325d6344c84f56498e861a153c826f192e332d331dcfcc67596f80bbb64e9502f9c6b6c48c20547580f4f33940820c195ae5a1947cae2559d516167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139206579636f762f6a55467a78377065625576534758746166306c7058466b71726f44416f49316e397535436f0a762f3244613867505973355a645a4368724459514f4a545543786373435435617759486c31792b38554c410a2d2d2d2064746c4f4f69556d304844384e4743517561484d663146413454327350425637636c795841686d4846626b0a6531c80ae76fa240364583de6b60c4705324a3fd1bd8c642dd14cebab8939e57b970526958d36b8a4516c0c9e0eed6c896d34809e368417446aafa99cb1ced91446985f9e862076395405c13da232e957096f066cad56feeae9b605e21131f39becfebedb8a54ab7395614ac45145d82e99ca395bb9b7b9841f12eeb4efd3a69666010a28f1722199a59196db2e7e2c9faef2eb3a4eb7aa9929862b87c257198fd1d34d9962fe900aa492613b71e5781298aa479289234157f042a7b6e7a1ed8e1aade69d89d16f9ee8dc2f4807b4f2712549f7b0b59f28a4da8a1dd6050c303f7d4817b878fde6a56b87bfece395984524937a38ce15fefe455891cae24c835bd8dc8ec2b5f03082901c23a0780135d5ef55a04b7c01067a4995ec5c6ab1695"] ] }, "release": { @@ -1627,7 +1627,7 @@ "spec": true, "dkc": { "edits": [ - [0, 0, "444b433102000000000000790000022ca5006a646174656b6579636170010102507d965df193d494fde4ee98c20f4465c3037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a6b365641313277544a4f744679425a7a5a2b7a774d704a697735787955446c4a4c73564b62644739465879716a34766a6a69542b5376524a507a78424c2f6d680a464a2b6c4e666c6957726e55756271736139586e7959585562484b64416648654d39383064573772774b7a503877694e41714b67437848486a6f575549524a6a0a64564671514e57493433766968643775696d684f62726d65616254336c575652726e5761686166446266550a2d3e20583235353139205a76385075384a465a5a48636749692b6f4b573671384a496250484b4a645270594646556b62685244546f0a67304b646572587a435545676b503168627169696d5a4c6c6e4e706b763136717576777042536e446842450a2d2d2d206c564f72355a4c74624e707662413670317a6a686a385055512f3538593876716b687431456241586e71550a1cc8cea5a51dee728945c44dbb55f5cc6d7bc34ef07cf389224c753065d502a7e86e68396bf5ba7e68310f58988ebfde618c633ea2a09623feb08c2e3eb3b89b46aae5b611a8814df7214f2b5eb73c316c618d466b0735c40086a36df23a12c52b8c774907c4cce86803ba2a9a65ad40d507f5673115629f2e2ecb90e6ff2de9f97feeb06adeb86167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139204674785a4c434f68794c504d686565502f4c556d7632395572544978484f724f32754c6e484576712f54730a33446e7855424a675950697441624c7a754b3167756a41355a576b39676563523458636f415662776451300a2d2d2d2065446241336d5657312b46355457483467727833472f497a554357566669417138627135416a4f386231670af172099346600583f15edbbf24840f56f3d5441129772e44978c99f139ba6898109c5e86229e21283f25f4f7f5ffbfba815153ff2d78a5b2cdfb8edd933db2b07db2b64db04a07261e9a2a4db71a9898dcfe0b6bf75623a3462233a5998367a2c0979c5e5cfee9733a02a68609b74995c487f33196d054c0cf4d80c8028820e21d0d3d41f796c05d5828999c33f93c5bd20d4f2a782bb734abcaf8e2653eb429dfd305e5d68de4290b3e645022af501e389ed821f80f0656c22074571132552ebe3572889d6cf84d393257c09ec466743b3085f9a078540a292c4dee3d823ee7a8ee0c0276055a11e599359e996e95ea07d12e315f4147351b58019e653647367422ed8a934beb1261ea0d2bc4ad4555efbd0aac40adea788495ff24800f3bb6"] + [0, 0, "444b433102000000000000790000022ca5006a646174656b6579636170010102509667d509fc51ccede898d232ce74d47f037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a6f7730745778654453483335466a5645596669326357644148314d5571524a4e42662b4f674f55302f44356845453548546c4f6f79382b3357394b7a624f764a0a4564484e484b4e5958477537384e46614c744a5a6856616e6a324f374f427076743645346450525a62764d5732702f527535707662796c664d31464133534c540a4845562b7248656a677343436e5872634b4438534d626b62624750356153755479327669354b635961346f0a2d3e205832353531392051755a35655a7173507353436541774a6d2f5a366554534c4c356d617854524f512b7952695647446868490a686b2f4352324d6155742b6449483377524344644b4b4962615044355141503076704e4a584350327266550a2d2d2d204e354d6145445a676d4d4475346d546c6a5544454e74756a356977632f72544138394d477156426a484a380af5a609b3e1c6c07c495009ef8ab8be3b1a40624c44501693d249c61c44a90e75afbc4a61e8a178a642072ba9e159655b290668e9758ee39aa32dec8cb6ad9c69d30ae510acbce156cb41cdae9ded15f14c49c88bb0285ae754fcd5c28ff60e9b00829421a472f4afe094e32193d13fa778eaafe6f4c4e68292e0e7fb30a6b7125d82bbe133a5426167652d656e6372797074696f6e2e6f72672f76310a2d3e205832353531392046506762587a524e4c6458545332544d2b44566b33322b326b734643746b69636457774958737a704f67450a717765706f71434569463532484b6e534b3776306379744e547956615879423654316b7270573372664e300a2d2d2d204b6a6a4678647847664e486b364669427a3245394b756c693530337030445833714d3536674e4b2b7762300a3363ec5bcf70c969c5a42574d0398610b451fd550e4bfe06d7c5991423f1de59208316847e91d902bb42e2dd6e40ca2af922ee0fe19b231b7ce2713a557ddc7ba7312e7525294eefda6368299ba57164a30c1bc9de72b1a86c675858b9f0b367dbd9e3b63640f5b2cae0405b751f30e24a664706f9d4e617e166dab34cc948605463ac930dac800b882f36aeb82dd26032031cae611d07299a0cca510f7282738e1ab504b9bc03e457e7b39ed14b6d1940ad2268b58d97d9de26eda8817cee478b6b25c682b30d9afbaa8fb31754275ba1137fc4cdfbc7ca8de64e6f807a192484f96bc46c1145eb6d642b5f820ab15689a43ab9be9e93044846520dccc4fc6d35bae408de5b2164c1e04d7394cd43e6540936e7548a42916995331b913d8f6d"] ] }, "release": { @@ -1646,7 +1646,7 @@ "spec": true, "dkc": { "edits": [ - [0, 0, "444b43310200000000000079000001caa5006a646174656b657963617001010250b95e3e9843b73c6316dfca167b6a0515037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a6b6c335773644b364e75615039354f43756d7431396e61636f323764596f4e632b4752527438445756736a6e4e6f70414f5876552b7838302b2b3366444537370a41547a4f45655a4f70706f2f7448466733717367786e63706f5475557039486c5654644d766b725a42634d7631484347772f3961324f474e54517851315364550a47424444565356724b727a66714c78764131714f62507131566e42744f322f765257774b66554538335a510a2d2d2d20536654655078535a714a59666b36335a3453732b654d32354b4b414a2b2b5a5a6634754141557133394a490a5c5688c7b3dab00a78585607ac15ce2ae5650a73fc3a9ea33b2065c684b8a5e9e8d29de2c95570993f2ca577e72b44ff93d56d236e3538d2f23678191f28fb106c45953b059af7541d64067d143a8b02087faf290cd704ef0a05e89a652b73e255575d3540955c81ac5b0efafff22fb73b85dd4c0de9a596c9ecad5ecf35f2339e3c6aec52629d6167652d656e6372797074696f6e2e6f72672f76310a2d3e205832353531392046657039356c66327a655077783970726a646c563069796b746176524b43486849555a74467861314d6b340a7958776778686d656e7477506a706c4d677079776379474b594d2b5a622f57764c6d426f4f436a4f4b6d550a2d3e20583235353139204350636165716e7963624f76524434654c455733436134335a476555304a34583956505a6135574a5a69730a774d566f4e3654425946456f423273325a635539314341765852536f744374553031626b4d39644458444d0a2d2d2d2062576f44514f476c552f3157446145577366646a557a712b6c6834595075792b484b5663596d4b79322b510a99c9cb8ecbbd5498e783e17e9abbad26e5a647d0b2cab86560fefa2efac640a21a6de5152cdb19f4a54fd8956a2d2829aab5941bac1211ee5111839483d1255bda15c58fefb68124bdea126c6ff639fe80da29589b9a727df5ac7e2a5d62f9b90a431a9a333d64e4ab3d5ea690d3c27002d02b64cae39c9fa50e25aadf1beadb43ff35b73ae636baf697ed6a4d96eb718592a3152651c6e57aef7adc8b7f94d54847ddf87986fd08c7153161804295e730111a21a9a2e74d5a2cb5abe47091c81b47cfda46287b3e0fa45b788d3d3636154ec7627909f2705b3ead28b789f1f1e355ba9369d81b5234382603c1f2f85918f0c67b1548ac106753ddf14bfc0a46d8da23a061388aba9c8059c225a996d1338c4e2f9aa44f80718c78a9de80bb9c"] + [0, 0, "444b43310200000000000079000001caa5006a646174656b6579636170010102504938a3c96f0d6e9a5e0d81dc533705c2037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a71383353427754574f644e414b56714664452f396b7a455145527731414f6d355544536d704478734f306546526f47762b4e325139514f766e714849346356480a4362504a4f5974696a39734f32565034307578615167755552796471422b4f656761635837763350792f6751386646555a64736c55304d6e447558344f5934680a784a50536f7577426155436c38524a6c68487851516144396752677874713234354b304c793731315831630a2d2d2d204b596857444f5639465145515777516c7a6f6f78557478487546476751375476372b39475067632f504b490afe9c3c063fb3524d534637f2d690a45654a0bb5e8ef32f21b48be6c7e07bc93afec5622bef34118cfbe8350c92b7f8d51b748e4c897337fd5634cf315896d79fe6436be333dbd0f0f0e575f8e30fb9891c23496c93fb6bfc9a476360eb14be58aa598968f18054502769a2178172653865596c4964300a22b667017996af7b263d2e85f42f2b4a6167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139204837302b3341595570564d37794b756c34424279662f793547306a322f675362534e4e5473747148327a770a4c5947344136624c362f5454365378726d58355a4f31636c35574e7154424d4f7235384833675241775a450a2d3e2058323535313920754e61645761433059427a447a49626454664b3950584a4d6c5536564766725a4741685379694e317277300a486368726f6b6968454567506d6d4e5443776273726e31526741492b6b7158397551455178356a382b77630a2d2d2d2073596d44496b356855706b315a392f366c4f6146596b686849304954644348757a504d3777524267304f380a99a11cc1dd687dd7284048468cb9d4e39aa1f66d8cc162907ffc7376497f87c12206cc2fa115c64016fc7698d3f619d9db3fe99a93bf67d8180f0e61bdc2f4baa584548a6285f2c00d2eff7fe1239e595c3da69c5acc7e2375ad5b9a1f27d05c666f9d74083ed8e21a8590ee14275bb3416033eaf49aa8b5e3d8bc8be7c913a946410b07abd4216d9c4235b7c85355f17b6858372155964d1be8c60159ee7c1dc6e943ef0a69e837e31f586b595eb081ce83cd8ff132d213a35082ca82e30c7a95b5816f6a1184ba1e2a35353288435b08dfea1637d764ad391613aa37aa9c30748aec83b48dd99d690ac3024b2469edd4e05712b7eb4fbd5bbe871b116f72148a55c87e266b51f948e5954e37b839f6e32c77aaad8f884c52ef8553a6067bb7"] ] }, "release": { @@ -1665,7 +1665,7 @@ "spec": true, "dkc": { "edits": [ - [0, 0, "444b433102000000000000790000083ea5006a646174656b6579636170010102507101efd33d947a5f5c312d8b4f20b80d037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004016167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a7075795968655144322f4c776b4d5150353451696d4459396b41556431544d67475a56513231704f5a4f77484d4a576a665848624c3043696464494a7a4a69360a45516c7656746a667a446e6b33374e4a5661386c445635485974516862546a65774b6f59706c413674597962647377477966626352424d4633527454344955300a73525a6f2b5a486f336d4659592b39645a5971596334424d334d624c3441774f472f466d515574686e34510a2d2d2d207435556a545554304e46354365664f3633755a437844612f5441584938366f416e6c38596a3274644458670a3b1c80bd2304bc673d6f2edd941c69cde8b5897def30e3d36c440d64d3c72236dc5fd04ca932daf26ad70efe2f7a319b31bae8780fb87a5605812de8e650d202cb77a9aecd1089b645eed51945cdf6a84e6db88404d7f232e38d4469d7e0813e5333e21564c5ea777d3eea0200459d0fcb647461d5ae47fa30a375cfa9c720a713533586b55a7ef547110f853cb845ebbfb807023537752b6f69e5e34818674f331cfa54bd9aa5d1710af7f71ef970e2ae11a12e4c9598724cdd7f8409b33dd8d3523767948d0ff3dc906dd138977eff8677c50cb32a632a2654e18f30c92c302dbe18b61dda1fceffaf6f2e21fe05314ac6ac98836294e16584f67124ff7a1d0ace79aa96832cb4aa5c488160a41a9b4159fda552fe172be6c8e71b57870c41630e90008b24dabc5cbf3532265ee39647e0580a3c302ee53e1877cf328e6e567493681b7b1067b70d78893198af4679f7f65a24cab69e11a4ac8044b4b8bb69eedb3d3ae49a2f1711b59dd0620095942fdcaaca816a3929382b1afb5daec96aaf54a252e65d90255e063d4af36a9a391a9078b464980cf2c9f981b207f9b0c28052e47e283e70ee90b6506e2ad4766408026015393e4c04a83c5cc598d5a68143dd049f9e32a6bd7415d985114328cd33e6dd01bb2a83cd6eca8011d5da74e2a8a575368cbaaa82542a44f8c876f43c812b5f3e3444f8994b10ab3e5f9db8481d5038e0d037de0ec0ece641a49aea6ddd82973ab433e8265ed8aa80c2f0bffd1b138be7e89ae4e735bf5ecad6042e26e9f050625958b11bac23333d4f3dad4e387bd4ac86a0d1cd267c39acfe6efee718c214337a076ba9e0834911accd474f2c81fed78b94964c65b6a5bbf04f4000bff8504d3300f372ed89a792a537d4c5c235b822fd102f4b59c8af59a416210dc5182737ccf23e2b5f6b0a18537c60893a88e22818ad33cc5a1b37c57612b3c999458eb1f518902e137f2ee6d44524df253178898690d8aa5f454c184d1d8d75389186bdf01468a38dd4c7307c4c3fe4448a92e82e812eb20ab1bf17859436b768a438fcc4e2a2f2d3ec05ae493ad46e171bf37dc0e6050763c9df0d1b0a6c638b21a01fa756063b3fb105b05fcb83555a0c2609c39f9ebb65846e156890cf83779f9bf83a25aade2e742a26cc3e2ded117ebea279d47be0f622cb205c76ea9b22560be5423737e135edfd9921f409d728b8d1dbbca9dbaf84e214e8e4db5633a404c05f4fde3916fe11175aef9b3668a51cd32746d8cf362041d2ecaca49299465c160f048aa1f8dc706eab34517ed61de9b6053496a3b336417c6f46b16d365ffc9dac9f6cb73608bb039cc97899bc29702a6f0a23ebf7391ef114955ff2196a07e49e71de787c90a5309c56a05c8d48e6045c3707f5d386e5a7d913fbc56140a6f48fe9eda2c827426fab163b03573862ddabca76b07ff366d0452701969f713f0b1bab70e10be82c8e6866797b255fcd77811d217d4ed2c0c61030d2b3a80ecbe261e5627aedf915d6217ba382afb11007bd7c39439796fa32971e31694b7f9037141e0c71406c128bb72a67dc57dc870f3e957dfe1ccc7468a21c388e4501287b72266c2cb263746ca5c8f451433f040b416eaa7e46c3e5c21312f3ca8208410ed0604fe5ebe7d74b41c0edd7c0b6c42ba00ff147572cd29f0651e7076890e22b6c9942dfdd8bf3b1e60c102ca0957dd8afb65ebdd950daed16ebc0f4c76287115a52530f0a1b1b226fdfa581b3f512a95a9e2ed84162e04803eb07a304872262d382d155939fe97f41a00ea3b190c95729fd255f7316136eb9aa395cc797ba0b8de59c955772072787f3e7cdadc6723cc6369fa4b21c060537221007353110c32a12698f31020398b650613bfee2121ee77bf6ba4f38d7ea08d22716dcb16cafae957b748c89b7e55677791b946fa1f1f5f182bd761e90b77cb99f3920b8e737f58de2cc8204942ccf14155f673092c495507dfccf0d9785cad1aed168d825cfe13d858851dfb81dd6287cbcea171ecd0370f45741ed43ed384dfd442518b1b2bad864540cf24ff5dcf928df1ddc1f43ea45a6b559aac8dbbb902738bcebb84349773465bfe5f8e70363182c836d822c933ee120f758dc72ca210f4b805615b86977394d9563b7761e17d2389158ad4e33934861812393202451eb85fe4146edb60328c393dd4da9d50471a81ace01f683d796179c398a649a93c91cbe1c93aab01a0d4324f3b51067560819ad08c4b47fc34920fb6c6a1936d5b63bbff08418ad8c7ce6ded42e1313f749f74e8652590c119965d9cd4c8d24e5cf4ae65273cc015e657e15fcd1bcc4be8d33f6af986a0c53b1aed4dc82bbb0a4b616739aa5455b9cf9158330a32624aa8e3b1f0b4a37f947228b094a772cfbc7945630cc402e70fc14ee53bf2c7cb15b0b2368ae1e26acc167fbe01d7cf05697a7fa306e33a37c6cf2770e2d45e08307b264e4f560acd968b5104570bf2c0fbf27259e23662cb51c02011a39830d6167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139205736566f6964786b5a63636f6e355158303831735036646c377846522f7468706e44516c4e6e42374b47300a536f4266436c34554e5649637a6c4579667063693679562b4156434f6375787741574b31627868325571630a2d2d2d204a794f4b673677334d666d74654a6b304e4455634a337a6b4b70706a77616851695757534279357836764d0a0e5d8fabd6ab24fef1774cf3dfd2e338a7f0bd5d0f6dd019c78a8271012ad078225c923b6af8f3c81c1567b12ee2ec8619aae06f19917bdc5cfb9d03d6cc6d6ec742e79807a05053a1adabf73a06bb6c28f42c98306efe8f2c3fbc05929a3bf6c98f87f68572bfdf712fca299937c4deaea77947caa95905b82dfa872cfa14c20fe91f4ede3a16f0d2bd3bfe4398946f36d6aff987032356ceced04f68c8ea1e15834333727ff914f378bdb04bd56c430f39283fa9d52823f6381a0f80a3d1fe63841b56d8c28b071e4ea5672250c283c4929e3287ca99bfb6dc0a978c3edc6187e13975c8cc852876c176328107f7f049cbb2d7410d417f8a8de3a09e1bd2cd342debb397d5984208091f24f27253ef41997e52ac9253b86c1b22fe4e7c6b5f"] + [0, 0, "444b433102000000000000790000083ea5006a646174656b6579636170010102504100a310fc7101779e8af7d1c91669c6037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004016167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a694e6735636b342f4a47463851452b346d623755676f2b65703161596e2f5477726d42356c6a4b4d353741424f6f694f374e68615a46682b72755736413268520a4277724b6e354643654f3141742b7733765334796d4f5073453638454b325a53584b4d61716b362f3872314f68516b6b794153334d43746f58726a646a5567660a674579353975796343303245694e62676c67306e4e4e7a5773464c72634c784270653567684b344b6937590a2d2d2d204135544b4b2b6844363969792f5a6d47624b713279466a773779786e52517352786865304b7a78416f53410ad25fbea9b049ad9675bdd188f80e551bc8fd6f8a9b2fd0e905580050955e10b6eb13ce037cde954db4a808e8f2fb54b29c9cbe7aee8b10dcbdf6af61e9c6168dee89b97080f49f5a84daeb7f8b512ebe8aa293b9df035a4ccce08cda049572edf697ce8e791b8acb0063ab4bc93bd2c9cb2532ac9f1f07aeaec622e6e012e9ae6c31fc3223aeb1edf1ade45a47be51b76946014d14b8f8123f3aa670283a204fd79f385a049e7a03e947a619a85d6074013229c51674071f6b9f1fe74524dcbcdf9edf228d4b346fa582fabf81170b469c573e05046572735eb25aafabf6a74275d4ff3d0a5d27715280cdc472d8f346e7d8c4a777cf0e31f2c35ce4c05aba7501988668719e14eeaa6c07478e602fa77c6303238c13c24bc4a5e60148d3019ff45549650e17aed05a47de04f6a775b12e84f351c874925626e0349184ed6fdea1ab34e5317a809cffa0bc872dca0b0c40755157fe506d3e75890ff860eced4f72c93516a44d91be605728f9dd649a478deea8f83c092445d4fe70e6ec7b080b6f8f98b37f6a39815ec514976c255f25fd37dfa52fe2d8c82919b9377355ffa1eb49191f91548cd95e3443b1caef4f43380d184d8bce2344c8fc1cd805a6947a34c4dc358aa30b9803613e6b6db50042062b5b204a61fdd4bfdb0a46daaea72ba79d79dca0f1d1575fd57c6f3e585350d324fef1be94f78c924b014378451cd669c47fa8efa2e3ac85a9ec310fbf4b1a6066e22bb18edb8e82908d134097ed1234b473b41dcd02c3ef485160364150052bd52ef4498e71dc72c8f32a3c624bdea53adf19a6df1a52edd29632db62208f6a37b78aaccf6198a43c9dd476ac22115a15a96ca0e3aa51a649ce6f424d50bf0bf5412461e6df2e730e3914373ae9dc1ac9bb313f754c24cb54a0f70e2637eaac94e34f10b0d5e887288faa36ed4cf4b8e62e06cbeded83f3efb9e83a5b7275c382b40b3afc29effaed9a266beb8545fb520b862b3b23d35e287d3b627d11978e531afe24d906ad6b13fa8c7a001f3d4461abfd1bfed49bd19820964d16d86e95e50764ea4d17d2c2a725b27936ddf579acd1184a9ff461c5f0fe16a443c44a4e46e75dd00895067514ea49856bbabb7c5840537daedcde487bfc1ebd6b75a5f5f9fb3a6bc91a9a261e8146f3bf125cd48d3768e0aa2d238e313c8fb24244642c8fab942eff7c90931bbff6a221f815b6230b8a4df95583cf6c3cb2e3c6664a6b20b508f6e2c700a30a2f80962185a894dbca51d1f4c919bf218bfba0c7d72203d90aa25215bcda43f56966bfd65f2c8e6d95f05eab3343ceadcbf7150110286f982c32cc66ab52c361c9dea05d6577da92e5e13b64b514c994b13b37522ae339f438e4a5071f97277a0d4b77889208c31985f02976dc59e68584bcebfb1062718235e891036f53997c976bd475622b6c0d02171a17c763280defbae80d2b95a271ce4c3b93184426134b9f44094ca9f4bd2fd1344bcab1562575052e5fbf948fe8b3898602ca8b357da687309d441a0e4ede014d6f0209aff4490bb45b82bd287acb5935ec391ce98e3aa88e567d7b7a84a4170956936778d2f3ebf373e8c8b43deb48be3f24233366af071ec604a78a288d18ab17f4e70b98b1827da019bbc29119124f260b0039dfd9b6e184a7e80988a12bb7862feabf5d2e0e849f7c67f49cbf20a752337b95e2ef6f48c1fce0c34d1a5cc383e475e2f71f452d5043e5eb9d6c2af94284c06d39b139f1ea3eb528f5ea9af52989c26e545cc575da4682ba7e6fd3af38cce466993e312881735bce4ae851b0c6a8a185139faac9ce86355a85e12e249c46a947b9a6f03d00d8396608480c8ae4b03233bca1e7f5b186bf373ab748e2d738de36f215efbf5dd98b5d65d60a3979a569c3f2ddfe6e170000967ed2b1cc7b9def3f9a5cf8d418ff75c110a0930df801a052e439e6d456904f6828812e5e26f14b22a4563512dbd1e5ae7e0b9a42510dc6a7c41c3d87d770d7c55840fba790c29f3fdabd7eb4c6bf1d41bbe0eb1bcd9eef0d859f139157c0ad6572e991c6174a5461208c4b898840ec035668ac7bfcd6e36dd01713d0232c89ffcd870c54ef6b8bca7fbeec8c6b089baaeb5b1a6c5e944406923569ee2f87eb41dc0378990167b632e87606ed9d3053fa5aa680b0c450b4e9c3403acc95365efbb5374360f254ad0a50e7ed1e7e23485dc6f6490456a3ff4f3d7f2f8b0d6decf33b824bc045a0b452b200f4665bb544cf031f3c0debfaf74c78357e95e7f2bb48f16215e4f971003f61e7ffca956815c13dc5090f018a8c176114e3c7c62f63ec5ac1e00391df4b33cb688531a1a677ebe813cce76f9640197a431b003e03a55d6956c896518364a19e80d6f878ff5891b466ad539a5f847bff2f9b2d5a03ce2d4a7f20678af1200d17097e77b2294eab68ca76fcf9cbaf4ae245c28428ccfd8229c361b9c5c1c46594c91d48778faee8d71313fb593c9a18d54ea508fc1be48b92cda430ab1554da387c6167652d656e6372797074696f6e2e6f72672f76310a2d3e2058323535313920394c47397a56614a75307a4d5a50424270466a52564a5479582b63326e4f48707a3459366947654c31456f0a46744e78416d426b364a4d6c2f685634466b33663332383871776b43575573386268784f5a4463666263510a2d2d2d2045353941364634736e626259325a386c484c5070626d477836366551717830314c3737526831646f586c4d0a0d29294f627e114f2b73d56d777cf4fd592bb000470e7f56992d8527ac3d22384cec684092afb4b4039e30d8506e27ddb026e635addc527e9df5de915f3ee84b67b8a050a117b2200d8f0f77a5b39a258039b4a0284d242a2be3445997ada061e55b4e0ee95f3ecf6121934df8dbb223a0e25d098c2c4e76bb90c8993a482e6a779a26cb795fea1d948b60af0f22a3f72c217360d1c4d35f3d9b7bce4923d68cad8363e458788f0538103f85a935751664db65b5693d528cd0b1d710df4b7041cb5a0dc51620e6ee2429f4218bca9a94c6f24c5873ed523463412138a0e0780552f0dc60ce254e5cfb3a8863e9505885678fb0345ed041505e6c15f26b839af709f1474cfbf2a169344225cceb20016fd4e00fb5dcb712ce7e1ca9a62c1d5fee"] ] }, "identities": [ @@ -1687,7 +1687,7 @@ "spec": true, "dkc": { "edits": [ - [0, 0, "444b43310200000000000079000001caa5006a646174656b6579636170010102503ff8ffc4c4ce0514a55489e588f739a9037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303120353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a73442b7065616a59734a5566666f4c466f337736706944486e6854647239535277497a6737364c3256765165472b7a512f5638796c587130466b4a4a4b7a306a0a423862357a35486a414444305353654f37646c644f4b52783152592f6563675948736e414c37543472446b4c4d34636436336341692f304a7942414f50596f740a57556c7735574a4733312b41703678747441375633633050594c50436e73774c3556565a633041356461590a2d2d2d206254416732476f494a2f776a37533771687852583256474a666551325434684a6d39734b306b4d306d38380a9feba4618ffba32b09cd22ca80342096164fd09c507db777cc5a8d3db4447ab4d2653d2cfdf5a079572e264758cd414652b95534ecac3e894b2d683eb11d03c81de99e4f1d8298b90af782e81814595aced85a5a2244de7a69ac0d344d890992924bbef6fb1849f5ffd192c815f6244722f4c81a4e9527cc0a54883e1add7124e3d2e6cbd36b696167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139203069744c4966694f4649617562743759324a7a6d48347239594f4d57755648793446727135734a764848670a633542417641614254553275612b4c6137336b59486556476b316d6b2f686f3849732f66747834554947770a2d2d2d2046324c4678636a332b356955446273456d43524d526e51712f792f76706d527a31587862453848544645410a03240ce6df868def9bbdf6b2844fe6dae0612dd1c3aedc25d448a3fbef6925679b3dbf117edf4e336f21fe87724623a9cd4b85b4937a79c50f0fb7f182100a355fe5d872ef24469b01f9f7c4bae2223316ead16ff4efff1e59c9145ea2fe3222fa4e3b3f31a1b00bf6d7ea6444955d5ecaa575248735c39cf5df909c44477cdfd74e75887bdf463b6c697126b90a6b05a300106ba2580fe36f31c4951226c221a6ccd13d9a6925b8c8477a4e18bdb0e762c6db9429f5f938685ec88dec98898c02e556cd9858bef17ed6c76cf2764a069c12f15e614eed958fa5ee7c78439519cffcb764557b6ff5b64497e66b480d47cda16a909057eaa03d1deef821c1db037fb284d5803f53a98bddfde9127a17c905d141ab3ec302a428976adcc703231f"] + [0, 0, "444b43310200000000000079000001caa5006a646174656b657963617001010250218abdaca3c0fec6e495e75ebd783d80037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303120353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a6b564d32346331386e6e43535979732f41737838526d626835462f6e6a2f536d6f4f575439557144786c533337323973304858796f49646458657871662f39320a4572754344385973455a7230737a6f56714a4259793043744752796d74722b614946565636735948686c7164324475595662666d696348585056576d474c4e410a36705271394b704730363535764948506c55357143635270416938687a50514e4f74362f3659746475326f0a2d2d2d2073504a314d425539497355514b6969396f4d6730775a333971703134555539342f4f4279484d61776f4c590a832911586ddb59a290244afb86d3c45b7190a54a660483d25e25d96310deb04ce1b0e2d67ff00f7a6911e47aef8251f057d23fae4849128ca900a23aecbf12685e265b0c9b54085644573d4148cb4fc624ee3efbe8bd257330db206aea79f92f03a9c3c82572ea74e62904bf66bfe35ae0b89b0da7a0ee1186449296134ab38388a8dffe3db7436167652d656e6372797074696f6e2e6f72672f76310a2d3e205832353531392051632f456a4a2f6141384f4b7a514c695a6269432b523562372b676667466d7947495549546d79553447550a3431513246674857315953717a4a41485a51496a6c512b574a4335386876334946626865394c6c5633374d0a2d2d2d20326e614a656133375a6b345a686c796965736f576d544c6e42744158526644676651466b545069674271490aa3d0d3672157c9af39b0e08ba32d8a56d7db921d0b07d17b79c164a8c0de6cddc418af10ccfa79431be4ed268eaa5213dbc72a7797677b565020fb55ef6c568dc99a0afc8b9d824abd739a4aec059f10d901181bf71bff0a281e60e95d19203fee3e41da97bb8e0b7476d0d5020f56fd8d8d4772eea625ddaadcf28fc887022bb02064d775e9e514941730dcf6867f4ab9724989e5524123fc840b6b9f40df0448243f84fb830fd405abb7564205928a3956e59dfd4e8984463f8db22390984e3599277c670ae70ef14f05e41a799faf1a0ab90bf9afe1393a4c357257984a7b4318d46d20b3e6af0b2f5a5148479c509c042b279b1fd3784d5e0d3ef10e48504afe7c9acb6d6fad55224546e19a58122e9157e38349159f92524106aa644ab2"] ] }, "release": { @@ -1706,7 +1706,7 @@ "spec": true, "dkc": { "edits": [ - [0, 0, "444b43310200000000000079000001caa5006a646174656b657963617001010250613dcacd9848dfcbf28e47bc2ba4d54e037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020646264353036643665663736653566333836663431633635316463623830386335626362643735343731636334656166613366346466376164346534633439330a73694a444d4555476c6468726b474d3133454f6c316c506c33577053497a41354e39454237303469413276556f3273647132702f41336332697652354a752f720a444f39486a6437373850346d584e344a75356d52736e476e4c336f63393955686a6e726168654c39424d76794f38633844486574444e4153517373616863497a0a6c7048546e6d4c496734713743625679546543646f7a38375a776c4253333761624834736c31572b4658340a2d2d2d20734d59743932527a7342726d432b655a6467666156734a4f5141374d624b4b55384b4c78345a7a455934300a8c06824a83d81931ca5df84df127a2c26e3936933da4386fbd8fd6d6c68200af8ff3609bc11b22f4dbc5a0dce29e98bff1aac1da049df48026671abe50a21532712aabd35c25f1c50795efa5ff68926e89e80796f6f0a3262c835ce8c5ff3f6e94d789c98b11c9a191f8583e2d43801469618e89cbdcb43b1976f18e10fb74691d06fc894d8a276167652d656e6372797074696f6e2e6f72672f76310a2d3e205832353531392032642f74514751634348746f2b555832734f4f53684a51787231767579434937792b56445158736f6177410a5a515338384b614249677869636a414c4e305559614d4a666d54566a306a4c517150734c715a346d4476670a2d2d2d20543368706e74753239315835642b7347475a4d615066626a4362476e776d4d654270747837326c566635510a0f58d9c991084148b9b6be0117b3c8faae96f6ba65a40357ae2fbc4f15fc81a2764394024ab48f839cb21a91f88cf194af7a0cba39b95997ff625c4d5b0cd5d9d5eaf2e11234ac8cc114612903d6d245bb3746dd1561550203edc0dcbed1d3e9899185ab544afdb7fba31ce5a63404b8dabdb9ccb0ea59383d289f695f3f654f2fb0faa1207a505f0d50f8809c431606496048ba1ee0f1937d9a97b44d48523f50ad15ea3b67b32374edc9759ff521296eb05f185000531df1bb22f13aef4007a5d821caf990f6faaa1d8bafd82e4b12d8657cb3470276002c4f3c18671d0e8956885f4f8b3bc186e4055f746f5cf64ae0b93044ad3c95515e3d8ab082d315b5e2fb71692efc107cc19276ff5e26f690261461910377d2a5485909bfe711196c"] + [0, 0, "444b43310200000000000079000001caa5006a646174656b6579636170010102501a9e26924b25a9b70ecd24fa769672d8037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020646264353036643665663736653566333836663431633635316463623830386335626362643735343731636334656166613366346466376164346534633439330a694e46476b3072445062474147315646544a74337750477a766a4c546c3035555444664d725754764a74306852546e5a366e365859626f3248574d42346c63570a413976722f54396b76576c54436e576947496a5539564d5965426f4c76626b4a6878735877433965304c4d4731517942626e6352514a46334435336f337066560a47524a71436933526a77634c594a4d30597874387035493353796b442b6c63354c6e4f3156396c617334770a2d2d2d207032556c7072446f644446554a6a456775704d2b3543656b30556232343973415465766c6d4c5a5669794d0a78afc14f4c0ed70ded614e1ba0dd396ed3f50e60152e2ebf04ff26d8b56587e2ca062c1dba946c783e79e75dc5b26a7c22a46198a122d6ad24c1ab99a0952b8bc875a0d5c7ed7be9d540935ae10d452959107a843fcc963e745492c9623bf271270352a3cf71efdfec5b0190d75e7cfbb39d5a1e91445b78f3f56325c7755df2f004a760740c716167652d656e6372797074696f6e2e6f72672f76310a2d3e2058323535313920624d6637576b5a31704441703958333178306c5a7949635a566958664a56325675443634326f32666c566f0a346b4a3056394b69685572586e464858564b4b4854366a77346f666f74686378502b6b4e396f31466162770a2d2d2d207a423337425a30516c5a496462724977337a4d55473258636b544a6f514b7971327653432b45464d68586b0afadfe24005b62684df97ffd987daa6ffc18e2b31077452e4128c380626d5dd3b751a08ff2cd99529f169568dcba2c7e98d44e7a23bac3d868271e43a24db7f435adeb3c517b981e1203ea4311cf3e062fc2fafb80567d6eb9b6a3b11e41ca825db4c86a081affb216a9f67ef237941d9729385ceb249fbe9d7b0191120908df87213ad64148a73a6e198467f85271b72f8c5c2be43cb26c5b1f3eebf08567b7550690f8a06e30d60b95b5651b43060d6336d5d804385dfcdbcb4fa111d57063fdcf880f05e5e5555ab741c5337ccd766b784b9d34c9c7ce16592f6ddac56eacebea37cdbc9723a6952ef7232de7aac46f535a113a305ad53469567a631b549fe95e1de732baf6bec76ec785267d0ed68be45a1e16a27e9e1ed3d431bcf1a1925"] ] }, "release": { @@ -1895,7 +1895,7 @@ "spec": true, "dkc": { "edits": [ - [0, 0, "444b43310200000000000079000001caa5006a646174656b657963617001010250ef7e3f60d1f2eb0bd85931df923b1fe3037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774e483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303420353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a673656776c454572337a676e55766f6771686476397736626e52493844497432306a34493568395a727a31516d37496955333358416769617569626972424c380a45356876586c5849755a343448652b6b743867757941306f6f775547707142387a6f686d6a4861723042546a7630664f72624252455066456a756c534c572f640a4333393138516c583677372b6f557668616474684c6b2b48596c4450534a7a657655716936577a33576f6b0a2d2d2d20663949306577586e3857706b642f53426b5241744a62797537546f6b58502b694b3632776e65476b495a490a10f1eddf383a4019120ba4ddc8def7177b6e645764bfb51cbd03c4420b4d1d1ee7fc5b2ad7d566340642b38d1ad4ef9f72ea6cbe575b94db31737770b09bd19688794045fabc4d6dbfd1f98d91250c492cf8e0bf2f12d0254d60d194147ddc114680f4a7a62f31889caaf65bb7a6e3d19587da989ab6a2ac201d6efd8241001561ecc7288368a46167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139205667702f2b48776c48426d2f34492b5474545a67556c476e6a67794a5773676a5a426b6e34364c6c326c770a4d36656a6b2b36655a446e3739757930584670707a644978366f77766e7139767757534555437a536c774d0a2d2d2d20544371714133354b3830672b50395143776a7132742f754874766c654e46554f655a6f7841413238334f6b0a8a548b92651a12bef4bf25221f1ee8e3a751356ef03e861e654d642083a7c9311dd09f460be9cef2868a2d99b26c8509c079e05b266d0a70f678d02a4ed3ed5f9db6d45607e5f880e039429bd53486562fe510c4a5a33bad9bacd0ba6fd74c87f1e4f1dec8aef3f81b8369b980dcd04573c27444d7ca2a1162247d682821d43738de9bbd3eea13ddd611b6a2c9110e24cc3e9a605b31377724ea9fc367c425ebcd0d1abdc8246ccfa2cf4ed9ceeeeb4d41bc57fb6b85fe98b7739840ee8ed8763209b4298015c0d5f1d4a72d337e9e2772f130b37335ae7c6fde9772e91d2dd84ad275dfb573a599b81ca0fb70f9b745743b252a2489d12dace0daa1db532c5faae1a512b538921bc5dd2f1d5a2ea292c6f12ecc97fcb907f03f2d0cded8fe83"] + [0, 0, "444b43310200000000000079000001caa5006a646174656b657963617001010250dbb9bc102bb15061d58e9c17d302e06f037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774e483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303420353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a6d444352704671466c504e332b4677673178783575756c45594c313766586e592b56416c464e6245473964667449345047597a3268577931786a6162584c52310a4352434445556e58377439577a344378447a69734f75644b457138753246412f47504e496f58734b2f38323067566f446b35615543636479656b4872504833530a694b525962593372664d784b3361764f474442416657536272795059704b58694d646f594a646c527357550a2d2d2d206853776d546f585831736e6862784b494448305935345239554d6270426669652b7937664d6e674c5232510a3c1177789c1a5cdf23984f1ac07a5de6fee172c95c42bbf8fcf776419acb23db87cfe5a129aac8db2d551c089fd36a78889c22007b4ad4488f6a4c42ee35f0242b4507c239e872c43e88f98c55e7b1c67cb8198258e47495a614eae168fadebcd11723c25104896a0189d7c7eac3caf0a6d48b903d523b4f4817b40d9ecb17e96c3fab13afef6e6167652d656e6372797074696f6e2e6f72672f76310a2d3e205832353531392033476b7278676c663265535850644d6832483670326a337538686939776f41534963376d6e3377516e424d0a5556705352516c443337744666642f546c376969317255464430762b2f66754770334e323534524a5654450a2d2d2d205a72347833736230336d4134586935476c41492b452b6b636e4970592f4c783933324e733845753273726b0a5d69fe61aacb5b8eb01f95a5129bb69d9837e785984273f5d2885b9ca0f38db89010f6d595f468bc42187f97e64332312f35291cbca0da1254a0ea26570282a8223402100a9e684975f7452f0cbb01620b3b611d464c2741ecbe2e8c6daa8cf95beb55ef837147421c000df1e8d65b9fd677e1d330b0315442c3fca9a78c4001fe64671df76532f7cc33a69fe7cf75d25740c70c5174969f96fba987efa980552a6a2723526245714dda3b17525a5175f3c5c539137dae3d3257d49f2c338311af54fbf8d213d16ee03254f8d1e30e06998a9685bf6fa88eeb997862ac1baea7d44bcd5ddf763f93690cc352ac28d053f5a7992fa2e552778e4c17c479fbbebc6a1349c0e6d41f841f3e190295b14d17b107b3f9dbe62c85e17d8747ea95388c"] ] }, "release": { @@ -2602,7 +2602,7 @@ "spec": true, "dkc": { "edits": [ - [0, 0, "444b43310300000000000079000001caa5006a646174656b657963617001010250ff23599acbe9b0a742792dcb7cb1bc4c037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a6f54544f4e35495567376134512f3742376c6e6b434a444d385645342b39346a7748384a68356d4979354e4e4555434f62712b5955366d636c584a7775562f310a42327a7a6a4964736c504d504559626879587379584c7457736b34596b6265654a55487176383547346d56703174524b753479674f716e786841414f614131690a79317377337952436c4b6b366353322b5954563669515257426c787358394e4667414834366b7337332b670a2d2d2d207a4e376172395a546d726e49425771665a6a3261396a4b3759596e5465696367646337525974686c5167510a61e079224ca4130fc7e1fca2ccf4b6a8e183a68c536705864abaaba92771d39b97c468f066473381bed9b4b5ab728ec0c7cc775f8bc0df19fbfb00e4bb4a3d226f68d105d458779434d47e34bf8a28d262c7dfa26e53ad2fdf62911323cb26f0fbad600cddb45d197624d29f236e81f0df104b636aad7cbe4f0d04aaedef100302dacb6c73958b6167652d656e6372797074696f6e2e6f72672f76310a2d3e2058323535313920655935564741343653316435424b2b313274707a6e375a6a6e7145647636764d63455452787443587933300a4a416b62434c776c6a753957572f574c534b484c50344247306b3650494d4170496145346f7a67482f44670a2d2d2d204250554f4f53544469766d4a6f47775a7632725652342b437578482f2b3955684c476d30583345305264630ac607927980e0f5926614a475def0a999d790502dd80d453bbdd777f054609bdb35d8fdfa730f34adbbbd770374d47c24b699b084dd6cea5d45a6899dc8531592608d911eed5a0afec11e4ce00b0717076a579e46944181b08d09e4585176458bacead74c4d770d73515100d6ab688900fb78352573a4cfff7481f9faa005ed8191d673785d749c5cfa7f38ccf99cd7e8095a8676d171c0a5349fc3e1316eb6dfc4c68fea888e10022cfd15cd88aef77cd37bfe100f3428e660c8fb6d4b7941245e3b743d6a35f1dc38abcedfb67c7ed218b09ba249d347f378495eef3c899c2779858a521bca2d45a484c34f70b5bec44b1cc48fb4d29c9e1105b72ff56ddc41206aa6244ef18ccc8b2e3ef3afcdb39d1a186a958d5c91f6f583347941753652c90c203e30aefe2d71506dabd2b87c7e7cc2e85574c0b9b213950c3fb8ee304a8ffdf2935e3543a9ec815cda495178efc5a18110bddcfa45e5bdc43ef2074d4e1893567faa429d2b23f7edfbd33fc33e6362e18ee963a9826a44ac0c9431eb79b99a6f4c7680384ac5c105b5f9ef135f731f68c3873f0f94634b603e29fd26f0a31d063e1caa8d861030265bb9f5254ef108605bf5fecc07a116544bee0054230695ffacfb4c2332e4164257cbe0590cd2467cc760cf968384865240e00001e057b905cd0d5b8e0bae31dd7d4c344b92976f0e024f6bbe22f66d8485807800bcbce0b8c80790decca65ef2a013e489dc2079650d77eb2a2ed71dd641cf771ddee5c5a0344020978230ab7025ec90e26e4e949c1f4a787c883817f01e0b0415e9e50ab5fb2ddedfb8b8557ea92db898800d4389f2ce8a3d0a43e18180b35efa1f5e17b8366bce40cbed6175191f6f17f2bd2b9538a5d6c814d52505d3b1482c8855f2ddb876224e3e725f7933d45167c74ede6bcda2b6a186a7ae265ffc3108b34a1c691419411303aee854611f64124791dc32b334eb94041a322c108cb38cb391639e0bca79350a70f309e5cbc06e94ab6282e1aa38f356aa437def537eb13c953267a18775fa0fc93af4c8055ac1f0901058a6d6677829e455d08e3bb662dc9bbe6ccad5cdcebc8848bf9325abb61c96c844e7c6653305aa03b1ff87498db2"] + [0, 0, "444b43310300000000000079000001caa5006a646174656b657963617001010250ff23599acbe9b0a742792dcb7cb1bc4c037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a69482f2b625830375a474751485a78777030562f513235744e2f67616965346f6252507666693536414f6b44464638597a6d30397042794c635742537656592f0a436361764e4d666a33716257787a317162436a6a362f797056766a4551574c6a6959334f766752763236735a6d4a6d654e414e384661623057526253485a57660a6c387165674d756f68564c557237785342355957566b614a694f5451763168554d515172397357657338490a2d2d2d204f7551367951753537786f4e6766474347683434394f5855716b7146742f58626a2b7339463671736d35300a0dcea1e9fddffdb3604196b98ef8f191fcc525f36d49f0e88f6d7b6a585f650b7f204d5bcdf974de21a118b91221b2bf716c0316495217a2a5629077fa642c6140662342a9b0854cf9dcd61d7ee1ae25b83fd47d72eb86340aadc36d1f40ffb07502b0b71c4211ccb7c1f6fe70eee4155cd9d385ae5c8f326e792f5296e1fec44a33f781e0549f6167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139202b3330354a444c6d5a544935654837763248596764336d7477546d7a466137507831642f76396c6c4253410a3059487839476c496c6c756b673848734a33496f5375376e5737712f7458647a572f714c737537494a77410a2d2d2d206f3574695a44612f4f71762b627838397555695767734872642b68494f472b6131366d6d445245754779490a3a241b6017007c9eb642e7a3d0ef653ee677b3c92cf12e71ec09264990b093d8806bf25885c3532761d80a5f8b7ae64bc302c62ab7a9179f5318a40076c6c6ea13d57eb79667e155e7ea71a54953bfeca7df6f75b8c46e6cc38b6795e0f439b1607eb5376d7fd3622a5e2d26259edd73b044eeef1dffc2f16fd83e6c65c3902a280158e4c15bb8aa614054f8aa144f4b6e3082015797445887b93320d7b8a25dee09cac4c18a1b80b841953f0142cb9d9cbf22bb06f315689a79e142e31c007a4729afbfa4f80c5745e35598ed92dc28b7c498af01ae5630f729ee912e5f4d98f8e6f8f4c1d06db91992c915436c12d0d0a855807de9cab2c90e92566838a69ee544ff12130b7f4f5d547e35dc1dd5e3d63b3e286942b1c5a17340d254b8aa2429ba268bbbde86c6ac46b0bf91155dbb9b539b01387310b3a94109e5218324aeb371bbca06d938ca790294f94604ad0e524c4b5b0fd0c0b06dd3bad084f185742d7c43c62c30cd20933ff104b4840216bde32afc611379ee0296097aba18da4c1cf2f4303d889d2115acaf86de01005e4d4b2a410e51ddf459f05e4cae27920fdff77576cf91bbc6e2894811ef61001fa3b52f70a72844bc58e7eb0529343b8df97f2359cdac9a9bea5eea301769390a27bda75582c8460251c142225d6a07ae5ac34dbb3d9ace2280b52fba68d6b4d79950a7d107bba78e21d19d5726d02859aa32f6091da08dbed70bf355b302831ca544cb8e9ce509fd8fee316d4d6156f0e4e8bdf6b89c09b7d4703874a3935f36a20c0432a7a30971e1d67f7f7911dd04a5566bbd20552944622356e2dc8dbacf6fe401f3b402b6aab705d9e25ba0dad7a6113635ce5f113dd8a556efadce46e55de876a07d523d292b998f3f9baa273c693d25db0d2c679368e770216bcdc8ea02c08eca5a288fad27e3c41b2cfe66b21f36f9d44d07767e620f8c28b8ab16874efbd1bb6e0113c65de9f44b94f2930fb1ea483b78c82db38bf12eb2eb28f82762a4753fc62d7dbcf7ba8fe4120a1ecf6fc904c77ccecaeda48f6936fcb9d776e6551b2e610b20f239a70af2c98cfe492fed69f462025a629215356eec9521c440173af802a79ddfc02018a6ac0665945634276f42e6de536fd3cea4dda0a864f983010c67a28e2da6886d18083fd380bd797db4a5dd787673da36d482158f83ff03c682508838c91163ff641204d07058913fc70ff6739b7d56a037ec423a64a62af949d973ece5af4f12da59d7460e2e26af7f3e247bf24b88b948ae86f95eb1597c1c617dcc73bf83807cbfaa502621118da0be66d748b299db60b6c47c7074132a5072cd7d37a6e66ee672132d173bdf7fd8d9400d25adec081661462eddd5cf98ced8d8cdfcb68c6473d4f9f305551f36bf8ab1716296a1f8d3ee1b4fde555af42310a0585a325ee3418d7b198715e500d3a64771dd59366be05bbe73665bd321f619732912fc3ef5351caf2702b53601a963b9acdfa1fcea580346127343d2bd8a74d017ef0134ac1ec9534afcfd227020ca7b83ed0bc181c811228322aff24d79355e9119dcb2aef9829d41d9c0a87b75dc407ad9724f6a37331f546220c87deac943cd5dcf42f80c88d802062b11948dc117220362077a70cbafcc789b172b8c45c99c97667e4bc4eaccd97ba07474e7591242bd882a96f4c13d20d0e4c28f5461094d75f6db83efc78715410c51262f3283452f3227e71cda4406223cd83ec7e7d7e5f03b6b4d26c0bb42e2d1c4efc771297ad5a857bf9f9c6285e1843d5396970c58e15de6ee2cdef0ad6cd0264e33f6a451fff2d40309700bcc272c72df75794ae4ff8a89769c438025deaca148dd7bfb43dcb280205322d137d552651cbbfb798335df24f7a1e2164802247c7149af68b1128b7b3b9a8ffde24c572cab5715628d6471437414edd2ec1dd5925aa82e827cab71819e86dbf6c25275f6fbdaab1ec01ef8ee63e08c69e015397cf24527af855015dfef4e1611476c4f7c054ed76ffe0fd51d12f3489de91a574a2126c453eb51e115a527f810191102cf2ec6dacd1c0fa245b4a33ff3f4bfe19310c315bad5588bdfea2f862643b189ddd5c3ae3fb220f37b50d7159a8bc4f256729ea89557cb21dbe79e1acfb3bb6f4b3676b2f754c832bc8ce6a80cd3b8fd89209eb3ffacc90ebb3bdc50b25ae623c86505da6ec62f9d4dafecc94f1845815769e22f898957a53f0a67c0fba2107445c406356f381f0cc1b96b2bdd2b6627e9cc688a78be9b56a0f639396d166dd6ecb5c55ae7b03606eb676084f8c8c343164ca2904c474bda5605d3e8b19e73b0f1b7b3c0f81c397440a6be9a3fca1f96ee787e12e00d7549c95a7585ab0549297e31bbdbb60c4e4dc8ab57a1516d60a1b0e3555484ac34b8d8f80cdd0a84943d25eead1da0a521aa84a71b85247644f899f862595daa05b5a5cc1f1b0ff21320dc4afac237e721cd4db5a94ef41aab92e44bd08e26cfff443efb527b45ab660147e400ff8b9c7248485e239d737046b43249e9a243d4918e37448c801fc24ecf256fcdc1658c1ae5a31c979b102f489a75059367a9613c35b442f2cb6c8831ef3da14f779a4852e6c66906eb0935c94cdc4d7982e83fcc002343d2015696d678330606643a0ca2009adf0011249c60f1619770afb1cd19f0f5199c97cdd89285213f4258482e6e083a5997be125e4133af9009179235db292a826b4d4763341b64460764877ed741a6b972c6f01d900fb7dbf894db6eb0877cd29e684dd0ce906626f2fea77c7a217239f13670279599d78a888387176da97d3c6a8ebced385dd88069f348d1b9a4e82cc0803a276909e798df3a20f2d425277886991e701cccb5061aad6d48f42b2b8c66c64686652af8ce25bd0ba81c473a35ad6400b79d676b3b15685db23e707bfec491eb581d24465a170b7d8f589ff275b2fe2f0f8bf7ea8162154a79271286664cce394d2fc9ae8b6872193cbab06e8809df7d1b6c9ec1c8c2be776082b1593839083f3442ffec0ebfe9317e1e5902dd5e4f9de4cc5fdd952d626fa92730a476199bb1e5c624578dfe23f85179caa934db12e76f5c5d1f7e099730a8bffd53e02d5c6cbd023e8c75077823cbe95955d18479efafdbdf748e8f1ffc8876064e280ab3c5c60a30ac31992c1ae0d275aeb2bdd8feecc4aeb933b7dab2511a49ebade445fe57940d0a0ebb5f913a33f5dfbdf6b47d968f0053612dcf67d603dbb8059dd9c4f1b9473229b5afb062f2b521e041dc24ebac8daaadd73d3563523962e132aec52773b56139771d3df0ec294882ee72000113a1fb38198f764022fad0aba919584f11704ed737674c8a228227cebd97d5d4006577e5073ffa4486b0bb9e699b32691cac4454ca03a68a21e2a542f3ba0e9ba11eae09c7948b53489451a87fc0def25c6f8261fd9146e9635dcca0d1612a04ff44b52396ac384c6dc5ccbfb381b54df8579df55cc3c4d6e922000e24fbe1e8919fbdbd99841e9d7b864aefdb55cf40f634b2bbf6bb5a0f5621123f1b25080532ad49fa12b91961317bc3f5815bae29bad68186111de1c75aef4161a25717147c1bc92733b866811f7501c3cddf8129277b841339e38609fbeda796e214f377d35199c79298184f34a298ecaed7c0b5200eb73da898085d7e297f9f4e85f97d0159ac5bf45f4a4ac97c58c767c176ad9869857de86a77199984b5103f2d8138ee5f97cb161ae07f51c7259b3513fc6a7565aa9d3329ce939ad6b34680653e8497ca77672715a8b7e495cb46a028d507ec4103d8c6fa5acddcbbc0048099a312b2daa62d25f10eb021434e69ad9d6916209a1d1aca8107f1e96bbcd4e7d3f66afa8f93141dbd8a5efaa5ac5d6ffc74c50a90161840045d46f0dd2ab106e77e21446646eb07662ddd37ac8e9ee1e16bef87b7c34f9cb4d2492c5a7d8915ff9def57cd3434cd23cf228ca665338586ebfc13ee405b9a9b1d7f0b134d95000438d17e42a82b63d158b76a2b7d693f49efd9f77837d4f9ddced86db49e6dd665b9fbf5f72e976b13ed0d44e6504bac4b1ea50e5371fa2a6ada8400070f9d39fa3e3911b9d524eba00800fa2a68827aed0bd5640edfa27a134f1bab7bf82510ff13529281186bc57297d369ee58f044ebb12dcb9149b4236ea0216a96714344c1f4dbef01d4f26cd62f557273c83f6280a52abeb10818c7f4c876255f1c09c3101248942025d89feb41256ae2e30c110d88a87b7505abfb054a52e09cfcf258c135440c6670fc48922bdf35f5f720385a6fb79f1d26a6531cc6f5e7da63389fbd913e52866061f634f1fabebffece10a57823d7faec50f0349c4cb216fbbfd248a888d1e32352819dd8b1484a0561b120cb7165e35d229d859272e39ecba8e5f138b32dabcfb80242a1ebc080f04fb24072226a951a0d3a8716cf83513632a8cc396b955e0b5074dab7a03bd37db7497b6a291f88994bd59a62b350179988e961847723936c31c7e5f25cd692f40df13b3f7926d2e0b838fa5ee4adf10d21b7311f19ce154f542b2e6223f9f48c481025c03e8f83bd54ac0a04fac237f2acba11e0a76a910f5aef292e6ca4d5162b891b74f6ca7464dfc15946d2253216056132c31a075b5370eb9970574e1b1456b1268705fad5ee9f37fd7b9e85c60c7b1aec121a45463e6dff32b57476c77025af3e33bc8003634c6716f8be7dd02265146362fc0e15773978ed132f58f943450080245523137d35abf88b77e180fd1d7fd6f8fa8a820856063a8739403ca591a8875ed1af405fe6663be021af6f09a7c61387c75001ffe4d7e64a4058b7c662dfd1a88be92f6287ce0f93b3af6c6bad1d156535a7a3cc4423970f0a2181d112feb2cb43126b505a98ba991a18f39d814533ba2ea643bf6da2aa9e5d0dbb71ad2aa3c1015d80f5887b718bd3f199ecbf19b8c7d9bc987e1f0befbc8973225039f639ba7950d365c36cc98843d195368f1f0591d6064d623a1f0da46c2f1f3a8a5a2150ac607b92d49683b8573cc2e4933ff5b161e60c12ef978575c2d81dc3169460ccaa7723bf114db1fd509ec155f5eee09e28c199eae15e4dfad386ec97456467adfa985f9d211dac8a8d0997e0e13b5572ef85a90df6994bf302b62b48906ef3905db69320db9724aaf96c7504bad99f53492f19c7c61e551905feb192d2d0529a0619605ebedd0d433f0bafb66c5e43d0be6297cef9de73d0088736676fdc6e07ce32db7a9ed838a37438a673c6b82d6baa5c04d7f0cf9c908bc15c3fe4f2bb445d30cb9b16381a16ee05e4222787572c7538e640edd0a7565e7b7d06941a936fdec5af01ef7b83dfe84063fc091cfdb4e780244bd9eada39cd562691c1fc483b0f2d7763aa00144f81295b066ce8af0e7d63796a9f134664af47abc80801569d86f7056380380a83d63efeeaefdf6fb7f8e71fcf2ecdefcc14e39619e436974b9ea4e732d116ad3615578f0dc1faeb0ef6dd08bc7dca2e783efc005811da6c89a6ecc8dce5144f6bd47951ce72800d01f6a5e87d9e4a9e0a77453dfe297030bc39c22a24ce06994aa40570f7c32ce0aa372a3ff376f5e94518c3c7ce52bd6e50daab6218f8ad781846d0f025e59adea42f0e07178308c37a900c0540de77a16cf999cd2d4c26708e4b90cd46284a73324695b6c591e186aeef56959d2c1b1b4437e861a4a736b19aa7b497e09527ddbd71b31ee48b0e3501c765647828aea64fc2c979b3ffb3e430cb6a42d138fc60d8ac0340f4bb72812a85ae32a84db184608161db33532a4750c0a3129afd3a3265d420a7a90319ca161c12976b4c7c3b209ea835fe1ec6ab95f28df1a9759b78347d52343d7b0773d4deb32146d064048480f48d1e5d151ca945bc3b9cd487c43d14a072a1c95ca441c5a86671251804ec8b14f5eeb214e4b420569b247a4c92ec0f042dde5af7ad1030ec0b6b737830ec20bdb5f025d05e7c3a20e2dd595030529de429216323b924e36a1e4c4e6fe3eb7963305c1d85ed496340bfa87654477b2f9fd4c6356657f49f07d37b974117280e448e5919532be9b06db7d694cfad246466c7e7ac86f6520db9ea83c8ad664ceae58f9e8028561a24bcc4d5f328122abc8694cdf22adbff8a94e230ff8dce75dd4257ea0d99c6b8684d07b94e1d6680a4bd781edc21006b8b6f75b342bea4b2b486e59aa3e0df121740923182595d1084cac7487c89cbe360986e1354c8eae6670c1c1454cbbad265aff01491e47ba1b0d2e5cce12f90467698ca95766f1ec586b4554bedef84ec7ec8627a26ebbd5b35b75e697943f0b5a7d185b0d0e14f1d00a476b4c1975948f8008d65b06207ed284b7d9138c04ae1ced8f20d0c045cfc7b18d2e4894f282b2a830a2adf9017ee424b90907cfdc49ad84128bdd3500eb01c7c2beb6e168c8c139648482fde677adf80db176af394121cb95f9619a5d23ed879c2a86f142c986d80a0f6fe3e9301ec8f7014d088c8c70e7aa01198bead7afec04e4a9542e6714982d48dbbfd774a62c1a79c92d5feb3a8834b0e00c0f49cf47ae551b2133a514c5685e443c03f754213680c8d316914244acaa11d0d0ef1f283ec5a37bb804a2e474f648f2b60999e1859379290ad45b2f10e8d9924a070826f2a10f83570443cd1bc62e6697643722ea7051bcea41e701ee9befbd3b9d47c89c2720e7a8f1f086ffddc2cb4944ca1e9cffaa75158fcd4359501c5802d3f718862b1727cd5cf4aa1db2756907305f897b3bd6f3bbd66ece63e22ce7f68f19d435c315f4432d76e668d624d54fcb3d43fda4cb623a58116d85f7d2f1ad98f0edfa69dbe57e3262ce22d13dbe3e25ce394b451a190abd60defe04fbef14dd03a917f628fbbdd9148b1f9fc72a95852482a91175ae24e5556485401f7e03ce3564fee0646008e36994ac46ed0ff27e6066a65a8a81a6c8b18d1230e956259eb41063b2b736adf4d509939ba44ca613841be2a2b6daedce16db3ff5e5dcb9a908f48c96c79655426e41139cb735d057fa1c83a8dc66272c3c9b2e650e45acf2a48ead55f32adcef397d58b17f9a7b3db05248d7fa0105abf53b134931a0a3f5170b4957d801bdb4dc8fd1fbca5e74fa28384b7ff4f3e155184d83c057f2789bd917ddb06be7fbe4fc6821ba49b5c4c41408afd110ec87c3160f27133566dc10022f34d0974f66732c4f164d718b20eb12fa6c526cceca4e9f9c1b9700d24d811cf944e365e52500ef1b0280c2b6ec81363f3d7cf1bc49046b725b1d70c26101ce6d2241fbbf95ab8af1a52025137f71d990420af87ba3d1ddc683bb1070eb1220ff378436ee7538152ac1ce3fddb1605449d562d4698837a693902d9eac2bad78dfb5aafb71d61810120934c5e48b0868d7fdb63d6e529f1feecd4a4f4ac1cbe31a4899e79da4b80c5ae6a8ae49499e3831d301a159c34eb0eaede0ad4675485c2fb5bfd41d2457cb059f8af43adee607bb301f2fcdc5b488662b6dfc13e9c931003c5d4a6eb37258461eb23b0eff55e6f484aa6ef8cbcbc7b3e35db551d89f94778eb456cc98d2e513f779e7570d8f63cfd288bb3fd6b974bf776dc6085052084b3a51fa9a57509db4237638692a9fb8ce9d97a300acfb7fc0de552a6f1a3d1091210fe193a6e83efd9b692d1c3477dcce6083b453c7d24ce05f04c6325ce06b95b8fe233ee8a47838e44854b6aa508588fab1467c76288b20c7ba6235517df984d68954e088ef1c6879ca7ce7ea2fb0e0f2d9d3d4b9708e34620b660a96718577490b14d339cf6433066ca07c2cb335f0cba1bfe416f6a219aab930dceaf2ec32583b44ee6c10b0d52b681efd3c95c3ffd854a5e46ab47029ede3ce66dbd5198a92fa9ff0ed681b1542b49d3e2f9ddad13b611d67247a516425b1d09bbfd59184801381f8a656374ebdcd27795042b93296fb4334ab1d310c0f4af93d87b11d48a3d6627cb517c8e308a56cc9d0c5d9956cc3bfaebaa35bb01e0b087f266ff021a311636cef702c93e3399955177feb0addbb8cd0b2363b55bc40dce2b4549936d77f137b16bcc2fe06934c7206d731a70524251d5ed0ac38efb1d4bf743099d003fdf575b33b04ef94d26ee5ea32a09ef763869eb3ec74d196bdce04ddda54c71d6342922b77ec3ce18ab2ca63c89bdad2b80db5e7a81bc6f91ed7aee6e2dd192c61d5709f96bccf29249ce08c4db0dc0b7bb40f1c96bef4d5592b4526018484a8ccbcd43fcf182d3bb075435141f69ac02e8c43d52fb536983cc340ca07631e1b0a782880ffd0b902651d51c782a55b35fbb220e5f1f4d0ff8acabcf7a0d9c8db0e4d3a07224b6eb7c2659509d94bf8b4969364426a38470a04812f579ce7bcacc1918b660afe7cc378d542f7924019f934f0824865d9560e81b784cbea288a8b94f49c827cf809f5a7c199ff9091ef5226ab1f5a9d6ac860d0a4d48f34d80eadffe5ce8250e40cff971327b8a4121c55a5bb583009f6c09172c01b7222e1385a35739b5a99ad7d31aafda1d5b346507f20aea80241de01e37a54ffcf0ea84e88fefa059c4e2f4866f603389d604c697f3cadbbe6b5a9ce24d657f9ffe6c7347132ee0725d10afb656a14c376450d6603ad7e6d9085f68f1bb30c7687f22bfd97f601d79bcc0a23a1ef4ed8c144e4de73fd3459bde8dbb6a14e6db721b13f0710e04af5bba4c6d085bf9d4871be21f1a7af994506da986103a21f5021eba45bd7964020834fcb163faa362923316b2b9907465e6ee7e7ed0d555a5222a1c4ec700953a3d0b2a06173bd3e2a35ed80b878e065d74daa3beb3f2fd65c3e197a7774cfeb0afd054b02b047c3e20114a2d89de12678c4278181c2d569debf71c0c9b9a9facd137ac0d601bf93afff3f48a364308601c7d666309f16e467fd1d4861cfa0519333aacd63a8b0bba4a2955ae38626314f22b5957d3b33eadd1ef5eab631656f5df972551ffcd037ffd354ce78106f217ff11df7a6e7ad476d5674e89162f704b4950b69adec8d135011e399b4ab0d40605572786b0c118f183772173dbcec5d6d9e410bd4c64e60140242d45820755557f25a789337c272b8f9e125bc82d88dd0db1cec4ab01341f46975ff8aa08de3b13826844ab90b3d503b238d0612af16141cb59da96fbdb743368340456e10f54eb2ae2fac43944a0fdc5e09701965268276b4c7e65802d7bcadbb17f543033292b365047e4ea3318e5805a6fe8d7c3a17d668df6be81b1a05d192dbe11f2493f19dc2dbbc3cbece6c2164f1811f19ca8315ae80239baa9540a88f002a995197f8a19f1d96162b4c5329adc9794c594255cf41ab715bb1211608cda8bc5bfc653112807f2e3cf7ab9022ac4b30d72c4a34d9db1ef66248e462c7d68db3d594b6677ce564d87627fc65e75cebf297f559603bf16f29567b5aaa0e7f4e685aa982aef941084ccc7c199256710f5309f1838d745000ca7dbdf47529df1ff9abd1b42f726f0bb2183ddc9355706957a5bd9e3077dc489256659e39445bc5fdeec623d2e49ddad868b5601369efe725a954c88a069359e29853d0d21bf828ef54fe00eeca85708fd8a319c3edf842c97d4c7ab3c13d00652f9ba62663145a03ec1d789cca4336c4ea46f527f4a3d49dea5848675984739219c5bca73647dacf8eb1a077cee0d0ea627e8553cf506c20c35f394da72cac5d06d59d8924edb687b6ec40d4d3876082709f91dabee222b580ac27d957150a99c0e1370206d992f7dc82069d225af45cb9999111b8d7da53bfaae969386796c915753c94f1073acb19132a53fd07218449e501e072a50c6709a9ad30339b86e56e507edefac8454fd909024e6d521ecf1ac619252d099727dc598975edb4fe1718acf97f6ad6eced0d16815a3c25be4406edc9fd2b2865e1e90b230da5988c81c03f755bfc12c18e16d4ce6c6cab07d11d1b2b6e77cd0485d2f7b09b5d731f1a110a2454ef19b3649137cd56231dd670b0adb7cd5a10ebf89c98a68c5f12818f8b8a55308639cb0b6c36f80359dbedb565ffd271e9003aceb8e5d8dc13491df891a590d8384f7a9046487d01531478a673eef410d9effde70aa613940f7620119d65eea3db2a3c66948b9f8778a5af34f0018a3786e17c614697a1b66d9294943b1f79877944e525a93344f68485d19d789079a0451cf267c5ade2a143399423a8d45df175de4f76089ce8065799d33d52f748864b7b3510dd5127d6f23b45aa4ab1bbb0820ac799ced817784a5d86d2fbc3c5b176f6d8b7b0779d1ac068e148e75ec5017c5fc895d8256a84c669c65eed0ceaca7cd2caf41502f072993f65fcb391acd9d7818b5a69ecde04348e9c67368a5cc06ea16a3eb3cd83e2602034cc9d2187b73891f5e3844ac6878ba8f35b7d013bd0e772da871db41ecd2a7a68c681c4c5cf54d102b7e7991e72808f43386b1711dd07be6f6411511ed1ec0748722f40de119c2416720bffbf97fc11a6fdb75fd4def06fd9b01fc7e4c87a55193ab6e0ff4ca54a33cc9a23e71289f2e19a37e78a0a69760aec985d011b968eb6d1307b2b78d69dd9e723ee5857167172e51b7f3bf6ce90b191e75d261cb3bbae6c2d0515b7e24b4b4e6158f66cd0bdec1f18364ca53cf9f55dba4705c38f50d141749fadae8fd47b8d76ace6696e61548202f9ba4196912b67beab2443510011f6509830589a918250d221deca833eb466202fce53b35f28434d2a9554b5f5ae049ffd2a2c0288b5f765f6c57f7fa51f3e5b3d33114022452ec70cd11812d720001fa284bfdd79d0df26c108950a4313c3c5a6f26688705e1c7b0080fe297a4cf5e0ed13ad313e87b192087efc70d1dc7e81fac06e416e0efb94402e2437d31ae7ae0042c8cb1d5d72d152ebcd15869554f113fe17d590fd2bc738d375059791e70a0af2ec05484e4806a546f1b398ca508b9df1a70b1b20636a96c7982cb7648a9aa31e3624281f273413111c02bb1fed5d4200c691ba7b5c727dae8cb6a92edfa96dd579e89039500aa0fe747013dc770392d6b221ea9f5d7568918631de7760deabfa31c54e3bc1e6655d5daabd868617601145a35689029d98c3b70f91d306a76cbba62c61f9dd5990eea191732c05093628e4bc5691d8dfe440a4f92d80953e90a7abfcfc0e2f99f082fcde92eda5afb99a0786bd6735bab503a6c299ab75af18e920af5cfee9f3dc3e24c1a954a79bca135e132f974fe84dab9787631dbf4ebe823f6c070f5a4c4992dd03a4ca0c36a0e760f52b596083d911474113a52d95038a87f2313c407298cf0432eee548bf7954a74bfdd425d8adbd19442bc9638b2a81b4d02d6b6b0011a4f360c3512fcb7f4068aeb4c1eb7e0dc3e0d7ffc3b6ab46bfd5bed494bd136fdb90c9c3d77c30a6bc95e7561381ba5df5042aacf944bb3532740670a5ec76b91b5cf183d352fecfbe5ae318ea7bc8d84f8f71ca3547482b09c8d1a1edcd4f6d529fcd9c2196cbfa90ee1161b99f8510f23b6b201d9785123d6b3dc92dcec0b960bc1bc9e1f0ef27a6e032dee7b6565781a8a8338b0d3c1bd30b14a8585db5d060bd5e8c06113b05461cd77e200a30d849863bfce81079f79dae28337a5f606cfdacef0baa3a1a6f8aad576e69fe0b1026e106b6c8a8d8d27caeba605a0ea936a6f08a7a713cf9ee0edcb305ee07f0d4f4cb62995fdacd1d34bd3d2759400b6fe65e7a45d33cc424c43a6d0dee9a49d6cc01a470a7e6c2377dbce6b863a70c5f933ef0bd1383b5391324533ea20c06748150dca349112404f291f35454d20d0cc20550ca1b4ad3b1619fd81c44b0d6f343da518472eeab69fac5bd11cd3a3856268e3d098346e3cb93ba92bd698326cc0a2eff9d9d3b821c08dc885d459cefdab146b5df40c7f09bc306944d4150f7cfd47b041c0fd768da42b224c54f584263eb724ff5d67d555dbbc7671da1ebc1628b80cd769365b0d2734007f9f66c3915cbc2f73c26eea4428857e9b4ee4a51fed151d1f68e28be2bc222a6b18e8b6b095417c9465693bd7ab6bee8f1811604697fd68b635b0200d0c71ee76ef35312eab7f6c676f8a2e04edb6000b81161389eea85a382fc233d9ce963cb25aedd8f111da12a155f9ce9892f1e9a2a5b08de3d5677e3e74a28caa17a183d596fb42464eb0a9fb37c5dc666ea9dea43f385c0a714420fa3aae2dd4f28ed36c95492f2c4c563a0bbb380c6d33c3162a436eb8b03203178f3512d8b50f08366ca23c1e3333425c474003486fffda9089128e50172ad2c383900fc6e3721c639ba4101dbc06f81ca9245080d1d1d7af2ec7f98fcbd058b211bb1c3d5ed0c72b740c3474cda9a7e8397999ceddfbde8f2907fa1a68d0f172099fac280e5033dffcecda8dd7142662313b2ca787d582e92d38dfc68d8c79119cc9e19b3a6b06239969b406ee4fc41704a8445de1e921d02bcc2a61198a3b01cf5d3f919ea92c7d50a6d4b2b69f4b5704094d882a036353736dc4a4c8c17344694774a2e2c450299064efc4a176055c9826f1b1a696e78a2be9ea7212554e43c0b7f7c089930c8fc0a4750ab70d574e92e54ed92416b61e667b192e18eaee51343abfa7458ce7bc73dc8a9d1cdf241cc3f74f923d27b8124a87c71cd2aadfdae8d9bdac52a01692ede816dcba9262cc6c95709907f7e7c997d512974d1c1ce6304d383576adcc00dd5f7921a9ff382b5333b9646a43edaea729259d73b4a5ec396b3a47752e9e5516f3e6fc43c25598bb2c48bcff844b51580145bac326346e04107a07a3e085ed33a0b73ea9467cf377f20132cb22c0433394d2e9f933371149e4cb787c9361f6bc18242696fb6ac23a46ab6739af45083fd35edb3d2b27a9b577ce247d03dc567f2e002fdcd7aba0e59a2e71c073371675f367d52736fe3627a1695edbb80884956f98e93cd5473ca992e20c3b8ffc2fac16d247948f18b3885dcfd6db16415cd3192a66b4937ca7cfd6cbc641405a70640ff4ac1e0dfb40e003b2ffcd940d3dd0880fda11e6f593a4fd6403b327fb85058de55c844419b8b777e28b4f8073e34abb13fd033065f956cc655a5177eb110278b2620eddf3f7ac064a6da0bccec983e68558cd8f833672b757d9c6d3f448d39727ea3f82bd88a56f2ffeb7e2ce7e4ab7588cbde53fc2750fa00b7728fa7789258c3fa5cd10db8f28411795c8f5878899c1207d19615600834db51ea738d3f6cf8abb17fd1743ab5e84fbc4dcef823147cebd4a32a36e9c684258cf4d752a39d68e1b2199f79de3cca1c45b2252cd92083b4a653c667db62076445cff4abd1e5ee10f893a983e7971d93a8c33b95478a07cc9fdff2c3b7e6db6ba38e27db825df4724df2b5aa584165798758d8d78281f38647645ac0c19e3e10fb6a494fa0231e031dd3f64804e5058246a031c8dcb948fbdcca40c65b0315e3094441c15db9b3147e4a13729f3e7face780f7da5ca6da3e957cc1d9da5172483ea31ae6eee89c7858bdcb9bb4f1807ed819a976c43c6b183db9d93aceba0f5c908189fc8babeeabfc584588dedb7b73e51579eb06487a87f47667315f5884156ab12cbae0d005a924cd8cb01ea7b4ce8d8435df8b332aa7118e489bcacb1910068f95fcc8ae0fb87f14310981952e3cb6f5c454722e25bc87877f445a901f4ee19436ae6226668a410cf053e01944d2f7cfd179cf8608971907eb583f9033ee94639f71a4c65c2c8a36de54006fdbe859b4cbcef78ec18c7bbccaa40754ab364a0722c44582b431b5cce20625d75962f33794e02ca103ea07fb46c9503c415c8182beb32ab4d2d43a42d424d0ec76e6374a2306a31543b479348fe1b86ed2944fa6a194165aa774f688515a6adfc6443b960e1c46895cf846d13761e174dcf2fbee588d28b25e15abb243bbff24720e9b48aa926d3afecfe02077d614fac90bdbb1a87ed5dd8bc224baba8162f30893106f9d4ad9a020965e28de7da9e62b2cce9975db6285a514b028ac3c06760c263650f74b5ae589617742c60aeab625e2295b5e36560505b5755a873fc3c58aef29810737679824279ce9df0b8252a3417493fa23c179039a276f02b628e9606d7655b7609ed559fe262eb63c636da38f44ecec453cfb6c355a8baa65b536f4a6201e53d1002869083705d237700c3ae9970e8f28a5cb970d67d036836f22368fdb75b1cf2eaf11329ce7e0cf8907ffbcd42b000f159955be33043d397dd540db89102542c0717ec65bf305cf29117f741e92a6978ab833f4f944372feb3623b646c9b6120769de3b64e547521052bc3e70d7015ca6dc233f699589e60364ef08405762d2ddc188dbad23a11ad12e71790498874fdd62f369230e07a198356e629744334bcd5280eee671c83a532980fd017bbf12c1ef05d8baff44d979a41847b86dfc9521bc9c532d15ef85713fe7d4c02201d20393fa378fa59e0910b752720a9713c70eb8f799b7e6e78b83d09baa559b8155f266b60686b1181789722efc9181e14cab89ee1fad88337843b87160e918e2239c06b1f3c69d8178d3a0e8b39ba9bd9b9776c3e14fcd22e778ed1474dba2a8d1d33f78611f950da7112feb692549e57a77d82d008f10245019ee58fab826242112e3651f2229dfad3ec64d4c4c044bbebc808530a1ee668f3c72aa1e071808a34174352e00ffb7e77f057cddf3c60df1715f77e30c9e897a9245b3f394b64149865d6f8ceb029eb2e7f8be8b98b134447aece2d447641638a4cf0b086986d7d748aa617fada09271df5c5b103cd30a3cba42c92baf07be1b49efd6ae8aaf6de280acc11e8985ba07318231d8aaa9829476611d4144b034cf00a59462a22927d5b64272b32d70d1931d04eb526af5866b9a72acd39e628062be5c69d30182730c556f2105c95af6d5b729534654b92e97450e14c89c52ec7fd991681e079a6f00b9af36a0e3df1e2b12ddc7d8bc77f7cd57204d1860905e979f7d251f0fcaa7938a0ef89ddfcdc825a52068f5bcb60a49669ef515bce685f628accf73e93f694fecef6c25d5d3deaf63dbf2cec1e98197282a6c1f02d2aef3578a3063678278de50c061cb559f4c3f65b5ff4bb52dc54e6ff247c6664ead3a3b924622f6729e72693a339f059961366c56ebbd94cd591819602094a1851eb40a409632a682a586f73791290a12b79cff253bf93cbea046b64c95244b7287436bb7f7460b957f2b91ae9aaad8e11d7b20f15457decb18a9cafe7473f046e266ca8cb2714ac6cb3b594a11d8bb4954cce36d122bfd422c83ada75090fba158ac9086338ee02b4b82e6da95159007ce1ef23c66e0ec85c1fa435fc7d2e4455b884299a188c514713100862534744e0b8911db65bc13f7286d6ff02d79a19421179a5c64c99618a5f556cbc83249cd0c7ddd40eab5c13444e6f8e690900f16a2fe0d5cfe95b061755ac77e5125b9bb01ffe6784058187b922638869acbc54b9218d928c9e74cd4a533bb38b79e5f4b82b4faa9108b6b4edb745adf68dcd241b57c87c94441ff2de2b615692ee7ed1f86ddae645deb61dc6c7a9ed3ab1f448b8641c0066e0602b4d4f9973ee49ff1a96c62ff7fd5d77c276e219450bfc169a2207657ea3c498f663c45d0d1331fd105e92642ce714910afe68f8b19e0f9c7fbe04fb3d0dfc01d7f593a550aafd874c3b147413b51daeb3a7571605229d98fdc06b9959a1aeed01adaad43fc552676bf1896fb682f63bbb2631a3d62ba1fd2d3f05b70fb8274312ce275184e73aa336b1808457c4ffe0ac8971aa8ec633065abae747a992a3bb0e546446f45c073f720f0d88d21ffb1f2d2347840dafcaa488c82c63830143dbb7b63beabf1cfe4e2206393ea7ed72851b444b7d5da1b1ddfe034273b7f319398279b673dcc8964ad89d841b200e290cbd60f770b7136129d01aa0744fcfa329cc22e09a5396e9e182eb8aeecd82cfb155e6b913ce104babe059fd58fcbf721ae3b51b95f868c9fd08920861d9e8d8dc01ba2f4c42067787dd445e76d3ca49c14005a96c7efa8e7b759a6be4d78f627b34b33534df1f967e6d1a67fdf99dbe42c366c451ea83c99e2b0f725231aaa19cac4aa6da13a07dda19c7461f34c18077f4596732de27efed9ce1e7067f99ea777b0f8c338732c41a4d30c72ac346500051a11ac2057955daeb78264d0ae981c8227b8463a64f031ec34372da87f0c74eee7c667e0d540a406feeeb4a051312c183f97e3b9676d9dc7d03f0517a1018530ffa33b50e564de9b05d65ee96776adfa76d3270c5371f764c37e76ba6e62316ce013ec950927532dc4069444d5746f0b7d2632db8fa30095fcfb627c8d19b9785250d5ce8bf2131b36eb1ad38a04fac262522e53917779cc95e1137427c784356656829c341f6c8523d00a1d6ecd7ae345bb673d192c09f0a3ae9342392b83cfc8855cae2da58a77f48bedfae51147923353fffcc6c9a2ca9299955c0b40e7076ab36706f718ef838f4190bead7a73a9c99d8a8f4001e78de4a7e5ba6f38665f969b753e24806a77338ff653d79b7f107fd26bb776121fbee61e77e8dcc669012ff13c1332369021e5e8f1d352ee20fab6b8476f8564941f2f8f1bdd90800366b115e100e530579730c9bf39c53421556f212ec8a51a5eef3fbee5d882a25fe11baeb5175315e00badfe84ec788ed04e71f1f20781c9051db79cb76db461a6ad5dd0b884eac3780ec61c40f6e85235b7ed16e77b361570a2930ec20bb84864f6505fd5a5e56766ec04dbb800db9980c344a243a74189fefc63a8c596265ad26f5c89ec8b9827a50b0de3ef0365b61d55e52fc28df17e391ef3f2bec55954602b13730ac72e2ae725d252f26510299c87fdab6702a79b314b8b8c9a41b1a89197e4637920880e3683b3896a537d301204b3ed1ae962ca1d7bd46e26ce8c5720409293faea9a5f630e463f9ae99eb97b730dc721eb905120ac332f80902e14cc9d3c5f2390d116a3aff08d30f20a05026775ea9a72b86243c98d9e042258d129a580ae1b11da6dcdc9c59a229d577acdfa019179e757c6900051e7a2ccc4d1275b6e53d22d3c8d21aafd89f3e500642eaec623af18a3260f5798da953b9931fc4ebbdda0afa1f1996de3ed54e77aec9eb30882da1d77fcf2f5cbf445c9fdd1840eb620c2475c20e8b766e5ef691bd534b575e0b140ca641091f98b9245228e1d31faf48cb00c0e5744a8957cc7301705e619cce07db9218fd3160b41c55eb9f3f45832f3d7b79e058f2fb443f30cfa480e94abdccda2e3382650f0226d14251eaab914f7d1db1d5eea173bcb68dd7bd91350c3e119c9d07a68bedec8243890118ae1abcc6fe8239ba68c6a15c09d10900bfcced356c71abfe7dc520e912554cd4b11e011fe06b5a2490e72ba4b6149af139c61a7da0763ab38d3d71517a851815b494b04b47caf7079d614d7963b276a8a8a0a357aee0fe88e6f9d49946b0939e0fb8ddfd6e2e4a864609cd34d8a978a8dcad7389e2d69100e8bbc038f82fdc2456ee498bc64360d294a9021b797f72dc4cd096758c3626bf57ee7df2247e6a348516f22aaf94c4d62ce79f3fe1d81c6b9e252c525fc8745b42fec873d230b5b4896ce89bbfb15aaff0e3ad1a5a7b6812bc76af57c4ea4ff9629d2b2a11b50ad2954ef0a4dd1cdf1275917f91c905dac81edff3fad8ef17ed3dc3cebbad9174d0537e2d471249eb2e8bced3d3cee84d3aa343f8fca83ec093415762580c684b25dd59b5243f8202da57b82d35086c17dc156d9cfc19c905274112cc4312979b312b224c525ff7da1a74140c2fd3520f8a835a49132197e4eafe7c73673a017d5bc3f8d6393d817ea52ddb2e42cc21901bdf0a923d4ad1cb41b583692bc8014607150c770d482bf8d213b3403ace5f4b7bdbd317ca00c63096c044f61f99823a0368d41f5c87f056acb80848bbaaa7c14207b88f4762b67b19756efaa71ec840dd63bfc237b6e2801e3e4f15eff453f6383917e97bc7b5782f34e2fcf8835d46754579e918023a968f6aa27216488cbcf58625a16d0a4ed2e1dc43e7bf8890308bd5caf99b96845f99bc8845e7f005330f253aa378aa51c3cd4d54a26070b003389653c3c3bcd655588f103d9337a752523db0fd86a42729dc23990bb3468eb0992df8ab37fdd29608a9820856be9a0c7486638170cca4dc961ff8a7dfb392cdc32faf36d4d4eea0aafee79b639b0c5031e32a70a665fb0a98b62fec8cae25b89867a07f512eb71b80a2f90f3b90046c8717100dd2ddd21947b80ec32ae9500fa301e0c97fb2020dba89f97fd564176b439f6ac2dc50b6270c4dc1e4dcedd3c498614932ea1793b93b1261bb134805afc1422bf181b26ea90e492a333980ed71a5fa5c41cfc62775e7544c99c73f5262f65b4aad6c336ab25fe599e30e44bda3fedaa8c72356c6662205aee23687d16286b8117ab356a7dec0a47d832296c988b7f31c47902c597c403b02d3f2a4c942ec8ddf077273dda92aa160b1974e456e54063ed5e8bb084c17ca3af455692a02f3a2368979a001ea443b192e3c59f1df7eba595fe57f64fc429e661fa6503c93695ea2b842df7f480a21576d2f19b78e75867d975d40e62d65cd817bef002dd7d605f72541329bf0ce98f0a5c3dac77243c9cad9a3441c823f361383eddeebeaefaf9a41a0f51cabb10b16029357b4bb5b8fbc6a1696cdb6bdd2a0b55191e930bfcd195953eef84fcbda165cc28dc19eaf7d8bbfdf6296f243e1659e214e8f65e19028ff538848a9968f2d85c9dd14951f3f22f747f6de8aa9ac92a01d52e4d31bfdda8f9ac6fe755142c1bdf210d2cd2baa6b76357f95b89e905ef584b7615a332080adbec8c43b5e7af3819f53bd679292d2134a17a8eab8411d0957f1de01c85bb9934729357a4db3f960c3bb41b00397401a0ea7914065a050cf2aa84d81304364a53adcf066e9b1ea26c06bb08b27909bb64c5054c2876891eb11af5571d5f978c7f8f9ce3aa4574cf57393443a6aabb25cd6779a9c224c75bc463122346f385c9f95810e4f3694d29c2251fcc6fb0c15fb58e21add4f36a025e44732e87e94c3c2ae2a1128744d9776333fb6253b4169a832e4626e453899db212447ac088c720b6f252063440de5daa13042eceaccf7e35a56d3380736a18d79f75ec1ee876dff7bcde1711711b87a88e4e54932d5ab24782481cfd472f88535787ee94c4c66888c6b898b4b79cc8f31c89779ce9da7b31c6dfd4882c60ef5d0b9c380183936697e38cf85dc837bb0f06c198c4264c8a79c827b53c30cb76159b9eb991bc475b3239e84265181a280892dec3b199c59334d2a65852f824eb840793b6fa880d37141114185c845f316f49ea0552932fae526d19ee546563fd42747001a4c22dbfdfe58de27ffc955de2db29ab5366f574dda339e4bc2af61ebbafd33e3cafd5a77ff06f7ec36eec8ed441adff9ab0a1655f702403876d1551621531a5285e364887e6c75999a20f9e5da10ba4de4eac5680ed72cf95a6cca8eecf3acd05a5a0c2977c4edb0846c0eb23089b155db4943c8fbcc78e779bac3c92d23ff0a30b64f75ffb906cd8420341e103aca3a11a04430fc39f44f723f2281870d74978e4b5394178017b3a20b73bc1af3dfe06c7e034d4b56c8a62b92e6b991db7428b76668287f0b4128958a37e7d232f10c5ed8a13b1daed6a5b7ea40f083e34a3e21b9105c1c2c26257126ae13a0540634f69b7c43f8b9f67864f55b47b73b630fd4fb153d702def4a40e0e7e513d69b98df59724f1888044b7a439b6d6d1c643ba83f344fc3ee77380c28810f75ee4053256a38d3c27256c0a64864907ac766a850d113004d4c3534b751b905ba32801678a3668ab70e0ecc75c6913202bbcfecf0580df39c43c5161dbf743e9e05c450e2a6e7c2c269b11ebbbc595e1b5d2be403d87e394982f179dacacd785083d114864d03842eba22ca12c4b29bf978702e49b686ee8bc02ce3949c2fc279a97fa20bee731d93568a1c425e98626c78676f3093136e6f0cb585fea6126b513309085849e543e9693d1a0c8081288c83ee193b791c0a75b33f586c606f85b27c2a9c708f7bda8e283f77d694f3c4f0dd99cdfa1d044a5ee8ef481a4b25b7edc6760b748fa720324fdac0d75e95541750d5abc74b5dd7f66e745ce17903b1a83158ce98b3e575529e3c5c74d33f68d969fca727120259fe7a28d52657f61718d69cc649459e5f0b833900e27015fe92cec45c550483a3963f98a9ec242d522e3baec0adfd73abd609cad76efef8a61310d9d4871526a715c148a0e0d0b4135599220f2e4accf0707881a2dcd6b3a40dee3542f44b18c6287e85dda019429d7b46a668ad7e8b2aa6b6c05607ba75e89fe6927b071b72dd9b3a5f0b5cba8107f630e9b694ec26457fe57b9a2294be57df023f5ba326850600182b51d5a5340930a3d1f8443ae9b897278c1208c8596c7a6314c8320c090b68b06d3b4844dffebd5966719528e215d9c2efa4271564ee507e197baf8a17aab36b92466e9668fb92ce24c2bf929f5a26d47ab822dfd309eb7e7ec2bd7d410beeba1b998e85b3674a6e6ae2b9994d401b66e8ff51af4c7c0d2920216ba90e57830f2d3493ae5c012c4e7ce26086c8b841e130fb65f05e6280890675015037c8f1d5c4efc8e9aecdcc9e16634ce54b32a30e86d795e1cce3a4ce8596edadfc47b715ac1b6fbc145726b9883278580388aae32cde5014306610ea6c3284c5a539be332e22ff6ccb062f33f0ab10187d5718efcf035c4634e20b572eda559731c3f1d7588a55a917c9b1fb1755c29198485c9e9d80cf9fa8a440406d03b2874194aa76145fc59225fc3bc14b55466366eac27e50f947824a7764a51a3aa93f17f47dd7f2340398c90d8889051b9594c5c4f9eef1968d488c6124d61f9fc1b2992c9f19d84669851bd9083244390fcd18b62d89befc8132d02d06ef63a5f076c6886a371b6656d07f47b739996affceb259ba7dc2a8e00eba99a7bc7fb53e637d68b3fb1ba37dd9ad4a599c7bde23461207796fcf691227901ca2d41eceb238d35423ae34b9383893f30184ffacf48982757e4f40da603bc2162b7819373c1f33e02c31b85a52fd816e171404cff34e671152100b02fde7cad03bdc39108ce5ac4e9de549fc5ed329807b88242ed82dfcaf5954c2a01cc2188a38e5139fac1ea187a82095a0577f49abe1635571ff6bf5c4d7c7acfb6c389b520e6229de7e4c99baa077c5540ce6a8b1e2b70852013302bd7272dd530c763de5f2a809bada02013c9a42c576ef0cf8c6406393a2f7cd03b2ddaed72cc6877d2a4c293c3d84dde0c8f6393f10c218f841cee410e203c0b16eb96605695d556c6bcde188b0552d56f9212a0fa7c90719d67729162e0fa2b1868840d9a709d6d91d15cdce6441ac2788e7cf67c58697459452b0c0083e7d83f0109551078e0aff531ffb9f8a82bd3f0ab2e04e3c5b11b8bf052ee5625989f763b462b2b04726fa259bde492a6350f07a669415545593069901c72ca1fe18ed9c238b821cf981e8fd86d8d2ceff6ba05bd583c18800800a626deff50d3c39f07661046fd50f7ad34032fbff697f26c99ec9b8c702bf30f8e5c5639c43efadfb4d98d47659680a054fab1cc20f1340095977316ba4bd62163841f6eea978fa0387431a1fa7f6ac650c2894b1034bc7fbce8fb5cfc20bb64de4d68c0e63860ef6cf20fbcb6b4c57410af38f36f71b09ea40732ae8167b32aee5037bf3b47a56145f9202400d4d01e52e79b2d655e639831a74247d150889c26d57375d397155f6d4ed5a14b4d51c022c7ca892beab30ad23476ecfd535acc66f55d6e6f180a65cd9a7d90818ed8acaad0f6787b8c1f5e586e61d94a6c96c511e5581df649fa4d9ad2333520213da2623fabfe5b3dad2c2237ddd2a54e2922f88a0954047480bec7adb5b51883d4f30a2cb48498d8d544622d2cfb3dec2f7dd06d0dc6a2532ad062b1ad4d5803d55fd5a135390b67b93a56c223610382d06e7f24f6ec5e8d4d68973a7f1e04a859a1eaf67863535cdbb327230b7433a128ee0126c451cbb643abde194f363ad0e8c4314db56bebcb386a103948bd9213c4fcf716aab3e2074bf7051d2a32b83e7a21827cc420f4d5b21e944503c6b5a8d728f33f9c0e6c455a231eed59b88d1d3243dd6d4f1a81027c08059d58ac0713e7ad1486958a6886072627ba03b7736e95a136b671bfa1349de3d71de9a996d27990bfb5239c9555dec5ceba43e34542ffbf7e5fffe5c7869a8c3379823d7d2291cb04503d10dae9fdf5feaf799f182adb483899fa89d5b6370ebba2fce809d7eb9bed6528755c7d1ef3552a6c37e99ebd9e5650a2d07a0049d6901a0c159b2ec7053637aa8c96415641ec83bdd93e2ac877a0a1af8d1a9df3efa07ff8f8c69465c65fbb7aedef2a9e53bf47cfd0d22bb614ff8e2c88fbf40ee3d5fee48f9c91e9ab45882123547f8996a8211dedde3d4d5e59c3c969f67e00423155d7ba9c0e985d1ebb37603766f10be25c118990e10d13e1b6919fa02ed019225436809fdce4d164397148ed1fb9896ed95a8e45e3663cd9d11095a7b7f7e5cf72ca4293acf02dfeb003c28d5af9442939f8d71c104bce2c409bf5daa7948ab9bfd53b6f2ea0eab6ad3fc675fb67017a7848a29b0f1e1b774d4afea63f24fd1a54a33967331d66c3bf3a385898b330c2fa3aa0a1f06a4351392ac907dbd9024e0a9947272be459adec26d134ba74a15c636243204f17c8a2d2489fd0439a971404951c3e1f5ad7a83dcb9d70a3ee1afa283742f520e6750065a3ec4e21125e6d717dbaa5dc3a2420692267c4cf3e28f5265f80d6058bd7c116f2642549e187b07f38ea735bdd6abe674ed6121153a684ab4d77e807066ab5fc76c21720cdb4f39ffd3281fb828719800135ef42b7b0363b54a174c8e04a14529ffa1a54c587ec26c41d2a9df2e5d7679386f83105f166c28ffc341c08763f04d671cbe404b1221adab71c36cae22826ff7151090604effe00718550482c571e7884e23d37095b1a47ad33845a12842a5302dcd7bb7477a95b7827b411e000f120cf065cae5f2c63d77aaea672534f5284a082da84b90657f37f99f17133dc04f7c5e85c076669be9d5f44f2481d12f9ca39b9f030b1c87010fbe2ebc22d8dff0606328f2527d6620fa0d0fcbd80531a0d8eb747cda38534ec96ee7e6231e5a79d3ac6dad7f93db92581521c808a9108004e54738434fda78cf803a76d8799e86a0e2d9b2e62935ee8e0d4d4c7cbb8623d033164b1a0a934dda6dd73adb6e026bb8f9c81789b08cb1b91c1a4c61188708d5752fe01fb88867ab3f04af009de4e73190bb272df892bf9c37da663e9ce3a53f7d5a8e8d0d5febc5c2eafbd1738c326782c2cc90a7c593c687c38da3603e9fe89eef570fddde8c5d2a87b4f1c65c8dd4fc673a134964789e6071553db1293afe4344a031af9d44559426dc800eff195cc324bea157e48239f2effe7dea4e36dc6bb5a433f28d78dbec7fb35c72b1f852179717ea3363652850fed4ecbd66dc85ab91c04c8bd16956e776860c648e33642a06ebbf4c72ebf8e27a9d6e7a0cfaec6cdb32d8917310e761106f91b8d7886c26bc7033a001fe25e8ab46dbfdd34d3cd3d6c3487ed879e9793d0d9a3ebccdb033654ddac2092bae34c499931976c8e9a28b59e785a141f02783b7eea7bba100845b8bf100729b121b5bd82df654d9b99626f88148564677ec8ddb29e0a2048143199cbea1f4cc7d2d7ea3dde4f6b8f37dc82c0408990d491f410218b7d08d49d2cb3403d53268bf30bc3490a16b69ada1f666613961a038b0808d5664fa4dcdc5c7b5850d4b46a75f317b067f740ef89fde6016301ba76cc9955fda16b9f2664955079477286c7bed36242628ec89c6d8c3e2568b3a4f58f621c323fccc75ddbae200a694485ff0e75732fb8b80dbfdb1d85642698dc16eb8a16dfa59cb5e0c3b402c5b3206b20948ffaaf6fad92ebce592c0ed746b07e3a35dc1225822ac5395a33f4569609bdbff1b4e6c9086c631c5be775fe6a064eecb3bb88b5049c10732a7cd32b76e7624f136994c43f6ddaa84d542f75b0cc24af559c2affa9762dadd040ae07b25419127b96eca0cbc2cc17d6d8af44dc82155cefb605a91e5d4694fda3e8fd4d1e556b73833894f3d82dc62c71754a19a0031b98f3b8837026ae3b1bc01112a3a8f964c0bee3f04e82e76a76fe43d237bb1ed5a4405aeba0335e52674cd1a54e4a00c36a3128cc0571105fa2d00167772f7bfbdd83bc81798007ec0b1e93c42ce014d5224660217dc14f5f52dbc6b0bae29e2649997d27bdd6b3d6c16a1018be389feb9d9e73ac4981a88d095f9e26646f270cb14388068776ea3d9173ba2dba223dfedd59268c995f6e2106e5c4a6201808b657157eb6715cce6c3650a12677ea2fd35c2e94a41b102aaf24d01c673a44ad5110d25a5cb54af0c56834eb8298593cbe0416f29721745a408bfdfd10497bacd5f2e4dfd051bcfaa4924d327b722e72a8c78195722fe548172f432cded80fcff506b1dc60750ab240eb062048599d39aea9d0235d8d4888b1bbb89daf7863fe795cc7aa9fc1b7dfd0a0e80ca159fe2c924c92c7ba9360f912e6b1ded36b9d51b4cc0c3c3bc98e4cea65443571b39d6281c6699b0175e2d3a8f16f824c04625f5580afd55c65d01388790ae49b3fb76c419446cdec6a2ad567f4a4befc91a7eaff893b8dcad5b5cf4934ea80f0342e8ad358588a37b0197d5ee3f9ca483fbbb2dc86adbafc5b3b0557d8b9314ba091fb6c1bd34f015c3d2de3ec8df83554ff85410160f2acec058e5b923e996e7e77d7cbea29dd7c530e6ea77982c7edcc2f0a71ba491325963355d2dff08bd8647ca16d0e8de14d46e6487b49328a6e8911541855d597668ae251284e04e1010512b7370c4bb3edb06f77f2a083c5a9efab3d3ab0b800c5bf78c03fd81785c1c44f376abd9e0f520d32a824a5ea3b8313d4072c33d130d217fd81348ee0c757eb12467c6972fc739da22e03dad798718ef1024d3335514dae7e9711488bf7e62c5ea5a0d1689220f61107e819eddb6074a2bdd760833fa6e234264060d5fd58ee9147644c1dd97c191011a8c65c54d19396bcae73295df31a0f494e31919fd28010432aaf84900b8d14cf8b98698f4c59a2c79e04634e9397856a4910b7fb0c7b0be3de5e8ee18a4886bbaf53f29ae4a79a6cb76abd6a50c1951a846764bd2f6bb3f31b61f6dc621e6b653d830b2bec08595267051d9722c036aebec8dda5e7001ef4755a4fc07e4f21eae80c02aeb0cb5074becdda39988c3fc6a1a09bcaffb8c3e2aaa788d6bd5e654f9277eaf3d8451e2c22f78168514156bec01df4265fba266be676c79f295d9659e64cf73e28fe16bc4cec0c5625985cafa9805d2b7b98a66944f5a3b8b0ceba4618e1d14021ea0df66b41a9f1e5b2a131e924529c2d6ca0b3220a45b39856a09dd9bba8edf911261b214d73331d3a22a4ebe0c5b2bb91ae409a87dbb95598e8c21e4d494c4eb278c09f816ea58d62e837ed031c76817d479c8117bad62550549aaf2ffcc87a67726e5082fea12301fcb3f19c7aa341d7db2af0de17326efd400b8da7d82d0c7039f3402273fd15fd6a8a814b1a34e707c165a0584700e591af050a2d320c2eeb73463d626e24bd701cd11d1bd1f99dced8aaf788120f0193625281d2fa2226c5104e973bdf53e0600f1e45be4819bd5fd30c58996108a1307165b417116debd70966adc74113a3bb8a38ed72e34b6e29ebb4a483fa1a97748fe205d42f17a2f3c738784e8b4c21632552f498a35673dcc5dbb98494291e07c9f46fe7a80481a8f7e2adb08fc6be2a1c8aafcf9ed15da244584f8c8c1060f3a714912c3d34cf5d352a1a902874f7cdd5fe0063ada05f48e5bec1c5fb07ae10ef30485380367e20c0b1ae27fb32a126480b73d26159d08efb15d408fdba61368ec46e9d366d1f90104f719f2e653381072e7fd3df2e81bfa03aaffdeebacb022f774e8fb9f8a5f1b79d1f2a0ec716b3364e5fc7b6839a3a23f63b1330b14c1c4d76f870917f1a943eceb20dc6d05e9648831b122526841034e87f06db164e3bc77f3af46803230938ce8612b09204e6de193ee2efe458e79a7a256a969f89780312d489750263237dc952f23c0564a480a653a062f47c50a839f9acdbb57c7b1363e1f34d4813a47861a3b1b3fbafb7f2d4aa33168f21b677e778c9466fceb5c74d4a96e8a5695ff5267d01c7a79c361b97ed93e3d76c80fb2b531d1f8cd6bdb39abc77cb7a11b007523a62cd69e3d62dc2256816ae309299cebf40bc5d731a6ef182bcf4d6b223ca4527759cff62a07df961127bb06eb5e6efd024b5f2e394d8c85a1f429c6e62c5af41a18f8d60ac1342576e1dbe6427e476de1bee7998a8c9464d97fa101150943a694f87ef2bcf9c0bf7db360bd2aa060f68704aa5cd659d0e593fd8fc139e5dc2b3b77c3d93dc78540ccc00b940d6f7e60ef58b7f6c1a2b16b1a31a9bff8622fad06edc05b8b86cc3096106acc286076a1b45245301114a37168016e975ba94b8d167b53dde034778978018732d36bdaee006bf2b32c00607c3f7be2c4a3de8f6656c74512d3a7867cfa3a2071749f7089c0784846ea4bdcea83f804e95d6f6367c202dcec33422305fc90c96ac6f2e08eaf3c80fe18cecb30bb29ab083629239fe9d0f46dc6696b90f7e872f16fcff489d269f92979b5095116770fc9837144c56e98aaaa8c13d356aeb99544df55a410d60bf5a1ebefe2b12796db3740eadada0951aad22da66d828f94305b03efc6b45131db33c915cef4afddd6be5c999fc3bd9bd90781461b8347c5dd9177341c3d16a4e12d24720e98efd2aceb44dfd063da53a311a7f458d8ca845e17b232b3489780445e6d8800ee399dfbe65e0721b9923bd2612e6b2a40e2d79d8b4b6f99485a64238334586f47657fac540db0a9af6b8ba644cd4813ffea553b285c7e47cec313307c3590ba39149ad9e503bcc002e42c38de3bcb2bb3bf72d7d5e6a3fa76c5428bfea92548055beab89c349ae301e4030b28b3b61ef318b28e4d312650596ec32926521a010b3caea5cc5e4d9c953acdbb4515c6f90cb5d712499efe015042eabf7db7204c3979190548c2790abff1720acf8e84f9a392bdfa8361b45d842a79e0cfae7c6b0bb6082a42b363a64c03ce528d47af673d4704afb597bb43826ee6702a8033ffaca2ae8441b3177ee811afec30131f9b1548cf27122b597dc024c7449aa9377c6ebea807a2eb8764df860ecbda7f56d7af578c4ee18f2c42c5d319bc14c1384245d8cb977017752ad32c177bb19fba967251dbcedc6276425ce3d1d318fc2a889b45b7979b424014d97fa1027f208f091847cb695d3be11cc55ae48a32cbb21f48018a03ce736fc92ce71970101dee89e6d1549517802f6df5939401701f27519f8e82cb9d7e2f45d80ef5dce556fa07842eed426cca6aca9e011cdcccadbba4d00704530151b957b7bf61b94b49239696f849a583497a03decefc01a37eaf72b5a92c78f4f3e21542b50278539a94dbfbb64d0553f7d93b7e61b863f49c04ee4db5c2692f6f029776b1d520a895648a7e7e5a481e8777b8c87b9dfd68d44bb63994a87e0f3a324fc816025017a0d20bf6e3212f4cf275d16f8fe33dbb2616d94b9d9f6add94d25c91b40eea296450897cdff9decac8666116c482e5768473bc5c40d4d516787c8820ddc05ac57ff972fb1312495e31b61e90a613186892c3108f21f2f552ca29f1840591ca01f623c5bd101358b705f9f4d184a9662485f8467bebe1c2845c691b81132369dae391db4b94bf9daacfd10fec5bd7187ed1a217ad95bc79257d72e79804aa0cd3231ea5ef43b8d2e55717cc646f40d7ae64946ef669ec7432f8b3235a5ae1e9c6d0f2845354770ab6fd01101baba996f81410fc18c4375f2ad25549929a0b309f25d860326658cac08a0c410d6f07e6d074ba00ac02360db409fb46ab8dfeacc56f351975b9dad4304eb91c6043c5b32adfaca6f71d78da254e6deca42efb7a48eccd5f60a43e9d7cb30536ce7709bcd6bb003613c6fa08a6a4dad0ae73b3649fef118ac0bc9b4f65be2a93ff44ea5a95c64a628f2291b93cabad9ec23a75599d9d31957d0069736c17f168d7e25c93de9ea5a64c24d6857c650ac685f6fe80b8c472e9c56901c93b586a4071c469e3acfe53cb1ba941e551ab2cb7002cf4346f4cedc111861d8f9dae3adef136d68bfa7541287a710d8b7fcd6684256fc5ca4c66ac7cb872a85f0f9780b2f41c6f62586899904470661a09fd3b71d06baccc8883a1e9b78e585c6144252848f56120b50cfc4003ed99c4bd43f5e0b853c0288c9de57eab709bd5e78f0e1b12d1340e42bef782c2f4ffb39c358d7cefc7b43f57033a84bcf0bdcc21584b5e335044ef2140a62e453df99dfd4666dfa7d5c0a816867052c37f7164d5f2198bd95eb0572c71c0df38efcb81a39b12338e3f17e2c89a13a868e3477ff4aa5e9beb0e83098fe48278211d5cb5367b54beff06b9134260c46fefa0c752fd1b1337ac44f4ea911f31599a87c7e1b672f51fc568c91c40d2be4a8839d96e56cfba165821a5869295dc760eea880405ececbf58a5cc48aba7ad3bd77e810ad5f94f6e726ad2b6d408956eaa2ebd78ecf5b99858754caa53b7be181d9530f8117b1e974e9757e2f6ee3f1b6110c0cc721fd15499b897a7a20e192b87ca5ef0bf0e5571ae1273b728bdcebe58648a1a9189a5d947a3ec5fc56fa3d519dd96e30b13b348dd7c19005b71b4b73cc704d4c0f52fc54f6ddbeaef3cabbf6b335cc7bc9c607025d47bfc152617e65c39fa6770981d3232235a3be3a266b7311a7a1c3344fea67ae61e7f9cdd4555f14f71358b02f78e9edc0e9225f2ad2f7bc11c43cce3c3bf491b42f6357bb5a5b33b41408386911995acc8914c50432761bfcff24314c57fb33176d11d2b6f6ea10290bd2f41b83270e679b828b07260514cd37ab043529ad18e6121b4aab13eebaf3e1c3707adcb5cdc7d2cfb1e954b8bee514e9365f634dd82fe47994f0c7035df7c6c8800ed07055202f0a093949b9124fa0c8d83f7275d8cdd01787828fb2757d6f50aeecba3a385f1f36cc9d923101eb7b9022a392ac6025fad21eacf7a8802a94543fbbe01b581cd59545e3776fa22cf84f2947fb9c46823a49da2d7441dc820aba40ce9a2d1622db6a207df58304d357bb542ba379b90bc63410a6e50aa8a37720431e8bf71914afff3bd4b27eede1545ebcc39f9d50725082466a54077b4adfa05f955f96a44f26eb6179213229eae72b386fd7d12a48f1c7cc88ac2e719a6bbe2cbc599fadd9b75273c1b582b670e5a32a7f0b677000de0bf97e1fd1e050da91d434032c6030072d3045906e32cc46fa2522a936e50aafe17339585e0ab4c2b7bee5fa1182ebe89cb3e83efb6bb1ea9c1643e6444d6d57d7b6f8645c1e537d4ebda3e5d484e5c723ab5a40014ed5541fe2ddd9f6cdaf0604400a4388cc04365cc6fb939d475503552d8133c1d4cf101fd0590303a93d9f4c1cfbd3f150ae6e2060c15194db1825736086db33b5e6986da8a00abe13366c46f916368222bef0cf8b85790bee9b0ed89bd24741aa203fc805024a98e2d74b854dc9e0a465e2ef5969a510d81e242c9125921dc3ff5ef3b0bef48694ca4b694ba200df919f392c787dc3efc659ba1ba8a4ce5c095842462560207dfeabf8797e6913c7ec0aa65d2d1c34cf944b967275004d8f7e973d8c575d2414dc7d29014d5d7497cd498de6e650eb3f8ae40f827f3a2576baed2aec9dedf352e71c9a2e99b53d5b204afad9bc89522a512f4fd1147cd9bc2b86435bd6183817c9a4435c6e28b4aa91f6cc8110ce52d9f30b644256ef828068a8aa7da669b3a1f492cb8c9b6c127b955e0b15ddc3c1deb9c05a9b108e2f12918de9b887d71379bc5643a66a1373c36097d3f744bdfacaa1684f202a0535043f7be433c41d7c0c42d02439b3f16a223c7cc6192432f318c9a4430f24e8d30987a238d71cba6df06eaf932bfae1cd09aee274ac152075b9e7d96470f814068f7fcaf90992478ef3343215d472e5daac020412f7f6354176f06637398630590155ec088bff4c2588df753fbcad4d88dab44b1beaf6ba5da7ca47aed40a19dac580ec9924462f1a9c14432f8f90dbcc84ab28a764895e433fe87cd3d60c3cbeea93816c8846c2c4f38628a182abd7854b7f511a39f5735850303dcd0267c039484f47886a6dbbe1eb81dfc84ae0539d71971df29c82fe2dfdb0e5a08b0143bca1dee60fee5cc8bacefda54451b39a33c031d2cf84425deca818650e29903afa9e5c15aaa67c4eb75e18a1ec94044de210c1512a0bf52c5389c7305d48ed512eeb8414f344e767e40ce323cdaf5135b5e807a2cfef2ac77b256a6539eabc39c25076357ced8f5366d410626bdd61d19c688ec4e2e666f7436c24be571ba6213f2cda8f00197f268dd154027df499eea808ba9ff78b2b430441ad21d1c0ddaccbcd36d2e4e197f3c60817e89a8a8aa617f9ec1d6be9c0bab6c19723ac68120e4477e8e031a2d0f457d62804b8b0e6b3bb1f6f1db7fee4151b4263b2763a59e9038609390fd9707d7f330d2c9074a47c6780dc908722245e75e09bfde2f3f6fcdc13a910ee5caa69e22a9ab7bac6960b8cb00c68f18083f103ea79425088c0aa7f23ef6bdfdd1f51f0d23d019382ff96d3e7f1ea09f509d1e5593b3fee81848baa54fe62f76cfdf60dabaa4c14a84bde8fc8f8eda5d98eeef770736cbb412fccbca75c0ae34f73781b002c022690cbf287bf32a1e705e8a3d9a0a0be3937dc837d2bc8d592d58b12d2e17029e08fd26a56855a79b919d369df64b67584dcdc6f883c77ba93c4e0ab99cf4c307a167bedb15c4c7c962288bb8d1b97b646ffc3b7d0e840608f4aa2c941b810edc41081e7a06ce5a5c2b273fcbe32043c3d87a4dec1013effebc8dfc92b12e516d497093fe6277ce0a702e2caecabae7c9720db260ccfede9f68b6b5954f83d7a0e66afecb9cb60a4565424eb8317d096f70478185d1f40aaa155bf8cf92cd4b8236c02de4a466f2d78412b2a1fb7e267de895c35d0129553d73604acf6482eeaf0711592f53ca1213038d4f12667de3b82bf611895c1c3b8337a2fa6db0c244d6e877c2328b8c1e549c2c68ae65b4ed20f91231517f16107238c3d73f27b8100d03def9394f3d5286daac2c3cab3b78f223111faf08e1941861e6d46666be23f65f2aafecb4f99016e5383abb45ece2c54cc843d28e0d5a82fe533e569f582ff5e2521e6be93510247c0bbfc49f8c49af278d9cda8be208f757a64f464ea4ebe2f0ad6b740dcff761a391020ca58d6562d8326d99180a5fd1565b7c9d6d875b65bc6cf357699b5e9a9a7348133818d24e781465eeeca22a30bae7c591fdcde3cfc7ba9c68e9c2601b57a305cf7b68d0a74a637c115ddf62a74dc6dfa7df901943136ed0a5f41fbd21179a80ff664b7311af4e46e2a65d17ddc38c214cf2f5f7ef7f50878be923f3dc307cae96288147715d1908c53b7f5dad4c8bab96a2a5aaa2e65c625f210922330f0dd5365ae4a7d81c781b1ae91e8e95b8e432b87fce50574c7459f2dbf38e678ce596fb547fddceffd4d2244be0fe456bf010f704d069a160130de4c6610d7541a4092e864135350603dc7906467324a9f17161f1ff90f70c782207d1ffad2fa2e572457384134355561b8e73675e6ad6b5ae583d9e58e9c051b551b94403f161ec25ba5d87e888672c6d2320317960238c8dc448ca6441fe0424da186f8b3b29611cf5f94329438b01babc0c7eb9b09ee839009b7c819fe27f1318c41896960935f253eb305205b55492c3792a261fec20e4176cbaa81e0d1fee11ccaa6106213b65d84b0cfdf0b4d48d117830760794743a0a5c052dd4546d19654138116a9a8a061a8cfde981ca12a388e27a511459c4240d2a65ae645657dc8532a447322dc82eb6c25eeb7abb5fb2bd908e6f9962d5aa721b0aad49fd201e1e412172e34a90104bcc26bcf3a3b9e54180b37061289ea36403684e27bc3abc5f8787cfe74bd4de262f22ebce6629e7c78b9b7a90040230cb815f3dc75370d7ef3c1d107846909c0911c8b9c6a00c24033ce64c3eab149a867354f72f7c231fb5693125205eb3493e227c357301eadfad40442b2aa69d6432b79af2e17de9211a0f2fd26220de0ea251342c602b4340625eef01d2a790c26917add42c3588922c701ea5649b54fca382c2998aa371f5e588a50318c4632dc0a11b3c45e02537f04deacafc1fc31984a44ffee05c0c589ed5bbb541518bab8eaa51397cfbf73d00a21844374f85507279ce8a3844b20fc4634f14ee16396977af37e73928f939bfef8153f0dc60864d21a18fa20a6462ce77d4960de934cde6b572e73b03e2dd24fb568b7d79a3e09ee76eeec234c0852ac2ced9b82331e3085547f9cc13c3212f8f2da47d5bd91b6eeccf74e4ddc37917fd5fc2651f97f0c37d00073080dc6154bddcfc50fe8ce82879ed150e41b3d76da4fdab25136a60bf45505a6df65ae01803df5356bad66f5b06425b6dd8d4abed2d8ba0011b309a71ff5497f6bd0787a5ccf8e18758e6fcc0f89d675cc39724a0f93fe30f52aa55dfcd04278eccc1982a001e3d8c72ffea7accfde51b290a6d7b414e331051267d98c6648c1fab596b61dfab8989910b8ed5b9b1e139d134c14a4f95729803dda3cc6dcd4662990bba1412052ec86b3ebe8e4a007bfc41cc518442e80606b59e2bb1b059a08d37d972c21068c79aa794774db0edcc45cb631afb212f7bc816366ee6b986ea223f1fb012d2ae58f90e72952e9ba92050356c0cbd0944bf7de19fea2cbece3389db235b188b646f354e558719a979cb2ceff0df1a277ab9a23aea71b991703b4f1126433e2dcca4a94c35ce65356ac67ba2550f4102360cb82dd6abfe9d4fc7bdaf0e3a0f0c2221daf7ff8a75b6a8f6829139fe7d40dd73ff23db80e71cf0bdde2c551e7524443baefea936605edd426c1be1369226d862fbae434552bb66828f2607ffb87e355550ce946a8fdb3e40779827685e48bdef2b1714cb3f49884b7c7bad2ab505e79c90cd9207216bdf9da6873788df8d93c403b211de9da2360b6ca0977d3a1be8e2e5d8d4fd507d86e16d1b2d90e390ac3eaf003c84abd5f2be664202bd7b8baab005f358cc9b777339526a2e1527158f5cdd1695c2390b871d0de98cf350932c3f6df7477b89044c259c1078f4ade107d501e1faadae49189797e0237eadefe96b166565681346d2f88b67f01365db8c538523374ef3daa4e3ecd3c49064ad87a7c3d8c27b4bf1318fe4d5febcf2702ebc67c580e2aeded4a38298748113588cee8cb65d64b91d8e2a8a0c45eeeacf3cb8c6f82b9e768805182b50abcfd2c84e8a5a37492392e64a6c9e91779b2cea9c72d47550e1b57778d4c2d960b33d40c9dc579f8a79d5855476ac8aa481697916037a82ecd9d594485b4edd9e1f121b9533713060de8babca745e375fe128e9e0b0d9ee6033c6c6e3c959450cfbd917a7754caedea098f78f79c178f2a747bb7a763fba2ec2466f656dd18cea409149092a18161aab94103132431e73a01913eb34d6a51ff9bb5e418caf2821c6a5ed1049401fd2aa67c781d020093d53bab8e5fc3a8b16eca8ac1507521f0837c87ee251ca961d3208a1ff8cf2992a2b6f87023489ebead283da6e6bf232b6fbbde4377735989ce97f46250aea7ecbced211d89b3363a17f386b19003470a6271504fe51895d6451ce47c04958493448cd0eb523cb59c1870dcb75f8572d50ae32cce5ce7303e76b50b747cbf018411f4ee205a72d0131f5c71e6ce9ed735caeb82d2b40a0884721f7e4b8bbda9c316ef473a0d5fec6cd580b20e72a49d9d4444d6cef61f75a56f7ee94a5ba830ed4dd4100bc2932129afe2b23be2a8d84072bf86f6b061e87dbde51ef5157cdb5d4960f48490ef2e6aadd492e677d66ccf0764e86ae0fb945a19c3916ae16446cf9101315fce55b973e275d7c8998da20e3e4fad7c1e77e5810edbed542b275046935b900b3a77a307ecfb08eec6f1f7d241fc33525b325597a07ac3caa4573e22d556ddb06caf702d2d5d9e9b644bc70751c0188f84eae1c30e9f74b6237c053cf585fdf7086c5b6c83e90e113e01f6775b46eb773d0ef8ebdcce0ee060661d6c68d0b9f45e62ab3218fbc247e01a7f32aced2ea373db6d7be4f2adec2bca07d34aac706f68135ca4bc8bccdf9bf4671145aed8d7afeb308581068b6e91dba24db5bbee07b2f0d701c49659c54b959528f23ec69518276fe030d8408b2f51c5b68cb7a5613c7d1029a671d41e2595ba3216878bc31fccc24acc6773a0a287eab332eeedb8e634a80485a93ef6f76926c0ec5c8dc1466bfa5d3d677a0233d8cd608c80a86c5c5ae39b8c9ce154af9afcf7b773f9bb9728b9c4a4abc5cdaf123492c061069be46ee2581f8c072d096bfb739051f75cda8aebf44185dd2f9a2e5b7b3484c51fffb0c38ce93cdcc50523ee7aa2420a6dbda81e6e3ed9bf1e91c3616928fe56ca02bb717a4386167220df629cf285846f673a99f4effc6390327688fa37d9fd5677f5246564253817a84f4ec18de09a7e6fa8d3777e33fdcc6556b16690908851751aaeca7442f21e768fe967ef248aa9dc742328bf93cc38ddaf89b6d57ff27b46758180e52ae7e01ada7f493b67efb1defb0db87176474df73a48541676df15ab55aadd839e78d68f4e825fdd18775cae9ba0a91465ab6d2bebc2305c92f2d8db53e2dc9a9d89fff633f770c9971061a623aad58911ac061cef156be9a8c1f21a3a81829d9b4fe2a2c6c7adc4cb8eec6477d8a31af6287c8d740216c08a4561c164a6c4890c0b4a7daf5f6569753d493bcb4602204c202fca1c3f09f296e64944b875a54bc9801ce2145541ca2dd5ba5f6614e1bfeed717ee6f025d89eb4df081921a48499150b79f57c945a30cb9ec74df16f9600508f97f4c1ded41aae187e29bb0ecbe2bc68fa0ba9474535b1b07747579f68dac4f90f19aca60b54c04a7bd2f8ab154b7389cb9022d6e2b90789b8f17aa8fa8ee0ee1af726d737fee913a0cc38a0dbf1d65a45caf7d00a730f21895c191c38ff0b9d711dd8883c9c025e32f7770a1f04bc7f88b405e6114da655d73ed82dc42792e7583ff1d43f76de33cdb741949903742eedf620cf5e656eb16cc02bf304713b4585b65eeaef6d576c202f7d49d29235e7893348094f7db4a2534853743a39608c63debe0c682031f216a2c36d59d833e0b26caddb2e580ea9db3d61ee0e3795cad05f74b7d999b13d5dbbe480e7fc405637c6acc3035b54d8d27ca0026fe45d29142143df81131a4582ebf0b74a7744820792896c80eb6827117486dc3f427eb38ede0b28ff587194771017da904f4848edb67d1d4cfe9f916bfe99440fb274a3d3fa3f2df9930fd629dc41bee52fd56f7a029b1debb777528e291c8143a244cd67b3cd492f93cda69f206fce9a5b27ce2469e6dd274aa5c72331ca343bd6a5fd6209b74bf6ac9b835f6da91fe6e228c43ca862f15c758c9dc788902068a60ce6452d230b01d4cb6facd8d131c305d5f8bf4180a42978548f89065284ef52051c680bad2f40f9ca61e8ee0cbc0d159959a82153d0335a29ee9ac05c3079b68daeb11362427f83490e7cca0680202bbe238c21993f5d2c7256a2d65be14b63799cd5acfcfb6a26f9cbb79964be5b02428cddffe990dd09cfe5485b442a58a765ec7153dbefd90164db2847658c26bcbcb767899858cd97c1ab93a7698d830443ded8bc40e0f7843b718ffbe8d9ad00c668c0cb109620100e11c39845e6f615792a92331c2cd82595061e31cc0f60ebc6e03a5cad817ef34041e3f375feb6bb751c0f020a90a47b1e069d7f146640f539565874305b2d5ce07246717f85b03b807c6fade7a8aa05b98eb8981aa14768ebb8f23483769c5b4f5c35c965ffdca72aa620bdad157a9856584be89cd31311aec69518b77a4867661844f21bbfa820ee84160d4c5910e7bfe60b01c80214857f3bac5b1b7908f795dcb4282f801385c6b2f88cf46b2ad4d222914d926f2b29ca79374c6182aae69a173655f81dc76c16dcbc6290768fce75ae7a6962dc44858944dbcde65a47812ebd33019b078fb12e225e280e4be163e7454843ccb02f542eb84268836e6c6c47c5427dc8f34785b65b7903dad92d57890e41419f327c596fa01e219c31830254170c1c8e9c993496eb9a5a87ee71c1e4e0ad0618f3765587970194877e105140d02079e9444519fe4a3989f7aa41d2a03774a404b085d1fd584d823bfbd44dcf93961af85a4831107afceb1c909e062a21b3fe235b8c2dda9820a3368ce3a64094221e9572f28084f5ee5c36275a2ffc3b9a03e0db1576400c1f371fea6e68c771f1f9666562ef7f7b6331b6f82bea87d81e49731e02fcc7fd00961a8a0b971bb3f563fa8ca3671f5b5fc9027a0d5ad5cf7e208c1b6a92d9b75476db374d9205be9525348d80b099ebde306351518b2609c280d571aa1c8602d52e28195e60e7603dd12bc3fa69ff45e4a12e61ac4c670afa5e83cf473ccc292b93f7de85d75a685b066032a32fa5cbe2921efbd09a177c5f61f17fbf7368b6e02f871c26a6f09824dfa45361ee0d056dfb45cb5c6bc783e50543aa0987693ac0572efd7ef02a50bcbe774489333d5e5e80ddc732d269f69f773d7ff4b58589c97abd5ee7f1ebbf9f3580253af57d9c9ea8239937be3c025573e5b917cde9c0f81bb5ef8f19027313d59cf04a59073ed6a4c5a28495d41daa3778be9cd791e0ee356ed47f717db04c2132e6c33b3cc50b388a843c0b9ab4f4af2d63f83b80a0aa17de66e4e790873e251353a95efe6098863299e326a916ff1bdc1bb546bc83e8e27267b7dd12f87198efd0afd2b06b901d77d2f826fadc648b591119c58deb2a6db628541ef3c7764b3afcef29720a5cfed8a674856333185b13a356aff8ea3cf609711dcad2161b461e62bedb19fb904d2b5516ce7756dd05ce16fccd13edf3bc36e5c2f9255e4ab015ae9d12bd38e4fbf089dee9144cfcecfc108cbc796cfaf9d1c4a5b428d821555b62da4107b064bb9ea50104cb16e52e0c34a9a8a8f708a994f9e8db2379ee3f64214d660d5f158c8530c2bbfce81679c9b209217759e519f5fef91bd5ddfaff05d06077fde4dd7eda953888f5a4b9e33fdc14216b89079e7649a047461369b2676669e85edc9742df8d8e89a4976694a554b0254375d529c2d6e97c5551af0768c0565a29dadfb07dd17d30b2f8457cf604b61f10fb804cb0795b8499a41663cb83f4ebf347524c80932bd1889a925a4778e2b0289190ffdb2ca769b5265fc8069cdb09bceb426e9382199bd5365c92f6990600f98dae6a9b6c44a3b06e931dddf7fe8a389a47310787bc5ded904e1751d2d96db945889480ef721dc85349b9a2b0dae772613f92e2644681d037f232a979f5a7725cfbdd998e90252ef8c550a0c8fe277dd2c93b8dd35add60a424a31df52fb50e278e198fc8d73f7c426ab1b0ff0be93b78a316ef6142166a1ec3f02c6b409764d625721651b4d85ede0c969c4adfa8c06cac84d56197b3181e9b07d22688adfac376a45122a80c5d99948578a669ea7adf18ece1645023d05ea28bcd54b6f52a5ebd3ac9c5a6f81c8ea4d1c201e0544a7b841c176ccc2c04d06c0839ee2f299aa1664e1c52678081af0f5fd9651ab008062e2e99935286be81bc1214a918f8b901dd287550c9bf50d23e0af95eab16de1aac5bbdc9064aff388869c2e3df5bbc1ca0f36469fd3fa8d16066a5d5f129d9e062b2a1f8b2321348f5dc8dd953359aeb3369166f91c61f8abbdfef9bc343c1ddcb6342d8cffee6b75988b9abebd43300a33c73a1b0bf21f7f53413ef444a6d20ac4ea06a447c80fd7db5b8e9d885ace4a50028c41720142c87e8f3b7822d07df8393ceb8356210f64c0e9b8527524123eb7ce3c6352f7fc9609b9f73fe5fa4c89fcecd4c76183483902ecf8e3291a064224bb6dcb359b3aeb551a7a29b91993c429bd00c9941df8baba888a2e1defd88ab8d003ac20df3bfb3ee7e43f210f91db40fbca1bac9a3e36139eb14d7c177315be9420c60743af67089562f460bb2cc6a9b342070520387083d59abc9a0e08aab7737285133d4c9faef8a134d120b65747900f568f390ad5acb1a4aa0275213772567c7cdf8c6b03c605013e98afa30b2c9c111d1e6d15fd9fe3f1f9ca4e7cd77a5c0acf880f7eb71453a9cd8a6a9c6f9f0d8081cbdb850c5ff3db54f6d9d1a0e27f20224f126ac3a4c7da21f8cb74dcf22169bb068b7ba0e2470246309d3acba043ed8c19245d13a81dd8e4cf6e56d238d25f922e4ce3ce3b209ae28db6baa0f3ac2fa0a5c3c396e261393f358f4d9347dc6d8125938dc4ba57bfcc372ed29921c600c4642b17f8e9bdefa002ad17ceb23a89b769cf9d7146e1a9e1bf941602c5a922ed14d16b8dc4eaf0a627e269d0af62c84709fa276735555b7c10f475390aee31248fccf950f83ffd1a25784e8a77d093912814f505982a773213519572d8be321541c2f8f5ab7ea98f4c5e0366ed32bed97d7681de3e8bb8fc202ab2b98750baea49bdd9b8bc19d82c1ad8bfd371ef79584381c727e6d78e290f1f3cff54e693acf1e821260aa075d3f89aaaffa209caae2000eb72799deee07faa375ebe04dd93786ef0d86d4026526b1355565626c194b0331aaf5f4cd0d05949e1aad560578372c6ce51e4453276cf45fb6b48620034cfe03ebf919bfc029247abc65c3e11355462c9fa5396a35fe95199a19db3a4fad3108bc83e38775a4eb41129906ea914d8ccd3eb1bcb3feb7fed11ca38a58b3be7a9d5e9f7d6630386b81442f754119ec32e479ced68070d0c783ce173c88c6d95615cd02a0ef6a74fada56cfe338ab59a32a052071eb1f6f10b6dfd920c0d3ce7759fd9c26df0329e808118ff2a256cf311c05972835823f4bba60669edad0284f0fc8ce81ed8bf4f217df64d99780ab2aacd97f385843e23110afbd10d7f7655f9d4c58bd60b71134efbd3d329c8fecc486a577615aa44970b6a6086eaeed07c51c35773462ed75d02afb83f50e8625172101cf3d2e1973c055d4f8bc1bc6b7b084969bef0ae9c6e73a818d07fa2a030827f28af3046ed8baf3932a0f44cd01925427d209cf02b1a78e8eae5bc9c1d6f2e93f3f9d456099e80aaa58af5955a5f6cca4241f1bd699dc2ab805c9e959ed26684bae26527b3b4be617397005a379318ab789216bc339fa777136563d3eaa5d27e399c96ba1bb34c52c32c43a50ad5ca4929c65f0eb7d0715f99ef6adbd9d2e61007cae6ede11746d43497e91792dab0d3477745e6a0f3467b67081357ccfaa98d4dc75a691998f79307b275ebfa02889ee0748655583d081f3c411f55f8f0120c75aaf568c65734bf528b0331c8e0deeb5414a0010651f6411d3676a19e178d19b6286ee583b7b653b5c334c43db87d314c8dd94f8fd2efecf5962436e9e7f14ee12769ca79228fb4dbafdfd15917d3302f2fa9419a09fc81c5a20013f2c411b471054ac529b8fcd4878da73f385d7161946b82b315db58bfbab54836c6c52c56839ea9c7eacd3d158576e7bcf782df347a43b929cee019ebe676d1df8c2a033fe4005f9c938ae7a9358d3e403204a9ce7c05b52f227792f9a572824764da4167fe59c5a75b8a451a1a8c45191825371765883f9982d77a98fe7ab8cc17e03f148d0bcccc0bbf50d1d868e26f8702026aaf44e44f1eefe89773f80f9e77ecff26b19298d6ff95512c1db50095430d13a0a34ce2572e3084cf5d1987a2a5df3ffcec4cfcd3ba3d05071696b746cc07736312a32293ff25ca2026b4a8f399a62932b4fdd141fe07c48f8ecb9fed696fe406308918fa2bcf2b355bc03ae78609a33ce6d396884cfac0a631acb7505471619574c2ef8bea9d914264f9ea5dd3d81bff25bf79c85ffddfea0771cbdf36638ac6e20d99b81b806746961de4e896f72dce789f954374ca3907e1fe79416dcb5911492b4cb26e41d06aafd007903cb8f7ec23ef221d5c195e7cbad36318a86f24af7946e452964a09a6d7cc2ee4b992c540a19a2a340f069e5afb8fef62ebdc53b18222cb659673f4e2c90094c446bc81d68efa6f938390abea50db466d2c8b746757cdad1fb503790d80439df515c5b1415ba99181f7504f22c40db8c344d0318404b5339955cb34795345a625ae940db2ad4d5383dfb782095499ab01843f274c6d34253bfdd7eda21177bbf35008e6931f21d9e470483a4ec6dda51fce0c0507e8a1b8138688cfea00422cf224306a8a8f4674731330eeda2623834450106620cb6dd44fe71e792a995a3f8c493335b704547934707b899f31829b6f039d47e489dc03dc0e03c790338db99ad272aefe8f98d23d6ab12cc785f089d9d941d85a5c545be25b00d13ec32d126a903998b5c0a33b412936cab579ba3cf3762932bf71664b7183c234eb4571c3db3e25d7369d86e1760f7b289cc15ea11e7ce7ee64936ea3c7032e294e05d61e4bd8290bb74031307c04e460f48ae256045d470610377f1494455c5b29753ec8910defebb669f4e84b82eb3b4cab71233fd2874353b502efa36c4b3b18a10c1fd5fcdba9e47af0d6d6523100403c0cba737a80b5e7a3e54ff1ccb6c491632a79b0b860824df71e5fccccc49651ebacf0403a98f0f7d2fb8834c2d7a4be0c1cb401db8152b2e0cad81f16539df524a9ccb953aab468b2e41df765b04505faa28571547acbfad87c786f787a60ac4ab15841fd71bc5558dc454d0a19289b9fb37d200052fa2816c75197f74967fd3ddae07a01163e96a417e760827318156dc960fd4bddca4cadb184ccebd196ece2a825237702957ecbaf199a8a3308d22af9213a91ca8be2550ac1f84745a22e83a7b4445e880b247eb480bb0513e32feb03e7f96c056cd1848d1dfc9ff6648a7b5f4805be8f368d654791dc56ab2c6980c70bddb77e0eda8442b3e0b72e908b62e8e4b178561a385f2a59664c6473cfeb060712852eed351b9679a79366fe02e8fa6a486b80ed4ba97199e5b28fa1f6c98c7a3fd542e42d36ca73b131c2a524dac4aae8751b7d5012dc38f58c1707e2361ed1146a74290a1270b01b7f132c1e07409cd5055ee9c51b74cdc4e79c9d50281587ec1f2726007bef557477689b8fb7fba162be9ce704e3513360b4a3a4f799e5e6809480448bf291b1ed8721e90fa3d22fa09d6122f3d4153234afc45c736d904bdea9db645f388b90654f48bb3ca30ada2c3d0a18a515cb4710c3a62f01b499e88912c63c904fc7c4398d0a54f9b31fbd21b0dcd6bd7ee3c54bda5e5595b6d50e75a79b3c37934d420de218e01d4d5a1c948644ecadd51f0588340bdd8cfe423b1537a1c6389a6094d8983a5743d7e68b3c985456d46bcb2806cdddfe62a478729068c4e23ea189379c30e43fa6bc583bf7601dfa8fa179142b4d12343ddd7e77a87578506e460d1a439b81dd97f580d8989018c1af8311b825dda12c55f01045086fd6a42ff0113f0ae0ea45b4ce9fd76cd4d026948161426a325ee314b992e63de8818bbf2317b8679fa7bb10fe13355acedb26b73b63bc3a301d5741cefe6134a9eddb350d90dff987fc7ce1cdae180bb822da69a30caa27ec9ae5bd76d625aa5b22a6814429706241bb7d955907509be4b8ad640fee081e3b32cee33ad326bcb47be7d2e0904ebd07c7a0524a517aa951743d4bdf06521fe3893ada9e6d273354450b10c78546c3fd93d38235f74379cc2251606265dcf95182b9832c67e3ef3d8a9216218d5f52a79a8bc54890cf0e225e1ced9d4c956174d2235decd603aa48142d9d0481fc9b89780dd549b857cbaea69c4f4b403f9beb39de2d4aea366341eefe7d2f209a8dd27c20ba7050af5a69e4c437e807a91cb762033d1e3561fd0990305e2715dd8334494ab5307b7b07d0fcdf73882936a99f0ed7b61fc170a760d24f4bd45abe749b239fcc13cce11b30e0abebb2850bfcc4e99492e861ce7e04ce36ccdb72a652274bbf2f68f300aa5e26490c41c5a4a507d16ea8a7889b0575508b2a3d741dc85acc888f387f72edfede13a79c01439c2ee3987e60e1f71f619dedc3ccdfb88bec30a0803f96918db2a979d2a7c414b36f59eb2d096f15babc247ce8357e9cd134cbbf9bac460d4a7ba2722ab98560475b439c7517f78c8a2172a98ab9d88c97c8250458e4a8b027f74ede33221e3b95acb3375bc1b7f13658c2c754103a5baa84ec81723bf7a34db31f175d47a8dbc0b6c8170e9244823650ca9b3cbc936edbc9dc59daa61d58dc962cfc05dba012d0991b5557e01f42d855efa86c06316cc71a73853cad802e8100e9ea8d835258462f67413503524d589c701657b6cd1a6f9e259060e767ed39664effeaae03e335b29dca6eeee5f1eeb6ad90e2a9c61398579c7d79e6949bef9e4119d5fad78b4cd346b59b36965f81d0b135ff2c2c9d6b07c02c30f9fbf053f4a82d37e6e91a3dc1825ee5b4b0b7e9eb8f8e3e05ed3ff8a39133f37d5138336a454848db62002e3cb06a5aa22347d062419a06065eb85113d61697944f24fcd7373a43599b1ddee66deda42b8d3467e98666b7f86cd46e22dcad11b4afe0cd4fff11f54e0128ba1c37ac4a11c3b3ec3120aad1b87b4976ff6f79747959ad7f6f5fa5b34ede31c4a99170d3bc5d82133b66a951d51ec29cbe7b8ae92784a0f2bc85b1276858cc7aa08eee8a81fd9a59f105da56b03dba98652b2943ecaadec03ad450c5f4a9f56e0ea975bd41637fac4b34b4fcc9ec9d761abbdecb7a1f5c9077cf588ac9e2b60380a08e3b998c52a67cf9cdb5b1c9751ad558e10e3ac444807988f9158d00f886b1750dc1230a0c54e25227f2d55103b7b88c7521d419744adf73df59aa12df27d248a26b45c4dcee20ca38e4a08afba9f67db5a26e1cef2226872dbe4939914916ff198b8c4de405e6e8b38d5b6ab3eae69b53b5f893f56860ae20b47aade5e138c715da94595985df48b568b147c6a7788389c305d93a5ddf4e9aa3ffff1cd1095b250b8cdaed3e12317c22f5a1b6187a85dfdb8da64d2d6fc69f295b28aaa4c13fc3a4232eb2724e7aac2773218a07d1578ed0735a73a76f5551906e3a86507f56ee77117077f935d30a572295545856d952e74be954b61655c39cc04f204f9d5348bb20fed55b883d6507d1984dfd4b13f5520305a860e1590499ed0aa4aafc756ebc669e9eb229ae31d2b1645dec0ece23688e184022b986057af76e244a9944e37b223981dc101c42c6f4eeae532770bb16b85780ff8243ad01bdcd8c55d0ce0e231c0977363b243a362b512d0ae0ecada26af79be0b7a059c4d84ffbb7a1f53e1c3c95b2229285f08db7a6c0f9f93d21bf87e71316cf4646162254cef9524793acd601ce03ac88d34d98e1094bf49b8c7eea051883b45172b3a654bf28c5b85a608f554f87a5fd5ddc8209855fcdadd16c22c7d292fce4a8d65e6629c4b62eeb7d3d35e10dbfb2529cff6edc0d2cc2184a96c3cf54b4c098b074d483b4fa469567127e11f581e9d693b3e3f93daffe0f40c9b8cec2727d7d3a1f51d543f318fcf4472359d52b84e4f6dbf64e7f624ed7fed0fe4abd6e2a31f9a9ea84486a359eb21582b60bb7cf99a4096ac9dea3fdaea9917ca60793b2419fb83d7b8f42a9da97b2674c68f15f81989cab458dca943a7519d5f90a627b478e40760e5d00ecf4cf0ca72d73c45d9e040965a76641773b3beb8aa482396deb1e7bbfd3990319d6ea3abc7ecb0cf15968be408c5b5a2582c5b9613e43065b486e5089a2e33ece3e0c8be39f0673b19ab511ff8630c52b5d38c0dfe5af84432238579fc2d6ddcb398c4b1016e21b81e1891da12392754a84bc95298f6f1d7bf6d549bae0fd175c1f09f944cbf29268d45d92713f980d4978b0b09b5637b09d6aa8769aecf41eccfc0987c878507fc82412f498ca083f4afc7447420c5e4870d1182ab8a775314a315a0a33c40727dbcc805945a5375dc2180d704ab801889cf4a88478688ba180e4118a663e2333f64624c97753a8bb21c98a268b772f6771fbd772f9523e4b74053ec85b398f604d399b2a5ff862ed0c2651c2855be28d87261d601ee5601224ab4e23523657ee54f16f71f14818c73dedbc49a220c821bd29510d3c51aeb9c923bb1fe56f7f46e9489857bda9a516ad02ffdbb30bae085d425d7fa50e2cd58fba45ad113ad9575273622d6389f28c30cdac0004781e022013b42a690c9a8c7d6b675acb5dcb9201e20dc2d6ddda99dfdc54697c6585c5ce540f33050d12f87bc2c61694a993f67e10aee48d4747b8dae58e4df177558314d2ec26e300254c010b8c242af3d22bf6785079965cbda1a8af02b3494e4a5111ce2fed6d5cd06acadd13c62324b02c69a416d7f8d405f051699e00f8664d60511fdc46b3da8ba895c0c9cebef395e02adebf5bde298fcf597898c432a01f9c28386adabd170f2aeb7bd3cbf6e635bf661d60a92cc51065aac2acc677f6fa2d49a8345509bdc7b2a0df35f4cf80704ae4231bd4c3b1beba4344a4e6c7c754b761858fd64067e1f336085af2946e924e7f60bc2b8a288f1d6df77c693dca9e19b7195f8f4e61cf8d2d34506ceb9ca60c20a3b284aa680eb845a4f29d3aa3fe561413940a3d2032260fd0b7a65edfc4805837d9c5159e543405419c13c352f23c6a4f688eafc7e2c0657af730547f6de5150a69dfda79731735962bf73e84a8f383e38be99fc2fcf72b761c945955ae121e15774d5261b55d9ec814cdbe463ac3e2ce61f208992d653f0772a2dd9d444ec062ccabb3b17b1adc47afb6d19fd48732528895293d8860ef20a637ad4c09086fe930c39c6e0563878bb628f1b44094c014c438366bbdc3aa787600dd71937c9b4b5b773b295cc4999299a2b430e3c9219f41705f4d6708292ee18a0be351a079a6b5744242d3841d9a455c941bbc238ced75460cf3b1361b5243e5e1d7a3dcc47b86f2730138954ca90e03dab544eaf2b4804a41674a12c0d1044a50326f3c4d85e806f571fe5f62be912d7b9f6bb60c36631dfdfd818cf1457de62bd92e59158bcb5f12a60599dd4cfd8bb0db4cde6cbc903f1e8257e062e307da65de5556297c7113f20054fc626d552ef5a95a1be2c041262929717082363d99ebf64dcd11e90e7f5f1aad073d1dd5aecf02687cae2353526c02db1274ed6bb4998687533c1058895afd5895675d50beb06696a05b25f11cf0a58053665f3f6b4bf5f12124586570fa7b4ebf1a1e0f9518a5f3131af5b57a1b71b6fa77cd5c4eb93def02a1cbaa27197c229f44738b01494047c328a73f8de441605f3428bdec0a28522ef08fe08631fe66f0dfea94be8f54033f5fba52b4e493d7b1fab3b56083044108c4f55138e1235947679e90215ea4bf046e233e9b8a2c2097ba9036a13f855076d5cfaf38a7d0119ed6c2626703dfc7acc5dc2f43ff91ed1488894f54abb9cc8b3766e05c45a6a625cc3df79e7ede74675a5e35c978c9ecd56af7f6ca8efc89c7480c85e14b11c800535d2e7fd10bed39e50a3bb2c34f88f09017bea695098c93f67890c964007ba1587d8b358b697663181f5858e31a1e3acfb57ba50b4472cfc2813ee47c951e9712c0972b7392ce09bc33fadaf4bb7c9c89e33a0fb6202d164ba9dcd218324ea602fca3278d540a364eceb7327e83123c505f4068c6618ff6fc528e057ae2aaa77c0a849c5a44c362c8fd9b590fc812675c8d1c002355fc29e6635834ea783632300e565079eb3e2bb1bbcb1fb95c4905f0b9363e5ca2a100cd09167cda54c52e6afaf6669d223f0cdfff9f9c3cadfd591f847f553c93cafbed866c457e3530ff29fe9387031e3d4b31c4a1b01289a8f8ad8f33bb9de910fcffd5e4c88f474eebfaf137528658e302b3142039fd096ec48bfe7c8467f1698e4b474289ab344c55db7a82d9897f99c267c2a6effad95f2f6c88cb66b0e65d689ff5f6c565de730129a129f738aed1dcec59d0e204f6bc35aa668843bd96c68036bb58317a2d4a08793fbb26cde1e3d3c2aff40cf9a2053599b6e647c0dae048bcfc7bf81ae406280bce734959e1936e8687217c060af11651e88701270f0e66989d9062878be4be612e42c8d20acb769e805375b457ab979eabed71c8f5ca4c8923086f3ebffd76722b9e04b8a3a7032433d378250cf4a9eec613ccba484d59b49b22144a2a3c611fae7c25450fda478043b78e7bafc088c55e4c80d9afc7fca30a3215993f090bd38462bf3f260de569ac00aeac55f2c37c648ccd9a6fb81cbb54926e3e21c4b80eef7fb887655b20b24b2737e72a7599bac344acd951120ea27f66c95f1fb7989d56d3117805dc17c0a9645c518f8800b46d15acb85b2005971385c0e920600be8baa90558fcdacaaaabc8573720ffad2ea18ec78fd590747936d146abd17996995bc5cec52524ee3c9ce24f60b4bf605f750768b4692e25e23aac6891485687d4c6c3d1550e8da9c0820539a744c2a6c0c3542fc0d0dbb481e278ada5d5ab54ec37dd476c5c50981df73b39354b8dd18bbef965b1859099c766a0121c90a670fbef71ee0873bf74f36bffe46663fbf8d1bc8a491eccb1abc17e7f6506665c8b29420c8e4e28f4c38267215f2e5336957d170663e74bf8ddb8600418d8bb3847e3e9436c4815de4d75f4bb5210016edf832d79d010125af570aa93c9b8660e3e6f419a0c76e1c6af50b80837108e775d5e04b89543a740dac5aebfeb7e779211601838f000a2025a8586cf11c491548176e93865b75c3dd8e7b90aa09537f3c91847b811aba32673d18da1085f037d2d73054271837409dd7ea18c14ac6063c0ffb5bebdb8a3276c85ae801afccaf8e36ceba3495a372efe678baba84d4696bda382bced14a43e0d6abe9054e84546643fad096743fad9be0857c313cc52365d9a674a08c9dae61492ef497e68d2cfbbf8f708e7c13f97c0b2a7209fd785b820bebde0a3a623a90609d579f3b833729aab743644627ffe2d61ed74b3c8d7a084391807aeb8b1dc3441dfe040ff475a2aa7a0e061d3e96a4d1d052cf920ee848e844c28fe7eeb69cf92f511f026818e22887d443e4c682a54a4de41228abdcb18a83ef183d9f9bac11340d69466d3cdbb62e615d2d70a248a9985c1e2f50c229318a01107d512d02067e1c98ea7f4c8bffc806bca95c82bf71a9666bc1b0b6b7f4bba9235fd539013640abcbfe09f10e4bbf2cacf51114758007a5ea2a4ae5315d91dd87003a6350269c568c9ced006102dd12fb2291cfac5fa67aeb27be16c041006712a212887a412c63ee38e452428ffc8fa1ee07f1a6be667173a90d42d42c18e012ef6d3adc322a56b5c619143b16d513f255998611b1da2c5c17cfbbb13f318e1c1bb52b999b7366813ef70f331fd0912077e006dcc01632136f41a58639ea249710e8dbceedc4c286e4646c5df6c9668d271e576e375e9fcac3e9af31102fbdd2b0c14f9b5c7a8dc13f9ff93b6d5dc8ea3df52ebc07e2b08ed46b01430d24d456ac4267220e31e66d6963002ed092e81a0ebfa3fd564cc53132369a40ca94c5cb9f639fca5e8f1291104f24e6af3d7d0746bc330f025a9edf71837228f7cdc0d691ed16da9b7302a7a55ddf25d3057080c03985527fc3a9bd01744d2d0a5142e22805c79b41c3c2b770dc76763721f74a4767f8e31353e76340117c292a45ac7c1528f888c6766d405dcc85630175d3deeacbd1a5979daf9f6e2274ae3f094f61fe583cd769718bb429daec8fc1d5d2b831b7d0a7f5120bb1fc99997b07b5a7fc6643a1d01c5a61c108f7f6050b67965a9cacd422438d5fa2c6232a52fe5e0062208f66e17ef19737aea0fe08fe435294d1620a6ecf16d6ce21e457d4111e33bd85c59062e15302dd3febb951f42f37a8513a08936977d814e6120361581c4b82ed4332ed1c518a526f6ecc7e85a1141214c550262d98d8ec320f424a716233fb13e970e3a3ab7778b69d9ef7f88b4d51173892f91cad1127a2398b1299dab91526bd6e5af180b972b8918478b9e10caa6b2d80a04d2ffa6702e2c776d61630b9ae698f72a651636e7bfff80a9b24b6ea0142354f3af14c09267aaf3985454ed7dab85c09c14771de696949ef24a0d9627de1e93b47203a50665dde9f69d935caa3517ad382d57d9610ab32898a4f8f6fb7d93ef1f31d8dfb670fe5c267975beb1b31030462b9fa9d1f5540ee364a3f545773ee2b07890b36d01c6ee763cbbb1430ff6245cc2225dc5334fd2a733564a17a2c70d1ab414f648a713f3ff7b365141b72aef1740867db333cb80821f4a52293685e47e061ca28ff431f253a75759802f2890be07a7288be379da8d1e259fbbd76ba67cc1963605d6fe42becf7708255b8ae6cdb0ef0bca8d635a5f3168339e9828ac593a8af75f5a96e439c70e2d76a81d3c334ecb0bb2d66c4659599d8a8bb14771155e44cc8c3d88a37ae3b852d44e2594aa7332d1b574780d07773fc5634edcedc05b2d02dcfffe1877ba92496d4486bed3b5148ba1ae7c2f4e55039b652129cc1e938fd41e48b38c1c6487cb5e9a88a3c0fbdf17dade0b7759c23ef97e1cf0abe830cf9cf67d01ed5004200376bfa857354fdc353b4260f4e8ac9ae7e062fffae4e981fe8094a5398eac10bd5e5538f9d8378efa7aac207beaf318b9876b1946e3962e23c1e2a7c8d7696d318bbd780242131fb49da6049fbc6602cc66e26c6d062b29b8b984dbcf347aec7579aa587ff366d9d6f4aa7bd2edaf891103cfe835145bc8f77987706771946dcd24edf5d381e811db45e50a1e85952d9a771edf783ae75e1ead01090dc6d10b9f60df0e564d9ad2d61506a281011457a8cff820d4a6f9a5f4ecb9af6cda8fc404e07f8b4b0d089277afda72be34746384a9c364411e4427381fde711b00eefc20fbb6c8292e45a8ca94db2f02c1c63b4aa422ffb4f78d6e0e04e1f54c78e65a5402ac24865fea89d4876c3402846f0a9dfa3682ae96c4e4db266fdc1529dbbae19986d74087a6c574cdf002f3049745dbfa271ca529e0b909aa561c1138c8c2c3f702d1d2345"] ] }, "release": { @@ -2621,7 +2621,7 @@ "spec": true, "dkc": { "edits": [ - [0, 0, "444b43310300000000000079000001caa5006a646174656b657963617001010250ff23599acbe9b0a742792dcb7cb1bc4c037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a7045636f755a7a7948436778714b4d414f38467a61736b716675372f2b6366705434367975727355677743466d64686d653462372f2f39635570756f6867596c0a46364d506830616e46326c50506231546b36487569513836636d2b7549686b74553432354f6131746d49492f66374c67527735672b53656e59355552545147410a5870362f4a5933714674474c634c664b744a482b43463976302f30736d4c322f624b363863517656584a6f0a2d2d2d207364397132386c674165544965567a324b4773553774673876303041736d32422b65677170746b706567410a34bf11c8889aac88585db4e178f1d552748f3aabb3c05da5d27abe425d33168c432c1664087b6b39bdbdab254b9c8601acba3482ef6fd7d64fd61186750e07a716d0a20dca979da34b1c39071212ec9fcac297bba1e5f6769fb62812306d3d8846bd86763375a52f83ba6eac741cb138bbcc236f428c2e56afe458570b1e4d4c0bf43a898aba816167652d656e6372797074696f6e2e6f72672f76310a2d3e2058323535313920655935564741343653316435424b2b313274707a6e375a6a6e7145647636764d63455452787443587933300a4a416b62434c776c6a753957572f574c534b484c50344247306b3650494d4170496145346f7a67482f44670a2d2d2d204250554f4f53544469766d4a6f47775a7632725652342b437578482f2b3955684c476d30583345305264630ac607927980e0f5926614a475def0a999d790502dd80d453bbdd777f054609bdb35d8fdfa730f34adbbbd770374d47c24b699b084dd6cea5d45a6899dc8531592608d911eed5a0afec11e4ce00b0717076a579e46944181b08d09e4585176458bacead74c4d770d73515100d6ab688900fb78352573a4cfff7481f9faa005ed8191d673785d749c5cfa7f38ccf99cd7e8095a8676d171c0a5349fc3e1316eb6dfc4c68fea888e10022cfd15cd88aef77cd37bfe100f3428e660c8fb6d4b7941245e3b743d6a35f1dc38abcedfb67c7ed218b09ba249d347f378495eef3c899c2779858a521bca2d45a484c34f70b5bec44b1cc48fb4d29c9e1105b72ff56ddc41206aa6244ef18ccc8b2e3ef3afcdb39d1a186a958d5c91f6f583347941753652c90c203e30aefe2d71506dabd2b87c7e7cc2e85574c0b9b213950c3fb8ee304a8ffdf2935e3543a9ec815cda495178efc5a18110bddcfa45e5bdc43ef2074d4e1893567faa429d2b23f7edfbd33fc33e6362e18ee963a9826a44ac0c9431eb79b99a6f4c7680384ac5c105b5f9ef135f731f68c3873f0f94634b603e29fd26f0a31d063e1caa8d861030265bb9f5254ef108605bf5fecc07a116544bee0054230695ffacfb4c2332e4164257cbe0590cd2467cc760cf968384865240e00001e057b905cd0d5b8e0bae31dd7d4c344b92976f0e024f6bbe22f66d8485807800bcbce0b8c80790decca65ef2a013e489dc2079650d77eb2a2ed71dd641cf771ddee5c5a0344020978230ab7025ec90e26e4e949c1f4a787c883817f01e0b0415e9e50ab5fb2ddedfb8b8557ea92db898800d4389f2ce8a3d0a43e18180b35efa1f5e17b8366bce40cbed6175191f6f17f2bd2b9538a5d6c814d52505d3b1482c8855f2ddb876224e3e725f7933d45167c74ede6bcda2b6a186a7ae265ffc3108b34a1c691419411303aee854611f64124791dc32b334eb94041a322c108cb38cb391639e0bca79350a70f309e5cbc06e94ab6282e1aa38f356aa437def537eb13c953267a18775fa0fc93af4c8055ac1f0901058a6d6677829e455d08e3bb662dc9bbe6ccad5cdcebc8848bf9325abb61c96c844e7c6653305aa03b1ff87498db2"] + [0, 0, "444b43310300000000000079000001caa5006a646174656b657963617001010250ff23599acbe9b0a742792dcb7cb1bc4c037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a7045636f755a7a7948436778714b4d414f38467a61736b716675372f2b6366705434367975727355677743466d64686d653462372f2f39635570756f6867596c0a46364d506830616e46326c50506231546b36487569513836636d2b7549686b74553432354f6131746d49492f66374c67527735672b53656e59355552545147410a5870362f4a5933714674474c634c664b744a482b43463976302f30736d4c322f624b363863517656584a6f0a2d2d2d207364397132386c674165544965567a324b4773553774673876303041736d32422b65677170746b706567410a34bf11c8889aac88585db4e178f1d552748f3aabb3c05da5d27abe425d33168c432c1664087b6b39bdbdab254b9c8601acba3482ef6fd7d64fd61186750e07a716d0a20dca979da34b1c39071212ec9fcac297bba1e5f6769fb62812306d3d8846bd86763375a52f83ba6eac741cb138bbcc236f428c2e56afe458570b1e4d4c0bf43a898aba816167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139202b3330354a444c6d5a544935654837763248596764336d7477546d7a466137507831642f76396c6c4253410a3059487839476c496c6c756b673848734a33496f5375376e5737712f7458647a572f714c737537494a77410a2d2d2d206f3574695a44612f4f71762b627838397555695767734872642b68494f472b6131366d6d445245754779490a3a241b6017007c9eb642e7a3d0ef653ee677b3c92cf12e71ec09264990b093d8806bf25885c3532761d80a5f8b7ae64bc302c62ab7a9179f5318a40076c6c6ea13d57eb79667e155e7ea71a54953bfeca7df6f75b8c46e6cc38b6795e0f439b1607eb5376d7fd3622a5e2d26259edd73b044eeef1dffc2f16fd83e6c65c3902a280158e4c15bb8aa614054f8aa144f4b6e3082015797445887b93320d7b8a25dee09cac4c18a1b80b841953f0142cb9d9cbf22bb06f315689a79e142e31c007a4729afbfa4f80c5745e35598ed92dc28b7c498af01ae5630f729ee912e5f4d98f8e6f8f4c1d06db91992c915436c12d0d0a855807de9cab2c90e92566838a69ee544ff12130b7f4f5d547e35dc1dd5e3d63b3e286942b1c5a17340d254b8aa2429ba268bbbde86c6ac46b0bf91155dbb9b539b01387310b3a94109e5218324aeb371bbca06d938ca790294f94604ad0e524c4b5b0fd0c0b06dd3bad084f185742d7c43c62c30cd20933ff104b4840216bde32afc611379ee0296097aba18da4c1cf2f4303d889d2115acaf86de01005e4d4b2a410e51ddf459f05e4cae27920fdff77576cf91bbc6e2894811ef61001fa3b52f70a72844bc58e7eb0529343b8df97f2359cdac9a9bea5eea301769390a27bda75582c8460251c142225d6a07ae5ac34dbb3d9ace2280b52fba68d6b4d79950a7d107bba78e21d19d5726d02859aa32f6091da08dbed70bf355b302831ca544cb8e9ce509fd8fee316d4d6156f0e4e8bdf6b89c09b7d4703874a3935f36a20c0432a7a30971e1d67f7f7911dd04a5566bbd20552944622356e2dc8dbacf6fe401f3b402b6aab705d9e25ba0dad7a6113635ce5f113dd8a556efadce46e55de876a07d523d292b998f3f9baa273c693d25db0d2c679368e770216bcdc8ea02c08eca5a288fad27e3c41b2cfe66b21f36f9d44d07767e620f8c28b8ab16874efbd1bb6e0113c65de9f44b94f2930fb1ea483b78c82db38bf12eb2eb28f82762a4753fc62d7dbcf7ba8fe4120a1ecf6fc904c77ccecaeda48f6936fcb9d776e6551b2e610b20f239a70af2c98cfe492fed69f462025a629215356eec9521c440173af802a79ddfc02018a6ac0665945634276f42e6de536fd3cea4dda0a864f983010c67a28e2da6886d18083fd380bd797db4a5dd787673da36d482158f83ff03c682508838c91163ff641204d07058913fc70ff6739b7d56a037ec423a64a62af949d973ece5af4f12da59d7460e2e26af7f3e247bf24b88b948ae86f95eb1597c1c617dcc73bf83807cbfaa502621118da0be66d748b299db60b6c47c7074132a5072cd7d37a6e66ee672132d173bdf7fd8d9400d25adec081661462eddd5cf98ced8d8cdfcb68c6473d4f9f305551f36bf8ab1716296a1f8d3ee1b4fde555af42310a0585a325ee3418d7b198715e500d3a64771dd59366be05bbe73665bd321f619732912fc3ef5351caf2702b53601a963b9acdfa1fcea580346127343d2bd8a74d017ef0134ac1ec9534afcfd227020ca7b83ed0bc181c811228322aff24d79355e9119dcb2aef9829d41d9c0a87b75dc407ad9724f6a37331f546220c87deac943cd5dcf42f80c88d802062b11948dc117220362077a70cbafcc789b172b8c45c99c97667e4bc4eaccd97ba07474e7591242bd882a96f4c13d20d0e4c28f5461094d75f6db83efc78715410c51262f3283452f3227e71cda4406223cd83ec7e7d7e5f03b6b4d26c0bb42e2d1c4efc771297ad5a857bf9f9c6285e1843d5396970c58e15de6ee2cdef0ad6cd0264e33f6a451fff2d40309700bcc272c72df75794ae4ff8a89769c438025deaca148dd7bfb43dcb280205322d137d552651cbbfb798335df24f7a1e2164802247c7149af68b1128b7b3b9a8ffde24c572cab5715628d6471437414edd2ec1dd5925aa82e827cab71819e86dbf6c25275f6fbdaab1ec01ef8ee63e08c69e015397cf24527af855015dfef4e1611476c4f7c054ed76ffe0fd51d12f3489de91a574a2126c453eb51e115a527f810191102cf2ec6dacd1c0fa245b4a33ff3f4bfe19310c315bad5588bdfea2f862643b189ddd5c3ae3fb220f37b50d7159a8bc4f256729ea89557cb21dbe79e1acfb3bb6f4b3676b2f754c832bc8ce6a80cd3b8fd89209eb3ffacc90ebb3bdc50b25ae623c86505da6ec62f9d4dafecc94f1845815769e22f898957a53f0a67c0fba2107445c406356f381f0cc1b96b2bdd2b6627e9cc688a78be9b56a0f639396d166dd6ecb5c55ae7b03606eb676084f8c8c343164ca2904c474bda5605d3e8b19e73b0f1b7b3c0f81c397440a6be9a3fca1f96ee787e12e00d7549c95a7585ab0549297e31bbdbb60c4e4dc8ab57a1516d60a1b0e3555484ac34b8d8f80cdd0a84943d25eead1da0a521aa84a71b85247644f899f862595daa05b5a5cc1f1b0ff21320dc4afac237e721cd4db5a94ef41aab92e44bd08e26cfff443efb527b45ab660147e400ff8b9c7248485e239d737046b43249e9a243d4918e37448c801fc24ecf256fcdc1658c1ae5a31c979b102f489a75059367a9613c35b442f2cb6c8831ef3da14f779a4852e6c66906eb0935c94cdc4d7982e83fcc002343d2015696d678330606643a0ca2009adf0011249c60f1619770afb1cd19f0f5199c97cdd89285213f4258482e6e083a5997be125e4133af9009179235db292a826b4d4763341b64460764877ed741a6b972c6f01d900fb7dbf894db6eb0877cd29e684dd0ce906626f2fea77c7a217239f13670279599d78a888387176da97d3c6a8ebced385dd88069f348d1b9a4e82cc0803a276909e798df3a20f2d425277886991e701cccb5061aad6d48f42b2b8c66c64686652af8ce25bd0ba81c473a35ad6400b79d676b3b15685db23e707bfec491eb581d24465a170b7d8f589ff275b2fe2f0f8bf7ea8162154a79271286664cce394d2fc9ae8b6872193cbab06e8809df7d1b6c9ec1c8c2be776082b1593839083f3442ffec0ebfe9317e1e5902dd5e4f9de4cc5fdd952d626fa92730a476199bb1e5c624578dfe23f85179caa934db12e76f5c5d1f7e099730a8bffd53e02d5c6cbd023e8c75077823cbe95955d18479efafdbdf748e8f1ffc8876064e280ab3c5c60a30ac31992c1ae0d275aeb2bdd8feecc4aeb933b7dab2511a49ebade445fe57940d0a0ebb5f913a33f5dfbdf6b47d968f0053612dcf67d603dbb8059dd9c4f1b9473229b5afb062f2b521e041dc24ebac8daaadd73d3563523962e132aec52773b56139771d3df0ec294882ee72000113a1fb38198f764022fad0aba919584f11704ed737674c8a228227cebd97d5d4006577e5073ffa4486b0bb9e699b32691cac4454ca03a68a21e2a542f3ba0e9ba11eae09c7948b53489451a87fc0def25c6f8261fd9146e9635dcca0d1612a04ff44b52396ac384c6dc5ccbfb381b54df8579df55cc3c4d6e922000e24fbe1e8919fbdbd99841e9d7b864aefdb55cf40f634b2bbf6bb5a0f5621123f1b25080532ad49fa12b91961317bc3f5815bae29bad68186111de1c75aef4161a25717147c1bc92733b866811f7501c3cddf8129277b841339e38609fbeda796e214f377d35199c79298184f34a298ecaed7c0b5200eb73da898085d7e297f9f4e85f97d0159ac5bf45f4a4ac97c58c767c176ad9869857de86a77199984b5103f2d8138ee5f97cb161ae07f51c7259b3513fc6a7565aa9d3329ce939ad6b34680653e8497ca77672715a8b7e495cb46a028d507ec4103d8c6fa5acddcbbc0048099a312b2daa62d25f10eb021434e69ad9d6916209a1d1aca8107f1e96bbcd4e7d3f66afa8f93141dbd8a5efaa5ac5d6ffc74c50a90161840045d46f0dd2ab106e77e21446646eb07662ddd37ac8e9ee1e16bef87b7c34f9cb4d2492c5a7d8915ff9def57cd3434cd23cf228ca665338586ebfc13ee405b9a9b1d7f0b134d95000438d17e42a82b63d158b76a2b7d693f49efd9f77837d4f9ddced86db49e6dd665b9fbf5f72e976b13ed0d44e6504bac4b1ea50e5371fa2a6ada8400070f9d39fa3e3911b9d524eba00800fa2a68827aed0bd5640edfa27a134f1bab7bf82510ff13529281186bc57297d369ee58f044ebb12dcb9149b4236ea0216a96714344c1f4dbef01d4f26cd62f557273c83f6280a52abeb10818c7f4c876255f1c09c3101248942025d89feb41256ae2e30c110d88a87b7505abfb054a52e09cfcf258c135440c6670fc48922bdf35f5f720385a6fb79f1d26a6531cc6f5e7da63389fbd913e52866061f634f1fabebffece10a57823d7faec50f0349c4cb216fbbfd248a888d1e32352819dd8b1484a0561b120cb7165e35d229d859272e39ecba8e5f138b32dabcfb80242a1ebc080f04fb24072226a951a0d3a8716cf83513632a8cc396b955e0b5074dab7a03bd37db7497b6a291f88994bd59a62b350179988e961847723936c31c7e5f25cd692f40df13b3f7926d2e0b838fa5ee4adf10d21b7311f19ce154f542b2e6223f9f48c481025c03e8f83bd54ac0a04fac237f2acba11e0a76a910f5aef292e6ca4d5162b891b74f6ca7464dfc15946d2253216056132c31a075b5370eb9970574e1b1456b1268705fad5ee9f37fd7b9e85c60c7b1aec121a45463e6dff32b57476c77025af3e33bc8003634c6716f8be7dd02265146362fc0e15773978ed132f58f943450080245523137d35abf88b77e180fd1d7fd6f8fa8a820856063a8739403ca591a8875ed1af405fe6663be021af6f09a7c61387c75001ffe4d7e64a4058b7c662dfd1a88be92f6287ce0f93b3af6c6bad1d156535a7a3cc4423970f0a2181d112feb2cb43126b505a98ba991a18f39d814533ba2ea643bf6da2aa9e5d0dbb71ad2aa3c1015d80f5887b718bd3f199ecbf19b8c7d9bc987e1f0befbc8973225039f639ba7950d365c36cc98843d195368f1f0591d6064d623a1f0da46c2f1f3a8a5a2150ac607b92d49683b8573cc2e4933ff5b161e60c12ef978575c2d81dc3169460ccaa7723bf114db1fd509ec155f5eee09e28c199eae15e4dfad386ec97456467adfa985f9d211dac8a8d0997e0e13b5572ef85a90df6994bf302b62b48906ef3905db69320db9724aaf96c7504bad99f53492f19c7c61e551905feb192d2d0529a0619605ebedd0d433f0bafb66c5e43d0be6297cef9de73d0088736676fdc6e07ce32db7a9ed838a37438a673c6b82d6baa5c04d7f0cf9c908bc15c3fe4f2bb445d30cb9b16381a16ee05e4222787572c7538e640edd0a7565e7b7d06941a936fdec5af01ef7b83dfe84063fc091cfdb4e780244bd9eada39cd562691c1fc483b0f2d7763aa00144f81295b066ce8af0e7d63796a9f134664af47abc80801569d86f7056380380a83d63efeeaefdf6fb7f8e71fcf2ecdefcc14e39619e436974b9ea4e732d116ad3615578f0dc1faeb0ef6dd08bc7dca2e783efc005811da6c89a6ecc8dce5144f6bd47951ce72800d01f6a5e87d9e4a9e0a77453dfe297030bc39c22a24ce06994aa40570f7c32ce0aa372a3ff376f5e94518c3c7ce52bd6e50daab6218f8ad781846d0f025e59adea42f0e07178308c37a900c0540de77a16cf999cd2d4c26708e4b90cd46284a73324695b6c591e186aeef56959d2c1b1b4437e861a4a736b19aa7b497e09527ddbd71b31ee48b0e3501c765647828aea64fc2c979b3ffb3e430cb6a42d138fc60d8ac0340f4bb72812a85ae32a84db184608161db33532a4750c0a3129afd3a3265d420a7a90319ca161c12976b4c7c3b209ea835fe1ec6ab95f28df1a9759b78347d52343d7b0773d4deb32146d064048480f48d1e5d151ca945bc3b9cd487c43d14a072a1c95ca441c5a86671251804ec8b14f5eeb214e4b420569b247a4c92ec0f042dde5af7ad1030ec0b6b737830ec20bdb5f025d05e7c3a20e2dd595030529de429216323b924e36a1e4c4e6fe3eb7963305c1d85ed496340bfa87654477b2f9fd4c6356657f49f07d37b974117280e448e5919532be9b06db7d694cfad246466c7e7ac86f6520db9ea83c8ad664ceae58f9e8028561a24bcc4d5f328122abc8694cdf22adbff8a94e230ff8dce75dd4257ea0d99c6b8684d07b94e1d6680a4bd781edc21006b8b6f75b342bea4b2b486e59aa3e0df121740923182595d1084cac7487c89cbe360986e1354c8eae6670c1c1454cbbad265aff01491e47ba1b0d2e5cce12f90467698ca95766f1ec586b4554bedef84ec7ec8627a26ebbd5b35b75e697943f0b5a7d185b0d0e14f1d00a476b4c1975948f8008d65b06207ed284b7d9138c04ae1ced8f20d0c045cfc7b18d2e4894f282b2a830a2adf9017ee424b90907cfdc49ad84128bdd3500eb01c7c2beb6e168c8c139648482fde677adf80db176af394121cb95f9619a5d23ed879c2a86f142c986d80a0f6fe3e9301ec8f7014d088c8c70e7aa01198bead7afec04e4a9542e6714982d48dbbfd774a62c1a79c92d5feb3a8834b0e00c0f49cf47ae551b2133a514c5685e443c03f754213680c8d316914244acaa11d0d0ef1f283ec5a37bb804a2e474f648f2b60999e1859379290ad45b2f10e8d9924a070826f2a10f83570443cd1bc62e6697643722ea7051bcea41e701ee9befbd3b9d47c89c2720e7a8f1f086ffddc2cb4944ca1e9cffaa75158fcd4359501c5802d3f718862b1727cd5cf4aa1db2756907305f897b3bd6f3bbd66ece63e22ce7f68f19d435c315f4432d76e668d624d54fcb3d43fda4cb623a58116d85f7d2f1ad98f0edfa69dbe57e3262ce22d13dbe3e25ce394b451a190abd60defe04fbef14dd03a917f628fbbdd9148b1f9fc72a95852482a91175ae24e5556485401f7e03ce3564fee0646008e36994ac46ed0ff27e6066a65a8a81a6c8b18d1230e956259eb41063b2b736adf4d509939ba44ca613841be2a2b6daedce16db3ff5e5dcb9a908f48c96c79655426e41139cb735d057fa1c83a8dc66272c3c9b2e650e45acf2a48ead55f32adcef397d58b17f9a7b3db05248d7fa0105abf53b134931a0a3f5170b4957d801bdb4dc8fd1fbca5e74fa28384b7ff4f3e155184d83c057f2789bd917ddb06be7fbe4fc6821ba49b5c4c41408afd110ec87c3160f27133566dc10022f34d0974f66732c4f164d718b20eb12fa6c526cceca4e9f9c1b9700d24d811cf944e365e52500ef1b0280c2b6ec81363f3d7cf1bc49046b725b1d70c26101ce6d2241fbbf95ab8af1a52025137f71d990420af87ba3d1ddc683bb1070eb1220ff378436ee7538152ac1ce3fddb1605449d562d4698837a693902d9eac2bad78dfb5aafb71d61810120934c5e48b0868d7fdb63d6e529f1feecd4a4f4ac1cbe31a4899e79da4b80c5ae6a8ae49499e3831d301a159c34eb0eaede0ad4675485c2fb5bfd41d2457cb059f8af43adee607bb301f2fcdc5b488662b6dfc13e9c931003c5d4a6eb37258461eb23b0eff55e6f484aa6ef8cbcbc7b3e35db551d89f94778eb456cc98d2e513f779e7570d8f63cfd288bb3fd6b974bf776dc6085052084b3a51fa9a57509db4237638692a9fb8ce9d97a300acfb7fc0de552a6f1a3d1091210fe193a6e83efd9b692d1c3477dcce6083b453c7d24ce05f04c6325ce06b95b8fe233ee8a47838e44854b6aa508588fab1467c76288b20c7ba6235517df984d68954e088ef1c6879ca7ce7ea2fb0e0f2d9d3d4b9708e34620b660a96718577490b14d339cf6433066ca07c2cb335f0cba1bfe416f6a219aab930dceaf2ec32583b44ee6c10b0d52b681efd3c95c3ffd854a5e46ab47029ede3ce66dbd5198a92fa9ff0ed681b1542b49d3e2f9ddad13b611d67247a516425b1d09bbfd59184801381f8a656374ebdcd27795042b93296fb4334ab1d310c0f4af93d87b11d48a3d6627cb517c8e308a56cc9d0c5d9956cc3bfaebaa35bb01e0b087f266ff021a311636cef702c93e3399955177feb0addbb8cd0b2363b55bc40dce2b4549936d77f137b16bcc2fe06934c7206d731a70524251d5ed0ac38efb1d4bf743099d003fdf575b33b04ef94d26ee5ea32a09ef763869eb3ec74d196bdce04ddda54c71d6342922b77ec3ce18ab2ca63c89bdad2b80db5e7a81bc6f91ed7aee6e2dd192c61d5709f96bccf29249ce08c4db0dc0b7bb40f1c96bef4d5592b4526018484a8ccbcd43fcf182d3bb075435141f69ac02e8c43d52fb536983cc340ca07631e1b0a782880ffd0b902651d51c782a55b35fbb220e5f1f4d0ff8acabcf7a0d9c8db0e4d3a07224b6eb7c2659509d94bf8b4969364426a38470a04812f579ce7bcacc1918b660afe7cc378d542f7924019f934f0824865d9560e81b784cbea288a8b94f49c827cf809f5a7c199ff9091ef5226ab1f5a9d6ac860d0a4d48f34d80eadffe5ce8250e40cff971327b8a4121c55a5bb583009f6c09172c01b7222e1385a35739b5a99ad7d31aafda1d5b346507f20aea80241de01e37a54ffcf0ea84e88fefa059c4e2f4866f603389d604c697f3cadbbe6b5a9ce24d657f9ffe6c7347132ee0725d10afb656a14c376450d6603ad7e6d9085f68f1bb30c7687f22bfd97f601d79bcc0a23a1ef4ed8c144e4de73fd3459bde8dbb6a14e6db721b13f0710e04af5bba4c6d085bf9d4871be21f1a7af994506da986103a21f5021eba45bd7964020834fcb163faa362923316b2b9907465e6ee7e7ed0d555a5222a1c4ec700953a3d0b2a06173bd3e2a35ed80b878e065d74daa3beb3f2fd65c3e197a7774cfeb0afd054b02b047c3e20114a2d89de12678c4278181c2d569debf71c0c9b9a9facd137ac0d601bf93afff3f48a364308601c7d666309f16e467fd1d4861cfa0519333aacd63a8b0bba4a2955ae38626314f22b5957d3b33eadd1ef5eab631656f5df972551ffcd037ffd354ce78106f217ff11df7a6e7ad476d5674e89162f704b4950b69adec8d135011e399b4ab0d40605572786b0c118f183772173dbcec5d6d9e410bd4c64e60140242d45820755557f25a789337c272b8f9e125bc82d88dd0db1cec4ab01341f46975ff8aa08de3b13826844ab90b3d503b238d0612af16141cb59da96fbdb743368340456e10f54eb2ae2fac43944a0fdc5e09701965268276b4c7e65802d7bcadbb17f543033292b365047e4ea3318e5805a6fe8d7c3a17d668df6be81b1a05d192dbe11f2493f19dc2dbbc3cbece6c2164f1811f19ca8315ae80239baa9540a88f002a995197f8a19f1d96162b4c5329adc9794c594255cf41ab715bb1211608cda8bc5bfc653112807f2e3cf7ab9022ac4b30d72c4a34d9db1ef66248e462c7d68db3d594b6677ce564d87627fc65e75cebf297f559603bf16f29567b5aaa0e7f4e685aa982aef941084ccc7c199256710f5309f1838d745000ca7dbdf47529df1ff9abd1b42f726f0bb2183ddc9355706957a5bd9e3077dc489256659e39445bc5fdeec623d2e49ddad868b5601369efe725a954c88a069359e29853d0d21bf828ef54fe00eeca85708fd8a319c3edf842c97d4c7ab3c13d00652f9ba62663145a03ec1d789cca4336c4ea46f527f4a3d49dea5848675984739219c5bca73647dacf8eb1a077cee0d0ea627e8553cf506c20c35f394da72cac5d06d59d8924edb687b6ec40d4d3876082709f91dabee222b580ac27d957150a99c0e1370206d992f7dc82069d225af45cb9999111b8d7da53bfaae969386796c915753c94f1073acb19132a53fd07218449e501e072a50c6709a9ad30339b86e56e507edefac8454fd909024e6d521ecf1ac619252d099727dc598975edb4fe1718acf97f6ad6eced0d16815a3c25be4406edc9fd2b2865e1e90b230da5988c81c03f755bfc12c18e16d4ce6c6cab07d11d1b2b6e77cd0485d2f7b09b5d731f1a110a2454ef19b3649137cd56231dd670b0adb7cd5a10ebf89c98a68c5f12818f8b8a55308639cb0b6c36f80359dbedb565ffd271e9003aceb8e5d8dc13491df891a590d8384f7a9046487d01531478a673eef410d9effde70aa613940f7620119d65eea3db2a3c66948b9f8778a5af34f0018a3786e17c614697a1b66d9294943b1f79877944e525a93344f68485d19d789079a0451cf267c5ade2a143399423a8d45df175de4f76089ce8065799d33d52f748864b7b3510dd5127d6f23b45aa4ab1bbb0820ac799ced817784a5d86d2fbc3c5b176f6d8b7b0779d1ac068e148e75ec5017c5fc895d8256a84c669c65eed0ceaca7cd2caf41502f072993f65fcb391acd9d7818b5a69ecde04348e9c67368a5cc06ea16a3eb3cd83e2602034cc9d2187b73891f5e3844ac6878ba8f35b7d013bd0e772da871db41ecd2a7a68c681c4c5cf54d102b7e7991e72808f43386b1711dd07be6f6411511ed1ec0748722f40de119c2416720bffbf97fc11a6fdb75fd4def06fd9b01fc7e4c87a55193ab6e0ff4ca54a33cc9a23e71289f2e19a37e78a0a69760aec985d011b968eb6d1307b2b78d69dd9e723ee5857167172e51b7f3bf6ce90b191e75d261cb3bbae6c2d0515b7e24b4b4e6158f66cd0bdec1f18364ca53cf9f55dba4705c38f50d141749fadae8fd47b8d76ace6696e61548202f9ba4196912b67beab2443510011f6509830589a918250d221deca833eb466202fce53b35f28434d2a9554b5f5ae049ffd2a2c0288b5f765f6c57f7fa51f3e5b3d33114022452ec70cd11812d720001fa284bfdd79d0df26c108950a4313c3c5a6f26688705e1c7b0080fe297a4cf5e0ed13ad313e87b192087efc70d1dc7e81fac06e416e0efb94402e2437d31ae7ae0042c8cb1d5d72d152ebcd15869554f113fe17d590fd2bc738d375059791e70a0af2ec05484e4806a546f1b398ca508b9df1a70b1b20636a96c7982cb7648a9aa31e3624281f273413111c02bb1fed5d4200c691ba7b5c727dae8cb6a92edfa96dd579e89039500aa0fe747013dc770392d6b221ea9f5d7568918631de7760deabfa31c54e3bc1e6655d5daabd868617601145a35689029d98c3b70f91d306a76cbba62c61f9dd5990eea191732c05093628e4bc5691d8dfe440a4f92d80953e90a7abfcfc0e2f99f082fcde92eda5afb99a0786bd6735bab503a6c299ab75af18e920af5cfee9f3dc3e24c1a954a79bca135e132f974fe84dab9787631dbf4ebe823f6c070f5a4c4992dd03a4ca0c36a0e760f52b596083d911474113a52d95038a87f2313c407298cf0432eee548bf7954a74bfdd425d8adbd19442bc9638b2a81b4d02d6b6b0011a4f360c3512fcb7f4068aeb4c1eb7e0dc3e0d7ffc3b6ab46bfd5bed494bd136fdb90c9c3d77c30a6bc95e7561381ba5df5042aacf944bb3532740670a5ec76b91b5cf183d352fecfbe5ae318ea7bc8d84f8f71ca3547482b09c8d1a1edcd4f6d529fcd9c2196cbfa90ee1161b99f8510f23b6b201d9785123d6b3dc92dcec0b960bc1bc9e1f0ef27a6e032dee7b6565781a8a8338b0d3c1bd30b14a8585db5d060bd5e8c06113b05461cd77e200a30d849863bfce81079f79dae28337a5f606cfdacef0baa3a1a6f8aad576e69fe0b1026e106b6c8a8d8d27caeba605a0ea936a6f08a7a713cf9ee0edcb305ee07f0d4f4cb62995fdacd1d34bd3d2759400b6fe65e7a45d33cc424c43a6d0dee9a49d6cc01a470a7e6c2377dbce6b863a70c5f933ef0bd1383b5391324533ea20c06748150dca349112404f291f35454d20d0cc20550ca1b4ad3b1619fd81c44b0d6f343da518472eeab69fac5bd11cd3a3856268e3d098346e3cb93ba92bd698326cc0a2eff9d9d3b821c08dc885d459cefdab146b5df40c7f09bc306944d4150f7cfd47b041c0fd768da42b224c54f584263eb724ff5d67d555dbbc7671da1ebc1628b80cd769365b0d2734007f9f66c3915cbc2f73c26eea4428857e9b4ee4a51fed151d1f68e28be2bc222a6b18e8b6b095417c9465693bd7ab6bee8f1811604697fd68b635b0200d0c71ee76ef35312eab7f6c676f8a2e04edb6000b81161389eea85a382fc233d9ce963cb25aedd8f111da12a155f9ce9892f1e9a2a5b08de3d5677e3e74a28caa17a183d596fb42464eb0a9fb37c5dc666ea9dea43f385c0a714420fa3aae2dd4f28ed36c95492f2c4c563a0bbb380c6d33c3162a436eb8b03203178f3512d8b50f08366ca23c1e3333425c474003486fffda9089128e50172ad2c383900fc6e3721c639ba4101dbc06f81ca9245080d1d1d7af2ec7f98fcbd058b211bb1c3d5ed0c72b740c3474cda9a7e8397999ceddfbde8f2907fa1a68d0f172099fac280e5033dffcecda8dd7142662313b2ca787d582e92d38dfc68d8c79119cc9e19b3a6b06239969b406ee4fc41704a8445de1e921d02bcc2a61198a3b01cf5d3f919ea92c7d50a6d4b2b69f4b5704094d882a036353736dc4a4c8c17344694774a2e2c450299064efc4a176055c9826f1b1a696e78a2be9ea7212554e43c0b7f7c089930c8fc0a4750ab70d574e92e54ed92416b61e667b192e18eaee51343abfa7458ce7bc73dc8a9d1cdf241cc3f74f923d27b8124a87c71cd2aadfdae8d9bdac52a01692ede816dcba9262cc6c95709907f7e7c997d512974d1c1ce6304d383576adcc00dd5f7921a9ff382b5333b9646a43edaea729259d73b4a5ec396b3a47752e9e5516f3e6fc43c25598bb2c48bcff844b51580145bac326346e04107a07a3e085ed33a0b73ea9467cf377f20132cb22c0433394d2e9f933371149e4cb787c9361f6bc18242696fb6ac23a46ab6739af45083fd35edb3d2b27a9b577ce247d03dc567f2e002fdcd7aba0e59a2e71c073371675f367d52736fe3627a1695edbb80884956f98e93cd5473ca992e20c3b8ffc2fac16d247948f18b3885dcfd6db16415cd3192a66b4937ca7cfd6cbc641405a70640ff4ac1e0dfb40e003b2ffcd940d3dd0880fda11e6f593a4fd6403b327fb85058de55c844419b8b777e28b4f8073e34abb13fd033065f956cc655a5177eb110278b2620eddf3f7ac064a6da0bccec983e68558cd8f833672b757d9c6d3f448d39727ea3f82bd88a56f2ffeb7e2ce7e4ab7588cbde53fc2750fa00b7728fa7789258c3fa5cd10db8f28411795c8f5878899c1207d19615600834db51ea738d3f6cf8abb17fd1743ab5e84fbc4dcef823147cebd4a32a36e9c684258cf4d752a39d68e1b2199f79de3cca1c45b2252cd92083b4a653c667db62076445cff4abd1e5ee10f893a983e7971d93a8c33b95478a07cc9fdff2c3b7e6db6ba38e27db825df4724df2b5aa584165798758d8d78281f38647645ac0c19e3e10fb6a494fa0231e031dd3f64804e5058246a031c8dcb948fbdcca40c65b0315e3094441c15db9b3147e4a13729f3e7face780f7da5ca6da3e957cc1d9da5172483ea31ae6eee89c7858bdcb9bb4f1807ed819a976c43c6b183db9d93aceba0f5c908189fc8babeeabfc584588dedb7b73e51579eb06487a87f47667315f5884156ab12cbae0d005a924cd8cb01ea7b4ce8d8435df8b332aa7118e489bcacb1910068f95fcc8ae0fb87f14310981952e3cb6f5c454722e25bc87877f445a901f4ee19436ae6226668a410cf053e01944d2f7cfd179cf8608971907eb583f9033ee94639f71a4c65c2c8a36de54006fdbe859b4cbcef78ec18c7bbccaa40754ab364a0722c44582b431b5cce20625d75962f33794e02ca103ea07fb46c9503c415c8182beb32ab4d2d43a42d424d0ec76e6374a2306a31543b479348fe1b86ed2944fa6a194165aa774f688515a6adfc6443b960e1c46895cf846d13761e174dcf2fbee588d28b25e15abb243bbff24720e9b48aa926d3afecfe02077d614fac90bdbb1a87ed5dd8bc224baba8162f30893106f9d4ad9a020965e28de7da9e62b2cce9975db6285a514b028ac3c06760c263650f74b5ae589617742c60aeab625e2295b5e36560505b5755a873fc3c58aef29810737679824279ce9df0b8252a3417493fa23c179039a276f02b628e9606d7655b7609ed559fe262eb63c636da38f44ecec453cfb6c355a8baa65b536f4a6201e53d1002869083705d237700c3ae9970e8f28a5cb970d67d036836f22368fdb75b1cf2eaf11329ce7e0cf8907ffbcd42b000f159955be33043d397dd540db89102542c0717ec65bf305cf29117f741e92a6978ab833f4f944372feb3623b646c9b6120769de3b64e547521052bc3e70d7015ca6dc233f699589e60364ef08405762d2ddc188dbad23a11ad12e71790498874fdd62f369230e07a198356e629744334bcd5280eee671c83a532980fd017bbf12c1ef05d8baff44d979a41847b86dfc9521bc9c532d15ef85713fe7d4c02201d20393fa378fa59e0910b752720a9713c70eb8f799b7e6e78b83d09baa559b8155f266b60686b1181789722efc9181e14cab89ee1fad88337843b87160e918e2239c06b1f3c69d8178d3a0e8b39ba9bd9b9776c3e14fcd22e778ed1474dba2a8d1d33f78611f950da7112feb692549e57a77d82d008f10245019ee58fab826242112e3651f2229dfad3ec64d4c4c044bbebc808530a1ee668f3c72aa1e071808a34174352e00ffb7e77f057cddf3c60df1715f77e30c9e897a9245b3f394b64149865d6f8ceb029eb2e7f8be8b98b134447aece2d447641638a4cf0b086986d7d748aa617fada09271df5c5b103cd30a3cba42c92baf07be1b49efd6ae8aaf6de280acc11e8985ba07318231d8aaa9829476611d4144b034cf00a59462a22927d5b64272b32d70d1931d04eb526af5866b9a72acd39e628062be5c69d30182730c556f2105c95af6d5b729534654b92e97450e14c89c52ec7fd991681e079a6f00b9af36a0e3df1e2b12ddc7d8bc77f7cd57204d1860905e979f7d251f0fcaa7938a0ef89ddfcdc825a52068f5bcb60a49669ef515bce685f628accf73e93f694fecef6c25d5d3deaf63dbf2cec1e98197282a6c1f02d2aef3578a3063678278de50c061cb559f4c3f65b5ff4bb52dc54e6ff247c6664ead3a3b924622f6729e72693a339f059961366c56ebbd94cd591819602094a1851eb40a409632a682a586f73791290a12b79cff253bf93cbea046b64c95244b7287436bb7f7460b957f2b91ae9aaad8e11d7b20f15457decb18a9cafe7473f046e266ca8cb2714ac6cb3b594a11d8bb4954cce36d122bfd422c83ada75090fba158ac9086338ee02b4b82e6da95159007ce1ef23c66e0ec85c1fa435fc7d2e4455b884299a188c514713100862534744e0b8911db65bc13f7286d6ff02d79a19421179a5c64c99618a5f556cbc83249cd0c7ddd40eab5c13444e6f8e690900f16a2fe0d5cfe95b061755ac77e5125b9bb01ffe6784058187b922638869acbc54b9218d928c9e74cd4a533bb38b79e5f4b82b4faa9108b6b4edb745adf68dcd241b57c87c94441ff2de2b615692ee7ed1f86ddae645deb61dc6c7a9ed3ab1f448b8641c0066e0602b4d4f9973ee49ff1a96c62ff7fd5d77c276e219450bfc169a2207657ea3c498f663c45d0d1331fd105e92642ce714910afe68f8b19e0f9c7fbe04fb3d0dfc01d7f593a550aafd874c3b147413b51daeb3a7571605229d98fdc06b9959a1aeed01adaad43fc552676bf1896fb682f63bbb2631a3d62ba1fd2d3f05b70fb8274312ce275184e73aa336b1808457c4ffe0ac8971aa8ec633065abae747a992a3bb0e546446f45c073f720f0d88d21ffb1f2d2347840dafcaa488c82c63830143dbb7b63beabf1cfe4e2206393ea7ed72851b444b7d5da1b1ddfe034273b7f319398279b673dcc8964ad89d841b200e290cbd60f770b7136129d01aa0744fcfa329cc22e09a5396e9e182eb8aeecd82cfb155e6b913ce104babe059fd58fcbf721ae3b51b95f868c9fd08920861d9e8d8dc01ba2f4c42067787dd445e76d3ca49c14005a96c7efa8e7b759a6be4d78f627b34b33534df1f967e6d1a67fdf99dbe42c366c451ea83c99e2b0f725231aaa19cac4aa6da13a07dda19c7461f34c18077f4596732de27efed9ce1e7067f99ea777b0f8c338732c41a4d30c72ac346500051a11ac2057955daeb78264d0ae981c8227b8463a64f031ec34372da87f0c74eee7c667e0d540a406feeeb4a051312c183f97e3b9676d9dc7d03f0517a1018530ffa33b50e564de9b05d65ee96776adfa76d3270c5371f764c37e76ba6e62316ce013ec950927532dc4069444d5746f0b7d2632db8fa30095fcfb627c8d19b9785250d5ce8bf2131b36eb1ad38a04fac262522e53917779cc95e1137427c784356656829c341f6c8523d00a1d6ecd7ae345bb673d192c09f0a3ae9342392b83cfc8855cae2da58a77f48bedfae51147923353fffcc6c9a2ca9299955c0b40e7076ab36706f718ef838f4190bead7a73a9c99d8a8f4001e78de4a7e5ba6f38665f969b753e24806a77338ff653d79b7f107fd26bb776121fbee61e77e8dcc669012ff13c1332369021e5e8f1d352ee20fab6b8476f8564941f2f8f1bdd90800366b115e100e530579730c9bf39c53421556f212ec8a51a5eef3fbee5d882a25fe11baeb5175315e00badfe84ec788ed04e71f1f20781c9051db79cb76db461a6ad5dd0b884eac3780ec61c40f6e85235b7ed16e77b361570a2930ec20bb84864f6505fd5a5e56766ec04dbb800db9980c344a243a74189fefc63a8c596265ad26f5c89ec8b9827a50b0de3ef0365b61d55e52fc28df17e391ef3f2bec55954602b13730ac72e2ae725d252f26510299c87fdab6702a79b314b8b8c9a41b1a89197e4637920880e3683b3896a537d301204b3ed1ae962ca1d7bd46e26ce8c5720409293faea9a5f630e463f9ae99eb97b730dc721eb905120ac332f80902e14cc9d3c5f2390d116a3aff08d30f20a05026775ea9a72b86243c98d9e042258d129a580ae1b11da6dcdc9c59a229d577acdfa019179e757c6900051e7a2ccc4d1275b6e53d22d3c8d21aafd89f3e500642eaec623af18a3260f5798da953b9931fc4ebbdda0afa1f1996de3ed54e77aec9eb30882da1d77fcf2f5cbf445c9fdd1840eb620c2475c20e8b766e5ef691bd534b575e0b140ca641091f98b9245228e1d31faf48cb00c0e5744a8957cc7301705e619cce07db9218fd3160b41c55eb9f3f45832f3d7b79e058f2fb443f30cfa480e94abdccda2e3382650f0226d14251eaab914f7d1db1d5eea173bcb68dd7bd91350c3e119c9d07a68bedec8243890118ae1abcc6fe8239ba68c6a15c09d10900bfcced356c71abfe7dc520e912554cd4b11e011fe06b5a2490e72ba4b6149af139c61a7da0763ab38d3d71517a851815b494b04b47caf7079d614d7963b276a8a8a0a357aee0fe88e6f9d49946b0939e0fb8ddfd6e2e4a864609cd34d8a978a8dcad7389e2d69100e8bbc038f82fdc2456ee498bc64360d294a9021b797f72dc4cd096758c3626bf57ee7df2247e6a348516f22aaf94c4d62ce79f3fe1d81c6b9e252c525fc8745b42fec873d230b5b4896ce89bbfb15aaff0e3ad1a5a7b6812bc76af57c4ea4ff9629d2b2a11b50ad2954ef0a4dd1cdf1275917f91c905dac81edff3fad8ef17ed3dc3cebbad9174d0537e2d471249eb2e8bced3d3cee84d3aa343f8fca83ec093415762580c684b25dd59b5243f8202da57b82d35086c17dc156d9cfc19c905274112cc4312979b312b224c525ff7da1a74140c2fd3520f8a835a49132197e4eafe7c73673a017d5bc3f8d6393d817ea52ddb2e42cc21901bdf0a923d4ad1cb41b583692bc8014607150c770d482bf8d213b3403ace5f4b7bdbd317ca00c63096c044f61f99823a0368d41f5c87f056acb80848bbaaa7c14207b88f4762b67b19756efaa71ec840dd63bfc237b6e2801e3e4f15eff453f6383917e97bc7b5782f34e2fcf8835d46754579e918023a968f6aa27216488cbcf58625a16d0a4ed2e1dc43e7bf8890308bd5caf99b96845f99bc8845e7f005330f253aa378aa51c3cd4d54a26070b003389653c3c3bcd655588f103d9337a752523db0fd86a42729dc23990bb3468eb0992df8ab37fdd29608a9820856be9a0c7486638170cca4dc961ff8a7dfb392cdc32faf36d4d4eea0aafee79b639b0c5031e32a70a665fb0a98b62fec8cae25b89867a07f512eb71b80a2f90f3b90046c8717100dd2ddd21947b80ec32ae9500fa301e0c97fb2020dba89f97fd564176b439f6ac2dc50b6270c4dc1e4dcedd3c498614932ea1793b93b1261bb134805afc1422bf181b26ea90e492a333980ed71a5fa5c41cfc62775e7544c99c73f5262f65b4aad6c336ab25fe599e30e44bda3fedaa8c72356c6662205aee23687d16286b8117ab356a7dec0a47d832296c988b7f31c47902c597c403b02d3f2a4c942ec8ddf077273dda92aa160b1974e456e54063ed5e8bb084c17ca3af455692a02f3a2368979a001ea443b192e3c59f1df7eba595fe57f64fc429e661fa6503c93695ea2b842df7f480a21576d2f19b78e75867d975d40e62d65cd817bef002dd7d605f72541329bf0ce98f0a5c3dac77243c9cad9a3441c823f361383eddeebeaefaf9a41a0f51cabb10b16029357b4bb5b8fbc6a1696cdb6bdd2a0b55191e930bfcd195953eef84fcbda165cc28dc19eaf7d8bbfdf6296f243e1659e214e8f65e19028ff538848a9968f2d85c9dd14951f3f22f747f6de8aa9ac92a01d52e4d31bfdda8f9ac6fe755142c1bdf210d2cd2baa6b76357f95b89e905ef584b7615a332080adbec8c43b5e7af3819f53bd679292d2134a17a8eab8411d0957f1de01c85bb9934729357a4db3f960c3bb41b00397401a0ea7914065a050cf2aa84d81304364a53adcf066e9b1ea26c06bb08b27909bb64c5054c2876891eb11af5571d5f978c7f8f9ce3aa4574cf57393443a6aabb25cd6779a9c224c75bc463122346f385c9f95810e4f3694d29c2251fcc6fb0c15fb58e21add4f36a025e44732e87e94c3c2ae2a1128744d9776333fb6253b4169a832e4626e453899db212447ac088c720b6f252063440de5daa13042eceaccf7e35a56d3380736a18d79f75ec1ee876dff7bcde1711711b87a88e4e54932d5ab24782481cfd472f88535787ee94c4c66888c6b898b4b79cc8f31c89779ce9da7b31c6dfd4882c60ef5d0b9c380183936697e38cf85dc837bb0f06c198c4264c8a79c827b53c30cb76159b9eb991bc475b3239e84265181a280892dec3b199c59334d2a65852f824eb840793b6fa880d37141114185c845f316f49ea0552932fae526d19ee546563fd42747001a4c22dbfdfe58de27ffc955de2db29ab5366f574dda339e4bc2af61ebbafd33e3cafd5a77ff06f7ec36eec8ed441adff9ab0a1655f702403876d1551621531a5285e364887e6c75999a20f9e5da10ba4de4eac5680ed72cf95a6cca8eecf3acd05a5a0c2977c4edb0846c0eb23089b155db4943c8fbcc78e779bac3c92d23ff0a30b64f75ffb906cd8420341e103aca3a11a04430fc39f44f723f2281870d74978e4b5394178017b3a20b73bc1af3dfe06c7e034d4b56c8a62b92e6b991db7428b76668287f0b4128958a37e7d232f10c5ed8a13b1daed6a5b7ea40f083e34a3e21b9105c1c2c26257126ae13a0540634f69b7c43f8b9f67864f55b47b73b630fd4fb153d702def4a40e0e7e513d69b98df59724f1888044b7a439b6d6d1c643ba83f344fc3ee77380c28810f75ee4053256a38d3c27256c0a64864907ac766a850d113004d4c3534b751b905ba32801678a3668ab70e0ecc75c6913202bbcfecf0580df39c43c5161dbf743e9e05c450e2a6e7c2c269b11ebbbc595e1b5d2be403d87e394982f179dacacd785083d114864d03842eba22ca12c4b29bf978702e49b686ee8bc02ce3949c2fc279a97fa20bee731d93568a1c425e98626c78676f3093136e6f0cb585fea6126b513309085849e543e9693d1a0c8081288c83ee193b791c0a75b33f586c606f85b27c2a9c708f7bda8e283f77d694f3c4f0dd99cdfa1d044a5ee8ef481a4b25b7edc6760b748fa720324fdac0d75e95541750d5abc74b5dd7f66e745ce17903b1a83158ce98b3e575529e3c5c74d33f68d969fca727120259fe7a28d52657f61718d69cc649459e5f0b833900e27015fe92cec45c550483a3963f98a9ec242d522e3baec0adfd73abd609cad76efef8a61310d9d4871526a715c148a0e0d0b4135599220f2e4accf0707881a2dcd6b3a40dee3542f44b18c6287e85dda019429d7b46a668ad7e8b2aa6b6c05607ba75e89fe6927b071b72dd9b3a5f0b5cba8107f630e9b694ec26457fe57b9a2294be57df023f5ba326850600182b51d5a5340930a3d1f8443ae9b897278c1208c8596c7a6314c8320c090b68b06d3b4844dffebd5966719528e215d9c2efa4271564ee507e197baf8a17aab36b92466e9668fb92ce24c2bf929f5a26d47ab822dfd309eb7e7ec2bd7d410beeba1b998e85b3674a6e6ae2b9994d401b66e8ff51af4c7c0d2920216ba90e57830f2d3493ae5c012c4e7ce26086c8b841e130fb65f05e6280890675015037c8f1d5c4efc8e9aecdcc9e16634ce54b32a30e86d795e1cce3a4ce8596edadfc47b715ac1b6fbc145726b9883278580388aae32cde5014306610ea6c3284c5a539be332e22ff6ccb062f33f0ab10187d5718efcf035c4634e20b572eda559731c3f1d7588a55a917c9b1fb1755c29198485c9e9d80cf9fa8a440406d03b2874194aa76145fc59225fc3bc14b55466366eac27e50f947824a7764a51a3aa93f17f47dd7f2340398c90d8889051b9594c5c4f9eef1968d488c6124d61f9fc1b2992c9f19d84669851bd9083244390fcd18b62d89befc8132d02d06ef63a5f076c6886a371b6656d07f47b739996affceb259ba7dc2a8e00eba99a7bc7fb53e637d68b3fb1ba37dd9ad4a599c7bde23461207796fcf691227901ca2d41eceb238d35423ae34b9383893f30184ffacf48982757e4f40da603bc2162b7819373c1f33e02c31b85a52fd816e171404cff34e671152100b02fde7cad03bdc39108ce5ac4e9de549fc5ed329807b88242ed82dfcaf5954c2a01cc2188a38e5139fac1ea187a82095a0577f49abe1635571ff6bf5c4d7c7acfb6c389b520e6229de7e4c99baa077c5540ce6a8b1e2b70852013302bd7272dd530c763de5f2a809bada02013c9a42c576ef0cf8c6406393a2f7cd03b2ddaed72cc6877d2a4c293c3d84dde0c8f6393f10c218f841cee410e203c0b16eb96605695d556c6bcde188b0552d56f9212a0fa7c90719d67729162e0fa2b1868840d9a709d6d91d15cdce6441ac2788e7cf67c58697459452b0c0083e7d83f0109551078e0aff531ffb9f8a82bd3f0ab2e04e3c5b11b8bf052ee5625989f763b462b2b04726fa259bde492a6350f07a669415545593069901c72ca1fe18ed9c238b821cf981e8fd86d8d2ceff6ba05bd583c18800800a626deff50d3c39f07661046fd50f7ad34032fbff697f26c99ec9b8c702bf30f8e5c5639c43efadfb4d98d47659680a054fab1cc20f1340095977316ba4bd62163841f6eea978fa0387431a1fa7f6ac650c2894b1034bc7fbce8fb5cfc20bb64de4d68c0e63860ef6cf20fbcb6b4c57410af38f36f71b09ea40732ae8167b32aee5037bf3b47a56145f9202400d4d01e52e79b2d655e639831a74247d150889c26d57375d397155f6d4ed5a14b4d51c022c7ca892beab30ad23476ecfd535acc66f55d6e6f180a65cd9a7d90818ed8acaad0f6787b8c1f5e586e61d94a6c96c511e5581df649fa4d9ad2333520213da2623fabfe5b3dad2c2237ddd2a54e2922f88a0954047480bec7adb5b51883d4f30a2cb48498d8d544622d2cfb3dec2f7dd06d0dc6a2532ad062b1ad4d5803d55fd5a135390b67b93a56c223610382d06e7f24f6ec5e8d4d68973a7f1e04a859a1eaf67863535cdbb327230b7433a128ee0126c451cbb643abde194f363ad0e8c4314db56bebcb386a103948bd9213c4fcf716aab3e2074bf7051d2a32b83e7a21827cc420f4d5b21e944503c6b5a8d728f33f9c0e6c455a231eed59b88d1d3243dd6d4f1a81027c08059d58ac0713e7ad1486958a6886072627ba03b7736e95a136b671bfa1349de3d71de9a996d27990bfb5239c9555dec5ceba43e34542ffbf7e5fffe5c7869a8c3379823d7d2291cb04503d10dae9fdf5feaf799f182adb483899fa89d5b6370ebba2fce809d7eb9bed6528755c7d1ef3552a6c37e99ebd9e5650a2d07a0049d6901a0c159b2ec7053637aa8c96415641ec83bdd93e2ac877a0a1af8d1a9df3efa07ff8f8c69465c65fbb7aedef2a9e53bf47cfd0d22bb614ff8e2c88fbf40ee3d5fee48f9c91e9ab45882123547f8996a8211dedde3d4d5e59c3c969f67e00423155d7ba9c0e985d1ebb37603766f10be25c118990e10d13e1b6919fa02ed019225436809fdce4d164397148ed1fb9896ed95a8e45e3663cd9d11095a7b7f7e5cf72ca4293acf02dfeb003c28d5af9442939f8d71c104bce2c409bf5daa7948ab9bfd53b6f2ea0eab6ad3fc675fb67017a7848a29b0f1e1b774d4afea63f24fd1a54a33967331d66c3bf3a385898b330c2fa3aa0a1f06a4351392ac907dbd9024e0a9947272be459adec26d134ba74a15c636243204f17c8a2d2489fd0439a971404951c3e1f5ad7a83dcb9d70a3ee1afa283742f520e6750065a3ec4e21125e6d717dbaa5dc3a2420692267c4cf3e28f5265f80d6058bd7c116f2642549e187b07f38ea735bdd6abe674ed6121153a684ab4d77e807066ab5fc76c21720cdb4f39ffd3281fb828719800135ef42b7b0363b54a174c8e04a14529ffa1a54c587ec26c41d2a9df2e5d7679386f83105f166c28ffc341c08763f04d671cbe404b1221adab71c36cae22826ff7151090604effe00718550482c571e7884e23d37095b1a47ad33845a12842a5302dcd7bb7477a95b7827b411e000f120cf065cae5f2c63d77aaea672534f5284a082da84b90657f37f99f17133dc04f7c5e85c076669be9d5f44f2481d12f9ca39b9f030b1c87010fbe2ebc22d8dff0606328f2527d6620fa0d0fcbd80531a0d8eb747cda38534ec96ee7e6231e5a79d3ac6dad7f93db92581521c808a9108004e54738434fda78cf803a76d8799e86a0e2d9b2e62935ee8e0d4d4c7cbb8623d033164b1a0a934dda6dd73adb6e026bb8f9c81789b08cb1b91c1a4c61188708d5752fe01fb88867ab3f04af009de4e73190bb272df892bf9c37da663e9ce3a53f7d5a8e8d0d5febc5c2eafbd1738c326782c2cc90a7c593c687c38da3603e9fe89eef570fddde8c5d2a87b4f1c65c8dd4fc673a134964789e6071553db1293afe4344a031af9d44559426dc800eff195cc324bea157e48239f2effe7dea4e36dc6bb5a433f28d78dbec7fb35c72b1f852179717ea3363652850fed4ecbd66dc85ab91c04c8bd16956e776860c648e33642a06ebbf4c72ebf8e27a9d6e7a0cfaec6cdb32d8917310e761106f91b8d7886c26bc7033a001fe25e8ab46dbfdd34d3cd3d6c3487ed879e9793d0d9a3ebccdb033654ddac2092bae34c499931976c8e9a28b59e785a141f02783b7eea7bba100845b8bf100729b121b5bd82df654d9b99626f88148564677ec8ddb29e0a2048143199cbea1f4cc7d2d7ea3dde4f6b8f37dc82c0408990d491f410218b7d08d49d2cb3403d53268bf30bc3490a16b69ada1f666613961a038b0808d5664fa4dcdc5c7b5850d4b46a75f317b067f740ef89fde6016301ba76cc9955fda16b9f2664955079477286c7bed36242628ec89c6d8c3e2568b3a4f58f621c323fccc75ddbae200a694485ff0e75732fb8b80dbfdb1d85642698dc16eb8a16dfa59cb5e0c3b402c5b3206b20948ffaaf6fad92ebce592c0ed746b07e3a35dc1225822ac5395a33f4569609bdbff1b4e6c9086c631c5be775fe6a064eecb3bb88b5049c10732a7cd32b76e7624f136994c43f6ddaa84d542f75b0cc24af559c2affa9762dadd040ae07b25419127b96eca0cbc2cc17d6d8af44dc82155cefb605a91e5d4694fda3e8fd4d1e556b73833894f3d82dc62c71754a19a0031b98f3b8837026ae3b1bc01112a3a8f964c0bee3f04e82e76a76fe43d237bb1ed5a4405aeba0335e52674cd1a54e4a00c36a3128cc0571105fa2d00167772f7bfbdd83bc81798007ec0b1e93c42ce014d5224660217dc14f5f52dbc6b0bae29e2649997d27bdd6b3d6c16a1018be389feb9d9e73ac4981a88d095f9e26646f270cb14388068776ea3d9173ba2dba223dfedd59268c995f6e2106e5c4a6201808b657157eb6715cce6c3650a12677ea2fd35c2e94a41b102aaf24d01c673a44ad5110d25a5cb54af0c56834eb8298593cbe0416f29721745a408bfdfd10497bacd5f2e4dfd051bcfaa4924d327b722e72a8c78195722fe548172f432cded80fcff506b1dc60750ab240eb062048599d39aea9d0235d8d4888b1bbb89daf7863fe795cc7aa9fc1b7dfd0a0e80ca159fe2c924c92c7ba9360f912e6b1ded36b9d51b4cc0c3c3bc98e4cea65443571b39d6281c6699b0175e2d3a8f16f824c04625f5580afd55c65d01388790ae49b3fb76c419446cdec6a2ad567f4a4befc91a7eaff893b8dcad5b5cf4934ea80f0342e8ad358588a37b0197d5ee3f9ca483fbbb2dc86adbafc5b3b0557d8b9314ba091fb6c1bd34f015c3d2de3ec8df83554ff85410160f2acec058e5b923e996e7e77d7cbea29dd7c530e6ea77982c7edcc2f0a71ba491325963355d2dff08bd8647ca16d0e8de14d46e6487b49328a6e8911541855d597668ae251284e04e1010512b7370c4bb3edb06f77f2a083c5a9efab3d3ab0b800c5bf78c03fd81785c1c44f376abd9e0f520d32a824a5ea3b8313d4072c33d130d217fd81348ee0c757eb12467c6972fc739da22e03dad798718ef1024d3335514dae7e9711488bf7e62c5ea5a0d1689220f61107e819eddb6074a2bdd760833fa6e234264060d5fd58ee9147644c1dd97c191011a8c65c54d19396bcae73295df31a0f494e31919fd28010432aaf84900b8d14cf8b98698f4c59a2c79e04634e9397856a4910b7fb0c7b0be3de5e8ee18a4886bbaf53f29ae4a79a6cb76abd6a50c1951a846764bd2f6bb3f31b61f6dc621e6b653d830b2bec08595267051d9722c036aebec8dda5e7001ef4755a4fc07e4f21eae80c02aeb0cb5074becdda39988c3fc6a1a09bcaffb8c3e2aaa788d6bd5e654f9277eaf3d8451e2c22f78168514156bec01df4265fba266be676c79f295d9659e64cf73e28fe16bc4cec0c5625985cafa9805d2b7b98a66944f5a3b8b0ceba4618e1d14021ea0df66b41a9f1e5b2a131e924529c2d6ca0b3220a45b39856a09dd9bba8edf911261b214d73331d3a22a4ebe0c5b2bb91ae409a87dbb95598e8c21e4d494c4eb278c09f816ea58d62e837ed031c76817d479c8117bad62550549aaf2ffcc87a67726e5082fea12301fcb3f19c7aa341d7db2af0de17326efd400b8da7d82d0c7039f3402273fd15fd6a8a814b1a34e707c165a0584700e591af050a2d320c2eeb73463d626e24bd701cd11d1bd1f99dced8aaf788120f0193625281d2fa2226c5104e973bdf53e0600f1e45be4819bd5fd30c58996108a1307165b417116debd70966adc74113a3bb8a38ed72e34b6e29ebb4a483fa1a97748fe205d42f17a2f3c738784e8b4c21632552f498a35673dcc5dbb98494291e07c9f46fe7a80481a8f7e2adb08fc6be2a1c8aafcf9ed15da244584f8c8c1060f3a714912c3d34cf5d352a1a902874f7cdd5fe0063ada05f48e5bec1c5fb07ae10ef30485380367e20c0b1ae27fb32a126480b73d26159d08efb15d408fdba61368ec46e9d366d1f90104f719f2e653381072e7fd3df2e81bfa03aaffdeebacb022f774e8fb9f8a5f1b79d1f2a0ec716b3364e5fc7b6839a3a23f63b1330b14c1c4d76f870917f1a943eceb20dc6d05e9648831b122526841034e87f06db164e3bc77f3af46803230938ce8612b09204e6de193ee2efe458e79a7a256a969f89780312d489750263237dc952f23c0564a480a653a062f47c50a839f9acdbb57c7b1363e1f34d4813a47861a3b1b3fbafb7f2d4aa33168f21b677e778c9466fceb5c74d4a96e8a5695ff5267d01c7a79c361b97ed93e3d76c80fb2b531d1f8cd6bdb39abc77cb7a11b007523a62cd69e3d62dc2256816ae309299cebf40bc5d731a6ef182bcf4d6b223ca4527759cff62a07df961127bb06eb5e6efd024b5f2e394d8c85a1f429c6e62c5af41a18f8d60ac1342576e1dbe6427e476de1bee7998a8c9464d97fa101150943a694f87ef2bcf9c0bf7db360bd2aa060f68704aa5cd659d0e593fd8fc139e5dc2b3b77c3d93dc78540ccc00b940d6f7e60ef58b7f6c1a2b16b1a31a9bff8622fad06edc05b8b86cc3096106acc286076a1b45245301114a37168016e975ba94b8d167b53dde034778978018732d36bdaee006bf2b32c00607c3f7be2c4a3de8f6656c74512d3a7867cfa3a2071749f7089c0784846ea4bdcea83f804e95d6f6367c202dcec33422305fc90c96ac6f2e08eaf3c80fe18cecb30bb29ab083629239fe9d0f46dc6696b90f7e872f16fcff489d269f92979b5095116770fc9837144c56e98aaaa8c13d356aeb99544df55a410d60bf5a1ebefe2b12796db3740eadada0951aad22da66d828f94305b03efc6b45131db33c915cef4afddd6be5c999fc3bd9bd90781461b8347c5dd9177341c3d16a4e12d24720e98efd2aceb44dfd063da53a311a7f458d8ca845e17b232b3489780445e6d8800ee399dfbe65e0721b9923bd2612e6b2a40e2d79d8b4b6f99485a64238334586f47657fac540db0a9af6b8ba644cd4813ffea553b285c7e47cec313307c3590ba39149ad9e503bcc002e42c38de3bcb2bb3bf72d7d5e6a3fa76c5428bfea92548055beab89c349ae301e4030b28b3b61ef318b28e4d312650596ec32926521a010b3caea5cc5e4d9c953acdbb4515c6f90cb5d712499efe015042eabf7db7204c3979190548c2790abff1720acf8e84f9a392bdfa8361b45d842a79e0cfae7c6b0bb6082a42b363a64c03ce528d47af673d4704afb597bb43826ee6702a8033ffaca2ae8441b3177ee811afec30131f9b1548cf27122b597dc024c7449aa9377c6ebea807a2eb8764df860ecbda7f56d7af578c4ee18f2c42c5d319bc14c1384245d8cb977017752ad32c177bb19fba967251dbcedc6276425ce3d1d318fc2a889b45b7979b424014d97fa1027f208f091847cb695d3be11cc55ae48a32cbb21f48018a03ce736fc92ce71970101dee89e6d1549517802f6df5939401701f27519f8e82cb9d7e2f45d80ef5dce556fa07842eed426cca6aca9e011cdcccadbba4d00704530151b957b7bf61b94b49239696f849a583497a03decefc01a37eaf72b5a92c78f4f3e21542b50278539a94dbfbb64d0553f7d93b7e61b863f49c04ee4db5c2692f6f029776b1d520a895648a7e7e5a481e8777b8c87b9dfd68d44bb63994a87e0f3a324fc816025017a0d20bf6e3212f4cf275d16f8fe33dbb2616d94b9d9f6add94d25c91b40eea296450897cdff9decac8666116c482e5768473bc5c40d4d516787c8820ddc05ac57ff972fb1312495e31b61e90a613186892c3108f21f2f552ca29f1840591ca01f623c5bd101358b705f9f4d184a9662485f8467bebe1c2845c691b81132369dae391db4b94bf9daacfd10fec5bd7187ed1a217ad95bc79257d72e79804aa0cd3231ea5ef43b8d2e55717cc646f40d7ae64946ef669ec7432f8b3235a5ae1e9c6d0f2845354770ab6fd01101baba996f81410fc18c4375f2ad25549929a0b309f25d860326658cac08a0c410d6f07e6d074ba00ac02360db409fb46ab8dfeacc56f351975b9dad4304eb91c6043c5b32adfaca6f71d78da254e6deca42efb7a48eccd5f60a43e9d7cb30536ce7709bcd6bb003613c6fa08a6a4dad0ae73b3649fef118ac0bc9b4f65be2a93ff44ea5a95c64a628f2291b93cabad9ec23a75599d9d31957d0069736c17f168d7e25c93de9ea5a64c24d6857c650ac685f6fe80b8c472e9c56901c93b586a4071c469e3acfe53cb1ba941e551ab2cb7002cf4346f4cedc111861d8f9dae3adef136d68bfa7541287a710d8b7fcd6684256fc5ca4c66ac7cb872a85f0f9780b2f41c6f62586899904470661a09fd3b71d06baccc8883a1e9b78e585c6144252848f56120b50cfc4003ed99c4bd43f5e0b853c0288c9de57eab709bd5e78f0e1b12d1340e42bef782c2f4ffb39c358d7cefc7b43f57033a84bcf0bdcc21584b5e335044ef2140a62e453df99dfd4666dfa7d5c0a816867052c37f7164d5f2198bd95eb0572c71c0df38efcb81a39b12338e3f17e2c89a13a868e3477ff4aa5e9beb0e83098fe48278211d5cb5367b54beff06b9134260c46fefa0c752fd1b1337ac44f4ea911f31599a87c7e1b672f51fc568c91c40d2be4a8839d96e56cfba165821a5869295dc760eea880405ececbf58a5cc48aba7ad3bd77e810ad5f94f6e726ad2b6d408956eaa2ebd78ecf5b99858754caa53b7be181d9530f8117b1e974e9757e2f6ee3f1b6110c0cc721fd15499b897a7a20e192b87ca5ef0bf0e5571ae1273b728bdcebe58648a1a9189a5d947a3ec5fc56fa3d519dd96e30b13b348dd7c19005b71b4b73cc704d4c0f52fc54f6ddbeaef3cabbf6b335cc7bc9c607025d47bfc152617e65c39fa6770981d3232235a3be3a266b7311a7a1c3344fea67ae61e7f9cdd4555f14f71358b02f78e9edc0e9225f2ad2f7bc11c43cce3c3bf491b42f6357bb5a5b33b41408386911995acc8914c50432761bfcff24314c57fb33176d11d2b6f6ea10290bd2f41b83270e679b828b07260514cd37ab043529ad18e6121b4aab13eebaf3e1c3707adcb5cdc7d2cfb1e954b8bee514e9365f634dd82fe47994f0c7035df7c6c8800ed07055202f0a093949b9124fa0c8d83f7275d8cdd01787828fb2757d6f50aeecba3a385f1f36cc9d923101eb7b9022a392ac6025fad21eacf7a8802a94543fbbe01b581cd59545e3776fa22cf84f2947fb9c46823a49da2d7441dc820aba40ce9a2d1622db6a207df58304d357bb542ba379b90bc63410a6e50aa8a37720431e8bf71914afff3bd4b27eede1545ebcc39f9d50725082466a54077b4adfa05f955f96a44f26eb6179213229eae72b386fd7d12a48f1c7cc88ac2e719a6bbe2cbc599fadd9b75273c1b582b670e5a32a7f0b677000de0bf97e1fd1e050da91d434032c6030072d3045906e32cc46fa2522a936e50aafe17339585e0ab4c2b7bee5fa1182ebe89cb3e83efb6bb1ea9c1643e6444d6d57d7b6f8645c1e537d4ebda3e5d484e5c723ab5a40014ed5541fe2ddd9f6cdaf0604400a4388cc04365cc6fb939d475503552d8133c1d4cf101fd0590303a93d9f4c1cfbd3f150ae6e2060c15194db1825736086db33b5e6986da8a00abe13366c46f916368222bef0cf8b85790bee9b0ed89bd24741aa203fc805024a98e2d74b854dc9e0a465e2ef5969a510d81e242c9125921dc3ff5ef3b0bef48694ca4b694ba200df919f392c787dc3efc659ba1ba8a4ce5c095842462560207dfeabf8797e6913c7ec0aa65d2d1c34cf944b967275004d8f7e973d8c575d2414dc7d29014d5d7497cd498de6e650eb3f8ae40f827f3a2576baed2aec9dedf352e71c9a2e99b53d5b204afad9bc89522a512f4fd1147cd9bc2b86435bd6183817c9a4435c6e28b4aa91f6cc8110ce52d9f30b644256ef828068a8aa7da669b3a1f492cb8c9b6c127b955e0b15ddc3c1deb9c05a9b108e2f12918de9b887d71379bc5643a66a1373c36097d3f744bdfacaa1684f202a0535043f7be433c41d7c0c42d02439b3f16a223c7cc6192432f318c9a4430f24e8d30987a238d71cba6df06eaf932bfae1cd09aee274ac152075b9e7d96470f814068f7fcaf90992478ef3343215d472e5daac020412f7f6354176f06637398630590155ec088bff4c2588df753fbcad4d88dab44b1beaf6ba5da7ca47aed40a19dac580ec9924462f1a9c14432f8f90dbcc84ab28a764895e433fe87cd3d60c3cbeea93816c8846c2c4f38628a182abd7854b7f511a39f5735850303dcd0267c039484f47886a6dbbe1eb81dfc84ae0539d71971df29c82fe2dfdb0e5a08b0143bca1dee60fee5cc8bacefda54451b39a33c031d2cf84425deca818650e29903afa9e5c15aaa67c4eb75e18a1ec94044de210c1512a0bf52c5389c7305d48ed512eeb8414f344e767e40ce323cdaf5135b5e807a2cfef2ac77b256a6539eabc39c25076357ced8f5366d410626bdd61d19c688ec4e2e666f7436c24be571ba6213f2cda8f00197f268dd154027df499eea808ba9ff78b2b430441ad21d1c0ddaccbcd36d2e4e197f3c60817e89a8a8aa617f9ec1d6be9c0bab6c19723ac68120e4477e8e031a2d0f457d62804b8b0e6b3bb1f6f1db7fee4151b4263b2763a59e9038609390fd9707d7f330d2c9074a47c6780dc908722245e75e09bfde2f3f6fcdc13a910ee5caa69e22a9ab7bac6960b8cb00c68f18083f103ea79425088c0aa7f23ef6bdfdd1f51f0d23d019382ff96d3e7f1ea09f509d1e5593b3fee81848baa54fe62f76cfdf60dabaa4c14a84bde8fc8f8eda5d98eeef770736cbb412fccbca75c0ae34f73781b002c022690cbf287bf32a1e705e8a3d9a0a0be3937dc837d2bc8d592d58b12d2e17029e08fd26a56855a79b919d369df64b67584dcdc6f883c77ba93c4e0ab99cf4c307a167bedb15c4c7c962288bb8d1b97b646ffc3b7d0e840608f4aa2c941b810edc41081e7a06ce5a5c2b273fcbe32043c3d87a4dec1013effebc8dfc92b12e516d497093fe6277ce0a702e2caecabae7c9720db260ccfede9f68b6b5954f83d7a0e66afecb9cb60a4565424eb8317d096f70478185d1f40aaa155bf8cf92cd4b8236c02de4a466f2d78412b2a1fb7e267de895c35d0129553d73604acf6482eeaf0711592f53ca1213038d4f12667de3b82bf611895c1c3b8337a2fa6db0c244d6e877c2328b8c1e549c2c68ae65b4ed20f91231517f16107238c3d73f27b8100d03def9394f3d5286daac2c3cab3b78f223111faf08e1941861e6d46666be23f65f2aafecb4f99016e5383abb45ece2c54cc843d28e0d5a82fe533e569f582ff5e2521e6be93510247c0bbfc49f8c49af278d9cda8be208f757a64f464ea4ebe2f0ad6b740dcff761a391020ca58d6562d8326d99180a5fd1565b7c9d6d875b65bc6cf357699b5e9a9a7348133818d24e781465eeeca22a30bae7c591fdcde3cfc7ba9c68e9c2601b57a305cf7b68d0a74a637c115ddf62a74dc6dfa7df901943136ed0a5f41fbd21179a80ff664b7311af4e46e2a65d17ddc38c214cf2f5f7ef7f50878be923f3dc307cae96288147715d1908c53b7f5dad4c8bab96a2a5aaa2e65c625f210922330f0dd5365ae4a7d81c781b1ae91e8e95b8e432b87fce50574c7459f2dbf38e678ce596fb547fddceffd4d2244be0fe456bf010f704d069a160130de4c6610d7541a4092e864135350603dc7906467324a9f17161f1ff90f70c782207d1ffad2fa2e572457384134355561b8e73675e6ad6b5ae583d9e58e9c051b551b94403f161ec25ba5d87e888672c6d2320317960238c8dc448ca6441fe0424da186f8b3b29611cf5f94329438b01babc0c7eb9b09ee839009b7c819fe27f1318c41896960935f253eb305205b55492c3792a261fec20e4176cbaa81e0d1fee11ccaa6106213b65d84b0cfdf0b4d48d117830760794743a0a5c052dd4546d19654138116a9a8a061a8cfde981ca12a388e27a511459c4240d2a65ae645657dc8532a447322dc82eb6c25eeb7abb5fb2bd908e6f9962d5aa721b0aad49fd201e1e412172e34a90104bcc26bcf3a3b9e54180b37061289ea36403684e27bc3abc5f8787cfe74bd4de262f22ebce6629e7c78b9b7a90040230cb815f3dc75370d7ef3c1d107846909c0911c8b9c6a00c24033ce64c3eab149a867354f72f7c231fb5693125205eb3493e227c357301eadfad40442b2aa69d6432b79af2e17de9211a0f2fd26220de0ea251342c602b4340625eef01d2a790c26917add42c3588922c701ea5649b54fca382c2998aa371f5e588a50318c4632dc0a11b3c45e02537f04deacafc1fc31984a44ffee05c0c589ed5bbb541518bab8eaa51397cfbf73d00a21844374f85507279ce8a3844b20fc4634f14ee16396977af37e73928f939bfef8153f0dc60864d21a18fa20a6462ce77d4960de934cde6b572e73b03e2dd24fb568b7d79a3e09ee76eeec234c0852ac2ced9b82331e3085547f9cc13c3212f8f2da47d5bd91b6eeccf74e4ddc37917fd5fc2651f97f0c37d00073080dc6154bddcfc50fe8ce82879ed150e41b3d76da4fdab25136a60bf45505a6df65ae01803df5356bad66f5b06425b6dd8d4abed2d8ba0011b309a71ff5497f6bd0787a5ccf8e18758e6fcc0f89d675cc39724a0f93fe30f52aa55dfcd04278eccc1982a001e3d8c72ffea7accfde51b290a6d7b414e331051267d98c6648c1fab596b61dfab8989910b8ed5b9b1e139d134c14a4f95729803dda3cc6dcd4662990bba1412052ec86b3ebe8e4a007bfc41cc518442e80606b59e2bb1b059a08d37d972c21068c79aa794774db0edcc45cb631afb212f7bc816366ee6b986ea223f1fb012d2ae58f90e72952e9ba92050356c0cbd0944bf7de19fea2cbece3389db235b188b646f354e558719a979cb2ceff0df1a277ab9a23aea71b991703b4f1126433e2dcca4a94c35ce65356ac67ba2550f4102360cb82dd6abfe9d4fc7bdaf0e3a0f0c2221daf7ff8a75b6a8f6829139fe7d40dd73ff23db80e71cf0bdde2c551e7524443baefea936605edd426c1be1369226d862fbae434552bb66828f2607ffb87e355550ce946a8fdb3e40779827685e48bdef2b1714cb3f49884b7c7bad2ab505e79c90cd9207216bdf9da6873788df8d93c403b211de9da2360b6ca0977d3a1be8e2e5d8d4fd507d86e16d1b2d90e390ac3eaf003c84abd5f2be664202bd7b8baab005f358cc9b777339526a2e1527158f5cdd1695c2390b871d0de98cf350932c3f6df7477b89044c259c1078f4ade107d501e1faadae49189797e0237eadefe96b166565681346d2f88b67f01365db8c538523374ef3daa4e3ecd3c49064ad87a7c3d8c27b4bf1318fe4d5febcf2702ebc67c580e2aeded4a38298748113588cee8cb65d64b91d8e2a8a0c45eeeacf3cb8c6f82b9e768805182b50abcfd2c84e8a5a37492392e64a6c9e91779b2cea9c72d47550e1b57778d4c2d960b33d40c9dc579f8a79d5855476ac8aa481697916037a82ecd9d594485b4edd9e1f121b9533713060de8babca745e375fe128e9e0b0d9ee6033c6c6e3c959450cfbd917a7754caedea098f78f79c178f2a747bb7a763fba2ec2466f656dd18cea409149092a18161aab94103132431e73a01913eb34d6a51ff9bb5e418caf2821c6a5ed1049401fd2aa67c781d020093d53bab8e5fc3a8b16eca8ac1507521f0837c87ee251ca961d3208a1ff8cf2992a2b6f87023489ebead283da6e6bf232b6fbbde4377735989ce97f46250aea7ecbced211d89b3363a17f386b19003470a6271504fe51895d6451ce47c04958493448cd0eb523cb59c1870dcb75f8572d50ae32cce5ce7303e76b50b747cbf018411f4ee205a72d0131f5c71e6ce9ed735caeb82d2b40a0884721f7e4b8bbda9c316ef473a0d5fec6cd580b20e72a49d9d4444d6cef61f75a56f7ee94a5ba830ed4dd4100bc2932129afe2b23be2a8d84072bf86f6b061e87dbde51ef5157cdb5d4960f48490ef2e6aadd492e677d66ccf0764e86ae0fb945a19c3916ae16446cf9101315fce55b973e275d7c8998da20e3e4fad7c1e77e5810edbed542b275046935b900b3a77a307ecfb08eec6f1f7d241fc33525b325597a07ac3caa4573e22d556ddb06caf702d2d5d9e9b644bc70751c0188f84eae1c30e9f74b6237c053cf585fdf7086c5b6c83e90e113e01f6775b46eb773d0ef8ebdcce0ee060661d6c68d0b9f45e62ab3218fbc247e01a7f32aced2ea373db6d7be4f2adec2bca07d34aac706f68135ca4bc8bccdf9bf4671145aed8d7afeb308581068b6e91dba24db5bbee07b2f0d701c49659c54b959528f23ec69518276fe030d8408b2f51c5b68cb7a5613c7d1029a671d41e2595ba3216878bc31fccc24acc6773a0a287eab332eeedb8e634a80485a93ef6f76926c0ec5c8dc1466bfa5d3d677a0233d8cd608c80a86c5c5ae39b8c9ce154af9afcf7b773f9bb9728b9c4a4abc5cdaf123492c061069be46ee2581f8c072d096bfb739051f75cda8aebf44185dd2f9a2e5b7b3484c51fffb0c38ce93cdcc50523ee7aa2420a6dbda81e6e3ed9bf1e91c3616928fe56ca02bb717a4386167220df629cf285846f673a99f4effc6390327688fa37d9fd5677f5246564253817a84f4ec18de09a7e6fa8d3777e33fdcc6556b16690908851751aaeca7442f21e768fe967ef248aa9dc742328bf93cc38ddaf89b6d57ff27b46758180e52ae7e01ada7f493b67efb1defb0db87176474df73a48541676df15ab55aadd839e78d68f4e825fdd18775cae9ba0a91465ab6d2bebc2305c92f2d8db53e2dc9a9d89fff633f770c9971061a623aad58911ac061cef156be9a8c1f21a3a81829d9b4fe2a2c6c7adc4cb8eec6477d8a31af6287c8d740216c08a4561c164a6c4890c0b4a7daf5f6569753d493bcb4602204c202fca1c3f09f296e64944b875a54bc9801ce2145541ca2dd5ba5f6614e1bfeed717ee6f025d89eb4df081921a48499150b79f57c945a30cb9ec74df16f9600508f97f4c1ded41aae187e29bb0ecbe2bc68fa0ba9474535b1b07747579f68dac4f90f19aca60b54c04a7bd2f8ab154b7389cb9022d6e2b90789b8f17aa8fa8ee0ee1af726d737fee913a0cc38a0dbf1d65a45caf7d00a730f21895c191c38ff0b9d711dd8883c9c025e32f7770a1f04bc7f88b405e6114da655d73ed82dc42792e7583ff1d43f76de33cdb741949903742eedf620cf5e656eb16cc02bf304713b4585b65eeaef6d576c202f7d49d29235e7893348094f7db4a2534853743a39608c63debe0c682031f216a2c36d59d833e0b26caddb2e580ea9db3d61ee0e3795cad05f74b7d999b13d5dbbe480e7fc405637c6acc3035b54d8d27ca0026fe45d29142143df81131a4582ebf0b74a7744820792896c80eb6827117486dc3f427eb38ede0b28ff587194771017da904f4848edb67d1d4cfe9f916bfe99440fb274a3d3fa3f2df9930fd629dc41bee52fd56f7a029b1debb777528e291c8143a244cd67b3cd492f93cda69f206fce9a5b27ce2469e6dd274aa5c72331ca343bd6a5fd6209b74bf6ac9b835f6da91fe6e228c43ca862f15c758c9dc788902068a60ce6452d230b01d4cb6facd8d131c305d5f8bf4180a42978548f89065284ef52051c680bad2f40f9ca61e8ee0cbc0d159959a82153d0335a29ee9ac05c3079b68daeb11362427f83490e7cca0680202bbe238c21993f5d2c7256a2d65be14b63799cd5acfcfb6a26f9cbb79964be5b02428cddffe990dd09cfe5485b442a58a765ec7153dbefd90164db2847658c26bcbcb767899858cd97c1ab93a7698d830443ded8bc40e0f7843b718ffbe8d9ad00c668c0cb109620100e11c39845e6f615792a92331c2cd82595061e31cc0f60ebc6e03a5cad817ef34041e3f375feb6bb751c0f020a90a47b1e069d7f146640f539565874305b2d5ce07246717f85b03b807c6fade7a8aa05b98eb8981aa14768ebb8f23483769c5b4f5c35c965ffdca72aa620bdad157a9856584be89cd31311aec69518b77a4867661844f21bbfa820ee84160d4c5910e7bfe60b01c80214857f3bac5b1b7908f795dcb4282f801385c6b2f88cf46b2ad4d222914d926f2b29ca79374c6182aae69a173655f81dc76c16dcbc6290768fce75ae7a6962dc44858944dbcde65a47812ebd33019b078fb12e225e280e4be163e7454843ccb02f542eb84268836e6c6c47c5427dc8f34785b65b7903dad92d57890e41419f327c596fa01e219c31830254170c1c8e9c993496eb9a5a87ee71c1e4e0ad0618f3765587970194877e105140d02079e9444519fe4a3989f7aa41d2a03774a404b085d1fd584d823bfbd44dcf93961af85a4831107afceb1c909e062a21b3fe235b8c2dda9820a3368ce3a64094221e9572f28084f5ee5c36275a2ffc3b9a03e0db1576400c1f371fea6e68c771f1f9666562ef7f7b6331b6f82bea87d81e49731e02fcc7fd00961a8a0b971bb3f563fa8ca3671f5b5fc9027a0d5ad5cf7e208c1b6a92d9b75476db374d9205be9525348d80b099ebde306351518b2609c280d571aa1c8602d52e28195e60e7603dd12bc3fa69ff45e4a12e61ac4c670afa5e83cf473ccc292b93f7de85d75a685b066032a32fa5cbe2921efbd09a177c5f61f17fbf7368b6e02f871c26a6f09824dfa45361ee0d056dfb45cb5c6bc783e50543aa0987693ac0572efd7ef02a50bcbe774489333d5e5e80ddc732d269f69f773d7ff4b58589c97abd5ee7f1ebbf9f3580253af57d9c9ea8239937be3c025573e5b917cde9c0f81bb5ef8f19027313d59cf04a59073ed6a4c5a28495d41daa3778be9cd791e0ee356ed47f717db04c2132e6c33b3cc50b388a843c0b9ab4f4af2d63f83b80a0aa17de66e4e790873e251353a95efe6098863299e326a916ff1bdc1bb546bc83e8e27267b7dd12f87198efd0afd2b06b901d77d2f826fadc648b591119c58deb2a6db628541ef3c7764b3afcef29720a5cfed8a674856333185b13a356aff8ea3cf609711dcad2161b461e62bedb19fb904d2b5516ce7756dd05ce16fccd13edf3bc36e5c2f9255e4ab015ae9d12bd38e4fbf089dee9144cfcecfc108cbc796cfaf9d1c4a5b428d821555b62da4107b064bb9ea50104cb16e52e0c34a9a8a8f708a994f9e8db2379ee3f64214d660d5f158c8530c2bbfce81679c9b209217759e519f5fef91bd5ddfaff05d06077fde4dd7eda953888f5a4b9e33fdc14216b89079e7649a047461369b2676669e85edc9742df8d8e89a4976694a554b0254375d529c2d6e97c5551af0768c0565a29dadfb07dd17d30b2f8457cf604b61f10fb804cb0795b8499a41663cb83f4ebf347524c80932bd1889a925a4778e2b0289190ffdb2ca769b5265fc8069cdb09bceb426e9382199bd5365c92f6990600f98dae6a9b6c44a3b06e931dddf7fe8a389a47310787bc5ded904e1751d2d96db945889480ef721dc85349b9a2b0dae772613f92e2644681d037f232a979f5a7725cfbdd998e90252ef8c550a0c8fe277dd2c93b8dd35add60a424a31df52fb50e278e198fc8d73f7c426ab1b0ff0be93b78a316ef6142166a1ec3f02c6b409764d625721651b4d85ede0c969c4adfa8c06cac84d56197b3181e9b07d22688adfac376a45122a80c5d99948578a669ea7adf18ece1645023d05ea28bcd54b6f52a5ebd3ac9c5a6f81c8ea4d1c201e0544a7b841c176ccc2c04d06c0839ee2f299aa1664e1c52678081af0f5fd9651ab008062e2e99935286be81bc1214a918f8b901dd287550c9bf50d23e0af95eab16de1aac5bbdc9064aff388869c2e3df5bbc1ca0f36469fd3fa8d16066a5d5f129d9e062b2a1f8b2321348f5dc8dd953359aeb3369166f91c61f8abbdfef9bc343c1ddcb6342d8cffee6b75988b9abebd43300a33c73a1b0bf21f7f53413ef444a6d20ac4ea06a447c80fd7db5b8e9d885ace4a50028c41720142c87e8f3b7822d07df8393ceb8356210f64c0e9b8527524123eb7ce3c6352f7fc9609b9f73fe5fa4c89fcecd4c76183483902ecf8e3291a064224bb6dcb359b3aeb551a7a29b91993c429bd00c9941df8baba888a2e1defd88ab8d003ac20df3bfb3ee7e43f210f91db40fbca1bac9a3e36139eb14d7c177315be9420c60743af67089562f460bb2cc6a9b342070520387083d59abc9a0e08aab7737285133d4c9faef8a134d120b65747900f568f390ad5acb1a4aa0275213772567c7cdf8c6b03c605013e98afa30b2c9c111d1e6d15fd9fe3f1f9ca4e7cd77a5c0acf880f7eb71453a9cd8a6a9c6f9f0d8081cbdb850c5ff3db54f6d9d1a0e27f20224f126ac3a4c7da21f8cb74dcf22169bb068b7ba0e2470246309d3acba043ed8c19245d13a81dd8e4cf6e56d238d25f922e4ce3ce3b209ae28db6baa0f3ac2fa0a5c3c396e261393f358f4d9347dc6d8125938dc4ba57bfcc372ed29921c600c4642b17f8e9bdefa002ad17ceb23a89b769cf9d7146e1a9e1bf941602c5a922ed14d16b8dc4eaf0a627e269d0af62c84709fa276735555b7c10f475390aee31248fccf950f83ffd1a25784e8a77d093912814f505982a773213519572d8be321541c2f8f5ab7ea98f4c5e0366ed32bed97d7681de3e8bb8fc202ab2b98750baea49bdd9b8bc19d82c1ad8bfd371ef79584381c727e6d78e290f1f3cff54e693acf1e821260aa075d3f89aaaffa209caae2000eb72799deee07faa375ebe04dd93786ef0d86d4026526b1355565626c194b0331aaf5f4cd0d05949e1aad560578372c6ce51e4453276cf45fb6b48620034cfe03ebf919bfc029247abc65c3e11355462c9fa5396a35fe95199a19db3a4fad3108bc83e38775a4eb41129906ea914d8ccd3eb1bcb3feb7fed11ca38a58b3be7a9d5e9f7d6630386b81442f754119ec32e479ced68070d0c783ce173c88c6d95615cd02a0ef6a74fada56cfe338ab59a32a052071eb1f6f10b6dfd920c0d3ce7759fd9c26df0329e808118ff2a256cf311c05972835823f4bba60669edad0284f0fc8ce81ed8bf4f217df64d99780ab2aacd97f385843e23110afbd10d7f7655f9d4c58bd60b71134efbd3d329c8fecc486a577615aa44970b6a6086eaeed07c51c35773462ed75d02afb83f50e8625172101cf3d2e1973c055d4f8bc1bc6b7b084969bef0ae9c6e73a818d07fa2a030827f28af3046ed8baf3932a0f44cd01925427d209cf02b1a78e8eae5bc9c1d6f2e93f3f9d456099e80aaa58af5955a5f6cca4241f1bd699dc2ab805c9e959ed26684bae26527b3b4be617397005a379318ab789216bc339fa777136563d3eaa5d27e399c96ba1bb34c52c32c43a50ad5ca4929c65f0eb7d0715f99ef6adbd9d2e61007cae6ede11746d43497e91792dab0d3477745e6a0f3467b67081357ccfaa98d4dc75a691998f79307b275ebfa02889ee0748655583d081f3c411f55f8f0120c75aaf568c65734bf528b0331c8e0deeb5414a0010651f6411d3676a19e178d19b6286ee583b7b653b5c334c43db87d314c8dd94f8fd2efecf5962436e9e7f14ee12769ca79228fb4dbafdfd15917d3302f2fa9419a09fc81c5a20013f2c411b471054ac529b8fcd4878da73f385d7161946b82b315db58bfbab54836c6c52c56839ea9c7eacd3d158576e7bcf782df347a43b929cee019ebe676d1df8c2a033fe4005f9c938ae7a9358d3e403204a9ce7c05b52f227792f9a572824764da4167fe59c5a75b8a451a1a8c45191825371765883f9982d77a98fe7ab8cc17e03f148d0bcccc0bbf50d1d868e26f8702026aaf44e44f1eefe89773f80f9e77ecff26b19298d6ff95512c1db50095430d13a0a34ce2572e3084cf5d1987a2a5df3ffcec4cfcd3ba3d05071696b746cc07736312a32293ff25ca2026b4a8f399a62932b4fdd141fe07c48f8ecb9fed696fe406308918fa2bcf2b355bc03ae78609a33ce6d396884cfac0a631acb7505471619574c2ef8bea9d914264f9ea5dd3d81bff25bf79c85ffddfea0771cbdf36638ac6e20d99b81b806746961de4e896f72dce789f954374ca3907e1fe79416dcb5911492b4cb26e41d06aafd007903cb8f7ec23ef221d5c195e7cbad36318a86f24af7946e452964a09a6d7cc2ee4b992c540a19a2a340f069e5afb8fef62ebdc53b18222cb659673f4e2c90094c446bc81d68efa6f938390abea50db466d2c8b746757cdad1fb503790d80439df515c5b1415ba99181f7504f22c40db8c344d0318404b5339955cb34795345a625ae940db2ad4d5383dfb782095499ab01843f274c6d34253bfdd7eda21177bbf35008e6931f21d9e470483a4ec6dda51fce0c0507e8a1b8138688cfea00422cf224306a8a8f4674731330eeda2623834450106620cb6dd44fe71e792a995a3f8c493335b704547934707b899f31829b6f039d47e489dc03dc0e03c790338db99ad272aefe8f98d23d6ab12cc785f089d9d941d85a5c545be25b00d13ec32d126a903998b5c0a33b412936cab579ba3cf3762932bf71664b7183c234eb4571c3db3e25d7369d86e1760f7b289cc15ea11e7ce7ee64936ea3c7032e294e05d61e4bd8290bb74031307c04e460f48ae256045d470610377f1494455c5b29753ec8910defebb669f4e84b82eb3b4cab71233fd2874353b502efa36c4b3b18a10c1fd5fcdba9e47af0d6d6523100403c0cba737a80b5e7a3e54ff1ccb6c491632a79b0b860824df71e5fccccc49651ebacf0403a98f0f7d2fb8834c2d7a4be0c1cb401db8152b2e0cad81f16539df524a9ccb953aab468b2e41df765b04505faa28571547acbfad87c786f787a60ac4ab15841fd71bc5558dc454d0a19289b9fb37d200052fa2816c75197f74967fd3ddae07a01163e96a417e760827318156dc960fd4bddca4cadb184ccebd196ece2a825237702957ecbaf199a8a3308d22af9213a91ca8be2550ac1f84745a22e83a7b4445e880b247eb480bb0513e32feb03e7f96c056cd1848d1dfc9ff6648a7b5f4805be8f368d654791dc56ab2c6980c70bddb77e0eda8442b3e0b72e908b62e8e4b178561a385f2a59664c6473cfeb060712852eed351b9679a79366fe02e8fa6a486b80ed4ba97199e5b28fa1f6c98c7a3fd542e42d36ca73b131c2a524dac4aae8751b7d5012dc38f58c1707e2361ed1146a74290a1270b01b7f132c1e07409cd5055ee9c51b74cdc4e79c9d50281587ec1f2726007bef557477689b8fb7fba162be9ce704e3513360b4a3a4f799e5e6809480448bf291b1ed8721e90fa3d22fa09d6122f3d4153234afc45c736d904bdea9db645f388b90654f48bb3ca30ada2c3d0a18a515cb4710c3a62f01b499e88912c63c904fc7c4398d0a54f9b31fbd21b0dcd6bd7ee3c54bda5e5595b6d50e75a79b3c37934d420de218e01d4d5a1c948644ecadd51f0588340bdd8cfe423b1537a1c6389a6094d8983a5743d7e68b3c985456d46bcb2806cdddfe62a478729068c4e23ea189379c30e43fa6bc583bf7601dfa8fa179142b4d12343ddd7e77a87578506e460d1a439b81dd97f580d8989018c1af8311b825dda12c55f01045086fd6a42ff0113f0ae0ea45b4ce9fd76cd4d026948161426a325ee314b992e63de8818bbf2317b8679fa7bb10fe13355acedb26b73b63bc3a301d5741cefe6134a9eddb350d90dff987fc7ce1cdae180bb822da69a30caa27ec9ae5bd76d625aa5b22a6814429706241bb7d955907509be4b8ad640fee081e3b32cee33ad326bcb47be7d2e0904ebd07c7a0524a517aa951743d4bdf06521fe3893ada9e6d273354450b10c78546c3fd93d38235f74379cc2251606265dcf95182b9832c67e3ef3d8a9216218d5f52a79a8bc54890cf0e225e1ced9d4c956174d2235decd603aa48142d9d0481fc9b89780dd549b857cbaea69c4f4b403f9beb39de2d4aea366341eefe7d2f209a8dd27c20ba7050af5a69e4c437e807a91cb762033d1e3561fd0990305e2715dd8334494ab5307b7b07d0fcdf73882936a99f0ed7b61fc170a760d24f4bd45abe749b239fcc13cce11b30e0abebb2850bfcc4e99492e861ce7e04ce36ccdb72a652274bbf2f68f300aa5e26490c41c5a4a507d16ea8a7889b0575508b2a3d741dc85acc888f387f72edfede13a79c01439c2ee3987e60e1f71f619dedc3ccdfb88bec30a0803f96918db2a979d2a7c414b36f59eb2d096f15babc247ce8357e9cd134cbbf9bac460d4a7ba2722ab98560475b439c7517f78c8a2172a98ab9d88c97c8250458e4a8b027f74ede33221e3b95acb3375bc1b7f13658c2c754103a5baa84ec81723bf7a34db31f175d47a8dbc0b6c8170e9244823650ca9b3cbc936edbc9dc59daa61d58dc962cfc05dba012d0991b5557e01f42d855efa86c06316cc71a73853cad802e8100e9ea8d835258462f67413503524d589c701657b6cd1a6f9e259060e767ed39664effeaae03e335b29dca6eeee5f1eeb6ad90e2a9c61398579c7d79e6949bef9e4119d5fad78b4cd346b59b36965f81d0b135ff2c2c9d6b07c02c30f9fbf053f4a82d37e6e91a3dc1825ee5b4b0b7e9eb8f8e3e05ed3ff8a39133f37d5138336a454848db62002e3cb06a5aa22347d062419a06065eb85113d61697944f24fcd7373a43599b1ddee66deda42b8d3467e98666b7f86cd46e22dcad11b4afe0cd4fff11f54e0128ba1c37ac4a11c3b3ec3120aad1b87b4976ff6f79747959ad7f6f5fa5b34ede31c4a99170d3bc5d82133b66a951d51ec29cbe7b8ae92784a0f2bc85b1276858cc7aa08eee8a81fd9a59f105da56b03dba98652b2943ecaadec03ad450c5f4a9f56e0ea975bd41637fac4b34b4fcc9ec9d761abbdecb7a1f5c9077cf588ac9e2b60380a08e3b998c52a67cf9cdb5b1c9751ad558e10e3ac444807988f9158d00f886b1750dc1230a0c54e25227f2d55103b7b88c7521d419744adf73df59aa12df27d248a26b45c4dcee20ca38e4a08afba9f67db5a26e1cef2226872dbe4939914916ff198b8c4de405e6e8b38d5b6ab3eae69b53b5f893f56860ae20b47aade5e138c715da94595985df48b568b147c6a7788389c305d93a5ddf4e9aa3ffff1cd1095b250b8cdaed3e12317c22f5a1b6187a85dfdb8da64d2d6fc69f295b28aaa4c13fc3a4232eb2724e7aac2773218a07d1578ed0735a73a76f5551906e3a86507f56ee77117077f935d30a572295545856d952e74be954b61655c39cc04f204f9d5348bb20fed55b883d6507d1984dfd4b13f5520305a860e1590499ed0aa4aafc756ebc669e9eb229ae31d2b1645dec0ece23688e184022b986057af76e244a9944e37b223981dc101c42c6f4eeae532770bb16b85780ff8243ad01bdcd8c55d0ce0e231c0977363b243a362b512d0ae0ecada26af79be0b7a059c4d84ffbb7a1f53e1c3c95b2229285f08db7a6c0f9f93d21bf87e71316cf4646162254cef9524793acd601ce03ac88d34d98e1094bf49b8c7eea051883b45172b3a654bf28c5b85a608f554f87a5fd5ddc8209855fcdadd16c22c7d292fce4a8d65e6629c4b62eeb7d3d35e10dbfb2529cff6edc0d2cc2184a96c3cf54b4c098b074d483b4fa469567127e11f581e9d693b3e3f93daffe0f40c9b8cec2727d7d3a1f51d543f318fcf4472359d52b84e4f6dbf64e7f624ed7fed0fe4abd6e2a31f9a9ea84486a359eb21582b60bb7cf99a4096ac9dea3fdaea9917ca60793b2419fb83d7b8f42a9da97b2674c68f15f81989cab458dca943a7519d5f90a627b478e40760e5d00ecf4cf0ca72d73c45d9e040965a76641773b3beb8aa482396deb1e7bbfd3990319d6ea3abc7ecb0cf15968be408c5b5a2582c5b9613e43065b486e5089a2e33ece3e0c8be39f0673b19ab511ff8630c52b5d38c0dfe5af84432238579fc2d6ddcb398c4b1016e21b81e1891da12392754a84bc95298f6f1d7bf6d549bae0fd175c1f09f944cbf29268d45d92713f980d4978b0b09b5637b09d6aa8769aecf41eccfc0987c878507fc82412f498ca083f4afc7447420c5e4870d1182ab8a775314a315a0a33c40727dbcc805945a5375dc2180d704ab801889cf4a88478688ba180e4118a663e2333f64624c97753a8bb21c98a268b772f6771fbd772f9523e4b74053ec85b398f604d399b2a5ff862ed0c2651c2855be28d87261d601ee5601224ab4e23523657ee54f16f71f14818c73dedbc49a220c821bd29510d3c51aeb9c923bb1fe56f7f46e9489857bda9a516ad02ffdbb30bae085d425d7fa50e2cd58fba45ad113ad9575273622d6389f28c30cdac0004781e022013b42a690c9a8c7d6b675acb5dcb9201e20dc2d6ddda99dfdc54697c6585c5ce540f33050d12f87bc2c61694a993f67e10aee48d4747b8dae58e4df177558314d2ec26e300254c010b8c242af3d22bf6785079965cbda1a8af02b3494e4a5111ce2fed6d5cd06acadd13c62324b02c69a416d7f8d405f051699e00f8664d60511fdc46b3da8ba895c0c9cebef395e02adebf5bde298fcf597898c432a01f9c28386adabd170f2aeb7bd3cbf6e635bf661d60a92cc51065aac2acc677f6fa2d49a8345509bdc7b2a0df35f4cf80704ae4231bd4c3b1beba4344a4e6c7c754b761858fd64067e1f336085af2946e924e7f60bc2b8a288f1d6df77c693dca9e19b7195f8f4e61cf8d2d34506ceb9ca60c20a3b284aa680eb845a4f29d3aa3fe561413940a3d2032260fd0b7a65edfc4805837d9c5159e543405419c13c352f23c6a4f688eafc7e2c0657af730547f6de5150a69dfda79731735962bf73e84a8f383e38be99fc2fcf72b761c945955ae121e15774d5261b55d9ec814cdbe463ac3e2ce61f208992d653f0772a2dd9d444ec062ccabb3b17b1adc47afb6d19fd48732528895293d8860ef20a637ad4c09086fe930c39c6e0563878bb628f1b44094c014c438366bbdc3aa787600dd71937c9b4b5b773b295cc4999299a2b430e3c9219f41705f4d6708292ee18a0be351a079a6b5744242d3841d9a455c941bbc238ced75460cf3b1361b5243e5e1d7a3dcc47b86f2730138954ca90e03dab544eaf2b4804a41674a12c0d1044a50326f3c4d85e806f571fe5f62be912d7b9f6bb60c36631dfdfd818cf1457de62bd92e59158bcb5f12a60599dd4cfd8bb0db4cde6cbc903f1e8257e062e307da65de5556297c7113f20054fc626d552ef5a95a1be2c041262929717082363d99ebf64dcd11e90e7f5f1aad073d1dd5aecf02687cae2353526c02db1274ed6bb4998687533c1058895afd5895675d50beb06696a05b25f11cf0a58053665f3f6b4bf5f12124586570fa7b4ebf1a1e0f9518a5f3131af5b57a1b71b6fa77cd5c4eb93def02a1cbaa27197c229f44738b01494047c328a73f8de441605f3428bdec0a28522ef08fe08631fe66f0dfea94be8f54033f5fba52b4e493d7b1fab3b56083044108c4f55138e1235947679e90215ea4bf046e233e9b8a2c2097ba9036a13f855076d5cfaf38a7d0119ed6c2626703dfc7acc5dc2f43ff91ed1488894f54abb9cc8b3766e05c45a6a625cc3df79e7ede74675a5e35c978c9ecd56af7f6ca8efc89c7480c85e14b11c800535d2e7fd10bed39e50a3bb2c34f88f09017bea695098c93f67890c964007ba1587d8b358b697663181f5858e31a1e3acfb57ba50b4472cfc2813ee47c951e9712c0972b7392ce09bc33fadaf4bb7c9c89e33a0fb6202d164ba9dcd218324ea602fca3278d540a364eceb7327e83123c505f4068c6618ff6fc528e057ae2aaa77c0a849c5a44c362c8fd9b590fc812675c8d1c002355fc29e6635834ea783632300e565079eb3e2bb1bbcb1fb95c4905f0b9363e5ca2a100cd09167cda54c52e6afaf6669d223f0cdfff9f9c3cadfd591f847f553c93cafbed866c457e3530ff29fe9387031e3d4b31c4a1b01289a8f8ad8f33bb9de910fcffd5e4c88f474eebfaf137528658e302b3142039fd096ec48bfe7c8467f1698e4b474289ab344c55db7a82d9897f99c267c2a6effad95f2f6c88cb66b0e65d689ff5f6c565de730129a129f738aed1dcec59d0e204f6bc35aa668843bd96c68036bb58317a2d4a08793fbb26cde1e3d3c2aff40cf9a2053599b6e647c0dae048bcfc7bf81ae406280bce734959e1936e8687217c060af11651e88701270f0e66989d9062878be4be612e42c8d20acb769e805375b457ab979eabed71c8f5ca4c8923086f3ebffd76722b9e04b8a3a7032433d378250cf4a9eec613ccba484d59b49b22144a2a3c611fae7c25450fda478043b78e7bafc088c55e4c80d9afc7fca30a3215993f090bd38462bf3f260de569ac00aeac55f2c37c648ccd9a6fb81cbb54926e3e21c4b80eef7fb887655b20b24b2737e72a7599bac344acd951120ea27f66c95f1fb7989d56d3117805dc17c0a9645c518f8800b46d15acb85b2005971385c0e920600be8baa90558fcdacaaaabc8573720ffad2ea18ec78fd590747936d146abd17996995bc5cec52524ee3c9ce24f60b4bf605f750768b4692e25e23aac6891485687d4c6c3d1550e8da9c0820539a744c2a6c0c3542fc0d0dbb481e278ada5d5ab54ec37dd476c5c50981df73b39354b8dd18bbef965b1859099c766a0121c90a670fbef71ee0873bf74f36bffe46663fbf8d1bc8a491eccb1abc17e7f6506665c8b29420c8e4e28f4c38267215f2e5336957d170663e74bf8ddb8600418d8bb3847e3e9436c4815de4d75f4bb5210016edf832d79d010125af570aa93c9b8660e3e6f419a0c76e1c6af50b80837108e775d5e04b89543a740dac5aebfeb7e779211601838f000a2025a8586cf11c491548176e93865b75c3dd8e7b90aa09537f3c91847b811aba32673d18da1085f037d2d73054271837409dd7ea18c14ac6063c0ffb5bebdb8a3276c85ae801afccaf8e36ceba3495a372efe678baba84d4696bda382bced14a43e0d6abe9054e84546643fad096743fad9be0857c313cc52365d9a674a08c9dae61492ef497e68d2cfbbf8f708e7c13f97c0b2a7209fd785b820bebde0a3a623a90609d579f3b833729aab743644627ffe2d61ed74b3c8d7a084391807aeb8b1dc3441dfe040ff475a2aa7a0e061d3e96a4d1d052cf920ee848e844c28fe7eeb69cf92f511f026818e22887d443e4c682a54a4de41228abdcb18a83ef183d9f9bac11340d69466d3cdbb62e615d2d70a248a9985c1e2f50c229318a01107d512d02067e1c98ea7f4c8bffc806bca95c82bf71a9666bc1b0b6b7f4bba9235fd539013640abcbfe09f10e4bbf2cacf51114758007a5ea2a4ae5315d91dd87003a6350269c568c9ced006102dd12fb2291cfac5fa67aeb27be16c041006712a212887a412c63ee38e452428ffc8fa1ee07f1a6be667173a90d42d42c18e012ef6d3adc322a56b5c619143b16d513f255998611b1da2c5c17cfbbb13f318e1c1bb52b999b7366813ef70f331fd0912077e006dcc01632136f41a58639ea249710e8dbceedc4c286e4646c5df6c9668d271e576e375e9fcac3e9af31102fbdd2b0c14f9b5c7a8dc13f9ff93b6d5dc8ea3df52ebc07e2b08ed46b01430d24d456ac4267220e31e66d6963002ed092e81a0ebfa3fd564cc53132369a40ca94c5cb9f639fca5e8f1291104f24e6af3d7d0746bc330f025a9edf71837228f7cdc0d691ed16da9b7302a7a55ddf25d3057080c03985527fc3a9bd01744d2d0a5142e22805c79b41c3c2b770dc76763721f74a4767f8e31353e76340117c292a45ac7c1528f888c6766d405dcc85630175d3deeacbd1a5979daf9f6e2274ae3f094f61fe583cd769718bb429daec8fc1d5d2b831b7d0a7f5120bb1fc99997b07b5a7fc6643a1d01c5a61c108f7f6050b67965a9cacd422438d5fa2c6232a52fe5e0062208f66e17ef19737aea0fe08fe435294d1620a6ecf16d6ce21e457d4111e33bd85c59062e15302dd3febb951f42f37a8513a08936977d814e6120361581c4b82ed4332ed1c518a526f6ecc7e85a1141214c550262d98d8ec320f424a716233fb13e970e3a3ab7778b69d9ef7f88b4d51173892f91cad1127a2398b1299dab91526bd6e5af180b972b8918478b9e10caa6b2d80a04d2ffa6702e2c776d61630b9ae698f72a651636e7bfff80a9b24b6ea0142354f3af14c09267aaf3985454ed7dab85c09c14771de696949ef24a0d9627de1e93b47203a50665dde9f69d935caa3517ad382d57d9610ab32898a4f8f6fb7d93ef1f31d8dfb670fe5c267975beb1b31030462b9fa9d1f5540ee364a3f545773ee2b07890b36d01c6ee763cbbb1430ff6245cc2225dc5334fd2a733564a17a2c70d1ab414f648a713f3ff7b365141b72aef1740867db333cb80821f4a52293685e47e061ca28ff431f253a75759802f2890be07a7288be379da8d1e259fbbd76ba67cc1963605d6fe42becf7708255b8ae6cdb0ef0bca8d635a5f3168339e9828ac593a8af75f5a96e439c70e2d76a81d3c334ecb0bb2d66c4659599d8a8bb14771155e44cc8c3d88a37ae3b852d44e2594aa7332d1b574780d07773fc5634edcedc05b2d02dcfffe1877ba92496d4486bed3b5148ba1ae7c2f4e55039b652129cc1e938fd41e48b38c1c6487cb5e9a88a3c0fbdf17dade0b7759c23ef97e1cf0abe830cf9cf67d01ed5004200376bfa857354fdc353b4260f4e8ac9ae7e062fffae4e981fe8094a5398eac10bd5e5538f9d8378efa7aac207beaf318b9876b1946e3962e23c1e2a7c8d7696d318bbd780242131fb49da6049fbc6602cc66e26c6d062b29b8b984dbcf347aec7579aa587ff366d9d6f4aa7bd2edaf891103cfe835145bc8f77987706771946dcd24edf5d381e811db45e50a1e85952d9a771edf783ae75e1ead01090dc6d10b9f60df0e564d9ad2d61506a281011457a8cff820d4a6f9a5f4ecb9af6cda8fc404e07f8b4b0d089277afda72be34746384a9c364411e4427381fde711b00eefc20fbb6c8292e45a8ca94db2f02c1c63b4aa422ffb4f78d6e0e04e1f54c78e65a5402ac24865fea89d4876c3402846f0a9dfa3682ae96c4e4db266fdc1529dbbae19986d74087a6c574cdf002f3049745dbfa271ca529e0b909aa561c1138c8c2c3f702d1d2345"] ] }, "release": { @@ -2906,7 +2906,7 @@ "spec": true, "dkc": { "edits": [ - [0, 0, "444b433103000000000000790000022ca5006a646174656b6579636170010102501237616b5301206de6b5daf002b433cd037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a6a5a7334644457413458365334686e636532792f774e773755423558656752536951364147687542686b5773667253734f4162422f55534a4d356f304a6c70670a46645934424172673668754c4936547241414a7778426d5172774b5464624e663753626753656d5a5a2b7956614d4e30315468706c6c383038422b6d4b585a660a393475483571322f464f737536576452566c4173557859562f3763726b65684c6445472f437142536f56510a2d3e205832353531392030445650544e5956754b714745663148704733334f6b70515a7847336d36324d6b377272684e63634a33450a7533673379536a476a77314f6c77645350714253787569524362413733797650425869774f6644395a4b340a2d2d2d2043775a37772f326c31673250303843484b4358486f7758443832366252566d502b69727a67674f796574510a8dd9d22a9faf3f4068ad4445f5d0f9765445fd69e405adcb3626d2e95e737a1309f9d3d83cfca136360a114a5a90d38e396a79ed41ed4bee3342e8007127d23fa59ca3f4222727280fecfe1f911fa131ca16c6b7c77d57950b4b897280398288e31ad10851cd1dac7c707fa9cdf12dc101f4cdd1c841215fbe083787f5d8bdd95c26499c7bdba06167652d656e6372797074696f6e2e6f72672f76310a2d3e2058323535313920796e6e35436b6773584234436e4c596f5651756e6368336b514548494d656b77794256746135633961484d0a682b504243793361676d4f665544395143566c4b7972374e64316e37583379683864507239495046592b6b0a2d2d2d2054386343455175597149644c5a4a646f683971725844666155773071584576326775637a686a5651636d590a6718d05801e1575a2a3cff075275801c0d85741b0cc3ffd118f2f5d69056b39c2e9e4c539466e424592cd285d8de291b823a7fb0b04feed11f4d30da350995dc2567771714bfb8515533f87c03b107d24c18c2b6f38d450c8836dd6c8f7fa41631f8515c8027cc81cdaaebc1d5975f251c51d482202d67482aa69092ef8ad514e3df7eaac2a286691a94a54f5865ec9e235d45ee86d3e0cf02b8c322b43200bc69230e0410de92e1107298cddf74e3107c4b75e68397642a59581043dab6353ae22eaf319ac619663ff6d9d8557113b2047c7b862f58339d716e560c7035d4f4f8df5e3781bf638fe90470876b0da4ffe30a9f297f024935bf1ba6fa712e632068f57919bd33e8db651a2b3904470f20218f416a0aba24d3715d61d68ec6d45423a445d0bf6b8f4a338b0aa0ff653e0814eb53efb678394a446ef0ce500bcfd5e36b6337f9b3303a97bd39a025f1e3334b2506fd120c12c0a6938dbb42a3f32b29efa73ae4715cf59b0133292f3958d3bde54a8ed0188768185c61ed43ed211c224f8032670020b8a56c17bdf9addccae310351b49724f2a55dc848b695d36e0db7994b85d6e070d3bf368234a6d5e81471696273bd356c750c8c5c9ea4769f14b641e15fbf9857c210ea19562416757f0e2d84874c7f1af90fadd558659647afa7dedb501e6f3ffd59867ecb339726c40bc47d63781c6b8f9f8f59cc21f4eef484c95985441b134ac06c1ab917c8fa7d00e6a240bac174c3238ccf8d5cee7b1256703991eab3167a11217df927c7ae91d95d7c6fafbc6a161ffec8b974fa90eec708bda6c259f0f8663a0c2106ad57c2d14d460196e80ab7b1ba09c7e4b85b4acae4be6f18711adea5efd8c07d30b32ba7fa885101594223c24c0f9775c824736711d870f578a38a4a1966ffa7727ac85a4a9b79b2fba2a7b0eebde4f8dcf3d137c11425b99e5219b3c27e42f41b74a45e5513f0962c197df04cce3609eaea56aef48520adc71c8487ad6d4079cba57587d665a1b1275b6a680bc8d8ad5d186356f3e59d2c76cb84aec6feffb25187918a363177f942538ab3a3685299b5eb9713c54d79ed65a0d3cd757f1bdbb7919cf6f8705c98cea8a1adfe16a21a60977"] + [0, 0, "444b433103000000000000790000022ca5006a646174656b6579636170010102503da4aa192170d6e6a84caf8d1b89665d037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a71414146495a363752304d31334247625a35485768446c546248667149323138663438326b456f642b72774662374a4a726a76386451316f7757523469414e730a436334444f6968746534436731683344677975767047736b7858635a386f355a545a424a645854344c6c747a666f305a314c35497a61536972495430747834670a377569683857303434705154314758654b2f38504177314e6656496a466a707932686365646e3445474c6b0a2d3e2058323535313920465761307553486b537266324838797a41544f736b45312b3171727632755a6f305a7a4455704f583341340a585270756c654d786f6663674f4c517a577454564c474f557749706c7871474e694c7065565761784b46550a2d2d2d206f753352384d4833422f6552623062464c48743573384a4358652f797a7644764c504248594e6741536c630ab2af3e0498787e0042d9ecd84c6314a307f6b54c5f3b2164df337f22f95eb5e311c57380c9f4e5c0986fe43b90902941f7f0917188bd5e85159fe533ab1d6662952c71cef3386d3bf2b2c02614386e54f39c5ee0bb89848c3515429eb668c8eab67a1505ccf2062623a11e3df604f0c58b35ae863fc9490fab7279df0f56cf96ff67adac3b9f176167652d656e6372797074696f6e2e6f72672f76310a2d3e205832353531392048313955767a4e626468585030334a6566444b456349457531587a6b3470715074396d6f323530447746550a6a2f485743524d51486a7930702f735a2f5761515543673252345957456e634d59645a32637054773141340a2d2d2d20685347596d726b64796834622f4b4d6d59554e5437483375514d416e516b3172414c392f6c7231656c706f0af8f2c01cdd27022dd2e6ae36bdf9fda9fd699bdf2ab781876da91d85d513f7d69a72b0a8917b89cd1444ef46a88c692b6418e02382f9a09e5150baef99d9960f56e1961a1128ff9e423003cbaa39cc7c0292ba60fa5bb862f0f9f6127a343f475fcfe1b9e6424b8f787e46209b720eaf5c1fa6e348727cfdff9de5a7a2c82e88150c4baacf8fe00a598783d6a350e72254aaee26e287c11b10a786505dcd589b043911aac83fb83df8cb2a0f58dbcb35828564640fea476ef439f5f847e9815a61c72771eba3aed183d3e27ec49ecfc6ea17368aabdea251fea219c7bd468749bed60b035b67cc0aebf671f6515fe9680d62ad2123e579dce11ced967c9c8556e0c0033d52b61058b10103a840355aaba430ea9c018d4208db41d2b035e827f54f24a4145f20a3fd52f5a9b663b910fa200f7a429b5d3cae5afa10adafec667fcfe96860f3ae5ba637a1bd7bdf14744cd6352852584d891c2f482d02c8f8dcb8e6d14302f358d162d36a93c7503165a9d91ee8e6806eefad51b394072fc26ce796bf57afbd0b06398f69091b902e8aae141df2cd46e781f9b81c544331a900b625abdd9c7a3983e042c7aec576bc3f9f28642b4547c58d4bed07d353c91a34c771246bb2797330152307cd590c0e13a4ad1b5d195ec9fb1b6a76012ed9e081be493bcf15435cb7c2176a0da3c26f0450198da73ad45d0f0f2c8b97da13942964243b0569ac3beb1c4596c37c7d1b3ac11ace0325b7d6b77e079302cd5ae3e8038728c1369b7db1966ab9a711dec119e06d795df34cb5d75cf57758c28ede3ce49b1d7f40e36f702f9cc947876431a8e6bd9b311c42b09654183877ab416039ef82daf09526acabc24672af47a5f812e6137848b833f9c38ca97d8aa5beca4501f4a188fefebc7fe34248f6ac61406dae2627ffc2b4c471e5128dfbc6d4c81b38cdf5e42094238ea1208d199b71af183cee62fae793f86ae6794092f1d69b485e91f2c0e47b8fabac94b606be59dba3faf9e2a1b0483c45b0a044e67ede0f039e90790ec593edded1d548002acc53bea7d4bb21667eb10dfc8bcc97aa5d69e382e4ffb23756be0e73c1c064a9a322a09b934f5b3f9d658a6d0d756470f8523519"] ] }, "release": { @@ -2925,7 +2925,7 @@ "spec": true, "dkc": { "edits": [ - [0, 0, "444b43310300000000000079000001caa5006a646174656b65796361700101025019fd7a907463ab6c88964fea7bb58140037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a6c686270465a61577851482b536131544a337a417a324a544f5641366f52322b4c71336c6572794844687375794c707153554570456c42764c304569316d61410a444e54627078624766717546445268527449647775755738513645624a4a3645597a764b50573553797265615146536f3534776550366d51684f734632596c4c0a65527a446b54767739752f595449763156764f3775784a397a6c464a737457793359764163494e684c67630a2d2d2d20726c3162377a4642644858477377584e2b3251573644446967506349795866334b6a53684d312f366f794d0a9bc7582bd805a3af8476496536ed9548d5edbc84148c46ce3a775bf0b32bcbcf237dd66ba2274aeda0a671d89a1012b225a673fdb0629afec9dc3851f7061d735340f885a612b62c92fe19fb2eec8443ef5338eda8f4f5f914d5aad5da2d2a0ad4da5185c630910ad53449896661b2e70236eb123c65976a26c2decc9ea28211e5f2725c595c0b6167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139204a6250636d696b702b47722f6c57706135765151626d5a2b426d767377754b617a796a6d673737756479670a36376e6e6732595a4563796e785a7972674a4d38684e375832484a6453672f306636444d697275387341450a2d3e20583235353139202b512b65616142747042534f545566325031534c35596e7462654357494769362b474276645030536e316f0a3166496a535433617550546f72542b6b4b75754a793366396f6c734c354532324b6a574c2f506b615835300a2d2d2d206a72547736554d6e3466534856644b625074684a64354c39544b526b78706b50456a70346631443641696b0a391731450a3a9b1697b308118c66f4e28692a109d87a7df208003fc8ca410defe419a1e063e4d78c07d1026d9d96fe0bd5011f3f3d56a1e1108576d5ea42826327bc6eb021a21d3f48a976fc61ca8e3e785e798c2a7608f90da420c20c1b453a669b415fd6d07a3b2c76ae6b475db0655661b72713ea5bd6299b0c47323a76a8ec42af23d83df02b01dcda5252f62bfa2190a49107a3608401a7cc4d31fcbd046644def07d72d48880a9ebdc7f65234f5d3d13f51c1e8609cfd2a3a413308ca122507e1b303593e1d28ca13f8da64ed3fa9089995594a0a93da9bd9eb167742cfb7aa7ef272c6b633f75a3fc0411c32db8acc53dbfbaa2fc058a6ff6a6eda43f39183dcf289b8852a76c4839b96b847fee5315d4b001bfaf06722c73acdcc0b3b2f6d4b4d401e278f86742fa6d3011da095194757a3664f3419810bea988c5c87adbcc309c8fd67a1b220fc7846c2c7ba54d81524929d969977fe65ff0a17128d5ea7221fca810615064f70191f2a02731e7268ca7d9bf8963a6880b4730567cc1111a9769393a492b3cce6c0f4428a07c86b3c50ffea5cb289fd773aba692620bbd1a79bf9e2cdaf51d74b211448a6a2eb3d3521f9e7bdb8371ed0ff226f622b0a5c979d56aabce44d8d297851b6ac6e16834e88bd28487d0ef97d8892c33f859c4ebad48d9bf2627678bcc3e093af92cf39e65b7947e7c853fd5941f6159099987e0ae0cece0c97b3067b0a64bcc28db9a22f358688ba4d8f5d625a538dc54f5f3d0a7adc022744e1a20a789674323078b28786cd53ecbfb03bb21418f5ca3bbd53ffd4fc0e6c0cb7655aa5a43f3f327a2ad9f80d5b19c279bc8f31fa1684927635adb62df928f6efcf0f0ef4863fd21b94cace41fff746144fae34f240a3e3806d9c4afd847649ba04bd7223c4ded6936d86bf892469644ceb0d3eab2d8081cc454b31b34a7f72da97e09ee3b42ec569a55aaff910ff4c6ea3f9b7f61e80e156ea47a8882b1bd9dcd790934665fdb402e8bdd47474e1ae7b7808768d99642d0b1cbfacda4c5d97b54f95df191f6f76115afd9ecae0379491f4b39618992ce857f60db18f97957e911575031f03b3cdf043607d4532d75d0df24ebf82f6357"] + [0, 0, "444b43310300000000000079000001caa5006a646174656b6579636170010102500a1312a462cba3721a98b38f2caebdd8037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a7365736c646d59457a61524b336d65586974706f466d416c6b7161797a47474e6450324f792b4c4476737a762b4748623256506d3838477175516a59535142710a424157696a4178633967443853342b59474965676b3565525745494b464f6968697a354b4e566341796258567756574d384e2f716e562f5a4344596b377150460a4466733736356e4f794b7930364733397770584c56537258704c4e4f38474d74554c783939767442786b4d0a2d2d2d2041526274565357727146304a426d31554b6846656133703157526b704478583278476b6b6f706549736d410a92885302bdf3e529de2f1be634a6fa200836efe45c7eb10107ffb6803d0205f6327d980ac5e40c5321862467a1c1c0498efa2fb48004c8a885baf7cabd99f8f9cbab470f5df64abaae8dcd53a2e6a8fbba4c043fa804dbb24b7b0b14480243a4ace428b5275eca1ff293aa96636f5db5e6c512b31f95b0b9ab0b9a6e6af8a7467b036a26e9565f6167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139204e535a4335474b4c374c6e65536f56594b4f4359444c4e7179683351724e496a4f677242504556683778590a3565494141624b4a70614741567379725578794a4c34535471484a446458565372615052754b31394a4b590a2d3e20583235353139206f4d706a4b4269656d5a47515379384172556b4e2f4a51374b536c6e2f70674749306375347a536f6b53380a504d354f654955615744734550454c49326b6131634231434c636766516f4461625535304f4d576d5243550a2d2d2d206f50777a33525a4f65397a444b6d537744434c62686a4e6d57315737545047784f3132544c7348316c75410a53a37e91cba8febd86e178a53036ce480d60732afdd8c0e99cbe80319c6e7549b00546155a2aab40300eec69003e29b19cfc1de910217ffccaa9e4861df3537a2f9182d61971bb9dc1f6d05b3a0144aebead6cd737971e912a92db37020390198b5c9777f151f6aab04790e9557e27f9e41693f4fe2d67ee1a45b000eac46449d0c6a2dee604a40f5c08343fff0dfd6fdd1c608ad4143d2ead3699471bbf02adb5a70275602e59f6b0853e204aacb1698c9ac74bc20a38f5e2e8bfa9f6149f354a3ea0db827e05c1a69ec69f910df9e48b16750368346692d0401b75c4d4fb0898e5fd6f8e630ddcf725b220476cff2404d335f2a60ac5fdfe7894463616cff08b0ec6a5c23aff660167ee3924df5c4f5156a8922f956e137d6436adc7c629576984901a367306da6569d6e4f9e24bb22f77655f97d0f755426b8511e93605120692229bce7a30d9d89a176347c515af4a1d774fd4fb226a73480e86a29ea6eba21b01f504ba78787c653edf7fb5c5b570524786c1498a5219cfd40f938a733362dee1ea11498f8877113c900fbf8355e83c862e993e51be9dcc26973ef56d11338b50ef247a37942513b2ae818db3c831cadf0ae6727270f194cdbf7a70a9cd002e45c48149ca3a73bae79c5c48e14a4398faa74bfbefd2ef6c9f9b37ef2bc0f8170534700727d6051c0f49118dfb6aa9e1ccbe075149607eee81d3fffd18ca5982b78f3997e9548a7707cb16bcf180234236b588a35abaab2331612a75417d4be4ab4bb4f64f150fae9773e1c7a715629f7457344ec064c2cc1dbaed75abefd8f888b9af52ebe506b6457d299064f164429525942f983a49a6d6282ac40cfe70e7010256e84a88e107922d4bcc8f08d9502b40936f6f6ec1efe7ed8a28d6ec3651fba404bf467af79e2fcb44aa4f52f7f0e3926149559d199c4672e16b74ea0f791d4a2914b19e53e573d3188c9e40a59f77bdf493b4e8355e6b11383da08458cae5bc3cdfaf857332e3e2eab4654d7c27414e6fc04811002b435a5464b3a8ec7aad42c02084a76194d990286c75e3fa0db45afd4a919bb98f4a76f4b0f462ec33f06037006741683413f10f61e43c443ee5daf9b80683efb51d0c4448e42c"] ] }, "release": { @@ -2944,7 +2944,7 @@ "spec": true, "dkc": { "edits": [ - [0, 0, "444b433103000000000000790000083ea5006a646174656b657963617001010250597a8cea358b43fbfc6dff150a1e0054037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004016167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a7379336e7267336b567a6a373930335145756c4d2b725478764b7757574b7450507231625a394268762b5a796c426d6a6a6b44716276586d56534833545847530a41644c653542453454514a3646327055666c577a317a32655652706978317832444f6a774a7666654d426262396a6332554d6d4473366a465474304156516d640a4565356c46694d32356a495a324d514534753836707a4f5a2f4347314b5066683856776b7a4378363936770a2d2d2d206e616336384759747975727a59504c785559356c626a5563754348695564715132305639305441737a62450aa46a9e5bd151ad8cff1c63e366d8323ac55bd20eeac3f79c36a805a59b91c8c253b3c5ac5f73a84d2cabf9a09c791e1105303e23ffe0baa397a3262e0c018b494c15bf116c4d1731fe80d4baa54fe9bf64c9b43c127a2bd28e2db7e2a43764c9bf9f3085b124cce5be839394c1fb506db8725bbbc0cefc22aeaba65f00a417a67686fb33923b184c23e4b7b0b5950fd142f06e22f500786953e19b29215f8aba49a5eb313e2a8bb18a0cda8cbb811431ad7fcb686fb5817e945abe023590effad08d7739507b9ac6cc7c4391fa5cc99ad8ad25eea3a4fdaca0158b6f1591859b9ba6dd91df91bc51572350e515bdd318271ff7a7988783a9fb28c9b92625ef6d816abc0bb9f59fa205fa5a1eeff06f686148a06f6d847e05a6de003c0e77eb9b30f145b22bb287b2f2e05a90430fd96f99c2680a15df89792ac011110a8748d791b64940cb03f15fa72d0525114a54e9807aefe94600b0ac5802bb5c79bf093258a0a39750a06e709b7a1bb6e4550e2f0eb7c5775b9d8edde2cafc066cc3309f824d6f50e3f26ab9c3163f7646373999b6258c6337db282c8bc802cc9cce70273cd6b741f49fcb265bb68761ae0dcdb328b55e7c7ef6e44f63285d08ea684c523622fefc0f70bc71b9decb09b37daea40da8156a44bd0622ae1bfbf0942a40c80ec47e06d504ad7ab53049072c7cc8fd74d4e3098755010ef737f3498f2d2d6f400dd975254abf310f1c0bba4d910e60b6b8e46592d2064b42accc2ac3aa69008374aa34daa35e512fddb9163553030a792a2d548572e200efa558f262dc456ee9b0e05b5c5480548f6e079956096a2293821acb104c1096dde50d5d66ac93f01765bfcd34a4ddb4e5879ba522a402d40902b4406e6d728d9802faa53fc5116673c0b381a6fe3b03cf5dce51f79dd51acb942b437348ced3fb3c74fdda94d5a379fe5bf7caf77dc81ed260dda20598d668d1fb7ff6f86b6375ac33a1f67d4d2b665d7abd402932b5a8e135a4ef03be754f0ceca23c300c4452f2088a9913addf48dac85ed123b86db1d6c095a722a81ef9f29b6fcffda881f900f91f5ea124df9fb0c11a6229542ce1f439c04d80dc46709d84987d0410cf90a797df4fda51390b3a1487cbc8b559af14305f18964e0e8e7ac7750f75a42e2c097a743afb53f135964e3e83dee69acf89f078456988ba862b1eb0dd20d5e1ac07a3f6c8e026cb11f66fc3c6da5b9a4aaaa8401051b600e457be24a13e9ca91cab4db53831a1cbf88e313e4e9944718696e76865c48c8c56d3e15feebd502e946768cccbda0583dfffac0d7e5255e88abf1b9bfbacb1e99256ef69cfc523e1f4453a52f604bf68996963a5afed565591bc56a1b3e5dc36486e5ae8740f1aca4ed4f8f5d72d71a0de1b78b43e518d39a2af8119df3cf2de8000b31458153dc56e7cdbd7ddb9f0303eee0a377c7d9fae6c8bdc0b742d0e66028764896837658f32197c6e0fdf2098182db03c956c830782c85956505b5754941eb47b51103c56f24535a6bba3c646117f3854a51196f89685523a28980ebb5bac0afbf45d77a9f067215a279d80a6727dc689c602dce54d960f1c750828fb8176d2f7984d70b3fff3c439610775fd656a4652776e260206e4f6ba7f8d7adf4ef3788221983476f2fd21537b25add3276e696627779067592ec3d6e836dd6695a17bdfddee89793ce53a389d9e1308559a61120ec253ad45e4bab02d1e18d1c7271045c27d15feeaca0d57495d3f6551eab1186146ac9b742b62b24c4d6108098d2cabe4eda3092364a08e5a45478915ebd732ee9f810bdeac17370920ae7b03d91c5dac2cef4cacf94d85d05d013cf5af3554365ab07e5a4b706609e97e29bdeabb48de85c99ab2c4fe3ac4a753dede1c0d18efe001b2e29581e8763552105f5ad201d298490d35caf9e651f0e9d56b113c4e503072f11abe627da53b56a636cdc6392549130e38f30b9837adf416954b0294f948828bc511976626808dd50fb21be1358f00270ca4224f5e8cab5f9c814d22d96bff57841947aa67fdae1708362395706040c44b39ab85dce27495d2cc01808bc5b2b52f50c40bc7f6809fb0ef3bca7068b108a65aaa84697643f86da4f5cb1c408df4fb13f4fe4d18ab5d9332449e3e364719fe980b0ee35949d72fc846ed2da428f52ebaa809692a60403012aee8afe3cc4cec25630971a1c455bba47116e17a5d73c80dda1d48034a44f045fcdeea7149a5ee102f413031e2235a5ae6d9214fa85c533de6d87c21c5aa69106ba09e89e75b623d84eb5dada644def85fee80db90da0f90055ddfe13571b5733dcd0df3fa2874b5f966f7d96c716b14b9b1bac8be4731dfe7ca5cbddd134e8ce5157aca7dfdf00491b7f55c7757e952826b024e64b9128aa483b175e8e9f04552e70edd8c4ca4f5660b2daf18ab5300784ab1561f3a2739d56c971947ec131ea053c9b231c4837ba7537a48214c061a88d4429fd4b0e4c25f555a37fd9fee795cc6f4fc3f4dba11ff6167652d656e6372797074696f6e2e6f72672f76310a2d3e2058323535313920386934327143684235567571425a583136765839417148497074385a634f474a664b6173444d546a72674d0a3749446379594e693837694134644645586e393775622f6d767a55454e566a4f4241454e35507059434d730a2d2d2d204c524f6d4878304b3858544474787836626b534c4c376e7a684a414c53744b3545664e6e364955736837550a8bdcc407ba900f91f16fe1e28b43b8ff783299d42535c56ecf89e09777024986e68a0043a6485ed4c141de2a008074ab1b3ab200f0a4c7f6ba97826dc5cb841d52f81e97e802be4b546b7df83e7b2cd035e7224413658c6e0dcbb0c9d9514a10438eba73a2a85733449455c0a19822fe206d502e0f052c2cce1b023ab6909b7a9bafbc832b09aaa0504dc9a22bec8374c1c446e6dd22e847885391b16fb7984aec25ac1f0630954ebc16aa9d43d57d5be853ac93b57cb623af1991b18848dc5ffaf1d9ee442c5fb0edd0b4f13db38806e1c66daf8a60caffc4153b00ca7fd9a20b5fee6fe5781f45e8e182dc8e4da63af276ce885debff9c52308cac2fd29bc714fe31275f4b72f3bdbce599ac49df5b5e58c597ba76b91ecd9fa645b9ce5f0d1d4705d7ceac0a0de9219a132fc40954b2ae252038d7c76bc06dbc8e1d9a266ccff5e00a33720581faf4cfe4e2062f4e55a15ef839df8d20e0a25c42ebdaf3dab8289016aad5b305e9c64ec92baf54f4ab8f28b21a80efca37881723166192197ce8ca9ec6e731dfa719cc4367c34ded3b90a0bfcec8c9824b910589d5900f2811b7310b12e71e77d4e54bec322aeffe8e9676dfe014dbfa2c375428bcade15564d152bcca26f05070bbce4dd1b96096ff8541c6b3890229218ba306753b374dbcf2026862ec01647a9c18d606c6173c508c5ef9c9f79173d9abed328b5f086b8c2d0a5ee42555494d1c2a816bbd75b08337d6aca87c41e846f64b700cf4a68d8baf09437b74446d0aa7e203ed6d9ccbbb9bd245ca465bd0cff554d010570276148ee77b18299cca8e73ecaa24488ff6723fa4ba401525a226093de453e963a0cf7126a400fed104f9f5198a20f848d10735a921a88154b782cc03a99cec4dd4eee386bf1088eca7ecc89f1c1afb405b53c86b9113a4608a90d4a5c290ec34904f6b53d16da10c95288a19c5b2e70721d3c0620340fb8703cee5a2de6e6f769170bad52cae668c9d282d40a69a7356f78383421230d3a3c6fb3979f0ab4e293d10fb703c535341e84d30523d661c9a9c650d6dcb49dbe28c3890c2a987c804dc74047133388989164e12c353b710a792ae3e5b51b5278dc257333357207f1a78"] + [0, 0, "444b433103000000000000790000083ea5006a646174656b657963617001010250d9b19f485bc3d438628e0ad1cdf53ce5037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004016167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a732f6b3151335056544365432f716e3576584b527937436f456b7a6a55544865424f4879393541352b5a5a7a2f63557147626836542b4a3461426241797235750a415530573270637934577356705570323339412f6e34764a36496f33752f466f49474576723159335a6a3465756b747245354844433146474f32763057586f410a51743235747147574135374a596146355434676a586249796f77525348766237535865664b73464475356f0a2d2d2d20674c314536494134746c444531675865516e44754f4a5256437631687867597679566f7653392b326f75300a38f4edc246d0b36519014a63f8766f4bb722b775b240192c16cfca363f325acd08c195765cc050146660b9f67fe60fb394602c25265406cc4e908f7a13d8ffd9d8f8a2c2514573e3b5408b19e1692d83d0a465141d87e98c29e51b0679b55a4fd363dafa43d823ae0a55db5514be6d2a3d8996c35d95f94bb74b0a23fedf8f65e9a5b5ebd3b81ed2444e9f3167f285579f905a4bad25d741182839203da9aae9ad6dc5e8bdc04505625ed90e1879132798fa2c3c41de81880e8f1414393f28aa74569b9f2d805e3c77775936010ee185748e9c833ab76f9222be7c0d0c1c3cff07075865b5924872c60e3652a8042672751ddb08aafe1aa9034e35d2a3e34c0abbaaa4a0b1fca450883061835944f78f29fce27b29f3d3cd16b304444f5e3441a7269b696fe5332268ada24eae7edd98be942703fc8b812ceed1c0e9b18a4be10f4df817c0efc413b2cc1164a795435c3658a9d85253aca90b94e3347dc2141db3b2bcbd7ee3e6767974f7c698b35e992cc2a70f6c8f7e2dcb93dcb4f67c75b474cf56621657005ad47aabed65d68ef82b7c4a66ee7d039402e6e604f38d682c3a94411d7cd04616ace6faf86737192e30f35bd73aa14527c7f1c429a483abcffaef13d971cd9e0b43f17bce7683631b6e2611077401094e0c9b3bac188b169c62af8bec5111681f1c6d5b42ba2040a41ac7f475510c8ce84c084e0493a39aedc0d3a80157c7b28f2d2e2d1a1b7a5059b2dbe74882da05e4357c79d57f6ccda06dc5c0d98aa3c9189e9d13ed4f6da0d04bc790a35eed67a92a22eabf1d327004dc8b8767d3fb0d07391c3113fb27886c87779bf3feb9b0af7880aeb64cb2dc9194dbec80411a091fa828ba776d9d9aa5b4a6e50be9bdf46e73dff63fff3b8589b1afb6deaef884466c8ed2a7c585b53e6e5abb600d59ab0916cd2fc79f207d7e39d6d9a3ac4cfb12ce240d4e6201539df1c86365593c9ef4c7ec8980eff65c153b1e691d9e0d7d8104b8c8551d9cf620cb55cd3ae878c6d35468d2cd9edc7f43cbdf9c673b76b726546de9c60ce6ee0a65d02d6e642017ef814966f5ccf698d9665985720312f5462868854857fe08c34fcdf1e52e4d30a03f31c6c5ee5de34e59334fd492e5590d2b14503ad865d3a98b92365507d337ec5131a9c523949d937c16343f0e3e9605a4e0ddf633fdaf0a812bd8088c27a0434b3219c1dfbd0fca86dfdae440baaab721b5168dbe89fa054b9701fc0233b48145e58c5fc8b62e76c549b000832326be159881f2f4aedfddcd781ab11577e945866e883885e4a6e32b1cd4708520b744252947e8df1445de8d215486addf0433f746fa5dd7cb4d5cd45614f087ee82554a1ca8f28785064c0bbfaf5a4a41080b3e2135efdeb1e2484762e1d1d802fdab17050a90aa69dfb42926246576a9ba8221ce4a0ea1132606212c99df0e3bf5832f4d5ad22ae5cc428727ed0545720f030d89aa95a2df4c3d4b3f59e11ca28d3d000dabe9a3c82bc08e30092e6c7dd79ca7d5e246c7fd63fc01013e7ab4dded20371d5604ff8af26ac663c0c01935afd1e773b927634473c4538f61d95e79199f226c10c9c4c3fa6f6284acdf3237fc5515b9d705e237ac738d62e250aa26edee42eae98b4927f59e12e30a09e59c3372ca5074e69953a5ed9694466a425f96102e0a52aaf7293064c4445bfb364e894b9347ccc04183f65579e5c485db6f5679521b9f9414839e96657dfd7bdc3a677272add3a4cfc7ad53e98b7eb9474cf5b1e1262ad74ef317907a647c1d6c166ebb76a549b8341d49a5c8c549613d857ea8e14aa60f322b2fce43f9e91c5f39fa05807ada80d041b21781d640235d49b88855f285d89ed9d5ff8fc06c7959d75b51a7aa04d79f0438e227d29d5399aab44b26598089a3cb3df40791f3bf639d246b4bf4a5865a91a58aa0a2e3f39073a04531fe8c234a0dd046c49eca1e73ac3dd13ffc0ecfa929808455afcd6c938adb9d7453acb329a5b4316d925fd41c3ed8e3eac3c5bcd3e11e33793ce2f25267c0b629f1c6b597d76585986c9174d1fbfeadfd91707aa2d24082301c62b7f65ea0b2d09ae3242926397b630241b5247f563fc18ec27ddf53d4810e53d639ebba99f59a23f2a7a831dcc1a4974309038e84b5a33b6cdd7d2f0fdcdd2bd4568610c47092751fcea9e831f986f12978861eb2eb7dfe638897036e421f19360e40139d3035ec18687dbf91345d672b4cdab402a120dcb29ac844e84189f84f39a575a53403687fe82e16238ec2218caaafedbc28248b3cdc7f8c1d1b290099bb62f1b07e79589d736dda9812ede7b666874b85c1842655b953e0a003999eb87975d5ead570401355ee4b45333c8c443f2aeeea0747b62bc508fe3e47e898aa24cb26d47298eff1f1a802007e2443885dcb499c07e93de84334866348935fc1ad5057bb676c34995d6bf6c029425452aa1700d501a16660c5b16d93df91cb2fa6237da3300b62a7d313aaf745bc27d7118585d45ce21a3b6167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139206f684f7232717769595546626f66704b4a384a4f6265577869616f5731422b5a536e7250797362416530770a3652353755476c6d4763724f6a5353564c6a346741787867713835496a34756a436c3250593833346b55340a2d2d2d2044636c56546f4d4336484a495942424748545a494d4a4542346646714e763038575a4c4950734338387a4d0a42136b648b655f39f696b06aa1da77096d43c49eadf7f15ac0f6a0800e478dd013f100bb6039776687053143ece30cb3a52aa2e682aa2d01a0f9f44e13362f9901e20be34fe22099500b13184d84f0115b4b78e8b7968863a3749b580ba056c1c0a9c06b2b0ddfca12330c892061ed1cdaa1931d5532f06a8b63c77917da658586e18fbb47288f549c9b9ca5438b4c150a655bcfbfc2aa78389df90c0f2fb9851c6bacfe4d8ceb6aa09b05d164d3869864463b958bdfa5fc3c0f25c7ce5666f3ad72c1a0c0800ef8ab48a9274cf2e5a5289a0d59272d43dbdad7b90c81349430cf210aca5a485b215dc9978e513bf4fad8fdf31ccdb90ce2cca335b75547fc02e1bef1051b337ab2b362353892ae295b9ee8005f90a7596a48bc2808718b153bba0d8bc54543a1ac468f49df5bb8c91e69449756e6a89fe4db3ba8e46cd88e3f63d7ee7b4603691c1ab0b776f4f0e0ce8c8fbf4af68d92c03798660de5e224515eecb5ada5a7bfe78692923ad54dcfa891941a907b1adb005a925613dae98273b33c7561e07db066e7e916bc86962ac60ee2222306b7178281a45707ddc7a5487ec58f2b30efc62ec9932e94f537dc619be72977474ce56bf9f4e95dd23dcc276e30bf224aa0813a8681623d1430439c743df5bbaf2395cee349e831615975bcd2ee535a705310e07166f43e0fd89f3361ea72965a047f7cfc2a1714c273316365bc443272bc966a0045abb031559d93d74dae4797dcd89313924f19869bce919243e5c9fa8df5a88b9606f51e859ed83f3908ed46cf6c91e8a997b2376eefd8c04efe7c09f308b99cd18f4d2946a3694bab5d2dd2a30f4bc688169b1ad20c586a3fab6a3fa67e154db990b1bc708a9426c93639b4f150b42548056a4a8773f224be666b0a5805c58d9e0cbb56e88bfd8cd24d0015dc35d0db557427559d0a3f3aed9c122ff6fba4edbe3c64c51dc56544f2ea4cf2772e9972ba1879db070137d8f50fffaa6df6e86f4aa88cf6dac854fba3837451d3f6b8a27de2c1edcd447f224bf71cff919074a8c75251eda099f9b0382fd620a34303bf0515a911d10e567215f0691a44ec247790a897782b1edd948d77439f441d30db22b48d21328a4f"] ] }, "identities": [ @@ -2966,7 +2966,7 @@ "spec": true, "dkc": { "edits": [ - [0, 0, "444b43310300000000000079000001caa5006a646174656b65796361700101025041bfc0bafa3ec414686f5bce8eef2228037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303120353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a6f7236484c4e3336426e2b434c2b72317143302b566d7852486647314f4f5a665a454a2f2b754b617162444f6f6b6b706b7374427977474e56775248596c58510a42453172424364704e724766685232636974776a49323236376f6c462b486f52654b7447697a553559527245475938645279737a48464455354f2b6c56306b720a5256524f47516354463937744f494c6270562b47315a34346849344f6c336f794d2f6c74324d65346159630a2d2d2d204e5953673351624d526d396b49724e50707a6c6c4d4d752f6a6c4a6959377153447477586734336a3149340afc41faeae1e60cb20f4eaeb6027ea4f5145e019eea92b3314c1174dfa2d87f1f054263d6c42a474fd3daae25705838ad714b49a7295245e355864c2fc11aec338e6895c5236ae2679a713d0a81f939bf4f80b0b5ca780dc1f5cc322deb4325ef517a15e10f824131dab77a83160178981e4024ba253d33dddea0a2cbb6bc5c54bb579bf1c332596167652d656e6372797074696f6e2e6f72672f76310a2d3e205832353531392042753438666649786b6d6643534f374e556c3341463744334a572f716476654553683165687a616e4a51730a4e686e50686b3746522b5072736e596b777758427478327a47576e57577a4d64555376634e7437654671770a2d2d2d207747394142476c374936445075484631696e633238526f357a5a444d634c4e6f4442394d665a44737264590a4cd0736d59dfa48b00808be1e3f5995097ada687cf35eeedf62b72c279a2dd30b173c59c96d1c791ee927aed909e3925199d9f229918d303ddd8966b3a3ea0f57e8a9856735b11db22b38baf3f28c6a21c7094b233acca72263ecc14bce1c6ee85787d7fee2bf33761cefd34ff07c4eb41fafb49e3791f556efd833772996907f5d0ec221a221d58dfd1e7f8b16b7bddb1d68e1443256b9916d4f10b5a0d783503ba80ef7fed92961862539a3d6f09a004235c436f30ede9d63ed59b5e5d94e42b41f8caf69119bfff153a2b61e708fdfa2f71694ed53b6a2fa64de21c2afe494372352181eab21e404c1f69e181af6bd32cb06cb015613377d234be42abe3c31facffc230d3bfe00ea8bfa8d2ab677ab43b27498a67fa18bfaf32560fafbb73d09d29c1e9fd159f888051096c2df60aadc4699ef3c40fa5a7ca1f9d8fa489009787858212e43910136d0a4fb70bf4e2fcdf6049a404dfdc5a65371d33588148c22d0ce82033fbcf4fe78f8b4914b95860f4266051e57a2f5d975cfb239747e74b29ab07293d3b739b14023fb48583a5dbd427de0e827345f345ddfd9f04c560c673cf6e5ae694a66c208b3f4bbcc71a575f00ff77f66c2f462186bc1bca745eaf5f76524616b92b25b9564287d41c0b16704c8974adb93621b6177c6d8ea7fd1939b36c8a7c1463f2e69c8e0735482324d1697a9fd71d4c3ba8daadb4c8aec60377ae1ab1aa25e767af88161faaedf2c37980314e657628344e71b45c5439576555b4d73f0f2331cdffbc3f12607916064c949f1eeeffbcf0d5fef49ef42d42f7302a4d2f79a3371fb258ccd74df5398c8b6c34cca4f2ea5d631acab58a529fb8b29b1c7a9d793f29bfda615dbf7e762baf57bb865988b9fa19d2ee9b267c8d85e85acbef37a7a491928d3596abb0a0307e8b4074a756eb0142961c96c54958e1e3d57e36794579ace43656865b28356b289b40ba8ba28f35106559fe60f0ab3258857f7667994ee11fc51161a846ad513c761891b382de33b956c2eb53a3a8cec005e742eb323c710143e1dd171a7102234ada13f7903477cecdc6615313874f03629c06b467608bf951c85d02801a57111e53abba85bad072407e9d50f070"] + [0, 0, "444b43310300000000000079000001caa5006a646174656b65796361700101025016def2d8ead91535dac7a89d334e5bee037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303120353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a74504169514167654d377135544156586238334c5671326b31453651576d7074515a4465493836704d417047757335316d656348526171526c324446587178350a46434347734c7173597353744a6c7857624f70556753554a46713844537844504c2f7648574f7666616377592b3058476c3778345a66644f5176534f355248490a707a4f78644145414f64793463714a554f657a4e432f4f56767a53737969477a66616d645a68426d5730730a2d2d2d2044454d304664534b38784a774764706e4a7436437a4c344a5a54745156444a5654724a38597a457779364d0a0a0c4cbd2256d768bf09d57fe35d78fbb251d6a8219589c9aaba6d54e9f775736179d9744984b17b147806896efee657d5d80a82e045b8f7dc85add82c0b4eab7a2e837255f330180c180bc4c9b4e3c6f728b47cddc454f4e65bc22a7b6a612fffd37eb32881b9c10a1dc5be9d6f051389b8d3e5b849b4d030eefadc4628f874cc09c4379c4a0f6167652d656e6372797074696f6e2e6f72672f76310a2d3e2058323535313920454572673351494639627233686f614a704677475369334162434e45507a48394e376e2f47692b6d3333510a644e2b736475626a7a6778487036424a615548644642726a715171513142612b62377a4a75393059426a770a2d2d2d2045446e6678584930596d795a3157496a4470466e5354746773314835357a4d76594e3949773437745564510a85ea43f74765b61522aa9881f1262ba5154e04a02d022abc93be1f1bf8c05b20b2a9dfa0260df75fb9b84ee1ddea634a352a6e20e18c01def36781e90229cea2bdbb0c8f028ce7d314b6eb27a25b9cad2b3a3212406eae5d34cd4638303d2e909aaffb4e4acdd26929ebb83910851bffd26a2a80d5564ede8d3034c4259e6f8d859fc333213b5b4887f8117abc94deda2d14c6be20bd45237deefb273577a2dfb3b5b6c6033efcd551e22564d1ba720cfaa8a2ed5407ac52744e4b37dbdb2b48060d94508a5c44d04dc854d34f55b386f6ca23c6208e8c1e6058cc4e016ea4ae20329a6a44ae59b23885fcad6b399d189ac635fcd2961e00b7d1a569df3f30177785c1c17c5ebb9230528b3999f1516097b381499c085fd8d21937007508609350779f4c14dc3723746660f838c71aa174df1e6de2794d05485d72a1e8e7f07b33c836c932e3a8b6ef49bb25fc50489f0874f2661b2cbc3de552ccac4cf57539e66274dfdf4e9a72f20ddecbb58a4f03c2822d823d905c0676ac770080c0b43f4a72bda7197203771bec76443df3139b71e2ea20773562cd120d8b02fae3b81cb095486696cb40daa913b782889ce96c9326384c956438dc04136890e6e6f444911fcb1013f4d61cf5c524e414684e2f70a9fa8ea990b81ffe08cd045d4de2c3e720e9e219199d47e8affdf5b794c84919df1457eb78cfb0b6ad8f597c3ef8186b163e98839f6db9de85ed85e7f7c862b3d1a11697c38db9f2a486f6f13d6633777b751b5b104aefb64dbdd34d26b871df6e9fa49876931749d72020622300a5bc80e8153988c273499b673911bebd7bea3bd61253e5adffb081679c708971600735561ab72a33979e34ca574e95f4ace3a4fd0f1a299f492650620cdfc21b421dee00557d0618f1352660f8e9913ab71e272fb957faba20da43609818cbf7811bf6c33f8e0db51357a55ca204d29a9609e8a8aeb00cdcd8ccb2ea7f411a74ff0eb70a86ddd9a05345571ad2d90cc65215f345c4106351e3f2eca1b2b372d3b4a4ca3c4598eeddb6faa53b81f5351888fc449bea795a9f6d3e987b56bf28d1a263736ede8e47fa107548bd1d9c6d1a54edbb8cd9c4137663b61417e3464c81e6"] ] }, "release": { @@ -2985,7 +2985,7 @@ "spec": true, "dkc": { "edits": [ - [0, 0, "444b43310300000000000079000001caa5006a646174656b6579636170010102502a82956b5a25d4be97e60d0eac4eea26037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020646264353036643665663736653566333836663431633635316463623830386335626362643735343731636334656166613366346466376164346534633439330a75666762416e707062333137376763736d73754635736877444a6b464f7a2b487277674f336652584d4547532f5937306350343731587061394b4138427a76530a41454f762b38697a4d687a5644694276554f2f7971422f42556f6c7a5050794534316f7733736776475a376f695a4e3171476b395176394169737170305855300a6f71413542727a42436546564f78576e594d66466d73724771305a41484631612b3574307a70634b655a730a2d2d2d204472564352626154797045637155504c48305065325a6c49564a30746d55356d41764433334c656a58324d0ac7768fa80bc4d7425b58abdaa66fe5e72e044bba58f1d7183e8b4b24d38d11affc0973f4f03e5bdcad6979816d9be07685ceaceb718982420a00489594af9c852b59b74f92407a5d28de939be8cbef9ca19ae9482460b66a7d69bb64df74831a71413062030328995cddeb952674481298834147835e305e33132b905f65f0a63f61553ab5c0c66167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139206e752f78586c5747386b304e742b316e5379652b497567426b6b796b6836315576434155543356313067410a32396c4c48446c696635376a67357356345a79334650343530585556754a39462f4b5555675777795a6e6b0a2d2d2d206e4b534c6e3159466b326f6f5a5937653777786b706d5930364835644e446b396859335866396a417637670ab613f1258b0abd6667bfc786e556273363115b9c7fb4be83a58cb1c1aedd39a719e8403808c7a5ab38deed9dcee30b02c8c54a283a720a76666c45bbcf04fb78acc614a6433d2c1665e156fc5a1445fde226fa92d7fa2f5ce7ad774cd1dc658bfd72986e5edb7a1cf63b9057ada08fea6d805807c20e58cb1fbb60f5eca634d39ce4c8a655269c978d5caa6002f7d33646366e44295d3027624bcbca8df32b678efd808adfcb2832c9415b386beddad2547367ff67800b9bbe2607ed8b6942d7c52bece31f7e42e308532aa2ebb36dca678635a207d180c930d2c3ff0795c52a6c23dce9226daa816905bbe17f24ff3dc0a4b37f6295a567c5161bb4c7332c6e8eef35dd31889d5cd9585a1a1dadaf7f63328c72c551c171d84d961f7b64a9d189a10ffb24fbf3f39d3878687bd9bd100d541658d0138570a86afc6be71b0b1f5286031a5bff44305f3b4dc2c38c6ef511d4839f549c7e754c55bfb10487a5c747111392743bb1c6dc639621b9e3e0c9abac1737eef7fe2d00bcf77655ec1131d10f43a34dcc59f40ec426c9e2f33e506fd5ac0a19c5cf024cf7888f8e7b6375a3e1a706785af777d8fc49dd2b6fa3472f8628406e4a6cfcc5d3f53edd432a4ae43b11b1c4a9cbfbd05a4cc2a931a5ac9015de9e7742d10679a12c9b922ff4e2d96ff4a76f34fdc35a33c8b022fd4144911aeae083a9d4c115433b59d6baa42b4da9320aabd650d84daa5317e69bb162de5730aac15bd579fd06c849453d70835ffc97d762055dd10be7573cf32e17e173c4cc81ff7c513a08ea4143eba641842e3b073a554ddc176aa268c4c8569c3a7fc8c755e39e37c2da1d19cdbc630eae030db44b2f82294ff07a14a03dc4d302dd126bed5ea004d1ea1351d8deb266f02866b19b042b0b63ca227f7be2b21815569b88f7b460119273e358da1bbbf8e476fcafa8909d8eb7d8bf9a4a7f9844878fa4d3720dbdb318725c93fbf0c57ad113c9eca415c4c032f954f6641aafb93ee3dbe4264e7b2456c2172e34b6514cc0b1df0f0dd7f326195dd041396f5cec1b6396281418e4149632cc503a446f56636346bf3c1235d2a36737648772b65dabb757abd2292fdddb12fbf35c5beb79d0"] + [0, 0, "444b43310300000000000079000001caa5006a646174656b657963617001010250837d8abe415bf5784ef7d568f2fa71cb037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774d483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303020646264353036643665663736653566333836663431633635316463623830386335626362643735343731636334656166613366346466376164346534633439330a6b7573722f534c724a4b6c5377394a554d546432323954416e4276793663553443586261346431542b592b765a4b3231414375626f6f5739506c6a65796e69680a44577551757474796e7a555a3634396378742f67737a723437364e4663593977425475746a702b38573051376153796c623879796b6a576f49643966356835440a666648652f61792f36702f3657594761356b6f6271597a715567754b38756d6476557275646558327353630a2d2d2d206c6942423152556171726966507745477a62524a346e70596c32687152725479755630596d6d68684e594d0a21f5b0bbff05805c034b30facc18f41e66bcca70d3617051a6a3e73a00483953b5572e91d644b7d74e13dc29503047628e679fada4c069c9cf9dbdd37411250dc1b0d2ba894ec4f26427f29df1eaa7012c9d2a847b1795b2b72ae8a9ae38e1e1d8d7dd014fd736cc6bcf86cc1440d2308e6abce1d26a390edbf25e1d3c1940ccfc5ad5428935d36167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139207742567956347a5335452f6e7473744e583245416453634e7163584e466b5a783267435655695278336a340a62343938314b6638466a414b6b736a38737a364f465a626541664b756d6b73454646744c71454d67364b550a2d2d2d204353415a562f48706241363633527a754b647466454f6b58774a336a4f4f6b597277714474542b64316c730a7f9f4119fd2f288aac14b657e154c78083612255b445c06a22a9c0ca70ba8eb32dc8889163d73adc30bd6c4411f86d8ca283f065f64660bbf290e5cc0af3c2cc0bc92404cd3a10a610d683560a773b9440b7d1cb532451c8a687dd622fba24ca553e8709e8e96f23cf9d790ce0c7962970fb7b23534e8cddc6b37cb9916b0f5072a19e8fc0020ae59312d76f48e78e083ca257b1fee923adf945ca20e17d49cdc46594b8eeef922d85e079c6e1bd445e34a612ee0527634863911ca93b7522f345f048f05df9eb3c7c2f758f7a73ed1c86161cd012bddc1861a18563655bde77fff0f62eba0842592850b3671778a732b130163688cb122779d9539bb69caa81d52b46cb18d6260e0f47128d32d5c2387f117da7ff8d5942f49bc4491cb985a52b1681fc23f1adc72a06fddce88e5a59ac9328bba3a552c51641a2653ceebf8e42d154dfb25837ce05c5fbaa1cd35eda7189ac70c53c1d1527c5c366116171d9dc57b8c06a19d4c4953fc098d9adb057f2849e2301f8d5924cd61a1e2737f5fe418fa5c10f73f23df7dc66c6e8368a391042e552580fc4c305e7e907b2f9b25c4737abbff1d8c8cbf6e038cc6e3c05292e109b98a59391cf16cdf98e681b9009aa86d209720629164b8e801295bf86996ba403eb7935b79b54766a0542492fdfab6e1d4c27d12150cfde119065a5746e92bce063778676f194a9a0140433893ff276e0cb35f62deb120e67382b659d2ea8f70eb3861cc8fc49a2f4d4e66dd26c974aa24be499b3428a787f74ff57afff6d0966c9731001eb5ae54f2d3efe902dcfb53e209bb5a2bbddcd54bff3f4ba88f9862adad61d429668efd1e9a6c3bd10114e5fdac6e9162525edd5899d82a0aca82c6b4dae68babf6d7f57c33da6112458a4a5b5b682dbf6ed2dd4ac423e126ee7c1e6ea4911da9a953a1a9d336d3853fc41eba1ce6d6aa46bdfd3fae34e41ee40174ea8102570c5e036423f51077b4756c309a0ab06fe204a6d71415c666665cf0ee780d724121a6f74c55a3f5f46d4d965c29c0b6d74deaea946ec0a4a78ecbb190d73c333b1fafbfaaf67cd508d22697795fe29494c4459afa916645e7e3236888477bce915c1731c40660f0f4d13"] ] }, "release": { @@ -3174,7 +3174,7 @@ "spec": true, "dkc": { "edits": [ - [0, 0, "444b43310300000000000079000001caa5006a646174656b657963617001010250d59e6946de2d48dd85c32ec13d270278037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774e483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303420353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a72386c65724d48716e57434c74383944666148726545344e766e725a336c32374c38785175736f33335363754d6239324a7a37447055592b68584b4d43424b370a41546c4d394534724638794c734e486663652b7a577079695861366872377043567642715239793774765665305374364b636e316955634c615671306738564f0a41466f526b786370705a3279626a594e31726c7934484c4f664d7a307743616f65346555422f6e523453490a2d2d2d20427930776c7a5a67543864677564364c6267423379316a726c3838336558493458574c5051595a7442574d0a08cbf072f71accdffdb800d5c8e8785b02eb34166603c7a8b3e7aee05659015392a301d583e266fea9f1766616ac1a85db5f7ac925267883e7901555ae85b1b5e73fb3d7e4ebb6dbc282f69bf37842a7e0b41b54b60631f988bf215e4a37600cefeb31706cf83fb9606f52085925fa39e4a16465163d5106c7871a6801c472ee2208c184cc75ce6167652d656e6372797074696f6e2e6f72672f76310a2d3e20583235353139204e794c5252416843652b32356b4a30704d4a3753576364496b63764d6a627271302f6e35543938717658510a642f39684e39494455546f4f4744584345537a634b366e5963547636464e61394d665741793374456c59450a2d2d2d2051465650712f595469524b41467471466153555a79475155444b574476747336456a4a445a3036722f544d0acad8c58988655539c0f91361d87f98f5922dfd58a7f49f237ca581e7e9c96e1ad7dd90c94552804a3db8db6c065e5240390d0576d4c843271af5ed2dd83add56625dfd7762a98715c5b7c819d20f691767074640e25bcb541c38490aa35e1366ca28169efa4a24c7e58b88af7aea04f76142c148d1b6e87849651d0ee046fc9862ce7c9cf301a82ca4325f7999cafe257f712385b9eb667511ea41bbdf994e21d12333d8971f9f01ab4f060f6681fea4ee4a3c69408f5f54d51645b9c8d92844c85862fff5886d358975eead7c9d79c934c8b574bfc91a37b30d99d013a6304549786c83ce5d8e7a5a9b395abbe8787348667865fbb4d1a51747efe67f5665c86a9c35db7f2fbb5e6ce77ac2ca471aeb06ec71e0ede05d49ead0a1b99d64a3c90d58afb8c427c5d66fe73bdfa604b971b0414db45a252787eda47959dc5606fcd206f0ac327770f009be7d1592bf2c33b807ba1c38cd3d79fc6e90c89832b59222b2a6b468296458b11810cf80b8702cea6d8592426064e5f2d5a5c2219387e15a088c87e3cab2f5285142d15de91f05737d9fa8204029fab3c6ab2e5d40097807e56a25a4ac3972c0518b6e5a6f14ae434493ae1e995f06ede87807b264b6d595f8d21c402f652c91fb20eb7c429887d5de9a4d9ff3870ba038ad35e13c4c4054b0449cde345d2b5dba884e0babf84755ad1d1f7965985bca12e6f2355a675101f498bb3e5546a0684649f9198db04782f842d24d87a4807c3bbcd19121aa7d1ba5e8423d5409c4ea6fb62358cf9ec9e2510277d28ac15ea2ddb65bcf358e268a7e7ee7a0eae75dd2e8287d12f5733af8dd8045fc18851fed6afcb489270121dfc042859d199c3db41ed1dc20fd30a3d96d6655c3913caa534ceb8563fe28f2cf5658d28c6b6a85b8ba30b279129317fb83dba275893eb52db11f378791577c79c46c3032deed235f81423ebece045fcbf17457901ea4cff538be0bfd654c91bb46b8089d897202749e7604751f4584d13b00aa4f39af6f9e7f150c79fd5cfa3bf1295130f25499ad3a831bce5c1a977fa5e33131b0b745ece1ae2c945b7829ee92fb6f015dcf44f2125f94cb7f28cdce287c6f32968fad197164ae74eb3d46"] + [0, 0, "444b43310300000000000079000001caa5006a646174656b6579636170010102506134b00a1f901953021415cdee365c49037853646b315f65794a325a584a7a61573975496a6f784c434a755a58523362334a72496a6f695a4746305a57746c65584d3663585670593274755a585136646a45694c434a79623356755a4349364d5441774e483004006167652d656e6372797074696f6e2e6f72672f76310a2d3e20746c6f636b203130303420353264623962613730653063633066366561663738303364643037343437613166353437373733356664336636363137393262613934363030633834653937310a727a746d76584d307a7565617641524c37694a37476f7035316e6c644b476d3947744f71692f38776a61484a7377745430646d614e786a6c47736465485334560a423637794930394869345971684f736f4a6b417a2b633733764f384b683965386b556b64313231376135455478683232736e755567465146617950326b634f6e0a784e6f62357041354e75776f327878727273536a4c6165344b6b5a44666d546f5173667056642b765a68670a2d2d2d2044356a504a7248736767334c325932775a5856314a6a2f6a56775a4e7977655438656b456d5358356e6f410a04b046fa2e58e5a8012a6ceff391ea637141bf95db84bd0aaaf2dae8bcd99f5d70da5046a634f04465dc361c7fe63319209d46403ba708462bb7354e3c127f5f4b8abe4f77ca45dd66ea0058a36e8d55bae72caf62fa5f6232641e62dfacee39a79f23a229b85635db11c81c7e9a9c447a7f958fdda799adaaab45575927566ddceae641baed356167652d656e6372797074696f6e2e6f72672f76310a2d3e205832353531392078397639774d4250655931546f52345257615a6946722f44443559777a5367345a2f564c465a75736142380a2f7443514e6938523675766a3539546c37634866567358326d61773135674c392b4a38562f6c64516e316b0a2d2d2d203530444d56734a622f4b645932316b685a664e35642f786e3163706d4450725065584c4e576777304e484d0acb6f57f1ec0b54db35082d87ccbd466336d796528922903e1eb86b2f61b526422428962340dde526abdd1fc8c495918f7c77191b4937c1075b0c7fc282d788c9d1c7b272cab145f003e7451e4afd18b396be653ba5665929956003aff7913ff1901fa6ae33a1ed4edf626bdc6dad9c1f8163f7fce923992ce33c568abdac4cc3db0c7d816ae5877397dae42a2552a7bdc6c42294315170d75ef50064c78e8f1b2894da1602dd16ee7520256c87e468a7b4bb007da73854b7f32262e67a54fb1028960c6413fe29b897ce490223561db29eba201394af3e147af704ccdc3f803dc86a8455467f2fe279b6a72c795805fc58f77d02ff557d1cea753883f557631019558892f4261cd016df24704738ec767b266e09c812ba9ba18f5884a10e89930eda2de958fd6d9a6ab6c37d9f0d881d2cc62e30ff12ce597c83172f51461775b8ae92e06172154937dd6a4d3754de38a0db1f9c52e3fb36791c20d652e33ceef30b42e1c13160f139dc83bdb0ce3c6b959c2c7d15e2f12a17ff8cbc95d8bd7395c913cb51800785d76891c8481975ce33e549dfe280de1e16ff350298026fd38dc70f8ba5992b6cc7e437e3f3ad7688e83ded869b55da612632c3c4a68ed1140cbe23065e39fcc7d13d0f133bd2be0084b19eb806f365770550147a7193165d67f283fd713365cc2a635b729cce755fc79d1aa89b1eb93e1caedb181c4672c4e752c329a72751cf581c341acb78d22b30bc0f0304660f4575cc5ed7d42b88399cc9c1dbfbdf77c23a95c0f72dad0e8e833e7f636559c6c49f7365928fbc38c8a785b2dcb213051b156cb1bc9c5fabc3371cd4fcfd8376c2ccbec7c1d055b1ddc81bd0084a1a307c6f8cc58943b7c8c5cf19b0cd68b4786b87d3214813c4d0b1a35315da0f4b765e3ecf519ea67432372dfd16d8937bac7037bcbe4a36f0b043e8315f109eda586832a7582d9f5ab6524a1098aab0735549cb811b906c3863ffb08e23d6c0fabc861a9c5ff07cd61a8ecf5e5c779cca440346e8b848d6b5eb53bb539113747d82c07fa5262a6360546310ac449dcb1c45e16dcea2719a96e61d7f9c8142e304e490884ee434138fd329816e558ea2873d0f46094467e767dc0f"] ] }, "release": { @@ -4268,8 +4268,37 @@ } }, { - "name": "a signature of alg 1 opens with the verdict F1", + "name": "a signature of alg 4294967295 opens with the verdict F1", "spec": true, + "dkc": { + "base": "format3_single.dkc", + "edits": [ + [786, 6, "256f1f0dc845"], + [813, 112, "20d7c80e99276f0d6767c0ffe2047e36a800f14138362cf668c59ca29a1a1f162ade4fb9b820db3648268570b6070dbcaa0cd7e8ed3fff0b3f50e46a5a5caa7482df632e59283d406d7be4db6165ac2d6a49110f439275e7680f0120893b727b82bb8619c4115411d05a7feb5f9e09e5"], + [1547, 16, "e68dbdf94498d76dd170fa3bfbbe344f"] + ] + }, + "release": { + "round": 1000, + "signature": "b44679b9a59af2ec876b1a6b1ad52ea9b1615fc3982b19576350f93447cb1125e342b73a8dd2bacbe47e4b6b63ed5e39" + }, + "now": "2023-08-23T15:59:24Z", + "registry": "default", + "network": true, + "frozen": false, + "error": "ok", + "step": 0, + "verdicts": { + "signature": "F1", + "seal": "S0", + "lines": [ + "No se ha comprobado ninguna firma: trátala como no firmada." + ] + } + }, + { + "name": "a signature of alg 1 that does not verify opens with the verdict F2", + "spec": false, "dkc": { "base": "format3_single.dkc", "edits": [ @@ -4289,10 +4318,10 @@ "error": "ok", "step": 0, "verdicts": { - "signature": "F1", + "signature": "F2", "seal": "S0", "lines": [ - "No se ha comprobado ninguna firma: trátala como no firmada." + "La firma no corresponde a este contenido." ] } }, diff --git a/testdata/vectors/padding.json b/testdata/vectors/padding.json index a982752..1fee966 100644 --- a/testdata/vectors/padding.json +++ b/testdata/vectors/padding.json @@ -1,5 +1,5 @@ { - "spec": "0.10", + "spec": "0.11", "description": "Padding rules of the payload of a format 2 capsule (spec §29.1): for each content length L, P with code 1 (bloque256) and code 2 (reforzado), and the length of PAYLOAD_AGE for each. e, s and last_bits are informative. Generated by the reference implementation. See testdata/README.md.", "l_max": 8936830510563328, "vectors": [ diff --git a/testdata/vectors/path_fold.json b/testdata/vectors/path_fold.json index 21c043d..cd4ccea 100644 --- a/testdata/vectors/path_fold.json +++ b/testdata/vectors/path_fold.json @@ -1,5 +1,5 @@ { - "spec": "0.10", + "spec": "0.11", "description": "The key of R7 (spec §29.5) of segments, with the Unicode 18.0.0 tables of §29.5.1, generated by the reference implementation: nfd is NFD(segment) and key is NFD(fold(NFD(s'))), s' the segment without ZWNJ, ZWJ, VS15 and VS16. See testdata/README.md.", "unicode_version": "18.0.0", "tables_digest": "07cf5d54aea1cd13a3ecef14a06976cc49a3cdad755cf9bc10395178b93aeb07", diff --git a/testdata/vectors/paths.json b/testdata/vectors/paths.json index e9125ec..e8d4318 100644 --- a/testdata/vectors/paths.json +++ b/testdata/vectors/paths.json @@ -1,5 +1,5 @@ { - "spec": "0.10", + "spec": "0.11", "description": "Paths of a format 3 head (spec §29.5) with the Unicode 18.0.0 and best-fit tables of §29.5.1, generated by the reference implementation. paths: one path and the rules of one entry, R2 to R6c and R10; trees: the paths of a head, of 0 bytes each, and the result of decoding it. See testdata/README.md.", "unicode_version": "18.0.0", "tables_digest": "07cf5d54aea1cd13a3ecef14a06976cc49a3cdad755cf9bc10395178b93aeb07", diff --git a/testdata/vectors/profile_quicknet.json b/testdata/vectors/profile_quicknet.json index ff60352..de68fdf 100644 --- a/testdata/vectors/profile_quicknet.json +++ b/testdata/vectors/profile_quicknet.json @@ -1,5 +1,5 @@ { - "spec": "0.10", + "spec": "0.11", "description": "Quicknet Provider Profile V1: exact Deterministic CBOR and profile_hash (spec §11, §12, §75 item 2), generated by the reference implementation.", "profile_id": "datekeys:quicknet:v1", "provider": "drand", diff --git a/testdata/vectors/quicknet_rounds.json b/testdata/vectors/quicknet_rounds.json index 84d73f1..20c2ddc 100644 --- a/testdata/vectors/quicknet_rounds.json +++ b/testdata/vectors/quicknet_rounds.json @@ -1,5 +1,5 @@ { - "spec": "0.10", + "spec": "0.11", "profile": "datekeys:quicknet:v1", "description": "Quicknet date to round resolution (spec §15, §16, §65), generated by the reference implementation.", "vectors": [ diff --git a/testdata/vectors/security.json b/testdata/vectors/security.json index 4f0f92b..640137d 100644 --- a/testdata/vectors/security.json +++ b/testdata/vectors/security.json @@ -1,5 +1,5 @@ { - "spec": "0.10", + "spec": "0.11", "description": "SECURITY_CBOR of format 3, exactly its SECURITY_LEN bytes, and the verdicts of the signature and of the seal (spec §29.3, §29.7), generated by the reference implementation, which implements no alg and no seal_type. See testdata/README.md.", "vectors": [ { diff --git a/testdata/vectors/security_cms.json b/testdata/vectors/security_cms.json new file mode 100644 index 0000000..74f8958 --- /dev/null +++ b/testdata/vectors/security_cms.json @@ -0,0 +1,349 @@ +{ + "description": "SECURITY_CBOR with an author signature of alg 2 or a time seal of seal_type 2, its context and the verdicts of spec v0.11 29.7, 29.10 and 29.11. Certificates and tokens are made once with test keys and the file is frozen. See testdata/README.md.", + "spec": "0.11", + "cases": [ + { + "name": "alg 2: two signers, each sealed before the round time", + "security_cbor": "a30071646174656b6579732d7365637572697479010102590f61a3000201584582582013c811b56e109e9ce48cd885cd2686750c380fde4bbd887399239d013d70c8cc582046218f3323671ebac0c2383e2382322e0a05624f864841d69933d9651b76113902590f1230820f0e06092a864886f70d010702a0820eff30820efb020101310d300b0609608648016503040201300b06092a864886f70d010701a0820486308201783082011da0030201020208399eb3a7749a61f6300a06082a8648ce3d040302302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a301e170d3230303130313030303030305a170d3430303130313030303030305a302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a3059301306072a8648ce3d020106082a8648ce3d030107034200049ba7f4999209b8a6d393b928bbd84aae10eefcda758b94ac9a171c3f8059a065bdd433cfd9da5789f85d9a3be45a73bc5f1308c0991b2fd5cec0b11fa27d7eeea3273025300e0603551d0f0101ff04040302078030130603551d0e040c040a416e61204cc3b370657a300a06082a8648ce3d0403020349003046022100871158b887973e04034747995358dea51032602153b05e6bf5cf1b8778d0a623022100be16176bd54cab25f50e34ed130d6324c43f7f1d775f307a28a8b8f2109791e430820306308201eea0030201020208193a2a79e27fbc66300d06092a864886f70d01010b0500302e31163014060355040a130d446174654b65797320746573743114301206035504030c0b4c7569732047c3b36d657a301e170d3230303130313030303030305a170d3430303130313030303030305a302e31163014060355040a130d446174654b65797320746573743114301206035504030c0b4c7569732047c3b36d657a30820122300d06092a864886f70d01010105000382010f003082010a0282010100e3755ca7fd01a67483239a8cf4ed8c0046683ce30f7ff4b1850d9fb62775a9317ed98ef3655024ff23da46fd710cfb864146d87fb43b3cb77f910bddfbb84c2d26d74ca4059002e3bbfcc5322d03201b1fa9314edc683cb267b7ffb7c3cae0784b6c7ded5211c7ed2ce59f4412f5a709d9549303f5235aca2c4e15512a7daa45d360d75f6aaa112eae1218329fb370d411d39785254d1f034751c940bf01876e0abee9dcf28bd7fe9864b9587848bdf606b5b9ba2f2ead6ae0e7bb28f2c3a727aa4d358af65d6a0e1251258184f6fc5bc2e4211fc5d84cdfc7f8b82a1a3c7ea44be1f4e475d6f3f6fef80459d97481fe89e6b9320c1b47916722293bca3241e90203010001a3283026300e0603551d0f0101ff04040302078030140603551d0e040d040b4c7569732047c3b36d657a300d06092a864886f70d01010b050003820101003c5778f609c3e7755e03614c0d14720257e98aca07dd96cad905cc9c0ecf07baf165844fbb75f075821a385259e9341347d54065d02504bed0d1481dcb349144e9a859f4105e16ce37b3aba616a086051cf6df62d7736c286ca3c9bd220ef7a0619ecb8cea10ae0253911922ed5efdddaa0105b231782d5529dc59749665439c2b213897706ae621120dfb449576a10ecf43e87a175a7f737f1fecdbd3b89ba3e7f29553b515c6a632136b70ebac0b2015cce0931dc3f548bf51ec10a6ac9dbe9c757505ec3a8effe70d862d912210f28ff5f4a25a8d6b862db9a784d78ad2324d0abd5b6b4dd4524469549b2098834491385ff8dfd11345790a1610bbb48e2d31820a4e308204c30201013039302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a0208399eb3a7749a61f6300b0609608648016503040201a08184301806092a864886f70d010903310b06092a864886f70d010701302f06092a864886f70d01090431220420e243989a6cc0f8dd3048764de75c6849ea1dde4e74226f09bf6c182c449a3a493037060b2a864886f70d010910022f3128302630243022042013c811b56e109e9ce48cd885cd2686750c380fde4bbd887399239d013d70c8cc300a06082a8648ce3d04030204473045022100e985ff316ee456c61378ea1ea48c67da0dfa3bb71be5a252f372d24850a71d5d02204ac5759b9daab6efa5a1d3864db7747a9d3daa55bdaaf0e15305f7d21bd19d03a182039830820394060b2a864886f70d010910020e318203833082037f06092a864886f70d010702a08203703082036c020101310d300b06096086480165030402013065060b2a864886f70d0109100104a0560454305202010106032a0304302f300b06096086480165030402010420e976abf3318fce3ff4fea8cdbd2b92aea1544e560de862b3e2c90dcd2b83cbaa02012a180f32303236303933303132303030305a3003020101a08201b8308201b430820159a003020102020816b536ff6d9413dc300a06082a8648ce3d040302304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261301e170d3230303130313030303030305a170d3430303130313030303030305a304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562613059301306072a8648ce3d020106082a8648ce3d030107034200044430921fc91a68617c785dbc7c013ede1800b37704747bd9b7280e20e475251cca9f1799b84f3cc4cf4640590697e4c425fde6329b1878f7198e91ca9fafd9e7a33b3039300e0603551d0f0101ff04040302078030270603551d0e0420041e4175746f72696461642064652053656c6c61646f20646520707275656261300a06082a8648ce3d0403020349003046022100b26b717908be147fccbe24182e8c0072e920af74fd217c818ee34950d3a8aa41022100a6d042065cc3048680da599203465f7ac6322d76a8409dfc9c79435a72c2a30a318201333082012f020101304d304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261020816b536ff6d9413dc300b0609608648016503040201a07a301a06092a864886f70d010903310d060b2a864886f70d0109100104302b060b2a864886f70d010910020c311c301a301830160414f4b0c8ba1da2495736b3b8ebba20262ca957c5bd302f06092a864886f70d010904312204209d0a3a3e4112f315d650b827cc04b4a9b631201488076f91d605914108ba9d09300a06082a8648ce3d040302044630440220141c329e9fb6079d97ccbd69f3bf737ff466c4b2dcd36727d6193089338f18d302203e9e317eaec54f7716d78905663f287595cd3bbf8c0570c30f505b5b4ea2f9bf30820583020101303a302e31163014060355040a130d446174654b65797320746573743114301206035504030c0b4c7569732047c3b36d657a0208193a2a79e27fbc66300b0609608648016503040201a08184301806092a864886f70d010903310b06092a864886f70d010701302f06092a864886f70d01090431220420e243989a6cc0f8dd3048764de75c6849ea1dde4e74226f09bf6c182c449a3a493037060b2a864886f70d010910022f3128302630243022042046218f3323671ebac0c2383e2382322e0a05624f864841d69933d9651b761139300d06092a864886f70d01010105000482010008cd9f2444946f21c6027271b61ab2a978c16103f32afd8e108ef61766a500e13fb93a17b0514e843559ab3ac97f4203bc019f048e9219f2005c0c5dd8226743cc5b28a266693700f580d04802acba95a71c57f408524737d42c08f2df0b282ad57dd940788902b49e1e3aad5434b381181b575f689eb4e67f3d6c9f6af66b87821529b30ddacaaef7cd9ed7ee20907eadddf1ceb7f35f31e1c7e5b0c52cf2c0dda17f0fee656e2bffdb3d571642d10e7e76fce44f9b8810ddf89ae0b5bb3114ec39ccdc6a72d248fb55040a29c10b854c79893195560359c1a369f2d81c5507850717e7a69921d34283365216dab0e8d9fdb55cbd985934754ca6ca435bb356a182039930820395060b2a864886f70d010910020e318203843082038006092a864886f70d010702a08203713082036d020101310d300b06096086480165030402013065060b2a864886f70d0109100104a0560454305202010106032a0304302f300b060960864801650304020104203133909689be7b6e7f3a635f7628c1dd502b72b770090e5484b9a30563b9579302012a180f32303236303933303132303030305a3003020101a08201b8308201b430820159a003020102020816b536ff6d9413dc300a06082a8648ce3d040302304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261301e170d3230303130313030303030305a170d3430303130313030303030305a304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562613059301306072a8648ce3d020106082a8648ce3d030107034200044430921fc91a68617c785dbc7c013ede1800b37704747bd9b7280e20e475251cca9f1799b84f3cc4cf4640590697e4c425fde6329b1878f7198e91ca9fafd9e7a33b3039300e0603551d0f0101ff04040302078030270603551d0e0420041e4175746f72696461642064652053656c6c61646f20646520707275656261300a06082a8648ce3d0403020349003046022100b26b717908be147fccbe24182e8c0072e920af74fd217c818ee34950d3a8aa41022100a6d042065cc3048680da599203465f7ac6322d76a8409dfc9c79435a72c2a30a3182013430820130020101304d304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261020816b536ff6d9413dc300b0609608648016503040201a07a301a06092a864886f70d010903310d060b2a864886f70d0109100104302b060b2a864886f70d010910020c311c301a301830160414f4b0c8ba1da2495736b3b8ebba20262ca957c5bd302f06092a864886f70d0109043122042002c0ae1862d888d856794a82163f419ffa4eb371ceea06e3ac96d088e2e99b71300a06082a8648ce3d0403020447304502202bf0294f2c65f11243655691bfda067e717feab0cc7a94ee8a2996c89d6f6b34022100afabbc3e20527df993f954c9dbf756f1b2a8fa0552fe4d9605152f0d5f8e0ad2", + "context": { + "control_commit": "0fcd568a5cb9bdb4677b69354b11ee415af8f784519cff3da49a26f84eaee7f2", + "head_digest": "9f2e6d33a3717ee826353a404ba4618d1aeeb6879ad7936bce8ed5f46814924d", + "round_time": "2030-01-01T00:00:00Z" + }, + "signature": "F6", + "seal": "S0", + "signers": [ + { + "holder": "Ana López", + "issuer": "Ana López", + "result": "valid", + "seal_time": "2026-09-30T12:00:00Z", + "before_round_time": true + }, + { + "holder": "Luis Gómez", + "issuer": "Luis Gómez", + "result": "valid", + "seal_time": "2026-09-30T12:00:00Z", + "before_round_time": true + } + ] + }, + { + "name": "alg 2: a seal after the round time proves nothing before it", + "security_cbor": "a30071646174656b6579732d73656375726974790101025906b0a3000201582381582013c811b56e109e9ce48cd885cd2686750c380fde4bbd887399239d013d70c8cc025906833082067f06092a864886f70d010702a08206703082066c020101310d300b0609608648016503040201300b06092a864886f70d010701a082017c308201783082011da0030201020208399eb3a7749a61f6300a06082a8648ce3d040302302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a301e170d3230303130313030303030305a170d3430303130313030303030305a302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a3059301306072a8648ce3d020106082a8648ce3d030107034200049ba7f4999209b8a6d393b928bbd84aae10eefcda758b94ac9a171c3f8059a065bdd433cfd9da5789f85d9a3be45a73bc5f1308c0991b2fd5cec0b11fa27d7eeea3273025300e0603551d0f0101ff04040302078030130603551d0e040c040a416e61204cc3b370657a300a06082a8648ce3d0403020349003046022100871158b887973e04034747995358dea51032602153b05e6bf5cf1b8778d0a623022100be16176bd54cab25f50e34ed130d6324c43f7f1d775f307a28a8b8f2109791e4318204c9308204c50201013039302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a0208399eb3a7749a61f6300b0609608648016503040201a08184301806092a864886f70d010903310b06092a864886f70d010701302f06092a864886f70d010904312204208a0a6d927c8efe36ab066eaa1321276832694a7d36b38e01786e2fca1ba4387d3037060b2a864886f70d010910022f3128302630243022042013c811b56e109e9ce48cd885cd2686750c380fde4bbd887399239d013d70c8cc300a06082a8648ce3d04030204473045022100f4e2b82dc6b1429bb433247b34fb25a907a086ae34b602f65bf84c419b14bbec02203fd119c23b1dc005258bfb0d16ef7efc487f948e9dc7b9b6d7b5d33eb6aac167a182039a30820396060b2a864886f70d010910020e318203853082038106092a864886f70d010702a08203723082036e020101310d300b06096086480165030402013065060b2a864886f70d0109100104a0560454305202010106032a0304302f300b060960864801650304020104203fa6e3f4031d5ad633dce60408c4c63aafb6af2d65f7a0cebb9f286c8c961d3e02012a180f32303330303130313031303030305a3003020101a08201b8308201b430820159a003020102020816b536ff6d9413dc300a06082a8648ce3d040302304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261301e170d3230303130313030303030305a170d3430303130313030303030305a304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562613059301306072a8648ce3d020106082a8648ce3d030107034200044430921fc91a68617c785dbc7c013ede1800b37704747bd9b7280e20e475251cca9f1799b84f3cc4cf4640590697e4c425fde6329b1878f7198e91ca9fafd9e7a33b3039300e0603551d0f0101ff04040302078030270603551d0e0420041e4175746f72696461642064652053656c6c61646f20646520707275656261300a06082a8648ce3d0403020349003046022100b26b717908be147fccbe24182e8c0072e920af74fd217c818ee34950d3a8aa41022100a6d042065cc3048680da599203465f7ac6322d76a8409dfc9c79435a72c2a30a3182013530820131020101304d304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261020816b536ff6d9413dc300b0609608648016503040201a07a301a06092a864886f70d010903310d060b2a864886f70d0109100104302b060b2a864886f70d010910020c311c301a301830160414f4b0c8ba1da2495736b3b8ebba20262ca957c5bd302f06092a864886f70d01090431220420acc298b6d7077397d13950532815d76c9b30a39aaf67312f460f77550a67ab54300a06082a8648ce3d04030204483046022100e265c660c3bb8be16a524b8e8bd7849f45c0101ec5ae9a3f94605c3b095e8fb9022100c616fb16ad2a70bcc30b34ccb6dbb598a3a415472106d449c29f207537e93f8f", + "context": { + "control_commit": "0fcd568a5cb9bdb4677b69354b11ee415af8f784519cff3da49a26f84eaee7f2", + "head_digest": "9f2e6d33a3717ee826353a404ba4618d1aeeb6879ad7936bce8ed5f46814924d", + "round_time": "2030-01-01T00:00:00Z" + }, + "signature": "F6", + "seal": "S0", + "signers": [ + { + "holder": "Ana López", + "issuer": "Ana López", + "result": "valid", + "seal_time": "2030-01-01T01:00:00Z", + "before_round_time": false + } + ] + }, + { + "name": "alg 2: a signer who is not required shows apart", + "security_cbor": "a30071646174656b6579732d7365637572697479010102590d37a3000201582381582013c811b56e109e9ce48cd885cd2686750c380fde4bbd887399239d013d70c8cc02590d0a30820d0606092a864886f70d010702a0820cf730820cf3020101310d300b0609608648016503040201300b06092a864886f70d010701a0820323308201783082011da0030201020208399eb3a7749a61f6300a06082a8648ce3d040302302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a301e170d3230303130313030303030305a170d3430303130313030303030305a302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a3059301306072a8648ce3d020106082a8648ce3d030107034200049ba7f4999209b8a6d393b928bbd84aae10eefcda758b94ac9a171c3f8059a065bdd433cfd9da5789f85d9a3be45a73bc5f1308c0991b2fd5cec0b11fa27d7eeea3273025300e0603551d0f0101ff04040302078030130603551d0e040c040a416e61204cc3b370657a300a06082a8648ce3d0403020349003046022100871158b887973e04034747995358dea51032602153b05e6bf5cf1b8778d0a623022100be16176bd54cab25f50e34ed130d6324c43f7f1d775f307a28a8b8f2109791e4308201a330820128a003020102020835a4deccdaab6ba3300a06082a8648ce3d040303302731163014060355040a130d446174654b6579732074657374310d300b060355040313044f74726f301e170d3230303130313030303030305a170d3430303130313030303030305a302731163014060355040a130d446174654b6579732074657374310d300b060355040313044f74726f3076301006072a8648ce3d020106052b81040022036200043385b3174e9de495aad288fd3549a386e2187016abdfbc3deb2f2ed314c72eb6dd930cd70aa5c1d7137bf4e66fd459874b391883d01c0d53815dfe7fa2fbf291f64972d69b8a9d81e172cb78ac6d353e54a097d8f07112950f85cc2c140fea1ea321301f300e0603551d0f0101ff040403020780300d0603551d0e040604044f74726f300a06082a8648ce3d0403030369003066023100d171c2da04ba594e86a73a57adbd9b20f75d8785464b718334adbfa5bb268812ee6f881b96dbd12172fda26ce2213e2e023100fb198badb7b2fa34ff4d71c689c453e0ba93ea31192b6bb486be6385718ef7b95933af58748ad2a5e998214a527c2a92318209a9308204c30201013039302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a0208399eb3a7749a61f6300b0609608648016503040201a08184301806092a864886f70d010903310b06092a864886f70d010701302f06092a864886f70d010904312204208a0a6d927c8efe36ab066eaa1321276832694a7d36b38e01786e2fca1ba4387d3037060b2a864886f70d010910022f3128302630243022042013c811b56e109e9ce48cd885cd2686750c380fde4bbd887399239d013d70c8cc300a06082a8648ce3d04030204473045022100e7458b88374bd0ca99f4b2b443bc82ffac1718c5aa2d8aef2d381e665e2f2314022076ada20a1e1181febe5c531f34a05f98594b2c072f45c0c52ea4c34fcbf18640a182039830820394060b2a864886f70d010910020e318203833082037f06092a864886f70d010702a08203703082036c020101310d300b06096086480165030402013065060b2a864886f70d0109100104a0560454305202010106032a0304302f300b060960864801650304020104204997b27370ce829613415dfa4dc4edb0e309cf1c166c2c94fb4a839020a496ce02012a180f32303236303933303132303030305a3003020101a08201b8308201b430820159a003020102020816b536ff6d9413dc300a06082a8648ce3d040302304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261301e170d3230303130313030303030305a170d3430303130313030303030305a304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562613059301306072a8648ce3d020106082a8648ce3d030107034200044430921fc91a68617c785dbc7c013ede1800b37704747bd9b7280e20e475251cca9f1799b84f3cc4cf4640590697e4c425fde6329b1878f7198e91ca9fafd9e7a33b3039300e0603551d0f0101ff04040302078030270603551d0e0420041e4175746f72696461642064652053656c6c61646f20646520707275656261300a06082a8648ce3d0403020349003046022100b26b717908be147fccbe24182e8c0072e920af74fd217c818ee34950d3a8aa41022100a6d042065cc3048680da599203465f7ac6322d76a8409dfc9c79435a72c2a30a318201333082012f020101304d304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261020816b536ff6d9413dc300b0609608648016503040201a07a301a06092a864886f70d010903310d060b2a864886f70d0109100104302b060b2a864886f70d010910020c311c301a301830160414f4b0c8ba1da2495736b3b8ebba20262ca957c5bd302f06092a864886f70d0109043122042075eadf0db2015273d67c2bc8a6649061d1275903fe2fa96e17bc60ff4490fdb0300a06082a8648ce3d0403020446304402206361a04ec1f1142b6ee695db78dfad8bd6abe1012ef294b10fa768e20f9b9d8f022038c21706cb8f1d59af7ea3096ac1560077d8882b8bf929f169928341fef7a805308204de0201013033302731163014060355040a130d446174654b6579732074657374310d300b060355040313044f74726f020835a4deccdaab6ba3300b0609608648016503040201a08184301806092a864886f70d010903310b06092a864886f70d010701302f06092a864886f70d010904312204208a0a6d927c8efe36ab066eaa1321276832694a7d36b38e01786e2fca1ba4387d3037060b2a864886f70d010910022f3128302630243022042088dce787be2d37c7b7b8be2a37e7268b20d60f98cd2e69431bf660619ae1bf59300a06082a8648ce3d04030204673065023100e9b4dff00534a57117ddb1e618364ecd99bc49acc15f430cd580931bef35658c583827941b1a90679cc2de9dd215c16d023004858dba8c4f71f0dcca26f4b48cb8c549273905c5e0e9acc1ee21b02abc9277f65202f92ba4e80206bfaaff2b799238a182039930820395060b2a864886f70d010910020e318203843082038006092a864886f70d010702a08203713082036d020101310d300b06096086480165030402013065060b2a864886f70d0109100104a0560454305202010106032a0304302f300b060960864801650304020104201d41f0fd23c7965e32d4dadbb85e6f8132c2174442a93442b7b01b9a284ddfdf02012a180f32303236303933303132303030305a3003020101a08201b8308201b430820159a003020102020816b536ff6d9413dc300a06082a8648ce3d040302304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261301e170d3230303130313030303030305a170d3430303130313030303030305a304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562613059301306072a8648ce3d020106082a8648ce3d030107034200044430921fc91a68617c785dbc7c013ede1800b37704747bd9b7280e20e475251cca9f1799b84f3cc4cf4640590697e4c425fde6329b1878f7198e91ca9fafd9e7a33b3039300e0603551d0f0101ff04040302078030270603551d0e0420041e4175746f72696461642064652053656c6c61646f20646520707275656261300a06082a8648ce3d0403020349003046022100b26b717908be147fccbe24182e8c0072e920af74fd217c818ee34950d3a8aa41022100a6d042065cc3048680da599203465f7ac6322d76a8409dfc9c79435a72c2a30a3182013430820130020101304d304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261020816b536ff6d9413dc300b0609608648016503040201a07a301a06092a864886f70d010903310d060b2a864886f70d0109100104302b060b2a864886f70d010910020c311c301a301830160414f4b0c8ba1da2495736b3b8ebba20262ca957c5bd302f06092a864886f70d01090431220420f386d364fed4b4c3d4a2a0cc1d15fe9698f0c336a81dd847e13af387291d3218300a06082a8648ce3d040302044730450221008cd1e5b7216fd5865ae9ca2f58007b115ef41f871efe25fee66a71f152c4c7c102201cd7968a591709b980c1c18cc16a31c545efd5da054f5d2554be217cd4d4dae0", + "context": { + "control_commit": "0fcd568a5cb9bdb4677b69354b11ee415af8f784519cff3da49a26f84eaee7f2", + "head_digest": "9f2e6d33a3717ee826353a404ba4618d1aeeb6879ad7936bce8ed5f46814924d", + "round_time": "2030-01-01T00:00:00Z" + }, + "signature": "F6", + "seal": "S0", + "signers": [ + { + "holder": "Ana López", + "issuer": "Ana López", + "result": "valid", + "seal_time": "2026-09-30T12:00:00Z", + "before_round_time": true + } + ], + "foreign_signers": [ + { + "holder": "Otro", + "issuer": "Otro", + "result": "valid", + "seal_time": "2026-09-30T12:00:00Z", + "before_round_time": true + } + ] + }, + { + "name": "alg 2: a required signer is absent", + "security_cbor": "a30071646174656b6579732d73656375726974790101025906d0a3000201584582582013c811b56e109e9ce48cd885cd2686750c380fde4bbd887399239d013d70c8cc582046218f3323671ebac0c2383e2382322e0a05624f864841d69933d9651b761139025906813082067d06092a864886f70d010702a082066e3082066a020101310d300b0609608648016503040201300b06092a864886f70d010701a082017c308201783082011da0030201020208399eb3a7749a61f6300a06082a8648ce3d040302302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a301e170d3230303130313030303030305a170d3430303130313030303030305a302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a3059301306072a8648ce3d020106082a8648ce3d030107034200049ba7f4999209b8a6d393b928bbd84aae10eefcda758b94ac9a171c3f8059a065bdd433cfd9da5789f85d9a3be45a73bc5f1308c0991b2fd5cec0b11fa27d7eeea3273025300e0603551d0f0101ff04040302078030130603551d0e040c040a416e61204cc3b370657a300a06082a8648ce3d0403020349003046022100871158b887973e04034747995358dea51032602153b05e6bf5cf1b8778d0a623022100be16176bd54cab25f50e34ed130d6324c43f7f1d775f307a28a8b8f2109791e4318204c7308204c30201013039302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a0208399eb3a7749a61f6300b0609608648016503040201a08184301806092a864886f70d010903310b06092a864886f70d010701302f06092a864886f70d01090431220420e243989a6cc0f8dd3048764de75c6849ea1dde4e74226f09bf6c182c449a3a493037060b2a864886f70d010910022f3128302630243022042013c811b56e109e9ce48cd885cd2686750c380fde4bbd887399239d013d70c8cc300a06082a8648ce3d04030204463044022030e89724e9a7bc7742c3070ea844c8c6135fc2f1f090ff02d4b8e013787f748a02202d7e5a32fa3be2e4497b868bdbea7dc74cea338e9af063796a16f58b592f8c9ea182039930820395060b2a864886f70d010910020e318203843082038006092a864886f70d010702a08203713082036d020101310d300b06096086480165030402013065060b2a864886f70d0109100104a0560454305202010106032a0304302f300b06096086480165030402010420d978156a516b3550c5c59d8f842ae75f4b086e551f91176ba97a3c5b1a9de88102012a180f32303236303933303132303030305a3003020101a08201b8308201b430820159a003020102020816b536ff6d9413dc300a06082a8648ce3d040302304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261301e170d3230303130313030303030305a170d3430303130313030303030305a304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562613059301306072a8648ce3d020106082a8648ce3d030107034200044430921fc91a68617c785dbc7c013ede1800b37704747bd9b7280e20e475251cca9f1799b84f3cc4cf4640590697e4c425fde6329b1878f7198e91ca9fafd9e7a33b3039300e0603551d0f0101ff04040302078030270603551d0e0420041e4175746f72696461642064652053656c6c61646f20646520707275656261300a06082a8648ce3d0403020349003046022100b26b717908be147fccbe24182e8c0072e920af74fd217c818ee34950d3a8aa41022100a6d042065cc3048680da599203465f7ac6322d76a8409dfc9c79435a72c2a30a3182013430820130020101304d304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261020816b536ff6d9413dc300b0609608648016503040201a07a301a06092a864886f70d010903310d060b2a864886f70d0109100104302b060b2a864886f70d010910020c311c301a301830160414f4b0c8ba1da2495736b3b8ebba20262ca957c5bd302f06092a864886f70d0109043122042042f3033bb9a81c0ed2dd9c2f2b07a99c2278d32eeeaafc2eb6fd1545090e8a26300a06082a8648ce3d04030204473045022100cf6c1039534dd01fee54a21ba821557991d573eb63bb1b1aae7738bb40acf08502207225a9f503c13c87b958ee8d83776e621da7b6cadd14c4fd4631d562b4ff1d7c", + "context": { + "control_commit": "0fcd568a5cb9bdb4677b69354b11ee415af8f784519cff3da49a26f84eaee7f2", + "head_digest": "9f2e6d33a3717ee826353a404ba4618d1aeeb6879ad7936bce8ed5f46814924d", + "round_time": "2030-01-01T00:00:00Z" + }, + "signature": "F5", + "seal": "S0", + "signers": [ + { + "holder": "Ana López", + "issuer": "Ana López", + "result": "valid", + "seal_time": "2026-09-30T12:00:00Z", + "before_round_time": true + }, + { + "holder": "46218f3323671ebac0c2383e2382322e0a05624f864841d69933d9651b761139", + "issuer": "", + "result": "absent", + "before_round_time": false + } + ] + }, + { + "name": "alg 2: no seal", + "security_cbor": "a30071646174656b6579732d7365637572697479010102590311a3000201582381582013c811b56e109e9ce48cd885cd2686750c380fde4bbd887399239d013d70c8cc025902e4308202e006092a864886f70d010702a08202d1308202cd020101310d300b0609608648016503040201300b06092a864886f70d010701a082017c308201783082011da0030201020208399eb3a7749a61f6300a06082a8648ce3d040302302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a301e170d3230303130313030303030305a170d3430303130313030303030305a302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a3059301306072a8648ce3d020106082a8648ce3d030107034200049ba7f4999209b8a6d393b928bbd84aae10eefcda758b94ac9a171c3f8059a065bdd433cfd9da5789f85d9a3be45a73bc5f1308c0991b2fd5cec0b11fa27d7eeea3273025300e0603551d0f0101ff04040302078030130603551d0e040c040a416e61204cc3b370657a300a06082a8648ce3d0403020349003046022100871158b887973e04034747995358dea51032602153b05e6bf5cf1b8778d0a623022100be16176bd54cab25f50e34ed130d6324c43f7f1d775f307a28a8b8f2109791e43182012a308201260201013039302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a0208399eb3a7749a61f6300b0609608648016503040201a08184301806092a864886f70d010903310b06092a864886f70d010701302f06092a864886f70d010904312204208a0a6d927c8efe36ab066eaa1321276832694a7d36b38e01786e2fca1ba4387d3037060b2a864886f70d010910022f3128302630243022042013c811b56e109e9ce48cd885cd2686750c380fde4bbd887399239d013d70c8cc300a06082a8648ce3d0403020446304402202405ddf8c290eca0488e097209f2b5d4fd00ef228bcf2dfacdd21620614de47d022069ae19a347d757338f52b04e0dff7c199a03f229e03fe60e5c04c61be7d346ac", + "context": { + "control_commit": "0fcd568a5cb9bdb4677b69354b11ee415af8f784519cff3da49a26f84eaee7f2", + "head_digest": "9f2e6d33a3717ee826353a404ba4618d1aeeb6879ad7936bce8ed5f46814924d", + "round_time": "2030-01-01T00:00:00Z" + }, + "signature": "F5", + "seal": "S0", + "signers": [ + { + "holder": "Ana López", + "issuer": "Ana López", + "result": "without seal", + "before_round_time": false + } + ] + }, + { + "name": "alg 2: a seal from before the certificate was valid", + "security_cbor": "a30071646174656b6579732d73656375726974790101025906b0a3000201582381582013c811b56e109e9ce48cd885cd2686750c380fde4bbd887399239d013d70c8cc025906833082067f06092a864886f70d010702a08206703082066c020101310d300b0609608648016503040201300b06092a864886f70d010701a082017c308201783082011da0030201020208399eb3a7749a61f6300a06082a8648ce3d040302302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a301e170d3230303130313030303030305a170d3430303130313030303030305a302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a3059301306072a8648ce3d020106082a8648ce3d030107034200049ba7f4999209b8a6d393b928bbd84aae10eefcda758b94ac9a171c3f8059a065bdd433cfd9da5789f85d9a3be45a73bc5f1308c0991b2fd5cec0b11fa27d7eeea3273025300e0603551d0f0101ff04040302078030130603551d0e040c040a416e61204cc3b370657a300a06082a8648ce3d0403020349003046022100871158b887973e04034747995358dea51032602153b05e6bf5cf1b8778d0a623022100be16176bd54cab25f50e34ed130d6324c43f7f1d775f307a28a8b8f2109791e4318204c9308204c50201013039302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a0208399eb3a7749a61f6300b0609608648016503040201a08184301806092a864886f70d010903310b06092a864886f70d010701302f06092a864886f70d010904312204208a0a6d927c8efe36ab066eaa1321276832694a7d36b38e01786e2fca1ba4387d3037060b2a864886f70d010910022f3128302630243022042013c811b56e109e9ce48cd885cd2686750c380fde4bbd887399239d013d70c8cc300a06082a8648ce3d04030204483046022100a53ff1be1b099213410faaf5d129f313f3805943b0ca9a91548095523e3e6ab40221008f2f80658797162a7635698ae27d641099a2a56a704518c39a7457943cc0307da182039930820395060b2a864886f70d010910020e318203843082038006092a864886f70d010702a08203713082036d020101310d300b06096086480165030402013065060b2a864886f70d0109100104a0560454305202010106032a0304302f300b06096086480165030402010420ac6338330973f43870125e217bb36d225633fc89616b39f9ed38d320c383f89102012a180f32303139303130313030303030305a3003020101a08201b8308201b430820159a003020102020816b536ff6d9413dc300a06082a8648ce3d040302304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261301e170d3230303130313030303030305a170d3430303130313030303030305a304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562613059301306072a8648ce3d020106082a8648ce3d030107034200044430921fc91a68617c785dbc7c013ede1800b37704747bd9b7280e20e475251cca9f1799b84f3cc4cf4640590697e4c425fde6329b1878f7198e91ca9fafd9e7a33b3039300e0603551d0f0101ff04040302078030270603551d0e0420041e4175746f72696461642064652053656c6c61646f20646520707275656261300a06082a8648ce3d0403020349003046022100b26b717908be147fccbe24182e8c0072e920af74fd217c818ee34950d3a8aa41022100a6d042065cc3048680da599203465f7ac6322d76a8409dfc9c79435a72c2a30a3182013430820130020101304d304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261020816b536ff6d9413dc300b0609608648016503040201a07a301a06092a864886f70d010903310d060b2a864886f70d0109100104302b060b2a864886f70d010910020c311c301a301830160414f4b0c8ba1da2495736b3b8ebba20262ca957c5bd302f06092a864886f70d0109043122042000ffc82983ab7841e9c7c7221c7df79d31f4d835953932a940efd1c4e38a1165300a06082a8648ce3d0403020447304502207264362223b28bd85933b98a7320b68d5221c78078f4e410d8d5ab26a96162c7022100f2b315a3fccf8b533d430c8722cbac202f59391b521d4b329e6471ddbda9aa95", + "context": { + "control_commit": "0fcd568a5cb9bdb4677b69354b11ee415af8f784519cff3da49a26f84eaee7f2", + "head_digest": "9f2e6d33a3717ee826353a404ba4618d1aeeb6879ad7936bce8ed5f46814924d", + "round_time": "2030-01-01T00:00:00Z" + }, + "signature": "F5", + "seal": "S0", + "signers": [ + { + "holder": "Ana López", + "issuer": "Ana López", + "result": "invalid seal", + "before_round_time": false + } + ] + }, + { + "name": "alg 2: a key 3 beside it", + "security_cbor": "a40071646174656b6579732d73656375726974790101025906aea3000201582381582013c811b56e109e9ce48cd885cd2686750c380fde4bbd887399239d013d70c8cc025906813082067d06092a864886f70d010702a082066e3082066a020101310d300b0609608648016503040201300b06092a864886f70d010701a082017c308201783082011da0030201020208399eb3a7749a61f6300a06082a8648ce3d040302302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a301e170d3230303130313030303030305a170d3430303130313030303030305a302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a3059301306072a8648ce3d020106082a8648ce3d030107034200049ba7f4999209b8a6d393b928bbd84aae10eefcda758b94ac9a171c3f8059a065bdd433cfd9da5789f85d9a3be45a73bc5f1308c0991b2fd5cec0b11fa27d7eeea3273025300e0603551d0f0101ff04040302078030130603551d0e040c040a416e61204cc3b370657a300a06082a8648ce3d0403020349003046022100871158b887973e04034747995358dea51032602153b05e6bf5cf1b8778d0a623022100be16176bd54cab25f50e34ed130d6324c43f7f1d775f307a28a8b8f2109791e4318204c7308204c30201013039302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a0208399eb3a7749a61f6300b0609608648016503040201a08184301806092a864886f70d010903310b06092a864886f70d010701302f06092a864886f70d010904312204208a0a6d927c8efe36ab066eaa1321276832694a7d36b38e01786e2fca1ba4387d3037060b2a864886f70d010910022f3128302630243022042013c811b56e109e9ce48cd885cd2686750c380fde4bbd887399239d013d70c8cc300a06082a8648ce3d0403020447304502210088b768db47d80f09500a967980ad2ac0a2eb82f458777e891f593e34cc14d0820220659290ece942794938661a0484c3bd5b0530b42344b0bdc01312980c5ba3fbcea182039830820394060b2a864886f70d010910020e318203833082037f06092a864886f70d010702a08203703082036c020101310d300b06096086480165030402013065060b2a864886f70d0109100104a0560454305202010106032a0304302f300b06096086480165030402010420b4d58800f353fd51a2be33700e54876fefe6d247dbd0accc92f6397889a8ba4702012a180f32303236303933303132303030305a3003020101a08201b8308201b430820159a003020102020816b536ff6d9413dc300a06082a8648ce3d040302304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261301e170d3230303130313030303030305a170d3430303130313030303030305a304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562613059301306072a8648ce3d020106082a8648ce3d030107034200044430921fc91a68617c785dbc7c013ede1800b37704747bd9b7280e20e475251cca9f1799b84f3cc4cf4640590697e4c425fde6329b1878f7198e91ca9fafd9e7a33b3039300e0603551d0f0101ff04040302078030270603551d0e0420041e4175746f72696461642064652053656c6c61646f20646520707275656261300a06082a8648ce3d0403020349003046022100b26b717908be147fccbe24182e8c0072e920af74fd217c818ee34950d3a8aa41022100a6d042065cc3048680da599203465f7ac6322d76a8409dfc9c79435a72c2a30a318201333082012f020101304d304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261020816b536ff6d9413dc300b0609608648016503040201a07a301a06092a864886f70d010903310d060b2a864886f70d0109100104302b060b2a864886f70d010910020c311c301a301830160414f4b0c8ba1da2495736b3b8ebba20262ca957c5bd302f06092a864886f70d010904312204202a52076c932f135a14b86a88f42b66b77977d5b5d43cba3d115e89ee5fa1110b300a06082a8648ce3d0403020446304402206d1b9fb6d44839be881774b7498bb3b765666102095c3996e98e551f54f63bee0220190f2d2305c490196dd6a9b9bc348b6986f656434ba6b560e5dc55efd2084bd90346a20001014101", + "context": { + "control_commit": "0fcd568a5cb9bdb4677b69354b11ee415af8f784519cff3da49a26f84eaee7f2", + "head_digest": "9f2e6d33a3717ee826353a404ba4618d1aeeb6879ad7936bce8ed5f46814924d", + "round_time": "2030-01-01T00:00:00Z" + }, + "signature": "F5", + "seal": "S1", + "signers": [ + { + "holder": "Ana López", + "issuer": "Ana López", + "result": "valid", + "seal_time": "2026-09-30T12:00:00Z", + "before_round_time": true + } + ] + }, + { + "name": "alg 2: another head", + "security_cbor": "a30071646174656b6579732d73656375726974790101025906afa3000201582381582013c811b56e109e9ce48cd885cd2686750c380fde4bbd887399239d013d70c8cc025906823082067e06092a864886f70d010702a082066f3082066b020101310d300b0609608648016503040201300b06092a864886f70d010701a082017c308201783082011da0030201020208399eb3a7749a61f6300a06082a8648ce3d040302302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a301e170d3230303130313030303030305a170d3430303130313030303030305a302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a3059301306072a8648ce3d020106082a8648ce3d030107034200049ba7f4999209b8a6d393b928bbd84aae10eefcda758b94ac9a171c3f8059a065bdd433cfd9da5789f85d9a3be45a73bc5f1308c0991b2fd5cec0b11fa27d7eeea3273025300e0603551d0f0101ff04040302078030130603551d0e040c040a416e61204cc3b370657a300a06082a8648ce3d0403020349003046022100871158b887973e04034747995358dea51032602153b05e6bf5cf1b8778d0a623022100be16176bd54cab25f50e34ed130d6324c43f7f1d775f307a28a8b8f2109791e4318204c8308204c40201013039302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a0208399eb3a7749a61f6300b0609608648016503040201a08184301806092a864886f70d010903310b06092a864886f70d010701302f06092a864886f70d010904312204208a0a6d927c8efe36ab066eaa1321276832694a7d36b38e01786e2fca1ba4387d3037060b2a864886f70d010910022f3128302630243022042013c811b56e109e9ce48cd885cd2686750c380fde4bbd887399239d013d70c8cc300a06082a8648ce3d0403020446304402207a1647947225c8f411342b312c22561009adb7b7ce3302d76f98cc0820b143c002205010984a5c17f64b3f12548fed1cf39ec99926848dae4d68148a3edc9ff90203a182039a30820396060b2a864886f70d010910020e318203853082038106092a864886f70d010702a08203723082036e020101310d300b06096086480165030402013065060b2a864886f70d0109100104a0560454305202010106032a0304302f300b06096086480165030402010420635c606d8492e086879058d5ed73f29d342b9849792743228d08f00ebe4c81d102012a180f32303236303933303132303030305a3003020101a08201b8308201b430820159a003020102020816b536ff6d9413dc300a06082a8648ce3d040302304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261301e170d3230303130313030303030305a170d3430303130313030303030305a304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562613059301306072a8648ce3d020106082a8648ce3d030107034200044430921fc91a68617c785dbc7c013ede1800b37704747bd9b7280e20e475251cca9f1799b84f3cc4cf4640590697e4c425fde6329b1878f7198e91ca9fafd9e7a33b3039300e0603551d0f0101ff04040302078030270603551d0e0420041e4175746f72696461642064652053656c6c61646f20646520707275656261300a06082a8648ce3d0403020349003046022100b26b717908be147fccbe24182e8c0072e920af74fd217c818ee34950d3a8aa41022100a6d042065cc3048680da599203465f7ac6322d76a8409dfc9c79435a72c2a30a3182013530820131020101304d304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261020816b536ff6d9413dc300b0609608648016503040201a07a301a06092a864886f70d010903310d060b2a864886f70d0109100104302b060b2a864886f70d010910020c311c301a301830160414f4b0c8ba1da2495736b3b8ebba20262ca957c5bd302f06092a864886f70d010904312204204aa9eb4ecca82d42d6f3408fd0ee151cc773de1b32f642dfff5470c4f143a0ac300a06082a8648ce3d04030204483046022100ea89187fe24bbefcc313b9e666adbe7ae53c0a95d97ab3a43de657e308253d20022100ae8d4020e8db3e85da2a2591d9caeb1c0099521cd97535d4f0a851a1c0f53ac8", + "context": { + "control_commit": "0fcd568a5cb9bdb4677b69354b11ee415af8f784519cff3da49a26f84eaee7f2", + "head_digest": "9f2e6d33a3787ee826353a404ba4618d1aeeb6879ad7936bce8ed5f46814924d", + "round_time": "2030-01-01T00:00:00Z" + }, + "signature": "F2", + "seal": "S0", + "signers": [ + { + "holder": "Ana López", + "issuer": "Ana López", + "result": "invalid", + "before_round_time": false + } + ] + }, + { + "name": "alg 2: without the context of a capsule", + "security_cbor": "a30071646174656b6579732d73656375726974790101025906afa3000201582381582013c811b56e109e9ce48cd885cd2686750c380fde4bbd887399239d013d70c8cc025906823082067e06092a864886f70d010702a082066f3082066b020101310d300b0609608648016503040201300b06092a864886f70d010701a082017c308201783082011da0030201020208399eb3a7749a61f6300a06082a8648ce3d040302302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a301e170d3230303130313030303030305a170d3430303130313030303030305a302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a3059301306072a8648ce3d020106082a8648ce3d030107034200049ba7f4999209b8a6d393b928bbd84aae10eefcda758b94ac9a171c3f8059a065bdd433cfd9da5789f85d9a3be45a73bc5f1308c0991b2fd5cec0b11fa27d7eeea3273025300e0603551d0f0101ff04040302078030130603551d0e040c040a416e61204cc3b370657a300a06082a8648ce3d0403020349003046022100871158b887973e04034747995358dea51032602153b05e6bf5cf1b8778d0a623022100be16176bd54cab25f50e34ed130d6324c43f7f1d775f307a28a8b8f2109791e4318204c8308204c40201013039302d31163014060355040a130d446174654b65797320746573743113301106035504030c0a416e61204cc3b370657a0208399eb3a7749a61f6300b0609608648016503040201a08184301806092a864886f70d010903310b06092a864886f70d010701302f06092a864886f70d010904312204208a0a6d927c8efe36ab066eaa1321276832694a7d36b38e01786e2fca1ba4387d3037060b2a864886f70d010910022f3128302630243022042013c811b56e109e9ce48cd885cd2686750c380fde4bbd887399239d013d70c8cc300a06082a8648ce3d0403020447304502210098cce1331f2bcbeead0a8f72d10e370e88547acbb7a060774476fbbeefbcb4dd02203cc8ad8db9161990e9405998479d55122325b0d0aacf592db0a3489615244822a182039930820395060b2a864886f70d010910020e318203843082038006092a864886f70d010702a08203713082036d020101310d300b06096086480165030402013065060b2a864886f70d0109100104a0560454305202010106032a0304302f300b06096086480165030402010420dcd9f7eb86fc8586a0bb1f37714d9f11e2aa854872daacc521058ab89d29d0e602012a180f32303236303933303132303030305a3003020101a08201b8308201b430820159a003020102020816b536ff6d9413dc300a06082a8648ce3d040302304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261301e170d3230303130313030303030305a170d3430303130313030303030305a304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562613059301306072a8648ce3d020106082a8648ce3d030107034200044430921fc91a68617c785dbc7c013ede1800b37704747bd9b7280e20e475251cca9f1799b84f3cc4cf4640590697e4c425fde6329b1878f7198e91ca9fafd9e7a33b3039300e0603551d0f0101ff04040302078030270603551d0e0420041e4175746f72696461642064652053656c6c61646f20646520707275656261300a06082a8648ce3d0403020349003046022100b26b717908be147fccbe24182e8c0072e920af74fd217c818ee34950d3a8aa41022100a6d042065cc3048680da599203465f7ac6322d76a8409dfc9c79435a72c2a30a3182013430820130020101304d304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261020816b536ff6d9413dc300b0609608648016503040201a07a301a06092a864886f70d010903310d060b2a864886f70d0109100104302b060b2a864886f70d010910020c311c301a301830160414f4b0c8ba1da2495736b3b8ebba20262ca957c5bd302f06092a864886f70d010904312204205fe6287d68fc6e459c852cb7ac7bf5050374de18353747e70bb9a219ecba780a300a06082a8648ce3d04030204473045022100d7d713c85125e46ccecb2f5fb4e2db990b5e54f71b6486e5b81e64b8ba56efcd022077904deb3e45c01f144899fdeacd3f628c3cb672dfe188d84ae99578ad853f2c", + "no_context": true, + "context": { + "control_commit": "0fcd568a5cb9bdb4677b69354b11ee415af8f784519cff3da49a26f84eaee7f2", + "head_digest": "9f2e6d33a3717ee826353a404ba4618d1aeeb6879ad7936bce8ed5f46814924d", + "round_time": "2030-01-01T00:00:00Z" + }, + "signature": "F1", + "seal": "S0" + }, + { + "name": "alg 2: SIGNERS out of order", + "security_cbor": "a30071646174656b6579732d7365637572697479010102584fa30002015845825820ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb58203e23e8160039594a33894f6564e1b1348bbd7a0088d42c4acb73eeaed59c009d02423000", + "context": { + "control_commit": "0fcd568a5cb9bdb4677b69354b11ee415af8f784519cff3da49a26f84eaee7f2", + "head_digest": "9f2e6d33a3717ee826353a404ba4618d1aeeb6879ad7936bce8ed5f46814924d", + "round_time": "2030-01-01T00:00:00Z" + }, + "signature": "F1", + "seal": "S0" + }, + { + "name": "alg 2: an empty SIGNERS", + "security_cbor": "a30071646174656b6579732d73656375726974790101024aa3000201418002423000", + "context": { + "control_commit": "0fcd568a5cb9bdb4677b69354b11ee415af8f784519cff3da49a26f84eaee7f2", + "head_digest": "9f2e6d33a3717ee826353a404ba4618d1aeeb6879ad7936bce8ed5f46814924d", + "round_time": "2030-01-01T00:00:00Z" + }, + "signature": "F1", + "seal": "S0" + }, + { + "name": "alg 2: not a CMS", + "security_cbor": "a30071646174656b6579732d73656375726974790101025832a3000201582381582013c811b56e109e9ce48cd885cd2686750c380fde4bbd887399239d013d70c8cc02476e6f7420444552", + "context": { + "control_commit": "0fcd568a5cb9bdb4677b69354b11ee415af8f784519cff3da49a26f84eaee7f2", + "head_digest": "9f2e6d33a3717ee826353a404ba4618d1aeeb6879ad7936bce8ed5f46814924d", + "round_time": "2030-01-01T00:00:00Z" + }, + "signature": "F1", + "seal": "S0" + }, + { + "name": "seal: before the round time", + "security_cbor": "a40071646174656b6579732d73656375726974790101025869a30001015820ea4a6c63e29c520abef5507b132ec5f9954776aebebe7b92421eea691446d22c02584064d805ef80b891e851aa844d3c455a4b95752f88ee0f1d8e3d0d28c7431d516c9838294e7c361f20c7c9a33e7c7c8803ad934bff6174aae97a88ad8fac41f90a03590386a200020159037f3082037b06092a864886f70d010702a082036c30820368020101310d300b06096086480165030402013060060b2a864886f70d0109100104a051044f304d02010106032a0304302f300b060960864801650304020104203d799ba25f479a7f2d0c37fcf326752ce74b3a0f654dbb9026738c763afe068302012a180f32303236303933303132303030305aa08201b8308201b430820159a003020102020816b536ff6d9413dc300a06082a8648ce3d040302304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261301e170d3230303130313030303030305a170d3430303130313030303030305a304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562613059301306072a8648ce3d020106082a8648ce3d030107034200044430921fc91a68617c785dbc7c013ede1800b37704747bd9b7280e20e475251cca9f1799b84f3cc4cf4640590697e4c425fde6329b1878f7198e91ca9fafd9e7a33b3039300e0603551d0f0101ff04040302078030270603551d0e0420041e4175746f72696461642064652053656c6c61646f20646520707275656261300a06082a8648ce3d0403020349003046022100b26b717908be147fccbe24182e8c0072e920af74fd217c818ee34950d3a8aa41022100a6d042065cc3048680da599203465f7ac6322d76a8409dfc9c79435a72c2a30a3182013430820130020101304d304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261020816b536ff6d9413dc300b0609608648016503040201a07a301a06092a864886f70d010903310d060b2a864886f70d0109100104302b060b2a864886f70d010910020c311c301a301830160414f4b0c8ba1da2495736b3b8ebba20262ca957c5bd302f06092a864886f70d010904312204205fe6075847442b1eea668b09c8f86114d1271afe9991081fc0cdb5a31588da17300a06082a8648ce3d04030204473045022035826188c3bb3188be9cf91df2dc4304c17631fafffe8f2c0f80642bbc6c25b6022100908217b93a2edc80ef83409cd4442a388f18364dbdeced11e0e18d6677221ba0", + "context": { + "control_commit": "0fcd568a5cb9bdb4677b69354b11ee415af8f784519cff3da49a26f84eaee7f2", + "head_digest": "9f2e6d33a3717ee826353a404ba4618d1aeeb6879ad7936bce8ed5f46814924d", + "round_time": "2030-01-01T00:00:00Z" + }, + "signature": "F4", + "seal": "S4", + "seal_holder": "Autoridad de Sellado de prueba", + "seal_time": "2026-09-30T12:00:00Z" + }, + { + "name": "seal: after the round time", + "security_cbor": "a40071646174656b6579732d73656375726974790101025869a30001015820ea4a6c63e29c520abef5507b132ec5f9954776aebebe7b92421eea691446d22c02584064d805ef80b891e851aa844d3c455a4b95752f88ee0f1d8e3d0d28c7431d516c9838294e7c361f20c7c9a33e7c7c8803ad934bff6174aae97a88ad8fac41f90a03590386a200020159037f3082037b06092a864886f70d010702a082036c30820368020101310d300b06096086480165030402013060060b2a864886f70d0109100104a051044f304d02010106032a0304302f300b060960864801650304020104203d799ba25f479a7f2d0c37fcf326752ce74b3a0f654dbb9026738c763afe068302012a180f32303330303130313030303130305aa08201b8308201b430820159a003020102020816b536ff6d9413dc300a06082a8648ce3d040302304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261301e170d3230303130313030303030305a170d3430303130313030303030305a304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562613059301306072a8648ce3d020106082a8648ce3d030107034200044430921fc91a68617c785dbc7c013ede1800b37704747bd9b7280e20e475251cca9f1799b84f3cc4cf4640590697e4c425fde6329b1878f7198e91ca9fafd9e7a33b3039300e0603551d0f0101ff04040302078030270603551d0e0420041e4175746f72696461642064652053656c6c61646f20646520707275656261300a06082a8648ce3d0403020349003046022100b26b717908be147fccbe24182e8c0072e920af74fd217c818ee34950d3a8aa41022100a6d042065cc3048680da599203465f7ac6322d76a8409dfc9c79435a72c2a30a3182013430820130020101304d304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261020816b536ff6d9413dc300b0609608648016503040201a07a301a06092a864886f70d010903310d060b2a864886f70d0109100104302b060b2a864886f70d010910020c311c301a301830160414f4b0c8ba1da2495736b3b8ebba20262ca957c5bd302f06092a864886f70d010904312204206ec611e50ba08a9652626f2e01c82ecea7dcc274e609f2aa345d021863dcad7d300a06082a8648ce3d04030204473045022058e49c9469d43a91f95e2f85cef863047352a1dcabf91b5e7e33045b2999b49b022100ef93e6c13cdcbe5b60aa931f645f5289a594ff09c1914623c035fcc09c6eb46d", + "context": { + "control_commit": "0fcd568a5cb9bdb4677b69354b11ee415af8f784519cff3da49a26f84eaee7f2", + "head_digest": "9f2e6d33a3717ee826353a404ba4618d1aeeb6879ad7936bce8ed5f46814924d", + "round_time": "2030-01-01T00:00:00Z" + }, + "signature": "F4", + "seal": "S5", + "seal_holder": "Autoridad de Sellado de prueba", + "seal_time": "2030-01-01T00:01:00Z" + }, + { + "name": "seal: the accuracy reaches the round time", + "security_cbor": "a40071646174656b6579732d73656375726974790101025869a30001015820ea4a6c63e29c520abef5507b132ec5f9954776aebebe7b92421eea691446d22c02584064d805ef80b891e851aa844d3c455a4b95752f88ee0f1d8e3d0d28c7431d516c9838294e7c361f20c7c9a33e7c7c8803ad934bff6174aae97a88ad8fac41f90a0359038aa20002015903833082037f06092a864886f70d010702a08203703082036c020101310d300b06096086480165030402013065060b2a864886f70d0109100104a0560454305202010106032a0304302f300b060960864801650304020104203d799ba25f479a7f2d0c37fcf326752ce74b3a0f654dbb9026738c763afe068302012a180f32303239313233313233353935395a3003020102a08201b8308201b430820159a003020102020816b536ff6d9413dc300a06082a8648ce3d040302304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261301e170d3230303130313030303030305a170d3430303130313030303030305a304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562613059301306072a8648ce3d020106082a8648ce3d030107034200044430921fc91a68617c785dbc7c013ede1800b37704747bd9b7280e20e475251cca9f1799b84f3cc4cf4640590697e4c425fde6329b1878f7198e91ca9fafd9e7a33b3039300e0603551d0f0101ff04040302078030270603551d0e0420041e4175746f72696461642064652053656c6c61646f20646520707275656261300a06082a8648ce3d0403020349003046022100b26b717908be147fccbe24182e8c0072e920af74fd217c818ee34950d3a8aa41022100a6d042065cc3048680da599203465f7ac6322d76a8409dfc9c79435a72c2a30a318201333082012f020101304d304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261020816b536ff6d9413dc300b0609608648016503040201a07a301a06092a864886f70d010903310d060b2a864886f70d0109100104302b060b2a864886f70d010910020c311c301a301830160414f4b0c8ba1da2495736b3b8ebba20262ca957c5bd302f06092a864886f70d01090431220420471721ed38663795e173165313eb086b98a36585f824a592258e6796265b290c300a06082a8648ce3d0403020446304402200d7a4e1cbb38fc5ab7e36e68a02ff0ce522afd5d5339f3f498a2ed38b5d5929e02204e3fc60d1475324c1262d93e2ccc3220b6f20d5c2789ab98de90fc725095dc68", + "context": { + "control_commit": "0fcd568a5cb9bdb4677b69354b11ee415af8f784519cff3da49a26f84eaee7f2", + "head_digest": "9f2e6d33a3717ee826353a404ba4618d1aeeb6879ad7936bce8ed5f46814924d", + "round_time": "2030-01-01T00:00:00Z" + }, + "signature": "F4", + "seal": "S5", + "seal_holder": "Autoridad de Sellado de prueba", + "seal_time": "2029-12-31T23:59:59Z" + }, + { + "name": "seal: over another subject", + "security_cbor": "a40071646174656b6579732d73656375726974790101025869a30001015820ea4a6c63e29c520abef5507b132ec5f9954776aebebe7b92421eea691446d22c02584064d805ef80b891e851aa844d3c455a4b95752f88ee0f1d8e3d0d28c7431d516c9838294e7c361f20c7c9a33e7c7c8803ad934bff6174aae97a88ad8fac41f90a03590386a200020159037f3082037b06092a864886f70d010702a082036c30820368020101310d300b06096086480165030402013060060b2a864886f70d0109100104a051044f304d02010106032a0304302f300b06096086480165030402010420d9298a10d1b0735837dc4bd85dac641b0f3cef27a47e5d53a54f2f3f5b2fcffa02012a180f32303236303933303132303030305aa08201b8308201b430820159a003020102020816b536ff6d9413dc300a06082a8648ce3d040302304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261301e170d3230303130313030303030305a170d3430303130313030303030305a304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562613059301306072a8648ce3d020106082a8648ce3d030107034200044430921fc91a68617c785dbc7c013ede1800b37704747bd9b7280e20e475251cca9f1799b84f3cc4cf4640590697e4c425fde6329b1878f7198e91ca9fafd9e7a33b3039300e0603551d0f0101ff04040302078030270603551d0e0420041e4175746f72696461642064652053656c6c61646f20646520707275656261300a06082a8648ce3d0403020349003046022100b26b717908be147fccbe24182e8c0072e920af74fd217c818ee34950d3a8aa41022100a6d042065cc3048680da599203465f7ac6322d76a8409dfc9c79435a72c2a30a3182013430820130020101304d304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261020816b536ff6d9413dc300b0609608648016503040201a07a301a06092a864886f70d010903310d060b2a864886f70d0109100104302b060b2a864886f70d010910020c311c301a301830160414f4b0c8ba1da2495736b3b8ebba20262ca957c5bd302f06092a864886f70d0109043122042020b72ae51c6f228bc1779cb6f447612e6884942940b9d925cf0600ec815f8eb6300a06082a8648ce3d0403020447304502204acb02f9a823d1d511923009bbba27633f0fb1d86abf288e8c91fac127ffeea402210091ed23012ba6318ba11640fadd5b532cf162b9be3911d6f724b812f17d38c7d3", + "context": { + "control_commit": "0fcd568a5cb9bdb4677b69354b11ee415af8f784519cff3da49a26f84eaee7f2", + "head_digest": "9f2e6d33a3717ee826353a404ba4618d1aeeb6879ad7936bce8ed5f46814924d", + "round_time": "2030-01-01T00:00:00Z" + }, + "signature": "F4", + "seal": "S3" + }, + { + "name": "seal: the authority had expired at its time", + "security_cbor": "a40071646174656b6579732d73656375726974790101025869a30001015820ea4a6c63e29c520abef5507b132ec5f9954776aebebe7b92421eea691446d22c02584064d805ef80b891e851aa844d3c455a4b95752f88ee0f1d8e3d0d28c7431d516c9838294e7c361f20c7c9a33e7c7c8803ad934bff6174aae97a88ad8fac41f90a03590386a200020159037f3082037b06092a864886f70d010702a082036c30820368020101310d300b06096086480165030402013060060b2a864886f70d0109100104a051044f304d02010106032a0304302f300b060960864801650304020104203d799ba25f479a7f2d0c37fcf326752ce74b3a0f654dbb9026738c763afe068302012a180f32303431303130313030303030305aa08201b8308201b430820159a003020102020816b536ff6d9413dc300a06082a8648ce3d040302304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261301e170d3230303130313030303030305a170d3430303130313030303030305a304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562613059301306072a8648ce3d020106082a8648ce3d030107034200044430921fc91a68617c785dbc7c013ede1800b37704747bd9b7280e20e475251cca9f1799b84f3cc4cf4640590697e4c425fde6329b1878f7198e91ca9fafd9e7a33b3039300e0603551d0f0101ff04040302078030270603551d0e0420041e4175746f72696461642064652053656c6c61646f20646520707275656261300a06082a8648ce3d0403020349003046022100b26b717908be147fccbe24182e8c0072e920af74fd217c818ee34950d3a8aa41022100a6d042065cc3048680da599203465f7ac6322d76a8409dfc9c79435a72c2a30a3182013430820130020101304d304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261020816b536ff6d9413dc300b0609608648016503040201a07a301a06092a864886f70d010903310d060b2a864886f70d0109100104302b060b2a864886f70d010910020c311c301a301830160414f4b0c8ba1da2495736b3b8ebba20262ca957c5bd302f06092a864886f70d01090431220420952183c5071984e2814df7f00ebb35b71da2bdcbbdd4dbe03d05d716ab67687b300a06082a8648ce3d04030204473045022100c206a35b6ac94901a3fcc2e507a2a21f3d23ba85f2e156d98e87cb045531f7db02203e32681a6f58a9c6abe88c04cb4debf27ce8cd5d2d5b7c954e002a3d14533ef8", + "context": { + "control_commit": "0fcd568a5cb9bdb4677b69354b11ee415af8f784519cff3da49a26f84eaee7f2", + "head_digest": "9f2e6d33a3717ee826353a404ba4618d1aeeb6879ad7936bce8ed5f46814924d", + "round_time": "2030-01-01T00:00:00Z" + }, + "signature": "F4", + "seal": "S3" + }, + { + "name": "seal: a TSTInfo of version 2", + "security_cbor": "a40071646174656b6579732d73656375726974790101025869a30001015820ea4a6c63e29c520abef5507b132ec5f9954776aebebe7b92421eea691446d22c02584064d805ef80b891e851aa844d3c455a4b95752f88ee0f1d8e3d0d28c7431d516c9838294e7c361f20c7c9a33e7c7c8803ad934bff6174aae97a88ad8fac41f90a03590386a200020159037f3082037b06092a864886f70d010702a082036c30820368020101310d300b06096086480165030402013060060b2a864886f70d0109100104a051044f304d02010206032a0304302f300b060960864801650304020104203d799ba25f479a7f2d0c37fcf326752ce74b3a0f654dbb9026738c763afe068302012a180f32303236303933303132303030305aa08201b8308201b430820159a003020102020816b536ff6d9413dc300a06082a8648ce3d040302304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261301e170d3230303130313030303030305a170d3430303130313030303030305a304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562613059301306072a8648ce3d020106082a8648ce3d030107034200044430921fc91a68617c785dbc7c013ede1800b37704747bd9b7280e20e475251cca9f1799b84f3cc4cf4640590697e4c425fde6329b1878f7198e91ca9fafd9e7a33b3039300e0603551d0f0101ff04040302078030270603551d0e0420041e4175746f72696461642064652053656c6c61646f20646520707275656261300a06082a8648ce3d0403020349003046022100b26b717908be147fccbe24182e8c0072e920af74fd217c818ee34950d3a8aa41022100a6d042065cc3048680da599203465f7ac6322d76a8409dfc9c79435a72c2a30a3182013430820130020101304d304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261020816b536ff6d9413dc300b0609608648016503040201a07a301a06092a864886f70d010903310d060b2a864886f70d0109100104302b060b2a864886f70d010910020c311c301a301830160414f4b0c8ba1da2495736b3b8ebba20262ca957c5bd302f06092a864886f70d010904312204207e5374ba63316e3801f8ceee00bf0d1654583ad4b2abf0c568aee47d8b8cec8a300a06082a8648ce3d04030204473045022100b8760f30aaea150c3cc178d6f8d69da5aa1658a39fb8c18519de80927b9becad022017b1bbd893a5cd8e5f8406499d77a17e5e1234007aba5a0dd656609ab30109ef", + "context": { + "control_commit": "0fcd568a5cb9bdb4677b69354b11ee415af8f784519cff3da49a26f84eaee7f2", + "head_digest": "9f2e6d33a3717ee826353a404ba4618d1aeeb6879ad7936bce8ed5f46814924d", + "round_time": "2030-01-01T00:00:00Z" + }, + "signature": "F4", + "seal": "S2" + }, + { + "name": "seal: not DER", + "security_cbor": "a40071646174656b6579732d73656375726974790101025869a30001015820ea4a6c63e29c520abef5507b132ec5f9954776aebebe7b92421eea691446d22c02584064d805ef80b891e851aa844d3c455a4b95752f88ee0f1d8e3d0d28c7431d516c9838294e7c361f20c7c9a33e7c7c8803ad934bff6174aae97a88ad8fac41f90a034ca2000201476e6f7420444552", + "context": { + "control_commit": "0fcd568a5cb9bdb4677b69354b11ee415af8f784519cff3da49a26f84eaee7f2", + "head_digest": "9f2e6d33a3717ee826353a404ba4618d1aeeb6879ad7936bce8ed5f46814924d", + "round_time": "2030-01-01T00:00:00Z" + }, + "signature": "F4", + "seal": "S2" + }, + { + "name": "seal: SHA-384 in the imprint", + "security_cbor": "a40071646174656b6579732d73656375726974790101025869a30001015820ea4a6c63e29c520abef5507b132ec5f9954776aebebe7b92421eea691446d22c02584064d805ef80b891e851aa844d3c455a4b95752f88ee0f1d8e3d0d28c7431d516c9838294e7c361f20c7c9a33e7c7c8803ad934bff6174aae97a88ad8fac41f90a03590396a200020159038f3082038b06092a864886f70d010702a082037c30820378020101310d300b06096086480165030402013070060b2a864886f70d0109100104a061045f305d02010106032a0304303f300b06096086480165030402020430e8ebf3d61bf90b15bca8f52f442c258a22fd8813dde6462308f13d3d2ae3bc512fb5b2613a392c68a94f4281a60ee3be02012a180f32303236303933303132303030305aa08201b8308201b430820159a003020102020816b536ff6d9413dc300a06082a8648ce3d040302304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261301e170d3230303130313030303030305a170d3430303130313030303030305a304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562613059301306072a8648ce3d020106082a8648ce3d030107034200044430921fc91a68617c785dbc7c013ede1800b37704747bd9b7280e20e475251cca9f1799b84f3cc4cf4640590697e4c425fde6329b1878f7198e91ca9fafd9e7a33b3039300e0603551d0f0101ff04040302078030270603551d0e0420041e4175746f72696461642064652053656c6c61646f20646520707275656261300a06082a8648ce3d0403020349003046022100b26b717908be147fccbe24182e8c0072e920af74fd217c818ee34950d3a8aa41022100a6d042065cc3048680da599203465f7ac6322d76a8409dfc9c79435a72c2a30a3182013430820130020101304d304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261020816b536ff6d9413dc300b0609608648016503040201a07a301a06092a864886f70d010903310d060b2a864886f70d0109100104302b060b2a864886f70d010910020c311c301a301830160414f4b0c8ba1da2495736b3b8ebba20262ca957c5bd302f06092a864886f70d010904312204200fb8e41b236629a2ce055afa2f6fc3bc4fbc56a606cb5dc6eb44388b65a65133300a06082a8648ce3d0403020447304502202cf305a8f490c47d643b1321ec74fc560d720c782f940120b8c72feb44c64603022100e8bc71c72a78453cc208edf5a8ef00ab72d0f180f21ebfb016108fb2dd30334f", + "context": { + "control_commit": "0fcd568a5cb9bdb4677b69354b11ee415af8f784519cff3da49a26f84eaee7f2", + "head_digest": "9f2e6d33a3717ee826353a404ba4618d1aeeb6879ad7936bce8ed5f46814924d", + "round_time": "2030-01-01T00:00:00Z" + }, + "signature": "F4", + "seal": "S1" + }, + { + "name": "seal: without a context, as a reader of v0.10", + "security_cbor": "a40071646174656b6579732d73656375726974790101025869a30001015820ea4a6c63e29c520abef5507b132ec5f9954776aebebe7b92421eea691446d22c02584064d805ef80b891e851aa844d3c455a4b95752f88ee0f1d8e3d0d28c7431d516c9838294e7c361f20c7c9a33e7c7c8803ad934bff6174aae97a88ad8fac41f90a03590386a200020159037f3082037b06092a864886f70d010702a082036c30820368020101310d300b06096086480165030402013060060b2a864886f70d0109100104a051044f304d02010106032a0304302f300b060960864801650304020104203d799ba25f479a7f2d0c37fcf326752ce74b3a0f654dbb9026738c763afe068302012a180f32303236303933303132303030305aa08201b8308201b430820159a003020102020816b536ff6d9413dc300a06082a8648ce3d040302304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261301e170d3230303130313030303030305a170d3430303130313030303030305a304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562613059301306072a8648ce3d020106082a8648ce3d030107034200044430921fc91a68617c785dbc7c013ede1800b37704747bd9b7280e20e475251cca9f1799b84f3cc4cf4640590697e4c425fde6329b1878f7198e91ca9fafd9e7a33b3039300e0603551d0f0101ff04040302078030270603551d0e0420041e4175746f72696461642064652053656c6c61646f20646520707275656261300a06082a8648ce3d0403020349003046022100b26b717908be147fccbe24182e8c0072e920af74fd217c818ee34950d3a8aa41022100a6d042065cc3048680da599203465f7ac6322d76a8409dfc9c79435a72c2a30a3182013430820130020101304d304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261020816b536ff6d9413dc300b0609608648016503040201a07a301a06092a864886f70d010903310d060b2a864886f70d0109100104302b060b2a864886f70d010910020c311c301a301830160414f4b0c8ba1da2495736b3b8ebba20262ca957c5bd302f06092a864886f70d010904312204205fe6075847442b1eea668b09c8f86114d1271afe9991081fc0cdb5a31588da17300a06082a8648ce3d04030204473045022100f3e262b82a8270b9ba9ac7c53e3ac684cfafb8799ca3543161e5f4883dd7f1cc02204c806cc886fbd06e0eecc1e3a3857fb33741f04a5d0f4e3f6327f1a895df483e", + "no_context": true, + "context": { + "control_commit": "0fcd568a5cb9bdb4677b69354b11ee415af8f784519cff3da49a26f84eaee7f2", + "head_digest": "9f2e6d33a3717ee826353a404ba4618d1aeeb6879ad7936bce8ed5f46814924d", + "round_time": "2030-01-01T00:00:00Z" + }, + "signature": "F1", + "seal": "S1" + }, + { + "name": "seal: over a capsule without a signature", + "security_cbor": "a30071646174656b6579732d7365637572697479010103590386a200020159037f3082037b06092a864886f70d010702a082036c30820368020101310d300b06096086480165030402013060060b2a864886f70d0109100104a051044f304d02010106032a0304302f300b060960864801650304020104202c95d37cb9658ed6387ff8e29854bbff409a1c4456e17ab6d2c46eeb54d7b3eb02012a180f32303236303933303132303030305aa08201b8308201b430820159a003020102020816b536ff6d9413dc300a06082a8648ce3d040302304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261301e170d3230303130313030303030305a170d3430303130313030303030305a304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f206465207072756562613059301306072a8648ce3d020106082a8648ce3d030107034200044430921fc91a68617c785dbc7c013ede1800b37704747bd9b7280e20e475251cca9f1799b84f3cc4cf4640590697e4c425fde6329b1878f7198e91ca9fafd9e7a33b3039300e0603551d0f0101ff04040302078030270603551d0e0420041e4175746f72696461642064652053656c6c61646f20646520707275656261300a06082a8648ce3d0403020349003046022100b26b717908be147fccbe24182e8c0072e920af74fd217c818ee34950d3a8aa41022100a6d042065cc3048680da599203465f7ac6322d76a8409dfc9c79435a72c2a30a3182013430820130020101304d304131163014060355040a130d446174654b6579732074657374312730250603550403131e4175746f72696461642064652053656c6c61646f20646520707275656261020816b536ff6d9413dc300b0609608648016503040201a07a301a06092a864886f70d010903310d060b2a864886f70d0109100104302b060b2a864886f70d010910020c311c301a301830160414f4b0c8ba1da2495736b3b8ebba20262ca957c5bd302f06092a864886f70d0109043122042016bf09210739e6175026faad38a0095930e12eaf345d0e740cdaf4aa5022f143300a06082a8648ce3d04030204473045022100e9c7003e488da05574e7bb2828349e8ce5d324edc32e4ab996d1b6c0335a090502206c5d0742831aa0c9a99315560dbb1e5550522f44bb9fb4ebc9482e9f9f4c911b", + "context": { + "control_commit": "0fcd568a5cb9bdb4677b69354b11ee415af8f784519cff3da49a26f84eaee7f2", + "head_digest": "9f2e6d33a3717ee826353a404ba4618d1aeeb6879ad7936bce8ed5f46814924d", + "round_time": "2030-01-01T00:00:00Z" + }, + "signature": "F0", + "seal": "S4", + "seal_holder": "Autoridad de Sellado de prueba", + "seal_time": "2026-09-30T12:00:00Z" + } + ] +} diff --git a/testdata/vectors/tlock_ibe.json b/testdata/vectors/tlock_ibe.json index a0aa127..dc16e05 100644 --- a/testdata/vectors/tlock_ibe.json +++ b/testdata/vectors/tlock_ibe.json @@ -1,5 +1,5 @@ { - "spec": "0.10", + "spec": "0.11", "description": "H2 of the IBE-CCA of tlock (spec §63 step 11): SHA-256 of \"IBE-H2\" and the 576 bytes of an element of GT, c1 before c0 at every level of the tower and each coordinate of Fp in 48 bytes big-endian (the order of kilic/bls12-381), truncated to 16 bytes. Generated by the reference implementation with drand/kyber-bls12381, the pairing of tlock.", "vectors": [ {