@pipeline-builder/api-core 5.2.5 → 5.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/constants/ai-providers.js +1 -1
- package/lib/constants/http-status.js +1 -1
- package/lib/constants/index.js +1 -1
- package/lib/constants/time.js +1 -1
- package/lib/errors/app-errors.js +1 -1
- package/lib/errors/index.js +1 -1
- package/lib/helpers/access-helpers.d.ts +19 -0
- package/lib/helpers/access-helpers.js +24 -4
- package/lib/helpers/content-disposition.js +1 -1
- package/lib/helpers/crud-helpers.js +1 -1
- package/lib/helpers/index.d.ts +1 -1
- package/lib/helpers/index.js +2 -2
- package/lib/helpers/org-hierarchy-http.js +1 -1
- package/lib/helpers/org-hierarchy.js +1 -1
- package/lib/helpers/restore-helpers.js +1 -1
- package/lib/helpers/sse-helpers.js +13 -2
- package/lib/helpers/support-calendar.js +1 -1
- package/lib/index.js +1 -1
- package/lib/middleware/ask-provenance.js +1 -1
- package/lib/middleware/assurance.js +1 -1
- package/lib/middleware/auth.js +1 -1
- package/lib/middleware/deferred-quota-check.js +1 -1
- package/lib/middleware/ecosystem-guard.js +1 -1
- package/lib/middleware/index.js +1 -1
- package/lib/middleware/jwt-verify.js +1 -1
- package/lib/middleware/mongo-sanitize.js +1 -1
- package/lib/middleware/on-behalf.js +1 -1
- package/lib/middleware/permission-gates.js +1 -1
- package/lib/middleware/quota-exempt-routes.js +1 -1
- package/lib/middleware/revocation.js +1 -1
- package/lib/middleware/route-table.js +16 -1
- package/lib/middleware/service-tokens.js +1 -1
- package/lib/middleware/step-up.js +1 -1
- package/lib/middleware/system-org.d.ts +18 -5
- package/lib/middleware/system-org.js +19 -6
- package/lib/openapi/extend-zod.js +1 -1
- package/lib/openapi/index.js +1 -1
- package/lib/openapi/registry.js +1 -1
- package/lib/openapi/routes/ask-routes.js +1 -1
- package/lib/openapi/routes/billing-routes.js +1 -1
- package/lib/openapi/routes/image-registry-routes.js +1 -1
- package/lib/openapi/routes/index.js +1 -1
- package/lib/openapi/routes/message-routes.js +1 -1
- package/lib/openapi/routes/pipeline-routes.js +1 -1
- package/lib/openapi/routes/pipeline-template-routes.js +1 -1
- package/lib/openapi/routes/plugin-routes.js +1 -1
- package/lib/openapi/routes/quota-routes.js +1 -1
- package/lib/openapi/schema-registry.js +1 -1
- package/lib/routes/health.js +1 -1
- package/lib/routes/index.js +1 -1
- package/lib/services/ai-call-weight.js +1 -1
- package/lib/services/alert-delivery.js +1 -1
- package/lib/services/api-key-exchange.js +1 -1
- package/lib/services/audit-context.js +1 -1
- package/lib/services/audit-spool.js +1 -1
- package/lib/services/cache-service.js +1 -1
- package/lib/services/circuit-breaker.js +1 -1
- package/lib/services/compliance-client.js +1 -1
- package/lib/services/compliance-event-subscriber.js +1 -1
- package/lib/services/durable-event-bus.js +1 -1
- package/lib/services/ecosystem-notify-client.d.ts +7 -1
- package/lib/services/ecosystem-notify-client.js +9 -3
- package/lib/services/entity-events.js +1 -1
- package/lib/services/env-redis.js +1 -1
- package/lib/services/http-client.js +19 -3
- package/lib/services/index.d.ts +1 -1
- package/lib/services/index.js +2 -2
- package/lib/services/jwks-cache.js +1 -1
- package/lib/services/leader-lock.js +1 -1
- package/lib/services/notification-channels.js +1 -1
- package/lib/services/org-ai-client.js +1 -1
- package/lib/services/pagerduty-inbound.js +1 -1
- package/lib/services/pagerduty.js +1 -1
- package/lib/services/quota-increment-batcher.js +1 -1
- package/lib/services/quota.js +1 -1
- package/lib/services/remote-audit-client.js +1 -1
- package/lib/services/retry-forever.js +1 -1
- package/lib/services/retry-strategy.js +1 -1
- package/lib/services/s3-client.js +1 -1
- package/lib/services/scheduler.js +1 -1
- package/lib/services/service-boot.js +1 -1
- package/lib/services/service-keys.js +2 -2
- package/lib/services/sse-ticket-store.js +1 -1
- package/lib/services/system-notification.js +1 -1
- package/lib/services/token-revocation.js +1 -1
- package/lib/services/version-vuln-policy.d.ts +11 -0
- package/lib/services/version-vuln-policy.js +33 -7
- package/lib/types/ai-catalog.js +1 -1
- package/lib/types/ask-proposals.d.ts +23 -0
- package/lib/types/ask-proposals.js +29 -1
- package/lib/types/audit-events.js +1 -1
- package/lib/types/build-catalog.d.ts +65 -0
- package/lib/types/build-catalog.js +95 -1
- package/lib/types/catalog-metadata.js +1 -1
- package/lib/types/common.js +1 -1
- package/lib/types/compliance-exemption.js +1 -1
- package/lib/types/ecosystem-notifications.d.ts +9 -0
- package/lib/types/ecosystem-notifications.js +15 -6
- package/lib/types/ecosystem.d.ts +1 -6
- package/lib/types/ecosystem.js +18 -5
- package/lib/types/error-codes.js +1 -1
- package/lib/types/feature-flags.d.ts +17 -1
- package/lib/types/feature-flags.js +1 -1
- package/lib/types/http.js +1 -1
- package/lib/types/index.d.ts +3 -3
- package/lib/types/index.js +4 -4
- package/lib/types/metadata-keys.js +1 -1
- package/lib/types/permissions.d.ts +60 -13
- package/lib/types/permissions.js +63 -14
- package/lib/types/pipeline-template.js +1 -1
- package/lib/types/pipeline.js +1 -1
- package/lib/types/plugin-catalog.js +1 -1
- package/lib/types/plugin-health.js +1 -1
- package/lib/types/plugin-scan.d.ts +69 -0
- package/lib/types/plugin-scan.js +77 -1
- package/lib/types/quota-catalog.js +15 -2
- package/lib/types/quota-tiers.d.ts +27 -160
- package/lib/types/quota-tiers.js +47 -255
- package/lib/types/remote-audit-actions.d.ts +1 -1
- package/lib/types/remote-audit-actions.js +9 -1
- package/lib/types/reserved-tags.js +1 -1
- package/lib/types/tier-limits.d.ts +210 -0
- package/lib/types/tier-limits.js +254 -0
- package/lib/types/usage-projection.js +1 -1
- package/lib/types/visibility.js +1 -1
- package/lib/types/wire-vocabulary.d.ts +7 -0
- package/lib/types/wire-vocabulary.js +7 -1
- package/lib/utils/alias-resolver.js +1 -1
- package/lib/utils/api-key.js +1 -1
- package/lib/utils/audit.js +1 -1
- package/lib/utils/aws-scrub.js +3 -3
- package/lib/utils/compliance-attributes.js +1 -1
- package/lib/utils/concurrency-gate.d.ts +98 -0
- package/lib/utils/concurrency-gate.js +110 -0
- package/lib/utils/concurrency.js +1 -1
- package/lib/utils/crash-handlers.js +1 -1
- package/lib/utils/date.js +1 -1
- package/lib/utils/dsse.js +1 -1
- package/lib/utils/env.d.ts +11 -0
- package/lib/utils/env.js +14 -1
- package/lib/utils/headers.js +1 -1
- package/lib/utils/identity.js +1 -1
- package/lib/utils/index.d.ts +1 -0
- package/lib/utils/index.js +2 -1
- package/lib/utils/jwk.js +2 -2
- package/lib/utils/logger.js +1 -1
- package/lib/utils/metric-emitter.js +1 -1
- package/lib/utils/object.js +1 -1
- package/lib/utils/params.js +1 -1
- package/lib/utils/plugin-compliance.d.ts +9 -1
- package/lib/utils/plugin-compliance.js +1 -1
- package/lib/utils/proof-of-work.js +1 -1
- package/lib/utils/response.js +1 -1
- package/lib/utils/retention.js +1 -1
- package/lib/utils/safe-require.js +1 -1
- package/lib/utils/secret-encryption.js +1 -1
- package/lib/utils/secret-rotation.js +1 -1
- package/lib/utils/secure-compare.js +1 -1
- package/lib/utils/sensitive-patterns.js +1 -1
- package/lib/utils/service-registry.js +1 -1
- package/lib/utils/ssrf.js +1 -1
- package/lib/validation/ai-schemas.js +1 -1
- package/lib/validation/common-schemas.js +1 -1
- package/lib/validation/dockerfile-static.js +1 -1
- package/lib/validation/index.d.ts +1 -1
- package/lib/validation/index.js +2 -2
- package/lib/validation/message-schemas.d.ts +73 -0
- package/lib/validation/message-schemas.js +63 -2
- package/lib/validation/middleware.js +1 -1
- package/lib/validation/pipeline-schemas.js +1 -1
- package/lib/validation/pipeline-template-schemas.js +1 -1
- package/lib/validation/plugin-base-images.js +1 -1
- package/lib/validation/plugin-catalog-detect.js +1 -1
- package/lib/validation/plugin-catalog-metadata.js +1 -1
- package/lib/validation/plugin-heuristics.js +1 -1
- package/lib/validation/plugin-lint.js +1 -1
- package/lib/validation/plugin-name-confusable.js +1 -1
- package/lib/validation/plugin-schemas.js +1 -1
- package/lib/validation/plugin-spec-schema.js +1 -1
- package/lib/validation/plugin-template-contract.js +1 -1
- package/package.json +11 -4
|
@@ -208,13 +208,22 @@ export function nextEcosystemDigestTime(cadence, now = new Date()) {
|
|
|
208
208
|
export function renderEcosystemManagerChange(input) {
|
|
209
209
|
const verb = input.added ? 'added to' : 'removed from';
|
|
210
210
|
const by = input.actor ? ` by ${input.actor}` : '';
|
|
211
|
+
const role = input.role ?? 'Ecosystem Manager';
|
|
212
|
+
// The body describes what the ROLE does, so it can only speak for the one it
|
|
213
|
+
// was written about. For any other, say what happened and leave the
|
|
214
|
+
// capabilities to the Role itself rather than describing the wrong ones.
|
|
215
|
+
const ecosystem = role === 'Ecosystem Manager';
|
|
211
216
|
return {
|
|
212
|
-
subject: `${input.user} was ${verb} the
|
|
217
|
+
subject: `${input.user} was ${verb} the ${role} role`,
|
|
213
218
|
text: input.added
|
|
214
|
-
? `${input.user} was ${verb} the
|
|
215
|
-
+
|
|
216
|
-
|
|
217
|
-
|
|
219
|
+
? `${input.user} was ${verb} the ${role} role${by}.`
|
|
220
|
+
+ (ecosystem
|
|
221
|
+
? ' Ecosystem Managers decide publish requests, moderate submissions and reviews, verify publishers'
|
|
222
|
+
+ ' and publish advisories for the whole plugin ecosystem.'
|
|
223
|
+
: ' It carries system-org-only permissions.')
|
|
224
|
+
+ ' The role works only from the system organization and requires a two-factor sign-in.'
|
|
225
|
+
: `${input.user} was ${verb} the ${role} role${by}`
|
|
226
|
+
+ (ecosystem ? ' and can no longer manage or approve anything in the plugin ecosystem.' : '.'),
|
|
218
227
|
};
|
|
219
228
|
}
|
|
220
229
|
/**
|
|
@@ -231,4 +240,4 @@ export function renderEcosystemDigest(event, items) {
|
|
|
231
240
|
text: items.map((i) => `• ${i.subject}`).join('\n').slice(0, ECOSYSTEM_NOTIFY_TEXT_MAX),
|
|
232
241
|
};
|
|
233
242
|
}
|
|
234
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNvc3lzdGVtLW5vdGlmaWNhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvZWNvc3lzdGVtLW5vdGlmaWNhdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQWdDdEM7MEVBQzBFO0FBQzFFLE1BQU0sQ0FBQyxNQUFNLGlDQUFpQyxHQUE4RTtJQUMxSCx5QkFBeUIsRUFBRSxjQUFjO0lBQ3pDLDBCQUEwQixFQUFFLGVBQWU7SUFDM0MsMEJBQTBCLEVBQUUsZUFBZTtJQUMzQyxrQ0FBa0MsRUFBRSx1QkFBdUI7Q0FDNUQsQ0FBQztBQUtGLHFEQUFxRDtBQUNyRCxNQUFNLENBQUMsTUFBTSxzQ0FBc0MsR0FDakQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0FBd0JuRCw2Q0FBNkM7QUFDN0MsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQXVFO0lBQy9HLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSw0Q0FBNEMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUU7SUFDN0gsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLG1EQUFtRCxFQUFFLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsRUFBRSxVQUFVLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRTtJQUN4SyxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsbUNBQW1DLEVBQUUsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFO0lBQ3BILEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxpQ0FBaUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLGFB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TSxJQUFJLEdBQUcsNkJBQTZCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQ3BHLE9BQU87UUFDTCxPQUFPLEVBQUUsR0FBRyxPQUFPLFlBQVksS0FBSyxDQUFDLE1BQU0sTUFBTSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSw0QkFBNEIsQ0FBQztRQUMxRyxJQUFJLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSx5QkFBeUIsQ0FBQztLQUN4RixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFRoZSBwbHVnaW4tZWNvc3lzdGVtIG5vdGlmaWNhdGlvbiBjb250cmFjdCAoZG9jcy9wbHVnaW4tcHVibGlzaGluZy5tZCksXG4gKiBzaGFyZWQgYnkgdGhlIHNlbmRlciAodGhlIHBsdWdpbiBzZXJ2aWNlJ3MgZW5xdWV1ZSBBUEkgYW5kIGRpZ2VzdFxuICogZGlzcGF0Y2hlcikgYW5kIHRoZSByZWxheSAocGxhdGZvcm0gYFBPU1QgL2ludGVybmFsL25vdGlmeS1lbWFpbGApLlxuICpcbiAqIFJlY2lwaWVudHMgdHJhdmVsIGFzIFJVTEVTLCBuZXZlciBhcyBsaXN0czogcGxhdGZvcm0gcmVzb2x2ZXMgZWFjaFxuICoge0BsaW5rIEVjb3N5c3RlbVJlY2lwaWVudFNwZWN9IGFnYWluc3QgaXRzIHVzZXIvUm9sZSBkaXJlY3RvcnkgQVQgU0VORCBUSU1FLFxuICogc28gYSBkaWdlc3QgdGhhdCBmbHVzaGVzIHRvbW9ycm93IHJlYWNoZXMgdG9tb3Jyb3cncyBtb2RlcmF0b3JzLCB0aGUgcGx1Z2luXG4gKiBzZXJ2aWNlIG5ldmVyIGhhbmRsZXMgYW4gZW1haWwgYWRkcmVzcyBvciBhIG1lbWJlcnNoaXAgbGlzdCwgYW5kIGEgcHVibGlzaGVyXG4gKiBjYW4gbmV2ZXIgbGVhcm4gd2hvIGluc3RhbGxlZCB0aGVpciBwbHVnaW4gKHRoZSByZWxheSBtYWlscyBlYWNoIHJlY2lwaWVudFxuICogaW5kaXZpZHVhbGx5IOKAlCBubyBzaGFyZWQgVG86IGxpbmUpLlxuICovXG5cbi8qKiBBIG5vdGlmaWNhdGlvbiBldmVudCBudW1iZXIuICovXG5leHBvcnQgdHlwZSBFY29zeXN0ZW1Ob3RpZmljYXRpb25FdmVudElkID1cbiAgfCAnTjEnIHwgJ04yJyB8ICdOMycgfCAnTjQnIHwgJ041JyB8ICdONicgfCAnTjcnIHwgJ044JyB8ICdOOScgfCAnTjEwJ1xuICB8ICdOMTEnIHwgJ04xMicgfCAnTjEzJyB8ICdOMTQnIHwgJ04xNScgfCAnTjE2JyB8ICdOMTcnIHwgJ04xOCcgfCAnTjE5JyB8ICdOMjAnXG4gIHwgJ04yMScgfCAnTjIyJyB8ICdOMjMnIHwgJ04yNCcgfCAnTjI1JyB8ICdOMjYnIHwgJ04yNycgfCAnTjI4JyB8ICdOMjknXG4gIHwgJ04zMCcgfCAnTjMxJyB8ICdOMzInIHwgJ04zMyc7XG5cbi8qKiBBIGRlbGl2ZXJ5IGNoYW5uZWwuIEluLWFwcCBpcyB0aGUgc291cmNlIG9mIHRydXRoOyBlbWFpbCBpcyB0aGUgY291cnRlc3kgY29weS4gKi9cbmV4cG9ydCB0eXBlIEVjb3N5c3RlbU5vdGlmaWNhdGlvbkNoYW5uZWwgPSAnaW5fYXBwJyB8ICdlbWFpbCc7XG5cbi8qKiBBIHBlci11c2VyIEVNQUlMIG9wdC1vdXQga2V5LiBJbi1hcHAgaXMgbmV2ZXIgb3B0aW9uYWwuICovXG5leHBvcnQgdHlwZSBFY29zeXN0ZW1FbWFpbFByZWZlcmVuY2UgPVxuICB8ICdlY29zeXN0ZW0ucmV2aWV3cy5lbWFpbCdcbiAgfCAnZWNvc3lzdGVtLnVwZ3JhZGVzLmVtYWlsJ1xuICB8ICdlY29zeXN0ZW0uaW5zdGFsbHMuZW1haWwnXG4gIHwgJ2Vjb3N5c3RlbS5tb2RlcmF0aW9uRGlnZXN0LmVtYWlsJztcblxuLyoqIFRoZSBmaWVsZCBlYWNoIHByZWZlcmVuY2Uga2V5IGlzIHN0b3JlZCB1bmRlciBpbiB0aGUgdXNlcidzIHBlci1vcmdcbiAqICBgbm90aWZpY2F0aW9ucy5lY29zeXN0ZW1gIHByZWZlcmVuY2VzIChwbGF0Zm9ybSBgVXNlclByZWZlcmVuY2VzYCkuICovXG5leHBvcnQgY29uc3QgRUNPU1lTVEVNX0VNQUlMX1BSRUZFUkVOQ0VfRklFTERTOiBSZWFkb25seTxSZWNvcmQ8RWNvc3lzdGVtRW1haWxQcmVmZXJlbmNlLCBFY29zeXN0ZW1FbWFpbFByZWZlcmVuY2VGaWVsZD4+ID0ge1xuICAnZWNvc3lzdGVtLnJldmlld3MuZW1haWwnOiAncmV2aWV3c0VtYWlsJyxcbiAgJ2Vjb3N5c3RlbS51cGdyYWRlcy5lbWFpbCc6ICd1cGdyYWRlc0VtYWlsJyxcbiAgJ2Vjb3N5c3RlbS5pbnN0YWxscy5lbWFpbCc6ICdpbnN0YWxsc0VtYWlsJyxcbiAgJ2Vjb3N5c3RlbS5tb2RlcmF0aW9uRGlnZXN0LmVtYWlsJzogJ21vZGVyYXRpb25EaWdlc3RFbWFpbCcsXG59O1xuXG4vKiogU3RvcmVkIGZpZWxkIG5hbWVzIG9mIHRoZSBlY29zeXN0ZW0gZW1haWwgcHJlZmVyZW5jZXMgKGFsbCBkZWZhdWx0IGB0cnVlYCkuICovXG5leHBvcnQgdHlwZSBFY29zeXN0ZW1FbWFpbFByZWZlcmVuY2VGaWVsZCA9ICdyZXZpZXdzRW1haWwnIHwgJ3VwZ3JhZGVzRW1haWwnIHwgJ2luc3RhbGxzRW1haWwnIHwgJ21vZGVyYXRpb25EaWdlc3RFbWFpbCc7XG5cbi8qKiBFdmVyeSBzdG9yZWQgZWNvc3lzdGVtIGVtYWlsLXByZWZlcmVuY2UgZmllbGQuICovXG5leHBvcnQgY29uc3QgRUNPU1lTVEVNX0VNQUlMX1BSRUZFUkVOQ0VfRklFTERfTkFNRVM6IHJlYWRvbmx5IEVjb3N5c3RlbUVtYWlsUHJlZmVyZW5jZUZpZWxkW10gPVxuICBPYmplY3QudmFsdWVzKEVDT1NZU1RFTV9FTUFJTF9QUkVGRVJFTkNFX0ZJRUxEUyk7XG5cbi8qKiBIb3cgb2Z0ZW4gYSBiYXRjaGVkIGVtYWlsIGlzIGZsdXNoZWQuICovXG5leHBvcnQgdHlwZSBFY29zeXN0ZW1EaWdlc3RDYWRlbmNlID0gJ2hvdXJseScgfCAnZGFpbHknIHwgJ3dlZWtseSc7XG5cbi8qKiBPbmUgZXZlbnQncyBkZWxpdmVyeSBydWxlcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRWNvc3lzdGVtRXZlbnRTcGVjIHtcbiAgLyoqIE9uZS1saW5lIGRlc2NyaXB0aW9uIChkb2NzLCBsb2dzKS4gKi9cbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgLyoqIENoYW5uZWxzIHRoZSBldmVudCBpcyBkZWxpdmVyZWQgb24uICovXG4gIGNoYW5uZWxzOiByZWFkb25seSBFY29zeXN0ZW1Ob3RpZmljYXRpb25DaGFubmVsW107XG4gIC8qKlxuICAgKiBFbWFpbCBvcHQtb3V0IGtleSwgb3IgYG51bGxgIHdoZW4gdGhlIGVtYWlsIGlzIFRSQU5TQUNUSU9OQUwgLyBzZWN1cml0eVxuICAgKiAoTjEsIE4z4oCTTjUsIE434oCTTjEwLCBOMTjigJNOMjMsIE4yNSwgTjI44oCTTjMzIGNhbid0IGJlIHR1cm5lZCBvZmYpLlxuICAgKi9cbiAgcHJlZmVyZW5jZTogRWNvc3lzdGVtRW1haWxQcmVmZXJlbmNlIHwgbnVsbDtcbiAgLyoqIFdoZW4gdGhlIGVtYWlsIGlzIGJhdGNoZWQgcmF0aGVyIHRoYW4gaW1tZWRpYXRlLCBpdHMgY2FkZW5jZS4gKi9cbiAgZGlnZXN0PzogRWNvc3lzdGVtRGlnZXN0Q2FkZW5jZTtcbiAgLyoqIEFsbG93ZWQgdG8gYWRkcmVzcyBhIHJhdyBlbWFpbDogdGhlIGFub255bW91cyBTVUJNSVRURVIgKHRoZVxuICAgKiAgdHJhbnNhY3Rpb25hbCBzdWJtaXNzaW9uIG5vdGljZXMpIGFuZCBhbiBvcmcncyBWRVJJRklFRCBleHRlcm5hbFxuICAgKiAgc2VjdXJpdHkgYWRkcmVzcyAodGhlIHBsdWdpbiBzZWN1cml0eSBub3RpY2VzIE4zMOKAk04zMykuICovXG4gIGFsbG93c0FkZHJlc3M/OiBib29sZWFuO1xufVxuXG4vKiogVGhlIG5vdGlmaWNhdGlvbiBldmVudCB0YWJsZSwgYXMgZGF0YS4gKi9cbmV4cG9ydCBjb25zdCBFQ09TWVNURU1fTk9USUZJQ0FUSU9OX0VWRU5UUzogUmVhZG9ubHk8UmVjb3JkPEVjb3N5c3RlbU5vdGlmaWNhdGlvbkV2ZW50SWQsIEVjb3N5c3RlbUV2ZW50U3BlYz4+ID0ge1xuICBOMTogeyBkZXNjcmlwdGlvbjogJ0Fub255bW91cyBzdWJtaXNzaW9uIHJlY2VpdmVkIChtYWdpYyBsaW5rKScsIGNoYW5uZWxzOiBbJ2VtYWlsJ10sIHByZWZlcmVuY2U6IG51bGwsIGFsbG93c0FkZHJlc3M6IHRydWUgfSxcbiAgTjI6IHsgZGVzY3JpcHRpb246ICdTdWJtaXNzaW9uIHZlcmlmaWVkLCBlbnRlcmVkIHRoZSBtb2RlcmF0aW9uIHF1ZXVlJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6ICdlY29zeXN0ZW0ubW9kZXJhdGlvbkRpZ2VzdC5lbWFpbCcsIGRpZ2VzdDogJ2RhaWx5JyB9LFxuICBOMzogeyBkZXNjcmlwdGlvbjogJ1N1Ym1pc3Npb24gZmFpbGVkIGF1dG9tYXRlZCBnYXRlcycsIGNoYW5uZWxzOiBbJ2VtYWlsJ10sIHByZWZlcmVuY2U6IG51bGwsIGFsbG93c0FkZHJlc3M6IHRydWUgfSxcbiAgTjQ6IHsgZGVzY3JpcHRpb246ICdTdWJtaXNzaW9uIGFwcHJvdmVkIG9yIHJlamVjdGVkJywgY2hhbm5lbHM6IFsnZW1haWwnXSwgcHJlZmVyZW5jZTogbnVsbCwgYWxsb3dzQWRkcmVzczogdHJ1ZSB9LFxuICBONTogeyBkZXNjcmlwdGlvbjogJ1N1Ym1pc3Npb24gY2xhaW1lZCBieSBhbiBhY2NvdW50JywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6IG51bGwgfSxcbiAgTjY6IHsgZGVzY3JpcHRpb246ICdWZXJpZmllZC1wdWJsaXNoZXIgYXBwbGljYXRpb24gc3VibWl0dGVkJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6ICdlY29zeXN0ZW0ubW9kZXJhdGlvbkRpZ2VzdC5lbWFpbCcsIGRpZ2VzdDogJ2RhaWx5JyB9LFxuICBONzogeyBkZXNjcmlwdGlvbjogJ1ZlcmlmaWVkIGFwcGxpY2F0aW9uIGFwcHJvdmVkIG9yIHJlamVjdGVkJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6IG51bGwgfSxcbiAgTjg6IHsgZGVzY3JpcHRpb246ICdNb2RlcmF0aW9uIGFjdGlvbiBvbiBhIGxpc3RpbmcgKHN1c3BlbmQsIHlhbmssIHRha2Vkb3duKScsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiBudWxsIH0sXG4gIE45OiB7IGRlc2NyaXB0aW9uOiAnT3duZXJzaGlwIHRyYW5zZmVyIHJlcXVlc3RlZCcsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiBudWxsIH0sXG4gIE4xMDogeyBkZXNjcmlwdGlvbjogJ093bmVyc2hpcCB0cmFuc2ZlciBhY2NlcHRlZCwgZGVjbGluZWQsIGFwcHJvdmVkIG9yIHJlamVjdGVkJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6IG51bGwgfSxcbiAgTjExOiB7IGRlc2NyaXB0aW9uOiAnSW5zdGFsbCByZXF1ZXN0ZWQgKHBvbGljeSByZXF1aXJlcyBhcHByb3ZhbCknLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogJ2Vjb3N5c3RlbS5pbnN0YWxscy5lbWFpbCcgfSxcbiAgTjEyOiB7IGRlc2NyaXB0aW9uOiAnSW5zdGFsbCBhcHByb3ZlZCBvciBkZW5pZWQnLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogJ2Vjb3N5c3RlbS5pbnN0YWxscy5lbWFpbCcgfSxcbiAgTjEzOiB7IGRlc2NyaXB0aW9uOiAnTmV3IHZlcnNpb24gYXZhaWxhYmxlIHdpdGhpbiBhbiBpbnN0YWxsXFwncyBwb2xpY3knLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogJ2Vjb3N5c3RlbS51cGdyYWRlcy5lbWFpbCcsIGRpZ2VzdDogJ3dlZWtseScgfSxcbiAgTjE0OiB7IGRlc2NyaXB0aW9uOiAnTGlzdGluZyBkZXByZWNhdGVkIG9yIHVubWFpbnRhaW5lZCcsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiAnZWNvc3lzdGVtLnVwZ3JhZGVzLmVtYWlsJyB9LFxuICBOMTU6IHsgZGVzY3JpcHRpb246ICdOZXcgb3IgZWRpdGVkIHJldmlldyBvbiBhIGxpc3RpbmcnLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogJ2Vjb3N5c3RlbS5yZXZpZXdzLmVtYWlsJywgZGlnZXN0OiAnaG91cmx5JyB9LFxuICBOMTY6IHsgZGVzY3JpcHRpb246ICdQdWJsaXNoZXIgcmVwbGllZCB0byB5b3VyIHJldmlldycsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiAnZWNvc3lzdGVtLnJldmlld3MuZW1haWwnIH0sXG4gIE4xNzogeyBkZXNjcmlwdGlvbjogJ1JldmlldyBoZWxkIChyZXBvcnRzLCBidXJzdCwgZmlsdGVyKScsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiAnZWNvc3lzdGVtLm1vZGVyYXRpb25EaWdlc3QuZW1haWwnLCBkaWdlc3Q6ICdkYWlseScgfSxcbiAgTjE4OiB7IGRlc2NyaXB0aW9uOiAnWW91ciByZXZpZXcgd2FzIHJlbW92ZWQnLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogbnVsbCB9LFxuICBOMTk6IHsgZGVzY3JpcHRpb246ICdSZXZpZXcgZmxhZ2dlZCBhcyBhIHNlY3VyaXR5IGlzc3VlJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6IG51bGwgfSxcbiAgTjIwOiB7IGRlc2NyaXB0aW9uOiAnQWR2aXNvcnkgZHJhZnQgYXV0by1jcmVhdGVkIChDVkUgcmVzY2FuKScsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiBudWxsIH0sXG4gIE4yMTogeyBkZXNjcmlwdGlvbjogJ0Fkdmlzb3J5IHB1Ymxpc2hlZCBvciB3aXRoZHJhd24nLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogbnVsbCB9LFxuICBOMjI6IHsgZGVzY3JpcHRpb246ICdNb2RlcmF0aW9uIFNMQSBicmVhY2gnLCBjaGFubmVsczogWydlbWFpbCddLCBwcmVmZXJlbmNlOiBudWxsIH0sXG4gIE4yMzogeyBkZXNjcmlwdGlvbjogJ0FkZGVkIHRvIG9yIHJlbW92ZWQgZnJvbSB0aGUgRWNvc3lzdGVtIE1hbmFnZXIgcm9sZScsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiBudWxsIH0sXG4gIE4yNDogeyBkZXNjcmlwdGlvbjogJ1B1Ymxpc2ggcmVxdWVzdCBzdWJtaXR0ZWQnLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogJ2Vjb3N5c3RlbS5tb2RlcmF0aW9uRGlnZXN0LmVtYWlsJywgZGlnZXN0OiAnZGFpbHknIH0sXG4gIE4yNTogeyBkZXNjcmlwdGlvbjogJ1B1Ymxpc2ggcmVxdWVzdCBhcHByb3ZlZCBvciByZWplY3RlZCcsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiBudWxsIH0sXG4gIE4yNjogeyBkZXNjcmlwdGlvbjogJ0xpc3Rpbmcgb3IgdmVyc2lvbiBwYXVzZWQgYnkgaXRzIHB1Ymxpc2hlcicsIGNoYW5uZWxzOiBbJ2luX2FwcCddLCBwcmVmZXJlbmNlOiAnZWNvc3lzdGVtLnVwZ3JhZGVzLmVtYWlsJyB9LFxuICBOMjc6IHsgZGVzY3JpcHRpb246ICdJbnN0YWxsZWQgbGlzdGluZyBhdXRvLXVwZGF0ZWQgd2l0aGluIGl0cyByYW5nZScsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiAnZWNvc3lzdGVtLnVwZ3JhZGVzLmVtYWlsJywgZGlnZXN0OiAnd2Vla2x5JyB9LFxuICBOMjg6IHsgZGVzY3JpcHRpb246ICdBIHJlcXVlc3QgbmVlZHMgYSBzZWNvbmQgYXBwcm92YWwnLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogbnVsbCB9LFxuICBOMjk6IHsgZGVzY3JpcHRpb246ICdQbGFuIGNoYW5nZSBhZmZlY3RzIHB1Ymxpc2hpbmcnLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogbnVsbCB9LFxuICAvLyBQZXItb3JnIHBsdWdpbiBzZWN1cml0eSBub3RpY2VzIChkb2NzL3BsdWdpbi1wdWJsaXNoaW5nLm1kIFwiU2NhbiBnYXRlc1wiKS5cbiAgLy8gUmVjaXBpZW50cyBmb2xsb3cgdGhlIG9yZydzIHBsdWdpbiBzZWN1cml0eSBub3RpZmljYXRpb24gc2V0dGluZ3M7IHRoZSBvcmcnc1xuICAvLyB3ZWJob29rIChpZiBhbnkpIGlzIHNlbnQgYnkgdGhlIHBsdWdpbiBzZXJ2aWNlIGl0c2VsZi4gTjMxJ3MgZW1haWwgaG9ub3JzXG4gIC8vIHRoZSBvcmcncyBkaWdlc3Qgc2V0dGluZyAodGhlIHNlbmRlciBiYXRjaGVzIGl0KSwgTjMwIGlzIGFsd2F5cyBpbW1lZGlhdGUuXG4gIE4zMDogeyBkZXNjcmlwdGlvbjogJ1BsdWdpbiB2ZXJzaW9uIGJsb2NrZWQgKHVuc2Nhbm5lZCBvciBmaXhhYmxlIENyaXRpY2FsKScsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiBudWxsLCBhbGxvd3NBZGRyZXNzOiB0cnVlIH0sXG4gIE4zMTogeyBkZXNjcmlwdGlvbjogJ1Jlc2NhbiBmb3VuZCBuZXcgQ3JpdGljYWwvSGlnaCBpbiBhIHBsdWdpbiB2ZXJzaW9uJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6IG51bGwsIGFsbG93c0FkZHJlc3M6IHRydWUgfSxcbiAgLy8gUGlwZWxpbmUtb3duZXIgbm90aWNlczogYSBsb29rdXAgLyBydW50aW1lIGNoZWNrIFJFRlVTRUQgYSBwaXBlbGluZSdzIHBsdWdpblxuICAvLyB2ZXJzaW9uIChkZWR1cGxpY2F0ZWQgcGVyIHBpcGVsaW5lICsgdmVyc2lvbiBwZXIgZGF5KSwgYW5kIGEgdGltZS1ib3hlZCByaXNrXG4gIC8vIGFjY2VwdGFuY2Ugb2YgYSBwaXBlbGluZSdzIGZpbmRpbmdzIExBUFNFRCAodGhlIGZpbmRpbmdzIGFyZSBsaXZlIGFnYWluKS5cbiAgLy8gUm91dGVkIHRvIHRoZSBvcmcncyBwaXBlbGluZSB3cml0ZXJzIHVuZGVyIHRoZSBzYW1lIHNlY3VyaXR5IHNldHRpbmdzLlxuICBOMzI6IHsgZGVzY3JpcHRpb246ICdQaXBlbGluZSBibG9ja2VkIGJ5IGEgcGx1Z2luIHZ1bG5lcmFiaWxpdHkgcG9saWN5JywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6IG51bGwsIGFsbG93c0FkZHJlc3M6IHRydWUgfSxcbiAgTjMzOiB7IGRlc2NyaXB0aW9uOiAnUGlwZWxpbmUgdnVsbmVyYWJpbGl0eSByaXNrIGFjY2VwdGFuY2UgbGFwc2VkJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6IG51bGwsIGFsbG93c0FkZHJlc3M6IHRydWUgfSxcbn07XG5cbi8qKiBXaGV0aGVyIGB2YWx1ZWAgaXMgYSBub3RpZmljYXRpb24gZXZlbnQgbnVtYmVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRWNvc3lzdGVtTm90aWZpY2F0aW9uRXZlbnQodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBFY29zeXN0ZW1Ob3RpZmljYXRpb25FdmVudElkIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKEVDT1NZU1RFTV9OT1RJRklDQVRJT05fRVZFTlRTLCB2YWx1ZSk7XG59XG5cbi8qKiBPcmctbG9jYWwgcGVybWlzc2lvbnMgYW4ge0BsaW5rIEVjb3N5c3RlbVJlY2lwaWVudFNwZWN9IGBvcmdfcGVybWlzc2lvbmAgcnVsZSBtYXkgbmFtZS4gKi9cbmV4cG9ydCB0eXBlIEVjb3N5c3RlbU9yZ1JlY2lwaWVudFBlcm1pc3Npb24gPSAncHVibGlzaGVyczptYW5hZ2UnIHwgJ3BsdWdpbl9pbnN0YWxsczptYW5hZ2UnIHwgJ3BsdWdpbnM6d3JpdGUnIHwgJ3BpcGVsaW5lczp3cml0ZSc7XG4vKiogU3lzdGVtLW9yZyBwZXJtaXNzaW9ucyBhIGBtb2RlcmF0b3JzYCBydWxlIG1heSBuYW1lLiAqL1xuZXhwb3J0IHR5cGUgRWNvc3lzdGVtTW9kZXJhdG9yUGVybWlzc2lvbiA9ICdwbHVnaW5zOm1vZGVyYXRlJyB8ICdwdWJsaXNoZXJzOnZlcmlmeSc7XG5cbi8qKlxuICogQSByZWNpcGllbnQgUlVMRSwgcmVzb2x2ZWQgYnkgcGxhdGZvcm0gYXQgc2VuZCB0aW1lOlxuICpcbiAqICAtIGB1c2VyYCDigJQgb25lIHVzZXIgKFJlcXVlc3RlciwgUmV2aWV3IGF1dGhvciwgdGhlIGFmZmVjdGVkIHVzZXIgb2YgTjIzKS5cbiAqICAgIGBvcmdJZGAgcGlja3MgdGhlIGluYm94OyBkZWZhdWx0cyB0byB0aGUgdXNlcidzIGxhc3QgYWN0aXZlIG9yZy5cbiAqICAtIGBvcmdfcGVybWlzc2lvbmAg4oCUIGFjdGl2ZSBtZW1iZXJzIG9mIGBvcmdJZGAgaG9sZGluZyBgcGVybWlzc2lvbmBcbiAqICAgIChQdWJsaXNoZXIgbWFuYWdlcnMgPSBgcHVibGlzaGVyczptYW5hZ2VgLCBPcmcgYXBwcm92ZXJzID1cbiAqICAgIGBwbHVnaW5faW5zdGFsbHM6bWFuYWdlYCwgcGx1Z2luIHdyaXRlcnMgPSBgcGx1Z2luczp3cml0ZWApLiBXaXRoXG4gKiAgICBgaW5oZXJpdEZyb21Sb290YCwgYSB0ZWFtIHdpdGggbm8gaG9sZGVycyBmYWxscyBiYWNrIHRvIGl0cyByb290IG9yZydzXG4gKiAgICBob2xkZXJzOyB3aXRoIG5vbmUgYW55d2hlcmUsIHRoZSBvcmcncyBvd25lcnMuXG4gKiAgLSBgb3JnX21lbWJlcnNgIOKAlCB0aGUgbmFtZWQgdXNlcnMsIGJ1dCBvbmx5IHRob3NlIHdobyBhcmUgQUNUSVZFIG1lbWJlcnMgb2ZcbiAqICAgIGBvcmdJZGAgYXQgc2VuZCB0aW1lIChhbiBvcmcncyBjaG9zZW4gc2VjdXJpdHkgcmVjaXBpZW50czogYSBzdGFsZSBpZCwgb3JcbiAqICAgIHNvbWVvbmUgd2hvIGxlZnQsIHJlY2VpdmVzIG5vdGhpbmcpLlxuICogIC0gYG1vZGVyYXRvcnNgIOKAlCB0aGUgc3lzdGVtIG9yZydzIGhvbGRlcnMgb2YgYHBlcm1pc3Npb25gICh0aGUgRWNvc3lzdGVtXG4gKiAgICBNYW5hZ2VyIHJvbGUpLCBtaW51cyBhbnlvbmUgd2l0aCBhIGNvbmZsaWN0IG9mIGludGVyZXN0IChtZW1iZXJzIG9mXG4gKiAgICBgZXhjbHVkZU1lbWJlcnNPZk9yZ0lkYCwgb3IgdGhlIGxpc3RlZCB1c2Vycyk7IHN1cGVyYWRtaW5zIHdoZW4gZW1wdHkuXG4gKiAgLSBgc3VwZXJhZG1pbnNgIOKAlCBldmVyeSBwbGF0Zm9ybSBzdXBlcmFkbWluLlxuICogIC0gYGFkZHJlc3NgIOKAlCBhIHJhdyBhZGRyZXNzOyBvbmx5IHRoZSBhbm9ueW1vdXMgU1VCTUlUVEVSIG5vdGljZXMgKE4xLCBOMyxcbiAqICAgIE40KSwgd2hvc2UgcmVjaXBpZW50IGhhcyBubyBhY2NvdW50LCBhbmQgYW4gb3JnJ3MgVkVSSUZJRUQgZXh0ZXJuYWxcbiAqICAgIHNlY3VyaXR5IGFkZHJlc3Mgb24gdGhlIHBsdWdpbiBzZWN1cml0eSBub3RpY2VzIChOMzDigJNOMzMpLlxuICovXG5leHBvcnQgdHlwZSBFY29zeXN0ZW1SZWNpcGllbnRTcGVjID1cbiAgfCB7IGtpbmQ6ICd1c2VyJzsgdXNlcklkOiBzdHJpbmc7IG9yZ0lkPzogc3RyaW5nIH1cbiAgfCB7IGtpbmQ6ICdvcmdfcGVybWlzc2lvbic7IG9yZ0lkOiBzdHJpbmc7IHBlcm1pc3Npb246IEVjb3N5c3RlbU9yZ1JlY2lwaWVudFBlcm1pc3Npb247IGluaGVyaXRGcm9tUm9vdD86IGJvb2xlYW4gfVxuICB8IHsga2luZDogJ29yZ19tZW1iZXJzJzsgb3JnSWQ6IHN0cmluZzsgdXNlcklkczogc3RyaW5nW10gfVxuICB8IHsga2luZDogJ21vZGVyYXRvcnMnOyBwZXJtaXNzaW9uOiBFY29zeXN0ZW1Nb2RlcmF0b3JQZXJtaXNzaW9uOyBleGNsdWRlTWVtYmVyc09mT3JnSWQ/OiBzdHJpbmc7IGV4Y2x1ZGVVc2VySWRzPzogc3RyaW5nW10gfVxuICB8IHsga2luZDogJ3N1cGVyYWRtaW5zJyB9XG4gIHwgeyBraW5kOiAnYWRkcmVzcyc7IGVtYWlsOiBzdHJpbmcgfTtcblxuLyoqIFRoZSBib2R5IG9mIGFuIGVjb3N5c3RlbSBzZW5kIHRocm91Z2ggcGxhdGZvcm0ncyBub3RpZnkgcmVsYXkuICovXG5leHBvcnQgaW50ZXJmYWNlIEVjb3N5c3RlbU5vdGlmeVJlcXVlc3Qge1xuICBldmVudDogRWNvc3lzdGVtTm90aWZpY2F0aW9uRXZlbnRJZDtcbiAgcmVjaXBpZW50czogRWNvc3lzdGVtUmVjaXBpZW50U3BlY1tdO1xuICBzdWJqZWN0OiBzdHJpbmc7XG4gIC8qKiBQbGFpbi10ZXh0IGJvZHkgKGVtYWlsIGJvZHkgYW5kIGluLWFwcCBjb250ZW50KS4gKi9cbiAgdGV4dDogc3RyaW5nO1xuICAvKiogU3Vic2V0IG9mIHRoZSBldmVudCdzIGNoYW5uZWxzIHRvIGRlbGl2ZXIgb24gKGRlZmF1bHQ6IGFsbCBvZiB0aGVtKS4gVGhlXG4gICAqICBkaWdlc3QgZGlzcGF0Y2hlciBzZW5kcyBgWydlbWFpbCddYCBiZWNhdXNlIGluLWFwcCB3ZW50IG91dCBhdCBlbnF1ZXVlLiAqL1xuICBjaGFubmVscz86IEVjb3N5c3RlbU5vdGlmaWNhdGlvbkNoYW5uZWxbXTtcbiAgLyoqIERlbGl2ZXIgdGhlIGVtYWlsIGV2ZW4gdG8gdXNlcnMgd2hvIG9wdGVkIG91dCDigJQgZm9yIGFuIGV2ZW50IHdob3NlXG4gICAqICBub3JtYWxseS1vcHRpb25hbCBlbWFpbCBpcyBtYW5kYXRvcnkgaW4gdGhpcyBpbnN0YW5jZSAoTjI0IHlhbmssIGFkdmlzb3J5XG4gICAqICBhbmQgc2VjdXJpdHktZml4IHJlcXVlc3RzKS4gKi9cbiAgbWFuZGF0b3J5PzogYm9vbGVhbjtcbn1cblxuLyoqIEhhcmQgY2FwcywgbWF0Y2hpbmcgdGhlIG1lc3NhZ2Ugc2VydmljZSdzIG93biBsaW1pdHMuICovXG5leHBvcnQgY29uc3QgRUNPU1lTVEVNX05PVElGWV9TVUJKRUNUX01BWCA9IDUwMDtcbmV4cG9ydCBjb25zdCBFQ09TWVNURU1fTk9USUZZX1RFWFRfTUFYID0gMTAwMDA7XG5jb25zdCBNQVhfUkVDSVBJRU5UX1JVTEVTID0gNTA7XG5cbmNvbnN0IE9SR19QRVJNSVNTSU9OUzogcmVhZG9ubHkgc3RyaW5nW10gPSBbJ3B1Ymxpc2hlcnM6bWFuYWdlJywgJ3BsdWdpbl9pbnN0YWxsczptYW5hZ2UnLCAncGx1Z2luczp3cml0ZScsICdwaXBlbGluZXM6d3JpdGUnXTtcbi8qKiBBdCBtb3N0IHRoaXMgbWFueSB1c2VycyBpbiBvbmUgYG9yZ19tZW1iZXJzYCBydWxlLiAqL1xuZXhwb3J0IGNvbnN0IEVDT1NZU1RFTV9PUkdfTUVNQkVSU19NQVggPSAxMDA7XG5jb25zdCBNT0RFUkFUT1JfUEVSTUlTU0lPTlM6IHJlYWRvbmx5IHN0cmluZ1tdID0gWydwbHVnaW5zOm1vZGVyYXRlJywgJ3B1Ymxpc2hlcnM6dmVyaWZ5J107XG5jb25zdCBFTUFJTF9TSEFQRSA9IC9eW15cXHNAXStAW15cXHNAXStcXC5bXlxcc0BdKyQvO1xuXG5mdW5jdGlvbiBub25FbXB0eVN0cmluZyh2OiB1bmtub3duLCBtYXggPSAyNTUpOiB2IGlzIHN0cmluZyB7XG4gIHJldHVybiB0eXBlb2YgdiA9PT0gJ3N0cmluZycgJiYgdi50cmltKCkubGVuZ3RoID4gMCAmJiB2Lmxlbmd0aCA8PSBtYXg7XG59XG5cbmZ1bmN0aW9uIHBhcnNlUmVjaXBpZW50KHJhdzogdW5rbm93biwgc3BlYzogRWNvc3lzdGVtRXZlbnRTcGVjKTogRWNvc3lzdGVtUmVjaXBpZW50U3BlYyB8IHN0cmluZyB7XG4gIGlmICghcmF3IHx8IHR5cGVvZiByYXcgIT09ICdvYmplY3QnKSByZXR1cm4gJ2VhY2ggcmVjaXBpZW50IG11c3QgYmUgYW4gb2JqZWN0JztcbiAgY29uc3QgciA9IHJhdyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgc3dpdGNoIChyLmtpbmQpIHtcbiAgICBjYXNlICd1c2VyJzpcbiAgICAgIGlmICghbm9uRW1wdHlTdHJpbmcoci51c2VySWQpKSByZXR1cm4gJ3VzZXIgcmVjaXBpZW50IG5lZWRzIHVzZXJJZCc7XG4gICAgICBpZiAoci5vcmdJZCAhPT0gdW5kZWZpbmVkICYmICFub25FbXB0eVN0cmluZyhyLm9yZ0lkKSkgcmV0dXJuICd1c2VyIHJlY2lwaWVudCBvcmdJZCBtdXN0IGJlIGEgc3RyaW5nJztcbiAgICAgIHJldHVybiB7IGtpbmQ6ICd1c2VyJywgdXNlcklkOiByLnVzZXJJZCwgLi4uKHIub3JnSWQgPyB7IG9yZ0lkOiByLm9yZ0lkIGFzIHN0cmluZyB9IDoge30pIH07XG4gICAgY2FzZSAnb3JnX3Blcm1pc3Npb24nOlxuICAgICAgaWYgKCFub25FbXB0eVN0cmluZyhyLm9yZ0lkKSkgcmV0dXJuICdvcmdfcGVybWlzc2lvbiByZWNpcGllbnQgbmVlZHMgb3JnSWQnO1xuICAgICAgaWYgKHR5cGVvZiByLnBlcm1pc3Npb24gIT09ICdzdHJpbmcnIHx8ICFPUkdfUEVSTUlTU0lPTlMuaW5jbHVkZXMoci5wZXJtaXNzaW9uKSkgcmV0dXJuICdvcmdfcGVybWlzc2lvbiByZWNpcGllbnQgbmFtZXMgYW4gdW5zdXBwb3J0ZWQgcGVybWlzc2lvbic7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBraW5kOiAnb3JnX3Blcm1pc3Npb24nLFxuICAgICAgICBvcmdJZDogci5vcmdJZCxcbiAgICAgICAgcGVybWlzc2lvbjogci5wZXJtaXNzaW9uIGFzIEVjb3N5c3RlbU9yZ1JlY2lwaWVudFBlcm1pc3Npb24sXG4gICAgICAgIC4uLihyLmluaGVyaXRGcm9tUm9vdCA9PT0gdHJ1ZSA/IHsgaW5oZXJpdEZyb21Sb290OiB0cnVlIH0gOiB7fSksXG4gICAgICB9O1xuICAgIGNhc2UgJ29yZ19tZW1iZXJzJzoge1xuICAgICAgaWYgKCFub25FbXB0eVN0cmluZyhyLm9yZ0lkKSkgcmV0dXJuICdvcmdfbWVtYmVycyByZWNpcGllbnQgbmVlZHMgb3JnSWQnO1xuICAgICAgY29uc3QgdXNlcnMgPSByLnVzZXJJZHM7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkodXNlcnMpIHx8IHVzZXJzLmxlbmd0aCA9PT0gMCB8fCAhdXNlcnMuZXZlcnkoKHUpID0+IG5vbkVtcHR5U3RyaW5nKHUpKSkgcmV0dXJuICdvcmdfbWVtYmVycyByZWNpcGllbnQgbmVlZHMgYSBub24tZW1wdHkgdXNlcklkcyBhcnJheSc7XG4gICAgICBpZiAodXNlcnMubGVuZ3RoID4gRUNPU1lTVEVNX09SR19NRU1CRVJTX01BWCkgcmV0dXJuIGBvcmdfbWVtYmVycyByZWNpcGllbnQgbmFtZXMgYXQgbW9zdCAke0VDT1NZU1RFTV9PUkdfTUVNQkVSU19NQVh9IHVzZXJzYDtcbiAgICAgIHJldHVybiB7IGtpbmQ6ICdvcmdfbWVtYmVycycsIG9yZ0lkOiByLm9yZ0lkLCB1c2VySWRzOiBbLi4ubmV3IFNldCh1c2VycyBhcyBzdHJpbmdbXSldIH07XG4gICAgfVxuICAgIGNhc2UgJ21vZGVyYXRvcnMnOiB7XG4gICAgICBpZiAodHlwZW9mIHIucGVybWlzc2lvbiAhPT0gJ3N0cmluZycgfHwgIU1PREVSQVRPUl9QRVJNSVNTSU9OUy5pbmNsdWRlcyhyLnBlcm1pc3Npb24pKSByZXR1cm4gJ21vZGVyYXRvcnMgcmVjaXBpZW50IG5hbWVzIGFuIHVuc3VwcG9ydGVkIHBlcm1pc3Npb24nO1xuICAgICAgaWYgKHIuZXhjbHVkZU1lbWJlcnNPZk9yZ0lkICE9PSB1bmRlZmluZWQgJiYgIW5vbkVtcHR5U3RyaW5nKHIuZXhjbHVkZU1lbWJlcnNPZk9yZ0lkKSkgcmV0dXJuICdleGNsdWRlTWVtYmVyc09mT3JnSWQgbXVzdCBiZSBhIHN0cmluZyc7XG4gICAgICBjb25zdCBleGNsdWRlID0gci5leGNsdWRlVXNlcklkcztcbiAgICAgIGlmIChleGNsdWRlICE9PSB1bmRlZmluZWQgJiYgKCFBcnJheS5pc0FycmF5KGV4Y2x1ZGUpIHx8ICFleGNsdWRlLmV2ZXJ5KCh1KSA9PiBub25FbXB0eVN0cmluZyh1KSkpKSByZXR1cm4gJ2V4Y2x1ZGVVc2VySWRzIG11c3QgYmUgYW4gYXJyYXkgb2YgaWRzJztcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGtpbmQ6ICdtb2RlcmF0b3JzJyxcbiAgICAgICAgcGVybWlzc2lvbjogci5wZXJtaXNzaW9uIGFzIEVjb3N5c3RlbU1vZGVyYXRvclBlcm1pc3Npb24sXG4gICAgICAgIC4uLihyLmV4Y2x1ZGVNZW1iZXJzT2ZPcmdJZCA/IHsgZXhjbHVkZU1lbWJlcnNPZk9yZ0lkOiByLmV4Y2x1ZGVNZW1iZXJzT2ZPcmdJZCBhcyBzdHJpbmcgfSA6IHt9KSxcbiAgICAgICAgLi4uKGV4Y2x1ZGUgPyB7IGV4Y2x1ZGVVc2VySWRzOiBleGNsdWRlIGFzIHN0cmluZ1tdIH0gOiB7fSksXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlICdzdXBlcmFkbWlucyc6XG4gICAgICByZXR1cm4geyBraW5kOiAnc3VwZXJhZG1pbnMnIH07XG4gICAgY2FzZSAnYWRkcmVzcyc6XG4gICAgICBpZiAoIXNwZWMuYWxsb3dzQWRkcmVzcykgcmV0dXJuICdhZGRyZXNzIHJlY2lwaWVudHMgYXJlIG9ubHkgYWxsb3dlZCBmb3IgYW5vbnltb3VzLXN1Ym1pc3Npb24gYW5kIHBsdWdpbiBzZWN1cml0eSBub3RpY2VzJztcbiAgICAgIGlmICghbm9uRW1wdHlTdHJpbmcoci5lbWFpbCwgMzIwKSB8fCAhRU1BSUxfU0hBUEUudGVzdChyLmVtYWlsKSkgcmV0dXJuICdhZGRyZXNzIHJlY2lwaWVudCBuZWVkcyBhIHZhbGlkIGVtYWlsJztcbiAgICAgIHJldHVybiB7IGtpbmQ6ICdhZGRyZXNzJywgZW1haWw6IHIuZW1haWwudHJpbSgpLnRvTG93ZXJDYXNlKCkgfTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuICd1bmtub3duIHJlY2lwaWVudCBraW5kJztcbiAgfVxufVxuXG4vKipcbiAqIFZhbGlkYXRlIGFuIHtAbGluayBFY29zeXN0ZW1Ob3RpZnlSZXF1ZXN0fS4gUmV0dXJucyB0aGUgbm9ybWFsaXplZCByZXF1ZXN0LFxuICogb3IgYW4gZXJyb3Igc3RyaW5nICh0aGUgcmVsYXkncyA0MDApLiBQdXJlLCBzbyBib3RoIHRoZSBzZW5kZXIgKGZhaWwgYXRcbiAqIGVucXVldWUsIG5vdCBhdCAwOTowMCB0b21vcnJvdykgYW5kIHRoZSByZWxheSB1c2UgdGhlIHNhbWUgcnVsZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUVjb3N5c3RlbU5vdGlmeVJlcXVlc3QoYm9keTogdW5rbm93bik6IEVjb3N5c3RlbU5vdGlmeVJlcXVlc3QgfCBzdHJpbmcge1xuICBpZiAoIWJvZHkgfHwgdHlwZW9mIGJvZHkgIT09ICdvYmplY3QnKSByZXR1cm4gJ2JvZHkgbXVzdCBiZSBhbiBvYmplY3QnO1xuICBjb25zdCBiID0gYm9keSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgaWYgKCFpc0Vjb3N5c3RlbU5vdGlmaWNhdGlvbkV2ZW50KGIuZXZlbnQpKSByZXR1cm4gJ2V2ZW50IG11c3QgYmUgb25lIG9mIE4xLi5OMzMnO1xuICBjb25zdCBzcGVjID0gRUNPU1lTVEVNX05PVElGSUNBVElPTl9FVkVOVFNbYi5ldmVudF07XG4gIGlmICghbm9uRW1wdHlTdHJpbmcoYi5zdWJqZWN0LCBFQ09TWVNURU1fTk9USUZZX1NVQkpFQ1RfTUFYKSkgcmV0dXJuIGBzdWJqZWN0IGlzIHJlcXVpcmVkIChtYXggJHtFQ09TWVNURU1fTk9USUZZX1NVQkpFQ1RfTUFYfSlgO1xuICBpZiAoIW5vbkVtcHR5U3RyaW5nKGIudGV4dCwgRUNPU1lTVEVNX05PVElGWV9URVhUX01BWCkpIHJldHVybiBgdGV4dCBpcyByZXF1aXJlZCAobWF4ICR7RUNPU1lTVEVNX05PVElGWV9URVhUX01BWH0pYDtcbiAgaWYgKCFBcnJheS5pc0FycmF5KGIucmVjaXBpZW50cykgfHwgYi5yZWNpcGllbnRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuICdyZWNpcGllbnRzIG11c3QgYmUgYSBub24tZW1wdHkgYXJyYXknO1xuICBpZiAoYi5yZWNpcGllbnRzLmxlbmd0aCA+IE1BWF9SRUNJUElFTlRfUlVMRVMpIHJldHVybiBgYXQgbW9zdCAke01BWF9SRUNJUElFTlRfUlVMRVN9IHJlY2lwaWVudCBydWxlc2A7XG4gIGNvbnN0IHJlY2lwaWVudHM6IEVjb3N5c3RlbVJlY2lwaWVudFNwZWNbXSA9IFtdO1xuICBmb3IgKGNvbnN0IHJhdyBvZiBiLnJlY2lwaWVudHMpIHtcbiAgICBjb25zdCBwYXJzZWQgPSBwYXJzZVJlY2lwaWVudChyYXcsIHNwZWMpO1xuICAgIGlmICh0eXBlb2YgcGFyc2VkID09PSAnc3RyaW5nJykgcmV0dXJuIHBhcnNlZDtcbiAgICByZWNpcGllbnRzLnB1c2gocGFyc2VkKTtcbiAgfVxuICBsZXQgY2hhbm5lbHM6IEVjb3N5c3RlbU5vdGlmaWNhdGlvbkNoYW5uZWxbXSB8IHVuZGVmaW5lZDtcbiAgaWYgKGIuY2hhbm5lbHMgIT09IHVuZGVmaW5lZCkge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShiLmNoYW5uZWxzKSB8fCBiLmNoYW5uZWxzLmxlbmd0aCA9PT0gMCkgcmV0dXJuICdjaGFubmVscyBtdXN0IGJlIGEgbm9uLWVtcHR5IGFycmF5JztcbiAgICBjb25zdCBiYWQgPSBiLmNoYW5uZWxzLmZpbHRlcigoYykgPT4gIXNwZWMuY2hhbm5lbHMuaW5jbHVkZXMoYyBhcyBFY29zeXN0ZW1Ob3RpZmljYXRpb25DaGFubmVsKSk7XG4gICAgaWYgKGJhZC5sZW5ndGggPiAwKSByZXR1cm4gYGV2ZW50ICR7Yi5ldmVudH0gaXMgbm90IGRlbGl2ZXJlZCBvbjogJHtiYWQuam9pbignLCAnKX1gO1xuICAgIGNoYW5uZWxzID0gWy4uLm5ldyBTZXQoYi5jaGFubmVscyBhcyBFY29zeXN0ZW1Ob3RpZmljYXRpb25DaGFubmVsW10pXTtcbiAgfVxuICBpZiAoYi5tYW5kYXRvcnkgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgYi5tYW5kYXRvcnkgIT09ICdib29sZWFuJykgcmV0dXJuICdtYW5kYXRvcnkgbXVzdCBiZSBhIGJvb2xlYW4nO1xuICByZXR1cm4ge1xuICAgIGV2ZW50OiBiLmV2ZW50LFxuICAgIHJlY2lwaWVudHMsXG4gICAgc3ViamVjdDogYi5zdWJqZWN0LnRyaW0oKSxcbiAgICB0ZXh0OiBiLnRleHQudHJpbSgpLFxuICAgIC4uLihjaGFubmVscyA/IHsgY2hhbm5lbHMgfSA6IHt9KSxcbiAgICAuLi4oYi5tYW5kYXRvcnkgPT09IHRydWUgPyB7IG1hbmRhdG9yeTogdHJ1ZSB9IDoge30pLFxuICB9O1xufVxuXG4vKiogVGhlIFVUQyBob3VyIGRpZ2VzdHMgZmx1c2ggYXQgKFwiZGFpbHkgZGlnZXN0IGVtYWlsICgwOTowMCBVVEMpXCIpLiAqL1xuZXhwb3J0IGNvbnN0IEVDT1NZU1RFTV9ESUdFU1RfSE9VUl9VVEMgPSA5O1xuXG4vKipcbiAqIFRoZSBuZXh0IGZsdXNoIHRpbWUgZm9yIGEgZGlnZXN0IGNhZGVuY2UsIHN0cmljdGx5IGFmdGVyIGBub3dgOlxuICogYGhvdXJseWAg4oaSIHRoZSBuZXh0IHRvcCBvZiB0aGUgaG91cjsgYGRhaWx5YCDihpIgdGhlIG5leHQgMDk6MDAgVVRDO1xuICogYHdlZWtseWAg4oaSIHRoZSBuZXh0IE1vbmRheSAwOTowMCBVVEMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBuZXh0RWNvc3lzdGVtRGlnZXN0VGltZShjYWRlbmNlOiBFY29zeXN0ZW1EaWdlc3RDYWRlbmNlLCBub3c6IERhdGUgPSBuZXcgRGF0ZSgpKTogRGF0ZSB7XG4gIGNvbnN0IHQgPSBuZXcgRGF0ZShub3cuZ2V0VGltZSgpKTtcbiAgaWYgKGNhZGVuY2UgPT09ICdob3VybHknKSB7XG4gICAgdC5zZXRVVENNaW51dGVzKDAsIDAsIDApO1xuICAgIHQuc2V0VVRDSG91cnModC5nZXRVVENIb3VycygpICsgMSk7XG4gICAgcmV0dXJuIHQ7XG4gIH1cbiAgdC5zZXRVVENIb3VycyhFQ09TWVNURU1fRElHRVNUX0hPVVJfVVRDLCAwLCAwLCAwKTtcbiAgaWYgKHQuZ2V0VGltZSgpIDw9IG5vdy5nZXRUaW1lKCkpIHQuc2V0VVRDRGF0ZSh0LmdldFVUQ0RhdGUoKSArIDEpO1xuICBpZiAoY2FkZW5jZSA9PT0gJ3dlZWtseScpIHtcbiAgICAvLyBnZXRVVENEYXk6IDAgPSBTdW5kYXkg4oCmIDEgPSBNb25kYXkuXG4gICAgd2hpbGUgKHQuZ2V0VVRDRGF5KCkgIT09IDEpIHQuc2V0VVRDRGF0ZSh0LmdldFVUQ0RhdGUoKSArIDEpO1xuICB9XG4gIHJldHVybiB0O1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFRlbXBsYXRlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKiBBIHJlbmRlcmVkIG5vdGljZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRWNvc3lzdGVtTm90aWZpY2F0aW9uQ29udGVudCB7XG4gIHN1YmplY3Q6IHN0cmluZztcbiAgdGV4dDogc3RyaW5nO1xufVxuXG4vKipcbiAqIE4yMyDigJQgc29tZW9uZSB3YXMgYWRkZWQgdG8gb3IgcmVtb3ZlZCBmcm9tIHRoZSBzeXN0ZW0gb3JnJ3MgRWNvc3lzdGVtXG4gKiBNYW5hZ2VyIHJvbGUuIFNlbnQgdG8gZXZlcnkgc3VwZXJhZG1pbiBhbmQgdG8gdGhlIGFmZmVjdGVkIHVzZXI7XG4gKiB0cmFuc2FjdGlvbmFsIChubyBvcHQtb3V0KS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlckVjb3N5c3RlbU1hbmFnZXJDaGFuZ2UoaW5wdXQ6IHtcbiAgLyoqIFRoZSBhZmZlY3RlZCB1c2VyJ3MgZGlzcGxheSBuYW1lIG9yIGVtYWlsLiAqL1xuICB1c2VyOiBzdHJpbmc7XG4gIGFkZGVkOiBib29sZWFuO1xuICAvKiogV2hvIG1hZGUgdGhlIGNoYW5nZSAoc3VwZXJhZG1pbnMgb25seSBjYW4pLCB3aGVuIGtub3duLiAqL1xuICBhY3Rvcj86IHN0cmluZztcbn0pOiBFY29zeXN0ZW1Ob3RpZmljYXRpb25Db250ZW50IHtcbiAgY29uc3QgdmVyYiA9IGlucHV0LmFkZGVkID8gJ2FkZGVkIHRvJyA6ICdyZW1vdmVkIGZyb20nO1xuICBjb25zdCBieSA9IGlucHV0LmFjdG9yID8gYCBieSAke2lucHV0LmFjdG9yfWAgOiAnJztcbiAgcmV0dXJuIHtcbiAgICBzdWJqZWN0OiBgJHtpbnB1dC51c2VyfSB3YXMgJHt2ZXJifSB0aGUgRWNvc3lzdGVtIE1hbmFnZXIgcm9sZWAsXG4gICAgdGV4dDogaW5wdXQuYWRkZWRcbiAgICAgID8gYCR7aW5wdXQudXNlcn0gd2FzICR7dmVyYn0gdGhlIEVjb3N5c3RlbSBNYW5hZ2VyIHJvbGUke2J5fS4gRWNvc3lzdGVtIE1hbmFnZXJzIGRlY2lkZSBwdWJsaXNoIHJlcXVlc3RzLCBgXG4gICAgICAgICsgJ21vZGVyYXRlIHN1Ym1pc3Npb25zIGFuZCByZXZpZXdzLCB2ZXJpZnkgcHVibGlzaGVycyBhbmQgcHVibGlzaCBhZHZpc29yaWVzIGZvciB0aGUgd2hvbGUgcGx1Z2luIGVjb3N5c3RlbS4gJ1xuICAgICAgICArICdUaGUgcm9sZSB3b3JrcyBvbmx5IGZyb20gdGhlIHN5c3RlbSBvcmdhbml6YXRpb24gYW5kIHJlcXVpcmVzIGEgdHdvLWZhY3RvciBzaWduLWluLidcbiAgICAgIDogYCR7aW5wdXQudXNlcn0gd2FzICR7dmVyYn0gdGhlIEVjb3N5c3RlbSBNYW5hZ2VyIHJvbGUke2J5fSBhbmQgY2FuIG5vIGxvbmdlciBtYW5hZ2Ugb3IgYXBwcm92ZSBhbnl0aGluZyBpbiB0aGUgcGx1Z2luIGVjb3N5c3RlbS5gLFxuICB9O1xufVxuXG4vKipcbiAqIENvYWxlc2NlIHNldmVyYWwgcXVldWVkIG5vdGljZXMgaW50byBvbmUgZGlnZXN0IGVtYWlsOiBhIGNvdW50LWJlYXJpbmdcbiAqIHN1YmplY3QgYW5kIG9uZSBsaW5lIHBlciBpdGVtIChlYWNoIGl0ZW0ncyBzdWJqZWN0KSwgb2xkZXN0IGZpcnN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyRWNvc3lzdGVtRGlnZXN0KFxuICBldmVudDogRWNvc3lzdGVtTm90aWZpY2F0aW9uRXZlbnRJZCxcbiAgaXRlbXM6IHJlYWRvbmx5IEVjb3N5c3RlbU5vdGlmaWNhdGlvbkNvbnRlbnRbXSxcbik6IEVjb3N5c3RlbU5vdGlmaWNhdGlvbkNvbnRlbnQge1xuICBpZiAoaXRlbXMubGVuZ3RoID09PSAxKSByZXR1cm4gaXRlbXNbMF0hO1xuICBjb25zdCBzcGVjID0gRUNPU1lTVEVNX05PVElGSUNBVElPTl9FVkVOVFNbZXZlbnRdO1xuICBjb25zdCBjYWRlbmNlID0gc3BlYy5kaWdlc3QgPT09ICdob3VybHknID8gJ0hvdXJseScgOiBzcGVjLmRpZ2VzdCA9PT0gJ3dlZWtseScgPyAnV2Vla2x5JyA6ICdEYWlseSc7XG4gIHJldHVybiB7XG4gICAgc3ViamVjdDogYCR7Y2FkZW5jZX0gZGlnZXN0OiAke2l0ZW1zLmxlbmd0aH0gw5cgJHtzcGVjLmRlc2NyaXB0aW9ufWAuc2xpY2UoMCwgRUNPU1lTVEVNX05PVElGWV9TVUJKRUNUX01BWCksXG4gICAgdGV4dDogaXRlbXMubWFwKChpKSA9PiBg4oCiICR7aS5zdWJqZWN0fWApLmpvaW4oJ1xcbicpLnNsaWNlKDAsIEVDT1NZU1RFTV9OT1RJRllfVEVYVF9NQVgpLFxuICB9O1xufVxuIl19
|
|
243
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNvc3lzdGVtLW5vdGlmaWNhdGlvbnMuanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9lY29zeXN0ZW0tbm90aWZpY2F0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBZ0N0QzswRUFDMEU7QUFDMUUsTUFBTSxDQUFDLE1BQU0saUNBQWlDLEdBQThFO0lBQzFILHlCQUF5QixFQUFFLGNBQWM7SUFDekMsMEJBQTBCLEVBQUUsZUFBZTtJQUMzQywwQkFBMEIsRUFBRSxlQUFlO0lBQzNDLGtDQUFrQyxFQUFFLHVCQUF1QjtDQUM1RCxDQUFDO0FBS0YscURBQXFEO0FBQ3JELE1BQU0sQ0FBQyxNQUFNLHNDQUFzQyxHQUNqRCxNQUFNLENBQUMsTUFBTSxDQUFDLGlDQUFpQyxDQUFDLENBQUM7QUF3Qm5ELDZDQUE2QztBQUM3QyxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBdUU7SUFDL0csRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLDRDQUE0QyxFQUFFLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRTtJQUM3SCxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsbURBQW1ELEVBQUUsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLFVBQVUsRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFO0lBQ3hLLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxtQ0FBbUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUU7SUFDcEgsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLGlDQUFpQyxFQUFFLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLElBQUksRUFB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QUFLLENBQUMsSUFBSSxRQUFRLElBQUksUUFBUSxJQUFJLFFBQVEsRUFBRSxFQUFFO2tCQUMvQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsd0VBQXdFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztLQUNuRyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FDbkMsS0FBbUMsRUFDbkMsS0FBOEM7SUFFOUMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUUsQ0FBQztJQUN6QyxNQUFNLElBQUksR0FBRyw2QkFBNkIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDcEcsT0FBTztRQUNMLE9BQU8sRUFBRSxHQUFHLE9BQU8sWUFBWSxLQUFLLENBQUMsTUFBTSxNQUFNLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLDRCQUE0QixDQUFDO1FBQzFHLElBQUksRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLHlCQUF5QixDQUFDO0tBQ3hGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogVGhlIHBsdWdpbi1lY29zeXN0ZW0gbm90aWZpY2F0aW9uIGNvbnRyYWN0IChkb2NzL3BsdWdpbi1wdWJsaXNoaW5nLm1kKSxcbiAqIHNoYXJlZCBieSB0aGUgc2VuZGVyICh0aGUgcGx1Z2luIHNlcnZpY2UncyBlbnF1ZXVlIEFQSSBhbmQgZGlnZXN0XG4gKiBkaXNwYXRjaGVyKSBhbmQgdGhlIHJlbGF5IChwbGF0Zm9ybSBgUE9TVCAvaW50ZXJuYWwvbm90aWZ5LWVtYWlsYCkuXG4gKlxuICogUmVjaXBpZW50cyB0cmF2ZWwgYXMgUlVMRVMsIG5ldmVyIGFzIGxpc3RzOiBwbGF0Zm9ybSByZXNvbHZlcyBlYWNoXG4gKiB7QGxpbmsgRWNvc3lzdGVtUmVjaXBpZW50U3BlY30gYWdhaW5zdCBpdHMgdXNlci9Sb2xlIGRpcmVjdG9yeSBBVCBTRU5EIFRJTUUsXG4gKiBzbyBhIGRpZ2VzdCB0aGF0IGZsdXNoZXMgdG9tb3Jyb3cgcmVhY2hlcyB0b21vcnJvdydzIG1vZGVyYXRvcnMsIHRoZSBwbHVnaW5cbiAqIHNlcnZpY2UgbmV2ZXIgaGFuZGxlcyBhbiBlbWFpbCBhZGRyZXNzIG9yIGEgbWVtYmVyc2hpcCBsaXN0LCBhbmQgYSBwdWJsaXNoZXJcbiAqIGNhbiBuZXZlciBsZWFybiB3aG8gaW5zdGFsbGVkIHRoZWlyIHBsdWdpbiAodGhlIHJlbGF5IG1haWxzIGVhY2ggcmVjaXBpZW50XG4gKiBpbmRpdmlkdWFsbHkg4oCUIG5vIHNoYXJlZCBUbzogbGluZSkuXG4gKi9cblxuLyoqIEEgbm90aWZpY2F0aW9uIGV2ZW50IG51bWJlci4gKi9cbmV4cG9ydCB0eXBlIEVjb3N5c3RlbU5vdGlmaWNhdGlvbkV2ZW50SWQgPVxuICB8ICdOMScgfCAnTjInIHwgJ04zJyB8ICdONCcgfCAnTjUnIHwgJ042JyB8ICdONycgfCAnTjgnIHwgJ045JyB8ICdOMTAnXG4gIHwgJ04xMScgfCAnTjEyJyB8ICdOMTMnIHwgJ04xNCcgfCAnTjE1JyB8ICdOMTYnIHwgJ04xNycgfCAnTjE4JyB8ICdOMTknIHwgJ04yMCdcbiAgfCAnTjIxJyB8ICdOMjInIHwgJ04yMycgfCAnTjI0JyB8ICdOMjUnIHwgJ04yNicgfCAnTjI3JyB8ICdOMjgnIHwgJ04yOSdcbiAgfCAnTjMwJyB8ICdOMzEnIHwgJ04zMicgfCAnTjMzJztcblxuLyoqIEEgZGVsaXZlcnkgY2hhbm5lbC4gSW4tYXBwIGlzIHRoZSBzb3VyY2Ugb2YgdHJ1dGg7IGVtYWlsIGlzIHRoZSBjb3VydGVzeSBjb3B5LiAqL1xuZXhwb3J0IHR5cGUgRWNvc3lzdGVtTm90aWZpY2F0aW9uQ2hhbm5lbCA9ICdpbl9hcHAnIHwgJ2VtYWlsJztcblxuLyoqIEEgcGVyLXVzZXIgRU1BSUwgb3B0LW91dCBrZXkuIEluLWFwcCBpcyBuZXZlciBvcHRpb25hbC4gKi9cbmV4cG9ydCB0eXBlIEVjb3N5c3RlbUVtYWlsUHJlZmVyZW5jZSA9XG4gIHwgJ2Vjb3N5c3RlbS5yZXZpZXdzLmVtYWlsJ1xuICB8ICdlY29zeXN0ZW0udXBncmFkZXMuZW1haWwnXG4gIHwgJ2Vjb3N5c3RlbS5pbnN0YWxscy5lbWFpbCdcbiAgfCAnZWNvc3lzdGVtLm1vZGVyYXRpb25EaWdlc3QuZW1haWwnO1xuXG4vKiogVGhlIGZpZWxkIGVhY2ggcHJlZmVyZW5jZSBrZXkgaXMgc3RvcmVkIHVuZGVyIGluIHRoZSB1c2VyJ3MgcGVyLW9yZ1xuICogIGBub3RpZmljYXRpb25zLmVjb3N5c3RlbWAgcHJlZmVyZW5jZXMgKHBsYXRmb3JtIGBVc2VyUHJlZmVyZW5jZXNgKS4gKi9cbmV4cG9ydCBjb25zdCBFQ09TWVNURU1fRU1BSUxfUFJFRkVSRU5DRV9GSUVMRFM6IFJlYWRvbmx5PFJlY29yZDxFY29zeXN0ZW1FbWFpbFByZWZlcmVuY2UsIEVjb3N5c3RlbUVtYWlsUHJlZmVyZW5jZUZpZWxkPj4gPSB7XG4gICdlY29zeXN0ZW0ucmV2aWV3cy5lbWFpbCc6ICdyZXZpZXdzRW1haWwnLFxuICAnZWNvc3lzdGVtLnVwZ3JhZGVzLmVtYWlsJzogJ3VwZ3JhZGVzRW1haWwnLFxuICAnZWNvc3lzdGVtLmluc3RhbGxzLmVtYWlsJzogJ2luc3RhbGxzRW1haWwnLFxuICAnZWNvc3lzdGVtLm1vZGVyYXRpb25EaWdlc3QuZW1haWwnOiAnbW9kZXJhdGlvbkRpZ2VzdEVtYWlsJyxcbn07XG5cbi8qKiBTdG9yZWQgZmllbGQgbmFtZXMgb2YgdGhlIGVjb3N5c3RlbSBlbWFpbCBwcmVmZXJlbmNlcyAoYWxsIGRlZmF1bHQgYHRydWVgKS4gKi9cbmV4cG9ydCB0eXBlIEVjb3N5c3RlbUVtYWlsUHJlZmVyZW5jZUZpZWxkID0gJ3Jldmlld3NFbWFpbCcgfCAndXBncmFkZXNFbWFpbCcgfCAnaW5zdGFsbHNFbWFpbCcgfCAnbW9kZXJhdGlvbkRpZ2VzdEVtYWlsJztcblxuLyoqIEV2ZXJ5IHN0b3JlZCBlY29zeXN0ZW0gZW1haWwtcHJlZmVyZW5jZSBmaWVsZC4gKi9cbmV4cG9ydCBjb25zdCBFQ09TWVNURU1fRU1BSUxfUFJFRkVSRU5DRV9GSUVMRF9OQU1FUzogcmVhZG9ubHkgRWNvc3lzdGVtRW1haWxQcmVmZXJlbmNlRmllbGRbXSA9XG4gIE9iamVjdC52YWx1ZXMoRUNPU1lTVEVNX0VNQUlMX1BSRUZFUkVOQ0VfRklFTERTKTtcblxuLyoqIEhvdyBvZnRlbiBhIGJhdGNoZWQgZW1haWwgaXMgZmx1c2hlZC4gKi9cbmV4cG9ydCB0eXBlIEVjb3N5c3RlbURpZ2VzdENhZGVuY2UgPSAnaG91cmx5JyB8ICdkYWlseScgfCAnd2Vla2x5JztcblxuLyoqIE9uZSBldmVudCdzIGRlbGl2ZXJ5IHJ1bGVzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBFY29zeXN0ZW1FdmVudFNwZWMge1xuICAvKiogT25lLWxpbmUgZGVzY3JpcHRpb24gKGRvY3MsIGxvZ3MpLiAqL1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAvKiogQ2hhbm5lbHMgdGhlIGV2ZW50IGlzIGRlbGl2ZXJlZCBvbi4gKi9cbiAgY2hhbm5lbHM6IHJlYWRvbmx5IEVjb3N5c3RlbU5vdGlmaWNhdGlvbkNoYW5uZWxbXTtcbiAgLyoqXG4gICAqIEVtYWlsIG9wdC1vdXQga2V5LCBvciBgbnVsbGAgd2hlbiB0aGUgZW1haWwgaXMgVFJBTlNBQ1RJT05BTCAvIHNlY3VyaXR5XG4gICAqIChOMSwgTjPigJNONSwgTjfigJNOMTAsIE4xOOKAk04yMywgTjI1LCBOMjjigJNOMzMgY2FuJ3QgYmUgdHVybmVkIG9mZikuXG4gICAqL1xuICBwcmVmZXJlbmNlOiBFY29zeXN0ZW1FbWFpbFByZWZlcmVuY2UgfCBudWxsO1xuICAvKiogV2hlbiB0aGUgZW1haWwgaXMgYmF0Y2hlZCByYXRoZXIgdGhhbiBpbW1lZGlhdGUsIGl0cyBjYWRlbmNlLiAqL1xuICBkaWdlc3Q/OiBFY29zeXN0ZW1EaWdlc3RDYWRlbmNlO1xuICAvKiogQWxsb3dlZCB0byBhZGRyZXNzIGEgcmF3IGVtYWlsOiB0aGUgYW5vbnltb3VzIFNVQk1JVFRFUiAodGhlXG4gICAqICB0cmFuc2FjdGlvbmFsIHN1Ym1pc3Npb24gbm90aWNlcykgYW5kIGFuIG9yZydzIFZFUklGSUVEIGV4dGVybmFsXG4gICAqICBzZWN1cml0eSBhZGRyZXNzICh0aGUgcGx1Z2luIHNlY3VyaXR5IG5vdGljZXMgTjMw4oCTTjMzKS4gKi9cbiAgYWxsb3dzQWRkcmVzcz86IGJvb2xlYW47XG59XG5cbi8qKiBUaGUgbm90aWZpY2F0aW9uIGV2ZW50IHRhYmxlLCBhcyBkYXRhLiAqL1xuZXhwb3J0IGNvbnN0IEVDT1NZU1RFTV9OT1RJRklDQVRJT05fRVZFTlRTOiBSZWFkb25seTxSZWNvcmQ8RWNvc3lzdGVtTm90aWZpY2F0aW9uRXZlbnRJZCwgRWNvc3lzdGVtRXZlbnRTcGVjPj4gPSB7XG4gIE4xOiB7IGRlc2NyaXB0aW9uOiAnQW5vbnltb3VzIHN1Ym1pc3Npb24gcmVjZWl2ZWQgKG1hZ2ljIGxpbmspJywgY2hhbm5lbHM6IFsnZW1haWwnXSwgcHJlZmVyZW5jZTogbnVsbCwgYWxsb3dzQWRkcmVzczogdHJ1ZSB9LFxuICBOMjogeyBkZXNjcmlwdGlvbjogJ1N1Ym1pc3Npb24gdmVyaWZpZWQsIGVudGVyZWQgdGhlIG1vZGVyYXRpb24gcXVldWUnLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogJ2Vjb3N5c3RlbS5tb2RlcmF0aW9uRGlnZXN0LmVtYWlsJywgZGlnZXN0OiAnZGFpbHknIH0sXG4gIE4zOiB7IGRlc2NyaXB0aW9uOiAnU3VibWlzc2lvbiBmYWlsZWQgYXV0b21hdGVkIGdhdGVzJywgY2hhbm5lbHM6IFsnZW1haWwnXSwgcHJlZmVyZW5jZTogbnVsbCwgYWxsb3dzQWRkcmVzczogdHJ1ZSB9LFxuICBONDogeyBkZXNjcmlwdGlvbjogJ1N1Ym1pc3Npb24gYXBwcm92ZWQgb3IgcmVqZWN0ZWQnLCBjaGFubmVsczogWydlbWFpbCddLCBwcmVmZXJlbmNlOiBudWxsLCBhbGxvd3NBZGRyZXNzOiB0cnVlIH0sXG4gIE41OiB7IGRlc2NyaXB0aW9uOiAnU3VibWlzc2lvbiBjbGFpbWVkIGJ5IGFuIGFjY291bnQnLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogbnVsbCB9LFxuICBONjogeyBkZXNjcmlwdGlvbjogJ1ZlcmlmaWVkLXB1Ymxpc2hlciBhcHBsaWNhdGlvbiBzdWJtaXR0ZWQnLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogJ2Vjb3N5c3RlbS5tb2RlcmF0aW9uRGlnZXN0LmVtYWlsJywgZGlnZXN0OiAnZGFpbHknIH0sXG4gIE43OiB7IGRlc2NyaXB0aW9uOiAnVmVyaWZpZWQgYXBwbGljYXRpb24gYXBwcm92ZWQgb3IgcmVqZWN0ZWQnLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogbnVsbCB9LFxuICBOODogeyBkZXNjcmlwdGlvbjogJ01vZGVyYXRpb24gYWN0aW9uIG9uIGEgbGlzdGluZyAoc3VzcGVuZCwgeWFuaywgdGFrZWRvd24pJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6IG51bGwgfSxcbiAgTjk6IHsgZGVzY3JpcHRpb246ICdPd25lcnNoaXAgdHJhbnNmZXIgcmVxdWVzdGVkJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6IG51bGwgfSxcbiAgTjEwOiB7IGRlc2NyaXB0aW9uOiAnT3duZXJzaGlwIHRyYW5zZmVyIGFjY2VwdGVkLCBkZWNsaW5lZCwgYXBwcm92ZWQgb3IgcmVqZWN0ZWQnLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogbnVsbCB9LFxuICBOMTE6IHsgZGVzY3JpcHRpb246ICdJbnN0YWxsIHJlcXVlc3RlZCAocG9saWN5IHJlcXVpcmVzIGFwcHJvdmFsKScsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiAnZWNvc3lzdGVtLmluc3RhbGxzLmVtYWlsJyB9LFxuICBOMTI6IHsgZGVzY3JpcHRpb246ICdJbnN0YWxsIGFwcHJvdmVkIG9yIGRlbmllZCcsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiAnZWNvc3lzdGVtLmluc3RhbGxzLmVtYWlsJyB9LFxuICBOMTM6IHsgZGVzY3JpcHRpb246ICdOZXcgdmVyc2lvbiBhdmFpbGFibGUgd2l0aGluIGFuIGluc3RhbGxcXCdzIHBvbGljeScsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiAnZWNvc3lzdGVtLnVwZ3JhZGVzLmVtYWlsJywgZGlnZXN0OiAnd2Vla2x5JyB9LFxuICBOMTQ6IHsgZGVzY3JpcHRpb246ICdMaXN0aW5nIGRlcHJlY2F0ZWQgb3IgdW5tYWludGFpbmVkJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6ICdlY29zeXN0ZW0udXBncmFkZXMuZW1haWwnIH0sXG4gIE4xNTogeyBkZXNjcmlwdGlvbjogJ05ldyBvciBlZGl0ZWQgcmV2aWV3IG9uIGEgbGlzdGluZycsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiAnZWNvc3lzdGVtLnJldmlld3MuZW1haWwnLCBkaWdlc3Q6ICdob3VybHknIH0sXG4gIE4xNjogeyBkZXNjcmlwdGlvbjogJ1B1Ymxpc2hlciByZXBsaWVkIHRvIHlvdXIgcmV2aWV3JywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6ICdlY29zeXN0ZW0ucmV2aWV3cy5lbWFpbCcgfSxcbiAgTjE3OiB7IGRlc2NyaXB0aW9uOiAnUmV2aWV3IGhlbGQgKHJlcG9ydHMsIGJ1cnN0LCBmaWx0ZXIpJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6ICdlY29zeXN0ZW0ubW9kZXJhdGlvbkRpZ2VzdC5lbWFpbCcsIGRpZ2VzdDogJ2RhaWx5JyB9LFxuICBOMTg6IHsgZGVzY3JpcHRpb246ICdZb3VyIHJldmlldyB3YXMgcmVtb3ZlZCcsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiBudWxsIH0sXG4gIE4xOTogeyBkZXNjcmlwdGlvbjogJ1JldmlldyBmbGFnZ2VkIGFzIGEgc2VjdXJpdHkgaXNzdWUnLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogbnVsbCB9LFxuICBOMjA6IHsgZGVzY3JpcHRpb246ICdBZHZpc29yeSBkcmFmdCBhdXRvLWNyZWF0ZWQgKENWRSByZXNjYW4pJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6IG51bGwgfSxcbiAgTjIxOiB7IGRlc2NyaXB0aW9uOiAnQWR2aXNvcnkgcHVibGlzaGVkIG9yIHdpdGhkcmF3bicsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiBudWxsIH0sXG4gIE4yMjogeyBkZXNjcmlwdGlvbjogJ01vZGVyYXRpb24gU0xBIGJyZWFjaCcsIGNoYW5uZWxzOiBbJ2VtYWlsJ10sIHByZWZlcmVuY2U6IG51bGwgfSxcbiAgTjIzOiB7IGRlc2NyaXB0aW9uOiAnQWRkZWQgdG8gb3IgcmVtb3ZlZCBmcm9tIHRoZSBFY29zeXN0ZW0gTWFuYWdlciByb2xlJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6IG51bGwgfSxcbiAgTjI0OiB7IGRlc2NyaXB0aW9uOiAnUHVibGlzaCByZXF1ZXN0IHN1Ym1pdHRlZCcsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiAnZWNvc3lzdGVtLm1vZGVyYXRpb25EaWdlc3QuZW1haWwnLCBkaWdlc3Q6ICdkYWlseScgfSxcbiAgTjI1OiB7IGRlc2NyaXB0aW9uOiAnUHVibGlzaCByZXF1ZXN0IGFwcHJvdmVkIG9yIHJlamVjdGVkJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6IG51bGwgfSxcbiAgTjI2OiB7IGRlc2NyaXB0aW9uOiAnTGlzdGluZyBvciB2ZXJzaW9uIHBhdXNlZCBieSBpdHMgcHVibGlzaGVyJywgY2hhbm5lbHM6IFsnaW5fYXBwJ10sIHByZWZlcmVuY2U6ICdlY29zeXN0ZW0udXBncmFkZXMuZW1haWwnIH0sXG4gIE4yNzogeyBkZXNjcmlwdGlvbjogJ0luc3RhbGxlZCBsaXN0aW5nIGF1dG8tdXBkYXRlZCB3aXRoaW4gaXRzIHJhbmdlJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6ICdlY29zeXN0ZW0udXBncmFkZXMuZW1haWwnLCBkaWdlc3Q6ICd3ZWVrbHknIH0sXG4gIE4yODogeyBkZXNjcmlwdGlvbjogJ0EgcmVxdWVzdCBuZWVkcyBhIHNlY29uZCBhcHByb3ZhbCcsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiBudWxsIH0sXG4gIE4yOTogeyBkZXNjcmlwdGlvbjogJ1BsYW4gY2hhbmdlIGFmZmVjdHMgcHVibGlzaGluZycsIGNoYW5uZWxzOiBbJ2luX2FwcCcsICdlbWFpbCddLCBwcmVmZXJlbmNlOiBudWxsIH0sXG4gIC8vIFBlci1vcmcgcGx1Z2luIHNlY3VyaXR5IG5vdGljZXMgKGRvY3MvcGx1Z2luLXB1Ymxpc2hpbmcubWQgXCJTY2FuIGdhdGVzXCIpLlxuICAvLyBSZWNpcGllbnRzIGZvbGxvdyB0aGUgb3JnJ3MgcGx1Z2luIHNlY3VyaXR5IG5vdGlmaWNhdGlvbiBzZXR0aW5nczsgdGhlIG9yZydzXG4gIC8vIHdlYmhvb2sgKGlmIGFueSkgaXMgc2VudCBieSB0aGUgcGx1Z2luIHNlcnZpY2UgaXRzZWxmLiBOMzEncyBlbWFpbCBob25vcnNcbiAgLy8gdGhlIG9yZydzIGRpZ2VzdCBzZXR0aW5nICh0aGUgc2VuZGVyIGJhdGNoZXMgaXQpLCBOMzAgaXMgYWx3YXlzIGltbWVkaWF0ZS5cbiAgTjMwOiB7IGRlc2NyaXB0aW9uOiAnUGx1Z2luIHZlcnNpb24gYmxvY2tlZCAodW5zY2FubmVkIG9yIGZpeGFibGUgQ3JpdGljYWwpJywgY2hhbm5lbHM6IFsnaW5fYXBwJywgJ2VtYWlsJ10sIHByZWZlcmVuY2U6IG51bGwsIGFsbG93c0FkZHJlc3M6IHRydWUgfSxcbiAgTjMxOiB7IGRlc2NyaXB0aW9uOiAnUmVzY2FuIGZvdW5kIG5ldyBDcml0aWNhbC9IaWdoIGluIGEgcGx1Z2luIHZlcnNpb24nLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogbnVsbCwgYWxsb3dzQWRkcmVzczogdHJ1ZSB9LFxuICAvLyBQaXBlbGluZS1vd25lciBub3RpY2VzOiBhIGxvb2t1cCAvIHJ1bnRpbWUgY2hlY2sgUkVGVVNFRCBhIHBpcGVsaW5lJ3MgcGx1Z2luXG4gIC8vIHZlcnNpb24gKGRlZHVwbGljYXRlZCBwZXIgcGlwZWxpbmUgKyB2ZXJzaW9uIHBlciBkYXkpLCBhbmQgYSB0aW1lLWJveGVkIHJpc2tcbiAgLy8gYWNjZXB0YW5jZSBvZiBhIHBpcGVsaW5lJ3MgZmluZGluZ3MgTEFQU0VEICh0aGUgZmluZGluZ3MgYXJlIGxpdmUgYWdhaW4pLlxuICAvLyBSb3V0ZWQgdG8gdGhlIG9yZydzIHBpcGVsaW5lIHdyaXRlcnMgdW5kZXIgdGhlIHNhbWUgc2VjdXJpdHkgc2V0dGluZ3MuXG4gIE4zMjogeyBkZXNjcmlwdGlvbjogJ1BpcGVsaW5lIGJsb2NrZWQgYnkgYSBwbHVnaW4gdnVsbmVyYWJpbGl0eSBwb2xpY3knLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogbnVsbCwgYWxsb3dzQWRkcmVzczogdHJ1ZSB9LFxuICBOMzM6IHsgZGVzY3JpcHRpb246ICdQaXBlbGluZSB2dWxuZXJhYmlsaXR5IHJpc2sgYWNjZXB0YW5jZSBsYXBzZWQnLCBjaGFubmVsczogWydpbl9hcHAnLCAnZW1haWwnXSwgcHJlZmVyZW5jZTogbnVsbCwgYWxsb3dzQWRkcmVzczogdHJ1ZSB9LFxufTtcblxuLyoqIFdoZXRoZXIgYHZhbHVlYCBpcyBhIG5vdGlmaWNhdGlvbiBldmVudCBudW1iZXIuICovXG5leHBvcnQgZnVuY3Rpb24gaXNFY29zeXN0ZW1Ob3RpZmljYXRpb25FdmVudCh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIEVjb3N5c3RlbU5vdGlmaWNhdGlvbkV2ZW50SWQge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoRUNPU1lTVEVNX05PVElGSUNBVElPTl9FVkVOVFMsIHZhbHVlKTtcbn1cblxuLyoqIE9yZy1sb2NhbCBwZXJtaXNzaW9ucyBhbiB7QGxpbmsgRWNvc3lzdGVtUmVjaXBpZW50U3BlY30gYG9yZ19wZXJtaXNzaW9uYCBydWxlIG1heSBuYW1lLiAqL1xuZXhwb3J0IHR5cGUgRWNvc3lzdGVtT3JnUmVjaXBpZW50UGVybWlzc2lvbiA9ICdwdWJsaXNoZXJzOm1hbmFnZScgfCAncGx1Z2luX2luc3RhbGxzOm1hbmFnZScgfCAncGx1Z2luczp3cml0ZScgfCAncGlwZWxpbmVzOndyaXRlJztcbi8qKiBTeXN0ZW0tb3JnIHBlcm1pc3Npb25zIGEgYG1vZGVyYXRvcnNgIHJ1bGUgbWF5IG5hbWUuICovXG5leHBvcnQgdHlwZSBFY29zeXN0ZW1Nb2RlcmF0b3JQZXJtaXNzaW9uID0gJ3BsdWdpbnM6bW9kZXJhdGUnIHwgJ3B1Ymxpc2hlcnM6dmVyaWZ5JztcblxuLyoqXG4gKiBBIHJlY2lwaWVudCBSVUxFLCByZXNvbHZlZCBieSBwbGF0Zm9ybSBhdCBzZW5kIHRpbWU6XG4gKlxuICogIC0gYHVzZXJgIOKAlCBvbmUgdXNlciAoUmVxdWVzdGVyLCBSZXZpZXcgYXV0aG9yLCB0aGUgYWZmZWN0ZWQgdXNlciBvZiBOMjMpLlxuICogICAgYG9yZ0lkYCBwaWNrcyB0aGUgaW5ib3g7IGRlZmF1bHRzIHRvIHRoZSB1c2VyJ3MgbGFzdCBhY3RpdmUgb3JnLlxuICogIC0gYG9yZ19wZXJtaXNzaW9uYCDigJQgYWN0aXZlIG1lbWJlcnMgb2YgYG9yZ0lkYCBob2xkaW5nIGBwZXJtaXNzaW9uYFxuICogICAgKFB1Ymxpc2hlciBtYW5hZ2VycyA9IGBwdWJsaXNoZXJzOm1hbmFnZWAsIE9yZyBhcHByb3ZlcnMgPVxuICogICAgYHBsdWdpbl9pbnN0YWxsczptYW5hZ2VgLCBwbHVnaW4gd3JpdGVycyA9IGBwbHVnaW5zOndyaXRlYCkuIFdpdGhcbiAqICAgIGBpbmhlcml0RnJvbVJvb3RgLCBhIHRlYW0gd2l0aCBubyBob2xkZXJzIGZhbGxzIGJhY2sgdG8gaXRzIHJvb3Qgb3JnJ3NcbiAqICAgIGhvbGRlcnM7IHdpdGggbm9uZSBhbnl3aGVyZSwgdGhlIG9yZydzIG93bmVycy5cbiAqICAtIGBvcmdfbWVtYmVyc2Ag4oCUIHRoZSBuYW1lZCB1c2VycywgYnV0IG9ubHkgdGhvc2Ugd2hvIGFyZSBBQ1RJVkUgbWVtYmVycyBvZlxuICogICAgYG9yZ0lkYCBhdCBzZW5kIHRpbWUgKGFuIG9yZydzIGNob3NlbiBzZWN1cml0eSByZWNpcGllbnRzOiBhIHN0YWxlIGlkLCBvclxuICogICAgc29tZW9uZSB3aG8gbGVmdCwgcmVjZWl2ZXMgbm90aGluZykuXG4gKiAgLSBgbW9kZXJhdG9yc2Ag4oCUIHRoZSBzeXN0ZW0gb3JnJ3MgaG9sZGVycyBvZiBgcGVybWlzc2lvbmAgKHRoZSBFY29zeXN0ZW1cbiAqICAgIE1hbmFnZXIgcm9sZSksIG1pbnVzIGFueW9uZSB3aXRoIGEgY29uZmxpY3Qgb2YgaW50ZXJlc3QgKG1lbWJlcnMgb2ZcbiAqICAgIGBleGNsdWRlTWVtYmVyc09mT3JnSWRgLCBvciB0aGUgbGlzdGVkIHVzZXJzKTsgc3VwZXJhZG1pbnMgd2hlbiBlbXB0eS5cbiAqICAtIGBzdXBlcmFkbWluc2Ag4oCUIGV2ZXJ5IHBsYXRmb3JtIHN1cGVyYWRtaW4uXG4gKiAgLSBgYWRkcmVzc2Ag4oCUIGEgcmF3IGFkZHJlc3M7IG9ubHkgdGhlIGFub255bW91cyBTVUJNSVRURVIgbm90aWNlcyAoTjEsIE4zLFxuICogICAgTjQpLCB3aG9zZSByZWNpcGllbnQgaGFzIG5vIGFjY291bnQsIGFuZCBhbiBvcmcncyBWRVJJRklFRCBleHRlcm5hbFxuICogICAgc2VjdXJpdHkgYWRkcmVzcyBvbiB0aGUgcGx1Z2luIHNlY3VyaXR5IG5vdGljZXMgKE4zMOKAk04zMykuXG4gKi9cbmV4cG9ydCB0eXBlIEVjb3N5c3RlbVJlY2lwaWVudFNwZWMgPVxuICB8IHsga2luZDogJ3VzZXInOyB1c2VySWQ6IHN0cmluZzsgb3JnSWQ/OiBzdHJpbmcgfVxuICB8IHsga2luZDogJ29yZ19wZXJtaXNzaW9uJzsgb3JnSWQ6IHN0cmluZzsgcGVybWlzc2lvbjogRWNvc3lzdGVtT3JnUmVjaXBpZW50UGVybWlzc2lvbjsgaW5oZXJpdEZyb21Sb290PzogYm9vbGVhbiB9XG4gIHwgeyBraW5kOiAnb3JnX21lbWJlcnMnOyBvcmdJZDogc3RyaW5nOyB1c2VySWRzOiBzdHJpbmdbXSB9XG4gIHwgeyBraW5kOiAnbW9kZXJhdG9ycyc7IHBlcm1pc3Npb246IEVjb3N5c3RlbU1vZGVyYXRvclBlcm1pc3Npb247IGV4Y2x1ZGVNZW1iZXJzT2ZPcmdJZD86IHN0cmluZzsgZXhjbHVkZVVzZXJJZHM/OiBzdHJpbmdbXSB9XG4gIHwgeyBraW5kOiAnc3VwZXJhZG1pbnMnIH1cbiAgfCB7IGtpbmQ6ICdhZGRyZXNzJzsgZW1haWw6IHN0cmluZyB9O1xuXG4vKiogVGhlIGJvZHkgb2YgYW4gZWNvc3lzdGVtIHNlbmQgdGhyb3VnaCBwbGF0Zm9ybSdzIG5vdGlmeSByZWxheS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRWNvc3lzdGVtTm90aWZ5UmVxdWVzdCB7XG4gIGV2ZW50OiBFY29zeXN0ZW1Ob3RpZmljYXRpb25FdmVudElkO1xuICByZWNpcGllbnRzOiBFY29zeXN0ZW1SZWNpcGllbnRTcGVjW107XG4gIHN1YmplY3Q6IHN0cmluZztcbiAgLyoqIFBsYWluLXRleHQgYm9keSAoZW1haWwgYm9keSBhbmQgaW4tYXBwIGNvbnRlbnQpLiAqL1xuICB0ZXh0OiBzdHJpbmc7XG4gIC8qKiBTdWJzZXQgb2YgdGhlIGV2ZW50J3MgY2hhbm5lbHMgdG8gZGVsaXZlciBvbiAoZGVmYXVsdDogYWxsIG9mIHRoZW0pLiBUaGVcbiAgICogIGRpZ2VzdCBkaXNwYXRjaGVyIHNlbmRzIGBbJ2VtYWlsJ11gIGJlY2F1c2UgaW4tYXBwIHdlbnQgb3V0IGF0IGVucXVldWUuICovXG4gIGNoYW5uZWxzPzogRWNvc3lzdGVtTm90aWZpY2F0aW9uQ2hhbm5lbFtdO1xuICAvKiogRGVsaXZlciB0aGUgZW1haWwgZXZlbiB0byB1c2VycyB3aG8gb3B0ZWQgb3V0IOKAlCBmb3IgYW4gZXZlbnQgd2hvc2VcbiAgICogIG5vcm1hbGx5LW9wdGlvbmFsIGVtYWlsIGlzIG1hbmRhdG9yeSBpbiB0aGlzIGluc3RhbmNlIChOMjQgeWFuaywgYWR2aXNvcnlcbiAgICogIGFuZCBzZWN1cml0eS1maXggcmVxdWVzdHMpLiAqL1xuICBtYW5kYXRvcnk/OiBib29sZWFuO1xufVxuXG4vKiogSGFyZCBjYXBzLCBtYXRjaGluZyB0aGUgbWVzc2FnZSBzZXJ2aWNlJ3Mgb3duIGxpbWl0cy4gKi9cbmV4cG9ydCBjb25zdCBFQ09TWVNURU1fTk9USUZZX1NVQkpFQ1RfTUFYID0gNTAwO1xuZXhwb3J0IGNvbnN0IEVDT1NZU1RFTV9OT1RJRllfVEVYVF9NQVggPSAxMDAwMDtcbmNvbnN0IE1BWF9SRUNJUElFTlRfUlVMRVMgPSA1MDtcblxuY29uc3QgT1JHX1BFUk1JU1NJT05TOiByZWFkb25seSBzdHJpbmdbXSA9IFsncHVibGlzaGVyczptYW5hZ2UnLCAncGx1Z2luX2luc3RhbGxzOm1hbmFnZScsICdwbHVnaW5zOndyaXRlJywgJ3BpcGVsaW5lczp3cml0ZSddO1xuLyoqIEF0IG1vc3QgdGhpcyBtYW55IHVzZXJzIGluIG9uZSBgb3JnX21lbWJlcnNgIHJ1bGUuICovXG5leHBvcnQgY29uc3QgRUNPU1lTVEVNX09SR19NRU1CRVJTX01BWCA9IDEwMDtcbmNvbnN0IE1PREVSQVRPUl9QRVJNSVNTSU9OUzogcmVhZG9ubHkgc3RyaW5nW10gPSBbJ3BsdWdpbnM6bW9kZXJhdGUnLCAncHVibGlzaGVyczp2ZXJpZnknXTtcbmNvbnN0IEVNQUlMX1NIQVBFID0gL15bXlxcc0BdK0BbXlxcc0BdK1xcLlteXFxzQF0rJC87XG5cbmZ1bmN0aW9uIG5vbkVtcHR5U3RyaW5nKHY6IHVua25vd24sIG1heCA9IDI1NSk6IHYgaXMgc3RyaW5nIHtcbiAgcmV0dXJuIHR5cGVvZiB2ID09PSAnc3RyaW5nJyAmJiB2LnRyaW0oKS5sZW5ndGggPiAwICYmIHYubGVuZ3RoIDw9IG1heDtcbn1cblxuZnVuY3Rpb24gcGFyc2VSZWNpcGllbnQocmF3OiB1bmtub3duLCBzcGVjOiBFY29zeXN0ZW1FdmVudFNwZWMpOiBFY29zeXN0ZW1SZWNpcGllbnRTcGVjIHwgc3RyaW5nIHtcbiAgaWYgKCFyYXcgfHwgdHlwZW9mIHJhdyAhPT0gJ29iamVjdCcpIHJldHVybiAnZWFjaCByZWNpcGllbnQgbXVzdCBiZSBhbiBvYmplY3QnO1xuICBjb25zdCByID0gcmF3IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBzd2l0Y2ggKHIua2luZCkge1xuICAgIGNhc2UgJ3VzZXInOlxuICAgICAgaWYgKCFub25FbXB0eVN0cmluZyhyLnVzZXJJZCkpIHJldHVybiAndXNlciByZWNpcGllbnQgbmVlZHMgdXNlcklkJztcbiAgICAgIGlmIChyLm9yZ0lkICE9PSB1bmRlZmluZWQgJiYgIW5vbkVtcHR5U3RyaW5nKHIub3JnSWQpKSByZXR1cm4gJ3VzZXIgcmVjaXBpZW50IG9yZ0lkIG11c3QgYmUgYSBzdHJpbmcnO1xuICAgICAgcmV0dXJuIHsga2luZDogJ3VzZXInLCB1c2VySWQ6IHIudXNlcklkLCAuLi4oci5vcmdJZCA/IHsgb3JnSWQ6IHIub3JnSWQgYXMgc3RyaW5nIH0gOiB7fSkgfTtcbiAgICBjYXNlICdvcmdfcGVybWlzc2lvbic6XG4gICAgICBpZiAoIW5vbkVtcHR5U3RyaW5nKHIub3JnSWQpKSByZXR1cm4gJ29yZ19wZXJtaXNzaW9uIHJlY2lwaWVudCBuZWVkcyBvcmdJZCc7XG4gICAgICBpZiAodHlwZW9mIHIucGVybWlzc2lvbiAhPT0gJ3N0cmluZycgfHwgIU9SR19QRVJNSVNTSU9OUy5pbmNsdWRlcyhyLnBlcm1pc3Npb24pKSByZXR1cm4gJ29yZ19wZXJtaXNzaW9uIHJlY2lwaWVudCBuYW1lcyBhbiB1bnN1cHBvcnRlZCBwZXJtaXNzaW9uJztcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGtpbmQ6ICdvcmdfcGVybWlzc2lvbicsXG4gICAgICAgIG9yZ0lkOiByLm9yZ0lkLFxuICAgICAgICBwZXJtaXNzaW9uOiByLnBlcm1pc3Npb24gYXMgRWNvc3lzdGVtT3JnUmVjaXBpZW50UGVybWlzc2lvbixcbiAgICAgICAgLi4uKHIuaW5oZXJpdEZyb21Sb290ID09PSB0cnVlID8geyBpbmhlcml0RnJvbVJvb3Q6IHRydWUgfSA6IHt9KSxcbiAgICAgIH07XG4gICAgY2FzZSAnb3JnX21lbWJlcnMnOiB7XG4gICAgICBpZiAoIW5vbkVtcHR5U3RyaW5nKHIub3JnSWQpKSByZXR1cm4gJ29yZ19tZW1iZXJzIHJlY2lwaWVudCBuZWVkcyBvcmdJZCc7XG4gICAgICBjb25zdCB1c2VycyA9IHIudXNlcklkcztcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheSh1c2VycykgfHwgdXNlcnMubGVuZ3RoID09PSAwIHx8ICF1c2Vycy5ldmVyeSgodSkgPT4gbm9uRW1wdHlTdHJpbmcodSkpKSByZXR1cm4gJ29yZ19tZW1iZXJzIHJlY2lwaWVudCBuZWVkcyBhIG5vbi1lbXB0eSB1c2VySWRzIGFycmF5JztcbiAgICAgIGlmICh1c2Vycy5sZW5ndGggPiBFQ09TWVNURU1fT1JHX01FTUJFUlNfTUFYKSByZXR1cm4gYG9yZ19tZW1iZXJzIHJlY2lwaWVudCBuYW1lcyBhdCBtb3N0ICR7RUNPU1lTVEVNX09SR19NRU1CRVJTX01BWH0gdXNlcnNgO1xuICAgICAgcmV0dXJuIHsga2luZDogJ29yZ19tZW1iZXJzJywgb3JnSWQ6IHIub3JnSWQsIHVzZXJJZHM6IFsuLi5uZXcgU2V0KHVzZXJzIGFzIHN0cmluZ1tdKV0gfTtcbiAgICB9XG4gICAgY2FzZSAnbW9kZXJhdG9ycyc6IHtcbiAgICAgIGlmICh0eXBlb2Ygci5wZXJtaXNzaW9uICE9PSAnc3RyaW5nJyB8fCAhTU9ERVJBVE9SX1BFUk1JU1NJT05TLmluY2x1ZGVzKHIucGVybWlzc2lvbikpIHJldHVybiAnbW9kZXJhdG9ycyByZWNpcGllbnQgbmFtZXMgYW4gdW5zdXBwb3J0ZWQgcGVybWlzc2lvbic7XG4gICAgICBpZiAoci5leGNsdWRlTWVtYmVyc09mT3JnSWQgIT09IHVuZGVmaW5lZCAmJiAhbm9uRW1wdHlTdHJpbmcoci5leGNsdWRlTWVtYmVyc09mT3JnSWQpKSByZXR1cm4gJ2V4Y2x1ZGVNZW1iZXJzT2ZPcmdJZCBtdXN0IGJlIGEgc3RyaW5nJztcbiAgICAgIGNvbnN0IGV4Y2x1ZGUgPSByLmV4Y2x1ZGVVc2VySWRzO1xuICAgICAgaWYgKGV4Y2x1ZGUgIT09IHVuZGVmaW5lZCAmJiAoIUFycmF5LmlzQXJyYXkoZXhjbHVkZSkgfHwgIWV4Y2x1ZGUuZXZlcnkoKHUpID0+IG5vbkVtcHR5U3RyaW5nKHUpKSkpIHJldHVybiAnZXhjbHVkZVVzZXJJZHMgbXVzdCBiZSBhbiBhcnJheSBvZiBpZHMnO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAga2luZDogJ21vZGVyYXRvcnMnLFxuICAgICAgICBwZXJtaXNzaW9uOiByLnBlcm1pc3Npb24gYXMgRWNvc3lzdGVtTW9kZXJhdG9yUGVybWlzc2lvbixcbiAgICAgICAgLi4uKHIuZXhjbHVkZU1lbWJlcnNPZk9yZ0lkID8geyBleGNsdWRlTWVtYmVyc09mT3JnSWQ6IHIuZXhjbHVkZU1lbWJlcnNPZk9yZ0lkIGFzIHN0cmluZyB9IDoge30pLFxuICAgICAgICAuLi4oZXhjbHVkZSA/IHsgZXhjbHVkZVVzZXJJZHM6IGV4Y2x1ZGUgYXMgc3RyaW5nW10gfSA6IHt9KSxcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgJ3N1cGVyYWRtaW5zJzpcbiAgICAgIHJldHVybiB7IGtpbmQ6ICdzdXBlcmFkbWlucycgfTtcbiAgICBjYXNlICdhZGRyZXNzJzpcbiAgICAgIGlmICghc3BlYy5hbGxvd3NBZGRyZXNzKSByZXR1cm4gJ2FkZHJlc3MgcmVjaXBpZW50cyBhcmUgb25seSBhbGxvd2VkIGZvciBhbm9ueW1vdXMtc3VibWlzc2lvbiBhbmQgcGx1Z2luIHNlY3VyaXR5IG5vdGljZXMnO1xuICAgICAgaWYgKCFub25FbXB0eVN0cmluZyhyLmVtYWlsLCAzMjApIHx8ICFFTUFJTF9TSEFQRS50ZXN0KHIuZW1haWwpKSByZXR1cm4gJ2FkZHJlc3MgcmVjaXBpZW50IG5lZWRzIGEgdmFsaWQgZW1haWwnO1xuICAgICAgcmV0dXJuIHsga2luZDogJ2FkZHJlc3MnLCBlbWFpbDogci5lbWFpbC50cmltKCkudG9Mb3dlckNhc2UoKSB9O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gJ3Vua25vd24gcmVjaXBpZW50IGtpbmQnO1xuICB9XG59XG5cbi8qKlxuICogVmFsaWRhdGUgYW4ge0BsaW5rIEVjb3N5c3RlbU5vdGlmeVJlcXVlc3R9LiBSZXR1cm5zIHRoZSBub3JtYWxpemVkIHJlcXVlc3QsXG4gKiBvciBhbiBlcnJvciBzdHJpbmcgKHRoZSByZWxheSdzIDQwMCkuIFB1cmUsIHNvIGJvdGggdGhlIHNlbmRlciAoZmFpbCBhdFxuICogZW5xdWV1ZSwgbm90IGF0IDA5OjAwIHRvbW9ycm93KSBhbmQgdGhlIHJlbGF5IHVzZSB0aGUgc2FtZSBydWxlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRWNvc3lzdGVtTm90aWZ5UmVxdWVzdChib2R5OiB1bmtub3duKTogRWNvc3lzdGVtTm90aWZ5UmVxdWVzdCB8IHN0cmluZyB7XG4gIGlmICghYm9keSB8fCB0eXBlb2YgYm9keSAhPT0gJ29iamVjdCcpIHJldHVybiAnYm9keSBtdXN0IGJlIGFuIG9iamVjdCc7XG4gIGNvbnN0IGIgPSBib2R5IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBpZiAoIWlzRWNvc3lzdGVtTm90aWZpY2F0aW9uRXZlbnQoYi5ldmVudCkpIHJldHVybiAnZXZlbnQgbXVzdCBiZSBvbmUgb2YgTjEuLk4zMyc7XG4gIGNvbnN0IHNwZWMgPSBFQ09TWVNURU1fTk9USUZJQ0FUSU9OX0VWRU5UU1tiLmV2ZW50XTtcbiAgaWYgKCFub25FbXB0eVN0cmluZyhiLnN1YmplY3QsIEVDT1NZU1RFTV9OT1RJRllfU1VCSkVDVF9NQVgpKSByZXR1cm4gYHN1YmplY3QgaXMgcmVxdWlyZWQgKG1heCAke0VDT1NZU1RFTV9OT1RJRllfU1VCSkVDVF9NQVh9KWA7XG4gIGlmICghbm9uRW1wdHlTdHJpbmcoYi50ZXh0LCBFQ09TWVNURU1fTk9USUZZX1RFWFRfTUFYKSkgcmV0dXJuIGB0ZXh0IGlzIHJlcXVpcmVkIChtYXggJHtFQ09TWVNURU1fTk9USUZZX1RFWFRfTUFYfSlgO1xuICBpZiAoIUFycmF5LmlzQXJyYXkoYi5yZWNpcGllbnRzKSB8fCBiLnJlY2lwaWVudHMubGVuZ3RoID09PSAwKSByZXR1cm4gJ3JlY2lwaWVudHMgbXVzdCBiZSBhIG5vbi1lbXB0eSBhcnJheSc7XG4gIGlmIChiLnJlY2lwaWVudHMubGVuZ3RoID4gTUFYX1JFQ0lQSUVOVF9SVUxFUykgcmV0dXJuIGBhdCBtb3N0ICR7TUFYX1JFQ0lQSUVOVF9SVUxFU30gcmVjaXBpZW50IHJ1bGVzYDtcbiAgY29uc3QgcmVjaXBpZW50czogRWNvc3lzdGVtUmVjaXBpZW50U3BlY1tdID0gW107XG4gIGZvciAoY29uc3QgcmF3IG9mIGIucmVjaXBpZW50cykge1xuICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlUmVjaXBpZW50KHJhdywgc3BlYyk7XG4gICAgaWYgKHR5cGVvZiBwYXJzZWQgPT09ICdzdHJpbmcnKSByZXR1cm4gcGFyc2VkO1xuICAgIHJlY2lwaWVudHMucHVzaChwYXJzZWQpO1xuICB9XG4gIGxldCBjaGFubmVsczogRWNvc3lzdGVtTm90aWZpY2F0aW9uQ2hhbm5lbFtdIHwgdW5kZWZpbmVkO1xuICBpZiAoYi5jaGFubmVscyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGIuY2hhbm5lbHMpIHx8IGIuY2hhbm5lbHMubGVuZ3RoID09PSAwKSByZXR1cm4gJ2NoYW5uZWxzIG11c3QgYmUgYSBub24tZW1wdHkgYXJyYXknO1xuICAgIGNvbnN0IGJhZCA9IGIuY2hhbm5lbHMuZmlsdGVyKChjKSA9PiAhc3BlYy5jaGFubmVscy5pbmNsdWRlcyhjIGFzIEVjb3N5c3RlbU5vdGlmaWNhdGlvbkNoYW5uZWwpKTtcbiAgICBpZiAoYmFkLmxlbmd0aCA+IDApIHJldHVybiBgZXZlbnQgJHtiLmV2ZW50fSBpcyBub3QgZGVsaXZlcmVkIG9uOiAke2JhZC5qb2luKCcsICcpfWA7XG4gICAgY2hhbm5lbHMgPSBbLi4ubmV3IFNldChiLmNoYW5uZWxzIGFzIEVjb3N5c3RlbU5vdGlmaWNhdGlvbkNoYW5uZWxbXSldO1xuICB9XG4gIGlmIChiLm1hbmRhdG9yeSAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBiLm1hbmRhdG9yeSAhPT0gJ2Jvb2xlYW4nKSByZXR1cm4gJ21hbmRhdG9yeSBtdXN0IGJlIGEgYm9vbGVhbic7XG4gIHJldHVybiB7XG4gICAgZXZlbnQ6IGIuZXZlbnQsXG4gICAgcmVjaXBpZW50cyxcbiAgICBzdWJqZWN0OiBiLnN1YmplY3QudHJpbSgpLFxuICAgIHRleHQ6IGIudGV4dC50cmltKCksXG4gICAgLi4uKGNoYW5uZWxzID8geyBjaGFubmVscyB9IDoge30pLFxuICAgIC4uLihiLm1hbmRhdG9yeSA9PT0gdHJ1ZSA/IHsgbWFuZGF0b3J5OiB0cnVlIH0gOiB7fSksXG4gIH07XG59XG5cbi8qKiBUaGUgVVRDIGhvdXIgZGlnZXN0cyBmbHVzaCBhdCAoXCJkYWlseSBkaWdlc3QgZW1haWwgKDA5OjAwIFVUQylcIikuICovXG5leHBvcnQgY29uc3QgRUNPU1lTVEVNX0RJR0VTVF9IT1VSX1VUQyA9IDk7XG5cbi8qKlxuICogVGhlIG5leHQgZmx1c2ggdGltZSBmb3IgYSBkaWdlc3QgY2FkZW5jZSwgc3RyaWN0bHkgYWZ0ZXIgYG5vd2A6XG4gKiBgaG91cmx5YCDihpIgdGhlIG5leHQgdG9wIG9mIHRoZSBob3VyOyBgZGFpbHlgIOKGkiB0aGUgbmV4dCAwOTowMCBVVEM7XG4gKiBgd2Vla2x5YCDihpIgdGhlIG5leHQgTW9uZGF5IDA5OjAwIFVUQy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5leHRFY29zeXN0ZW1EaWdlc3RUaW1lKGNhZGVuY2U6IEVjb3N5c3RlbURpZ2VzdENhZGVuY2UsIG5vdzogRGF0ZSA9IG5ldyBEYXRlKCkpOiBEYXRlIHtcbiAgY29uc3QgdCA9IG5ldyBEYXRlKG5vdy5nZXRUaW1lKCkpO1xuICBpZiAoY2FkZW5jZSA9PT0gJ2hvdXJseScpIHtcbiAgICB0LnNldFVUQ01pbnV0ZXMoMCwgMCwgMCk7XG4gICAgdC5zZXRVVENIb3Vycyh0LmdldFVUQ0hvdXJzKCkgKyAxKTtcbiAgICByZXR1cm4gdDtcbiAgfVxuICB0LnNldFVUQ0hvdXJzKEVDT1NZU1RFTV9ESUdFU1RfSE9VUl9VVEMsIDAsIDAsIDApO1xuICBpZiAodC5nZXRUaW1lKCkgPD0gbm93LmdldFRpbWUoKSkgdC5zZXRVVENEYXRlKHQuZ2V0VVRDRGF0ZSgpICsgMSk7XG4gIGlmIChjYWRlbmNlID09PSAnd2Vla2x5Jykge1xuICAgIC8vIGdldFVUQ0RheTogMCA9IFN1bmRheSDigKYgMSA9IE1vbmRheS5cbiAgICB3aGlsZSAodC5nZXRVVENEYXkoKSAhPT0gMSkgdC5zZXRVVENEYXRlKHQuZ2V0VVRDRGF0ZSgpICsgMSk7XG4gIH1cbiAgcmV0dXJuIHQ7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVGVtcGxhdGVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqIEEgcmVuZGVyZWQgbm90aWNlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBFY29zeXN0ZW1Ob3RpZmljYXRpb25Db250ZW50IHtcbiAgc3ViamVjdDogc3RyaW5nO1xuICB0ZXh0OiBzdHJpbmc7XG59XG5cbi8qKlxuICogTjIzIOKAlCBzb21lb25lIHdhcyBhZGRlZCB0byBvciByZW1vdmVkIGZyb20gdGhlIHN5c3RlbSBvcmcncyBFY29zeXN0ZW1cbiAqIE1hbmFnZXIgcm9sZS4gU2VudCB0byBldmVyeSBzdXBlcmFkbWluIGFuZCB0byB0aGUgYWZmZWN0ZWQgdXNlcjtcbiAqIHRyYW5zYWN0aW9uYWwgKG5vIG9wdC1vdXQpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyRWNvc3lzdGVtTWFuYWdlckNoYW5nZShpbnB1dDoge1xuICAvKiogVGhlIGFmZmVjdGVkIHVzZXIncyBkaXNwbGF5IG5hbWUgb3IgZW1haWwuICovXG4gIHVzZXI6IHN0cmluZztcbiAgYWRkZWQ6IGJvb2xlYW47XG4gIC8qKiBXaG8gbWFkZSB0aGUgY2hhbmdlIChzdXBlcmFkbWlucyBvbmx5IGNhbiksIHdoZW4ga25vd24uICovXG4gIGFjdG9yPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIFJvbGUgYWN0dWFsbHkgZ3JhbnRlZC4gVGhpcyBub3RpY2UgZmlyZXMgZm9yIEFOWSBSb2xlIGNhcnJ5aW5nIGFcbiAgICogc3lzdGVtLW9yZy1vbmx5IHBlcm1pc3Npb24g4oCUIGBlY29zeXN0ZW1Sb2xlTmFtZWAgcmV0dXJucyB3aGljaGV2ZXIgb25lIGl0XG4gICAqIGlzIOKAlCBzbyBoYXJkLWNvZGluZyBcIkVjb3N5c3RlbSBNYW5hZ2VyXCIgYW5ub3VuY2VkIHN0YWZmaW5nICoqQ29uc29sZVxuICAgKiBBZG1pbmlzdHJhdG9yKiogKGEgcmVhZC93cml0ZSBzaGVsbCBvdmVyIGV2ZXJ5IHRlbmFudCdzIHJvd3MpIG9yICoqU3VwcG9ydFxuICAgKiBMZWFkKiogKGBpbXBlcnNvbmF0aW9uOm9wZW5gKSBhcyBhIHBsdWdpbi1tb2RlcmF0aW9uIGdyYW50LiBUaGUgYXVkaXQgcm93XG4gICAqIGhhZCB0aGUgbmFtZSBhbGwgYWxvbmc7IHRoZSBtZXNzYWdlIG9wZXJhdG9ycyBhY3R1YWxseSByZWFkIGRpZCBub3QuXG4gICAqL1xuICByb2xlPzogc3RyaW5nO1xufSk6IEVjb3N5c3RlbU5vdGlmaWNhdGlvbkNvbnRlbnQge1xuICBjb25zdCB2ZXJiID0gaW5wdXQuYWRkZWQgPyAnYWRkZWQgdG8nIDogJ3JlbW92ZWQgZnJvbSc7XG4gIGNvbnN0IGJ5ID0gaW5wdXQuYWN0b3IgPyBgIGJ5ICR7aW5wdXQuYWN0b3J9YCA6ICcnO1xuICBjb25zdCByb2xlID0gaW5wdXQucm9sZSA/PyAnRWNvc3lzdGVtIE1hbmFnZXInO1xuICAvLyBUaGUgYm9keSBkZXNjcmliZXMgd2hhdCB0aGUgUk9MRSBkb2VzLCBzbyBpdCBjYW4gb25seSBzcGVhayBmb3IgdGhlIG9uZSBpdFxuICAvLyB3YXMgd3JpdHRlbiBhYm91dC4gRm9yIGFueSBvdGhlciwgc2F5IHdoYXQgaGFwcGVuZWQgYW5kIGxlYXZlIHRoZVxuICAvLyBjYXBhYmlsaXRpZXMgdG8gdGhlIFJvbGUgaXRzZWxmIHJhdGhlciB0aGFuIGRlc2NyaWJpbmcgdGhlIHdyb25nIG9uZXMuXG4gIGNvbnN0IGVjb3N5c3RlbSA9IHJvbGUgPT09ICdFY29zeXN0ZW0gTWFuYWdlcic7XG4gIHJldHVybiB7XG4gICAgc3ViamVjdDogYCR7aW5wdXQudXNlcn0gd2FzICR7dmVyYn0gdGhlICR7cm9sZX0gcm9sZWAsXG4gICAgdGV4dDogaW5wdXQuYWRkZWRcbiAgICAgID8gYCR7aW5wdXQudXNlcn0gd2FzICR7dmVyYn0gdGhlICR7cm9sZX0gcm9sZSR7Ynl9LmBcbiAgICAgICAgKyAoZWNvc3lzdGVtXG4gICAgICAgICAgPyAnIEVjb3N5c3RlbSBNYW5hZ2VycyBkZWNpZGUgcHVibGlzaCByZXF1ZXN0cywgbW9kZXJhdGUgc3VibWlzc2lvbnMgYW5kIHJldmlld3MsIHZlcmlmeSBwdWJsaXNoZXJzJ1xuICAgICAgICAgICAgKyAnIGFuZCBwdWJsaXNoIGFkdmlzb3JpZXMgZm9yIHRoZSB3aG9sZSBwbHVnaW4gZWNvc3lzdGVtLidcbiAgICAgICAgICA6ICcgSXQgY2FycmllcyBzeXN0ZW0tb3JnLW9ubHkgcGVybWlzc2lvbnMuJylcbiAgICAgICAgKyAnIFRoZSByb2xlIHdvcmtzIG9ubHkgZnJvbSB0aGUgc3lzdGVtIG9yZ2FuaXphdGlvbiBhbmQgcmVxdWlyZXMgYSB0d28tZmFjdG9yIHNpZ24taW4uJ1xuICAgICAgOiBgJHtpbnB1dC51c2VyfSB3YXMgJHt2ZXJifSB0aGUgJHtyb2xlfSByb2xlJHtieX1gXG4gICAgICAgICsgKGVjb3N5c3RlbSA/ICcgYW5kIGNhbiBubyBsb25nZXIgbWFuYWdlIG9yIGFwcHJvdmUgYW55dGhpbmcgaW4gdGhlIHBsdWdpbiBlY29zeXN0ZW0uJyA6ICcuJyksXG4gIH07XG59XG5cbi8qKlxuICogQ29hbGVzY2Ugc2V2ZXJhbCBxdWV1ZWQgbm90aWNlcyBpbnRvIG9uZSBkaWdlc3QgZW1haWw6IGEgY291bnQtYmVhcmluZ1xuICogc3ViamVjdCBhbmQgb25lIGxpbmUgcGVyIGl0ZW0gKGVhY2ggaXRlbSdzIHN1YmplY3QpLCBvbGRlc3QgZmlyc3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJFY29zeXN0ZW1EaWdlc3QoXG4gIGV2ZW50OiBFY29zeXN0ZW1Ob3RpZmljYXRpb25FdmVudElkLFxuICBpdGVtczogcmVhZG9ubHkgRWNvc3lzdGVtTm90aWZpY2F0aW9uQ29udGVudFtdLFxuKTogRWNvc3lzdGVtTm90aWZpY2F0aW9uQ29udGVudCB7XG4gIGlmIChpdGVtcy5sZW5ndGggPT09IDEpIHJldHVybiBpdGVtc1swXSE7XG4gIGNvbnN0IHNwZWMgPSBFQ09TWVNURU1fTk9USUZJQ0FUSU9OX0VWRU5UU1tldmVudF07XG4gIGNvbnN0IGNhZGVuY2UgPSBzcGVjLmRpZ2VzdCA9PT0gJ2hvdXJseScgPyAnSG91cmx5JyA6IHNwZWMuZGlnZXN0ID09PSAnd2Vla2x5JyA/ICdXZWVrbHknIDogJ0RhaWx5JztcbiAgcmV0dXJuIHtcbiAgICBzdWJqZWN0OiBgJHtjYWRlbmNlfSBkaWdlc3Q6ICR7aXRlbXMubGVuZ3RofSDDlyAke3NwZWMuZGVzY3JpcHRpb259YC5zbGljZSgwLCBFQ09TWVNURU1fTk9USUZZX1NVQkpFQ1RfTUFYKSxcbiAgICB0ZXh0OiBpdGVtcy5tYXAoKGkpID0+IGDigKIgJHtpLnN1YmplY3R9YCkuam9pbignXFxuJykuc2xpY2UoMCwgRUNPU1lTVEVNX05PVElGWV9URVhUX01BWCksXG4gIH07XG59XG4iXX0=
|
package/lib/types/ecosystem.d.ts
CHANGED
|
@@ -31,12 +31,7 @@ export declare function publisherHandleProblem(handle: string): string | null;
|
|
|
31
31
|
* still be requested through a `claim` request, decided by the system org.
|
|
32
32
|
*/
|
|
33
33
|
export declare const BUILTIN_RESERVED_HANDLES: readonly string[];
|
|
34
|
-
|
|
35
|
-
* Request kinds a TENANT may submit (`moderation` is system-org-created). An
|
|
36
|
-
* `advisory` request carries a security-advisory DRAFT; only the system org
|
|
37
|
-
* publishes it (approving the request) or withdraws it.
|
|
38
|
-
*/
|
|
39
|
-
export declare const TENANT_REQUEST_KINDS: readonly ['new_listing', 'new_version', 'listing_update', 'yank', 'unpause', 'transfer', 'claim', 'profile_change', 'verify', 'advisory'];
|
|
34
|
+
export declare const TENANT_REQUEST_KINDS: ("advisory" | "claim" | "listing_update" | "new_listing" | "new_version" | "profile_change" | "transfer" | "unpause" | "verify" | "yank")[];
|
|
40
35
|
/** Kinds submitted under `plugins:publish` (the rest need `publishers:manage`). */
|
|
41
36
|
export declare const PUBLISH_PERMISSION_REQUEST_KINDS: readonly string[];
|
|
42
37
|
/** Kinds DECIDED with `publishers:verify` (the rest need `plugins:moderate`). */
|
package/lib/types/ecosystem.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// Copyright 2026 Pipeline Builder Contributors
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import { PUBLISH_REQUEST_KINDS } from './wire-vocabulary.js';
|
|
3
4
|
/**
|
|
4
5
|
* Plugin-ecosystem constants shared by the plugin service (publishers, the
|
|
5
6
|
* publish-request queue, auto-approval) and its callers
|
|
@@ -62,10 +63,22 @@ export const BUILTIN_RESERVED_HANDLES = [
|
|
|
62
63
|
* `advisory` request carries a security-advisory DRAFT; only the system org
|
|
63
64
|
* publishes it (approving the request) or withdraws it.
|
|
64
65
|
*/
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
66
|
+
/**
|
|
67
|
+
* DERIVED from `PUBLISH_REQUEST_KINDS` by exclusion, not hand-copied.
|
|
68
|
+
*
|
|
69
|
+
* This is the TENANT submit gate (`requests.ts` checks membership before
|
|
70
|
+
* accepting a request), and it was a transcription of the canonical list minus
|
|
71
|
+
* two entries. A kind added to the canonical list therefore needed a second,
|
|
72
|
+
* entirely un-enforced edit here before a publisher could submit it — the kind
|
|
73
|
+
* would exist, be decidable in the console, and be rejected at the door.
|
|
74
|
+
*
|
|
75
|
+
* Stating the EXCLUSIONS instead makes the relationship the code: `moderation`
|
|
76
|
+
* and `submission` are opened by the system org on a tenant's behalf, never
|
|
77
|
+
* submitted by the tenant, so they are the two that do not belong here.
|
|
78
|
+
*/
|
|
79
|
+
const SYSTEM_OPENED_REQUEST_KINDS = ['moderation', 'submission'];
|
|
80
|
+
export const TENANT_REQUEST_KINDS = PUBLISH_REQUEST_KINDS
|
|
81
|
+
.filter((k) => !SYSTEM_OPENED_REQUEST_KINDS.includes(k));
|
|
69
82
|
/** Kinds submitted under `plugins:publish` (the rest need `publishers:manage`). */
|
|
70
83
|
export const PUBLISH_PERMISSION_REQUEST_KINDS = [
|
|
71
84
|
'new_listing', 'new_version', 'listing_update', 'yank', 'unpause',
|
|
@@ -116,4 +129,4 @@ export function isAnonymousSubmissionsEnabled() {
|
|
|
116
129
|
export function isPluginReviewsEnabled() {
|
|
117
130
|
return flag('PLUGIN_REVIEWS_ENABLED', true);
|
|
118
131
|
}
|
|
119
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNvc3lzdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL2Vjb3N5c3RlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7OztHQUtHO0FBRUgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFcEQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRyx5QkFBeUIsQ0FBQztBQUV6RTs7aURBRWlEO0FBQ2pELE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLFlBQVksQ0FBQztBQUU1RCw2REFBNkQ7QUFDN0QsTUFBTSxVQUFVLHFCQUFxQjtJQUNuQyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDN0QsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsK0JBQStCLENBQUM7QUFDckUsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyw0QkFBNEIsQ0FBQztBQUNyRSxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLENBQUM7QUFDdEMsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsRUFBRSxDQUFDO0FBRXZDLHVFQUF1RTtBQUN2RSxNQUFNLFVBQVUsc0JBQXNCLENBQUMsTUFBYztJQUNuRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsb0JBQW9CLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxvQkFBb0IsRUFBRSxDQUFDO1FBQ2pGLE9BQU8sV0FBVyxvQkFBb0IsSUFBSSxvQkFBb0IsYUFBYSxDQUFDO0lBQzlFLENBQUM7SUFDRCxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDM0MsT0FBTyw4RUFBOEUsQ0FBQztJQUN4RixDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBc0I7SUFDekQsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxlQUFlO0lBQzNGLE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxTQUFTO0lBQ3JGLFdBQVcsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLO0lBQ3BGLHFGQUFxRjtJQUNyRixRQUFRLEVBQUUsVUFBVTtDQUNyQixDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHO0lBQ2xDLGFBQWEsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLFNBQVM7SUFDakUsVUFBVSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsVUFBVTtDQUNuRCxDQUFDO0FBRVgsbUZBQW1GO0FBQ25GLE1BQU0sQ0FBQyxNQUFNLGdDQUFnQyxHQUFzQjtJQUNqRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxTQUFTO0NBQ2xFLENBQUM7QUFFRixpRkFBaUY7QUFDakYsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQXNCLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUV6RywrR0FBK0c7QUFDL0csTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQXNCLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO0FBRWhJLDJGQUEyRjtBQUMzRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBVyxDQUFDO0FBRXhFLFNBQVMsSUFBSSxDQUFDLElBQVksRUFBRSxJQUFhO0lBQ3ZDLE1BQU0sR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMzRCxJQUFJLEdBQUcsS0FBSyxFQUFFO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDNUIsT0FBTyxHQUFHLEtBQUssT0FBTyxJQUFJLEdBQUcsS0FBSyxHQUFHLElBQUksR0FBRyxLQUFLLEtBQUssSUFBSSxHQUFHLEtBQUssSUFBSSxDQUFDO0FBQ3pFLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLDZCQUE2QjtJQUMzQyxPQUFPLElBQUksQ0FBQyxnQ0FBZ0MsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN0RCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUseUJBQXlCO0lBQ3ZDLE9BQU8sSUFBSSxDQUFDLDJCQUEyQixFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztBQUMvRCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsNkJBQTZCO0lBQzNDLE9BQU8sSUFBSSxDQUFDLCtCQUErQixFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3RELENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHNCQUFzQjtJQUNwQyxPQUFPLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogUGx1Z2luLWVjb3N5c3RlbSBjb25zdGFudHMgc2hhcmVkIGJ5IHRoZSBwbHVnaW4gc2VydmljZSAocHVibGlzaGVycywgdGhlXG4gKiBwdWJsaXNoLXJlcXVlc3QgcXVldWUsIGF1dG8tYXBwcm92YWwpIGFuZCBpdHMgY2FsbGVyc1xuICogKGRvY3MvcGx1Z2luLXB1Ymxpc2hpbmcubWQpLiBEZXBlbmRlbmN5LWZyZWUgc29cbiAqIHRoZSBmcm9udGVuZCBhbmQgdGhlIENMSSBjYW4gaW1wb3J0IGl0IHRvby5cbiAqL1xuXG5pbXBvcnQgeyBpc0JpbGxpbmdFbmFibGVkIH0gZnJvbSAnLi9xdW90YS10aWVycy5qcyc7XG5cbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIHN5c3RlbS1vcmcgU0VSVklDRSBBQ0NPVU5UIHRoZSBPZmZpY2lhbCBjYXRhbG9nIGxvYWRlclxuICogKGBkZXBsb3kvYmluL2xvYWQtcGx1Z2lucy5zaGAsIGRyaXZlbiBieSBgaW5pdC1wbGF0Zm9ybS5zaGApIHJ1bnMgYXMuIE9ubHkgYVxuICogcmVxdWVzdCBzdWJtaXR0ZWQgYnkgdGhpcyBpZGVudGl0eSwgZnJvbSB0aGUgc3lzdGVtIG9yZywgY2FuIHJpZGUgdGhlXG4gKiBib290c3RyYXAgZXhjZXB0aW9uIG9yIHRoZSBPZmZpY2lhbCBjYXRhbG9nIGF1dG8tYXBwcm92YWwgcnVsZSDigJRcbiAqIG5ldmVyIGEgcGVyc29uLCB3aGljaCBrZWVwcyBcImEgc3VwZXJhZG1pbiB1cGxvYWRzIGFuZCBhcHByb3ZlcyBhbG9uZVwiIGNsb3NlZC5cbiAqIFNlcnZpY2UtYWNjb3VudCBuYW1lcyBhcmUgdW5pcXVlIHBlciBvcmcgYW5kIG9ubHkgc3lzdGVtLW9yZyBhZG1pbnNcbiAqIGNhbiBjcmVhdGUgb25lIHRoZXJlLlxuICovXG5leHBvcnQgY29uc3QgT0ZGSUNJQUxfQ0FUQUxPR19MT0FERVJfQUNDT1VOVCA9ICdvZmZpY2lhbC1jYXRhbG9nLWxvYWRlcic7XG5cbi8qKiBUaGUgcHVibGlzaGVyIHRlcm1zIHZlcnNpb24gaW4gZm9yY2Ugd2hlbiB0aGUgb3BlcmF0b3Igc2V0cyBub25lLiBCdW1waW5nIGl0XG4gKiAgKGBQVUJMSVNIRVJfVEVSTVNfVkVSU0lPTmApIG1ha2VzIGV2ZXJ5IHB1Ymxpc2hlciByZS1hY2NlcHQgYmVmb3JlIGl0cyBuZXh0XG4gKiAgcmVxdWVzdDsgZXhpc3RpbmcgbGlzdGluZ3MgYXJlIHVuYWZmZWN0ZWQuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9QVUJMSVNIRVJfVEVSTVNfVkVSU0lPTiA9ICcyMDI2LTA5LTIxJztcblxuLyoqIFRoZSBwdWJsaXNoZXIgdGVybXMgdmVyc2lvbiBpbiBmb3JjZSBvbiB0aGlzIGluc3RhbmNlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHB1Ymxpc2hlclRlcm1zVmVyc2lvbigpOiBzdHJpbmcge1xuICBjb25zdCB2ID0gKHByb2Nlc3MuZW52LlBVQkxJU0hFUl9URVJNU19WRVJTSU9OID8/ICcnKS50cmltKCk7XG4gIHJldHVybiB2ICE9PSAnJyA/IHYuc2xpY2UoMCwgNTApIDogREVGQVVMVF9QVUJMSVNIRVJfVEVSTVNfVkVSU0lPTjtcbn1cblxuLyoqXG4gKiBBIHB1Ymxpc2hlciBoYW5kbGU6IG9uZSBsb3dlcmNhc2UgcmVnaXN0cnkgcGF0aCBjb21wb25lbnQsIGJlY2F1c2UgaXQgbmFtZXNcbiAqIHRoZSBgcHVibGljLzxoYW5kbGU+LzxuYW1lPmAgcmVwb3NpdG9yeSDigJQgbGV0dGVycywgZGlnaXRzIGFuZCBzaW5nbGVcbiAqIGh5cGhlbnMgYmV0d2VlbiB0aGVtLCAy4oCTMzkgY2hhcmFjdGVycy5cbiAqL1xuZXhwb3J0IGNvbnN0IFBVQkxJU0hFUl9IQU5ETEVfUEFUVEVSTiA9IC9eW2EtejAtOV0rKD86LVthLXowLTldKykqJC87XG5leHBvcnQgY29uc3QgUFVCTElTSEVSX0hBTkRMRV9NSU4gPSAyO1xuZXhwb3J0IGNvbnN0IFBVQkxJU0hFUl9IQU5ETEVfTUFYID0gMzk7XG5cbi8qKiBXaHkgYGhhbmRsZWAgaXNuJ3QgYSB2YWxpZCBwdWJsaXNoZXIgaGFuZGxlLCBvciBudWxsIHdoZW4gaXQgaXMuICovXG5leHBvcnQgZnVuY3Rpb24gcHVibGlzaGVySGFuZGxlUHJvYmxlbShoYW5kbGU6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICBpZiAoaGFuZGxlLmxlbmd0aCA8IFBVQkxJU0hFUl9IQU5ETEVfTUlOIHx8IGhhbmRsZS5sZW5ndGggPiBQVUJMSVNIRVJfSEFORExFX01BWCkge1xuICAgIHJldHVybiBgbXVzdCBiZSAke1BVQkxJU0hFUl9IQU5ETEVfTUlOfS0ke1BVQkxJU0hFUl9IQU5ETEVfTUFYfSBjaGFyYWN0ZXJzYDtcbiAgfVxuICBpZiAoIVBVQkxJU0hFUl9IQU5ETEVfUEFUVEVSTi50ZXN0KGhhbmRsZSkpIHtcbiAgICByZXR1cm4gJ211c3QgYmUgbG93ZXJjYXNlIGxldHRlcnMgYW5kIGRpZ2l0cywgb3B0aW9uYWxseSBzZXBhcmF0ZWQgYnkgc2luZ2xlIGh5cGhlbnMnO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIEhhbmRsZXMgbm8gdGVuYW50IG1heSBjbGFpbSBkaXJlY3RseSwgb24gdG9wIG9mIHRoZSBzeXN0ZW0gb3JnJ3NcbiAqIGBlY29zeXN0ZW1fcmVzZXJ2ZWRfbmFtZXNgIHRhYmxlOiB0aGUgcGxhdGZvcm0ncyBvd24gcHVibGlzaGVycywgd29yZHMgdGhhdFxuICogd291bGQgcmVhZCBhcyBhbiBlbmRvcnNlbWVudCwgYW5kIGluZnJhc3RydWN0dXJlIG5hbWVzLiBBIHJlc2VydmVkIGhhbmRsZSBjYW5cbiAqIHN0aWxsIGJlIHJlcXVlc3RlZCB0aHJvdWdoIGEgYGNsYWltYCByZXF1ZXN0LCBkZWNpZGVkIGJ5IHRoZSBzeXN0ZW0gb3JnLlxuICovXG5leHBvcnQgY29uc3QgQlVJTFRJTl9SRVNFUlZFRF9IQU5ETEVTOiByZWFkb25seSBzdHJpbmdbXSA9IFtcbiAgJ3BpcGVsaW5lLWJ1aWxkZXInLCAnY29tbXVuaXR5JywgJ29mZmljaWFsJywgJ3ZlcmlmaWVkJywgJ3N5c3RlbScsICdhZG1pbicsICdhZG1pbmlzdHJhdG9yJyxcbiAgJ3Jvb3QnLCAnc3VwcG9ydCcsICdzZWN1cml0eScsICdzdGFmZicsICdtb2RlcmF0b3InLCAnZWNvc3lzdGVtJywgJ3B1YmxpYycsICdsaWJyYXJ5JyxcbiAgJ2Fub255bW91cycsICd1bnZlcmlmaWVkJywgJ3BsYXRmb3JtJywgJ3JlZ2lzdHJ5JywgJ3BsdWdpbnMnLCAncGx1Z2luJywgJ2FwaScsICd3d3cnLFxuICAvLyBTdGF0aWMgc2VnbWVudHMgb2YgdGhlIHB1YmxpYyBkaXJlY3RvcnkncyBgL3BsdWdpbnMvPHB1Ymxpc2hlcj4vPG5hbWU+YCBVUkwgc3BhY2UuXG4gICdzdWJtaXQnLCAnY2F0ZWdvcnknLFxuXTtcblxuLyoqXG4gKiBSZXF1ZXN0IGtpbmRzIGEgVEVOQU5UIG1heSBzdWJtaXQgKGBtb2RlcmF0aW9uYCBpcyBzeXN0ZW0tb3JnLWNyZWF0ZWQpLiBBblxuICogYGFkdmlzb3J5YCByZXF1ZXN0IGNhcnJpZXMgYSBzZWN1cml0eS1hZHZpc29yeSBEUkFGVDsgb25seSB0aGUgc3lzdGVtIG9yZ1xuICogcHVibGlzaGVzIGl0IChhcHByb3ZpbmcgdGhlIHJlcXVlc3QpIG9yIHdpdGhkcmF3cyBpdC5cbiAqL1xuZXhwb3J0IGNvbnN0IFRFTkFOVF9SRVFVRVNUX0tJTkRTID0gW1xuICAnbmV3X2xpc3RpbmcnLCAnbmV3X3ZlcnNpb24nLCAnbGlzdGluZ191cGRhdGUnLCAneWFuaycsICd1bnBhdXNlJyxcbiAgJ3RyYW5zZmVyJywgJ2NsYWltJywgJ3Byb2ZpbGVfY2hhbmdlJywgJ3ZlcmlmeScsICdhZHZpc29yeScsXG5dIGFzIGNvbnN0O1xuXG4vKiogS2luZHMgc3VibWl0dGVkIHVuZGVyIGBwbHVnaW5zOnB1Ymxpc2hgICh0aGUgcmVzdCBuZWVkIGBwdWJsaXNoZXJzOm1hbmFnZWApLiAqL1xuZXhwb3J0IGNvbnN0IFBVQkxJU0hfUEVSTUlTU0lPTl9SRVFVRVNUX0tJTkRTOiByZWFkb25seSBzdHJpbmdbXSA9IFtcbiAgJ25ld19saXN0aW5nJywgJ25ld192ZXJzaW9uJywgJ2xpc3RpbmdfdXBkYXRlJywgJ3lhbmsnLCAndW5wYXVzZScsXG5dO1xuXG4vKiogS2luZHMgREVDSURFRCB3aXRoIGBwdWJsaXNoZXJzOnZlcmlmeWAgKHRoZSByZXN0IG5lZWQgYHBsdWdpbnM6bW9kZXJhdGVgKS4gKi9cbmV4cG9ydCBjb25zdCBWRVJJRllfUkVRVUVTVF9LSU5EUzogcmVhZG9ubHkgc3RyaW5nW10gPSBbJ3RyYW5zZmVyJywgJ2NsYWltJywgJ3Byb2ZpbGVfY2hhbmdlJywgJ3ZlcmlmeSddO1xuXG4vKiogS2luZHMgd2hvc2UgZGVjaXNpb24gcmVxdWlyZXMgYSBzdGVwLXVwIChzdXNwZW5kL3lhbmsvdGFrZWRvd24sIGFuZCBldmVyeSBgcHVibGlzaGVyczp2ZXJpZnlgIGRlY2lzaW9uKS4gKi9cbmV4cG9ydCBjb25zdCBTVEVQX1VQX1JFUVVFU1RfS0lORFM6IHJlYWRvbmx5IHN0cmluZ1tdID0gWyd5YW5rJywgJ3RyYW5zZmVyJywgJ2NsYWltJywgJ3Byb2ZpbGVfY2hhbmdlJywgJ3ZlcmlmeScsICdtb2RlcmF0aW9uJ107XG5cbi8qKiBNb2RlcmF0aW9uLXF1ZXVlIFNMQSBwZXIgbGFuZSwgaW4gaG91cnMgKDIgYnVzaW5lc3MgZGF5cyDiiYggNDggaDsgc2VjdXJpdHkgbGFuZSA0IGgpLiAqL1xuZXhwb3J0IGNvbnN0IFJFUVVFU1RfU0xBX0hPVVJTID0geyBzdGFuZGFyZDogNDgsIHNlY3VyaXR5OiA0IH0gYXMgY29uc3Q7XG5cbmZ1bmN0aW9uIGZsYWcobmFtZTogc3RyaW5nLCBkZmx0OiBib29sZWFuKTogYm9vbGVhbiB7XG4gIGNvbnN0IHJhdyA9IChwcm9jZXNzLmVudltuYW1lXSA/PyAnJykudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gIGlmIChyYXcgPT09ICcnKSByZXR1cm4gZGZsdDtcbiAgcmV0dXJuIHJhdyAhPT0gJ2ZhbHNlJyAmJiByYXcgIT09ICcwJyAmJiByYXcgIT09ICdvZmYnICYmIHJhdyAhPT0gJ25vJztcbn1cblxuLyoqXG4gKiBgT0ZGSUNJQUxfQVVUT19BUFBST1ZBTF9FTkFCTEVEYCAoZGVmYXVsdCBPTik6IHdoZW4gb2ZmLCB0aGUgc2VlZGVkXG4gKiBPZmZpY2lhbCBjYXRhbG9nIGF1dG8tYXBwcm92YWwgcnVsZSBuZXZlciBmaXJlcyBhbmQgZXZlcnkgT2ZmaWNpYWwgdXBkYXRlXG4gKiB3YWl0cyBmb3IgdHdvLXBlcnNvbiBhcHByb3ZhbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzT2ZmaWNpYWxBdXRvQXBwcm92YWxFbmFibGVkKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gZmxhZygnT0ZGSUNJQUxfQVVUT19BUFBST1ZBTF9FTkFCTEVEJywgdHJ1ZSk7XG59XG5cbi8qKlxuICogYFBMVUdJTl9QVUJMSVNISU5HX0VOQUJMRURgOiB3aGV0aGVyIFRFTkFOVCBvcmdzIG1heSBzdWJtaXQgcHVibGlzaFxuICogcmVxdWVzdHMuIERlZmF1bHRzIG9uIGZvciB0aGUgaG9zdGVkIGluc3RhbmNlIChiaWxsaW5nIG9uKSBhbmQgb2ZmIGZvciBhXG4gKiBzZWxmLWhvc3RlZCBvbmUgKGJpbGxpbmcgb2ZmKS4gVGhlIHN5c3RlbSBvcmcncyBPZmZpY2lhbCBjYXRhbG9nIGlzIG5ldmVyXG4gKiBhZmZlY3RlZCDigJQgaXQgaXMgdGhlIGluc3RhbmNlJ3Mgb3duIGNhdGFsb2cuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1BsdWdpblB1Ymxpc2hpbmdFbmFibGVkKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gZmxhZygnUExVR0lOX1BVQkxJU0hJTkdfRU5BQkxFRCcsIGlzQmlsbGluZ0VuYWJsZWQoKSk7XG59XG5cbi8qKlxuICogYEFOT05ZTU9VU19TVUJNSVNTSU9OU19FTkFCTEVEYCAoZGVmYXVsdCBPRkYpOiB3aGV0aGVyIHRoZVxuICogbm90LWxvZ2dlZC1pbiBwbHVnaW4gc3VibWlzc2lvbiBBUEkgaXMgc2VydmVkLiBFdmVuIHdoZW4gb24sIHN1Ym1pc3Npb25zXG4gKiBzdGF5IHVuYXZhaWxhYmxlIHdoaWxlIG91dGJvdW5kIGVtYWlsIGlzIG5vdCBjb25maWd1cmVkICh0aGUgbWFnaWMgbGluayBpc1xuICogdGhlIHN1Ym1pdHRlcidzIG9ubHkgdmVyaWZpY2F0aW9uKSDigJQgdGhlIHBsdWdpbiBzZXJ2aWNlIGNoZWNrcyB0aGF0IHRvby5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQW5vbnltb3VzU3VibWlzc2lvbnNFbmFibGVkKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gZmxhZygnQU5PTllNT1VTX1NVQk1JU1NJT05TX0VOQUJMRUQnLCBmYWxzZSk7XG59XG5cbi8qKlxuICogYFBMVUdJTl9SRVZJRVdTX0VOQUJMRURgIChkZWZhdWx0IE9OKTogd2hlbiBvZmYsIHJldmlld3MgYXJlIFJFQUQtT05MWSDigJRcbiAqIHdyaXRpbmcsIGVkaXRpbmcsIHZvdGluZywgcmVwb3J0aW5nIGFuZCByZXBseWluZyBhbnN3ZXJcbiAqIGBQTFVHSU5fUkVWSUVXU19ESVNBQkxFRGA7IG1vZGVyYXRpb24ga2VlcHMgd29ya2luZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUGx1Z2luUmV2aWV3c0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gIHJldHVybiBmbGFnKCdQTFVHSU5fUkVWSUVXU19FTkFCTEVEJywgdHJ1ZSk7XG59XG4iXX0=
|
|
132
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNvc3lzdGVtLmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvZWNvc3lzdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEMsT0FBTyxFQUFFLHFCQUFxQixFQUEyQixNQUFNLHNCQUFzQixDQUFDO0FBRXRGOzs7OztHQUtHO0FBRUgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFcEQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBRyx5QkFBeUIsQ0FBQztBQUV6RTs7aURBRWlEO0FBQ2pELE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLFlBQVksQ0FBQztBQUU1RCw2REFBNkQ7QUFDN0QsTUFBTSxVQUFVLHFCQUFxQjtJQUNuQyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDN0QsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsK0JBQStCLENBQUM7QUFDckUsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyw0QkFBNEIsQ0FBQztBQUNyRSxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLENBQUM7QUFDdEMsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsRUFBRSxDQUFDO0FBRXZDLHVFQUF1RTtBQUN2RSxNQUFNLFVBQVUsc0JBQXNCLENBQUMsTUFBYztJQUNuRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsb0JBQW9CLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxvQkFBb0IsRUFBRSxDQUFDO1FBQ2pGLE9BQU8sV0FBVyxvQkFBb0IsSUFBSSxvQkFBb0IsYUFB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Ii8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBQVUJMSVNIX1JFUVVFU1RfS0lORFMsIHR5cGUgUHVibGlzaFJlcXVlc3RLaW5kIH0gZnJvbSAnLi93aXJlLXZvY2FidWxhcnkuanMnO1xuXG4vKipcbiAqIFBsdWdpbi1lY29zeXN0ZW0gY29uc3RhbnRzIHNoYXJlZCBieSB0aGUgcGx1Z2luIHNlcnZpY2UgKHB1Ymxpc2hlcnMsIHRoZVxuICogcHVibGlzaC1yZXF1ZXN0IHF1ZXVlLCBhdXRvLWFwcHJvdmFsKSBhbmQgaXRzIGNhbGxlcnNcbiAqIChkb2NzL3BsdWdpbi1wdWJsaXNoaW5nLm1kKS4gRGVwZW5kZW5jeS1mcmVlIHNvXG4gKiB0aGUgZnJvbnRlbmQgYW5kIHRoZSBDTEkgY2FuIGltcG9ydCBpdCB0b28uXG4gKi9cblxuaW1wb3J0IHsgaXNCaWxsaW5nRW5hYmxlZCB9IGZyb20gJy4vcXVvdGEtdGllcnMuanMnO1xuXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBzeXN0ZW0tb3JnIFNFUlZJQ0UgQUNDT1VOVCB0aGUgT2ZmaWNpYWwgY2F0YWxvZyBsb2FkZXJcbiAqIChgZGVwbG95L2Jpbi9sb2FkLXBsdWdpbnMuc2hgLCBkcml2ZW4gYnkgYGluaXQtcGxhdGZvcm0uc2hgKSBydW5zIGFzLiBPbmx5IGFcbiAqIHJlcXVlc3Qgc3VibWl0dGVkIGJ5IHRoaXMgaWRlbnRpdHksIGZyb20gdGhlIHN5c3RlbSBvcmcsIGNhbiByaWRlIHRoZVxuICogYm9vdHN0cmFwIGV4Y2VwdGlvbiBvciB0aGUgT2ZmaWNpYWwgY2F0YWxvZyBhdXRvLWFwcHJvdmFsIHJ1bGUg4oCUXG4gKiBuZXZlciBhIHBlcnNvbiwgd2hpY2gga2VlcHMgXCJhIHN1cGVyYWRtaW4gdXBsb2FkcyBhbmQgYXBwcm92ZXMgYWxvbmVcIiBjbG9zZWQuXG4gKiBTZXJ2aWNlLWFjY291bnQgbmFtZXMgYXJlIHVuaXF1ZSBwZXIgb3JnIGFuZCBvbmx5IHN5c3RlbS1vcmcgYWRtaW5zXG4gKiBjYW4gY3JlYXRlIG9uZSB0aGVyZS5cbiAqL1xuZXhwb3J0IGNvbnN0IE9GRklDSUFMX0NBVEFMT0dfTE9BREVSX0FDQ09VTlQgPSAnb2ZmaWNpYWwtY2F0YWxvZy1sb2FkZXInO1xuXG4vKiogVGhlIHB1Ymxpc2hlciB0ZXJtcyB2ZXJzaW9uIGluIGZvcmNlIHdoZW4gdGhlIG9wZXJhdG9yIHNldHMgbm9uZS4gQnVtcGluZyBpdFxuICogIChgUFVCTElTSEVSX1RFUk1TX1ZFUlNJT05gKSBtYWtlcyBldmVyeSBwdWJsaXNoZXIgcmUtYWNjZXB0IGJlZm9yZSBpdHMgbmV4dFxuICogIHJlcXVlc3Q7IGV4aXN0aW5nIGxpc3RpbmdzIGFyZSB1bmFmZmVjdGVkLiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfUFVCTElTSEVSX1RFUk1TX1ZFUlNJT04gPSAnMjAyNi0wOS0yMSc7XG5cbi8qKiBUaGUgcHVibGlzaGVyIHRlcm1zIHZlcnNpb24gaW4gZm9yY2Ugb24gdGhpcyBpbnN0YW5jZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwdWJsaXNoZXJUZXJtc1ZlcnNpb24oKTogc3RyaW5nIHtcbiAgY29uc3QgdiA9IChwcm9jZXNzLmVudi5QVUJMSVNIRVJfVEVSTVNfVkVSU0lPTiA/PyAnJykudHJpbSgpO1xuICByZXR1cm4gdiAhPT0gJycgPyB2LnNsaWNlKDAsIDUwKSA6IERFRkFVTFRfUFVCTElTSEVSX1RFUk1TX1ZFUlNJT047XG59XG5cbi8qKlxuICogQSBwdWJsaXNoZXIgaGFuZGxlOiBvbmUgbG93ZXJjYXNlIHJlZ2lzdHJ5IHBhdGggY29tcG9uZW50LCBiZWNhdXNlIGl0IG5hbWVzXG4gKiB0aGUgYHB1YmxpYy88aGFuZGxlPi88bmFtZT5gIHJlcG9zaXRvcnkg4oCUIGxldHRlcnMsIGRpZ2l0cyBhbmQgc2luZ2xlXG4gKiBoeXBoZW5zIGJldHdlZW4gdGhlbSwgMuKAkzM5IGNoYXJhY3RlcnMuXG4gKi9cbmV4cG9ydCBjb25zdCBQVUJMSVNIRVJfSEFORExFX1BBVFRFUk4gPSAvXlthLXowLTldKyg/Oi1bYS16MC05XSspKiQvO1xuZXhwb3J0IGNvbnN0IFBVQkxJU0hFUl9IQU5ETEVfTUlOID0gMjtcbmV4cG9ydCBjb25zdCBQVUJMSVNIRVJfSEFORExFX01BWCA9IDM5O1xuXG4vKiogV2h5IGBoYW5kbGVgIGlzbid0IGEgdmFsaWQgcHVibGlzaGVyIGhhbmRsZSwgb3IgbnVsbCB3aGVuIGl0IGlzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHB1Ymxpc2hlckhhbmRsZVByb2JsZW0oaGFuZGxlOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgaWYgKGhhbmRsZS5sZW5ndGggPCBQVUJMSVNIRVJfSEFORExFX01JTiB8fCBoYW5kbGUubGVuZ3RoID4gUFVCTElTSEVSX0hBTkRMRV9NQVgpIHtcbiAgICByZXR1cm4gYG11c3QgYmUgJHtQVUJMSVNIRVJfSEFORExFX01JTn0tJHtQVUJMSVNIRVJfSEFORExFX01BWH0gY2hhcmFjdGVyc2A7XG4gIH1cbiAgaWYgKCFQVUJMSVNIRVJfSEFORExFX1BBVFRFUk4udGVzdChoYW5kbGUpKSB7XG4gICAgcmV0dXJuICdtdXN0IGJlIGxvd2VyY2FzZSBsZXR0ZXJzIGFuZCBkaWdpdHMsIG9wdGlvbmFsbHkgc2VwYXJhdGVkIGJ5IHNpbmdsZSBoeXBoZW5zJztcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBIYW5kbGVzIG5vIHRlbmFudCBtYXkgY2xhaW0gZGlyZWN0bHksIG9uIHRvcCBvZiB0aGUgc3lzdGVtIG9yZydzXG4gKiBgZWNvc3lzdGVtX3Jlc2VydmVkX25hbWVzYCB0YWJsZTogdGhlIHBsYXRmb3JtJ3Mgb3duIHB1Ymxpc2hlcnMsIHdvcmRzIHRoYXRcbiAqIHdvdWxkIHJlYWQgYXMgYW4gZW5kb3JzZW1lbnQsIGFuZCBpbmZyYXN0cnVjdHVyZSBuYW1lcy4gQSByZXNlcnZlZCBoYW5kbGUgY2FuXG4gKiBzdGlsbCBiZSByZXF1ZXN0ZWQgdGhyb3VnaCBhIGBjbGFpbWAgcmVxdWVzdCwgZGVjaWRlZCBieSB0aGUgc3lzdGVtIG9yZy5cbiAqL1xuZXhwb3J0IGNvbnN0IEJVSUxUSU5fUkVTRVJWRURfSEFORExFUzogcmVhZG9ubHkgc3RyaW5nW10gPSBbXG4gICdwaXBlbGluZS1idWlsZGVyJywgJ2NvbW11bml0eScsICdvZmZpY2lhbCcsICd2ZXJpZmllZCcsICdzeXN0ZW0nLCAnYWRtaW4nLCAnYWRtaW5pc3RyYXRvcicsXG4gICdyb290JywgJ3N1cHBvcnQnLCAnc2VjdXJpdHknLCAnc3RhZmYnLCAnbW9kZXJhdG9yJywgJ2Vjb3N5c3RlbScsICdwdWJsaWMnLCAnbGlicmFyeScsXG4gICdhbm9ueW1vdXMnLCAndW52ZXJpZmllZCcsICdwbGF0Zm9ybScsICdyZWdpc3RyeScsICdwbHVnaW5zJywgJ3BsdWdpbicsICdhcGknLCAnd3d3JyxcbiAgLy8gU3RhdGljIHNlZ21lbnRzIG9mIHRoZSBwdWJsaWMgZGlyZWN0b3J5J3MgYC9wbHVnaW5zLzxwdWJsaXNoZXI+LzxuYW1lPmAgVVJMIHNwYWNlLlxuICAnc3VibWl0JywgJ2NhdGVnb3J5Jyxcbl07XG5cbi8qKlxuICogUmVxdWVzdCBraW5kcyBhIFRFTkFOVCBtYXkgc3VibWl0IChgbW9kZXJhdGlvbmAgaXMgc3lzdGVtLW9yZy1jcmVhdGVkKS4gQW5cbiAqIGBhZHZpc29yeWAgcmVxdWVzdCBjYXJyaWVzIGEgc2VjdXJpdHktYWR2aXNvcnkgRFJBRlQ7IG9ubHkgdGhlIHN5c3RlbSBvcmdcbiAqIHB1Ymxpc2hlcyBpdCAoYXBwcm92aW5nIHRoZSByZXF1ZXN0KSBvciB3aXRoZHJhd3MgaXQuXG4gKi9cbi8qKlxuICogREVSSVZFRCBmcm9tIGBQVUJMSVNIX1JFUVVFU1RfS0lORFNgIGJ5IGV4Y2x1c2lvbiwgbm90IGhhbmQtY29waWVkLlxuICpcbiAqIFRoaXMgaXMgdGhlIFRFTkFOVCBzdWJtaXQgZ2F0ZSAoYHJlcXVlc3RzLnRzYCBjaGVja3MgbWVtYmVyc2hpcCBiZWZvcmVcbiAqIGFjY2VwdGluZyBhIHJlcXVlc3QpLCBhbmQgaXQgd2FzIGEgdHJhbnNjcmlwdGlvbiBvZiB0aGUgY2Fub25pY2FsIGxpc3QgbWludXNcbiAqIHR3byBlbnRyaWVzLiBBIGtpbmQgYWRkZWQgdG8gdGhlIGNhbm9uaWNhbCBsaXN0IHRoZXJlZm9yZSBuZWVkZWQgYSBzZWNvbmQsXG4gKiBlbnRpcmVseSB1bi1lbmZvcmNlZCBlZGl0IGhlcmUgYmVmb3JlIGEgcHVibGlzaGVyIGNvdWxkIHN1Ym1pdCBpdCDigJQgdGhlIGtpbmRcbiAqIHdvdWxkIGV4aXN0LCBiZSBkZWNpZGFibGUgaW4gdGhlIGNvbnNvbGUsIGFuZCBiZSByZWplY3RlZCBhdCB0aGUgZG9vci5cbiAqXG4gKiBTdGF0aW5nIHRoZSBFWENMVVNJT05TIGluc3RlYWQgbWFrZXMgdGhlIHJlbGF0aW9uc2hpcCB0aGUgY29kZTogYG1vZGVyYXRpb25gXG4gKiBhbmQgYHN1Ym1pc3Npb25gIGFyZSBvcGVuZWQgYnkgdGhlIHN5c3RlbSBvcmcgb24gYSB0ZW5hbnQncyBiZWhhbGYsIG5ldmVyXG4gKiBzdWJtaXR0ZWQgYnkgdGhlIHRlbmFudCwgc28gdGhleSBhcmUgdGhlIHR3byB0aGF0IGRvIG5vdCBiZWxvbmcgaGVyZS5cbiAqL1xuY29uc3QgU1lTVEVNX09QRU5FRF9SRVFVRVNUX0tJTkRTID0gWydtb2RlcmF0aW9uJywgJ3N1Ym1pc3Npb24nXSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IFRFTkFOVF9SRVFVRVNUX0tJTkRTID0gUFVCTElTSF9SRVFVRVNUX0tJTkRTXG4gIC5maWx0ZXIoKGspOiBrIGlzIEV4Y2x1ZGU8UHVibGlzaFJlcXVlc3RLaW5kLCB0eXBlb2YgU1lTVEVNX09QRU5FRF9SRVFVRVNUX0tJTkRTW251bWJlcl0+ID0+XG4gICAgIShTWVNURU1fT1BFTkVEX1JFUVVFU1RfS0lORFMgYXMgcmVhZG9ubHkgc3RyaW5nW10pLmluY2x1ZGVzKGspKTtcblxuLyoqIEtpbmRzIHN1Ym1pdHRlZCB1bmRlciBgcGx1Z2luczpwdWJsaXNoYCAodGhlIHJlc3QgbmVlZCBgcHVibGlzaGVyczptYW5hZ2VgKS4gKi9cbmV4cG9ydCBjb25zdCBQVUJMSVNIX1BFUk1JU1NJT05fUkVRVUVTVF9LSU5EUzogcmVhZG9ubHkgc3RyaW5nW10gPSBbXG4gICduZXdfbGlzdGluZycsICduZXdfdmVyc2lvbicsICdsaXN0aW5nX3VwZGF0ZScsICd5YW5rJywgJ3VucGF1c2UnLFxuXTtcblxuLyoqIEtpbmRzIERFQ0lERUQgd2l0aCBgcHVibGlzaGVyczp2ZXJpZnlgICh0aGUgcmVzdCBuZWVkIGBwbHVnaW5zOm1vZGVyYXRlYCkuICovXG5leHBvcnQgY29uc3QgVkVSSUZZX1JFUVVFU1RfS0lORFM6IHJlYWRvbmx5IHN0cmluZ1tdID0gWyd0cmFuc2ZlcicsICdjbGFpbScsICdwcm9maWxlX2NoYW5nZScsICd2ZXJpZnknXTtcblxuLyoqIEtpbmRzIHdob3NlIGRlY2lzaW9uIHJlcXVpcmVzIGEgc3RlcC11cCAoc3VzcGVuZC95YW5rL3Rha2Vkb3duLCBhbmQgZXZlcnkgYHB1Ymxpc2hlcnM6dmVyaWZ5YCBkZWNpc2lvbikuICovXG5leHBvcnQgY29uc3QgU1RFUF9VUF9SRVFVRVNUX0tJTkRTOiByZWFkb25seSBzdHJpbmdbXSA9IFsneWFuaycsICd0cmFuc2ZlcicsICdjbGFpbScsICdwcm9maWxlX2NoYW5nZScsICd2ZXJpZnknLCAnbW9kZXJhdGlvbiddO1xuXG4vKiogTW9kZXJhdGlvbi1xdWV1ZSBTTEEgcGVyIGxhbmUsIGluIGhvdXJzICgyIGJ1c2luZXNzIGRheXMg4omIIDQ4IGg7IHNlY3VyaXR5IGxhbmUgNCBoKS4gKi9cbmV4cG9ydCBjb25zdCBSRVFVRVNUX1NMQV9IT1VSUyA9IHsgc3RhbmRhcmQ6IDQ4LCBzZWN1cml0eTogNCB9IGFzIGNvbnN0O1xuXG5mdW5jdGlvbiBmbGFnKG5hbWU6IHN0cmluZywgZGZsdDogYm9vbGVhbik6IGJvb2xlYW4ge1xuICBjb25zdCByYXcgPSAocHJvY2Vzcy5lbnZbbmFtZV0gPz8gJycpLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICBpZiAocmF3ID09PSAnJykgcmV0dXJuIGRmbHQ7XG4gIHJldHVybiByYXcgIT09ICdmYWxzZScgJiYgcmF3ICE9PSAnMCcgJiYgcmF3ICE9PSAnb2ZmJyAmJiByYXcgIT09ICdubyc7XG59XG5cbi8qKlxuICogYE9GRklDSUFMX0FVVE9fQVBQUk9WQUxfRU5BQkxFRGAgKGRlZmF1bHQgT04pOiB3aGVuIG9mZiwgdGhlIHNlZWRlZFxuICogT2ZmaWNpYWwgY2F0YWxvZyBhdXRvLWFwcHJvdmFsIHJ1bGUgbmV2ZXIgZmlyZXMgYW5kIGV2ZXJ5IE9mZmljaWFsIHVwZGF0ZVxuICogd2FpdHMgZm9yIHR3by1wZXJzb24gYXBwcm92YWwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc09mZmljaWFsQXV0b0FwcHJvdmFsRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgcmV0dXJuIGZsYWcoJ09GRklDSUFMX0FVVE9fQVBQUk9WQUxfRU5BQkxFRCcsIHRydWUpO1xufVxuXG4vKipcbiAqIGBQTFVHSU5fUFVCTElTSElOR19FTkFCTEVEYDogd2hldGhlciBURU5BTlQgb3JncyBtYXkgc3VibWl0IHB1Ymxpc2hcbiAqIHJlcXVlc3RzLiBEZWZhdWx0cyBvbiBmb3IgdGhlIGhvc3RlZCBpbnN0YW5jZSAoYmlsbGluZyBvbikgYW5kIG9mZiBmb3IgYVxuICogc2VsZi1ob3N0ZWQgb25lIChiaWxsaW5nIG9mZikuIFRoZSBzeXN0ZW0gb3JnJ3MgT2ZmaWNpYWwgY2F0YWxvZyBpcyBuZXZlclxuICogYWZmZWN0ZWQg4oCUIGl0IGlzIHRoZSBpbnN0YW5jZSdzIG93biBjYXRhbG9nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNQbHVnaW5QdWJsaXNoaW5nRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgcmV0dXJuIGZsYWcoJ1BMVUdJTl9QVUJMSVNISU5HX0VOQUJMRUQnLCBpc0JpbGxpbmdFbmFibGVkKCkpO1xufVxuXG4vKipcbiAqIGBBTk9OWU1PVVNfU1VCTUlTU0lPTlNfRU5BQkxFRGAgKGRlZmF1bHQgT0ZGKTogd2hldGhlciB0aGVcbiAqIG5vdC1sb2dnZWQtaW4gcGx1Z2luIHN1Ym1pc3Npb24gQVBJIGlzIHNlcnZlZC4gRXZlbiB3aGVuIG9uLCBzdWJtaXNzaW9uc1xuICogc3RheSB1bmF2YWlsYWJsZSB3aGlsZSBvdXRib3VuZCBlbWFpbCBpcyBub3QgY29uZmlndXJlZCAodGhlIG1hZ2ljIGxpbmsgaXNcbiAqIHRoZSBzdWJtaXR0ZXIncyBvbmx5IHZlcmlmaWNhdGlvbikg4oCUIHRoZSBwbHVnaW4gc2VydmljZSBjaGVja3MgdGhhdCB0b28uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Fub255bW91c1N1Ym1pc3Npb25zRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgcmV0dXJuIGZsYWcoJ0FOT05ZTU9VU19TVUJNSVNTSU9OU19FTkFCTEVEJywgZmFsc2UpO1xufVxuXG4vKipcbiAqIGBQTFVHSU5fUkVWSUVXU19FTkFCTEVEYCAoZGVmYXVsdCBPTik6IHdoZW4gb2ZmLCByZXZpZXdzIGFyZSBSRUFELU9OTFkg4oCUXG4gKiB3cml0aW5nLCBlZGl0aW5nLCB2b3RpbmcsIHJlcG9ydGluZyBhbmQgcmVwbHlpbmcgYW5zd2VyXG4gKiBgUExVR0lOX1JFVklFV1NfRElTQUJMRURgOyBtb2RlcmF0aW9uIGtlZXBzIHdvcmtpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1BsdWdpblJldmlld3NFbmFibGVkKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gZmxhZygnUExVR0lOX1JFVklFV1NfRU5BQkxFRCcsIHRydWUpO1xufVxuIl19
|
package/lib/types/error-codes.js
CHANGED
|
@@ -272,4 +272,4 @@ export const ErrorCodeStatus = {
|
|
|
272
272
|
export function getStatusForErrorCode(code) {
|
|
273
273
|
return ErrorCodeStatus[code] ?? 500;
|
|
274
274
|
}
|
|
275
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItY29kZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvZXJyb3ItY29kZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFOLElBQVksU0EwTFg7QUExTEQsV0FBWSxTQUFTO0lBQ25CLDhCQUE4QjtJQUM5QiwwQ0FBNkIsQ0FBQTtJQUM3Qiw0Q0FBK0IsQ0FBQTtJQUMvQiw0Q0FBK0IsQ0FBQTtJQUMvQiw0Q0FBK0IsQ0FBQTtJQUMvQiw0Q0FBK0IsQ0FBQTtJQUMvQjs7O3VEQUdtRDtJQUNuRCwwQ0FBNkIsQ0FBQTtJQUM3Qjs4RUFDMEU7SUFDMUUsZ0RBQW1DLENBQUE7SUFFbkMsNkJBQTZCO0lBQzdCLGtFQUFxRCxDQUFBO0lBQ3JEO3dFQUNvRTtJQUNwRSw4REFBaUQsQ0FBQTtJQUNqRDtvRUFDZ0U7SUFDaEUsZ0VBQW1ELENBQUE7SUFDbkQ7a0VBQzhEO0lBQzlELGdFQUFtRCxDQUFBO0lBQ25EOztvRkFFZ0Y7SUFDaEYsd0RBQTJDLENBQUE7SUFDM0M7d0VBQ29FO0lBQ3BFLGtFQUFxRCxDQUFBO0lBQ3JEOzJCQUN1QjtJQUN2Qix3RUFBMkQsQ0FBQTtJQUMzRCxvREFBb0Q7SUFDcEQsd0RBQTJDLENBQUE7SUFDM0M7Z0ZBQzRFO0lBQzVFLHdDQUEyQixDQUFBO0lBQzNCLHdGQUF3RjtJQUN4RixzRUFBeUQsQ0FBQTtJQUN6RDt5REFDcUQ7SUFDckQsZ0VBQW1ELENBQUE7SUFDbkQ7MkRBQ3VEO0lBQ3ZELDREQUErQyxDQUFBO0lBQy9DOzsyQ0FFdUM7SUFDdkMsMERBQTZDLENBQUE7SUFDN0MsMENBQTZCLENBQUE7SUFDN0IsMERBQTZDLENBQUE7SUFFN0MseUJBQXlCO0lBQ3pCLG9DQUF1QixDQUFBO0lBQ3ZCLDRDQUErQixDQUFBO0lBQy9COzsyREFFdUQ7SUFDdkQsd0RBQTJDLENBQUE7SUFDM0M7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LENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxFQUFFLEdBQUc7SUFDL0IsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLEVBQUUsR0FBRztJQUNoQyxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEdBQUc7SUFDcEMsQ0FBQyxTQUFTLENBQUMsOEJBQThCLENBQUMsRUFBRSxHQUFHO0NBQ2hELENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxJQUFlO0lBQ25ELE9BQU8sZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQztBQUN0QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogU3RhbmRhcmRpemVkIGVycm9yIGNvZGVzIHVzZWQgYWNyb3NzIGFsbCBBUEkgbWljcm9zZXJ2aWNlcy5cbiAqIFVzZSB0aGVzZSBjb2RlcyBpbiBlcnJvciByZXNwb25zZXMgZm9yIGNvbnNpc3RlbnQgY2xpZW50IGhhbmRsaW5nLlxuICpcbiAqIEVhY2ggSFRUUCBzdGF0dXMgY2F0ZWdvcnkgaGFzIG9uZSBwcmltYXJ5IGNvZGUuIFVzZSB0aGUgYGRldGFpbHNgXG4gKiBmaWVsZCBpbiBlcnJvciByZXNwb25zZXMgZm9yIHN1Yi10eXBlIGluZm9ybWF0aW9uIChlLmcuIHdoaWNoIHF1b3RhXG4gKiB3YXMgZXhjZWVkZWQsIHdoaWNoIGZpZWxkIGZhaWxlZCB2YWxpZGF0aW9uKS5cbiAqL1xuZXhwb3J0IGVudW0gRXJyb3JDb2RlIHtcbiAgLy8gQXV0aGVudGljYXRpb24gZXJyb3JzICg0MDEpXG4gIFVOQVVUSE9SSVpFRCA9ICdVTkFVVEhPUklaRUQnLFxuICBUT0tFTl9FWFBJUkVEID0gJ1RPS0VOX0VYUElSRUQnLFxuICBUT0tFTl9JTlZBTElEID0gJ1RPS0VOX0lOVkFMSUQnLFxuICBUT0tFTl9NSVNTSU5HID0gJ1RPS0VOX01JU1NJTkcnLFxuICBUT0tFTl9SRVZPS0VEID0gJ1RPS0VOX1JFVk9LRUQnLFxuICAvKiogVGhlIHNlc3Npb24gaXMgbm90IE1GQS1ncmFkZSAoYGFhbGAgYmVsb3cgdGhlIHJvdXRlJ3MgYG1pbkFzc3VyYW5jZWApLlxuICAgKiAgVGhlIGNsaWVudCBzZW5kcyB0aGUgcGVyc29uIHRvIGVucm9sIC8gc2lnbiBpbiBhZ2FpbiB3aXRoIGEgc2Vjb25kXG4gICAqICBmYWN0b3Ig4oCUIGl0IG11c3QgTk9UIHNpZ24gdGhlbSBvdXQgb3IgcmV0cnkgYSB0b2tlbiByZWZyZXNoLCBzaW5jZSBhXG4gICAqICByZWZyZXNoIGNhbiBuZXZlciByYWlzZSB0aGUgYXNzdXJhbmNlIGxldmVsLiAqL1xuICBNRkFfUkVRVUlSRUQgPSAnTUZBX1JFUVVJUkVEJyxcbiAgLyoqIFRoZSBzZXNzaW9uIGlzIE1GQS1ncmFkZSBidXQgaXRzIGBhdXRoX3RpbWVgIGlzIG9sZGVyIHRoYW4gdGhlIHJvdXRlJ3NcbiAgICogIGBtYXhBZ2VgIOKAlCB0aGUgcGVyc29uIG11c3QgYXV0aGVudGljYXRlIGFnYWluIChub3QgbWVyZWx5IHJlZnJlc2gpLiAqL1xuICBSRUFVVEhfUkVRVUlSRUQgPSAnUkVBVVRIX1JFUVVJUkVEJyxcblxuICAvLyBBdXRob3JpemF0aW9uIGVycm9ycyAoNDAzKVxuICBJTlNVRkZJQ0lFTlRfUEVSTUlTU0lPTlMgPSAnSU5TVUZGSUNJRU5UX1BFUk1JU1NJT05TJyxcbiAgLyoqIEEgbWFjaGluZSBjcmVkZW50aWFsIChzZXJ2aWNlIHByaW5jaXBhbCwgb3JnIHNlcnZpY2UgYWNjb3VudCwgb3IgYW5cbiAgICogIGV4Y2hhbmdlZCBhY2Nlc3Mga2V5KSByZWFjaGVkIGEgcm91dGUgdGhhdCByZXF1aXJlcyBhIHBlcnNvbi4gKi9cbiAgSFVNQU5fU0VTU0lPTl9SRVFVSVJFRCA9ICdIVU1BTl9TRVNTSU9OX1JFUVVJUkVEJyxcbiAgLyoqIEEgYm9vdHN0cmFwLWFkbWluIGVucm9sbWVudCBzZXNzaW9uIChgbWZhRW5yb2xsbWVudFBlbmRpbmdgKSByZWFjaGVkIGFcbiAgICogIHJvdXRlIG91dHNpZGUgdGhlIGVucm9sbWVudCAvIHNpZ24tb3V0IC8gc2V0dXAgYWxsb3dsaXN0LiAqL1xuICBNRkFfRU5ST0xMTUVOVF9SRVFVSVJFRCA9ICdNRkFfRU5ST0xMTUVOVF9SRVFVSVJFRCcsXG4gIC8qKiBBIHJlYWQtb25seSBpbXBlcnNvbmF0aW9uIHRva2VuIChgaW1wZXJzb25hdGlvblJlYWRPbmx5YCkgYXR0ZW1wdGVkIGFcbiAgICogIHN0YXRlLWNoYW5naW5nIHJlcXVlc3QgKGFueXRoaW5nIGJ1dCBHRVQvSEVBRC9PUFRJT05TKS4gKi9cbiAgSU1QRVJTT05BVElPTl9SRUFEX09OTFkgPSAnSU1QRVJTT05BVElPTl9SRUFEX09OTFknLFxuICAvKiogQSBwbHVnaW4tZWNvc3lzdGVtIGdvdmVybmFuY2Ugcm91dGUgKGRvY3MvcnVuYm9va3MvZWNvc3lzdGVtLW1vZGVyYXRpb24ubWQpXG4gICAqICB3YXMgY2FsbGVkIGZyb20gYW4gYWN0aXZlIG9yZyBvdGhlciB0aGFuIHRoZSBzeXN0ZW0gb3JnIOKAlCBhIHRva2VuIG1pbnRlZCBpblxuICAgKiAgYSB0ZW5hbnQgb3JnIGlzIHJlZnVzZWQgZXZlbiBmb3IgdGhlIHNhbWUgdXNlci4gU3dpdGNoIHRvIHRoZSBzeXN0ZW0gb3JnLiAqL1xuICBTWVNURU1fT1JHX1JFUVVJUkVEID0gJ1NZU1RFTV9PUkdfUkVRVUlSRUQnLFxuICAvKiogVGhlIHB1Ymxpc2hlciBoYXNuJ3QgYWNjZXB0ZWQgdGhlIENVUlJFTlQgcHVibGlzaGVyIHRlcm1zIHZlcnNpb24sIHNvIGl0XG4gICAqICBjYW4ndCBzdWJtaXQgbmV3IHJlcXVlc3RzIChleGlzdGluZyBsaXN0aW5ncyBhcmUgdW5hZmZlY3RlZCkuICovXG4gIFBVQkxJU0hFUl9URVJNU19SRVFVSVJFRCA9ICdQVUJMSVNIRVJfVEVSTVNfUkVRVUlSRUQnLFxuICAvKiogUHVibGlzaGluZyBpcyBkb25lIGZyb20gdGhlIFJPT1Qgb3JnOyBhIHRlYW0gb3JnIGNhbid0IG93biBhIHB1Ymxpc2hlciBvclxuICAgKiAgc3VibWl0IHJlcXVlc3RzLiAqL1xuICBQVUJMSVNIRVJfUk9PVF9PUkdfUkVRVUlSRUQgPSAnUFVCTElTSEVSX1JPT1RfT1JHX1JFUVVJUkVEJyxcbiAgLyoqIFRoZSBwdWJsaXNoZXIgaXMgc3VzcGVuZGVkIGJ5IHRoZSBzeXN0ZW0gb3JnLiAqL1xuICBQVUJMSVNIRVJfU1VTUEVOREVEID0gJ1BVQkxJU0hFUl9TVVNQRU5ERUQnLFxuICAvKiogVGhlIG9yZ2FuaXphdGlvbidzIGFkbWluaXN0cmF0b3JzIHN3aXRjaGVkIEFJIGZlYXR1cmVzIG9mZiAoYGFpRW5hYmxlZDogZmFsc2VgXG4gICAqICBvbiB0aGUgb3JnJ3MgQUkgY29uZmlndXJhdGlvbikuIEV2ZXJ5IEFJIGVudHJ5IHBvaW50IHJlZnVzZXMgd2l0aCBpdC4gKi9cbiAgQUlfRElTQUJMRUQgPSAnQUlfRElTQUJMRUQnLFxuICAvKiogVGVuYW50IHB1Ymxpc2hpbmcgaXMgc3dpdGNoZWQgb2ZmIG9uIHRoaXMgaW5zdGFuY2UgKGBQTFVHSU5fUFVCTElTSElOR19FTkFCTEVEYCkuICovXG4gIFBMVUdJTl9QVUJMSVNISU5HX0RJU0FCTEVEID0gJ1BMVUdJTl9QVUJMSVNISU5HX0RJU0FCTEVEJyxcbiAgLyoqIFJldmlldyB3cml0ZXMgYXJlIHN3aXRjaGVkIG9mZiBvbiB0aGlzIGluc3RhbmNlIChgUExVR0lOX1JFVklFV1NfRU5BQkxFRGApOlxuICAgKiAgcmV2aWV3cyBzdGF5IHJlYWRhYmxlLCBub3RoaW5nIG5ldyBpcyB3cml0dGVuLiAqL1xuICBQTFVHSU5fUkVWSUVXU19ESVNBQkxFRCA9ICdQTFVHSU5fUkVWSUVXU19ESVNBQkxFRCcsXG4gIC8qKiBBIG1lbWJlciBvZiB0aGUgcHVibGlzaGVyJ3Mgb3duIG9yZ2FuaXphdGlvbiB0cmllZCB0byByZXZpZXcgKG9yIHZvdGUgb24gYVxuICAgKiAgcmV2aWV3IG9mKSBvbmUgb2YgaXRzIGxpc3RpbmdzIChzZWxmLXByb21vdGlvbikuICovXG4gIFJFVklFV19TRUxGX1BST01PVElPTiA9ICdSRVZJRVdfU0VMRl9QUk9NT1RJT04nLFxuICAvKiogU2VwYXJhdGlvbiBvZiBkdXRpZXM6IHRoZSBjYWxsZXIgbWF5IG5vdCBkZWNpZGUgdGhpcyByZXF1ZXN0IOKAlFxuICAgKiAgaXQgY2FtZSBmcm9tIGFuIG9yZyB0aGV5IGJlbG9uZyB0bywgdGhleSB1cGxvYWRlZCB0aGUgdmVyc2lvbiwgb3IgdGhleVxuICAgKiAgZ2F2ZSB0aGUgZmlyc3Qgb2YgdHdvIGFwcHJvdmFscy4gKi9cbiAgU0VQQVJBVElPTl9PRl9EVVRJRVMgPSAnU0VQQVJBVElPTl9PRl9EVVRJRVMnLFxuICBPUkdfTUlTTUFUQ0ggPSAnT1JHX01JU01BVENIJyxcbiAgQ09NUExJQU5DRV9WSU9MQVRJT04gPSAnQ09NUExJQU5DRV9WSU9MQVRJT04nLFxuXG4gIC8vIE5vdCBmb3VuZCBlcnJvcnMgKDQwNClcbiAgTk9UX0ZPVU5EID0gJ05PVF9GT1VORCcsXG4gIE9SR19OT1RfRk9VTkQgPSAnT1JHX05PVF9GT1VORCcsXG4gIC8qKiBUaGUgZW1haWwgZ2l2ZW4gdG8gXCJhZGQgbWVtYmVyXCIgaGFzIG5vIGFjY291bnQuIERpc3RpbmN0IGZyb20gTk9UX0ZPVU5EXG4gICAqICBiZWNhdXNlIGl0IGlzIEFDVElPTkFCTEU6IHRoZSBjYWxsZXIncyBpbnRlbnQgaXMgc2F0aXNmaWFibGUgYnkgc2VuZGluZyBhblxuICAgKiAgaW52aXRhdGlvbiwgYW5kIGEgYmFyZSA0MDQgbmFtZWQgbm8gd2F5IGZvcndhcmQuICovXG4gIFVTRVJfTk9UX1JFR0lTVEVSRUQgPSAnVVNFUl9OT1RfUkVHSVNURVJFRCcsXG4gIC8qKiBUaGUgYW5vbnltb3VzIHBsdWdpbiBzdWJtaXNzaW9uIEFQSSBpcyBvZmYgb24gdGhpcyBpbnN0YW5jZVxuICAgKiAgKGBBTk9OWU1PVVNfU1VCTUlTU0lPTlNfRU5BQkxFRGAsIG9yIG91dGJvdW5kIGVtYWlsIGlzbid0IGNvbmZpZ3VyZWQpIOKAlFxuICAgKiAgYW5zd2VyZWQgYXMgYSBwbGFpbiA0MDQgKGRvY3MvcGx1Z2luLXB1Ymxpc2hpbmcubWQpLiAqL1xuICBTVUJNSVNTSU9OU19ESVNBQkxFRCA9ICdTVUJNSVNTSU9OU19ESVNBQkxFRCcsXG5cbiAgLy8gVmFsaWRhdGlvbiBlcnJvcnMgKDQwMClcbiAgVkFMSURBVElPTl9FUlJPUiA9ICdWQUxJREFUSU9OX0VSUk9SJyxcbiAgTUlTU0lOR19SRVFVSVJFRF9GSUVMRCA9ICdNSVNTSU5HX1JFUVVJUkVEX0ZJRUxEJyxcbiAgLyoqIEEgcHJvb2Ytb2Ytd29yayBhbnN3ZXIgaXMgbWlzc2luZywgbWFsZm9ybWVkLCBleHBpcmVkLCB0b28gZWFzeSwgd3JvbmcsXG4gICAqICBvciB3YXMgYWxyZWFkeSB1c2VkIChhbm9ueW1vdXMgc3VibWlzc2lvbnMpLiAqL1xuICBQUk9PRl9PRl9XT1JLX0lOVkFMSUQgPSAnUFJPT0ZfT0ZfV09SS19JTlZBTElEJyxcbiAgVEVNUExBVEVfVU5LTk9XTl9QQVRIID0gJ1RFTVBMQVRFX1VOS05PV05fUEFUSCcsXG4gIFRFTVBMQVRFX0NZQ0xFID0gJ1RFTVBMQVRFX0NZQ0xFJyxcbiAgVEVNUExBVEVfUEFSU0VfRVJST1IgPSAnVEVNUExBVEVfUEFSU0VfRVJST1InLFxuICBURU1QTEFURV9UWVBFX01JU01BVENIID0gJ1RFTVBMQVRFX1RZUEVfTUlTTUFUQ0gnLFxuICBURU1QTEFURV9TRUNSRVRTX1JFU0VSVkVEID0gJ1RFTVBMQVRFX1NFQ1JFVFNfUkVTRVJWRUQnLFxuICBURU1QTEFURV9DT05UUkFDVF9WSU9MQVRJT04gPSAnVEVNUExBVEVfQ09OVFJBQ1RfVklPTEFUSU9OJyxcbiAgVEVNUExBVEVfU0laRV9FWENFRURFRCA9ICdURU1QTEFURV9TSVpFX0VYQ0VFREVEJyxcbiAgVEVNUExBVEVfVkFMSURBVElPTl9GQUlMRUQgPSAnVEVNUExBVEVfVkFMSURBVElPTl9GQUlMRUQnLFxuXG4gIC8vIFF1b3RhL1JhdGUgbGltaXQgZXJyb3JzICg0MjkpXG4gIFFVT1RBX0VYQ0VFREVEID0gJ1FVT1RBX0VYQ0VFREVEJyxcbiAgLyoqIFRoZSBjYWxsZXIncyBwZXItbWVtYmVyIHNoYXJlIG9mIHRoZSBvcmcncyBgYWlDYWxsc2AgKG9yZyBzZXR0aW5nXG4gICAqICBgYWlDYWxsc1Blck1lbWJlclBjdGApIGlzIHNwZW50IGZvciB0aGlzIHBlcmlvZCDigJQgdGhlIG9yZyBpdHNlbGYgbWF5IGhhdmUgaGVhZHJvb20uICovXG4gIEFJX01FTUJFUl9TSEFSRV9FWENFRURFRCA9ICdBSV9NRU1CRVJfU0hBUkVfRVhDRUVERUQnLFxuICAvKiogVGhlIG9yZydzIHBlci1wZXJpb2QgQUkgdG9rZW4gYnVkZ2V0IChvcmcgc2V0dGluZyBgYWlUb2tlbkJ1ZGdldGApIGlzIHNwZW50LiAqL1xuICBBSV9UT0tFTl9CVURHRVRfRVhDRUVERUQgPSAnQUlfVE9LRU5fQlVER0VUX0VYQ0VFREVEJyxcbiAgUkFURV9MSU1JVF9FWENFRURFRCA9ICdSQVRFX0xJTUlUX0VYQ0VFREVEJyxcbiAgLyoqIEFuIGFub255bW91cyBzdWJtaXR0ZXIgKHBlciB2ZXJpZmllZCBlbWFpbCwgb3IgcGVyIGNsaWVudCBJUCkgaXMgYXQgdGhlXG4gICAqICByb2xsaW5nIDI0LWhvdXIgc3VibWlzc2lvbiBjYXAuICovXG4gIFNVQk1JU1NJT05fTElNSVQgPSAnU1VCTUlTU0lPTl9MSU1JVCcsXG5cbiAgLy8gUGF5bG9hZCBlcnJvcnMgKDQxMylcbiAgUEFZTE9BRF9UT09fTEFSR0UgPSAnUEFZTE9BRF9UT09fTEFSR0UnLFxuXG4gIC8vIENvbmZsaWN0IGVycm9ycyAoNDA5KVxuICBDT05GTElDVCA9ICdDT05GTElDVCcsXG4gIERVUExJQ0FURV9FTlRSWSA9ICdEVVBMSUNBVEVfRU5UUlknLFxuICBTQ0FOX0NPTkZMSUNUID0gJ1NDQU5fQ09ORkxJQ1QnLFxuICAvKiogQSBwbHVnaW4gaW1hZ2UncyBjb3NpZ24gc2lnbmF0dXJlIChvciBpdHMgc2lnbmVkIFNCT00gYXR0ZXN0YXRpb24pIGRpZFxuICAgKiAgbm90IHZlcmlmeSBhZ2FpbnN0IHRoZSBwbGF0Zm9ybSdzIHBsdWdpbi1zaWduaW5nIGtleSDigJQgdGhlIHJlZ2lzdHJ5XG4gICAqICBjb250ZW50IG5vIGxvbmdlciBtYXRjaGVzIHdoYXQgdGhlIHBsYXRmb3JtIGJ1aWx0IGFuZCBzaWduZWQuICovXG4gIElNQUdFX1ZFUklGSUNBVElPTl9GQUlMRUQgPSAnSU1BR0VfVkVSSUZJQ0FUSU9OX0ZBSUxFRCcsXG4gIC8qKiBUaGUgcGx1Z2luIHZlcnNpb24gaXMgaW1tdXRhYmxlIOKAlCBhIHB1Ymxpc2ggcmVxdWVzdCByZWZlcmVuY2VzIGl0XG4gICAqICAoYGZyb3plbl9hdGAgc2V0KSBvciBpdCBpcyBwdWJsaXNoZWQgdG8gYSBsaXN0aW5nIOKAlCBzbyBpdCBjYW4gYmUgbmVpdGhlclxuICAgKiAgcmUtdXBsb2FkZWQsIGVkaXRlZCBub3IgZGVsZXRlZCAoZG9jcy9wbHVnaW4tcHVibGlzaGluZy5tZCkuICovXG4gIFBMVUdJTl9WRVJTSU9OX0ZST1pFTiA9ICdQTFVHSU5fVkVSU0lPTl9GUk9aRU4nLFxuICAvKiogVGhlIHBsdWdpbiB2ZXJzaW9uIGlzIHJlZmVyZW5jZWQgYnkgb25lIG9mIHRoZSBvcmcncyBwaXBlbGluZXMsIG9yIHB1Ymxpc2hlZFxuICAgKiAgdG8gYW4gZWNvc3lzdGVtIGxpc3Rpbmc7IGRlbGV0aW5nIGl0IG5lZWRzIGA/Zm9yY2U9dHJ1ZWAgcGx1cyBhIHN0ZXAtdXAuICovXG4gIFBMVUdJTl9WRVJTSU9OX0lOX1VTRSA9ICdQTFVHSU5fVkVSU0lPTl9JTl9VU0UnLFxuICAvKiogQSBmcmVlemUgbmFtZWQgYW4gaW1hZ2UgZGlnZXN0IHRoYXQgaXMgbm90IHRoZSB2ZXJzaW9uJ3Mgc3RvcmVkIGRpZ2VzdFxuICAgKiAgKGZhaWwgY2xvc2VkOiB3aGF0IHdhcyByZXF1ZXN0ZWQgaXMgbm90IHdoYXQgd291bGQgYmUgcHVibGlzaGVkKS4gKi9cbiAgUExVR0lOX0RJR0VTVF9NSVNNQVRDSCA9ICdQTFVHSU5fRElHRVNUX01JU01BVENIJyxcbiAgLyoqIEEgcHVibGlzaCByZXF1ZXN0IG5lZWRzIHRoZSBvcmcncyBwdWJsaXNoZXIgcHJvZmlsZSwgd2hpY2ggZG9lc24ndCBleGlzdFxuICAgKiAgeWV0IChkb2NzL3BsdWdpbi1wdWJsaXNoaW5nLm1kKS4gQ2xhaW0gYSBoYW5kbGUgZmlyc3QuICovXG4gIFBVQkxJU0hFUl9SRVFVSVJFRCA9ICdQVUJMSVNIRVJfUkVRVUlSRUQnLFxuICAvKiogVGhlIHJlcXVlc3RlZCBwdWJsaXNoZXIgaGFuZGxlIGlzIHJlc2VydmVkIChPZmZpY2lhbC9WZXJpZmllZFxuICAgKiAgcmVzZXJ2YXRpb25zLCBjb25mdXNhYmxlcykuIFN1Ym1pdCBhIGBjbGFpbWAgcmVxdWVzdCBpbnN0ZWFkLiAqL1xuICBQVUJMSVNIRVJfSEFORExFX1JFU0VSVkVEID0gJ1BVQkxJU0hFUl9IQU5ETEVfUkVTRVJWRUQnLFxuICAvKiogQSBwdWJsaXNoIHJlcXVlc3QgZmFpbGVkIGEgc3VibWl0IGdhdGUgKHB1YmxpYyB2aXNpYmlsaXR5LCBTUERYIGxpY2Vuc2UsXG4gICAqICBSRUFETUUsIHNpZ25hdHVyZSwgc2NhbiwgdnVsbmVyYWJpbGl0eSBnYXRlIOKApik7IGBkZXRhaWxzLmdhdGVzYCBsaXN0cyB0aGVtLiAqL1xuICBQVUJMSVNIX0dBVEVfRkFJTEVEID0gJ1BVQkxJU0hfR0FURV9GQUlMRUQnLFxuICAvKiogQSBWZXJpZmllZC1wdWJsaXNoZXIgYXBwbGljYXRpb24gKG9yIGl0cyBkZWNpc2lvbikgZnJvbSBhbiBvcmcgd2hvc2UgcGxhblxuICAgKiAgbGFja3MgdGhlIGB2ZXJpZmllZF9wdWJsaXNoZXJgIGZlYXR1cmUgKFRlYW0rLCBkb2NzL3BsdWdpbi1wdWJsaXNoaW5nLm1kKS4gKi9cbiAgVkVSSUZJRURfUExBTl9SRVFVSVJFRCA9ICdWRVJJRklFRF9QTEFOX1JFUVVJUkVEJyxcbiAgLyoqIEEgVmVyaWZpZWQtcHVibGlzaGVyIGFwcGxpY2F0aW9uIGZyb20gYW4gb3JnIHdpdGggbm8gRE5TLXZlcmlmaWVkIGRvbWFpbi4gKi9cbiAgVkVSSUZJRURfRE9NQUlOX1JFUVVJUkVEID0gJ1ZFUklGSUVEX0RPTUFJTl9SRVFVSVJFRCcsXG4gIC8qKiBBIFZlcmlmaWVkLXB1Ymxpc2hlciBhcHBsaWNhdGlvbiBmcm9tIGFuIG9yZyB3aG9zZSBvd25lciBoYXMgbm8gc2Vjb25kXG4gICAqICBmYWN0b3IgKHBhc3NrZXkgb3IgYXV0aGVudGljYXRvciBhcHApLiAqL1xuICBWRVJJRklFRF9PV05FUl9NRkFfUkVRVUlSRUQgPSAnVkVSSUZJRURfT1dORVJfTUZBX1JFUVVJUkVEJyxcbiAgLyoqIEEgcGx1Z2luIHJlZmVyZW5jZSBuYW1lcyBhbiBlY29zeXN0ZW0gbGlzdGluZyB0aGUgb3JnIGhhc24ndCBpbnN0YWxsZWQgKG9yXG4gICAqICB3aG9zZSBpbnN0YWxsIGlzIHBlbmRpbmcsIGRlbmllZCwgb3IgZG9lc24ndCBjb3ZlciB0aGUgdmVyc2lvbiBhc2tlZCBmb3I7XG4gICAqICBgZGV0YWlscy5yZWFzb25gKSDigJQgZG9jcy9wbHVnaW4tcHVibGlzaGluZy5tZCAqL1xuICBQTFVHSU5fTk9UX0lOU1RBTExFRCA9ICdQTFVHSU5fTk9UX0lOU1RBTExFRCcsXG4gIC8qKiBUaGUgb3JnJ3MgY29uc3VtcHRpb24gcG9saWN5IHJlZnVzZXMgdGhlIGxpc3Rpbmc6IGl0cyB0aWVyIGlzbid0IGFsbG93ZWQsXG4gICAqICB0aGUgbGlzdGluZyBpcyBibG9ja2VkLCBvciBhbiBhZHZpc29yeSBibG9ja3MgdGhlIHZlcnNpb24gKGBkZXRhaWxzLnJlYXNvbmApLiAqL1xuICBQTFVHSU5fQkxPQ0tFRF9CWV9QT0xJQ1kgPSAnUExVR0lOX0JMT0NLRURfQllfUE9MSUNZJyxcbiAgLyoqIFRoZSBsaXN0aW5nIG9yIHZlcnNpb24gY2FuJ3QgYmUgdXNlZDogeWFua2VkLCBzdXNwZW5kZWQsIG9yIHBhdXNlZCBmb3IgbmV3XG4gICAqICBpbnN0YWxscyAoYGRldGFpbHMucmVhc29uYCkuICovXG4gIFBMVUdJTl9VTkFWQUlMQUJMRSA9ICdQTFVHSU5fVU5BVkFJTEFCTEUnLFxuICAvKiogQW4gYXV0by1jcmVhdGVkIHBsYWNlaG9sZGVyIHBsdWdpbiBjYW4ndCB0YWtlIHRoZSBuYW1lIG9mIGEgbGlzdGVkIHBsdWdpblxuICAgKiDigJQgaW5zdGFsbCB0aGUgbGlzdGluZyBpbnN0ZWFkLiAqL1xuICBQTFVHSU5fTkFNRV9MSVNURUQgPSAnUExVR0lOX05BTUVfTElTVEVEJyxcbiAgLyoqIEFuIGFub255bW91cyBzdWJtaXNzaW9uIG5hbWVzIGEgY29tbXVuaXR5IGxpc3RpbmcgYW5vdGhlciBzdWJtaXR0ZXIgb3ducyxcbiAgICogIGEgcmVzZXJ2ZWQgbmFtZSwgYW4gT2ZmaWNpYWwvVmVyaWZpZWQgbGlzdGluZydzIG5hbWUsIG9yIG9uZSBjb25mdXNhYmxlXG4gICAqICB3aXRoIGEgdG9wIGxpc3Rpbmc7IGBkZXRhaWxzLnJlYXNvbmAgc2F5cyB3aGljaC4gKi9cbiAgTkFNRV9UQUtFTiA9ICdOQU1FX1RBS0VOJyxcbiAgLyoqIEFuIFVOUVVBTElGSUVEIHJlZmVyZW5jZSBuYW1lcyBhIHBsdWdpbiB0aGUgb3JnIERFTEVURUQ6IHJlZnVzZWQgcmF0aGVyXG4gICAqICB0aGFuIHNpbGVudGx5IGZhbGxpbmcgdGhyb3VnaCB0byBhIHNhbWUtbmFtZWQgbGlzdGluZywgd2hpY2ggd291bGQgc3dhcCB0aGVcbiAgICogIGltYWdlIGEgcGlwZWxpbmUgcnVucyB3aXRob3V0IGFueW9uZSBjaG9vc2luZyBpdCAoYGRldGFpbHMuc3RhdGU6ICdkZWxldGVkJ2ApLiAqL1xuICBQTFVHSU5fREVMRVRFRCA9ICdQTFVHSU5fREVMRVRFRCcsXG5cbiAgLy8gUGx1Z2luIGJ1aWxkIG91dGNvbWVzICg0MjIpIOKAlCB0ZXJtaW5hbCBidWlsZCBmYWlsdXJlcywgcmVwb3J0ZWQgb24gdGhlIGJ1aWxkXG4gIC8vIHN0cmVhbSBhbmQgaW4gdGhlIGJ1aWxkJ3MgZmFpbHVyZSByZWNvcmQsIG5ldmVyIGFuc3dlcmVkIG9uIGEgcmVxdWVzdC5cbiAgLyoqIFRoZSBidWlsdCBpbWFnZSBjb3VsZCBub3QgYmUgdnVsbmVyYWJpbGl0eS1zY2FubmVkIGFmdGVyIGV2ZXJ5IHJldHJ5LCBzb1xuICAgKiAgbm90aGluZyB3YXMgcGVyc2lzdGVkIChkb2NzL3BsdWdpbi1wdWJsaXNoaW5nLm1kKS4gKi9cbiAgSU1BR0VfU0NBTl9VTkFWQUlMQUJMRSA9ICdJTUFHRV9TQ0FOX1VOQVZBSUxBQkxFJyxcbiAgLyoqIFRoZSBidWlsdCBpbWFnZSBoYXMgbW9yZSBmaXhhYmxlIENyaXRpY2FsIGZpbmRpbmdzIHRoYW4gdGhlIHBsYXRmb3JtXG4gICAqICBmbG9vciBgUExVR0lOX1ZVTE5fTUFYX0ZJTkRJTkdTYDsgdGhlIG1lc3NhZ2UgbGlzdHMgdGhlbSB3aXRoIHRoZWlyIGZpeGVzLiAqL1xuICBQTFVHSU5fVlVMTl9HQVRFID0gJ1BMVUdJTl9WVUxOX0dBVEUnLFxuICAvKiogQW4gdXBsb2FkIHdob3NlIE5BTUUgd291bGQgb3ZlcnJpZGUgYSBsaXN0aW5nIG9yIHRoZSBwYXJlbnQgb3JnJ3MgcGx1Z2luLFxuICAgKiAgcmVmdXNlZCBiZWNhdXNlIHRoZSBjb25zdW1wdGlvbiBwb2xpY3kgc2F5cyBgc2hhZG93aW5nOiBkZW55YC4gKi9cbiAgUExVR0lOX05BTUVfU0hBRE9XUyA9ICdQTFVHSU5fTkFNRV9TSEFET1dTJyxcblxuICAvLyBCaWxsaW5nIGVycm9yc1xuICBQQVlNRU5UX01FVEhPRF9SRVFVSVJFRCA9ICdQQVlNRU5UX01FVEhPRF9SRVFVSVJFRCcsIC8vIDQwMlxuICBESVNDT1VOVF9DRUlMSU5HX0VYQ0VFREVEID0gJ0RJU0NPVU5UX0NFSUxJTkdfRVhDRUVERUQnLCAvLyA0MDBcbiAgRElTQ09VTlRfTk9UX0ZPVU5EID0gJ0RJU0NPVU5UX05PVF9GT1VORCcsIC8vIDQwNFxuICBESVNDT1VOVF9JTkFDVElWRSA9ICdESVNDT1VOVF9JTkFDVElWRScsIC8vIDQwOVxuICBQTEFOX09WRVJfQ0FQID0gJ1BMQU5fT1ZFUl9DQVAnLCAvLyA0MDlcbiAgQURET05fT1ZFUl9DQVAgPSAnQURET05fT1ZFUl9DQVAnLCAvLyA0MDlcblxuICAvLyBTZXJ2ZXIgZXJyb3JzICg1MDApXG4gIElOVEVSTkFMX0VSUk9SID0gJ0lOVEVSTkFMX0VSUk9SJyxcbiAgREFUQUJBU0VfRVJST1IgPSAnREFUQUJBU0VfRVJST1InLFxuXG4gIC8vIE5vdCBpbXBsZW1lbnRlZCAoNTAxKSDigJQgdGhlIGNvbmZpZ3VyZWQgcHJvdmlkZXIgaGFzIG5vIHN1Y2ggY2FwYWJpbGl0eVxuICBOT1RfSU1QTEVNRU5URUQgPSAnTk9UX0lNUExFTUVOVEVEJyxcblxuICAvLyBTZXJ2aWNlIHVuYXZhaWxhYmxlICg1MDMpXG4gIFNFUlZJQ0VfVU5BVkFJTEFCTEUgPSAnU0VSVklDRV9VTkFWQUlMQUJMRScsXG4gIENPTVBMSUFOQ0VfU0VSVklDRV9VTkFWQUlMQUJMRSA9ICdDT01QTElBTkNFX1NFUlZJQ0VfVU5BVkFJTEFCTEUnLFxufVxuXG4vKipcbiAqIE1hcHMgZXJyb3IgY29kZXMgdG8gdGhlaXIgZGVmYXVsdCBIVFRQIHN0YXR1cyBjb2Rlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IEVycm9yQ29kZVN0YXR1czogUmVjb3JkPEVycm9yQ29kZSwgbnVtYmVyPiA9IHtcbiAgW0Vycm9yQ29kZS5VTkFVVEhPUklaRURdOiA0MDEsXG4gIFtFcnJvckNvZGUuVE9LRU5fRVhQSVJFRF06IDQwMSxcbiAgW0Vycm9yQ29kZS5UT0tFTl9JTlZBTElEXTogNDAxLFxuICBbRXJyb3JDb2RlLlRPS0VOX01JU1NJTkddOiA0MDEsXG4gIFtFcnJvckNvZGUuVE9LRU5fUkVWT0tFRF06IDQwMSxcbiAgW0Vycm9yQ29kZS5NRkFfUkVRVUlSRURdOiA0MDEsXG4gIFtFcnJvckNvZGUuUkVBVVRIX1JFUVVJUkVEXTogNDAxLFxuICBbRXJyb3JDb2RlLklOU1VGRklDSUVOVF9QRVJNSVNTSU9OU106IDQwMyxcbiAgW0Vycm9yQ29kZS5TWVNURU1fT1JHX1JFUVVJUkVEXTogNDAzLFxuICBbRXJyb3JDb2RlLlBVQkxJU0hFUl9URVJNU19SRVFVSVJFRF06IDQwMyxcbiAgW0Vycm9yQ29kZS5QVUJMSVNIRVJfUk9PVF9PUkdfUkVRVUlSRURdOiA0MDMsXG4gIFtFcnJvckNvZGUuUFVCTElTSEVSX1NVU1BFTkRFRF06IDQwMyxcbiAgW0Vycm9yQ29kZS5QTFVHSU5fUFVCTElTSElOR19ESVNBQkxFRF06IDQwMyxcbiAgW0Vycm9yQ29kZS5BSV9ESVNBQkxFRF06IDQwMyxcbiAgW0Vycm9yQ29kZS5QTFVHSU5fUkVWSUVXU19ESVNBQkxFRF06IDQwMyxcbiAgW0Vycm9yQ29kZS5SRVZJRVdfU0VMRl9QUk9NT1RJT05dOiA0MDMsXG4gIFtFcnJvckNvZGUuU0VQQVJBVElPTl9PRl9EVVRJRVNdOiA0MDMsXG4gIFtFcnJvckNvZGUuSFVNQU5fU0VTU0lPTl9SRVFVSVJFRF06IDQwMyxcbiAgW0Vycm9yQ29kZS5NRkFfRU5ST0xMTUVOVF9SRVFVSVJFRF06IDQwMyxcbiAgW0Vycm9yQ29kZS5JTVBFUlNPTkFUSU9OX1JFQURfT05MWV06IDQwMyxcbiAgW0Vycm9yQ29kZS5PUkdfTUlTTUFUQ0hdOiA0MDMsXG4gIFtFcnJvckNvZGUuQ09NUExJQU5DRV9WSU9MQVRJT05dOiA0MDMsXG4gIFtFcnJvckNvZGUuTk9UX0ZPVU5EXTogNDA0LFxuICBbRXJyb3JDb2RlLk9SR19OT1RfRk9VTkRdOiA0MDQsXG4gIFtFcnJvckNvZGUuVVNFUl9OT1RfUkVHSVNURVJFRF06IDQwNCxcbiAgW0Vycm9yQ29kZS5TVUJNSVNTSU9OU19ESVNBQkxFRF06IDQwNCxcbiAgW0Vycm9yQ29kZS5WQUxJREFUSU9OX0VSUk9SXTogNDAwLFxuICBbRXJyb3JDb2RlLk1JU1NJTkdfUkVRVUlSRURfRklFTERdOiA0MDAsXG4gIFtFcnJvckNvZGUuUFJPT0ZfT0ZfV09SS19JTlZBTElEXTogNDAwLFxuICBbRXJyb3JDb2RlLlRFTVBMQVRFX1VOS05PV05fUEFUSF06IDQwMCxcbiAgW0Vycm9yQ29kZS5URU1QTEFURV9DWUNMRV06IDQwMCxcbiAgW0Vycm9yQ29kZS5URU1QTEFURV9QQVJTRV9FUlJPUl06IDQwMCxcbiAgW0Vycm9yQ29kZS5URU1QTEFURV9UWVBFX01JU01BVENIXTogNDAwLFxuICBbRXJyb3JDb2RlLlRFTVBMQVRFX1NFQ1JFVFNfUkVTRVJWRURdOiA0MDAsXG4gIFtFcnJvckNvZGUuVEVNUExBVEVfQ09OVFJBQ1RfVklPTEFUSU9OXTogNDAwLFxuICBbRXJyb3JDb2RlLlRFTVBMQVRFX1NJWkVfRVhDRUVERURdOiA0MDAsXG4gIFtFcnJvckNvZGUuVEVNUExBVEVfVkFMSURBVElPTl9GQUlMRURdOiA0MDAsXG4gIFtFcnJvckNvZGUuUVVPVEFfRVhDRUVERURdOiA0MjksXG4gIFtFcnJvckNvZGUuQUlfTUVNQkVSX1NIQVJFX0VYQ0VFREVEXTogNDI5LFxuICBbRXJyb3JDb2RlLkFJX1RPS0VOX0JVREdFVF9FWENFRURFRF06IDQyOSxcbiAgW0Vycm9yQ29kZS5SQVRFX0xJTUlUX0VYQ0VFREVEXTogNDI5LFxuICBbRXJyb3JDb2RlLlNVQk1JU1NJT05fTElNSVRdOiA0MjksXG4gIFtFcnJvckNvZGUuUEFZTE9BRF9UT09fTEFSR0VdOiA0MTMsXG4gIFtFcnJvckNvZGUuQ09ORkxJQ1RdOiA0MDksXG4gIFtFcnJvckNvZGUuRFVQTElDQVRFX0VOVFJZXTogNDA5LFxuICBbRXJyb3JDb2RlLlNDQU5fQ09ORkxJQ1RdOiA0MDksXG4gIFtFcnJvckNvZGUuSU1BR0VfVkVSSUZJQ0FUSU9OX0ZBSUxFRF06IDQwOSxcbiAgW0Vycm9yQ29kZS5QTFVHSU5fVkVSU0lPTl9GUk9aRU5dOiA0MDksXG4gIFtFcnJvckNvZGUuUExVR0lOX1ZFUlNJT05fSU5fVVNFXTogNDA5LFxuICBbRXJyb3JDb2RlLlBMVUdJTl9ESUdFU1RfTUlTTUFUQ0hdOiA0MDksXG4gIFtFcnJvckNvZGUuUFVCTElTSEVSX1JFUVVJUkVEXTogNDA5LFxuICBbRXJyb3JDb2RlLlBVQkxJU0hFUl9IQU5ETEVfUkVTRVJWRURdOiA0MDksXG4gIFtFcnJvckNvZGUuUFVCTElTSF9HQVRFX0ZBSUxFRF06IDQwOSxcbiAgW0Vycm9yQ29kZS5WRVJJRklFRF9QTEFOX1JFUVVJUkVEXTogNDAzLFxuICBbRXJyb3JDb2RlLlZFUklGSUVEX0RPTUFJTl9SRVFVSVJFRF06IDQwOSxcbiAgW0Vycm9yQ29kZS5WRVJJRklFRF9PV05FUl9NRkFfUkVRVUlSRURdOiA0MDksXG4gIFtFcnJvckNvZGUuUExVR0lOX05PVF9JTlNUQUxMRURdOiA0MDMsXG4gIFtFcnJvckNvZGUuUExVR0lOX0JMT0NLRURfQllfUE9MSUNZXTogNDAzLFxuICBbRXJyb3JDb2RlLlBMVUdJTl9VTkFWQUlMQUJMRV06IDQwOSxcbiAgW0Vycm9yQ29kZS5QTFVHSU5fTkFNRV9MSVNURURdOiA0MDksXG4gIFtFcnJvckNvZGUuTkFNRV9UQUtFTl06IDQwOSxcbiAgW0Vycm9yQ29kZS5QTFVHSU5fREVMRVRFRF06IDQxMCxcbiAgW0Vycm9yQ29kZS5JTUFHRV9TQ0FOX1VOQVZBSUxBQkxFXTogNDIyLFxuICBbRXJyb3JDb2RlLlBMVUdJTl9WVUxOX0dBVEVdOiA0MjIsXG4gIFtFcnJvckNvZGUuUExVR0lOX05BTUVfU0hBRE9XU106IDQwOSxcbiAgW0Vycm9yQ29kZS5QQVlNRU5UX01FVEhPRF9SRVFVSVJFRF06IDQwMixcbiAgW0Vycm9yQ29kZS5ESVNDT1VOVF9DRUlMSU5HX0VYQ0VFREVEXTogNDAwLFxuICBbRXJyb3JDb2RlLkRJU0NPVU5UX05PVF9GT1VORF06IDQwNCxcbiAgW0Vycm9yQ29kZS5ESVNDT1VOVF9JTkFDVElWRV06IDQwOSxcbiAgW0Vycm9yQ29kZS5QTEFOX09WRVJfQ0FQXTogNDA5LFxuICBbRXJyb3JDb2RlLkFERE9OX09WRVJfQ0FQXTogNDA5LFxuICBbRXJyb3JDb2RlLklOVEVSTkFMX0VSUk9SXTogNTAwLFxuICBbRXJyb3JDb2RlLkRBVEFCQVNFX0VSUk9SXTogNTAwLFxuICBbRXJyb3JDb2RlLk5PVF9JTVBMRU1FTlRFRF06IDUwMSxcbiAgW0Vycm9yQ29kZS5TRVJWSUNFX1VOQVZBSUxBQkxFXTogNTAzLFxuICBbRXJyb3JDb2RlLkNPTVBMSUFOQ0VfU0VSVklDRV9VTkFWQUlMQUJMRV06IDUwMyxcbn07XG5cbi8qKlxuICogR2V0IHRoZSBIVFRQIHN0YXR1cyBjb2RlIGZvciBhbiBlcnJvciBjb2RlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdHVzRm9yRXJyb3JDb2RlKGNvZGU6IEVycm9yQ29kZSk6IG51bWJlciB7XG4gIHJldHVybiBFcnJvckNvZGVTdGF0dXNbY29kZV0gPz8gNTAwO1xufVxuIl19
|
|
275
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItY29kZXMuanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9lcnJvci1jb2Rlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLENBQU4sSUFBWSxTQTBMWDtBQTFMRCxXQUFZLFNBQVM7SUFDbkIsOEJBQThCO0lBQzlCLDBDQUE2QixDQUFBO0lBQzdCLDRDQUErQixDQUFBO0lBQy9CLDRDQUErQixDQUFBO0lBQy9CLDRDQUErQixDQUFBO0lBQy9CLDRDQUErQixDQUFBO0lBQy9COzs7dURBR21EO0lBQ25ELDBDQUE2QixDQUFBO0lBQzdCOzhFQUMwRTtJQUMxRSxnREFBbUMsQ0FBQTtJQUVuQyw2QkFBNkI7SUFDN0Isa0VBQXFELENBQUE7SUFDckQ7d0VBQ29FO0lBQ3BFLDhEQUFpRCxDQUFBO0lBQ2pEO29FQUNnRTtJQUNoRSxnRUFBbUQsQ0FBQTtJQUNuRDtrRUFDOEQ7SUFDOUQsZ0VBQW1ELENBQUE7SUFDbkQ7O29GQUVnRjtJQUNoRix3REFBMkMsQ0FBQTtJQUMzQzt3RUFDb0U7SUFDcEUsa0VBQXFELENBQUE7SUFDckQ7MkJBQ3VCO0lBQ3ZCLHdFQUEyRCxDQUFBO0lBQzNELG9EQUFvRDtJQUNwRCx3REFBMkMsQ0FBQTtJQUMzQztnRkFDNEU7SUFDNUUsd0NBQTJCLENBQUE7SUFDM0Isd0ZBQXdGO0lBQ3hGLHNFQUF5RCxDQUFBO0lBQ3pEO3lEQUNxRDtJQUNyRCxnRUFBbUQsQ0FBQTtJQUNuRDsyREFDdUQ7SUFDdkQsNERBQStDLENBQUE7SUFDL0M7OzJDQUV1QztJQUN2QywwREFBNkMsQ0FBQTtJQUM3QywwQ0FBNkIsQ0FBQTtJQUM3QiwwREFBNkMsQ0FBQTtJQUU3Qyx5QkFBeUI7SUFDekIsb0NBQXVCLENBQUE7SUFDdkIsNENBQStCLENBQUE7SUFDL0I7OzJEQUV1RDtJQUN2RCx3REFBMkMsQ0FBQTtJQUMzQzs7K0RBRTJEO0lBQzNELDBE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Y0FBYyxDQUFDLEVBQUUsR0FBRztJQUMvQixDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsRUFBRSxHQUFHO0lBQ2hDLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsR0FBRztJQUNwQyxDQUFDLFNBQVMsQ0FBQyw4QkFBOEIsQ0FBQyxFQUFFLEdBQUc7Q0FDaEQsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUFDLElBQWU7SUFDbkQsT0FBTyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDO0FBQ3RDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBTdGFuZGFyZGl6ZWQgZXJyb3IgY29kZXMgdXNlZCBhY3Jvc3MgYWxsIEFQSSBtaWNyb3NlcnZpY2VzLlxuICogVXNlIHRoZXNlIGNvZGVzIGluIGVycm9yIHJlc3BvbnNlcyBmb3IgY29uc2lzdGVudCBjbGllbnQgaGFuZGxpbmcuXG4gKlxuICogRWFjaCBIVFRQIHN0YXR1cyBjYXRlZ29yeSBoYXMgb25lIHByaW1hcnkgY29kZS4gVXNlIHRoZSBgZGV0YWlsc2BcbiAqIGZpZWxkIGluIGVycm9yIHJlc3BvbnNlcyBmb3Igc3ViLXR5cGUgaW5mb3JtYXRpb24gKGUuZy4gd2hpY2ggcXVvdGFcbiAqIHdhcyBleGNlZWRlZCwgd2hpY2ggZmllbGQgZmFpbGVkIHZhbGlkYXRpb24pLlxuICovXG5leHBvcnQgZW51bSBFcnJvckNvZGUge1xuICAvLyBBdXRoZW50aWNhdGlvbiBlcnJvcnMgKDQwMSlcbiAgVU5BVVRIT1JJWkVEID0gJ1VOQVVUSE9SSVpFRCcsXG4gIFRPS0VOX0VYUElSRUQgPSAnVE9LRU5fRVhQSVJFRCcsXG4gIFRPS0VOX0lOVkFMSUQgPSAnVE9LRU5fSU5WQUxJRCcsXG4gIFRPS0VOX01JU1NJTkcgPSAnVE9LRU5fTUlTU0lORycsXG4gIFRPS0VOX1JFVk9LRUQgPSAnVE9LRU5fUkVWT0tFRCcsXG4gIC8qKiBUaGUgc2Vzc2lvbiBpcyBub3QgTUZBLWdyYWRlIChgYWFsYCBiZWxvdyB0aGUgcm91dGUncyBgbWluQXNzdXJhbmNlYCkuXG4gICAqICBUaGUgY2xpZW50IHNlbmRzIHRoZSBwZXJzb24gdG8gZW5yb2wgLyBzaWduIGluIGFnYWluIHdpdGggYSBzZWNvbmRcbiAgICogIGZhY3RvciDigJQgaXQgbXVzdCBOT1Qgc2lnbiB0aGVtIG91dCBvciByZXRyeSBhIHRva2VuIHJlZnJlc2gsIHNpbmNlIGFcbiAgICogIHJlZnJlc2ggY2FuIG5ldmVyIHJhaXNlIHRoZSBhc3N1cmFuY2UgbGV2ZWwuICovXG4gIE1GQV9SRVFVSVJFRCA9ICdNRkFfUkVRVUlSRUQnLFxuICAvKiogVGhlIHNlc3Npb24gaXMgTUZBLWdyYWRlIGJ1dCBpdHMgYGF1dGhfdGltZWAgaXMgb2xkZXIgdGhhbiB0aGUgcm91dGUnc1xuICAgKiAgYG1heEFnZWAg4oCUIHRoZSBwZXJzb24gbXVzdCBhdXRoZW50aWNhdGUgYWdhaW4gKG5vdCBtZXJlbHkgcmVmcmVzaCkuICovXG4gIFJFQVVUSF9SRVFVSVJFRCA9ICdSRUFVVEhfUkVRVUlSRUQnLFxuXG4gIC8vIEF1dGhvcml6YXRpb24gZXJyb3JzICg0MDMpXG4gIElOU1VGRklDSUVOVF9QRVJNSVNTSU9OUyA9ICdJTlNVRkZJQ0lFTlRfUEVSTUlTU0lPTlMnLFxuICAvKiogQSBtYWNoaW5lIGNyZWRlbnRpYWwgKHNlcnZpY2UgcHJpbmNpcGFsLCBvcmcgc2VydmljZSBhY2NvdW50LCBvciBhblxuICAgKiAgZXhjaGFuZ2VkIGFjY2VzcyBrZXkpIHJlYWNoZWQgYSByb3V0ZSB0aGF0IHJlcXVpcmVzIGEgcGVyc29uLiAqL1xuICBIVU1BTl9TRVNTSU9OX1JFUVVJUkVEID0gJ0hVTUFOX1NFU1NJT05fUkVRVUlSRUQnLFxuICAvKiogQSBib290c3RyYXAtYWRtaW4gZW5yb2xtZW50IHNlc3Npb24gKGBtZmFFbnJvbGxtZW50UGVuZGluZ2ApIHJlYWNoZWQgYVxuICAgKiAgcm91dGUgb3V0c2lkZSB0aGUgZW5yb2xtZW50IC8gc2lnbi1vdXQgLyBzZXR1cCBhbGxvd2xpc3QuICovXG4gIE1GQV9FTlJPTExNRU5UX1JFUVVJUkVEID0gJ01GQV9FTlJPTExNRU5UX1JFUVVJUkVEJyxcbiAgLyoqIEEgcmVhZC1vbmx5IGltcGVyc29uYXRpb24gdG9rZW4gKGBpbXBlcnNvbmF0aW9uUmVhZE9ubHlgKSBhdHRlbXB0ZWQgYVxuICAgKiAgc3RhdGUtY2hhbmdpbmcgcmVxdWVzdCAoYW55dGhpbmcgYnV0IEdFVC9IRUFEL09QVElPTlMpLiAqL1xuICBJTVBFUlNPTkFUSU9OX1JFQURfT05MWSA9ICdJTVBFUlNPTkFUSU9OX1JFQURfT05MWScsXG4gIC8qKiBBIHBsdWdpbi1lY29zeXN0ZW0gZ292ZXJuYW5jZSByb3V0ZSAoZG9jcy9ydW5ib29rcy9lY29zeXN0ZW0tbW9kZXJhdGlvbi5tZClcbiAgICogIHdhcyBjYWxsZWQgZnJvbSBhbiBhY3RpdmUgb3JnIG90aGVyIHRoYW4gdGhlIHN5c3RlbSBvcmcg4oCUIGEgdG9rZW4gbWludGVkIGluXG4gICAqICBhIHRlbmFudCBvcmcgaXMgcmVmdXNlZCBldmVuIGZvciB0aGUgc2FtZSB1c2VyLiBTd2l0Y2ggdG8gdGhlIHN5c3RlbSBvcmcuICovXG4gIFNZU1RFTV9PUkdfUkVRVUlSRUQgPSAnU1lTVEVNX09SR19SRVFVSVJFRCcsXG4gIC8qKiBUaGUgcHVibGlzaGVyIGhhc24ndCBhY2NlcHRlZCB0aGUgQ1VSUkVOVCBwdWJsaXNoZXIgdGVybXMgdmVyc2lvbiwgc28gaXRcbiAgICogIGNhbid0IHN1Ym1pdCBuZXcgcmVxdWVzdHMgKGV4aXN0aW5nIGxpc3RpbmdzIGFyZSB1bmFmZmVjdGVkKS4gKi9cbiAgUFVCTElTSEVSX1RFUk1TX1JFUVVJUkVEID0gJ1BVQkxJU0hFUl9URVJNU19SRVFVSVJFRCcsXG4gIC8qKiBQdWJsaXNoaW5nIGlzIGRvbmUgZnJvbSB0aGUgUk9PVCBvcmc7IGEgdGVhbSBvcmcgY2FuJ3Qgb3duIGEgcHVibGlzaGVyIG9yXG4gICAqICBzdWJtaXQgcmVxdWVzdHMuICovXG4gIFBVQkxJU0hFUl9ST09UX09SR19SRVFVSVJFRCA9ICdQVUJMSVNIRVJfUk9PVF9PUkdfUkVRVUlSRUQnLFxuICAvKiogVGhlIHB1Ymxpc2hlciBpcyBzdXNwZW5kZWQgYnkgdGhlIHN5c3RlbSBvcmcuICovXG4gIFBVQkxJU0hFUl9TVVNQRU5ERUQgPSAnUFVCTElTSEVSX1NVU1BFTkRFRCcsXG4gIC8qKiBUaGUgb3JnYW5pemF0aW9uJ3MgYWRtaW5pc3RyYXRvcnMgc3dpdGNoZWQgQUkgZmVhdHVyZXMgb2ZmIChgYWlFbmFibGVkOiBmYWxzZWBcbiAgICogIG9uIHRoZSBvcmcncyBBSSBjb25maWd1cmF0aW9uKS4gRXZlcnkgQUkgZW50cnkgcG9pbnQgcmVmdXNlcyB3aXRoIGl0LiAqL1xuICBBSV9ESVNBQkxFRCA9ICdBSV9ESVNBQkxFRCcsXG4gIC8qKiBUZW5hbnQgcHVibGlzaGluZyBpcyBzd2l0Y2hlZCBvZmYgb24gdGhpcyBpbnN0YW5jZSAoYFBMVUdJTl9QVUJMSVNISU5HX0VOQUJMRURgKS4gKi9cbiAgUExVR0lOX1BVQkxJU0hJTkdfRElTQUJMRUQgPSAnUExVR0lOX1BVQkxJU0hJTkdfRElTQUJMRUQnLFxuICAvKiogUmV2aWV3IHdyaXRlcyBhcmUgc3dpdGNoZWQgb2ZmIG9uIHRoaXMgaW5zdGFuY2UgKGBQTFVHSU5fUkVWSUVXU19FTkFCTEVEYCk6XG4gICAqICByZXZpZXdzIHN0YXkgcmVhZGFibGUsIG5vdGhpbmcgbmV3IGlzIHdyaXR0ZW4uICovXG4gIFBMVUdJTl9SRVZJRVdTX0RJU0FCTEVEID0gJ1BMVUdJTl9SRVZJRVdTX0RJU0FCTEVEJyxcbiAgLyoqIEEgbWVtYmVyIG9mIHRoZSBwdWJsaXNoZXIncyBvd24gb3JnYW5pemF0aW9uIHRyaWVkIHRvIHJldmlldyAob3Igdm90ZSBvbiBhXG4gICAqICByZXZpZXcgb2YpIG9uZSBvZiBpdHMgbGlzdGluZ3MgKHNlbGYtcHJvbW90aW9uKS4gKi9cbiAgUkVWSUVXX1NFTEZfUFJPTU9USU9OID0gJ1JFVklFV19TRUxGX1BST01PVElPTicsXG4gIC8qKiBTZXBhcmF0aW9uIG9mIGR1dGllczogdGhlIGNhbGxlciBtYXkgbm90IGRlY2lkZSB0aGlzIHJlcXVlc3Qg4oCUXG4gICAqICBpdCBjYW1lIGZyb20gYW4gb3JnIHRoZXkgYmVsb25nIHRvLCB0aGV5IHVwbG9hZGVkIHRoZSB2ZXJzaW9uLCBvciB0aGV5XG4gICAqICBnYXZlIHRoZSBmaXJzdCBvZiB0d28gYXBwcm92YWxzLiAqL1xuICBTRVBBUkFUSU9OX09GX0RVVElFUyA9ICdTRVBBUkFUSU9OX09GX0RVVElFUycsXG4gIE9SR19NSVNNQVRDSCA9ICdPUkdfTUlTTUFUQ0gnLFxuICBDT01QTElBTkNFX1ZJT0xBVElPTiA9ICdDT01QTElBTkNFX1ZJT0xBVElPTicsXG5cbiAgLy8gTm90IGZvdW5kIGVycm9ycyAoNDA0KVxuICBOT1RfRk9VTkQgPSAnTk9UX0ZPVU5EJyxcbiAgT1JHX05PVF9GT1VORCA9ICdPUkdfTk9UX0ZPVU5EJyxcbiAgLyoqIFRoZSBlbWFpbCBnaXZlbiB0byBcImFkZCBtZW1iZXJcIiBoYXMgbm8gYWNjb3VudC4gRGlzdGluY3QgZnJvbSBOT1RfRk9VTkRcbiAgICogIGJlY2F1c2UgaXQgaXMgQUNUSU9OQUJMRTogdGhlIGNhbGxlcidzIGludGVudCBpcyBzYXRpc2ZpYWJsZSBieSBzZW5kaW5nIGFuXG4gICAqICBpbnZpdGF0aW9uLCBhbmQgYSBiYXJlIDQwNCBuYW1lZCBubyB3YXkgZm9yd2FyZC4gKi9cbiAgVVNFUl9OT1RfUkVHSVNURVJFRCA9ICdVU0VSX05PVF9SRUdJU1RFUkVEJyxcbiAgLyoqIFRoZSBhbm9ueW1vdXMgcGx1Z2luIHN1Ym1pc3Npb24gQVBJIGlzIG9mZiBvbiB0aGlzIGluc3RhbmNlXG4gICAqICAoYEFOT05ZTU9VU19TVUJNSVNTSU9OU19FTkFCTEVEYCwgb3Igb3V0Ym91bmQgZW1haWwgaXNuJ3QgY29uZmlndXJlZCkg4oCUXG4gICAqICBhbnN3ZXJlZCBhcyBhIHBsYWluIDQwNCAoZG9jcy9wbHVnaW4tcHVibGlzaGluZy5tZCkuICovXG4gIFNVQk1JU1NJT05TX0RJU0FCTEVEID0gJ1NVQk1JU1NJT05TX0RJU0FCTEVEJyxcblxuICAvLyBWYWxpZGF0aW9uIGVycm9ycyAoNDAwKVxuICBWQUxJREFUSU9OX0VSUk9SID0gJ1ZBTElEQVRJT05fRVJST1InLFxuICBNSVNTSU5HX1JFUVVJUkVEX0ZJRUxEID0gJ01JU1NJTkdfUkVRVUlSRURfRklFTEQnLFxuICAvKiogQSBwcm9vZi1vZi13b3JrIGFuc3dlciBpcyBtaXNzaW5nLCBtYWxmb3JtZWQsIGV4cGlyZWQsIHRvbyBlYXN5LCB3cm9uZyxcbiAgICogIG9yIHdhcyBhbHJlYWR5IHVzZWQgKGFub255bW91cyBzdWJtaXNzaW9ucykuICovXG4gIFBST09GX09GX1dPUktfSU5WQUxJRCA9ICdQUk9PRl9PRl9XT1JLX0lOVkFMSUQnLFxuICBURU1QTEFURV9VTktOT1dOX1BBVEggPSAnVEVNUExBVEVfVU5LTk9XTl9QQVRIJyxcbiAgVEVNUExBVEVfQ1lDTEUgPSAnVEVNUExBVEVfQ1lDTEUnLFxuICBURU1QTEFURV9QQVJTRV9FUlJPUiA9ICdURU1QTEFURV9QQVJTRV9FUlJPUicsXG4gIFRFTVBMQVRFX1RZUEVfTUlTTUFUQ0ggPSAnVEVNUExBVEVfVFlQRV9NSVNNQVRDSCcsXG4gIFRFTVBMQVRFX1NFQ1JFVFNfUkVTRVJWRUQgPSAnVEVNUExBVEVfU0VDUkVUU19SRVNFUlZFRCcsXG4gIFRFTVBMQVRFX0NPTlRSQUNUX1ZJT0xBVElPTiA9ICdURU1QTEFURV9DT05UUkFDVF9WSU9MQVRJT04nLFxuICBURU1QTEFURV9TSVpFX0VYQ0VFREVEID0gJ1RFTVBMQVRFX1NJWkVfRVhDRUVERUQnLFxuICBURU1QTEFURV9WQUxJREFUSU9OX0ZBSUxFRCA9ICdURU1QTEFURV9WQUxJREFUSU9OX0ZBSUxFRCcsXG5cbiAgLy8gUXVvdGEvUmF0ZSBsaW1pdCBlcnJvcnMgKDQyOSlcbiAgUVVPVEFfRVhDRUVERUQgPSAnUVVPVEFfRVhDRUVERUQnLFxuICAvKiogVGhlIGNhbGxlcidzIHBlci1tZW1iZXIgc2hhcmUgb2YgdGhlIG9yZydzIGBhaUNhbGxzYCAob3JnIHNldHRpbmdcbiAgICogIGBhaUNhbGxzUGVyTWVtYmVyUGN0YCkgaXMgc3BlbnQgZm9yIHRoaXMgcGVyaW9kIOKAlCB0aGUgb3JnIGl0c2VsZiBtYXkgaGF2ZSBoZWFkcm9vbS4gKi9cbiAgQUlfTUVNQkVSX1NIQVJFX0VYQ0VFREVEID0gJ0FJX01FTUJFUl9TSEFSRV9FWENFRURFRCcsXG4gIC8qKiBUaGUgb3JnJ3MgcGVyLXBlcmlvZCBBSSB0b2tlbiBidWRnZXQgKG9yZyBzZXR0aW5nIGBhaVRva2VuQnVkZ2V0YCkgaXMgc3BlbnQuICovXG4gIEFJX1RPS0VOX0JVREdFVF9FWENFRURFRCA9ICdBSV9UT0tFTl9CVURHRVRfRVhDRUVERUQnLFxuICBSQVRFX0xJTUlUX0VYQ0VFREVEID0gJ1JBVEVfTElNSVRfRVhDRUVERUQnLFxuICAvKiogQW4gYW5vbnltb3VzIHN1Ym1pdHRlciAocGVyIHZlcmlmaWVkIGVtYWlsLCBvciBwZXIgY2xpZW50IElQKSBpcyBhdCB0aGVcbiAgICogIHJvbGxpbmcgMjQtaG91ciBzdWJtaXNzaW9uIGNhcC4gKi9cbiAgU1VCTUlTU0lPTl9MSU1JVCA9ICdTVUJNSVNTSU9OX0xJTUlUJyxcblxuICAvLyBQYXlsb2FkIGVycm9ycyAoNDEzKVxuICBQQVlMT0FEX1RPT19MQVJHRSA9ICdQQVlMT0FEX1RPT19MQVJHRScsXG5cbiAgLy8gQ29uZmxpY3QgZXJyb3JzICg0MDkpXG4gIENPTkZMSUNUID0gJ0NPTkZMSUNUJyxcbiAgRFVQTElDQVRFX0VOVFJZID0gJ0RVUExJQ0FURV9FTlRSWScsXG4gIFNDQU5fQ09ORkxJQ1QgPSAnU0NBTl9DT05GTElDVCcsXG4gIC8qKiBBIHBsdWdpbiBpbWFnZSdzIGNvc2lnbiBzaWduYXR1cmUgKG9yIGl0cyBzaWduZWQgU0JPTSBhdHRlc3RhdGlvbikgZGlkXG4gICAqICBub3QgdmVyaWZ5IGFnYWluc3QgdGhlIHBsYXRmb3JtJ3MgcGx1Z2luLXNpZ25pbmcga2V5IOKAlCB0aGUgcmVnaXN0cnlcbiAgICogIGNvbnRlbnQgbm8gbG9uZ2VyIG1hdGNoZXMgd2hhdCB0aGUgcGxhdGZvcm0gYnVpbHQgYW5kIHNpZ25lZC4gKi9cbiAgSU1BR0VfVkVSSUZJQ0FUSU9OX0ZBSUxFRCA9ICdJTUFHRV9WRVJJRklDQVRJT05fRkFJTEVEJyxcbiAgLyoqIFRoZSBwbHVnaW4gdmVyc2lvbiBpcyBpbW11dGFibGUg4oCUIGEgcHVibGlzaCByZXF1ZXN0IHJlZmVyZW5jZXMgaXRcbiAgICogIChgZnJvemVuX2F0YCBzZXQpIG9yIGl0IGlzIHB1Ymxpc2hlZCB0byBhIGxpc3Rpbmcg4oCUIHNvIGl0IGNhbiBiZSBuZWl0aGVyXG4gICAqICByZS11cGxvYWRlZCwgZWRpdGVkIG5vciBkZWxldGVkIChkb2NzL3BsdWdpbi1wdWJsaXNoaW5nLm1kKS4gKi9cbiAgUExVR0lOX1ZFUlNJT05fRlJPWkVOID0gJ1BMVUdJTl9WRVJTSU9OX0ZST1pFTicsXG4gIC8qKiBUaGUgcGx1Z2luIHZlcnNpb24gaXMgcmVmZXJlbmNlZCBieSBvbmUgb2YgdGhlIG9yZydzIHBpcGVsaW5lcywgb3IgcHVibGlzaGVkXG4gICAqICB0byBhbiBlY29zeXN0ZW0gbGlzdGluZzsgZGVsZXRpbmcgaXQgbmVlZHMgYD9mb3JjZT10cnVlYCBwbHVzIGEgc3RlcC11cC4gKi9cbiAgUExVR0lOX1ZFUlNJT05fSU5fVVNFID0gJ1BMVUdJTl9WRVJTSU9OX0lOX1VTRScsXG4gIC8qKiBBIGZyZWV6ZSBuYW1lZCBhbiBpbWFnZSBkaWdlc3QgdGhhdCBpcyBub3QgdGhlIHZlcnNpb24ncyBzdG9yZWQgZGlnZXN0XG4gICAqICAoZmFpbCBjbG9zZWQ6IHdoYXQgd2FzIHJlcXVlc3RlZCBpcyBub3Qgd2hhdCB3b3VsZCBiZSBwdWJsaXNoZWQpLiAqL1xuICBQTFVHSU5fRElHRVNUX01JU01BVENIID0gJ1BMVUdJTl9ESUdFU1RfTUlTTUFUQ0gnLFxuICAvKiogQSBwdWJsaXNoIHJlcXVlc3QgbmVlZHMgdGhlIG9yZydzIHB1Ymxpc2hlciBwcm9maWxlLCB3aGljaCBkb2Vzbid0IGV4aXN0XG4gICAqICB5ZXQgKGRvY3MvcGx1Z2luLXB1Ymxpc2hpbmcubWQpLiBDbGFpbSBhIGhhbmRsZSBmaXJzdC4gKi9cbiAgUFVCTElTSEVSX1JFUVVJUkVEID0gJ1BVQkxJU0hFUl9SRVFVSVJFRCcsXG4gIC8qKiBUaGUgcmVxdWVzdGVkIHB1Ymxpc2hlciBoYW5kbGUgaXMgcmVzZXJ2ZWQgKE9mZmljaWFsL1ZlcmlmaWVkXG4gICAqICByZXNlcnZhdGlvbnMsIGNvbmZ1c2FibGVzKS4gU3VibWl0IGEgYGNsYWltYCByZXF1ZXN0IGluc3RlYWQuICovXG4gIFBVQkxJU0hFUl9IQU5ETEVfUkVTRVJWRUQgPSAnUFVCTElTSEVSX0hBTkRMRV9SRVNFUlZFRCcsXG4gIC8qKiBBIHB1Ymxpc2ggcmVxdWVzdCBmYWlsZWQgYSBzdWJtaXQgZ2F0ZSAocHVibGljIHZpc2liaWxpdHksIFNQRFggbGljZW5zZSxcbiAgICogIFJFQURNRSwgc2lnbmF0dXJlLCBzY2FuLCB2dWxuZXJhYmlsaXR5IGdhdGUg4oCmKTsgYGRldGFpbHMuZ2F0ZXNgIGxpc3RzIHRoZW0uICovXG4gIFBVQkxJU0hfR0FURV9GQUlMRUQgPSAnUFVCTElTSF9HQVRFX0ZBSUxFRCcsXG4gIC8qKiBBIFZlcmlmaWVkLXB1Ymxpc2hlciBhcHBsaWNhdGlvbiAob3IgaXRzIGRlY2lzaW9uKSBmcm9tIGFuIG9yZyB3aG9zZSBwbGFuXG4gICAqICBsYWNrcyB0aGUgYHZlcmlmaWVkX3B1Ymxpc2hlcmAgZmVhdHVyZSAoVGVhbSssIGRvY3MvcGx1Z2luLXB1Ymxpc2hpbmcubWQpLiAqL1xuICBWRVJJRklFRF9QTEFOX1JFUVVJUkVEID0gJ1ZFUklGSUVEX1BMQU5fUkVRVUlSRUQnLFxuICAvKiogQSBWZXJpZmllZC1wdWJsaXNoZXIgYXBwbGljYXRpb24gZnJvbSBhbiBvcmcgd2l0aCBubyBETlMtdmVyaWZpZWQgZG9tYWluLiAqL1xuICBWRVJJRklFRF9ET01BSU5fUkVRVUlSRUQgPSAnVkVSSUZJRURfRE9NQUlOX1JFUVVJUkVEJyxcbiAgLyoqIEEgVmVyaWZpZWQtcHVibGlzaGVyIGFwcGxpY2F0aW9uIGZyb20gYW4gb3JnIHdob3NlIG93bmVyIGhhcyBubyBzZWNvbmRcbiAgICogIGZhY3RvciAocGFzc2tleSBvciBhdXRoZW50aWNhdG9yIGFwcCkuICovXG4gIFZFUklGSUVEX09XTkVSX01GQV9SRVFVSVJFRCA9ICdWRVJJRklFRF9PV05FUl9NRkFfUkVRVUlSRUQnLFxuICAvKiogQSBwbHVnaW4gcmVmZXJlbmNlIG5hbWVzIGFuIGVjb3N5c3RlbSBsaXN0aW5nIHRoZSBvcmcgaGFzbid0IGluc3RhbGxlZCAob3JcbiAgICogIHdob3NlIGluc3RhbGwgaXMgcGVuZGluZywgZGVuaWVkLCBvciBkb2Vzbid0IGNvdmVyIHRoZSB2ZXJzaW9uIGFza2VkIGZvcjtcbiAgICogIGBkZXRhaWxzLnJlYXNvbmApIOKAlCBkb2NzL3BsdWdpbi1wdWJsaXNoaW5nLm1kICovXG4gIFBMVUdJTl9OT1RfSU5TVEFMTEVEID0gJ1BMVUdJTl9OT1RfSU5TVEFMTEVEJyxcbiAgLyoqIFRoZSBvcmcncyBjb25zdW1wdGlvbiBwb2xpY3kgcmVmdXNlcyB0aGUgbGlzdGluZzogaXRzIHRpZXIgaXNuJ3QgYWxsb3dlZCxcbiAgICogIHRoZSBsaXN0aW5nIGlzIGJsb2NrZWQsIG9yIGFuIGFkdmlzb3J5IGJsb2NrcyB0aGUgdmVyc2lvbiAoYGRldGFpbHMucmVhc29uYCkuICovXG4gIFBMVUdJTl9CTE9DS0VEX0JZX1BPTElDWSA9ICdQTFVHSU5fQkxPQ0tFRF9CWV9QT0xJQ1knLFxuICAvKiogVGhlIGxpc3Rpbmcgb3IgdmVyc2lvbiBjYW4ndCBiZSB1c2VkOiB5YW5rZWQsIHN1c3BlbmRlZCwgb3IgcGF1c2VkIGZvciBuZXdcbiAgICogIGluc3RhbGxzIChgZGV0YWlscy5yZWFzb25gKS4gKi9cbiAgUExVR0lOX1VOQVZBSUxBQkxFID0gJ1BMVUdJTl9VTkFWQUlMQUJMRScsXG4gIC8qKiBBbiBhdXRvLWNyZWF0ZWQgcGxhY2Vob2xkZXIgcGx1Z2luIGNhbid0IHRha2UgdGhlIG5hbWUgb2YgYSBsaXN0ZWQgcGx1Z2luXG4gICAqIOKAlCBpbnN0YWxsIHRoZSBsaXN0aW5nIGluc3RlYWQuICovXG4gIFBMVUdJTl9OQU1FX0xJU1RFRCA9ICdQTFVHSU5fTkFNRV9MSVNURUQnLFxuICAvKiogQW4gYW5vbnltb3VzIHN1Ym1pc3Npb24gbmFtZXMgYSBjb21tdW5pdHkgbGlzdGluZyBhbm90aGVyIHN1Ym1pdHRlciBvd25zLFxuICAgKiAgYSByZXNlcnZlZCBuYW1lLCBhbiBPZmZpY2lhbC9WZXJpZmllZCBsaXN0aW5nJ3MgbmFtZSwgb3Igb25lIGNvbmZ1c2FibGVcbiAgICogIHdpdGggYSB0b3AgbGlzdGluZzsgYGRldGFpbHMucmVhc29uYCBzYXlzIHdoaWNoLiAqL1xuICBOQU1FX1RBS0VOID0gJ05BTUVfVEFLRU4nLFxuICAvKiogQW4gVU5RVUFMSUZJRUQgcmVmZXJlbmNlIG5hbWVzIGEgcGx1Z2luIHRoZSBvcmcgREVMRVRFRDogcmVmdXNlZCByYXRoZXJcbiAgICogIHRoYW4gc2lsZW50bHkgZmFsbGluZyB0aHJvdWdoIHRvIGEgc2FtZS1uYW1lZCBsaXN0aW5nLCB3aGljaCB3b3VsZCBzd2FwIHRoZVxuICAgKiAgaW1hZ2UgYSBwaXBlbGluZSBydW5zIHdpdGhvdXQgYW55b25lIGNob29zaW5nIGl0IChgZGV0YWlscy5zdGF0ZTogJ2RlbGV0ZWQnYCkuICovXG4gIFBMVUdJTl9ERUxFVEVEID0gJ1BMVUdJTl9ERUxFVEVEJyxcblxuICAvLyBQbHVnaW4gYnVpbGQgb3V0Y29tZXMgKDQyMikg4oCUIHRlcm1pbmFsIGJ1aWxkIGZhaWx1cmVzLCByZXBvcnRlZCBvbiB0aGUgYnVpbGRcbiAgLy8gc3RyZWFtIGFuZCBpbiB0aGUgYnVpbGQncyBmYWlsdXJlIHJlY29yZCwgbmV2ZXIgYW5zd2VyZWQgb24gYSByZXF1ZXN0LlxuICAvKiogVGhlIGJ1aWx0IGltYWdlIGNvdWxkIG5vdCBiZSB2dWxuZXJhYmlsaXR5LXNjYW5uZWQgYWZ0ZXIgZXZlcnkgcmV0cnksIHNvXG4gICAqICBub3RoaW5nIHdhcyBwZXJzaXN0ZWQgKGRvY3MvcGx1Z2luLXB1Ymxpc2hpbmcubWQpLiAqL1xuICBJTUFHRV9TQ0FOX1VOQVZBSUxBQkxFID0gJ0lNQUdFX1NDQU5fVU5BVkFJTEFCTEUnLFxuICAvKiogVGhlIGJ1aWx0IGltYWdlIGhhcyBtb3JlIGZpeGFibGUgQ3JpdGljYWwgZmluZGluZ3MgdGhhbiB0aGUgcGxhdGZvcm1cbiAgICogIGZsb29yIGBQTFVHSU5fVlVMTl9NQVhfRklORElOR1NgOyB0aGUgbWVzc2FnZSBsaXN0cyB0aGVtIHdpdGggdGhlaXIgZml4ZXMuICovXG4gIFBMVUdJTl9WVUxOX0dBVEUgPSAnUExVR0lOX1ZVTE5fR0FURScsXG4gIC8qKiBBbiB1cGxvYWQgd2hvc2UgTkFNRSB3b3VsZCBvdmVycmlkZSBhIGxpc3Rpbmcgb3IgdGhlIHBhcmVudCBvcmcncyBwbHVnaW4sXG4gICAqICByZWZ1c2VkIGJlY2F1c2UgdGhlIGNvbnN1bXB0aW9uIHBvbGljeSBzYXlzIGBzaGFkb3dpbmc6IGRlbnlgLiAqL1xuICBQTFVHSU5fTkFNRV9TSEFET1dTID0gJ1BMVUdJTl9OQU1FX1NIQURPV1MnLFxuXG4gIC8vIEJpbGxpbmcgZXJyb3JzXG4gIFBBWU1FTlRfTUVUSE9EX1JFUVVJUkVEID0gJ1BBWU1FTlRfTUVUSE9EX1JFUVVJUkVEJywgLy8gNDAyXG4gIERJU0NPVU5UX0NFSUxJTkdfRVhDRUVERUQgPSAnRElTQ09VTlRfQ0VJTElOR19FWENFRURFRCcsIC8vIDQwMFxuICBESVNDT1VOVF9OT1RfRk9VTkQgPSAnRElTQ09VTlRfTk9UX0ZPVU5EJywgLy8gNDA0XG4gIERJU0NPVU5UX0lOQUNUSVZFID0gJ0RJU0NPVU5UX0lOQUNUSVZFJywgLy8gNDA5XG4gIFBMQU5fT1ZFUl9DQVAgPSAnUExBTl9PVkVSX0NBUCcsIC8vIDQwOVxuICBBRERPTl9PVkVSX0NBUCA9ICdBRERPTl9PVkVSX0NBUCcsIC8vIDQwOVxuXG4gIC8vIFNlcnZlciBlcnJvcnMgKDUwMClcbiAgSU5URVJOQUxfRVJST1IgPSAnSU5URVJOQUxfRVJST1InLFxuICBEQVRBQkFTRV9FUlJPUiA9ICdEQVRBQkFTRV9FUlJPUicsXG5cbiAgLy8gTm90IGltcGxlbWVudGVkICg1MDEpIOKAlCB0aGUgY29uZmlndXJlZCBwcm92aWRlciBoYXMgbm8gc3VjaCBjYXBhYmlsaXR5XG4gIE5PVF9JTVBMRU1FTlRFRCA9ICdOT1RfSU1QTEVNRU5URUQnLFxuXG4gIC8vIFNlcnZpY2UgdW5hdmFpbGFibGUgKDUwMylcbiAgU0VSVklDRV9VTkFWQUlMQUJMRSA9ICdTRVJWSUNFX1VOQVZBSUxBQkxFJyxcbiAgQ09NUExJQU5DRV9TRVJWSUNFX1VOQVZBSUxBQkxFID0gJ0NPTVBMSUFOQ0VfU0VSVklDRV9VTkFWQUlMQUJMRScsXG59XG5cbi8qKlxuICogTWFwcyBlcnJvciBjb2RlcyB0byB0aGVpciBkZWZhdWx0IEhUVFAgc3RhdHVzIGNvZGVzLlxuICovXG5leHBvcnQgY29uc3QgRXJyb3JDb2RlU3RhdHVzOiBSZWNvcmQ8RXJyb3JDb2RlLCBudW1iZXI+ID0ge1xuICBbRXJyb3JDb2RlLlVOQVVUSE9SSVpFRF06IDQwMSxcbiAgW0Vycm9yQ29kZS5UT0tFTl9FWFBJUkVEXTogNDAxLFxuICBbRXJyb3JDb2RlLlRPS0VOX0lOVkFMSURdOiA0MDEsXG4gIFtFcnJvckNvZGUuVE9LRU5fTUlTU0lOR106IDQwMSxcbiAgW0Vycm9yQ29kZS5UT0tFTl9SRVZPS0VEXTogNDAxLFxuICBbRXJyb3JDb2RlLk1GQV9SRVFVSVJFRF06IDQwMSxcbiAgW0Vycm9yQ29kZS5SRUFVVEhfUkVRVUlSRURdOiA0MDEsXG4gIFtFcnJvckNvZGUuSU5TVUZGSUNJRU5UX1BFUk1JU1NJT05TXTogNDAzLFxuICBbRXJyb3JDb2RlLlNZU1RFTV9PUkdfUkVRVUlSRURdOiA0MDMsXG4gIFtFcnJvckNvZGUuUFVCTElTSEVSX1RFUk1TX1JFUVVJUkVEXTogNDAzLFxuICBbRXJyb3JDb2RlLlBVQkxJU0hFUl9ST09UX09SR19SRVFVSVJFRF06IDQwMyxcbiAgW0Vycm9yQ29kZS5QVUJMSVNIRVJfU1VTUEVOREVEXTogNDAzLFxuICBbRXJyb3JDb2RlLlBMVUdJTl9QVUJMSVNISU5HX0RJU0FCTEVEXTogNDAzLFxuICBbRXJyb3JDb2RlLkFJX0RJU0FCTEVEXTogNDAzLFxuICBbRXJyb3JDb2RlLlBMVUdJTl9SRVZJRVdTX0RJU0FCTEVEXTogNDAzLFxuICBbRXJyb3JDb2RlLlJFVklFV19TRUxGX1BST01PVElPTl06IDQwMyxcbiAgW0Vycm9yQ29kZS5TRVBBUkFUSU9OX09GX0RVVElFU106IDQwMyxcbiAgW0Vycm9yQ29kZS5IVU1BTl9TRVNTSU9OX1JFUVVJUkVEXTogNDAzLFxuICBbRXJyb3JDb2RlLk1GQV9FTlJPTExNRU5UX1JFUVVJUkVEXTogNDAzLFxuICBbRXJyb3JDb2RlLklNUEVSU09OQVRJT05fUkVBRF9PTkxZXTogNDAzLFxuICBbRXJyb3JDb2RlLk9SR19NSVNNQVRDSF06IDQwMyxcbiAgW0Vycm9yQ29kZS5DT01QTElBTkNFX1ZJT0xBVElPTl06IDQwMyxcbiAgW0Vycm9yQ29kZS5OT1RfRk9VTkRdOiA0MDQsXG4gIFtFcnJvckNvZGUuT1JHX05PVF9GT1VORF06IDQwNCxcbiAgW0Vycm9yQ29kZS5VU0VSX05PVF9SRUdJU1RFUkVEXTogNDA0LFxuICBbRXJyb3JDb2RlLlNVQk1JU1NJT05TX0RJU0FCTEVEXTogNDA0LFxuICBbRXJyb3JDb2RlLlZBTElEQVRJT05fRVJST1JdOiA0MDAsXG4gIFtFcnJvckNvZGUuTUlTU0lOR19SRVFVSVJFRF9GSUVMRF06IDQwMCxcbiAgW0Vycm9yQ29kZS5QUk9PRl9PRl9XT1JLX0lOVkFMSURdOiA0MDAsXG4gIFtFcnJvckNvZGUuVEVNUExBVEVfVU5LTk9XTl9QQVRIXTogNDAwLFxuICBbRXJyb3JDb2RlLlRFTVBMQVRFX0NZQ0xFXTogNDAwLFxuICBbRXJyb3JDb2RlLlRFTVBMQVRFX1BBUlNFX0VSUk9SXTogNDAwLFxuICBbRXJyb3JDb2RlLlRFTVBMQVRFX1RZUEVfTUlTTUFUQ0hdOiA0MDAsXG4gIFtFcnJvckNvZGUuVEVNUExBVEVfU0VDUkVUU19SRVNFUlZFRF06IDQwMCxcbiAgW0Vycm9yQ29kZS5URU1QTEFURV9DT05UUkFDVF9WSU9MQVRJT05dOiA0MDAsXG4gIFtFcnJvckNvZGUuVEVNUExBVEVfU0laRV9FWENFRURFRF06IDQwMCxcbiAgW0Vycm9yQ29kZS5URU1QTEFURV9WQUxJREFUSU9OX0ZBSUxFRF06IDQwMCxcbiAgW0Vycm9yQ29kZS5RVU9UQV9FWENFRURFRF06IDQyOSxcbiAgW0Vycm9yQ29kZS5BSV9NRU1CRVJfU0hBUkVfRVhDRUVERURdOiA0MjksXG4gIFtFcnJvckNvZGUuQUlfVE9LRU5fQlVER0VUX0VYQ0VFREVEXTogNDI5LFxuICBbRXJyb3JDb2RlLlJBVEVfTElNSVRfRVhDRUVERURdOiA0MjksXG4gIFtFcnJvckNvZGUuU1VCTUlTU0lPTl9MSU1JVF06IDQyOSxcbiAgW0Vycm9yQ29kZS5QQVlMT0FEX1RPT19MQVJHRV06IDQxMyxcbiAgW0Vycm9yQ29kZS5DT05GTElDVF06IDQwOSxcbiAgW0Vycm9yQ29kZS5EVVBMSUNBVEVfRU5UUlldOiA0MDksXG4gIFtFcnJvckNvZGUuU0NBTl9DT05GTElDVF06IDQwOSxcbiAgW0Vycm9yQ29kZS5JTUFHRV9WRVJJRklDQVRJT05fRkFJTEVEXTogNDA5LFxuICBbRXJyb3JDb2RlLlBMVUdJTl9WRVJTSU9OX0ZST1pFTl06IDQwOSxcbiAgW0Vycm9yQ29kZS5QTFVHSU5fVkVSU0lPTl9JTl9VU0VdOiA0MDksXG4gIFtFcnJvckNvZGUuUExVR0lOX0RJR0VTVF9NSVNNQVRDSF06IDQwOSxcbiAgW0Vycm9yQ29kZS5QVUJMSVNIRVJfUkVRVUlSRURdOiA0MDksXG4gIFtFcnJvckNvZGUuUFVCTElTSEVSX0hBTkRMRV9SRVNFUlZFRF06IDQwOSxcbiAgW0Vycm9yQ29kZS5QVUJMSVNIX0dBVEVfRkFJTEVEXTogNDA5LFxuICBbRXJyb3JDb2RlLlZFUklGSUVEX1BMQU5fUkVRVUlSRURdOiA0MDMsXG4gIFtFcnJvckNvZGUuVkVSSUZJRURfRE9NQUlOX1JFUVVJUkVEXTogNDA5LFxuICBbRXJyb3JDb2RlLlZFUklGSUVEX09XTkVSX01GQV9SRVFVSVJFRF06IDQwOSxcbiAgW0Vycm9yQ29kZS5QTFVHSU5fTk9UX0lOU1RBTExFRF06IDQwMyxcbiAgW0Vycm9yQ29kZS5QTFVHSU5fQkxPQ0tFRF9CWV9QT0xJQ1ldOiA0MDMsXG4gIFtFcnJvckNvZGUuUExVR0lOX1VOQVZBSUxBQkxFXTogNDA5LFxuICBbRXJyb3JDb2RlLlBMVUdJTl9OQU1FX0xJU1RFRF06IDQwOSxcbiAgW0Vycm9yQ29kZS5OQU1FX1RBS0VOXTogNDA5LFxuICBbRXJyb3JDb2RlLlBMVUdJTl9ERUxFVEVEXTogNDEwLFxuICBbRXJyb3JDb2RlLklNQUdFX1NDQU5fVU5BVkFJTEFCTEVdOiA0MjIsXG4gIFtFcnJvckNvZGUuUExVR0lOX1ZVTE5fR0FURV06IDQyMixcbiAgW0Vycm9yQ29kZS5QTFVHSU5fTkFNRV9TSEFET1dTXTogNDA5LFxuICBbRXJyb3JDb2RlLlBBWU1FTlRfTUVUSE9EX1JFUVVJUkVEXTogNDAyLFxuICBbRXJyb3JDb2RlLkRJU0NPVU5UX0NFSUxJTkdfRVhDRUVERURdOiA0MDAsXG4gIFtFcnJvckNvZGUuRElTQ09VTlRfTk9UX0ZPVU5EXTogNDA0LFxuICBbRXJyb3JDb2RlLkRJU0NPVU5UX0lOQUNUSVZFXTogNDA5LFxuICBbRXJyb3JDb2RlLlBMQU5fT1ZFUl9DQVBdOiA0MDksXG4gIFtFcnJvckNvZGUuQURET05fT1ZFUl9DQVBdOiA0MDksXG4gIFtFcnJvckNvZGUuSU5URVJOQUxfRVJST1JdOiA1MDAsXG4gIFtFcnJvckNvZGUuREFUQUJBU0VfRVJST1JdOiA1MDAsXG4gIFtFcnJvckNvZGUuTk9UX0lNUExFTUVOVEVEXTogNTAxLFxuICBbRXJyb3JDb2RlLlNFUlZJQ0VfVU5BVkFJTEFCTEVdOiA1MDMsXG4gIFtFcnJvckNvZGUuQ09NUExJQU5DRV9TRVJWSUNFX1VOQVZBSUxBQkxFXTogNTAzLFxufTtcblxuLyoqXG4gKiBHZXQgdGhlIEhUVFAgc3RhdHVzIGNvZGUgZm9yIGFuIGVycm9yIGNvZGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdGF0dXNGb3JFcnJvckNvZGUoY29kZTogRXJyb3JDb2RlKTogbnVtYmVyIHtcbiAgcmV0dXJuIEVycm9yQ29kZVN0YXR1c1tjb2RlXSA/PyA1MDA7XG59XG4iXX0=
|
|
@@ -1,6 +1,22 @@
|
|
|
1
1
|
import type { QuotaTier } from './quota-tiers.js';
|
|
2
|
+
/**
|
|
3
|
+
* Support level, one per response-time rung. Sold ONLY as per-contact add-on
|
|
4
|
+
* bundles and included in NO tier — not even enterprise, which is why
|
|
5
|
+
* `TIER_FEATURES` cannot simply spread `ALL_FEATURE_FLAGS` for it any more.
|
|
6
|
+
* These REPLACE the former `priority_support` tier perk, which marketed "faster
|
|
7
|
+
* response times" while no support product existed to be faster. Mutually
|
|
8
|
+
* exclusive: an account holds at most one (enforced in `effectiveEntitlements`).
|
|
9
|
+
*
|
|
10
|
+
* Its own type, and spelled ONCE — `FeatureFlag` includes it rather than listing
|
|
11
|
+
* the three names again. A surface that must name EVERY level keys a
|
|
12
|
+
* `Record<SupportFeatureFlag, …>` off it (the frontend's level labels were a
|
|
13
|
+
* `Record<string, string>` that happened to carry three entries, so a fourth
|
|
14
|
+
* level would have rendered as the raw flag id), while the ladder list below
|
|
15
|
+
* stays `FeatureFlag[]` so it can be tested against the full catalog.
|
|
16
|
+
*/
|
|
17
|
+
export type SupportFeatureFlag = 'support_standard' | 'support_priority' | 'support_premium';
|
|
2
18
|
/** Canonical feature flag identifiers. */
|
|
3
|
-
export type FeatureFlag = 'custom_integrations' |
|
|
19
|
+
export type FeatureFlag = 'custom_integrations' | SupportFeatureFlag | 'ai_generation' | 'bulk_operations' | 'sso' | 'advanced_reporting' | 'team_usage_analytics' | 'compliance_standard' | 'compliance_advanced' | 'stakeholder_reports' | 'verified_publisher';
|
|
4
20
|
/** All valid feature flags (order determines display order). */
|
|
5
21
|
export declare const ALL_FEATURE_FLAGS: readonly FeatureFlag[];
|
|
6
22
|
/**
|