From 1775428062d40f50c3e79f848e732fd39b583f59 Mon Sep 17 00:00:00 2001 From: James Ross Date: Sun, 23 Aug 2026 04:52:34 -0700 Subject: [PATCH 1/8] feat: admit Edict pure program contracts --- CHANGELOG.md | 6 ++ crates/echo-edict-provider-lowerer/README.md | 2 +- crates/echo-edict-provider-lowerer/src/lib.rs | 4 +- .../tests/fixtures/generated_echo_dpo.rs | 4 +- .../tests/lowerer_contract.rs | 2 +- crates/echo-wesley-gen/README.md | 2 +- .../v1/edict-provider-contracts.cddl | 79 ++++++++++++++++-- .../edict-provider/contracts/v1/manifest.json | 4 +- .../lowerer.echo-dpo.component.wasm | Bin 258787 -> 258787 bytes .../provenance.provider-generation.json | 2 +- .../evidence/review.provider-generation.json | 2 +- .../schema.echo-provider-artifacts.cddl | 79 ++++++++++++++++-- .../package/v1/provider-manifest.echo.json | 28 +++---- .../src/provider_contract_pack.rs | 6 +- .../tests/provider_contract_pack.rs | 4 +- .../echo-wesley-gen/tests/provider_package.rs | 2 +- .../tests/provider_package_corpus.rs | 4 +- .../application-contract-hosting.md | 2 +- schemas/edict-provider/README.md | 6 +- .../edict-provider/components/v1/README.md | 2 +- .../v1/lowerer.echo-dpo.component.wasm | Bin 258787 -> 258787 bytes schemas/edict-provider/contracts/v1/README.md | 10 ++- .../v1/edict-provider-contracts.cddl | 79 ++++++++++++++++-- .../edict-provider/contracts/v1/manifest.json | 4 +- .../provenance.provider-generation.json | 2 +- .../evidence/review.provider-generation.json | 2 +- .../schema.echo-provider-artifacts.cddl | 79 ++++++++++++++++-- .../lowerer.echo-dpo.component.wasm | Bin 258787 -> 258787 bytes .../provenance.provider-generation.json | 2 +- .../evidence/review.provider-generation.json | 2 +- .../schema.echo-provider-artifacts.cddl | 79 ++++++++++++++++-- .../package/v1/provider-manifest.echo.json | 28 +++---- xtask/src/provider_lowerer_component.rs | 2 +- 33 files changed, 431 insertions(+), 98 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f16af86..3a04984f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,12 @@ ### Added +- The checked Edict provider package now admits the exact contract pack from + Edict #201, including source-ordered generic pure Target IR bindings and + compiler-owned pure-binding result projections. Echo pins the new source and + manifest identities, preserves the bounded contract-pack admission boundary, + and regenerates every affected provider schema, provenance record, package + manifest, and package-local carrier without adding application vocabulary. - Strict filesystem WAL stores now persist a checksummed writer-epoch ledger containing the active epoch, its exact latest closed predecessor, and final LSN and commit-digest evidence. Bounded retention keeps ledger writes and diff --git a/crates/echo-edict-provider-lowerer/README.md b/crates/echo-edict-provider-lowerer/README.md index 360562dd..b6e0b51c 100644 --- a/crates/echo-edict-provider-lowerer/README.md +++ b/crates/echo-edict-provider-lowerer/README.md @@ -118,7 +118,7 @@ remain a separate bounded observer/optic path and must never be represented as synthetic mutations. The refreshed 258,787-byte checked lowerer component has SHA-256 -`dfd14015705ff555a7efdb3787ddb0f8b4f304168a9a0ebf324fd25d430bf5cd` and has +`8eb7891b1eed94c9396b0a3bd188aa35918d5833d24b15c0285eebd829687389` and has crossed the reproducible promotion boundary. The pinned Edict host admits its generated envelope under the owning `generated-artifact` CDDL root, and the isolated host fixture exercises the exact helper binding, typed codecs, EINT diff --git a/crates/echo-edict-provider-lowerer/src/lib.rs b/crates/echo-edict-provider-lowerer/src/lib.rs index c3dd6a8c..3fbabb9f 100644 --- a/crates/echo-edict-provider-lowerer/src/lib.rs +++ b/crates/echo-edict-provider-lowerer/src/lib.rs @@ -809,7 +809,7 @@ pub mod echo_dpo { pub const PROVIDER_SCHEMA_COORDINATE: &str = "echo.provider-artifacts.cddl@1"; /// Raw SHA-256 of the exact self-contained provider CDDL bytes. pub const PROVIDER_SCHEMA_SHA256_HEX: &str = - "730ce72f6658fe8cc9302221c32ad5992492e190674ddd69c1b164749d2bb669"; + "15e2b02f66052eff437973957c728b5ed4ecf709ef9ae094fbe8e4d0ea870209"; /// Exact generated-artifact profile coordinate owning operation schemas. pub const GENERATED_ARTIFACT_PROFILE: &str = "echo.dpo.registration/v1"; /// Digest-framing domain for the generated-artifact profile. @@ -846,7 +846,7 @@ pub mod echo_dpo { const MUTATION_RULE_NAME: &str = concat!( "cmd/contract/", - "730ce72f6658fe8cc9302221c32ad5992492e190674ddd69c1b164749d2bb669", + "15e2b02f66052eff437973957c728b5ed4ecf709ef9ae094fbe8e4d0ea870209", "/3389142194/a.b@1.t" ); const PROVIDER_OPERATIONS: [ProviderOperationV1<'static>; 1] = [ProviderOperationV1 { diff --git a/crates/echo-edict-provider-lowerer/tests/fixtures/generated_echo_dpo.rs b/crates/echo-edict-provider-lowerer/tests/fixtures/generated_echo_dpo.rs index 7d1ecd65..a675e62d 100644 --- a/crates/echo-edict-provider-lowerer/tests/fixtures/generated_echo_dpo.rs +++ b/crates/echo-edict-provider-lowerer/tests/fixtures/generated_echo_dpo.rs @@ -71,7 +71,7 @@ pub mod echo_dpo { pub const PROVIDER_SCHEMA_COORDINATE: &str = "echo.provider-artifacts.cddl@1"; /// Raw SHA-256 of the exact self-contained provider CDDL bytes. pub const PROVIDER_SCHEMA_SHA256_HEX: &str = - "730ce72f6658fe8cc9302221c32ad5992492e190674ddd69c1b164749d2bb669"; + "15e2b02f66052eff437973957c728b5ed4ecf709ef9ae094fbe8e4d0ea870209"; /// Exact generated-artifact profile coordinate owning operation schemas. pub const GENERATED_ARTIFACT_PROFILE: &str = "echo.dpo.registration/v1"; /// Digest-framing domain for the generated-artifact profile. @@ -108,7 +108,7 @@ pub mod echo_dpo { const MUTATION_RULE_NAME: &str = concat!( "cmd/contract/", - "730ce72f6658fe8cc9302221c32ad5992492e190674ddd69c1b164749d2bb669", + "15e2b02f66052eff437973957c728b5ed4ecf709ef9ae094fbe8e4d0ea870209", "/3389142194/a.b@1.t" ); const PROVIDER_OPERATIONS: [ProviderOperationV1<'static>; 1] = [ProviderOperationV1 { diff --git a/crates/echo-edict-provider-lowerer/tests/lowerer_contract.rs b/crates/echo-edict-provider-lowerer/tests/lowerer_contract.rs index b9777430..17ec974d 100644 --- a/crates/echo-edict-provider-lowerer/tests/lowerer_contract.rs +++ b/crates/echo-edict-provider-lowerer/tests/lowerer_contract.rs @@ -45,7 +45,7 @@ const REVIEW_MEDIA_TYPE: &str = "application/json"; const GENERATED_SOURCE_PATH: &str = "generated/echo_dpo.rs"; const REVIEW_PATH: &str = "review/echo_dpo.json"; const EXPECTED_PROVIDER_SCHEMA_SHA256_HEX: &str = - "730ce72f6658fe8cc9302221c32ad5992492e190674ddd69c1b164749d2bb669"; + "15e2b02f66052eff437973957c728b5ed4ecf709ef9ae094fbe8e4d0ea870209"; const EXPECTED_OPERATION_ID_LAW: &str = "echo.semantic-operation-id.fnv1-32/v1"; const EXPECTED_OPERATION_ID: u32 = 3_389_142_194; diff --git a/crates/echo-wesley-gen/README.md b/crates/echo-wesley-gen/README.md index 7e7b6476..98aea92a 100644 --- a/crates/echo-wesley-gen/README.md +++ b/crates/echo-wesley-gen/README.md @@ -42,7 +42,7 @@ Apache-2.0 contract pack checked under is admitted through `provider_contract_pack::admit_provider_contract_pack_v1(...)`. Admission requires the pinned Edict contract-pack publication from PR #162 as extended -with the result-projection contract in PR #174, verifies every +through the generic pure-binding extension in PR #201, verifies every embedded contract resource and provenance record, and performs no discovery or mutable coordinate resolution. This authenticates the schema publication; it does not by itself claim that a generated artifact is a valid schema instance. diff --git a/crates/echo-wesley-gen/assets/v1/edict-provider/contracts/v1/edict-provider-contracts.cddl b/crates/echo-wesley-gen/assets/v1/edict-provider/contracts/v1/edict-provider-contracts.cddl index 5df2ec6a..723929f3 100644 --- a/crates/echo-wesley-gen/assets/v1/edict-provider/contracts/v1/edict-provider-contracts.cddl +++ b/crates/echo-wesley-gen/assets/v1/edict-provider/contracts/v1/edict-provider-contracts.cddl @@ -102,7 +102,7 @@ core-module = { } core-import = { - kind: "lawpack" / "target" / "core", + kind: "lawpack" / "target" / "core" / "capability", ref: resource-ref, ? alias: tstr, } @@ -111,7 +111,7 @@ core-import = { core-type = core-scalar-type / core-record-type / core-variant-type / core-option-type / core-list-type / core-map-type / - core-capability-ref-type + core-capability-ref-type / core-external-action-request-type core-scalar-type = core-bool-type / core-int-type / core-string-type / core-bytes-type / core-unit-type @@ -160,6 +160,10 @@ core-capability-ref-type = { kind: "CapabilityRef", item: core-type-ref, } +core-external-action-request-type = { + kind: "ExternalActionRequest", + settlement: core-type-ref, +} ; core-type-ref is defined in edict-common.cddl and assembled with this schema. @@ -324,7 +328,8 @@ core-block = { result: core-expr, } -core-node = let-node / require-node / effect-node / guard-node / branch-node / +core-node = let-node / require-node / effect-node / + external-action-request-node / guard-node / branch-node / for-node / match-node / proof-obligation-node let-node = { @@ -358,6 +363,26 @@ effect-node = { input: core-expr, obstructionMap: { * failure-ident => obstruction-arm }, } +external-action-request-node = { + kind: "externalActionRequest", + binding: local-ref, + operation: resource-ref, + inputType: core-type-ref, + settlementType: core-type-ref, + inputSchema: resource-ref, + settlementSchema: resource-ref, + input: core-expr, + authorityScope: core-expr, + basis: core-expr, + budget: external-action-budget, + reconciliationLaw: resource-ref, + state: "awaitingSettlement", + settlementAdmission: "schemaRequired", +} +external-action-budget = { + maxSettlementBytes: core-expr, + maxAttempts: core-expr, +} obstruction-arm = { binder: local-ref, value: core-expr, @@ -369,6 +394,7 @@ guard-node = { } branch-node = { kind: "branch", + ? binding: local-ref, predicate: core-predicate, then: core-block, else: core-block, @@ -559,10 +585,19 @@ lawpack-adapter = { } ; Keys are canonical lawpack operation-profile coordinates. -lawpack-adapter-operation-profile = { - core: tstr, - semanticEffects: [+ tstr], -} +lawpack-adapter-operation-profile = + { + core: tstr, + semanticEffects: [+ tstr], + ? budgetObligation: tstr, + ? targetConfiguration: resource-ref, + } / + { + core: tstr, + semanticEffects: [], + budgetObligation: tstr, + targetConfiguration: resource-ref, + } ; Keys are canonical lawpack semantic-effect coordinates. Footprint, cost, and ; failure fields must exactly discharge the matching exported effect. @@ -821,6 +856,10 @@ result-projection-source = { result-projection-source-kind = { kind: "applicationInput" } / + { + kind: "pureBinding", + bindingId: bounded-projection-text, + } / { kind: "capabilityResult", stepId: bounded-projection-text, @@ -872,11 +911,14 @@ target-ir-legacy-artifact = { target-ir-semantic-closure = { sourceCore: target-ir-resource-ref, lawpacks: [* target-ir-resource-ref], + ? capabilities: [* target-ir-resource-ref], } target-ir-intent = { target-ir-intent-common, ? basis: core-expr, + ? pureBindings: [1* target-ir-pure-binding], + ? externalActionRequests: [* target-ir-external-action-request], } target-ir-legacy-intent = { @@ -898,6 +940,12 @@ target-ir-requirement = { onFailure: require-failure-arm, } +target-ir-pure-binding = { + id: tstr .regexp "(?s).+", + binding: local-ref, + value: core-expr, +} + target-ir-step = { id: tstr, binding: local-ref, @@ -907,3 +955,20 @@ target-ir-step = { obstructionFailures: [* failure-ident], obstructionArms: { * failure-ident => obstruction-arm }, } + +target-ir-external-action-request = { + id: tstr, + binding: local-ref, + operation: target-ir-resource-ref, + inputType: core-type-ref, + settlementType: core-type-ref, + inputSchema: target-ir-resource-ref, + settlementSchema: target-ir-resource-ref, + input: core-expr, + authorityScope: core-expr, + basis: core-expr, + budget: external-action-budget, + reconciliationLaw: target-ir-resource-ref, + state: "awaitingSettlement", + settlementAdmission: "schemaRequired", +} diff --git a/crates/echo-wesley-gen/assets/v1/edict-provider/contracts/v1/manifest.json b/crates/echo-wesley-gen/assets/v1/edict-provider/contracts/v1/manifest.json index 0106222a..a0e0c28a 100644 --- a/crates/echo-wesley-gen/assets/v1/edict-provider/contracts/v1/manifest.json +++ b/crates/echo-wesley-gen/assets/v1/edict-provider/contracts/v1/manifest.json @@ -3,8 +3,8 @@ "coordinate": "edict.provider-contract-pack.cddl@1", "license": "Apache-2.0", "schema": { - "bytesHex": "3b20535044582d4c6963656e73652d4964656e7469666965723a204170616368652d322e300a3b2065646963742d70726f76696465722d636f6e7472616374732e6364646c0a3b2047656e6572617465642066726f6d2045646963742d6f776e65642041424920667261676d656e74732e20444f204e4f5420454449542e0a0a3b202d2d2d2065646963742d636f6d6d6f6e2e6364646c202d2d2d0a3b2065646963742d636f6d6d6f6e2e6364646c0a3b20536861726564204344444c20747970657320666f722074686520456469637420414249732c20646566696e6564204f4e4345206865726520736f20746865792063616e6e6f742064726966740a3b202845444943542d4142492d4e4f4455502d303031292e2054776f2067726f7570733a0a3b2020202d207265736f757263652d7265662c207368613235362d6469676573742c206566666563742d6661696c7572652d626f64792c206566666563742d6b696e642c20617574686f726974792d636c6173732c0a3b2020202020636f72652d747970652d7265663a20617373656d626c656420776974682065646963742d7461726765742d70726f66696c652e6364646c20616e640a3b202020202065646963742d6c61777061636b2e6364646c20627920746865206275696c643b2074686f736520736368656d617320646f206e6f74207265646566696e65207468656d2e0a3b2020202d206f7065726174696f6e2d70726f66696c652c206f707469632d74656d706c6174652c2061706572747572652d726571756972656d656e7420616e6420746865697220726566733a0a3b2020202020636f6e73756d65642062792074686520436f72652f6f70746963206c61796572202865646963742d636f72652e6364646c2920616e64207265666572656e636564206279207468650a3b20202020206c616e67756167652f7461726765742d70726f66696c652073706563732e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a0a3b2041206e6f726d617469766520737562636f6d706f6e656e74207265666572656e636564206279206964656e7469747920706c7573206469676573742e204d616e696665737473206e657665720a3b20656d626564207468656972206f776e2073656c662d64696765737420696e20746865697220707265696d616765202845444943542d434f52452d53454c46484153482d303031292e0a7265736f757263652d726566203d207b2069643a20747374722c206469676573743a207368613235362d646967657374207d0a0a3b20446967657374732061726520617574686f726974617469766520617320747970656420627974652076616c7565732c206e657665722068657820737472696e67732e20526576696577204a534f4e0a3b2072656e64657273207468697320617320227368613235363a3c3634206c6f77657263617365206865783e22202845444943542d4449474553542d574952452d303031292e0a7368613235362d646967657374203d205b20616c676f726974686d3a2022736861323536222c2062797465733a2062737472202e73697a65203332205d0a0a3b2041206e616d6564206c6f772d6c6576656c206661696c75726520616e206566666563742063616e2072616973652e2054686520736f75726365206f62737472756374696f6e206d61700a3b2062696e64732069742028627920636f6f7264696e6174652920616e6420636f6e73747275637473206120747970656420646f6d61696e206f62737472756374696f6e2066726f6d206974730a3b207061796c6f6164202845444943542d4142492d4641494c5552452d4e414d45442d303031292e0a3b20416e20656666656374277320606566666563744661696c7572657360206c697374204d555354206861766520756e697175652060636f6f7264696e61746560733a2073696e6365207468650a3b206f62737472756374696f6e206d6170206973206b6579656420627920636f6f7264696e6174652c2074776f206661696c757265732073686172696e67206120636f6f7264696e61746520286576656e0a3b207769746820646966666572656e7420617574686f72697479436c6173732f7061796c6f61645479706529206d616b652065786861757374697665206d617070696e6720616e642062696e6465720a3b20747970696e6720616d626967756f757320616e64206172652072656a6563746564202845444943542d4142492d4641494c5552452d554e495155452d303031292e0a3b0a3b2045666665637473206361727279207468656972206661696c757265732061732061206d617020607b206661696c7572652d6964656e74203d3e206566666563742d6661696c7572652d626f6479207d600a3b202873656520746865207461726765742f6c61777061636b2065666665637420736368656d6173292e20546865206661696c75726520636f6f7264696e61746520697320746865206d61700a3b204b45592c20736f206974206973206e6f7420726570656174656420696e2074686520626f647920616e642063616e6e6f74206469736167726565207769746820746865206b65792e0a6566666563742d6661696c7572652d626f6479203d207b0a2020617574686f72697479436c6173733a20617574686f726974792d636c6173732c0a20207061796c6f6164547970653a20636f72652d747970652d7265662c202020202020202020202020203b2074797065642c20626f756e64656420286d617920626520656d707479207265636f7264290a7d0a0a3b2041206661696c75726520636f6f7264696e617465206d7573742062652061206261726520456469637420606964656e746020286c65747465722f756e64657273636f7265207468656e0a3b206c6574746572732f6469676974732f756e64657273636f7265732920414e44206d757374206e6f742062652061207265736572766564206b6579776f72642028652e672e2060656c7365602c0a3b20606261736973602c20607768657265602c206072657175697265602c2060666f72602c2060696660292e2054686520736f75726365206f62737472756374696f6e2d6d6170204c4853206f6e6c790a3b20616363657074732061206e6f6e2d6b6579776f726420606964656e74602c20736f20612068797068656e2f646f742f6b6579776f726420636f6f7264696e61746520776f756c642062650a3b204142492d76616c69642079657420696d706f737369626c6520746f206d617020657868617573746976656c7920696e20736f757263652e20546865207265676578206361707475726573207468650a3b206c65786963616c2073686170653b206b6579776f7264206578636c7573696f6e20697320616e206164646974696f6e616c2076616c69646174696f6e2072756c650a3b202845444943542d4142492d4641494c5552452d4944454e542d303031292e0a6661696c7572652d6964656e74203d2074737472202e72656765787020225b412d5a612d7a5f5d5b412d5a612d7a302d395f5d2a220a0a6566666563742d6b696e64203d20227265616422202f202263726561746522202f2022656e7375726522202f20227265706c61636522202f202264656c65746522202f0a202020202020202020202020202022617070656e6422202f202272656475636522202f202273656d616e7469632e656d697422202f2022637573746f6d220a0a617574686f726974792d636c617373203d2022646f6d61696e4d61707061626c6522202f20227061727469636970616e744f776e656422202f2022696e746567726974794661756c7422202f0a202020202020202020202020202020202020227265736f757263654661756c7422202f2022696e7465726e616c4661756c74220a0a636f72652d747970652d726566203d20747374722020203b2063616e6f6e6963616c20436f7265207479706520636f6f7264696e6174650a0a3b20416e206f7065726174696f6e2070726f66696c6520737570706c69657320746865206f707469632074656d706c617465206120436f726520696e74656e74207265736f6c766573206974730a3b206f707469634b696e642f626f756e646172794b696e642f737570706f7274506f6c6963792f6c6f7373446973706f736974696f6e2066726f6d2e205461726765742070726f66696c657320616e640a3b206c61777061636b73207075626c6973682074686573652061732061206d617020607b20636f6f7264696e617465203d3e206f7065726174696f6e2d70726f66696c65207d602c20736f207468650a3b20636f6f7264696e61746520697320746865204b45592c206e6f7420612076616c7565206669656c64202845444943542d4f505449432d54454d504c4154452d4f574e45522d3030312c0a3b2045444943542d4142492d4f5050524f46494c452d554e495155452d303031292e0a6f7065726174696f6e2d70726f66696c65203d207b0a20206f7074696354656d706c6174653a206f707469632d74656d706c6174652c0a20206566666563745072656469636174653a20747374722c20202020202020202020203b20636f6f7264696e617465206f6620746865206f7065726174696f6e2d6d6f6465207072656469636174650a7d0a0a6f707469632d74656d706c617465203d207b0a20206f707469634b696e643a2022726576656c6174696f6e22202f20226166666563745265696e746567726174696f6e222c0a2020626f756e646172794b696e643a202270726f6a656374696f6e22202f2022616666656374222c0a2020737570706f7274506f6c6963793a20747374722c202020202020202020202020203b2063616e6f6e6963616c20737570706f72742d706f6c69637920636f6f7264696e6174650a20206c6f7373446973706f736974696f6e3a20747374722c20202020202020202020203b2063616e6f6e6963616c206c6f73732d646973706f736974696f6e20636f6f7264696e6174650a20203f20626173697354656d706c6174653a20747374722c20202020202020202020203b206f7074696f6e616c206469676573742d6c6f636b65642062617369732074656d706c61746520636f6f72640a20203b2074686520617065727475726520726571756972656d656e7420746869732074656d706c61746520737570706c6965732e205265717569726564207768656e207468652074656d706c6174650a20203b2069732074686520736f75726365206f66206120436f7265206f707469632773206170657274757265526571756972656d656e742028692e652e2074686520696e74656e7420686173206e6f0a20203b20736f757263652060666f6f747072696e74203c3d202e2e2e60292c2073696e6365206170657274757265526571756972656d656e74206973206d616e6461746f727920696e20436f72650a20203b202845444943542d4f505449432d41504552545552452d5245462d303031292e0a20203f206170657274757265526571756972656d656e743a2061706572747572652d726571756972656d656e742c0a7d0a0a3b206170657274757265526571756972656d656e742069732061207479706564207265666572656e63652c206e65766572206120667265652d666f726d20737472696e672e2041207265766965770a3b2072656e646572696e67206d61792073686f772069747320636f6f7264696e617465202845444943542d4f505449432d41504552545552452d5245462d303031292e0a61706572747572652d726571756972656d656e74203d20666f6f747072696e742d6365696c696e672d726566202f2061627374726163742d666f6f747072696e742d6f626c69676174696f6e2d7265660a666f6f747072696e742d6365696c696e672d726566203d207b206b696e643a2022666f6f747072696e744365696c696e67222c207265663a2074737472207d0a61627374726163742d666f6f747072696e742d6f626c69676174696f6e2d726566203d207b206b696e643a20226162737472616374466f6f747072696e744f626c69676174696f6e222c207265663a2074737472207d0a0a3b202d2d2d2065646963742d636f72652e6364646c202d2d2d0a3b2065646963742d636f72652e6364646c0a3b204e6f726d617469766520736368656d6120666f722074686520456469637420436f72652076312073656d616e746963206d6f64656c2e0a3b0a3b2053636f706520626f756e646172793a20746869732066696c6520646566696e657320436f7265206d65616e696e6720616e6420736368656d61207368617065206f6e6c792e20497420646f65730a3b206e6f7420646566696e6520612063616e6f6e6963616c20656e636f6465722c20436f7265206d6f64756c652068617368206669656c64732c20686173682066697874757265732c207461726765740a3b206c6f776572696e672c2061646d697373696f6e2062756e646c65732c206f72207461726765742d6f776e65642049522e0a0a636f72652d6d6f64756c65203d207b0a202061706956657273696f6e3a202265646963742e636f72652f7631222c0a2020636f6f7264696e6174653a20747374722c0a2020696d706f7274733a205b2a20636f72652d696d706f72745d2c0a202074797065733a207b202a2074737472203d3e20636f72652d74797065207d2c0a2020696e74656e74733a207b202b2074737472203d3e20636f72652d696e74656e74207d2c0a20207265717569726564436f72654361706162696c69746965733a205b2a20747374725d2c0a7d0a0a636f72652d696d706f7274203d207b0a20206b696e643a20226c61777061636b22202f202274617267657422202f2022636f7265222c0a20207265663a207265736f757263652d7265662c0a20203f20616c6961733a20747374722c0a7d0a0a3b202d2d2d207479706573202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a636f72652d74797065203d20636f72652d7363616c61722d74797065202f20636f72652d7265636f72642d74797065202f20636f72652d76617269616e742d74797065202f0a202020202020202020202020636f72652d6f7074696f6e2d74797065202f20636f72652d6c6973742d74797065202f20636f72652d6d61702d74797065202f0a202020202020202020202020636f72652d6361706162696c6974792d7265662d747970650a0a636f72652d7363616c61722d74797065203d20636f72652d626f6f6c2d74797065202f20636f72652d696e742d74797065202f20636f72652d737472696e672d74797065202f0a20202020202020202020202020202020202020636f72652d62797465732d74797065202f20636f72652d756e69742d747970650a0a636f72652d626f6f6c2d74797065203d207b206b696e643a2022426f6f6c22207d0a636f72652d756e69742d74797065203d207b206b696e643a2022556e697422207d0a636f72652d696e742d74797065203d207b0a20206b696e643a202249363422202f202255363422202f202249333222202f202255333222202f202249313622202f202255313622202f2022493822202f20225538222c0a7d0a636f72652d737472696e672d74797065203d207b0a20206b696e643a2022537472696e67222c0a20206d61783a2075696e742c0a202063616e6f6e6963616c3a2022756e69636f64652d7363616c61722d6e666322202f20227261772d75746638222c0a7d0a636f72652d62797465732d74797065203d207b0a20206b696e643a20224279746573222c0a20206d61783a2075696e742c0a7d0a636f72652d7265636f72642d74797065203d207b0a20206b696e643a20225265636f7264222c0a20206669656c64733a207b202a2074737472203d3e20636f72652d747970652d726566207d2c0a7d0a636f72652d76617269616e742d74797065203d207b0a20206b696e643a202256617269616e74222c0a202063617365733a207b202b2074737472203d3e2076617269616e742d636173652d626f6479207d2c0a7d0a76617269616e742d636173652d626f6479203d207b0a20203f207061796c6f61643a20636f72652d747970652d7265662c0a7d0a636f72652d6f7074696f6e2d74797065203d207b0a20206b696e643a20224f7074696f6e222c0a20206974656d3a20636f72652d747970652d7265662c0a7d0a636f72652d6c6973742d74797065203d207b0a20206b696e643a20224c697374222c0a20206974656d3a20636f72652d747970652d7265662c0a20206d61783a2075696e742c0a7d0a636f72652d6d61702d74797065203d207b0a20206b696e643a20224d6170222c0a20206b65793a20636f72652d747970652d7265662c0a202076616c75653a20636f72652d747970652d7265662c0a20206d61783a2075696e742c0a7d0a636f72652d6361706162696c6974792d7265662d74797065203d207b0a20206b696e643a20224361706162696c697479526566222c0a20206974656d3a20636f72652d747970652d7265662c0a7d0a0a3b20636f72652d747970652d72656620697320646566696e656420696e2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d612e0a0a3b202d2d2d207265666572656e63657320616e642076616c756573202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a3b204c6f63616c206964656e7469747920697320616c7068612d737461626c652e20606964602069732074686520636f6d70696c65722d6f776e6564206c6f63616c20636f6f7264696e6174653b0a3b2060616c7068614e616d656020697320746865206e6f726d616c697a65642068756d616e2f6465627567206e616d652e20536f757263652062696e646572207370656c6c696e67206973206e6f740a3b206964656e746974792e0a6c6f63616c2d726566203d207b0a202069643a20747374722c0a2020616c7068614e616d653a20747374722c0a2020747970653a20636f72652d747970652d7265662c0a7d0a0a636f72652d76616c7565203d20636f72652d6e756c6c2d76616c7565202f20636f72652d626f6f6c2d76616c7565202f20636f72652d696e742d76616c7565202f0a20202020202020202020202020636f72652d737472696e672d76616c7565202f20636f72652d62797465732d76616c7565202f20636f72652d7265636f72642d76616c7565202f0a20202020202020202020202020636f72652d76617269616e742d76616c7565202f20636f72652d6c6973742d76616c7565202f20636f72652d6d61702d76616c7565202f0a20202020202020202020202020636f72652d6361706162696c6974792d76616c75650a0a636f72652d6e756c6c2d76616c7565203d207b206b696e643a20226e756c6c22207d0a636f72652d626f6f6c2d76616c7565203d207b206b696e643a2022626f6f6c222c2076616c75653a20626f6f6c207d0a636f72652d696e742d76616c7565203d207b206b696e643a2022696e74222c2077696474683a20747374722c2076616c75653a20696e74207d0a636f72652d737472696e672d76616c7565203d207b206b696e643a2022737472696e67222c2076616c75653a2074737472207d0a636f72652d62797465732d76616c7565203d207b206b696e643a20226279746573222c2076616c75653a2062737472207d0a636f72652d7265636f72642d76616c7565203d207b206b696e643a20227265636f7264222c206669656c64733a207b202a2074737472203d3e20636f72652d76616c7565207d207d0a636f72652d76617269616e742d76616c7565203d207b0a20206b696e643a202276617269616e74222c0a2020747970653a20636f72652d747970652d7265662c0a2020636173653a20747374722c0a20203f207061796c6f61643a20636f72652d76616c75652c0a7d0a636f72652d6c6973742d76616c7565203d207b206b696e643a20226c697374222c2076616c7565733a205b2a20636f72652d76616c75655d207d0a636f72652d6d61702d76616c7565203d207b206b696e643a20226d6170222c20656e74726965733a205b2a205b6b65793a20636f72652d76616c75652c2076616c75653a20636f72652d76616c75655d5d207d0a636f72652d6361706162696c6974792d76616c7565203d207b0a20206b696e643a20226361706162696c697479222c0a2020726563656970743a207368613235362d6469676573742c0a7d0a0a3b2045646963742d617574686f72656420707572652068656c70657273207573652061207075726520436f72652066756e6374696f6e20626f64792e2054686520626f64792063616e2062696e640a3b20707572652065787072657373696f6e7320616e642072657475726e20616e2065787072657373696f6e2c206275742069742063616e6e6f7420636f6e7461696e20436f7265206566666563742c0a3b2067756172642c206272616e63682c206c6f6f702c206d617463682d6e6f64652c206f722070726f6f662d6f626c69676174696f6e206e6f6465732e0a636f72652d666e2d626f6479203d207b0a2020706172616d733a205b2a206c6f63616c2d7265665d2c0a2020626f64793a20636f72652d707572652d626c6f636b2c0a7d0a0a636f72652d707572652d626c6f636b203d207b0a20206c6f63616c733a205b2a206c6f63616c2d7265665d2c0a202062696e64696e67733a205b2a20707572652d6c65742d6e6f64655d2c0a2020726573756c743a20636f72652d657870722c0a7d0a0a707572652d6c65742d6e6f6465203d207b0a20206b696e643a20226c6574222c0a202062696e64696e673a206c6f63616c2d7265662c0a202076616c75653a20636f72652d657870722c0a7d0a0a3b202d2d2d2065787072657373696f6e7320616e642070726564696361746573202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a636f72652d65787072203d206c6f63616c2d65787072202f20636f6e73742d65787072202f207265636f72642d65787072202f206669656c642d65787072202f0a20202020202020202020202076617269616e742d65787072202f206d617463682d65787072202f2063616c6c2d65787072202f206c6973742d65787072202f206d61702d65787072202f0a20202020202020202020202069662d657870720a0a6c6f63616c2d65787072203d207b206b696e643a20226c6f63616c222c207265663a206c6f63616c2d726566207d0a636f6e73742d65787072203d207b206b696e643a2022636f6e7374222c2076616c75653a20636f72652d76616c7565207d0a7265636f72642d65787072203d207b206b696e643a20227265636f7264222c206669656c64733a207b202a2074737472203d3e20636f72652d65787072207d207d0a6669656c642d65787072203d207b206b696e643a20226669656c64222c20626173653a20636f72652d657870722c206669656c643a2074737472207d0a76617269616e742d65787072203d207b0a20206b696e643a202276617269616e74222c0a2020747970653a20636f72652d747970652d7265662c0a2020636173653a20747374722c0a20203f207061796c6f61643a20636f72652d657870722c0a7d0a6d617463682d65787072203d207b0a20206b696e643a20226d61746368222c0a20207363727574696e65653a20636f72652d657870722c0a202061726d733a205b2b206d617463682d61726d5d2c0a7d0a6d617463682d61726d203d207b0a2020636173653a20747374722c0a20203f2062696e6465723a206c6f63616c2d7265662c0a2020626f64793a20636f72652d657870722c0a7d0a63616c6c2d65787072203d207b0a20206b696e643a202263616c6c222c0a202063616c6c65653a20747374722c0a202074797065417267733a205b2a20636f72652d747970652d7265665d2c0a2020617267733a205b2a20636f72652d657870725d2c0a7d0a6c6973742d65787072203d207b206b696e643a20226c697374222c2076616c7565733a205b2a20636f72652d657870725d207d0a6d61702d65787072203d207b206b696e643a20226d6170222c20656e74726965733a205b2a205b6b65793a20636f72652d657870722c2076616c75653a20636f72652d657870725d5d207d0a69662d65787072203d207b0a20206b696e643a20226966222c0a20207072656469636174653a20636f72652d7072656469636174652c0a20207468656e3a20636f72652d657870722c0a2020656c73653a20636f72652d657870722c0a7d0a0a636f72652d707265646963617465203d20747275652d707265646963617465202f2066616c73652d707265646963617465202f206e6f742d707265646963617465202f0a2020202020202020202020202020202020616c6c2d707265646963617465202f20616e792d707265646963617465202f20636f6d706172652d707265646963617465202f0a202020202020202020202020202020202063616c6c2d707265646963617465202f206f62737472756374696f6e2d7072656469636174650a0a747275652d707265646963617465203d207b206b696e643a20227472756522207d0a66616c73652d707265646963617465203d207b206b696e643a202266616c736522207d0a6e6f742d707265646963617465203d207b206b696e643a20226e6f74222c2076616c75653a20636f72652d707265646963617465207d0a616c6c2d707265646963617465203d207b206b696e643a2022616c6c222c2076616c7565733a205b2b20636f72652d7072656469636174655d207d0a616e792d707265646963617465203d207b206b696e643a2022616e79222c2076616c7565733a205b2b20636f72652d7072656469636174655d207d0a636f6d706172652d707265646963617465203d207b0a20206b696e643a2022636f6d70617265222c0a20206f703a20223d3d22202f2022213d22202f20223c22202f20223c3d22202f20223e22202f20223e3d222c0a20206c6566743a20636f72652d657870722c0a202072696768743a20636f72652d657870722c0a7d0a63616c6c2d707265646963617465203d207b0a20206b696e643a202263616c6c222c0a20207072656469636174653a20747374722c0a2020617267733a205b2a20636f72652d657870725d2c0a7d0a6f62737472756374696f6e2d707265646963617465203d207b0a20206b696e643a20226f62737472756374696f6e222c0a2020636f6f7264696e6174653a206661696c7572652d6964656e742c0a20207061796c6f61643a20636f72652d657870722c0a7d0a0a696e7075742d636f6e73747261696e74203d207b0a2020636f6f7264696e6174653a20747374722c0a2020736f757263653a2022776865726522202f2022636f6d70696c6572222c0a20207072656469636174653a20636f72652d7072656469636174652c0a7d0a0a3b202d2d2d20696e74656e74732c20626c6f636b732c20616e64206e6f646573202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a636f72652d696e74656e74203d207b0a2020696e7075743a20636f72652d747970652d7265662c0a20206f75747075743a20636f72652d747970652d7265662c0a202072657175697265644f7065726174696f6e50726f66696c653a20747374722c0a20203f2062617369733a20636f72652d657870722c0a2020696e707574436f6e73747261696e74733a205b2a20696e7075742d636f6e73747261696e745d2c0a2020636f72654576616c756174696f6e4275646765743a20636f72652d6275646765742c0a2020626f64793a20636f72652d626c6f636b2c0a20203f206f707469633a20636f72652d6f707469632c0a7d0a0a636f72652d627564676574203d207b0a20206d617853746570733a2075696e742c0a20206d6178416c6c6f636174656442797465733a2075696e742c0a20206d61784f757470757442797465733a2075696e742c0a7d0a0a636f72652d6f70746963203d207b0a20206f707469634b696e643a2022726576656c6174696f6e22202f20226166666563745265696e746567726174696f6e222c0a2020626f756e646172794b696e643a202270726f6a656374696f6e22202f2022616666656374222c0a20206170657274757265526571756972656d656e743a2061706572747572652d726571756972656d656e742c0a2020737570706f7274506f6c6963793a20747374722c0a20206c6f7373446973706f736974696f6e3a20747374722c0a7d0a0a636f72652d626c6f636b203d207b0a20206c6f63616c733a205b2a206c6f63616c2d7265665d2c0a20206e6f6465733a205b2a20636f72652d6e6f64655d2c0a2020726573756c743a20636f72652d657870722c0a7d0a0a636f72652d6e6f6465203d206c65742d6e6f6465202f20726571756972652d6e6f6465202f206566666563742d6e6f6465202f2067756172642d6e6f6465202f206272616e63682d6e6f6465202f0a202020202020202020202020666f722d6e6f6465202f206d617463682d6e6f6465202f2070726f6f662d6f626c69676174696f6e2d6e6f64650a0a6c65742d6e6f6465203d207b0a20206b696e643a20226c6574222c0a202062696e64696e673a206c6f63616c2d7265662c0a202076616c75653a20636f72652d657870722c0a7d0a726571756972652d6e6f6465203d207b0a20206b696e643a202272657175697265222c0a20207072656469636174653a20636f72652d7072656469636174652c0a20206f6e4661696c7572653a20726571756972652d6661696c7572652d61726d2c0a7d0a726571756972652d6661696c7572652d61726d203d207465726d696e616c2d726571756972652d6661696c757265202f0a20202020202020202020202020202020202020202020636f6e74696e75652d6f6273747275637465642d726571756972652d6661696c7572650a7465726d696e616c2d726571756972652d6661696c757265203d207b0a20206b696e643a20227465726d696e616c222c0a2020726561736f6e3a206f62737472756374696f6e2d726561736f6e2c0a7d0a636f6e74696e75652d6f6273747275637465642d726571756972652d6661696c757265203d207b0a20206b696e643a2022636f6e74696e75654f627374727563746564222c0a2020726561736f6e3a206f62737472756374696f6e2d726561736f6e2c0a7d0a6f62737472756374696f6e2d726561736f6e203d207b0a2020726561736f6e4b696e643a20747374722c0a20207061796c6f61643a207b202a2074737472203d3e20636f72652d65787072207d2c0a7d0a6566666563742d6e6f6465203d207b0a20206b696e643a2022656666656374222c0a202062696e64696e673a206c6f63616c2d7265662c0a20206566666563743a20747374722c0a2020696e7075743a20636f72652d657870722c0a20206f62737472756374696f6e4d61703a207b202a206661696c7572652d6964656e74203d3e206f62737472756374696f6e2d61726d207d2c0a7d0a6f62737472756374696f6e2d61726d203d207b0a202062696e6465723a206c6f63616c2d7265662c0a202076616c75653a20636f72652d657870722c0a7d0a67756172642d6e6f6465203d207b0a20206b696e643a20226775617264222c0a20207072656469636174653a20636f72652d7072656469636174652c0a20206f62737472756374696f6e3a20636f72652d657870722c0a7d0a6272616e63682d6e6f6465203d207b0a20206b696e643a20226272616e6368222c0a20207072656469636174653a20636f72652d7072656469636174652c0a20207468656e3a20636f72652d626c6f636b2c0a2020656c73653a20636f72652d626c6f636b2c0a7d0a666f722d6e6f6465203d207b0a20206b696e643a2022666f72222c0a202062696e6465723a206c6f63616c2d7265662c0a2020697465723a20636f72652d657870722c0a2020626f756e643a20636f72652d626f756e642c0a2020626f64793a20636f72652d626c6f636b2c0a7d0a6d617463682d6e6f6465203d207b0a20206b696e643a20226d61746368222c0a20207363727574696e65653a20636f72652d657870722c0a202061726d733a205b2b206d617463682d626c6f636b2d61726d5d2c0a7d0a6d617463682d626c6f636b2d61726d203d207b0a2020636173653a20747374722c0a20203f2062696e6465723a206c6f63616c2d7265662c0a2020626f64793a20636f72652d626c6f636b2c0a7d0a70726f6f662d6f626c69676174696f6e2d6e6f6465203d207b0a20206b696e643a202270726f6f66222c0a2020636f6f7264696e6174653a20747374722c0a20207072656469636174653a20636f72652d7072656469636174652c0a7d0a0a636f72652d626f756e64203d206c69746572616c2d626f756e64202f20636f6f7264696e6174652d626f756e640a6c69746572616c2d626f756e64203d207b206b696e643a20226c69746572616c222c2076616c75653a2075696e74207d0a636f6f7264696e6174652d626f756e64203d207b206b696e643a2022636f6f7264696e617465222c207265663a2074737472207d0a0a3b20536861726564207265736f757263652d7265662c207368613235362d6469676573742c206661696c7572652d6964656e742c2061706572747572652d726571756972656d656e742c20616e640a3b20636f72652d747970652d7265662061726520646566696e6564206f6e636520696e2065646963742d636f6d6d6f6e2e6364646c2e0a0a3b202d2d2d2065646963742d6c61777061636b2e6364646c202d2d2d0a3b2065646963742d6c61777061636b2e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f7220746865204564696374206c61777061636b206d616e696665737420616e64206578706f727420737572666163652e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e204a534f4e20696e207468652070726f73652073706563730a3b2069732061207265766965772072656e646572696e672067656e6572617465642066726f6d207468697320736368656d61202845444943542d4142492d4e4f4455502d303031292e0a0a6c61777061636b2d6d616e6966657374203d207b0a202061706956657273696f6e3a202265646963742e6c61777061636b2f7631222c0a202069643a20747374722c0a202076657273696f6e3a20747374722c0a20206163636570746564436f72654162693a205b2b20747374725d2c0a2020646570656e64656e636965733a205b2a206c61777061636b2d6465705d2c202020202020202020203b20616379636c69632c206469676573742d6c6f636b6564202845444943542d4c41575041434b2d4441472d303031290a20206578706f7274733a207265736f757263652d7265662c0a20203f2074617267657441646170746572733a205b2b207461726765742d616461707465725d2c2020203b207265717569726564206f6e6c7920696620616e792072756e74696d6520656666656374206578697374730a20203f2068656c706572436f6d706f6e656e743a2065786563757461626c652d636f6d706f6e656e742c203b2065786563757461626c652068656c70657273206361727279207468656972206f776e2073616e64626f782b6675656c0a202076657269666965723a2076657269666965722c202020202020202020202020202020202020202020203b20636c61737369666965643a206465636c61726174697665206f722065786563757461626c650a2020636f6d7061746962696c6974793a207265736f757263652d7265662c0a2020636f6e666f726d616e636546697874757265436f727075733a207265736f757263652d7265662c0a7d0a0a3b2041207665726966696572206973206569746865722061206465636c617261746976652072756c6573657420286e6f2072756e74696d6529206f7220616e2065786563757461626c650a3b20636f6d706f6e656e742e20416e2065786563757461626c65207665726966696572204d55535420636172727920697473206f776e2073616e64626f7820616e64206675656c206d6f64656c2c0a3b20736f2074686520736368656d6120656e666f726365732074686174206e6f2065786563757461626c6520636f6d706f6e656e74206973206c65667420756e626f756e6465640a3b202845444943542d4142492d56455249464945522d424f554e442d303031292e0a7665726966696572203d206465636c617261746976652d7665726966696572202f2065786563757461626c652d76657269666965720a6465636c617261746976652d7665726966696572203d207b20636c6173733a20226465636c61726174697665222c2072756c657365743a207265736f757263652d726566207d0a65786563757461626c652d7665726966696572203d207b0a2020636c6173733a202265786563757461626c65222c0a2020636f6d706f6e656e743a207265736f757263652d7265662c0a202073616e64626f783a207265736f757263652d7265662c0a20206675656c4d6f64656c3a207265736f757263652d7265662c0a7d0a0a3b20416e792065786563757461626c6520636f6d706f6e656e7420697320626f756e64656420627920697473206f776e2073616e64626f78202b206675656c206d6f64656c2e0a65786563757461626c652d636f6d706f6e656e74203d207b0a2020636f6d706f6e656e743a207265736f757263652d7265662c0a202073616e64626f783a207265736f757263652d7265662c0a20206675656c4d6f64656c3a207265736f757263652d7265662c0a7d0a0a6c61777061636b2d646570203d207b2069643a20747374722c2076657273696f6e3a20747374722c206469676573743a207368613235362d646967657374207d0a0a3b20416461707465722073656c656374696f6e206b65797320534f4c454c59206f666620746865206469676573742d6c6f636b65642060616363657074656454617267657450726f66696c65600a3b20286974732060696460206973207468652070726f66696c652069643b206974732060646967657374602070696e73207468652065786163742070726f66696c652f76657273696f6e292e2054686572650a3b20617265206e6f20696e646570656e64656e7420646973706c617920737472696e6773207468617420636f756c64206469736167726565207769746820746865206c6f636b2c20736f20610a3b207265736f6c7665722063616e6e6f742062696e6420616e206164617074657220746f206f6e6520746172676574207768696c6520746865206c6f636b2070726f76657320616e6f746865720a3b202845444943542d4c41575041434b2d414441505445522d54415247455449522d303031292e0a7461726765742d61646170746572203d207b0a2020616363657074656454617267657450726f66696c653a207265736f757263652d7265662c202020203b206469676573742d6c6f636b65642c20617574686f72697461746976652073656c6563746f720a2020616363657074656454617267657449723a207265736f757263652d7265662c2020202020202020203b206469676573742d6c6f636b65640a2020616461707465723a207265736f757263652d7265662c0a7d0a0a3b20536861726564207479706573207265736f757263652d72656620616e64207368613235362d6469676573742061726520646566696e6564206f6e636520696e0a3b2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d61202845444943542d4142492d4e4f4455502d303031292e0a0a3b202d2d2d206578706f72742073757266616365202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a6c61777061636b2d6578706f727473203d207b0a202074797065733a205b2a206578706f727465642d747970655d2c0a2020636f6e7374616e74733a205b2a206578706f727465642d636f6e7374616e745d2c0a20207075726546756e6374696f6e733a205b2a20707572652d66756e6374696f6e5d2c0a2020656666656374733a205b2a2073656d616e7469632d6566666563745d2c0a20206f62737472756374696f6e733a205b2a206f62737472756374696f6e2d6465665d2c0a20203b206b65796564206279206f7065726174696f6e2d70726f66696c6520636f6f7264696e61746520e2869220756e697175656e65737320656e666f726365640a20203b202845444943542d4142492d4f5050524f46494c452d554e495155452d303031290a20203b206f7065726174696f6e2d70726f66696c65207265636f7264732074686973206c61777061636b206578706f72747320286f707469632074656d706c6174657320746861740a20203b2060696d706c656d656e7473602f6070726f66696c656020636c6175736573207265736f6c766520616761696e7374292e206f7065726174696f6e2d70726f66696c652069730a20203b20646566696e656420696e2065646963742d636f6d6d6f6e2e6364646c202845444943542d4142492d4f5050524f46494c452d534c4f542d303031292e0a20206f7065726174696f6e50726f66696c65733a207b202a2074737472203d3e206f7065726174696f6e2d70726f66696c65207d2c20203b206b6579656420627920636f6f7264696e6174650a7d0a0a6578706f727465642d7479706520202020203d207b20636f6f7264696e6174653a20747374722c20646566696e6974696f6e3a20636f72652d747970652d726566207d0a6578706f727465642d636f6e7374616e74203d207b20636f6f7264696e6174653a20747374722c20747970653a20636f72652d747970652d7265662c2076616c75653a20616e79207d0a0a3b204120707572652068656c7065722069732061206469736372696d696e6174656420756e696f6e2062792060736f75726365602c20736f2074686520736368656d6120697473656c660a3b2067756172616e7465657320616e20696d706c656d656e746174696f6e20657869737473202845444943542d4c41575041434b2d505552452d494d504c2d303031293a0a3b2020202d20226564696374223a20617574686f72656420696e2045646963742f436f72653b2074686520436f726520626f6479206973206361727269656420696e6c696e6520286861736865640a3b20202020207769746820746865206578706f72742073757266616365292e2054686520736368656d61207265717569726573207468652060626f647960206669656c642e0a3b2020202d2022636f6d706f6e656e74223a20696d706c656d656e746564206f7574736964652045646963743b2063617272696573206e6f20696e6c696e6520626f647920616e6420696e73746561640a3b20202020206361727269657320697473206f776e206469676573742d6c6f636b65642060696d706c656d656e746174696f6e60202873616e64626f78202b206675656c292e20497420646f65730a3b20202020206e6f7420646570656e64206f6e20746865206f7074696f6e616c206d616e69666573742d6c6576656c2068656c706572436f6d706f6e656e742e0a707572652d66756e6374696f6e203d2065646963742d707572652d66756e6374696f6e202f20636f6d706f6e656e742d707572652d66756e6374696f6e0a0a707572652d66756e6374696f6e2d636f6d6d6f6e203d20280a2020636f6f7264696e6174653a20747374722c0a202074797065506172616d65746572733a205b2a20747374725d2c0a2020706172616d6574657254797065733a205b2a20636f72652d747970652d7265665d2c2020202020203b20616c6c20626f756e6465640a202072657475726e547970653a20636f72652d747970652d7265662c20202020202020202020202020203b20626f756e6465640a2020636f737454656d706c6174653a20747374722c0a202064657465726d696e69736d436c6173733a2022746f74616c22202f2022746f74616c2d776974682d74797065642d646961676e6f73746963222c0a290a0a65646963742d707572652d66756e6374696f6e203d207b0a2020707572652d66756e6374696f6e2d636f6d6d6f6e2c0a2020736f757263653a20226564696374222c0a2020626f64793a20636f72652d666e2d626f64792c2020202020202020202020202020202020202020203b20696e6c696e652c20686173682d7369676e69666963616e740a7d0a0a636f6d706f6e656e742d707572652d66756e6374696f6e203d207b0a2020707572652d66756e6374696f6e2d636f6d6d6f6e2c0a2020736f757263653a2022636f6d706f6e656e74222c0a20203b20746865206469676573742d6c6f636b656420636f6d706f6e656e7420696d706c656d656e74696e6720746869732068656c7065722e2052657175697265642061742074686520736368656d610a20203b206c6576656c20736f206120636f6d706f6e656e742068656c7065722063616e206e657665722076616c696461746520776974686f7574206120686173682d626f756e642c0a20203b2073616e64626f782b6675656c2d64657363726962656420696d706c656d656e746174696f6e202845444943542d4c41575041434b2d505552452d494d504c2d303031292e0a2020696d706c656d656e746174696f6e3a2065786563757461626c652d636f6d706f6e656e742c0a7d0a0a3b20636f72652d666e2d626f647920697320646566696e65642062792065646963742d636f72652e6364646c20616e6420617373656d626c656420776974682074686973206c61777061636b0a3b20736368656d612e2049742069732061207075726520436f72652066756e6374696f6e20626f64792c206e6f7420616e206566666563742d63617061626c6520636f72652d626c6f636b2e0a0a73656d616e7469632d656666656374203d207b0a2020636f6f7264696e6174653a20747374722c0a202074797065506172616d65746572733a205b2a20747374725d2c0a2020696e707574547970653a20636f72652d747970652d7265662c2020202020202020202020202020203b20626f756e6465640a20206f7574707574547970653a20636f72652d747970652d7265662c20202020202020202020202020203b20626f756e6465640a2020657865637574696f6e436c6173733a202270726f6f664f6e6c7922202f202272756e74696d65222c2020203b206f7274686f676f6e616c20746f207772697465436c6173730a20206566666563744b696e6448696e743a206566666563742d6b696e642c0a2020666f6f747072696e744f626c69676174696f6e3a20747374722c0a2020636f73744f626c69676174696f6e3a20747374722c0a20206566666563744661696c757265733a207b202a206661696c7572652d6964656e74203d3e206566666563742d6661696c7572652d626f6479207d2c20203b206b6579656420627920636f6f7264696e6174653b20756e697175650a20206775617264537570706f72743a20626f6f6c2c0a7d0a0a6f62737472756374696f6e2d646566203d207b0a2020636f6f7264696e6174653a20747374722c0a2020617574686f72697479436c6173733a20617574686f726974792d636c6173732c0a20207061796c6f6164536368656d613a20636f72652d747970652d7265662c20202020202020202020203b2074797065642c20626f756e64656420286d617920626520656d707479207265636f7264290a7d0a0a3b206566666563742d6661696c7572652d626f64792c206566666563742d6b696e642c20617574686f726974792d636c6173732c20616e6420636f72652d747970652d7265662061726520646566696e65640a3b206f6e636520696e2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d61202845444943542d4142492d4e4f4455502d303031292e0a0a3b202d2d2d2065646963742d6c61777061636b2d616461707465722e6364646c202d2d2d0a3b2065646963742d6c61777061636b2d616461707465722e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f72206f6e6520646972656374206465636c61726174697665206c61777061636b2074617267657420616461707465722e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a3b0a3b2054686520656e636c6f73696e67206c61777061636b206d616e69666573742073656c6563747320746865206578616374207461726765742070726f66696c652c207461726765742049522c0a3b20616e642061646170746572207265736f75726365206469676573742e2054686f7365206964656e74697469657320617265206e6f7420726570656174656420686572652e0a0a6c61777061636b2d61646170746572203d207b0a202061706956657273696f6e3a202265646963742e6c61777061636b2d616461707465722f7631222c0a2020636c6173733a20226465636c61726174697665222c0a20206f7065726174696f6e50726f66696c65733a207b0a202020202a2074737472203d3e206c61777061636b2d616461707465722d6f7065726174696f6e2d70726f66696c650a20207d2c0a2020656666656374496d706c656d656e746174696f6e733a207b0a202020202a2074737472203d3e206c61777061636b2d616461707465722d6566666563740a20207d2c0a2020627564676574733a207b0a202020202a2074737472203d3e206c61777061636b2d616461707465722d6275646765740a20207d2c0a7d0a0a3b204b657973206172652063616e6f6e6963616c206c61777061636b206f7065726174696f6e2d70726f66696c6520636f6f7264696e617465732e0a6c61777061636b2d616461707465722d6f7065726174696f6e2d70726f66696c65203d207b0a2020636f72653a20747374722c0a202073656d616e746963456666656374733a205b2b20747374725d2c0a7d0a0a3b204b657973206172652063616e6f6e6963616c206c61777061636b2073656d616e7469632d65666665637420636f6f7264696e617465732e20466f6f747072696e742c20636f73742c20616e640a3b206661696c757265206669656c6473206d7573742065786163746c792064697363686172676520746865206d61746368696e67206578706f72746564206566666563742e0a6c61777061636b2d616461707465722d656666656374203d207b0a2020746172676574496e7472696e7369633a20747374722c0a2020746172676574436f6e66696775726174696f6e3a207265736f757263652d7265662c0a20207772697465436c6173733a206c61777061636b2d616461707465722d77726974652d636c6173732c0a2020666f6f747072696e744f626c69676174696f6e3a20747374722c0a2020636f73744f626c69676174696f6e3a20747374722c0a20206661696c7572654d617070696e67733a207b202a206661696c7572652d6964656e74203d3e2074737472207d2c0a7d0a0a3b204b657973206172652063616e6f6e6963616c206578706f7274656420636f73742d6f626c69676174696f6e20636f6f7264696e617465732e0a6c61777061636b2d616461707465722d627564676574203d207b0a20206d617853746570733a2075696e742c0a20206d6178416c6c6f636174656442797465733a2075696e742c0a20206d61784f757470757442797465733a2075696e742c0a7d0a0a6c61777061636b2d616461707465722d77726974652d636c617373203d20226e6f6e6522202f20227265616422202f202263726561746522202f2022656e7375726522202f0a20202020202020202020202020202020202020202020202020202020202022617070656e6422202f20227265706c61636522202f202264656c65746522202f2022637573746f6d220a0a3b206661696c7572652d6964656e7420697320646566696e656420696e2065646963742d636f6d6d6f6e2e6364646c2e0a0a3b202d2d2d2065646963742d7461726765742d70726f66696c652e6364646c202d2d2d0a3b2065646963742d7461726765742d70726f66696c652e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f7220746865204564696374207461726765742070726f66696c65206d616e69666573742e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76310a3b202873656520535045435f636f6e74696e75756d2d636f6e74726163742d62756e646c652d76312e6d64292e204a534f4e20696e207468652070726f736520737065637320697320610a3b207265766965772072656e646572696e672067656e6572617465642066726f6d207468697320736368656d613b2074686973204344444c206973207468652073696e676c6520736f757263650a3b206f66207472757468202845444943542d4142492d4e4f4455502d303031292e0a0a7461726765742d70726f66696c652d6d616e6966657374203d207b0a202061706956657273696f6e3a202265646963742e7461726765742d70726f66696c652f7631222c0a202069643a20747374722c202020202020202020202020202020202020202020202020203b20652e672e20226563686f2e64706f220a202076657273696f6e3a20747374722c20202020202020202020202020202020202020203b20652e672e202231220a20206163636570746564436f72654162693a205b2b20747374725d2c20202020202020203b20652e672e205b2265646963742e636f72652f7631225d0a0a2020696e7472696e736963733a207265736f757263652d7265662c0a2020696e7472696e7369634e616d6573706163653a20747374722c0a20203b207075626c697368657320746869732070726f66696c652773206f7065726174696f6e2d70726f66696c65207265636f72647320286f707469632074656d706c6174657320746861740a20203b206070726f66696c65602f60696d706c656d656e74736020636c6175736573207265736f6c766520616761696e7374292e205265666572656e63657320616e0a20203b206f7065726174696f6e2d70726f66696c65732d646f63756d656e74202845444943542d4142492d4f5050524f46494c452d534c4f542d303031292e0a20206f7065726174696f6e50726f66696c65733a207265736f757263652d7265662c0a2020666f6f747072696e74416c67656272613a207265736f757263652d7265662c0a2020636f7374416c67656272613a207265736f757263652d7265662c0a202074617267657449723a207265736f757263652d7265662c0a20206f62737472756374696f6e5461786f6e6f6d793a207265736f757263652d7265662c0a202076657269666965723a207265736f757263652d7265662c0a20206c6f77657265723a207265736f757263652d7265662c0a202073616e64626f783a207265736f757263652d7265662c0a20206675656c4d6f64656c3a207265736f757263652d7265662c0a0a20203b206669656c647320746865206c616e67756167652073706563207265717569726573206f662065766572792070726f66696c650a202062756e646c6550726f66696c653a207265736f757263652d7265662c0a202067656e657261746564417274696661637450726f66696c65733a205b2a207265736f757263652d7265665d2c0a202063616e6f6e6963616c456e636f64696e6752756c65733a207265736f757263652d7265662c0a20203b20412070726f66696c65207468617420616363657074732074686520646972656374206465636c61726174697665206c61777061636b2d6164617074657220414249206e616d65732069740a20203b2065786163746c79206f6e63652e2050726f66696c6573207468617420646f206e6f7420636f6e73756d65206c61777061636b206164617074657273206c6561766520746869730a20203b206f7074696f6e616c20736c6f7420616273656e74206f7220656d7074792e0a20203f2061636365707465644c61777061636b416461707465724162693a205b5d202f205b2265646963742e6c61777061636b2d616461707465722f7631225d2c0a2020646961676e6f737469634162693a207265736f757263652d7265662c0a0a20203b206170706c69636174696f6e20646f637472696e650a20206170706c69636174696f6e4d6f64656c3a202261746f6d6963222c0a202072656164436f6e73697374656e63793a20226170706c69636174696f6e2d736e617073686f7422202f20747374722c0a202067756172644576616c756174696f6e3a2022707265636f6d6d69742d61746f6d696322202f20747374722c0a20206f62737472756374696f6e526f6c6c6261636b3a20226e6f2d76697369626c652d6566666563747322202f20747374722c0a20206d756c74695461726765743a20626f6f6c2c0a20203b207768657468657220746865207461726765742063616e206576616c7561746520707265636f6d6d697420706f7374636f6e646974696f6e20286067756172616e746565602920636865636b730a20203b20696e73696465207468652061746f6d6963206170706c69636174696f6e20756e6974202845444943542d5441524745542d504f5354434f4e442d303031290a2020706f7374636f6e646974696f6e537570706f72743a20626f6f6c2c0a0a202064657465726d696e6973746963457865637574696f6e3a207265736f757263652d7265662c0a2020636f6e666f726d616e636546697874757265436f727075733a207265736f757263652d7265662c0a7d0a0a3b20536861726564207479706573207265736f757263652d72656620616e64207368613235362d6469676573742061726520646566696e6564206f6e636520696e0a3b2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d6120627920746865206275696c640a3b202845444943542d4142492d4e4f4455502d303031292e205468657920617265206e6f74207265646566696e656420686572652e0a0a3b202d2d2d20696e7472696e736963207369676e6174757265202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a3b20546865206172746966616374207265666572656e63656420627920746865206d616e696665737427732060696e7472696e7369637360207265736f757263652d726566206973207468650a3b20696e7472696e7369632d7369676e617475726520636f7270757320646f63756d656e742062656c6f772e20497473206c61796f757420697320666978656420736f2074776f0a3b20696e646570656e64656e742070726f66696c65732076616c69646174652f686173682074686520636f72707573206964656e746963616c6c790a3b202845444943542d4142492d494e5452494e534943532d444f432d303031292e0a0a3b20696e7472696e736963732069732061204d4150206b6579656420627920636f6f7264696e6174652c20736f2074686520736368656d6120697473656c6620656e666f726365730a3b20636f6f7264696e61746520756e697175656e6573732e20412070726f766964657220726563656976657320746865207265736f6c76656420636f7270757320617320610a3b206469676573742d626f756e642073656d616e74696320696e70757420616e64207265736f6c76657320636f6f7264696e617465732077697468696e20746861742061727469666163742e0a3b2045616368206d6170206b6579204d55535420657175616c20697473207265636f726427732060636f6f7264696e61746560206669656c640a3b202845444943542d4142492d494e5452494e5349432d554e495155452d303031292e0a696e7472696e736963732d646f63756d656e74203d207b0a202061706956657273696f6e3a202265646963742e7461726765742d70726f66696c652e696e7472696e736963732f7631222c0a2020696e7472696e736963733a207b202a2074737472203d3e20696e7472696e736963207d2c0a7d0a0a3b20546865206172746966616374207265666572656e63656420627920746865206d616e6966657374277320606f7065726174696f6e50726f66696c657360207265736f757263652d7265662e0a3b206f7065726174696f6e2d70726f66696c65202f206f707469632d74656d706c6174652061726520646566696e656420696e2065646963742d636f6d6d6f6e2e6364646c2e204b657965642062790a3b20636f6f7264696e61746520736f207265736f6c7574696f6e2063616e2774207069636b206265747765656e2074776f2073616d652d636f6f7264696e6174652070726f66696c65730a3b202845444943542d4142492d4f5050524f46494c452d534c4f542d3030312c2045444943542d4142492d4f5050524f46494c452d554e495155452d303031292e0a6f7065726174696f6e2d70726f66696c65732d646f63756d656e74203d207b0a202061706956657273696f6e3a202265646963742e7461726765742d70726f66696c652e6f7065726174696f6e2d70726f66696c65732f7631222c0a202070726f66696c65733a207b202a2074737472203d3e206f7065726174696f6e2d70726f66696c65207d2c0a7d0a0a3b2041207479706564207072652d6c6f776572696e67207175657374696f6e20746861742063616e2062652070726f706f73656420627920576174736f6e206f7220616e206167656e7420616e640a3b20636865636b65642062792074686520636f6d70696c65722e2049742069732063616e6f6e6963616c2d43424f5220656e636f64656420756e6465720a3b206065646963742e6c6f776572696e672d726571756972656d656e74732f7631603b2074686520636f6d70696c657220636865636b7320746869732061727469666163742c206e6f74207468650a3b2070726f736520746861742070726f64756365642069742e0a6c6f776572696e672d726571756972656d656e7473203d207b0a202061706956657273696f6e3a202265646963742e6c6f776572696e672d726571756972656d656e74732f7631222c0a20206f7065726174696f6e50726f66696c653a20747374722c0a202073656d616e746963456666656374733a205b2a2073656d616e7469632d6566666563742d726571756972656d656e745d2c0a202072657175697265645772697465436c61737365733a205b2a2077726974652d636c6173735d2c0a202067756172644b696e64733a205b2a2067756172642d6b696e645d2c0a202061746f6d69636974793a2061746f6d69636974792d726571756972656d656e742c0a2020706f7374636f6e646974696f6e537570706f72743a20626f6f6c2c0a20206f62737472756374696f6e436f6f7264696e617465733a205b2a20747374725d2c0a2020666f6f747072696e744f626c69676174696f6e733a205b2a20747374725d2c0a2020636f73744f626c69676174696f6e733a205b2a20747374725d2c0a20206f70746963436f6e74726163743a20747374722c0a7d0a0a73656d616e7469632d6566666563742d726571756972656d656e74203d207b0a2020636f6f7264696e6174653a20747374722c0a20207772697465436c6173733a2077726974652d636c6173732c0a202067756172644b696e64733a205b2a2067756172642d6b696e645d2c0a20206f62737472756374696f6e436f6f7264696e617465733a205b2a20747374725d2c0a2020666f6f747072696e744f626c69676174696f6e733a205b2a20747374725d2c0a2020636f73744f626c69676174696f6e733a205b2a20747374725d2c0a7d0a0a77726974652d636c617373203d20226e6f6e6522202f20227265616422202f202263726561746522202f2022656e7375726522202f2022617070656e6422202f0a2020202020202020202020202020227265706c61636522202f202264656c65746522202f20747374720a67756172642d6b696e64203d2022707265636f6d6d69742d61746f6d696322202f20747374720a61746f6d69636974792d726571756972656d656e74203d202261746f6d696322202f20747374720a0a3b20412067656e75696e6520756e696f6e3a207075726520636f6e7374727563746f7273206361727279206e6f20656666656374206b696e64206f72206661696c757265733b206566666563740a3b20696e7472696e73696373206d757374202845444943542d5441524745542d494e5452494e5349432d434c4153532d303031292e2054686520736368656d6120656e666f7263657320746869732c0a3b206e6f74206120636f6d6d656e742e0a0a3b2054686520696e7472696e736963277320636f6f7264696e6174652069732074686520696e7472696e73696373206d6170204b45592c206e6f7420612076616c7565206669656c642c20736f207468650a3b206b657920616e6420636f6f7264696e6174652063616e206e65766572206469736167726565202845444943542d4142492d494e5452494e5349432d554e495155452d303031292e0a696e7472696e736963203d20707572652d696e7472696e736963202f206566666563742d696e7472696e7369630a0a707572652d696e7472696e736963203d207b0a2020696e7472696e736963436c6173733a202270757265222c0a202074797065506172616d65746572733a205b2a20747374725d2c0a2020617267756d656e7454797065733a205b2a20636f72652d747970652d7265665d2c0a202072657475726e547970653a20636f72652d747970652d7265662c0a20206775617264537570706f72743a2066616c73652c0a2020666f6f747072696e7454656d706c6174653a20747374722c0a2020636f737454656d706c6174653a20747374722c0a20207772697465436c6173733a20226e6f6e65222c0a7d0a0a6566666563742d696e7472696e736963203d207b0a2020696e7472696e736963436c6173733a2022656666656374222c0a202074797065506172616d65746572733a205b2a20747374725d2c0a2020617267756d656e7454797065733a205b2a20636f72652d747970652d7265665d2c0a202072657475726e547970653a20636f72652d747970652d7265662c0a20206566666563744b696e643a206566666563742d6b696e642c0a20203b206d6170206b65796564206279206661696c75726520636f6f7264696e61746520286661696c7572652d6964656e74293b20746865206661696c75726520636f6f7264696e6174652069730a20203b20746865206b65792c206e6f7420612076616c7565206669656c642c20736f20756e697175656e657373206973207374727563747572616c0a20203b202845444943542d4142492d4641494c5552452d554e495155452d303031292e0a20206566666563744661696c757265733a207b202a206661696c7572652d6964656e74203d3e206566666563742d6661696c7572652d626f6479207d2c0a20206775617264537570706f72743a20626f6f6c2c0a2020666f6f747072696e7454656d706c6174653a20747374722c0a2020636f737454656d706c6174653a20747374722c0a20207772697465436c6173733a20227265616422202f202263726561746522202f2022656e7375726522202f2022617070656e6422202f20227265706c61636522202f0a20202020202020202020202020202264656c65746522202f2022637573746f6d222c0a202063616e5061727469636970617465496e41746f6d696347756172643a20626f6f6c2c0a7d0a0a3b206566666563742d6661696c7572652d626f64792c206566666563742d6b696e642c20617574686f726974792d636c6173732c20616e6420636f72652d747970652d7265662061726520646566696e65640a3b206f6e636520696e2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d61202845444943542d4142492d4e4f4455502d303031292e0a0a3b202d2d2d2065646963742d617574686f726974792d66616374732e6364646c202d2d2d0a3b2065646963742d617574686f726974792d66616374732e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f722074686520666972737420636f6d70696c65722d636f6e7465787420617574686f726974792d666163747320646f63756d656e742e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a3b0a3b205468697320736368656d6120697320617373656d626c656420776974682065646963742d636f6d6d6f6e2e6364646c20736f20736f757263652e6469676573742075736573207468650a3b20736861726564207368613235362d6469676573742074797065642076616c75652e204a534f4e2069732061207265766965772f696e7075742072656e646572696e673a206974730a3b20607368613235363a3c3634206865783e6020736f75726365206469676573742069732070726f6a656374656420746f205b60736861323536602c203332207261772062797465735d206f6e0a3b2074686520776972652c20616e64206974732066616374206172726179732070726f6a65637420746f2074686520636f6f7264696e6174652d6b65796564206d6170732062656c6f772e0a0a617574686f726974792d6661637473203d207b0a202061706956657273696f6e3a202265646963742e617574686f726974792d66616374732f7631222c0a2020736f757263653a20617574686f726974792d666163742d736f757263652c0a20206f7065726174696f6e50726f66696c65733a207b202a2074737472203d3e20617574686f726974792d6f7065726174696f6e2d70726f66696c652d66616374207d2c0a20206566666563745772697465436c61737365733a207b202a2074737472203d3e20617574686f726974792d77726974652d636c617373207d2c0a2020627564676574733a207b202a2074737472203d3e20617574686f726974792d6275646765742d66616374207d2c0a7d0a0a617574686f726974792d666163742d736f75726365203d207b0a20206b696e643a20226c61777061636b22202f202274617267657450726f66696c65222c0a2020636f6f7264696e6174653a20747374722c0a20206469676573743a207368613235362d6469676573742c0a7d0a0a3b20546865206d6170206b65792069732074686520736f75726365206f7065726174696f6e2d70726f66696c6520636f6f7264696e6174652e204974206973206e6f7420726570656174656420696e0a3b207468652076616c75652c20736f2061206b657920616e6420656d62656464656420636f6f7264696e6174652063616e6e6f742064697361677265652e20416c6c6f7765642077726974650a3b20636c61737365732061726520612063616e6f6e6963616c206d61702d7365743a2074686520636c6173732069732074686520756e69717565206b657920616e64206e756c6c206973207468650a3b20756e6974206d61726b65722e2043616e6f6e6963616c2043424f52206669786573206b6579206f7264657220776974686f75742061207365636f6e64206f72646572696e672072756c652e0a617574686f726974792d6f7065726174696f6e2d70726f66696c652d66616374203d207b0a2020636f72653a20747374722c0a2020616c6c6f7765645772697465436c61737365733a207b202a20617574686f726974792d77726974652d636c617373203d3e206e756c6c207d2c0a7d0a0a3b20546865206566666563745772697465436c6173736573206d6170206b6579206973207468652073656d616e7469632065666665637420636f6f7264696e6174652e2054686520627564676574730a3b206d6170206b65792069732074686520736f757263652062756467657420636f6f7264696e6174652e2043616e6f6e6963616c2043424f52206d61702d6b657920756e697175656e6573730a3b206d616b6573206475706c6963617465206661637420636f6f7264696e61746573207374727563747572616c6c7920756e726570726573656e7461626c652e0a617574686f726974792d6275646765742d66616374203d207b0a20206d617853746570733a2075696e742c0a20206d6178416c6c6f636174656442797465733a2075696e742c0a20206d61784f757470757442797465733a2075696e742c0a7d0a0a3b20417574686f726974794661637473446f63756d656e7420763120696e74656e74696f6e616c6c792061636365707473206f6e6c792074686520777269746520636c6173736573207468650a3b2063757272656e7420636f6d70696c6572206d6f64656c2063616e20636f6e73756d652e2060637573746f6d602069732074686520736f6c6520763120637573746f6d207370656c6c696e673b0a3b20617262697472617279207461726765742d70726f66696c6520657874656e73696f6e20737472696e677320646f206e6f7420656e746572207468697320636f6d70696c657220706174682e0a617574686f726974792d77726974652d636c617373203d20226e6f6e6522202f20227265616422202f202263726561746522202f2022656e7375726522202f2022617070656e6422202f0a202020202020202020202020202020202020202020202020227265706c61636522202f202264656c65746522202f2022637573746f6d220a0a3b202d2d2d2065646963742d726573756c742d70726f6a656374696f6e2e6364646c202d2d2d0a3b20535044582d4c6963656e73652d4964656e7469666965723a204170616368652d322e300a3b2065646963742d726573756c742d70726f6a656374696f6e2e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f7220636f6d70696c65722d6f776e6564206170706c69636174696f6e2d726573756c742070726f6a656374696f6e732e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a0a726573756c742d70726f6a656374696f6e203d207b0a2020736368656d613a202265646963742e726573756c742d70726f6a656374696f6e2f7631222c0a20206f7065726174696f6e436f6f7264696e6174653a20626f756e6465642d70726f6a656374696f6e2d746578742c0a20206f7574707574547970653a20626f756e6465642d70726f6a656374696f6e2d746578742c0a20206d61784f757470757442797465733a2075696e74202e677420302c0a202065787072657373696f6e3a20726573756c742d70726f6a656374696f6e2d657870722c0a7d0a0a726573756c742d70726f6a656374696f6e2d65787072203d20726573756c742d70726f6a656374696f6e2d7265636f7264202f20726573756c742d70726f6a656374696f6e2d736f757263650a0a726573756c742d70726f6a656374696f6e2d7265636f7264203d207b0a20206b696e643a20227265636f7264222c0a20203b2054686520726f6f74207265636f726420636f756e7473206173206f6e65206f66207468652052757374206465636f6465722773203235362065787072657373696f6e206e6f6465732e0a20203b204e657374656420616767726567617465206e6f646520636f756e742072656d61696e7320616e20617574686f7269746174697665206465636f64657220636865636b2e0a20206669656c64733a207b20302a32353520626f756e6465642d70726f6a656374696f6e2d74657874203d3e20726573756c742d70726f6a656374696f6e2d65787072207d2c0a7d0a0a726573756c742d70726f6a656374696f6e2d736f75726365203d207b0a20206b696e643a2022736f75726365222c0a2020736f757263653a20726573756c742d70726f6a656374696f6e2d736f757263652d6b696e642c0a20203b204d617463686573204d41585f524553554c545f50524f4a454354494f4e5f504154485f5345474d454e545320696e2065646963742d73796e7461782e0a2020706174683a205b302a333220626f756e6465642d70726f6a656374696f6e2d746578745d2c0a7d0a0a726573756c742d70726f6a656374696f6e2d736f757263652d6b696e64203d0a20207b206b696e643a20226170706c69636174696f6e496e70757422207d202f0a20207b0a202020206b696e643a20226361706162696c697479526573756c74222c0a202020207374657049643a20626f756e6465642d70726f6a656374696f6e2d746578742c0a20207d0a0a626f756e6465642d70726f6a656374696f6e2d74657874203d2074737472202e73697a652028312e2e31303234290a0a3b202d2d2d2065646963742d7461726765742d69722e6364646c202d2d2d0a3b20535044582d4c6963656e73652d4964656e7469666965723a204170616368652d322e300a3b2065646963742d7461726765742d69722e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f72207468652045646963742d6f776e65642054617267657420495220617274696661637420656e76656c6f70652e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a3b0a3b205468697320736368656d6120697320617373656d626c656420776974682065646963742d636f6d6d6f6e2e6364646c20616e642065646963742d636f72652e6364646c2e2049740a3b2064656c696265726174656c792072657573657320436f72652065787072657373696f6e732c20707265646963617465732c20627564676574732c206c6f63616c207265666572656e6365732c0a3b206f62737472756374696f6e20726561736f6e732c20616e64206f62737472756374696f6e2061726d7320736f2074686520736368656d61206d617463686573207468652076616c75650a3b20656d6974746564206279207468652063616e6f6e6963616c2054617267657420495220656e636f64657220726174686572207468616e20726573746174696e672074686f73652074797065732e0a3b2049742064657363726962657320746865207374727563747572616c207368617065206f662076616c6964206c6f776572696e672d70726f6475636564206172746966616374732e205468650a3b206c6f776572696e6720616e6420656e636f64657220636f6e7472616374732073657061726174656c7920656e666f7263652073656d616e746963206964656e7469666965722072756c65730a3b20616e642063616e6f6e6963616c206f72646572696e672f64656475706c69636174696f6e20666f72207365742d6c696b652076616c7565732e0a0a3b2054617267657420495220656e636f64696e672072656a6563747320616e20656d707479207461726765742d70726f66696c6520636f6f7264696e617465206265666f72652062797465730a3b2065786973742c20736f207468697320726f6f74207469676874656e732074686520736861726564207374727563747572616c207265736f757263652d726566206163636f7264696e676c792e0a7461726765742d69722d7265736f757263652d726566203d207b0a202069643a2074737472202e7265676578702022283f73292e2b222c0a20206469676573743a207368613235362d6469676573742c0a7d0a0a7461726765742d69722d6172746966616374203d207461726765742d69722d636c6f7365642d6172746966616374202f207461726765742d69722d6c65676163792d61727469666163740a0a7461726765742d69722d61727469666163742d636f6d6d6f6e203d20280a20206b696e643a202274617267657449724172746966616374222c0a2020646f6d61696e3a20747374722c0a202074617267657450726f66696c653a207461726765742d69722d7265736f757263652d7265662c0a2020736f75726365436f7265436f6f7264696e6174653a2074737472202e7265676578702022283f73292e2b222c0a290a0a7461726765742d69722d636c6f7365642d6172746966616374203d207b0a20207461726765742d69722d61727469666163742d636f6d6d6f6e2c0a202073656d616e746963436c6f737572653a207461726765742d69722d73656d616e7469632d636c6f737572652c0a2020696e74656e74733a207b202a2074737472203d3e207461726765742d69722d696e74656e74207d2c0a7d0a0a7461726765742d69722d6c65676163792d6172746966616374203d207b0a20207461726765742d69722d61727469666163742d636f6d6d6f6e2c0a2020696e74656e74733a207b202a2074737472203d3e207461726765742d69722d6c65676163792d696e74656e74207d2c0a7d0a0a7461726765742d69722d73656d616e7469632d636c6f73757265203d207b0a2020736f75726365436f72653a207461726765742d69722d7265736f757263652d7265662c0a20206c61777061636b733a205b2a207461726765742d69722d7265736f757263652d7265665d2c0a7d0a0a7461726765742d69722d696e74656e74203d207b0a20207461726765742d69722d696e74656e742d636f6d6d6f6e2c0a20203f2062617369733a20636f72652d657870722c0a7d0a0a7461726765742d69722d6c65676163792d696e74656e74203d207b0a20207461726765742d69722d696e74656e742d636f6d6d6f6e2c0a7d0a0a7461726765742d69722d696e74656e742d636f6d6d6f6e203d20280a20206f7065726174696f6e50726f66696c653a20747374722c0a2020696e707574436f6e73747261696e74733a205b2a20696e7075742d636f6e73747261696e745d2c0a2020636f72654576616c756174696f6e4275646765743a20636f72652d6275646765742c0a2020726571756972656d656e74733a205b2a207461726765742d69722d726571756972656d656e745d2c0a202073746570733a205b2a207461726765742d69722d737465705d2c0a2020726573756c743a20636f72652d657870722c0a290a0a7461726765742d69722d726571756972656d656e74203d207b0a202069643a20747374722c0a20207072656469636174653a20636f72652d7072656469636174652c0a20206f6e4661696c7572653a20726571756972652d6661696c7572652d61726d2c0a7d0a0a7461726765742d69722d73746570203d207b0a202069643a20747374722c0a202062696e64696e673a206c6f63616c2d7265662c0a20206566666563743a20747374722c0a2020746172676574496e7472696e7369633a20747374722c0a2020696e7075743a20636f72652d657870722c0a20206f62737472756374696f6e4661696c757265733a205b2a206661696c7572652d6964656e745d2c0a20206f62737472756374696f6e41726d733a207b202a206661696c7572652d6964656e74203d3e206f62737472756374696f6e2d61726d207d2c0a7d0a", - "rawSha256": "ff5405708185e0bcf33dac263000fcb772c79e21145ad69da7cad0692e1a9552" + "bytesHex": "3b20535044582d4c6963656e73652d4964656e7469666965723a204170616368652d322e300a3b2065646963742d70726f76696465722d636f6e7472616374732e6364646c0a3b2047656e6572617465642066726f6d2045646963742d6f776e65642041424920667261676d656e74732e20444f204e4f5420454449542e0a0a3b202d2d2d2065646963742d636f6d6d6f6e2e6364646c202d2d2d0a3b2065646963742d636f6d6d6f6e2e6364646c0a3b20536861726564204344444c20747970657320666f722074686520456469637420414249732c20646566696e6564204f4e4345206865726520736f20746865792063616e6e6f742064726966740a3b202845444943542d4142492d4e4f4455502d303031292e2054776f2067726f7570733a0a3b2020202d207265736f757263652d7265662c207368613235362d6469676573742c206566666563742d6661696c7572652d626f64792c206566666563742d6b696e642c20617574686f726974792d636c6173732c0a3b2020202020636f72652d747970652d7265663a20617373656d626c656420776974682065646963742d7461726765742d70726f66696c652e6364646c20616e640a3b202020202065646963742d6c61777061636b2e6364646c20627920746865206275696c643b2074686f736520736368656d617320646f206e6f74207265646566696e65207468656d2e0a3b2020202d206f7065726174696f6e2d70726f66696c652c206f707469632d74656d706c6174652c2061706572747572652d726571756972656d656e7420616e6420746865697220726566733a0a3b2020202020636f6e73756d65642062792074686520436f72652f6f70746963206c61796572202865646963742d636f72652e6364646c2920616e64207265666572656e636564206279207468650a3b20202020206c616e67756167652f7461726765742d70726f66696c652073706563732e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a0a3b2041206e6f726d617469766520737562636f6d706f6e656e74207265666572656e636564206279206964656e7469747920706c7573206469676573742e204d616e696665737473206e657665720a3b20656d626564207468656972206f776e2073656c662d64696765737420696e20746865697220707265696d616765202845444943542d434f52452d53454c46484153482d303031292e0a7265736f757263652d726566203d207b2069643a20747374722c206469676573743a207368613235362d646967657374207d0a0a3b20446967657374732061726520617574686f726974617469766520617320747970656420627974652076616c7565732c206e657665722068657820737472696e67732e20526576696577204a534f4e0a3b2072656e64657273207468697320617320227368613235363a3c3634206c6f77657263617365206865783e22202845444943542d4449474553542d574952452d303031292e0a7368613235362d646967657374203d205b20616c676f726974686d3a2022736861323536222c2062797465733a2062737472202e73697a65203332205d0a0a3b2041206e616d6564206c6f772d6c6576656c206661696c75726520616e206566666563742063616e2072616973652e2054686520736f75726365206f62737472756374696f6e206d61700a3b2062696e64732069742028627920636f6f7264696e6174652920616e6420636f6e73747275637473206120747970656420646f6d61696e206f62737472756374696f6e2066726f6d206974730a3b207061796c6f6164202845444943542d4142492d4641494c5552452d4e414d45442d303031292e0a3b20416e20656666656374277320606566666563744661696c7572657360206c697374204d555354206861766520756e697175652060636f6f7264696e61746560733a2073696e6365207468650a3b206f62737472756374696f6e206d6170206973206b6579656420627920636f6f7264696e6174652c2074776f206661696c757265732073686172696e67206120636f6f7264696e61746520286576656e0a3b207769746820646966666572656e7420617574686f72697479436c6173732f7061796c6f61645479706529206d616b652065786861757374697665206d617070696e6720616e642062696e6465720a3b20747970696e6720616d626967756f757320616e64206172652072656a6563746564202845444943542d4142492d4641494c5552452d554e495155452d303031292e0a3b0a3b2045666665637473206361727279207468656972206661696c757265732061732061206d617020607b206661696c7572652d6964656e74203d3e206566666563742d6661696c7572652d626f6479207d600a3b202873656520746865207461726765742f6c61777061636b2065666665637420736368656d6173292e20546865206661696c75726520636f6f7264696e61746520697320746865206d61700a3b204b45592c20736f206974206973206e6f7420726570656174656420696e2074686520626f647920616e642063616e6e6f74206469736167726565207769746820746865206b65792e0a6566666563742d6661696c7572652d626f6479203d207b0a2020617574686f72697479436c6173733a20617574686f726974792d636c6173732c0a20207061796c6f6164547970653a20636f72652d747970652d7265662c202020202020202020202020203b2074797065642c20626f756e64656420286d617920626520656d707479207265636f7264290a7d0a0a3b2041206661696c75726520636f6f7264696e617465206d7573742062652061206261726520456469637420606964656e746020286c65747465722f756e64657273636f7265207468656e0a3b206c6574746572732f6469676974732f756e64657273636f7265732920414e44206d757374206e6f742062652061207265736572766564206b6579776f72642028652e672e2060656c7365602c0a3b20606261736973602c20607768657265602c206072657175697265602c2060666f72602c2060696660292e2054686520736f75726365206f62737472756374696f6e2d6d6170204c4853206f6e6c790a3b20616363657074732061206e6f6e2d6b6579776f726420606964656e74602c20736f20612068797068656e2f646f742f6b6579776f726420636f6f7264696e61746520776f756c642062650a3b204142492d76616c69642079657420696d706f737369626c6520746f206d617020657868617573746976656c7920696e20736f757263652e20546865207265676578206361707475726573207468650a3b206c65786963616c2073686170653b206b6579776f7264206578636c7573696f6e20697320616e206164646974696f6e616c2076616c69646174696f6e2072756c650a3b202845444943542d4142492d4641494c5552452d4944454e542d303031292e0a6661696c7572652d6964656e74203d2074737472202e72656765787020225b412d5a612d7a5f5d5b412d5a612d7a302d395f5d2a220a0a6566666563742d6b696e64203d20227265616422202f202263726561746522202f2022656e7375726522202f20227265706c61636522202f202264656c65746522202f0a202020202020202020202020202022617070656e6422202f202272656475636522202f202273656d616e7469632e656d697422202f2022637573746f6d220a0a617574686f726974792d636c617373203d2022646f6d61696e4d61707061626c6522202f20227061727469636970616e744f776e656422202f2022696e746567726974794661756c7422202f0a202020202020202020202020202020202020227265736f757263654661756c7422202f2022696e7465726e616c4661756c74220a0a636f72652d747970652d726566203d20747374722020203b2063616e6f6e6963616c20436f7265207479706520636f6f7264696e6174650a0a3b20416e206f7065726174696f6e2070726f66696c6520737570706c69657320746865206f707469632074656d706c617465206120436f726520696e74656e74207265736f6c766573206974730a3b206f707469634b696e642f626f756e646172794b696e642f737570706f7274506f6c6963792f6c6f7373446973706f736974696f6e2066726f6d2e205461726765742070726f66696c657320616e640a3b206c61777061636b73207075626c6973682074686573652061732061206d617020607b20636f6f7264696e617465203d3e206f7065726174696f6e2d70726f66696c65207d602c20736f207468650a3b20636f6f7264696e61746520697320746865204b45592c206e6f7420612076616c7565206669656c64202845444943542d4f505449432d54454d504c4154452d4f574e45522d3030312c0a3b2045444943542d4142492d4f5050524f46494c452d554e495155452d303031292e0a6f7065726174696f6e2d70726f66696c65203d207b0a20206f7074696354656d706c6174653a206f707469632d74656d706c6174652c0a20206566666563745072656469636174653a20747374722c20202020202020202020203b20636f6f7264696e617465206f6620746865206f7065726174696f6e2d6d6f6465207072656469636174650a7d0a0a6f707469632d74656d706c617465203d207b0a20206f707469634b696e643a2022726576656c6174696f6e22202f20226166666563745265696e746567726174696f6e222c0a2020626f756e646172794b696e643a202270726f6a656374696f6e22202f2022616666656374222c0a2020737570706f7274506f6c6963793a20747374722c202020202020202020202020203b2063616e6f6e6963616c20737570706f72742d706f6c69637920636f6f7264696e6174650a20206c6f7373446973706f736974696f6e3a20747374722c20202020202020202020203b2063616e6f6e6963616c206c6f73732d646973706f736974696f6e20636f6f7264696e6174650a20203f20626173697354656d706c6174653a20747374722c20202020202020202020203b206f7074696f6e616c206469676573742d6c6f636b65642062617369732074656d706c61746520636f6f72640a20203b2074686520617065727475726520726571756972656d656e7420746869732074656d706c61746520737570706c6965732e205265717569726564207768656e207468652074656d706c6174650a20203b2069732074686520736f75726365206f66206120436f7265206f707469632773206170657274757265526571756972656d656e742028692e652e2074686520696e74656e7420686173206e6f0a20203b20736f757263652060666f6f747072696e74203c3d202e2e2e60292c2073696e6365206170657274757265526571756972656d656e74206973206d616e6461746f727920696e20436f72650a20203b202845444943542d4f505449432d41504552545552452d5245462d303031292e0a20203f206170657274757265526571756972656d656e743a2061706572747572652d726571756972656d656e742c0a7d0a0a3b206170657274757265526571756972656d656e742069732061207479706564207265666572656e63652c206e65766572206120667265652d666f726d20737472696e672e2041207265766965770a3b2072656e646572696e67206d61792073686f772069747320636f6f7264696e617465202845444943542d4f505449432d41504552545552452d5245462d303031292e0a61706572747572652d726571756972656d656e74203d20666f6f747072696e742d6365696c696e672d726566202f2061627374726163742d666f6f747072696e742d6f626c69676174696f6e2d7265660a666f6f747072696e742d6365696c696e672d726566203d207b206b696e643a2022666f6f747072696e744365696c696e67222c207265663a2074737472207d0a61627374726163742d666f6f747072696e742d6f626c69676174696f6e2d726566203d207b206b696e643a20226162737472616374466f6f747072696e744f626c69676174696f6e222c207265663a2074737472207d0a0a3b202d2d2d2065646963742d636f72652e6364646c202d2d2d0a3b2065646963742d636f72652e6364646c0a3b204e6f726d617469766520736368656d6120666f722074686520456469637420436f72652076312073656d616e746963206d6f64656c2e0a3b0a3b2053636f706520626f756e646172793a20746869732066696c6520646566696e657320436f7265206d65616e696e6720616e6420736368656d61207368617065206f6e6c792e20497420646f65730a3b206e6f7420646566696e6520612063616e6f6e6963616c20656e636f6465722c20436f7265206d6f64756c652068617368206669656c64732c20686173682066697874757265732c207461726765740a3b206c6f776572696e672c2061646d697373696f6e2062756e646c65732c206f72207461726765742d6f776e65642049522e0a0a636f72652d6d6f64756c65203d207b0a202061706956657273696f6e3a202265646963742e636f72652f7631222c0a2020636f6f7264696e6174653a20747374722c0a2020696d706f7274733a205b2a20636f72652d696d706f72745d2c0a202074797065733a207b202a2074737472203d3e20636f72652d74797065207d2c0a2020696e74656e74733a207b202b2074737472203d3e20636f72652d696e74656e74207d2c0a20207265717569726564436f72654361706162696c69746965733a205b2a20747374725d2c0a7d0a0a636f72652d696d706f7274203d207b0a20206b696e643a20226c61777061636b22202f202274617267657422202f2022636f726522202f20226361706162696c697479222c0a20207265663a207265736f757263652d7265662c0a20203f20616c6961733a20747374722c0a7d0a0a3b202d2d2d207479706573202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a636f72652d74797065203d20636f72652d7363616c61722d74797065202f20636f72652d7265636f72642d74797065202f20636f72652d76617269616e742d74797065202f0a202020202020202020202020636f72652d6f7074696f6e2d74797065202f20636f72652d6c6973742d74797065202f20636f72652d6d61702d74797065202f0a202020202020202020202020636f72652d6361706162696c6974792d7265662d74797065202f20636f72652d65787465726e616c2d616374696f6e2d726571756573742d747970650a0a636f72652d7363616c61722d74797065203d20636f72652d626f6f6c2d74797065202f20636f72652d696e742d74797065202f20636f72652d737472696e672d74797065202f0a20202020202020202020202020202020202020636f72652d62797465732d74797065202f20636f72652d756e69742d747970650a0a636f72652d626f6f6c2d74797065203d207b206b696e643a2022426f6f6c22207d0a636f72652d756e69742d74797065203d207b206b696e643a2022556e697422207d0a636f72652d696e742d74797065203d207b0a20206b696e643a202249363422202f202255363422202f202249333222202f202255333222202f202249313622202f202255313622202f2022493822202f20225538222c0a7d0a636f72652d737472696e672d74797065203d207b0a20206b696e643a2022537472696e67222c0a20206d61783a2075696e742c0a202063616e6f6e6963616c3a2022756e69636f64652d7363616c61722d6e666322202f20227261772d75746638222c0a7d0a636f72652d62797465732d74797065203d207b0a20206b696e643a20224279746573222c0a20206d61783a2075696e742c0a7d0a636f72652d7265636f72642d74797065203d207b0a20206b696e643a20225265636f7264222c0a20206669656c64733a207b202a2074737472203d3e20636f72652d747970652d726566207d2c0a7d0a636f72652d76617269616e742d74797065203d207b0a20206b696e643a202256617269616e74222c0a202063617365733a207b202b2074737472203d3e2076617269616e742d636173652d626f6479207d2c0a7d0a76617269616e742d636173652d626f6479203d207b0a20203f207061796c6f61643a20636f72652d747970652d7265662c0a7d0a636f72652d6f7074696f6e2d74797065203d207b0a20206b696e643a20224f7074696f6e222c0a20206974656d3a20636f72652d747970652d7265662c0a7d0a636f72652d6c6973742d74797065203d207b0a20206b696e643a20224c697374222c0a20206974656d3a20636f72652d747970652d7265662c0a20206d61783a2075696e742c0a7d0a636f72652d6d61702d74797065203d207b0a20206b696e643a20224d6170222c0a20206b65793a20636f72652d747970652d7265662c0a202076616c75653a20636f72652d747970652d7265662c0a20206d61783a2075696e742c0a7d0a636f72652d6361706162696c6974792d7265662d74797065203d207b0a20206b696e643a20224361706162696c697479526566222c0a20206974656d3a20636f72652d747970652d7265662c0a7d0a636f72652d65787465726e616c2d616374696f6e2d726571756573742d74797065203d207b0a20206b696e643a202245787465726e616c416374696f6e52657175657374222c0a2020736574746c656d656e743a20636f72652d747970652d7265662c0a7d0a0a3b20636f72652d747970652d72656620697320646566696e656420696e2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d612e0a0a3b202d2d2d207265666572656e63657320616e642076616c756573202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a3b204c6f63616c206964656e7469747920697320616c7068612d737461626c652e20606964602069732074686520636f6d70696c65722d6f776e6564206c6f63616c20636f6f7264696e6174653b0a3b2060616c7068614e616d656020697320746865206e6f726d616c697a65642068756d616e2f6465627567206e616d652e20536f757263652062696e646572207370656c6c696e67206973206e6f740a3b206964656e746974792e0a6c6f63616c2d726566203d207b0a202069643a20747374722c0a2020616c7068614e616d653a20747374722c0a2020747970653a20636f72652d747970652d7265662c0a7d0a0a636f72652d76616c7565203d20636f72652d6e756c6c2d76616c7565202f20636f72652d626f6f6c2d76616c7565202f20636f72652d696e742d76616c7565202f0a20202020202020202020202020636f72652d737472696e672d76616c7565202f20636f72652d62797465732d76616c7565202f20636f72652d7265636f72642d76616c7565202f0a20202020202020202020202020636f72652d76617269616e742d76616c7565202f20636f72652d6c6973742d76616c7565202f20636f72652d6d61702d76616c7565202f0a20202020202020202020202020636f72652d6361706162696c6974792d76616c75650a0a636f72652d6e756c6c2d76616c7565203d207b206b696e643a20226e756c6c22207d0a636f72652d626f6f6c2d76616c7565203d207b206b696e643a2022626f6f6c222c2076616c75653a20626f6f6c207d0a636f72652d696e742d76616c7565203d207b206b696e643a2022696e74222c2077696474683a20747374722c2076616c75653a20696e74207d0a636f72652d737472696e672d76616c7565203d207b206b696e643a2022737472696e67222c2076616c75653a2074737472207d0a636f72652d62797465732d76616c7565203d207b206b696e643a20226279746573222c2076616c75653a2062737472207d0a636f72652d7265636f72642d76616c7565203d207b206b696e643a20227265636f7264222c206669656c64733a207b202a2074737472203d3e20636f72652d76616c7565207d207d0a636f72652d76617269616e742d76616c7565203d207b0a20206b696e643a202276617269616e74222c0a2020747970653a20636f72652d747970652d7265662c0a2020636173653a20747374722c0a20203f207061796c6f61643a20636f72652d76616c75652c0a7d0a636f72652d6c6973742d76616c7565203d207b206b696e643a20226c697374222c2076616c7565733a205b2a20636f72652d76616c75655d207d0a636f72652d6d61702d76616c7565203d207b206b696e643a20226d6170222c20656e74726965733a205b2a205b6b65793a20636f72652d76616c75652c2076616c75653a20636f72652d76616c75655d5d207d0a636f72652d6361706162696c6974792d76616c7565203d207b0a20206b696e643a20226361706162696c697479222c0a2020726563656970743a207368613235362d6469676573742c0a7d0a0a3b2045646963742d617574686f72656420707572652068656c70657273207573652061207075726520436f72652066756e6374696f6e20626f64792e2054686520626f64792063616e2062696e640a3b20707572652065787072657373696f6e7320616e642072657475726e20616e2065787072657373696f6e2c206275742069742063616e6e6f7420636f6e7461696e20436f7265206566666563742c0a3b2067756172642c206272616e63682c206c6f6f702c206d617463682d6e6f64652c206f722070726f6f662d6f626c69676174696f6e206e6f6465732e0a636f72652d666e2d626f6479203d207b0a2020706172616d733a205b2a206c6f63616c2d7265665d2c0a2020626f64793a20636f72652d707572652d626c6f636b2c0a7d0a0a636f72652d707572652d626c6f636b203d207b0a20206c6f63616c733a205b2a206c6f63616c2d7265665d2c0a202062696e64696e67733a205b2a20707572652d6c65742d6e6f64655d2c0a2020726573756c743a20636f72652d657870722c0a7d0a0a707572652d6c65742d6e6f6465203d207b0a20206b696e643a20226c6574222c0a202062696e64696e673a206c6f63616c2d7265662c0a202076616c75653a20636f72652d657870722c0a7d0a0a3b202d2d2d2065787072657373696f6e7320616e642070726564696361746573202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a636f72652d65787072203d206c6f63616c2d65787072202f20636f6e73742d65787072202f207265636f72642d65787072202f206669656c642d65787072202f0a20202020202020202020202076617269616e742d65787072202f206d617463682d65787072202f2063616c6c2d65787072202f206c6973742d65787072202f206d61702d65787072202f0a20202020202020202020202069662d657870720a0a6c6f63616c2d65787072203d207b206b696e643a20226c6f63616c222c207265663a206c6f63616c2d726566207d0a636f6e73742d65787072203d207b206b696e643a2022636f6e7374222c2076616c75653a20636f72652d76616c7565207d0a7265636f72642d65787072203d207b206b696e643a20227265636f7264222c206669656c64733a207b202a2074737472203d3e20636f72652d65787072207d207d0a6669656c642d65787072203d207b206b696e643a20226669656c64222c20626173653a20636f72652d657870722c206669656c643a2074737472207d0a76617269616e742d65787072203d207b0a20206b696e643a202276617269616e74222c0a2020747970653a20636f72652d747970652d7265662c0a2020636173653a20747374722c0a20203f207061796c6f61643a20636f72652d657870722c0a7d0a6d617463682d65787072203d207b0a20206b696e643a20226d61746368222c0a20207363727574696e65653a20636f72652d657870722c0a202061726d733a205b2b206d617463682d61726d5d2c0a7d0a6d617463682d61726d203d207b0a2020636173653a20747374722c0a20203f2062696e6465723a206c6f63616c2d7265662c0a2020626f64793a20636f72652d657870722c0a7d0a63616c6c2d65787072203d207b0a20206b696e643a202263616c6c222c0a202063616c6c65653a20747374722c0a202074797065417267733a205b2a20636f72652d747970652d7265665d2c0a2020617267733a205b2a20636f72652d657870725d2c0a7d0a6c6973742d65787072203d207b206b696e643a20226c697374222c2076616c7565733a205b2a20636f72652d657870725d207d0a6d61702d65787072203d207b206b696e643a20226d6170222c20656e74726965733a205b2a205b6b65793a20636f72652d657870722c2076616c75653a20636f72652d657870725d5d207d0a69662d65787072203d207b0a20206b696e643a20226966222c0a20207072656469636174653a20636f72652d7072656469636174652c0a20207468656e3a20636f72652d657870722c0a2020656c73653a20636f72652d657870722c0a7d0a0a636f72652d707265646963617465203d20747275652d707265646963617465202f2066616c73652d707265646963617465202f206e6f742d707265646963617465202f0a2020202020202020202020202020202020616c6c2d707265646963617465202f20616e792d707265646963617465202f20636f6d706172652d707265646963617465202f0a202020202020202020202020202020202063616c6c2d707265646963617465202f206f62737472756374696f6e2d7072656469636174650a0a747275652d707265646963617465203d207b206b696e643a20227472756522207d0a66616c73652d707265646963617465203d207b206b696e643a202266616c736522207d0a6e6f742d707265646963617465203d207b206b696e643a20226e6f74222c2076616c75653a20636f72652d707265646963617465207d0a616c6c2d707265646963617465203d207b206b696e643a2022616c6c222c2076616c7565733a205b2b20636f72652d7072656469636174655d207d0a616e792d707265646963617465203d207b206b696e643a2022616e79222c2076616c7565733a205b2b20636f72652d7072656469636174655d207d0a636f6d706172652d707265646963617465203d207b0a20206b696e643a2022636f6d70617265222c0a20206f703a20223d3d22202f2022213d22202f20223c22202f20223c3d22202f20223e22202f20223e3d222c0a20206c6566743a20636f72652d657870722c0a202072696768743a20636f72652d657870722c0a7d0a63616c6c2d707265646963617465203d207b0a20206b696e643a202263616c6c222c0a20207072656469636174653a20747374722c0a2020617267733a205b2a20636f72652d657870725d2c0a7d0a6f62737472756374696f6e2d707265646963617465203d207b0a20206b696e643a20226f62737472756374696f6e222c0a2020636f6f7264696e6174653a206661696c7572652d6964656e742c0a20207061796c6f61643a20636f72652d657870722c0a7d0a0a696e7075742d636f6e73747261696e74203d207b0a2020636f6f7264696e6174653a20747374722c0a2020736f757263653a2022776865726522202f2022636f6d70696c6572222c0a20207072656469636174653a20636f72652d7072656469636174652c0a7d0a0a3b202d2d2d20696e74656e74732c20626c6f636b732c20616e64206e6f646573202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a636f72652d696e74656e74203d207b0a2020696e7075743a20636f72652d747970652d7265662c0a20206f75747075743a20636f72652d747970652d7265662c0a202072657175697265644f7065726174696f6e50726f66696c653a20747374722c0a20203f2062617369733a20636f72652d657870722c0a2020696e707574436f6e73747261696e74733a205b2a20696e7075742d636f6e73747261696e745d2c0a2020636f72654576616c756174696f6e4275646765743a20636f72652d6275646765742c0a2020626f64793a20636f72652d626c6f636b2c0a20203f206f707469633a20636f72652d6f707469632c0a7d0a0a636f72652d627564676574203d207b0a20206d617853746570733a2075696e742c0a20206d6178416c6c6f636174656442797465733a2075696e742c0a20206d61784f757470757442797465733a2075696e742c0a7d0a0a636f72652d6f70746963203d207b0a20206f707469634b696e643a2022726576656c6174696f6e22202f20226166666563745265696e746567726174696f6e222c0a2020626f756e646172794b696e643a202270726f6a656374696f6e22202f2022616666656374222c0a20206170657274757265526571756972656d656e743a2061706572747572652d726571756972656d656e742c0a2020737570706f7274506f6c6963793a20747374722c0a20206c6f7373446973706f736974696f6e3a20747374722c0a7d0a0a636f72652d626c6f636b203d207b0a20206c6f63616c733a205b2a206c6f63616c2d7265665d2c0a20206e6f6465733a205b2a20636f72652d6e6f64655d2c0a2020726573756c743a20636f72652d657870722c0a7d0a0a636f72652d6e6f6465203d206c65742d6e6f6465202f20726571756972652d6e6f6465202f206566666563742d6e6f6465202f0a20202020202020202020202065787465726e616c2d616374696f6e2d726571756573742d6e6f6465202f2067756172642d6e6f6465202f206272616e63682d6e6f6465202f0a202020202020202020202020666f722d6e6f6465202f206d617463682d6e6f6465202f2070726f6f662d6f626c69676174696f6e2d6e6f64650a0a6c65742d6e6f6465203d207b0a20206b696e643a20226c6574222c0a202062696e64696e673a206c6f63616c2d7265662c0a202076616c75653a20636f72652d657870722c0a7d0a726571756972652d6e6f6465203d207b0a20206b696e643a202272657175697265222c0a20207072656469636174653a20636f72652d7072656469636174652c0a20206f6e4661696c7572653a20726571756972652d6661696c7572652d61726d2c0a7d0a726571756972652d6661696c7572652d61726d203d207465726d696e616c2d726571756972652d6661696c757265202f0a20202020202020202020202020202020202020202020636f6e74696e75652d6f6273747275637465642d726571756972652d6661696c7572650a7465726d696e616c2d726571756972652d6661696c757265203d207b0a20206b696e643a20227465726d696e616c222c0a2020726561736f6e3a206f62737472756374696f6e2d726561736f6e2c0a7d0a636f6e74696e75652d6f6273747275637465642d726571756972652d6661696c757265203d207b0a20206b696e643a2022636f6e74696e75654f627374727563746564222c0a2020726561736f6e3a206f62737472756374696f6e2d726561736f6e2c0a7d0a6f62737472756374696f6e2d726561736f6e203d207b0a2020726561736f6e4b696e643a20747374722c0a20207061796c6f61643a207b202a2074737472203d3e20636f72652d65787072207d2c0a7d0a6566666563742d6e6f6465203d207b0a20206b696e643a2022656666656374222c0a202062696e64696e673a206c6f63616c2d7265662c0a20206566666563743a20747374722c0a2020696e7075743a20636f72652d657870722c0a20206f62737472756374696f6e4d61703a207b202a206661696c7572652d6964656e74203d3e206f62737472756374696f6e2d61726d207d2c0a7d0a65787465726e616c2d616374696f6e2d726571756573742d6e6f6465203d207b0a20206b696e643a202265787465726e616c416374696f6e52657175657374222c0a202062696e64696e673a206c6f63616c2d7265662c0a20206f7065726174696f6e3a207265736f757263652d7265662c0a2020696e707574547970653a20636f72652d747970652d7265662c0a2020736574746c656d656e74547970653a20636f72652d747970652d7265662c0a2020696e707574536368656d613a207265736f757263652d7265662c0a2020736574746c656d656e74536368656d613a207265736f757263652d7265662c0a2020696e7075743a20636f72652d657870722c0a2020617574686f7269747953636f70653a20636f72652d657870722c0a202062617369733a20636f72652d657870722c0a20206275646765743a2065787465726e616c2d616374696f6e2d6275646765742c0a20207265636f6e63696c696174696f6e4c61773a207265736f757263652d7265662c0a202073746174653a20226177616974696e67536574746c656d656e74222c0a2020736574746c656d656e7441646d697373696f6e3a2022736368656d615265717569726564222c0a7d0a65787465726e616c2d616374696f6e2d627564676574203d207b0a20206d6178536574746c656d656e7442797465733a20636f72652d657870722c0a20206d6178417474656d7074733a20636f72652d657870722c0a7d0a6f62737472756374696f6e2d61726d203d207b0a202062696e6465723a206c6f63616c2d7265662c0a202076616c75653a20636f72652d657870722c0a7d0a67756172642d6e6f6465203d207b0a20206b696e643a20226775617264222c0a20207072656469636174653a20636f72652d7072656469636174652c0a20206f62737472756374696f6e3a20636f72652d657870722c0a7d0a6272616e63682d6e6f6465203d207b0a20206b696e643a20226272616e6368222c0a20203f2062696e64696e673a206c6f63616c2d7265662c0a20207072656469636174653a20636f72652d7072656469636174652c0a20207468656e3a20636f72652d626c6f636b2c0a2020656c73653a20636f72652d626c6f636b2c0a7d0a666f722d6e6f6465203d207b0a20206b696e643a2022666f72222c0a202062696e6465723a206c6f63616c2d7265662c0a2020697465723a20636f72652d657870722c0a2020626f756e643a20636f72652d626f756e642c0a2020626f64793a20636f72652d626c6f636b2c0a7d0a6d617463682d6e6f6465203d207b0a20206b696e643a20226d61746368222c0a20207363727574696e65653a20636f72652d657870722c0a202061726d733a205b2b206d617463682d626c6f636b2d61726d5d2c0a7d0a6d617463682d626c6f636b2d61726d203d207b0a2020636173653a20747374722c0a20203f2062696e6465723a206c6f63616c2d7265662c0a2020626f64793a20636f72652d626c6f636b2c0a7d0a70726f6f662d6f626c69676174696f6e2d6e6f6465203d207b0a20206b696e643a202270726f6f66222c0a2020636f6f7264696e6174653a20747374722c0a20207072656469636174653a20636f72652d7072656469636174652c0a7d0a0a636f72652d626f756e64203d206c69746572616c2d626f756e64202f20636f6f7264696e6174652d626f756e640a6c69746572616c2d626f756e64203d207b206b696e643a20226c69746572616c222c2076616c75653a2075696e74207d0a636f6f7264696e6174652d626f756e64203d207b206b696e643a2022636f6f7264696e617465222c207265663a2074737472207d0a0a3b20536861726564207265736f757263652d7265662c207368613235362d6469676573742c206661696c7572652d6964656e742c2061706572747572652d726571756972656d656e742c20616e640a3b20636f72652d747970652d7265662061726520646566696e6564206f6e636520696e2065646963742d636f6d6d6f6e2e6364646c2e0a0a3b202d2d2d2065646963742d6c61777061636b2e6364646c202d2d2d0a3b2065646963742d6c61777061636b2e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f7220746865204564696374206c61777061636b206d616e696665737420616e64206578706f727420737572666163652e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e204a534f4e20696e207468652070726f73652073706563730a3b2069732061207265766965772072656e646572696e672067656e6572617465642066726f6d207468697320736368656d61202845444943542d4142492d4e4f4455502d303031292e0a0a6c61777061636b2d6d616e6966657374203d207b0a202061706956657273696f6e3a202265646963742e6c61777061636b2f7631222c0a202069643a20747374722c0a202076657273696f6e3a20747374722c0a20206163636570746564436f72654162693a205b2b20747374725d2c0a2020646570656e64656e636965733a205b2a206c61777061636b2d6465705d2c202020202020202020203b20616379636c69632c206469676573742d6c6f636b6564202845444943542d4c41575041434b2d4441472d303031290a20206578706f7274733a207265736f757263652d7265662c0a20203f2074617267657441646170746572733a205b2b207461726765742d616461707465725d2c2020203b207265717569726564206f6e6c7920696620616e792072756e74696d6520656666656374206578697374730a20203f2068656c706572436f6d706f6e656e743a2065786563757461626c652d636f6d706f6e656e742c203b2065786563757461626c652068656c70657273206361727279207468656972206f776e2073616e64626f782b6675656c0a202076657269666965723a2076657269666965722c202020202020202020202020202020202020202020203b20636c61737369666965643a206465636c61726174697665206f722065786563757461626c650a2020636f6d7061746962696c6974793a207265736f757263652d7265662c0a2020636f6e666f726d616e636546697874757265436f727075733a207265736f757263652d7265662c0a7d0a0a3b2041207665726966696572206973206569746865722061206465636c617261746976652072756c6573657420286e6f2072756e74696d6529206f7220616e2065786563757461626c650a3b20636f6d706f6e656e742e20416e2065786563757461626c65207665726966696572204d55535420636172727920697473206f776e2073616e64626f7820616e64206675656c206d6f64656c2c0a3b20736f2074686520736368656d6120656e666f726365732074686174206e6f2065786563757461626c6520636f6d706f6e656e74206973206c65667420756e626f756e6465640a3b202845444943542d4142492d56455249464945522d424f554e442d303031292e0a7665726966696572203d206465636c617261746976652d7665726966696572202f2065786563757461626c652d76657269666965720a6465636c617261746976652d7665726966696572203d207b20636c6173733a20226465636c61726174697665222c2072756c657365743a207265736f757263652d726566207d0a65786563757461626c652d7665726966696572203d207b0a2020636c6173733a202265786563757461626c65222c0a2020636f6d706f6e656e743a207265736f757263652d7265662c0a202073616e64626f783a207265736f757263652d7265662c0a20206675656c4d6f64656c3a207265736f757263652d7265662c0a7d0a0a3b20416e792065786563757461626c6520636f6d706f6e656e7420697320626f756e64656420627920697473206f776e2073616e64626f78202b206675656c206d6f64656c2e0a65786563757461626c652d636f6d706f6e656e74203d207b0a2020636f6d706f6e656e743a207265736f757263652d7265662c0a202073616e64626f783a207265736f757263652d7265662c0a20206675656c4d6f64656c3a207265736f757263652d7265662c0a7d0a0a6c61777061636b2d646570203d207b2069643a20747374722c2076657273696f6e3a20747374722c206469676573743a207368613235362d646967657374207d0a0a3b20416461707465722073656c656374696f6e206b65797320534f4c454c59206f666620746865206469676573742d6c6f636b65642060616363657074656454617267657450726f66696c65600a3b20286974732060696460206973207468652070726f66696c652069643b206974732060646967657374602070696e73207468652065786163742070726f66696c652f76657273696f6e292e2054686572650a3b20617265206e6f20696e646570656e64656e7420646973706c617920737472696e6773207468617420636f756c64206469736167726565207769746820746865206c6f636b2c20736f20610a3b207265736f6c7665722063616e6e6f742062696e6420616e206164617074657220746f206f6e6520746172676574207768696c6520746865206c6f636b2070726f76657320616e6f746865720a3b202845444943542d4c41575041434b2d414441505445522d54415247455449522d303031292e0a7461726765742d61646170746572203d207b0a2020616363657074656454617267657450726f66696c653a207265736f757263652d7265662c202020203b206469676573742d6c6f636b65642c20617574686f72697461746976652073656c6563746f720a2020616363657074656454617267657449723a207265736f757263652d7265662c2020202020202020203b206469676573742d6c6f636b65640a2020616461707465723a207265736f757263652d7265662c0a7d0a0a3b20536861726564207479706573207265736f757263652d72656620616e64207368613235362d6469676573742061726520646566696e6564206f6e636520696e0a3b2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d61202845444943542d4142492d4e4f4455502d303031292e0a0a3b202d2d2d206578706f72742073757266616365202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a6c61777061636b2d6578706f727473203d207b0a202074797065733a205b2a206578706f727465642d747970655d2c0a2020636f6e7374616e74733a205b2a206578706f727465642d636f6e7374616e745d2c0a20207075726546756e6374696f6e733a205b2a20707572652d66756e6374696f6e5d2c0a2020656666656374733a205b2a2073656d616e7469632d6566666563745d2c0a20206f62737472756374696f6e733a205b2a206f62737472756374696f6e2d6465665d2c0a20203b206b65796564206279206f7065726174696f6e2d70726f66696c6520636f6f7264696e61746520e2869220756e697175656e65737320656e666f726365640a20203b202845444943542d4142492d4f5050524f46494c452d554e495155452d303031290a20203b206f7065726174696f6e2d70726f66696c65207265636f7264732074686973206c61777061636b206578706f72747320286f707469632074656d706c6174657320746861740a20203b2060696d706c656d656e7473602f6070726f66696c656020636c6175736573207265736f6c766520616761696e7374292e206f7065726174696f6e2d70726f66696c652069730a20203b20646566696e656420696e2065646963742d636f6d6d6f6e2e6364646c202845444943542d4142492d4f5050524f46494c452d534c4f542d303031292e0a20206f7065726174696f6e50726f66696c65733a207b202a2074737472203d3e206f7065726174696f6e2d70726f66696c65207d2c20203b206b6579656420627920636f6f7264696e6174650a7d0a0a6578706f727465642d7479706520202020203d207b20636f6f7264696e6174653a20747374722c20646566696e6974696f6e3a20636f72652d747970652d726566207d0a6578706f727465642d636f6e7374616e74203d207b20636f6f7264696e6174653a20747374722c20747970653a20636f72652d747970652d7265662c2076616c75653a20616e79207d0a0a3b204120707572652068656c7065722069732061206469736372696d696e6174656420756e696f6e2062792060736f75726365602c20736f2074686520736368656d6120697473656c660a3b2067756172616e7465657320616e20696d706c656d656e746174696f6e20657869737473202845444943542d4c41575041434b2d505552452d494d504c2d303031293a0a3b2020202d20226564696374223a20617574686f72656420696e2045646963742f436f72653b2074686520436f726520626f6479206973206361727269656420696e6c696e6520286861736865640a3b20202020207769746820746865206578706f72742073757266616365292e2054686520736368656d61207265717569726573207468652060626f647960206669656c642e0a3b2020202d2022636f6d706f6e656e74223a20696d706c656d656e746564206f7574736964652045646963743b2063617272696573206e6f20696e6c696e6520626f647920616e6420696e73746561640a3b20202020206361727269657320697473206f776e206469676573742d6c6f636b65642060696d706c656d656e746174696f6e60202873616e64626f78202b206675656c292e20497420646f65730a3b20202020206e6f7420646570656e64206f6e20746865206f7074696f6e616c206d616e69666573742d6c6576656c2068656c706572436f6d706f6e656e742e0a707572652d66756e6374696f6e203d2065646963742d707572652d66756e6374696f6e202f20636f6d706f6e656e742d707572652d66756e6374696f6e0a0a707572652d66756e6374696f6e2d636f6d6d6f6e203d20280a2020636f6f7264696e6174653a20747374722c0a202074797065506172616d65746572733a205b2a20747374725d2c0a2020706172616d6574657254797065733a205b2a20636f72652d747970652d7265665d2c2020202020203b20616c6c20626f756e6465640a202072657475726e547970653a20636f72652d747970652d7265662c20202020202020202020202020203b20626f756e6465640a2020636f737454656d706c6174653a20747374722c0a202064657465726d696e69736d436c6173733a2022746f74616c22202f2022746f74616c2d776974682d74797065642d646961676e6f73746963222c0a290a0a65646963742d707572652d66756e6374696f6e203d207b0a2020707572652d66756e6374696f6e2d636f6d6d6f6e2c0a2020736f757263653a20226564696374222c0a2020626f64793a20636f72652d666e2d626f64792c2020202020202020202020202020202020202020203b20696e6c696e652c20686173682d7369676e69666963616e740a7d0a0a636f6d706f6e656e742d707572652d66756e6374696f6e203d207b0a2020707572652d66756e6374696f6e2d636f6d6d6f6e2c0a2020736f757263653a2022636f6d706f6e656e74222c0a20203b20746865206469676573742d6c6f636b656420636f6d706f6e656e7420696d706c656d656e74696e6720746869732068656c7065722e2052657175697265642061742074686520736368656d610a20203b206c6576656c20736f206120636f6d706f6e656e742068656c7065722063616e206e657665722076616c696461746520776974686f7574206120686173682d626f756e642c0a20203b2073616e64626f782b6675656c2d64657363726962656420696d706c656d656e746174696f6e202845444943542d4c41575041434b2d505552452d494d504c2d303031292e0a2020696d706c656d656e746174696f6e3a2065786563757461626c652d636f6d706f6e656e742c0a7d0a0a3b20636f72652d666e2d626f647920697320646566696e65642062792065646963742d636f72652e6364646c20616e6420617373656d626c656420776974682074686973206c61777061636b0a3b20736368656d612e2049742069732061207075726520436f72652066756e6374696f6e20626f64792c206e6f7420616e206566666563742d63617061626c6520636f72652d626c6f636b2e0a0a73656d616e7469632d656666656374203d207b0a2020636f6f7264696e6174653a20747374722c0a202074797065506172616d65746572733a205b2a20747374725d2c0a2020696e707574547970653a20636f72652d747970652d7265662c2020202020202020202020202020203b20626f756e6465640a20206f7574707574547970653a20636f72652d747970652d7265662c20202020202020202020202020203b20626f756e6465640a2020657865637574696f6e436c6173733a202270726f6f664f6e6c7922202f202272756e74696d65222c2020203b206f7274686f676f6e616c20746f207772697465436c6173730a20206566666563744b696e6448696e743a206566666563742d6b696e642c0a2020666f6f747072696e744f626c69676174696f6e3a20747374722c0a2020636f73744f626c69676174696f6e3a20747374722c0a20206566666563744661696c757265733a207b202a206661696c7572652d6964656e74203d3e206566666563742d6661696c7572652d626f6479207d2c20203b206b6579656420627920636f6f7264696e6174653b20756e697175650a20206775617264537570706f72743a20626f6f6c2c0a7d0a0a6f62737472756374696f6e2d646566203d207b0a2020636f6f7264696e6174653a20747374722c0a2020617574686f72697479436c6173733a20617574686f726974792d636c6173732c0a20207061796c6f6164536368656d613a20636f72652d747970652d7265662c20202020202020202020203b2074797065642c20626f756e64656420286d617920626520656d707479207265636f7264290a7d0a0a3b206566666563742d6661696c7572652d626f64792c206566666563742d6b696e642c20617574686f726974792d636c6173732c20616e6420636f72652d747970652d7265662061726520646566696e65640a3b206f6e636520696e2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d61202845444943542d4142492d4e4f4455502d303031292e0a0a3b202d2d2d2065646963742d6c61777061636b2d616461707465722e6364646c202d2d2d0a3b2065646963742d6c61777061636b2d616461707465722e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f72206f6e6520646972656374206465636c61726174697665206c61777061636b2074617267657420616461707465722e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a3b0a3b2054686520656e636c6f73696e67206c61777061636b206d616e69666573742073656c6563747320746865206578616374207461726765742070726f66696c652c207461726765742049522c0a3b20616e642061646170746572207265736f75726365206469676573742e2054686f7365206964656e74697469657320617265206e6f7420726570656174656420686572652e0a0a6c61777061636b2d61646170746572203d207b0a202061706956657273696f6e3a202265646963742e6c61777061636b2d616461707465722f7631222c0a2020636c6173733a20226465636c61726174697665222c0a20206f7065726174696f6e50726f66696c65733a207b0a202020202a2074737472203d3e206c61777061636b2d616461707465722d6f7065726174696f6e2d70726f66696c650a20207d2c0a2020656666656374496d706c656d656e746174696f6e733a207b0a202020202a2074737472203d3e206c61777061636b2d616461707465722d6566666563740a20207d2c0a2020627564676574733a207b0a202020202a2074737472203d3e206c61777061636b2d616461707465722d6275646765740a20207d2c0a7d0a0a3b204b657973206172652063616e6f6e6963616c206c61777061636b206f7065726174696f6e2d70726f66696c6520636f6f7264696e617465732e0a6c61777061636b2d616461707465722d6f7065726174696f6e2d70726f66696c65203d0a20207b0a20202020636f72653a20747374722c0a2020202073656d616e746963456666656374733a205b2b20747374725d2c0a202020203f206275646765744f626c69676174696f6e3a20747374722c0a202020203f20746172676574436f6e66696775726174696f6e3a207265736f757263652d7265662c0a20207d202f0a20207b0a20202020636f72653a20747374722c0a2020202073656d616e746963456666656374733a205b5d2c0a202020206275646765744f626c69676174696f6e3a20747374722c0a20202020746172676574436f6e66696775726174696f6e3a207265736f757263652d7265662c0a20207d0a0a3b204b657973206172652063616e6f6e6963616c206c61777061636b2073656d616e7469632d65666665637420636f6f7264696e617465732e20466f6f747072696e742c20636f73742c20616e640a3b206661696c757265206669656c6473206d7573742065786163746c792064697363686172676520746865206d61746368696e67206578706f72746564206566666563742e0a6c61777061636b2d616461707465722d656666656374203d207b0a2020746172676574496e7472696e7369633a20747374722c0a2020746172676574436f6e66696775726174696f6e3a207265736f757263652d7265662c0a20207772697465436c6173733a206c61777061636b2d616461707465722d77726974652d636c6173732c0a2020666f6f747072696e744f626c69676174696f6e3a20747374722c0a2020636f73744f626c69676174696f6e3a20747374722c0a20206661696c7572654d617070696e67733a207b202a206661696c7572652d6964656e74203d3e2074737472207d2c0a7d0a0a3b204b657973206172652063616e6f6e6963616c206578706f7274656420636f73742d6f626c69676174696f6e20636f6f7264696e617465732e0a6c61777061636b2d616461707465722d627564676574203d207b0a20206d617853746570733a2075696e742c0a20206d6178416c6c6f636174656442797465733a2075696e742c0a20206d61784f757470757442797465733a2075696e742c0a7d0a0a6c61777061636b2d616461707465722d77726974652d636c617373203d20226e6f6e6522202f20227265616422202f202263726561746522202f2022656e7375726522202f0a20202020202020202020202020202020202020202020202020202020202022617070656e6422202f20227265706c61636522202f202264656c65746522202f2022637573746f6d220a0a3b206661696c7572652d6964656e7420697320646566696e656420696e2065646963742d636f6d6d6f6e2e6364646c2e0a0a3b202d2d2d2065646963742d7461726765742d70726f66696c652e6364646c202d2d2d0a3b2065646963742d7461726765742d70726f66696c652e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f7220746865204564696374207461726765742070726f66696c65206d616e69666573742e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76310a3b202873656520535045435f636f6e74696e75756d2d636f6e74726163742d62756e646c652d76312e6d64292e204a534f4e20696e207468652070726f736520737065637320697320610a3b207265766965772072656e646572696e672067656e6572617465642066726f6d207468697320736368656d613b2074686973204344444c206973207468652073696e676c6520736f757263650a3b206f66207472757468202845444943542d4142492d4e4f4455502d303031292e0a0a7461726765742d70726f66696c652d6d616e6966657374203d207b0a202061706956657273696f6e3a202265646963742e7461726765742d70726f66696c652f7631222c0a202069643a20747374722c202020202020202020202020202020202020202020202020203b20652e672e20226563686f2e64706f220a202076657273696f6e3a20747374722c20202020202020202020202020202020202020203b20652e672e202231220a20206163636570746564436f72654162693a205b2b20747374725d2c20202020202020203b20652e672e205b2265646963742e636f72652f7631225d0a0a2020696e7472696e736963733a207265736f757263652d7265662c0a2020696e7472696e7369634e616d6573706163653a20747374722c0a20203b207075626c697368657320746869732070726f66696c652773206f7065726174696f6e2d70726f66696c65207265636f72647320286f707469632074656d706c6174657320746861740a20203b206070726f66696c65602f60696d706c656d656e74736020636c6175736573207265736f6c766520616761696e7374292e205265666572656e63657320616e0a20203b206f7065726174696f6e2d70726f66696c65732d646f63756d656e74202845444943542d4142492d4f5050524f46494c452d534c4f542d303031292e0a20206f7065726174696f6e50726f66696c65733a207265736f757263652d7265662c0a2020666f6f747072696e74416c67656272613a207265736f757263652d7265662c0a2020636f7374416c67656272613a207265736f757263652d7265662c0a202074617267657449723a207265736f757263652d7265662c0a20206f62737472756374696f6e5461786f6e6f6d793a207265736f757263652d7265662c0a202076657269666965723a207265736f757263652d7265662c0a20206c6f77657265723a207265736f757263652d7265662c0a202073616e64626f783a207265736f757263652d7265662c0a20206675656c4d6f64656c3a207265736f757263652d7265662c0a0a20203b206669656c647320746865206c616e67756167652073706563207265717569726573206f662065766572792070726f66696c650a202062756e646c6550726f66696c653a207265736f757263652d7265662c0a202067656e657261746564417274696661637450726f66696c65733a205b2a207265736f757263652d7265665d2c0a202063616e6f6e6963616c456e636f64696e6752756c65733a207265736f757263652d7265662c0a20203b20412070726f66696c65207468617420616363657074732074686520646972656374206465636c61726174697665206c61777061636b2d6164617074657220414249206e616d65732069740a20203b2065786163746c79206f6e63652e2050726f66696c6573207468617420646f206e6f7420636f6e73756d65206c61777061636b206164617074657273206c6561766520746869730a20203b206f7074696f6e616c20736c6f7420616273656e74206f7220656d7074792e0a20203f2061636365707465644c61777061636b416461707465724162693a205b5d202f205b2265646963742e6c61777061636b2d616461707465722f7631225d2c0a2020646961676e6f737469634162693a207265736f757263652d7265662c0a0a20203b206170706c69636174696f6e20646f637472696e650a20206170706c69636174696f6e4d6f64656c3a202261746f6d6963222c0a202072656164436f6e73697374656e63793a20226170706c69636174696f6e2d736e617073686f7422202f20747374722c0a202067756172644576616c756174696f6e3a2022707265636f6d6d69742d61746f6d696322202f20747374722c0a20206f62737472756374696f6e526f6c6c6261636b3a20226e6f2d76697369626c652d6566666563747322202f20747374722c0a20206d756c74695461726765743a20626f6f6c2c0a20203b207768657468657220746865207461726765742063616e206576616c7561746520707265636f6d6d697420706f7374636f6e646974696f6e20286067756172616e746565602920636865636b730a20203b20696e73696465207468652061746f6d6963206170706c69636174696f6e20756e6974202845444943542d5441524745542d504f5354434f4e442d303031290a2020706f7374636f6e646974696f6e537570706f72743a20626f6f6c2c0a0a202064657465726d696e6973746963457865637574696f6e3a207265736f757263652d7265662c0a2020636f6e666f726d616e636546697874757265436f727075733a207265736f757263652d7265662c0a7d0a0a3b20536861726564207479706573207265736f757263652d72656620616e64207368613235362d6469676573742061726520646566696e6564206f6e636520696e0a3b2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d6120627920746865206275696c640a3b202845444943542d4142492d4e4f4455502d303031292e205468657920617265206e6f74207265646566696e656420686572652e0a0a3b202d2d2d20696e7472696e736963207369676e6174757265202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a3b20546865206172746966616374207265666572656e63656420627920746865206d616e696665737427732060696e7472696e7369637360207265736f757263652d726566206973207468650a3b20696e7472696e7369632d7369676e617475726520636f7270757320646f63756d656e742062656c6f772e20497473206c61796f757420697320666978656420736f2074776f0a3b20696e646570656e64656e742070726f66696c65732076616c69646174652f686173682074686520636f72707573206964656e746963616c6c790a3b202845444943542d4142492d494e5452494e534943532d444f432d303031292e0a0a3b20696e7472696e736963732069732061204d4150206b6579656420627920636f6f7264696e6174652c20736f2074686520736368656d6120697473656c6620656e666f726365730a3b20636f6f7264696e61746520756e697175656e6573732e20412070726f766964657220726563656976657320746865207265736f6c76656420636f7270757320617320610a3b206469676573742d626f756e642073656d616e74696320696e70757420616e64207265736f6c76657320636f6f7264696e617465732077697468696e20746861742061727469666163742e0a3b2045616368206d6170206b6579204d55535420657175616c20697473207265636f726427732060636f6f7264696e61746560206669656c640a3b202845444943542d4142492d494e5452494e5349432d554e495155452d303031292e0a696e7472696e736963732d646f63756d656e74203d207b0a202061706956657273696f6e3a202265646963742e7461726765742d70726f66696c652e696e7472696e736963732f7631222c0a2020696e7472696e736963733a207b202a2074737472203d3e20696e7472696e736963207d2c0a7d0a0a3b20546865206172746966616374207265666572656e63656420627920746865206d616e6966657374277320606f7065726174696f6e50726f66696c657360207265736f757263652d7265662e0a3b206f7065726174696f6e2d70726f66696c65202f206f707469632d74656d706c6174652061726520646566696e656420696e2065646963742d636f6d6d6f6e2e6364646c2e204b657965642062790a3b20636f6f7264696e61746520736f207265736f6c7574696f6e2063616e2774207069636b206265747765656e2074776f2073616d652d636f6f7264696e6174652070726f66696c65730a3b202845444943542d4142492d4f5050524f46494c452d534c4f542d3030312c2045444943542d4142492d4f5050524f46494c452d554e495155452d303031292e0a6f7065726174696f6e2d70726f66696c65732d646f63756d656e74203d207b0a202061706956657273696f6e3a202265646963742e7461726765742d70726f66696c652e6f7065726174696f6e2d70726f66696c65732f7631222c0a202070726f66696c65733a207b202a2074737472203d3e206f7065726174696f6e2d70726f66696c65207d2c0a7d0a0a3b2041207479706564207072652d6c6f776572696e67207175657374696f6e20746861742063616e2062652070726f706f73656420627920576174736f6e206f7220616e206167656e7420616e640a3b20636865636b65642062792074686520636f6d70696c65722e2049742069732063616e6f6e6963616c2d43424f5220656e636f64656420756e6465720a3b206065646963742e6c6f776572696e672d726571756972656d656e74732f7631603b2074686520636f6d70696c657220636865636b7320746869732061727469666163742c206e6f74207468650a3b2070726f736520746861742070726f64756365642069742e0a6c6f776572696e672d726571756972656d656e7473203d207b0a202061706956657273696f6e3a202265646963742e6c6f776572696e672d726571756972656d656e74732f7631222c0a20206f7065726174696f6e50726f66696c653a20747374722c0a202073656d616e746963456666656374733a205b2a2073656d616e7469632d6566666563742d726571756972656d656e745d2c0a202072657175697265645772697465436c61737365733a205b2a2077726974652d636c6173735d2c0a202067756172644b696e64733a205b2a2067756172642d6b696e645d2c0a202061746f6d69636974793a2061746f6d69636974792d726571756972656d656e742c0a2020706f7374636f6e646974696f6e537570706f72743a20626f6f6c2c0a20206f62737472756374696f6e436f6f7264696e617465733a205b2a20747374725d2c0a2020666f6f747072696e744f626c69676174696f6e733a205b2a20747374725d2c0a2020636f73744f626c69676174696f6e733a205b2a20747374725d2c0a20206f70746963436f6e74726163743a20747374722c0a7d0a0a73656d616e7469632d6566666563742d726571756972656d656e74203d207b0a2020636f6f7264696e6174653a20747374722c0a20207772697465436c6173733a2077726974652d636c6173732c0a202067756172644b696e64733a205b2a2067756172642d6b696e645d2c0a20206f62737472756374696f6e436f6f7264696e617465733a205b2a20747374725d2c0a2020666f6f747072696e744f626c69676174696f6e733a205b2a20747374725d2c0a2020636f73744f626c69676174696f6e733a205b2a20747374725d2c0a7d0a0a77726974652d636c617373203d20226e6f6e6522202f20227265616422202f202263726561746522202f2022656e7375726522202f2022617070656e6422202f0a2020202020202020202020202020227265706c61636522202f202264656c65746522202f20747374720a67756172642d6b696e64203d2022707265636f6d6d69742d61746f6d696322202f20747374720a61746f6d69636974792d726571756972656d656e74203d202261746f6d696322202f20747374720a0a3b20412067656e75696e6520756e696f6e3a207075726520636f6e7374727563746f7273206361727279206e6f20656666656374206b696e64206f72206661696c757265733b206566666563740a3b20696e7472696e73696373206d757374202845444943542d5441524745542d494e5452494e5349432d434c4153532d303031292e2054686520736368656d6120656e666f7263657320746869732c0a3b206e6f74206120636f6d6d656e742e0a0a3b2054686520696e7472696e736963277320636f6f7264696e6174652069732074686520696e7472696e73696373206d6170204b45592c206e6f7420612076616c7565206669656c642c20736f207468650a3b206b657920616e6420636f6f7264696e6174652063616e206e65766572206469736167726565202845444943542d4142492d494e5452494e5349432d554e495155452d303031292e0a696e7472696e736963203d20707572652d696e7472696e736963202f206566666563742d696e7472696e7369630a0a707572652d696e7472696e736963203d207b0a2020696e7472696e736963436c6173733a202270757265222c0a202074797065506172616d65746572733a205b2a20747374725d2c0a2020617267756d656e7454797065733a205b2a20636f72652d747970652d7265665d2c0a202072657475726e547970653a20636f72652d747970652d7265662c0a20206775617264537570706f72743a2066616c73652c0a2020666f6f747072696e7454656d706c6174653a20747374722c0a2020636f737454656d706c6174653a20747374722c0a20207772697465436c6173733a20226e6f6e65222c0a7d0a0a6566666563742d696e7472696e736963203d207b0a2020696e7472696e736963436c6173733a2022656666656374222c0a202074797065506172616d65746572733a205b2a20747374725d2c0a2020617267756d656e7454797065733a205b2a20636f72652d747970652d7265665d2c0a202072657475726e547970653a20636f72652d747970652d7265662c0a20206566666563744b696e643a206566666563742d6b696e642c0a20203b206d6170206b65796564206279206661696c75726520636f6f7264696e61746520286661696c7572652d6964656e74293b20746865206661696c75726520636f6f7264696e6174652069730a20203b20746865206b65792c206e6f7420612076616c7565206669656c642c20736f20756e697175656e657373206973207374727563747572616c0a20203b202845444943542d4142492d4641494c5552452d554e495155452d303031292e0a20206566666563744661696c757265733a207b202a206661696c7572652d6964656e74203d3e206566666563742d6661696c7572652d626f6479207d2c0a20206775617264537570706f72743a20626f6f6c2c0a2020666f6f747072696e7454656d706c6174653a20747374722c0a2020636f737454656d706c6174653a20747374722c0a20207772697465436c6173733a20227265616422202f202263726561746522202f2022656e7375726522202f2022617070656e6422202f20227265706c61636522202f0a20202020202020202020202020202264656c65746522202f2022637573746f6d222c0a202063616e5061727469636970617465496e41746f6d696347756172643a20626f6f6c2c0a7d0a0a3b206566666563742d6661696c7572652d626f64792c206566666563742d6b696e642c20617574686f726974792d636c6173732c20616e6420636f72652d747970652d7265662061726520646566696e65640a3b206f6e636520696e2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d61202845444943542d4142492d4e4f4455502d303031292e0a0a3b202d2d2d2065646963742d617574686f726974792d66616374732e6364646c202d2d2d0a3b2065646963742d617574686f726974792d66616374732e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f722074686520666972737420636f6d70696c65722d636f6e7465787420617574686f726974792d666163747320646f63756d656e742e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a3b0a3b205468697320736368656d6120697320617373656d626c656420776974682065646963742d636f6d6d6f6e2e6364646c20736f20736f757263652e6469676573742075736573207468650a3b20736861726564207368613235362d6469676573742074797065642076616c75652e204a534f4e2069732061207265766965772f696e7075742072656e646572696e673a206974730a3b20607368613235363a3c3634206865783e6020736f75726365206469676573742069732070726f6a656374656420746f205b60736861323536602c203332207261772062797465735d206f6e0a3b2074686520776972652c20616e64206974732066616374206172726179732070726f6a65637420746f2074686520636f6f7264696e6174652d6b65796564206d6170732062656c6f772e0a0a617574686f726974792d6661637473203d207b0a202061706956657273696f6e3a202265646963742e617574686f726974792d66616374732f7631222c0a2020736f757263653a20617574686f726974792d666163742d736f757263652c0a20206f7065726174696f6e50726f66696c65733a207b202a2074737472203d3e20617574686f726974792d6f7065726174696f6e2d70726f66696c652d66616374207d2c0a20206566666563745772697465436c61737365733a207b202a2074737472203d3e20617574686f726974792d77726974652d636c617373207d2c0a2020627564676574733a207b202a2074737472203d3e20617574686f726974792d6275646765742d66616374207d2c0a7d0a0a617574686f726974792d666163742d736f75726365203d207b0a20206b696e643a20226c61777061636b22202f202274617267657450726f66696c65222c0a2020636f6f7264696e6174653a20747374722c0a20206469676573743a207368613235362d6469676573742c0a7d0a0a3b20546865206d6170206b65792069732074686520736f75726365206f7065726174696f6e2d70726f66696c6520636f6f7264696e6174652e204974206973206e6f7420726570656174656420696e0a3b207468652076616c75652c20736f2061206b657920616e6420656d62656464656420636f6f7264696e6174652063616e6e6f742064697361677265652e20416c6c6f7765642077726974650a3b20636c61737365732061726520612063616e6f6e6963616c206d61702d7365743a2074686520636c6173732069732074686520756e69717565206b657920616e64206e756c6c206973207468650a3b20756e6974206d61726b65722e2043616e6f6e6963616c2043424f52206669786573206b6579206f7264657220776974686f75742061207365636f6e64206f72646572696e672072756c652e0a617574686f726974792d6f7065726174696f6e2d70726f66696c652d66616374203d207b0a2020636f72653a20747374722c0a2020616c6c6f7765645772697465436c61737365733a207b202a20617574686f726974792d77726974652d636c617373203d3e206e756c6c207d2c0a7d0a0a3b20546865206566666563745772697465436c6173736573206d6170206b6579206973207468652073656d616e7469632065666665637420636f6f7264696e6174652e2054686520627564676574730a3b206d6170206b65792069732074686520736f757263652062756467657420636f6f7264696e6174652e2043616e6f6e6963616c2043424f52206d61702d6b657920756e697175656e6573730a3b206d616b6573206475706c6963617465206661637420636f6f7264696e61746573207374727563747572616c6c7920756e726570726573656e7461626c652e0a617574686f726974792d6275646765742d66616374203d207b0a20206d617853746570733a2075696e742c0a20206d6178416c6c6f636174656442797465733a2075696e742c0a20206d61784f757470757442797465733a2075696e742c0a7d0a0a3b20417574686f726974794661637473446f63756d656e7420763120696e74656e74696f6e616c6c792061636365707473206f6e6c792074686520777269746520636c6173736573207468650a3b2063757272656e7420636f6d70696c6572206d6f64656c2063616e20636f6e73756d652e2060637573746f6d602069732074686520736f6c6520763120637573746f6d207370656c6c696e673b0a3b20617262697472617279207461726765742d70726f66696c6520657874656e73696f6e20737472696e677320646f206e6f7420656e746572207468697320636f6d70696c657220706174682e0a617574686f726974792d77726974652d636c617373203d20226e6f6e6522202f20227265616422202f202263726561746522202f2022656e7375726522202f2022617070656e6422202f0a202020202020202020202020202020202020202020202020227265706c61636522202f202264656c65746522202f2022637573746f6d220a0a3b202d2d2d2065646963742d726573756c742d70726f6a656374696f6e2e6364646c202d2d2d0a3b20535044582d4c6963656e73652d4964656e7469666965723a204170616368652d322e300a3b2065646963742d726573756c742d70726f6a656374696f6e2e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f7220636f6d70696c65722d6f776e6564206170706c69636174696f6e2d726573756c742070726f6a656374696f6e732e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a0a726573756c742d70726f6a656374696f6e203d207b0a2020736368656d613a202265646963742e726573756c742d70726f6a656374696f6e2f7631222c0a20206f7065726174696f6e436f6f7264696e6174653a20626f756e6465642d70726f6a656374696f6e2d746578742c0a20206f7574707574547970653a20626f756e6465642d70726f6a656374696f6e2d746578742c0a20206d61784f757470757442797465733a2075696e74202e677420302c0a202065787072657373696f6e3a20726573756c742d70726f6a656374696f6e2d657870722c0a7d0a0a726573756c742d70726f6a656374696f6e2d65787072203d20726573756c742d70726f6a656374696f6e2d7265636f7264202f20726573756c742d70726f6a656374696f6e2d736f757263650a0a726573756c742d70726f6a656374696f6e2d7265636f7264203d207b0a20206b696e643a20227265636f7264222c0a20203b2054686520726f6f74207265636f726420636f756e7473206173206f6e65206f66207468652052757374206465636f6465722773203235362065787072657373696f6e206e6f6465732e0a20203b204e657374656420616767726567617465206e6f646520636f756e742072656d61696e7320616e20617574686f7269746174697665206465636f64657220636865636b2e0a20206669656c64733a207b20302a32353520626f756e6465642d70726f6a656374696f6e2d74657874203d3e20726573756c742d70726f6a656374696f6e2d65787072207d2c0a7d0a0a726573756c742d70726f6a656374696f6e2d736f75726365203d207b0a20206b696e643a2022736f75726365222c0a2020736f757263653a20726573756c742d70726f6a656374696f6e2d736f757263652d6b696e642c0a20203b204d617463686573204d41585f524553554c545f50524f4a454354494f4e5f504154485f5345474d454e545320696e2065646963742d73796e7461782e0a2020706174683a205b302a333220626f756e6465642d70726f6a656374696f6e2d746578745d2c0a7d0a0a726573756c742d70726f6a656374696f6e2d736f757263652d6b696e64203d0a20207b206b696e643a20226170706c69636174696f6e496e70757422207d202f0a20207b0a202020206b696e643a20227075726542696e64696e67222c0a2020202062696e64696e6749643a20626f756e6465642d70726f6a656374696f6e2d746578742c0a20207d202f0a20207b0a202020206b696e643a20226361706162696c697479526573756c74222c0a202020207374657049643a20626f756e6465642d70726f6a656374696f6e2d746578742c0a20207d0a0a626f756e6465642d70726f6a656374696f6e2d74657874203d2074737472202e73697a652028312e2e31303234290a0a3b202d2d2d2065646963742d7461726765742d69722e6364646c202d2d2d0a3b20535044582d4c6963656e73652d4964656e7469666965723a204170616368652d322e300a3b2065646963742d7461726765742d69722e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f72207468652045646963742d6f776e65642054617267657420495220617274696661637420656e76656c6f70652e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a3b0a3b205468697320736368656d6120697320617373656d626c656420776974682065646963742d636f6d6d6f6e2e6364646c20616e642065646963742d636f72652e6364646c2e2049740a3b2064656c696265726174656c792072657573657320436f72652065787072657373696f6e732c20707265646963617465732c20627564676574732c206c6f63616c207265666572656e6365732c0a3b206f62737472756374696f6e20726561736f6e732c20616e64206f62737472756374696f6e2061726d7320736f2074686520736368656d61206d617463686573207468652076616c75650a3b20656d6974746564206279207468652063616e6f6e6963616c2054617267657420495220656e636f64657220726174686572207468616e20726573746174696e672074686f73652074797065732e0a3b2049742064657363726962657320746865207374727563747572616c207368617065206f662076616c6964206c6f776572696e672d70726f6475636564206172746966616374732e205468650a3b206c6f776572696e6720616e6420656e636f64657220636f6e7472616374732073657061726174656c7920656e666f7263652073656d616e746963206964656e7469666965722072756c65730a3b20616e642063616e6f6e6963616c206f72646572696e672f64656475706c69636174696f6e20666f72207365742d6c696b652076616c7565732e0a0a3b2054617267657420495220656e636f64696e672072656a6563747320616e20656d707479207461726765742d70726f66696c6520636f6f7264696e617465206265666f72652062797465730a3b2065786973742c20736f207468697320726f6f74207469676874656e732074686520736861726564207374727563747572616c207265736f757263652d726566206163636f7264696e676c792e0a7461726765742d69722d7265736f757263652d726566203d207b0a202069643a2074737472202e7265676578702022283f73292e2b222c0a20206469676573743a207368613235362d6469676573742c0a7d0a0a7461726765742d69722d6172746966616374203d207461726765742d69722d636c6f7365642d6172746966616374202f207461726765742d69722d6c65676163792d61727469666163740a0a7461726765742d69722d61727469666163742d636f6d6d6f6e203d20280a20206b696e643a202274617267657449724172746966616374222c0a2020646f6d61696e3a20747374722c0a202074617267657450726f66696c653a207461726765742d69722d7265736f757263652d7265662c0a2020736f75726365436f7265436f6f7264696e6174653a2074737472202e7265676578702022283f73292e2b222c0a290a0a7461726765742d69722d636c6f7365642d6172746966616374203d207b0a20207461726765742d69722d61727469666163742d636f6d6d6f6e2c0a202073656d616e746963436c6f737572653a207461726765742d69722d73656d616e7469632d636c6f737572652c0a2020696e74656e74733a207b202a2074737472203d3e207461726765742d69722d696e74656e74207d2c0a7d0a0a7461726765742d69722d6c65676163792d6172746966616374203d207b0a20207461726765742d69722d61727469666163742d636f6d6d6f6e2c0a2020696e74656e74733a207b202a2074737472203d3e207461726765742d69722d6c65676163792d696e74656e74207d2c0a7d0a0a7461726765742d69722d73656d616e7469632d636c6f73757265203d207b0a2020736f75726365436f72653a207461726765742d69722d7265736f757263652d7265662c0a20206c61777061636b733a205b2a207461726765742d69722d7265736f757263652d7265665d2c0a20203f206361706162696c69746965733a205b2a207461726765742d69722d7265736f757263652d7265665d2c0a7d0a0a7461726765742d69722d696e74656e74203d207b0a20207461726765742d69722d696e74656e742d636f6d6d6f6e2c0a20203f2062617369733a20636f72652d657870722c0a20203f207075726542696e64696e67733a205b312a207461726765742d69722d707572652d62696e64696e675d2c0a20203f2065787465726e616c416374696f6e52657175657374733a205b2a207461726765742d69722d65787465726e616c2d616374696f6e2d726571756573745d2c0a7d0a0a7461726765742d69722d6c65676163792d696e74656e74203d207b0a20207461726765742d69722d696e74656e742d636f6d6d6f6e2c0a7d0a0a7461726765742d69722d696e74656e742d636f6d6d6f6e203d20280a20206f7065726174696f6e50726f66696c653a20747374722c0a2020696e707574436f6e73747261696e74733a205b2a20696e7075742d636f6e73747261696e745d2c0a2020636f72654576616c756174696f6e4275646765743a20636f72652d6275646765742c0a2020726571756972656d656e74733a205b2a207461726765742d69722d726571756972656d656e745d2c0a202073746570733a205b2a207461726765742d69722d737465705d2c0a2020726573756c743a20636f72652d657870722c0a290a0a7461726765742d69722d726571756972656d656e74203d207b0a202069643a20747374722c0a20207072656469636174653a20636f72652d7072656469636174652c0a20206f6e4661696c7572653a20726571756972652d6661696c7572652d61726d2c0a7d0a0a7461726765742d69722d707572652d62696e64696e67203d207b0a202069643a2074737472202e7265676578702022283f73292e2b222c0a202062696e64696e673a206c6f63616c2d7265662c0a202076616c75653a20636f72652d657870722c0a7d0a0a7461726765742d69722d73746570203d207b0a202069643a20747374722c0a202062696e64696e673a206c6f63616c2d7265662c0a20206566666563743a20747374722c0a2020746172676574496e7472696e7369633a20747374722c0a2020696e7075743a20636f72652d657870722c0a20206f62737472756374696f6e4661696c757265733a205b2a206661696c7572652d6964656e745d2c0a20206f62737472756374696f6e41726d733a207b202a206661696c7572652d6964656e74203d3e206f62737472756374696f6e2d61726d207d2c0a7d0a0a7461726765742d69722d65787465726e616c2d616374696f6e2d72657175657374203d207b0a202069643a20747374722c0a202062696e64696e673a206c6f63616c2d7265662c0a20206f7065726174696f6e3a207461726765742d69722d7265736f757263652d7265662c0a2020696e707574547970653a20636f72652d747970652d7265662c0a2020736574746c656d656e74547970653a20636f72652d747970652d7265662c0a2020696e707574536368656d613a207461726765742d69722d7265736f757263652d7265662c0a2020736574746c656d656e74536368656d613a207461726765742d69722d7265736f757263652d7265662c0a2020696e7075743a20636f72652d657870722c0a2020617574686f7269747953636f70653a20636f72652d657870722c0a202062617369733a20636f72652d657870722c0a20206275646765743a2065787465726e616c2d616374696f6e2d6275646765742c0a20207265636f6e63696c696174696f6e4c61773a207461726765742d69722d7265736f757263652d7265662c0a202073746174653a20226177616974696e67536574746c656d656e74222c0a2020736574746c656d656e7441646d697373696f6e3a2022736368656d615265717569726564222c0a7d0a", + "rawSha256": "fe37a4252af4a732a62074b58947e052744a48397042eaadb0e61849fc245627" }, "contracts": [ {"contract": "authority-facts", "rootRule": "authority-facts"}, diff --git a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/components/lowerer.echo-dpo.component.wasm b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/components/lowerer.echo-dpo.component.wasm index fc90817b28c2160f954a3f811aee8a4030da30b9..b5aef20869d65d45277478648c36124bc0b59247 100644 GIT binary patch delta 155 zcmaF-l>hNl{)QID7N#xC60!D%rm03r21aRSW(KB4scC5@#^#ph#+Ih$$>v5DNv5eO wCaKA3<_4CjX_kqp29_piNvRg8CMgD~i5BJtMh4r%W0|=*DK=$c8naUm076tP!vFvP delta 155 zcmaF-l>hNl{)QID7N#xC60!E?#s obstruction-arm }, } +external-action-request-node = { + kind: "externalActionRequest", + binding: local-ref, + operation: resource-ref, + inputType: core-type-ref, + settlementType: core-type-ref, + inputSchema: resource-ref, + settlementSchema: resource-ref, + input: core-expr, + authorityScope: core-expr, + basis: core-expr, + budget: external-action-budget, + reconciliationLaw: resource-ref, + state: "awaitingSettlement", + settlementAdmission: "schemaRequired", +} +external-action-budget = { + maxSettlementBytes: core-expr, + maxAttempts: core-expr, +} obstruction-arm = { binder: local-ref, value: core-expr, @@ -369,6 +394,7 @@ guard-node = { } branch-node = { kind: "branch", + ? binding: local-ref, predicate: core-predicate, then: core-block, else: core-block, @@ -559,10 +585,19 @@ lawpack-adapter = { } ; Keys are canonical lawpack operation-profile coordinates. -lawpack-adapter-operation-profile = { - core: tstr, - semanticEffects: [+ tstr], -} +lawpack-adapter-operation-profile = + { + core: tstr, + semanticEffects: [+ tstr], + ? budgetObligation: tstr, + ? targetConfiguration: resource-ref, + } / + { + core: tstr, + semanticEffects: [], + budgetObligation: tstr, + targetConfiguration: resource-ref, + } ; Keys are canonical lawpack semantic-effect coordinates. Footprint, cost, and ; failure fields must exactly discharge the matching exported effect. @@ -821,6 +856,10 @@ result-projection-source = { result-projection-source-kind = { kind: "applicationInput" } / + { + kind: "pureBinding", + bindingId: bounded-projection-text, + } / { kind: "capabilityResult", stepId: bounded-projection-text, @@ -872,11 +911,14 @@ target-ir-legacy-artifact = { target-ir-semantic-closure = { sourceCore: target-ir-resource-ref, lawpacks: [* target-ir-resource-ref], + ? capabilities: [* target-ir-resource-ref], } target-ir-intent = { target-ir-intent-common, ? basis: core-expr, + ? pureBindings: [1* target-ir-pure-binding], + ? externalActionRequests: [* target-ir-external-action-request], } target-ir-legacy-intent = { @@ -898,6 +940,12 @@ target-ir-requirement = { onFailure: require-failure-arm, } +target-ir-pure-binding = { + id: tstr .regexp "(?s).+", + binding: local-ref, + value: core-expr, +} + target-ir-step = { id: tstr, binding: local-ref, @@ -908,6 +956,23 @@ target-ir-step = { obstructionArms: { * failure-ident => obstruction-arm }, } +target-ir-external-action-request = { + id: tstr, + binding: local-ref, + operation: target-ir-resource-ref, + inputType: core-type-ref, + settlementType: core-type-ref, + inputSchema: target-ir-resource-ref, + settlementSchema: target-ir-resource-ref, + input: core-expr, + authorityScope: core-expr, + basis: core-expr, + budget: external-action-budget, + reconciliationLaw: target-ir-resource-ref, + state: "awaitingSettlement", + settlementAdmission: "schemaRequired", +} + ; --- Echo provider-generated declarative contracts ----------------------- ; These roots validate provider semantic descriptions and data-only executable diff --git a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/provider-manifest.echo.json b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/provider-manifest.echo.json index d8227f27..dfa934c5 100644 --- a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/provider-manifest.echo.json +++ b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/provider-manifest.echo.json @@ -3,7 +3,7 @@ "providerAbi": "edict:target-provider@1.0.0", "provider": { "coordinate": "echo.edict-provider@1", - "digest": "sha256:6685b7c629ae6955515d69158feb1d7db06af2193de7e5d13e1095101670b977" + "digest": "sha256:5a42ef91640660397957ace0f533974e45ceb2c1124de29683ee96974d0d3201" }, "artifacts": [ { @@ -21,7 +21,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:48e583f8c29af45bb89d0e4f883b4fc478f7ec65f887612b865ebd4e1895b0a8" + "digest": "sha256:98cfcbf9939646a8cbeb73ab6be6e15656f37579e3b074df523bacdc7c87797a" } } }, @@ -40,7 +40,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:48e583f8c29af45bb89d0e4f883b4fc478f7ec65f887612b865ebd4e1895b0a8" + "digest": "sha256:98cfcbf9939646a8cbeb73ab6be6e15656f37579e3b074df523bacdc7c87797a" } } }, @@ -59,7 +59,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:48e583f8c29af45bb89d0e4f883b4fc478f7ec65f887612b865ebd4e1895b0a8" + "digest": "sha256:98cfcbf9939646a8cbeb73ab6be6e15656f37579e3b074df523bacdc7c87797a" } } }, @@ -78,7 +78,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:48e583f8c29af45bb89d0e4f883b4fc478f7ec65f887612b865ebd4e1895b0a8" + "digest": "sha256:98cfcbf9939646a8cbeb73ab6be6e15656f37579e3b074df523bacdc7c87797a" } } }, @@ -87,13 +87,13 @@ "artifactKind": "lowerer", "resource": { "coordinate": "echo.dpo.lowerer/component@1", - "digest": "sha256:dfd14015705ff555a7efdb3787ddb0f8b4f304168a9a0ebf324fd25d430bf5cd" + "digest": "sha256:8eb7891b1eed94c9396b0a3bd188aa35918d5833d24b15c0285eebd829687389" }, "source": { "kind": "component", "component": { "coordinate": "echo.dpo.lowerer/component@1", - "digest": "sha256:dfd14015705ff555a7efdb3787ddb0f8b4f304168a9a0ebf324fd25d430bf5cd" + "digest": "sha256:8eb7891b1eed94c9396b0a3bd188aa35918d5833d24b15c0285eebd829687389" } } }, @@ -102,7 +102,7 @@ "artifactKind": "generationProvenance", "resource": { "coordinate": "echo.edict-provider-generation-provenance@1", - "digest": "sha256:42f43a9bd874fe7808f3edce7491899ec21c991d33526e5802e6a3ad1edd2020" + "digest": "sha256:2a0a73ce7b3b5e80c9cbfd8a81fb8ec9ded7a22b9997f64f19a13aae003ec27e" }, "source": { "kind": "generated", @@ -112,7 +112,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:48e583f8c29af45bb89d0e4f883b4fc478f7ec65f887612b865ebd4e1895b0a8" + "digest": "sha256:98cfcbf9939646a8cbeb73ab6be6e15656f37579e3b074df523bacdc7c87797a" } } }, @@ -121,7 +121,7 @@ "artifactKind": "reviewArtifact", "resource": { "coordinate": "echo.edict-provider-generation-review@1", - "digest": "sha256:1459a631c3ca083de2ccfa3e73eded405b8cdf9b969a0ec6519c1e0484e34877" + "digest": "sha256:d95bf46b3f69aa46fda738b926b225dfa6637f9182f69e2518d849d16f5cd9a8" }, "source": { "kind": "generated", @@ -131,7 +131,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:48e583f8c29af45bb89d0e4f883b4fc478f7ec65f887612b865ebd4e1895b0a8" + "digest": "sha256:98cfcbf9939646a8cbeb73ab6be6e15656f37579e3b074df523bacdc7c87797a" } } }, @@ -140,7 +140,7 @@ "artifactKind": "artifactSchema", "resource": { "coordinate": "echo.provider-artifacts.cddl@1", - "digest": "sha256:730ce72f6658fe8cc9302221c32ad5992492e190674ddd69c1b164749d2bb669" + "digest": "sha256:15e2b02f66052eff437973957c728b5ed4ecf709ef9ae094fbe8e4d0ea870209" }, "source": { "kind": "generated", @@ -150,7 +150,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:48e583f8c29af45bb89d0e4f883b4fc478f7ec65f887612b865ebd4e1895b0a8" + "digest": "sha256:98cfcbf9939646a8cbeb73ab6be6e15656f37579e3b074df523bacdc7c87797a" } } }, @@ -169,7 +169,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:48e583f8c29af45bb89d0e4f883b4fc478f7ec65f887612b865ebd4e1895b0a8" + "digest": "sha256:98cfcbf9939646a8cbeb73ab6be6e15656f37579e3b074df523bacdc7c87797a" } } }, diff --git a/crates/echo-wesley-gen/src/provider_contract_pack.rs b/crates/echo-wesley-gen/src/provider_contract_pack.rs index b7edff3e..946aa31e 100644 --- a/crates/echo-wesley-gen/src/provider_contract_pack.rs +++ b/crates/echo-wesley-gen/src/provider_contract_pack.rs @@ -32,14 +32,14 @@ pub const EDICT_PROVIDER_CONTRACT_PACK_LICENSE: &str = "Apache-2.0"; /// SHA-256 of the admitted self-contained CDDL bytes. pub const EDICT_PROVIDER_CONTRACT_PACK_SCHEMA_SHA256: &str = - "ff5405708185e0bcf33dac263000fcb772c79e21145ad69da7cad0692e1a9552"; + "fe37a4252af4a732a62074b58947e052744a48397042eaadb0e61849fc245627"; /// SHA-256 of the admitted Edict publication manifest bytes. pub const EDICT_PROVIDER_CONTRACT_PACK_MANIFEST_SHA256: &str = - "e31d0452bf9d8ba84eaa1ce8c09fa1c25f740decd0ab08cd9c2fde533bdef1fa"; + "80e98f3b338690a5b0c71c2d35fbe70c11e4ef4b5c8d064a583f2af94942e613"; /// Maximum manifest size parsed at the contract-pack authority boundary. -pub const EDICT_PROVIDER_CONTRACT_PACK_MANIFEST_MAX_BYTES: usize = 68_359; +pub const EDICT_PROVIDER_CONTRACT_PACK_MANIFEST_MAX_BYTES: usize = 71_895; const EXPECTED_CONTRACTS: [(&str, &str); 11] = [ ("authority-facts", "authority-facts"), diff --git a/crates/echo-wesley-gen/tests/provider_contract_pack.rs b/crates/echo-wesley-gen/tests/provider_contract_pack.rs index 6dcbb706..ee7fbd77 100644 --- a/crates/echo-wesley-gen/tests/provider_contract_pack.rs +++ b/crates/echo-wesley-gen/tests/provider_contract_pack.rs @@ -48,7 +48,7 @@ fn checked_edict_provider_contract_pack_is_admitted() { assert_eq!(pack.license(), "Apache-2.0"); assert_eq!( pack.schema_sha256(), - "ff5405708185e0bcf33dac263000fcb772c79e21145ad69da7cad0692e1a9552" + "fe37a4252af4a732a62074b58947e052744a48397042eaadb0e61849fc245627" ); assert_eq!(pack.contract_count(), 11); assert_eq!(pack.domain_count(), 7); @@ -86,7 +86,7 @@ fn tampered_contract_cddl_has_stable_failure_kind() { error.to_string(), concat!( "provider contract pack schema-bytes-mismatch: schema.bytesHex -> ", - "ff5405708185e0bcf33dac263000fcb772c79e21145ad69da7cad0692e1a9552" + "fe37a4252af4a732a62074b58947e052744a48397042eaadb0e61849fc245627" ) ); } diff --git a/crates/echo-wesley-gen/tests/provider_package.rs b/crates/echo-wesley-gen/tests/provider_package.rs index 5ba2e797..9e041adc 100644 --- a/crates/echo-wesley-gen/tests/provider_package.rs +++ b/crates/echo-wesley-gen/tests/provider_package.rs @@ -65,7 +65,7 @@ const SEMANTIC_DIGEST: &str = const RELEASE_DIGEST: &str = "sha256:c39449495281b51f978468d08c21e93bcfa423176063b41675da61e4674b0066"; const PACKAGE_ARTIFACT_SHA256: &str = - "6685b7c629ae6955515d69158feb1d7db06af2193de7e5d13e1095101670b977"; + "5a42ef91640660397957ace0f533974e45ceb2c1124de29683ee96974d0d3201"; const OTHER_PACKAGE_ARTIFACT_SHA256: &str = "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"; diff --git a/crates/echo-wesley-gen/tests/provider_package_corpus.rs b/crates/echo-wesley-gen/tests/provider_package_corpus.rs index f7a9df02..7fd64752 100644 --- a/crates/echo-wesley-gen/tests/provider_package_corpus.rs +++ b/crates/echo-wesley-gen/tests/provider_package_corpus.rs @@ -11,9 +11,9 @@ use std::sync::atomic::{AtomicU64, Ordering}; use sha2::{Digest as _, Sha256}; const EXPECTED_PROVIDER_DIGEST: &str = - "sha256:6685b7c629ae6955515d69158feb1d7db06af2193de7e5d13e1095101670b977"; + "sha256:5a42ef91640660397957ace0f533974e45ceb2c1124de29683ee96974d0d3201"; const EXPECTED_MANIFEST_RAW_SHA256: &str = - "3a31b133321f9611d2b90ecf99162aa05027f4d6d600740550259dd2596722e9"; + "c1c80db587f855c7d3fe7bae0c97a32f699b89ace76e377fbc1069cc1eb3b7f1"; const PACKAGE_PATHS: [&str; 25] = [ "components/lowerer.echo-dpo.component.wasm", diff --git a/docs/architecture/application-contract-hosting.md b/docs/architecture/application-contract-hosting.md index 0c893915..296f0b1a 100644 --- a/docs/architecture/application-contract-hosting.md +++ b/docs/architecture/application-contract-hosting.md @@ -239,7 +239,7 @@ Edict-owned and landed under Edict #157 in Edict PR #159. Generated resource declarations carry no output digests. Standard Edict resources and the self-contained provider CDDL are explicit trusted inputs from the Apache-2.0 contract pack introduced in Edict PR #162 and extended with the -result-projection contract in Edict PR #174. Echo admits its exact CDDL, +generic pure-binding contracts in Edict PR #201. Echo admits its exact CDDL, manifest, contract/domain inventories, resource bytes, digests, and provenance before generation without searching a filesystem, registry, or network. Schema instance validation is a separate output-admission step: exact diff --git a/schemas/edict-provider/README.md b/schemas/edict-provider/README.md index 3d8d4807..243e3790 100644 --- a/schemas/edict-provider/README.md +++ b/schemas/edict-provider/README.md @@ -170,15 +170,15 @@ reproduce all three completed outcomes identically. Both checked components remain uninstalled package material; neither they nor the generated authority-facts documents are runtime Echo authority. The promoted lowerer is 258,787 bytes with SHA-256 -`dfd14015705ff555a7efdb3787ddb0f8b4f304168a9a0ebf324fd25d430bf5cd`; the +`8eb7891b1eed94c9396b0a3bd188aa35918d5833d24b15c0285eebd829687389`; the promoted verifier is 277,836 bytes with SHA-256 `279738ffeea40027eb493c15e873b87cf3aa0677a57f9f03fb824698e532322f`. External Edict contract inputs come from the checked [`contracts/v1/`](contracts/v1/README.md) publication introduced in [Edict PR #162](https://github.com/flyingrobots/edict/pull/162) and extended -with the result-projection contract in -[Edict PR #174](https://github.com/flyingrobots/edict/pull/174). Echo passes the +with generic pure binding contracts in +[Edict PR #201](https://github.com/flyingrobots/edict/pull/201). Echo passes the CDDL and manifest bytes explicitly to `provider_contract_pack::admit_provider_contract_pack_v1(...)`, which verifies the pinned publication identity, exact inventories, resource bytes, digests, diff --git a/schemas/edict-provider/components/v1/README.md b/schemas/edict-provider/components/v1/README.md index 53db5abd..b72bd8ee 100644 --- a/schemas/edict-provider/components/v1/README.md +++ b/schemas/edict-provider/components/v1/README.md @@ -24,7 +24,7 @@ The source WIT is the exact 7,392-byte Edict contract with SHA-256 `2971fe44def7e51d5271dfc0f04f3088aa58754cffdc847681a587605aac749e`. The checked component is 258,787 bytes with SHA-256 -`dfd14015705ff555a7efdb3787ddb0f8b4f304168a9a0ebf324fd25d430bf5cd`. +`8eb7891b1eed94c9396b0a3bd188aa35918d5833d24b15c0285eebd829687389`. Its sole contract attestation is the top-level custom section `edict:target-provider-contract` containing `edict:target-provider/lowerer@1.0.0`. Its only imports are the frozen WIT's diff --git a/schemas/edict-provider/components/v1/lowerer.echo-dpo.component.wasm b/schemas/edict-provider/components/v1/lowerer.echo-dpo.component.wasm index fc90817b28c2160f954a3f811aee8a4030da30b9..b5aef20869d65d45277478648c36124bc0b59247 100644 GIT binary patch delta 155 zcmaF-l>hNl{)QID7N#xC60!D%rm03r21aRSW(KB4scC5@#^#ph#+Ih$$>v5DNv5eO wCaKA3<_4CjX_kqp29_piNvRg8CMgD~i5BJtMh4r%W0|=*DK=$c8naUm076tP!vFvP delta 155 zcmaF-l>hNl{)QID7N#xC60!E?#s obstruction-arm }, } +external-action-request-node = { + kind: "externalActionRequest", + binding: local-ref, + operation: resource-ref, + inputType: core-type-ref, + settlementType: core-type-ref, + inputSchema: resource-ref, + settlementSchema: resource-ref, + input: core-expr, + authorityScope: core-expr, + basis: core-expr, + budget: external-action-budget, + reconciliationLaw: resource-ref, + state: "awaitingSettlement", + settlementAdmission: "schemaRequired", +} +external-action-budget = { + maxSettlementBytes: core-expr, + maxAttempts: core-expr, +} obstruction-arm = { binder: local-ref, value: core-expr, @@ -369,6 +394,7 @@ guard-node = { } branch-node = { kind: "branch", + ? binding: local-ref, predicate: core-predicate, then: core-block, else: core-block, @@ -559,10 +585,19 @@ lawpack-adapter = { } ; Keys are canonical lawpack operation-profile coordinates. -lawpack-adapter-operation-profile = { - core: tstr, - semanticEffects: [+ tstr], -} +lawpack-adapter-operation-profile = + { + core: tstr, + semanticEffects: [+ tstr], + ? budgetObligation: tstr, + ? targetConfiguration: resource-ref, + } / + { + core: tstr, + semanticEffects: [], + budgetObligation: tstr, + targetConfiguration: resource-ref, + } ; Keys are canonical lawpack semantic-effect coordinates. Footprint, cost, and ; failure fields must exactly discharge the matching exported effect. @@ -821,6 +856,10 @@ result-projection-source = { result-projection-source-kind = { kind: "applicationInput" } / + { + kind: "pureBinding", + bindingId: bounded-projection-text, + } / { kind: "capabilityResult", stepId: bounded-projection-text, @@ -872,11 +911,14 @@ target-ir-legacy-artifact = { target-ir-semantic-closure = { sourceCore: target-ir-resource-ref, lawpacks: [* target-ir-resource-ref], + ? capabilities: [* target-ir-resource-ref], } target-ir-intent = { target-ir-intent-common, ? basis: core-expr, + ? pureBindings: [1* target-ir-pure-binding], + ? externalActionRequests: [* target-ir-external-action-request], } target-ir-legacy-intent = { @@ -898,6 +940,12 @@ target-ir-requirement = { onFailure: require-failure-arm, } +target-ir-pure-binding = { + id: tstr .regexp "(?s).+", + binding: local-ref, + value: core-expr, +} + target-ir-step = { id: tstr, binding: local-ref, @@ -907,3 +955,20 @@ target-ir-step = { obstructionFailures: [* failure-ident], obstructionArms: { * failure-ident => obstruction-arm }, } + +target-ir-external-action-request = { + id: tstr, + binding: local-ref, + operation: target-ir-resource-ref, + inputType: core-type-ref, + settlementType: core-type-ref, + inputSchema: target-ir-resource-ref, + settlementSchema: target-ir-resource-ref, + input: core-expr, + authorityScope: core-expr, + basis: core-expr, + budget: external-action-budget, + reconciliationLaw: target-ir-resource-ref, + state: "awaitingSettlement", + settlementAdmission: "schemaRequired", +} diff --git a/schemas/edict-provider/contracts/v1/manifest.json b/schemas/edict-provider/contracts/v1/manifest.json index 0106222a..a0e0c28a 100644 --- a/schemas/edict-provider/contracts/v1/manifest.json +++ b/schemas/edict-provider/contracts/v1/manifest.json @@ -3,8 +3,8 @@ "coordinate": "edict.provider-contract-pack.cddl@1", "license": "Apache-2.0", "schema": { - "bytesHex": "3b20535044582d4c6963656e73652d4964656e7469666965723a204170616368652d322e300a3b2065646963742d70726f76696465722d636f6e7472616374732e6364646c0a3b2047656e6572617465642066726f6d2045646963742d6f776e65642041424920667261676d656e74732e20444f204e4f5420454449542e0a0a3b202d2d2d2065646963742d636f6d6d6f6e2e6364646c202d2d2d0a3b2065646963742d636f6d6d6f6e2e6364646c0a3b20536861726564204344444c20747970657320666f722074686520456469637420414249732c20646566696e6564204f4e4345206865726520736f20746865792063616e6e6f742064726966740a3b202845444943542d4142492d4e4f4455502d303031292e2054776f2067726f7570733a0a3b2020202d207265736f757263652d7265662c207368613235362d6469676573742c206566666563742d6661696c7572652d626f64792c206566666563742d6b696e642c20617574686f726974792d636c6173732c0a3b2020202020636f72652d747970652d7265663a20617373656d626c656420776974682065646963742d7461726765742d70726f66696c652e6364646c20616e640a3b202020202065646963742d6c61777061636b2e6364646c20627920746865206275696c643b2074686f736520736368656d617320646f206e6f74207265646566696e65207468656d2e0a3b2020202d206f7065726174696f6e2d70726f66696c652c206f707469632d74656d706c6174652c2061706572747572652d726571756972656d656e7420616e6420746865697220726566733a0a3b2020202020636f6e73756d65642062792074686520436f72652f6f70746963206c61796572202865646963742d636f72652e6364646c2920616e64207265666572656e636564206279207468650a3b20202020206c616e67756167652f7461726765742d70726f66696c652073706563732e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a0a3b2041206e6f726d617469766520737562636f6d706f6e656e74207265666572656e636564206279206964656e7469747920706c7573206469676573742e204d616e696665737473206e657665720a3b20656d626564207468656972206f776e2073656c662d64696765737420696e20746865697220707265696d616765202845444943542d434f52452d53454c46484153482d303031292e0a7265736f757263652d726566203d207b2069643a20747374722c206469676573743a207368613235362d646967657374207d0a0a3b20446967657374732061726520617574686f726974617469766520617320747970656420627974652076616c7565732c206e657665722068657820737472696e67732e20526576696577204a534f4e0a3b2072656e64657273207468697320617320227368613235363a3c3634206c6f77657263617365206865783e22202845444943542d4449474553542d574952452d303031292e0a7368613235362d646967657374203d205b20616c676f726974686d3a2022736861323536222c2062797465733a2062737472202e73697a65203332205d0a0a3b2041206e616d6564206c6f772d6c6576656c206661696c75726520616e206566666563742063616e2072616973652e2054686520736f75726365206f62737472756374696f6e206d61700a3b2062696e64732069742028627920636f6f7264696e6174652920616e6420636f6e73747275637473206120747970656420646f6d61696e206f62737472756374696f6e2066726f6d206974730a3b207061796c6f6164202845444943542d4142492d4641494c5552452d4e414d45442d303031292e0a3b20416e20656666656374277320606566666563744661696c7572657360206c697374204d555354206861766520756e697175652060636f6f7264696e61746560733a2073696e6365207468650a3b206f62737472756374696f6e206d6170206973206b6579656420627920636f6f7264696e6174652c2074776f206661696c757265732073686172696e67206120636f6f7264696e61746520286576656e0a3b207769746820646966666572656e7420617574686f72697479436c6173732f7061796c6f61645479706529206d616b652065786861757374697665206d617070696e6720616e642062696e6465720a3b20747970696e6720616d626967756f757320616e64206172652072656a6563746564202845444943542d4142492d4641494c5552452d554e495155452d303031292e0a3b0a3b2045666665637473206361727279207468656972206661696c757265732061732061206d617020607b206661696c7572652d6964656e74203d3e206566666563742d6661696c7572652d626f6479207d600a3b202873656520746865207461726765742f6c61777061636b2065666665637420736368656d6173292e20546865206661696c75726520636f6f7264696e61746520697320746865206d61700a3b204b45592c20736f206974206973206e6f7420726570656174656420696e2074686520626f647920616e642063616e6e6f74206469736167726565207769746820746865206b65792e0a6566666563742d6661696c7572652d626f6479203d207b0a2020617574686f72697479436c6173733a20617574686f726974792d636c6173732c0a20207061796c6f6164547970653a20636f72652d747970652d7265662c202020202020202020202020203b2074797065642c20626f756e64656420286d617920626520656d707479207265636f7264290a7d0a0a3b2041206661696c75726520636f6f7264696e617465206d7573742062652061206261726520456469637420606964656e746020286c65747465722f756e64657273636f7265207468656e0a3b206c6574746572732f6469676974732f756e64657273636f7265732920414e44206d757374206e6f742062652061207265736572766564206b6579776f72642028652e672e2060656c7365602c0a3b20606261736973602c20607768657265602c206072657175697265602c2060666f72602c2060696660292e2054686520736f75726365206f62737472756374696f6e2d6d6170204c4853206f6e6c790a3b20616363657074732061206e6f6e2d6b6579776f726420606964656e74602c20736f20612068797068656e2f646f742f6b6579776f726420636f6f7264696e61746520776f756c642062650a3b204142492d76616c69642079657420696d706f737369626c6520746f206d617020657868617573746976656c7920696e20736f757263652e20546865207265676578206361707475726573207468650a3b206c65786963616c2073686170653b206b6579776f7264206578636c7573696f6e20697320616e206164646974696f6e616c2076616c69646174696f6e2072756c650a3b202845444943542d4142492d4641494c5552452d4944454e542d303031292e0a6661696c7572652d6964656e74203d2074737472202e72656765787020225b412d5a612d7a5f5d5b412d5a612d7a302d395f5d2a220a0a6566666563742d6b696e64203d20227265616422202f202263726561746522202f2022656e7375726522202f20227265706c61636522202f202264656c65746522202f0a202020202020202020202020202022617070656e6422202f202272656475636522202f202273656d616e7469632e656d697422202f2022637573746f6d220a0a617574686f726974792d636c617373203d2022646f6d61696e4d61707061626c6522202f20227061727469636970616e744f776e656422202f2022696e746567726974794661756c7422202f0a202020202020202020202020202020202020227265736f757263654661756c7422202f2022696e7465726e616c4661756c74220a0a636f72652d747970652d726566203d20747374722020203b2063616e6f6e6963616c20436f7265207479706520636f6f7264696e6174650a0a3b20416e206f7065726174696f6e2070726f66696c6520737570706c69657320746865206f707469632074656d706c617465206120436f726520696e74656e74207265736f6c766573206974730a3b206f707469634b696e642f626f756e646172794b696e642f737570706f7274506f6c6963792f6c6f7373446973706f736974696f6e2066726f6d2e205461726765742070726f66696c657320616e640a3b206c61777061636b73207075626c6973682074686573652061732061206d617020607b20636f6f7264696e617465203d3e206f7065726174696f6e2d70726f66696c65207d602c20736f207468650a3b20636f6f7264696e61746520697320746865204b45592c206e6f7420612076616c7565206669656c64202845444943542d4f505449432d54454d504c4154452d4f574e45522d3030312c0a3b2045444943542d4142492d4f5050524f46494c452d554e495155452d303031292e0a6f7065726174696f6e2d70726f66696c65203d207b0a20206f7074696354656d706c6174653a206f707469632d74656d706c6174652c0a20206566666563745072656469636174653a20747374722c20202020202020202020203b20636f6f7264696e617465206f6620746865206f7065726174696f6e2d6d6f6465207072656469636174650a7d0a0a6f707469632d74656d706c617465203d207b0a20206f707469634b696e643a2022726576656c6174696f6e22202f20226166666563745265696e746567726174696f6e222c0a2020626f756e646172794b696e643a202270726f6a656374696f6e22202f2022616666656374222c0a2020737570706f7274506f6c6963793a20747374722c202020202020202020202020203b2063616e6f6e6963616c20737570706f72742d706f6c69637920636f6f7264696e6174650a20206c6f7373446973706f736974696f6e3a20747374722c20202020202020202020203b2063616e6f6e6963616c206c6f73732d646973706f736974696f6e20636f6f7264696e6174650a20203f20626173697354656d706c6174653a20747374722c20202020202020202020203b206f7074696f6e616c206469676573742d6c6f636b65642062617369732074656d706c61746520636f6f72640a20203b2074686520617065727475726520726571756972656d656e7420746869732074656d706c61746520737570706c6965732e205265717569726564207768656e207468652074656d706c6174650a20203b2069732074686520736f75726365206f66206120436f7265206f707469632773206170657274757265526571756972656d656e742028692e652e2074686520696e74656e7420686173206e6f0a20203b20736f757263652060666f6f747072696e74203c3d202e2e2e60292c2073696e6365206170657274757265526571756972656d656e74206973206d616e6461746f727920696e20436f72650a20203b202845444943542d4f505449432d41504552545552452d5245462d303031292e0a20203f206170657274757265526571756972656d656e743a2061706572747572652d726571756972656d656e742c0a7d0a0a3b206170657274757265526571756972656d656e742069732061207479706564207265666572656e63652c206e65766572206120667265652d666f726d20737472696e672e2041207265766965770a3b2072656e646572696e67206d61792073686f772069747320636f6f7264696e617465202845444943542d4f505449432d41504552545552452d5245462d303031292e0a61706572747572652d726571756972656d656e74203d20666f6f747072696e742d6365696c696e672d726566202f2061627374726163742d666f6f747072696e742d6f626c69676174696f6e2d7265660a666f6f747072696e742d6365696c696e672d726566203d207b206b696e643a2022666f6f747072696e744365696c696e67222c207265663a2074737472207d0a61627374726163742d666f6f747072696e742d6f626c69676174696f6e2d726566203d207b206b696e643a20226162737472616374466f6f747072696e744f626c69676174696f6e222c207265663a2074737472207d0a0a3b202d2d2d2065646963742d636f72652e6364646c202d2d2d0a3b2065646963742d636f72652e6364646c0a3b204e6f726d617469766520736368656d6120666f722074686520456469637420436f72652076312073656d616e746963206d6f64656c2e0a3b0a3b2053636f706520626f756e646172793a20746869732066696c6520646566696e657320436f7265206d65616e696e6720616e6420736368656d61207368617065206f6e6c792e20497420646f65730a3b206e6f7420646566696e6520612063616e6f6e6963616c20656e636f6465722c20436f7265206d6f64756c652068617368206669656c64732c20686173682066697874757265732c207461726765740a3b206c6f776572696e672c2061646d697373696f6e2062756e646c65732c206f72207461726765742d6f776e65642049522e0a0a636f72652d6d6f64756c65203d207b0a202061706956657273696f6e3a202265646963742e636f72652f7631222c0a2020636f6f7264696e6174653a20747374722c0a2020696d706f7274733a205b2a20636f72652d696d706f72745d2c0a202074797065733a207b202a2074737472203d3e20636f72652d74797065207d2c0a2020696e74656e74733a207b202b2074737472203d3e20636f72652d696e74656e74207d2c0a20207265717569726564436f72654361706162696c69746965733a205b2a20747374725d2c0a7d0a0a636f72652d696d706f7274203d207b0a20206b696e643a20226c61777061636b22202f202274617267657422202f2022636f7265222c0a20207265663a207265736f757263652d7265662c0a20203f20616c6961733a20747374722c0a7d0a0a3b202d2d2d207479706573202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a636f72652d74797065203d20636f72652d7363616c61722d74797065202f20636f72652d7265636f72642d74797065202f20636f72652d76617269616e742d74797065202f0a202020202020202020202020636f72652d6f7074696f6e2d74797065202f20636f72652d6c6973742d74797065202f20636f72652d6d61702d74797065202f0a202020202020202020202020636f72652d6361706162696c6974792d7265662d747970650a0a636f72652d7363616c61722d74797065203d20636f72652d626f6f6c2d74797065202f20636f72652d696e742d74797065202f20636f72652d737472696e672d74797065202f0a20202020202020202020202020202020202020636f72652d62797465732d74797065202f20636f72652d756e69742d747970650a0a636f72652d626f6f6c2d74797065203d207b206b696e643a2022426f6f6c22207d0a636f72652d756e69742d74797065203d207b206b696e643a2022556e697422207d0a636f72652d696e742d74797065203d207b0a20206b696e643a202249363422202f202255363422202f202249333222202f202255333222202f202249313622202f202255313622202f2022493822202f20225538222c0a7d0a636f72652d737472696e672d74797065203d207b0a20206b696e643a2022537472696e67222c0a20206d61783a2075696e742c0a202063616e6f6e6963616c3a2022756e69636f64652d7363616c61722d6e666322202f20227261772d75746638222c0a7d0a636f72652d62797465732d74797065203d207b0a20206b696e643a20224279746573222c0a20206d61783a2075696e742c0a7d0a636f72652d7265636f72642d74797065203d207b0a20206b696e643a20225265636f7264222c0a20206669656c64733a207b202a2074737472203d3e20636f72652d747970652d726566207d2c0a7d0a636f72652d76617269616e742d74797065203d207b0a20206b696e643a202256617269616e74222c0a202063617365733a207b202b2074737472203d3e2076617269616e742d636173652d626f6479207d2c0a7d0a76617269616e742d636173652d626f6479203d207b0a20203f207061796c6f61643a20636f72652d747970652d7265662c0a7d0a636f72652d6f7074696f6e2d74797065203d207b0a20206b696e643a20224f7074696f6e222c0a20206974656d3a20636f72652d747970652d7265662c0a7d0a636f72652d6c6973742d74797065203d207b0a20206b696e643a20224c697374222c0a20206974656d3a20636f72652d747970652d7265662c0a20206d61783a2075696e742c0a7d0a636f72652d6d61702d74797065203d207b0a20206b696e643a20224d6170222c0a20206b65793a20636f72652d747970652d7265662c0a202076616c75653a20636f72652d747970652d7265662c0a20206d61783a2075696e742c0a7d0a636f72652d6361706162696c6974792d7265662d74797065203d207b0a20206b696e643a20224361706162696c697479526566222c0a20206974656d3a20636f72652d747970652d7265662c0a7d0a0a3b20636f72652d747970652d72656620697320646566696e656420696e2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d612e0a0a3b202d2d2d207265666572656e63657320616e642076616c756573202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a3b204c6f63616c206964656e7469747920697320616c7068612d737461626c652e20606964602069732074686520636f6d70696c65722d6f776e6564206c6f63616c20636f6f7264696e6174653b0a3b2060616c7068614e616d656020697320746865206e6f726d616c697a65642068756d616e2f6465627567206e616d652e20536f757263652062696e646572207370656c6c696e67206973206e6f740a3b206964656e746974792e0a6c6f63616c2d726566203d207b0a202069643a20747374722c0a2020616c7068614e616d653a20747374722c0a2020747970653a20636f72652d747970652d7265662c0a7d0a0a636f72652d76616c7565203d20636f72652d6e756c6c2d76616c7565202f20636f72652d626f6f6c2d76616c7565202f20636f72652d696e742d76616c7565202f0a20202020202020202020202020636f72652d737472696e672d76616c7565202f20636f72652d62797465732d76616c7565202f20636f72652d7265636f72642d76616c7565202f0a20202020202020202020202020636f72652d76617269616e742d76616c7565202f20636f72652d6c6973742d76616c7565202f20636f72652d6d61702d76616c7565202f0a20202020202020202020202020636f72652d6361706162696c6974792d76616c75650a0a636f72652d6e756c6c2d76616c7565203d207b206b696e643a20226e756c6c22207d0a636f72652d626f6f6c2d76616c7565203d207b206b696e643a2022626f6f6c222c2076616c75653a20626f6f6c207d0a636f72652d696e742d76616c7565203d207b206b696e643a2022696e74222c2077696474683a20747374722c2076616c75653a20696e74207d0a636f72652d737472696e672d76616c7565203d207b206b696e643a2022737472696e67222c2076616c75653a2074737472207d0a636f72652d62797465732d76616c7565203d207b206b696e643a20226279746573222c2076616c75653a2062737472207d0a636f72652d7265636f72642d76616c7565203d207b206b696e643a20227265636f7264222c206669656c64733a207b202a2074737472203d3e20636f72652d76616c7565207d207d0a636f72652d76617269616e742d76616c7565203d207b0a20206b696e643a202276617269616e74222c0a2020747970653a20636f72652d747970652d7265662c0a2020636173653a20747374722c0a20203f207061796c6f61643a20636f72652d76616c75652c0a7d0a636f72652d6c6973742d76616c7565203d207b206b696e643a20226c697374222c2076616c7565733a205b2a20636f72652d76616c75655d207d0a636f72652d6d61702d76616c7565203d207b206b696e643a20226d6170222c20656e74726965733a205b2a205b6b65793a20636f72652d76616c75652c2076616c75653a20636f72652d76616c75655d5d207d0a636f72652d6361706162696c6974792d76616c7565203d207b0a20206b696e643a20226361706162696c697479222c0a2020726563656970743a207368613235362d6469676573742c0a7d0a0a3b2045646963742d617574686f72656420707572652068656c70657273207573652061207075726520436f72652066756e6374696f6e20626f64792e2054686520626f64792063616e2062696e640a3b20707572652065787072657373696f6e7320616e642072657475726e20616e2065787072657373696f6e2c206275742069742063616e6e6f7420636f6e7461696e20436f7265206566666563742c0a3b2067756172642c206272616e63682c206c6f6f702c206d617463682d6e6f64652c206f722070726f6f662d6f626c69676174696f6e206e6f6465732e0a636f72652d666e2d626f6479203d207b0a2020706172616d733a205b2a206c6f63616c2d7265665d2c0a2020626f64793a20636f72652d707572652d626c6f636b2c0a7d0a0a636f72652d707572652d626c6f636b203d207b0a20206c6f63616c733a205b2a206c6f63616c2d7265665d2c0a202062696e64696e67733a205b2a20707572652d6c65742d6e6f64655d2c0a2020726573756c743a20636f72652d657870722c0a7d0a0a707572652d6c65742d6e6f6465203d207b0a20206b696e643a20226c6574222c0a202062696e64696e673a206c6f63616c2d7265662c0a202076616c75653a20636f72652d657870722c0a7d0a0a3b202d2d2d2065787072657373696f6e7320616e642070726564696361746573202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a636f72652d65787072203d206c6f63616c2d65787072202f20636f6e73742d65787072202f207265636f72642d65787072202f206669656c642d65787072202f0a20202020202020202020202076617269616e742d65787072202f206d617463682d65787072202f2063616c6c2d65787072202f206c6973742d65787072202f206d61702d65787072202f0a20202020202020202020202069662d657870720a0a6c6f63616c2d65787072203d207b206b696e643a20226c6f63616c222c207265663a206c6f63616c2d726566207d0a636f6e73742d65787072203d207b206b696e643a2022636f6e7374222c2076616c75653a20636f72652d76616c7565207d0a7265636f72642d65787072203d207b206b696e643a20227265636f7264222c206669656c64733a207b202a2074737472203d3e20636f72652d65787072207d207d0a6669656c642d65787072203d207b206b696e643a20226669656c64222c20626173653a20636f72652d657870722c206669656c643a2074737472207d0a76617269616e742d65787072203d207b0a20206b696e643a202276617269616e74222c0a2020747970653a20636f72652d747970652d7265662c0a2020636173653a20747374722c0a20203f207061796c6f61643a20636f72652d657870722c0a7d0a6d617463682d65787072203d207b0a20206b696e643a20226d61746368222c0a20207363727574696e65653a20636f72652d657870722c0a202061726d733a205b2b206d617463682d61726d5d2c0a7d0a6d617463682d61726d203d207b0a2020636173653a20747374722c0a20203f2062696e6465723a206c6f63616c2d7265662c0a2020626f64793a20636f72652d657870722c0a7d0a63616c6c2d65787072203d207b0a20206b696e643a202263616c6c222c0a202063616c6c65653a20747374722c0a202074797065417267733a205b2a20636f72652d747970652d7265665d2c0a2020617267733a205b2a20636f72652d657870725d2c0a7d0a6c6973742d65787072203d207b206b696e643a20226c697374222c2076616c7565733a205b2a20636f72652d657870725d207d0a6d61702d65787072203d207b206b696e643a20226d6170222c20656e74726965733a205b2a205b6b65793a20636f72652d657870722c2076616c75653a20636f72652d657870725d5d207d0a69662d65787072203d207b0a20206b696e643a20226966222c0a20207072656469636174653a20636f72652d7072656469636174652c0a20207468656e3a20636f72652d657870722c0a2020656c73653a20636f72652d657870722c0a7d0a0a636f72652d707265646963617465203d20747275652d707265646963617465202f2066616c73652d707265646963617465202f206e6f742d707265646963617465202f0a2020202020202020202020202020202020616c6c2d707265646963617465202f20616e792d707265646963617465202f20636f6d706172652d707265646963617465202f0a202020202020202020202020202020202063616c6c2d707265646963617465202f206f62737472756374696f6e2d7072656469636174650a0a747275652d707265646963617465203d207b206b696e643a20227472756522207d0a66616c73652d707265646963617465203d207b206b696e643a202266616c736522207d0a6e6f742d707265646963617465203d207b206b696e643a20226e6f74222c2076616c75653a20636f72652d707265646963617465207d0a616c6c2d707265646963617465203d207b206b696e643a2022616c6c222c2076616c7565733a205b2b20636f72652d7072656469636174655d207d0a616e792d707265646963617465203d207b206b696e643a2022616e79222c2076616c7565733a205b2b20636f72652d7072656469636174655d207d0a636f6d706172652d707265646963617465203d207b0a20206b696e643a2022636f6d70617265222c0a20206f703a20223d3d22202f2022213d22202f20223c22202f20223c3d22202f20223e22202f20223e3d222c0a20206c6566743a20636f72652d657870722c0a202072696768743a20636f72652d657870722c0a7d0a63616c6c2d707265646963617465203d207b0a20206b696e643a202263616c6c222c0a20207072656469636174653a20747374722c0a2020617267733a205b2a20636f72652d657870725d2c0a7d0a6f62737472756374696f6e2d707265646963617465203d207b0a20206b696e643a20226f62737472756374696f6e222c0a2020636f6f7264696e6174653a206661696c7572652d6964656e742c0a20207061796c6f61643a20636f72652d657870722c0a7d0a0a696e7075742d636f6e73747261696e74203d207b0a2020636f6f7264696e6174653a20747374722c0a2020736f757263653a2022776865726522202f2022636f6d70696c6572222c0a20207072656469636174653a20636f72652d7072656469636174652c0a7d0a0a3b202d2d2d20696e74656e74732c20626c6f636b732c20616e64206e6f646573202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a636f72652d696e74656e74203d207b0a2020696e7075743a20636f72652d747970652d7265662c0a20206f75747075743a20636f72652d747970652d7265662c0a202072657175697265644f7065726174696f6e50726f66696c653a20747374722c0a20203f2062617369733a20636f72652d657870722c0a2020696e707574436f6e73747261696e74733a205b2a20696e7075742d636f6e73747261696e745d2c0a2020636f72654576616c756174696f6e4275646765743a20636f72652d6275646765742c0a2020626f64793a20636f72652d626c6f636b2c0a20203f206f707469633a20636f72652d6f707469632c0a7d0a0a636f72652d627564676574203d207b0a20206d617853746570733a2075696e742c0a20206d6178416c6c6f636174656442797465733a2075696e742c0a20206d61784f757470757442797465733a2075696e742c0a7d0a0a636f72652d6f70746963203d207b0a20206f707469634b696e643a2022726576656c6174696f6e22202f20226166666563745265696e746567726174696f6e222c0a2020626f756e646172794b696e643a202270726f6a656374696f6e22202f2022616666656374222c0a20206170657274757265526571756972656d656e743a2061706572747572652d726571756972656d656e742c0a2020737570706f7274506f6c6963793a20747374722c0a20206c6f7373446973706f736974696f6e3a20747374722c0a7d0a0a636f72652d626c6f636b203d207b0a20206c6f63616c733a205b2a206c6f63616c2d7265665d2c0a20206e6f6465733a205b2a20636f72652d6e6f64655d2c0a2020726573756c743a20636f72652d657870722c0a7d0a0a636f72652d6e6f6465203d206c65742d6e6f6465202f20726571756972652d6e6f6465202f206566666563742d6e6f6465202f2067756172642d6e6f6465202f206272616e63682d6e6f6465202f0a202020202020202020202020666f722d6e6f6465202f206d617463682d6e6f6465202f2070726f6f662d6f626c69676174696f6e2d6e6f64650a0a6c65742d6e6f6465203d207b0a20206b696e643a20226c6574222c0a202062696e64696e673a206c6f63616c2d7265662c0a202076616c75653a20636f72652d657870722c0a7d0a726571756972652d6e6f6465203d207b0a20206b696e643a202272657175697265222c0a20207072656469636174653a20636f72652d7072656469636174652c0a20206f6e4661696c7572653a20726571756972652d6661696c7572652d61726d2c0a7d0a726571756972652d6661696c7572652d61726d203d207465726d696e616c2d726571756972652d6661696c757265202f0a20202020202020202020202020202020202020202020636f6e74696e75652d6f6273747275637465642d726571756972652d6661696c7572650a7465726d696e616c2d726571756972652d6661696c757265203d207b0a20206b696e643a20227465726d696e616c222c0a2020726561736f6e3a206f62737472756374696f6e2d726561736f6e2c0a7d0a636f6e74696e75652d6f6273747275637465642d726571756972652d6661696c757265203d207b0a20206b696e643a2022636f6e74696e75654f627374727563746564222c0a2020726561736f6e3a206f62737472756374696f6e2d726561736f6e2c0a7d0a6f62737472756374696f6e2d726561736f6e203d207b0a2020726561736f6e4b696e643a20747374722c0a20207061796c6f61643a207b202a2074737472203d3e20636f72652d65787072207d2c0a7d0a6566666563742d6e6f6465203d207b0a20206b696e643a2022656666656374222c0a202062696e64696e673a206c6f63616c2d7265662c0a20206566666563743a20747374722c0a2020696e7075743a20636f72652d657870722c0a20206f62737472756374696f6e4d61703a207b202a206661696c7572652d6964656e74203d3e206f62737472756374696f6e2d61726d207d2c0a7d0a6f62737472756374696f6e2d61726d203d207b0a202062696e6465723a206c6f63616c2d7265662c0a202076616c75653a20636f72652d657870722c0a7d0a67756172642d6e6f6465203d207b0a20206b696e643a20226775617264222c0a20207072656469636174653a20636f72652d7072656469636174652c0a20206f62737472756374696f6e3a20636f72652d657870722c0a7d0a6272616e63682d6e6f6465203d207b0a20206b696e643a20226272616e6368222c0a20207072656469636174653a20636f72652d7072656469636174652c0a20207468656e3a20636f72652d626c6f636b2c0a2020656c73653a20636f72652d626c6f636b2c0a7d0a666f722d6e6f6465203d207b0a20206b696e643a2022666f72222c0a202062696e6465723a206c6f63616c2d7265662c0a2020697465723a20636f72652d657870722c0a2020626f756e643a20636f72652d626f756e642c0a2020626f64793a20636f72652d626c6f636b2c0a7d0a6d617463682d6e6f6465203d207b0a20206b696e643a20226d61746368222c0a20207363727574696e65653a20636f72652d657870722c0a202061726d733a205b2b206d617463682d626c6f636b2d61726d5d2c0a7d0a6d617463682d626c6f636b2d61726d203d207b0a2020636173653a20747374722c0a20203f2062696e6465723a206c6f63616c2d7265662c0a2020626f64793a20636f72652d626c6f636b2c0a7d0a70726f6f662d6f626c69676174696f6e2d6e6f6465203d207b0a20206b696e643a202270726f6f66222c0a2020636f6f7264696e6174653a20747374722c0a20207072656469636174653a20636f72652d7072656469636174652c0a7d0a0a636f72652d626f756e64203d206c69746572616c2d626f756e64202f20636f6f7264696e6174652d626f756e640a6c69746572616c2d626f756e64203d207b206b696e643a20226c69746572616c222c2076616c75653a2075696e74207d0a636f6f7264696e6174652d626f756e64203d207b206b696e643a2022636f6f7264696e617465222c207265663a2074737472207d0a0a3b20536861726564207265736f757263652d7265662c207368613235362d6469676573742c206661696c7572652d6964656e742c2061706572747572652d726571756972656d656e742c20616e640a3b20636f72652d747970652d7265662061726520646566696e6564206f6e636520696e2065646963742d636f6d6d6f6e2e6364646c2e0a0a3b202d2d2d2065646963742d6c61777061636b2e6364646c202d2d2d0a3b2065646963742d6c61777061636b2e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f7220746865204564696374206c61777061636b206d616e696665737420616e64206578706f727420737572666163652e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e204a534f4e20696e207468652070726f73652073706563730a3b2069732061207265766965772072656e646572696e672067656e6572617465642066726f6d207468697320736368656d61202845444943542d4142492d4e4f4455502d303031292e0a0a6c61777061636b2d6d616e6966657374203d207b0a202061706956657273696f6e3a202265646963742e6c61777061636b2f7631222c0a202069643a20747374722c0a202076657273696f6e3a20747374722c0a20206163636570746564436f72654162693a205b2b20747374725d2c0a2020646570656e64656e636965733a205b2a206c61777061636b2d6465705d2c202020202020202020203b20616379636c69632c206469676573742d6c6f636b6564202845444943542d4c41575041434b2d4441472d303031290a20206578706f7274733a207265736f757263652d7265662c0a20203f2074617267657441646170746572733a205b2b207461726765742d616461707465725d2c2020203b207265717569726564206f6e6c7920696620616e792072756e74696d6520656666656374206578697374730a20203f2068656c706572436f6d706f6e656e743a2065786563757461626c652d636f6d706f6e656e742c203b2065786563757461626c652068656c70657273206361727279207468656972206f776e2073616e64626f782b6675656c0a202076657269666965723a2076657269666965722c202020202020202020202020202020202020202020203b20636c61737369666965643a206465636c61726174697665206f722065786563757461626c650a2020636f6d7061746962696c6974793a207265736f757263652d7265662c0a2020636f6e666f726d616e636546697874757265436f727075733a207265736f757263652d7265662c0a7d0a0a3b2041207665726966696572206973206569746865722061206465636c617261746976652072756c6573657420286e6f2072756e74696d6529206f7220616e2065786563757461626c650a3b20636f6d706f6e656e742e20416e2065786563757461626c65207665726966696572204d55535420636172727920697473206f776e2073616e64626f7820616e64206675656c206d6f64656c2c0a3b20736f2074686520736368656d6120656e666f726365732074686174206e6f2065786563757461626c6520636f6d706f6e656e74206973206c65667420756e626f756e6465640a3b202845444943542d4142492d56455249464945522d424f554e442d303031292e0a7665726966696572203d206465636c617261746976652d7665726966696572202f2065786563757461626c652d76657269666965720a6465636c617261746976652d7665726966696572203d207b20636c6173733a20226465636c61726174697665222c2072756c657365743a207265736f757263652d726566207d0a65786563757461626c652d7665726966696572203d207b0a2020636c6173733a202265786563757461626c65222c0a2020636f6d706f6e656e743a207265736f757263652d7265662c0a202073616e64626f783a207265736f757263652d7265662c0a20206675656c4d6f64656c3a207265736f757263652d7265662c0a7d0a0a3b20416e792065786563757461626c6520636f6d706f6e656e7420697320626f756e64656420627920697473206f776e2073616e64626f78202b206675656c206d6f64656c2e0a65786563757461626c652d636f6d706f6e656e74203d207b0a2020636f6d706f6e656e743a207265736f757263652d7265662c0a202073616e64626f783a207265736f757263652d7265662c0a20206675656c4d6f64656c3a207265736f757263652d7265662c0a7d0a0a6c61777061636b2d646570203d207b2069643a20747374722c2076657273696f6e3a20747374722c206469676573743a207368613235362d646967657374207d0a0a3b20416461707465722073656c656374696f6e206b65797320534f4c454c59206f666620746865206469676573742d6c6f636b65642060616363657074656454617267657450726f66696c65600a3b20286974732060696460206973207468652070726f66696c652069643b206974732060646967657374602070696e73207468652065786163742070726f66696c652f76657273696f6e292e2054686572650a3b20617265206e6f20696e646570656e64656e7420646973706c617920737472696e6773207468617420636f756c64206469736167726565207769746820746865206c6f636b2c20736f20610a3b207265736f6c7665722063616e6e6f742062696e6420616e206164617074657220746f206f6e6520746172676574207768696c6520746865206c6f636b2070726f76657320616e6f746865720a3b202845444943542d4c41575041434b2d414441505445522d54415247455449522d303031292e0a7461726765742d61646170746572203d207b0a2020616363657074656454617267657450726f66696c653a207265736f757263652d7265662c202020203b206469676573742d6c6f636b65642c20617574686f72697461746976652073656c6563746f720a2020616363657074656454617267657449723a207265736f757263652d7265662c2020202020202020203b206469676573742d6c6f636b65640a2020616461707465723a207265736f757263652d7265662c0a7d0a0a3b20536861726564207479706573207265736f757263652d72656620616e64207368613235362d6469676573742061726520646566696e6564206f6e636520696e0a3b2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d61202845444943542d4142492d4e4f4455502d303031292e0a0a3b202d2d2d206578706f72742073757266616365202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a6c61777061636b2d6578706f727473203d207b0a202074797065733a205b2a206578706f727465642d747970655d2c0a2020636f6e7374616e74733a205b2a206578706f727465642d636f6e7374616e745d2c0a20207075726546756e6374696f6e733a205b2a20707572652d66756e6374696f6e5d2c0a2020656666656374733a205b2a2073656d616e7469632d6566666563745d2c0a20206f62737472756374696f6e733a205b2a206f62737472756374696f6e2d6465665d2c0a20203b206b65796564206279206f7065726174696f6e2d70726f66696c6520636f6f7264696e61746520e2869220756e697175656e65737320656e666f726365640a20203b202845444943542d4142492d4f5050524f46494c452d554e495155452d303031290a20203b206f7065726174696f6e2d70726f66696c65207265636f7264732074686973206c61777061636b206578706f72747320286f707469632074656d706c6174657320746861740a20203b2060696d706c656d656e7473602f6070726f66696c656020636c6175736573207265736f6c766520616761696e7374292e206f7065726174696f6e2d70726f66696c652069730a20203b20646566696e656420696e2065646963742d636f6d6d6f6e2e6364646c202845444943542d4142492d4f5050524f46494c452d534c4f542d303031292e0a20206f7065726174696f6e50726f66696c65733a207b202a2074737472203d3e206f7065726174696f6e2d70726f66696c65207d2c20203b206b6579656420627920636f6f7264696e6174650a7d0a0a6578706f727465642d7479706520202020203d207b20636f6f7264696e6174653a20747374722c20646566696e6974696f6e3a20636f72652d747970652d726566207d0a6578706f727465642d636f6e7374616e74203d207b20636f6f7264696e6174653a20747374722c20747970653a20636f72652d747970652d7265662c2076616c75653a20616e79207d0a0a3b204120707572652068656c7065722069732061206469736372696d696e6174656420756e696f6e2062792060736f75726365602c20736f2074686520736368656d6120697473656c660a3b2067756172616e7465657320616e20696d706c656d656e746174696f6e20657869737473202845444943542d4c41575041434b2d505552452d494d504c2d303031293a0a3b2020202d20226564696374223a20617574686f72656420696e2045646963742f436f72653b2074686520436f726520626f6479206973206361727269656420696e6c696e6520286861736865640a3b20202020207769746820746865206578706f72742073757266616365292e2054686520736368656d61207265717569726573207468652060626f647960206669656c642e0a3b2020202d2022636f6d706f6e656e74223a20696d706c656d656e746564206f7574736964652045646963743b2063617272696573206e6f20696e6c696e6520626f647920616e6420696e73746561640a3b20202020206361727269657320697473206f776e206469676573742d6c6f636b65642060696d706c656d656e746174696f6e60202873616e64626f78202b206675656c292e20497420646f65730a3b20202020206e6f7420646570656e64206f6e20746865206f7074696f6e616c206d616e69666573742d6c6576656c2068656c706572436f6d706f6e656e742e0a707572652d66756e6374696f6e203d2065646963742d707572652d66756e6374696f6e202f20636f6d706f6e656e742d707572652d66756e6374696f6e0a0a707572652d66756e6374696f6e2d636f6d6d6f6e203d20280a2020636f6f7264696e6174653a20747374722c0a202074797065506172616d65746572733a205b2a20747374725d2c0a2020706172616d6574657254797065733a205b2a20636f72652d747970652d7265665d2c2020202020203b20616c6c20626f756e6465640a202072657475726e547970653a20636f72652d747970652d7265662c20202020202020202020202020203b20626f756e6465640a2020636f737454656d706c6174653a20747374722c0a202064657465726d696e69736d436c6173733a2022746f74616c22202f2022746f74616c2d776974682d74797065642d646961676e6f73746963222c0a290a0a65646963742d707572652d66756e6374696f6e203d207b0a2020707572652d66756e6374696f6e2d636f6d6d6f6e2c0a2020736f757263653a20226564696374222c0a2020626f64793a20636f72652d666e2d626f64792c2020202020202020202020202020202020202020203b20696e6c696e652c20686173682d7369676e69666963616e740a7d0a0a636f6d706f6e656e742d707572652d66756e6374696f6e203d207b0a2020707572652d66756e6374696f6e2d636f6d6d6f6e2c0a2020736f757263653a2022636f6d706f6e656e74222c0a20203b20746865206469676573742d6c6f636b656420636f6d706f6e656e7420696d706c656d656e74696e6720746869732068656c7065722e2052657175697265642061742074686520736368656d610a20203b206c6576656c20736f206120636f6d706f6e656e742068656c7065722063616e206e657665722076616c696461746520776974686f7574206120686173682d626f756e642c0a20203b2073616e64626f782b6675656c2d64657363726962656420696d706c656d656e746174696f6e202845444943542d4c41575041434b2d505552452d494d504c2d303031292e0a2020696d706c656d656e746174696f6e3a2065786563757461626c652d636f6d706f6e656e742c0a7d0a0a3b20636f72652d666e2d626f647920697320646566696e65642062792065646963742d636f72652e6364646c20616e6420617373656d626c656420776974682074686973206c61777061636b0a3b20736368656d612e2049742069732061207075726520436f72652066756e6374696f6e20626f64792c206e6f7420616e206566666563742d63617061626c6520636f72652d626c6f636b2e0a0a73656d616e7469632d656666656374203d207b0a2020636f6f7264696e6174653a20747374722c0a202074797065506172616d65746572733a205b2a20747374725d2c0a2020696e707574547970653a20636f72652d747970652d7265662c2020202020202020202020202020203b20626f756e6465640a20206f7574707574547970653a20636f72652d747970652d7265662c20202020202020202020202020203b20626f756e6465640a2020657865637574696f6e436c6173733a202270726f6f664f6e6c7922202f202272756e74696d65222c2020203b206f7274686f676f6e616c20746f207772697465436c6173730a20206566666563744b696e6448696e743a206566666563742d6b696e642c0a2020666f6f747072696e744f626c69676174696f6e3a20747374722c0a2020636f73744f626c69676174696f6e3a20747374722c0a20206566666563744661696c757265733a207b202a206661696c7572652d6964656e74203d3e206566666563742d6661696c7572652d626f6479207d2c20203b206b6579656420627920636f6f7264696e6174653b20756e697175650a20206775617264537570706f72743a20626f6f6c2c0a7d0a0a6f62737472756374696f6e2d646566203d207b0a2020636f6f7264696e6174653a20747374722c0a2020617574686f72697479436c6173733a20617574686f726974792d636c6173732c0a20207061796c6f6164536368656d613a20636f72652d747970652d7265662c20202020202020202020203b2074797065642c20626f756e64656420286d617920626520656d707479207265636f7264290a7d0a0a3b206566666563742d6661696c7572652d626f64792c206566666563742d6b696e642c20617574686f726974792d636c6173732c20616e6420636f72652d747970652d7265662061726520646566696e65640a3b206f6e636520696e2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d61202845444943542d4142492d4e4f4455502d303031292e0a0a3b202d2d2d2065646963742d6c61777061636b2d616461707465722e6364646c202d2d2d0a3b2065646963742d6c61777061636b2d616461707465722e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f72206f6e6520646972656374206465636c61726174697665206c61777061636b2074617267657420616461707465722e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a3b0a3b2054686520656e636c6f73696e67206c61777061636b206d616e69666573742073656c6563747320746865206578616374207461726765742070726f66696c652c207461726765742049522c0a3b20616e642061646170746572207265736f75726365206469676573742e2054686f7365206964656e74697469657320617265206e6f7420726570656174656420686572652e0a0a6c61777061636b2d61646170746572203d207b0a202061706956657273696f6e3a202265646963742e6c61777061636b2d616461707465722f7631222c0a2020636c6173733a20226465636c61726174697665222c0a20206f7065726174696f6e50726f66696c65733a207b0a202020202a2074737472203d3e206c61777061636b2d616461707465722d6f7065726174696f6e2d70726f66696c650a20207d2c0a2020656666656374496d706c656d656e746174696f6e733a207b0a202020202a2074737472203d3e206c61777061636b2d616461707465722d6566666563740a20207d2c0a2020627564676574733a207b0a202020202a2074737472203d3e206c61777061636b2d616461707465722d6275646765740a20207d2c0a7d0a0a3b204b657973206172652063616e6f6e6963616c206c61777061636b206f7065726174696f6e2d70726f66696c6520636f6f7264696e617465732e0a6c61777061636b2d616461707465722d6f7065726174696f6e2d70726f66696c65203d207b0a2020636f72653a20747374722c0a202073656d616e746963456666656374733a205b2b20747374725d2c0a7d0a0a3b204b657973206172652063616e6f6e6963616c206c61777061636b2073656d616e7469632d65666665637420636f6f7264696e617465732e20466f6f747072696e742c20636f73742c20616e640a3b206661696c757265206669656c6473206d7573742065786163746c792064697363686172676520746865206d61746368696e67206578706f72746564206566666563742e0a6c61777061636b2d616461707465722d656666656374203d207b0a2020746172676574496e7472696e7369633a20747374722c0a2020746172676574436f6e66696775726174696f6e3a207265736f757263652d7265662c0a20207772697465436c6173733a206c61777061636b2d616461707465722d77726974652d636c6173732c0a2020666f6f747072696e744f626c69676174696f6e3a20747374722c0a2020636f73744f626c69676174696f6e3a20747374722c0a20206661696c7572654d617070696e67733a207b202a206661696c7572652d6964656e74203d3e2074737472207d2c0a7d0a0a3b204b657973206172652063616e6f6e6963616c206578706f7274656420636f73742d6f626c69676174696f6e20636f6f7264696e617465732e0a6c61777061636b2d616461707465722d627564676574203d207b0a20206d617853746570733a2075696e742c0a20206d6178416c6c6f636174656442797465733a2075696e742c0a20206d61784f757470757442797465733a2075696e742c0a7d0a0a6c61777061636b2d616461707465722d77726974652d636c617373203d20226e6f6e6522202f20227265616422202f202263726561746522202f2022656e7375726522202f0a20202020202020202020202020202020202020202020202020202020202022617070656e6422202f20227265706c61636522202f202264656c65746522202f2022637573746f6d220a0a3b206661696c7572652d6964656e7420697320646566696e656420696e2065646963742d636f6d6d6f6e2e6364646c2e0a0a3b202d2d2d2065646963742d7461726765742d70726f66696c652e6364646c202d2d2d0a3b2065646963742d7461726765742d70726f66696c652e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f7220746865204564696374207461726765742070726f66696c65206d616e69666573742e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76310a3b202873656520535045435f636f6e74696e75756d2d636f6e74726163742d62756e646c652d76312e6d64292e204a534f4e20696e207468652070726f736520737065637320697320610a3b207265766965772072656e646572696e672067656e6572617465642066726f6d207468697320736368656d613b2074686973204344444c206973207468652073696e676c6520736f757263650a3b206f66207472757468202845444943542d4142492d4e4f4455502d303031292e0a0a7461726765742d70726f66696c652d6d616e6966657374203d207b0a202061706956657273696f6e3a202265646963742e7461726765742d70726f66696c652f7631222c0a202069643a20747374722c202020202020202020202020202020202020202020202020203b20652e672e20226563686f2e64706f220a202076657273696f6e3a20747374722c20202020202020202020202020202020202020203b20652e672e202231220a20206163636570746564436f72654162693a205b2b20747374725d2c20202020202020203b20652e672e205b2265646963742e636f72652f7631225d0a0a2020696e7472696e736963733a207265736f757263652d7265662c0a2020696e7472696e7369634e616d6573706163653a20747374722c0a20203b207075626c697368657320746869732070726f66696c652773206f7065726174696f6e2d70726f66696c65207265636f72647320286f707469632074656d706c6174657320746861740a20203b206070726f66696c65602f60696d706c656d656e74736020636c6175736573207265736f6c766520616761696e7374292e205265666572656e63657320616e0a20203b206f7065726174696f6e2d70726f66696c65732d646f63756d656e74202845444943542d4142492d4f5050524f46494c452d534c4f542d303031292e0a20206f7065726174696f6e50726f66696c65733a207265736f757263652d7265662c0a2020666f6f747072696e74416c67656272613a207265736f757263652d7265662c0a2020636f7374416c67656272613a207265736f757263652d7265662c0a202074617267657449723a207265736f757263652d7265662c0a20206f62737472756374696f6e5461786f6e6f6d793a207265736f757263652d7265662c0a202076657269666965723a207265736f757263652d7265662c0a20206c6f77657265723a207265736f757263652d7265662c0a202073616e64626f783a207265736f757263652d7265662c0a20206675656c4d6f64656c3a207265736f757263652d7265662c0a0a20203b206669656c647320746865206c616e67756167652073706563207265717569726573206f662065766572792070726f66696c650a202062756e646c6550726f66696c653a207265736f757263652d7265662c0a202067656e657261746564417274696661637450726f66696c65733a205b2a207265736f757263652d7265665d2c0a202063616e6f6e6963616c456e636f64696e6752756c65733a207265736f757263652d7265662c0a20203b20412070726f66696c65207468617420616363657074732074686520646972656374206465636c61726174697665206c61777061636b2d6164617074657220414249206e616d65732069740a20203b2065786163746c79206f6e63652e2050726f66696c6573207468617420646f206e6f7420636f6e73756d65206c61777061636b206164617074657273206c6561766520746869730a20203b206f7074696f6e616c20736c6f7420616273656e74206f7220656d7074792e0a20203f2061636365707465644c61777061636b416461707465724162693a205b5d202f205b2265646963742e6c61777061636b2d616461707465722f7631225d2c0a2020646961676e6f737469634162693a207265736f757263652d7265662c0a0a20203b206170706c69636174696f6e20646f637472696e650a20206170706c69636174696f6e4d6f64656c3a202261746f6d6963222c0a202072656164436f6e73697374656e63793a20226170706c69636174696f6e2d736e617073686f7422202f20747374722c0a202067756172644576616c756174696f6e3a2022707265636f6d6d69742d61746f6d696322202f20747374722c0a20206f62737472756374696f6e526f6c6c6261636b3a20226e6f2d76697369626c652d6566666563747322202f20747374722c0a20206d756c74695461726765743a20626f6f6c2c0a20203b207768657468657220746865207461726765742063616e206576616c7561746520707265636f6d6d697420706f7374636f6e646974696f6e20286067756172616e746565602920636865636b730a20203b20696e73696465207468652061746f6d6963206170706c69636174696f6e20756e6974202845444943542d5441524745542d504f5354434f4e442d303031290a2020706f7374636f6e646974696f6e537570706f72743a20626f6f6c2c0a0a202064657465726d696e6973746963457865637574696f6e3a207265736f757263652d7265662c0a2020636f6e666f726d616e636546697874757265436f727075733a207265736f757263652d7265662c0a7d0a0a3b20536861726564207479706573207265736f757263652d72656620616e64207368613235362d6469676573742061726520646566696e6564206f6e636520696e0a3b2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d6120627920746865206275696c640a3b202845444943542d4142492d4e4f4455502d303031292e205468657920617265206e6f74207265646566696e656420686572652e0a0a3b202d2d2d20696e7472696e736963207369676e6174757265202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a3b20546865206172746966616374207265666572656e63656420627920746865206d616e696665737427732060696e7472696e7369637360207265736f757263652d726566206973207468650a3b20696e7472696e7369632d7369676e617475726520636f7270757320646f63756d656e742062656c6f772e20497473206c61796f757420697320666978656420736f2074776f0a3b20696e646570656e64656e742070726f66696c65732076616c69646174652f686173682074686520636f72707573206964656e746963616c6c790a3b202845444943542d4142492d494e5452494e534943532d444f432d303031292e0a0a3b20696e7472696e736963732069732061204d4150206b6579656420627920636f6f7264696e6174652c20736f2074686520736368656d6120697473656c6620656e666f726365730a3b20636f6f7264696e61746520756e697175656e6573732e20412070726f766964657220726563656976657320746865207265736f6c76656420636f7270757320617320610a3b206469676573742d626f756e642073656d616e74696320696e70757420616e64207265736f6c76657320636f6f7264696e617465732077697468696e20746861742061727469666163742e0a3b2045616368206d6170206b6579204d55535420657175616c20697473207265636f726427732060636f6f7264696e61746560206669656c640a3b202845444943542d4142492d494e5452494e5349432d554e495155452d303031292e0a696e7472696e736963732d646f63756d656e74203d207b0a202061706956657273696f6e3a202265646963742e7461726765742d70726f66696c652e696e7472696e736963732f7631222c0a2020696e7472696e736963733a207b202a2074737472203d3e20696e7472696e736963207d2c0a7d0a0a3b20546865206172746966616374207265666572656e63656420627920746865206d616e6966657374277320606f7065726174696f6e50726f66696c657360207265736f757263652d7265662e0a3b206f7065726174696f6e2d70726f66696c65202f206f707469632d74656d706c6174652061726520646566696e656420696e2065646963742d636f6d6d6f6e2e6364646c2e204b657965642062790a3b20636f6f7264696e61746520736f207265736f6c7574696f6e2063616e2774207069636b206265747765656e2074776f2073616d652d636f6f7264696e6174652070726f66696c65730a3b202845444943542d4142492d4f5050524f46494c452d534c4f542d3030312c2045444943542d4142492d4f5050524f46494c452d554e495155452d303031292e0a6f7065726174696f6e2d70726f66696c65732d646f63756d656e74203d207b0a202061706956657273696f6e3a202265646963742e7461726765742d70726f66696c652e6f7065726174696f6e2d70726f66696c65732f7631222c0a202070726f66696c65733a207b202a2074737472203d3e206f7065726174696f6e2d70726f66696c65207d2c0a7d0a0a3b2041207479706564207072652d6c6f776572696e67207175657374696f6e20746861742063616e2062652070726f706f73656420627920576174736f6e206f7220616e206167656e7420616e640a3b20636865636b65642062792074686520636f6d70696c65722e2049742069732063616e6f6e6963616c2d43424f5220656e636f64656420756e6465720a3b206065646963742e6c6f776572696e672d726571756972656d656e74732f7631603b2074686520636f6d70696c657220636865636b7320746869732061727469666163742c206e6f74207468650a3b2070726f736520746861742070726f64756365642069742e0a6c6f776572696e672d726571756972656d656e7473203d207b0a202061706956657273696f6e3a202265646963742e6c6f776572696e672d726571756972656d656e74732f7631222c0a20206f7065726174696f6e50726f66696c653a20747374722c0a202073656d616e746963456666656374733a205b2a2073656d616e7469632d6566666563742d726571756972656d656e745d2c0a202072657175697265645772697465436c61737365733a205b2a2077726974652d636c6173735d2c0a202067756172644b696e64733a205b2a2067756172642d6b696e645d2c0a202061746f6d69636974793a2061746f6d69636974792d726571756972656d656e742c0a2020706f7374636f6e646974696f6e537570706f72743a20626f6f6c2c0a20206f62737472756374696f6e436f6f7264696e617465733a205b2a20747374725d2c0a2020666f6f747072696e744f626c69676174696f6e733a205b2a20747374725d2c0a2020636f73744f626c69676174696f6e733a205b2a20747374725d2c0a20206f70746963436f6e74726163743a20747374722c0a7d0a0a73656d616e7469632d6566666563742d726571756972656d656e74203d207b0a2020636f6f7264696e6174653a20747374722c0a20207772697465436c6173733a2077726974652d636c6173732c0a202067756172644b696e64733a205b2a2067756172642d6b696e645d2c0a20206f62737472756374696f6e436f6f7264696e617465733a205b2a20747374725d2c0a2020666f6f747072696e744f626c69676174696f6e733a205b2a20747374725d2c0a2020636f73744f626c69676174696f6e733a205b2a20747374725d2c0a7d0a0a77726974652d636c617373203d20226e6f6e6522202f20227265616422202f202263726561746522202f2022656e7375726522202f2022617070656e6422202f0a2020202020202020202020202020227265706c61636522202f202264656c65746522202f20747374720a67756172642d6b696e64203d2022707265636f6d6d69742d61746f6d696322202f20747374720a61746f6d69636974792d726571756972656d656e74203d202261746f6d696322202f20747374720a0a3b20412067656e75696e6520756e696f6e3a207075726520636f6e7374727563746f7273206361727279206e6f20656666656374206b696e64206f72206661696c757265733b206566666563740a3b20696e7472696e73696373206d757374202845444943542d5441524745542d494e5452494e5349432d434c4153532d303031292e2054686520736368656d6120656e666f7263657320746869732c0a3b206e6f74206120636f6d6d656e742e0a0a3b2054686520696e7472696e736963277320636f6f7264696e6174652069732074686520696e7472696e73696373206d6170204b45592c206e6f7420612076616c7565206669656c642c20736f207468650a3b206b657920616e6420636f6f7264696e6174652063616e206e65766572206469736167726565202845444943542d4142492d494e5452494e5349432d554e495155452d303031292e0a696e7472696e736963203d20707572652d696e7472696e736963202f206566666563742d696e7472696e7369630a0a707572652d696e7472696e736963203d207b0a2020696e7472696e736963436c6173733a202270757265222c0a202074797065506172616d65746572733a205b2a20747374725d2c0a2020617267756d656e7454797065733a205b2a20636f72652d747970652d7265665d2c0a202072657475726e547970653a20636f72652d747970652d7265662c0a20206775617264537570706f72743a2066616c73652c0a2020666f6f747072696e7454656d706c6174653a20747374722c0a2020636f737454656d706c6174653a20747374722c0a20207772697465436c6173733a20226e6f6e65222c0a7d0a0a6566666563742d696e7472696e736963203d207b0a2020696e7472696e736963436c6173733a2022656666656374222c0a202074797065506172616d65746572733a205b2a20747374725d2c0a2020617267756d656e7454797065733a205b2a20636f72652d747970652d7265665d2c0a202072657475726e547970653a20636f72652d747970652d7265662c0a20206566666563744b696e643a206566666563742d6b696e642c0a20203b206d6170206b65796564206279206661696c75726520636f6f7264696e61746520286661696c7572652d6964656e74293b20746865206661696c75726520636f6f7264696e6174652069730a20203b20746865206b65792c206e6f7420612076616c7565206669656c642c20736f20756e697175656e657373206973207374727563747572616c0a20203b202845444943542d4142492d4641494c5552452d554e495155452d303031292e0a20206566666563744661696c757265733a207b202a206661696c7572652d6964656e74203d3e206566666563742d6661696c7572652d626f6479207d2c0a20206775617264537570706f72743a20626f6f6c2c0a2020666f6f747072696e7454656d706c6174653a20747374722c0a2020636f737454656d706c6174653a20747374722c0a20207772697465436c6173733a20227265616422202f202263726561746522202f2022656e7375726522202f2022617070656e6422202f20227265706c61636522202f0a20202020202020202020202020202264656c65746522202f2022637573746f6d222c0a202063616e5061727469636970617465496e41746f6d696347756172643a20626f6f6c2c0a7d0a0a3b206566666563742d6661696c7572652d626f64792c206566666563742d6b696e642c20617574686f726974792d636c6173732c20616e6420636f72652d747970652d7265662061726520646566696e65640a3b206f6e636520696e2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d61202845444943542d4142492d4e4f4455502d303031292e0a0a3b202d2d2d2065646963742d617574686f726974792d66616374732e6364646c202d2d2d0a3b2065646963742d617574686f726974792d66616374732e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f722074686520666972737420636f6d70696c65722d636f6e7465787420617574686f726974792d666163747320646f63756d656e742e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a3b0a3b205468697320736368656d6120697320617373656d626c656420776974682065646963742d636f6d6d6f6e2e6364646c20736f20736f757263652e6469676573742075736573207468650a3b20736861726564207368613235362d6469676573742074797065642076616c75652e204a534f4e2069732061207265766965772f696e7075742072656e646572696e673a206974730a3b20607368613235363a3c3634206865783e6020736f75726365206469676573742069732070726f6a656374656420746f205b60736861323536602c203332207261772062797465735d206f6e0a3b2074686520776972652c20616e64206974732066616374206172726179732070726f6a65637420746f2074686520636f6f7264696e6174652d6b65796564206d6170732062656c6f772e0a0a617574686f726974792d6661637473203d207b0a202061706956657273696f6e3a202265646963742e617574686f726974792d66616374732f7631222c0a2020736f757263653a20617574686f726974792d666163742d736f757263652c0a20206f7065726174696f6e50726f66696c65733a207b202a2074737472203d3e20617574686f726974792d6f7065726174696f6e2d70726f66696c652d66616374207d2c0a20206566666563745772697465436c61737365733a207b202a2074737472203d3e20617574686f726974792d77726974652d636c617373207d2c0a2020627564676574733a207b202a2074737472203d3e20617574686f726974792d6275646765742d66616374207d2c0a7d0a0a617574686f726974792d666163742d736f75726365203d207b0a20206b696e643a20226c61777061636b22202f202274617267657450726f66696c65222c0a2020636f6f7264696e6174653a20747374722c0a20206469676573743a207368613235362d6469676573742c0a7d0a0a3b20546865206d6170206b65792069732074686520736f75726365206f7065726174696f6e2d70726f66696c6520636f6f7264696e6174652e204974206973206e6f7420726570656174656420696e0a3b207468652076616c75652c20736f2061206b657920616e6420656d62656464656420636f6f7264696e6174652063616e6e6f742064697361677265652e20416c6c6f7765642077726974650a3b20636c61737365732061726520612063616e6f6e6963616c206d61702d7365743a2074686520636c6173732069732074686520756e69717565206b657920616e64206e756c6c206973207468650a3b20756e6974206d61726b65722e2043616e6f6e6963616c2043424f52206669786573206b6579206f7264657220776974686f75742061207365636f6e64206f72646572696e672072756c652e0a617574686f726974792d6f7065726174696f6e2d70726f66696c652d66616374203d207b0a2020636f72653a20747374722c0a2020616c6c6f7765645772697465436c61737365733a207b202a20617574686f726974792d77726974652d636c617373203d3e206e756c6c207d2c0a7d0a0a3b20546865206566666563745772697465436c6173736573206d6170206b6579206973207468652073656d616e7469632065666665637420636f6f7264696e6174652e2054686520627564676574730a3b206d6170206b65792069732074686520736f757263652062756467657420636f6f7264696e6174652e2043616e6f6e6963616c2043424f52206d61702d6b657920756e697175656e6573730a3b206d616b6573206475706c6963617465206661637420636f6f7264696e61746573207374727563747572616c6c7920756e726570726573656e7461626c652e0a617574686f726974792d6275646765742d66616374203d207b0a20206d617853746570733a2075696e742c0a20206d6178416c6c6f636174656442797465733a2075696e742c0a20206d61784f757470757442797465733a2075696e742c0a7d0a0a3b20417574686f726974794661637473446f63756d656e7420763120696e74656e74696f6e616c6c792061636365707473206f6e6c792074686520777269746520636c6173736573207468650a3b2063757272656e7420636f6d70696c6572206d6f64656c2063616e20636f6e73756d652e2060637573746f6d602069732074686520736f6c6520763120637573746f6d207370656c6c696e673b0a3b20617262697472617279207461726765742d70726f66696c6520657874656e73696f6e20737472696e677320646f206e6f7420656e746572207468697320636f6d70696c657220706174682e0a617574686f726974792d77726974652d636c617373203d20226e6f6e6522202f20227265616422202f202263726561746522202f2022656e7375726522202f2022617070656e6422202f0a202020202020202020202020202020202020202020202020227265706c61636522202f202264656c65746522202f2022637573746f6d220a0a3b202d2d2d2065646963742d726573756c742d70726f6a656374696f6e2e6364646c202d2d2d0a3b20535044582d4c6963656e73652d4964656e7469666965723a204170616368652d322e300a3b2065646963742d726573756c742d70726f6a656374696f6e2e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f7220636f6d70696c65722d6f776e6564206170706c69636174696f6e2d726573756c742070726f6a656374696f6e732e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a0a726573756c742d70726f6a656374696f6e203d207b0a2020736368656d613a202265646963742e726573756c742d70726f6a656374696f6e2f7631222c0a20206f7065726174696f6e436f6f7264696e6174653a20626f756e6465642d70726f6a656374696f6e2d746578742c0a20206f7574707574547970653a20626f756e6465642d70726f6a656374696f6e2d746578742c0a20206d61784f757470757442797465733a2075696e74202e677420302c0a202065787072657373696f6e3a20726573756c742d70726f6a656374696f6e2d657870722c0a7d0a0a726573756c742d70726f6a656374696f6e2d65787072203d20726573756c742d70726f6a656374696f6e2d7265636f7264202f20726573756c742d70726f6a656374696f6e2d736f757263650a0a726573756c742d70726f6a656374696f6e2d7265636f7264203d207b0a20206b696e643a20227265636f7264222c0a20203b2054686520726f6f74207265636f726420636f756e7473206173206f6e65206f66207468652052757374206465636f6465722773203235362065787072657373696f6e206e6f6465732e0a20203b204e657374656420616767726567617465206e6f646520636f756e742072656d61696e7320616e20617574686f7269746174697665206465636f64657220636865636b2e0a20206669656c64733a207b20302a32353520626f756e6465642d70726f6a656374696f6e2d74657874203d3e20726573756c742d70726f6a656374696f6e2d65787072207d2c0a7d0a0a726573756c742d70726f6a656374696f6e2d736f75726365203d207b0a20206b696e643a2022736f75726365222c0a2020736f757263653a20726573756c742d70726f6a656374696f6e2d736f757263652d6b696e642c0a20203b204d617463686573204d41585f524553554c545f50524f4a454354494f4e5f504154485f5345474d454e545320696e2065646963742d73796e7461782e0a2020706174683a205b302a333220626f756e6465642d70726f6a656374696f6e2d746578745d2c0a7d0a0a726573756c742d70726f6a656374696f6e2d736f757263652d6b696e64203d0a20207b206b696e643a20226170706c69636174696f6e496e70757422207d202f0a20207b0a202020206b696e643a20226361706162696c697479526573756c74222c0a202020207374657049643a20626f756e6465642d70726f6a656374696f6e2d746578742c0a20207d0a0a626f756e6465642d70726f6a656374696f6e2d74657874203d2074737472202e73697a652028312e2e31303234290a0a3b202d2d2d2065646963742d7461726765742d69722e6364646c202d2d2d0a3b20535044582d4c6963656e73652d4964656e7469666965723a204170616368652d322e300a3b2065646963742d7461726765742d69722e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f72207468652045646963742d6f776e65642054617267657420495220617274696661637420656e76656c6f70652e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a3b0a3b205468697320736368656d6120697320617373656d626c656420776974682065646963742d636f6d6d6f6e2e6364646c20616e642065646963742d636f72652e6364646c2e2049740a3b2064656c696265726174656c792072657573657320436f72652065787072657373696f6e732c20707265646963617465732c20627564676574732c206c6f63616c207265666572656e6365732c0a3b206f62737472756374696f6e20726561736f6e732c20616e64206f62737472756374696f6e2061726d7320736f2074686520736368656d61206d617463686573207468652076616c75650a3b20656d6974746564206279207468652063616e6f6e6963616c2054617267657420495220656e636f64657220726174686572207468616e20726573746174696e672074686f73652074797065732e0a3b2049742064657363726962657320746865207374727563747572616c207368617065206f662076616c6964206c6f776572696e672d70726f6475636564206172746966616374732e205468650a3b206c6f776572696e6720616e6420656e636f64657220636f6e7472616374732073657061726174656c7920656e666f7263652073656d616e746963206964656e7469666965722072756c65730a3b20616e642063616e6f6e6963616c206f72646572696e672f64656475706c69636174696f6e20666f72207365742d6c696b652076616c7565732e0a0a3b2054617267657420495220656e636f64696e672072656a6563747320616e20656d707479207461726765742d70726f66696c6520636f6f7264696e617465206265666f72652062797465730a3b2065786973742c20736f207468697320726f6f74207469676874656e732074686520736861726564207374727563747572616c207265736f757263652d726566206163636f7264696e676c792e0a7461726765742d69722d7265736f757263652d726566203d207b0a202069643a2074737472202e7265676578702022283f73292e2b222c0a20206469676573743a207368613235362d6469676573742c0a7d0a0a7461726765742d69722d6172746966616374203d207461726765742d69722d636c6f7365642d6172746966616374202f207461726765742d69722d6c65676163792d61727469666163740a0a7461726765742d69722d61727469666163742d636f6d6d6f6e203d20280a20206b696e643a202274617267657449724172746966616374222c0a2020646f6d61696e3a20747374722c0a202074617267657450726f66696c653a207461726765742d69722d7265736f757263652d7265662c0a2020736f75726365436f7265436f6f7264696e6174653a2074737472202e7265676578702022283f73292e2b222c0a290a0a7461726765742d69722d636c6f7365642d6172746966616374203d207b0a20207461726765742d69722d61727469666163742d636f6d6d6f6e2c0a202073656d616e746963436c6f737572653a207461726765742d69722d73656d616e7469632d636c6f737572652c0a2020696e74656e74733a207b202a2074737472203d3e207461726765742d69722d696e74656e74207d2c0a7d0a0a7461726765742d69722d6c65676163792d6172746966616374203d207b0a20207461726765742d69722d61727469666163742d636f6d6d6f6e2c0a2020696e74656e74733a207b202a2074737472203d3e207461726765742d69722d6c65676163792d696e74656e74207d2c0a7d0a0a7461726765742d69722d73656d616e7469632d636c6f73757265203d207b0a2020736f75726365436f72653a207461726765742d69722d7265736f757263652d7265662c0a20206c61777061636b733a205b2a207461726765742d69722d7265736f757263652d7265665d2c0a7d0a0a7461726765742d69722d696e74656e74203d207b0a20207461726765742d69722d696e74656e742d636f6d6d6f6e2c0a20203f2062617369733a20636f72652d657870722c0a7d0a0a7461726765742d69722d6c65676163792d696e74656e74203d207b0a20207461726765742d69722d696e74656e742d636f6d6d6f6e2c0a7d0a0a7461726765742d69722d696e74656e742d636f6d6d6f6e203d20280a20206f7065726174696f6e50726f66696c653a20747374722c0a2020696e707574436f6e73747261696e74733a205b2a20696e7075742d636f6e73747261696e745d2c0a2020636f72654576616c756174696f6e4275646765743a20636f72652d6275646765742c0a2020726571756972656d656e74733a205b2a207461726765742d69722d726571756972656d656e745d2c0a202073746570733a205b2a207461726765742d69722d737465705d2c0a2020726573756c743a20636f72652d657870722c0a290a0a7461726765742d69722d726571756972656d656e74203d207b0a202069643a20747374722c0a20207072656469636174653a20636f72652d7072656469636174652c0a20206f6e4661696c7572653a20726571756972652d6661696c7572652d61726d2c0a7d0a0a7461726765742d69722d73746570203d207b0a202069643a20747374722c0a202062696e64696e673a206c6f63616c2d7265662c0a20206566666563743a20747374722c0a2020746172676574496e7472696e7369633a20747374722c0a2020696e7075743a20636f72652d657870722c0a20206f62737472756374696f6e4661696c757265733a205b2a206661696c7572652d6964656e745d2c0a20206f62737472756374696f6e41726d733a207b202a206661696c7572652d6964656e74203d3e206f62737472756374696f6e2d61726d207d2c0a7d0a", - "rawSha256": "ff5405708185e0bcf33dac263000fcb772c79e21145ad69da7cad0692e1a9552" + "bytesHex": "3b20535044582d4c6963656e73652d4964656e7469666965723a204170616368652d322e300a3b2065646963742d70726f76696465722d636f6e7472616374732e6364646c0a3b2047656e6572617465642066726f6d2045646963742d6f776e65642041424920667261676d656e74732e20444f204e4f5420454449542e0a0a3b202d2d2d2065646963742d636f6d6d6f6e2e6364646c202d2d2d0a3b2065646963742d636f6d6d6f6e2e6364646c0a3b20536861726564204344444c20747970657320666f722074686520456469637420414249732c20646566696e6564204f4e4345206865726520736f20746865792063616e6e6f742064726966740a3b202845444943542d4142492d4e4f4455502d303031292e2054776f2067726f7570733a0a3b2020202d207265736f757263652d7265662c207368613235362d6469676573742c206566666563742d6661696c7572652d626f64792c206566666563742d6b696e642c20617574686f726974792d636c6173732c0a3b2020202020636f72652d747970652d7265663a20617373656d626c656420776974682065646963742d7461726765742d70726f66696c652e6364646c20616e640a3b202020202065646963742d6c61777061636b2e6364646c20627920746865206275696c643b2074686f736520736368656d617320646f206e6f74207265646566696e65207468656d2e0a3b2020202d206f7065726174696f6e2d70726f66696c652c206f707469632d74656d706c6174652c2061706572747572652d726571756972656d656e7420616e6420746865697220726566733a0a3b2020202020636f6e73756d65642062792074686520436f72652f6f70746963206c61796572202865646963742d636f72652e6364646c2920616e64207265666572656e636564206279207468650a3b20202020206c616e67756167652f7461726765742d70726f66696c652073706563732e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a0a3b2041206e6f726d617469766520737562636f6d706f6e656e74207265666572656e636564206279206964656e7469747920706c7573206469676573742e204d616e696665737473206e657665720a3b20656d626564207468656972206f776e2073656c662d64696765737420696e20746865697220707265696d616765202845444943542d434f52452d53454c46484153482d303031292e0a7265736f757263652d726566203d207b2069643a20747374722c206469676573743a207368613235362d646967657374207d0a0a3b20446967657374732061726520617574686f726974617469766520617320747970656420627974652076616c7565732c206e657665722068657820737472696e67732e20526576696577204a534f4e0a3b2072656e64657273207468697320617320227368613235363a3c3634206c6f77657263617365206865783e22202845444943542d4449474553542d574952452d303031292e0a7368613235362d646967657374203d205b20616c676f726974686d3a2022736861323536222c2062797465733a2062737472202e73697a65203332205d0a0a3b2041206e616d6564206c6f772d6c6576656c206661696c75726520616e206566666563742063616e2072616973652e2054686520736f75726365206f62737472756374696f6e206d61700a3b2062696e64732069742028627920636f6f7264696e6174652920616e6420636f6e73747275637473206120747970656420646f6d61696e206f62737472756374696f6e2066726f6d206974730a3b207061796c6f6164202845444943542d4142492d4641494c5552452d4e414d45442d303031292e0a3b20416e20656666656374277320606566666563744661696c7572657360206c697374204d555354206861766520756e697175652060636f6f7264696e61746560733a2073696e6365207468650a3b206f62737472756374696f6e206d6170206973206b6579656420627920636f6f7264696e6174652c2074776f206661696c757265732073686172696e67206120636f6f7264696e61746520286576656e0a3b207769746820646966666572656e7420617574686f72697479436c6173732f7061796c6f61645479706529206d616b652065786861757374697665206d617070696e6720616e642062696e6465720a3b20747970696e6720616d626967756f757320616e64206172652072656a6563746564202845444943542d4142492d4641494c5552452d554e495155452d303031292e0a3b0a3b2045666665637473206361727279207468656972206661696c757265732061732061206d617020607b206661696c7572652d6964656e74203d3e206566666563742d6661696c7572652d626f6479207d600a3b202873656520746865207461726765742f6c61777061636b2065666665637420736368656d6173292e20546865206661696c75726520636f6f7264696e61746520697320746865206d61700a3b204b45592c20736f206974206973206e6f7420726570656174656420696e2074686520626f647920616e642063616e6e6f74206469736167726565207769746820746865206b65792e0a6566666563742d6661696c7572652d626f6479203d207b0a2020617574686f72697479436c6173733a20617574686f726974792d636c6173732c0a20207061796c6f6164547970653a20636f72652d747970652d7265662c202020202020202020202020203b2074797065642c20626f756e64656420286d617920626520656d707479207265636f7264290a7d0a0a3b2041206661696c75726520636f6f7264696e617465206d7573742062652061206261726520456469637420606964656e746020286c65747465722f756e64657273636f7265207468656e0a3b206c6574746572732f6469676974732f756e64657273636f7265732920414e44206d757374206e6f742062652061207265736572766564206b6579776f72642028652e672e2060656c7365602c0a3b20606261736973602c20607768657265602c206072657175697265602c2060666f72602c2060696660292e2054686520736f75726365206f62737472756374696f6e2d6d6170204c4853206f6e6c790a3b20616363657074732061206e6f6e2d6b6579776f726420606964656e74602c20736f20612068797068656e2f646f742f6b6579776f726420636f6f7264696e61746520776f756c642062650a3b204142492d76616c69642079657420696d706f737369626c6520746f206d617020657868617573746976656c7920696e20736f757263652e20546865207265676578206361707475726573207468650a3b206c65786963616c2073686170653b206b6579776f7264206578636c7573696f6e20697320616e206164646974696f6e616c2076616c69646174696f6e2072756c650a3b202845444943542d4142492d4641494c5552452d4944454e542d303031292e0a6661696c7572652d6964656e74203d2074737472202e72656765787020225b412d5a612d7a5f5d5b412d5a612d7a302d395f5d2a220a0a6566666563742d6b696e64203d20227265616422202f202263726561746522202f2022656e7375726522202f20227265706c61636522202f202264656c65746522202f0a202020202020202020202020202022617070656e6422202f202272656475636522202f202273656d616e7469632e656d697422202f2022637573746f6d220a0a617574686f726974792d636c617373203d2022646f6d61696e4d61707061626c6522202f20227061727469636970616e744f776e656422202f2022696e746567726974794661756c7422202f0a202020202020202020202020202020202020227265736f757263654661756c7422202f2022696e7465726e616c4661756c74220a0a636f72652d747970652d726566203d20747374722020203b2063616e6f6e6963616c20436f7265207479706520636f6f7264696e6174650a0a3b20416e206f7065726174696f6e2070726f66696c6520737570706c69657320746865206f707469632074656d706c617465206120436f726520696e74656e74207265736f6c766573206974730a3b206f707469634b696e642f626f756e646172794b696e642f737570706f7274506f6c6963792f6c6f7373446973706f736974696f6e2066726f6d2e205461726765742070726f66696c657320616e640a3b206c61777061636b73207075626c6973682074686573652061732061206d617020607b20636f6f7264696e617465203d3e206f7065726174696f6e2d70726f66696c65207d602c20736f207468650a3b20636f6f7264696e61746520697320746865204b45592c206e6f7420612076616c7565206669656c64202845444943542d4f505449432d54454d504c4154452d4f574e45522d3030312c0a3b2045444943542d4142492d4f5050524f46494c452d554e495155452d303031292e0a6f7065726174696f6e2d70726f66696c65203d207b0a20206f7074696354656d706c6174653a206f707469632d74656d706c6174652c0a20206566666563745072656469636174653a20747374722c20202020202020202020203b20636f6f7264696e617465206f6620746865206f7065726174696f6e2d6d6f6465207072656469636174650a7d0a0a6f707469632d74656d706c617465203d207b0a20206f707469634b696e643a2022726576656c6174696f6e22202f20226166666563745265696e746567726174696f6e222c0a2020626f756e646172794b696e643a202270726f6a656374696f6e22202f2022616666656374222c0a2020737570706f7274506f6c6963793a20747374722c202020202020202020202020203b2063616e6f6e6963616c20737570706f72742d706f6c69637920636f6f7264696e6174650a20206c6f7373446973706f736974696f6e3a20747374722c20202020202020202020203b2063616e6f6e6963616c206c6f73732d646973706f736974696f6e20636f6f7264696e6174650a20203f20626173697354656d706c6174653a20747374722c20202020202020202020203b206f7074696f6e616c206469676573742d6c6f636b65642062617369732074656d706c61746520636f6f72640a20203b2074686520617065727475726520726571756972656d656e7420746869732074656d706c61746520737570706c6965732e205265717569726564207768656e207468652074656d706c6174650a20203b2069732074686520736f75726365206f66206120436f7265206f707469632773206170657274757265526571756972656d656e742028692e652e2074686520696e74656e7420686173206e6f0a20203b20736f757263652060666f6f747072696e74203c3d202e2e2e60292c2073696e6365206170657274757265526571756972656d656e74206973206d616e6461746f727920696e20436f72650a20203b202845444943542d4f505449432d41504552545552452d5245462d303031292e0a20203f206170657274757265526571756972656d656e743a2061706572747572652d726571756972656d656e742c0a7d0a0a3b206170657274757265526571756972656d656e742069732061207479706564207265666572656e63652c206e65766572206120667265652d666f726d20737472696e672e2041207265766965770a3b2072656e646572696e67206d61792073686f772069747320636f6f7264696e617465202845444943542d4f505449432d41504552545552452d5245462d303031292e0a61706572747572652d726571756972656d656e74203d20666f6f747072696e742d6365696c696e672d726566202f2061627374726163742d666f6f747072696e742d6f626c69676174696f6e2d7265660a666f6f747072696e742d6365696c696e672d726566203d207b206b696e643a2022666f6f747072696e744365696c696e67222c207265663a2074737472207d0a61627374726163742d666f6f747072696e742d6f626c69676174696f6e2d726566203d207b206b696e643a20226162737472616374466f6f747072696e744f626c69676174696f6e222c207265663a2074737472207d0a0a3b202d2d2d2065646963742d636f72652e6364646c202d2d2d0a3b2065646963742d636f72652e6364646c0a3b204e6f726d617469766520736368656d6120666f722074686520456469637420436f72652076312073656d616e746963206d6f64656c2e0a3b0a3b2053636f706520626f756e646172793a20746869732066696c6520646566696e657320436f7265206d65616e696e6720616e6420736368656d61207368617065206f6e6c792e20497420646f65730a3b206e6f7420646566696e6520612063616e6f6e6963616c20656e636f6465722c20436f7265206d6f64756c652068617368206669656c64732c20686173682066697874757265732c207461726765740a3b206c6f776572696e672c2061646d697373696f6e2062756e646c65732c206f72207461726765742d6f776e65642049522e0a0a636f72652d6d6f64756c65203d207b0a202061706956657273696f6e3a202265646963742e636f72652f7631222c0a2020636f6f7264696e6174653a20747374722c0a2020696d706f7274733a205b2a20636f72652d696d706f72745d2c0a202074797065733a207b202a2074737472203d3e20636f72652d74797065207d2c0a2020696e74656e74733a207b202b2074737472203d3e20636f72652d696e74656e74207d2c0a20207265717569726564436f72654361706162696c69746965733a205b2a20747374725d2c0a7d0a0a636f72652d696d706f7274203d207b0a20206b696e643a20226c61777061636b22202f202274617267657422202f2022636f726522202f20226361706162696c697479222c0a20207265663a207265736f757263652d7265662c0a20203f20616c6961733a20747374722c0a7d0a0a3b202d2d2d207479706573202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a636f72652d74797065203d20636f72652d7363616c61722d74797065202f20636f72652d7265636f72642d74797065202f20636f72652d76617269616e742d74797065202f0a202020202020202020202020636f72652d6f7074696f6e2d74797065202f20636f72652d6c6973742d74797065202f20636f72652d6d61702d74797065202f0a202020202020202020202020636f72652d6361706162696c6974792d7265662d74797065202f20636f72652d65787465726e616c2d616374696f6e2d726571756573742d747970650a0a636f72652d7363616c61722d74797065203d20636f72652d626f6f6c2d74797065202f20636f72652d696e742d74797065202f20636f72652d737472696e672d74797065202f0a20202020202020202020202020202020202020636f72652d62797465732d74797065202f20636f72652d756e69742d747970650a0a636f72652d626f6f6c2d74797065203d207b206b696e643a2022426f6f6c22207d0a636f72652d756e69742d74797065203d207b206b696e643a2022556e697422207d0a636f72652d696e742d74797065203d207b0a20206b696e643a202249363422202f202255363422202f202249333222202f202255333222202f202249313622202f202255313622202f2022493822202f20225538222c0a7d0a636f72652d737472696e672d74797065203d207b0a20206b696e643a2022537472696e67222c0a20206d61783a2075696e742c0a202063616e6f6e6963616c3a2022756e69636f64652d7363616c61722d6e666322202f20227261772d75746638222c0a7d0a636f72652d62797465732d74797065203d207b0a20206b696e643a20224279746573222c0a20206d61783a2075696e742c0a7d0a636f72652d7265636f72642d74797065203d207b0a20206b696e643a20225265636f7264222c0a20206669656c64733a207b202a2074737472203d3e20636f72652d747970652d726566207d2c0a7d0a636f72652d76617269616e742d74797065203d207b0a20206b696e643a202256617269616e74222c0a202063617365733a207b202b2074737472203d3e2076617269616e742d636173652d626f6479207d2c0a7d0a76617269616e742d636173652d626f6479203d207b0a20203f207061796c6f61643a20636f72652d747970652d7265662c0a7d0a636f72652d6f7074696f6e2d74797065203d207b0a20206b696e643a20224f7074696f6e222c0a20206974656d3a20636f72652d747970652d7265662c0a7d0a636f72652d6c6973742d74797065203d207b0a20206b696e643a20224c697374222c0a20206974656d3a20636f72652d747970652d7265662c0a20206d61783a2075696e742c0a7d0a636f72652d6d61702d74797065203d207b0a20206b696e643a20224d6170222c0a20206b65793a20636f72652d747970652d7265662c0a202076616c75653a20636f72652d747970652d7265662c0a20206d61783a2075696e742c0a7d0a636f72652d6361706162696c6974792d7265662d74797065203d207b0a20206b696e643a20224361706162696c697479526566222c0a20206974656d3a20636f72652d747970652d7265662c0a7d0a636f72652d65787465726e616c2d616374696f6e2d726571756573742d74797065203d207b0a20206b696e643a202245787465726e616c416374696f6e52657175657374222c0a2020736574746c656d656e743a20636f72652d747970652d7265662c0a7d0a0a3b20636f72652d747970652d72656620697320646566696e656420696e2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d612e0a0a3b202d2d2d207265666572656e63657320616e642076616c756573202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a3b204c6f63616c206964656e7469747920697320616c7068612d737461626c652e20606964602069732074686520636f6d70696c65722d6f776e6564206c6f63616c20636f6f7264696e6174653b0a3b2060616c7068614e616d656020697320746865206e6f726d616c697a65642068756d616e2f6465627567206e616d652e20536f757263652062696e646572207370656c6c696e67206973206e6f740a3b206964656e746974792e0a6c6f63616c2d726566203d207b0a202069643a20747374722c0a2020616c7068614e616d653a20747374722c0a2020747970653a20636f72652d747970652d7265662c0a7d0a0a636f72652d76616c7565203d20636f72652d6e756c6c2d76616c7565202f20636f72652d626f6f6c2d76616c7565202f20636f72652d696e742d76616c7565202f0a20202020202020202020202020636f72652d737472696e672d76616c7565202f20636f72652d62797465732d76616c7565202f20636f72652d7265636f72642d76616c7565202f0a20202020202020202020202020636f72652d76617269616e742d76616c7565202f20636f72652d6c6973742d76616c7565202f20636f72652d6d61702d76616c7565202f0a20202020202020202020202020636f72652d6361706162696c6974792d76616c75650a0a636f72652d6e756c6c2d76616c7565203d207b206b696e643a20226e756c6c22207d0a636f72652d626f6f6c2d76616c7565203d207b206b696e643a2022626f6f6c222c2076616c75653a20626f6f6c207d0a636f72652d696e742d76616c7565203d207b206b696e643a2022696e74222c2077696474683a20747374722c2076616c75653a20696e74207d0a636f72652d737472696e672d76616c7565203d207b206b696e643a2022737472696e67222c2076616c75653a2074737472207d0a636f72652d62797465732d76616c7565203d207b206b696e643a20226279746573222c2076616c75653a2062737472207d0a636f72652d7265636f72642d76616c7565203d207b206b696e643a20227265636f7264222c206669656c64733a207b202a2074737472203d3e20636f72652d76616c7565207d207d0a636f72652d76617269616e742d76616c7565203d207b0a20206b696e643a202276617269616e74222c0a2020747970653a20636f72652d747970652d7265662c0a2020636173653a20747374722c0a20203f207061796c6f61643a20636f72652d76616c75652c0a7d0a636f72652d6c6973742d76616c7565203d207b206b696e643a20226c697374222c2076616c7565733a205b2a20636f72652d76616c75655d207d0a636f72652d6d61702d76616c7565203d207b206b696e643a20226d6170222c20656e74726965733a205b2a205b6b65793a20636f72652d76616c75652c2076616c75653a20636f72652d76616c75655d5d207d0a636f72652d6361706162696c6974792d76616c7565203d207b0a20206b696e643a20226361706162696c697479222c0a2020726563656970743a207368613235362d6469676573742c0a7d0a0a3b2045646963742d617574686f72656420707572652068656c70657273207573652061207075726520436f72652066756e6374696f6e20626f64792e2054686520626f64792063616e2062696e640a3b20707572652065787072657373696f6e7320616e642072657475726e20616e2065787072657373696f6e2c206275742069742063616e6e6f7420636f6e7461696e20436f7265206566666563742c0a3b2067756172642c206272616e63682c206c6f6f702c206d617463682d6e6f64652c206f722070726f6f662d6f626c69676174696f6e206e6f6465732e0a636f72652d666e2d626f6479203d207b0a2020706172616d733a205b2a206c6f63616c2d7265665d2c0a2020626f64793a20636f72652d707572652d626c6f636b2c0a7d0a0a636f72652d707572652d626c6f636b203d207b0a20206c6f63616c733a205b2a206c6f63616c2d7265665d2c0a202062696e64696e67733a205b2a20707572652d6c65742d6e6f64655d2c0a2020726573756c743a20636f72652d657870722c0a7d0a0a707572652d6c65742d6e6f6465203d207b0a20206b696e643a20226c6574222c0a202062696e64696e673a206c6f63616c2d7265662c0a202076616c75653a20636f72652d657870722c0a7d0a0a3b202d2d2d2065787072657373696f6e7320616e642070726564696361746573202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a636f72652d65787072203d206c6f63616c2d65787072202f20636f6e73742d65787072202f207265636f72642d65787072202f206669656c642d65787072202f0a20202020202020202020202076617269616e742d65787072202f206d617463682d65787072202f2063616c6c2d65787072202f206c6973742d65787072202f206d61702d65787072202f0a20202020202020202020202069662d657870720a0a6c6f63616c2d65787072203d207b206b696e643a20226c6f63616c222c207265663a206c6f63616c2d726566207d0a636f6e73742d65787072203d207b206b696e643a2022636f6e7374222c2076616c75653a20636f72652d76616c7565207d0a7265636f72642d65787072203d207b206b696e643a20227265636f7264222c206669656c64733a207b202a2074737472203d3e20636f72652d65787072207d207d0a6669656c642d65787072203d207b206b696e643a20226669656c64222c20626173653a20636f72652d657870722c206669656c643a2074737472207d0a76617269616e742d65787072203d207b0a20206b696e643a202276617269616e74222c0a2020747970653a20636f72652d747970652d7265662c0a2020636173653a20747374722c0a20203f207061796c6f61643a20636f72652d657870722c0a7d0a6d617463682d65787072203d207b0a20206b696e643a20226d61746368222c0a20207363727574696e65653a20636f72652d657870722c0a202061726d733a205b2b206d617463682d61726d5d2c0a7d0a6d617463682d61726d203d207b0a2020636173653a20747374722c0a20203f2062696e6465723a206c6f63616c2d7265662c0a2020626f64793a20636f72652d657870722c0a7d0a63616c6c2d65787072203d207b0a20206b696e643a202263616c6c222c0a202063616c6c65653a20747374722c0a202074797065417267733a205b2a20636f72652d747970652d7265665d2c0a2020617267733a205b2a20636f72652d657870725d2c0a7d0a6c6973742d65787072203d207b206b696e643a20226c697374222c2076616c7565733a205b2a20636f72652d657870725d207d0a6d61702d65787072203d207b206b696e643a20226d6170222c20656e74726965733a205b2a205b6b65793a20636f72652d657870722c2076616c75653a20636f72652d657870725d5d207d0a69662d65787072203d207b0a20206b696e643a20226966222c0a20207072656469636174653a20636f72652d7072656469636174652c0a20207468656e3a20636f72652d657870722c0a2020656c73653a20636f72652d657870722c0a7d0a0a636f72652d707265646963617465203d20747275652d707265646963617465202f2066616c73652d707265646963617465202f206e6f742d707265646963617465202f0a2020202020202020202020202020202020616c6c2d707265646963617465202f20616e792d707265646963617465202f20636f6d706172652d707265646963617465202f0a202020202020202020202020202020202063616c6c2d707265646963617465202f206f62737472756374696f6e2d7072656469636174650a0a747275652d707265646963617465203d207b206b696e643a20227472756522207d0a66616c73652d707265646963617465203d207b206b696e643a202266616c736522207d0a6e6f742d707265646963617465203d207b206b696e643a20226e6f74222c2076616c75653a20636f72652d707265646963617465207d0a616c6c2d707265646963617465203d207b206b696e643a2022616c6c222c2076616c7565733a205b2b20636f72652d7072656469636174655d207d0a616e792d707265646963617465203d207b206b696e643a2022616e79222c2076616c7565733a205b2b20636f72652d7072656469636174655d207d0a636f6d706172652d707265646963617465203d207b0a20206b696e643a2022636f6d70617265222c0a20206f703a20223d3d22202f2022213d22202f20223c22202f20223c3d22202f20223e22202f20223e3d222c0a20206c6566743a20636f72652d657870722c0a202072696768743a20636f72652d657870722c0a7d0a63616c6c2d707265646963617465203d207b0a20206b696e643a202263616c6c222c0a20207072656469636174653a20747374722c0a2020617267733a205b2a20636f72652d657870725d2c0a7d0a6f62737472756374696f6e2d707265646963617465203d207b0a20206b696e643a20226f62737472756374696f6e222c0a2020636f6f7264696e6174653a206661696c7572652d6964656e742c0a20207061796c6f61643a20636f72652d657870722c0a7d0a0a696e7075742d636f6e73747261696e74203d207b0a2020636f6f7264696e6174653a20747374722c0a2020736f757263653a2022776865726522202f2022636f6d70696c6572222c0a20207072656469636174653a20636f72652d7072656469636174652c0a7d0a0a3b202d2d2d20696e74656e74732c20626c6f636b732c20616e64206e6f646573202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a636f72652d696e74656e74203d207b0a2020696e7075743a20636f72652d747970652d7265662c0a20206f75747075743a20636f72652d747970652d7265662c0a202072657175697265644f7065726174696f6e50726f66696c653a20747374722c0a20203f2062617369733a20636f72652d657870722c0a2020696e707574436f6e73747261696e74733a205b2a20696e7075742d636f6e73747261696e745d2c0a2020636f72654576616c756174696f6e4275646765743a20636f72652d6275646765742c0a2020626f64793a20636f72652d626c6f636b2c0a20203f206f707469633a20636f72652d6f707469632c0a7d0a0a636f72652d627564676574203d207b0a20206d617853746570733a2075696e742c0a20206d6178416c6c6f636174656442797465733a2075696e742c0a20206d61784f757470757442797465733a2075696e742c0a7d0a0a636f72652d6f70746963203d207b0a20206f707469634b696e643a2022726576656c6174696f6e22202f20226166666563745265696e746567726174696f6e222c0a2020626f756e646172794b696e643a202270726f6a656374696f6e22202f2022616666656374222c0a20206170657274757265526571756972656d656e743a2061706572747572652d726571756972656d656e742c0a2020737570706f7274506f6c6963793a20747374722c0a20206c6f7373446973706f736974696f6e3a20747374722c0a7d0a0a636f72652d626c6f636b203d207b0a20206c6f63616c733a205b2a206c6f63616c2d7265665d2c0a20206e6f6465733a205b2a20636f72652d6e6f64655d2c0a2020726573756c743a20636f72652d657870722c0a7d0a0a636f72652d6e6f6465203d206c65742d6e6f6465202f20726571756972652d6e6f6465202f206566666563742d6e6f6465202f0a20202020202020202020202065787465726e616c2d616374696f6e2d726571756573742d6e6f6465202f2067756172642d6e6f6465202f206272616e63682d6e6f6465202f0a202020202020202020202020666f722d6e6f6465202f206d617463682d6e6f6465202f2070726f6f662d6f626c69676174696f6e2d6e6f64650a0a6c65742d6e6f6465203d207b0a20206b696e643a20226c6574222c0a202062696e64696e673a206c6f63616c2d7265662c0a202076616c75653a20636f72652d657870722c0a7d0a726571756972652d6e6f6465203d207b0a20206b696e643a202272657175697265222c0a20207072656469636174653a20636f72652d7072656469636174652c0a20206f6e4661696c7572653a20726571756972652d6661696c7572652d61726d2c0a7d0a726571756972652d6661696c7572652d61726d203d207465726d696e616c2d726571756972652d6661696c757265202f0a20202020202020202020202020202020202020202020636f6e74696e75652d6f6273747275637465642d726571756972652d6661696c7572650a7465726d696e616c2d726571756972652d6661696c757265203d207b0a20206b696e643a20227465726d696e616c222c0a2020726561736f6e3a206f62737472756374696f6e2d726561736f6e2c0a7d0a636f6e74696e75652d6f6273747275637465642d726571756972652d6661696c757265203d207b0a20206b696e643a2022636f6e74696e75654f627374727563746564222c0a2020726561736f6e3a206f62737472756374696f6e2d726561736f6e2c0a7d0a6f62737472756374696f6e2d726561736f6e203d207b0a2020726561736f6e4b696e643a20747374722c0a20207061796c6f61643a207b202a2074737472203d3e20636f72652d65787072207d2c0a7d0a6566666563742d6e6f6465203d207b0a20206b696e643a2022656666656374222c0a202062696e64696e673a206c6f63616c2d7265662c0a20206566666563743a20747374722c0a2020696e7075743a20636f72652d657870722c0a20206f62737472756374696f6e4d61703a207b202a206661696c7572652d6964656e74203d3e206f62737472756374696f6e2d61726d207d2c0a7d0a65787465726e616c2d616374696f6e2d726571756573742d6e6f6465203d207b0a20206b696e643a202265787465726e616c416374696f6e52657175657374222c0a202062696e64696e673a206c6f63616c2d7265662c0a20206f7065726174696f6e3a207265736f757263652d7265662c0a2020696e707574547970653a20636f72652d747970652d7265662c0a2020736574746c656d656e74547970653a20636f72652d747970652d7265662c0a2020696e707574536368656d613a207265736f757263652d7265662c0a2020736574746c656d656e74536368656d613a207265736f757263652d7265662c0a2020696e7075743a20636f72652d657870722c0a2020617574686f7269747953636f70653a20636f72652d657870722c0a202062617369733a20636f72652d657870722c0a20206275646765743a2065787465726e616c2d616374696f6e2d6275646765742c0a20207265636f6e63696c696174696f6e4c61773a207265736f757263652d7265662c0a202073746174653a20226177616974696e67536574746c656d656e74222c0a2020736574746c656d656e7441646d697373696f6e3a2022736368656d615265717569726564222c0a7d0a65787465726e616c2d616374696f6e2d627564676574203d207b0a20206d6178536574746c656d656e7442797465733a20636f72652d657870722c0a20206d6178417474656d7074733a20636f72652d657870722c0a7d0a6f62737472756374696f6e2d61726d203d207b0a202062696e6465723a206c6f63616c2d7265662c0a202076616c75653a20636f72652d657870722c0a7d0a67756172642d6e6f6465203d207b0a20206b696e643a20226775617264222c0a20207072656469636174653a20636f72652d7072656469636174652c0a20206f62737472756374696f6e3a20636f72652d657870722c0a7d0a6272616e63682d6e6f6465203d207b0a20206b696e643a20226272616e6368222c0a20203f2062696e64696e673a206c6f63616c2d7265662c0a20207072656469636174653a20636f72652d7072656469636174652c0a20207468656e3a20636f72652d626c6f636b2c0a2020656c73653a20636f72652d626c6f636b2c0a7d0a666f722d6e6f6465203d207b0a20206b696e643a2022666f72222c0a202062696e6465723a206c6f63616c2d7265662c0a2020697465723a20636f72652d657870722c0a2020626f756e643a20636f72652d626f756e642c0a2020626f64793a20636f72652d626c6f636b2c0a7d0a6d617463682d6e6f6465203d207b0a20206b696e643a20226d61746368222c0a20207363727574696e65653a20636f72652d657870722c0a202061726d733a205b2b206d617463682d626c6f636b2d61726d5d2c0a7d0a6d617463682d626c6f636b2d61726d203d207b0a2020636173653a20747374722c0a20203f2062696e6465723a206c6f63616c2d7265662c0a2020626f64793a20636f72652d626c6f636b2c0a7d0a70726f6f662d6f626c69676174696f6e2d6e6f6465203d207b0a20206b696e643a202270726f6f66222c0a2020636f6f7264696e6174653a20747374722c0a20207072656469636174653a20636f72652d7072656469636174652c0a7d0a0a636f72652d626f756e64203d206c69746572616c2d626f756e64202f20636f6f7264696e6174652d626f756e640a6c69746572616c2d626f756e64203d207b206b696e643a20226c69746572616c222c2076616c75653a2075696e74207d0a636f6f7264696e6174652d626f756e64203d207b206b696e643a2022636f6f7264696e617465222c207265663a2074737472207d0a0a3b20536861726564207265736f757263652d7265662c207368613235362d6469676573742c206661696c7572652d6964656e742c2061706572747572652d726571756972656d656e742c20616e640a3b20636f72652d747970652d7265662061726520646566696e6564206f6e636520696e2065646963742d636f6d6d6f6e2e6364646c2e0a0a3b202d2d2d2065646963742d6c61777061636b2e6364646c202d2d2d0a3b2065646963742d6c61777061636b2e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f7220746865204564696374206c61777061636b206d616e696665737420616e64206578706f727420737572666163652e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e204a534f4e20696e207468652070726f73652073706563730a3b2069732061207265766965772072656e646572696e672067656e6572617465642066726f6d207468697320736368656d61202845444943542d4142492d4e4f4455502d303031292e0a0a6c61777061636b2d6d616e6966657374203d207b0a202061706956657273696f6e3a202265646963742e6c61777061636b2f7631222c0a202069643a20747374722c0a202076657273696f6e3a20747374722c0a20206163636570746564436f72654162693a205b2b20747374725d2c0a2020646570656e64656e636965733a205b2a206c61777061636b2d6465705d2c202020202020202020203b20616379636c69632c206469676573742d6c6f636b6564202845444943542d4c41575041434b2d4441472d303031290a20206578706f7274733a207265736f757263652d7265662c0a20203f2074617267657441646170746572733a205b2b207461726765742d616461707465725d2c2020203b207265717569726564206f6e6c7920696620616e792072756e74696d6520656666656374206578697374730a20203f2068656c706572436f6d706f6e656e743a2065786563757461626c652d636f6d706f6e656e742c203b2065786563757461626c652068656c70657273206361727279207468656972206f776e2073616e64626f782b6675656c0a202076657269666965723a2076657269666965722c202020202020202020202020202020202020202020203b20636c61737369666965643a206465636c61726174697665206f722065786563757461626c650a2020636f6d7061746962696c6974793a207265736f757263652d7265662c0a2020636f6e666f726d616e636546697874757265436f727075733a207265736f757263652d7265662c0a7d0a0a3b2041207665726966696572206973206569746865722061206465636c617261746976652072756c6573657420286e6f2072756e74696d6529206f7220616e2065786563757461626c650a3b20636f6d706f6e656e742e20416e2065786563757461626c65207665726966696572204d55535420636172727920697473206f776e2073616e64626f7820616e64206675656c206d6f64656c2c0a3b20736f2074686520736368656d6120656e666f726365732074686174206e6f2065786563757461626c6520636f6d706f6e656e74206973206c65667420756e626f756e6465640a3b202845444943542d4142492d56455249464945522d424f554e442d303031292e0a7665726966696572203d206465636c617261746976652d7665726966696572202f2065786563757461626c652d76657269666965720a6465636c617261746976652d7665726966696572203d207b20636c6173733a20226465636c61726174697665222c2072756c657365743a207265736f757263652d726566207d0a65786563757461626c652d7665726966696572203d207b0a2020636c6173733a202265786563757461626c65222c0a2020636f6d706f6e656e743a207265736f757263652d7265662c0a202073616e64626f783a207265736f757263652d7265662c0a20206675656c4d6f64656c3a207265736f757263652d7265662c0a7d0a0a3b20416e792065786563757461626c6520636f6d706f6e656e7420697320626f756e64656420627920697473206f776e2073616e64626f78202b206675656c206d6f64656c2e0a65786563757461626c652d636f6d706f6e656e74203d207b0a2020636f6d706f6e656e743a207265736f757263652d7265662c0a202073616e64626f783a207265736f757263652d7265662c0a20206675656c4d6f64656c3a207265736f757263652d7265662c0a7d0a0a6c61777061636b2d646570203d207b2069643a20747374722c2076657273696f6e3a20747374722c206469676573743a207368613235362d646967657374207d0a0a3b20416461707465722073656c656374696f6e206b65797320534f4c454c59206f666620746865206469676573742d6c6f636b65642060616363657074656454617267657450726f66696c65600a3b20286974732060696460206973207468652070726f66696c652069643b206974732060646967657374602070696e73207468652065786163742070726f66696c652f76657273696f6e292e2054686572650a3b20617265206e6f20696e646570656e64656e7420646973706c617920737472696e6773207468617420636f756c64206469736167726565207769746820746865206c6f636b2c20736f20610a3b207265736f6c7665722063616e6e6f742062696e6420616e206164617074657220746f206f6e6520746172676574207768696c6520746865206c6f636b2070726f76657320616e6f746865720a3b202845444943542d4c41575041434b2d414441505445522d54415247455449522d303031292e0a7461726765742d61646170746572203d207b0a2020616363657074656454617267657450726f66696c653a207265736f757263652d7265662c202020203b206469676573742d6c6f636b65642c20617574686f72697461746976652073656c6563746f720a2020616363657074656454617267657449723a207265736f757263652d7265662c2020202020202020203b206469676573742d6c6f636b65640a2020616461707465723a207265736f757263652d7265662c0a7d0a0a3b20536861726564207479706573207265736f757263652d72656620616e64207368613235362d6469676573742061726520646566696e6564206f6e636520696e0a3b2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d61202845444943542d4142492d4e4f4455502d303031292e0a0a3b202d2d2d206578706f72742073757266616365202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a6c61777061636b2d6578706f727473203d207b0a202074797065733a205b2a206578706f727465642d747970655d2c0a2020636f6e7374616e74733a205b2a206578706f727465642d636f6e7374616e745d2c0a20207075726546756e6374696f6e733a205b2a20707572652d66756e6374696f6e5d2c0a2020656666656374733a205b2a2073656d616e7469632d6566666563745d2c0a20206f62737472756374696f6e733a205b2a206f62737472756374696f6e2d6465665d2c0a20203b206b65796564206279206f7065726174696f6e2d70726f66696c6520636f6f7264696e61746520e2869220756e697175656e65737320656e666f726365640a20203b202845444943542d4142492d4f5050524f46494c452d554e495155452d303031290a20203b206f7065726174696f6e2d70726f66696c65207265636f7264732074686973206c61777061636b206578706f72747320286f707469632074656d706c6174657320746861740a20203b2060696d706c656d656e7473602f6070726f66696c656020636c6175736573207265736f6c766520616761696e7374292e206f7065726174696f6e2d70726f66696c652069730a20203b20646566696e656420696e2065646963742d636f6d6d6f6e2e6364646c202845444943542d4142492d4f5050524f46494c452d534c4f542d303031292e0a20206f7065726174696f6e50726f66696c65733a207b202a2074737472203d3e206f7065726174696f6e2d70726f66696c65207d2c20203b206b6579656420627920636f6f7264696e6174650a7d0a0a6578706f727465642d7479706520202020203d207b20636f6f7264696e6174653a20747374722c20646566696e6974696f6e3a20636f72652d747970652d726566207d0a6578706f727465642d636f6e7374616e74203d207b20636f6f7264696e6174653a20747374722c20747970653a20636f72652d747970652d7265662c2076616c75653a20616e79207d0a0a3b204120707572652068656c7065722069732061206469736372696d696e6174656420756e696f6e2062792060736f75726365602c20736f2074686520736368656d6120697473656c660a3b2067756172616e7465657320616e20696d706c656d656e746174696f6e20657869737473202845444943542d4c41575041434b2d505552452d494d504c2d303031293a0a3b2020202d20226564696374223a20617574686f72656420696e2045646963742f436f72653b2074686520436f726520626f6479206973206361727269656420696e6c696e6520286861736865640a3b20202020207769746820746865206578706f72742073757266616365292e2054686520736368656d61207265717569726573207468652060626f647960206669656c642e0a3b2020202d2022636f6d706f6e656e74223a20696d706c656d656e746564206f7574736964652045646963743b2063617272696573206e6f20696e6c696e6520626f647920616e6420696e73746561640a3b20202020206361727269657320697473206f776e206469676573742d6c6f636b65642060696d706c656d656e746174696f6e60202873616e64626f78202b206675656c292e20497420646f65730a3b20202020206e6f7420646570656e64206f6e20746865206f7074696f6e616c206d616e69666573742d6c6576656c2068656c706572436f6d706f6e656e742e0a707572652d66756e6374696f6e203d2065646963742d707572652d66756e6374696f6e202f20636f6d706f6e656e742d707572652d66756e6374696f6e0a0a707572652d66756e6374696f6e2d636f6d6d6f6e203d20280a2020636f6f7264696e6174653a20747374722c0a202074797065506172616d65746572733a205b2a20747374725d2c0a2020706172616d6574657254797065733a205b2a20636f72652d747970652d7265665d2c2020202020203b20616c6c20626f756e6465640a202072657475726e547970653a20636f72652d747970652d7265662c20202020202020202020202020203b20626f756e6465640a2020636f737454656d706c6174653a20747374722c0a202064657465726d696e69736d436c6173733a2022746f74616c22202f2022746f74616c2d776974682d74797065642d646961676e6f73746963222c0a290a0a65646963742d707572652d66756e6374696f6e203d207b0a2020707572652d66756e6374696f6e2d636f6d6d6f6e2c0a2020736f757263653a20226564696374222c0a2020626f64793a20636f72652d666e2d626f64792c2020202020202020202020202020202020202020203b20696e6c696e652c20686173682d7369676e69666963616e740a7d0a0a636f6d706f6e656e742d707572652d66756e6374696f6e203d207b0a2020707572652d66756e6374696f6e2d636f6d6d6f6e2c0a2020736f757263653a2022636f6d706f6e656e74222c0a20203b20746865206469676573742d6c6f636b656420636f6d706f6e656e7420696d706c656d656e74696e6720746869732068656c7065722e2052657175697265642061742074686520736368656d610a20203b206c6576656c20736f206120636f6d706f6e656e742068656c7065722063616e206e657665722076616c696461746520776974686f7574206120686173682d626f756e642c0a20203b2073616e64626f782b6675656c2d64657363726962656420696d706c656d656e746174696f6e202845444943542d4c41575041434b2d505552452d494d504c2d303031292e0a2020696d706c656d656e746174696f6e3a2065786563757461626c652d636f6d706f6e656e742c0a7d0a0a3b20636f72652d666e2d626f647920697320646566696e65642062792065646963742d636f72652e6364646c20616e6420617373656d626c656420776974682074686973206c61777061636b0a3b20736368656d612e2049742069732061207075726520436f72652066756e6374696f6e20626f64792c206e6f7420616e206566666563742d63617061626c6520636f72652d626c6f636b2e0a0a73656d616e7469632d656666656374203d207b0a2020636f6f7264696e6174653a20747374722c0a202074797065506172616d65746572733a205b2a20747374725d2c0a2020696e707574547970653a20636f72652d747970652d7265662c2020202020202020202020202020203b20626f756e6465640a20206f7574707574547970653a20636f72652d747970652d7265662c20202020202020202020202020203b20626f756e6465640a2020657865637574696f6e436c6173733a202270726f6f664f6e6c7922202f202272756e74696d65222c2020203b206f7274686f676f6e616c20746f207772697465436c6173730a20206566666563744b696e6448696e743a206566666563742d6b696e642c0a2020666f6f747072696e744f626c69676174696f6e3a20747374722c0a2020636f73744f626c69676174696f6e3a20747374722c0a20206566666563744661696c757265733a207b202a206661696c7572652d6964656e74203d3e206566666563742d6661696c7572652d626f6479207d2c20203b206b6579656420627920636f6f7264696e6174653b20756e697175650a20206775617264537570706f72743a20626f6f6c2c0a7d0a0a6f62737472756374696f6e2d646566203d207b0a2020636f6f7264696e6174653a20747374722c0a2020617574686f72697479436c6173733a20617574686f726974792d636c6173732c0a20207061796c6f6164536368656d613a20636f72652d747970652d7265662c20202020202020202020203b2074797065642c20626f756e64656420286d617920626520656d707479207265636f7264290a7d0a0a3b206566666563742d6661696c7572652d626f64792c206566666563742d6b696e642c20617574686f726974792d636c6173732c20616e6420636f72652d747970652d7265662061726520646566696e65640a3b206f6e636520696e2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d61202845444943542d4142492d4e4f4455502d303031292e0a0a3b202d2d2d2065646963742d6c61777061636b2d616461707465722e6364646c202d2d2d0a3b2065646963742d6c61777061636b2d616461707465722e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f72206f6e6520646972656374206465636c61726174697665206c61777061636b2074617267657420616461707465722e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a3b0a3b2054686520656e636c6f73696e67206c61777061636b206d616e69666573742073656c6563747320746865206578616374207461726765742070726f66696c652c207461726765742049522c0a3b20616e642061646170746572207265736f75726365206469676573742e2054686f7365206964656e74697469657320617265206e6f7420726570656174656420686572652e0a0a6c61777061636b2d61646170746572203d207b0a202061706956657273696f6e3a202265646963742e6c61777061636b2d616461707465722f7631222c0a2020636c6173733a20226465636c61726174697665222c0a20206f7065726174696f6e50726f66696c65733a207b0a202020202a2074737472203d3e206c61777061636b2d616461707465722d6f7065726174696f6e2d70726f66696c650a20207d2c0a2020656666656374496d706c656d656e746174696f6e733a207b0a202020202a2074737472203d3e206c61777061636b2d616461707465722d6566666563740a20207d2c0a2020627564676574733a207b0a202020202a2074737472203d3e206c61777061636b2d616461707465722d6275646765740a20207d2c0a7d0a0a3b204b657973206172652063616e6f6e6963616c206c61777061636b206f7065726174696f6e2d70726f66696c6520636f6f7264696e617465732e0a6c61777061636b2d616461707465722d6f7065726174696f6e2d70726f66696c65203d0a20207b0a20202020636f72653a20747374722c0a2020202073656d616e746963456666656374733a205b2b20747374725d2c0a202020203f206275646765744f626c69676174696f6e3a20747374722c0a202020203f20746172676574436f6e66696775726174696f6e3a207265736f757263652d7265662c0a20207d202f0a20207b0a20202020636f72653a20747374722c0a2020202073656d616e746963456666656374733a205b5d2c0a202020206275646765744f626c69676174696f6e3a20747374722c0a20202020746172676574436f6e66696775726174696f6e3a207265736f757263652d7265662c0a20207d0a0a3b204b657973206172652063616e6f6e6963616c206c61777061636b2073656d616e7469632d65666665637420636f6f7264696e617465732e20466f6f747072696e742c20636f73742c20616e640a3b206661696c757265206669656c6473206d7573742065786163746c792064697363686172676520746865206d61746368696e67206578706f72746564206566666563742e0a6c61777061636b2d616461707465722d656666656374203d207b0a2020746172676574496e7472696e7369633a20747374722c0a2020746172676574436f6e66696775726174696f6e3a207265736f757263652d7265662c0a20207772697465436c6173733a206c61777061636b2d616461707465722d77726974652d636c6173732c0a2020666f6f747072696e744f626c69676174696f6e3a20747374722c0a2020636f73744f626c69676174696f6e3a20747374722c0a20206661696c7572654d617070696e67733a207b202a206661696c7572652d6964656e74203d3e2074737472207d2c0a7d0a0a3b204b657973206172652063616e6f6e6963616c206578706f7274656420636f73742d6f626c69676174696f6e20636f6f7264696e617465732e0a6c61777061636b2d616461707465722d627564676574203d207b0a20206d617853746570733a2075696e742c0a20206d6178416c6c6f636174656442797465733a2075696e742c0a20206d61784f757470757442797465733a2075696e742c0a7d0a0a6c61777061636b2d616461707465722d77726974652d636c617373203d20226e6f6e6522202f20227265616422202f202263726561746522202f2022656e7375726522202f0a20202020202020202020202020202020202020202020202020202020202022617070656e6422202f20227265706c61636522202f202264656c65746522202f2022637573746f6d220a0a3b206661696c7572652d6964656e7420697320646566696e656420696e2065646963742d636f6d6d6f6e2e6364646c2e0a0a3b202d2d2d2065646963742d7461726765742d70726f66696c652e6364646c202d2d2d0a3b2065646963742d7461726765742d70726f66696c652e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f7220746865204564696374207461726765742070726f66696c65206d616e69666573742e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76310a3b202873656520535045435f636f6e74696e75756d2d636f6e74726163742d62756e646c652d76312e6d64292e204a534f4e20696e207468652070726f736520737065637320697320610a3b207265766965772072656e646572696e672067656e6572617465642066726f6d207468697320736368656d613b2074686973204344444c206973207468652073696e676c6520736f757263650a3b206f66207472757468202845444943542d4142492d4e4f4455502d303031292e0a0a7461726765742d70726f66696c652d6d616e6966657374203d207b0a202061706956657273696f6e3a202265646963742e7461726765742d70726f66696c652f7631222c0a202069643a20747374722c202020202020202020202020202020202020202020202020203b20652e672e20226563686f2e64706f220a202076657273696f6e3a20747374722c20202020202020202020202020202020202020203b20652e672e202231220a20206163636570746564436f72654162693a205b2b20747374725d2c20202020202020203b20652e672e205b2265646963742e636f72652f7631225d0a0a2020696e7472696e736963733a207265736f757263652d7265662c0a2020696e7472696e7369634e616d6573706163653a20747374722c0a20203b207075626c697368657320746869732070726f66696c652773206f7065726174696f6e2d70726f66696c65207265636f72647320286f707469632074656d706c6174657320746861740a20203b206070726f66696c65602f60696d706c656d656e74736020636c6175736573207265736f6c766520616761696e7374292e205265666572656e63657320616e0a20203b206f7065726174696f6e2d70726f66696c65732d646f63756d656e74202845444943542d4142492d4f5050524f46494c452d534c4f542d303031292e0a20206f7065726174696f6e50726f66696c65733a207265736f757263652d7265662c0a2020666f6f747072696e74416c67656272613a207265736f757263652d7265662c0a2020636f7374416c67656272613a207265736f757263652d7265662c0a202074617267657449723a207265736f757263652d7265662c0a20206f62737472756374696f6e5461786f6e6f6d793a207265736f757263652d7265662c0a202076657269666965723a207265736f757263652d7265662c0a20206c6f77657265723a207265736f757263652d7265662c0a202073616e64626f783a207265736f757263652d7265662c0a20206675656c4d6f64656c3a207265736f757263652d7265662c0a0a20203b206669656c647320746865206c616e67756167652073706563207265717569726573206f662065766572792070726f66696c650a202062756e646c6550726f66696c653a207265736f757263652d7265662c0a202067656e657261746564417274696661637450726f66696c65733a205b2a207265736f757263652d7265665d2c0a202063616e6f6e6963616c456e636f64696e6752756c65733a207265736f757263652d7265662c0a20203b20412070726f66696c65207468617420616363657074732074686520646972656374206465636c61726174697665206c61777061636b2d6164617074657220414249206e616d65732069740a20203b2065786163746c79206f6e63652e2050726f66696c6573207468617420646f206e6f7420636f6e73756d65206c61777061636b206164617074657273206c6561766520746869730a20203b206f7074696f6e616c20736c6f7420616273656e74206f7220656d7074792e0a20203f2061636365707465644c61777061636b416461707465724162693a205b5d202f205b2265646963742e6c61777061636b2d616461707465722f7631225d2c0a2020646961676e6f737469634162693a207265736f757263652d7265662c0a0a20203b206170706c69636174696f6e20646f637472696e650a20206170706c69636174696f6e4d6f64656c3a202261746f6d6963222c0a202072656164436f6e73697374656e63793a20226170706c69636174696f6e2d736e617073686f7422202f20747374722c0a202067756172644576616c756174696f6e3a2022707265636f6d6d69742d61746f6d696322202f20747374722c0a20206f62737472756374696f6e526f6c6c6261636b3a20226e6f2d76697369626c652d6566666563747322202f20747374722c0a20206d756c74695461726765743a20626f6f6c2c0a20203b207768657468657220746865207461726765742063616e206576616c7561746520707265636f6d6d697420706f7374636f6e646974696f6e20286067756172616e746565602920636865636b730a20203b20696e73696465207468652061746f6d6963206170706c69636174696f6e20756e6974202845444943542d5441524745542d504f5354434f4e442d303031290a2020706f7374636f6e646974696f6e537570706f72743a20626f6f6c2c0a0a202064657465726d696e6973746963457865637574696f6e3a207265736f757263652d7265662c0a2020636f6e666f726d616e636546697874757265436f727075733a207265736f757263652d7265662c0a7d0a0a3b20536861726564207479706573207265736f757263652d72656620616e64207368613235362d6469676573742061726520646566696e6564206f6e636520696e0a3b2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d6120627920746865206275696c640a3b202845444943542d4142492d4e4f4455502d303031292e205468657920617265206e6f74207265646566696e656420686572652e0a0a3b202d2d2d20696e7472696e736963207369676e6174757265202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a3b20546865206172746966616374207265666572656e63656420627920746865206d616e696665737427732060696e7472696e7369637360207265736f757263652d726566206973207468650a3b20696e7472696e7369632d7369676e617475726520636f7270757320646f63756d656e742062656c6f772e20497473206c61796f757420697320666978656420736f2074776f0a3b20696e646570656e64656e742070726f66696c65732076616c69646174652f686173682074686520636f72707573206964656e746963616c6c790a3b202845444943542d4142492d494e5452494e534943532d444f432d303031292e0a0a3b20696e7472696e736963732069732061204d4150206b6579656420627920636f6f7264696e6174652c20736f2074686520736368656d6120697473656c6620656e666f726365730a3b20636f6f7264696e61746520756e697175656e6573732e20412070726f766964657220726563656976657320746865207265736f6c76656420636f7270757320617320610a3b206469676573742d626f756e642073656d616e74696320696e70757420616e64207265736f6c76657320636f6f7264696e617465732077697468696e20746861742061727469666163742e0a3b2045616368206d6170206b6579204d55535420657175616c20697473207265636f726427732060636f6f7264696e61746560206669656c640a3b202845444943542d4142492d494e5452494e5349432d554e495155452d303031292e0a696e7472696e736963732d646f63756d656e74203d207b0a202061706956657273696f6e3a202265646963742e7461726765742d70726f66696c652e696e7472696e736963732f7631222c0a2020696e7472696e736963733a207b202a2074737472203d3e20696e7472696e736963207d2c0a7d0a0a3b20546865206172746966616374207265666572656e63656420627920746865206d616e6966657374277320606f7065726174696f6e50726f66696c657360207265736f757263652d7265662e0a3b206f7065726174696f6e2d70726f66696c65202f206f707469632d74656d706c6174652061726520646566696e656420696e2065646963742d636f6d6d6f6e2e6364646c2e204b657965642062790a3b20636f6f7264696e61746520736f207265736f6c7574696f6e2063616e2774207069636b206265747765656e2074776f2073616d652d636f6f7264696e6174652070726f66696c65730a3b202845444943542d4142492d4f5050524f46494c452d534c4f542d3030312c2045444943542d4142492d4f5050524f46494c452d554e495155452d303031292e0a6f7065726174696f6e2d70726f66696c65732d646f63756d656e74203d207b0a202061706956657273696f6e3a202265646963742e7461726765742d70726f66696c652e6f7065726174696f6e2d70726f66696c65732f7631222c0a202070726f66696c65733a207b202a2074737472203d3e206f7065726174696f6e2d70726f66696c65207d2c0a7d0a0a3b2041207479706564207072652d6c6f776572696e67207175657374696f6e20746861742063616e2062652070726f706f73656420627920576174736f6e206f7220616e206167656e7420616e640a3b20636865636b65642062792074686520636f6d70696c65722e2049742069732063616e6f6e6963616c2d43424f5220656e636f64656420756e6465720a3b206065646963742e6c6f776572696e672d726571756972656d656e74732f7631603b2074686520636f6d70696c657220636865636b7320746869732061727469666163742c206e6f74207468650a3b2070726f736520746861742070726f64756365642069742e0a6c6f776572696e672d726571756972656d656e7473203d207b0a202061706956657273696f6e3a202265646963742e6c6f776572696e672d726571756972656d656e74732f7631222c0a20206f7065726174696f6e50726f66696c653a20747374722c0a202073656d616e746963456666656374733a205b2a2073656d616e7469632d6566666563742d726571756972656d656e745d2c0a202072657175697265645772697465436c61737365733a205b2a2077726974652d636c6173735d2c0a202067756172644b696e64733a205b2a2067756172642d6b696e645d2c0a202061746f6d69636974793a2061746f6d69636974792d726571756972656d656e742c0a2020706f7374636f6e646974696f6e537570706f72743a20626f6f6c2c0a20206f62737472756374696f6e436f6f7264696e617465733a205b2a20747374725d2c0a2020666f6f747072696e744f626c69676174696f6e733a205b2a20747374725d2c0a2020636f73744f626c69676174696f6e733a205b2a20747374725d2c0a20206f70746963436f6e74726163743a20747374722c0a7d0a0a73656d616e7469632d6566666563742d726571756972656d656e74203d207b0a2020636f6f7264696e6174653a20747374722c0a20207772697465436c6173733a2077726974652d636c6173732c0a202067756172644b696e64733a205b2a2067756172642d6b696e645d2c0a20206f62737472756374696f6e436f6f7264696e617465733a205b2a20747374725d2c0a2020666f6f747072696e744f626c69676174696f6e733a205b2a20747374725d2c0a2020636f73744f626c69676174696f6e733a205b2a20747374725d2c0a7d0a0a77726974652d636c617373203d20226e6f6e6522202f20227265616422202f202263726561746522202f2022656e7375726522202f2022617070656e6422202f0a2020202020202020202020202020227265706c61636522202f202264656c65746522202f20747374720a67756172642d6b696e64203d2022707265636f6d6d69742d61746f6d696322202f20747374720a61746f6d69636974792d726571756972656d656e74203d202261746f6d696322202f20747374720a0a3b20412067656e75696e6520756e696f6e3a207075726520636f6e7374727563746f7273206361727279206e6f20656666656374206b696e64206f72206661696c757265733b206566666563740a3b20696e7472696e73696373206d757374202845444943542d5441524745542d494e5452494e5349432d434c4153532d303031292e2054686520736368656d6120656e666f7263657320746869732c0a3b206e6f74206120636f6d6d656e742e0a0a3b2054686520696e7472696e736963277320636f6f7264696e6174652069732074686520696e7472696e73696373206d6170204b45592c206e6f7420612076616c7565206669656c642c20736f207468650a3b206b657920616e6420636f6f7264696e6174652063616e206e65766572206469736167726565202845444943542d4142492d494e5452494e5349432d554e495155452d303031292e0a696e7472696e736963203d20707572652d696e7472696e736963202f206566666563742d696e7472696e7369630a0a707572652d696e7472696e736963203d207b0a2020696e7472696e736963436c6173733a202270757265222c0a202074797065506172616d65746572733a205b2a20747374725d2c0a2020617267756d656e7454797065733a205b2a20636f72652d747970652d7265665d2c0a202072657475726e547970653a20636f72652d747970652d7265662c0a20206775617264537570706f72743a2066616c73652c0a2020666f6f747072696e7454656d706c6174653a20747374722c0a2020636f737454656d706c6174653a20747374722c0a20207772697465436c6173733a20226e6f6e65222c0a7d0a0a6566666563742d696e7472696e736963203d207b0a2020696e7472696e736963436c6173733a2022656666656374222c0a202074797065506172616d65746572733a205b2a20747374725d2c0a2020617267756d656e7454797065733a205b2a20636f72652d747970652d7265665d2c0a202072657475726e547970653a20636f72652d747970652d7265662c0a20206566666563744b696e643a206566666563742d6b696e642c0a20203b206d6170206b65796564206279206661696c75726520636f6f7264696e61746520286661696c7572652d6964656e74293b20746865206661696c75726520636f6f7264696e6174652069730a20203b20746865206b65792c206e6f7420612076616c7565206669656c642c20736f20756e697175656e657373206973207374727563747572616c0a20203b202845444943542d4142492d4641494c5552452d554e495155452d303031292e0a20206566666563744661696c757265733a207b202a206661696c7572652d6964656e74203d3e206566666563742d6661696c7572652d626f6479207d2c0a20206775617264537570706f72743a20626f6f6c2c0a2020666f6f747072696e7454656d706c6174653a20747374722c0a2020636f737454656d706c6174653a20747374722c0a20207772697465436c6173733a20227265616422202f202263726561746522202f2022656e7375726522202f2022617070656e6422202f20227265706c61636522202f0a20202020202020202020202020202264656c65746522202f2022637573746f6d222c0a202063616e5061727469636970617465496e41746f6d696347756172643a20626f6f6c2c0a7d0a0a3b206566666563742d6661696c7572652d626f64792c206566666563742d6b696e642c20617574686f726974792d636c6173732c20616e6420636f72652d747970652d7265662061726520646566696e65640a3b206f6e636520696e2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d61202845444943542d4142492d4e4f4455502d303031292e0a0a3b202d2d2d2065646963742d617574686f726974792d66616374732e6364646c202d2d2d0a3b2065646963742d617574686f726974792d66616374732e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f722074686520666972737420636f6d70696c65722d636f6e7465787420617574686f726974792d666163747320646f63756d656e742e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a3b0a3b205468697320736368656d6120697320617373656d626c656420776974682065646963742d636f6d6d6f6e2e6364646c20736f20736f757263652e6469676573742075736573207468650a3b20736861726564207368613235362d6469676573742074797065642076616c75652e204a534f4e2069732061207265766965772f696e7075742072656e646572696e673a206974730a3b20607368613235363a3c3634206865783e6020736f75726365206469676573742069732070726f6a656374656420746f205b60736861323536602c203332207261772062797465735d206f6e0a3b2074686520776972652c20616e64206974732066616374206172726179732070726f6a65637420746f2074686520636f6f7264696e6174652d6b65796564206d6170732062656c6f772e0a0a617574686f726974792d6661637473203d207b0a202061706956657273696f6e3a202265646963742e617574686f726974792d66616374732f7631222c0a2020736f757263653a20617574686f726974792d666163742d736f757263652c0a20206f7065726174696f6e50726f66696c65733a207b202a2074737472203d3e20617574686f726974792d6f7065726174696f6e2d70726f66696c652d66616374207d2c0a20206566666563745772697465436c61737365733a207b202a2074737472203d3e20617574686f726974792d77726974652d636c617373207d2c0a2020627564676574733a207b202a2074737472203d3e20617574686f726974792d6275646765742d66616374207d2c0a7d0a0a617574686f726974792d666163742d736f75726365203d207b0a20206b696e643a20226c61777061636b22202f202274617267657450726f66696c65222c0a2020636f6f7264696e6174653a20747374722c0a20206469676573743a207368613235362d6469676573742c0a7d0a0a3b20546865206d6170206b65792069732074686520736f75726365206f7065726174696f6e2d70726f66696c6520636f6f7264696e6174652e204974206973206e6f7420726570656174656420696e0a3b207468652076616c75652c20736f2061206b657920616e6420656d62656464656420636f6f7264696e6174652063616e6e6f742064697361677265652e20416c6c6f7765642077726974650a3b20636c61737365732061726520612063616e6f6e6963616c206d61702d7365743a2074686520636c6173732069732074686520756e69717565206b657920616e64206e756c6c206973207468650a3b20756e6974206d61726b65722e2043616e6f6e6963616c2043424f52206669786573206b6579206f7264657220776974686f75742061207365636f6e64206f72646572696e672072756c652e0a617574686f726974792d6f7065726174696f6e2d70726f66696c652d66616374203d207b0a2020636f72653a20747374722c0a2020616c6c6f7765645772697465436c61737365733a207b202a20617574686f726974792d77726974652d636c617373203d3e206e756c6c207d2c0a7d0a0a3b20546865206566666563745772697465436c6173736573206d6170206b6579206973207468652073656d616e7469632065666665637420636f6f7264696e6174652e2054686520627564676574730a3b206d6170206b65792069732074686520736f757263652062756467657420636f6f7264696e6174652e2043616e6f6e6963616c2043424f52206d61702d6b657920756e697175656e6573730a3b206d616b6573206475706c6963617465206661637420636f6f7264696e61746573207374727563747572616c6c7920756e726570726573656e7461626c652e0a617574686f726974792d6275646765742d66616374203d207b0a20206d617853746570733a2075696e742c0a20206d6178416c6c6f636174656442797465733a2075696e742c0a20206d61784f757470757442797465733a2075696e742c0a7d0a0a3b20417574686f726974794661637473446f63756d656e7420763120696e74656e74696f6e616c6c792061636365707473206f6e6c792074686520777269746520636c6173736573207468650a3b2063757272656e7420636f6d70696c6572206d6f64656c2063616e20636f6e73756d652e2060637573746f6d602069732074686520736f6c6520763120637573746f6d207370656c6c696e673b0a3b20617262697472617279207461726765742d70726f66696c6520657874656e73696f6e20737472696e677320646f206e6f7420656e746572207468697320636f6d70696c657220706174682e0a617574686f726974792d77726974652d636c617373203d20226e6f6e6522202f20227265616422202f202263726561746522202f2022656e7375726522202f2022617070656e6422202f0a202020202020202020202020202020202020202020202020227265706c61636522202f202264656c65746522202f2022637573746f6d220a0a3b202d2d2d2065646963742d726573756c742d70726f6a656374696f6e2e6364646c202d2d2d0a3b20535044582d4c6963656e73652d4964656e7469666965723a204170616368652d322e300a3b2065646963742d726573756c742d70726f6a656374696f6e2e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f7220636f6d70696c65722d6f776e6564206170706c69636174696f6e2d726573756c742070726f6a656374696f6e732e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a0a726573756c742d70726f6a656374696f6e203d207b0a2020736368656d613a202265646963742e726573756c742d70726f6a656374696f6e2f7631222c0a20206f7065726174696f6e436f6f7264696e6174653a20626f756e6465642d70726f6a656374696f6e2d746578742c0a20206f7574707574547970653a20626f756e6465642d70726f6a656374696f6e2d746578742c0a20206d61784f757470757442797465733a2075696e74202e677420302c0a202065787072657373696f6e3a20726573756c742d70726f6a656374696f6e2d657870722c0a7d0a0a726573756c742d70726f6a656374696f6e2d65787072203d20726573756c742d70726f6a656374696f6e2d7265636f7264202f20726573756c742d70726f6a656374696f6e2d736f757263650a0a726573756c742d70726f6a656374696f6e2d7265636f7264203d207b0a20206b696e643a20227265636f7264222c0a20203b2054686520726f6f74207265636f726420636f756e7473206173206f6e65206f66207468652052757374206465636f6465722773203235362065787072657373696f6e206e6f6465732e0a20203b204e657374656420616767726567617465206e6f646520636f756e742072656d61696e7320616e20617574686f7269746174697665206465636f64657220636865636b2e0a20206669656c64733a207b20302a32353520626f756e6465642d70726f6a656374696f6e2d74657874203d3e20726573756c742d70726f6a656374696f6e2d65787072207d2c0a7d0a0a726573756c742d70726f6a656374696f6e2d736f75726365203d207b0a20206b696e643a2022736f75726365222c0a2020736f757263653a20726573756c742d70726f6a656374696f6e2d736f757263652d6b696e642c0a20203b204d617463686573204d41585f524553554c545f50524f4a454354494f4e5f504154485f5345474d454e545320696e2065646963742d73796e7461782e0a2020706174683a205b302a333220626f756e6465642d70726f6a656374696f6e2d746578745d2c0a7d0a0a726573756c742d70726f6a656374696f6e2d736f757263652d6b696e64203d0a20207b206b696e643a20226170706c69636174696f6e496e70757422207d202f0a20207b0a202020206b696e643a20227075726542696e64696e67222c0a2020202062696e64696e6749643a20626f756e6465642d70726f6a656374696f6e2d746578742c0a20207d202f0a20207b0a202020206b696e643a20226361706162696c697479526573756c74222c0a202020207374657049643a20626f756e6465642d70726f6a656374696f6e2d746578742c0a20207d0a0a626f756e6465642d70726f6a656374696f6e2d74657874203d2074737472202e73697a652028312e2e31303234290a0a3b202d2d2d2065646963742d7461726765742d69722e6364646c202d2d2d0a3b20535044582d4c6963656e73652d4964656e7469666965723a204170616368652d322e300a3b2065646963742d7461726765742d69722e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f72207468652045646963742d6f776e65642054617267657420495220617274696661637420656e76656c6f70652e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a3b0a3b205468697320736368656d6120697320617373656d626c656420776974682065646963742d636f6d6d6f6e2e6364646c20616e642065646963742d636f72652e6364646c2e2049740a3b2064656c696265726174656c792072657573657320436f72652065787072657373696f6e732c20707265646963617465732c20627564676574732c206c6f63616c207265666572656e6365732c0a3b206f62737472756374696f6e20726561736f6e732c20616e64206f62737472756374696f6e2061726d7320736f2074686520736368656d61206d617463686573207468652076616c75650a3b20656d6974746564206279207468652063616e6f6e6963616c2054617267657420495220656e636f64657220726174686572207468616e20726573746174696e672074686f73652074797065732e0a3b2049742064657363726962657320746865207374727563747572616c207368617065206f662076616c6964206c6f776572696e672d70726f6475636564206172746966616374732e205468650a3b206c6f776572696e6720616e6420656e636f64657220636f6e7472616374732073657061726174656c7920656e666f7263652073656d616e746963206964656e7469666965722072756c65730a3b20616e642063616e6f6e6963616c206f72646572696e672f64656475706c69636174696f6e20666f72207365742d6c696b652076616c7565732e0a0a3b2054617267657420495220656e636f64696e672072656a6563747320616e20656d707479207461726765742d70726f66696c6520636f6f7264696e617465206265666f72652062797465730a3b2065786973742c20736f207468697320726f6f74207469676874656e732074686520736861726564207374727563747572616c207265736f757263652d726566206163636f7264696e676c792e0a7461726765742d69722d7265736f757263652d726566203d207b0a202069643a2074737472202e7265676578702022283f73292e2b222c0a20206469676573743a207368613235362d6469676573742c0a7d0a0a7461726765742d69722d6172746966616374203d207461726765742d69722d636c6f7365642d6172746966616374202f207461726765742d69722d6c65676163792d61727469666163740a0a7461726765742d69722d61727469666163742d636f6d6d6f6e203d20280a20206b696e643a202274617267657449724172746966616374222c0a2020646f6d61696e3a20747374722c0a202074617267657450726f66696c653a207461726765742d69722d7265736f757263652d7265662c0a2020736f75726365436f7265436f6f7264696e6174653a2074737472202e7265676578702022283f73292e2b222c0a290a0a7461726765742d69722d636c6f7365642d6172746966616374203d207b0a20207461726765742d69722d61727469666163742d636f6d6d6f6e2c0a202073656d616e746963436c6f737572653a207461726765742d69722d73656d616e7469632d636c6f737572652c0a2020696e74656e74733a207b202a2074737472203d3e207461726765742d69722d696e74656e74207d2c0a7d0a0a7461726765742d69722d6c65676163792d6172746966616374203d207b0a20207461726765742d69722d61727469666163742d636f6d6d6f6e2c0a2020696e74656e74733a207b202a2074737472203d3e207461726765742d69722d6c65676163792d696e74656e74207d2c0a7d0a0a7461726765742d69722d73656d616e7469632d636c6f73757265203d207b0a2020736f75726365436f72653a207461726765742d69722d7265736f757263652d7265662c0a20206c61777061636b733a205b2a207461726765742d69722d7265736f757263652d7265665d2c0a20203f206361706162696c69746965733a205b2a207461726765742d69722d7265736f757263652d7265665d2c0a7d0a0a7461726765742d69722d696e74656e74203d207b0a20207461726765742d69722d696e74656e742d636f6d6d6f6e2c0a20203f2062617369733a20636f72652d657870722c0a20203f207075726542696e64696e67733a205b312a207461726765742d69722d707572652d62696e64696e675d2c0a20203f2065787465726e616c416374696f6e52657175657374733a205b2a207461726765742d69722d65787465726e616c2d616374696f6e2d726571756573745d2c0a7d0a0a7461726765742d69722d6c65676163792d696e74656e74203d207b0a20207461726765742d69722d696e74656e742d636f6d6d6f6e2c0a7d0a0a7461726765742d69722d696e74656e742d636f6d6d6f6e203d20280a20206f7065726174696f6e50726f66696c653a20747374722c0a2020696e707574436f6e73747261696e74733a205b2a20696e7075742d636f6e73747261696e745d2c0a2020636f72654576616c756174696f6e4275646765743a20636f72652d6275646765742c0a2020726571756972656d656e74733a205b2a207461726765742d69722d726571756972656d656e745d2c0a202073746570733a205b2a207461726765742d69722d737465705d2c0a2020726573756c743a20636f72652d657870722c0a290a0a7461726765742d69722d726571756972656d656e74203d207b0a202069643a20747374722c0a20207072656469636174653a20636f72652d7072656469636174652c0a20206f6e4661696c7572653a20726571756972652d6661696c7572652d61726d2c0a7d0a0a7461726765742d69722d707572652d62696e64696e67203d207b0a202069643a2074737472202e7265676578702022283f73292e2b222c0a202062696e64696e673a206c6f63616c2d7265662c0a202076616c75653a20636f72652d657870722c0a7d0a0a7461726765742d69722d73746570203d207b0a202069643a20747374722c0a202062696e64696e673a206c6f63616c2d7265662c0a20206566666563743a20747374722c0a2020746172676574496e7472696e7369633a20747374722c0a2020696e7075743a20636f72652d657870722c0a20206f62737472756374696f6e4661696c757265733a205b2a206661696c7572652d6964656e745d2c0a20206f62737472756374696f6e41726d733a207b202a206661696c7572652d6964656e74203d3e206f62737472756374696f6e2d61726d207d2c0a7d0a0a7461726765742d69722d65787465726e616c2d616374696f6e2d72657175657374203d207b0a202069643a20747374722c0a202062696e64696e673a206c6f63616c2d7265662c0a20206f7065726174696f6e3a207461726765742d69722d7265736f757263652d7265662c0a2020696e707574547970653a20636f72652d747970652d7265662c0a2020736574746c656d656e74547970653a20636f72652d747970652d7265662c0a2020696e707574536368656d613a207461726765742d69722d7265736f757263652d7265662c0a2020736574746c656d656e74536368656d613a207461726765742d69722d7265736f757263652d7265662c0a2020696e7075743a20636f72652d657870722c0a2020617574686f7269747953636f70653a20636f72652d657870722c0a202062617369733a20636f72652d657870722c0a20206275646765743a2065787465726e616c2d616374696f6e2d6275646765742c0a20207265636f6e63696c696174696f6e4c61773a207461726765742d69722d7265736f757263652d7265662c0a202073746174653a20226177616974696e67536574746c656d656e74222c0a2020736574746c656d656e7441646d697373696f6e3a2022736368656d615265717569726564222c0a7d0a", + "rawSha256": "fe37a4252af4a732a62074b58947e052744a48397042eaadb0e61849fc245627" }, "contracts": [ {"contract": "authority-facts", "rootRule": "authority-facts"}, diff --git a/schemas/edict-provider/generated/v1/evidence/provenance.provider-generation.json b/schemas/edict-provider/generated/v1/evidence/provenance.provider-generation.json index c4072d2d..59fc0054 100644 --- a/schemas/edict-provider/generated/v1/evidence/provenance.provider-generation.json +++ b/schemas/edict-provider/generated/v1/evidence/provenance.provider-generation.json @@ -1 +1 @@ -{"apiVersion":"wesley.generation-provenance-manifest/v1","contractVersions":{"generatorAbi":"wesley.extension-generator/v1","inputSchema":"wesley.extension-generation-input/v1","provenanceSchema":"wesley.generation-provenance-manifest/v1"},"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:730ce72f6658fe8cc9302221c32ad5992492e190674ddd69c1b164749d2bb669"}],"generationInputDigest":"sha256:57f5f67172544014af9c92e658301b9fcec69fd77fba9d251b258b59e3591380","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:48e583f8c29af45bb89d0e4f883b4fc478f7ec65f887612b865ebd4e1895b0a8","version":"0.1.0"},"settingsDigest":"sha256:0f708e76898de6fdb8186352e81d0f5c445adf94bb6c7de9204952d9fe913d4a","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:ff5405708185e0bcf33dac263000fcb772c79e21145ad69da7cad0692e1a9552"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:e31d0452bf9d8ba84eaa1ce8c09fa1c25f740decd0ab08cd9c2fde533bdef1fa"}]} \ No newline at end of file +{"apiVersion":"wesley.generation-provenance-manifest/v1","contractVersions":{"generatorAbi":"wesley.extension-generator/v1","inputSchema":"wesley.extension-generation-input/v1","provenanceSchema":"wesley.generation-provenance-manifest/v1"},"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:15e2b02f66052eff437973957c728b5ed4ecf709ef9ae094fbe8e4d0ea870209"}],"generationInputDigest":"sha256:8801229418295223b90cb8ff5eaff6e1a1d8eef27e984e0f2caa04450e29e125","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:98cfcbf9939646a8cbeb73ab6be6e15656f37579e3b074df523bacdc7c87797a","version":"0.1.0"},"settingsDigest":"sha256:0f708e76898de6fdb8186352e81d0f5c445adf94bb6c7de9204952d9fe913d4a","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:fe37a4252af4a732a62074b58947e052744a48397042eaadb0e61849fc245627"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:80e98f3b338690a5b0c71c2d35fbe70c11e4ef4b5c8d064a583f2af94942e613"}]} \ No newline at end of file diff --git a/schemas/edict-provider/generated/v1/evidence/review.provider-generation.json b/schemas/edict-provider/generated/v1/evidence/review.provider-generation.json index 1179388c..5763786f 100644 --- a/schemas/edict-provider/generated/v1/evidence/review.provider-generation.json +++ b/schemas/edict-provider/generated/v1/evidence/review.provider-generation.json @@ -1 +1 @@ -{"apiVersion":"wesley.generation-review/v1","authoritative":false,"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:730ce72f6658fe8cc9302221c32ad5992492e190674ddd69c1b164749d2bb669"}],"generationInputDigest":"sha256:57f5f67172544014af9c92e658301b9fcec69fd77fba9d251b258b59e3591380","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:48e583f8c29af45bb89d0e4f883b4fc478f7ec65f887612b865ebd4e1895b0a8","version":"0.1.0"},"projectionRoles":["authority-facts.echo-dpo","authority-facts.echo-lawpack","generated-artifact-profile.echo-dpo-registration","lawpack.echo-dpo","schema.echo-provider-artifacts","target-profile.echo-dpo"],"provenanceManifestDigest":"sha256:45670aa10682d15f8349865c7e94d3938b8229f83dab91cb4b7f4865b035d656","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:ff5405708185e0bcf33dac263000fcb772c79e21145ad69da7cad0692e1a9552"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:e31d0452bf9d8ba84eaa1ce8c09fa1c25f740decd0ab08cd9c2fde533bdef1fa"}]} \ No newline at end of file +{"apiVersion":"wesley.generation-review/v1","authoritative":false,"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:15e2b02f66052eff437973957c728b5ed4ecf709ef9ae094fbe8e4d0ea870209"}],"generationInputDigest":"sha256:8801229418295223b90cb8ff5eaff6e1a1d8eef27e984e0f2caa04450e29e125","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:98cfcbf9939646a8cbeb73ab6be6e15656f37579e3b074df523bacdc7c87797a","version":"0.1.0"},"projectionRoles":["authority-facts.echo-dpo","authority-facts.echo-lawpack","generated-artifact-profile.echo-dpo-registration","lawpack.echo-dpo","schema.echo-provider-artifacts","target-profile.echo-dpo"],"provenanceManifestDigest":"sha256:006150ed3a0595def00eff02e6dcec0eae3a2b3a5b884f4e362e0ae44a821c75","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:fe37a4252af4a732a62074b58947e052744a48397042eaadb0e61849fc245627"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:80e98f3b338690a5b0c71c2d35fbe70c11e4ef4b5c8d064a583f2af94942e613"}]} \ No newline at end of file diff --git a/schemas/edict-provider/generated/v1/primary/schema.echo-provider-artifacts.cddl b/schemas/edict-provider/generated/v1/primary/schema.echo-provider-artifacts.cddl index ea161b3d..91fd4d2c 100644 --- a/schemas/edict-provider/generated/v1/primary/schema.echo-provider-artifacts.cddl +++ b/schemas/edict-provider/generated/v1/primary/schema.echo-provider-artifacts.cddl @@ -102,7 +102,7 @@ core-module = { } core-import = { - kind: "lawpack" / "target" / "core", + kind: "lawpack" / "target" / "core" / "capability", ref: resource-ref, ? alias: tstr, } @@ -111,7 +111,7 @@ core-import = { core-type = core-scalar-type / core-record-type / core-variant-type / core-option-type / core-list-type / core-map-type / - core-capability-ref-type + core-capability-ref-type / core-external-action-request-type core-scalar-type = core-bool-type / core-int-type / core-string-type / core-bytes-type / core-unit-type @@ -160,6 +160,10 @@ core-capability-ref-type = { kind: "CapabilityRef", item: core-type-ref, } +core-external-action-request-type = { + kind: "ExternalActionRequest", + settlement: core-type-ref, +} ; core-type-ref is defined in edict-common.cddl and assembled with this schema. @@ -324,7 +328,8 @@ core-block = { result: core-expr, } -core-node = let-node / require-node / effect-node / guard-node / branch-node / +core-node = let-node / require-node / effect-node / + external-action-request-node / guard-node / branch-node / for-node / match-node / proof-obligation-node let-node = { @@ -358,6 +363,26 @@ effect-node = { input: core-expr, obstructionMap: { * failure-ident => obstruction-arm }, } +external-action-request-node = { + kind: "externalActionRequest", + binding: local-ref, + operation: resource-ref, + inputType: core-type-ref, + settlementType: core-type-ref, + inputSchema: resource-ref, + settlementSchema: resource-ref, + input: core-expr, + authorityScope: core-expr, + basis: core-expr, + budget: external-action-budget, + reconciliationLaw: resource-ref, + state: "awaitingSettlement", + settlementAdmission: "schemaRequired", +} +external-action-budget = { + maxSettlementBytes: core-expr, + maxAttempts: core-expr, +} obstruction-arm = { binder: local-ref, value: core-expr, @@ -369,6 +394,7 @@ guard-node = { } branch-node = { kind: "branch", + ? binding: local-ref, predicate: core-predicate, then: core-block, else: core-block, @@ -559,10 +585,19 @@ lawpack-adapter = { } ; Keys are canonical lawpack operation-profile coordinates. -lawpack-adapter-operation-profile = { - core: tstr, - semanticEffects: [+ tstr], -} +lawpack-adapter-operation-profile = + { + core: tstr, + semanticEffects: [+ tstr], + ? budgetObligation: tstr, + ? targetConfiguration: resource-ref, + } / + { + core: tstr, + semanticEffects: [], + budgetObligation: tstr, + targetConfiguration: resource-ref, + } ; Keys are canonical lawpack semantic-effect coordinates. Footprint, cost, and ; failure fields must exactly discharge the matching exported effect. @@ -821,6 +856,10 @@ result-projection-source = { result-projection-source-kind = { kind: "applicationInput" } / + { + kind: "pureBinding", + bindingId: bounded-projection-text, + } / { kind: "capabilityResult", stepId: bounded-projection-text, @@ -872,11 +911,14 @@ target-ir-legacy-artifact = { target-ir-semantic-closure = { sourceCore: target-ir-resource-ref, lawpacks: [* target-ir-resource-ref], + ? capabilities: [* target-ir-resource-ref], } target-ir-intent = { target-ir-intent-common, ? basis: core-expr, + ? pureBindings: [1* target-ir-pure-binding], + ? externalActionRequests: [* target-ir-external-action-request], } target-ir-legacy-intent = { @@ -898,6 +940,12 @@ target-ir-requirement = { onFailure: require-failure-arm, } +target-ir-pure-binding = { + id: tstr .regexp "(?s).+", + binding: local-ref, + value: core-expr, +} + target-ir-step = { id: tstr, binding: local-ref, @@ -908,6 +956,23 @@ target-ir-step = { obstructionArms: { * failure-ident => obstruction-arm }, } +target-ir-external-action-request = { + id: tstr, + binding: local-ref, + operation: target-ir-resource-ref, + inputType: core-type-ref, + settlementType: core-type-ref, + inputSchema: target-ir-resource-ref, + settlementSchema: target-ir-resource-ref, + input: core-expr, + authorityScope: core-expr, + basis: core-expr, + budget: external-action-budget, + reconciliationLaw: target-ir-resource-ref, + state: "awaitingSettlement", + settlementAdmission: "schemaRequired", +} + ; --- Echo provider-generated declarative contracts ----------------------- ; These roots validate provider semantic descriptions and data-only executable diff --git a/schemas/edict-provider/package/v1/components/lowerer.echo-dpo.component.wasm b/schemas/edict-provider/package/v1/components/lowerer.echo-dpo.component.wasm index fc90817b28c2160f954a3f811aee8a4030da30b9..b5aef20869d65d45277478648c36124bc0b59247 100644 GIT binary patch delta 155 zcmaF-l>hNl{)QID7N#xC60!D%rm03r21aRSW(KB4scC5@#^#ph#+Ih$$>v5DNv5eO wCaKA3<_4CjX_kqp29_piNvRg8CMgD~i5BJtMh4r%W0|=*DK=$c8naUm076tP!vFvP delta 155 zcmaF-l>hNl{)QID7N#xC60!E?#s obstruction-arm }, } +external-action-request-node = { + kind: "externalActionRequest", + binding: local-ref, + operation: resource-ref, + inputType: core-type-ref, + settlementType: core-type-ref, + inputSchema: resource-ref, + settlementSchema: resource-ref, + input: core-expr, + authorityScope: core-expr, + basis: core-expr, + budget: external-action-budget, + reconciliationLaw: resource-ref, + state: "awaitingSettlement", + settlementAdmission: "schemaRequired", +} +external-action-budget = { + maxSettlementBytes: core-expr, + maxAttempts: core-expr, +} obstruction-arm = { binder: local-ref, value: core-expr, @@ -369,6 +394,7 @@ guard-node = { } branch-node = { kind: "branch", + ? binding: local-ref, predicate: core-predicate, then: core-block, else: core-block, @@ -559,10 +585,19 @@ lawpack-adapter = { } ; Keys are canonical lawpack operation-profile coordinates. -lawpack-adapter-operation-profile = { - core: tstr, - semanticEffects: [+ tstr], -} +lawpack-adapter-operation-profile = + { + core: tstr, + semanticEffects: [+ tstr], + ? budgetObligation: tstr, + ? targetConfiguration: resource-ref, + } / + { + core: tstr, + semanticEffects: [], + budgetObligation: tstr, + targetConfiguration: resource-ref, + } ; Keys are canonical lawpack semantic-effect coordinates. Footprint, cost, and ; failure fields must exactly discharge the matching exported effect. @@ -821,6 +856,10 @@ result-projection-source = { result-projection-source-kind = { kind: "applicationInput" } / + { + kind: "pureBinding", + bindingId: bounded-projection-text, + } / { kind: "capabilityResult", stepId: bounded-projection-text, @@ -872,11 +911,14 @@ target-ir-legacy-artifact = { target-ir-semantic-closure = { sourceCore: target-ir-resource-ref, lawpacks: [* target-ir-resource-ref], + ? capabilities: [* target-ir-resource-ref], } target-ir-intent = { target-ir-intent-common, ? basis: core-expr, + ? pureBindings: [1* target-ir-pure-binding], + ? externalActionRequests: [* target-ir-external-action-request], } target-ir-legacy-intent = { @@ -898,6 +940,12 @@ target-ir-requirement = { onFailure: require-failure-arm, } +target-ir-pure-binding = { + id: tstr .regexp "(?s).+", + binding: local-ref, + value: core-expr, +} + target-ir-step = { id: tstr, binding: local-ref, @@ -908,6 +956,23 @@ target-ir-step = { obstructionArms: { * failure-ident => obstruction-arm }, } +target-ir-external-action-request = { + id: tstr, + binding: local-ref, + operation: target-ir-resource-ref, + inputType: core-type-ref, + settlementType: core-type-ref, + inputSchema: target-ir-resource-ref, + settlementSchema: target-ir-resource-ref, + input: core-expr, + authorityScope: core-expr, + basis: core-expr, + budget: external-action-budget, + reconciliationLaw: target-ir-resource-ref, + state: "awaitingSettlement", + settlementAdmission: "schemaRequired", +} + ; --- Echo provider-generated declarative contracts ----------------------- ; These roots validate provider semantic descriptions and data-only executable diff --git a/schemas/edict-provider/package/v1/provider-manifest.echo.json b/schemas/edict-provider/package/v1/provider-manifest.echo.json index d8227f27..dfa934c5 100644 --- a/schemas/edict-provider/package/v1/provider-manifest.echo.json +++ b/schemas/edict-provider/package/v1/provider-manifest.echo.json @@ -3,7 +3,7 @@ "providerAbi": "edict:target-provider@1.0.0", "provider": { "coordinate": "echo.edict-provider@1", - "digest": "sha256:6685b7c629ae6955515d69158feb1d7db06af2193de7e5d13e1095101670b977" + "digest": "sha256:5a42ef91640660397957ace0f533974e45ceb2c1124de29683ee96974d0d3201" }, "artifacts": [ { @@ -21,7 +21,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:48e583f8c29af45bb89d0e4f883b4fc478f7ec65f887612b865ebd4e1895b0a8" + "digest": "sha256:98cfcbf9939646a8cbeb73ab6be6e15656f37579e3b074df523bacdc7c87797a" } } }, @@ -40,7 +40,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:48e583f8c29af45bb89d0e4f883b4fc478f7ec65f887612b865ebd4e1895b0a8" + "digest": "sha256:98cfcbf9939646a8cbeb73ab6be6e15656f37579e3b074df523bacdc7c87797a" } } }, @@ -59,7 +59,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:48e583f8c29af45bb89d0e4f883b4fc478f7ec65f887612b865ebd4e1895b0a8" + "digest": "sha256:98cfcbf9939646a8cbeb73ab6be6e15656f37579e3b074df523bacdc7c87797a" } } }, @@ -78,7 +78,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:48e583f8c29af45bb89d0e4f883b4fc478f7ec65f887612b865ebd4e1895b0a8" + "digest": "sha256:98cfcbf9939646a8cbeb73ab6be6e15656f37579e3b074df523bacdc7c87797a" } } }, @@ -87,13 +87,13 @@ "artifactKind": "lowerer", "resource": { "coordinate": "echo.dpo.lowerer/component@1", - "digest": "sha256:dfd14015705ff555a7efdb3787ddb0f8b4f304168a9a0ebf324fd25d430bf5cd" + "digest": "sha256:8eb7891b1eed94c9396b0a3bd188aa35918d5833d24b15c0285eebd829687389" }, "source": { "kind": "component", "component": { "coordinate": "echo.dpo.lowerer/component@1", - "digest": "sha256:dfd14015705ff555a7efdb3787ddb0f8b4f304168a9a0ebf324fd25d430bf5cd" + "digest": "sha256:8eb7891b1eed94c9396b0a3bd188aa35918d5833d24b15c0285eebd829687389" } } }, @@ -102,7 +102,7 @@ "artifactKind": "generationProvenance", "resource": { "coordinate": "echo.edict-provider-generation-provenance@1", - "digest": "sha256:42f43a9bd874fe7808f3edce7491899ec21c991d33526e5802e6a3ad1edd2020" + "digest": "sha256:2a0a73ce7b3b5e80c9cbfd8a81fb8ec9ded7a22b9997f64f19a13aae003ec27e" }, "source": { "kind": "generated", @@ -112,7 +112,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:48e583f8c29af45bb89d0e4f883b4fc478f7ec65f887612b865ebd4e1895b0a8" + "digest": "sha256:98cfcbf9939646a8cbeb73ab6be6e15656f37579e3b074df523bacdc7c87797a" } } }, @@ -121,7 +121,7 @@ "artifactKind": "reviewArtifact", "resource": { "coordinate": "echo.edict-provider-generation-review@1", - "digest": "sha256:1459a631c3ca083de2ccfa3e73eded405b8cdf9b969a0ec6519c1e0484e34877" + "digest": "sha256:d95bf46b3f69aa46fda738b926b225dfa6637f9182f69e2518d849d16f5cd9a8" }, "source": { "kind": "generated", @@ -131,7 +131,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:48e583f8c29af45bb89d0e4f883b4fc478f7ec65f887612b865ebd4e1895b0a8" + "digest": "sha256:98cfcbf9939646a8cbeb73ab6be6e15656f37579e3b074df523bacdc7c87797a" } } }, @@ -140,7 +140,7 @@ "artifactKind": "artifactSchema", "resource": { "coordinate": "echo.provider-artifacts.cddl@1", - "digest": "sha256:730ce72f6658fe8cc9302221c32ad5992492e190674ddd69c1b164749d2bb669" + "digest": "sha256:15e2b02f66052eff437973957c728b5ed4ecf709ef9ae094fbe8e4d0ea870209" }, "source": { "kind": "generated", @@ -150,7 +150,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:48e583f8c29af45bb89d0e4f883b4fc478f7ec65f887612b865ebd4e1895b0a8" + "digest": "sha256:98cfcbf9939646a8cbeb73ab6be6e15656f37579e3b074df523bacdc7c87797a" } } }, @@ -169,7 +169,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:48e583f8c29af45bb89d0e4f883b4fc478f7ec65f887612b865ebd4e1895b0a8" + "digest": "sha256:98cfcbf9939646a8cbeb73ab6be6e15656f37579e3b074df523bacdc7c87797a" } } }, diff --git a/xtask/src/provider_lowerer_component.rs b/xtask/src/provider_lowerer_component.rs index 444c4bfe..cb49de78 100644 --- a/xtask/src/provider_lowerer_component.rs +++ b/xtask/src/provider_lowerer_component.rs @@ -53,7 +53,7 @@ const PINNED_CARGO_COMMIT: &str = "840b83a10fb0e039a83f4d70ad032892c287570a"; /// Reviewed identity that the portable promotion command is permitted to install. pub(crate) const APPROVED_CHECKED_COMPONENT_SHA256: &str = - "dfd14015705ff555a7efdb3787ddb0f8b4f304168a9a0ebf324fd25d430bf5cd"; + "8eb7891b1eed94c9396b0a3bd188aa35918d5833d24b15c0285eebd829687389"; pub(crate) const CHECKED_COMPONENT_REPOSITORY_PATH: &str = "schemas/edict-provider/components/v1/lowerer.echo-dpo.component.wasm"; From c56f7422b907a3f74434f2645c86e77eb3db38a7 Mon Sep 17 00:00:00 2001 From: James Ross Date: Sun, 23 Aug 2026 05:07:35 -0700 Subject: [PATCH 2/8] feat: admit generic pure program configuration --- CHANGELOG.md | 6 +++ crates/echo-edict-provider-lowerer/README.md | 9 +++- crates/echo-edict-provider-lowerer/src/lib.rs | 4 +- .../tests/fixtures/generated_echo_dpo.rs | 4 +- .../tests/lowerer_contract.rs | 2 +- .../lowerer.echo-dpo.component.wasm | Bin 258787 -> 258787 bytes .../provenance.provider-generation.json | 2 +- .../evidence/review.provider-generation.json | 2 +- .../schema.echo-provider-artifacts.cddl | 11 ++++- .../package/v1/provider-manifest.echo.json | 28 +++++------ .../echo-wesley-gen/src/provider_artifacts.rs | 11 ++++- .../echo-wesley-gen/tests/provider_package.rs | 2 +- .../tests/provider_package_corpus.rs | 4 +- .../tests/provider_primary_artifacts.rs | 44 ++++++++++++++++++ .../application-contract-hosting.md | 7 +++ schemas/edict-provider/README.md | 9 +++- .../edict-provider/components/v1/README.md | 2 +- .../v1/lowerer.echo-dpo.component.wasm | Bin 258787 -> 258787 bytes .../provenance.provider-generation.json | 2 +- .../evidence/review.provider-generation.json | 2 +- .../schema.echo-provider-artifacts.cddl | 11 ++++- .../lowerer.echo-dpo.component.wasm | Bin 258787 -> 258787 bytes .../provenance.provider-generation.json | 2 +- .../evidence/review.provider-generation.json | 2 +- .../schema.echo-provider-artifacts.cddl | 11 ++++- .../package/v1/provider-manifest.echo.json | 28 +++++------ xtask/src/provider_lowerer_component.rs | 2 +- 27 files changed, 157 insertions(+), 50 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3a04984f..d11008f6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,12 @@ manifest identities, preserves the bounded contract-pack admission boundary, and regenerates every affected provider schema, provenance record, package manifest, and package-local carrier without adding application vocabulary. +- The provider schema now admits the exact two-field + `compiler-produced-bounded-pure/v1` target configuration. The configuration + contains no operation coordinate, application vocabulary, budget override, + or runtime authority. It advances a schema-valid request to the lowerer, + which still refuses the unsupported program semantics without emitting a + package. - Strict filesystem WAL stores now persist a checksummed writer-epoch ledger containing the active epoch, its exact latest closed predecessor, and final LSN and commit-digest evidence. Bounded retention keeps ledger writes and diff --git a/crates/echo-edict-provider-lowerer/README.md b/crates/echo-edict-provider-lowerer/README.md index b6e0b51c..1fd23887 100644 --- a/crates/echo-edict-provider-lowerer/README.md +++ b/crates/echo-edict-provider-lowerer/README.md @@ -118,7 +118,7 @@ remain a separate bounded observer/optic path and must never be represented as synthetic mutations. The refreshed 258,787-byte checked lowerer component has SHA-256 -`8eb7891b1eed94c9396b0a3bd188aa35918d5833d24b15c0285eebd829687389` and has +`7902ae7fbe95ab58ac2ebe9bbf4ec9dfcc5262e4f61c69d9aeeac66a51b91c56` and has crossed the reproducible promotion boundary. The pinned Edict host admits its generated envelope under the owning `generated-artifact` CDDL root, and the isolated host fixture exercises the exact helper binding, typed codecs, EINT @@ -132,6 +132,13 @@ lawpack import in the supplied source. Lawpack-owned export and adapter references retain their coordinate-framed digests independently from the provider envelope's schema-domain digests. +The provider schema also admits the exact zero-choice +`compiler-produced-bounded-pure/v1` target configuration. That admission only +allows a compiler-produced pure-program request to reach this component. The +current lowerer still returns the typed `UnsupportedSemantics` refusal because +the executable package model remains the bounded anchored create-if-absent +profile. Schema admission is not an execution claim. + The native Rust model is also the narrow unit-test boundary. A `wasm32` adapter generated from [`wit/edict-target-provider.wit`](wit/edict-target-provider.wit) exports the exact Component Model function and performs total conversions to diff --git a/crates/echo-edict-provider-lowerer/src/lib.rs b/crates/echo-edict-provider-lowerer/src/lib.rs index 3fbabb9f..2b9c3647 100644 --- a/crates/echo-edict-provider-lowerer/src/lib.rs +++ b/crates/echo-edict-provider-lowerer/src/lib.rs @@ -809,7 +809,7 @@ pub mod echo_dpo { pub const PROVIDER_SCHEMA_COORDINATE: &str = "echo.provider-artifacts.cddl@1"; /// Raw SHA-256 of the exact self-contained provider CDDL bytes. pub const PROVIDER_SCHEMA_SHA256_HEX: &str = - "15e2b02f66052eff437973957c728b5ed4ecf709ef9ae094fbe8e4d0ea870209"; + "e3d1c0d0be879a1a6525420682312115f867badb5c817b10407f2f9b84796747"; /// Exact generated-artifact profile coordinate owning operation schemas. pub const GENERATED_ARTIFACT_PROFILE: &str = "echo.dpo.registration/v1"; /// Digest-framing domain for the generated-artifact profile. @@ -846,7 +846,7 @@ pub mod echo_dpo { const MUTATION_RULE_NAME: &str = concat!( "cmd/contract/", - "15e2b02f66052eff437973957c728b5ed4ecf709ef9ae094fbe8e4d0ea870209", + "e3d1c0d0be879a1a6525420682312115f867badb5c817b10407f2f9b84796747", "/3389142194/a.b@1.t" ); const PROVIDER_OPERATIONS: [ProviderOperationV1<'static>; 1] = [ProviderOperationV1 { diff --git a/crates/echo-edict-provider-lowerer/tests/fixtures/generated_echo_dpo.rs b/crates/echo-edict-provider-lowerer/tests/fixtures/generated_echo_dpo.rs index a675e62d..9a5fa058 100644 --- a/crates/echo-edict-provider-lowerer/tests/fixtures/generated_echo_dpo.rs +++ b/crates/echo-edict-provider-lowerer/tests/fixtures/generated_echo_dpo.rs @@ -71,7 +71,7 @@ pub mod echo_dpo { pub const PROVIDER_SCHEMA_COORDINATE: &str = "echo.provider-artifacts.cddl@1"; /// Raw SHA-256 of the exact self-contained provider CDDL bytes. pub const PROVIDER_SCHEMA_SHA256_HEX: &str = - "15e2b02f66052eff437973957c728b5ed4ecf709ef9ae094fbe8e4d0ea870209"; + "e3d1c0d0be879a1a6525420682312115f867badb5c817b10407f2f9b84796747"; /// Exact generated-artifact profile coordinate owning operation schemas. pub const GENERATED_ARTIFACT_PROFILE: &str = "echo.dpo.registration/v1"; /// Digest-framing domain for the generated-artifact profile. @@ -108,7 +108,7 @@ pub mod echo_dpo { const MUTATION_RULE_NAME: &str = concat!( "cmd/contract/", - "15e2b02f66052eff437973957c728b5ed4ecf709ef9ae094fbe8e4d0ea870209", + "e3d1c0d0be879a1a6525420682312115f867badb5c817b10407f2f9b84796747", "/3389142194/a.b@1.t" ); const PROVIDER_OPERATIONS: [ProviderOperationV1<'static>; 1] = [ProviderOperationV1 { diff --git a/crates/echo-edict-provider-lowerer/tests/lowerer_contract.rs b/crates/echo-edict-provider-lowerer/tests/lowerer_contract.rs index 17ec974d..75b6afc4 100644 --- a/crates/echo-edict-provider-lowerer/tests/lowerer_contract.rs +++ b/crates/echo-edict-provider-lowerer/tests/lowerer_contract.rs @@ -45,7 +45,7 @@ const REVIEW_MEDIA_TYPE: &str = "application/json"; const GENERATED_SOURCE_PATH: &str = "generated/echo_dpo.rs"; const REVIEW_PATH: &str = "review/echo_dpo.json"; const EXPECTED_PROVIDER_SCHEMA_SHA256_HEX: &str = - "15e2b02f66052eff437973957c728b5ed4ecf709ef9ae094fbe8e4d0ea870209"; + "e3d1c0d0be879a1a6525420682312115f867badb5c817b10407f2f9b84796747"; const EXPECTED_OPERATION_ID_LAW: &str = "echo.semantic-operation-id.fnv1-32/v1"; const EXPECTED_OPERATION_ID: u32 = 3_389_142_194; diff --git a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/components/lowerer.echo-dpo.component.wasm b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/components/lowerer.echo-dpo.component.wasm index b5aef20869d65d45277478648c36124bc0b59247..e8fd3b619ee891aa061312204d734b6ce762f411 100644 GIT binary patch delta 157 zcmaF-l>hNl{)QID7N#xC60r`c#wmu$1}O$fsTSsziH3=0rbebFMh0dUM#hFlhK8nT x7G~y2i782@$rgs@Nrna{2Igr-X_iSACgzrA<|gLbBVw7kI4L(~Q5v&j4*(CYE4u&y delta 157 zcmaF-l>hNl{)QID7N#xC60r`3rm03r21aRSW(KB4scC5@#^#ph#+Ih$$>v5DNv5eO xCaKA3<_4CjX_kqp29_piNvRg8CMgD~i5BJtMh2GKBVw7kI4L(~Q5v&j4*;25E;j%G diff --git a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/evidence/provenance.provider-generation.json b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/evidence/provenance.provider-generation.json index 59fc0054..62813d0e 100644 --- a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/evidence/provenance.provider-generation.json +++ b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/evidence/provenance.provider-generation.json @@ -1 +1 @@ -{"apiVersion":"wesley.generation-provenance-manifest/v1","contractVersions":{"generatorAbi":"wesley.extension-generator/v1","inputSchema":"wesley.extension-generation-input/v1","provenanceSchema":"wesley.generation-provenance-manifest/v1"},"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:15e2b02f66052eff437973957c728b5ed4ecf709ef9ae094fbe8e4d0ea870209"}],"generationInputDigest":"sha256:8801229418295223b90cb8ff5eaff6e1a1d8eef27e984e0f2caa04450e29e125","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:98cfcbf9939646a8cbeb73ab6be6e15656f37579e3b074df523bacdc7c87797a","version":"0.1.0"},"settingsDigest":"sha256:0f708e76898de6fdb8186352e81d0f5c445adf94bb6c7de9204952d9fe913d4a","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:fe37a4252af4a732a62074b58947e052744a48397042eaadb0e61849fc245627"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:80e98f3b338690a5b0c71c2d35fbe70c11e4ef4b5c8d064a583f2af94942e613"}]} \ No newline at end of file +{"apiVersion":"wesley.generation-provenance-manifest/v1","contractVersions":{"generatorAbi":"wesley.extension-generator/v1","inputSchema":"wesley.extension-generation-input/v1","provenanceSchema":"wesley.generation-provenance-manifest/v1"},"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:e3d1c0d0be879a1a6525420682312115f867badb5c817b10407f2f9b84796747"}],"generationInputDigest":"sha256:8801229418295223b90cb8ff5eaff6e1a1d8eef27e984e0f2caa04450e29e125","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:4b33ed0000093a08877f3f65c0688d4ee074da1cf12822406b9550068b93680d","version":"0.1.0"},"settingsDigest":"sha256:0f708e76898de6fdb8186352e81d0f5c445adf94bb6c7de9204952d9fe913d4a","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:fe37a4252af4a732a62074b58947e052744a48397042eaadb0e61849fc245627"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:80e98f3b338690a5b0c71c2d35fbe70c11e4ef4b5c8d064a583f2af94942e613"}]} \ No newline at end of file diff --git a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/evidence/review.provider-generation.json b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/evidence/review.provider-generation.json index 5763786f..fb9a0997 100644 --- a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/evidence/review.provider-generation.json +++ b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/evidence/review.provider-generation.json @@ -1 +1 @@ -{"apiVersion":"wesley.generation-review/v1","authoritative":false,"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:15e2b02f66052eff437973957c728b5ed4ecf709ef9ae094fbe8e4d0ea870209"}],"generationInputDigest":"sha256:8801229418295223b90cb8ff5eaff6e1a1d8eef27e984e0f2caa04450e29e125","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:98cfcbf9939646a8cbeb73ab6be6e15656f37579e3b074df523bacdc7c87797a","version":"0.1.0"},"projectionRoles":["authority-facts.echo-dpo","authority-facts.echo-lawpack","generated-artifact-profile.echo-dpo-registration","lawpack.echo-dpo","schema.echo-provider-artifacts","target-profile.echo-dpo"],"provenanceManifestDigest":"sha256:006150ed3a0595def00eff02e6dcec0eae3a2b3a5b884f4e362e0ae44a821c75","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:fe37a4252af4a732a62074b58947e052744a48397042eaadb0e61849fc245627"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:80e98f3b338690a5b0c71c2d35fbe70c11e4ef4b5c8d064a583f2af94942e613"}]} \ No newline at end of file +{"apiVersion":"wesley.generation-review/v1","authoritative":false,"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:e3d1c0d0be879a1a6525420682312115f867badb5c817b10407f2f9b84796747"}],"generationInputDigest":"sha256:8801229418295223b90cb8ff5eaff6e1a1d8eef27e984e0f2caa04450e29e125","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:4b33ed0000093a08877f3f65c0688d4ee074da1cf12822406b9550068b93680d","version":"0.1.0"},"projectionRoles":["authority-facts.echo-dpo","authority-facts.echo-lawpack","generated-artifact-profile.echo-dpo-registration","lawpack.echo-dpo","schema.echo-provider-artifacts","target-profile.echo-dpo"],"provenanceManifestDigest":"sha256:60833836ff90a0c26b0d03fd2e521a0e761e8afedc4638c025dc62ee40d43c79","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:fe37a4252af4a732a62074b58947e052744a48397042eaadb0e61849fc245627"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:80e98f3b338690a5b0c71c2d35fbe70c11e4ef4b5c8d064a583f2af94942e613"}]} \ No newline at end of file diff --git a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/primary/schema.echo-provider-artifacts.cddl b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/primary/schema.echo-provider-artifacts.cddl index 91fd4d2c..d4cc88b5 100644 --- a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/primary/schema.echo-provider-artifacts.cddl +++ b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/primary/schema.echo-provider-artifacts.cddl @@ -1220,7 +1220,16 @@ echo-operation-semantic-closure = { "target_ir_identity": bstr .size 32, } -echo-operation-lowering-configuration = { +echo-operation-lowering-configuration = + echo-attachment-create-if-absent-lowering-configuration / + echo-compiler-produced-bounded-pure-lowering-configuration + +echo-compiler-produced-bounded-pure-lowering-configuration = { + apiVersion: "echo.operation-lowering-configuration/v1", + programKind: "compiler-produced-bounded-pure/v1", +} + +echo-attachment-create-if-absent-lowering-configuration = { apiVersion: "echo.operation-lowering-configuration/v1", authorityProfile: echo-nonempty-tstr, budgetCeiling: { diff --git a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/provider-manifest.echo.json b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/provider-manifest.echo.json index dfa934c5..19fe9fa4 100644 --- a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/provider-manifest.echo.json +++ b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/provider-manifest.echo.json @@ -3,7 +3,7 @@ "providerAbi": "edict:target-provider@1.0.0", "provider": { "coordinate": "echo.edict-provider@1", - "digest": "sha256:5a42ef91640660397957ace0f533974e45ceb2c1124de29683ee96974d0d3201" + "digest": "sha256:4cfd3c0d5589ff6a97d2eac7d2fdcb07b3ab0fa9e546b01c44f1cccd6d8ddc2b" }, "artifacts": [ { @@ -21,7 +21,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:98cfcbf9939646a8cbeb73ab6be6e15656f37579e3b074df523bacdc7c87797a" + "digest": "sha256:4b33ed0000093a08877f3f65c0688d4ee074da1cf12822406b9550068b93680d" } } }, @@ -40,7 +40,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:98cfcbf9939646a8cbeb73ab6be6e15656f37579e3b074df523bacdc7c87797a" + "digest": "sha256:4b33ed0000093a08877f3f65c0688d4ee074da1cf12822406b9550068b93680d" } } }, @@ -59,7 +59,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:98cfcbf9939646a8cbeb73ab6be6e15656f37579e3b074df523bacdc7c87797a" + "digest": "sha256:4b33ed0000093a08877f3f65c0688d4ee074da1cf12822406b9550068b93680d" } } }, @@ -78,7 +78,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:98cfcbf9939646a8cbeb73ab6be6e15656f37579e3b074df523bacdc7c87797a" + "digest": "sha256:4b33ed0000093a08877f3f65c0688d4ee074da1cf12822406b9550068b93680d" } } }, @@ -87,13 +87,13 @@ "artifactKind": "lowerer", "resource": { "coordinate": "echo.dpo.lowerer/component@1", - "digest": "sha256:8eb7891b1eed94c9396b0a3bd188aa35918d5833d24b15c0285eebd829687389" + "digest": "sha256:7902ae7fbe95ab58ac2ebe9bbf4ec9dfcc5262e4f61c69d9aeeac66a51b91c56" }, "source": { "kind": "component", "component": { "coordinate": "echo.dpo.lowerer/component@1", - "digest": "sha256:8eb7891b1eed94c9396b0a3bd188aa35918d5833d24b15c0285eebd829687389" + "digest": "sha256:7902ae7fbe95ab58ac2ebe9bbf4ec9dfcc5262e4f61c69d9aeeac66a51b91c56" } } }, @@ -102,7 +102,7 @@ "artifactKind": "generationProvenance", "resource": { "coordinate": "echo.edict-provider-generation-provenance@1", - "digest": "sha256:2a0a73ce7b3b5e80c9cbfd8a81fb8ec9ded7a22b9997f64f19a13aae003ec27e" + "digest": "sha256:c86a5c0c8de4ae293a7770ce57c847ae40b76c97347339cc409f194377d0dee6" }, "source": { "kind": "generated", @@ -112,7 +112,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:98cfcbf9939646a8cbeb73ab6be6e15656f37579e3b074df523bacdc7c87797a" + "digest": "sha256:4b33ed0000093a08877f3f65c0688d4ee074da1cf12822406b9550068b93680d" } } }, @@ -121,7 +121,7 @@ "artifactKind": "reviewArtifact", "resource": { "coordinate": "echo.edict-provider-generation-review@1", - "digest": "sha256:d95bf46b3f69aa46fda738b926b225dfa6637f9182f69e2518d849d16f5cd9a8" + "digest": "sha256:bae5efa81bf634b6f25feebf839559da0d093f9048fe3f6dd837fa437eef0e3d" }, "source": { "kind": "generated", @@ -131,7 +131,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:98cfcbf9939646a8cbeb73ab6be6e15656f37579e3b074df523bacdc7c87797a" + "digest": "sha256:4b33ed0000093a08877f3f65c0688d4ee074da1cf12822406b9550068b93680d" } } }, @@ -140,7 +140,7 @@ "artifactKind": "artifactSchema", "resource": { "coordinate": "echo.provider-artifacts.cddl@1", - "digest": "sha256:15e2b02f66052eff437973957c728b5ed4ecf709ef9ae094fbe8e4d0ea870209" + "digest": "sha256:e3d1c0d0be879a1a6525420682312115f867badb5c817b10407f2f9b84796747" }, "source": { "kind": "generated", @@ -150,7 +150,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:98cfcbf9939646a8cbeb73ab6be6e15656f37579e3b074df523bacdc7c87797a" + "digest": "sha256:4b33ed0000093a08877f3f65c0688d4ee074da1cf12822406b9550068b93680d" } } }, @@ -169,7 +169,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:98cfcbf9939646a8cbeb73ab6be6e15656f37579e3b074df523bacdc7c87797a" + "digest": "sha256:4b33ed0000093a08877f3f65c0688d4ee074da1cf12822406b9550068b93680d" } } }, diff --git a/crates/echo-wesley-gen/src/provider_artifacts.rs b/crates/echo-wesley-gen/src/provider_artifacts.rs index a0bf5eea..c66bf718 100644 --- a/crates/echo-wesley-gen/src/provider_artifacts.rs +++ b/crates/echo-wesley-gen/src/provider_artifacts.rs @@ -293,7 +293,16 @@ echo-operation-semantic-closure = { "target_ir_identity": bstr .size 32, } -echo-operation-lowering-configuration = { +echo-operation-lowering-configuration = + echo-attachment-create-if-absent-lowering-configuration / + echo-compiler-produced-bounded-pure-lowering-configuration + +echo-compiler-produced-bounded-pure-lowering-configuration = { + apiVersion: "echo.operation-lowering-configuration/v1", + programKind: "compiler-produced-bounded-pure/v1", +} + +echo-attachment-create-if-absent-lowering-configuration = { apiVersion: "echo.operation-lowering-configuration/v1", authorityProfile: echo-nonempty-tstr, budgetCeiling: { diff --git a/crates/echo-wesley-gen/tests/provider_package.rs b/crates/echo-wesley-gen/tests/provider_package.rs index 9e041adc..3e493d7c 100644 --- a/crates/echo-wesley-gen/tests/provider_package.rs +++ b/crates/echo-wesley-gen/tests/provider_package.rs @@ -65,7 +65,7 @@ const SEMANTIC_DIGEST: &str = const RELEASE_DIGEST: &str = "sha256:c39449495281b51f978468d08c21e93bcfa423176063b41675da61e4674b0066"; const PACKAGE_ARTIFACT_SHA256: &str = - "5a42ef91640660397957ace0f533974e45ceb2c1124de29683ee96974d0d3201"; + "4cfd3c0d5589ff6a97d2eac7d2fdcb07b3ab0fa9e546b01c44f1cccd6d8ddc2b"; const OTHER_PACKAGE_ARTIFACT_SHA256: &str = "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"; diff --git a/crates/echo-wesley-gen/tests/provider_package_corpus.rs b/crates/echo-wesley-gen/tests/provider_package_corpus.rs index 7fd64752..253fcd85 100644 --- a/crates/echo-wesley-gen/tests/provider_package_corpus.rs +++ b/crates/echo-wesley-gen/tests/provider_package_corpus.rs @@ -11,9 +11,9 @@ use std::sync::atomic::{AtomicU64, Ordering}; use sha2::{Digest as _, Sha256}; const EXPECTED_PROVIDER_DIGEST: &str = - "sha256:5a42ef91640660397957ace0f533974e45ceb2c1124de29683ee96974d0d3201"; + "sha256:4cfd3c0d5589ff6a97d2eac7d2fdcb07b3ab0fa9e546b01c44f1cccd6d8ddc2b"; const EXPECTED_MANIFEST_RAW_SHA256: &str = - "c1c80db587f855c7d3fe7bae0c97a32f699b89ace76e377fbc1069cc1eb3b7f1"; + "dfee8e8913a1101a60b404091ec80b3446b5fdadf91b939498bd7e07484dc187"; const PACKAGE_PATHS: [&str; 25] = [ "components/lowerer.echo-dpo.component.wasm", diff --git a/crates/echo-wesley-gen/tests/provider_primary_artifacts.rs b/crates/echo-wesley-gen/tests/provider_primary_artifacts.rs index e3c84a82..30bc9e54 100644 --- a/crates/echo-wesley-gen/tests/provider_primary_artifacts.rs +++ b/crates/echo-wesley-gen/tests/provider_primary_artifacts.rs @@ -1349,3 +1349,47 @@ fn generated_schema_distinguishes_canonical_wire_from_root_admission() { ) ); } + +#[test] +fn generic_pure_target_configuration_is_an_exact_zero_choice_profile() { + let pack = admitted_pack(); + let (_, generated) = generate(SOURCE, &pack); + let configuration = CanonicalValueV1::Map(vec![ + ( + CanonicalValueV1::Text("apiVersion".to_owned()), + CanonicalValueV1::Text("echo.operation-lowering-configuration/v1".to_owned()), + ), + ( + CanonicalValueV1::Text("programKind".to_owned()), + CanonicalValueV1::Text("compiler-produced-bounded-pure/v1".to_owned()), + ), + ]); + let configuration_bytes = encode_canonical_cbor_v1(&configuration) + .expect("generic pure configuration is canonical CBOR"); + + generated + .schema() + .validate_root_bytes( + "echo-operation-lowering-configuration", + &configuration_bytes, + ) + .expect("the Echo-owned generic pure profile is admitted"); + + let mut application_specialized = configuration; + let CanonicalValueV1::Map(fields) = &mut application_specialized else { + panic!("configuration is a map"); + }; + fields.push(( + CanonicalValueV1::Text("operation".to_owned()), + CanonicalValueV1::Text("consumer.operation@1".to_owned()), + )); + let application_specialized_bytes = encode_canonical_cbor_v1(&application_specialized) + .expect("application-specialized configuration is canonical CBOR"); + generated + .schema() + .validate_root_bytes( + "echo-operation-lowering-configuration", + &application_specialized_bytes, + ) + .expect_err("application vocabulary cannot enter the generic configuration"); +} diff --git a/docs/architecture/application-contract-hosting.md b/docs/architecture/application-contract-hosting.md index 296f0b1a..5f844e79 100644 --- a/docs/architecture/application-contract-hosting.md +++ b/docs/architecture/application-contract-hosting.md @@ -163,6 +163,13 @@ state, frontier, or Receipt publication. The transitional direct prepare/commit seam can still return noncommitted evidence to trusted host tests, but it is not the application lifecycle. +The external-provider schema additionally admits one exact zero-choice +`compiler-produced-bounded-pure/v1` target configuration. It contains no +application operation, target-specific budget override, or mutation authority. +This only lets a schema-valid generic pure program reach the checked lowerer; +until the generic executable package profile is implemented, the lowerer +returns `UnsupportedSemantics` and emits no package. + The slice exposes no application matcher, executor, or footprint callback. A generic provider lowerer now emits the package from exact Edict source, Core, lawpack, exports, adapter, target-configuration, and Target IR artifacts, and a diff --git a/schemas/edict-provider/README.md b/schemas/edict-provider/README.md index 243e3790..17eaaf23 100644 --- a/schemas/edict-provider/README.md +++ b/schemas/edict-provider/README.md @@ -170,10 +170,17 @@ reproduce all three completed outcomes identically. Both checked components remain uninstalled package material; neither they nor the generated authority-facts documents are runtime Echo authority. The promoted lowerer is 258,787 bytes with SHA-256 -`8eb7891b1eed94c9396b0a3bd188aa35918d5833d24b15c0285eebd829687389`; the +`7902ae7fbe95ab58ac2ebe9bbf4ec9dfcc5262e4f61c69d9aeeac66a51b91c56`; the promoted verifier is 277,836 bytes with SHA-256 `279738ffeea40027eb493c15e873b87cf3aa0677a57f9f03fb824698e532322f`. +The generated provider schema admits both the existing anchored +create-if-absent configuration and the exact two-field +`compiler-produced-bounded-pure/v1` configuration. The latter contains no +application coordinate or policy choice. It is input-shape admission only: the +checked lowerer continues to refuse that program kind as unsupported until a +generic executable package profile is implemented. + External Edict contract inputs come from the checked [`contracts/v1/`](contracts/v1/README.md) publication introduced in [Edict PR #162](https://github.com/flyingrobots/edict/pull/162) and extended diff --git a/schemas/edict-provider/components/v1/README.md b/schemas/edict-provider/components/v1/README.md index b72bd8ee..c88425d3 100644 --- a/schemas/edict-provider/components/v1/README.md +++ b/schemas/edict-provider/components/v1/README.md @@ -24,7 +24,7 @@ The source WIT is the exact 7,392-byte Edict contract with SHA-256 `2971fe44def7e51d5271dfc0f04f3088aa58754cffdc847681a587605aac749e`. The checked component is 258,787 bytes with SHA-256 -`8eb7891b1eed94c9396b0a3bd188aa35918d5833d24b15c0285eebd829687389`. +`7902ae7fbe95ab58ac2ebe9bbf4ec9dfcc5262e4f61c69d9aeeac66a51b91c56`. Its sole contract attestation is the top-level custom section `edict:target-provider-contract` containing `edict:target-provider/lowerer@1.0.0`. Its only imports are the frozen WIT's diff --git a/schemas/edict-provider/components/v1/lowerer.echo-dpo.component.wasm b/schemas/edict-provider/components/v1/lowerer.echo-dpo.component.wasm index b5aef20869d65d45277478648c36124bc0b59247..e8fd3b619ee891aa061312204d734b6ce762f411 100644 GIT binary patch delta 157 zcmaF-l>hNl{)QID7N#xC60r`c#wmu$1}O$fsTSsziH3=0rbebFMh0dUM#hFlhK8nT x7G~y2i782@$rgs@Nrna{2Igr-X_iSACgzrA<|gLbBVw7kI4L(~Q5v&j4*(CYE4u&y delta 157 zcmaF-l>hNl{)QID7N#xC60r`3rm03r21aRSW(KB4scC5@#^#ph#+Ih$$>v5DNv5eO xCaKA3<_4CjX_kqp29_piNvRg8CMgD~i5BJtMh2GKBVw7kI4L(~Q5v&j4*;25E;j%G diff --git a/schemas/edict-provider/generated/v1/evidence/provenance.provider-generation.json b/schemas/edict-provider/generated/v1/evidence/provenance.provider-generation.json index 59fc0054..62813d0e 100644 --- a/schemas/edict-provider/generated/v1/evidence/provenance.provider-generation.json +++ b/schemas/edict-provider/generated/v1/evidence/provenance.provider-generation.json @@ -1 +1 @@ -{"apiVersion":"wesley.generation-provenance-manifest/v1","contractVersions":{"generatorAbi":"wesley.extension-generator/v1","inputSchema":"wesley.extension-generation-input/v1","provenanceSchema":"wesley.generation-provenance-manifest/v1"},"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:15e2b02f66052eff437973957c728b5ed4ecf709ef9ae094fbe8e4d0ea870209"}],"generationInputDigest":"sha256:8801229418295223b90cb8ff5eaff6e1a1d8eef27e984e0f2caa04450e29e125","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:98cfcbf9939646a8cbeb73ab6be6e15656f37579e3b074df523bacdc7c87797a","version":"0.1.0"},"settingsDigest":"sha256:0f708e76898de6fdb8186352e81d0f5c445adf94bb6c7de9204952d9fe913d4a","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:fe37a4252af4a732a62074b58947e052744a48397042eaadb0e61849fc245627"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:80e98f3b338690a5b0c71c2d35fbe70c11e4ef4b5c8d064a583f2af94942e613"}]} \ No newline at end of file +{"apiVersion":"wesley.generation-provenance-manifest/v1","contractVersions":{"generatorAbi":"wesley.extension-generator/v1","inputSchema":"wesley.extension-generation-input/v1","provenanceSchema":"wesley.generation-provenance-manifest/v1"},"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:e3d1c0d0be879a1a6525420682312115f867badb5c817b10407f2f9b84796747"}],"generationInputDigest":"sha256:8801229418295223b90cb8ff5eaff6e1a1d8eef27e984e0f2caa04450e29e125","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:4b33ed0000093a08877f3f65c0688d4ee074da1cf12822406b9550068b93680d","version":"0.1.0"},"settingsDigest":"sha256:0f708e76898de6fdb8186352e81d0f5c445adf94bb6c7de9204952d9fe913d4a","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:fe37a4252af4a732a62074b58947e052744a48397042eaadb0e61849fc245627"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:80e98f3b338690a5b0c71c2d35fbe70c11e4ef4b5c8d064a583f2af94942e613"}]} \ No newline at end of file diff --git a/schemas/edict-provider/generated/v1/evidence/review.provider-generation.json b/schemas/edict-provider/generated/v1/evidence/review.provider-generation.json index 5763786f..fb9a0997 100644 --- a/schemas/edict-provider/generated/v1/evidence/review.provider-generation.json +++ b/schemas/edict-provider/generated/v1/evidence/review.provider-generation.json @@ -1 +1 @@ -{"apiVersion":"wesley.generation-review/v1","authoritative":false,"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:15e2b02f66052eff437973957c728b5ed4ecf709ef9ae094fbe8e4d0ea870209"}],"generationInputDigest":"sha256:8801229418295223b90cb8ff5eaff6e1a1d8eef27e984e0f2caa04450e29e125","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:98cfcbf9939646a8cbeb73ab6be6e15656f37579e3b074df523bacdc7c87797a","version":"0.1.0"},"projectionRoles":["authority-facts.echo-dpo","authority-facts.echo-lawpack","generated-artifact-profile.echo-dpo-registration","lawpack.echo-dpo","schema.echo-provider-artifacts","target-profile.echo-dpo"],"provenanceManifestDigest":"sha256:006150ed3a0595def00eff02e6dcec0eae3a2b3a5b884f4e362e0ae44a821c75","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:fe37a4252af4a732a62074b58947e052744a48397042eaadb0e61849fc245627"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:80e98f3b338690a5b0c71c2d35fbe70c11e4ef4b5c8d064a583f2af94942e613"}]} \ No newline at end of file +{"apiVersion":"wesley.generation-review/v1","authoritative":false,"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:e3d1c0d0be879a1a6525420682312115f867badb5c817b10407f2f9b84796747"}],"generationInputDigest":"sha256:8801229418295223b90cb8ff5eaff6e1a1d8eef27e984e0f2caa04450e29e125","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:4b33ed0000093a08877f3f65c0688d4ee074da1cf12822406b9550068b93680d","version":"0.1.0"},"projectionRoles":["authority-facts.echo-dpo","authority-facts.echo-lawpack","generated-artifact-profile.echo-dpo-registration","lawpack.echo-dpo","schema.echo-provider-artifacts","target-profile.echo-dpo"],"provenanceManifestDigest":"sha256:60833836ff90a0c26b0d03fd2e521a0e761e8afedc4638c025dc62ee40d43c79","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:fe37a4252af4a732a62074b58947e052744a48397042eaadb0e61849fc245627"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:80e98f3b338690a5b0c71c2d35fbe70c11e4ef4b5c8d064a583f2af94942e613"}]} \ No newline at end of file diff --git a/schemas/edict-provider/generated/v1/primary/schema.echo-provider-artifacts.cddl b/schemas/edict-provider/generated/v1/primary/schema.echo-provider-artifacts.cddl index 91fd4d2c..d4cc88b5 100644 --- a/schemas/edict-provider/generated/v1/primary/schema.echo-provider-artifacts.cddl +++ b/schemas/edict-provider/generated/v1/primary/schema.echo-provider-artifacts.cddl @@ -1220,7 +1220,16 @@ echo-operation-semantic-closure = { "target_ir_identity": bstr .size 32, } -echo-operation-lowering-configuration = { +echo-operation-lowering-configuration = + echo-attachment-create-if-absent-lowering-configuration / + echo-compiler-produced-bounded-pure-lowering-configuration + +echo-compiler-produced-bounded-pure-lowering-configuration = { + apiVersion: "echo.operation-lowering-configuration/v1", + programKind: "compiler-produced-bounded-pure/v1", +} + +echo-attachment-create-if-absent-lowering-configuration = { apiVersion: "echo.operation-lowering-configuration/v1", authorityProfile: echo-nonempty-tstr, budgetCeiling: { diff --git a/schemas/edict-provider/package/v1/components/lowerer.echo-dpo.component.wasm b/schemas/edict-provider/package/v1/components/lowerer.echo-dpo.component.wasm index b5aef20869d65d45277478648c36124bc0b59247..e8fd3b619ee891aa061312204d734b6ce762f411 100644 GIT binary patch delta 157 zcmaF-l>hNl{)QID7N#xC60r`c#wmu$1}O$fsTSsziH3=0rbebFMh0dUM#hFlhK8nT x7G~y2i782@$rgs@Nrna{2Igr-X_iSACgzrA<|gLbBVw7kI4L(~Q5v&j4*(CYE4u&y delta 157 zcmaF-l>hNl{)QID7N#xC60r`3rm03r21aRSW(KB4scC5@#^#ph#+Ih$$>v5DNv5eO xCaKA3<_4CjX_kqp29_piNvRg8CMgD~i5BJtMh2GKBVw7kI4L(~Q5v&j4*;25E;j%G diff --git a/schemas/edict-provider/package/v1/generated/evidence/provenance.provider-generation.json b/schemas/edict-provider/package/v1/generated/evidence/provenance.provider-generation.json index 59fc0054..62813d0e 100644 --- a/schemas/edict-provider/package/v1/generated/evidence/provenance.provider-generation.json +++ b/schemas/edict-provider/package/v1/generated/evidence/provenance.provider-generation.json @@ -1 +1 @@ -{"apiVersion":"wesley.generation-provenance-manifest/v1","contractVersions":{"generatorAbi":"wesley.extension-generator/v1","inputSchema":"wesley.extension-generation-input/v1","provenanceSchema":"wesley.generation-provenance-manifest/v1"},"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:15e2b02f66052eff437973957c728b5ed4ecf709ef9ae094fbe8e4d0ea870209"}],"generationInputDigest":"sha256:8801229418295223b90cb8ff5eaff6e1a1d8eef27e984e0f2caa04450e29e125","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:98cfcbf9939646a8cbeb73ab6be6e15656f37579e3b074df523bacdc7c87797a","version":"0.1.0"},"settingsDigest":"sha256:0f708e76898de6fdb8186352e81d0f5c445adf94bb6c7de9204952d9fe913d4a","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:fe37a4252af4a732a62074b58947e052744a48397042eaadb0e61849fc245627"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:80e98f3b338690a5b0c71c2d35fbe70c11e4ef4b5c8d064a583f2af94942e613"}]} \ No newline at end of file +{"apiVersion":"wesley.generation-provenance-manifest/v1","contractVersions":{"generatorAbi":"wesley.extension-generator/v1","inputSchema":"wesley.extension-generation-input/v1","provenanceSchema":"wesley.generation-provenance-manifest/v1"},"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:e3d1c0d0be879a1a6525420682312115f867badb5c817b10407f2f9b84796747"}],"generationInputDigest":"sha256:8801229418295223b90cb8ff5eaff6e1a1d8eef27e984e0f2caa04450e29e125","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:4b33ed0000093a08877f3f65c0688d4ee074da1cf12822406b9550068b93680d","version":"0.1.0"},"settingsDigest":"sha256:0f708e76898de6fdb8186352e81d0f5c445adf94bb6c7de9204952d9fe913d4a","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:fe37a4252af4a732a62074b58947e052744a48397042eaadb0e61849fc245627"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:80e98f3b338690a5b0c71c2d35fbe70c11e4ef4b5c8d064a583f2af94942e613"}]} \ No newline at end of file diff --git a/schemas/edict-provider/package/v1/generated/evidence/review.provider-generation.json b/schemas/edict-provider/package/v1/generated/evidence/review.provider-generation.json index 5763786f..fb9a0997 100644 --- a/schemas/edict-provider/package/v1/generated/evidence/review.provider-generation.json +++ b/schemas/edict-provider/package/v1/generated/evidence/review.provider-generation.json @@ -1 +1 @@ -{"apiVersion":"wesley.generation-review/v1","authoritative":false,"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:15e2b02f66052eff437973957c728b5ed4ecf709ef9ae094fbe8e4d0ea870209"}],"generationInputDigest":"sha256:8801229418295223b90cb8ff5eaff6e1a1d8eef27e984e0f2caa04450e29e125","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:98cfcbf9939646a8cbeb73ab6be6e15656f37579e3b074df523bacdc7c87797a","version":"0.1.0"},"projectionRoles":["authority-facts.echo-dpo","authority-facts.echo-lawpack","generated-artifact-profile.echo-dpo-registration","lawpack.echo-dpo","schema.echo-provider-artifacts","target-profile.echo-dpo"],"provenanceManifestDigest":"sha256:006150ed3a0595def00eff02e6dcec0eae3a2b3a5b884f4e362e0ae44a821c75","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:fe37a4252af4a732a62074b58947e052744a48397042eaadb0e61849fc245627"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:80e98f3b338690a5b0c71c2d35fbe70c11e4ef4b5c8d064a583f2af94942e613"}]} \ No newline at end of file +{"apiVersion":"wesley.generation-review/v1","authoritative":false,"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:e3d1c0d0be879a1a6525420682312115f867badb5c817b10407f2f9b84796747"}],"generationInputDigest":"sha256:8801229418295223b90cb8ff5eaff6e1a1d8eef27e984e0f2caa04450e29e125","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:4b33ed0000093a08877f3f65c0688d4ee074da1cf12822406b9550068b93680d","version":"0.1.0"},"projectionRoles":["authority-facts.echo-dpo","authority-facts.echo-lawpack","generated-artifact-profile.echo-dpo-registration","lawpack.echo-dpo","schema.echo-provider-artifacts","target-profile.echo-dpo"],"provenanceManifestDigest":"sha256:60833836ff90a0c26b0d03fd2e521a0e761e8afedc4638c025dc62ee40d43c79","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:fe37a4252af4a732a62074b58947e052744a48397042eaadb0e61849fc245627"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:80e98f3b338690a5b0c71c2d35fbe70c11e4ef4b5c8d064a583f2af94942e613"}]} \ No newline at end of file diff --git a/schemas/edict-provider/package/v1/generated/primary/schema.echo-provider-artifacts.cddl b/schemas/edict-provider/package/v1/generated/primary/schema.echo-provider-artifacts.cddl index 91fd4d2c..d4cc88b5 100644 --- a/schemas/edict-provider/package/v1/generated/primary/schema.echo-provider-artifacts.cddl +++ b/schemas/edict-provider/package/v1/generated/primary/schema.echo-provider-artifacts.cddl @@ -1220,7 +1220,16 @@ echo-operation-semantic-closure = { "target_ir_identity": bstr .size 32, } -echo-operation-lowering-configuration = { +echo-operation-lowering-configuration = + echo-attachment-create-if-absent-lowering-configuration / + echo-compiler-produced-bounded-pure-lowering-configuration + +echo-compiler-produced-bounded-pure-lowering-configuration = { + apiVersion: "echo.operation-lowering-configuration/v1", + programKind: "compiler-produced-bounded-pure/v1", +} + +echo-attachment-create-if-absent-lowering-configuration = { apiVersion: "echo.operation-lowering-configuration/v1", authorityProfile: echo-nonempty-tstr, budgetCeiling: { diff --git a/schemas/edict-provider/package/v1/provider-manifest.echo.json b/schemas/edict-provider/package/v1/provider-manifest.echo.json index dfa934c5..19fe9fa4 100644 --- a/schemas/edict-provider/package/v1/provider-manifest.echo.json +++ b/schemas/edict-provider/package/v1/provider-manifest.echo.json @@ -3,7 +3,7 @@ "providerAbi": "edict:target-provider@1.0.0", "provider": { "coordinate": "echo.edict-provider@1", - "digest": "sha256:5a42ef91640660397957ace0f533974e45ceb2c1124de29683ee96974d0d3201" + "digest": "sha256:4cfd3c0d5589ff6a97d2eac7d2fdcb07b3ab0fa9e546b01c44f1cccd6d8ddc2b" }, "artifacts": [ { @@ -21,7 +21,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:98cfcbf9939646a8cbeb73ab6be6e15656f37579e3b074df523bacdc7c87797a" + "digest": "sha256:4b33ed0000093a08877f3f65c0688d4ee074da1cf12822406b9550068b93680d" } } }, @@ -40,7 +40,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:98cfcbf9939646a8cbeb73ab6be6e15656f37579e3b074df523bacdc7c87797a" + "digest": "sha256:4b33ed0000093a08877f3f65c0688d4ee074da1cf12822406b9550068b93680d" } } }, @@ -59,7 +59,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:98cfcbf9939646a8cbeb73ab6be6e15656f37579e3b074df523bacdc7c87797a" + "digest": "sha256:4b33ed0000093a08877f3f65c0688d4ee074da1cf12822406b9550068b93680d" } } }, @@ -78,7 +78,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:98cfcbf9939646a8cbeb73ab6be6e15656f37579e3b074df523bacdc7c87797a" + "digest": "sha256:4b33ed0000093a08877f3f65c0688d4ee074da1cf12822406b9550068b93680d" } } }, @@ -87,13 +87,13 @@ "artifactKind": "lowerer", "resource": { "coordinate": "echo.dpo.lowerer/component@1", - "digest": "sha256:8eb7891b1eed94c9396b0a3bd188aa35918d5833d24b15c0285eebd829687389" + "digest": "sha256:7902ae7fbe95ab58ac2ebe9bbf4ec9dfcc5262e4f61c69d9aeeac66a51b91c56" }, "source": { "kind": "component", "component": { "coordinate": "echo.dpo.lowerer/component@1", - "digest": "sha256:8eb7891b1eed94c9396b0a3bd188aa35918d5833d24b15c0285eebd829687389" + "digest": "sha256:7902ae7fbe95ab58ac2ebe9bbf4ec9dfcc5262e4f61c69d9aeeac66a51b91c56" } } }, @@ -102,7 +102,7 @@ "artifactKind": "generationProvenance", "resource": { "coordinate": "echo.edict-provider-generation-provenance@1", - "digest": "sha256:2a0a73ce7b3b5e80c9cbfd8a81fb8ec9ded7a22b9997f64f19a13aae003ec27e" + "digest": "sha256:c86a5c0c8de4ae293a7770ce57c847ae40b76c97347339cc409f194377d0dee6" }, "source": { "kind": "generated", @@ -112,7 +112,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:98cfcbf9939646a8cbeb73ab6be6e15656f37579e3b074df523bacdc7c87797a" + "digest": "sha256:4b33ed0000093a08877f3f65c0688d4ee074da1cf12822406b9550068b93680d" } } }, @@ -121,7 +121,7 @@ "artifactKind": "reviewArtifact", "resource": { "coordinate": "echo.edict-provider-generation-review@1", - "digest": "sha256:d95bf46b3f69aa46fda738b926b225dfa6637f9182f69e2518d849d16f5cd9a8" + "digest": "sha256:bae5efa81bf634b6f25feebf839559da0d093f9048fe3f6dd837fa437eef0e3d" }, "source": { "kind": "generated", @@ -131,7 +131,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:98cfcbf9939646a8cbeb73ab6be6e15656f37579e3b074df523bacdc7c87797a" + "digest": "sha256:4b33ed0000093a08877f3f65c0688d4ee074da1cf12822406b9550068b93680d" } } }, @@ -140,7 +140,7 @@ "artifactKind": "artifactSchema", "resource": { "coordinate": "echo.provider-artifacts.cddl@1", - "digest": "sha256:15e2b02f66052eff437973957c728b5ed4ecf709ef9ae094fbe8e4d0ea870209" + "digest": "sha256:e3d1c0d0be879a1a6525420682312115f867badb5c817b10407f2f9b84796747" }, "source": { "kind": "generated", @@ -150,7 +150,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:98cfcbf9939646a8cbeb73ab6be6e15656f37579e3b074df523bacdc7c87797a" + "digest": "sha256:4b33ed0000093a08877f3f65c0688d4ee074da1cf12822406b9550068b93680d" } } }, @@ -169,7 +169,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:98cfcbf9939646a8cbeb73ab6be6e15656f37579e3b074df523bacdc7c87797a" + "digest": "sha256:4b33ed0000093a08877f3f65c0688d4ee074da1cf12822406b9550068b93680d" } } }, diff --git a/xtask/src/provider_lowerer_component.rs b/xtask/src/provider_lowerer_component.rs index cb49de78..202cd64e 100644 --- a/xtask/src/provider_lowerer_component.rs +++ b/xtask/src/provider_lowerer_component.rs @@ -53,7 +53,7 @@ const PINNED_CARGO_COMMIT: &str = "840b83a10fb0e039a83f4d70ad032892c287570a"; /// Reviewed identity that the portable promotion command is permitted to install. pub(crate) const APPROVED_CHECKED_COMPONENT_SHA256: &str = - "8eb7891b1eed94c9396b0a3bd188aa35918d5833d24b15c0285eebd829687389"; + "7902ae7fbe95ab58ac2ebe9bbf4ec9dfcc5262e4f61c69d9aeeac66a51b91c56"; pub(crate) const CHECKED_COMPONENT_REPOSITORY_PATH: &str = "schemas/edict-provider/components/v1/lowerer.echo-dpo.component.wasm"; From 37dd65a0f9e6e40a4aa1303f82d0f0892eefb06c Mon Sep 17 00:00:00 2001 From: James Ross Date: Sun, 23 Aug 2026 05:50:35 -0700 Subject: [PATCH 3/8] feat: package compiler-produced pure programs --- CHANGELOG.md | 18 +- crates/echo-edict-provider-lowerer/README.md | 12 +- .../src/executable_operation.rs | 454 +++++++++++++++- crates/echo-edict-provider-lowerer/src/lib.rs | 4 +- .../tests/executable_operation_package.rs | 254 +++++++++ .../tests/fixtures/generated_echo_dpo.rs | 4 +- .../tests/lowerer_contract.rs | 2 +- crates/echo-edict-provider-verifier/README.md | 12 +- .../src/executable_operation.rs | 484 +++++++++++++++++- .../tests/executable_operation_package.rs | 224 ++++++++ .../lowerer.echo-dpo.component.wasm | Bin 258787 -> 277694 bytes .../verifier.echo-dpo.component.wasm | Bin 277836 -> 297035 bytes .../provenance.provider-generation.json | 2 +- .../evidence/review.provider-generation.json | 2 +- .../schema.echo-provider-artifacts.cddl | 25 +- .../package/v1/provider-manifest.echo.json | 32 +- .../echo-wesley-gen/src/provider_artifacts.rs | 25 +- .../echo-wesley-gen/tests/provider_package.rs | 2 +- .../tests/provider_package_corpus.rs | 4 +- .../tests/provider_primary_artifacts.rs | 99 ++++ .../application-contract-hosting.md | 8 +- schemas/edict-provider/README.md | 15 +- .../edict-provider/components/v1/README.md | 8 +- .../v1/lowerer.echo-dpo.component.wasm | Bin 258787 -> 277694 bytes .../v1/verifier.echo-dpo.component.wasm | Bin 277836 -> 297035 bytes .../provenance.provider-generation.json | 2 +- .../evidence/review.provider-generation.json | 2 +- .../schema.echo-provider-artifacts.cddl | 25 +- .../lowerer.echo-dpo.component.wasm | Bin 258787 -> 277694 bytes .../verifier.echo-dpo.component.wasm | Bin 277836 -> 297035 bytes .../provenance.provider-generation.json | 2 +- .../evidence/review.provider-generation.json | 2 +- .../schema.echo-provider-artifacts.cddl | 25 +- .../package/v1/provider-manifest.echo.json | 32 +- xtask/src/provider_lowerer_component.rs | 4 +- 35 files changed, 1701 insertions(+), 83 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d11008f6..afc141f7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,9 +16,11 @@ - The provider schema now admits the exact two-field `compiler-produced-bounded-pure/v1` target configuration. The configuration contains no operation coordinate, application vocabulary, budget override, - or runtime authority. It advances a schema-valid request to the lowerer, - which still refuses the unsupported program semantics without emitting a - package. + or runtime authority. The checked lowerer now emits a distinct generic pure + package containing the exact compiler Core, lawpack exports, Target IR, and + result projection; the structurally separate verifier independently + reconstructs and accepts that relation. This is executable package + construction evidence, not Echo runtime evaluation or settlement evidence. - Strict filesystem WAL stores now persist a checksummed writer-epoch ledger containing the active epoch, its exact latest closed predecessor, and final LSN and commit-digest evidence. Bounded retention keeps ledger writes and @@ -171,12 +173,12 @@ coordinate-framed exports and adapter references independently from their provider-envelope domains. Its lowerer and verifier components were independently reproduced in copy-only, mount-free designated `linux/amd64` - containers and promoted at 258,787 bytes / - `dfd14015705ff555a7efdb3787ddb0f8b4f304168a9a0ebf324fd25d430bf5cd` - and 277,836 bytes / - `279738ffeea40027eb493c15e873b87cf3aa0677a57f9f03fb824698e532322f`, + containers and promoted at 277,694 bytes / + `20fe92ce8d7bec67f772715cb1f0f3d9ac4f65fe382eff3952f3c368849419dd` + and 297,035 bytes / + `58f9451831338fa39a73d53790fe839037f1a8a1fb5345ffefc334af3ec90413`, respectively. The resulting 25-file package has provider identity - `sha256:6685b7c629ae6955515d69158feb1d7db06af2193de7e5d13e1095101670b977`. + `sha256:b888f0c64a53c68d18c2bd3212589cf2ed9da3fbd551a64a9006184db3dde71f`. This package build proves generic compiler/provider lowering and independent verification. The separate `run-edict-operation` witness now consumes that crossing through Echo-owned runtime execution. diff --git a/crates/echo-edict-provider-lowerer/README.md b/crates/echo-edict-provider-lowerer/README.md index 1fd23887..c43906a0 100644 --- a/crates/echo-edict-provider-lowerer/README.md +++ b/crates/echo-edict-provider-lowerer/README.md @@ -117,8 +117,8 @@ proposal constructor supports mutations and refuses a `Query`; authored reads remain a separate bounded observer/optic path and must never be represented as synthetic mutations. -The refreshed 258,787-byte checked lowerer component has SHA-256 -`7902ae7fbe95ab58ac2ebe9bbf4ec9dfcc5262e4f61c69d9aeeac66a51b91c56` and has +The refreshed 277,694-byte checked lowerer component has SHA-256 +`20fe92ce8d7bec67f772715cb1f0f3d9ac4f65fe382eff3952f3c368849419dd` and has crossed the reproducible promotion boundary. The pinned Edict host admits its generated envelope under the owning `generated-artifact` CDDL root, and the isolated host fixture exercises the exact helper binding, typed codecs, EINT @@ -135,9 +135,11 @@ provider envelope's schema-domain digests. The provider schema also admits the exact zero-choice `compiler-produced-bounded-pure/v1` target configuration. That admission only allows a compiler-produced pure-program request to reach this component. The -current lowerer still returns the typed `UnsupportedSemantics` refusal because -the executable package model remains the bounded anchored create-if-absent -profile. Schema admission is not an execution claim. +lowerer validates the effect-free compiler relation and emits a separate +generic package variant that retains the exact Core, lawpack exports, Target +IR, and result-projection bytes under bounded budget, empty-footprint, and +no-effect authority identities. It does not evaluate those bytes, install the +package, mutate a graph, or settle an Echo Tick. The native Rust model is also the narrow unit-test boundary. A `wasm32` adapter generated from [`wit/edict-target-provider.wit`](wit/edict-target-provider.wit) diff --git a/crates/echo-edict-provider-lowerer/src/executable_operation.rs b/crates/echo-edict-provider-lowerer/src/executable_operation.rs index e29d31f7..5cf9ce72 100644 --- a/crates/echo-edict-provider-lowerer/src/executable_operation.rs +++ b/crates/echo-edict-provider-lowerer/src/executable_operation.rs @@ -33,6 +33,13 @@ const RESULT_PROJECTION_ABI: &str = "edict.result-projection/v1"; const PACKAGE_DOMAIN: &str = "echo.operation-package/v1"; const PACKAGE_ROLE: &str = "executable-operation-package.echo"; +const PURE_PROGRAM_KIND: &str = "compiler-produced-bounded-pure/v1"; +const PURE_PROGRAM_SCHEMA: &str = "echo.compiler-produced-pure-program/v1"; +const PURE_INTERPRETER_PROFILE: &str = + "echo.operation-interpreter.compiler-produced-bounded-pure/v1"; +const PURE_AUTHORITY_PROFILE: &str = "echo.operation.authority.no-effects/v1"; +const PURE_FOOTPRINT_CONTRACT: &str = "echo.operation.footprint.empty/v1"; + const TARGET_INTRINSIC: &str = "echo.dpo@1.anchored-node-attachment-create-if-absent"; const OPERATION_PROFILE: &str = "continuum.profile.create/v1"; const PROGRAM_KIND: &str = "anchored-node-attachment-create-if-absent/v1"; @@ -107,7 +114,6 @@ pub(super) fn is_requested(request: &LoweringRequestV1) -> bool { pub(super) fn lower(request: &LoweringRequestV1) -> Result { validate_requested_output(request)?; let core = validate_bound(&request.core, CORE_DOMAIN)?; - let intent = validate_core(&core, &request.core)?; let closure = select_closure(&request.semantic_inputs)?; let adapter = validate_bound(&closure.adapter.artifact, ADAPTER_DOMAIN)?; @@ -121,6 +127,22 @@ pub(super) fn lower(request: &LoweringRequestV1) -> Result Result, + exports: &CanonicalValueV1, + lawpack: &CanonicalValueV1, + adapter: &CanonicalValueV1, + configuration: &CanonicalValueV1, + result_projection: &CanonicalValueV1, + target_ir: &CanonicalValueV1, +) -> Result { + validate_pure_configuration(configuration)?; + let (intent_name, intent, operation_coordinate) = validate_pure_core(core, &request.core)?; + validate_pure_lawpack( + lawpack, + exports, + adapter, + closure, + &request.target_profile, + intent, + )?; + validate_pure_target_ir(target_ir, request, closure.lawpack, intent_name, intent)?; + validate_pure_result_projection( + result_projection, + closure.result_projection, + target_ir, + intent_name, + &operation_coordinate, + )?; + let package = + encode_pure_package(request, closure, intent_name, intent, &operation_coordinate)?; + Ok(LoweringSuccessV1 { + outputs: vec![LoweringOutputArtifact { + role: PACKAGE_ROLE.to_owned(), + kind: LoweringOutputKind::GeneratedArtifact, + artifact: Artifact { + domain: PACKAGE_DOMAIN.to_owned(), + bytes: package, + }, + logical_path: None, + }], + diagnostics: Vec::new(), + }) +} + +fn is_pure_configuration(value: &CanonicalValueV1) -> bool { + text_field(value, "apiVersion") == Some(CONFIGURATION_ABI) + && text_field(value, "programKind") == Some(PURE_PROGRAM_KIND) +} + +fn validate_pure_configuration(value: &CanonicalValueV1) -> Result<(), ProviderRefusalV1> { + require_exact_fields( + value, + &["apiVersion", "programKind"], + "target-configuration.echo-operation", + )?; + if is_pure_configuration(value) { + Ok(()) + } else { + Err(super::unsupported_semantics( + "target-configuration.echo-operation", + )) + } +} + +fn validate_pure_core<'a>( + value: &'a CanonicalValueV1, + core: &BoundArtifact, +) -> Result<(&'a str, &'a CanonicalValueV1, String), ProviderRefusalV1> { + let coordinate = required_nonempty_text(value, "coordinate", "core.echo-pure-operation")?; + if text_field(value, "apiVersion") != Some(CORE_ABI) || coordinate != core.reference.coordinate + { + return Err(super::unsupported_semantics("core.echo-pure-operation")); + } + let (intent_name, intent) = + single_text_map_entry(required_map(value, "intents", "core.echo-pure-operation")?) + .ok_or_else(|| super::unsupported_semantics("core.echo-pure-operation"))?; + required_nonempty_text( + intent, + "requiredOperationProfile", + "core.echo-pure-operation", + )?; + required_map(intent, "coreEvaluationBudget", "core.echo-pure-operation")?; + let body = required_map(intent, "body", "core.echo-pure-operation")?; + if required_array(body, "nodes", "core.echo-pure-operation")? + .iter() + .any(|node| text_field(node, "kind") != Some("let")) + { + return Err(super::unsupported_semantics("core.echo-pure-operation")); + } + Ok((intent_name, intent, format!("{coordinate}.{intent_name}"))) +} + +fn validate_pure_lawpack( + value: &CanonicalValueV1, + exports_value: &CanonicalValueV1, + adapter_value: &CanonicalValueV1, + closure: &ClosureInputs<'_>, + target_profile: &BoundArtifact, + intent: &CanonicalValueV1, +) -> Result<(), ProviderRefusalV1> { + let id = required_text(value, "id", "lawpack.echo-pure-operation")?; + let version = required_text(value, "version", "lawpack.echo-pure-operation")?; + if text_field(value, "apiVersion") != Some(LAWPACK_DOMAIN) + || format!("{id}@{version}") != closure.lawpack.artifact.reference.coordinate + { + return Err(super::unsupported_semantics("lawpack.echo-pure-operation")); + } + require_owner_resource_ref( + required_map(value, "exports", "lawpack.echo-pure-operation")?, + &closure.exports.artifact, + exports_value, + "lawpack.echo-pure-operation", + )?; + let adapters = required_array(value, "targetAdapters", "lawpack.echo-pure-operation")?; + let selected = adapters + .iter() + .find(|candidate| { + required_map( + candidate, + "acceptedTargetProfile", + "lawpack.echo-pure-operation", + ) + .is_ok_and(|reference| resource_ref_matches(reference, target_profile)) + }) + .ok_or_else(|| super::unsupported_semantics("lawpack.echo-pure-operation"))?; + require_owner_resource_ref( + required_map(selected, "adapter", "lawpack.echo-pure-operation")?, + &closure.adapter.artifact, + adapter_value, + "lawpack.echo-pure-operation", + )?; + if text_field(adapter_value, "apiVersion") != Some(ADAPTER_ABI) + || text_field(adapter_value, "class") != Some("declarative") + { + return Err(super::unsupported_semantics("adapter.echo-pure-operation")); + } + let profiles = required_map( + adapter_value, + "operationProfiles", + "adapter.echo-pure-operation", + )?; + let (_, profile) = single_text_map_entry(profiles) + .ok_or_else(|| super::unsupported_semantics("adapter.echo-pure-operation"))?; + if text_field(profile, "core") != text_field(intent, "requiredOperationProfile") { + return Err(super::unsupported_semantics("adapter.echo-pure-operation")); + } + require_resource_ref( + required_map( + profile, + "targetConfiguration", + "adapter.echo-pure-operation", + )?, + &closure.configuration.artifact, + "adapter.echo-pure-operation", + ) +} + +fn validate_pure_target_ir( + value: &CanonicalValueV1, + request: &LoweringRequestV1, + lawpack: &SemanticInput, + intent_name: &str, + core_intent: &CanonicalValueV1, +) -> Result<(), ProviderRefusalV1> { + if lawpack.artifact.reference.coordinate.is_empty() + || text_field(value, "domain") != Some(TARGET_IR_PAYLOAD_DOMAIN) + || text_field(value, "sourceCoreCoordinate") + != Some(request.core.reference.coordinate.as_str()) + { + return Err(super::unsupported_semantics( + "target-ir.echo-pure-operation", + )); + } + require_resource_ref( + required_map(value, "targetProfile", "target-ir.echo-pure-operation")?, + &request.target_profile, + "target-ir.echo-pure-operation", + )?; + let semantic_closure = required_map(value, "semanticClosure", "target-ir.echo-pure-operation")?; + require_resource_ref( + required_map( + semantic_closure, + "sourceCore", + "target-ir.echo-pure-operation", + )?, + &request.core, + "target-ir.echo-pure-operation", + )?; + let [lawpack_reference] = required_array( + semantic_closure, + "lawpacks", + "target-ir.echo-pure-operation", + )? + .as_slice() else { + return Err(super::unsupported_semantics( + "target-ir.echo-pure-operation", + )); + }; + require_resource_ref( + lawpack_reference, + &lawpack.artifact, + "target-ir.echo-pure-operation", + )?; + let target_intent = required_map_field( + required_map(value, "intents", "target-ir.echo-pure-operation")?, + intent_name, + "target-ir.echo-pure-operation", + )?; + if !required_array(target_intent, "steps", "target-ir.echo-pure-operation")?.is_empty() + || map_field(target_intent, "externalActionRequests").is_some_and( + |requests| !matches!(requests, CanonicalValueV1::Array(values) if values.is_empty()), + ) + || map_field(target_intent, "coreEvaluationBudget") + != map_field(core_intent, "coreEvaluationBudget") + || text_field(target_intent, "operationProfile") + != text_field(core_intent, "requiredOperationProfile") + { + return Err(super::unsupported_semantics( + "target-ir.echo-pure-operation", + )); + } + Ok(()) +} + +fn validate_pure_result_projection( + value: &CanonicalValueV1, + input: &SemanticInput, + target_ir: &CanonicalValueV1, + intent_name: &str, + operation_coordinate: &str, +) -> Result<(), ProviderRefusalV1> { + require_exact_fields( + value, + &[ + "expression", + "maxOutputBytes", + "operationCoordinate", + "outputType", + "schema", + ], + &input.role, + )?; + if text_field(value, "schema") != Some(RESULT_PROJECTION_ABI) + || text_field(value, "operationCoordinate") != Some(operation_coordinate) + || input.artifact.reference.coordinate != operation_coordinate + || required_u64(value, "maxOutputBytes", &input.role)? == 0 + { + return Err(invalid_artifact( + &input.role, + "pure result projection is rebound or unbounded", + )); + } + let target_intent = required_map_field( + required_map(target_ir, "intents", &input.role)?, + intent_name, + &input.role, + )?; + let binding_ids = map_field(target_intent, "pureBindings") + .and_then(|value| match value { + CanonicalValueV1::Array(values) => Some(values), + _ => None, + }) + .map(|bindings| { + bindings + .iter() + .filter_map(|binding| text_field(binding, "id")) + .collect::>() + }) + .unwrap_or_default(); + validate_pure_projection_expression( + required_map(value, "expression", &input.role)?, + &binding_ids, + &input.role, + ) +} + +fn validate_pure_projection_expression( + value: &CanonicalValueV1, + binding_ids: &BTreeSet<&str>, + subject: &str, +) -> Result<(), ProviderRefusalV1> { + match required_text(value, "kind", subject)? { + "record" => { + for (_, expression) in as_map(required_map(value, "fields", subject)?) + .ok_or_else(|| invalid_artifact(subject, "projection fields must be a map"))? + { + validate_pure_projection_expression(expression, binding_ids, subject)?; + } + Ok(()) + } + "source" => { + let source = required_map(value, "source", subject)?; + match required_text(source, "kind", subject)? { + "applicationInput" => Ok(()), + "pureBinding" => { + let id = required_nonempty_text(source, "bindingId", subject)?; + if binding_ids.contains(id) { + Ok(()) + } else { + Err(invalid_artifact( + subject, + "projection references an undeclared pure binding", + )) + } + } + _ => Err(invalid_artifact( + subject, + "pure projection names an effect result", + )), + } + } + _ => Err(invalid_artifact( + subject, + "pure projection has an unsupported expression", + )), + } +} + +fn encode_pure_package( + request: &LoweringRequestV1, + closure: &ClosureInputs<'_>, + intent_name: &str, + intent: &CanonicalValueV1, + operation_coordinate: &str, +) -> Result, ProviderRefusalV1> { + let program = canonical_map([ + ( + "core_artifact", + CanonicalValueV1::Bytes(request.core.artifact.bytes.clone()), + ), + ( + "lawpack_exports_artifact", + CanonicalValueV1::Bytes(closure.exports.artifact.artifact.bytes.clone()), + ), + ("intent", canonical_text(intent_name)), + ("kind", canonical_text(PURE_PROGRAM_KIND)), + ( + "result_projection_artifact", + CanonicalValueV1::Bytes(closure.result_projection.artifact.artifact.bytes.clone()), + ), + ("schema", canonical_text(PURE_PROGRAM_SCHEMA)), + ( + "target_ir_artifact", + CanonicalValueV1::Bytes(closure.target_ir.artifact.artifact.bytes.clone()), + ), + ]); + let program = encode_canonical_cbor_v1(&program) + .map_err(|_| invalid_artifact(PACKAGE_ROLE, "pure program could not be encoded"))?; + let core_identity = hash_from_bound(&request.core)?; + let budget = required_map(intent, "coreEvaluationBudget", operation_coordinate)?; + let semantic_closure = canonical_map([ + ( + "application_schema_coordinate", + canonical_text(&closure.exports.artifact.reference.coordinate), + ), + ( + "application_schema_identity", + hash_value(hash_from_bound(&closure.exports.artifact)?), + ), + ("canonical_meaning_identity", hash_value(core_identity)), + ("core_identity", hash_value(core_identity)), + ( + "edict_source_identity", + hash_value(hash_from_bound(&closure.source.artifact)?), + ), + ( + "lawpack_coordinate", + canonical_text(&closure.lawpack.artifact.reference.coordinate), + ), + ( + "lawpack_identity", + hash_value(hash_from_bound(&closure.lawpack.artifact)?), + ), + ( + "target_ir_identity", + hash_value(hash_from_bound(&closure.target_ir.artifact)?), + ), + ]); + let package = canonical_map([ + ( + "authority_profile_identity", + hash_value(profile_digest(PURE_AUTHORITY_PROFILE)), + ), + ( + "budget_ceiling", + canonical_map([ + ( + "max_allocated_bytes", + map_field(budget, "maxAllocatedBytes") + .cloned() + .ok_or_else(|| super::unsupported_semantics(operation_coordinate))?, + ), + ( + "max_output_bytes", + map_field(budget, "maxOutputBytes") + .cloned() + .ok_or_else(|| super::unsupported_semantics(operation_coordinate))?, + ), + ( + "max_steps", + map_field(budget, "maxSteps") + .cloned() + .ok_or_else(|| super::unsupported_semantics(operation_coordinate))?, + ), + ]), + ), + ( + "footprint_contract_identity", + hash_value(profile_digest(PURE_FOOTPRINT_CONTRACT)), + ), + ( + "interpreter_profile_identity", + hash_value(profile_digest(PURE_INTERPRETER_PROFILE)), + ), + ("operation_coordinate", canonical_text(operation_coordinate)), + ("package_kind", canonical_text(PURE_PROGRAM_KIND)), + ("program", CanonicalValueV1::Bytes(program)), + ("schema", canonical_text(PACKAGE_SCHEMA)), + ("semantic_closure", semantic_closure), + ( + "target_profile_identity", + hash_value(hash_from_bound(&request.target_profile)?), + ), + ]); + encode_canonical_cbor_v1(&package) + .map_err(|_| invalid_artifact(PACKAGE_ROLE, "pure package could not be encoded")) +} + fn validate_requested_output(request: &LoweringRequestV1) -> Result<(), ProviderRefusalV1> { let [output] = request.requested_outputs.as_slice() else { return Err(unsupported_output(PACKAGE_ROLE)); diff --git a/crates/echo-edict-provider-lowerer/src/lib.rs b/crates/echo-edict-provider-lowerer/src/lib.rs index 2b9c3647..5a1e3429 100644 --- a/crates/echo-edict-provider-lowerer/src/lib.rs +++ b/crates/echo-edict-provider-lowerer/src/lib.rs @@ -809,7 +809,7 @@ pub mod echo_dpo { pub const PROVIDER_SCHEMA_COORDINATE: &str = "echo.provider-artifacts.cddl@1"; /// Raw SHA-256 of the exact self-contained provider CDDL bytes. pub const PROVIDER_SCHEMA_SHA256_HEX: &str = - "e3d1c0d0be879a1a6525420682312115f867badb5c817b10407f2f9b84796747"; + "2a9ce322d49cfc2976d44c4866f30a6afb669f8e6c42a50898f9919b352a03c1"; /// Exact generated-artifact profile coordinate owning operation schemas. pub const GENERATED_ARTIFACT_PROFILE: &str = "echo.dpo.registration/v1"; /// Digest-framing domain for the generated-artifact profile. @@ -846,7 +846,7 @@ pub mod echo_dpo { const MUTATION_RULE_NAME: &str = concat!( "cmd/contract/", - "e3d1c0d0be879a1a6525420682312115f867badb5c817b10407f2f9b84796747", + "2a9ce322d49cfc2976d44c4866f30a6afb669f8e6c42a50898f9919b352a03c1", "/3389142194/a.b@1.t" ); const PROVIDER_OPERATIONS: [ProviderOperationV1<'static>; 1] = [ProviderOperationV1 { diff --git a/crates/echo-edict-provider-lowerer/tests/executable_operation_package.rs b/crates/echo-edict-provider-lowerer/tests/executable_operation_package.rs index fb9b8d96..7de023bc 100644 --- a/crates/echo-edict-provider-lowerer/tests/executable_operation_package.rs +++ b/crates/echo-edict-provider-lowerer/tests/executable_operation_package.rs @@ -118,6 +118,31 @@ fn one_provider_binary_lowers_two_unrelated_application_vocabularies() { ); } +#[test] +fn one_provider_binary_packages_two_unrelated_compiler_produced_pure_programs() { + for names in [ALPHA, BETA] { + let success = lower(pure_fixture_request(names)) + .expect("the compiler-produced pure program lowers generically"); + let package = decode_canonical_cbor_v1(&success.outputs[0].artifact.bytes) + .expect("the pure package is canonical"); + assert_eq!( + text_field(&package, "package_kind"), + Some("compiler-produced-bounded-pure/v1") + ); + assert_eq!( + text_field(&package, "operation_coordinate"), + Some(format!("{}.{}", names.application, names.intent).as_str()) + ); + let program = decode_canonical_cbor_v1(bytes_slice(&package, "program")) + .expect("the embedded pure program is canonical"); + assert_eq!( + text_field(&program, "schema"), + Some("echo.compiler-produced-pure-program/v1") + ); + assert_eq!(text_field(&program, "intent"), Some(names.intent)); + } +} + #[test] fn generic_lowering_matches_the_independent_warp_core_package_model() { for names in [ALPHA, BETA] { @@ -367,6 +392,235 @@ fn fixture_request(names: FixtureNames<'_>) -> LoweringRequestV1 { fixture_request_with_configuration(names, configuration(names)) } +fn pure_fixture_request(names: FixtureNames<'_>) -> LoweringRequestV1 { + let target_profile = bound( + "echo.dpo@1", + "edict.target-profile/v1", + TARGET_PROFILE.to_vec(), + ); + let exports = bound( + names.exports, + "edict.lawpack-exports/v1", + canonical_bytes(&owned_map([( + "effects", + CanonicalValueV1::Array(Vec::new()), + )])), + ); + let configuration = bound( + names.configuration, + "echo.operation-lowering-configuration/v1", + canonical_bytes(&owned_map([ + ( + "apiVersion", + text("echo.operation-lowering-configuration/v1"), + ), + ("programKind", text("compiler-produced-bounded-pure/v1")), + ])), + ); + let adapter = bound( + names.adapter, + "edict.lawpack-adapter/v1", + canonical_bytes(&owned_map([ + ("apiVersion", text("edict.lawpack-adapter/v1")), + ("class", text("declarative")), + ( + "operationProfiles", + dynamic_map([( + names.effect, + owned_map([ + ("core", text("continuum.profile.read-only/v1")), + ( + "targetConfiguration", + resource_ref(&configuration.reference), + ), + ]), + )]), + ), + ])), + ); + let lawpack = bound( + names.lawpack, + "edict.lawpack/v1", + canonical_bytes(&lawpack(names, &exports, &adapter, &target_profile)), + ); + let core = bound( + names.application, + "edict.core.module/v1", + canonical_bytes(&pure_core(names)), + ); + let source = bound( + names.application, + "edict.source/v1", + canonical_bytes(&CanonicalValueV1::Bytes( + format!("package {}; intent {};", names.application, names.intent).into_bytes(), + )), + ); + let target_ir = bound( + "echo.span-ir/v1", + "edict.target-ir.artifact/v1", + canonical_bytes(&pure_target_ir(names, &core, &lawpack, &target_profile)), + ); + let result_projection = bound( + &format!("{}.{}", names.application, names.intent), + RESULT_PROJECTION_DOMAIN, + canonical_bytes(&pure_result_projection(names)), + ); + LoweringRequestV1 { + protocol_version: ProtocolVersionV1 { + major: 1, + minor: 0, + patch: 0, + }, + core, + target_profile, + semantic_inputs: vec![ + semantic_input( + "adapter", + SemanticInputKind::Auxiliary("lawpack-adapter".to_owned()), + adapter, + ), + semantic_input( + "exports", + SemanticInputKind::Auxiliary("lawpack-exports".to_owned()), + exports, + ), + semantic_input("lawpack", SemanticInputKind::Lawpack, lawpack), + semantic_input( + "source", + SemanticInputKind::Auxiliary("edict-source".to_owned()), + source, + ), + semantic_input( + "configuration", + SemanticInputKind::Auxiliary("target-configuration".to_owned()), + configuration, + ), + semantic_input( + "target-ir", + SemanticInputKind::Auxiliary("target-ir".to_owned()), + target_ir, + ), + semantic_input( + "result-projection", + SemanticInputKind::Auxiliary("result-projection".to_owned()), + result_projection, + ), + ], + requested_outputs: vec![LoweringOutputRequest { + role: PACKAGE_ROLE.to_owned(), + kind: LoweringOutputKind::GeneratedArtifact, + domain: PACKAGE_DOMAIN.to_owned(), + }], + limits: ResponseLimitsV1 { + max_output_count: 1, + max_diagnostic_count: 0, + max_total_response_bytes: 64 * 1024, + }, + } +} + +fn pure_budget() -> CanonicalValueV1 { + owned_map([ + ("maxSteps", integer(64)), + ("maxAllocatedBytes", integer(4096)), + ("maxOutputBytes", integer(1024)), + ]) +} + +fn pure_core(names: FixtureNames<'_>) -> CanonicalValueV1 { + owned_map([ + ("apiVersion", text("edict.core/v1")), + ("coordinate", text(names.application)), + ( + "intents", + dynamic_map([( + names.intent, + owned_map([ + ("input", text(format!("{}.Input", names.application))), + ("output", text(format!("{}.Output", names.application))), + ( + "requiredOperationProfile", + text("continuum.profile.read-only/v1"), + ), + ("coreEvaluationBudget", pure_budget()), + ( + "body", + owned_map([( + "nodes", + CanonicalValueV1::Array(vec![owned_map([("kind", text("let"))])]), + )]), + ), + ]), + )]), + ), + ]) +} + +fn pure_target_ir( + names: FixtureNames<'_>, + core: &BoundArtifact, + lawpack: &BoundArtifact, + target_profile: &BoundArtifact, +) -> CanonicalValueV1 { + owned_map([ + ("kind", text("targetIrArtifact")), + ("domain", text("echo.span-ir/v1")), + ("targetProfile", resource_ref(&target_profile.reference)), + ("sourceCoreCoordinate", text(names.application)), + ( + "semanticClosure", + owned_map([ + ("sourceCore", resource_ref(&core.reference)), + ( + "lawpacks", + CanonicalValueV1::Array(vec![resource_ref(&lawpack.reference)]), + ), + ]), + ), + ( + "intents", + dynamic_map([( + names.intent, + owned_map([ + ("operationProfile", text("continuum.profile.read-only/v1")), + ("coreEvaluationBudget", pure_budget()), + ("steps", CanonicalValueV1::Array(Vec::new())), + ( + "pureBindings", + CanonicalValueV1::Array(vec![owned_map([("id", text("binding.0"))])]), + ), + ]), + )]), + ), + ]) +} + +fn pure_result_projection(names: FixtureNames<'_>) -> CanonicalValueV1 { + owned_map([ + ("schema", text("edict.result-projection/v1")), + ( + "operationCoordinate", + text(format!("{}.{}", names.application, names.intent)), + ), + ("outputType", text(format!("{}.Output", names.application))), + ("maxOutputBytes", integer(1024)), + ( + "expression", + owned_map([ + ("kind", text("source")), + ( + "source", + owned_map([ + ("kind", text("pureBinding")), + ("bindingId", text("binding.0")), + ]), + ), + ("path", CanonicalValueV1::Array(Vec::new())), + ]), + ), + ]) +} + fn fixture_request_with_configuration( names: FixtureNames<'_>, configuration_value: CanonicalValueV1, diff --git a/crates/echo-edict-provider-lowerer/tests/fixtures/generated_echo_dpo.rs b/crates/echo-edict-provider-lowerer/tests/fixtures/generated_echo_dpo.rs index 9a5fa058..76307465 100644 --- a/crates/echo-edict-provider-lowerer/tests/fixtures/generated_echo_dpo.rs +++ b/crates/echo-edict-provider-lowerer/tests/fixtures/generated_echo_dpo.rs @@ -71,7 +71,7 @@ pub mod echo_dpo { pub const PROVIDER_SCHEMA_COORDINATE: &str = "echo.provider-artifacts.cddl@1"; /// Raw SHA-256 of the exact self-contained provider CDDL bytes. pub const PROVIDER_SCHEMA_SHA256_HEX: &str = - "e3d1c0d0be879a1a6525420682312115f867badb5c817b10407f2f9b84796747"; + "2a9ce322d49cfc2976d44c4866f30a6afb669f8e6c42a50898f9919b352a03c1"; /// Exact generated-artifact profile coordinate owning operation schemas. pub const GENERATED_ARTIFACT_PROFILE: &str = "echo.dpo.registration/v1"; /// Digest-framing domain for the generated-artifact profile. @@ -108,7 +108,7 @@ pub mod echo_dpo { const MUTATION_RULE_NAME: &str = concat!( "cmd/contract/", - "e3d1c0d0be879a1a6525420682312115f867badb5c817b10407f2f9b84796747", + "2a9ce322d49cfc2976d44c4866f30a6afb669f8e6c42a50898f9919b352a03c1", "/3389142194/a.b@1.t" ); const PROVIDER_OPERATIONS: [ProviderOperationV1<'static>; 1] = [ProviderOperationV1 { diff --git a/crates/echo-edict-provider-lowerer/tests/lowerer_contract.rs b/crates/echo-edict-provider-lowerer/tests/lowerer_contract.rs index 75b6afc4..60428caf 100644 --- a/crates/echo-edict-provider-lowerer/tests/lowerer_contract.rs +++ b/crates/echo-edict-provider-lowerer/tests/lowerer_contract.rs @@ -45,7 +45,7 @@ const REVIEW_MEDIA_TYPE: &str = "application/json"; const GENERATED_SOURCE_PATH: &str = "generated/echo_dpo.rs"; const REVIEW_PATH: &str = "review/echo_dpo.json"; const EXPECTED_PROVIDER_SCHEMA_SHA256_HEX: &str = - "e3d1c0d0be879a1a6525420682312115f867badb5c817b10407f2f9b84796747"; + "2a9ce322d49cfc2976d44c4866f30a6afb669f8e6c42a50898f9919b352a03c1"; const EXPECTED_OPERATION_ID_LAW: &str = "echo.semantic-operation-id.fnv1-32/v1"; const EXPECTED_OPERATION_ID: u32 = 3_389_142_194; diff --git a/crates/echo-edict-provider-verifier/README.md b/crates/echo-edict-provider-verifier/README.md index 61cd38ae..4b78ff5e 100644 --- a/crates/echo-edict-provider-verifier/README.md +++ b/crates/echo-edict-provider-verifier/README.md @@ -34,11 +34,19 @@ runtime expression and application-input paths, binds their identity into the expected package, and names that exact projection in the accepted report. Application vocabulary is treated only as opaque authored data. +For `compiler-produced-bounded-pure/v1`, the verifier independently enforces +the zero-choice configuration, effect-free Core and Target IR shapes, exact +budget and closure bindings, pure-binding result projection, and embedded +compiler artifact bytes. It reconstructs the distinct generic pure package +without calling the lowerer and rejects canonical package substitution. An +accepted report proves this package relation only; it does not prove runtime +evaluation or an Echo consequence. + The `wasm32` guest adapter vendors Edict's exact frozen `edict:target-provider/verifier@1.0.0` WIT world and performs only exhaustive -transport-to-model conversion. Its reproducibly built 277,836-byte checked +transport-to-model conversion. Its reproducibly built 297,035-byte checked component has SHA-256 -`279738ffeea40027eb493c15e873b87cf3aa0677a57f9f03fb824698e532322f`. +`58f9451831338fa39a73d53790fe839037f1a8a1fb5345ffefc334af3ec90413`. Component identity and admitted host replay remain separate propositions: the pinned Edict host preflights the request artifacts and declared output schema, invokes the checked component, then admits and manifests each returned accepted diff --git a/crates/echo-edict-provider-verifier/src/executable_operation.rs b/crates/echo-edict-provider-verifier/src/executable_operation.rs index c420bbd2..59d652c0 100644 --- a/crates/echo-edict-provider-verifier/src/executable_operation.rs +++ b/crates/echo-edict-provider-verifier/src/executable_operation.rs @@ -37,6 +37,13 @@ const REPORT_DOMAIN: &str = "echo.operation-package-verifier-report/v1"; const REPORT_ROLE: &str = "verifier-report.echo-operation"; const REPORT_ABI: &str = "echo.operation-package-verifier-report/v1"; +const PURE_PROGRAM_KIND: &str = "compiler-produced-bounded-pure/v1"; +const PURE_PROGRAM_SCHEMA: &str = "echo.compiler-produced-pure-program/v1"; +const PURE_INTERPRETER_PROFILE: &str = + "echo.operation-interpreter.compiler-produced-bounded-pure/v1"; +const PURE_AUTHORITY_PROFILE: &str = "echo.operation.authority.no-effects/v1"; +const PURE_FOOTPRINT_CONTRACT: &str = "echo.operation.footprint.empty/v1"; + const TARGET_INTRINSIC: &str = "echo.dpo@1.anchored-node-attachment-create-if-absent"; const OPERATION_PROFILE: &str = "continuum.profile.create/v1"; const PROGRAM_KIND: &str = "anchored-node-attachment-create-if-absent/v1"; @@ -117,7 +124,6 @@ pub(super) fn verify( validate_target_profile(&request.target_profile)?; validate_requested_output(request)?; let core = validate_bound(&request.core, CORE_DOMAIN)?; - let intent = validate_core(&core, &request.core)?; let target_ir = validate_bound(&request.target_ir, TARGET_IR_DOMAIN)?; let closure = select_closure(&request.semantic_inputs)?; @@ -132,6 +138,23 @@ pub(super) fn verify( RESULT_PROJECTION_DOMAIN, )?; + if is_pure_configuration(&configuration) { + return verify_compiler_produced_pure( + request, + &core, + &target_ir, + &closure, + &package, + &exports, + &lawpack, + &adapter, + &configuration, + &result_projection, + ); + } + + let intent = validate_core(&core, &request.core)?; + let source = validate_source(&source, closure.source, &request.core)?; let semantic_effect = semantic_lawpack_member_coordinate(source, closure.lawpack, intent.effect_coordinate)?; @@ -207,6 +230,465 @@ pub(super) fn verify( }) } +#[allow(clippy::too_many_arguments)] +fn verify_compiler_produced_pure( + request: &VerificationRequestV1, + core: &CanonicalValueV1, + target_ir: &CanonicalValueV1, + closure: &ClosureInputs<'_>, + package: &CanonicalValueV1, + exports: &CanonicalValueV1, + lawpack: &CanonicalValueV1, + adapter: &CanonicalValueV1, + configuration: &CanonicalValueV1, + result_projection: &CanonicalValueV1, +) -> Result { + validate_pure_configuration(configuration)?; + let (intent_name, intent, operation_coordinate) = validate_pure_core(core, &request.core)?; + validate_pure_lawpack( + lawpack, + exports, + adapter, + closure, + &request.target_profile, + intent, + request, + )?; + validate_pure_target_ir(target_ir, request, closure.lawpack, intent_name, intent)?; + validate_pure_result_projection( + result_projection, + closure.result_projection, + target_ir, + intent_name, + &operation_coordinate, + )?; + let expected = + encode_expected_pure_package(request, closure, intent_name, intent, &operation_coordinate)?; + let actual = encode_canonical_cbor_v1(package) + .map_err(|_| invalid_artifact(PACKAGE_COORDINATE, "package could not be re-encoded"))?; + let (outcome, diagnostics, diagnostic_bytes) = if actual == expected { + ("accepted", Vec::new(), Vec::new()) + } else { + let diagnostic = Diagnostic { + code: "echo.verifier.executable-operation-package-mismatch".to_owned(), + severity: DiagnosticSeverity::Error, + message: "Executable package does not preserve the compiler and pure target relation" + .to_owned(), + repair: None, + }; + ( + "rejected", + vec![diagnostic], + b"echo.verifier.executable-operation-package-mismatch".to_vec(), + ) + }; + let report = build_report( + &closure.package.artifact.reference, + &request.target_ir.reference, + &closure.result_projection.artifact.reference, + outcome, + diagnostic_bytes, + )?; + Ok(VerificationSuccessV1 { + outputs: vec![VerificationOutputArtifact { + role: REPORT_ROLE.to_owned(), + kind: VerificationOutputKind::VerifierReport, + artifact: Artifact { + domain: REPORT_DOMAIN.to_owned(), + bytes: report, + }, + logical_path: None, + }], + diagnostics, + }) +} + +fn is_pure_configuration(value: &CanonicalValueV1) -> bool { + text_field(value, "apiVersion") == Some(CONFIGURATION_ABI) + && text_field(value, "programKind") == Some(PURE_PROGRAM_KIND) +} + +fn validate_pure_configuration(value: &CanonicalValueV1) -> Result<(), ProviderRefusalV1> { + require_exact_fields( + value, + &["apiVersion", "programKind"], + "target-configuration.echo-operation", + )?; + if is_pure_configuration(value) { + Ok(()) + } else { + Err(super::unsupported_semantics( + "target-configuration.echo-operation", + )) + } +} + +fn validate_pure_core<'a>( + value: &'a CanonicalValueV1, + core: &BoundArtifact, +) -> Result<(&'a str, &'a CanonicalValueV1, String), ProviderRefusalV1> { + let coordinate = required_nonempty_text(value, "coordinate", "core.echo-pure-operation")?; + if text_field(value, "apiVersion") != Some(CORE_ABI) || coordinate != core.reference.coordinate + { + return Err(super::unsupported_semantics("core.echo-pure-operation")); + } + let (intent_name, intent) = + single_text_map_entry(required_map(value, "intents", "core.echo-pure-operation")?) + .ok_or_else(|| super::unsupported_semantics("core.echo-pure-operation"))?; + required_nonempty_text( + intent, + "requiredOperationProfile", + "core.echo-pure-operation", + )?; + required_map(intent, "coreEvaluationBudget", "core.echo-pure-operation")?; + let body = required_map(intent, "body", "core.echo-pure-operation")?; + if required_array(body, "nodes", "core.echo-pure-operation")? + .iter() + .any(|node| text_field(node, "kind") != Some("let")) + { + return Err(super::unsupported_semantics("core.echo-pure-operation")); + } + Ok((intent_name, intent, format!("{coordinate}.{intent_name}"))) +} + +#[allow(clippy::too_many_arguments)] +fn validate_pure_lawpack( + value: &CanonicalValueV1, + exports_value: &CanonicalValueV1, + adapter_value: &CanonicalValueV1, + closure: &ClosureInputs<'_>, + target_profile: &BoundArtifact, + intent: &CanonicalValueV1, + _request: &VerificationRequestV1, +) -> Result<(), ProviderRefusalV1> { + let id = required_text(value, "id", "lawpack.echo-pure-operation")?; + let version = required_text(value, "version", "lawpack.echo-pure-operation")?; + if text_field(value, "apiVersion") != Some(LAWPACK_DOMAIN) + || format!("{id}@{version}") != closure.lawpack.artifact.reference.coordinate + { + return Err(super::unsupported_semantics("lawpack.echo-pure-operation")); + } + require_owner_resource_ref( + required_map(value, "exports", "lawpack.echo-pure-operation")?, + &closure.exports.artifact, + exports_value, + "lawpack.echo-pure-operation", + )?; + let adapters = required_array(value, "targetAdapters", "lawpack.echo-pure-operation")?; + let selected = adapters + .iter() + .find(|candidate| { + required_map( + candidate, + "acceptedTargetProfile", + "lawpack.echo-pure-operation", + ) + .is_ok_and(|reference| resource_ref_matches(reference, target_profile)) + }) + .ok_or_else(|| super::unsupported_semantics("lawpack.echo-pure-operation"))?; + require_owner_resource_ref( + required_map(selected, "adapter", "lawpack.echo-pure-operation")?, + &closure.adapter.artifact, + adapter_value, + "lawpack.echo-pure-operation", + )?; + if text_field(adapter_value, "apiVersion") != Some(ADAPTER_ABI) + || text_field(adapter_value, "class") != Some("declarative") + { + return Err(super::unsupported_semantics("adapter.echo-pure-operation")); + } + let profiles = required_map( + adapter_value, + "operationProfiles", + "adapter.echo-pure-operation", + )?; + let (_, profile) = single_text_map_entry(profiles) + .ok_or_else(|| super::unsupported_semantics("adapter.echo-pure-operation"))?; + if text_field(profile, "core") != text_field(intent, "requiredOperationProfile") { + return Err(super::unsupported_semantics("adapter.echo-pure-operation")); + } + require_resource_ref( + required_map( + profile, + "targetConfiguration", + "adapter.echo-pure-operation", + )?, + &closure.configuration.artifact, + "adapter.echo-pure-operation", + ) +} + +fn validate_pure_target_ir( + value: &CanonicalValueV1, + request: &VerificationRequestV1, + lawpack: &SemanticInput, + intent_name: &str, + core_intent: &CanonicalValueV1, +) -> Result<(), ProviderRefusalV1> { + if request.target_ir.reference.coordinate != TARGET_IR_COORDINATE + || text_field(value, "domain") != Some(TARGET_IR_PAYLOAD_DOMAIN) + || text_field(value, "sourceCoreCoordinate") + != Some(request.core.reference.coordinate.as_str()) + { + return Err(super::unsupported_semantics( + "target-ir.echo-pure-operation", + )); + } + require_resource_ref( + required_map(value, "targetProfile", "target-ir.echo-pure-operation")?, + &request.target_profile, + "target-ir.echo-pure-operation", + )?; + let semantic_closure = required_map(value, "semanticClosure", "target-ir.echo-pure-operation")?; + require_resource_ref( + required_map( + semantic_closure, + "sourceCore", + "target-ir.echo-pure-operation", + )?, + &request.core, + "target-ir.echo-pure-operation", + )?; + let [lawpack_reference] = required_array( + semantic_closure, + "lawpacks", + "target-ir.echo-pure-operation", + )? + .as_slice() else { + return Err(super::unsupported_semantics( + "target-ir.echo-pure-operation", + )); + }; + require_resource_ref( + lawpack_reference, + &lawpack.artifact, + "target-ir.echo-pure-operation", + )?; + let target_intent = required_map_field( + required_map(value, "intents", "target-ir.echo-pure-operation")?, + intent_name, + "target-ir.echo-pure-operation", + )?; + if !required_array(target_intent, "steps", "target-ir.echo-pure-operation")?.is_empty() + || map_field(target_intent, "externalActionRequests").is_some_and( + |requests| !matches!(requests, CanonicalValueV1::Array(values) if values.is_empty()), + ) + || map_field(target_intent, "coreEvaluationBudget") + != map_field(core_intent, "coreEvaluationBudget") + || text_field(target_intent, "operationProfile") + != text_field(core_intent, "requiredOperationProfile") + { + return Err(super::unsupported_semantics( + "target-ir.echo-pure-operation", + )); + } + Ok(()) +} + +fn validate_pure_result_projection( + value: &CanonicalValueV1, + input: &SemanticInput, + target_ir: &CanonicalValueV1, + intent_name: &str, + operation_coordinate: &str, +) -> Result<(), ProviderRefusalV1> { + require_exact_fields( + value, + &[ + "expression", + "maxOutputBytes", + "operationCoordinate", + "outputType", + "schema", + ], + &input.role, + )?; + if text_field(value, "schema") != Some(RESULT_PROJECTION_ABI) + || text_field(value, "operationCoordinate") != Some(operation_coordinate) + || input.artifact.reference.coordinate != operation_coordinate + || required_u64(value, "maxOutputBytes", &input.role)? == 0 + { + return Err(invalid_artifact( + &input.role, + "pure result projection is rebound or unbounded", + )); + } + let target_intent = required_map_field( + required_map(target_ir, "intents", &input.role)?, + intent_name, + &input.role, + )?; + let binding_ids = map_field(target_intent, "pureBindings") + .and_then(|value| match value { + CanonicalValueV1::Array(values) => Some(values), + _ => None, + }) + .map(|bindings| { + bindings + .iter() + .filter_map(|binding| text_field(binding, "id")) + .collect::>() + }) + .unwrap_or_default(); + validate_pure_projection_expression( + required_map(value, "expression", &input.role)?, + &binding_ids, + &input.role, + ) +} + +fn validate_pure_projection_expression( + value: &CanonicalValueV1, + binding_ids: &BTreeSet<&str>, + subject: &str, +) -> Result<(), ProviderRefusalV1> { + match required_text(value, "kind", subject)? { + "record" => { + for (_, expression) in as_map(required_map(value, "fields", subject)?) + .ok_or_else(|| invalid_artifact(subject, "projection fields must be a map"))? + { + validate_pure_projection_expression(expression, binding_ids, subject)?; + } + Ok(()) + } + "source" => { + let source = required_map(value, "source", subject)?; + match required_text(source, "kind", subject)? { + "applicationInput" => Ok(()), + "pureBinding" => { + let id = required_nonempty_text(source, "bindingId", subject)?; + if binding_ids.contains(id) { + Ok(()) + } else { + Err(invalid_artifact( + subject, + "projection references an undeclared pure binding", + )) + } + } + _ => Err(invalid_artifact( + subject, + "pure projection names an effect result", + )), + } + } + _ => Err(invalid_artifact( + subject, + "pure projection has an unsupported expression", + )), + } +} + +fn encode_expected_pure_package( + request: &VerificationRequestV1, + closure: &ClosureInputs<'_>, + intent_name: &str, + intent: &CanonicalValueV1, + operation_coordinate: &str, +) -> Result, ProviderRefusalV1> { + let program = canonical_map([ + ( + "core_artifact", + CanonicalValueV1::Bytes(request.core.artifact.bytes.clone()), + ), + ( + "lawpack_exports_artifact", + CanonicalValueV1::Bytes(closure.exports.artifact.artifact.bytes.clone()), + ), + ("intent", canonical_text(intent_name)), + ("kind", canonical_text(PURE_PROGRAM_KIND)), + ( + "result_projection_artifact", + CanonicalValueV1::Bytes(closure.result_projection.artifact.artifact.bytes.clone()), + ), + ("schema", canonical_text(PURE_PROGRAM_SCHEMA)), + ( + "target_ir_artifact", + CanonicalValueV1::Bytes(request.target_ir.artifact.bytes.clone()), + ), + ]); + let program = encode_canonical_cbor_v1(&program) + .map_err(|_| invalid_artifact(PACKAGE_COORDINATE, "pure program could not be encoded"))?; + let core_identity = hash_from_bound(&request.core)?; + let budget = required_map(intent, "coreEvaluationBudget", operation_coordinate)?; + let semantic_closure = canonical_map([ + ( + "application_schema_coordinate", + canonical_text(&closure.exports.artifact.reference.coordinate), + ), + ( + "application_schema_identity", + hash_value(hash_from_bound(&closure.exports.artifact)?), + ), + ("canonical_meaning_identity", hash_value(core_identity)), + ("core_identity", hash_value(core_identity)), + ( + "edict_source_identity", + hash_value(hash_from_bound(&closure.source.artifact)?), + ), + ( + "lawpack_coordinate", + canonical_text(&closure.lawpack.artifact.reference.coordinate), + ), + ( + "lawpack_identity", + hash_value(hash_from_bound(&closure.lawpack.artifact)?), + ), + ( + "target_ir_identity", + hash_value(hash_from_bound(&request.target_ir)?), + ), + ]); + let package = canonical_map([ + ( + "authority_profile_identity", + hash_value(profile_digest(PURE_AUTHORITY_PROFILE)), + ), + ( + "budget_ceiling", + canonical_map([ + ( + "max_allocated_bytes", + map_field(budget, "maxAllocatedBytes") + .cloned() + .ok_or_else(|| super::unsupported_semantics(operation_coordinate))?, + ), + ( + "max_output_bytes", + map_field(budget, "maxOutputBytes") + .cloned() + .ok_or_else(|| super::unsupported_semantics(operation_coordinate))?, + ), + ( + "max_steps", + map_field(budget, "maxSteps") + .cloned() + .ok_or_else(|| super::unsupported_semantics(operation_coordinate))?, + ), + ]), + ), + ( + "footprint_contract_identity", + hash_value(profile_digest(PURE_FOOTPRINT_CONTRACT)), + ), + ( + "interpreter_profile_identity", + hash_value(profile_digest(PURE_INTERPRETER_PROFILE)), + ), + ("operation_coordinate", canonical_text(operation_coordinate)), + ("package_kind", canonical_text(PURE_PROGRAM_KIND)), + ("program", CanonicalValueV1::Bytes(program)), + ("schema", canonical_text(PACKAGE_SCHEMA)), + ("semantic_closure", semantic_closure), + ( + "target_profile_identity", + hash_value(hash_from_bound(&request.target_profile)?), + ), + ]); + encode_canonical_cbor_v1(&package) + .map_err(|_| invalid_artifact(PACKAGE_COORDINATE, "pure package could not be encoded")) +} + fn validate_requested_output(request: &VerificationRequestV1) -> Result<(), ProviderRefusalV1> { let [output] = request.requested_outputs.as_slice() else { return Err(unsupported_output(REPORT_ROLE)); diff --git a/crates/echo-edict-provider-verifier/tests/executable_operation_package.rs b/crates/echo-edict-provider-verifier/tests/executable_operation_package.rs index 9c27b5c3..ac853b7a 100644 --- a/crates/echo-edict-provider-verifier/tests/executable_operation_package.rs +++ b/crates/echo-edict-provider-verifier/tests/executable_operation_package.rs @@ -127,6 +127,32 @@ fn verifier_accepts_generic_lowerer_output_for_two_application_vocabularies() { } } +#[test] +fn verifier_independently_accepts_and_tamper_rejects_generic_pure_packages() { + for names in FIXTURES { + let fixture = pure_raw_fixture(names); + let package = lower_package(names, &fixture); + let verified = verifier::verify(verification_request(names, &fixture, package.clone())) + .expect("the independent verifier completes"); + assert!(verified.diagnostics.is_empty()); + let report = decode_canonical_cbor_v1(&verified.outputs[0].artifact.bytes) + .expect("the acceptance report is canonical"); + assert_eq!(text_field(&report, "outcome"), Some("accepted")); + + let mut substituted = decode_canonical_cbor_v1(&package) + .expect("the compiler-produced pure package is canonical"); + *map_field_mut(&mut substituted, "program") = CanonicalValueV1::Bytes(vec![0xa0]); + let substituted = encode_canonical_cbor_v1(&substituted) + .expect("the substituted package remains canonical"); + let rejected = verifier::verify(verification_request(names, &fixture, substituted)) + .expect("package mismatch is a completed verification"); + assert_eq!( + rejected.diagnostics[0].code, + "echo.verifier.executable-operation-package-mismatch" + ); + } +} + #[test] fn verifier_rejects_a_canonical_package_with_a_rebound_operation_coordinate() { let names = FIXTURES[0]; @@ -446,6 +472,200 @@ fn raw_fixture(names: FixtureNames<'_>) -> RawFixture { raw_fixture_with_values(names, configuration(names), result_projection(names)) } +fn pure_raw_fixture(names: FixtureNames<'_>) -> RawFixture { + let target_profile = TARGET_PROFILE.to_vec(); + let target_profile_ref = raw_ref("echo.dpo@1", "edict.target-profile/v1", &target_profile); + let exports = canonical_bytes(&owned_map([( + "effects", + CanonicalValueV1::Array(Vec::new()), + )])); + let exports_ref = raw_ref(names.exports, "edict.lawpack-exports/v1", &exports); + let configuration = canonical_bytes(&owned_map([ + ( + "apiVersion", + text("echo.operation-lowering-configuration/v1"), + ), + ("programKind", text("compiler-produced-bounded-pure/v1")), + ])); + let configuration_ref = raw_ref( + names.configuration, + "echo.operation-lowering-configuration/v1", + &configuration, + ); + let adapter = canonical_bytes(&owned_map([ + ("apiVersion", text("edict.lawpack-adapter/v1")), + ("class", text("declarative")), + ( + "operationProfiles", + dynamic_map([( + names.effect, + owned_map([ + ("core", text("continuum.profile.read-only/v1")), + ("targetConfiguration", resource_ref(&configuration_ref)), + ]), + )]), + ), + ])); + let adapter_ref = raw_ref(names.adapter, "edict.lawpack-adapter/v1", &adapter); + let lawpack = canonical_bytes(&pure_lawpack( + names, + &exports_ref, + &exports, + &adapter_ref, + &adapter, + &target_profile_ref, + )); + let lawpack_ref = raw_ref(names.lawpack, "edict.lawpack/v1", &lawpack); + let core = canonical_bytes(&pure_core(names)); + let core_ref = raw_ref(names.application, "edict.core.module/v1", &core); + let source = canonical_bytes(&CanonicalValueV1::Bytes( + format!("package {}; intent {};", names.application, names.intent).into_bytes(), + )); + let target_ir = canonical_bytes(&pure_target_ir( + names, + &core_ref, + &lawpack_ref, + &target_profile_ref, + )); + let result_projection = canonical_bytes(&pure_result_projection(names)); + RawFixture { + core, + target_profile, + adapter, + exports, + lawpack, + source, + configuration, + target_ir, + result_projection, + } +} + +fn pure_budget() -> CanonicalValueV1 { + owned_map([ + ("maxSteps", integer(64)), + ("maxAllocatedBytes", integer(4096)), + ("maxOutputBytes", integer(1024)), + ]) +} + +fn pure_core(names: FixtureNames<'_>) -> CanonicalValueV1 { + owned_map([ + ("apiVersion", text("edict.core/v1")), + ("coordinate", text(names.application)), + ( + "intents", + dynamic_map([( + names.intent, + owned_map([ + ("input", text(format!("{}.Input", names.application))), + ("output", text(format!("{}.Output", names.application))), + ( + "requiredOperationProfile", + text("continuum.profile.read-only/v1"), + ), + ("coreEvaluationBudget", pure_budget()), + ( + "body", + owned_map([( + "nodes", + CanonicalValueV1::Array(vec![owned_map([("kind", text("let"))])]), + )]), + ), + ]), + )]), + ), + ]) +} + +fn pure_lawpack( + names: FixtureNames<'_>, + exports_ref: &RawRef, + exports: &[u8], + adapter_ref: &RawRef, + adapter: &[u8], + target_profile: &RawRef, +) -> CanonicalValueV1 { + owned_map([ + ("apiVersion", text("edict.lawpack/v1")), + ("id", text(names.lawpack_id)), + ("version", text(names.lawpack_version)), + ("exports", owner_resource_ref(exports_ref, exports)), + ( + "targetAdapters", + CanonicalValueV1::Array(vec![owned_map([ + ("adapter", owner_resource_ref(adapter_ref, adapter)), + ("acceptedTargetProfile", resource_ref(target_profile)), + ])]), + ), + ]) +} + +fn pure_target_ir( + names: FixtureNames<'_>, + core: &RawRef, + lawpack: &RawRef, + target_profile: &RawRef, +) -> CanonicalValueV1 { + owned_map([ + ("kind", text("targetIrArtifact")), + ("domain", text("echo.span-ir/v1")), + ("targetProfile", resource_ref(target_profile)), + ("sourceCoreCoordinate", text(names.application)), + ( + "semanticClosure", + owned_map([ + ("sourceCore", resource_ref(core)), + ( + "lawpacks", + CanonicalValueV1::Array(vec![resource_ref(lawpack)]), + ), + ]), + ), + ( + "intents", + dynamic_map([( + names.intent, + owned_map([ + ("operationProfile", text("continuum.profile.read-only/v1")), + ("coreEvaluationBudget", pure_budget()), + ("steps", CanonicalValueV1::Array(Vec::new())), + ( + "pureBindings", + CanonicalValueV1::Array(vec![owned_map([("id", text("binding.0"))])]), + ), + ]), + )]), + ), + ]) +} + +fn pure_result_projection(names: FixtureNames<'_>) -> CanonicalValueV1 { + owned_map([ + ("schema", text("edict.result-projection/v1")), + ( + "operationCoordinate", + text(format!("{}.{}", names.application, names.intent)), + ), + ("outputType", text(format!("{}.Output", names.application))), + ("maxOutputBytes", integer(1024)), + ( + "expression", + owned_map([ + ("kind", text("source")), + ( + "source", + owned_map([ + ("kind", text("pureBinding")), + ("bindingId", text("binding.0")), + ]), + ), + ("path", CanonicalValueV1::Array(Vec::new())), + ]), + ), + ]) +} + fn raw_fixture_with_values( names: FixtureNames<'_>, configuration_value: CanonicalValueV1, @@ -911,6 +1131,10 @@ fn map(entries: [(&str, CanonicalValueV1); N]) -> CanonicalValue dynamic_map(entries) } +fn owned_map(entries: [(&str, CanonicalValueV1); N]) -> CanonicalValueV1 { + dynamic_map(entries) +} + fn dynamic_map<'a>( entries: impl IntoIterator, ) -> CanonicalValueV1 { diff --git a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/components/lowerer.echo-dpo.component.wasm b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/components/lowerer.echo-dpo.component.wasm index e8fd3b619ee891aa061312204d734b6ce762f411..c2063339da38f141f3d9017ca8fa10f8d0166049 100644 GIT binary patch delta 70709 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

n>|+4YZUt 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

KMDM{wLW3o%7mgh``xL{O-RzA64pqISixwzF+Q? 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 X32v#BUMTfe{QveR%SzjO7mEJ_;53kR delta 75308 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

n>|+4YZUt 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

KMDM{wLW3o%7mgh``xL{O-RzA64pqISixwzF+Q? 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 X32v#BUMTfe{QveR%SzjO7mEJ_;53kR delta 75308 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

n>|+4YZUt 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

KMDM{wLW3o%7mgh``xL{O-RzA64pqISixwzF+Q? z5yX>2^C%z^6@ig&?{p!7+n_nd(l?d6F`*<`Kt{UY8f zaNlOP=A^gfq%r3J2``h@s6JLjbaUwET)c|7mxqW{8AN^xS$D=$@%V?I+hcfMCsA#` zI`?g%ors)mAFOL=@Gn1i&w=gBV>CHtj5z4lYv=Biv2v8kiWDW;X0tCgU5_b>O>_Qa z)6F^Q)|_;`lP%MflWxvQAKjYsqdsaXBoEMI+_oUHr`bfp88(3cBS^M9{wIxym!s*_1Q+<%?p zc*QVCn7sI_{{YGbqn>nn`v?3HApN>OE>kc0gD;_Ry5y1{;O~o<{1rL#GAEbcB;cZ; zPt?81?_K{Fb))~!`hB{8Nt;U_A%#hodyBtk!=x(HbgBq8I2}d%Dg24Lfj_t55H;Q3 z+AsiryG@=B3p!`=xOO0J_CJ{X6WFcmfUuiFU%(|To<-@CD=f7hi$)cT;JR1He3 zlxfslf6e8)`2(l?1m5ZO{zd9hf6J7)keoHQ>{j_0@lB?Brz+Wes%NUyeX=3&RyosA z;MbS$)e+L=0_8M+*%du8?^u1s{pt}w>giuSwO{2U9igo-&>rzGxbB1y-^!9%nozFB zd-P3bYvlaruei)V|FRnYw^Muhb1&=f-!-+TV=(f6bmfUT5bnx@aPZ9*!l#WNhBY!b z?UQWIDrey0~ba_vI;q=3D>Mh8tw?Nlhe7%3V z3JG}ajXnJrZ>NlpfAUcL-Tj_3_;>aV&Xi02`W46f6CXGRQ=iiw*&8b2g83ux^7@s7 z@%QLvj>qfon}oj&j}BJP`WqMT4}odByN_DspSFCw|JxeKJjgdJ05xvEq_}Q9}jgxNxk)fZ{Oe(->t#rY!GVbJ8)Jl z@3hH-pI%bAk~HQVtqAetR4K-4%zfJ5`phVQ|7Y%~e5%0PXYlra!Hm{tEB*Ra%}9CA z-Y&l%#oybWTd6iI{@L^O3Xiu}Uyq0X>lcs4-=|-sEg$d_8F|r5zr*VfUpkJjC#>P? zo7VgUe?MG9%X`Gj_4xbz%U|_dd0%sV#Ov+d`sQ*x2YZjp^Vx{|g8%kk7|AGKJ2v?V z4X{_^#oQ14AFS7c6j^YlYHA7Z*O>Y|9=XY zz91q$-miUa&;ZA~mm%g(fpoxNonX*MV~~2E@n^5900wz&SWF5~xKJ+_3ZnhdM%`;C zAGGReqFv;!BghGeuqaMEQgQF=8Eo9OL7N(9qP(qfj^Z=!y}XlA&=Khp@22(S7>Ng{LeLWLcIKVn_0X9U%8Rhx;VqMb zj%6*8StwaWhHeJKwe8C>(1*gSB%c!CfBkyzl5MZD-2_N7@Qs0R?)HCU9|STtyxGsc z;f<s_kTtt9LR(qKtJKc8~z;|DoZY#$KpMK z>|+~F?eiu}l}E}F2+9?En+5Iec(>=9N1h_@CX{1Z29l&5Z-XEgl9c&tCCic&%u1w+ zEWUhyr=V();d?TZVnO27_PKC3MM7)HA{(FUdt<83;-c*{7+j` zncJnAghfc2zD2;<4nh9_#k-_j(#ksGuY%1&gQZc3q&0cD29wZ@X0KA%t)uTPiC~N=J$yx?BIY=SlU8IgXSjLV2_-ZmE<1 z!YM=SH-hRR^;QX$LZjoLeQ2Dl3BWkcyxqHGy9})uWa;*|2SSz}dwX|iocG_pB$E|; zvIwxr%cDtZs1l}+1);AN*$D+7FEAML@{|$!RmO}NmYCcd^U6j{E+sN9W6b|>Q)T9M zDU>g?cjZ-#O2hX_o)u(9EaKjL$+II+N!}vKbF6Te8{vM`R5!w1ZizL(vsMHvGUcEI z;gWsnC`{!YfA8CCDQnX939HY*WAQ8g>c0=`p;?P+W#}0KO<-!`ol$$WikdgPVQAc| zmw_9~Iy8|PSx+qDh^Ddf&wXc*w?t}M+XW`10GrGhf~V)mAPq;DsAi~iHVzH~W3>Om zI|B!7G6XO^Ey3Fjl10mt_{Si~!O(w9gdCjzk0JPb<3IM;ubmz$MU_wu*>;f0RlWFO z<)uKsSzMf0o%@6z-K>SG<|l}lqvnj<{!>pxylW)O5}L|`vY^Qvci#xrL`>8~q%=}W zKsOq4toIjhrY3xS^MK4U$uk;Lh`TDkxe^i=zD1-XHESo77n7Q!@f4!vTOObl!HSBp zlziw8HQNd^FMs|$2o)Y z2mj=tyx_f_e#1ZeffY0UIX=BoK!zimdJzU2#1Iz7DJoz6vv*0eX?eZB(|ZHPZIEA~ z9dS_p%R8uAtW|`ZAd~znIt(cm0Ph}0+do9RE8g2L)6Tdcf58-|?125S@G=~M}; zuplZ=Z8#O7Vb2;DRqw#S+uzQgJF1^Wqm_LAaeCz)w2j-XcL{$QE96_~k4xONWZRdvd0$ z{=pwq_b4!9`{08hZD*@ZcavMydP<3Cw_ba}GRvhwDx-S&k9;`9f3xieVfhyWmLIgk z@{fPeyWb8bj30b3(SPg1K7Ch+POb_k&eN7qhR0yi*uCv{W*IAr^`0BrZV8*8+|1^8 z-eL2XZ%tL$?%nkmVR9nMR=?i*J!~BM-ba5|+xTQ6`3W+6>;6QreZ5ckbeH-c zef&JU*2h0tJ8~%n3;U5;8(CscZ`$=z!sO28FUsZL$J11A4$HdR5aN5s?!_Gpb+(RjKU4Y z0_jh~%3?191+EH`2=R?_{6omSi2ETSLHS}YlqDYjp$z0tt>A0DuX1 zE~=|>PD^W8DGiyLGz6J3Fim{|=1v7XiUD6_pIrxNvLaFq$>!+L-AF}}3%DWN=z?&Q2BePs4;Bfq@>Gc(!=iii!hx(%Xzw(}JZi zH;>^_GRE<*-}Y0r)&FqY_tn-}2Yk-p)q!7}qT2l1zv!<%_8;p`WHOfYrd-<$S!@p0yzW#wpEd-WUv~zmPyPDs`#JTK{l~YTk8M}G z|9fBcp?~(j_klp){qHNV8E3bzj)AO9#@}uJt6vR4nJ>SZ5z6Fj!t_$!lE_8~qk>Gn`t?<6_KlO&F6u$bxLSJS?dn1`E2vQF7PTcf)lrp6usr4sfE2l31gjM| z^<}WYQKN%eNA0G|3{qbN8OOf)0SbKWs730lU{O>JR$m9NMAd2dH72Hpa;L7QmSsoL8a{JJjoFQ1_Yu|?$winF=cAMR9Ku57#FeDHc=9=6Y^_*a6_3I>RdB<=_6$d|6LzER<6?O zhM=`v9pp~Whk0GFM>jPwA7m^9Swg*oU-N@ox~ZL2W6<19{Z;)bxTCuom#ve)Fps5@ z1`S;&i8`NkS3}gb!2nmCpk5DtiFmY z_x0e~3biYE_~#0BLdoZ*$^gCll&>fD5Qr#M6+GNS^;G`~UhJVx!eiH-7SK-sPYS%; zQ}rm(n=ztZ4VyhM7|~1hP#*;c_EMuqX%$H;Z8T#|juMtJr**J{5vZU_=LfTUsgdpE zp;RO#g1AQ1Uo@&`@PkU#4MK2ArP{f~yh^Fyw5Ofk!JU=p@`J(558!>w4YpT8TEk!1 z(6>+CuQ73M4AAfUSU^q|*Db}W%x^oOvb(nu69GpYndXSQe(B=A%25gJ7ZnHI0M#>i zsh_G=3xlowRBiB+{;DF;M6pR_-Y6hy~ z@VI24`d+UsWU+Y0Q0(HjxLbm^2C7|y>XaIbQG7y5jjrs#sE?H@@+-dAD`PrtJva=Q zSar-18znv*3>$s8II_gdA$o8T6n&iPU0gT>vqZHU7cN0_M+0SiGmJ9+4qdo}7%=0) zB~rUY!*cN2;2P40!+=F+U{yjNE>M-K?_g`W?1tiepDZ~A)(jHV`|Jqf#5Bg$Q5vk2 zlg4I4ZfN9YLq_np4-X+@d;M!-Cd>qJ4rT zDOEX%)?3VLTJ|-HPK<<4abpp*NR|GTJ;TQ%x3XX@nO=fl)J>bao%u4){A9=@wO%bj(za@>xcH z_I!5mqv2}QuC;aE0Bc@lz6LZ#Q@pht)r!+Z+{Oj-hpWT-PsKEzKIjzMmy6*=(m8{j zALG;q?g%v|UZ22DvEaxNs_(ejwBmHrJjo;ysaSal=XyC=luGISIJ<5a%ow3|%CwZ% zdFx(o25Vo?lAUr!Mq0`-F-&l0tmDlng^)rsjf}j7T+FVJx2;I>^skh&d*n^L+E>je zCD!|@ZNPP8WJ5WTs&UqpYqGB`ua0Y^azOShPjli5m~AC>R6UN@5-cC3dS?DozE9-i z5FHRbz8wwg4Wikqe|e{3xu8?9%v&M;?f`B>)@DaFS3iEL*Y(7)z0zHj8;d;;e- zJU#Y%%lgjyo$*$7z2hstvE#afdZ=h3_CW2RsvRaoe--8@{S|`Euxo3 z%LvzViIQ!q7o^QlrBzcUPcq(SLq;+-nzSZ}pkN5nCU3N4Y?8Dl$QGsn{X;%MkoWln zL0a+DlJQOlf`s(Qc&ockkktbD8wi39h6LFGaZIxrJroUb>XV_!82y$&4JNG# zBq$jIHOd=Jped5p1iFT4v~V4tAkd%q1cB=D%m{_nz1um3yq2yLsHH0eLMKB4wI0$n zYUSZzh}EQtl_yEF*fk?bGfi3(N>H;yOWtTg&6czoT1*4_0zNsk_~g*SQ|MH`rE@xE zytQ2?)Y`5P3LOjyl}EIKG|O}te|h*AqBVCSVJp~GL%8K8tqCWn8p5^68%?;ClGcP< zjdbu%t?DZlXnI@cRPxq!ok;7tLL_u3BvMoIr0kDxrdS7p<>6)s)>=Ty-ZliHCEIAy znplFe)mQSy=qpJZeZ@4Of5<2G6`#~sc#4#5{-|^MWxNetC*X#z5D*;<37AjJY<`xO zqaCk{3N8oF;DbHXP6yKTU5eEwD`pKQttltCT16&rj3SdXC>P)?TuS6?>c2XtkGBx6 zKo>onh2mS^9FNc&-O=-8Ci~-?Y1L&?<>74Pt_fbc_Mp(As=74Yh_TV&g;6RY zl$@1A$(ebSlx|r~mqW?fAti4bZ74Z?+YTt%+;vJecZHJZQAo-9vK&f&I|=MERrBz- z>Q7S@#0+NarAmd8D{?5gJdcvnEvx!+D7iAEqQO7Y$D$^cVk`%-id+eAI5vSY+pnO%_Vbl4w?VYNS@IXxb0CpL}{it zg)P`^T?)oprgJidQ`@=z3J!qkFeX9*L-kg9BR1WH;5IXdCP!xPm_!%vVrJEt#?n2g zhRGg@NiCvpj<;RU%;~2DzuI3_)oho!`1TS#7vEN*=i;A~aGBT61HGw8J<}ctT|BiI;mNz zwE|X7wPm{6=4`cABp0&UW+|@~UnrZcVP+1Hb;0=Ysxs4pHBqk(8#XD#^;iYdQrqTi zFXcXhgqL988GA-$7^mrP>)_YO2sdcRFjm`(_Kl3v$!$gZsttM!>!B#+_RMLdSr#kM z6q?axxVkU+{R7-K`K9NV+92QrX@rkw8CDQ!vP%`^Q z7Mb)mq#u(sLT0Gi%rtaTW)&BIWFkuIwAxA4%-0SjZ}geIm6w zXo>wz-m}dxwY)8W3$y8%toX*f84a)u*nilkI;z(e5tc-xUJM30xiDJC4dpE4_1VLH zF&lN9nm~*tim0Qv*nk+o5Gm@Qt!c~IRyiWxjR&bAB{t%{K6vaPHE_T>!K9bnaL0}0 z*%0|>2dUw^Ad-r{A^7V>q>Enc(Ef;~a@+zxZ|(w`v-g9E2dh0Yp9r*+g%;xQk|15$ zuD|OIvVGBC?2#0B=&wv^@vBYMc~Zpdt2;|=ZM*8&?tLVnv7aBL%w%afd9tSEpnTXe z-2-e~(c(!FY&#J`7KA;MK(PLl&!)KsbiaJim?>rIIT#iKwv@rCiq2s_EwHf*J5L1G z8`$Z5*fMtj=oWyMB3`->=!{|cbXj_-Xb1aC13Q%uTfAwK8?dE_mnsC?fWGxolBB)l z&SGwL{D&gCIjj_ylH|rvlrmnQ0VQHl=WcI}gYDk9TpokJE;a1`r z0j^SJxQ0h*5aGbFSKerV==qd{w%GLvSnML~R*NM?W^iLvy2#rg>sxl8eH26I?kQSg zx`RA+1pupBTi!8j#Z^nX40hV*kG*8!Hj}o^A}^n6Z0$kQnk%gVv8eYHvv|TlB!Y!j z>p~f?Djz2aje!g;KuOAYRo@0BZSmI6G?-_N4$?@>zeCLet`I=z1i{{XSSt94uDf274gKX zmfWZU+pe=2sSUitF_6#@7EK{*b}!ooX$03V$nh_2bx;U4 z4TWYeCMGrBYI)j1MBlATbJ+|f%cL2uxBxHQa3h($!c4Y3dTdm7?$)L&;vSd!^qnI# z#>K(shpSyD)N&6ENYY|WT8&c+iU3IxL-kTzuqRPE#kFal3l=fDfgFwBNbXT~#r7jdbL{9@ry8ASAvAXJR zHKmgHqRN$ll(BrKafB;Nu zoM{Q{9m8{aq8iRvjWZ*`xe2bmOH_B~b9SQI<@26Ibp@Z-BsgcOaT*iV1O*~bNuUFq z)8nq49?fOkmWDkzTue`3lg;elwIkJFr@1WHexw?nVZj<_RhhNZp}NDqkvjJg%?0hP zjEvO7l`|axL1Gs|fOZAuoea+)zKtmwkT26+~h;bZXk6?ttx0ymP%(*5e-ksMbGBGU{3Zl0S zIan7)+0;p-7YeqP8MgyG?*rcoE5?25hD9P{1tNW6$T_wk5J}{UkTVxUEY3MzBti@c zG0t>PU|Sy4e@~4{wP4y$QPOj72m>gFJy+QBh`m}RV8@#8sooh`f2ISC7o+)ST*^&V zSf;R7mu`Nc-2DeJM9c6AAVy(y zPH84FLsMoE0Cu6Yp@ zx@O3<>$&cD#`K(AmvK2Qr}NANVrJxI`>%&Mutxu}`_+vMj@E4U`y{$%6HGat& z0*D}c?{fyC9_}LDDePe~lAUQk2spID!KoykQbbD zgz6g%{*fA(G27R(!j1u}^@jI`xCc3dB+9KX#^7StG`Qp~zq=V@dS|a$M($G)_hpKR zmQ|QQma;`Idz>m_tSKSftgXv0vlR4W4sY-YP?UbtHG_`jUq|jPP_ID=f!4qtm^{MlKB+k5MBs zK_YZYWL+mz?qYgyF_8Ex7@RWlLJbe;j2r2MeCe?n%@xj3kVrE$_l8h1iJ(9|o>W7M zThG%;ckPM!rj$;Nv8Df&{tXSDIM%EK=V5HLNqdZ~G6BY-OMr0;56x*I0_x~#N&)-* z@PN~SBwP;b6|I=j42i+fUw4kAsfIFZXC5z?VGVtz;)b*2TuQ2m6BOYL+YQ|FafU!NQGlz^vzka-5fl>cWz=R7Tv*#FE+pl3O0O(+>{J6d4xUJ-u4I}jHhAlFH8^NHUBv?D z4Amn;9ZoCOz5U)_?uBI!YaEy^9++Zs9e3SEhDGMjfiRGQ;6Fkt!y*sb49Dv}#+hmq z;uJm+w67P12x5<*{B%47vo;%|ZQ`?Z47?577d%_@iB?_u-=SG)bv$E; z2Fcw-grH?ZBWec?Y*DTdcJF%Q#twHfXj0w7_9=ner2UEx?c-fu`yz_`~giYu1ms%y=YMle&}U;Ei`+gtYP3O1|RRc0wojY&5~_!Jylr}oN_@Edcme%D~# zYOyXM){6ye_rFi|68f=vf=_>>*v%n(zu@Gv)y{&U-tTIh3{jtOGDK}cG)jr#3c;}Z z|91?7+H+KVzz*s9!*dK>_1;pA^}PmbZS;Y4cVhjrU|sY79qZz5IdnZxNUFDMYUG|Z z$Z7KpQ^UMh~Ku&-P3?rHw=_Pi2J_?pLU5awh++pc_0>H`FK0fIbn8 zLmNvSB4W*68PD`x(?hYfRLpbf8{&Q?(JlQU`7%0MyGW?HszS~8DOV{Y@6#iSo1LcNFrUX=Wtwq0iswGflG-bR)oNNn2NwJ-&ww|vBWL!AfWwPo) z$fcn%XvvUV*uqUA7*K}OoeR^Iy$GFbwI%)rzz z1sBbrwh*)f;cY2WiIjBB%rgnrS0ty+pAK|(w*8Ms`Q)B6PQ^UDQ z9;OWAm*ILQ_!=5hU$b+MtT}Is}{tK`P4{N6s=RCZdza#7kxp)J%qWpd`Xha`ig7pZDs z;*9rd^jX)R15n40F7Cgsl#O&uW;x=@@hr9il)GJIinz; zi&I5Zr}ZLc!YxFz+^4ccoy*;A5PyFEjr8G!0H|vWWqk6Y82d)+Lf|ed%XWcQ)|L^| zh^~YD%BZ9h5yes(BRj$RUt1!Kn2^TK8{LX&VuYmtyEM)=JTBbAOK=OJwii-u>&hr; z5Ve&V;G4@ZA+?vnvkB${zqE9&1XgEYMV_NhM`RHnea6TG`#1kHuy9 zBH#U6gBDuu;0AyWm^F0^F$;ABCRU*Euy&~BC|j$=?&)Uj6w61Ox@ojUi^+YC+`W%h zK}|^jdm{>_c(f7CYXqisOKHQ?Ep;*|HMLu~$QFj}RW&XazKIk7Rh@dqBC_|KREtkP?$Bs$cl;EGcP}I-&SHmz397zKTUHT7@EBx z*vF=)wb<)XD9SI#05I9(lTm&?Gnfr-#=-+eb&L8yS9g=)uFMwaDC znJxlLmm>)6B`oA)=WNWF>S8k;Z(X^CCw#QxXGSe}7p@C{q4v5kk7@lKNZ~aCB^U+l zgc%U=92`Yhi^C;>On9u{MxR5zv9b+o+i(W++OG)|k99V1I8qJbUED0V*lg= zjZ5`-WZITln3K=6&4=;{%QMYO*!fMoOJ8AI@SpI_E2qEB@I4? z{jbZp@sJy zRQ!?q-E2X^2$_p3W85i5G#7TO8$uHvNq&8PJf2aPIP(9&lIJy6o}EtW_t-<(3UgE9 zwM{4AL4LXGe6V{z2}@LPn|pz>qZqR_B91I$uxBFzAw4 zyKpvP*siT$_e#tJPZ>aA!<`8pFledJ7-Z;~0|tQN)K^95`C60=CZY^2IyO&F9#C2L z+p!nVd-J5>RcLxa|6JL7o-6Z+k(DsiKE|`p>38(wIrvN zAq(cB5l?TOtaL6F(wn>Qb4mV_bQyg_l&o=1_MQ?9%iYl%&cFU72IM_Oet+ zgk6&xfwEo7XR78Y`$IRCLV<+Q_`09)^mKmj(9#N1H>0EIU_4lUG8UmrMn-TQ89m1m zxU<#WQYE}9usa{cu;r9uuy zS+vQ9R>(&i*?`OWg&hdwZsu?BU=yF1O}5H)FB;A_;YHz1G8&8}6#;^njF2VO&0Bvn z_pakh40*zoD>@i|GON^W!Olt5oY9jfIcCJOAZ$zD_k<$}AW(L!X4x9D zFU!3w;quu{Bs5piMS$A`5iX2`x$`%RM8*yu3>#jytdYU!&hPm*%2*c3JY>KuK?FBz zfoUN%%DgLOw|v~oSklk`zea@nCu8XhFl(s**>wM^ELpGO|KT@umG5f!Wq-Bt0v7tG~18iMScjgGZxfo+3d0gIw+cwuUrhl>D~h(M~Q( zWPcM-hBB2s^kr#yIfx}<=eC|NlI5~cryXsb)(*9F(lW=KFY+?xOFH_VHnQUXLJ{Ez zmJH2QSw`>DVU#5ll!X*zEf=|#i{uFfRXbCm55;`(p_rfVL($<8frXSpV5Mm-pgdTV ziFn<@hW}4>AQ3_TsRSWk1#}?0i-E2QRpH)As<LBH|B1Y0x+XCEc2jY_0ujPRCys?BqO6iv-Zm--_kCI; zQDeuT7INCW1zW>Bk&2cqBt+<`oq~Qs|3e91Pk%3wi?G4jH$FZ^@d%{+)KINdK(gF2)z`xj4Y6w*`)zIKiEG zmWZ}WDXinK6eioxYan+&gvIa}CmI<+Q*n3c?OHj&PW5UB_K*KkqMYTldRYqLG}at# zwlymD5X*fRat^0;Lc&`m&Goco%##js2K5U$wH^FOu|H6r1-#uny+9Kf519f45sK{v zO&cPxi0a9BnBpsS{+&1S1w8?V@pL9!;X>yyI56jp=S)zwzPFQ6t>U$=w|U_N6$oMT zvLPonhT}V8HO^UHn-Hpd7)=EQYk2SN*OFh9$#SD6#|;=!s9uWoE|YEMy|UF(In{=A zKD~^3H%rZO?{0bSq*(^~i^=^qJTqgcYb>)9NU*FTY+9HlQj)>2w2o?a?jsYeZ);+W zqm1zv^~`4cu)$nwk=NCBv4IZq`R)5k?dfI3EuY$mM*lly@%V zb|oYS0g@#jfzU??rJT1Nl+(C6-n)WBZ*!hq&!p%#$nktS3;IxO-Zvp(6HP!SgI$|) zVuv520X(UXGyV}+ydr&U4#!Ew02Ubo2=Y1YKBEbe576eeO3W8`=jFBcD2j-)t-b!hn-*gnO zN|*&i;r@jo*D~)DDbz2=*rMhf$?Tc6m$UN`91 zVs~+Nn%IiH_F4^X!<9gYs9^Og8etHHs_7F1cwDYzg0#b;ZRIw&!e8S5Zld3d&TInV z=>6gs%5TyB4zA=WKRQ%#p~evuaI-3?gTz$ShyWb1hXpDoztX_*NipIXUN~@zP;57QER}*0uf|5V_F5wI zo&8;aJVWcevv4_srkV1F)Ok%!P!z8IN=DMV3fJaf4KV3#F0V_2H?oUgSb!VWBY&d) zlQ09+N-+-2VRub)Uj3VO{SGx}*oqKI7gP~e--E*Nk~OKZ>!*a9Ze$GdO*jm&W4F}2 zf&B9oEguJ(6lRjwzb`aRc&lZ>r#ftg*9@VVEOcf7x&;b;bp~^tMcZLl+nRW7OGvBF zQ46%{(AVu2ky~b>xVKA)$W+`Ll!pj2@(^K0!Ok^Cg-kfyuW-!=s7}x!CW}z55GJ?+ zOcNJ#7|mPkz`_xy2nX7-Zp0u`O2_p^*$=xwd8`1}XYnl2saEP%8 zP(5;$gLA_yjam!&tdflzpr@{d%^OngW|UjR_izZ-^0`^RZ^3pJ?9)o)b2-RdC-{)P zW|LM@f7Js!FtI$vPn%BZ&iJn`J+(WrC*#7>t0aqD$?s4ztM|hJ13v3XI2fBv-+I-dg8KR{`JK@k3dI1* z?6%Np9W>S!twf`y-3h&LVE_wiX6eG?6;$CM&vC4okIvA)(YUq2yJ*6yNGh4pi`>)r zgR8ts_p2FA*#Eyt7I286HrW?u%h0!(JpM^N_0X>{4vBqbx$QIulSRdSLkOh_j<4D;-d9q{Vi_F@m1OHDc~*`Y0*I15Q8 zZ$x6BMU7s$0=pb5g6l+JWzwFm1Qh@$BqUBH$fEgXO&M8pAZ1E5S)hL{O(?&Qh;iDG zN0P;omrs)WC2zGRlU!_qVW72Z*MvzEW)>z|89k0um3EU?cb!Oevl-qX>tFIwaU2a~+W$U2XpRxct(y=<$%8{`~hu_TS3GYbA@j5pnCqN z=su#0>r7b!D5f*SHrCm)^r2SLSK6i}vDp<*v0U`uDiY2kZ9~_u4VJZ?OSJ-x5gE8t zZN`jxSIvTUg+snn6g1T}nh#k>9ZWT{kfor5OXw)*f7osH9CI_Cy@pg`5?b$;nNQ|v z^QNzL)BVBqa@e$td0xlwx-|g1tW$=`kI~|};-ht##uDNK;gPRF!Hnq1kKQ4`*$-nB z&|~f#EG=d4mP>kXV9zIWLoz~Ti(|a;`=5?)r z{Yz=SdHn}24adBmdM6^%fcqgJ`|RJw@EjZTj-VDyb48%^QhZ*hEjgbAN;3qCBB)D9DYTIw}g`eTj=UjF=`yrEAk_0c{Qac}0>gh`A$!>whx=I1<4Pj!6&p zVl6Fcn`Uvsx&!=8^)M`QGhqsQ--VBD*t-=;dtDj^GJe^^i|l{oda2W9xVsSz@S8WS zY$)@AW@`(!e1#+PE9Qll_?BcjS+WC8eiufjqnS{FYhI>h)0H-+-RwK^urq#^=kfDa za%z~9W#|0`*f}eQof+$m(VyrVKYh@YMH{K^v_{FbgpIH*?O8PkEHASxM=h4Y2!=#w z4EL?vl2_0T_N3t}jM0ttW^GyvqNPs!60cZN88urbuq!3-F+ipghfO&&|ixsZh z_|B__*~-9bps<;Z85I*6Fw8e(BKEk3wUF@H_4QJJKV$Z&C6OD}8enEAH*$)PC_MK*(N^VDV?riMqo?dBPxvaD|RT4p-Qy z@R9kUhKBnvEV_+1?Q8oJZ9|$NF)BcDnAaKFF^^ZXR@iw2XA#@9$JPwk(lZqB`evg7 z%omU5%4`6@9%vP49z16gLO}b7PvO3>X13G>YXxb{;Uz%}{&yP;X<)v*yZ?S^td zw5y@rP^#8;FSHxlT!#5yyEobm6;&Y`AZ%nIwVFspyBe+Xq7{U&FYqmbb}EJ4S{Th$ zDNW+IQvWP7g$W__T$kCxULV9jDQ=s!NHoDx>9eSa8cLXnya*lFW;E1J&AgIzT$?%9 zKs)%0f`|c{@sHV)e&KGUA8B68SsA_j(+u2XuFuBgNPar1Lo9z0Xw25PgBg>|3SwvY zri15T+`lG;`M-^K9*{E{2yKwwteBdMY=2Sff1*(U!OWA2?7=JQ*d_?mjR3hXmSEGU7NZ zIv*%Phv70qeJs^79(m?iDsnOqmr#83v1atK6_ZDeH>LzRQCOma7=8}g6yAKaA+fTt zoWV0e9T8zUR?DD{L7njz-Mrwz?Z#oq2aR(RxbvI-#1;NdY{dmxD+^ zli4zXwF~!H8s=#aC||kK(zb4nu!gcSBqettqPCT2EB{;(kzsDGw1l7+r!qNrS{5J= zsRK+f#Is~W+N_PhNzLXnE%|zvWWg$;wesqmZY#+;vfjNw%w;HZW4NY%&XEutHH!0m zBhA0Ok3d7SUvR{EMOA#$aP>0v z!@(cX?7(JX6DC%&W4J)xmVfa*!KYCrOz0&}Rztk!BStTa6;wzU;>+JDAZPbJsIb(2$d8rM7Me)kP%f2cz1Y z$_y6WFy12ho3^2qxG@VmL$TORoTE&ah4&WCo?`l_?XZElNC zm|xl{0y}K2RNmccM;wpW^+CssWHwUAQ94aYPl_xo@$HxwBW02Ar_)S3Ja)K z1K2?hCDTa>3?}K(#pcxgTnKes@o zGwX^~EHfCC#V}}&oSlxFVH>B~ReB!<#tgdS>T`d%ZDItr1L09)?pj512xiZOVQyx^ zB@wubyA1t=wI!tNZb0-=Zg?ikVLdYZ-W>e`tr0*-O5-Zo)KsLUShjyM_r?5NKo`8i zvAkB^8x_xiW%^+1Ngwn^IzgU(dVDl-FKUPT2(fPzXTd$k+l4qID`>b{^$K>MqT-os zD@}5EWCxTY$+}D@PR7{hhC7m-iAsTL!yNcRaDudu zh|aT~F}1lsHWP^8s;gB}ON;m=GEOM;P(E?YMISfD46VT6u`%qp#SWM##8VGKXh2aY zdRHK10A+??y(WLe)r7}cL~6tRw=%VqtRuvB(a(jpCI+Ct!l>u|1Cj=}%H=SJj#2(# zm9a{eHAjNXKh^Ni)!Vd!RO?uOwt9*^Lm(>Z-X5Iwo*EhAy>L0PfNTbLzo*uyX~D%?)O9`QG$R*# z$FR{-&TK1G>-WAI6IN@LY8YKhC%vzZRsEmT6=1{yQ@#1zGX!MtsaN7Z4$TbHTg3_cJBcZ%kb7mKA}5%^6% zq){jhK%;fKn2~~75n*oxFRCz{>BQ9~amGP@@E8rB5f7Y1K>gkE#yE zKhM7b)&JAp+Bt>xfx;AniwLi$ncjMrSti>7y?m*gf$u!ka!2@yqHN7u3<4#jF4o+b@<>mVhawfN1H z8zk}22nSoiwu9#`!xd7cp^_+tiom!orGH$)M{#v2r`u7{3Of=e&?eLfn1@g!l=3km zjUD#X#EdM+DC?jQxP% zjB~W4h9E_A7KN=D6IFPi6EJ5q5VT%Ew=5(aHV}O$k=z61V?d>A28vv23uaDMN&lITcl zB)H=`HMBHKx1i-ZRei#255AQ}b5L4LGZp2J>eK7Mzb$Y1uUS*P8ldzKozGI!2cCQT9+>Gn4n+1F{ zD;Mx=uwX@It&mrVyjS`-6c%psv#VHRK)4hZ3Yi(#rIdsr`~y8>(Ls%x6fZ;{;k8Ih zSdOsoia6wPE~^OkGHAR-9f0M+mu^vGL8`>9YNUhQF}JGYGx}P>ELTxsb2x+7X+89d zytSACAP(ieeyPX_^mZ6&K~gVI7m-B;0q{jT2qPmu{2@dbB7*n;`!?E!W!MY7B;(DM zp7rWPZ~(L&8o|jk)ZJiU^fp!7^VS8+!TLMp@8*}0cDDzI-lnR1ZD1B{I2cN+?RaY! z1i!ycjT!U-M*#;`4ow^z(Lk)E&_L^ucDt`0b%!~H*TU<2_m_y3rg1#Di*Mh+Oo z?RfnUEgq_6um1@iyj=}Shs=zVawuSL`FUSxQUz1?>FpTf_UEGDoI5ba?fp15dsgu3 z9qN}A_STwg_R$EV=2TwMgv$257h7t6pl0JEnd4`wvvP_qnyF5zumKHQbQX)A68!#7 zb;8LeuM@6W)$t9bpgQ6_w?C235sa{766&rEYG?xZ<*TDD3t0^0I$9R=Y$9W-!u^7PA^15|e^A&P7q@ zSm;gN<|^u1_x)hkyVQt;(W1dm@4`omzoFlB5JENgdtlt33SjoIn(4c;MzS7NcZxl3&}=g^^c=R!b-`n2ye2U6+C=5Ec`2y zjX8n@P6oU4f<5M_Gb=VqHok}xX5TYMHS{$Y!#?e@%jRnOxZ=L=VRHyfTK? z!?jK@(!Dxf7sLGr(4pBIV}iF9s=<3@1)WDfDa^c-BP+;7bk|YuVRK;!_FO<*$1YMA zg$_nm9v@w#epYVpkzvWj!SDyv z8_G)q#BDFwQy0v62o8}Sv^=ExIQaSQL+aSDR}U`rmF-NI<<=w8(uTxb87^bV!t}1hhS-P7AZAFD6dIHBLV!g&%%g z?Ub0xZ1?8iuRyf?6Dh;>blkNR9QcGfrQ9xzYZUK$Lj5U(7_L?g%b?P8|LaxI5VpObjw|@$ zv=`NpPUEs*-izvZ=f=B&_)Bonmo5$N_`B-ejmr?`JVdeA6ij+a9WwA8qJgjf^a6Gc zuB73Ur~G^3xn^mw;w3fQ`D$s<#^=i0f}L8_9%^xLbc^bxRs?6Zs9%Sx$!|Wv4qMa5!X}!HF+gK@Yu_0T}I#PP%O7P@cq{_1;tcUdrFJ-D!F+fDtU=k45gjH5q0yGFHVi1HNL6IOJMny$LSwuyRfQo`wWKmQ^ zmhY|VK4)eEc<=W;|MSbe>FKWO>gww1>b;Ko@*C?uv46B`U16OPliyU$zO`D41#hap z-&*ah9ct0HR#x)1H%TL$*Kna4oVd>#a8V5|+GoucYc{Ax`>o_unt9=UI4L8P^Ek;7 zo5%+#T(&`F?YCN>^A+v4ZcE;@fy&CbXm_#>SlyG)F+%1=5e5*#zxCKp2w~;MOIN4W zcR={JE!uSOnLGTZxKqzi;+;T`~Vv3HWR}3 zi_%cOgVwLfi@B#>oJ7KpR!_0&O*QaGtF@T0fec3zQTmeFPT}-o_4kif1F>&|%J>Q4 z=3+7owN=(nRvcNIQ9l9c&_=bCLRg*M6mH(6&QrMJE!Ff8!cX2(_fWWIshV)e>Q>u4 zGu#=EMy(CkQwazcZ&n8n;Tgi1w^iz4;KK6UNa5b4>QM?0FIB~dtv1#^_03@`v73I! zgH2gBus<0CREqZ%tl6~P32lb@>dO`SH*dNCV7eL9Gf~C-Weu}tsWE?9{jg7w4qs~4 z9QFJxai!{f%Bm`!8KZ7IWj&ti?1ly|qT)-@`uJts1l7V4nMvcfP%Fgixo~x1i*#O@ zj+^j~YWTO6k?LIW4kl4klUT$gnk7!4{TFjJIY40%D7;D()-k-6c~(!iVexWRQ`oAR zNc`tLVj{9K699LP5ee$sf2^p~pP7s=giM+y^S7zXyl03L=X$AIm%qWuhST8Wd4|^r zAyG$@SoMq+$H$Cfw#WmOS@q02s`Eb}vH#K}jv5kEClVLV#Kh&|s3DQEkl`^QTx4i2 zR;zcah?u#xL~`OT#xjmA1B|SmsJfrA>Zbg_;HVHH@K)i4Y>zrb!c@Xp%U6Sr!~cmOJq;Z|fUxf77b#?xQlazH9GX#XK&svv9yv?YP+T1u%TfK13s-hClSxqC{ zyD{pPI1wj~Oj3K!Vv6#=pZY1yY6t~Ld&Fc3oWG7Ox+G|tM8&rM?AtrFX)JG zPg9$vsQZ6grgI-9n8gOV%yVv;b(cP?8>W)f&k-xS&m33Ngh)(vHbjHT)zjowKC4@B z2h%bxbpwI}_@)%t)&&BJ@H69750Qj1(SI5;YC5rmkD<}FeSi$WWTIoEs857JtX{jA zF=5}-%tkO6$E%4Ju{sy;Q<~bAO;=T_h|3fAF}7oHEoc1sZMwR-ib#)GGJ}c@1F=z6 zL}rR}?5yh>#$$;Y1U9KP(IQ5@9RcI{4d=Q*-8RioRl`NIl#>ibucZOl7(YYh98-Y> zPDz+aC8t-e@VOakez>R`v6;c>#OnQU(IDagM1U$MLCQxUNN09OqQh zJzWta@posb7pscQ#7k&Az&t3PuZo5XH6@yiU$_4chRh{o0r1d>3v5XUBV&u0k%Z!+ zi#GjO)hR|KD(1sErw?wI`kIe5no8noBZEo`1n~Jt@bLu~;usOlhoNxLP?$8E_%KIm z0Tl$8Da>H7<6~G;aE7$mRFimhXOu`13umj`D74_)jE@r4^HHKf>Teu%hGm_-v97}S zIl4tw&mjg9Dysy*4XdFFA2Rr&RruUcIL#y>DkQ|#a(a<;ZZv>9w-;eM0=@$h zu9!9#Y|y|G6Ed)b*{>164xJR3D!ipy#2bTlh_No1@x3)yt*ee&oMW(43q4&kR&lD* zCgn{<Hk0ftFTh>dY-;k7?xOtcAi-_+3V>*elynU?V}r549Q>qG5cg&S0(@2wfW1bzrRNeVfC3~2p#^Yus`8yk?exug)JGmRo# zE5f?d<~$Whx)T?oJFwc%5htNG(HNvxpVJb##7GD*3{rZU*LhSHVprjT#_RXkI}D9W zjBEhkkGmM^rdkk+b2}nfD2A2)7&4bI1ptGUMi-qd!l?~0GG&3T%(4Yk-wP&-0B?_h zao921h=aOcrwF&|s&g!+b{|n@l49);DN6fCrs{Mat(iuzeqW$9)0yj3vV#EciABMS z7E-~`ZOpd2MYzVB=h*E(BcPrDl!x)8IX=L^dCuvyU`Xehv`CkI2}=$zcdm1BkpAjL zrsh02hLCyFkhz5P0S=G}ZNv~V`~RH`zyUI$MqQI>s9SRU^HiyLwJ9D(9g&n&C=gd+ z)$>$^WTS^VQ(K)08_t1Di0q9I840`z7zti^fwDVp{d9I?0XMv$1$l{)0N`g6U_%cv z1!pJ<;re$&;SwVOz+8`}i6Sb(+-lSPxogj$Nfb7jaFxRMhq-h(G*;;wlAE&iioc;2PBx|4V zV_I5WtC}Z^>UE9uY$GDPmYVoGVf*ZLj2)%1dq%v&(W+WL>FTRw;j7g3wdl=^_?H)T z<4s>eWj3xnHUNwnajUyRC(Qb6U5neSB|f5JN!&@5#Qi1{4&7fc%DQ!l7WZ*RX;8Ur zfYIz}x2cziHD_eggD+f}P+OaEvY0R`6~2vgISWc%=jOVRK6^>md2BHezF^`3@b;$Y zHlM=%K+0Uk3Dw$Gn#>aQNMlT{7sq09{W+suu*ev4X+040$$9B(`{q zq9Jm-_;_W+{PWAYy{0dtLd=tnz~~DwY*gLU6%2;Qg`ky$nYFH3rYT&)Q~*p6J98LZ#V_X2i^HMlaWl{B!Zy&FJMkyJ0G!vl~st%x<1vu7;gzBZ~6lPH0N*KCvaa+S{o8j8#bUOuiPD|^GYrFBP-(8vojcX&Buc)kgSn7r@q1~nKnpe~-^+bBA zb2T-%@$n&HYW&Y%`Paq=IJ5pG8sF@Z9ejo5-TC73K1fwD^9n)p3VI?8Zw*zeCBwvF ztHf;r^-X<|n0|`zN#4nHsV^XJPPc1o33X{mna##m=;oVN1+)3~?23O?D1fo~mY|L` z5D{taXZJ#S9FDO_N=sK58+-9e0^Gd;CWoPN);1RV`9$FjL*Wvg4B#&tTp(vn!OU|% zHWYqZ0SVz2M5S3Cz?kROjhMEQz;Rl4c#ot}VE0h%!c@4;5<(#vrv#*kK|RcNCXm54 z$7t@>m0AMsq(5}C24LPgc&ZU57YFn$Va-C<;2jz>tN3}PI@0LUJ2XWls&(TF)YjrP zojGIppk!`SEa@&G%@0b{`oSj8uYFZ(%f5@Rl>y$9iS`L)UsEsx`XNK%68r;>&H^=!=(sE6m>^s;zI;a87(}O55X_A8)8?x0h|VXo)mfsma+bj*e=uxB{qA|! zWCs=<1T*96uQSyx%|YkGnQAD)_RDCKlFB6S4UT-=%~J!545DK!ebE&44$;{*S$&J} zu4#0ZLUh7|aE&ZKrK25!RY4EJzk^h!?{%^o9-T6ebR#6?j80KEw-EOPZO@{+-5Ru9 zjcO^-9hzesXEX~bcmR|#t>EYTjSOy%Iex$*p25? zvN?V7@|YT|V|{_CnBlR4 zEF&xeumVFkTgKjPVMGGk8qc;B^&;GnMGb8y8b{jhFha!Y;cgg`FUKwwF zr9g73+R#o^i*OhJYDYVfi5zF!i75ysT`79QZNX1hiYp?F{{URKx#B93rmkr(mcnnr z&+SDg*P}r>E}<|uOBAnG^R5zCHeXG;iN|HQ1d~sHn$n-nK|3p^+Sx1$i-3w{;X?k_Md}y9buv@!!@P+03QJv^02Gp5DZHzmaaF-PPR$&WgKBGonEt)!S6}kb< zY9l%zz*~iNSBopHqw4t8;)b@|E3V_wl_q9P&eW7ByAI9ZKt)%LUEx)z;hjX?3@7DZ z@ZRWz%W!L%rPozOCovPvHLSB35!73cbVfIHFK?=Lw&)dMt}&ul&a}l#5gWO?;pLy| z*hSc`AdA&AT|~Qxw_WJgF5*TM5Oa-~Xl+yruMruEZ@fW0HQv1dzMbRgzE8@&yhe1g zZsi*iq{;MTk^Jx3AuA9P4N_C+kKYct)nGsk3DneH$QK^|!ATZ9a@Rtk?wGk4=uF6wmN7KXxH*w~n5sx?eB)i%GN9n(IZU=A0o2HH@?_%yw=R za7mh~MpFK+BI%CGx!BWNxU=D+eZvLkVlJv)SKW)tCeAh#lLqsVxY&ZrB=$>cdRNg> z>|Ckd>ngg6lFwANZivtOOm(Jk%x5YeVf-n2Z_`E`pe*Eq7!T}ld*y(7tDC4>^B5K6 zx{IOSb)uW-bysC}QAxbDH~T{2mtYr8Imkg)h$M7rwz>78dR>pHM(GWrV?pH-AP_vo z(mq;oQRM8$R?6sjRNieuvEXVv}PAu5P&CWR2) z`xHWSe|HzjwfP1H+`vMa$=&=o3io}c8s7w*Q@hmz6mI)W&7yGQXX=BSU`VH{lQ)U} z))IA355Dp9cn@&{UG{muhq$NURWoe+Y`^dSr{5<;z{#9ibhAjfyp)*G%BI(T=u}># z_<|HaoL)M^v5^g5xfnVQ-Yhy`U`g*OUTb2Qre|~XOm2NqIY^c0TH(HaaH2ZbQ*Y;MeRXntqorKfL|@qS{w z+UB;Xc7a1rn?Snk?Ovk275u73-YPmJR;Ez&4waOMOUU=#DzXdQYco_aNCYO0p5NHT z%wQGYUfP#nI}d*FWX$%ilGlZP47WSk?m@5m|t235U>B#%3 z+l4>gJ;$for4!C^jKzD^+S|ow>xgP|hiDRK?v--($(%hwXHSg;GLuDo(H&yJ1^oZQ z=ycKhmODlAMLZ@k?;qSL;_ADlfF@q-Qw=VZEzo%~v&2R`ECJoe2zc|N5plhj5rZBgR@@^J z3qp5jbZNf*)S-}%mGr_Y5Jk%_VQz#|4+}}=9inprLt5c=h!NbpKn#Mb{Ch=HYrlH& zUhLhPCo^d6=t7aA&P^2I*_Q81?iqouTDbwf z+okB;bU)lK-KwVd7PSj_(n;e1WF28Y_a3z{x)0TvKmDam4_+s2Ek%ShGu7f`$FX!tF{z!HCgCeOwgQ-*MItJjJ53XDRpz3Gim!tq9eD^k?Q1w zA|0<;YG;XI1)&qfaGD_EIR-w*rEiOu;;tk8qwc~obndnWsR}l$Tve%ti}esxA&G=Y zQOj~hGl@9C@B5r9omTbhET<*h4&Rb61gH&4jzEeZ9MVh3y5Yw~8h`4R^ zoSR(LK;S?KM^${^tHg&yN`{tzbHCfNk7F(2)05|L`#9#)v(;S>i9VOJg%0hc(j9#r zj?i?vlP*+0J|udH58hF22Z;9Fe*glR@o;=`Rc1ue{K)O8u1iE?DNLI<+ESS_wP}E8 zWmQwh2Z*O?MdB-KWYJ-Fwy@=&uL>R(4FO*Mu;^kX&$(}5zr`UYMibKCef zse1>CCzE+3V7d6M_MYYt43;4E5bR#4P7D++t?yO6L740wSJw>^L&Mi^g__~{*_(qz zhIntG`gV|b+B&Fu4;IZc-Jy>)3N903)7hJ#4(Y|_fuxQx4m?mM>wbNLC zmE7v+Z|)0xZPAcdIB)XF&<_#Gn6JDzMAYtbHM=#kSMK7zL1(mPOK^ftVNbAD=&;Y^ z%;WtKa;cdg?{w*yZN6fiLUbHM!F`-&Rlf|uy~4manLJc+lt-A`pX@zUO#>G8nj zeHF*^0GM8oBPR6v_R_pWkT@D^al9Ttb1TD@@Kmcx{xyt015kZrxJZ8>)IkBfU$KKb zcp4!GOH)5aPU8^)4w>|@=Wq)i%|Pg;U;#{1HLP+itimFEN7V7*A~yEar>+!TmQ=zc zBBkHgpSTcn)v`>d7>z53I+Dt*4^S|=JyWM}AMx5eh~jzzi;)>~Q){&s_VM{jr*vD`NVd+U`QkC6X_63fCWR z&$O7H3!oV_JF7{ucQ&{~&}h^2t_xWlbG7B?U8+i+XeYi|qdMn_+Kz{0eBn>prFf=F zu8s%hiMm+ROv@AZkZa<@d7^>XRjz90i`rO$H_R77u855{;eab*L5_*{mP6Uen=li# z{q8D$QoaasMNHq#AYa3-D`G3e6|qH{sa+9&moLZ_as3gZuJ+yw%H{atgX?qH>zlpo z!4bl0_2N4ynteA*8Yd1w(e3JZy-49~4TC#q&W*pQvTuee8j0QJ=Gjh-#@NUVw7logPv=%?^`G!`^h8!Yx9t4H1&A$e8m1w z*H?bu%-$jcsj6U<$c#Aj8Pot*27XjM9~bHBi&5h4d51w zd(BsMIz)-RJ5>26)$Iw9W^l$U6`f*G` z!O8(O^GVSrXuR6_q`2&YRs3?ELndGuR^ur#y}%i0c#x*;N{_Xv4N!-b)w5MQu3 zHxg`g3tXD~KYJBLRLx&c~~Pd{gJO37H)rMLgxahgL42lhZ$Dg{=oY;qUA?-{ zBJvNqRTtr=qTeG01f3MbkQE=&!XiyzBa2)J3mc0x-!Ig_S_*KcZz@aE_k-tWkY*(JWB+H^jloIC=dqY*3q%nIUG)R$C~uJ?)R+YlP9* zQ2kq-2#eI?-`G+I#)$-Ho9w@cD0RGeIE8(ov=I+N6>%@MGXgviZH-{tOXcdt@uGJ0 zxtGex#$mw$r97nGA1@lE@FuV6VAqU_Yd7OgA*=akVCFm_u7oHCg7yfCX3_uTh9=P74`vT zxjDaMyK*-uyWf7o@4&8#LmA2%Fh+V}NVg`!pupH*b`;KW7gNZ4PuO5qho2E6p;LV( ziieY3oua)rCg^S_xqD*KcvD_|l9*etoh0HqzA`#q!D4cE<*2@UILUqQM^z*@on~6| zKPe(KjOqbm#y>6QUSUuw-xtJ6A2ngJNQpSYr>0 zD}E|g!r!RwQ$-V(v$bE7U2SH6&mny4IE?WLa6kbTeM5Mc+3#@(r#232j8~~#JJ_2S zBZ9jSf-&Lt-%P22y|{uXw}whpohF{S>@e9UwDrFWM!hjj+z=V)M5^kuqHgagpA#vw zxepq+U0}}$Nwe%QnlK}MPDna^<~}_1i$64cdTi&&_$&3yv!ZK&yXTnako(hW zxM%AOb;bG&M%Wfe%P6i1TnVzLTxU&(oOCgSXBYwLfLnH`3c_l`bP;{a!LLYA=2kRu z$~sp5C8a`nsmaJ3InoNPT{<|Uy?>7@LwF)foFSU(U18h!d?d1#UUNu%X@y9e7ryAq zxGxg~bp~ovLys*PN~?H?LE6qtl;LPsN^@qPCJnRuuxJK26V76_dxp5e-b>35@Wdxo zWJJt|@|Y)M?J7Rh1dunu%hzZ|HEWv5Wf+CTFaUyEA7;Mc{kIoi-)$Mb! zBdeVwL{6nS2G(mJd-WWAiF2CzeU8XNhF}j0tLF;#pz!8gQEW|C4=8Z8A_&8;>Jd*GZPkYQK*uWCD7yBbvtk%pELj=aMwE5T$`$2V^FVe95dU(DV63txzA6)R$ z@%Z=Z`}v}&_;8Q%J%_#TpGwuk&!Nc0YWs7deKKEr3K?ASF*O=oKiQ+w7vNUTA$9!% zj2q9Yw-$(g>c_tz=U^IIP)A_hqO*LDz1Z{(qegVR&s`ueT&VSnMAxfK7M`!UV*~dm za1UoqnI0%=SNa7_W6FUcqy6(Dz0nyi$ko>>DBHClOb7cN@aKdz-?-;R8`qrR!W<1I zM?!OlAt}^Az-(bmqfh72z5xsns;0jgW=1^76i)33i{)F*4zU%K9$ZQ-SPGry7Nfeq zAeuDaM8+zeU20(;jXjmy6`{;|K`CHfUw%Pcd-H$Du%?G=!?}gg%}POk4-j@O*y;e8 z-Rv=t&kQBtt{GG97K{4U9`(RtaZ~VEv34=+a7eY#ZDZCB>{|pE;W8h)WN4-Z+HotC_j%WI{HIxwc;g_c*TJ)Xe=;Xv6U}m9rHS) z1BO9C!?`DDR92^6!Ue*$oYf1)ReG^VN+2H7Q#Ko-Y$Wl?kP6Cx z=?U`S-3#RzzDl%?{X)-$XgBB-R`p(gy6==)zX~TXf2&_si5*oPTI$_bMT0=>#H%7D z5Q|$4wRABbSS@4N+yX!mL^D6CYh4`hG8R5T34{wNJ5 zef1h~o0zyyy|D&ovAV#`YQq|l>_#fqh?K-xrs_CrIIIQb#|8d_sC3QOL~_R$3>az5 zCWM3?RTe1?ikfL^9K$rJqh>k{Ob>jGnO^vsC=0N8-|NBBnf$uAIsn`Gy6Dr>FiYZw zSS){f8!^#Bh>hVVHF;kU*9QVzbHkaPxO%k5;IXOoo?a_%#wW@O*I}M>OdVUxLCrUC zo8p+d`VG+l!9#C|s{<$>YS@l-xM=~UhOs2&OIe4GaZK6kE{@uu51&XzMa5WF0d-5? z1gZg?jfxskHK3HJ0VYXP735DqXBAj)E#9az0IH0AW@w> zBz?%A&XLilg}zZnJ9&Ekm(B+PTqa65u1d;8!c|8|RMkB`EgJ3-oD>yx8~6b=L1lHp z+7m1~chtb5q&MNy&aa+WBVjb4TSJd;aI;v@B*%#uhvq3ZuU&uyam%3vEzED1TtSa0f9>gx( zcN;JBU~0@4Q-wwCdwc8a9x|k5$_? ziToC!Xe>bf7A=m+EnKo=zCsdI&Re2>!vLjpvXlk*Tswc71N$+yU+0SIWQhVbbFGLe zT0AT)Lgx^+zi8Ls7zrHp`&;5l@yuA&Y_q71uxR*53e*FeMI-E-P23D!tWYa9W070| zPpIMs1P$L7qY%9KHs-h$Dy$qEk`<~&IVS8CMf;veP;Zpu*sVhCD#xYY3RUwR@nXG6 zrq1Oa+5zOhKAi@O;3vJCGFE-@j<}a7y(?}*F#cUp0r!4=-xGtPH7e}`OJq}DzX$)_ zlgFy&TSPL2J+_EtV&Yi!=N8UD=+|*$)t4XQd}ij@xm$5Nd?s-b<*)6JqaNjt!A%f&f!QkN13`VW z71~sxI(#IqLonte(buXd`|%?YXA$(wHe3Qg!8d=5>&$4HXFg_uzy2`}gDQ%8m7`^f zX0Aw3b+?OK@N@L0x?&F6@%=cpdOO|(uP4=|FW-cB@shu5`WUob&icHe==jU=)?9UT zyRfOG7N3Z^Njn*|R(B+p05M#}H+8HU_K8?syNGH+!l5rB`y(MC9Px}Ts{Ubf)$dbW z0IDdmKdP-h`&2AJB}VQL!a|)M+lhmm3iSm}91z&MI4IdARs!el-57hVin)6j<^DZl z08rl7LFVUpQ&3U%+2`U`%bEwDl(^J4PmTN%f;z7@eJM_(xK5`#s*`)MG*c?}E2t|z zneY|#^aWM;72Y~5E-U>CJftlow)GV}w5o3r*TNfRAK>bit6g71+|R2+U*n~^86|-=yciXq( z?#o`(jqQFf373PtkR+}}@Th&<6xnT`$V_!MQK#bLw`OHb8{=Mkss)$Ev-XL?9*g&* z1?}ecP6~Zxx@GJ_PW9Udf>RsAOgeVa-c*_7CL-BqzeuQYoHIAH=N({@YQlc8yU}uv zykY29LeZ%miT+|W`hZBXmX<9%fbDhb?`a-7OANY*#M|nm~Vx;^G9JrlJkBPsn$}p?nm)`>iU1~){rXC2l($p1)#cS58qMXP!s?N`%Uep2IM~Q!RODEaCu93LFXhKsrSQXz1GP!z0 zqUcezx0AeD)%p*{Q`6J89wI@Npr0FU5)P zKXAOX^A}MseVWss&|3J4yX{N2V5WHVg01wyti>G>_oWELDkW^s6`t&$)GuiZOx2dum&4!pOL}XmyUEnYOFW$HWz=<;Y{=-sm7%d7@es zbsm~5Fhu=xOgN)SH2Bhki)wNl&2(N3Jq~ktUM)E;zJMRt$4+1Zy+AEHA?io#(UiXF z?DzNYrW`fqH__4BqRM|0*MNricUXXrRMzieWcczQNZu>dzTZXH zh=o6r#9nv~!4QGjA=fg3$jB70V$nk6;o`EJpt+I;fxi5H-NmpMRk4TU5P2 zQ45CLiR$kCQ%pr-_Fv+rMsE@WP&?izWE#HtltfyHYd7{`;uc;l-c?`!B|3!9K1d=c zQ>mxKfbhLslM*%Mlt_wxjdI!8vS41->!-x17_Num3>Tg-zHCuf|1Ekp(#_zd7e;Tf z1gLmlIsK%gD=$93rH4ed?r+hc-~t?2ddeI!Y&rx`8NLpLO<7;MhtxI*4T>@-oeoXh z(bWsj%asOLo2Gj7@j5C6SN&D*)8Y;|FMsW{_zB*I=l>%H#uQWE#Wa;a1ZQ}SJ0ot1 zc=>x07->Mx890?XPCcE}gsZ9Vu+mw-o@gyOgBjl1{}4(O^sjDc?X@)4j5%#pE9d zs`m9^@`i}RgvpAAiZ)c`VX{pS%K0$a!<4C}SCNs}Tz#&J?1SP?SCM~0nNNhvo6uda zt}3reaut}X6r#jTdt+5u9XUU$DyN3;Wd_%(-VySIRjzK1l-D=q2`LE#pU2WliQnx8 z`Npt*Lig~+afk|M@R+NYN6II0HMe7w+${>ns+!egf;jxWYEn%$^{pl)fezu@w>-g9 z1FFexHC$WIiAUAuYO+D5-in4-RWsf~h3SnJzUz$}GJlay(G3}V)25N<`1h(-b%^>s zh3&LE$QUj})PIhQ1`5OJHslIZ)1CAl+@!1r$CRyP4lA=w;=z$*VveP2Viv%XNtK6zPJ zvl0S7HS7?x?x*b!FnXRlPb0UtVE4i7Orkd@IC;t@`ed>d`-RgSTxZC}!f|0)P1zj9 z9j*y|JFlLvC2vIVb1ivO+FmkUbXqLBz_oHU2xbZ`cIh*W!Y)3jTGWQBIhrT->YCaPhvvX*s5jgFN`;T6Gvjev%43Z!I)Z#R(|ak6E2NdUq`BGuqH8I_@p zJ6o`%T=p-3y-~V0E9`|Agoh;R%Ph z(_f|KS`E*;X+K8b8FGtw*(|P@43KZPo=q{x3s70SOwXX}EM9Cu+w|i?ys8?nS z-}bUo@$yspWZH*`a!AAxsv4Wc4oT9EIKlk20)G>d_4tJV2*c{|c?&j?BHpnBA0{NlQS^chX%Y-_Lj zvz~ktIZEpXAVV)>NQ=v5wi?iY32tiOfHxvfbR*8QwULw9K#gzAd6JsQ^`Q1ylK>=8 zPPUqy$<+2|2Ec*Bh>c$^cOa&mY_+5X=lQFJ0|_oHTfN$f!LoG#99-gtD;Qj(O#p04 z%xcS(NN(pq+!A+R$$1*IcOao9?z@V?tvbjx;P}T5vM~9$9tB}r={pSvIJT3Ua&uW> zM|p+#U+2i{us<@rvrM(VR;xP8dTGaxKsiFX4ffcbe!mxYQ3-dWine8|{}uOXTjs@# zBf54IFnp5O#0+h-@^+DvY6k$&#!|v!*h^jHN(-0ku8~W1&`xDuEAJ0qcpMnM*UM&J zD_08Z`?8K*Wi>0j#H9A>CL^MOfA5|0bp+9O$)(}Nzfz91YQtUfYHSeyeV1$xQ0u$p zLkJe!EjuHz;%<3+_(?`QpxWLevvH!g=pOk>lPx;4?(DW7Cu@5+#aUwc{ZaNoPT8#< zxmP}I{i2TFD;pt5x=%iA{iMd;CzoNXyGd_3%lckz?k%6S{-b)_FB{%+gycYy=2bo2 z10HvjINe|@3w=RoZAf9|Fn#uHMl$8YE)`mKu})GSU}}Ss!yl0Mqmb+eWS^#ML$GPz z#@*Zz3`1pC>L&tPUJMH(@5cvR>)~yO2Zy@BXR0T*@Jy# z6A|}4kEV2EACHmklT3TRTAU>_!Vhw!Tz!-!zlTst`pQii8XZHW?2oFlPA5)Vak`LZ+ggJ6rC=&BO;rp3NP4Ytw0mkU!K@~{g4C6bEMJZER zQ`f4N1LW0F2Mxo*_k((3fNVJQI68c<`c<0345+=*5;NBx?DdQzM7U7M&MRbu%EAhN6UW z@C1Oqz$+iIB_0`*yzug$K$H!wGM{qr{SVB}&Zt8}Wm-Wg!RZs|!XyX22w?5%Fp#z_vguk=KK@5 zr>sZp*<-*EiqiWQoR%R>YC34!3&*^xJ{cx6HS3u2f!1=aC2`os{6>v!D_48Z3SpK$ z$j3sVoOm%uIcwm|$?rroMJ+c?(UqaDevPQ89m4Xe$8zM&HPM`4mp%_be4we+-W=Ji zI=7kM3kE1DX1LrKvq-m>A81~ZEj8qK!{rs%{y#P(3)?hMlsY<8CS1HRY1#b$L1UVx z#OW(kked>Bb|6Bk_7)PNT@cUm=Lil+EG?3$Xs*9=<>dvO?ns)|PG|m?wu1sOeMi43 z!-cKK*Nq#BO~gbGx_#SFF!>DH2qPw$kp@~Z>_$*WdmJel?MRV|;vu?Ubf@VvYW9Nq zHdiJ}hwE0lY9PsM674`ac0n5*iwe)#~#dFo`IyhD;! z-IOn{VRJGoUzSSrA$8pd*)H02AZm2#DpN+tx-Av=e7xq7R0F2ggKngdm0+zUOTxEb z9=1ikO*ZPl2rLkvQ!yjuN-pG`k@EE@-BEFvgp=cfM`Z)2Fgo<7!qz@2GkY=;oia#U z>K+LE=UDrJ=a+*ss_2fS6@rUVq(?4OkXKck zUUSNk`56(9ke<9|fkD)_P`&<`yn>tMm&fGDR4qaXoJ=kCP&v3KJ!QjN4;Y!JAD62cxA_xt z>|Jb`P)a!TXwkAWmeAS&`nSLrb{2MoE{fabJ- zAqSh>PPacPo8QhA2DiS2+C=jEC5N_A55Me5H;$=oxF=?ylGJBuBi7!^T}9ff3lS+S zeDV=&=I?z{*1dJD?n8XfX;21i2PZ(VXs?E1JwY=dcz<|zxJl%wQ!HB$vLD)1cqGK* z_rN^#cuJ-elygqr;zTOR8Z^;DoK6=Q&f~KUTL=m1I47AwEsdX5aing30-H$#nR_fo z3JuX}fpN@44V0Ay$i+x5KutPB^hi^Ms&Ld?=_hXHm3r*M?()7s6pn`0JOqDImEq)(C9%EMaVt@jtAmY z<0B@@VHrI(S;PEjYFZF3d+SAS{jPXseqP@EzoUjzy`a-MAz!fP<#{Jq@i0))F5*z zNN>^5ouSB_3g~tX-OJ?%usIpgJsNz#WH#8G3TTCf9yU;e%&CAL)X?JwYLGb<&?6dp z%0Lem=r|_>d{RdXb$@fPITg?|8amNH4Kk+!I*yXjs0M0~ITg^U8amHF4f50i6F1=5 zItl|J91}*{uA?6Ddj@BOo1qVdm`M)?itxeq-MH2en5+tCvI-JBRNC}V6C7Zp0dv|- zR03a>q{EzWbzroN3ukh8KY3;}rhaS`(*>C|PEUu8gT2xg72Y?Pop6_(bh1VmEb-uf zu*(OM94?Xhe_{zIOjMA(ESQSRL#v3YGW~C370pOEmxM%cwEvv?ZJcaXz=iAe zC5g&R6;Sz$O%*WaLbrfLbEhhL?u3mUckbl5$n=5JE|@-;*^^Mk<7M0WTD;f~(psNh z6)lV7GSd+;{FC;~ogiB}>m+Ca=>_ZD^|W50_n2NZ9ahlzHXXp&Tf(HRidhBYK`mB# zlxms}&5y|vG?Z7?$S>WROH*@i@FdC9T&b@LcKS1ljDu zMX!W^c1I&<=EjR&)_Lk6Zhtbfe$;@_x!>^gkY~J@N0auFF!baK{jvw|AaDnD>=e3D zB2ZW%wKVmlUU%&c&&VWeq5Aw8*)zJ30ov<;Z;@&_5!-)@RPTxM%DA}%@>>vE;MZBT zVxqj}TGk?*h*CpoAXa2#A*?{ucb0Y$sGsTPMiYoA>G4EGd5|`4oN6&ijuJb6SKm&O z2}wm%7_dQwwgONpZ7y2&S`CL=pFbyIGv{|zdopBy@;7zmWZC}8alg~P&jy`0&4YG@ zCp?-NTPR{QCDYp5S4h92@~|yKlSU*gQYDk+6`AMtK8L-Nc8u`es_-`=SEk9?Gbo1C za-FK8r$B6rRHG@fn;1P#9W~;!Wr73R}K;P8sQ)JH=7X9_?_6i4ithy?0s%(G* zo{m#x{Eb?I#HiPZEFeqz#lpiXl4XZVSWsot3{D!6g?gyxr^<9(qAH&%V}~%=K#QY^ zLJQElLKyyt->0!4mS zsMFkOvOdJKX&SmM3l{B-O@#kRwnpOr7r0!nO9`<6&CR-bp%h^VsW2FafM9UD%^N02T~4m1_c{eR zs@o0S0B!Rg_`}l`gw+Y-pz`;6dP61Oq{v^vTdfk z8COXXXUSV|PBM6wZ0HiK>fR621gnDJtFvT$d@*%G>a?gVI&D-eWN#P$t}159#-J5m zBs0Y1ajHp?Y+d&xU9g4SF1U&730JkK6(@?$q-dvb8+lBT>`;Iog>(jvy=)|(p%~th z)WjsK(8GTynKR;gM>;v5rp*JL;GtXTEI+#WOPXN$W@{DmM9~c*#7|JyPx3@HqNHb&gQgaCo|oa&yIKZUIzSD14$|#T*;XBYo+ok zS&!~hDIDose5?BITCeJg!AifPf9)$89TBIR&6AIT!t!~vJ5I%5cYN18+06QF-F%pf zdioB6mCgf^a}R-LNtCeOWVr4**{FtFBO+hjqjr5Ml9YN*MkntjH2Vu0oNHid&#}@! zsI1MZ{5jcL-+r*^c?xd5;#QknfL*V0#xPG9da17m$yDiEHBOxyB%7=G3*?h-i1NSH7b|6MjFANGXtfc&5lsDC-B%)egR%7`*a_TN z_DhM}Z;7d=)%I6q5rtW+<#LE7vQ#d%aOY^{8hKCnN5p4!p@zSPYd#sT$;kk$dQCQn zIQcipj5PS$*W?y4>$H05b=g7`omOAGE}M&!f2*o%WoI$tw7PMvY*T;EX{s03gr3IM z#LbjK-9y<$6KZ1b{7Wre3(nS+?OiKJSSclEjO0C9?fDRBEhR$rhnC4^5g7cdK@S(6 zSBuxlE~r^>>L#69GoTVE9s2(nVO=2?Ltrni!}Mx{I#ecqt?@NgGy}(eu~_8!K2$%f zmoww%GS?Uf{Q%$+44ROEQ{I%lO%C`fiSe`L6ZtYNj4M#c=1bb?ud_c@Ut-jqT;|1b>Zj_l6ufIt? z9!d<)3Ms>Dn<^8lLd3!e_RA)DcXCKUm_FH0W7%pD9(YT(suPSrQ!&^i(mwbdL1XV# ztKX8hM1NB#EUXC%%RNy$3q@J z_SU+kZ%+TmhUN6n&THneke&XEuI}UCgTca(?EHcKhh#lEJgeW}3&?=mk(%kwPTua- z)x_;Gqu-!NpC>pUNgp^76BX=VgxqrD0h^?0$rIYxW}} zvh(uuDi^6f-yu6@Opn&`n~yLWj4eYLgK&dM-x94_!h79xUM%83>!WoKZu9Qgob4e&1O>B4?P5SzzA{IS2KJ=|DYms zvmeUN%^ucIqmw#OvR?FndVkS9L|(qXZ?-?nKQwFjC&K6H1X=YG z&_9IKP<^s;^9MeZ)h{1$2Yx%?JrFl~)CW~WUGrSjfy45%harQ5e=qRw0=}+9A7bM! zEn_zeX>_v-`v=v5dJFX+^bdz%9}v7A1hp3R8JO$RQI~x#m#g+)$r|xlBk~{4$sL&g zShHa{nOcl_prJnbLMB~1G;5SSWJnHLBfEc>$MUoDkkBW~N$JzqNy?#C%6H?pkvbA8 z>81MT3t6YeLpeG5!*fyPX4ylB=RbxA5VC2LOcFsZ8lJkqh1Ck~_Ue&6GOewv%zXk~ zo%(3jfb2fhZ;cG{vWI33%OBXUPro5KdDKZxd?n*`ckz8KQ=_yRaXwY&8(AA)B=RN| zMR}u?f15m9(=i=xY3iPjWonB)u|7{S#Hoek@r*;f3gS6^^YU{?aA)X|HGE{&kP+Ga zAfxPT^})wdsXp6Lz>e*5n3x@>I)8%5z)z$dhK$GJRLLi@YZKi*nFEa(aElEhe0|oy zA*e{6n)9jbsQ&m=UL~w})p`de#`WUW-8h_)TsM@(p)>nDEWK0v#_rvOV5q_Sa z!<%bph8_L*1;BcMtIfM)w@3&3`b6d1EgRQz;tuvnuexcs%xdEK$B?Ov@HWV$ft-_J zt5+S^Eyt=cpUL0Uj6HIR`ucO(HqrsF3{xpz$TjNF7qDlMU&@@a*rwvjrc}oi+_-h zOaG`wK2I$GUWZBcA)JhO8a5AJY3lQIMqHiwUM7^?dPvTeN!2p7*{+8$1F-86wgm2| z=Iefu&xxeH&3%~Zdpu6~8{+NJxtg|``-_Y(`}kLRm6bHLmCsWbNKUvK@t+Z&*SgGq zOh#Ktr&??Mal)7@e4Y{@ynRJkx8w4hmE>>Z^VCLy6ShHo35J-xZOb0~O}4R;+O_j} z;(*|UJrLiEc>OEON`IGCtfYxo>dHFdJj7Q6p=!qtQ-_K$;hhNQ1L0UlBepfCWNg{2Q)sEAURV1(vA}i0{)qpD_Z)CIIS_hww_NN1|5=8elr>hn>D{Z%;#x_ z_<*vNb-djzapd~4Q)%99GSXq-#@c1u>w53C-1c@jdVP@AlQI)Re7OU&^IRiefppRf z9)I!z#{c9XHN3vJw%gv-25T|JAtb%)mz9^@+WdBO(TO{{#-p@ zS^ZsJD#J$&_6=s{90JSC(0LNdNlI}BAu-bz%s4pZhN(HI80mnMUU~R&6x)HXxJ?be z%-i@*C+_G8mU2bkpZhODy!I5PLnnTl)W_AJeup)asrYU7VrjE4oE)mrpFPqWY8!aNwJV9^OF$h1YmbdZVTI;?i zb+;ajkOt>5PpWEdy&27%^kM^Fi;!wI#)ROC3_AaJ;K{PyZM|1p;=og73)^{HTH@LQ zwew1E`^FC!Xg(iDNM=4aYuJEnfA+BcelmHZ{3S>yqw;uxYTe#@Z^m}SFGKt{gfuPM X32v#BUMTfe{QveR%SzjO7mEJ_;53kR delta 75308 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 Date: Sun, 23 Aug 2026 16:14:52 -0700 Subject: [PATCH 4/8] Update Edict provider exact-byte contract --- CHANGELOG.md | 4 +-- crates/echo-edict-provider-lowerer/README.md | 2 +- crates/echo-edict-provider-lowerer/src/lib.rs | 4 +-- .../tests/fixtures/generated_echo_dpo.rs | 4 +-- .../tests/lowerer_contract.rs | 2 +- .../v1/edict-provider-contracts.cddl | 1 + .../edict-provider/contracts/v1/manifest.json | 4 +-- .../lowerer.echo-dpo.component.wasm | Bin 277694 -> 277694 bytes .../provenance.provider-generation.json | 2 +- .../evidence/review.provider-generation.json | 2 +- .../schema.echo-provider-artifacts.cddl | 1 + .../package/v1/provider-manifest.echo.json | 28 +++++++++--------- .../src/provider_contract_pack.rs | 6 ++-- .../tests/provider_contract_pack.rs | 4 +-- .../echo-wesley-gen/tests/provider_package.rs | 2 +- .../tests/provider_package_corpus.rs | 4 +-- schemas/edict-provider/README.md | 2 +- .../edict-provider/components/v1/README.md | 2 +- .../v1/lowerer.echo-dpo.component.wasm | Bin 277694 -> 277694 bytes schemas/edict-provider/contracts/v1/README.md | 2 +- .../v1/edict-provider-contracts.cddl | 1 + .../edict-provider/contracts/v1/manifest.json | 4 +-- .../provenance.provider-generation.json | 2 +- .../evidence/review.provider-generation.json | 2 +- .../schema.echo-provider-artifacts.cddl | 1 + .../lowerer.echo-dpo.component.wasm | Bin 277694 -> 277694 bytes .../provenance.provider-generation.json | 2 +- .../evidence/review.provider-generation.json | 2 +- .../schema.echo-provider-artifacts.cddl | 1 + .../package/v1/provider-manifest.echo.json | 28 +++++++++--------- xtask/src/provider_lowerer_component.rs | 2 +- 31 files changed, 63 insertions(+), 58 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index afc141f7..72cd87bb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -174,11 +174,11 @@ provider-envelope domains. Its lowerer and verifier components were independently reproduced in copy-only, mount-free designated `linux/amd64` containers and promoted at 277,694 bytes / - `20fe92ce8d7bec67f772715cb1f0f3d9ac4f65fe382eff3952f3c368849419dd` + `7d00aa4d4ec63fb81dad318b0165010cd4451f33b3f939f90a0457caf54a46eb` and 297,035 bytes / `58f9451831338fa39a73d53790fe839037f1a8a1fb5345ffefc334af3ec90413`, respectively. The resulting 25-file package has provider identity - `sha256:b888f0c64a53c68d18c2bd3212589cf2ed9da3fbd551a64a9006184db3dde71f`. + `sha256:319b2f44db2fdc953ab4dd4d7603a60db8c5951cc62a0ac2e6b41797eebcee92`. This package build proves generic compiler/provider lowering and independent verification. The separate `run-edict-operation` witness now consumes that crossing through Echo-owned runtime execution. diff --git a/crates/echo-edict-provider-lowerer/README.md b/crates/echo-edict-provider-lowerer/README.md index c43906a0..504394cc 100644 --- a/crates/echo-edict-provider-lowerer/README.md +++ b/crates/echo-edict-provider-lowerer/README.md @@ -118,7 +118,7 @@ remain a separate bounded observer/optic path and must never be represented as synthetic mutations. The refreshed 277,694-byte checked lowerer component has SHA-256 -`20fe92ce8d7bec67f772715cb1f0f3d9ac4f65fe382eff3952f3c368849419dd` and has +`7d00aa4d4ec63fb81dad318b0165010cd4451f33b3f939f90a0457caf54a46eb` and has crossed the reproducible promotion boundary. The pinned Edict host admits its generated envelope under the owning `generated-artifact` CDDL root, and the isolated host fixture exercises the exact helper binding, typed codecs, EINT diff --git a/crates/echo-edict-provider-lowerer/src/lib.rs b/crates/echo-edict-provider-lowerer/src/lib.rs index 5a1e3429..a87f6d71 100644 --- a/crates/echo-edict-provider-lowerer/src/lib.rs +++ b/crates/echo-edict-provider-lowerer/src/lib.rs @@ -809,7 +809,7 @@ pub mod echo_dpo { pub const PROVIDER_SCHEMA_COORDINATE: &str = "echo.provider-artifacts.cddl@1"; /// Raw SHA-256 of the exact self-contained provider CDDL bytes. pub const PROVIDER_SCHEMA_SHA256_HEX: &str = - "2a9ce322d49cfc2976d44c4866f30a6afb669f8e6c42a50898f9919b352a03c1"; + "5da9a9c010e25e4d611f4b5ef319a10168bb66a8027fd811caa37630e16076f7"; /// Exact generated-artifact profile coordinate owning operation schemas. pub const GENERATED_ARTIFACT_PROFILE: &str = "echo.dpo.registration/v1"; /// Digest-framing domain for the generated-artifact profile. @@ -846,7 +846,7 @@ pub mod echo_dpo { const MUTATION_RULE_NAME: &str = concat!( "cmd/contract/", - "2a9ce322d49cfc2976d44c4866f30a6afb669f8e6c42a50898f9919b352a03c1", + "5da9a9c010e25e4d611f4b5ef319a10168bb66a8027fd811caa37630e16076f7", "/3389142194/a.b@1.t" ); const PROVIDER_OPERATIONS: [ProviderOperationV1<'static>; 1] = [ProviderOperationV1 { diff --git a/crates/echo-edict-provider-lowerer/tests/fixtures/generated_echo_dpo.rs b/crates/echo-edict-provider-lowerer/tests/fixtures/generated_echo_dpo.rs index 76307465..3d9ddd01 100644 --- a/crates/echo-edict-provider-lowerer/tests/fixtures/generated_echo_dpo.rs +++ b/crates/echo-edict-provider-lowerer/tests/fixtures/generated_echo_dpo.rs @@ -71,7 +71,7 @@ pub mod echo_dpo { pub const PROVIDER_SCHEMA_COORDINATE: &str = "echo.provider-artifacts.cddl@1"; /// Raw SHA-256 of the exact self-contained provider CDDL bytes. pub const PROVIDER_SCHEMA_SHA256_HEX: &str = - "2a9ce322d49cfc2976d44c4866f30a6afb669f8e6c42a50898f9919b352a03c1"; + "5da9a9c010e25e4d611f4b5ef319a10168bb66a8027fd811caa37630e16076f7"; /// Exact generated-artifact profile coordinate owning operation schemas. pub const GENERATED_ARTIFACT_PROFILE: &str = "echo.dpo.registration/v1"; /// Digest-framing domain for the generated-artifact profile. @@ -108,7 +108,7 @@ pub mod echo_dpo { const MUTATION_RULE_NAME: &str = concat!( "cmd/contract/", - "2a9ce322d49cfc2976d44c4866f30a6afb669f8e6c42a50898f9919b352a03c1", + "5da9a9c010e25e4d611f4b5ef319a10168bb66a8027fd811caa37630e16076f7", "/3389142194/a.b@1.t" ); const PROVIDER_OPERATIONS: [ProviderOperationV1<'static>; 1] = [ProviderOperationV1 { diff --git a/crates/echo-edict-provider-lowerer/tests/lowerer_contract.rs b/crates/echo-edict-provider-lowerer/tests/lowerer_contract.rs index 60428caf..36056339 100644 --- a/crates/echo-edict-provider-lowerer/tests/lowerer_contract.rs +++ b/crates/echo-edict-provider-lowerer/tests/lowerer_contract.rs @@ -45,7 +45,7 @@ const REVIEW_MEDIA_TYPE: &str = "application/json"; const GENERATED_SOURCE_PATH: &str = "generated/echo_dpo.rs"; const REVIEW_PATH: &str = "review/echo_dpo.json"; const EXPECTED_PROVIDER_SCHEMA_SHA256_HEX: &str = - "2a9ce322d49cfc2976d44c4866f30a6afb669f8e6c42a50898f9919b352a03c1"; + "5da9a9c010e25e4d611f4b5ef319a10168bb66a8027fd811caa37630e16076f7"; const EXPECTED_OPERATION_ID_LAW: &str = "echo.semantic-operation-id.fnv1-32/v1"; const EXPECTED_OPERATION_ID: u32 = 3_389_142_194; diff --git a/crates/echo-wesley-gen/assets/v1/edict-provider/contracts/v1/edict-provider-contracts.cddl b/crates/echo-wesley-gen/assets/v1/edict-provider/contracts/v1/edict-provider-contracts.cddl index 723929f3..54d52121 100644 --- a/crates/echo-wesley-gen/assets/v1/edict-provider/contracts/v1/edict-provider-contracts.cddl +++ b/crates/echo-wesley-gen/assets/v1/edict-provider/contracts/v1/edict-provider-contracts.cddl @@ -128,6 +128,7 @@ core-string-type = { } core-bytes-type = { kind: "Bytes", + ? min: uint, max: uint, } core-record-type = { diff --git a/crates/echo-wesley-gen/assets/v1/edict-provider/contracts/v1/manifest.json b/crates/echo-wesley-gen/assets/v1/edict-provider/contracts/v1/manifest.json index a0e0c28a..6ba0fbab 100644 --- a/crates/echo-wesley-gen/assets/v1/edict-provider/contracts/v1/manifest.json +++ b/crates/echo-wesley-gen/assets/v1/edict-provider/contracts/v1/manifest.json @@ -3,8 +3,8 @@ "coordinate": "edict.provider-contract-pack.cddl@1", "license": "Apache-2.0", "schema": { - "bytesHex": "3b20535044582d4c6963656e73652d4964656e7469666965723a204170616368652d322e300a3b2065646963742d70726f76696465722d636f6e7472616374732e6364646c0a3b2047656e6572617465642066726f6d2045646963742d6f776e65642041424920667261676d656e74732e20444f204e4f5420454449542e0a0a3b202d2d2d2065646963742d636f6d6d6f6e2e6364646c202d2d2d0a3b2065646963742d636f6d6d6f6e2e6364646c0a3b20536861726564204344444c20747970657320666f722074686520456469637420414249732c20646566696e6564204f4e4345206865726520736f20746865792063616e6e6f742064726966740a3b202845444943542d4142492d4e4f4455502d303031292e2054776f2067726f7570733a0a3b2020202d207265736f757263652d7265662c207368613235362d6469676573742c206566666563742d6661696c7572652d626f64792c206566666563742d6b696e642c20617574686f726974792d636c6173732c0a3b2020202020636f72652d747970652d7265663a20617373656d626c656420776974682065646963742d7461726765742d70726f66696c652e6364646c20616e640a3b202020202065646963742d6c61777061636b2e6364646c20627920746865206275696c643b2074686f736520736368656d617320646f206e6f74207265646566696e65207468656d2e0a3b2020202d206f7065726174696f6e2d70726f66696c652c206f707469632d74656d706c6174652c2061706572747572652d726571756972656d656e7420616e6420746865697220726566733a0a3b2020202020636f6e73756d65642062792074686520436f72652f6f70746963206c61796572202865646963742d636f72652e6364646c2920616e64207265666572656e636564206279207468650a3b20202020206c616e67756167652f7461726765742d70726f66696c652073706563732e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a0a3b2041206e6f726d617469766520737562636f6d706f6e656e74207265666572656e636564206279206964656e7469747920706c7573206469676573742e204d616e696665737473206e657665720a3b20656d626564207468656972206f776e2073656c662d64696765737420696e20746865697220707265696d616765202845444943542d434f52452d53454c46484153482d303031292e0a7265736f757263652d726566203d207b2069643a20747374722c206469676573743a207368613235362d646967657374207d0a0a3b20446967657374732061726520617574686f726974617469766520617320747970656420627974652076616c7565732c206e657665722068657820737472696e67732e20526576696577204a534f4e0a3b2072656e64657273207468697320617320227368613235363a3c3634206c6f77657263617365206865783e22202845444943542d4449474553542d574952452d303031292e0a7368613235362d646967657374203d205b20616c676f726974686d3a2022736861323536222c2062797465733a2062737472202e73697a65203332205d0a0a3b2041206e616d6564206c6f772d6c6576656c206661696c75726520616e206566666563742063616e2072616973652e2054686520736f75726365206f62737472756374696f6e206d61700a3b2062696e64732069742028627920636f6f7264696e6174652920616e6420636f6e73747275637473206120747970656420646f6d61696e206f62737472756374696f6e2066726f6d206974730a3b207061796c6f6164202845444943542d4142492d4641494c5552452d4e414d45442d303031292e0a3b20416e20656666656374277320606566666563744661696c7572657360206c697374204d555354206861766520756e697175652060636f6f7264696e61746560733a2073696e6365207468650a3b206f62737472756374696f6e206d6170206973206b6579656420627920636f6f7264696e6174652c2074776f206661696c757265732073686172696e67206120636f6f7264696e61746520286576656e0a3b207769746820646966666572656e7420617574686f72697479436c6173732f7061796c6f61645479706529206d616b652065786861757374697665206d617070696e6720616e642062696e6465720a3b20747970696e6720616d626967756f757320616e64206172652072656a6563746564202845444943542d4142492d4641494c5552452d554e495155452d303031292e0a3b0a3b2045666665637473206361727279207468656972206661696c757265732061732061206d617020607b206661696c7572652d6964656e74203d3e206566666563742d6661696c7572652d626f6479207d600a3b202873656520746865207461726765742f6c61777061636b2065666665637420736368656d6173292e20546865206661696c75726520636f6f7264696e61746520697320746865206d61700a3b204b45592c20736f206974206973206e6f7420726570656174656420696e2074686520626f647920616e642063616e6e6f74206469736167726565207769746820746865206b65792e0a6566666563742d6661696c7572652d626f6479203d207b0a2020617574686f72697479436c6173733a20617574686f726974792d636c6173732c0a20207061796c6f6164547970653a20636f72652d747970652d7265662c202020202020202020202020203b2074797065642c20626f756e64656420286d617920626520656d707479207265636f7264290a7d0a0a3b2041206661696c75726520636f6f7264696e617465206d7573742062652061206261726520456469637420606964656e746020286c65747465722f756e64657273636f7265207468656e0a3b206c6574746572732f6469676974732f756e64657273636f7265732920414e44206d757374206e6f742062652061207265736572766564206b6579776f72642028652e672e2060656c7365602c0a3b20606261736973602c20607768657265602c206072657175697265602c2060666f72602c2060696660292e2054686520736f75726365206f62737472756374696f6e2d6d6170204c4853206f6e6c790a3b20616363657074732061206e6f6e2d6b6579776f726420606964656e74602c20736f20612068797068656e2f646f742f6b6579776f726420636f6f7264696e61746520776f756c642062650a3b204142492d76616c69642079657420696d706f737369626c6520746f206d617020657868617573746976656c7920696e20736f757263652e20546865207265676578206361707475726573207468650a3b206c65786963616c2073686170653b206b6579776f7264206578636c7573696f6e20697320616e206164646974696f6e616c2076616c69646174696f6e2072756c650a3b202845444943542d4142492d4641494c5552452d4944454e542d303031292e0a6661696c7572652d6964656e74203d2074737472202e72656765787020225b412d5a612d7a5f5d5b412d5a612d7a302d395f5d2a220a0a6566666563742d6b696e64203d20227265616422202f202263726561746522202f2022656e7375726522202f20227265706c61636522202f202264656c65746522202f0a202020202020202020202020202022617070656e6422202f202272656475636522202f202273656d616e7469632e656d697422202f2022637573746f6d220a0a617574686f726974792d636c617373203d2022646f6d61696e4d61707061626c6522202f20227061727469636970616e744f776e656422202f2022696e746567726974794661756c7422202f0a202020202020202020202020202020202020227265736f757263654661756c7422202f2022696e7465726e616c4661756c74220a0a636f72652d747970652d726566203d20747374722020203b2063616e6f6e6963616c20436f7265207479706520636f6f7264696e6174650a0a3b20416e206f7065726174696f6e2070726f66696c6520737570706c69657320746865206f707469632074656d706c617465206120436f726520696e74656e74207265736f6c766573206974730a3b206f707469634b696e642f626f756e646172794b696e642f737570706f7274506f6c6963792f6c6f7373446973706f736974696f6e2066726f6d2e205461726765742070726f66696c657320616e640a3b206c61777061636b73207075626c6973682074686573652061732061206d617020607b20636f6f7264696e617465203d3e206f7065726174696f6e2d70726f66696c65207d602c20736f207468650a3b20636f6f7264696e61746520697320746865204b45592c206e6f7420612076616c7565206669656c64202845444943542d4f505449432d54454d504c4154452d4f574e45522d3030312c0a3b2045444943542d4142492d4f5050524f46494c452d554e495155452d303031292e0a6f7065726174696f6e2d70726f66696c65203d207b0a20206f7074696354656d706c6174653a206f707469632d74656d706c6174652c0a20206566666563745072656469636174653a20747374722c20202020202020202020203b20636f6f7264696e617465206f6620746865206f7065726174696f6e2d6d6f6465207072656469636174650a7d0a0a6f707469632d74656d706c617465203d207b0a20206f707469634b696e643a2022726576656c6174696f6e22202f20226166666563745265696e746567726174696f6e222c0a2020626f756e646172794b696e643a202270726f6a656374696f6e22202f2022616666656374222c0a2020737570706f7274506f6c6963793a20747374722c202020202020202020202020203b2063616e6f6e6963616c20737570706f72742d706f6c69637920636f6f7264696e6174650a20206c6f7373446973706f736974696f6e3a20747374722c20202020202020202020203b2063616e6f6e6963616c206c6f73732d646973706f736974696f6e20636f6f7264696e6174650a20203f20626173697354656d706c6174653a20747374722c20202020202020202020203b206f7074696f6e616c206469676573742d6c6f636b65642062617369732074656d706c61746520636f6f72640a20203b2074686520617065727475726520726571756972656d656e7420746869732074656d706c61746520737570706c6965732e205265717569726564207768656e207468652074656d706c6174650a20203b2069732074686520736f75726365206f66206120436f7265206f707469632773206170657274757265526571756972656d656e742028692e652e2074686520696e74656e7420686173206e6f0a20203b20736f757263652060666f6f747072696e74203c3d202e2e2e60292c2073696e6365206170657274757265526571756972656d656e74206973206d616e6461746f727920696e20436f72650a20203b202845444943542d4f505449432d41504552545552452d5245462d303031292e0a20203f206170657274757265526571756972656d656e743a2061706572747572652d726571756972656d656e742c0a7d0a0a3b206170657274757265526571756972656d656e742069732061207479706564207265666572656e63652c206e65766572206120667265652d666f726d20737472696e672e2041207265766965770a3b2072656e646572696e67206d61792073686f772069747320636f6f7264696e617465202845444943542d4f505449432d41504552545552452d5245462d303031292e0a61706572747572652d726571756972656d656e74203d20666f6f747072696e742d6365696c696e672d726566202f2061627374726163742d666f6f747072696e742d6f626c69676174696f6e2d7265660a666f6f747072696e742d6365696c696e672d726566203d207b206b696e643a2022666f6f747072696e744365696c696e67222c207265663a2074737472207d0a61627374726163742d666f6f747072696e742d6f626c69676174696f6e2d726566203d207b206b696e643a20226162737472616374466f6f747072696e744f626c69676174696f6e222c207265663a2074737472207d0a0a3b202d2d2d2065646963742d636f72652e6364646c202d2d2d0a3b2065646963742d636f72652e6364646c0a3b204e6f726d617469766520736368656d6120666f722074686520456469637420436f72652076312073656d616e746963206d6f64656c2e0a3b0a3b2053636f706520626f756e646172793a20746869732066696c6520646566696e657320436f7265206d65616e696e6720616e6420736368656d61207368617065206f6e6c792e20497420646f65730a3b206e6f7420646566696e6520612063616e6f6e6963616c20656e636f6465722c20436f7265206d6f64756c652068617368206669656c64732c20686173682066697874757265732c207461726765740a3b206c6f776572696e672c2061646d697373696f6e2062756e646c65732c206f72207461726765742d6f776e65642049522e0a0a636f72652d6d6f64756c65203d207b0a202061706956657273696f6e3a202265646963742e636f72652f7631222c0a2020636f6f7264696e6174653a20747374722c0a2020696d706f7274733a205b2a20636f72652d696d706f72745d2c0a202074797065733a207b202a2074737472203d3e20636f72652d74797065207d2c0a2020696e74656e74733a207b202b2074737472203d3e20636f72652d696e74656e74207d2c0a20207265717569726564436f72654361706162696c69746965733a205b2a20747374725d2c0a7d0a0a636f72652d696d706f7274203d207b0a20206b696e643a20226c61777061636b22202f202274617267657422202f2022636f726522202f20226361706162696c697479222c0a20207265663a207265736f757263652d7265662c0a20203f20616c6961733a20747374722c0a7d0a0a3b202d2d2d207479706573202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a636f72652d74797065203d20636f72652d7363616c61722d74797065202f20636f72652d7265636f72642d74797065202f20636f72652d76617269616e742d74797065202f0a202020202020202020202020636f72652d6f7074696f6e2d74797065202f20636f72652d6c6973742d74797065202f20636f72652d6d61702d74797065202f0a202020202020202020202020636f72652d6361706162696c6974792d7265662d74797065202f20636f72652d65787465726e616c2d616374696f6e2d726571756573742d747970650a0a636f72652d7363616c61722d74797065203d20636f72652d626f6f6c2d74797065202f20636f72652d696e742d74797065202f20636f72652d737472696e672d74797065202f0a20202020202020202020202020202020202020636f72652d62797465732d74797065202f20636f72652d756e69742d747970650a0a636f72652d626f6f6c2d74797065203d207b206b696e643a2022426f6f6c22207d0a636f72652d756e69742d74797065203d207b206b696e643a2022556e697422207d0a636f72652d696e742d74797065203d207b0a20206b696e643a202249363422202f202255363422202f202249333222202f202255333222202f202249313622202f202255313622202f2022493822202f20225538222c0a7d0a636f72652d737472696e672d74797065203d207b0a20206b696e643a2022537472696e67222c0a20206d61783a2075696e742c0a202063616e6f6e6963616c3a2022756e69636f64652d7363616c61722d6e666322202f20227261772d75746638222c0a7d0a636f72652d62797465732d74797065203d207b0a20206b696e643a20224279746573222c0a20206d61783a2075696e742c0a7d0a636f72652d7265636f72642d74797065203d207b0a20206b696e643a20225265636f7264222c0a20206669656c64733a207b202a2074737472203d3e20636f72652d747970652d726566207d2c0a7d0a636f72652d76617269616e742d74797065203d207b0a20206b696e643a202256617269616e74222c0a202063617365733a207b202b2074737472203d3e2076617269616e742d636173652d626f6479207d2c0a7d0a76617269616e742d636173652d626f6479203d207b0a20203f207061796c6f61643a20636f72652d747970652d7265662c0a7d0a636f72652d6f7074696f6e2d74797065203d207b0a20206b696e643a20224f7074696f6e222c0a20206974656d3a20636f72652d747970652d7265662c0a7d0a636f72652d6c6973742d74797065203d207b0a20206b696e643a20224c697374222c0a20206974656d3a20636f72652d747970652d7265662c0a20206d61783a2075696e742c0a7d0a636f72652d6d61702d74797065203d207b0a20206b696e643a20224d6170222c0a20206b65793a20636f72652d747970652d7265662c0a202076616c75653a20636f72652d747970652d7265662c0a20206d61783a2075696e742c0a7d0a636f72652d6361706162696c6974792d7265662d74797065203d207b0a20206b696e643a20224361706162696c697479526566222c0a20206974656d3a20636f72652d747970652d7265662c0a7d0a636f72652d65787465726e616c2d616374696f6e2d726571756573742d74797065203d207b0a20206b696e643a202245787465726e616c416374696f6e52657175657374222c0a2020736574746c656d656e743a20636f72652d747970652d7265662c0a7d0a0a3b20636f72652d747970652d72656620697320646566696e656420696e2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d612e0a0a3b202d2d2d207265666572656e63657320616e642076616c756573202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a3b204c6f63616c206964656e7469747920697320616c7068612d737461626c652e20606964602069732074686520636f6d70696c65722d6f776e6564206c6f63616c20636f6f7264696e6174653b0a3b2060616c7068614e616d656020697320746865206e6f726d616c697a65642068756d616e2f6465627567206e616d652e20536f757263652062696e646572207370656c6c696e67206973206e6f740a3b206964656e746974792e0a6c6f63616c2d726566203d207b0a202069643a20747374722c0a2020616c7068614e616d653a20747374722c0a2020747970653a20636f72652d747970652d7265662c0a7d0a0a636f72652d76616c7565203d20636f72652d6e756c6c2d76616c7565202f20636f72652d626f6f6c2d76616c7565202f20636f72652d696e742d76616c7565202f0a20202020202020202020202020636f72652d737472696e672d76616c7565202f20636f72652d62797465732d76616c7565202f20636f72652d7265636f72642d76616c7565202f0a20202020202020202020202020636f72652d76617269616e742d76616c7565202f20636f72652d6c6973742d76616c7565202f20636f72652d6d61702d76616c7565202f0a20202020202020202020202020636f72652d6361706162696c6974792d76616c75650a0a636f72652d6e756c6c2d76616c7565203d207b206b696e643a20226e756c6c22207d0a636f72652d626f6f6c2d76616c7565203d207b206b696e643a2022626f6f6c222c2076616c75653a20626f6f6c207d0a636f72652d696e742d76616c7565203d207b206b696e643a2022696e74222c2077696474683a20747374722c2076616c75653a20696e74207d0a636f72652d737472696e672d76616c7565203d207b206b696e643a2022737472696e67222c2076616c75653a2074737472207d0a636f72652d62797465732d76616c7565203d207b206b696e643a20226279746573222c2076616c75653a2062737472207d0a636f72652d7265636f72642d76616c7565203d207b206b696e643a20227265636f7264222c206669656c64733a207b202a2074737472203d3e20636f72652d76616c7565207d207d0a636f72652d76617269616e742d76616c7565203d207b0a20206b696e643a202276617269616e74222c0a2020747970653a20636f72652d747970652d7265662c0a2020636173653a20747374722c0a20203f207061796c6f61643a20636f72652d76616c75652c0a7d0a636f72652d6c6973742d76616c7565203d207b206b696e643a20226c697374222c2076616c7565733a205b2a20636f72652d76616c75655d207d0a636f72652d6d61702d76616c7565203d207b206b696e643a20226d6170222c20656e74726965733a205b2a205b6b65793a20636f72652d76616c75652c2076616c75653a20636f72652d76616c75655d5d207d0a636f72652d6361706162696c6974792d76616c7565203d207b0a20206b696e643a20226361706162696c697479222c0a2020726563656970743a207368613235362d6469676573742c0a7d0a0a3b2045646963742d617574686f72656420707572652068656c70657273207573652061207075726520436f72652066756e6374696f6e20626f64792e2054686520626f64792063616e2062696e640a3b20707572652065787072657373696f6e7320616e642072657475726e20616e2065787072657373696f6e2c206275742069742063616e6e6f7420636f6e7461696e20436f7265206566666563742c0a3b2067756172642c206272616e63682c206c6f6f702c206d617463682d6e6f64652c206f722070726f6f662d6f626c69676174696f6e206e6f6465732e0a636f72652d666e2d626f6479203d207b0a2020706172616d733a205b2a206c6f63616c2d7265665d2c0a2020626f64793a20636f72652d707572652d626c6f636b2c0a7d0a0a636f72652d707572652d626c6f636b203d207b0a20206c6f63616c733a205b2a206c6f63616c2d7265665d2c0a202062696e64696e67733a205b2a20707572652d6c65742d6e6f64655d2c0a2020726573756c743a20636f72652d657870722c0a7d0a0a707572652d6c65742d6e6f6465203d207b0a20206b696e643a20226c6574222c0a202062696e64696e673a206c6f63616c2d7265662c0a202076616c75653a20636f72652d657870722c0a7d0a0a3b202d2d2d2065787072657373696f6e7320616e642070726564696361746573202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a636f72652d65787072203d206c6f63616c2d65787072202f20636f6e73742d65787072202f207265636f72642d65787072202f206669656c642d65787072202f0a20202020202020202020202076617269616e742d65787072202f206d617463682d65787072202f2063616c6c2d65787072202f206c6973742d65787072202f206d61702d65787072202f0a20202020202020202020202069662d657870720a0a6c6f63616c2d65787072203d207b206b696e643a20226c6f63616c222c207265663a206c6f63616c2d726566207d0a636f6e73742d65787072203d207b206b696e643a2022636f6e7374222c2076616c75653a20636f72652d76616c7565207d0a7265636f72642d65787072203d207b206b696e643a20227265636f7264222c206669656c64733a207b202a2074737472203d3e20636f72652d65787072207d207d0a6669656c642d65787072203d207b206b696e643a20226669656c64222c20626173653a20636f72652d657870722c206669656c643a2074737472207d0a76617269616e742d65787072203d207b0a20206b696e643a202276617269616e74222c0a2020747970653a20636f72652d747970652d7265662c0a2020636173653a20747374722c0a20203f207061796c6f61643a20636f72652d657870722c0a7d0a6d617463682d65787072203d207b0a20206b696e643a20226d61746368222c0a20207363727574696e65653a20636f72652d657870722c0a202061726d733a205b2b206d617463682d61726d5d2c0a7d0a6d617463682d61726d203d207b0a2020636173653a20747374722c0a20203f2062696e6465723a206c6f63616c2d7265662c0a2020626f64793a20636f72652d657870722c0a7d0a63616c6c2d65787072203d207b0a20206b696e643a202263616c6c222c0a202063616c6c65653a20747374722c0a202074797065417267733a205b2a20636f72652d747970652d7265665d2c0a2020617267733a205b2a20636f72652d657870725d2c0a7d0a6c6973742d65787072203d207b206b696e643a20226c697374222c2076616c7565733a205b2a20636f72652d657870725d207d0a6d61702d65787072203d207b206b696e643a20226d6170222c20656e74726965733a205b2a205b6b65793a20636f72652d657870722c2076616c75653a20636f72652d657870725d5d207d0a69662d65787072203d207b0a20206b696e643a20226966222c0a20207072656469636174653a20636f72652d7072656469636174652c0a20207468656e3a20636f72652d657870722c0a2020656c73653a20636f72652d657870722c0a7d0a0a636f72652d707265646963617465203d20747275652d707265646963617465202f2066616c73652d707265646963617465202f206e6f742d707265646963617465202f0a2020202020202020202020202020202020616c6c2d707265646963617465202f20616e792d707265646963617465202f20636f6d706172652d707265646963617465202f0a202020202020202020202020202020202063616c6c2d707265646963617465202f206f62737472756374696f6e2d7072656469636174650a0a747275652d707265646963617465203d207b206b696e643a20227472756522207d0a66616c73652d707265646963617465203d207b206b696e643a202266616c736522207d0a6e6f742d707265646963617465203d207b206b696e643a20226e6f74222c2076616c75653a20636f72652d707265646963617465207d0a616c6c2d707265646963617465203d207b206b696e643a2022616c6c222c2076616c7565733a205b2b20636f72652d7072656469636174655d207d0a616e792d707265646963617465203d207b206b696e643a2022616e79222c2076616c7565733a205b2b20636f72652d7072656469636174655d207d0a636f6d706172652d707265646963617465203d207b0a20206b696e643a2022636f6d70617265222c0a20206f703a20223d3d22202f2022213d22202f20223c22202f20223c3d22202f20223e22202f20223e3d222c0a20206c6566743a20636f72652d657870722c0a202072696768743a20636f72652d657870722c0a7d0a63616c6c2d707265646963617465203d207b0a20206b696e643a202263616c6c222c0a20207072656469636174653a20747374722c0a2020617267733a205b2a20636f72652d657870725d2c0a7d0a6f62737472756374696f6e2d707265646963617465203d207b0a20206b696e643a20226f62737472756374696f6e222c0a2020636f6f7264696e6174653a206661696c7572652d6964656e742c0a20207061796c6f61643a20636f72652d657870722c0a7d0a0a696e7075742d636f6e73747261696e74203d207b0a2020636f6f7264696e6174653a20747374722c0a2020736f757263653a2022776865726522202f2022636f6d70696c6572222c0a20207072656469636174653a20636f72652d7072656469636174652c0a7d0a0a3b202d2d2d20696e74656e74732c20626c6f636b732c20616e64206e6f646573202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a636f72652d696e74656e74203d207b0a2020696e7075743a20636f72652d747970652d7265662c0a20206f75747075743a20636f72652d747970652d7265662c0a202072657175697265644f7065726174696f6e50726f66696c653a20747374722c0a20203f2062617369733a20636f72652d657870722c0a2020696e707574436f6e73747261696e74733a205b2a20696e7075742d636f6e73747261696e745d2c0a2020636f72654576616c756174696f6e4275646765743a20636f72652d6275646765742c0a2020626f64793a20636f72652d626c6f636b2c0a20203f206f707469633a20636f72652d6f707469632c0a7d0a0a636f72652d627564676574203d207b0a20206d617853746570733a2075696e742c0a20206d6178416c6c6f636174656442797465733a2075696e742c0a20206d61784f757470757442797465733a2075696e742c0a7d0a0a636f72652d6f70746963203d207b0a20206f707469634b696e643a2022726576656c6174696f6e22202f20226166666563745265696e746567726174696f6e222c0a2020626f756e646172794b696e643a202270726f6a656374696f6e22202f2022616666656374222c0a20206170657274757265526571756972656d656e743a2061706572747572652d726571756972656d656e742c0a2020737570706f7274506f6c6963793a20747374722c0a20206c6f7373446973706f736974696f6e3a20747374722c0a7d0a0a636f72652d626c6f636b203d207b0a20206c6f63616c733a205b2a206c6f63616c2d7265665d2c0a20206e6f6465733a205b2a20636f72652d6e6f64655d2c0a2020726573756c743a20636f72652d657870722c0a7d0a0a636f72652d6e6f6465203d206c65742d6e6f6465202f20726571756972652d6e6f6465202f206566666563742d6e6f6465202f0a20202020202020202020202065787465726e616c2d616374696f6e2d726571756573742d6e6f6465202f2067756172642d6e6f6465202f206272616e63682d6e6f6465202f0a202020202020202020202020666f722d6e6f6465202f206d617463682d6e6f6465202f2070726f6f662d6f626c69676174696f6e2d6e6f64650a0a6c65742d6e6f6465203d207b0a20206b696e643a20226c6574222c0a202062696e64696e673a206c6f63616c2d7265662c0a202076616c75653a20636f72652d657870722c0a7d0a726571756972652d6e6f6465203d207b0a20206b696e643a202272657175697265222c0a20207072656469636174653a20636f72652d7072656469636174652c0a20206f6e4661696c7572653a20726571756972652d6661696c7572652d61726d2c0a7d0a726571756972652d6661696c7572652d61726d203d207465726d696e616c2d726571756972652d6661696c757265202f0a20202020202020202020202020202020202020202020636f6e74696e75652d6f6273747275637465642d726571756972652d6661696c7572650a7465726d696e616c2d726571756972652d6661696c757265203d207b0a20206b696e643a20227465726d696e616c222c0a2020726561736f6e3a206f62737472756374696f6e2d726561736f6e2c0a7d0a636f6e74696e75652d6f6273747275637465642d726571756972652d6661696c757265203d207b0a20206b696e643a2022636f6e74696e75654f627374727563746564222c0a2020726561736f6e3a206f62737472756374696f6e2d726561736f6e2c0a7d0a6f62737472756374696f6e2d726561736f6e203d207b0a2020726561736f6e4b696e643a20747374722c0a20207061796c6f61643a207b202a2074737472203d3e20636f72652d65787072207d2c0a7d0a6566666563742d6e6f6465203d207b0a20206b696e643a2022656666656374222c0a202062696e64696e673a206c6f63616c2d7265662c0a20206566666563743a20747374722c0a2020696e7075743a20636f72652d657870722c0a20206f62737472756374696f6e4d61703a207b202a206661696c7572652d6964656e74203d3e206f62737472756374696f6e2d61726d207d2c0a7d0a65787465726e616c2d616374696f6e2d726571756573742d6e6f6465203d207b0a20206b696e643a202265787465726e616c416374696f6e52657175657374222c0a202062696e64696e673a206c6f63616c2d7265662c0a20206f7065726174696f6e3a207265736f757263652d7265662c0a2020696e707574547970653a20636f72652d747970652d7265662c0a2020736574746c656d656e74547970653a20636f72652d747970652d7265662c0a2020696e707574536368656d613a207265736f757263652d7265662c0a2020736574746c656d656e74536368656d613a207265736f757263652d7265662c0a2020696e7075743a20636f72652d657870722c0a2020617574686f7269747953636f70653a20636f72652d657870722c0a202062617369733a20636f72652d657870722c0a20206275646765743a2065787465726e616c2d616374696f6e2d6275646765742c0a20207265636f6e63696c696174696f6e4c61773a207265736f757263652d7265662c0a202073746174653a20226177616974696e67536574746c656d656e74222c0a2020736574746c656d656e7441646d697373696f6e3a2022736368656d615265717569726564222c0a7d0a65787465726e616c2d616374696f6e2d627564676574203d207b0a20206d6178536574746c656d656e7442797465733a20636f72652d657870722c0a20206d6178417474656d7074733a20636f72652d657870722c0a7d0a6f62737472756374696f6e2d61726d203d207b0a202062696e6465723a206c6f63616c2d7265662c0a202076616c75653a20636f72652d657870722c0a7d0a67756172642d6e6f6465203d207b0a20206b696e643a20226775617264222c0a20207072656469636174653a20636f72652d7072656469636174652c0a20206f62737472756374696f6e3a20636f72652d657870722c0a7d0a6272616e63682d6e6f6465203d207b0a20206b696e643a20226272616e6368222c0a20203f2062696e64696e673a206c6f63616c2d7265662c0a20207072656469636174653a20636f72652d7072656469636174652c0a20207468656e3a20636f72652d626c6f636b2c0a2020656c73653a20636f72652d626c6f636b2c0a7d0a666f722d6e6f6465203d207b0a20206b696e643a2022666f72222c0a202062696e6465723a206c6f63616c2d7265662c0a2020697465723a20636f72652d657870722c0a2020626f756e643a20636f72652d626f756e642c0a2020626f64793a20636f72652d626c6f636b2c0a7d0a6d617463682d6e6f6465203d207b0a20206b696e643a20226d61746368222c0a20207363727574696e65653a20636f72652d657870722c0a202061726d733a205b2b206d617463682d626c6f636b2d61726d5d2c0a7d0a6d617463682d626c6f636b2d61726d203d207b0a2020636173653a20747374722c0a20203f2062696e6465723a206c6f63616c2d7265662c0a2020626f64793a20636f72652d626c6f636b2c0a7d0a70726f6f662d6f626c69676174696f6e2d6e6f6465203d207b0a20206b696e643a202270726f6f66222c0a2020636f6f7264696e6174653a20747374722c0a20207072656469636174653a20636f72652d7072656469636174652c0a7d0a0a636f72652d626f756e64203d206c69746572616c2d626f756e64202f20636f6f7264696e6174652d626f756e640a6c69746572616c2d626f756e64203d207b206b696e643a20226c69746572616c222c2076616c75653a2075696e74207d0a636f6f7264696e6174652d626f756e64203d207b206b696e643a2022636f6f7264696e617465222c207265663a2074737472207d0a0a3b20536861726564207265736f757263652d7265662c207368613235362d6469676573742c206661696c7572652d6964656e742c2061706572747572652d726571756972656d656e742c20616e640a3b20636f72652d747970652d7265662061726520646566696e6564206f6e636520696e2065646963742d636f6d6d6f6e2e6364646c2e0a0a3b202d2d2d2065646963742d6c61777061636b2e6364646c202d2d2d0a3b2065646963742d6c61777061636b2e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f7220746865204564696374206c61777061636b206d616e696665737420616e64206578706f727420737572666163652e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e204a534f4e20696e207468652070726f73652073706563730a3b2069732061207265766965772072656e646572696e672067656e6572617465642066726f6d207468697320736368656d61202845444943542d4142492d4e4f4455502d303031292e0a0a6c61777061636b2d6d616e6966657374203d207b0a202061706956657273696f6e3a202265646963742e6c61777061636b2f7631222c0a202069643a20747374722c0a202076657273696f6e3a20747374722c0a20206163636570746564436f72654162693a205b2b20747374725d2c0a2020646570656e64656e636965733a205b2a206c61777061636b2d6465705d2c202020202020202020203b20616379636c69632c206469676573742d6c6f636b6564202845444943542d4c41575041434b2d4441472d303031290a20206578706f7274733a207265736f757263652d7265662c0a20203f2074617267657441646170746572733a205b2b207461726765742d616461707465725d2c2020203b207265717569726564206f6e6c7920696620616e792072756e74696d6520656666656374206578697374730a20203f2068656c706572436f6d706f6e656e743a2065786563757461626c652d636f6d706f6e656e742c203b2065786563757461626c652068656c70657273206361727279207468656972206f776e2073616e64626f782b6675656c0a202076657269666965723a2076657269666965722c202020202020202020202020202020202020202020203b20636c61737369666965643a206465636c61726174697665206f722065786563757461626c650a2020636f6d7061746962696c6974793a207265736f757263652d7265662c0a2020636f6e666f726d616e636546697874757265436f727075733a207265736f757263652d7265662c0a7d0a0a3b2041207665726966696572206973206569746865722061206465636c617261746976652072756c6573657420286e6f2072756e74696d6529206f7220616e2065786563757461626c650a3b20636f6d706f6e656e742e20416e2065786563757461626c65207665726966696572204d55535420636172727920697473206f776e2073616e64626f7820616e64206675656c206d6f64656c2c0a3b20736f2074686520736368656d6120656e666f726365732074686174206e6f2065786563757461626c6520636f6d706f6e656e74206973206c65667420756e626f756e6465640a3b202845444943542d4142492d56455249464945522d424f554e442d303031292e0a7665726966696572203d206465636c617261746976652d7665726966696572202f2065786563757461626c652d76657269666965720a6465636c617261746976652d7665726966696572203d207b20636c6173733a20226465636c61726174697665222c2072756c657365743a207265736f757263652d726566207d0a65786563757461626c652d7665726966696572203d207b0a2020636c6173733a202265786563757461626c65222c0a2020636f6d706f6e656e743a207265736f757263652d7265662c0a202073616e64626f783a207265736f757263652d7265662c0a20206675656c4d6f64656c3a207265736f757263652d7265662c0a7d0a0a3b20416e792065786563757461626c6520636f6d706f6e656e7420697320626f756e64656420627920697473206f776e2073616e64626f78202b206675656c206d6f64656c2e0a65786563757461626c652d636f6d706f6e656e74203d207b0a2020636f6d706f6e656e743a207265736f757263652d7265662c0a202073616e64626f783a207265736f757263652d7265662c0a20206675656c4d6f64656c3a207265736f757263652d7265662c0a7d0a0a6c61777061636b2d646570203d207b2069643a20747374722c2076657273696f6e3a20747374722c206469676573743a207368613235362d646967657374207d0a0a3b20416461707465722073656c656374696f6e206b65797320534f4c454c59206f666620746865206469676573742d6c6f636b65642060616363657074656454617267657450726f66696c65600a3b20286974732060696460206973207468652070726f66696c652069643b206974732060646967657374602070696e73207468652065786163742070726f66696c652f76657273696f6e292e2054686572650a3b20617265206e6f20696e646570656e64656e7420646973706c617920737472696e6773207468617420636f756c64206469736167726565207769746820746865206c6f636b2c20736f20610a3b207265736f6c7665722063616e6e6f742062696e6420616e206164617074657220746f206f6e6520746172676574207768696c6520746865206c6f636b2070726f76657320616e6f746865720a3b202845444943542d4c41575041434b2d414441505445522d54415247455449522d303031292e0a7461726765742d61646170746572203d207b0a2020616363657074656454617267657450726f66696c653a207265736f757263652d7265662c202020203b206469676573742d6c6f636b65642c20617574686f72697461746976652073656c6563746f720a2020616363657074656454617267657449723a207265736f757263652d7265662c2020202020202020203b206469676573742d6c6f636b65640a2020616461707465723a207265736f757263652d7265662c0a7d0a0a3b20536861726564207479706573207265736f757263652d72656620616e64207368613235362d6469676573742061726520646566696e6564206f6e636520696e0a3b2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d61202845444943542d4142492d4e4f4455502d303031292e0a0a3b202d2d2d206578706f72742073757266616365202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a6c61777061636b2d6578706f727473203d207b0a202074797065733a205b2a206578706f727465642d747970655d2c0a2020636f6e7374616e74733a205b2a206578706f727465642d636f6e7374616e745d2c0a20207075726546756e6374696f6e733a205b2a20707572652d66756e6374696f6e5d2c0a2020656666656374733a205b2a2073656d616e7469632d6566666563745d2c0a20206f62737472756374696f6e733a205b2a206f62737472756374696f6e2d6465665d2c0a20203b206b65796564206279206f7065726174696f6e2d70726f66696c6520636f6f7264696e61746520e2869220756e697175656e65737320656e666f726365640a20203b202845444943542d4142492d4f5050524f46494c452d554e495155452d303031290a20203b206f7065726174696f6e2d70726f66696c65207265636f7264732074686973206c61777061636b206578706f72747320286f707469632074656d706c6174657320746861740a20203b2060696d706c656d656e7473602f6070726f66696c656020636c6175736573207265736f6c766520616761696e7374292e206f7065726174696f6e2d70726f66696c652069730a20203b20646566696e656420696e2065646963742d636f6d6d6f6e2e6364646c202845444943542d4142492d4f5050524f46494c452d534c4f542d303031292e0a20206f7065726174696f6e50726f66696c65733a207b202a2074737472203d3e206f7065726174696f6e2d70726f66696c65207d2c20203b206b6579656420627920636f6f7264696e6174650a7d0a0a6578706f727465642d7479706520202020203d207b20636f6f7264696e6174653a20747374722c20646566696e6974696f6e3a20636f72652d747970652d726566207d0a6578706f727465642d636f6e7374616e74203d207b20636f6f7264696e6174653a20747374722c20747970653a20636f72652d747970652d7265662c2076616c75653a20616e79207d0a0a3b204120707572652068656c7065722069732061206469736372696d696e6174656420756e696f6e2062792060736f75726365602c20736f2074686520736368656d6120697473656c660a3b2067756172616e7465657320616e20696d706c656d656e746174696f6e20657869737473202845444943542d4c41575041434b2d505552452d494d504c2d303031293a0a3b2020202d20226564696374223a20617574686f72656420696e2045646963742f436f72653b2074686520436f726520626f6479206973206361727269656420696e6c696e6520286861736865640a3b20202020207769746820746865206578706f72742073757266616365292e2054686520736368656d61207265717569726573207468652060626f647960206669656c642e0a3b2020202d2022636f6d706f6e656e74223a20696d706c656d656e746564206f7574736964652045646963743b2063617272696573206e6f20696e6c696e6520626f647920616e6420696e73746561640a3b20202020206361727269657320697473206f776e206469676573742d6c6f636b65642060696d706c656d656e746174696f6e60202873616e64626f78202b206675656c292e20497420646f65730a3b20202020206e6f7420646570656e64206f6e20746865206f7074696f6e616c206d616e69666573742d6c6576656c2068656c706572436f6d706f6e656e742e0a707572652d66756e6374696f6e203d2065646963742d707572652d66756e6374696f6e202f20636f6d706f6e656e742d707572652d66756e6374696f6e0a0a707572652d66756e6374696f6e2d636f6d6d6f6e203d20280a2020636f6f7264696e6174653a20747374722c0a202074797065506172616d65746572733a205b2a20747374725d2c0a2020706172616d6574657254797065733a205b2a20636f72652d747970652d7265665d2c2020202020203b20616c6c20626f756e6465640a202072657475726e547970653a20636f72652d747970652d7265662c20202020202020202020202020203b20626f756e6465640a2020636f737454656d706c6174653a20747374722c0a202064657465726d696e69736d436c6173733a2022746f74616c22202f2022746f74616c2d776974682d74797065642d646961676e6f73746963222c0a290a0a65646963742d707572652d66756e6374696f6e203d207b0a2020707572652d66756e6374696f6e2d636f6d6d6f6e2c0a2020736f757263653a20226564696374222c0a2020626f64793a20636f72652d666e2d626f64792c2020202020202020202020202020202020202020203b20696e6c696e652c20686173682d7369676e69666963616e740a7d0a0a636f6d706f6e656e742d707572652d66756e6374696f6e203d207b0a2020707572652d66756e6374696f6e2d636f6d6d6f6e2c0a2020736f757263653a2022636f6d706f6e656e74222c0a20203b20746865206469676573742d6c6f636b656420636f6d706f6e656e7420696d706c656d656e74696e6720746869732068656c7065722e2052657175697265642061742074686520736368656d610a20203b206c6576656c20736f206120636f6d706f6e656e742068656c7065722063616e206e657665722076616c696461746520776974686f7574206120686173682d626f756e642c0a20203b2073616e64626f782b6675656c2d64657363726962656420696d706c656d656e746174696f6e202845444943542d4c41575041434b2d505552452d494d504c2d303031292e0a2020696d706c656d656e746174696f6e3a2065786563757461626c652d636f6d706f6e656e742c0a7d0a0a3b20636f72652d666e2d626f647920697320646566696e65642062792065646963742d636f72652e6364646c20616e6420617373656d626c656420776974682074686973206c61777061636b0a3b20736368656d612e2049742069732061207075726520436f72652066756e6374696f6e20626f64792c206e6f7420616e206566666563742d63617061626c6520636f72652d626c6f636b2e0a0a73656d616e7469632d656666656374203d207b0a2020636f6f7264696e6174653a20747374722c0a202074797065506172616d65746572733a205b2a20747374725d2c0a2020696e707574547970653a20636f72652d747970652d7265662c2020202020202020202020202020203b20626f756e6465640a20206f7574707574547970653a20636f72652d747970652d7265662c20202020202020202020202020203b20626f756e6465640a2020657865637574696f6e436c6173733a202270726f6f664f6e6c7922202f202272756e74696d65222c2020203b206f7274686f676f6e616c20746f207772697465436c6173730a20206566666563744b696e6448696e743a206566666563742d6b696e642c0a2020666f6f747072696e744f626c69676174696f6e3a20747374722c0a2020636f73744f626c69676174696f6e3a20747374722c0a20206566666563744661696c757265733a207b202a206661696c7572652d6964656e74203d3e206566666563742d6661696c7572652d626f6479207d2c20203b206b6579656420627920636f6f7264696e6174653b20756e697175650a20206775617264537570706f72743a20626f6f6c2c0a7d0a0a6f62737472756374696f6e2d646566203d207b0a2020636f6f7264696e6174653a20747374722c0a2020617574686f72697479436c6173733a20617574686f726974792d636c6173732c0a20207061796c6f6164536368656d613a20636f72652d747970652d7265662c20202020202020202020203b2074797065642c20626f756e64656420286d617920626520656d707479207265636f7264290a7d0a0a3b206566666563742d6661696c7572652d626f64792c206566666563742d6b696e642c20617574686f726974792d636c6173732c20616e6420636f72652d747970652d7265662061726520646566696e65640a3b206f6e636520696e2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d61202845444943542d4142492d4e4f4455502d303031292e0a0a3b202d2d2d2065646963742d6c61777061636b2d616461707465722e6364646c202d2d2d0a3b2065646963742d6c61777061636b2d616461707465722e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f72206f6e6520646972656374206465636c61726174697665206c61777061636b2074617267657420616461707465722e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a3b0a3b2054686520656e636c6f73696e67206c61777061636b206d616e69666573742073656c6563747320746865206578616374207461726765742070726f66696c652c207461726765742049522c0a3b20616e642061646170746572207265736f75726365206469676573742e2054686f7365206964656e74697469657320617265206e6f7420726570656174656420686572652e0a0a6c61777061636b2d61646170746572203d207b0a202061706956657273696f6e3a202265646963742e6c61777061636b2d616461707465722f7631222c0a2020636c6173733a20226465636c61726174697665222c0a20206f7065726174696f6e50726f66696c65733a207b0a202020202a2074737472203d3e206c61777061636b2d616461707465722d6f7065726174696f6e2d70726f66696c650a20207d2c0a2020656666656374496d706c656d656e746174696f6e733a207b0a202020202a2074737472203d3e206c61777061636b2d616461707465722d6566666563740a20207d2c0a2020627564676574733a207b0a202020202a2074737472203d3e206c61777061636b2d616461707465722d6275646765740a20207d2c0a7d0a0a3b204b657973206172652063616e6f6e6963616c206c61777061636b206f7065726174696f6e2d70726f66696c6520636f6f7264696e617465732e0a6c61777061636b2d616461707465722d6f7065726174696f6e2d70726f66696c65203d0a20207b0a20202020636f72653a20747374722c0a2020202073656d616e746963456666656374733a205b2b20747374725d2c0a202020203f206275646765744f626c69676174696f6e3a20747374722c0a202020203f20746172676574436f6e66696775726174696f6e3a207265736f757263652d7265662c0a20207d202f0a20207b0a20202020636f72653a20747374722c0a2020202073656d616e746963456666656374733a205b5d2c0a202020206275646765744f626c69676174696f6e3a20747374722c0a20202020746172676574436f6e66696775726174696f6e3a207265736f757263652d7265662c0a20207d0a0a3b204b657973206172652063616e6f6e6963616c206c61777061636b2073656d616e7469632d65666665637420636f6f7264696e617465732e20466f6f747072696e742c20636f73742c20616e640a3b206661696c757265206669656c6473206d7573742065786163746c792064697363686172676520746865206d61746368696e67206578706f72746564206566666563742e0a6c61777061636b2d616461707465722d656666656374203d207b0a2020746172676574496e7472696e7369633a20747374722c0a2020746172676574436f6e66696775726174696f6e3a207265736f757263652d7265662c0a20207772697465436c6173733a206c61777061636b2d616461707465722d77726974652d636c6173732c0a2020666f6f747072696e744f626c69676174696f6e3a20747374722c0a2020636f73744f626c69676174696f6e3a20747374722c0a20206661696c7572654d617070696e67733a207b202a206661696c7572652d6964656e74203d3e2074737472207d2c0a7d0a0a3b204b657973206172652063616e6f6e6963616c206578706f7274656420636f73742d6f626c69676174696f6e20636f6f7264696e617465732e0a6c61777061636b2d616461707465722d627564676574203d207b0a20206d617853746570733a2075696e742c0a20206d6178416c6c6f636174656442797465733a2075696e742c0a20206d61784f757470757442797465733a2075696e742c0a7d0a0a6c61777061636b2d616461707465722d77726974652d636c617373203d20226e6f6e6522202f20227265616422202f202263726561746522202f2022656e7375726522202f0a20202020202020202020202020202020202020202020202020202020202022617070656e6422202f20227265706c61636522202f202264656c65746522202f2022637573746f6d220a0a3b206661696c7572652d6964656e7420697320646566696e656420696e2065646963742d636f6d6d6f6e2e6364646c2e0a0a3b202d2d2d2065646963742d7461726765742d70726f66696c652e6364646c202d2d2d0a3b2065646963742d7461726765742d70726f66696c652e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f7220746865204564696374207461726765742070726f66696c65206d616e69666573742e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76310a3b202873656520535045435f636f6e74696e75756d2d636f6e74726163742d62756e646c652d76312e6d64292e204a534f4e20696e207468652070726f736520737065637320697320610a3b207265766965772072656e646572696e672067656e6572617465642066726f6d207468697320736368656d613b2074686973204344444c206973207468652073696e676c6520736f757263650a3b206f66207472757468202845444943542d4142492d4e4f4455502d303031292e0a0a7461726765742d70726f66696c652d6d616e6966657374203d207b0a202061706956657273696f6e3a202265646963742e7461726765742d70726f66696c652f7631222c0a202069643a20747374722c202020202020202020202020202020202020202020202020203b20652e672e20226563686f2e64706f220a202076657273696f6e3a20747374722c20202020202020202020202020202020202020203b20652e672e202231220a20206163636570746564436f72654162693a205b2b20747374725d2c20202020202020203b20652e672e205b2265646963742e636f72652f7631225d0a0a2020696e7472696e736963733a207265736f757263652d7265662c0a2020696e7472696e7369634e616d6573706163653a20747374722c0a20203b207075626c697368657320746869732070726f66696c652773206f7065726174696f6e2d70726f66696c65207265636f72647320286f707469632074656d706c6174657320746861740a20203b206070726f66696c65602f60696d706c656d656e74736020636c6175736573207265736f6c766520616761696e7374292e205265666572656e63657320616e0a20203b206f7065726174696f6e2d70726f66696c65732d646f63756d656e74202845444943542d4142492d4f5050524f46494c452d534c4f542d303031292e0a20206f7065726174696f6e50726f66696c65733a207265736f757263652d7265662c0a2020666f6f747072696e74416c67656272613a207265736f757263652d7265662c0a2020636f7374416c67656272613a207265736f757263652d7265662c0a202074617267657449723a207265736f757263652d7265662c0a20206f62737472756374696f6e5461786f6e6f6d793a207265736f757263652d7265662c0a202076657269666965723a207265736f757263652d7265662c0a20206c6f77657265723a207265736f757263652d7265662c0a202073616e64626f783a207265736f757263652d7265662c0a20206675656c4d6f64656c3a207265736f757263652d7265662c0a0a20203b206669656c647320746865206c616e67756167652073706563207265717569726573206f662065766572792070726f66696c650a202062756e646c6550726f66696c653a207265736f757263652d7265662c0a202067656e657261746564417274696661637450726f66696c65733a205b2a207265736f757263652d7265665d2c0a202063616e6f6e6963616c456e636f64696e6752756c65733a207265736f757263652d7265662c0a20203b20412070726f66696c65207468617420616363657074732074686520646972656374206465636c61726174697665206c61777061636b2d6164617074657220414249206e616d65732069740a20203b2065786163746c79206f6e63652e2050726f66696c6573207468617420646f206e6f7420636f6e73756d65206c61777061636b206164617074657273206c6561766520746869730a20203b206f7074696f6e616c20736c6f7420616273656e74206f7220656d7074792e0a20203f2061636365707465644c61777061636b416461707465724162693a205b5d202f205b2265646963742e6c61777061636b2d616461707465722f7631225d2c0a2020646961676e6f737469634162693a207265736f757263652d7265662c0a0a20203b206170706c69636174696f6e20646f637472696e650a20206170706c69636174696f6e4d6f64656c3a202261746f6d6963222c0a202072656164436f6e73697374656e63793a20226170706c69636174696f6e2d736e617073686f7422202f20747374722c0a202067756172644576616c756174696f6e3a2022707265636f6d6d69742d61746f6d696322202f20747374722c0a20206f62737472756374696f6e526f6c6c6261636b3a20226e6f2d76697369626c652d6566666563747322202f20747374722c0a20206d756c74695461726765743a20626f6f6c2c0a20203b207768657468657220746865207461726765742063616e206576616c7561746520707265636f6d6d697420706f7374636f6e646974696f6e20286067756172616e746565602920636865636b730a20203b20696e73696465207468652061746f6d6963206170706c69636174696f6e20756e6974202845444943542d5441524745542d504f5354434f4e442d303031290a2020706f7374636f6e646974696f6e537570706f72743a20626f6f6c2c0a0a202064657465726d696e6973746963457865637574696f6e3a207265736f757263652d7265662c0a2020636f6e666f726d616e636546697874757265436f727075733a207265736f757263652d7265662c0a7d0a0a3b20536861726564207479706573207265736f757263652d72656620616e64207368613235362d6469676573742061726520646566696e6564206f6e636520696e0a3b2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d6120627920746865206275696c640a3b202845444943542d4142492d4e4f4455502d303031292e205468657920617265206e6f74207265646566696e656420686572652e0a0a3b202d2d2d20696e7472696e736963207369676e6174757265202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a3b20546865206172746966616374207265666572656e63656420627920746865206d616e696665737427732060696e7472696e7369637360207265736f757263652d726566206973207468650a3b20696e7472696e7369632d7369676e617475726520636f7270757320646f63756d656e742062656c6f772e20497473206c61796f757420697320666978656420736f2074776f0a3b20696e646570656e64656e742070726f66696c65732076616c69646174652f686173682074686520636f72707573206964656e746963616c6c790a3b202845444943542d4142492d494e5452494e534943532d444f432d303031292e0a0a3b20696e7472696e736963732069732061204d4150206b6579656420627920636f6f7264696e6174652c20736f2074686520736368656d6120697473656c6620656e666f726365730a3b20636f6f7264696e61746520756e697175656e6573732e20412070726f766964657220726563656976657320746865207265736f6c76656420636f7270757320617320610a3b206469676573742d626f756e642073656d616e74696320696e70757420616e64207265736f6c76657320636f6f7264696e617465732077697468696e20746861742061727469666163742e0a3b2045616368206d6170206b6579204d55535420657175616c20697473207265636f726427732060636f6f7264696e61746560206669656c640a3b202845444943542d4142492d494e5452494e5349432d554e495155452d303031292e0a696e7472696e736963732d646f63756d656e74203d207b0a202061706956657273696f6e3a202265646963742e7461726765742d70726f66696c652e696e7472696e736963732f7631222c0a2020696e7472696e736963733a207b202a2074737472203d3e20696e7472696e736963207d2c0a7d0a0a3b20546865206172746966616374207265666572656e63656420627920746865206d616e6966657374277320606f7065726174696f6e50726f66696c657360207265736f757263652d7265662e0a3b206f7065726174696f6e2d70726f66696c65202f206f707469632d74656d706c6174652061726520646566696e656420696e2065646963742d636f6d6d6f6e2e6364646c2e204b657965642062790a3b20636f6f7264696e61746520736f207265736f6c7574696f6e2063616e2774207069636b206265747765656e2074776f2073616d652d636f6f7264696e6174652070726f66696c65730a3b202845444943542d4142492d4f5050524f46494c452d534c4f542d3030312c2045444943542d4142492d4f5050524f46494c452d554e495155452d303031292e0a6f7065726174696f6e2d70726f66696c65732d646f63756d656e74203d207b0a202061706956657273696f6e3a202265646963742e7461726765742d70726f66696c652e6f7065726174696f6e2d70726f66696c65732f7631222c0a202070726f66696c65733a207b202a2074737472203d3e206f7065726174696f6e2d70726f66696c65207d2c0a7d0a0a3b2041207479706564207072652d6c6f776572696e67207175657374696f6e20746861742063616e2062652070726f706f73656420627920576174736f6e206f7220616e206167656e7420616e640a3b20636865636b65642062792074686520636f6d70696c65722e2049742069732063616e6f6e6963616c2d43424f5220656e636f64656420756e6465720a3b206065646963742e6c6f776572696e672d726571756972656d656e74732f7631603b2074686520636f6d70696c657220636865636b7320746869732061727469666163742c206e6f74207468650a3b2070726f736520746861742070726f64756365642069742e0a6c6f776572696e672d726571756972656d656e7473203d207b0a202061706956657273696f6e3a202265646963742e6c6f776572696e672d726571756972656d656e74732f7631222c0a20206f7065726174696f6e50726f66696c653a20747374722c0a202073656d616e746963456666656374733a205b2a2073656d616e7469632d6566666563742d726571756972656d656e745d2c0a202072657175697265645772697465436c61737365733a205b2a2077726974652d636c6173735d2c0a202067756172644b696e64733a205b2a2067756172642d6b696e645d2c0a202061746f6d69636974793a2061746f6d69636974792d726571756972656d656e742c0a2020706f7374636f6e646974696f6e537570706f72743a20626f6f6c2c0a20206f62737472756374696f6e436f6f7264696e617465733a205b2a20747374725d2c0a2020666f6f747072696e744f626c69676174696f6e733a205b2a20747374725d2c0a2020636f73744f626c69676174696f6e733a205b2a20747374725d2c0a20206f70746963436f6e74726163743a20747374722c0a7d0a0a73656d616e7469632d6566666563742d726571756972656d656e74203d207b0a2020636f6f7264696e6174653a20747374722c0a20207772697465436c6173733a2077726974652d636c6173732c0a202067756172644b696e64733a205b2a2067756172642d6b696e645d2c0a20206f62737472756374696f6e436f6f7264696e617465733a205b2a20747374725d2c0a2020666f6f747072696e744f626c69676174696f6e733a205b2a20747374725d2c0a2020636f73744f626c69676174696f6e733a205b2a20747374725d2c0a7d0a0a77726974652d636c617373203d20226e6f6e6522202f20227265616422202f202263726561746522202f2022656e7375726522202f2022617070656e6422202f0a2020202020202020202020202020227265706c61636522202f202264656c65746522202f20747374720a67756172642d6b696e64203d2022707265636f6d6d69742d61746f6d696322202f20747374720a61746f6d69636974792d726571756972656d656e74203d202261746f6d696322202f20747374720a0a3b20412067656e75696e6520756e696f6e3a207075726520636f6e7374727563746f7273206361727279206e6f20656666656374206b696e64206f72206661696c757265733b206566666563740a3b20696e7472696e73696373206d757374202845444943542d5441524745542d494e5452494e5349432d434c4153532d303031292e2054686520736368656d6120656e666f7263657320746869732c0a3b206e6f74206120636f6d6d656e742e0a0a3b2054686520696e7472696e736963277320636f6f7264696e6174652069732074686520696e7472696e73696373206d6170204b45592c206e6f7420612076616c7565206669656c642c20736f207468650a3b206b657920616e6420636f6f7264696e6174652063616e206e65766572206469736167726565202845444943542d4142492d494e5452494e5349432d554e495155452d303031292e0a696e7472696e736963203d20707572652d696e7472696e736963202f206566666563742d696e7472696e7369630a0a707572652d696e7472696e736963203d207b0a2020696e7472696e736963436c6173733a202270757265222c0a202074797065506172616d65746572733a205b2a20747374725d2c0a2020617267756d656e7454797065733a205b2a20636f72652d747970652d7265665d2c0a202072657475726e547970653a20636f72652d747970652d7265662c0a20206775617264537570706f72743a2066616c73652c0a2020666f6f747072696e7454656d706c6174653a20747374722c0a2020636f737454656d706c6174653a20747374722c0a20207772697465436c6173733a20226e6f6e65222c0a7d0a0a6566666563742d696e7472696e736963203d207b0a2020696e7472696e736963436c6173733a2022656666656374222c0a202074797065506172616d65746572733a205b2a20747374725d2c0a2020617267756d656e7454797065733a205b2a20636f72652d747970652d7265665d2c0a202072657475726e547970653a20636f72652d747970652d7265662c0a20206566666563744b696e643a206566666563742d6b696e642c0a20203b206d6170206b65796564206279206661696c75726520636f6f7264696e61746520286661696c7572652d6964656e74293b20746865206661696c75726520636f6f7264696e6174652069730a20203b20746865206b65792c206e6f7420612076616c7565206669656c642c20736f20756e697175656e657373206973207374727563747572616c0a20203b202845444943542d4142492d4641494c5552452d554e495155452d303031292e0a20206566666563744661696c757265733a207b202a206661696c7572652d6964656e74203d3e206566666563742d6661696c7572652d626f6479207d2c0a20206775617264537570706f72743a20626f6f6c2c0a2020666f6f747072696e7454656d706c6174653a20747374722c0a2020636f737454656d706c6174653a20747374722c0a20207772697465436c6173733a20227265616422202f202263726561746522202f2022656e7375726522202f2022617070656e6422202f20227265706c61636522202f0a20202020202020202020202020202264656c65746522202f2022637573746f6d222c0a202063616e5061727469636970617465496e41746f6d696347756172643a20626f6f6c2c0a7d0a0a3b206566666563742d6661696c7572652d626f64792c206566666563742d6b696e642c20617574686f726974792d636c6173732c20616e6420636f72652d747970652d7265662061726520646566696e65640a3b206f6e636520696e2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d61202845444943542d4142492d4e4f4455502d303031292e0a0a3b202d2d2d2065646963742d617574686f726974792d66616374732e6364646c202d2d2d0a3b2065646963742d617574686f726974792d66616374732e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f722074686520666972737420636f6d70696c65722d636f6e7465787420617574686f726974792d666163747320646f63756d656e742e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a3b0a3b205468697320736368656d6120697320617373656d626c656420776974682065646963742d636f6d6d6f6e2e6364646c20736f20736f757263652e6469676573742075736573207468650a3b20736861726564207368613235362d6469676573742074797065642076616c75652e204a534f4e2069732061207265766965772f696e7075742072656e646572696e673a206974730a3b20607368613235363a3c3634206865783e6020736f75726365206469676573742069732070726f6a656374656420746f205b60736861323536602c203332207261772062797465735d206f6e0a3b2074686520776972652c20616e64206974732066616374206172726179732070726f6a65637420746f2074686520636f6f7264696e6174652d6b65796564206d6170732062656c6f772e0a0a617574686f726974792d6661637473203d207b0a202061706956657273696f6e3a202265646963742e617574686f726974792d66616374732f7631222c0a2020736f757263653a20617574686f726974792d666163742d736f757263652c0a20206f7065726174696f6e50726f66696c65733a207b202a2074737472203d3e20617574686f726974792d6f7065726174696f6e2d70726f66696c652d66616374207d2c0a20206566666563745772697465436c61737365733a207b202a2074737472203d3e20617574686f726974792d77726974652d636c617373207d2c0a2020627564676574733a207b202a2074737472203d3e20617574686f726974792d6275646765742d66616374207d2c0a7d0a0a617574686f726974792d666163742d736f75726365203d207b0a20206b696e643a20226c61777061636b22202f202274617267657450726f66696c65222c0a2020636f6f7264696e6174653a20747374722c0a20206469676573743a207368613235362d6469676573742c0a7d0a0a3b20546865206d6170206b65792069732074686520736f75726365206f7065726174696f6e2d70726f66696c6520636f6f7264696e6174652e204974206973206e6f7420726570656174656420696e0a3b207468652076616c75652c20736f2061206b657920616e6420656d62656464656420636f6f7264696e6174652063616e6e6f742064697361677265652e20416c6c6f7765642077726974650a3b20636c61737365732061726520612063616e6f6e6963616c206d61702d7365743a2074686520636c6173732069732074686520756e69717565206b657920616e64206e756c6c206973207468650a3b20756e6974206d61726b65722e2043616e6f6e6963616c2043424f52206669786573206b6579206f7264657220776974686f75742061207365636f6e64206f72646572696e672072756c652e0a617574686f726974792d6f7065726174696f6e2d70726f66696c652d66616374203d207b0a2020636f72653a20747374722c0a2020616c6c6f7765645772697465436c61737365733a207b202a20617574686f726974792d77726974652d636c617373203d3e206e756c6c207d2c0a7d0a0a3b20546865206566666563745772697465436c6173736573206d6170206b6579206973207468652073656d616e7469632065666665637420636f6f7264696e6174652e2054686520627564676574730a3b206d6170206b65792069732074686520736f757263652062756467657420636f6f7264696e6174652e2043616e6f6e6963616c2043424f52206d61702d6b657920756e697175656e6573730a3b206d616b6573206475706c6963617465206661637420636f6f7264696e61746573207374727563747572616c6c7920756e726570726573656e7461626c652e0a617574686f726974792d6275646765742d66616374203d207b0a20206d617853746570733a2075696e742c0a20206d6178416c6c6f636174656442797465733a2075696e742c0a20206d61784f757470757442797465733a2075696e742c0a7d0a0a3b20417574686f726974794661637473446f63756d656e7420763120696e74656e74696f6e616c6c792061636365707473206f6e6c792074686520777269746520636c6173736573207468650a3b2063757272656e7420636f6d70696c6572206d6f64656c2063616e20636f6e73756d652e2060637573746f6d602069732074686520736f6c6520763120637573746f6d207370656c6c696e673b0a3b20617262697472617279207461726765742d70726f66696c6520657874656e73696f6e20737472696e677320646f206e6f7420656e746572207468697320636f6d70696c657220706174682e0a617574686f726974792d77726974652d636c617373203d20226e6f6e6522202f20227265616422202f202263726561746522202f2022656e7375726522202f2022617070656e6422202f0a202020202020202020202020202020202020202020202020227265706c61636522202f202264656c65746522202f2022637573746f6d220a0a3b202d2d2d2065646963742d726573756c742d70726f6a656374696f6e2e6364646c202d2d2d0a3b20535044582d4c6963656e73652d4964656e7469666965723a204170616368652d322e300a3b2065646963742d726573756c742d70726f6a656374696f6e2e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f7220636f6d70696c65722d6f776e6564206170706c69636174696f6e2d726573756c742070726f6a656374696f6e732e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a0a726573756c742d70726f6a656374696f6e203d207b0a2020736368656d613a202265646963742e726573756c742d70726f6a656374696f6e2f7631222c0a20206f7065726174696f6e436f6f7264696e6174653a20626f756e6465642d70726f6a656374696f6e2d746578742c0a20206f7574707574547970653a20626f756e6465642d70726f6a656374696f6e2d746578742c0a20206d61784f757470757442797465733a2075696e74202e677420302c0a202065787072657373696f6e3a20726573756c742d70726f6a656374696f6e2d657870722c0a7d0a0a726573756c742d70726f6a656374696f6e2d65787072203d20726573756c742d70726f6a656374696f6e2d7265636f7264202f20726573756c742d70726f6a656374696f6e2d736f757263650a0a726573756c742d70726f6a656374696f6e2d7265636f7264203d207b0a20206b696e643a20227265636f7264222c0a20203b2054686520726f6f74207265636f726420636f756e7473206173206f6e65206f66207468652052757374206465636f6465722773203235362065787072657373696f6e206e6f6465732e0a20203b204e657374656420616767726567617465206e6f646520636f756e742072656d61696e7320616e20617574686f7269746174697665206465636f64657220636865636b2e0a20206669656c64733a207b20302a32353520626f756e6465642d70726f6a656374696f6e2d74657874203d3e20726573756c742d70726f6a656374696f6e2d65787072207d2c0a7d0a0a726573756c742d70726f6a656374696f6e2d736f75726365203d207b0a20206b696e643a2022736f75726365222c0a2020736f757263653a20726573756c742d70726f6a656374696f6e2d736f757263652d6b696e642c0a20203b204d617463686573204d41585f524553554c545f50524f4a454354494f4e5f504154485f5345474d454e545320696e2065646963742d73796e7461782e0a2020706174683a205b302a333220626f756e6465642d70726f6a656374696f6e2d746578745d2c0a7d0a0a726573756c742d70726f6a656374696f6e2d736f757263652d6b696e64203d0a20207b206b696e643a20226170706c69636174696f6e496e70757422207d202f0a20207b0a202020206b696e643a20227075726542696e64696e67222c0a2020202062696e64696e6749643a20626f756e6465642d70726f6a656374696f6e2d746578742c0a20207d202f0a20207b0a202020206b696e643a20226361706162696c697479526573756c74222c0a202020207374657049643a20626f756e6465642d70726f6a656374696f6e2d746578742c0a20207d0a0a626f756e6465642d70726f6a656374696f6e2d74657874203d2074737472202e73697a652028312e2e31303234290a0a3b202d2d2d2065646963742d7461726765742d69722e6364646c202d2d2d0a3b20535044582d4c6963656e73652d4964656e7469666965723a204170616368652d322e300a3b2065646963742d7461726765742d69722e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f72207468652045646963742d6f776e65642054617267657420495220617274696661637420656e76656c6f70652e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a3b0a3b205468697320736368656d6120697320617373656d626c656420776974682065646963742d636f6d6d6f6e2e6364646c20616e642065646963742d636f72652e6364646c2e2049740a3b2064656c696265726174656c792072657573657320436f72652065787072657373696f6e732c20707265646963617465732c20627564676574732c206c6f63616c207265666572656e6365732c0a3b206f62737472756374696f6e20726561736f6e732c20616e64206f62737472756374696f6e2061726d7320736f2074686520736368656d61206d617463686573207468652076616c75650a3b20656d6974746564206279207468652063616e6f6e6963616c2054617267657420495220656e636f64657220726174686572207468616e20726573746174696e672074686f73652074797065732e0a3b2049742064657363726962657320746865207374727563747572616c207368617065206f662076616c6964206c6f776572696e672d70726f6475636564206172746966616374732e205468650a3b206c6f776572696e6720616e6420656e636f64657220636f6e7472616374732073657061726174656c7920656e666f7263652073656d616e746963206964656e7469666965722072756c65730a3b20616e642063616e6f6e6963616c206f72646572696e672f64656475706c69636174696f6e20666f72207365742d6c696b652076616c7565732e0a0a3b2054617267657420495220656e636f64696e672072656a6563747320616e20656d707479207461726765742d70726f66696c6520636f6f7264696e617465206265666f72652062797465730a3b2065786973742c20736f207468697320726f6f74207469676874656e732074686520736861726564207374727563747572616c207265736f757263652d726566206163636f7264696e676c792e0a7461726765742d69722d7265736f757263652d726566203d207b0a202069643a2074737472202e7265676578702022283f73292e2b222c0a20206469676573743a207368613235362d6469676573742c0a7d0a0a7461726765742d69722d6172746966616374203d207461726765742d69722d636c6f7365642d6172746966616374202f207461726765742d69722d6c65676163792d61727469666163740a0a7461726765742d69722d61727469666163742d636f6d6d6f6e203d20280a20206b696e643a202274617267657449724172746966616374222c0a2020646f6d61696e3a20747374722c0a202074617267657450726f66696c653a207461726765742d69722d7265736f757263652d7265662c0a2020736f75726365436f7265436f6f7264696e6174653a2074737472202e7265676578702022283f73292e2b222c0a290a0a7461726765742d69722d636c6f7365642d6172746966616374203d207b0a20207461726765742d69722d61727469666163742d636f6d6d6f6e2c0a202073656d616e746963436c6f737572653a207461726765742d69722d73656d616e7469632d636c6f737572652c0a2020696e74656e74733a207b202a2074737472203d3e207461726765742d69722d696e74656e74207d2c0a7d0a0a7461726765742d69722d6c65676163792d6172746966616374203d207b0a20207461726765742d69722d61727469666163742d636f6d6d6f6e2c0a2020696e74656e74733a207b202a2074737472203d3e207461726765742d69722d6c65676163792d696e74656e74207d2c0a7d0a0a7461726765742d69722d73656d616e7469632d636c6f73757265203d207b0a2020736f75726365436f72653a207461726765742d69722d7265736f757263652d7265662c0a20206c61777061636b733a205b2a207461726765742d69722d7265736f757263652d7265665d2c0a20203f206361706162696c69746965733a205b2a207461726765742d69722d7265736f757263652d7265665d2c0a7d0a0a7461726765742d69722d696e74656e74203d207b0a20207461726765742d69722d696e74656e742d636f6d6d6f6e2c0a20203f2062617369733a20636f72652d657870722c0a20203f207075726542696e64696e67733a205b312a207461726765742d69722d707572652d62696e64696e675d2c0a20203f2065787465726e616c416374696f6e52657175657374733a205b2a207461726765742d69722d65787465726e616c2d616374696f6e2d726571756573745d2c0a7d0a0a7461726765742d69722d6c65676163792d696e74656e74203d207b0a20207461726765742d69722d696e74656e742d636f6d6d6f6e2c0a7d0a0a7461726765742d69722d696e74656e742d636f6d6d6f6e203d20280a20206f7065726174696f6e50726f66696c653a20747374722c0a2020696e707574436f6e73747261696e74733a205b2a20696e7075742d636f6e73747261696e745d2c0a2020636f72654576616c756174696f6e4275646765743a20636f72652d6275646765742c0a2020726571756972656d656e74733a205b2a207461726765742d69722d726571756972656d656e745d2c0a202073746570733a205b2a207461726765742d69722d737465705d2c0a2020726573756c743a20636f72652d657870722c0a290a0a7461726765742d69722d726571756972656d656e74203d207b0a202069643a20747374722c0a20207072656469636174653a20636f72652d7072656469636174652c0a20206f6e4661696c7572653a20726571756972652d6661696c7572652d61726d2c0a7d0a0a7461726765742d69722d707572652d62696e64696e67203d207b0a202069643a2074737472202e7265676578702022283f73292e2b222c0a202062696e64696e673a206c6f63616c2d7265662c0a202076616c75653a20636f72652d657870722c0a7d0a0a7461726765742d69722d73746570203d207b0a202069643a20747374722c0a202062696e64696e673a206c6f63616c2d7265662c0a20206566666563743a20747374722c0a2020746172676574496e7472696e7369633a20747374722c0a2020696e7075743a20636f72652d657870722c0a20206f62737472756374696f6e4661696c757265733a205b2a206661696c7572652d6964656e745d2c0a20206f62737472756374696f6e41726d733a207b202a206661696c7572652d6964656e74203d3e206f62737472756374696f6e2d61726d207d2c0a7d0a0a7461726765742d69722d65787465726e616c2d616374696f6e2d72657175657374203d207b0a202069643a20747374722c0a202062696e64696e673a206c6f63616c2d7265662c0a20206f7065726174696f6e3a207461726765742d69722d7265736f757263652d7265662c0a2020696e707574547970653a20636f72652d747970652d7265662c0a2020736574746c656d656e74547970653a20636f72652d747970652d7265662c0a2020696e707574536368656d613a207461726765742d69722d7265736f757263652d7265662c0a2020736574746c656d656e74536368656d613a207461726765742d69722d7265736f757263652d7265662c0a2020696e7075743a20636f72652d657870722c0a2020617574686f7269747953636f70653a20636f72652d657870722c0a202062617369733a20636f72652d657870722c0a20206275646765743a2065787465726e616c2d616374696f6e2d6275646765742c0a20207265636f6e63696c696174696f6e4c61773a207461726765742d69722d7265736f757263652d7265662c0a202073746174653a20226177616974696e67536574746c656d656e74222c0a2020736574746c656d656e7441646d697373696f6e3a2022736368656d615265717569726564222c0a7d0a", - "rawSha256": "fe37a4252af4a732a62074b58947e052744a48397042eaadb0e61849fc245627" + "bytesHex": "3b20535044582d4c6963656e73652d4964656e7469666965723a204170616368652d322e300a3b2065646963742d70726f76696465722d636f6e7472616374732e6364646c0a3b2047656e6572617465642066726f6d2045646963742d6f776e65642041424920667261676d656e74732e20444f204e4f5420454449542e0a0a3b202d2d2d2065646963742d636f6d6d6f6e2e6364646c202d2d2d0a3b2065646963742d636f6d6d6f6e2e6364646c0a3b20536861726564204344444c20747970657320666f722074686520456469637420414249732c20646566696e6564204f4e4345206865726520736f20746865792063616e6e6f742064726966740a3b202845444943542d4142492d4e4f4455502d303031292e2054776f2067726f7570733a0a3b2020202d207265736f757263652d7265662c207368613235362d6469676573742c206566666563742d6661696c7572652d626f64792c206566666563742d6b696e642c20617574686f726974792d636c6173732c0a3b2020202020636f72652d747970652d7265663a20617373656d626c656420776974682065646963742d7461726765742d70726f66696c652e6364646c20616e640a3b202020202065646963742d6c61777061636b2e6364646c20627920746865206275696c643b2074686f736520736368656d617320646f206e6f74207265646566696e65207468656d2e0a3b2020202d206f7065726174696f6e2d70726f66696c652c206f707469632d74656d706c6174652c2061706572747572652d726571756972656d656e7420616e6420746865697220726566733a0a3b2020202020636f6e73756d65642062792074686520436f72652f6f70746963206c61796572202865646963742d636f72652e6364646c2920616e64207265666572656e636564206279207468650a3b20202020206c616e67756167652f7461726765742d70726f66696c652073706563732e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a0a3b2041206e6f726d617469766520737562636f6d706f6e656e74207265666572656e636564206279206964656e7469747920706c7573206469676573742e204d616e696665737473206e657665720a3b20656d626564207468656972206f776e2073656c662d64696765737420696e20746865697220707265696d616765202845444943542d434f52452d53454c46484153482d303031292e0a7265736f757263652d726566203d207b2069643a20747374722c206469676573743a207368613235362d646967657374207d0a0a3b20446967657374732061726520617574686f726974617469766520617320747970656420627974652076616c7565732c206e657665722068657820737472696e67732e20526576696577204a534f4e0a3b2072656e64657273207468697320617320227368613235363a3c3634206c6f77657263617365206865783e22202845444943542d4449474553542d574952452d303031292e0a7368613235362d646967657374203d205b20616c676f726974686d3a2022736861323536222c2062797465733a2062737472202e73697a65203332205d0a0a3b2041206e616d6564206c6f772d6c6576656c206661696c75726520616e206566666563742063616e2072616973652e2054686520736f75726365206f62737472756374696f6e206d61700a3b2062696e64732069742028627920636f6f7264696e6174652920616e6420636f6e73747275637473206120747970656420646f6d61696e206f62737472756374696f6e2066726f6d206974730a3b207061796c6f6164202845444943542d4142492d4641494c5552452d4e414d45442d303031292e0a3b20416e20656666656374277320606566666563744661696c7572657360206c697374204d555354206861766520756e697175652060636f6f7264696e61746560733a2073696e6365207468650a3b206f62737472756374696f6e206d6170206973206b6579656420627920636f6f7264696e6174652c2074776f206661696c757265732073686172696e67206120636f6f7264696e61746520286576656e0a3b207769746820646966666572656e7420617574686f72697479436c6173732f7061796c6f61645479706529206d616b652065786861757374697665206d617070696e6720616e642062696e6465720a3b20747970696e6720616d626967756f757320616e64206172652072656a6563746564202845444943542d4142492d4641494c5552452d554e495155452d303031292e0a3b0a3b2045666665637473206361727279207468656972206661696c757265732061732061206d617020607b206661696c7572652d6964656e74203d3e206566666563742d6661696c7572652d626f6479207d600a3b202873656520746865207461726765742f6c61777061636b2065666665637420736368656d6173292e20546865206661696c75726520636f6f7264696e61746520697320746865206d61700a3b204b45592c20736f206974206973206e6f7420726570656174656420696e2074686520626f647920616e642063616e6e6f74206469736167726565207769746820746865206b65792e0a6566666563742d6661696c7572652d626f6479203d207b0a2020617574686f72697479436c6173733a20617574686f726974792d636c6173732c0a20207061796c6f6164547970653a20636f72652d747970652d7265662c202020202020202020202020203b2074797065642c20626f756e64656420286d617920626520656d707479207265636f7264290a7d0a0a3b2041206661696c75726520636f6f7264696e617465206d7573742062652061206261726520456469637420606964656e746020286c65747465722f756e64657273636f7265207468656e0a3b206c6574746572732f6469676974732f756e64657273636f7265732920414e44206d757374206e6f742062652061207265736572766564206b6579776f72642028652e672e2060656c7365602c0a3b20606261736973602c20607768657265602c206072657175697265602c2060666f72602c2060696660292e2054686520736f75726365206f62737472756374696f6e2d6d6170204c4853206f6e6c790a3b20616363657074732061206e6f6e2d6b6579776f726420606964656e74602c20736f20612068797068656e2f646f742f6b6579776f726420636f6f7264696e61746520776f756c642062650a3b204142492d76616c69642079657420696d706f737369626c6520746f206d617020657868617573746976656c7920696e20736f757263652e20546865207265676578206361707475726573207468650a3b206c65786963616c2073686170653b206b6579776f7264206578636c7573696f6e20697320616e206164646974696f6e616c2076616c69646174696f6e2072756c650a3b202845444943542d4142492d4641494c5552452d4944454e542d303031292e0a6661696c7572652d6964656e74203d2074737472202e72656765787020225b412d5a612d7a5f5d5b412d5a612d7a302d395f5d2a220a0a6566666563742d6b696e64203d20227265616422202f202263726561746522202f2022656e7375726522202f20227265706c61636522202f202264656c65746522202f0a202020202020202020202020202022617070656e6422202f202272656475636522202f202273656d616e7469632e656d697422202f2022637573746f6d220a0a617574686f726974792d636c617373203d2022646f6d61696e4d61707061626c6522202f20227061727469636970616e744f776e656422202f2022696e746567726974794661756c7422202f0a202020202020202020202020202020202020227265736f757263654661756c7422202f2022696e7465726e616c4661756c74220a0a636f72652d747970652d726566203d20747374722020203b2063616e6f6e6963616c20436f7265207479706520636f6f7264696e6174650a0a3b20416e206f7065726174696f6e2070726f66696c6520737570706c69657320746865206f707469632074656d706c617465206120436f726520696e74656e74207265736f6c766573206974730a3b206f707469634b696e642f626f756e646172794b696e642f737570706f7274506f6c6963792f6c6f7373446973706f736974696f6e2066726f6d2e205461726765742070726f66696c657320616e640a3b206c61777061636b73207075626c6973682074686573652061732061206d617020607b20636f6f7264696e617465203d3e206f7065726174696f6e2d70726f66696c65207d602c20736f207468650a3b20636f6f7264696e61746520697320746865204b45592c206e6f7420612076616c7565206669656c64202845444943542d4f505449432d54454d504c4154452d4f574e45522d3030312c0a3b2045444943542d4142492d4f5050524f46494c452d554e495155452d303031292e0a6f7065726174696f6e2d70726f66696c65203d207b0a20206f7074696354656d706c6174653a206f707469632d74656d706c6174652c0a20206566666563745072656469636174653a20747374722c20202020202020202020203b20636f6f7264696e617465206f6620746865206f7065726174696f6e2d6d6f6465207072656469636174650a7d0a0a6f707469632d74656d706c617465203d207b0a20206f707469634b696e643a2022726576656c6174696f6e22202f20226166666563745265696e746567726174696f6e222c0a2020626f756e646172794b696e643a202270726f6a656374696f6e22202f2022616666656374222c0a2020737570706f7274506f6c6963793a20747374722c202020202020202020202020203b2063616e6f6e6963616c20737570706f72742d706f6c69637920636f6f7264696e6174650a20206c6f7373446973706f736974696f6e3a20747374722c20202020202020202020203b2063616e6f6e6963616c206c6f73732d646973706f736974696f6e20636f6f7264696e6174650a20203f20626173697354656d706c6174653a20747374722c20202020202020202020203b206f7074696f6e616c206469676573742d6c6f636b65642062617369732074656d706c61746520636f6f72640a20203b2074686520617065727475726520726571756972656d656e7420746869732074656d706c61746520737570706c6965732e205265717569726564207768656e207468652074656d706c6174650a20203b2069732074686520736f75726365206f66206120436f7265206f707469632773206170657274757265526571756972656d656e742028692e652e2074686520696e74656e7420686173206e6f0a20203b20736f757263652060666f6f747072696e74203c3d202e2e2e60292c2073696e6365206170657274757265526571756972656d656e74206973206d616e6461746f727920696e20436f72650a20203b202845444943542d4f505449432d41504552545552452d5245462d303031292e0a20203f206170657274757265526571756972656d656e743a2061706572747572652d726571756972656d656e742c0a7d0a0a3b206170657274757265526571756972656d656e742069732061207479706564207265666572656e63652c206e65766572206120667265652d666f726d20737472696e672e2041207265766965770a3b2072656e646572696e67206d61792073686f772069747320636f6f7264696e617465202845444943542d4f505449432d41504552545552452d5245462d303031292e0a61706572747572652d726571756972656d656e74203d20666f6f747072696e742d6365696c696e672d726566202f2061627374726163742d666f6f747072696e742d6f626c69676174696f6e2d7265660a666f6f747072696e742d6365696c696e672d726566203d207b206b696e643a2022666f6f747072696e744365696c696e67222c207265663a2074737472207d0a61627374726163742d666f6f747072696e742d6f626c69676174696f6e2d726566203d207b206b696e643a20226162737472616374466f6f747072696e744f626c69676174696f6e222c207265663a2074737472207d0a0a3b202d2d2d2065646963742d636f72652e6364646c202d2d2d0a3b2065646963742d636f72652e6364646c0a3b204e6f726d617469766520736368656d6120666f722074686520456469637420436f72652076312073656d616e746963206d6f64656c2e0a3b0a3b2053636f706520626f756e646172793a20746869732066696c6520646566696e657320436f7265206d65616e696e6720616e6420736368656d61207368617065206f6e6c792e20497420646f65730a3b206e6f7420646566696e6520612063616e6f6e6963616c20656e636f6465722c20436f7265206d6f64756c652068617368206669656c64732c20686173682066697874757265732c207461726765740a3b206c6f776572696e672c2061646d697373696f6e2062756e646c65732c206f72207461726765742d6f776e65642049522e0a0a636f72652d6d6f64756c65203d207b0a202061706956657273696f6e3a202265646963742e636f72652f7631222c0a2020636f6f7264696e6174653a20747374722c0a2020696d706f7274733a205b2a20636f72652d696d706f72745d2c0a202074797065733a207b202a2074737472203d3e20636f72652d74797065207d2c0a2020696e74656e74733a207b202b2074737472203d3e20636f72652d696e74656e74207d2c0a20207265717569726564436f72654361706162696c69746965733a205b2a20747374725d2c0a7d0a0a636f72652d696d706f7274203d207b0a20206b696e643a20226c61777061636b22202f202274617267657422202f2022636f726522202f20226361706162696c697479222c0a20207265663a207265736f757263652d7265662c0a20203f20616c6961733a20747374722c0a7d0a0a3b202d2d2d207479706573202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a636f72652d74797065203d20636f72652d7363616c61722d74797065202f20636f72652d7265636f72642d74797065202f20636f72652d76617269616e742d74797065202f0a202020202020202020202020636f72652d6f7074696f6e2d74797065202f20636f72652d6c6973742d74797065202f20636f72652d6d61702d74797065202f0a202020202020202020202020636f72652d6361706162696c6974792d7265662d74797065202f20636f72652d65787465726e616c2d616374696f6e2d726571756573742d747970650a0a636f72652d7363616c61722d74797065203d20636f72652d626f6f6c2d74797065202f20636f72652d696e742d74797065202f20636f72652d737472696e672d74797065202f0a20202020202020202020202020202020202020636f72652d62797465732d74797065202f20636f72652d756e69742d747970650a0a636f72652d626f6f6c2d74797065203d207b206b696e643a2022426f6f6c22207d0a636f72652d756e69742d74797065203d207b206b696e643a2022556e697422207d0a636f72652d696e742d74797065203d207b0a20206b696e643a202249363422202f202255363422202f202249333222202f202255333222202f202249313622202f202255313622202f2022493822202f20225538222c0a7d0a636f72652d737472696e672d74797065203d207b0a20206b696e643a2022537472696e67222c0a20206d61783a2075696e742c0a202063616e6f6e6963616c3a2022756e69636f64652d7363616c61722d6e666322202f20227261772d75746638222c0a7d0a636f72652d62797465732d74797065203d207b0a20206b696e643a20224279746573222c0a20203f206d696e3a2075696e742c0a20206d61783a2075696e742c0a7d0a636f72652d7265636f72642d74797065203d207b0a20206b696e643a20225265636f7264222c0a20206669656c64733a207b202a2074737472203d3e20636f72652d747970652d726566207d2c0a7d0a636f72652d76617269616e742d74797065203d207b0a20206b696e643a202256617269616e74222c0a202063617365733a207b202b2074737472203d3e2076617269616e742d636173652d626f6479207d2c0a7d0a76617269616e742d636173652d626f6479203d207b0a20203f207061796c6f61643a20636f72652d747970652d7265662c0a7d0a636f72652d6f7074696f6e2d74797065203d207b0a20206b696e643a20224f7074696f6e222c0a20206974656d3a20636f72652d747970652d7265662c0a7d0a636f72652d6c6973742d74797065203d207b0a20206b696e643a20224c697374222c0a20206974656d3a20636f72652d747970652d7265662c0a20206d61783a2075696e742c0a7d0a636f72652d6d61702d74797065203d207b0a20206b696e643a20224d6170222c0a20206b65793a20636f72652d747970652d7265662c0a202076616c75653a20636f72652d747970652d7265662c0a20206d61783a2075696e742c0a7d0a636f72652d6361706162696c6974792d7265662d74797065203d207b0a20206b696e643a20224361706162696c697479526566222c0a20206974656d3a20636f72652d747970652d7265662c0a7d0a636f72652d65787465726e616c2d616374696f6e2d726571756573742d74797065203d207b0a20206b696e643a202245787465726e616c416374696f6e52657175657374222c0a2020736574746c656d656e743a20636f72652d747970652d7265662c0a7d0a0a3b20636f72652d747970652d72656620697320646566696e656420696e2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d612e0a0a3b202d2d2d207265666572656e63657320616e642076616c756573202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a3b204c6f63616c206964656e7469747920697320616c7068612d737461626c652e20606964602069732074686520636f6d70696c65722d6f776e6564206c6f63616c20636f6f7264696e6174653b0a3b2060616c7068614e616d656020697320746865206e6f726d616c697a65642068756d616e2f6465627567206e616d652e20536f757263652062696e646572207370656c6c696e67206973206e6f740a3b206964656e746974792e0a6c6f63616c2d726566203d207b0a202069643a20747374722c0a2020616c7068614e616d653a20747374722c0a2020747970653a20636f72652d747970652d7265662c0a7d0a0a636f72652d76616c7565203d20636f72652d6e756c6c2d76616c7565202f20636f72652d626f6f6c2d76616c7565202f20636f72652d696e742d76616c7565202f0a20202020202020202020202020636f72652d737472696e672d76616c7565202f20636f72652d62797465732d76616c7565202f20636f72652d7265636f72642d76616c7565202f0a20202020202020202020202020636f72652d76617269616e742d76616c7565202f20636f72652d6c6973742d76616c7565202f20636f72652d6d61702d76616c7565202f0a20202020202020202020202020636f72652d6361706162696c6974792d76616c75650a0a636f72652d6e756c6c2d76616c7565203d207b206b696e643a20226e756c6c22207d0a636f72652d626f6f6c2d76616c7565203d207b206b696e643a2022626f6f6c222c2076616c75653a20626f6f6c207d0a636f72652d696e742d76616c7565203d207b206b696e643a2022696e74222c2077696474683a20747374722c2076616c75653a20696e74207d0a636f72652d737472696e672d76616c7565203d207b206b696e643a2022737472696e67222c2076616c75653a2074737472207d0a636f72652d62797465732d76616c7565203d207b206b696e643a20226279746573222c2076616c75653a2062737472207d0a636f72652d7265636f72642d76616c7565203d207b206b696e643a20227265636f7264222c206669656c64733a207b202a2074737472203d3e20636f72652d76616c7565207d207d0a636f72652d76617269616e742d76616c7565203d207b0a20206b696e643a202276617269616e74222c0a2020747970653a20636f72652d747970652d7265662c0a2020636173653a20747374722c0a20203f207061796c6f61643a20636f72652d76616c75652c0a7d0a636f72652d6c6973742d76616c7565203d207b206b696e643a20226c697374222c2076616c7565733a205b2a20636f72652d76616c75655d207d0a636f72652d6d61702d76616c7565203d207b206b696e643a20226d6170222c20656e74726965733a205b2a205b6b65793a20636f72652d76616c75652c2076616c75653a20636f72652d76616c75655d5d207d0a636f72652d6361706162696c6974792d76616c7565203d207b0a20206b696e643a20226361706162696c697479222c0a2020726563656970743a207368613235362d6469676573742c0a7d0a0a3b2045646963742d617574686f72656420707572652068656c70657273207573652061207075726520436f72652066756e6374696f6e20626f64792e2054686520626f64792063616e2062696e640a3b20707572652065787072657373696f6e7320616e642072657475726e20616e2065787072657373696f6e2c206275742069742063616e6e6f7420636f6e7461696e20436f7265206566666563742c0a3b2067756172642c206272616e63682c206c6f6f702c206d617463682d6e6f64652c206f722070726f6f662d6f626c69676174696f6e206e6f6465732e0a636f72652d666e2d626f6479203d207b0a2020706172616d733a205b2a206c6f63616c2d7265665d2c0a2020626f64793a20636f72652d707572652d626c6f636b2c0a7d0a0a636f72652d707572652d626c6f636b203d207b0a20206c6f63616c733a205b2a206c6f63616c2d7265665d2c0a202062696e64696e67733a205b2a20707572652d6c65742d6e6f64655d2c0a2020726573756c743a20636f72652d657870722c0a7d0a0a707572652d6c65742d6e6f6465203d207b0a20206b696e643a20226c6574222c0a202062696e64696e673a206c6f63616c2d7265662c0a202076616c75653a20636f72652d657870722c0a7d0a0a3b202d2d2d2065787072657373696f6e7320616e642070726564696361746573202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a636f72652d65787072203d206c6f63616c2d65787072202f20636f6e73742d65787072202f207265636f72642d65787072202f206669656c642d65787072202f0a20202020202020202020202076617269616e742d65787072202f206d617463682d65787072202f2063616c6c2d65787072202f206c6973742d65787072202f206d61702d65787072202f0a20202020202020202020202069662d657870720a0a6c6f63616c2d65787072203d207b206b696e643a20226c6f63616c222c207265663a206c6f63616c2d726566207d0a636f6e73742d65787072203d207b206b696e643a2022636f6e7374222c2076616c75653a20636f72652d76616c7565207d0a7265636f72642d65787072203d207b206b696e643a20227265636f7264222c206669656c64733a207b202a2074737472203d3e20636f72652d65787072207d207d0a6669656c642d65787072203d207b206b696e643a20226669656c64222c20626173653a20636f72652d657870722c206669656c643a2074737472207d0a76617269616e742d65787072203d207b0a20206b696e643a202276617269616e74222c0a2020747970653a20636f72652d747970652d7265662c0a2020636173653a20747374722c0a20203f207061796c6f61643a20636f72652d657870722c0a7d0a6d617463682d65787072203d207b0a20206b696e643a20226d61746368222c0a20207363727574696e65653a20636f72652d657870722c0a202061726d733a205b2b206d617463682d61726d5d2c0a7d0a6d617463682d61726d203d207b0a2020636173653a20747374722c0a20203f2062696e6465723a206c6f63616c2d7265662c0a2020626f64793a20636f72652d657870722c0a7d0a63616c6c2d65787072203d207b0a20206b696e643a202263616c6c222c0a202063616c6c65653a20747374722c0a202074797065417267733a205b2a20636f72652d747970652d7265665d2c0a2020617267733a205b2a20636f72652d657870725d2c0a7d0a6c6973742d65787072203d207b206b696e643a20226c697374222c2076616c7565733a205b2a20636f72652d657870725d207d0a6d61702d65787072203d207b206b696e643a20226d6170222c20656e74726965733a205b2a205b6b65793a20636f72652d657870722c2076616c75653a20636f72652d657870725d5d207d0a69662d65787072203d207b0a20206b696e643a20226966222c0a20207072656469636174653a20636f72652d7072656469636174652c0a20207468656e3a20636f72652d657870722c0a2020656c73653a20636f72652d657870722c0a7d0a0a636f72652d707265646963617465203d20747275652d707265646963617465202f2066616c73652d707265646963617465202f206e6f742d707265646963617465202f0a2020202020202020202020202020202020616c6c2d707265646963617465202f20616e792d707265646963617465202f20636f6d706172652d707265646963617465202f0a202020202020202020202020202020202063616c6c2d707265646963617465202f206f62737472756374696f6e2d7072656469636174650a0a747275652d707265646963617465203d207b206b696e643a20227472756522207d0a66616c73652d707265646963617465203d207b206b696e643a202266616c736522207d0a6e6f742d707265646963617465203d207b206b696e643a20226e6f74222c2076616c75653a20636f72652d707265646963617465207d0a616c6c2d707265646963617465203d207b206b696e643a2022616c6c222c2076616c7565733a205b2b20636f72652d7072656469636174655d207d0a616e792d707265646963617465203d207b206b696e643a2022616e79222c2076616c7565733a205b2b20636f72652d7072656469636174655d207d0a636f6d706172652d707265646963617465203d207b0a20206b696e643a2022636f6d70617265222c0a20206f703a20223d3d22202f2022213d22202f20223c22202f20223c3d22202f20223e22202f20223e3d222c0a20206c6566743a20636f72652d657870722c0a202072696768743a20636f72652d657870722c0a7d0a63616c6c2d707265646963617465203d207b0a20206b696e643a202263616c6c222c0a20207072656469636174653a20747374722c0a2020617267733a205b2a20636f72652d657870725d2c0a7d0a6f62737472756374696f6e2d707265646963617465203d207b0a20206b696e643a20226f62737472756374696f6e222c0a2020636f6f7264696e6174653a206661696c7572652d6964656e742c0a20207061796c6f61643a20636f72652d657870722c0a7d0a0a696e7075742d636f6e73747261696e74203d207b0a2020636f6f7264696e6174653a20747374722c0a2020736f757263653a2022776865726522202f2022636f6d70696c6572222c0a20207072656469636174653a20636f72652d7072656469636174652c0a7d0a0a3b202d2d2d20696e74656e74732c20626c6f636b732c20616e64206e6f646573202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a636f72652d696e74656e74203d207b0a2020696e7075743a20636f72652d747970652d7265662c0a20206f75747075743a20636f72652d747970652d7265662c0a202072657175697265644f7065726174696f6e50726f66696c653a20747374722c0a20203f2062617369733a20636f72652d657870722c0a2020696e707574436f6e73747261696e74733a205b2a20696e7075742d636f6e73747261696e745d2c0a2020636f72654576616c756174696f6e4275646765743a20636f72652d6275646765742c0a2020626f64793a20636f72652d626c6f636b2c0a20203f206f707469633a20636f72652d6f707469632c0a7d0a0a636f72652d627564676574203d207b0a20206d617853746570733a2075696e742c0a20206d6178416c6c6f636174656442797465733a2075696e742c0a20206d61784f757470757442797465733a2075696e742c0a7d0a0a636f72652d6f70746963203d207b0a20206f707469634b696e643a2022726576656c6174696f6e22202f20226166666563745265696e746567726174696f6e222c0a2020626f756e646172794b696e643a202270726f6a656374696f6e22202f2022616666656374222c0a20206170657274757265526571756972656d656e743a2061706572747572652d726571756972656d656e742c0a2020737570706f7274506f6c6963793a20747374722c0a20206c6f7373446973706f736974696f6e3a20747374722c0a7d0a0a636f72652d626c6f636b203d207b0a20206c6f63616c733a205b2a206c6f63616c2d7265665d2c0a20206e6f6465733a205b2a20636f72652d6e6f64655d2c0a2020726573756c743a20636f72652d657870722c0a7d0a0a636f72652d6e6f6465203d206c65742d6e6f6465202f20726571756972652d6e6f6465202f206566666563742d6e6f6465202f0a20202020202020202020202065787465726e616c2d616374696f6e2d726571756573742d6e6f6465202f2067756172642d6e6f6465202f206272616e63682d6e6f6465202f0a202020202020202020202020666f722d6e6f6465202f206d617463682d6e6f6465202f2070726f6f662d6f626c69676174696f6e2d6e6f64650a0a6c65742d6e6f6465203d207b0a20206b696e643a20226c6574222c0a202062696e64696e673a206c6f63616c2d7265662c0a202076616c75653a20636f72652d657870722c0a7d0a726571756972652d6e6f6465203d207b0a20206b696e643a202272657175697265222c0a20207072656469636174653a20636f72652d7072656469636174652c0a20206f6e4661696c7572653a20726571756972652d6661696c7572652d61726d2c0a7d0a726571756972652d6661696c7572652d61726d203d207465726d696e616c2d726571756972652d6661696c757265202f0a20202020202020202020202020202020202020202020636f6e74696e75652d6f6273747275637465642d726571756972652d6661696c7572650a7465726d696e616c2d726571756972652d6661696c757265203d207b0a20206b696e643a20227465726d696e616c222c0a2020726561736f6e3a206f62737472756374696f6e2d726561736f6e2c0a7d0a636f6e74696e75652d6f6273747275637465642d726571756972652d6661696c757265203d207b0a20206b696e643a2022636f6e74696e75654f627374727563746564222c0a2020726561736f6e3a206f62737472756374696f6e2d726561736f6e2c0a7d0a6f62737472756374696f6e2d726561736f6e203d207b0a2020726561736f6e4b696e643a20747374722c0a20207061796c6f61643a207b202a2074737472203d3e20636f72652d65787072207d2c0a7d0a6566666563742d6e6f6465203d207b0a20206b696e643a2022656666656374222c0a202062696e64696e673a206c6f63616c2d7265662c0a20206566666563743a20747374722c0a2020696e7075743a20636f72652d657870722c0a20206f62737472756374696f6e4d61703a207b202a206661696c7572652d6964656e74203d3e206f62737472756374696f6e2d61726d207d2c0a7d0a65787465726e616c2d616374696f6e2d726571756573742d6e6f6465203d207b0a20206b696e643a202265787465726e616c416374696f6e52657175657374222c0a202062696e64696e673a206c6f63616c2d7265662c0a20206f7065726174696f6e3a207265736f757263652d7265662c0a2020696e707574547970653a20636f72652d747970652d7265662c0a2020736574746c656d656e74547970653a20636f72652d747970652d7265662c0a2020696e707574536368656d613a207265736f757263652d7265662c0a2020736574746c656d656e74536368656d613a207265736f757263652d7265662c0a2020696e7075743a20636f72652d657870722c0a2020617574686f7269747953636f70653a20636f72652d657870722c0a202062617369733a20636f72652d657870722c0a20206275646765743a2065787465726e616c2d616374696f6e2d6275646765742c0a20207265636f6e63696c696174696f6e4c61773a207265736f757263652d7265662c0a202073746174653a20226177616974696e67536574746c656d656e74222c0a2020736574746c656d656e7441646d697373696f6e3a2022736368656d615265717569726564222c0a7d0a65787465726e616c2d616374696f6e2d627564676574203d207b0a20206d6178536574746c656d656e7442797465733a20636f72652d657870722c0a20206d6178417474656d7074733a20636f72652d657870722c0a7d0a6f62737472756374696f6e2d61726d203d207b0a202062696e6465723a206c6f63616c2d7265662c0a202076616c75653a20636f72652d657870722c0a7d0a67756172642d6e6f6465203d207b0a20206b696e643a20226775617264222c0a20207072656469636174653a20636f72652d7072656469636174652c0a20206f62737472756374696f6e3a20636f72652d657870722c0a7d0a6272616e63682d6e6f6465203d207b0a20206b696e643a20226272616e6368222c0a20203f2062696e64696e673a206c6f63616c2d7265662c0a20207072656469636174653a20636f72652d7072656469636174652c0a20207468656e3a20636f72652d626c6f636b2c0a2020656c73653a20636f72652d626c6f636b2c0a7d0a666f722d6e6f6465203d207b0a20206b696e643a2022666f72222c0a202062696e6465723a206c6f63616c2d7265662c0a2020697465723a20636f72652d657870722c0a2020626f756e643a20636f72652d626f756e642c0a2020626f64793a20636f72652d626c6f636b2c0a7d0a6d617463682d6e6f6465203d207b0a20206b696e643a20226d61746368222c0a20207363727574696e65653a20636f72652d657870722c0a202061726d733a205b2b206d617463682d626c6f636b2d61726d5d2c0a7d0a6d617463682d626c6f636b2d61726d203d207b0a2020636173653a20747374722c0a20203f2062696e6465723a206c6f63616c2d7265662c0a2020626f64793a20636f72652d626c6f636b2c0a7d0a70726f6f662d6f626c69676174696f6e2d6e6f6465203d207b0a20206b696e643a202270726f6f66222c0a2020636f6f7264696e6174653a20747374722c0a20207072656469636174653a20636f72652d7072656469636174652c0a7d0a0a636f72652d626f756e64203d206c69746572616c2d626f756e64202f20636f6f7264696e6174652d626f756e640a6c69746572616c2d626f756e64203d207b206b696e643a20226c69746572616c222c2076616c75653a2075696e74207d0a636f6f7264696e6174652d626f756e64203d207b206b696e643a2022636f6f7264696e617465222c207265663a2074737472207d0a0a3b20536861726564207265736f757263652d7265662c207368613235362d6469676573742c206661696c7572652d6964656e742c2061706572747572652d726571756972656d656e742c20616e640a3b20636f72652d747970652d7265662061726520646566696e6564206f6e636520696e2065646963742d636f6d6d6f6e2e6364646c2e0a0a3b202d2d2d2065646963742d6c61777061636b2e6364646c202d2d2d0a3b2065646963742d6c61777061636b2e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f7220746865204564696374206c61777061636b206d616e696665737420616e64206578706f727420737572666163652e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e204a534f4e20696e207468652070726f73652073706563730a3b2069732061207265766965772072656e646572696e672067656e6572617465642066726f6d207468697320736368656d61202845444943542d4142492d4e4f4455502d303031292e0a0a6c61777061636b2d6d616e6966657374203d207b0a202061706956657273696f6e3a202265646963742e6c61777061636b2f7631222c0a202069643a20747374722c0a202076657273696f6e3a20747374722c0a20206163636570746564436f72654162693a205b2b20747374725d2c0a2020646570656e64656e636965733a205b2a206c61777061636b2d6465705d2c202020202020202020203b20616379636c69632c206469676573742d6c6f636b6564202845444943542d4c41575041434b2d4441472d303031290a20206578706f7274733a207265736f757263652d7265662c0a20203f2074617267657441646170746572733a205b2b207461726765742d616461707465725d2c2020203b207265717569726564206f6e6c7920696620616e792072756e74696d6520656666656374206578697374730a20203f2068656c706572436f6d706f6e656e743a2065786563757461626c652d636f6d706f6e656e742c203b2065786563757461626c652068656c70657273206361727279207468656972206f776e2073616e64626f782b6675656c0a202076657269666965723a2076657269666965722c202020202020202020202020202020202020202020203b20636c61737369666965643a206465636c61726174697665206f722065786563757461626c650a2020636f6d7061746962696c6974793a207265736f757263652d7265662c0a2020636f6e666f726d616e636546697874757265436f727075733a207265736f757263652d7265662c0a7d0a0a3b2041207665726966696572206973206569746865722061206465636c617261746976652072756c6573657420286e6f2072756e74696d6529206f7220616e2065786563757461626c650a3b20636f6d706f6e656e742e20416e2065786563757461626c65207665726966696572204d55535420636172727920697473206f776e2073616e64626f7820616e64206675656c206d6f64656c2c0a3b20736f2074686520736368656d6120656e666f726365732074686174206e6f2065786563757461626c6520636f6d706f6e656e74206973206c65667420756e626f756e6465640a3b202845444943542d4142492d56455249464945522d424f554e442d303031292e0a7665726966696572203d206465636c617261746976652d7665726966696572202f2065786563757461626c652d76657269666965720a6465636c617261746976652d7665726966696572203d207b20636c6173733a20226465636c61726174697665222c2072756c657365743a207265736f757263652d726566207d0a65786563757461626c652d7665726966696572203d207b0a2020636c6173733a202265786563757461626c65222c0a2020636f6d706f6e656e743a207265736f757263652d7265662c0a202073616e64626f783a207265736f757263652d7265662c0a20206675656c4d6f64656c3a207265736f757263652d7265662c0a7d0a0a3b20416e792065786563757461626c6520636f6d706f6e656e7420697320626f756e64656420627920697473206f776e2073616e64626f78202b206675656c206d6f64656c2e0a65786563757461626c652d636f6d706f6e656e74203d207b0a2020636f6d706f6e656e743a207265736f757263652d7265662c0a202073616e64626f783a207265736f757263652d7265662c0a20206675656c4d6f64656c3a207265736f757263652d7265662c0a7d0a0a6c61777061636b2d646570203d207b2069643a20747374722c2076657273696f6e3a20747374722c206469676573743a207368613235362d646967657374207d0a0a3b20416461707465722073656c656374696f6e206b65797320534f4c454c59206f666620746865206469676573742d6c6f636b65642060616363657074656454617267657450726f66696c65600a3b20286974732060696460206973207468652070726f66696c652069643b206974732060646967657374602070696e73207468652065786163742070726f66696c652f76657273696f6e292e2054686572650a3b20617265206e6f20696e646570656e64656e7420646973706c617920737472696e6773207468617420636f756c64206469736167726565207769746820746865206c6f636b2c20736f20610a3b207265736f6c7665722063616e6e6f742062696e6420616e206164617074657220746f206f6e6520746172676574207768696c6520746865206c6f636b2070726f76657320616e6f746865720a3b202845444943542d4c41575041434b2d414441505445522d54415247455449522d303031292e0a7461726765742d61646170746572203d207b0a2020616363657074656454617267657450726f66696c653a207265736f757263652d7265662c202020203b206469676573742d6c6f636b65642c20617574686f72697461746976652073656c6563746f720a2020616363657074656454617267657449723a207265736f757263652d7265662c2020202020202020203b206469676573742d6c6f636b65640a2020616461707465723a207265736f757263652d7265662c0a7d0a0a3b20536861726564207479706573207265736f757263652d72656620616e64207368613235362d6469676573742061726520646566696e6564206f6e636520696e0a3b2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d61202845444943542d4142492d4e4f4455502d303031292e0a0a3b202d2d2d206578706f72742073757266616365202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a6c61777061636b2d6578706f727473203d207b0a202074797065733a205b2a206578706f727465642d747970655d2c0a2020636f6e7374616e74733a205b2a206578706f727465642d636f6e7374616e745d2c0a20207075726546756e6374696f6e733a205b2a20707572652d66756e6374696f6e5d2c0a2020656666656374733a205b2a2073656d616e7469632d6566666563745d2c0a20206f62737472756374696f6e733a205b2a206f62737472756374696f6e2d6465665d2c0a20203b206b65796564206279206f7065726174696f6e2d70726f66696c6520636f6f7264696e61746520e2869220756e697175656e65737320656e666f726365640a20203b202845444943542d4142492d4f5050524f46494c452d554e495155452d303031290a20203b206f7065726174696f6e2d70726f66696c65207265636f7264732074686973206c61777061636b206578706f72747320286f707469632074656d706c6174657320746861740a20203b2060696d706c656d656e7473602f6070726f66696c656020636c6175736573207265736f6c766520616761696e7374292e206f7065726174696f6e2d70726f66696c652069730a20203b20646566696e656420696e2065646963742d636f6d6d6f6e2e6364646c202845444943542d4142492d4f5050524f46494c452d534c4f542d303031292e0a20206f7065726174696f6e50726f66696c65733a207b202a2074737472203d3e206f7065726174696f6e2d70726f66696c65207d2c20203b206b6579656420627920636f6f7264696e6174650a7d0a0a6578706f727465642d7479706520202020203d207b20636f6f7264696e6174653a20747374722c20646566696e6974696f6e3a20636f72652d747970652d726566207d0a6578706f727465642d636f6e7374616e74203d207b20636f6f7264696e6174653a20747374722c20747970653a20636f72652d747970652d7265662c2076616c75653a20616e79207d0a0a3b204120707572652068656c7065722069732061206469736372696d696e6174656420756e696f6e2062792060736f75726365602c20736f2074686520736368656d6120697473656c660a3b2067756172616e7465657320616e20696d706c656d656e746174696f6e20657869737473202845444943542d4c41575041434b2d505552452d494d504c2d303031293a0a3b2020202d20226564696374223a20617574686f72656420696e2045646963742f436f72653b2074686520436f726520626f6479206973206361727269656420696e6c696e6520286861736865640a3b20202020207769746820746865206578706f72742073757266616365292e2054686520736368656d61207265717569726573207468652060626f647960206669656c642e0a3b2020202d2022636f6d706f6e656e74223a20696d706c656d656e746564206f7574736964652045646963743b2063617272696573206e6f20696e6c696e6520626f647920616e6420696e73746561640a3b20202020206361727269657320697473206f776e206469676573742d6c6f636b65642060696d706c656d656e746174696f6e60202873616e64626f78202b206675656c292e20497420646f65730a3b20202020206e6f7420646570656e64206f6e20746865206f7074696f6e616c206d616e69666573742d6c6576656c2068656c706572436f6d706f6e656e742e0a707572652d66756e6374696f6e203d2065646963742d707572652d66756e6374696f6e202f20636f6d706f6e656e742d707572652d66756e6374696f6e0a0a707572652d66756e6374696f6e2d636f6d6d6f6e203d20280a2020636f6f7264696e6174653a20747374722c0a202074797065506172616d65746572733a205b2a20747374725d2c0a2020706172616d6574657254797065733a205b2a20636f72652d747970652d7265665d2c2020202020203b20616c6c20626f756e6465640a202072657475726e547970653a20636f72652d747970652d7265662c20202020202020202020202020203b20626f756e6465640a2020636f737454656d706c6174653a20747374722c0a202064657465726d696e69736d436c6173733a2022746f74616c22202f2022746f74616c2d776974682d74797065642d646961676e6f73746963222c0a290a0a65646963742d707572652d66756e6374696f6e203d207b0a2020707572652d66756e6374696f6e2d636f6d6d6f6e2c0a2020736f757263653a20226564696374222c0a2020626f64793a20636f72652d666e2d626f64792c2020202020202020202020202020202020202020203b20696e6c696e652c20686173682d7369676e69666963616e740a7d0a0a636f6d706f6e656e742d707572652d66756e6374696f6e203d207b0a2020707572652d66756e6374696f6e2d636f6d6d6f6e2c0a2020736f757263653a2022636f6d706f6e656e74222c0a20203b20746865206469676573742d6c6f636b656420636f6d706f6e656e7420696d706c656d656e74696e6720746869732068656c7065722e2052657175697265642061742074686520736368656d610a20203b206c6576656c20736f206120636f6d706f6e656e742068656c7065722063616e206e657665722076616c696461746520776974686f7574206120686173682d626f756e642c0a20203b2073616e64626f782b6675656c2d64657363726962656420696d706c656d656e746174696f6e202845444943542d4c41575041434b2d505552452d494d504c2d303031292e0a2020696d706c656d656e746174696f6e3a2065786563757461626c652d636f6d706f6e656e742c0a7d0a0a3b20636f72652d666e2d626f647920697320646566696e65642062792065646963742d636f72652e6364646c20616e6420617373656d626c656420776974682074686973206c61777061636b0a3b20736368656d612e2049742069732061207075726520436f72652066756e6374696f6e20626f64792c206e6f7420616e206566666563742d63617061626c6520636f72652d626c6f636b2e0a0a73656d616e7469632d656666656374203d207b0a2020636f6f7264696e6174653a20747374722c0a202074797065506172616d65746572733a205b2a20747374725d2c0a2020696e707574547970653a20636f72652d747970652d7265662c2020202020202020202020202020203b20626f756e6465640a20206f7574707574547970653a20636f72652d747970652d7265662c20202020202020202020202020203b20626f756e6465640a2020657865637574696f6e436c6173733a202270726f6f664f6e6c7922202f202272756e74696d65222c2020203b206f7274686f676f6e616c20746f207772697465436c6173730a20206566666563744b696e6448696e743a206566666563742d6b696e642c0a2020666f6f747072696e744f626c69676174696f6e3a20747374722c0a2020636f73744f626c69676174696f6e3a20747374722c0a20206566666563744661696c757265733a207b202a206661696c7572652d6964656e74203d3e206566666563742d6661696c7572652d626f6479207d2c20203b206b6579656420627920636f6f7264696e6174653b20756e697175650a20206775617264537570706f72743a20626f6f6c2c0a7d0a0a6f62737472756374696f6e2d646566203d207b0a2020636f6f7264696e6174653a20747374722c0a2020617574686f72697479436c6173733a20617574686f726974792d636c6173732c0a20207061796c6f6164536368656d613a20636f72652d747970652d7265662c20202020202020202020203b2074797065642c20626f756e64656420286d617920626520656d707479207265636f7264290a7d0a0a3b206566666563742d6661696c7572652d626f64792c206566666563742d6b696e642c20617574686f726974792d636c6173732c20616e6420636f72652d747970652d7265662061726520646566696e65640a3b206f6e636520696e2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d61202845444943542d4142492d4e4f4455502d303031292e0a0a3b202d2d2d2065646963742d6c61777061636b2d616461707465722e6364646c202d2d2d0a3b2065646963742d6c61777061636b2d616461707465722e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f72206f6e6520646972656374206465636c61726174697665206c61777061636b2074617267657420616461707465722e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a3b0a3b2054686520656e636c6f73696e67206c61777061636b206d616e69666573742073656c6563747320746865206578616374207461726765742070726f66696c652c207461726765742049522c0a3b20616e642061646170746572207265736f75726365206469676573742e2054686f7365206964656e74697469657320617265206e6f7420726570656174656420686572652e0a0a6c61777061636b2d61646170746572203d207b0a202061706956657273696f6e3a202265646963742e6c61777061636b2d616461707465722f7631222c0a2020636c6173733a20226465636c61726174697665222c0a20206f7065726174696f6e50726f66696c65733a207b0a202020202a2074737472203d3e206c61777061636b2d616461707465722d6f7065726174696f6e2d70726f66696c650a20207d2c0a2020656666656374496d706c656d656e746174696f6e733a207b0a202020202a2074737472203d3e206c61777061636b2d616461707465722d6566666563740a20207d2c0a2020627564676574733a207b0a202020202a2074737472203d3e206c61777061636b2d616461707465722d6275646765740a20207d2c0a7d0a0a3b204b657973206172652063616e6f6e6963616c206c61777061636b206f7065726174696f6e2d70726f66696c6520636f6f7264696e617465732e0a6c61777061636b2d616461707465722d6f7065726174696f6e2d70726f66696c65203d0a20207b0a20202020636f72653a20747374722c0a2020202073656d616e746963456666656374733a205b2b20747374725d2c0a202020203f206275646765744f626c69676174696f6e3a20747374722c0a202020203f20746172676574436f6e66696775726174696f6e3a207265736f757263652d7265662c0a20207d202f0a20207b0a20202020636f72653a20747374722c0a2020202073656d616e746963456666656374733a205b5d2c0a202020206275646765744f626c69676174696f6e3a20747374722c0a20202020746172676574436f6e66696775726174696f6e3a207265736f757263652d7265662c0a20207d0a0a3b204b657973206172652063616e6f6e6963616c206c61777061636b2073656d616e7469632d65666665637420636f6f7264696e617465732e20466f6f747072696e742c20636f73742c20616e640a3b206661696c757265206669656c6473206d7573742065786163746c792064697363686172676520746865206d61746368696e67206578706f72746564206566666563742e0a6c61777061636b2d616461707465722d656666656374203d207b0a2020746172676574496e7472696e7369633a20747374722c0a2020746172676574436f6e66696775726174696f6e3a207265736f757263652d7265662c0a20207772697465436c6173733a206c61777061636b2d616461707465722d77726974652d636c6173732c0a2020666f6f747072696e744f626c69676174696f6e3a20747374722c0a2020636f73744f626c69676174696f6e3a20747374722c0a20206661696c7572654d617070696e67733a207b202a206661696c7572652d6964656e74203d3e2074737472207d2c0a7d0a0a3b204b657973206172652063616e6f6e6963616c206578706f7274656420636f73742d6f626c69676174696f6e20636f6f7264696e617465732e0a6c61777061636b2d616461707465722d627564676574203d207b0a20206d617853746570733a2075696e742c0a20206d6178416c6c6f636174656442797465733a2075696e742c0a20206d61784f757470757442797465733a2075696e742c0a7d0a0a6c61777061636b2d616461707465722d77726974652d636c617373203d20226e6f6e6522202f20227265616422202f202263726561746522202f2022656e7375726522202f0a20202020202020202020202020202020202020202020202020202020202022617070656e6422202f20227265706c61636522202f202264656c65746522202f2022637573746f6d220a0a3b206661696c7572652d6964656e7420697320646566696e656420696e2065646963742d636f6d6d6f6e2e6364646c2e0a0a3b202d2d2d2065646963742d7461726765742d70726f66696c652e6364646c202d2d2d0a3b2065646963742d7461726765742d70726f66696c652e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f7220746865204564696374207461726765742070726f66696c65206d616e69666573742e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76310a3b202873656520535045435f636f6e74696e75756d2d636f6e74726163742d62756e646c652d76312e6d64292e204a534f4e20696e207468652070726f736520737065637320697320610a3b207265766965772072656e646572696e672067656e6572617465642066726f6d207468697320736368656d613b2074686973204344444c206973207468652073696e676c6520736f757263650a3b206f66207472757468202845444943542d4142492d4e4f4455502d303031292e0a0a7461726765742d70726f66696c652d6d616e6966657374203d207b0a202061706956657273696f6e3a202265646963742e7461726765742d70726f66696c652f7631222c0a202069643a20747374722c202020202020202020202020202020202020202020202020203b20652e672e20226563686f2e64706f220a202076657273696f6e3a20747374722c20202020202020202020202020202020202020203b20652e672e202231220a20206163636570746564436f72654162693a205b2b20747374725d2c20202020202020203b20652e672e205b2265646963742e636f72652f7631225d0a0a2020696e7472696e736963733a207265736f757263652d7265662c0a2020696e7472696e7369634e616d6573706163653a20747374722c0a20203b207075626c697368657320746869732070726f66696c652773206f7065726174696f6e2d70726f66696c65207265636f72647320286f707469632074656d706c6174657320746861740a20203b206070726f66696c65602f60696d706c656d656e74736020636c6175736573207265736f6c766520616761696e7374292e205265666572656e63657320616e0a20203b206f7065726174696f6e2d70726f66696c65732d646f63756d656e74202845444943542d4142492d4f5050524f46494c452d534c4f542d303031292e0a20206f7065726174696f6e50726f66696c65733a207265736f757263652d7265662c0a2020666f6f747072696e74416c67656272613a207265736f757263652d7265662c0a2020636f7374416c67656272613a207265736f757263652d7265662c0a202074617267657449723a207265736f757263652d7265662c0a20206f62737472756374696f6e5461786f6e6f6d793a207265736f757263652d7265662c0a202076657269666965723a207265736f757263652d7265662c0a20206c6f77657265723a207265736f757263652d7265662c0a202073616e64626f783a207265736f757263652d7265662c0a20206675656c4d6f64656c3a207265736f757263652d7265662c0a0a20203b206669656c647320746865206c616e67756167652073706563207265717569726573206f662065766572792070726f66696c650a202062756e646c6550726f66696c653a207265736f757263652d7265662c0a202067656e657261746564417274696661637450726f66696c65733a205b2a207265736f757263652d7265665d2c0a202063616e6f6e6963616c456e636f64696e6752756c65733a207265736f757263652d7265662c0a20203b20412070726f66696c65207468617420616363657074732074686520646972656374206465636c61726174697665206c61777061636b2d6164617074657220414249206e616d65732069740a20203b2065786163746c79206f6e63652e2050726f66696c6573207468617420646f206e6f7420636f6e73756d65206c61777061636b206164617074657273206c6561766520746869730a20203b206f7074696f6e616c20736c6f7420616273656e74206f7220656d7074792e0a20203f2061636365707465644c61777061636b416461707465724162693a205b5d202f205b2265646963742e6c61777061636b2d616461707465722f7631225d2c0a2020646961676e6f737469634162693a207265736f757263652d7265662c0a0a20203b206170706c69636174696f6e20646f637472696e650a20206170706c69636174696f6e4d6f64656c3a202261746f6d6963222c0a202072656164436f6e73697374656e63793a20226170706c69636174696f6e2d736e617073686f7422202f20747374722c0a202067756172644576616c756174696f6e3a2022707265636f6d6d69742d61746f6d696322202f20747374722c0a20206f62737472756374696f6e526f6c6c6261636b3a20226e6f2d76697369626c652d6566666563747322202f20747374722c0a20206d756c74695461726765743a20626f6f6c2c0a20203b207768657468657220746865207461726765742063616e206576616c7561746520707265636f6d6d697420706f7374636f6e646974696f6e20286067756172616e746565602920636865636b730a20203b20696e73696465207468652061746f6d6963206170706c69636174696f6e20756e6974202845444943542d5441524745542d504f5354434f4e442d303031290a2020706f7374636f6e646974696f6e537570706f72743a20626f6f6c2c0a0a202064657465726d696e6973746963457865637574696f6e3a207265736f757263652d7265662c0a2020636f6e666f726d616e636546697874757265436f727075733a207265736f757263652d7265662c0a7d0a0a3b20536861726564207479706573207265736f757263652d72656620616e64207368613235362d6469676573742061726520646566696e6564206f6e636520696e0a3b2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d6120627920746865206275696c640a3b202845444943542d4142492d4e4f4455502d303031292e205468657920617265206e6f74207265646566696e656420686572652e0a0a3b202d2d2d20696e7472696e736963207369676e6174757265202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a3b20546865206172746966616374207265666572656e63656420627920746865206d616e696665737427732060696e7472696e7369637360207265736f757263652d726566206973207468650a3b20696e7472696e7369632d7369676e617475726520636f7270757320646f63756d656e742062656c6f772e20497473206c61796f757420697320666978656420736f2074776f0a3b20696e646570656e64656e742070726f66696c65732076616c69646174652f686173682074686520636f72707573206964656e746963616c6c790a3b202845444943542d4142492d494e5452494e534943532d444f432d303031292e0a0a3b20696e7472696e736963732069732061204d4150206b6579656420627920636f6f7264696e6174652c20736f2074686520736368656d6120697473656c6620656e666f726365730a3b20636f6f7264696e61746520756e697175656e6573732e20412070726f766964657220726563656976657320746865207265736f6c76656420636f7270757320617320610a3b206469676573742d626f756e642073656d616e74696320696e70757420616e64207265736f6c76657320636f6f7264696e617465732077697468696e20746861742061727469666163742e0a3b2045616368206d6170206b6579204d55535420657175616c20697473207265636f726427732060636f6f7264696e61746560206669656c640a3b202845444943542d4142492d494e5452494e5349432d554e495155452d303031292e0a696e7472696e736963732d646f63756d656e74203d207b0a202061706956657273696f6e3a202265646963742e7461726765742d70726f66696c652e696e7472696e736963732f7631222c0a2020696e7472696e736963733a207b202a2074737472203d3e20696e7472696e736963207d2c0a7d0a0a3b20546865206172746966616374207265666572656e63656420627920746865206d616e6966657374277320606f7065726174696f6e50726f66696c657360207265736f757263652d7265662e0a3b206f7065726174696f6e2d70726f66696c65202f206f707469632d74656d706c6174652061726520646566696e656420696e2065646963742d636f6d6d6f6e2e6364646c2e204b657965642062790a3b20636f6f7264696e61746520736f207265736f6c7574696f6e2063616e2774207069636b206265747765656e2074776f2073616d652d636f6f7264696e6174652070726f66696c65730a3b202845444943542d4142492d4f5050524f46494c452d534c4f542d3030312c2045444943542d4142492d4f5050524f46494c452d554e495155452d303031292e0a6f7065726174696f6e2d70726f66696c65732d646f63756d656e74203d207b0a202061706956657273696f6e3a202265646963742e7461726765742d70726f66696c652e6f7065726174696f6e2d70726f66696c65732f7631222c0a202070726f66696c65733a207b202a2074737472203d3e206f7065726174696f6e2d70726f66696c65207d2c0a7d0a0a3b2041207479706564207072652d6c6f776572696e67207175657374696f6e20746861742063616e2062652070726f706f73656420627920576174736f6e206f7220616e206167656e7420616e640a3b20636865636b65642062792074686520636f6d70696c65722e2049742069732063616e6f6e6963616c2d43424f5220656e636f64656420756e6465720a3b206065646963742e6c6f776572696e672d726571756972656d656e74732f7631603b2074686520636f6d70696c657220636865636b7320746869732061727469666163742c206e6f74207468650a3b2070726f736520746861742070726f64756365642069742e0a6c6f776572696e672d726571756972656d656e7473203d207b0a202061706956657273696f6e3a202265646963742e6c6f776572696e672d726571756972656d656e74732f7631222c0a20206f7065726174696f6e50726f66696c653a20747374722c0a202073656d616e746963456666656374733a205b2a2073656d616e7469632d6566666563742d726571756972656d656e745d2c0a202072657175697265645772697465436c61737365733a205b2a2077726974652d636c6173735d2c0a202067756172644b696e64733a205b2a2067756172642d6b696e645d2c0a202061746f6d69636974793a2061746f6d69636974792d726571756972656d656e742c0a2020706f7374636f6e646974696f6e537570706f72743a20626f6f6c2c0a20206f62737472756374696f6e436f6f7264696e617465733a205b2a20747374725d2c0a2020666f6f747072696e744f626c69676174696f6e733a205b2a20747374725d2c0a2020636f73744f626c69676174696f6e733a205b2a20747374725d2c0a20206f70746963436f6e74726163743a20747374722c0a7d0a0a73656d616e7469632d6566666563742d726571756972656d656e74203d207b0a2020636f6f7264696e6174653a20747374722c0a20207772697465436c6173733a2077726974652d636c6173732c0a202067756172644b696e64733a205b2a2067756172642d6b696e645d2c0a20206f62737472756374696f6e436f6f7264696e617465733a205b2a20747374725d2c0a2020666f6f747072696e744f626c69676174696f6e733a205b2a20747374725d2c0a2020636f73744f626c69676174696f6e733a205b2a20747374725d2c0a7d0a0a77726974652d636c617373203d20226e6f6e6522202f20227265616422202f202263726561746522202f2022656e7375726522202f2022617070656e6422202f0a2020202020202020202020202020227265706c61636522202f202264656c65746522202f20747374720a67756172642d6b696e64203d2022707265636f6d6d69742d61746f6d696322202f20747374720a61746f6d69636974792d726571756972656d656e74203d202261746f6d696322202f20747374720a0a3b20412067656e75696e6520756e696f6e3a207075726520636f6e7374727563746f7273206361727279206e6f20656666656374206b696e64206f72206661696c757265733b206566666563740a3b20696e7472696e73696373206d757374202845444943542d5441524745542d494e5452494e5349432d434c4153532d303031292e2054686520736368656d6120656e666f7263657320746869732c0a3b206e6f74206120636f6d6d656e742e0a0a3b2054686520696e7472696e736963277320636f6f7264696e6174652069732074686520696e7472696e73696373206d6170204b45592c206e6f7420612076616c7565206669656c642c20736f207468650a3b206b657920616e6420636f6f7264696e6174652063616e206e65766572206469736167726565202845444943542d4142492d494e5452494e5349432d554e495155452d303031292e0a696e7472696e736963203d20707572652d696e7472696e736963202f206566666563742d696e7472696e7369630a0a707572652d696e7472696e736963203d207b0a2020696e7472696e736963436c6173733a202270757265222c0a202074797065506172616d65746572733a205b2a20747374725d2c0a2020617267756d656e7454797065733a205b2a20636f72652d747970652d7265665d2c0a202072657475726e547970653a20636f72652d747970652d7265662c0a20206775617264537570706f72743a2066616c73652c0a2020666f6f747072696e7454656d706c6174653a20747374722c0a2020636f737454656d706c6174653a20747374722c0a20207772697465436c6173733a20226e6f6e65222c0a7d0a0a6566666563742d696e7472696e736963203d207b0a2020696e7472696e736963436c6173733a2022656666656374222c0a202074797065506172616d65746572733a205b2a20747374725d2c0a2020617267756d656e7454797065733a205b2a20636f72652d747970652d7265665d2c0a202072657475726e547970653a20636f72652d747970652d7265662c0a20206566666563744b696e643a206566666563742d6b696e642c0a20203b206d6170206b65796564206279206661696c75726520636f6f7264696e61746520286661696c7572652d6964656e74293b20746865206661696c75726520636f6f7264696e6174652069730a20203b20746865206b65792c206e6f7420612076616c7565206669656c642c20736f20756e697175656e657373206973207374727563747572616c0a20203b202845444943542d4142492d4641494c5552452d554e495155452d303031292e0a20206566666563744661696c757265733a207b202a206661696c7572652d6964656e74203d3e206566666563742d6661696c7572652d626f6479207d2c0a20206775617264537570706f72743a20626f6f6c2c0a2020666f6f747072696e7454656d706c6174653a20747374722c0a2020636f737454656d706c6174653a20747374722c0a20207772697465436c6173733a20227265616422202f202263726561746522202f2022656e7375726522202f2022617070656e6422202f20227265706c61636522202f0a20202020202020202020202020202264656c65746522202f2022637573746f6d222c0a202063616e5061727469636970617465496e41746f6d696347756172643a20626f6f6c2c0a7d0a0a3b206566666563742d6661696c7572652d626f64792c206566666563742d6b696e642c20617574686f726974792d636c6173732c20616e6420636f72652d747970652d7265662061726520646566696e65640a3b206f6e636520696e2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d61202845444943542d4142492d4e4f4455502d303031292e0a0a3b202d2d2d2065646963742d617574686f726974792d66616374732e6364646c202d2d2d0a3b2065646963742d617574686f726974792d66616374732e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f722074686520666972737420636f6d70696c65722d636f6e7465787420617574686f726974792d666163747320646f63756d656e742e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a3b0a3b205468697320736368656d6120697320617373656d626c656420776974682065646963742d636f6d6d6f6e2e6364646c20736f20736f757263652e6469676573742075736573207468650a3b20736861726564207368613235362d6469676573742074797065642076616c75652e204a534f4e2069732061207265766965772f696e7075742072656e646572696e673a206974730a3b20607368613235363a3c3634206865783e6020736f75726365206469676573742069732070726f6a656374656420746f205b60736861323536602c203332207261772062797465735d206f6e0a3b2074686520776972652c20616e64206974732066616374206172726179732070726f6a65637420746f2074686520636f6f7264696e6174652d6b65796564206d6170732062656c6f772e0a0a617574686f726974792d6661637473203d207b0a202061706956657273696f6e3a202265646963742e617574686f726974792d66616374732f7631222c0a2020736f757263653a20617574686f726974792d666163742d736f757263652c0a20206f7065726174696f6e50726f66696c65733a207b202a2074737472203d3e20617574686f726974792d6f7065726174696f6e2d70726f66696c652d66616374207d2c0a20206566666563745772697465436c61737365733a207b202a2074737472203d3e20617574686f726974792d77726974652d636c617373207d2c0a2020627564676574733a207b202a2074737472203d3e20617574686f726974792d6275646765742d66616374207d2c0a7d0a0a617574686f726974792d666163742d736f75726365203d207b0a20206b696e643a20226c61777061636b22202f202274617267657450726f66696c65222c0a2020636f6f7264696e6174653a20747374722c0a20206469676573743a207368613235362d6469676573742c0a7d0a0a3b20546865206d6170206b65792069732074686520736f75726365206f7065726174696f6e2d70726f66696c6520636f6f7264696e6174652e204974206973206e6f7420726570656174656420696e0a3b207468652076616c75652c20736f2061206b657920616e6420656d62656464656420636f6f7264696e6174652063616e6e6f742064697361677265652e20416c6c6f7765642077726974650a3b20636c61737365732061726520612063616e6f6e6963616c206d61702d7365743a2074686520636c6173732069732074686520756e69717565206b657920616e64206e756c6c206973207468650a3b20756e6974206d61726b65722e2043616e6f6e6963616c2043424f52206669786573206b6579206f7264657220776974686f75742061207365636f6e64206f72646572696e672072756c652e0a617574686f726974792d6f7065726174696f6e2d70726f66696c652d66616374203d207b0a2020636f72653a20747374722c0a2020616c6c6f7765645772697465436c61737365733a207b202a20617574686f726974792d77726974652d636c617373203d3e206e756c6c207d2c0a7d0a0a3b20546865206566666563745772697465436c6173736573206d6170206b6579206973207468652073656d616e7469632065666665637420636f6f7264696e6174652e2054686520627564676574730a3b206d6170206b65792069732074686520736f757263652062756467657420636f6f7264696e6174652e2043616e6f6e6963616c2043424f52206d61702d6b657920756e697175656e6573730a3b206d616b6573206475706c6963617465206661637420636f6f7264696e61746573207374727563747572616c6c7920756e726570726573656e7461626c652e0a617574686f726974792d6275646765742d66616374203d207b0a20206d617853746570733a2075696e742c0a20206d6178416c6c6f636174656442797465733a2075696e742c0a20206d61784f757470757442797465733a2075696e742c0a7d0a0a3b20417574686f726974794661637473446f63756d656e7420763120696e74656e74696f6e616c6c792061636365707473206f6e6c792074686520777269746520636c6173736573207468650a3b2063757272656e7420636f6d70696c6572206d6f64656c2063616e20636f6e73756d652e2060637573746f6d602069732074686520736f6c6520763120637573746f6d207370656c6c696e673b0a3b20617262697472617279207461726765742d70726f66696c6520657874656e73696f6e20737472696e677320646f206e6f7420656e746572207468697320636f6d70696c657220706174682e0a617574686f726974792d77726974652d636c617373203d20226e6f6e6522202f20227265616422202f202263726561746522202f2022656e7375726522202f2022617070656e6422202f0a202020202020202020202020202020202020202020202020227265706c61636522202f202264656c65746522202f2022637573746f6d220a0a3b202d2d2d2065646963742d726573756c742d70726f6a656374696f6e2e6364646c202d2d2d0a3b20535044582d4c6963656e73652d4964656e7469666965723a204170616368652d322e300a3b2065646963742d726573756c742d70726f6a656374696f6e2e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f7220636f6d70696c65722d6f776e6564206170706c69636174696f6e2d726573756c742070726f6a656374696f6e732e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a0a726573756c742d70726f6a656374696f6e203d207b0a2020736368656d613a202265646963742e726573756c742d70726f6a656374696f6e2f7631222c0a20206f7065726174696f6e436f6f7264696e6174653a20626f756e6465642d70726f6a656374696f6e2d746578742c0a20206f7574707574547970653a20626f756e6465642d70726f6a656374696f6e2d746578742c0a20206d61784f757470757442797465733a2075696e74202e677420302c0a202065787072657373696f6e3a20726573756c742d70726f6a656374696f6e2d657870722c0a7d0a0a726573756c742d70726f6a656374696f6e2d65787072203d20726573756c742d70726f6a656374696f6e2d7265636f7264202f20726573756c742d70726f6a656374696f6e2d736f757263650a0a726573756c742d70726f6a656374696f6e2d7265636f7264203d207b0a20206b696e643a20227265636f7264222c0a20203b2054686520726f6f74207265636f726420636f756e7473206173206f6e65206f66207468652052757374206465636f6465722773203235362065787072657373696f6e206e6f6465732e0a20203b204e657374656420616767726567617465206e6f646520636f756e742072656d61696e7320616e20617574686f7269746174697665206465636f64657220636865636b2e0a20206669656c64733a207b20302a32353520626f756e6465642d70726f6a656374696f6e2d74657874203d3e20726573756c742d70726f6a656374696f6e2d65787072207d2c0a7d0a0a726573756c742d70726f6a656374696f6e2d736f75726365203d207b0a20206b696e643a2022736f75726365222c0a2020736f757263653a20726573756c742d70726f6a656374696f6e2d736f757263652d6b696e642c0a20203b204d617463686573204d41585f524553554c545f50524f4a454354494f4e5f504154485f5345474d454e545320696e2065646963742d73796e7461782e0a2020706174683a205b302a333220626f756e6465642d70726f6a656374696f6e2d746578745d2c0a7d0a0a726573756c742d70726f6a656374696f6e2d736f757263652d6b696e64203d0a20207b206b696e643a20226170706c69636174696f6e496e70757422207d202f0a20207b0a202020206b696e643a20227075726542696e64696e67222c0a2020202062696e64696e6749643a20626f756e6465642d70726f6a656374696f6e2d746578742c0a20207d202f0a20207b0a202020206b696e643a20226361706162696c697479526573756c74222c0a202020207374657049643a20626f756e6465642d70726f6a656374696f6e2d746578742c0a20207d0a0a626f756e6465642d70726f6a656374696f6e2d74657874203d2074737472202e73697a652028312e2e31303234290a0a3b202d2d2d2065646963742d7461726765742d69722e6364646c202d2d2d0a3b20535044582d4c6963656e73652d4964656e7469666965723a204170616368652d322e300a3b2065646963742d7461726765742d69722e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f72207468652045646963742d6f776e65642054617267657420495220617274696661637420656e76656c6f70652e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a3b0a3b205468697320736368656d6120697320617373656d626c656420776974682065646963742d636f6d6d6f6e2e6364646c20616e642065646963742d636f72652e6364646c2e2049740a3b2064656c696265726174656c792072657573657320436f72652065787072657373696f6e732c20707265646963617465732c20627564676574732c206c6f63616c207265666572656e6365732c0a3b206f62737472756374696f6e20726561736f6e732c20616e64206f62737472756374696f6e2061726d7320736f2074686520736368656d61206d617463686573207468652076616c75650a3b20656d6974746564206279207468652063616e6f6e6963616c2054617267657420495220656e636f64657220726174686572207468616e20726573746174696e672074686f73652074797065732e0a3b2049742064657363726962657320746865207374727563747572616c207368617065206f662076616c6964206c6f776572696e672d70726f6475636564206172746966616374732e205468650a3b206c6f776572696e6720616e6420656e636f64657220636f6e7472616374732073657061726174656c7920656e666f7263652073656d616e746963206964656e7469666965722072756c65730a3b20616e642063616e6f6e6963616c206f72646572696e672f64656475706c69636174696f6e20666f72207365742d6c696b652076616c7565732e0a0a3b2054617267657420495220656e636f64696e672072656a6563747320616e20656d707479207461726765742d70726f66696c6520636f6f7264696e617465206265666f72652062797465730a3b2065786973742c20736f207468697320726f6f74207469676874656e732074686520736861726564207374727563747572616c207265736f757263652d726566206163636f7264696e676c792e0a7461726765742d69722d7265736f757263652d726566203d207b0a202069643a2074737472202e7265676578702022283f73292e2b222c0a20206469676573743a207368613235362d6469676573742c0a7d0a0a7461726765742d69722d6172746966616374203d207461726765742d69722d636c6f7365642d6172746966616374202f207461726765742d69722d6c65676163792d61727469666163740a0a7461726765742d69722d61727469666163742d636f6d6d6f6e203d20280a20206b696e643a202274617267657449724172746966616374222c0a2020646f6d61696e3a20747374722c0a202074617267657450726f66696c653a207461726765742d69722d7265736f757263652d7265662c0a2020736f75726365436f7265436f6f7264696e6174653a2074737472202e7265676578702022283f73292e2b222c0a290a0a7461726765742d69722d636c6f7365642d6172746966616374203d207b0a20207461726765742d69722d61727469666163742d636f6d6d6f6e2c0a202073656d616e746963436c6f737572653a207461726765742d69722d73656d616e7469632d636c6f737572652c0a2020696e74656e74733a207b202a2074737472203d3e207461726765742d69722d696e74656e74207d2c0a7d0a0a7461726765742d69722d6c65676163792d6172746966616374203d207b0a20207461726765742d69722d61727469666163742d636f6d6d6f6e2c0a2020696e74656e74733a207b202a2074737472203d3e207461726765742d69722d6c65676163792d696e74656e74207d2c0a7d0a0a7461726765742d69722d73656d616e7469632d636c6f73757265203d207b0a2020736f75726365436f72653a207461726765742d69722d7265736f757263652d7265662c0a20206c61777061636b733a205b2a207461726765742d69722d7265736f757263652d7265665d2c0a20203f206361706162696c69746965733a205b2a207461726765742d69722d7265736f757263652d7265665d2c0a7d0a0a7461726765742d69722d696e74656e74203d207b0a20207461726765742d69722d696e74656e742d636f6d6d6f6e2c0a20203f2062617369733a20636f72652d657870722c0a20203f207075726542696e64696e67733a205b312a207461726765742d69722d707572652d62696e64696e675d2c0a20203f2065787465726e616c416374696f6e52657175657374733a205b2a207461726765742d69722d65787465726e616c2d616374696f6e2d726571756573745d2c0a7d0a0a7461726765742d69722d6c65676163792d696e74656e74203d207b0a20207461726765742d69722d696e74656e742d636f6d6d6f6e2c0a7d0a0a7461726765742d69722d696e74656e742d636f6d6d6f6e203d20280a20206f7065726174696f6e50726f66696c653a20747374722c0a2020696e707574436f6e73747261696e74733a205b2a20696e7075742d636f6e73747261696e745d2c0a2020636f72654576616c756174696f6e4275646765743a20636f72652d6275646765742c0a2020726571756972656d656e74733a205b2a207461726765742d69722d726571756972656d656e745d2c0a202073746570733a205b2a207461726765742d69722d737465705d2c0a2020726573756c743a20636f72652d657870722c0a290a0a7461726765742d69722d726571756972656d656e74203d207b0a202069643a20747374722c0a20207072656469636174653a20636f72652d7072656469636174652c0a20206f6e4661696c7572653a20726571756972652d6661696c7572652d61726d2c0a7d0a0a7461726765742d69722d707572652d62696e64696e67203d207b0a202069643a2074737472202e7265676578702022283f73292e2b222c0a202062696e64696e673a206c6f63616c2d7265662c0a202076616c75653a20636f72652d657870722c0a7d0a0a7461726765742d69722d73746570203d207b0a202069643a20747374722c0a202062696e64696e673a206c6f63616c2d7265662c0a20206566666563743a20747374722c0a2020746172676574496e7472696e7369633a20747374722c0a2020696e7075743a20636f72652d657870722c0a20206f62737472756374696f6e4661696c757265733a205b2a206661696c7572652d6964656e745d2c0a20206f62737472756374696f6e41726d733a207b202a206661696c7572652d6964656e74203d3e206f62737472756374696f6e2d61726d207d2c0a7d0a0a7461726765742d69722d65787465726e616c2d616374696f6e2d72657175657374203d207b0a202069643a20747374722c0a202062696e64696e673a206c6f63616c2d7265662c0a20206f7065726174696f6e3a207461726765742d69722d7265736f757263652d7265662c0a2020696e707574547970653a20636f72652d747970652d7265662c0a2020736574746c656d656e74547970653a20636f72652d747970652d7265662c0a2020696e707574536368656d613a207461726765742d69722d7265736f757263652d7265662c0a2020736574746c656d656e74536368656d613a207461726765742d69722d7265736f757263652d7265662c0a2020696e7075743a20636f72652d657870722c0a2020617574686f7269747953636f70653a20636f72652d657870722c0a202062617369733a20636f72652d657870722c0a20206275646765743a2065787465726e616c2d616374696f6e2d6275646765742c0a20207265636f6e63696c696174696f6e4c61773a207461726765742d69722d7265736f757263652d7265662c0a202073746174653a20226177616974696e67536574746c656d656e74222c0a2020736574746c656d656e7441646d697373696f6e3a2022736368656d615265717569726564222c0a7d0a", + "rawSha256": "c663df6dd3d463aad878ae9c3beebf42fe057d7395f91b6d3823d0e0fab77f50" }, "contracts": [ {"contract": "authority-facts", "rootRule": "authority-facts"}, diff --git a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/components/lowerer.echo-dpo.component.wasm b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/components/lowerer.echo-dpo.component.wasm index c2063339da38f141f3d9017ca8fa10f8d0166049..2bfc69513eba917a18745f6bac7f8e992bc84873 100644 GIT binary patch delta 157 zcmdn@Q()gufrb{w7N#xC^2;4eQxYu`Et3rl4N{FvQ%zFL3=Pvvl1x+6j14Ul4Gj#< xERvGU%n~gOjLg$gEDQ~k6BCWi&5R9F4b2S9&C<-b$1i8*;-uV|l^d8vdjO^DExrH% delta 157 zcmdn@Q()gufrb{w7N#xC^2;5J5-pQcjg5>_Oe~Yrl8r3Q%~DKEl1(hk%+ibv63r6R xlFZC3(=1ZWl1+>fO${t8Ez&G44K0(5O^p%_jFSzw$1i8*;-uV|l^d8vdjP;WE*1a) diff --git a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/evidence/provenance.provider-generation.json b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/evidence/provenance.provider-generation.json index 2677c112..501c7ca7 100644 --- a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/evidence/provenance.provider-generation.json +++ b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/evidence/provenance.provider-generation.json @@ -1 +1 @@ -{"apiVersion":"wesley.generation-provenance-manifest/v1","contractVersions":{"generatorAbi":"wesley.extension-generator/v1","inputSchema":"wesley.extension-generation-input/v1","provenanceSchema":"wesley.generation-provenance-manifest/v1"},"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:2a9ce322d49cfc2976d44c4866f30a6afb669f8e6c42a50898f9919b352a03c1"}],"generationInputDigest":"sha256:8801229418295223b90cb8ff5eaff6e1a1d8eef27e984e0f2caa04450e29e125","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:c080a9eef207857127f54f0a64d12286702f72ca17db96e77f8c631a71eb86f5","version":"0.1.0"},"settingsDigest":"sha256:0f708e76898de6fdb8186352e81d0f5c445adf94bb6c7de9204952d9fe913d4a","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:fe37a4252af4a732a62074b58947e052744a48397042eaadb0e61849fc245627"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:80e98f3b338690a5b0c71c2d35fbe70c11e4ef4b5c8d064a583f2af94942e613"}]} \ No newline at end of file +{"apiVersion":"wesley.generation-provenance-manifest/v1","contractVersions":{"generatorAbi":"wesley.extension-generator/v1","inputSchema":"wesley.extension-generation-input/v1","provenanceSchema":"wesley.generation-provenance-manifest/v1"},"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:5da9a9c010e25e4d611f4b5ef319a10168bb66a8027fd811caa37630e16076f7"}],"generationInputDigest":"sha256:dbcc90f465d2a461d6fa107b499a16eedfe49ec8c633c247eeedad2d1cd82022","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:5d7784b3fd18223c1e5d8c9089d032b2048a9743b58e2a9f02d4de99541f73a8","version":"0.1.0"},"settingsDigest":"sha256:0f708e76898de6fdb8186352e81d0f5c445adf94bb6c7de9204952d9fe913d4a","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:c663df6dd3d463aad878ae9c3beebf42fe057d7395f91b6d3823d0e0fab77f50"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:6228ebfc8ac9fc21f05d624cccaa731346acfb9203294dbcc767fa4d649fc7e8"}]} \ No newline at end of file diff --git a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/evidence/review.provider-generation.json b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/evidence/review.provider-generation.json index d683977a..230defaf 100644 --- a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/evidence/review.provider-generation.json +++ b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/evidence/review.provider-generation.json @@ -1 +1 @@ -{"apiVersion":"wesley.generation-review/v1","authoritative":false,"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:2a9ce322d49cfc2976d44c4866f30a6afb669f8e6c42a50898f9919b352a03c1"}],"generationInputDigest":"sha256:8801229418295223b90cb8ff5eaff6e1a1d8eef27e984e0f2caa04450e29e125","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:c080a9eef207857127f54f0a64d12286702f72ca17db96e77f8c631a71eb86f5","version":"0.1.0"},"projectionRoles":["authority-facts.echo-dpo","authority-facts.echo-lawpack","generated-artifact-profile.echo-dpo-registration","lawpack.echo-dpo","schema.echo-provider-artifacts","target-profile.echo-dpo"],"provenanceManifestDigest":"sha256:9729cb2fb6b6059bf134b2b199e56c9b2b1b6652d64b942cbc8730c156966736","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:fe37a4252af4a732a62074b58947e052744a48397042eaadb0e61849fc245627"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:80e98f3b338690a5b0c71c2d35fbe70c11e4ef4b5c8d064a583f2af94942e613"}]} \ No newline at end of file +{"apiVersion":"wesley.generation-review/v1","authoritative":false,"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:5da9a9c010e25e4d611f4b5ef319a10168bb66a8027fd811caa37630e16076f7"}],"generationInputDigest":"sha256:dbcc90f465d2a461d6fa107b499a16eedfe49ec8c633c247eeedad2d1cd82022","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:5d7784b3fd18223c1e5d8c9089d032b2048a9743b58e2a9f02d4de99541f73a8","version":"0.1.0"},"projectionRoles":["authority-facts.echo-dpo","authority-facts.echo-lawpack","generated-artifact-profile.echo-dpo-registration","lawpack.echo-dpo","schema.echo-provider-artifacts","target-profile.echo-dpo"],"provenanceManifestDigest":"sha256:486e70bf242bddb71cc26e7aaca90b45cf3439decb63a970fc759208e24d7774","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:c663df6dd3d463aad878ae9c3beebf42fe057d7395f91b6d3823d0e0fab77f50"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:6228ebfc8ac9fc21f05d624cccaa731346acfb9203294dbcc767fa4d649fc7e8"}]} \ No newline at end of file diff --git a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/primary/schema.echo-provider-artifacts.cddl b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/primary/schema.echo-provider-artifacts.cddl index 533f56fa..3226dc60 100644 --- a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/primary/schema.echo-provider-artifacts.cddl +++ b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/primary/schema.echo-provider-artifacts.cddl @@ -128,6 +128,7 @@ core-string-type = { } core-bytes-type = { kind: "Bytes", + ? min: uint, max: uint, } core-record-type = { diff --git a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/provider-manifest.echo.json b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/provider-manifest.echo.json index a739de75..8cb7beee 100644 --- a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/provider-manifest.echo.json +++ b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/provider-manifest.echo.json @@ -3,7 +3,7 @@ "providerAbi": "edict:target-provider@1.0.0", "provider": { "coordinate": "echo.edict-provider@1", - "digest": "sha256:b888f0c64a53c68d18c2bd3212589cf2ed9da3fbd551a64a9006184db3dde71f" + "digest": "sha256:319b2f44db2fdc953ab4dd4d7603a60db8c5951cc62a0ac2e6b41797eebcee92" }, "artifacts": [ { @@ -21,7 +21,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:c080a9eef207857127f54f0a64d12286702f72ca17db96e77f8c631a71eb86f5" + "digest": "sha256:5d7784b3fd18223c1e5d8c9089d032b2048a9743b58e2a9f02d4de99541f73a8" } } }, @@ -40,7 +40,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:c080a9eef207857127f54f0a64d12286702f72ca17db96e77f8c631a71eb86f5" + "digest": "sha256:5d7784b3fd18223c1e5d8c9089d032b2048a9743b58e2a9f02d4de99541f73a8" } } }, @@ -59,7 +59,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:c080a9eef207857127f54f0a64d12286702f72ca17db96e77f8c631a71eb86f5" + "digest": "sha256:5d7784b3fd18223c1e5d8c9089d032b2048a9743b58e2a9f02d4de99541f73a8" } } }, @@ -78,7 +78,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:c080a9eef207857127f54f0a64d12286702f72ca17db96e77f8c631a71eb86f5" + "digest": "sha256:5d7784b3fd18223c1e5d8c9089d032b2048a9743b58e2a9f02d4de99541f73a8" } } }, @@ -87,13 +87,13 @@ "artifactKind": "lowerer", "resource": { "coordinate": "echo.dpo.lowerer/component@1", - "digest": "sha256:20fe92ce8d7bec67f772715cb1f0f3d9ac4f65fe382eff3952f3c368849419dd" + "digest": "sha256:7d00aa4d4ec63fb81dad318b0165010cd4451f33b3f939f90a0457caf54a46eb" }, "source": { "kind": "component", "component": { "coordinate": "echo.dpo.lowerer/component@1", - "digest": "sha256:20fe92ce8d7bec67f772715cb1f0f3d9ac4f65fe382eff3952f3c368849419dd" + "digest": "sha256:7d00aa4d4ec63fb81dad318b0165010cd4451f33b3f939f90a0457caf54a46eb" } } }, @@ -102,7 +102,7 @@ "artifactKind": "generationProvenance", "resource": { "coordinate": "echo.edict-provider-generation-provenance@1", - "digest": "sha256:cef498b490bd198c6c57c1ea7690ac7def88d3fc17057504bf0a8dd47b932cd9" + "digest": "sha256:5cde2775374abc62656fbd75b98e51d22aa3857c2dad577222007c187b602bbc" }, "source": { "kind": "generated", @@ -112,7 +112,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:c080a9eef207857127f54f0a64d12286702f72ca17db96e77f8c631a71eb86f5" + "digest": "sha256:5d7784b3fd18223c1e5d8c9089d032b2048a9743b58e2a9f02d4de99541f73a8" } } }, @@ -121,7 +121,7 @@ "artifactKind": "reviewArtifact", "resource": { "coordinate": "echo.edict-provider-generation-review@1", - "digest": "sha256:79528989a042ad1a8301479e1f389d1c2dfd32266ba100f0e06d94df8de07038" + "digest": "sha256:84c27ba31e5895094e37869ec8bfea49dd083e76fe58dc74cdd7009cb6a44fb1" }, "source": { "kind": "generated", @@ -131,7 +131,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:c080a9eef207857127f54f0a64d12286702f72ca17db96e77f8c631a71eb86f5" + "digest": "sha256:5d7784b3fd18223c1e5d8c9089d032b2048a9743b58e2a9f02d4de99541f73a8" } } }, @@ -140,7 +140,7 @@ "artifactKind": "artifactSchema", "resource": { "coordinate": "echo.provider-artifacts.cddl@1", - "digest": "sha256:2a9ce322d49cfc2976d44c4866f30a6afb669f8e6c42a50898f9919b352a03c1" + "digest": "sha256:5da9a9c010e25e4d611f4b5ef319a10168bb66a8027fd811caa37630e16076f7" }, "source": { "kind": "generated", @@ -150,7 +150,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:c080a9eef207857127f54f0a64d12286702f72ca17db96e77f8c631a71eb86f5" + "digest": "sha256:5d7784b3fd18223c1e5d8c9089d032b2048a9743b58e2a9f02d4de99541f73a8" } } }, @@ -169,7 +169,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:c080a9eef207857127f54f0a64d12286702f72ca17db96e77f8c631a71eb86f5" + "digest": "sha256:5d7784b3fd18223c1e5d8c9089d032b2048a9743b58e2a9f02d4de99541f73a8" } } }, diff --git a/crates/echo-wesley-gen/src/provider_contract_pack.rs b/crates/echo-wesley-gen/src/provider_contract_pack.rs index 946aa31e..2ed4a239 100644 --- a/crates/echo-wesley-gen/src/provider_contract_pack.rs +++ b/crates/echo-wesley-gen/src/provider_contract_pack.rs @@ -32,14 +32,14 @@ pub const EDICT_PROVIDER_CONTRACT_PACK_LICENSE: &str = "Apache-2.0"; /// SHA-256 of the admitted self-contained CDDL bytes. pub const EDICT_PROVIDER_CONTRACT_PACK_SCHEMA_SHA256: &str = - "fe37a4252af4a732a62074b58947e052744a48397042eaadb0e61849fc245627"; + "c663df6dd3d463aad878ae9c3beebf42fe057d7395f91b6d3823d0e0fab77f50"; /// SHA-256 of the admitted Edict publication manifest bytes. pub const EDICT_PROVIDER_CONTRACT_PACK_MANIFEST_SHA256: &str = - "80e98f3b338690a5b0c71c2d35fbe70c11e4ef4b5c8d064a583f2af94942e613"; + "6228ebfc8ac9fc21f05d624cccaa731346acfb9203294dbcc767fa4d649fc7e8"; /// Maximum manifest size parsed at the contract-pack authority boundary. -pub const EDICT_PROVIDER_CONTRACT_PACK_MANIFEST_MAX_BYTES: usize = 71_895; +pub const EDICT_PROVIDER_CONTRACT_PACK_MANIFEST_MAX_BYTES: usize = 71_925; const EXPECTED_CONTRACTS: [(&str, &str); 11] = [ ("authority-facts", "authority-facts"), diff --git a/crates/echo-wesley-gen/tests/provider_contract_pack.rs b/crates/echo-wesley-gen/tests/provider_contract_pack.rs index ee7fbd77..0665b977 100644 --- a/crates/echo-wesley-gen/tests/provider_contract_pack.rs +++ b/crates/echo-wesley-gen/tests/provider_contract_pack.rs @@ -48,7 +48,7 @@ fn checked_edict_provider_contract_pack_is_admitted() { assert_eq!(pack.license(), "Apache-2.0"); assert_eq!( pack.schema_sha256(), - "fe37a4252af4a732a62074b58947e052744a48397042eaadb0e61849fc245627" + "c663df6dd3d463aad878ae9c3beebf42fe057d7395f91b6d3823d0e0fab77f50" ); assert_eq!(pack.contract_count(), 11); assert_eq!(pack.domain_count(), 7); @@ -86,7 +86,7 @@ fn tampered_contract_cddl_has_stable_failure_kind() { error.to_string(), concat!( "provider contract pack schema-bytes-mismatch: schema.bytesHex -> ", - "fe37a4252af4a732a62074b58947e052744a48397042eaadb0e61849fc245627" + "c663df6dd3d463aad878ae9c3beebf42fe057d7395f91b6d3823d0e0fab77f50" ) ); } diff --git a/crates/echo-wesley-gen/tests/provider_package.rs b/crates/echo-wesley-gen/tests/provider_package.rs index 4c85d5f4..5b161a45 100644 --- a/crates/echo-wesley-gen/tests/provider_package.rs +++ b/crates/echo-wesley-gen/tests/provider_package.rs @@ -65,7 +65,7 @@ const SEMANTIC_DIGEST: &str = const RELEASE_DIGEST: &str = "sha256:c39449495281b51f978468d08c21e93bcfa423176063b41675da61e4674b0066"; const PACKAGE_ARTIFACT_SHA256: &str = - "b888f0c64a53c68d18c2bd3212589cf2ed9da3fbd551a64a9006184db3dde71f"; + "319b2f44db2fdc953ab4dd4d7603a60db8c5951cc62a0ac2e6b41797eebcee92"; const OTHER_PACKAGE_ARTIFACT_SHA256: &str = "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"; diff --git a/crates/echo-wesley-gen/tests/provider_package_corpus.rs b/crates/echo-wesley-gen/tests/provider_package_corpus.rs index a3db3260..7c15f49e 100644 --- a/crates/echo-wesley-gen/tests/provider_package_corpus.rs +++ b/crates/echo-wesley-gen/tests/provider_package_corpus.rs @@ -11,9 +11,9 @@ use std::sync::atomic::{AtomicU64, Ordering}; use sha2::{Digest as _, Sha256}; const EXPECTED_PROVIDER_DIGEST: &str = - "sha256:b888f0c64a53c68d18c2bd3212589cf2ed9da3fbd551a64a9006184db3dde71f"; + "sha256:319b2f44db2fdc953ab4dd4d7603a60db8c5951cc62a0ac2e6b41797eebcee92"; const EXPECTED_MANIFEST_RAW_SHA256: &str = - "8bce11896166a7ef52ddd9d07a60cfdb426d57697ba16e266aee0cb0f188a4b2"; + "b6687034723e965006b4ffbfe2b1848d4c173ad6528964d060954c75e14e7259"; const PACKAGE_PATHS: [&str; 25] = [ "components/lowerer.echo-dpo.component.wasm", diff --git a/schemas/edict-provider/README.md b/schemas/edict-provider/README.md index 7542bf02..7975cd9e 100644 --- a/schemas/edict-provider/README.md +++ b/schemas/edict-provider/README.md @@ -170,7 +170,7 @@ reproduce all three completed outcomes identically. Both checked components remain uninstalled package material; neither they nor the generated authority-facts documents are runtime Echo authority. The promoted lowerer is 277,694 bytes with SHA-256 -`20fe92ce8d7bec67f772715cb1f0f3d9ac4f65fe382eff3952f3c368849419dd`; the +`7d00aa4d4ec63fb81dad318b0165010cd4451f33b3f939f90a0457caf54a46eb`; the promoted verifier is 297,035 bytes with SHA-256 `58f9451831338fa39a73d53790fe839037f1a8a1fb5345ffefc334af3ec90413`. diff --git a/schemas/edict-provider/components/v1/README.md b/schemas/edict-provider/components/v1/README.md index cb6c331f..99f88d6a 100644 --- a/schemas/edict-provider/components/v1/README.md +++ b/schemas/edict-provider/components/v1/README.md @@ -24,7 +24,7 @@ The source WIT is the exact 7,392-byte Edict contract with SHA-256 `2971fe44def7e51d5271dfc0f04f3088aa58754cffdc847681a587605aac749e`. The checked component is 277,694 bytes with SHA-256 -`20fe92ce8d7bec67f772715cb1f0f3d9ac4f65fe382eff3952f3c368849419dd`. +`7d00aa4d4ec63fb81dad318b0165010cd4451f33b3f939f90a0457caf54a46eb`. Its sole contract attestation is the top-level custom section `edict:target-provider-contract` containing `edict:target-provider/lowerer@1.0.0`. Its only imports are the frozen WIT's diff --git a/schemas/edict-provider/components/v1/lowerer.echo-dpo.component.wasm b/schemas/edict-provider/components/v1/lowerer.echo-dpo.component.wasm index c2063339da38f141f3d9017ca8fa10f8d0166049..2bfc69513eba917a18745f6bac7f8e992bc84873 100644 GIT binary patch delta 157 zcmdn@Q()gufrb{w7N#xC^2;4eQxYu`Et3rl4N{FvQ%zFL3=Pvvl1x+6j14Ul4Gj#< xERvGU%n~gOjLg$gEDQ~k6BCWi&5R9F4b2S9&C<-b$1i8*;-uV|l^d8vdjO^DExrH% delta 157 zcmdn@Q()gufrb{w7N#xC^2;5J5-pQcjg5>_Oe~Yrl8r3Q%~DKEl1(hk%+ibv63r6R xlFZC3(=1ZWl1+>fO${t8Ez&G44K0(5O^p%_jFSzw$1i8*;-uV|l^d8vdjP;WE*1a) diff --git a/schemas/edict-provider/contracts/v1/README.md b/schemas/edict-provider/contracts/v1/README.md index 07987e7b..383c0050 100644 --- a/schemas/edict-provider/contracts/v1/README.md +++ b/schemas/edict-provider/contracts/v1/README.md @@ -9,7 +9,7 @@ This directory vendors the exact Edict provider contract pack introduced in [Edict PR #174](https://github.com/flyingrobots/edict/pull/174), and extended with generic pure bindings in [Edict PR #201](https://github.com/flyingrobots/edict/pull/201) at commit -[`603d94f7520d897f77398b359a832ce363c2be0d`](https://github.com/flyingrobots/edict/commit/603d94f7520d897f77398b359a832ce363c2be0d): +[`68633c409474b9dffac4a33a674b2a3f29ad865c`](https://github.com/flyingrobots/edict/commit/68633c409474b9dffac4a33a674b2a3f29ad865c): - `edict-provider-contracts.cddl` is the assembled Edict-owned CDDL contract. - `manifest.json` binds that CDDL and its contract resources to their published diff --git a/schemas/edict-provider/contracts/v1/edict-provider-contracts.cddl b/schemas/edict-provider/contracts/v1/edict-provider-contracts.cddl index 723929f3..54d52121 100644 --- a/schemas/edict-provider/contracts/v1/edict-provider-contracts.cddl +++ b/schemas/edict-provider/contracts/v1/edict-provider-contracts.cddl @@ -128,6 +128,7 @@ core-string-type = { } core-bytes-type = { kind: "Bytes", + ? min: uint, max: uint, } core-record-type = { diff --git a/schemas/edict-provider/contracts/v1/manifest.json b/schemas/edict-provider/contracts/v1/manifest.json index a0e0c28a..6ba0fbab 100644 --- a/schemas/edict-provider/contracts/v1/manifest.json +++ b/schemas/edict-provider/contracts/v1/manifest.json @@ -3,8 +3,8 @@ "coordinate": "edict.provider-contract-pack.cddl@1", "license": "Apache-2.0", "schema": { - "bytesHex": "3b20535044582d4c6963656e73652d4964656e7469666965723a204170616368652d322e300a3b2065646963742d70726f76696465722d636f6e7472616374732e6364646c0a3b2047656e6572617465642066726f6d2045646963742d6f776e65642041424920667261676d656e74732e20444f204e4f5420454449542e0a0a3b202d2d2d2065646963742d636f6d6d6f6e2e6364646c202d2d2d0a3b2065646963742d636f6d6d6f6e2e6364646c0a3b20536861726564204344444c20747970657320666f722074686520456469637420414249732c20646566696e6564204f4e4345206865726520736f20746865792063616e6e6f742064726966740a3b202845444943542d4142492d4e4f4455502d303031292e2054776f2067726f7570733a0a3b2020202d207265736f757263652d7265662c207368613235362d6469676573742c206566666563742d6661696c7572652d626f64792c206566666563742d6b696e642c20617574686f726974792d636c6173732c0a3b2020202020636f72652d747970652d7265663a20617373656d626c656420776974682065646963742d7461726765742d70726f66696c652e6364646c20616e640a3b202020202065646963742d6c61777061636b2e6364646c20627920746865206275696c643b2074686f736520736368656d617320646f206e6f74207265646566696e65207468656d2e0a3b2020202d206f7065726174696f6e2d70726f66696c652c206f707469632d74656d706c6174652c2061706572747572652d726571756972656d656e7420616e6420746865697220726566733a0a3b2020202020636f6e73756d65642062792074686520436f72652f6f70746963206c61796572202865646963742d636f72652e6364646c2920616e64207265666572656e636564206279207468650a3b20202020206c616e67756167652f7461726765742d70726f66696c652073706563732e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a0a3b2041206e6f726d617469766520737562636f6d706f6e656e74207265666572656e636564206279206964656e7469747920706c7573206469676573742e204d616e696665737473206e657665720a3b20656d626564207468656972206f776e2073656c662d64696765737420696e20746865697220707265696d616765202845444943542d434f52452d53454c46484153482d303031292e0a7265736f757263652d726566203d207b2069643a20747374722c206469676573743a207368613235362d646967657374207d0a0a3b20446967657374732061726520617574686f726974617469766520617320747970656420627974652076616c7565732c206e657665722068657820737472696e67732e20526576696577204a534f4e0a3b2072656e64657273207468697320617320227368613235363a3c3634206c6f77657263617365206865783e22202845444943542d4449474553542d574952452d303031292e0a7368613235362d646967657374203d205b20616c676f726974686d3a2022736861323536222c2062797465733a2062737472202e73697a65203332205d0a0a3b2041206e616d6564206c6f772d6c6576656c206661696c75726520616e206566666563742063616e2072616973652e2054686520736f75726365206f62737472756374696f6e206d61700a3b2062696e64732069742028627920636f6f7264696e6174652920616e6420636f6e73747275637473206120747970656420646f6d61696e206f62737472756374696f6e2066726f6d206974730a3b207061796c6f6164202845444943542d4142492d4641494c5552452d4e414d45442d303031292e0a3b20416e20656666656374277320606566666563744661696c7572657360206c697374204d555354206861766520756e697175652060636f6f7264696e61746560733a2073696e6365207468650a3b206f62737472756374696f6e206d6170206973206b6579656420627920636f6f7264696e6174652c2074776f206661696c757265732073686172696e67206120636f6f7264696e61746520286576656e0a3b207769746820646966666572656e7420617574686f72697479436c6173732f7061796c6f61645479706529206d616b652065786861757374697665206d617070696e6720616e642062696e6465720a3b20747970696e6720616d626967756f757320616e64206172652072656a6563746564202845444943542d4142492d4641494c5552452d554e495155452d303031292e0a3b0a3b2045666665637473206361727279207468656972206661696c757265732061732061206d617020607b206661696c7572652d6964656e74203d3e206566666563742d6661696c7572652d626f6479207d600a3b202873656520746865207461726765742f6c61777061636b2065666665637420736368656d6173292e20546865206661696c75726520636f6f7264696e61746520697320746865206d61700a3b204b45592c20736f206974206973206e6f7420726570656174656420696e2074686520626f647920616e642063616e6e6f74206469736167726565207769746820746865206b65792e0a6566666563742d6661696c7572652d626f6479203d207b0a2020617574686f72697479436c6173733a20617574686f726974792d636c6173732c0a20207061796c6f6164547970653a20636f72652d747970652d7265662c202020202020202020202020203b2074797065642c20626f756e64656420286d617920626520656d707479207265636f7264290a7d0a0a3b2041206661696c75726520636f6f7264696e617465206d7573742062652061206261726520456469637420606964656e746020286c65747465722f756e64657273636f7265207468656e0a3b206c6574746572732f6469676974732f756e64657273636f7265732920414e44206d757374206e6f742062652061207265736572766564206b6579776f72642028652e672e2060656c7365602c0a3b20606261736973602c20607768657265602c206072657175697265602c2060666f72602c2060696660292e2054686520736f75726365206f62737472756374696f6e2d6d6170204c4853206f6e6c790a3b20616363657074732061206e6f6e2d6b6579776f726420606964656e74602c20736f20612068797068656e2f646f742f6b6579776f726420636f6f7264696e61746520776f756c642062650a3b204142492d76616c69642079657420696d706f737369626c6520746f206d617020657868617573746976656c7920696e20736f757263652e20546865207265676578206361707475726573207468650a3b206c65786963616c2073686170653b206b6579776f7264206578636c7573696f6e20697320616e206164646974696f6e616c2076616c69646174696f6e2072756c650a3b202845444943542d4142492d4641494c5552452d4944454e542d303031292e0a6661696c7572652d6964656e74203d2074737472202e72656765787020225b412d5a612d7a5f5d5b412d5a612d7a302d395f5d2a220a0a6566666563742d6b696e64203d20227265616422202f202263726561746522202f2022656e7375726522202f20227265706c61636522202f202264656c65746522202f0a202020202020202020202020202022617070656e6422202f202272656475636522202f202273656d616e7469632e656d697422202f2022637573746f6d220a0a617574686f726974792d636c617373203d2022646f6d61696e4d61707061626c6522202f20227061727469636970616e744f776e656422202f2022696e746567726974794661756c7422202f0a202020202020202020202020202020202020227265736f757263654661756c7422202f2022696e7465726e616c4661756c74220a0a636f72652d747970652d726566203d20747374722020203b2063616e6f6e6963616c20436f7265207479706520636f6f7264696e6174650a0a3b20416e206f7065726174696f6e2070726f66696c6520737570706c69657320746865206f707469632074656d706c617465206120436f726520696e74656e74207265736f6c766573206974730a3b206f707469634b696e642f626f756e646172794b696e642f737570706f7274506f6c6963792f6c6f7373446973706f736974696f6e2066726f6d2e205461726765742070726f66696c657320616e640a3b206c61777061636b73207075626c6973682074686573652061732061206d617020607b20636f6f7264696e617465203d3e206f7065726174696f6e2d70726f66696c65207d602c20736f207468650a3b20636f6f7264696e61746520697320746865204b45592c206e6f7420612076616c7565206669656c64202845444943542d4f505449432d54454d504c4154452d4f574e45522d3030312c0a3b2045444943542d4142492d4f5050524f46494c452d554e495155452d303031292e0a6f7065726174696f6e2d70726f66696c65203d207b0a20206f7074696354656d706c6174653a206f707469632d74656d706c6174652c0a20206566666563745072656469636174653a20747374722c20202020202020202020203b20636f6f7264696e617465206f6620746865206f7065726174696f6e2d6d6f6465207072656469636174650a7d0a0a6f707469632d74656d706c617465203d207b0a20206f707469634b696e643a2022726576656c6174696f6e22202f20226166666563745265696e746567726174696f6e222c0a2020626f756e646172794b696e643a202270726f6a656374696f6e22202f2022616666656374222c0a2020737570706f7274506f6c6963793a20747374722c202020202020202020202020203b2063616e6f6e6963616c20737570706f72742d706f6c69637920636f6f7264696e6174650a20206c6f7373446973706f736974696f6e3a20747374722c20202020202020202020203b2063616e6f6e6963616c206c6f73732d646973706f736974696f6e20636f6f7264696e6174650a20203f20626173697354656d706c6174653a20747374722c20202020202020202020203b206f7074696f6e616c206469676573742d6c6f636b65642062617369732074656d706c61746520636f6f72640a20203b2074686520617065727475726520726571756972656d656e7420746869732074656d706c61746520737570706c6965732e205265717569726564207768656e207468652074656d706c6174650a20203b2069732074686520736f75726365206f66206120436f7265206f707469632773206170657274757265526571756972656d656e742028692e652e2074686520696e74656e7420686173206e6f0a20203b20736f757263652060666f6f747072696e74203c3d202e2e2e60292c2073696e6365206170657274757265526571756972656d656e74206973206d616e6461746f727920696e20436f72650a20203b202845444943542d4f505449432d41504552545552452d5245462d303031292e0a20203f206170657274757265526571756972656d656e743a2061706572747572652d726571756972656d656e742c0a7d0a0a3b206170657274757265526571756972656d656e742069732061207479706564207265666572656e63652c206e65766572206120667265652d666f726d20737472696e672e2041207265766965770a3b2072656e646572696e67206d61792073686f772069747320636f6f7264696e617465202845444943542d4f505449432d41504552545552452d5245462d303031292e0a61706572747572652d726571756972656d656e74203d20666f6f747072696e742d6365696c696e672d726566202f2061627374726163742d666f6f747072696e742d6f626c69676174696f6e2d7265660a666f6f747072696e742d6365696c696e672d726566203d207b206b696e643a2022666f6f747072696e744365696c696e67222c207265663a2074737472207d0a61627374726163742d666f6f747072696e742d6f626c69676174696f6e2d726566203d207b206b696e643a20226162737472616374466f6f747072696e744f626c69676174696f6e222c207265663a2074737472207d0a0a3b202d2d2d2065646963742d636f72652e6364646c202d2d2d0a3b2065646963742d636f72652e6364646c0a3b204e6f726d617469766520736368656d6120666f722074686520456469637420436f72652076312073656d616e746963206d6f64656c2e0a3b0a3b2053636f706520626f756e646172793a20746869732066696c6520646566696e657320436f7265206d65616e696e6720616e6420736368656d61207368617065206f6e6c792e20497420646f65730a3b206e6f7420646566696e6520612063616e6f6e6963616c20656e636f6465722c20436f7265206d6f64756c652068617368206669656c64732c20686173682066697874757265732c207461726765740a3b206c6f776572696e672c2061646d697373696f6e2062756e646c65732c206f72207461726765742d6f776e65642049522e0a0a636f72652d6d6f64756c65203d207b0a202061706956657273696f6e3a202265646963742e636f72652f7631222c0a2020636f6f7264696e6174653a20747374722c0a2020696d706f7274733a205b2a20636f72652d696d706f72745d2c0a202074797065733a207b202a2074737472203d3e20636f72652d74797065207d2c0a2020696e74656e74733a207b202b2074737472203d3e20636f72652d696e74656e74207d2c0a20207265717569726564436f72654361706162696c69746965733a205b2a20747374725d2c0a7d0a0a636f72652d696d706f7274203d207b0a20206b696e643a20226c61777061636b22202f202274617267657422202f2022636f726522202f20226361706162696c697479222c0a20207265663a207265736f757263652d7265662c0a20203f20616c6961733a20747374722c0a7d0a0a3b202d2d2d207479706573202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a636f72652d74797065203d20636f72652d7363616c61722d74797065202f20636f72652d7265636f72642d74797065202f20636f72652d76617269616e742d74797065202f0a202020202020202020202020636f72652d6f7074696f6e2d74797065202f20636f72652d6c6973742d74797065202f20636f72652d6d61702d74797065202f0a202020202020202020202020636f72652d6361706162696c6974792d7265662d74797065202f20636f72652d65787465726e616c2d616374696f6e2d726571756573742d747970650a0a636f72652d7363616c61722d74797065203d20636f72652d626f6f6c2d74797065202f20636f72652d696e742d74797065202f20636f72652d737472696e672d74797065202f0a20202020202020202020202020202020202020636f72652d62797465732d74797065202f20636f72652d756e69742d747970650a0a636f72652d626f6f6c2d74797065203d207b206b696e643a2022426f6f6c22207d0a636f72652d756e69742d74797065203d207b206b696e643a2022556e697422207d0a636f72652d696e742d74797065203d207b0a20206b696e643a202249363422202f202255363422202f202249333222202f202255333222202f202249313622202f202255313622202f2022493822202f20225538222c0a7d0a636f72652d737472696e672d74797065203d207b0a20206b696e643a2022537472696e67222c0a20206d61783a2075696e742c0a202063616e6f6e6963616c3a2022756e69636f64652d7363616c61722d6e666322202f20227261772d75746638222c0a7d0a636f72652d62797465732d74797065203d207b0a20206b696e643a20224279746573222c0a20206d61783a2075696e742c0a7d0a636f72652d7265636f72642d74797065203d207b0a20206b696e643a20225265636f7264222c0a20206669656c64733a207b202a2074737472203d3e20636f72652d747970652d726566207d2c0a7d0a636f72652d76617269616e742d74797065203d207b0a20206b696e643a202256617269616e74222c0a202063617365733a207b202b2074737472203d3e2076617269616e742d636173652d626f6479207d2c0a7d0a76617269616e742d636173652d626f6479203d207b0a20203f207061796c6f61643a20636f72652d747970652d7265662c0a7d0a636f72652d6f7074696f6e2d74797065203d207b0a20206b696e643a20224f7074696f6e222c0a20206974656d3a20636f72652d747970652d7265662c0a7d0a636f72652d6c6973742d74797065203d207b0a20206b696e643a20224c697374222c0a20206974656d3a20636f72652d747970652d7265662c0a20206d61783a2075696e742c0a7d0a636f72652d6d61702d74797065203d207b0a20206b696e643a20224d6170222c0a20206b65793a20636f72652d747970652d7265662c0a202076616c75653a20636f72652d747970652d7265662c0a20206d61783a2075696e742c0a7d0a636f72652d6361706162696c6974792d7265662d74797065203d207b0a20206b696e643a20224361706162696c697479526566222c0a20206974656d3a20636f72652d747970652d7265662c0a7d0a636f72652d65787465726e616c2d616374696f6e2d726571756573742d74797065203d207b0a20206b696e643a202245787465726e616c416374696f6e52657175657374222c0a2020736574746c656d656e743a20636f72652d747970652d7265662c0a7d0a0a3b20636f72652d747970652d72656620697320646566696e656420696e2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d612e0a0a3b202d2d2d207265666572656e63657320616e642076616c756573202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a3b204c6f63616c206964656e7469747920697320616c7068612d737461626c652e20606964602069732074686520636f6d70696c65722d6f776e6564206c6f63616c20636f6f7264696e6174653b0a3b2060616c7068614e616d656020697320746865206e6f726d616c697a65642068756d616e2f6465627567206e616d652e20536f757263652062696e646572207370656c6c696e67206973206e6f740a3b206964656e746974792e0a6c6f63616c2d726566203d207b0a202069643a20747374722c0a2020616c7068614e616d653a20747374722c0a2020747970653a20636f72652d747970652d7265662c0a7d0a0a636f72652d76616c7565203d20636f72652d6e756c6c2d76616c7565202f20636f72652d626f6f6c2d76616c7565202f20636f72652d696e742d76616c7565202f0a20202020202020202020202020636f72652d737472696e672d76616c7565202f20636f72652d62797465732d76616c7565202f20636f72652d7265636f72642d76616c7565202f0a20202020202020202020202020636f72652d76617269616e742d76616c7565202f20636f72652d6c6973742d76616c7565202f20636f72652d6d61702d76616c7565202f0a20202020202020202020202020636f72652d6361706162696c6974792d76616c75650a0a636f72652d6e756c6c2d76616c7565203d207b206b696e643a20226e756c6c22207d0a636f72652d626f6f6c2d76616c7565203d207b206b696e643a2022626f6f6c222c2076616c75653a20626f6f6c207d0a636f72652d696e742d76616c7565203d207b206b696e643a2022696e74222c2077696474683a20747374722c2076616c75653a20696e74207d0a636f72652d737472696e672d76616c7565203d207b206b696e643a2022737472696e67222c2076616c75653a2074737472207d0a636f72652d62797465732d76616c7565203d207b206b696e643a20226279746573222c2076616c75653a2062737472207d0a636f72652d7265636f72642d76616c7565203d207b206b696e643a20227265636f7264222c206669656c64733a207b202a2074737472203d3e20636f72652d76616c7565207d207d0a636f72652d76617269616e742d76616c7565203d207b0a20206b696e643a202276617269616e74222c0a2020747970653a20636f72652d747970652d7265662c0a2020636173653a20747374722c0a20203f207061796c6f61643a20636f72652d76616c75652c0a7d0a636f72652d6c6973742d76616c7565203d207b206b696e643a20226c697374222c2076616c7565733a205b2a20636f72652d76616c75655d207d0a636f72652d6d61702d76616c7565203d207b206b696e643a20226d6170222c20656e74726965733a205b2a205b6b65793a20636f72652d76616c75652c2076616c75653a20636f72652d76616c75655d5d207d0a636f72652d6361706162696c6974792d76616c7565203d207b0a20206b696e643a20226361706162696c697479222c0a2020726563656970743a207368613235362d6469676573742c0a7d0a0a3b2045646963742d617574686f72656420707572652068656c70657273207573652061207075726520436f72652066756e6374696f6e20626f64792e2054686520626f64792063616e2062696e640a3b20707572652065787072657373696f6e7320616e642072657475726e20616e2065787072657373696f6e2c206275742069742063616e6e6f7420636f6e7461696e20436f7265206566666563742c0a3b2067756172642c206272616e63682c206c6f6f702c206d617463682d6e6f64652c206f722070726f6f662d6f626c69676174696f6e206e6f6465732e0a636f72652d666e2d626f6479203d207b0a2020706172616d733a205b2a206c6f63616c2d7265665d2c0a2020626f64793a20636f72652d707572652d626c6f636b2c0a7d0a0a636f72652d707572652d626c6f636b203d207b0a20206c6f63616c733a205b2a206c6f63616c2d7265665d2c0a202062696e64696e67733a205b2a20707572652d6c65742d6e6f64655d2c0a2020726573756c743a20636f72652d657870722c0a7d0a0a707572652d6c65742d6e6f6465203d207b0a20206b696e643a20226c6574222c0a202062696e64696e673a206c6f63616c2d7265662c0a202076616c75653a20636f72652d657870722c0a7d0a0a3b202d2d2d2065787072657373696f6e7320616e642070726564696361746573202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a636f72652d65787072203d206c6f63616c2d65787072202f20636f6e73742d65787072202f207265636f72642d65787072202f206669656c642d65787072202f0a20202020202020202020202076617269616e742d65787072202f206d617463682d65787072202f2063616c6c2d65787072202f206c6973742d65787072202f206d61702d65787072202f0a20202020202020202020202069662d657870720a0a6c6f63616c2d65787072203d207b206b696e643a20226c6f63616c222c207265663a206c6f63616c2d726566207d0a636f6e73742d65787072203d207b206b696e643a2022636f6e7374222c2076616c75653a20636f72652d76616c7565207d0a7265636f72642d65787072203d207b206b696e643a20227265636f7264222c206669656c64733a207b202a2074737472203d3e20636f72652d65787072207d207d0a6669656c642d65787072203d207b206b696e643a20226669656c64222c20626173653a20636f72652d657870722c206669656c643a2074737472207d0a76617269616e742d65787072203d207b0a20206b696e643a202276617269616e74222c0a2020747970653a20636f72652d747970652d7265662c0a2020636173653a20747374722c0a20203f207061796c6f61643a20636f72652d657870722c0a7d0a6d617463682d65787072203d207b0a20206b696e643a20226d61746368222c0a20207363727574696e65653a20636f72652d657870722c0a202061726d733a205b2b206d617463682d61726d5d2c0a7d0a6d617463682d61726d203d207b0a2020636173653a20747374722c0a20203f2062696e6465723a206c6f63616c2d7265662c0a2020626f64793a20636f72652d657870722c0a7d0a63616c6c2d65787072203d207b0a20206b696e643a202263616c6c222c0a202063616c6c65653a20747374722c0a202074797065417267733a205b2a20636f72652d747970652d7265665d2c0a2020617267733a205b2a20636f72652d657870725d2c0a7d0a6c6973742d65787072203d207b206b696e643a20226c697374222c2076616c7565733a205b2a20636f72652d657870725d207d0a6d61702d65787072203d207b206b696e643a20226d6170222c20656e74726965733a205b2a205b6b65793a20636f72652d657870722c2076616c75653a20636f72652d657870725d5d207d0a69662d65787072203d207b0a20206b696e643a20226966222c0a20207072656469636174653a20636f72652d7072656469636174652c0a20207468656e3a20636f72652d657870722c0a2020656c73653a20636f72652d657870722c0a7d0a0a636f72652d707265646963617465203d20747275652d707265646963617465202f2066616c73652d707265646963617465202f206e6f742d707265646963617465202f0a2020202020202020202020202020202020616c6c2d707265646963617465202f20616e792d707265646963617465202f20636f6d706172652d707265646963617465202f0a202020202020202020202020202020202063616c6c2d707265646963617465202f206f62737472756374696f6e2d7072656469636174650a0a747275652d707265646963617465203d207b206b696e643a20227472756522207d0a66616c73652d707265646963617465203d207b206b696e643a202266616c736522207d0a6e6f742d707265646963617465203d207b206b696e643a20226e6f74222c2076616c75653a20636f72652d707265646963617465207d0a616c6c2d707265646963617465203d207b206b696e643a2022616c6c222c2076616c7565733a205b2b20636f72652d7072656469636174655d207d0a616e792d707265646963617465203d207b206b696e643a2022616e79222c2076616c7565733a205b2b20636f72652d7072656469636174655d207d0a636f6d706172652d707265646963617465203d207b0a20206b696e643a2022636f6d70617265222c0a20206f703a20223d3d22202f2022213d22202f20223c22202f20223c3d22202f20223e22202f20223e3d222c0a20206c6566743a20636f72652d657870722c0a202072696768743a20636f72652d657870722c0a7d0a63616c6c2d707265646963617465203d207b0a20206b696e643a202263616c6c222c0a20207072656469636174653a20747374722c0a2020617267733a205b2a20636f72652d657870725d2c0a7d0a6f62737472756374696f6e2d707265646963617465203d207b0a20206b696e643a20226f62737472756374696f6e222c0a2020636f6f7264696e6174653a206661696c7572652d6964656e742c0a20207061796c6f61643a20636f72652d657870722c0a7d0a0a696e7075742d636f6e73747261696e74203d207b0a2020636f6f7264696e6174653a20747374722c0a2020736f757263653a2022776865726522202f2022636f6d70696c6572222c0a20207072656469636174653a20636f72652d7072656469636174652c0a7d0a0a3b202d2d2d20696e74656e74732c20626c6f636b732c20616e64206e6f646573202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a636f72652d696e74656e74203d207b0a2020696e7075743a20636f72652d747970652d7265662c0a20206f75747075743a20636f72652d747970652d7265662c0a202072657175697265644f7065726174696f6e50726f66696c653a20747374722c0a20203f2062617369733a20636f72652d657870722c0a2020696e707574436f6e73747261696e74733a205b2a20696e7075742d636f6e73747261696e745d2c0a2020636f72654576616c756174696f6e4275646765743a20636f72652d6275646765742c0a2020626f64793a20636f72652d626c6f636b2c0a20203f206f707469633a20636f72652d6f707469632c0a7d0a0a636f72652d627564676574203d207b0a20206d617853746570733a2075696e742c0a20206d6178416c6c6f636174656442797465733a2075696e742c0a20206d61784f757470757442797465733a2075696e742c0a7d0a0a636f72652d6f70746963203d207b0a20206f707469634b696e643a2022726576656c6174696f6e22202f20226166666563745265696e746567726174696f6e222c0a2020626f756e646172794b696e643a202270726f6a656374696f6e22202f2022616666656374222c0a20206170657274757265526571756972656d656e743a2061706572747572652d726571756972656d656e742c0a2020737570706f7274506f6c6963793a20747374722c0a20206c6f7373446973706f736974696f6e3a20747374722c0a7d0a0a636f72652d626c6f636b203d207b0a20206c6f63616c733a205b2a206c6f63616c2d7265665d2c0a20206e6f6465733a205b2a20636f72652d6e6f64655d2c0a2020726573756c743a20636f72652d657870722c0a7d0a0a636f72652d6e6f6465203d206c65742d6e6f6465202f20726571756972652d6e6f6465202f206566666563742d6e6f6465202f0a20202020202020202020202065787465726e616c2d616374696f6e2d726571756573742d6e6f6465202f2067756172642d6e6f6465202f206272616e63682d6e6f6465202f0a202020202020202020202020666f722d6e6f6465202f206d617463682d6e6f6465202f2070726f6f662d6f626c69676174696f6e2d6e6f64650a0a6c65742d6e6f6465203d207b0a20206b696e643a20226c6574222c0a202062696e64696e673a206c6f63616c2d7265662c0a202076616c75653a20636f72652d657870722c0a7d0a726571756972652d6e6f6465203d207b0a20206b696e643a202272657175697265222c0a20207072656469636174653a20636f72652d7072656469636174652c0a20206f6e4661696c7572653a20726571756972652d6661696c7572652d61726d2c0a7d0a726571756972652d6661696c7572652d61726d203d207465726d696e616c2d726571756972652d6661696c757265202f0a20202020202020202020202020202020202020202020636f6e74696e75652d6f6273747275637465642d726571756972652d6661696c7572650a7465726d696e616c2d726571756972652d6661696c757265203d207b0a20206b696e643a20227465726d696e616c222c0a2020726561736f6e3a206f62737472756374696f6e2d726561736f6e2c0a7d0a636f6e74696e75652d6f6273747275637465642d726571756972652d6661696c757265203d207b0a20206b696e643a2022636f6e74696e75654f627374727563746564222c0a2020726561736f6e3a206f62737472756374696f6e2d726561736f6e2c0a7d0a6f62737472756374696f6e2d726561736f6e203d207b0a2020726561736f6e4b696e643a20747374722c0a20207061796c6f61643a207b202a2074737472203d3e20636f72652d65787072207d2c0a7d0a6566666563742d6e6f6465203d207b0a20206b696e643a2022656666656374222c0a202062696e64696e673a206c6f63616c2d7265662c0a20206566666563743a20747374722c0a2020696e7075743a20636f72652d657870722c0a20206f62737472756374696f6e4d61703a207b202a206661696c7572652d6964656e74203d3e206f62737472756374696f6e2d61726d207d2c0a7d0a65787465726e616c2d616374696f6e2d726571756573742d6e6f6465203d207b0a20206b696e643a202265787465726e616c416374696f6e52657175657374222c0a202062696e64696e673a206c6f63616c2d7265662c0a20206f7065726174696f6e3a207265736f757263652d7265662c0a2020696e707574547970653a20636f72652d747970652d7265662c0a2020736574746c656d656e74547970653a20636f72652d747970652d7265662c0a2020696e707574536368656d613a207265736f757263652d7265662c0a2020736574746c656d656e74536368656d613a207265736f757263652d7265662c0a2020696e7075743a20636f72652d657870722c0a2020617574686f7269747953636f70653a20636f72652d657870722c0a202062617369733a20636f72652d657870722c0a20206275646765743a2065787465726e616c2d616374696f6e2d6275646765742c0a20207265636f6e63696c696174696f6e4c61773a207265736f757263652d7265662c0a202073746174653a20226177616974696e67536574746c656d656e74222c0a2020736574746c656d656e7441646d697373696f6e3a2022736368656d615265717569726564222c0a7d0a65787465726e616c2d616374696f6e2d627564676574203d207b0a20206d6178536574746c656d656e7442797465733a20636f72652d657870722c0a20206d6178417474656d7074733a20636f72652d657870722c0a7d0a6f62737472756374696f6e2d61726d203d207b0a202062696e6465723a206c6f63616c2d7265662c0a202076616c75653a20636f72652d657870722c0a7d0a67756172642d6e6f6465203d207b0a20206b696e643a20226775617264222c0a20207072656469636174653a20636f72652d7072656469636174652c0a20206f62737472756374696f6e3a20636f72652d657870722c0a7d0a6272616e63682d6e6f6465203d207b0a20206b696e643a20226272616e6368222c0a20203f2062696e64696e673a206c6f63616c2d7265662c0a20207072656469636174653a20636f72652d7072656469636174652c0a20207468656e3a20636f72652d626c6f636b2c0a2020656c73653a20636f72652d626c6f636b2c0a7d0a666f722d6e6f6465203d207b0a20206b696e643a2022666f72222c0a202062696e6465723a206c6f63616c2d7265662c0a2020697465723a20636f72652d657870722c0a2020626f756e643a20636f72652d626f756e642c0a2020626f64793a20636f72652d626c6f636b2c0a7d0a6d617463682d6e6f6465203d207b0a20206b696e643a20226d61746368222c0a20207363727574696e65653a20636f72652d657870722c0a202061726d733a205b2b206d617463682d626c6f636b2d61726d5d2c0a7d0a6d617463682d626c6f636b2d61726d203d207b0a2020636173653a20747374722c0a20203f2062696e6465723a206c6f63616c2d7265662c0a2020626f64793a20636f72652d626c6f636b2c0a7d0a70726f6f662d6f626c69676174696f6e2d6e6f6465203d207b0a20206b696e643a202270726f6f66222c0a2020636f6f7264696e6174653a20747374722c0a20207072656469636174653a20636f72652d7072656469636174652c0a7d0a0a636f72652d626f756e64203d206c69746572616c2d626f756e64202f20636f6f7264696e6174652d626f756e640a6c69746572616c2d626f756e64203d207b206b696e643a20226c69746572616c222c2076616c75653a2075696e74207d0a636f6f7264696e6174652d626f756e64203d207b206b696e643a2022636f6f7264696e617465222c207265663a2074737472207d0a0a3b20536861726564207265736f757263652d7265662c207368613235362d6469676573742c206661696c7572652d6964656e742c2061706572747572652d726571756972656d656e742c20616e640a3b20636f72652d747970652d7265662061726520646566696e6564206f6e636520696e2065646963742d636f6d6d6f6e2e6364646c2e0a0a3b202d2d2d2065646963742d6c61777061636b2e6364646c202d2d2d0a3b2065646963742d6c61777061636b2e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f7220746865204564696374206c61777061636b206d616e696665737420616e64206578706f727420737572666163652e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e204a534f4e20696e207468652070726f73652073706563730a3b2069732061207265766965772072656e646572696e672067656e6572617465642066726f6d207468697320736368656d61202845444943542d4142492d4e4f4455502d303031292e0a0a6c61777061636b2d6d616e6966657374203d207b0a202061706956657273696f6e3a202265646963742e6c61777061636b2f7631222c0a202069643a20747374722c0a202076657273696f6e3a20747374722c0a20206163636570746564436f72654162693a205b2b20747374725d2c0a2020646570656e64656e636965733a205b2a206c61777061636b2d6465705d2c202020202020202020203b20616379636c69632c206469676573742d6c6f636b6564202845444943542d4c41575041434b2d4441472d303031290a20206578706f7274733a207265736f757263652d7265662c0a20203f2074617267657441646170746572733a205b2b207461726765742d616461707465725d2c2020203b207265717569726564206f6e6c7920696620616e792072756e74696d6520656666656374206578697374730a20203f2068656c706572436f6d706f6e656e743a2065786563757461626c652d636f6d706f6e656e742c203b2065786563757461626c652068656c70657273206361727279207468656972206f776e2073616e64626f782b6675656c0a202076657269666965723a2076657269666965722c202020202020202020202020202020202020202020203b20636c61737369666965643a206465636c61726174697665206f722065786563757461626c650a2020636f6d7061746962696c6974793a207265736f757263652d7265662c0a2020636f6e666f726d616e636546697874757265436f727075733a207265736f757263652d7265662c0a7d0a0a3b2041207665726966696572206973206569746865722061206465636c617261746976652072756c6573657420286e6f2072756e74696d6529206f7220616e2065786563757461626c650a3b20636f6d706f6e656e742e20416e2065786563757461626c65207665726966696572204d55535420636172727920697473206f776e2073616e64626f7820616e64206675656c206d6f64656c2c0a3b20736f2074686520736368656d6120656e666f726365732074686174206e6f2065786563757461626c6520636f6d706f6e656e74206973206c65667420756e626f756e6465640a3b202845444943542d4142492d56455249464945522d424f554e442d303031292e0a7665726966696572203d206465636c617261746976652d7665726966696572202f2065786563757461626c652d76657269666965720a6465636c617261746976652d7665726966696572203d207b20636c6173733a20226465636c61726174697665222c2072756c657365743a207265736f757263652d726566207d0a65786563757461626c652d7665726966696572203d207b0a2020636c6173733a202265786563757461626c65222c0a2020636f6d706f6e656e743a207265736f757263652d7265662c0a202073616e64626f783a207265736f757263652d7265662c0a20206675656c4d6f64656c3a207265736f757263652d7265662c0a7d0a0a3b20416e792065786563757461626c6520636f6d706f6e656e7420697320626f756e64656420627920697473206f776e2073616e64626f78202b206675656c206d6f64656c2e0a65786563757461626c652d636f6d706f6e656e74203d207b0a2020636f6d706f6e656e743a207265736f757263652d7265662c0a202073616e64626f783a207265736f757263652d7265662c0a20206675656c4d6f64656c3a207265736f757263652d7265662c0a7d0a0a6c61777061636b2d646570203d207b2069643a20747374722c2076657273696f6e3a20747374722c206469676573743a207368613235362d646967657374207d0a0a3b20416461707465722073656c656374696f6e206b65797320534f4c454c59206f666620746865206469676573742d6c6f636b65642060616363657074656454617267657450726f66696c65600a3b20286974732060696460206973207468652070726f66696c652069643b206974732060646967657374602070696e73207468652065786163742070726f66696c652f76657273696f6e292e2054686572650a3b20617265206e6f20696e646570656e64656e7420646973706c617920737472696e6773207468617420636f756c64206469736167726565207769746820746865206c6f636b2c20736f20610a3b207265736f6c7665722063616e6e6f742062696e6420616e206164617074657220746f206f6e6520746172676574207768696c6520746865206c6f636b2070726f76657320616e6f746865720a3b202845444943542d4c41575041434b2d414441505445522d54415247455449522d303031292e0a7461726765742d61646170746572203d207b0a2020616363657074656454617267657450726f66696c653a207265736f757263652d7265662c202020203b206469676573742d6c6f636b65642c20617574686f72697461746976652073656c6563746f720a2020616363657074656454617267657449723a207265736f757263652d7265662c2020202020202020203b206469676573742d6c6f636b65640a2020616461707465723a207265736f757263652d7265662c0a7d0a0a3b20536861726564207479706573207265736f757263652d72656620616e64207368613235362d6469676573742061726520646566696e6564206f6e636520696e0a3b2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d61202845444943542d4142492d4e4f4455502d303031292e0a0a3b202d2d2d206578706f72742073757266616365202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a6c61777061636b2d6578706f727473203d207b0a202074797065733a205b2a206578706f727465642d747970655d2c0a2020636f6e7374616e74733a205b2a206578706f727465642d636f6e7374616e745d2c0a20207075726546756e6374696f6e733a205b2a20707572652d66756e6374696f6e5d2c0a2020656666656374733a205b2a2073656d616e7469632d6566666563745d2c0a20206f62737472756374696f6e733a205b2a206f62737472756374696f6e2d6465665d2c0a20203b206b65796564206279206f7065726174696f6e2d70726f66696c6520636f6f7264696e61746520e2869220756e697175656e65737320656e666f726365640a20203b202845444943542d4142492d4f5050524f46494c452d554e495155452d303031290a20203b206f7065726174696f6e2d70726f66696c65207265636f7264732074686973206c61777061636b206578706f72747320286f707469632074656d706c6174657320746861740a20203b2060696d706c656d656e7473602f6070726f66696c656020636c6175736573207265736f6c766520616761696e7374292e206f7065726174696f6e2d70726f66696c652069730a20203b20646566696e656420696e2065646963742d636f6d6d6f6e2e6364646c202845444943542d4142492d4f5050524f46494c452d534c4f542d303031292e0a20206f7065726174696f6e50726f66696c65733a207b202a2074737472203d3e206f7065726174696f6e2d70726f66696c65207d2c20203b206b6579656420627920636f6f7264696e6174650a7d0a0a6578706f727465642d7479706520202020203d207b20636f6f7264696e6174653a20747374722c20646566696e6974696f6e3a20636f72652d747970652d726566207d0a6578706f727465642d636f6e7374616e74203d207b20636f6f7264696e6174653a20747374722c20747970653a20636f72652d747970652d7265662c2076616c75653a20616e79207d0a0a3b204120707572652068656c7065722069732061206469736372696d696e6174656420756e696f6e2062792060736f75726365602c20736f2074686520736368656d6120697473656c660a3b2067756172616e7465657320616e20696d706c656d656e746174696f6e20657869737473202845444943542d4c41575041434b2d505552452d494d504c2d303031293a0a3b2020202d20226564696374223a20617574686f72656420696e2045646963742f436f72653b2074686520436f726520626f6479206973206361727269656420696e6c696e6520286861736865640a3b20202020207769746820746865206578706f72742073757266616365292e2054686520736368656d61207265717569726573207468652060626f647960206669656c642e0a3b2020202d2022636f6d706f6e656e74223a20696d706c656d656e746564206f7574736964652045646963743b2063617272696573206e6f20696e6c696e6520626f647920616e6420696e73746561640a3b20202020206361727269657320697473206f776e206469676573742d6c6f636b65642060696d706c656d656e746174696f6e60202873616e64626f78202b206675656c292e20497420646f65730a3b20202020206e6f7420646570656e64206f6e20746865206f7074696f6e616c206d616e69666573742d6c6576656c2068656c706572436f6d706f6e656e742e0a707572652d66756e6374696f6e203d2065646963742d707572652d66756e6374696f6e202f20636f6d706f6e656e742d707572652d66756e6374696f6e0a0a707572652d66756e6374696f6e2d636f6d6d6f6e203d20280a2020636f6f7264696e6174653a20747374722c0a202074797065506172616d65746572733a205b2a20747374725d2c0a2020706172616d6574657254797065733a205b2a20636f72652d747970652d7265665d2c2020202020203b20616c6c20626f756e6465640a202072657475726e547970653a20636f72652d747970652d7265662c20202020202020202020202020203b20626f756e6465640a2020636f737454656d706c6174653a20747374722c0a202064657465726d696e69736d436c6173733a2022746f74616c22202f2022746f74616c2d776974682d74797065642d646961676e6f73746963222c0a290a0a65646963742d707572652d66756e6374696f6e203d207b0a2020707572652d66756e6374696f6e2d636f6d6d6f6e2c0a2020736f757263653a20226564696374222c0a2020626f64793a20636f72652d666e2d626f64792c2020202020202020202020202020202020202020203b20696e6c696e652c20686173682d7369676e69666963616e740a7d0a0a636f6d706f6e656e742d707572652d66756e6374696f6e203d207b0a2020707572652d66756e6374696f6e2d636f6d6d6f6e2c0a2020736f757263653a2022636f6d706f6e656e74222c0a20203b20746865206469676573742d6c6f636b656420636f6d706f6e656e7420696d706c656d656e74696e6720746869732068656c7065722e2052657175697265642061742074686520736368656d610a20203b206c6576656c20736f206120636f6d706f6e656e742068656c7065722063616e206e657665722076616c696461746520776974686f7574206120686173682d626f756e642c0a20203b2073616e64626f782b6675656c2d64657363726962656420696d706c656d656e746174696f6e202845444943542d4c41575041434b2d505552452d494d504c2d303031292e0a2020696d706c656d656e746174696f6e3a2065786563757461626c652d636f6d706f6e656e742c0a7d0a0a3b20636f72652d666e2d626f647920697320646566696e65642062792065646963742d636f72652e6364646c20616e6420617373656d626c656420776974682074686973206c61777061636b0a3b20736368656d612e2049742069732061207075726520436f72652066756e6374696f6e20626f64792c206e6f7420616e206566666563742d63617061626c6520636f72652d626c6f636b2e0a0a73656d616e7469632d656666656374203d207b0a2020636f6f7264696e6174653a20747374722c0a202074797065506172616d65746572733a205b2a20747374725d2c0a2020696e707574547970653a20636f72652d747970652d7265662c2020202020202020202020202020203b20626f756e6465640a20206f7574707574547970653a20636f72652d747970652d7265662c20202020202020202020202020203b20626f756e6465640a2020657865637574696f6e436c6173733a202270726f6f664f6e6c7922202f202272756e74696d65222c2020203b206f7274686f676f6e616c20746f207772697465436c6173730a20206566666563744b696e6448696e743a206566666563742d6b696e642c0a2020666f6f747072696e744f626c69676174696f6e3a20747374722c0a2020636f73744f626c69676174696f6e3a20747374722c0a20206566666563744661696c757265733a207b202a206661696c7572652d6964656e74203d3e206566666563742d6661696c7572652d626f6479207d2c20203b206b6579656420627920636f6f7264696e6174653b20756e697175650a20206775617264537570706f72743a20626f6f6c2c0a7d0a0a6f62737472756374696f6e2d646566203d207b0a2020636f6f7264696e6174653a20747374722c0a2020617574686f72697479436c6173733a20617574686f726974792d636c6173732c0a20207061796c6f6164536368656d613a20636f72652d747970652d7265662c20202020202020202020203b2074797065642c20626f756e64656420286d617920626520656d707479207265636f7264290a7d0a0a3b206566666563742d6661696c7572652d626f64792c206566666563742d6b696e642c20617574686f726974792d636c6173732c20616e6420636f72652d747970652d7265662061726520646566696e65640a3b206f6e636520696e2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d61202845444943542d4142492d4e4f4455502d303031292e0a0a3b202d2d2d2065646963742d6c61777061636b2d616461707465722e6364646c202d2d2d0a3b2065646963742d6c61777061636b2d616461707465722e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f72206f6e6520646972656374206465636c61726174697665206c61777061636b2074617267657420616461707465722e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a3b0a3b2054686520656e636c6f73696e67206c61777061636b206d616e69666573742073656c6563747320746865206578616374207461726765742070726f66696c652c207461726765742049522c0a3b20616e642061646170746572207265736f75726365206469676573742e2054686f7365206964656e74697469657320617265206e6f7420726570656174656420686572652e0a0a6c61777061636b2d61646170746572203d207b0a202061706956657273696f6e3a202265646963742e6c61777061636b2d616461707465722f7631222c0a2020636c6173733a20226465636c61726174697665222c0a20206f7065726174696f6e50726f66696c65733a207b0a202020202a2074737472203d3e206c61777061636b2d616461707465722d6f7065726174696f6e2d70726f66696c650a20207d2c0a2020656666656374496d706c656d656e746174696f6e733a207b0a202020202a2074737472203d3e206c61777061636b2d616461707465722d6566666563740a20207d2c0a2020627564676574733a207b0a202020202a2074737472203d3e206c61777061636b2d616461707465722d6275646765740a20207d2c0a7d0a0a3b204b657973206172652063616e6f6e6963616c206c61777061636b206f7065726174696f6e2d70726f66696c6520636f6f7264696e617465732e0a6c61777061636b2d616461707465722d6f7065726174696f6e2d70726f66696c65203d0a20207b0a20202020636f72653a20747374722c0a2020202073656d616e746963456666656374733a205b2b20747374725d2c0a202020203f206275646765744f626c69676174696f6e3a20747374722c0a202020203f20746172676574436f6e66696775726174696f6e3a207265736f757263652d7265662c0a20207d202f0a20207b0a20202020636f72653a20747374722c0a2020202073656d616e746963456666656374733a205b5d2c0a202020206275646765744f626c69676174696f6e3a20747374722c0a20202020746172676574436f6e66696775726174696f6e3a207265736f757263652d7265662c0a20207d0a0a3b204b657973206172652063616e6f6e6963616c206c61777061636b2073656d616e7469632d65666665637420636f6f7264696e617465732e20466f6f747072696e742c20636f73742c20616e640a3b206661696c757265206669656c6473206d7573742065786163746c792064697363686172676520746865206d61746368696e67206578706f72746564206566666563742e0a6c61777061636b2d616461707465722d656666656374203d207b0a2020746172676574496e7472696e7369633a20747374722c0a2020746172676574436f6e66696775726174696f6e3a207265736f757263652d7265662c0a20207772697465436c6173733a206c61777061636b2d616461707465722d77726974652d636c6173732c0a2020666f6f747072696e744f626c69676174696f6e3a20747374722c0a2020636f73744f626c69676174696f6e3a20747374722c0a20206661696c7572654d617070696e67733a207b202a206661696c7572652d6964656e74203d3e2074737472207d2c0a7d0a0a3b204b657973206172652063616e6f6e6963616c206578706f7274656420636f73742d6f626c69676174696f6e20636f6f7264696e617465732e0a6c61777061636b2d616461707465722d627564676574203d207b0a20206d617853746570733a2075696e742c0a20206d6178416c6c6f636174656442797465733a2075696e742c0a20206d61784f757470757442797465733a2075696e742c0a7d0a0a6c61777061636b2d616461707465722d77726974652d636c617373203d20226e6f6e6522202f20227265616422202f202263726561746522202f2022656e7375726522202f0a20202020202020202020202020202020202020202020202020202020202022617070656e6422202f20227265706c61636522202f202264656c65746522202f2022637573746f6d220a0a3b206661696c7572652d6964656e7420697320646566696e656420696e2065646963742d636f6d6d6f6e2e6364646c2e0a0a3b202d2d2d2065646963742d7461726765742d70726f66696c652e6364646c202d2d2d0a3b2065646963742d7461726765742d70726f66696c652e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f7220746865204564696374207461726765742070726f66696c65206d616e69666573742e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76310a3b202873656520535045435f636f6e74696e75756d2d636f6e74726163742d62756e646c652d76312e6d64292e204a534f4e20696e207468652070726f736520737065637320697320610a3b207265766965772072656e646572696e672067656e6572617465642066726f6d207468697320736368656d613b2074686973204344444c206973207468652073696e676c6520736f757263650a3b206f66207472757468202845444943542d4142492d4e4f4455502d303031292e0a0a7461726765742d70726f66696c652d6d616e6966657374203d207b0a202061706956657273696f6e3a202265646963742e7461726765742d70726f66696c652f7631222c0a202069643a20747374722c202020202020202020202020202020202020202020202020203b20652e672e20226563686f2e64706f220a202076657273696f6e3a20747374722c20202020202020202020202020202020202020203b20652e672e202231220a20206163636570746564436f72654162693a205b2b20747374725d2c20202020202020203b20652e672e205b2265646963742e636f72652f7631225d0a0a2020696e7472696e736963733a207265736f757263652d7265662c0a2020696e7472696e7369634e616d6573706163653a20747374722c0a20203b207075626c697368657320746869732070726f66696c652773206f7065726174696f6e2d70726f66696c65207265636f72647320286f707469632074656d706c6174657320746861740a20203b206070726f66696c65602f60696d706c656d656e74736020636c6175736573207265736f6c766520616761696e7374292e205265666572656e63657320616e0a20203b206f7065726174696f6e2d70726f66696c65732d646f63756d656e74202845444943542d4142492d4f5050524f46494c452d534c4f542d303031292e0a20206f7065726174696f6e50726f66696c65733a207265736f757263652d7265662c0a2020666f6f747072696e74416c67656272613a207265736f757263652d7265662c0a2020636f7374416c67656272613a207265736f757263652d7265662c0a202074617267657449723a207265736f757263652d7265662c0a20206f62737472756374696f6e5461786f6e6f6d793a207265736f757263652d7265662c0a202076657269666965723a207265736f757263652d7265662c0a20206c6f77657265723a207265736f757263652d7265662c0a202073616e64626f783a207265736f757263652d7265662c0a20206675656c4d6f64656c3a207265736f757263652d7265662c0a0a20203b206669656c647320746865206c616e67756167652073706563207265717569726573206f662065766572792070726f66696c650a202062756e646c6550726f66696c653a207265736f757263652d7265662c0a202067656e657261746564417274696661637450726f66696c65733a205b2a207265736f757263652d7265665d2c0a202063616e6f6e6963616c456e636f64696e6752756c65733a207265736f757263652d7265662c0a20203b20412070726f66696c65207468617420616363657074732074686520646972656374206465636c61726174697665206c61777061636b2d6164617074657220414249206e616d65732069740a20203b2065786163746c79206f6e63652e2050726f66696c6573207468617420646f206e6f7420636f6e73756d65206c61777061636b206164617074657273206c6561766520746869730a20203b206f7074696f6e616c20736c6f7420616273656e74206f7220656d7074792e0a20203f2061636365707465644c61777061636b416461707465724162693a205b5d202f205b2265646963742e6c61777061636b2d616461707465722f7631225d2c0a2020646961676e6f737469634162693a207265736f757263652d7265662c0a0a20203b206170706c69636174696f6e20646f637472696e650a20206170706c69636174696f6e4d6f64656c3a202261746f6d6963222c0a202072656164436f6e73697374656e63793a20226170706c69636174696f6e2d736e617073686f7422202f20747374722c0a202067756172644576616c756174696f6e3a2022707265636f6d6d69742d61746f6d696322202f20747374722c0a20206f62737472756374696f6e526f6c6c6261636b3a20226e6f2d76697369626c652d6566666563747322202f20747374722c0a20206d756c74695461726765743a20626f6f6c2c0a20203b207768657468657220746865207461726765742063616e206576616c7561746520707265636f6d6d697420706f7374636f6e646974696f6e20286067756172616e746565602920636865636b730a20203b20696e73696465207468652061746f6d6963206170706c69636174696f6e20756e6974202845444943542d5441524745542d504f5354434f4e442d303031290a2020706f7374636f6e646974696f6e537570706f72743a20626f6f6c2c0a0a202064657465726d696e6973746963457865637574696f6e3a207265736f757263652d7265662c0a2020636f6e666f726d616e636546697874757265436f727075733a207265736f757263652d7265662c0a7d0a0a3b20536861726564207479706573207265736f757263652d72656620616e64207368613235362d6469676573742061726520646566696e6564206f6e636520696e0a3b2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d6120627920746865206275696c640a3b202845444943542d4142492d4e4f4455502d303031292e205468657920617265206e6f74207265646566696e656420686572652e0a0a3b202d2d2d20696e7472696e736963207369676e6174757265202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a3b20546865206172746966616374207265666572656e63656420627920746865206d616e696665737427732060696e7472696e7369637360207265736f757263652d726566206973207468650a3b20696e7472696e7369632d7369676e617475726520636f7270757320646f63756d656e742062656c6f772e20497473206c61796f757420697320666978656420736f2074776f0a3b20696e646570656e64656e742070726f66696c65732076616c69646174652f686173682074686520636f72707573206964656e746963616c6c790a3b202845444943542d4142492d494e5452494e534943532d444f432d303031292e0a0a3b20696e7472696e736963732069732061204d4150206b6579656420627920636f6f7264696e6174652c20736f2074686520736368656d6120697473656c6620656e666f726365730a3b20636f6f7264696e61746520756e697175656e6573732e20412070726f766964657220726563656976657320746865207265736f6c76656420636f7270757320617320610a3b206469676573742d626f756e642073656d616e74696320696e70757420616e64207265736f6c76657320636f6f7264696e617465732077697468696e20746861742061727469666163742e0a3b2045616368206d6170206b6579204d55535420657175616c20697473207265636f726427732060636f6f7264696e61746560206669656c640a3b202845444943542d4142492d494e5452494e5349432d554e495155452d303031292e0a696e7472696e736963732d646f63756d656e74203d207b0a202061706956657273696f6e3a202265646963742e7461726765742d70726f66696c652e696e7472696e736963732f7631222c0a2020696e7472696e736963733a207b202a2074737472203d3e20696e7472696e736963207d2c0a7d0a0a3b20546865206172746966616374207265666572656e63656420627920746865206d616e6966657374277320606f7065726174696f6e50726f66696c657360207265736f757263652d7265662e0a3b206f7065726174696f6e2d70726f66696c65202f206f707469632d74656d706c6174652061726520646566696e656420696e2065646963742d636f6d6d6f6e2e6364646c2e204b657965642062790a3b20636f6f7264696e61746520736f207265736f6c7574696f6e2063616e2774207069636b206265747765656e2074776f2073616d652d636f6f7264696e6174652070726f66696c65730a3b202845444943542d4142492d4f5050524f46494c452d534c4f542d3030312c2045444943542d4142492d4f5050524f46494c452d554e495155452d303031292e0a6f7065726174696f6e2d70726f66696c65732d646f63756d656e74203d207b0a202061706956657273696f6e3a202265646963742e7461726765742d70726f66696c652e6f7065726174696f6e2d70726f66696c65732f7631222c0a202070726f66696c65733a207b202a2074737472203d3e206f7065726174696f6e2d70726f66696c65207d2c0a7d0a0a3b2041207479706564207072652d6c6f776572696e67207175657374696f6e20746861742063616e2062652070726f706f73656420627920576174736f6e206f7220616e206167656e7420616e640a3b20636865636b65642062792074686520636f6d70696c65722e2049742069732063616e6f6e6963616c2d43424f5220656e636f64656420756e6465720a3b206065646963742e6c6f776572696e672d726571756972656d656e74732f7631603b2074686520636f6d70696c657220636865636b7320746869732061727469666163742c206e6f74207468650a3b2070726f736520746861742070726f64756365642069742e0a6c6f776572696e672d726571756972656d656e7473203d207b0a202061706956657273696f6e3a202265646963742e6c6f776572696e672d726571756972656d656e74732f7631222c0a20206f7065726174696f6e50726f66696c653a20747374722c0a202073656d616e746963456666656374733a205b2a2073656d616e7469632d6566666563742d726571756972656d656e745d2c0a202072657175697265645772697465436c61737365733a205b2a2077726974652d636c6173735d2c0a202067756172644b696e64733a205b2a2067756172642d6b696e645d2c0a202061746f6d69636974793a2061746f6d69636974792d726571756972656d656e742c0a2020706f7374636f6e646974696f6e537570706f72743a20626f6f6c2c0a20206f62737472756374696f6e436f6f7264696e617465733a205b2a20747374725d2c0a2020666f6f747072696e744f626c69676174696f6e733a205b2a20747374725d2c0a2020636f73744f626c69676174696f6e733a205b2a20747374725d2c0a20206f70746963436f6e74726163743a20747374722c0a7d0a0a73656d616e7469632d6566666563742d726571756972656d656e74203d207b0a2020636f6f7264696e6174653a20747374722c0a20207772697465436c6173733a2077726974652d636c6173732c0a202067756172644b696e64733a205b2a2067756172642d6b696e645d2c0a20206f62737472756374696f6e436f6f7264696e617465733a205b2a20747374725d2c0a2020666f6f747072696e744f626c69676174696f6e733a205b2a20747374725d2c0a2020636f73744f626c69676174696f6e733a205b2a20747374725d2c0a7d0a0a77726974652d636c617373203d20226e6f6e6522202f20227265616422202f202263726561746522202f2022656e7375726522202f2022617070656e6422202f0a2020202020202020202020202020227265706c61636522202f202264656c65746522202f20747374720a67756172642d6b696e64203d2022707265636f6d6d69742d61746f6d696322202f20747374720a61746f6d69636974792d726571756972656d656e74203d202261746f6d696322202f20747374720a0a3b20412067656e75696e6520756e696f6e3a207075726520636f6e7374727563746f7273206361727279206e6f20656666656374206b696e64206f72206661696c757265733b206566666563740a3b20696e7472696e73696373206d757374202845444943542d5441524745542d494e5452494e5349432d434c4153532d303031292e2054686520736368656d6120656e666f7263657320746869732c0a3b206e6f74206120636f6d6d656e742e0a0a3b2054686520696e7472696e736963277320636f6f7264696e6174652069732074686520696e7472696e73696373206d6170204b45592c206e6f7420612076616c7565206669656c642c20736f207468650a3b206b657920616e6420636f6f7264696e6174652063616e206e65766572206469736167726565202845444943542d4142492d494e5452494e5349432d554e495155452d303031292e0a696e7472696e736963203d20707572652d696e7472696e736963202f206566666563742d696e7472696e7369630a0a707572652d696e7472696e736963203d207b0a2020696e7472696e736963436c6173733a202270757265222c0a202074797065506172616d65746572733a205b2a20747374725d2c0a2020617267756d656e7454797065733a205b2a20636f72652d747970652d7265665d2c0a202072657475726e547970653a20636f72652d747970652d7265662c0a20206775617264537570706f72743a2066616c73652c0a2020666f6f747072696e7454656d706c6174653a20747374722c0a2020636f737454656d706c6174653a20747374722c0a20207772697465436c6173733a20226e6f6e65222c0a7d0a0a6566666563742d696e7472696e736963203d207b0a2020696e7472696e736963436c6173733a2022656666656374222c0a202074797065506172616d65746572733a205b2a20747374725d2c0a2020617267756d656e7454797065733a205b2a20636f72652d747970652d7265665d2c0a202072657475726e547970653a20636f72652d747970652d7265662c0a20206566666563744b696e643a206566666563742d6b696e642c0a20203b206d6170206b65796564206279206661696c75726520636f6f7264696e61746520286661696c7572652d6964656e74293b20746865206661696c75726520636f6f7264696e6174652069730a20203b20746865206b65792c206e6f7420612076616c7565206669656c642c20736f20756e697175656e657373206973207374727563747572616c0a20203b202845444943542d4142492d4641494c5552452d554e495155452d303031292e0a20206566666563744661696c757265733a207b202a206661696c7572652d6964656e74203d3e206566666563742d6661696c7572652d626f6479207d2c0a20206775617264537570706f72743a20626f6f6c2c0a2020666f6f747072696e7454656d706c6174653a20747374722c0a2020636f737454656d706c6174653a20747374722c0a20207772697465436c6173733a20227265616422202f202263726561746522202f2022656e7375726522202f2022617070656e6422202f20227265706c61636522202f0a20202020202020202020202020202264656c65746522202f2022637573746f6d222c0a202063616e5061727469636970617465496e41746f6d696347756172643a20626f6f6c2c0a7d0a0a3b206566666563742d6661696c7572652d626f64792c206566666563742d6b696e642c20617574686f726974792d636c6173732c20616e6420636f72652d747970652d7265662061726520646566696e65640a3b206f6e636520696e2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d61202845444943542d4142492d4e4f4455502d303031292e0a0a3b202d2d2d2065646963742d617574686f726974792d66616374732e6364646c202d2d2d0a3b2065646963742d617574686f726974792d66616374732e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f722074686520666972737420636f6d70696c65722d636f6e7465787420617574686f726974792d666163747320646f63756d656e742e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a3b0a3b205468697320736368656d6120697320617373656d626c656420776974682065646963742d636f6d6d6f6e2e6364646c20736f20736f757263652e6469676573742075736573207468650a3b20736861726564207368613235362d6469676573742074797065642076616c75652e204a534f4e2069732061207265766965772f696e7075742072656e646572696e673a206974730a3b20607368613235363a3c3634206865783e6020736f75726365206469676573742069732070726f6a656374656420746f205b60736861323536602c203332207261772062797465735d206f6e0a3b2074686520776972652c20616e64206974732066616374206172726179732070726f6a65637420746f2074686520636f6f7264696e6174652d6b65796564206d6170732062656c6f772e0a0a617574686f726974792d6661637473203d207b0a202061706956657273696f6e3a202265646963742e617574686f726974792d66616374732f7631222c0a2020736f757263653a20617574686f726974792d666163742d736f757263652c0a20206f7065726174696f6e50726f66696c65733a207b202a2074737472203d3e20617574686f726974792d6f7065726174696f6e2d70726f66696c652d66616374207d2c0a20206566666563745772697465436c61737365733a207b202a2074737472203d3e20617574686f726974792d77726974652d636c617373207d2c0a2020627564676574733a207b202a2074737472203d3e20617574686f726974792d6275646765742d66616374207d2c0a7d0a0a617574686f726974792d666163742d736f75726365203d207b0a20206b696e643a20226c61777061636b22202f202274617267657450726f66696c65222c0a2020636f6f7264696e6174653a20747374722c0a20206469676573743a207368613235362d6469676573742c0a7d0a0a3b20546865206d6170206b65792069732074686520736f75726365206f7065726174696f6e2d70726f66696c6520636f6f7264696e6174652e204974206973206e6f7420726570656174656420696e0a3b207468652076616c75652c20736f2061206b657920616e6420656d62656464656420636f6f7264696e6174652063616e6e6f742064697361677265652e20416c6c6f7765642077726974650a3b20636c61737365732061726520612063616e6f6e6963616c206d61702d7365743a2074686520636c6173732069732074686520756e69717565206b657920616e64206e756c6c206973207468650a3b20756e6974206d61726b65722e2043616e6f6e6963616c2043424f52206669786573206b6579206f7264657220776974686f75742061207365636f6e64206f72646572696e672072756c652e0a617574686f726974792d6f7065726174696f6e2d70726f66696c652d66616374203d207b0a2020636f72653a20747374722c0a2020616c6c6f7765645772697465436c61737365733a207b202a20617574686f726974792d77726974652d636c617373203d3e206e756c6c207d2c0a7d0a0a3b20546865206566666563745772697465436c6173736573206d6170206b6579206973207468652073656d616e7469632065666665637420636f6f7264696e6174652e2054686520627564676574730a3b206d6170206b65792069732074686520736f757263652062756467657420636f6f7264696e6174652e2043616e6f6e6963616c2043424f52206d61702d6b657920756e697175656e6573730a3b206d616b6573206475706c6963617465206661637420636f6f7264696e61746573207374727563747572616c6c7920756e726570726573656e7461626c652e0a617574686f726974792d6275646765742d66616374203d207b0a20206d617853746570733a2075696e742c0a20206d6178416c6c6f636174656442797465733a2075696e742c0a20206d61784f757470757442797465733a2075696e742c0a7d0a0a3b20417574686f726974794661637473446f63756d656e7420763120696e74656e74696f6e616c6c792061636365707473206f6e6c792074686520777269746520636c6173736573207468650a3b2063757272656e7420636f6d70696c6572206d6f64656c2063616e20636f6e73756d652e2060637573746f6d602069732074686520736f6c6520763120637573746f6d207370656c6c696e673b0a3b20617262697472617279207461726765742d70726f66696c6520657874656e73696f6e20737472696e677320646f206e6f7420656e746572207468697320636f6d70696c657220706174682e0a617574686f726974792d77726974652d636c617373203d20226e6f6e6522202f20227265616422202f202263726561746522202f2022656e7375726522202f2022617070656e6422202f0a202020202020202020202020202020202020202020202020227265706c61636522202f202264656c65746522202f2022637573746f6d220a0a3b202d2d2d2065646963742d726573756c742d70726f6a656374696f6e2e6364646c202d2d2d0a3b20535044582d4c6963656e73652d4964656e7469666965723a204170616368652d322e300a3b2065646963742d726573756c742d70726f6a656374696f6e2e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f7220636f6d70696c65722d6f776e6564206170706c69636174696f6e2d726573756c742070726f6a656374696f6e732e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a0a726573756c742d70726f6a656374696f6e203d207b0a2020736368656d613a202265646963742e726573756c742d70726f6a656374696f6e2f7631222c0a20206f7065726174696f6e436f6f7264696e6174653a20626f756e6465642d70726f6a656374696f6e2d746578742c0a20206f7574707574547970653a20626f756e6465642d70726f6a656374696f6e2d746578742c0a20206d61784f757470757442797465733a2075696e74202e677420302c0a202065787072657373696f6e3a20726573756c742d70726f6a656374696f6e2d657870722c0a7d0a0a726573756c742d70726f6a656374696f6e2d65787072203d20726573756c742d70726f6a656374696f6e2d7265636f7264202f20726573756c742d70726f6a656374696f6e2d736f757263650a0a726573756c742d70726f6a656374696f6e2d7265636f7264203d207b0a20206b696e643a20227265636f7264222c0a20203b2054686520726f6f74207265636f726420636f756e7473206173206f6e65206f66207468652052757374206465636f6465722773203235362065787072657373696f6e206e6f6465732e0a20203b204e657374656420616767726567617465206e6f646520636f756e742072656d61696e7320616e20617574686f7269746174697665206465636f64657220636865636b2e0a20206669656c64733a207b20302a32353520626f756e6465642d70726f6a656374696f6e2d74657874203d3e20726573756c742d70726f6a656374696f6e2d65787072207d2c0a7d0a0a726573756c742d70726f6a656374696f6e2d736f75726365203d207b0a20206b696e643a2022736f75726365222c0a2020736f757263653a20726573756c742d70726f6a656374696f6e2d736f757263652d6b696e642c0a20203b204d617463686573204d41585f524553554c545f50524f4a454354494f4e5f504154485f5345474d454e545320696e2065646963742d73796e7461782e0a2020706174683a205b302a333220626f756e6465642d70726f6a656374696f6e2d746578745d2c0a7d0a0a726573756c742d70726f6a656374696f6e2d736f757263652d6b696e64203d0a20207b206b696e643a20226170706c69636174696f6e496e70757422207d202f0a20207b0a202020206b696e643a20227075726542696e64696e67222c0a2020202062696e64696e6749643a20626f756e6465642d70726f6a656374696f6e2d746578742c0a20207d202f0a20207b0a202020206b696e643a20226361706162696c697479526573756c74222c0a202020207374657049643a20626f756e6465642d70726f6a656374696f6e2d746578742c0a20207d0a0a626f756e6465642d70726f6a656374696f6e2d74657874203d2074737472202e73697a652028312e2e31303234290a0a3b202d2d2d2065646963742d7461726765742d69722e6364646c202d2d2d0a3b20535044582d4c6963656e73652d4964656e7469666965723a204170616368652d322e300a3b2065646963742d7461726765742d69722e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f72207468652045646963742d6f776e65642054617267657420495220617274696661637420656e76656c6f70652e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a3b0a3b205468697320736368656d6120697320617373656d626c656420776974682065646963742d636f6d6d6f6e2e6364646c20616e642065646963742d636f72652e6364646c2e2049740a3b2064656c696265726174656c792072657573657320436f72652065787072657373696f6e732c20707265646963617465732c20627564676574732c206c6f63616c207265666572656e6365732c0a3b206f62737472756374696f6e20726561736f6e732c20616e64206f62737472756374696f6e2061726d7320736f2074686520736368656d61206d617463686573207468652076616c75650a3b20656d6974746564206279207468652063616e6f6e6963616c2054617267657420495220656e636f64657220726174686572207468616e20726573746174696e672074686f73652074797065732e0a3b2049742064657363726962657320746865207374727563747572616c207368617065206f662076616c6964206c6f776572696e672d70726f6475636564206172746966616374732e205468650a3b206c6f776572696e6720616e6420656e636f64657220636f6e7472616374732073657061726174656c7920656e666f7263652073656d616e746963206964656e7469666965722072756c65730a3b20616e642063616e6f6e6963616c206f72646572696e672f64656475706c69636174696f6e20666f72207365742d6c696b652076616c7565732e0a0a3b2054617267657420495220656e636f64696e672072656a6563747320616e20656d707479207461726765742d70726f66696c6520636f6f7264696e617465206265666f72652062797465730a3b2065786973742c20736f207468697320726f6f74207469676874656e732074686520736861726564207374727563747572616c207265736f757263652d726566206163636f7264696e676c792e0a7461726765742d69722d7265736f757263652d726566203d207b0a202069643a2074737472202e7265676578702022283f73292e2b222c0a20206469676573743a207368613235362d6469676573742c0a7d0a0a7461726765742d69722d6172746966616374203d207461726765742d69722d636c6f7365642d6172746966616374202f207461726765742d69722d6c65676163792d61727469666163740a0a7461726765742d69722d61727469666163742d636f6d6d6f6e203d20280a20206b696e643a202274617267657449724172746966616374222c0a2020646f6d61696e3a20747374722c0a202074617267657450726f66696c653a207461726765742d69722d7265736f757263652d7265662c0a2020736f75726365436f7265436f6f7264696e6174653a2074737472202e7265676578702022283f73292e2b222c0a290a0a7461726765742d69722d636c6f7365642d6172746966616374203d207b0a20207461726765742d69722d61727469666163742d636f6d6d6f6e2c0a202073656d616e746963436c6f737572653a207461726765742d69722d73656d616e7469632d636c6f737572652c0a2020696e74656e74733a207b202a2074737472203d3e207461726765742d69722d696e74656e74207d2c0a7d0a0a7461726765742d69722d6c65676163792d6172746966616374203d207b0a20207461726765742d69722d61727469666163742d636f6d6d6f6e2c0a2020696e74656e74733a207b202a2074737472203d3e207461726765742d69722d6c65676163792d696e74656e74207d2c0a7d0a0a7461726765742d69722d73656d616e7469632d636c6f73757265203d207b0a2020736f75726365436f72653a207461726765742d69722d7265736f757263652d7265662c0a20206c61777061636b733a205b2a207461726765742d69722d7265736f757263652d7265665d2c0a20203f206361706162696c69746965733a205b2a207461726765742d69722d7265736f757263652d7265665d2c0a7d0a0a7461726765742d69722d696e74656e74203d207b0a20207461726765742d69722d696e74656e742d636f6d6d6f6e2c0a20203f2062617369733a20636f72652d657870722c0a20203f207075726542696e64696e67733a205b312a207461726765742d69722d707572652d62696e64696e675d2c0a20203f2065787465726e616c416374696f6e52657175657374733a205b2a207461726765742d69722d65787465726e616c2d616374696f6e2d726571756573745d2c0a7d0a0a7461726765742d69722d6c65676163792d696e74656e74203d207b0a20207461726765742d69722d696e74656e742d636f6d6d6f6e2c0a7d0a0a7461726765742d69722d696e74656e742d636f6d6d6f6e203d20280a20206f7065726174696f6e50726f66696c653a20747374722c0a2020696e707574436f6e73747261696e74733a205b2a20696e7075742d636f6e73747261696e745d2c0a2020636f72654576616c756174696f6e4275646765743a20636f72652d6275646765742c0a2020726571756972656d656e74733a205b2a207461726765742d69722d726571756972656d656e745d2c0a202073746570733a205b2a207461726765742d69722d737465705d2c0a2020726573756c743a20636f72652d657870722c0a290a0a7461726765742d69722d726571756972656d656e74203d207b0a202069643a20747374722c0a20207072656469636174653a20636f72652d7072656469636174652c0a20206f6e4661696c7572653a20726571756972652d6661696c7572652d61726d2c0a7d0a0a7461726765742d69722d707572652d62696e64696e67203d207b0a202069643a2074737472202e7265676578702022283f73292e2b222c0a202062696e64696e673a206c6f63616c2d7265662c0a202076616c75653a20636f72652d657870722c0a7d0a0a7461726765742d69722d73746570203d207b0a202069643a20747374722c0a202062696e64696e673a206c6f63616c2d7265662c0a20206566666563743a20747374722c0a2020746172676574496e7472696e7369633a20747374722c0a2020696e7075743a20636f72652d657870722c0a20206f62737472756374696f6e4661696c757265733a205b2a206661696c7572652d6964656e745d2c0a20206f62737472756374696f6e41726d733a207b202a206661696c7572652d6964656e74203d3e206f62737472756374696f6e2d61726d207d2c0a7d0a0a7461726765742d69722d65787465726e616c2d616374696f6e2d72657175657374203d207b0a202069643a20747374722c0a202062696e64696e673a206c6f63616c2d7265662c0a20206f7065726174696f6e3a207461726765742d69722d7265736f757263652d7265662c0a2020696e707574547970653a20636f72652d747970652d7265662c0a2020736574746c656d656e74547970653a20636f72652d747970652d7265662c0a2020696e707574536368656d613a207461726765742d69722d7265736f757263652d7265662c0a2020736574746c656d656e74536368656d613a207461726765742d69722d7265736f757263652d7265662c0a2020696e7075743a20636f72652d657870722c0a2020617574686f7269747953636f70653a20636f72652d657870722c0a202062617369733a20636f72652d657870722c0a20206275646765743a2065787465726e616c2d616374696f6e2d6275646765742c0a20207265636f6e63696c696174696f6e4c61773a207461726765742d69722d7265736f757263652d7265662c0a202073746174653a20226177616974696e67536574746c656d656e74222c0a2020736574746c656d656e7441646d697373696f6e3a2022736368656d615265717569726564222c0a7d0a", - "rawSha256": "fe37a4252af4a732a62074b58947e052744a48397042eaadb0e61849fc245627" + "bytesHex": "3b20535044582d4c6963656e73652d4964656e7469666965723a204170616368652d322e300a3b2065646963742d70726f76696465722d636f6e7472616374732e6364646c0a3b2047656e6572617465642066726f6d2045646963742d6f776e65642041424920667261676d656e74732e20444f204e4f5420454449542e0a0a3b202d2d2d2065646963742d636f6d6d6f6e2e6364646c202d2d2d0a3b2065646963742d636f6d6d6f6e2e6364646c0a3b20536861726564204344444c20747970657320666f722074686520456469637420414249732c20646566696e6564204f4e4345206865726520736f20746865792063616e6e6f742064726966740a3b202845444943542d4142492d4e4f4455502d303031292e2054776f2067726f7570733a0a3b2020202d207265736f757263652d7265662c207368613235362d6469676573742c206566666563742d6661696c7572652d626f64792c206566666563742d6b696e642c20617574686f726974792d636c6173732c0a3b2020202020636f72652d747970652d7265663a20617373656d626c656420776974682065646963742d7461726765742d70726f66696c652e6364646c20616e640a3b202020202065646963742d6c61777061636b2e6364646c20627920746865206275696c643b2074686f736520736368656d617320646f206e6f74207265646566696e65207468656d2e0a3b2020202d206f7065726174696f6e2d70726f66696c652c206f707469632d74656d706c6174652c2061706572747572652d726571756972656d656e7420616e6420746865697220726566733a0a3b2020202020636f6e73756d65642062792074686520436f72652f6f70746963206c61796572202865646963742d636f72652e6364646c2920616e64207265666572656e636564206279207468650a3b20202020206c616e67756167652f7461726765742d70726f66696c652073706563732e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a0a3b2041206e6f726d617469766520737562636f6d706f6e656e74207265666572656e636564206279206964656e7469747920706c7573206469676573742e204d616e696665737473206e657665720a3b20656d626564207468656972206f776e2073656c662d64696765737420696e20746865697220707265696d616765202845444943542d434f52452d53454c46484153482d303031292e0a7265736f757263652d726566203d207b2069643a20747374722c206469676573743a207368613235362d646967657374207d0a0a3b20446967657374732061726520617574686f726974617469766520617320747970656420627974652076616c7565732c206e657665722068657820737472696e67732e20526576696577204a534f4e0a3b2072656e64657273207468697320617320227368613235363a3c3634206c6f77657263617365206865783e22202845444943542d4449474553542d574952452d303031292e0a7368613235362d646967657374203d205b20616c676f726974686d3a2022736861323536222c2062797465733a2062737472202e73697a65203332205d0a0a3b2041206e616d6564206c6f772d6c6576656c206661696c75726520616e206566666563742063616e2072616973652e2054686520736f75726365206f62737472756374696f6e206d61700a3b2062696e64732069742028627920636f6f7264696e6174652920616e6420636f6e73747275637473206120747970656420646f6d61696e206f62737472756374696f6e2066726f6d206974730a3b207061796c6f6164202845444943542d4142492d4641494c5552452d4e414d45442d303031292e0a3b20416e20656666656374277320606566666563744661696c7572657360206c697374204d555354206861766520756e697175652060636f6f7264696e61746560733a2073696e6365207468650a3b206f62737472756374696f6e206d6170206973206b6579656420627920636f6f7264696e6174652c2074776f206661696c757265732073686172696e67206120636f6f7264696e61746520286576656e0a3b207769746820646966666572656e7420617574686f72697479436c6173732f7061796c6f61645479706529206d616b652065786861757374697665206d617070696e6720616e642062696e6465720a3b20747970696e6720616d626967756f757320616e64206172652072656a6563746564202845444943542d4142492d4641494c5552452d554e495155452d303031292e0a3b0a3b2045666665637473206361727279207468656972206661696c757265732061732061206d617020607b206661696c7572652d6964656e74203d3e206566666563742d6661696c7572652d626f6479207d600a3b202873656520746865207461726765742f6c61777061636b2065666665637420736368656d6173292e20546865206661696c75726520636f6f7264696e61746520697320746865206d61700a3b204b45592c20736f206974206973206e6f7420726570656174656420696e2074686520626f647920616e642063616e6e6f74206469736167726565207769746820746865206b65792e0a6566666563742d6661696c7572652d626f6479203d207b0a2020617574686f72697479436c6173733a20617574686f726974792d636c6173732c0a20207061796c6f6164547970653a20636f72652d747970652d7265662c202020202020202020202020203b2074797065642c20626f756e64656420286d617920626520656d707479207265636f7264290a7d0a0a3b2041206661696c75726520636f6f7264696e617465206d7573742062652061206261726520456469637420606964656e746020286c65747465722f756e64657273636f7265207468656e0a3b206c6574746572732f6469676974732f756e64657273636f7265732920414e44206d757374206e6f742062652061207265736572766564206b6579776f72642028652e672e2060656c7365602c0a3b20606261736973602c20607768657265602c206072657175697265602c2060666f72602c2060696660292e2054686520736f75726365206f62737472756374696f6e2d6d6170204c4853206f6e6c790a3b20616363657074732061206e6f6e2d6b6579776f726420606964656e74602c20736f20612068797068656e2f646f742f6b6579776f726420636f6f7264696e61746520776f756c642062650a3b204142492d76616c69642079657420696d706f737369626c6520746f206d617020657868617573746976656c7920696e20736f757263652e20546865207265676578206361707475726573207468650a3b206c65786963616c2073686170653b206b6579776f7264206578636c7573696f6e20697320616e206164646974696f6e616c2076616c69646174696f6e2072756c650a3b202845444943542d4142492d4641494c5552452d4944454e542d303031292e0a6661696c7572652d6964656e74203d2074737472202e72656765787020225b412d5a612d7a5f5d5b412d5a612d7a302d395f5d2a220a0a6566666563742d6b696e64203d20227265616422202f202263726561746522202f2022656e7375726522202f20227265706c61636522202f202264656c65746522202f0a202020202020202020202020202022617070656e6422202f202272656475636522202f202273656d616e7469632e656d697422202f2022637573746f6d220a0a617574686f726974792d636c617373203d2022646f6d61696e4d61707061626c6522202f20227061727469636970616e744f776e656422202f2022696e746567726974794661756c7422202f0a202020202020202020202020202020202020227265736f757263654661756c7422202f2022696e7465726e616c4661756c74220a0a636f72652d747970652d726566203d20747374722020203b2063616e6f6e6963616c20436f7265207479706520636f6f7264696e6174650a0a3b20416e206f7065726174696f6e2070726f66696c6520737570706c69657320746865206f707469632074656d706c617465206120436f726520696e74656e74207265736f6c766573206974730a3b206f707469634b696e642f626f756e646172794b696e642f737570706f7274506f6c6963792f6c6f7373446973706f736974696f6e2066726f6d2e205461726765742070726f66696c657320616e640a3b206c61777061636b73207075626c6973682074686573652061732061206d617020607b20636f6f7264696e617465203d3e206f7065726174696f6e2d70726f66696c65207d602c20736f207468650a3b20636f6f7264696e61746520697320746865204b45592c206e6f7420612076616c7565206669656c64202845444943542d4f505449432d54454d504c4154452d4f574e45522d3030312c0a3b2045444943542d4142492d4f5050524f46494c452d554e495155452d303031292e0a6f7065726174696f6e2d70726f66696c65203d207b0a20206f7074696354656d706c6174653a206f707469632d74656d706c6174652c0a20206566666563745072656469636174653a20747374722c20202020202020202020203b20636f6f7264696e617465206f6620746865206f7065726174696f6e2d6d6f6465207072656469636174650a7d0a0a6f707469632d74656d706c617465203d207b0a20206f707469634b696e643a2022726576656c6174696f6e22202f20226166666563745265696e746567726174696f6e222c0a2020626f756e646172794b696e643a202270726f6a656374696f6e22202f2022616666656374222c0a2020737570706f7274506f6c6963793a20747374722c202020202020202020202020203b2063616e6f6e6963616c20737570706f72742d706f6c69637920636f6f7264696e6174650a20206c6f7373446973706f736974696f6e3a20747374722c20202020202020202020203b2063616e6f6e6963616c206c6f73732d646973706f736974696f6e20636f6f7264696e6174650a20203f20626173697354656d706c6174653a20747374722c20202020202020202020203b206f7074696f6e616c206469676573742d6c6f636b65642062617369732074656d706c61746520636f6f72640a20203b2074686520617065727475726520726571756972656d656e7420746869732074656d706c61746520737570706c6965732e205265717569726564207768656e207468652074656d706c6174650a20203b2069732074686520736f75726365206f66206120436f7265206f707469632773206170657274757265526571756972656d656e742028692e652e2074686520696e74656e7420686173206e6f0a20203b20736f757263652060666f6f747072696e74203c3d202e2e2e60292c2073696e6365206170657274757265526571756972656d656e74206973206d616e6461746f727920696e20436f72650a20203b202845444943542d4f505449432d41504552545552452d5245462d303031292e0a20203f206170657274757265526571756972656d656e743a2061706572747572652d726571756972656d656e742c0a7d0a0a3b206170657274757265526571756972656d656e742069732061207479706564207265666572656e63652c206e65766572206120667265652d666f726d20737472696e672e2041207265766965770a3b2072656e646572696e67206d61792073686f772069747320636f6f7264696e617465202845444943542d4f505449432d41504552545552452d5245462d303031292e0a61706572747572652d726571756972656d656e74203d20666f6f747072696e742d6365696c696e672d726566202f2061627374726163742d666f6f747072696e742d6f626c69676174696f6e2d7265660a666f6f747072696e742d6365696c696e672d726566203d207b206b696e643a2022666f6f747072696e744365696c696e67222c207265663a2074737472207d0a61627374726163742d666f6f747072696e742d6f626c69676174696f6e2d726566203d207b206b696e643a20226162737472616374466f6f747072696e744f626c69676174696f6e222c207265663a2074737472207d0a0a3b202d2d2d2065646963742d636f72652e6364646c202d2d2d0a3b2065646963742d636f72652e6364646c0a3b204e6f726d617469766520736368656d6120666f722074686520456469637420436f72652076312073656d616e746963206d6f64656c2e0a3b0a3b2053636f706520626f756e646172793a20746869732066696c6520646566696e657320436f7265206d65616e696e6720616e6420736368656d61207368617065206f6e6c792e20497420646f65730a3b206e6f7420646566696e6520612063616e6f6e6963616c20656e636f6465722c20436f7265206d6f64756c652068617368206669656c64732c20686173682066697874757265732c207461726765740a3b206c6f776572696e672c2061646d697373696f6e2062756e646c65732c206f72207461726765742d6f776e65642049522e0a0a636f72652d6d6f64756c65203d207b0a202061706956657273696f6e3a202265646963742e636f72652f7631222c0a2020636f6f7264696e6174653a20747374722c0a2020696d706f7274733a205b2a20636f72652d696d706f72745d2c0a202074797065733a207b202a2074737472203d3e20636f72652d74797065207d2c0a2020696e74656e74733a207b202b2074737472203d3e20636f72652d696e74656e74207d2c0a20207265717569726564436f72654361706162696c69746965733a205b2a20747374725d2c0a7d0a0a636f72652d696d706f7274203d207b0a20206b696e643a20226c61777061636b22202f202274617267657422202f2022636f726522202f20226361706162696c697479222c0a20207265663a207265736f757263652d7265662c0a20203f20616c6961733a20747374722c0a7d0a0a3b202d2d2d207479706573202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a636f72652d74797065203d20636f72652d7363616c61722d74797065202f20636f72652d7265636f72642d74797065202f20636f72652d76617269616e742d74797065202f0a202020202020202020202020636f72652d6f7074696f6e2d74797065202f20636f72652d6c6973742d74797065202f20636f72652d6d61702d74797065202f0a202020202020202020202020636f72652d6361706162696c6974792d7265662d74797065202f20636f72652d65787465726e616c2d616374696f6e2d726571756573742d747970650a0a636f72652d7363616c61722d74797065203d20636f72652d626f6f6c2d74797065202f20636f72652d696e742d74797065202f20636f72652d737472696e672d74797065202f0a20202020202020202020202020202020202020636f72652d62797465732d74797065202f20636f72652d756e69742d747970650a0a636f72652d626f6f6c2d74797065203d207b206b696e643a2022426f6f6c22207d0a636f72652d756e69742d74797065203d207b206b696e643a2022556e697422207d0a636f72652d696e742d74797065203d207b0a20206b696e643a202249363422202f202255363422202f202249333222202f202255333222202f202249313622202f202255313622202f2022493822202f20225538222c0a7d0a636f72652d737472696e672d74797065203d207b0a20206b696e643a2022537472696e67222c0a20206d61783a2075696e742c0a202063616e6f6e6963616c3a2022756e69636f64652d7363616c61722d6e666322202f20227261772d75746638222c0a7d0a636f72652d62797465732d74797065203d207b0a20206b696e643a20224279746573222c0a20203f206d696e3a2075696e742c0a20206d61783a2075696e742c0a7d0a636f72652d7265636f72642d74797065203d207b0a20206b696e643a20225265636f7264222c0a20206669656c64733a207b202a2074737472203d3e20636f72652d747970652d726566207d2c0a7d0a636f72652d76617269616e742d74797065203d207b0a20206b696e643a202256617269616e74222c0a202063617365733a207b202b2074737472203d3e2076617269616e742d636173652d626f6479207d2c0a7d0a76617269616e742d636173652d626f6479203d207b0a20203f207061796c6f61643a20636f72652d747970652d7265662c0a7d0a636f72652d6f7074696f6e2d74797065203d207b0a20206b696e643a20224f7074696f6e222c0a20206974656d3a20636f72652d747970652d7265662c0a7d0a636f72652d6c6973742d74797065203d207b0a20206b696e643a20224c697374222c0a20206974656d3a20636f72652d747970652d7265662c0a20206d61783a2075696e742c0a7d0a636f72652d6d61702d74797065203d207b0a20206b696e643a20224d6170222c0a20206b65793a20636f72652d747970652d7265662c0a202076616c75653a20636f72652d747970652d7265662c0a20206d61783a2075696e742c0a7d0a636f72652d6361706162696c6974792d7265662d74797065203d207b0a20206b696e643a20224361706162696c697479526566222c0a20206974656d3a20636f72652d747970652d7265662c0a7d0a636f72652d65787465726e616c2d616374696f6e2d726571756573742d74797065203d207b0a20206b696e643a202245787465726e616c416374696f6e52657175657374222c0a2020736574746c656d656e743a20636f72652d747970652d7265662c0a7d0a0a3b20636f72652d747970652d72656620697320646566696e656420696e2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d612e0a0a3b202d2d2d207265666572656e63657320616e642076616c756573202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a3b204c6f63616c206964656e7469747920697320616c7068612d737461626c652e20606964602069732074686520636f6d70696c65722d6f776e6564206c6f63616c20636f6f7264696e6174653b0a3b2060616c7068614e616d656020697320746865206e6f726d616c697a65642068756d616e2f6465627567206e616d652e20536f757263652062696e646572207370656c6c696e67206973206e6f740a3b206964656e746974792e0a6c6f63616c2d726566203d207b0a202069643a20747374722c0a2020616c7068614e616d653a20747374722c0a2020747970653a20636f72652d747970652d7265662c0a7d0a0a636f72652d76616c7565203d20636f72652d6e756c6c2d76616c7565202f20636f72652d626f6f6c2d76616c7565202f20636f72652d696e742d76616c7565202f0a20202020202020202020202020636f72652d737472696e672d76616c7565202f20636f72652d62797465732d76616c7565202f20636f72652d7265636f72642d76616c7565202f0a20202020202020202020202020636f72652d76617269616e742d76616c7565202f20636f72652d6c6973742d76616c7565202f20636f72652d6d61702d76616c7565202f0a20202020202020202020202020636f72652d6361706162696c6974792d76616c75650a0a636f72652d6e756c6c2d76616c7565203d207b206b696e643a20226e756c6c22207d0a636f72652d626f6f6c2d76616c7565203d207b206b696e643a2022626f6f6c222c2076616c75653a20626f6f6c207d0a636f72652d696e742d76616c7565203d207b206b696e643a2022696e74222c2077696474683a20747374722c2076616c75653a20696e74207d0a636f72652d737472696e672d76616c7565203d207b206b696e643a2022737472696e67222c2076616c75653a2074737472207d0a636f72652d62797465732d76616c7565203d207b206b696e643a20226279746573222c2076616c75653a2062737472207d0a636f72652d7265636f72642d76616c7565203d207b206b696e643a20227265636f7264222c206669656c64733a207b202a2074737472203d3e20636f72652d76616c7565207d207d0a636f72652d76617269616e742d76616c7565203d207b0a20206b696e643a202276617269616e74222c0a2020747970653a20636f72652d747970652d7265662c0a2020636173653a20747374722c0a20203f207061796c6f61643a20636f72652d76616c75652c0a7d0a636f72652d6c6973742d76616c7565203d207b206b696e643a20226c697374222c2076616c7565733a205b2a20636f72652d76616c75655d207d0a636f72652d6d61702d76616c7565203d207b206b696e643a20226d6170222c20656e74726965733a205b2a205b6b65793a20636f72652d76616c75652c2076616c75653a20636f72652d76616c75655d5d207d0a636f72652d6361706162696c6974792d76616c7565203d207b0a20206b696e643a20226361706162696c697479222c0a2020726563656970743a207368613235362d6469676573742c0a7d0a0a3b2045646963742d617574686f72656420707572652068656c70657273207573652061207075726520436f72652066756e6374696f6e20626f64792e2054686520626f64792063616e2062696e640a3b20707572652065787072657373696f6e7320616e642072657475726e20616e2065787072657373696f6e2c206275742069742063616e6e6f7420636f6e7461696e20436f7265206566666563742c0a3b2067756172642c206272616e63682c206c6f6f702c206d617463682d6e6f64652c206f722070726f6f662d6f626c69676174696f6e206e6f6465732e0a636f72652d666e2d626f6479203d207b0a2020706172616d733a205b2a206c6f63616c2d7265665d2c0a2020626f64793a20636f72652d707572652d626c6f636b2c0a7d0a0a636f72652d707572652d626c6f636b203d207b0a20206c6f63616c733a205b2a206c6f63616c2d7265665d2c0a202062696e64696e67733a205b2a20707572652d6c65742d6e6f64655d2c0a2020726573756c743a20636f72652d657870722c0a7d0a0a707572652d6c65742d6e6f6465203d207b0a20206b696e643a20226c6574222c0a202062696e64696e673a206c6f63616c2d7265662c0a202076616c75653a20636f72652d657870722c0a7d0a0a3b202d2d2d2065787072657373696f6e7320616e642070726564696361746573202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a636f72652d65787072203d206c6f63616c2d65787072202f20636f6e73742d65787072202f207265636f72642d65787072202f206669656c642d65787072202f0a20202020202020202020202076617269616e742d65787072202f206d617463682d65787072202f2063616c6c2d65787072202f206c6973742d65787072202f206d61702d65787072202f0a20202020202020202020202069662d657870720a0a6c6f63616c2d65787072203d207b206b696e643a20226c6f63616c222c207265663a206c6f63616c2d726566207d0a636f6e73742d65787072203d207b206b696e643a2022636f6e7374222c2076616c75653a20636f72652d76616c7565207d0a7265636f72642d65787072203d207b206b696e643a20227265636f7264222c206669656c64733a207b202a2074737472203d3e20636f72652d65787072207d207d0a6669656c642d65787072203d207b206b696e643a20226669656c64222c20626173653a20636f72652d657870722c206669656c643a2074737472207d0a76617269616e742d65787072203d207b0a20206b696e643a202276617269616e74222c0a2020747970653a20636f72652d747970652d7265662c0a2020636173653a20747374722c0a20203f207061796c6f61643a20636f72652d657870722c0a7d0a6d617463682d65787072203d207b0a20206b696e643a20226d61746368222c0a20207363727574696e65653a20636f72652d657870722c0a202061726d733a205b2b206d617463682d61726d5d2c0a7d0a6d617463682d61726d203d207b0a2020636173653a20747374722c0a20203f2062696e6465723a206c6f63616c2d7265662c0a2020626f64793a20636f72652d657870722c0a7d0a63616c6c2d65787072203d207b0a20206b696e643a202263616c6c222c0a202063616c6c65653a20747374722c0a202074797065417267733a205b2a20636f72652d747970652d7265665d2c0a2020617267733a205b2a20636f72652d657870725d2c0a7d0a6c6973742d65787072203d207b206b696e643a20226c697374222c2076616c7565733a205b2a20636f72652d657870725d207d0a6d61702d65787072203d207b206b696e643a20226d6170222c20656e74726965733a205b2a205b6b65793a20636f72652d657870722c2076616c75653a20636f72652d657870725d5d207d0a69662d65787072203d207b0a20206b696e643a20226966222c0a20207072656469636174653a20636f72652d7072656469636174652c0a20207468656e3a20636f72652d657870722c0a2020656c73653a20636f72652d657870722c0a7d0a0a636f72652d707265646963617465203d20747275652d707265646963617465202f2066616c73652d707265646963617465202f206e6f742d707265646963617465202f0a2020202020202020202020202020202020616c6c2d707265646963617465202f20616e792d707265646963617465202f20636f6d706172652d707265646963617465202f0a202020202020202020202020202020202063616c6c2d707265646963617465202f206f62737472756374696f6e2d7072656469636174650a0a747275652d707265646963617465203d207b206b696e643a20227472756522207d0a66616c73652d707265646963617465203d207b206b696e643a202266616c736522207d0a6e6f742d707265646963617465203d207b206b696e643a20226e6f74222c2076616c75653a20636f72652d707265646963617465207d0a616c6c2d707265646963617465203d207b206b696e643a2022616c6c222c2076616c7565733a205b2b20636f72652d7072656469636174655d207d0a616e792d707265646963617465203d207b206b696e643a2022616e79222c2076616c7565733a205b2b20636f72652d7072656469636174655d207d0a636f6d706172652d707265646963617465203d207b0a20206b696e643a2022636f6d70617265222c0a20206f703a20223d3d22202f2022213d22202f20223c22202f20223c3d22202f20223e22202f20223e3d222c0a20206c6566743a20636f72652d657870722c0a202072696768743a20636f72652d657870722c0a7d0a63616c6c2d707265646963617465203d207b0a20206b696e643a202263616c6c222c0a20207072656469636174653a20747374722c0a2020617267733a205b2a20636f72652d657870725d2c0a7d0a6f62737472756374696f6e2d707265646963617465203d207b0a20206b696e643a20226f62737472756374696f6e222c0a2020636f6f7264696e6174653a206661696c7572652d6964656e742c0a20207061796c6f61643a20636f72652d657870722c0a7d0a0a696e7075742d636f6e73747261696e74203d207b0a2020636f6f7264696e6174653a20747374722c0a2020736f757263653a2022776865726522202f2022636f6d70696c6572222c0a20207072656469636174653a20636f72652d7072656469636174652c0a7d0a0a3b202d2d2d20696e74656e74732c20626c6f636b732c20616e64206e6f646573202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a636f72652d696e74656e74203d207b0a2020696e7075743a20636f72652d747970652d7265662c0a20206f75747075743a20636f72652d747970652d7265662c0a202072657175697265644f7065726174696f6e50726f66696c653a20747374722c0a20203f2062617369733a20636f72652d657870722c0a2020696e707574436f6e73747261696e74733a205b2a20696e7075742d636f6e73747261696e745d2c0a2020636f72654576616c756174696f6e4275646765743a20636f72652d6275646765742c0a2020626f64793a20636f72652d626c6f636b2c0a20203f206f707469633a20636f72652d6f707469632c0a7d0a0a636f72652d627564676574203d207b0a20206d617853746570733a2075696e742c0a20206d6178416c6c6f636174656442797465733a2075696e742c0a20206d61784f757470757442797465733a2075696e742c0a7d0a0a636f72652d6f70746963203d207b0a20206f707469634b696e643a2022726576656c6174696f6e22202f20226166666563745265696e746567726174696f6e222c0a2020626f756e646172794b696e643a202270726f6a656374696f6e22202f2022616666656374222c0a20206170657274757265526571756972656d656e743a2061706572747572652d726571756972656d656e742c0a2020737570706f7274506f6c6963793a20747374722c0a20206c6f7373446973706f736974696f6e3a20747374722c0a7d0a0a636f72652d626c6f636b203d207b0a20206c6f63616c733a205b2a206c6f63616c2d7265665d2c0a20206e6f6465733a205b2a20636f72652d6e6f64655d2c0a2020726573756c743a20636f72652d657870722c0a7d0a0a636f72652d6e6f6465203d206c65742d6e6f6465202f20726571756972652d6e6f6465202f206566666563742d6e6f6465202f0a20202020202020202020202065787465726e616c2d616374696f6e2d726571756573742d6e6f6465202f2067756172642d6e6f6465202f206272616e63682d6e6f6465202f0a202020202020202020202020666f722d6e6f6465202f206d617463682d6e6f6465202f2070726f6f662d6f626c69676174696f6e2d6e6f64650a0a6c65742d6e6f6465203d207b0a20206b696e643a20226c6574222c0a202062696e64696e673a206c6f63616c2d7265662c0a202076616c75653a20636f72652d657870722c0a7d0a726571756972652d6e6f6465203d207b0a20206b696e643a202272657175697265222c0a20207072656469636174653a20636f72652d7072656469636174652c0a20206f6e4661696c7572653a20726571756972652d6661696c7572652d61726d2c0a7d0a726571756972652d6661696c7572652d61726d203d207465726d696e616c2d726571756972652d6661696c757265202f0a20202020202020202020202020202020202020202020636f6e74696e75652d6f6273747275637465642d726571756972652d6661696c7572650a7465726d696e616c2d726571756972652d6661696c757265203d207b0a20206b696e643a20227465726d696e616c222c0a2020726561736f6e3a206f62737472756374696f6e2d726561736f6e2c0a7d0a636f6e74696e75652d6f6273747275637465642d726571756972652d6661696c757265203d207b0a20206b696e643a2022636f6e74696e75654f627374727563746564222c0a2020726561736f6e3a206f62737472756374696f6e2d726561736f6e2c0a7d0a6f62737472756374696f6e2d726561736f6e203d207b0a2020726561736f6e4b696e643a20747374722c0a20207061796c6f61643a207b202a2074737472203d3e20636f72652d65787072207d2c0a7d0a6566666563742d6e6f6465203d207b0a20206b696e643a2022656666656374222c0a202062696e64696e673a206c6f63616c2d7265662c0a20206566666563743a20747374722c0a2020696e7075743a20636f72652d657870722c0a20206f62737472756374696f6e4d61703a207b202a206661696c7572652d6964656e74203d3e206f62737472756374696f6e2d61726d207d2c0a7d0a65787465726e616c2d616374696f6e2d726571756573742d6e6f6465203d207b0a20206b696e643a202265787465726e616c416374696f6e52657175657374222c0a202062696e64696e673a206c6f63616c2d7265662c0a20206f7065726174696f6e3a207265736f757263652d7265662c0a2020696e707574547970653a20636f72652d747970652d7265662c0a2020736574746c656d656e74547970653a20636f72652d747970652d7265662c0a2020696e707574536368656d613a207265736f757263652d7265662c0a2020736574746c656d656e74536368656d613a207265736f757263652d7265662c0a2020696e7075743a20636f72652d657870722c0a2020617574686f7269747953636f70653a20636f72652d657870722c0a202062617369733a20636f72652d657870722c0a20206275646765743a2065787465726e616c2d616374696f6e2d6275646765742c0a20207265636f6e63696c696174696f6e4c61773a207265736f757263652d7265662c0a202073746174653a20226177616974696e67536574746c656d656e74222c0a2020736574746c656d656e7441646d697373696f6e3a2022736368656d615265717569726564222c0a7d0a65787465726e616c2d616374696f6e2d627564676574203d207b0a20206d6178536574746c656d656e7442797465733a20636f72652d657870722c0a20206d6178417474656d7074733a20636f72652d657870722c0a7d0a6f62737472756374696f6e2d61726d203d207b0a202062696e6465723a206c6f63616c2d7265662c0a202076616c75653a20636f72652d657870722c0a7d0a67756172642d6e6f6465203d207b0a20206b696e643a20226775617264222c0a20207072656469636174653a20636f72652d7072656469636174652c0a20206f62737472756374696f6e3a20636f72652d657870722c0a7d0a6272616e63682d6e6f6465203d207b0a20206b696e643a20226272616e6368222c0a20203f2062696e64696e673a206c6f63616c2d7265662c0a20207072656469636174653a20636f72652d7072656469636174652c0a20207468656e3a20636f72652d626c6f636b2c0a2020656c73653a20636f72652d626c6f636b2c0a7d0a666f722d6e6f6465203d207b0a20206b696e643a2022666f72222c0a202062696e6465723a206c6f63616c2d7265662c0a2020697465723a20636f72652d657870722c0a2020626f756e643a20636f72652d626f756e642c0a2020626f64793a20636f72652d626c6f636b2c0a7d0a6d617463682d6e6f6465203d207b0a20206b696e643a20226d61746368222c0a20207363727574696e65653a20636f72652d657870722c0a202061726d733a205b2b206d617463682d626c6f636b2d61726d5d2c0a7d0a6d617463682d626c6f636b2d61726d203d207b0a2020636173653a20747374722c0a20203f2062696e6465723a206c6f63616c2d7265662c0a2020626f64793a20636f72652d626c6f636b2c0a7d0a70726f6f662d6f626c69676174696f6e2d6e6f6465203d207b0a20206b696e643a202270726f6f66222c0a2020636f6f7264696e6174653a20747374722c0a20207072656469636174653a20636f72652d7072656469636174652c0a7d0a0a636f72652d626f756e64203d206c69746572616c2d626f756e64202f20636f6f7264696e6174652d626f756e640a6c69746572616c2d626f756e64203d207b206b696e643a20226c69746572616c222c2076616c75653a2075696e74207d0a636f6f7264696e6174652d626f756e64203d207b206b696e643a2022636f6f7264696e617465222c207265663a2074737472207d0a0a3b20536861726564207265736f757263652d7265662c207368613235362d6469676573742c206661696c7572652d6964656e742c2061706572747572652d726571756972656d656e742c20616e640a3b20636f72652d747970652d7265662061726520646566696e6564206f6e636520696e2065646963742d636f6d6d6f6e2e6364646c2e0a0a3b202d2d2d2065646963742d6c61777061636b2e6364646c202d2d2d0a3b2065646963742d6c61777061636b2e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f7220746865204564696374206c61777061636b206d616e696665737420616e64206578706f727420737572666163652e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e204a534f4e20696e207468652070726f73652073706563730a3b2069732061207265766965772072656e646572696e672067656e6572617465642066726f6d207468697320736368656d61202845444943542d4142492d4e4f4455502d303031292e0a0a6c61777061636b2d6d616e6966657374203d207b0a202061706956657273696f6e3a202265646963742e6c61777061636b2f7631222c0a202069643a20747374722c0a202076657273696f6e3a20747374722c0a20206163636570746564436f72654162693a205b2b20747374725d2c0a2020646570656e64656e636965733a205b2a206c61777061636b2d6465705d2c202020202020202020203b20616379636c69632c206469676573742d6c6f636b6564202845444943542d4c41575041434b2d4441472d303031290a20206578706f7274733a207265736f757263652d7265662c0a20203f2074617267657441646170746572733a205b2b207461726765742d616461707465725d2c2020203b207265717569726564206f6e6c7920696620616e792072756e74696d6520656666656374206578697374730a20203f2068656c706572436f6d706f6e656e743a2065786563757461626c652d636f6d706f6e656e742c203b2065786563757461626c652068656c70657273206361727279207468656972206f776e2073616e64626f782b6675656c0a202076657269666965723a2076657269666965722c202020202020202020202020202020202020202020203b20636c61737369666965643a206465636c61726174697665206f722065786563757461626c650a2020636f6d7061746962696c6974793a207265736f757263652d7265662c0a2020636f6e666f726d616e636546697874757265436f727075733a207265736f757263652d7265662c0a7d0a0a3b2041207665726966696572206973206569746865722061206465636c617261746976652072756c6573657420286e6f2072756e74696d6529206f7220616e2065786563757461626c650a3b20636f6d706f6e656e742e20416e2065786563757461626c65207665726966696572204d55535420636172727920697473206f776e2073616e64626f7820616e64206675656c206d6f64656c2c0a3b20736f2074686520736368656d6120656e666f726365732074686174206e6f2065786563757461626c6520636f6d706f6e656e74206973206c65667420756e626f756e6465640a3b202845444943542d4142492d56455249464945522d424f554e442d303031292e0a7665726966696572203d206465636c617261746976652d7665726966696572202f2065786563757461626c652d76657269666965720a6465636c617261746976652d7665726966696572203d207b20636c6173733a20226465636c61726174697665222c2072756c657365743a207265736f757263652d726566207d0a65786563757461626c652d7665726966696572203d207b0a2020636c6173733a202265786563757461626c65222c0a2020636f6d706f6e656e743a207265736f757263652d7265662c0a202073616e64626f783a207265736f757263652d7265662c0a20206675656c4d6f64656c3a207265736f757263652d7265662c0a7d0a0a3b20416e792065786563757461626c6520636f6d706f6e656e7420697320626f756e64656420627920697473206f776e2073616e64626f78202b206675656c206d6f64656c2e0a65786563757461626c652d636f6d706f6e656e74203d207b0a2020636f6d706f6e656e743a207265736f757263652d7265662c0a202073616e64626f783a207265736f757263652d7265662c0a20206675656c4d6f64656c3a207265736f757263652d7265662c0a7d0a0a6c61777061636b2d646570203d207b2069643a20747374722c2076657273696f6e3a20747374722c206469676573743a207368613235362d646967657374207d0a0a3b20416461707465722073656c656374696f6e206b65797320534f4c454c59206f666620746865206469676573742d6c6f636b65642060616363657074656454617267657450726f66696c65600a3b20286974732060696460206973207468652070726f66696c652069643b206974732060646967657374602070696e73207468652065786163742070726f66696c652f76657273696f6e292e2054686572650a3b20617265206e6f20696e646570656e64656e7420646973706c617920737472696e6773207468617420636f756c64206469736167726565207769746820746865206c6f636b2c20736f20610a3b207265736f6c7665722063616e6e6f742062696e6420616e206164617074657220746f206f6e6520746172676574207768696c6520746865206c6f636b2070726f76657320616e6f746865720a3b202845444943542d4c41575041434b2d414441505445522d54415247455449522d303031292e0a7461726765742d61646170746572203d207b0a2020616363657074656454617267657450726f66696c653a207265736f757263652d7265662c202020203b206469676573742d6c6f636b65642c20617574686f72697461746976652073656c6563746f720a2020616363657074656454617267657449723a207265736f757263652d7265662c2020202020202020203b206469676573742d6c6f636b65640a2020616461707465723a207265736f757263652d7265662c0a7d0a0a3b20536861726564207479706573207265736f757263652d72656620616e64207368613235362d6469676573742061726520646566696e6564206f6e636520696e0a3b2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d61202845444943542d4142492d4e4f4455502d303031292e0a0a3b202d2d2d206578706f72742073757266616365202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a6c61777061636b2d6578706f727473203d207b0a202074797065733a205b2a206578706f727465642d747970655d2c0a2020636f6e7374616e74733a205b2a206578706f727465642d636f6e7374616e745d2c0a20207075726546756e6374696f6e733a205b2a20707572652d66756e6374696f6e5d2c0a2020656666656374733a205b2a2073656d616e7469632d6566666563745d2c0a20206f62737472756374696f6e733a205b2a206f62737472756374696f6e2d6465665d2c0a20203b206b65796564206279206f7065726174696f6e2d70726f66696c6520636f6f7264696e61746520e2869220756e697175656e65737320656e666f726365640a20203b202845444943542d4142492d4f5050524f46494c452d554e495155452d303031290a20203b206f7065726174696f6e2d70726f66696c65207265636f7264732074686973206c61777061636b206578706f72747320286f707469632074656d706c6174657320746861740a20203b2060696d706c656d656e7473602f6070726f66696c656020636c6175736573207265736f6c766520616761696e7374292e206f7065726174696f6e2d70726f66696c652069730a20203b20646566696e656420696e2065646963742d636f6d6d6f6e2e6364646c202845444943542d4142492d4f5050524f46494c452d534c4f542d303031292e0a20206f7065726174696f6e50726f66696c65733a207b202a2074737472203d3e206f7065726174696f6e2d70726f66696c65207d2c20203b206b6579656420627920636f6f7264696e6174650a7d0a0a6578706f727465642d7479706520202020203d207b20636f6f7264696e6174653a20747374722c20646566696e6974696f6e3a20636f72652d747970652d726566207d0a6578706f727465642d636f6e7374616e74203d207b20636f6f7264696e6174653a20747374722c20747970653a20636f72652d747970652d7265662c2076616c75653a20616e79207d0a0a3b204120707572652068656c7065722069732061206469736372696d696e6174656420756e696f6e2062792060736f75726365602c20736f2074686520736368656d6120697473656c660a3b2067756172616e7465657320616e20696d706c656d656e746174696f6e20657869737473202845444943542d4c41575041434b2d505552452d494d504c2d303031293a0a3b2020202d20226564696374223a20617574686f72656420696e2045646963742f436f72653b2074686520436f726520626f6479206973206361727269656420696e6c696e6520286861736865640a3b20202020207769746820746865206578706f72742073757266616365292e2054686520736368656d61207265717569726573207468652060626f647960206669656c642e0a3b2020202d2022636f6d706f6e656e74223a20696d706c656d656e746564206f7574736964652045646963743b2063617272696573206e6f20696e6c696e6520626f647920616e6420696e73746561640a3b20202020206361727269657320697473206f776e206469676573742d6c6f636b65642060696d706c656d656e746174696f6e60202873616e64626f78202b206675656c292e20497420646f65730a3b20202020206e6f7420646570656e64206f6e20746865206f7074696f6e616c206d616e69666573742d6c6576656c2068656c706572436f6d706f6e656e742e0a707572652d66756e6374696f6e203d2065646963742d707572652d66756e6374696f6e202f20636f6d706f6e656e742d707572652d66756e6374696f6e0a0a707572652d66756e6374696f6e2d636f6d6d6f6e203d20280a2020636f6f7264696e6174653a20747374722c0a202074797065506172616d65746572733a205b2a20747374725d2c0a2020706172616d6574657254797065733a205b2a20636f72652d747970652d7265665d2c2020202020203b20616c6c20626f756e6465640a202072657475726e547970653a20636f72652d747970652d7265662c20202020202020202020202020203b20626f756e6465640a2020636f737454656d706c6174653a20747374722c0a202064657465726d696e69736d436c6173733a2022746f74616c22202f2022746f74616c2d776974682d74797065642d646961676e6f73746963222c0a290a0a65646963742d707572652d66756e6374696f6e203d207b0a2020707572652d66756e6374696f6e2d636f6d6d6f6e2c0a2020736f757263653a20226564696374222c0a2020626f64793a20636f72652d666e2d626f64792c2020202020202020202020202020202020202020203b20696e6c696e652c20686173682d7369676e69666963616e740a7d0a0a636f6d706f6e656e742d707572652d66756e6374696f6e203d207b0a2020707572652d66756e6374696f6e2d636f6d6d6f6e2c0a2020736f757263653a2022636f6d706f6e656e74222c0a20203b20746865206469676573742d6c6f636b656420636f6d706f6e656e7420696d706c656d656e74696e6720746869732068656c7065722e2052657175697265642061742074686520736368656d610a20203b206c6576656c20736f206120636f6d706f6e656e742068656c7065722063616e206e657665722076616c696461746520776974686f7574206120686173682d626f756e642c0a20203b2073616e64626f782b6675656c2d64657363726962656420696d706c656d656e746174696f6e202845444943542d4c41575041434b2d505552452d494d504c2d303031292e0a2020696d706c656d656e746174696f6e3a2065786563757461626c652d636f6d706f6e656e742c0a7d0a0a3b20636f72652d666e2d626f647920697320646566696e65642062792065646963742d636f72652e6364646c20616e6420617373656d626c656420776974682074686973206c61777061636b0a3b20736368656d612e2049742069732061207075726520436f72652066756e6374696f6e20626f64792c206e6f7420616e206566666563742d63617061626c6520636f72652d626c6f636b2e0a0a73656d616e7469632d656666656374203d207b0a2020636f6f7264696e6174653a20747374722c0a202074797065506172616d65746572733a205b2a20747374725d2c0a2020696e707574547970653a20636f72652d747970652d7265662c2020202020202020202020202020203b20626f756e6465640a20206f7574707574547970653a20636f72652d747970652d7265662c20202020202020202020202020203b20626f756e6465640a2020657865637574696f6e436c6173733a202270726f6f664f6e6c7922202f202272756e74696d65222c2020203b206f7274686f676f6e616c20746f207772697465436c6173730a20206566666563744b696e6448696e743a206566666563742d6b696e642c0a2020666f6f747072696e744f626c69676174696f6e3a20747374722c0a2020636f73744f626c69676174696f6e3a20747374722c0a20206566666563744661696c757265733a207b202a206661696c7572652d6964656e74203d3e206566666563742d6661696c7572652d626f6479207d2c20203b206b6579656420627920636f6f7264696e6174653b20756e697175650a20206775617264537570706f72743a20626f6f6c2c0a7d0a0a6f62737472756374696f6e2d646566203d207b0a2020636f6f7264696e6174653a20747374722c0a2020617574686f72697479436c6173733a20617574686f726974792d636c6173732c0a20207061796c6f6164536368656d613a20636f72652d747970652d7265662c20202020202020202020203b2074797065642c20626f756e64656420286d617920626520656d707479207265636f7264290a7d0a0a3b206566666563742d6661696c7572652d626f64792c206566666563742d6b696e642c20617574686f726974792d636c6173732c20616e6420636f72652d747970652d7265662061726520646566696e65640a3b206f6e636520696e2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d61202845444943542d4142492d4e4f4455502d303031292e0a0a3b202d2d2d2065646963742d6c61777061636b2d616461707465722e6364646c202d2d2d0a3b2065646963742d6c61777061636b2d616461707465722e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f72206f6e6520646972656374206465636c61726174697665206c61777061636b2074617267657420616461707465722e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a3b0a3b2054686520656e636c6f73696e67206c61777061636b206d616e69666573742073656c6563747320746865206578616374207461726765742070726f66696c652c207461726765742049522c0a3b20616e642061646170746572207265736f75726365206469676573742e2054686f7365206964656e74697469657320617265206e6f7420726570656174656420686572652e0a0a6c61777061636b2d61646170746572203d207b0a202061706956657273696f6e3a202265646963742e6c61777061636b2d616461707465722f7631222c0a2020636c6173733a20226465636c61726174697665222c0a20206f7065726174696f6e50726f66696c65733a207b0a202020202a2074737472203d3e206c61777061636b2d616461707465722d6f7065726174696f6e2d70726f66696c650a20207d2c0a2020656666656374496d706c656d656e746174696f6e733a207b0a202020202a2074737472203d3e206c61777061636b2d616461707465722d6566666563740a20207d2c0a2020627564676574733a207b0a202020202a2074737472203d3e206c61777061636b2d616461707465722d6275646765740a20207d2c0a7d0a0a3b204b657973206172652063616e6f6e6963616c206c61777061636b206f7065726174696f6e2d70726f66696c6520636f6f7264696e617465732e0a6c61777061636b2d616461707465722d6f7065726174696f6e2d70726f66696c65203d0a20207b0a20202020636f72653a20747374722c0a2020202073656d616e746963456666656374733a205b2b20747374725d2c0a202020203f206275646765744f626c69676174696f6e3a20747374722c0a202020203f20746172676574436f6e66696775726174696f6e3a207265736f757263652d7265662c0a20207d202f0a20207b0a20202020636f72653a20747374722c0a2020202073656d616e746963456666656374733a205b5d2c0a202020206275646765744f626c69676174696f6e3a20747374722c0a20202020746172676574436f6e66696775726174696f6e3a207265736f757263652d7265662c0a20207d0a0a3b204b657973206172652063616e6f6e6963616c206c61777061636b2073656d616e7469632d65666665637420636f6f7264696e617465732e20466f6f747072696e742c20636f73742c20616e640a3b206661696c757265206669656c6473206d7573742065786163746c792064697363686172676520746865206d61746368696e67206578706f72746564206566666563742e0a6c61777061636b2d616461707465722d656666656374203d207b0a2020746172676574496e7472696e7369633a20747374722c0a2020746172676574436f6e66696775726174696f6e3a207265736f757263652d7265662c0a20207772697465436c6173733a206c61777061636b2d616461707465722d77726974652d636c6173732c0a2020666f6f747072696e744f626c69676174696f6e3a20747374722c0a2020636f73744f626c69676174696f6e3a20747374722c0a20206661696c7572654d617070696e67733a207b202a206661696c7572652d6964656e74203d3e2074737472207d2c0a7d0a0a3b204b657973206172652063616e6f6e6963616c206578706f7274656420636f73742d6f626c69676174696f6e20636f6f7264696e617465732e0a6c61777061636b2d616461707465722d627564676574203d207b0a20206d617853746570733a2075696e742c0a20206d6178416c6c6f636174656442797465733a2075696e742c0a20206d61784f757470757442797465733a2075696e742c0a7d0a0a6c61777061636b2d616461707465722d77726974652d636c617373203d20226e6f6e6522202f20227265616422202f202263726561746522202f2022656e7375726522202f0a20202020202020202020202020202020202020202020202020202020202022617070656e6422202f20227265706c61636522202f202264656c65746522202f2022637573746f6d220a0a3b206661696c7572652d6964656e7420697320646566696e656420696e2065646963742d636f6d6d6f6e2e6364646c2e0a0a3b202d2d2d2065646963742d7461726765742d70726f66696c652e6364646c202d2d2d0a3b2065646963742d7461726765742d70726f66696c652e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f7220746865204564696374207461726765742070726f66696c65206d616e69666573742e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76310a3b202873656520535045435f636f6e74696e75756d2d636f6e74726163742d62756e646c652d76312e6d64292e204a534f4e20696e207468652070726f736520737065637320697320610a3b207265766965772072656e646572696e672067656e6572617465642066726f6d207468697320736368656d613b2074686973204344444c206973207468652073696e676c6520736f757263650a3b206f66207472757468202845444943542d4142492d4e4f4455502d303031292e0a0a7461726765742d70726f66696c652d6d616e6966657374203d207b0a202061706956657273696f6e3a202265646963742e7461726765742d70726f66696c652f7631222c0a202069643a20747374722c202020202020202020202020202020202020202020202020203b20652e672e20226563686f2e64706f220a202076657273696f6e3a20747374722c20202020202020202020202020202020202020203b20652e672e202231220a20206163636570746564436f72654162693a205b2b20747374725d2c20202020202020203b20652e672e205b2265646963742e636f72652f7631225d0a0a2020696e7472696e736963733a207265736f757263652d7265662c0a2020696e7472696e7369634e616d6573706163653a20747374722c0a20203b207075626c697368657320746869732070726f66696c652773206f7065726174696f6e2d70726f66696c65207265636f72647320286f707469632074656d706c6174657320746861740a20203b206070726f66696c65602f60696d706c656d656e74736020636c6175736573207265736f6c766520616761696e7374292e205265666572656e63657320616e0a20203b206f7065726174696f6e2d70726f66696c65732d646f63756d656e74202845444943542d4142492d4f5050524f46494c452d534c4f542d303031292e0a20206f7065726174696f6e50726f66696c65733a207265736f757263652d7265662c0a2020666f6f747072696e74416c67656272613a207265736f757263652d7265662c0a2020636f7374416c67656272613a207265736f757263652d7265662c0a202074617267657449723a207265736f757263652d7265662c0a20206f62737472756374696f6e5461786f6e6f6d793a207265736f757263652d7265662c0a202076657269666965723a207265736f757263652d7265662c0a20206c6f77657265723a207265736f757263652d7265662c0a202073616e64626f783a207265736f757263652d7265662c0a20206675656c4d6f64656c3a207265736f757263652d7265662c0a0a20203b206669656c647320746865206c616e67756167652073706563207265717569726573206f662065766572792070726f66696c650a202062756e646c6550726f66696c653a207265736f757263652d7265662c0a202067656e657261746564417274696661637450726f66696c65733a205b2a207265736f757263652d7265665d2c0a202063616e6f6e6963616c456e636f64696e6752756c65733a207265736f757263652d7265662c0a20203b20412070726f66696c65207468617420616363657074732074686520646972656374206465636c61726174697665206c61777061636b2d6164617074657220414249206e616d65732069740a20203b2065786163746c79206f6e63652e2050726f66696c6573207468617420646f206e6f7420636f6e73756d65206c61777061636b206164617074657273206c6561766520746869730a20203b206f7074696f6e616c20736c6f7420616273656e74206f7220656d7074792e0a20203f2061636365707465644c61777061636b416461707465724162693a205b5d202f205b2265646963742e6c61777061636b2d616461707465722f7631225d2c0a2020646961676e6f737469634162693a207265736f757263652d7265662c0a0a20203b206170706c69636174696f6e20646f637472696e650a20206170706c69636174696f6e4d6f64656c3a202261746f6d6963222c0a202072656164436f6e73697374656e63793a20226170706c69636174696f6e2d736e617073686f7422202f20747374722c0a202067756172644576616c756174696f6e3a2022707265636f6d6d69742d61746f6d696322202f20747374722c0a20206f62737472756374696f6e526f6c6c6261636b3a20226e6f2d76697369626c652d6566666563747322202f20747374722c0a20206d756c74695461726765743a20626f6f6c2c0a20203b207768657468657220746865207461726765742063616e206576616c7561746520707265636f6d6d697420706f7374636f6e646974696f6e20286067756172616e746565602920636865636b730a20203b20696e73696465207468652061746f6d6963206170706c69636174696f6e20756e6974202845444943542d5441524745542d504f5354434f4e442d303031290a2020706f7374636f6e646974696f6e537570706f72743a20626f6f6c2c0a0a202064657465726d696e6973746963457865637574696f6e3a207265736f757263652d7265662c0a2020636f6e666f726d616e636546697874757265436f727075733a207265736f757263652d7265662c0a7d0a0a3b20536861726564207479706573207265736f757263652d72656620616e64207368613235362d6469676573742061726520646566696e6564206f6e636520696e0a3b2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d6120627920746865206275696c640a3b202845444943542d4142492d4e4f4455502d303031292e205468657920617265206e6f74207265646566696e656420686572652e0a0a3b202d2d2d20696e7472696e736963207369676e6174757265202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a3b20546865206172746966616374207265666572656e63656420627920746865206d616e696665737427732060696e7472696e7369637360207265736f757263652d726566206973207468650a3b20696e7472696e7369632d7369676e617475726520636f7270757320646f63756d656e742062656c6f772e20497473206c61796f757420697320666978656420736f2074776f0a3b20696e646570656e64656e742070726f66696c65732076616c69646174652f686173682074686520636f72707573206964656e746963616c6c790a3b202845444943542d4142492d494e5452494e534943532d444f432d303031292e0a0a3b20696e7472696e736963732069732061204d4150206b6579656420627920636f6f7264696e6174652c20736f2074686520736368656d6120697473656c6620656e666f726365730a3b20636f6f7264696e61746520756e697175656e6573732e20412070726f766964657220726563656976657320746865207265736f6c76656420636f7270757320617320610a3b206469676573742d626f756e642073656d616e74696320696e70757420616e64207265736f6c76657320636f6f7264696e617465732077697468696e20746861742061727469666163742e0a3b2045616368206d6170206b6579204d55535420657175616c20697473207265636f726427732060636f6f7264696e61746560206669656c640a3b202845444943542d4142492d494e5452494e5349432d554e495155452d303031292e0a696e7472696e736963732d646f63756d656e74203d207b0a202061706956657273696f6e3a202265646963742e7461726765742d70726f66696c652e696e7472696e736963732f7631222c0a2020696e7472696e736963733a207b202a2074737472203d3e20696e7472696e736963207d2c0a7d0a0a3b20546865206172746966616374207265666572656e63656420627920746865206d616e6966657374277320606f7065726174696f6e50726f66696c657360207265736f757263652d7265662e0a3b206f7065726174696f6e2d70726f66696c65202f206f707469632d74656d706c6174652061726520646566696e656420696e2065646963742d636f6d6d6f6e2e6364646c2e204b657965642062790a3b20636f6f7264696e61746520736f207265736f6c7574696f6e2063616e2774207069636b206265747765656e2074776f2073616d652d636f6f7264696e6174652070726f66696c65730a3b202845444943542d4142492d4f5050524f46494c452d534c4f542d3030312c2045444943542d4142492d4f5050524f46494c452d554e495155452d303031292e0a6f7065726174696f6e2d70726f66696c65732d646f63756d656e74203d207b0a202061706956657273696f6e3a202265646963742e7461726765742d70726f66696c652e6f7065726174696f6e2d70726f66696c65732f7631222c0a202070726f66696c65733a207b202a2074737472203d3e206f7065726174696f6e2d70726f66696c65207d2c0a7d0a0a3b2041207479706564207072652d6c6f776572696e67207175657374696f6e20746861742063616e2062652070726f706f73656420627920576174736f6e206f7220616e206167656e7420616e640a3b20636865636b65642062792074686520636f6d70696c65722e2049742069732063616e6f6e6963616c2d43424f5220656e636f64656420756e6465720a3b206065646963742e6c6f776572696e672d726571756972656d656e74732f7631603b2074686520636f6d70696c657220636865636b7320746869732061727469666163742c206e6f74207468650a3b2070726f736520746861742070726f64756365642069742e0a6c6f776572696e672d726571756972656d656e7473203d207b0a202061706956657273696f6e3a202265646963742e6c6f776572696e672d726571756972656d656e74732f7631222c0a20206f7065726174696f6e50726f66696c653a20747374722c0a202073656d616e746963456666656374733a205b2a2073656d616e7469632d6566666563742d726571756972656d656e745d2c0a202072657175697265645772697465436c61737365733a205b2a2077726974652d636c6173735d2c0a202067756172644b696e64733a205b2a2067756172642d6b696e645d2c0a202061746f6d69636974793a2061746f6d69636974792d726571756972656d656e742c0a2020706f7374636f6e646974696f6e537570706f72743a20626f6f6c2c0a20206f62737472756374696f6e436f6f7264696e617465733a205b2a20747374725d2c0a2020666f6f747072696e744f626c69676174696f6e733a205b2a20747374725d2c0a2020636f73744f626c69676174696f6e733a205b2a20747374725d2c0a20206f70746963436f6e74726163743a20747374722c0a7d0a0a73656d616e7469632d6566666563742d726571756972656d656e74203d207b0a2020636f6f7264696e6174653a20747374722c0a20207772697465436c6173733a2077726974652d636c6173732c0a202067756172644b696e64733a205b2a2067756172642d6b696e645d2c0a20206f62737472756374696f6e436f6f7264696e617465733a205b2a20747374725d2c0a2020666f6f747072696e744f626c69676174696f6e733a205b2a20747374725d2c0a2020636f73744f626c69676174696f6e733a205b2a20747374725d2c0a7d0a0a77726974652d636c617373203d20226e6f6e6522202f20227265616422202f202263726561746522202f2022656e7375726522202f2022617070656e6422202f0a2020202020202020202020202020227265706c61636522202f202264656c65746522202f20747374720a67756172642d6b696e64203d2022707265636f6d6d69742d61746f6d696322202f20747374720a61746f6d69636974792d726571756972656d656e74203d202261746f6d696322202f20747374720a0a3b20412067656e75696e6520756e696f6e3a207075726520636f6e7374727563746f7273206361727279206e6f20656666656374206b696e64206f72206661696c757265733b206566666563740a3b20696e7472696e73696373206d757374202845444943542d5441524745542d494e5452494e5349432d434c4153532d303031292e2054686520736368656d6120656e666f7263657320746869732c0a3b206e6f74206120636f6d6d656e742e0a0a3b2054686520696e7472696e736963277320636f6f7264696e6174652069732074686520696e7472696e73696373206d6170204b45592c206e6f7420612076616c7565206669656c642c20736f207468650a3b206b657920616e6420636f6f7264696e6174652063616e206e65766572206469736167726565202845444943542d4142492d494e5452494e5349432d554e495155452d303031292e0a696e7472696e736963203d20707572652d696e7472696e736963202f206566666563742d696e7472696e7369630a0a707572652d696e7472696e736963203d207b0a2020696e7472696e736963436c6173733a202270757265222c0a202074797065506172616d65746572733a205b2a20747374725d2c0a2020617267756d656e7454797065733a205b2a20636f72652d747970652d7265665d2c0a202072657475726e547970653a20636f72652d747970652d7265662c0a20206775617264537570706f72743a2066616c73652c0a2020666f6f747072696e7454656d706c6174653a20747374722c0a2020636f737454656d706c6174653a20747374722c0a20207772697465436c6173733a20226e6f6e65222c0a7d0a0a6566666563742d696e7472696e736963203d207b0a2020696e7472696e736963436c6173733a2022656666656374222c0a202074797065506172616d65746572733a205b2a20747374725d2c0a2020617267756d656e7454797065733a205b2a20636f72652d747970652d7265665d2c0a202072657475726e547970653a20636f72652d747970652d7265662c0a20206566666563744b696e643a206566666563742d6b696e642c0a20203b206d6170206b65796564206279206661696c75726520636f6f7264696e61746520286661696c7572652d6964656e74293b20746865206661696c75726520636f6f7264696e6174652069730a20203b20746865206b65792c206e6f7420612076616c7565206669656c642c20736f20756e697175656e657373206973207374727563747572616c0a20203b202845444943542d4142492d4641494c5552452d554e495155452d303031292e0a20206566666563744661696c757265733a207b202a206661696c7572652d6964656e74203d3e206566666563742d6661696c7572652d626f6479207d2c0a20206775617264537570706f72743a20626f6f6c2c0a2020666f6f747072696e7454656d706c6174653a20747374722c0a2020636f737454656d706c6174653a20747374722c0a20207772697465436c6173733a20227265616422202f202263726561746522202f2022656e7375726522202f2022617070656e6422202f20227265706c61636522202f0a20202020202020202020202020202264656c65746522202f2022637573746f6d222c0a202063616e5061727469636970617465496e41746f6d696347756172643a20626f6f6c2c0a7d0a0a3b206566666563742d6661696c7572652d626f64792c206566666563742d6b696e642c20617574686f726974792d636c6173732c20616e6420636f72652d747970652d7265662061726520646566696e65640a3b206f6e636520696e2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d61202845444943542d4142492d4e4f4455502d303031292e0a0a3b202d2d2d2065646963742d617574686f726974792d66616374732e6364646c202d2d2d0a3b2065646963742d617574686f726974792d66616374732e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f722074686520666972737420636f6d70696c65722d636f6e7465787420617574686f726974792d666163747320646f63756d656e742e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a3b0a3b205468697320736368656d6120697320617373656d626c656420776974682065646963742d636f6d6d6f6e2e6364646c20736f20736f757263652e6469676573742075736573207468650a3b20736861726564207368613235362d6469676573742074797065642076616c75652e204a534f4e2069732061207265766965772f696e7075742072656e646572696e673a206974730a3b20607368613235363a3c3634206865783e6020736f75726365206469676573742069732070726f6a656374656420746f205b60736861323536602c203332207261772062797465735d206f6e0a3b2074686520776972652c20616e64206974732066616374206172726179732070726f6a65637420746f2074686520636f6f7264696e6174652d6b65796564206d6170732062656c6f772e0a0a617574686f726974792d6661637473203d207b0a202061706956657273696f6e3a202265646963742e617574686f726974792d66616374732f7631222c0a2020736f757263653a20617574686f726974792d666163742d736f757263652c0a20206f7065726174696f6e50726f66696c65733a207b202a2074737472203d3e20617574686f726974792d6f7065726174696f6e2d70726f66696c652d66616374207d2c0a20206566666563745772697465436c61737365733a207b202a2074737472203d3e20617574686f726974792d77726974652d636c617373207d2c0a2020627564676574733a207b202a2074737472203d3e20617574686f726974792d6275646765742d66616374207d2c0a7d0a0a617574686f726974792d666163742d736f75726365203d207b0a20206b696e643a20226c61777061636b22202f202274617267657450726f66696c65222c0a2020636f6f7264696e6174653a20747374722c0a20206469676573743a207368613235362d6469676573742c0a7d0a0a3b20546865206d6170206b65792069732074686520736f75726365206f7065726174696f6e2d70726f66696c6520636f6f7264696e6174652e204974206973206e6f7420726570656174656420696e0a3b207468652076616c75652c20736f2061206b657920616e6420656d62656464656420636f6f7264696e6174652063616e6e6f742064697361677265652e20416c6c6f7765642077726974650a3b20636c61737365732061726520612063616e6f6e6963616c206d61702d7365743a2074686520636c6173732069732074686520756e69717565206b657920616e64206e756c6c206973207468650a3b20756e6974206d61726b65722e2043616e6f6e6963616c2043424f52206669786573206b6579206f7264657220776974686f75742061207365636f6e64206f72646572696e672072756c652e0a617574686f726974792d6f7065726174696f6e2d70726f66696c652d66616374203d207b0a2020636f72653a20747374722c0a2020616c6c6f7765645772697465436c61737365733a207b202a20617574686f726974792d77726974652d636c617373203d3e206e756c6c207d2c0a7d0a0a3b20546865206566666563745772697465436c6173736573206d6170206b6579206973207468652073656d616e7469632065666665637420636f6f7264696e6174652e2054686520627564676574730a3b206d6170206b65792069732074686520736f757263652062756467657420636f6f7264696e6174652e2043616e6f6e6963616c2043424f52206d61702d6b657920756e697175656e6573730a3b206d616b6573206475706c6963617465206661637420636f6f7264696e61746573207374727563747572616c6c7920756e726570726573656e7461626c652e0a617574686f726974792d6275646765742d66616374203d207b0a20206d617853746570733a2075696e742c0a20206d6178416c6c6f636174656442797465733a2075696e742c0a20206d61784f757470757442797465733a2075696e742c0a7d0a0a3b20417574686f726974794661637473446f63756d656e7420763120696e74656e74696f6e616c6c792061636365707473206f6e6c792074686520777269746520636c6173736573207468650a3b2063757272656e7420636f6d70696c6572206d6f64656c2063616e20636f6e73756d652e2060637573746f6d602069732074686520736f6c6520763120637573746f6d207370656c6c696e673b0a3b20617262697472617279207461726765742d70726f66696c6520657874656e73696f6e20737472696e677320646f206e6f7420656e746572207468697320636f6d70696c657220706174682e0a617574686f726974792d77726974652d636c617373203d20226e6f6e6522202f20227265616422202f202263726561746522202f2022656e7375726522202f2022617070656e6422202f0a202020202020202020202020202020202020202020202020227265706c61636522202f202264656c65746522202f2022637573746f6d220a0a3b202d2d2d2065646963742d726573756c742d70726f6a656374696f6e2e6364646c202d2d2d0a3b20535044582d4c6963656e73652d4964656e7469666965723a204170616368652d322e300a3b2065646963742d726573756c742d70726f6a656374696f6e2e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f7220636f6d70696c65722d6f776e6564206170706c69636174696f6e2d726573756c742070726f6a656374696f6e732e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a0a726573756c742d70726f6a656374696f6e203d207b0a2020736368656d613a202265646963742e726573756c742d70726f6a656374696f6e2f7631222c0a20206f7065726174696f6e436f6f7264696e6174653a20626f756e6465642d70726f6a656374696f6e2d746578742c0a20206f7574707574547970653a20626f756e6465642d70726f6a656374696f6e2d746578742c0a20206d61784f757470757442797465733a2075696e74202e677420302c0a202065787072657373696f6e3a20726573756c742d70726f6a656374696f6e2d657870722c0a7d0a0a726573756c742d70726f6a656374696f6e2d65787072203d20726573756c742d70726f6a656374696f6e2d7265636f7264202f20726573756c742d70726f6a656374696f6e2d736f757263650a0a726573756c742d70726f6a656374696f6e2d7265636f7264203d207b0a20206b696e643a20227265636f7264222c0a20203b2054686520726f6f74207265636f726420636f756e7473206173206f6e65206f66207468652052757374206465636f6465722773203235362065787072657373696f6e206e6f6465732e0a20203b204e657374656420616767726567617465206e6f646520636f756e742072656d61696e7320616e20617574686f7269746174697665206465636f64657220636865636b2e0a20206669656c64733a207b20302a32353520626f756e6465642d70726f6a656374696f6e2d74657874203d3e20726573756c742d70726f6a656374696f6e2d65787072207d2c0a7d0a0a726573756c742d70726f6a656374696f6e2d736f75726365203d207b0a20206b696e643a2022736f75726365222c0a2020736f757263653a20726573756c742d70726f6a656374696f6e2d736f757263652d6b696e642c0a20203b204d617463686573204d41585f524553554c545f50524f4a454354494f4e5f504154485f5345474d454e545320696e2065646963742d73796e7461782e0a2020706174683a205b302a333220626f756e6465642d70726f6a656374696f6e2d746578745d2c0a7d0a0a726573756c742d70726f6a656374696f6e2d736f757263652d6b696e64203d0a20207b206b696e643a20226170706c69636174696f6e496e70757422207d202f0a20207b0a202020206b696e643a20227075726542696e64696e67222c0a2020202062696e64696e6749643a20626f756e6465642d70726f6a656374696f6e2d746578742c0a20207d202f0a20207b0a202020206b696e643a20226361706162696c697479526573756c74222c0a202020207374657049643a20626f756e6465642d70726f6a656374696f6e2d746578742c0a20207d0a0a626f756e6465642d70726f6a656374696f6e2d74657874203d2074737472202e73697a652028312e2e31303234290a0a3b202d2d2d2065646963742d7461726765742d69722e6364646c202d2d2d0a3b20535044582d4c6963656e73652d4964656e7469666965723a204170616368652d322e300a3b2065646963742d7461726765742d69722e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f72207468652045646963742d6f776e65642054617267657420495220617274696661637420656e76656c6f70652e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a3b0a3b205468697320736368656d6120697320617373656d626c656420776974682065646963742d636f6d6d6f6e2e6364646c20616e642065646963742d636f72652e6364646c2e2049740a3b2064656c696265726174656c792072657573657320436f72652065787072657373696f6e732c20707265646963617465732c20627564676574732c206c6f63616c207265666572656e6365732c0a3b206f62737472756374696f6e20726561736f6e732c20616e64206f62737472756374696f6e2061726d7320736f2074686520736368656d61206d617463686573207468652076616c75650a3b20656d6974746564206279207468652063616e6f6e6963616c2054617267657420495220656e636f64657220726174686572207468616e20726573746174696e672074686f73652074797065732e0a3b2049742064657363726962657320746865207374727563747572616c207368617065206f662076616c6964206c6f776572696e672d70726f6475636564206172746966616374732e205468650a3b206c6f776572696e6720616e6420656e636f64657220636f6e7472616374732073657061726174656c7920656e666f7263652073656d616e746963206964656e7469666965722072756c65730a3b20616e642063616e6f6e6963616c206f72646572696e672f64656475706c69636174696f6e20666f72207365742d6c696b652076616c7565732e0a0a3b2054617267657420495220656e636f64696e672072656a6563747320616e20656d707479207461726765742d70726f66696c6520636f6f7264696e617465206265666f72652062797465730a3b2065786973742c20736f207468697320726f6f74207469676874656e732074686520736861726564207374727563747572616c207265736f757263652d726566206163636f7264696e676c792e0a7461726765742d69722d7265736f757263652d726566203d207b0a202069643a2074737472202e7265676578702022283f73292e2b222c0a20206469676573743a207368613235362d6469676573742c0a7d0a0a7461726765742d69722d6172746966616374203d207461726765742d69722d636c6f7365642d6172746966616374202f207461726765742d69722d6c65676163792d61727469666163740a0a7461726765742d69722d61727469666163742d636f6d6d6f6e203d20280a20206b696e643a202274617267657449724172746966616374222c0a2020646f6d61696e3a20747374722c0a202074617267657450726f66696c653a207461726765742d69722d7265736f757263652d7265662c0a2020736f75726365436f7265436f6f7264696e6174653a2074737472202e7265676578702022283f73292e2b222c0a290a0a7461726765742d69722d636c6f7365642d6172746966616374203d207b0a20207461726765742d69722d61727469666163742d636f6d6d6f6e2c0a202073656d616e746963436c6f737572653a207461726765742d69722d73656d616e7469632d636c6f737572652c0a2020696e74656e74733a207b202a2074737472203d3e207461726765742d69722d696e74656e74207d2c0a7d0a0a7461726765742d69722d6c65676163792d6172746966616374203d207b0a20207461726765742d69722d61727469666163742d636f6d6d6f6e2c0a2020696e74656e74733a207b202a2074737472203d3e207461726765742d69722d6c65676163792d696e74656e74207d2c0a7d0a0a7461726765742d69722d73656d616e7469632d636c6f73757265203d207b0a2020736f75726365436f72653a207461726765742d69722d7265736f757263652d7265662c0a20206c61777061636b733a205b2a207461726765742d69722d7265736f757263652d7265665d2c0a20203f206361706162696c69746965733a205b2a207461726765742d69722d7265736f757263652d7265665d2c0a7d0a0a7461726765742d69722d696e74656e74203d207b0a20207461726765742d69722d696e74656e742d636f6d6d6f6e2c0a20203f2062617369733a20636f72652d657870722c0a20203f207075726542696e64696e67733a205b312a207461726765742d69722d707572652d62696e64696e675d2c0a20203f2065787465726e616c416374696f6e52657175657374733a205b2a207461726765742d69722d65787465726e616c2d616374696f6e2d726571756573745d2c0a7d0a0a7461726765742d69722d6c65676163792d696e74656e74203d207b0a20207461726765742d69722d696e74656e742d636f6d6d6f6e2c0a7d0a0a7461726765742d69722d696e74656e742d636f6d6d6f6e203d20280a20206f7065726174696f6e50726f66696c653a20747374722c0a2020696e707574436f6e73747261696e74733a205b2a20696e7075742d636f6e73747261696e745d2c0a2020636f72654576616c756174696f6e4275646765743a20636f72652d6275646765742c0a2020726571756972656d656e74733a205b2a207461726765742d69722d726571756972656d656e745d2c0a202073746570733a205b2a207461726765742d69722d737465705d2c0a2020726573756c743a20636f72652d657870722c0a290a0a7461726765742d69722d726571756972656d656e74203d207b0a202069643a20747374722c0a20207072656469636174653a20636f72652d7072656469636174652c0a20206f6e4661696c7572653a20726571756972652d6661696c7572652d61726d2c0a7d0a0a7461726765742d69722d707572652d62696e64696e67203d207b0a202069643a2074737472202e7265676578702022283f73292e2b222c0a202062696e64696e673a206c6f63616c2d7265662c0a202076616c75653a20636f72652d657870722c0a7d0a0a7461726765742d69722d73746570203d207b0a202069643a20747374722c0a202062696e64696e673a206c6f63616c2d7265662c0a20206566666563743a20747374722c0a2020746172676574496e7472696e7369633a20747374722c0a2020696e7075743a20636f72652d657870722c0a20206f62737472756374696f6e4661696c757265733a205b2a206661696c7572652d6964656e745d2c0a20206f62737472756374696f6e41726d733a207b202a206661696c7572652d6964656e74203d3e206f62737472756374696f6e2d61726d207d2c0a7d0a0a7461726765742d69722d65787465726e616c2d616374696f6e2d72657175657374203d207b0a202069643a20747374722c0a202062696e64696e673a206c6f63616c2d7265662c0a20206f7065726174696f6e3a207461726765742d69722d7265736f757263652d7265662c0a2020696e707574547970653a20636f72652d747970652d7265662c0a2020736574746c656d656e74547970653a20636f72652d747970652d7265662c0a2020696e707574536368656d613a207461726765742d69722d7265736f757263652d7265662c0a2020736574746c656d656e74536368656d613a207461726765742d69722d7265736f757263652d7265662c0a2020696e7075743a20636f72652d657870722c0a2020617574686f7269747953636f70653a20636f72652d657870722c0a202062617369733a20636f72652d657870722c0a20206275646765743a2065787465726e616c2d616374696f6e2d6275646765742c0a20207265636f6e63696c696174696f6e4c61773a207461726765742d69722d7265736f757263652d7265662c0a202073746174653a20226177616974696e67536574746c656d656e74222c0a2020736574746c656d656e7441646d697373696f6e3a2022736368656d615265717569726564222c0a7d0a", + "rawSha256": "c663df6dd3d463aad878ae9c3beebf42fe057d7395f91b6d3823d0e0fab77f50" }, "contracts": [ {"contract": "authority-facts", "rootRule": "authority-facts"}, diff --git a/schemas/edict-provider/generated/v1/evidence/provenance.provider-generation.json b/schemas/edict-provider/generated/v1/evidence/provenance.provider-generation.json index 2677c112..501c7ca7 100644 --- a/schemas/edict-provider/generated/v1/evidence/provenance.provider-generation.json +++ b/schemas/edict-provider/generated/v1/evidence/provenance.provider-generation.json @@ -1 +1 @@ -{"apiVersion":"wesley.generation-provenance-manifest/v1","contractVersions":{"generatorAbi":"wesley.extension-generator/v1","inputSchema":"wesley.extension-generation-input/v1","provenanceSchema":"wesley.generation-provenance-manifest/v1"},"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:2a9ce322d49cfc2976d44c4866f30a6afb669f8e6c42a50898f9919b352a03c1"}],"generationInputDigest":"sha256:8801229418295223b90cb8ff5eaff6e1a1d8eef27e984e0f2caa04450e29e125","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:c080a9eef207857127f54f0a64d12286702f72ca17db96e77f8c631a71eb86f5","version":"0.1.0"},"settingsDigest":"sha256:0f708e76898de6fdb8186352e81d0f5c445adf94bb6c7de9204952d9fe913d4a","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:fe37a4252af4a732a62074b58947e052744a48397042eaadb0e61849fc245627"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:80e98f3b338690a5b0c71c2d35fbe70c11e4ef4b5c8d064a583f2af94942e613"}]} \ No newline at end of file +{"apiVersion":"wesley.generation-provenance-manifest/v1","contractVersions":{"generatorAbi":"wesley.extension-generator/v1","inputSchema":"wesley.extension-generation-input/v1","provenanceSchema":"wesley.generation-provenance-manifest/v1"},"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:5da9a9c010e25e4d611f4b5ef319a10168bb66a8027fd811caa37630e16076f7"}],"generationInputDigest":"sha256:dbcc90f465d2a461d6fa107b499a16eedfe49ec8c633c247eeedad2d1cd82022","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:5d7784b3fd18223c1e5d8c9089d032b2048a9743b58e2a9f02d4de99541f73a8","version":"0.1.0"},"settingsDigest":"sha256:0f708e76898de6fdb8186352e81d0f5c445adf94bb6c7de9204952d9fe913d4a","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:c663df6dd3d463aad878ae9c3beebf42fe057d7395f91b6d3823d0e0fab77f50"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:6228ebfc8ac9fc21f05d624cccaa731346acfb9203294dbcc767fa4d649fc7e8"}]} \ No newline at end of file diff --git a/schemas/edict-provider/generated/v1/evidence/review.provider-generation.json b/schemas/edict-provider/generated/v1/evidence/review.provider-generation.json index d683977a..230defaf 100644 --- a/schemas/edict-provider/generated/v1/evidence/review.provider-generation.json +++ b/schemas/edict-provider/generated/v1/evidence/review.provider-generation.json @@ -1 +1 @@ -{"apiVersion":"wesley.generation-review/v1","authoritative":false,"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:2a9ce322d49cfc2976d44c4866f30a6afb669f8e6c42a50898f9919b352a03c1"}],"generationInputDigest":"sha256:8801229418295223b90cb8ff5eaff6e1a1d8eef27e984e0f2caa04450e29e125","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:c080a9eef207857127f54f0a64d12286702f72ca17db96e77f8c631a71eb86f5","version":"0.1.0"},"projectionRoles":["authority-facts.echo-dpo","authority-facts.echo-lawpack","generated-artifact-profile.echo-dpo-registration","lawpack.echo-dpo","schema.echo-provider-artifacts","target-profile.echo-dpo"],"provenanceManifestDigest":"sha256:9729cb2fb6b6059bf134b2b199e56c9b2b1b6652d64b942cbc8730c156966736","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:fe37a4252af4a732a62074b58947e052744a48397042eaadb0e61849fc245627"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:80e98f3b338690a5b0c71c2d35fbe70c11e4ef4b5c8d064a583f2af94942e613"}]} \ No newline at end of file +{"apiVersion":"wesley.generation-review/v1","authoritative":false,"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:5da9a9c010e25e4d611f4b5ef319a10168bb66a8027fd811caa37630e16076f7"}],"generationInputDigest":"sha256:dbcc90f465d2a461d6fa107b499a16eedfe49ec8c633c247eeedad2d1cd82022","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:5d7784b3fd18223c1e5d8c9089d032b2048a9743b58e2a9f02d4de99541f73a8","version":"0.1.0"},"projectionRoles":["authority-facts.echo-dpo","authority-facts.echo-lawpack","generated-artifact-profile.echo-dpo-registration","lawpack.echo-dpo","schema.echo-provider-artifacts","target-profile.echo-dpo"],"provenanceManifestDigest":"sha256:486e70bf242bddb71cc26e7aaca90b45cf3439decb63a970fc759208e24d7774","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:c663df6dd3d463aad878ae9c3beebf42fe057d7395f91b6d3823d0e0fab77f50"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:6228ebfc8ac9fc21f05d624cccaa731346acfb9203294dbcc767fa4d649fc7e8"}]} \ No newline at end of file diff --git a/schemas/edict-provider/generated/v1/primary/schema.echo-provider-artifacts.cddl b/schemas/edict-provider/generated/v1/primary/schema.echo-provider-artifacts.cddl index 533f56fa..3226dc60 100644 --- a/schemas/edict-provider/generated/v1/primary/schema.echo-provider-artifacts.cddl +++ b/schemas/edict-provider/generated/v1/primary/schema.echo-provider-artifacts.cddl @@ -128,6 +128,7 @@ core-string-type = { } core-bytes-type = { kind: "Bytes", + ? min: uint, max: uint, } core-record-type = { diff --git a/schemas/edict-provider/package/v1/components/lowerer.echo-dpo.component.wasm b/schemas/edict-provider/package/v1/components/lowerer.echo-dpo.component.wasm index c2063339da38f141f3d9017ca8fa10f8d0166049..2bfc69513eba917a18745f6bac7f8e992bc84873 100644 GIT binary patch delta 157 zcmdn@Q()gufrb{w7N#xC^2;4eQxYu`Et3rl4N{FvQ%zFL3=Pvvl1x+6j14Ul4Gj#< xERvGU%n~gOjLg$gEDQ~k6BCWi&5R9F4b2S9&C<-b$1i8*;-uV|l^d8vdjO^DExrH% delta 157 zcmdn@Q()gufrb{w7N#xC^2;5J5-pQcjg5>_Oe~Yrl8r3Q%~DKEl1(hk%+ibv63r6R xlFZC3(=1ZWl1+>fO${t8Ez&G44K0(5O^p%_jFSzw$1i8*;-uV|l^d8vdjP;WE*1a) diff --git a/schemas/edict-provider/package/v1/generated/evidence/provenance.provider-generation.json b/schemas/edict-provider/package/v1/generated/evidence/provenance.provider-generation.json index 2677c112..501c7ca7 100644 --- a/schemas/edict-provider/package/v1/generated/evidence/provenance.provider-generation.json +++ b/schemas/edict-provider/package/v1/generated/evidence/provenance.provider-generation.json @@ -1 +1 @@ -{"apiVersion":"wesley.generation-provenance-manifest/v1","contractVersions":{"generatorAbi":"wesley.extension-generator/v1","inputSchema":"wesley.extension-generation-input/v1","provenanceSchema":"wesley.generation-provenance-manifest/v1"},"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:2a9ce322d49cfc2976d44c4866f30a6afb669f8e6c42a50898f9919b352a03c1"}],"generationInputDigest":"sha256:8801229418295223b90cb8ff5eaff6e1a1d8eef27e984e0f2caa04450e29e125","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:c080a9eef207857127f54f0a64d12286702f72ca17db96e77f8c631a71eb86f5","version":"0.1.0"},"settingsDigest":"sha256:0f708e76898de6fdb8186352e81d0f5c445adf94bb6c7de9204952d9fe913d4a","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:fe37a4252af4a732a62074b58947e052744a48397042eaadb0e61849fc245627"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:80e98f3b338690a5b0c71c2d35fbe70c11e4ef4b5c8d064a583f2af94942e613"}]} \ No newline at end of file +{"apiVersion":"wesley.generation-provenance-manifest/v1","contractVersions":{"generatorAbi":"wesley.extension-generator/v1","inputSchema":"wesley.extension-generation-input/v1","provenanceSchema":"wesley.generation-provenance-manifest/v1"},"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:5da9a9c010e25e4d611f4b5ef319a10168bb66a8027fd811caa37630e16076f7"}],"generationInputDigest":"sha256:dbcc90f465d2a461d6fa107b499a16eedfe49ec8c633c247eeedad2d1cd82022","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:5d7784b3fd18223c1e5d8c9089d032b2048a9743b58e2a9f02d4de99541f73a8","version":"0.1.0"},"settingsDigest":"sha256:0f708e76898de6fdb8186352e81d0f5c445adf94bb6c7de9204952d9fe913d4a","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:c663df6dd3d463aad878ae9c3beebf42fe057d7395f91b6d3823d0e0fab77f50"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:6228ebfc8ac9fc21f05d624cccaa731346acfb9203294dbcc767fa4d649fc7e8"}]} \ No newline at end of file diff --git a/schemas/edict-provider/package/v1/generated/evidence/review.provider-generation.json b/schemas/edict-provider/package/v1/generated/evidence/review.provider-generation.json index d683977a..230defaf 100644 --- a/schemas/edict-provider/package/v1/generated/evidence/review.provider-generation.json +++ b/schemas/edict-provider/package/v1/generated/evidence/review.provider-generation.json @@ -1 +1 @@ -{"apiVersion":"wesley.generation-review/v1","authoritative":false,"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:2a9ce322d49cfc2976d44c4866f30a6afb669f8e6c42a50898f9919b352a03c1"}],"generationInputDigest":"sha256:8801229418295223b90cb8ff5eaff6e1a1d8eef27e984e0f2caa04450e29e125","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:c080a9eef207857127f54f0a64d12286702f72ca17db96e77f8c631a71eb86f5","version":"0.1.0"},"projectionRoles":["authority-facts.echo-dpo","authority-facts.echo-lawpack","generated-artifact-profile.echo-dpo-registration","lawpack.echo-dpo","schema.echo-provider-artifacts","target-profile.echo-dpo"],"provenanceManifestDigest":"sha256:9729cb2fb6b6059bf134b2b199e56c9b2b1b6652d64b942cbc8730c156966736","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:fe37a4252af4a732a62074b58947e052744a48397042eaadb0e61849fc245627"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:80e98f3b338690a5b0c71c2d35fbe70c11e4ef4b5c8d064a583f2af94942e613"}]} \ No newline at end of file +{"apiVersion":"wesley.generation-review/v1","authoritative":false,"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:5da9a9c010e25e4d611f4b5ef319a10168bb66a8027fd811caa37630e16076f7"}],"generationInputDigest":"sha256:dbcc90f465d2a461d6fa107b499a16eedfe49ec8c633c247eeedad2d1cd82022","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:5d7784b3fd18223c1e5d8c9089d032b2048a9743b58e2a9f02d4de99541f73a8","version":"0.1.0"},"projectionRoles":["authority-facts.echo-dpo","authority-facts.echo-lawpack","generated-artifact-profile.echo-dpo-registration","lawpack.echo-dpo","schema.echo-provider-artifacts","target-profile.echo-dpo"],"provenanceManifestDigest":"sha256:486e70bf242bddb71cc26e7aaca90b45cf3439decb63a970fc759208e24d7774","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:c663df6dd3d463aad878ae9c3beebf42fe057d7395f91b6d3823d0e0fab77f50"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:6228ebfc8ac9fc21f05d624cccaa731346acfb9203294dbcc767fa4d649fc7e8"}]} \ No newline at end of file diff --git a/schemas/edict-provider/package/v1/generated/primary/schema.echo-provider-artifacts.cddl b/schemas/edict-provider/package/v1/generated/primary/schema.echo-provider-artifacts.cddl index 533f56fa..3226dc60 100644 --- a/schemas/edict-provider/package/v1/generated/primary/schema.echo-provider-artifacts.cddl +++ b/schemas/edict-provider/package/v1/generated/primary/schema.echo-provider-artifacts.cddl @@ -128,6 +128,7 @@ core-string-type = { } core-bytes-type = { kind: "Bytes", + ? min: uint, max: uint, } core-record-type = { diff --git a/schemas/edict-provider/package/v1/provider-manifest.echo.json b/schemas/edict-provider/package/v1/provider-manifest.echo.json index a739de75..8cb7beee 100644 --- a/schemas/edict-provider/package/v1/provider-manifest.echo.json +++ b/schemas/edict-provider/package/v1/provider-manifest.echo.json @@ -3,7 +3,7 @@ "providerAbi": "edict:target-provider@1.0.0", "provider": { "coordinate": "echo.edict-provider@1", - "digest": "sha256:b888f0c64a53c68d18c2bd3212589cf2ed9da3fbd551a64a9006184db3dde71f" + "digest": "sha256:319b2f44db2fdc953ab4dd4d7603a60db8c5951cc62a0ac2e6b41797eebcee92" }, "artifacts": [ { @@ -21,7 +21,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:c080a9eef207857127f54f0a64d12286702f72ca17db96e77f8c631a71eb86f5" + "digest": "sha256:5d7784b3fd18223c1e5d8c9089d032b2048a9743b58e2a9f02d4de99541f73a8" } } }, @@ -40,7 +40,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:c080a9eef207857127f54f0a64d12286702f72ca17db96e77f8c631a71eb86f5" + "digest": "sha256:5d7784b3fd18223c1e5d8c9089d032b2048a9743b58e2a9f02d4de99541f73a8" } } }, @@ -59,7 +59,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:c080a9eef207857127f54f0a64d12286702f72ca17db96e77f8c631a71eb86f5" + "digest": "sha256:5d7784b3fd18223c1e5d8c9089d032b2048a9743b58e2a9f02d4de99541f73a8" } } }, @@ -78,7 +78,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:c080a9eef207857127f54f0a64d12286702f72ca17db96e77f8c631a71eb86f5" + "digest": "sha256:5d7784b3fd18223c1e5d8c9089d032b2048a9743b58e2a9f02d4de99541f73a8" } } }, @@ -87,13 +87,13 @@ "artifactKind": "lowerer", "resource": { "coordinate": "echo.dpo.lowerer/component@1", - "digest": "sha256:20fe92ce8d7bec67f772715cb1f0f3d9ac4f65fe382eff3952f3c368849419dd" + "digest": "sha256:7d00aa4d4ec63fb81dad318b0165010cd4451f33b3f939f90a0457caf54a46eb" }, "source": { "kind": "component", "component": { "coordinate": "echo.dpo.lowerer/component@1", - "digest": "sha256:20fe92ce8d7bec67f772715cb1f0f3d9ac4f65fe382eff3952f3c368849419dd" + "digest": "sha256:7d00aa4d4ec63fb81dad318b0165010cd4451f33b3f939f90a0457caf54a46eb" } } }, @@ -102,7 +102,7 @@ "artifactKind": "generationProvenance", "resource": { "coordinate": "echo.edict-provider-generation-provenance@1", - "digest": "sha256:cef498b490bd198c6c57c1ea7690ac7def88d3fc17057504bf0a8dd47b932cd9" + "digest": "sha256:5cde2775374abc62656fbd75b98e51d22aa3857c2dad577222007c187b602bbc" }, "source": { "kind": "generated", @@ -112,7 +112,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:c080a9eef207857127f54f0a64d12286702f72ca17db96e77f8c631a71eb86f5" + "digest": "sha256:5d7784b3fd18223c1e5d8c9089d032b2048a9743b58e2a9f02d4de99541f73a8" } } }, @@ -121,7 +121,7 @@ "artifactKind": "reviewArtifact", "resource": { "coordinate": "echo.edict-provider-generation-review@1", - "digest": "sha256:79528989a042ad1a8301479e1f389d1c2dfd32266ba100f0e06d94df8de07038" + "digest": "sha256:84c27ba31e5895094e37869ec8bfea49dd083e76fe58dc74cdd7009cb6a44fb1" }, "source": { "kind": "generated", @@ -131,7 +131,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:c080a9eef207857127f54f0a64d12286702f72ca17db96e77f8c631a71eb86f5" + "digest": "sha256:5d7784b3fd18223c1e5d8c9089d032b2048a9743b58e2a9f02d4de99541f73a8" } } }, @@ -140,7 +140,7 @@ "artifactKind": "artifactSchema", "resource": { "coordinate": "echo.provider-artifacts.cddl@1", - "digest": "sha256:2a9ce322d49cfc2976d44c4866f30a6afb669f8e6c42a50898f9919b352a03c1" + "digest": "sha256:5da9a9c010e25e4d611f4b5ef319a10168bb66a8027fd811caa37630e16076f7" }, "source": { "kind": "generated", @@ -150,7 +150,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:c080a9eef207857127f54f0a64d12286702f72ca17db96e77f8c631a71eb86f5" + "digest": "sha256:5d7784b3fd18223c1e5d8c9089d032b2048a9743b58e2a9f02d4de99541f73a8" } } }, @@ -169,7 +169,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:c080a9eef207857127f54f0a64d12286702f72ca17db96e77f8c631a71eb86f5" + "digest": "sha256:5d7784b3fd18223c1e5d8c9089d032b2048a9743b58e2a9f02d4de99541f73a8" } } }, diff --git a/xtask/src/provider_lowerer_component.rs b/xtask/src/provider_lowerer_component.rs index 266d6f41..c537aebb 100644 --- a/xtask/src/provider_lowerer_component.rs +++ b/xtask/src/provider_lowerer_component.rs @@ -53,7 +53,7 @@ const PINNED_CARGO_COMMIT: &str = "840b83a10fb0e039a83f4d70ad032892c287570a"; /// Reviewed identity that the portable promotion command is permitted to install. pub(crate) const APPROVED_CHECKED_COMPONENT_SHA256: &str = - "20fe92ce8d7bec67f772715cb1f0f3d9ac4f65fe382eff3952f3c368849419dd"; + "7d00aa4d4ec63fb81dad318b0165010cd4451f33b3f939f90a0457caf54a46eb"; pub(crate) const CHECKED_COMPONENT_REPOSITORY_PATH: &str = "schemas/edict-provider/components/v1/lowerer.echo-dpo.component.wasm"; From 27a56eb91964aeeea90d36c58585683b341a2dfc Mon Sep 17 00:00:00 2001 From: James Ross Date: Sun, 23 Aug 2026 16:30:54 -0700 Subject: [PATCH 5/8] Bind verifier reports to executable subjects --- CHANGELOG.md | 8 +- crates/echo-edict-provider-lowerer/README.md | 2 +- crates/echo-edict-provider-lowerer/src/lib.rs | 4 +- .../tests/fixtures/generated_echo_dpo.rs | 4 +- .../tests/lowerer_contract.rs | 2 +- crates/echo-edict-provider-verifier/README.md | 10 ++- .../src/executable_operation.rs | 75 ++++++++++++++++++ .../tests/executable_operation_package.rs | 29 +++++++ .../lowerer.echo-dpo.component.wasm | Bin 277694 -> 277694 bytes .../verifier.echo-dpo.component.wasm | Bin 297035 -> 308859 bytes .../provenance.provider-generation.json | 2 +- .../evidence/review.provider-generation.json | 2 +- .../schema.echo-provider-artifacts.cddl | 13 +++ .../package/v1/provider-manifest.echo.json | 32 ++++---- .../echo-wesley-gen/src/provider_artifacts.rs | 13 +++ .../echo-wesley-gen/tests/provider_package.rs | 2 +- .../tests/provider_package_corpus.rs | 4 +- schemas/edict-provider/README.md | 6 +- .../edict-provider/components/v1/README.md | 6 +- .../v1/lowerer.echo-dpo.component.wasm | Bin 277694 -> 277694 bytes .../v1/verifier.echo-dpo.component.wasm | Bin 297035 -> 308859 bytes .../provenance.provider-generation.json | 2 +- .../evidence/review.provider-generation.json | 2 +- .../schema.echo-provider-artifacts.cddl | 13 +++ .../lowerer.echo-dpo.component.wasm | Bin 277694 -> 277694 bytes .../verifier.echo-dpo.component.wasm | Bin 297035 -> 308859 bytes .../provenance.provider-generation.json | 2 +- .../evidence/review.provider-generation.json | 2 +- .../schema.echo-provider-artifacts.cddl | 13 +++ .../package/v1/provider-manifest.echo.json | 32 ++++---- xtask/src/provider_lowerer_component.rs | 4 +- 31 files changed, 221 insertions(+), 63 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 72cd87bb..d36f0166 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -174,11 +174,11 @@ provider-envelope domains. Its lowerer and verifier components were independently reproduced in copy-only, mount-free designated `linux/amd64` containers and promoted at 277,694 bytes / - `7d00aa4d4ec63fb81dad318b0165010cd4451f33b3f939f90a0457caf54a46eb` - and 297,035 bytes / - `58f9451831338fa39a73d53790fe839037f1a8a1fb5345ffefc334af3ec90413`, + `a4758f060122fba8c073841ccaa22bf0b8a742b495b76eb33c914eff3250dcf5` + and 308,859 bytes / + `174cf8758815bf2b9f2ef575517aa6d144ed3f2d1995fc65d25a211b9dea82d9`, respectively. The resulting 25-file package has provider identity - `sha256:319b2f44db2fdc953ab4dd4d7603a60db8c5951cc62a0ac2e6b41797eebcee92`. + `sha256:a4e0d9e31ada5c8c14adfce05fdecb228e5b79545f3574a5e21e7db71ab3f307`. This package build proves generic compiler/provider lowering and independent verification. The separate `run-edict-operation` witness now consumes that crossing through Echo-owned runtime execution. diff --git a/crates/echo-edict-provider-lowerer/README.md b/crates/echo-edict-provider-lowerer/README.md index 504394cc..1963ee6d 100644 --- a/crates/echo-edict-provider-lowerer/README.md +++ b/crates/echo-edict-provider-lowerer/README.md @@ -118,7 +118,7 @@ remain a separate bounded observer/optic path and must never be represented as synthetic mutations. The refreshed 277,694-byte checked lowerer component has SHA-256 -`7d00aa4d4ec63fb81dad318b0165010cd4451f33b3f939f90a0457caf54a46eb` and has +`a4758f060122fba8c073841ccaa22bf0b8a742b495b76eb33c914eff3250dcf5` and has crossed the reproducible promotion boundary. The pinned Edict host admits its generated envelope under the owning `generated-artifact` CDDL root, and the isolated host fixture exercises the exact helper binding, typed codecs, EINT diff --git a/crates/echo-edict-provider-lowerer/src/lib.rs b/crates/echo-edict-provider-lowerer/src/lib.rs index a87f6d71..da0cca2c 100644 --- a/crates/echo-edict-provider-lowerer/src/lib.rs +++ b/crates/echo-edict-provider-lowerer/src/lib.rs @@ -809,7 +809,7 @@ pub mod echo_dpo { pub const PROVIDER_SCHEMA_COORDINATE: &str = "echo.provider-artifacts.cddl@1"; /// Raw SHA-256 of the exact self-contained provider CDDL bytes. pub const PROVIDER_SCHEMA_SHA256_HEX: &str = - "5da9a9c010e25e4d611f4b5ef319a10168bb66a8027fd811caa37630e16076f7"; + "be164fde5fedaf2c3921dbde3013e4ee6b884d085f22802d5e5d0d7134266201"; /// Exact generated-artifact profile coordinate owning operation schemas. pub const GENERATED_ARTIFACT_PROFILE: &str = "echo.dpo.registration/v1"; /// Digest-framing domain for the generated-artifact profile. @@ -846,7 +846,7 @@ pub mod echo_dpo { const MUTATION_RULE_NAME: &str = concat!( "cmd/contract/", - "5da9a9c010e25e4d611f4b5ef319a10168bb66a8027fd811caa37630e16076f7", + "be164fde5fedaf2c3921dbde3013e4ee6b884d085f22802d5e5d0d7134266201", "/3389142194/a.b@1.t" ); const PROVIDER_OPERATIONS: [ProviderOperationV1<'static>; 1] = [ProviderOperationV1 { diff --git a/crates/echo-edict-provider-lowerer/tests/fixtures/generated_echo_dpo.rs b/crates/echo-edict-provider-lowerer/tests/fixtures/generated_echo_dpo.rs index 3d9ddd01..0c7000d7 100644 --- a/crates/echo-edict-provider-lowerer/tests/fixtures/generated_echo_dpo.rs +++ b/crates/echo-edict-provider-lowerer/tests/fixtures/generated_echo_dpo.rs @@ -71,7 +71,7 @@ pub mod echo_dpo { pub const PROVIDER_SCHEMA_COORDINATE: &str = "echo.provider-artifacts.cddl@1"; /// Raw SHA-256 of the exact self-contained provider CDDL bytes. pub const PROVIDER_SCHEMA_SHA256_HEX: &str = - "5da9a9c010e25e4d611f4b5ef319a10168bb66a8027fd811caa37630e16076f7"; + "be164fde5fedaf2c3921dbde3013e4ee6b884d085f22802d5e5d0d7134266201"; /// Exact generated-artifact profile coordinate owning operation schemas. pub const GENERATED_ARTIFACT_PROFILE: &str = "echo.dpo.registration/v1"; /// Digest-framing domain for the generated-artifact profile. @@ -108,7 +108,7 @@ pub mod echo_dpo { const MUTATION_RULE_NAME: &str = concat!( "cmd/contract/", - "5da9a9c010e25e4d611f4b5ef319a10168bb66a8027fd811caa37630e16076f7", + "be164fde5fedaf2c3921dbde3013e4ee6b884d085f22802d5e5d0d7134266201", "/3389142194/a.b@1.t" ); const PROVIDER_OPERATIONS: [ProviderOperationV1<'static>; 1] = [ProviderOperationV1 { diff --git a/crates/echo-edict-provider-lowerer/tests/lowerer_contract.rs b/crates/echo-edict-provider-lowerer/tests/lowerer_contract.rs index 36056339..dca5c06c 100644 --- a/crates/echo-edict-provider-lowerer/tests/lowerer_contract.rs +++ b/crates/echo-edict-provider-lowerer/tests/lowerer_contract.rs @@ -45,7 +45,7 @@ const REVIEW_MEDIA_TYPE: &str = "application/json"; const GENERATED_SOURCE_PATH: &str = "generated/echo_dpo.rs"; const REVIEW_PATH: &str = "review/echo_dpo.json"; const EXPECTED_PROVIDER_SCHEMA_SHA256_HEX: &str = - "5da9a9c010e25e4d611f4b5ef319a10168bb66a8027fd811caa37630e16076f7"; + "be164fde5fedaf2c3921dbde3013e4ee6b884d085f22802d5e5d0d7134266201"; const EXPECTED_OPERATION_ID_LAW: &str = "echo.semantic-operation-id.fnv1-32/v1"; const EXPECTED_OPERATION_ID: u32 = 3_389_142_194; diff --git a/crates/echo-edict-provider-verifier/README.md b/crates/echo-edict-provider-verifier/README.md index 4b78ff5e..8325ac4f 100644 --- a/crates/echo-edict-provider-verifier/README.md +++ b/crates/echo-edict-provider-verifier/README.md @@ -39,14 +39,16 @@ the zero-choice configuration, effect-free Core and Target IR shapes, exact budget and closure bindings, pure-binding result projection, and embedded compiler artifact bytes. It reconstructs the distinct generic pure package without calling the lowerer and rejects canonical package substitution. An -accepted report proves this package relation only; it does not prove runtime -evaluation or an Echo consequence. +accepted report retains a canonical `echo.executable-subject/v1` manifest and +names its domain-framed identity. That subject binds the exact package, Target +IR, and application result projection; it does not prove runtime evaluation, +admission, or an Echo consequence. The `wasm32` guest adapter vendors Edict's exact frozen `edict:target-provider/verifier@1.0.0` WIT world and performs only exhaustive -transport-to-model conversion. Its reproducibly built 297,035-byte checked +transport-to-model conversion. Its reproducibly built 308,859-byte checked component has SHA-256 -`58f9451831338fa39a73d53790fe839037f1a8a1fb5345ffefc334af3ec90413`. +`174cf8758815bf2b9f2ef575517aa6d144ed3f2d1995fc65d25a211b9dea82d9`. Component identity and admitted host replay remain separate propositions: the pinned Edict host preflights the request artifacts and declared output schema, invokes the checked component, then admits and manifests each returned accepted diff --git a/crates/echo-edict-provider-verifier/src/executable_operation.rs b/crates/echo-edict-provider-verifier/src/executable_operation.rs index 59d652c0..802bb3c4 100644 --- a/crates/echo-edict-provider-verifier/src/executable_operation.rs +++ b/crates/echo-edict-provider-verifier/src/executable_operation.rs @@ -33,6 +33,8 @@ const RESULT_PROJECTION_DOMAIN: &str = "edict.result-projection.artifact/v1"; const RESULT_PROJECTION_ABI: &str = "edict.result-projection/v1"; const PACKAGE_DOMAIN: &str = "echo.operation-package/v1"; const PACKAGE_COORDINATE: &str = "executable-operation-package.echo"; +const EXECUTABLE_SUBJECT_DOMAIN: &str = "echo.executable-subject/v1"; +const EXECUTABLE_SUBJECT_COORDINATE: &str = "echo.executable-subject/v1"; const REPORT_DOMAIN: &str = "echo.operation-package-verifier-report/v1"; const REPORT_ROLE: &str = "verifier-report.echo-operation"; const REPORT_ABI: &str = "echo.operation-package-verifier-report/v1"; @@ -1549,6 +1551,78 @@ fn build_report( outcome: &str, diagnostic_bytes: Vec, ) -> Result, ProviderRefusalV1> { + let executable_subject = canonical_sorted_map([ + ("apiVersion", canonical_text(EXECUTABLE_SUBJECT_DOMAIN)), + ( + "applicationResultProjection", + resource_ref_value(result_projection).map_err(|()| { + invalid_artifact( + REPORT_ROLE, + "executable subject result projection reference could not be encoded", + ) + })?, + ), + ( + "package", + resource_ref_value(package).map_err(|()| { + invalid_artifact( + REPORT_ROLE, + "executable subject package reference could not be encoded", + ) + })?, + ), + ( + "targetIr", + resource_ref_value(target_ir).map_err(|()| { + invalid_artifact( + REPORT_ROLE, + "executable subject Target IR reference could not be encoded", + ) + })?, + ), + ]) + .map_err(|()| { + invalid_artifact( + REPORT_ROLE, + "executable subject map could not be constructed", + ) + })?; + let executable_subject_bytes = encode_canonical_cbor_v1(&executable_subject) + .map_err(|_| invalid_artifact(REPORT_ROLE, "executable subject could not be encoded"))?; + let executable_subject_digest = + digest_canonical_value_bytes_v1(EXECUTABLE_SUBJECT_DOMAIN, &executable_subject).map_err( + |_| { + invalid_artifact( + REPORT_ROLE, + "executable subject digest could not be computed", + ) + }, + )?; + let executable_subject_binding = canonical_sorted_map([ + ( + "reference", + resource_ref_value(&super::ResourceRef { + coordinate: EXECUTABLE_SUBJECT_COORDINATE.to_owned(), + digest: super::Digest { + algorithm: DigestAlgorithm::Sha256, + bytes: executable_subject_digest.to_vec(), + }, + }) + .map_err(|()| { + invalid_artifact( + REPORT_ROLE, + "executable subject reference could not be encoded", + ) + })?, + ), + ("bytes", CanonicalValueV1::Bytes(executable_subject_bytes)), + ]) + .map_err(|()| { + invalid_artifact( + REPORT_ROLE, + "executable subject binding could not be constructed", + ) + })?; let report = canonical_sorted_map([ ("apiVersion", canonical_text(REPORT_ABI)), ( @@ -1560,6 +1634,7 @@ fn build_report( ) })?, ), + ("executableSubject", executable_subject_binding), ( "package", resource_ref_value(package).map_err(|()| { diff --git a/crates/echo-edict-provider-verifier/tests/executable_operation_package.rs b/crates/echo-edict-provider-verifier/tests/executable_operation_package.rs index ac853b7a..20cbdd98 100644 --- a/crates/echo-edict-provider-verifier/tests/executable_operation_package.rs +++ b/crates/echo-edict-provider-verifier/tests/executable_operation_package.rs @@ -16,6 +16,7 @@ const PACKAGE_DOMAIN: &str = "echo.operation-package/v1"; const RESULT_PROJECTION_DOMAIN: &str = "edict.result-projection.artifact/v1"; const REPORT_ROLE: &str = "verifier-report.echo-operation"; const REPORT_DOMAIN: &str = "echo.operation-package-verifier-report/v1"; +const EXECUTABLE_SUBJECT_DOMAIN: &str = "echo.executable-subject/v1"; const TARGET_INTRINSIC: &str = "echo.dpo@1.anchored-node-attachment-create-if-absent"; const PRECONDITION_MISMATCH: &str = "echo.executable-operation/precondition-mismatch/v1"; @@ -118,6 +119,7 @@ fn verifier_accepts_generic_lowerer_output_for_two_application_vocabularies() { let report = decode_canonical_cbor_v1(&report.artifact.bytes) .expect("the relation report is canonical"); assert_eq!(text_field(&report, "outcome"), Some("accepted")); + assert_executable_subject_binding(&report); let projection = map_field(&report, "applicationResultProjection"); let expected_projection_coordinate = format!("{}.{}", names.application, names.intent); assert_eq!( @@ -127,6 +129,33 @@ fn verifier_accepts_generic_lowerer_output_for_two_application_vocabularies() { } } +fn assert_executable_subject_binding(report: &CanonicalValueV1) { + let binding = map_field(report, "executableSubject"); + let reference = map_field(binding, "reference"); + assert_eq!(text_field(reference, "id"), Some(EXECUTABLE_SUBJECT_DOMAIN)); + let subject_bytes = match map_field(binding, "bytes") { + CanonicalValueV1::Bytes(bytes) => bytes, + _ => panic!("executable subject bytes must be retained"), + }; + let subject = + decode_canonical_cbor_v1(subject_bytes).expect("the executable subject is canonical"); + assert_eq!( + text_field(&subject, "apiVersion"), + Some(EXECUTABLE_SUBJECT_DOMAIN) + ); + for field in ["applicationResultProjection", "package", "targetIr"] { + assert_eq!(map_field(&subject, field), map_field(report, field)); + } + let expected = digest_canonical_value_bytes_v1(EXECUTABLE_SUBJECT_DOMAIN, &subject) + .expect("the executable subject identity is computable"); + let digest = match map_field(reference, "digest") { + CanonicalValueV1::Array(digest) => digest, + _ => panic!("executable subject digest must be typed"), + }; + assert_eq!(digest[0], CanonicalValueV1::Text("sha256".to_owned())); + assert_eq!(digest[1], CanonicalValueV1::Bytes(expected.to_vec())); +} + #[test] fn verifier_independently_accepts_and_tamper_rejects_generic_pure_packages() { for names in FIXTURES { diff --git a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/components/lowerer.echo-dpo.component.wasm b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/components/lowerer.echo-dpo.component.wasm index 2bfc69513eba917a18745f6bac7f8e992bc84873..fc3489b3a1e72d3d129562fdb1682b4a2d588084 100644 GIT binary patch delta 157 zcmdn@Q()gufrb{w7N#xC^2;5PQVq>a(o#}Q(^69s(~OdhEsYFQl2THQ4GfJ_O;S_M xk}NDtQVc9i(~OKP42)7tQ%zG0Qp^pFO^nRUj0_C7$1i8*;-uV|l^d8vdjK`xF6aON delta 157 zcmdn@Q()gufrb{w7N#xC^2;4eQxYu`Et3rl4N{FvQ%zFL3=Pvvl1x+6j14Ul4Gj#< xERvGU%n~gOjLg$gEDQ~k6BCWi&5R9F4b2S9&C<-b$1i8*;-uV|l^d8vdjO^DExrH% diff --git a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/components/verifier.echo-dpo.component.wasm b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/components/verifier.echo-dpo.component.wasm index 7263d9f21994061fe3fbbd718469c604e12a8540..6f011172a2d89ff90af34011326713fa45245ca4 100644 GIT binary patch delta 63915 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 delta 59373 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 diff --git a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/evidence/provenance.provider-generation.json b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/evidence/provenance.provider-generation.json index 501c7ca7..e4e9b595 100644 --- a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/evidence/provenance.provider-generation.json +++ b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/evidence/provenance.provider-generation.json @@ -1 +1 @@ -{"apiVersion":"wesley.generation-provenance-manifest/v1","contractVersions":{"generatorAbi":"wesley.extension-generator/v1","inputSchema":"wesley.extension-generation-input/v1","provenanceSchema":"wesley.generation-provenance-manifest/v1"},"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:5da9a9c010e25e4d611f4b5ef319a10168bb66a8027fd811caa37630e16076f7"}],"generationInputDigest":"sha256:dbcc90f465d2a461d6fa107b499a16eedfe49ec8c633c247eeedad2d1cd82022","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:5d7784b3fd18223c1e5d8c9089d032b2048a9743b58e2a9f02d4de99541f73a8","version":"0.1.0"},"settingsDigest":"sha256:0f708e76898de6fdb8186352e81d0f5c445adf94bb6c7de9204952d9fe913d4a","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:c663df6dd3d463aad878ae9c3beebf42fe057d7395f91b6d3823d0e0fab77f50"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:6228ebfc8ac9fc21f05d624cccaa731346acfb9203294dbcc767fa4d649fc7e8"}]} \ No newline at end of file +{"apiVersion":"wesley.generation-provenance-manifest/v1","contractVersions":{"generatorAbi":"wesley.extension-generator/v1","inputSchema":"wesley.extension-generation-input/v1","provenanceSchema":"wesley.generation-provenance-manifest/v1"},"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:be164fde5fedaf2c3921dbde3013e4ee6b884d085f22802d5e5d0d7134266201"}],"generationInputDigest":"sha256:dbcc90f465d2a461d6fa107b499a16eedfe49ec8c633c247eeedad2d1cd82022","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:0d60fce10bc16a6909069415b9aa6057328f230a4b0a84b2d56566794f60cc08","version":"0.1.0"},"settingsDigest":"sha256:0f708e76898de6fdb8186352e81d0f5c445adf94bb6c7de9204952d9fe913d4a","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:c663df6dd3d463aad878ae9c3beebf42fe057d7395f91b6d3823d0e0fab77f50"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:6228ebfc8ac9fc21f05d624cccaa731346acfb9203294dbcc767fa4d649fc7e8"}]} \ No newline at end of file diff --git a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/evidence/review.provider-generation.json b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/evidence/review.provider-generation.json index 230defaf..1fc41834 100644 --- a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/evidence/review.provider-generation.json +++ b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/evidence/review.provider-generation.json @@ -1 +1 @@ -{"apiVersion":"wesley.generation-review/v1","authoritative":false,"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:5da9a9c010e25e4d611f4b5ef319a10168bb66a8027fd811caa37630e16076f7"}],"generationInputDigest":"sha256:dbcc90f465d2a461d6fa107b499a16eedfe49ec8c633c247eeedad2d1cd82022","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:5d7784b3fd18223c1e5d8c9089d032b2048a9743b58e2a9f02d4de99541f73a8","version":"0.1.0"},"projectionRoles":["authority-facts.echo-dpo","authority-facts.echo-lawpack","generated-artifact-profile.echo-dpo-registration","lawpack.echo-dpo","schema.echo-provider-artifacts","target-profile.echo-dpo"],"provenanceManifestDigest":"sha256:486e70bf242bddb71cc26e7aaca90b45cf3439decb63a970fc759208e24d7774","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:c663df6dd3d463aad878ae9c3beebf42fe057d7395f91b6d3823d0e0fab77f50"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:6228ebfc8ac9fc21f05d624cccaa731346acfb9203294dbcc767fa4d649fc7e8"}]} \ No newline at end of file +{"apiVersion":"wesley.generation-review/v1","authoritative":false,"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:be164fde5fedaf2c3921dbde3013e4ee6b884d085f22802d5e5d0d7134266201"}],"generationInputDigest":"sha256:dbcc90f465d2a461d6fa107b499a16eedfe49ec8c633c247eeedad2d1cd82022","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:0d60fce10bc16a6909069415b9aa6057328f230a4b0a84b2d56566794f60cc08","version":"0.1.0"},"projectionRoles":["authority-facts.echo-dpo","authority-facts.echo-lawpack","generated-artifact-profile.echo-dpo-registration","lawpack.echo-dpo","schema.echo-provider-artifacts","target-profile.echo-dpo"],"provenanceManifestDigest":"sha256:02e516519f0f765831d41aca41c07215563da0cf8b9c0f4fa17cc1937a1df64d","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:c663df6dd3d463aad878ae9c3beebf42fe057d7395f91b6d3823d0e0fab77f50"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:6228ebfc8ac9fc21f05d624cccaa731346acfb9203294dbcc767fa4d649fc7e8"}]} \ No newline at end of file diff --git a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/primary/schema.echo-provider-artifacts.cddl b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/primary/schema.echo-provider-artifacts.cddl index 3226dc60..b9b351db 100644 --- a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/primary/schema.echo-provider-artifacts.cddl +++ b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/primary/schema.echo-provider-artifacts.cddl @@ -1276,6 +1276,7 @@ echo-attachment-create-if-absent-lowering-configuration = { echo-operation-package-verifier-report = { apiVersion: "echo.operation-package-verifier-report/v1", applicationResultProjection: resource-ref, + executableSubject: echo-bound-executable-subject, package: resource-ref, targetIr: resource-ref, outcome: "accepted" / "rejected", @@ -1283,6 +1284,18 @@ echo-operation-package-verifier-report = { diagnosticBytes: bstr, } +echo-bound-executable-subject = { + reference: resource-ref, + bytes: bstr, +} + +echo-executable-subject = { + apiVersion: "echo.executable-subject/v1", + applicationResultProjection: resource-ref, + package: resource-ref, + targetIr: resource-ref, +} + generated-artifact = { apiVersion: "echo.generated-artifact/v1", profile: resource-ref, diff --git a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/provider-manifest.echo.json b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/provider-manifest.echo.json index 8cb7beee..85365cec 100644 --- a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/provider-manifest.echo.json +++ b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/provider-manifest.echo.json @@ -3,7 +3,7 @@ "providerAbi": "edict:target-provider@1.0.0", "provider": { "coordinate": "echo.edict-provider@1", - "digest": "sha256:319b2f44db2fdc953ab4dd4d7603a60db8c5951cc62a0ac2e6b41797eebcee92" + "digest": "sha256:a4e0d9e31ada5c8c14adfce05fdecb228e5b79545f3574a5e21e7db71ab3f307" }, "artifacts": [ { @@ -21,7 +21,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:5d7784b3fd18223c1e5d8c9089d032b2048a9743b58e2a9f02d4de99541f73a8" + "digest": "sha256:0d60fce10bc16a6909069415b9aa6057328f230a4b0a84b2d56566794f60cc08" } } }, @@ -40,7 +40,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:5d7784b3fd18223c1e5d8c9089d032b2048a9743b58e2a9f02d4de99541f73a8" + "digest": "sha256:0d60fce10bc16a6909069415b9aa6057328f230a4b0a84b2d56566794f60cc08" } } }, @@ -59,7 +59,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:5d7784b3fd18223c1e5d8c9089d032b2048a9743b58e2a9f02d4de99541f73a8" + "digest": "sha256:0d60fce10bc16a6909069415b9aa6057328f230a4b0a84b2d56566794f60cc08" } } }, @@ -78,7 +78,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:5d7784b3fd18223c1e5d8c9089d032b2048a9743b58e2a9f02d4de99541f73a8" + "digest": "sha256:0d60fce10bc16a6909069415b9aa6057328f230a4b0a84b2d56566794f60cc08" } } }, @@ -87,13 +87,13 @@ "artifactKind": "lowerer", "resource": { "coordinate": "echo.dpo.lowerer/component@1", - "digest": "sha256:7d00aa4d4ec63fb81dad318b0165010cd4451f33b3f939f90a0457caf54a46eb" + "digest": "sha256:a4758f060122fba8c073841ccaa22bf0b8a742b495b76eb33c914eff3250dcf5" }, "source": { "kind": "component", "component": { "coordinate": "echo.dpo.lowerer/component@1", - "digest": "sha256:7d00aa4d4ec63fb81dad318b0165010cd4451f33b3f939f90a0457caf54a46eb" + "digest": "sha256:a4758f060122fba8c073841ccaa22bf0b8a742b495b76eb33c914eff3250dcf5" } } }, @@ -102,7 +102,7 @@ "artifactKind": "generationProvenance", "resource": { "coordinate": "echo.edict-provider-generation-provenance@1", - "digest": "sha256:5cde2775374abc62656fbd75b98e51d22aa3857c2dad577222007c187b602bbc" + "digest": "sha256:42ca6d8fe5c04279f5350f2d03cdee55feec5ea5f791b98e64bd3e36fe33468f" }, "source": { "kind": "generated", @@ -112,7 +112,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:5d7784b3fd18223c1e5d8c9089d032b2048a9743b58e2a9f02d4de99541f73a8" + "digest": "sha256:0d60fce10bc16a6909069415b9aa6057328f230a4b0a84b2d56566794f60cc08" } } }, @@ -121,7 +121,7 @@ "artifactKind": "reviewArtifact", "resource": { "coordinate": "echo.edict-provider-generation-review@1", - "digest": "sha256:84c27ba31e5895094e37869ec8bfea49dd083e76fe58dc74cdd7009cb6a44fb1" + "digest": "sha256:eada76ddbf0d7145502814d633482a624d0a3b1c360eef66903f476e3f1a66c2" }, "source": { "kind": "generated", @@ -131,7 +131,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:5d7784b3fd18223c1e5d8c9089d032b2048a9743b58e2a9f02d4de99541f73a8" + "digest": "sha256:0d60fce10bc16a6909069415b9aa6057328f230a4b0a84b2d56566794f60cc08" } } }, @@ -140,7 +140,7 @@ "artifactKind": "artifactSchema", "resource": { "coordinate": "echo.provider-artifacts.cddl@1", - "digest": "sha256:5da9a9c010e25e4d611f4b5ef319a10168bb66a8027fd811caa37630e16076f7" + "digest": "sha256:be164fde5fedaf2c3921dbde3013e4ee6b884d085f22802d5e5d0d7134266201" }, "source": { "kind": "generated", @@ -150,7 +150,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:5d7784b3fd18223c1e5d8c9089d032b2048a9743b58e2a9f02d4de99541f73a8" + "digest": "sha256:0d60fce10bc16a6909069415b9aa6057328f230a4b0a84b2d56566794f60cc08" } } }, @@ -169,7 +169,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:5d7784b3fd18223c1e5d8c9089d032b2048a9743b58e2a9f02d4de99541f73a8" + "digest": "sha256:0d60fce10bc16a6909069415b9aa6057328f230a4b0a84b2d56566794f60cc08" } } }, @@ -178,13 +178,13 @@ "artifactKind": "verifier", "resource": { "coordinate": "echo.dpo.verifier/component@1", - "digest": "sha256:58f9451831338fa39a73d53790fe839037f1a8a1fb5345ffefc334af3ec90413" + "digest": "sha256:174cf8758815bf2b9f2ef575517aa6d144ed3f2d1995fc65d25a211b9dea82d9" }, "source": { "kind": "component", "component": { "coordinate": "echo.dpo.verifier/component@1", - "digest": "sha256:58f9451831338fa39a73d53790fe839037f1a8a1fb5345ffefc334af3ec90413" + "digest": "sha256:174cf8758815bf2b9f2ef575517aa6d144ed3f2d1995fc65d25a211b9dea82d9" } } } diff --git a/crates/echo-wesley-gen/src/provider_artifacts.rs b/crates/echo-wesley-gen/src/provider_artifacts.rs index de3bf0ae..daaee3df 100644 --- a/crates/echo-wesley-gen/src/provider_artifacts.rs +++ b/crates/echo-wesley-gen/src/provider_artifacts.rs @@ -348,6 +348,7 @@ echo-attachment-create-if-absent-lowering-configuration = { echo-operation-package-verifier-report = { apiVersion: "echo.operation-package-verifier-report/v1", applicationResultProjection: resource-ref, + executableSubject: echo-bound-executable-subject, package: resource-ref, targetIr: resource-ref, outcome: "accepted" / "rejected", @@ -355,6 +356,18 @@ echo-operation-package-verifier-report = { diagnosticBytes: bstr, } +echo-bound-executable-subject = { + reference: resource-ref, + bytes: bstr, +} + +echo-executable-subject = { + apiVersion: "echo.executable-subject/v1", + applicationResultProjection: resource-ref, + package: resource-ref, + targetIr: resource-ref, +} + generated-artifact = { apiVersion: "echo.generated-artifact/v1", profile: resource-ref, diff --git a/crates/echo-wesley-gen/tests/provider_package.rs b/crates/echo-wesley-gen/tests/provider_package.rs index 5b161a45..fc913418 100644 --- a/crates/echo-wesley-gen/tests/provider_package.rs +++ b/crates/echo-wesley-gen/tests/provider_package.rs @@ -65,7 +65,7 @@ const SEMANTIC_DIGEST: &str = const RELEASE_DIGEST: &str = "sha256:c39449495281b51f978468d08c21e93bcfa423176063b41675da61e4674b0066"; const PACKAGE_ARTIFACT_SHA256: &str = - "319b2f44db2fdc953ab4dd4d7603a60db8c5951cc62a0ac2e6b41797eebcee92"; + "a4e0d9e31ada5c8c14adfce05fdecb228e5b79545f3574a5e21e7db71ab3f307"; const OTHER_PACKAGE_ARTIFACT_SHA256: &str = "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"; diff --git a/crates/echo-wesley-gen/tests/provider_package_corpus.rs b/crates/echo-wesley-gen/tests/provider_package_corpus.rs index 7c15f49e..2a76e175 100644 --- a/crates/echo-wesley-gen/tests/provider_package_corpus.rs +++ b/crates/echo-wesley-gen/tests/provider_package_corpus.rs @@ -11,9 +11,9 @@ use std::sync::atomic::{AtomicU64, Ordering}; use sha2::{Digest as _, Sha256}; const EXPECTED_PROVIDER_DIGEST: &str = - "sha256:319b2f44db2fdc953ab4dd4d7603a60db8c5951cc62a0ac2e6b41797eebcee92"; + "sha256:a4e0d9e31ada5c8c14adfce05fdecb228e5b79545f3574a5e21e7db71ab3f307"; const EXPECTED_MANIFEST_RAW_SHA256: &str = - "b6687034723e965006b4ffbfe2b1848d4c173ad6528964d060954c75e14e7259"; + "205bdba71fd552316be59079d7509c592b1ac98af7197a119fe56ce12ea0a5f6"; const PACKAGE_PATHS: [&str; 25] = [ "components/lowerer.echo-dpo.component.wasm", diff --git a/schemas/edict-provider/README.md b/schemas/edict-provider/README.md index 7975cd9e..b5e095f8 100644 --- a/schemas/edict-provider/README.md +++ b/schemas/edict-provider/README.md @@ -170,9 +170,9 @@ reproduce all three completed outcomes identically. Both checked components remain uninstalled package material; neither they nor the generated authority-facts documents are runtime Echo authority. The promoted lowerer is 277,694 bytes with SHA-256 -`7d00aa4d4ec63fb81dad318b0165010cd4451f33b3f939f90a0457caf54a46eb`; the -promoted verifier is 297,035 bytes with SHA-256 -`58f9451831338fa39a73d53790fe839037f1a8a1fb5345ffefc334af3ec90413`. +`a4758f060122fba8c073841ccaa22bf0b8a742b495b76eb33c914eff3250dcf5`; the +promoted verifier is 308,859 bytes with SHA-256 +`174cf8758815bf2b9f2ef575517aa6d144ed3f2d1995fc65d25a211b9dea82d9`. The generated provider schema admits both the existing anchored create-if-absent configuration and the exact two-field diff --git a/schemas/edict-provider/components/v1/README.md b/schemas/edict-provider/components/v1/README.md index 99f88d6a..de0792de 100644 --- a/schemas/edict-provider/components/v1/README.md +++ b/schemas/edict-provider/components/v1/README.md @@ -24,7 +24,7 @@ The source WIT is the exact 7,392-byte Edict contract with SHA-256 `2971fe44def7e51d5271dfc0f04f3088aa58754cffdc847681a587605aac749e`. The checked component is 277,694 bytes with SHA-256 -`7d00aa4d4ec63fb81dad318b0165010cd4451f33b3f939f90a0457caf54a46eb`. +`a4758f060122fba8c073841ccaa22bf0b8a742b495b76eb33c914eff3250dcf5`. Its sole contract attestation is the top-level custom section `edict:target-provider-contract` containing `edict:target-provider/lowerer@1.0.0`. Its only imports are the frozen WIT's @@ -35,9 +35,9 @@ capability imports. `verifier.echo-dpo.component.wasm` implements `edict:target-provider/verifier@1.0.0`. It uses the same immutable builder, authenticated Rust/Cargo identities, frozen WIT bytes, path-remapping law, and -`wit-component` version recorded above. Its checked component is 297,035 bytes +`wit-component` version recorded above. Its checked component is 308,859 bytes with SHA-256 -`58f9451831338fa39a73d53790fe839037f1a8a1fb5345ffefc334af3ec90413`. +`174cf8758815bf2b9f2ef575517aa6d144ed3f2d1995fc65d25a211b9dea82d9`. Its sole contract attestation is the top-level custom section `edict:target-provider-contract` containing `edict:target-provider/verifier@1.0.0`. Its only imports are the frozen WIT's diff --git a/schemas/edict-provider/components/v1/lowerer.echo-dpo.component.wasm b/schemas/edict-provider/components/v1/lowerer.echo-dpo.component.wasm index 2bfc69513eba917a18745f6bac7f8e992bc84873..fc3489b3a1e72d3d129562fdb1682b4a2d588084 100644 GIT binary patch delta 157 zcmdn@Q()gufrb{w7N#xC^2;5PQVq>a(o#}Q(^69s(~OdhEsYFQl2THQ4GfJ_O;S_M xk}NDtQVc9i(~OKP42)7tQ%zG0Qp^pFO^nRUj0_C7$1i8*;-uV|l^d8vdjK`xF6aON delta 157 zcmdn@Q()gufrb{w7N#xC^2;4eQxYu`Et3rl4N{FvQ%zFL3=Pvvl1x+6j14Ul4Gj#< xERvGU%n~gOjLg$gEDQ~k6BCWi&5R9F4b2S9&C<-b$1i8*;-uV|l^d8vdjO^DExrH% diff --git a/schemas/edict-provider/components/v1/verifier.echo-dpo.component.wasm b/schemas/edict-provider/components/v1/verifier.echo-dpo.component.wasm index 7263d9f21994061fe3fbbd718469c604e12a8540..6f011172a2d89ff90af34011326713fa45245ca4 100644 GIT binary patch delta 63915 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 delta 59373 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 diff --git a/schemas/edict-provider/generated/v1/evidence/provenance.provider-generation.json b/schemas/edict-provider/generated/v1/evidence/provenance.provider-generation.json index 501c7ca7..e4e9b595 100644 --- a/schemas/edict-provider/generated/v1/evidence/provenance.provider-generation.json +++ b/schemas/edict-provider/generated/v1/evidence/provenance.provider-generation.json @@ -1 +1 @@ -{"apiVersion":"wesley.generation-provenance-manifest/v1","contractVersions":{"generatorAbi":"wesley.extension-generator/v1","inputSchema":"wesley.extension-generation-input/v1","provenanceSchema":"wesley.generation-provenance-manifest/v1"},"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:5da9a9c010e25e4d611f4b5ef319a10168bb66a8027fd811caa37630e16076f7"}],"generationInputDigest":"sha256:dbcc90f465d2a461d6fa107b499a16eedfe49ec8c633c247eeedad2d1cd82022","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:5d7784b3fd18223c1e5d8c9089d032b2048a9743b58e2a9f02d4de99541f73a8","version":"0.1.0"},"settingsDigest":"sha256:0f708e76898de6fdb8186352e81d0f5c445adf94bb6c7de9204952d9fe913d4a","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:c663df6dd3d463aad878ae9c3beebf42fe057d7395f91b6d3823d0e0fab77f50"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:6228ebfc8ac9fc21f05d624cccaa731346acfb9203294dbcc767fa4d649fc7e8"}]} \ No newline at end of file +{"apiVersion":"wesley.generation-provenance-manifest/v1","contractVersions":{"generatorAbi":"wesley.extension-generator/v1","inputSchema":"wesley.extension-generation-input/v1","provenanceSchema":"wesley.generation-provenance-manifest/v1"},"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:be164fde5fedaf2c3921dbde3013e4ee6b884d085f22802d5e5d0d7134266201"}],"generationInputDigest":"sha256:dbcc90f465d2a461d6fa107b499a16eedfe49ec8c633c247eeedad2d1cd82022","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:0d60fce10bc16a6909069415b9aa6057328f230a4b0a84b2d56566794f60cc08","version":"0.1.0"},"settingsDigest":"sha256:0f708e76898de6fdb8186352e81d0f5c445adf94bb6c7de9204952d9fe913d4a","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:c663df6dd3d463aad878ae9c3beebf42fe057d7395f91b6d3823d0e0fab77f50"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:6228ebfc8ac9fc21f05d624cccaa731346acfb9203294dbcc767fa4d649fc7e8"}]} \ No newline at end of file diff --git a/schemas/edict-provider/generated/v1/evidence/review.provider-generation.json b/schemas/edict-provider/generated/v1/evidence/review.provider-generation.json index 230defaf..1fc41834 100644 --- a/schemas/edict-provider/generated/v1/evidence/review.provider-generation.json +++ b/schemas/edict-provider/generated/v1/evidence/review.provider-generation.json @@ -1 +1 @@ -{"apiVersion":"wesley.generation-review/v1","authoritative":false,"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:5da9a9c010e25e4d611f4b5ef319a10168bb66a8027fd811caa37630e16076f7"}],"generationInputDigest":"sha256:dbcc90f465d2a461d6fa107b499a16eedfe49ec8c633c247eeedad2d1cd82022","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:5d7784b3fd18223c1e5d8c9089d032b2048a9743b58e2a9f02d4de99541f73a8","version":"0.1.0"},"projectionRoles":["authority-facts.echo-dpo","authority-facts.echo-lawpack","generated-artifact-profile.echo-dpo-registration","lawpack.echo-dpo","schema.echo-provider-artifacts","target-profile.echo-dpo"],"provenanceManifestDigest":"sha256:486e70bf242bddb71cc26e7aaca90b45cf3439decb63a970fc759208e24d7774","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:c663df6dd3d463aad878ae9c3beebf42fe057d7395f91b6d3823d0e0fab77f50"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:6228ebfc8ac9fc21f05d624cccaa731346acfb9203294dbcc767fa4d649fc7e8"}]} \ No newline at end of file +{"apiVersion":"wesley.generation-review/v1","authoritative":false,"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:be164fde5fedaf2c3921dbde3013e4ee6b884d085f22802d5e5d0d7134266201"}],"generationInputDigest":"sha256:dbcc90f465d2a461d6fa107b499a16eedfe49ec8c633c247eeedad2d1cd82022","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:0d60fce10bc16a6909069415b9aa6057328f230a4b0a84b2d56566794f60cc08","version":"0.1.0"},"projectionRoles":["authority-facts.echo-dpo","authority-facts.echo-lawpack","generated-artifact-profile.echo-dpo-registration","lawpack.echo-dpo","schema.echo-provider-artifacts","target-profile.echo-dpo"],"provenanceManifestDigest":"sha256:02e516519f0f765831d41aca41c07215563da0cf8b9c0f4fa17cc1937a1df64d","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:c663df6dd3d463aad878ae9c3beebf42fe057d7395f91b6d3823d0e0fab77f50"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:6228ebfc8ac9fc21f05d624cccaa731346acfb9203294dbcc767fa4d649fc7e8"}]} \ No newline at end of file diff --git a/schemas/edict-provider/generated/v1/primary/schema.echo-provider-artifacts.cddl b/schemas/edict-provider/generated/v1/primary/schema.echo-provider-artifacts.cddl index 3226dc60..b9b351db 100644 --- a/schemas/edict-provider/generated/v1/primary/schema.echo-provider-artifacts.cddl +++ b/schemas/edict-provider/generated/v1/primary/schema.echo-provider-artifacts.cddl @@ -1276,6 +1276,7 @@ echo-attachment-create-if-absent-lowering-configuration = { echo-operation-package-verifier-report = { apiVersion: "echo.operation-package-verifier-report/v1", applicationResultProjection: resource-ref, + executableSubject: echo-bound-executable-subject, package: resource-ref, targetIr: resource-ref, outcome: "accepted" / "rejected", @@ -1283,6 +1284,18 @@ echo-operation-package-verifier-report = { diagnosticBytes: bstr, } +echo-bound-executable-subject = { + reference: resource-ref, + bytes: bstr, +} + +echo-executable-subject = { + apiVersion: "echo.executable-subject/v1", + applicationResultProjection: resource-ref, + package: resource-ref, + targetIr: resource-ref, +} + generated-artifact = { apiVersion: "echo.generated-artifact/v1", profile: resource-ref, diff --git a/schemas/edict-provider/package/v1/components/lowerer.echo-dpo.component.wasm b/schemas/edict-provider/package/v1/components/lowerer.echo-dpo.component.wasm index 2bfc69513eba917a18745f6bac7f8e992bc84873..fc3489b3a1e72d3d129562fdb1682b4a2d588084 100644 GIT binary patch delta 157 zcmdn@Q()gufrb{w7N#xC^2;5PQVq>a(o#}Q(^69s(~OdhEsYFQl2THQ4GfJ_O;S_M xk}NDtQVc9i(~OKP42)7tQ%zG0Qp^pFO^nRUj0_C7$1i8*;-uV|l^d8vdjK`xF6aON delta 157 zcmdn@Q()gufrb{w7N#xC^2;4eQxYu`Et3rl4N{FvQ%zFL3=Pvvl1x+6j14Ul4Gj#< xERvGU%n~gOjLg$gEDQ~k6BCWi&5R9F4b2S9&C<-b$1i8*;-uV|l^d8vdjO^DExrH% diff --git a/schemas/edict-provider/package/v1/components/verifier.echo-dpo.component.wasm b/schemas/edict-provider/package/v1/components/verifier.echo-dpo.component.wasm index 7263d9f21994061fe3fbbd718469c604e12a8540..6f011172a2d89ff90af34011326713fa45245ca4 100644 GIT binary patch delta 63915 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 delta 59373 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 diff --git a/schemas/edict-provider/package/v1/generated/evidence/provenance.provider-generation.json b/schemas/edict-provider/package/v1/generated/evidence/provenance.provider-generation.json index 501c7ca7..e4e9b595 100644 --- a/schemas/edict-provider/package/v1/generated/evidence/provenance.provider-generation.json +++ b/schemas/edict-provider/package/v1/generated/evidence/provenance.provider-generation.json @@ -1 +1 @@ -{"apiVersion":"wesley.generation-provenance-manifest/v1","contractVersions":{"generatorAbi":"wesley.extension-generator/v1","inputSchema":"wesley.extension-generation-input/v1","provenanceSchema":"wesley.generation-provenance-manifest/v1"},"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:5da9a9c010e25e4d611f4b5ef319a10168bb66a8027fd811caa37630e16076f7"}],"generationInputDigest":"sha256:dbcc90f465d2a461d6fa107b499a16eedfe49ec8c633c247eeedad2d1cd82022","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:5d7784b3fd18223c1e5d8c9089d032b2048a9743b58e2a9f02d4de99541f73a8","version":"0.1.0"},"settingsDigest":"sha256:0f708e76898de6fdb8186352e81d0f5c445adf94bb6c7de9204952d9fe913d4a","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:c663df6dd3d463aad878ae9c3beebf42fe057d7395f91b6d3823d0e0fab77f50"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:6228ebfc8ac9fc21f05d624cccaa731346acfb9203294dbcc767fa4d649fc7e8"}]} \ No newline at end of file +{"apiVersion":"wesley.generation-provenance-manifest/v1","contractVersions":{"generatorAbi":"wesley.extension-generator/v1","inputSchema":"wesley.extension-generation-input/v1","provenanceSchema":"wesley.generation-provenance-manifest/v1"},"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:be164fde5fedaf2c3921dbde3013e4ee6b884d085f22802d5e5d0d7134266201"}],"generationInputDigest":"sha256:dbcc90f465d2a461d6fa107b499a16eedfe49ec8c633c247eeedad2d1cd82022","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:0d60fce10bc16a6909069415b9aa6057328f230a4b0a84b2d56566794f60cc08","version":"0.1.0"},"settingsDigest":"sha256:0f708e76898de6fdb8186352e81d0f5c445adf94bb6c7de9204952d9fe913d4a","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:c663df6dd3d463aad878ae9c3beebf42fe057d7395f91b6d3823d0e0fab77f50"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:6228ebfc8ac9fc21f05d624cccaa731346acfb9203294dbcc767fa4d649fc7e8"}]} \ No newline at end of file diff --git a/schemas/edict-provider/package/v1/generated/evidence/review.provider-generation.json b/schemas/edict-provider/package/v1/generated/evidence/review.provider-generation.json index 230defaf..1fc41834 100644 --- a/schemas/edict-provider/package/v1/generated/evidence/review.provider-generation.json +++ b/schemas/edict-provider/package/v1/generated/evidence/review.provider-generation.json @@ -1 +1 @@ -{"apiVersion":"wesley.generation-review/v1","authoritative":false,"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:5da9a9c010e25e4d611f4b5ef319a10168bb66a8027fd811caa37630e16076f7"}],"generationInputDigest":"sha256:dbcc90f465d2a461d6fa107b499a16eedfe49ec8c633c247eeedad2d1cd82022","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:5d7784b3fd18223c1e5d8c9089d032b2048a9743b58e2a9f02d4de99541f73a8","version":"0.1.0"},"projectionRoles":["authority-facts.echo-dpo","authority-facts.echo-lawpack","generated-artifact-profile.echo-dpo-registration","lawpack.echo-dpo","schema.echo-provider-artifacts","target-profile.echo-dpo"],"provenanceManifestDigest":"sha256:486e70bf242bddb71cc26e7aaca90b45cf3439decb63a970fc759208e24d7774","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:c663df6dd3d463aad878ae9c3beebf42fe057d7395f91b6d3823d0e0fab77f50"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:6228ebfc8ac9fc21f05d624cccaa731346acfb9203294dbcc767fa4d649fc7e8"}]} \ No newline at end of file +{"apiVersion":"wesley.generation-review/v1","authoritative":false,"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:be164fde5fedaf2c3921dbde3013e4ee6b884d085f22802d5e5d0d7134266201"}],"generationInputDigest":"sha256:dbcc90f465d2a461d6fa107b499a16eedfe49ec8c633c247eeedad2d1cd82022","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:0d60fce10bc16a6909069415b9aa6057328f230a4b0a84b2d56566794f60cc08","version":"0.1.0"},"projectionRoles":["authority-facts.echo-dpo","authority-facts.echo-lawpack","generated-artifact-profile.echo-dpo-registration","lawpack.echo-dpo","schema.echo-provider-artifacts","target-profile.echo-dpo"],"provenanceManifestDigest":"sha256:02e516519f0f765831d41aca41c07215563da0cf8b9c0f4fa17cc1937a1df64d","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:c663df6dd3d463aad878ae9c3beebf42fe057d7395f91b6d3823d0e0fab77f50"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:6228ebfc8ac9fc21f05d624cccaa731346acfb9203294dbcc767fa4d649fc7e8"}]} \ No newline at end of file diff --git a/schemas/edict-provider/package/v1/generated/primary/schema.echo-provider-artifacts.cddl b/schemas/edict-provider/package/v1/generated/primary/schema.echo-provider-artifacts.cddl index 3226dc60..b9b351db 100644 --- a/schemas/edict-provider/package/v1/generated/primary/schema.echo-provider-artifacts.cddl +++ b/schemas/edict-provider/package/v1/generated/primary/schema.echo-provider-artifacts.cddl @@ -1276,6 +1276,7 @@ echo-attachment-create-if-absent-lowering-configuration = { echo-operation-package-verifier-report = { apiVersion: "echo.operation-package-verifier-report/v1", applicationResultProjection: resource-ref, + executableSubject: echo-bound-executable-subject, package: resource-ref, targetIr: resource-ref, outcome: "accepted" / "rejected", @@ -1283,6 +1284,18 @@ echo-operation-package-verifier-report = { diagnosticBytes: bstr, } +echo-bound-executable-subject = { + reference: resource-ref, + bytes: bstr, +} + +echo-executable-subject = { + apiVersion: "echo.executable-subject/v1", + applicationResultProjection: resource-ref, + package: resource-ref, + targetIr: resource-ref, +} + generated-artifact = { apiVersion: "echo.generated-artifact/v1", profile: resource-ref, diff --git a/schemas/edict-provider/package/v1/provider-manifest.echo.json b/schemas/edict-provider/package/v1/provider-manifest.echo.json index 8cb7beee..85365cec 100644 --- a/schemas/edict-provider/package/v1/provider-manifest.echo.json +++ b/schemas/edict-provider/package/v1/provider-manifest.echo.json @@ -3,7 +3,7 @@ "providerAbi": "edict:target-provider@1.0.0", "provider": { "coordinate": "echo.edict-provider@1", - "digest": "sha256:319b2f44db2fdc953ab4dd4d7603a60db8c5951cc62a0ac2e6b41797eebcee92" + "digest": "sha256:a4e0d9e31ada5c8c14adfce05fdecb228e5b79545f3574a5e21e7db71ab3f307" }, "artifacts": [ { @@ -21,7 +21,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:5d7784b3fd18223c1e5d8c9089d032b2048a9743b58e2a9f02d4de99541f73a8" + "digest": "sha256:0d60fce10bc16a6909069415b9aa6057328f230a4b0a84b2d56566794f60cc08" } } }, @@ -40,7 +40,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:5d7784b3fd18223c1e5d8c9089d032b2048a9743b58e2a9f02d4de99541f73a8" + "digest": "sha256:0d60fce10bc16a6909069415b9aa6057328f230a4b0a84b2d56566794f60cc08" } } }, @@ -59,7 +59,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:5d7784b3fd18223c1e5d8c9089d032b2048a9743b58e2a9f02d4de99541f73a8" + "digest": "sha256:0d60fce10bc16a6909069415b9aa6057328f230a4b0a84b2d56566794f60cc08" } } }, @@ -78,7 +78,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:5d7784b3fd18223c1e5d8c9089d032b2048a9743b58e2a9f02d4de99541f73a8" + "digest": "sha256:0d60fce10bc16a6909069415b9aa6057328f230a4b0a84b2d56566794f60cc08" } } }, @@ -87,13 +87,13 @@ "artifactKind": "lowerer", "resource": { "coordinate": "echo.dpo.lowerer/component@1", - "digest": "sha256:7d00aa4d4ec63fb81dad318b0165010cd4451f33b3f939f90a0457caf54a46eb" + "digest": "sha256:a4758f060122fba8c073841ccaa22bf0b8a742b495b76eb33c914eff3250dcf5" }, "source": { "kind": "component", "component": { "coordinate": "echo.dpo.lowerer/component@1", - "digest": "sha256:7d00aa4d4ec63fb81dad318b0165010cd4451f33b3f939f90a0457caf54a46eb" + "digest": "sha256:a4758f060122fba8c073841ccaa22bf0b8a742b495b76eb33c914eff3250dcf5" } } }, @@ -102,7 +102,7 @@ "artifactKind": "generationProvenance", "resource": { "coordinate": "echo.edict-provider-generation-provenance@1", - "digest": "sha256:5cde2775374abc62656fbd75b98e51d22aa3857c2dad577222007c187b602bbc" + "digest": "sha256:42ca6d8fe5c04279f5350f2d03cdee55feec5ea5f791b98e64bd3e36fe33468f" }, "source": { "kind": "generated", @@ -112,7 +112,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:5d7784b3fd18223c1e5d8c9089d032b2048a9743b58e2a9f02d4de99541f73a8" + "digest": "sha256:0d60fce10bc16a6909069415b9aa6057328f230a4b0a84b2d56566794f60cc08" } } }, @@ -121,7 +121,7 @@ "artifactKind": "reviewArtifact", "resource": { "coordinate": "echo.edict-provider-generation-review@1", - "digest": "sha256:84c27ba31e5895094e37869ec8bfea49dd083e76fe58dc74cdd7009cb6a44fb1" + "digest": "sha256:eada76ddbf0d7145502814d633482a624d0a3b1c360eef66903f476e3f1a66c2" }, "source": { "kind": "generated", @@ -131,7 +131,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:5d7784b3fd18223c1e5d8c9089d032b2048a9743b58e2a9f02d4de99541f73a8" + "digest": "sha256:0d60fce10bc16a6909069415b9aa6057328f230a4b0a84b2d56566794f60cc08" } } }, @@ -140,7 +140,7 @@ "artifactKind": "artifactSchema", "resource": { "coordinate": "echo.provider-artifacts.cddl@1", - "digest": "sha256:5da9a9c010e25e4d611f4b5ef319a10168bb66a8027fd811caa37630e16076f7" + "digest": "sha256:be164fde5fedaf2c3921dbde3013e4ee6b884d085f22802d5e5d0d7134266201" }, "source": { "kind": "generated", @@ -150,7 +150,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:5d7784b3fd18223c1e5d8c9089d032b2048a9743b58e2a9f02d4de99541f73a8" + "digest": "sha256:0d60fce10bc16a6909069415b9aa6057328f230a4b0a84b2d56566794f60cc08" } } }, @@ -169,7 +169,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:5d7784b3fd18223c1e5d8c9089d032b2048a9743b58e2a9f02d4de99541f73a8" + "digest": "sha256:0d60fce10bc16a6909069415b9aa6057328f230a4b0a84b2d56566794f60cc08" } } }, @@ -178,13 +178,13 @@ "artifactKind": "verifier", "resource": { "coordinate": "echo.dpo.verifier/component@1", - "digest": "sha256:58f9451831338fa39a73d53790fe839037f1a8a1fb5345ffefc334af3ec90413" + "digest": "sha256:174cf8758815bf2b9f2ef575517aa6d144ed3f2d1995fc65d25a211b9dea82d9" }, "source": { "kind": "component", "component": { "coordinate": "echo.dpo.verifier/component@1", - "digest": "sha256:58f9451831338fa39a73d53790fe839037f1a8a1fb5345ffefc334af3ec90413" + "digest": "sha256:174cf8758815bf2b9f2ef575517aa6d144ed3f2d1995fc65d25a211b9dea82d9" } } } diff --git a/xtask/src/provider_lowerer_component.rs b/xtask/src/provider_lowerer_component.rs index c537aebb..4935a3b0 100644 --- a/xtask/src/provider_lowerer_component.rs +++ b/xtask/src/provider_lowerer_component.rs @@ -53,7 +53,7 @@ const PINNED_CARGO_COMMIT: &str = "840b83a10fb0e039a83f4d70ad032892c287570a"; /// Reviewed identity that the portable promotion command is permitted to install. pub(crate) const APPROVED_CHECKED_COMPONENT_SHA256: &str = - "7d00aa4d4ec63fb81dad318b0165010cd4451f33b3f939f90a0457caf54a46eb"; + "a4758f060122fba8c073841ccaa22bf0b8a742b495b76eb33c914eff3250dcf5"; pub(crate) const CHECKED_COMPONENT_REPOSITORY_PATH: &str = "schemas/edict-provider/components/v1/lowerer.echo-dpo.component.wasm"; @@ -62,7 +62,7 @@ pub(crate) const VERIFIER_CHECKED_COMPONENT_REPOSITORY_PATH: &str = "schemas/edict-provider/components/v1/verifier.echo-dpo.component.wasm"; /// Approved SHA-256 identity of the checked verifier component. pub(crate) const APPROVED_CHECKED_VERIFIER_COMPONENT_SHA256: &str = - "58f9451831338fa39a73d53790fe839037f1a8a1fb5345ffefc334af3ec90413"; + "174cf8758815bf2b9f2ef575517aa6d144ed3f2d1995fc65d25a211b9dea82d9"; #[derive(Clone, Copy, Debug, Eq, PartialEq)] struct ProviderComponentSpec { From f8323f2c1738a00441b66ff01250d9f47478c636 Mon Sep 17 00:00:00 2001 From: James Ross Date: Sun, 23 Aug 2026 19:31:11 -0700 Subject: [PATCH 6/8] Admit nominal Edict Core contracts --- CHANGELOG.md | 4 ++++ crates/echo-edict-provider-lowerer/src/lib.rs | 4 ++-- .../tests/fixtures/generated_echo_dpo.rs | 4 ++-- .../tests/lowerer_contract.rs | 2 +- .../v1/edict-provider-contracts.cddl | 8 ++++++- .../edict-provider/contracts/v1/manifest.json | 4 ++-- .../provenance.provider-generation.json | 2 +- .../evidence/review.provider-generation.json | 2 +- .../schema.echo-provider-artifacts.cddl | 8 ++++++- .../package/v1/provider-manifest.echo.json | 24 +++++++++---------- .../src/provider_contract_pack.rs | 6 ++--- .../tests/provider_contract_pack.rs | 4 ++-- schemas/edict-provider/contracts/v1/README.md | 2 +- .../v1/edict-provider-contracts.cddl | 8 ++++++- .../edict-provider/contracts/v1/manifest.json | 4 ++-- .../provenance.provider-generation.json | 2 +- .../evidence/review.provider-generation.json | 2 +- .../schema.echo-provider-artifacts.cddl | 8 ++++++- .../provenance.provider-generation.json | 2 +- .../evidence/review.provider-generation.json | 2 +- .../schema.echo-provider-artifacts.cddl | 8 ++++++- .../package/v1/provider-manifest.echo.json | 24 +++++++++---------- 22 files changed, 84 insertions(+), 50 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d36f0166..7d09a7aa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ ### Added +- The checked Edict provider contract now admits generic nominal Core types as + exact contract coordinates over bounded storage representations. The + regenerated provider package remains application-neutral and adds no Jim, + buffer, head, rope, or range vocabulary to Echo. - The checked Edict provider package now admits the exact contract pack from Edict #201, including source-ordered generic pure Target IR bindings and compiler-owned pure-binding result projections. Echo pins the new source and diff --git a/crates/echo-edict-provider-lowerer/src/lib.rs b/crates/echo-edict-provider-lowerer/src/lib.rs index da0cca2c..20972e95 100644 --- a/crates/echo-edict-provider-lowerer/src/lib.rs +++ b/crates/echo-edict-provider-lowerer/src/lib.rs @@ -809,7 +809,7 @@ pub mod echo_dpo { pub const PROVIDER_SCHEMA_COORDINATE: &str = "echo.provider-artifacts.cddl@1"; /// Raw SHA-256 of the exact self-contained provider CDDL bytes. pub const PROVIDER_SCHEMA_SHA256_HEX: &str = - "be164fde5fedaf2c3921dbde3013e4ee6b884d085f22802d5e5d0d7134266201"; + "95f1de04b947f5d1e75d3c73bf6482977e996ee63c4cd2ed8b37f0fd325fd081"; /// Exact generated-artifact profile coordinate owning operation schemas. pub const GENERATED_ARTIFACT_PROFILE: &str = "echo.dpo.registration/v1"; /// Digest-framing domain for the generated-artifact profile. @@ -846,7 +846,7 @@ pub mod echo_dpo { const MUTATION_RULE_NAME: &str = concat!( "cmd/contract/", - "be164fde5fedaf2c3921dbde3013e4ee6b884d085f22802d5e5d0d7134266201", + "95f1de04b947f5d1e75d3c73bf6482977e996ee63c4cd2ed8b37f0fd325fd081", "/3389142194/a.b@1.t" ); const PROVIDER_OPERATIONS: [ProviderOperationV1<'static>; 1] = [ProviderOperationV1 { diff --git a/crates/echo-edict-provider-lowerer/tests/fixtures/generated_echo_dpo.rs b/crates/echo-edict-provider-lowerer/tests/fixtures/generated_echo_dpo.rs index 0c7000d7..c58ad956 100644 --- a/crates/echo-edict-provider-lowerer/tests/fixtures/generated_echo_dpo.rs +++ b/crates/echo-edict-provider-lowerer/tests/fixtures/generated_echo_dpo.rs @@ -71,7 +71,7 @@ pub mod echo_dpo { pub const PROVIDER_SCHEMA_COORDINATE: &str = "echo.provider-artifacts.cddl@1"; /// Raw SHA-256 of the exact self-contained provider CDDL bytes. pub const PROVIDER_SCHEMA_SHA256_HEX: &str = - "be164fde5fedaf2c3921dbde3013e4ee6b884d085f22802d5e5d0d7134266201"; + "95f1de04b947f5d1e75d3c73bf6482977e996ee63c4cd2ed8b37f0fd325fd081"; /// Exact generated-artifact profile coordinate owning operation schemas. pub const GENERATED_ARTIFACT_PROFILE: &str = "echo.dpo.registration/v1"; /// Digest-framing domain for the generated-artifact profile. @@ -108,7 +108,7 @@ pub mod echo_dpo { const MUTATION_RULE_NAME: &str = concat!( "cmd/contract/", - "be164fde5fedaf2c3921dbde3013e4ee6b884d085f22802d5e5d0d7134266201", + "95f1de04b947f5d1e75d3c73bf6482977e996ee63c4cd2ed8b37f0fd325fd081", "/3389142194/a.b@1.t" ); const PROVIDER_OPERATIONS: [ProviderOperationV1<'static>; 1] = [ProviderOperationV1 { diff --git a/crates/echo-edict-provider-lowerer/tests/lowerer_contract.rs b/crates/echo-edict-provider-lowerer/tests/lowerer_contract.rs index dca5c06c..874ec86e 100644 --- a/crates/echo-edict-provider-lowerer/tests/lowerer_contract.rs +++ b/crates/echo-edict-provider-lowerer/tests/lowerer_contract.rs @@ -45,7 +45,7 @@ const REVIEW_MEDIA_TYPE: &str = "application/json"; const GENERATED_SOURCE_PATH: &str = "generated/echo_dpo.rs"; const REVIEW_PATH: &str = "review/echo_dpo.json"; const EXPECTED_PROVIDER_SCHEMA_SHA256_HEX: &str = - "be164fde5fedaf2c3921dbde3013e4ee6b884d085f22802d5e5d0d7134266201"; + "95f1de04b947f5d1e75d3c73bf6482977e996ee63c4cd2ed8b37f0fd325fd081"; const EXPECTED_OPERATION_ID_LAW: &str = "echo.semantic-operation-id.fnv1-32/v1"; const EXPECTED_OPERATION_ID: u32 = 3_389_142_194; diff --git a/crates/echo-wesley-gen/assets/v1/edict-provider/contracts/v1/edict-provider-contracts.cddl b/crates/echo-wesley-gen/assets/v1/edict-provider/contracts/v1/edict-provider-contracts.cddl index 54d52121..0d4204fd 100644 --- a/crates/echo-wesley-gen/assets/v1/edict-provider/contracts/v1/edict-provider-contracts.cddl +++ b/crates/echo-wesley-gen/assets/v1/edict-provider/contracts/v1/edict-provider-contracts.cddl @@ -111,7 +111,8 @@ core-import = { core-type = core-scalar-type / core-record-type / core-variant-type / core-option-type / core-list-type / core-map-type / - core-capability-ref-type / core-external-action-request-type + core-capability-ref-type / core-external-action-request-type / + core-nominal-type core-scalar-type = core-bool-type / core-int-type / core-string-type / core-bytes-type / core-unit-type @@ -131,6 +132,11 @@ core-bytes-type = { ? min: uint, max: uint, } +core-nominal-type = { + kind: "Nominal", + contract: tstr, + representation: core-type-ref, +} core-record-type = { kind: "Record", fields: { * tstr => core-type-ref }, diff --git a/crates/echo-wesley-gen/assets/v1/edict-provider/contracts/v1/manifest.json b/crates/echo-wesley-gen/assets/v1/edict-provider/contracts/v1/manifest.json index 6ba0fbab..0a4fe2b2 100644 --- a/crates/echo-wesley-gen/assets/v1/edict-provider/contracts/v1/manifest.json +++ b/crates/echo-wesley-gen/assets/v1/edict-provider/contracts/v1/manifest.json @@ -3,8 +3,8 @@ "coordinate": "edict.provider-contract-pack.cddl@1", "license": "Apache-2.0", "schema": { - "bytesHex": "3b20535044582d4c6963656e73652d4964656e7469666965723a204170616368652d322e300a3b2065646963742d70726f76696465722d636f6e7472616374732e6364646c0a3b2047656e6572617465642066726f6d2045646963742d6f776e65642041424920667261676d656e74732e20444f204e4f5420454449542e0a0a3b202d2d2d2065646963742d636f6d6d6f6e2e6364646c202d2d2d0a3b2065646963742d636f6d6d6f6e2e6364646c0a3b20536861726564204344444c20747970657320666f722074686520456469637420414249732c20646566696e6564204f4e4345206865726520736f20746865792063616e6e6f742064726966740a3b202845444943542d4142492d4e4f4455502d303031292e2054776f2067726f7570733a0a3b2020202d207265736f757263652d7265662c207368613235362d6469676573742c206566666563742d6661696c7572652d626f64792c206566666563742d6b696e642c20617574686f726974792d636c6173732c0a3b2020202020636f72652d747970652d7265663a20617373656d626c656420776974682065646963742d7461726765742d70726f66696c652e6364646c20616e640a3b202020202065646963742d6c61777061636b2e6364646c20627920746865206275696c643b2074686f736520736368656d617320646f206e6f74207265646566696e65207468656d2e0a3b2020202d206f7065726174696f6e2d70726f66696c652c206f707469632d74656d706c6174652c2061706572747572652d726571756972656d656e7420616e6420746865697220726566733a0a3b2020202020636f6e73756d65642062792074686520436f72652f6f70746963206c61796572202865646963742d636f72652e6364646c2920616e64207265666572656e636564206279207468650a3b20202020206c616e67756167652f7461726765742d70726f66696c652073706563732e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a0a3b2041206e6f726d617469766520737562636f6d706f6e656e74207265666572656e636564206279206964656e7469747920706c7573206469676573742e204d616e696665737473206e657665720a3b20656d626564207468656972206f776e2073656c662d64696765737420696e20746865697220707265696d616765202845444943542d434f52452d53454c46484153482d303031292e0a7265736f757263652d726566203d207b2069643a20747374722c206469676573743a207368613235362d646967657374207d0a0a3b20446967657374732061726520617574686f726974617469766520617320747970656420627974652076616c7565732c206e657665722068657820737472696e67732e20526576696577204a534f4e0a3b2072656e64657273207468697320617320227368613235363a3c3634206c6f77657263617365206865783e22202845444943542d4449474553542d574952452d303031292e0a7368613235362d646967657374203d205b20616c676f726974686d3a2022736861323536222c2062797465733a2062737472202e73697a65203332205d0a0a3b2041206e616d6564206c6f772d6c6576656c206661696c75726520616e206566666563742063616e2072616973652e2054686520736f75726365206f62737472756374696f6e206d61700a3b2062696e64732069742028627920636f6f7264696e6174652920616e6420636f6e73747275637473206120747970656420646f6d61696e206f62737472756374696f6e2066726f6d206974730a3b207061796c6f6164202845444943542d4142492d4641494c5552452d4e414d45442d303031292e0a3b20416e20656666656374277320606566666563744661696c7572657360206c697374204d555354206861766520756e697175652060636f6f7264696e61746560733a2073696e6365207468650a3b206f62737472756374696f6e206d6170206973206b6579656420627920636f6f7264696e6174652c2074776f206661696c757265732073686172696e67206120636f6f7264696e61746520286576656e0a3b207769746820646966666572656e7420617574686f72697479436c6173732f7061796c6f61645479706529206d616b652065786861757374697665206d617070696e6720616e642062696e6465720a3b20747970696e6720616d626967756f757320616e64206172652072656a6563746564202845444943542d4142492d4641494c5552452d554e495155452d303031292e0a3b0a3b2045666665637473206361727279207468656972206661696c757265732061732061206d617020607b206661696c7572652d6964656e74203d3e206566666563742d6661696c7572652d626f6479207d600a3b202873656520746865207461726765742f6c61777061636b2065666665637420736368656d6173292e20546865206661696c75726520636f6f7264696e61746520697320746865206d61700a3b204b45592c20736f206974206973206e6f7420726570656174656420696e2074686520626f647920616e642063616e6e6f74206469736167726565207769746820746865206b65792e0a6566666563742d6661696c7572652d626f6479203d207b0a2020617574686f72697479436c6173733a20617574686f726974792d636c6173732c0a20207061796c6f6164547970653a20636f72652d747970652d7265662c202020202020202020202020203b2074797065642c20626f756e64656420286d617920626520656d707479207265636f7264290a7d0a0a3b2041206661696c75726520636f6f7264696e617465206d7573742062652061206261726520456469637420606964656e746020286c65747465722f756e64657273636f7265207468656e0a3b206c6574746572732f6469676974732f756e64657273636f7265732920414e44206d757374206e6f742062652061207265736572766564206b6579776f72642028652e672e2060656c7365602c0a3b20606261736973602c20607768657265602c206072657175697265602c2060666f72602c2060696660292e2054686520736f75726365206f62737472756374696f6e2d6d6170204c4853206f6e6c790a3b20616363657074732061206e6f6e2d6b6579776f726420606964656e74602c20736f20612068797068656e2f646f742f6b6579776f726420636f6f7264696e61746520776f756c642062650a3b204142492d76616c69642079657420696d706f737369626c6520746f206d617020657868617573746976656c7920696e20736f757263652e20546865207265676578206361707475726573207468650a3b206c65786963616c2073686170653b206b6579776f7264206578636c7573696f6e20697320616e206164646974696f6e616c2076616c69646174696f6e2072756c650a3b202845444943542d4142492d4641494c5552452d4944454e542d303031292e0a6661696c7572652d6964656e74203d2074737472202e72656765787020225b412d5a612d7a5f5d5b412d5a612d7a302d395f5d2a220a0a6566666563742d6b696e64203d20227265616422202f202263726561746522202f2022656e7375726522202f20227265706c61636522202f202264656c65746522202f0a202020202020202020202020202022617070656e6422202f202272656475636522202f202273656d616e7469632e656d697422202f2022637573746f6d220a0a617574686f726974792d636c617373203d2022646f6d61696e4d61707061626c6522202f20227061727469636970616e744f776e656422202f2022696e746567726974794661756c7422202f0a202020202020202020202020202020202020227265736f757263654661756c7422202f2022696e7465726e616c4661756c74220a0a636f72652d747970652d726566203d20747374722020203b2063616e6f6e6963616c20436f7265207479706520636f6f7264696e6174650a0a3b20416e206f7065726174696f6e2070726f66696c6520737570706c69657320746865206f707469632074656d706c617465206120436f726520696e74656e74207265736f6c766573206974730a3b206f707469634b696e642f626f756e646172794b696e642f737570706f7274506f6c6963792f6c6f7373446973706f736974696f6e2066726f6d2e205461726765742070726f66696c657320616e640a3b206c61777061636b73207075626c6973682074686573652061732061206d617020607b20636f6f7264696e617465203d3e206f7065726174696f6e2d70726f66696c65207d602c20736f207468650a3b20636f6f7264696e61746520697320746865204b45592c206e6f7420612076616c7565206669656c64202845444943542d4f505449432d54454d504c4154452d4f574e45522d3030312c0a3b2045444943542d4142492d4f5050524f46494c452d554e495155452d303031292e0a6f7065726174696f6e2d70726f66696c65203d207b0a20206f7074696354656d706c6174653a206f707469632d74656d706c6174652c0a20206566666563745072656469636174653a20747374722c20202020202020202020203b20636f6f7264696e617465206f6620746865206f7065726174696f6e2d6d6f6465207072656469636174650a7d0a0a6f707469632d74656d706c617465203d207b0a20206f707469634b696e643a2022726576656c6174696f6e22202f20226166666563745265696e746567726174696f6e222c0a2020626f756e646172794b696e643a202270726f6a656374696f6e22202f2022616666656374222c0a2020737570706f7274506f6c6963793a20747374722c202020202020202020202020203b2063616e6f6e6963616c20737570706f72742d706f6c69637920636f6f7264696e6174650a20206c6f7373446973706f736974696f6e3a20747374722c20202020202020202020203b2063616e6f6e6963616c206c6f73732d646973706f736974696f6e20636f6f7264696e6174650a20203f20626173697354656d706c6174653a20747374722c20202020202020202020203b206f7074696f6e616c206469676573742d6c6f636b65642062617369732074656d706c61746520636f6f72640a20203b2074686520617065727475726520726571756972656d656e7420746869732074656d706c61746520737570706c6965732e205265717569726564207768656e207468652074656d706c6174650a20203b2069732074686520736f75726365206f66206120436f7265206f707469632773206170657274757265526571756972656d656e742028692e652e2074686520696e74656e7420686173206e6f0a20203b20736f757263652060666f6f747072696e74203c3d202e2e2e60292c2073696e6365206170657274757265526571756972656d656e74206973206d616e6461746f727920696e20436f72650a20203b202845444943542d4f505449432d41504552545552452d5245462d303031292e0a20203f206170657274757265526571756972656d656e743a2061706572747572652d726571756972656d656e742c0a7d0a0a3b206170657274757265526571756972656d656e742069732061207479706564207265666572656e63652c206e65766572206120667265652d666f726d20737472696e672e2041207265766965770a3b2072656e646572696e67206d61792073686f772069747320636f6f7264696e617465202845444943542d4f505449432d41504552545552452d5245462d303031292e0a61706572747572652d726571756972656d656e74203d20666f6f747072696e742d6365696c696e672d726566202f2061627374726163742d666f6f747072696e742d6f626c69676174696f6e2d7265660a666f6f747072696e742d6365696c696e672d726566203d207b206b696e643a2022666f6f747072696e744365696c696e67222c207265663a2074737472207d0a61627374726163742d666f6f747072696e742d6f626c69676174696f6e2d726566203d207b206b696e643a20226162737472616374466f6f747072696e744f626c69676174696f6e222c207265663a2074737472207d0a0a3b202d2d2d2065646963742d636f72652e6364646c202d2d2d0a3b2065646963742d636f72652e6364646c0a3b204e6f726d617469766520736368656d6120666f722074686520456469637420436f72652076312073656d616e746963206d6f64656c2e0a3b0a3b2053636f706520626f756e646172793a20746869732066696c6520646566696e657320436f7265206d65616e696e6720616e6420736368656d61207368617065206f6e6c792e20497420646f65730a3b206e6f7420646566696e6520612063616e6f6e6963616c20656e636f6465722c20436f7265206d6f64756c652068617368206669656c64732c20686173682066697874757265732c207461726765740a3b206c6f776572696e672c2061646d697373696f6e2062756e646c65732c206f72207461726765742d6f776e65642049522e0a0a636f72652d6d6f64756c65203d207b0a202061706956657273696f6e3a202265646963742e636f72652f7631222c0a2020636f6f7264696e6174653a20747374722c0a2020696d706f7274733a205b2a20636f72652d696d706f72745d2c0a202074797065733a207b202a2074737472203d3e20636f72652d74797065207d2c0a2020696e74656e74733a207b202b2074737472203d3e20636f72652d696e74656e74207d2c0a20207265717569726564436f72654361706162696c69746965733a205b2a20747374725d2c0a7d0a0a636f72652d696d706f7274203d207b0a20206b696e643a20226c61777061636b22202f202274617267657422202f2022636f726522202f20226361706162696c697479222c0a20207265663a207265736f757263652d7265662c0a20203f20616c6961733a20747374722c0a7d0a0a3b202d2d2d207479706573202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a636f72652d74797065203d20636f72652d7363616c61722d74797065202f20636f72652d7265636f72642d74797065202f20636f72652d76617269616e742d74797065202f0a202020202020202020202020636f72652d6f7074696f6e2d74797065202f20636f72652d6c6973742d74797065202f20636f72652d6d61702d74797065202f0a202020202020202020202020636f72652d6361706162696c6974792d7265662d74797065202f20636f72652d65787465726e616c2d616374696f6e2d726571756573742d747970650a0a636f72652d7363616c61722d74797065203d20636f72652d626f6f6c2d74797065202f20636f72652d696e742d74797065202f20636f72652d737472696e672d74797065202f0a20202020202020202020202020202020202020636f72652d62797465732d74797065202f20636f72652d756e69742d747970650a0a636f72652d626f6f6c2d74797065203d207b206b696e643a2022426f6f6c22207d0a636f72652d756e69742d74797065203d207b206b696e643a2022556e697422207d0a636f72652d696e742d74797065203d207b0a20206b696e643a202249363422202f202255363422202f202249333222202f202255333222202f202249313622202f202255313622202f2022493822202f20225538222c0a7d0a636f72652d737472696e672d74797065203d207b0a20206b696e643a2022537472696e67222c0a20206d61783a2075696e742c0a202063616e6f6e6963616c3a2022756e69636f64652d7363616c61722d6e666322202f20227261772d75746638222c0a7d0a636f72652d62797465732d74797065203d207b0a20206b696e643a20224279746573222c0a20203f206d696e3a2075696e742c0a20206d61783a2075696e742c0a7d0a636f72652d7265636f72642d74797065203d207b0a20206b696e643a20225265636f7264222c0a20206669656c64733a207b202a2074737472203d3e20636f72652d747970652d726566207d2c0a7d0a636f72652d76617269616e742d74797065203d207b0a20206b696e643a202256617269616e74222c0a202063617365733a207b202b2074737472203d3e2076617269616e742d636173652d626f6479207d2c0a7d0a76617269616e742d636173652d626f6479203d207b0a20203f207061796c6f61643a20636f72652d747970652d7265662c0a7d0a636f72652d6f7074696f6e2d74797065203d207b0a20206b696e643a20224f7074696f6e222c0a20206974656d3a20636f72652d747970652d7265662c0a7d0a636f72652d6c6973742d74797065203d207b0a20206b696e643a20224c697374222c0a20206974656d3a20636f72652d747970652d7265662c0a20206d61783a2075696e742c0a7d0a636f72652d6d61702d74797065203d207b0a20206b696e643a20224d6170222c0a20206b65793a20636f72652d747970652d7265662c0a202076616c75653a20636f72652d747970652d7265662c0a20206d61783a2075696e742c0a7d0a636f72652d6361706162696c6974792d7265662d74797065203d207b0a20206b696e643a20224361706162696c697479526566222c0a20206974656d3a20636f72652d747970652d7265662c0a7d0a636f72652d65787465726e616c2d616374696f6e2d726571756573742d74797065203d207b0a20206b696e643a202245787465726e616c416374696f6e52657175657374222c0a2020736574746c656d656e743a20636f72652d747970652d7265662c0a7d0a0a3b20636f72652d747970652d72656620697320646566696e656420696e2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d612e0a0a3b202d2d2d207265666572656e63657320616e642076616c756573202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a3b204c6f63616c206964656e7469747920697320616c7068612d737461626c652e20606964602069732074686520636f6d70696c65722d6f776e6564206c6f63616c20636f6f7264696e6174653b0a3b2060616c7068614e616d656020697320746865206e6f726d616c697a65642068756d616e2f6465627567206e616d652e20536f757263652062696e646572207370656c6c696e67206973206e6f740a3b206964656e746974792e0a6c6f63616c2d726566203d207b0a202069643a20747374722c0a2020616c7068614e616d653a20747374722c0a2020747970653a20636f72652d747970652d7265662c0a7d0a0a636f72652d76616c7565203d20636f72652d6e756c6c2d76616c7565202f20636f72652d626f6f6c2d76616c7565202f20636f72652d696e742d76616c7565202f0a20202020202020202020202020636f72652d737472696e672d76616c7565202f20636f72652d62797465732d76616c7565202f20636f72652d7265636f72642d76616c7565202f0a20202020202020202020202020636f72652d76617269616e742d76616c7565202f20636f72652d6c6973742d76616c7565202f20636f72652d6d61702d76616c7565202f0a20202020202020202020202020636f72652d6361706162696c6974792d76616c75650a0a636f72652d6e756c6c2d76616c7565203d207b206b696e643a20226e756c6c22207d0a636f72652d626f6f6c2d76616c7565203d207b206b696e643a2022626f6f6c222c2076616c75653a20626f6f6c207d0a636f72652d696e742d76616c7565203d207b206b696e643a2022696e74222c2077696474683a20747374722c2076616c75653a20696e74207d0a636f72652d737472696e672d76616c7565203d207b206b696e643a2022737472696e67222c2076616c75653a2074737472207d0a636f72652d62797465732d76616c7565203d207b206b696e643a20226279746573222c2076616c75653a2062737472207d0a636f72652d7265636f72642d76616c7565203d207b206b696e643a20227265636f7264222c206669656c64733a207b202a2074737472203d3e20636f72652d76616c7565207d207d0a636f72652d76617269616e742d76616c7565203d207b0a20206b696e643a202276617269616e74222c0a2020747970653a20636f72652d747970652d7265662c0a2020636173653a20747374722c0a20203f207061796c6f61643a20636f72652d76616c75652c0a7d0a636f72652d6c6973742d76616c7565203d207b206b696e643a20226c697374222c2076616c7565733a205b2a20636f72652d76616c75655d207d0a636f72652d6d61702d76616c7565203d207b206b696e643a20226d6170222c20656e74726965733a205b2a205b6b65793a20636f72652d76616c75652c2076616c75653a20636f72652d76616c75655d5d207d0a636f72652d6361706162696c6974792d76616c7565203d207b0a20206b696e643a20226361706162696c697479222c0a2020726563656970743a207368613235362d6469676573742c0a7d0a0a3b2045646963742d617574686f72656420707572652068656c70657273207573652061207075726520436f72652066756e6374696f6e20626f64792e2054686520626f64792063616e2062696e640a3b20707572652065787072657373696f6e7320616e642072657475726e20616e2065787072657373696f6e2c206275742069742063616e6e6f7420636f6e7461696e20436f7265206566666563742c0a3b2067756172642c206272616e63682c206c6f6f702c206d617463682d6e6f64652c206f722070726f6f662d6f626c69676174696f6e206e6f6465732e0a636f72652d666e2d626f6479203d207b0a2020706172616d733a205b2a206c6f63616c2d7265665d2c0a2020626f64793a20636f72652d707572652d626c6f636b2c0a7d0a0a636f72652d707572652d626c6f636b203d207b0a20206c6f63616c733a205b2a206c6f63616c2d7265665d2c0a202062696e64696e67733a205b2a20707572652d6c65742d6e6f64655d2c0a2020726573756c743a20636f72652d657870722c0a7d0a0a707572652d6c65742d6e6f6465203d207b0a20206b696e643a20226c6574222c0a202062696e64696e673a206c6f63616c2d7265662c0a202076616c75653a20636f72652d657870722c0a7d0a0a3b202d2d2d2065787072657373696f6e7320616e642070726564696361746573202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a636f72652d65787072203d206c6f63616c2d65787072202f20636f6e73742d65787072202f207265636f72642d65787072202f206669656c642d65787072202f0a20202020202020202020202076617269616e742d65787072202f206d617463682d65787072202f2063616c6c2d65787072202f206c6973742d65787072202f206d61702d65787072202f0a20202020202020202020202069662d657870720a0a6c6f63616c2d65787072203d207b206b696e643a20226c6f63616c222c207265663a206c6f63616c2d726566207d0a636f6e73742d65787072203d207b206b696e643a2022636f6e7374222c2076616c75653a20636f72652d76616c7565207d0a7265636f72642d65787072203d207b206b696e643a20227265636f7264222c206669656c64733a207b202a2074737472203d3e20636f72652d65787072207d207d0a6669656c642d65787072203d207b206b696e643a20226669656c64222c20626173653a20636f72652d657870722c206669656c643a2074737472207d0a76617269616e742d65787072203d207b0a20206b696e643a202276617269616e74222c0a2020747970653a20636f72652d747970652d7265662c0a2020636173653a20747374722c0a20203f207061796c6f61643a20636f72652d657870722c0a7d0a6d617463682d65787072203d207b0a20206b696e643a20226d61746368222c0a20207363727574696e65653a20636f72652d657870722c0a202061726d733a205b2b206d617463682d61726d5d2c0a7d0a6d617463682d61726d203d207b0a2020636173653a20747374722c0a20203f2062696e6465723a206c6f63616c2d7265662c0a2020626f64793a20636f72652d657870722c0a7d0a63616c6c2d65787072203d207b0a20206b696e643a202263616c6c222c0a202063616c6c65653a20747374722c0a202074797065417267733a205b2a20636f72652d747970652d7265665d2c0a2020617267733a205b2a20636f72652d657870725d2c0a7d0a6c6973742d65787072203d207b206b696e643a20226c697374222c2076616c7565733a205b2a20636f72652d657870725d207d0a6d61702d65787072203d207b206b696e643a20226d6170222c20656e74726965733a205b2a205b6b65793a20636f72652d657870722c2076616c75653a20636f72652d657870725d5d207d0a69662d65787072203d207b0a20206b696e643a20226966222c0a20207072656469636174653a20636f72652d7072656469636174652c0a20207468656e3a20636f72652d657870722c0a2020656c73653a20636f72652d657870722c0a7d0a0a636f72652d707265646963617465203d20747275652d707265646963617465202f2066616c73652d707265646963617465202f206e6f742d707265646963617465202f0a2020202020202020202020202020202020616c6c2d707265646963617465202f20616e792d707265646963617465202f20636f6d706172652d707265646963617465202f0a202020202020202020202020202020202063616c6c2d707265646963617465202f206f62737472756374696f6e2d7072656469636174650a0a747275652d707265646963617465203d207b206b696e643a20227472756522207d0a66616c73652d707265646963617465203d207b206b696e643a202266616c736522207d0a6e6f742d707265646963617465203d207b206b696e643a20226e6f74222c2076616c75653a20636f72652d707265646963617465207d0a616c6c2d707265646963617465203d207b206b696e643a2022616c6c222c2076616c7565733a205b2b20636f72652d7072656469636174655d207d0a616e792d707265646963617465203d207b206b696e643a2022616e79222c2076616c7565733a205b2b20636f72652d7072656469636174655d207d0a636f6d706172652d707265646963617465203d207b0a20206b696e643a2022636f6d70617265222c0a20206f703a20223d3d22202f2022213d22202f20223c22202f20223c3d22202f20223e22202f20223e3d222c0a20206c6566743a20636f72652d657870722c0a202072696768743a20636f72652d657870722c0a7d0a63616c6c2d707265646963617465203d207b0a20206b696e643a202263616c6c222c0a20207072656469636174653a20747374722c0a2020617267733a205b2a20636f72652d657870725d2c0a7d0a6f62737472756374696f6e2d707265646963617465203d207b0a20206b696e643a20226f62737472756374696f6e222c0a2020636f6f7264696e6174653a206661696c7572652d6964656e742c0a20207061796c6f61643a20636f72652d657870722c0a7d0a0a696e7075742d636f6e73747261696e74203d207b0a2020636f6f7264696e6174653a20747374722c0a2020736f757263653a2022776865726522202f2022636f6d70696c6572222c0a20207072656469636174653a20636f72652d7072656469636174652c0a7d0a0a3b202d2d2d20696e74656e74732c20626c6f636b732c20616e64206e6f646573202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a636f72652d696e74656e74203d207b0a2020696e7075743a20636f72652d747970652d7265662c0a20206f75747075743a20636f72652d747970652d7265662c0a202072657175697265644f7065726174696f6e50726f66696c653a20747374722c0a20203f2062617369733a20636f72652d657870722c0a2020696e707574436f6e73747261696e74733a205b2a20696e7075742d636f6e73747261696e745d2c0a2020636f72654576616c756174696f6e4275646765743a20636f72652d6275646765742c0a2020626f64793a20636f72652d626c6f636b2c0a20203f206f707469633a20636f72652d6f707469632c0a7d0a0a636f72652d627564676574203d207b0a20206d617853746570733a2075696e742c0a20206d6178416c6c6f636174656442797465733a2075696e742c0a20206d61784f757470757442797465733a2075696e742c0a7d0a0a636f72652d6f70746963203d207b0a20206f707469634b696e643a2022726576656c6174696f6e22202f20226166666563745265696e746567726174696f6e222c0a2020626f756e646172794b696e643a202270726f6a656374696f6e22202f2022616666656374222c0a20206170657274757265526571756972656d656e743a2061706572747572652d726571756972656d656e742c0a2020737570706f7274506f6c6963793a20747374722c0a20206c6f7373446973706f736974696f6e3a20747374722c0a7d0a0a636f72652d626c6f636b203d207b0a20206c6f63616c733a205b2a206c6f63616c2d7265665d2c0a20206e6f6465733a205b2a20636f72652d6e6f64655d2c0a2020726573756c743a20636f72652d657870722c0a7d0a0a636f72652d6e6f6465203d206c65742d6e6f6465202f20726571756972652d6e6f6465202f206566666563742d6e6f6465202f0a20202020202020202020202065787465726e616c2d616374696f6e2d726571756573742d6e6f6465202f2067756172642d6e6f6465202f206272616e63682d6e6f6465202f0a202020202020202020202020666f722d6e6f6465202f206d617463682d6e6f6465202f2070726f6f662d6f626c69676174696f6e2d6e6f64650a0a6c65742d6e6f6465203d207b0a20206b696e643a20226c6574222c0a202062696e64696e673a206c6f63616c2d7265662c0a202076616c75653a20636f72652d657870722c0a7d0a726571756972652d6e6f6465203d207b0a20206b696e643a202272657175697265222c0a20207072656469636174653a20636f72652d7072656469636174652c0a20206f6e4661696c7572653a20726571756972652d6661696c7572652d61726d2c0a7d0a726571756972652d6661696c7572652d61726d203d207465726d696e616c2d726571756972652d6661696c757265202f0a20202020202020202020202020202020202020202020636f6e74696e75652d6f6273747275637465642d726571756972652d6661696c7572650a7465726d696e616c2d726571756972652d6661696c757265203d207b0a20206b696e643a20227465726d696e616c222c0a2020726561736f6e3a206f62737472756374696f6e2d726561736f6e2c0a7d0a636f6e74696e75652d6f6273747275637465642d726571756972652d6661696c757265203d207b0a20206b696e643a2022636f6e74696e75654f627374727563746564222c0a2020726561736f6e3a206f62737472756374696f6e2d726561736f6e2c0a7d0a6f62737472756374696f6e2d726561736f6e203d207b0a2020726561736f6e4b696e643a20747374722c0a20207061796c6f61643a207b202a2074737472203d3e20636f72652d65787072207d2c0a7d0a6566666563742d6e6f6465203d207b0a20206b696e643a2022656666656374222c0a202062696e64696e673a206c6f63616c2d7265662c0a20206566666563743a20747374722c0a2020696e7075743a20636f72652d657870722c0a20206f62737472756374696f6e4d61703a207b202a206661696c7572652d6964656e74203d3e206f62737472756374696f6e2d61726d207d2c0a7d0a65787465726e616c2d616374696f6e2d726571756573742d6e6f6465203d207b0a20206b696e643a202265787465726e616c416374696f6e52657175657374222c0a202062696e64696e673a206c6f63616c2d7265662c0a20206f7065726174696f6e3a207265736f757263652d7265662c0a2020696e707574547970653a20636f72652d747970652d7265662c0a2020736574746c656d656e74547970653a20636f72652d747970652d7265662c0a2020696e707574536368656d613a207265736f757263652d7265662c0a2020736574746c656d656e74536368656d613a207265736f757263652d7265662c0a2020696e7075743a20636f72652d657870722c0a2020617574686f7269747953636f70653a20636f72652d657870722c0a202062617369733a20636f72652d657870722c0a20206275646765743a2065787465726e616c2d616374696f6e2d6275646765742c0a20207265636f6e63696c696174696f6e4c61773a207265736f757263652d7265662c0a202073746174653a20226177616974696e67536574746c656d656e74222c0a2020736574746c656d656e7441646d697373696f6e3a2022736368656d615265717569726564222c0a7d0a65787465726e616c2d616374696f6e2d627564676574203d207b0a20206d6178536574746c656d656e7442797465733a20636f72652d657870722c0a20206d6178417474656d7074733a20636f72652d657870722c0a7d0a6f62737472756374696f6e2d61726d203d207b0a202062696e6465723a206c6f63616c2d7265662c0a202076616c75653a20636f72652d657870722c0a7d0a67756172642d6e6f6465203d207b0a20206b696e643a20226775617264222c0a20207072656469636174653a20636f72652d7072656469636174652c0a20206f62737472756374696f6e3a20636f72652d657870722c0a7d0a6272616e63682d6e6f6465203d207b0a20206b696e643a20226272616e6368222c0a20203f2062696e64696e673a206c6f63616c2d7265662c0a20207072656469636174653a20636f72652d7072656469636174652c0a20207468656e3a20636f72652d626c6f636b2c0a2020656c73653a20636f72652d626c6f636b2c0a7d0a666f722d6e6f6465203d207b0a20206b696e643a2022666f72222c0a202062696e6465723a206c6f63616c2d7265662c0a2020697465723a20636f72652d657870722c0a2020626f756e643a20636f72652d626f756e642c0a2020626f64793a20636f72652d626c6f636b2c0a7d0a6d617463682d6e6f6465203d207b0a20206b696e643a20226d61746368222c0a20207363727574696e65653a20636f72652d657870722c0a202061726d733a205b2b206d617463682d626c6f636b2d61726d5d2c0a7d0a6d617463682d626c6f636b2d61726d203d207b0a2020636173653a20747374722c0a20203f2062696e6465723a206c6f63616c2d7265662c0a2020626f64793a20636f72652d626c6f636b2c0a7d0a70726f6f662d6f626c69676174696f6e2d6e6f6465203d207b0a20206b696e643a202270726f6f66222c0a2020636f6f7264696e6174653a20747374722c0a20207072656469636174653a20636f72652d7072656469636174652c0a7d0a0a636f72652d626f756e64203d206c69746572616c2d626f756e64202f20636f6f7264696e6174652d626f756e640a6c69746572616c2d626f756e64203d207b206b696e643a20226c69746572616c222c2076616c75653a2075696e74207d0a636f6f7264696e6174652d626f756e64203d207b206b696e643a2022636f6f7264696e617465222c207265663a2074737472207d0a0a3b20536861726564207265736f757263652d7265662c207368613235362d6469676573742c206661696c7572652d6964656e742c2061706572747572652d726571756972656d656e742c20616e640a3b20636f72652d747970652d7265662061726520646566696e6564206f6e636520696e2065646963742d636f6d6d6f6e2e6364646c2e0a0a3b202d2d2d2065646963742d6c61777061636b2e6364646c202d2d2d0a3b2065646963742d6c61777061636b2e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f7220746865204564696374206c61777061636b206d616e696665737420616e64206578706f727420737572666163652e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e204a534f4e20696e207468652070726f73652073706563730a3b2069732061207265766965772072656e646572696e672067656e6572617465642066726f6d207468697320736368656d61202845444943542d4142492d4e4f4455502d303031292e0a0a6c61777061636b2d6d616e6966657374203d207b0a202061706956657273696f6e3a202265646963742e6c61777061636b2f7631222c0a202069643a20747374722c0a202076657273696f6e3a20747374722c0a20206163636570746564436f72654162693a205b2b20747374725d2c0a2020646570656e64656e636965733a205b2a206c61777061636b2d6465705d2c202020202020202020203b20616379636c69632c206469676573742d6c6f636b6564202845444943542d4c41575041434b2d4441472d303031290a20206578706f7274733a207265736f757263652d7265662c0a20203f2074617267657441646170746572733a205b2b207461726765742d616461707465725d2c2020203b207265717569726564206f6e6c7920696620616e792072756e74696d6520656666656374206578697374730a20203f2068656c706572436f6d706f6e656e743a2065786563757461626c652d636f6d706f6e656e742c203b2065786563757461626c652068656c70657273206361727279207468656972206f776e2073616e64626f782b6675656c0a202076657269666965723a2076657269666965722c202020202020202020202020202020202020202020203b20636c61737369666965643a206465636c61726174697665206f722065786563757461626c650a2020636f6d7061746962696c6974793a207265736f757263652d7265662c0a2020636f6e666f726d616e636546697874757265436f727075733a207265736f757263652d7265662c0a7d0a0a3b2041207665726966696572206973206569746865722061206465636c617261746976652072756c6573657420286e6f2072756e74696d6529206f7220616e2065786563757461626c650a3b20636f6d706f6e656e742e20416e2065786563757461626c65207665726966696572204d55535420636172727920697473206f776e2073616e64626f7820616e64206675656c206d6f64656c2c0a3b20736f2074686520736368656d6120656e666f726365732074686174206e6f2065786563757461626c6520636f6d706f6e656e74206973206c65667420756e626f756e6465640a3b202845444943542d4142492d56455249464945522d424f554e442d303031292e0a7665726966696572203d206465636c617261746976652d7665726966696572202f2065786563757461626c652d76657269666965720a6465636c617261746976652d7665726966696572203d207b20636c6173733a20226465636c61726174697665222c2072756c657365743a207265736f757263652d726566207d0a65786563757461626c652d7665726966696572203d207b0a2020636c6173733a202265786563757461626c65222c0a2020636f6d706f6e656e743a207265736f757263652d7265662c0a202073616e64626f783a207265736f757263652d7265662c0a20206675656c4d6f64656c3a207265736f757263652d7265662c0a7d0a0a3b20416e792065786563757461626c6520636f6d706f6e656e7420697320626f756e64656420627920697473206f776e2073616e64626f78202b206675656c206d6f64656c2e0a65786563757461626c652d636f6d706f6e656e74203d207b0a2020636f6d706f6e656e743a207265736f757263652d7265662c0a202073616e64626f783a207265736f757263652d7265662c0a20206675656c4d6f64656c3a207265736f757263652d7265662c0a7d0a0a6c61777061636b2d646570203d207b2069643a20747374722c2076657273696f6e3a20747374722c206469676573743a207368613235362d646967657374207d0a0a3b20416461707465722073656c656374696f6e206b65797320534f4c454c59206f666620746865206469676573742d6c6f636b65642060616363657074656454617267657450726f66696c65600a3b20286974732060696460206973207468652070726f66696c652069643b206974732060646967657374602070696e73207468652065786163742070726f66696c652f76657273696f6e292e2054686572650a3b20617265206e6f20696e646570656e64656e7420646973706c617920737472696e6773207468617420636f756c64206469736167726565207769746820746865206c6f636b2c20736f20610a3b207265736f6c7665722063616e6e6f742062696e6420616e206164617074657220746f206f6e6520746172676574207768696c6520746865206c6f636b2070726f76657320616e6f746865720a3b202845444943542d4c41575041434b2d414441505445522d54415247455449522d303031292e0a7461726765742d61646170746572203d207b0a2020616363657074656454617267657450726f66696c653a207265736f757263652d7265662c202020203b206469676573742d6c6f636b65642c20617574686f72697461746976652073656c6563746f720a2020616363657074656454617267657449723a207265736f757263652d7265662c2020202020202020203b206469676573742d6c6f636b65640a2020616461707465723a207265736f757263652d7265662c0a7d0a0a3b20536861726564207479706573207265736f757263652d72656620616e64207368613235362d6469676573742061726520646566696e6564206f6e636520696e0a3b2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d61202845444943542d4142492d4e4f4455502d303031292e0a0a3b202d2d2d206578706f72742073757266616365202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a6c61777061636b2d6578706f727473203d207b0a202074797065733a205b2a206578706f727465642d747970655d2c0a2020636f6e7374616e74733a205b2a206578706f727465642d636f6e7374616e745d2c0a20207075726546756e6374696f6e733a205b2a20707572652d66756e6374696f6e5d2c0a2020656666656374733a205b2a2073656d616e7469632d6566666563745d2c0a20206f62737472756374696f6e733a205b2a206f62737472756374696f6e2d6465665d2c0a20203b206b65796564206279206f7065726174696f6e2d70726f66696c6520636f6f7264696e61746520e2869220756e697175656e65737320656e666f726365640a20203b202845444943542d4142492d4f5050524f46494c452d554e495155452d303031290a20203b206f7065726174696f6e2d70726f66696c65207265636f7264732074686973206c61777061636b206578706f72747320286f707469632074656d706c6174657320746861740a20203b2060696d706c656d656e7473602f6070726f66696c656020636c6175736573207265736f6c766520616761696e7374292e206f7065726174696f6e2d70726f66696c652069730a20203b20646566696e656420696e2065646963742d636f6d6d6f6e2e6364646c202845444943542d4142492d4f5050524f46494c452d534c4f542d303031292e0a20206f7065726174696f6e50726f66696c65733a207b202a2074737472203d3e206f7065726174696f6e2d70726f66696c65207d2c20203b206b6579656420627920636f6f7264696e6174650a7d0a0a6578706f727465642d7479706520202020203d207b20636f6f7264696e6174653a20747374722c20646566696e6974696f6e3a20636f72652d747970652d726566207d0a6578706f727465642d636f6e7374616e74203d207b20636f6f7264696e6174653a20747374722c20747970653a20636f72652d747970652d7265662c2076616c75653a20616e79207d0a0a3b204120707572652068656c7065722069732061206469736372696d696e6174656420756e696f6e2062792060736f75726365602c20736f2074686520736368656d6120697473656c660a3b2067756172616e7465657320616e20696d706c656d656e746174696f6e20657869737473202845444943542d4c41575041434b2d505552452d494d504c2d303031293a0a3b2020202d20226564696374223a20617574686f72656420696e2045646963742f436f72653b2074686520436f726520626f6479206973206361727269656420696e6c696e6520286861736865640a3b20202020207769746820746865206578706f72742073757266616365292e2054686520736368656d61207265717569726573207468652060626f647960206669656c642e0a3b2020202d2022636f6d706f6e656e74223a20696d706c656d656e746564206f7574736964652045646963743b2063617272696573206e6f20696e6c696e6520626f647920616e6420696e73746561640a3b20202020206361727269657320697473206f776e206469676573742d6c6f636b65642060696d706c656d656e746174696f6e60202873616e64626f78202b206675656c292e20497420646f65730a3b20202020206e6f7420646570656e64206f6e20746865206f7074696f6e616c206d616e69666573742d6c6576656c2068656c706572436f6d706f6e656e742e0a707572652d66756e6374696f6e203d2065646963742d707572652d66756e6374696f6e202f20636f6d706f6e656e742d707572652d66756e6374696f6e0a0a707572652d66756e6374696f6e2d636f6d6d6f6e203d20280a2020636f6f7264696e6174653a20747374722c0a202074797065506172616d65746572733a205b2a20747374725d2c0a2020706172616d6574657254797065733a205b2a20636f72652d747970652d7265665d2c2020202020203b20616c6c20626f756e6465640a202072657475726e547970653a20636f72652d747970652d7265662c20202020202020202020202020203b20626f756e6465640a2020636f737454656d706c6174653a20747374722c0a202064657465726d696e69736d436c6173733a2022746f74616c22202f2022746f74616c2d776974682d74797065642d646961676e6f73746963222c0a290a0a65646963742d707572652d66756e6374696f6e203d207b0a2020707572652d66756e6374696f6e2d636f6d6d6f6e2c0a2020736f757263653a20226564696374222c0a2020626f64793a20636f72652d666e2d626f64792c2020202020202020202020202020202020202020203b20696e6c696e652c20686173682d7369676e69666963616e740a7d0a0a636f6d706f6e656e742d707572652d66756e6374696f6e203d207b0a2020707572652d66756e6374696f6e2d636f6d6d6f6e2c0a2020736f757263653a2022636f6d706f6e656e74222c0a20203b20746865206469676573742d6c6f636b656420636f6d706f6e656e7420696d706c656d656e74696e6720746869732068656c7065722e2052657175697265642061742074686520736368656d610a20203b206c6576656c20736f206120636f6d706f6e656e742068656c7065722063616e206e657665722076616c696461746520776974686f7574206120686173682d626f756e642c0a20203b2073616e64626f782b6675656c2d64657363726962656420696d706c656d656e746174696f6e202845444943542d4c41575041434b2d505552452d494d504c2d303031292e0a2020696d706c656d656e746174696f6e3a2065786563757461626c652d636f6d706f6e656e742c0a7d0a0a3b20636f72652d666e2d626f647920697320646566696e65642062792065646963742d636f72652e6364646c20616e6420617373656d626c656420776974682074686973206c61777061636b0a3b20736368656d612e2049742069732061207075726520436f72652066756e6374696f6e20626f64792c206e6f7420616e206566666563742d63617061626c6520636f72652d626c6f636b2e0a0a73656d616e7469632d656666656374203d207b0a2020636f6f7264696e6174653a20747374722c0a202074797065506172616d65746572733a205b2a20747374725d2c0a2020696e707574547970653a20636f72652d747970652d7265662c2020202020202020202020202020203b20626f756e6465640a20206f7574707574547970653a20636f72652d747970652d7265662c20202020202020202020202020203b20626f756e6465640a2020657865637574696f6e436c6173733a202270726f6f664f6e6c7922202f202272756e74696d65222c2020203b206f7274686f676f6e616c20746f207772697465436c6173730a20206566666563744b696e6448696e743a206566666563742d6b696e642c0a2020666f6f747072696e744f626c69676174696f6e3a20747374722c0a2020636f73744f626c69676174696f6e3a20747374722c0a20206566666563744661696c757265733a207b202a206661696c7572652d6964656e74203d3e206566666563742d6661696c7572652d626f6479207d2c20203b206b6579656420627920636f6f7264696e6174653b20756e697175650a20206775617264537570706f72743a20626f6f6c2c0a7d0a0a6f62737472756374696f6e2d646566203d207b0a2020636f6f7264696e6174653a20747374722c0a2020617574686f72697479436c6173733a20617574686f726974792d636c6173732c0a20207061796c6f6164536368656d613a20636f72652d747970652d7265662c20202020202020202020203b2074797065642c20626f756e64656420286d617920626520656d707479207265636f7264290a7d0a0a3b206566666563742d6661696c7572652d626f64792c206566666563742d6b696e642c20617574686f726974792d636c6173732c20616e6420636f72652d747970652d7265662061726520646566696e65640a3b206f6e636520696e2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d61202845444943542d4142492d4e4f4455502d303031292e0a0a3b202d2d2d2065646963742d6c61777061636b2d616461707465722e6364646c202d2d2d0a3b2065646963742d6c61777061636b2d616461707465722e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f72206f6e6520646972656374206465636c61726174697665206c61777061636b2074617267657420616461707465722e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a3b0a3b2054686520656e636c6f73696e67206c61777061636b206d616e69666573742073656c6563747320746865206578616374207461726765742070726f66696c652c207461726765742049522c0a3b20616e642061646170746572207265736f75726365206469676573742e2054686f7365206964656e74697469657320617265206e6f7420726570656174656420686572652e0a0a6c61777061636b2d61646170746572203d207b0a202061706956657273696f6e3a202265646963742e6c61777061636b2d616461707465722f7631222c0a2020636c6173733a20226465636c61726174697665222c0a20206f7065726174696f6e50726f66696c65733a207b0a202020202a2074737472203d3e206c61777061636b2d616461707465722d6f7065726174696f6e2d70726f66696c650a20207d2c0a2020656666656374496d706c656d656e746174696f6e733a207b0a202020202a2074737472203d3e206c61777061636b2d616461707465722d6566666563740a20207d2c0a2020627564676574733a207b0a202020202a2074737472203d3e206c61777061636b2d616461707465722d6275646765740a20207d2c0a7d0a0a3b204b657973206172652063616e6f6e6963616c206c61777061636b206f7065726174696f6e2d70726f66696c6520636f6f7264696e617465732e0a6c61777061636b2d616461707465722d6f7065726174696f6e2d70726f66696c65203d0a20207b0a20202020636f72653a20747374722c0a2020202073656d616e746963456666656374733a205b2b20747374725d2c0a202020203f206275646765744f626c69676174696f6e3a20747374722c0a202020203f20746172676574436f6e66696775726174696f6e3a207265736f757263652d7265662c0a20207d202f0a20207b0a20202020636f72653a20747374722c0a2020202073656d616e746963456666656374733a205b5d2c0a202020206275646765744f626c69676174696f6e3a20747374722c0a20202020746172676574436f6e66696775726174696f6e3a207265736f757263652d7265662c0a20207d0a0a3b204b657973206172652063616e6f6e6963616c206c61777061636b2073656d616e7469632d65666665637420636f6f7264696e617465732e20466f6f747072696e742c20636f73742c20616e640a3b206661696c757265206669656c6473206d7573742065786163746c792064697363686172676520746865206d61746368696e67206578706f72746564206566666563742e0a6c61777061636b2d616461707465722d656666656374203d207b0a2020746172676574496e7472696e7369633a20747374722c0a2020746172676574436f6e66696775726174696f6e3a207265736f757263652d7265662c0a20207772697465436c6173733a206c61777061636b2d616461707465722d77726974652d636c6173732c0a2020666f6f747072696e744f626c69676174696f6e3a20747374722c0a2020636f73744f626c69676174696f6e3a20747374722c0a20206661696c7572654d617070696e67733a207b202a206661696c7572652d6964656e74203d3e2074737472207d2c0a7d0a0a3b204b657973206172652063616e6f6e6963616c206578706f7274656420636f73742d6f626c69676174696f6e20636f6f7264696e617465732e0a6c61777061636b2d616461707465722d627564676574203d207b0a20206d617853746570733a2075696e742c0a20206d6178416c6c6f636174656442797465733a2075696e742c0a20206d61784f757470757442797465733a2075696e742c0a7d0a0a6c61777061636b2d616461707465722d77726974652d636c617373203d20226e6f6e6522202f20227265616422202f202263726561746522202f2022656e7375726522202f0a20202020202020202020202020202020202020202020202020202020202022617070656e6422202f20227265706c61636522202f202264656c65746522202f2022637573746f6d220a0a3b206661696c7572652d6964656e7420697320646566696e656420696e2065646963742d636f6d6d6f6e2e6364646c2e0a0a3b202d2d2d2065646963742d7461726765742d70726f66696c652e6364646c202d2d2d0a3b2065646963742d7461726765742d70726f66696c652e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f7220746865204564696374207461726765742070726f66696c65206d616e69666573742e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76310a3b202873656520535045435f636f6e74696e75756d2d636f6e74726163742d62756e646c652d76312e6d64292e204a534f4e20696e207468652070726f736520737065637320697320610a3b207265766965772072656e646572696e672067656e6572617465642066726f6d207468697320736368656d613b2074686973204344444c206973207468652073696e676c6520736f757263650a3b206f66207472757468202845444943542d4142492d4e4f4455502d303031292e0a0a7461726765742d70726f66696c652d6d616e6966657374203d207b0a202061706956657273696f6e3a202265646963742e7461726765742d70726f66696c652f7631222c0a202069643a20747374722c202020202020202020202020202020202020202020202020203b20652e672e20226563686f2e64706f220a202076657273696f6e3a20747374722c20202020202020202020202020202020202020203b20652e672e202231220a20206163636570746564436f72654162693a205b2b20747374725d2c20202020202020203b20652e672e205b2265646963742e636f72652f7631225d0a0a2020696e7472696e736963733a207265736f757263652d7265662c0a2020696e7472696e7369634e616d6573706163653a20747374722c0a20203b207075626c697368657320746869732070726f66696c652773206f7065726174696f6e2d70726f66696c65207265636f72647320286f707469632074656d706c6174657320746861740a20203b206070726f66696c65602f60696d706c656d656e74736020636c6175736573207265736f6c766520616761696e7374292e205265666572656e63657320616e0a20203b206f7065726174696f6e2d70726f66696c65732d646f63756d656e74202845444943542d4142492d4f5050524f46494c452d534c4f542d303031292e0a20206f7065726174696f6e50726f66696c65733a207265736f757263652d7265662c0a2020666f6f747072696e74416c67656272613a207265736f757263652d7265662c0a2020636f7374416c67656272613a207265736f757263652d7265662c0a202074617267657449723a207265736f757263652d7265662c0a20206f62737472756374696f6e5461786f6e6f6d793a207265736f757263652d7265662c0a202076657269666965723a207265736f757263652d7265662c0a20206c6f77657265723a207265736f757263652d7265662c0a202073616e64626f783a207265736f757263652d7265662c0a20206675656c4d6f64656c3a207265736f757263652d7265662c0a0a20203b206669656c647320746865206c616e67756167652073706563207265717569726573206f662065766572792070726f66696c650a202062756e646c6550726f66696c653a207265736f757263652d7265662c0a202067656e657261746564417274696661637450726f66696c65733a205b2a207265736f757263652d7265665d2c0a202063616e6f6e6963616c456e636f64696e6752756c65733a207265736f757263652d7265662c0a20203b20412070726f66696c65207468617420616363657074732074686520646972656374206465636c61726174697665206c61777061636b2d6164617074657220414249206e616d65732069740a20203b2065786163746c79206f6e63652e2050726f66696c6573207468617420646f206e6f7420636f6e73756d65206c61777061636b206164617074657273206c6561766520746869730a20203b206f7074696f6e616c20736c6f7420616273656e74206f7220656d7074792e0a20203f2061636365707465644c61777061636b416461707465724162693a205b5d202f205b2265646963742e6c61777061636b2d616461707465722f7631225d2c0a2020646961676e6f737469634162693a207265736f757263652d7265662c0a0a20203b206170706c69636174696f6e20646f637472696e650a20206170706c69636174696f6e4d6f64656c3a202261746f6d6963222c0a202072656164436f6e73697374656e63793a20226170706c69636174696f6e2d736e617073686f7422202f20747374722c0a202067756172644576616c756174696f6e3a2022707265636f6d6d69742d61746f6d696322202f20747374722c0a20206f62737472756374696f6e526f6c6c6261636b3a20226e6f2d76697369626c652d6566666563747322202f20747374722c0a20206d756c74695461726765743a20626f6f6c2c0a20203b207768657468657220746865207461726765742063616e206576616c7561746520707265636f6d6d697420706f7374636f6e646974696f6e20286067756172616e746565602920636865636b730a20203b20696e73696465207468652061746f6d6963206170706c69636174696f6e20756e6974202845444943542d5441524745542d504f5354434f4e442d303031290a2020706f7374636f6e646974696f6e537570706f72743a20626f6f6c2c0a0a202064657465726d696e6973746963457865637574696f6e3a207265736f757263652d7265662c0a2020636f6e666f726d616e636546697874757265436f727075733a207265736f757263652d7265662c0a7d0a0a3b20536861726564207479706573207265736f757263652d72656620616e64207368613235362d6469676573742061726520646566696e6564206f6e636520696e0a3b2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d6120627920746865206275696c640a3b202845444943542d4142492d4e4f4455502d303031292e205468657920617265206e6f74207265646566696e656420686572652e0a0a3b202d2d2d20696e7472696e736963207369676e6174757265202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a3b20546865206172746966616374207265666572656e63656420627920746865206d616e696665737427732060696e7472696e7369637360207265736f757263652d726566206973207468650a3b20696e7472696e7369632d7369676e617475726520636f7270757320646f63756d656e742062656c6f772e20497473206c61796f757420697320666978656420736f2074776f0a3b20696e646570656e64656e742070726f66696c65732076616c69646174652f686173682074686520636f72707573206964656e746963616c6c790a3b202845444943542d4142492d494e5452494e534943532d444f432d303031292e0a0a3b20696e7472696e736963732069732061204d4150206b6579656420627920636f6f7264696e6174652c20736f2074686520736368656d6120697473656c6620656e666f726365730a3b20636f6f7264696e61746520756e697175656e6573732e20412070726f766964657220726563656976657320746865207265736f6c76656420636f7270757320617320610a3b206469676573742d626f756e642073656d616e74696320696e70757420616e64207265736f6c76657320636f6f7264696e617465732077697468696e20746861742061727469666163742e0a3b2045616368206d6170206b6579204d55535420657175616c20697473207265636f726427732060636f6f7264696e61746560206669656c640a3b202845444943542d4142492d494e5452494e5349432d554e495155452d303031292e0a696e7472696e736963732d646f63756d656e74203d207b0a202061706956657273696f6e3a202265646963742e7461726765742d70726f66696c652e696e7472696e736963732f7631222c0a2020696e7472696e736963733a207b202a2074737472203d3e20696e7472696e736963207d2c0a7d0a0a3b20546865206172746966616374207265666572656e63656420627920746865206d616e6966657374277320606f7065726174696f6e50726f66696c657360207265736f757263652d7265662e0a3b206f7065726174696f6e2d70726f66696c65202f206f707469632d74656d706c6174652061726520646566696e656420696e2065646963742d636f6d6d6f6e2e6364646c2e204b657965642062790a3b20636f6f7264696e61746520736f207265736f6c7574696f6e2063616e2774207069636b206265747765656e2074776f2073616d652d636f6f7264696e6174652070726f66696c65730a3b202845444943542d4142492d4f5050524f46494c452d534c4f542d3030312c2045444943542d4142492d4f5050524f46494c452d554e495155452d303031292e0a6f7065726174696f6e2d70726f66696c65732d646f63756d656e74203d207b0a202061706956657273696f6e3a202265646963742e7461726765742d70726f66696c652e6f7065726174696f6e2d70726f66696c65732f7631222c0a202070726f66696c65733a207b202a2074737472203d3e206f7065726174696f6e2d70726f66696c65207d2c0a7d0a0a3b2041207479706564207072652d6c6f776572696e67207175657374696f6e20746861742063616e2062652070726f706f73656420627920576174736f6e206f7220616e206167656e7420616e640a3b20636865636b65642062792074686520636f6d70696c65722e2049742069732063616e6f6e6963616c2d43424f5220656e636f64656420756e6465720a3b206065646963742e6c6f776572696e672d726571756972656d656e74732f7631603b2074686520636f6d70696c657220636865636b7320746869732061727469666163742c206e6f74207468650a3b2070726f736520746861742070726f64756365642069742e0a6c6f776572696e672d726571756972656d656e7473203d207b0a202061706956657273696f6e3a202265646963742e6c6f776572696e672d726571756972656d656e74732f7631222c0a20206f7065726174696f6e50726f66696c653a20747374722c0a202073656d616e746963456666656374733a205b2a2073656d616e7469632d6566666563742d726571756972656d656e745d2c0a202072657175697265645772697465436c61737365733a205b2a2077726974652d636c6173735d2c0a202067756172644b696e64733a205b2a2067756172642d6b696e645d2c0a202061746f6d69636974793a2061746f6d69636974792d726571756972656d656e742c0a2020706f7374636f6e646974696f6e537570706f72743a20626f6f6c2c0a20206f62737472756374696f6e436f6f7264696e617465733a205b2a20747374725d2c0a2020666f6f747072696e744f626c69676174696f6e733a205b2a20747374725d2c0a2020636f73744f626c69676174696f6e733a205b2a20747374725d2c0a20206f70746963436f6e74726163743a20747374722c0a7d0a0a73656d616e7469632d6566666563742d726571756972656d656e74203d207b0a2020636f6f7264696e6174653a20747374722c0a20207772697465436c6173733a2077726974652d636c6173732c0a202067756172644b696e64733a205b2a2067756172642d6b696e645d2c0a20206f62737472756374696f6e436f6f7264696e617465733a205b2a20747374725d2c0a2020666f6f747072696e744f626c69676174696f6e733a205b2a20747374725d2c0a2020636f73744f626c69676174696f6e733a205b2a20747374725d2c0a7d0a0a77726974652d636c617373203d20226e6f6e6522202f20227265616422202f202263726561746522202f2022656e7375726522202f2022617070656e6422202f0a2020202020202020202020202020227265706c61636522202f202264656c65746522202f20747374720a67756172642d6b696e64203d2022707265636f6d6d69742d61746f6d696322202f20747374720a61746f6d69636974792d726571756972656d656e74203d202261746f6d696322202f20747374720a0a3b20412067656e75696e6520756e696f6e3a207075726520636f6e7374727563746f7273206361727279206e6f20656666656374206b696e64206f72206661696c757265733b206566666563740a3b20696e7472696e73696373206d757374202845444943542d5441524745542d494e5452494e5349432d434c4153532d303031292e2054686520736368656d6120656e666f7263657320746869732c0a3b206e6f74206120636f6d6d656e742e0a0a3b2054686520696e7472696e736963277320636f6f7264696e6174652069732074686520696e7472696e73696373206d6170204b45592c206e6f7420612076616c7565206669656c642c20736f207468650a3b206b657920616e6420636f6f7264696e6174652063616e206e65766572206469736167726565202845444943542d4142492d494e5452494e5349432d554e495155452d303031292e0a696e7472696e736963203d20707572652d696e7472696e736963202f206566666563742d696e7472696e7369630a0a707572652d696e7472696e736963203d207b0a2020696e7472696e736963436c6173733a202270757265222c0a202074797065506172616d65746572733a205b2a20747374725d2c0a2020617267756d656e7454797065733a205b2a20636f72652d747970652d7265665d2c0a202072657475726e547970653a20636f72652d747970652d7265662c0a20206775617264537570706f72743a2066616c73652c0a2020666f6f747072696e7454656d706c6174653a20747374722c0a2020636f737454656d706c6174653a20747374722c0a20207772697465436c6173733a20226e6f6e65222c0a7d0a0a6566666563742d696e7472696e736963203d207b0a2020696e7472696e736963436c6173733a2022656666656374222c0a202074797065506172616d65746572733a205b2a20747374725d2c0a2020617267756d656e7454797065733a205b2a20636f72652d747970652d7265665d2c0a202072657475726e547970653a20636f72652d747970652d7265662c0a20206566666563744b696e643a206566666563742d6b696e642c0a20203b206d6170206b65796564206279206661696c75726520636f6f7264696e61746520286661696c7572652d6964656e74293b20746865206661696c75726520636f6f7264696e6174652069730a20203b20746865206b65792c206e6f7420612076616c7565206669656c642c20736f20756e697175656e657373206973207374727563747572616c0a20203b202845444943542d4142492d4641494c5552452d554e495155452d303031292e0a20206566666563744661696c757265733a207b202a206661696c7572652d6964656e74203d3e206566666563742d6661696c7572652d626f6479207d2c0a20206775617264537570706f72743a20626f6f6c2c0a2020666f6f747072696e7454656d706c6174653a20747374722c0a2020636f737454656d706c6174653a20747374722c0a20207772697465436c6173733a20227265616422202f202263726561746522202f2022656e7375726522202f2022617070656e6422202f20227265706c61636522202f0a20202020202020202020202020202264656c65746522202f2022637573746f6d222c0a202063616e5061727469636970617465496e41746f6d696347756172643a20626f6f6c2c0a7d0a0a3b206566666563742d6661696c7572652d626f64792c206566666563742d6b696e642c20617574686f726974792d636c6173732c20616e6420636f72652d747970652d7265662061726520646566696e65640a3b206f6e636520696e2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d61202845444943542d4142492d4e4f4455502d303031292e0a0a3b202d2d2d2065646963742d617574686f726974792d66616374732e6364646c202d2d2d0a3b2065646963742d617574686f726974792d66616374732e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f722074686520666972737420636f6d70696c65722d636f6e7465787420617574686f726974792d666163747320646f63756d656e742e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a3b0a3b205468697320736368656d6120697320617373656d626c656420776974682065646963742d636f6d6d6f6e2e6364646c20736f20736f757263652e6469676573742075736573207468650a3b20736861726564207368613235362d6469676573742074797065642076616c75652e204a534f4e2069732061207265766965772f696e7075742072656e646572696e673a206974730a3b20607368613235363a3c3634206865783e6020736f75726365206469676573742069732070726f6a656374656420746f205b60736861323536602c203332207261772062797465735d206f6e0a3b2074686520776972652c20616e64206974732066616374206172726179732070726f6a65637420746f2074686520636f6f7264696e6174652d6b65796564206d6170732062656c6f772e0a0a617574686f726974792d6661637473203d207b0a202061706956657273696f6e3a202265646963742e617574686f726974792d66616374732f7631222c0a2020736f757263653a20617574686f726974792d666163742d736f757263652c0a20206f7065726174696f6e50726f66696c65733a207b202a2074737472203d3e20617574686f726974792d6f7065726174696f6e2d70726f66696c652d66616374207d2c0a20206566666563745772697465436c61737365733a207b202a2074737472203d3e20617574686f726974792d77726974652d636c617373207d2c0a2020627564676574733a207b202a2074737472203d3e20617574686f726974792d6275646765742d66616374207d2c0a7d0a0a617574686f726974792d666163742d736f75726365203d207b0a20206b696e643a20226c61777061636b22202f202274617267657450726f66696c65222c0a2020636f6f7264696e6174653a20747374722c0a20206469676573743a207368613235362d6469676573742c0a7d0a0a3b20546865206d6170206b65792069732074686520736f75726365206f7065726174696f6e2d70726f66696c6520636f6f7264696e6174652e204974206973206e6f7420726570656174656420696e0a3b207468652076616c75652c20736f2061206b657920616e6420656d62656464656420636f6f7264696e6174652063616e6e6f742064697361677265652e20416c6c6f7765642077726974650a3b20636c61737365732061726520612063616e6f6e6963616c206d61702d7365743a2074686520636c6173732069732074686520756e69717565206b657920616e64206e756c6c206973207468650a3b20756e6974206d61726b65722e2043616e6f6e6963616c2043424f52206669786573206b6579206f7264657220776974686f75742061207365636f6e64206f72646572696e672072756c652e0a617574686f726974792d6f7065726174696f6e2d70726f66696c652d66616374203d207b0a2020636f72653a20747374722c0a2020616c6c6f7765645772697465436c61737365733a207b202a20617574686f726974792d77726974652d636c617373203d3e206e756c6c207d2c0a7d0a0a3b20546865206566666563745772697465436c6173736573206d6170206b6579206973207468652073656d616e7469632065666665637420636f6f7264696e6174652e2054686520627564676574730a3b206d6170206b65792069732074686520736f757263652062756467657420636f6f7264696e6174652e2043616e6f6e6963616c2043424f52206d61702d6b657920756e697175656e6573730a3b206d616b6573206475706c6963617465206661637420636f6f7264696e61746573207374727563747572616c6c7920756e726570726573656e7461626c652e0a617574686f726974792d6275646765742d66616374203d207b0a20206d617853746570733a2075696e742c0a20206d6178416c6c6f636174656442797465733a2075696e742c0a20206d61784f757470757442797465733a2075696e742c0a7d0a0a3b20417574686f726974794661637473446f63756d656e7420763120696e74656e74696f6e616c6c792061636365707473206f6e6c792074686520777269746520636c6173736573207468650a3b2063757272656e7420636f6d70696c6572206d6f64656c2063616e20636f6e73756d652e2060637573746f6d602069732074686520736f6c6520763120637573746f6d207370656c6c696e673b0a3b20617262697472617279207461726765742d70726f66696c6520657874656e73696f6e20737472696e677320646f206e6f7420656e746572207468697320636f6d70696c657220706174682e0a617574686f726974792d77726974652d636c617373203d20226e6f6e6522202f20227265616422202f202263726561746522202f2022656e7375726522202f2022617070656e6422202f0a202020202020202020202020202020202020202020202020227265706c61636522202f202264656c65746522202f2022637573746f6d220a0a3b202d2d2d2065646963742d726573756c742d70726f6a656374696f6e2e6364646c202d2d2d0a3b20535044582d4c6963656e73652d4964656e7469666965723a204170616368652d322e300a3b2065646963742d726573756c742d70726f6a656374696f6e2e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f7220636f6d70696c65722d6f776e6564206170706c69636174696f6e2d726573756c742070726f6a656374696f6e732e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a0a726573756c742d70726f6a656374696f6e203d207b0a2020736368656d613a202265646963742e726573756c742d70726f6a656374696f6e2f7631222c0a20206f7065726174696f6e436f6f7264696e6174653a20626f756e6465642d70726f6a656374696f6e2d746578742c0a20206f7574707574547970653a20626f756e6465642d70726f6a656374696f6e2d746578742c0a20206d61784f757470757442797465733a2075696e74202e677420302c0a202065787072657373696f6e3a20726573756c742d70726f6a656374696f6e2d657870722c0a7d0a0a726573756c742d70726f6a656374696f6e2d65787072203d20726573756c742d70726f6a656374696f6e2d7265636f7264202f20726573756c742d70726f6a656374696f6e2d736f757263650a0a726573756c742d70726f6a656374696f6e2d7265636f7264203d207b0a20206b696e643a20227265636f7264222c0a20203b2054686520726f6f74207265636f726420636f756e7473206173206f6e65206f66207468652052757374206465636f6465722773203235362065787072657373696f6e206e6f6465732e0a20203b204e657374656420616767726567617465206e6f646520636f756e742072656d61696e7320616e20617574686f7269746174697665206465636f64657220636865636b2e0a20206669656c64733a207b20302a32353520626f756e6465642d70726f6a656374696f6e2d74657874203d3e20726573756c742d70726f6a656374696f6e2d65787072207d2c0a7d0a0a726573756c742d70726f6a656374696f6e2d736f75726365203d207b0a20206b696e643a2022736f75726365222c0a2020736f757263653a20726573756c742d70726f6a656374696f6e2d736f757263652d6b696e642c0a20203b204d617463686573204d41585f524553554c545f50524f4a454354494f4e5f504154485f5345474d454e545320696e2065646963742d73796e7461782e0a2020706174683a205b302a333220626f756e6465642d70726f6a656374696f6e2d746578745d2c0a7d0a0a726573756c742d70726f6a656374696f6e2d736f757263652d6b696e64203d0a20207b206b696e643a20226170706c69636174696f6e496e70757422207d202f0a20207b0a202020206b696e643a20227075726542696e64696e67222c0a2020202062696e64696e6749643a20626f756e6465642d70726f6a656374696f6e2d746578742c0a20207d202f0a20207b0a202020206b696e643a20226361706162696c697479526573756c74222c0a202020207374657049643a20626f756e6465642d70726f6a656374696f6e2d746578742c0a20207d0a0a626f756e6465642d70726f6a656374696f6e2d74657874203d2074737472202e73697a652028312e2e31303234290a0a3b202d2d2d2065646963742d7461726765742d69722e6364646c202d2d2d0a3b20535044582d4c6963656e73652d4964656e7469666965723a204170616368652d322e300a3b2065646963742d7461726765742d69722e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f72207468652045646963742d6f776e65642054617267657420495220617274696661637420656e76656c6f70652e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a3b0a3b205468697320736368656d6120697320617373656d626c656420776974682065646963742d636f6d6d6f6e2e6364646c20616e642065646963742d636f72652e6364646c2e2049740a3b2064656c696265726174656c792072657573657320436f72652065787072657373696f6e732c20707265646963617465732c20627564676574732c206c6f63616c207265666572656e6365732c0a3b206f62737472756374696f6e20726561736f6e732c20616e64206f62737472756374696f6e2061726d7320736f2074686520736368656d61206d617463686573207468652076616c75650a3b20656d6974746564206279207468652063616e6f6e6963616c2054617267657420495220656e636f64657220726174686572207468616e20726573746174696e672074686f73652074797065732e0a3b2049742064657363726962657320746865207374727563747572616c207368617065206f662076616c6964206c6f776572696e672d70726f6475636564206172746966616374732e205468650a3b206c6f776572696e6720616e6420656e636f64657220636f6e7472616374732073657061726174656c7920656e666f7263652073656d616e746963206964656e7469666965722072756c65730a3b20616e642063616e6f6e6963616c206f72646572696e672f64656475706c69636174696f6e20666f72207365742d6c696b652076616c7565732e0a0a3b2054617267657420495220656e636f64696e672072656a6563747320616e20656d707479207461726765742d70726f66696c6520636f6f7264696e617465206265666f72652062797465730a3b2065786973742c20736f207468697320726f6f74207469676874656e732074686520736861726564207374727563747572616c207265736f757263652d726566206163636f7264696e676c792e0a7461726765742d69722d7265736f757263652d726566203d207b0a202069643a2074737472202e7265676578702022283f73292e2b222c0a20206469676573743a207368613235362d6469676573742c0a7d0a0a7461726765742d69722d6172746966616374203d207461726765742d69722d636c6f7365642d6172746966616374202f207461726765742d69722d6c65676163792d61727469666163740a0a7461726765742d69722d61727469666163742d636f6d6d6f6e203d20280a20206b696e643a202274617267657449724172746966616374222c0a2020646f6d61696e3a20747374722c0a202074617267657450726f66696c653a207461726765742d69722d7265736f757263652d7265662c0a2020736f75726365436f7265436f6f7264696e6174653a2074737472202e7265676578702022283f73292e2b222c0a290a0a7461726765742d69722d636c6f7365642d6172746966616374203d207b0a20207461726765742d69722d61727469666163742d636f6d6d6f6e2c0a202073656d616e746963436c6f737572653a207461726765742d69722d73656d616e7469632d636c6f737572652c0a2020696e74656e74733a207b202a2074737472203d3e207461726765742d69722d696e74656e74207d2c0a7d0a0a7461726765742d69722d6c65676163792d6172746966616374203d207b0a20207461726765742d69722d61727469666163742d636f6d6d6f6e2c0a2020696e74656e74733a207b202a2074737472203d3e207461726765742d69722d6c65676163792d696e74656e74207d2c0a7d0a0a7461726765742d69722d73656d616e7469632d636c6f73757265203d207b0a2020736f75726365436f72653a207461726765742d69722d7265736f757263652d7265662c0a20206c61777061636b733a205b2a207461726765742d69722d7265736f757263652d7265665d2c0a20203f206361706162696c69746965733a205b2a207461726765742d69722d7265736f757263652d7265665d2c0a7d0a0a7461726765742d69722d696e74656e74203d207b0a20207461726765742d69722d696e74656e742d636f6d6d6f6e2c0a20203f2062617369733a20636f72652d657870722c0a20203f207075726542696e64696e67733a205b312a207461726765742d69722d707572652d62696e64696e675d2c0a20203f2065787465726e616c416374696f6e52657175657374733a205b2a207461726765742d69722d65787465726e616c2d616374696f6e2d726571756573745d2c0a7d0a0a7461726765742d69722d6c65676163792d696e74656e74203d207b0a20207461726765742d69722d696e74656e742d636f6d6d6f6e2c0a7d0a0a7461726765742d69722d696e74656e742d636f6d6d6f6e203d20280a20206f7065726174696f6e50726f66696c653a20747374722c0a2020696e707574436f6e73747261696e74733a205b2a20696e7075742d636f6e73747261696e745d2c0a2020636f72654576616c756174696f6e4275646765743a20636f72652d6275646765742c0a2020726571756972656d656e74733a205b2a207461726765742d69722d726571756972656d656e745d2c0a202073746570733a205b2a207461726765742d69722d737465705d2c0a2020726573756c743a20636f72652d657870722c0a290a0a7461726765742d69722d726571756972656d656e74203d207b0a202069643a20747374722c0a20207072656469636174653a20636f72652d7072656469636174652c0a20206f6e4661696c7572653a20726571756972652d6661696c7572652d61726d2c0a7d0a0a7461726765742d69722d707572652d62696e64696e67203d207b0a202069643a2074737472202e7265676578702022283f73292e2b222c0a202062696e64696e673a206c6f63616c2d7265662c0a202076616c75653a20636f72652d657870722c0a7d0a0a7461726765742d69722d73746570203d207b0a202069643a20747374722c0a202062696e64696e673a206c6f63616c2d7265662c0a20206566666563743a20747374722c0a2020746172676574496e7472696e7369633a20747374722c0a2020696e7075743a20636f72652d657870722c0a20206f62737472756374696f6e4661696c757265733a205b2a206661696c7572652d6964656e745d2c0a20206f62737472756374696f6e41726d733a207b202a206661696c7572652d6964656e74203d3e206f62737472756374696f6e2d61726d207d2c0a7d0a0a7461726765742d69722d65787465726e616c2d616374696f6e2d72657175657374203d207b0a202069643a20747374722c0a202062696e64696e673a206c6f63616c2d7265662c0a20206f7065726174696f6e3a207461726765742d69722d7265736f757263652d7265662c0a2020696e707574547970653a20636f72652d747970652d7265662c0a2020736574746c656d656e74547970653a20636f72652d747970652d7265662c0a2020696e707574536368656d613a207461726765742d69722d7265736f757263652d7265662c0a2020736574746c656d656e74536368656d613a207461726765742d69722d7265736f757263652d7265662c0a2020696e7075743a20636f72652d657870722c0a2020617574686f7269747953636f70653a20636f72652d657870722c0a202062617369733a20636f72652d657870722c0a20206275646765743a2065787465726e616c2d616374696f6e2d6275646765742c0a20207265636f6e63696c696174696f6e4c61773a207461726765742d69722d7265736f757263652d7265662c0a202073746174653a20226177616974696e67536574746c656d656e74222c0a2020736574746c656d656e7441646d697373696f6e3a2022736368656d615265717569726564222c0a7d0a", - "rawSha256": "c663df6dd3d463aad878ae9c3beebf42fe057d7395f91b6d3823d0e0fab77f50" + "bytesHex": "3b20535044582d4c6963656e73652d4964656e7469666965723a204170616368652d322e300a3b2065646963742d70726f76696465722d636f6e7472616374732e6364646c0a3b2047656e6572617465642066726f6d2045646963742d6f776e65642041424920667261676d656e74732e20444f204e4f5420454449542e0a0a3b202d2d2d2065646963742d636f6d6d6f6e2e6364646c202d2d2d0a3b2065646963742d636f6d6d6f6e2e6364646c0a3b20536861726564204344444c20747970657320666f722074686520456469637420414249732c20646566696e6564204f4e4345206865726520736f20746865792063616e6e6f742064726966740a3b202845444943542d4142492d4e4f4455502d303031292e2054776f2067726f7570733a0a3b2020202d207265736f757263652d7265662c207368613235362d6469676573742c206566666563742d6661696c7572652d626f64792c206566666563742d6b696e642c20617574686f726974792d636c6173732c0a3b2020202020636f72652d747970652d7265663a20617373656d626c656420776974682065646963742d7461726765742d70726f66696c652e6364646c20616e640a3b202020202065646963742d6c61777061636b2e6364646c20627920746865206275696c643b2074686f736520736368656d617320646f206e6f74207265646566696e65207468656d2e0a3b2020202d206f7065726174696f6e2d70726f66696c652c206f707469632d74656d706c6174652c2061706572747572652d726571756972656d656e7420616e6420746865697220726566733a0a3b2020202020636f6e73756d65642062792074686520436f72652f6f70746963206c61796572202865646963742d636f72652e6364646c2920616e64207265666572656e636564206279207468650a3b20202020206c616e67756167652f7461726765742d70726f66696c652073706563732e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a0a3b2041206e6f726d617469766520737562636f6d706f6e656e74207265666572656e636564206279206964656e7469747920706c7573206469676573742e204d616e696665737473206e657665720a3b20656d626564207468656972206f776e2073656c662d64696765737420696e20746865697220707265696d616765202845444943542d434f52452d53454c46484153482d303031292e0a7265736f757263652d726566203d207b2069643a20747374722c206469676573743a207368613235362d646967657374207d0a0a3b20446967657374732061726520617574686f726974617469766520617320747970656420627974652076616c7565732c206e657665722068657820737472696e67732e20526576696577204a534f4e0a3b2072656e64657273207468697320617320227368613235363a3c3634206c6f77657263617365206865783e22202845444943542d4449474553542d574952452d303031292e0a7368613235362d646967657374203d205b20616c676f726974686d3a2022736861323536222c2062797465733a2062737472202e73697a65203332205d0a0a3b2041206e616d6564206c6f772d6c6576656c206661696c75726520616e206566666563742063616e2072616973652e2054686520736f75726365206f62737472756374696f6e206d61700a3b2062696e64732069742028627920636f6f7264696e6174652920616e6420636f6e73747275637473206120747970656420646f6d61696e206f62737472756374696f6e2066726f6d206974730a3b207061796c6f6164202845444943542d4142492d4641494c5552452d4e414d45442d303031292e0a3b20416e20656666656374277320606566666563744661696c7572657360206c697374204d555354206861766520756e697175652060636f6f7264696e61746560733a2073696e6365207468650a3b206f62737472756374696f6e206d6170206973206b6579656420627920636f6f7264696e6174652c2074776f206661696c757265732073686172696e67206120636f6f7264696e61746520286576656e0a3b207769746820646966666572656e7420617574686f72697479436c6173732f7061796c6f61645479706529206d616b652065786861757374697665206d617070696e6720616e642062696e6465720a3b20747970696e6720616d626967756f757320616e64206172652072656a6563746564202845444943542d4142492d4641494c5552452d554e495155452d303031292e0a3b0a3b2045666665637473206361727279207468656972206661696c757265732061732061206d617020607b206661696c7572652d6964656e74203d3e206566666563742d6661696c7572652d626f6479207d600a3b202873656520746865207461726765742f6c61777061636b2065666665637420736368656d6173292e20546865206661696c75726520636f6f7264696e61746520697320746865206d61700a3b204b45592c20736f206974206973206e6f7420726570656174656420696e2074686520626f647920616e642063616e6e6f74206469736167726565207769746820746865206b65792e0a6566666563742d6661696c7572652d626f6479203d207b0a2020617574686f72697479436c6173733a20617574686f726974792d636c6173732c0a20207061796c6f6164547970653a20636f72652d747970652d7265662c202020202020202020202020203b2074797065642c20626f756e64656420286d617920626520656d707479207265636f7264290a7d0a0a3b2041206661696c75726520636f6f7264696e617465206d7573742062652061206261726520456469637420606964656e746020286c65747465722f756e64657273636f7265207468656e0a3b206c6574746572732f6469676974732f756e64657273636f7265732920414e44206d757374206e6f742062652061207265736572766564206b6579776f72642028652e672e2060656c7365602c0a3b20606261736973602c20607768657265602c206072657175697265602c2060666f72602c2060696660292e2054686520736f75726365206f62737472756374696f6e2d6d6170204c4853206f6e6c790a3b20616363657074732061206e6f6e2d6b6579776f726420606964656e74602c20736f20612068797068656e2f646f742f6b6579776f726420636f6f7264696e61746520776f756c642062650a3b204142492d76616c69642079657420696d706f737369626c6520746f206d617020657868617573746976656c7920696e20736f757263652e20546865207265676578206361707475726573207468650a3b206c65786963616c2073686170653b206b6579776f7264206578636c7573696f6e20697320616e206164646974696f6e616c2076616c69646174696f6e2072756c650a3b202845444943542d4142492d4641494c5552452d4944454e542d303031292e0a6661696c7572652d6964656e74203d2074737472202e72656765787020225b412d5a612d7a5f5d5b412d5a612d7a302d395f5d2a220a0a6566666563742d6b696e64203d20227265616422202f202263726561746522202f2022656e7375726522202f20227265706c61636522202f202264656c65746522202f0a202020202020202020202020202022617070656e6422202f202272656475636522202f202273656d616e7469632e656d697422202f2022637573746f6d220a0a617574686f726974792d636c617373203d2022646f6d61696e4d61707061626c6522202f20227061727469636970616e744f776e656422202f2022696e746567726974794661756c7422202f0a202020202020202020202020202020202020227265736f757263654661756c7422202f2022696e7465726e616c4661756c74220a0a636f72652d747970652d726566203d20747374722020203b2063616e6f6e6963616c20436f7265207479706520636f6f7264696e6174650a0a3b20416e206f7065726174696f6e2070726f66696c6520737570706c69657320746865206f707469632074656d706c617465206120436f726520696e74656e74207265736f6c766573206974730a3b206f707469634b696e642f626f756e646172794b696e642f737570706f7274506f6c6963792f6c6f7373446973706f736974696f6e2066726f6d2e205461726765742070726f66696c657320616e640a3b206c61777061636b73207075626c6973682074686573652061732061206d617020607b20636f6f7264696e617465203d3e206f7065726174696f6e2d70726f66696c65207d602c20736f207468650a3b20636f6f7264696e61746520697320746865204b45592c206e6f7420612076616c7565206669656c64202845444943542d4f505449432d54454d504c4154452d4f574e45522d3030312c0a3b2045444943542d4142492d4f5050524f46494c452d554e495155452d303031292e0a6f7065726174696f6e2d70726f66696c65203d207b0a20206f7074696354656d706c6174653a206f707469632d74656d706c6174652c0a20206566666563745072656469636174653a20747374722c20202020202020202020203b20636f6f7264696e617465206f6620746865206f7065726174696f6e2d6d6f6465207072656469636174650a7d0a0a6f707469632d74656d706c617465203d207b0a20206f707469634b696e643a2022726576656c6174696f6e22202f20226166666563745265696e746567726174696f6e222c0a2020626f756e646172794b696e643a202270726f6a656374696f6e22202f2022616666656374222c0a2020737570706f7274506f6c6963793a20747374722c202020202020202020202020203b2063616e6f6e6963616c20737570706f72742d706f6c69637920636f6f7264696e6174650a20206c6f7373446973706f736974696f6e3a20747374722c20202020202020202020203b2063616e6f6e6963616c206c6f73732d646973706f736974696f6e20636f6f7264696e6174650a20203f20626173697354656d706c6174653a20747374722c20202020202020202020203b206f7074696f6e616c206469676573742d6c6f636b65642062617369732074656d706c61746520636f6f72640a20203b2074686520617065727475726520726571756972656d656e7420746869732074656d706c61746520737570706c6965732e205265717569726564207768656e207468652074656d706c6174650a20203b2069732074686520736f75726365206f66206120436f7265206f707469632773206170657274757265526571756972656d656e742028692e652e2074686520696e74656e7420686173206e6f0a20203b20736f757263652060666f6f747072696e74203c3d202e2e2e60292c2073696e6365206170657274757265526571756972656d656e74206973206d616e6461746f727920696e20436f72650a20203b202845444943542d4f505449432d41504552545552452d5245462d303031292e0a20203f206170657274757265526571756972656d656e743a2061706572747572652d726571756972656d656e742c0a7d0a0a3b206170657274757265526571756972656d656e742069732061207479706564207265666572656e63652c206e65766572206120667265652d666f726d20737472696e672e2041207265766965770a3b2072656e646572696e67206d61792073686f772069747320636f6f7264696e617465202845444943542d4f505449432d41504552545552452d5245462d303031292e0a61706572747572652d726571756972656d656e74203d20666f6f747072696e742d6365696c696e672d726566202f2061627374726163742d666f6f747072696e742d6f626c69676174696f6e2d7265660a666f6f747072696e742d6365696c696e672d726566203d207b206b696e643a2022666f6f747072696e744365696c696e67222c207265663a2074737472207d0a61627374726163742d666f6f747072696e742d6f626c69676174696f6e2d726566203d207b206b696e643a20226162737472616374466f6f747072696e744f626c69676174696f6e222c207265663a2074737472207d0a0a3b202d2d2d2065646963742d636f72652e6364646c202d2d2d0a3b2065646963742d636f72652e6364646c0a3b204e6f726d617469766520736368656d6120666f722074686520456469637420436f72652076312073656d616e746963206d6f64656c2e0a3b0a3b2053636f706520626f756e646172793a20746869732066696c6520646566696e657320436f7265206d65616e696e6720616e6420736368656d61207368617065206f6e6c792e20497420646f65730a3b206e6f7420646566696e6520612063616e6f6e6963616c20656e636f6465722c20436f7265206d6f64756c652068617368206669656c64732c20686173682066697874757265732c207461726765740a3b206c6f776572696e672c2061646d697373696f6e2062756e646c65732c206f72207461726765742d6f776e65642049522e0a0a636f72652d6d6f64756c65203d207b0a202061706956657273696f6e3a202265646963742e636f72652f7631222c0a2020636f6f7264696e6174653a20747374722c0a2020696d706f7274733a205b2a20636f72652d696d706f72745d2c0a202074797065733a207b202a2074737472203d3e20636f72652d74797065207d2c0a2020696e74656e74733a207b202b2074737472203d3e20636f72652d696e74656e74207d2c0a20207265717569726564436f72654361706162696c69746965733a205b2a20747374725d2c0a7d0a0a636f72652d696d706f7274203d207b0a20206b696e643a20226c61777061636b22202f202274617267657422202f2022636f726522202f20226361706162696c697479222c0a20207265663a207265736f757263652d7265662c0a20203f20616c6961733a20747374722c0a7d0a0a3b202d2d2d207479706573202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a636f72652d74797065203d20636f72652d7363616c61722d74797065202f20636f72652d7265636f72642d74797065202f20636f72652d76617269616e742d74797065202f0a202020202020202020202020636f72652d6f7074696f6e2d74797065202f20636f72652d6c6973742d74797065202f20636f72652d6d61702d74797065202f0a202020202020202020202020636f72652d6361706162696c6974792d7265662d74797065202f20636f72652d65787465726e616c2d616374696f6e2d726571756573742d74797065202f0a202020202020202020202020636f72652d6e6f6d696e616c2d747970650a0a636f72652d7363616c61722d74797065203d20636f72652d626f6f6c2d74797065202f20636f72652d696e742d74797065202f20636f72652d737472696e672d74797065202f0a20202020202020202020202020202020202020636f72652d62797465732d74797065202f20636f72652d756e69742d747970650a0a636f72652d626f6f6c2d74797065203d207b206b696e643a2022426f6f6c22207d0a636f72652d756e69742d74797065203d207b206b696e643a2022556e697422207d0a636f72652d696e742d74797065203d207b0a20206b696e643a202249363422202f202255363422202f202249333222202f202255333222202f202249313622202f202255313622202f2022493822202f20225538222c0a7d0a636f72652d737472696e672d74797065203d207b0a20206b696e643a2022537472696e67222c0a20206d61783a2075696e742c0a202063616e6f6e6963616c3a2022756e69636f64652d7363616c61722d6e666322202f20227261772d75746638222c0a7d0a636f72652d62797465732d74797065203d207b0a20206b696e643a20224279746573222c0a20203f206d696e3a2075696e742c0a20206d61783a2075696e742c0a7d0a636f72652d6e6f6d696e616c2d74797065203d207b0a20206b696e643a20224e6f6d696e616c222c0a2020636f6e74726163743a20747374722c0a2020726570726573656e746174696f6e3a20636f72652d747970652d7265662c0a7d0a636f72652d7265636f72642d74797065203d207b0a20206b696e643a20225265636f7264222c0a20206669656c64733a207b202a2074737472203d3e20636f72652d747970652d726566207d2c0a7d0a636f72652d76617269616e742d74797065203d207b0a20206b696e643a202256617269616e74222c0a202063617365733a207b202b2074737472203d3e2076617269616e742d636173652d626f6479207d2c0a7d0a76617269616e742d636173652d626f6479203d207b0a20203f207061796c6f61643a20636f72652d747970652d7265662c0a7d0a636f72652d6f7074696f6e2d74797065203d207b0a20206b696e643a20224f7074696f6e222c0a20206974656d3a20636f72652d747970652d7265662c0a7d0a636f72652d6c6973742d74797065203d207b0a20206b696e643a20224c697374222c0a20206974656d3a20636f72652d747970652d7265662c0a20206d61783a2075696e742c0a7d0a636f72652d6d61702d74797065203d207b0a20206b696e643a20224d6170222c0a20206b65793a20636f72652d747970652d7265662c0a202076616c75653a20636f72652d747970652d7265662c0a20206d61783a2075696e742c0a7d0a636f72652d6361706162696c6974792d7265662d74797065203d207b0a20206b696e643a20224361706162696c697479526566222c0a20206974656d3a20636f72652d747970652d7265662c0a7d0a636f72652d65787465726e616c2d616374696f6e2d726571756573742d74797065203d207b0a20206b696e643a202245787465726e616c416374696f6e52657175657374222c0a2020736574746c656d656e743a20636f72652d747970652d7265662c0a7d0a0a3b20636f72652d747970652d72656620697320646566696e656420696e2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d612e0a0a3b202d2d2d207265666572656e63657320616e642076616c756573202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a3b204c6f63616c206964656e7469747920697320616c7068612d737461626c652e20606964602069732074686520636f6d70696c65722d6f776e6564206c6f63616c20636f6f7264696e6174653b0a3b2060616c7068614e616d656020697320746865206e6f726d616c697a65642068756d616e2f6465627567206e616d652e20536f757263652062696e646572207370656c6c696e67206973206e6f740a3b206964656e746974792e0a6c6f63616c2d726566203d207b0a202069643a20747374722c0a2020616c7068614e616d653a20747374722c0a2020747970653a20636f72652d747970652d7265662c0a7d0a0a636f72652d76616c7565203d20636f72652d6e756c6c2d76616c7565202f20636f72652d626f6f6c2d76616c7565202f20636f72652d696e742d76616c7565202f0a20202020202020202020202020636f72652d737472696e672d76616c7565202f20636f72652d62797465732d76616c7565202f20636f72652d7265636f72642d76616c7565202f0a20202020202020202020202020636f72652d76617269616e742d76616c7565202f20636f72652d6c6973742d76616c7565202f20636f72652d6d61702d76616c7565202f0a20202020202020202020202020636f72652d6361706162696c6974792d76616c75650a0a636f72652d6e756c6c2d76616c7565203d207b206b696e643a20226e756c6c22207d0a636f72652d626f6f6c2d76616c7565203d207b206b696e643a2022626f6f6c222c2076616c75653a20626f6f6c207d0a636f72652d696e742d76616c7565203d207b206b696e643a2022696e74222c2077696474683a20747374722c2076616c75653a20696e74207d0a636f72652d737472696e672d76616c7565203d207b206b696e643a2022737472696e67222c2076616c75653a2074737472207d0a636f72652d62797465732d76616c7565203d207b206b696e643a20226279746573222c2076616c75653a2062737472207d0a636f72652d7265636f72642d76616c7565203d207b206b696e643a20227265636f7264222c206669656c64733a207b202a2074737472203d3e20636f72652d76616c7565207d207d0a636f72652d76617269616e742d76616c7565203d207b0a20206b696e643a202276617269616e74222c0a2020747970653a20636f72652d747970652d7265662c0a2020636173653a20747374722c0a20203f207061796c6f61643a20636f72652d76616c75652c0a7d0a636f72652d6c6973742d76616c7565203d207b206b696e643a20226c697374222c2076616c7565733a205b2a20636f72652d76616c75655d207d0a636f72652d6d61702d76616c7565203d207b206b696e643a20226d6170222c20656e74726965733a205b2a205b6b65793a20636f72652d76616c75652c2076616c75653a20636f72652d76616c75655d5d207d0a636f72652d6361706162696c6974792d76616c7565203d207b0a20206b696e643a20226361706162696c697479222c0a2020726563656970743a207368613235362d6469676573742c0a7d0a0a3b2045646963742d617574686f72656420707572652068656c70657273207573652061207075726520436f72652066756e6374696f6e20626f64792e2054686520626f64792063616e2062696e640a3b20707572652065787072657373696f6e7320616e642072657475726e20616e2065787072657373696f6e2c206275742069742063616e6e6f7420636f6e7461696e20436f7265206566666563742c0a3b2067756172642c206272616e63682c206c6f6f702c206d617463682d6e6f64652c206f722070726f6f662d6f626c69676174696f6e206e6f6465732e0a636f72652d666e2d626f6479203d207b0a2020706172616d733a205b2a206c6f63616c2d7265665d2c0a2020626f64793a20636f72652d707572652d626c6f636b2c0a7d0a0a636f72652d707572652d626c6f636b203d207b0a20206c6f63616c733a205b2a206c6f63616c2d7265665d2c0a202062696e64696e67733a205b2a20707572652d6c65742d6e6f64655d2c0a2020726573756c743a20636f72652d657870722c0a7d0a0a707572652d6c65742d6e6f6465203d207b0a20206b696e643a20226c6574222c0a202062696e64696e673a206c6f63616c2d7265662c0a202076616c75653a20636f72652d657870722c0a7d0a0a3b202d2d2d2065787072657373696f6e7320616e642070726564696361746573202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a636f72652d65787072203d206c6f63616c2d65787072202f20636f6e73742d65787072202f207265636f72642d65787072202f206669656c642d65787072202f0a20202020202020202020202076617269616e742d65787072202f206d617463682d65787072202f2063616c6c2d65787072202f206c6973742d65787072202f206d61702d65787072202f0a20202020202020202020202069662d657870720a0a6c6f63616c2d65787072203d207b206b696e643a20226c6f63616c222c207265663a206c6f63616c2d726566207d0a636f6e73742d65787072203d207b206b696e643a2022636f6e7374222c2076616c75653a20636f72652d76616c7565207d0a7265636f72642d65787072203d207b206b696e643a20227265636f7264222c206669656c64733a207b202a2074737472203d3e20636f72652d65787072207d207d0a6669656c642d65787072203d207b206b696e643a20226669656c64222c20626173653a20636f72652d657870722c206669656c643a2074737472207d0a76617269616e742d65787072203d207b0a20206b696e643a202276617269616e74222c0a2020747970653a20636f72652d747970652d7265662c0a2020636173653a20747374722c0a20203f207061796c6f61643a20636f72652d657870722c0a7d0a6d617463682d65787072203d207b0a20206b696e643a20226d61746368222c0a20207363727574696e65653a20636f72652d657870722c0a202061726d733a205b2b206d617463682d61726d5d2c0a7d0a6d617463682d61726d203d207b0a2020636173653a20747374722c0a20203f2062696e6465723a206c6f63616c2d7265662c0a2020626f64793a20636f72652d657870722c0a7d0a63616c6c2d65787072203d207b0a20206b696e643a202263616c6c222c0a202063616c6c65653a20747374722c0a202074797065417267733a205b2a20636f72652d747970652d7265665d2c0a2020617267733a205b2a20636f72652d657870725d2c0a7d0a6c6973742d65787072203d207b206b696e643a20226c697374222c2076616c7565733a205b2a20636f72652d657870725d207d0a6d61702d65787072203d207b206b696e643a20226d6170222c20656e74726965733a205b2a205b6b65793a20636f72652d657870722c2076616c75653a20636f72652d657870725d5d207d0a69662d65787072203d207b0a20206b696e643a20226966222c0a20207072656469636174653a20636f72652d7072656469636174652c0a20207468656e3a20636f72652d657870722c0a2020656c73653a20636f72652d657870722c0a7d0a0a636f72652d707265646963617465203d20747275652d707265646963617465202f2066616c73652d707265646963617465202f206e6f742d707265646963617465202f0a2020202020202020202020202020202020616c6c2d707265646963617465202f20616e792d707265646963617465202f20636f6d706172652d707265646963617465202f0a202020202020202020202020202020202063616c6c2d707265646963617465202f206f62737472756374696f6e2d7072656469636174650a0a747275652d707265646963617465203d207b206b696e643a20227472756522207d0a66616c73652d707265646963617465203d207b206b696e643a202266616c736522207d0a6e6f742d707265646963617465203d207b206b696e643a20226e6f74222c2076616c75653a20636f72652d707265646963617465207d0a616c6c2d707265646963617465203d207b206b696e643a2022616c6c222c2076616c7565733a205b2b20636f72652d7072656469636174655d207d0a616e792d707265646963617465203d207b206b696e643a2022616e79222c2076616c7565733a205b2b20636f72652d7072656469636174655d207d0a636f6d706172652d707265646963617465203d207b0a20206b696e643a2022636f6d70617265222c0a20206f703a20223d3d22202f2022213d22202f20223c22202f20223c3d22202f20223e22202f20223e3d222c0a20206c6566743a20636f72652d657870722c0a202072696768743a20636f72652d657870722c0a7d0a63616c6c2d707265646963617465203d207b0a20206b696e643a202263616c6c222c0a20207072656469636174653a20747374722c0a2020617267733a205b2a20636f72652d657870725d2c0a7d0a6f62737472756374696f6e2d707265646963617465203d207b0a20206b696e643a20226f62737472756374696f6e222c0a2020636f6f7264696e6174653a206661696c7572652d6964656e742c0a20207061796c6f61643a20636f72652d657870722c0a7d0a0a696e7075742d636f6e73747261696e74203d207b0a2020636f6f7264696e6174653a20747374722c0a2020736f757263653a2022776865726522202f2022636f6d70696c6572222c0a20207072656469636174653a20636f72652d7072656469636174652c0a7d0a0a3b202d2d2d20696e74656e74732c20626c6f636b732c20616e64206e6f646573202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a636f72652d696e74656e74203d207b0a2020696e7075743a20636f72652d747970652d7265662c0a20206f75747075743a20636f72652d747970652d7265662c0a202072657175697265644f7065726174696f6e50726f66696c653a20747374722c0a20203f2062617369733a20636f72652d657870722c0a2020696e707574436f6e73747261696e74733a205b2a20696e7075742d636f6e73747261696e745d2c0a2020636f72654576616c756174696f6e4275646765743a20636f72652d6275646765742c0a2020626f64793a20636f72652d626c6f636b2c0a20203f206f707469633a20636f72652d6f707469632c0a7d0a0a636f72652d627564676574203d207b0a20206d617853746570733a2075696e742c0a20206d6178416c6c6f636174656442797465733a2075696e742c0a20206d61784f757470757442797465733a2075696e742c0a7d0a0a636f72652d6f70746963203d207b0a20206f707469634b696e643a2022726576656c6174696f6e22202f20226166666563745265696e746567726174696f6e222c0a2020626f756e646172794b696e643a202270726f6a656374696f6e22202f2022616666656374222c0a20206170657274757265526571756972656d656e743a2061706572747572652d726571756972656d656e742c0a2020737570706f7274506f6c6963793a20747374722c0a20206c6f7373446973706f736974696f6e3a20747374722c0a7d0a0a636f72652d626c6f636b203d207b0a20206c6f63616c733a205b2a206c6f63616c2d7265665d2c0a20206e6f6465733a205b2a20636f72652d6e6f64655d2c0a2020726573756c743a20636f72652d657870722c0a7d0a0a636f72652d6e6f6465203d206c65742d6e6f6465202f20726571756972652d6e6f6465202f206566666563742d6e6f6465202f0a20202020202020202020202065787465726e616c2d616374696f6e2d726571756573742d6e6f6465202f2067756172642d6e6f6465202f206272616e63682d6e6f6465202f0a202020202020202020202020666f722d6e6f6465202f206d617463682d6e6f6465202f2070726f6f662d6f626c69676174696f6e2d6e6f64650a0a6c65742d6e6f6465203d207b0a20206b696e643a20226c6574222c0a202062696e64696e673a206c6f63616c2d7265662c0a202076616c75653a20636f72652d657870722c0a7d0a726571756972652d6e6f6465203d207b0a20206b696e643a202272657175697265222c0a20207072656469636174653a20636f72652d7072656469636174652c0a20206f6e4661696c7572653a20726571756972652d6661696c7572652d61726d2c0a7d0a726571756972652d6661696c7572652d61726d203d207465726d696e616c2d726571756972652d6661696c757265202f0a20202020202020202020202020202020202020202020636f6e74696e75652d6f6273747275637465642d726571756972652d6661696c7572650a7465726d696e616c2d726571756972652d6661696c757265203d207b0a20206b696e643a20227465726d696e616c222c0a2020726561736f6e3a206f62737472756374696f6e2d726561736f6e2c0a7d0a636f6e74696e75652d6f6273747275637465642d726571756972652d6661696c757265203d207b0a20206b696e643a2022636f6e74696e75654f627374727563746564222c0a2020726561736f6e3a206f62737472756374696f6e2d726561736f6e2c0a7d0a6f62737472756374696f6e2d726561736f6e203d207b0a2020726561736f6e4b696e643a20747374722c0a20207061796c6f61643a207b202a2074737472203d3e20636f72652d65787072207d2c0a7d0a6566666563742d6e6f6465203d207b0a20206b696e643a2022656666656374222c0a202062696e64696e673a206c6f63616c2d7265662c0a20206566666563743a20747374722c0a2020696e7075743a20636f72652d657870722c0a20206f62737472756374696f6e4d61703a207b202a206661696c7572652d6964656e74203d3e206f62737472756374696f6e2d61726d207d2c0a7d0a65787465726e616c2d616374696f6e2d726571756573742d6e6f6465203d207b0a20206b696e643a202265787465726e616c416374696f6e52657175657374222c0a202062696e64696e673a206c6f63616c2d7265662c0a20206f7065726174696f6e3a207265736f757263652d7265662c0a2020696e707574547970653a20636f72652d747970652d7265662c0a2020736574746c656d656e74547970653a20636f72652d747970652d7265662c0a2020696e707574536368656d613a207265736f757263652d7265662c0a2020736574746c656d656e74536368656d613a207265736f757263652d7265662c0a2020696e7075743a20636f72652d657870722c0a2020617574686f7269747953636f70653a20636f72652d657870722c0a202062617369733a20636f72652d657870722c0a20206275646765743a2065787465726e616c2d616374696f6e2d6275646765742c0a20207265636f6e63696c696174696f6e4c61773a207265736f757263652d7265662c0a202073746174653a20226177616974696e67536574746c656d656e74222c0a2020736574746c656d656e7441646d697373696f6e3a2022736368656d615265717569726564222c0a7d0a65787465726e616c2d616374696f6e2d627564676574203d207b0a20206d6178536574746c656d656e7442797465733a20636f72652d657870722c0a20206d6178417474656d7074733a20636f72652d657870722c0a7d0a6f62737472756374696f6e2d61726d203d207b0a202062696e6465723a206c6f63616c2d7265662c0a202076616c75653a20636f72652d657870722c0a7d0a67756172642d6e6f6465203d207b0a20206b696e643a20226775617264222c0a20207072656469636174653a20636f72652d7072656469636174652c0a20206f62737472756374696f6e3a20636f72652d657870722c0a7d0a6272616e63682d6e6f6465203d207b0a20206b696e643a20226272616e6368222c0a20203f2062696e64696e673a206c6f63616c2d7265662c0a20207072656469636174653a20636f72652d7072656469636174652c0a20207468656e3a20636f72652d626c6f636b2c0a2020656c73653a20636f72652d626c6f636b2c0a7d0a666f722d6e6f6465203d207b0a20206b696e643a2022666f72222c0a202062696e6465723a206c6f63616c2d7265662c0a2020697465723a20636f72652d657870722c0a2020626f756e643a20636f72652d626f756e642c0a2020626f64793a20636f72652d626c6f636b2c0a7d0a6d617463682d6e6f6465203d207b0a20206b696e643a20226d61746368222c0a20207363727574696e65653a20636f72652d657870722c0a202061726d733a205b2b206d617463682d626c6f636b2d61726d5d2c0a7d0a6d617463682d626c6f636b2d61726d203d207b0a2020636173653a20747374722c0a20203f2062696e6465723a206c6f63616c2d7265662c0a2020626f64793a20636f72652d626c6f636b2c0a7d0a70726f6f662d6f626c69676174696f6e2d6e6f6465203d207b0a20206b696e643a202270726f6f66222c0a2020636f6f7264696e6174653a20747374722c0a20207072656469636174653a20636f72652d7072656469636174652c0a7d0a0a636f72652d626f756e64203d206c69746572616c2d626f756e64202f20636f6f7264696e6174652d626f756e640a6c69746572616c2d626f756e64203d207b206b696e643a20226c69746572616c222c2076616c75653a2075696e74207d0a636f6f7264696e6174652d626f756e64203d207b206b696e643a2022636f6f7264696e617465222c207265663a2074737472207d0a0a3b20536861726564207265736f757263652d7265662c207368613235362d6469676573742c206661696c7572652d6964656e742c2061706572747572652d726571756972656d656e742c20616e640a3b20636f72652d747970652d7265662061726520646566696e6564206f6e636520696e2065646963742d636f6d6d6f6e2e6364646c2e0a0a3b202d2d2d2065646963742d6c61777061636b2e6364646c202d2d2d0a3b2065646963742d6c61777061636b2e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f7220746865204564696374206c61777061636b206d616e696665737420616e64206578706f727420737572666163652e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e204a534f4e20696e207468652070726f73652073706563730a3b2069732061207265766965772072656e646572696e672067656e6572617465642066726f6d207468697320736368656d61202845444943542d4142492d4e4f4455502d303031292e0a0a6c61777061636b2d6d616e6966657374203d207b0a202061706956657273696f6e3a202265646963742e6c61777061636b2f7631222c0a202069643a20747374722c0a202076657273696f6e3a20747374722c0a20206163636570746564436f72654162693a205b2b20747374725d2c0a2020646570656e64656e636965733a205b2a206c61777061636b2d6465705d2c202020202020202020203b20616379636c69632c206469676573742d6c6f636b6564202845444943542d4c41575041434b2d4441472d303031290a20206578706f7274733a207265736f757263652d7265662c0a20203f2074617267657441646170746572733a205b2b207461726765742d616461707465725d2c2020203b207265717569726564206f6e6c7920696620616e792072756e74696d6520656666656374206578697374730a20203f2068656c706572436f6d706f6e656e743a2065786563757461626c652d636f6d706f6e656e742c203b2065786563757461626c652068656c70657273206361727279207468656972206f776e2073616e64626f782b6675656c0a202076657269666965723a2076657269666965722c202020202020202020202020202020202020202020203b20636c61737369666965643a206465636c61726174697665206f722065786563757461626c650a2020636f6d7061746962696c6974793a207265736f757263652d7265662c0a2020636f6e666f726d616e636546697874757265436f727075733a207265736f757263652d7265662c0a7d0a0a3b2041207665726966696572206973206569746865722061206465636c617261746976652072756c6573657420286e6f2072756e74696d6529206f7220616e2065786563757461626c650a3b20636f6d706f6e656e742e20416e2065786563757461626c65207665726966696572204d55535420636172727920697473206f776e2073616e64626f7820616e64206675656c206d6f64656c2c0a3b20736f2074686520736368656d6120656e666f726365732074686174206e6f2065786563757461626c6520636f6d706f6e656e74206973206c65667420756e626f756e6465640a3b202845444943542d4142492d56455249464945522d424f554e442d303031292e0a7665726966696572203d206465636c617261746976652d7665726966696572202f2065786563757461626c652d76657269666965720a6465636c617261746976652d7665726966696572203d207b20636c6173733a20226465636c61726174697665222c2072756c657365743a207265736f757263652d726566207d0a65786563757461626c652d7665726966696572203d207b0a2020636c6173733a202265786563757461626c65222c0a2020636f6d706f6e656e743a207265736f757263652d7265662c0a202073616e64626f783a207265736f757263652d7265662c0a20206675656c4d6f64656c3a207265736f757263652d7265662c0a7d0a0a3b20416e792065786563757461626c6520636f6d706f6e656e7420697320626f756e64656420627920697473206f776e2073616e64626f78202b206675656c206d6f64656c2e0a65786563757461626c652d636f6d706f6e656e74203d207b0a2020636f6d706f6e656e743a207265736f757263652d7265662c0a202073616e64626f783a207265736f757263652d7265662c0a20206675656c4d6f64656c3a207265736f757263652d7265662c0a7d0a0a6c61777061636b2d646570203d207b2069643a20747374722c2076657273696f6e3a20747374722c206469676573743a207368613235362d646967657374207d0a0a3b20416461707465722073656c656374696f6e206b65797320534f4c454c59206f666620746865206469676573742d6c6f636b65642060616363657074656454617267657450726f66696c65600a3b20286974732060696460206973207468652070726f66696c652069643b206974732060646967657374602070696e73207468652065786163742070726f66696c652f76657273696f6e292e2054686572650a3b20617265206e6f20696e646570656e64656e7420646973706c617920737472696e6773207468617420636f756c64206469736167726565207769746820746865206c6f636b2c20736f20610a3b207265736f6c7665722063616e6e6f742062696e6420616e206164617074657220746f206f6e6520746172676574207768696c6520746865206c6f636b2070726f76657320616e6f746865720a3b202845444943542d4c41575041434b2d414441505445522d54415247455449522d303031292e0a7461726765742d61646170746572203d207b0a2020616363657074656454617267657450726f66696c653a207265736f757263652d7265662c202020203b206469676573742d6c6f636b65642c20617574686f72697461746976652073656c6563746f720a2020616363657074656454617267657449723a207265736f757263652d7265662c2020202020202020203b206469676573742d6c6f636b65640a2020616461707465723a207265736f757263652d7265662c0a7d0a0a3b20536861726564207479706573207265736f757263652d72656620616e64207368613235362d6469676573742061726520646566696e6564206f6e636520696e0a3b2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d61202845444943542d4142492d4e4f4455502d303031292e0a0a3b202d2d2d206578706f72742073757266616365202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a6c61777061636b2d6578706f727473203d207b0a202074797065733a205b2a206578706f727465642d747970655d2c0a2020636f6e7374616e74733a205b2a206578706f727465642d636f6e7374616e745d2c0a20207075726546756e6374696f6e733a205b2a20707572652d66756e6374696f6e5d2c0a2020656666656374733a205b2a2073656d616e7469632d6566666563745d2c0a20206f62737472756374696f6e733a205b2a206f62737472756374696f6e2d6465665d2c0a20203b206b65796564206279206f7065726174696f6e2d70726f66696c6520636f6f7264696e61746520e2869220756e697175656e65737320656e666f726365640a20203b202845444943542d4142492d4f5050524f46494c452d554e495155452d303031290a20203b206f7065726174696f6e2d70726f66696c65207265636f7264732074686973206c61777061636b206578706f72747320286f707469632074656d706c6174657320746861740a20203b2060696d706c656d656e7473602f6070726f66696c656020636c6175736573207265736f6c766520616761696e7374292e206f7065726174696f6e2d70726f66696c652069730a20203b20646566696e656420696e2065646963742d636f6d6d6f6e2e6364646c202845444943542d4142492d4f5050524f46494c452d534c4f542d303031292e0a20206f7065726174696f6e50726f66696c65733a207b202a2074737472203d3e206f7065726174696f6e2d70726f66696c65207d2c20203b206b6579656420627920636f6f7264696e6174650a7d0a0a6578706f727465642d7479706520202020203d207b20636f6f7264696e6174653a20747374722c20646566696e6974696f6e3a20636f72652d747970652d726566207d0a6578706f727465642d636f6e7374616e74203d207b20636f6f7264696e6174653a20747374722c20747970653a20636f72652d747970652d7265662c2076616c75653a20616e79207d0a0a3b204120707572652068656c7065722069732061206469736372696d696e6174656420756e696f6e2062792060736f75726365602c20736f2074686520736368656d6120697473656c660a3b2067756172616e7465657320616e20696d706c656d656e746174696f6e20657869737473202845444943542d4c41575041434b2d505552452d494d504c2d303031293a0a3b2020202d20226564696374223a20617574686f72656420696e2045646963742f436f72653b2074686520436f726520626f6479206973206361727269656420696e6c696e6520286861736865640a3b20202020207769746820746865206578706f72742073757266616365292e2054686520736368656d61207265717569726573207468652060626f647960206669656c642e0a3b2020202d2022636f6d706f6e656e74223a20696d706c656d656e746564206f7574736964652045646963743b2063617272696573206e6f20696e6c696e6520626f647920616e6420696e73746561640a3b20202020206361727269657320697473206f776e206469676573742d6c6f636b65642060696d706c656d656e746174696f6e60202873616e64626f78202b206675656c292e20497420646f65730a3b20202020206e6f7420646570656e64206f6e20746865206f7074696f6e616c206d616e69666573742d6c6576656c2068656c706572436f6d706f6e656e742e0a707572652d66756e6374696f6e203d2065646963742d707572652d66756e6374696f6e202f20636f6d706f6e656e742d707572652d66756e6374696f6e0a0a707572652d66756e6374696f6e2d636f6d6d6f6e203d20280a2020636f6f7264696e6174653a20747374722c0a202074797065506172616d65746572733a205b2a20747374725d2c0a2020706172616d6574657254797065733a205b2a20636f72652d747970652d7265665d2c2020202020203b20616c6c20626f756e6465640a202072657475726e547970653a20636f72652d747970652d7265662c20202020202020202020202020203b20626f756e6465640a2020636f737454656d706c6174653a20747374722c0a202064657465726d696e69736d436c6173733a2022746f74616c22202f2022746f74616c2d776974682d74797065642d646961676e6f73746963222c0a290a0a65646963742d707572652d66756e6374696f6e203d207b0a2020707572652d66756e6374696f6e2d636f6d6d6f6e2c0a2020736f757263653a20226564696374222c0a2020626f64793a20636f72652d666e2d626f64792c2020202020202020202020202020202020202020203b20696e6c696e652c20686173682d7369676e69666963616e740a7d0a0a636f6d706f6e656e742d707572652d66756e6374696f6e203d207b0a2020707572652d66756e6374696f6e2d636f6d6d6f6e2c0a2020736f757263653a2022636f6d706f6e656e74222c0a20203b20746865206469676573742d6c6f636b656420636f6d706f6e656e7420696d706c656d656e74696e6720746869732068656c7065722e2052657175697265642061742074686520736368656d610a20203b206c6576656c20736f206120636f6d706f6e656e742068656c7065722063616e206e657665722076616c696461746520776974686f7574206120686173682d626f756e642c0a20203b2073616e64626f782b6675656c2d64657363726962656420696d706c656d656e746174696f6e202845444943542d4c41575041434b2d505552452d494d504c2d303031292e0a2020696d706c656d656e746174696f6e3a2065786563757461626c652d636f6d706f6e656e742c0a7d0a0a3b20636f72652d666e2d626f647920697320646566696e65642062792065646963742d636f72652e6364646c20616e6420617373656d626c656420776974682074686973206c61777061636b0a3b20736368656d612e2049742069732061207075726520436f72652066756e6374696f6e20626f64792c206e6f7420616e206566666563742d63617061626c6520636f72652d626c6f636b2e0a0a73656d616e7469632d656666656374203d207b0a2020636f6f7264696e6174653a20747374722c0a202074797065506172616d65746572733a205b2a20747374725d2c0a2020696e707574547970653a20636f72652d747970652d7265662c2020202020202020202020202020203b20626f756e6465640a20206f7574707574547970653a20636f72652d747970652d7265662c20202020202020202020202020203b20626f756e6465640a2020657865637574696f6e436c6173733a202270726f6f664f6e6c7922202f202272756e74696d65222c2020203b206f7274686f676f6e616c20746f207772697465436c6173730a20206566666563744b696e6448696e743a206566666563742d6b696e642c0a2020666f6f747072696e744f626c69676174696f6e3a20747374722c0a2020636f73744f626c69676174696f6e3a20747374722c0a20206566666563744661696c757265733a207b202a206661696c7572652d6964656e74203d3e206566666563742d6661696c7572652d626f6479207d2c20203b206b6579656420627920636f6f7264696e6174653b20756e697175650a20206775617264537570706f72743a20626f6f6c2c0a7d0a0a6f62737472756374696f6e2d646566203d207b0a2020636f6f7264696e6174653a20747374722c0a2020617574686f72697479436c6173733a20617574686f726974792d636c6173732c0a20207061796c6f6164536368656d613a20636f72652d747970652d7265662c20202020202020202020203b2074797065642c20626f756e64656420286d617920626520656d707479207265636f7264290a7d0a0a3b206566666563742d6661696c7572652d626f64792c206566666563742d6b696e642c20617574686f726974792d636c6173732c20616e6420636f72652d747970652d7265662061726520646566696e65640a3b206f6e636520696e2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d61202845444943542d4142492d4e4f4455502d303031292e0a0a3b202d2d2d2065646963742d6c61777061636b2d616461707465722e6364646c202d2d2d0a3b2065646963742d6c61777061636b2d616461707465722e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f72206f6e6520646972656374206465636c61726174697665206c61777061636b2074617267657420616461707465722e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a3b0a3b2054686520656e636c6f73696e67206c61777061636b206d616e69666573742073656c6563747320746865206578616374207461726765742070726f66696c652c207461726765742049522c0a3b20616e642061646170746572207265736f75726365206469676573742e2054686f7365206964656e74697469657320617265206e6f7420726570656174656420686572652e0a0a6c61777061636b2d61646170746572203d207b0a202061706956657273696f6e3a202265646963742e6c61777061636b2d616461707465722f7631222c0a2020636c6173733a20226465636c61726174697665222c0a20206f7065726174696f6e50726f66696c65733a207b0a202020202a2074737472203d3e206c61777061636b2d616461707465722d6f7065726174696f6e2d70726f66696c650a20207d2c0a2020656666656374496d706c656d656e746174696f6e733a207b0a202020202a2074737472203d3e206c61777061636b2d616461707465722d6566666563740a20207d2c0a2020627564676574733a207b0a202020202a2074737472203d3e206c61777061636b2d616461707465722d6275646765740a20207d2c0a7d0a0a3b204b657973206172652063616e6f6e6963616c206c61777061636b206f7065726174696f6e2d70726f66696c6520636f6f7264696e617465732e0a6c61777061636b2d616461707465722d6f7065726174696f6e2d70726f66696c65203d0a20207b0a20202020636f72653a20747374722c0a2020202073656d616e746963456666656374733a205b2b20747374725d2c0a202020203f206275646765744f626c69676174696f6e3a20747374722c0a202020203f20746172676574436f6e66696775726174696f6e3a207265736f757263652d7265662c0a20207d202f0a20207b0a20202020636f72653a20747374722c0a2020202073656d616e746963456666656374733a205b5d2c0a202020206275646765744f626c69676174696f6e3a20747374722c0a20202020746172676574436f6e66696775726174696f6e3a207265736f757263652d7265662c0a20207d0a0a3b204b657973206172652063616e6f6e6963616c206c61777061636b2073656d616e7469632d65666665637420636f6f7264696e617465732e20466f6f747072696e742c20636f73742c20616e640a3b206661696c757265206669656c6473206d7573742065786163746c792064697363686172676520746865206d61746368696e67206578706f72746564206566666563742e0a6c61777061636b2d616461707465722d656666656374203d207b0a2020746172676574496e7472696e7369633a20747374722c0a2020746172676574436f6e66696775726174696f6e3a207265736f757263652d7265662c0a20207772697465436c6173733a206c61777061636b2d616461707465722d77726974652d636c6173732c0a2020666f6f747072696e744f626c69676174696f6e3a20747374722c0a2020636f73744f626c69676174696f6e3a20747374722c0a20206661696c7572654d617070696e67733a207b202a206661696c7572652d6964656e74203d3e2074737472207d2c0a7d0a0a3b204b657973206172652063616e6f6e6963616c206578706f7274656420636f73742d6f626c69676174696f6e20636f6f7264696e617465732e0a6c61777061636b2d616461707465722d627564676574203d207b0a20206d617853746570733a2075696e742c0a20206d6178416c6c6f636174656442797465733a2075696e742c0a20206d61784f757470757442797465733a2075696e742c0a7d0a0a6c61777061636b2d616461707465722d77726974652d636c617373203d20226e6f6e6522202f20227265616422202f202263726561746522202f2022656e7375726522202f0a20202020202020202020202020202020202020202020202020202020202022617070656e6422202f20227265706c61636522202f202264656c65746522202f2022637573746f6d220a0a3b206661696c7572652d6964656e7420697320646566696e656420696e2065646963742d636f6d6d6f6e2e6364646c2e0a0a3b202d2d2d2065646963742d7461726765742d70726f66696c652e6364646c202d2d2d0a3b2065646963742d7461726765742d70726f66696c652e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f7220746865204564696374207461726765742070726f66696c65206d616e69666573742e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76310a3b202873656520535045435f636f6e74696e75756d2d636f6e74726163742d62756e646c652d76312e6d64292e204a534f4e20696e207468652070726f736520737065637320697320610a3b207265766965772072656e646572696e672067656e6572617465642066726f6d207468697320736368656d613b2074686973204344444c206973207468652073696e676c6520736f757263650a3b206f66207472757468202845444943542d4142492d4e4f4455502d303031292e0a0a7461726765742d70726f66696c652d6d616e6966657374203d207b0a202061706956657273696f6e3a202265646963742e7461726765742d70726f66696c652f7631222c0a202069643a20747374722c202020202020202020202020202020202020202020202020203b20652e672e20226563686f2e64706f220a202076657273696f6e3a20747374722c20202020202020202020202020202020202020203b20652e672e202231220a20206163636570746564436f72654162693a205b2b20747374725d2c20202020202020203b20652e672e205b2265646963742e636f72652f7631225d0a0a2020696e7472696e736963733a207265736f757263652d7265662c0a2020696e7472696e7369634e616d6573706163653a20747374722c0a20203b207075626c697368657320746869732070726f66696c652773206f7065726174696f6e2d70726f66696c65207265636f72647320286f707469632074656d706c6174657320746861740a20203b206070726f66696c65602f60696d706c656d656e74736020636c6175736573207265736f6c766520616761696e7374292e205265666572656e63657320616e0a20203b206f7065726174696f6e2d70726f66696c65732d646f63756d656e74202845444943542d4142492d4f5050524f46494c452d534c4f542d303031292e0a20206f7065726174696f6e50726f66696c65733a207265736f757263652d7265662c0a2020666f6f747072696e74416c67656272613a207265736f757263652d7265662c0a2020636f7374416c67656272613a207265736f757263652d7265662c0a202074617267657449723a207265736f757263652d7265662c0a20206f62737472756374696f6e5461786f6e6f6d793a207265736f757263652d7265662c0a202076657269666965723a207265736f757263652d7265662c0a20206c6f77657265723a207265736f757263652d7265662c0a202073616e64626f783a207265736f757263652d7265662c0a20206675656c4d6f64656c3a207265736f757263652d7265662c0a0a20203b206669656c647320746865206c616e67756167652073706563207265717569726573206f662065766572792070726f66696c650a202062756e646c6550726f66696c653a207265736f757263652d7265662c0a202067656e657261746564417274696661637450726f66696c65733a205b2a207265736f757263652d7265665d2c0a202063616e6f6e6963616c456e636f64696e6752756c65733a207265736f757263652d7265662c0a20203b20412070726f66696c65207468617420616363657074732074686520646972656374206465636c61726174697665206c61777061636b2d6164617074657220414249206e616d65732069740a20203b2065786163746c79206f6e63652e2050726f66696c6573207468617420646f206e6f7420636f6e73756d65206c61777061636b206164617074657273206c6561766520746869730a20203b206f7074696f6e616c20736c6f7420616273656e74206f7220656d7074792e0a20203f2061636365707465644c61777061636b416461707465724162693a205b5d202f205b2265646963742e6c61777061636b2d616461707465722f7631225d2c0a2020646961676e6f737469634162693a207265736f757263652d7265662c0a0a20203b206170706c69636174696f6e20646f637472696e650a20206170706c69636174696f6e4d6f64656c3a202261746f6d6963222c0a202072656164436f6e73697374656e63793a20226170706c69636174696f6e2d736e617073686f7422202f20747374722c0a202067756172644576616c756174696f6e3a2022707265636f6d6d69742d61746f6d696322202f20747374722c0a20206f62737472756374696f6e526f6c6c6261636b3a20226e6f2d76697369626c652d6566666563747322202f20747374722c0a20206d756c74695461726765743a20626f6f6c2c0a20203b207768657468657220746865207461726765742063616e206576616c7561746520707265636f6d6d697420706f7374636f6e646974696f6e20286067756172616e746565602920636865636b730a20203b20696e73696465207468652061746f6d6963206170706c69636174696f6e20756e6974202845444943542d5441524745542d504f5354434f4e442d303031290a2020706f7374636f6e646974696f6e537570706f72743a20626f6f6c2c0a0a202064657465726d696e6973746963457865637574696f6e3a207265736f757263652d7265662c0a2020636f6e666f726d616e636546697874757265436f727075733a207265736f757263652d7265662c0a7d0a0a3b20536861726564207479706573207265736f757263652d72656620616e64207368613235362d6469676573742061726520646566696e6564206f6e636520696e0a3b2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d6120627920746865206275696c640a3b202845444943542d4142492d4e4f4455502d303031292e205468657920617265206e6f74207265646566696e656420686572652e0a0a3b202d2d2d20696e7472696e736963207369676e6174757265202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a3b20546865206172746966616374207265666572656e63656420627920746865206d616e696665737427732060696e7472696e7369637360207265736f757263652d726566206973207468650a3b20696e7472696e7369632d7369676e617475726520636f7270757320646f63756d656e742062656c6f772e20497473206c61796f757420697320666978656420736f2074776f0a3b20696e646570656e64656e742070726f66696c65732076616c69646174652f686173682074686520636f72707573206964656e746963616c6c790a3b202845444943542d4142492d494e5452494e534943532d444f432d303031292e0a0a3b20696e7472696e736963732069732061204d4150206b6579656420627920636f6f7264696e6174652c20736f2074686520736368656d6120697473656c6620656e666f726365730a3b20636f6f7264696e61746520756e697175656e6573732e20412070726f766964657220726563656976657320746865207265736f6c76656420636f7270757320617320610a3b206469676573742d626f756e642073656d616e74696320696e70757420616e64207265736f6c76657320636f6f7264696e617465732077697468696e20746861742061727469666163742e0a3b2045616368206d6170206b6579204d55535420657175616c20697473207265636f726427732060636f6f7264696e61746560206669656c640a3b202845444943542d4142492d494e5452494e5349432d554e495155452d303031292e0a696e7472696e736963732d646f63756d656e74203d207b0a202061706956657273696f6e3a202265646963742e7461726765742d70726f66696c652e696e7472696e736963732f7631222c0a2020696e7472696e736963733a207b202a2074737472203d3e20696e7472696e736963207d2c0a7d0a0a3b20546865206172746966616374207265666572656e63656420627920746865206d616e6966657374277320606f7065726174696f6e50726f66696c657360207265736f757263652d7265662e0a3b206f7065726174696f6e2d70726f66696c65202f206f707469632d74656d706c6174652061726520646566696e656420696e2065646963742d636f6d6d6f6e2e6364646c2e204b657965642062790a3b20636f6f7264696e61746520736f207265736f6c7574696f6e2063616e2774207069636b206265747765656e2074776f2073616d652d636f6f7264696e6174652070726f66696c65730a3b202845444943542d4142492d4f5050524f46494c452d534c4f542d3030312c2045444943542d4142492d4f5050524f46494c452d554e495155452d303031292e0a6f7065726174696f6e2d70726f66696c65732d646f63756d656e74203d207b0a202061706956657273696f6e3a202265646963742e7461726765742d70726f66696c652e6f7065726174696f6e2d70726f66696c65732f7631222c0a202070726f66696c65733a207b202a2074737472203d3e206f7065726174696f6e2d70726f66696c65207d2c0a7d0a0a3b2041207479706564207072652d6c6f776572696e67207175657374696f6e20746861742063616e2062652070726f706f73656420627920576174736f6e206f7220616e206167656e7420616e640a3b20636865636b65642062792074686520636f6d70696c65722e2049742069732063616e6f6e6963616c2d43424f5220656e636f64656420756e6465720a3b206065646963742e6c6f776572696e672d726571756972656d656e74732f7631603b2074686520636f6d70696c657220636865636b7320746869732061727469666163742c206e6f74207468650a3b2070726f736520746861742070726f64756365642069742e0a6c6f776572696e672d726571756972656d656e7473203d207b0a202061706956657273696f6e3a202265646963742e6c6f776572696e672d726571756972656d656e74732f7631222c0a20206f7065726174696f6e50726f66696c653a20747374722c0a202073656d616e746963456666656374733a205b2a2073656d616e7469632d6566666563742d726571756972656d656e745d2c0a202072657175697265645772697465436c61737365733a205b2a2077726974652d636c6173735d2c0a202067756172644b696e64733a205b2a2067756172642d6b696e645d2c0a202061746f6d69636974793a2061746f6d69636974792d726571756972656d656e742c0a2020706f7374636f6e646974696f6e537570706f72743a20626f6f6c2c0a20206f62737472756374696f6e436f6f7264696e617465733a205b2a20747374725d2c0a2020666f6f747072696e744f626c69676174696f6e733a205b2a20747374725d2c0a2020636f73744f626c69676174696f6e733a205b2a20747374725d2c0a20206f70746963436f6e74726163743a20747374722c0a7d0a0a73656d616e7469632d6566666563742d726571756972656d656e74203d207b0a2020636f6f7264696e6174653a20747374722c0a20207772697465436c6173733a2077726974652d636c6173732c0a202067756172644b696e64733a205b2a2067756172642d6b696e645d2c0a20206f62737472756374696f6e436f6f7264696e617465733a205b2a20747374725d2c0a2020666f6f747072696e744f626c69676174696f6e733a205b2a20747374725d2c0a2020636f73744f626c69676174696f6e733a205b2a20747374725d2c0a7d0a0a77726974652d636c617373203d20226e6f6e6522202f20227265616422202f202263726561746522202f2022656e7375726522202f2022617070656e6422202f0a2020202020202020202020202020227265706c61636522202f202264656c65746522202f20747374720a67756172642d6b696e64203d2022707265636f6d6d69742d61746f6d696322202f20747374720a61746f6d69636974792d726571756972656d656e74203d202261746f6d696322202f20747374720a0a3b20412067656e75696e6520756e696f6e3a207075726520636f6e7374727563746f7273206361727279206e6f20656666656374206b696e64206f72206661696c757265733b206566666563740a3b20696e7472696e73696373206d757374202845444943542d5441524745542d494e5452494e5349432d434c4153532d303031292e2054686520736368656d6120656e666f7263657320746869732c0a3b206e6f74206120636f6d6d656e742e0a0a3b2054686520696e7472696e736963277320636f6f7264696e6174652069732074686520696e7472696e73696373206d6170204b45592c206e6f7420612076616c7565206669656c642c20736f207468650a3b206b657920616e6420636f6f7264696e6174652063616e206e65766572206469736167726565202845444943542d4142492d494e5452494e5349432d554e495155452d303031292e0a696e7472696e736963203d20707572652d696e7472696e736963202f206566666563742d696e7472696e7369630a0a707572652d696e7472696e736963203d207b0a2020696e7472696e736963436c6173733a202270757265222c0a202074797065506172616d65746572733a205b2a20747374725d2c0a2020617267756d656e7454797065733a205b2a20636f72652d747970652d7265665d2c0a202072657475726e547970653a20636f72652d747970652d7265662c0a20206775617264537570706f72743a2066616c73652c0a2020666f6f747072696e7454656d706c6174653a20747374722c0a2020636f737454656d706c6174653a20747374722c0a20207772697465436c6173733a20226e6f6e65222c0a7d0a0a6566666563742d696e7472696e736963203d207b0a2020696e7472696e736963436c6173733a2022656666656374222c0a202074797065506172616d65746572733a205b2a20747374725d2c0a2020617267756d656e7454797065733a205b2a20636f72652d747970652d7265665d2c0a202072657475726e547970653a20636f72652d747970652d7265662c0a20206566666563744b696e643a206566666563742d6b696e642c0a20203b206d6170206b65796564206279206661696c75726520636f6f7264696e61746520286661696c7572652d6964656e74293b20746865206661696c75726520636f6f7264696e6174652069730a20203b20746865206b65792c206e6f7420612076616c7565206669656c642c20736f20756e697175656e657373206973207374727563747572616c0a20203b202845444943542d4142492d4641494c5552452d554e495155452d303031292e0a20206566666563744661696c757265733a207b202a206661696c7572652d6964656e74203d3e206566666563742d6661696c7572652d626f6479207d2c0a20206775617264537570706f72743a20626f6f6c2c0a2020666f6f747072696e7454656d706c6174653a20747374722c0a2020636f737454656d706c6174653a20747374722c0a20207772697465436c6173733a20227265616422202f202263726561746522202f2022656e7375726522202f2022617070656e6422202f20227265706c61636522202f0a20202020202020202020202020202264656c65746522202f2022637573746f6d222c0a202063616e5061727469636970617465496e41746f6d696347756172643a20626f6f6c2c0a7d0a0a3b206566666563742d6661696c7572652d626f64792c206566666563742d6b696e642c20617574686f726974792d636c6173732c20616e6420636f72652d747970652d7265662061726520646566696e65640a3b206f6e636520696e2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d61202845444943542d4142492d4e4f4455502d303031292e0a0a3b202d2d2d2065646963742d617574686f726974792d66616374732e6364646c202d2d2d0a3b2065646963742d617574686f726974792d66616374732e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f722074686520666972737420636f6d70696c65722d636f6e7465787420617574686f726974792d666163747320646f63756d656e742e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a3b0a3b205468697320736368656d6120697320617373656d626c656420776974682065646963742d636f6d6d6f6e2e6364646c20736f20736f757263652e6469676573742075736573207468650a3b20736861726564207368613235362d6469676573742074797065642076616c75652e204a534f4e2069732061207265766965772f696e7075742072656e646572696e673a206974730a3b20607368613235363a3c3634206865783e6020736f75726365206469676573742069732070726f6a656374656420746f205b60736861323536602c203332207261772062797465735d206f6e0a3b2074686520776972652c20616e64206974732066616374206172726179732070726f6a65637420746f2074686520636f6f7264696e6174652d6b65796564206d6170732062656c6f772e0a0a617574686f726974792d6661637473203d207b0a202061706956657273696f6e3a202265646963742e617574686f726974792d66616374732f7631222c0a2020736f757263653a20617574686f726974792d666163742d736f757263652c0a20206f7065726174696f6e50726f66696c65733a207b202a2074737472203d3e20617574686f726974792d6f7065726174696f6e2d70726f66696c652d66616374207d2c0a20206566666563745772697465436c61737365733a207b202a2074737472203d3e20617574686f726974792d77726974652d636c617373207d2c0a2020627564676574733a207b202a2074737472203d3e20617574686f726974792d6275646765742d66616374207d2c0a7d0a0a617574686f726974792d666163742d736f75726365203d207b0a20206b696e643a20226c61777061636b22202f202274617267657450726f66696c65222c0a2020636f6f7264696e6174653a20747374722c0a20206469676573743a207368613235362d6469676573742c0a7d0a0a3b20546865206d6170206b65792069732074686520736f75726365206f7065726174696f6e2d70726f66696c6520636f6f7264696e6174652e204974206973206e6f7420726570656174656420696e0a3b207468652076616c75652c20736f2061206b657920616e6420656d62656464656420636f6f7264696e6174652063616e6e6f742064697361677265652e20416c6c6f7765642077726974650a3b20636c61737365732061726520612063616e6f6e6963616c206d61702d7365743a2074686520636c6173732069732074686520756e69717565206b657920616e64206e756c6c206973207468650a3b20756e6974206d61726b65722e2043616e6f6e6963616c2043424f52206669786573206b6579206f7264657220776974686f75742061207365636f6e64206f72646572696e672072756c652e0a617574686f726974792d6f7065726174696f6e2d70726f66696c652d66616374203d207b0a2020636f72653a20747374722c0a2020616c6c6f7765645772697465436c61737365733a207b202a20617574686f726974792d77726974652d636c617373203d3e206e756c6c207d2c0a7d0a0a3b20546865206566666563745772697465436c6173736573206d6170206b6579206973207468652073656d616e7469632065666665637420636f6f7264696e6174652e2054686520627564676574730a3b206d6170206b65792069732074686520736f757263652062756467657420636f6f7264696e6174652e2043616e6f6e6963616c2043424f52206d61702d6b657920756e697175656e6573730a3b206d616b6573206475706c6963617465206661637420636f6f7264696e61746573207374727563747572616c6c7920756e726570726573656e7461626c652e0a617574686f726974792d6275646765742d66616374203d207b0a20206d617853746570733a2075696e742c0a20206d6178416c6c6f636174656442797465733a2075696e742c0a20206d61784f757470757442797465733a2075696e742c0a7d0a0a3b20417574686f726974794661637473446f63756d656e7420763120696e74656e74696f6e616c6c792061636365707473206f6e6c792074686520777269746520636c6173736573207468650a3b2063757272656e7420636f6d70696c6572206d6f64656c2063616e20636f6e73756d652e2060637573746f6d602069732074686520736f6c6520763120637573746f6d207370656c6c696e673b0a3b20617262697472617279207461726765742d70726f66696c6520657874656e73696f6e20737472696e677320646f206e6f7420656e746572207468697320636f6d70696c657220706174682e0a617574686f726974792d77726974652d636c617373203d20226e6f6e6522202f20227265616422202f202263726561746522202f2022656e7375726522202f2022617070656e6422202f0a202020202020202020202020202020202020202020202020227265706c61636522202f202264656c65746522202f2022637573746f6d220a0a3b202d2d2d2065646963742d726573756c742d70726f6a656374696f6e2e6364646c202d2d2d0a3b20535044582d4c6963656e73652d4964656e7469666965723a204170616368652d322e300a3b2065646963742d726573756c742d70726f6a656374696f6e2e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f7220636f6d70696c65722d6f776e6564206170706c69636174696f6e2d726573756c742070726f6a656374696f6e732e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a0a726573756c742d70726f6a656374696f6e203d207b0a2020736368656d613a202265646963742e726573756c742d70726f6a656374696f6e2f7631222c0a20206f7065726174696f6e436f6f7264696e6174653a20626f756e6465642d70726f6a656374696f6e2d746578742c0a20206f7574707574547970653a20626f756e6465642d70726f6a656374696f6e2d746578742c0a20206d61784f757470757442797465733a2075696e74202e677420302c0a202065787072657373696f6e3a20726573756c742d70726f6a656374696f6e2d657870722c0a7d0a0a726573756c742d70726f6a656374696f6e2d65787072203d20726573756c742d70726f6a656374696f6e2d7265636f7264202f20726573756c742d70726f6a656374696f6e2d736f757263650a0a726573756c742d70726f6a656374696f6e2d7265636f7264203d207b0a20206b696e643a20227265636f7264222c0a20203b2054686520726f6f74207265636f726420636f756e7473206173206f6e65206f66207468652052757374206465636f6465722773203235362065787072657373696f6e206e6f6465732e0a20203b204e657374656420616767726567617465206e6f646520636f756e742072656d61696e7320616e20617574686f7269746174697665206465636f64657220636865636b2e0a20206669656c64733a207b20302a32353520626f756e6465642d70726f6a656374696f6e2d74657874203d3e20726573756c742d70726f6a656374696f6e2d65787072207d2c0a7d0a0a726573756c742d70726f6a656374696f6e2d736f75726365203d207b0a20206b696e643a2022736f75726365222c0a2020736f757263653a20726573756c742d70726f6a656374696f6e2d736f757263652d6b696e642c0a20203b204d617463686573204d41585f524553554c545f50524f4a454354494f4e5f504154485f5345474d454e545320696e2065646963742d73796e7461782e0a2020706174683a205b302a333220626f756e6465642d70726f6a656374696f6e2d746578745d2c0a7d0a0a726573756c742d70726f6a656374696f6e2d736f757263652d6b696e64203d0a20207b206b696e643a20226170706c69636174696f6e496e70757422207d202f0a20207b0a202020206b696e643a20227075726542696e64696e67222c0a2020202062696e64696e6749643a20626f756e6465642d70726f6a656374696f6e2d746578742c0a20207d202f0a20207b0a202020206b696e643a20226361706162696c697479526573756c74222c0a202020207374657049643a20626f756e6465642d70726f6a656374696f6e2d746578742c0a20207d0a0a626f756e6465642d70726f6a656374696f6e2d74657874203d2074737472202e73697a652028312e2e31303234290a0a3b202d2d2d2065646963742d7461726765742d69722e6364646c202d2d2d0a3b20535044582d4c6963656e73652d4964656e7469666965723a204170616368652d322e300a3b2065646963742d7461726765742d69722e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f72207468652045646963742d6f776e65642054617267657420495220617274696661637420656e76656c6f70652e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a3b0a3b205468697320736368656d6120697320617373656d626c656420776974682065646963742d636f6d6d6f6e2e6364646c20616e642065646963742d636f72652e6364646c2e2049740a3b2064656c696265726174656c792072657573657320436f72652065787072657373696f6e732c20707265646963617465732c20627564676574732c206c6f63616c207265666572656e6365732c0a3b206f62737472756374696f6e20726561736f6e732c20616e64206f62737472756374696f6e2061726d7320736f2074686520736368656d61206d617463686573207468652076616c75650a3b20656d6974746564206279207468652063616e6f6e6963616c2054617267657420495220656e636f64657220726174686572207468616e20726573746174696e672074686f73652074797065732e0a3b2049742064657363726962657320746865207374727563747572616c207368617065206f662076616c6964206c6f776572696e672d70726f6475636564206172746966616374732e205468650a3b206c6f776572696e6720616e6420656e636f64657220636f6e7472616374732073657061726174656c7920656e666f7263652073656d616e746963206964656e7469666965722072756c65730a3b20616e642063616e6f6e6963616c206f72646572696e672f64656475706c69636174696f6e20666f72207365742d6c696b652076616c7565732e0a0a3b2054617267657420495220656e636f64696e672072656a6563747320616e20656d707479207461726765742d70726f66696c6520636f6f7264696e617465206265666f72652062797465730a3b2065786973742c20736f207468697320726f6f74207469676874656e732074686520736861726564207374727563747572616c207265736f757263652d726566206163636f7264696e676c792e0a7461726765742d69722d7265736f757263652d726566203d207b0a202069643a2074737472202e7265676578702022283f73292e2b222c0a20206469676573743a207368613235362d6469676573742c0a7d0a0a7461726765742d69722d6172746966616374203d207461726765742d69722d636c6f7365642d6172746966616374202f207461726765742d69722d6c65676163792d61727469666163740a0a7461726765742d69722d61727469666163742d636f6d6d6f6e203d20280a20206b696e643a202274617267657449724172746966616374222c0a2020646f6d61696e3a20747374722c0a202074617267657450726f66696c653a207461726765742d69722d7265736f757263652d7265662c0a2020736f75726365436f7265436f6f7264696e6174653a2074737472202e7265676578702022283f73292e2b222c0a290a0a7461726765742d69722d636c6f7365642d6172746966616374203d207b0a20207461726765742d69722d61727469666163742d636f6d6d6f6e2c0a202073656d616e746963436c6f737572653a207461726765742d69722d73656d616e7469632d636c6f737572652c0a2020696e74656e74733a207b202a2074737472203d3e207461726765742d69722d696e74656e74207d2c0a7d0a0a7461726765742d69722d6c65676163792d6172746966616374203d207b0a20207461726765742d69722d61727469666163742d636f6d6d6f6e2c0a2020696e74656e74733a207b202a2074737472203d3e207461726765742d69722d6c65676163792d696e74656e74207d2c0a7d0a0a7461726765742d69722d73656d616e7469632d636c6f73757265203d207b0a2020736f75726365436f72653a207461726765742d69722d7265736f757263652d7265662c0a20206c61777061636b733a205b2a207461726765742d69722d7265736f757263652d7265665d2c0a20203f206361706162696c69746965733a205b2a207461726765742d69722d7265736f757263652d7265665d2c0a7d0a0a7461726765742d69722d696e74656e74203d207b0a20207461726765742d69722d696e74656e742d636f6d6d6f6e2c0a20203f2062617369733a20636f72652d657870722c0a20203f207075726542696e64696e67733a205b312a207461726765742d69722d707572652d62696e64696e675d2c0a20203f2065787465726e616c416374696f6e52657175657374733a205b2a207461726765742d69722d65787465726e616c2d616374696f6e2d726571756573745d2c0a7d0a0a7461726765742d69722d6c65676163792d696e74656e74203d207b0a20207461726765742d69722d696e74656e742d636f6d6d6f6e2c0a7d0a0a7461726765742d69722d696e74656e742d636f6d6d6f6e203d20280a20206f7065726174696f6e50726f66696c653a20747374722c0a2020696e707574436f6e73747261696e74733a205b2a20696e7075742d636f6e73747261696e745d2c0a2020636f72654576616c756174696f6e4275646765743a20636f72652d6275646765742c0a2020726571756972656d656e74733a205b2a207461726765742d69722d726571756972656d656e745d2c0a202073746570733a205b2a207461726765742d69722d737465705d2c0a2020726573756c743a20636f72652d657870722c0a290a0a7461726765742d69722d726571756972656d656e74203d207b0a202069643a20747374722c0a20207072656469636174653a20636f72652d7072656469636174652c0a20206f6e4661696c7572653a20726571756972652d6661696c7572652d61726d2c0a7d0a0a7461726765742d69722d707572652d62696e64696e67203d207b0a202069643a2074737472202e7265676578702022283f73292e2b222c0a202062696e64696e673a206c6f63616c2d7265662c0a202076616c75653a20636f72652d657870722c0a7d0a0a7461726765742d69722d73746570203d207b0a202069643a20747374722c0a202062696e64696e673a206c6f63616c2d7265662c0a20206566666563743a20747374722c0a2020746172676574496e7472696e7369633a20747374722c0a2020696e7075743a20636f72652d657870722c0a20206f62737472756374696f6e4661696c757265733a205b2a206661696c7572652d6964656e745d2c0a20206f62737472756374696f6e41726d733a207b202a206661696c7572652d6964656e74203d3e206f62737472756374696f6e2d61726d207d2c0a7d0a0a7461726765742d69722d65787465726e616c2d616374696f6e2d72657175657374203d207b0a202069643a20747374722c0a202062696e64696e673a206c6f63616c2d7265662c0a20206f7065726174696f6e3a207461726765742d69722d7265736f757263652d7265662c0a2020696e707574547970653a20636f72652d747970652d7265662c0a2020736574746c656d656e74547970653a20636f72652d747970652d7265662c0a2020696e707574536368656d613a207461726765742d69722d7265736f757263652d7265662c0a2020736574746c656d656e74536368656d613a207461726765742d69722d7265736f757263652d7265662c0a2020696e7075743a20636f72652d657870722c0a2020617574686f7269747953636f70653a20636f72652d657870722c0a202062617369733a20636f72652d657870722c0a20206275646765743a2065787465726e616c2d616374696f6e2d6275646765742c0a20207265636f6e63696c696174696f6e4c61773a207461726765742d69722d7265736f757263652d7265662c0a202073746174653a20226177616974696e67536574746c656d656e74222c0a2020736574746c656d656e7441646d697373696f6e3a2022736368656d615265717569726564222c0a7d0a", + "rawSha256": "8d77c84ecbd7d7e38496479b2f8346c15504a56f076170d79c0eca2a57fdb3a5" }, "contracts": [ {"contract": "authority-facts", "rootRule": "authority-facts"}, diff --git a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/evidence/provenance.provider-generation.json b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/evidence/provenance.provider-generation.json index e4e9b595..b28b5fe1 100644 --- a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/evidence/provenance.provider-generation.json +++ b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/evidence/provenance.provider-generation.json @@ -1 +1 @@ -{"apiVersion":"wesley.generation-provenance-manifest/v1","contractVersions":{"generatorAbi":"wesley.extension-generator/v1","inputSchema":"wesley.extension-generation-input/v1","provenanceSchema":"wesley.generation-provenance-manifest/v1"},"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:be164fde5fedaf2c3921dbde3013e4ee6b884d085f22802d5e5d0d7134266201"}],"generationInputDigest":"sha256:dbcc90f465d2a461d6fa107b499a16eedfe49ec8c633c247eeedad2d1cd82022","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:0d60fce10bc16a6909069415b9aa6057328f230a4b0a84b2d56566794f60cc08","version":"0.1.0"},"settingsDigest":"sha256:0f708e76898de6fdb8186352e81d0f5c445adf94bb6c7de9204952d9fe913d4a","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:c663df6dd3d463aad878ae9c3beebf42fe057d7395f91b6d3823d0e0fab77f50"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:6228ebfc8ac9fc21f05d624cccaa731346acfb9203294dbcc767fa4d649fc7e8"}]} \ No newline at end of file +{"apiVersion":"wesley.generation-provenance-manifest/v1","contractVersions":{"generatorAbi":"wesley.extension-generator/v1","inputSchema":"wesley.extension-generation-input/v1","provenanceSchema":"wesley.generation-provenance-manifest/v1"},"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:95f1de04b947f5d1e75d3c73bf6482977e996ee63c4cd2ed8b37f0fd325fd081"}],"generationInputDigest":"sha256:0c07274803d465ec212c313f74dd46396851f43019fa0f97da9571a167c84587","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:80b0a702752d05685478558b7187acbfabe93b2f801646805f3c4b636dc7548a","version":"0.1.0"},"settingsDigest":"sha256:0f708e76898de6fdb8186352e81d0f5c445adf94bb6c7de9204952d9fe913d4a","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:8d77c84ecbd7d7e38496479b2f8346c15504a56f076170d79c0eca2a57fdb3a5"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:bc222c4a669b888a60df6f398412bae232967c11841b9a27c7ba6c18eb41e362"}]} \ No newline at end of file diff --git a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/evidence/review.provider-generation.json b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/evidence/review.provider-generation.json index 1fc41834..dcf42d7d 100644 --- a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/evidence/review.provider-generation.json +++ b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/evidence/review.provider-generation.json @@ -1 +1 @@ -{"apiVersion":"wesley.generation-review/v1","authoritative":false,"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:be164fde5fedaf2c3921dbde3013e4ee6b884d085f22802d5e5d0d7134266201"}],"generationInputDigest":"sha256:dbcc90f465d2a461d6fa107b499a16eedfe49ec8c633c247eeedad2d1cd82022","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:0d60fce10bc16a6909069415b9aa6057328f230a4b0a84b2d56566794f60cc08","version":"0.1.0"},"projectionRoles":["authority-facts.echo-dpo","authority-facts.echo-lawpack","generated-artifact-profile.echo-dpo-registration","lawpack.echo-dpo","schema.echo-provider-artifacts","target-profile.echo-dpo"],"provenanceManifestDigest":"sha256:02e516519f0f765831d41aca41c07215563da0cf8b9c0f4fa17cc1937a1df64d","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:c663df6dd3d463aad878ae9c3beebf42fe057d7395f91b6d3823d0e0fab77f50"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:6228ebfc8ac9fc21f05d624cccaa731346acfb9203294dbcc767fa4d649fc7e8"}]} \ No newline at end of file +{"apiVersion":"wesley.generation-review/v1","authoritative":false,"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:95f1de04b947f5d1e75d3c73bf6482977e996ee63c4cd2ed8b37f0fd325fd081"}],"generationInputDigest":"sha256:0c07274803d465ec212c313f74dd46396851f43019fa0f97da9571a167c84587","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:80b0a702752d05685478558b7187acbfabe93b2f801646805f3c4b636dc7548a","version":"0.1.0"},"projectionRoles":["authority-facts.echo-dpo","authority-facts.echo-lawpack","generated-artifact-profile.echo-dpo-registration","lawpack.echo-dpo","schema.echo-provider-artifacts","target-profile.echo-dpo"],"provenanceManifestDigest":"sha256:c16055cee6e12e36094522d1226896c0b7c17e1e8e2549a9d7a81cedcb641215","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:8d77c84ecbd7d7e38496479b2f8346c15504a56f076170d79c0eca2a57fdb3a5"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:bc222c4a669b888a60df6f398412bae232967c11841b9a27c7ba6c18eb41e362"}]} \ No newline at end of file diff --git a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/primary/schema.echo-provider-artifacts.cddl b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/primary/schema.echo-provider-artifacts.cddl index b9b351db..73051b85 100644 --- a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/primary/schema.echo-provider-artifacts.cddl +++ b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/generated/primary/schema.echo-provider-artifacts.cddl @@ -111,7 +111,8 @@ core-import = { core-type = core-scalar-type / core-record-type / core-variant-type / core-option-type / core-list-type / core-map-type / - core-capability-ref-type / core-external-action-request-type + core-capability-ref-type / core-external-action-request-type / + core-nominal-type core-scalar-type = core-bool-type / core-int-type / core-string-type / core-bytes-type / core-unit-type @@ -131,6 +132,11 @@ core-bytes-type = { ? min: uint, max: uint, } +core-nominal-type = { + kind: "Nominal", + contract: tstr, + representation: core-type-ref, +} core-record-type = { kind: "Record", fields: { * tstr => core-type-ref }, diff --git a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/provider-manifest.echo.json b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/provider-manifest.echo.json index 85365cec..f8c7a67a 100644 --- a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/provider-manifest.echo.json +++ b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/provider-manifest.echo.json @@ -3,7 +3,7 @@ "providerAbi": "edict:target-provider@1.0.0", "provider": { "coordinate": "echo.edict-provider@1", - "digest": "sha256:a4e0d9e31ada5c8c14adfce05fdecb228e5b79545f3574a5e21e7db71ab3f307" + "digest": "sha256:d88b6d5de6587a5c584bef1e23f84cc259e81c61743b17248c9935f5e3ee3f71" }, "artifacts": [ { @@ -21,7 +21,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:0d60fce10bc16a6909069415b9aa6057328f230a4b0a84b2d56566794f60cc08" + "digest": "sha256:80b0a702752d05685478558b7187acbfabe93b2f801646805f3c4b636dc7548a" } } }, @@ -40,7 +40,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:0d60fce10bc16a6909069415b9aa6057328f230a4b0a84b2d56566794f60cc08" + "digest": "sha256:80b0a702752d05685478558b7187acbfabe93b2f801646805f3c4b636dc7548a" } } }, @@ -59,7 +59,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:0d60fce10bc16a6909069415b9aa6057328f230a4b0a84b2d56566794f60cc08" + "digest": "sha256:80b0a702752d05685478558b7187acbfabe93b2f801646805f3c4b636dc7548a" } } }, @@ -78,7 +78,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:0d60fce10bc16a6909069415b9aa6057328f230a4b0a84b2d56566794f60cc08" + "digest": "sha256:80b0a702752d05685478558b7187acbfabe93b2f801646805f3c4b636dc7548a" } } }, @@ -102,7 +102,7 @@ "artifactKind": "generationProvenance", "resource": { "coordinate": "echo.edict-provider-generation-provenance@1", - "digest": "sha256:42ca6d8fe5c04279f5350f2d03cdee55feec5ea5f791b98e64bd3e36fe33468f" + "digest": "sha256:2d1b1a63e1aadea9bbb4d2305e982aef432ad63f648048461ea4e1ee0944cb84" }, "source": { "kind": "generated", @@ -112,7 +112,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:0d60fce10bc16a6909069415b9aa6057328f230a4b0a84b2d56566794f60cc08" + "digest": "sha256:80b0a702752d05685478558b7187acbfabe93b2f801646805f3c4b636dc7548a" } } }, @@ -121,7 +121,7 @@ "artifactKind": "reviewArtifact", "resource": { "coordinate": "echo.edict-provider-generation-review@1", - "digest": "sha256:eada76ddbf0d7145502814d633482a624d0a3b1c360eef66903f476e3f1a66c2" + "digest": "sha256:f5fb7a793acd0cc84776de672f0805174a86c55f04ad7da67acccf4f090049cc" }, "source": { "kind": "generated", @@ -131,7 +131,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:0d60fce10bc16a6909069415b9aa6057328f230a4b0a84b2d56566794f60cc08" + "digest": "sha256:80b0a702752d05685478558b7187acbfabe93b2f801646805f3c4b636dc7548a" } } }, @@ -140,7 +140,7 @@ "artifactKind": "artifactSchema", "resource": { "coordinate": "echo.provider-artifacts.cddl@1", - "digest": "sha256:be164fde5fedaf2c3921dbde3013e4ee6b884d085f22802d5e5d0d7134266201" + "digest": "sha256:95f1de04b947f5d1e75d3c73bf6482977e996ee63c4cd2ed8b37f0fd325fd081" }, "source": { "kind": "generated", @@ -150,7 +150,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:0d60fce10bc16a6909069415b9aa6057328f230a4b0a84b2d56566794f60cc08" + "digest": "sha256:80b0a702752d05685478558b7187acbfabe93b2f801646805f3c4b636dc7548a" } } }, @@ -169,7 +169,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:0d60fce10bc16a6909069415b9aa6057328f230a4b0a84b2d56566794f60cc08" + "digest": "sha256:80b0a702752d05685478558b7187acbfabe93b2f801646805f3c4b636dc7548a" } } }, diff --git a/crates/echo-wesley-gen/src/provider_contract_pack.rs b/crates/echo-wesley-gen/src/provider_contract_pack.rs index 2ed4a239..8385a438 100644 --- a/crates/echo-wesley-gen/src/provider_contract_pack.rs +++ b/crates/echo-wesley-gen/src/provider_contract_pack.rs @@ -32,14 +32,14 @@ pub const EDICT_PROVIDER_CONTRACT_PACK_LICENSE: &str = "Apache-2.0"; /// SHA-256 of the admitted self-contained CDDL bytes. pub const EDICT_PROVIDER_CONTRACT_PACK_SCHEMA_SHA256: &str = - "c663df6dd3d463aad878ae9c3beebf42fe057d7395f91b6d3823d0e0fab77f50"; + "8d77c84ecbd7d7e38496479b2f8346c15504a56f076170d79c0eca2a57fdb3a5"; /// SHA-256 of the admitted Edict publication manifest bytes. pub const EDICT_PROVIDER_CONTRACT_PACK_MANIFEST_SHA256: &str = - "6228ebfc8ac9fc21f05d624cccaa731346acfb9203294dbcc767fa4d649fc7e8"; + "bc222c4a669b888a60df6f398412bae232967c11841b9a27c7ba6c18eb41e362"; /// Maximum manifest size parsed at the contract-pack authority boundary. -pub const EDICT_PROVIDER_CONTRACT_PACK_MANIFEST_MAX_BYTES: usize = 71_925; +pub const EDICT_PROVIDER_CONTRACT_PACK_MANIFEST_MAX_BYTES: usize = 72_177; const EXPECTED_CONTRACTS: [(&str, &str); 11] = [ ("authority-facts", "authority-facts"), diff --git a/crates/echo-wesley-gen/tests/provider_contract_pack.rs b/crates/echo-wesley-gen/tests/provider_contract_pack.rs index 0665b977..85ff1c68 100644 --- a/crates/echo-wesley-gen/tests/provider_contract_pack.rs +++ b/crates/echo-wesley-gen/tests/provider_contract_pack.rs @@ -48,7 +48,7 @@ fn checked_edict_provider_contract_pack_is_admitted() { assert_eq!(pack.license(), "Apache-2.0"); assert_eq!( pack.schema_sha256(), - "c663df6dd3d463aad878ae9c3beebf42fe057d7395f91b6d3823d0e0fab77f50" + "8d77c84ecbd7d7e38496479b2f8346c15504a56f076170d79c0eca2a57fdb3a5" ); assert_eq!(pack.contract_count(), 11); assert_eq!(pack.domain_count(), 7); @@ -86,7 +86,7 @@ fn tampered_contract_cddl_has_stable_failure_kind() { error.to_string(), concat!( "provider contract pack schema-bytes-mismatch: schema.bytesHex -> ", - "c663df6dd3d463aad878ae9c3beebf42fe057d7395f91b6d3823d0e0fab77f50" + "8d77c84ecbd7d7e38496479b2f8346c15504a56f076170d79c0eca2a57fdb3a5" ) ); } diff --git a/schemas/edict-provider/contracts/v1/README.md b/schemas/edict-provider/contracts/v1/README.md index 383c0050..960fd09b 100644 --- a/schemas/edict-provider/contracts/v1/README.md +++ b/schemas/edict-provider/contracts/v1/README.md @@ -9,7 +9,7 @@ This directory vendors the exact Edict provider contract pack introduced in [Edict PR #174](https://github.com/flyingrobots/edict/pull/174), and extended with generic pure bindings in [Edict PR #201](https://github.com/flyingrobots/edict/pull/201) at commit -[`68633c409474b9dffac4a33a674b2a3f29ad865c`](https://github.com/flyingrobots/edict/commit/68633c409474b9dffac4a33a674b2a3f29ad865c): +[`39a796de04b3400f569880da06878da50d8ed0ee`](https://github.com/flyingrobots/edict/commit/39a796de04b3400f569880da06878da50d8ed0ee): - `edict-provider-contracts.cddl` is the assembled Edict-owned CDDL contract. - `manifest.json` binds that CDDL and its contract resources to their published diff --git a/schemas/edict-provider/contracts/v1/edict-provider-contracts.cddl b/schemas/edict-provider/contracts/v1/edict-provider-contracts.cddl index 54d52121..0d4204fd 100644 --- a/schemas/edict-provider/contracts/v1/edict-provider-contracts.cddl +++ b/schemas/edict-provider/contracts/v1/edict-provider-contracts.cddl @@ -111,7 +111,8 @@ core-import = { core-type = core-scalar-type / core-record-type / core-variant-type / core-option-type / core-list-type / core-map-type / - core-capability-ref-type / core-external-action-request-type + core-capability-ref-type / core-external-action-request-type / + core-nominal-type core-scalar-type = core-bool-type / core-int-type / core-string-type / core-bytes-type / core-unit-type @@ -131,6 +132,11 @@ core-bytes-type = { ? min: uint, max: uint, } +core-nominal-type = { + kind: "Nominal", + contract: tstr, + representation: core-type-ref, +} core-record-type = { kind: "Record", fields: { * tstr => core-type-ref }, diff --git a/schemas/edict-provider/contracts/v1/manifest.json b/schemas/edict-provider/contracts/v1/manifest.json index 6ba0fbab..0a4fe2b2 100644 --- a/schemas/edict-provider/contracts/v1/manifest.json +++ b/schemas/edict-provider/contracts/v1/manifest.json @@ -3,8 +3,8 @@ "coordinate": "edict.provider-contract-pack.cddl@1", "license": "Apache-2.0", "schema": { - "bytesHex": "3b20535044582d4c6963656e73652d4964656e7469666965723a204170616368652d322e300a3b2065646963742d70726f76696465722d636f6e7472616374732e6364646c0a3b2047656e6572617465642066726f6d2045646963742d6f776e65642041424920667261676d656e74732e20444f204e4f5420454449542e0a0a3b202d2d2d2065646963742d636f6d6d6f6e2e6364646c202d2d2d0a3b2065646963742d636f6d6d6f6e2e6364646c0a3b20536861726564204344444c20747970657320666f722074686520456469637420414249732c20646566696e6564204f4e4345206865726520736f20746865792063616e6e6f742064726966740a3b202845444943542d4142492d4e4f4455502d303031292e2054776f2067726f7570733a0a3b2020202d207265736f757263652d7265662c207368613235362d6469676573742c206566666563742d6661696c7572652d626f64792c206566666563742d6b696e642c20617574686f726974792d636c6173732c0a3b2020202020636f72652d747970652d7265663a20617373656d626c656420776974682065646963742d7461726765742d70726f66696c652e6364646c20616e640a3b202020202065646963742d6c61777061636b2e6364646c20627920746865206275696c643b2074686f736520736368656d617320646f206e6f74207265646566696e65207468656d2e0a3b2020202d206f7065726174696f6e2d70726f66696c652c206f707469632d74656d706c6174652c2061706572747572652d726571756972656d656e7420616e6420746865697220726566733a0a3b2020202020636f6e73756d65642062792074686520436f72652f6f70746963206c61796572202865646963742d636f72652e6364646c2920616e64207265666572656e636564206279207468650a3b20202020206c616e67756167652f7461726765742d70726f66696c652073706563732e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a0a3b2041206e6f726d617469766520737562636f6d706f6e656e74207265666572656e636564206279206964656e7469747920706c7573206469676573742e204d616e696665737473206e657665720a3b20656d626564207468656972206f776e2073656c662d64696765737420696e20746865697220707265696d616765202845444943542d434f52452d53454c46484153482d303031292e0a7265736f757263652d726566203d207b2069643a20747374722c206469676573743a207368613235362d646967657374207d0a0a3b20446967657374732061726520617574686f726974617469766520617320747970656420627974652076616c7565732c206e657665722068657820737472696e67732e20526576696577204a534f4e0a3b2072656e64657273207468697320617320227368613235363a3c3634206c6f77657263617365206865783e22202845444943542d4449474553542d574952452d303031292e0a7368613235362d646967657374203d205b20616c676f726974686d3a2022736861323536222c2062797465733a2062737472202e73697a65203332205d0a0a3b2041206e616d6564206c6f772d6c6576656c206661696c75726520616e206566666563742063616e2072616973652e2054686520736f75726365206f62737472756374696f6e206d61700a3b2062696e64732069742028627920636f6f7264696e6174652920616e6420636f6e73747275637473206120747970656420646f6d61696e206f62737472756374696f6e2066726f6d206974730a3b207061796c6f6164202845444943542d4142492d4641494c5552452d4e414d45442d303031292e0a3b20416e20656666656374277320606566666563744661696c7572657360206c697374204d555354206861766520756e697175652060636f6f7264696e61746560733a2073696e6365207468650a3b206f62737472756374696f6e206d6170206973206b6579656420627920636f6f7264696e6174652c2074776f206661696c757265732073686172696e67206120636f6f7264696e61746520286576656e0a3b207769746820646966666572656e7420617574686f72697479436c6173732f7061796c6f61645479706529206d616b652065786861757374697665206d617070696e6720616e642062696e6465720a3b20747970696e6720616d626967756f757320616e64206172652072656a6563746564202845444943542d4142492d4641494c5552452d554e495155452d303031292e0a3b0a3b2045666665637473206361727279207468656972206661696c757265732061732061206d617020607b206661696c7572652d6964656e74203d3e206566666563742d6661696c7572652d626f6479207d600a3b202873656520746865207461726765742f6c61777061636b2065666665637420736368656d6173292e20546865206661696c75726520636f6f7264696e61746520697320746865206d61700a3b204b45592c20736f206974206973206e6f7420726570656174656420696e2074686520626f647920616e642063616e6e6f74206469736167726565207769746820746865206b65792e0a6566666563742d6661696c7572652d626f6479203d207b0a2020617574686f72697479436c6173733a20617574686f726974792d636c6173732c0a20207061796c6f6164547970653a20636f72652d747970652d7265662c202020202020202020202020203b2074797065642c20626f756e64656420286d617920626520656d707479207265636f7264290a7d0a0a3b2041206661696c75726520636f6f7264696e617465206d7573742062652061206261726520456469637420606964656e746020286c65747465722f756e64657273636f7265207468656e0a3b206c6574746572732f6469676974732f756e64657273636f7265732920414e44206d757374206e6f742062652061207265736572766564206b6579776f72642028652e672e2060656c7365602c0a3b20606261736973602c20607768657265602c206072657175697265602c2060666f72602c2060696660292e2054686520736f75726365206f62737472756374696f6e2d6d6170204c4853206f6e6c790a3b20616363657074732061206e6f6e2d6b6579776f726420606964656e74602c20736f20612068797068656e2f646f742f6b6579776f726420636f6f7264696e61746520776f756c642062650a3b204142492d76616c69642079657420696d706f737369626c6520746f206d617020657868617573746976656c7920696e20736f757263652e20546865207265676578206361707475726573207468650a3b206c65786963616c2073686170653b206b6579776f7264206578636c7573696f6e20697320616e206164646974696f6e616c2076616c69646174696f6e2072756c650a3b202845444943542d4142492d4641494c5552452d4944454e542d303031292e0a6661696c7572652d6964656e74203d2074737472202e72656765787020225b412d5a612d7a5f5d5b412d5a612d7a302d395f5d2a220a0a6566666563742d6b696e64203d20227265616422202f202263726561746522202f2022656e7375726522202f20227265706c61636522202f202264656c65746522202f0a202020202020202020202020202022617070656e6422202f202272656475636522202f202273656d616e7469632e656d697422202f2022637573746f6d220a0a617574686f726974792d636c617373203d2022646f6d61696e4d61707061626c6522202f20227061727469636970616e744f776e656422202f2022696e746567726974794661756c7422202f0a202020202020202020202020202020202020227265736f757263654661756c7422202f2022696e7465726e616c4661756c74220a0a636f72652d747970652d726566203d20747374722020203b2063616e6f6e6963616c20436f7265207479706520636f6f7264696e6174650a0a3b20416e206f7065726174696f6e2070726f66696c6520737570706c69657320746865206f707469632074656d706c617465206120436f726520696e74656e74207265736f6c766573206974730a3b206f707469634b696e642f626f756e646172794b696e642f737570706f7274506f6c6963792f6c6f7373446973706f736974696f6e2066726f6d2e205461726765742070726f66696c657320616e640a3b206c61777061636b73207075626c6973682074686573652061732061206d617020607b20636f6f7264696e617465203d3e206f7065726174696f6e2d70726f66696c65207d602c20736f207468650a3b20636f6f7264696e61746520697320746865204b45592c206e6f7420612076616c7565206669656c64202845444943542d4f505449432d54454d504c4154452d4f574e45522d3030312c0a3b2045444943542d4142492d4f5050524f46494c452d554e495155452d303031292e0a6f7065726174696f6e2d70726f66696c65203d207b0a20206f7074696354656d706c6174653a206f707469632d74656d706c6174652c0a20206566666563745072656469636174653a20747374722c20202020202020202020203b20636f6f7264696e617465206f6620746865206f7065726174696f6e2d6d6f6465207072656469636174650a7d0a0a6f707469632d74656d706c617465203d207b0a20206f707469634b696e643a2022726576656c6174696f6e22202f20226166666563745265696e746567726174696f6e222c0a2020626f756e646172794b696e643a202270726f6a656374696f6e22202f2022616666656374222c0a2020737570706f7274506f6c6963793a20747374722c202020202020202020202020203b2063616e6f6e6963616c20737570706f72742d706f6c69637920636f6f7264696e6174650a20206c6f7373446973706f736974696f6e3a20747374722c20202020202020202020203b2063616e6f6e6963616c206c6f73732d646973706f736974696f6e20636f6f7264696e6174650a20203f20626173697354656d706c6174653a20747374722c20202020202020202020203b206f7074696f6e616c206469676573742d6c6f636b65642062617369732074656d706c61746520636f6f72640a20203b2074686520617065727475726520726571756972656d656e7420746869732074656d706c61746520737570706c6965732e205265717569726564207768656e207468652074656d706c6174650a20203b2069732074686520736f75726365206f66206120436f7265206f707469632773206170657274757265526571756972656d656e742028692e652e2074686520696e74656e7420686173206e6f0a20203b20736f757263652060666f6f747072696e74203c3d202e2e2e60292c2073696e6365206170657274757265526571756972656d656e74206973206d616e6461746f727920696e20436f72650a20203b202845444943542d4f505449432d41504552545552452d5245462d303031292e0a20203f206170657274757265526571756972656d656e743a2061706572747572652d726571756972656d656e742c0a7d0a0a3b206170657274757265526571756972656d656e742069732061207479706564207265666572656e63652c206e65766572206120667265652d666f726d20737472696e672e2041207265766965770a3b2072656e646572696e67206d61792073686f772069747320636f6f7264696e617465202845444943542d4f505449432d41504552545552452d5245462d303031292e0a61706572747572652d726571756972656d656e74203d20666f6f747072696e742d6365696c696e672d726566202f2061627374726163742d666f6f747072696e742d6f626c69676174696f6e2d7265660a666f6f747072696e742d6365696c696e672d726566203d207b206b696e643a2022666f6f747072696e744365696c696e67222c207265663a2074737472207d0a61627374726163742d666f6f747072696e742d6f626c69676174696f6e2d726566203d207b206b696e643a20226162737472616374466f6f747072696e744f626c69676174696f6e222c207265663a2074737472207d0a0a3b202d2d2d2065646963742d636f72652e6364646c202d2d2d0a3b2065646963742d636f72652e6364646c0a3b204e6f726d617469766520736368656d6120666f722074686520456469637420436f72652076312073656d616e746963206d6f64656c2e0a3b0a3b2053636f706520626f756e646172793a20746869732066696c6520646566696e657320436f7265206d65616e696e6720616e6420736368656d61207368617065206f6e6c792e20497420646f65730a3b206e6f7420646566696e6520612063616e6f6e6963616c20656e636f6465722c20436f7265206d6f64756c652068617368206669656c64732c20686173682066697874757265732c207461726765740a3b206c6f776572696e672c2061646d697373696f6e2062756e646c65732c206f72207461726765742d6f776e65642049522e0a0a636f72652d6d6f64756c65203d207b0a202061706956657273696f6e3a202265646963742e636f72652f7631222c0a2020636f6f7264696e6174653a20747374722c0a2020696d706f7274733a205b2a20636f72652d696d706f72745d2c0a202074797065733a207b202a2074737472203d3e20636f72652d74797065207d2c0a2020696e74656e74733a207b202b2074737472203d3e20636f72652d696e74656e74207d2c0a20207265717569726564436f72654361706162696c69746965733a205b2a20747374725d2c0a7d0a0a636f72652d696d706f7274203d207b0a20206b696e643a20226c61777061636b22202f202274617267657422202f2022636f726522202f20226361706162696c697479222c0a20207265663a207265736f757263652d7265662c0a20203f20616c6961733a20747374722c0a7d0a0a3b202d2d2d207479706573202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a636f72652d74797065203d20636f72652d7363616c61722d74797065202f20636f72652d7265636f72642d74797065202f20636f72652d76617269616e742d74797065202f0a202020202020202020202020636f72652d6f7074696f6e2d74797065202f20636f72652d6c6973742d74797065202f20636f72652d6d61702d74797065202f0a202020202020202020202020636f72652d6361706162696c6974792d7265662d74797065202f20636f72652d65787465726e616c2d616374696f6e2d726571756573742d747970650a0a636f72652d7363616c61722d74797065203d20636f72652d626f6f6c2d74797065202f20636f72652d696e742d74797065202f20636f72652d737472696e672d74797065202f0a20202020202020202020202020202020202020636f72652d62797465732d74797065202f20636f72652d756e69742d747970650a0a636f72652d626f6f6c2d74797065203d207b206b696e643a2022426f6f6c22207d0a636f72652d756e69742d74797065203d207b206b696e643a2022556e697422207d0a636f72652d696e742d74797065203d207b0a20206b696e643a202249363422202f202255363422202f202249333222202f202255333222202f202249313622202f202255313622202f2022493822202f20225538222c0a7d0a636f72652d737472696e672d74797065203d207b0a20206b696e643a2022537472696e67222c0a20206d61783a2075696e742c0a202063616e6f6e6963616c3a2022756e69636f64652d7363616c61722d6e666322202f20227261772d75746638222c0a7d0a636f72652d62797465732d74797065203d207b0a20206b696e643a20224279746573222c0a20203f206d696e3a2075696e742c0a20206d61783a2075696e742c0a7d0a636f72652d7265636f72642d74797065203d207b0a20206b696e643a20225265636f7264222c0a20206669656c64733a207b202a2074737472203d3e20636f72652d747970652d726566207d2c0a7d0a636f72652d76617269616e742d74797065203d207b0a20206b696e643a202256617269616e74222c0a202063617365733a207b202b2074737472203d3e2076617269616e742d636173652d626f6479207d2c0a7d0a76617269616e742d636173652d626f6479203d207b0a20203f207061796c6f61643a20636f72652d747970652d7265662c0a7d0a636f72652d6f7074696f6e2d74797065203d207b0a20206b696e643a20224f7074696f6e222c0a20206974656d3a20636f72652d747970652d7265662c0a7d0a636f72652d6c6973742d74797065203d207b0a20206b696e643a20224c697374222c0a20206974656d3a20636f72652d747970652d7265662c0a20206d61783a2075696e742c0a7d0a636f72652d6d61702d74797065203d207b0a20206b696e643a20224d6170222c0a20206b65793a20636f72652d747970652d7265662c0a202076616c75653a20636f72652d747970652d7265662c0a20206d61783a2075696e742c0a7d0a636f72652d6361706162696c6974792d7265662d74797065203d207b0a20206b696e643a20224361706162696c697479526566222c0a20206974656d3a20636f72652d747970652d7265662c0a7d0a636f72652d65787465726e616c2d616374696f6e2d726571756573742d74797065203d207b0a20206b696e643a202245787465726e616c416374696f6e52657175657374222c0a2020736574746c656d656e743a20636f72652d747970652d7265662c0a7d0a0a3b20636f72652d747970652d72656620697320646566696e656420696e2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d612e0a0a3b202d2d2d207265666572656e63657320616e642076616c756573202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a3b204c6f63616c206964656e7469747920697320616c7068612d737461626c652e20606964602069732074686520636f6d70696c65722d6f776e6564206c6f63616c20636f6f7264696e6174653b0a3b2060616c7068614e616d656020697320746865206e6f726d616c697a65642068756d616e2f6465627567206e616d652e20536f757263652062696e646572207370656c6c696e67206973206e6f740a3b206964656e746974792e0a6c6f63616c2d726566203d207b0a202069643a20747374722c0a2020616c7068614e616d653a20747374722c0a2020747970653a20636f72652d747970652d7265662c0a7d0a0a636f72652d76616c7565203d20636f72652d6e756c6c2d76616c7565202f20636f72652d626f6f6c2d76616c7565202f20636f72652d696e742d76616c7565202f0a20202020202020202020202020636f72652d737472696e672d76616c7565202f20636f72652d62797465732d76616c7565202f20636f72652d7265636f72642d76616c7565202f0a20202020202020202020202020636f72652d76617269616e742d76616c7565202f20636f72652d6c6973742d76616c7565202f20636f72652d6d61702d76616c7565202f0a20202020202020202020202020636f72652d6361706162696c6974792d76616c75650a0a636f72652d6e756c6c2d76616c7565203d207b206b696e643a20226e756c6c22207d0a636f72652d626f6f6c2d76616c7565203d207b206b696e643a2022626f6f6c222c2076616c75653a20626f6f6c207d0a636f72652d696e742d76616c7565203d207b206b696e643a2022696e74222c2077696474683a20747374722c2076616c75653a20696e74207d0a636f72652d737472696e672d76616c7565203d207b206b696e643a2022737472696e67222c2076616c75653a2074737472207d0a636f72652d62797465732d76616c7565203d207b206b696e643a20226279746573222c2076616c75653a2062737472207d0a636f72652d7265636f72642d76616c7565203d207b206b696e643a20227265636f7264222c206669656c64733a207b202a2074737472203d3e20636f72652d76616c7565207d207d0a636f72652d76617269616e742d76616c7565203d207b0a20206b696e643a202276617269616e74222c0a2020747970653a20636f72652d747970652d7265662c0a2020636173653a20747374722c0a20203f207061796c6f61643a20636f72652d76616c75652c0a7d0a636f72652d6c6973742d76616c7565203d207b206b696e643a20226c697374222c2076616c7565733a205b2a20636f72652d76616c75655d207d0a636f72652d6d61702d76616c7565203d207b206b696e643a20226d6170222c20656e74726965733a205b2a205b6b65793a20636f72652d76616c75652c2076616c75653a20636f72652d76616c75655d5d207d0a636f72652d6361706162696c6974792d76616c7565203d207b0a20206b696e643a20226361706162696c697479222c0a2020726563656970743a207368613235362d6469676573742c0a7d0a0a3b2045646963742d617574686f72656420707572652068656c70657273207573652061207075726520436f72652066756e6374696f6e20626f64792e2054686520626f64792063616e2062696e640a3b20707572652065787072657373696f6e7320616e642072657475726e20616e2065787072657373696f6e2c206275742069742063616e6e6f7420636f6e7461696e20436f7265206566666563742c0a3b2067756172642c206272616e63682c206c6f6f702c206d617463682d6e6f64652c206f722070726f6f662d6f626c69676174696f6e206e6f6465732e0a636f72652d666e2d626f6479203d207b0a2020706172616d733a205b2a206c6f63616c2d7265665d2c0a2020626f64793a20636f72652d707572652d626c6f636b2c0a7d0a0a636f72652d707572652d626c6f636b203d207b0a20206c6f63616c733a205b2a206c6f63616c2d7265665d2c0a202062696e64696e67733a205b2a20707572652d6c65742d6e6f64655d2c0a2020726573756c743a20636f72652d657870722c0a7d0a0a707572652d6c65742d6e6f6465203d207b0a20206b696e643a20226c6574222c0a202062696e64696e673a206c6f63616c2d7265662c0a202076616c75653a20636f72652d657870722c0a7d0a0a3b202d2d2d2065787072657373696f6e7320616e642070726564696361746573202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a636f72652d65787072203d206c6f63616c2d65787072202f20636f6e73742d65787072202f207265636f72642d65787072202f206669656c642d65787072202f0a20202020202020202020202076617269616e742d65787072202f206d617463682d65787072202f2063616c6c2d65787072202f206c6973742d65787072202f206d61702d65787072202f0a20202020202020202020202069662d657870720a0a6c6f63616c2d65787072203d207b206b696e643a20226c6f63616c222c207265663a206c6f63616c2d726566207d0a636f6e73742d65787072203d207b206b696e643a2022636f6e7374222c2076616c75653a20636f72652d76616c7565207d0a7265636f72642d65787072203d207b206b696e643a20227265636f7264222c206669656c64733a207b202a2074737472203d3e20636f72652d65787072207d207d0a6669656c642d65787072203d207b206b696e643a20226669656c64222c20626173653a20636f72652d657870722c206669656c643a2074737472207d0a76617269616e742d65787072203d207b0a20206b696e643a202276617269616e74222c0a2020747970653a20636f72652d747970652d7265662c0a2020636173653a20747374722c0a20203f207061796c6f61643a20636f72652d657870722c0a7d0a6d617463682d65787072203d207b0a20206b696e643a20226d61746368222c0a20207363727574696e65653a20636f72652d657870722c0a202061726d733a205b2b206d617463682d61726d5d2c0a7d0a6d617463682d61726d203d207b0a2020636173653a20747374722c0a20203f2062696e6465723a206c6f63616c2d7265662c0a2020626f64793a20636f72652d657870722c0a7d0a63616c6c2d65787072203d207b0a20206b696e643a202263616c6c222c0a202063616c6c65653a20747374722c0a202074797065417267733a205b2a20636f72652d747970652d7265665d2c0a2020617267733a205b2a20636f72652d657870725d2c0a7d0a6c6973742d65787072203d207b206b696e643a20226c697374222c2076616c7565733a205b2a20636f72652d657870725d207d0a6d61702d65787072203d207b206b696e643a20226d6170222c20656e74726965733a205b2a205b6b65793a20636f72652d657870722c2076616c75653a20636f72652d657870725d5d207d0a69662d65787072203d207b0a20206b696e643a20226966222c0a20207072656469636174653a20636f72652d7072656469636174652c0a20207468656e3a20636f72652d657870722c0a2020656c73653a20636f72652d657870722c0a7d0a0a636f72652d707265646963617465203d20747275652d707265646963617465202f2066616c73652d707265646963617465202f206e6f742d707265646963617465202f0a2020202020202020202020202020202020616c6c2d707265646963617465202f20616e792d707265646963617465202f20636f6d706172652d707265646963617465202f0a202020202020202020202020202020202063616c6c2d707265646963617465202f206f62737472756374696f6e2d7072656469636174650a0a747275652d707265646963617465203d207b206b696e643a20227472756522207d0a66616c73652d707265646963617465203d207b206b696e643a202266616c736522207d0a6e6f742d707265646963617465203d207b206b696e643a20226e6f74222c2076616c75653a20636f72652d707265646963617465207d0a616c6c2d707265646963617465203d207b206b696e643a2022616c6c222c2076616c7565733a205b2b20636f72652d7072656469636174655d207d0a616e792d707265646963617465203d207b206b696e643a2022616e79222c2076616c7565733a205b2b20636f72652d7072656469636174655d207d0a636f6d706172652d707265646963617465203d207b0a20206b696e643a2022636f6d70617265222c0a20206f703a20223d3d22202f2022213d22202f20223c22202f20223c3d22202f20223e22202f20223e3d222c0a20206c6566743a20636f72652d657870722c0a202072696768743a20636f72652d657870722c0a7d0a63616c6c2d707265646963617465203d207b0a20206b696e643a202263616c6c222c0a20207072656469636174653a20747374722c0a2020617267733a205b2a20636f72652d657870725d2c0a7d0a6f62737472756374696f6e2d707265646963617465203d207b0a20206b696e643a20226f62737472756374696f6e222c0a2020636f6f7264696e6174653a206661696c7572652d6964656e742c0a20207061796c6f61643a20636f72652d657870722c0a7d0a0a696e7075742d636f6e73747261696e74203d207b0a2020636f6f7264696e6174653a20747374722c0a2020736f757263653a2022776865726522202f2022636f6d70696c6572222c0a20207072656469636174653a20636f72652d7072656469636174652c0a7d0a0a3b202d2d2d20696e74656e74732c20626c6f636b732c20616e64206e6f646573202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a636f72652d696e74656e74203d207b0a2020696e7075743a20636f72652d747970652d7265662c0a20206f75747075743a20636f72652d747970652d7265662c0a202072657175697265644f7065726174696f6e50726f66696c653a20747374722c0a20203f2062617369733a20636f72652d657870722c0a2020696e707574436f6e73747261696e74733a205b2a20696e7075742d636f6e73747261696e745d2c0a2020636f72654576616c756174696f6e4275646765743a20636f72652d6275646765742c0a2020626f64793a20636f72652d626c6f636b2c0a20203f206f707469633a20636f72652d6f707469632c0a7d0a0a636f72652d627564676574203d207b0a20206d617853746570733a2075696e742c0a20206d6178416c6c6f636174656442797465733a2075696e742c0a20206d61784f757470757442797465733a2075696e742c0a7d0a0a636f72652d6f70746963203d207b0a20206f707469634b696e643a2022726576656c6174696f6e22202f20226166666563745265696e746567726174696f6e222c0a2020626f756e646172794b696e643a202270726f6a656374696f6e22202f2022616666656374222c0a20206170657274757265526571756972656d656e743a2061706572747572652d726571756972656d656e742c0a2020737570706f7274506f6c6963793a20747374722c0a20206c6f7373446973706f736974696f6e3a20747374722c0a7d0a0a636f72652d626c6f636b203d207b0a20206c6f63616c733a205b2a206c6f63616c2d7265665d2c0a20206e6f6465733a205b2a20636f72652d6e6f64655d2c0a2020726573756c743a20636f72652d657870722c0a7d0a0a636f72652d6e6f6465203d206c65742d6e6f6465202f20726571756972652d6e6f6465202f206566666563742d6e6f6465202f0a20202020202020202020202065787465726e616c2d616374696f6e2d726571756573742d6e6f6465202f2067756172642d6e6f6465202f206272616e63682d6e6f6465202f0a202020202020202020202020666f722d6e6f6465202f206d617463682d6e6f6465202f2070726f6f662d6f626c69676174696f6e2d6e6f64650a0a6c65742d6e6f6465203d207b0a20206b696e643a20226c6574222c0a202062696e64696e673a206c6f63616c2d7265662c0a202076616c75653a20636f72652d657870722c0a7d0a726571756972652d6e6f6465203d207b0a20206b696e643a202272657175697265222c0a20207072656469636174653a20636f72652d7072656469636174652c0a20206f6e4661696c7572653a20726571756972652d6661696c7572652d61726d2c0a7d0a726571756972652d6661696c7572652d61726d203d207465726d696e616c2d726571756972652d6661696c757265202f0a20202020202020202020202020202020202020202020636f6e74696e75652d6f6273747275637465642d726571756972652d6661696c7572650a7465726d696e616c2d726571756972652d6661696c757265203d207b0a20206b696e643a20227465726d696e616c222c0a2020726561736f6e3a206f62737472756374696f6e2d726561736f6e2c0a7d0a636f6e74696e75652d6f6273747275637465642d726571756972652d6661696c757265203d207b0a20206b696e643a2022636f6e74696e75654f627374727563746564222c0a2020726561736f6e3a206f62737472756374696f6e2d726561736f6e2c0a7d0a6f62737472756374696f6e2d726561736f6e203d207b0a2020726561736f6e4b696e643a20747374722c0a20207061796c6f61643a207b202a2074737472203d3e20636f72652d65787072207d2c0a7d0a6566666563742d6e6f6465203d207b0a20206b696e643a2022656666656374222c0a202062696e64696e673a206c6f63616c2d7265662c0a20206566666563743a20747374722c0a2020696e7075743a20636f72652d657870722c0a20206f62737472756374696f6e4d61703a207b202a206661696c7572652d6964656e74203d3e206f62737472756374696f6e2d61726d207d2c0a7d0a65787465726e616c2d616374696f6e2d726571756573742d6e6f6465203d207b0a20206b696e643a202265787465726e616c416374696f6e52657175657374222c0a202062696e64696e673a206c6f63616c2d7265662c0a20206f7065726174696f6e3a207265736f757263652d7265662c0a2020696e707574547970653a20636f72652d747970652d7265662c0a2020736574746c656d656e74547970653a20636f72652d747970652d7265662c0a2020696e707574536368656d613a207265736f757263652d7265662c0a2020736574746c656d656e74536368656d613a207265736f757263652d7265662c0a2020696e7075743a20636f72652d657870722c0a2020617574686f7269747953636f70653a20636f72652d657870722c0a202062617369733a20636f72652d657870722c0a20206275646765743a2065787465726e616c2d616374696f6e2d6275646765742c0a20207265636f6e63696c696174696f6e4c61773a207265736f757263652d7265662c0a202073746174653a20226177616974696e67536574746c656d656e74222c0a2020736574746c656d656e7441646d697373696f6e3a2022736368656d615265717569726564222c0a7d0a65787465726e616c2d616374696f6e2d627564676574203d207b0a20206d6178536574746c656d656e7442797465733a20636f72652d657870722c0a20206d6178417474656d7074733a20636f72652d657870722c0a7d0a6f62737472756374696f6e2d61726d203d207b0a202062696e6465723a206c6f63616c2d7265662c0a202076616c75653a20636f72652d657870722c0a7d0a67756172642d6e6f6465203d207b0a20206b696e643a20226775617264222c0a20207072656469636174653a20636f72652d7072656469636174652c0a20206f62737472756374696f6e3a20636f72652d657870722c0a7d0a6272616e63682d6e6f6465203d207b0a20206b696e643a20226272616e6368222c0a20203f2062696e64696e673a206c6f63616c2d7265662c0a20207072656469636174653a20636f72652d7072656469636174652c0a20207468656e3a20636f72652d626c6f636b2c0a2020656c73653a20636f72652d626c6f636b2c0a7d0a666f722d6e6f6465203d207b0a20206b696e643a2022666f72222c0a202062696e6465723a206c6f63616c2d7265662c0a2020697465723a20636f72652d657870722c0a2020626f756e643a20636f72652d626f756e642c0a2020626f64793a20636f72652d626c6f636b2c0a7d0a6d617463682d6e6f6465203d207b0a20206b696e643a20226d61746368222c0a20207363727574696e65653a20636f72652d657870722c0a202061726d733a205b2b206d617463682d626c6f636b2d61726d5d2c0a7d0a6d617463682d626c6f636b2d61726d203d207b0a2020636173653a20747374722c0a20203f2062696e6465723a206c6f63616c2d7265662c0a2020626f64793a20636f72652d626c6f636b2c0a7d0a70726f6f662d6f626c69676174696f6e2d6e6f6465203d207b0a20206b696e643a202270726f6f66222c0a2020636f6f7264696e6174653a20747374722c0a20207072656469636174653a20636f72652d7072656469636174652c0a7d0a0a636f72652d626f756e64203d206c69746572616c2d626f756e64202f20636f6f7264696e6174652d626f756e640a6c69746572616c2d626f756e64203d207b206b696e643a20226c69746572616c222c2076616c75653a2075696e74207d0a636f6f7264696e6174652d626f756e64203d207b206b696e643a2022636f6f7264696e617465222c207265663a2074737472207d0a0a3b20536861726564207265736f757263652d7265662c207368613235362d6469676573742c206661696c7572652d6964656e742c2061706572747572652d726571756972656d656e742c20616e640a3b20636f72652d747970652d7265662061726520646566696e6564206f6e636520696e2065646963742d636f6d6d6f6e2e6364646c2e0a0a3b202d2d2d2065646963742d6c61777061636b2e6364646c202d2d2d0a3b2065646963742d6c61777061636b2e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f7220746865204564696374206c61777061636b206d616e696665737420616e64206578706f727420737572666163652e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e204a534f4e20696e207468652070726f73652073706563730a3b2069732061207265766965772072656e646572696e672067656e6572617465642066726f6d207468697320736368656d61202845444943542d4142492d4e4f4455502d303031292e0a0a6c61777061636b2d6d616e6966657374203d207b0a202061706956657273696f6e3a202265646963742e6c61777061636b2f7631222c0a202069643a20747374722c0a202076657273696f6e3a20747374722c0a20206163636570746564436f72654162693a205b2b20747374725d2c0a2020646570656e64656e636965733a205b2a206c61777061636b2d6465705d2c202020202020202020203b20616379636c69632c206469676573742d6c6f636b6564202845444943542d4c41575041434b2d4441472d303031290a20206578706f7274733a207265736f757263652d7265662c0a20203f2074617267657441646170746572733a205b2b207461726765742d616461707465725d2c2020203b207265717569726564206f6e6c7920696620616e792072756e74696d6520656666656374206578697374730a20203f2068656c706572436f6d706f6e656e743a2065786563757461626c652d636f6d706f6e656e742c203b2065786563757461626c652068656c70657273206361727279207468656972206f776e2073616e64626f782b6675656c0a202076657269666965723a2076657269666965722c202020202020202020202020202020202020202020203b20636c61737369666965643a206465636c61726174697665206f722065786563757461626c650a2020636f6d7061746962696c6974793a207265736f757263652d7265662c0a2020636f6e666f726d616e636546697874757265436f727075733a207265736f757263652d7265662c0a7d0a0a3b2041207665726966696572206973206569746865722061206465636c617261746976652072756c6573657420286e6f2072756e74696d6529206f7220616e2065786563757461626c650a3b20636f6d706f6e656e742e20416e2065786563757461626c65207665726966696572204d55535420636172727920697473206f776e2073616e64626f7820616e64206675656c206d6f64656c2c0a3b20736f2074686520736368656d6120656e666f726365732074686174206e6f2065786563757461626c6520636f6d706f6e656e74206973206c65667420756e626f756e6465640a3b202845444943542d4142492d56455249464945522d424f554e442d303031292e0a7665726966696572203d206465636c617261746976652d7665726966696572202f2065786563757461626c652d76657269666965720a6465636c617261746976652d7665726966696572203d207b20636c6173733a20226465636c61726174697665222c2072756c657365743a207265736f757263652d726566207d0a65786563757461626c652d7665726966696572203d207b0a2020636c6173733a202265786563757461626c65222c0a2020636f6d706f6e656e743a207265736f757263652d7265662c0a202073616e64626f783a207265736f757263652d7265662c0a20206675656c4d6f64656c3a207265736f757263652d7265662c0a7d0a0a3b20416e792065786563757461626c6520636f6d706f6e656e7420697320626f756e64656420627920697473206f776e2073616e64626f78202b206675656c206d6f64656c2e0a65786563757461626c652d636f6d706f6e656e74203d207b0a2020636f6d706f6e656e743a207265736f757263652d7265662c0a202073616e64626f783a207265736f757263652d7265662c0a20206675656c4d6f64656c3a207265736f757263652d7265662c0a7d0a0a6c61777061636b2d646570203d207b2069643a20747374722c2076657273696f6e3a20747374722c206469676573743a207368613235362d646967657374207d0a0a3b20416461707465722073656c656374696f6e206b65797320534f4c454c59206f666620746865206469676573742d6c6f636b65642060616363657074656454617267657450726f66696c65600a3b20286974732060696460206973207468652070726f66696c652069643b206974732060646967657374602070696e73207468652065786163742070726f66696c652f76657273696f6e292e2054686572650a3b20617265206e6f20696e646570656e64656e7420646973706c617920737472696e6773207468617420636f756c64206469736167726565207769746820746865206c6f636b2c20736f20610a3b207265736f6c7665722063616e6e6f742062696e6420616e206164617074657220746f206f6e6520746172676574207768696c6520746865206c6f636b2070726f76657320616e6f746865720a3b202845444943542d4c41575041434b2d414441505445522d54415247455449522d303031292e0a7461726765742d61646170746572203d207b0a2020616363657074656454617267657450726f66696c653a207265736f757263652d7265662c202020203b206469676573742d6c6f636b65642c20617574686f72697461746976652073656c6563746f720a2020616363657074656454617267657449723a207265736f757263652d7265662c2020202020202020203b206469676573742d6c6f636b65640a2020616461707465723a207265736f757263652d7265662c0a7d0a0a3b20536861726564207479706573207265736f757263652d72656620616e64207368613235362d6469676573742061726520646566696e6564206f6e636520696e0a3b2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d61202845444943542d4142492d4e4f4455502d303031292e0a0a3b202d2d2d206578706f72742073757266616365202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a6c61777061636b2d6578706f727473203d207b0a202074797065733a205b2a206578706f727465642d747970655d2c0a2020636f6e7374616e74733a205b2a206578706f727465642d636f6e7374616e745d2c0a20207075726546756e6374696f6e733a205b2a20707572652d66756e6374696f6e5d2c0a2020656666656374733a205b2a2073656d616e7469632d6566666563745d2c0a20206f62737472756374696f6e733a205b2a206f62737472756374696f6e2d6465665d2c0a20203b206b65796564206279206f7065726174696f6e2d70726f66696c6520636f6f7264696e61746520e2869220756e697175656e65737320656e666f726365640a20203b202845444943542d4142492d4f5050524f46494c452d554e495155452d303031290a20203b206f7065726174696f6e2d70726f66696c65207265636f7264732074686973206c61777061636b206578706f72747320286f707469632074656d706c6174657320746861740a20203b2060696d706c656d656e7473602f6070726f66696c656020636c6175736573207265736f6c766520616761696e7374292e206f7065726174696f6e2d70726f66696c652069730a20203b20646566696e656420696e2065646963742d636f6d6d6f6e2e6364646c202845444943542d4142492d4f5050524f46494c452d534c4f542d303031292e0a20206f7065726174696f6e50726f66696c65733a207b202a2074737472203d3e206f7065726174696f6e2d70726f66696c65207d2c20203b206b6579656420627920636f6f7264696e6174650a7d0a0a6578706f727465642d7479706520202020203d207b20636f6f7264696e6174653a20747374722c20646566696e6974696f6e3a20636f72652d747970652d726566207d0a6578706f727465642d636f6e7374616e74203d207b20636f6f7264696e6174653a20747374722c20747970653a20636f72652d747970652d7265662c2076616c75653a20616e79207d0a0a3b204120707572652068656c7065722069732061206469736372696d696e6174656420756e696f6e2062792060736f75726365602c20736f2074686520736368656d6120697473656c660a3b2067756172616e7465657320616e20696d706c656d656e746174696f6e20657869737473202845444943542d4c41575041434b2d505552452d494d504c2d303031293a0a3b2020202d20226564696374223a20617574686f72656420696e2045646963742f436f72653b2074686520436f726520626f6479206973206361727269656420696e6c696e6520286861736865640a3b20202020207769746820746865206578706f72742073757266616365292e2054686520736368656d61207265717569726573207468652060626f647960206669656c642e0a3b2020202d2022636f6d706f6e656e74223a20696d706c656d656e746564206f7574736964652045646963743b2063617272696573206e6f20696e6c696e6520626f647920616e6420696e73746561640a3b20202020206361727269657320697473206f776e206469676573742d6c6f636b65642060696d706c656d656e746174696f6e60202873616e64626f78202b206675656c292e20497420646f65730a3b20202020206e6f7420646570656e64206f6e20746865206f7074696f6e616c206d616e69666573742d6c6576656c2068656c706572436f6d706f6e656e742e0a707572652d66756e6374696f6e203d2065646963742d707572652d66756e6374696f6e202f20636f6d706f6e656e742d707572652d66756e6374696f6e0a0a707572652d66756e6374696f6e2d636f6d6d6f6e203d20280a2020636f6f7264696e6174653a20747374722c0a202074797065506172616d65746572733a205b2a20747374725d2c0a2020706172616d6574657254797065733a205b2a20636f72652d747970652d7265665d2c2020202020203b20616c6c20626f756e6465640a202072657475726e547970653a20636f72652d747970652d7265662c20202020202020202020202020203b20626f756e6465640a2020636f737454656d706c6174653a20747374722c0a202064657465726d696e69736d436c6173733a2022746f74616c22202f2022746f74616c2d776974682d74797065642d646961676e6f73746963222c0a290a0a65646963742d707572652d66756e6374696f6e203d207b0a2020707572652d66756e6374696f6e2d636f6d6d6f6e2c0a2020736f757263653a20226564696374222c0a2020626f64793a20636f72652d666e2d626f64792c2020202020202020202020202020202020202020203b20696e6c696e652c20686173682d7369676e69666963616e740a7d0a0a636f6d706f6e656e742d707572652d66756e6374696f6e203d207b0a2020707572652d66756e6374696f6e2d636f6d6d6f6e2c0a2020736f757263653a2022636f6d706f6e656e74222c0a20203b20746865206469676573742d6c6f636b656420636f6d706f6e656e7420696d706c656d656e74696e6720746869732068656c7065722e2052657175697265642061742074686520736368656d610a20203b206c6576656c20736f206120636f6d706f6e656e742068656c7065722063616e206e657665722076616c696461746520776974686f7574206120686173682d626f756e642c0a20203b2073616e64626f782b6675656c2d64657363726962656420696d706c656d656e746174696f6e202845444943542d4c41575041434b2d505552452d494d504c2d303031292e0a2020696d706c656d656e746174696f6e3a2065786563757461626c652d636f6d706f6e656e742c0a7d0a0a3b20636f72652d666e2d626f647920697320646566696e65642062792065646963742d636f72652e6364646c20616e6420617373656d626c656420776974682074686973206c61777061636b0a3b20736368656d612e2049742069732061207075726520436f72652066756e6374696f6e20626f64792c206e6f7420616e206566666563742d63617061626c6520636f72652d626c6f636b2e0a0a73656d616e7469632d656666656374203d207b0a2020636f6f7264696e6174653a20747374722c0a202074797065506172616d65746572733a205b2a20747374725d2c0a2020696e707574547970653a20636f72652d747970652d7265662c2020202020202020202020202020203b20626f756e6465640a20206f7574707574547970653a20636f72652d747970652d7265662c20202020202020202020202020203b20626f756e6465640a2020657865637574696f6e436c6173733a202270726f6f664f6e6c7922202f202272756e74696d65222c2020203b206f7274686f676f6e616c20746f207772697465436c6173730a20206566666563744b696e6448696e743a206566666563742d6b696e642c0a2020666f6f747072696e744f626c69676174696f6e3a20747374722c0a2020636f73744f626c69676174696f6e3a20747374722c0a20206566666563744661696c757265733a207b202a206661696c7572652d6964656e74203d3e206566666563742d6661696c7572652d626f6479207d2c20203b206b6579656420627920636f6f7264696e6174653b20756e697175650a20206775617264537570706f72743a20626f6f6c2c0a7d0a0a6f62737472756374696f6e2d646566203d207b0a2020636f6f7264696e6174653a20747374722c0a2020617574686f72697479436c6173733a20617574686f726974792d636c6173732c0a20207061796c6f6164536368656d613a20636f72652d747970652d7265662c20202020202020202020203b2074797065642c20626f756e64656420286d617920626520656d707479207265636f7264290a7d0a0a3b206566666563742d6661696c7572652d626f64792c206566666563742d6b696e642c20617574686f726974792d636c6173732c20616e6420636f72652d747970652d7265662061726520646566696e65640a3b206f6e636520696e2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d61202845444943542d4142492d4e4f4455502d303031292e0a0a3b202d2d2d2065646963742d6c61777061636b2d616461707465722e6364646c202d2d2d0a3b2065646963742d6c61777061636b2d616461707465722e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f72206f6e6520646972656374206465636c61726174697665206c61777061636b2074617267657420616461707465722e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a3b0a3b2054686520656e636c6f73696e67206c61777061636b206d616e69666573742073656c6563747320746865206578616374207461726765742070726f66696c652c207461726765742049522c0a3b20616e642061646170746572207265736f75726365206469676573742e2054686f7365206964656e74697469657320617265206e6f7420726570656174656420686572652e0a0a6c61777061636b2d61646170746572203d207b0a202061706956657273696f6e3a202265646963742e6c61777061636b2d616461707465722f7631222c0a2020636c6173733a20226465636c61726174697665222c0a20206f7065726174696f6e50726f66696c65733a207b0a202020202a2074737472203d3e206c61777061636b2d616461707465722d6f7065726174696f6e2d70726f66696c650a20207d2c0a2020656666656374496d706c656d656e746174696f6e733a207b0a202020202a2074737472203d3e206c61777061636b2d616461707465722d6566666563740a20207d2c0a2020627564676574733a207b0a202020202a2074737472203d3e206c61777061636b2d616461707465722d6275646765740a20207d2c0a7d0a0a3b204b657973206172652063616e6f6e6963616c206c61777061636b206f7065726174696f6e2d70726f66696c6520636f6f7264696e617465732e0a6c61777061636b2d616461707465722d6f7065726174696f6e2d70726f66696c65203d0a20207b0a20202020636f72653a20747374722c0a2020202073656d616e746963456666656374733a205b2b20747374725d2c0a202020203f206275646765744f626c69676174696f6e3a20747374722c0a202020203f20746172676574436f6e66696775726174696f6e3a207265736f757263652d7265662c0a20207d202f0a20207b0a20202020636f72653a20747374722c0a2020202073656d616e746963456666656374733a205b5d2c0a202020206275646765744f626c69676174696f6e3a20747374722c0a20202020746172676574436f6e66696775726174696f6e3a207265736f757263652d7265662c0a20207d0a0a3b204b657973206172652063616e6f6e6963616c206c61777061636b2073656d616e7469632d65666665637420636f6f7264696e617465732e20466f6f747072696e742c20636f73742c20616e640a3b206661696c757265206669656c6473206d7573742065786163746c792064697363686172676520746865206d61746368696e67206578706f72746564206566666563742e0a6c61777061636b2d616461707465722d656666656374203d207b0a2020746172676574496e7472696e7369633a20747374722c0a2020746172676574436f6e66696775726174696f6e3a207265736f757263652d7265662c0a20207772697465436c6173733a206c61777061636b2d616461707465722d77726974652d636c6173732c0a2020666f6f747072696e744f626c69676174696f6e3a20747374722c0a2020636f73744f626c69676174696f6e3a20747374722c0a20206661696c7572654d617070696e67733a207b202a206661696c7572652d6964656e74203d3e2074737472207d2c0a7d0a0a3b204b657973206172652063616e6f6e6963616c206578706f7274656420636f73742d6f626c69676174696f6e20636f6f7264696e617465732e0a6c61777061636b2d616461707465722d627564676574203d207b0a20206d617853746570733a2075696e742c0a20206d6178416c6c6f636174656442797465733a2075696e742c0a20206d61784f757470757442797465733a2075696e742c0a7d0a0a6c61777061636b2d616461707465722d77726974652d636c617373203d20226e6f6e6522202f20227265616422202f202263726561746522202f2022656e7375726522202f0a20202020202020202020202020202020202020202020202020202020202022617070656e6422202f20227265706c61636522202f202264656c65746522202f2022637573746f6d220a0a3b206661696c7572652d6964656e7420697320646566696e656420696e2065646963742d636f6d6d6f6e2e6364646c2e0a0a3b202d2d2d2065646963742d7461726765742d70726f66696c652e6364646c202d2d2d0a3b2065646963742d7461726765742d70726f66696c652e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f7220746865204564696374207461726765742070726f66696c65206d616e69666573742e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76310a3b202873656520535045435f636f6e74696e75756d2d636f6e74726163742d62756e646c652d76312e6d64292e204a534f4e20696e207468652070726f736520737065637320697320610a3b207265766965772072656e646572696e672067656e6572617465642066726f6d207468697320736368656d613b2074686973204344444c206973207468652073696e676c6520736f757263650a3b206f66207472757468202845444943542d4142492d4e4f4455502d303031292e0a0a7461726765742d70726f66696c652d6d616e6966657374203d207b0a202061706956657273696f6e3a202265646963742e7461726765742d70726f66696c652f7631222c0a202069643a20747374722c202020202020202020202020202020202020202020202020203b20652e672e20226563686f2e64706f220a202076657273696f6e3a20747374722c20202020202020202020202020202020202020203b20652e672e202231220a20206163636570746564436f72654162693a205b2b20747374725d2c20202020202020203b20652e672e205b2265646963742e636f72652f7631225d0a0a2020696e7472696e736963733a207265736f757263652d7265662c0a2020696e7472696e7369634e616d6573706163653a20747374722c0a20203b207075626c697368657320746869732070726f66696c652773206f7065726174696f6e2d70726f66696c65207265636f72647320286f707469632074656d706c6174657320746861740a20203b206070726f66696c65602f60696d706c656d656e74736020636c6175736573207265736f6c766520616761696e7374292e205265666572656e63657320616e0a20203b206f7065726174696f6e2d70726f66696c65732d646f63756d656e74202845444943542d4142492d4f5050524f46494c452d534c4f542d303031292e0a20206f7065726174696f6e50726f66696c65733a207265736f757263652d7265662c0a2020666f6f747072696e74416c67656272613a207265736f757263652d7265662c0a2020636f7374416c67656272613a207265736f757263652d7265662c0a202074617267657449723a207265736f757263652d7265662c0a20206f62737472756374696f6e5461786f6e6f6d793a207265736f757263652d7265662c0a202076657269666965723a207265736f757263652d7265662c0a20206c6f77657265723a207265736f757263652d7265662c0a202073616e64626f783a207265736f757263652d7265662c0a20206675656c4d6f64656c3a207265736f757263652d7265662c0a0a20203b206669656c647320746865206c616e67756167652073706563207265717569726573206f662065766572792070726f66696c650a202062756e646c6550726f66696c653a207265736f757263652d7265662c0a202067656e657261746564417274696661637450726f66696c65733a205b2a207265736f757263652d7265665d2c0a202063616e6f6e6963616c456e636f64696e6752756c65733a207265736f757263652d7265662c0a20203b20412070726f66696c65207468617420616363657074732074686520646972656374206465636c61726174697665206c61777061636b2d6164617074657220414249206e616d65732069740a20203b2065786163746c79206f6e63652e2050726f66696c6573207468617420646f206e6f7420636f6e73756d65206c61777061636b206164617074657273206c6561766520746869730a20203b206f7074696f6e616c20736c6f7420616273656e74206f7220656d7074792e0a20203f2061636365707465644c61777061636b416461707465724162693a205b5d202f205b2265646963742e6c61777061636b2d616461707465722f7631225d2c0a2020646961676e6f737469634162693a207265736f757263652d7265662c0a0a20203b206170706c69636174696f6e20646f637472696e650a20206170706c69636174696f6e4d6f64656c3a202261746f6d6963222c0a202072656164436f6e73697374656e63793a20226170706c69636174696f6e2d736e617073686f7422202f20747374722c0a202067756172644576616c756174696f6e3a2022707265636f6d6d69742d61746f6d696322202f20747374722c0a20206f62737472756374696f6e526f6c6c6261636b3a20226e6f2d76697369626c652d6566666563747322202f20747374722c0a20206d756c74695461726765743a20626f6f6c2c0a20203b207768657468657220746865207461726765742063616e206576616c7561746520707265636f6d6d697420706f7374636f6e646974696f6e20286067756172616e746565602920636865636b730a20203b20696e73696465207468652061746f6d6963206170706c69636174696f6e20756e6974202845444943542d5441524745542d504f5354434f4e442d303031290a2020706f7374636f6e646974696f6e537570706f72743a20626f6f6c2c0a0a202064657465726d696e6973746963457865637574696f6e3a207265736f757263652d7265662c0a2020636f6e666f726d616e636546697874757265436f727075733a207265736f757263652d7265662c0a7d0a0a3b20536861726564207479706573207265736f757263652d72656620616e64207368613235362d6469676573742061726520646566696e6564206f6e636520696e0a3b2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d6120627920746865206275696c640a3b202845444943542d4142492d4e4f4455502d303031292e205468657920617265206e6f74207265646566696e656420686572652e0a0a3b202d2d2d20696e7472696e736963207369676e6174757265202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a3b20546865206172746966616374207265666572656e63656420627920746865206d616e696665737427732060696e7472696e7369637360207265736f757263652d726566206973207468650a3b20696e7472696e7369632d7369676e617475726520636f7270757320646f63756d656e742062656c6f772e20497473206c61796f757420697320666978656420736f2074776f0a3b20696e646570656e64656e742070726f66696c65732076616c69646174652f686173682074686520636f72707573206964656e746963616c6c790a3b202845444943542d4142492d494e5452494e534943532d444f432d303031292e0a0a3b20696e7472696e736963732069732061204d4150206b6579656420627920636f6f7264696e6174652c20736f2074686520736368656d6120697473656c6620656e666f726365730a3b20636f6f7264696e61746520756e697175656e6573732e20412070726f766964657220726563656976657320746865207265736f6c76656420636f7270757320617320610a3b206469676573742d626f756e642073656d616e74696320696e70757420616e64207265736f6c76657320636f6f7264696e617465732077697468696e20746861742061727469666163742e0a3b2045616368206d6170206b6579204d55535420657175616c20697473207265636f726427732060636f6f7264696e61746560206669656c640a3b202845444943542d4142492d494e5452494e5349432d554e495155452d303031292e0a696e7472696e736963732d646f63756d656e74203d207b0a202061706956657273696f6e3a202265646963742e7461726765742d70726f66696c652e696e7472696e736963732f7631222c0a2020696e7472696e736963733a207b202a2074737472203d3e20696e7472696e736963207d2c0a7d0a0a3b20546865206172746966616374207265666572656e63656420627920746865206d616e6966657374277320606f7065726174696f6e50726f66696c657360207265736f757263652d7265662e0a3b206f7065726174696f6e2d70726f66696c65202f206f707469632d74656d706c6174652061726520646566696e656420696e2065646963742d636f6d6d6f6e2e6364646c2e204b657965642062790a3b20636f6f7264696e61746520736f207265736f6c7574696f6e2063616e2774207069636b206265747765656e2074776f2073616d652d636f6f7264696e6174652070726f66696c65730a3b202845444943542d4142492d4f5050524f46494c452d534c4f542d3030312c2045444943542d4142492d4f5050524f46494c452d554e495155452d303031292e0a6f7065726174696f6e2d70726f66696c65732d646f63756d656e74203d207b0a202061706956657273696f6e3a202265646963742e7461726765742d70726f66696c652e6f7065726174696f6e2d70726f66696c65732f7631222c0a202070726f66696c65733a207b202a2074737472203d3e206f7065726174696f6e2d70726f66696c65207d2c0a7d0a0a3b2041207479706564207072652d6c6f776572696e67207175657374696f6e20746861742063616e2062652070726f706f73656420627920576174736f6e206f7220616e206167656e7420616e640a3b20636865636b65642062792074686520636f6d70696c65722e2049742069732063616e6f6e6963616c2d43424f5220656e636f64656420756e6465720a3b206065646963742e6c6f776572696e672d726571756972656d656e74732f7631603b2074686520636f6d70696c657220636865636b7320746869732061727469666163742c206e6f74207468650a3b2070726f736520746861742070726f64756365642069742e0a6c6f776572696e672d726571756972656d656e7473203d207b0a202061706956657273696f6e3a202265646963742e6c6f776572696e672d726571756972656d656e74732f7631222c0a20206f7065726174696f6e50726f66696c653a20747374722c0a202073656d616e746963456666656374733a205b2a2073656d616e7469632d6566666563742d726571756972656d656e745d2c0a202072657175697265645772697465436c61737365733a205b2a2077726974652d636c6173735d2c0a202067756172644b696e64733a205b2a2067756172642d6b696e645d2c0a202061746f6d69636974793a2061746f6d69636974792d726571756972656d656e742c0a2020706f7374636f6e646974696f6e537570706f72743a20626f6f6c2c0a20206f62737472756374696f6e436f6f7264696e617465733a205b2a20747374725d2c0a2020666f6f747072696e744f626c69676174696f6e733a205b2a20747374725d2c0a2020636f73744f626c69676174696f6e733a205b2a20747374725d2c0a20206f70746963436f6e74726163743a20747374722c0a7d0a0a73656d616e7469632d6566666563742d726571756972656d656e74203d207b0a2020636f6f7264696e6174653a20747374722c0a20207772697465436c6173733a2077726974652d636c6173732c0a202067756172644b696e64733a205b2a2067756172642d6b696e645d2c0a20206f62737472756374696f6e436f6f7264696e617465733a205b2a20747374725d2c0a2020666f6f747072696e744f626c69676174696f6e733a205b2a20747374725d2c0a2020636f73744f626c69676174696f6e733a205b2a20747374725d2c0a7d0a0a77726974652d636c617373203d20226e6f6e6522202f20227265616422202f202263726561746522202f2022656e7375726522202f2022617070656e6422202f0a2020202020202020202020202020227265706c61636522202f202264656c65746522202f20747374720a67756172642d6b696e64203d2022707265636f6d6d69742d61746f6d696322202f20747374720a61746f6d69636974792d726571756972656d656e74203d202261746f6d696322202f20747374720a0a3b20412067656e75696e6520756e696f6e3a207075726520636f6e7374727563746f7273206361727279206e6f20656666656374206b696e64206f72206661696c757265733b206566666563740a3b20696e7472696e73696373206d757374202845444943542d5441524745542d494e5452494e5349432d434c4153532d303031292e2054686520736368656d6120656e666f7263657320746869732c0a3b206e6f74206120636f6d6d656e742e0a0a3b2054686520696e7472696e736963277320636f6f7264696e6174652069732074686520696e7472696e73696373206d6170204b45592c206e6f7420612076616c7565206669656c642c20736f207468650a3b206b657920616e6420636f6f7264696e6174652063616e206e65766572206469736167726565202845444943542d4142492d494e5452494e5349432d554e495155452d303031292e0a696e7472696e736963203d20707572652d696e7472696e736963202f206566666563742d696e7472696e7369630a0a707572652d696e7472696e736963203d207b0a2020696e7472696e736963436c6173733a202270757265222c0a202074797065506172616d65746572733a205b2a20747374725d2c0a2020617267756d656e7454797065733a205b2a20636f72652d747970652d7265665d2c0a202072657475726e547970653a20636f72652d747970652d7265662c0a20206775617264537570706f72743a2066616c73652c0a2020666f6f747072696e7454656d706c6174653a20747374722c0a2020636f737454656d706c6174653a20747374722c0a20207772697465436c6173733a20226e6f6e65222c0a7d0a0a6566666563742d696e7472696e736963203d207b0a2020696e7472696e736963436c6173733a2022656666656374222c0a202074797065506172616d65746572733a205b2a20747374725d2c0a2020617267756d656e7454797065733a205b2a20636f72652d747970652d7265665d2c0a202072657475726e547970653a20636f72652d747970652d7265662c0a20206566666563744b696e643a206566666563742d6b696e642c0a20203b206d6170206b65796564206279206661696c75726520636f6f7264696e61746520286661696c7572652d6964656e74293b20746865206661696c75726520636f6f7264696e6174652069730a20203b20746865206b65792c206e6f7420612076616c7565206669656c642c20736f20756e697175656e657373206973207374727563747572616c0a20203b202845444943542d4142492d4641494c5552452d554e495155452d303031292e0a20206566666563744661696c757265733a207b202a206661696c7572652d6964656e74203d3e206566666563742d6661696c7572652d626f6479207d2c0a20206775617264537570706f72743a20626f6f6c2c0a2020666f6f747072696e7454656d706c6174653a20747374722c0a2020636f737454656d706c6174653a20747374722c0a20207772697465436c6173733a20227265616422202f202263726561746522202f2022656e7375726522202f2022617070656e6422202f20227265706c61636522202f0a20202020202020202020202020202264656c65746522202f2022637573746f6d222c0a202063616e5061727469636970617465496e41746f6d696347756172643a20626f6f6c2c0a7d0a0a3b206566666563742d6661696c7572652d626f64792c206566666563742d6b696e642c20617574686f726974792d636c6173732c20616e6420636f72652d747970652d7265662061726520646566696e65640a3b206f6e636520696e2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d61202845444943542d4142492d4e4f4455502d303031292e0a0a3b202d2d2d2065646963742d617574686f726974792d66616374732e6364646c202d2d2d0a3b2065646963742d617574686f726974792d66616374732e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f722074686520666972737420636f6d70696c65722d636f6e7465787420617574686f726974792d666163747320646f63756d656e742e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a3b0a3b205468697320736368656d6120697320617373656d626c656420776974682065646963742d636f6d6d6f6e2e6364646c20736f20736f757263652e6469676573742075736573207468650a3b20736861726564207368613235362d6469676573742074797065642076616c75652e204a534f4e2069732061207265766965772f696e7075742072656e646572696e673a206974730a3b20607368613235363a3c3634206865783e6020736f75726365206469676573742069732070726f6a656374656420746f205b60736861323536602c203332207261772062797465735d206f6e0a3b2074686520776972652c20616e64206974732066616374206172726179732070726f6a65637420746f2074686520636f6f7264696e6174652d6b65796564206d6170732062656c6f772e0a0a617574686f726974792d6661637473203d207b0a202061706956657273696f6e3a202265646963742e617574686f726974792d66616374732f7631222c0a2020736f757263653a20617574686f726974792d666163742d736f757263652c0a20206f7065726174696f6e50726f66696c65733a207b202a2074737472203d3e20617574686f726974792d6f7065726174696f6e2d70726f66696c652d66616374207d2c0a20206566666563745772697465436c61737365733a207b202a2074737472203d3e20617574686f726974792d77726974652d636c617373207d2c0a2020627564676574733a207b202a2074737472203d3e20617574686f726974792d6275646765742d66616374207d2c0a7d0a0a617574686f726974792d666163742d736f75726365203d207b0a20206b696e643a20226c61777061636b22202f202274617267657450726f66696c65222c0a2020636f6f7264696e6174653a20747374722c0a20206469676573743a207368613235362d6469676573742c0a7d0a0a3b20546865206d6170206b65792069732074686520736f75726365206f7065726174696f6e2d70726f66696c6520636f6f7264696e6174652e204974206973206e6f7420726570656174656420696e0a3b207468652076616c75652c20736f2061206b657920616e6420656d62656464656420636f6f7264696e6174652063616e6e6f742064697361677265652e20416c6c6f7765642077726974650a3b20636c61737365732061726520612063616e6f6e6963616c206d61702d7365743a2074686520636c6173732069732074686520756e69717565206b657920616e64206e756c6c206973207468650a3b20756e6974206d61726b65722e2043616e6f6e6963616c2043424f52206669786573206b6579206f7264657220776974686f75742061207365636f6e64206f72646572696e672072756c652e0a617574686f726974792d6f7065726174696f6e2d70726f66696c652d66616374203d207b0a2020636f72653a20747374722c0a2020616c6c6f7765645772697465436c61737365733a207b202a20617574686f726974792d77726974652d636c617373203d3e206e756c6c207d2c0a7d0a0a3b20546865206566666563745772697465436c6173736573206d6170206b6579206973207468652073656d616e7469632065666665637420636f6f7264696e6174652e2054686520627564676574730a3b206d6170206b65792069732074686520736f757263652062756467657420636f6f7264696e6174652e2043616e6f6e6963616c2043424f52206d61702d6b657920756e697175656e6573730a3b206d616b6573206475706c6963617465206661637420636f6f7264696e61746573207374727563747572616c6c7920756e726570726573656e7461626c652e0a617574686f726974792d6275646765742d66616374203d207b0a20206d617853746570733a2075696e742c0a20206d6178416c6c6f636174656442797465733a2075696e742c0a20206d61784f757470757442797465733a2075696e742c0a7d0a0a3b20417574686f726974794661637473446f63756d656e7420763120696e74656e74696f6e616c6c792061636365707473206f6e6c792074686520777269746520636c6173736573207468650a3b2063757272656e7420636f6d70696c6572206d6f64656c2063616e20636f6e73756d652e2060637573746f6d602069732074686520736f6c6520763120637573746f6d207370656c6c696e673b0a3b20617262697472617279207461726765742d70726f66696c6520657874656e73696f6e20737472696e677320646f206e6f7420656e746572207468697320636f6d70696c657220706174682e0a617574686f726974792d77726974652d636c617373203d20226e6f6e6522202f20227265616422202f202263726561746522202f2022656e7375726522202f2022617070656e6422202f0a202020202020202020202020202020202020202020202020227265706c61636522202f202264656c65746522202f2022637573746f6d220a0a3b202d2d2d2065646963742d726573756c742d70726f6a656374696f6e2e6364646c202d2d2d0a3b20535044582d4c6963656e73652d4964656e7469666965723a204170616368652d322e300a3b2065646963742d726573756c742d70726f6a656374696f6e2e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f7220636f6d70696c65722d6f776e6564206170706c69636174696f6e2d726573756c742070726f6a656374696f6e732e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a0a726573756c742d70726f6a656374696f6e203d207b0a2020736368656d613a202265646963742e726573756c742d70726f6a656374696f6e2f7631222c0a20206f7065726174696f6e436f6f7264696e6174653a20626f756e6465642d70726f6a656374696f6e2d746578742c0a20206f7574707574547970653a20626f756e6465642d70726f6a656374696f6e2d746578742c0a20206d61784f757470757442797465733a2075696e74202e677420302c0a202065787072657373696f6e3a20726573756c742d70726f6a656374696f6e2d657870722c0a7d0a0a726573756c742d70726f6a656374696f6e2d65787072203d20726573756c742d70726f6a656374696f6e2d7265636f7264202f20726573756c742d70726f6a656374696f6e2d736f757263650a0a726573756c742d70726f6a656374696f6e2d7265636f7264203d207b0a20206b696e643a20227265636f7264222c0a20203b2054686520726f6f74207265636f726420636f756e7473206173206f6e65206f66207468652052757374206465636f6465722773203235362065787072657373696f6e206e6f6465732e0a20203b204e657374656420616767726567617465206e6f646520636f756e742072656d61696e7320616e20617574686f7269746174697665206465636f64657220636865636b2e0a20206669656c64733a207b20302a32353520626f756e6465642d70726f6a656374696f6e2d74657874203d3e20726573756c742d70726f6a656374696f6e2d65787072207d2c0a7d0a0a726573756c742d70726f6a656374696f6e2d736f75726365203d207b0a20206b696e643a2022736f75726365222c0a2020736f757263653a20726573756c742d70726f6a656374696f6e2d736f757263652d6b696e642c0a20203b204d617463686573204d41585f524553554c545f50524f4a454354494f4e5f504154485f5345474d454e545320696e2065646963742d73796e7461782e0a2020706174683a205b302a333220626f756e6465642d70726f6a656374696f6e2d746578745d2c0a7d0a0a726573756c742d70726f6a656374696f6e2d736f757263652d6b696e64203d0a20207b206b696e643a20226170706c69636174696f6e496e70757422207d202f0a20207b0a202020206b696e643a20227075726542696e64696e67222c0a2020202062696e64696e6749643a20626f756e6465642d70726f6a656374696f6e2d746578742c0a20207d202f0a20207b0a202020206b696e643a20226361706162696c697479526573756c74222c0a202020207374657049643a20626f756e6465642d70726f6a656374696f6e2d746578742c0a20207d0a0a626f756e6465642d70726f6a656374696f6e2d74657874203d2074737472202e73697a652028312e2e31303234290a0a3b202d2d2d2065646963742d7461726765742d69722e6364646c202d2d2d0a3b20535044582d4c6963656e73652d4964656e7469666965723a204170616368652d322e300a3b2065646963742d7461726765742d69722e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f72207468652045646963742d6f776e65642054617267657420495220617274696661637420656e76656c6f70652e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a3b0a3b205468697320736368656d6120697320617373656d626c656420776974682065646963742d636f6d6d6f6e2e6364646c20616e642065646963742d636f72652e6364646c2e2049740a3b2064656c696265726174656c792072657573657320436f72652065787072657373696f6e732c20707265646963617465732c20627564676574732c206c6f63616c207265666572656e6365732c0a3b206f62737472756374696f6e20726561736f6e732c20616e64206f62737472756374696f6e2061726d7320736f2074686520736368656d61206d617463686573207468652076616c75650a3b20656d6974746564206279207468652063616e6f6e6963616c2054617267657420495220656e636f64657220726174686572207468616e20726573746174696e672074686f73652074797065732e0a3b2049742064657363726962657320746865207374727563747572616c207368617065206f662076616c6964206c6f776572696e672d70726f6475636564206172746966616374732e205468650a3b206c6f776572696e6720616e6420656e636f64657220636f6e7472616374732073657061726174656c7920656e666f7263652073656d616e746963206964656e7469666965722072756c65730a3b20616e642063616e6f6e6963616c206f72646572696e672f64656475706c69636174696f6e20666f72207365742d6c696b652076616c7565732e0a0a3b2054617267657420495220656e636f64696e672072656a6563747320616e20656d707479207461726765742d70726f66696c6520636f6f7264696e617465206265666f72652062797465730a3b2065786973742c20736f207468697320726f6f74207469676874656e732074686520736861726564207374727563747572616c207265736f757263652d726566206163636f7264696e676c792e0a7461726765742d69722d7265736f757263652d726566203d207b0a202069643a2074737472202e7265676578702022283f73292e2b222c0a20206469676573743a207368613235362d6469676573742c0a7d0a0a7461726765742d69722d6172746966616374203d207461726765742d69722d636c6f7365642d6172746966616374202f207461726765742d69722d6c65676163792d61727469666163740a0a7461726765742d69722d61727469666163742d636f6d6d6f6e203d20280a20206b696e643a202274617267657449724172746966616374222c0a2020646f6d61696e3a20747374722c0a202074617267657450726f66696c653a207461726765742d69722d7265736f757263652d7265662c0a2020736f75726365436f7265436f6f7264696e6174653a2074737472202e7265676578702022283f73292e2b222c0a290a0a7461726765742d69722d636c6f7365642d6172746966616374203d207b0a20207461726765742d69722d61727469666163742d636f6d6d6f6e2c0a202073656d616e746963436c6f737572653a207461726765742d69722d73656d616e7469632d636c6f737572652c0a2020696e74656e74733a207b202a2074737472203d3e207461726765742d69722d696e74656e74207d2c0a7d0a0a7461726765742d69722d6c65676163792d6172746966616374203d207b0a20207461726765742d69722d61727469666163742d636f6d6d6f6e2c0a2020696e74656e74733a207b202a2074737472203d3e207461726765742d69722d6c65676163792d696e74656e74207d2c0a7d0a0a7461726765742d69722d73656d616e7469632d636c6f73757265203d207b0a2020736f75726365436f72653a207461726765742d69722d7265736f757263652d7265662c0a20206c61777061636b733a205b2a207461726765742d69722d7265736f757263652d7265665d2c0a20203f206361706162696c69746965733a205b2a207461726765742d69722d7265736f757263652d7265665d2c0a7d0a0a7461726765742d69722d696e74656e74203d207b0a20207461726765742d69722d696e74656e742d636f6d6d6f6e2c0a20203f2062617369733a20636f72652d657870722c0a20203f207075726542696e64696e67733a205b312a207461726765742d69722d707572652d62696e64696e675d2c0a20203f2065787465726e616c416374696f6e52657175657374733a205b2a207461726765742d69722d65787465726e616c2d616374696f6e2d726571756573745d2c0a7d0a0a7461726765742d69722d6c65676163792d696e74656e74203d207b0a20207461726765742d69722d696e74656e742d636f6d6d6f6e2c0a7d0a0a7461726765742d69722d696e74656e742d636f6d6d6f6e203d20280a20206f7065726174696f6e50726f66696c653a20747374722c0a2020696e707574436f6e73747261696e74733a205b2a20696e7075742d636f6e73747261696e745d2c0a2020636f72654576616c756174696f6e4275646765743a20636f72652d6275646765742c0a2020726571756972656d656e74733a205b2a207461726765742d69722d726571756972656d656e745d2c0a202073746570733a205b2a207461726765742d69722d737465705d2c0a2020726573756c743a20636f72652d657870722c0a290a0a7461726765742d69722d726571756972656d656e74203d207b0a202069643a20747374722c0a20207072656469636174653a20636f72652d7072656469636174652c0a20206f6e4661696c7572653a20726571756972652d6661696c7572652d61726d2c0a7d0a0a7461726765742d69722d707572652d62696e64696e67203d207b0a202069643a2074737472202e7265676578702022283f73292e2b222c0a202062696e64696e673a206c6f63616c2d7265662c0a202076616c75653a20636f72652d657870722c0a7d0a0a7461726765742d69722d73746570203d207b0a202069643a20747374722c0a202062696e64696e673a206c6f63616c2d7265662c0a20206566666563743a20747374722c0a2020746172676574496e7472696e7369633a20747374722c0a2020696e7075743a20636f72652d657870722c0a20206f62737472756374696f6e4661696c757265733a205b2a206661696c7572652d6964656e745d2c0a20206f62737472756374696f6e41726d733a207b202a206661696c7572652d6964656e74203d3e206f62737472756374696f6e2d61726d207d2c0a7d0a0a7461726765742d69722d65787465726e616c2d616374696f6e2d72657175657374203d207b0a202069643a20747374722c0a202062696e64696e673a206c6f63616c2d7265662c0a20206f7065726174696f6e3a207461726765742d69722d7265736f757263652d7265662c0a2020696e707574547970653a20636f72652d747970652d7265662c0a2020736574746c656d656e74547970653a20636f72652d747970652d7265662c0a2020696e707574536368656d613a207461726765742d69722d7265736f757263652d7265662c0a2020736574746c656d656e74536368656d613a207461726765742d69722d7265736f757263652d7265662c0a2020696e7075743a20636f72652d657870722c0a2020617574686f7269747953636f70653a20636f72652d657870722c0a202062617369733a20636f72652d657870722c0a20206275646765743a2065787465726e616c2d616374696f6e2d6275646765742c0a20207265636f6e63696c696174696f6e4c61773a207461726765742d69722d7265736f757263652d7265662c0a202073746174653a20226177616974696e67536574746c656d656e74222c0a2020736574746c656d656e7441646d697373696f6e3a2022736368656d615265717569726564222c0a7d0a", - "rawSha256": "c663df6dd3d463aad878ae9c3beebf42fe057d7395f91b6d3823d0e0fab77f50" + "bytesHex": "3b20535044582d4c6963656e73652d4964656e7469666965723a204170616368652d322e300a3b2065646963742d70726f76696465722d636f6e7472616374732e6364646c0a3b2047656e6572617465642066726f6d2045646963742d6f776e65642041424920667261676d656e74732e20444f204e4f5420454449542e0a0a3b202d2d2d2065646963742d636f6d6d6f6e2e6364646c202d2d2d0a3b2065646963742d636f6d6d6f6e2e6364646c0a3b20536861726564204344444c20747970657320666f722074686520456469637420414249732c20646566696e6564204f4e4345206865726520736f20746865792063616e6e6f742064726966740a3b202845444943542d4142492d4e4f4455502d303031292e2054776f2067726f7570733a0a3b2020202d207265736f757263652d7265662c207368613235362d6469676573742c206566666563742d6661696c7572652d626f64792c206566666563742d6b696e642c20617574686f726974792d636c6173732c0a3b2020202020636f72652d747970652d7265663a20617373656d626c656420776974682065646963742d7461726765742d70726f66696c652e6364646c20616e640a3b202020202065646963742d6c61777061636b2e6364646c20627920746865206275696c643b2074686f736520736368656d617320646f206e6f74207265646566696e65207468656d2e0a3b2020202d206f7065726174696f6e2d70726f66696c652c206f707469632d74656d706c6174652c2061706572747572652d726571756972656d656e7420616e6420746865697220726566733a0a3b2020202020636f6e73756d65642062792074686520436f72652f6f70746963206c61796572202865646963742d636f72652e6364646c2920616e64207265666572656e636564206279207468650a3b20202020206c616e67756167652f7461726765742d70726f66696c652073706563732e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a0a3b2041206e6f726d617469766520737562636f6d706f6e656e74207265666572656e636564206279206964656e7469747920706c7573206469676573742e204d616e696665737473206e657665720a3b20656d626564207468656972206f776e2073656c662d64696765737420696e20746865697220707265696d616765202845444943542d434f52452d53454c46484153482d303031292e0a7265736f757263652d726566203d207b2069643a20747374722c206469676573743a207368613235362d646967657374207d0a0a3b20446967657374732061726520617574686f726974617469766520617320747970656420627974652076616c7565732c206e657665722068657820737472696e67732e20526576696577204a534f4e0a3b2072656e64657273207468697320617320227368613235363a3c3634206c6f77657263617365206865783e22202845444943542d4449474553542d574952452d303031292e0a7368613235362d646967657374203d205b20616c676f726974686d3a2022736861323536222c2062797465733a2062737472202e73697a65203332205d0a0a3b2041206e616d6564206c6f772d6c6576656c206661696c75726520616e206566666563742063616e2072616973652e2054686520736f75726365206f62737472756374696f6e206d61700a3b2062696e64732069742028627920636f6f7264696e6174652920616e6420636f6e73747275637473206120747970656420646f6d61696e206f62737472756374696f6e2066726f6d206974730a3b207061796c6f6164202845444943542d4142492d4641494c5552452d4e414d45442d303031292e0a3b20416e20656666656374277320606566666563744661696c7572657360206c697374204d555354206861766520756e697175652060636f6f7264696e61746560733a2073696e6365207468650a3b206f62737472756374696f6e206d6170206973206b6579656420627920636f6f7264696e6174652c2074776f206661696c757265732073686172696e67206120636f6f7264696e61746520286576656e0a3b207769746820646966666572656e7420617574686f72697479436c6173732f7061796c6f61645479706529206d616b652065786861757374697665206d617070696e6720616e642062696e6465720a3b20747970696e6720616d626967756f757320616e64206172652072656a6563746564202845444943542d4142492d4641494c5552452d554e495155452d303031292e0a3b0a3b2045666665637473206361727279207468656972206661696c757265732061732061206d617020607b206661696c7572652d6964656e74203d3e206566666563742d6661696c7572652d626f6479207d600a3b202873656520746865207461726765742f6c61777061636b2065666665637420736368656d6173292e20546865206661696c75726520636f6f7264696e61746520697320746865206d61700a3b204b45592c20736f206974206973206e6f7420726570656174656420696e2074686520626f647920616e642063616e6e6f74206469736167726565207769746820746865206b65792e0a6566666563742d6661696c7572652d626f6479203d207b0a2020617574686f72697479436c6173733a20617574686f726974792d636c6173732c0a20207061796c6f6164547970653a20636f72652d747970652d7265662c202020202020202020202020203b2074797065642c20626f756e64656420286d617920626520656d707479207265636f7264290a7d0a0a3b2041206661696c75726520636f6f7264696e617465206d7573742062652061206261726520456469637420606964656e746020286c65747465722f756e64657273636f7265207468656e0a3b206c6574746572732f6469676974732f756e64657273636f7265732920414e44206d757374206e6f742062652061207265736572766564206b6579776f72642028652e672e2060656c7365602c0a3b20606261736973602c20607768657265602c206072657175697265602c2060666f72602c2060696660292e2054686520736f75726365206f62737472756374696f6e2d6d6170204c4853206f6e6c790a3b20616363657074732061206e6f6e2d6b6579776f726420606964656e74602c20736f20612068797068656e2f646f742f6b6579776f726420636f6f7264696e61746520776f756c642062650a3b204142492d76616c69642079657420696d706f737369626c6520746f206d617020657868617573746976656c7920696e20736f757263652e20546865207265676578206361707475726573207468650a3b206c65786963616c2073686170653b206b6579776f7264206578636c7573696f6e20697320616e206164646974696f6e616c2076616c69646174696f6e2072756c650a3b202845444943542d4142492d4641494c5552452d4944454e542d303031292e0a6661696c7572652d6964656e74203d2074737472202e72656765787020225b412d5a612d7a5f5d5b412d5a612d7a302d395f5d2a220a0a6566666563742d6b696e64203d20227265616422202f202263726561746522202f2022656e7375726522202f20227265706c61636522202f202264656c65746522202f0a202020202020202020202020202022617070656e6422202f202272656475636522202f202273656d616e7469632e656d697422202f2022637573746f6d220a0a617574686f726974792d636c617373203d2022646f6d61696e4d61707061626c6522202f20227061727469636970616e744f776e656422202f2022696e746567726974794661756c7422202f0a202020202020202020202020202020202020227265736f757263654661756c7422202f2022696e7465726e616c4661756c74220a0a636f72652d747970652d726566203d20747374722020203b2063616e6f6e6963616c20436f7265207479706520636f6f7264696e6174650a0a3b20416e206f7065726174696f6e2070726f66696c6520737570706c69657320746865206f707469632074656d706c617465206120436f726520696e74656e74207265736f6c766573206974730a3b206f707469634b696e642f626f756e646172794b696e642f737570706f7274506f6c6963792f6c6f7373446973706f736974696f6e2066726f6d2e205461726765742070726f66696c657320616e640a3b206c61777061636b73207075626c6973682074686573652061732061206d617020607b20636f6f7264696e617465203d3e206f7065726174696f6e2d70726f66696c65207d602c20736f207468650a3b20636f6f7264696e61746520697320746865204b45592c206e6f7420612076616c7565206669656c64202845444943542d4f505449432d54454d504c4154452d4f574e45522d3030312c0a3b2045444943542d4142492d4f5050524f46494c452d554e495155452d303031292e0a6f7065726174696f6e2d70726f66696c65203d207b0a20206f7074696354656d706c6174653a206f707469632d74656d706c6174652c0a20206566666563745072656469636174653a20747374722c20202020202020202020203b20636f6f7264696e617465206f6620746865206f7065726174696f6e2d6d6f6465207072656469636174650a7d0a0a6f707469632d74656d706c617465203d207b0a20206f707469634b696e643a2022726576656c6174696f6e22202f20226166666563745265696e746567726174696f6e222c0a2020626f756e646172794b696e643a202270726f6a656374696f6e22202f2022616666656374222c0a2020737570706f7274506f6c6963793a20747374722c202020202020202020202020203b2063616e6f6e6963616c20737570706f72742d706f6c69637920636f6f7264696e6174650a20206c6f7373446973706f736974696f6e3a20747374722c20202020202020202020203b2063616e6f6e6963616c206c6f73732d646973706f736974696f6e20636f6f7264696e6174650a20203f20626173697354656d706c6174653a20747374722c20202020202020202020203b206f7074696f6e616c206469676573742d6c6f636b65642062617369732074656d706c61746520636f6f72640a20203b2074686520617065727475726520726571756972656d656e7420746869732074656d706c61746520737570706c6965732e205265717569726564207768656e207468652074656d706c6174650a20203b2069732074686520736f75726365206f66206120436f7265206f707469632773206170657274757265526571756972656d656e742028692e652e2074686520696e74656e7420686173206e6f0a20203b20736f757263652060666f6f747072696e74203c3d202e2e2e60292c2073696e6365206170657274757265526571756972656d656e74206973206d616e6461746f727920696e20436f72650a20203b202845444943542d4f505449432d41504552545552452d5245462d303031292e0a20203f206170657274757265526571756972656d656e743a2061706572747572652d726571756972656d656e742c0a7d0a0a3b206170657274757265526571756972656d656e742069732061207479706564207265666572656e63652c206e65766572206120667265652d666f726d20737472696e672e2041207265766965770a3b2072656e646572696e67206d61792073686f772069747320636f6f7264696e617465202845444943542d4f505449432d41504552545552452d5245462d303031292e0a61706572747572652d726571756972656d656e74203d20666f6f747072696e742d6365696c696e672d726566202f2061627374726163742d666f6f747072696e742d6f626c69676174696f6e2d7265660a666f6f747072696e742d6365696c696e672d726566203d207b206b696e643a2022666f6f747072696e744365696c696e67222c207265663a2074737472207d0a61627374726163742d666f6f747072696e742d6f626c69676174696f6e2d726566203d207b206b696e643a20226162737472616374466f6f747072696e744f626c69676174696f6e222c207265663a2074737472207d0a0a3b202d2d2d2065646963742d636f72652e6364646c202d2d2d0a3b2065646963742d636f72652e6364646c0a3b204e6f726d617469766520736368656d6120666f722074686520456469637420436f72652076312073656d616e746963206d6f64656c2e0a3b0a3b2053636f706520626f756e646172793a20746869732066696c6520646566696e657320436f7265206d65616e696e6720616e6420736368656d61207368617065206f6e6c792e20497420646f65730a3b206e6f7420646566696e6520612063616e6f6e6963616c20656e636f6465722c20436f7265206d6f64756c652068617368206669656c64732c20686173682066697874757265732c207461726765740a3b206c6f776572696e672c2061646d697373696f6e2062756e646c65732c206f72207461726765742d6f776e65642049522e0a0a636f72652d6d6f64756c65203d207b0a202061706956657273696f6e3a202265646963742e636f72652f7631222c0a2020636f6f7264696e6174653a20747374722c0a2020696d706f7274733a205b2a20636f72652d696d706f72745d2c0a202074797065733a207b202a2074737472203d3e20636f72652d74797065207d2c0a2020696e74656e74733a207b202b2074737472203d3e20636f72652d696e74656e74207d2c0a20207265717569726564436f72654361706162696c69746965733a205b2a20747374725d2c0a7d0a0a636f72652d696d706f7274203d207b0a20206b696e643a20226c61777061636b22202f202274617267657422202f2022636f726522202f20226361706162696c697479222c0a20207265663a207265736f757263652d7265662c0a20203f20616c6961733a20747374722c0a7d0a0a3b202d2d2d207479706573202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a636f72652d74797065203d20636f72652d7363616c61722d74797065202f20636f72652d7265636f72642d74797065202f20636f72652d76617269616e742d74797065202f0a202020202020202020202020636f72652d6f7074696f6e2d74797065202f20636f72652d6c6973742d74797065202f20636f72652d6d61702d74797065202f0a202020202020202020202020636f72652d6361706162696c6974792d7265662d74797065202f20636f72652d65787465726e616c2d616374696f6e2d726571756573742d74797065202f0a202020202020202020202020636f72652d6e6f6d696e616c2d747970650a0a636f72652d7363616c61722d74797065203d20636f72652d626f6f6c2d74797065202f20636f72652d696e742d74797065202f20636f72652d737472696e672d74797065202f0a20202020202020202020202020202020202020636f72652d62797465732d74797065202f20636f72652d756e69742d747970650a0a636f72652d626f6f6c2d74797065203d207b206b696e643a2022426f6f6c22207d0a636f72652d756e69742d74797065203d207b206b696e643a2022556e697422207d0a636f72652d696e742d74797065203d207b0a20206b696e643a202249363422202f202255363422202f202249333222202f202255333222202f202249313622202f202255313622202f2022493822202f20225538222c0a7d0a636f72652d737472696e672d74797065203d207b0a20206b696e643a2022537472696e67222c0a20206d61783a2075696e742c0a202063616e6f6e6963616c3a2022756e69636f64652d7363616c61722d6e666322202f20227261772d75746638222c0a7d0a636f72652d62797465732d74797065203d207b0a20206b696e643a20224279746573222c0a20203f206d696e3a2075696e742c0a20206d61783a2075696e742c0a7d0a636f72652d6e6f6d696e616c2d74797065203d207b0a20206b696e643a20224e6f6d696e616c222c0a2020636f6e74726163743a20747374722c0a2020726570726573656e746174696f6e3a20636f72652d747970652d7265662c0a7d0a636f72652d7265636f72642d74797065203d207b0a20206b696e643a20225265636f7264222c0a20206669656c64733a207b202a2074737472203d3e20636f72652d747970652d726566207d2c0a7d0a636f72652d76617269616e742d74797065203d207b0a20206b696e643a202256617269616e74222c0a202063617365733a207b202b2074737472203d3e2076617269616e742d636173652d626f6479207d2c0a7d0a76617269616e742d636173652d626f6479203d207b0a20203f207061796c6f61643a20636f72652d747970652d7265662c0a7d0a636f72652d6f7074696f6e2d74797065203d207b0a20206b696e643a20224f7074696f6e222c0a20206974656d3a20636f72652d747970652d7265662c0a7d0a636f72652d6c6973742d74797065203d207b0a20206b696e643a20224c697374222c0a20206974656d3a20636f72652d747970652d7265662c0a20206d61783a2075696e742c0a7d0a636f72652d6d61702d74797065203d207b0a20206b696e643a20224d6170222c0a20206b65793a20636f72652d747970652d7265662c0a202076616c75653a20636f72652d747970652d7265662c0a20206d61783a2075696e742c0a7d0a636f72652d6361706162696c6974792d7265662d74797065203d207b0a20206b696e643a20224361706162696c697479526566222c0a20206974656d3a20636f72652d747970652d7265662c0a7d0a636f72652d65787465726e616c2d616374696f6e2d726571756573742d74797065203d207b0a20206b696e643a202245787465726e616c416374696f6e52657175657374222c0a2020736574746c656d656e743a20636f72652d747970652d7265662c0a7d0a0a3b20636f72652d747970652d72656620697320646566696e656420696e2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d612e0a0a3b202d2d2d207265666572656e63657320616e642076616c756573202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a3b204c6f63616c206964656e7469747920697320616c7068612d737461626c652e20606964602069732074686520636f6d70696c65722d6f776e6564206c6f63616c20636f6f7264696e6174653b0a3b2060616c7068614e616d656020697320746865206e6f726d616c697a65642068756d616e2f6465627567206e616d652e20536f757263652062696e646572207370656c6c696e67206973206e6f740a3b206964656e746974792e0a6c6f63616c2d726566203d207b0a202069643a20747374722c0a2020616c7068614e616d653a20747374722c0a2020747970653a20636f72652d747970652d7265662c0a7d0a0a636f72652d76616c7565203d20636f72652d6e756c6c2d76616c7565202f20636f72652d626f6f6c2d76616c7565202f20636f72652d696e742d76616c7565202f0a20202020202020202020202020636f72652d737472696e672d76616c7565202f20636f72652d62797465732d76616c7565202f20636f72652d7265636f72642d76616c7565202f0a20202020202020202020202020636f72652d76617269616e742d76616c7565202f20636f72652d6c6973742d76616c7565202f20636f72652d6d61702d76616c7565202f0a20202020202020202020202020636f72652d6361706162696c6974792d76616c75650a0a636f72652d6e756c6c2d76616c7565203d207b206b696e643a20226e756c6c22207d0a636f72652d626f6f6c2d76616c7565203d207b206b696e643a2022626f6f6c222c2076616c75653a20626f6f6c207d0a636f72652d696e742d76616c7565203d207b206b696e643a2022696e74222c2077696474683a20747374722c2076616c75653a20696e74207d0a636f72652d737472696e672d76616c7565203d207b206b696e643a2022737472696e67222c2076616c75653a2074737472207d0a636f72652d62797465732d76616c7565203d207b206b696e643a20226279746573222c2076616c75653a2062737472207d0a636f72652d7265636f72642d76616c7565203d207b206b696e643a20227265636f7264222c206669656c64733a207b202a2074737472203d3e20636f72652d76616c7565207d207d0a636f72652d76617269616e742d76616c7565203d207b0a20206b696e643a202276617269616e74222c0a2020747970653a20636f72652d747970652d7265662c0a2020636173653a20747374722c0a20203f207061796c6f61643a20636f72652d76616c75652c0a7d0a636f72652d6c6973742d76616c7565203d207b206b696e643a20226c697374222c2076616c7565733a205b2a20636f72652d76616c75655d207d0a636f72652d6d61702d76616c7565203d207b206b696e643a20226d6170222c20656e74726965733a205b2a205b6b65793a20636f72652d76616c75652c2076616c75653a20636f72652d76616c75655d5d207d0a636f72652d6361706162696c6974792d76616c7565203d207b0a20206b696e643a20226361706162696c697479222c0a2020726563656970743a207368613235362d6469676573742c0a7d0a0a3b2045646963742d617574686f72656420707572652068656c70657273207573652061207075726520436f72652066756e6374696f6e20626f64792e2054686520626f64792063616e2062696e640a3b20707572652065787072657373696f6e7320616e642072657475726e20616e2065787072657373696f6e2c206275742069742063616e6e6f7420636f6e7461696e20436f7265206566666563742c0a3b2067756172642c206272616e63682c206c6f6f702c206d617463682d6e6f64652c206f722070726f6f662d6f626c69676174696f6e206e6f6465732e0a636f72652d666e2d626f6479203d207b0a2020706172616d733a205b2a206c6f63616c2d7265665d2c0a2020626f64793a20636f72652d707572652d626c6f636b2c0a7d0a0a636f72652d707572652d626c6f636b203d207b0a20206c6f63616c733a205b2a206c6f63616c2d7265665d2c0a202062696e64696e67733a205b2a20707572652d6c65742d6e6f64655d2c0a2020726573756c743a20636f72652d657870722c0a7d0a0a707572652d6c65742d6e6f6465203d207b0a20206b696e643a20226c6574222c0a202062696e64696e673a206c6f63616c2d7265662c0a202076616c75653a20636f72652d657870722c0a7d0a0a3b202d2d2d2065787072657373696f6e7320616e642070726564696361746573202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a636f72652d65787072203d206c6f63616c2d65787072202f20636f6e73742d65787072202f207265636f72642d65787072202f206669656c642d65787072202f0a20202020202020202020202076617269616e742d65787072202f206d617463682d65787072202f2063616c6c2d65787072202f206c6973742d65787072202f206d61702d65787072202f0a20202020202020202020202069662d657870720a0a6c6f63616c2d65787072203d207b206b696e643a20226c6f63616c222c207265663a206c6f63616c2d726566207d0a636f6e73742d65787072203d207b206b696e643a2022636f6e7374222c2076616c75653a20636f72652d76616c7565207d0a7265636f72642d65787072203d207b206b696e643a20227265636f7264222c206669656c64733a207b202a2074737472203d3e20636f72652d65787072207d207d0a6669656c642d65787072203d207b206b696e643a20226669656c64222c20626173653a20636f72652d657870722c206669656c643a2074737472207d0a76617269616e742d65787072203d207b0a20206b696e643a202276617269616e74222c0a2020747970653a20636f72652d747970652d7265662c0a2020636173653a20747374722c0a20203f207061796c6f61643a20636f72652d657870722c0a7d0a6d617463682d65787072203d207b0a20206b696e643a20226d61746368222c0a20207363727574696e65653a20636f72652d657870722c0a202061726d733a205b2b206d617463682d61726d5d2c0a7d0a6d617463682d61726d203d207b0a2020636173653a20747374722c0a20203f2062696e6465723a206c6f63616c2d7265662c0a2020626f64793a20636f72652d657870722c0a7d0a63616c6c2d65787072203d207b0a20206b696e643a202263616c6c222c0a202063616c6c65653a20747374722c0a202074797065417267733a205b2a20636f72652d747970652d7265665d2c0a2020617267733a205b2a20636f72652d657870725d2c0a7d0a6c6973742d65787072203d207b206b696e643a20226c697374222c2076616c7565733a205b2a20636f72652d657870725d207d0a6d61702d65787072203d207b206b696e643a20226d6170222c20656e74726965733a205b2a205b6b65793a20636f72652d657870722c2076616c75653a20636f72652d657870725d5d207d0a69662d65787072203d207b0a20206b696e643a20226966222c0a20207072656469636174653a20636f72652d7072656469636174652c0a20207468656e3a20636f72652d657870722c0a2020656c73653a20636f72652d657870722c0a7d0a0a636f72652d707265646963617465203d20747275652d707265646963617465202f2066616c73652d707265646963617465202f206e6f742d707265646963617465202f0a2020202020202020202020202020202020616c6c2d707265646963617465202f20616e792d707265646963617465202f20636f6d706172652d707265646963617465202f0a202020202020202020202020202020202063616c6c2d707265646963617465202f206f62737472756374696f6e2d7072656469636174650a0a747275652d707265646963617465203d207b206b696e643a20227472756522207d0a66616c73652d707265646963617465203d207b206b696e643a202266616c736522207d0a6e6f742d707265646963617465203d207b206b696e643a20226e6f74222c2076616c75653a20636f72652d707265646963617465207d0a616c6c2d707265646963617465203d207b206b696e643a2022616c6c222c2076616c7565733a205b2b20636f72652d7072656469636174655d207d0a616e792d707265646963617465203d207b206b696e643a2022616e79222c2076616c7565733a205b2b20636f72652d7072656469636174655d207d0a636f6d706172652d707265646963617465203d207b0a20206b696e643a2022636f6d70617265222c0a20206f703a20223d3d22202f2022213d22202f20223c22202f20223c3d22202f20223e22202f20223e3d222c0a20206c6566743a20636f72652d657870722c0a202072696768743a20636f72652d657870722c0a7d0a63616c6c2d707265646963617465203d207b0a20206b696e643a202263616c6c222c0a20207072656469636174653a20747374722c0a2020617267733a205b2a20636f72652d657870725d2c0a7d0a6f62737472756374696f6e2d707265646963617465203d207b0a20206b696e643a20226f62737472756374696f6e222c0a2020636f6f7264696e6174653a206661696c7572652d6964656e742c0a20207061796c6f61643a20636f72652d657870722c0a7d0a0a696e7075742d636f6e73747261696e74203d207b0a2020636f6f7264696e6174653a20747374722c0a2020736f757263653a2022776865726522202f2022636f6d70696c6572222c0a20207072656469636174653a20636f72652d7072656469636174652c0a7d0a0a3b202d2d2d20696e74656e74732c20626c6f636b732c20616e64206e6f646573202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a636f72652d696e74656e74203d207b0a2020696e7075743a20636f72652d747970652d7265662c0a20206f75747075743a20636f72652d747970652d7265662c0a202072657175697265644f7065726174696f6e50726f66696c653a20747374722c0a20203f2062617369733a20636f72652d657870722c0a2020696e707574436f6e73747261696e74733a205b2a20696e7075742d636f6e73747261696e745d2c0a2020636f72654576616c756174696f6e4275646765743a20636f72652d6275646765742c0a2020626f64793a20636f72652d626c6f636b2c0a20203f206f707469633a20636f72652d6f707469632c0a7d0a0a636f72652d627564676574203d207b0a20206d617853746570733a2075696e742c0a20206d6178416c6c6f636174656442797465733a2075696e742c0a20206d61784f757470757442797465733a2075696e742c0a7d0a0a636f72652d6f70746963203d207b0a20206f707469634b696e643a2022726576656c6174696f6e22202f20226166666563745265696e746567726174696f6e222c0a2020626f756e646172794b696e643a202270726f6a656374696f6e22202f2022616666656374222c0a20206170657274757265526571756972656d656e743a2061706572747572652d726571756972656d656e742c0a2020737570706f7274506f6c6963793a20747374722c0a20206c6f7373446973706f736974696f6e3a20747374722c0a7d0a0a636f72652d626c6f636b203d207b0a20206c6f63616c733a205b2a206c6f63616c2d7265665d2c0a20206e6f6465733a205b2a20636f72652d6e6f64655d2c0a2020726573756c743a20636f72652d657870722c0a7d0a0a636f72652d6e6f6465203d206c65742d6e6f6465202f20726571756972652d6e6f6465202f206566666563742d6e6f6465202f0a20202020202020202020202065787465726e616c2d616374696f6e2d726571756573742d6e6f6465202f2067756172642d6e6f6465202f206272616e63682d6e6f6465202f0a202020202020202020202020666f722d6e6f6465202f206d617463682d6e6f6465202f2070726f6f662d6f626c69676174696f6e2d6e6f64650a0a6c65742d6e6f6465203d207b0a20206b696e643a20226c6574222c0a202062696e64696e673a206c6f63616c2d7265662c0a202076616c75653a20636f72652d657870722c0a7d0a726571756972652d6e6f6465203d207b0a20206b696e643a202272657175697265222c0a20207072656469636174653a20636f72652d7072656469636174652c0a20206f6e4661696c7572653a20726571756972652d6661696c7572652d61726d2c0a7d0a726571756972652d6661696c7572652d61726d203d207465726d696e616c2d726571756972652d6661696c757265202f0a20202020202020202020202020202020202020202020636f6e74696e75652d6f6273747275637465642d726571756972652d6661696c7572650a7465726d696e616c2d726571756972652d6661696c757265203d207b0a20206b696e643a20227465726d696e616c222c0a2020726561736f6e3a206f62737472756374696f6e2d726561736f6e2c0a7d0a636f6e74696e75652d6f6273747275637465642d726571756972652d6661696c757265203d207b0a20206b696e643a2022636f6e74696e75654f627374727563746564222c0a2020726561736f6e3a206f62737472756374696f6e2d726561736f6e2c0a7d0a6f62737472756374696f6e2d726561736f6e203d207b0a2020726561736f6e4b696e643a20747374722c0a20207061796c6f61643a207b202a2074737472203d3e20636f72652d65787072207d2c0a7d0a6566666563742d6e6f6465203d207b0a20206b696e643a2022656666656374222c0a202062696e64696e673a206c6f63616c2d7265662c0a20206566666563743a20747374722c0a2020696e7075743a20636f72652d657870722c0a20206f62737472756374696f6e4d61703a207b202a206661696c7572652d6964656e74203d3e206f62737472756374696f6e2d61726d207d2c0a7d0a65787465726e616c2d616374696f6e2d726571756573742d6e6f6465203d207b0a20206b696e643a202265787465726e616c416374696f6e52657175657374222c0a202062696e64696e673a206c6f63616c2d7265662c0a20206f7065726174696f6e3a207265736f757263652d7265662c0a2020696e707574547970653a20636f72652d747970652d7265662c0a2020736574746c656d656e74547970653a20636f72652d747970652d7265662c0a2020696e707574536368656d613a207265736f757263652d7265662c0a2020736574746c656d656e74536368656d613a207265736f757263652d7265662c0a2020696e7075743a20636f72652d657870722c0a2020617574686f7269747953636f70653a20636f72652d657870722c0a202062617369733a20636f72652d657870722c0a20206275646765743a2065787465726e616c2d616374696f6e2d6275646765742c0a20207265636f6e63696c696174696f6e4c61773a207265736f757263652d7265662c0a202073746174653a20226177616974696e67536574746c656d656e74222c0a2020736574746c656d656e7441646d697373696f6e3a2022736368656d615265717569726564222c0a7d0a65787465726e616c2d616374696f6e2d627564676574203d207b0a20206d6178536574746c656d656e7442797465733a20636f72652d657870722c0a20206d6178417474656d7074733a20636f72652d657870722c0a7d0a6f62737472756374696f6e2d61726d203d207b0a202062696e6465723a206c6f63616c2d7265662c0a202076616c75653a20636f72652d657870722c0a7d0a67756172642d6e6f6465203d207b0a20206b696e643a20226775617264222c0a20207072656469636174653a20636f72652d7072656469636174652c0a20206f62737472756374696f6e3a20636f72652d657870722c0a7d0a6272616e63682d6e6f6465203d207b0a20206b696e643a20226272616e6368222c0a20203f2062696e64696e673a206c6f63616c2d7265662c0a20207072656469636174653a20636f72652d7072656469636174652c0a20207468656e3a20636f72652d626c6f636b2c0a2020656c73653a20636f72652d626c6f636b2c0a7d0a666f722d6e6f6465203d207b0a20206b696e643a2022666f72222c0a202062696e6465723a206c6f63616c2d7265662c0a2020697465723a20636f72652d657870722c0a2020626f756e643a20636f72652d626f756e642c0a2020626f64793a20636f72652d626c6f636b2c0a7d0a6d617463682d6e6f6465203d207b0a20206b696e643a20226d61746368222c0a20207363727574696e65653a20636f72652d657870722c0a202061726d733a205b2b206d617463682d626c6f636b2d61726d5d2c0a7d0a6d617463682d626c6f636b2d61726d203d207b0a2020636173653a20747374722c0a20203f2062696e6465723a206c6f63616c2d7265662c0a2020626f64793a20636f72652d626c6f636b2c0a7d0a70726f6f662d6f626c69676174696f6e2d6e6f6465203d207b0a20206b696e643a202270726f6f66222c0a2020636f6f7264696e6174653a20747374722c0a20207072656469636174653a20636f72652d7072656469636174652c0a7d0a0a636f72652d626f756e64203d206c69746572616c2d626f756e64202f20636f6f7264696e6174652d626f756e640a6c69746572616c2d626f756e64203d207b206b696e643a20226c69746572616c222c2076616c75653a2075696e74207d0a636f6f7264696e6174652d626f756e64203d207b206b696e643a2022636f6f7264696e617465222c207265663a2074737472207d0a0a3b20536861726564207265736f757263652d7265662c207368613235362d6469676573742c206661696c7572652d6964656e742c2061706572747572652d726571756972656d656e742c20616e640a3b20636f72652d747970652d7265662061726520646566696e6564206f6e636520696e2065646963742d636f6d6d6f6e2e6364646c2e0a0a3b202d2d2d2065646963742d6c61777061636b2e6364646c202d2d2d0a3b2065646963742d6c61777061636b2e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f7220746865204564696374206c61777061636b206d616e696665737420616e64206578706f727420737572666163652e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e204a534f4e20696e207468652070726f73652073706563730a3b2069732061207265766965772072656e646572696e672067656e6572617465642066726f6d207468697320736368656d61202845444943542d4142492d4e4f4455502d303031292e0a0a6c61777061636b2d6d616e6966657374203d207b0a202061706956657273696f6e3a202265646963742e6c61777061636b2f7631222c0a202069643a20747374722c0a202076657273696f6e3a20747374722c0a20206163636570746564436f72654162693a205b2b20747374725d2c0a2020646570656e64656e636965733a205b2a206c61777061636b2d6465705d2c202020202020202020203b20616379636c69632c206469676573742d6c6f636b6564202845444943542d4c41575041434b2d4441472d303031290a20206578706f7274733a207265736f757263652d7265662c0a20203f2074617267657441646170746572733a205b2b207461726765742d616461707465725d2c2020203b207265717569726564206f6e6c7920696620616e792072756e74696d6520656666656374206578697374730a20203f2068656c706572436f6d706f6e656e743a2065786563757461626c652d636f6d706f6e656e742c203b2065786563757461626c652068656c70657273206361727279207468656972206f776e2073616e64626f782b6675656c0a202076657269666965723a2076657269666965722c202020202020202020202020202020202020202020203b20636c61737369666965643a206465636c61726174697665206f722065786563757461626c650a2020636f6d7061746962696c6974793a207265736f757263652d7265662c0a2020636f6e666f726d616e636546697874757265436f727075733a207265736f757263652d7265662c0a7d0a0a3b2041207665726966696572206973206569746865722061206465636c617261746976652072756c6573657420286e6f2072756e74696d6529206f7220616e2065786563757461626c650a3b20636f6d706f6e656e742e20416e2065786563757461626c65207665726966696572204d55535420636172727920697473206f776e2073616e64626f7820616e64206675656c206d6f64656c2c0a3b20736f2074686520736368656d6120656e666f726365732074686174206e6f2065786563757461626c6520636f6d706f6e656e74206973206c65667420756e626f756e6465640a3b202845444943542d4142492d56455249464945522d424f554e442d303031292e0a7665726966696572203d206465636c617261746976652d7665726966696572202f2065786563757461626c652d76657269666965720a6465636c617261746976652d7665726966696572203d207b20636c6173733a20226465636c61726174697665222c2072756c657365743a207265736f757263652d726566207d0a65786563757461626c652d7665726966696572203d207b0a2020636c6173733a202265786563757461626c65222c0a2020636f6d706f6e656e743a207265736f757263652d7265662c0a202073616e64626f783a207265736f757263652d7265662c0a20206675656c4d6f64656c3a207265736f757263652d7265662c0a7d0a0a3b20416e792065786563757461626c6520636f6d706f6e656e7420697320626f756e64656420627920697473206f776e2073616e64626f78202b206675656c206d6f64656c2e0a65786563757461626c652d636f6d706f6e656e74203d207b0a2020636f6d706f6e656e743a207265736f757263652d7265662c0a202073616e64626f783a207265736f757263652d7265662c0a20206675656c4d6f64656c3a207265736f757263652d7265662c0a7d0a0a6c61777061636b2d646570203d207b2069643a20747374722c2076657273696f6e3a20747374722c206469676573743a207368613235362d646967657374207d0a0a3b20416461707465722073656c656374696f6e206b65797320534f4c454c59206f666620746865206469676573742d6c6f636b65642060616363657074656454617267657450726f66696c65600a3b20286974732060696460206973207468652070726f66696c652069643b206974732060646967657374602070696e73207468652065786163742070726f66696c652f76657273696f6e292e2054686572650a3b20617265206e6f20696e646570656e64656e7420646973706c617920737472696e6773207468617420636f756c64206469736167726565207769746820746865206c6f636b2c20736f20610a3b207265736f6c7665722063616e6e6f742062696e6420616e206164617074657220746f206f6e6520746172676574207768696c6520746865206c6f636b2070726f76657320616e6f746865720a3b202845444943542d4c41575041434b2d414441505445522d54415247455449522d303031292e0a7461726765742d61646170746572203d207b0a2020616363657074656454617267657450726f66696c653a207265736f757263652d7265662c202020203b206469676573742d6c6f636b65642c20617574686f72697461746976652073656c6563746f720a2020616363657074656454617267657449723a207265736f757263652d7265662c2020202020202020203b206469676573742d6c6f636b65640a2020616461707465723a207265736f757263652d7265662c0a7d0a0a3b20536861726564207479706573207265736f757263652d72656620616e64207368613235362d6469676573742061726520646566696e6564206f6e636520696e0a3b2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d61202845444943542d4142492d4e4f4455502d303031292e0a0a3b202d2d2d206578706f72742073757266616365202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a0a6c61777061636b2d6578706f727473203d207b0a202074797065733a205b2a206578706f727465642d747970655d2c0a2020636f6e7374616e74733a205b2a206578706f727465642d636f6e7374616e745d2c0a20207075726546756e6374696f6e733a205b2a20707572652d66756e6374696f6e5d2c0a2020656666656374733a205b2a2073656d616e7469632d6566666563745d2c0a20206f62737472756374696f6e733a205b2a206f62737472756374696f6e2d6465665d2c0a20203b206b65796564206279206f7065726174696f6e2d70726f66696c6520636f6f7264696e61746520e2869220756e697175656e65737320656e666f726365640a20203b202845444943542d4142492d4f5050524f46494c452d554e495155452d303031290a20203b206f7065726174696f6e2d70726f66696c65207265636f7264732074686973206c61777061636b206578706f72747320286f707469632074656d706c6174657320746861740a20203b2060696d706c656d656e7473602f6070726f66696c656020636c6175736573207265736f6c766520616761696e7374292e206f7065726174696f6e2d70726f66696c652069730a20203b20646566696e656420696e2065646963742d636f6d6d6f6e2e6364646c202845444943542d4142492d4f5050524f46494c452d534c4f542d303031292e0a20206f7065726174696f6e50726f66696c65733a207b202a2074737472203d3e206f7065726174696f6e2d70726f66696c65207d2c20203b206b6579656420627920636f6f7264696e6174650a7d0a0a6578706f727465642d7479706520202020203d207b20636f6f7264696e6174653a20747374722c20646566696e6974696f6e3a20636f72652d747970652d726566207d0a6578706f727465642d636f6e7374616e74203d207b20636f6f7264696e6174653a20747374722c20747970653a20636f72652d747970652d7265662c2076616c75653a20616e79207d0a0a3b204120707572652068656c7065722069732061206469736372696d696e6174656420756e696f6e2062792060736f75726365602c20736f2074686520736368656d6120697473656c660a3b2067756172616e7465657320616e20696d706c656d656e746174696f6e20657869737473202845444943542d4c41575041434b2d505552452d494d504c2d303031293a0a3b2020202d20226564696374223a20617574686f72656420696e2045646963742f436f72653b2074686520436f726520626f6479206973206361727269656420696e6c696e6520286861736865640a3b20202020207769746820746865206578706f72742073757266616365292e2054686520736368656d61207265717569726573207468652060626f647960206669656c642e0a3b2020202d2022636f6d706f6e656e74223a20696d706c656d656e746564206f7574736964652045646963743b2063617272696573206e6f20696e6c696e6520626f647920616e6420696e73746561640a3b20202020206361727269657320697473206f776e206469676573742d6c6f636b65642060696d706c656d656e746174696f6e60202873616e64626f78202b206675656c292e20497420646f65730a3b20202020206e6f7420646570656e64206f6e20746865206f7074696f6e616c206d616e69666573742d6c6576656c2068656c706572436f6d706f6e656e742e0a707572652d66756e6374696f6e203d2065646963742d707572652d66756e6374696f6e202f20636f6d706f6e656e742d707572652d66756e6374696f6e0a0a707572652d66756e6374696f6e2d636f6d6d6f6e203d20280a2020636f6f7264696e6174653a20747374722c0a202074797065506172616d65746572733a205b2a20747374725d2c0a2020706172616d6574657254797065733a205b2a20636f72652d747970652d7265665d2c2020202020203b20616c6c20626f756e6465640a202072657475726e547970653a20636f72652d747970652d7265662c20202020202020202020202020203b20626f756e6465640a2020636f737454656d706c6174653a20747374722c0a202064657465726d696e69736d436c6173733a2022746f74616c22202f2022746f74616c2d776974682d74797065642d646961676e6f73746963222c0a290a0a65646963742d707572652d66756e6374696f6e203d207b0a2020707572652d66756e6374696f6e2d636f6d6d6f6e2c0a2020736f757263653a20226564696374222c0a2020626f64793a20636f72652d666e2d626f64792c2020202020202020202020202020202020202020203b20696e6c696e652c20686173682d7369676e69666963616e740a7d0a0a636f6d706f6e656e742d707572652d66756e6374696f6e203d207b0a2020707572652d66756e6374696f6e2d636f6d6d6f6e2c0a2020736f757263653a2022636f6d706f6e656e74222c0a20203b20746865206469676573742d6c6f636b656420636f6d706f6e656e7420696d706c656d656e74696e6720746869732068656c7065722e2052657175697265642061742074686520736368656d610a20203b206c6576656c20736f206120636f6d706f6e656e742068656c7065722063616e206e657665722076616c696461746520776974686f7574206120686173682d626f756e642c0a20203b2073616e64626f782b6675656c2d64657363726962656420696d706c656d656e746174696f6e202845444943542d4c41575041434b2d505552452d494d504c2d303031292e0a2020696d706c656d656e746174696f6e3a2065786563757461626c652d636f6d706f6e656e742c0a7d0a0a3b20636f72652d666e2d626f647920697320646566696e65642062792065646963742d636f72652e6364646c20616e6420617373656d626c656420776974682074686973206c61777061636b0a3b20736368656d612e2049742069732061207075726520436f72652066756e6374696f6e20626f64792c206e6f7420616e206566666563742d63617061626c6520636f72652d626c6f636b2e0a0a73656d616e7469632d656666656374203d207b0a2020636f6f7264696e6174653a20747374722c0a202074797065506172616d65746572733a205b2a20747374725d2c0a2020696e707574547970653a20636f72652d747970652d7265662c2020202020202020202020202020203b20626f756e6465640a20206f7574707574547970653a20636f72652d747970652d7265662c20202020202020202020202020203b20626f756e6465640a2020657865637574696f6e436c6173733a202270726f6f664f6e6c7922202f202272756e74696d65222c2020203b206f7274686f676f6e616c20746f207772697465436c6173730a20206566666563744b696e6448696e743a206566666563742d6b696e642c0a2020666f6f747072696e744f626c69676174696f6e3a20747374722c0a2020636f73744f626c69676174696f6e3a20747374722c0a20206566666563744661696c757265733a207b202a206661696c7572652d6964656e74203d3e206566666563742d6661696c7572652d626f6479207d2c20203b206b6579656420627920636f6f7264696e6174653b20756e697175650a20206775617264537570706f72743a20626f6f6c2c0a7d0a0a6f62737472756374696f6e2d646566203d207b0a2020636f6f7264696e6174653a20747374722c0a2020617574686f72697479436c6173733a20617574686f726974792d636c6173732c0a20207061796c6f6164536368656d613a20636f72652d747970652d7265662c20202020202020202020203b2074797065642c20626f756e64656420286d617920626520656d707479207265636f7264290a7d0a0a3b206566666563742d6661696c7572652d626f64792c206566666563742d6b696e642c20617574686f726974792d636c6173732c20616e6420636f72652d747970652d7265662061726520646566696e65640a3b206f6e636520696e2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d61202845444943542d4142492d4e4f4455502d303031292e0a0a3b202d2d2d2065646963742d6c61777061636b2d616461707465722e6364646c202d2d2d0a3b2065646963742d6c61777061636b2d616461707465722e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f72206f6e6520646972656374206465636c61726174697665206c61777061636b2074617267657420616461707465722e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a3b0a3b2054686520656e636c6f73696e67206c61777061636b206d616e69666573742073656c6563747320746865206578616374207461726765742070726f66696c652c207461726765742049522c0a3b20616e642061646170746572207265736f75726365206469676573742e2054686f7365206964656e74697469657320617265206e6f7420726570656174656420686572652e0a0a6c61777061636b2d61646170746572203d207b0a202061706956657273696f6e3a202265646963742e6c61777061636b2d616461707465722f7631222c0a2020636c6173733a20226465636c61726174697665222c0a20206f7065726174696f6e50726f66696c65733a207b0a202020202a2074737472203d3e206c61777061636b2d616461707465722d6f7065726174696f6e2d70726f66696c650a20207d2c0a2020656666656374496d706c656d656e746174696f6e733a207b0a202020202a2074737472203d3e206c61777061636b2d616461707465722d6566666563740a20207d2c0a2020627564676574733a207b0a202020202a2074737472203d3e206c61777061636b2d616461707465722d6275646765740a20207d2c0a7d0a0a3b204b657973206172652063616e6f6e6963616c206c61777061636b206f7065726174696f6e2d70726f66696c6520636f6f7264696e617465732e0a6c61777061636b2d616461707465722d6f7065726174696f6e2d70726f66696c65203d0a20207b0a20202020636f72653a20747374722c0a2020202073656d616e746963456666656374733a205b2b20747374725d2c0a202020203f206275646765744f626c69676174696f6e3a20747374722c0a202020203f20746172676574436f6e66696775726174696f6e3a207265736f757263652d7265662c0a20207d202f0a20207b0a20202020636f72653a20747374722c0a2020202073656d616e746963456666656374733a205b5d2c0a202020206275646765744f626c69676174696f6e3a20747374722c0a20202020746172676574436f6e66696775726174696f6e3a207265736f757263652d7265662c0a20207d0a0a3b204b657973206172652063616e6f6e6963616c206c61777061636b2073656d616e7469632d65666665637420636f6f7264696e617465732e20466f6f747072696e742c20636f73742c20616e640a3b206661696c757265206669656c6473206d7573742065786163746c792064697363686172676520746865206d61746368696e67206578706f72746564206566666563742e0a6c61777061636b2d616461707465722d656666656374203d207b0a2020746172676574496e7472696e7369633a20747374722c0a2020746172676574436f6e66696775726174696f6e3a207265736f757263652d7265662c0a20207772697465436c6173733a206c61777061636b2d616461707465722d77726974652d636c6173732c0a2020666f6f747072696e744f626c69676174696f6e3a20747374722c0a2020636f73744f626c69676174696f6e3a20747374722c0a20206661696c7572654d617070696e67733a207b202a206661696c7572652d6964656e74203d3e2074737472207d2c0a7d0a0a3b204b657973206172652063616e6f6e6963616c206578706f7274656420636f73742d6f626c69676174696f6e20636f6f7264696e617465732e0a6c61777061636b2d616461707465722d627564676574203d207b0a20206d617853746570733a2075696e742c0a20206d6178416c6c6f636174656442797465733a2075696e742c0a20206d61784f757470757442797465733a2075696e742c0a7d0a0a6c61777061636b2d616461707465722d77726974652d636c617373203d20226e6f6e6522202f20227265616422202f202263726561746522202f2022656e7375726522202f0a20202020202020202020202020202020202020202020202020202020202022617070656e6422202f20227265706c61636522202f202264656c65746522202f2022637573746f6d220a0a3b206661696c7572652d6964656e7420697320646566696e656420696e2065646963742d636f6d6d6f6e2e6364646c2e0a0a3b202d2d2d2065646963742d7461726765742d70726f66696c652e6364646c202d2d2d0a3b2065646963742d7461726765742d70726f66696c652e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f7220746865204564696374207461726765742070726f66696c65206d616e69666573742e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76310a3b202873656520535045435f636f6e74696e75756d2d636f6e74726163742d62756e646c652d76312e6d64292e204a534f4e20696e207468652070726f736520737065637320697320610a3b207265766965772072656e646572696e672067656e6572617465642066726f6d207468697320736368656d613b2074686973204344444c206973207468652073696e676c6520736f757263650a3b206f66207472757468202845444943542d4142492d4e4f4455502d303031292e0a0a7461726765742d70726f66696c652d6d616e6966657374203d207b0a202061706956657273696f6e3a202265646963742e7461726765742d70726f66696c652f7631222c0a202069643a20747374722c202020202020202020202020202020202020202020202020203b20652e672e20226563686f2e64706f220a202076657273696f6e3a20747374722c20202020202020202020202020202020202020203b20652e672e202231220a20206163636570746564436f72654162693a205b2b20747374725d2c20202020202020203b20652e672e205b2265646963742e636f72652f7631225d0a0a2020696e7472696e736963733a207265736f757263652d7265662c0a2020696e7472696e7369634e616d6573706163653a20747374722c0a20203b207075626c697368657320746869732070726f66696c652773206f7065726174696f6e2d70726f66696c65207265636f72647320286f707469632074656d706c6174657320746861740a20203b206070726f66696c65602f60696d706c656d656e74736020636c6175736573207265736f6c766520616761696e7374292e205265666572656e63657320616e0a20203b206f7065726174696f6e2d70726f66696c65732d646f63756d656e74202845444943542d4142492d4f5050524f46494c452d534c4f542d303031292e0a20206f7065726174696f6e50726f66696c65733a207265736f757263652d7265662c0a2020666f6f747072696e74416c67656272613a207265736f757263652d7265662c0a2020636f7374416c67656272613a207265736f757263652d7265662c0a202074617267657449723a207265736f757263652d7265662c0a20206f62737472756374696f6e5461786f6e6f6d793a207265736f757263652d7265662c0a202076657269666965723a207265736f757263652d7265662c0a20206c6f77657265723a207265736f757263652d7265662c0a202073616e64626f783a207265736f757263652d7265662c0a20206675656c4d6f64656c3a207265736f757263652d7265662c0a0a20203b206669656c647320746865206c616e67756167652073706563207265717569726573206f662065766572792070726f66696c650a202062756e646c6550726f66696c653a207265736f757263652d7265662c0a202067656e657261746564417274696661637450726f66696c65733a205b2a207265736f757263652d7265665d2c0a202063616e6f6e6963616c456e636f64696e6752756c65733a207265736f757263652d7265662c0a20203b20412070726f66696c65207468617420616363657074732074686520646972656374206465636c61726174697665206c61777061636b2d6164617074657220414249206e616d65732069740a20203b2065786163746c79206f6e63652e2050726f66696c6573207468617420646f206e6f7420636f6e73756d65206c61777061636b206164617074657273206c6561766520746869730a20203b206f7074696f6e616c20736c6f7420616273656e74206f7220656d7074792e0a20203f2061636365707465644c61777061636b416461707465724162693a205b5d202f205b2265646963742e6c61777061636b2d616461707465722f7631225d2c0a2020646961676e6f737469634162693a207265736f757263652d7265662c0a0a20203b206170706c69636174696f6e20646f637472696e650a20206170706c69636174696f6e4d6f64656c3a202261746f6d6963222c0a202072656164436f6e73697374656e63793a20226170706c69636174696f6e2d736e617073686f7422202f20747374722c0a202067756172644576616c756174696f6e3a2022707265636f6d6d69742d61746f6d696322202f20747374722c0a20206f62737472756374696f6e526f6c6c6261636b3a20226e6f2d76697369626c652d6566666563747322202f20747374722c0a20206d756c74695461726765743a20626f6f6c2c0a20203b207768657468657220746865207461726765742063616e206576616c7561746520707265636f6d6d697420706f7374636f6e646974696f6e20286067756172616e746565602920636865636b730a20203b20696e73696465207468652061746f6d6963206170706c69636174696f6e20756e6974202845444943542d5441524745542d504f5354434f4e442d303031290a2020706f7374636f6e646974696f6e537570706f72743a20626f6f6c2c0a0a202064657465726d696e6973746963457865637574696f6e3a207265736f757263652d7265662c0a2020636f6e666f726d616e636546697874757265436f727075733a207265736f757263652d7265662c0a7d0a0a3b20536861726564207479706573207265736f757263652d72656620616e64207368613235362d6469676573742061726520646566696e6564206f6e636520696e0a3b2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d6120627920746865206275696c640a3b202845444943542d4142492d4e4f4455502d303031292e205468657920617265206e6f74207265646566696e656420686572652e0a0a3b202d2d2d20696e7472696e736963207369676e6174757265202d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d0a3b20546865206172746966616374207265666572656e63656420627920746865206d616e696665737427732060696e7472696e7369637360207265736f757263652d726566206973207468650a3b20696e7472696e7369632d7369676e617475726520636f7270757320646f63756d656e742062656c6f772e20497473206c61796f757420697320666978656420736f2074776f0a3b20696e646570656e64656e742070726f66696c65732076616c69646174652f686173682074686520636f72707573206964656e746963616c6c790a3b202845444943542d4142492d494e5452494e534943532d444f432d303031292e0a0a3b20696e7472696e736963732069732061204d4150206b6579656420627920636f6f7264696e6174652c20736f2074686520736368656d6120697473656c6620656e666f726365730a3b20636f6f7264696e61746520756e697175656e6573732e20412070726f766964657220726563656976657320746865207265736f6c76656420636f7270757320617320610a3b206469676573742d626f756e642073656d616e74696320696e70757420616e64207265736f6c76657320636f6f7264696e617465732077697468696e20746861742061727469666163742e0a3b2045616368206d6170206b6579204d55535420657175616c20697473207265636f726427732060636f6f7264696e61746560206669656c640a3b202845444943542d4142492d494e5452494e5349432d554e495155452d303031292e0a696e7472696e736963732d646f63756d656e74203d207b0a202061706956657273696f6e3a202265646963742e7461726765742d70726f66696c652e696e7472696e736963732f7631222c0a2020696e7472696e736963733a207b202a2074737472203d3e20696e7472696e736963207d2c0a7d0a0a3b20546865206172746966616374207265666572656e63656420627920746865206d616e6966657374277320606f7065726174696f6e50726f66696c657360207265736f757263652d7265662e0a3b206f7065726174696f6e2d70726f66696c65202f206f707469632d74656d706c6174652061726520646566696e656420696e2065646963742d636f6d6d6f6e2e6364646c2e204b657965642062790a3b20636f6f7264696e61746520736f207265736f6c7574696f6e2063616e2774207069636b206265747765656e2074776f2073616d652d636f6f7264696e6174652070726f66696c65730a3b202845444943542d4142492d4f5050524f46494c452d534c4f542d3030312c2045444943542d4142492d4f5050524f46494c452d554e495155452d303031292e0a6f7065726174696f6e2d70726f66696c65732d646f63756d656e74203d207b0a202061706956657273696f6e3a202265646963742e7461726765742d70726f66696c652e6f7065726174696f6e2d70726f66696c65732f7631222c0a202070726f66696c65733a207b202a2074737472203d3e206f7065726174696f6e2d70726f66696c65207d2c0a7d0a0a3b2041207479706564207072652d6c6f776572696e67207175657374696f6e20746861742063616e2062652070726f706f73656420627920576174736f6e206f7220616e206167656e7420616e640a3b20636865636b65642062792074686520636f6d70696c65722e2049742069732063616e6f6e6963616c2d43424f5220656e636f64656420756e6465720a3b206065646963742e6c6f776572696e672d726571756972656d656e74732f7631603b2074686520636f6d70696c657220636865636b7320746869732061727469666163742c206e6f74207468650a3b2070726f736520746861742070726f64756365642069742e0a6c6f776572696e672d726571756972656d656e7473203d207b0a202061706956657273696f6e3a202265646963742e6c6f776572696e672d726571756972656d656e74732f7631222c0a20206f7065726174696f6e50726f66696c653a20747374722c0a202073656d616e746963456666656374733a205b2a2073656d616e7469632d6566666563742d726571756972656d656e745d2c0a202072657175697265645772697465436c61737365733a205b2a2077726974652d636c6173735d2c0a202067756172644b696e64733a205b2a2067756172642d6b696e645d2c0a202061746f6d69636974793a2061746f6d69636974792d726571756972656d656e742c0a2020706f7374636f6e646974696f6e537570706f72743a20626f6f6c2c0a20206f62737472756374696f6e436f6f7264696e617465733a205b2a20747374725d2c0a2020666f6f747072696e744f626c69676174696f6e733a205b2a20747374725d2c0a2020636f73744f626c69676174696f6e733a205b2a20747374725d2c0a20206f70746963436f6e74726163743a20747374722c0a7d0a0a73656d616e7469632d6566666563742d726571756972656d656e74203d207b0a2020636f6f7264696e6174653a20747374722c0a20207772697465436c6173733a2077726974652d636c6173732c0a202067756172644b696e64733a205b2a2067756172642d6b696e645d2c0a20206f62737472756374696f6e436f6f7264696e617465733a205b2a20747374725d2c0a2020666f6f747072696e744f626c69676174696f6e733a205b2a20747374725d2c0a2020636f73744f626c69676174696f6e733a205b2a20747374725d2c0a7d0a0a77726974652d636c617373203d20226e6f6e6522202f20227265616422202f202263726561746522202f2022656e7375726522202f2022617070656e6422202f0a2020202020202020202020202020227265706c61636522202f202264656c65746522202f20747374720a67756172642d6b696e64203d2022707265636f6d6d69742d61746f6d696322202f20747374720a61746f6d69636974792d726571756972656d656e74203d202261746f6d696322202f20747374720a0a3b20412067656e75696e6520756e696f6e3a207075726520636f6e7374727563746f7273206361727279206e6f20656666656374206b696e64206f72206661696c757265733b206566666563740a3b20696e7472696e73696373206d757374202845444943542d5441524745542d494e5452494e5349432d434c4153532d303031292e2054686520736368656d6120656e666f7263657320746869732c0a3b206e6f74206120636f6d6d656e742e0a0a3b2054686520696e7472696e736963277320636f6f7264696e6174652069732074686520696e7472696e73696373206d6170204b45592c206e6f7420612076616c7565206669656c642c20736f207468650a3b206b657920616e6420636f6f7264696e6174652063616e206e65766572206469736167726565202845444943542d4142492d494e5452494e5349432d554e495155452d303031292e0a696e7472696e736963203d20707572652d696e7472696e736963202f206566666563742d696e7472696e7369630a0a707572652d696e7472696e736963203d207b0a2020696e7472696e736963436c6173733a202270757265222c0a202074797065506172616d65746572733a205b2a20747374725d2c0a2020617267756d656e7454797065733a205b2a20636f72652d747970652d7265665d2c0a202072657475726e547970653a20636f72652d747970652d7265662c0a20206775617264537570706f72743a2066616c73652c0a2020666f6f747072696e7454656d706c6174653a20747374722c0a2020636f737454656d706c6174653a20747374722c0a20207772697465436c6173733a20226e6f6e65222c0a7d0a0a6566666563742d696e7472696e736963203d207b0a2020696e7472696e736963436c6173733a2022656666656374222c0a202074797065506172616d65746572733a205b2a20747374725d2c0a2020617267756d656e7454797065733a205b2a20636f72652d747970652d7265665d2c0a202072657475726e547970653a20636f72652d747970652d7265662c0a20206566666563744b696e643a206566666563742d6b696e642c0a20203b206d6170206b65796564206279206661696c75726520636f6f7264696e61746520286661696c7572652d6964656e74293b20746865206661696c75726520636f6f7264696e6174652069730a20203b20746865206b65792c206e6f7420612076616c7565206669656c642c20736f20756e697175656e657373206973207374727563747572616c0a20203b202845444943542d4142492d4641494c5552452d554e495155452d303031292e0a20206566666563744661696c757265733a207b202a206661696c7572652d6964656e74203d3e206566666563742d6661696c7572652d626f6479207d2c0a20206775617264537570706f72743a20626f6f6c2c0a2020666f6f747072696e7454656d706c6174653a20747374722c0a2020636f737454656d706c6174653a20747374722c0a20207772697465436c6173733a20227265616422202f202263726561746522202f2022656e7375726522202f2022617070656e6422202f20227265706c61636522202f0a20202020202020202020202020202264656c65746522202f2022637573746f6d222c0a202063616e5061727469636970617465496e41746f6d696347756172643a20626f6f6c2c0a7d0a0a3b206566666563742d6661696c7572652d626f64792c206566666563742d6b696e642c20617574686f726974792d636c6173732c20616e6420636f72652d747970652d7265662061726520646566696e65640a3b206f6e636520696e2065646963742d636f6d6d6f6e2e6364646c20616e6420617373656d626c65642077697468207468697320736368656d61202845444943542d4142492d4e4f4455502d303031292e0a0a3b202d2d2d2065646963742d617574686f726974792d66616374732e6364646c202d2d2d0a3b2065646963742d617574686f726974792d66616374732e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f722074686520666972737420636f6d70696c65722d636f6e7465787420617574686f726974792d666163747320646f63756d656e742e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a3b0a3b205468697320736368656d6120697320617373656d626c656420776974682065646963742d636f6d6d6f6e2e6364646c20736f20736f757263652e6469676573742075736573207468650a3b20736861726564207368613235362d6469676573742074797065642076616c75652e204a534f4e2069732061207265766965772f696e7075742072656e646572696e673a206974730a3b20607368613235363a3c3634206865783e6020736f75726365206469676573742069732070726f6a656374656420746f205b60736861323536602c203332207261772062797465735d206f6e0a3b2074686520776972652c20616e64206974732066616374206172726179732070726f6a65637420746f2074686520636f6f7264696e6174652d6b65796564206d6170732062656c6f772e0a0a617574686f726974792d6661637473203d207b0a202061706956657273696f6e3a202265646963742e617574686f726974792d66616374732f7631222c0a2020736f757263653a20617574686f726974792d666163742d736f757263652c0a20206f7065726174696f6e50726f66696c65733a207b202a2074737472203d3e20617574686f726974792d6f7065726174696f6e2d70726f66696c652d66616374207d2c0a20206566666563745772697465436c61737365733a207b202a2074737472203d3e20617574686f726974792d77726974652d636c617373207d2c0a2020627564676574733a207b202a2074737472203d3e20617574686f726974792d6275646765742d66616374207d2c0a7d0a0a617574686f726974792d666163742d736f75726365203d207b0a20206b696e643a20226c61777061636b22202f202274617267657450726f66696c65222c0a2020636f6f7264696e6174653a20747374722c0a20206469676573743a207368613235362d6469676573742c0a7d0a0a3b20546865206d6170206b65792069732074686520736f75726365206f7065726174696f6e2d70726f66696c6520636f6f7264696e6174652e204974206973206e6f7420726570656174656420696e0a3b207468652076616c75652c20736f2061206b657920616e6420656d62656464656420636f6f7264696e6174652063616e6e6f742064697361677265652e20416c6c6f7765642077726974650a3b20636c61737365732061726520612063616e6f6e6963616c206d61702d7365743a2074686520636c6173732069732074686520756e69717565206b657920616e64206e756c6c206973207468650a3b20756e6974206d61726b65722e2043616e6f6e6963616c2043424f52206669786573206b6579206f7264657220776974686f75742061207365636f6e64206f72646572696e672072756c652e0a617574686f726974792d6f7065726174696f6e2d70726f66696c652d66616374203d207b0a2020636f72653a20747374722c0a2020616c6c6f7765645772697465436c61737365733a207b202a20617574686f726974792d77726974652d636c617373203d3e206e756c6c207d2c0a7d0a0a3b20546865206566666563745772697465436c6173736573206d6170206b6579206973207468652073656d616e7469632065666665637420636f6f7264696e6174652e2054686520627564676574730a3b206d6170206b65792069732074686520736f757263652062756467657420636f6f7264696e6174652e2043616e6f6e6963616c2043424f52206d61702d6b657920756e697175656e6573730a3b206d616b6573206475706c6963617465206661637420636f6f7264696e61746573207374727563747572616c6c7920756e726570726573656e7461626c652e0a617574686f726974792d6275646765742d66616374203d207b0a20206d617853746570733a2075696e742c0a20206d6178416c6c6f636174656442797465733a2075696e742c0a20206d61784f757470757442797465733a2075696e742c0a7d0a0a3b20417574686f726974794661637473446f63756d656e7420763120696e74656e74696f6e616c6c792061636365707473206f6e6c792074686520777269746520636c6173736573207468650a3b2063757272656e7420636f6d70696c6572206d6f64656c2063616e20636f6e73756d652e2060637573746f6d602069732074686520736f6c6520763120637573746f6d207370656c6c696e673b0a3b20617262697472617279207461726765742d70726f66696c6520657874656e73696f6e20737472696e677320646f206e6f7420656e746572207468697320636f6d70696c657220706174682e0a617574686f726974792d77726974652d636c617373203d20226e6f6e6522202f20227265616422202f202263726561746522202f2022656e7375726522202f2022617070656e6422202f0a202020202020202020202020202020202020202020202020227265706c61636522202f202264656c65746522202f2022637573746f6d220a0a3b202d2d2d2065646963742d726573756c742d70726f6a656374696f6e2e6364646c202d2d2d0a3b20535044582d4c6963656e73652d4964656e7469666965723a204170616368652d322e300a3b2065646963742d726573756c742d70726f6a656374696f6e2e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f7220636f6d70696c65722d6f776e6564206170706c69636174696f6e2d726573756c742070726f6a656374696f6e732e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a0a726573756c742d70726f6a656374696f6e203d207b0a2020736368656d613a202265646963742e726573756c742d70726f6a656374696f6e2f7631222c0a20206f7065726174696f6e436f6f7264696e6174653a20626f756e6465642d70726f6a656374696f6e2d746578742c0a20206f7574707574547970653a20626f756e6465642d70726f6a656374696f6e2d746578742c0a20206d61784f757470757442797465733a2075696e74202e677420302c0a202065787072657373696f6e3a20726573756c742d70726f6a656374696f6e2d657870722c0a7d0a0a726573756c742d70726f6a656374696f6e2d65787072203d20726573756c742d70726f6a656374696f6e2d7265636f7264202f20726573756c742d70726f6a656374696f6e2d736f757263650a0a726573756c742d70726f6a656374696f6e2d7265636f7264203d207b0a20206b696e643a20227265636f7264222c0a20203b2054686520726f6f74207265636f726420636f756e7473206173206f6e65206f66207468652052757374206465636f6465722773203235362065787072657373696f6e206e6f6465732e0a20203b204e657374656420616767726567617465206e6f646520636f756e742072656d61696e7320616e20617574686f7269746174697665206465636f64657220636865636b2e0a20206669656c64733a207b20302a32353520626f756e6465642d70726f6a656374696f6e2d74657874203d3e20726573756c742d70726f6a656374696f6e2d65787072207d2c0a7d0a0a726573756c742d70726f6a656374696f6e2d736f75726365203d207b0a20206b696e643a2022736f75726365222c0a2020736f757263653a20726573756c742d70726f6a656374696f6e2d736f757263652d6b696e642c0a20203b204d617463686573204d41585f524553554c545f50524f4a454354494f4e5f504154485f5345474d454e545320696e2065646963742d73796e7461782e0a2020706174683a205b302a333220626f756e6465642d70726f6a656374696f6e2d746578745d2c0a7d0a0a726573756c742d70726f6a656374696f6e2d736f757263652d6b696e64203d0a20207b206b696e643a20226170706c69636174696f6e496e70757422207d202f0a20207b0a202020206b696e643a20227075726542696e64696e67222c0a2020202062696e64696e6749643a20626f756e6465642d70726f6a656374696f6e2d746578742c0a20207d202f0a20207b0a202020206b696e643a20226361706162696c697479526573756c74222c0a202020207374657049643a20626f756e6465642d70726f6a656374696f6e2d746578742c0a20207d0a0a626f756e6465642d70726f6a656374696f6e2d74657874203d2074737472202e73697a652028312e2e31303234290a0a3b202d2d2d2065646963742d7461726765742d69722e6364646c202d2d2d0a3b20535044582d4c6963656e73652d4964656e7469666965723a204170616368652d322e300a3b2065646963742d7461726765742d69722e6364646c0a3b2043616e6f6e6963616c20736368656d6120666f72207468652045646963742d6f776e65642054617267657420495220617274696661637420656e76656c6f70652e0a3b20417574686f7269746174697665206279746520656e636f64696e673a2065646963742e63616e6f6e6963616c2d63626f722f76312e0a3b0a3b205468697320736368656d6120697320617373656d626c656420776974682065646963742d636f6d6d6f6e2e6364646c20616e642065646963742d636f72652e6364646c2e2049740a3b2064656c696265726174656c792072657573657320436f72652065787072657373696f6e732c20707265646963617465732c20627564676574732c206c6f63616c207265666572656e6365732c0a3b206f62737472756374696f6e20726561736f6e732c20616e64206f62737472756374696f6e2061726d7320736f2074686520736368656d61206d617463686573207468652076616c75650a3b20656d6974746564206279207468652063616e6f6e6963616c2054617267657420495220656e636f64657220726174686572207468616e20726573746174696e672074686f73652074797065732e0a3b2049742064657363726962657320746865207374727563747572616c207368617065206f662076616c6964206c6f776572696e672d70726f6475636564206172746966616374732e205468650a3b206c6f776572696e6720616e6420656e636f64657220636f6e7472616374732073657061726174656c7920656e666f7263652073656d616e746963206964656e7469666965722072756c65730a3b20616e642063616e6f6e6963616c206f72646572696e672f64656475706c69636174696f6e20666f72207365742d6c696b652076616c7565732e0a0a3b2054617267657420495220656e636f64696e672072656a6563747320616e20656d707479207461726765742d70726f66696c6520636f6f7264696e617465206265666f72652062797465730a3b2065786973742c20736f207468697320726f6f74207469676874656e732074686520736861726564207374727563747572616c207265736f757263652d726566206163636f7264696e676c792e0a7461726765742d69722d7265736f757263652d726566203d207b0a202069643a2074737472202e7265676578702022283f73292e2b222c0a20206469676573743a207368613235362d6469676573742c0a7d0a0a7461726765742d69722d6172746966616374203d207461726765742d69722d636c6f7365642d6172746966616374202f207461726765742d69722d6c65676163792d61727469666163740a0a7461726765742d69722d61727469666163742d636f6d6d6f6e203d20280a20206b696e643a202274617267657449724172746966616374222c0a2020646f6d61696e3a20747374722c0a202074617267657450726f66696c653a207461726765742d69722d7265736f757263652d7265662c0a2020736f75726365436f7265436f6f7264696e6174653a2074737472202e7265676578702022283f73292e2b222c0a290a0a7461726765742d69722d636c6f7365642d6172746966616374203d207b0a20207461726765742d69722d61727469666163742d636f6d6d6f6e2c0a202073656d616e746963436c6f737572653a207461726765742d69722d73656d616e7469632d636c6f737572652c0a2020696e74656e74733a207b202a2074737472203d3e207461726765742d69722d696e74656e74207d2c0a7d0a0a7461726765742d69722d6c65676163792d6172746966616374203d207b0a20207461726765742d69722d61727469666163742d636f6d6d6f6e2c0a2020696e74656e74733a207b202a2074737472203d3e207461726765742d69722d6c65676163792d696e74656e74207d2c0a7d0a0a7461726765742d69722d73656d616e7469632d636c6f73757265203d207b0a2020736f75726365436f72653a207461726765742d69722d7265736f757263652d7265662c0a20206c61777061636b733a205b2a207461726765742d69722d7265736f757263652d7265665d2c0a20203f206361706162696c69746965733a205b2a207461726765742d69722d7265736f757263652d7265665d2c0a7d0a0a7461726765742d69722d696e74656e74203d207b0a20207461726765742d69722d696e74656e742d636f6d6d6f6e2c0a20203f2062617369733a20636f72652d657870722c0a20203f207075726542696e64696e67733a205b312a207461726765742d69722d707572652d62696e64696e675d2c0a20203f2065787465726e616c416374696f6e52657175657374733a205b2a207461726765742d69722d65787465726e616c2d616374696f6e2d726571756573745d2c0a7d0a0a7461726765742d69722d6c65676163792d696e74656e74203d207b0a20207461726765742d69722d696e74656e742d636f6d6d6f6e2c0a7d0a0a7461726765742d69722d696e74656e742d636f6d6d6f6e203d20280a20206f7065726174696f6e50726f66696c653a20747374722c0a2020696e707574436f6e73747261696e74733a205b2a20696e7075742d636f6e73747261696e745d2c0a2020636f72654576616c756174696f6e4275646765743a20636f72652d6275646765742c0a2020726571756972656d656e74733a205b2a207461726765742d69722d726571756972656d656e745d2c0a202073746570733a205b2a207461726765742d69722d737465705d2c0a2020726573756c743a20636f72652d657870722c0a290a0a7461726765742d69722d726571756972656d656e74203d207b0a202069643a20747374722c0a20207072656469636174653a20636f72652d7072656469636174652c0a20206f6e4661696c7572653a20726571756972652d6661696c7572652d61726d2c0a7d0a0a7461726765742d69722d707572652d62696e64696e67203d207b0a202069643a2074737472202e7265676578702022283f73292e2b222c0a202062696e64696e673a206c6f63616c2d7265662c0a202076616c75653a20636f72652d657870722c0a7d0a0a7461726765742d69722d73746570203d207b0a202069643a20747374722c0a202062696e64696e673a206c6f63616c2d7265662c0a20206566666563743a20747374722c0a2020746172676574496e7472696e7369633a20747374722c0a2020696e7075743a20636f72652d657870722c0a20206f62737472756374696f6e4661696c757265733a205b2a206661696c7572652d6964656e745d2c0a20206f62737472756374696f6e41726d733a207b202a206661696c7572652d6964656e74203d3e206f62737472756374696f6e2d61726d207d2c0a7d0a0a7461726765742d69722d65787465726e616c2d616374696f6e2d72657175657374203d207b0a202069643a20747374722c0a202062696e64696e673a206c6f63616c2d7265662c0a20206f7065726174696f6e3a207461726765742d69722d7265736f757263652d7265662c0a2020696e707574547970653a20636f72652d747970652d7265662c0a2020736574746c656d656e74547970653a20636f72652d747970652d7265662c0a2020696e707574536368656d613a207461726765742d69722d7265736f757263652d7265662c0a2020736574746c656d656e74536368656d613a207461726765742d69722d7265736f757263652d7265662c0a2020696e7075743a20636f72652d657870722c0a2020617574686f7269747953636f70653a20636f72652d657870722c0a202062617369733a20636f72652d657870722c0a20206275646765743a2065787465726e616c2d616374696f6e2d6275646765742c0a20207265636f6e63696c696174696f6e4c61773a207461726765742d69722d7265736f757263652d7265662c0a202073746174653a20226177616974696e67536574746c656d656e74222c0a2020736574746c656d656e7441646d697373696f6e3a2022736368656d615265717569726564222c0a7d0a", + "rawSha256": "8d77c84ecbd7d7e38496479b2f8346c15504a56f076170d79c0eca2a57fdb3a5" }, "contracts": [ {"contract": "authority-facts", "rootRule": "authority-facts"}, diff --git a/schemas/edict-provider/generated/v1/evidence/provenance.provider-generation.json b/schemas/edict-provider/generated/v1/evidence/provenance.provider-generation.json index e4e9b595..b28b5fe1 100644 --- a/schemas/edict-provider/generated/v1/evidence/provenance.provider-generation.json +++ b/schemas/edict-provider/generated/v1/evidence/provenance.provider-generation.json @@ -1 +1 @@ -{"apiVersion":"wesley.generation-provenance-manifest/v1","contractVersions":{"generatorAbi":"wesley.extension-generator/v1","inputSchema":"wesley.extension-generation-input/v1","provenanceSchema":"wesley.generation-provenance-manifest/v1"},"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:be164fde5fedaf2c3921dbde3013e4ee6b884d085f22802d5e5d0d7134266201"}],"generationInputDigest":"sha256:dbcc90f465d2a461d6fa107b499a16eedfe49ec8c633c247eeedad2d1cd82022","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:0d60fce10bc16a6909069415b9aa6057328f230a4b0a84b2d56566794f60cc08","version":"0.1.0"},"settingsDigest":"sha256:0f708e76898de6fdb8186352e81d0f5c445adf94bb6c7de9204952d9fe913d4a","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:c663df6dd3d463aad878ae9c3beebf42fe057d7395f91b6d3823d0e0fab77f50"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:6228ebfc8ac9fc21f05d624cccaa731346acfb9203294dbcc767fa4d649fc7e8"}]} \ No newline at end of file +{"apiVersion":"wesley.generation-provenance-manifest/v1","contractVersions":{"generatorAbi":"wesley.extension-generator/v1","inputSchema":"wesley.extension-generation-input/v1","provenanceSchema":"wesley.generation-provenance-manifest/v1"},"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:95f1de04b947f5d1e75d3c73bf6482977e996ee63c4cd2ed8b37f0fd325fd081"}],"generationInputDigest":"sha256:0c07274803d465ec212c313f74dd46396851f43019fa0f97da9571a167c84587","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:80b0a702752d05685478558b7187acbfabe93b2f801646805f3c4b636dc7548a","version":"0.1.0"},"settingsDigest":"sha256:0f708e76898de6fdb8186352e81d0f5c445adf94bb6c7de9204952d9fe913d4a","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:8d77c84ecbd7d7e38496479b2f8346c15504a56f076170d79c0eca2a57fdb3a5"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:bc222c4a669b888a60df6f398412bae232967c11841b9a27c7ba6c18eb41e362"}]} \ No newline at end of file diff --git a/schemas/edict-provider/generated/v1/evidence/review.provider-generation.json b/schemas/edict-provider/generated/v1/evidence/review.provider-generation.json index 1fc41834..dcf42d7d 100644 --- a/schemas/edict-provider/generated/v1/evidence/review.provider-generation.json +++ b/schemas/edict-provider/generated/v1/evidence/review.provider-generation.json @@ -1 +1 @@ -{"apiVersion":"wesley.generation-review/v1","authoritative":false,"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:be164fde5fedaf2c3921dbde3013e4ee6b884d085f22802d5e5d0d7134266201"}],"generationInputDigest":"sha256:dbcc90f465d2a461d6fa107b499a16eedfe49ec8c633c247eeedad2d1cd82022","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:0d60fce10bc16a6909069415b9aa6057328f230a4b0a84b2d56566794f60cc08","version":"0.1.0"},"projectionRoles":["authority-facts.echo-dpo","authority-facts.echo-lawpack","generated-artifact-profile.echo-dpo-registration","lawpack.echo-dpo","schema.echo-provider-artifacts","target-profile.echo-dpo"],"provenanceManifestDigest":"sha256:02e516519f0f765831d41aca41c07215563da0cf8b9c0f4fa17cc1937a1df64d","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:c663df6dd3d463aad878ae9c3beebf42fe057d7395f91b6d3823d0e0fab77f50"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:6228ebfc8ac9fc21f05d624cccaa731346acfb9203294dbcc767fa4d649fc7e8"}]} \ No newline at end of file +{"apiVersion":"wesley.generation-review/v1","authoritative":false,"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:95f1de04b947f5d1e75d3c73bf6482977e996ee63c4cd2ed8b37f0fd325fd081"}],"generationInputDigest":"sha256:0c07274803d465ec212c313f74dd46396851f43019fa0f97da9571a167c84587","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:80b0a702752d05685478558b7187acbfabe93b2f801646805f3c4b636dc7548a","version":"0.1.0"},"projectionRoles":["authority-facts.echo-dpo","authority-facts.echo-lawpack","generated-artifact-profile.echo-dpo-registration","lawpack.echo-dpo","schema.echo-provider-artifacts","target-profile.echo-dpo"],"provenanceManifestDigest":"sha256:c16055cee6e12e36094522d1226896c0b7c17e1e8e2549a9d7a81cedcb641215","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:8d77c84ecbd7d7e38496479b2f8346c15504a56f076170d79c0eca2a57fdb3a5"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:bc222c4a669b888a60df6f398412bae232967c11841b9a27c7ba6c18eb41e362"}]} \ No newline at end of file diff --git a/schemas/edict-provider/generated/v1/primary/schema.echo-provider-artifacts.cddl b/schemas/edict-provider/generated/v1/primary/schema.echo-provider-artifacts.cddl index b9b351db..73051b85 100644 --- a/schemas/edict-provider/generated/v1/primary/schema.echo-provider-artifacts.cddl +++ b/schemas/edict-provider/generated/v1/primary/schema.echo-provider-artifacts.cddl @@ -111,7 +111,8 @@ core-import = { core-type = core-scalar-type / core-record-type / core-variant-type / core-option-type / core-list-type / core-map-type / - core-capability-ref-type / core-external-action-request-type + core-capability-ref-type / core-external-action-request-type / + core-nominal-type core-scalar-type = core-bool-type / core-int-type / core-string-type / core-bytes-type / core-unit-type @@ -131,6 +132,11 @@ core-bytes-type = { ? min: uint, max: uint, } +core-nominal-type = { + kind: "Nominal", + contract: tstr, + representation: core-type-ref, +} core-record-type = { kind: "Record", fields: { * tstr => core-type-ref }, diff --git a/schemas/edict-provider/package/v1/generated/evidence/provenance.provider-generation.json b/schemas/edict-provider/package/v1/generated/evidence/provenance.provider-generation.json index e4e9b595..b28b5fe1 100644 --- a/schemas/edict-provider/package/v1/generated/evidence/provenance.provider-generation.json +++ b/schemas/edict-provider/package/v1/generated/evidence/provenance.provider-generation.json @@ -1 +1 @@ -{"apiVersion":"wesley.generation-provenance-manifest/v1","contractVersions":{"generatorAbi":"wesley.extension-generator/v1","inputSchema":"wesley.extension-generation-input/v1","provenanceSchema":"wesley.generation-provenance-manifest/v1"},"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:be164fde5fedaf2c3921dbde3013e4ee6b884d085f22802d5e5d0d7134266201"}],"generationInputDigest":"sha256:dbcc90f465d2a461d6fa107b499a16eedfe49ec8c633c247eeedad2d1cd82022","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:0d60fce10bc16a6909069415b9aa6057328f230a4b0a84b2d56566794f60cc08","version":"0.1.0"},"settingsDigest":"sha256:0f708e76898de6fdb8186352e81d0f5c445adf94bb6c7de9204952d9fe913d4a","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:c663df6dd3d463aad878ae9c3beebf42fe057d7395f91b6d3823d0e0fab77f50"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:6228ebfc8ac9fc21f05d624cccaa731346acfb9203294dbcc767fa4d649fc7e8"}]} \ No newline at end of file +{"apiVersion":"wesley.generation-provenance-manifest/v1","contractVersions":{"generatorAbi":"wesley.extension-generator/v1","inputSchema":"wesley.extension-generation-input/v1","provenanceSchema":"wesley.generation-provenance-manifest/v1"},"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:95f1de04b947f5d1e75d3c73bf6482977e996ee63c4cd2ed8b37f0fd325fd081"}],"generationInputDigest":"sha256:0c07274803d465ec212c313f74dd46396851f43019fa0f97da9571a167c84587","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:80b0a702752d05685478558b7187acbfabe93b2f801646805f3c4b636dc7548a","version":"0.1.0"},"settingsDigest":"sha256:0f708e76898de6fdb8186352e81d0f5c445adf94bb6c7de9204952d9fe913d4a","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:8d77c84ecbd7d7e38496479b2f8346c15504a56f076170d79c0eca2a57fdb3a5"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:bc222c4a669b888a60df6f398412bae232967c11841b9a27c7ba6c18eb41e362"}]} \ No newline at end of file diff --git a/schemas/edict-provider/package/v1/generated/evidence/review.provider-generation.json b/schemas/edict-provider/package/v1/generated/evidence/review.provider-generation.json index 1fc41834..dcf42d7d 100644 --- a/schemas/edict-provider/package/v1/generated/evidence/review.provider-generation.json +++ b/schemas/edict-provider/package/v1/generated/evidence/review.provider-generation.json @@ -1 +1 @@ -{"apiVersion":"wesley.generation-review/v1","authoritative":false,"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:be164fde5fedaf2c3921dbde3013e4ee6b884d085f22802d5e5d0d7134266201"}],"generationInputDigest":"sha256:dbcc90f465d2a461d6fa107b499a16eedfe49ec8c633c247eeedad2d1cd82022","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:0d60fce10bc16a6909069415b9aa6057328f230a4b0a84b2d56566794f60cc08","version":"0.1.0"},"projectionRoles":["authority-facts.echo-dpo","authority-facts.echo-lawpack","generated-artifact-profile.echo-dpo-registration","lawpack.echo-dpo","schema.echo-provider-artifacts","target-profile.echo-dpo"],"provenanceManifestDigest":"sha256:02e516519f0f765831d41aca41c07215563da0cf8b9c0f4fa17cc1937a1df64d","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:c663df6dd3d463aad878ae9c3beebf42fe057d7395f91b6d3823d0e0fab77f50"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:6228ebfc8ac9fc21f05d624cccaa731346acfb9203294dbcc767fa4d649fc7e8"}]} \ No newline at end of file +{"apiVersion":"wesley.generation-review/v1","authoritative":false,"emittedArtifacts":[{"coordinate":"echo.dpo-authority-facts@1","digest":"sha256:e2a6a539a7156296c18ff1bc02f80dcabf62b42bb4314d0737527869e43986d6"},{"coordinate":"echo.dpo-lawpack-authority-facts@1","digest":"sha256:ce1af559551f8b8242c4b290b620c5a28323b9e43f8bc6bb161a191001b6f4b9"},{"coordinate":"echo.dpo-lawpack@1","digest":"sha256:8c570362671a0b1cd1a992d8210e4a90ffd153ad06dcdf1e0cb36033cc971e2c"},{"coordinate":"echo.dpo.registration/v1","digest":"sha256:4ef3aaad0d2131ba7129a3e2ae178d10c44f7e9b062af2c1fe211de781462f34"},{"coordinate":"echo.dpo@1","digest":"sha256:1b105d1b1f6cdf5fecdef98b7adeb238525047d43581fe9fd8c44fd213e1788e"},{"coordinate":"echo.provider-artifacts.cddl@1","digest":"sha256:95f1de04b947f5d1e75d3c73bf6482977e996ee63c4cd2ed8b37f0fd325fd081"}],"generationInputDigest":"sha256:0c07274803d465ec212c313f74dd46396851f43019fa0f97da9571a167c84587","generator":{"coordinate":"echo-wesley-gen.provider-artifact-generator@1","digest":"sha256:80b0a702752d05685478558b7187acbfabe93b2f801646805f3c4b636dc7548a","version":"0.1.0"},"projectionRoles":["authority-facts.echo-dpo","authority-facts.echo-lawpack","generated-artifact-profile.echo-dpo-registration","lawpack.echo-dpo","schema.echo-provider-artifacts","target-profile.echo-dpo"],"provenanceManifestDigest":"sha256:c16055cee6e12e36094522d1226896c0b7c17e1e8e2549a9d7a81cedcb641215","sourceArtifacts":[{"coordinate":"echo.semantic-schema@1","digest":"sha256:322d9eb5eb8273108eaa602f2eb58ba591efcf829fecb10bb705717efae18852"},{"coordinate":"edict.provider-contract-pack.cddl@1","digest":"sha256:8d77c84ecbd7d7e38496479b2f8346c15504a56f076170d79c0eca2a57fdb3a5"},{"coordinate":"edict.provider-contract-pack.manifest@1","digest":"sha256:bc222c4a669b888a60df6f398412bae232967c11841b9a27c7ba6c18eb41e362"}]} \ No newline at end of file diff --git a/schemas/edict-provider/package/v1/generated/primary/schema.echo-provider-artifacts.cddl b/schemas/edict-provider/package/v1/generated/primary/schema.echo-provider-artifacts.cddl index b9b351db..73051b85 100644 --- a/schemas/edict-provider/package/v1/generated/primary/schema.echo-provider-artifacts.cddl +++ b/schemas/edict-provider/package/v1/generated/primary/schema.echo-provider-artifacts.cddl @@ -111,7 +111,8 @@ core-import = { core-type = core-scalar-type / core-record-type / core-variant-type / core-option-type / core-list-type / core-map-type / - core-capability-ref-type / core-external-action-request-type + core-capability-ref-type / core-external-action-request-type / + core-nominal-type core-scalar-type = core-bool-type / core-int-type / core-string-type / core-bytes-type / core-unit-type @@ -131,6 +132,11 @@ core-bytes-type = { ? min: uint, max: uint, } +core-nominal-type = { + kind: "Nominal", + contract: tstr, + representation: core-type-ref, +} core-record-type = { kind: "Record", fields: { * tstr => core-type-ref }, diff --git a/schemas/edict-provider/package/v1/provider-manifest.echo.json b/schemas/edict-provider/package/v1/provider-manifest.echo.json index 85365cec..f8c7a67a 100644 --- a/schemas/edict-provider/package/v1/provider-manifest.echo.json +++ b/schemas/edict-provider/package/v1/provider-manifest.echo.json @@ -3,7 +3,7 @@ "providerAbi": "edict:target-provider@1.0.0", "provider": { "coordinate": "echo.edict-provider@1", - "digest": "sha256:a4e0d9e31ada5c8c14adfce05fdecb228e5b79545f3574a5e21e7db71ab3f307" + "digest": "sha256:d88b6d5de6587a5c584bef1e23f84cc259e81c61743b17248c9935f5e3ee3f71" }, "artifacts": [ { @@ -21,7 +21,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:0d60fce10bc16a6909069415b9aa6057328f230a4b0a84b2d56566794f60cc08" + "digest": "sha256:80b0a702752d05685478558b7187acbfabe93b2f801646805f3c4b636dc7548a" } } }, @@ -40,7 +40,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:0d60fce10bc16a6909069415b9aa6057328f230a4b0a84b2d56566794f60cc08" + "digest": "sha256:80b0a702752d05685478558b7187acbfabe93b2f801646805f3c4b636dc7548a" } } }, @@ -59,7 +59,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:0d60fce10bc16a6909069415b9aa6057328f230a4b0a84b2d56566794f60cc08" + "digest": "sha256:80b0a702752d05685478558b7187acbfabe93b2f801646805f3c4b636dc7548a" } } }, @@ -78,7 +78,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:0d60fce10bc16a6909069415b9aa6057328f230a4b0a84b2d56566794f60cc08" + "digest": "sha256:80b0a702752d05685478558b7187acbfabe93b2f801646805f3c4b636dc7548a" } } }, @@ -102,7 +102,7 @@ "artifactKind": "generationProvenance", "resource": { "coordinate": "echo.edict-provider-generation-provenance@1", - "digest": "sha256:42ca6d8fe5c04279f5350f2d03cdee55feec5ea5f791b98e64bd3e36fe33468f" + "digest": "sha256:2d1b1a63e1aadea9bbb4d2305e982aef432ad63f648048461ea4e1ee0944cb84" }, "source": { "kind": "generated", @@ -112,7 +112,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:0d60fce10bc16a6909069415b9aa6057328f230a4b0a84b2d56566794f60cc08" + "digest": "sha256:80b0a702752d05685478558b7187acbfabe93b2f801646805f3c4b636dc7548a" } } }, @@ -121,7 +121,7 @@ "artifactKind": "reviewArtifact", "resource": { "coordinate": "echo.edict-provider-generation-review@1", - "digest": "sha256:eada76ddbf0d7145502814d633482a624d0a3b1c360eef66903f476e3f1a66c2" + "digest": "sha256:f5fb7a793acd0cc84776de672f0805174a86c55f04ad7da67acccf4f090049cc" }, "source": { "kind": "generated", @@ -131,7 +131,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:0d60fce10bc16a6909069415b9aa6057328f230a4b0a84b2d56566794f60cc08" + "digest": "sha256:80b0a702752d05685478558b7187acbfabe93b2f801646805f3c4b636dc7548a" } } }, @@ -140,7 +140,7 @@ "artifactKind": "artifactSchema", "resource": { "coordinate": "echo.provider-artifacts.cddl@1", - "digest": "sha256:be164fde5fedaf2c3921dbde3013e4ee6b884d085f22802d5e5d0d7134266201" + "digest": "sha256:95f1de04b947f5d1e75d3c73bf6482977e996ee63c4cd2ed8b37f0fd325fd081" }, "source": { "kind": "generated", @@ -150,7 +150,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:0d60fce10bc16a6909069415b9aa6057328f230a4b0a84b2d56566794f60cc08" + "digest": "sha256:80b0a702752d05685478558b7187acbfabe93b2f801646805f3c4b636dc7548a" } } }, @@ -169,7 +169,7 @@ }, "generator": { "coordinate": "echo-wesley-gen.provider-artifact-generator@1", - "digest": "sha256:0d60fce10bc16a6909069415b9aa6057328f230a4b0a84b2d56566794f60cc08" + "digest": "sha256:80b0a702752d05685478558b7187acbfabe93b2f801646805f3c4b636dc7548a" } } }, From 976f47671101af022bb9864ae14a3ecdb297682a Mon Sep 17 00:00:00 2001 From: James Ross Date: Sun, 23 Aug 2026 19:39:54 -0700 Subject: [PATCH 7/8] Promote nominal Core lowerer component --- .../lowerer.echo-dpo.component.wasm | Bin 277694 -> 277694 bytes .../package/v1/provider-manifest.echo.json | 6 +++--- .../v1/lowerer.echo-dpo.component.wasm | Bin 277694 -> 277694 bytes .../lowerer.echo-dpo.component.wasm | Bin 277694 -> 277694 bytes .../package/v1/provider-manifest.echo.json | 6 +++--- xtask/src/provider_lowerer_component.rs | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/components/lowerer.echo-dpo.component.wasm b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/components/lowerer.echo-dpo.component.wasm index fc3489b3a1e72d3d129562fdb1682b4a2d588084..5798125e6561425d95c074146ce797b98c7ad70c 100644 GIT binary patch delta 155 zcmdn@Q()gufrb{w7N#xC^2_ZlP16ihQVmR!EKSVQOj8U~%}rB`lg*8j(#%XOj4aK~ wQ!OpcQd7;0lTDISj8ao9l8nvM4AN4JjZD*03@oHP?f?J) delta 155 zcmdn@Q()gufrb{w7N#xC^2_a$QVq>a(o#}Q(^69s(~OdhEsYFQl2THQ4GfJ_O;S_M wk}NDtQVc9i(~OKP42)7tQ%zG0Qp^pFO^nRUj10ENEobKDq}Y@d8<@p<0N|D`ga7~l diff --git a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/provider-manifest.echo.json b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/provider-manifest.echo.json index f8c7a67a..54ecba62 100644 --- a/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/provider-manifest.echo.json +++ b/crates/echo-wesley-gen/assets/v1/edict-provider/package/v1/provider-manifest.echo.json @@ -3,7 +3,7 @@ "providerAbi": "edict:target-provider@1.0.0", "provider": { "coordinate": "echo.edict-provider@1", - "digest": "sha256:d88b6d5de6587a5c584bef1e23f84cc259e81c61743b17248c9935f5e3ee3f71" + "digest": "sha256:b065242a81179df02cd450763c8266e866bbca959308f5198b791a919050e0c2" }, "artifacts": [ { @@ -87,13 +87,13 @@ "artifactKind": "lowerer", "resource": { "coordinate": "echo.dpo.lowerer/component@1", - "digest": "sha256:a4758f060122fba8c073841ccaa22bf0b8a742b495b76eb33c914eff3250dcf5" + "digest": "sha256:e842063bd8d8ec12fff5b392a9d6bc646e2e3025c7a0c93726f53eed3cb5a0bf" }, "source": { "kind": "component", "component": { "coordinate": "echo.dpo.lowerer/component@1", - "digest": "sha256:a4758f060122fba8c073841ccaa22bf0b8a742b495b76eb33c914eff3250dcf5" + "digest": "sha256:e842063bd8d8ec12fff5b392a9d6bc646e2e3025c7a0c93726f53eed3cb5a0bf" } } }, diff --git a/schemas/edict-provider/components/v1/lowerer.echo-dpo.component.wasm b/schemas/edict-provider/components/v1/lowerer.echo-dpo.component.wasm index fc3489b3a1e72d3d129562fdb1682b4a2d588084..5798125e6561425d95c074146ce797b98c7ad70c 100644 GIT binary patch delta 155 zcmdn@Q()gufrb{w7N#xC^2_ZlP16ihQVmR!EKSVQOj8U~%}rB`lg*8j(#%XOj4aK~ wQ!OpcQd7;0lTDISj8ao9l8nvM4AN4JjZD*03@oHP?f?J) delta 155 zcmdn@Q()gufrb{w7N#xC^2_a$QVq>a(o#}Q(^69s(~OdhEsYFQl2THQ4GfJ_O;S_M wk}NDtQVc9i(~OKP42)7tQ%zG0Qp^pFO^nRUj10ENEobKDq}Y@d8<@p<0N|D`ga7~l diff --git a/schemas/edict-provider/package/v1/components/lowerer.echo-dpo.component.wasm b/schemas/edict-provider/package/v1/components/lowerer.echo-dpo.component.wasm index fc3489b3a1e72d3d129562fdb1682b4a2d588084..5798125e6561425d95c074146ce797b98c7ad70c 100644 GIT binary patch delta 155 zcmdn@Q()gufrb{w7N#xC^2_ZlP16ihQVmR!EKSVQOj8U~%}rB`lg*8j(#%XOj4aK~ wQ!OpcQd7;0lTDISj8ao9l8nvM4AN4JjZD*03@oHP?f?J) delta 155 zcmdn@Q()gufrb{w7N#xC^2_a$QVq>a(o#}Q(^69s(~OdhEsYFQl2THQ4GfJ_O;S_M wk}NDtQVc9i(~OKP42)7tQ%zG0Qp^pFO^nRUj10ENEobKDq}Y@d8<@p<0N|D`ga7~l diff --git a/schemas/edict-provider/package/v1/provider-manifest.echo.json b/schemas/edict-provider/package/v1/provider-manifest.echo.json index f8c7a67a..54ecba62 100644 --- a/schemas/edict-provider/package/v1/provider-manifest.echo.json +++ b/schemas/edict-provider/package/v1/provider-manifest.echo.json @@ -3,7 +3,7 @@ "providerAbi": "edict:target-provider@1.0.0", "provider": { "coordinate": "echo.edict-provider@1", - "digest": "sha256:d88b6d5de6587a5c584bef1e23f84cc259e81c61743b17248c9935f5e3ee3f71" + "digest": "sha256:b065242a81179df02cd450763c8266e866bbca959308f5198b791a919050e0c2" }, "artifacts": [ { @@ -87,13 +87,13 @@ "artifactKind": "lowerer", "resource": { "coordinate": "echo.dpo.lowerer/component@1", - "digest": "sha256:a4758f060122fba8c073841ccaa22bf0b8a742b495b76eb33c914eff3250dcf5" + "digest": "sha256:e842063bd8d8ec12fff5b392a9d6bc646e2e3025c7a0c93726f53eed3cb5a0bf" }, "source": { "kind": "component", "component": { "coordinate": "echo.dpo.lowerer/component@1", - "digest": "sha256:a4758f060122fba8c073841ccaa22bf0b8a742b495b76eb33c914eff3250dcf5" + "digest": "sha256:e842063bd8d8ec12fff5b392a9d6bc646e2e3025c7a0c93726f53eed3cb5a0bf" } } }, diff --git a/xtask/src/provider_lowerer_component.rs b/xtask/src/provider_lowerer_component.rs index 4935a3b0..fe0b0ab5 100644 --- a/xtask/src/provider_lowerer_component.rs +++ b/xtask/src/provider_lowerer_component.rs @@ -53,7 +53,7 @@ const PINNED_CARGO_COMMIT: &str = "840b83a10fb0e039a83f4d70ad032892c287570a"; /// Reviewed identity that the portable promotion command is permitted to install. pub(crate) const APPROVED_CHECKED_COMPONENT_SHA256: &str = - "a4758f060122fba8c073841ccaa22bf0b8a742b495b76eb33c914eff3250dcf5"; + "e842063bd8d8ec12fff5b392a9d6bc646e2e3025c7a0c93726f53eed3cb5a0bf"; pub(crate) const CHECKED_COMPONENT_REPOSITORY_PATH: &str = "schemas/edict-provider/components/v1/lowerer.echo-dpo.component.wasm"; From 49e9efb68001dfd78563d18bac9359a87671e431 Mon Sep 17 00:00:00 2001 From: James Ross Date: Sun, 23 Aug 2026 19:49:20 -0700 Subject: [PATCH 8/8] Refresh provider package identity witnesses --- crates/echo-wesley-gen/tests/provider_package.rs | 2 +- crates/echo-wesley-gen/tests/provider_package_corpus.rs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/crates/echo-wesley-gen/tests/provider_package.rs b/crates/echo-wesley-gen/tests/provider_package.rs index fc913418..532703ce 100644 --- a/crates/echo-wesley-gen/tests/provider_package.rs +++ b/crates/echo-wesley-gen/tests/provider_package.rs @@ -65,7 +65,7 @@ const SEMANTIC_DIGEST: &str = const RELEASE_DIGEST: &str = "sha256:c39449495281b51f978468d08c21e93bcfa423176063b41675da61e4674b0066"; const PACKAGE_ARTIFACT_SHA256: &str = - "a4e0d9e31ada5c8c14adfce05fdecb228e5b79545f3574a5e21e7db71ab3f307"; + "b065242a81179df02cd450763c8266e866bbca959308f5198b791a919050e0c2"; const OTHER_PACKAGE_ARTIFACT_SHA256: &str = "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"; diff --git a/crates/echo-wesley-gen/tests/provider_package_corpus.rs b/crates/echo-wesley-gen/tests/provider_package_corpus.rs index 2a76e175..27b6c435 100644 --- a/crates/echo-wesley-gen/tests/provider_package_corpus.rs +++ b/crates/echo-wesley-gen/tests/provider_package_corpus.rs @@ -11,9 +11,9 @@ use std::sync::atomic::{AtomicU64, Ordering}; use sha2::{Digest as _, Sha256}; const EXPECTED_PROVIDER_DIGEST: &str = - "sha256:a4e0d9e31ada5c8c14adfce05fdecb228e5b79545f3574a5e21e7db71ab3f307"; + "sha256:b065242a81179df02cd450763c8266e866bbca959308f5198b791a919050e0c2"; const EXPECTED_MANIFEST_RAW_SHA256: &str = - "205bdba71fd552316be59079d7509c592b1ac98af7197a119fe56ce12ea0a5f6"; + "c5b9fb2fe3a0dc4dad282621a97413225c555be0071f3502b3272952069d42dc"; const PACKAGE_PATHS: [&str; 25] = [ "components/lowerer.echo-dpo.component.wasm",