diff --git a/.eslintignore b/.eslintignore index cc2e7915..cd8b66fe 100644 --- a/.eslintignore +++ b/.eslintignore @@ -5,4 +5,7 @@ __tests__ scripts jest.config.* jest.*.config.* -integration \ No newline at end of file +integration +node_modules +.next +packages/untp-playground/infra \ No newline at end of file diff --git a/.eslintrc.json b/.eslintrc.json index b9b64c3b..037e7da9 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,8 +1,13 @@ { "root": true, // TODO: Enable linting for documentation folder - "ignorePatterns": ["documentation"], - "plugins": ["@typescript-eslint", "prettier"], + "ignorePatterns": [ + "documentation" + ], + "plugins": [ + "@typescript-eslint", + "prettier" + ], "parser": "@typescript-eslint/parser", "extends": [ "eslint:recommended", @@ -11,9 +16,8 @@ ], "parserOptions": { "project": [ - "./packages/tsconfig.settings.json", - "./packages/*/tsconfig.json" - ] + "./packages/*/tsconfig.json" + ] }, "rules": { "no-console": "warn", @@ -27,14 +31,22 @@ "@typescript-eslint/no-explicit-any": "off", "@typescript-eslint/no-unsafe-return": "off", "@typescript-eslint/no-unsafe-argument": "off", - "@typescript-eslint/no-non-null-assertion": "off" + "@typescript-eslint/no-non-null-assertion": "off", + "@typescript-eslint/no-floating-promises": "off", + "@typescript-eslint/restrict-template-expressions": "off", + "@typescript-eslint/no-misused-promises": "off", + "@typescript-eslint/require-await": "off", + "@typescript-eslint/no-unused-vars": "off", + "prefer-const": "off" }, "overrides": [ { - "files": ["*.js"], + "files": [ + "*.js" + ], "rules": { "@typescript-eslint/no-var-requires": "off" } } ] -} +} \ No newline at end of file diff --git a/.github/workflows/ci_cd-untp-playground.yml b/.github/workflows/ci_cd-untp-playground.yml new file mode 100644 index 00000000..165aefe2 --- /dev/null +++ b/.github/workflows/ci_cd-untp-playground.yml @@ -0,0 +1,111 @@ +name: 'CI/CD UNTP Playgroud' + +on: + workflow_dispatch: + push: + branches: + - next + - 'cd/**' + paths: + - 'packages/untp-playground/**' + - '.github/workflows/ci_cd-untp-playground.yml' + +jobs: + #todo: add running tests job + deploy_test: + if: github.repository_owner == 'uncefact' && ( github.ref == 'refs/heads/next' || startsWith(github.ref, 'refs/heads/cd/') ) + concurrency: + group: untp-plaground-${{github.ref}} + + permissions: + id-token: write + contents: read + + name: Deploy to Test + environment: + name: test + url: https://test.uncefact.org/test-untp-playground + + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: aws_login_uncefact + uses: aws-actions/configure-aws-credentials@v4 + with: + role-to-assume: ${{env.AWS_ROLE_TO_ASSUME}} + aws-region: us-east-1 + env: + AWS_ROLE_TO_ASSUME: ${{ secrets.UNCEFACT_AWS_ROLE_TO_ASSUME}} + + + - name: Setup Node LTS ✨ + uses: actions/setup-node@v3 + with: + node-version: lts/* + cache: yarn + + - name: Installing dependencies 📦️ + run: yarn install + working-directory: ./packages/untp-playground/infra + + - name: Deploy Stack + uses: pulumi/actions@v5 + with: + command: up + stack-name: ${{ env.STACK_NAME}} + work-dir: ./packages/untp-playground/infra + env: + NEXT_PUBLIC_BASE_PATH: /test-untp-playground + NEXT_PUBLIC_ASSET_PREFIX: /test-untp-playground + NEXT_PUBLIC_IMAGE_PATH: /test-untp-playground/_next/image + STACK_NAME: test + + deploy_prod: + if: github.repository_owner == 'uncefact' && github.ref_type == 'tag' && github.event_name == 'workflow_dispatch' + concurrency: + group: untp-plaground-${{github.ref}} + + permissions: + id-token: write + contents: read + + name: Deploy to Prod + environment: + name: production + url: https://test.uncefact.org/untp-playground + + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: aws_login_uncefact + uses: aws-actions/configure-aws-credentials@v4 + with: + role-to-assume: ${{env.AWS_ROLE_TO_ASSUME}} + aws-region: us-east-1 + env: + AWS_ROLE_TO_ASSUME: ${{ secrets.UNCEFACT_AWS_ROLE_TO_ASSUME}} + + + - name: Setup Node LTS ✨ + uses: actions/setup-node@v3 + with: + node-version: lts/* + cache: yarn + + - name: Installing dependencies 📦️ + run: yarn install + working-directory: ./packages/untp-playground/infra + + - name: Deploy Stack + uses: pulumi/actions@v5 + with: + command: up + stack-name: ${{ env.STACK_NAME}} + work-dir: ./packages/untp-playground/infra + env: + NEXT_PUBLIC_BASE_PATH: /untp-playground + NEXT_PUBLIC_ASSET_PREFIX: /untp-playground + NEXT_PUBLIC_IMAGE_PATH: /untp-playground/_next/image + STACK_NAME: prod diff --git a/.husky/pre-commit b/.husky/pre-commit index a18a1d98..6cdaab7b 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,4 +1,4 @@ #!/usr/bin/env sh . "$(dirname -- "$0")/_/husky.sh" -yarn lint \ No newline at end of file +yarn lint diff --git a/app-config.json b/app-config.json index 99c680cd..1273cdae 100644 --- a/app-config.json +++ b/app-config.json @@ -687,7 +687,7 @@ } }, "dpp": { - "context": ["https://vocabulary.uncefact.org/untp/dpp/0.5.0/"], + "context": ["https://test.uncefact.org/vocabulary/untp/dpp/0.5.0/"], "renderTemplate": [ { "template": " Digital Product Passport

PRODUCT PASSPORT

{{credentialSubject.name}}

{{credentialSubject.description}}
{{#each credentialSubject.furtherInformation}} {{linkName}} {{/each}}
{{#if credentialSubject.characteristic}}
Characteristics
{{#each credentialSubject.characteristic}}
{{@key}}

{{this}}

{{/each}}
{{/if}}

Circularity Scorecard

The circularity Scorecard provides a simple high level summary of circularity performance of the product.

{{credentialSubject.circularityScorecard.recyclableContent}}%

Recyclable content

{{credentialSubject.circularityScorecard.recycledContent}}%

Recycled content

{{credentialSubject.circularityScorecard.utilityFactor}}

Utility factor

{{credentialSubject.circularityScorecard.materialCircularityIndicator}}

Material circularity*

*The Material Circularity Indicator provides an overall circularity score which is a function of all three of the earlier measures.

Emissions Scorecard

The Emissions Scorecard gives a clear snapshot of the product's greenhouse gas (GHG) emissions performance, providing a single indicator to assess its overall environmental impact.

{{credentialSubject.emissionsScorecard.carbonFootprint}}{{credentialSubject.emissionsScorecard.declaredUnit}}

Co2Eq

Scope includes

{{credentialSubject.emissionsScorecard.operationalScope}}

Primary sourced ratio*

{{credentialSubject.emissionsScorecard.primarySourcedRatio}}% primary sources

Issue date

{{credentialSubject.emissionsScorecard.reportingStandard.issueDate}}

*

The Primary Sourced Ratio shows the percentage of scope 3 emissions data that is directly collected from actual sources, rather than being based on estimates.

Declarations
{{#each credentialSubject.conformityClaim}}
Conformance:
{{#if conformance}}Yes{{else}}No{{/if}}
Assessed: {{assessmentDate}}
{{conformityEvidence.linkName}}

{{referenceRegulation.name}} administered in {{referenceRegulation.jurisdictionCountry}} by {{referenceRegulation.administeredBy.name}}

{{referenceStandard.name}} issued by {{referenceStandard.issuingParty.name}}

{{#each declaredValue}}

{{metricName}} is {{metricValue.value}}{{metricValue.unit}}

Score: {{score}} | Accuracy {{accuracy}}

{{/each}}
Evidence
{{/each}}
Production
Product category

{{#each credentialSubject.productCategory}}{{name}}{{#unless @last}},{{/unless}} {{/each}}

Date produced

{{credentialSubject.productionDate}}

Country

{{credentialSubject.countryOfProduction}}

Dimensions

Weight: {{credentialSubject.dimensions.weight.value}}{{credentialSubject.dimensions.weight.unit}} Length: {{credentialSubject.dimensions.length.value}}{{credentialSubject.dimensions.length.unit}} Width: {{credentialSubject.dimensions.width.value}}{{credentialSubject.dimensions.width.unit}} Height: {{credentialSubject.dimensions.height.value}}{{credentialSubject.dimensions.height.unit}} Volume: {{credentialSubject.dimensions.volume.value}}{{credentialSubject.dimensions.volume.unit}}

Product composition

A complete list of materials that make up the composition of this product.

{{#each credentialSubject.materialsProvenance}}

{{massFraction}}%

{{massAmount.value}}{{massAmount.unit}} {{name}}

Recycled {{recycledAmount}}%

Hazard {{#if hazardous}}Yes{{else}}No{{/if}}

{{materialSafetyInformation.linkName}}
{{originCountry}}
{{/each}}

History

{{!-- start: Supply chain due diligence report --}}
Supply chain due diligence report
{{!-- end: Supply chain due diligence report --}}

{{credentialSubject.traceabilityInformation.valueChainProcess}}

Verified ratio {{credentialSubject.traceabilityInformation.verifiedRatio}}

{{#each credentialSubject.traceabilityInformation.traceabilityEvent}}
{{linkName}} View
{{/each}}

Passport issued by

Organisation

{{issuer.name}}

Registered ID {{issuer.id}}
Valid from

{{validFrom}}

Valid to

{{validUntil}}

This Digital Product Passport (DPP) is a digital record of the product's sustainability and environmental performance, ensuring transparency and accountability in line with UNTP standards. The DPP can be verified at any time using the QR code or visiting www.untp-certification.org with the passport ID.

PRODUCT PASSPORT
{{credentialSubject.name}}
Batch: {{credentialSubject.batchNumber}}
Serial: {{credentialSubject.serialNumber}}

{{credentialSubject.description}}

{{#each credentialSubject.furtherInformation}}
{{linkName}}
{{/each}}
{{#if credentialSubject.characteristic}}
Characteristics
{{#each credentialSubject.characteristic}}
{{@key}}
{{this}}
{{/each}}
{{/if}}
Circularity Scorecard

The circularity Scorecard provides a simple high level summary of circularity performance of the product.

{{credentialSubject.circularityScorecard.recyclableContent}}%
Recyclable content
{{credentialSubject.circularityScorecard.recycledContent}}%
Recycled content
{{credentialSubject.circularityScorecard.utilityFactor}}
Utility factor
{{credentialSubject.circularityScorecard.materialCircularityIndicator}}
Material circularity*

*The Material Circularity Indicator provides an overall circularity score which is a function of all three of the earlier measures.

Emissions Scorecard

The Emissions Scorecard gives a clear snapshot of the product's greenhouse gas (GHG) emissions performance, providing a single indicator to assess its overall environmental impact.

{{credentialSubject.emissionsScorecard.carbonFootprint}}{{credentialSubject.emissionsScorecard.declaredUnit}}

Co2Eq

Scope includes
{{credentialSubject.emissionsScorecard.operationalScope}}
Primary sourced ratio*
{{credentialSubject.emissionsScorecard.primarySourcedRatio}}% primary sources

The Primary Sourced Ratio shows the percentage of scope 3 emissions data that is directly collected from actual sources, rather than being based on estimates.

Issue date
{{credentialSubject.emissionsScorecard.reportingStandard.issueDate}}
*
Declarations
{{#each credentialSubject.conformityClaim}}
Conformance:
{{#if conformance}}Yes{{else}}No{{/if}}
Assessed: {{assessmentDate}}
{{conformityEvidence.linkName}}

{{referenceRegulation.name}} administered in {{referenceRegulation.jurisdictionCountry}} by {{referenceRegulation.administeredBy.name}}

{{referenceStandard.name}} issued by {{referenceStandard.issuingParty.name}}

{{#each declaredValue}}

{{metricName}} is {{metricValue.value}}{{metricValue.unit}}

Score: {{score}} | Accuracy {{accuracy}}

{{/each}}
Evidence
{{/each}}
Production
Product category
{{#each credentialSubject.productCategory}}{{name}}{{#unless @last}},{{/unless}} {{/each}}
Date produced
{{credentialSubject.productionDate}}
Country
{{credentialSubject.countryOfProduction}}
Dimensions
Weight: {{credentialSubject.dimensions.weight.value}}{{credentialSubject.dimensions.weight.unit}} Length: {{credentialSubject.dimensions.length.value}}{{credentialSubject.dimensions.length.unit}} Width: {{credentialSubject.dimensions.width.value}}{{credentialSubject.dimensions.width.unit}} Height: {{credentialSubject.dimensions.height.value}}{{credentialSubject.dimensions.height.unit}} Volume: {{credentialSubject.dimensions.volume.value}}{{credentialSubject.dimensions.volume.unit}}
Composition

The Product Composition List details the materials and components used in the product, providing transparency on the origin and nature of each element.

{{#each credentialSubject.materialsProvenance}}
{{massFraction}}%
{{massAmount.value}}{{massAmount.unit}} {{name}}
Recycled {{#if recycledAmount}}{{recycledAmount}}{{else}}0{{/if}}%
Hazard {{#if hazardous}}Yes{{else}}No{{/if}}
{{originCountry}}
{{/each}}
History
{{!-- start: Supply chain due diligence report --}}
Supply chain due diligence report
{{!-- end: Supply chain due diligence report --}}

{{credentialSubject.traceabilityInformation.valueChainProcess}}

Verified ratio {{credentialSubject.traceabilityInformation.verifiedRatio}}

{{#each credentialSubject.traceabilityInformation.traceabilityEvent}}
{{linkName}} View
{{/each}}
Passport issued by
Organisation
{{issuer.name}}
Registered ID
Valid from
{{validFrom}}
Valid to
{{validUntil}}

This Digital Product Passport (DPP) is a digital record of the product’s sustainability and environmental performance, ensuring transparency and accountability in line with UNTP standards. The DPP can be verified at any time using the QR code or visiting www.untp-certification.org with the passport ID.

", @@ -1401,7 +1401,7 @@ } }, "dpp": { - "context": ["https://vocabulary.uncefact.org/untp/dpp/0.5.0/"], + "context": ["https://test.uncefact.org/vocabulary/untp/dpp/0.5.0/"], "renderTemplate": [ { "template": " Digital Product Passport

PRODUCT PASSPORT

{{credentialSubject.name}}

{{credentialSubject.description}}
{{#each credentialSubject.furtherInformation}} {{linkName}} {{/each}}
{{#if credentialSubject.characteristic}}
Characteristics
{{#each credentialSubject.characteristic}}
{{@key}}

{{this}}

{{/each}}
{{/if}}

Circularity Scorecard

The circularity Scorecard provides a simple high level summary of circularity performance of the product.

{{credentialSubject.circularityScorecard.recyclableContent}}%

Recyclable content

{{credentialSubject.circularityScorecard.recycledContent}}%

Recycled content

{{credentialSubject.circularityScorecard.utilityFactor}}

Utility factor

{{credentialSubject.circularityScorecard.materialCircularityIndicator}}

Material circularity*

*The Material Circularity Indicator provides an overall circularity score which is a function of all three of the earlier measures.

Emissions Scorecard

The Emissions Scorecard gives a clear snapshot of the product's greenhouse gas (GHG) emissions performance, providing a single indicator to assess its overall environmental impact.

{{credentialSubject.emissionsScorecard.carbonFootprint}}{{credentialSubject.emissionsScorecard.declaredUnit}}

Co2Eq

Scope includes

{{credentialSubject.emissionsScorecard.operationalScope}}

Primary sourced ratio*

{{credentialSubject.emissionsScorecard.primarySourcedRatio}}% primary sources

Issue date

{{credentialSubject.emissionsScorecard.reportingStandard.issueDate}}

*

The Primary Sourced Ratio shows the percentage of scope 3 emissions data that is directly collected from actual sources, rather than being based on estimates.

Declarations
{{#each credentialSubject.conformityClaim}}
Conformance:
{{#if conformance}}Yes{{else}}No{{/if}}
Assessed: {{assessmentDate}}
{{conformityEvidence.linkName}}

{{referenceRegulation.name}} administered in {{referenceRegulation.jurisdictionCountry}} by {{referenceRegulation.administeredBy.name}}

{{referenceStandard.name}} issued by {{referenceStandard.issuingParty.name}}

{{#each declaredValue}}

{{metricName}} is {{metricValue.value}}{{metricValue.unit}}

Score: {{score}} | Accuracy {{accuracy}}

{{/each}}
Evidence
{{/each}}
Production
Product category

{{#each credentialSubject.productCategory}}{{name}}{{#unless @last}},{{/unless}} {{/each}}

Date produced

{{credentialSubject.productionDate}}

Country

{{credentialSubject.countryOfProduction}}

Dimensions

Weight: {{credentialSubject.dimensions.weight.value}}{{credentialSubject.dimensions.weight.unit}} Length: {{credentialSubject.dimensions.length.value}}{{credentialSubject.dimensions.length.unit}} Width: {{credentialSubject.dimensions.width.value}}{{credentialSubject.dimensions.width.unit}} Height: {{credentialSubject.dimensions.height.value}}{{credentialSubject.dimensions.height.unit}} Volume: {{credentialSubject.dimensions.volume.value}}{{credentialSubject.dimensions.volume.unit}}

Product composition

A complete list of materials that make up the composition of this product.

{{#each credentialSubject.materialsProvenance}}

{{massFraction}}%

{{massAmount.value}}{{massAmount.unit}} {{name}}

Recycled {{recycledAmount}}%

Hazard {{#if hazardous}}Yes{{else}}No{{/if}}

{{materialSafetyInformation.linkName}}
{{originCountry}}
{{/each}}

History

{{!-- start: Supply chain due diligence report --}}
Supply chain due diligence report
{{!-- end: Supply chain due diligence report --}}

{{credentialSubject.traceabilityInformation.valueChainProcess}}

Verified ratio {{credentialSubject.traceabilityInformation.verifiedRatio}}

{{#each credentialSubject.traceabilityInformation.traceabilityEvent}}
{{linkName}} View
{{/each}}

Passport issued by

Organisation

{{issuer.name}}

Registered ID {{issuer.id}}
Valid from

{{validFrom}}

Valid to

{{validUntil}}

This Digital Product Passport (DPP) is a digital record of the product's sustainability and environmental performance, ensuring transparency and accountability in line with UNTP standards. The DPP can be verified at any time using the QR code or visiting www.untp-certification.org with the passport ID.

PRODUCT PASSPORT
{{credentialSubject.name}}
Batch: {{credentialSubject.batchNumber}}
Serial: {{credentialSubject.serialNumber}}

{{credentialSubject.description}}

{{#each credentialSubject.furtherInformation}}
{{linkName}}
{{/each}}
{{#if credentialSubject.characteristic}}
Characteristics
{{#each credentialSubject.characteristic}}
{{@key}}
{{this}}
{{/each}}
{{/if}}
Circularity Scorecard

The circularity Scorecard provides a simple high level summary of circularity performance of the product.

{{credentialSubject.circularityScorecard.recyclableContent}}%
Recyclable content
{{credentialSubject.circularityScorecard.recycledContent}}%
Recycled content
{{credentialSubject.circularityScorecard.utilityFactor}}
Utility factor
{{credentialSubject.circularityScorecard.materialCircularityIndicator}}
Material circularity*

*The Material Circularity Indicator provides an overall circularity score which is a function of all three of the earlier measures.

Emissions Scorecard

The Emissions Scorecard gives a clear snapshot of the product's greenhouse gas (GHG) emissions performance, providing a single indicator to assess its overall environmental impact.

{{credentialSubject.emissionsScorecard.carbonFootprint}}{{credentialSubject.emissionsScorecard.declaredUnit}}

Co2Eq

Scope includes
{{credentialSubject.emissionsScorecard.operationalScope}}
Primary sourced ratio*
{{credentialSubject.emissionsScorecard.primarySourcedRatio}}% primary sources

The Primary Sourced Ratio shows the percentage of scope 3 emissions data that is directly collected from actual sources, rather than being based on estimates.

Issue date
{{credentialSubject.emissionsScorecard.reportingStandard.issueDate}}
*
Declarations
{{#each credentialSubject.conformityClaim}}
Conformance:
{{#if conformance}}Yes{{else}}No{{/if}}
Assessed: {{assessmentDate}}
{{conformityEvidence.linkName}}

{{referenceRegulation.name}} administered in {{referenceRegulation.jurisdictionCountry}} by {{referenceRegulation.administeredBy.name}}

{{referenceStandard.name}} issued by {{referenceStandard.issuingParty.name}}

{{#each declaredValue}}

{{metricName}} is {{metricValue.value}}{{metricValue.unit}}

Score: {{score}} | Accuracy {{accuracy}}

{{/each}}
Evidence
{{/each}}
Production
Product category
{{#each credentialSubject.productCategory}}{{name}}{{#unless @last}},{{/unless}} {{/each}}
Date produced
{{credentialSubject.productionDate}}
Country
{{credentialSubject.countryOfProduction}}
Dimensions
Weight: {{credentialSubject.dimensions.weight.value}}{{credentialSubject.dimensions.weight.unit}} Length: {{credentialSubject.dimensions.length.value}}{{credentialSubject.dimensions.length.unit}} Width: {{credentialSubject.dimensions.width.value}}{{credentialSubject.dimensions.width.unit}} Height: {{credentialSubject.dimensions.height.value}}{{credentialSubject.dimensions.height.unit}} Volume: {{credentialSubject.dimensions.volume.value}}{{credentialSubject.dimensions.volume.unit}}
Composition

The Product Composition List details the materials and components used in the product, providing transparency on the origin and nature of each element.

{{#each credentialSubject.materialsProvenance}}
{{massFraction}}%
{{massAmount.value}}{{massAmount.unit}} {{name}}
Recycled {{#if recycledAmount}}{{recycledAmount}}{{else}}0{{/if}}%
Hazard {{#if hazardous}}Yes{{else}}No{{/if}}
{{originCountry}}
{{/each}}
History
{{!-- start: Supply chain due diligence report --}}
Supply chain due diligence report
{{!-- end: Supply chain due diligence report --}}

{{credentialSubject.traceabilityInformation.valueChainProcess}}

Verified ratio {{credentialSubject.traceabilityInformation.verifiedRatio}}

{{#each credentialSubject.traceabilityInformation.traceabilityEvent}}
{{linkName}} View
{{/each}}
Passport issued by
Organisation
{{issuer.name}}
Registered ID
Valid from
{{validFrom}}
Valid to
{{validUntil}}

This Digital Product Passport (DPP) is a digital record of the product’s sustainability and environmental performance, ensuring transparency and accountability in line with UNTP standards. The DPP can be verified at any time using the QR code or visiting www.untp-certification.org with the passport ID.

", @@ -1627,7 +1627,7 @@ } }, "traceabilityEvent": { - "context": ["https://vocabulary.uncefact.org/untp/dte/0.5.0/"], + "context": ["https://test.uncefact.org/vocabulary/untp/dte/0.5.0/"], "renderTemplate": [ { "template": "
DIGITAL TRACEABILITY EVENT
{{#each credentialSubject}}
{{processType}}
{{bizStep}} {{eventTime}}
Transformation
Output
{{#each outputEPCList}}
{{name}}
View
{{/each}} {{#each outputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}

Transformed

Input
{{#each inputEPCList}}
{{name}}
View
{{/each}} {{#each inputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Transaction
Source
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Destination
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Object event
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Aggregation
{{parentEPC.name}}
View

Aggregated

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Association
{{parentEPC.name}}
View

Assembled

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{/each}}
Issuing details
Issued by
Valid from
{{validFrom}}
", @@ -2574,7 +2574,7 @@ } }, "traceabilityEvent": { - "context": ["https://vocabulary.uncefact.org/untp/dte/0.5.0/"], + "context": ["https://test.uncefact.org/vocabulary/untp/dte/0.5.0/"], "renderTemplate": [ { "template": "
DIGITAL TRACEABILITY EVENT
{{#each credentialSubject}}
{{processType}}
{{bizStep}} {{eventTime}}
Transformation
Output
{{#each outputEPCList}}
{{name}}
View
{{/each}} {{#each outputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}

Transformed

Input
{{#each inputEPCList}}
{{name}}
View
{{/each}} {{#each inputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Transaction
Source
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Destination
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Object event
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Aggregation
{{parentEPC.name}}
View

Aggregated

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Association
{{parentEPC.name}}
View

Assembled

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{/each}}
Issuing details
Issued by
Valid from
{{validFrom}}
", @@ -2751,7 +2751,7 @@ } }, "traceabilityEvent": { - "context": ["https://vocabulary.uncefact.org/untp/dte/0.5.0/"], + "context": ["https://test.uncefact.org/vocabulary/untp/dte/0.5.0/"], "renderTemplate": [ { "template": "
DIGITAL TRACEABILITY EVENT
{{#each credentialSubject}}
{{processType}}
{{bizStep}} {{eventTime}}
Transformation
Output
{{#each outputEPCList}}
{{name}}
View
{{/each}} {{#each outputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}

Transformed

Input
{{#each inputEPCList}}
{{name}}
View
{{/each}} {{#each inputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Transaction
Source
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Destination
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Object event
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Aggregation
{{parentEPC.name}}
View

Aggregated

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Association
{{parentEPC.name}}
View

Assembled

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{/each}}
Issuing details
Issued by
Valid from
{{validFrom}}
", @@ -2932,7 +2932,7 @@ } }, "traceabilityEvent": { - "context": ["https://vocabulary.uncefact.org/untp/dte/0.5.0/"], + "context": ["https://test.uncefact.org/vocabulary/untp/dte/0.5.0/"], "renderTemplate": [ { "template": "
DIGITAL TRACEABILITY EVENT
{{#each credentialSubject}}
{{processType}}
{{bizStep}} {{eventTime}}
Transformation
Output
{{#each outputEPCList}}
{{name}}
View
{{/each}} {{#each outputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}

Transformed

Input
{{#each inputEPCList}}
{{name}}
View
{{/each}} {{#each inputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Transaction
Source
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Destination
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Object event
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Aggregation
{{parentEPC.name}}
View

Aggregated

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Association
{{parentEPC.name}}
View

Assembled

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{/each}}
Issuing details
Issued by
Valid from
{{validFrom}}
", @@ -3113,7 +3113,7 @@ } }, "traceabilityEvent": { - "context": ["https://vocabulary.uncefact.org/untp/dte/0.5.0/"], + "context": ["https://test.uncefact.org/vocabulary/untp/dte/0.5.0/"], "renderTemplate": [ { "template": "
DIGITAL TRACEABILITY EVENT
{{#each credentialSubject}}
{{processType}}
{{bizStep}} {{eventTime}}
Transformation
Output
{{#each outputEPCList}}
{{name}}
View
{{/each}} {{#each outputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}

Transformed

Input
{{#each inputEPCList}}
{{name}}
View
{{/each}} {{#each inputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Transaction
Source
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Destination
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Object event
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Aggregation
{{parentEPC.name}}
View

Aggregated

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Association
{{parentEPC.name}}
View

Assembled

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{/each}}
Issuing details
Issued by
Valid from
{{validFrom}}
", @@ -3315,7 +3315,7 @@ } }, "traceabilityEvent": { - "context": ["https://vocabulary.uncefact.org/untp/dte/0.5.0/"], + "context": ["https://test.uncefact.org/vocabulary/untp/dte/0.5.0/"], "renderTemplate": [ { "template": "
DIGITAL TRACEABILITY EVENT
{{#each credentialSubject}}
{{processType}}
{{bizStep}} {{eventTime}}
Transformation
Output
{{#each outputEPCList}}
{{name}}
View
{{/each}} {{#each outputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}

Transformed

Input
{{#each inputEPCList}}
{{name}}
View
{{/each}} {{#each inputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Transaction
Source
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Destination
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Object event
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Aggregation
{{parentEPC.name}}
View

Aggregated

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Association
{{parentEPC.name}}
View

Assembled

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{/each}}
Issuing details
Issued by
Valid from
{{validFrom}}
", @@ -3816,7 +3816,7 @@ } }, "digitalConformityCredential": { - "context": ["https://vocabulary.uncefact.org/untp/dcc/0.5.0/"], + "context": ["https://test.uncefact.org/vocabulary/untp/dcc/0.5.0/"], "renderTemplate": [ { "template": " DigitalConformityCredential
CONFORMITY CREDENTIAL

{{credentialSubject.name}}

{{credentialSubject.description}}

Level of independent assurance:

{{credentialSubject.assessorLevel}}

Type of authority endorsement:

{{credentialSubject.assessmentLevel}}

Type of the attestation credential:

{{credentialSubject.attestationType}}
Assessments

The list of specific assessments made within this conformity attestation.

{{#each credentialSubject.assessment}}

{{conformityTopic}}

Declared values
{{#each declaredValue}}
Name
{{metricName}}
Value
{{metricValue.value}}{{metricValue.unit}}
Accuracy
{{accuracy}}
{{/each}}
Assessment Criteria
{{#each assessmentCriteria}}
{{name}}
    {{#each thresholdValues}}
  • Industry average {{metricName}} is {{metricValue.value}}{{metricValue.unit}}.

  • {{/each}}
{{/each}}
Assessed facilities
{{#each assessedFacility}}

{{name}}

{{/each}}
Assessed products
{{#each assessedProduct}}
{{name}}
{{/each}}
Other details
Assessed
{{assessmentDate}}
Organisation assessed
{{assessedOrganisation.name}}
{{/each}}
Issuer endorsement
{{#each credentialSubject.authorisation}}
trustmark
{{name}} is accredited by {{issuingAuthority.name}}.
{{/each}}
Issuing details
Issued by
Valid from
{{validFrom}}
Valid until
{{validUntil}}
", @@ -4233,7 +4233,7 @@ } }, "digitalFacilityRecord": { - "context": ["https://vocabulary.uncefact.org/untp/dfr/0.5.0/"], + "context": ["https://test.uncefact.org/vocabulary/untp/dfr/0.5.0/"], "renderTemplate": [ { "template": " Digital Facility Record
FACILITY RECORD

{{credentialSubject.name}}

{{credentialSubject.description}}

Country
{{credentialSubject.countryOfOperation}}
Address
{{!-- TODO 1: plain text --}} {{!--
{{credentialSubject.address.streetAddress}} {{credentialSubject.address.addressLocality}}, {{credentialSubject.address.postalCode}}
--}} {{!-- TODO 2: confirm --}} {{!-- {{credentialSubject.address.streetAddress}} --}} {{!-- TODO 3: confirm --}} {{credentialSubject.address.streetAddress}} {{credentialSubject.address.addressLocality}}, {{credentialSubject.address.postalCode}}
Processes
{{#each credentialSubject.processCategory}} {{name}} {{/each}}
Geolocation
{{!-- TODO: confirm --}}
Show on map
Declarations
{{#each credentialSubject.conformityClaim}}
Conformance:
{{#if conformance}}Yes{{else}}No{{/if}}
Assessed: {{assessmentDate}}
{{conformityEvidence.linkName}}

{{referenceRegulation.name}} administered in {{referenceRegulation.jurisdictionCountry}} by {{referenceRegulation.administeredBy.name}}

{{referenceStandard.name}} issued by {{referenceStandard.issuingParty.name}}

{{#each declaredValue}}

{{metricName}} is {{metricValue.value}}{{metricValue.unit}}

Score: {{score}} | Accuracy {{accuracy}}

{{/each}}
Evidence
{{/each}}
Issuing details
Issued by
Valid from
{{validFrom}}
Valid until
{{validUntil}}
", @@ -4896,7 +4896,7 @@ } }, "dpp": { - "context": ["https://vocabulary.uncefact.org/untp/dpp/0.5.0/"], + "context": ["https://test.uncefact.org/vocabulary/untp/dpp/0.5.0/"], "renderTemplate": [ { "template": " Digital Product Passport

PRODUCT PASSPORT

{{credentialSubject.name}}

{{credentialSubject.description}}
{{#each credentialSubject.furtherInformation}} {{linkName}} {{/each}}
{{#if credentialSubject.characteristic}}
Characteristics
{{#each credentialSubject.characteristic}}
{{@key}}

{{this}}

{{/each}}
{{/if}}

Circularity Scorecard

The circularity Scorecard provides a simple high level summary of circularity performance of the product.

{{credentialSubject.circularityScorecard.recyclableContent}}%

Recyclable content

{{credentialSubject.circularityScorecard.recycledContent}}%

Recycled content

{{credentialSubject.circularityScorecard.utilityFactor}}

Utility factor

{{credentialSubject.circularityScorecard.materialCircularityIndicator}}

Material circularity*

*The Material Circularity Indicator provides an overall circularity score which is a function of all three of the earlier measures.

Emissions Scorecard

The Emissions Scorecard gives a clear snapshot of the product's greenhouse gas (GHG) emissions performance, providing a single indicator to assess its overall environmental impact.

{{credentialSubject.emissionsScorecard.carbonFootprint}}{{credentialSubject.emissionsScorecard.declaredUnit}}

Co2Eq

Scope includes

{{credentialSubject.emissionsScorecard.operationalScope}}

Primary sourced ratio*

{{credentialSubject.emissionsScorecard.primarySourcedRatio}}% primary sources

Issue date

{{credentialSubject.emissionsScorecard.reportingStandard.issueDate}}

*

The Primary Sourced Ratio shows the percentage of scope 3 emissions data that is directly collected from actual sources, rather than being based on estimates.

Declarations
{{#each credentialSubject.conformityClaim}}
Conformance:
{{#if conformance}}Yes{{else}}No{{/if}}
Assessed: {{assessmentDate}}
{{conformityEvidence.linkName}}

{{referenceRegulation.name}} administered in {{referenceRegulation.jurisdictionCountry}} by {{referenceRegulation.administeredBy.name}}

{{referenceStandard.name}} issued by {{referenceStandard.issuingParty.name}}

{{#each declaredValue}}

{{metricName}} is {{metricValue.value}}{{metricValue.unit}}

Score: {{score}} | Accuracy {{accuracy}}

{{/each}}
Evidence
{{/each}}
Production
Product category

{{#each credentialSubject.productCategory}}{{name}}{{#unless @last}},{{/unless}} {{/each}}

Date produced

{{credentialSubject.productionDate}}

Country

{{credentialSubject.countryOfProduction}}

Dimensions

Weight: {{credentialSubject.dimensions.weight.value}}{{credentialSubject.dimensions.weight.unit}} Length: {{credentialSubject.dimensions.length.value}}{{credentialSubject.dimensions.length.unit}} Width: {{credentialSubject.dimensions.width.value}}{{credentialSubject.dimensions.width.unit}} Height: {{credentialSubject.dimensions.height.value}}{{credentialSubject.dimensions.height.unit}} Volume: {{credentialSubject.dimensions.volume.value}}{{credentialSubject.dimensions.volume.unit}}

Product composition

A complete list of materials that make up the composition of this product.

{{#each credentialSubject.materialsProvenance}}

{{massFraction}}%

{{massAmount.value}}{{massAmount.unit}} {{name}}

Recycled {{recycledAmount}}%

Hazard {{#if hazardous}}Yes{{else}}No{{/if}}

{{materialSafetyInformation.linkName}}
{{originCountry}}
{{/each}}

History

{{!-- start: Supply chain due diligence report --}}
Supply chain due diligence report
{{!-- end: Supply chain due diligence report --}}

{{credentialSubject.traceabilityInformation.valueChainProcess}}

Verified ratio {{credentialSubject.traceabilityInformation.verifiedRatio}}

{{#each credentialSubject.traceabilityInformation.traceabilityEvent}}
{{linkName}} View
{{/each}}

Passport issued by

Organisation

{{issuer.name}}

Registered ID {{issuer.id}}
Valid from

{{validFrom}}

Valid to

{{validUntil}}

This Digital Product Passport (DPP) is a digital record of the product's sustainability and environmental performance, ensuring transparency and accountability in line with UNTP standards. The DPP can be verified at any time using the QR code or visiting www.untp-certification.org with the passport ID.

PRODUCT PASSPORT
{{credentialSubject.name}}
Batch: {{credentialSubject.batchNumber}}
Serial: {{credentialSubject.serialNumber}}

{{credentialSubject.description}}

{{#each credentialSubject.furtherInformation}}
{{linkName}}
{{/each}}
{{#if credentialSubject.characteristic}}
Characteristics
{{#each credentialSubject.characteristic}}
{{@key}}
{{this}}
{{/each}}
{{/if}}
Circularity Scorecard

The circularity Scorecard provides a simple high level summary of circularity performance of the product.

{{credentialSubject.circularityScorecard.recyclableContent}}%
Recyclable content
{{credentialSubject.circularityScorecard.recycledContent}}%
Recycled content
{{credentialSubject.circularityScorecard.utilityFactor}}
Utility factor
{{credentialSubject.circularityScorecard.materialCircularityIndicator}}
Material circularity*

*The Material Circularity Indicator provides an overall circularity score which is a function of all three of the earlier measures.

Emissions Scorecard

The Emissions Scorecard gives a clear snapshot of the product's greenhouse gas (GHG) emissions performance, providing a single indicator to assess its overall environmental impact.

{{credentialSubject.emissionsScorecard.carbonFootprint}}{{credentialSubject.emissionsScorecard.declaredUnit}}

Co2Eq

Scope includes
{{credentialSubject.emissionsScorecard.operationalScope}}
Primary sourced ratio*
{{credentialSubject.emissionsScorecard.primarySourcedRatio}}% primary sources

The Primary Sourced Ratio shows the percentage of scope 3 emissions data that is directly collected from actual sources, rather than being based on estimates.

Issue date
{{credentialSubject.emissionsScorecard.reportingStandard.issueDate}}
*
Declarations
{{#each credentialSubject.conformityClaim}}
Conformance:
{{#if conformance}}Yes{{else}}No{{/if}}
Assessed: {{assessmentDate}}
{{conformityEvidence.linkName}}

{{referenceRegulation.name}} administered in {{referenceRegulation.jurisdictionCountry}} by {{referenceRegulation.administeredBy.name}}

{{referenceStandard.name}} issued by {{referenceStandard.issuingParty.name}}

{{#each declaredValue}}

{{metricName}} is {{metricValue.value}}{{metricValue.unit}}

Score: {{score}} | Accuracy {{accuracy}}

{{/each}}
Evidence
{{/each}}
Production
Product category
{{#each credentialSubject.productCategory}}{{name}}{{#unless @last}},{{/unless}} {{/each}}
Date produced
{{credentialSubject.productionDate}}
Country
{{credentialSubject.countryOfProduction}}
Dimensions
Weight: {{credentialSubject.dimensions.weight.value}}{{credentialSubject.dimensions.weight.unit}} Length: {{credentialSubject.dimensions.length.value}}{{credentialSubject.dimensions.length.unit}} Width: {{credentialSubject.dimensions.width.value}}{{credentialSubject.dimensions.width.unit}} Height: {{credentialSubject.dimensions.height.value}}{{credentialSubject.dimensions.height.unit}} Volume: {{credentialSubject.dimensions.volume.value}}{{credentialSubject.dimensions.volume.unit}}
Composition

The Product Composition List details the materials and components used in the product, providing transparency on the origin and nature of each element.

{{#each credentialSubject.materialsProvenance}}
{{massFraction}}%
{{massAmount.value}}{{massAmount.unit}} {{name}}
Recycled {{#if recycledAmount}}{{recycledAmount}}{{else}}0{{/if}}%
Hazard {{#if hazardous}}Yes{{else}}No{{/if}}
{{originCountry}}
{{/each}}
History
{{!-- start: Supply chain due diligence report --}}
Supply chain due diligence report
{{!-- end: Supply chain due diligence report --}}

{{credentialSubject.traceabilityInformation.valueChainProcess}}

Verified ratio {{credentialSubject.traceabilityInformation.verifiedRatio}}

{{#each credentialSubject.traceabilityInformation.traceabilityEvent}}
{{linkName}} View
{{/each}}
Passport issued by
Organisation
{{issuer.name}}
Registered ID
Valid from
{{validFrom}}
Valid to
{{validUntil}}

This Digital Product Passport (DPP) is a digital record of the product’s sustainability and environmental performance, ensuring transparency and accountability in line with UNTP standards. The DPP can be verified at any time using the QR code or visiting www.untp-certification.org with the passport ID.

", @@ -5117,7 +5117,7 @@ } }, "traceabilityEvent": { - "context": ["https://vocabulary.uncefact.org/untp/dte/0.5.0/"], + "context": ["https://test.uncefact.org/vocabulary/untp/dte/0.5.0/"], "renderTemplate": [ { "template": "
DIGITAL TRACEABILITY EVENT
{{#each credentialSubject}}
{{processType}}
{{bizStep}} {{eventTime}}
Transformation
Output
{{#each outputEPCList}}
{{name}}
View
{{/each}} {{#each outputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}

Transformed

Input
{{#each inputEPCList}}
{{name}}
View
{{/each}} {{#each inputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Transaction
Source
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Destination
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Object event
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Aggregation
{{parentEPC.name}}
View

Aggregated

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Association
{{parentEPC.name}}
View

Assembled

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{/each}}
Issuing details
Issued by
Valid from
{{validFrom}}
", @@ -5798,7 +5798,7 @@ } }, "dpp": { - "context": ["https://vocabulary.uncefact.org/untp/dpp/0.5.0/"], + "context": ["https://test.uncefact.org/vocabulary/untp/dpp/0.5.0/"], "renderTemplate": [ { "template": " Digital Product Passport

PRODUCT PASSPORT

{{credentialSubject.name}}

{{credentialSubject.description}}
{{#each credentialSubject.furtherInformation}} {{linkName}} {{/each}}
{{#if credentialSubject.characteristic}}
Characteristics
{{#each credentialSubject.characteristic}}
{{@key}}

{{this}}

{{/each}}
{{/if}}

Circularity Scorecard

The circularity Scorecard provides a simple high level summary of circularity performance of the product.

{{credentialSubject.circularityScorecard.recyclableContent}}%

Recyclable content

{{credentialSubject.circularityScorecard.recycledContent}}%

Recycled content

{{credentialSubject.circularityScorecard.utilityFactor}}

Utility factor

{{credentialSubject.circularityScorecard.materialCircularityIndicator}}

Material circularity*

*The Material Circularity Indicator provides an overall circularity score which is a function of all three of the earlier measures.

Emissions Scorecard

The Emissions Scorecard gives a clear snapshot of the product's greenhouse gas (GHG) emissions performance, providing a single indicator to assess its overall environmental impact.

{{credentialSubject.emissionsScorecard.carbonFootprint}}{{credentialSubject.emissionsScorecard.declaredUnit}}

Co2Eq

Scope includes

{{credentialSubject.emissionsScorecard.operationalScope}}

Primary sourced ratio*

{{credentialSubject.emissionsScorecard.primarySourcedRatio}}% primary sources

Issue date

{{credentialSubject.emissionsScorecard.reportingStandard.issueDate}}

*

The Primary Sourced Ratio shows the percentage of scope 3 emissions data that is directly collected from actual sources, rather than being based on estimates.

Declarations
{{#each credentialSubject.conformityClaim}}
Conformance:
{{#if conformance}}Yes{{else}}No{{/if}}
Assessed: {{assessmentDate}}
{{conformityEvidence.linkName}}

{{referenceRegulation.name}} administered in {{referenceRegulation.jurisdictionCountry}} by {{referenceRegulation.administeredBy.name}}

{{referenceStandard.name}} issued by {{referenceStandard.issuingParty.name}}

{{#each declaredValue}}

{{metricName}} is {{metricValue.value}}{{metricValue.unit}}

Score: {{score}} | Accuracy {{accuracy}}

{{/each}}
Evidence
{{/each}}
Production
Product category

{{#each credentialSubject.productCategory}}{{name}}{{#unless @last}},{{/unless}} {{/each}}

Date produced

{{credentialSubject.productionDate}}

Country

{{credentialSubject.countryOfProduction}}

Dimensions

Weight: {{credentialSubject.dimensions.weight.value}}{{credentialSubject.dimensions.weight.unit}} Length: {{credentialSubject.dimensions.length.value}}{{credentialSubject.dimensions.length.unit}} Width: {{credentialSubject.dimensions.width.value}}{{credentialSubject.dimensions.width.unit}} Height: {{credentialSubject.dimensions.height.value}}{{credentialSubject.dimensions.height.unit}} Volume: {{credentialSubject.dimensions.volume.value}}{{credentialSubject.dimensions.volume.unit}}

Product composition

A complete list of materials that make up the composition of this product.

{{#each credentialSubject.materialsProvenance}}

{{massFraction}}%

{{massAmount.value}}{{massAmount.unit}} {{name}}

Recycled {{recycledAmount}}%

Hazard {{#if hazardous}}Yes{{else}}No{{/if}}

{{materialSafetyInformation.linkName}}
{{originCountry}}
{{/each}}

History

{{!-- start: Supply chain due diligence report --}}
Supply chain due diligence report
{{!-- end: Supply chain due diligence report --}}

{{credentialSubject.traceabilityInformation.valueChainProcess}}

Verified ratio {{credentialSubject.traceabilityInformation.verifiedRatio}}

{{#each credentialSubject.traceabilityInformation.traceabilityEvent}}
{{linkName}} View
{{/each}}

Passport issued by

Organisation

{{issuer.name}}

Registered ID {{issuer.id}}
Valid from

{{validFrom}}

Valid to

{{validUntil}}

This Digital Product Passport (DPP) is a digital record of the product's sustainability and environmental performance, ensuring transparency and accountability in line with UNTP standards. The DPP can be verified at any time using the QR code or visiting www.untp-certification.org with the passport ID.

PRODUCT PASSPORT
{{credentialSubject.name}}
Batch: {{credentialSubject.batchNumber}}
Serial: {{credentialSubject.serialNumber}}

{{credentialSubject.description}}

{{#each credentialSubject.furtherInformation}}
{{linkName}}
{{/each}}
{{#if credentialSubject.characteristic}}
Characteristics
{{#each credentialSubject.characteristic}}
{{@key}}
{{this}}
{{/each}}
{{/if}}
Circularity Scorecard

The circularity Scorecard provides a simple high level summary of circularity performance of the product.

{{credentialSubject.circularityScorecard.recyclableContent}}%
Recyclable content
{{credentialSubject.circularityScorecard.recycledContent}}%
Recycled content
{{credentialSubject.circularityScorecard.utilityFactor}}
Utility factor
{{credentialSubject.circularityScorecard.materialCircularityIndicator}}
Material circularity*

*The Material Circularity Indicator provides an overall circularity score which is a function of all three of the earlier measures.

Emissions Scorecard

The Emissions Scorecard gives a clear snapshot of the product's greenhouse gas (GHG) emissions performance, providing a single indicator to assess its overall environmental impact.

{{credentialSubject.emissionsScorecard.carbonFootprint}}{{credentialSubject.emissionsScorecard.declaredUnit}}

Co2Eq

Scope includes
{{credentialSubject.emissionsScorecard.operationalScope}}
Primary sourced ratio*
{{credentialSubject.emissionsScorecard.primarySourcedRatio}}% primary sources

The Primary Sourced Ratio shows the percentage of scope 3 emissions data that is directly collected from actual sources, rather than being based on estimates.

Issue date
{{credentialSubject.emissionsScorecard.reportingStandard.issueDate}}
*
Declarations
{{#each credentialSubject.conformityClaim}}
Conformance:
{{#if conformance}}Yes{{else}}No{{/if}}
Assessed: {{assessmentDate}}
{{conformityEvidence.linkName}}

{{referenceRegulation.name}} administered in {{referenceRegulation.jurisdictionCountry}} by {{referenceRegulation.administeredBy.name}}

{{referenceStandard.name}} issued by {{referenceStandard.issuingParty.name}}

{{#each declaredValue}}

{{metricName}} is {{metricValue.value}}{{metricValue.unit}}

Score: {{score}} | Accuracy {{accuracy}}

{{/each}}
Evidence
{{/each}}
Production
Product category
{{#each credentialSubject.productCategory}}{{name}}{{#unless @last}},{{/unless}} {{/each}}
Date produced
{{credentialSubject.productionDate}}
Country
{{credentialSubject.countryOfProduction}}
Dimensions
Weight: {{credentialSubject.dimensions.weight.value}}{{credentialSubject.dimensions.weight.unit}} Length: {{credentialSubject.dimensions.length.value}}{{credentialSubject.dimensions.length.unit}} Width: {{credentialSubject.dimensions.width.value}}{{credentialSubject.dimensions.width.unit}} Height: {{credentialSubject.dimensions.height.value}}{{credentialSubject.dimensions.height.unit}} Volume: {{credentialSubject.dimensions.volume.value}}{{credentialSubject.dimensions.volume.unit}}
Composition

The Product Composition List details the materials and components used in the product, providing transparency on the origin and nature of each element.

{{#each credentialSubject.materialsProvenance}}
{{massFraction}}%
{{massAmount.value}}{{massAmount.unit}} {{name}}
Recycled {{#if recycledAmount}}{{recycledAmount}}{{else}}0{{/if}}%
Hazard {{#if hazardous}}Yes{{else}}No{{/if}}
{{originCountry}}
{{/each}}
History
{{!-- start: Supply chain due diligence report --}}
Supply chain due diligence report
{{!-- end: Supply chain due diligence report --}}

{{credentialSubject.traceabilityInformation.valueChainProcess}}

Verified ratio {{credentialSubject.traceabilityInformation.verifiedRatio}}

{{#each credentialSubject.traceabilityInformation.traceabilityEvent}}
{{linkName}} View
{{/each}}
Passport issued by
Organisation
{{issuer.name}}
Registered ID
Valid from
{{validFrom}}
Valid to
{{validUntil}}

This Digital Product Passport (DPP) is a digital record of the product’s sustainability and environmental performance, ensuring transparency and accountability in line with UNTP standards. The DPP can be verified at any time using the QR code or visiting www.untp-certification.org with the passport ID.

", @@ -6019,7 +6019,7 @@ } }, "traceabilityEvent": { - "context": ["https://vocabulary.uncefact.org/untp/dte/0.5.0/"], + "context": ["https://test.uncefact.org/vocabulary/untp/dte/0.5.0/"], "renderTemplate": [ { "template": "
DIGITAL TRACEABILITY EVENT
{{#each credentialSubject}}
{{processType}}
{{bizStep}} {{eventTime}}
Transformation
Output
{{#each outputEPCList}}
{{name}}
View
{{/each}} {{#each outputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}

Transformed

Input
{{#each inputEPCList}}
{{name}}
View
{{/each}} {{#each inputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Transaction
Source
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Destination
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Object event
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Aggregation
{{parentEPC.name}}
View

Aggregated

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Association
{{parentEPC.name}}
View

Assembled

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{/each}}
Issuing details
Issued by
Valid from
{{validFrom}}
", @@ -6050,7 +6050,10 @@ } }, "identifierKeyPath": "/0/id", - "localStorageParams": { "storageKey": "fumigation_and_freight_forwarding_facility_dpps", "keyPath": "/0/epcList/index/name" } + "localStorageParams": { + "storageKey": "fumigation_and_freight_forwarding_facility_dpps", + "keyPath": "/0/epcList/index/name" + } } ] }, @@ -6700,7 +6703,7 @@ } }, "dpp": { - "context": ["https://vocabulary.uncefact.org/untp/dpp/0.5.0/"], + "context": ["https://test.uncefact.org/vocabulary/untp/dpp/0.5.0/"], "renderTemplate": [ { "template": " Digital Product Passport

PRODUCT PASSPORT

{{credentialSubject.name}}

{{credentialSubject.description}}
{{#each credentialSubject.furtherInformation}} {{linkName}} {{/each}}
{{#if credentialSubject.characteristic}}
Characteristics
{{#each credentialSubject.characteristic}}
{{@key}}

{{this}}

{{/each}}
{{/if}}

Circularity Scorecard

The circularity Scorecard provides a simple high level summary of circularity performance of the product.

{{credentialSubject.circularityScorecard.recyclableContent}}%

Recyclable content

{{credentialSubject.circularityScorecard.recycledContent}}%

Recycled content

{{credentialSubject.circularityScorecard.utilityFactor}}

Utility factor

{{credentialSubject.circularityScorecard.materialCircularityIndicator}}

Material circularity*

*The Material Circularity Indicator provides an overall circularity score which is a function of all three of the earlier measures.

Emissions Scorecard

The Emissions Scorecard gives a clear snapshot of the product's greenhouse gas (GHG) emissions performance, providing a single indicator to assess its overall environmental impact.

{{credentialSubject.emissionsScorecard.carbonFootprint}}{{credentialSubject.emissionsScorecard.declaredUnit}}

Co2Eq

Scope includes

{{credentialSubject.emissionsScorecard.operationalScope}}

Primary sourced ratio*

{{credentialSubject.emissionsScorecard.primarySourcedRatio}}% primary sources

Issue date

{{credentialSubject.emissionsScorecard.reportingStandard.issueDate}}

*

The Primary Sourced Ratio shows the percentage of scope 3 emissions data that is directly collected from actual sources, rather than being based on estimates.

Declarations
{{#each credentialSubject.conformityClaim}}
Conformance:
{{#if conformance}}Yes{{else}}No{{/if}}
Assessed: {{assessmentDate}}
{{conformityEvidence.linkName}}

{{referenceRegulation.name}} administered in {{referenceRegulation.jurisdictionCountry}} by {{referenceRegulation.administeredBy.name}}

{{referenceStandard.name}} issued by {{referenceStandard.issuingParty.name}}

{{#each declaredValue}}

{{metricName}} is {{metricValue.value}}{{metricValue.unit}}

Score: {{score}} | Accuracy {{accuracy}}

{{/each}}
Evidence
{{/each}}
Production
Product category

{{#each credentialSubject.productCategory}}{{name}}{{#unless @last}},{{/unless}} {{/each}}

Date produced

{{credentialSubject.productionDate}}

Country

{{credentialSubject.countryOfProduction}}

Dimensions

Weight: {{credentialSubject.dimensions.weight.value}}{{credentialSubject.dimensions.weight.unit}} Length: {{credentialSubject.dimensions.length.value}}{{credentialSubject.dimensions.length.unit}} Width: {{credentialSubject.dimensions.width.value}}{{credentialSubject.dimensions.width.unit}} Height: {{credentialSubject.dimensions.height.value}}{{credentialSubject.dimensions.height.unit}} Volume: {{credentialSubject.dimensions.volume.value}}{{credentialSubject.dimensions.volume.unit}}

Product composition

A complete list of materials that make up the composition of this product.

{{#each credentialSubject.materialsProvenance}}

{{massFraction}}%

{{massAmount.value}}{{massAmount.unit}} {{name}}

Recycled {{recycledAmount}}%

Hazard {{#if hazardous}}Yes{{else}}No{{/if}}

{{materialSafetyInformation.linkName}}
{{originCountry}}
{{/each}}

History

{{!-- start: Supply chain due diligence report --}}
Supply chain due diligence report
{{!-- end: Supply chain due diligence report --}}

{{credentialSubject.traceabilityInformation.valueChainProcess}}

Verified ratio {{credentialSubject.traceabilityInformation.verifiedRatio}}

{{#each credentialSubject.traceabilityInformation.traceabilityEvent}}
{{linkName}} View
{{/each}}

Passport issued by

Organisation

{{issuer.name}}

Registered ID {{issuer.id}}
Valid from

{{validFrom}}

Valid to

{{validUntil}}

This Digital Product Passport (DPP) is a digital record of the product's sustainability and environmental performance, ensuring transparency and accountability in line with UNTP standards. The DPP can be verified at any time using the QR code or visiting www.untp-certification.org with the passport ID.

PRODUCT PASSPORT
{{credentialSubject.name}}
Batch: {{credentialSubject.batchNumber}}
Serial: {{credentialSubject.serialNumber}}

{{credentialSubject.description}}

{{#each credentialSubject.furtherInformation}}
{{linkName}}
{{/each}}
{{#if credentialSubject.characteristic}}
Characteristics
{{#each credentialSubject.characteristic}}
{{@key}}
{{this}}
{{/each}}
{{/if}}
Circularity Scorecard

The circularity Scorecard provides a simple high level summary of circularity performance of the product.

{{credentialSubject.circularityScorecard.recyclableContent}}%
Recyclable content
{{credentialSubject.circularityScorecard.recycledContent}}%
Recycled content
{{credentialSubject.circularityScorecard.utilityFactor}}
Utility factor
{{credentialSubject.circularityScorecard.materialCircularityIndicator}}
Material circularity*

*The Material Circularity Indicator provides an overall circularity score which is a function of all three of the earlier measures.

Emissions Scorecard

The Emissions Scorecard gives a clear snapshot of the product's greenhouse gas (GHG) emissions performance, providing a single indicator to assess its overall environmental impact.

{{credentialSubject.emissionsScorecard.carbonFootprint}}{{credentialSubject.emissionsScorecard.declaredUnit}}

Co2Eq

Scope includes
{{credentialSubject.emissionsScorecard.operationalScope}}
Primary sourced ratio*
{{credentialSubject.emissionsScorecard.primarySourcedRatio}}% primary sources

The Primary Sourced Ratio shows the percentage of scope 3 emissions data that is directly collected from actual sources, rather than being based on estimates.

Issue date
{{credentialSubject.emissionsScorecard.reportingStandard.issueDate}}
*
Declarations
{{#each credentialSubject.conformityClaim}}
Conformance:
{{#if conformance}}Yes{{else}}No{{/if}}
Assessed: {{assessmentDate}}
{{conformityEvidence.linkName}}

{{referenceRegulation.name}} administered in {{referenceRegulation.jurisdictionCountry}} by {{referenceRegulation.administeredBy.name}}

{{referenceStandard.name}} issued by {{referenceStandard.issuingParty.name}}

{{#each declaredValue}}

{{metricName}} is {{metricValue.value}}{{metricValue.unit}}

Score: {{score}} | Accuracy {{accuracy}}

{{/each}}
Evidence
{{/each}}
Production
Product category
{{#each credentialSubject.productCategory}}{{name}}{{#unless @last}},{{/unless}} {{/each}}
Date produced
{{credentialSubject.productionDate}}
Country
{{credentialSubject.countryOfProduction}}
Dimensions
Weight: {{credentialSubject.dimensions.weight.value}}{{credentialSubject.dimensions.weight.unit}} Length: {{credentialSubject.dimensions.length.value}}{{credentialSubject.dimensions.length.unit}} Width: {{credentialSubject.dimensions.width.value}}{{credentialSubject.dimensions.width.unit}} Height: {{credentialSubject.dimensions.height.value}}{{credentialSubject.dimensions.height.unit}} Volume: {{credentialSubject.dimensions.volume.value}}{{credentialSubject.dimensions.volume.unit}}
Composition

The Product Composition List details the materials and components used in the product, providing transparency on the origin and nature of each element.

{{#each credentialSubject.materialsProvenance}}
{{massFraction}}%
{{massAmount.value}}{{massAmount.unit}} {{name}}
Recycled {{#if recycledAmount}}{{recycledAmount}}{{else}}0{{/if}}%
Hazard {{#if hazardous}}Yes{{else}}No{{/if}}
{{originCountry}}
{{/each}}
History
{{!-- start: Supply chain due diligence report --}}
Supply chain due diligence report
{{!-- end: Supply chain due diligence report --}}

{{credentialSubject.traceabilityInformation.valueChainProcess}}

Verified ratio {{credentialSubject.traceabilityInformation.verifiedRatio}}

{{#each credentialSubject.traceabilityInformation.traceabilityEvent}}
{{linkName}} View
{{/each}}
Passport issued by
Organisation
{{issuer.name}}
Registered ID
Valid from
{{validFrom}}
Valid to
{{validUntil}}

This Digital Product Passport (DPP) is a digital record of the product’s sustainability and environmental performance, ensuring transparency and accountability in line with UNTP standards. The DPP can be verified at any time using the QR code or visiting www.untp-certification.org with the passport ID.

", @@ -6921,7 +6924,7 @@ } }, "traceabilityEvent": { - "context": ["https://vocabulary.uncefact.org/untp/dte/0.5.0/"], + "context": ["https://test.uncefact.org/vocabulary/untp/dte/0.5.0/"], "renderTemplate": [ { "template": "
DIGITAL TRACEABILITY EVENT
{{#each credentialSubject}}
{{processType}}
{{bizStep}} {{eventTime}}
Transformation
Output
{{#each outputEPCList}}
{{name}}
View
{{/each}} {{#each outputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}

Transformed

Input
{{#each inputEPCList}}
{{name}}
View
{{/each}} {{#each inputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Transaction
Source
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Destination
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Object event
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Aggregation
{{parentEPC.name}}
View

Aggregated

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Association
{{parentEPC.name}}
View

Assembled

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{/each}}
Issuing details
Issued by
Valid from
{{validFrom}}
", @@ -6952,7 +6955,10 @@ } }, "identifierKeyPath": "/0/id", - "localStorageParams": { "storageKey": "airport_terminal_facility_dpps", "keyPath": "/0/epcList/index/name" } + "localStorageParams": { + "storageKey": "airport_terminal_facility_dpps", + "keyPath": "/0/epcList/index/name" + } } ] }, diff --git a/docker-compose.yml b/docker-compose.yml index cd524010..01d5dedf 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -13,6 +13,16 @@ services: - ./documentation:/app - /app/node_modules + untp-playground: + build: packages/untp-playground + ports: + - '4000:3000' + volumes: + - ./packages/untp-playground:/untp-playground + - /untp-playground/node_modules + environment: + - NODE_ENV=development + vckit-api: image: ghcr.io/uncefact/project-vckit:sha-8a1a7ea@sha256:21414e4cdfd6b045f57667408256d4951c1d14d0648151ededf3107716b67b5f env_file: diff --git a/package.json b/package.json index d200a7dc..9953e2c0 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "scripts": { "copy-config": "cp app-config.json packages/mock-app/src/constants/app-config.json && cp app-config.json packages/components/src/constants/app-config.json", "start": "yarn copy-config && cd packages/mock-app && yarn start", + "start:untp-playground": "cd packages/untp-playground && PORT=4001 yarn dev", "build": "yarn copy-config && yarn build:services && yarn build:components && yarn build:untp-test-suite", "build:services": "cd packages/services && yarn run build", "build:components": "cd packages/components && yarn run build", @@ -27,7 +28,7 @@ "upgrade:packages": "yarn -r --stream upgrade --latest", "version": "lerna version", "prepare": "husky install", - "lint": " yarn eslint packages" + "lint": "cross-env NODE_OPTIONS=--max-old-space-size=8192 yarn eslint packages" }, "devDependencies": { "@jest/globals": "^29.7.0", diff --git a/packages/components/src/constants/app-config.json b/packages/components/src/constants/app-config.json index 99c680cd..1273cdae 100644 --- a/packages/components/src/constants/app-config.json +++ b/packages/components/src/constants/app-config.json @@ -687,7 +687,7 @@ } }, "dpp": { - "context": ["https://vocabulary.uncefact.org/untp/dpp/0.5.0/"], + "context": ["https://test.uncefact.org/vocabulary/untp/dpp/0.5.0/"], "renderTemplate": [ { "template": " Digital Product Passport

PRODUCT PASSPORT

{{credentialSubject.name}}

{{credentialSubject.description}}
{{#each credentialSubject.furtherInformation}} {{linkName}} {{/each}}
{{#if credentialSubject.characteristic}}
Characteristics
{{#each credentialSubject.characteristic}}
{{@key}}

{{this}}

{{/each}}
{{/if}}

Circularity Scorecard

The circularity Scorecard provides a simple high level summary of circularity performance of the product.

{{credentialSubject.circularityScorecard.recyclableContent}}%

Recyclable content

{{credentialSubject.circularityScorecard.recycledContent}}%

Recycled content

{{credentialSubject.circularityScorecard.utilityFactor}}

Utility factor

{{credentialSubject.circularityScorecard.materialCircularityIndicator}}

Material circularity*

*The Material Circularity Indicator provides an overall circularity score which is a function of all three of the earlier measures.

Emissions Scorecard

The Emissions Scorecard gives a clear snapshot of the product's greenhouse gas (GHG) emissions performance, providing a single indicator to assess its overall environmental impact.

{{credentialSubject.emissionsScorecard.carbonFootprint}}{{credentialSubject.emissionsScorecard.declaredUnit}}

Co2Eq

Scope includes

{{credentialSubject.emissionsScorecard.operationalScope}}

Primary sourced ratio*

{{credentialSubject.emissionsScorecard.primarySourcedRatio}}% primary sources

Issue date

{{credentialSubject.emissionsScorecard.reportingStandard.issueDate}}

*

The Primary Sourced Ratio shows the percentage of scope 3 emissions data that is directly collected from actual sources, rather than being based on estimates.

Declarations
{{#each credentialSubject.conformityClaim}}
Conformance:
{{#if conformance}}Yes{{else}}No{{/if}}
Assessed: {{assessmentDate}}
{{conformityEvidence.linkName}}

{{referenceRegulation.name}} administered in {{referenceRegulation.jurisdictionCountry}} by {{referenceRegulation.administeredBy.name}}

{{referenceStandard.name}} issued by {{referenceStandard.issuingParty.name}}

{{#each declaredValue}}

{{metricName}} is {{metricValue.value}}{{metricValue.unit}}

Score: {{score}} | Accuracy {{accuracy}}

{{/each}}
Evidence
{{/each}}
Production
Product category

{{#each credentialSubject.productCategory}}{{name}}{{#unless @last}},{{/unless}} {{/each}}

Date produced

{{credentialSubject.productionDate}}

Country

{{credentialSubject.countryOfProduction}}

Dimensions

Weight: {{credentialSubject.dimensions.weight.value}}{{credentialSubject.dimensions.weight.unit}} Length: {{credentialSubject.dimensions.length.value}}{{credentialSubject.dimensions.length.unit}} Width: {{credentialSubject.dimensions.width.value}}{{credentialSubject.dimensions.width.unit}} Height: {{credentialSubject.dimensions.height.value}}{{credentialSubject.dimensions.height.unit}} Volume: {{credentialSubject.dimensions.volume.value}}{{credentialSubject.dimensions.volume.unit}}

Product composition

A complete list of materials that make up the composition of this product.

{{#each credentialSubject.materialsProvenance}}

{{massFraction}}%

{{massAmount.value}}{{massAmount.unit}} {{name}}

Recycled {{recycledAmount}}%

Hazard {{#if hazardous}}Yes{{else}}No{{/if}}

{{materialSafetyInformation.linkName}}
{{originCountry}}
{{/each}}

History

{{!-- start: Supply chain due diligence report --}}
Supply chain due diligence report
{{!-- end: Supply chain due diligence report --}}

{{credentialSubject.traceabilityInformation.valueChainProcess}}

Verified ratio {{credentialSubject.traceabilityInformation.verifiedRatio}}

{{#each credentialSubject.traceabilityInformation.traceabilityEvent}}
{{linkName}} View
{{/each}}

Passport issued by

Organisation

{{issuer.name}}

Registered ID {{issuer.id}}
Valid from

{{validFrom}}

Valid to

{{validUntil}}

This Digital Product Passport (DPP) is a digital record of the product's sustainability and environmental performance, ensuring transparency and accountability in line with UNTP standards. The DPP can be verified at any time using the QR code or visiting www.untp-certification.org with the passport ID.

PRODUCT PASSPORT
{{credentialSubject.name}}
Batch: {{credentialSubject.batchNumber}}
Serial: {{credentialSubject.serialNumber}}

{{credentialSubject.description}}

{{#each credentialSubject.furtherInformation}}
{{linkName}}
{{/each}}
{{#if credentialSubject.characteristic}}
Characteristics
{{#each credentialSubject.characteristic}}
{{@key}}
{{this}}
{{/each}}
{{/if}}
Circularity Scorecard

The circularity Scorecard provides a simple high level summary of circularity performance of the product.

{{credentialSubject.circularityScorecard.recyclableContent}}%
Recyclable content
{{credentialSubject.circularityScorecard.recycledContent}}%
Recycled content
{{credentialSubject.circularityScorecard.utilityFactor}}
Utility factor
{{credentialSubject.circularityScorecard.materialCircularityIndicator}}
Material circularity*

*The Material Circularity Indicator provides an overall circularity score which is a function of all three of the earlier measures.

Emissions Scorecard

The Emissions Scorecard gives a clear snapshot of the product's greenhouse gas (GHG) emissions performance, providing a single indicator to assess its overall environmental impact.

{{credentialSubject.emissionsScorecard.carbonFootprint}}{{credentialSubject.emissionsScorecard.declaredUnit}}

Co2Eq

Scope includes
{{credentialSubject.emissionsScorecard.operationalScope}}
Primary sourced ratio*
{{credentialSubject.emissionsScorecard.primarySourcedRatio}}% primary sources

The Primary Sourced Ratio shows the percentage of scope 3 emissions data that is directly collected from actual sources, rather than being based on estimates.

Issue date
{{credentialSubject.emissionsScorecard.reportingStandard.issueDate}}
*
Declarations
{{#each credentialSubject.conformityClaim}}
Conformance:
{{#if conformance}}Yes{{else}}No{{/if}}
Assessed: {{assessmentDate}}
{{conformityEvidence.linkName}}

{{referenceRegulation.name}} administered in {{referenceRegulation.jurisdictionCountry}} by {{referenceRegulation.administeredBy.name}}

{{referenceStandard.name}} issued by {{referenceStandard.issuingParty.name}}

{{#each declaredValue}}

{{metricName}} is {{metricValue.value}}{{metricValue.unit}}

Score: {{score}} | Accuracy {{accuracy}}

{{/each}}
Evidence
{{/each}}
Production
Product category
{{#each credentialSubject.productCategory}}{{name}}{{#unless @last}},{{/unless}} {{/each}}
Date produced
{{credentialSubject.productionDate}}
Country
{{credentialSubject.countryOfProduction}}
Dimensions
Weight: {{credentialSubject.dimensions.weight.value}}{{credentialSubject.dimensions.weight.unit}} Length: {{credentialSubject.dimensions.length.value}}{{credentialSubject.dimensions.length.unit}} Width: {{credentialSubject.dimensions.width.value}}{{credentialSubject.dimensions.width.unit}} Height: {{credentialSubject.dimensions.height.value}}{{credentialSubject.dimensions.height.unit}} Volume: {{credentialSubject.dimensions.volume.value}}{{credentialSubject.dimensions.volume.unit}}
Composition

The Product Composition List details the materials and components used in the product, providing transparency on the origin and nature of each element.

{{#each credentialSubject.materialsProvenance}}
{{massFraction}}%
{{massAmount.value}}{{massAmount.unit}} {{name}}
Recycled {{#if recycledAmount}}{{recycledAmount}}{{else}}0{{/if}}%
Hazard {{#if hazardous}}Yes{{else}}No{{/if}}
{{originCountry}}
{{/each}}
History
{{!-- start: Supply chain due diligence report --}}
Supply chain due diligence report
{{!-- end: Supply chain due diligence report --}}

{{credentialSubject.traceabilityInformation.valueChainProcess}}

Verified ratio {{credentialSubject.traceabilityInformation.verifiedRatio}}

{{#each credentialSubject.traceabilityInformation.traceabilityEvent}}
{{linkName}} View
{{/each}}
Passport issued by
Organisation
{{issuer.name}}
Registered ID
Valid from
{{validFrom}}
Valid to
{{validUntil}}

This Digital Product Passport (DPP) is a digital record of the product’s sustainability and environmental performance, ensuring transparency and accountability in line with UNTP standards. The DPP can be verified at any time using the QR code or visiting www.untp-certification.org with the passport ID.

", @@ -1401,7 +1401,7 @@ } }, "dpp": { - "context": ["https://vocabulary.uncefact.org/untp/dpp/0.5.0/"], + "context": ["https://test.uncefact.org/vocabulary/untp/dpp/0.5.0/"], "renderTemplate": [ { "template": " Digital Product Passport

PRODUCT PASSPORT

{{credentialSubject.name}}

{{credentialSubject.description}}
{{#each credentialSubject.furtherInformation}} {{linkName}} {{/each}}
{{#if credentialSubject.characteristic}}
Characteristics
{{#each credentialSubject.characteristic}}
{{@key}}

{{this}}

{{/each}}
{{/if}}

Circularity Scorecard

The circularity Scorecard provides a simple high level summary of circularity performance of the product.

{{credentialSubject.circularityScorecard.recyclableContent}}%

Recyclable content

{{credentialSubject.circularityScorecard.recycledContent}}%

Recycled content

{{credentialSubject.circularityScorecard.utilityFactor}}

Utility factor

{{credentialSubject.circularityScorecard.materialCircularityIndicator}}

Material circularity*

*The Material Circularity Indicator provides an overall circularity score which is a function of all three of the earlier measures.

Emissions Scorecard

The Emissions Scorecard gives a clear snapshot of the product's greenhouse gas (GHG) emissions performance, providing a single indicator to assess its overall environmental impact.

{{credentialSubject.emissionsScorecard.carbonFootprint}}{{credentialSubject.emissionsScorecard.declaredUnit}}

Co2Eq

Scope includes

{{credentialSubject.emissionsScorecard.operationalScope}}

Primary sourced ratio*

{{credentialSubject.emissionsScorecard.primarySourcedRatio}}% primary sources

Issue date

{{credentialSubject.emissionsScorecard.reportingStandard.issueDate}}

*

The Primary Sourced Ratio shows the percentage of scope 3 emissions data that is directly collected from actual sources, rather than being based on estimates.

Declarations
{{#each credentialSubject.conformityClaim}}
Conformance:
{{#if conformance}}Yes{{else}}No{{/if}}
Assessed: {{assessmentDate}}
{{conformityEvidence.linkName}}

{{referenceRegulation.name}} administered in {{referenceRegulation.jurisdictionCountry}} by {{referenceRegulation.administeredBy.name}}

{{referenceStandard.name}} issued by {{referenceStandard.issuingParty.name}}

{{#each declaredValue}}

{{metricName}} is {{metricValue.value}}{{metricValue.unit}}

Score: {{score}} | Accuracy {{accuracy}}

{{/each}}
Evidence
{{/each}}
Production
Product category

{{#each credentialSubject.productCategory}}{{name}}{{#unless @last}},{{/unless}} {{/each}}

Date produced

{{credentialSubject.productionDate}}

Country

{{credentialSubject.countryOfProduction}}

Dimensions

Weight: {{credentialSubject.dimensions.weight.value}}{{credentialSubject.dimensions.weight.unit}} Length: {{credentialSubject.dimensions.length.value}}{{credentialSubject.dimensions.length.unit}} Width: {{credentialSubject.dimensions.width.value}}{{credentialSubject.dimensions.width.unit}} Height: {{credentialSubject.dimensions.height.value}}{{credentialSubject.dimensions.height.unit}} Volume: {{credentialSubject.dimensions.volume.value}}{{credentialSubject.dimensions.volume.unit}}

Product composition

A complete list of materials that make up the composition of this product.

{{#each credentialSubject.materialsProvenance}}

{{massFraction}}%

{{massAmount.value}}{{massAmount.unit}} {{name}}

Recycled {{recycledAmount}}%

Hazard {{#if hazardous}}Yes{{else}}No{{/if}}

{{materialSafetyInformation.linkName}}
{{originCountry}}
{{/each}}

History

{{!-- start: Supply chain due diligence report --}}
Supply chain due diligence report
{{!-- end: Supply chain due diligence report --}}

{{credentialSubject.traceabilityInformation.valueChainProcess}}

Verified ratio {{credentialSubject.traceabilityInformation.verifiedRatio}}

{{#each credentialSubject.traceabilityInformation.traceabilityEvent}}
{{linkName}} View
{{/each}}

Passport issued by

Organisation

{{issuer.name}}

Registered ID {{issuer.id}}
Valid from

{{validFrom}}

Valid to

{{validUntil}}

This Digital Product Passport (DPP) is a digital record of the product's sustainability and environmental performance, ensuring transparency and accountability in line with UNTP standards. The DPP can be verified at any time using the QR code or visiting www.untp-certification.org with the passport ID.

PRODUCT PASSPORT
{{credentialSubject.name}}
Batch: {{credentialSubject.batchNumber}}
Serial: {{credentialSubject.serialNumber}}

{{credentialSubject.description}}

{{#each credentialSubject.furtherInformation}}
{{linkName}}
{{/each}}
{{#if credentialSubject.characteristic}}
Characteristics
{{#each credentialSubject.characteristic}}
{{@key}}
{{this}}
{{/each}}
{{/if}}
Circularity Scorecard

The circularity Scorecard provides a simple high level summary of circularity performance of the product.

{{credentialSubject.circularityScorecard.recyclableContent}}%
Recyclable content
{{credentialSubject.circularityScorecard.recycledContent}}%
Recycled content
{{credentialSubject.circularityScorecard.utilityFactor}}
Utility factor
{{credentialSubject.circularityScorecard.materialCircularityIndicator}}
Material circularity*

*The Material Circularity Indicator provides an overall circularity score which is a function of all three of the earlier measures.

Emissions Scorecard

The Emissions Scorecard gives a clear snapshot of the product's greenhouse gas (GHG) emissions performance, providing a single indicator to assess its overall environmental impact.

{{credentialSubject.emissionsScorecard.carbonFootprint}}{{credentialSubject.emissionsScorecard.declaredUnit}}

Co2Eq

Scope includes
{{credentialSubject.emissionsScorecard.operationalScope}}
Primary sourced ratio*
{{credentialSubject.emissionsScorecard.primarySourcedRatio}}% primary sources

The Primary Sourced Ratio shows the percentage of scope 3 emissions data that is directly collected from actual sources, rather than being based on estimates.

Issue date
{{credentialSubject.emissionsScorecard.reportingStandard.issueDate}}
*
Declarations
{{#each credentialSubject.conformityClaim}}
Conformance:
{{#if conformance}}Yes{{else}}No{{/if}}
Assessed: {{assessmentDate}}
{{conformityEvidence.linkName}}

{{referenceRegulation.name}} administered in {{referenceRegulation.jurisdictionCountry}} by {{referenceRegulation.administeredBy.name}}

{{referenceStandard.name}} issued by {{referenceStandard.issuingParty.name}}

{{#each declaredValue}}

{{metricName}} is {{metricValue.value}}{{metricValue.unit}}

Score: {{score}} | Accuracy {{accuracy}}

{{/each}}
Evidence
{{/each}}
Production
Product category
{{#each credentialSubject.productCategory}}{{name}}{{#unless @last}},{{/unless}} {{/each}}
Date produced
{{credentialSubject.productionDate}}
Country
{{credentialSubject.countryOfProduction}}
Dimensions
Weight: {{credentialSubject.dimensions.weight.value}}{{credentialSubject.dimensions.weight.unit}} Length: {{credentialSubject.dimensions.length.value}}{{credentialSubject.dimensions.length.unit}} Width: {{credentialSubject.dimensions.width.value}}{{credentialSubject.dimensions.width.unit}} Height: {{credentialSubject.dimensions.height.value}}{{credentialSubject.dimensions.height.unit}} Volume: {{credentialSubject.dimensions.volume.value}}{{credentialSubject.dimensions.volume.unit}}
Composition

The Product Composition List details the materials and components used in the product, providing transparency on the origin and nature of each element.

{{#each credentialSubject.materialsProvenance}}
{{massFraction}}%
{{massAmount.value}}{{massAmount.unit}} {{name}}
Recycled {{#if recycledAmount}}{{recycledAmount}}{{else}}0{{/if}}%
Hazard {{#if hazardous}}Yes{{else}}No{{/if}}
{{originCountry}}
{{/each}}
History
{{!-- start: Supply chain due diligence report --}}
Supply chain due diligence report
{{!-- end: Supply chain due diligence report --}}

{{credentialSubject.traceabilityInformation.valueChainProcess}}

Verified ratio {{credentialSubject.traceabilityInformation.verifiedRatio}}

{{#each credentialSubject.traceabilityInformation.traceabilityEvent}}
{{linkName}} View
{{/each}}
Passport issued by
Organisation
{{issuer.name}}
Registered ID
Valid from
{{validFrom}}
Valid to
{{validUntil}}

This Digital Product Passport (DPP) is a digital record of the product’s sustainability and environmental performance, ensuring transparency and accountability in line with UNTP standards. The DPP can be verified at any time using the QR code or visiting www.untp-certification.org with the passport ID.

", @@ -1627,7 +1627,7 @@ } }, "traceabilityEvent": { - "context": ["https://vocabulary.uncefact.org/untp/dte/0.5.0/"], + "context": ["https://test.uncefact.org/vocabulary/untp/dte/0.5.0/"], "renderTemplate": [ { "template": "
DIGITAL TRACEABILITY EVENT
{{#each credentialSubject}}
{{processType}}
{{bizStep}} {{eventTime}}
Transformation
Output
{{#each outputEPCList}}
{{name}}
View
{{/each}} {{#each outputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}

Transformed

Input
{{#each inputEPCList}}
{{name}}
View
{{/each}} {{#each inputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Transaction
Source
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Destination
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Object event
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Aggregation
{{parentEPC.name}}
View

Aggregated

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Association
{{parentEPC.name}}
View

Assembled

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{/each}}
Issuing details
Issued by
Valid from
{{validFrom}}
", @@ -2574,7 +2574,7 @@ } }, "traceabilityEvent": { - "context": ["https://vocabulary.uncefact.org/untp/dte/0.5.0/"], + "context": ["https://test.uncefact.org/vocabulary/untp/dte/0.5.0/"], "renderTemplate": [ { "template": "
DIGITAL TRACEABILITY EVENT
{{#each credentialSubject}}
{{processType}}
{{bizStep}} {{eventTime}}
Transformation
Output
{{#each outputEPCList}}
{{name}}
View
{{/each}} {{#each outputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}

Transformed

Input
{{#each inputEPCList}}
{{name}}
View
{{/each}} {{#each inputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Transaction
Source
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Destination
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Object event
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Aggregation
{{parentEPC.name}}
View

Aggregated

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Association
{{parentEPC.name}}
View

Assembled

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{/each}}
Issuing details
Issued by
Valid from
{{validFrom}}
", @@ -2751,7 +2751,7 @@ } }, "traceabilityEvent": { - "context": ["https://vocabulary.uncefact.org/untp/dte/0.5.0/"], + "context": ["https://test.uncefact.org/vocabulary/untp/dte/0.5.0/"], "renderTemplate": [ { "template": "
DIGITAL TRACEABILITY EVENT
{{#each credentialSubject}}
{{processType}}
{{bizStep}} {{eventTime}}
Transformation
Output
{{#each outputEPCList}}
{{name}}
View
{{/each}} {{#each outputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}

Transformed

Input
{{#each inputEPCList}}
{{name}}
View
{{/each}} {{#each inputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Transaction
Source
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Destination
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Object event
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Aggregation
{{parentEPC.name}}
View

Aggregated

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Association
{{parentEPC.name}}
View

Assembled

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{/each}}
Issuing details
Issued by
Valid from
{{validFrom}}
", @@ -2932,7 +2932,7 @@ } }, "traceabilityEvent": { - "context": ["https://vocabulary.uncefact.org/untp/dte/0.5.0/"], + "context": ["https://test.uncefact.org/vocabulary/untp/dte/0.5.0/"], "renderTemplate": [ { "template": "
DIGITAL TRACEABILITY EVENT
{{#each credentialSubject}}
{{processType}}
{{bizStep}} {{eventTime}}
Transformation
Output
{{#each outputEPCList}}
{{name}}
View
{{/each}} {{#each outputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}

Transformed

Input
{{#each inputEPCList}}
{{name}}
View
{{/each}} {{#each inputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Transaction
Source
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Destination
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Object event
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Aggregation
{{parentEPC.name}}
View

Aggregated

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Association
{{parentEPC.name}}
View

Assembled

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{/each}}
Issuing details
Issued by
Valid from
{{validFrom}}
", @@ -3113,7 +3113,7 @@ } }, "traceabilityEvent": { - "context": ["https://vocabulary.uncefact.org/untp/dte/0.5.0/"], + "context": ["https://test.uncefact.org/vocabulary/untp/dte/0.5.0/"], "renderTemplate": [ { "template": "
DIGITAL TRACEABILITY EVENT
{{#each credentialSubject}}
{{processType}}
{{bizStep}} {{eventTime}}
Transformation
Output
{{#each outputEPCList}}
{{name}}
View
{{/each}} {{#each outputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}

Transformed

Input
{{#each inputEPCList}}
{{name}}
View
{{/each}} {{#each inputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Transaction
Source
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Destination
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Object event
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Aggregation
{{parentEPC.name}}
View

Aggregated

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Association
{{parentEPC.name}}
View

Assembled

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{/each}}
Issuing details
Issued by
Valid from
{{validFrom}}
", @@ -3315,7 +3315,7 @@ } }, "traceabilityEvent": { - "context": ["https://vocabulary.uncefact.org/untp/dte/0.5.0/"], + "context": ["https://test.uncefact.org/vocabulary/untp/dte/0.5.0/"], "renderTemplate": [ { "template": "
DIGITAL TRACEABILITY EVENT
{{#each credentialSubject}}
{{processType}}
{{bizStep}} {{eventTime}}
Transformation
Output
{{#each outputEPCList}}
{{name}}
View
{{/each}} {{#each outputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}

Transformed

Input
{{#each inputEPCList}}
{{name}}
View
{{/each}} {{#each inputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Transaction
Source
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Destination
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Object event
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Aggregation
{{parentEPC.name}}
View

Aggregated

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Association
{{parentEPC.name}}
View

Assembled

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{/each}}
Issuing details
Issued by
Valid from
{{validFrom}}
", @@ -3816,7 +3816,7 @@ } }, "digitalConformityCredential": { - "context": ["https://vocabulary.uncefact.org/untp/dcc/0.5.0/"], + "context": ["https://test.uncefact.org/vocabulary/untp/dcc/0.5.0/"], "renderTemplate": [ { "template": " DigitalConformityCredential
CONFORMITY CREDENTIAL

{{credentialSubject.name}}

{{credentialSubject.description}}

Level of independent assurance:

{{credentialSubject.assessorLevel}}

Type of authority endorsement:

{{credentialSubject.assessmentLevel}}

Type of the attestation credential:

{{credentialSubject.attestationType}}
Assessments

The list of specific assessments made within this conformity attestation.

{{#each credentialSubject.assessment}}

{{conformityTopic}}

Declared values
{{#each declaredValue}}
Name
{{metricName}}
Value
{{metricValue.value}}{{metricValue.unit}}
Accuracy
{{accuracy}}
{{/each}}
Assessment Criteria
{{#each assessmentCriteria}}
{{name}}
    {{#each thresholdValues}}
  • Industry average {{metricName}} is {{metricValue.value}}{{metricValue.unit}}.

  • {{/each}}
{{/each}}
Assessed facilities
{{#each assessedFacility}}

{{name}}

{{/each}}
Assessed products
{{#each assessedProduct}}
{{name}}
{{/each}}
Other details
Assessed
{{assessmentDate}}
Organisation assessed
{{assessedOrganisation.name}}
{{/each}}
Issuer endorsement
{{#each credentialSubject.authorisation}}
trustmark
{{name}} is accredited by {{issuingAuthority.name}}.
{{/each}}
Issuing details
Issued by
Valid from
{{validFrom}}
Valid until
{{validUntil}}
", @@ -4233,7 +4233,7 @@ } }, "digitalFacilityRecord": { - "context": ["https://vocabulary.uncefact.org/untp/dfr/0.5.0/"], + "context": ["https://test.uncefact.org/vocabulary/untp/dfr/0.5.0/"], "renderTemplate": [ { "template": " Digital Facility Record
FACILITY RECORD

{{credentialSubject.name}}

{{credentialSubject.description}}

Country
{{credentialSubject.countryOfOperation}}
Address
{{!-- TODO 1: plain text --}} {{!--
{{credentialSubject.address.streetAddress}} {{credentialSubject.address.addressLocality}}, {{credentialSubject.address.postalCode}}
--}} {{!-- TODO 2: confirm --}} {{!-- {{credentialSubject.address.streetAddress}} --}} {{!-- TODO 3: confirm --}} {{credentialSubject.address.streetAddress}} {{credentialSubject.address.addressLocality}}, {{credentialSubject.address.postalCode}}
Processes
{{#each credentialSubject.processCategory}} {{name}} {{/each}}
Geolocation
{{!-- TODO: confirm --}}
Show on map
Declarations
{{#each credentialSubject.conformityClaim}}
Conformance:
{{#if conformance}}Yes{{else}}No{{/if}}
Assessed: {{assessmentDate}}
{{conformityEvidence.linkName}}

{{referenceRegulation.name}} administered in {{referenceRegulation.jurisdictionCountry}} by {{referenceRegulation.administeredBy.name}}

{{referenceStandard.name}} issued by {{referenceStandard.issuingParty.name}}

{{#each declaredValue}}

{{metricName}} is {{metricValue.value}}{{metricValue.unit}}

Score: {{score}} | Accuracy {{accuracy}}

{{/each}}
Evidence
{{/each}}
Issuing details
Issued by
Valid from
{{validFrom}}
Valid until
{{validUntil}}
", @@ -4896,7 +4896,7 @@ } }, "dpp": { - "context": ["https://vocabulary.uncefact.org/untp/dpp/0.5.0/"], + "context": ["https://test.uncefact.org/vocabulary/untp/dpp/0.5.0/"], "renderTemplate": [ { "template": " Digital Product Passport

PRODUCT PASSPORT

{{credentialSubject.name}}

{{credentialSubject.description}}
{{#each credentialSubject.furtherInformation}} {{linkName}} {{/each}}
{{#if credentialSubject.characteristic}}
Characteristics
{{#each credentialSubject.characteristic}}
{{@key}}

{{this}}

{{/each}}
{{/if}}

Circularity Scorecard

The circularity Scorecard provides a simple high level summary of circularity performance of the product.

{{credentialSubject.circularityScorecard.recyclableContent}}%

Recyclable content

{{credentialSubject.circularityScorecard.recycledContent}}%

Recycled content

{{credentialSubject.circularityScorecard.utilityFactor}}

Utility factor

{{credentialSubject.circularityScorecard.materialCircularityIndicator}}

Material circularity*

*The Material Circularity Indicator provides an overall circularity score which is a function of all three of the earlier measures.

Emissions Scorecard

The Emissions Scorecard gives a clear snapshot of the product's greenhouse gas (GHG) emissions performance, providing a single indicator to assess its overall environmental impact.

{{credentialSubject.emissionsScorecard.carbonFootprint}}{{credentialSubject.emissionsScorecard.declaredUnit}}

Co2Eq

Scope includes

{{credentialSubject.emissionsScorecard.operationalScope}}

Primary sourced ratio*

{{credentialSubject.emissionsScorecard.primarySourcedRatio}}% primary sources

Issue date

{{credentialSubject.emissionsScorecard.reportingStandard.issueDate}}

*

The Primary Sourced Ratio shows the percentage of scope 3 emissions data that is directly collected from actual sources, rather than being based on estimates.

Declarations
{{#each credentialSubject.conformityClaim}}
Conformance:
{{#if conformance}}Yes{{else}}No{{/if}}
Assessed: {{assessmentDate}}
{{conformityEvidence.linkName}}

{{referenceRegulation.name}} administered in {{referenceRegulation.jurisdictionCountry}} by {{referenceRegulation.administeredBy.name}}

{{referenceStandard.name}} issued by {{referenceStandard.issuingParty.name}}

{{#each declaredValue}}

{{metricName}} is {{metricValue.value}}{{metricValue.unit}}

Score: {{score}} | Accuracy {{accuracy}}

{{/each}}
Evidence
{{/each}}
Production
Product category

{{#each credentialSubject.productCategory}}{{name}}{{#unless @last}},{{/unless}} {{/each}}

Date produced

{{credentialSubject.productionDate}}

Country

{{credentialSubject.countryOfProduction}}

Dimensions

Weight: {{credentialSubject.dimensions.weight.value}}{{credentialSubject.dimensions.weight.unit}} Length: {{credentialSubject.dimensions.length.value}}{{credentialSubject.dimensions.length.unit}} Width: {{credentialSubject.dimensions.width.value}}{{credentialSubject.dimensions.width.unit}} Height: {{credentialSubject.dimensions.height.value}}{{credentialSubject.dimensions.height.unit}} Volume: {{credentialSubject.dimensions.volume.value}}{{credentialSubject.dimensions.volume.unit}}

Product composition

A complete list of materials that make up the composition of this product.

{{#each credentialSubject.materialsProvenance}}

{{massFraction}}%

{{massAmount.value}}{{massAmount.unit}} {{name}}

Recycled {{recycledAmount}}%

Hazard {{#if hazardous}}Yes{{else}}No{{/if}}

{{materialSafetyInformation.linkName}}
{{originCountry}}
{{/each}}

History

{{!-- start: Supply chain due diligence report --}}
Supply chain due diligence report
{{!-- end: Supply chain due diligence report --}}

{{credentialSubject.traceabilityInformation.valueChainProcess}}

Verified ratio {{credentialSubject.traceabilityInformation.verifiedRatio}}

{{#each credentialSubject.traceabilityInformation.traceabilityEvent}}
{{linkName}} View
{{/each}}

Passport issued by

Organisation

{{issuer.name}}

Registered ID {{issuer.id}}
Valid from

{{validFrom}}

Valid to

{{validUntil}}

This Digital Product Passport (DPP) is a digital record of the product's sustainability and environmental performance, ensuring transparency and accountability in line with UNTP standards. The DPP can be verified at any time using the QR code or visiting www.untp-certification.org with the passport ID.

PRODUCT PASSPORT
{{credentialSubject.name}}
Batch: {{credentialSubject.batchNumber}}
Serial: {{credentialSubject.serialNumber}}

{{credentialSubject.description}}

{{#each credentialSubject.furtherInformation}}
{{linkName}}
{{/each}}
{{#if credentialSubject.characteristic}}
Characteristics
{{#each credentialSubject.characteristic}}
{{@key}}
{{this}}
{{/each}}
{{/if}}
Circularity Scorecard

The circularity Scorecard provides a simple high level summary of circularity performance of the product.

{{credentialSubject.circularityScorecard.recyclableContent}}%
Recyclable content
{{credentialSubject.circularityScorecard.recycledContent}}%
Recycled content
{{credentialSubject.circularityScorecard.utilityFactor}}
Utility factor
{{credentialSubject.circularityScorecard.materialCircularityIndicator}}
Material circularity*

*The Material Circularity Indicator provides an overall circularity score which is a function of all three of the earlier measures.

Emissions Scorecard

The Emissions Scorecard gives a clear snapshot of the product's greenhouse gas (GHG) emissions performance, providing a single indicator to assess its overall environmental impact.

{{credentialSubject.emissionsScorecard.carbonFootprint}}{{credentialSubject.emissionsScorecard.declaredUnit}}

Co2Eq

Scope includes
{{credentialSubject.emissionsScorecard.operationalScope}}
Primary sourced ratio*
{{credentialSubject.emissionsScorecard.primarySourcedRatio}}% primary sources

The Primary Sourced Ratio shows the percentage of scope 3 emissions data that is directly collected from actual sources, rather than being based on estimates.

Issue date
{{credentialSubject.emissionsScorecard.reportingStandard.issueDate}}
*
Declarations
{{#each credentialSubject.conformityClaim}}
Conformance:
{{#if conformance}}Yes{{else}}No{{/if}}
Assessed: {{assessmentDate}}
{{conformityEvidence.linkName}}

{{referenceRegulation.name}} administered in {{referenceRegulation.jurisdictionCountry}} by {{referenceRegulation.administeredBy.name}}

{{referenceStandard.name}} issued by {{referenceStandard.issuingParty.name}}

{{#each declaredValue}}

{{metricName}} is {{metricValue.value}}{{metricValue.unit}}

Score: {{score}} | Accuracy {{accuracy}}

{{/each}}
Evidence
{{/each}}
Production
Product category
{{#each credentialSubject.productCategory}}{{name}}{{#unless @last}},{{/unless}} {{/each}}
Date produced
{{credentialSubject.productionDate}}
Country
{{credentialSubject.countryOfProduction}}
Dimensions
Weight: {{credentialSubject.dimensions.weight.value}}{{credentialSubject.dimensions.weight.unit}} Length: {{credentialSubject.dimensions.length.value}}{{credentialSubject.dimensions.length.unit}} Width: {{credentialSubject.dimensions.width.value}}{{credentialSubject.dimensions.width.unit}} Height: {{credentialSubject.dimensions.height.value}}{{credentialSubject.dimensions.height.unit}} Volume: {{credentialSubject.dimensions.volume.value}}{{credentialSubject.dimensions.volume.unit}}
Composition

The Product Composition List details the materials and components used in the product, providing transparency on the origin and nature of each element.

{{#each credentialSubject.materialsProvenance}}
{{massFraction}}%
{{massAmount.value}}{{massAmount.unit}} {{name}}
Recycled {{#if recycledAmount}}{{recycledAmount}}{{else}}0{{/if}}%
Hazard {{#if hazardous}}Yes{{else}}No{{/if}}
{{originCountry}}
{{/each}}
History
{{!-- start: Supply chain due diligence report --}}
Supply chain due diligence report
{{!-- end: Supply chain due diligence report --}}

{{credentialSubject.traceabilityInformation.valueChainProcess}}

Verified ratio {{credentialSubject.traceabilityInformation.verifiedRatio}}

{{#each credentialSubject.traceabilityInformation.traceabilityEvent}}
{{linkName}} View
{{/each}}
Passport issued by
Organisation
{{issuer.name}}
Registered ID
Valid from
{{validFrom}}
Valid to
{{validUntil}}

This Digital Product Passport (DPP) is a digital record of the product’s sustainability and environmental performance, ensuring transparency and accountability in line with UNTP standards. The DPP can be verified at any time using the QR code or visiting www.untp-certification.org with the passport ID.

", @@ -5117,7 +5117,7 @@ } }, "traceabilityEvent": { - "context": ["https://vocabulary.uncefact.org/untp/dte/0.5.0/"], + "context": ["https://test.uncefact.org/vocabulary/untp/dte/0.5.0/"], "renderTemplate": [ { "template": "
DIGITAL TRACEABILITY EVENT
{{#each credentialSubject}}
{{processType}}
{{bizStep}} {{eventTime}}
Transformation
Output
{{#each outputEPCList}}
{{name}}
View
{{/each}} {{#each outputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}

Transformed

Input
{{#each inputEPCList}}
{{name}}
View
{{/each}} {{#each inputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Transaction
Source
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Destination
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Object event
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Aggregation
{{parentEPC.name}}
View

Aggregated

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Association
{{parentEPC.name}}
View

Assembled

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{/each}}
Issuing details
Issued by
Valid from
{{validFrom}}
", @@ -5798,7 +5798,7 @@ } }, "dpp": { - "context": ["https://vocabulary.uncefact.org/untp/dpp/0.5.0/"], + "context": ["https://test.uncefact.org/vocabulary/untp/dpp/0.5.0/"], "renderTemplate": [ { "template": " Digital Product Passport

PRODUCT PASSPORT

{{credentialSubject.name}}

{{credentialSubject.description}}
{{#each credentialSubject.furtherInformation}} {{linkName}} {{/each}}
{{#if credentialSubject.characteristic}}
Characteristics
{{#each credentialSubject.characteristic}}
{{@key}}

{{this}}

{{/each}}
{{/if}}

Circularity Scorecard

The circularity Scorecard provides a simple high level summary of circularity performance of the product.

{{credentialSubject.circularityScorecard.recyclableContent}}%

Recyclable content

{{credentialSubject.circularityScorecard.recycledContent}}%

Recycled content

{{credentialSubject.circularityScorecard.utilityFactor}}

Utility factor

{{credentialSubject.circularityScorecard.materialCircularityIndicator}}

Material circularity*

*The Material Circularity Indicator provides an overall circularity score which is a function of all three of the earlier measures.

Emissions Scorecard

The Emissions Scorecard gives a clear snapshot of the product's greenhouse gas (GHG) emissions performance, providing a single indicator to assess its overall environmental impact.

{{credentialSubject.emissionsScorecard.carbonFootprint}}{{credentialSubject.emissionsScorecard.declaredUnit}}

Co2Eq

Scope includes

{{credentialSubject.emissionsScorecard.operationalScope}}

Primary sourced ratio*

{{credentialSubject.emissionsScorecard.primarySourcedRatio}}% primary sources

Issue date

{{credentialSubject.emissionsScorecard.reportingStandard.issueDate}}

*

The Primary Sourced Ratio shows the percentage of scope 3 emissions data that is directly collected from actual sources, rather than being based on estimates.

Declarations
{{#each credentialSubject.conformityClaim}}
Conformance:
{{#if conformance}}Yes{{else}}No{{/if}}
Assessed: {{assessmentDate}}
{{conformityEvidence.linkName}}

{{referenceRegulation.name}} administered in {{referenceRegulation.jurisdictionCountry}} by {{referenceRegulation.administeredBy.name}}

{{referenceStandard.name}} issued by {{referenceStandard.issuingParty.name}}

{{#each declaredValue}}

{{metricName}} is {{metricValue.value}}{{metricValue.unit}}

Score: {{score}} | Accuracy {{accuracy}}

{{/each}}
Evidence
{{/each}}
Production
Product category

{{#each credentialSubject.productCategory}}{{name}}{{#unless @last}},{{/unless}} {{/each}}

Date produced

{{credentialSubject.productionDate}}

Country

{{credentialSubject.countryOfProduction}}

Dimensions

Weight: {{credentialSubject.dimensions.weight.value}}{{credentialSubject.dimensions.weight.unit}} Length: {{credentialSubject.dimensions.length.value}}{{credentialSubject.dimensions.length.unit}} Width: {{credentialSubject.dimensions.width.value}}{{credentialSubject.dimensions.width.unit}} Height: {{credentialSubject.dimensions.height.value}}{{credentialSubject.dimensions.height.unit}} Volume: {{credentialSubject.dimensions.volume.value}}{{credentialSubject.dimensions.volume.unit}}

Product composition

A complete list of materials that make up the composition of this product.

{{#each credentialSubject.materialsProvenance}}

{{massFraction}}%

{{massAmount.value}}{{massAmount.unit}} {{name}}

Recycled {{recycledAmount}}%

Hazard {{#if hazardous}}Yes{{else}}No{{/if}}

{{materialSafetyInformation.linkName}}
{{originCountry}}
{{/each}}

History

{{!-- start: Supply chain due diligence report --}}
Supply chain due diligence report
{{!-- end: Supply chain due diligence report --}}

{{credentialSubject.traceabilityInformation.valueChainProcess}}

Verified ratio {{credentialSubject.traceabilityInformation.verifiedRatio}}

{{#each credentialSubject.traceabilityInformation.traceabilityEvent}}
{{linkName}} View
{{/each}}

Passport issued by

Organisation

{{issuer.name}}

Registered ID {{issuer.id}}
Valid from

{{validFrom}}

Valid to

{{validUntil}}

This Digital Product Passport (DPP) is a digital record of the product's sustainability and environmental performance, ensuring transparency and accountability in line with UNTP standards. The DPP can be verified at any time using the QR code or visiting www.untp-certification.org with the passport ID.

PRODUCT PASSPORT
{{credentialSubject.name}}
Batch: {{credentialSubject.batchNumber}}
Serial: {{credentialSubject.serialNumber}}

{{credentialSubject.description}}

{{#each credentialSubject.furtherInformation}}
{{linkName}}
{{/each}}
{{#if credentialSubject.characteristic}}
Characteristics
{{#each credentialSubject.characteristic}}
{{@key}}
{{this}}
{{/each}}
{{/if}}
Circularity Scorecard

The circularity Scorecard provides a simple high level summary of circularity performance of the product.

{{credentialSubject.circularityScorecard.recyclableContent}}%
Recyclable content
{{credentialSubject.circularityScorecard.recycledContent}}%
Recycled content
{{credentialSubject.circularityScorecard.utilityFactor}}
Utility factor
{{credentialSubject.circularityScorecard.materialCircularityIndicator}}
Material circularity*

*The Material Circularity Indicator provides an overall circularity score which is a function of all three of the earlier measures.

Emissions Scorecard

The Emissions Scorecard gives a clear snapshot of the product's greenhouse gas (GHG) emissions performance, providing a single indicator to assess its overall environmental impact.

{{credentialSubject.emissionsScorecard.carbonFootprint}}{{credentialSubject.emissionsScorecard.declaredUnit}}

Co2Eq

Scope includes
{{credentialSubject.emissionsScorecard.operationalScope}}
Primary sourced ratio*
{{credentialSubject.emissionsScorecard.primarySourcedRatio}}% primary sources

The Primary Sourced Ratio shows the percentage of scope 3 emissions data that is directly collected from actual sources, rather than being based on estimates.

Issue date
{{credentialSubject.emissionsScorecard.reportingStandard.issueDate}}
*
Declarations
{{#each credentialSubject.conformityClaim}}
Conformance:
{{#if conformance}}Yes{{else}}No{{/if}}
Assessed: {{assessmentDate}}
{{conformityEvidence.linkName}}

{{referenceRegulation.name}} administered in {{referenceRegulation.jurisdictionCountry}} by {{referenceRegulation.administeredBy.name}}

{{referenceStandard.name}} issued by {{referenceStandard.issuingParty.name}}

{{#each declaredValue}}

{{metricName}} is {{metricValue.value}}{{metricValue.unit}}

Score: {{score}} | Accuracy {{accuracy}}

{{/each}}
Evidence
{{/each}}
Production
Product category
{{#each credentialSubject.productCategory}}{{name}}{{#unless @last}},{{/unless}} {{/each}}
Date produced
{{credentialSubject.productionDate}}
Country
{{credentialSubject.countryOfProduction}}
Dimensions
Weight: {{credentialSubject.dimensions.weight.value}}{{credentialSubject.dimensions.weight.unit}} Length: {{credentialSubject.dimensions.length.value}}{{credentialSubject.dimensions.length.unit}} Width: {{credentialSubject.dimensions.width.value}}{{credentialSubject.dimensions.width.unit}} Height: {{credentialSubject.dimensions.height.value}}{{credentialSubject.dimensions.height.unit}} Volume: {{credentialSubject.dimensions.volume.value}}{{credentialSubject.dimensions.volume.unit}}
Composition

The Product Composition List details the materials and components used in the product, providing transparency on the origin and nature of each element.

{{#each credentialSubject.materialsProvenance}}
{{massFraction}}%
{{massAmount.value}}{{massAmount.unit}} {{name}}
Recycled {{#if recycledAmount}}{{recycledAmount}}{{else}}0{{/if}}%
Hazard {{#if hazardous}}Yes{{else}}No{{/if}}
{{originCountry}}
{{/each}}
History
{{!-- start: Supply chain due diligence report --}}
Supply chain due diligence report
{{!-- end: Supply chain due diligence report --}}

{{credentialSubject.traceabilityInformation.valueChainProcess}}

Verified ratio {{credentialSubject.traceabilityInformation.verifiedRatio}}

{{#each credentialSubject.traceabilityInformation.traceabilityEvent}}
{{linkName}} View
{{/each}}
Passport issued by
Organisation
{{issuer.name}}
Registered ID
Valid from
{{validFrom}}
Valid to
{{validUntil}}

This Digital Product Passport (DPP) is a digital record of the product’s sustainability and environmental performance, ensuring transparency and accountability in line with UNTP standards. The DPP can be verified at any time using the QR code or visiting www.untp-certification.org with the passport ID.

", @@ -6019,7 +6019,7 @@ } }, "traceabilityEvent": { - "context": ["https://vocabulary.uncefact.org/untp/dte/0.5.0/"], + "context": ["https://test.uncefact.org/vocabulary/untp/dte/0.5.0/"], "renderTemplate": [ { "template": "
DIGITAL TRACEABILITY EVENT
{{#each credentialSubject}}
{{processType}}
{{bizStep}} {{eventTime}}
Transformation
Output
{{#each outputEPCList}}
{{name}}
View
{{/each}} {{#each outputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}

Transformed

Input
{{#each inputEPCList}}
{{name}}
View
{{/each}} {{#each inputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Transaction
Source
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Destination
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Object event
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Aggregation
{{parentEPC.name}}
View

Aggregated

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Association
{{parentEPC.name}}
View

Assembled

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{/each}}
Issuing details
Issued by
Valid from
{{validFrom}}
", @@ -6050,7 +6050,10 @@ } }, "identifierKeyPath": "/0/id", - "localStorageParams": { "storageKey": "fumigation_and_freight_forwarding_facility_dpps", "keyPath": "/0/epcList/index/name" } + "localStorageParams": { + "storageKey": "fumigation_and_freight_forwarding_facility_dpps", + "keyPath": "/0/epcList/index/name" + } } ] }, @@ -6700,7 +6703,7 @@ } }, "dpp": { - "context": ["https://vocabulary.uncefact.org/untp/dpp/0.5.0/"], + "context": ["https://test.uncefact.org/vocabulary/untp/dpp/0.5.0/"], "renderTemplate": [ { "template": " Digital Product Passport

PRODUCT PASSPORT

{{credentialSubject.name}}

{{credentialSubject.description}}
{{#each credentialSubject.furtherInformation}} {{linkName}} {{/each}}
{{#if credentialSubject.characteristic}}
Characteristics
{{#each credentialSubject.characteristic}}
{{@key}}

{{this}}

{{/each}}
{{/if}}

Circularity Scorecard

The circularity Scorecard provides a simple high level summary of circularity performance of the product.

{{credentialSubject.circularityScorecard.recyclableContent}}%

Recyclable content

{{credentialSubject.circularityScorecard.recycledContent}}%

Recycled content

{{credentialSubject.circularityScorecard.utilityFactor}}

Utility factor

{{credentialSubject.circularityScorecard.materialCircularityIndicator}}

Material circularity*

*The Material Circularity Indicator provides an overall circularity score which is a function of all three of the earlier measures.

Emissions Scorecard

The Emissions Scorecard gives a clear snapshot of the product's greenhouse gas (GHG) emissions performance, providing a single indicator to assess its overall environmental impact.

{{credentialSubject.emissionsScorecard.carbonFootprint}}{{credentialSubject.emissionsScorecard.declaredUnit}}

Co2Eq

Scope includes

{{credentialSubject.emissionsScorecard.operationalScope}}

Primary sourced ratio*

{{credentialSubject.emissionsScorecard.primarySourcedRatio}}% primary sources

Issue date

{{credentialSubject.emissionsScorecard.reportingStandard.issueDate}}

*

The Primary Sourced Ratio shows the percentage of scope 3 emissions data that is directly collected from actual sources, rather than being based on estimates.

Declarations
{{#each credentialSubject.conformityClaim}}
Conformance:
{{#if conformance}}Yes{{else}}No{{/if}}
Assessed: {{assessmentDate}}
{{conformityEvidence.linkName}}

{{referenceRegulation.name}} administered in {{referenceRegulation.jurisdictionCountry}} by {{referenceRegulation.administeredBy.name}}

{{referenceStandard.name}} issued by {{referenceStandard.issuingParty.name}}

{{#each declaredValue}}

{{metricName}} is {{metricValue.value}}{{metricValue.unit}}

Score: {{score}} | Accuracy {{accuracy}}

{{/each}}
Evidence
{{/each}}
Production
Product category

{{#each credentialSubject.productCategory}}{{name}}{{#unless @last}},{{/unless}} {{/each}}

Date produced

{{credentialSubject.productionDate}}

Country

{{credentialSubject.countryOfProduction}}

Dimensions

Weight: {{credentialSubject.dimensions.weight.value}}{{credentialSubject.dimensions.weight.unit}} Length: {{credentialSubject.dimensions.length.value}}{{credentialSubject.dimensions.length.unit}} Width: {{credentialSubject.dimensions.width.value}}{{credentialSubject.dimensions.width.unit}} Height: {{credentialSubject.dimensions.height.value}}{{credentialSubject.dimensions.height.unit}} Volume: {{credentialSubject.dimensions.volume.value}}{{credentialSubject.dimensions.volume.unit}}

Product composition

A complete list of materials that make up the composition of this product.

{{#each credentialSubject.materialsProvenance}}

{{massFraction}}%

{{massAmount.value}}{{massAmount.unit}} {{name}}

Recycled {{recycledAmount}}%

Hazard {{#if hazardous}}Yes{{else}}No{{/if}}

{{materialSafetyInformation.linkName}}
{{originCountry}}
{{/each}}

History

{{!-- start: Supply chain due diligence report --}}
Supply chain due diligence report
{{!-- end: Supply chain due diligence report --}}

{{credentialSubject.traceabilityInformation.valueChainProcess}}

Verified ratio {{credentialSubject.traceabilityInformation.verifiedRatio}}

{{#each credentialSubject.traceabilityInformation.traceabilityEvent}}
{{linkName}} View
{{/each}}

Passport issued by

Organisation

{{issuer.name}}

Registered ID {{issuer.id}}
Valid from

{{validFrom}}

Valid to

{{validUntil}}

This Digital Product Passport (DPP) is a digital record of the product's sustainability and environmental performance, ensuring transparency and accountability in line with UNTP standards. The DPP can be verified at any time using the QR code or visiting www.untp-certification.org with the passport ID.

PRODUCT PASSPORT
{{credentialSubject.name}}
Batch: {{credentialSubject.batchNumber}}
Serial: {{credentialSubject.serialNumber}}

{{credentialSubject.description}}

{{#each credentialSubject.furtherInformation}}
{{linkName}}
{{/each}}
{{#if credentialSubject.characteristic}}
Characteristics
{{#each credentialSubject.characteristic}}
{{@key}}
{{this}}
{{/each}}
{{/if}}
Circularity Scorecard

The circularity Scorecard provides a simple high level summary of circularity performance of the product.

{{credentialSubject.circularityScorecard.recyclableContent}}%
Recyclable content
{{credentialSubject.circularityScorecard.recycledContent}}%
Recycled content
{{credentialSubject.circularityScorecard.utilityFactor}}
Utility factor
{{credentialSubject.circularityScorecard.materialCircularityIndicator}}
Material circularity*

*The Material Circularity Indicator provides an overall circularity score which is a function of all three of the earlier measures.

Emissions Scorecard

The Emissions Scorecard gives a clear snapshot of the product's greenhouse gas (GHG) emissions performance, providing a single indicator to assess its overall environmental impact.

{{credentialSubject.emissionsScorecard.carbonFootprint}}{{credentialSubject.emissionsScorecard.declaredUnit}}

Co2Eq

Scope includes
{{credentialSubject.emissionsScorecard.operationalScope}}
Primary sourced ratio*
{{credentialSubject.emissionsScorecard.primarySourcedRatio}}% primary sources

The Primary Sourced Ratio shows the percentage of scope 3 emissions data that is directly collected from actual sources, rather than being based on estimates.

Issue date
{{credentialSubject.emissionsScorecard.reportingStandard.issueDate}}
*
Declarations
{{#each credentialSubject.conformityClaim}}
Conformance:
{{#if conformance}}Yes{{else}}No{{/if}}
Assessed: {{assessmentDate}}
{{conformityEvidence.linkName}}

{{referenceRegulation.name}} administered in {{referenceRegulation.jurisdictionCountry}} by {{referenceRegulation.administeredBy.name}}

{{referenceStandard.name}} issued by {{referenceStandard.issuingParty.name}}

{{#each declaredValue}}

{{metricName}} is {{metricValue.value}}{{metricValue.unit}}

Score: {{score}} | Accuracy {{accuracy}}

{{/each}}
Evidence
{{/each}}
Production
Product category
{{#each credentialSubject.productCategory}}{{name}}{{#unless @last}},{{/unless}} {{/each}}
Date produced
{{credentialSubject.productionDate}}
Country
{{credentialSubject.countryOfProduction}}
Dimensions
Weight: {{credentialSubject.dimensions.weight.value}}{{credentialSubject.dimensions.weight.unit}} Length: {{credentialSubject.dimensions.length.value}}{{credentialSubject.dimensions.length.unit}} Width: {{credentialSubject.dimensions.width.value}}{{credentialSubject.dimensions.width.unit}} Height: {{credentialSubject.dimensions.height.value}}{{credentialSubject.dimensions.height.unit}} Volume: {{credentialSubject.dimensions.volume.value}}{{credentialSubject.dimensions.volume.unit}}
Composition

The Product Composition List details the materials and components used in the product, providing transparency on the origin and nature of each element.

{{#each credentialSubject.materialsProvenance}}
{{massFraction}}%
{{massAmount.value}}{{massAmount.unit}} {{name}}
Recycled {{#if recycledAmount}}{{recycledAmount}}{{else}}0{{/if}}%
Hazard {{#if hazardous}}Yes{{else}}No{{/if}}
{{originCountry}}
{{/each}}
History
{{!-- start: Supply chain due diligence report --}}
Supply chain due diligence report
{{!-- end: Supply chain due diligence report --}}

{{credentialSubject.traceabilityInformation.valueChainProcess}}

Verified ratio {{credentialSubject.traceabilityInformation.verifiedRatio}}

{{#each credentialSubject.traceabilityInformation.traceabilityEvent}}
{{linkName}} View
{{/each}}
Passport issued by
Organisation
{{issuer.name}}
Registered ID
Valid from
{{validFrom}}
Valid to
{{validUntil}}

This Digital Product Passport (DPP) is a digital record of the product’s sustainability and environmental performance, ensuring transparency and accountability in line with UNTP standards. The DPP can be verified at any time using the QR code or visiting www.untp-certification.org with the passport ID.

", @@ -6921,7 +6924,7 @@ } }, "traceabilityEvent": { - "context": ["https://vocabulary.uncefact.org/untp/dte/0.5.0/"], + "context": ["https://test.uncefact.org/vocabulary/untp/dte/0.5.0/"], "renderTemplate": [ { "template": "
DIGITAL TRACEABILITY EVENT
{{#each credentialSubject}}
{{processType}}
{{bizStep}} {{eventTime}}
Transformation
Output
{{#each outputEPCList}}
{{name}}
View
{{/each}} {{#each outputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}

Transformed

Input
{{#each inputEPCList}}
{{name}}
View
{{/each}} {{#each inputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Transaction
Source
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Destination
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Object event
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Aggregation
{{parentEPC.name}}
View

Aggregated

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Association
{{parentEPC.name}}
View

Assembled

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{/each}}
Issuing details
Issued by
Valid from
{{validFrom}}
", @@ -6952,7 +6955,10 @@ } }, "identifierKeyPath": "/0/id", - "localStorageParams": { "storageKey": "airport_terminal_facility_dpps", "keyPath": "/0/epcList/index/name" } + "localStorageParams": { + "storageKey": "airport_terminal_facility_dpps", + "keyPath": "/0/epcList/index/name" + } } ] }, diff --git a/packages/mock-app/src/constants/app-config.json b/packages/mock-app/src/constants/app-config.json index 99c680cd..1273cdae 100644 --- a/packages/mock-app/src/constants/app-config.json +++ b/packages/mock-app/src/constants/app-config.json @@ -687,7 +687,7 @@ } }, "dpp": { - "context": ["https://vocabulary.uncefact.org/untp/dpp/0.5.0/"], + "context": ["https://test.uncefact.org/vocabulary/untp/dpp/0.5.0/"], "renderTemplate": [ { "template": " Digital Product Passport

PRODUCT PASSPORT

{{credentialSubject.name}}

{{credentialSubject.description}}
{{#each credentialSubject.furtherInformation}} {{linkName}} {{/each}}
{{#if credentialSubject.characteristic}}
Characteristics
{{#each credentialSubject.characteristic}}
{{@key}}

{{this}}

{{/each}}
{{/if}}

Circularity Scorecard

The circularity Scorecard provides a simple high level summary of circularity performance of the product.

{{credentialSubject.circularityScorecard.recyclableContent}}%

Recyclable content

{{credentialSubject.circularityScorecard.recycledContent}}%

Recycled content

{{credentialSubject.circularityScorecard.utilityFactor}}

Utility factor

{{credentialSubject.circularityScorecard.materialCircularityIndicator}}

Material circularity*

*The Material Circularity Indicator provides an overall circularity score which is a function of all three of the earlier measures.

Emissions Scorecard

The Emissions Scorecard gives a clear snapshot of the product's greenhouse gas (GHG) emissions performance, providing a single indicator to assess its overall environmental impact.

{{credentialSubject.emissionsScorecard.carbonFootprint}}{{credentialSubject.emissionsScorecard.declaredUnit}}

Co2Eq

Scope includes

{{credentialSubject.emissionsScorecard.operationalScope}}

Primary sourced ratio*

{{credentialSubject.emissionsScorecard.primarySourcedRatio}}% primary sources

Issue date

{{credentialSubject.emissionsScorecard.reportingStandard.issueDate}}

*

The Primary Sourced Ratio shows the percentage of scope 3 emissions data that is directly collected from actual sources, rather than being based on estimates.

Declarations
{{#each credentialSubject.conformityClaim}}
Conformance:
{{#if conformance}}Yes{{else}}No{{/if}}
Assessed: {{assessmentDate}}
{{conformityEvidence.linkName}}

{{referenceRegulation.name}} administered in {{referenceRegulation.jurisdictionCountry}} by {{referenceRegulation.administeredBy.name}}

{{referenceStandard.name}} issued by {{referenceStandard.issuingParty.name}}

{{#each declaredValue}}

{{metricName}} is {{metricValue.value}}{{metricValue.unit}}

Score: {{score}} | Accuracy {{accuracy}}

{{/each}}
Evidence
{{/each}}
Production
Product category

{{#each credentialSubject.productCategory}}{{name}}{{#unless @last}},{{/unless}} {{/each}}

Date produced

{{credentialSubject.productionDate}}

Country

{{credentialSubject.countryOfProduction}}

Dimensions

Weight: {{credentialSubject.dimensions.weight.value}}{{credentialSubject.dimensions.weight.unit}} Length: {{credentialSubject.dimensions.length.value}}{{credentialSubject.dimensions.length.unit}} Width: {{credentialSubject.dimensions.width.value}}{{credentialSubject.dimensions.width.unit}} Height: {{credentialSubject.dimensions.height.value}}{{credentialSubject.dimensions.height.unit}} Volume: {{credentialSubject.dimensions.volume.value}}{{credentialSubject.dimensions.volume.unit}}

Product composition

A complete list of materials that make up the composition of this product.

{{#each credentialSubject.materialsProvenance}}

{{massFraction}}%

{{massAmount.value}}{{massAmount.unit}} {{name}}

Recycled {{recycledAmount}}%

Hazard {{#if hazardous}}Yes{{else}}No{{/if}}

{{materialSafetyInformation.linkName}}
{{originCountry}}
{{/each}}

History

{{!-- start: Supply chain due diligence report --}}
Supply chain due diligence report
{{!-- end: Supply chain due diligence report --}}

{{credentialSubject.traceabilityInformation.valueChainProcess}}

Verified ratio {{credentialSubject.traceabilityInformation.verifiedRatio}}

{{#each credentialSubject.traceabilityInformation.traceabilityEvent}}
{{linkName}} View
{{/each}}

Passport issued by

Organisation

{{issuer.name}}

Registered ID {{issuer.id}}
Valid from

{{validFrom}}

Valid to

{{validUntil}}

This Digital Product Passport (DPP) is a digital record of the product's sustainability and environmental performance, ensuring transparency and accountability in line with UNTP standards. The DPP can be verified at any time using the QR code or visiting www.untp-certification.org with the passport ID.

PRODUCT PASSPORT
{{credentialSubject.name}}
Batch: {{credentialSubject.batchNumber}}
Serial: {{credentialSubject.serialNumber}}

{{credentialSubject.description}}

{{#each credentialSubject.furtherInformation}}
{{linkName}}
{{/each}}
{{#if credentialSubject.characteristic}}
Characteristics
{{#each credentialSubject.characteristic}}
{{@key}}
{{this}}
{{/each}}
{{/if}}
Circularity Scorecard

The circularity Scorecard provides a simple high level summary of circularity performance of the product.

{{credentialSubject.circularityScorecard.recyclableContent}}%
Recyclable content
{{credentialSubject.circularityScorecard.recycledContent}}%
Recycled content
{{credentialSubject.circularityScorecard.utilityFactor}}
Utility factor
{{credentialSubject.circularityScorecard.materialCircularityIndicator}}
Material circularity*

*The Material Circularity Indicator provides an overall circularity score which is a function of all three of the earlier measures.

Emissions Scorecard

The Emissions Scorecard gives a clear snapshot of the product's greenhouse gas (GHG) emissions performance, providing a single indicator to assess its overall environmental impact.

{{credentialSubject.emissionsScorecard.carbonFootprint}}{{credentialSubject.emissionsScorecard.declaredUnit}}

Co2Eq

Scope includes
{{credentialSubject.emissionsScorecard.operationalScope}}
Primary sourced ratio*
{{credentialSubject.emissionsScorecard.primarySourcedRatio}}% primary sources

The Primary Sourced Ratio shows the percentage of scope 3 emissions data that is directly collected from actual sources, rather than being based on estimates.

Issue date
{{credentialSubject.emissionsScorecard.reportingStandard.issueDate}}
*
Declarations
{{#each credentialSubject.conformityClaim}}
Conformance:
{{#if conformance}}Yes{{else}}No{{/if}}
Assessed: {{assessmentDate}}
{{conformityEvidence.linkName}}

{{referenceRegulation.name}} administered in {{referenceRegulation.jurisdictionCountry}} by {{referenceRegulation.administeredBy.name}}

{{referenceStandard.name}} issued by {{referenceStandard.issuingParty.name}}

{{#each declaredValue}}

{{metricName}} is {{metricValue.value}}{{metricValue.unit}}

Score: {{score}} | Accuracy {{accuracy}}

{{/each}}
Evidence
{{/each}}
Production
Product category
{{#each credentialSubject.productCategory}}{{name}}{{#unless @last}},{{/unless}} {{/each}}
Date produced
{{credentialSubject.productionDate}}
Country
{{credentialSubject.countryOfProduction}}
Dimensions
Weight: {{credentialSubject.dimensions.weight.value}}{{credentialSubject.dimensions.weight.unit}} Length: {{credentialSubject.dimensions.length.value}}{{credentialSubject.dimensions.length.unit}} Width: {{credentialSubject.dimensions.width.value}}{{credentialSubject.dimensions.width.unit}} Height: {{credentialSubject.dimensions.height.value}}{{credentialSubject.dimensions.height.unit}} Volume: {{credentialSubject.dimensions.volume.value}}{{credentialSubject.dimensions.volume.unit}}
Composition

The Product Composition List details the materials and components used in the product, providing transparency on the origin and nature of each element.

{{#each credentialSubject.materialsProvenance}}
{{massFraction}}%
{{massAmount.value}}{{massAmount.unit}} {{name}}
Recycled {{#if recycledAmount}}{{recycledAmount}}{{else}}0{{/if}}%
Hazard {{#if hazardous}}Yes{{else}}No{{/if}}
{{originCountry}}
{{/each}}
History
{{!-- start: Supply chain due diligence report --}}
Supply chain due diligence report
{{!-- end: Supply chain due diligence report --}}

{{credentialSubject.traceabilityInformation.valueChainProcess}}

Verified ratio {{credentialSubject.traceabilityInformation.verifiedRatio}}

{{#each credentialSubject.traceabilityInformation.traceabilityEvent}}
{{linkName}} View
{{/each}}
Passport issued by
Organisation
{{issuer.name}}
Registered ID
Valid from
{{validFrom}}
Valid to
{{validUntil}}

This Digital Product Passport (DPP) is a digital record of the product’s sustainability and environmental performance, ensuring transparency and accountability in line with UNTP standards. The DPP can be verified at any time using the QR code or visiting www.untp-certification.org with the passport ID.

", @@ -1401,7 +1401,7 @@ } }, "dpp": { - "context": ["https://vocabulary.uncefact.org/untp/dpp/0.5.0/"], + "context": ["https://test.uncefact.org/vocabulary/untp/dpp/0.5.0/"], "renderTemplate": [ { "template": " Digital Product Passport

PRODUCT PASSPORT

{{credentialSubject.name}}

{{credentialSubject.description}}
{{#each credentialSubject.furtherInformation}} {{linkName}} {{/each}}
{{#if credentialSubject.characteristic}}
Characteristics
{{#each credentialSubject.characteristic}}
{{@key}}

{{this}}

{{/each}}
{{/if}}

Circularity Scorecard

The circularity Scorecard provides a simple high level summary of circularity performance of the product.

{{credentialSubject.circularityScorecard.recyclableContent}}%

Recyclable content

{{credentialSubject.circularityScorecard.recycledContent}}%

Recycled content

{{credentialSubject.circularityScorecard.utilityFactor}}

Utility factor

{{credentialSubject.circularityScorecard.materialCircularityIndicator}}

Material circularity*

*The Material Circularity Indicator provides an overall circularity score which is a function of all three of the earlier measures.

Emissions Scorecard

The Emissions Scorecard gives a clear snapshot of the product's greenhouse gas (GHG) emissions performance, providing a single indicator to assess its overall environmental impact.

{{credentialSubject.emissionsScorecard.carbonFootprint}}{{credentialSubject.emissionsScorecard.declaredUnit}}

Co2Eq

Scope includes

{{credentialSubject.emissionsScorecard.operationalScope}}

Primary sourced ratio*

{{credentialSubject.emissionsScorecard.primarySourcedRatio}}% primary sources

Issue date

{{credentialSubject.emissionsScorecard.reportingStandard.issueDate}}

*

The Primary Sourced Ratio shows the percentage of scope 3 emissions data that is directly collected from actual sources, rather than being based on estimates.

Declarations
{{#each credentialSubject.conformityClaim}}
Conformance:
{{#if conformance}}Yes{{else}}No{{/if}}
Assessed: {{assessmentDate}}
{{conformityEvidence.linkName}}

{{referenceRegulation.name}} administered in {{referenceRegulation.jurisdictionCountry}} by {{referenceRegulation.administeredBy.name}}

{{referenceStandard.name}} issued by {{referenceStandard.issuingParty.name}}

{{#each declaredValue}}

{{metricName}} is {{metricValue.value}}{{metricValue.unit}}

Score: {{score}} | Accuracy {{accuracy}}

{{/each}}
Evidence
{{/each}}
Production
Product category

{{#each credentialSubject.productCategory}}{{name}}{{#unless @last}},{{/unless}} {{/each}}

Date produced

{{credentialSubject.productionDate}}

Country

{{credentialSubject.countryOfProduction}}

Dimensions

Weight: {{credentialSubject.dimensions.weight.value}}{{credentialSubject.dimensions.weight.unit}} Length: {{credentialSubject.dimensions.length.value}}{{credentialSubject.dimensions.length.unit}} Width: {{credentialSubject.dimensions.width.value}}{{credentialSubject.dimensions.width.unit}} Height: {{credentialSubject.dimensions.height.value}}{{credentialSubject.dimensions.height.unit}} Volume: {{credentialSubject.dimensions.volume.value}}{{credentialSubject.dimensions.volume.unit}}

Product composition

A complete list of materials that make up the composition of this product.

{{#each credentialSubject.materialsProvenance}}

{{massFraction}}%

{{massAmount.value}}{{massAmount.unit}} {{name}}

Recycled {{recycledAmount}}%

Hazard {{#if hazardous}}Yes{{else}}No{{/if}}

{{materialSafetyInformation.linkName}}
{{originCountry}}
{{/each}}

History

{{!-- start: Supply chain due diligence report --}}
Supply chain due diligence report
{{!-- end: Supply chain due diligence report --}}

{{credentialSubject.traceabilityInformation.valueChainProcess}}

Verified ratio {{credentialSubject.traceabilityInformation.verifiedRatio}}

{{#each credentialSubject.traceabilityInformation.traceabilityEvent}}
{{linkName}} View
{{/each}}

Passport issued by

Organisation

{{issuer.name}}

Registered ID {{issuer.id}}
Valid from

{{validFrom}}

Valid to

{{validUntil}}

This Digital Product Passport (DPP) is a digital record of the product's sustainability and environmental performance, ensuring transparency and accountability in line with UNTP standards. The DPP can be verified at any time using the QR code or visiting www.untp-certification.org with the passport ID.

PRODUCT PASSPORT
{{credentialSubject.name}}
Batch: {{credentialSubject.batchNumber}}
Serial: {{credentialSubject.serialNumber}}

{{credentialSubject.description}}

{{#each credentialSubject.furtherInformation}}
{{linkName}}
{{/each}}
{{#if credentialSubject.characteristic}}
Characteristics
{{#each credentialSubject.characteristic}}
{{@key}}
{{this}}
{{/each}}
{{/if}}
Circularity Scorecard

The circularity Scorecard provides a simple high level summary of circularity performance of the product.

{{credentialSubject.circularityScorecard.recyclableContent}}%
Recyclable content
{{credentialSubject.circularityScorecard.recycledContent}}%
Recycled content
{{credentialSubject.circularityScorecard.utilityFactor}}
Utility factor
{{credentialSubject.circularityScorecard.materialCircularityIndicator}}
Material circularity*

*The Material Circularity Indicator provides an overall circularity score which is a function of all three of the earlier measures.

Emissions Scorecard

The Emissions Scorecard gives a clear snapshot of the product's greenhouse gas (GHG) emissions performance, providing a single indicator to assess its overall environmental impact.

{{credentialSubject.emissionsScorecard.carbonFootprint}}{{credentialSubject.emissionsScorecard.declaredUnit}}

Co2Eq

Scope includes
{{credentialSubject.emissionsScorecard.operationalScope}}
Primary sourced ratio*
{{credentialSubject.emissionsScorecard.primarySourcedRatio}}% primary sources

The Primary Sourced Ratio shows the percentage of scope 3 emissions data that is directly collected from actual sources, rather than being based on estimates.

Issue date
{{credentialSubject.emissionsScorecard.reportingStandard.issueDate}}
*
Declarations
{{#each credentialSubject.conformityClaim}}
Conformance:
{{#if conformance}}Yes{{else}}No{{/if}}
Assessed: {{assessmentDate}}
{{conformityEvidence.linkName}}

{{referenceRegulation.name}} administered in {{referenceRegulation.jurisdictionCountry}} by {{referenceRegulation.administeredBy.name}}

{{referenceStandard.name}} issued by {{referenceStandard.issuingParty.name}}

{{#each declaredValue}}

{{metricName}} is {{metricValue.value}}{{metricValue.unit}}

Score: {{score}} | Accuracy {{accuracy}}

{{/each}}
Evidence
{{/each}}
Production
Product category
{{#each credentialSubject.productCategory}}{{name}}{{#unless @last}},{{/unless}} {{/each}}
Date produced
{{credentialSubject.productionDate}}
Country
{{credentialSubject.countryOfProduction}}
Dimensions
Weight: {{credentialSubject.dimensions.weight.value}}{{credentialSubject.dimensions.weight.unit}} Length: {{credentialSubject.dimensions.length.value}}{{credentialSubject.dimensions.length.unit}} Width: {{credentialSubject.dimensions.width.value}}{{credentialSubject.dimensions.width.unit}} Height: {{credentialSubject.dimensions.height.value}}{{credentialSubject.dimensions.height.unit}} Volume: {{credentialSubject.dimensions.volume.value}}{{credentialSubject.dimensions.volume.unit}}
Composition

The Product Composition List details the materials and components used in the product, providing transparency on the origin and nature of each element.

{{#each credentialSubject.materialsProvenance}}
{{massFraction}}%
{{massAmount.value}}{{massAmount.unit}} {{name}}
Recycled {{#if recycledAmount}}{{recycledAmount}}{{else}}0{{/if}}%
Hazard {{#if hazardous}}Yes{{else}}No{{/if}}
{{originCountry}}
{{/each}}
History
{{!-- start: Supply chain due diligence report --}}
Supply chain due diligence report
{{!-- end: Supply chain due diligence report --}}

{{credentialSubject.traceabilityInformation.valueChainProcess}}

Verified ratio {{credentialSubject.traceabilityInformation.verifiedRatio}}

{{#each credentialSubject.traceabilityInformation.traceabilityEvent}}
{{linkName}} View
{{/each}}
Passport issued by
Organisation
{{issuer.name}}
Registered ID
Valid from
{{validFrom}}
Valid to
{{validUntil}}

This Digital Product Passport (DPP) is a digital record of the product’s sustainability and environmental performance, ensuring transparency and accountability in line with UNTP standards. The DPP can be verified at any time using the QR code or visiting www.untp-certification.org with the passport ID.

", @@ -1627,7 +1627,7 @@ } }, "traceabilityEvent": { - "context": ["https://vocabulary.uncefact.org/untp/dte/0.5.0/"], + "context": ["https://test.uncefact.org/vocabulary/untp/dte/0.5.0/"], "renderTemplate": [ { "template": "
DIGITAL TRACEABILITY EVENT
{{#each credentialSubject}}
{{processType}}
{{bizStep}} {{eventTime}}
Transformation
Output
{{#each outputEPCList}}
{{name}}
View
{{/each}} {{#each outputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}

Transformed

Input
{{#each inputEPCList}}
{{name}}
View
{{/each}} {{#each inputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Transaction
Source
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Destination
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Object event
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Aggregation
{{parentEPC.name}}
View

Aggregated

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Association
{{parentEPC.name}}
View

Assembled

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{/each}}
Issuing details
Issued by
Valid from
{{validFrom}}
", @@ -2574,7 +2574,7 @@ } }, "traceabilityEvent": { - "context": ["https://vocabulary.uncefact.org/untp/dte/0.5.0/"], + "context": ["https://test.uncefact.org/vocabulary/untp/dte/0.5.0/"], "renderTemplate": [ { "template": "
DIGITAL TRACEABILITY EVENT
{{#each credentialSubject}}
{{processType}}
{{bizStep}} {{eventTime}}
Transformation
Output
{{#each outputEPCList}}
{{name}}
View
{{/each}} {{#each outputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}

Transformed

Input
{{#each inputEPCList}}
{{name}}
View
{{/each}} {{#each inputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Transaction
Source
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Destination
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Object event
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Aggregation
{{parentEPC.name}}
View

Aggregated

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Association
{{parentEPC.name}}
View

Assembled

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{/each}}
Issuing details
Issued by
Valid from
{{validFrom}}
", @@ -2751,7 +2751,7 @@ } }, "traceabilityEvent": { - "context": ["https://vocabulary.uncefact.org/untp/dte/0.5.0/"], + "context": ["https://test.uncefact.org/vocabulary/untp/dte/0.5.0/"], "renderTemplate": [ { "template": "
DIGITAL TRACEABILITY EVENT
{{#each credentialSubject}}
{{processType}}
{{bizStep}} {{eventTime}}
Transformation
Output
{{#each outputEPCList}}
{{name}}
View
{{/each}} {{#each outputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}

Transformed

Input
{{#each inputEPCList}}
{{name}}
View
{{/each}} {{#each inputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Transaction
Source
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Destination
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Object event
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Aggregation
{{parentEPC.name}}
View

Aggregated

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Association
{{parentEPC.name}}
View

Assembled

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{/each}}
Issuing details
Issued by
Valid from
{{validFrom}}
", @@ -2932,7 +2932,7 @@ } }, "traceabilityEvent": { - "context": ["https://vocabulary.uncefact.org/untp/dte/0.5.0/"], + "context": ["https://test.uncefact.org/vocabulary/untp/dte/0.5.0/"], "renderTemplate": [ { "template": "
DIGITAL TRACEABILITY EVENT
{{#each credentialSubject}}
{{processType}}
{{bizStep}} {{eventTime}}
Transformation
Output
{{#each outputEPCList}}
{{name}}
View
{{/each}} {{#each outputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}

Transformed

Input
{{#each inputEPCList}}
{{name}}
View
{{/each}} {{#each inputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Transaction
Source
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Destination
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Object event
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Aggregation
{{parentEPC.name}}
View

Aggregated

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Association
{{parentEPC.name}}
View

Assembled

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{/each}}
Issuing details
Issued by
Valid from
{{validFrom}}
", @@ -3113,7 +3113,7 @@ } }, "traceabilityEvent": { - "context": ["https://vocabulary.uncefact.org/untp/dte/0.5.0/"], + "context": ["https://test.uncefact.org/vocabulary/untp/dte/0.5.0/"], "renderTemplate": [ { "template": "
DIGITAL TRACEABILITY EVENT
{{#each credentialSubject}}
{{processType}}
{{bizStep}} {{eventTime}}
Transformation
Output
{{#each outputEPCList}}
{{name}}
View
{{/each}} {{#each outputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}

Transformed

Input
{{#each inputEPCList}}
{{name}}
View
{{/each}} {{#each inputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Transaction
Source
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Destination
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Object event
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Aggregation
{{parentEPC.name}}
View

Aggregated

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Association
{{parentEPC.name}}
View

Assembled

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{/each}}
Issuing details
Issued by
Valid from
{{validFrom}}
", @@ -3315,7 +3315,7 @@ } }, "traceabilityEvent": { - "context": ["https://vocabulary.uncefact.org/untp/dte/0.5.0/"], + "context": ["https://test.uncefact.org/vocabulary/untp/dte/0.5.0/"], "renderTemplate": [ { "template": "
DIGITAL TRACEABILITY EVENT
{{#each credentialSubject}}
{{processType}}
{{bizStep}} {{eventTime}}
Transformation
Output
{{#each outputEPCList}}
{{name}}
View
{{/each}} {{#each outputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}

Transformed

Input
{{#each inputEPCList}}
{{name}}
View
{{/each}} {{#each inputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Transaction
Source
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Destination
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Object event
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Aggregation
{{parentEPC.name}}
View

Aggregated

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Association
{{parentEPC.name}}
View

Assembled

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{/each}}
Issuing details
Issued by
Valid from
{{validFrom}}
", @@ -3816,7 +3816,7 @@ } }, "digitalConformityCredential": { - "context": ["https://vocabulary.uncefact.org/untp/dcc/0.5.0/"], + "context": ["https://test.uncefact.org/vocabulary/untp/dcc/0.5.0/"], "renderTemplate": [ { "template": " DigitalConformityCredential
CONFORMITY CREDENTIAL

{{credentialSubject.name}}

{{credentialSubject.description}}

Level of independent assurance:

{{credentialSubject.assessorLevel}}

Type of authority endorsement:

{{credentialSubject.assessmentLevel}}

Type of the attestation credential:

{{credentialSubject.attestationType}}
Assessments

The list of specific assessments made within this conformity attestation.

{{#each credentialSubject.assessment}}

{{conformityTopic}}

Declared values
{{#each declaredValue}}
Name
{{metricName}}
Value
{{metricValue.value}}{{metricValue.unit}}
Accuracy
{{accuracy}}
{{/each}}
Assessment Criteria
{{#each assessmentCriteria}}
{{name}}
    {{#each thresholdValues}}
  • Industry average {{metricName}} is {{metricValue.value}}{{metricValue.unit}}.

  • {{/each}}
{{/each}}
Assessed facilities
{{#each assessedFacility}}

{{name}}

{{/each}}
Assessed products
{{#each assessedProduct}}
{{name}}
{{/each}}
Other details
Assessed
{{assessmentDate}}
Organisation assessed
{{assessedOrganisation.name}}
{{/each}}
Issuer endorsement
{{#each credentialSubject.authorisation}}
trustmark
{{name}} is accredited by {{issuingAuthority.name}}.
{{/each}}
Issuing details
Issued by
Valid from
{{validFrom}}
Valid until
{{validUntil}}
", @@ -4233,7 +4233,7 @@ } }, "digitalFacilityRecord": { - "context": ["https://vocabulary.uncefact.org/untp/dfr/0.5.0/"], + "context": ["https://test.uncefact.org/vocabulary/untp/dfr/0.5.0/"], "renderTemplate": [ { "template": " Digital Facility Record
FACILITY RECORD

{{credentialSubject.name}}

{{credentialSubject.description}}

Country
{{credentialSubject.countryOfOperation}}
Address
{{!-- TODO 1: plain text --}} {{!--
{{credentialSubject.address.streetAddress}} {{credentialSubject.address.addressLocality}}, {{credentialSubject.address.postalCode}}
--}} {{!-- TODO 2: confirm --}} {{!-- {{credentialSubject.address.streetAddress}} --}} {{!-- TODO 3: confirm --}} {{credentialSubject.address.streetAddress}} {{credentialSubject.address.addressLocality}}, {{credentialSubject.address.postalCode}}
Processes
{{#each credentialSubject.processCategory}} {{name}} {{/each}}
Geolocation
{{!-- TODO: confirm --}}
Show on map
Declarations
{{#each credentialSubject.conformityClaim}}
Conformance:
{{#if conformance}}Yes{{else}}No{{/if}}
Assessed: {{assessmentDate}}
{{conformityEvidence.linkName}}

{{referenceRegulation.name}} administered in {{referenceRegulation.jurisdictionCountry}} by {{referenceRegulation.administeredBy.name}}

{{referenceStandard.name}} issued by {{referenceStandard.issuingParty.name}}

{{#each declaredValue}}

{{metricName}} is {{metricValue.value}}{{metricValue.unit}}

Score: {{score}} | Accuracy {{accuracy}}

{{/each}}
Evidence
{{/each}}
Issuing details
Issued by
Valid from
{{validFrom}}
Valid until
{{validUntil}}
", @@ -4896,7 +4896,7 @@ } }, "dpp": { - "context": ["https://vocabulary.uncefact.org/untp/dpp/0.5.0/"], + "context": ["https://test.uncefact.org/vocabulary/untp/dpp/0.5.0/"], "renderTemplate": [ { "template": " Digital Product Passport

PRODUCT PASSPORT

{{credentialSubject.name}}

{{credentialSubject.description}}
{{#each credentialSubject.furtherInformation}} {{linkName}} {{/each}}
{{#if credentialSubject.characteristic}}
Characteristics
{{#each credentialSubject.characteristic}}
{{@key}}

{{this}}

{{/each}}
{{/if}}

Circularity Scorecard

The circularity Scorecard provides a simple high level summary of circularity performance of the product.

{{credentialSubject.circularityScorecard.recyclableContent}}%

Recyclable content

{{credentialSubject.circularityScorecard.recycledContent}}%

Recycled content

{{credentialSubject.circularityScorecard.utilityFactor}}

Utility factor

{{credentialSubject.circularityScorecard.materialCircularityIndicator}}

Material circularity*

*The Material Circularity Indicator provides an overall circularity score which is a function of all three of the earlier measures.

Emissions Scorecard

The Emissions Scorecard gives a clear snapshot of the product's greenhouse gas (GHG) emissions performance, providing a single indicator to assess its overall environmental impact.

{{credentialSubject.emissionsScorecard.carbonFootprint}}{{credentialSubject.emissionsScorecard.declaredUnit}}

Co2Eq

Scope includes

{{credentialSubject.emissionsScorecard.operationalScope}}

Primary sourced ratio*

{{credentialSubject.emissionsScorecard.primarySourcedRatio}}% primary sources

Issue date

{{credentialSubject.emissionsScorecard.reportingStandard.issueDate}}

*

The Primary Sourced Ratio shows the percentage of scope 3 emissions data that is directly collected from actual sources, rather than being based on estimates.

Declarations
{{#each credentialSubject.conformityClaim}}
Conformance:
{{#if conformance}}Yes{{else}}No{{/if}}
Assessed: {{assessmentDate}}
{{conformityEvidence.linkName}}

{{referenceRegulation.name}} administered in {{referenceRegulation.jurisdictionCountry}} by {{referenceRegulation.administeredBy.name}}

{{referenceStandard.name}} issued by {{referenceStandard.issuingParty.name}}

{{#each declaredValue}}

{{metricName}} is {{metricValue.value}}{{metricValue.unit}}

Score: {{score}} | Accuracy {{accuracy}}

{{/each}}
Evidence
{{/each}}
Production
Product category

{{#each credentialSubject.productCategory}}{{name}}{{#unless @last}},{{/unless}} {{/each}}

Date produced

{{credentialSubject.productionDate}}

Country

{{credentialSubject.countryOfProduction}}

Dimensions

Weight: {{credentialSubject.dimensions.weight.value}}{{credentialSubject.dimensions.weight.unit}} Length: {{credentialSubject.dimensions.length.value}}{{credentialSubject.dimensions.length.unit}} Width: {{credentialSubject.dimensions.width.value}}{{credentialSubject.dimensions.width.unit}} Height: {{credentialSubject.dimensions.height.value}}{{credentialSubject.dimensions.height.unit}} Volume: {{credentialSubject.dimensions.volume.value}}{{credentialSubject.dimensions.volume.unit}}

Product composition

A complete list of materials that make up the composition of this product.

{{#each credentialSubject.materialsProvenance}}

{{massFraction}}%

{{massAmount.value}}{{massAmount.unit}} {{name}}

Recycled {{recycledAmount}}%

Hazard {{#if hazardous}}Yes{{else}}No{{/if}}

{{materialSafetyInformation.linkName}}
{{originCountry}}
{{/each}}

History

{{!-- start: Supply chain due diligence report --}}
Supply chain due diligence report
{{!-- end: Supply chain due diligence report --}}

{{credentialSubject.traceabilityInformation.valueChainProcess}}

Verified ratio {{credentialSubject.traceabilityInformation.verifiedRatio}}

{{#each credentialSubject.traceabilityInformation.traceabilityEvent}}
{{linkName}} View
{{/each}}

Passport issued by

Organisation

{{issuer.name}}

Registered ID {{issuer.id}}
Valid from

{{validFrom}}

Valid to

{{validUntil}}

This Digital Product Passport (DPP) is a digital record of the product's sustainability and environmental performance, ensuring transparency and accountability in line with UNTP standards. The DPP can be verified at any time using the QR code or visiting www.untp-certification.org with the passport ID.

PRODUCT PASSPORT
{{credentialSubject.name}}
Batch: {{credentialSubject.batchNumber}}
Serial: {{credentialSubject.serialNumber}}

{{credentialSubject.description}}

{{#each credentialSubject.furtherInformation}}
{{linkName}}
{{/each}}
{{#if credentialSubject.characteristic}}
Characteristics
{{#each credentialSubject.characteristic}}
{{@key}}
{{this}}
{{/each}}
{{/if}}
Circularity Scorecard

The circularity Scorecard provides a simple high level summary of circularity performance of the product.

{{credentialSubject.circularityScorecard.recyclableContent}}%
Recyclable content
{{credentialSubject.circularityScorecard.recycledContent}}%
Recycled content
{{credentialSubject.circularityScorecard.utilityFactor}}
Utility factor
{{credentialSubject.circularityScorecard.materialCircularityIndicator}}
Material circularity*

*The Material Circularity Indicator provides an overall circularity score which is a function of all three of the earlier measures.

Emissions Scorecard

The Emissions Scorecard gives a clear snapshot of the product's greenhouse gas (GHG) emissions performance, providing a single indicator to assess its overall environmental impact.

{{credentialSubject.emissionsScorecard.carbonFootprint}}{{credentialSubject.emissionsScorecard.declaredUnit}}

Co2Eq

Scope includes
{{credentialSubject.emissionsScorecard.operationalScope}}
Primary sourced ratio*
{{credentialSubject.emissionsScorecard.primarySourcedRatio}}% primary sources

The Primary Sourced Ratio shows the percentage of scope 3 emissions data that is directly collected from actual sources, rather than being based on estimates.

Issue date
{{credentialSubject.emissionsScorecard.reportingStandard.issueDate}}
*
Declarations
{{#each credentialSubject.conformityClaim}}
Conformance:
{{#if conformance}}Yes{{else}}No{{/if}}
Assessed: {{assessmentDate}}
{{conformityEvidence.linkName}}

{{referenceRegulation.name}} administered in {{referenceRegulation.jurisdictionCountry}} by {{referenceRegulation.administeredBy.name}}

{{referenceStandard.name}} issued by {{referenceStandard.issuingParty.name}}

{{#each declaredValue}}

{{metricName}} is {{metricValue.value}}{{metricValue.unit}}

Score: {{score}} | Accuracy {{accuracy}}

{{/each}}
Evidence
{{/each}}
Production
Product category
{{#each credentialSubject.productCategory}}{{name}}{{#unless @last}},{{/unless}} {{/each}}
Date produced
{{credentialSubject.productionDate}}
Country
{{credentialSubject.countryOfProduction}}
Dimensions
Weight: {{credentialSubject.dimensions.weight.value}}{{credentialSubject.dimensions.weight.unit}} Length: {{credentialSubject.dimensions.length.value}}{{credentialSubject.dimensions.length.unit}} Width: {{credentialSubject.dimensions.width.value}}{{credentialSubject.dimensions.width.unit}} Height: {{credentialSubject.dimensions.height.value}}{{credentialSubject.dimensions.height.unit}} Volume: {{credentialSubject.dimensions.volume.value}}{{credentialSubject.dimensions.volume.unit}}
Composition

The Product Composition List details the materials and components used in the product, providing transparency on the origin and nature of each element.

{{#each credentialSubject.materialsProvenance}}
{{massFraction}}%
{{massAmount.value}}{{massAmount.unit}} {{name}}
Recycled {{#if recycledAmount}}{{recycledAmount}}{{else}}0{{/if}}%
Hazard {{#if hazardous}}Yes{{else}}No{{/if}}
{{originCountry}}
{{/each}}
History
{{!-- start: Supply chain due diligence report --}}
Supply chain due diligence report
{{!-- end: Supply chain due diligence report --}}

{{credentialSubject.traceabilityInformation.valueChainProcess}}

Verified ratio {{credentialSubject.traceabilityInformation.verifiedRatio}}

{{#each credentialSubject.traceabilityInformation.traceabilityEvent}}
{{linkName}} View
{{/each}}
Passport issued by
Organisation
{{issuer.name}}
Registered ID
Valid from
{{validFrom}}
Valid to
{{validUntil}}

This Digital Product Passport (DPP) is a digital record of the product’s sustainability and environmental performance, ensuring transparency and accountability in line with UNTP standards. The DPP can be verified at any time using the QR code or visiting www.untp-certification.org with the passport ID.

", @@ -5117,7 +5117,7 @@ } }, "traceabilityEvent": { - "context": ["https://vocabulary.uncefact.org/untp/dte/0.5.0/"], + "context": ["https://test.uncefact.org/vocabulary/untp/dte/0.5.0/"], "renderTemplate": [ { "template": "
DIGITAL TRACEABILITY EVENT
{{#each credentialSubject}}
{{processType}}
{{bizStep}} {{eventTime}}
Transformation
Output
{{#each outputEPCList}}
{{name}}
View
{{/each}} {{#each outputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}

Transformed

Input
{{#each inputEPCList}}
{{name}}
View
{{/each}} {{#each inputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Transaction
Source
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Destination
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Object event
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Aggregation
{{parentEPC.name}}
View

Aggregated

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Association
{{parentEPC.name}}
View

Assembled

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{/each}}
Issuing details
Issued by
Valid from
{{validFrom}}
", @@ -5798,7 +5798,7 @@ } }, "dpp": { - "context": ["https://vocabulary.uncefact.org/untp/dpp/0.5.0/"], + "context": ["https://test.uncefact.org/vocabulary/untp/dpp/0.5.0/"], "renderTemplate": [ { "template": " Digital Product Passport

PRODUCT PASSPORT

{{credentialSubject.name}}

{{credentialSubject.description}}
{{#each credentialSubject.furtherInformation}} {{linkName}} {{/each}}
{{#if credentialSubject.characteristic}}
Characteristics
{{#each credentialSubject.characteristic}}
{{@key}}

{{this}}

{{/each}}
{{/if}}

Circularity Scorecard

The circularity Scorecard provides a simple high level summary of circularity performance of the product.

{{credentialSubject.circularityScorecard.recyclableContent}}%

Recyclable content

{{credentialSubject.circularityScorecard.recycledContent}}%

Recycled content

{{credentialSubject.circularityScorecard.utilityFactor}}

Utility factor

{{credentialSubject.circularityScorecard.materialCircularityIndicator}}

Material circularity*

*The Material Circularity Indicator provides an overall circularity score which is a function of all three of the earlier measures.

Emissions Scorecard

The Emissions Scorecard gives a clear snapshot of the product's greenhouse gas (GHG) emissions performance, providing a single indicator to assess its overall environmental impact.

{{credentialSubject.emissionsScorecard.carbonFootprint}}{{credentialSubject.emissionsScorecard.declaredUnit}}

Co2Eq

Scope includes

{{credentialSubject.emissionsScorecard.operationalScope}}

Primary sourced ratio*

{{credentialSubject.emissionsScorecard.primarySourcedRatio}}% primary sources

Issue date

{{credentialSubject.emissionsScorecard.reportingStandard.issueDate}}

*

The Primary Sourced Ratio shows the percentage of scope 3 emissions data that is directly collected from actual sources, rather than being based on estimates.

Declarations
{{#each credentialSubject.conformityClaim}}
Conformance:
{{#if conformance}}Yes{{else}}No{{/if}}
Assessed: {{assessmentDate}}
{{conformityEvidence.linkName}}

{{referenceRegulation.name}} administered in {{referenceRegulation.jurisdictionCountry}} by {{referenceRegulation.administeredBy.name}}

{{referenceStandard.name}} issued by {{referenceStandard.issuingParty.name}}

{{#each declaredValue}}

{{metricName}} is {{metricValue.value}}{{metricValue.unit}}

Score: {{score}} | Accuracy {{accuracy}}

{{/each}}
Evidence
{{/each}}
Production
Product category

{{#each credentialSubject.productCategory}}{{name}}{{#unless @last}},{{/unless}} {{/each}}

Date produced

{{credentialSubject.productionDate}}

Country

{{credentialSubject.countryOfProduction}}

Dimensions

Weight: {{credentialSubject.dimensions.weight.value}}{{credentialSubject.dimensions.weight.unit}} Length: {{credentialSubject.dimensions.length.value}}{{credentialSubject.dimensions.length.unit}} Width: {{credentialSubject.dimensions.width.value}}{{credentialSubject.dimensions.width.unit}} Height: {{credentialSubject.dimensions.height.value}}{{credentialSubject.dimensions.height.unit}} Volume: {{credentialSubject.dimensions.volume.value}}{{credentialSubject.dimensions.volume.unit}}

Product composition

A complete list of materials that make up the composition of this product.

{{#each credentialSubject.materialsProvenance}}

{{massFraction}}%

{{massAmount.value}}{{massAmount.unit}} {{name}}

Recycled {{recycledAmount}}%

Hazard {{#if hazardous}}Yes{{else}}No{{/if}}

{{materialSafetyInformation.linkName}}
{{originCountry}}
{{/each}}

History

{{!-- start: Supply chain due diligence report --}}
Supply chain due diligence report
{{!-- end: Supply chain due diligence report --}}

{{credentialSubject.traceabilityInformation.valueChainProcess}}

Verified ratio {{credentialSubject.traceabilityInformation.verifiedRatio}}

{{#each credentialSubject.traceabilityInformation.traceabilityEvent}}
{{linkName}} View
{{/each}}

Passport issued by

Organisation

{{issuer.name}}

Registered ID {{issuer.id}}
Valid from

{{validFrom}}

Valid to

{{validUntil}}

This Digital Product Passport (DPP) is a digital record of the product's sustainability and environmental performance, ensuring transparency and accountability in line with UNTP standards. The DPP can be verified at any time using the QR code or visiting www.untp-certification.org with the passport ID.

PRODUCT PASSPORT
{{credentialSubject.name}}
Batch: {{credentialSubject.batchNumber}}
Serial: {{credentialSubject.serialNumber}}

{{credentialSubject.description}}

{{#each credentialSubject.furtherInformation}}
{{linkName}}
{{/each}}
{{#if credentialSubject.characteristic}}
Characteristics
{{#each credentialSubject.characteristic}}
{{@key}}
{{this}}
{{/each}}
{{/if}}
Circularity Scorecard

The circularity Scorecard provides a simple high level summary of circularity performance of the product.

{{credentialSubject.circularityScorecard.recyclableContent}}%
Recyclable content
{{credentialSubject.circularityScorecard.recycledContent}}%
Recycled content
{{credentialSubject.circularityScorecard.utilityFactor}}
Utility factor
{{credentialSubject.circularityScorecard.materialCircularityIndicator}}
Material circularity*

*The Material Circularity Indicator provides an overall circularity score which is a function of all three of the earlier measures.

Emissions Scorecard

The Emissions Scorecard gives a clear snapshot of the product's greenhouse gas (GHG) emissions performance, providing a single indicator to assess its overall environmental impact.

{{credentialSubject.emissionsScorecard.carbonFootprint}}{{credentialSubject.emissionsScorecard.declaredUnit}}

Co2Eq

Scope includes
{{credentialSubject.emissionsScorecard.operationalScope}}
Primary sourced ratio*
{{credentialSubject.emissionsScorecard.primarySourcedRatio}}% primary sources

The Primary Sourced Ratio shows the percentage of scope 3 emissions data that is directly collected from actual sources, rather than being based on estimates.

Issue date
{{credentialSubject.emissionsScorecard.reportingStandard.issueDate}}
*
Declarations
{{#each credentialSubject.conformityClaim}}
Conformance:
{{#if conformance}}Yes{{else}}No{{/if}}
Assessed: {{assessmentDate}}
{{conformityEvidence.linkName}}

{{referenceRegulation.name}} administered in {{referenceRegulation.jurisdictionCountry}} by {{referenceRegulation.administeredBy.name}}

{{referenceStandard.name}} issued by {{referenceStandard.issuingParty.name}}

{{#each declaredValue}}

{{metricName}} is {{metricValue.value}}{{metricValue.unit}}

Score: {{score}} | Accuracy {{accuracy}}

{{/each}}
Evidence
{{/each}}
Production
Product category
{{#each credentialSubject.productCategory}}{{name}}{{#unless @last}},{{/unless}} {{/each}}
Date produced
{{credentialSubject.productionDate}}
Country
{{credentialSubject.countryOfProduction}}
Dimensions
Weight: {{credentialSubject.dimensions.weight.value}}{{credentialSubject.dimensions.weight.unit}} Length: {{credentialSubject.dimensions.length.value}}{{credentialSubject.dimensions.length.unit}} Width: {{credentialSubject.dimensions.width.value}}{{credentialSubject.dimensions.width.unit}} Height: {{credentialSubject.dimensions.height.value}}{{credentialSubject.dimensions.height.unit}} Volume: {{credentialSubject.dimensions.volume.value}}{{credentialSubject.dimensions.volume.unit}}
Composition

The Product Composition List details the materials and components used in the product, providing transparency on the origin and nature of each element.

{{#each credentialSubject.materialsProvenance}}
{{massFraction}}%
{{massAmount.value}}{{massAmount.unit}} {{name}}
Recycled {{#if recycledAmount}}{{recycledAmount}}{{else}}0{{/if}}%
Hazard {{#if hazardous}}Yes{{else}}No{{/if}}
{{originCountry}}
{{/each}}
History
{{!-- start: Supply chain due diligence report --}}
Supply chain due diligence report
{{!-- end: Supply chain due diligence report --}}

{{credentialSubject.traceabilityInformation.valueChainProcess}}

Verified ratio {{credentialSubject.traceabilityInformation.verifiedRatio}}

{{#each credentialSubject.traceabilityInformation.traceabilityEvent}}
{{linkName}} View
{{/each}}
Passport issued by
Organisation
{{issuer.name}}
Registered ID
Valid from
{{validFrom}}
Valid to
{{validUntil}}

This Digital Product Passport (DPP) is a digital record of the product’s sustainability and environmental performance, ensuring transparency and accountability in line with UNTP standards. The DPP can be verified at any time using the QR code or visiting www.untp-certification.org with the passport ID.

", @@ -6019,7 +6019,7 @@ } }, "traceabilityEvent": { - "context": ["https://vocabulary.uncefact.org/untp/dte/0.5.0/"], + "context": ["https://test.uncefact.org/vocabulary/untp/dte/0.5.0/"], "renderTemplate": [ { "template": "
DIGITAL TRACEABILITY EVENT
{{#each credentialSubject}}
{{processType}}
{{bizStep}} {{eventTime}}
Transformation
Output
{{#each outputEPCList}}
{{name}}
View
{{/each}} {{#each outputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}

Transformed

Input
{{#each inputEPCList}}
{{name}}
View
{{/each}} {{#each inputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Transaction
Source
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Destination
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Object event
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Aggregation
{{parentEPC.name}}
View

Aggregated

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Association
{{parentEPC.name}}
View

Assembled

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{/each}}
Issuing details
Issued by
Valid from
{{validFrom}}
", @@ -6050,7 +6050,10 @@ } }, "identifierKeyPath": "/0/id", - "localStorageParams": { "storageKey": "fumigation_and_freight_forwarding_facility_dpps", "keyPath": "/0/epcList/index/name" } + "localStorageParams": { + "storageKey": "fumigation_and_freight_forwarding_facility_dpps", + "keyPath": "/0/epcList/index/name" + } } ] }, @@ -6700,7 +6703,7 @@ } }, "dpp": { - "context": ["https://vocabulary.uncefact.org/untp/dpp/0.5.0/"], + "context": ["https://test.uncefact.org/vocabulary/untp/dpp/0.5.0/"], "renderTemplate": [ { "template": " Digital Product Passport

PRODUCT PASSPORT

{{credentialSubject.name}}

{{credentialSubject.description}}
{{#each credentialSubject.furtherInformation}} {{linkName}} {{/each}}
{{#if credentialSubject.characteristic}}
Characteristics
{{#each credentialSubject.characteristic}}
{{@key}}

{{this}}

{{/each}}
{{/if}}

Circularity Scorecard

The circularity Scorecard provides a simple high level summary of circularity performance of the product.

{{credentialSubject.circularityScorecard.recyclableContent}}%

Recyclable content

{{credentialSubject.circularityScorecard.recycledContent}}%

Recycled content

{{credentialSubject.circularityScorecard.utilityFactor}}

Utility factor

{{credentialSubject.circularityScorecard.materialCircularityIndicator}}

Material circularity*

*The Material Circularity Indicator provides an overall circularity score which is a function of all three of the earlier measures.

Emissions Scorecard

The Emissions Scorecard gives a clear snapshot of the product's greenhouse gas (GHG) emissions performance, providing a single indicator to assess its overall environmental impact.

{{credentialSubject.emissionsScorecard.carbonFootprint}}{{credentialSubject.emissionsScorecard.declaredUnit}}

Co2Eq

Scope includes

{{credentialSubject.emissionsScorecard.operationalScope}}

Primary sourced ratio*

{{credentialSubject.emissionsScorecard.primarySourcedRatio}}% primary sources

Issue date

{{credentialSubject.emissionsScorecard.reportingStandard.issueDate}}

*

The Primary Sourced Ratio shows the percentage of scope 3 emissions data that is directly collected from actual sources, rather than being based on estimates.

Declarations
{{#each credentialSubject.conformityClaim}}
Conformance:
{{#if conformance}}Yes{{else}}No{{/if}}
Assessed: {{assessmentDate}}
{{conformityEvidence.linkName}}

{{referenceRegulation.name}} administered in {{referenceRegulation.jurisdictionCountry}} by {{referenceRegulation.administeredBy.name}}

{{referenceStandard.name}} issued by {{referenceStandard.issuingParty.name}}

{{#each declaredValue}}

{{metricName}} is {{metricValue.value}}{{metricValue.unit}}

Score: {{score}} | Accuracy {{accuracy}}

{{/each}}
Evidence
{{/each}}
Production
Product category

{{#each credentialSubject.productCategory}}{{name}}{{#unless @last}},{{/unless}} {{/each}}

Date produced

{{credentialSubject.productionDate}}

Country

{{credentialSubject.countryOfProduction}}

Dimensions

Weight: {{credentialSubject.dimensions.weight.value}}{{credentialSubject.dimensions.weight.unit}} Length: {{credentialSubject.dimensions.length.value}}{{credentialSubject.dimensions.length.unit}} Width: {{credentialSubject.dimensions.width.value}}{{credentialSubject.dimensions.width.unit}} Height: {{credentialSubject.dimensions.height.value}}{{credentialSubject.dimensions.height.unit}} Volume: {{credentialSubject.dimensions.volume.value}}{{credentialSubject.dimensions.volume.unit}}

Product composition

A complete list of materials that make up the composition of this product.

{{#each credentialSubject.materialsProvenance}}

{{massFraction}}%

{{massAmount.value}}{{massAmount.unit}} {{name}}

Recycled {{recycledAmount}}%

Hazard {{#if hazardous}}Yes{{else}}No{{/if}}

{{materialSafetyInformation.linkName}}
{{originCountry}}
{{/each}}

History

{{!-- start: Supply chain due diligence report --}}
Supply chain due diligence report
{{!-- end: Supply chain due diligence report --}}

{{credentialSubject.traceabilityInformation.valueChainProcess}}

Verified ratio {{credentialSubject.traceabilityInformation.verifiedRatio}}

{{#each credentialSubject.traceabilityInformation.traceabilityEvent}}
{{linkName}} View
{{/each}}

Passport issued by

Organisation

{{issuer.name}}

Registered ID {{issuer.id}}
Valid from

{{validFrom}}

Valid to

{{validUntil}}

This Digital Product Passport (DPP) is a digital record of the product's sustainability and environmental performance, ensuring transparency and accountability in line with UNTP standards. The DPP can be verified at any time using the QR code or visiting www.untp-certification.org with the passport ID.

PRODUCT PASSPORT
{{credentialSubject.name}}
Batch: {{credentialSubject.batchNumber}}
Serial: {{credentialSubject.serialNumber}}

{{credentialSubject.description}}

{{#each credentialSubject.furtherInformation}}
{{linkName}}
{{/each}}
{{#if credentialSubject.characteristic}}
Characteristics
{{#each credentialSubject.characteristic}}
{{@key}}
{{this}}
{{/each}}
{{/if}}
Circularity Scorecard

The circularity Scorecard provides a simple high level summary of circularity performance of the product.

{{credentialSubject.circularityScorecard.recyclableContent}}%
Recyclable content
{{credentialSubject.circularityScorecard.recycledContent}}%
Recycled content
{{credentialSubject.circularityScorecard.utilityFactor}}
Utility factor
{{credentialSubject.circularityScorecard.materialCircularityIndicator}}
Material circularity*

*The Material Circularity Indicator provides an overall circularity score which is a function of all three of the earlier measures.

Emissions Scorecard

The Emissions Scorecard gives a clear snapshot of the product's greenhouse gas (GHG) emissions performance, providing a single indicator to assess its overall environmental impact.

{{credentialSubject.emissionsScorecard.carbonFootprint}}{{credentialSubject.emissionsScorecard.declaredUnit}}

Co2Eq

Scope includes
{{credentialSubject.emissionsScorecard.operationalScope}}
Primary sourced ratio*
{{credentialSubject.emissionsScorecard.primarySourcedRatio}}% primary sources

The Primary Sourced Ratio shows the percentage of scope 3 emissions data that is directly collected from actual sources, rather than being based on estimates.

Issue date
{{credentialSubject.emissionsScorecard.reportingStandard.issueDate}}
*
Declarations
{{#each credentialSubject.conformityClaim}}
Conformance:
{{#if conformance}}Yes{{else}}No{{/if}}
Assessed: {{assessmentDate}}
{{conformityEvidence.linkName}}

{{referenceRegulation.name}} administered in {{referenceRegulation.jurisdictionCountry}} by {{referenceRegulation.administeredBy.name}}

{{referenceStandard.name}} issued by {{referenceStandard.issuingParty.name}}

{{#each declaredValue}}

{{metricName}} is {{metricValue.value}}{{metricValue.unit}}

Score: {{score}} | Accuracy {{accuracy}}

{{/each}}
Evidence
{{/each}}
Production
Product category
{{#each credentialSubject.productCategory}}{{name}}{{#unless @last}},{{/unless}} {{/each}}
Date produced
{{credentialSubject.productionDate}}
Country
{{credentialSubject.countryOfProduction}}
Dimensions
Weight: {{credentialSubject.dimensions.weight.value}}{{credentialSubject.dimensions.weight.unit}} Length: {{credentialSubject.dimensions.length.value}}{{credentialSubject.dimensions.length.unit}} Width: {{credentialSubject.dimensions.width.value}}{{credentialSubject.dimensions.width.unit}} Height: {{credentialSubject.dimensions.height.value}}{{credentialSubject.dimensions.height.unit}} Volume: {{credentialSubject.dimensions.volume.value}}{{credentialSubject.dimensions.volume.unit}}
Composition

The Product Composition List details the materials and components used in the product, providing transparency on the origin and nature of each element.

{{#each credentialSubject.materialsProvenance}}
{{massFraction}}%
{{massAmount.value}}{{massAmount.unit}} {{name}}
Recycled {{#if recycledAmount}}{{recycledAmount}}{{else}}0{{/if}}%
Hazard {{#if hazardous}}Yes{{else}}No{{/if}}
{{originCountry}}
{{/each}}
History
{{!-- start: Supply chain due diligence report --}}
Supply chain due diligence report
{{!-- end: Supply chain due diligence report --}}

{{credentialSubject.traceabilityInformation.valueChainProcess}}

Verified ratio {{credentialSubject.traceabilityInformation.verifiedRatio}}

{{#each credentialSubject.traceabilityInformation.traceabilityEvent}}
{{linkName}} View
{{/each}}
Passport issued by
Organisation
{{issuer.name}}
Registered ID
Valid from
{{validFrom}}
Valid to
{{validUntil}}

This Digital Product Passport (DPP) is a digital record of the product’s sustainability and environmental performance, ensuring transparency and accountability in line with UNTP standards. The DPP can be verified at any time using the QR code or visiting www.untp-certification.org with the passport ID.

", @@ -6921,7 +6924,7 @@ } }, "traceabilityEvent": { - "context": ["https://vocabulary.uncefact.org/untp/dte/0.5.0/"], + "context": ["https://test.uncefact.org/vocabulary/untp/dte/0.5.0/"], "renderTemplate": [ { "template": "
DIGITAL TRACEABILITY EVENT
{{#each credentialSubject}}
{{processType}}
{{bizStep}} {{eventTime}}
Transformation
Output
{{#each outputEPCList}}
{{name}}
View
{{/each}} {{#each outputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}

Transformed

Input
{{#each inputEPCList}}
{{name}}
View
{{/each}} {{#each inputQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Transaction
Source
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Destination
{{!-- TODO: to be confirmed, since the navigation link wasn't provided --}} {{!-- being assumed --}}
View
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Object event
Object list
{{#each epcList}}
{{name}}
View
{{/each}} {{#each quantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Aggregation
{{parentEPC.name}}
View

Aggregated

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{processType}}
{{bizStep}} {{eventTime}}
Association
{{parentEPC.name}}
View

Assembled

Child list
{{#each childEPCList}}
{{name}}
View
{{/each}} {{#each childQuantityList}}
{{quantity}}{{uom}} {{productName}}
View
{{/each}}
Event sensor information
{{#each sensorElementList}}
{{sensorMetadata.device.name}}
{{#each sensorReport}}
Captured at
{{time}}
Sensor type
Reading
{{value}}{{uom}}
{{/each}}
Integrity proof
{{/each}}
{{!-- TODO: to be confirmed, since the SensorElementList.sensorIntegrityProof duplicate --}} {{!-- being assumed --}} Event location information
{{/each}}
Issuing details
Issued by
Valid from
{{validFrom}}
", @@ -6952,7 +6955,10 @@ } }, "identifierKeyPath": "/0/id", - "localStorageParams": { "storageKey": "airport_terminal_facility_dpps", "keyPath": "/0/epcList/index/name" } + "localStorageParams": { + "storageKey": "airport_terminal_facility_dpps", + "keyPath": "/0/epcList/index/name" + } } ] }, diff --git a/packages/tsconfig.settings.json b/packages/tsconfig.settings.json deleted file mode 100644 index ab096417..00000000 --- a/packages/tsconfig.settings.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "compilerOptions": { - "strict": true, - "preserveConstEnums": true, - "sourceMap": true, - "target": "esnext", - "module": "esnext", - "moduleResolution": "Node", - "esModuleInterop": true, - "downlevelIteration": true, - "declarationMap": true, - "declaration": true, - "composite": true, - "emitDecoratorMetadata": true, - "useUnknownInCatchVariables": false, - "experimentalDecorators": true, - "resolveJsonModule": true, - "allowSyntheticDefaultImports": true, - "jsx": "react-jsx" - }, - "ts-node": { - "compilerOptions": { - "module": "CommonJS" - } - }, - "exclude": ["**/build/**/*", "**/node_modules/**/*", "**/*.test.ts", "**/*.spec.ts"], - "include": ["src", "src/__tests__"] -} diff --git a/packages/untp-playground/.dockerignore b/packages/untp-playground/.dockerignore new file mode 100644 index 00000000..5a5bdd4c --- /dev/null +++ b/packages/untp-playground/.dockerignore @@ -0,0 +1 @@ +infra \ No newline at end of file diff --git a/packages/untp-playground/.gitignore b/packages/untp-playground/.gitignore new file mode 100644 index 00000000..d32cc78b --- /dev/null +++ b/packages/untp-playground/.gitignore @@ -0,0 +1,40 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.* +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/versions + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# env files (can opt-in for committing if needed) +.env* + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/packages/untp-playground/Dockerfile b/packages/untp-playground/Dockerfile new file mode 100644 index 00000000..11525d6a --- /dev/null +++ b/packages/untp-playground/Dockerfile @@ -0,0 +1,73 @@ +# syntax=docker.io/docker/dockerfile:1 + +FROM node:20.12.2-alpine AS base + +# Install dependencies only when needed +FROM base AS deps +# Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed. +RUN apk add --no-cache libc6-compat +WORKDIR /app + +ENV NEXT_PUBLIC_BASE_PATH=/ +ENV NEXT_PUBLIC_ASSET_PREFIX=/ + +# Install dependencies based on the preferred package manager +COPY package.json yarn.lock* package-lock.json* pnpm-lock.yaml* .npmrc* ./ +RUN \ + if [ -f yarn.lock ]; then yarn --frozen-lockfile; \ + elif [ -f package-lock.json ]; then npm ci; \ + elif [ -f pnpm-lock.yaml ]; then corepack enable pnpm && pnpm i --frozen-lockfile; \ + else echo "Lockfile not found." && exit 1; \ + fi + + +# Rebuild the source code only when needed +FROM base AS builder +WORKDIR /app +COPY --from=deps /app/node_modules ./node_modules +COPY . . + +# Add build args without defaults +ARG NEXT_PUBLIC_BASE_PATH +ARG NEXT_PUBLIC_ASSET_PREFIX +ARG NEXT_PUBLIC_IMAGE_PATH + +ENV NEXT_PUBLIC_BASE_PATH=${NEXT_PUBLIC_BASE_PATH} +ENV NEXT_PUBLIC_ASSET_PREFIX=${NEXT_PUBLIC_ASSET_PREFIX} +ENV NEXT_PUBLIC_IMAGE_PATH=${NEXT_PUBLIC_IMAGE_PATH} + +RUN \ + if [ -f yarn.lock ]; then yarn run build; \ + elif [ -f package-lock.json ]; then npm run build; \ + elif [ -f pnpm-lock.yaml ]; then corepack enable pnpm && pnpm run build; \ + else echo "Lockfile not found." && exit 1; \ + fi + +# Production image, copy all the files and run next +FROM base AS runner +WORKDIR /app + +ENV NODE_ENV=production +# Uncomment the following line in case you want to disable telemetry during runtime. +# ENV NEXT_TELEMETRY_DISABLED=1 + +RUN addgroup --system --gid 1001 nodejs +RUN adduser --system --uid 1001 nextjs + +COPY --from=builder /app/public ./public + +# Automatically leverage output traces to reduce image size +# https://nextjs.org/docs/advanced-features/output-file-tracing +COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./ +COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static + +USER nextjs + +EXPOSE 3000 + +ENV PORT=3000 + +# server.js is created by next build from the standalone output +# https://nextjs.org/docs/pages/api-reference/next-config-js/output +ENV HOSTNAME="0.0.0.0" +CMD ["node", "server.js"] \ No newline at end of file diff --git a/packages/untp-playground/README.md b/packages/untp-playground/README.md new file mode 100644 index 00000000..9ac047c7 --- /dev/null +++ b/packages/untp-playground/README.md @@ -0,0 +1,32 @@ +## untp-playground + +## Getting Started + +```bash +yarn dev +``` + +Open [http://localhost:3000/](http://localhost:3000/) with your browser to see the result. + +## Deployment + +We use Pulumi and GitHub actions to deploy the app. The following env variables needs to be set to define basePath in order to it work with the existing CloudFront Distribution: +``` +NEXT_PUBLIC_BASE_PATH: /untp-playground +NEXT_PUBLIC_ASSET_PREFIX: /untp-playground +NEXT_PUBLIC_IMAGE_PATH: /untp-playground/_next/image +``` + +GitHub OIDC is configured in AWS account for GitHub Actions workflow to assume and run the deployment using Pulumi. The role to assume is set as a repository secret `UNCEFACT_AWS_ROLE_TO_ASSUME`. +Pulume security prodiver for config is set to awskms. +The same backend state bucket and kms key are used for both test and prod Pulumi stacks. + +End-points: + +1. test - https://test.uncefact.org/test-untp-playground +1. production - https://test.uncefact.org/untp-playground + +`next` branch is getting automatically deployed to test, tag is manually deployed to production. +In future production enddpoint will be replaced with a production url, and current endpoint will become test. + +The production build is configured using Docker image https://nextjs.org/docs/pages/building-your-application/deploying#docker-image diff --git a/packages/untp-playground/components.json b/packages/untp-playground/components.json new file mode 100644 index 00000000..d710b496 --- /dev/null +++ b/packages/untp-playground/components.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "default", + "rsc": true, + "tsx": true, + "tailwind": { + "config": "tailwind.config.ts", + "css": "src/app/globals.css", + "baseColor": "neutral", + "cssVariables": true, + "prefix": "" + }, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib", + "hooks": "@/hooks" + }, + "iconLibrary": "lucide" +} \ No newline at end of file diff --git a/packages/untp-playground/infra/.gitignore b/packages/untp-playground/infra/.gitignore new file mode 100644 index 00000000..c6958891 --- /dev/null +++ b/packages/untp-playground/infra/.gitignore @@ -0,0 +1,2 @@ +/bin/ +/node_modules/ diff --git a/packages/untp-playground/infra/Pulumi.prod.yaml b/packages/untp-playground/infra/Pulumi.prod.yaml new file mode 100644 index 00000000..7cadb435 --- /dev/null +++ b/packages/untp-playground/infra/Pulumi.prod.yaml @@ -0,0 +1,4 @@ +secretsprovider: awskms://alias/untp-pg-base?region=us-east-1 +encryptedkey: AQICAHiQPtPpMskboX6hzwJRSoxN1ESI7Hg9WiuyfnhBuWLLrAGLJOOpNF5D3yPTR4Dj/T7UAAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMKhbr+O8ooFzmePRFAgEQgDt2DMNetQ5kFc7ahK1U4kXiIYwn+zCnoXq0oI6CSK44yjkdFFk5NLwO6M2OTIWvlkbGLLxg8JMK6/yNOA== +config: + appURL: "https://test.uncefact.org/untp-playground" \ No newline at end of file diff --git a/packages/untp-playground/infra/Pulumi.test.yaml b/packages/untp-playground/infra/Pulumi.test.yaml new file mode 100644 index 00000000..4141d808 --- /dev/null +++ b/packages/untp-playground/infra/Pulumi.test.yaml @@ -0,0 +1,4 @@ +secretsprovider: awskms://alias/untp-pg-base?region=us-east-1 +encryptedkey: AQICAHiQPtPpMskboX6hzwJRSoxN1ESI7Hg9WiuyfnhBuWLLrAFxHhmNJ+lmjYpTAl3664O0AAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMr1XsDGUO1y8LDkCEAgEQgDt2zh99T15QUYnynakVTBrJEAKRpniRKBpV2XmI4sasMA4mcRjW15kuyzDmiOqMRPB2n1e1PMX6nPYtKA== +config: + appURL: "https://test.uncefact.org/test-untp-playground" \ No newline at end of file diff --git a/packages/untp-playground/infra/Pulumi.yaml b/packages/untp-playground/infra/Pulumi.yaml new file mode 100644 index 00000000..318e4c35 --- /dev/null +++ b/packages/untp-playground/infra/Pulumi.yaml @@ -0,0 +1,10 @@ +name: untp-demo +runtime: nodejs +description: Pulumi project for UNTP Demo deployments +config: + pulumi:tags: + value: + pulumi:template: aws-typescript + aws:region: us-east-1 +backend: + url: "s3://untp-pg-state-bucket-6fe8422?region=us-east-1" \ No newline at end of file diff --git a/packages/untp-playground/infra/index.ts b/packages/untp-playground/infra/index.ts new file mode 100644 index 00000000..e0663773 --- /dev/null +++ b/packages/untp-playground/infra/index.ts @@ -0,0 +1,12 @@ +import * as pulumi from "@pulumi/pulumi"; +import { configureBase, createStateBucket, deployApp } from './infra'; + +//TODO: refactor - bakend state bucket and and kms key for secrets provider needs to be moved to a separate stack +const {backendUrl, stateBucket} = createStateBucket(); +//const secretProviderURL = configureBase(); +const appURL = deployApp(); + +//export const backend = backendUrl; +//export const secret = secretProviderURL; + +export const url = appURL; \ No newline at end of file diff --git a/packages/untp-playground/infra/infra/app.ts b/packages/untp-playground/infra/infra/app.ts new file mode 100644 index 00000000..16033486 --- /dev/null +++ b/packages/untp-playground/infra/infra/app.ts @@ -0,0 +1,157 @@ +import * as aws from '@pulumi/aws'; +import * as awsx from '@pulumi/awsx'; +import * as pulumi from '@pulumi/pulumi'; + + +export function deployApp(){ + +const stack = pulumi.getStack(); + +let awsConfig = new pulumi.Config('aws'); +let awsRegion = awsConfig.require('region'); +const appURL = new pulumi.Config().require("appURL") + +const vpc = new awsx.ec2.Vpc(`app-vpc-${stack}`, { + cidrBlock: '10.0.0.0/16', + numberOfAvailabilityZones: 2, + enableDnsHostnames: true, + natGateways: { + strategy: awsx.ec2.NatGatewayStrategy.Single, + }, +}); + +const appSg = new aws.ec2.SecurityGroup( + `app-sg-${stack}`, + { + vpcId: vpc.vpcId, + ingress: [{ protocol: 'tcp', fromPort: 3000, toPort: 3000, cidrBlocks: ['0.0.0.0/0'] }], + egress: [{ protocol: '-1', fromPort: 0, toPort: 0, cidrBlocks: ['0.0.0.0/0'] }], + }, + { + dependsOn: [vpc], + }, +); + +const appLBSg = new aws.ec2.SecurityGroup( + `app-lb-sg-${stack}`, + { + vpcId: vpc.vpcId, + ingress: [ + { protocol: 'tcp', fromPort: 3000, toPort: 3000, cidrBlocks: ['0.0.0.0/0'] }, + { protocol: 'tcp', fromPort: 80, toPort: 80, cidrBlocks: ['0.0.0.0/0'] }, + { protocol: 'tcp', fromPort: 443, toPort: 443, cidrBlocks: ['0.0.0.0/0'] }, + ], + egress: [{ protocol: '-1', fromPort: 0, toPort: 0, cidrBlocks: ['0.0.0.0/0'] }], + }, + { + dependsOn: [vpc], + }, +); + + +const targetGroup = new aws.lb.TargetGroup( + `app-tg-${stack}`, + { + targetType: 'ip', + vpcId: vpc.vpcId, + port: 3000, + protocol: 'HTTP', + healthCheck: { + path: process.env.NEXT_PUBLIC_BASE_PATH, + interval: 30, + timeout: 15, + healthyThreshold: 2, + unhealthyThreshold: 2, + }, + }, + { + dependsOn: [vpc], + }, +); + +const lb = new awsx.lb.ApplicationLoadBalancer( + `app-lb-${stack}`, + { + subnetIds: vpc.publicSubnetIds, + securityGroups: [appLBSg.id], + listeners: [ + { + port: 443, + protocol: 'HTTPS', + sslPolicy: 'ELBSecurityPolicy-2016-08', + certificateArn: "arn:aws:acm:us-east-1:651690125008:certificate/ff8d87f3-f587-42cb-9edb-6badfad1937b", + defaultActions: [ + { + type: 'forward', + targetGroupArn: targetGroup.arn, + }, + ], + }, + { + port: 80, + protocol: 'HTTP', + defaultActions: [ + { + type: 'redirect', + redirect: { + port: '443', + protocol: 'HTTPS', + statusCode: 'HTTP_301', + }, + }, + ], + }, + ], + }, + { + dependsOn: [vpc, appLBSg, targetGroup], + }, +); + +const cluster = new aws.ecs.Cluster(`app-cluster-${stack}`); + +const appRepository = new awsx.ecr.Repository(`app-ecr-${stack}`); + +const appImage = new awsx.ecr.Image(`app-image-${stack}`, { + repositoryUrl: appRepository.url, + platform: 'linux/amd64', + context: '../', + args: { + ...(process.env.NEXT_PUBLIC_BASE_PATH && { NEXT_PUBLIC_BASE_PATH: process.env.NEXT_PUBLIC_BASE_PATH }), + ...(process.env.NEXT_PUBLIC_ASSET_PREFIX && { NEXT_PUBLIC_ASSET_PREFIX: process.env.NEXT_PUBLIC_ASSET_PREFIX }), + ...(process.env.NEXT_PUBLIC_IMAGE_PATH && { NEXT_PUBLIC_IMAGE_PATH: process.env.NEXT_PUBLIC_IMAGE_PATH }), + }, +}); + +const service = new awsx.ecs.FargateService( + `app-service-${stack}`, + { + cluster: cluster.arn, + desiredCount: 1, + taskDefinitionArgs: { + container: { + name: `app-${stack}`, + image: appImage.imageUri, + cpu: 128, + memory: 512, + essential: true, + portMappings: [ + { + containerPort: 3000, + targetGroup: targetGroup, + }, + ], + }, + }, + networkConfiguration: { + subnets: vpc.publicSubnetIds, + securityGroups: [appSg.id], + assignPublicIp: true, + }, + }, + { + dependsOn: [vpc, appSg, targetGroup, cluster, lb], + }, +); +return appURL; +} \ No newline at end of file diff --git a/packages/untp-playground/infra/infra/base.ts b/packages/untp-playground/infra/infra/base.ts new file mode 100644 index 00000000..f918aa8b --- /dev/null +++ b/packages/untp-playground/infra/infra/base.ts @@ -0,0 +1,36 @@ +import * as pulumi from "@pulumi/pulumi"; +import * as aws from "@pulumi/aws"; + +export function configureBase (){ +let awsConfig = new pulumi.Config('aws'); +let awsRegion = awsConfig.require('region'); +const current = aws.getCallerIdentity({}); +const kmsKey = new aws.kms.Key("base", { + description: "default key used for untp-playground", + enableKeyRotation: true, + deletionWindowInDays: 20, + policy: JSON.stringify({ + Version: "2012-10-17", + Id: "key-default-1", + Statement: [{ + Action: "kms:*", + Effect: "Allow", + Principal: { + AWS: "*", + }, + Resource: "*", + Sid: "Enable IAM User Permissions", + }], + }), +}, +{protect: true,ignoreChanges: ["prop"] }); + +const keyAlias = new aws.kms.Alias("alias", { + name: "alias/untp-pg-base", + targetKeyId: kmsKey.keyId, +}, +{protect: true, ignoreChanges: ["prop"] }); + +const secretProviderURL = `awskms://${keyAlias}?region=${awsRegion}`; +return secretProviderURL; +} diff --git a/packages/untp-playground/infra/infra/index.ts b/packages/untp-playground/infra/infra/index.ts new file mode 100644 index 00000000..e71d524a --- /dev/null +++ b/packages/untp-playground/infra/infra/index.ts @@ -0,0 +1,6 @@ +import * as aws from "@pulumi/aws"; +import * as awsx from "@pulumi/awsx"; + +export * from './base'; +export * from './state'; +export * from './app'; diff --git a/packages/untp-playground/infra/infra/state.ts b/packages/untp-playground/infra/infra/state.ts new file mode 100644 index 00000000..ff6c36df --- /dev/null +++ b/packages/untp-playground/infra/infra/state.ts @@ -0,0 +1,24 @@ +import * as pulumi from "@pulumi/pulumi"; +import * as aws from "@pulumi/aws"; + +export function createStateBucket (){ + +// Define the S3 bucket where the Pulumi state will be stored +const s3BucketName = "untp-pg-state-bucket"; + +// Create an S3 Bucket for storing state files +const stateBucket = new aws.s3.Bucket(s3BucketName, { + acl: "private", // Private ACL so only the specified AWS credentials can access it + versioning: { + enabled: true, // Enable versioning for backup and recovery + }, + // Additional settings like server-side encryption, lifecycle rules, etc., could be configured here +}, { ignoreChanges: ["prop"] }); + +// Construct the S3 backend URL dynamically based on the bucket we've created +const backendUrl = pulumi.interpolate`s3://${stateBucket.id}`; + +// The state bucket needs to be provisioned before the backend configuration +return { backendUrl, stateBucket } + +} diff --git a/packages/untp-playground/infra/package.json b/packages/untp-playground/infra/package.json new file mode 100644 index 00000000..176106d6 --- /dev/null +++ b/packages/untp-playground/infra/package.json @@ -0,0 +1,13 @@ +{ + "name": "untp-playground", + "main": "index.ts", + "devDependencies": { + "@types/node": "^18", + "typescript": "^5.0.0" + }, + "dependencies": { + "@pulumi/aws": "^6.0.0", + "@pulumi/awsx": "^2.0.2", + "@pulumi/pulumi": "^3.113.0" + } +} diff --git a/packages/untp-playground/infra/tsconfig.json b/packages/untp-playground/infra/tsconfig.json new file mode 100644 index 00000000..f03d1155 --- /dev/null +++ b/packages/untp-playground/infra/tsconfig.json @@ -0,0 +1,18 @@ +{ + "compilerOptions": { + "strict": true, + "outDir": "bin", + "target": "es2020", + "module": "commonjs", + "moduleResolution": "node", + "sourceMap": true, + "experimentalDecorators": true, + "pretty": true, + "noFallthroughCasesInSwitch": true, + "noImplicitReturns": true, + "forceConsistentCasingInFileNames": true + }, + "files": ["index.ts"], + "include": ["**/*.ts"], + "exclude": ["node_modules"] +} diff --git a/packages/untp-playground/infra/yarn.lock b/packages/untp-playground/infra/yarn.lock new file mode 100644 index 00000000..79a4529e --- /dev/null +++ b/packages/untp-playground/infra/yarn.lock @@ -0,0 +1,2925 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@aws-crypto/sha256-browser@5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz#153895ef1dba6f9fce38af550e0ef58988eb649e" + integrity sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw== + dependencies: + "@aws-crypto/sha256-js" "^5.2.0" + "@aws-crypto/supports-web-crypto" "^5.2.0" + "@aws-crypto/util" "^5.2.0" + "@aws-sdk/types" "^3.222.0" + "@aws-sdk/util-locate-window" "^3.0.0" + "@smithy/util-utf8" "^2.0.0" + tslib "^2.6.2" + +"@aws-crypto/sha256-js@5.2.0", "@aws-crypto/sha256-js@^5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz#c4fdb773fdbed9a664fc1a95724e206cf3860042" + integrity sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA== + dependencies: + "@aws-crypto/util" "^5.2.0" + "@aws-sdk/types" "^3.222.0" + tslib "^2.6.2" + +"@aws-crypto/supports-web-crypto@^5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz#a1e399af29269be08e695109aa15da0a07b5b5fb" + integrity sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg== + dependencies: + tslib "^2.6.2" + +"@aws-crypto/util@^5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/util/-/util-5.2.0.tgz#71284c9cffe7927ddadac793c14f14886d3876da" + integrity sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ== + dependencies: + "@aws-sdk/types" "^3.222.0" + "@smithy/util-utf8" "^2.0.0" + tslib "^2.6.2" + +"@aws-sdk/client-ecs@^3.405.0": + version "3.699.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-ecs/-/client-ecs-3.699.0.tgz#9e2a55e85d24f095669477c40b636c6687479cc9" + integrity sha512-IohplQtfljZUzTzhc5UlFATVymLx8UNgxfIKPib5vBPzuteJOA/X/SNBfeqY4XHYZjnBPxvPIeIEZm9ClATU5A== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/client-sso-oidc" "3.699.0" + "@aws-sdk/client-sts" "3.699.0" + "@aws-sdk/core" "3.696.0" + "@aws-sdk/credential-provider-node" "3.699.0" + "@aws-sdk/middleware-host-header" "3.696.0" + "@aws-sdk/middleware-logger" "3.696.0" + "@aws-sdk/middleware-recursion-detection" "3.696.0" + "@aws-sdk/middleware-user-agent" "3.696.0" + "@aws-sdk/region-config-resolver" "3.696.0" + "@aws-sdk/types" "3.696.0" + "@aws-sdk/util-endpoints" "3.696.0" + "@aws-sdk/util-user-agent-browser" "3.696.0" + "@aws-sdk/util-user-agent-node" "3.696.0" + "@smithy/config-resolver" "^3.0.12" + "@smithy/core" "^2.5.3" + "@smithy/fetch-http-handler" "^4.1.1" + "@smithy/hash-node" "^3.0.10" + "@smithy/invalid-dependency" "^3.0.10" + "@smithy/middleware-content-length" "^3.0.12" + "@smithy/middleware-endpoint" "^3.2.3" + "@smithy/middleware-retry" "^3.0.27" + "@smithy/middleware-serde" "^3.0.10" + "@smithy/middleware-stack" "^3.0.10" + "@smithy/node-config-provider" "^3.1.11" + "@smithy/node-http-handler" "^3.3.1" + "@smithy/protocol-http" "^4.1.7" + "@smithy/smithy-client" "^3.4.4" + "@smithy/types" "^3.7.1" + "@smithy/url-parser" "^3.0.10" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.27" + "@smithy/util-defaults-mode-node" "^3.0.27" + "@smithy/util-endpoints" "^2.1.6" + "@smithy/util-middleware" "^3.0.10" + "@smithy/util-retry" "^3.0.10" + "@smithy/util-utf8" "^3.0.0" + "@smithy/util-waiter" "^3.1.9" + "@types/uuid" "^9.0.1" + tslib "^2.6.2" + uuid "^9.0.1" + +"@aws-sdk/client-sso-oidc@3.699.0": + version "3.699.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.699.0.tgz#a35665e681abd518b56330bc7dab63041fbdaf83" + integrity sha512-u8a1GorY5D1l+4FQAf4XBUC1T10/t7neuwT21r0ymrtMFSK2a9QqVHKMoLkvavAwyhJnARSBM9/UQC797PFOFw== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/core" "3.696.0" + "@aws-sdk/credential-provider-node" "3.699.0" + "@aws-sdk/middleware-host-header" "3.696.0" + "@aws-sdk/middleware-logger" "3.696.0" + "@aws-sdk/middleware-recursion-detection" "3.696.0" + "@aws-sdk/middleware-user-agent" "3.696.0" + "@aws-sdk/region-config-resolver" "3.696.0" + "@aws-sdk/types" "3.696.0" + "@aws-sdk/util-endpoints" "3.696.0" + "@aws-sdk/util-user-agent-browser" "3.696.0" + "@aws-sdk/util-user-agent-node" "3.696.0" + "@smithy/config-resolver" "^3.0.12" + "@smithy/core" "^2.5.3" + "@smithy/fetch-http-handler" "^4.1.1" + "@smithy/hash-node" "^3.0.10" + "@smithy/invalid-dependency" "^3.0.10" + "@smithy/middleware-content-length" "^3.0.12" + "@smithy/middleware-endpoint" "^3.2.3" + "@smithy/middleware-retry" "^3.0.27" + "@smithy/middleware-serde" "^3.0.10" + "@smithy/middleware-stack" "^3.0.10" + "@smithy/node-config-provider" "^3.1.11" + "@smithy/node-http-handler" "^3.3.1" + "@smithy/protocol-http" "^4.1.7" + "@smithy/smithy-client" "^3.4.4" + "@smithy/types" "^3.7.1" + "@smithy/url-parser" "^3.0.10" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.27" + "@smithy/util-defaults-mode-node" "^3.0.27" + "@smithy/util-endpoints" "^2.1.6" + "@smithy/util-middleware" "^3.0.10" + "@smithy/util-retry" "^3.0.10" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/client-sso@3.696.0": + version "3.696.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.696.0.tgz#a9251e88cdfc91fb14191f760f68baa835e88f1c" + integrity sha512-q5TTkd08JS0DOkHfUL853tuArf7NrPeqoS5UOvqJho8ibV9Ak/a/HO4kNvy9Nj3cib/toHYHsQIEtecUPSUUrQ== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/core" "3.696.0" + "@aws-sdk/middleware-host-header" "3.696.0" + "@aws-sdk/middleware-logger" "3.696.0" + "@aws-sdk/middleware-recursion-detection" "3.696.0" + "@aws-sdk/middleware-user-agent" "3.696.0" + "@aws-sdk/region-config-resolver" "3.696.0" + "@aws-sdk/types" "3.696.0" + "@aws-sdk/util-endpoints" "3.696.0" + "@aws-sdk/util-user-agent-browser" "3.696.0" + "@aws-sdk/util-user-agent-node" "3.696.0" + "@smithy/config-resolver" "^3.0.12" + "@smithy/core" "^2.5.3" + "@smithy/fetch-http-handler" "^4.1.1" + "@smithy/hash-node" "^3.0.10" + "@smithy/invalid-dependency" "^3.0.10" + "@smithy/middleware-content-length" "^3.0.12" + "@smithy/middleware-endpoint" "^3.2.3" + "@smithy/middleware-retry" "^3.0.27" + "@smithy/middleware-serde" "^3.0.10" + "@smithy/middleware-stack" "^3.0.10" + "@smithy/node-config-provider" "^3.1.11" + "@smithy/node-http-handler" "^3.3.1" + "@smithy/protocol-http" "^4.1.7" + "@smithy/smithy-client" "^3.4.4" + "@smithy/types" "^3.7.1" + "@smithy/url-parser" "^3.0.10" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.27" + "@smithy/util-defaults-mode-node" "^3.0.27" + "@smithy/util-endpoints" "^2.1.6" + "@smithy/util-middleware" "^3.0.10" + "@smithy/util-retry" "^3.0.10" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/client-sts@3.699.0": + version "3.699.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.699.0.tgz#9419be6bbf3809008128117afea8b9129b5a959d" + integrity sha512-++lsn4x2YXsZPIzFVwv3fSUVM55ZT0WRFmPeNilYIhZClxHLmVAWKH4I55cY9ry60/aTKYjzOXkWwyBKGsGvQg== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/client-sso-oidc" "3.699.0" + "@aws-sdk/core" "3.696.0" + "@aws-sdk/credential-provider-node" "3.699.0" + "@aws-sdk/middleware-host-header" "3.696.0" + "@aws-sdk/middleware-logger" "3.696.0" + "@aws-sdk/middleware-recursion-detection" "3.696.0" + "@aws-sdk/middleware-user-agent" "3.696.0" + "@aws-sdk/region-config-resolver" "3.696.0" + "@aws-sdk/types" "3.696.0" + "@aws-sdk/util-endpoints" "3.696.0" + "@aws-sdk/util-user-agent-browser" "3.696.0" + "@aws-sdk/util-user-agent-node" "3.696.0" + "@smithy/config-resolver" "^3.0.12" + "@smithy/core" "^2.5.3" + "@smithy/fetch-http-handler" "^4.1.1" + "@smithy/hash-node" "^3.0.10" + "@smithy/invalid-dependency" "^3.0.10" + "@smithy/middleware-content-length" "^3.0.12" + "@smithy/middleware-endpoint" "^3.2.3" + "@smithy/middleware-retry" "^3.0.27" + "@smithy/middleware-serde" "^3.0.10" + "@smithy/middleware-stack" "^3.0.10" + "@smithy/node-config-provider" "^3.1.11" + "@smithy/node-http-handler" "^3.3.1" + "@smithy/protocol-http" "^4.1.7" + "@smithy/smithy-client" "^3.4.4" + "@smithy/types" "^3.7.1" + "@smithy/url-parser" "^3.0.10" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-body-length-node" "^3.0.0" + "@smithy/util-defaults-mode-browser" "^3.0.27" + "@smithy/util-defaults-mode-node" "^3.0.27" + "@smithy/util-endpoints" "^2.1.6" + "@smithy/util-middleware" "^3.0.10" + "@smithy/util-retry" "^3.0.10" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@aws-sdk/core@3.696.0": + version "3.696.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.696.0.tgz#bdf306bdc019f485738d91d8838eec877861dd26" + integrity sha512-3c9III1k03DgvRZWg8vhVmfIXPG6hAciN9MzQTzqGngzWAELZF/WONRTRQuDFixVtarQatmLHYVw/atGeA2Byw== + dependencies: + "@aws-sdk/types" "3.696.0" + "@smithy/core" "^2.5.3" + "@smithy/node-config-provider" "^3.1.11" + "@smithy/property-provider" "^3.1.9" + "@smithy/protocol-http" "^4.1.7" + "@smithy/signature-v4" "^4.2.2" + "@smithy/smithy-client" "^3.4.4" + "@smithy/types" "^3.7.1" + "@smithy/util-middleware" "^3.0.10" + fast-xml-parser "4.4.1" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-env@3.696.0": + version "3.696.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.696.0.tgz#afad9e61cd03da404bb03e5bce83c49736b85271" + integrity sha512-T9iMFnJL7YTlESLpVFT3fg1Lkb1lD+oiaIC8KMpepb01gDUBIpj9+Y+pA/cgRWW0yRxmkDXNazAE2qQTVFGJzA== + dependencies: + "@aws-sdk/core" "3.696.0" + "@aws-sdk/types" "3.696.0" + "@smithy/property-provider" "^3.1.9" + "@smithy/types" "^3.7.1" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-http@3.696.0": + version "3.696.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.696.0.tgz#535756f9f427fbe851a8c1db7b0e3aaaf7790ba2" + integrity sha512-GV6EbvPi2eq1+WgY/o2RFA3P7HGmnkIzCNmhwtALFlqMroLYWKE7PSeHw66Uh1dFQeVESn0/+hiUNhu1mB0emA== + dependencies: + "@aws-sdk/core" "3.696.0" + "@aws-sdk/types" "3.696.0" + "@smithy/fetch-http-handler" "^4.1.1" + "@smithy/node-http-handler" "^3.3.1" + "@smithy/property-provider" "^3.1.9" + "@smithy/protocol-http" "^4.1.7" + "@smithy/smithy-client" "^3.4.4" + "@smithy/types" "^3.7.1" + "@smithy/util-stream" "^3.3.1" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-ini@3.699.0": + version "3.699.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.699.0.tgz#7919a454b05c5446d04a0d3270807046a029ee30" + integrity sha512-dXmCqjJnKmG37Q+nLjPVu22mNkrGHY8hYoOt3Jo9R2zr5MYV7s/NHsCHr+7E+BZ+tfZYLRPeB1wkpTeHiEcdRw== + dependencies: + "@aws-sdk/core" "3.696.0" + "@aws-sdk/credential-provider-env" "3.696.0" + "@aws-sdk/credential-provider-http" "3.696.0" + "@aws-sdk/credential-provider-process" "3.696.0" + "@aws-sdk/credential-provider-sso" "3.699.0" + "@aws-sdk/credential-provider-web-identity" "3.696.0" + "@aws-sdk/types" "3.696.0" + "@smithy/credential-provider-imds" "^3.2.6" + "@smithy/property-provider" "^3.1.9" + "@smithy/shared-ini-file-loader" "^3.1.10" + "@smithy/types" "^3.7.1" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-node@3.699.0": + version "3.699.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.699.0.tgz#6a1e32a49a7fa71d10c85a927267d1782444def1" + integrity sha512-MmEmNDo1bBtTgRmdNfdQksXu4uXe66s0p1hi1YPrn1h59Q605eq/xiWbGL6/3KdkViH6eGUuABeV2ODld86ylg== + dependencies: + "@aws-sdk/credential-provider-env" "3.696.0" + "@aws-sdk/credential-provider-http" "3.696.0" + "@aws-sdk/credential-provider-ini" "3.699.0" + "@aws-sdk/credential-provider-process" "3.696.0" + "@aws-sdk/credential-provider-sso" "3.699.0" + "@aws-sdk/credential-provider-web-identity" "3.696.0" + "@aws-sdk/types" "3.696.0" + "@smithy/credential-provider-imds" "^3.2.6" + "@smithy/property-provider" "^3.1.9" + "@smithy/shared-ini-file-loader" "^3.1.10" + "@smithy/types" "^3.7.1" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-process@3.696.0": + version "3.696.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.696.0.tgz#45da7b948aa40987b413c7c0d4a8125bf1433651" + integrity sha512-mL1RcFDe9sfmyU5K1nuFkO8UiJXXxLX4JO1gVaDIOvPqwStpUAwi3A1BoeZhWZZNQsiKI810RnYGo0E0WB/hUA== + dependencies: + "@aws-sdk/core" "3.696.0" + "@aws-sdk/types" "3.696.0" + "@smithy/property-provider" "^3.1.9" + "@smithy/shared-ini-file-loader" "^3.1.10" + "@smithy/types" "^3.7.1" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-sso@3.699.0": + version "3.699.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.699.0.tgz#515e2ecd407bace3141b8b192505631de415667e" + integrity sha512-Ekp2cZG4pl9D8+uKWm4qO1xcm8/MeiI8f+dnlZm8aQzizeC+aXYy9GyoclSf6daK8KfRPiRfM7ZHBBL5dAfdMA== + dependencies: + "@aws-sdk/client-sso" "3.696.0" + "@aws-sdk/core" "3.696.0" + "@aws-sdk/token-providers" "3.699.0" + "@aws-sdk/types" "3.696.0" + "@smithy/property-provider" "^3.1.9" + "@smithy/shared-ini-file-loader" "^3.1.10" + "@smithy/types" "^3.7.1" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-web-identity@3.696.0": + version "3.696.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.696.0.tgz#3f97c00bd3bc7cfd988e098af67ff7c8392ce188" + integrity sha512-XJ/CVlWChM0VCoc259vWguFUjJDn/QwDqHwbx+K9cg3v6yrqXfK5ai+p/6lx0nQpnk4JzPVeYYxWRpaTsGC9rg== + dependencies: + "@aws-sdk/core" "3.696.0" + "@aws-sdk/types" "3.696.0" + "@smithy/property-provider" "^3.1.9" + "@smithy/types" "^3.7.1" + tslib "^2.6.2" + +"@aws-sdk/middleware-host-header@3.696.0": + version "3.696.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.696.0.tgz#20aae0efeb973ca1a6db1b1014acbcdd06ad472e" + integrity sha512-zELJp9Ta2zkX7ELggMN9qMCgekqZhFC5V2rOr4hJDEb/Tte7gpfKSObAnw/3AYiVqt36sjHKfdkoTsuwGdEoDg== + dependencies: + "@aws-sdk/types" "3.696.0" + "@smithy/protocol-http" "^4.1.7" + "@smithy/types" "^3.7.1" + tslib "^2.6.2" + +"@aws-sdk/middleware-logger@3.696.0": + version "3.696.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.696.0.tgz#79d68b7e5ba181511ade769b11165bfb7527181e" + integrity sha512-KhkHt+8AjCxcR/5Zp3++YPJPpFQzxpr+jmONiT/Jw2yqnSngZ0Yspm5wGoRx2hS1HJbyZNuaOWEGuJoxLeBKfA== + dependencies: + "@aws-sdk/types" "3.696.0" + "@smithy/types" "^3.7.1" + tslib "^2.6.2" + +"@aws-sdk/middleware-recursion-detection@3.696.0": + version "3.696.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.696.0.tgz#aa437d645d74cb785905162266741125c18f182a" + integrity sha512-si/maV3Z0hH7qa99f9ru2xpS5HlfSVcasRlNUXKSDm611i7jFMWwGNLUOXFAOLhXotPX5G3Z6BLwL34oDeBMug== + dependencies: + "@aws-sdk/types" "3.696.0" + "@smithy/protocol-http" "^4.1.7" + "@smithy/types" "^3.7.1" + tslib "^2.6.2" + +"@aws-sdk/middleware-user-agent@3.696.0": + version "3.696.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.696.0.tgz#626c89300f6b3af5aefc1cb6d9ac19eebf8bc97d" + integrity sha512-Lvyj8CTyxrHI6GHd2YVZKIRI5Fmnugt3cpJo0VrKKEgK5zMySwEZ1n4dqPK6czYRWKd5+WnYHYAuU+Wdk6Jsjw== + dependencies: + "@aws-sdk/core" "3.696.0" + "@aws-sdk/types" "3.696.0" + "@aws-sdk/util-endpoints" "3.696.0" + "@smithy/core" "^2.5.3" + "@smithy/protocol-http" "^4.1.7" + "@smithy/types" "^3.7.1" + tslib "^2.6.2" + +"@aws-sdk/region-config-resolver@3.696.0": + version "3.696.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/region-config-resolver/-/region-config-resolver-3.696.0.tgz#146c428702c09db75df5234b5d40ce49d147d0cf" + integrity sha512-7EuH142lBXjI8yH6dVS/CZeiK/WZsmb/8zP6bQbVYpMrppSTgB3MzZZdxVZGzL5r8zPQOU10wLC4kIMy0qdBVQ== + dependencies: + "@aws-sdk/types" "3.696.0" + "@smithy/node-config-provider" "^3.1.11" + "@smithy/types" "^3.7.1" + "@smithy/util-config-provider" "^3.0.0" + "@smithy/util-middleware" "^3.0.10" + tslib "^2.6.2" + +"@aws-sdk/token-providers@3.699.0": + version "3.699.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.699.0.tgz#354990dd52d651c1f7a64c4c0894c868cdc81de2" + integrity sha512-kuiEW9DWs7fNos/SM+y58HCPhcIzm1nEZLhe2/7/6+TvAYLuEWURYsbK48gzsxXlaJ2k/jGY3nIsA7RptbMOwA== + dependencies: + "@aws-sdk/types" "3.696.0" + "@smithy/property-provider" "^3.1.9" + "@smithy/shared-ini-file-loader" "^3.1.10" + "@smithy/types" "^3.7.1" + tslib "^2.6.2" + +"@aws-sdk/types@3.696.0", "@aws-sdk/types@^3.222.0": + version "3.696.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.696.0.tgz#559c3df74dc389b6f40ba6ec6daffeab155330cd" + integrity sha512-9rTvUJIAj5d3//U5FDPWGJ1nFJLuWb30vugGOrWk7aNZ6y9tuA3PI7Cc9dP8WEXKVyK1vuuk8rSFP2iqXnlgrw== + dependencies: + "@smithy/types" "^3.7.1" + tslib "^2.6.2" + +"@aws-sdk/util-endpoints@3.696.0": + version "3.696.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.696.0.tgz#79e18714419a423a64094381b849214499f00577" + integrity sha512-T5s0IlBVX+gkb9g/I6CLt4yAZVzMSiGnbUqWihWsHvQR1WOoIcndQy/Oz/IJXT9T2ipoy7a80gzV6a5mglrioA== + dependencies: + "@aws-sdk/types" "3.696.0" + "@smithy/types" "^3.7.1" + "@smithy/util-endpoints" "^2.1.6" + tslib "^2.6.2" + +"@aws-sdk/util-locate-window@^3.0.0": + version "3.693.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-locate-window/-/util-locate-window-3.693.0.tgz#1160f6d055cf074ca198eb8ecf89b6311537ad6c" + integrity sha512-ttrag6haJLWABhLqtg1Uf+4LgHWIMOVSYL+VYZmAp2v4PUGOwWmWQH0Zk8RM7YuQcLfH/EoR72/Yxz6A4FKcuw== + dependencies: + tslib "^2.6.2" + +"@aws-sdk/util-user-agent-browser@3.696.0": + version "3.696.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.696.0.tgz#2034765c81313d5e50783662332d35ec041755a0" + integrity sha512-Z5rVNDdmPOe6ELoM5AhF/ja5tSjbe6ctSctDPb0JdDf4dT0v2MfwhJKzXju2RzX8Es/77Glh7MlaXLE0kCB9+Q== + dependencies: + "@aws-sdk/types" "3.696.0" + "@smithy/types" "^3.7.1" + bowser "^2.11.0" + tslib "^2.6.2" + +"@aws-sdk/util-user-agent-node@3.696.0": + version "3.696.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.696.0.tgz#3267119e2be02185f3b4e0beb0cc495d392260b4" + integrity sha512-KhKqcfyXIB0SCCt+qsu4eJjsfiOrNzK5dCV7RAW2YIpp+msxGUUX0NdRE9rkzjiv+3EMktgJm3eEIS+yxtlVdQ== + dependencies: + "@aws-sdk/middleware-user-agent" "3.696.0" + "@aws-sdk/types" "3.696.0" + "@smithy/node-config-provider" "^3.1.11" + "@smithy/types" "^3.7.1" + tslib "^2.6.2" + +"@grpc/grpc-js@^1.10.1": + version "1.12.2" + resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.12.2.tgz#97eda82dd49bb9c24eaf6434ea8d7de446e95aac" + integrity sha512-bgxdZmgTrJZX50OjyVwz3+mNEnCTNkh3cIqGPWVNeW9jX6bn1ZkU80uPd+67/ZpIJIjRQ9qaHCjhavyoWYxumg== + dependencies: + "@grpc/proto-loader" "^0.7.13" + "@js-sdsl/ordered-map" "^4.4.2" + +"@grpc/proto-loader@^0.7.13": + version "0.7.13" + resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.7.13.tgz#f6a44b2b7c9f7b609f5748c6eac2d420e37670cf" + integrity sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw== + dependencies: + lodash.camelcase "^4.3.0" + long "^5.0.0" + protobufjs "^7.2.5" + yargs "^17.7.2" + +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + +"@isaacs/string-locale-compare@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz#291c227e93fd407a96ecd59879a35809120e432b" + integrity sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ== + +"@js-sdsl/ordered-map@^4.4.2": + version "4.4.2" + resolved "https://registry.yarnpkg.com/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz#9299f82874bab9e4c7f9c48d865becbfe8d6907c" + integrity sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw== + +"@logdna/tail-file@^2.0.6": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@logdna/tail-file/-/tail-file-2.2.0.tgz#158a362d293f940dacfd07c835bf3ae2f9e0455a" + integrity sha512-XGSsWDweP80Fks16lwkAUIr54ICyBs6PsI4mpfTLQaWgEJRtY9xEV+PeyDpJ+sJEGZxqINlpmAwe/6tS1pP8Ng== + +"@npmcli/agent@^2.0.0": + version "2.2.2" + resolved "https://registry.yarnpkg.com/@npmcli/agent/-/agent-2.2.2.tgz#967604918e62f620a648c7975461c9c9e74fc5d5" + integrity sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og== + dependencies: + agent-base "^7.1.0" + http-proxy-agent "^7.0.0" + https-proxy-agent "^7.0.1" + lru-cache "^10.0.1" + socks-proxy-agent "^8.0.3" + +"@npmcli/arborist@^7.3.1": + version "7.5.4" + resolved "https://registry.yarnpkg.com/@npmcli/arborist/-/arborist-7.5.4.tgz#3dd9e531d6464ef6715e964c188e0880c471ac9b" + integrity sha512-nWtIc6QwwoUORCRNzKx4ypHqCk3drI+5aeYdMTQQiRCcn4lOOgfQh7WyZobGYTxXPSq1VwV53lkpN/BRlRk08g== + dependencies: + "@isaacs/string-locale-compare" "^1.1.0" + "@npmcli/fs" "^3.1.1" + "@npmcli/installed-package-contents" "^2.1.0" + "@npmcli/map-workspaces" "^3.0.2" + "@npmcli/metavuln-calculator" "^7.1.1" + "@npmcli/name-from-folder" "^2.0.0" + "@npmcli/node-gyp" "^3.0.0" + "@npmcli/package-json" "^5.1.0" + "@npmcli/query" "^3.1.0" + "@npmcli/redact" "^2.0.0" + "@npmcli/run-script" "^8.1.0" + bin-links "^4.0.4" + cacache "^18.0.3" + common-ancestor-path "^1.0.1" + hosted-git-info "^7.0.2" + json-parse-even-better-errors "^3.0.2" + json-stringify-nice "^1.1.4" + lru-cache "^10.2.2" + minimatch "^9.0.4" + nopt "^7.2.1" + npm-install-checks "^6.2.0" + npm-package-arg "^11.0.2" + npm-pick-manifest "^9.0.1" + npm-registry-fetch "^17.0.1" + pacote "^18.0.6" + parse-conflict-json "^3.0.0" + proc-log "^4.2.0" + proggy "^2.0.0" + promise-all-reject-late "^1.0.0" + promise-call-limit "^3.0.1" + read-package-json-fast "^3.0.2" + semver "^7.3.7" + ssri "^10.0.6" + treeverse "^3.0.0" + walk-up-path "^3.0.1" + +"@npmcli/fs@^3.1.0", "@npmcli/fs@^3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-3.1.1.tgz#59cdaa5adca95d135fc00f2bb53f5771575ce726" + integrity sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg== + dependencies: + semver "^7.3.5" + +"@npmcli/git@^5.0.0": + version "5.0.8" + resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-5.0.8.tgz#8ba3ff8724192d9ccb2735a2aa5380a992c5d3d1" + integrity sha512-liASfw5cqhjNW9UFd+ruwwdEf/lbOAQjLL2XY2dFW/bkJheXDYZgOyul/4gVvEV4BWkTXjYGmDqMw9uegdbJNQ== + dependencies: + "@npmcli/promise-spawn" "^7.0.0" + ini "^4.1.3" + lru-cache "^10.0.1" + npm-pick-manifest "^9.0.0" + proc-log "^4.0.0" + promise-inflight "^1.0.1" + promise-retry "^2.0.1" + semver "^7.3.5" + which "^4.0.0" + +"@npmcli/installed-package-contents@^2.0.1", "@npmcli/installed-package-contents@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@npmcli/installed-package-contents/-/installed-package-contents-2.1.0.tgz#63048e5f6e40947a3a88dcbcb4fd9b76fdd37c17" + integrity sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w== + dependencies: + npm-bundled "^3.0.0" + npm-normalize-package-bin "^3.0.0" + +"@npmcli/map-workspaces@^3.0.2": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@npmcli/map-workspaces/-/map-workspaces-3.0.6.tgz#27dc06c20c35ef01e45a08909cab9cb3da08cea6" + integrity sha512-tkYs0OYnzQm6iIRdfy+LcLBjcKuQCeE5YLb8KnrIlutJfheNaPvPpgoFEyEFgbjzl5PLZ3IA/BWAwRU0eHuQDA== + dependencies: + "@npmcli/name-from-folder" "^2.0.0" + glob "^10.2.2" + minimatch "^9.0.0" + read-package-json-fast "^3.0.0" + +"@npmcli/metavuln-calculator@^7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@npmcli/metavuln-calculator/-/metavuln-calculator-7.1.1.tgz#4d3b6c3192f72bc8ad59476de0da939c33877fcf" + integrity sha512-Nkxf96V0lAx3HCpVda7Vw4P23RILgdi/5K1fmj2tZkWIYLpXAN8k2UVVOsW16TsS5F8Ws2I7Cm+PU1/rsVF47g== + dependencies: + cacache "^18.0.0" + json-parse-even-better-errors "^3.0.0" + pacote "^18.0.0" + proc-log "^4.1.0" + semver "^7.3.5" + +"@npmcli/name-from-folder@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/name-from-folder/-/name-from-folder-2.0.0.tgz#c44d3a7c6d5c184bb6036f4d5995eee298945815" + integrity sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg== + +"@npmcli/node-gyp@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz#101b2d0490ef1aa20ed460e4c0813f0db560545a" + integrity sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA== + +"@npmcli/package-json@^5.0.0", "@npmcli/package-json@^5.1.0": + version "5.2.1" + resolved "https://registry.yarnpkg.com/@npmcli/package-json/-/package-json-5.2.1.tgz#df69477b1023b81ff8503f2b9db4db4faea567ed" + integrity sha512-f7zYC6kQautXHvNbLEWgD/uGu1+xCn9izgqBfgItWSx22U0ZDekxN08A1vM8cTxj/cRVe0Q94Ode+tdoYmIOOQ== + dependencies: + "@npmcli/git" "^5.0.0" + glob "^10.2.2" + hosted-git-info "^7.0.0" + json-parse-even-better-errors "^3.0.0" + normalize-package-data "^6.0.0" + proc-log "^4.0.0" + semver "^7.5.3" + +"@npmcli/promise-spawn@^7.0.0": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-7.0.2.tgz#1d53d34ffeb5d151bfa8ec661bcccda8bbdfd532" + integrity sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ== + dependencies: + which "^4.0.0" + +"@npmcli/query@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@npmcli/query/-/query-3.1.0.tgz#bc202c59e122a06cf8acab91c795edda2cdad42c" + integrity sha512-C/iR0tk7KSKGldibYIB9x8GtO/0Bd0I2mhOaDb8ucQL/bQVTmGoeREaFj64Z5+iCBRf3dQfed0CjJL7I8iTkiQ== + dependencies: + postcss-selector-parser "^6.0.10" + +"@npmcli/redact@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@npmcli/redact/-/redact-2.0.1.tgz#95432fd566e63b35c04494621767a4312c316762" + integrity sha512-YgsR5jCQZhVmTJvjduTOIHph0L73pK8xwMVaDY0PatySqVM9AZj93jpoXYSJqfHFxFkN9dmqTw6OiqExsS3LPw== + +"@npmcli/run-script@^8.0.0", "@npmcli/run-script@^8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-8.1.0.tgz#a563e5e29b1ca4e648a6b1bbbfe7220b4bfe39fc" + integrity sha512-y7efHHwghQfk28G2z3tlZ67pLG0XdfYbcVG26r7YIXALRsrVQcTq4/tdenSmdOrEsNahIYA/eh8aEVROWGFUDg== + dependencies: + "@npmcli/node-gyp" "^3.0.0" + "@npmcli/package-json" "^5.0.0" + "@npmcli/promise-spawn" "^7.0.0" + node-gyp "^10.0.0" + proc-log "^4.0.0" + which "^4.0.0" + +"@opentelemetry/api-logs@0.52.1": + version "0.52.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/api-logs/-/api-logs-0.52.1.tgz#52906375da4d64c206b0c4cb8ffa209214654ecc" + integrity sha512-qnSqB2DQ9TPP96dl8cDubDvrUyWc0/sK81xHTK8eSUspzDM3bsewX903qclQFvVhgStjRWdC5bLb3kQqMkfV5A== + dependencies: + "@opentelemetry/api" "^1.0.0" + +"@opentelemetry/api@^1.0.0", "@opentelemetry/api@^1.9": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.9.0.tgz#d03eba68273dc0f7509e2a3d5cba21eae10379fe" + integrity sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg== + +"@opentelemetry/context-async-hooks@1.28.0": + version "1.28.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/context-async-hooks/-/context-async-hooks-1.28.0.tgz#287afda2b75cb226f70d433244c3ef6f6dd8abdd" + integrity sha512-igcl4Ve+F1N2063PJUkesk/GkYyuGIWinYkSyAFTnIj3gzrOgvOA4k747XNdL47HRRL1w/qh7UW8NDuxOLvKFA== + +"@opentelemetry/core@1.28.0": + version "1.28.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-1.28.0.tgz#e97290a3e36c59480ffb2287fe2713c66749274c" + integrity sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw== + dependencies: + "@opentelemetry/semantic-conventions" "1.27.0" + +"@opentelemetry/exporter-zipkin@^1.25": + version "1.28.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.28.0.tgz#6e5ca7f43f79d0e3240ca7029f8dbc43af64c1b7" + integrity sha512-AMwr3eGXaPEH7gk8yhcUcen31VXy1yU5VJETu0pCfGpggGCYmhm0FKgYBpL5/vlIgQJWU/sW2vIjCL7aSilpKg== + dependencies: + "@opentelemetry/core" "1.28.0" + "@opentelemetry/resources" "1.28.0" + "@opentelemetry/sdk-trace-base" "1.28.0" + "@opentelemetry/semantic-conventions" "1.27.0" + +"@opentelemetry/instrumentation-grpc@^0.52": + version "0.52.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-grpc/-/instrumentation-grpc-0.52.1.tgz#906ce4756a0eb1b050cd89b6b97dc09efe3ae3e3" + integrity sha512-EdSDiDSAO+XRXk/ZN128qQpBo1I51+Uay/LUPcPQhSRGf7fBPIEUBeOLQiItguGsug5MGOYjql2w/1wCQF3fdQ== + dependencies: + "@opentelemetry/instrumentation" "0.52.1" + "@opentelemetry/semantic-conventions" "1.25.1" + +"@opentelemetry/instrumentation@0.52.1", "@opentelemetry/instrumentation@^0.52": + version "0.52.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation/-/instrumentation-0.52.1.tgz#2e7e46a38bd7afbf03cf688c862b0b43418b7f48" + integrity sha512-uXJbYU/5/MBHjMp1FqrILLRuiJCs3Ofk0MeRDk8g1S1gD47U8X3JnSwcMO1rtRo1x1a7zKaQHaoYu49p/4eSKw== + dependencies: + "@opentelemetry/api-logs" "0.52.1" + "@types/shimmer" "^1.0.2" + import-in-the-middle "^1.8.1" + require-in-the-middle "^7.1.1" + semver "^7.5.2" + shimmer "^1.2.1" + +"@opentelemetry/propagator-b3@1.28.0": + version "1.28.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/propagator-b3/-/propagator-b3-1.28.0.tgz#5e4c87c2097a18f88a5a4d19a57350f55517bb8a" + integrity sha512-Q7HVDIMwhN5RxL4bECMT4BdbyYSAKkC6U/RGn4NpO/cbqP6ZRg+BS7fPo/pGZi2w8AHfpIGQFXQmE8d2PC5xxQ== + dependencies: + "@opentelemetry/core" "1.28.0" + +"@opentelemetry/propagator-jaeger@1.28.0": + version "1.28.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.28.0.tgz#427158c3d0f8ea77c205c7b9cde09091c7f25ae3" + integrity sha512-wKJ94+s8467CnIRgoSRh0yXm/te0QMOwTq9J01PfG/RzYZvlvN8aRisN2oZ9SznB45dDGnMj3BhUlchSA9cEKA== + dependencies: + "@opentelemetry/core" "1.28.0" + +"@opentelemetry/resources@1.28.0", "@opentelemetry/resources@^1.25": + version "1.28.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-1.28.0.tgz#c8c27ae7559c817f9d117f1bf96d76f893fb29f5" + integrity sha512-cIyXSVJjGeTICENN40YSvLDAq4Y2502hGK3iN7tfdynQLKWb3XWZQEkPc+eSx47kiy11YeFAlYkEfXwR1w8kfw== + dependencies: + "@opentelemetry/core" "1.28.0" + "@opentelemetry/semantic-conventions" "1.27.0" + +"@opentelemetry/sdk-trace-base@1.28.0", "@opentelemetry/sdk-trace-base@^1.25": + version "1.28.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.28.0.tgz#6195dc8cd78bd74394cf54c67c5cbd8d1528516c" + integrity sha512-ceUVWuCpIao7Y5xE02Xs3nQi0tOGmMea17ecBdwtCvdo9ekmO+ijc9RFDgfifMl7XCBf41zne/1POM3LqSTZDA== + dependencies: + "@opentelemetry/core" "1.28.0" + "@opentelemetry/resources" "1.28.0" + "@opentelemetry/semantic-conventions" "1.27.0" + +"@opentelemetry/sdk-trace-node@^1.25": + version "1.28.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.28.0.tgz#e3384802e12c689bb7a84809a732d091a2fbda09" + integrity sha512-N0sYfYXvHpP0FNIyc+UfhLnLSTOuZLytV0qQVrDWIlABeD/DWJIGttS7nYeR14gQLXch0M1DW8zm3VeN6Opwtg== + dependencies: + "@opentelemetry/context-async-hooks" "1.28.0" + "@opentelemetry/core" "1.28.0" + "@opentelemetry/propagator-b3" "1.28.0" + "@opentelemetry/propagator-jaeger" "1.28.0" + "@opentelemetry/sdk-trace-base" "1.28.0" + semver "^7.5.2" + +"@opentelemetry/semantic-conventions@1.25.1": + version "1.25.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.25.1.tgz#0deecb386197c5e9c2c28f2f89f51fb8ae9f145e" + integrity sha512-ZDjMJJQRlyk8A1KZFCc+bCbsyrn1wTwdNt56F7twdfUfnHUZUq77/WfONCj8p72NZOyP7pNTdUWSTYC3GTbuuQ== + +"@opentelemetry/semantic-conventions@1.27.0": + version "1.27.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz#1a857dcc95a5ab30122e04417148211e6f945e6c" + integrity sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg== + +"@opentelemetry/semantic-conventions@^1.25": + version "1.28.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz#337fb2bca0453d0726696e745f50064411f646d6" + integrity sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA== + +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + +"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" + integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== + +"@protobufjs/base64@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" + integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== + +"@protobufjs/codegen@^2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" + integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== + +"@protobufjs/eventemitter@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" + integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== + +"@protobufjs/fetch@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" + integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== + dependencies: + "@protobufjs/aspromise" "^1.1.1" + "@protobufjs/inquire" "^1.1.0" + +"@protobufjs/float@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" + integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== + +"@protobufjs/inquire@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" + integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== + +"@protobufjs/path@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" + integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== + +"@protobufjs/pool@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" + integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== + +"@protobufjs/utf8@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" + integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== + +"@pulumi/aws@^6.0.0", "@pulumi/aws@^6.59.1": + version "6.61.0" + resolved "https://registry.yarnpkg.com/@pulumi/aws/-/aws-6.61.0.tgz#dd4f11d39a74e16c22507a581c1a92a98302e363" + integrity sha512-7ZqwEj6Zh3+bmB8OVCCin93qqlUeBGpp76YjiwghfMa3Q4hvpDsi1tEu7/+3QDPWxH/HRbp6AeHQ8UYw0HalTg== + dependencies: + "@pulumi/pulumi" "^3.136.0" + builtin-modules "3.0.0" + mime "^2.0.0" + resolve "^1.7.1" + +"@pulumi/awsx@^2.0.2": + version "2.19.0" + resolved "https://registry.yarnpkg.com/@pulumi/awsx/-/awsx-2.19.0.tgz#63620b8d8ffc5b8fad617fef80f000fd327f81a3" + integrity sha512-7byK+zf2eTKRPdYHHSS5lifqsI0Km6ZkB0rCb332zQ4Nm0stS+YjeCIkbQtjJWdDtXUXPP60SX5na/9vfQYAow== + dependencies: + "@aws-sdk/client-ecs" "^3.405.0" + "@pulumi/aws" "^6.59.1" + "@pulumi/docker" "^4.5.1" + "@pulumi/pulumi" "^3.136.0" + "@types/aws-lambda" "^8.10.23" + docker-classic "npm:@pulumi/docker@3.6.1" + mime "^2.0.0" + +"@pulumi/docker@^4.5.1": + version "4.5.7" + resolved "https://registry.yarnpkg.com/@pulumi/docker/-/docker-4.5.7.tgz#56ec0782a1a52b5a1dc16230dcd7e07c0b94be01" + integrity sha512-z0rr1PoJXemafrNl0oPjQJlGRNbMKN0z50cKhmcuMVsiNTt36cDLXw7kpclgddgdwkM6ZU5zMRyaA1rcNuXTlg== + dependencies: + "@pulumi/pulumi" "^3.136.0" + semver "^5.4.0" + +"@pulumi/pulumi@^3.0.0", "@pulumi/pulumi@^3.113.0", "@pulumi/pulumi@^3.136.0": + version "3.142.0" + resolved "https://registry.yarnpkg.com/@pulumi/pulumi/-/pulumi-3.142.0.tgz#dd7bb330576f170365fa711f0b5f87394b964885" + integrity sha512-2RP4EDIDj4A980u/KThEUe5h5b0LcSaOqw9cA8Cxi3SiP+GC91zecJNbko4GOSR8kxsNd8EY327pVxt7fjTKhA== + dependencies: + "@grpc/grpc-js" "^1.10.1" + "@logdna/tail-file" "^2.0.6" + "@npmcli/arborist" "^7.3.1" + "@opentelemetry/api" "^1.9" + "@opentelemetry/exporter-zipkin" "^1.25" + "@opentelemetry/instrumentation" "^0.52" + "@opentelemetry/instrumentation-grpc" "^0.52" + "@opentelemetry/resources" "^1.25" + "@opentelemetry/sdk-trace-base" "^1.25" + "@opentelemetry/sdk-trace-node" "^1.25" + "@opentelemetry/semantic-conventions" "^1.25" + "@pulumi/query" "^0.3.0" + "@types/google-protobuf" "^3.15.5" + "@types/semver" "^7.5.6" + "@types/tmp" "^0.2.6" + execa "^5.1.0" + fdir "^6.1.1" + google-protobuf "^3.5.0" + got "^11.8.6" + ini "^2.0.0" + js-yaml "^3.14.0" + minimist "^1.2.6" + normalize-package-data "^6.0.0" + picomatch "^3.0.1" + pkg-dir "^7.0.0" + require-from-string "^2.0.1" + semver "^7.5.2" + source-map-support "^0.5.6" + tmp "^0.2.1" + upath "^1.1.0" + +"@pulumi/query@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@pulumi/query/-/query-0.3.0.tgz#f496608e86a18c3dd31b6c533408e2441c29071d" + integrity sha512-xfo+yLRM2zVjVEA4p23IjQWzyWl1ZhWOGobsBqRpIarzLvwNH/RAGaoehdxlhx4X92302DrpdIFgTICMN4P38w== + +"@sigstore/bundle@^2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@sigstore/bundle/-/bundle-2.3.2.tgz#ad4dbb95d665405fd4a7a02c8a073dbd01e4e95e" + integrity sha512-wueKWDk70QixNLB363yHc2D2ItTgYiMTdPwK8D9dKQMR3ZQ0c35IxP5xnwQ8cNLoCgCRcHf14kE+CLIvNX1zmA== + dependencies: + "@sigstore/protobuf-specs" "^0.3.2" + +"@sigstore/core@^1.0.0", "@sigstore/core@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@sigstore/core/-/core-1.1.0.tgz#5583d8f7ffe599fa0a89f2bf289301a5af262380" + integrity sha512-JzBqdVIyqm2FRQCulY6nbQzMpJJpSiJ8XXWMhtOX9eKgaXXpfNOF53lzQEjIydlStnd/eFtuC1dW4VYdD93oRg== + +"@sigstore/protobuf-specs@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@sigstore/protobuf-specs/-/protobuf-specs-0.3.2.tgz#5becf88e494a920f548d0163e2978f81b44b7d6f" + integrity sha512-c6B0ehIWxMI8wiS/bj6rHMPqeFvngFV7cDU/MY+B16P9Z3Mp9k8L93eYZ7BYzSickzuqAQqAq0V956b3Ju6mLw== + +"@sigstore/sign@^2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@sigstore/sign/-/sign-2.3.2.tgz#d3d01e56d03af96fd5c3a9b9897516b1233fc1c4" + integrity sha512-5Vz5dPVuunIIvC5vBb0APwo7qKA4G9yM48kPWJT+OEERs40md5GoUR1yedwpekWZ4m0Hhw44m6zU+ObsON+iDA== + dependencies: + "@sigstore/bundle" "^2.3.2" + "@sigstore/core" "^1.0.0" + "@sigstore/protobuf-specs" "^0.3.2" + make-fetch-happen "^13.0.1" + proc-log "^4.2.0" + promise-retry "^2.0.1" + +"@sigstore/tuf@^2.3.4": + version "2.3.4" + resolved "https://registry.yarnpkg.com/@sigstore/tuf/-/tuf-2.3.4.tgz#da1d2a20144f3b87c0172920cbc8dcc7851ca27c" + integrity sha512-44vtsveTPUpqhm9NCrbU8CWLe3Vck2HO1PNLw7RIajbB7xhtn5RBPm1VNSCMwqGYHhDsBJG8gDF0q4lgydsJvw== + dependencies: + "@sigstore/protobuf-specs" "^0.3.2" + tuf-js "^2.2.1" + +"@sigstore/verify@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@sigstore/verify/-/verify-1.2.1.tgz#c7e60241b432890dcb8bd8322427f6062ef819e1" + integrity sha512-8iKx79/F73DKbGfRf7+t4dqrc0bRr0thdPrxAtCKWRm/F0tG71i6O1rvlnScncJLLBZHn3h8M3c1BSUAb9yu8g== + dependencies: + "@sigstore/bundle" "^2.3.2" + "@sigstore/core" "^1.1.0" + "@sigstore/protobuf-specs" "^0.3.2" + +"@sindresorhus/is@^4.0.0": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" + integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== + +"@smithy/abort-controller@^3.1.8": + version "3.1.8" + resolved "https://registry.yarnpkg.com/@smithy/abort-controller/-/abort-controller-3.1.8.tgz#ce0c10ddb2b39107d70b06bbb8e4f6e368bc551d" + integrity sha512-+3DOBcUn5/rVjlxGvUPKc416SExarAQ+Qe0bqk30YSUjbepwpS7QN0cyKUSifvLJhdMZ0WPzPP5ymut0oonrpQ== + dependencies: + "@smithy/types" "^3.7.1" + tslib "^2.6.2" + +"@smithy/config-resolver@^3.0.12": + version "3.0.12" + resolved "https://registry.yarnpkg.com/@smithy/config-resolver/-/config-resolver-3.0.12.tgz#f355f95fcb5ee932a90871a488a4f2128e8ad3ac" + integrity sha512-YAJP9UJFZRZ8N+UruTeq78zkdjUHmzsY62J4qKWZ4SXB4QXJ/+680EfXXgkYA2xj77ooMqtUY9m406zGNqwivQ== + dependencies: + "@smithy/node-config-provider" "^3.1.11" + "@smithy/types" "^3.7.1" + "@smithy/util-config-provider" "^3.0.0" + "@smithy/util-middleware" "^3.0.10" + tslib "^2.6.2" + +"@smithy/core@^2.5.3", "@smithy/core@^2.5.4": + version "2.5.4" + resolved "https://registry.yarnpkg.com/@smithy/core/-/core-2.5.4.tgz#b9eb9c3a8f47d550dcdea19cc95434e66e5556cf" + integrity sha512-iFh2Ymn2sCziBRLPuOOxRPkuCx/2gBdXtBGuCUFLUe6bWYjKnhHyIPqGeNkLZ5Aco/5GjebRTBFiWID3sDbrKw== + dependencies: + "@smithy/middleware-serde" "^3.0.10" + "@smithy/protocol-http" "^4.1.7" + "@smithy/types" "^3.7.1" + "@smithy/util-body-length-browser" "^3.0.0" + "@smithy/util-middleware" "^3.0.10" + "@smithy/util-stream" "^3.3.1" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@smithy/credential-provider-imds@^3.2.6", "@smithy/credential-provider-imds@^3.2.7": + version "3.2.7" + resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.7.tgz#6eedf87ba0238723ec46d8ce0f18e276685a702d" + integrity sha512-cEfbau+rrWF8ylkmmVAObOmjbTIzKyUC5TkBL58SbLywD0RCBC4JAUKbmtSm2w5KUJNRPGgpGFMvE2FKnuNlWQ== + dependencies: + "@smithy/node-config-provider" "^3.1.11" + "@smithy/property-provider" "^3.1.10" + "@smithy/types" "^3.7.1" + "@smithy/url-parser" "^3.0.10" + tslib "^2.6.2" + +"@smithy/fetch-http-handler@^4.1.1": + version "4.1.1" + resolved "https://registry.yarnpkg.com/@smithy/fetch-http-handler/-/fetch-http-handler-4.1.1.tgz#cead80762af4cdea11e7eeb627ea1c4835265dfa" + integrity sha512-bH7QW0+JdX0bPBadXt8GwMof/jz0H28I84hU1Uet9ISpzUqXqRQ3fEZJ+ANPOhzSEczYvANNl3uDQDYArSFDtA== + dependencies: + "@smithy/protocol-http" "^4.1.7" + "@smithy/querystring-builder" "^3.0.10" + "@smithy/types" "^3.7.1" + "@smithy/util-base64" "^3.0.0" + tslib "^2.6.2" + +"@smithy/hash-node@^3.0.10": + version "3.0.10" + resolved "https://registry.yarnpkg.com/@smithy/hash-node/-/hash-node-3.0.10.tgz#93c857b4bff3a48884886440fd9772924887e592" + integrity sha512-3zWGWCHI+FlJ5WJwx73Mw2llYR8aflVyZN5JhoqLxbdPZi6UyKSdCeXAWJw9ja22m6S6Tzz1KZ+kAaSwvydi0g== + dependencies: + "@smithy/types" "^3.7.1" + "@smithy/util-buffer-from" "^3.0.0" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@smithy/invalid-dependency@^3.0.10": + version "3.0.10" + resolved "https://registry.yarnpkg.com/@smithy/invalid-dependency/-/invalid-dependency-3.0.10.tgz#8616dee555916c24dec3e33b1e046c525efbfee3" + integrity sha512-Lp2L65vFi+cj0vFMu2obpPW69DU+6O5g3086lmI4XcnRCG8PxvpWC7XyaVwJCxsZFzueHjXnrOH/E0pl0zikfA== + dependencies: + "@smithy/types" "^3.7.1" + tslib "^2.6.2" + +"@smithy/is-array-buffer@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz#f84f0d9f9a36601a9ca9381688bd1b726fd39111" + integrity sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA== + dependencies: + tslib "^2.6.2" + +"@smithy/is-array-buffer@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz#9a95c2d46b8768946a9eec7f935feaddcffa5e7a" + integrity sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ== + dependencies: + tslib "^2.6.2" + +"@smithy/middleware-content-length@^3.0.12": + version "3.0.12" + resolved "https://registry.yarnpkg.com/@smithy/middleware-content-length/-/middleware-content-length-3.0.12.tgz#3b248ed1e8f1e0ae67171abb8eae9da7ab7ca613" + integrity sha512-1mDEXqzM20yywaMDuf5o9ue8OkJ373lSPbaSjyEvkWdqELhFMyNNgKGWL/rCSf4KME8B+HlHKuR8u9kRj8HzEQ== + dependencies: + "@smithy/protocol-http" "^4.1.7" + "@smithy/types" "^3.7.1" + tslib "^2.6.2" + +"@smithy/middleware-endpoint@^3.2.3", "@smithy/middleware-endpoint@^3.2.4": + version "3.2.4" + resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-3.2.4.tgz#aaded88e3848e56edc99797d71069817fe20cb44" + integrity sha512-TybiW2LA3kYVd3e+lWhINVu1o26KJbBwOpADnf0L4x/35vLVica77XVR5hvV9+kWeTGeSJ3IHTcYxbRxlbwhsg== + dependencies: + "@smithy/core" "^2.5.4" + "@smithy/middleware-serde" "^3.0.10" + "@smithy/node-config-provider" "^3.1.11" + "@smithy/shared-ini-file-loader" "^3.1.11" + "@smithy/types" "^3.7.1" + "@smithy/url-parser" "^3.0.10" + "@smithy/util-middleware" "^3.0.10" + tslib "^2.6.2" + +"@smithy/middleware-retry@^3.0.27": + version "3.0.28" + resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-3.0.28.tgz#92ef5a446bf232fc170c92a460e8af827b0e43bb" + integrity sha512-vK2eDfvIXG1U64FEUhYxoZ1JSj4XFbYWkK36iz02i3pFwWiDz1Q7jKhGTBCwx/7KqJNk4VS7d7cDLXFOvP7M+g== + dependencies: + "@smithy/node-config-provider" "^3.1.11" + "@smithy/protocol-http" "^4.1.7" + "@smithy/service-error-classification" "^3.0.10" + "@smithy/smithy-client" "^3.4.5" + "@smithy/types" "^3.7.1" + "@smithy/util-middleware" "^3.0.10" + "@smithy/util-retry" "^3.0.10" + tslib "^2.6.2" + uuid "^9.0.1" + +"@smithy/middleware-serde@^3.0.10": + version "3.0.10" + resolved "https://registry.yarnpkg.com/@smithy/middleware-serde/-/middleware-serde-3.0.10.tgz#5f6c0b57b10089a21d355bd95e9b7d40378454d7" + integrity sha512-MnAuhh+dD14F428ubSJuRnmRsfOpxSzvRhaGVTvd/lrUDE3kxzCCmH8lnVTvoNQnV2BbJ4c15QwZ3UdQBtFNZA== + dependencies: + "@smithy/types" "^3.7.1" + tslib "^2.6.2" + +"@smithy/middleware-stack@^3.0.10": + version "3.0.10" + resolved "https://registry.yarnpkg.com/@smithy/middleware-stack/-/middleware-stack-3.0.10.tgz#73e2fde5d151440844161773a17ee13375502baf" + integrity sha512-grCHyoiARDBBGPyw2BeicpjgpsDFWZZxptbVKb3CRd/ZA15F/T6rZjCCuBUjJwdck1nwUuIxYtsS4H9DDpbP5w== + dependencies: + "@smithy/types" "^3.7.1" + tslib "^2.6.2" + +"@smithy/node-config-provider@^3.1.11": + version "3.1.11" + resolved "https://registry.yarnpkg.com/@smithy/node-config-provider/-/node-config-provider-3.1.11.tgz#95feba85a5cb3de3fe9adfff1060b35fd556d023" + integrity sha512-URq3gT3RpDikh/8MBJUB+QGZzfS7Bm6TQTqoh4CqE8NBuyPkWa5eUXj0XFcFfeZVgg3WMh1u19iaXn8FvvXxZw== + dependencies: + "@smithy/property-provider" "^3.1.10" + "@smithy/shared-ini-file-loader" "^3.1.11" + "@smithy/types" "^3.7.1" + tslib "^2.6.2" + +"@smithy/node-http-handler@^3.3.1": + version "3.3.1" + resolved "https://registry.yarnpkg.com/@smithy/node-http-handler/-/node-http-handler-3.3.1.tgz#788fc1c22c21a0cf982f4025ccf9f64217f3164f" + integrity sha512-fr+UAOMGWh6bn4YSEezBCpJn9Ukp9oR4D32sCjCo7U81evE11YePOQ58ogzyfgmjIO79YeOdfXXqr0jyhPQeMg== + dependencies: + "@smithy/abort-controller" "^3.1.8" + "@smithy/protocol-http" "^4.1.7" + "@smithy/querystring-builder" "^3.0.10" + "@smithy/types" "^3.7.1" + tslib "^2.6.2" + +"@smithy/property-provider@^3.1.10", "@smithy/property-provider@^3.1.9": + version "3.1.10" + resolved "https://registry.yarnpkg.com/@smithy/property-provider/-/property-provider-3.1.10.tgz#ae00447c1060c194c3e1b9475f7c8548a70f8486" + integrity sha512-n1MJZGTorTH2DvyTVj+3wXnd4CzjJxyXeOgnTlgNVFxaaMeT4OteEp4QrzF8p9ee2yg42nvyVK6R/awLCakjeQ== + dependencies: + "@smithy/types" "^3.7.1" + tslib "^2.6.2" + +"@smithy/protocol-http@^4.1.7": + version "4.1.7" + resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-4.1.7.tgz#5c67e62beb5deacdb94f2127f9a344bdf1b2ed6e" + integrity sha512-FP2LepWD0eJeOTm0SjssPcgqAlDFzOmRXqXmGhfIM52G7Lrox/pcpQf6RP4F21k0+O12zaqQt5fCDOeBtqY6Cg== + dependencies: + "@smithy/types" "^3.7.1" + tslib "^2.6.2" + +"@smithy/querystring-builder@^3.0.10": + version "3.0.10" + resolved "https://registry.yarnpkg.com/@smithy/querystring-builder/-/querystring-builder-3.0.10.tgz#db8773af85ee3977c82b8e35a5cdd178c621306d" + integrity sha512-nT9CQF3EIJtIUepXQuBFb8dxJi3WVZS3XfuDksxSCSn+/CzZowRLdhDn+2acbBv8R6eaJqPupoI/aRFIImNVPQ== + dependencies: + "@smithy/types" "^3.7.1" + "@smithy/util-uri-escape" "^3.0.0" + tslib "^2.6.2" + +"@smithy/querystring-parser@^3.0.10": + version "3.0.10" + resolved "https://registry.yarnpkg.com/@smithy/querystring-parser/-/querystring-parser-3.0.10.tgz#62db744a1ed2cf90f4c08d2c73d365e033b4a11c" + integrity sha512-Oa0XDcpo9SmjhiDD9ua2UyM3uU01ZTuIrNdZvzwUTykW1PM8o2yJvMh1Do1rY5sUQg4NDV70dMi0JhDx4GyxuQ== + dependencies: + "@smithy/types" "^3.7.1" + tslib "^2.6.2" + +"@smithy/service-error-classification@^3.0.10": + version "3.0.10" + resolved "https://registry.yarnpkg.com/@smithy/service-error-classification/-/service-error-classification-3.0.10.tgz#941c549daf0e9abb84d3def1d9e1e3f0f74f5ba6" + integrity sha512-zHe642KCqDxXLuhs6xmHVgRwy078RfqxP2wRDpIyiF8EmsWXptMwnMwbVa50lw+WOGNrYm9zbaEg0oDe3PTtvQ== + dependencies: + "@smithy/types" "^3.7.1" + +"@smithy/shared-ini-file-loader@^3.1.10", "@smithy/shared-ini-file-loader@^3.1.11": + version "3.1.11" + resolved "https://registry.yarnpkg.com/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.11.tgz#0b4f98c4a66480956fbbefc4627c5dc09d891aea" + integrity sha512-AUdrIZHFtUgmfSN4Gq9nHu3IkHMa1YDcN+s061Nfm+6pQ0mJy85YQDB0tZBCmls0Vuj22pLwDPmL92+Hvfwwlg== + dependencies: + "@smithy/types" "^3.7.1" + tslib "^2.6.2" + +"@smithy/signature-v4@^4.2.2": + version "4.2.3" + resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-4.2.3.tgz#abbca5e5fe9158422b3125b2956791a325a27f22" + integrity sha512-pPSQQ2v2vu9vc8iew7sszLd0O09I5TRc5zhY71KA+Ao0xYazIG+uLeHbTJfIWGO3BGVLiXjUr3EEeCcEQLjpWQ== + dependencies: + "@smithy/is-array-buffer" "^3.0.0" + "@smithy/protocol-http" "^4.1.7" + "@smithy/types" "^3.7.1" + "@smithy/util-hex-encoding" "^3.0.0" + "@smithy/util-middleware" "^3.0.10" + "@smithy/util-uri-escape" "^3.0.0" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@smithy/smithy-client@^3.4.4", "@smithy/smithy-client@^3.4.5": + version "3.4.5" + resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-3.4.5.tgz#b90fe15d80e2dca5aa9cf3bd24bd73359ad1ef61" + integrity sha512-k0sybYT9zlP79sIKd1XGm4TmK0AS1nA2bzDHXx7m0nGi3RQ8dxxQUs4CPkSmQTKAo+KF9aINU3KzpGIpV7UoMw== + dependencies: + "@smithy/core" "^2.5.4" + "@smithy/middleware-endpoint" "^3.2.4" + "@smithy/middleware-stack" "^3.0.10" + "@smithy/protocol-http" "^4.1.7" + "@smithy/types" "^3.7.1" + "@smithy/util-stream" "^3.3.1" + tslib "^2.6.2" + +"@smithy/types@^3.7.1": + version "3.7.1" + resolved "https://registry.yarnpkg.com/@smithy/types/-/types-3.7.1.tgz#4af54c4e28351e9101996785a33f2fdbf93debe7" + integrity sha512-XKLcLXZY7sUQgvvWyeaL/qwNPp6V3dWcUjqrQKjSb+tzYiCy340R/c64LV5j+Tnb2GhmunEX0eou+L+m2hJNYA== + dependencies: + tslib "^2.6.2" + +"@smithy/url-parser@^3.0.10": + version "3.0.10" + resolved "https://registry.yarnpkg.com/@smithy/url-parser/-/url-parser-3.0.10.tgz#f389985a79766cff4a99af14979f01a17ce318da" + integrity sha512-j90NUalTSBR2NaZTuruEgavSdh8MLirf58LoGSk4AtQfyIymogIhgnGUU2Mga2bkMkpSoC9gxb74xBXL5afKAQ== + dependencies: + "@smithy/querystring-parser" "^3.0.10" + "@smithy/types" "^3.7.1" + tslib "^2.6.2" + +"@smithy/util-base64@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@smithy/util-base64/-/util-base64-3.0.0.tgz#f7a9a82adf34e27a72d0719395713edf0e493017" + integrity sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ== + dependencies: + "@smithy/util-buffer-from" "^3.0.0" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@smithy/util-body-length-browser@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@smithy/util-body-length-browser/-/util-body-length-browser-3.0.0.tgz#86ec2f6256310b4845a2f064e2f571c1ca164ded" + integrity sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ== + dependencies: + tslib "^2.6.2" + +"@smithy/util-body-length-node@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@smithy/util-body-length-node/-/util-body-length-node-3.0.0.tgz#99a291bae40d8932166907fe981d6a1f54298a6d" + integrity sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA== + dependencies: + tslib "^2.6.2" + +"@smithy/util-buffer-from@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz#6fc88585165ec73f8681d426d96de5d402021e4b" + integrity sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA== + dependencies: + "@smithy/is-array-buffer" "^2.2.0" + tslib "^2.6.2" + +"@smithy/util-buffer-from@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz#559fc1c86138a89b2edaefc1e6677780c24594e3" + integrity sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA== + dependencies: + "@smithy/is-array-buffer" "^3.0.0" + tslib "^2.6.2" + +"@smithy/util-config-provider@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@smithy/util-config-provider/-/util-config-provider-3.0.0.tgz#62c6b73b22a430e84888a8f8da4b6029dd5b8efe" + integrity sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ== + dependencies: + tslib "^2.6.2" + +"@smithy/util-defaults-mode-browser@^3.0.27": + version "3.0.28" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.28.tgz#c443b9ae2784b5621def0541a98fc9704c846bfc" + integrity sha512-6bzwAbZpHRFVJsOztmov5PGDmJYsbNSoIEfHSJJyFLzfBGCCChiO3od9k7E/TLgrCsIifdAbB9nqbVbyE7wRUw== + dependencies: + "@smithy/property-provider" "^3.1.10" + "@smithy/smithy-client" "^3.4.5" + "@smithy/types" "^3.7.1" + bowser "^2.11.0" + tslib "^2.6.2" + +"@smithy/util-defaults-mode-node@^3.0.27": + version "3.0.28" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.28.tgz#d6d742d62c2f678938b7a378224e79fca587458b" + integrity sha512-78ENJDorV1CjOQselGmm3+z7Yqjj5HWCbjzh0Ixuq736dh1oEnD9sAttSBNSLlpZsX8VQnmERqA2fEFlmqWn8w== + dependencies: + "@smithy/config-resolver" "^3.0.12" + "@smithy/credential-provider-imds" "^3.2.7" + "@smithy/node-config-provider" "^3.1.11" + "@smithy/property-provider" "^3.1.10" + "@smithy/smithy-client" "^3.4.5" + "@smithy/types" "^3.7.1" + tslib "^2.6.2" + +"@smithy/util-endpoints@^2.1.6": + version "2.1.6" + resolved "https://registry.yarnpkg.com/@smithy/util-endpoints/-/util-endpoints-2.1.6.tgz#720cbd1a616ad7c099b77780f0cb0f1f9fc5d2df" + integrity sha512-mFV1t3ndBh0yZOJgWxO9J/4cHZVn5UG1D8DeCc6/echfNkeEJWu9LD7mgGH5fHrEdR7LDoWw7PQO6QiGpHXhgA== + dependencies: + "@smithy/node-config-provider" "^3.1.11" + "@smithy/types" "^3.7.1" + tslib "^2.6.2" + +"@smithy/util-hex-encoding@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@smithy/util-hex-encoding/-/util-hex-encoding-3.0.0.tgz#32938b33d5bf2a15796cd3f178a55b4155c535e6" + integrity sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ== + dependencies: + tslib "^2.6.2" + +"@smithy/util-middleware@^3.0.10": + version "3.0.10" + resolved "https://registry.yarnpkg.com/@smithy/util-middleware/-/util-middleware-3.0.10.tgz#ab8be99f1aaafe5a5490c344f27a264b72b7592f" + integrity sha512-eJO+/+RsrG2RpmY68jZdwQtnfsxjmPxzMlQpnHKjFPwrYqvlcT+fHdT+ZVwcjlWSrByOhGr9Ff2GG17efc192A== + dependencies: + "@smithy/types" "^3.7.1" + tslib "^2.6.2" + +"@smithy/util-retry@^3.0.10": + version "3.0.10" + resolved "https://registry.yarnpkg.com/@smithy/util-retry/-/util-retry-3.0.10.tgz#fc13e1b30e87af0cbecadf29ca83b171e2040440" + integrity sha512-1l4qatFp4PiU6j7UsbasUHL2VU023NRB/gfaa1M0rDqVrRN4g3mCArLRyH3OuktApA4ye+yjWQHjdziunw2eWA== + dependencies: + "@smithy/service-error-classification" "^3.0.10" + "@smithy/types" "^3.7.1" + tslib "^2.6.2" + +"@smithy/util-stream@^3.3.1": + version "3.3.1" + resolved "https://registry.yarnpkg.com/@smithy/util-stream/-/util-stream-3.3.1.tgz#a2636f435637ef90d64df2bb8e71cd63236be112" + integrity sha512-Ff68R5lJh2zj+AUTvbAU/4yx+6QPRzg7+pI7M1FbtQHcRIp7xvguxVsQBKyB3fwiOwhAKu0lnNyYBaQfSW6TNw== + dependencies: + "@smithy/fetch-http-handler" "^4.1.1" + "@smithy/node-http-handler" "^3.3.1" + "@smithy/types" "^3.7.1" + "@smithy/util-base64" "^3.0.0" + "@smithy/util-buffer-from" "^3.0.0" + "@smithy/util-hex-encoding" "^3.0.0" + "@smithy/util-utf8" "^3.0.0" + tslib "^2.6.2" + +"@smithy/util-uri-escape@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@smithy/util-uri-escape/-/util-uri-escape-3.0.0.tgz#e43358a78bf45d50bb736770077f0f09195b6f54" + integrity sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg== + dependencies: + tslib "^2.6.2" + +"@smithy/util-utf8@^2.0.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@smithy/util-utf8/-/util-utf8-2.3.0.tgz#dd96d7640363259924a214313c3cf16e7dd329c5" + integrity sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A== + dependencies: + "@smithy/util-buffer-from" "^2.2.0" + tslib "^2.6.2" + +"@smithy/util-utf8@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@smithy/util-utf8/-/util-utf8-3.0.0.tgz#1a6a823d47cbec1fd6933e5fc87df975286d9d6a" + integrity sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA== + dependencies: + "@smithy/util-buffer-from" "^3.0.0" + tslib "^2.6.2" + +"@smithy/util-waiter@^3.1.9": + version "3.1.9" + resolved "https://registry.yarnpkg.com/@smithy/util-waiter/-/util-waiter-3.1.9.tgz#1330ce2e79b58419d67755d25bce7a226e32dc6d" + integrity sha512-/aMXPANhMOlMPjfPtSrDfPeVP8l56SJlz93xeiLmhLe5xvlXA5T3abZ2ilEsDEPeY9T/wnN/vNGn9wa1SbufWA== + dependencies: + "@smithy/abort-controller" "^3.1.8" + "@smithy/types" "^3.7.1" + tslib "^2.6.2" + +"@szmarczak/http-timer@^4.0.5": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" + integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== + dependencies: + defer-to-connect "^2.0.0" + +"@tufjs/canonical-json@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz#a52f61a3d7374833fca945b2549bc30a2dd40d0a" + integrity sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA== + +"@tufjs/models@2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@tufjs/models/-/models-2.0.1.tgz#e429714e753b6c2469af3212e7f320a6973c2812" + integrity sha512-92F7/SFyufn4DXsha9+QfKnN03JGqtMFMXgSHbZOo8JG59WkTni7UzAouNQDf7AuP9OAMxVOPQcqG3sB7w+kkg== + dependencies: + "@tufjs/canonical-json" "2.0.0" + minimatch "^9.0.4" + +"@types/aws-lambda@^8.10.23": + version "8.10.146" + resolved "https://registry.yarnpkg.com/@types/aws-lambda/-/aws-lambda-8.10.146.tgz#05f9968d8cd9719a0a86526baf889c25761f60b8" + integrity sha512-3BaDXYTh0e6UCJYL/jwV/3+GRslSc08toAiZSmleYtkAUyV5rtvdPYxrG/88uqvTuT6sb27WE9OS90ZNTIuQ0g== + +"@types/cacheable-request@^6.0.1": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183" + integrity sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw== + dependencies: + "@types/http-cache-semantics" "*" + "@types/keyv" "^3.1.4" + "@types/node" "*" + "@types/responselike" "^1.0.0" + +"@types/google-protobuf@^3.15.5": + version "3.15.12" + resolved "https://registry.yarnpkg.com/@types/google-protobuf/-/google-protobuf-3.15.12.tgz#eb2ba0eddd65712211a2b455dc6071d665ccf49b" + integrity sha512-40um9QqwHjRS92qnOaDpL7RmDK15NuZYo9HihiJRbYkMQZlWnuH8AdvbMy8/o6lgLmKbDUKa+OALCltHdbOTpQ== + +"@types/http-cache-semantics@*": + version "4.0.4" + resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz#b979ebad3919799c979b17c72621c0bc0a31c6c4" + integrity sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA== + +"@types/keyv@^3.1.4": + version "3.1.4" + resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" + integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== + dependencies: + "@types/node" "*" + +"@types/node@*", "@types/node@>=13.7.0": + version "22.10.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.10.0.tgz#89bfc9e82496b9c7edea3382583fa94f75896e81" + integrity sha512-XC70cRZVElFHfIUB40FgZOBbgJYFKKMa5nb9lxcwYstFG/Mi+/Y0bGS+rs6Dmhmkpq4pnNiLiuZAbc02YCOnmA== + dependencies: + undici-types "~6.20.0" + +"@types/node@^18": + version "18.19.66" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.66.tgz#0937a47904ceba5994eedf5cf4b6d503d8d6136c" + integrity sha512-14HmtUdGxFUalGRfLLn9Gc1oNWvWh5zNbsyOLo5JV6WARSeN1QcEBKRnZm9QqNfrutgsl/hY4eJW63aZ44aBCg== + dependencies: + undici-types "~5.26.4" + +"@types/responselike@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.3.tgz#cc29706f0a397cfe6df89debfe4bf5cea159db50" + integrity sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw== + dependencies: + "@types/node" "*" + +"@types/semver@^7.5.6": + version "7.5.8" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" + integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== + +"@types/shimmer@^1.0.2": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@types/shimmer/-/shimmer-1.2.0.tgz#9b706af96fa06416828842397a70dfbbf1c14ded" + integrity sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg== + +"@types/tmp@^0.2.6": + version "0.2.6" + resolved "https://registry.yarnpkg.com/@types/tmp/-/tmp-0.2.6.tgz#d785ee90c52d7cc020e249c948c36f7b32d1e217" + integrity sha512-chhaNf2oKHlRkDGt+tiKE2Z5aJ6qalm7Z9rlLdBwmOiAAf09YQvvoLXjWK4HWPF1xU/fqvMgfNfpVoBscA/tKA== + +"@types/uuid@^9.0.1": + version "9.0.8" + resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-9.0.8.tgz#7545ba4fc3c003d6c756f651f3bf163d8f0f29ba" + integrity sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA== + +abbrev@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-2.0.0.tgz#cf59829b8b4f03f89dda2771cb7f3653828c89bf" + integrity sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ== + +acorn-import-attributes@^1.9.5: + version "1.9.5" + resolved "https://registry.yarnpkg.com/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz#7eb1557b1ba05ef18b5ed0ec67591bfab04688ef" + integrity sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ== + +acorn@^8.8.2: + version "8.14.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0" + integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== + +agent-base@^7.0.2, agent-base@^7.1.0, agent-base@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.1.tgz#bdbded7dfb096b751a2a087eeeb9664725b2e317" + integrity sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA== + dependencies: + debug "^4.3.4" + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654" + integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== + +ansi-styles@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +bin-links@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/bin-links/-/bin-links-4.0.4.tgz#c3565832b8e287c85f109a02a17027d152a58a63" + integrity sha512-cMtq4W5ZsEwcutJrVId+a/tjt8GSbS+h0oNkdl6+6rBuEv8Ot33Bevj5KPm40t309zuhVic8NjpuL42QCiJWWA== + dependencies: + cmd-shim "^6.0.0" + npm-normalize-package-bin "^3.0.0" + read-cmd-shim "^4.0.0" + write-file-atomic "^5.0.0" + +bowser@^2.11.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f" + integrity sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA== + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +builtin-modules@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.0.0.tgz#1e587d44b006620d90286cc7a9238bbc6129cab1" + integrity sha512-hMIeU4K2ilbXV6Uv93ZZ0Avg/M91RaKXucQ+4me2Do1txxBDyDZWCBa5bJSLqoNTRpXTLwEzIk1KmloenDDjhg== + +cacache@^18.0.0, cacache@^18.0.3: + version "18.0.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-18.0.4.tgz#4601d7578dadb59c66044e157d02a3314682d6a5" + integrity sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ== + dependencies: + "@npmcli/fs" "^3.1.0" + fs-minipass "^3.0.0" + glob "^10.2.2" + lru-cache "^10.0.1" + minipass "^7.0.3" + minipass-collect "^2.0.1" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + p-map "^4.0.0" + ssri "^10.0.0" + tar "^6.1.11" + unique-filename "^3.0.0" + +cacheable-lookup@^5.0.3: + version "5.0.4" + resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" + integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== + +cacheable-request@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.4.tgz#7a33ebf08613178b403635be7b899d3e69bbe817" + integrity sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^4.0.0" + lowercase-keys "^2.0.0" + normalize-url "^6.0.1" + responselike "^2.0.0" + +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + +cjs-module-lexer@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz#707413784dbb3a72aa11c2f2b042a0bef4004170" + integrity sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA== + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +clone-response@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" + integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== + dependencies: + mimic-response "^1.0.0" + +cmd-shim@^6.0.0: + version "6.0.3" + resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-6.0.3.tgz#c491e9656594ba17ac83c4bd931590a9d6e26033" + integrity sha512-FMabTRlc5t5zjdenF6mS0MBeFZm0XqHqeOkcskKFb/LYCcRQ5fVgLOHVc4Lq9CqABd9zhjwPjMBCJvMCziSVtA== + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +common-ancestor-path@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz#4f7d2d1394d91b7abdf51871c62f71eadb0182a7" + integrity sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w== + +cross-spawn@^7.0.0, cross-spawn@^7.0.3: + version "7.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +debug@4, debug@^4.3.4, debug@^4.3.5: + version "4.3.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" + integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== + dependencies: + ms "^2.1.3" + +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + dependencies: + mimic-response "^3.1.0" + +defer-to-connect@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" + integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== + +"docker-classic@npm:@pulumi/docker@3.6.1": + version "3.6.1" + resolved "https://registry.yarnpkg.com/@pulumi/docker/-/docker-3.6.1.tgz#a216c9bd2bbd35dd7091db2827a3a434adff021c" + integrity sha512-BZME50QkT556v+LvmTXPT8ssB2xxNkp9+msB5xYFEnUnWcdGAx5yUysQw70RJCb+U0GbkJSbxtlgMJgOQf/now== + dependencies: + "@pulumi/pulumi" "^3.0.0" + semver "^5.4.0" + +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +encoding@^0.1.13: + version "0.1.13" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== + dependencies: + iconv-lite "^0.6.2" + +end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +env-paths@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== + +err-code@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" + integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== + +escalade@^3.1.1: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +execa@^5.1.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +exponential-backoff@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/exponential-backoff/-/exponential-backoff-3.1.1.tgz#64ac7526fe341ab18a39016cd22c787d01e00bf6" + integrity sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw== + +fast-xml-parser@4.4.1: + version "4.4.1" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz#86dbf3f18edf8739326447bcaac31b4ae7f6514f" + integrity sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw== + dependencies: + strnum "^1.0.5" + +fdir@^6.1.1: + version "6.4.2" + resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.4.2.tgz#ddaa7ce1831b161bc3657bb99cb36e1622702689" + integrity sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ== + +find-up@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-6.3.0.tgz#2abab3d3280b2dc7ac10199ef324c4e002c8c790" + integrity sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw== + dependencies: + locate-path "^7.1.0" + path-exists "^5.0.0" + +foreground-child@^3.1.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.0.tgz#0ac8644c06e431439f8561db8ecf29a7b5519c77" + integrity sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" + +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + +fs-minipass@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-3.0.3.tgz#79a85981c4dc120065e96f62086bf6f9dc26cc54" + integrity sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw== + dependencies: + minipass "^7.0.3" + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +glob@^10.2.2, glob@^10.3.10: + version "10.4.5" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" + integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== + dependencies: + foreground-child "^3.1.0" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^1.11.1" + +google-protobuf@^3.5.0: + version "3.21.4" + resolved "https://registry.yarnpkg.com/google-protobuf/-/google-protobuf-3.21.4.tgz#2f933e8b6e5e9f8edde66b7be0024b68f77da6c9" + integrity sha512-MnG7N936zcKTco4Jd2PX2U96Kf9PxygAPKBug+74LHzmHXmceN16MmRcdgZv+DGef/S9YvQAfRsNCn4cjf9yyQ== + +got@^11.8.6: + version "11.8.6" + resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a" + integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g== + dependencies: + "@sindresorhus/is" "^4.0.0" + "@szmarczak/http-timer" "^4.0.5" + "@types/cacheable-request" "^6.0.1" + "@types/responselike" "^1.0.0" + cacheable-lookup "^5.0.3" + cacheable-request "^7.0.2" + decompress-response "^6.0.0" + http2-wrapper "^1.0.0-beta.5.2" + lowercase-keys "^2.0.0" + p-cancelable "^2.0.0" + responselike "^2.0.0" + +graceful-fs@^4.2.6: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +hosted-git-info@^7.0.0, hosted-git-info@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-7.0.2.tgz#9b751acac097757667f30114607ef7b661ff4f17" + integrity sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w== + dependencies: + lru-cache "^10.0.1" + +http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" + integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== + +http-proxy-agent@^7.0.0: + version "7.0.2" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e" + integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig== + dependencies: + agent-base "^7.1.0" + debug "^4.3.4" + +http2-wrapper@^1.0.0-beta.5.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" + integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== + dependencies: + quick-lru "^5.1.1" + resolve-alpn "^1.0.0" + +https-proxy-agent@^7.0.1: + version "7.0.5" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz#9e8b5013873299e11fab6fd548405da2d6c602b2" + integrity sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw== + dependencies: + agent-base "^7.0.2" + debug "4" + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +iconv-lite@^0.6.2: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +ignore-walk@^6.0.4: + version "6.0.5" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-6.0.5.tgz#ef8d61eab7da169078723d1f82833b36e200b0dd" + integrity sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A== + dependencies: + minimatch "^9.0.0" + +import-in-the-middle@^1.8.1: + version "1.11.2" + resolved "https://registry.yarnpkg.com/import-in-the-middle/-/import-in-the-middle-1.11.2.tgz#dd848e72b63ca6cd7c34df8b8d97fc9baee6174f" + integrity sha512-gK6Rr6EykBcc6cVWRSBR5TWf8nn6hZMYSRYqCcHa0l0d1fPK7JSYo6+Mlmck76jIX9aL/IZ71c06U2VpFwl1zA== + dependencies: + acorn "^8.8.2" + acorn-import-attributes "^1.9.5" + cjs-module-lexer "^1.2.2" + module-details-from-path "^1.0.3" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +ini@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" + integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== + +ini@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/ini/-/ini-4.1.3.tgz#4c359675a6071a46985eb39b14e4a2c0ec98a795" + integrity sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg== + +ip-address@^9.0.5: + version "9.0.5" + resolved "https://registry.yarnpkg.com/ip-address/-/ip-address-9.0.5.tgz#117a960819b08780c3bd1f14ef3c1cc1d3f3ea5a" + integrity sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g== + dependencies: + jsbn "1.1.0" + sprintf-js "^1.1.3" + +is-core-module@^2.13.0: + version "2.15.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.1.tgz#a7363a25bee942fefab0de13bf6aa372c82dcc37" + integrity sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ== + dependencies: + hasown "^2.0.2" + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-lambda@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" + integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isexe@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-3.1.1.tgz#4a407e2bd78ddfb14bea0c27c6f7072dde775f0d" + integrity sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ== + +jackspeak@^3.1.2: + version "3.4.3" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" + integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + +js-yaml@^3.14.0: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsbn@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040" + integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A== + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-parse-even-better-errors@^3.0.0, json-parse-even-better-errors@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz#b43d35e89c0f3be6b5fbbe9dc6c82467b30c28da" + integrity sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ== + +json-stringify-nice@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz#2c937962b80181d3f317dd39aa323e14f5a60a67" + integrity sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw== + +jsonparse@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== + +just-diff-apply@^5.2.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/just-diff-apply/-/just-diff-apply-5.5.0.tgz#771c2ca9fa69f3d2b54e7c3f5c1dfcbcc47f9f0f" + integrity sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw== + +just-diff@^6.0.0: + version "6.0.2" + resolved "https://registry.yarnpkg.com/just-diff/-/just-diff-6.0.2.tgz#03b65908543ac0521caf6d8eb85035f7d27ea285" + integrity sha512-S59eriX5u3/QhMNq3v/gm8Kd0w8OS6Tz2FS1NG4blv+z0MuQcBRJyFWjdovM0Rad4/P4aUPFtnkNjMjyMlMSYA== + +keyv@^4.0.0: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + +locate-path@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-7.2.0.tgz#69cb1779bd90b35ab1e771e1f2f89a202c2a8a8a" + integrity sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA== + dependencies: + p-locate "^6.0.0" + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== + +long@^5.0.0: + version "5.2.3" + resolved "https://registry.yarnpkg.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1" + integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q== + +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + +lru-cache@^10.0.1, lru-cache@^10.2.0, lru-cache@^10.2.2: + version "10.4.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" + integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== + +make-fetch-happen@^13.0.0, make-fetch-happen@^13.0.1: + version "13.0.1" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-13.0.1.tgz#273ba2f78f45e1f3a6dca91cede87d9fa4821e36" + integrity sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA== + dependencies: + "@npmcli/agent" "^2.0.0" + cacache "^18.0.0" + http-cache-semantics "^4.1.1" + is-lambda "^1.0.1" + minipass "^7.0.2" + minipass-fetch "^3.0.0" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + negotiator "^0.6.3" + proc-log "^4.2.0" + promise-retry "^2.0.1" + ssri "^10.0.0" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +mime@^2.0.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-response@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + +minimatch@^9.0.0, minimatch@^9.0.4: + version "9.0.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + +minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +minipass-collect@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-2.0.1.tgz#1621bc77e12258a12c60d34e2276ec5c20680863" + integrity sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw== + dependencies: + minipass "^7.0.3" + +minipass-fetch@^3.0.0: + version "3.0.5" + resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-3.0.5.tgz#f0f97e40580affc4a35cc4a1349f05ae36cb1e4c" + integrity sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg== + dependencies: + minipass "^7.0.3" + minipass-sized "^1.0.3" + minizlib "^2.1.2" + optionalDependencies: + encoding "^0.1.13" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-pipeline@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== + dependencies: + minipass "^3.0.0" + +minipass-sized@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" + integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== + dependencies: + minipass "^3.0.0" + +minipass@^3.0.0: + version "3.3.6" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" + integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== + dependencies: + yallist "^4.0.0" + +minipass@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" + integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== + +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.2, minipass@^7.0.3, minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + +minizlib@^2.1.1, minizlib@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + +mkdirp@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +module-details-from-path@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/module-details-from-path/-/module-details-from-path-1.0.3.tgz#114c949673e2a8a35e9d35788527aa37b679da2b" + integrity sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A== + +ms@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +negotiator@^0.6.3: + version "0.6.4" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.4.tgz#777948e2452651c570b712dd01c23e262713fff7" + integrity sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w== + +node-gyp@^10.0.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-10.2.0.tgz#80101c4aa4f7ab225f13fcc8daaaac4eb1a8dd86" + integrity sha512-sp3FonBAaFe4aYTcFdZUn2NYkbP7xroPGYvQmP4Nl5PxamznItBnNCgjrVTKrEfQynInMsJvZrdmqUnysCJ8rw== + dependencies: + env-paths "^2.2.0" + exponential-backoff "^3.1.1" + glob "^10.3.10" + graceful-fs "^4.2.6" + make-fetch-happen "^13.0.0" + nopt "^7.0.0" + proc-log "^4.1.0" + semver "^7.3.5" + tar "^6.2.1" + which "^4.0.0" + +nopt@^7.0.0, nopt@^7.2.1: + version "7.2.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-7.2.1.tgz#1cac0eab9b8e97c9093338446eddd40b2c8ca1e7" + integrity sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w== + dependencies: + abbrev "^2.0.0" + +normalize-package-data@^6.0.0: + version "6.0.2" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-6.0.2.tgz#a7bc22167fe24025412bcff0a9651eb768b03506" + integrity sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g== + dependencies: + hosted-git-info "^7.0.0" + semver "^7.3.5" + validate-npm-package-license "^3.0.4" + +normalize-url@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" + integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== + +npm-bundled@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-3.0.1.tgz#cca73e15560237696254b10170d8f86dad62da25" + integrity sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ== + dependencies: + npm-normalize-package-bin "^3.0.0" + +npm-install-checks@^6.0.0, npm-install-checks@^6.2.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-6.3.0.tgz#046552d8920e801fa9f919cad569545d60e826fe" + integrity sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw== + dependencies: + semver "^7.1.1" + +npm-normalize-package-bin@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz#25447e32a9a7de1f51362c61a559233b89947832" + integrity sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ== + +npm-package-arg@^11.0.0, npm-package-arg@^11.0.2: + version "11.0.3" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-11.0.3.tgz#dae0c21199a99feca39ee4bfb074df3adac87e2d" + integrity sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw== + dependencies: + hosted-git-info "^7.0.0" + proc-log "^4.0.0" + semver "^7.3.5" + validate-npm-package-name "^5.0.0" + +npm-packlist@^8.0.0: + version "8.0.2" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-8.0.2.tgz#5b8d1d906d96d21c85ebbeed2cf54147477c8478" + integrity sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA== + dependencies: + ignore-walk "^6.0.4" + +npm-pick-manifest@^9.0.0, npm-pick-manifest@^9.0.1: + version "9.1.0" + resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-9.1.0.tgz#83562afde52b0b07cb6244361788d319ce7e8636" + integrity sha512-nkc+3pIIhqHVQr085X9d2JzPzLyjzQS96zbruppqC9aZRm/x8xx6xhI98gHtsfELP2bE+loHq8ZaHFHhe+NauA== + dependencies: + npm-install-checks "^6.0.0" + npm-normalize-package-bin "^3.0.0" + npm-package-arg "^11.0.0" + semver "^7.3.5" + +npm-registry-fetch@^17.0.0, npm-registry-fetch@^17.0.1: + version "17.1.0" + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-17.1.0.tgz#fb69e8e762d456f08bda2f5f169f7638fb92beb1" + integrity sha512-5+bKQRH0J1xG1uZ1zMNvxW0VEyoNWgJpY9UDuluPFLKDfJ9u2JmmjmTJV1srBGQOROfdBMiVvnH2Zvpbm+xkVA== + dependencies: + "@npmcli/redact" "^2.0.0" + jsonparse "^1.3.1" + make-fetch-happen "^13.0.0" + minipass "^7.0.2" + minipass-fetch "^3.0.0" + minizlib "^2.1.2" + npm-package-arg "^11.0.0" + proc-log "^4.0.0" + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +p-cancelable@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" + integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== + +p-limit@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-4.0.0.tgz#914af6544ed32bfa54670b061cafcbd04984b644" + integrity sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ== + dependencies: + yocto-queue "^1.0.0" + +p-locate@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-6.0.0.tgz#3da9a49d4934b901089dca3302fa65dc5a05c04f" + integrity sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw== + dependencies: + p-limit "^4.0.0" + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +package-json-from-dist@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" + integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== + +pacote@^18.0.0, pacote@^18.0.6: + version "18.0.6" + resolved "https://registry.yarnpkg.com/pacote/-/pacote-18.0.6.tgz#ac28495e24f4cf802ef911d792335e378e86fac7" + integrity sha512-+eK3G27SMwsB8kLIuj4h1FUhHtwiEUo21Tw8wNjmvdlpOEr613edv+8FUsTj/4F/VN5ywGE19X18N7CC2EJk6A== + dependencies: + "@npmcli/git" "^5.0.0" + "@npmcli/installed-package-contents" "^2.0.1" + "@npmcli/package-json" "^5.1.0" + "@npmcli/promise-spawn" "^7.0.0" + "@npmcli/run-script" "^8.0.0" + cacache "^18.0.0" + fs-minipass "^3.0.0" + minipass "^7.0.2" + npm-package-arg "^11.0.0" + npm-packlist "^8.0.0" + npm-pick-manifest "^9.0.0" + npm-registry-fetch "^17.0.0" + proc-log "^4.0.0" + promise-retry "^2.0.1" + sigstore "^2.2.0" + ssri "^10.0.0" + tar "^6.1.11" + +parse-conflict-json@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/parse-conflict-json/-/parse-conflict-json-3.0.1.tgz#67dc55312781e62aa2ddb91452c7606d1969960c" + integrity sha512-01TvEktc68vwbJOtWZluyWeVGWjP+bZwXtPDMQVbBKzbJ/vZBif0L69KH1+cHv1SZ6e0FKLvjyHe8mqsIqYOmw== + dependencies: + json-parse-even-better-errors "^3.0.0" + just-diff "^6.0.0" + just-diff-apply "^5.2.0" + +path-exists@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-5.0.0.tgz#a6aad9489200b21fab31e49cf09277e5116fb9e7" + integrity sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ== + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-scurry@^1.11.1: + version "1.11.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" + integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== + dependencies: + lru-cache "^10.2.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + +picomatch@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-3.0.1.tgz#817033161def55ec9638567a2f3bbc876b3e7516" + integrity sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag== + +pkg-dir@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-7.0.0.tgz#8f0c08d6df4476756c5ff29b3282d0bab7517d11" + integrity sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA== + dependencies: + find-up "^6.3.0" + +postcss-selector-parser@^6.0.10: + version "6.1.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz#27ecb41fb0e3b6ba7a1ec84fff347f734c7929de" + integrity sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +proc-log@^4.0.0, proc-log@^4.1.0, proc-log@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-4.2.0.tgz#b6f461e4026e75fdfe228b265e9f7a00779d7034" + integrity sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA== + +proggy@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/proggy/-/proggy-2.0.0.tgz#154bb0e41d3125b518ef6c79782455c2c47d94e1" + integrity sha512-69agxLtnI8xBs9gUGqEnK26UfiexpHy+KUpBQWabiytQjnn5wFY8rklAi7GRfABIuPNnQ/ik48+LGLkYYJcy4A== + +promise-all-reject-late@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz#f8ebf13483e5ca91ad809ccc2fcf25f26f8643c2" + integrity sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw== + +promise-call-limit@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/promise-call-limit/-/promise-call-limit-3.0.2.tgz#524b7f4b97729ff70417d93d24f46f0265efa4f9" + integrity sha512-mRPQO2T1QQVw11E7+UdCJu7S61eJVWknzml9sC1heAdj1jxl0fWMBypIt9ZOcLFf8FkG995ZD7RnVk7HH72fZw== + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== + +promise-retry@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" + integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== + dependencies: + err-code "^2.0.2" + retry "^0.12.0" + +protobufjs@^7.2.5: + version "7.4.0" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.4.0.tgz#7efe324ce9b3b61c82aae5de810d287bc08a248a" + integrity sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/node" ">=13.7.0" + long "^5.0.0" + +pump@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.2.tgz#836f3edd6bc2ee599256c924ffe0d88573ddcbf8" + integrity sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== + +read-cmd-shim@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-4.0.0.tgz#640a08b473a49043e394ae0c7a34dd822c73b9bb" + integrity sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q== + +read-package-json-fast@^3.0.0, read-package-json-fast@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz#394908a9725dc7a5f14e70c8e7556dff1d2b1049" + integrity sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw== + dependencies: + json-parse-even-better-errors "^3.0.0" + npm-normalize-package-bin "^3.0.0" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-from-string@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +require-in-the-middle@^7.1.1: + version "7.4.0" + resolved "https://registry.yarnpkg.com/require-in-the-middle/-/require-in-the-middle-7.4.0.tgz#606977820d4b5f9be75e5a108ce34cfed25b3bb4" + integrity sha512-X34iHADNbNDfr6OTStIAHWSAvvKQRYgLO6duASaVf7J2VA3lvmNYboAHOuLC2huav1IwgZJtyEcJCKVzFxOSMQ== + dependencies: + debug "^4.3.5" + module-details-from-path "^1.0.3" + resolve "^1.22.8" + +resolve-alpn@^1.0.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" + integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== + +resolve@^1.22.8, resolve@^1.7.1: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +responselike@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" + integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw== + dependencies: + lowercase-keys "^2.0.0" + +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== + +"safer-buffer@>= 2.1.2 < 3.0.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +semver@^5.4.0: + version "5.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + +semver@^7.1.1, semver@^7.3.5, semver@^7.3.7, semver@^7.5.2, semver@^7.5.3: + version "7.6.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shimmer@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/shimmer/-/shimmer-1.2.1.tgz#610859f7de327b587efebf501fb43117f9aff337" + integrity sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw== + +signal-exit@^3.0.3: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + +sigstore@^2.2.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/sigstore/-/sigstore-2.3.1.tgz#0755dd2cc4820f2e922506da54d3d628e13bfa39" + integrity sha512-8G+/XDU8wNsJOQS5ysDVO0Etg9/2uA5gR9l4ZwijjlwxBcrU6RPfwi2+jJmbP+Ap1Hlp/nVAaEO4Fj22/SL2gQ== + dependencies: + "@sigstore/bundle" "^2.3.2" + "@sigstore/core" "^1.0.0" + "@sigstore/protobuf-specs" "^0.3.2" + "@sigstore/sign" "^2.3.2" + "@sigstore/tuf" "^2.3.4" + "@sigstore/verify" "^1.2.1" + +smart-buffer@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== + +socks-proxy-agent@^8.0.3: + version "8.0.4" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-8.0.4.tgz#9071dca17af95f483300316f4b063578fa0db08c" + integrity sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw== + dependencies: + agent-base "^7.1.1" + debug "^4.3.4" + socks "^2.8.3" + +socks@^2.8.3: + version "2.8.3" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.8.3.tgz#1ebd0f09c52ba95a09750afe3f3f9f724a800cb5" + integrity sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw== + dependencies: + ip-address "^9.0.5" + smart-buffer "^4.2.0" + +source-map-support@^0.5.6: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +spdx-correct@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" + integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz#5d607d27fc806f66d7b64a766650fa890f04ed66" + integrity sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.20" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz#e44ed19ed318dd1e5888f93325cee800f0f51b89" + integrity sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw== + +sprintf-js@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a" + integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +ssri@^10.0.0, ssri@^10.0.6: + version "10.0.6" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-10.0.6.tgz#a8aade2de60ba2bce8688e3fa349bad05c7dc1e5" + integrity sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ== + dependencies: + minipass "^7.0.3" + +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strnum@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.0.5.tgz#5c4e829fe15ad4ff0d20c3db5ac97b73c9b072db" + integrity sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA== + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +tar@^6.1.11, tar@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" + integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^5.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + +tmp@^0.2.1: + version "0.2.3" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.3.tgz#eb783cc22bc1e8bebd0671476d46ea4eb32a79ae" + integrity sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w== + +treeverse@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/treeverse/-/treeverse-3.0.0.tgz#dd82de9eb602115c6ebd77a574aae67003cb48c8" + integrity sha512-gcANaAnd2QDZFmHFEOF4k7uc1J/6a6z3DJMd/QwEyxLoKGiptJRwid582r7QIsFlFMIZ3SnxfS52S4hm2DHkuQ== + +tslib@^2.6.2: + version "2.8.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== + +tuf-js@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tuf-js/-/tuf-js-2.2.1.tgz#fdd8794b644af1a75c7aaa2b197ddffeb2911b56" + integrity sha512-GwIJau9XaA8nLVbUXsN3IlFi7WmQ48gBUrl3FTkkL/XLu/POhBzfmX9hd33FNMX1qAsfl6ozO1iMmW9NC8YniA== + dependencies: + "@tufjs/models" "2.0.1" + debug "^4.3.4" + make-fetch-happen "^13.0.1" + +typescript@^5.0.0: + version "5.7.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.7.2.tgz#3169cf8c4c8a828cde53ba9ecb3d2b1d5dd67be6" + integrity sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg== + +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + +undici-types@~6.20.0: + version "6.20.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.20.0.tgz#8171bf22c1f588d1554d55bf204bc624af388433" + integrity sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg== + +unique-filename@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-3.0.0.tgz#48ba7a5a16849f5080d26c760c86cf5cf05770ea" + integrity sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g== + dependencies: + unique-slug "^4.0.0" + +unique-slug@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-4.0.0.tgz#6bae6bb16be91351badd24cdce741f892a6532e3" + integrity sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ== + dependencies: + imurmurhash "^0.1.4" + +upath@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + +util-deprecate@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +uuid@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" + integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== + +validate-npm-package-license@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +validate-npm-package-name@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz#a316573e9b49f3ccd90dbb6eb52b3f06c6d604e8" + integrity sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ== + +walk-up-path@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/walk-up-path/-/walk-up-path-3.0.1.tgz#c8d78d5375b4966c717eb17ada73dbd41490e886" + integrity sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA== + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +which@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/which/-/which-4.0.0.tgz#cd60b5e74503a3fbcfbf6cd6b4138a8bae644c1a" + integrity sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg== + dependencies: + isexe "^3.1.1" + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +write-file-atomic@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-5.0.1.tgz#68df4717c55c6fa4281a7860b4c2ba0a6d2b11e7" + integrity sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^4.0.1" + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs@^17.7.2: + version "17.7.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + +yocto-queue@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.1.1.tgz#fef65ce3ac9f8a32ceac5a634f74e17e5b232110" + integrity sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g== diff --git a/packages/untp-playground/jest.config.js b/packages/untp-playground/jest.config.js new file mode 100644 index 00000000..6878c1e3 --- /dev/null +++ b/packages/untp-playground/jest.config.js @@ -0,0 +1,38 @@ +const { defaults } = require('jest-config'); +const base = require('../../jest.config.base.js'); + +module.exports = { + ...base, + rootDir: './', + moduleFileExtensions: [...defaults.moduleFileExtensions, 'mts'], + collectCoverage: false, + collectCoverageFrom: [ + '!**/infra/**', + '!**/.next/**', + '!**/types/**', + '!**/build/**', + '!**/node_modules/**', + '!**/**/index.ts', + ], + coverageReporters: ['text', 'lcov', 'json', 'json-summary'], + coverageProvider: 'v8', + coverageDirectory: './coverage', + extensionsToTreatAsEsm: ['.ts'], + testMatch: ['**/__tests__/**/*.test.*'], + testPathIgnorePatterns: ['/node_modules/'], + preset: 'ts-jest', + testEnvironment: 'node', + automock: false, + moduleNameMapper: { + '^(\\.{1,2}/.*)\\.js$': '$1', + }, + transform: { + '\\.ts$': [ + 'ts-jest', + { + useESM: true, + }, + ], + }, + passWithNoTests: true, // TODO: remove this after adding tests +}; diff --git a/packages/untp-playground/next.config.ts b/packages/untp-playground/next.config.ts new file mode 100644 index 00000000..6d3686e1 --- /dev/null +++ b/packages/untp-playground/next.config.ts @@ -0,0 +1,10 @@ +import type { NextConfig } from 'next'; + +const nextConfig: NextConfig = { + ...(process.env.NEXT_PUBLIC_BASE_PATH && { basePath: process.env.NEXT_PUBLIC_BASE_PATH }), + ...(process.env.NEXT_PUBLIC_ASSET_PREFIX && { assetPrefix: process.env.NEXT_PUBLIC_ASSET_PREFIX }), + trailingSlash: false, + output: 'standalone', +}; + +export default nextConfig; diff --git a/packages/untp-playground/package.json b/packages/untp-playground/package.json new file mode 100644 index 00000000..31e48058 --- /dev/null +++ b/packages/untp-playground/package.json @@ -0,0 +1,42 @@ +{ + "name": "untp-playground", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint", + "test": "jest" + }, + "dependencies": { + "@radix-ui/react-dialog": "^1.1.2", + "@radix-ui/react-select": "^2.1.2", + "@radix-ui/react-slot": "^1.1.0", + "ajv": "^8.0.0", + "ajv-formats": "^3.0.1", + "canvas-confetti": "^1.9.3", + "class-variance-authority": "^0.7.0", + "clsx": "^2.1.1", + "jwt-decode": "^4.0.0", + "lucide-react": "^0.460.0", + "next": "^15.0.3", + "react": "19.0.0-rc-66855b96-20241106", + "react-dom": "19.0.0-rc-66855b96-20241106", + "react-dropzone": "^14.3.5", + "sonner": "^1.7.0", + "tailwind-merge": "^2.5.4", + "tailwindcss-animate": "^1.0.7" + }, + "devDependencies": { + "@types/canvas-confetti": "^1.6.4", + "@types/node": "^20", + "@types/react": "^18", + "@types/react-dom": "^18", + "eslint": "^8", + "eslint-config-next": "15.0.3", + "postcss": "^8", + "tailwindcss": "^3.4.1", + "typescript": "^5" + } +} diff --git a/packages/untp-playground/postcss.config.mjs b/packages/untp-playground/postcss.config.mjs new file mode 100644 index 00000000..1a69fd2a --- /dev/null +++ b/packages/untp-playground/postcss.config.mjs @@ -0,0 +1,8 @@ +/** @type {import('postcss-load-config').Config} */ +const config = { + plugins: { + tailwindcss: {}, + }, +}; + +export default config; diff --git a/packages/untp-playground/public/credentials/dpp.json b/packages/untp-playground/public/credentials/dpp.json new file mode 100644 index 00000000..e2c8577c --- /dev/null +++ b/packages/untp-playground/public/credentials/dpp.json @@ -0,0 +1,8 @@ +{ + "@context": [ + "https://www.w3.org/ns/credentials/v2", + "https://vocabulary.uncefact.org/untp/dpp/0.5.0/" + ], + "type": "EnvelopedVerifiableCredential", + "id": "data:application/vc-ld+jwt,eyJhbGciOiJFZERTQSIsImlzcyI6ImRpZDp3ZWI6dW5jZWZhY3QuZ2l0aHViLmlvOnByb2plY3QtdmNraXQ6dGVzdC1hbmQtZGV2ZWxvcG1lbnQiLCJ0eXAiOiJ2Yy1sZCtqd3QifQ.eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvbnMvY3JlZGVudGlhbHMvdjIiLCJodHRwczovL3ZvY2FidWxhcnkudW5jZWZhY3Qub3JnL3VudHAvZHBwLzAuNS4wLyJdLCJ0eXBlIjpbIkRpZ2l0YWxQcm9kdWN0UGFzc3BvcnQiLCJWZXJpZmlhYmxlQ3JlZGVudGlhbCJdLCJpc3N1ZXIiOnsiaWQiOiJkaWQ6d2ViOnVuY2VmYWN0LmdpdGh1Yi5pbzpwcm9qZWN0LXZja2l0OnRlc3QtYW5kLWRldmVsb3BtZW50IiwibmFtZSI6IkVjb0NoYXJnZSBCYXR0ZXJ5IFN5c3RlbXMgUHR5IEx0ZCJ9LCJjcmVkZW50aWFsU3ViamVjdCI6eyJ0eXBlIjpbIlByb2R1Y3QiXSwiaWQiOiJodHRwczovL2lkLmdzMS5vcmcvMDEvMDk1MjAxMjM0NTY3ODgvMjEvMTIzNDUiLCJuYW1lIjoiRWNvQ2hhcmdlIEVWIEJhdHRlcnkgUGFjayIsInJlZ2lzdGVyZWRJZCI6IjA5NTIwMTIzNDU2Nzg4IiwiaWRTY2hlbWUiOnsidHlwZSI6WyJJZGVudGlmaWVyU2NoZW1lIl0sImlkIjoiaHR0cHM6Ly9pZC5nczEub3JnLzAxIiwibmFtZSI6Ikdsb2JhbCBUcmFkZSBJdGVtIE51bWJlciAoR1RJTikifSwicHJvZHVjdEltYWdlIjp7InR5cGUiOlsiTGluayJdLCJsaW5rVVJMIjoiaHR0cHM6Ly9jLmFuaW1hYXBwLmNvbS9iM3ZmMk0yMC9pbWcvcHAtaGVhZGVyQDJ4LnBuZyIsImxpbmtOYW1lIjoiRVYgQmF0dGVyeSAzMDBBaCBJbWFnZSJ9LCJzZXJpYWxOdW1iZXIiOiIwMDAxIiwiYmF0Y2hOdW1iZXIiOiIyMDI0UTEtMDAxIiwiZGVzY3JpcHRpb24iOiJIaWdoLXBlcmZvcm1hbmNlIGF1dG9tb3RpdmUtZ3JhZGUgbGl0aGl1bS1pb24gYmF0dGVyeSBwYWNrIGRlc2lnbmVkIGZvciBlbGVjdHJpYyB2ZWhpY2xlcy4gTWFudWZhY3R1cmVkIHdpdGggcmVzcG9uc2libHkgc291cmNlZCBtYXRlcmlhbHMgYW5kIGEgOTUlIHJlY3ljbGFiaWxpdHkgcmF0ZSwgaXQgcmVkdWNlcyBsaWZlY3ljbGUgZW1pc3Npb25zIHRocm91Z2ggZWNvLWZyaWVuZGx5IHByb2R1Y3Rpb24gYW5kIHZlcmlmaWVkIHJlY3ljbGluZyBwcm9ncmFtcy4iLCJwcm9kdWN0Q2F0ZWdvcnkiOlt7InR5cGUiOlsiQ2xhc3NpZmljYXRpb24iXSwiaWQiOiJodHRwczovL3Vuc3RhdHMudW4ub3JnL3Vuc2QvY2xhc3NpZmljYXRpb25zL0Vjb24vY3BjLzQ2NDEwIiwiY29kZSI6IjQ2NDEwIiwibmFtZSI6IlByaW1hcnkgY2VsbHMgYW5kIHByaW1hcnkgYmF0dGVyaWVzIiwic2NoZW1lSUQiOiJodHRwczovL3Vuc3RhdHMudW4ub3JnL3Vuc2QvY2xhc3NpZmljYXRpb25zL0Vjb24vY3BjIiwic2NoZW1lTmFtZSI6IlVOIENlbnRyYWwgUHJvZHVjdCBDbGFzc2lmaWNhdGlvbiAoQ1BDKSJ9XSwicHJvZHVjZWRCeVBhcnR5Ijp7InR5cGUiOlsiSWRlbnRpZmllciJdLCJpZCI6Imh0dHBzOi8vaWRyLnVudHAuc2hvd3RoZXRoaW5nLmNvbS9hdG8vYWJuLzIyMTMzODQwMzIyNjU5P2xpbmtUeXBlPWF0bzpjZXJ0aWZpY2F0aW9uSW5mbyIsIm5hbWUiOiJFY29DaGFyZ2UgQmF0dGVyeSBTeXN0ZW1zIFB0eSBMdGQiLCJyZWdpc3RlcmVkSWQiOiI5MDY2NDg2OTMyNyIsImlkU2NoZW1lIjp7InR5cGUiOlsiSWRlbnRpZmllclNjaGVtZSJdLCJpZCI6Imh0dHBzOi8vYWJyLmJ1c2luZXNzLmdvdi5hdS9BQk4iLCJuYW1lIjoiQXVzdHJhbGlhbiBCdXNpbmVzcyBOdW1iZXIifX0sInByb2R1Y2VkQXRGYWNpbGl0eSI6eyJ0eXBlIjpbIklkZW50aWZpZXIiXSwiaWQiOiJodHRwczovL2lkci51bnRwLnNob3d0aGV0aGluZy5jb20vZ3MxL2dsbi8xMzIxMjAyMjkwNjQ4P2xpbmtUeXBlPWdzMTpjZXJ0aWZpY2F0aW9uSW5mbyIsIm5hbWUiOiJFY29DaGFyZ2UgU3lkbmV5IE1hbnVmYWN0dXJpbmcgUGxhbnQiLCJyZWdpc3RlcmVkSWQiOiIxMzIxMjAyMjkwNjQ4IiwiaWRTY2hlbWUiOnsidHlwZSI6WyJJZGVudGlmaWVyU2NoZW1lIl0sImlkIjoiaHR0cHM6Ly9pZC5nczEub3JnLzQxNCIsIm5hbWUiOiJHbG9iYWwgTG9jYXRpb24gTnVtYmVyIn19LCJkaW1lbnNpb25zIjp7InR5cGUiOlsiRGltZW5zaW9uIl0sIndlaWdodCI6eyJ0eXBlIjpbIk1lYXN1cmUiXSwidmFsdWUiOjQ4MCwidW5pdCI6IktHTSJ9LCJsZW5ndGgiOnsidHlwZSI6WyJNZWFzdXJlIl0sInZhbHVlIjoyODAwLCJ1bml0IjoiTU1UIn0sIndpZHRoIjp7InR5cGUiOlsiTWVhc3VyZSJdLCJ2YWx1ZSI6MTYwMCwidW5pdCI6Ik1NVCJ9LCJoZWlnaHQiOnsidHlwZSI6WyJNZWFzdXJlIl0sInZhbHVlIjoyMDAsInVuaXQiOiJNTVQifSwidm9sdW1lIjp7InR5cGUiOlsiTWVhc3VyZSJdLCJ2YWx1ZSI6MjUwLCJ1bml0IjoiRE1RIn19LCJwcm9kdWN0aW9uRGF0ZSI6IjIwMjQtMDMtMTUiLCJjb3VudHJ5T2ZQcm9kdWN0aW9uIjoiQVUiLCJncmFudWxhcml0eUxldmVsIjoiaXRlbSIsImNoYXJhY3RlcmlzdGljIjp7ImJhdHRlcnlTdGF0dXMiOiJuZXciLCJiYXR0ZXJ5Q2VsbFR5cGUiOiJQcmlzbWF0aWMiLCJudW1iZXJPZkNlbGxzIjoxODAsInRvdGFsRW5lcmd5IjoiMTAwa3doIn0sImR1ZURpbGlnZW5jZURlY2xhcmF0aW9uIjp7InR5cGUiOlsiTGluayJdLCJsaW5rVVJMIjoiaHR0cHM6Ly9iYXR0ZXJ5LW1hbnVmYWN0dXJlci5leGFtcGxlLmNvbS9kdWUtZGlsaWdlbmNlLzEyMzQ1NjciLCJsaW5rTmFtZSI6IkR1ZSBEaWxpZ2VuY2UgRGVjbGFyYXRpb24ifSwibWF0ZXJpYWxzUHJvdmVuYW5jZSI6W3sidHlwZSI6WyJNYXRlcmlhbCJdLCJuYW1lIjoiTGl0aGl1bSIsIm9yaWdpbkNvdW50cnkiOiJBVSIsIm1hc3NGcmFjdGlvbiI6MC4zLCJtYXNzQW1vdW50Ijp7InR5cGUiOlsiTWVhc3VyZSJdLCJ2YWx1ZSI6NzUsInVuaXQiOiJLR00ifX0seyJ0eXBlIjpbIk1hdGVyaWFsIl0sIm5hbWUiOiJOaWNrZWwiLCJvcmlnaW5Db3VudHJ5IjoiQVUiLCJtYXNzRnJhY3Rpb24iOjAuMywibWFzc0Ftb3VudCI6eyJ0eXBlIjpbIk1lYXN1cmUiXSwidmFsdWUiOjc1LCJ1bml0IjoiS0dNIn19LHsidHlwZSI6WyJNYXRlcmlhbCJdLCJuYW1lIjoiQ29iYWx0Iiwib3JpZ2luQ291bnRyeSI6IkFVIiwibWFzc0ZyYWN0aW9uIjowLjIsIm1hc3NBbW91bnQiOnsidHlwZSI6WyJNZWFzdXJlIl0sInZhbHVlIjo1MCwidW5pdCI6IktHTSJ9fSx7InR5cGUiOlsiTWF0ZXJpYWwiXSwibmFtZSI6Ik90aGVyIE1hdGVyaWFscyIsIm9yaWdpbkNvdW50cnkiOiJBVSIsIm1hc3NGcmFjdGlvbiI6MC4yLCJtYXNzQW1vdW50Ijp7InR5cGUiOlsiTWVhc3VyZSJdLCJ2YWx1ZSI6NTAsInVuaXQiOiJLR00ifX1dLCJjb25mb3JtaXR5Q2xhaW0iOlt7InR5cGUiOlsiQ2xhaW0iLCJEZWNsYXJhdGlvbiJdLCJpZCI6Imh0dHBzOi8vY2VydGlmaWVyLmV4YW1wbGUuY29tL2F0dGVzdGF0aW9ucy8yMDI0LTAwMSIsImFzc2Vzc21lbnREYXRlIjoiMjAyNC0wMy0xNSIsImNvbmZvcm1hbmNlIjp0cnVlLCJjb25mb3JtaXR5VG9waWMiOiJzb2NpYWwuc2FmZXR5IiwiY29uZm9ybWl0eUV2aWRlbmNlIjp7InR5cGUiOlsiU2VjdXJlTGluayIsIkxpbmsiXSwibGlua1VSTCI6Imh0dHBzOi8vaWRyLnVudHAuc2hvd3RoZXRoaW5nLmNvbS9nczEvZ3Rpbi8wOTM1OTUwMjAwMDAzND9saW5rVHlwZT1nczE6Y2VydGlmaWNhdGlvbkluZm8iLCJsaW5rTmFtZSI6IkNvbmZvcm1pdHkgRXZpZGVuY2UifSwicmVmZXJlbmNlU3RhbmRhcmQiOnsidHlwZSI6WyJTdGFuZGFyZCJdLCJpZCI6Imh0dHBzOi8vd3d3Lmlzby5vcmcvc3RhbmRhcmQvNzE0MDcuaHRtbCIsIm5hbWUiOiJJU08gMTI0MDUtNDoyMDE4IC0gVGVzdCBzcGVjaWZpY2F0aW9uIGZvciBsaXRoaXVtLWlvbiB0cmFjdGlvbiBiYXR0ZXJ5IHBhY2tzIGFuZCBzeXN0ZW1zIiwiaXNzdWluZ1BhcnR5Ijp7InR5cGUiOlsiSWRlbnRpZmllciJdLCJpZCI6Imh0dHBzOi8vd3d3Lmlzby5vcmciLCJuYW1lIjoiSW50ZXJuYXRpb25hbCBPcmdhbml6YXRpb24gZm9yIFN0YW5kYXJkaXphdGlvbiJ9LCJpc3N1ZURhdGUiOiIyMDE4LTAyLTE1In0sImRlY2xhcmVkVmFsdWUiOlt7InR5cGUiOlsiTWV0cmljIl0sIm1ldHJpY05hbWUiOiJTaG9ydCBDaXJjdWl0IFRlc3QgVGVtcGVyYXR1cmUgUmlzZSIsIm1ldHJpY1ZhbHVlIjp7InR5cGUiOlsiTWVhc3VyZSJdLCJ2YWx1ZSI6MCwidW5pdCI6IkNFTCJ9LCJhY2N1cmFjeSI6MC4wMSwic2NvcmUiOiJBIn0seyJ0eXBlIjpbIk1ldHJpYyJdLCJtZXRyaWNOYW1lIjoiTWF4aW11bSBPcGVyYXRpbmcgVGVtcGVyYXR1cmUiLCJtZXRyaWNWYWx1ZSI6eyJ0eXBlIjpbIk1lYXN1cmUiXSwidmFsdWUiOjU1LCJ1bml0IjoiQ0VMIn0sImFjY3VyYWN5IjowLjAxLCJzY29yZSI6IkEifV19XSwiY2lyY3VsYXJpdHlTY29yZWNhcmQiOnsidHlwZSI6WyJDaXJjdWxhcml0eVBlcmZvcm1hbmNlIl0sInJlY3ljbGFibGVDb250ZW50IjowLjk1LCJyZWN5Y2xlZENvbnRlbnQiOjAuMywidXRpbGl0eUZhY3RvciI6MS4yLCJtYXRlcmlhbENpcmN1bGFyaXR5SW5kaWNhdG9yIjowLjg1LCJyZWN5Y2xpbmdJbmZvcm1hdGlvbiI6eyJ0eXBlIjpbIkxpbmsiXSwibGlua1VSTCI6Imh0dHBzOi8vYmF0dGVyeS1tYW51ZmFjdHVyZXIuZXhhbXBsZS5jb20vcmVjeWNsaW5nL2V2MzAwIiwibGlua05hbWUiOiJCYXR0ZXJ5IFJlY3ljbGluZyBHdWlkZWxpbmVzIn0sInJlcGFpckluZm9ybWF0aW9uIjp7InR5cGUiOlsiTGluayJdLCJsaW5rVVJMIjoiaHR0cHM6Ly9iYXR0ZXJ5LW1hbnVmYWN0dXJlci5leGFtcGxlLmNvbS9yZXBhaXIvZXYzMDAiLCJsaW5rTmFtZSI6IlJlcGFpciBJbnN0cnVjdGlvbnMifX0sImVtaXNzaW9uc1Njb3JlY2FyZCI6eyJ0eXBlIjpbIkVtaXNzaW9uc1BlcmZvcm1hbmNlIl0sImNhcmJvbkZvb3RwcmludCI6MjUsImRlY2xhcmVkVW5pdCI6IktHTSIsIm9wZXJhdGlvbmFsU2NvcGUiOiJDcmFkbGVUb0dhdGUiLCJwcmltYXJ5U291cmNlZFJhdGlvIjowLjk1LCJyZXBvcnRpbmdTdGFuZGFyZCI6eyJ0eXBlIjpbIlN0YW5kYXJkIl0sImlkIjoiaHR0cHM6Ly9naGdwcm90b2NvbC5vcmcvcHJvZHVjdC1zdGFuZGFyZCIsImlzc3VlRGF0ZSI6IjIwMTEtMTEtMTUiLCJuYW1lIjoiR0hHIFByb3RvY29sIFByb2R1Y3QgTGlmZSBDeWNsZSBBY2NvdW50aW5nIGFuZCBSZXBvcnRpbmcgU3RhbmRhcmQiLCJpc3N1aW5nUGFydHkiOnsidHlwZSI6WyJJZGVudGlmaWVyIl0sImlkIjoiaHR0cHM6Ly9naGdwcm90b2NvbC5vcmciLCJuYW1lIjoiR3JlZW5ob3VzZSBHYXMgUHJvdG9jb2wifX19LCJ0cmFjZWFiaWxpdHlJbmZvcm1hdGlvbiI6eyJ2ZXJpZmllZFJhdGlvIjowfX0sImNyZWRlbnRpYWxTdGF0dXMiOnsiaWQiOiJodHRwczovL3Zja2l0LnVudHAuc2hvd3RoZXRoaW5nLmNvbS9jcmVkZW50aWFscy9zdGF0dXMvYml0c3RyaW5nLXN0YXR1cy1saXN0LzIjNDAiLCJ0eXBlIjoiQml0c3RyaW5nU3RhdHVzTGlzdEVudHJ5Iiwic3RhdHVzUHVycG9zZSI6InJldm9jYXRpb24iLCJzdGF0dXNMaXN0SW5kZXgiOjQwLCJzdGF0dXNMaXN0Q3JlZGVudGlhbCI6Imh0dHBzOi8vdmNraXQudW50cC5zaG93dGhldGhpbmcuY29tL2NyZWRlbnRpYWxzL3N0YXR1cy9iaXRzdHJpbmctc3RhdHVzLWxpc3QvMiJ9LCJpZCI6InVybjp1dWlkOmJjMDc1YzVmLTIzMDQtNGIzZi1iYjI0LTQ2ZDlmYTlhOGU2MCIsInJlbmRlciI6W3sidGVtcGxhdGUiOiI8IURPQ1RZUEUgaHRtbD4gPGh0bWwgbGFuZz1cImVuXCI-IDxoZWFkPiA8bWV0YSBjaGFyc2V0PVwiVVRGLThcIiAvPiA8bWV0YSBuYW1lPVwidmlld3BvcnRcIiBjb250ZW50PVwid2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMFwiIC8-IDxsaW5rIGhyZWY9XCJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI_ZmFtaWx5PUxhdG86aXRhbCx3Z2h0QDAsMTAwOzAsMzAwOzAsNDAwOzAsNzAwOzAsOTAwOzEsMTAwOzEsMzAwOzEsNDAwOzEsNzAwOzEsOTAwJmRpc3BsYXk9c3dhcFwiIHJlbD1cInN0eWxlc2hlZXRcIj4gPHRpdGxlPkRpZ2l0YWwgUHJvZHVjdCBQYXNzcG9ydDwvdGl0bGU-IDxzdHlsZT4gOnJvb3QgeyAtLWltYWdlLXNyYzogdXJsKCd7e2NyZWRlbnRpYWxTdWJqZWN0LnByb2R1Y3RJbWFnZS5saW5rVVJMfX0nKTsgLS1oaWdobGlnaHQ6IHJnYmEoMCwgOTksIDgzLCAxKTsgLS1wcmltYXJ5LWNvbG9yc2JsdWUtNDAwOiByZ2JhKDc5LCAxNDksIDIyMSwgMSk7IC0tcHJpbWFyeS1jb2xvcnNibHVlLTUwOiByZ2JhKDIxMCwgMjI5LCAyNDksIDEpOyAtLXByaW1hcnktY29sb3JzYmx1ZS0xMDogcmdiYSgyNDcsIDI1MCwgMjUzLCAxKTsgLS13aGl0ZTogcmdiYSgyNTUsIDI1NSwgMjU1LCAxKTsgLS1ibGFjazogcmdiYSgwLCAwLCAwLCAxKTsgLS1wcmltYXJ5LWNvbG9yc2dyYXktNDAwOiByZ2JhKDIxMiwgMjE0LCAyMTYsIDEpOyAtLXByaW1hcnktY29sb3JzZ3JheS02MDA6IHJnYmEoODUsIDk2LCAxMTAsIDEpOyAtLXByaW1hcnktY29sb3JzYmx1ZS03MDA6IHJnYmEoMzEsIDkwLCAxNDksIDEpOyAtLXByaW1hcnktY29sb3JzZ3JheS03MDA6IHJnYmEoMzUsIDQ2LCA2MSwgMSk7IC0tYWNjZW50LWNvbG9yc2xpZ2h0LWdyZWVuOiByZ2JhKDE4NCwgMjM2LCAxODIsIDEpOyAtLXRleHQtY29sb3ItZ3JlZW46IHJnYmEoOCwgNTAsIDAsIDEpOyAtLWFjY2VudC1jb2xvcnNsaWdodC1yZWQ6IHJnYmEoMjU1LCAxODgsIDE4MywgMSk7IC0tdGV4dC1jb2xvci1yZWQ6IHJnYmEoNTAsIDAsIDAsIDEpOyB9ICogeyBtYXJnaW46IDA7IHBhZGRpbmc6IDA7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH0gYm9keSB7IGZvbnQtZmFtaWx5OiAnTGF0bycsIHNhbnMtc2VyaWY7IH0gc2VjdGlvbiB7IHBhZGRpbmc6IDAgMTZweCAwIDE2cHg7IH0gLnNlY3Rpb24tdGl0bGUgeyBmb250LXNpemU6IDE4cHg7IGZvbnQtd2VpZ2h0OiA3MDA7IGxpbmUtaGVpZ2h0OiAxOS42MnB4OyBjb2xvcjogIzAwMDAwMDsgfSAuc2VjdGlvbi1kZXNjcmlwdGlvbiB7IG1hcmdpbi10b3A6IDEycHg7IGZvbnQtc2l6ZTogMTZweDsgbGluZS1oZWlnaHQ6IDE4Ljg4cHg7IGNvbG9yOiAjMDAwMDAwOyBmb250LXdlaWdodDogNDAwOyB9IC50YWJsZSB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGp1c3RpZnktY29udGVudDogY2VudGVyOyBnYXA6IDEwcHg7IH0gLnRhYmxlLWl0ZW0geyBkaXNwbGF5OiBncmlkOyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAyZnI7IGNvbHVtbi1nYXA6IDE2cHg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IHBhZGRpbmctYm90dG9tOiAxMHB4OyBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2Q0ZDZkODsgfSAudGFibGUtaXRlbSBzcGFuIHsgZm9udC1zaXplOiAxNnB4OyBmb250LXdlaWdodDogNDAwOyBsaW5lLWhlaWdodDogMjJweDsgY29sb3I6IHZhcigtLXByaW1hcnktY29sb3JzZ3JheS02MDApOyB9IC50YWJsZS1pdGVtIHAsIC50YWJsZS1pdGVtIGEsIC50YWJsZS1pdGVtIGE6bGluayB7IGZvbnQtc2l6ZTogMTZweDsgZm9udC13ZWlnaHQ6IDUwMDsgbGluZS1oZWlnaHQ6IDIycHg7IGNvbG9yOiB2YXIoLS1wcmltYXJ5LWNvbG9yc2dyYXktNzAwKTsgfSAudGFibGUtbGluZSB7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZDRkNmQ4OyB9IC5pdGVtLXRpdGxlIHsgZGlzcGxheTogZmxleDsgZm9udC1zaXplOiAxNnB4OyBmb250LXdlaWdodDogNDAwOyBsaW5lLWhlaWdodDogMTcuNDRweDsgY29sb3I6ICM1NTYwNkU7IH0gLml0ZW0tdmFsdWUgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBmb250LXNpemU6IDE2cHg7IGZvbnQtd2VpZ2h0OiA1MDA7IGxpbmUtaGVpZ2h0OiAxNy40NHB4OyBjb2xvcjogIzIzMkUzRDsgfSAuaXRlbS12YWx1ZSBhLCAuaXRlbS12YWx1ZSBzcGFuIHsgY29sb3I6ICMyMzJFM0Q7IH0gLmFubm90YXRpb24geyBkaXNwbGF5OiBmbGV4OyBnYXA6IDRweDsgZm9udC1zaXplOiAxNHB4OyBmb250LXdlaWdodDogNDAwOyBsaW5lLWhlaWdodDogMTUuMjZweDsgY29sb3I6ICM1NTYwNkU7IH0gLmFubm90YXRpb24gc3BhbiB7IHBhZGRpbmctdG9wOiAycHg7IH0gLm1vYmlsZSB7IG1pbi13aWR0aDogMTUwcHg7IHdpZHRoOiAxMDAlOyBtYXJnaW46IDAgYXV0bzsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiAzMnB4OyB3b3JkLWJyZWFrOiBicmVhay13b3JkOyB9IC5oZWFkZXIgeyBtaW4taGVpZ2h0OiAzMjBweDsgfSAuaGVhZGVyLWltYWdlIHsgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDI0OC4zNmRlZywgcmdiYSgwLCAwLCAwLCAwLjE4KSA3LjYlLCByZ2JhKDAsIDAsIDAsIDAuNikgNzAuNTIlKTsgYmFja2dyb3VuZC1pbWFnZTogdmFyKC0taW1hZ2Utc3JjKTsgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjsgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyOyBoZWlnaHQ6IDIzMnB4OyBwb3NpdGlvbjogcmVsYXRpdmU7IH0gLmhlYWRlci1pbWFnZS10b3AtbGVmdCB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAyNXB4OyBsZWZ0OiAxNXB4OyBmb250LXdlaWdodDogNTAwOyBmb250LXNpemU6IDE2cHg7IGxpbmUtaGVpZ2h0OiAyMnB4OyBjb2xvcjogI2ZmZmZmZjsgfSAuaGVhZGVyLWltYWdlLWJvdHRvbS1sZWZ0IHsgcG9zaXRpb246IGFic29sdXRlOyBib3R0b206IDE4cHg7IGxlZnQ6IDE1cHg7IGNvbG9yOiAjZmZmZmZmOyB9IC5oZWFkZXItaW1hZ2UtYm90dG9tLWxlZnQgaDEgeyBmb250LXNpemU6IDMwcHg7IGZvbnQtd2VpZ2h0OiA5MDA7IGxpbmUtaGVpZ2h0OiAzMi41cHg7IH0gLmhlYWRlci1iYXRjaCB7IHBhZGRpbmc6IDEycHggMTZweCAxNnB4IDE2cHg7IGJhY2tncm91bmQtY29sb3I6ICNGN0ZBRkQ7IGRpc3BsYXk6IGdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogMS4yZnIgMWZyOyBncmlkLWF1dG8tZmxvdzogcm93OyByb3ctZ2FwOiAxMnB4OyB9IC5oZWFkZXItYmF0Y2gtaXRlbSB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogNnB4OyB9IC5oZWFkZXItYmF0Y2gtaXRlbSBhIHsgY29sb3I6ICMyMzJFM0Q7IGZvbnQtc2l6ZTogMTRweDsgbGluZS1oZWlnaHQ6IDE1LjI1cHg7IGZvbnQtd2VpZ2h0OiA1MDA7IH0gLmhlYWRlci1iYXRjaCBhIHsgcGFkZGluZzogMCAycHg7IGZvbnQtc2l6ZTogMTRweDsgZm9udC13ZWlnaHQ6IDQwMDsgbGluZS1oZWlnaHQ6IDE5LjI1cHg7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgY29sb3I6ICMwMDAwMDA7IH0gLmluZm9ybWF0aW9uIHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiA4cHg7IH0gLmluZm9ybWF0aW9uLXRleHQgeyBmb250LXNpemU6IDE5cHg7IGZvbnQtd2VpZ2h0OiAzMDA7IGxpbmUtaGVpZ2h0OiAyMi40MnB4OyB9IC5pbmZvcm1hdGlvbi1zaG93LW1vcmUgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDEwcHg7IGZvbnQtc2l6ZTogMTRweDsgZm9udC13ZWlnaHQ6IDUwMDsgbGluZS1oZWlnaHQ6IDIycHg7IH0gLmluZm9ybWF0aW9uLXNob3ctbW9yZSBhIHsgY29sb3I6IHZhcigtLXByaW1hcnktY29sb3JzZ3JheS03MDApOyB9IC5wYXNzcG9ydCB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogMjRweDsgfSAucGFzc3BvcnQtaGVhZGVyIHsgZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyBhbGlnbi1pdGVtczogY2VudGVyOyB9IC5wYXNzcG9ydC1ib3ggeyBkaXNwbGF5OiBncmlkOyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7IGJvcmRlcjogI0Q0RDZEOCAxcHggZG90dGVkOyBib3JkZXItcmFkaXVzOiA1cHg7IG92ZXJmbG93OiBoaWRkZW47IH0gLnBhc3Nwb3J0LWJveC1pdGVtIHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IHBhZGRpbmc6IDEycHggMTZweCAxMnB4IDE2cHg7IGJvcmRlcjogI0Q0RDZEOCAxcHggZG90dGVkOyBvdXRsaW5lLW9mZnNldDogLTFweDsgbWluLWhlaWdodDogOTRweDsgY29sb3I6ICMxRjVBOTU7IH0gLnBhc3Nwb3J0LWJveC1pdGVtIGgzIHsgZm9udC1zaXplOiA0MHB4OyBmb250LXdlaWdodDogOTAwOyBsaW5lLWhlaWdodDogNDMuMzNweDsgbGV0dGVyLXNwYWNpbmc6IDJweDsgfSAucGFzc3BvcnQtYm94LWl0ZW0gcCB7IG1hcmdpbi10b3A6IDhweDsgZm9udC1zaXplOiAxNXB4OyBmb250LXdlaWdodDogNjAwOyBsaW5lLWhlaWdodDogMTguODhweDsgfSAucGFzc3BvcnQtYm94LWl0ZW06bGFzdC1jaGlsZCB7IGJhY2tncm91bmQtY29sb3I6ICNGN0ZBRkQ7IH0gLnBhc3Nwb3J0LWlzc3VlZC1ieS1oZWFkZXIgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDEycHg7IH0gLnBhc3Nwb3J0LWlzc3VlZC1ieS1oZWFkZXIgaDMgeyBtYXJnaW4tdG9wOiAycHg7IGZvbnQtc2l6ZTogMjBweDsgZm9udC13ZWlnaHQ6IDcwMDsgbGluZS1oZWlnaHQ6IDIxLjhweDsgfSAucGFzc3BvcnQtaXNzdWVkLWJ5LWhlYWRlciBwIHsgZm9udC1zaXplOiAxNnB4OyBmb250LXdlaWdodDogNDAwOyBsaW5lLWhlaWdodDogMTkuMjVweDsgY29sb3I6ICM1NTYwNkU7IH0gLnBhc3Nwb3J0LWFubm90YXRpb24geyBmb250LXNpemU6IDE0cHg7IGZvbnQtd2VpZ2h0OiA0MDA7IGxpbmUtaGVpZ2h0OiAxNS4yNnB4OyBjb2xvcjogIzU1NjA2RTsgfSAudHJhY2VhYmlsaXR5LWNhcmRzIHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiAxMnB4OyB9IC50cmFjZWFiaWxpdHktY2FyZCB7IGRpc3BsYXk6IGdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogM2ZyIDFmcjsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyBhbGlnbi1pdGVtczogY2VudGVyOyBtaW4taGVpZ2h0OiA0MHB4OyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH0gLnRyYWNlYWJpbGl0eS1jYXJkLXRleHQgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDhweDsgZm9udC1zaXplOiAxNnB4OyBmb250LXdlaWdodDogNDAwOyBsaW5lLWhlaWdodDogMTcuNDRweDsgY29sb3I6ICMwMDAwMDA7IH0gLnRyYWNlYWJpbGl0eS1jYXJkLXZpZXctZGV0YWlscywgLnRyYWNlYWJpbGl0eS1jYXJkLXZpZXctZGV0YWlsczpsaW5rIHsgZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiA4cHg7IH0gLmVtaXNzaW9uLXNjb3JlLWNhcmQgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDEycHg7IH0gLm1pc3Npb24tc2NvcmUtdGl0bGUgeyBmb250LXNpemU6IDIwcHg7IGZvbnQtd2VpZ2h0OiA3MDA7IGxpbmUtaGVpZ2h0OiAyMS44cHg7IH0gLm1pc3Npb24tc2NvcmUtZGVzY3JpcHRpb24geyBmb250LXNpemU6IDE2cHg7IGZvbnQtd2VpZ2h0OiA0MDA7IGxpbmUtaGVpZ2h0OiAxOC44OHB4OyBjb2xvcjogIzAwMDAwMDsgfSAuc2NvcmUgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDZweDsgfSAuc2NvcmUtdW5pdCB7IGZvbnQtc2l6ZTogNDBweDsgZm9udC13ZWlnaHQ6IDkwMDsgbGluZS1oZWlnaHQ6IDQzLjMzcHg7IGNvbG9yOiAjMUY1QTk1OyBsZXR0ZXItc3BhY2luZzogMnB4OyB9IC5zY29yZS1uYW1lIHsgZm9udC1zaXplOiAxNnB4OyBmb250LXdlaWdodDogNDAwOyBsaW5lLWhlaWdodDogMTcuNDRweDsgY29sb3I6ICM1NTYwNkU7IH0gLmRlY2xhcmF0aW9ucyB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogMTJweDsgfSAuZGVjbGFyYXRpb24tdGl0bGUgeyBmb250LXNpemU6IDIwcHg7IGZvbnQtd2VpZ2h0OiA3MDA7IGxpbmUtaGVpZ2h0OiAyMS44cHg7IH0gLmNhcmRzLWNvbmZvcm1pdGllcyB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogOHB4OyB9IC5jYXJkcy1jb25mb3JtaXR5IHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7IGdhcDogOHB4OyBtaW4td2lkdGg6IDMzNnB4OyBwYWRkaW5nOiAxNnB4IDE4cHggMTZweCAxNnB4OyBwb3NpdGlvbjogcmVsYXRpdmU7IGJhY2tncm91bmQtY29sb3I6IHZhcigtLXdoaXRlKTsgYm9yZGVyLXJhZGl1czogNHB4OyBib3JkZXI6IDFweCBzb2xpZDsgYm9yZGVyLWNvbG9yOiB2YXIoLS1wcmltYXJ5LWNvbG9yc2dyYXktNDAwKTsgfSAuZnJhbWUgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IHBvc2l0aW9uOiByZWxhdGl2ZTsgYWxpZ24tc2VsZjogc3RyZXRjaDsgd2lkdGg6IDEwMCU7IGZsZXg6IDAgMCBhdXRvOyB9IC5kaXYgeyBkaXNwbGF5OiBpbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiA0cHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsgZmxleDogMCAwIGF1dG87IH0gLmNvbXBhbnktbmFtZSB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IGZpdC1jb250ZW50OyBmb250LXdlaWdodDogNDAwOyBjb2xvcjogdmFyKC0tcHJpbWFyeS1jb2xvcnNncmF5LTYwMCk7IGZvbnQtc2l6ZTogMTRweDsgbGluZS1oZWlnaHQ6IDE5LjJweDsgfSAudGFncy1WQy1iYWRnZS1yZWQgeyBkaXNwbGF5OiBpbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IGdhcDogMTBweDsgcGFkZGluZzogNHB4IDhweDsgZmxleDogMCAwIGF1dG87IGJhY2tncm91bmQtY29sb3I6IHZhcigtLWFjY2VudC1jb2xvcnNsaWdodC1yZWQpOyBjb2xvcjogdmFyKC0tdGV4dC1jb2xvci1yZWQpOyBib3JkZXItcmFkaXVzOiA4cHg7IG92ZXJmbG93OiBoaWRkZW47IH0gLnRhZ3MtVkMtYmFkZ2UtZ3JlZW4geyBkaXNwbGF5OiBpbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IGdhcDogMTBweDsgcGFkZGluZzogNHB4IDhweDsgZmxleDogMCAwIGF1dG87IGJhY2tncm91bmQtY29sb3I6IHZhcigtLWFjY2VudC1jb2xvcnNsaWdodC1ncmVlbik7IGNvbG9yOiB2YXIoLS10ZXh0LWNvbG9yLWdyZWVuKTsgYm9yZGVyLXJhZGl1czogOHB4OyBvdmVyZmxvdzogaGlkZGVuOyB9IC52ZXJpZmlhYmxlIHsgd2lkdGg6IGZpdC1jb250ZW50OyBmb250LXdlaWdodDogNjAwOyBmb250LXNpemU6IDE0cHg7IGxpbmUtaGVpZ2h0OiAxNS4zcHg7IH0gLm1vYmlsZSAuZnJhbWUtMiB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogNHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7IGFsaWduLXNlbGY6IHN0cmV0Y2g7IHdpZHRoOiAxMDAlOyBmbGV4OiAwIDAgYXV0bzsgfSAudGV4dC13cmFwcGVyIHsgcG9zaXRpb246IHJlbGF0aXZlOyBhbGlnbi1zZWxmOiBzdHJldGNoOyBtYXJnaW4tdG9wOiAtMXB4OyBmb250LXdlaWdodDogNDAwOyBjb2xvcjogdmFyKC0tcHJpbWFyeS1jb2xvcnNibHVlLTcwMCk7IGZvbnQtc2l6ZTogMThweDsgbGluZS1oZWlnaHQ6IDIxLjJweDsgfSAucCB7IGNvbG9yOiB2YXIoLS1wcmltYXJ5LWNvbG9yc2dyYXktNjAwKTsgZm9udC1zaXplOiAxNHB4OyBsaW5lLWhlaWdodDogMTkuMnB4OyBhbGlnbi1zZWxmOiBzdHJldGNoOyBmb250LXdlaWdodDogNDAwOyBjb2xvcjogIzU1NjA2ZTsgfSAuc3BhbiB7IGZvbnQtd2VpZ2h0OiA0MDA7IGZvbnQtc2l6ZTogMTRweDsgbGluZS1oZWlnaHQ6IDE5LjJweDsgfSAudGV4dC13cmFwcGVyLTIgeyBjb2xvcjogIzU1NjA2ZTsgfSAuZnJhbWUtMyB7IGRpc3BsYXk6IGlubGluZS1mbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBhbGlnbi1pdGVtczogZmxleC1zdGFydDsgcG9zaXRpb246IHJlbGF0aXZlOyBmbGV4OiAwIDAgYXV0bzsgbWFyZ2luLXJpZ2h0OiAtMnB4OyBib3JkZXItYm90dG9tLXdpZHRoOiAxcHg7IGJvcmRlci1ib3R0b20tc3R5bGU6IHNvbGlkOyBib3JkZXItY29sb3I6IHZhcigtLXdoaXRlKTsgfSAuZnJhbWUtNCB7IGRpc3BsYXk6IGlubGluZS1mbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBhbGlnbi1pdGVtczogZmxleC1zdGFydDsgZ2FwOiA0cHg7IHBhZGRpbmc6IDRweCAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsgZmxleDogMCAwIGF1dG87IGJvcmRlci10b3Atd2lkdGg6IDFweDsgYm9yZGVyLXRvcC1zdHlsZTogc29saWQ7IGJvcmRlci1jb2xvcjogdmFyKC0td2hpdGUpOyB9IC50eXBvZ3JhcGh5LWhlYWRpbmcgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgZ2FwOiAxMHB4OyB9IC5oZWFkaW5nIHsgcG9zaXRpb246IHJlbGF0aXZlOyBmbGV4OiAxOyBmb250LXdlaWdodDogNDAwOyBjb2xvcjogdmFyKC0tcHJpbWFyeS1jb2xvcnNncmF5LTcwMCk7IGZvbnQtc2l6ZTogMTZweDsgbGluZS1oZWlnaHQ6IDE3LjRweDsgfSAuaGVhZGluZy0yIHsgcG9zaXRpb246IHJlbGF0aXZlOyBmbGV4OiAxOyBtYXJnaW4tdG9wOiAtMC41cHg7IGZvbnQtd2VpZ2h0OiA0MDA7IGNvbG9yOiB2YXIoLS1wcmltYXJ5LWNvbG9yc2dyYXktNjAwKTsgZm9udC1zaXplOiAxNHB4OyBsaW5lLWhlaWdodDogMTkuMnB4OyB9IC5jYXJkcy10cmFjZWFiaWxpdHkgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IHBhZGRpbmc6IDhweCAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsgYWxpZ24tc2VsZjogc3RyZXRjaDsgd2lkdGg6IDEwMCU7IGZsZXg6IDAgMCBhdXRvOyBib3JkZXItcmFkaXVzOiA0cHg7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfSAuaGlzdG9yeS1pbmZvcm1hdGlvbiB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogMTJweDsgfSAuaGlzdG9yeS12YWx1ZS1jaGFpbi1pdGVtIHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiA4cHg7IH0gLmhpc3RvcnktdmFsdWUtY2hhaW4geyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDRweDsgfSAuaGlzdG9yeS12YWx1ZS1jaGFpbiBwIHsgZm9udC1zaXplOiAxOHB4OyBmb250LXdlaWdodDogNDAwOyBsaW5lLWhlaWdodDogMjEuMjRweDsgY29sb3I6ICMxRjVBOTU7IH0gLnZlcmlmaWVkLXJhdGlvIHsgYmFja2dyb3VuZC1jb2xvcjogI0QyRTVGOTsgd2lkdGg6IGZpdC1jb250ZW50OyBwYWRkaW5nOiAycHggNHB4OyB9IC52ZXJpZmllZC1yYXRpbyBwIHsgZm9udC1zaXplOiAxNHB4OyBmb250LXdlaWdodDogNDAwOyBsaW5lLWhlaWdodDogMTkuMjVweDsgY29sb3I6IHZhcigtLWJsYWNrKTsgfSAuZnJhbWUtNSB7IGRpc3BsYXk6IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDhweDsgcG9zaXRpb246IHJlbGF0aXZlOyBmbGV4OiAwIDAgYXV0bzsgfSAuY29tcGFueS1uYW1lLXdyYXBwZXIgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyB3aWR0aDogMjYwcHg7IGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyBnYXA6IDRweDsgcG9zaXRpb246IHJlbGF0aXZlOyB9IC5jb21wYW55LW5hbWUtMiB7IGNvbG9yOiB2YXIoLS1ibGFjayk7IGZvbnQtc2l6ZTogMTZweDsgbGluZS1oZWlnaHQ6IDE3LjRweDsgcG9zaXRpb246IHJlbGF0aXZlOyBhbGlnbi1zZWxmOiBzdHJldGNoOyBmb250LXdlaWdodDogNDAwOyB9IC5pbWcgeyBwb3NpdGlvbjogcmVsYXRpdmU7IGZsZXg6IDAgMCBhdXRvOyBtYXJnaW4tcmlnaHQ6IC0xcHg7IH0gLnByb2R1Y3Rpb24geyBkaXNwbGF5OiBub25lOyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDEycHg7IH0gLnByb2R1Y3Rpb246aGFzKC50YWJsZS1pdGVtKSB7IGRpc3BsYXk6IGZsZXg7IH0gLnByb2R1Y3Rpb24tdGl0bGUgeyBmb250LXNpemU6IDIwcHg7IGZvbnQtd2VpZ2h0OiA3MDA7IGxpbmUtaGVpZ2h0OiAyMS44cHg7IH0gLnByb2R1Y3QtdGFibGUsIC5wcm9kdWN0LXRhYmxlOmxpbmssIC5wcm9kdWN0LXRhYmxlOnZpc2l0ZWQsIC5wcm9kdWN0LXRhYmxlOmFjdGl2ZSB7IGNvbG9yOiAjMjMyRTNEOyB9IC5jb21wb3NpdGlvbi1ib3ggeyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDhweDsgbWFyZ2luLXRvcDogMTJweDsgfSAuY29tcG9zaXRpb24tYm94LWl0ZW0geyBkaXNwbGF5OiBncmlkOyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciBhdXRvOyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IGJvcmRlcjogMXB4IHNvbGlkICNkNGQ2ZDg7IGJvcmRlci1yYWRpdXM6IDRweDsgcGFkZGluZzogMTZweDsgfSAuY29tcG9zaXRpb24tcGVyY2VudCB7IGZvbnQtc2l6ZTogMTZweDsgZm9udC13ZWlnaHQ6IDUwMDsgbGluZS1oZWlnaHQ6IDIxLjkycHg7IGNvbG9yOiAjMDAwMDAwOyB9IC5jb21wb3NpdGlvbi10aXRsZSB7IGZvbnQtc2l6ZTogMTZweDsgZm9udC13ZWlnaHQ6IDYwMDsgbGluZS1oZWlnaHQ6IDE3LjQ0cHg7IGNvbG9yOiAjMDAwMDAwOyB9IC5jb21wb3NpdGlvbi10YWcgeyBkaXNwbGF5OiBmbGV4OyB9IC5jb21wb3NpdGlvbi10YWctaXRlbSB7IGZvbnQtc2l6ZTogMTRweDsgZm9udC13ZWlnaHQ6IDQwMDsgbGluZS1oZWlnaHQ6IDE5LjI1cHg7IGNvbG9yOiAjMDAwMDAwOyBiYWNrZ3JvdW5kLWNvbG9yOiAjRDJFNUY5OyBwYWRkaW5nOiAycHggNHB4IDJweCA0cHg7IG1hcmdpbi1yaWdodDogNHB4OyB9IC5jb21wb3NpdGlvbi1ib3gtZmlyc3QtY29sdW1uIHsgZGlzcGxheTogZ3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiA0MHB4IDFmcjsgZ2FwOiAxMnB4OyB9IC5jb21wb3NpdGlvbi1ib3gtc2Vjb25kLWNvbHVtbiB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogNnB4OyB9IC5jb21wb3NpdGlvbi1ib3gtc2Vjb25kLWNvbHVtbiBhIHsgY29sb3I6ICMyMzJFM0Q7IGxpbmUtaGVpZ2h0OiAyMnB4OyB9IC5jb21wb3NpdGlvbi1ib3gtdGhpcmQtY29sdW1uIHsgZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBlbmQ7IGdhcDogMTJweDsgfSAuY29tcG9zaXRpb24tYm94LXRoaXJkLWNvbHVtbiBzdmcgeyBtYXJnaW46IDFweCAxMHB4IDAgMDsgfSAucGFzc3BvcnQtaXNzdWVkLWJ5IHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiAxMnB4OyB9IC5oaXN0b3J5IHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiAxMnB4OyB9IC5oaXN0b3J5LWV2ZW50IHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgfSAuaGlzdG9yeS1pdGVtIHsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkNGQ2ZDg7IHBhZGRpbmc6IDEwcHggMCAxMnB4IDA7IGRpc3BsYXk6IGdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIGF1dG87IGdhcDogMTZweDsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyB9IC5oaXN0b3J5LWl0ZW0gc3BhbiB7IGZvbnQtc2l6ZTogMTZweDsgZm9udC13ZWlnaHQ6IDQwMDsgbGluZS1oZWlnaHQ6IDE3LjQ0cHg7IGNvbG9yOiAjMDAwMDAwOyB9IC5oaXN0b3J5LWl0ZW0gYSB7IGZvbnQtc2l6ZTogMTZweDsgZm9udC13ZWlnaHQ6IDUwMDsgbGluZS1oZWlnaHQ6IDE3LjQ0cHg7IGNvbG9yOiB2YXIoLS1wcmltYXJ5LWNvbG9yc2dyYXktNzAwKTsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiAjNGY5NWRkOyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiAycHg7IH0gLmNvdW50cnktY29kZSB7IGZvbnQtc2l6ZTogMTRweDsgZm9udC13ZWlnaHQ6IDQwMDsgbGluZS1oZWlnaHQ6IDE5LjI1cHg7IGNvbG9yOiAjNTU2MDZlOyB9IC5ibHVlLWJvdHRvbS1saW5lLXRoaW4sIC5ibHVlLWJvdHRvbS1saW5lLXRoaW46bGluayB7IGJvcmRlci1ib3R0b206IDFweCAjNEY5NUREIHNvbGlkOyB3aWR0aDogZml0LWNvbnRlbnQ7IGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7IGdhcDogMTBweDsgZGlzcGxheTogaW5saW5lLWZsZXg7IGN1cnNvcjogcG9pbnRlcjsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9IC5ibHVlLWJvdHRvbS1saW5lLXRoaWNrLCAuYmx1ZS1ib3R0b20tbGluZS10aGljazpsaW5rIHsgd2lkdGg6IGZpdC1jb250ZW50OyBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7IGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyBnYXA6IDEwcHg7IGRpc3BsYXk6IGlubGluZS1mbGV4OyB0ZXh0LWRlY29yYXRpb24tbGluZTogdW5kZXJsaW5lOyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiAycHg7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogIzRGOTVERDsgdGV4dC11bmRlcmxpbmUtb2Zmc2V0OiAzcHg7IH0gLmdyYXktYm90dG9tLWxpbmUgeyBib3JkZXItYm90dG9tOiAxcHggIzU1NjA2RSBzb2xpZDsgd2lkdGg6IGZpdC1jb250ZW50OyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH0gLnZpZXctbW9yZS1idXR0b24geyBkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgYWxpZ24taXRlbXM6IGNlbnRlcjsgY29sb3I6IHZhcigtLXByaW1hcnktY29sb3JzYmx1ZS03MDApOyBjdXJzb3I6IHBvaW50ZXI7IH0gZm9vdGVyIHsgcGFkZGluZzogMTZweCAxNnB4IDMycHggMTZweDsgbWluLWhlaWdodDogNjBweDsgYmFja2dyb3VuZC1jb2xvcjogI0Y3RkFGRDsgfSBmb290ZXIgcCwgZm9vdGVyIGEsIGZvb3RlciBhOmxpbmsgeyBmb250LXNpemU6IDE0cHg7IGZvbnQtd2VpZ2h0OiA0MDA7IGxpbmUtaGVpZ2h0OiAxOS4yNXB4OyBjb2xvcjogIzIzMkUzRDsgfSAvKiBNZWRpYSBRdWVyaWVzIGZvciBNb2JpbGVzICovIEBtZWRpYSAobWluLXdpZHRoOiA1MHB4KSB7IC5jb250YWluZXIgeyBtaW4td2lkdGg6IDM3NXB4OyB9IC5jb250ZW50cyB7IGRpc3BsYXk6IG5vbmU7IH0gfSAvKiBNZWRpYSBRdWVyaWVzIGZvciBEZXNrdG9wcyAqLyBAbWVkaWEgKG1pbi13aWR0aDogMTQ0MHB4KSB7IC5jb250YWluZXIgeyBtaW4td2lkdGg6IDEwNDBweDsgbWluLWhlaWdodDogMzAwMHB4OyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogZmxleC1zdGFydDsgZ2FwOiAxMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOyB3aWR0aDogMTAwJTsgfSAubW9iaWxlIHsgZGlzcGxheTogbm9uZTsgfSBodG1sLCBib2R5IHsgbWFyZ2luOiAwcHg7IGhlaWdodDogMTAwJTsgfSAvKiBhIGJsdWUgY29sb3IgYXMgYSBnZW5lcmljIGZvY3VzIHN0eWxlICovIGJ1dHRvbjpmb2N1cy12aXNpYmxlIHsgb3V0bGluZTogMnB4IHNvbGlkICM0YTkwZTIgIWltcG9ydGFudDsgb3V0bGluZTogLXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yIGF1dG8gNXB4ICFpbXBvcnRhbnQ7IH0gYSB7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfSAuY29udGFpbmVyIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7IGdhcDogMTBweDsgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsgd2lkdGg6IDEwMCU7IG1pbi13aWR0aDogMTQ0MHB4OyBtaW4taGVpZ2h0OiAzMDAwcHg7IH0gLmNvbnRhaW5lciAuY29udGVudHMgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDQwcHg7IGZsZXg6IDE7IGZsZXgtZ3JvdzogMTsgfSAuY29udGFpbmVyIC5mcmFtZSB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyBnYXA6IDE2cHg7IHBhZGRpbmc6IDU2cHggMjAwcHggMHB4OyBhbGlnbi1zZWxmOiBzdHJldGNoOyB3aWR0aDogMTAwJTsgfSAuY29udGFpbmVyIC5jYXJkcy1jb25mb3JtaXR5LWhlYWRlciB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgcG9zaXRpb246IHJlbGF0aXZlOyBhbGlnbi1zZWxmOiBzdHJldGNoOyB3aWR0aDogMTAwJTsgZmxleDogMCAwIGF1dG87IH0gLmNvbnRhaW5lciAuY29uZm9ybWFuY2UgeyBmb250LXNpemU6IDE0cHg7IGZvbnQtd2VpZ2h0OiA0MDA7IGxpbmUtaGVpZ2h0OiAxOS4yNXB4OyBjb2xvcjogdmFyKC0tcHJpbWFyeS1jb2xvcnNncmF5LTYwMCk7IH0gLmNvbnRhaW5lciAuY2FyZHMtY29uZm9ybWl0eS1jb25mb3JtYW5jZSB7IGRpc3BsYXk6IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDRweDsgZmxleDogMCAwIGF1dG87IH0gLmNvbnRhaW5lciAuY2FyZHMtY29uZm9ybWl0eS1ib2R5IHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiA0cHg7IH0gLmNvbnRhaW5lciAuY2FyZHMtY29uZm9ybWl0eS10aXRsZSB7IGZvbnQtc2l6ZTogMjBweDsgZm9udC13ZWlnaHQ6IDQwMDsgbGluZS1oZWlnaHQ6IDIzLjZweDsgY29sb3I6IHZhcigtLXByaW1hcnktY29sb3JzYmx1ZS03MDApOyB9IC5jb250YWluZXIgLmNhcmRzLWNvbmZvcm1pdHktZGVzY3JpcHRpb24geyBjb2xvcjogdmFyKC0tcHJpbWFyeS1jb2xvcnNncmF5LTYwMCk7IGZvbnQtc2l6ZTogMTRweDsgbGluZS1oZWlnaHQ6IDE5LjJweDsgYWxpZ24tc2VsZjogc3RyZXRjaDsgZm9udC13ZWlnaHQ6IDQwMDsgfSAuY29udGFpbmVyIC5jYXJkcy1jb25mb3JtaXR5LWRlc2NyaXB0aW9uIGEgeyBjb2xvcjogdmFyKC0tcHJpbWFyeS1jb2xvcnNncmF5LTYwMCk7IH0gLmNvbnRhaW5lciAuZGVjbGFyZWQtdmFsdWVzIHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiAxMnB4OyB9IC5jb250YWluZXIgLmRlY2xhcmVkLXZhbHVlIHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiA0cHg7IH0gLmNvbnRhaW5lciAuZGVjbGFyZWQtdmFsdWUgaDMgeyBmb250LXNpemU6IDE2cHg7IGZvbnQtd2VpZ2h0OiA0MDA7IGxpbmUtaGVpZ2h0OiAxNy40NHB4OyB9IC5jb250YWluZXIgLmRlY2xhcmVkLXZhbHVlIHAgeyBmb250LXNpemU6IDE0cHg7IGZvbnQtd2VpZ2h0OiA0MDA7IGxpbmUtaGVpZ2h0OiAxOS4yNXB4OyB9IC5jb250YWluZXIgLlBQLXRpdGxlIHsgd2lkdGg6IDMwMHB4OyBtYXJnaW4tdG9wOiAtMXB4OyBmb250LXdlaWdodDogNTAwOyBjb2xvcjogdmFyKC0tcHJpbWFyeS1jb2xvcnNncmF5LTYwMCk7IGZvbnQtc2l6ZTogMjRweDsgbGluZS1oZWlnaHQ6IDMzcHg7IH0gLmNvbnRhaW5lciAudGV4dC13cmFwcGVyIHsgYWxpZ24tc2VsZjogc3RyZXRjaDsgZm9udC13ZWlnaHQ6IDkwMDsgY29sb3I6IHZhcigtLWJsYWNrKTsgZm9udC1zaXplOiA3MnB4OyBsZXR0ZXItc3BhY2luZzogNC4zMnB4OyBsaW5lLWhlaWdodDogNzhweDsgfSAuY29udGFpbmVyIC5wcm9kdWN0LUlELUFMVCB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtd3JhcDogd3JhcDsgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7IGdhcDogMTJweCAxMnB4OyBwYWRkaW5nOiAxMnB4IDEycHggMTZweDsgYWxpZ24tc2VsZjogc3RyZXRjaDsgd2lkdGg6IDEwMCU7IGJhY2tncm91bmQtY29sb3I6IHZhcigtLXByaW1hcnktY29sb3JzYmx1ZS0xMCk7IH0gLmNvbnRhaW5lciAuZGl2IHsgZGlzcGxheTogaW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogNnB4OyB9IC5jb250YWluZXIgLmxpbmUgeyBnYXA6IDEwcHg7IGRpc3BsYXk6IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogZmxleC1zdGFydDsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IDJweDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiB2YXIoLS1wcmltYXJ5LWNvbG9yc2JsdWUtNDAwKTsgdGV4dC11bmRlcmxpbmUtb2Zmc2V0OiAzcHg7IH0gLmNvbnRhaW5lciAudGV4dC13cmFwcGVyLTIgeyB3aWR0aDogZml0LWNvbnRlbnQ7IGZvbnQtd2VpZ2h0OiA1MDA7IGNvbG9yOiB2YXIoLS1wcmltYXJ5LWNvbG9yc2dyYXktNzAwKTsgZm9udC1zaXplOiAxNnB4OyBsaW5lLWhlaWdodDogMjJweDsgfSAuY29udGFpbmVyIC5kaXYtd3JhcHBlciB7IGRpc3BsYXk6IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogZmxleC1zdGFydDsgZ2FwOiAxMHB4OyBwYWRkaW5nOiAwcHggMHB4IDNweDsgfSAuY29udGFpbmVyIC50ZXh0LXdyYXBwZXItMyB7IHdpZHRoOiBmaXQtY29udGVudDsgbWFyZ2luLXRvcDogLTJweDsgZm9udC13ZWlnaHQ6IDUwMDsgY29sb3I6IHZhcigtLXByaW1hcnktY29sb3JzZ3JheS03MDApOyBmb250LXNpemU6IDE2cHg7IGxpbmUtaGVpZ2h0OiAxNy40cHg7IH0gLmNvbnRhaW5lciAuZnJhbWUtMiB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyBnYXA6IDE2cHg7IGFsaWduLXNlbGY6IHN0cmV0Y2g7IHdpZHRoOiAxMDAlOyB9IC5jb250YWluZXIgLlBQLWhlYWRlciB7IG1pbi13aWR0aDogMzIwcHg7IG1pbi1oZWlnaHQ6IDIwMHB4OyBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCByZ2JhKDAsIDAsIDAsIDAuMTgpIDAlLCByZ2JhKDAsIDAsIDAsIDAuNikgNzkuNSUpOyBiYWNrZ3JvdW5kLWltYWdlOiB2YXIoLS1pbWFnZS1zcmMpOyBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyOyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA1MCUgNTAlOyB9IC5jb250YWluZXIgLmZyYW1lLTMgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBhbGlnbi1pdGVtczogZmxleC1zdGFydDsganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsgZ2FwOiA4cHg7IGFsaWduLXNlbGY6IHN0cmV0Y2g7IHdpZHRoOiAxMDAlOyB9IC5jb250YWluZXIgLmZyYW1lLTQgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBhbGlnbi1pdGVtczogZmxleC1zdGFydDsgZ2FwOiA4cHg7IGZsZXg6IDE7IGZsZXgtZ3JvdzogMTsgfSAuY29udGFpbmVyIC5wIHsgYWxpZ24tc2VsZjogc3RyZXRjaDsgbWFyZ2luLXRvcDogLTFweDsgZm9udC13ZWlnaHQ6IDMwMDsgY29sb3I6IHZhcigtLWJsYWNrKTsgZm9udC1zaXplOiAxOXB4OyBsaW5lLWhlaWdodDogMjIuNHB4OyBvdmVyZmxvdzogaGlkZGVuOyB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsgZGlzcGxheTogLXdlYmtpdC1ib3g7IC13ZWJraXQtbGluZS1jbGFtcDogNDsgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsgfSAuY29udGFpbmVyIC5kaXYtMiB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyBnYXA6IDE2cHg7IHBhZGRpbmc6IDBweCAyMDBweDsgYWxpZ24tc2VsZjogc3RyZXRjaDsgd2lkdGg6IDEwMCU7IH0gLmNvbnRhaW5lciAudHlwb2dyYXBoeS1oZWFkaW5nIHsgZGlzcGxheTogaW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyOyBnYXA6IDEwcHg7IH0gLmNvbnRhaW5lciAudGV4dC13cmFwcGVyLTQgeyB3aWR0aDogZml0LWNvbnRlbnQ7IGZvbnQtd2VpZ2h0OiA3MDA7IGNvbG9yOiB2YXIoLS1wcmltYXJ5LWNvbG9yc2dyYXktNzAwKTsgZm9udC1zaXplOiA0MHB4OyBsaW5lLWhlaWdodDogNDMuNnB4OyB9IC5jb250YWluZXIgLnRleHQtd3JhcHBlci01IHsgYWxpZ24tc2VsZjogc3RyZXRjaDsgZm9udC13ZWlnaHQ6IDQwMDsgY29sb3I6IHZhcigtLWJsYWNrKTsgZm9udC1zaXplOiAxNnB4OyBsaW5lLWhlaWdodDogMTguOXB4OyB9IC5jb250YWluZXIgLmRpdi0zIHsgZGlzcGxheTogZ3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMS4zZnI7IGdhcDogMzJweDsgd2lkdGg6IDEwMCU7IH0gLmNvbnRhaW5lciAuZGl2LTcgeyBkaXNwbGF5OiBncmlkOyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAzZnI7IGdhcDogMzJweDsganVzdGlmeS1pdGVtczogY2VudGVyOyB9IC5jb250YWluZXIgLmZyYW1lLTUgeyBkaXNwbGF5OiBpbmxpbmUtZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7IGdhcDogMTJweDsgfSAuY29udGFpbmVyIC5mcmFtZS02IHsgZGlzcGxheTogZmxleDsgZmxleC13cmFwOiB3cmFwOyB3aWR0aDogNTEwcHg7IGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyBnYXA6IDBweCAwcHg7IG1hcmdpbi10b3A6IC0xcHg7IG1hcmdpbi1sZWZ0OiAtMXB4OyBtYXJnaW4tcmlnaHQ6IC0xcHg7IGJvcmRlci1yYWRpdXM6IDVweDsgYm9yZGVyOiAxcHggc29saWQ7IGJvcmRlci1jb2xvcjogdmFyKC0tcHJpbWFyeS1jb2xvcnNncmF5LTQwMCk7IH0gLmNvbnRhaW5lciAuZnJhbWUtNyB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IG1pbi13aWR0aDogMTcwcHg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogOHB4OyBwYWRkaW5nOiAxMnB4IDE2cHg7IGZsZXg6IDE7IGZsZXgtZ3JvdzogMTsgfSAuY29udGFpbmVyIC50ZXh0LXdyYXBwZXItNiB7IGFsaWduLXNlbGY6IHN0cmV0Y2g7IG1hcmdpbi10b3A6IC0xcHg7IGZvbnQtd2VpZ2h0OiA5MDA7IGNvbG9yOiB2YXIoLS1wcmltYXJ5LWNvbG9yc2JsdWUtNzAwKTsgZm9udC1zaXplOiA1NnB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IGxldHRlci1zcGFjaW5nOiAzLjM2cHg7IGxpbmUtaGVpZ2h0OiA2MC43cHg7IH0gLmNvbnRhaW5lciAudGV4dC13cmFwcGVyLTcgeyB3aWR0aDogZml0LWNvbnRlbnQ7IGZvbnQtd2VpZ2h0OiA3MDA7IGNvbG9yOiB2YXIoLS1wcmltYXJ5LWNvbG9yc2JsdWUtNzAwKTsgZm9udC1zaXplOiAxNnB4OyBsaW5lLWhlaWdodDogMTguOXB4OyB9IC5jb250YWluZXIgLmZyYW1lLTggeyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBtaW4td2lkdGg6IDE3MHB4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDhweDsgcGFkZGluZzogMTJweCAxNnB4OyBmbGV4OiAxOyBmbGV4LWdyb3c6IDE7IGJhY2tncm91bmQtY29sb3I6IHZhcigtLXByaW1hcnktY29sb3JzYmx1ZS0xMCk7IH0gLmNvbnRhaW5lciAudGV4dC13cmFwcGVyLTggeyBhbGlnbi1zZWxmOiBzdHJldGNoOyBmb250LXdlaWdodDogNDAwOyBjb2xvcjogdmFyKC0tcHJpbWFyeS1jb2xvcnNncmF5LTYwMCk7IGZvbnQtc2l6ZTogMTRweDsgbGluZS1oZWlnaHQ6IDE1LjNweDsgfSAuY29udGFpbmVyIC5mcmFtZS05IHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7IGdhcDogMTJweDsgZmxleDogMTsgZmxleC1ncm93OiAxOyB9IC5jb250YWluZXIgLmRpdi00IHsgZGlzcGxheTogaW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogMTJweDsgfSAuY29udGFpbmVyIC5mcmFtZS0xMCB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IHdpZHRoOiAyNjBweDsgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7IGdhcDogNHB4OyB9IC5jb250YWluZXIgLnRleHQtd3JhcHBlci05IHsgYWxpZ24tc2VsZjogc3RyZXRjaDsgZm9udC13ZWlnaHQ6IDYwMDsgY29sb3I6IHZhcigtLWJsYWNrKTsgZm9udC1zaXplOiAxNnB4OyBsaW5lLWhlaWdodDogMTcuNHB4OyB9IC5jb250YWluZXIgLmZyYW1lLTExIHsgZGlzcGxheTogaW5saW5lLWZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyB9IC5jb250YWluZXIgLnRleHQtd3JhcHBlci0xMCB7IHdpZHRoOiBmaXQtY29udGVudDsgbWFyZ2luLXRvcDogLTFweDsgZm9udC13ZWlnaHQ6IDkwMDsgY29sb3I6IHZhcigtLXByaW1hcnktY29sb3JzYmx1ZS03MDApOyBmb250LXNpemU6IDU2cHg7IGxldHRlci1zcGFjaW5nOiAzLjM2cHg7IGxpbmUtaGVpZ2h0OiA2MC43cHg7IH0gLmNvbnRhaW5lciAuY28tZXEgeyB3aWR0aDogMTMwcHg7IGZvbnQtd2VpZ2h0OiA0MDA7IGNvbG9yOiB2YXIoLS1wcmltYXJ5LWNvbG9yc2dyYXktNjAwKTsgZm9udC1zaXplOiAxNnB4OyBsaW5lLWhlaWdodDogMTcuNHB4OyB9IC5jb250YWluZXIgLnNwYW4geyBmb250LXdlaWdodDogNDAwOyBjb2xvcjogIzU1NjA2ZTsgZm9udC1zaXplOiAxNnB4OyBsaW5lLWhlaWdodDogMTcuNHB4OyB9IC5jb250YWluZXIgLnRleHQtd3JhcHBlci0xMSB7IGZvbnQtc2l6ZTogMjBweDsgbGluZS1oZWlnaHQ6IDIxLjhweDsgfSAuY29udGFpbmVyIC5kaXYtNSB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyBhbGlnbi1zZWxmOiBzdHJldGNoOyB3aWR0aDogMTAwJTsgfSAuY29udGFpbmVyIC5kYXRhLXR3by1jb2x1bW5zIHsgZGlzcGxheTogZ3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgOGZyOyBhbGlnbi1pdGVtczogZmxleC1zdGFydDsgZ2FwOiAxNnB4OyBwYWRkaW5nOiAxMHB4IDBweCAxMnB4OyBhbGlnbi1zZWxmOiBzdHJldGNoOyB3aWR0aDogMTAwJTsgYm9yZGVyLWJvdHRvbS13aWR0aDogMXB4OyBib3JkZXItYm90dG9tLXN0eWxlOiBzb2xpZDsgYm9yZGVyLWNvbG9yOiB2YXIoLS1wcmltYXJ5LWNvbG9yc2dyYXktNDAwKTsgfSAuY29udGFpbmVyIC5kYXRhLXR3by1jb2x1bW5zLTIgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogZmxleC1zdGFydDsgZ2FwOiAxNnB4OyBwYWRkaW5nOiAxMHB4IDBweCAxMnB4OyBhbGlnbi1zZWxmOiBzdHJldGNoOyB3aWR0aDogMTAwJTsgYm9yZGVyLWJvdHRvbS13aWR0aDogMXB4OyBib3JkZXItYm90dG9tLXN0eWxlOiBzb2xpZDsgYm9yZGVyLWNvbG9yOiB2YXIoLS1wcmltYXJ5LWNvbG9yc2dyYXktNDAwKTsgfSAuY29udGFpbmVyIC5kYXRhLXR3by1jb2x1bW5zLTMgeyBkaXNwbGF5OiBncmlkOyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDEuMWZyIDJmcjsgZ2FwOiAxNnB4OyBwYWRkaW5nOiAxMHB4IDBweCAxMnB4OyB3aWR0aDogMTAwJTsgYm9yZGVyLWJvdHRvbS13aWR0aDogMXB4OyBib3JkZXItYm90dG9tLXN0eWxlOiBzb2xpZDsgYm9yZGVyLWNvbG9yOiB2YXIoLS1wcmltYXJ5LWNvbG9yc2dyYXktNDAwKTsgfSAuY29udGFpbmVyIC5kYXRhLXR3by1jb2x1bW5zIC5saXN0IHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgfSAuY29udGFpbmVyIC50ZXh0LXdyYXBwZXItMTIgeyBmb250LXdlaWdodDogNDAwOyBjb2xvcjogdmFyKC0tcHJpbWFyeS1jb2xvcnNncmF5LTYwMCk7IGZvbnQtc2l6ZTogMTZweDsgbGluZS1oZWlnaHQ6IDIycHg7IH0gLmNvbnRhaW5lciAuZGF0YS1kYXRhIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IGdhcDogMTBweDsgYWxpZ24tc2VsZjogc3RyZXRjaDsgZmxleC1ncm93OiAxOyBmbGV4OiAxOyB9IC5jb250YWluZXIgLmRhdGEgeyBmbGV4OiAxOyBmb250LXdlaWdodDogNTAwOyBjb2xvcjogdmFyKC0tcHJpbWFyeS1jb2xvcnNncmF5LTcwMCk7IGZvbnQtc2l6ZTogMTZweDsgfSAuY29udGFpbmVyIC5kYXRhLTIgeyBmb250LXdlaWdodDogNTAwOyBjb2xvcjogdmFyKC0tcHJpbWFyeS1jb2xvcnNncmF5LTcwMCk7IGZvbnQtc2l6ZTogMTZweDsgbGluZS1oZWlnaHQ6IDE3LjRweDsgZmxleDogMTsgfSAuY29udGFpbmVyIC5mcmFtZS0xMiB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyBmbGV4OiAxOyBmbGV4LWdyb3c6IDE7IH0gLmNvbnRhaW5lciAubGluZS13cmFwcGVyIHsgZmxleC13cmFwOiB3cmFwOyBnYXA6IDEwcHggMTBweDsgZGlzcGxheTogaW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyBwYWRkaW5nOiAwcHggMHB4IDNweDsgYm9yZGVyLWJvdHRvbS13aWR0aDogMnB4OyBib3JkZXItYm90dG9tLXN0eWxlOiBzb2xpZDsgYm9yZGVyLWNvbG9yOiB2YXIoLS1wcmltYXJ5LWNvbG9yc2JsdWUtNDAwKTsgfSAuY29udGFpbmVyIC5mcmFtZS0xMyB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyBnYXA6IDRweDsgYWxpZ24tc2VsZjogc3RyZXRjaDsgd2lkdGg6IDEwMCU7IH0gLmNvbnRhaW5lciAudGV4dC13cmFwcGVyLTEzIHsgd2lkdGg6IGZpdC1jb250ZW50OyBmb250LXdlaWdodDogNDAwOyBjb2xvcjogdmFyKC0tcHJpbWFyeS1jb2xvcnNncmF5LTYwMCk7IGZvbnQtc2l6ZTogMTRweDsgbGluZS1oZWlnaHQ6IDE1LjNweDsgbWFyZ2luLXRvcDogLTFweDsgfSAuY29udGFpbmVyIC50ZXh0LXdyYXBwZXItMTQgeyB3aWR0aDogMzU4cHg7IG1hcmdpbi10b3A6IC0xcHg7IGZvbnQtd2VpZ2h0OiA3MDA7IGNvbG9yOiB2YXIoLS1wcmltYXJ5LWNvbG9yc2dyYXktNzAwKTsgZm9udC1zaXplOiA0MHB4OyBsaW5lLWhlaWdodDogNDMuNnB4OyB9IC5jb250YWluZXIgLmZyYW1lLTE0IHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7IGdhcDogMTJweDsgcGFkZGluZzogMHB4IDMycHggMzJweDsgYWxpZ24tc2VsZjogc3RyZXRjaDsgd2lkdGg6IDEwMCU7IGJhY2tncm91bmQtY29sb3I6IHZhcigtLXByaW1hcnktY29sb3JzYmx1ZS0xMCk7IGJvcmRlci1yYWRpdXM6IDRweDsgb3ZlcmZsb3c6IGhpZGRlbjsgfSAuY29udGFpbmVyIC5mcmFtZS0xNSB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyOyBnYXA6IDEycHg7IHBhZGRpbmc6IDE2cHggMHB4IDBweDsgYWxpZ24tc2VsZjogc3RyZXRjaDsgd2lkdGg6IDEwMCU7IH0gLmNvbnRhaW5lciAuZW52aXJvbm1lbnQgeyBhbGlnbi1zZWxmOiBzdHJldGNoOyBtYXJnaW4tdG9wOiAtMXB4OyBmb250LXdlaWdodDogNDAwOyBjb2xvcjogdmFyKC0tcHJpbWFyeS1jb2xvcnNncmF5LTYwMCk7IGZvbnQtc2l6ZTogMTRweDsgbGluZS1oZWlnaHQ6IDE5LjJweDsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfSAuY29udGFpbmVyIC50ZXh0LXdyYXBwZXItMTUgeyBhbGlnbi1zZWxmOiBzdHJldGNoOyBmb250LXdlaWdodDogNDAwOyBjb2xvcjogdmFyKC0tcHJpbWFyeS1jb2xvcnNibHVlLTcwMCk7IGZvbnQtc2l6ZTogMThweDsgbGluZS1oZWlnaHQ6IDIxLjJweDsgfSAuY29udGFpbmVyIC5mcmFtZS0xNiB7IGRpc3BsYXk6IGdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmciAxZnI7IHJvdy1nYXA6IDI0cHg7IGNvbHVtbi1nYXA6IDMycHg7IGFsaWduLXNlbGY6IHN0cmV0Y2g7IH0gLmNvbnRhaW5lciAuZnJhbWUtMTcgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBtaW4td2lkdGg6IDQwMHB4OyBhbGlnbi1pdGVtczogZmxleC1zdGFydDsgZ2FwOiA0cHg7IGZsZXg6IDE7IGZsZXgtZ3JvdzogMTsgfSAuY29udGFpbmVyIC5kYXRhLXdyYXBwZXIgeyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgZ2FwOiAxMHB4OyBkaXNwbGF5OiBmbGV4OyBmbGV4OiAxOyBmbGV4LWdyb3c6IDE7IH0gLmNvbnRhaW5lciAudGV4dC13cmFwcGVyLTE2IHsgZm9udC13ZWlnaHQ6IDUwMDsgY29sb3I6IHZhcigtLXByaW1hcnktY29sb3JzZ3JheS03MDApOyBmb250LXNpemU6IDE0cHg7IH0gLmNvbnRhaW5lciAuY2FyZHMtY29uZm9ybWl0aWVzIHsgZGlzcGxheTogZ3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyIDFmcjsgZ2FwOiAxNnB4OyB3aWR0aDogMTAwJTsgfSAuY29udGFpbmVyIC5oaXN0b3J5LWR1ZS1kaWxpZ2VuY2UgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDhweDsgY29sb3I6IHZhcigtLWJsYWNrKTsgfSAuY29udGFpbmVyIC5oaXN0b3J5LWR1ZS1kaWxpZ2VuY2UgZGl2IHsgZm9udC1zaXplOiAxNnB4OyBmb250LXdlaWdodDogNDAwOyBsaW5lLWhlaWdodDogMTcuNDRweDsgfSAuY29udGFpbmVyIC5jb250ZW50cyAuaGlzdG9yeS1pbmZvcm1hdGlvbiB7IHdpZHRoOiAxMDAlOyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDE2cHg7IH0gLmNvbnRhaW5lciAuY29udGVudHMgLmhpc3RvcnktdmFsdWUtY2hhaW4taXRlbSB7IG1hcmdpbi10b3A6IDhweDsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiAxNnB4OyB9IC5jb250YWluZXIgLmNvbnRlbnRzIC5oaXN0b3J5LXZhbHVlLWNoYWluIHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IHJvdzsgZ2FwOiAxNnB4OyB9IC5jb250YWluZXIgLmNvbnRlbnRzIC52ZXJpZmllZC1yYXRpbyB7fSAuY29udGFpbmVyIC5jb250ZW50cyAuaGlzdG9yeS1ldmVudCB7fSAuY29udGFpbmVyIC5jb250ZW50cyAuaGlzdG9yeS1pdGVtIHt9IC5jb250YWluZXIgLmNvbnRlbnRzIC52aWV3LW1vcmUtYnV0dG9uIHsgYWxpZ24tc2VsZjogYmFzZWxpbmU7IH0gLmNvbnRhaW5lciAuZnJhbWUtMTggeyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBtaW4td2lkdGg6IDQwMHB4OyBhbGlnbi1pdGVtczogZmxleC1zdGFydDsgZmxleDogMTsgZmxleC1ncm93OiAxOyB9IC5jb250YWluZXIgLmZyYW1lLTE5IHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7IH0gLmNvbnRhaW5lciAuZnJhbWUtMjAgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBhbGlnbi1pdGVtczogZmxleC1zdGFydDsgZ2FwOiAxMnB4OyBhbGlnbi1zZWxmOiBzdHJldGNoOyB3aWR0aDogMTAwJTsgfSAuY29udGFpbmVyIC5jYXJkcy10cmFjZWFiaWxpdHktMiB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgcGFkZGluZzogOHB4IDBweDsgYWxpZ24tc2VsZjogc3RyZXRjaDsgd2lkdGg6IDEwMCU7IGJvcmRlci1yYWRpdXM6IDRweDsgfSAuY29udGFpbmVyIC5mcmFtZS0yMSB7IGRpc3BsYXk6IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDhweDsgfSAuY29udGFpbmVyIC5jb21wYW55LW5hbWUgeyBhbGlnbi1zZWxmOiBzdHJldGNoOyBmb250LXdlaWdodDogNDAwOyBjb2xvcjogdmFyKC0tYmxhY2spOyBmb250LXNpemU6IDE2cHg7IGxpbmUtaGVpZ2h0OiAxNy40cHg7IH0gLmNvbnRhaW5lciAuZnJhbWUtMjIgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDhweDsgYWxpZ24tc2VsZjogc3RyZXRjaDsgd2lkdGg6IDEwMCU7IH0gLmNvbnRhaW5lciAucmVjdGFuZ2xlLTMgeyBhbGlnbi1zZWxmOiBzdHJldGNoOyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxcHg7IGJhY2tncm91bmQtY29sb3I6IHZhcigtLXByaW1hcnktY29sb3JzZ3JheS00MDApOyB9IC5jb250YWluZXIgLmZyYW1lLTIzIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7IGdhcDogOHB4OyBhbGlnbi1zZWxmOiBzdHJldGNoOyB3aWR0aDogMTAwJTsgfSAuY29udGFpbmVyIC5kaXYtNiB7IHdpZHRoOiBmaXQtY29udGVudDsgbWFyZ2luLXRvcDogLTFweDsgZm9udC13ZWlnaHQ6IDQwMDsgY29sb3I6IHZhcigtLXByaW1hcnktY29sb3JzZ3JheS03MDApOyBmb250LXNpemU6IDE0cHg7IGxpbmUtaGVpZ2h0OiAxOS4ycHg7IH0gLmNvbnRhaW5lciAudGV4dC13cmFwcGVyLTE3IHsgZm9udC13ZWlnaHQ6IDQwMDsgY29sb3I6ICMyMzJlM2Q7IGZvbnQtc2l6ZTogMTRweDsgbGluZS1oZWlnaHQ6IDE5LjJweDsgfSAuY29udGFpbmVyIC50ZXh0LXdyYXBwZXItMTggeyBmb250LXNpemU6IDE2cHg7IGZvbnQtd2VpZ2h0OiA1MDA7IGxpbmUtaGVpZ2h0OiAxNy40NHB4OyBjb2xvcjogIzIzMkUzRDsgfSAuY29udGFpbmVyIC5ibGFjay1saW5lIHsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBjb2xvcjogIzIzMmUzZDsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkOyB9IC5jb250YWluZXIgLmZyYW1lLTI0IHsgZGlzcGxheTogbm9uZTsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7IGdhcDogMTJweDsgcGFkZGluZzogMHB4IDIwMHB4OyBhbGlnbi1zZWxmOiBzdHJldGNoOyB3aWR0aDogMTAwJTsgfSAuY29udGFpbmVyIC5mcmFtZS0yNDpoYXMoLmRhdGEtdHdvLWNvbHVtbnMpIHsgZGlzcGxheTogZmxleDsgfSAuY29udGFpbmVyIC5oZWFkaW5nLXdyYXBwZXIgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgZ2FwOiAxMHB4OyBhbGlnbi1zZWxmOiBzdHJldGNoOyB3aWR0aDogMTAwJTsgfSAuY29udGFpbmVyIC5oZWFkaW5nIHsgZmxleDogMTsgbWFyZ2luLXRvcDogLTFweDsgZm9udC13ZWlnaHQ6IDcwMDsgY29sb3I6IHZhcigtLXByaW1hcnktY29sb3JzZ3JheS03MDApOyBmb250LXNpemU6IDQwcHg7IGxpbmUtaGVpZ2h0OiA0My42cHg7IH0gLmNvbnRhaW5lciAuY2FyZHMgeyBkaXNwbGF5OiBncmlkOyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7IGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyBnYXA6IDIwcHggMjBweDsgYWxpZ24tc2VsZjogc3RyZXRjaDsgfSAuY29udGFpbmVyIC5jYXJkcy1jb21wb3NpdGlvbiB7IGRpc3BsYXk6IGZsZXg7IG1pbi13aWR0aDogNDAwcHg7IGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IHBhZGRpbmc6IDIwcHg7IGJhY2tncm91bmQtY29sb3I6IHZhcigtLXdoaXRlKTsgYm9yZGVyLXJhZGl1czogNHB4OyBib3JkZXI6IDFweCBzb2xpZDsgYm9yZGVyLWNvbG9yOiB2YXIoLS1wcmltYXJ5LWNvbG9yc2dyYXktNDAwKTsgfSAuY29udGFpbmVyIC5maXJzdC1jb2x1bW4geyBkaXNwbGF5OiBmbGV4OyB3aWR0aDogMjYwcHg7IGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyBnYXA6IDEycHg7IH0gLmNvbnRhaW5lciAucGVyY2VudGFnZSB7IHdpZHRoOiA0MHB4OyBtYXJnaW4tdG9wOiAtMXB4OyBmb250LXdlaWdodDogNTAwOyBjb2xvcjogdmFyKC0tYmxhY2spOyBmb250LXNpemU6IDE1cHg7IGxpbmUtaGVpZ2h0OiAyMC42cHg7IH0gLmNvbnRhaW5lciAuZGV0YWlscyB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyBnYXA6IDZweDsgZmxleDogMTsgZmxleC1ncm93OiAxOyB9IC5jb250YWluZXIgLmZyYW1lLTI1IHsgZGlzcGxheTogaW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyBnYXA6IDZweDsgfSAuY29udGFpbmVyIC5mcmFtZS0yNiB7IGRpc3BsYXk6IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogZmxleC1zdGFydDsgZ2FwOiA0cHg7IHBhZGRpbmc6IDJweCA0cHg7IGJhY2tncm91bmQtY29sb3I6ICNkMmU1Zjg7IH0gLmNvbnRhaW5lciAudGV4dC13cmFwcGVyLTE5IHsgd2lkdGg6IGZpdC1jb250ZW50OyBtYXJnaW4tdG9wOiAtMXB4OyBmb250LXdlaWdodDogNDAwOyBjb2xvcjogdmFyKC0tYmxhY2spOyBmb250LXNpemU6IDE0cHg7IHRleHQtYWxpZ246IHJpZ2h0OyBsaW5lLWhlaWdodDogMTkuMnB4OyB9IC5jb250YWluZXIgLmZyYW1lLTI3IHsgZGlzcGxheTogaW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyBnYXA6IDRweDsgcGFkZGluZzogMnB4IDRweDsgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcHJpbWFyeS1jb2xvcnNibHVlLTUwKTsgfSAuY29udGFpbmVyIC5kYXRhLWRhdGEtbGluay0yIHsgZGlzcGxheTogaW5saW5lLWZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyBnYXA6IDZweDsgfSAuY29udGFpbmVyIC5mcmFtZS0yOCB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogMTJweDsgYWxpZ24tc2VsZjogc3RyZXRjaDsgd2lkdGg6IDEwMCU7IH0gLmNvbnRhaW5lciAuZnJhbWUtMjkgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDhweDsgfSAuY29udGFpbmVyIC50eXBlLW9mLWV2ZW50IHsgZmxleDogMTsgbWFyZ2luLXRvcDogLTFweDsgZm9udC13ZWlnaHQ6IDQwMDsgY29sb3I6IHZhcigtLWJsYWNrKTsgZm9udC1zaXplOiAxNnB4OyBsaW5lLWhlaWdodDogMTcuNHB4OyB9IC5jb250YWluZXIgLnRleHQtd3JhcHBlci0yMCB7IGFsaWduLXNlbGY6IHN0cmV0Y2g7IGZvbnQtd2VpZ2h0OiA0MDA7IGNvbG9yOiB2YXIoLS1wcmltYXJ5LWNvbG9yc2JsdWUtNzAwKTsgZm9udC1zaXplOiAxNnB4OyBsaW5lLWhlaWdodDogMTcuNHB4OyBjdXJzb3I6IHBvaW50ZXI7IH0gLmNvbnRhaW5lciAudGhpcy1kaWdpdGFsLXByb2R1Y3Qtd3JhcHBlciB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyOyBnYXA6IDEwcHg7IHBhZGRpbmc6IDI0cHggMjAwcHggNzZweDsgYWxpZ24tc2VsZjogc3RyZXRjaDsgd2lkdGg6IDEwMCU7IGJhY2tncm91bmQtY29sb3I6IHZhcigtLXByaW1hcnktY29sb3JzYmx1ZS0xMCk7IH0gLmNvbnRhaW5lciAudGhpcy1kaWdpdGFsLXByb2R1Y3QgeyBmbGV4OiAxOyBtYXJnaW4tdG9wOiAtMXB4OyBmb250LXdlaWdodDogNDAwOyBjb2xvcjogdmFyKC0tcHJpbWFyeS1jb2xvcnNncmF5LTcwMCk7IGZvbnQtc2l6ZTogMTRweDsgbGluZS1oZWlnaHQ6IDE5LjJweDsgfSB9IDwvc3R5bGU-IDwvaGVhZD4gPGJvZHk-IDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj4gPCEtLSBNb2JpbGUgd2lkdGggMzkwcHgtLT4gPGRpdiBjbGFzcz1cIm1vYmlsZVwiPiA8aGVhZGVyIGNsYXNzPVwiaGVhZGVyXCI-IDxkaXYgY2xhc3M9XCJoZWFkZXItaW1hZ2VcIj4gPHAgY2xhc3M9XCJoZWFkZXItaW1hZ2UtdG9wLWxlZnRcIj5QUk9EVUNUIFBBU1NQT1JUPC9wPiA8ZGl2IGNsYXNzPVwiaGVhZGVyLWltYWdlLWJvdHRvbS1sZWZ0XCI-IDxoMT57e2NyZWRlbnRpYWxTdWJqZWN0Lm5hbWV9fTwvaDE-IDwvZGl2PiA8L2Rpdj4gPGRpdj4gPGRpdiBjbGFzcz1cImhlYWRlci1iYXRjaFwiPiA8ZGl2IGNsYXNzPVwiaGVhZGVyLWJhdGNoLWl0ZW1cIj4gPHN2ZyB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI-IDxwYXRoIGQ9XCJNMi40NSAzLjVDMi4xNzE1MiAzLjUgMS45MDQ0NSAzLjM4OTM4IDEuNzA3NTQgMy4xOTI0NkMxLjUxMDYyIDIuOTk1NTUgMS40IDIuNzI4NDggMS40IDIuNDVDMS40IDIuMTcxNTIgMS41MTA2MiAxLjkwNDQ1IDEuNzA3NTQgMS43MDc1NEMxLjkwNDQ1IDEuNTEwNjIgMi4xNzE1MiAxLjQgMi40NSAxLjRDMi43Mjg0OCAxLjQgMi45OTU1NSAxLjUxMDYyIDMuMTkyNDYgMS43MDc1NEMzLjM4OTM4IDEuOTA0NDUgMy41IDIuMTcxNTIgMy41IDIuNDVDMy41IDIuNzI4NDggMy4zODkzOCAyLjk5NTU1IDMuMTkyNDYgMy4xOTI0NkMyLjk5NTU1IDMuMzg5MzggMi43Mjg0OCAzLjUgMi40NSAzLjVaTTEzLjU4NyA2LjcwNkw3LjI4NyAwLjQwNkM3LjAzNSAwLjE1NCA2LjY4NSAwIDYuMyAwSDEuNEMwLjYyMyAwIDAgMC42MjMgMCAxLjRWNi4zQzAgNi42ODUgMC4xNTQgNy4wMzUgMC40MTMgNy4yODdMNi43MDYgMTMuNTg3QzYuOTY1IDEzLjgzOSA3LjMxNSAxNCA3LjcgMTRDOC4wODUgMTQgOC40MzUgMTMuODM5IDguNjg3IDEzLjU4N0wxMy41ODcgOC42ODdDMTMuODQ2IDguNDM1IDE0IDguMDg1IDE0IDcuN0MxNCA3LjMwOCAxMy44MzkgNi45NTggMTMuNTg3IDYuNzA2WlwiIGZpbGw9XCIjMUY1QTk1XCIgLz4gPC9zdmc-IDxhIGhyZWY9XCJ7e2NyZWRlbnRpYWxTdWJqZWN0LmlkU2NoZW1lLmlkfX1cIiBjbGFzcz1cImJsdWUtYm90dG9tLWxpbmUtdGhpY2tcIj5JRDoge3tjcmVkZW50aWFsU3ViamVjdC5yZWdpc3RlcmVkSWR9fTwvYT4gPC9kaXY-IDxkaXYgY2xhc3M9XCJoZWFkZXItYmF0Y2gtaXRlbVwiPiA8c3ZnIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj4gPHBhdGggZD1cIk0yLjQ1IDMuNUMyLjE3MTUyIDMuNSAxLjkwNDQ1IDMuMzg5MzggMS43MDc1NCAzLjE5MjQ2QzEuNTEwNjIgMi45OTU1NSAxLjQgMi43Mjg0OCAxLjQgMi40NUMxLjQgMi4xNzE1MiAxLjUxMDYyIDEuOTA0NDUgMS43MDc1NCAxLjcwNzU0QzEuOTA0NDUgMS41MTA2MiAyLjE3MTUyIDEuNCAyLjQ1IDEuNEMyLjcyODQ4IDEuNCAyLjk5NTU1IDEuNTEwNjIgMy4xOTI0NiAxLjcwNzU0QzMuMzg5MzggMS45MDQ0NSAzLjUgMi4xNzE1MiAzLjUgMi40NUMzLjUgMi43Mjg0OCAzLjM4OTM4IDIuOTk1NTUgMy4xOTI0NiAzLjE5MjQ2QzIuOTk1NTUgMy4zODkzOCAyLjcyODQ4IDMuNSAyLjQ1IDMuNVpNMTMuNTg3IDYuNzA2TDcuMjg3IDAuNDA2QzcuMDM1IDAuMTU0IDYuNjg1IDAgNi4zIDBIMS40QzAuNjIzIDAgMCAwLjYyMyAwIDEuNFY2LjNDMCA2LjY4NSAwLjE1NCA3LjAzNSAwLjQxMyA3LjI4N0w2LjcwNiAxMy41ODdDNi45NjUgMTMuODM5IDcuMzE1IDE0IDcuNyAxNEM4LjA4NSAxNCA4LjQzNSAxMy44MzkgOC42ODcgMTMuNTg3TDEzLjU4NyA4LjY4N0MxMy44NDYgOC40MzUgMTQgOC4wODUgMTQgNy43QzE0IDcuMzA4IDEzLjgzOSA2Ljk1OCAxMy41ODcgNi43MDZaXCIgZmlsbD1cIiMxRjVBOTVcIiAvPiA8L3N2Zz4gPGE-QmF0Y2g6IHt7Y3JlZGVudGlhbFN1YmplY3QuYmF0Y2hOdW1iZXJ9fTwvYT4gPC9kaXY-IDxkaXYgY2xhc3M9XCJoZWFkZXItYmF0Y2gtaXRlbVwiPiA8c3ZnIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj4gPHBhdGggZD1cIk0yLjQ1IDMuNUMyLjE3MTUyIDMuNSAxLjkwNDQ1IDMuMzg5MzggMS43MDc1NCAzLjE5MjQ2QzEuNTEwNjIgMi45OTU1NSAxLjQgMi43Mjg0OCAxLjQgMi40NUMxLjQgMi4xNzE1MiAxLjUxMDYyIDEuOTA0NDUgMS43MDc1NCAxLjcwNzU0QzEuOTA0NDUgMS41MTA2MiAyLjE3MTUyIDEuNCAyLjQ1IDEuNEMyLjcyODQ4IDEuNCAyLjk5NTU1IDEuNTEwNjIgMy4xOTI0NiAxLjcwNzU0QzMuMzg5MzggMS45MDQ0NSAzLjUgMi4xNzE1MiAzLjUgMi40NUMzLjUgMi43Mjg0OCAzLjM4OTM4IDIuOTk1NTUgMy4xOTI0NiAzLjE5MjQ2QzIuOTk1NTUgMy4zODkzOCAyLjcyODQ4IDMuNSAyLjQ1IDMuNVpNMTMuNTg3IDYuNzA2TDcuMjg3IDAuNDA2QzcuMDM1IDAuMTU0IDYuNjg1IDAgNi4zIDBIMS40QzAuNjIzIDAgMCAwLjYyMyAwIDEuNFY2LjNDMCA2LjY4NSAwLjE1NCA3LjAzNSAwLjQxMyA3LjI4N0w2LjcwNiAxMy41ODdDNi45NjUgMTMuODM5IDcuMzE1IDE0IDcuNyAxNEM4LjA4NSAxNCA4LjQzNSAxMy44MzkgOC42ODcgMTMuNTg3TDEzLjU4NyA4LjY4N0MxMy44NDYgOC40MzUgMTQgOC4wODUgMTQgNy43QzE0IDcuMzA4IDEzLjgzOSA2Ljk1OCAxMy41ODcgNi43MDZaXCIgZmlsbD1cIiMxRjVBOTVcIiAvPiA8L3N2Zz4gPGE-U2VyaWFsOiB7e2NyZWRlbnRpYWxTdWJqZWN0LnNlcmlhbE51bWJlcn19PC9hPiA8L2Rpdj4gPC9kaXY-IDwvZGl2PiA8L2hlYWRlcj4gPHNlY3Rpb24gY2xhc3M9XCJpbmZvcm1hdGlvblwiPiA8ZGl2IGNsYXNzPVwiaW5mb3JtYXRpb24tdGV4dFwiPiB7e2NyZWRlbnRpYWxTdWJqZWN0LmRlc2NyaXB0aW9ufX0gPC9kaXY-IDxkaXYgY2xhc3M9XCJpbmZvcm1hdGlvbi1zaG93LW1vcmVcIj4ge3sjZWFjaCBjcmVkZW50aWFsU3ViamVjdC5mdXJ0aGVySW5mb3JtYXRpb259fSA8YSBocmVmPVwie3tsaW5rVVJMfX1cIiBjbGFzcz1cImJsdWUtYm90dG9tLWxpbmUtdGhpY2tcIj57e2xpbmtOYW1lfX08L2E-IHt7L2VhY2h9fSA8L2Rpdj4gPC9zZWN0aW9uPiB7eyNpZiBjcmVkZW50aWFsU3ViamVjdC5jaGFyYWN0ZXJpc3RpY319IDxzZWN0aW9uIGNsYXNzPVwicHJvZHVjdGlvblwiPiA8ZGl2IGNsYXNzPVwicHJvZHVjdGlvbi10aXRsZVwiPkNoYXJhY3RlcmlzdGljczwvZGl2PiA8ZGl2IGNsYXNzPVwicHJvZHVjdC10YWJsZSB0YWJsZVwiPiB7eyNlYWNoIGNyZWRlbnRpYWxTdWJqZWN0LmNoYXJhY3RlcmlzdGljfX0gPGRpdiBjbGFzcz1cInRhYmxlLWl0ZW1cIj4gPHNwYW4gY2xhc3M9XCJpdGVtLXRpdGxlXCI-e3tAa2V5fX08L3NwYW4-IDxwIGNsYXNzPVwiaXRlbS12YWx1ZVwiPnt7dGhpc319PC9wPiA8L2Rpdj4ge3svZWFjaH19IDwvZGl2PiA8L3NlY3Rpb24-IHt7L2lmfX0gPHNlY3Rpb24gY2xhc3M9XCJwYXNzcG9ydFwiPiA8ZGl2IGNsYXNzPVwicGFzc3BvcnQtaXNzdWVkLWJ5LWhlYWRlclwiPiA8aDM-Q2lyY3VsYXJpdHkgU2NvcmVjYXJkPC9oMz4gPHA-VGhlIGNpcmN1bGFyaXR5IFNjb3JlY2FyZCBwcm92aWRlcyBhIHNpbXBsZSBoaWdoIGxldmVsIHN1bW1hcnkgb2YgY2lyY3VsYXJpdHkgcGVyZm9ybWFuY2Ugb2YgdGhlIHByb2R1Y3QuPC9wPiA8L2Rpdj4gPGRpdiBjbGFzcz1cInBhc3Nwb3J0LWJveFwiPiA8ZGl2IGNsYXNzPVwicGFzc3BvcnQtYm94LWl0ZW1cIj4gPGgzPnt7Y3JlZGVudGlhbFN1YmplY3QuY2lyY3VsYXJpdHlTY29yZWNhcmQucmVjeWNsYWJsZUNvbnRlbnR9fSU8L2gzPiA8cD5SZWN5Y2xhYmxlIGNvbnRlbnQ8L3A-IDwvZGl2PiA8ZGl2IGNsYXNzPVwicGFzc3BvcnQtYm94LWl0ZW1cIj4gPGgzPnt7Y3JlZGVudGlhbFN1YmplY3QuY2lyY3VsYXJpdHlTY29yZWNhcmQucmVjeWNsZWRDb250ZW50fX0lPC9oMz4gPHA-UmVjeWNsZWQgY29udGVudDwvcD4gPC9kaXY-IDxkaXYgY2xhc3M9XCJwYXNzcG9ydC1ib3gtaXRlbVwiPiA8aDM-e3tjcmVkZW50aWFsU3ViamVjdC5jaXJjdWxhcml0eVNjb3JlY2FyZC51dGlsaXR5RmFjdG9yfX08L2gzPiA8cD5VdGlsaXR5IGZhY3RvcjwvcD4gPC9kaXY-IDxkaXYgY2xhc3M9XCJwYXNzcG9ydC1ib3gtaXRlbVwiPiA8aDM-e3tjcmVkZW50aWFsU3ViamVjdC5jaXJjdWxhcml0eVNjb3JlY2FyZC5tYXRlcmlhbENpcmN1bGFyaXR5SW5kaWNhdG9yfX08L2gzPiA8cD5NYXRlcmlhbCBjaXJjdWxhcml0eSo8L3A-IDwvZGl2PiA8L2Rpdj4gPGRpdiBjbGFzcz1cInBhc3Nwb3J0LWFubm90YXRpb25cIj4gPHA-KlRoZSBNYXRlcmlhbCBDaXJjdWxhcml0eSBJbmRpY2F0b3IgcHJvdmlkZXMgYW4gb3ZlcmFsbCBjaXJjdWxhcml0eSBzY29yZSB3aGljaCBpcyBhIGZ1bmN0aW9uIG9mIGFsbCB0aHJlZSBvZiB0aGUgZWFybGllciBtZWFzdXJlcy48L3A-IDwvZGl2PiA8ZGl2IGNsYXNzPVwidHJhY2VhYmlsaXR5LWNhcmRzXCI-IDxhIGhyZWY9XCJ7e2NyZWRlbnRpYWxTdWJqZWN0LmNpcmN1bGFyaXR5U2NvcmVjYXJkLnJlY3ljbGluZ0luZm9ybWF0aW9uLmxpbmtVUkx9fVwiIGNsYXNzPVwidHJhY2VhYmlsaXR5LWNhcmRcIj4gPGRpdiBjbGFzcz1cInRyYWNlYWJpbGl0eS1jYXJkLXRleHRcIj4gPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI-IDxwYXRoIGQ9XCJNMjEuODIgMTUuNDJMMTkuMzIgMTkuNzVDMTguODMgMjAuNjEgMTcuOTIgMjEuMDYgMTcgMjFIMTVWMjNMMTIuNSAxOC41TDE1IDE0VjE2SDE3LjgyTDE1LjYgMTIuMTVMMTkuOTMgOS42NUwyMS43MyAxMi43N0MyMi4yNSAxMy41NCAyMi4zMiAxNC41NyAyMS44MiAxNS40MlpNOS4yMTAwMyAzLjA2SDE0LjIxQzE1LjE5IDMuMDYgMTYuMDQgMy42MyAxNi40NSA0LjQ1TDE3LjQ1IDYuMTlMMTkuMTggNS4xOUwxNi41NCA5LjZMMTEuMzkgOS42OUwxMy4xMiA4LjY5TDExLjcxIDYuMjRMOS41MDAwMyAxMC4wOUw1LjE2MDAzIDcuNTlMNi45NjAwMyA0LjQ3QzcuMzcwMDMgMy42NCA4LjIyMDAzIDMuMDYgOS4yMTAwMyAzLjA2Wk01LjA1MDAzIDE5Ljc2TDIuNTUwMDMgMTUuNDNDMi4wNjAwMyAxNC41OCAyLjEzMDAzIDEzLjU2IDIuNjQwMDMgMTIuNzlMMy42NDAwMyAxMS4wNkwxLjkxMDAzIDEwLjA2TDcuMDUwMDMgMTAuMTRMOS43MDAwMyAxNC41Nkw3Ljk3MDAzIDEzLjU2TDYuNTYwMDMgMTZIMTFWMjFINy40MDAwM0M2LjkzMTU0IDIxLjAzMzkgNi40NjI5MyAyMC45MzU3IDYuMDQ3NSAyMC43MTY1QzUuNjMyMDYgMjAuNDk3MyA1LjI4NjQ4IDIwLjE2NTkgNS4wNTAwMyAxOS43NlpcIiBmaWxsPVwiIzFGNUE5NVwiIC8-IDwvc3ZnPiA8cD5SZWN5Y2xpbmcgaW5zdHJ1Y3Rpb25zPC9wPiA8L2Rpdj4gPGRpdiBjbGFzcz1cInRyYWNlYWJpbGl0eS1jYXJkLXZpZXctZGV0YWlsc1wiPiA8c3ZnIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxNVwiIHZpZXdCb3g9XCIwIDAgMTAgMTVcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj4gPHBhdGggZD1cIk0xIDFMOCA4TDEgMTVcIiBzdHJva2U9XCIjMUY1QTk1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8-IDwvc3ZnPiA8L2Rpdj4gPC9hPiA8YSBocmVmPVwie3tjcmVkZW50aWFsU3ViamVjdC5jaXJjdWxhcml0eVNjb3JlY2FyZC5yZXBhaXJJbmZvcm1hdGlvbi5saW5rVVJMfX1cIiBjbGFzcz1cInRyYWNlYWJpbGl0eS1jYXJkXCI-IDxkaXYgY2xhc3M9XCJ0cmFjZWFiaWxpdHktY2FyZC10ZXh0XCI-IDxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPiA8cGF0aCBkPVwiTTE4Ljg1IDIxLjk3NUMxOC43MTY3IDIxLjk3NSAxOC41OTE3IDIxLjk1NDMgMTguNDc1IDIxLjkxM0MxOC4zNTgzIDIxLjg3MTcgMTguMjUgMjEuODAwNyAxOC4xNSAyMS43TDEzLjA1IDE2LjZDMTIuOTUgMTYuNSAxMi44NzkgMTYuMzkxNyAxMi44MzcgMTYuMjc1QzEyLjc5NSAxNi4xNTgzIDEyLjc3NDMgMTYuMDMzMyAxMi43NzUgMTUuOUMxMi43NzU3IDE1Ljc2NjcgMTIuNzk2NyAxNS42NDE3IDEyLjgzOCAxNS41MjVDMTIuODc5MyAxNS40MDgzIDEyLjk1IDE1LjMgMTMuMDUgMTUuMkwxNS4xNzUgMTMuMDc1QzE1LjI3NSAxMi45NzUgMTUuMzgzMyAxMi45MDQzIDE1LjUgMTIuODYzQzE1LjYxNjcgMTIuODIxNyAxNS43NDE3IDEyLjgwMDcgMTUuODc1IDEyLjhDMTYuMDA4MyAxMi43OTkzIDE2LjEzMzMgMTIuODIwMyAxNi4yNSAxMi44NjNDMTYuMzY2NyAxMi45MDU3IDE2LjQ3NSAxMi45NzYzIDE2LjU3NSAxMy4wNzVMMjEuNjc1IDE4LjE3NUMyMS43NzUgMTguMjc1IDIxLjg0NiAxOC4zODMzIDIxLjg4OCAxOC41QzIxLjkzIDE4LjYxNjcgMjEuOTUwNyAxOC43NDE3IDIxLjk1IDE4Ljg3NUMyMS45NDkzIDE5LjAwODMgMjEuOTI4NyAxOS4xMzMzIDIxLjg4OCAxOS4yNUMyMS44NDczIDE5LjM2NjcgMjEuNzc2MyAxOS40NzUgMjEuNjc1IDE5LjU3NUwxOS41NSAyMS43QzE5LjQ1IDIxLjggMTkuMzQxNyAyMS44NzEgMTkuMjI1IDIxLjkxM0MxOS4xMDgzIDIxLjk1NSAxOC45ODMzIDIxLjk3NTcgMTguODUgMjEuOTc1Wk0xOC44NSAxOS42TDE5LjU3NSAxOC44NzVMMTUuOSAxNS4yTDE1LjE3NSAxNS45MjVMMTguODUgMTkuNlpNNS4xMjUgMjJDNC45OTE2NyAyMiA0Ljg2MjY3IDIxLjk3NSA0LjczOCAyMS45MjVDNC42MTMzMyAyMS44NzUgNC41MDA2NyAyMS44IDQuNCAyMS43TDIuMyAxOS42QzIuMiAxOS41IDIuMTI1IDE5LjM4NzMgMi4wNzUgMTkuMjYyQzIuMDI1IDE5LjEzNjcgMiAxOS4wMDggMiAxOC44NzZDMiAxOC43NDQgMi4wMjUgMTguNjE5IDIuMDc1IDE4LjUwMUMyLjEyNSAxOC4zODMgMi4yIDE4LjI3NDcgMi4zIDE4LjE3Nkw3LjYgMTIuODc2SDkuNzI1TDEwLjU3NSAxMi4wMjZMNi40NSA3LjlINS4wMjVMMiA0Ljg3NUw0LjgyNSAyLjA1TDcuODUgNS4wNzVWNi41TDExLjk3NSAxMC42MjVMMTQuODc1IDcuNzI1TDEzLjggNi42NUwxNS4yIDUuMjVIMTIuMzc1TDExLjY3NSA0LjU1TDE1LjIyNSAxTDE1LjkyNSAxLjdWNC41MjVMMTcuMzI1IDMuMTI1TDIwLjg3NSA2LjY3NUMyMS4xNTgzIDYuOTU4MzMgMjEuMzc1IDcuMjc5MzMgMjEuNTI1IDcuNjM4QzIxLjY3NSA3Ljk5NjY3IDIxLjc1IDguMzc1NjcgMjEuNzUgOC43NzVDMjEuNzUgOS4xNzQzMyAyMS42NzUgOS41NTc2NyAyMS41MjUgOS45MjVDMjEuMzc1IDEwLjI5MjMgMjEuMTU4MyAxMC42MTczIDIwLjg3NSAxMC45TDE4Ljc1IDguNzc1TDE3LjM1IDEwLjE3NUwxNi4zIDkuMTI1TDExLjEyNSAxNC4zVjE2LjRMNS44MjUgMjEuN0M1LjcyNSAyMS44IDUuNjE2NjcgMjEuODc1IDUuNSAyMS45MjVDNS4zODMzMyAyMS45NzUgNS4yNTgzMyAyMiA1LjEyNSAyMlpNNS4xMjUgMTkuNkw5LjM3NSAxNS4zNVYxNC42MjVIOC42NUw0LjQgMTguODc1TDUuMTI1IDE5LjZaTTUuMTI1IDE5LjZMNC40IDE4Ljg3NUw0Ljc3NSAxOS4yMjVMNS4xMjUgMTkuNlpcIiBmaWxsPVwiIzFGNUE5NVwiIC8-IDwvc3ZnPiA8cD5SZXBhaXIgaW5zdHJ1Y3Rpb25zPC9wPiA8L2Rpdj4gPGRpdiBjbGFzcz1cInRyYWNlYWJpbGl0eS1jYXJkLXZpZXctZGV0YWlsc1wiPiA8c3ZnIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxNVwiIHZpZXdCb3g9XCIwIDAgMTAgMTVcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj4gPHBhdGggZD1cIk0xIDFMOCA4TDEgMTVcIiBzdHJva2U9XCIjMUY1QTk1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8-IDwvc3ZnPiA8L2Rpdj4gPC9hPiA8L2Rpdj4gPC9zZWN0aW9uPiA8c2VjdGlvbiBjbGFzcz1cImVtaXNzaW9uLXNjb3JlLWNhcmRcIj4gPGgzIGNsYXNzPVwibWlzc2lvbi1zY29yZS10aXRsZVwiPkVtaXNzaW9ucyBTY29yZWNhcmQ8L2gzPiA8cCBjbGFzcz1cIm1pc3Npb24tc2NvcmUtZGVzY3JpcHRpb25cIj5UaGUgRW1pc3Npb25zIFNjb3JlY2FyZCBnaXZlcyBhIGNsZWFyIHNuYXBzaG90IG9mIHRoZSBwcm9kdWN0J3MgZ3JlZW5ob3VzZSBnYXMgKEdIRykgZW1pc3Npb25zIHBlcmZvcm1hbmNlLCBwcm92aWRpbmcgYSBzaW5nbGUgaW5kaWNhdG9yIHRvIGFzc2VzcyBpdHMgb3ZlcmFsbCBlbnZpcm9ubWVudGFsIGltcGFjdC48L3A-IDxkaXYgY2xhc3M9XCJzY29yZVwiPiA8cCBjbGFzcz1cInNjb3JlLXVuaXRcIj4ge3tjcmVkZW50aWFsU3ViamVjdC5lbWlzc2lvbnNTY29yZWNhcmQuY2FyYm9uRm9vdHByaW50fX17e2NyZWRlbnRpYWxTdWJqZWN0LmVtaXNzaW9uc1Njb3JlY2FyZC5kZWNsYXJlZFVuaXR9fSA8L3A-IDxwIGNsYXNzPVwic2NvcmUtbmFtZVwiPkNvMkVxPC9wPiA8L2Rpdj4gPGRpdiBjbGFzcz1cInRhYmxlXCI-IDxkaXYgY2xhc3M9XCJ0YWJsZS1pdGVtXCI-IDxzcGFuIGNsYXNzPVwiaXRlbS10aXRsZVwiPlNjb3BlIGluY2x1ZGVzPC9zcGFuPiA8cCBjbGFzcz1cIml0ZW0tdmFsdWVcIj57e2NyZWRlbnRpYWxTdWJqZWN0LmVtaXNzaW9uc1Njb3JlY2FyZC5vcGVyYXRpb25hbFNjb3BlfX08L3A-IDwvZGl2PiA8ZGl2IGNsYXNzPVwidGFibGUtaXRlbVwiPiA8c3BhbiBjbGFzcz1cIml0ZW0tdGl0bGVcIj5QcmltYXJ5IHNvdXJjZWQgcmF0aW8qPC9zcGFuPiA8cCBjbGFzcz1cIml0ZW0tdmFsdWVcIj57e2NyZWRlbnRpYWxTdWJqZWN0LmVtaXNzaW9uc1Njb3JlY2FyZC5wcmltYXJ5U291cmNlZFJhdGlvfX0lIHByaW1hcnkgc291cmNlczwvcD4gPC9kaXY-IDxkaXYgY2xhc3M9XCJ0YWJsZS1pdGVtXCI-IDxzcGFuIGNsYXNzPVwiaXRlbS10aXRsZVwiPlJlcG9ydGluZyBzdGFuZGFyZDwvc3Bhbj4gPGRpdiBjbGFzcz1cIml0ZW0tdmFsdWVcIj4gPGEgaHJlZj1cInt7Y3JlZGVudGlhbFN1YmplY3QuZW1pc3Npb25zU2NvcmVjYXJkLnJlcG9ydGluZ1N0YW5kYXJkLmlkfX1cIiBjbGFzcz1cImJsdWUtYm90dG9tLWxpbmUtdGhpY2tcIj57e2NyZWRlbnRpYWxTdWJqZWN0LmVtaXNzaW9uc1Njb3JlY2FyZC5yZXBvcnRpbmdTdGFuZGFyZC5uYW1lfX08L2E-IDwvZGl2PiA8L2Rpdj4gPGRpdiBjbGFzcz1cInRhYmxlLWl0ZW1cIj4gPHNwYW4gY2xhc3M9XCJpdGVtLXRpdGxlXCI-SXNzdWUgZGF0ZTwvc3Bhbj4gPHAgY2xhc3M9XCJpdGVtLXZhbHVlXCI-e3tjcmVkZW50aWFsU3ViamVjdC5lbWlzc2lvbnNTY29yZWNhcmQucmVwb3J0aW5nU3RhbmRhcmQuaXNzdWVEYXRlfX08L3A-IDwvZGl2PiA8L2Rpdj4gPGRpdiBjbGFzcz1cImFubm90YXRpb25cIj4gPHNwYW4-Kjwvc3Bhbj4gPHA-VGhlIFByaW1hcnkgU291cmNlZCBSYXRpbyBzaG93cyB0aGUgcGVyY2VudGFnZSBvZiBzY29wZSAzIGVtaXNzaW9ucyBkYXRhIHRoYXQgaXMgZGlyZWN0bHkgY29sbGVjdGVkIGZyb20gYWN0dWFsIHNvdXJjZXMsIHJhdGhlciB0aGFuIGJlaW5nIGJhc2VkIG9uIGVzdGltYXRlcy48L3A-IDwvZGl2PiA8L3NlY3Rpb24-IDxzZWN0aW9uIGNsYXNzPVwiZGVjbGFyYXRpb25zXCI-IDxkaXYgY2xhc3M9XCJkZWNsYXJhdGlvbi10aXRsZVwiPkRlY2xhcmF0aW9uczwvZGl2PiA8ZGl2IGNsYXNzPVwiY2FyZHMtY29uZm9ybWl0aWVzXCI-IHt7I2VhY2ggY3JlZGVudGlhbFN1YmplY3QuY29uZm9ybWl0eUNsYWltfX0gPGRpdiBjbGFzcz1cImNhcmRzLWNvbmZvcm1pdHlcIj4gPGRpdiBjbGFzcz1cImZyYW1lXCI-IDxkaXYgY2xhc3M9XCJkaXZcIj4gPGRpdiBjbGFzcz1cImNvbXBhbnktbmFtZVwiPkNvbmZvcm1hbmNlOjwvZGl2PiA8ZGl2IGNsYXNzPVwie3sjaWYgY29uZm9ybWFuY2V9fXRhZ3MtVkMtYmFkZ2UtZ3JlZW57e2Vsc2V9fXRhZ3MtVkMtYmFkZ2UtcmVke3svaWZ9fVwiPiA8ZGl2IGNsYXNzPVwidmVyaWZpYWJsZVwiPnt7I2lmIGNvbmZvcm1hbmNlfX1ZZXN7e2Vsc2V9fU5ve3svaWZ9fTwvZGl2PiA8L2Rpdj4gPC9kaXY-IDxkaXYgY2xhc3M9XCJjb21wYW55LW5hbWVcIj5Bc3Nlc3NlZDoge3thc3Nlc3NtZW50RGF0ZX19PC9kaXY-IDwvZGl2PiA8ZGl2IGNsYXNzPVwiZnJhbWUtMlwiPiA8ZGl2IGNsYXNzPVwidGV4dC13cmFwcGVyXCI-e3tjb25mb3JtaXR5RXZpZGVuY2UubGlua05hbWV9fTwvZGl2PiA8cCBjbGFzcz1cInBcIj4gPHNwYW4gY2xhc3M9XCJzcGFuXCI-e3tyZWZlcmVuY2VSZWd1bGF0aW9uLm5hbWV9fSBhZG1pbmlzdGVyZWQgaW4ge3tyZWZlcmVuY2VSZWd1bGF0aW9uLmp1cmlzZGljdGlvbkNvdW50cnl9fSBieSA8L3NwYW4-IDxhIGhyZWY9XCJ7e3JlZmVyZW5jZVJlZ3VsYXRpb24uYWRtaW5pc3RlcmVkQnkuaWR9fVwiIGNsYXNzPVwidGV4dC13cmFwcGVyLTIgZ3JheS1ib3R0b20tbGluZVwiPnt7cmVmZXJlbmNlUmVndWxhdGlvbi5hZG1pbmlzdGVyZWRCeS5uYW1lfX08L2E-IDwvcD4gPHAgY2xhc3M9XCJwXCI-IDxzcGFuIGNsYXNzPVwic3BhblwiPnt7cmVmZXJlbmNlU3RhbmRhcmQubmFtZX19IGlzc3VlZCBieSA8L3NwYW4-IDxhIGhyZWY9XCJ7e3JlZmVyZW5jZVN0YW5kYXJkLmlzc3VpbmdQYXJ0eS5pZH19XCIgY2xhc3M9XCJ0ZXh0LXdyYXBwZXItMiBncmF5LWJvdHRvbS1saW5lXCI-e3tyZWZlcmVuY2VTdGFuZGFyZC5pc3N1aW5nUGFydHkubmFtZX19PC9hPiA8L3A-IDwvZGl2PiA8ZGl2IGNsYXNzPVwiZnJhbWUtM1wiPiB7eyNlYWNoIGRlY2xhcmVkVmFsdWV9fSA8ZGl2IGNsYXNzPVwiZnJhbWUtNFwiPiA8ZGl2IGNsYXNzPVwidHlwb2dyYXBoeS1oZWFkaW5nXCI-IDxwIGNsYXNzPVwiaGVhZGluZ1wiPnt7bWV0cmljTmFtZX19IGlzIHt7bWV0cmljVmFsdWUudmFsdWV9fXt7bWV0cmljVmFsdWUudW5pdH19PC9wPiA8L2Rpdj4gPGRpdiBjbGFzcz1cInR5cG9ncmFwaHktaGVhZGluZ1wiPiA8cCBjbGFzcz1cImhlYWRpbmctMlwiPlNjb3JlOiB7e3Njb3JlfX0gfCBBY2N1cmFjeSB7e2FjY3VyYWN5fX08L3A-IDwvZGl2PiA8L2Rpdj4ge3svZWFjaH19IDwvZGl2PiA8YSBocmVmPVwie3tjb25mb3JtaXR5RXZpZGVuY2UubGlua1VSTH19XCIgY2xhc3M9XCJjYXJkcy10cmFjZWFiaWxpdHlcIj4gPGRpdiBjbGFzcz1cImZyYW1lLTVcIj4gPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI-IDxwYXRoIGQ9XCJNNSAyMUM0LjQ1IDIxIDMuOTc5MzMgMjAuODA0MyAzLjU4OCAyMC40MTNDMy4xOTY2NyAyMC4wMjE3IDMuMDAwNjcgMTkuNTUwNyAzIDE5VjVDMyA0LjQ1IDMuMTk2IDMuOTc5MzMgMy41ODggMy41ODhDMy45OCAzLjE5NjY3IDQuNDUwNjcgMy4wMDA2NyA1IDNIMTlDMTkuNTUgMyAyMC4wMjEgMy4xOTYgMjAuNDEzIDMuNTg4QzIwLjgwNSAzLjk4IDIxLjAwMDcgNC40NTA2NyAyMSA1VjE5QzIxIDE5LjU1IDIwLjgwNDMgMjAuMDIxIDIwLjQxMyAyMC40MTNDMjAuMDIxNyAyMC44MDUgMTkuNTUwNyAyMS4wMDA3IDE5IDIxSDVaTTUgNVYxOUgxOVY1SDE3VjEyTDE0LjUgMTAuNUwxMiAxMlY1SDVaXCIgZmlsbD1cIiMxRjVBOTVcIj48L3BhdGg-IDwvc3ZnPiA8ZGl2IGNsYXNzPVwiY29tcGFueS1uYW1lLXdyYXBwZXJcIj4gPGRpdiBjbGFzcz1cImNvbXBhbnktbmFtZS0yXCI-RXZpZGVuY2U8L2Rpdj4gPC9kaXY-IDwvZGl2PiA8c3ZnIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxNVwiIHZpZXdCb3g9XCIwIDAgMTAgMTVcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj4gPHBhdGggZD1cIk0xIDFMOCA4TDEgMTVcIiBzdHJva2U9XCIjMUY1QTk1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPiA8L3BhdGg-IDwvc3ZnPiA8L2E-IDwvZGl2PiB7ey9lYWNofX0gPC9kaXY-IDwvc2VjdGlvbj4gPHNlY3Rpb24gY2xhc3M9XCJwcm9kdWN0aW9uXCI-IDxkaXYgY2xhc3M9XCJwcm9kdWN0aW9uLXRpdGxlXCI-UHJvZHVjdGlvbjwvZGl2PiA8ZGl2IGNsYXNzPVwicHJvZHVjdC10YWJsZSB0YWJsZVwiPiA8ZGl2IGNsYXNzPVwidGFibGUtaXRlbVwiPiA8c3BhbiBjbGFzcz1cIml0ZW0tdGl0bGVcIj5Qcm9kdWN0IGNhdGVnb3J5PC9zcGFuPiA8cCBjbGFzcz1cIml0ZW0tdmFsdWVcIj57eyNlYWNoIGNyZWRlbnRpYWxTdWJqZWN0LnByb2R1Y3RDYXRlZ29yeX19e3tuYW1lfX17eyN1bmxlc3MgQGxhc3R9fSx7ey91bmxlc3N9fSB7ey9lYWNofX08L3A-IDwvZGl2PiA8ZGl2IGNsYXNzPVwidGFibGUtaXRlbVwiPiA8c3BhbiBjbGFzcz1cIml0ZW0tdGl0bGVcIj5Qcm9kdWNlZCBieTwvc3Bhbj4gPGEgaHJlZj1cInt7Y3JlZGVudGlhbFN1YmplY3QucHJvZHVjZWRCeVBhcnR5LmlkfX1cIiBjbGFzcz1cImJsdWUtYm90dG9tLWxpbmUtdGhpY2tcIj57e2NyZWRlbnRpYWxTdWJqZWN0LnByb2R1Y2VkQnlQYXJ0eS5uYW1lfX08L2E-IDwvZGl2PiA8ZGl2IGNsYXNzPVwidGFibGUtaXRlbVwiPiA8c3BhbiBjbGFzcz1cIml0ZW0tdGl0bGVcIj5Qcm9kdWNlZCBhdDwvc3Bhbj4gPGRpdiBjbGFzcz1cIml0ZW0tdmFsdWVcIj4gPGEgaHJlZj1cInt7Y3JlZGVudGlhbFN1YmplY3QucHJvZHVjZWRBdEZhY2lsaXR5LmlkfX1cIiBjbGFzcz1cImJsdWUtYm90dG9tLWxpbmUtdGhpY2tcIj57e2NyZWRlbnRpYWxTdWJqZWN0LnByb2R1Y2VkQXRGYWNpbGl0eS5uYW1lfX08L2E-IDwvZGl2PiA8L2Rpdj4gPGRpdiBjbGFzcz1cInRhYmxlLWl0ZW1cIj4gPHNwYW4gY2xhc3M9XCJpdGVtLXRpdGxlXCI-RGF0ZSBwcm9kdWNlZDwvc3Bhbj4gPHAgY2xhc3M9XCJpdGVtLXZhbHVlXCI-e3tjcmVkZW50aWFsU3ViamVjdC5wcm9kdWN0aW9uRGF0ZX19PC9wPiA8L2Rpdj4gPGRpdiBjbGFzcz1cInRhYmxlLWl0ZW1cIj4gPHNwYW4gY2xhc3M9XCJpdGVtLXRpdGxlXCI-Q291bnRyeTwvc3Bhbj4gPHAgY2xhc3M9XCJpdGVtLXZhbHVlXCI-e3tjcmVkZW50aWFsU3ViamVjdC5jb3VudHJ5T2ZQcm9kdWN0aW9ufX08L3A-IDwvZGl2PiA8ZGl2IGNsYXNzPVwidGFibGUtaXRlbVwiPiA8c3BhbiBjbGFzcz1cIml0ZW0tdGl0bGVcIj5EaW1lbnNpb25zPC9zcGFuPiA8cCBjbGFzcz1cIml0ZW0tdmFsdWVcIj4gPHNwYW4-V2VpZ2h0OiB7e2NyZWRlbnRpYWxTdWJqZWN0LmRpbWVuc2lvbnMud2VpZ2h0LnZhbHVlfX17e2NyZWRlbnRpYWxTdWJqZWN0LmRpbWVuc2lvbnMud2VpZ2h0LnVuaXR9fTwvc3Bhbj4gPHNwYW4-TGVuZ3RoOiB7e2NyZWRlbnRpYWxTdWJqZWN0LmRpbWVuc2lvbnMubGVuZ3RoLnZhbHVlfX17e2NyZWRlbnRpYWxTdWJqZWN0LmRpbWVuc2lvbnMubGVuZ3RoLnVuaXR9fTwvc3Bhbj4gPHNwYW4-V2lkdGg6IHt7Y3JlZGVudGlhbFN1YmplY3QuZGltZW5zaW9ucy53aWR0aC52YWx1ZX19e3tjcmVkZW50aWFsU3ViamVjdC5kaW1lbnNpb25zLndpZHRoLnVuaXR9fTwvc3Bhbj4gPHNwYW4-SGVpZ2h0OiB7e2NyZWRlbnRpYWxTdWJqZWN0LmRpbWVuc2lvbnMuaGVpZ2h0LnZhbHVlfX17e2NyZWRlbnRpYWxTdWJqZWN0LmRpbWVuc2lvbnMuaGVpZ2h0LnVuaXR9fTwvc3Bhbj4gPHNwYW4-Vm9sdW1lOiB7e2NyZWRlbnRpYWxTdWJqZWN0LmRpbWVuc2lvbnMudm9sdW1lLnZhbHVlfX17e2NyZWRlbnRpYWxTdWJqZWN0LmRpbWVuc2lvbnMudm9sdW1lLnVuaXR9fTwvc3Bhbj4gPC9wPiA8L2Rpdj4gPC9kaXY-IDwvc2VjdGlvbj4gPHNlY3Rpb24gY2xhc3M9XCJjb21wb3NpdGlvblwiPiA8ZGl2PiA8cCBjbGFzcz1cInNlY3Rpb24tdGl0bGVcIj5Qcm9kdWN0IGNvbXBvc2l0aW9uPC9wPiA8cCBjbGFzcz1cInNlY3Rpb24tZGVzY3JpcHRpb25cIj4gQSBjb21wbGV0ZSBsaXN0IG9mIG1hdGVyaWFscyB0aGF0IG1ha2UgdXAgdGhlIGNvbXBvc2l0aW9uIG9mIHRoaXMgcHJvZHVjdC4gPC9wPiA8L2Rpdj4gPGRpdiBjbGFzcz1cImNvbXBvc2l0aW9uLWJveFwiPiB7eyNlYWNoIGNyZWRlbnRpYWxTdWJqZWN0Lm1hdGVyaWFsc1Byb3ZlbmFuY2V9fSA8ZGl2IGNsYXNzPVwiY29tcG9zaXRpb24tYm94LWl0ZW1cIj4gPGRpdiBjbGFzcz1cImNvbXBvc2l0aW9uLWJveC1maXJzdC1jb2x1bW5cIj4gPHAgY2xhc3M9XCJjb21wb3NpdGlvbi1wZXJjZW50XCI-e3ttYXNzRnJhY3Rpb259fSU8L3A-IDxkaXYgY2xhc3M9XCJjb21wb3NpdGlvbi1ib3gtc2Vjb25kLWNvbHVtblwiPiA8cCBjbGFzcz1cImNvbXBvc2l0aW9uLXRpdGxlXCI-e3ttYXNzQW1vdW50LnZhbHVlfX17e21hc3NBbW91bnQudW5pdH19IHt7bmFtZX19PC9wPiA8ZGl2IGNsYXNzPVwiY29tcG9zaXRpb24tdGFnXCI-IDxwIGNsYXNzPVwiY29tcG9zaXRpb24tdGFnLWl0ZW1cIj5SZWN5Y2xlZCB7e3JlY3ljbGVkQW1vdW50fX0lPC9wPiA8cCBjbGFzcz1cImNvbXBvc2l0aW9uLXRhZy1pdGVtXCI-SGF6YXJkIHt7I2lmIGhhemFyZG91c319WWVze3tlbHNlfX1Ob3t7L2lmfX08L3A-IDwvZGl2PiA8YSBocmVmPVwie3ttYXRlcmlhbFNhZmV0eUluZm9ybWF0aW9uLmxpbmtVUkx9fVwiIGNsYXNzPVwiYmx1ZS1ib3R0b20tbGluZS10aGlja1wiPnt7bWF0ZXJpYWxTYWZldHlJbmZvcm1hdGlvbi5saW5rTmFtZX19PC9hPiA8L2Rpdj4gPC9kaXY-IDxkaXYgY2xhc3M9XCJjb21wb3NpdGlvbi1ib3gtdGhpcmQtY29sdW1uXCI-IDxkaXYgY2xhc3M9XCJjb3VudHJ5LWNvZGVcIj57e29yaWdpbkNvdW50cnl9fTwvZGl2PiA8L2Rpdj4gPC9kaXY-IHt7L2VhY2h9fSA8L2Rpdj4gPC9zZWN0aW9uPiA8c2VjdGlvbiBjbGFzcz1cImhpc3RvcnlcIj4gPGRpdj4gPHAgY2xhc3M9XCJzZWN0aW9uLXRpdGxlXCI-SGlzdG9yeTwvcD4gPC9kaXY-IHt7IS0tIHN0YXJ0OiBTdXBwbHkgY2hhaW4gZHVlIGRpbGlnZW5jZSByZXBvcnQgLS19fSA8YSBocmVmPVwie3tjcmVkZW50aWFsU3ViamVjdC5kdWVEaWxpZ2VuY2VEZWNsYXJhdGlvbi5saW5rVVJMfX1cIiBjbGFzcz1cImNhcmRzLXRyYWNlYWJpbGl0eVwiPiA8ZGl2IGNsYXNzPVwiZnJhbWUtNVwiPiA8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj4gPHBhdGggZD1cIk01IDIxQzQuNDUgMjEgMy45NzkzMyAyMC44MDQzIDMuNTg4IDIwLjQxM0MzLjE5NjY3IDIwLjAyMTcgMy4wMDA2NyAxOS41NTA3IDMgMTlWNUMzIDQuNDUgMy4xOTYgMy45NzkzMyAzLjU4OCAzLjU4OEMzLjk4IDMuMTk2NjcgNC40NTA2NyAzLjAwMDY3IDUgM0gxOUMxOS41NSAzIDIwLjAyMSAzLjE5NiAyMC40MTMgMy41ODhDMjAuODA1IDMuOTggMjEuMDAwNyA0LjQ1MDY3IDIxIDVWMTlDMjEgMTkuNTUgMjAuODA0MyAyMC4wMjEgMjAuNDEzIDIwLjQxM0MyMC4wMjE3IDIwLjgwNSAxOS41NTA3IDIxLjAwMDcgMTkgMjFINVpNNSA1VjE5SDE5VjVIMTdWMTJMMTQuNSAxMC41TDEyIDEyVjVINVpcIiBmaWxsPVwiIzFGNUE5NVwiPjwvcGF0aD4gPC9zdmc-IDxkaXYgY2xhc3M9XCJjb21wYW55LW5hbWUtd3JhcHBlclwiPiA8ZGl2IGNsYXNzPVwiY29tcGFueS1uYW1lLTJcIj5TdXBwbHkgY2hhaW4gZHVlIGRpbGlnZW5jZSByZXBvcnQ8L2Rpdj4gPC9kaXY-IDwvZGl2PiA8c3ZnIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxNVwiIHZpZXdCb3g9XCIwIDAgMTAgMTVcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj4gPHBhdGggZD1cIk0xIDFMOCA4TDEgMTVcIiBzdHJva2U9XCIjMUY1QTk1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPiA8L3BhdGg-IDwvc3ZnPiA8L2E-IHt7IS0tIGVuZDogU3VwcGx5IGNoYWluIGR1ZSBkaWxpZ2VuY2UgcmVwb3J0IC0tfX0gPGRpdiBjbGFzcz1cImhpc3RvcnktaW5mb3JtYXRpb25cIj4gPGRpdiBjbGFzcz1cImhpc3RvcnktdmFsdWUtY2hhaW4taXRlbVwiPiA8ZGl2IGNsYXNzPVwiaGlzdG9yeS12YWx1ZS1jaGFpblwiPiA8cD57e2NyZWRlbnRpYWxTdWJqZWN0LnRyYWNlYWJpbGl0eUluZm9ybWF0aW9uLnZhbHVlQ2hhaW5Qcm9jZXNzfX08L3A-IDxkaXYgY2xhc3M9XCJ2ZXJpZmllZC1yYXRpb1wiPiA8cD5WZXJpZmllZCByYXRpbyB7e2NyZWRlbnRpYWxTdWJqZWN0LnRyYWNlYWJpbGl0eUluZm9ybWF0aW9uLnZlcmlmaWVkUmF0aW99fTwvcD4gPC9kaXY-IDwvZGl2PiA8ZGl2IGlkPVwiaGlzdG9yeS1pdGVtcy0zOTBweFwiIGNsYXNzPVwiaGlzdG9yeS1ldmVudFwiPiB7eyNlYWNoIGNyZWRlbnRpYWxTdWJqZWN0LnRyYWNlYWJpbGl0eUluZm9ybWF0aW9uLnRyYWNlYWJpbGl0eUV2ZW50fX0gPGRpdiBjbGFzcz1cImhpc3RvcnktaXRlbVwiPiA8c3Bhbj57e2xpbmtOYW1lfX08L3NwYW4-IDxhIGhyZWY9XCJ7e2xpbmtVUkx9fVwiIGNsYXNzPVwiYmx1ZS1ib3R0b20tbGluZS10aGlja1wiPlZpZXc8L2E-IDwvZGl2PiB7ey9lYWNofX0gPC9kaXY-IDwvZGl2PiA8L2Rpdj4gPC9zZWN0aW9uPiA8c2VjdGlvbiBjbGFzcz1cInBhc3Nwb3J0LWlzc3VlZC1ieVwiPiA8ZGl2PiA8aDIgY2xhc3M9XCJzZWN0aW9uLXRpdGxlXCI-UGFzc3BvcnQgaXNzdWVkIGJ5PC9oMj4gPC9kaXY-IDxkaXYgY2xhc3M9XCJ0YWJsZVwiPiA8ZGl2IGNsYXNzPVwidGFibGUtaXRlbVwiPiA8c3Bhbj5PcmdhbmlzYXRpb248L3NwYW4-IDxwPnt7aXNzdWVyLm5hbWV9fTwvcD4gPC9kaXY-IDxkaXYgY2xhc3M9XCJ0YWJsZS1pdGVtXCI-IDxzcGFuPlJlZ2lzdGVyZWQgSUQ8L3NwYW4-IDxhIGhyZWY9XCJ7e2lzc3Vlci5pZH19XCIgY2xhc3M9XCJibHVlLWJvdHRvbS1saW5lLXRoaWNrXCI-e3tpc3N1ZXIuaWR9fTwvYT4gPC9kaXY-IDxkaXYgY2xhc3M9XCJ0YWJsZS1pdGVtXCI-IDxzcGFuPlZhbGlkIGZyb208L3NwYW4-IDxwPnt7dmFsaWRGcm9tfX08L3A-IDwvZGl2PiA8ZGl2IGNsYXNzPVwidGFibGUtaXRlbVwiPiA8c3Bhbj5WYWxpZCB0bzwvc3Bhbj4gPHA-e3t2YWxpZFVudGlsfX08L3A-IDwvZGl2PiA8L2Rpdj4gPC9zZWN0aW9uPiA8Zm9vdGVyPiA8cD5UaGlzIERpZ2l0YWwgUHJvZHVjdCBQYXNzcG9ydCAoRFBQKSBpcyBhIGRpZ2l0YWwgcmVjb3JkIG9mIHRoZSBwcm9kdWN0J3Mgc3VzdGFpbmFiaWxpdHkgYW5kIGVudmlyb25tZW50YWwgcGVyZm9ybWFuY2UsIGVuc3VyaW5nIHRyYW5zcGFyZW5jeSBhbmQgYWNjb3VudGFiaWxpdHkgaW4gbGluZSB3aXRoIFVOVFAgc3RhbmRhcmRzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiB2aXNpdCA8YSBocmVmPVwiaHR0cHM6Ly91bmNlZmFjdC5naXRodWIuaW8vc3BlYy11bnRwL1wiIGNsYXNzPVwiZ3JheS1ib3R0b20tbGluZVwiPnVuY2VmYWN0LmdpdGh1Yi5pby9zcGVjLXVudHAvPC9hPi48L3A-IDwvZm9vdGVyPiA8L2Rpdj4gPCEtLSBFbmQgbW9iaWxlIC0tPiA8IS0tIERlc2t0b3Agd2lkdGggMTQ0MHB4IC0tPiA8ZGl2IGNsYXNzPVwiY29udGVudHNcIj4gPGRpdiBjbGFzcz1cImZyYW1lXCI-IDxkaXYgY2xhc3M9XCJQUC10aXRsZVwiPlBST0RVQ1QgUEFTU1BPUlQ8L2Rpdj4gPGRpdiBjbGFzcz1cInRleHQtd3JhcHBlclwiPnt7Y3JlZGVudGlhbFN1YmplY3QubmFtZX19PC9kaXY-IDxkaXYgY2xhc3M9XCJwcm9kdWN0LUlELUFMVFwiPiA8ZGl2IGNsYXNzPVwiZGl2XCI-IDxzdmcgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPiA8cGF0aCBkPVwiTTIuNDUgMy41QzIuMTcxNTIgMy41IDEuOTA0NDUgMy4zODkzOCAxLjcwNzU0IDMuMTkyNDZDMS41MTA2MiAyLjk5NTU1IDEuNCAyLjcyODQ4IDEuNCAyLjQ1QzEuNCAyLjE3MTUyIDEuNTEwNjIgMS45MDQ0NSAxLjcwNzU0IDEuNzA3NTRDMS45MDQ0NSAxLjUxMDYyIDIuMTcxNTIgMS40IDIuNDUgMS40QzIuNzI4NDggMS40IDIuOTk1NTUgMS41MTA2MiAzLjE5MjQ2IDEuNzA3NTRDMy4zODkzOCAxLjkwNDQ1IDMuNSAyLjE3MTUyIDMuNSAyLjQ1QzMuNSAyLjcyODQ4IDMuMzg5MzggMi45OTU1NSAzLjE5MjQ2IDMuMTkyNDZDMi45OTU1NSAzLjM4OTM4IDIuNzI4NDggMy41IDIuNDUgMy41Wk0xMy41ODcgNi43MDZMNy4yODcgMC40MDZDNy4wMzUgMC4xNTQgNi42ODUgMCA2LjMgMEgxLjRDMC42MjMgMCAwIDAuNjIzIDAgMS40VjYuM0MwIDYuNjg1IDAuMTU0IDcuMDM1IDAuNDEzIDcuMjg3TDYuNzA2IDEzLjU4N0M2Ljk2NSAxMy44MzkgNy4zMTUgMTQgNy43IDE0QzguMDg1IDE0IDguNDM1IDEzLjgzOSA4LjY4NyAxMy41ODdMMTMuNTg3IDguNjg3QzEzLjg0NiA4LjQzNSAxNCA4LjA4NSAxNCA3LjdDMTQgNy4zMDggMTMuODM5IDYuOTU4IDEzLjU4NyA2LjcwNlpcIiBmaWxsPVwiIzFGNUE5NVwiIC8-IDwvc3ZnPiA8YSBocmVmPVwie3tjcmVkZW50aWFsU3ViamVjdC5pZH19XCIgY2xhc3M9XCJsaW5lXCI-IDxkaXYgY2xhc3M9XCJ0ZXh0LXdyYXBwZXItMlwiPklEOiB7e2NyZWRlbnRpYWxTdWJqZWN0LmlkfX08L2Rpdj4gPC9hPiA8L2Rpdj4gPGRpdiBjbGFzcz1cImRpdlwiPiA8c3ZnIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj4gPHBhdGggZD1cIk0yLjQ1IDMuNUMyLjE3MTUyIDMuNSAxLjkwNDQ1IDMuMzg5MzggMS43MDc1NCAzLjE5MjQ2QzEuNTEwNjIgMi45OTU1NSAxLjQgMi43Mjg0OCAxLjQgMi40NUMxLjQgMi4xNzE1MiAxLjUxMDYyIDEuOTA0NDUgMS43MDc1NCAxLjcwNzU0QzEuOTA0NDUgMS41MTA2MiAyLjE3MTUyIDEuNCAyLjQ1IDEuNEMyLjcyODQ4IDEuNCAyLjk5NTU1IDEuNTEwNjIgMy4xOTI0NiAxLjcwNzU0QzMuMzg5MzggMS45MDQ0NSAzLjUgMi4xNzE1MiAzLjUgMi40NUMzLjUgMi43Mjg0OCAzLjM4OTM4IDIuOTk1NTUgMy4xOTI0NiAzLjE5MjQ2QzIuOTk1NTUgMy4zODkzOCAyLjcyODQ4IDMuNSAyLjQ1IDMuNVpNMTMuNTg3IDYuNzA2TDcuMjg3IDAuNDA2QzcuMDM1IDAuMTU0IDYuNjg1IDAgNi4zIDBIMS40QzAuNjIzIDAgMCAwLjYyMyAwIDEuNFY2LjNDMCA2LjY4NSAwLjE1NCA3LjAzNSAwLjQxMyA3LjI4N0w2LjcwNiAxMy41ODdDNi45NjUgMTMuODM5IDcuMzE1IDE0IDcuNyAxNEM4LjA4NSAxNCA4LjQzNSAxMy44MzkgOC42ODcgMTMuNTg3TDEzLjU4NyA4LjY4N0MxMy44NDYgOC40MzUgMTQgOC4wODUgMTQgNy43QzE0IDcuMzA4IDEzLjgzOSA2Ljk1OCAxMy41ODcgNi43MDZaXCIgZmlsbD1cIiMxRjVBOTVcIiAvPiA8L3N2Zz4gPGRpdiBjbGFzcz1cImRpdi13cmFwcGVyXCI-IDxkaXYgY2xhc3M9XCJ0ZXh0LXdyYXBwZXItMlwiPkJhdGNoOiB7e2NyZWRlbnRpYWxTdWJqZWN0LmJhdGNoTnVtYmVyfX08L2Rpdj4gPC9kaXY-IDwvZGl2PiA8ZGl2IGNsYXNzPVwiZGl2XCI-IDxzdmcgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPiA8cGF0aCBkPVwiTTIuNDUgMy41QzIuMTcxNTIgMy41IDEuOTA0NDUgMy4zODkzOCAxLjcwNzU0IDMuMTkyNDZDMS41MTA2MiAyLjk5NTU1IDEuNCAyLjcyODQ4IDEuNCAyLjQ1QzEuNCAyLjE3MTUyIDEuNTEwNjIgMS45MDQ0NSAxLjcwNzU0IDEuNzA3NTRDMS45MDQ0NSAxLjUxMDYyIDIuMTcxNTIgMS40IDIuNDUgMS40QzIuNzI4NDggMS40IDIuOTk1NTUgMS41MTA2MiAzLjE5MjQ2IDEuNzA3NTRDMy4zODkzOCAxLjkwNDQ1IDMuNSAyLjE3MTUyIDMuNSAyLjQ1QzMuNSAyLjcyODQ4IDMuMzg5MzggMi45OTU1NSAzLjE5MjQ2IDMuMTkyNDZDMi45OTU1NSAzLjM4OTM4IDIuNzI4NDggMy41IDIuNDUgMy41Wk0xMy41ODcgNi43MDZMNy4yODcgMC40MDZDNy4wMzUgMC4xNTQgNi42ODUgMCA2LjMgMEgxLjRDMC42MjMgMCAwIDAuNjIzIDAgMS40VjYuM0MwIDYuNjg1IDAuMTU0IDcuMDM1IDAuNDEzIDcuMjg3TDYuNzA2IDEzLjU4N0M2Ljk2NSAxMy44MzkgNy4zMTUgMTQgNy43IDE0QzguMDg1IDE0IDguNDM1IDEzLjgzOSA4LjY4NyAxMy41ODdMMTMuNTg3IDguNjg3QzEzLjg0NiA4LjQzNSAxNCA4LjA4NSAxNCA3LjdDMTQgNy4zMDggMTMuODM5IDYuOTU4IDEzLjU4NyA2LjcwNlpcIiBmaWxsPVwiIzFGNUE5NVwiIC8-IDwvc3ZnPiA8ZGl2IGNsYXNzPVwiZGl2LXdyYXBwZXJcIj4gPGRpdiBjbGFzcz1cInRleHQtd3JhcHBlci0yXCI-U2VyaWFsOiB7e2NyZWRlbnRpYWxTdWJqZWN0LnNlcmlhbE51bWJlcn19PC9kaXY-IDwvZGl2PiA8L2Rpdj4gPC9kaXY-IDxkaXYgY2xhc3M9XCJmcmFtZS0yXCI-IDxkaXYgY2xhc3M9XCJQUC1oZWFkZXJcIj4gPGRpdiBjbGFzcz1cImZyYW1lLTNcIj48L2Rpdj4gPC9kaXY-IDxkaXYgY2xhc3M9XCJmcmFtZS00XCI-IDxwIGNsYXNzPVwicFwiPiB7e2NyZWRlbnRpYWxTdWJqZWN0LmRlc2NyaXB0aW9ufX0gPC9wPiB7eyNlYWNoIGNyZWRlbnRpYWxTdWJqZWN0LmZ1cnRoZXJJbmZvcm1hdGlvbn19IDxhIGhyZWY9XCJ7e2xpbmtVUkx9fVwiIGNsYXNzPVwibGluZVwiPiA8ZGl2IGNsYXNzPVwidGV4dC13cmFwcGVyLTE2XCI-e3tsaW5rTmFtZX19PC9kaXY-IDwvYT4ge3svZWFjaH19IDwvZGl2PiA8L2Rpdj4gPC9kaXY-IHt7I2lmIGNyZWRlbnRpYWxTdWJqZWN0LmNoYXJhY3RlcmlzdGljfX0gPGRpdiBjbGFzcz1cImZyYW1lLTI0XCI-IDxkaXYgY2xhc3M9XCJoZWFkaW5nLXdyYXBwZXJcIj4gPGRpdiBjbGFzcz1cImhlYWRpbmdcIj5DaGFyYWN0ZXJpc3RpY3M8L2Rpdj4gPC9kaXY-IDxkaXYgY2xhc3M9XCJkaXYtNVwiPiB7eyNlYWNoIGNyZWRlbnRpYWxTdWJqZWN0LmNoYXJhY3RlcmlzdGljfX0gPGRpdiBjbGFzcz1cImRhdGEtdHdvLWNvbHVtbnNcIj4gPGRpdiBjbGFzcz1cInRleHQtd3JhcHBlci0xMlwiPnt7QGtleX19PC9kaXY-IDxkaXYgY2xhc3M9XCJkYXRhLXdyYXBwZXJcIj4gPGRpdiBjbGFzcz1cImRhdGFcIj57e3RoaXN9fTwvZGl2PiA8L2Rpdj4gPC9kaXY-IHt7L2VhY2h9fSA8L2Rpdj4gPC9kaXY-IHt7L2lmfX0gPGRpdiBjbGFzcz1cImRpdi0yXCI-IDxkaXYgY2xhc3M9XCJ0eXBvZ3JhcGh5LWhlYWRpbmdcIj4gPGRpdiBjbGFzcz1cInRleHQtd3JhcHBlci00XCI-Q2lyY3VsYXJpdHkgU2NvcmVjYXJkPC9kaXY-IDwvZGl2PiA8cCBjbGFzcz1cInRleHQtd3JhcHBlci01XCI-IFRoZSBjaXJjdWxhcml0eSBTY29yZWNhcmQgcHJvdmlkZXMgYSBzaW1wbGUgaGlnaCBsZXZlbCBzdW1tYXJ5IG9mIGNpcmN1bGFyaXR5IHBlcmZvcm1hbmNlIG9mIHRoZSBwcm9kdWN0LiA8L3A-IDxkaXYgY2xhc3M9XCJkaXYtM1wiPiA8ZGl2IGNsYXNzPVwiZnJhbWUtNVwiPiA8ZGl2IGNsYXNzPVwiZnJhbWUtNlwiPiA8ZGl2IGNsYXNzPVwiZnJhbWUtN1wiPiA8ZGl2IGNsYXNzPVwidGV4dC13cmFwcGVyLTZcIj57e2NyZWRlbnRpYWxTdWJqZWN0LmNpcmN1bGFyaXR5U2NvcmVjYXJkLnJlY3ljbGFibGVDb250ZW50fX0lPC9kaXY-IDxkaXYgY2xhc3M9XCJ0ZXh0LXdyYXBwZXItN1wiPlJlY3ljbGFibGUgY29udGVudDwvZGl2PiA8L2Rpdj4gPGRpdiBjbGFzcz1cImZyYW1lLTdcIj4gPGRpdiBjbGFzcz1cInRleHQtd3JhcHBlci02XCI-e3tjcmVkZW50aWFsU3ViamVjdC5jaXJjdWxhcml0eVNjb3JlY2FyZC5yZWN5Y2xlZENvbnRlbnR9fSU8L2Rpdj4gPGRpdiBjbGFzcz1cInRleHQtd3JhcHBlci03XCI-UmVjeWNsZWQgY29udGVudDwvZGl2PiA8L2Rpdj4gPGRpdiBjbGFzcz1cImZyYW1lLTdcIj4gPGRpdiBjbGFzcz1cInRleHQtd3JhcHBlci02XCI-e3tjcmVkZW50aWFsU3ViamVjdC5jaXJjdWxhcml0eVNjb3JlY2FyZC51dGlsaXR5RmFjdG9yfX08L2Rpdj4gPGRpdiBjbGFzcz1cInRleHQtd3JhcHBlci03XCI-VXRpbGl0eSBmYWN0b3I8L2Rpdj4gPC9kaXY-IDxkaXYgY2xhc3M9XCJmcmFtZS04XCI-IDxkaXYgY2xhc3M9XCJ0ZXh0LXdyYXBwZXItNlwiPnt7Y3JlZGVudGlhbFN1YmplY3QuY2lyY3VsYXJpdHlTY29yZWNhcmQubWF0ZXJpYWxDaXJjdWxhcml0eUluZGljYXRvcn19IDwvZGl2PiA8ZGl2IGNsYXNzPVwidGV4dC13cmFwcGVyLTdcIj5NYXRlcmlhbCBjaXJjdWxhcml0eSo8L2Rpdj4gPC9kaXY-IDwvZGl2PiA8cCBjbGFzcz1cInRleHQtd3JhcHBlci04XCI-ICpUaGUgTWF0ZXJpYWwgQ2lyY3VsYXJpdHkgSW5kaWNhdG9yIHByb3ZpZGVzIGFuIG92ZXJhbGwgY2lyY3VsYXJpdHkgc2NvcmUgd2hpY2ggaXMgYSBmdW5jdGlvbiBvZiBhbGwgdGhyZWUgb2YgdGhlIGVhcmxpZXIgbWVhc3VyZXMuIDwvcD4gPC9kaXY-IDxkaXYgY2xhc3M9XCJmcmFtZS05XCI-IDxhIGhyZWY9XCJ7e2NyZWRlbnRpYWxTdWJqZWN0LmNpcmN1bGFyaXR5U2NvcmVjYXJkLnJlY3ljbGluZ0luZm9ybWF0aW9uLmxpbmtVUkx9fVwiIGNsYXNzPVwiY2FyZHMtdHJhY2VhYmlsaXR5XCI-IDxkaXYgY2xhc3M9XCJkaXYtNFwiPiA8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj4gPHBhdGggZD1cIk0yMS44MiAxNS40MkwxOS4zMiAxOS43NUMxOC44MyAyMC42MSAxNy45MiAyMS4wNiAxNyAyMUgxNVYyM0wxMi41IDE4LjVMMTUgMTRWMTZIMTcuODJMMTUuNiAxMi4xNUwxOS45MyA5LjY1TDIxLjczIDEyLjc3QzIyLjI1IDEzLjU0IDIyLjMyIDE0LjU3IDIxLjgyIDE1LjQyWk05LjIxMDAzIDMuMDZIMTQuMjFDMTUuMTkgMy4wNiAxNi4wNCAzLjYzIDE2LjQ1IDQuNDVMMTcuNDUgNi4xOUwxOS4xOCA1LjE5TDE2LjU0IDkuNkwxMS4zOSA5LjY5TDEzLjEyIDguNjlMMTEuNzEgNi4yNEw5LjUwMDAzIDEwLjA5TDUuMTYwMDMgNy41OUw2Ljk2MDAzIDQuNDdDNy4zNzAwMyAzLjY0IDguMjIwMDMgMy4wNiA5LjIxMDAzIDMuMDZaTTUuMDUwMDMgMTkuNzZMMi41NTAwMyAxNS40M0MyLjA2MDAzIDE0LjU4IDIuMTMwMDMgMTMuNTYgMi42NDAwMyAxMi43OUwzLjY0MDAzIDExLjA2TDEuOTEwMDMgMTAuMDZMNy4wNTAwMyAxMC4xNEw5LjcwMDAzIDE0LjU2TDcuOTcwMDMgMTMuNTZMNi41NjAwMyAxNkgxMVYyMUg3LjQwMDAzQzYuOTMxNTQgMjEuMDMzOSA2LjQ2MjkzIDIwLjkzNTcgNi4wNDc1IDIwLjcxNjVDNS42MzIwNiAyMC40OTczIDUuMjg2NDggMjAuMTY1OSA1LjA1MDAzIDE5Ljc2WlwiIGZpbGw9XCIjMUY1QTk1XCIgLz4gPC9zdmc-IDxkaXYgY2xhc3M9XCJmcmFtZS0xMFwiPiA8ZGl2IGNsYXNzPVwidGV4dC13cmFwcGVyLTlcIj5SZWN5Y2xpbmcgaW5zdHJ1Y3Rpb25zPC9kaXY-IDwvZGl2PiA8L2Rpdj4gPGRpdiBjbGFzcz1cImRpdi00XCI-IDxzdmcgd2lkdGg9XCIxMFwiIGhlaWdodD1cIjE1XCIgdmlld0JveD1cIjAgMCAxMCAxNVwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPiA8cGF0aCBkPVwiTTEgMUw4IDhMMSAxNVwiIHN0cm9rZT1cIiMxRjVBOTVcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz4gPC9zdmc-IDwvZGl2PiA8L2E-IDxhIGhyZWY9XCJ7e2NyZWRlbnRpYWxTdWJqZWN0LmNpcmN1bGFyaXR5U2NvcmVjYXJkLnJlcGFpckluZm9ybWF0aW9uLmxpbmtVUkx9fVwiIGNsYXNzPVwiY2FyZHMtdHJhY2VhYmlsaXR5XCI-IDxkaXYgY2xhc3M9XCJkaXYtNFwiPiA8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj4gPHBhdGggZD1cIk0xOC44NSAyMS45NzVDMTguNzE2NyAyMS45NzUgMTguNTkxNyAyMS45NTQzIDE4LjQ3NSAyMS45MTNDMTguMzU4MyAyMS44NzE3IDE4LjI1IDIxLjgwMDcgMTguMTUgMjEuN0wxMy4wNSAxNi42QzEyLjk1IDE2LjUgMTIuODc5IDE2LjM5MTcgMTIuODM3IDE2LjI3NUMxMi43OTUgMTYuMTU4MyAxMi43NzQzIDE2LjAzMzMgMTIuNzc1IDE1LjlDMTIuNzc1NyAxNS43NjY3IDEyLjc5NjcgMTUuNjQxNyAxMi44MzggMTUuNTI1QzEyLjg3OTMgMTUuNDA4MyAxMi45NSAxNS4zIDEzLjA1IDE1LjJMMTUuMTc1IDEzLjA3NUMxNS4yNzUgMTIuOTc1IDE1LjM4MzMgMTIuOTA0MyAxNS41IDEyLjg2M0MxNS42MTY3IDEyLjgyMTcgMTUuNzQxNyAxMi44MDA3IDE1Ljg3NSAxMi44QzE2LjAwODMgMTIuNzk5MyAxNi4xMzMzIDEyLjgyMDMgMTYuMjUgMTIuODYzQzE2LjM2NjcgMTIuOTA1NyAxNi40NzUgMTIuOTc2MyAxNi41NzUgMTMuMDc1TDIxLjY3NSAxOC4xNzVDMjEuNzc1IDE4LjI3NSAyMS44NDYgMTguMzgzMyAyMS44ODggMTguNUMyMS45MyAxOC42MTY3IDIxLjk1MDcgMTguNzQxNyAyMS45NSAxOC44NzVDMjEuOTQ5MyAxOS4wMDgzIDIxLjkyODcgMTkuMTMzMyAyMS44ODggMTkuMjVDMjEuODQ3MyAxOS4zNjY3IDIxLjc3NjMgMTkuNDc1IDIxLjY3NSAxOS41NzVMMTkuNTUgMjEuN0MxOS40NSAyMS44IDE5LjM0MTcgMjEuODcxIDE5LjIyNSAyMS45MTNDMTkuMTA4MyAyMS45NTUgMTguOTgzMyAyMS45NzU3IDE4Ljg1IDIxLjk3NVpNMTguODUgMTkuNkwxOS41NzUgMTguODc1TDE1LjkgMTUuMkwxNS4xNzUgMTUuOTI1TDE4Ljg1IDE5LjZaTTUuMTI1IDIyQzQuOTkxNjcgMjIgNC44NjI2NyAyMS45NzUgNC43MzggMjEuOTI1QzQuNjEzMzMgMjEuODc1IDQuNTAwNjcgMjEuOCA0LjQgMjEuN0wyLjMgMTkuNkMyLjIgMTkuNSAyLjEyNSAxOS4zODczIDIuMDc1IDE5LjI2MkMyLjAyNSAxOS4xMzY3IDIgMTkuMDA4IDIgMTguODc2QzIgMTguNzQ0IDIuMDI1IDE4LjYxOSAyLjA3NSAxOC41MDFDMi4xMjUgMTguMzgzIDIuMiAxOC4yNzQ3IDIuMyAxOC4xNzZMNy42IDEyLjg3Nkg5LjcyNUwxMC41NzUgMTIuMDI2TDYuNDUgNy45SDUuMDI1TDIgNC44NzVMNC44MjUgMi4wNUw3Ljg1IDUuMDc1VjYuNUwxMS45NzUgMTAuNjI1TDE0Ljg3NSA3LjcyNUwxMy44IDYuNjVMMTUuMiA1LjI1SDEyLjM3NUwxMS42NzUgNC41NUwxNS4yMjUgMUwxNS45MjUgMS43VjQuNTI1TDE3LjMyNSAzLjEyNUwyMC44NzUgNi42NzVDMjEuMTU4MyA2Ljk1ODMzIDIxLjM3NSA3LjI3OTMzIDIxLjUyNSA3LjYzOEMyMS42NzUgNy45OTY2NyAyMS43NSA4LjM3NTY3IDIxLjc1IDguNzc1QzIxLjc1IDkuMTc0MzMgMjEuNjc1IDkuNTU3NjcgMjEuNTI1IDkuOTI1QzIxLjM3NSAxMC4yOTIzIDIxLjE1ODMgMTAuNjE3MyAyMC44NzUgMTAuOUwxOC43NSA4Ljc3NUwxNy4zNSAxMC4xNzVMMTYuMyA5LjEyNUwxMS4xMjUgMTQuM1YxNi40TDUuODI1IDIxLjdDNS43MjUgMjEuOCA1LjYxNjY3IDIxLjg3NSA1LjUgMjEuOTI1QzUuMzgzMzMgMjEuOTc1IDUuMjU4MzMgMjIgNS4xMjUgMjJaTTUuMTI1IDE5LjZMOS4zNzUgMTUuMzVWMTQuNjI1SDguNjVMNC40IDE4Ljg3NUw1LjEyNSAxOS42Wk01LjEyNSAxOS42TDQuNCAxOC44NzVMNC43NzUgMTkuMjI1TDUuMTI1IDE5LjZaXCIgZmlsbD1cIiMxRjVBOTVcIiAvPiA8L3N2Zz4gPGRpdiBjbGFzcz1cImZyYW1lLTEwXCI-IDxkaXYgY2xhc3M9XCJ0ZXh0LXdyYXBwZXItOVwiPlJlcGFpciBpbnN0cnVjdGlvbnM8L2Rpdj4gPC9kaXY-IDwvZGl2PiA8ZGl2IGNsYXNzPVwiZGl2LTRcIj4gPHN2ZyB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTVcIiB2aWV3Qm94PVwiMCAwIDEwIDE1XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI-IDxwYXRoIGQ9XCJNMSAxTDggOEwxIDE1XCIgc3Ryb2tlPVwiIzFGNUE5NVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPiA8L3N2Zz4gPC9kaXY-IDwvYT4gPC9kaXY-IDwvZGl2PiA8L2Rpdj4gPGRpdiBjbGFzcz1cImRpdi0yXCI-IDxkaXYgY2xhc3M9XCJ0eXBvZ3JhcGh5LWhlYWRpbmdcIj4gPGRpdiBjbGFzcz1cInRleHQtd3JhcHBlci00XCI-RW1pc3Npb25zIFNjb3JlY2FyZDwvZGl2PiA8L2Rpdj4gPHAgY2xhc3M9XCJ0ZXh0LXdyYXBwZXItNVwiPiBUaGUgRW1pc3Npb25zIFNjb3JlY2FyZCBnaXZlcyBhIGNsZWFyIHNuYXBzaG90IG9mIHRoZSBwcm9kdWN0J3MgZ3JlZW5ob3VzZSBnYXMgKEdIRykgZW1pc3Npb25zIHBlcmZvcm1hbmNlLCBwcm92aWRpbmcgYSBzaW5nbGUgaW5kaWNhdG9yIHRvIGFzc2VzcyBpdHMgb3ZlcmFsbCBlbnZpcm9ubWVudGFsIGltcGFjdC4gPC9wPiA8ZGl2IGNsYXNzPVwiZGl2LTdcIj4gPGRpdiBjbGFzcz1cImZyYW1lLTExXCI-IDxkaXYgY2xhc3M9XCJ0ZXh0LXdyYXBwZXItMTBcIj4ge3tjcmVkZW50aWFsU3ViamVjdC5lbWlzc2lvbnNTY29yZWNhcmQuY2FyYm9uRm9vdHByaW50fX17e2NyZWRlbnRpYWxTdWJqZWN0LmVtaXNzaW9uc1Njb3JlY2FyZC5kZWNsYXJlZFVuaXR9fSA8L2Rpdj4gPHAgY2xhc3M9XCJjby1lcVwiPiA8c3BhbiBjbGFzcz1cInNwYW5cIj5DbzJFcTwvc3Bhbj4gPC9wPiA8L2Rpdj4gPGRpdiBjbGFzcz1cImZyYW1lLTlcIj4gPGRpdiBjbGFzcz1cImRpdi0zXCI-IDxkaXYgY2xhc3M9XCJmcmFtZS05XCI-IDxkaXYgY2xhc3M9XCJkaXYtNVwiPiA8ZGl2IGNsYXNzPVwiZGF0YS10d28tY29sdW1ucy0zXCI-IDxkaXYgY2xhc3M9XCJ0ZXh0LXdyYXBwZXItMTJcIj5TY29wZSBpbmNsdWRlczwvZGl2PiA8ZGl2IGNsYXNzPVwiZGF0YS1kYXRhXCI-IDxkaXYgY2xhc3M9XCJkYXRhXCI-e3tjcmVkZW50aWFsU3ViamVjdC5lbWlzc2lvbnNTY29yZWNhcmQub3BlcmF0aW9uYWxTY29wZX19PC9kaXY-IDwvZGl2PiA8L2Rpdj4gPGRpdiBjbGFzcz1cImRhdGEtdHdvLWNvbHVtbnMtM1wiPiA8ZGl2IGNsYXNzPVwidGV4dC13cmFwcGVyLTEyXCI-UHJpbWFyeSBzb3VyY2VkIHJhdGlvKjwvZGl2PiA8ZGl2IGNsYXNzPVwiZGF0YS1kYXRhXCI-IDxkaXYgY2xhc3M9XCJkYXRhLTJcIj57e2NyZWRlbnRpYWxTdWJqZWN0LmVtaXNzaW9uc1Njb3JlY2FyZC5wcmltYXJ5U291cmNlZFJhdGlvfX0lIHByaW1hcnkgc291cmNlcyA8L2Rpdj4gPC9kaXY-IDwvZGl2PiA8L2Rpdj4gPHAgY2xhc3M9XCJ0ZXh0LXdyYXBwZXItOFwiPiBUaGUgUHJpbWFyeSBTb3VyY2VkIFJhdGlvIHNob3dzIHRoZSBwZXJjZW50YWdlIG9mIHNjb3BlIDMgZW1pc3Npb25zIGRhdGEgdGhhdCBpcyBkaXJlY3RseSBjb2xsZWN0ZWQgZnJvbSBhY3R1YWwgc291cmNlcywgcmF0aGVyIHRoYW4gYmVpbmcgYmFzZWQgb24gZXN0aW1hdGVzLiA8L3A-IDwvZGl2PiA8ZGl2IGNsYXNzPVwiZnJhbWUtMTJcIj4gPGRpdiBjbGFzcz1cImRhdGEtdHdvLWNvbHVtbnMtM1wiPiA8ZGl2IGNsYXNzPVwidGV4dC13cmFwcGVyLTEyXCI-UmVwb3J0aW5nIHN0YW5kYXJkPC9kaXY-IDxhIGhyZWY9XCJ7e2NyZWRlbnRpYWxTdWJqZWN0LmVtaXNzaW9uc1Njb3JlY2FyZC5yZXBvcnRpbmdTdGFuZGFyZC5pZH19XCIgY2xhc3M9XCJsaW5lXCI-IDxkaXYgY2xhc3M9XCJ0ZXh0LXdyYXBwZXItMlwiPnt7Y3JlZGVudGlhbFN1YmplY3QuZW1pc3Npb25zU2NvcmVjYXJkLnJlcG9ydGluZ1N0YW5kYXJkLm5hbWV9fTwvZGl2PiA8L2E-IDwvZGl2PiA8ZGl2IGNsYXNzPVwiZGF0YS10d28tY29sdW1ucy0zXCI-IDxkaXYgY2xhc3M9XCJ0ZXh0LXdyYXBwZXItMTJcIj5Jc3N1ZSBkYXRlPC9kaXY-IDxkaXYgY2xhc3M9XCJkYXRhLWRhdGFcIj4gPGRpdiBjbGFzcz1cImRhdGFcIj57e2NyZWRlbnRpYWxTdWJqZWN0LmVtaXNzaW9uc1Njb3JlY2FyZC5yZXBvcnRpbmdTdGFuZGFyZC5pc3N1ZURhdGV9fTwvZGl2PiA8L2Rpdj4gPC9kaXY-IDwvZGl2PiA8L2Rpdj4gPGRpdiBjbGFzcz1cImZyYW1lLTEzXCI-IDxkaXYgY2xhc3M9XCJ0ZXh0LXdyYXBwZXItMTNcIj4qPC9kaXY-IDwvZGl2PiA8L2Rpdj4gPC9kaXY-IDwvZGl2PiA8c2VjdGlvbiBjbGFzcz1cImRpdi0yXCI-IDxkaXYgY2xhc3M9XCJ0ZXh0LXdyYXBwZXItMTRcIj5EZWNsYXJhdGlvbnM8L2Rpdj4gPGRpdiBjbGFzcz1cImNhcmRzLWNvbmZvcm1pdGllc1wiPiB7eyNlYWNoIGNyZWRlbnRpYWxTdWJqZWN0LmNvbmZvcm1pdHlDbGFpbX19IDxkaXYgY2xhc3M9XCJjYXJkcy1jb25mb3JtaXR5XCI-IDxkaXYgY2xhc3M9XCJjYXJkcy1jb25mb3JtaXR5LWhlYWRlclwiPiA8ZGl2IGNsYXNzPVwiY2FyZHMtY29uZm9ybWl0eS1jb25mb3JtYW5jZVwiPiA8ZGl2IGNsYXNzPVwiY29uZm9ybWFuY2VcIj5Db25mb3JtYW5jZTo8L2Rpdj4gPGRpdiBjbGFzcz1cInt7I2lmIGNvbmZvcm1hbmNlfX10YWdzLVZDLWJhZGdlLWdyZWVue3tlbHNlfX10YWdzLVZDLWJhZGdlLXJlZHt7L2lmfX1cIj4gPGRpdiBjbGFzcz1cInZlcmlmaWFibGVcIj57eyNpZiBjb25mb3JtYW5jZX19WWVze3tlbHNlfX1Ob3t7L2lmfX08L2Rpdj4gPC9kaXY-IDwvZGl2PiA8ZGl2IGNsYXNzPVwiY29uZm9ybWFuY2VcIj5Bc3Nlc3NlZDoge3thc3Nlc3NtZW50RGF0ZX19PC9kaXY-IDwvZGl2PiA8ZGl2IGNsYXNzPVwiY2FyZHMtY29uZm9ybWl0eS1ib2R5XCI-IDxkaXYgY2xhc3M9XCJjYXJkcy1jb25mb3JtaXR5LXRpdGxlXCI-e3tjb25mb3JtaXR5RXZpZGVuY2UubGlua05hbWV9fTwvZGl2PiA8cCBjbGFzcz1cImNhcmRzLWNvbmZvcm1pdHktZGVzY3JpcHRpb25cIj4gPHNwYW4-e3tyZWZlcmVuY2VSZWd1bGF0aW9uLm5hbWV9fSBhZG1pbmlzdGVyZWQgaW4ge3tyZWZlcmVuY2VSZWd1bGF0aW9uLmp1cmlzZGljdGlvbkNvdW50cnl9fSBieSA8L3NwYW4-IDxhIGhyZWY9XCJ7e3JlZmVyZW5jZVJlZ3VsYXRpb24uYWRtaW5pc3RlcmVkQnkuaWR9fVwiIGNsYXNzPVwiZ3JheS1ib3R0b20tbGluZVwiPnt7cmVmZXJlbmNlUmVndWxhdGlvbi5hZG1pbmlzdGVyZWRCeS5uYW1lfX08L2E-IDwvcD4gPHAgY2xhc3M9XCJjYXJkcy1jb25mb3JtaXR5LWRlc2NyaXB0aW9uXCI-IDxzcGFuPnt7cmVmZXJlbmNlU3RhbmRhcmQubmFtZX19IGlzc3VlZCBieSA8L3NwYW4-IDxhIGhyZWY9XCJ7e3JlZmVyZW5jZVN0YW5kYXJkLmlzc3VpbmdQYXJ0eS5pZH19XCIgY2xhc3M9XCJncmF5LWJvdHRvbS1saW5lXCI-e3tyZWZlcmVuY2VTdGFuZGFyZC5pc3N1aW5nUGFydHkubmFtZX19PC9hPiA8L3A-IDwvZGl2PiA8ZGl2IGNsYXNzPVwiZGVjbGFyZWQtdmFsdWVzXCI-IHt7I2VhY2ggZGVjbGFyZWRWYWx1ZX19IDxkaXYgY2xhc3M9XCJkZWNsYXJlZC12YWx1ZVwiPiA8aDM-e3ttZXRyaWNOYW1lfX0gaXMge3ttZXRyaWNWYWx1ZS52YWx1ZX19e3ttZXRyaWNWYWx1ZS51bml0fX08L2gzPiA8cCBjbGFzcz1cImhlYWRpbmctMlwiPlNjb3JlOiB7e3Njb3JlfX0gfCBBY2N1cmFjeSB7e2FjY3VyYWN5fX08L3A-IDwvZGl2PiB7ey9lYWNofX0gPC9kaXY-IDxhIGhyZWY9XCJ7e2NvbmZvcm1pdHlFdmlkZW5jZS5saW5rVVJMfX1cIiBjbGFzcz1cImNhcmRzLXRyYWNlYWJpbGl0eS0yXCI-IDxkaXYgY2xhc3M9XCJmcmFtZS0yMVwiPiA8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj4gPHBhdGggZD1cIk01IDIxQzQuNDUgMjEgMy45NzkzMyAyMC44MDQzIDMuNTg4IDIwLjQxM0MzLjE5NjY3IDIwLjAyMTcgMy4wMDA2NyAxOS41NTA3IDMgMTlWNUMzIDQuNDUgMy4xOTYgMy45NzkzMyAzLjU4OCAzLjU4OEMzLjk4IDMuMTk2NjcgNC40NTA2NyAzLjAwMDY3IDUgM0gxOUMxOS41NSAzIDIwLjAyMSAzLjE5NiAyMC40MTMgMy41ODhDMjAuODA1IDMuOTggMjEuMDAwNyA0LjQ1MDY3IDIxIDVWMTlDMjEgMTkuNTUgMjAuODA0MyAyMC4wMjEgMjAuNDEzIDIwLjQxM0MyMC4wMjE3IDIwLjgwNSAxOS41NTA3IDIxLjAwMDcgMTkgMjFINVpNNSA1VjE5SDE5VjVIMTdWMTJMMTQuNSAxMC41TDEyIDEyVjVINVpcIiBmaWxsPVwiIzFGNUE5NVwiPjwvcGF0aD4gPC9zdmc-IDxkaXYgY2xhc3M9XCJjb21wYW55LW5hbWUtd3JhcHBlclwiPiA8ZGl2IGNsYXNzPVwiY29tcGFueS1uYW1lLTJcIj5FdmlkZW5jZTwvZGl2PiA8L2Rpdj4gPC9kaXY-IDxkaXYgY2xhc3M9XCJkaXYtNFwiPiA8c3ZnIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxNVwiIHZpZXdCb3g9XCIwIDAgMTAgMTVcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj4gPHBhdGggZD1cIk0xIDFMOCA4TDEgMTVcIiBzdHJva2U9XCIjMUY1QTk1XCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPiA8L3BhdGg-IDwvc3ZnPiA8L2Rpdj4gPC9hPiA8L2Rpdj4ge3svZWFjaH19IDwvZGl2PiA8L3NlY3Rpb24-IDxkaXYgY2xhc3M9XCJkaXYtMlwiPiA8ZGl2IGNsYXNzPVwidHlwb2dyYXBoeS1oZWFkaW5nXCI-IDxkaXYgY2xhc3M9XCJ0ZXh0LXdyYXBwZXItNFwiPlByb2R1Y3Rpb248L2Rpdj4gPC9kaXY-IDxkaXYgY2xhc3M9XCJkaXYtNVwiPiA8ZGl2IGNsYXNzPVwiZGF0YS10d28tY29sdW1uc1wiPiA8ZGl2IGNsYXNzPVwidGV4dC13cmFwcGVyLTEyXCI-UHJvZHVjdCBjYXRlZ29yeTwvZGl2PiA8ZGl2IGNsYXNzPVwiZGF0YS1kYXRhXCI-IDxkaXYgY2xhc3M9XCJkYXRhLTJcIj57eyNlYWNoIGNyZWRlbnRpYWxTdWJqZWN0LnByb2R1Y3RDYXRlZ29yeX19e3tuYW1lfX17eyN1bmxlc3MgQGxhc3R9fSx7ey91bmxlc3N9fSB7ey9lYWNofX08L2Rpdj4gPC9kaXY-IDwvZGl2PiA8ZGl2IGNsYXNzPVwiZGF0YS10d28tY29sdW1uc1wiPiA8ZGl2IGNsYXNzPVwidGV4dC13cmFwcGVyLTEyXCI-UHJvZHVjZWQgYnk8L2Rpdj4gPGRpdiBjbGFzcz1cImRhdGEtZGF0YS1saW5rXCI-IDxhIGhyZWY9XCJ7e2NyZWRlbnRpYWxTdWJqZWN0LnByb2R1Y2VkQnlQYXJ0eS5pZH19XCIgY2xhc3M9XCJsaW5lXCI-IDxwIGNsYXNzPVwidGV4dC13cmFwcGVyLTJcIj57e2NyZWRlbnRpYWxTdWJqZWN0LnByb2R1Y2VkQnlQYXJ0eS5uYW1lfX08L3A-IDwvYT4gPC9kaXY-IDwvZGl2PiA8ZGl2IGNsYXNzPVwiZGF0YS10d28tY29sdW1uc1wiPiA8ZGl2IGNsYXNzPVwidGV4dC13cmFwcGVyLTEyXCI-UHJvZHVjZWQgYXQ8L2Rpdj4gPGRpdiBjbGFzcz1cImRhdGEtZGF0YS1saW5rXCI-IDxhIGhyZWY9XCJ7e2NyZWRlbnRpYWxTdWJqZWN0LnByb2R1Y2VkQXRGYWNpbGl0eS5pZH19XCIgY2xhc3M9XCJsaW5lXCI-IDxwIGNsYXNzPVwidGV4dC13cmFwcGVyLTJcIj57e2NyZWRlbnRpYWxTdWJqZWN0LnByb2R1Y2VkQXRGYWNpbGl0eS5uYW1lfX08L3A-IDwvYT4gPC9kaXY-IDwvZGl2PiA8ZGl2IGNsYXNzPVwiZGF0YS10d28tY29sdW1uc1wiPiA8ZGl2IGNsYXNzPVwidGV4dC13cmFwcGVyLTEyXCI-RGF0ZSBwcm9kdWNlZDwvZGl2PiA8ZGl2IGNsYXNzPVwiZGF0YS13cmFwcGVyXCI-IDxkaXYgY2xhc3M9XCJkYXRhXCI-e3tjcmVkZW50aWFsU3ViamVjdC5wcm9kdWN0aW9uRGF0ZX19PC9kaXY-IDwvZGl2PiA8L2Rpdj4gPGRpdiBjbGFzcz1cImRhdGEtdHdvLWNvbHVtbnNcIj4gPGRpdiBjbGFzcz1cInRleHQtd3JhcHBlci0xMlwiPkNvdW50cnk8L2Rpdj4gPGRpdiBjbGFzcz1cImRhdGEtZGF0YVwiPiA8ZGl2IGNsYXNzPVwiZGF0YVwiPnt7Y3JlZGVudGlhbFN1YmplY3QuY291bnRyeU9mUHJvZHVjdGlvbn19PC9kaXY-IDwvZGl2PiA8L2Rpdj4gPGRpdiBjbGFzcz1cImRhdGEtdHdvLWNvbHVtbnNcIj4gPGRpdiBjbGFzcz1cInRleHQtd3JhcHBlci0xMlwiPkRpbWVuc2lvbnM8L2Rpdj4gPGRpdiBjbGFzcz1cImxpc3RcIj4gPHNwYW4-V2VpZ2h0OiB7e2NyZWRlbnRpYWxTdWJqZWN0LmRpbWVuc2lvbnMud2VpZ2h0LnZhbHVlfX17e2NyZWRlbnRpYWxTdWJqZWN0LmRpbWVuc2lvbnMud2VpZ2h0LnVuaXR9fTwvc3Bhbj4gPHNwYW4-TGVuZ3RoOiB7e2NyZWRlbnRpYWxTdWJqZWN0LmRpbWVuc2lvbnMubGVuZ3RoLnZhbHVlfX17e2NyZWRlbnRpYWxTdWJqZWN0LmRpbWVuc2lvbnMubGVuZ3RoLnVuaXR9fTwvc3Bhbj4gPHNwYW4-V2lkdGg6IHt7Y3JlZGVudGlhbFN1YmplY3QuZGltZW5zaW9ucy53aWR0aC52YWx1ZX19e3tjcmVkZW50aWFsU3ViamVjdC5kaW1lbnNpb25zLndpZHRoLnVuaXR9fTwvc3Bhbj4gPHNwYW4-SGVpZ2h0OiB7e2NyZWRlbnRpYWxTdWJqZWN0LmRpbWVuc2lvbnMuaGVpZ2h0LnZhbHVlfX17e2NyZWRlbnRpYWxTdWJqZWN0LmRpbWVuc2lvbnMuaGVpZ2h0LnVuaXR9fTwvc3Bhbj4gPHNwYW4-Vm9sdW1lOiB7e2NyZWRlbnRpYWxTdWJqZWN0LmRpbWVuc2lvbnMudm9sdW1lLnZhbHVlfX17e2NyZWRlbnRpYWxTdWJqZWN0LmRpbWVuc2lvbnMudm9sdW1lLnVuaXR9fTwvc3Bhbj4gPC9kaXY-IDwvZGl2PiA8L2Rpdj4gPC9kaXY-IDxkaXYgY2xhc3M9XCJkaXYtMlwiPiA8ZGl2IGNsYXNzPVwidHlwb2dyYXBoeS1oZWFkaW5nXCI-IDxkaXYgY2xhc3M9XCJ0ZXh0LXdyYXBwZXItNFwiPkNvbXBvc2l0aW9uPC9kaXY-IDwvZGl2PiA8cCBjbGFzcz1cInRleHQtd3JhcHBlci01XCI-IFRoZSBQcm9kdWN0IENvbXBvc2l0aW9uIExpc3QgZGV0YWlscyB0aGUgbWF0ZXJpYWxzIGFuZCBjb21wb25lbnRzIHVzZWQgaW4gdGhlIHByb2R1Y3QsIHByb3ZpZGluZyB0cmFuc3BhcmVuY3kgb24gdGhlIG9yaWdpbiBhbmQgbmF0dXJlIG9mIGVhY2ggZWxlbWVudC4gPC9wPiA8ZGl2IGNsYXNzPVwiY2FyZHNcIj4ge3sjZWFjaCBjcmVkZW50aWFsU3ViamVjdC5tYXRlcmlhbHNQcm92ZW5hbmNlfX0gPGRpdiBjbGFzcz1cImNhcmRzLWNvbXBvc2l0aW9uXCI-IDxkaXYgY2xhc3M9XCJmaXJzdC1jb2x1bW5cIj4gPGRpdiBjbGFzcz1cInBlcmNlbnRhZ2VcIj57e21hc3NGcmFjdGlvbn19JTwvZGl2PiA8ZGl2IGNsYXNzPVwiZGV0YWlsc1wiPiA8ZGl2IGNsYXNzPVwidGV4dC13cmFwcGVyLTlcIj57e21hc3NBbW91bnQudmFsdWV9fXt7bWFzc0Ftb3VudC51bml0fX0ge3tuYW1lfX08L2Rpdj4gPGRpdiBjbGFzcz1cImZyYW1lLTI1XCI-IDxkaXYgY2xhc3M9XCJmcmFtZS0yNlwiPiA8ZGl2IGNsYXNzPVwidGV4dC13cmFwcGVyLTE5XCI-UmVjeWNsZWQge3sjaWYgcmVjeWNsZWRBbW91bnR9fXt7cmVjeWNsZWRBbW91bnR9fXt7ZWxzZX19MHt7L2lmfX0lPC9kaXY-IDwvZGl2PiA8ZGl2IGNsYXNzPVwiZnJhbWUtMjdcIj4gPGRpdiBjbGFzcz1cInRleHQtd3JhcHBlci0xOVwiPkhhemFyZCB7eyNpZiBoYXphcmRvdXN9fVllc3t7ZWxzZX19Tm97ey9pZn19PC9kaXY-IDwvZGl2PiA8L2Rpdj4gPGRpdiBjbGFzcz1cImRhdGEtZGF0YS1saW5rLTJcIj4gPGEgaHJlZj1cInt7bWF0ZXJpYWxTYWZldHlJbmZvcm1hdGlvbi5saW5rVVJMfX1cIiBjbGFzcz1cImxpbmVcIj4gPGRpdiBjbGFzcz1cInRleHQtd3JhcHBlci0yXCI-e3ttYXRlcmlhbFNhZmV0eUluZm9ybWF0aW9uLmxpbmtOYW1lfX08L2Rpdj4gPC9hPiA8L2Rpdj4gPC9kaXY-IDwvZGl2PiA8ZGl2IGNsYXNzPVwiZGl2LTRcIj4gPGRpdiBjbGFzcz1cInRleHQtd3JhcHBlci0xOVwiPnt7b3JpZ2luQ291bnRyeX19PC9kaXY-IDwvZGl2PiA8L2Rpdj4ge3svZWFjaH19IDwvZGl2PiA8L2Rpdj4gPGRpdiBjbGFzcz1cImRpdi0yXCI-IDxkaXYgY2xhc3M9XCJ0eXBvZ3JhcGh5LWhlYWRpbmdcIj4gPGRpdiBjbGFzcz1cInRleHQtd3JhcHBlci00XCI-SGlzdG9yeTwvZGl2PiA8L2Rpdj4ge3shLS0gc3RhcnQ6IFN1cHBseSBjaGFpbiBkdWUgZGlsaWdlbmNlIHJlcG9ydCAtLX19IDxhIGhyZWY9XCJ7e2NyZWRlbnRpYWxTdWJqZWN0LmR1ZURpbGlnZW5jZURlY2xhcmF0aW9uLmxpbmtVUkx9fVwiIGNsYXNzPVwiY2FyZHMtdHJhY2VhYmlsaXR5XCI-IDxkaXYgY2xhc3M9XCJoaXN0b3J5LWR1ZS1kaWxpZ2VuY2VcIj4gPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI-IDxwYXRoIGQ9XCJNNSAyMUM0LjQ1IDIxIDMuOTc5MzMgMjAuODA0MyAzLjU4OCAyMC40MTNDMy4xOTY2NyAyMC4wMjE3IDMuMDAwNjcgMTkuNTUwNyAzIDE5VjVDMyA0LjQ1IDMuMTk2IDMuOTc5MzMgMy41ODggMy41ODhDMy45OCAzLjE5NjY3IDQuNDUwNjcgMy4wMDA2NyA1IDNIMTlDMTkuNTUgMyAyMC4wMjEgMy4xOTYgMjAuNDEzIDMuNTg4QzIwLjgwNSAzLjk4IDIxLjAwMDcgNC40NTA2NyAyMSA1VjE5QzIxIDE5LjU1IDIwLjgwNDMgMjAuMDIxIDIwLjQxMyAyMC40MTNDMjAuMDIxNyAyMC44MDUgMTkuNTUwNyAyMS4wMDA3IDE5IDIxSDVaTTUgNVYxOUgxOVY1SDE3VjEyTDE0LjUgMTAuNUwxMiAxMlY1SDVaXCIgZmlsbD1cIiMxRjVBOTVcIj48L3BhdGg-IDwvc3ZnPiA8ZGl2PlN1cHBseSBjaGFpbiBkdWUgZGlsaWdlbmNlIHJlcG9ydDwvZGl2PiA8L2Rpdj4gPHN2ZyB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTVcIiB2aWV3Qm94PVwiMCAwIDEwIDE1XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI-IDxwYXRoIGQ9XCJNMSAxTDggOEwxIDE1XCIgc3Ryb2tlPVwiIzFGNUE5NVwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj4gPC9wYXRoPiA8L3N2Zz4gPC9hPiB7eyEtLSBlbmQ6IFN1cHBseSBjaGFpbiBkdWUgZGlsaWdlbmNlIHJlcG9ydCAtLX19IDxkaXYgY2xhc3M9XCJoaXN0b3J5LWluZm9ybWF0aW9uXCI-IDxkaXYgY2xhc3M9XCJoaXN0b3J5LXZhbHVlLWNoYWluLWl0ZW1cIj4gPGRpdiBjbGFzcz1cImhpc3RvcnktdmFsdWUtY2hhaW5cIj4gPHA-e3tjcmVkZW50aWFsU3ViamVjdC50cmFjZWFiaWxpdHlJbmZvcm1hdGlvbi52YWx1ZUNoYWluUHJvY2Vzc319PC9wPiA8ZGl2IGNsYXNzPVwidmVyaWZpZWQtcmF0aW9cIj4gPHA-VmVyaWZpZWQgcmF0aW8ge3tjcmVkZW50aWFsU3ViamVjdC50cmFjZWFiaWxpdHlJbmZvcm1hdGlvbi52ZXJpZmllZFJhdGlvfX08L3A-IDwvZGl2PiA8L2Rpdj4gPGRpdiBpZD1cImhpc3RvcnktaXRlbXMtMTQ0MHB4XCIgY2xhc3M9XCJoaXN0b3J5LWV2ZW50XCI-IHt7I2VhY2ggY3JlZGVudGlhbFN1YmplY3QudHJhY2VhYmlsaXR5SW5mb3JtYXRpb24udHJhY2VhYmlsaXR5RXZlbnR9fSA8ZGl2IGNsYXNzPVwiaGlzdG9yeS1pdGVtXCI-IDxzcGFuPnt7bGlua05hbWV9fTwvc3Bhbj4gPGEgaHJlZj1cInt7bGlua1VSTH19XCIgY2xhc3M9XCJibHVlLWJvdHRvbS1saW5lLXRoaWNrXCI-VmlldzwvYT4gPC9kaXY-IHt7L2VhY2h9fSA8L2Rpdj4gPC9kaXY-IDwvZGl2PiA8L2Rpdj4gPGRpdiBjbGFzcz1cImRpdi0yXCI-IDxkaXYgY2xhc3M9XCJ0ZXh0LXdyYXBwZXItNFwiPlBhc3Nwb3J0IGlzc3VlZCBieTwvZGl2PiA8ZGl2IGNsYXNzPVwiZGl2LTVcIj4gPGRpdiBjbGFzcz1cImRhdGEtdHdvLWNvbHVtbnNcIj4gPGRpdiBjbGFzcz1cInRleHQtd3JhcHBlci0xMlwiPk9yZ2FuaXNhdGlvbjwvZGl2PiA8ZGl2IGNsYXNzPVwiZGF0YS1kYXRhXCI-IDxkaXYgY2xhc3M9XCJkYXRhXCI-e3tpc3N1ZXIubmFtZX19PC9kaXY-IDwvZGl2PiA8L2Rpdj4gPGRpdiBjbGFzcz1cImRhdGEtdHdvLWNvbHVtbnNcIj4gPGRpdiBjbGFzcz1cInRleHQtd3JhcHBlci0xMlwiPlJlZ2lzdGVyZWQgSUQ8L2Rpdj4gPGRpdiBjbGFzcz1cImRhdGEtZGF0YS1saW5rXCI-IDxhIGhyZWY9XCJ7e2lzc3Vlci5pZH19XCIgY2xhc3M9XCJsaW5lXCI-IDxkaXYgY2xhc3M9XCJ0ZXh0LXdyYXBwZXItMlwiPnt7aXNzdWVyLmlkfX08L2Rpdj4gPC9hPiA8L2Rpdj4gPC9kaXY-IDxkaXYgY2xhc3M9XCJkYXRhLXR3by1jb2x1bW5zXCI-IDxkaXYgY2xhc3M9XCJ0ZXh0LXdyYXBwZXItMTJcIj5WYWxpZCBmcm9tPC9kaXY-IDxkaXYgY2xhc3M9XCJkYXRhLWRhdGFcIj4gPGRpdiBjbGFzcz1cImRhdGFcIj57e3ZhbGlkRnJvbX19PC9kaXY-IDwvZGl2PiA8L2Rpdj4gPGRpdiBjbGFzcz1cImRhdGEtdHdvLWNvbHVtbnNcIj4gPGRpdiBjbGFzcz1cInRleHQtd3JhcHBlci0xMlwiPlZhbGlkIHRvPC9kaXY-IDxkaXYgY2xhc3M9XCJkYXRhLWRhdGFcIj4gPGRpdiBjbGFzcz1cImRhdGFcIj57e3ZhbGlkVW50aWx9fTwvZGl2PiA8L2Rpdj4gPC9kaXY-IDwvZGl2PiA8L2Rpdj4gPGRpdiBjbGFzcz1cInRoaXMtZGlnaXRhbC1wcm9kdWN0LXdyYXBwZXJcIj4gPHAgY2xhc3M9XCJ0aGlzLWRpZ2l0YWwtcHJvZHVjdFwiPiA8c3BhbiBjbGFzcz1cInRleHQtd3JhcHBlci0xN1wiPlRoaXMgRGlnaXRhbCBQcm9kdWN0IFBhc3Nwb3J0IChEUFApIGlzIGEgZGlnaXRhbCByZWNvcmQgb2YgdGhlIHByb2R1Y3TigJlzIHN1c3RhaW5hYmlsaXR5IGFuZCBlbnZpcm9ubWVudGFsIHBlcmZvcm1hbmNlLCBlbnN1cmluZyB0cmFuc3BhcmVuY3kgYW5kIGFjY291bnRhYmlsaXR5IGluIGxpbmUgd2l0aCBVTlRQIHN0YW5kYXJkcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24gdmlzaXQgPGEgaHJlZj1cImh0dHBzOi8vdW5jZWZhY3QuZ2l0aHViLmlvL3NwZWMtdW50cC9cIiBjbGFzcz1cImdyYXktYm90dG9tLWxpbmVcIj51bmNlZmFjdC5naXRodWIuaW8vc3BlYy11bnRwLzwvYT4uPC9zcGFuPiA8L3A-IDwvZGl2PiA8L2Rpdj4gPCEtLSBFbmQgZGVza3RvcCAtLT4gPC9kaXY-IDwvYm9keT4gPC9odG1sPiIsIkB0eXBlIjoiV2ViUmVuZGVyaW5nVGVtcGxhdGUyMDIyIn1dfQ.dG6cuccJsBiFinImpY7c6NknHalUVKK8aefiPw6dCr9shjoXqQKa1zpUm7WDuqyCbb02ZAvyTCyl7rK9HSIIBg" +} diff --git a/packages/untp-playground/public/file.svg b/packages/untp-playground/public/file.svg new file mode 100644 index 00000000..004145cd --- /dev/null +++ b/packages/untp-playground/public/file.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/untp-playground/public/globe.svg b/packages/untp-playground/public/globe.svg new file mode 100644 index 00000000..567f17b0 --- /dev/null +++ b/packages/untp-playground/public/globe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/untp-playground/public/next.svg b/packages/untp-playground/public/next.svg new file mode 100644 index 00000000..5174b28c --- /dev/null +++ b/packages/untp-playground/public/next.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/untp-playground/public/vercel.svg b/packages/untp-playground/public/vercel.svg new file mode 100644 index 00000000..77053960 --- /dev/null +++ b/packages/untp-playground/public/vercel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/untp-playground/public/window.svg b/packages/untp-playground/public/window.svg new file mode 100644 index 00000000..b2b2a44f --- /dev/null +++ b/packages/untp-playground/public/window.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/untp-playground/src/app/api/schema/route.ts b/packages/untp-playground/src/app/api/schema/route.ts new file mode 100644 index 00000000..1aa7fdcc --- /dev/null +++ b/packages/untp-playground/src/app/api/schema/route.ts @@ -0,0 +1,25 @@ +import { NextResponse } from "next/server"; + +export async function GET(request: Request) { + const { searchParams } = new URL(request.url); + const url = searchParams.get("url"); + + if (!url) { + return NextResponse.json( + { error: "No schema URL provided" }, + { status: 400 } + ); + } + + try { + const response = await fetch(url); + const schema = await response.json(); + return NextResponse.json(schema); + } catch (error) { + console.log("Error fetching schema:", error); + return NextResponse.json( + { error: "Failed to fetch schema" }, + { status: 500 } + ); + } +} diff --git a/packages/untp-playground/src/app/favicon.ico b/packages/untp-playground/src/app/favicon.ico new file mode 100644 index 00000000..8d643203 Binary files /dev/null and b/packages/untp-playground/src/app/favicon.ico differ diff --git a/packages/untp-playground/src/app/fonts/GeistMonoVF.woff b/packages/untp-playground/src/app/fonts/GeistMonoVF.woff new file mode 100644 index 00000000..f2ae185c Binary files /dev/null and b/packages/untp-playground/src/app/fonts/GeistMonoVF.woff differ diff --git a/packages/untp-playground/src/app/fonts/GeistVF.woff b/packages/untp-playground/src/app/fonts/GeistVF.woff new file mode 100644 index 00000000..1b62daac Binary files /dev/null and b/packages/untp-playground/src/app/fonts/GeistVF.woff differ diff --git a/packages/untp-playground/src/app/globals.css b/packages/untp-playground/src/app/globals.css new file mode 100644 index 00000000..a23ac26b --- /dev/null +++ b/packages/untp-playground/src/app/globals.css @@ -0,0 +1,72 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +body { + font-family: Arial, Helvetica, sans-serif; +} + +@layer base { + :root { + --background: 0 0% 100%; + --foreground: 0 0% 3.9%; + --card: 0 0% 100%; + --card-foreground: 0 0% 3.9%; + --popover: 0 0% 100%; + --popover-foreground: 0 0% 3.9%; + --primary: 0 0% 9%; + --primary-foreground: 0 0% 98%; + --secondary: 0 0% 96.1%; + --secondary-foreground: 0 0% 9%; + --muted: 0 0% 96.1%; + --muted-foreground: 0 0% 45.1%; + --accent: 0 0% 96.1%; + --accent-foreground: 0 0% 9%; + --destructive: 0 84.2% 60.2%; + --destructive-foreground: 0 0% 98%; + --border: 0 0% 89.8%; + --input: 0 0% 89.8%; + --ring: 0 0% 3.9%; + --chart-1: 12 76% 61%; + --chart-2: 173 58% 39%; + --chart-3: 197 37% 24%; + --chart-4: 43 74% 66%; + --chart-5: 27 87% 67%; + --radius: 0.5rem; + } + .dark { + --background: 0 0% 3.9%; + --foreground: 0 0% 98%; + --card: 0 0% 3.9%; + --card-foreground: 0 0% 98%; + --popover: 0 0% 3.9%; + --popover-foreground: 0 0% 98%; + --primary: 0 0% 98%; + --primary-foreground: 0 0% 9%; + --secondary: 0 0% 14.9%; + --secondary-foreground: 0 0% 98%; + --muted: 0 0% 14.9%; + --muted-foreground: 0 0% 63.9%; + --accent: 0 0% 14.9%; + --accent-foreground: 0 0% 98%; + --destructive: 0 62.8% 30.6%; + --destructive-foreground: 0 0% 98%; + --border: 0 0% 14.9%; + --input: 0 0% 14.9%; + --ring: 0 0% 83.1%; + --chart-1: 220 70% 50%; + --chart-2: 160 60% 45%; + --chart-3: 30 80% 55%; + --chart-4: 280 65% 60%; + --chart-5: 340 75% 55%; + } +} + +@layer base { + * { + @apply border-border; + } + body { + @apply bg-background text-foreground; + } +} diff --git a/packages/untp-playground/src/app/layout.tsx b/packages/untp-playground/src/app/layout.tsx new file mode 100644 index 00000000..e4418f81 --- /dev/null +++ b/packages/untp-playground/src/app/layout.tsx @@ -0,0 +1,37 @@ +import type { Metadata } from "next"; +import localFont from "next/font/local"; +import { Toaster } from "sonner"; +import "./globals.css"; + +const geistSans = localFont({ + src: "./fonts/GeistVF.woff", + variable: "--font-geist-sans", + weight: "100 900", +}); +const geistMono = localFont({ + src: "./fonts/GeistMonoVF.woff", + variable: "--font-geist-mono", + weight: "100 900", +}); + +export const metadata: Metadata = { + title: "UNTP Playground", + description: "A playground for UNTP", +}; + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + return ( + + + + {children} + + + ); +} diff --git a/packages/untp-playground/src/app/page.tsx b/packages/untp-playground/src/app/page.tsx new file mode 100644 index 00000000..8e683911 --- /dev/null +++ b/packages/untp-playground/src/app/page.tsx @@ -0,0 +1,100 @@ +"use client"; + +import { CredentialUploader } from "@/components/CredentialUploader"; +import { DownloadCredential } from "@/components/DownloadCredential"; +import { Footer } from "@/components/Footer"; +import { Header } from "@/components/Header"; +import { TestResults } from "@/components/TestResults"; +import { + decodeEnvelopedCredential, + isEnvelopedProof, +} from "@/lib/credentialService"; +import type { Credential, CredentialType } from "@/types/credential"; +import { useState } from "react"; +import { toast } from "sonner"; + +interface StoredCredential { + original: any; + decoded: Credential; +} + +const CREDENTIAL_TYPES = [ + "DigitalProductPassport", + "DigitalConformityCredential", + "DigitalFacilityRecord", + "DigitalIdentityAnchor", + "DigitalTraceabilityEvent", +] as const; + +export default function Home() { + const [credentials, setCredentials] = useState<{ + [key in CredentialType]?: StoredCredential; + }>({}); + + const handleCredentialUpload = async (rawCredential: any) => { + try { + const normalizedCredential = + rawCredential.verifiableCredential || rawCredential; + + if (!normalizedCredential || typeof normalizedCredential !== "object") { + toast.error("Invalid credential format"); + return; + } + + const isEnveloped = isEnvelopedProof(normalizedCredential); + const decodedCredential = isEnveloped + ? decodeEnvelopedCredential(normalizedCredential) + : normalizedCredential; + + const credentialType = decodedCredential.type.find((t: string) => + CREDENTIAL_TYPES.includes(t as CredentialType) + ) as CredentialType; + + if (!credentialType) { + toast.error("Unknown credential type"); + return; + } + + setCredentials((prev) => ({ + ...prev, + [credentialType]: { + original: normalizedCredential, + decoded: decodedCredential, + }, + })); + } catch { + toast.error("Failed to process credential"); + } + }; + + return ( +
+
+
+
+
+

Your Credentials

+ +
+
+
+

Add New Credential

+
+ +
+
+
+

+ Download Test Credential +

+ +
+
+
+
+
+
+ ); +} diff --git a/packages/untp-playground/src/components/CredentialUploader.tsx b/packages/untp-playground/src/components/CredentialUploader.tsx new file mode 100644 index 00000000..d90b3046 --- /dev/null +++ b/packages/untp-playground/src/components/CredentialUploader.tsx @@ -0,0 +1,97 @@ +"use client"; + +import { Card } from "@/components/ui/card"; +import { jwtDecode } from "jwt-decode"; +import { useCallback } from "react"; +import { useDropzone } from "react-dropzone"; +import { toast } from "sonner"; + +export function CredentialUploader({ + onCredentialUpload, +}: { + onCredentialUpload: (credential: any) => void; +}) { + const onDrop = useCallback( + (acceptedFiles: File[]) => { + const validExtensions = [".json", ".jwt", ".txt"]; + + console.log("acceptedFiles", acceptedFiles); + const invalidFiles = acceptedFiles.filter( + (file) => + !validExtensions.some((ext) => file.name.toLowerCase().endsWith(ext)) + ); + + if (invalidFiles.length > 0 || acceptedFiles.length === 0) { + toast.error( + `Invalid file format. Please upload only .json, .jwt, or .txt files.` + ); + return; + } + + acceptedFiles.forEach((file) => { + const reader = new FileReader(); + reader.onload = async (e) => { + try { + const text = e.target?.result as string; + let json; + + // Only try JWT parsing if the file extension is .jwt or .txt + if (file.name.endsWith(".jwt") || file.name.endsWith(".txt")) { + try { + json = jwtDecode(text); + } catch (jwtError) { + console.log("Error decoding JWT:", jwtError); + toast.error( + "Invalid JWT format - Please provide a file containing a valid JWT token" + ); + return; + } + } else { + // For JSON files only + try { + json = JSON.parse(text); + } catch (jsonError) { + console.log("Error parsing JSON:", jsonError); + toast.error("Invalid format - File must contain valid JSON"); + return; + } + } + + onCredentialUpload(json); + } catch (error) { + console.log("Error processing credential:", error); + toast.error( + "Failed to process credential - Please ensure the file contains valid data" + ); + } + }; + reader.readAsText(file); + }); + }, + [onCredentialUpload] + ); + + const { getRootProps, getInputProps, isDragActive } = useDropzone({ + onDrop, + accept: { + "application/json": [".json"], + "text/plain": [".txt", ".jwt"], + }, + }); + + return ( + + + {isDragActive ? ( +

Drop the credentials here...

+ ) : ( +

+ Drag and drop credentials here, or click to select files +

+ )} +
+ ); +} diff --git a/packages/untp-playground/src/components/DownloadCredential.tsx b/packages/untp-playground/src/components/DownloadCredential.tsx new file mode 100644 index 00000000..bfd77f03 --- /dev/null +++ b/packages/untp-playground/src/components/DownloadCredential.tsx @@ -0,0 +1,35 @@ +"use client"; + +import { Button } from "@/components/ui/button"; +import { Download } from "lucide-react"; + +export function DownloadCredential() { + const handleDownload = async () => { + try { + const response = await fetch("/credentials/dpp.json"); + const data = await response.json(); + + // Create and download file + const blob = new Blob([JSON.stringify(data, null, 2)], { + type: "application/json", + }); + const url = window.URL.createObjectURL(blob); + const a = document.createElement("a"); + a.href = url; + a.download = "untp-test-dpp-credential.json"; + document.body.appendChild(a); + a.click(); + window.URL.revokeObjectURL(url); + document.body.removeChild(a); + } catch (error) { + console.log("Error downloading credential:", error); + } + }; + + return ( + + ); +} diff --git a/packages/untp-playground/src/components/ErrorDialog.tsx b/packages/untp-playground/src/components/ErrorDialog.tsx new file mode 100644 index 00000000..72a79a10 --- /dev/null +++ b/packages/untp-playground/src/components/ErrorDialog.tsx @@ -0,0 +1,259 @@ +import { AlertCircle, Check, ChevronRight, Copy } from "lucide-react"; +import { useState } from "react"; + +const getReadableKeyword = (keyword: string) => { + const keywords: { [key: string]: string } = { + const: "incorrect value", + enum: "invalid option", + required: "missing field", + type: "wrong type", + format: "incorrect format", + pattern: "invalid format", + minimum: "too small", + maximum: "too large", + minLength: "too short", + maxLength: "too long", + additionalProperties: "unexpected field", + }; + return keywords[keyword] || keyword; +}; + +const getFriendlyPath = (path: string) => { + if (!path) return "root"; + return path.replace(/^\//, "").replace(/\//g, " → "); +}; + +const groupErrors = (errors: any[]) => { + const warnings = errors.filter( + (error) => error.keyword === "additionalProperties" + ); + const validationErrors = errors.filter( + (error) => error.keyword !== "additionalProperties" + ); + + const groups: { [key: string]: { path: string; errors: any[] } } = {}; + validationErrors.forEach((error) => { + const basePath = error.instancePath.replace(/\/\d+$/, ""); + if (!groups[basePath]) { + groups[basePath] = { path: basePath, errors: [] }; + } + groups[basePath].errors.push(error); + }); + + return { + issues: Object.values(groups), + warnings: warnings.map((error) => ({ + path: error.params.additionalProperty, + errors: [error], + })), + }; +}; + +export const ErrorDialog = ({ errors = [], className = "" }) => { + const [expandedError, setExpandedError] = useState(null); + const [copied, setCopied] = useState(false); + + const handleCopy = (text: string) => { + if (text) { + navigator.clipboard.writeText(text); + setCopied(true); + setTimeout(() => setCopied(false), 2000); + } + }; + + if (!Array.isArray(errors) || errors.length === 0) { + return null; + } + + const { issues, warnings } = groupErrors(errors); + const hasIssues = issues.length > 0; + const hasWarnings = warnings.length > 0; + + return ( +
+ {hasIssues && ( + <> +
+ +

+ We Found {issues.length}{" "} + {issues.length === 1 ? "Issue" : "Issues"} +

+
+ +
+ {issues.map((group, index) => { + const mainError = group.errors[0]; + const isExpanded = expandedError === index; + const isAdditionalProp = + mainError.keyword === "additionalProperties"; + const value = + mainError.params?.allowedValue || + mainError.params?.allowedValues; + const fixExample = value ? JSON.stringify(value, null, 2) : null; + + return ( +
+ {isAdditionalProp ? ( +
+
+
+ + {`Additional property: "${mainError.params.additionalProperty}"`} + + + {getReadableKeyword(mainError.keyword)} + +
+
+
+ ) : ( + <> + + + {isExpanded && ( +
+
+ {mainError.keyword === "required" && ( +

+ Missing field:{" "} + + {mainError.params.missingProperty} + +

+ )} + {mainError.keyword === "enum" && ( +

+ Must be one of:{" "} + + {mainError.params.allowedValues.join(", ")} + +

+ )} + {mainError.keyword === "type" && ( +

+ Expected type:{" "} + + {mainError.params.type} + +

+ )} +
+ + {fixExample && ( +
+
+                                
+                                  {fixExample}
+                                
+                              
+ +
+ )} + +
+ Tip:{" "} + {mainError.keyword === "const" + ? "This value must match exactly as shown above." + : mainError.keyword === "enum" + ? "Choose one of the values shown above." + : mainError.keyword === "required" + ? `Add the missing "${mainError.params.missingProperty}" field.` + : mainError.keyword === "type" + ? `Change the value to match the expected type: ${mainError.params.type}.` + : "Make sure your input matches the required format."} +
+
+ )} + + )} +
+ ); + })} +
+ + )} + + {hasWarnings && ( + <> +
+ +

+ {warnings.length} {warnings.length === 1 ? "Warning" : "Warnings"} +

+
+ +
+ {warnings.map((warning, index) => ( +
+
+
+
+ + {`Additional property: "${warning.path}"`} + + + {getReadableKeyword(warning.errors[0].keyword)} + +
+
+
+
+ ))} +
+ + )} +
+ ); +}; diff --git a/packages/untp-playground/src/components/Footer.tsx b/packages/untp-playground/src/components/Footer.tsx new file mode 100644 index 00000000..b0f4b881 --- /dev/null +++ b/packages/untp-playground/src/components/Footer.tsx @@ -0,0 +1,29 @@ +"use client"; + +export function Footer() { + return ( + + ); +} diff --git a/packages/untp-playground/src/components/Header.tsx b/packages/untp-playground/src/components/Header.tsx new file mode 100644 index 00000000..5e2f120f --- /dev/null +++ b/packages/untp-playground/src/components/Header.tsx @@ -0,0 +1,17 @@ +"use client"; + +export function Header() { + return ( +
+
+ {/* UNTP Logo */} +

UNTP Playground

+
+
+ ); +} diff --git a/packages/untp-playground/src/components/TestResults.tsx b/packages/untp-playground/src/components/TestResults.tsx new file mode 100644 index 00000000..dd4cff1f --- /dev/null +++ b/packages/untp-playground/src/components/TestResults.tsx @@ -0,0 +1,481 @@ +"use client"; + +import { Button } from "@/components/ui/button"; +import { Card } from "@/components/ui/card"; +import { + Sheet, + SheetContent, + SheetHeader, + SheetTitle, + SheetTrigger, +} from "@/components/ui/sheet"; +import { isEnvelopedProof } from "@/lib/credentialService"; +import { validateCredentialSchema } from "@/lib/schemaValidation"; +import { verifyCredential } from "@/lib/verificationService"; +import type { Credential, CredentialType, TestStep } from "@/types/credential"; +import confetti from "canvas-confetti"; +import { + AlertCircle, + Check, + ChevronDown, + ChevronRight, + Loader2, + X, +} from "lucide-react"; +import { useEffect, useMemo, useRef, useState } from "react"; +import { toast } from "sonner"; +import { ErrorDialog } from "./ErrorDialog"; + +// Define all possible credential types +const ALL_CREDENTIAL_TYPES: CredentialType[] = [ + "DigitalProductPassport", + "DigitalConformityCredential", + "DigitalFacilityRecord", + "DigitalIdentityAnchor", + "DigitalTraceabilityEvent", +]; + +// Add this type to help with tracking previous credentials +type CredentialCache = { + [key in CredentialType]?: { + credential: { + original: any; + decoded: Credential; + }; + validated: boolean; + confettiShown?: boolean; + }; +}; + +interface TestGroupProps { + credentialType: string; + version: string; + steps: TestStep[]; + isExpanded: boolean; + onToggle: () => void; +} + +const TestGroup = ({ + credentialType, + version, + steps, + isExpanded, + onToggle, + proofType, + hasCredential, +}: TestGroupProps & { + proofType: "enveloping" | "embedded" | "none"; + hasCredential: boolean; +}) => { + const isLoading = steps.some((step) => step.status === "in-progress"); + + const overallStatus = useMemo(() => { + if (!hasCredential) return "missing"; + if (version === "unknown") return "failure"; + if (isLoading || steps.some((step) => step.status === "pending")) + return "in-progress"; + return steps.every((step) => step.status === "success") + ? "success" + : "failure"; + }, [steps, isLoading, hasCredential, version]); + + return ( + +
+
+ {isExpanded ? ( + + ) : ( + + )} +

+ {credentialType} + {hasCredential && + ` (${ + version === "unknown" ? version + " version" : "v" + version + })`} +

+
+
+ {hasCredential && proofType !== "none" && ( + + {proofType} proof + + )} + +
+
+ {isExpanded && ( +
+ {steps.map((step) => ( + + ))} + {!hasCredential && ( +

+ Upload a credential to begin validation +

+ )} +
+ )} +
+ ); +}; + +const TestStepItem = ({ step }: { step: TestStep }) => { + const [isDetailsOpen, setIsDetailsOpen] = useState(false); + + const shouldShowDetails = + step.details && + ((step.details.errors && step.details.errors.length > 0) || + (step.details.additionalProperties && + Object.keys(step.details.additionalProperties).length > 0)); + + return ( +
+
+
+ + {step.name} +
+ {step.details && + step.id === "schema" && + (step.details.errors?.[0]?.message === "Failed to fetch schema" ? ( + Failed to load schema + ) : shouldShowDetails ? ( + + + + + + + Validation Details + +
+ {step.details.errors && step.details.errors.length > 0 ? ( + + ) : ( +
+

⚠️ Additional properties found in credential

+
+ )} +
+
+
+ ) : null)} +
+
+ ); +}; + +const StatusIcon = ({ + status, + size = "default", +}: { + status: TestStep["status"]; + size?: "sm" | "default"; +}) => { + const sizeClass = size === "sm" ? "h-3 w-3" : "h-4 w-4"; + + switch (status) { + case "success": + return ; + case "failure": + return ; + case "in-progress": + return ; + case "missing": + return ; + default: + return ; + } +}; + +export function TestResults({ + credentials, +}: { + credentials: { + [key in CredentialType]?: { original: any; decoded: Credential }; + }; +}) { + const [expandedGroups, setExpandedGroups] = useState([]); + const [testResults, setTestResults] = useState<{ + [key in CredentialType]?: TestStep[]; + }>({}); + const validatedCredentialsRef = useRef({}); + const previousCredentialsRef = useRef(credentials); + + const initializeTestSteps = (credential?: { + original: any; + decoded: Credential; + }) => { + if (!credential) { + return [ + { + id: "proof-type", + name: "Proof Type Detection", + status: "missing", + }, + { + id: "verification", + name: "Credential Verification", + status: "missing", + }, + { + id: "schema", + name: "Schema Validation", + status: "missing", + }, + ]; + } + + return [ + { + id: "proof-type", + name: "Proof Type Detection", + status: "success", + details: { + type: isEnvelopedProof(credential.original) + ? "enveloping" + : "embedded", + }, + }, + { + id: "verification", + name: "Credential Verification", + status: "pending", + }, + { + id: "schema", + name: "Schema Validation", + status: "pending", + }, + ]; + }; + + // First useEffect for initializing test steps + useEffect(() => { + ALL_CREDENTIAL_TYPES.forEach((type) => { + const credential = credentials[type]; + const previousCredential = previousCredentialsRef.current[type]; + + // Only initialize or update if the credential has changed + if (credential !== previousCredential) { + setTestResults((prev) => ({ + ...prev, + [type]: initializeTestSteps(credential), + })); + } + }); + + previousCredentialsRef.current = credentials; + }, [credentials]); + + // Validation useEffect + useEffect(() => { + Object.entries(credentials).forEach(([type, credential]) => { + const credentialType = type as CredentialType; + const cached = validatedCredentialsRef.current[credentialType]; + + // Skip if this credential has already been validated + if (cached?.credential.original === credential.original) { + return; + } + + const verifyAndValidate = async () => { + try { + // Set in-progress state + setTestResults((prev) => ({ + ...prev, + [type as CredentialType]: prev[type as CredentialType]?.map( + (step) => + step.id === "verification" || step.id === "schema" + ? { ...step, status: "in-progress" } + : step + ), + })); + + // Verification + const verificationResult = await verifyCredential( + credential.original + ); + setTestResults((prev) => ({ + ...prev, + [type as CredentialType]: prev[type as CredentialType]?.map( + (step) => + step.id === "verification" + ? { + ...step, + status: verificationResult.verified + ? "success" + : "failure", + details: verificationResult, + } + : step + ), + })); + + if (!verificationResult.verified) { + const errorMessage = + typeof verificationResult.error === "object" + ? verificationResult.error.message || + "The credential could not be verified" + : verificationResult.error || + "The credential could not be verified"; + + toast.error("Credential verification failed", { + description: errorMessage, + }); + } + + // Schema validation + try { + const validationResult = await validateCredentialSchema( + credential.decoded + ); + setTestResults((prev) => ({ + ...prev, + [type as CredentialType]: prev[type as CredentialType]?.map( + (step) => + step.id === "schema" + ? { + ...step, + status: validationResult.valid ? "success" : "failure", + details: validationResult, + } + : step + ), + })); + + // Store reference to validated credential + validatedCredentialsRef.current[credentialType] = { + credential: { + original: credential.original, + decoded: credential.decoded, + }, + validated: true, + }; + + if (validationResult.valid) { + if ( + !validatedCredentialsRef.current[credentialType]?.confettiShown + ) { + confetti({ + particleCount: 200, + spread: 90, + origin: { y: 0.7 }, + }); + + validatedCredentialsRef.current[credentialType] = { + ...validatedCredentialsRef.current[credentialType]!, + confettiShown: true, + }; + } + } + } catch (error) { + console.log("Schema validation error:", error); + toast.error("Failed to fetch schema. Please try again."); + + // Only update the schema validation step + setTestResults((prev) => ({ + ...prev, + [type as CredentialType]: prev[type as CredentialType]?.map( + (step) => + step.id === "schema" + ? { + ...step, + status: "failure", + details: { + errors: [ + { + keyword: "schema", + message: "Failed to fetch schema", + instancePath: "", + }, + ], + }, + } + : step + ), + })); + } + } catch (error) { + console.log("Error processing credential:", error); + } + }; + + verifyAndValidate(); + }); + }, [credentials]); + + const toggleGroup = (groupId: string) => { + setExpandedGroups((prev) => + prev.includes(groupId) + ? prev.filter((id) => id !== groupId) + : [...prev, groupId] + ); + }; + + return ( +
+ {ALL_CREDENTIAL_TYPES.map((type) => { + const credential = credentials[type]; + const steps = testResults[type] || []; + const hasCredential = !!credential; + const proofType = credential + ? isEnvelopedProof(credential.original) + ? "enveloping" + : "embedded" + : "none"; + + return ( + toggleGroup(type)} + proofType={proofType} + hasCredential={hasCredential} + /> + ); + })} +
+ ); +} + +// Helper function to extract version +function extractVersion(credential: Credential): string { + try { + if (!credential["@context"] || !Array.isArray(credential["@context"])) { + return "unknown"; + } + + const contextUrl = credential["@context"].find( + (ctx) => + typeof ctx === "string" && + (ctx.includes("vocabulary.uncefact.org") || + ctx.includes("test.uncefact.org")) + ); + + return contextUrl?.match(/\/(\d+\.\d+\.\d+)\//)?.[1] || "unknown"; + } catch { + return "unknown"; + } +} diff --git a/packages/untp-playground/src/components/ui/button.tsx b/packages/untp-playground/src/components/ui/button.tsx new file mode 100644 index 00000000..36496a28 --- /dev/null +++ b/packages/untp-playground/src/components/ui/button.tsx @@ -0,0 +1,56 @@ +import * as React from "react" +import { Slot } from "@radix-ui/react-slot" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@/lib/utils" + +const buttonVariants = cva( + "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", + { + variants: { + variant: { + default: "bg-primary text-primary-foreground hover:bg-primary/90", + destructive: + "bg-destructive text-destructive-foreground hover:bg-destructive/90", + outline: + "border border-input bg-background hover:bg-accent hover:text-accent-foreground", + secondary: + "bg-secondary text-secondary-foreground hover:bg-secondary/80", + ghost: "hover:bg-accent hover:text-accent-foreground", + link: "text-primary underline-offset-4 hover:underline", + }, + size: { + default: "h-10 px-4 py-2", + sm: "h-9 rounded-md px-3", + lg: "h-11 rounded-md px-8", + icon: "h-10 w-10", + }, + }, + defaultVariants: { + variant: "default", + size: "default", + }, + } +) + +export interface ButtonProps + extends React.ButtonHTMLAttributes, + VariantProps { + asChild?: boolean +} + +const Button = React.forwardRef( + ({ className, variant, size, asChild = false, ...props }, ref) => { + const Comp = asChild ? Slot : "button" + return ( + + ) + } +) +Button.displayName = "Button" + +export { Button, buttonVariants } diff --git a/packages/untp-playground/src/components/ui/card.tsx b/packages/untp-playground/src/components/ui/card.tsx new file mode 100644 index 00000000..f62edea5 --- /dev/null +++ b/packages/untp-playground/src/components/ui/card.tsx @@ -0,0 +1,79 @@ +import * as React from "react" + +import { cn } from "@/lib/utils" + +const Card = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)) +Card.displayName = "Card" + +const CardHeader = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)) +CardHeader.displayName = "CardHeader" + +const CardTitle = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)) +CardTitle.displayName = "CardTitle" + +const CardDescription = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)) +CardDescription.displayName = "CardDescription" + +const CardContent = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)) +CardContent.displayName = "CardContent" + +const CardFooter = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)) +CardFooter.displayName = "CardFooter" + +export { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent } diff --git a/packages/untp-playground/src/components/ui/select.tsx b/packages/untp-playground/src/components/ui/select.tsx new file mode 100644 index 00000000..cbe5a36b --- /dev/null +++ b/packages/untp-playground/src/components/ui/select.tsx @@ -0,0 +1,160 @@ +"use client" + +import * as React from "react" +import * as SelectPrimitive from "@radix-ui/react-select" +import { Check, ChevronDown, ChevronUp } from "lucide-react" + +import { cn } from "@/lib/utils" + +const Select = SelectPrimitive.Root + +const SelectGroup = SelectPrimitive.Group + +const SelectValue = SelectPrimitive.Value + +const SelectTrigger = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + span]:line-clamp-1", + className + )} + {...props} + > + {children} + + + + +)) +SelectTrigger.displayName = SelectPrimitive.Trigger.displayName + +const SelectScrollUpButton = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + + + +)) +SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName + +const SelectScrollDownButton = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + + + +)) +SelectScrollDownButton.displayName = + SelectPrimitive.ScrollDownButton.displayName + +const SelectContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, position = "popper", ...props }, ref) => ( + + + + + {children} + + + + +)) +SelectContent.displayName = SelectPrimitive.Content.displayName + +const SelectLabel = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +SelectLabel.displayName = SelectPrimitive.Label.displayName + +const SelectItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + + + + + + + {children} + +)) +SelectItem.displayName = SelectPrimitive.Item.displayName + +const SelectSeparator = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +SelectSeparator.displayName = SelectPrimitive.Separator.displayName + +export { + Select, + SelectGroup, + SelectValue, + SelectTrigger, + SelectContent, + SelectLabel, + SelectItem, + SelectSeparator, + SelectScrollUpButton, + SelectScrollDownButton, +} diff --git a/packages/untp-playground/src/components/ui/sheet.tsx b/packages/untp-playground/src/components/ui/sheet.tsx new file mode 100644 index 00000000..a37f17ba --- /dev/null +++ b/packages/untp-playground/src/components/ui/sheet.tsx @@ -0,0 +1,140 @@ +"use client" + +import * as React from "react" +import * as SheetPrimitive from "@radix-ui/react-dialog" +import { cva, type VariantProps } from "class-variance-authority" +import { X } from "lucide-react" + +import { cn } from "@/lib/utils" + +const Sheet = SheetPrimitive.Root + +const SheetTrigger = SheetPrimitive.Trigger + +const SheetClose = SheetPrimitive.Close + +const SheetPortal = SheetPrimitive.Portal + +const SheetOverlay = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +SheetOverlay.displayName = SheetPrimitive.Overlay.displayName + +const sheetVariants = cva( + "fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500", + { + variants: { + side: { + top: "inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top", + bottom: + "inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom", + left: "inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm", + right: + "inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm", + }, + }, + defaultVariants: { + side: "right", + }, + } +) + +interface SheetContentProps + extends React.ComponentPropsWithoutRef, + VariantProps {} + +const SheetContent = React.forwardRef< + React.ElementRef, + SheetContentProps +>(({ side = "right", className, children, ...props }, ref) => ( + + + + {children} + + + Close + + + +)) +SheetContent.displayName = SheetPrimitive.Content.displayName + +const SheetHeader = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
+) +SheetHeader.displayName = "SheetHeader" + +const SheetFooter = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
+) +SheetFooter.displayName = "SheetFooter" + +const SheetTitle = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +SheetTitle.displayName = SheetPrimitive.Title.displayName + +const SheetDescription = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +SheetDescription.displayName = SheetPrimitive.Description.displayName + +export { + Sheet, + SheetPortal, + SheetOverlay, + SheetTrigger, + SheetClose, + SheetContent, + SheetHeader, + SheetFooter, + SheetTitle, + SheetDescription, +} diff --git a/packages/untp-playground/src/lib/credentialService.ts b/packages/untp-playground/src/lib/credentialService.ts new file mode 100644 index 00000000..6273dda2 --- /dev/null +++ b/packages/untp-playground/src/lib/credentialService.ts @@ -0,0 +1,49 @@ +import type { Credential } from "@/types/credential"; +import { jwtDecode } from "jwt-decode"; + +export function decodeEnvelopedCredential(credential: any): Credential { + if (!isEnvelopedProof(credential)) { + return credential; + } + + try { + const jwtPart = credential.id.split(",")[1]; + if (!jwtPart) { + return credential; + } + + return jwtDecode(jwtPart); + } catch (error) { + console.log("Error processing enveloped credential:", error); + return credential; + } +} + +export function detectCredentialType(credential: Credential): string { + const types = [ + "DigitalProductPassport", + "DigitalConformityCredential", + "DigitalFacilityRecord", + "DigitalIdentityAnchor", + "DigitalTraceabilityEvent", + ]; + + return credential.type.find((t) => types.includes(t)) || "Unknown"; +} + +export function detectVersion(credential: Credential): string { + const contextUrl = credential["@context"].find((ctx) => + ctx.includes("vocabulary.uncefact.org") + ); + + if (!contextUrl) return "unknown"; + + const versionMatch = contextUrl.match(/\/(\d+\.\d+\.\d+)\//); + return versionMatch ? versionMatch[1] : "unknown"; +} + +export function isEnvelopedProof(credential: any): boolean { + const normalizedCredential = credential.verifiableCredential || credential; + + return normalizedCredential.type === "EnvelopedVerifiableCredential"; +} diff --git a/packages/untp-playground/src/lib/formatValidationErrors.ts b/packages/untp-playground/src/lib/formatValidationErrors.ts new file mode 100644 index 00000000..b149b514 --- /dev/null +++ b/packages/untp-playground/src/lib/formatValidationErrors.ts @@ -0,0 +1,49 @@ +interface ValidationError { + keyword: string; + instancePath: string; + message?: string; + params: any; +} + +export function formatValidationError(error: ValidationError): string { + const path = error.instancePath + .split("/") + .filter(Boolean) + .map((segment) => segment.replace("@", "")) + .join(" → "); + + switch (error.keyword) { + case "required": + if (!error.instancePath) { + return `Missing required field: ${error.params.missingProperty}`; + } + return `Missing required field: ${path} → ${error.params.missingProperty}`; + case "const": + const allowedValues = Array.isArray(error.params.allowedValue) + ? error.params.allowedValue.join(" or ") + : error.params.allowedValue; + return `Invalid value for ${ + path || "field" + }: must be one of [${allowedValues}]`; + case "enum": + return `Invalid value for ${ + path || "field" + }: must be one of [${error.params.allowedValues.join(", ")}]`; + case "type": + return `Invalid type for ${path || "field"}: expected ${ + error.params.type + }`; + case "format": + return `Invalid format for ${path || "field"}: must be a valid ${ + error.params.format + }`; + case "pattern": + return `Invalid format for ${path || "field"}: must match pattern ${ + error.params.pattern + }`; + case "additionalProperties": + return `Unknown field: ${error.params.additionalProperty}`; + default: + return error.message || "Unknown validation error"; + } +} diff --git a/packages/untp-playground/src/lib/schemaValidation.ts b/packages/untp-playground/src/lib/schemaValidation.ts new file mode 100644 index 00000000..09523554 --- /dev/null +++ b/packages/untp-playground/src/lib/schemaValidation.ts @@ -0,0 +1,64 @@ +import addFormats from 'ajv-formats'; +import Ajv2020 from 'ajv/dist/2020'; + +const ajv = new Ajv2020({ + allErrors: true, + strict: false, + validateFormats: false, +}); +addFormats(ajv); + +const schemaCache = new Map(); + +const SCHEMA_URLS = { + DigitalProductPassport: 'https://test.uncefact.org/vocabulary/untp/dpp/untp-dpp-schema-0.5.0.json', + DigitalConformityCredential: 'https://test.uncefact.org/vocabulary/untp/dcc/untp-dcc-schema-0.5.0.json', + DigitalTraceabilityEvent: 'https://test.uncefact.org/vocabulary/untp/dte/untp-dte-schema-0.5.0.json', + DigitalFacilityRecord: 'https://test.uncefact.org/vocabulary/untp/dfr/untp-dfr-schema-0.5.0.json', + DigitalIdentityAnchor: 'https://test.uncefact.org/vocabulary/untp/dia/untp-dia-schema-0.2.1.json', +}; + +export async function validateCredentialSchema(credential: any): Promise<{ + valid: boolean; + errors?: any[]; +}> { + try { + const credentialType = credential.type.find((t: string) => Object.keys(SCHEMA_URLS).includes(t)); + + if (!credentialType) { + throw new Error('Unsupported credential type'); + } + + const schemaUrl = SCHEMA_URLS[credentialType as keyof typeof SCHEMA_URLS]; + + if (!schemaCache.has(schemaUrl)) { + const proxyUrl = `/untp-playground/api/schema?url=${encodeURIComponent(schemaUrl)}`; + const schemaResponse = await fetch(proxyUrl); + + if (!schemaResponse.ok) { + throw new Error(`Failed to fetch schema: ${schemaResponse.statusText}`); + } + + const schema = await schemaResponse.json(); + schemaCache.set(schemaUrl, schema); + } + + const schema = schemaCache.get(schemaUrl); + const validate = ajv.compile(schema); + const isValid = validate(credential); + const errors = validate.errors || []; + + console.log('errors', errors); + + // Check if all errors are additionalProperties + const onlyAdditionalPropertiesErrors = errors.every((error) => error.keyword === 'additionalProperties'); + + return { + valid: isValid || onlyAdditionalPropertiesErrors, + errors: errors, + }; + } catch (error) { + console.log('Schema validation error:', error); + throw error; + } +} diff --git a/packages/untp-playground/src/lib/utils.ts b/packages/untp-playground/src/lib/utils.ts new file mode 100644 index 00000000..bd0c391d --- /dev/null +++ b/packages/untp-playground/src/lib/utils.ts @@ -0,0 +1,6 @@ +import { clsx, type ClassValue } from "clsx" +import { twMerge } from "tailwind-merge" + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)) +} diff --git a/packages/untp-playground/src/lib/verificationService.ts b/packages/untp-playground/src/lib/verificationService.ts new file mode 100644 index 00000000..a26614dc --- /dev/null +++ b/packages/untp-playground/src/lib/verificationService.ts @@ -0,0 +1,30 @@ +const API_URL = 'https://vckit.untp.showthething.com/agent/routeVerificationCredential'; +const API_TOKEN = 'test123'; + +export async function verifyCredential(credential: any) { + try { + const response = await fetch(API_URL, { + method: 'POST', + headers: { + Authorization: `Bearer ${API_TOKEN}`, + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + credential, + fetchRemoteContexts: true, + policies: { + credentialStatus: false, + }, + }), + }); + + if (!response.ok) { + throw new Error('Verification failed'); + } + + return await response.json(); + } catch (error) { + console.log('Verification error:', error); + throw error; + } +} diff --git a/packages/untp-playground/src/types/credential.ts b/packages/untp-playground/src/types/credential.ts new file mode 100644 index 00000000..e8079f0f --- /dev/null +++ b/packages/untp-playground/src/types/credential.ts @@ -0,0 +1,28 @@ +type CredentialType = + | 'DigitalProductPassport' + | 'DigitalConformityCredential' + | 'DigitalFacilityRecord' + | 'DigitalIdentityAnchor' + | 'DigitalTraceabilityEvent'; + +interface VerificationResult { + success: boolean; + message: string; + details?: any; +} + +interface Credential { + '@context': string[]; + type: string[]; + id?: string; + [key: string]: any; +} + +interface TestStep { + id: string; + name: string; + status: 'pending' | 'in-progress' | 'success' | 'failure' | 'missing'; + details?: any; +} + +export type { Credential, CredentialType, TestStep, VerificationResult }; diff --git a/packages/untp-playground/tailwind.config.ts b/packages/untp-playground/tailwind.config.ts new file mode 100644 index 00000000..2e92e039 --- /dev/null +++ b/packages/untp-playground/tailwind.config.ts @@ -0,0 +1,62 @@ +import type { Config } from 'tailwindcss'; + +export default { + darkMode: ['class'], + content: [ + './src/pages/**/*.{js,ts,jsx,tsx,mdx}', + './src/components/**/*.{js,ts,jsx,tsx,mdx}', + './src/app/**/*.{js,ts,jsx,tsx,mdx}', + ], + theme: { + extend: { + colors: { + background: 'hsl(var(--background))', + foreground: 'hsl(var(--foreground))', + card: { + DEFAULT: 'hsl(var(--card))', + foreground: 'hsl(var(--card-foreground))', + }, + popover: { + DEFAULT: 'hsl(var(--popover))', + foreground: 'hsl(var(--popover-foreground))', + }, + primary: { + DEFAULT: 'hsl(var(--primary))', + foreground: 'hsl(var(--primary-foreground))', + }, + secondary: { + DEFAULT: 'hsl(var(--secondary))', + foreground: 'hsl(var(--secondary-foreground))', + }, + muted: { + DEFAULT: 'hsl(var(--muted))', + foreground: 'hsl(var(--muted-foreground))', + }, + accent: { + DEFAULT: 'hsl(var(--accent))', + foreground: 'hsl(var(--accent-foreground))', + }, + destructive: { + DEFAULT: 'hsl(var(--destructive))', + foreground: 'hsl(var(--destructive-foreground))', + }, + border: 'hsl(var(--border))', + input: 'hsl(var(--input))', + ring: 'hsl(var(--ring))', + chart: { + '1': 'hsl(var(--chart-1))', + '2': 'hsl(var(--chart-2))', + '3': 'hsl(var(--chart-3))', + '4': 'hsl(var(--chart-4))', + '5': 'hsl(var(--chart-5))', + }, + }, + borderRadius: { + lg: 'var(--radius)', + md: 'calc(var(--radius) - 2px)', + sm: 'calc(var(--radius) - 4px)', + }, + }, + }, + plugins: [require('tailwindcss-animate')], +} satisfies Config; diff --git a/packages/untp-playground/tsconfig.json b/packages/untp-playground/tsconfig.json new file mode 100644 index 00000000..7aa97d60 --- /dev/null +++ b/packages/untp-playground/tsconfig.json @@ -0,0 +1,42 @@ +{ + "compilerOptions": { + "target": "ES2017", + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "@/*": [ + "./src/*" + ] + } + }, + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx", + ".next/types/**/*.ts" + ], + "exclude": [ + "node_modules", + ".next", + "infra" + ] +} \ No newline at end of file diff --git a/packages/untp-playground/yarn.lock b/packages/untp-playground/yarn.lock new file mode 100644 index 00000000..793120cd --- /dev/null +++ b/packages/untp-playground/yarn.lock @@ -0,0 +1,3294 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@alloc/quick-lru@^5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" + integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== + +"@emnapi/runtime@^1.2.0": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.3.1.tgz#0fcaa575afc31f455fd33534c19381cfce6c6f60" + integrity sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw== + dependencies: + tslib "^2.4.0" + +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": + version "4.4.1" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz#d1145bf2c20132d6400495d6df4bf59362fd9d56" + integrity sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA== + dependencies: + eslint-visitor-keys "^3.4.3" + +"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.6.1": + version "4.12.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" + integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== + +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" + integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.6.0" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@eslint/js@8.57.1": + version "8.57.1" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.1.tgz#de633db3ec2ef6a3c89e2f19038063e8a122e2c2" + integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q== + +"@floating-ui/core@^1.6.0": + version "1.6.8" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.8.tgz#aa43561be075815879305965020f492cdb43da12" + integrity sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA== + dependencies: + "@floating-ui/utils" "^0.2.8" + +"@floating-ui/dom@^1.0.0": + version "1.6.12" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.12.tgz#6333dcb5a8ead3b2bf82f33d6bc410e95f54e556" + integrity sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w== + dependencies: + "@floating-ui/core" "^1.6.0" + "@floating-ui/utils" "^0.2.8" + +"@floating-ui/react-dom@^2.0.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.1.2.tgz#a1349bbf6a0e5cb5ded55d023766f20a4d439a31" + integrity sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A== + dependencies: + "@floating-ui/dom" "^1.0.0" + +"@floating-ui/utils@^0.2.8": + version "0.2.8" + resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.8.tgz#21a907684723bbbaa5f0974cf7730bd797eb8e62" + integrity sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig== + +"@humanwhocodes/config-array@^0.13.0": + version "0.13.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.13.0.tgz#fb907624df3256d04b9aa2df50d7aa97ec648748" + integrity sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw== + dependencies: + "@humanwhocodes/object-schema" "^2.0.3" + debug "^4.3.1" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" + integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== + +"@img/sharp-darwin-arm64@0.33.5": + version "0.33.5" + resolved "https://registry.yarnpkg.com/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz#ef5b5a07862805f1e8145a377c8ba6e98813ca08" + integrity sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ== + optionalDependencies: + "@img/sharp-libvips-darwin-arm64" "1.0.4" + +"@img/sharp-darwin-x64@0.33.5": + version "0.33.5" + resolved "https://registry.yarnpkg.com/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz#e03d3451cd9e664faa72948cc70a403ea4063d61" + integrity sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q== + optionalDependencies: + "@img/sharp-libvips-darwin-x64" "1.0.4" + +"@img/sharp-libvips-darwin-arm64@1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz#447c5026700c01a993c7804eb8af5f6e9868c07f" + integrity sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg== + +"@img/sharp-libvips-darwin-x64@1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz#e0456f8f7c623f9dbfbdc77383caa72281d86062" + integrity sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ== + +"@img/sharp-libvips-linux-arm64@1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz#979b1c66c9a91f7ff2893556ef267f90ebe51704" + integrity sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA== + +"@img/sharp-libvips-linux-arm@1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz#99f922d4e15216ec205dcb6891b721bfd2884197" + integrity sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g== + +"@img/sharp-libvips-linux-s390x@1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz#f8a5eb1f374a082f72b3f45e2fb25b8118a8a5ce" + integrity sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA== + +"@img/sharp-libvips-linux-x64@1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz#d4c4619cdd157774906e15770ee119931c7ef5e0" + integrity sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw== + +"@img/sharp-libvips-linuxmusl-arm64@1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz#166778da0f48dd2bded1fa3033cee6b588f0d5d5" + integrity sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA== + +"@img/sharp-libvips-linuxmusl-x64@1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz#93794e4d7720b077fcad3e02982f2f1c246751ff" + integrity sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw== + +"@img/sharp-linux-arm64@0.33.5": + version "0.33.5" + resolved "https://registry.yarnpkg.com/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz#edb0697e7a8279c9fc829a60fc35644c4839bb22" + integrity sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA== + optionalDependencies: + "@img/sharp-libvips-linux-arm64" "1.0.4" + +"@img/sharp-linux-arm@0.33.5": + version "0.33.5" + resolved "https://registry.yarnpkg.com/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz#422c1a352e7b5832842577dc51602bcd5b6f5eff" + integrity sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ== + optionalDependencies: + "@img/sharp-libvips-linux-arm" "1.0.5" + +"@img/sharp-linux-s390x@0.33.5": + version "0.33.5" + resolved "https://registry.yarnpkg.com/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz#f5c077926b48e97e4a04d004dfaf175972059667" + integrity sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q== + optionalDependencies: + "@img/sharp-libvips-linux-s390x" "1.0.4" + +"@img/sharp-linux-x64@0.33.5": + version "0.33.5" + resolved "https://registry.yarnpkg.com/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz#d806e0afd71ae6775cc87f0da8f2d03a7c2209cb" + integrity sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA== + optionalDependencies: + "@img/sharp-libvips-linux-x64" "1.0.4" + +"@img/sharp-linuxmusl-arm64@0.33.5": + version "0.33.5" + resolved "https://registry.yarnpkg.com/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz#252975b915894fb315af5deea174651e208d3d6b" + integrity sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g== + optionalDependencies: + "@img/sharp-libvips-linuxmusl-arm64" "1.0.4" + +"@img/sharp-linuxmusl-x64@0.33.5": + version "0.33.5" + resolved "https://registry.yarnpkg.com/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz#3f4609ac5d8ef8ec7dadee80b560961a60fd4f48" + integrity sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw== + optionalDependencies: + "@img/sharp-libvips-linuxmusl-x64" "1.0.4" + +"@img/sharp-wasm32@0.33.5": + version "0.33.5" + resolved "https://registry.yarnpkg.com/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz#6f44f3283069d935bb5ca5813153572f3e6f61a1" + integrity sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg== + dependencies: + "@emnapi/runtime" "^1.2.0" + +"@img/sharp-win32-ia32@0.33.5": + version "0.33.5" + resolved "https://registry.yarnpkg.com/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz#1a0c839a40c5351e9885628c85f2e5dfd02b52a9" + integrity sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ== + +"@img/sharp-win32-x64@0.33.5": + version "0.33.5" + resolved "https://registry.yarnpkg.com/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz#56f00962ff0c4e0eb93d34a047d29fa995e3e342" + integrity sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg== + +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + +"@jridgewell/gen-mapping@^0.3.2": + version "0.3.5" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" + integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== + dependencies: + "@jridgewell/set-array" "^1.2.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/set-array@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" + integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" + integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== + +"@jridgewell/trace-mapping@^0.3.24": + version "0.3.25" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" + integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@next/env@15.0.3": + version "15.0.3" + resolved "https://registry.yarnpkg.com/@next/env/-/env-15.0.3.tgz#a2e9bf274743c52b74d30f415f3eba750d51313a" + integrity sha512-t9Xy32pjNOvVn2AS+Utt6VmyrshbpfUMhIjFO60gI58deSo/KgLOp31XZ4O+kY/Is8WAGYwA5gR7kOb1eORDBA== + +"@next/eslint-plugin-next@15.0.3": + version "15.0.3" + resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-15.0.3.tgz#ce953098036d462f6901e423cc6445fc165b78c4" + integrity sha512-3Ln/nHq2V+v8uIaxCR6YfYo7ceRgZNXfTd3yW1ukTaFbO+/I8jNakrjYWODvG9BuR2v5kgVtH/C8r0i11quOgw== + dependencies: + fast-glob "3.3.1" + +"@next/swc-darwin-arm64@15.0.3": + version "15.0.3" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.0.3.tgz#4c40c506cf3d4d87da0204f4cccf39e6bdc46a71" + integrity sha512-s3Q/NOorCsLYdCKvQlWU+a+GeAd3C8Rb3L1YnetsgwXzhc3UTWrtQpB/3eCjFOdGUj5QmXfRak12uocd1ZiiQw== + +"@next/swc-darwin-x64@15.0.3": + version "15.0.3" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-15.0.3.tgz#8e06cacae3dae279744f9fbe88dea679ec2c1ca3" + integrity sha512-Zxl/TwyXVZPCFSf0u2BNj5sE0F2uR6iSKxWpq4Wlk/Sv9Ob6YCKByQTkV2y6BCic+fkabp9190hyrDdPA/dNrw== + +"@next/swc-linux-arm64-gnu@15.0.3": + version "15.0.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.0.3.tgz#c144ad1f21091b9c6e1e330ecc2d56188763191d" + integrity sha512-T5+gg2EwpsY3OoaLxUIofmMb7ohAUlcNZW0fPQ6YAutaWJaxt1Z1h+8zdl4FRIOr5ABAAhXtBcpkZNwUcKI2fw== + +"@next/swc-linux-arm64-musl@15.0.3": + version "15.0.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.0.3.tgz#3ccb71c6703bf421332f177d1bb0e10528bc73a2" + integrity sha512-WkAk6R60mwDjH4lG/JBpb2xHl2/0Vj0ZRu1TIzWuOYfQ9tt9NFsIinI1Epma77JVgy81F32X/AeD+B2cBu/YQA== + +"@next/swc-linux-x64-gnu@15.0.3": + version "15.0.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.0.3.tgz#b90aa9b07001b4000427c35ab347a9273cbeebb3" + integrity sha512-gWL/Cta1aPVqIGgDb6nxkqy06DkwJ9gAnKORdHWX1QBbSZZB+biFYPFti8aKIQL7otCE1pjyPaXpFzGeG2OS2w== + +"@next/swc-linux-x64-musl@15.0.3": + version "15.0.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.0.3.tgz#0ac9724fb44718fc97bfea971ac3fe17e486590e" + integrity sha512-QQEMwFd8r7C0GxQS62Zcdy6GKx999I/rTO2ubdXEe+MlZk9ZiinsrjwoiBL5/57tfyjikgh6GOU2WRQVUej3UA== + +"@next/swc-win32-arm64-msvc@15.0.3": + version "15.0.3" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.0.3.tgz#932437d4cf27814e963ba8ae5f033b4421fab9ca" + integrity sha512-9TEp47AAd/ms9fPNgtgnT7F3M1Hf7koIYYWCMQ9neOwjbVWJsHZxrFbI3iEDJ8rf1TDGpmHbKxXf2IFpAvheIQ== + +"@next/swc-win32-x64-msvc@15.0.3": + version "15.0.3" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.0.3.tgz#940a6f7b370cdde0cc67eabe945d9e6d97e0be9f" + integrity sha512-VNAz+HN4OGgvZs6MOoVfnn41kBzT+M+tB+OK4cww6DNyWS6wKaDpaAm/qLeOUbnMh0oVx1+mg0uoYARF69dJyA== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@nolyfill/is-core-module@1.0.39": + version "1.0.39" + resolved "https://registry.yarnpkg.com/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz#3dc35ba0f1e66b403c00b39344f870298ebb1c8e" + integrity sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA== + +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + +"@radix-ui/number@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/number/-/number-1.1.0.tgz#1e95610461a09cdf8bb05c152e76ca1278d5da46" + integrity sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ== + +"@radix-ui/primitive@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/primitive/-/primitive-1.1.0.tgz#42ef83b3b56dccad5d703ae8c42919a68798bbe2" + integrity sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA== + +"@radix-ui/react-arrow@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-arrow/-/react-arrow-1.1.0.tgz#744f388182d360b86285217e43b6c63633f39e7a" + integrity sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw== + dependencies: + "@radix-ui/react-primitive" "2.0.0" + +"@radix-ui/react-collection@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-collection/-/react-collection-1.1.0.tgz#f18af78e46454a2360d103c2251773028b7724ed" + integrity sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw== + dependencies: + "@radix-ui/react-compose-refs" "1.1.0" + "@radix-ui/react-context" "1.1.0" + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-slot" "1.1.0" + +"@radix-ui/react-compose-refs@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.0.tgz#656432461fc8283d7b591dcf0d79152fae9ecc74" + integrity sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw== + +"@radix-ui/react-context@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-context/-/react-context-1.1.0.tgz#6df8d983546cfd1999c8512f3a8ad85a6e7fcee8" + integrity sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A== + +"@radix-ui/react-context@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-context/-/react-context-1.1.1.tgz#82074aa83a472353bb22e86f11bcbd1c61c4c71a" + integrity sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q== + +"@radix-ui/react-dialog@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@radix-ui/react-dialog/-/react-dialog-1.1.2.tgz#d9345575211d6f2d13e209e84aec9a8584b54d6c" + integrity sha512-Yj4dZtqa2o+kG61fzB0H2qUvmwBA2oyQroGLyNtBj1beo1khoQ3q1a2AO8rrQYjd8256CO9+N8L9tvsS+bnIyA== + dependencies: + "@radix-ui/primitive" "1.1.0" + "@radix-ui/react-compose-refs" "1.1.0" + "@radix-ui/react-context" "1.1.1" + "@radix-ui/react-dismissable-layer" "1.1.1" + "@radix-ui/react-focus-guards" "1.1.1" + "@radix-ui/react-focus-scope" "1.1.0" + "@radix-ui/react-id" "1.1.0" + "@radix-ui/react-portal" "1.1.2" + "@radix-ui/react-presence" "1.1.1" + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-slot" "1.1.0" + "@radix-ui/react-use-controllable-state" "1.1.0" + aria-hidden "^1.1.1" + react-remove-scroll "2.6.0" + +"@radix-ui/react-direction@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-direction/-/react-direction-1.1.0.tgz#a7d39855f4d077adc2a1922f9c353c5977a09cdc" + integrity sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg== + +"@radix-ui/react-dismissable-layer@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.1.tgz#cbdcb739c5403382bdde5f9243042ba643883396" + integrity sha512-QSxg29lfr/xcev6kSz7MAlmDnzbP1eI/Dwn3Tp1ip0KT5CUELsxkekFEMVBEoykI3oV39hKT4TKZzBNMbcTZYQ== + dependencies: + "@radix-ui/primitive" "1.1.0" + "@radix-ui/react-compose-refs" "1.1.0" + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-use-callback-ref" "1.1.0" + "@radix-ui/react-use-escape-keydown" "1.1.0" + +"@radix-ui/react-focus-guards@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.1.tgz#8635edd346304f8b42cae86b05912b61aef27afe" + integrity sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg== + +"@radix-ui/react-focus-scope@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.0.tgz#ebe2891a298e0a33ad34daab2aad8dea31caf0b2" + integrity sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA== + dependencies: + "@radix-ui/react-compose-refs" "1.1.0" + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-use-callback-ref" "1.1.0" + +"@radix-ui/react-id@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-id/-/react-id-1.1.0.tgz#de47339656594ad722eb87f94a6b25f9cffae0ed" + integrity sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA== + dependencies: + "@radix-ui/react-use-layout-effect" "1.1.0" + +"@radix-ui/react-popper@1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-popper/-/react-popper-1.2.0.tgz#a3e500193d144fe2d8f5d5e60e393d64111f2a7a" + integrity sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg== + dependencies: + "@floating-ui/react-dom" "^2.0.0" + "@radix-ui/react-arrow" "1.1.0" + "@radix-ui/react-compose-refs" "1.1.0" + "@radix-ui/react-context" "1.1.0" + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-use-callback-ref" "1.1.0" + "@radix-ui/react-use-layout-effect" "1.1.0" + "@radix-ui/react-use-rect" "1.1.0" + "@radix-ui/react-use-size" "1.1.0" + "@radix-ui/rect" "1.1.0" + +"@radix-ui/react-portal@1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@radix-ui/react-portal/-/react-portal-1.1.2.tgz#51eb46dae7505074b306ebcb985bf65cc547d74e" + integrity sha512-WeDYLGPxJb/5EGBoedyJbT0MpoULmwnIPMJMSldkuiMsBAv7N1cRdsTWZWht9vpPOiN3qyiGAtbK2is47/uMFg== + dependencies: + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-use-layout-effect" "1.1.0" + +"@radix-ui/react-presence@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-presence/-/react-presence-1.1.1.tgz#98aba423dba5e0c687a782c0669dcd99de17f9b1" + integrity sha512-IeFXVi4YS1K0wVZzXNrbaaUvIJ3qdY+/Ih4eHFhWA9SwGR9UDX7Ck8abvL57C4cv3wwMvUE0OG69Qc3NCcTe/A== + dependencies: + "@radix-ui/react-compose-refs" "1.1.0" + "@radix-ui/react-use-layout-effect" "1.1.0" + +"@radix-ui/react-primitive@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-primitive/-/react-primitive-2.0.0.tgz#fe05715faa9203a223ccc0be15dc44b9f9822884" + integrity sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw== + dependencies: + "@radix-ui/react-slot" "1.1.0" + +"@radix-ui/react-select@^2.1.2": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@radix-ui/react-select/-/react-select-2.1.2.tgz#2346e118966db793940f6a866fd4cc5db2cc275e" + integrity sha512-rZJtWmorC7dFRi0owDmoijm6nSJH1tVw64QGiNIZ9PNLyBDtG+iAq+XGsya052At4BfarzY/Dhv9wrrUr6IMZA== + dependencies: + "@radix-ui/number" "1.1.0" + "@radix-ui/primitive" "1.1.0" + "@radix-ui/react-collection" "1.1.0" + "@radix-ui/react-compose-refs" "1.1.0" + "@radix-ui/react-context" "1.1.1" + "@radix-ui/react-direction" "1.1.0" + "@radix-ui/react-dismissable-layer" "1.1.1" + "@radix-ui/react-focus-guards" "1.1.1" + "@radix-ui/react-focus-scope" "1.1.0" + "@radix-ui/react-id" "1.1.0" + "@radix-ui/react-popper" "1.2.0" + "@radix-ui/react-portal" "1.1.2" + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-slot" "1.1.0" + "@radix-ui/react-use-callback-ref" "1.1.0" + "@radix-ui/react-use-controllable-state" "1.1.0" + "@radix-ui/react-use-layout-effect" "1.1.0" + "@radix-ui/react-use-previous" "1.1.0" + "@radix-ui/react-visually-hidden" "1.1.0" + aria-hidden "^1.1.1" + react-remove-scroll "2.6.0" + +"@radix-ui/react-slot@1.1.0", "@radix-ui/react-slot@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-slot/-/react-slot-1.1.0.tgz#7c5e48c36ef5496d97b08f1357bb26ed7c714b84" + integrity sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw== + dependencies: + "@radix-ui/react-compose-refs" "1.1.0" + +"@radix-ui/react-use-callback-ref@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz#bce938ca413675bc937944b0d01ef6f4a6dc5bf1" + integrity sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw== + +"@radix-ui/react-use-controllable-state@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz#1321446857bb786917df54c0d4d084877aab04b0" + integrity sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw== + dependencies: + "@radix-ui/react-use-callback-ref" "1.1.0" + +"@radix-ui/react-use-escape-keydown@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.0.tgz#31a5b87c3b726504b74e05dac1edce7437b98754" + integrity sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw== + dependencies: + "@radix-ui/react-use-callback-ref" "1.1.0" + +"@radix-ui/react-use-layout-effect@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz#3c2c8ce04827b26a39e442ff4888d9212268bd27" + integrity sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w== + +"@radix-ui/react-use-previous@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-previous/-/react-use-previous-1.1.0.tgz#d4dd37b05520f1d996a384eb469320c2ada8377c" + integrity sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og== + +"@radix-ui/react-use-rect@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-rect/-/react-use-rect-1.1.0.tgz#13b25b913bd3e3987cc9b073a1a164bb1cf47b88" + integrity sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ== + dependencies: + "@radix-ui/rect" "1.1.0" + +"@radix-ui/react-use-size@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-size/-/react-use-size-1.1.0.tgz#b4dba7fbd3882ee09e8d2a44a3eed3a7e555246b" + integrity sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw== + dependencies: + "@radix-ui/react-use-layout-effect" "1.1.0" + +"@radix-ui/react-visually-hidden@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.1.0.tgz#ad47a8572580f7034b3807c8e6740cd41038a5a2" + integrity sha512-N8MDZqtgCgG5S3aV60INAB475osJousYpZ4cTJ2cFbMpdHS5Y6loLTH8LPtkj2QN0x93J30HT/M3qJXM0+lyeQ== + dependencies: + "@radix-ui/react-primitive" "2.0.0" + +"@radix-ui/rect@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/rect/-/rect-1.1.0.tgz#f817d1d3265ac5415dadc67edab30ae196696438" + integrity sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg== + +"@rtsao/scc@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@rtsao/scc/-/scc-1.1.0.tgz#927dd2fae9bc3361403ac2c7a00c32ddce9ad7e8" + integrity sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g== + +"@rushstack/eslint-patch@^1.10.3": + version "1.10.4" + resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.10.4.tgz#427d5549943a9c6fce808e39ea64dbe60d4047f1" + integrity sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA== + +"@swc/counter@0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9" + integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== + +"@swc/helpers@0.5.13": + version "0.5.13" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.13.tgz#33e63ff3cd0cade557672bd7888a39ce7d115a8c" + integrity sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w== + dependencies: + tslib "^2.4.0" + +"@types/canvas-confetti@^1.6.4": + version "1.6.4" + resolved "https://registry.yarnpkg.com/@types/canvas-confetti/-/canvas-confetti-1.6.4.tgz#620fd8d78b335d6a4046c0f73236d6988b37552a" + integrity sha512-fNyZ/Fdw/Y92X0vv7B+BD6ysHL4xVU5dJcgzgxLdGbn8O3PezZNIJpml44lKM0nsGur+o/6+NZbZeNTt00U1uA== + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== + +"@types/node@^20": + version "20.17.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.17.6.tgz#6e4073230c180d3579e8c60141f99efdf5df0081" + integrity sha512-VEI7OdvK2wP7XHnsuXbAJnEpEkF6NjSN45QJlL4VGqZSXsnicpesdTWsg9RISeSdYd3yeRj/y3k5KGjUXYnFwQ== + dependencies: + undici-types "~6.19.2" + +"@types/prop-types@*": + version "15.7.13" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.13.tgz#2af91918ee12d9d32914feb13f5326658461b451" + integrity sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA== + +"@types/react-dom@^18": + version "18.3.1" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.3.1.tgz#1e4654c08a9cdcfb6594c780ac59b55aad42fe07" + integrity sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ== + dependencies: + "@types/react" "*" + +"@types/react@*", "@types/react@^18": + version "18.3.12" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.12.tgz#99419f182ccd69151813b7ee24b792fe08774f60" + integrity sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw== + dependencies: + "@types/prop-types" "*" + csstype "^3.0.2" + +"@typescript-eslint/eslint-plugin@^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0": + version "8.15.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.15.0.tgz#c95c6521e70c8b095a684d884d96c0c1c63747d2" + integrity sha512-+zkm9AR1Ds9uLWN3fkoeXgFppaQ+uEVtfOV62dDmsy9QCNqlRHWNEck4yarvRNrvRcHQLGfqBNui3cimoz8XAg== + dependencies: + "@eslint-community/regexpp" "^4.10.0" + "@typescript-eslint/scope-manager" "8.15.0" + "@typescript-eslint/type-utils" "8.15.0" + "@typescript-eslint/utils" "8.15.0" + "@typescript-eslint/visitor-keys" "8.15.0" + graphemer "^1.4.0" + ignore "^5.3.1" + natural-compare "^1.4.0" + ts-api-utils "^1.3.0" + +"@typescript-eslint/parser@^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0": + version "8.15.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.15.0.tgz#92610da2b3af702cfbc02a46e2a2daa6260a9045" + integrity sha512-7n59qFpghG4uazrF9qtGKBZXn7Oz4sOMm8dwNWDQY96Xlm2oX67eipqcblDj+oY1lLCbf1oltMZFpUso66Kl1A== + dependencies: + "@typescript-eslint/scope-manager" "8.15.0" + "@typescript-eslint/types" "8.15.0" + "@typescript-eslint/typescript-estree" "8.15.0" + "@typescript-eslint/visitor-keys" "8.15.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@8.15.0": + version "8.15.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.15.0.tgz#28a1a0f13038f382424f45a988961acaca38f7c6" + integrity sha512-QRGy8ADi4J7ii95xz4UoiymmmMd/zuy9azCaamnZ3FM8T5fZcex8UfJcjkiEZjJSztKfEBe3dZ5T/5RHAmw2mA== + dependencies: + "@typescript-eslint/types" "8.15.0" + "@typescript-eslint/visitor-keys" "8.15.0" + +"@typescript-eslint/type-utils@8.15.0": + version "8.15.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.15.0.tgz#a6da0f93aef879a68cc66c73fe42256cb7426c72" + integrity sha512-UU6uwXDoI3JGSXmcdnP5d8Fffa2KayOhUUqr/AiBnG1Gl7+7ut/oyagVeSkh7bxQ0zSXV9ptRh/4N15nkCqnpw== + dependencies: + "@typescript-eslint/typescript-estree" "8.15.0" + "@typescript-eslint/utils" "8.15.0" + debug "^4.3.4" + ts-api-utils "^1.3.0" + +"@typescript-eslint/types@8.15.0": + version "8.15.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.15.0.tgz#4958edf3d83e97f77005f794452e595aaf6430fc" + integrity sha512-n3Gt8Y/KyJNe0S3yDCD2RVKrHBC4gTUcLTebVBXacPy091E6tNspFLKRXlk3hwT4G55nfr1n2AdFqi/XMxzmPQ== + +"@typescript-eslint/typescript-estree@8.15.0": + version "8.15.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.15.0.tgz#915c94e387892b114a2a2cc0df2d7f19412c8ba7" + integrity sha512-1eMp2JgNec/niZsR7ioFBlsh/Fk0oJbhaqO0jRyQBMgkz7RrFfkqF9lYYmBoGBaSiLnu8TAPQTwoTUiSTUW9dg== + dependencies: + "@typescript-eslint/types" "8.15.0" + "@typescript-eslint/visitor-keys" "8.15.0" + debug "^4.3.4" + fast-glob "^3.3.2" + is-glob "^4.0.3" + minimatch "^9.0.4" + semver "^7.6.0" + ts-api-utils "^1.3.0" + +"@typescript-eslint/utils@8.15.0": + version "8.15.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.15.0.tgz#ac04679ad19252776b38b81954b8e5a65567cef6" + integrity sha512-k82RI9yGhr0QM3Dnq+egEpz9qB6Un+WLYhmoNcvl8ltMEededhh7otBVVIDDsEEttauwdY/hQoSsOv13lxrFzQ== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@typescript-eslint/scope-manager" "8.15.0" + "@typescript-eslint/types" "8.15.0" + "@typescript-eslint/typescript-estree" "8.15.0" + +"@typescript-eslint/visitor-keys@8.15.0": + version "8.15.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.15.0.tgz#9ea5a85eb25401d2aa74ec8a478af4e97899ea12" + integrity sha512-h8vYOulWec9LhpwfAdZf2bjr8xIp0KNKnpgqSz0qqYYKAW/QZKw3ktRndbiAtUz4acH4QLQavwZBYCc0wulA/Q== + dependencies: + "@typescript-eslint/types" "8.15.0" + eslint-visitor-keys "^4.2.0" + +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn@^8.9.0: + version "8.14.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0" + integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== + +ajv-formats@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-3.0.1.tgz#3d5dc762bca17679c3c2ea7e90ad6b7532309578" + integrity sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ== + dependencies: + ajv "^8.0.0" + +ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^8.0.0: + version "8.17.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6" + integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== + dependencies: + fast-deep-equal "^3.1.3" + fast-uri "^3.0.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654" + integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + +any-promise@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +arg@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" + integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +aria-hidden@^1.1.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/aria-hidden/-/aria-hidden-1.2.4.tgz#b78e383fdbc04d05762c78b4a25a501e736c4522" + integrity sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A== + dependencies: + tslib "^2.0.0" + +aria-query@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.2.tgz#93f81a43480e33a338f19163a3d10a50c01dcd59" + integrity sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw== + +array-buffer-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f" + integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg== + dependencies: + call-bind "^1.0.5" + is-array-buffer "^3.0.4" + +array-includes@^3.1.6, array-includes@^3.1.8: + version "3.1.8" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.8.tgz#5e370cbe172fdd5dd6530c1d4aadda25281ba97d" + integrity sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-object-atoms "^1.0.0" + get-intrinsic "^1.2.4" + is-string "^1.0.7" + +array.prototype.findlast@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz#3e4fbcb30a15a7f5bf64cf2faae22d139c2e4904" + integrity sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + es-shim-unscopables "^1.0.2" + +array.prototype.findlastindex@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz#8c35a755c72908719453f87145ca011e39334d0d" + integrity sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + es-shim-unscopables "^1.0.2" + +array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" + integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +array.prototype.flatmap@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" + integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +array.prototype.tosorted@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz#fe954678ff53034e717ea3352a03f0b0b86f7ffc" + integrity sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.3" + es-errors "^1.3.0" + es-shim-unscopables "^1.0.2" + +arraybuffer.prototype.slice@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#097972f4255e41bc3425e37dc3f6421cf9aefde6" + integrity sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A== + dependencies: + array-buffer-byte-length "^1.0.1" + call-bind "^1.0.5" + define-properties "^1.2.1" + es-abstract "^1.22.3" + es-errors "^1.2.1" + get-intrinsic "^1.2.3" + is-array-buffer "^3.0.4" + is-shared-array-buffer "^1.0.2" + +ast-types-flow@^0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.8.tgz#0a85e1c92695769ac13a428bb653e7538bea27d6" + integrity sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ== + +attr-accept@^2.2.4: + version "2.2.5" + resolved "https://registry.yarnpkg.com/attr-accept/-/attr-accept-2.2.5.tgz#d7061d958e6d4f97bf8665c68b75851a0713ab5e" + integrity sha512-0bDNnY/u6pPwHDMoF0FieU354oBi0a8rD9FcsLwzcGWbc8KS8KPIi7y+s13OlVY+gMWc/9xEMUgNE6Qm8ZllYQ== + +available-typed-arrays@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" + integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== + dependencies: + possible-typed-array-names "^1.0.0" + +axe-core@^4.10.0: + version "4.10.2" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.10.2.tgz#85228e3e1d8b8532a27659b332e39b7fa0e022df" + integrity sha512-RE3mdQ7P3FRSe7eqCWoeQ/Z9QXrtniSjp1wUjt5nRC3WIpz5rSCve6o3fsZ2aCpJtrZjSZgjwXAoTO5k4tEI0w== + +axobject-query@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-4.1.0.tgz#28768c76d0e3cff21bc62a9e2d0b6ac30042a1ee" + integrity sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ== + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +binary-extensions@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" + integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.3, braces@~3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +busboy@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" + integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== + dependencies: + streamsearch "^1.1.0" + +call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" + integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + set-function-length "^1.2.1" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase-css@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" + integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== + +caniuse-lite@^1.0.30001579: + version "1.0.30001683" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001683.tgz#7f026a2d5d319a9cf8915a1451173052caaadc81" + integrity sha512-iqmNnThZ0n70mNwvxpEC2nBJ037ZHZUoBI5Gorh1Mw6IlEAZujEoU1tXA628iZfzm7R9FvFzxbfdgml82a3k8Q== + +canvas-confetti@^1.9.3: + version "1.9.3" + resolved "https://registry.yarnpkg.com/canvas-confetti/-/canvas-confetti-1.9.3.tgz#ef4c857420ad8045ab4abe8547261c8cdf229845" + integrity sha512-rFfTURMvmVEX1gyXFgn5QMn81bYk70qa0HLzcIOSVEyl57n6o9ItHeBtUSWdvKAPY0xlvBHno4/v3QPrT83q9g== + +chalk@^4.0.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chokidar@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +class-variance-authority@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/class-variance-authority/-/class-variance-authority-0.7.0.tgz#1c3134d634d80271b1837452b06d821915954522" + integrity sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A== + dependencies: + clsx "2.0.0" + +client-only@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/client-only/-/client-only-0.0.1.tgz#38bba5d403c41ab150bff64a95c85013cf73bca1" + integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA== + +clsx@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.0.0.tgz#12658f3fd98fafe62075595a5c30e43d18f3d00b" + integrity sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q== + +clsx@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.1.tgz#eed397c9fd8bd882bfb18deab7102049a2f32999" + integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA== + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@^1.0.0, color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-string@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" + integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/color/-/color-4.2.3.tgz#d781ecb5e57224ee43ea9627560107c0e0c6463a" + integrity sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A== + dependencies: + color-convert "^2.0.1" + color-string "^1.9.0" + +commander@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +cross-spawn@^7.0.0, cross-spawn@^7.0.2: + version "7.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +csstype@^3.0.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" + integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== + +damerau-levenshtein@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" + integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== + +data-view-buffer@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.1.tgz#8ea6326efec17a2e42620696e671d7d5a8bc66b2" + integrity sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + is-data-view "^1.0.1" + +data-view-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz#90721ca95ff280677eb793749fce1011347669e2" + integrity sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + is-data-view "^1.0.1" + +data-view-byte-offset@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz#5e0bbfb4828ed2d1b9b400cd8a7d119bca0ff18a" + integrity sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + is-data-view "^1.0.1" + +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5: + version "4.3.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" + integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== + dependencies: + ms "^2.1.3" + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +define-data-property@^1.0.1, define-data-property@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + +define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +detect-libc@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700" + integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw== + +detect-node-es@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/detect-node-es/-/detect-node-es-1.1.0.tgz#163acdf643330caa0b4cd7c21e7ee7755d6fa493" + integrity sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ== + +didyoumean@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" + integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== + +dlv@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" + integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +enhanced-resolve@^5.15.0: + version "5.17.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz#67bfbbcc2f81d511be77d686a90267ef7f898a15" + integrity sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + +es-abstract@^1.17.5, es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.1, es-abstract@^1.23.2, es-abstract@^1.23.3: + version "1.23.5" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.5.tgz#f4599a4946d57ed467515ed10e4f157289cd52fb" + integrity sha512-vlmniQ0WNPwXqA0BnmwV3Ng7HxiGlh6r5U6JcTMNx8OilcAGqVJBHJcPjqOMaczU9fRuRK5Px2BdVyPRnKMMVQ== + dependencies: + array-buffer-byte-length "^1.0.1" + arraybuffer.prototype.slice "^1.0.3" + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" + data-view-buffer "^1.0.1" + data-view-byte-length "^1.0.1" + data-view-byte-offset "^1.0.0" + es-define-property "^1.0.0" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + es-set-tostringtag "^2.0.3" + es-to-primitive "^1.2.1" + function.prototype.name "^1.1.6" + get-intrinsic "^1.2.4" + get-symbol-description "^1.0.2" + globalthis "^1.0.4" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + has-proto "^1.0.3" + has-symbols "^1.0.3" + hasown "^2.0.2" + internal-slot "^1.0.7" + is-array-buffer "^3.0.4" + is-callable "^1.2.7" + is-data-view "^1.0.1" + is-negative-zero "^2.0.3" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.3" + is-string "^1.0.7" + is-typed-array "^1.1.13" + is-weakref "^1.0.2" + object-inspect "^1.13.3" + object-keys "^1.1.1" + object.assign "^4.1.5" + regexp.prototype.flags "^1.5.3" + safe-array-concat "^1.1.2" + safe-regex-test "^1.0.3" + string.prototype.trim "^1.2.9" + string.prototype.trimend "^1.0.8" + string.prototype.trimstart "^1.0.8" + typed-array-buffer "^1.0.2" + typed-array-byte-length "^1.0.1" + typed-array-byte-offset "^1.0.2" + typed-array-length "^1.0.6" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.15" + +es-define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" + integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== + dependencies: + get-intrinsic "^1.2.4" + +es-errors@^1.2.1, es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + +es-iterator-helpers@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.2.0.tgz#2f1a3ab998b30cb2d10b195b587c6d9ebdebf152" + integrity sha512-tpxqxncxnpw3c93u8n3VOzACmRFoVmWJqbWXvX/JfKbkhBw1oslgPrUfeSt2psuqyEJFD6N/9lg5i7bsKpoq+Q== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.3" + es-errors "^1.3.0" + es-set-tostringtag "^2.0.3" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + globalthis "^1.0.4" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + has-proto "^1.0.3" + has-symbols "^1.0.3" + internal-slot "^1.0.7" + iterator.prototype "^1.1.3" + safe-array-concat "^1.1.2" + +es-object-atoms@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz#ddb55cd47ac2e240701260bc2a8e31ecb643d941" + integrity sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw== + dependencies: + es-errors "^1.3.0" + +es-set-tostringtag@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#8bb60f0a440c2e4281962428438d58545af39777" + integrity sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ== + dependencies: + get-intrinsic "^1.2.4" + has-tostringtag "^1.0.2" + hasown "^2.0.1" + +es-shim-unscopables@^1.0.0, es-shim-unscopables@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" + integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== + dependencies: + hasown "^2.0.0" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eslint-config-next@15.0.3: + version "15.0.3" + resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-15.0.3.tgz#b483585260d5e55050d4ab87e053c88089ae12ee" + integrity sha512-IGP2DdQQrgjcr4mwFPve4DrCqo7CVVez1WoYY47XwKSrYO4hC0Dlb+iJA60i0YfICOzgNADIb8r28BpQ5Zs0wg== + dependencies: + "@next/eslint-plugin-next" "15.0.3" + "@rushstack/eslint-patch" "^1.10.3" + "@typescript-eslint/eslint-plugin" "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0" + "@typescript-eslint/parser" "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0" + eslint-import-resolver-node "^0.3.6" + eslint-import-resolver-typescript "^3.5.2" + eslint-plugin-import "^2.31.0" + eslint-plugin-jsx-a11y "^6.10.0" + eslint-plugin-react "^7.35.0" + eslint-plugin-react-hooks "^5.0.0" + +eslint-import-resolver-node@^0.3.6, eslint-import-resolver-node@^0.3.9: + version "0.3.9" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" + integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== + dependencies: + debug "^3.2.7" + is-core-module "^2.13.0" + resolve "^1.22.4" + +eslint-import-resolver-typescript@^3.5.2: + version "3.6.3" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.3.tgz#bb8e388f6afc0f940ce5d2c5fd4a3d147f038d9e" + integrity sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA== + dependencies: + "@nolyfill/is-core-module" "1.0.39" + debug "^4.3.5" + enhanced-resolve "^5.15.0" + eslint-module-utils "^2.8.1" + fast-glob "^3.3.2" + get-tsconfig "^4.7.5" + is-bun-module "^1.0.2" + is-glob "^4.0.3" + +eslint-module-utils@^2.12.0, eslint-module-utils@^2.8.1: + version "2.12.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz#fe4cfb948d61f49203d7b08871982b65b9af0b0b" + integrity sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg== + dependencies: + debug "^3.2.7" + +eslint-plugin-import@^2.31.0: + version "2.31.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz#310ce7e720ca1d9c0bb3f69adfd1c6bdd7d9e0e7" + integrity sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A== + dependencies: + "@rtsao/scc" "^1.1.0" + array-includes "^3.1.8" + array.prototype.findlastindex "^1.2.5" + array.prototype.flat "^1.3.2" + array.prototype.flatmap "^1.3.2" + debug "^3.2.7" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.9" + eslint-module-utils "^2.12.0" + hasown "^2.0.2" + is-core-module "^2.15.1" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.fromentries "^2.0.8" + object.groupby "^1.0.3" + object.values "^1.2.0" + semver "^6.3.1" + string.prototype.trimend "^1.0.8" + tsconfig-paths "^3.15.0" + +eslint-plugin-jsx-a11y@^6.10.0: + version "6.10.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz#d2812bb23bf1ab4665f1718ea442e8372e638483" + integrity sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q== + dependencies: + aria-query "^5.3.2" + array-includes "^3.1.8" + array.prototype.flatmap "^1.3.2" + ast-types-flow "^0.0.8" + axe-core "^4.10.0" + axobject-query "^4.1.0" + damerau-levenshtein "^1.0.8" + emoji-regex "^9.2.2" + hasown "^2.0.2" + jsx-ast-utils "^3.3.5" + language-tags "^1.0.9" + minimatch "^3.1.2" + object.fromentries "^2.0.8" + safe-regex-test "^1.0.3" + string.prototype.includes "^2.0.1" + +eslint-plugin-react-hooks@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.0.0.tgz#72e2eefbac4b694f5324154619fee44f5f60f101" + integrity sha512-hIOwI+5hYGpJEc4uPRmz2ulCjAGD/N13Lukkh8cLV0i2IRk/bdZDYjgLVHj+U9Z704kLIdIO6iueGvxNur0sgw== + +eslint-plugin-react@^7.35.0: + version "7.37.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.37.2.tgz#cd0935987876ba2900df2f58339f6d92305acc7a" + integrity sha512-EsTAnj9fLVr/GZleBLFbj/sSuXeWmp1eXIN60ceYnZveqEaUCyW4X+Vh4WTdUhCkW4xutXYqTXCUSyqD4rB75w== + dependencies: + array-includes "^3.1.8" + array.prototype.findlast "^1.2.5" + array.prototype.flatmap "^1.3.2" + array.prototype.tosorted "^1.1.4" + doctrine "^2.1.0" + es-iterator-helpers "^1.1.0" + estraverse "^5.3.0" + hasown "^2.0.2" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.1.2" + object.entries "^1.1.8" + object.fromentries "^2.0.8" + object.values "^1.2.0" + prop-types "^15.8.1" + resolve "^2.0.0-next.5" + semver "^6.3.1" + string.prototype.matchall "^4.0.11" + string.prototype.repeat "^1.0.0" + +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint-visitor-keys@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz#687bacb2af884fcdda8a6e7d65c606f46a14cd45" + integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw== + +eslint@^8: + version "8.57.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.1.tgz#7df109654aba7e3bbe5c8eae533c5e461d3c6ca9" + integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.57.1" + "@humanwhocodes/config-array" "^0.13.0" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" + +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== + dependencies: + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" + +esquery@^1.4.2: + version "1.6.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" + integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" + integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-glob@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fast-uri@^3.0.1: + version "3.0.3" + resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.3.tgz#892a1c91802d5d7860de728f18608a0573142241" + integrity sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw== + +fastq@^1.6.0: + version "1.17.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" + integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== + dependencies: + reusify "^1.0.4" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +file-selector@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/file-selector/-/file-selector-2.1.0.tgz#beb164ca5ce48af8a48d3e632c94750bc573581a" + integrity sha512-ZuXAqGePcSPz4JuerOY06Dzzq0hrmQ6VGoXVzGyFI1npeOfBgqGIKKpznfYWRkSLJlXutkqVC5WvGZtkFVhu9Q== + dependencies: + tslib "^2.7.0" + +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat-cache@^3.0.4: + version "3.2.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" + integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== + dependencies: + flatted "^3.2.9" + keyv "^4.5.3" + rimraf "^3.0.2" + +flatted@^3.2.9: + version "3.3.2" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.2.tgz#adba1448a9841bec72b42c532ea23dbbedef1a27" + integrity sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA== + +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + +foreground-child@^3.1.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.0.tgz#0ac8644c06e431439f8561db8ecf29a7b5519c77" + integrity sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +function.prototype.name@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" + integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + functions-have-names "^1.2.3" + +functions-have-names@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + +get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" + integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + +get-nonce@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3" + integrity sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q== + +get-symbol-description@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.2.tgz#533744d5aa20aca4e079c8e5daf7fd44202821f5" + integrity sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg== + dependencies: + call-bind "^1.0.5" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + +get-tsconfig@^4.7.5: + version "4.8.1" + resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.8.1.tgz#8995eb391ae6e1638d251118c7b56de7eb425471" + integrity sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg== + dependencies: + resolve-pkg-maps "^1.0.0" + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob@^10.3.10: + version "10.4.5" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" + integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== + dependencies: + foreground-child "^3.1.0" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^1.11.1" + +glob@^7.1.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^13.19.0: + version "13.24.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== + dependencies: + type-fest "^0.20.2" + +globalthis@^1.0.3, globalthis@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236" + integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ== + dependencies: + define-properties "^1.2.1" + gopd "^1.0.1" + +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + +graceful-fs@^4.2.4: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== + dependencies: + es-define-property "^1.0.0" + +has-proto@^1.0.1, has-proto@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" + integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== + +has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0, has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== + dependencies: + has-symbols "^1.0.3" + +hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +ignore@^5.2.0, ignore@^5.3.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" + integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== + +import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +internal-slot@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802" + integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g== + dependencies: + es-errors "^1.3.0" + hasown "^2.0.0" + side-channel "^1.0.4" + +invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +is-array-buffer@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98" + integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + +is-async-function@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.0.0.tgz#8e4418efd3e5d3a6ebb0164c05ef5afb69aa9646" + integrity sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA== + dependencies: + has-tostringtag "^1.0.0" + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-bun-module@^1.0.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-bun-module/-/is-bun-module-1.2.1.tgz#495e706f42e29f086fd5fe1ac3c51f106062b9fc" + integrity sha512-AmidtEM6D6NmUiLOvvU7+IePxjEjOzra2h0pSrsfSAcXwl/83zLLXDByafUJy9k/rKK0pvXMLdwKwGHlX2Ke6Q== + dependencies: + semver "^7.6.3" + +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + +is-core-module@^2.13.0, is-core-module@^2.15.1: + version "2.15.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.1.tgz#a7363a25bee942fefab0de13bf6aa372c82dcc37" + integrity sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ== + dependencies: + hasown "^2.0.2" + +is-data-view@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-data-view/-/is-data-view-1.0.1.tgz#4b4d3a511b70f3dc26d42c03ca9ca515d847759f" + integrity sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w== + dependencies: + is-typed-array "^1.1.13" + +is-date-object@^1.0.1, is-date-object@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-finalizationregistry@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz#c8749b65f17c133313e661b1289b95ad3dbd62e6" + integrity sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw== + dependencies: + call-bind "^1.0.2" + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-function@^1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + dependencies: + has-tostringtag "^1.0.0" + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-map@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.3.tgz#ede96b7fe1e270b3c4465e3a465658764926d62e" + integrity sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw== + +is-negative-zero@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747" + integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== + +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-set@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.3.tgz#8ab209ea424608141372ded6e0cb200ef1d9d01d" + integrity sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg== + +is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz#1237f1cba059cdb62431d378dcc37d9680181688" + integrity sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg== + dependencies: + call-bind "^1.0.7" + +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-typed-array@^1.1.13: + version "1.1.13" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" + integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== + dependencies: + which-typed-array "^1.1.14" + +is-weakmap@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.2.tgz#bf72615d649dfe5f699079c54b83e47d1ae19cfd" + integrity sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w== + +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + +is-weakset@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.3.tgz#e801519df8c0c43e12ff2834eead84ec9e624007" + integrity sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ== + dependencies: + call-bind "^1.0.7" + get-intrinsic "^1.2.4" + +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +iterator.prototype@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.3.tgz#016c2abe0be3bbdb8319852884f60908ac62bf9c" + integrity sha512-FW5iMbeQ6rBGm/oKgzq2aW4KvAGpxPzYES8N4g4xNXUKpL1mclMvOe+76AcLDTvD+Ze+sOpVhgdAQEKF4L9iGQ== + dependencies: + define-properties "^1.2.1" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + reflect.getprototypeof "^1.0.4" + set-function-name "^2.0.1" + +jackspeak@^3.1.2: + version "3.4.3" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" + integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + +jiti@^1.21.6: + version "1.21.6" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.6.tgz#6c7f7398dd4b3142767f9a168af2f317a428d268" + integrity sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w== + +"js-tokens@^3.0.0 || ^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +json5@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== + dependencies: + minimist "^1.2.0" + +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.5: + version "3.3.5" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a" + integrity sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ== + dependencies: + array-includes "^3.1.6" + array.prototype.flat "^1.3.1" + object.assign "^4.1.4" + object.values "^1.1.6" + +jwt-decode@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-4.0.0.tgz#2270352425fd413785b2faf11f6e755c5151bd4b" + integrity sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA== + +keyv@^4.5.3: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + +language-subtag-registry@^0.3.20: + version "0.3.23" + resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz#23529e04d9e3b74679d70142df3fd2eb6ec572e7" + integrity sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ== + +language-tags@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.9.tgz#1ffdcd0ec0fafb4b1be7f8b11f306ad0f9c08777" + integrity sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA== + dependencies: + language-subtag-registry "^0.3.20" + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +lilconfig@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" + integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== + +lilconfig@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.2.tgz#e4a7c3cb549e3a606c8dcc32e5ae1005e62c05cb" + integrity sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow== + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +loose-envify@^1.0.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lru-cache@^10.2.0: + version "10.4.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" + integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== + +lucide-react@^0.460.0: + version "0.460.0" + resolved "https://registry.yarnpkg.com/lucide-react/-/lucide-react-0.460.0.tgz#5681364b6bd94d1d475944f0385239c0b1408e35" + integrity sha512-BVtq/DykVeIvRTJvRAgCsOwaGL8Un3Bxh8MbDxMhEWlZay3T4IpEKDEpwt5KZ0KJMHzgm6jrltxlT5eXOWXDHg== + +merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^4.0.4, micromatch@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + +minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^9.0.4: + version "9.0.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + +minimist@^1.2.0, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + +ms@^2.1.1, ms@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +mz@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + +nanoid@^3.3.6, nanoid@^3.3.7: + version "3.3.7" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +next@^15.0.3: + version "15.0.3" + resolved "https://registry.yarnpkg.com/next/-/next-15.0.3.tgz#804f5b772e7570ef1f088542a59860914d3288e9" + integrity sha512-ontCbCRKJUIoivAdGB34yCaOcPgYXr9AAkV/IwqFfWWTXEPUgLYkSkqBhIk9KK7gGmgjc64B+RdoeIDM13Irnw== + dependencies: + "@next/env" "15.0.3" + "@swc/counter" "0.1.3" + "@swc/helpers" "0.5.13" + busboy "1.6.0" + caniuse-lite "^1.0.30001579" + postcss "8.4.31" + styled-jsx "5.1.6" + optionalDependencies: + "@next/swc-darwin-arm64" "15.0.3" + "@next/swc-darwin-x64" "15.0.3" + "@next/swc-linux-arm64-gnu" "15.0.3" + "@next/swc-linux-arm64-musl" "15.0.3" + "@next/swc-linux-x64-gnu" "15.0.3" + "@next/swc-linux-x64-musl" "15.0.3" + "@next/swc-win32-arm64-msvc" "15.0.3" + "@next/swc-win32-x64-msvc" "15.0.3" + sharp "^0.33.5" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +object-assign@^4.0.1, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-hash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" + integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== + +object-inspect@^1.13.1, object-inspect@^1.13.3: + version "1.13.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.3.tgz#f14c183de51130243d6d18ae149375ff50ea488a" + integrity sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA== + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.4, object.assign@^4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" + integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== + dependencies: + call-bind "^1.0.5" + define-properties "^1.2.1" + has-symbols "^1.0.3" + object-keys "^1.1.1" + +object.entries@^1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.8.tgz#bffe6f282e01f4d17807204a24f8edd823599c41" + integrity sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + +object.fromentries@^2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.8.tgz#f7195d8a9b97bd95cbc1999ea939ecd1a2b00c65" + integrity sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-object-atoms "^1.0.0" + +object.groupby@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.3.tgz#9b125c36238129f6f7b61954a1e7176148d5002e" + integrity sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + +object.values@^1.1.6, object.values@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.0.tgz#65405a9d92cee68ac2d303002e0b8470a4d9ab1b" + integrity sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +optionator@^0.9.3: + version "0.9.4" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" + integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.5" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +package-json-from-dist@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" + integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-scurry@^1.11.1: + version "1.11.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" + integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== + dependencies: + lru-cache "^10.2.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + +picocolors@^1.0.0, picocolors@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + +pirates@^4.0.1: + version "4.0.6" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" + integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== + +possible-typed-array-names@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" + integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== + +postcss-import@^15.1.0: + version "15.1.0" + resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-15.1.0.tgz#41c64ed8cc0e23735a9698b3249ffdbf704adc70" + integrity sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew== + dependencies: + postcss-value-parser "^4.0.0" + read-cache "^1.0.0" + resolve "^1.1.7" + +postcss-js@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2" + integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== + dependencies: + camelcase-css "^2.0.1" + +postcss-load-config@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-4.0.2.tgz#7159dcf626118d33e299f485d6afe4aff7c4a3e3" + integrity sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ== + dependencies: + lilconfig "^3.0.0" + yaml "^2.3.4" + +postcss-nested@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.2.0.tgz#4c2d22ab5f20b9cb61e2c5c5915950784d068131" + integrity sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ== + dependencies: + postcss-selector-parser "^6.1.1" + +postcss-selector-parser@^6.1.1, postcss-selector-parser@^6.1.2: + version "6.1.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz#27ecb41fb0e3b6ba7a1ec84fff347f734c7929de" + integrity sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-value-parser@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@8.4.31: + version "8.4.31" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" + integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== + dependencies: + nanoid "^3.3.6" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +postcss@^8, postcss@^8.4.47: + version "8.4.49" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.49.tgz#4ea479048ab059ab3ae61d082190fabfd994fe19" + integrity sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA== + dependencies: + nanoid "^3.3.7" + picocolors "^1.1.1" + source-map-js "^1.2.1" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + +punycode@^2.1.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +react-dom@19.0.0-rc-66855b96-20241106: + version "19.0.0-rc-66855b96-20241106" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-19.0.0-rc-66855b96-20241106.tgz#beba73decfd1b9365a3c83673a298623b15acb0b" + integrity sha512-D25vdaytZ1wFIRiwNU98NPQ/upS2P8Co4/oNoa02PzHbh8deWdepjm5qwZM/46OdSiGv4WSWwxP55RO9obqJEQ== + dependencies: + scheduler "0.25.0-rc-66855b96-20241106" + +react-dropzone@^14.3.5: + version "14.3.5" + resolved "https://registry.yarnpkg.com/react-dropzone/-/react-dropzone-14.3.5.tgz#1a8bd312c8a353ec78ef402842ccb3589c225add" + integrity sha512-9nDUaEEpqZLOz5v5SUcFA0CjM4vq8YbqO0WRls+EYT7+DvxUdzDPKNCPLqGfj3YL9MsniCLCD4RFA6M95V6KMQ== + dependencies: + attr-accept "^2.2.4" + file-selector "^2.1.0" + prop-types "^15.8.1" + +react-is@^16.13.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-remove-scroll-bar@^2.3.6: + version "2.3.6" + resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz#3e585e9d163be84a010180b18721e851ac81a29c" + integrity sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g== + dependencies: + react-style-singleton "^2.2.1" + tslib "^2.0.0" + +react-remove-scroll@2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.6.0.tgz#fb03a0845d7768a4f1519a99fdb84983b793dc07" + integrity sha512-I2U4JVEsQenxDAKaVa3VZ/JeJZe0/2DxPWL8Tj8yLKctQJQiZM52pn/GWFpSp8dftjM3pSAHVJZscAnC/y+ySQ== + dependencies: + react-remove-scroll-bar "^2.3.6" + react-style-singleton "^2.2.1" + tslib "^2.1.0" + use-callback-ref "^1.3.0" + use-sidecar "^1.1.2" + +react-style-singleton@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/react-style-singleton/-/react-style-singleton-2.2.1.tgz#f99e420492b2d8f34d38308ff660b60d0b1205b4" + integrity sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g== + dependencies: + get-nonce "^1.0.0" + invariant "^2.2.4" + tslib "^2.0.0" + +react@19.0.0-rc-66855b96-20241106: + version "19.0.0-rc-66855b96-20241106" + resolved "https://registry.yarnpkg.com/react/-/react-19.0.0-rc-66855b96-20241106.tgz#f04d7283454a32bdd8e9757db4308b75b9739e56" + integrity sha512-klH7xkT71SxRCx4hb1hly5FJB21Hz0ACyxbXYAECEqssUjtJeFUAaI2U1DgJAzkGEnvEm3DkxuBchMC/9K4ipg== + +read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" + integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== + dependencies: + pify "^2.3.0" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +reflect.getprototypeof@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz#3ab04c32a8390b770712b7a8633972702d278859" + integrity sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.1" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + globalthis "^1.0.3" + which-builtin-type "^1.1.3" + +regexp.prototype.flags@^1.5.2, regexp.prototype.flags@^1.5.3: + version "1.5.3" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz#b3ae40b1d2499b8350ab2c3fe6ef3845d3a96f42" + integrity sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-errors "^1.3.0" + set-function-name "^2.0.2" + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-pkg-maps@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" + integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== + +resolve@^1.1.7, resolve@^1.22.4, resolve@^1.22.8: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +resolve@^2.0.0-next.5: + version "2.0.0-next.5" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c" + integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +safe-array-concat@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.2.tgz#81d77ee0c4e8b863635227c721278dd524c20edb" + integrity sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q== + dependencies: + call-bind "^1.0.7" + get-intrinsic "^1.2.4" + has-symbols "^1.0.3" + isarray "^2.0.5" + +safe-regex-test@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377" + integrity sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + is-regex "^1.1.4" + +scheduler@0.25.0-rc-66855b96-20241106: + version "0.25.0-rc-66855b96-20241106" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.25.0-rc-66855b96-20241106.tgz#8bbb728eca4de5a5deca1f18370fbce41aee91d1" + integrity sha512-HQXp/Mnp/MMRSXMQF7urNFla+gmtXW/Gr1KliuR0iboTit4KvZRY8KYaq5ccCTAOJiUqQh2rE2F3wgUekmgdlA== + +semver@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.6.0, semver@^7.6.3: + version "7.6.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== + +set-function-length@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" + integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + +set-function-name@^2.0.1, set-function-name@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985" + integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.2" + +sharp@^0.33.5: + version "0.33.5" + resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.33.5.tgz#13e0e4130cc309d6a9497596715240b2ec0c594e" + integrity sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw== + dependencies: + color "^4.2.3" + detect-libc "^2.0.3" + semver "^7.6.3" + optionalDependencies: + "@img/sharp-darwin-arm64" "0.33.5" + "@img/sharp-darwin-x64" "0.33.5" + "@img/sharp-libvips-darwin-arm64" "1.0.4" + "@img/sharp-libvips-darwin-x64" "1.0.4" + "@img/sharp-libvips-linux-arm" "1.0.5" + "@img/sharp-libvips-linux-arm64" "1.0.4" + "@img/sharp-libvips-linux-s390x" "1.0.4" + "@img/sharp-libvips-linux-x64" "1.0.4" + "@img/sharp-libvips-linuxmusl-arm64" "1.0.4" + "@img/sharp-libvips-linuxmusl-x64" "1.0.4" + "@img/sharp-linux-arm" "0.33.5" + "@img/sharp-linux-arm64" "0.33.5" + "@img/sharp-linux-s390x" "0.33.5" + "@img/sharp-linux-x64" "0.33.5" + "@img/sharp-linuxmusl-arm64" "0.33.5" + "@img/sharp-linuxmusl-x64" "0.33.5" + "@img/sharp-wasm32" "0.33.5" + "@img/sharp-win32-ia32" "0.33.5" + "@img/sharp-win32-x64" "0.33.5" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +side-channel@^1.0.4, side-channel@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" + integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + object-inspect "^1.13.1" + +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== + dependencies: + is-arrayish "^0.3.1" + +sonner@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/sonner/-/sonner-1.7.0.tgz#f59a2a70e049a179b6fbd1bb1bf2619d5ced07c0" + integrity sha512-W6dH7m5MujEPyug3lpI2l3TC3Pp1+LTgK0Efg+IHDrBbtEjyCmCHHo6yfNBOsf1tFZ6zf+jceWwB38baC8yO9g== + +source-map-js@^1.0.2, source-map-js@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== + +streamsearch@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" + integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== + +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^4.1.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + +string.prototype.includes@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz#eceef21283640761a81dbe16d6c7171a4edf7d92" + integrity sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.3" + +string.prototype.matchall@^4.0.11: + version "4.0.11" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz#1092a72c59268d2abaad76582dccc687c0297e0a" + integrity sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + get-intrinsic "^1.2.4" + gopd "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.7" + regexp.prototype.flags "^1.5.2" + set-function-name "^2.0.2" + side-channel "^1.0.6" + +string.prototype.repeat@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz#e90872ee0308b29435aa26275f6e1b762daee01a" + integrity sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + +string.prototype.trim@^1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz#b6fa326d72d2c78b6df02f7759c73f8f6274faa4" + integrity sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.0" + es-object-atoms "^1.0.0" + +string.prototype.trimend@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz#3651b8513719e8a9f48de7f2f77640b26652b229" + integrity sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + +string.prototype.trimstart@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#7ee834dda8c7c17eff3118472bb35bfedaa34dde" + integrity sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + +strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +styled-jsx@5.1.6: + version "5.1.6" + resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.1.6.tgz#83b90c077e6c6a80f7f5e8781d0f311b2fe41499" + integrity sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA== + dependencies: + client-only "0.0.1" + +sucrase@^3.35.0: + version "3.35.0" + resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.35.0.tgz#57f17a3d7e19b36d8995f06679d121be914ae263" + integrity sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA== + dependencies: + "@jridgewell/gen-mapping" "^0.3.2" + commander "^4.0.0" + glob "^10.3.10" + lines-and-columns "^1.1.6" + mz "^2.7.0" + pirates "^4.0.1" + ts-interface-checker "^0.1.9" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +tailwind-merge@^2.5.4: + version "2.5.4" + resolved "https://registry.yarnpkg.com/tailwind-merge/-/tailwind-merge-2.5.4.tgz#4bf574e81fa061adeceba099ae4df56edcee78d1" + integrity sha512-0q8cfZHMu9nuYP/b5Shb7Y7Sh1B7Nnl5GqNr1U+n2p6+mybvRtayrQ+0042Z5byvTA8ihjlP8Odo8/VnHbZu4Q== + +tailwindcss-animate@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/tailwindcss-animate/-/tailwindcss-animate-1.0.7.tgz#318b692c4c42676cc9e67b19b78775742388bef4" + integrity sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA== + +tailwindcss@^3.4.1: + version "3.4.15" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.15.tgz#04808bf4bf1424b105047d19e7d4bfab368044a9" + integrity sha512-r4MeXnfBmSOuKUWmXe6h2CcyfzJCEk4F0pptO5jlnYSIViUkVmsawj80N5h2lO3gwcmSb4n3PuN+e+GC1Guylw== + dependencies: + "@alloc/quick-lru" "^5.2.0" + arg "^5.0.2" + chokidar "^3.6.0" + didyoumean "^1.2.2" + dlv "^1.1.3" + fast-glob "^3.3.2" + glob-parent "^6.0.2" + is-glob "^4.0.3" + jiti "^1.21.6" + lilconfig "^2.1.0" + micromatch "^4.0.8" + normalize-path "^3.0.0" + object-hash "^3.0.0" + picocolors "^1.1.1" + postcss "^8.4.47" + postcss-import "^15.1.0" + postcss-js "^4.0.1" + postcss-load-config "^4.0.2" + postcss-nested "^6.2.0" + postcss-selector-parser "^6.1.2" + resolve "^1.22.8" + sucrase "^3.35.0" + +tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.1" + resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" + integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== + dependencies: + any-promise "^1.0.0" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +ts-api-utils@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.4.0.tgz#709c6f2076e511a81557f3d07a0cbd566ae8195c" + integrity sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ== + +ts-interface-checker@^0.1.9: + version "0.1.13" + resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" + integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== + +tsconfig-paths@^3.15.0: + version "3.15.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" + integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + +tslib@^2.0.0, tslib@^2.1.0, tslib@^2.4.0, tslib@^2.7.0: + version "2.8.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +typed-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#1867c5d83b20fcb5ccf32649e5e2fc7424474ff3" + integrity sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + is-typed-array "^1.1.13" + +typed-array-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz#d92972d3cff99a3fa2e765a28fcdc0f1d89dec67" + integrity sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw== + dependencies: + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" + +typed-array-byte-offset@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz#f9ec1acb9259f395093e4567eb3c28a580d02063" + integrity sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" + +typed-array-length@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.6.tgz#57155207c76e64a3457482dfdc1c9d1d3c4c73a3" + integrity sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g== + dependencies: + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" + possible-typed-array-names "^1.0.0" + +typescript@^5: + version "5.6.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.6.3.tgz#5f3449e31c9d94febb17de03cc081dd56d81db5b" + integrity sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw== + +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + +undici-types@~6.19.2: + version "6.19.8" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" + integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +use-callback-ref@^1.3.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.3.2.tgz#6134c7f6ff76e2be0b56c809b17a650c942b1693" + integrity sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA== + dependencies: + tslib "^2.0.0" + +use-sidecar@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/use-sidecar/-/use-sidecar-1.1.2.tgz#2f43126ba2d7d7e117aa5855e5d8f0276dfe73c2" + integrity sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw== + dependencies: + detect-node-es "^1.1.0" + tslib "^2.0.0" + +util-deprecate@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which-builtin-type@^1.1.3: + version "1.1.4" + resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.1.4.tgz#592796260602fc3514a1b5ee7fa29319b72380c3" + integrity sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w== + dependencies: + function.prototype.name "^1.1.6" + has-tostringtag "^1.0.2" + is-async-function "^2.0.0" + is-date-object "^1.0.5" + is-finalizationregistry "^1.0.2" + is-generator-function "^1.0.10" + is-regex "^1.1.4" + is-weakref "^1.0.2" + isarray "^2.0.5" + which-boxed-primitive "^1.0.2" + which-collection "^1.0.2" + which-typed-array "^1.1.15" + +which-collection@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.2.tgz#627ef76243920a107e7ce8e96191debe4b16c2a0" + integrity sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw== + dependencies: + is-map "^2.0.3" + is-set "^2.0.3" + is-weakmap "^2.0.2" + is-weakset "^2.0.3" + +which-typed-array@^1.1.14, which-typed-array@^1.1.15: + version "1.1.15" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" + integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.2" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +word-wrap@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" + integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +yaml@^2.3.4: + version "2.6.1" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.6.1.tgz#42f2b1ba89203f374609572d5349fb8686500773" + integrity sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== diff --git a/packages/vc-test-suite/tsconfig.json b/packages/vc-test-suite/tsconfig.json index e7d4968b..ce33053e 100644 --- a/packages/vc-test-suite/tsconfig.json +++ b/packages/vc-test-suite/tsconfig.json @@ -9,7 +9,7 @@ "noImplicitThis": false, "noImplicitAny": false, "resolveJsonModule": true, - "moduleResolution": "Node" + "moduleResolution": "node" }, "include": [ "tests/**/*.ts" diff --git a/yarn.lock b/yarn.lock index 0c3dec3d..44ea8142 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1325,6 +1325,13 @@ resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== +"@emnapi/runtime@^1.2.0": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.3.1.tgz#0fcaa575afc31f455fd33534c19381cfce6c6f60" + integrity sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw== + dependencies: + tslib "^2.4.0" + "@emotion/babel-plugin@^11.12.0": version "11.12.0" resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.12.0.tgz#7b43debb250c313101b3f885eba634f1d723fcc2" @@ -1542,14 +1549,14 @@ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz#786c5f41f043b07afb1af37683d7c33668858f6d" integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ== -"@eslint-community/eslint-utils@^4.2.0": +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.1" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz#d1145bf2c20132d6400495d6df4bf59362fd9d56" integrity sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA== dependencies: eslint-visitor-keys "^3.4.3" -"@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": +"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": version "4.12.1" resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== @@ -1635,6 +1642,119 @@ resolved "https://registry.yarnpkg.com/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz#98c23c950a3d9b6c8f0daed06da6c3af06981340" integrity sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q== +"@img/sharp-darwin-arm64@0.33.5": + version "0.33.5" + resolved "https://registry.yarnpkg.com/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz#ef5b5a07862805f1e8145a377c8ba6e98813ca08" + integrity sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ== + optionalDependencies: + "@img/sharp-libvips-darwin-arm64" "1.0.4" + +"@img/sharp-darwin-x64@0.33.5": + version "0.33.5" + resolved "https://registry.yarnpkg.com/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz#e03d3451cd9e664faa72948cc70a403ea4063d61" + integrity sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q== + optionalDependencies: + "@img/sharp-libvips-darwin-x64" "1.0.4" + +"@img/sharp-libvips-darwin-arm64@1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz#447c5026700c01a993c7804eb8af5f6e9868c07f" + integrity sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg== + +"@img/sharp-libvips-darwin-x64@1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz#e0456f8f7c623f9dbfbdc77383caa72281d86062" + integrity sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ== + +"@img/sharp-libvips-linux-arm64@1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz#979b1c66c9a91f7ff2893556ef267f90ebe51704" + integrity sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA== + +"@img/sharp-libvips-linux-arm@1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz#99f922d4e15216ec205dcb6891b721bfd2884197" + integrity sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g== + +"@img/sharp-libvips-linux-s390x@1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz#f8a5eb1f374a082f72b3f45e2fb25b8118a8a5ce" + integrity sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA== + +"@img/sharp-libvips-linux-x64@1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz#d4c4619cdd157774906e15770ee119931c7ef5e0" + integrity sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw== + +"@img/sharp-libvips-linuxmusl-arm64@1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz#166778da0f48dd2bded1fa3033cee6b588f0d5d5" + integrity sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA== + +"@img/sharp-libvips-linuxmusl-x64@1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz#93794e4d7720b077fcad3e02982f2f1c246751ff" + integrity sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw== + +"@img/sharp-linux-arm64@0.33.5": + version "0.33.5" + resolved "https://registry.yarnpkg.com/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz#edb0697e7a8279c9fc829a60fc35644c4839bb22" + integrity sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA== + optionalDependencies: + "@img/sharp-libvips-linux-arm64" "1.0.4" + +"@img/sharp-linux-arm@0.33.5": + version "0.33.5" + resolved "https://registry.yarnpkg.com/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz#422c1a352e7b5832842577dc51602bcd5b6f5eff" + integrity sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ== + optionalDependencies: + "@img/sharp-libvips-linux-arm" "1.0.5" + +"@img/sharp-linux-s390x@0.33.5": + version "0.33.5" + resolved "https://registry.yarnpkg.com/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz#f5c077926b48e97e4a04d004dfaf175972059667" + integrity sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q== + optionalDependencies: + "@img/sharp-libvips-linux-s390x" "1.0.4" + +"@img/sharp-linux-x64@0.33.5": + version "0.33.5" + resolved "https://registry.yarnpkg.com/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz#d806e0afd71ae6775cc87f0da8f2d03a7c2209cb" + integrity sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA== + optionalDependencies: + "@img/sharp-libvips-linux-x64" "1.0.4" + +"@img/sharp-linuxmusl-arm64@0.33.5": + version "0.33.5" + resolved "https://registry.yarnpkg.com/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz#252975b915894fb315af5deea174651e208d3d6b" + integrity sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g== + optionalDependencies: + "@img/sharp-libvips-linuxmusl-arm64" "1.0.4" + +"@img/sharp-linuxmusl-x64@0.33.5": + version "0.33.5" + resolved "https://registry.yarnpkg.com/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz#3f4609ac5d8ef8ec7dadee80b560961a60fd4f48" + integrity sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw== + optionalDependencies: + "@img/sharp-libvips-linuxmusl-x64" "1.0.4" + +"@img/sharp-wasm32@0.33.5": + version "0.33.5" + resolved "https://registry.yarnpkg.com/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz#6f44f3283069d935bb5ca5813153572f3e6f61a1" + integrity sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg== + dependencies: + "@emnapi/runtime" "^1.2.0" + +"@img/sharp-win32-ia32@0.33.5": + version "0.33.5" + resolved "https://registry.yarnpkg.com/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz#1a0c839a40c5351e9885628c85f2e5dfd02b52a9" + integrity sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ== + +"@img/sharp-win32-x64@0.33.5": + version "0.33.5" + resolved "https://registry.yarnpkg.com/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz#56f00962ff0c4e0eb93d34a047d29fa995e3e342" + integrity sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg== + "@isaacs/cliui@^8.0.2": version "8.0.2" resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" @@ -2392,6 +2512,58 @@ pump "^3.0.0" tar-fs "^2.1.1" +"@next/env@15.0.3": + version "15.0.3" + resolved "https://registry.yarnpkg.com/@next/env/-/env-15.0.3.tgz#a2e9bf274743c52b74d30f415f3eba750d51313a" + integrity sha512-t9Xy32pjNOvVn2AS+Utt6VmyrshbpfUMhIjFO60gI58deSo/KgLOp31XZ4O+kY/Is8WAGYwA5gR7kOb1eORDBA== + +"@next/eslint-plugin-next@15.0.3": + version "15.0.3" + resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-15.0.3.tgz#ce953098036d462f6901e423cc6445fc165b78c4" + integrity sha512-3Ln/nHq2V+v8uIaxCR6YfYo7ceRgZNXfTd3yW1ukTaFbO+/I8jNakrjYWODvG9BuR2v5kgVtH/C8r0i11quOgw== + dependencies: + fast-glob "3.3.1" + +"@next/swc-darwin-arm64@15.0.3": + version "15.0.3" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.0.3.tgz#4c40c506cf3d4d87da0204f4cccf39e6bdc46a71" + integrity sha512-s3Q/NOorCsLYdCKvQlWU+a+GeAd3C8Rb3L1YnetsgwXzhc3UTWrtQpB/3eCjFOdGUj5QmXfRak12uocd1ZiiQw== + +"@next/swc-darwin-x64@15.0.3": + version "15.0.3" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-15.0.3.tgz#8e06cacae3dae279744f9fbe88dea679ec2c1ca3" + integrity sha512-Zxl/TwyXVZPCFSf0u2BNj5sE0F2uR6iSKxWpq4Wlk/Sv9Ob6YCKByQTkV2y6BCic+fkabp9190hyrDdPA/dNrw== + +"@next/swc-linux-arm64-gnu@15.0.3": + version "15.0.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.0.3.tgz#c144ad1f21091b9c6e1e330ecc2d56188763191d" + integrity sha512-T5+gg2EwpsY3OoaLxUIofmMb7ohAUlcNZW0fPQ6YAutaWJaxt1Z1h+8zdl4FRIOr5ABAAhXtBcpkZNwUcKI2fw== + +"@next/swc-linux-arm64-musl@15.0.3": + version "15.0.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.0.3.tgz#3ccb71c6703bf421332f177d1bb0e10528bc73a2" + integrity sha512-WkAk6R60mwDjH4lG/JBpb2xHl2/0Vj0ZRu1TIzWuOYfQ9tt9NFsIinI1Epma77JVgy81F32X/AeD+B2cBu/YQA== + +"@next/swc-linux-x64-gnu@15.0.3": + version "15.0.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.0.3.tgz#b90aa9b07001b4000427c35ab347a9273cbeebb3" + integrity sha512-gWL/Cta1aPVqIGgDb6nxkqy06DkwJ9gAnKORdHWX1QBbSZZB+biFYPFti8aKIQL7otCE1pjyPaXpFzGeG2OS2w== + +"@next/swc-linux-x64-musl@15.0.3": + version "15.0.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.0.3.tgz#0ac9724fb44718fc97bfea971ac3fe17e486590e" + integrity sha512-QQEMwFd8r7C0GxQS62Zcdy6GKx999I/rTO2ubdXEe+MlZk9ZiinsrjwoiBL5/57tfyjikgh6GOU2WRQVUej3UA== + +"@next/swc-win32-arm64-msvc@15.0.3": + version "15.0.3" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.0.3.tgz#932437d4cf27814e963ba8ae5f033b4421fab9ca" + integrity sha512-9TEp47AAd/ms9fPNgtgnT7F3M1Hf7koIYYWCMQ9neOwjbVWJsHZxrFbI3iEDJ8rf1TDGpmHbKxXf2IFpAvheIQ== + +"@next/swc-win32-x64-msvc@15.0.3": + version "15.0.3" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.0.3.tgz#940a6f7b370cdde0cc67eabe945d9e6d97e0be9f" + integrity sha512-VNAz+HN4OGgvZs6MOoVfnn41kBzT+M+tB+OK4cww6DNyWS6wKaDpaAm/qLeOUbnMh0oVx1+mg0uoYARF69dJyA== + "@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": version "5.1.1-v1" resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129" @@ -2437,6 +2609,11 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@nolyfill/is-core-module@1.0.39": + version "1.0.39" + resolved "https://registry.yarnpkg.com/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz#3dc35ba0f1e66b403c00b39344f870298ebb1c8e" + integrity sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA== + "@npmcli/agent@^2.0.0": version "2.2.2" resolved "https://registry.yarnpkg.com/@npmcli/agent/-/agent-2.2.2.tgz#967604918e62f620a648c7975461c9c9e74fc5d5" @@ -2803,6 +2980,11 @@ dependencies: "@babel/runtime" "^7.13.10" +"@radix-ui/number@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/number/-/number-1.1.0.tgz#1e95610461a09cdf8bb05c152e76ca1278d5da46" + integrity sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ== + "@radix-ui/primitive@1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@radix-ui/primitive/-/primitive-1.0.1.tgz#e46f9958b35d10e9f6dc71c497305c22e3e55dbd" @@ -2823,6 +3005,13 @@ "@babel/runtime" "^7.13.10" "@radix-ui/react-primitive" "1.0.3" +"@radix-ui/react-arrow@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-arrow/-/react-arrow-1.1.0.tgz#744f388182d360b86285217e43b6c63633f39e7a" + integrity sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw== + dependencies: + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-collection@1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@radix-ui/react-collection/-/react-collection-1.0.3.tgz#9595a66e09026187524a36c6e7e9c7d286469159" @@ -2868,6 +3057,31 @@ resolved "https://registry.yarnpkg.com/@radix-ui/react-context/-/react-context-1.1.0.tgz#6df8d983546cfd1999c8512f3a8ad85a6e7fcee8" integrity sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A== +"@radix-ui/react-context@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-context/-/react-context-1.1.1.tgz#82074aa83a472353bb22e86f11bcbd1c61c4c71a" + integrity sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q== + +"@radix-ui/react-dialog@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@radix-ui/react-dialog/-/react-dialog-1.1.2.tgz#d9345575211d6f2d13e209e84aec9a8584b54d6c" + integrity sha512-Yj4dZtqa2o+kG61fzB0H2qUvmwBA2oyQroGLyNtBj1beo1khoQ3q1a2AO8rrQYjd8256CO9+N8L9tvsS+bnIyA== + dependencies: + "@radix-ui/primitive" "1.1.0" + "@radix-ui/react-compose-refs" "1.1.0" + "@radix-ui/react-context" "1.1.1" + "@radix-ui/react-dismissable-layer" "1.1.1" + "@radix-ui/react-focus-guards" "1.1.1" + "@radix-ui/react-focus-scope" "1.1.0" + "@radix-ui/react-id" "1.1.0" + "@radix-ui/react-portal" "1.1.2" + "@radix-ui/react-presence" "1.1.1" + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-slot" "1.1.0" + "@radix-ui/react-use-controllable-state" "1.1.0" + aria-hidden "^1.1.1" + react-remove-scroll "2.6.0" + "@radix-ui/react-direction@1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@radix-ui/react-direction/-/react-direction-1.0.1.tgz#9cb61bf2ccf568f3421422d182637b7f47596c9b" @@ -2892,6 +3106,17 @@ "@radix-ui/react-use-callback-ref" "1.0.1" "@radix-ui/react-use-escape-keydown" "1.0.3" +"@radix-ui/react-dismissable-layer@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.1.tgz#cbdcb739c5403382bdde5f9243042ba643883396" + integrity sha512-QSxg29lfr/xcev6kSz7MAlmDnzbP1eI/Dwn3Tp1ip0KT5CUELsxkekFEMVBEoykI3oV39hKT4TKZzBNMbcTZYQ== + dependencies: + "@radix-ui/primitive" "1.1.0" + "@radix-ui/react-compose-refs" "1.1.0" + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-use-callback-ref" "1.1.0" + "@radix-ui/react-use-escape-keydown" "1.1.0" + "@radix-ui/react-focus-guards@1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.1.tgz#1ea7e32092216b946397866199d892f71f7f98ad" @@ -2899,6 +3124,11 @@ dependencies: "@babel/runtime" "^7.13.10" +"@radix-ui/react-focus-guards@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.1.tgz#8635edd346304f8b42cae86b05912b61aef27afe" + integrity sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg== + "@radix-ui/react-focus-scope@1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.3.tgz#9c2e8d4ed1189a1d419ee61edd5c1828726472f9" @@ -2909,6 +3139,15 @@ "@radix-ui/react-primitive" "1.0.3" "@radix-ui/react-use-callback-ref" "1.0.1" +"@radix-ui/react-focus-scope@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.0.tgz#ebe2891a298e0a33ad34daab2aad8dea31caf0b2" + integrity sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA== + dependencies: + "@radix-ui/react-compose-refs" "1.1.0" + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-use-callback-ref" "1.1.0" + "@radix-ui/react-id@1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@radix-ui/react-id/-/react-id-1.0.1.tgz#73cdc181f650e4df24f0b6a5b7aa426b912c88c0" @@ -2941,6 +3180,22 @@ "@radix-ui/react-use-size" "1.0.1" "@radix-ui/rect" "1.0.1" +"@radix-ui/react-popper@1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-popper/-/react-popper-1.2.0.tgz#a3e500193d144fe2d8f5d5e60e393d64111f2a7a" + integrity sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg== + dependencies: + "@floating-ui/react-dom" "^2.0.0" + "@radix-ui/react-arrow" "1.1.0" + "@radix-ui/react-compose-refs" "1.1.0" + "@radix-ui/react-context" "1.1.0" + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-use-callback-ref" "1.1.0" + "@radix-ui/react-use-layout-effect" "1.1.0" + "@radix-ui/react-use-rect" "1.1.0" + "@radix-ui/react-use-size" "1.1.0" + "@radix-ui/rect" "1.1.0" + "@radix-ui/react-portal@1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@radix-ui/react-portal/-/react-portal-1.0.3.tgz#ffb961244c8ed1b46f039e6c215a6c4d9989bda1" @@ -2949,6 +3204,22 @@ "@babel/runtime" "^7.13.10" "@radix-ui/react-primitive" "1.0.3" +"@radix-ui/react-portal@1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@radix-ui/react-portal/-/react-portal-1.1.2.tgz#51eb46dae7505074b306ebcb985bf65cc547d74e" + integrity sha512-WeDYLGPxJb/5EGBoedyJbT0MpoULmwnIPMJMSldkuiMsBAv7N1cRdsTWZWht9vpPOiN3qyiGAtbK2is47/uMFg== + dependencies: + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-use-layout-effect" "1.1.0" + +"@radix-ui/react-presence@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-presence/-/react-presence-1.1.1.tgz#98aba423dba5e0c687a782c0669dcd99de17f9b1" + integrity sha512-IeFXVi4YS1K0wVZzXNrbaaUvIJ3qdY+/Ih4eHFhWA9SwGR9UDX7Ck8abvL57C4cv3wwMvUE0OG69Qc3NCcTe/A== + dependencies: + "@radix-ui/react-compose-refs" "1.1.0" + "@radix-ui/react-use-layout-effect" "1.1.0" + "@radix-ui/react-primitive@1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@radix-ui/react-primitive/-/react-primitive-1.0.3.tgz#d49ea0f3f0b2fe3ab1cb5667eb03e8b843b914d0" @@ -3007,6 +3278,33 @@ aria-hidden "^1.1.1" react-remove-scroll "2.5.5" +"@radix-ui/react-select@^2.1.2": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@radix-ui/react-select/-/react-select-2.1.2.tgz#2346e118966db793940f6a866fd4cc5db2cc275e" + integrity sha512-rZJtWmorC7dFRi0owDmoijm6nSJH1tVw64QGiNIZ9PNLyBDtG+iAq+XGsya052At4BfarzY/Dhv9wrrUr6IMZA== + dependencies: + "@radix-ui/number" "1.1.0" + "@radix-ui/primitive" "1.1.0" + "@radix-ui/react-collection" "1.1.0" + "@radix-ui/react-compose-refs" "1.1.0" + "@radix-ui/react-context" "1.1.1" + "@radix-ui/react-direction" "1.1.0" + "@radix-ui/react-dismissable-layer" "1.1.1" + "@radix-ui/react-focus-guards" "1.1.1" + "@radix-ui/react-focus-scope" "1.1.0" + "@radix-ui/react-id" "1.1.0" + "@radix-ui/react-popper" "1.2.0" + "@radix-ui/react-portal" "1.1.2" + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-slot" "1.1.0" + "@radix-ui/react-use-callback-ref" "1.1.0" + "@radix-ui/react-use-controllable-state" "1.1.0" + "@radix-ui/react-use-layout-effect" "1.1.0" + "@radix-ui/react-use-previous" "1.1.0" + "@radix-ui/react-visually-hidden" "1.1.0" + aria-hidden "^1.1.1" + react-remove-scroll "2.6.0" + "@radix-ui/react-separator@1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@radix-ui/react-separator/-/react-separator-1.1.0.tgz#ee0f4d86003b0e3ea7bc6ccab01ea0adee32663e" @@ -3022,7 +3320,7 @@ "@babel/runtime" "^7.13.10" "@radix-ui/react-compose-refs" "1.0.1" -"@radix-ui/react-slot@1.1.0": +"@radix-ui/react-slot@1.1.0", "@radix-ui/react-slot@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@radix-ui/react-slot/-/react-slot-1.1.0.tgz#7c5e48c36ef5496d97b08f1357bb26ed7c714b84" integrity sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw== @@ -3099,6 +3397,13 @@ "@babel/runtime" "^7.13.10" "@radix-ui/react-use-callback-ref" "1.0.1" +"@radix-ui/react-use-escape-keydown@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.0.tgz#31a5b87c3b726504b74e05dac1edce7437b98754" + integrity sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw== + dependencies: + "@radix-ui/react-use-callback-ref" "1.1.0" + "@radix-ui/react-use-layout-effect@1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.1.tgz#be8c7bc809b0c8934acf6657b577daf948a75399" @@ -3118,6 +3423,11 @@ dependencies: "@babel/runtime" "^7.13.10" +"@radix-ui/react-use-previous@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-previous/-/react-use-previous-1.1.0.tgz#d4dd37b05520f1d996a384eb469320c2ada8377c" + integrity sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og== + "@radix-ui/react-use-rect@1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@radix-ui/react-use-rect/-/react-use-rect-1.0.1.tgz#fde50b3bb9fd08f4a1cd204572e5943c244fcec2" @@ -3126,6 +3436,13 @@ "@babel/runtime" "^7.13.10" "@radix-ui/rect" "1.0.1" +"@radix-ui/react-use-rect@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-rect/-/react-use-rect-1.1.0.tgz#13b25b913bd3e3987cc9b073a1a164bb1cf47b88" + integrity sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ== + dependencies: + "@radix-ui/rect" "1.1.0" + "@radix-ui/react-use-size@1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@radix-ui/react-use-size/-/react-use-size-1.0.1.tgz#1c5f5fea940a7d7ade77694bb98116fb49f870b2" @@ -3134,6 +3451,13 @@ "@babel/runtime" "^7.13.10" "@radix-ui/react-use-layout-effect" "1.0.1" +"@radix-ui/react-use-size@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-size/-/react-use-size-1.1.0.tgz#b4dba7fbd3882ee09e8d2a44a3eed3a7e555246b" + integrity sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw== + dependencies: + "@radix-ui/react-use-layout-effect" "1.1.0" + "@radix-ui/react-visually-hidden@1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.0.3.tgz#51aed9dd0fe5abcad7dee2a234ad36106a6984ac" @@ -3142,6 +3466,13 @@ "@babel/runtime" "^7.13.10" "@radix-ui/react-primitive" "1.0.3" +"@radix-ui/react-visually-hidden@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.1.0.tgz#ad47a8572580f7034b3807c8e6740cd41038a5a2" + integrity sha512-N8MDZqtgCgG5S3aV60INAB475osJousYpZ4cTJ2cFbMpdHS5Y6loLTH8LPtkj2QN0x93J30HT/M3qJXM0+lyeQ== + dependencies: + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/rect@1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@radix-ui/rect/-/rect-1.0.1.tgz#bf8e7d947671996da2e30f4904ece343bc4a883f" @@ -3149,6 +3480,11 @@ dependencies: "@babel/runtime" "^7.13.10" +"@radix-ui/rect@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/rect/-/rect-1.1.0.tgz#f817d1d3265ac5415dadc67edab30ae196696438" + integrity sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg== + "@remix-run/router@1.14.2": version "1.14.2" resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.14.2.tgz#4d58f59908d9197ba3179310077f25c88e49ed17" @@ -3196,7 +3532,7 @@ resolved "https://registry.yarnpkg.com/@rtsao/scc/-/scc-1.1.0.tgz#927dd2fae9bc3361403ac2c7a00c32ddce9ad7e8" integrity sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g== -"@rushstack/eslint-patch@^1.1.0": +"@rushstack/eslint-patch@^1.1.0", "@rushstack/eslint-patch@^1.10.3": version "1.10.4" resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.10.4.tgz#427d5549943a9c6fce808e39ea64dbe60d4047f1" integrity sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA== @@ -4340,11 +4676,18 @@ "@swc/core-win32-ia32-msvc" "1.7.42" "@swc/core-win32-x64-msvc" "1.7.42" -"@swc/counter@^0.1.3": +"@swc/counter@0.1.3", "@swc/counter@^0.1.3": version "0.1.3" resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9" integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== +"@swc/helpers@0.5.13": + version "0.5.13" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.13.tgz#33e63ff3cd0cade557672bd7888a39ce7d115a8c" + integrity sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w== + dependencies: + tslib "^2.4.0" + "@swc/types@^0.1.13": version "0.1.13" resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.13.tgz#441734f8bfa6e9e738f1c68e98be6da282ecc7db" @@ -4528,6 +4871,11 @@ dependencies: "@types/node" "*" +"@types/canvas-confetti@^1.6.4": + version "1.6.4" + resolved "https://registry.yarnpkg.com/@types/canvas-confetti/-/canvas-confetti-1.6.4.tgz#620fd8d78b335d6a4046c0f73236d6988b37552a" + integrity sha512-fNyZ/Fdw/Y92X0vv7B+BD6ysHL4xVU5dJcgzgxLdGbn8O3PezZNIJpml44lKM0nsGur+o/6+NZbZeNTt00U1uA== + "@types/chai@^4.3.16": version "4.3.20" resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.20.tgz#cb291577ed342ca92600430841a00329ba05cecc" @@ -4830,6 +5178,13 @@ dependencies: undici-types "~5.26.4" +"@types/node@^20": + version "20.17.8" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.17.8.tgz#42748cdb169adf5be7c9760604c72820c7b7d560" + integrity sha512-ahz2g6/oqbKalW9sPv6L2iRbhLnojxjYWspAqhjvqSWBgGebEJT5GvRmk0QXPj3sbC6rU0GTQjPLQkmR8CObvA== + dependencies: + undici-types "~6.19.2" + "@types/normalize-package-data@^2.4.0": version "2.4.4" resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz#56e2cc26c397c038fab0e3a917a12d5c5909e901" @@ -4877,7 +5232,7 @@ resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== -"@types/react-dom@^18.0.0", "@types/react-dom@^18.2.18", "@types/react-dom@^18.2.7": +"@types/react-dom@^18", "@types/react-dom@^18.0.0", "@types/react-dom@^18.2.18", "@types/react-dom@^18.2.7": version "18.3.1" resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.3.1.tgz#1e4654c08a9cdcfb6594c780ac59b55aad42fe07" integrity sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ== @@ -4891,7 +5246,7 @@ dependencies: "@types/react" "*" -"@types/react@*", "@types/react@>=16", "@types/react@^18.2.15", "@types/react@^18.2.48": +"@types/react@*", "@types/react@>=16", "@types/react@^18", "@types/react@^18.2.15", "@types/react@^18.2.48": version "18.3.12" resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.12.tgz#99419f182ccd69151813b7ee24b792fe08774f60" integrity sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw== @@ -5003,6 +5358,21 @@ dependencies: "@types/yargs-parser" "*" +"@typescript-eslint/eslint-plugin@^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0": + version "8.16.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.16.0.tgz#ac56825bcdf3b392fc76a94b1315d4a162f201a6" + integrity sha512-5YTHKV8MYlyMI6BaEG7crQ9BhSc8RxzshOReKwZwRWN0+XvvTOm+L/UYLCYxFpfwYuAAqhxiq4yae0CMFwbL7Q== + dependencies: + "@eslint-community/regexpp" "^4.10.0" + "@typescript-eslint/scope-manager" "8.16.0" + "@typescript-eslint/type-utils" "8.16.0" + "@typescript-eslint/utils" "8.16.0" + "@typescript-eslint/visitor-keys" "8.16.0" + graphemer "^1.4.0" + ignore "^5.3.1" + natural-compare "^1.4.0" + ts-api-utils "^1.3.0" + "@typescript-eslint/eslint-plugin@^5.5.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz#aeef0328d172b9e37d9bab6dbc13b87ed88977db" @@ -5026,6 +5396,17 @@ dependencies: "@typescript-eslint/utils" "5.62.0" +"@typescript-eslint/parser@^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0": + version "8.16.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.16.0.tgz#ee5b2d6241c1ab3e2e53f03fd5a32d8e266d8e06" + integrity sha512-D7DbgGFtsqIPIFMPJwCad9Gfi/hC0PWErRRHFnaCWoEDYi5tQUDiJCTmGUbBiLzjqAck4KcXt9Ayj0CNlIrF+w== + dependencies: + "@typescript-eslint/scope-manager" "8.16.0" + "@typescript-eslint/types" "8.16.0" + "@typescript-eslint/typescript-estree" "8.16.0" + "@typescript-eslint/visitor-keys" "8.16.0" + debug "^4.3.4" + "@typescript-eslint/parser@^5.5.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7" @@ -5044,6 +5425,14 @@ "@typescript-eslint/types" "5.62.0" "@typescript-eslint/visitor-keys" "5.62.0" +"@typescript-eslint/scope-manager@8.16.0": + version "8.16.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.16.0.tgz#ebc9a3b399a69a6052f3d88174456dd399ef5905" + integrity sha512-mwsZWubQvBki2t5565uxF0EYvG+FwdFb8bMtDuGQLdCCnGPrDEDvm1gtfynuKlnpzeBRqdFCkMf9jg1fnAK8sg== + dependencies: + "@typescript-eslint/types" "8.16.0" + "@typescript-eslint/visitor-keys" "8.16.0" + "@typescript-eslint/type-utils@5.62.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz#286f0389c41681376cdad96b309cedd17d70346a" @@ -5054,11 +5443,26 @@ debug "^4.3.4" tsutils "^3.21.0" +"@typescript-eslint/type-utils@8.16.0": + version "8.16.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.16.0.tgz#585388735f7ac390f07c885845c3d185d1b64740" + integrity sha512-IqZHGG+g1XCWX9NyqnI/0CX5LL8/18awQqmkZSl2ynn8F76j579dByc0jhfVSnSnhf7zv76mKBQv9HQFKvDCgg== + dependencies: + "@typescript-eslint/typescript-estree" "8.16.0" + "@typescript-eslint/utils" "8.16.0" + debug "^4.3.4" + ts-api-utils "^1.3.0" + "@typescript-eslint/types@5.62.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== +"@typescript-eslint/types@8.16.0": + version "8.16.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.16.0.tgz#49c92ae1b57942458ab83d9ec7ccab3005e64737" + integrity sha512-NzrHj6thBAOSE4d9bsuRNMvk+BvaQvmY4dDglgkgGC0EW/tB3Kelnp3tAKH87GEwzoxgeQn9fNGRyFJM/xd+GQ== + "@typescript-eslint/typescript-estree@5.62.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" @@ -5072,6 +5476,20 @@ semver "^7.3.7" tsutils "^3.21.0" +"@typescript-eslint/typescript-estree@8.16.0": + version "8.16.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.16.0.tgz#9d741e56e5b13469b5190e763432ce5551a9300c" + integrity sha512-E2+9IzzXMc1iaBy9zmo+UYvluE3TW7bCGWSF41hVWUE01o8nzr1rvOQYSxelxr6StUvRcTMe633eY8mXASMaNw== + dependencies: + "@typescript-eslint/types" "8.16.0" + "@typescript-eslint/visitor-keys" "8.16.0" + debug "^4.3.4" + fast-glob "^3.3.2" + is-glob "^4.0.3" + minimatch "^9.0.4" + semver "^7.6.0" + ts-api-utils "^1.3.0" + "@typescript-eslint/utils@5.62.0", "@typescript-eslint/utils@^5.45.0", "@typescript-eslint/utils@^5.58.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" @@ -5086,6 +5504,16 @@ eslint-scope "^5.1.1" semver "^7.3.7" +"@typescript-eslint/utils@8.16.0": + version "8.16.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.16.0.tgz#c71264c437157feaa97842809836254a6fc833c3" + integrity sha512-C1zRy/mOL8Pj157GiX4kaw7iyRLKfJXBR3L82hk5kS/GyHcOFmy4YUq/zfZti72I9wnuQtA/+xzft4wCC8PJdA== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@typescript-eslint/scope-manager" "8.16.0" + "@typescript-eslint/types" "8.16.0" + "@typescript-eslint/typescript-estree" "8.16.0" + "@typescript-eslint/visitor-keys@5.62.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" @@ -5094,6 +5522,14 @@ "@typescript-eslint/types" "5.62.0" eslint-visitor-keys "^3.3.0" +"@typescript-eslint/visitor-keys@8.16.0": + version "8.16.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.16.0.tgz#d5086afc060b01ff7a4ecab8d49d13d5a7b07705" + integrity sha512-pq19gbaMOmFE3CbL0ZB8J8BFCo2ckfHBfaIsaOZgBIF4EoISJIdLX5xRhd0FGB0LlHReNRuzoJoMGpTjq8F2CQ== + dependencies: + "@typescript-eslint/types" "8.16.0" + eslint-visitor-keys "^4.2.0" + "@ungap/structured-clone@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" @@ -5834,6 +6270,11 @@ at-least-node@^1.0.0: resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== +attr-accept@^2.2.4: + version "2.2.5" + resolved "https://registry.yarnpkg.com/attr-accept/-/attr-accept-2.2.5.tgz#d7061d958e6d4f97bf8665c68b75851a0713ab5e" + integrity sha512-0bDNnY/u6pPwHDMoF0FieU354oBi0a8rD9FcsLwzcGWbc8KS8KPIi7y+s13OlVY+gMWc/9xEMUgNE6Qm8ZllYQ== + autoprefixer@^10.4.12, autoprefixer@^10.4.13: version "10.4.20" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.20.tgz#5caec14d43976ef42e32dcb4bd62878e96be5b3b" @@ -6402,6 +6843,13 @@ builtins@^5.0.0: dependencies: semver "^7.0.0" +busboy@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" + integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== + dependencies: + streamsearch "^1.1.0" + byte-size@8.1.1: version "8.1.1" resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-8.1.1.tgz#3424608c62d59de5bfda05d31e0313c6174842ae" @@ -6545,6 +6993,11 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001646, caniuse-lite@^1.0.30001669: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001676.tgz#fe133d41fe74af8f7cc93b8a714c3e86a86e6f04" integrity sha512-Qz6zwGCiPghQXGJvgQAem79esjitvJ+CxSbSQkW9H/UX5hg8XM88d4lp2W+MEQ81j+Hip58Il+jGVdazk1z9cw== +caniuse-lite@^1.0.30001579: + version "1.0.30001684" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001684.tgz#0eca437bab7d5f03452ff0ef9de8299be6b08e16" + integrity sha512-G1LRwLIQjBQoyq0ZJGqGIJUXzJ8irpbjHLpVRXDvBEScFJ9b17sgK6vlx0GAJFE21okD7zXl08rRRUfq6HdoEQ== + canonicalize@^1.0.1: version "1.0.8" resolved "https://registry.yarnpkg.com/canonicalize/-/canonicalize-1.0.8.tgz#24d1f1a00ed202faafd9bf8e63352cd4450c6df1" @@ -6555,6 +7008,11 @@ canonicalize@^2.0.0: resolved "https://registry.yarnpkg.com/canonicalize/-/canonicalize-2.0.0.tgz#32be2cef4446d67fd5348027a384cae28f17226a" integrity sha512-ulDEYPv7asdKvqahuAY35c1selLdzDwHqugK92hfkzvlDCwXRRelDkR+Er33md/PtnpqHemgkuDPanZ4fiYZ8w== +canvas-confetti@^1.9.3: + version "1.9.3" + resolved "https://registry.yarnpkg.com/canvas-confetti/-/canvas-confetti-1.9.3.tgz#ef4c857420ad8045ab4abe8547261c8cdf229845" + integrity sha512-rFfTURMvmVEX1gyXFgn5QMn81bYk70qa0HLzcIOSVEyl57n6o9ItHeBtUSWdvKAPY0xlvBHno4/v3QPrT83q9g== + case-sensitive-paths-webpack-plugin@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz#db64066c6422eed2e08cc14b986ca43796dbc6d4" @@ -6638,7 +7096,7 @@ check-types@^11.2.3: resolved "https://registry.yarnpkg.com/check-types/-/check-types-11.2.3.tgz#1ffdf68faae4e941fce252840b1787b8edc93b71" integrity sha512-+67P1GkJRaxQD6PKK0Et9DhwQB+vGg3PM5+aavopCpZT1lj9jeqfvpgTLAWErNj8qApkkmXlu/Ug74kmhagkXg== -chokidar@^3.4.2, chokidar@^3.5.3: +chokidar@^3.4.2, chokidar@^3.5.3, chokidar@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== @@ -6693,6 +7151,13 @@ cjs-module-lexer@^1.0.0, cjs-module-lexer@^1.2.3: resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz#707413784dbb3a72aa11c2f2b042a0bef4004170" integrity sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA== +class-variance-authority@^0.7.0: + version "0.7.1" + resolved "https://registry.yarnpkg.com/class-variance-authority/-/class-variance-authority-0.7.1.tgz#4008a798a0e4553a781a57ac5177c9fb5d043787" + integrity sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg== + dependencies: + clsx "^2.1.1" + clean-css@^5.2.2: version "5.3.3" resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.3.tgz#b330653cd3bd6b75009cc25c714cae7b93351ccd" @@ -6748,6 +7213,11 @@ cli-width@^3.0.0: resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== +client-only@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/client-only/-/client-only-0.0.1.tgz#38bba5d403c41ab150bff64a95c85013cf73bca1" + integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA== + cliui@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" @@ -6837,16 +7307,32 @@ color-name@1.1.3: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== -color-name@~1.1.4: +color-name@^1.0.0, color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +color-string@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" + integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + color-support@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== +color@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/color/-/color-4.2.3.tgz#d781ecb5e57224ee43ea9627560107c0e0c6463a" + integrity sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A== + dependencies: + color-convert "^2.0.1" + color-string "^1.9.0" + colord@^2.9.1: version "2.9.3" resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" @@ -7764,6 +8250,11 @@ detect-indent@^6.1.0: resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== +detect-libc@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700" + integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw== + detect-newline@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" @@ -8466,6 +8957,22 @@ escodegen@^2.0.0, escodegen@^2.1.0: optionalDependencies: source-map "~0.6.1" +eslint-config-next@15.0.3: + version "15.0.3" + resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-15.0.3.tgz#b483585260d5e55050d4ab87e053c88089ae12ee" + integrity sha512-IGP2DdQQrgjcr4mwFPve4DrCqo7CVVez1WoYY47XwKSrYO4hC0Dlb+iJA60i0YfICOzgNADIb8r28BpQ5Zs0wg== + dependencies: + "@next/eslint-plugin-next" "15.0.3" + "@rushstack/eslint-patch" "^1.10.3" + "@typescript-eslint/eslint-plugin" "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0" + "@typescript-eslint/parser" "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0" + eslint-import-resolver-node "^0.3.6" + eslint-import-resolver-typescript "^3.5.2" + eslint-plugin-import "^2.31.0" + eslint-plugin-jsx-a11y "^6.10.0" + eslint-plugin-react "^7.35.0" + eslint-plugin-react-hooks "^5.0.0" + eslint-config-react-app@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz#73ba3929978001c5c86274c017ea57eb5fa644b4" @@ -8486,7 +8993,7 @@ eslint-config-react-app@^7.0.1: eslint-plugin-react-hooks "^4.3.0" eslint-plugin-testing-library "^5.0.1" -eslint-import-resolver-node@^0.3.9: +eslint-import-resolver-node@^0.3.6, eslint-import-resolver-node@^0.3.9: version "0.3.9" resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== @@ -8495,7 +9002,21 @@ eslint-import-resolver-node@^0.3.9: is-core-module "^2.13.0" resolve "^1.22.4" -eslint-module-utils@^2.12.0: +eslint-import-resolver-typescript@^3.5.2: + version "3.6.3" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.3.tgz#bb8e388f6afc0f940ce5d2c5fd4a3d147f038d9e" + integrity sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA== + dependencies: + "@nolyfill/is-core-module" "1.0.39" + debug "^4.3.5" + enhanced-resolve "^5.15.0" + eslint-module-utils "^2.8.1" + fast-glob "^3.3.2" + get-tsconfig "^4.7.5" + is-bun-module "^1.0.2" + is-glob "^4.0.3" + +eslint-module-utils@^2.12.0, eslint-module-utils@^2.8.1: version "2.12.0" resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz#fe4cfb948d61f49203d7b08871982b65b9af0b0b" integrity sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg== @@ -8510,7 +9031,7 @@ eslint-plugin-flowtype@^8.0.3: lodash "^4.17.21" string-natural-compare "^3.0.1" -eslint-plugin-import@^2.25.3: +eslint-plugin-import@^2.25.3, eslint-plugin-import@^2.31.0: version "2.31.0" resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz#310ce7e720ca1d9c0bb3f69adfd1c6bdd7d9e0e7" integrity sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A== @@ -8542,7 +9063,7 @@ eslint-plugin-jest@^25.3.0: dependencies: "@typescript-eslint/experimental-utils" "^5.0.0" -eslint-plugin-jsx-a11y@^6.5.1: +eslint-plugin-jsx-a11y@^6.10.0, eslint-plugin-jsx-a11y@^6.5.1: version "6.10.2" resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz#d2812bb23bf1ab4665f1718ea442e8372e638483" integrity sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q== @@ -8576,7 +9097,12 @@ eslint-plugin-react-hooks@^4.3.0: resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz#c829eb06c0e6f484b3fbb85a97e57784f328c596" integrity sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ== -eslint-plugin-react@^7.27.1: +eslint-plugin-react-hooks@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.0.0.tgz#72e2eefbac4b694f5324154619fee44f5f60f101" + integrity sha512-hIOwI+5hYGpJEc4uPRmz2ulCjAGD/N13Lukkh8cLV0i2IRk/bdZDYjgLVHj+U9Z704kLIdIO6iueGvxNur0sgw== + +eslint-plugin-react@^7.27.1, eslint-plugin-react@^7.35.0: version "7.37.2" resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.37.2.tgz#cd0935987876ba2900df2f58339f6d92305acc7a" integrity sha512-EsTAnj9fLVr/GZleBLFbj/sSuXeWmp1eXIN60ceYnZveqEaUCyW4X+Vh4WTdUhCkW4xutXYqTXCUSyqD4rB75w== @@ -8643,6 +9169,11 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4 resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== +eslint-visitor-keys@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz#687bacb2af884fcdda8a6e7d65c606f46a14cd45" + integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw== + eslint-webpack-plugin@^3.1.1: version "3.2.0" resolved "https://registry.yarnpkg.com/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz#1978cdb9edc461e4b0195a20da950cf57988347c" @@ -8654,7 +9185,7 @@ eslint-webpack-plugin@^3.1.1: normalize-path "^3.0.0" schema-utils "^4.0.0" -eslint@^8.3.0: +eslint@^8, eslint@^8.3.0: version "8.57.1" resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.1.tgz#7df109654aba7e3bbe5c8eae533c5e461d3c6ca9" integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA== @@ -8970,7 +9501,18 @@ fast-diff@^1.1.2: resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== -fast-glob@^3.2.5, fast-glob@^3.2.9, fast-glob@^3.3.0: +fast-glob@3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" + integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-glob@^3.2.5, fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== @@ -9066,6 +9608,13 @@ file-loader@^6.2.0: loader-utils "^2.0.0" schema-utils "^3.0.0" +file-selector@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/file-selector/-/file-selector-2.1.1.tgz#21833801bfa3d696d44788c871e4e6704967627c" + integrity sha512-pJVY80PuSiHbnYEZ0gZYQf15x0z/lkeIF1yn95yRC/Usb43343ewXtMClQ9GLPvPm4/SscX4zvQz9QhCAyLqlg== + dependencies: + tslib "^2.7.0" + file-system-cache@2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/file-system-cache/-/file-system-cache-2.3.0.tgz#201feaf4c8cd97b9d0d608e96861bb6005f46fe6" @@ -9499,6 +10048,13 @@ get-symbol-description@^1.0.2: es-errors "^1.3.0" get-intrinsic "^1.2.4" +get-tsconfig@^4.7.5: + version "4.8.1" + resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.8.1.tgz#8995eb391ae6e1638d251118c7b56de7eb425471" + integrity sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg== + dependencies: + resolve-pkg-maps "^1.0.0" + giget@^1.0.0: version "1.2.3" resolved "https://registry.yarnpkg.com/giget/-/giget-1.2.3.tgz#ef6845d1140e89adad595f7f3bb60aa31c672cb6" @@ -10156,7 +10712,7 @@ ignore-walk@^6.0.4: dependencies: minimatch "^9.0.0" -ignore@^5.0.4, ignore@^5.1.4, ignore@^5.2.0: +ignore@^5.0.4, ignore@^5.1.4, ignore@^5.2.0, ignore@^5.3.1: version "5.3.2" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== @@ -10327,6 +10883,11 @@ is-arrayish@^0.2.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + is-async-function@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.0.0.tgz#8e4418efd3e5d3a6ebb0164c05ef5afb69aa9646" @@ -10361,6 +10922,13 @@ is-buffer@^2.0.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== +is-bun-module@^1.0.2: + version "1.3.0" + resolved "https://registry.yarnpkg.com/is-bun-module/-/is-bun-module-1.3.0.tgz#ea4d24fdebfcecc98e81bcbcb506827fee288760" + integrity sha512-DgXeu5UWI0IsMQundYb5UAOzm6G2eVnarJ0byP6Tm55iZNKceD59LNPA2L4VvsScTtHcw0yEkVwSf7PC+QoLSA== + dependencies: + semver "^7.6.3" + is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" @@ -11703,7 +12271,7 @@ jest@^27.4.3: import-local "^3.0.2" jest-cli "^27.5.1" -jiti@^1.21.0: +jiti@^1.21.0, jiti@^1.21.6: version "1.21.6" resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.6.tgz#6c7f7398dd4b3142767f9a168af2f317a428d268" integrity sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w== @@ -11977,6 +12545,11 @@ jws@^3.2.2: jwa "^1.4.1" safe-buffer "^5.0.1" +jwt-decode@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-4.0.0.tgz#2270352425fd413785b2faf11f6e755c5151bd4b" + integrity sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA== + keyv@^4.5.3: version "4.5.4" resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" @@ -12402,6 +12975,11 @@ lru-cache@^7.5.1, lru-cache@^7.7.1: resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== +lucide-react@^0.460.0: + version "0.460.0" + resolved "https://registry.yarnpkg.com/lucide-react/-/lucide-react-0.460.0.tgz#5681364b6bd94d1d475944f0385239c0b1408e35" + integrity sha512-BVtq/DykVeIvRTJvRAgCsOwaGL8Un3Bxh8MbDxMhEWlZay3T4IpEKDEpwt5KZ0KJMHzgm6jrltxlT5eXOWXDHg== + lz-string@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941" @@ -12623,7 +13201,7 @@ methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== -micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: +micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5, micromatch@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== @@ -12994,6 +13572,11 @@ mz@^2.4.0, mz@^2.7.0: object-assign "^4.0.1" thenify-all "^1.0.0" +nanoid@^3.3.6: + version "3.3.8" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.8.tgz#b1be3030bee36aaff18bacb375e5cce521684baf" + integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w== + nanoid@^3.3.7: version "3.3.7" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" @@ -13024,6 +13607,29 @@ neo-async@^2.5.0, neo-async@^2.6.2: resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== +next@^15.0.3: + version "15.0.3" + resolved "https://registry.yarnpkg.com/next/-/next-15.0.3.tgz#804f5b772e7570ef1f088542a59860914d3288e9" + integrity sha512-ontCbCRKJUIoivAdGB34yCaOcPgYXr9AAkV/IwqFfWWTXEPUgLYkSkqBhIk9KK7gGmgjc64B+RdoeIDM13Irnw== + dependencies: + "@next/env" "15.0.3" + "@swc/counter" "0.1.3" + "@swc/helpers" "0.5.13" + busboy "1.6.0" + caniuse-lite "^1.0.30001579" + postcss "8.4.31" + styled-jsx "5.1.6" + optionalDependencies: + "@next/swc-darwin-arm64" "15.0.3" + "@next/swc-darwin-x64" "15.0.3" + "@next/swc-linux-arm64-gnu" "15.0.3" + "@next/swc-linux-arm64-musl" "15.0.3" + "@next/swc-linux-x64-gnu" "15.0.3" + "@next/swc-linux-x64-musl" "15.0.3" + "@next/swc-win32-arm64-msvc" "15.0.3" + "@next/swc-win32-x64-msvc" "15.0.3" + sharp "^0.33.5" + no-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" @@ -14018,7 +14624,7 @@ picocolors@^0.2.1: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== -picocolors@^1.0.0, picocolors@^1.0.1, picocolors@^1.1.0: +picocolors@^1.0.0, picocolors@^1.0.1, picocolors@^1.1.0, picocolors@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== @@ -14315,7 +14921,7 @@ postcss-lab-function@^4.2.1: "@csstools/postcss-progressive-custom-properties" "^1.1.0" postcss-value-parser "^4.2.0" -postcss-load-config@^4.0.1: +postcss-load-config@^4.0.1, postcss-load-config@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-4.0.2.tgz#7159dcf626118d33e299f485d6afe4aff7c4a3e3" integrity sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ== @@ -14420,7 +15026,7 @@ postcss-modules-values@^4.0.0: dependencies: icss-utils "^5.0.0" -postcss-nested@^6.0.1: +postcss-nested@^6.0.1, postcss-nested@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.2.0.tgz#4c2d22ab5f20b9cb61e2c5c5915950784d068131" integrity sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ== @@ -14628,7 +15234,7 @@ postcss-selector-not@^6.0.1: dependencies: postcss-selector-parser "^6.0.10" -postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9, postcss-selector-parser@^6.1.1: +postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9, postcss-selector-parser@^6.1.1, postcss-selector-parser@^6.1.2: version "6.1.2" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz#27ecb41fb0e3b6ba7a1ec84fff347f734c7929de" integrity sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg== @@ -14656,6 +15262,15 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^ resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== +postcss@8.4.31: + version "8.4.31" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" + integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== + dependencies: + nanoid "^3.3.6" + picocolors "^1.0.0" + source-map-js "^1.0.2" + postcss@^7.0.35: version "7.0.39" resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309" @@ -14664,6 +15279,15 @@ postcss@^7.0.35: picocolors "^0.2.1" source-map "^0.6.1" +postcss@^8, postcss@^8.4.47: + version "8.4.49" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.49.tgz#4ea479048ab059ab3ae61d082190fabfd994fe19" + integrity sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA== + dependencies: + nanoid "^3.3.7" + picocolors "^1.1.1" + source-map-js "^1.2.1" + postcss@^8.3.5, postcss@^8.4.23, postcss@^8.4.33, postcss@^8.4.4: version "8.4.47" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.47.tgz#5bf6c9a010f3e724c503bf03ef7947dcb0fea365" @@ -15111,6 +15735,22 @@ react-dom@18.2.0: loose-envify "^1.1.0" scheduler "^0.23.0" +react-dom@19.0.0-rc-66855b96-20241106: + version "19.0.0-rc-66855b96-20241106" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-19.0.0-rc-66855b96-20241106.tgz#beba73decfd1b9365a3c83673a298623b15acb0b" + integrity sha512-D25vdaytZ1wFIRiwNU98NPQ/upS2P8Co4/oNoa02PzHbh8deWdepjm5qwZM/46OdSiGv4WSWwxP55RO9obqJEQ== + dependencies: + scheduler "0.25.0-rc-66855b96-20241106" + +react-dropzone@^14.3.5: + version "14.3.5" + resolved "https://registry.yarnpkg.com/react-dropzone/-/react-dropzone-14.3.5.tgz#1a8bd312c8a353ec78ef402842ccb3589c225add" + integrity sha512-9nDUaEEpqZLOz5v5SUcFA0CjM4vq8YbqO0WRls+EYT7+DvxUdzDPKNCPLqGfj3YL9MsniCLCD4RFA6M95V6KMQ== + dependencies: + attr-accept "^2.2.4" + file-selector "^2.1.0" + prop-types "^15.8.1" + react-element-to-jsx-string@^15.0.0: version "15.0.0" resolved "https://registry.yarnpkg.com/react-element-to-jsx-string/-/react-element-to-jsx-string-15.0.0.tgz#1cafd5b6ad41946ffc8755e254da3fc752a01ac6" @@ -15169,7 +15809,7 @@ react-refresh@^0.14.0: resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.2.tgz#3833da01ce32da470f1f936b9d477da5c7028bf9" integrity sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA== -react-remove-scroll-bar@^2.3.3: +react-remove-scroll-bar@^2.3.3, react-remove-scroll-bar@^2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz#3e585e9d163be84a010180b18721e851ac81a29c" integrity sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g== @@ -15188,6 +15828,17 @@ react-remove-scroll@2.5.5: use-callback-ref "^1.3.0" use-sidecar "^1.1.2" +react-remove-scroll@2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.6.0.tgz#fb03a0845d7768a4f1519a99fdb84983b793dc07" + integrity sha512-I2U4JVEsQenxDAKaVa3VZ/JeJZe0/2DxPWL8Tj8yLKctQJQiZM52pn/GWFpSp8dftjM3pSAHVJZscAnC/y+ySQ== + dependencies: + react-remove-scroll-bar "^2.3.6" + react-style-singleton "^2.2.1" + tslib "^2.1.0" + use-callback-ref "^1.3.0" + use-sidecar "^1.1.2" + react-router-dom@6.21.3: version "6.21.3" resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.21.3.tgz#ef3a7956a3699c7b82c21fcb3dbc63c313ed8c5d" @@ -15291,6 +15942,11 @@ react@18.2.0: dependencies: loose-envify "^1.1.0" +react@19.0.0-rc-66855b96-20241106: + version "19.0.0-rc-66855b96-20241106" + resolved "https://registry.yarnpkg.com/react/-/react-19.0.0-rc-66855b96-20241106.tgz#f04d7283454a32bdd8e9757db4308b75b9739e56" + integrity sha512-klH7xkT71SxRCx4hb1hly5FJB21Hz0ACyxbXYAECEqssUjtJeFUAaI2U1DgJAzkGEnvEm3DkxuBchMC/9K4ipg== + read-cache@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" @@ -15602,6 +16258,11 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== +resolve-pkg-maps@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" + integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== + resolve-url-loader@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz#d50d4ddc746bb10468443167acf800dcd6c3ad57" @@ -15623,7 +16284,7 @@ resolve.exports@^2.0.0: resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== -resolve@^1.1.7, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.22.2, resolve@^1.22.4: +resolve@^1.1.7, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.22.2, resolve@^1.22.4, resolve@^1.22.8: version "1.22.8" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== @@ -15809,6 +16470,11 @@ saxes@^6.0.0: dependencies: xmlchars "^2.2.0" +scheduler@0.25.0-rc-66855b96-20241106: + version "0.25.0-rc-66855b96-20241106" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.25.0-rc-66855b96-20241106.tgz#8bbb728eca4de5a5deca1f18370fbce41aee91d1" + integrity sha512-HQXp/Mnp/MMRSXMQF7urNFla+gmtXW/Gr1KliuR0iboTit4KvZRY8KYaq5ccCTAOJiUqQh2rE2F3wgUekmgdlA== + scheduler@^0.23.0: version "0.23.2" resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.2.tgz#414ba64a3b282892e944cf2108ecc078d115cdc3" @@ -15876,7 +16542,7 @@ semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.0.0, semver@^7.1.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0: +semver@^7.0.0, semver@^7.1.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.3: version "7.6.3" resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== @@ -15989,6 +16655,35 @@ shallow-clone@^3.0.0: dependencies: kind-of "^6.0.2" +sharp@^0.33.5: + version "0.33.5" + resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.33.5.tgz#13e0e4130cc309d6a9497596715240b2ec0c594e" + integrity sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw== + dependencies: + color "^4.2.3" + detect-libc "^2.0.3" + semver "^7.6.3" + optionalDependencies: + "@img/sharp-darwin-arm64" "0.33.5" + "@img/sharp-darwin-x64" "0.33.5" + "@img/sharp-libvips-darwin-arm64" "1.0.4" + "@img/sharp-libvips-darwin-x64" "1.0.4" + "@img/sharp-libvips-linux-arm" "1.0.5" + "@img/sharp-libvips-linux-arm64" "1.0.4" + "@img/sharp-libvips-linux-s390x" "1.0.4" + "@img/sharp-libvips-linux-x64" "1.0.4" + "@img/sharp-libvips-linuxmusl-arm64" "1.0.4" + "@img/sharp-libvips-linuxmusl-x64" "1.0.4" + "@img/sharp-linux-arm" "0.33.5" + "@img/sharp-linux-arm64" "0.33.5" + "@img/sharp-linux-s390x" "0.33.5" + "@img/sharp-linux-x64" "0.33.5" + "@img/sharp-linuxmusl-arm64" "0.33.5" + "@img/sharp-linuxmusl-x64" "0.33.5" + "@img/sharp-wasm32" "0.33.5" + "@img/sharp-win32-ia32" "0.33.5" + "@img/sharp-win32-x64" "0.33.5" + shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -16049,6 +16744,13 @@ sigstore@^2.2.0: "@sigstore/tuf" "^2.3.4" "@sigstore/verify" "^1.2.1" +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== + dependencies: + is-arrayish "^0.3.1" + sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" @@ -16113,6 +16815,11 @@ socks@^2.6.2, socks@^2.8.3: ip-address "^9.0.5" smart-buffer "^4.2.0" +sonner@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/sonner/-/sonner-1.7.0.tgz#f59a2a70e049a179b6fbd1bb1bf2619d5ced07c0" + integrity sha512-W6dH7m5MujEPyug3lpI2l3TC3Pp1+LTgK0Efg+IHDrBbtEjyCmCHHo6yfNBOsf1tFZ6zf+jceWwB38baC8yO9g== + sort-keys@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" @@ -16372,6 +17079,11 @@ stream-shift@^1.0.0: resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.3.tgz#85b8fab4d71010fc3ba8772e8046cc49b8a3864b" integrity sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ== +streamsearch@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" + integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== + string-length@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" @@ -16569,6 +17281,13 @@ style-loader@^3.3.1: resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.4.tgz#f30f786c36db03a45cbd55b6a70d930c479090e7" integrity sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w== +styled-jsx@5.1.6: + version "5.1.6" + resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.1.6.tgz#83b90c077e6c6a80f7f5e8781d0f311b2fe41499" + integrity sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA== + dependencies: + client-only "0.0.1" + stylehacks@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.1.tgz#7934a34eb59d7152149fa69d6e9e56f2fc34bcc9" @@ -16582,7 +17301,7 @@ stylis@4.2.0: resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.2.0.tgz#79daee0208964c8fe695a42fcffcac633a211a51" integrity sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw== -sucrase@^3.32.0: +sucrase@^3.32.0, sucrase@^3.35.0: version "3.35.0" resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.35.0.tgz#57f17a3d7e19b36d8995f06679d121be914ae263" integrity sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA== @@ -16691,6 +17410,16 @@ synckit@^0.9.1: "@pkgr/core" "^0.1.0" tslib "^2.6.2" +tailwind-merge@^2.5.4: + version "2.5.5" + resolved "https://registry.yarnpkg.com/tailwind-merge/-/tailwind-merge-2.5.5.tgz#98167859b856a2a6b8d2baf038ee171b9d814e39" + integrity sha512-0LXunzzAZzo0tEPxV3I297ffKZPlKDrjj7NXphC8V5ak9yHC5zRmxnOe2m/Rd/7ivsOMJe3JZ2JVocoDdQTRBA== + +tailwindcss-animate@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/tailwindcss-animate/-/tailwindcss-animate-1.0.7.tgz#318b692c4c42676cc9e67b19b78775742388bef4" + integrity sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA== + tailwindcss@^3.0.2: version "3.4.14" resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.14.tgz#6dd23a7f54ec197b19159e91e3bb1e55e7aa73ac" @@ -16719,6 +17448,34 @@ tailwindcss@^3.0.2: resolve "^1.22.2" sucrase "^3.32.0" +tailwindcss@^3.4.1: + version "3.4.15" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.15.tgz#04808bf4bf1424b105047d19e7d4bfab368044a9" + integrity sha512-r4MeXnfBmSOuKUWmXe6h2CcyfzJCEk4F0pptO5jlnYSIViUkVmsawj80N5h2lO3gwcmSb4n3PuN+e+GC1Guylw== + dependencies: + "@alloc/quick-lru" "^5.2.0" + arg "^5.0.2" + chokidar "^3.6.0" + didyoumean "^1.2.2" + dlv "^1.1.3" + fast-glob "^3.3.2" + glob-parent "^6.0.2" + is-glob "^4.0.3" + jiti "^1.21.6" + lilconfig "^2.1.0" + micromatch "^4.0.8" + normalize-path "^3.0.0" + object-hash "^3.0.0" + picocolors "^1.1.1" + postcss "^8.4.47" + postcss-import "^15.1.0" + postcss-js "^4.0.1" + postcss-load-config "^4.0.2" + postcss-nested "^6.2.0" + postcss-selector-parser "^6.1.2" + resolve "^1.22.8" + sucrase "^3.35.0" + tapable@^1.0.0: version "1.1.3" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" @@ -16989,6 +17746,11 @@ tryer@^1.0.1: resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== +ts-api-utils@^1.3.0: + version "1.4.2" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.4.2.tgz#a6a6dff26117ac7965624fc118525971edc6a82a" + integrity sha512-ZF5gQIQa/UmzfvxbHZI3JXN0/Jt+vnAfAviNRAMc491laiK6YCLpCW9ft8oaCRFOTxCZtUTE6XB0ZQAe3olntw== + ts-dedent@^2.0.0, ts-dedent@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/ts-dedent/-/ts-dedent-2.2.0.tgz#39e4bd297cd036292ae2394eb3412be63f563bb5" @@ -17239,6 +18001,11 @@ typescript@^4: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== +typescript@^5: + version "5.7.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.7.2.tgz#3169cf8c4c8a828cde53ba9ecb3d2b1d5dd67be6" + integrity sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg== + ufo@^1.5.4: version "1.5.4" resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.5.4.tgz#16d6949674ca0c9e0fbbae1fa20a71d7b1ded754" @@ -17276,7 +18043,7 @@ undici-types@~5.26.4: resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== -undici-types@~6.19.8: +undici-types@~6.19.2, undici-types@~6.19.8: version "6.19.8" resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==