@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
|
@@ -129,4 +129,4 @@ export function stopDeadmanHeartbeat() {
|
|
|
129
129
|
clearInterval(deadmanTimer);
|
|
130
130
|
deadmanTimer = undefined;
|
|
131
131
|
}
|
|
132
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQtZGVsaXZlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvYWxlcnQtZGVsaXZlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E2Qkc7QUFFSCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTdDLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBK0I5QyxNQUFNLFVBQVUsaUJBQWlCO0lBQy9CLE9BQU87UUFDTCxPQUFPLEVBQUUsT0FBTyxDQUFDLHNCQUFzQixFQUFFLEtBQUssQ0FBQztRQUMvQyxVQUFVLEVBQUUsT0FBTyxDQUFDLHlCQUF5QixFQUFFLEtBQUssQ0FBQztLQUN0RCxDQUFDO0FBQ0osQ0FBQztBQVFELGlGQUFpRjtBQUNqRixNQUFNLFVBQVUsa0JBQWtCLENBQUMsR0FBd0I7SUFDekQsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLFVBQVUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDN0UsQ0FBQztBQUVELE1BQU0sVUFBVSxtQkFBbUI7SUFDakMsTUFBTSxFQUFFLEdBQUcsZUFBZSxFQUFFLENBQUM7SUFDN0IsT0FBTztRQUNMLEtBQUssRUFBRSxpQkFBaUIsRUFB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LFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDcEcsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLGlFQUFpRTtZQUNqRSxXQUFXLENBQUMsc0JBQXNCLEVBQUUsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUM3RCxDQUFDO0lBQ0gsQ0FBQyxDQUFDO0lBQ0YsOEVBQThFO0lBQzlFLHlFQUF5RTtJQUN6RSx1QkFBdUI7SUFDdkIsWUFBWSxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLElBQUksRUFBRSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM5RCxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDckIsS0FBSyxJQUFJLEVBQUUsQ0FBQztJQUNaLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVELGtGQUFrRjtBQUNsRixNQUFNLFVBQVUsb0JBQW9CO0lBQ2xDLElBQUksWUFBWTtRQUFFLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM5QyxZQUFZLEdBQUcsU0FBUyxDQUFDO0FBQzNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBXaGVyZSBhIHBsYXRmb3JtLXdpZGUgYWxlcnQgaXMgbWVhbnQgdG8gR08sIGFzIGRlY2xhcmVkIGNvbmZpZ3VyYXRpb24uXG4gKlxuICogVHdvIGRlc3RpbmF0aW9ucywgd2l0aCBkaWZmZXJlbnQgam9icy4gVGhlIG9wcy10ZWFtIFNsYWNrIGNoYW5uZWxzIGFyZSB0aGVcbiAqIGJhc2VsaW5lOiBldmVyeXRoaW5nIGNyaXRpY2FsIG9yIHdhcm5pbmcgbGFuZHMgdGhlcmUgYW5kIHRoYXQgaXMgd2hlcmUgdGhlXG4gKiB0aHJlYWQsIHRoZSBjb250ZXh0IGFuZCB0aGUgaGFuZG92ZXIgbGl2ZS4gVGhlIHBhZ2VyIGlzIGFkZGl0aXZlIGFuZCBuYXJyb3cg4oCUXG4gKiBvbmx5IGBzZXZlcml0eTogY3JpdGljYWxgICsgYGNvbXBvbmVudDogc3VwcG9ydGAsIGJlY2F1c2UgdGhhdCBpcyB0aGUgb25lXG4gKiBhbGVydCBiYWNraW5nIGEgY29udHJhY3R1YWwgb3V0LW9mLWhvdXJzIHByb21pc2UuXG4gKlxuICogV0hBVCBUSElTIE1PRFVMRSBDQU4gQU5EIENBTk5PVCBETywgYmVjYXVzZSB0aGUgbGltaXQgaXMgbm90IG9idmlvdXMuXG4gKiBgY29uZmlnL2FsZXJ0bWFuYWdlci9hbGVydG1hbmFnZXIueW1sYCBpcyBpbiB0aGUgZGVwbG95IGNvbnRyYWN0J3NcbiAqIFJFUVVJUkVEX0lERU5USUNBTCBzZXQgYW5kIGFzc2VydGVkIGJ5dGUtaWRlbnRpY2FsIGFjcm9zcyB0YXJnZXRzLCBhbmRcbiAqIEFsZXJ0bWFuYWdlciBoYXMgbm8gdGVtcGxhdGluZy4gU28gTk9USElORyBoZXJlIHJlbW92ZXMgYSByZWNlaXZlciBvciBhIHJvdXRlXG4gKiDigJQgdGhlIHJvdXRlcyBhcmUgYWx3YXlzIHByZXNlbnQuIFdoYXQgdGhlc2UgZmxhZ3MgZG8gaXM6XG4gKlxuICogIC0gZGVjbGFyZSBJTlRFTlQsIHNvIFwid2UgZG8gbm90IHVzZSBTbGFja1wiIGlzIGEgc3RhdGVkIGRlY2lzaW9uIHJhdGhlciB0aGFuXG4gKiAgICBzb21ldGhpbmcgaW5mZXJyZWQgZnJvbSB0d28gZW1wdHkgVVJMcyB0aGF0IGxvb2sgbGlrZSBhbiBvdmVyc2lnaHQ7XG4gKiAgLSBnYXRlIHRoZSBkZXBsb3ktdGltZSBjaGVjayAoYHBiX2NoZWNrX2FsZXJ0X2RlbGl2ZXJ5YCksIHdoaWNoIGlzIHdoYXQgdHVybnNcbiAqICAgIGEgaGFsZi1jb25maWd1cmVkIGNoYW5uZWwgaW50byBhIHJlZnVzZWQgZGVwbG95IGluc3RlYWQgb2YgYSAzYW0gc3VycHJpc2U7XG4gKiAgLSBkcml2ZSB0aGUgcG9zdHVyZSBnYXVnZXMgYmVsb3csIHNvIGEgZGFzaGJvYXJkIGNhbiBhbnN3ZXIgXCJpcyBhbnlvbmVcbiAqICAgIGFjdHVhbGx5IGdvaW5nIHRvIGhlYXIgdGhpc1wiIHdpdGhvdXQgcmVhZGluZyBmb3VyIFlBTUwgZmlsZXMuXG4gKlxuICogVGhlIFVSTFMgVEhFTVNFTFZFUyBBUkUgTk9UIEhFUkUsIGFuZCB0aGF0IGlzIGRlbGliZXJhdGUuIEEgU2xhY2sgd2ViaG9vayBVUkxcbiAqIGlzIGEgYmVhcmVyIGNyZWRlbnRpYWw6IGFueW9uZSBob2xkaW5nIGl0IGNhbiBwb3N0IHRvIHRoZSBjaGFubmVsLiBBbGVydG1hbmFnZXJcbiAqIHJlYWRzIHRoZW0gZnJvbSBhIG1vdW50ZWQgU2VjcmV0IHZpYSBgYXBpX3VybF9maWxlYCwgcGVyIG5vdGlmaWNhdGlvbiwgc28gdGhleVxuICogbmV2ZXIgZW50ZXIgYSBDb25maWdNYXAgYW5kIG5ldmVyIGVudGVyIHRoaXMgcHJvY2Vzcy4gUGxhdGZvcm0ga25vd3MgV0hFVEhFUlxuICogU2xhY2sgZGVsaXZlcnkgaXMgZGVjbGFyZWQgb247IGl0IGRvZXMgbm90IGtub3csIGFuZCBkb2VzIG5vdCBuZWVkLCB3aGVyZSB0by5cbiAqIFRoZSBwYWdlcidzIHJvdXRpbmcga2V5IGlzIGRpZmZlcmVudCDigJQgdGhhdCBvbmUgSVMgY29uc3VtZWQgYnkgdGhpcyBwcm9jZXNzLCBzb1xuICogaXQgbGl2ZXMgaW4gYHBhZ2VyRHV0eUNvbmZpZygpYC5cbiAqL1xuXG5pbXBvcnQgeyBwYWdlckR1dHlDb25maWcgfSBmcm9tICcuL3BhZ2VyZHV0eS5qcyc7XG5pbXBvcnQgeyBlbnZCb29sLCBlbnZJbnQsIGVudlN0ciB9IGZyb20gJy4uL3V0aWxzL2Vudi5qcyc7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tICcuLi91dGlscy9sb2dnZXIuanMnO1xuaW1wb3J0IHsgZW1pdENvdW50ZXIsIGVtaXRHYXVnZSB9IGZyb20gJy4uL3V0aWxzL21ldHJpYy1lbWl0dGVyLmpzJztcbmltcG9ydCB7IHNhZmVGZXRjaCB9IGZyb20gJy4uL3V0aWxzL3NzcmYuanMnO1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoJ2FsZXJ0LWRlbGl2ZXJ5Jyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2xhY2tBbGVydHNDb25maWcge1xuICAvKipcbiAgICogV2hldGhlciBvcHMtdGVhbSBTbGFjayBkZWxpdmVyeSBpcyBERUNMQVJFRCBvbi5cbiAgICpcbiAgICogRGVmYXVsdHMgRkFMU0UsIG1hdGNoaW5nIGBPTkNBTExfRU5BQkxFRGA6IGJvdGggZGVzdGluYXRpb25zIGFyZSBvcHQtaW4sIHNvXG4gICAqIGEgZGVwbG95bWVudCBzdGF0ZXMgd2hhdCBpdCB3YW50cyByYXRoZXIgdGhhbiBpbmhlcml0aW5nIGEgY2hhbm5lbCBpdCBtYXlcbiAgICogbm90IGhhdmUuIE5vdGUgd2hhdCB0aGlzIGZsYWcgZG9lcyBOT1QgZG8g4oCUIGl0IGNhbm5vdCByZW1vdmUgdGhlIFNsYWNrXG4gICAqIHJlY2VpdmVycywgYmVjYXVzZSBgYWxlcnRtYW5hZ2VyLnltbGAgaXMgYXNzZXJ0ZWQgYnl0ZS1pZGVudGljYWwgYWNyb3NzXG4gICAqIHRhcmdldHMgYW5kIEFsZXJ0bWFuYWdlciBoYXMgbm8gdGVtcGxhdGluZy4gQSBkZXBsb3ltZW50IHdpdGggdGhlIGZsYWcgb2ZmXG4gICAqIGFuZCByZWFsIFVSTHMgaW4gaXRzIFNlY3JldCBzdGlsbCBkZWxpdmVycyB0byBTbGFjay5cbiAgICovXG4gIGVuYWJsZWQ6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBXaGV0aGVyIFNsYWNrIGRlbGl2ZXJ5IENBTiBoYXBwZW4g4oCUIGkuZS4gdGhlIHdlYmhvb2sgVVJMcyBhcmUgbm9uLWVtcHR5LlxuICAgKlxuICAgKiBEZXJpdmVkIGF0IGRlcGxveSB0aW1lIChgcGJfY2hlY2tfYWxlcnRfZGVsaXZlcnlgIHdyaXRlcyBpdCkgYmVjYXVzZSB0aGVcbiAgICogVVJMcyBsaXZlIGluIEFsZXJ0bWFuYWdlcidzIFNlY3JldCBhbmQgbmV2ZXIgZW50ZXIgdGhpcyBwcm9jZXNzOiBhIFNsYWNrXG4gICAqIHdlYmhvb2sgVVJMIGlzIGEgYmVhcmVyIGNyZWRlbnRpYWwsIHJlYWQgcGVyIG5vdGlmaWNhdGlvbiB2aWFcbiAgICogYGFwaV91cmxfZmlsZWAuIFBsYXRmb3JtIHRoZXJlZm9yZSBjYW5ub3QgaW5zcGVjdCB0aGVtIGFuZCBtdXN0IGJlIHRvbGQuXG4gICAqXG4gICAqIFNFUEFSQVRFIEZST00gYGVuYWJsZWRgIGZvciB0aGUgc2FtZSByZWFzb24gdGhlIHBhZ2VyIHNwbGl0cyB0aGUgdHdvLCBhbmRcbiAgICogdGhlIGRpc3RpbmN0aW9uIGlzIHdoYXQga2VlcHMgYEFsZXJ0RGVsaXZlcnlEaXNhYmxlZGAgaG9uZXN0LiBLZXlpbmcgdGhhdFxuICAgKiBhbGVydCBvbiB0aGUgREVDTEFSQVRJT04gd291bGQgcGFnZSBldmVyeSBkZXBsb3ltZW50IHRoYXQgbGVmdCB0aGUgZmxhZyBhdFxuICAgKiBpdHMgZGVmYXVsdCB3aGlsZSBTbGFjayB3YXMgcXVpZXRseSB3b3JraW5nIOKAlCBhIGZhbHNlIGFsYXJtIG9uIGEgaGVhbHRoeVxuICAgKiBzeXN0ZW0sIHdoaWNoIGlzIHRoZSBmYXN0ZXN0IHdheSB0byB0ZWFjaCBwZW9wbGUgdG8gaWdub3JlIGFuIGFsZXJ0LlxuICAgKi9cbiAgY29uZmlndXJlZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNsYWNrQWxlcnRzQ29uZmlnKCk6IFNsYWNrQWxlcnRzQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICBlbmFibGVkOiBlbnZCb29sKCdTTEFDS19BTEVSVFNfRU5BQkxFRCcsIGZhbHNlKSxcbiAgICBjb25maWd1cmVkOiBlbnZCb29sKCdTTEFDS19BTEVSVFNfQ09ORklHVVJFRCcsIGZhbHNlKSxcbiAgfTtcbn1cblxuLyoqIEJvdGggZGVzdGluYXRpb25zLCByZXNvbHZlZCB0b2dldGhlciDigJQgd2hhdCBgcmVwb3J0QWxlcnREZWxpdmVyeVBvc3R1cmVgIHJlYWRzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBBbGVydERlbGl2ZXJ5Q29uZmlnIHtcbiAgc2xhY2s6IFNsYWNrQWxlcnRzQ29uZmlnO1xuICBwYWdlcjogeyBlbmFibGVkOiBib29sZWFuOyBjb25maWd1cmVkOiBib29sZWFuIH07XG59XG5cbi8qKiBXaGV0aGVyIEFOWSBkZXN0aW5hdGlvbiBjb3VsZCBhY3R1YWxseSBkZWxpdmVyIOKAlCByZWFsaXR5LCBub3QgZGVjbGFyYXRpb24uICovXG5leHBvcnQgZnVuY3Rpb24gY2FuRGVsaXZlckFueXdoZXJlKGNmZzogQWxlcnREZWxpdmVyeUNvbmZpZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gY2ZnLnNsYWNrLmNvbmZpZ3VyZWQgfHwgKGNmZy5wYWdlci5lbmFibGVkICYmIGNmZy5wYWdlci5jb25maWd1cmVkKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFsZXJ0RGVsaXZlcnlDb25maWcoKTogQWxlcnREZWxpdmVyeUNvbmZpZyB7XG4gIGNvbnN0IHBkID0gcGFnZXJEdXR5Q29uZmlnKCk7XG4gIHJldHVybiB7XG4gICAgc2xhY2s6IHNsYWNrQWxlcnRzQ29uZmlnKCksXG4gICAgLy8gYGNvbmZpZ3VyZWRgIHNlcGFyYXRlbHkgZnJvbSBgZW5hYmxlZGA6IGVuYWJsZWQtd2l0aG91dC1hLWtleSBpcyB0aGVcbiAgICAvLyBoYWxmLWNvbmZpZ3VyZWQgc3RhdGUgd29ydGggc2VlaW5nLCBhbmQgaXQgaXMgaW52aXNpYmxlIGlmIHRoZSB0d28gYXJlXG4gICAgLy8gY29sbGFwc2VkIGludG8gb25lIGJvb2xlYW4uXG4gICAgcGFnZXI6IHsgZW5hYmxlZDogcGQuZW5hYmxlZCwgY29uZmlndXJlZDogcGQucm91dGluZ0tleS5sZW5ndGggPiAwIH0sXG4gIH07XG59XG5cbi8qKlxuICogUHVibGlzaCB0aGUgZGVsaXZlcnkgcG9zdHVyZSBhcyBnYXVnZXMsIGFuZCBzaG91dCBpZiBpdCBpcyBpbmNvaGVyZW50LlxuICpcbiAqIENhbGxlZCBvbmNlIGF0IGJvb3QuIEdhdWdlcyByYXRoZXIgdGhhbiBjb3VudGVycyBiZWNhdXNlIHRoZXNlIGFyZSBTVEFURVMgb2ZcbiAqIHRoZSBkZXBsb3ltZW50IOKAlCBhbiBvcGVyYXRvciB3YW50cyBcIndpbGwgYW55b25lIGhlYXIgYW4gYWxlcnQgcmlnaHQgbm93XCIsIG5vdFxuICogaG93IG1hbnkgdGltZXMgYSBwcm9jZXNzIHN0YXJ0ZWQgYW5kIHdvbmRlcmVkLlxuICpcbiAqIFRoZSB2YWx1ZSBvZiBoYXZpbmcgdGhpcyBhdCBhbGw6IGJlZm9yZSBpdCwgYW5zd2VyaW5nIFwiZG9lcyB0aGlzIGRlcGxveW1lbnRcbiAqIHBhZ2UgYW55b25lP1wiIG1lYW50IHJlYWRpbmcgYC5lbnZgLCB0d28gU2VjcmV0cyBhbmQgZm91ciBjb3BpZXMgb2ZcbiAqIGBhbGVydG1hbmFnZXIueW1sYC4gQSBkZXBsb3ltZW50IGNhbiBub3cgYWxlcnQgb24gaXRzIG93biBpbmFiaWxpdHkgdG8gYWxlcnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXBvcnRBbGVydERlbGl2ZXJ5UG9zdHVyZShjZmc6IEFsZXJ0RGVsaXZlcnlDb25maWcgPSBhbGVydERlbGl2ZXJ5Q29uZmlnKCkpOiB2b2lkIHtcbiAgZW1pdEdhdWdlKCdhbGVydF9kZWxpdmVyeV9lbmFibGVkJywgeyBjaGFubmVsOiAnc2xhY2snIH0sIGNmZy5zbGFjay5lbmFibGVkID8gMSA6IDApO1xuICBlbWl0R2F1Z2UoJ2FsZXJ0X2RlbGl2ZXJ5X2VuYWJsZWQnLCB7IGNoYW5uZWw6ICdwYWdlcicgfSwgY2ZnLnBhZ2VyLmVuYWJsZWQgPyAxIDogMCk7XG4gIGVtaXRHYXVnZSgnYWxlcnRfZGVsaXZlcnlfY29uZmlndXJlZCcsIHsgY2hhbm5lbDogJ3NsYWNrJyB9LCBjZmcuc2xhY2suY29uZmlndXJlZCA/IDEgOiAwKTtcbiAgZW1pdEdhdWdlKCdhbGVydF9kZWxpdmVyeV9jb25maWd1cmVkJywgeyBjaGFubmVsOiAncGFnZXInIH0sIGNmZy5wYWdlci5jb25maWd1cmVkID8gMSA6IDApO1xuXG4gIC8vIEVuYWJsZWQgd2l0aCBubyBjcmVkZW50aWFsOiBzb21lYm9keSBhc2tlZCBmb3IgcGFnaW5nIGFuZCBpcyBub3QgZ2V0dGluZyBpdC5cbiAgLy8gVGhlIGRlcGxveSBjaGVjayByZWZ1c2VzIHRoaXMgY29tYmluYXRpb24sIHNvIHJlYWNoaW5nIGhlcmUgbWVhbnMgaXQgd2FzXG4gIC8vIGNoYW5nZWQgYWZ0ZXIgcHJvdmlzaW9uaW5nIOKAlCB3aGljaCBpcyBleGFjdGx5IHdoZW4gbm9ib2R5IGlzIGxvb2tpbmcuXG4gIGlmIChjZmcucGFnZXIuZW5hYmxlZCAmJiAhY2ZnLnBhZ2VyLmNvbmZpZ3VyZWQpIHtcbiAgICBsb2dnZXIuZXJyb3IoJ09OQ0FMTF9FTkFCTEVEIGlzIHRydWUgYnV0IG5vIFBBR0VSRFVUWV9ST1VUSU5HX0tFWSBpcyBzZXQg4oCUIHN1cHBvcnQgY3JpdGljYWxzIHdpbGwgbm90IHBhZ2UnKTtcbiAgfVxuICAvLyBOb3RoaW5nIENBTiBkZWxpdmVyLiBLZXllZCBvbiByZWFjaGFiaWxpdHkgcmF0aGVyIHRoYW4gb24gdGhlIHR3byBmbGFncyxcbiAgLy8gYmVjYXVzZSB0aGUgZmxhZ3MgYXJlIGRlY2xhcmF0aW9uczogYSBkZXBsb3ltZW50IHRoYXQgbGVmdCBib3RoIGF0IHRoZWlyXG4gIC8vIChmYWxzZSkgZGVmYXVsdHMgd2hpbGUgcmVhbCBTbGFjayBVUkxzIHNpdCBpbiBpdHMgU2VjcmV0IGlzIGRlbGl2ZXJpbmdcbiAgLy8gZmluZSwgYW5kIHdhcm5pbmcgaXQgd291bGQgYmUgYSBsaWUuXG4gIGlmICghY2FuRGVsaXZlckFueXdoZXJlKGNmZykpIHtcbiAgICBsb2dnZXIud2FybignTm8gcGxhdGZvcm0gYWxlcnQgZGVzdGluYXRpb24gaXMgZW5hYmxlZCDigJQgYWxlcnRzIHdpbGwgcmVhY2ggQWxlcnRtYW5hZ2VyIGFuZCBnbyBubyBmdXJ0aGVyJywge1xuICAgICAgaGludDogJ1NMQUNLX0FMRVJUU19FTkFCTEVEIC8gT05DQUxMX0VOQUJMRUQnLFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogVGhlIGRlYWQtbWFuIHN3aXRjaDogYSBoZWFydGJlYXQgd2hvc2UgQUJTRU5DRSBpcyB0aGUgYWxlcnQuXG4gKlxuICogRXZlcnkgb3RoZXIgYWxlcnQgaW4gdGhpcyBzeXN0ZW0gZGVwZW5kcyBvbiBzb21ldGhpbmcgaW5zaWRlIGl0IHN0aWxsIHdvcmtpbmcuXG4gKiBUaGlzIG9uZSBpbnZlcnRzIHRoYXQg4oCUIGFuIGV4dGVybmFsIHNlcnZpY2UgZXhwZWN0cyBhIFBPU1Qgb24gYSBzY2hlZHVsZSBhbmRcbiAqIHJhaXNlcyBhbiBpbmNpZGVudCB3aGVuIG9uZSBkb2VzIG5vdCBhcnJpdmUsIHNvIGEgcGxhdGZvcm0gdGhhdCBpcyB3ZWRnZWQsXG4gKiBjcmFzaGVkLCBwYXJ0aXRpb25lZCBvciBuZXZlciBzdGFydGVkIGlzIHJlcG9ydGVkIEJZIElUUyBTSUxFTkNFLiBOb3RoaW5nXG4gKiBpbnNpZGUgYSBicm9rZW4gZGVwbG95bWVudCBoYXMgdG8gbm90aWNlIGl0cyBvd24gYnJva2VubmVzcy5cbiAqXG4gKiBXSFkgSVQgSVMgQlVJTFQgSEVSRSBSQVRIRVIgVEhBTiBCT1VHSFQsIHdoZW4gdGhlIHJlc3Qgb2Ygb24tY2FsbCBkZWxpYmVyYXRlbHlcbiAqIGlzIG5vdDogUGFnZXJEdXR5J3MgaGVhcnRiZWF0IG1vbml0b3JpbmcgaXMgYW4gRXZlbnQgT3JjaGVzdHJhdGlvbiBwYXR0ZXJuIGFuZFxuICogZG9jdW1lbnRlZCBhcyBBSU9wcy1wb3dlcmVkLCBzbyBpdCBtYXkgc2l0IGJlaGluZCBhIHRpZXIgYW5kIGlzIG5vdCBwYXJ0IG9mXG4gKiBFdmVudHMgdjIuIE1vcmUgaW1wb3J0YW50bHkgYSBkZWFkLW1hbiBzd2l0Y2ggaXMgYSBDTE9DSywgbm90IGEgdGVsZWNvbVxuICogcHJvYmxlbSDigJQgdGhlIHRoaW5nIHRoYXQgbWFkZSB0aGUgbGFzdCBtaWxlIHdvcnRoIGJ1eWluZyAoY2FycmllciByZXRyaWVzLFxuICogZGVsaXZlcnkgcmVjZWlwdHMsIGEgM2FtIGZhaWx1cmUgYnVkZ2V0KSBzaW1wbHkgZG9lcyBub3QgYXBwbHkgdG8gc2VuZGluZyBvbmVcbiAqIHJlcXVlc3Qgb24gYW4gaW50ZXJ2YWwuIGBPTkNBTExfREVBRE1BTl9VUkxgIHRoZXJlZm9yZSBwb2ludHMgd2hlcmV2ZXIgdGhlXG4gKiBvcGVyYXRvciBsaWtlczogUGFnZXJEdXR5J3Mgb3JjaGVzdHJhdGlvbiBlbmRwb2ludCwgYSBwdXJwb3NlLWJ1aWx0IGRlYWQtbWFuXG4gKiBzZXJ2aWNlLCBvciBhbiB1cHRpbWUgbW9uaXRvci5cbiAqXG4gKiBUV08gUFJPUEVSVElFUyBXT1JUSCBTVEFUSU5HLCBiZWNhdXNlIHRoZXkgYXJlIHRoZSByZWFzb24gdGhpcyBpcyBzYWZlOlxuICpcbiAqICAtIEl0IGlzIE5PVCBsZWFkZXItbG9ja2VkLiBBIGhlYXJ0YmVhdCBpcyBwZXItcHJvY2VzcyBvbiBwdXJwb3NlOiB3aXRoIHRocmVlXG4gKiAgICByZXBsaWNhcywgdGhlIGV4dGVybmFsIHNlcnZpY2UgaGVhcnMgZnJvbSB3aGljaGV2ZXIgYXJlIGFsaXZlLCBhbmQgc2lsZW5jZVxuICogICAgbWVhbnMgQUxMIG9mIHRoZW0gc3RvcHBlZC4gTGVhZGVyLWxvY2tpbmcgaXQgd291bGQgbWFrZSB0aGUgc3dpdGNoIHJlcG9ydFxuICogICAgdGhlIGxlYWRlcidzIGhlYWx0aCByYXRoZXIgdGhhbiB0aGUgZGVwbG95bWVudCdzIOKAlCBhbmQgd291bGQgbWFrZSBhIFJlZGlzXG4gKiAgICBvdXRhZ2UgbG9vayBpZGVudGljYWwgdG8gYSB0b3RhbCBvdXRhZ2UuXG4gKiAgLSBJdCBmYWlscyBTSUxFTlRMWSBvbiBpdHMgb3duIGVycm9ycywgZGVsaWJlcmF0ZWx5LiBBIGhlYXJ0YmVhdCB0aGF0IGxvZ2dlZFxuICogICAgYW4gZXJyb3IgZXZlcnkgaW50ZXJ2YWwgZHVyaW5nIGEgbmV0d29yayBibGlwIHdvdWxkIGJlIGl0cyBvd24gbm9pc2VcbiAqICAgIHNvdXJjZSwgYW5kIHRoZSBjb25zZXF1ZW5jZSBvZiBhIG1pc3NlZCBiZWF0IGlzIGFscmVhZHkgaGFuZGxlZDogdGhlXG4gKiAgICBleHRlcm5hbCBzZXJ2aWNlIGFsZXJ0cy4gVGhlIG9ubHkgdGhpbmcgaXQgbXVzdCBuZXZlciBkbyBpcyByZXBvcnQgc3VjY2Vzc1xuICogICAgaXQgZGlkIG5vdCBhY2hpZXZlLCB3aGljaCBpcyB3aHkgbm90aGluZyBoZXJlIHN3YWxsb3dzIGEgbm9uLTJ4eC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZWFkbWFuQ29uZmlnIHtcbiAgdXJsOiBzdHJpbmc7XG4gIGludGVydmFsTXM6IG51bWJlcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlYWRtYW5Db25maWcoKTogRGVhZG1hbkNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgdXJsOiBlbnZTdHIoJ09OQ0FMTF9ERUFETUFOX1VSTCcsICcnKSxcbiAgICBpbnRlcnZhbE1zOiBlbnZJbnQoJ09OQ0FMTF9ERUFETUFOX0lOVEVSVkFMX01TJywgNjBfMDAwLCB7IG1pbjogMTAwMCB9KSxcbiAgfTtcbn1cblxubGV0IGRlYWRtYW5UaW1lcjogTm9kZUpTLlRpbWVvdXQgfCB1bmRlZmluZWQ7XG5cbi8qKlxuICogU3RhcnQgYmVhdGluZy4gTm8tb3Agd2hlbiBgT05DQUxMX0RFQURNQU5fVVJMYCBpcyB1bnNldCwgd2hpY2ggaXMgdGhlIGRlZmF1bHQ6XG4gKiBhbiB1bmNvbmZpZ3VyZWQgZGVhZC1tYW4gc3dpdGNoIG11c3Qgbm90IGJlYXQgYWdhaW5zdCBub3RoaW5nLCBhbmQgbXVzdCBub3RcbiAqIHByZXRlbmQgaXQgaXMgY292ZXJpbmcgdGhlIGRlcGxveW1lbnQuXG4gKlxuICogUmV0dXJucyB0cnVlIHdoZW4gYSB0aW1lciB3YXMgc3RhcnRlZCwgc28gYSBjYWxsZXIgY2FuIGxvZyB0aGUgcG9zdHVyZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0YXJ0RGVhZG1hbkhlYXJ0YmVhdChjZmc6IERlYWRtYW5Db25maWcgPSBkZWFkbWFuQ29uZmlnKCkpOiBib29sZWFuIHtcbiAgaWYgKGRlYWRtYW5UaW1lciB8fCAhY2ZnLnVybCkgcmV0dXJuIGZhbHNlO1xuICBjb25zdCBiZWF0ID0gYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwID0gYXdhaXQgc2FmZUZldGNoKGNmZy51cmwsIHsgbWV0aG9kOiAnUE9TVCcsIHRpbWVvdXRNczogNTAwMCwgYm9keTogJ3t9JywgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0gfSk7XG4gICAgICBlbWl0Q291bnRlcignb25jYWxsX2RlYWRtYW5fdG90YWwnLCB7IG91dGNvbWU6IHJlc3Aub2sgJiYgIXJlc3AucmVkaXJlY3RlZCA/ICdzZW50JyA6ICdmYWlsZWQnIH0pO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gQ291bnRlZCwgbmV2ZXIgbG9nZ2VkIHBlci1iZWF0IOKAlCBzZWUgdGhlIG1vZHVsZSBub3RlIG9uIG5vaXNlLlxuICAgICAgZW1pdENvdW50ZXIoJ29uY2FsbF9kZWFkbWFuX3RvdGFsJywgeyBvdXRjb21lOiAnZmFpbGVkJyB9KTtcbiAgICB9XG4gIH07XG4gIC8vIGB1bnJlZmAgc28gYSBwZW5kaW5nIGJlYXQgY2Fubm90IGhvbGQgdGhlIHByb2Nlc3Mgb3BlbiBkdXJpbmcgc2h1dGRvd246IHRoZVxuICAvLyBzd2l0Y2ggZXhpc3RzIHRvIHJlcG9ydCB0aGF0IHRoZSBwcm9jZXNzIFNUT1BQRUQsIGFuZCBkZWxheWluZyB0aGF0IGlzXG4gIC8vIHByZWNpc2VseSBiYWNrd2FyZHMuXG4gIGRlYWRtYW5UaW1lciA9IHNldEludGVydmFsKCgpID0+IHZvaWQgYmVhdCgpLCBjZmcuaW50ZXJ2YWxNcyk7XG4gIGRlYWRtYW5UaW1lci51bnJlZigpO1xuICB2b2lkIGJlYXQoKTtcbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKiBTdG9wIGJlYXRpbmcg4oCUIGNhbGxlZCBmcm9tIHRoZSB1bmlmaWVkIHNodXRkb3duIHBhdGgsIG5vdCBhIHNpZ25hbCBoYW5kbGVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0b3BEZWFkbWFuSGVhcnRiZWF0KCk6IHZvaWQge1xuICBpZiAoZGVhZG1hblRpbWVyKSBjbGVhckludGVydmFsKGRlYWRtYW5UaW1lcik7XG4gIGRlYWRtYW5UaW1lciA9IHVuZGVmaW5lZDtcbn1cbiJdfQ==
|
|
132
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQtZGVsaXZlcnkuanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9hbGVydC1kZWxpdmVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZCRztBQUVILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFN0MsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUErQjlDLE1BQU0sVUFBVSxpQkFBaUI7SUFDL0IsT0FBTztRQUNMLE9BQU8sRUFBRSxPQUFPLENBQUMsc0JBQXNCLEVBQUUsS0FBSyxDQUFDO1FBQy9DLFVBQVUsRUFBRSxPQUFPLENBQUMseUJBQXlCLEVBQUUsS0FBSyxDQUFDO0tBQ3RELENBQUM7QUFDSixDQUFDO0FBUUQsaUZBQWlGO0FBQ2pGLE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxHQUF3QjtJQUN6RCxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsVUFBVSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUM3RSxDQUFDO0FBRUQsTUFBTSxVQUFVLG1CQUFtQjtJQUNqQyxNQUFNLEVBQUUsR0FBRyxlQUFlLEVBQUUsQ0FBQztJQUM3QixPQUFPO1FBQ0wsS0FBSyxFQUFFLGlCQUFpQixFQUFFO1FBQzFCLHVFQUF1RTtR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Q0FBQztRQUNwRyxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsaUVBQWlFO1lBQ2pFLFdBQVcsQ0FBQyxzQkFBc0IsRUFBRSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzdELENBQUM7SUFDSCxDQUFDLENBQUM7SUFDRiw4RUFBOEU7SUFDOUUseUVBQXlFO0lBQ3pFLHVCQUF1QjtJQUN2QixZQUFZLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssSUFBSSxFQUFFLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzlELFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNyQixLQUFLLElBQUksRUFBRSxDQUFDO0lBQ1osT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsa0ZBQWtGO0FBQ2xGLE1BQU0sVUFBVSxvQkFBb0I7SUFDbEMsSUFBSSxZQUFZO1FBQUUsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzlDLFlBQVksR0FBRyxTQUFTLENBQUM7QUFDM0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFdoZXJlIGEgcGxhdGZvcm0td2lkZSBhbGVydCBpcyBtZWFudCB0byBHTywgYXMgZGVjbGFyZWQgY29uZmlndXJhdGlvbi5cbiAqXG4gKiBUd28gZGVzdGluYXRpb25zLCB3aXRoIGRpZmZlcmVudCBqb2JzLiBUaGUgb3BzLXRlYW0gU2xhY2sgY2hhbm5lbHMgYXJlIHRoZVxuICogYmFzZWxpbmU6IGV2ZXJ5dGhpbmcgY3JpdGljYWwgb3Igd2FybmluZyBsYW5kcyB0aGVyZSBhbmQgdGhhdCBpcyB3aGVyZSB0aGVcbiAqIHRocmVhZCwgdGhlIGNvbnRleHQgYW5kIHRoZSBoYW5kb3ZlciBsaXZlLiBUaGUgcGFnZXIgaXMgYWRkaXRpdmUgYW5kIG5hcnJvdyDigJRcbiAqIG9ubHkgYHNldmVyaXR5OiBjcml0aWNhbGAgKyBgY29tcG9uZW50OiBzdXBwb3J0YCwgYmVjYXVzZSB0aGF0IGlzIHRoZSBvbmVcbiAqIGFsZXJ0IGJhY2tpbmcgYSBjb250cmFjdHVhbCBvdXQtb2YtaG91cnMgcHJvbWlzZS5cbiAqXG4gKiBXSEFUIFRISVMgTU9EVUxFIENBTiBBTkQgQ0FOTk9UIERPLCBiZWNhdXNlIHRoZSBsaW1pdCBpcyBub3Qgb2J2aW91cy5cbiAqIGBjb25maWcvYWxlcnRtYW5hZ2VyL2FsZXJ0bWFuYWdlci55bWxgIGlzIGluIHRoZSBkZXBsb3kgY29udHJhY3Qnc1xuICogUkVRVUlSRURfSURFTlRJQ0FMIHNldCBhbmQgYXNzZXJ0ZWQgYnl0ZS1pZGVudGljYWwgYWNyb3NzIHRhcmdldHMsIGFuZFxuICogQWxlcnRtYW5hZ2VyIGhhcyBubyB0ZW1wbGF0aW5nLiBTbyBOT1RISU5HIGhlcmUgcmVtb3ZlcyBhIHJlY2VpdmVyIG9yIGEgcm91dGVcbiAqIOKAlCB0aGUgcm91dGVzIGFyZSBhbHdheXMgcHJlc2VudC4gV2hhdCB0aGVzZSBmbGFncyBkbyBpczpcbiAqXG4gKiAgLSBkZWNsYXJlIElOVEVOVCwgc28gXCJ3ZSBkbyBub3QgdXNlIFNsYWNrXCIgaXMgYSBzdGF0ZWQgZGVjaXNpb24gcmF0aGVyIHRoYW5cbiAqICAgIHNvbWV0aGluZyBpbmZlcnJlZCBmcm9tIHR3byBlbXB0eSBVUkxzIHRoYXQgbG9vayBsaWtlIGFuIG92ZXJzaWdodDtcbiAqICAtIGdhdGUgdGhlIGRlcGxveS10aW1lIGNoZWNrIChgcGJfY2hlY2tfYWxlcnRfZGVsaXZlcnlgKSwgd2hpY2ggaXMgd2hhdCB0dXJuc1xuICogICAgYSBoYWxmLWNvbmZpZ3VyZWQgY2hhbm5lbCBpbnRvIGEgcmVmdXNlZCBkZXBsb3kgaW5zdGVhZCBvZiBhIDNhbSBzdXJwcmlzZTtcbiAqICAtIGRyaXZlIHRoZSBwb3N0dXJlIGdhdWdlcyBiZWxvdywgc28gYSBkYXNoYm9hcmQgY2FuIGFuc3dlciBcImlzIGFueW9uZVxuICogICAgYWN0dWFsbHkgZ29pbmcgdG8gaGVhciB0aGlzXCIgd2l0aG91dCByZWFkaW5nIGZvdXIgWUFNTCBmaWxlcy5cbiAqXG4gKiBUaGUgVVJMUyBUSEVNU0VMVkVTIEFSRSBOT1QgSEVSRSwgYW5kIHRoYXQgaXMgZGVsaWJlcmF0ZS4gQSBTbGFjayB3ZWJob29rIFVSTFxuICogaXMgYSBiZWFyZXIgY3JlZGVudGlhbDogYW55b25lIGhvbGRpbmcgaXQgY2FuIHBvc3QgdG8gdGhlIGNoYW5uZWwuIEFsZXJ0bWFuYWdlclxuICogcmVhZHMgdGhlbSBmcm9tIGEgbW91bnRlZCBTZWNyZXQgdmlhIGBhcGlfdXJsX2ZpbGVgLCBwZXIgbm90aWZpY2F0aW9uLCBzbyB0aGV5XG4gKiBuZXZlciBlbnRlciBhIENvbmZpZ01hcCBhbmQgbmV2ZXIgZW50ZXIgdGhpcyBwcm9jZXNzLiBQbGF0Zm9ybSBrbm93cyBXSEVUSEVSXG4gKiBTbGFjayBkZWxpdmVyeSBpcyBkZWNsYXJlZCBvbjsgaXQgZG9lcyBub3Qga25vdywgYW5kIGRvZXMgbm90IG5lZWQsIHdoZXJlIHRvLlxuICogVGhlIHBhZ2VyJ3Mgcm91dGluZyBrZXkgaXMgZGlmZmVyZW50IOKAlCB0aGF0IG9uZSBJUyBjb25zdW1lZCBieSB0aGlzIHByb2Nlc3MsIHNvXG4gKiBpdCBsaXZlcyBpbiBgcGFnZXJEdXR5Q29uZmlnKClgLlxuICovXG5cbmltcG9ydCB7IHBhZ2VyRHV0eUNvbmZpZyB9IGZyb20gJy4vcGFnZXJkdXR5LmpzJztcbmltcG9ydCB7IGVudkJvb2wsIGVudkludCwgZW52U3RyIH0gZnJvbSAnLi4vdXRpbHMvZW52LmpzJztcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gJy4uL3V0aWxzL2xvZ2dlci5qcyc7XG5pbXBvcnQgeyBlbWl0Q291bnRlciwgZW1pdEdhdWdlIH0gZnJvbSAnLi4vdXRpbHMvbWV0cmljLWVtaXR0ZXIuanMnO1xuaW1wb3J0IHsgc2FmZUZldGNoIH0gZnJvbSAnLi4vdXRpbHMvc3NyZi5qcyc7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcignYWxlcnQtZGVsaXZlcnknKTtcblxuZXhwb3J0IGludGVyZmFjZSBTbGFja0FsZXJ0c0NvbmZpZyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIG9wcy10ZWFtIFNsYWNrIGRlbGl2ZXJ5IGlzIERFQ0xBUkVEIG9uLlxuICAgKlxuICAgKiBEZWZhdWx0cyBGQUxTRSwgbWF0Y2hpbmcgYE9OQ0FMTF9FTkFCTEVEYDogYm90aCBkZXN0aW5hdGlvbnMgYXJlIG9wdC1pbiwgc29cbiAgICogYSBkZXBsb3ltZW50IHN0YXRlcyB3aGF0IGl0IHdhbnRzIHJhdGhlciB0aGFuIGluaGVyaXRpbmcgYSBjaGFubmVsIGl0IG1heVxuICAgKiBub3QgaGF2ZS4gTm90ZSB3aGF0IHRoaXMgZmxhZyBkb2VzIE5PVCBkbyDigJQgaXQgY2Fubm90IHJlbW92ZSB0aGUgU2xhY2tcbiAgICogcmVjZWl2ZXJzLCBiZWNhdXNlIGBhbGVydG1hbmFnZXIueW1sYCBpcyBhc3NlcnRlZCBieXRlLWlkZW50aWNhbCBhY3Jvc3NcbiAgICogdGFyZ2V0cyBhbmQgQWxlcnRtYW5hZ2VyIGhhcyBubyB0ZW1wbGF0aW5nLiBBIGRlcGxveW1lbnQgd2l0aCB0aGUgZmxhZyBvZmZcbiAgICogYW5kIHJlYWwgVVJMcyBpbiBpdHMgU2VjcmV0IHN0aWxsIGRlbGl2ZXJzIHRvIFNsYWNrLlxuICAgKi9cbiAgZW5hYmxlZDogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgU2xhY2sgZGVsaXZlcnkgQ0FOIGhhcHBlbiDigJQgaS5lLiB0aGUgd2ViaG9vayBVUkxzIGFyZSBub24tZW1wdHkuXG4gICAqXG4gICAqIERlcml2ZWQgYXQgZGVwbG95IHRpbWUgKGBwYl9jaGVja19hbGVydF9kZWxpdmVyeWAgd3JpdGVzIGl0KSBiZWNhdXNlIHRoZVxuICAgKiBVUkxzIGxpdmUgaW4gQWxlcnRtYW5hZ2VyJ3MgU2VjcmV0IGFuZCBuZXZlciBlbnRlciB0aGlzIHByb2Nlc3M6IGEgU2xhY2tcbiAgICogd2ViaG9vayBVUkwgaXMgYSBiZWFyZXIgY3JlZGVudGlhbCwgcmVhZCBwZXIgbm90aWZpY2F0aW9uIHZpYVxuICAgKiBgYXBpX3VybF9maWxlYC4gUGxhdGZvcm0gdGhlcmVmb3JlIGNhbm5vdCBpbnNwZWN0IHRoZW0gYW5kIG11c3QgYmUgdG9sZC5cbiAgICpcbiAgICogU0VQQVJBVEUgRlJPTSBgZW5hYmxlZGAgZm9yIHRoZSBzYW1lIHJlYXNvbiB0aGUgcGFnZXIgc3BsaXRzIHRoZSB0d28sIGFuZFxuICAgKiB0aGUgZGlzdGluY3Rpb24gaXMgd2hhdCBrZWVwcyBgQWxlcnREZWxpdmVyeURpc2FibGVkYCBob25lc3QuIEtleWluZyB0aGF0XG4gICAqIGFsZXJ0IG9uIHRoZSBERUNMQVJBVElPTiB3b3VsZCBwYWdlIGV2ZXJ5IGRlcGxveW1lbnQgdGhhdCBsZWZ0IHRoZSBmbGFnIGF0XG4gICAqIGl0cyBkZWZhdWx0IHdoaWxlIFNsYWNrIHdhcyBxdWlldGx5IHdvcmtpbmcg4oCUIGEgZmFsc2UgYWxhcm0gb24gYSBoZWFsdGh5XG4gICAqIHN5c3RlbSwgd2hpY2ggaXMgdGhlIGZhc3Rlc3Qgd2F5IHRvIHRlYWNoIHBlb3BsZSB0byBpZ25vcmUgYW4gYWxlcnQuXG4gICAqL1xuICBjb25maWd1cmVkOiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2xhY2tBbGVydHNDb25maWcoKTogU2xhY2tBbGVydHNDb25maWcge1xuICByZXR1cm4ge1xuICAgIGVuYWJsZWQ6IGVudkJvb2woJ1NMQUNLX0FMRVJUU19FTkFCTEVEJywgZmFsc2UpLFxuICAgIGNvbmZpZ3VyZWQ6IGVudkJvb2woJ1NMQUNLX0FMRVJUU19DT05GSUdVUkVEJywgZmFsc2UpLFxuICB9O1xufVxuXG4vKiogQm90aCBkZXN0aW5hdGlvbnMsIHJlc29sdmVkIHRvZ2V0aGVyIOKAlCB3aGF0IGByZXBvcnRBbGVydERlbGl2ZXJ5UG9zdHVyZWAgcmVhZHMuICovXG5leHBvcnQgaW50ZXJmYWNlIEFsZXJ0RGVsaXZlcnlDb25maWcge1xuICBzbGFjazogU2xhY2tBbGVydHNDb25maWc7XG4gIHBhZ2VyOiB7IGVuYWJsZWQ6IGJvb2xlYW47IGNvbmZpZ3VyZWQ6IGJvb2xlYW4gfTtcbn1cblxuLyoqIFdoZXRoZXIgQU5ZIGRlc3RpbmF0aW9uIGNvdWxkIGFjdHVhbGx5IGRlbGl2ZXIg4oCUIHJlYWxpdHksIG5vdCBkZWNsYXJhdGlvbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYW5EZWxpdmVyQW55d2hlcmUoY2ZnOiBBbGVydERlbGl2ZXJ5Q29uZmlnKTogYm9vbGVhbiB7XG4gIHJldHVybiBjZmcuc2xhY2suY29uZmlndXJlZCB8fCAoY2ZnLnBhZ2VyLmVuYWJsZWQgJiYgY2ZnLnBhZ2VyLmNvbmZpZ3VyZWQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWxlcnREZWxpdmVyeUNvbmZpZygpOiBBbGVydERlbGl2ZXJ5Q29uZmlnIHtcbiAgY29uc3QgcGQgPSBwYWdlckR1dHlDb25maWcoKTtcbiAgcmV0dXJuIHtcbiAgICBzbGFjazogc2xhY2tBbGVydHNDb25maWcoKSxcbiAgICAvLyBgY29uZmlndXJlZGAgc2VwYXJhdGVseSBmcm9tIGBlbmFibGVkYDogZW5hYmxlZC13aXRob3V0LWEta2V5IGlzIHRoZVxuICAgIC8vIGhhbGYtY29uZmlndXJlZCBzdGF0ZSB3b3J0aCBzZWVpbmcsIGFuZCBpdCBpcyBpbnZpc2libGUgaWYgdGhlIHR3byBhcmVcbiAgICAvLyBjb2xsYXBzZWQgaW50byBvbmUgYm9vbGVhbi5cbiAgICBwYWdlcjogeyBlbmFibGVkOiBwZC5lbmFibGVkLCBjb25maWd1cmVkOiBwZC5yb3V0aW5nS2V5Lmxlbmd0aCA+IDAgfSxcbiAgfTtcbn1cblxuLyoqXG4gKiBQdWJsaXNoIHRoZSBkZWxpdmVyeSBwb3N0dXJlIGFzIGdhdWdlcywgYW5kIHNob3V0IGlmIGl0IGlzIGluY29oZXJlbnQuXG4gKlxuICogQ2FsbGVkIG9uY2UgYXQgYm9vdC4gR2F1Z2VzIHJhdGhlciB0aGFuIGNvdW50ZXJzIGJlY2F1c2UgdGhlc2UgYXJlIFNUQVRFUyBvZlxuICogdGhlIGRlcGxveW1lbnQg4oCUIGFuIG9wZXJhdG9yIHdhbnRzIFwid2lsbCBhbnlvbmUgaGVhciBhbiBhbGVydCByaWdodCBub3dcIiwgbm90XG4gKiBob3cgbWFueSB0aW1lcyBhIHByb2Nlc3Mgc3RhcnRlZCBhbmQgd29uZGVyZWQuXG4gKlxuICogVGhlIHZhbHVlIG9mIGhhdmluZyB0aGlzIGF0IGFsbDogYmVmb3JlIGl0LCBhbnN3ZXJpbmcgXCJkb2VzIHRoaXMgZGVwbG95bWVudFxuICogcGFnZSBhbnlvbmU/XCIgbWVhbnQgcmVhZGluZyBgLmVudmAsIHR3byBTZWNyZXRzIGFuZCBmb3VyIGNvcGllcyBvZlxuICogYGFsZXJ0bWFuYWdlci55bWxgLiBBIGRlcGxveW1lbnQgY2FuIG5vdyBhbGVydCBvbiBpdHMgb3duIGluYWJpbGl0eSB0byBhbGVydC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlcG9ydEFsZXJ0RGVsaXZlcnlQb3N0dXJlKGNmZzogQWxlcnREZWxpdmVyeUNvbmZpZyA9IGFsZXJ0RGVsaXZlcnlDb25maWcoKSk6IHZvaWQge1xuICBlbWl0R2F1Z2UoJ2FsZXJ0X2RlbGl2ZXJ5X2VuYWJsZWQnLCB7IGNoYW5uZWw6ICdzbGFjaycgfSwgY2ZnLnNsYWNrLmVuYWJsZWQgPyAxIDogMCk7XG4gIGVtaXRHYXVnZSgnYWxlcnRfZGVsaXZlcnlfZW5hYmxlZCcsIHsgY2hhbm5lbDogJ3BhZ2VyJyB9LCBjZmcucGFnZXIuZW5hYmxlZCA/IDEgOiAwKTtcbiAgZW1pdEdhdWdlKCdhbGVydF9kZWxpdmVyeV9jb25maWd1cmVkJywgeyBjaGFubmVsOiAnc2xhY2snIH0sIGNmZy5zbGFjay5jb25maWd1cmVkID8gMSA6IDApO1xuICBlbWl0R2F1Z2UoJ2FsZXJ0X2RlbGl2ZXJ5X2NvbmZpZ3VyZWQnLCB7IGNoYW5uZWw6ICdwYWdlcicgfSwgY2ZnLnBhZ2VyLmNvbmZpZ3VyZWQgPyAxIDogMCk7XG5cbiAgLy8gRW5hYmxlZCB3aXRoIG5vIGNyZWRlbnRpYWw6IHNvbWVib2R5IGFza2VkIGZvciBwYWdpbmcgYW5kIGlzIG5vdCBnZXR0aW5nIGl0LlxuICAvLyBUaGUgZGVwbG95IGNoZWNrIHJlZnVzZXMgdGhpcyBjb21iaW5hdGlvbiwgc28gcmVhY2hpbmcgaGVyZSBtZWFucyBpdCB3YXNcbiAgLy8gY2hhbmdlZCBhZnRlciBwcm92aXNpb25pbmcg4oCUIHdoaWNoIGlzIGV4YWN0bHkgd2hlbiBub2JvZHkgaXMgbG9va2luZy5cbiAgaWYgKGNmZy5wYWdlci5lbmFibGVkICYmICFjZmcucGFnZXIuY29uZmlndXJlZCkge1xuICAgIGxvZ2dlci5lcnJvcignT05DQUxMX0VOQUJMRUQgaXMgdHJ1ZSBidXQgbm8gUEFHRVJEVVRZX1JPVVRJTkdfS0VZIGlzIHNldCDigJQgc3VwcG9ydCBjcml0aWNhbHMgd2lsbCBub3QgcGFnZScpO1xuICB9XG4gIC8vIE5vdGhpbmcgQ0FOIGRlbGl2ZXIuIEtleWVkIG9uIHJlYWNoYWJpbGl0eSByYXRoZXIgdGhhbiBvbiB0aGUgdHdvIGZsYWdzLFxuICAvLyBiZWNhdXNlIHRoZSBmbGFncyBhcmUgZGVjbGFyYXRpb25zOiBhIGRlcGxveW1lbnQgdGhhdCBsZWZ0IGJvdGggYXQgdGhlaXJcbiAgLy8gKGZhbHNlKSBkZWZhdWx0cyB3aGlsZSByZWFsIFNsYWNrIFVSTHMgc2l0IGluIGl0cyBTZWNyZXQgaXMgZGVsaXZlcmluZ1xuICAvLyBmaW5lLCBhbmQgd2FybmluZyBpdCB3b3VsZCBiZSBhIGxpZS5cbiAgaWYgKCFjYW5EZWxpdmVyQW55d2hlcmUoY2ZnKSkge1xuICAgIGxvZ2dlci53YXJuKCdObyBwbGF0Zm9ybSBhbGVydCBkZXN0aW5hdGlvbiBpcyBlbmFibGVkIOKAlCBhbGVydHMgd2lsbCByZWFjaCBBbGVydG1hbmFnZXIgYW5kIGdvIG5vIGZ1cnRoZXInLCB7XG4gICAgICBoaW50OiAnU0xBQ0tfQUxFUlRTX0VOQUJMRUQgLyBPTkNBTExfRU5BQkxFRCcsXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGUgZGVhZC1tYW4gc3dpdGNoOiBhIGhlYXJ0YmVhdCB3aG9zZSBBQlNFTkNFIGlzIHRoZSBhbGVydC5cbiAqXG4gKiBFdmVyeSBvdGhlciBhbGVydCBpbiB0aGlzIHN5c3RlbSBkZXBlbmRzIG9uIHNvbWV0aGluZyBpbnNpZGUgaXQgc3RpbGwgd29ya2luZy5cbiAqIFRoaXMgb25lIGludmVydHMgdGhhdCDigJQgYW4gZXh0ZXJuYWwgc2VydmljZSBleHBlY3RzIGEgUE9TVCBvbiBhIHNjaGVkdWxlIGFuZFxuICogcmFpc2VzIGFuIGluY2lkZW50IHdoZW4gb25lIGRvZXMgbm90IGFycml2ZSwgc28gYSBwbGF0Zm9ybSB0aGF0IGlzIHdlZGdlZCxcbiAqIGNyYXNoZWQsIHBhcnRpdGlvbmVkIG9yIG5ldmVyIHN0YXJ0ZWQgaXMgcmVwb3J0ZWQgQlkgSVRTIFNJTEVOQ0UuIE5vdGhpbmdcbiAqIGluc2lkZSBhIGJyb2tlbiBkZXBsb3ltZW50IGhhcyB0byBub3RpY2UgaXRzIG93biBicm9rZW5uZXNzLlxuICpcbiAqIFdIWSBJVCBJUyBCVUlMVCBIRVJFIFJBVEhFUiBUSEFOIEJPVUdIVCwgd2hlbiB0aGUgcmVzdCBvZiBvbi1jYWxsIGRlbGliZXJhdGVseVxuICogaXMgbm90OiBQYWdlckR1dHkncyBoZWFydGJlYXQgbW9uaXRvcmluZyBpcyBhbiBFdmVudCBPcmNoZXN0cmF0aW9uIHBhdHRlcm4gYW5kXG4gKiBkb2N1bWVudGVkIGFzIEFJT3BzLXBvd2VyZWQsIHNvIGl0IG1heSBzaXQgYmVoaW5kIGEgdGllciBhbmQgaXMgbm90IHBhcnQgb2ZcbiAqIEV2ZW50cyB2Mi4gTW9yZSBpbXBvcnRhbnRseSBhIGRlYWQtbWFuIHN3aXRjaCBpcyBhIENMT0NLLCBub3QgYSB0ZWxlY29tXG4gKiBwcm9ibGVtIOKAlCB0aGUgdGhpbmcgdGhhdCBtYWRlIHRoZSBsYXN0IG1pbGUgd29ydGggYnV5aW5nIChjYXJyaWVyIHJldHJpZXMsXG4gKiBkZWxpdmVyeSByZWNlaXB0cywgYSAzYW0gZmFpbHVyZSBidWRnZXQpIHNpbXBseSBkb2VzIG5vdCBhcHBseSB0byBzZW5kaW5nIG9uZVxuICogcmVxdWVzdCBvbiBhbiBpbnRlcnZhbC4gYE9OQ0FMTF9ERUFETUFOX1VSTGAgdGhlcmVmb3JlIHBvaW50cyB3aGVyZXZlciB0aGVcbiAqIG9wZXJhdG9yIGxpa2VzOiBQYWdlckR1dHkncyBvcmNoZXN0cmF0aW9uIGVuZHBvaW50LCBhIHB1cnBvc2UtYnVpbHQgZGVhZC1tYW5cbiAqIHNlcnZpY2UsIG9yIGFuIHVwdGltZSBtb25pdG9yLlxuICpcbiAqIFRXTyBQUk9QRVJUSUVTIFdPUlRIIFNUQVRJTkcsIGJlY2F1c2UgdGhleSBhcmUgdGhlIHJlYXNvbiB0aGlzIGlzIHNhZmU6XG4gKlxuICogIC0gSXQgaXMgTk9UIGxlYWRlci1sb2NrZWQuIEEgaGVhcnRiZWF0IGlzIHBlci1wcm9jZXNzIG9uIHB1cnBvc2U6IHdpdGggdGhyZWVcbiAqICAgIHJlcGxpY2FzLCB0aGUgZXh0ZXJuYWwgc2VydmljZSBoZWFycyBmcm9tIHdoaWNoZXZlciBhcmUgYWxpdmUsIGFuZCBzaWxlbmNlXG4gKiAgICBtZWFucyBBTEwgb2YgdGhlbSBzdG9wcGVkLiBMZWFkZXItbG9ja2luZyBpdCB3b3VsZCBtYWtlIHRoZSBzd2l0Y2ggcmVwb3J0XG4gKiAgICB0aGUgbGVhZGVyJ3MgaGVhbHRoIHJhdGhlciB0aGFuIHRoZSBkZXBsb3ltZW50J3Mg4oCUIGFuZCB3b3VsZCBtYWtlIGEgUmVkaXNcbiAqICAgIG91dGFnZSBsb29rIGlkZW50aWNhbCB0byBhIHRvdGFsIG91dGFnZS5cbiAqICAtIEl0IGZhaWxzIFNJTEVOVExZIG9uIGl0cyBvd24gZXJyb3JzLCBkZWxpYmVyYXRlbHkuIEEgaGVhcnRiZWF0IHRoYXQgbG9nZ2VkXG4gKiAgICBhbiBlcnJvciBldmVyeSBpbnRlcnZhbCBkdXJpbmcgYSBuZXR3b3JrIGJsaXAgd291bGQgYmUgaXRzIG93biBub2lzZVxuICogICAgc291cmNlLCBhbmQgdGhlIGNvbnNlcXVlbmNlIG9mIGEgbWlzc2VkIGJlYXQgaXMgYWxyZWFkeSBoYW5kbGVkOiB0aGVcbiAqICAgIGV4dGVybmFsIHNlcnZpY2UgYWxlcnRzLiBUaGUgb25seSB0aGluZyBpdCBtdXN0IG5ldmVyIGRvIGlzIHJlcG9ydCBzdWNjZXNzXG4gKiAgICBpdCBkaWQgbm90IGFjaGlldmUsIHdoaWNoIGlzIHdoeSBub3RoaW5nIGhlcmUgc3dhbGxvd3MgYSBub24tMnh4LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlYWRtYW5Db25maWcge1xuICB1cmw6IHN0cmluZztcbiAgaW50ZXJ2YWxNczogbnVtYmVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVhZG1hbkNvbmZpZygpOiBEZWFkbWFuQ29uZmlnIHtcbiAgcmV0dXJuIHtcbiAgICB1cmw6IGVudlN0cignT05DQUxMX0RFQURNQU5fVVJMJywgJycpLFxuICAgIGludGVydmFsTXM6IGVudkludCgnT05DQUxMX0RFQURNQU5fSU5URVJWQUxfTVMnLCA2MF8wMDAsIHsgbWluOiAxMDAwIH0pLFxuICB9O1xufVxuXG5sZXQgZGVhZG1hblRpbWVyOiBOb2RlSlMuVGltZW91dCB8IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBTdGFydCBiZWF0aW5nLiBOby1vcCB3aGVuIGBPTkNBTExfREVBRE1BTl9VUkxgIGlzIHVuc2V0LCB3aGljaCBpcyB0aGUgZGVmYXVsdDpcbiAqIGFuIHVuY29uZmlndXJlZCBkZWFkLW1hbiBzd2l0Y2ggbXVzdCBub3QgYmVhdCBhZ2FpbnN0IG5vdGhpbmcsIGFuZCBtdXN0IG5vdFxuICogcHJldGVuZCBpdCBpcyBjb3ZlcmluZyB0aGUgZGVwbG95bWVudC5cbiAqXG4gKiBSZXR1cm5zIHRydWUgd2hlbiBhIHRpbWVyIHdhcyBzdGFydGVkLCBzbyBhIGNhbGxlciBjYW4gbG9nIHRoZSBwb3N0dXJlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RhcnREZWFkbWFuSGVhcnRiZWF0KGNmZzogRGVhZG1hbkNvbmZpZyA9IGRlYWRtYW5Db25maWcoKSk6IGJvb2xlYW4ge1xuICBpZiAoZGVhZG1hblRpbWVyIHx8ICFjZmcudXJsKSByZXR1cm4gZmFsc2U7XG4gIGNvbnN0IGJlYXQgPSBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3AgPSBhd2FpdCBzYWZlRmV0Y2goY2ZnLnVybCwgeyBtZXRob2Q6ICdQT1NUJywgdGltZW91dE1zOiA1MDAwLCBib2R5OiAne30nLCBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSB9KTtcbiAgICAgIGVtaXRDb3VudGVyKCdvbmNhbGxfZGVhZG1hbl90b3RhbCcsIHsgb3V0Y29tZTogcmVzcC5vayAmJiAhcmVzcC5yZWRpcmVjdGVkID8gJ3NlbnQnIDogJ2ZhaWxlZCcgfSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBDb3VudGVkLCBuZXZlciBsb2dnZWQgcGVyLWJlYXQg4oCUIHNlZSB0aGUgbW9kdWxlIG5vdGUgb24gbm9pc2UuXG4gICAgICBlbWl0Q291bnRlcignb25jYWxsX2RlYWRtYW5fdG90YWwnLCB7IG91dGNvbWU6ICdmYWlsZWQnIH0pO1xuICAgIH1cbiAgfTtcbiAgLy8gYHVucmVmYCBzbyBhIHBlbmRpbmcgYmVhdCBjYW5ub3QgaG9sZCB0aGUgcHJvY2VzcyBvcGVuIGR1cmluZyBzaHV0ZG93bjogdGhlXG4gIC8vIHN3aXRjaCBleGlzdHMgdG8gcmVwb3J0IHRoYXQgdGhlIHByb2Nlc3MgU1RPUFBFRCwgYW5kIGRlbGF5aW5nIHRoYXQgaXNcbiAgLy8gcHJlY2lzZWx5IGJhY2t3YXJkcy5cbiAgZGVhZG1hblRpbWVyID0gc2V0SW50ZXJ2YWwoKCkgPT4gdm9pZCBiZWF0KCksIGNmZy5pbnRlcnZhbE1zKTtcbiAgZGVhZG1hblRpbWVyLnVucmVmKCk7XG4gIHZvaWQgYmVhdCgpO1xuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqIFN0b3AgYmVhdGluZyDigJQgY2FsbGVkIGZyb20gdGhlIHVuaWZpZWQgc2h1dGRvd24gcGF0aCwgbm90IGEgc2lnbmFsIGhhbmRsZXIuICovXG5leHBvcnQgZnVuY3Rpb24gc3RvcERlYWRtYW5IZWFydGJlYXQoKTogdm9pZCB7XG4gIGlmIChkZWFkbWFuVGltZXIpIGNsZWFySW50ZXJ2YWwoZGVhZG1hblRpbWVyKTtcbiAgZGVhZG1hblRpbWVyID0gdW5kZWZpbmVkO1xufVxuIl19
|
|
@@ -219,4 +219,4 @@ export function resetApiKeyExchangeCache() {
|
|
|
219
219
|
rejectionCache.clear();
|
|
220
220
|
inFlight.clear();
|
|
221
221
|
}
|
|
222
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWtleS1leGNoYW5nZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9hcGkta2V5LWV4Y2hhbmdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThCRztBQUVILE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUUvRCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUVoRCx1RkFBdUY7QUFDdkYsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDO0FBRTdCLHdEQUF3RDtBQUN4RCxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUM7QUFFL0Isa0ZBQWtGO0FBQ2xGLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDO0FBRWpDOzsyREFFMkQ7QUFDM0QsTUFBTSx1QkFBdUIsR0FBRyxHQUFHLENBQUM7QUFFcEMsaUZBQWlGO0FBQ2pGLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxLQUFLO0lBQzVDLFlBQVksT0FBTyxHQUFHLDJDQUEyQztRQUMvRCxL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QUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsU0FBUyxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ3JDLElBQUksTUFBTSxDQUFDLFNBQVMsSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDbkQsMkVBQTJFO1lBQzNFLHlFQUF5RTtZQUN6RSxrRUFBa0U7WUFDbEUsV0FBVyxDQUFDLDhCQUE4QixFQUFFLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFDbkUsS0FBSyxZQUFZLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBNkMsQ0FBQyxDQUFDLENBQUM7UUFDMUYsQ0FBQzthQUFNLENBQUM7WUFDTixXQUFXLENBQUMsOEJBQThCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNqRSxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxXQUFXLENBQUMsOEJBQThCLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNoRSxPQUFPLENBQUMsTUFBTSxZQUFZLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQy9DLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsd0JBQXdCO0lBQ3RDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNuQixjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdkIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBUcmFkZSBhbiBvcGFxdWUgYWNjZXNzIGtleSBmb3IgYSBzaG9ydC1saXZlZCBKV1QsIG9uY2UsIGFuZCBjYWNoZSBpdC5cbiAqXG4gKiBPbmx5IHBsYXRmb3JtLCBiaWxsaW5nIGFuZCBxdW90YSBoYXZlIE1vbmdvREIsIHNvIHRoZSBzdGF0ZWxlc3Mgc2VydmljZXNcbiAqIGNhbm5vdCBsb29rIHVwIGEga2V5IGhhc2gg4oCUIGFuZCBhc2tpbmcgcGxhdGZvcm0gdG8gdmFsaWRhdGUgRVZFUlkgcmVxdWVzdFxuICogd291bGQgcHV0IGl0IG9uIHRoZSBob3QgcGF0aCBvZiB0aGUgd2hvbGUgZmxlZXQuIEluc3RlYWQgdGhpcyBtb2R1bGUgZG9lcyB0aGVcbiAqIGV4Y2hhbmdlIG9uY2UgcGVyIGtleSAoYFBPU1QgL2F1dGgvdG9rZW4vZXhjaGFuZ2VgKSBhbmQgY2FjaGVzIHRoZSByZXR1cm5lZFxuICogSldUIGluLXByb2Nlc3MgdW50aWwgaXQgZXhwaXJlcywgc28gYHJlcXVpcmVBdXRoYCBvbmx5IGV2ZXIgdmVyaWZpZXMgYSBKV1QuXG4gKlxuICogUHJvcGVydGllcyB0aGF0IG1hdHRlcjpcbiAqXG4gKiAtICoqUmV2b2NhdGlvbiBsYXRlbmN5IGlzIGJvdW5kZWQgYnkgdGhlIHRva2VuIFRUTCoqICg1IG1pbnV0ZXMpLiBBIHJldm9rZWRcbiAqICAga2V5IGNhbiBubyBsb25nZXIgYmUgZXhjaGFuZ2VkLCBhbmQgdGhlIGNhY2hlZCB0b2tlbiBpdCBhbHJlYWR5IHByb2R1Y2VkXG4gKiAgIGRpZXMgb24gaXRzIG93bi5cbiAqIC0gKipFYXJseSwgaml0dGVyZWQgcmVmcmVzaC4qKiBUaGUgY2FjaGVkIHRva2VuIGlzIHJlLWV4Y2hhbmdlZCBpbiB0aGVcbiAqICAgYmFja2dyb3VuZCBhdCB+NzUlIG9mIGl0cyBsaWZlICjCsTIwJSBqaXR0ZXIpIHNvIG5vIHJlcXVlc3QgZXZlciBibG9ja3Mgb25cbiAqICAgdGhlIGV4Y2hhbmdlLCBhbmQgYSBmbGVldCBvZiBwb2RzIGhvbGRpbmcgdGhlIHNhbWUga2V5IGRvZXNuJ3Qgc3RhbXBlZGVcbiAqICAgcGxhdGZvcm0gYXQgdGhlIHNhbWUgaW5zdGFudC5cbiAqIC0gKipPbmUgaW4tZmxpZ2h0IGV4Y2hhbmdlIHBlciBrZXkuKiogQ29uY3VycmVudCByZXF1ZXN0cyBzaGFyZSBhIHByb21pc2UuXG4gKiAtICoqU2hvcnQgbmVnYXRpdmUgY2FjaGUuKiogQSBrZXkgcGxhdGZvcm0gcmVqZWN0ZWQgaXMgcmVtZW1iZXJlZCBmb3IgMzBzLCBzb1xuICogICBhIG1pc2NvbmZpZ3VyZWQgY2xpZW50IChvciBhIHNjYW5uZXIpIGNhbid0IHR1cm4gZXZlcnkgcmVxdWVzdCBpbnRvIGFcbiAqICAgcGxhdGZvcm0gcm91bmQtdHJpcC5cbiAqIC0gKipQbGF0Zm9ybSBkb3duIGlzIGEgNTAzLCBuZXZlciBhIDIwMC4qKiBUaGUgY2FsbGVyIG1hcHNcbiAqICAge0BsaW5rIEFwaUtleUV4Y2hhbmdlVW5hdmFpbGFibGVFcnJvcn0gdG8gXCJ0cnkgYWdhaW5cIiwgd2l0aCBhIG1ldHJpYyDigJQgaXQgaXNcbiAqICAgZGVsaWJlcmF0ZWx5IE5PVCBmYWlsLW9wZW46IGFuIHVudmVyaWZpYWJsZSBjcmVkZW50aWFsIGlzIG5vdCBhbiBpZGVudGl0eS5cbiAqXG4gKiBUaGUgZXhjaGFuZ2UgcmVxdWVzdCBpdHNlbGYgY2FycmllcyB0aGlzIHNlcnZpY2UncyBvd24gc2lnbmVkIHNlcnZpY2UgdG9rZW4sXG4gKiB3aGljaCBpcyB3aGF0IGV4ZW1wdHMgaXQgZnJvbSBwbGF0Zm9ybSdzIElQLWtleWVkIGAvYXV0aGAgcmF0ZSBsaW1pdGVyIChldmVyeVxuICogcG9kJ3MgZXhjaGFuZ2VzIHdvdWxkIG90aGVyd2lzZSBzaGFyZSBvbmUgYnVja2V0KSBhbmQgbmFtZXMgdGhlIGNhbGxlciBpblxuICogcGxhdGZvcm0ncyBhdWRpdCB0cmFpbC5cbiAqL1xuXG5pbXBvcnQgeyBnZXRTZXJ2aWNlQXV0aEhlYWRlciB9IGZyb20gJy4uL21pZGRsZXdhcmUvc2VydmljZS10b2tlbnMuanMnO1xuaW1wb3J0IHsgU1lTVEVNX09SR19JRCB9IGZyb20gJy4uL21pZGRsZXdhcmUvc3lzdGVtLW9yZy5qcyc7XG5pbXBvcnQgeyBJbnRlcm5hbEh0dHBDbGllbnQgfSBmcm9tICcuLi9zZXJ2aWNlcy9odHRwLWNsaWVudC5qcyc7XG5pbXBvcnQgeyBoYXNoQXBpS2V5IH0gZnJvbSAnLi4vdXRpbHMvYXBpLWtleS5qcyc7XG5pbXBvcnQgeyBlbnZJbnQgfSBmcm9tICcuLi91dGlscy9lbnYuanMnO1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSAnLi4vdXRpbHMvbG9nZ2VyLmpzJztcbmltcG9ydCB7IGVtaXRDb3VudGVyIH0gZnJvbSAnLi4vdXRpbHMvbWV0cmljLWVtaXR0ZXIuanMnO1xuaW1wb3J0IHsgZXJyb3JNZXNzYWdlIH0gZnJvbSAnLi4vdXRpbHMvcmVzcG9uc2UuanMnO1xuaW1wb3J0IHsgc2VydmljZUVuZHBvaW50IH0gZnJvbSAnLi4vdXRpbHMvc2VydmljZS1yZWdpc3RyeS5qcyc7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcignYXBpLWtleS1leGNoYW5nZScpO1xuXG4vKiogTW9zdCBkaXN0aW5jdCBrZXlzIGhlbGQgaW4gdGhlIHByb2Nlc3Mtd2lkZSBjYWNoZSBiZWZvcmUgdGhlIG9sZGVzdCBhcmUgZHJvcHBlZC4gKi9cbmNvbnN0IE1BWF9DQUNIRURfS0VZUyA9IDEwMDA7XG5cbi8qKiBIb3cgbG9uZyBhIHBsYXRmb3JtIFJFSkVDVElPTiBpcyByZW1lbWJlcmVkIChtcykuICovXG5jb25zdCBORUdBVElWRV9UVExfTVMgPSAzMF8wMDA7XG5cbi8qKiBGcmFjdGlvbiBvZiBhIHRva2VuJ3MgbGlmZSBhZnRlciB3aGljaCBhIGJhY2tncm91bmQgcmUtZXhjaGFuZ2UgaXMgc3RhcnRlZC4gKi9cbmNvbnN0IFJFRlJFU0hfQVRfRlJBQ1RJT04gPSAwLjc1O1xuXG4vKiogwrEgaml0dGVyIGFwcGxpZWQgdG8gdGhlIHJlZnJlc2ggcG9pbnQsIGFzIGEgZnJhY3Rpb24gb2YgdGhlIHRva2VuJ3MgbGlmZS5cbiAqICBXaWRlIGVub3VnaCB0byBkZS1zeW5jaHJvbml6ZSBhIGZsZWV0LCBuYXJyb3cgZW5vdWdoIHRvIGxlYXZlIGEgY2xlYXIgdGFpbCBvZlxuICogIHN0aWxsLXZhbGlkIHRva2VuIGFmdGVyIHRoZSBsYXRlc3QgcG9zc2libGUgcmVmcmVzaC4gKi9cbmNvbnN0IFJFRlJFU0hfSklUVEVSX0ZSQUNUSU9OID0gMC4xO1xuXG4vKiogVGhlIGtleSB3YXMgcHJlc2VudGVkIHRvIHBsYXRmb3JtIGFuZCByZWZ1c2VkICh1bmtub3duLCByZXZva2VkLCBleHBpcmVkKS4gKi9cbmV4cG9ydCBjbGFzcyBBcGlLZXlSZWplY3RlZEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlID0gJ0FjY2VzcyBrZXkgaXMgaW52YWxpZCwgcmV2b2tlZCBvciBleHBpcmVkJykge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9ICdBcGlLZXlSZWplY3RlZEVycm9yJztcbiAgfVxufVxuXG4vKiogUGxhdGZvcm0gY291bGQgbm90IGJlIHJlYWNoZWQgKG9yIGFuc3dlcmVkIDV4eCkg4oCUIHRoZSBrZXkncyB2YWxpZGl0eSBpcyB1bmtub3duLiAqL1xuZXhwb3J0IGNsYXNzIEFwaUtleUV4Y2hhbmdlVW5hdmFpbGFibGVFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZSA9ICdBY2Nlc3Mta2V5IHZlcmlmaWNhdGlvbiBpcyB0ZW1wb3JhcmlseSB1bmF2YWlsYWJsZScpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICB0aGlzLm5hbWUgPSAnQXBpS2V5RXhjaGFuZ2VVbmF2YWlsYWJsZUVycm9yJztcbiAgfVxufVxuXG5pbnRlcmZhY2UgQ2FjaGVFbnRyeSB7XG4gIC8qKiBUaGUgZXhjaGFuZ2VkIEpXVC4gKi9cbiAgdG9rZW46IHN0cmluZztcbiAgLyoqIEVwb2NoIG1zIGF0IHdoaWNoIHRoZSBKV1Qgc3RvcHMgYmVpbmcgdXNhYmxlLiAqL1xuICBleHBpcmVzQXQ6IG51bWJlcjtcbiAgLyoqIEVwb2NoIG1zIGFmdGVyIHdoaWNoIGEgYmFja2dyb3VuZCByZS1leGNoYW5nZSBzaG91bGQgYmUgc3RhcnRlZC4gKi9cbiAgcmVmcmVzaEF0OiBudW1iZXI7XG59XG5cbi8qKiBDYWNoZSBvZiBzdWNjZXNzZnVsIGV4Y2hhbmdlcywga2V5ZWQgYnkgYHNoYTI1NihrZXkpYCDigJQgbmV2ZXIgYnkgdGhlIGtleSBpdHNlbGYuICovXG5jb25zdCB0b2tlbkNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIENhY2hlRW50cnk+KCk7XG4vKiogQ2FjaGUgb2YgcmVqZWN0aW9ucywga2V5ZWQgdGhlIHNhbWUgd2F5OyB2YWx1ZSBpcyB0aGUgZXBvY2ggbXMgaXQgZXhwaXJlcy4gKi9cbmNvbnN0IHJlamVjdGlvbkNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcbi8qKiBJbi1mbGlnaHQgZXhjaGFuZ2VzLCBzbyBjb25jdXJyZW50IHJlcXVlc3RzIGZvciBvbmUga2V5IHNoYXJlIGEgcm91bmQtdHJpcC4gKi9cbmNvbnN0IGluRmxpZ2h0ID0gbmV3IE1hcDxzdHJpbmcsIFByb21pc2U8Q2FjaGVFbnRyeT4+KCk7XG5cbi8qKiBUaGUgc2VydmljZSBuYW1lIG1pbnRlZCBpbnRvIHRoZSBleGNoYW5nZSBjYWxsJ3Mgb3duIHNlcnZpY2UgdG9rZW4uICovXG5sZXQgc2VydmljZU5hbWUgPSBwcm9jZXNzLmVudi5TRVJWSUNFX05BTUUgfHwgJ3Vua25vd24nO1xuXG4vKipcbiAqIE5hbWUgdGhpcyBwcm9jZXNzIGluIHRoZSBleGNoYW5nZSBjYWxsJ3Mgc2VydmljZSB0b2tlbi4gQ2FsbGVkIGZyb21cbiAqIGB3aXJlU2VydmljZVNlY3VyaXR5YCBhdCBib290IChhbmQgYnkgdGhlIHBsdWdpbiBzZXJ2aWNlLCB3aGljaCB3aXJlcyBpdHNcbiAqIGJvb3Qgc2VjdXJpdHkgYnkgaGFuZCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRBcGlLZXlFeGNoYW5nZVNlcnZpY2VOYW1lKG5hbWU6IHN0cmluZyk6IHZvaWQge1xuICBzZXJ2aWNlTmFtZSA9IG5hbWU7XG59XG5cbi8qKiBQbGF0Zm9ybSdzIGluLWNsdXN0ZXIgYWRkcmVzcyDigJQgdGhlIHNhbWUgZW52IHBhaXIgZXZlcnkgb3RoZXIgY2FsbGVyIHVzZXMuICovXG5mdW5jdGlvbiBwbGF0Zm9ybUNsaWVudCgpOiBJbnRlcm5hbEh0dHBDbGllbnQge1xuICByZXR1cm4gbmV3IEludGVybmFsSHR0cENsaWVudCh7XG4gICAgLi4uc2VydmljZUVuZHBvaW50KCdwbGF0Zm9ybScpLFxuICAgIHRpbWVvdXQ6IGVudkludCgnQVBJX0tFWV9FWENIQU5HRV9USU1FT1VUX01TJywgMzAwMCwgeyBtaW46IDEgfSksXG4gIH0pO1xufVxuXG4vKiogVGhlIGVwb2NoIG1zIGF0IHdoaWNoIGEgdG9rZW4gd2l0aCBgdHRsU2Vjb25kc2Agb2YgbGlmZSBzaG91bGQgYmUgcmVmcmVzaGVkIGVhcmx5LiAqL1xuZnVuY3Rpb24gaml0dGVyZWRSZWZyZXNoQXQoaXNzdWVkQXQ6IG51bWJlciwgdHRsU2Vjb25kczogbnVtYmVyKTogbnVtYmVyIHtcbiAgY29uc3QgbGlmZU1zID0gdHRsU2Vjb25kcyAqIDEwMDA7XG4gIGNvbnN0IGppdHRlciA9IChNYXRoLnJhbmRvbSgpICogMiAtIDEpICogUkVGUkVTSF9KSVRURVJfRlJBQ1RJT047XG4gIC8vIENsYW1wIGludG8gKDAsIDEpIHNvIHRoZSByZWZyZXNoIHBvaW50IGlzIGFsd2F5cyBiZWZvcmUgZXhwaXJ5IGFuZCBuZXZlciBpblxuICAvLyB0aGUgcGFzdCwgd2hhdGV2ZXIgVFRMIHBsYXRmb3JtIHJldHVybnMuXG4gIGNvbnN0IGZyYWN0aW9uID0gTWF0aC5taW4oMC45NSwgTWF0aC5tYXgoMC4xLCBSRUZSRVNIX0FUX0ZSQUNUSU9OICsgaml0dGVyKSk7XG4gIHJldHVybiBpc3N1ZWRBdCArIGxpZmVNcyAqIGZyYWN0aW9uO1xufVxuXG4vKiogRHJvcCB0aGUgb2xkZXN0IGVudHJpZXMgb25jZSB0aGUgY2FjaGUgaXMgb3ZlciBpdHMgY2FwIChrZXlzIGFyZSBsb25nLWxpdmVkLCB0b2tlbnMgYXJlIG5vdCkuICovXG5mdW5jdGlvbiBldmljdElmRnVsbCgpOiB2b2lkIHtcbiAgaWYgKHRva2VuQ2FjaGUuc2l6ZSA8PSBNQVhfQ0FDSEVEX0tFWVMpIHJldHVybjtcbiAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgZm9yIChjb25zdCBbaGFzaCwgZW50cnldIG9mIHRva2VuQ2FjaGUpIHtcbiAgICBpZiAoZW50cnkuZXhwaXJlc0F0IDw9IG5vdykgdG9rZW5DYWNoZS5kZWxldGUoaGFzaCk7XG4gIH1cbiAgLy8gTWFwIHByZXNlcnZlcyBpbnNlcnRpb24gb3JkZXIg4oCUIGRyb3AgZnJvbSB0aGUgZnJvbnQgdW50aWwgYmFjayB1bmRlciB0aGUgY2FwLlxuICB3aGlsZSAodG9rZW5DYWNoZS5zaXplID4gTUFYX0NBQ0hFRF9LRVlTKSB7XG4gICAgY29uc3Qgb2xkZXN0ID0gdG9rZW5DYWNoZS5rZXlzKCkubmV4dCgpO1xuICAgIGlmIChvbGRlc3QuZG9uZSkgYnJlYWs7XG4gICAgdG9rZW5DYWNoZS5kZWxldGUob2xkZXN0LnZhbHVlKTtcbiAgfVxufVxuXG5pbnRlcmZhY2UgRXhjaGFuZ2VSZXNwb25zZSB7XG4gIHN1Y2Nlc3M/OiBib29sZWFuO1xuICBkYXRhPzogeyBhY2Nlc3NUb2tlbj86IHN0cmluZzsgZXhwaXJlc0luPzogbnVtYmVyIH07XG59XG5cbi8qKiBPbmUgcmVhbCByb3VuZC10cmlwIHRvIHBsYXRmb3JtLiBUaHJvd3MgdGhlIHR3byB0eXBlZCBlcnJvcnMgYWJvdmUuICovXG5hc3luYyBmdW5jdGlvbiBwZXJmb3JtRXhjaGFuZ2Uoa2V5OiBzdHJpbmcsIGhhc2g6IHN0cmluZyk6IFByb21pc2U8Q2FjaGVFbnRyeT4ge1xuICBjb25zdCBjbGllbnQgPSBwbGF0Zm9ybUNsaWVudCgpO1xuICBsZXQgc3RhdHVzOiBudW1iZXI7XG4gIGxldCBib2R5OiBFeGNoYW5nZVJlc3BvbnNlO1xuICB0cnkge1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IGNsaWVudC5wb3N0PEV4Y2hhbmdlUmVzcG9uc2U+KCcvYXV0aC90b2tlbi9leGNoYW5nZScsIHsga2V5IH0sIHtcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgQXV0aG9yaXphdGlvbjogZ2V0U2VydmljZUF1dGhIZWFkZXIoeyBzZXJ2aWNlTmFtZSwgcm9sZTogJ21lbWJlcicsIG9yZ0lkOiBTWVNURU1fT1JHX0lEIH0pLFxuICAgICAgfSxcbiAgICAgIC8vIFRoZSBleGNoYW5nZSBpcyBhIHB1cmUgcmVhZCBvZiB0aGUga2V5IHJlY29yZCBwbHVzIGEgdG9rZW4gbWludCDigJQgc2FmZSB0b1xuICAgICAgLy8gcmV0cnksIGFuZCBhIGxvc3QgcmV0cnkgb25seSBjb3N0cyBvbmUgZXh0cmEgbWludC5cbiAgICAgIGlkZW1wb3RlbnQ6IHRydWUsXG4gICAgfSk7XG4gICAgc3RhdHVzID0gcmVzLnN0YXR1c0NvZGU7XG4gICAgYm9keSA9IHJlcy5ib2R5O1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBlbWl0Q291bnRlcignYXBpX2tleV9leGNoYW5nZV90b3RhbCcsIHsgcmVzdWx0OiAndW5hdmFpbGFibGUnIH0pO1xuICAgIGVtaXRDb3VudGVyKCdhcGlfa2V5X2V4Y2hhbmdlX2ZhaWx1cmVzX3RvdGFsJywgeyByZWFzb246ICd1bmF2YWlsYWJsZScgfSk7XG4gICAgbG9nZ2VyLndhcm4oJ0FjY2Vzcy1rZXkgZXhjaGFuZ2UgZmFpbGVkIHRvIHJlYWNoIHBsYXRmb3JtJywge1xuICAgICAgZXJyb3I6IGVycm9yTWVzc2FnZShlcnIpLFxuICAgIH0pO1xuICAgIHRocm93IG5ldyBBcGlLZXlFeGNoYW5nZVVuYXZhaWxhYmxlRXJyb3IoKTtcbiAgfVxuXG4gIGlmIChzdGF0dXMgPT09IDQwMSB8fCBzdGF0dXMgPT09IDQwMyB8fCBzdGF0dXMgPT09IDQwMCB8fCBzdGF0dXMgPT09IDQwNCkge1xuICAgIHJlamVjdGlvbkNhY2hlLnNldChoYXNoLCBEYXRlLm5vdygpICsgTkVHQVRJVkVfVFRMX01TKTtcbiAgICBlbWl0Q291bnRlcignYXBpX2tleV9leGNoYW5nZV90b3RhbCcsIHsgcmVzdWx0OiAncmVqZWN0ZWQnIH0pO1xuICAgIGVtaXRDb3VudGVyKCdhcGlfa2V5X2V4Y2hhbmdlX2ZhaWx1cmVzX3RvdGFsJywgeyByZWFzb246ICdyZWplY3RlZCcgfSk7XG4gICAgdGhyb3cgbmV3IEFwaUtleVJlamVjdGVkRXJyb3IoKTtcbiAgfVxuXG4gIGNvbnN0IGFjY2Vzc1Rva2VuID0gYm9keT8uZGF0YT8uYWNjZXNzVG9rZW47XG4gIGlmIChzdGF0dXMgPj0gNDAwIHx8IHR5cGVvZiBhY2Nlc3NUb2tlbiAhPT0gJ3N0cmluZycgfHwgYWNjZXNzVG9rZW4ubGVuZ3RoID09PSAwKSB7XG4gICAgLy8gNDI5IGFuZCA1eHggbGFuZCBoZXJlOiBwbGF0Zm9ybSBpcyB1cCBidXQgY2FuJ3QgYW5zd2VyIHJpZ2h0IG5vdywgd2hpY2ggaXNcbiAgICAvLyBcInVua25vd25cIiwgbm90IFwiaW52YWxpZFwiIOKAlCBuZXZlciBjYWNoZSBpdCBhcyBhIHJlamVjdGlvbi5cbiAgICBlbWl0Q291bnRlcignYXBpX2tleV9leGNoYW5nZV90b3RhbCcsIHsgcmVzdWx0OiAndW5hdmFpbGFibGUnIH0pO1xuICAgIGVtaXRDb3VudGVyKCdhcGlfa2V5X2V4Y2hhbmdlX2ZhaWx1cmVzX3RvdGFsJywgeyByZWFzb246IHN0YXR1cyA9PT0gNDI5ID8gJ3Rocm90dGxlZCcgOiAnc2VydmVyX2Vycm9yJyB9KTtcbiAgICB0aHJvdyBuZXcgQXBpS2V5RXhjaGFuZ2VVbmF2YWlsYWJsZUVycm9yKCk7XG4gIH1cblxuICBjb25zdCB0dGxTZWNvbmRzID0gdHlwZW9mIGJvZHk/LmRhdGE/LmV4cGlyZXNJbiA9PT0gJ251bWJlcicgJiYgYm9keS5kYXRhLmV4cGlyZXNJbiA+IDBcbiAgICA/IGJvZHkuZGF0YS5leHBpcmVzSW5cbiAgICA6IDYwO1xuICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICBjb25zdCBlbnRyeTogQ2FjaGVFbnRyeSA9IHtcbiAgICB0b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgZXhwaXJlc0F0OiBub3cgKyB0dGxTZWNvbmRzICogMTAwMCxcbiAgICByZWZyZXNoQXQ6IGppdHRlcmVkUmVmcmVzaEF0KG5vdywgdHRsU2Vjb25kcyksXG4gIH07XG4gIHRva2VuQ2FjaGUuc2V0KGhhc2gsIGVudHJ5KTtcbiAgcmVqZWN0aW9uQ2FjaGUuZGVsZXRlKGhhc2gpO1xuICBldmljdElmRnVsbCgpO1xuICBlbWl0Q291bnRlcignYXBpX2tleV9leGNoYW5nZV90b3RhbCcsIHsgcmVzdWx0OiAnc3VjY2VzcycgfSk7XG4gIHJldHVybiBlbnRyeTtcbn1cblxuLyoqIEV4Y2hhbmdlLCBzaGFyaW5nIGEgc2luZ2xlIGluLWZsaWdodCByb3VuZC10cmlwIHBlciBrZXkuICovXG5mdW5jdGlvbiBleGNoYW5nZU9uY2Uoa2V5OiBzdHJpbmcsIGhhc2g6IHN0cmluZyk6IFByb21pc2U8Q2FjaGVFbnRyeT4ge1xuICBjb25zdCBwZW5kaW5nID0gaW5GbGlnaHQuZ2V0KGhhc2gpO1xuICBpZiAocGVuZGluZykgcmV0dXJuIHBlbmRpbmc7XG4gIGNvbnN0IHByb21pc2UgPSBwZXJmb3JtRXhjaGFuZ2Uoa2V5LCBoYXNoKS5maW5hbGx5KCgpID0+IGluRmxpZ2h0LmRlbGV0ZShoYXNoKSk7XG4gIGluRmxpZ2h0LnNldChoYXNoLCBwcm9taXNlKTtcbiAgcmV0dXJuIHByb21pc2U7XG59XG5cbi8qKlxuICogVGhlIEpXVCBmb3IgYGtleWAsIGZyb20gY2FjaGUgd2hlbiBwb3NzaWJsZS4gVGhyb3dzIHtAbGluayBBcGlLZXlSZWplY3RlZEVycm9yfVxuICogd2hlbiBwbGF0Zm9ybSByZWZ1c2VkIHRoZSBrZXkgYW5kIHtAbGluayBBcGlLZXlFeGNoYW5nZVVuYXZhaWxhYmxlRXJyb3J9IHdoZW5cbiAqIGl0IGNvdWxkIG5vdCBiZSBhc2tlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4Y2hhbmdlQXBpS2V5KGtleTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgaGFzaCA9IGhhc2hBcGlLZXkoa2V5KTtcbiAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcblxuICBjb25zdCByZWplY3RlZFVudGlsID0gcmVqZWN0aW9uQ2FjaGUuZ2V0KGhhc2gpO1xuICBpZiAocmVqZWN0ZWRVbnRpbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHJlamVjdGVkVW50aWwgPiBub3cpIHtcbiAgICAgIGVtaXRDb3VudGVyKCdhcGlfa2V5X2V4Y2hhbmdlX2NhY2hlX3RvdGFsJywgeyByZXN1bHQ6ICdyZWplY3RlZCcgfSk7XG4gICAgICB0aHJvdyBuZXcgQXBpS2V5UmVqZWN0ZWRFcnJvcigpO1xuICAgIH1cbiAgICByZWplY3Rpb25DYWNoZS5kZWxldGUoaGFzaCk7XG4gIH1cblxuICBjb25zdCBjYWNoZWQgPSB0b2tlbkNhY2hlLmdldChoYXNoKTtcbiAgaWYgKGNhY2hlZCAmJiBjYWNoZWQuZXhwaXJlc0F0ID4gbm93KSB7XG4gICAgaWYgKGNhY2hlZC5yZWZyZXNoQXQgPD0gbm93ICYmICFpbkZsaWdodC5oYXMoaGFzaCkpIHtcbiAgICAgIC8vIEVhcmx5IHJlZnJlc2g6IHdhcm0gdGhlIGNhY2hlIFdJVEhPVVQgbWFraW5nIHRoaXMgcmVxdWVzdCB3YWl0LiBBIGZhaWxlZFxuICAgICAgLy8gYmFja2dyb3VuZCByZWZyZXNoIGlzIG5vdCB0aGlzIHJlcXVlc3QncyBwcm9ibGVtIOKAlCB0aGUgY2FjaGVkIHRva2VuIGlzXG4gICAgICAvLyBzdGlsbCB2YWxpZCwgYW5kIHRoZSBuZXh0IHJlcXVlc3QgcGFzdCBleHBpcnkgZXhjaGFuZ2VzIGlubGluZS5cbiAgICAgIGVtaXRDb3VudGVyKCdhcGlfa2V5X2V4Y2hhbmdlX2NhY2hlX3RvdGFsJywgeyByZXN1bHQ6ICdyZWZyZXNoJyB9KTtcbiAgICAgIHZvaWQgZXhjaGFuZ2VPbmNlKGtleSwgaGFzaCkuY2F0Y2goKCkgPT4geyAvKiBsb2dnZWQgKyBjb3VudGVkIGluIHBlcmZvcm1FeGNoYW5nZSAqLyB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZW1pdENvdW50ZXIoJ2FwaV9rZXlfZXhjaGFuZ2VfY2FjaGVfdG90YWwnLCB7IHJlc3VsdDogJ2hpdCcgfSk7XG4gICAgfVxuICAgIHJldHVybiBjYWNoZWQudG9rZW47XG4gIH1cblxuICBlbWl0Q291bnRlcignYXBpX2tleV9leGNoYW5nZV9jYWNoZV90b3RhbCcsIHsgcmVzdWx0OiAnbWlzcycgfSk7XG4gIHJldHVybiAoYXdhaXQgZXhjaGFuZ2VPbmNlKGtleSwgaGFzaCkpLnRva2VuO1xufVxuXG4vKipcbiAqIERyb3AgZXZlcnkgY2FjaGVkIGV4Y2hhbmdlLiBGb3IgdGVzdHMgYW5kIGZvciBhIHByb2Nlc3MgdGhhdCB3YW50cyB0byBmb3JjZVxuICogcmUtdmFsaWRhdGlvbjsgcHJvZHVjdGlvbiByZWxpZXMgb24gdGhlIFRUTHMgYWJvdmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNldEFwaUtleUV4Y2hhbmdlQ2FjaGUoKTogdm9pZCB7XG4gIHRva2VuQ2FjaGUuY2xlYXIoKTtcbiAgcmVqZWN0aW9uQ2FjaGUuY2xlYXIoKTtcbiAgaW5GbGlnaHQuY2xlYXIoKTtcbn1cbiJdfQ==
|
|
222
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWtleS1leGNoYW5nZS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL2FwaS1rZXktZXhjaGFuZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOEJHO0FBRUgsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzVELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRS9ELE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBRWhELHVGQUF1RjtBQUN2RixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUM7QUFFN0Isd0RBQXdEO0FBQ3hELE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQztBQUUvQixrRkFBa0Y7QUFDbEYsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUM7QUFFakM7OzJEQUUyRDtBQUMzRCxNQUFNLHVCQUF1QixHQUFHLEdBQUcsQ0FBQztBQUVwQyxpRkFBaUY7QUFDakYsTUFBTSxPQUFPLG1CQUFvQixTQUFRLEtBQUs7SUFDNUMsWUFBWSxPQUFPLEdBQUcsMkNBQTJDO1FBQy9ELEtBQUssQ0FBQyxPQUFPLENB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QU0sQ0FBQyxTQUFTLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFDckMsSUFBSSxNQUFNLENBQUMsU0FBUyxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNuRCwyRUFBMkU7WUFDM0UseUVBQXlFO1lBQ3pFLGtFQUFrRTtZQUNsRSxXQUFXLENBQUMsOEJBQThCLEVBQUUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztZQUNuRSxLQUFLLFlBQVksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUE2QyxDQUFDLENBQUMsQ0FBQztRQUMxRixDQUFDO2FBQU0sQ0FBQztZQUNOLFdBQVcsQ0FBQyw4QkFBOEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUVELFdBQVcsQ0FBQyw4QkFBOEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLE9BQU8sQ0FBQyxNQUFNLFlBQVksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDL0MsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSx3QkFBd0I7SUFDdEMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ25CLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN2QixRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFRyYWRlIGFuIG9wYXF1ZSBhY2Nlc3Mga2V5IGZvciBhIHNob3J0LWxpdmVkIEpXVCwgb25jZSwgYW5kIGNhY2hlIGl0LlxuICpcbiAqIE9ubHkgcGxhdGZvcm0sIGJpbGxpbmcgYW5kIHF1b3RhIGhhdmUgTW9uZ29EQiwgc28gdGhlIHN0YXRlbGVzcyBzZXJ2aWNlc1xuICogY2Fubm90IGxvb2sgdXAgYSBrZXkgaGFzaCDigJQgYW5kIGFza2luZyBwbGF0Zm9ybSB0byB2YWxpZGF0ZSBFVkVSWSByZXF1ZXN0XG4gKiB3b3VsZCBwdXQgaXQgb24gdGhlIGhvdCBwYXRoIG9mIHRoZSB3aG9sZSBmbGVldC4gSW5zdGVhZCB0aGlzIG1vZHVsZSBkb2VzIHRoZVxuICogZXhjaGFuZ2Ugb25jZSBwZXIga2V5IChgUE9TVCAvYXV0aC90b2tlbi9leGNoYW5nZWApIGFuZCBjYWNoZXMgdGhlIHJldHVybmVkXG4gKiBKV1QgaW4tcHJvY2VzcyB1bnRpbCBpdCBleHBpcmVzLCBzbyBgcmVxdWlyZUF1dGhgIG9ubHkgZXZlciB2ZXJpZmllcyBhIEpXVC5cbiAqXG4gKiBQcm9wZXJ0aWVzIHRoYXQgbWF0dGVyOlxuICpcbiAqIC0gKipSZXZvY2F0aW9uIGxhdGVuY3kgaXMgYm91bmRlZCBieSB0aGUgdG9rZW4gVFRMKiogKDUgbWludXRlcykuIEEgcmV2b2tlZFxuICogICBrZXkgY2FuIG5vIGxvbmdlciBiZSBleGNoYW5nZWQsIGFuZCB0aGUgY2FjaGVkIHRva2VuIGl0IGFscmVhZHkgcHJvZHVjZWRcbiAqICAgZGllcyBvbiBpdHMgb3duLlxuICogLSAqKkVhcmx5LCBqaXR0ZXJlZCByZWZyZXNoLioqIFRoZSBjYWNoZWQgdG9rZW4gaXMgcmUtZXhjaGFuZ2VkIGluIHRoZVxuICogICBiYWNrZ3JvdW5kIGF0IH43NSUgb2YgaXRzIGxpZmUgKMKxMjAlIGppdHRlcikgc28gbm8gcmVxdWVzdCBldmVyIGJsb2NrcyBvblxuICogICB0aGUgZXhjaGFuZ2UsIGFuZCBhIGZsZWV0IG9mIHBvZHMgaG9sZGluZyB0aGUgc2FtZSBrZXkgZG9lc24ndCBzdGFtcGVkZVxuICogICBwbGF0Zm9ybSBhdCB0aGUgc2FtZSBpbnN0YW50LlxuICogLSAqKk9uZSBpbi1mbGlnaHQgZXhjaGFuZ2UgcGVyIGtleS4qKiBDb25jdXJyZW50IHJlcXVlc3RzIHNoYXJlIGEgcHJvbWlzZS5cbiAqIC0gKipTaG9ydCBuZWdhdGl2ZSBjYWNoZS4qKiBBIGtleSBwbGF0Zm9ybSByZWplY3RlZCBpcyByZW1lbWJlcmVkIGZvciAzMHMsIHNvXG4gKiAgIGEgbWlzY29uZmlndXJlZCBjbGllbnQgKG9yIGEgc2Nhbm5lcikgY2FuJ3QgdHVybiBldmVyeSByZXF1ZXN0IGludG8gYVxuICogICBwbGF0Zm9ybSByb3VuZC10cmlwLlxuICogLSAqKlBsYXRmb3JtIGRvd24gaXMgYSA1MDMsIG5ldmVyIGEgMjAwLioqIFRoZSBjYWxsZXIgbWFwc1xuICogICB7QGxpbmsgQXBpS2V5RXhjaGFuZ2VVbmF2YWlsYWJsZUVycm9yfSB0byBcInRyeSBhZ2FpblwiLCB3aXRoIGEgbWV0cmljIOKAlCBpdCBpc1xuICogICBkZWxpYmVyYXRlbHkgTk9UIGZhaWwtb3BlbjogYW4gdW52ZXJpZmlhYmxlIGNyZWRlbnRpYWwgaXMgbm90IGFuIGlkZW50aXR5LlxuICpcbiAqIFRoZSBleGNoYW5nZSByZXF1ZXN0IGl0c2VsZiBjYXJyaWVzIHRoaXMgc2VydmljZSdzIG93biBzaWduZWQgc2VydmljZSB0b2tlbixcbiAqIHdoaWNoIGlzIHdoYXQgZXhlbXB0cyBpdCBmcm9tIHBsYXRmb3JtJ3MgSVAta2V5ZWQgYC9hdXRoYCByYXRlIGxpbWl0ZXIgKGV2ZXJ5XG4gKiBwb2QncyBleGNoYW5nZXMgd291bGQgb3RoZXJ3aXNlIHNoYXJlIG9uZSBidWNrZXQpIGFuZCBuYW1lcyB0aGUgY2FsbGVyIGluXG4gKiBwbGF0Zm9ybSdzIGF1ZGl0IHRyYWlsLlxuICovXG5cbmltcG9ydCB7IGdldFNlcnZpY2VBdXRoSGVhZGVyIH0gZnJvbSAnLi4vbWlkZGxld2FyZS9zZXJ2aWNlLXRva2Vucy5qcyc7XG5pbXBvcnQgeyBTWVNURU1fT1JHX0lEIH0gZnJvbSAnLi4vbWlkZGxld2FyZS9zeXN0ZW0tb3JnLmpzJztcbmltcG9ydCB7IEludGVybmFsSHR0cENsaWVudCB9IGZyb20gJy4uL3NlcnZpY2VzL2h0dHAtY2xpZW50LmpzJztcbmltcG9ydCB7IGhhc2hBcGlLZXkgfSBmcm9tICcuLi91dGlscy9hcGkta2V5LmpzJztcbmltcG9ydCB7IGVudkludCB9IGZyb20gJy4uL3V0aWxzL2Vudi5qcyc7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tICcuLi91dGlscy9sb2dnZXIuanMnO1xuaW1wb3J0IHsgZW1pdENvdW50ZXIgfSBmcm9tICcuLi91dGlscy9tZXRyaWMtZW1pdHRlci5qcyc7XG5pbXBvcnQgeyBlcnJvck1lc3NhZ2UgfSBmcm9tICcuLi91dGlscy9yZXNwb25zZS5qcyc7XG5pbXBvcnQgeyBzZXJ2aWNlRW5kcG9pbnQgfSBmcm9tICcuLi91dGlscy9zZXJ2aWNlLXJlZ2lzdHJ5LmpzJztcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKCdhcGkta2V5LWV4Y2hhbmdlJyk7XG5cbi8qKiBNb3N0IGRpc3RpbmN0IGtleXMgaGVsZCBpbiB0aGUgcHJvY2Vzcy13aWRlIGNhY2hlIGJlZm9yZSB0aGUgb2xkZXN0IGFyZSBkcm9wcGVkLiAqL1xuY29uc3QgTUFYX0NBQ0hFRF9LRVlTID0gMTAwMDtcblxuLyoqIEhvdyBsb25nIGEgcGxhdGZvcm0gUkVKRUNUSU9OIGlzIHJlbWVtYmVyZWQgKG1zKS4gKi9cbmNvbnN0IE5FR0FUSVZFX1RUTF9NUyA9IDMwXzAwMDtcblxuLyoqIEZyYWN0aW9uIG9mIGEgdG9rZW4ncyBsaWZlIGFmdGVyIHdoaWNoIGEgYmFja2dyb3VuZCByZS1leGNoYW5nZSBpcyBzdGFydGVkLiAqL1xuY29uc3QgUkVGUkVTSF9BVF9GUkFDVElPTiA9IDAuNzU7XG5cbi8qKiDCsSBqaXR0ZXIgYXBwbGllZCB0byB0aGUgcmVmcmVzaCBwb2ludCwgYXMgYSBmcmFjdGlvbiBvZiB0aGUgdG9rZW4ncyBsaWZlLlxuICogIFdpZGUgZW5vdWdoIHRvIGRlLXN5bmNocm9uaXplIGEgZmxlZXQsIG5hcnJvdyBlbm91Z2ggdG8gbGVhdmUgYSBjbGVhciB0YWlsIG9mXG4gKiAgc3RpbGwtdmFsaWQgdG9rZW4gYWZ0ZXIgdGhlIGxhdGVzdCBwb3NzaWJsZSByZWZyZXNoLiAqL1xuY29uc3QgUkVGUkVTSF9KSVRURVJfRlJBQ1RJT04gPSAwLjE7XG5cbi8qKiBUaGUga2V5IHdhcyBwcmVzZW50ZWQgdG8gcGxhdGZvcm0gYW5kIHJlZnVzZWQgKHVua25vd24sIHJldm9rZWQsIGV4cGlyZWQpLiAqL1xuZXhwb3J0IGNsYXNzIEFwaUtleVJlamVjdGVkRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2UgPSAnQWNjZXNzIGtleSBpcyBpbnZhbGlkLCByZXZva2VkIG9yIGV4cGlyZWQnKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gJ0FwaUtleVJlamVjdGVkRXJyb3InO1xuICB9XG59XG5cbi8qKiBQbGF0Zm9ybSBjb3VsZCBub3QgYmUgcmVhY2hlZCAob3IgYW5zd2VyZWQgNXh4KSDigJQgdGhlIGtleSdzIHZhbGlkaXR5IGlzIHVua25vd24uICovXG5leHBvcnQgY2xhc3MgQXBpS2V5RXhjaGFuZ2VVbmF2YWlsYWJsZUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlID0gJ0FjY2Vzcy1rZXkgdmVyaWZpY2F0aW9uIGlzIHRlbXBvcmFyaWx5IHVuYXZhaWxhYmxlJykge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9ICdBcGlLZXlFeGNoYW5nZVVuYXZhaWxhYmxlRXJyb3InO1xuICB9XG59XG5cbmludGVyZmFjZSBDYWNoZUVudHJ5IHtcbiAgLyoqIFRoZSBleGNoYW5nZWQgSldULiAqL1xuICB0b2tlbjogc3RyaW5nO1xuICAvKiogRXBvY2ggbXMgYXQgd2hpY2ggdGhlIEpXVCBzdG9wcyBiZWluZyB1c2FibGUuICovXG4gIGV4cGlyZXNBdDogbnVtYmVyO1xuICAvKiogRXBvY2ggbXMgYWZ0ZXIgd2hpY2ggYSBiYWNrZ3JvdW5kIHJlLWV4Y2hhbmdlIHNob3VsZCBiZSBzdGFydGVkLiAqL1xuICByZWZyZXNoQXQ6IG51bWJlcjtcbn1cblxuLyoqIENhY2hlIG9mIHN1Y2Nlc3NmdWwgZXhjaGFuZ2VzLCBrZXllZCBieSBgc2hhMjU2KGtleSlgIOKAlCBuZXZlciBieSB0aGUga2V5IGl0c2VsZi4gKi9cbmNvbnN0IHRva2VuQ2FjaGUgPSBuZXcgTWFwPHN0cmluZywgQ2FjaGVFbnRyeT4oKTtcbi8qKiBDYWNoZSBvZiByZWplY3Rpb25zLCBrZXllZCB0aGUgc2FtZSB3YXk7IHZhbHVlIGlzIHRoZSBlcG9jaCBtcyBpdCBleHBpcmVzLiAqL1xuY29uc3QgcmVqZWN0aW9uQ2FjaGUgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuLyoqIEluLWZsaWdodCBleGNoYW5nZXMsIHNvIGNvbmN1cnJlbnQgcmVxdWVzdHMgZm9yIG9uZSBrZXkgc2hhcmUgYSByb3VuZC10cmlwLiAqL1xuY29uc3QgaW5GbGlnaHQgPSBuZXcgTWFwPHN0cmluZywgUHJvbWlzZTxDYWNoZUVudHJ5Pj4oKTtcblxuLyoqIFRoZSBzZXJ2aWNlIG5hbWUgbWludGVkIGludG8gdGhlIGV4Y2hhbmdlIGNhbGwncyBvd24gc2VydmljZSB0b2tlbi4gKi9cbmxldCBzZXJ2aWNlTmFtZSA9IHByb2Nlc3MuZW52LlNFUlZJQ0VfTkFNRSB8fCAndW5rbm93bic7XG5cbi8qKlxuICogTmFtZSB0aGlzIHByb2Nlc3MgaW4gdGhlIGV4Y2hhbmdlIGNhbGwncyBzZXJ2aWNlIHRva2VuLiBDYWxsZWQgZnJvbVxuICogYHdpcmVTZXJ2aWNlU2VjdXJpdHlgIGF0IGJvb3QgKGFuZCBieSB0aGUgcGx1Z2luIHNlcnZpY2UsIHdoaWNoIHdpcmVzIGl0c1xuICogYm9vdCBzZWN1cml0eSBieSBoYW5kKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldEFwaUtleUV4Y2hhbmdlU2VydmljZU5hbWUobmFtZTogc3RyaW5nKTogdm9pZCB7XG4gIHNlcnZpY2VOYW1lID0gbmFtZTtcbn1cblxuLyoqIFBsYXRmb3JtJ3MgaW4tY2x1c3RlciBhZGRyZXNzIOKAlCB0aGUgc2FtZSBlbnYgcGFpciBldmVyeSBvdGhlciBjYWxsZXIgdXNlcy4gKi9cbmZ1bmN0aW9uIHBsYXRmb3JtQ2xpZW50KCk6IEludGVybmFsSHR0cENsaWVudCB7XG4gIHJldHVybiBuZXcgSW50ZXJuYWxIdHRwQ2xpZW50KHtcbiAgICAuLi5zZXJ2aWNlRW5kcG9pbnQoJ3BsYXRmb3JtJyksXG4gICAgdGltZW91dDogZW52SW50KCdBUElfS0VZX0VYQ0hBTkdFX1RJTUVPVVRfTVMnLCAzMDAwLCB7IG1pbjogMSB9KSxcbiAgfSk7XG59XG5cbi8qKiBUaGUgZXBvY2ggbXMgYXQgd2hpY2ggYSB0b2tlbiB3aXRoIGB0dGxTZWNvbmRzYCBvZiBsaWZlIHNob3VsZCBiZSByZWZyZXNoZWQgZWFybHkuICovXG5mdW5jdGlvbiBqaXR0ZXJlZFJlZnJlc2hBdChpc3N1ZWRBdDogbnVtYmVyLCB0dGxTZWNvbmRzOiBudW1iZXIpOiBudW1iZXIge1xuICBjb25zdCBsaWZlTXMgPSB0dGxTZWNvbmRzICogMTAwMDtcbiAgY29uc3Qgaml0dGVyID0gKE1hdGgucmFuZG9tKCkgKiAyIC0gMSkgKiBSRUZSRVNIX0pJVFRFUl9GUkFDVElPTjtcbiAgLy8gQ2xhbXAgaW50byAoMCwgMSkgc28gdGhlIHJlZnJlc2ggcG9pbnQgaXMgYWx3YXlzIGJlZm9yZSBleHBpcnkgYW5kIG5ldmVyIGluXG4gIC8vIHRoZSBwYXN0LCB3aGF0ZXZlciBUVEwgcGxhdGZvcm0gcmV0dXJucy5cbiAgY29uc3QgZnJhY3Rpb24gPSBNYXRoLm1pbigwLjk1LCBNYXRoLm1heCgwLjEsIFJFRlJFU0hfQVRfRlJBQ1RJT04gKyBqaXR0ZXIpKTtcbiAgcmV0dXJuIGlzc3VlZEF0ICsgbGlmZU1zICogZnJhY3Rpb247XG59XG5cbi8qKiBEcm9wIHRoZSBvbGRlc3QgZW50cmllcyBvbmNlIHRoZSBjYWNoZSBpcyBvdmVyIGl0cyBjYXAgKGtleXMgYXJlIGxvbmctbGl2ZWQsIHRva2VucyBhcmUgbm90KS4gKi9cbmZ1bmN0aW9uIGV2aWN0SWZGdWxsKCk6IHZvaWQge1xuICBpZiAodG9rZW5DYWNoZS5zaXplIDw9IE1BWF9DQUNIRURfS0VZUykgcmV0dXJuO1xuICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICBmb3IgKGNvbnN0IFtoYXNoLCBlbnRyeV0gb2YgdG9rZW5DYWNoZSkge1xuICAgIGlmIChlbnRyeS5leHBpcmVzQXQgPD0gbm93KSB0b2tlbkNhY2hlLmRlbGV0ZShoYXNoKTtcbiAgfVxuICAvLyBNYXAgcHJlc2VydmVzIGluc2VydGlvbiBvcmRlciDigJQgZHJvcCBmcm9tIHRoZSBmcm9udCB1bnRpbCBiYWNrIHVuZGVyIHRoZSBjYXAuXG4gIHdoaWxlICh0b2tlbkNhY2hlLnNpemUgPiBNQVhfQ0FDSEVEX0tFWVMpIHtcbiAgICBjb25zdCBvbGRlc3QgPSB0b2tlbkNhY2hlLmtleXMoKS5uZXh0KCk7XG4gICAgaWYgKG9sZGVzdC5kb25lKSBicmVhaztcbiAgICB0b2tlbkNhY2hlLmRlbGV0ZShvbGRlc3QudmFsdWUpO1xuICB9XG59XG5cbmludGVyZmFjZSBFeGNoYW5nZVJlc3BvbnNlIHtcbiAgc3VjY2Vzcz86IGJvb2xlYW47XG4gIGRhdGE/OiB7IGFjY2Vzc1Rva2VuPzogc3RyaW5nOyBleHBpcmVzSW4/OiBudW1iZXIgfTtcbn1cblxuLyoqIE9uZSByZWFsIHJvdW5kLXRyaXAgdG8gcGxhdGZvcm0uIFRocm93cyB0aGUgdHdvIHR5cGVkIGVycm9ycyBhYm92ZS4gKi9cbmFzeW5jIGZ1bmN0aW9uIHBlcmZvcm1FeGNoYW5nZShrZXk6IHN0cmluZywgaGFzaDogc3RyaW5nKTogUHJvbWlzZTxDYWNoZUVudHJ5PiB7XG4gIGNvbnN0IGNsaWVudCA9IHBsYXRmb3JtQ2xpZW50KCk7XG4gIGxldCBzdGF0dXM6IG51bWJlcjtcbiAgbGV0IGJvZHk6IEV4Y2hhbmdlUmVzcG9uc2U7XG4gIHRyeSB7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgY2xpZW50LnBvc3Q8RXhjaGFuZ2VSZXNwb25zZT4oJy9hdXRoL3Rva2VuL2V4Y2hhbmdlJywgeyBrZXkgfSwge1xuICAgICAgaGVhZGVyczoge1xuICAgICAgICBBdXRob3JpemF0aW9uOiBnZXRTZXJ2aWNlQXV0aEhlYWRlcih7IHNlcnZpY2VOYW1lLCByb2xlOiAnbWVtYmVyJywgb3JnSWQ6IFNZU1RFTV9PUkdfSUQgfSksXG4gICAgICB9LFxuICAgICAgLy8gVGhlIGV4Y2hhbmdlIGlzIGEgcHVyZSByZWFkIG9mIHRoZSBrZXkgcmVjb3JkIHBsdXMgYSB0b2tlbiBtaW50IOKAlCBzYWZlIHRvXG4gICAgICAvLyByZXRyeSwgYW5kIGEgbG9zdCByZXRyeSBvbmx5IGNvc3RzIG9uZSBleHRyYSBtaW50LlxuICAgICAgaWRlbXBvdGVudDogdHJ1ZSxcbiAgICB9KTtcbiAgICBzdGF0dXMgPSByZXMuc3RhdHVzQ29kZTtcbiAgICBib2R5ID0gcmVzLmJvZHk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGVtaXRDb3VudGVyKCdhcGlfa2V5X2V4Y2hhbmdlX3RvdGFsJywgeyByZXN1bHQ6ICd1bmF2YWlsYWJsZScgfSk7XG4gICAgZW1pdENvdW50ZXIoJ2FwaV9rZXlfZXhjaGFuZ2VfZmFpbHVyZXNfdG90YWwnLCB7IHJlYXNvbjogJ3VuYXZhaWxhYmxlJyB9KTtcbiAgICBsb2dnZXIud2FybignQWNjZXNzLWtleSBleGNoYW5nZSBmYWlsZWQgdG8gcmVhY2ggcGxhdGZvcm0nLCB7XG4gICAgICBlcnJvcjogZXJyb3JNZXNzYWdlKGVyciksXG4gICAgfSk7XG4gICAgdGhyb3cgbmV3IEFwaUtleUV4Y2hhbmdlVW5hdmFpbGFibGVFcnJvcigpO1xuICB9XG5cbiAgaWYgKHN0YXR1cyA9PT0gNDAxIHx8IHN0YXR1cyA9PT0gNDAzIHx8IHN0YXR1cyA9PT0gNDAwIHx8IHN0YXR1cyA9PT0gNDA0KSB7XG4gICAgcmVqZWN0aW9uQ2FjaGUuc2V0KGhhc2gsIERhdGUubm93KCkgKyBORUdBVElWRV9UVExfTVMpO1xuICAgIGVtaXRDb3VudGVyKCdhcGlfa2V5X2V4Y2hhbmdlX3RvdGFsJywgeyByZXN1bHQ6ICdyZWplY3RlZCcgfSk7XG4gICAgZW1pdENvdW50ZXIoJ2FwaV9rZXlfZXhjaGFuZ2VfZmFpbHVyZXNfdG90YWwnLCB7IHJlYXNvbjogJ3JlamVjdGVkJyB9KTtcbiAgICB0aHJvdyBuZXcgQXBpS2V5UmVqZWN0ZWRFcnJvcigpO1xuICB9XG5cbiAgY29uc3QgYWNjZXNzVG9rZW4gPSBib2R5Py5kYXRhPy5hY2Nlc3NUb2tlbjtcbiAgaWYgKHN0YXR1cyA+PSA0MDAgfHwgdHlwZW9mIGFjY2Vzc1Rva2VuICE9PSAnc3RyaW5nJyB8fCBhY2Nlc3NUb2tlbi5sZW5ndGggPT09IDApIHtcbiAgICAvLyA0MjkgYW5kIDV4eCBsYW5kIGhlcmU6IHBsYXRmb3JtIGlzIHVwIGJ1dCBjYW4ndCBhbnN3ZXIgcmlnaHQgbm93LCB3aGljaCBpc1xuICAgIC8vIFwidW5rbm93blwiLCBub3QgXCJpbnZhbGlkXCIg4oCUIG5ldmVyIGNhY2hlIGl0IGFzIGEgcmVqZWN0aW9uLlxuICAgIGVtaXRDb3VudGVyKCdhcGlfa2V5X2V4Y2hhbmdlX3RvdGFsJywgeyByZXN1bHQ6ICd1bmF2YWlsYWJsZScgfSk7XG4gICAgZW1pdENvdW50ZXIoJ2FwaV9rZXlfZXhjaGFuZ2VfZmFpbHVyZXNfdG90YWwnLCB7IHJlYXNvbjogc3RhdHVzID09PSA0MjkgPyAndGhyb3R0bGVkJyA6ICdzZXJ2ZXJfZXJyb3InIH0pO1xuICAgIHRocm93IG5ldyBBcGlLZXlFeGNoYW5nZVVuYXZhaWxhYmxlRXJyb3IoKTtcbiAgfVxuXG4gIGNvbnN0IHR0bFNlY29uZHMgPSB0eXBlb2YgYm9keT8uZGF0YT8uZXhwaXJlc0luID09PSAnbnVtYmVyJyAmJiBib2R5LmRhdGEuZXhwaXJlc0luID4gMFxuICAgID8gYm9keS5kYXRhLmV4cGlyZXNJblxuICAgIDogNjA7XG4gIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gIGNvbnN0IGVudHJ5OiBDYWNoZUVudHJ5ID0ge1xuICAgIHRva2VuOiBhY2Nlc3NUb2tlbixcbiAgICBleHBpcmVzQXQ6IG5vdyArIHR0bFNlY29uZHMgKiAxMDAwLFxuICAgIHJlZnJlc2hBdDogaml0dGVyZWRSZWZyZXNoQXQobm93LCB0dGxTZWNvbmRzKSxcbiAgfTtcbiAgdG9rZW5DYWNoZS5zZXQoaGFzaCwgZW50cnkpO1xuICByZWplY3Rpb25DYWNoZS5kZWxldGUoaGFzaCk7XG4gIGV2aWN0SWZGdWxsKCk7XG4gIGVtaXRDb3VudGVyKCdhcGlfa2V5X2V4Y2hhbmdlX3RvdGFsJywgeyByZXN1bHQ6ICdzdWNjZXNzJyB9KTtcbiAgcmV0dXJuIGVudHJ5O1xufVxuXG4vKiogRXhjaGFuZ2UsIHNoYXJpbmcgYSBzaW5nbGUgaW4tZmxpZ2h0IHJvdW5kLXRyaXAgcGVyIGtleS4gKi9cbmZ1bmN0aW9uIGV4Y2hhbmdlT25jZShrZXk6IHN0cmluZywgaGFzaDogc3RyaW5nKTogUHJvbWlzZTxDYWNoZUVudHJ5PiB7XG4gIGNvbnN0IHBlbmRpbmcgPSBpbkZsaWdodC5nZXQoaGFzaCk7XG4gIGlmIChwZW5kaW5nKSByZXR1cm4gcGVuZGluZztcbiAgY29uc3QgcHJvbWlzZSA9IHBlcmZvcm1FeGNoYW5nZShrZXksIGhhc2gpLmZpbmFsbHkoKCkgPT4gaW5GbGlnaHQuZGVsZXRlKGhhc2gpKTtcbiAgaW5GbGlnaHQuc2V0KGhhc2gsIHByb21pc2UpO1xuICByZXR1cm4gcHJvbWlzZTtcbn1cblxuLyoqXG4gKiBUaGUgSldUIGZvciBga2V5YCwgZnJvbSBjYWNoZSB3aGVuIHBvc3NpYmxlLiBUaHJvd3Mge0BsaW5rIEFwaUtleVJlamVjdGVkRXJyb3J9XG4gKiB3aGVuIHBsYXRmb3JtIHJlZnVzZWQgdGhlIGtleSBhbmQge0BsaW5rIEFwaUtleUV4Y2hhbmdlVW5hdmFpbGFibGVFcnJvcn0gd2hlblxuICogaXQgY291bGQgbm90IGJlIGFza2VkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhjaGFuZ2VBcGlLZXkoa2V5OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBoYXNoID0gaGFzaEFwaUtleShrZXkpO1xuICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuXG4gIGNvbnN0IHJlamVjdGVkVW50aWwgPSByZWplY3Rpb25DYWNoZS5nZXQoaGFzaCk7XG4gIGlmIChyZWplY3RlZFVudGlsICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAocmVqZWN0ZWRVbnRpbCA+IG5vdykge1xuICAgICAgZW1pdENvdW50ZXIoJ2FwaV9rZXlfZXhjaGFuZ2VfY2FjaGVfdG90YWwnLCB7IHJlc3VsdDogJ3JlamVjdGVkJyB9KTtcbiAgICAgIHRocm93IG5ldyBBcGlLZXlSZWplY3RlZEVycm9yKCk7XG4gICAgfVxuICAgIHJlamVjdGlvbkNhY2hlLmRlbGV0ZShoYXNoKTtcbiAgfVxuXG4gIGNvbnN0IGNhY2hlZCA9IHRva2VuQ2FjaGUuZ2V0KGhhc2gpO1xuICBpZiAoY2FjaGVkICYmIGNhY2hlZC5leHBpcmVzQXQgPiBub3cpIHtcbiAgICBpZiAoY2FjaGVkLnJlZnJlc2hBdCA8PSBub3cgJiYgIWluRmxpZ2h0LmhhcyhoYXNoKSkge1xuICAgICAgLy8gRWFybHkgcmVmcmVzaDogd2FybSB0aGUgY2FjaGUgV0lUSE9VVCBtYWtpbmcgdGhpcyByZXF1ZXN0IHdhaXQuIEEgZmFpbGVkXG4gICAgICAvLyBiYWNrZ3JvdW5kIHJlZnJlc2ggaXMgbm90IHRoaXMgcmVxdWVzdCdzIHByb2JsZW0g4oCUIHRoZSBjYWNoZWQgdG9rZW4gaXNcbiAgICAgIC8vIHN0aWxsIHZhbGlkLCBhbmQgdGhlIG5leHQgcmVxdWVzdCBwYXN0IGV4cGlyeSBleGNoYW5nZXMgaW5saW5lLlxuICAgICAgZW1pdENvdW50ZXIoJ2FwaV9rZXlfZXhjaGFuZ2VfY2FjaGVfdG90YWwnLCB7IHJlc3VsdDogJ3JlZnJlc2gnIH0pO1xuICAgICAgdm9pZCBleGNoYW5nZU9uY2Uoa2V5LCBoYXNoKS5jYXRjaCgoKSA9PiB7IC8qIGxvZ2dlZCArIGNvdW50ZWQgaW4gcGVyZm9ybUV4Y2hhbmdlICovIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbWl0Q291bnRlcignYXBpX2tleV9leGNoYW5nZV9jYWNoZV90b3RhbCcsIHsgcmVzdWx0OiAnaGl0JyB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGNhY2hlZC50b2tlbjtcbiAgfVxuXG4gIGVtaXRDb3VudGVyKCdhcGlfa2V5X2V4Y2hhbmdlX2NhY2hlX3RvdGFsJywgeyByZXN1bHQ6ICdtaXNzJyB9KTtcbiAgcmV0dXJuIChhd2FpdCBleGNoYW5nZU9uY2Uoa2V5LCBoYXNoKSkudG9rZW47XG59XG5cbi8qKlxuICogRHJvcCBldmVyeSBjYWNoZWQgZXhjaGFuZ2UuIEZvciB0ZXN0cyBhbmQgZm9yIGEgcHJvY2VzcyB0aGF0IHdhbnRzIHRvIGZvcmNlXG4gKiByZS12YWxpZGF0aW9uOyBwcm9kdWN0aW9uIHJlbGllcyBvbiB0aGUgVFRMcyBhYm92ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc2V0QXBpS2V5RXhjaGFuZ2VDYWNoZSgpOiB2b2lkIHtcbiAgdG9rZW5DYWNoZS5jbGVhcigpO1xuICByZWplY3Rpb25DYWNoZS5jbGVhcigpO1xuICBpbkZsaWdodC5jbGVhcigpO1xufVxuIl19
|
|
@@ -131,4 +131,4 @@ export function auditAuthBlock(user) {
|
|
|
131
131
|
}
|
|
132
132
|
return Object.keys(block).length > 0 ? block : undefined;
|
|
133
133
|
}
|
|
134
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9hdWRpdC1jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7Ozs7OztHQVlHO0FBRUgsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRWhELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFzRTVELE1BQU0sT0FBTyxHQUFHLElBQUksaUJBQWlCLEVBQWdCLENBQUM7QUFFdEQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FBSSxHQUFpQixFQUFFLEVBQVc7SUFDbkUsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2pDLE1BQU0sTUFBTSxHQUFpQixLQUFLO1FBQ2hDLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLEdBQUcsR0FBRyxFQUFFLFdBQVcsRUFBRSxHQUFHLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFO1FBQ2xJLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDUixPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2pDLENBQUM7QUFFRCxnRUFBZ0U7QUFDaEUsTUFBTSxVQUFVLG1CQUFtQjtJQUNqQyxPQUFPLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUM1QixDQUFDO0FBRUQsbUVBQW1FO0FBQ25F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QUFxRTtRQUNyRSxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsS0FBSyxTQUFTLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztLQUNoSCxDQUFDO0lBQ0YsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBZ0MsRUFBRSxDQUFDO1FBQ3BFLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFNBQVM7WUFBRSxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQzNELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBBbWJpZW50IGF1ZGl0IGNvbnRleHQ6IHRoZSByZXF1ZXN0L2pvYiBmYWN0cyBldmVyeSBhdWRpdCBldmVudCBzaG91bGQgY2FycnlcbiAqIChyZXF1ZXN0IGlkLCB0cmFjZSBpZCwgY2xpZW50IGlwIC8gdXNlciBhZ2VudCwgdGhlIHZlcmlmaWVkIHByaW5jaXBhbCdzXG4gKiBjcmVkZW50aWFsLCBpbmJvdW5kIGNvcnJlbGF0aW9uIGlkcykgd2l0aG91dCBlYWNoIG9mIHRoZSB+MTUwIGByZWNvcmRBdWRpdGBcbiAqIGNhbGwgc2l0ZXMgdGhyZWFkaW5nIHRoZW0gdGhyb3VnaCBieSBoYW5kLlxuICpcbiAqIGFwaS1zZXJ2ZXIncyByZXF1ZXN0IHBpcGVsaW5lIG9wZW5zIGEgc2NvcGUgcGVyIGluYm91bmQgcmVxdWVzdFxuICogKGBhdWRpdENvbnRleHRGcm9tUmVxdWVzdGAgKyBgcnVuV2l0aEF1ZGl0Q29udGV4dGApOyBiYWNrZ3JvdW5kIHdvcmsgb3BlbnMgaXRzXG4gKiBvd24gd2l0aCBgcnVuV2l0aEF1ZGl0Q29udGV4dCh7IGpvYjogeyBqb2JJZCwgcnVuSWQsIHRyaWdnZXIgfSB9LCBmbilgLiBUaGVcbiAqIHJlbW90ZS1hdWRpdCBjbGllbnQgcmVhZHMgdGhlIHNjb3BlIHdoZW4gYW4gZXZlbnQgaXMgUkVDT1JERUQgYW5kIHN0YW1wcyB0aGVcbiAqIHJlc3VsdCBvbnRvIHRoZSBldmVudCBpdHNlbGYsIHNvIGEgc3Bvb2xlZCByZS1kZWxpdmVyeSBtaW51dGVzIGxhdGVyIHN0aWxsXG4gKiBjYXJyaWVzIHRoZSBjb250ZXh0IG9mIHRoZSBtb21lbnQgaXQgaGFwcGVuZWQuXG4gKi9cblxuaW1wb3J0IHsgQXN5bmNMb2NhbFN0b3JhZ2UgfSBmcm9tICdhc3luY19ob29rcyc7XG5pbXBvcnQgdHlwZSB7IFJlcXVlc3QgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCB7IHNlcnZpY2VOYW1lT2YgfSBmcm9tICcuLi9taWRkbGV3YXJlL3NlcnZpY2UtdG9rZW5zLmpzJztcbmltcG9ydCB7IGlzU3lzdGVtT3JnSWQgfSBmcm9tICcuLi9taWRkbGV3YXJlL3N5c3RlbS1vcmcuanMnO1xuaW1wb3J0IHR5cGUgeyBKd3RQYXlsb2FkIH0gZnJvbSAnLi4vdHlwZXMvY29tbW9uLmpzJztcblxuLyoqIEluYm91bmQgY29ycmVsYXRpb24gaWRzIGEgY2FsbGVyIChDTEksIExhbWJkYSwgQ29kZUJ1aWxkKSBtYXkgZm9yd2FyZC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXVkaXRDb3JyZWxhdGlvbiB7XG4gIC8qKiBgWC1QaXBlbGluZS1FeGVjdXRpb24tSWRgIOKAlCB0aGUgQ29kZVBpcGVsaW5lIGV4ZWN1dGlvbiB0aGF0IG1hZGUgdGhlIGNhbGwuICovXG4gIHBpcGVsaW5lRXhlY3V0aW9uSWQ/OiBzdHJpbmc7XG4gIC8qKiBgWC1Db2RlQnVpbGQtQnVpbGQtSWRgIOKAlCB0aGUgQ29kZUJ1aWxkIGJ1aWxkIHRoYXQgbWFkZSB0aGUgY2FsbC4gKi9cbiAgY29kZWJ1aWxkQnVpbGRJZD86IHN0cmluZztcbiAgLyoqIGBYLVNvdXJjZS1FdmVudC1JZGAg4oCUIHRoZSB1cHN0cmVhbSBldmVudCAoRXZlbnRCcmlkZ2UgLyB3ZWJob29rKSBiZWluZyBoYW5kbGVkLiAqL1xuICBzb3VyY2VFdmVudElkPzogc3RyaW5nO1xufVxuXG4vKiogQmFja2dyb3VuZC13b3JrIGlkZW50aXR5IGZvciBldmVudHMgcmVjb3JkZWQgb3V0c2lkZSBhbnkgcmVxdWVzdC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXVkaXRKb2JDb250ZXh0IHtcbiAgLyoqIFN0YWJsZSBqb2IgbmFtZSAoZS5nLiBgcmVnaXN0cnktZ2NgLCBgdnVsbi1yZXNjYW5gKS4gKi9cbiAgam9iSWQ/OiBzdHJpbmc7XG4gIC8qKiBUaGlzIHJ1bidzIGlkIChhIEJ1bGxNUSBqb2IgaWQsIGEgc3dlZXAncyB1dWlkKS4gKi9cbiAgcnVuSWQ/OiBzdHJpbmc7XG4gIC8qKiBXaGF0IHN0YXJ0ZWQgaXQ6IGBzY2hlZHVsZWAsIGBxdWV1ZWAsIGBzdGFydHVwYCwgYG1hbnVhbGAsIOKApiAqL1xuICB0cmlnZ2VyPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF1ZGl0Q29udGV4dCB7XG4gIHJlcXVlc3RJZD86IHN0cmluZztcbiAgdHJhY2VJZD86IHN0cmluZztcbiAgaXA/OiBzdHJpbmc7XG4gIHVzZXJBZ2VudD86IHN0cmluZztcbiAgY29ycmVsYXRpb24/OiBBdWRpdENvcnJlbGF0aW9uO1xuICBqb2I/OiBBdWRpdEpvYkNvbnRleHQ7XG4gIC8qKlxuICAgKiBUaGUgVkVSSUZJRUQgcHJpbmNpcGFsIG9mIHRoZSBpbmJvdW5kIHJlcXVlc3QuIEEgZ2V0dGVyLCBub3QgYSB2YWx1ZTogdGhlXG4gICAqIHNjb3BlIG9wZW5zIGJlZm9yZSBgcmVxdWlyZUF1dGhgIHJ1bnMsIHNvIGByZXEudXNlcmAgaXMgcmVhZCBhdCB0aGUgbW9tZW50XG4gICAqIGFuIGV2ZW50IGlzIHJlY29yZGVkLlxuICAgKi9cbiAgcHJpbmNpcGFsPzogKCkgPT4gSnd0UGF5bG9hZCB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBUaGUgY3JlZGVudGlhbCBiZWhpbmQgYW4gYXVkaXRlZCBhY3Rpb24g4oCUIHJlc2VydmVkIGBkZXRhaWxzLl9hdXRoYCwgc28gaXQgaXNcbiAqIGNvdmVyZWQgYnkgdGhlIGF1ZGl0IGhhc2ggY2hhaW4gKHdoaWNoIGhhc2hlcyBgZGV0YWlsc2ApLiBCdWlsdCBvbmx5IGZyb20gYVxuICogdmVyaWZpZWQgdG9rZW4sIG5ldmVyIGZyb20gY2FsbGVyIGlucHV0OyB0aGUgcmVtb3RlLWF1ZGl0IGNsaWVudCBvdmVyd3JpdGVzXG4gKiBhbnkgYF9hdXRoYCBhIGNhbGwgc2l0ZSBwdXQgaW4gYGRldGFpbHNgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF1ZGl0QXV0aEJsb2NrIHtcbiAgcHJpbmNpcGFsVHlwZT86IHN0cmluZztcbiAgLyoqIFRoZSBpbnRlcm5hbCBzZXJ2aWNlLCB3aGVuIHRoZSBwcmluY2lwYWwgaXMgYSBzZXJ2aWNlIHRva2VuLiAqL1xuICBzZXJ2aWNlPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHJldm9jYWJsZSBjcmVkZW50aWFsOiB0aGUgYWNjZXNzIGtleSAoUEFUIC8gc2VydmljZS1hY2NvdW50IGtleSkgdGhlXG4gICAqIHRva2VuIGRlcml2ZXMgZnJvbSAoYHBhcmVudEtleUlkYCksIGVsc2UgdGhlIHRva2VuJ3Mgb3duIGBqdGlgIChhbiBleGNoYW5nZWRcbiAgICoga2V5IHRva2VuJ3Mga2V5IGlkLCBhbiBpbXBlcnNvbmF0aW9uIHNlc3Npb24gaWQsIGEgc2VydmljZSBtaW50IGlkKS5cbiAgICovXG4gIGtleUlkPzogc3RyaW5nO1xuICAvKiogUmVmcmVzaC1zZXNzaW9uIHNsb3QgdGhlIHRva2VuIHdhcyBtaW50ZWQgb24uICovXG4gIHNpZD86IHN0cmluZztcbiAgc2NvcGU/OiBzdHJpbmc7XG4gIHRva2VuVXNlPzogc3RyaW5nO1xuICAvKiogVGhlIHRva2VuJ3MgcGVybWlzc2lvbnMgd2VyZSBuYXJyb3dlZCB0byBhIHN1YnNldCBhdCBjcmVkZW50aWFsIGNyZWF0aW9uLiAqL1xuICBwZXJtaXNzaW9uc1Jlc3RyaWN0ZWQ/OiB0cnVlO1xuICAvKiogVGhlIHByaW5jaXBhbCBpcyBhIHBsYXRmb3JtIHN1cGVyYWRtaW4uICovXG4gIHN1cGVyQWRtaW4/OiB0cnVlO1xuICAvKipcbiAgICogVGhlIHByaW5jaXBhbCdzIGFjdGl2ZSBvcmcgaXMgdGhlIHN5c3RlbSBvcmcgKHZlbmRvciBzdGFmZiBhY3RpbmcgdGhyb3VnaCBhXG4gICAqIHN5c3RlbS1vcmcgam9iIFJvbGUpLiBXaXRoIGBzdXBlckFkbWluYCwgdGhpcyBpcyB3aGF0IGxldHMgdGhlIHJlbW90ZS1hdWRpdFxuICAgKiBjbGllbnQgY2xhaW0gYSBjcm9zcy1vcmcgYGFmZmVjdGVkT3JnSWRgIChzZWUgYGF1ZGl0Q3Jvc3NPcmdgKS5cbiAgICovXG4gIHN5c3RlbU9yZz86IHRydWU7XG59XG5cbmNvbnN0IHN0b3JhZ2UgPSBuZXcgQXN5bmNMb2NhbFN0b3JhZ2U8QXVkaXRDb250ZXh0PigpO1xuXG4vKipcbiAqIFJ1biBgZm5gIGluc2lkZSBhbiBhdWRpdC1jb250ZXh0IHNjb3BlLiBOZXN0ZWQgc2NvcGVzIE1FUkdFIG9udG8gdGhlIG91dGVyXG4gKiBvbmUgKGEgam9iIHN0YXJ0ZWQgaW5zaWRlIGEgcmVxdWVzdCBrZWVwcyB0aGUgcmVxdWVzdCdzIGlkKSwgd2l0aCB0aGUgaW5uZXJcbiAqIGZpZWxkcyB3aW5uaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcnVuV2l0aEF1ZGl0Q29udGV4dDxUPihjdHg6IEF1ZGl0Q29udGV4dCwgZm46ICgpID0+IFQpOiBUIHtcbiAgY29uc3Qgb3V0ZXIgPSBzdG9yYWdlLmdldFN0b3JlKCk7XG4gIGNvbnN0IG1lcmdlZDogQXVkaXRDb250ZXh0ID0gb3V0ZXJcbiAgICA/IHsgLi4ub3V0ZXIsIC4uLmN0eCwgY29ycmVsYXRpb246IGN0eC5jb3JyZWxhdGlvbiA/PyBvdXRlci5jb3JyZWxhdGlvbiwgam9iOiBjdHguam9iID8geyAuLi5vdXRlci5qb2IsIC4uLmN0eC5qb2IgfSA6IG91dGVyLmpvYiB9XG4gICAgOiBjdHg7XG4gIHJldHVybiBzdG9yYWdlLnJ1bihtZXJnZWQsIGZuKTtcbn1cblxuLyoqIFRoZSBhY3RpdmUgYXVkaXQgY29udGV4dCwgb3IgdW5kZWZpbmVkIG91dHNpZGUgYW55IHNjb3BlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGN1cnJlbnRBdWRpdENvbnRleHQoKTogQXVkaXRDb250ZXh0IHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHN0b3JhZ2UuZ2V0U3RvcmUoKTtcbn1cblxuLyoqIEluYm91bmQgY29ycmVsYXRpb24gaGVhZGVycyByZWNvcmRlZCBpbnRvIHRoZSBhdWRpdCBjb250ZXh0LiAqL1xuZXhwb3J0IGNvbnN0IEFVRElUX0NPUlJFTEFUSU9OX0hFQURFUlMgPSB7XG4gIHBpcGVsaW5lRXhlY3V0aW9uSWQ6ICd4LXBpcGVsaW5lLWV4ZWN1dGlvbi1pZCcsXG4gIGNvZGVidWlsZEJ1aWxkSWQ6ICd4LWNvZGVidWlsZC1idWlsZC1pZCcsXG4gIHNvdXJjZUV2ZW50SWQ6ICd4LXNvdXJjZS1ldmVudC1pZCcsXG59IGFzIGNvbnN0O1xuXG4vKiogTWF4IGxlbmd0aCBvZiBhIHN0b3JlZCBjb3JyZWxhdGlvbiBpZCAvIHJlcXVlc3QgaWQuICovXG5jb25zdCBNQVhfQ09SUkVMQVRJT05fTEVOID0gMTI4O1xuLyoqIElkcyBhcmUgb3BhcXVlIHRva2VuczogdXVpZHMsIGBwcm9qZWN0OnV1aWRgIGJ1aWxkIGlkcywgVUxJRHMuIE5vdGhpbmcgZWxzZSBpcyBzdG9yZWQuICovXG5jb25zdCBDT1JSRUxBVElPTl9JRCA9IC9eW0EtWmEtejAtOS5fOi9AKz0tXSskLztcbi8qKiBBIGJhcmUgQVdTIGFjY291bnQgaWQuICovXG5jb25zdCBCQVJFX0FDQ09VTlRfSUQgPSAvXlxcZHsxMn0kLztcblxuLyoqIE1heCBzdG9yZWQgVXNlci1BZ2VudCBsZW5ndGgg4oCUIGEgaG9zdGlsZSBoZWFkZXIgbXVzdCBub3QgYmxvYXQgYXVkaXQgcm93cy4gKi9cbmNvbnN0IE1BWF9VU0VSX0FHRU5UX0xFTiA9IDUxMjtcbi8qKiBDMCArIERFTCArIEMxIGNvbnRyb2wgY2hhcmFjdGVycywgcmVwbGFjZWQgc28gYSBVQSBjYW4ndCBpbmplY3QgaW50byB0aGUgVUkvQ1NWIGV4cG9ydC4gKi9cbmNvbnN0IENPTlRST0xfQ0hBUlMgPSBuZXcgUmVnRXhwKCdbXFxcXHUwMDAwLVxcXFx1MDAxZlxcXFx1MDA3Zi1cXFxcdTAwOWZdJywgJ2cnKTtcblxuZnVuY3Rpb24gZmlyc3RIZWFkZXIocmF3OiBzdHJpbmcgfCBzdHJpbmdbXSB8IHVuZGVmaW5lZCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KHJhdykgPyByYXdbMF0gOiByYXc7XG59XG5cbi8qKlxuICogVmFsaWRhdGUgYW4gaW5ib3VuZCBjb3JyZWxhdGlvbiBpZCAoYFgtUmVxdWVzdC1JZGAsIGBYLUNvZGVCdWlsZC1CdWlsZC1JZGAsIOKApik6XG4gKiBhIGJvdW5kZWQgb3BhcXVlIHRva2VuLCBlbHNlIGB1bmRlZmluZWRgIOKAlCBhbiBpbnZhbGlkIHZhbHVlIGlzIGRyb3BwZWQsIG5ldmVyXG4gKiB0cnVuY2F0ZWQgaW50byBzb21ldGhpbmcgdGhhdCBsb29rcyBsaWtlIGEgZGlmZmVyZW50IGlkLlxuICpcbiAqIE5vIEFXUyBhY2NvdW50IGlkIGlzIGV2ZXIgc3RvcmVkOiBhbiBBUk4gKGEgQ29kZUJ1aWxkIGJ1aWxkIEFSTiwgc2F5KSBoYXMgaXRzXG4gKiBhY2NvdW50IHNlZ21lbnQgZW1wdGllZCwgYW5kIGEgYmFyZSAxMi1kaWdpdCB2YWx1ZSBpcyByZWZ1c2VkLiBUaGUgZ2VuZXJpY1xuICogMTItZGlnaXQtcnVuIHNjcnViIGlzIE5PVCB1c2VkIGhlcmUg4oCUIGl0IHdvdWxkIHJlZGFjdCB0aGUgYWxsLWRpZ2l0IGZpbmFsXG4gKiBncm91cCBvZiByb3VnaGx5IG9uZSB1dWlkIGluIHRocmVlIGh1bmRyZWQsIGNvcnJ1cHRpbmcgdGhlIGlkIGl0IGV4aXN0cyB0b1xuICogY29ycmVsYXRlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2FuaXRpemVDb3JyZWxhdGlvbklkKHJhdzogdW5rbm93bik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICh0eXBlb2YgcmF3ICE9PSAnc3RyaW5nJykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgY29uc3QgdmFsdWUgPSByYXcudHJpbSgpO1xuICBpZiAodmFsdWUubGVuZ3RoID09PSAwIHx8IHZhbHVlLmxlbmd0aCA+IE1BWF9DT1JSRUxBVElPTl9MRU4gfHwgIUNPUlJFTEFUSU9OX0lELnRlc3QodmFsdWUpKSByZXR1cm4gdW5kZWZpbmVkO1xuICBpZiAoQkFSRV9BQ0NPVU5UX0lELnRlc3QodmFsdWUpKSByZXR1cm4gdW5kZWZpbmVkO1xuICBpZiAoL15hcm46L2kudGVzdCh2YWx1ZSkpIHtcbiAgICBjb25zdCBwYXJ0cyA9IHZhbHVlLnNwbGl0KCc6Jyk7XG4gICAgaWYgKHBhcnRzLmxlbmd0aCA+IDQpIHBhcnRzWzRdID0gJyc7XG4gICAgcmV0dXJuIHBhcnRzLmpvaW4oJzonKTtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG5cbi8qKiBTdHJpcCBjb250cm9sIGNoYXJhY3RlcnMgZnJvbSBhIFVzZXItQWdlbnQgYW5kIGNhcCBpdHMgbGVuZ3RoOyB1bmRlZmluZWQgd2hlbiBlbXB0eS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzYW5pdGl6ZVVzZXJBZ2VudChyYXc6IHVua25vd24pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBpZiAodHlwZW9mIHJhdyAhPT0gJ3N0cmluZycgfHwgcmF3Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgY29uc3QgY2xlYW5lZCA9IHJhdy5yZXBsYWNlKENPTlRST0xfQ0hBUlMsICcgJykudHJpbSgpO1xuICByZXR1cm4gY2xlYW5lZC5sZW5ndGggPT09IDAgPyB1bmRlZmluZWQgOiBjbGVhbmVkLnNsaWNlKDAsIE1BWF9VU0VSX0FHRU5UX0xFTik7XG59XG5cbi8qKlxuICogVGhlIGF1ZGl0IGNvbnRleHQgZm9yIGFuIGluYm91bmQgcmVxdWVzdC4gYHJlcXVlc3RJZGAgaXMgdGhlIGlkIHRoZVxuICogcmVxdWVzdC1pZCBtaWRkbGV3YXJlIHJlc29sdmVkICh2YWxpZGF0ZWQgaW5ib3VuZCBgWC1SZXF1ZXN0LUlkYCwgZWxzZSBhIGZyZXNoXG4gKiB1dWlkKTsgdGhlIHByaW5jaXBhbCBpcyByZWFkIGxhemlseSBmcm9tIGByZXEudXNlcmAgKGF1dGggcnVucyBsYXRlciBpbiB0aGVcbiAqIGNoYWluKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGF1ZGl0Q29udGV4dEZyb21SZXF1ZXN0KHJlcTogUmVxdWVzdCwgaWRzOiB7IHJlcXVlc3RJZD86IHN0cmluZzsgdHJhY2VJZD86IHN0cmluZyB9ID0ge30pOiBBdWRpdENvbnRleHQge1xuICBjb25zdCBjb3JyZWxhdGlvbjogQXVkaXRDb3JyZWxhdGlvbiA9IHt9O1xuICBmb3IgKGNvbnN0IFtmaWVsZCwgaGVhZGVyXSBvZiBPYmplY3QuZW50cmllcyhBVURJVF9DT1JSRUxBVElPTl9IRUFERVJTKSBhcyBBcnJheTxba2V5b2YgQXVkaXRDb3JyZWxhdGlvbiwgc3RyaW5nXT4pIHtcbiAgICBjb25zdCB2YWx1ZSA9IHNhbml0aXplQ29ycmVsYXRpb25JZChmaXJzdEhlYWRlcihyZXEuaGVhZGVyc1toZWFkZXJdKSk7XG4gICAgaWYgKHZhbHVlKSBjb3JyZWxhdGlvbltmaWVsZF0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHJlcXVlc3RJZDogaWRzLnJlcXVlc3RJZCxcbiAgICB0cmFjZUlkOiBpZHMudHJhY2VJZCxcbiAgICBpcDogcmVxLmlwLFxuICAgIHVzZXJBZ2VudDogc2FuaXRpemVVc2VyQWdlbnQoZmlyc3RIZWFkZXIocmVxLmhlYWRlcnNbJ3VzZXItYWdlbnQnXSkpLFxuICAgIGNvcnJlbGF0aW9uOiBPYmplY3Qua2V5cyhjb3JyZWxhdGlvbikubGVuZ3RoID4gMCA/IGNvcnJlbGF0aW9uIDogdW5kZWZpbmVkLFxuICAgIHByaW5jaXBhbDogKCkgPT4gcmVxLnVzZXIsXG4gIH07XG59XG5cbi8qKiBUaGUgYF9hdXRoYCBibG9jayBmb3IgYSB2ZXJpZmllZCBwcmluY2lwYWwgKHVuZGVmaW5lZCB3aGVuIHRoZXJlIGlzIG5vbmUpLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGF1ZGl0QXV0aEJsb2NrKHVzZXI6IEp3dFBheWxvYWQgfCB1bmRlZmluZWQpOiBBdWRpdEF1dGhCbG9jayB8IHVuZGVmaW5lZCB7XG4gIGlmICghdXNlcikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgY29uc3QgYmxvY2s6IEF1ZGl0QXV0aEJsb2NrID0ge1xuICAgIHByaW5jaXBhbFR5cGU6IHVzZXIucHJpbmNpcGFsVHlwZSxcbiAgICBzZXJ2aWNlOiBzZXJ2aWNlTmFtZU9mKHVzZXIpLFxuICAgIGtleUlkOiB1c2VyLnBhcmVudEtleUlkID8/IHVzZXIuanRpLFxuICAgIHNpZDogdXNlci5zaWQsXG4gICAgc2NvcGU6IHVzZXIuc2NvcGUsXG4gICAgdG9rZW5Vc2U6IHVzZXIudG9rZW5fdXNlLFxuICAgIC4uLih1c2VyLnBlcm1pc3Npb25zUmVzdHJpY3RlZCA9PT0gdHJ1ZSA/IHsgcGVybWlzc2lvbnNSZXN0cmljdGVkOiB0cnVlIGFzIGNvbnN0IH0gOiB7fSksXG4gICAgLi4uKHVzZXIuaXNTdXBlckFkbWluID09PSB0cnVlID8geyBzdXBlckFkbWluOiB0cnVlIGFzIGNvbnN0IH0gOiB7fSksXG4gICAgLy8gQSBTRVJWSUNFIHRva2VuIGluIHRoZSBzeXN0ZW0gb3JnIGlzIHRoZSBwbGF0Zm9ybSdzIG93biBwbHVtYmluZywgbm90IHN0YWZmXG4gICAgLy8gYWN0aW5nIG9uIGEgdGVuYW50OyBvbmx5IGh1bWFuIC8gc2VydmljZS1hY2NvdW50IHByaW5jaXBhbHMgY291bnQuXG4gICAgLi4uKHVzZXIucHJpbmNpcGFsVHlwZSAhPT0gJ3NlcnZpY2UnICYmIGlzU3lzdGVtT3JnSWQodXNlci5vcmdhbml6YXRpb25JZCkgPyB7IHN5c3RlbU9yZzogdHJ1ZSBhcyBjb25zdCB9IDoge30pLFxuICB9O1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhibG9jaykgYXMgQXJyYXk8a2V5b2YgQXVkaXRBdXRoQmxvY2s+KSB7XG4gICAgaWYgKGJsb2NrW2tleV0gPT09IHVuZGVmaW5lZCkgZGVsZXRlIGJsb2NrW2tleV07XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5rZXlzKGJsb2NrKS5sZW5ndGggPiAwID8gYmxvY2sgOiB1bmRlZmluZWQ7XG59XG4iXX0=
|
|
134
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtY29udGV4dC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL2F1ZGl0LWNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7Ozs7Ozs7O0dBWUc7QUFFSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQXNFNUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxpQkFBaUIsRUFBZ0IsQ0FBQztBQUV0RDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQixDQUFJLEdBQWlCLEVBQUUsRUFBVztJQUNuRSxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDakMsTUFBTSxNQUFNLEdBQWlCLEtBQUs7UUFDaEMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQUUsR0FBRyxHQUFHLEVBQUUsV0FBVyxFQUFFLEdBQUcsQ0FBQyxXQUFXLElBQUksS0FBSyxDQUFDLFdBQVcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUU7UUFDbEksQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUNSLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDakMsQ0FBQztBQUVELGdFQUFnRTtBQUNoRSxNQUFNLFVBQVUsbUJBQW1CO0lBQ2pDLE9BQU8sT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQzVCLENBQUM7QUFFRCxtRUFBbUU7QUFDbkUsTUFBTSxDQUFDLE1BQU0s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Q0FBQyxJQUFJLENBQUMsYUFBYSxLQUFLLFNBQVMsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0tBQ2hILENBQUM7SUFDRixLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFnQyxFQUFFLENBQUM7UUFDcEUsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssU0FBUztZQUFFLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDM0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIEFtYmllbnQgYXVkaXQgY29udGV4dDogdGhlIHJlcXVlc3Qvam9iIGZhY3RzIGV2ZXJ5IGF1ZGl0IGV2ZW50IHNob3VsZCBjYXJyeVxuICogKHJlcXVlc3QgaWQsIHRyYWNlIGlkLCBjbGllbnQgaXAgLyB1c2VyIGFnZW50LCB0aGUgdmVyaWZpZWQgcHJpbmNpcGFsJ3NcbiAqIGNyZWRlbnRpYWwsIGluYm91bmQgY29ycmVsYXRpb24gaWRzKSB3aXRob3V0IGVhY2ggb2YgdGhlIH4xNTAgYHJlY29yZEF1ZGl0YFxuICogY2FsbCBzaXRlcyB0aHJlYWRpbmcgdGhlbSB0aHJvdWdoIGJ5IGhhbmQuXG4gKlxuICogYXBpLXNlcnZlcidzIHJlcXVlc3QgcGlwZWxpbmUgb3BlbnMgYSBzY29wZSBwZXIgaW5ib3VuZCByZXF1ZXN0XG4gKiAoYGF1ZGl0Q29udGV4dEZyb21SZXF1ZXN0YCArIGBydW5XaXRoQXVkaXRDb250ZXh0YCk7IGJhY2tncm91bmQgd29yayBvcGVucyBpdHNcbiAqIG93biB3aXRoIGBydW5XaXRoQXVkaXRDb250ZXh0KHsgam9iOiB7IGpvYklkLCBydW5JZCwgdHJpZ2dlciB9IH0sIGZuKWAuIFRoZVxuICogcmVtb3RlLWF1ZGl0IGNsaWVudCByZWFkcyB0aGUgc2NvcGUgd2hlbiBhbiBldmVudCBpcyBSRUNPUkRFRCBhbmQgc3RhbXBzIHRoZVxuICogcmVzdWx0IG9udG8gdGhlIGV2ZW50IGl0c2VsZiwgc28gYSBzcG9vbGVkIHJlLWRlbGl2ZXJ5IG1pbnV0ZXMgbGF0ZXIgc3RpbGxcbiAqIGNhcnJpZXMgdGhlIGNvbnRleHQgb2YgdGhlIG1vbWVudCBpdCBoYXBwZW5lZC5cbiAqL1xuXG5pbXBvcnQgeyBBc3luY0xvY2FsU3RvcmFnZSB9IGZyb20gJ2FzeW5jX2hvb2tzJztcbmltcG9ydCB0eXBlIHsgUmVxdWVzdCB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IHsgc2VydmljZU5hbWVPZiB9IGZyb20gJy4uL21pZGRsZXdhcmUvc2VydmljZS10b2tlbnMuanMnO1xuaW1wb3J0IHsgaXNTeXN0ZW1PcmdJZCB9IGZyb20gJy4uL21pZGRsZXdhcmUvc3lzdGVtLW9yZy5qcyc7XG5pbXBvcnQgdHlwZSB7IEp3dFBheWxvYWQgfSBmcm9tICcuLi90eXBlcy9jb21tb24uanMnO1xuXG4vKiogSW5ib3VuZCBjb3JyZWxhdGlvbiBpZHMgYSBjYWxsZXIgKENMSSwgTGFtYmRhLCBDb2RlQnVpbGQpIG1heSBmb3J3YXJkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdWRpdENvcnJlbGF0aW9uIHtcbiAgLyoqIGBYLVBpcGVsaW5lLUV4ZWN1dGlvbi1JZGAg4oCUIHRoZSBDb2RlUGlwZWxpbmUgZXhlY3V0aW9uIHRoYXQgbWFkZSB0aGUgY2FsbC4gKi9cbiAgcGlwZWxpbmVFeGVjdXRpb25JZD86IHN0cmluZztcbiAgLyoqIGBYLUNvZGVCdWlsZC1CdWlsZC1JZGAg4oCUIHRoZSBDb2RlQnVpbGQgYnVpbGQgdGhhdCBtYWRlIHRoZSBjYWxsLiAqL1xuICBjb2RlYnVpbGRCdWlsZElkPzogc3RyaW5nO1xuICAvKiogYFgtU291cmNlLUV2ZW50LUlkYCDigJQgdGhlIHVwc3RyZWFtIGV2ZW50IChFdmVudEJyaWRnZSAvIHdlYmhvb2spIGJlaW5nIGhhbmRsZWQuICovXG4gIHNvdXJjZUV2ZW50SWQ/OiBzdHJpbmc7XG59XG5cbi8qKiBCYWNrZ3JvdW5kLXdvcmsgaWRlbnRpdHkgZm9yIGV2ZW50cyByZWNvcmRlZCBvdXRzaWRlIGFueSByZXF1ZXN0LiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdWRpdEpvYkNvbnRleHQge1xuICAvKiogU3RhYmxlIGpvYiBuYW1lIChlLmcuIGByZWdpc3RyeS1nY2AsIGB2dWxuLXJlc2NhbmApLiAqL1xuICBqb2JJZD86IHN0cmluZztcbiAgLyoqIFRoaXMgcnVuJ3MgaWQgKGEgQnVsbE1RIGpvYiBpZCwgYSBzd2VlcCdzIHV1aWQpLiAqL1xuICBydW5JZD86IHN0cmluZztcbiAgLyoqIFdoYXQgc3RhcnRlZCBpdDogYHNjaGVkdWxlYCwgYHF1ZXVlYCwgYHN0YXJ0dXBgLCBgbWFudWFsYCwg4oCmICovXG4gIHRyaWdnZXI/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXVkaXRDb250ZXh0IHtcbiAgcmVxdWVzdElkPzogc3RyaW5nO1xuICB0cmFjZUlkPzogc3RyaW5nO1xuICBpcD86IHN0cmluZztcbiAgdXNlckFnZW50Pzogc3RyaW5nO1xuICBjb3JyZWxhdGlvbj86IEF1ZGl0Q29ycmVsYXRpb247XG4gIGpvYj86IEF1ZGl0Sm9iQ29udGV4dDtcbiAgLyoqXG4gICAqIFRoZSBWRVJJRklFRCBwcmluY2lwYWwgb2YgdGhlIGluYm91bmQgcmVxdWVzdC4gQSBnZXR0ZXIsIG5vdCBhIHZhbHVlOiB0aGVcbiAgICogc2NvcGUgb3BlbnMgYmVmb3JlIGByZXF1aXJlQXV0aGAgcnVucywgc28gYHJlcS51c2VyYCBpcyByZWFkIGF0IHRoZSBtb21lbnRcbiAgICogYW4gZXZlbnQgaXMgcmVjb3JkZWQuXG4gICAqL1xuICBwcmluY2lwYWw/OiAoKSA9PiBKd3RQYXlsb2FkIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFRoZSBjcmVkZW50aWFsIGJlaGluZCBhbiBhdWRpdGVkIGFjdGlvbiDigJQgcmVzZXJ2ZWQgYGRldGFpbHMuX2F1dGhgLCBzbyBpdCBpc1xuICogY292ZXJlZCBieSB0aGUgYXVkaXQgaGFzaCBjaGFpbiAod2hpY2ggaGFzaGVzIGBkZXRhaWxzYCkuIEJ1aWx0IG9ubHkgZnJvbSBhXG4gKiB2ZXJpZmllZCB0b2tlbiwgbmV2ZXIgZnJvbSBjYWxsZXIgaW5wdXQ7IHRoZSByZW1vdGUtYXVkaXQgY2xpZW50IG92ZXJ3cml0ZXNcbiAqIGFueSBgX2F1dGhgIGEgY2FsbCBzaXRlIHB1dCBpbiBgZGV0YWlsc2AuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXVkaXRBdXRoQmxvY2sge1xuICBwcmluY2lwYWxUeXBlPzogc3RyaW5nO1xuICAvKiogVGhlIGludGVybmFsIHNlcnZpY2UsIHdoZW4gdGhlIHByaW5jaXBhbCBpcyBhIHNlcnZpY2UgdG9rZW4uICovXG4gIHNlcnZpY2U/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgcmV2b2NhYmxlIGNyZWRlbnRpYWw6IHRoZSBhY2Nlc3Mga2V5IChQQVQgLyBzZXJ2aWNlLWFjY291bnQga2V5KSB0aGVcbiAgICogdG9rZW4gZGVyaXZlcyBmcm9tIChgcGFyZW50S2V5SWRgKSwgZWxzZSB0aGUgdG9rZW4ncyBvd24gYGp0aWAgKGFuIGV4Y2hhbmdlZFxuICAgKiBrZXkgdG9rZW4ncyBrZXkgaWQsIGFuIGltcGVyc29uYXRpb24gc2Vzc2lvbiBpZCwgYSBzZXJ2aWNlIG1pbnQgaWQpLlxuICAgKi9cbiAga2V5SWQ/OiBzdHJpbmc7XG4gIC8qKiBSZWZyZXNoLXNlc3Npb24gc2xvdCB0aGUgdG9rZW4gd2FzIG1pbnRlZCBvbi4gKi9cbiAgc2lkPzogc3RyaW5nO1xuICBzY29wZT86IHN0cmluZztcbiAgdG9rZW5Vc2U/OiBzdHJpbmc7XG4gIC8qKiBUaGUgdG9rZW4ncyBwZXJtaXNzaW9ucyB3ZXJlIG5hcnJvd2VkIHRvIGEgc3Vic2V0IGF0IGNyZWRlbnRpYWwgY3JlYXRpb24uICovXG4gIHBlcm1pc3Npb25zUmVzdHJpY3RlZD86IHRydWU7XG4gIC8qKiBUaGUgcHJpbmNpcGFsIGlzIGEgcGxhdGZvcm0gc3VwZXJhZG1pbi4gKi9cbiAgc3VwZXJBZG1pbj86IHRydWU7XG4gIC8qKlxuICAgKiBUaGUgcHJpbmNpcGFsJ3MgYWN0aXZlIG9yZyBpcyB0aGUgc3lzdGVtIG9yZyAodmVuZG9yIHN0YWZmIGFjdGluZyB0aHJvdWdoIGFcbiAgICogc3lzdGVtLW9yZyBqb2IgUm9sZSkuIFdpdGggYHN1cGVyQWRtaW5gLCB0aGlzIGlzIHdoYXQgbGV0cyB0aGUgcmVtb3RlLWF1ZGl0XG4gICAqIGNsaWVudCBjbGFpbSBhIGNyb3NzLW9yZyBgYWZmZWN0ZWRPcmdJZGAgKHNlZSBgYXVkaXRDcm9zc09yZ2ApLlxuICAgKi9cbiAgc3lzdGVtT3JnPzogdHJ1ZTtcbn1cblxuY29uc3Qgc3RvcmFnZSA9IG5ldyBBc3luY0xvY2FsU3RvcmFnZTxBdWRpdENvbnRleHQ+KCk7XG5cbi8qKlxuICogUnVuIGBmbmAgaW5zaWRlIGFuIGF1ZGl0LWNvbnRleHQgc2NvcGUuIE5lc3RlZCBzY29wZXMgTUVSR0Ugb250byB0aGUgb3V0ZXJcbiAqIG9uZSAoYSBqb2Igc3RhcnRlZCBpbnNpZGUgYSByZXF1ZXN0IGtlZXBzIHRoZSByZXF1ZXN0J3MgaWQpLCB3aXRoIHRoZSBpbm5lclxuICogZmllbGRzIHdpbm5pbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydW5XaXRoQXVkaXRDb250ZXh0PFQ+KGN0eDogQXVkaXRDb250ZXh0LCBmbjogKCkgPT4gVCk6IFQge1xuICBjb25zdCBvdXRlciA9IHN0b3JhZ2UuZ2V0U3RvcmUoKTtcbiAgY29uc3QgbWVyZ2VkOiBBdWRpdENvbnRleHQgPSBvdXRlclxuICAgID8geyAuLi5vdXRlciwgLi4uY3R4LCBjb3JyZWxhdGlvbjogY3R4LmNvcnJlbGF0aW9uID8/IG91dGVyLmNvcnJlbGF0aW9uLCBqb2I6IGN0eC5qb2IgPyB7IC4uLm91dGVyLmpvYiwgLi4uY3R4LmpvYiB9IDogb3V0ZXIuam9iIH1cbiAgICA6IGN0eDtcbiAgcmV0dXJuIHN0b3JhZ2UucnVuKG1lcmdlZCwgZm4pO1xufVxuXG4vKiogVGhlIGFjdGl2ZSBhdWRpdCBjb250ZXh0LCBvciB1bmRlZmluZWQgb3V0c2lkZSBhbnkgc2NvcGUuICovXG5leHBvcnQgZnVuY3Rpb24gY3VycmVudEF1ZGl0Q29udGV4dCgpOiBBdWRpdENvbnRleHQgfCB1bmRlZmluZWQge1xuICByZXR1cm4gc3RvcmFnZS5nZXRTdG9yZSgpO1xufVxuXG4vKiogSW5ib3VuZCBjb3JyZWxhdGlvbiBoZWFkZXJzIHJlY29yZGVkIGludG8gdGhlIGF1ZGl0IGNvbnRleHQuICovXG5leHBvcnQgY29uc3QgQVVESVRfQ09SUkVMQVRJT05fSEVBREVSUyA9IHtcbiAgcGlwZWxpbmVFeGVjdXRpb25JZDogJ3gtcGlwZWxpbmUtZXhlY3V0aW9uLWlkJyxcbiAgY29kZWJ1aWxkQnVpbGRJZDogJ3gtY29kZWJ1aWxkLWJ1aWxkLWlkJyxcbiAgc291cmNlRXZlbnRJZDogJ3gtc291cmNlLWV2ZW50LWlkJyxcbn0gYXMgY29uc3Q7XG5cbi8qKiBNYXggbGVuZ3RoIG9mIGEgc3RvcmVkIGNvcnJlbGF0aW9uIGlkIC8gcmVxdWVzdCBpZC4gKi9cbmNvbnN0IE1BWF9DT1JSRUxBVElPTl9MRU4gPSAxMjg7XG4vKiogSWRzIGFyZSBvcGFxdWUgdG9rZW5zOiB1dWlkcywgYHByb2plY3Q6dXVpZGAgYnVpbGQgaWRzLCBVTElEcy4gTm90aGluZyBlbHNlIGlzIHN0b3JlZC4gKi9cbmNvbnN0IENPUlJFTEFUSU9OX0lEID0gL15bQS1aYS16MC05Ll86L0ArPS1dKyQvO1xuLyoqIEEgYmFyZSBBV1MgYWNjb3VudCBpZC4gKi9cbmNvbnN0IEJBUkVfQUNDT1VOVF9JRCA9IC9eXFxkezEyfSQvO1xuXG4vKiogTWF4IHN0b3JlZCBVc2VyLUFnZW50IGxlbmd0aCDigJQgYSBob3N0aWxlIGhlYWRlciBtdXN0IG5vdCBibG9hdCBhdWRpdCByb3dzLiAqL1xuY29uc3QgTUFYX1VTRVJfQUdFTlRfTEVOID0gNTEyO1xuLyoqIEMwICsgREVMICsgQzEgY29udHJvbCBjaGFyYWN0ZXJzLCByZXBsYWNlZCBzbyBhIFVBIGNhbid0IGluamVjdCBpbnRvIHRoZSBVSS9DU1YgZXhwb3J0LiAqL1xuY29uc3QgQ09OVFJPTF9DSEFSUyA9IG5ldyBSZWdFeHAoJ1tcXFxcdTAwMDAtXFxcXHUwMDFmXFxcXHUwMDdmLVxcXFx1MDA5Zl0nLCAnZycpO1xuXG5mdW5jdGlvbiBmaXJzdEhlYWRlcihyYXc6IHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkocmF3KSA/IHJhd1swXSA6IHJhdztcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSBhbiBpbmJvdW5kIGNvcnJlbGF0aW9uIGlkIChgWC1SZXF1ZXN0LUlkYCwgYFgtQ29kZUJ1aWxkLUJ1aWxkLUlkYCwg4oCmKTpcbiAqIGEgYm91bmRlZCBvcGFxdWUgdG9rZW4sIGVsc2UgYHVuZGVmaW5lZGAg4oCUIGFuIGludmFsaWQgdmFsdWUgaXMgZHJvcHBlZCwgbmV2ZXJcbiAqIHRydW5jYXRlZCBpbnRvIHNvbWV0aGluZyB0aGF0IGxvb2tzIGxpa2UgYSBkaWZmZXJlbnQgaWQuXG4gKlxuICogTm8gQVdTIGFjY291bnQgaWQgaXMgZXZlciBzdG9yZWQ6IGFuIEFSTiAoYSBDb2RlQnVpbGQgYnVpbGQgQVJOLCBzYXkpIGhhcyBpdHNcbiAqIGFjY291bnQgc2VnbWVudCBlbXB0aWVkLCBhbmQgYSBiYXJlIDEyLWRpZ2l0IHZhbHVlIGlzIHJlZnVzZWQuIFRoZSBnZW5lcmljXG4gKiAxMi1kaWdpdC1ydW4gc2NydWIgaXMgTk9UIHVzZWQgaGVyZSDigJQgaXQgd291bGQgcmVkYWN0IHRoZSBhbGwtZGlnaXQgZmluYWxcbiAqIGdyb3VwIG9mIHJvdWdobHkgb25lIHV1aWQgaW4gdGhyZWUgaHVuZHJlZCwgY29ycnVwdGluZyB0aGUgaWQgaXQgZXhpc3RzIHRvXG4gKiBjb3JyZWxhdGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzYW5pdGl6ZUNvcnJlbGF0aW9uSWQocmF3OiB1bmtub3duKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHR5cGVvZiByYXcgIT09ICdzdHJpbmcnKSByZXR1cm4gdW5kZWZpbmVkO1xuICBjb25zdCB2YWx1ZSA9IHJhdy50cmltKCk7XG4gIGlmICh2YWx1ZS5sZW5ndGggPT09IDAgfHwgdmFsdWUubGVuZ3RoID4gTUFYX0NPUlJFTEFUSU9OX0xFTiB8fCAhQ09SUkVMQVRJT05fSUQudGVzdCh2YWx1ZSkpIHJldHVybiB1bmRlZmluZWQ7XG4gIGlmIChCQVJFX0FDQ09VTlRfSUQudGVzdCh2YWx1ZSkpIHJldHVybiB1bmRlZmluZWQ7XG4gIGlmICgvXmFybjovaS50ZXN0KHZhbHVlKSkge1xuICAgIGNvbnN0IHBhcnRzID0gdmFsdWUuc3BsaXQoJzonKTtcbiAgICBpZiAocGFydHMubGVuZ3RoID4gNCkgcGFydHNbNF0gPSAnJztcbiAgICByZXR1cm4gcGFydHMuam9pbignOicpO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuLyoqIFN0cmlwIGNvbnRyb2wgY2hhcmFjdGVycyBmcm9tIGEgVXNlci1BZ2VudCBhbmQgY2FwIGl0cyBsZW5ndGg7IHVuZGVmaW5lZCB3aGVuIGVtcHR5LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNhbml0aXplVXNlckFnZW50KHJhdzogdW5rbm93bik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICh0eXBlb2YgcmF3ICE9PSAnc3RyaW5nJyB8fCByYXcubGVuZ3RoID09PSAwKSByZXR1cm4gdW5kZWZpbmVkO1xuICBjb25zdCBjbGVhbmVkID0gcmF3LnJlcGxhY2UoQ09OVFJPTF9DSEFSUywgJyAnKS50cmltKCk7XG4gIHJldHVybiBjbGVhbmVkLmxlbmd0aCA9PT0gMCA/IHVuZGVmaW5lZCA6IGNsZWFuZWQuc2xpY2UoMCwgTUFYX1VTRVJfQUdFTlRfTEVOKTtcbn1cblxuLyoqXG4gKiBUaGUgYXVkaXQgY29udGV4dCBmb3IgYW4gaW5ib3VuZCByZXF1ZXN0LiBgcmVxdWVzdElkYCBpcyB0aGUgaWQgdGhlXG4gKiByZXF1ZXN0LWlkIG1pZGRsZXdhcmUgcmVzb2x2ZWQgKHZhbGlkYXRlZCBpbmJvdW5kIGBYLVJlcXVlc3QtSWRgLCBlbHNlIGEgZnJlc2hcbiAqIHV1aWQpOyB0aGUgcHJpbmNpcGFsIGlzIHJlYWQgbGF6aWx5IGZyb20gYHJlcS51c2VyYCAoYXV0aCBydW5zIGxhdGVyIGluIHRoZVxuICogY2hhaW4pLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXVkaXRDb250ZXh0RnJvbVJlcXVlc3QocmVxOiBSZXF1ZXN0LCBpZHM6IHsgcmVxdWVzdElkPzogc3RyaW5nOyB0cmFjZUlkPzogc3RyaW5nIH0gPSB7fSk6IEF1ZGl0Q29udGV4dCB7XG4gIGNvbnN0IGNvcnJlbGF0aW9uOiBBdWRpdENvcnJlbGF0aW9uID0ge307XG4gIGZvciAoY29uc3QgW2ZpZWxkLCBoZWFkZXJdIG9mIE9iamVjdC5lbnRyaWVzKEFVRElUX0NPUlJFTEFUSU9OX0hFQURFUlMpIGFzIEFycmF5PFtrZXlvZiBBdWRpdENvcnJlbGF0aW9uLCBzdHJpbmddPikge1xuICAgIGNvbnN0IHZhbHVlID0gc2FuaXRpemVDb3JyZWxhdGlvbklkKGZpcnN0SGVhZGVyKHJlcS5oZWFkZXJzW2hlYWRlcl0pKTtcbiAgICBpZiAodmFsdWUpIGNvcnJlbGF0aW9uW2ZpZWxkXSA9IHZhbHVlO1xuICB9XG4gIHJldHVybiB7XG4gICAgcmVxdWVzdElkOiBpZHMucmVxdWVzdElkLFxuICAgIHRyYWNlSWQ6IGlkcy50cmFjZUlkLFxuICAgIGlwOiByZXEuaXAsXG4gICAgdXNlckFnZW50OiBzYW5pdGl6ZVVzZXJBZ2VudChmaXJzdEhlYWRlcihyZXEuaGVhZGVyc1sndXNlci1hZ2VudCddKSksXG4gICAgY29ycmVsYXRpb246IE9iamVjdC5rZXlzKGNvcnJlbGF0aW9uKS5sZW5ndGggPiAwID8gY29ycmVsYXRpb24gOiB1bmRlZmluZWQsXG4gICAgcHJpbmNpcGFsOiAoKSA9PiByZXEudXNlcixcbiAgfTtcbn1cblxuLyoqIFRoZSBgX2F1dGhgIGJsb2NrIGZvciBhIHZlcmlmaWVkIHByaW5jaXBhbCAodW5kZWZpbmVkIHdoZW4gdGhlcmUgaXMgbm9uZSkuICovXG5leHBvcnQgZnVuY3Rpb24gYXVkaXRBdXRoQmxvY2sodXNlcjogSnd0UGF5bG9hZCB8IHVuZGVmaW5lZCk6IEF1ZGl0QXV0aEJsb2NrIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCF1c2VyKSByZXR1cm4gdW5kZWZpbmVkO1xuICBjb25zdCBibG9jazogQXVkaXRBdXRoQmxvY2sgPSB7XG4gICAgcHJpbmNpcGFsVHlwZTogdXNlci5wcmluY2lwYWxUeXBlLFxuICAgIHNlcnZpY2U6IHNlcnZpY2VOYW1lT2YodXNlciksXG4gICAga2V5SWQ6IHVzZXIucGFyZW50S2V5SWQgPz8gdXNlci5qdGksXG4gICAgc2lkOiB1c2VyLnNpZCxcbiAgICBzY29wZTogdXNlci5zY29wZSxcbiAgICB0b2tlblVzZTogdXNlci50b2tlbl91c2UsXG4gICAgLi4uKHVzZXIucGVybWlzc2lvbnNSZXN0cmljdGVkID09PSB0cnVlID8geyBwZXJtaXNzaW9uc1Jlc3RyaWN0ZWQ6IHRydWUgYXMgY29uc3QgfSA6IHt9KSxcbiAgICAuLi4odXNlci5pc1N1cGVyQWRtaW4gPT09IHRydWUgPyB7IHN1cGVyQWRtaW46IHRydWUgYXMgY29uc3QgfSA6IHt9KSxcbiAgICAvLyBBIFNFUlZJQ0UgdG9rZW4gaW4gdGhlIHN5c3RlbSBvcmcgaXMgdGhlIHBsYXRmb3JtJ3Mgb3duIHBsdW1iaW5nLCBub3Qgc3RhZmZcbiAgICAvLyBhY3Rpbmcgb24gYSB0ZW5hbnQ7IG9ubHkgaHVtYW4gLyBzZXJ2aWNlLWFjY291bnQgcHJpbmNpcGFscyBjb3VudC5cbiAgICAuLi4odXNlci5wcmluY2lwYWxUeXBlICE9PSAnc2VydmljZScgJiYgaXNTeXN0ZW1PcmdJZCh1c2VyLm9yZ2FuaXphdGlvbklkKSA/IHsgc3lzdGVtT3JnOiB0cnVlIGFzIGNvbnN0IH0gOiB7fSksXG4gIH07XG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGJsb2NrKSBhcyBBcnJheTxrZXlvZiBBdWRpdEF1dGhCbG9jaz4pIHtcbiAgICBpZiAoYmxvY2tba2V5XSA9PT0gdW5kZWZpbmVkKSBkZWxldGUgYmxvY2tba2V5XTtcbiAgfVxuICByZXR1cm4gT2JqZWN0LmtleXMoYmxvY2spLmxlbmd0aCA+IDAgPyBibG9jayA6IHVuZGVmaW5lZDtcbn1cbiJdfQ==
|
|
@@ -210,4 +210,4 @@ export function createEnvRedisAuditSpool(opts) {
|
|
|
210
210
|
// every command waits (bounded) for readiness.
|
|
211
211
|
return createRedisAuditSpool(inst, { ...opts, ready: createRedisReadyGate(inst, 10_000) });
|
|
212
212
|
}
|
|
213
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtc3Bvb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvYXVkaXQtc3Bvb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxvQkFBb0IsRUFBd0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVwRCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7QUEwRTNDOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsV0FBbUI7SUFDL0MsT0FBTyxlQUFlLFdBQVcsRUFBRSxDQUFDO0FBQ3RDLENBQUM7QUFFRCxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQztBQUNqQyxzRkFBc0Y7QUFDdEYsTUFBTSxzQkFBc0IsR0FBRyxFQUFFLEdBQUcsTUFBTSxDQUFDO0FBQzNDLG9GQUFvRjtBQUNwRixNQUFNLG1CQUFtQixHQUFHLE9BQU8sQ0FBQztBQUVwQyxTQUFTLFNBQVMsQ0FBQyxHQUFXO0lBQzVCLElBQUksQ0FBQztRQUNILE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFvQixDQUFDO1FBQ2xELE9BQU8sTUFBTSxJQUFJLE1BQU0sQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDdEUsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztBQUNILENBQUM7QUFtQkQsTUFBTSxVQUFVLHFCQUFxQixDQUFDLEtBQXNCLEVBQUUsSUFBNEI7SUFDeEYsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNyQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLFVBQVUsRUFBRSxDQUFDO0lBQzdDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxZQUFZLElBQUksc0JBQXNCLENBQUMsQ0FBQztJQUM5RSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDdEQsMEVBQTBFO0lBQzFFLDZFQUE2RTtJQUM3RSxnRkFBZ0Y7SUFDaEYsK0VBQStFO0lBQy9FLDBFQUEwRTtJQUMxRSxtRUFBbUU7SUFDbkUsTUFBTSxhQUFhLEdBQUcsQ0FBQyxLQUFhLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxhQUFhLEtBQUssRUFBRSxDQUFDO0lBQ3BFLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3QyxNQUFNLFNBQVMsR0FBRyxHQUFHLEdBQUcsU0FBUyxDQUFDO0lBQ2xDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxRQUFRLElBQUksaUJBQWlCLENBQUMsQ0FBQztJQUVqRSxNQUFNLElBQUksR0FBRyxLQUFLLElBQW1CLEVBQUU7UUFDckMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbkQsQ0FBQyxDQUFDO0lBRUYsOEVBQThFO0lBQzlFLDhFQUE4RTtJQUM5RSw4RUFBOEU7SUFDOUUsMEVBQTBFO0lBQzFFLE1BQU0sVUFBVSxHQUFHLElBQUksT0FBTyxFQUEyQixDQUFDO0lBQzFELE1BQU0sS0FBSyxHQUFHLENBQUMsS0FBc0IsRUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRWpHLE9BQU87UUFDTCxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUs7WUFDakIsSUFBSSxDQUFDO2dCQUNILE1BQU0sS0FBSyxFQUFFLENBQUM7Z0JBQ2QsTUFBTSxHQUFHLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQzFELFdBQVcsQ0FBQyw0QkFBNEIsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztnQkFDMUUsSUFBSSxHQUFHLEdBQUcsUUFBUSxFQUFFLENBQUM7b0JBQ25CLGtFQUFrRTtvQkFDbEUsTUFBTSxPQUFPLEdBQUcsR0FBRyxHQUFHLFFBQVEsQ0FBQztvQkFDL0IsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDcEMsV0FBVyxDQUFDLDJCQUEyQixFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxXQUFXLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztvQkFDbEYsTUFBTSxDQUFDLElBQUksQ0FBQyx1REFBdUQsRUFBRSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUM5RixDQUFDO1lBQ0gsQ0FBQztZQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7Z0JBQ2IsTUFBTSxDQUFDLElBQUksQ0FBQyx5Q0FBeUMsRUFBRSxFQUFFLEtBQUssRUFBRSxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZGLENBQUM7UUFDSCxDQUFDO1FBRUQsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHO1lBQ1osSUFBSSxDQUFDO2dCQUNILE1BQU0sS0FBSyxFQUFFLENBQUM7Z0JBQ2QsTUFBTSxJQUFJLEVBQUUsQ0FBQztnQkFDYixNQUFNLEdBQUcsR0FBc0IsRUFBRSxDQUFDO2dCQUNsQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDL0IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO29CQUMvQix3RUFBd0U7b0JBQ3hFLHFFQUFxRTtvQkFDckUsTUFBTSxHQUFHLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO29CQUNuRSxJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxLQUFLLFNBQVM7d0JBQUUsTUFBTTtvQkFDN0MsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUM5QixJQUFJLE1BQU0sRUFBRSxDQUFDO3dCQUNYLFVBQVUsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO3dCQUM1QixHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUNuQixDQUFDO3lCQUFNLENBQUM7d0JBQ04sdUVBQXVFO3dCQUN2RSxpQ0FBaUM7d0JBQ2pDLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO3dCQUN4QyxXQUFXLENBQUMsMkJBQTJCLEVBQUUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztvQkFDbkUsQ0FBQztnQkFDSCxDQUFDO2dCQUNELE9BQU8sR0FBRyxDQUFDO1lBQ2IsQ0FBQztZQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7Z0JBQ2IsTUFBTSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxFQUFFLEtBQUssRUFBRSxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNyRSxPQUFPLEVBQUUsQ0FBQztZQUNaLENBQUM7UUFDSCxDQUFDO1FBRUQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPO1lBQ2YsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUM7Z0JBQUUsT0FBTztZQUNqQyxJQUFJLENBQUM7Z0JBQ0gsTUFBTSxLQUFLLEVBQUUsQ0FBQztnQkFDZCxLQUFLLE1BQU0sS0FBSyxJQUFJLE9BQU8sRUFBRSxDQUFDO29CQUM1QixNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztvQkFDakQsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDM0IsQ0FBQztZQUNILENBQUM7WUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO2dCQUNiLE1BQU0sQ0FBQyxJQUFJLENBQUMsb0RBQW9ELEVBQUUsRUFBRSxLQUFLLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNsRyxDQUFDO1FBQ0gsQ0FBQztRQUVELEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTztZQUNuQixJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQztnQkFBRSxPQUFPO1lBQ2pDLElBQUksQ0FBQztnQkFDSCx5RUFBeUU7Z0JBQ3pFLHVFQUF1RTtnQkFDdkUseUVBQXlFO2dCQUN6RSxvRUFBb0U7Z0JBQ3BFLEVBQUU7Z0JBQ0YseUVBQXlFO2dCQUN6RSwwRUFBMEU7Z0JBQzFFLHNFQUFzRTtnQkFDdEUsMkVBQTJFO2dCQUMzRSwwRUFBMEU7Z0JBQzFFLE1BQU0sS0FBSyxFQUFFLENBQUM7Z0JBQ2QsS0FBSyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7b0JBQzdDLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDOUIsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztvQkFDNUIsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBQ3hDLFVBQVUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hDLENBQUM7WUFDSCxDQUFDO1lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztnQkFDYixNQUFNLENBQUMsSUFBSSxDQUFDLDBDQUEwQyxFQUFFLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDeEYsQ0FBQztRQUNILENBQUM7UUFFRCxLQUFLLENBQUMsT0FBTztZQUNYLElBQUksQ0FBQztnQkFDSCxNQUFNLEtBQUssRUFBRSxDQUFDO2dCQUNkLE1BQU0sSUFBSSxFQUFFLENBQUM7Z0JBQ2IsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO2dCQUNsQixNQUFNLEtBQUssR0FBRyxNQUFNLEtBQUssQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsWUFBWSxDQUFDLENBQUM7Z0JBQ3RGLEtBQUssTUFBTSxLQUFLLElBQUksS0FBSyxFQUFFLENBQUM7b0JBQzFCLElBQUksS0FBSyxLQUFLLE9BQU87d0JBQUUsU0FBUztvQkFDaEMsTUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNwQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsbUJBQW1CLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQzt3QkFDN0MscUVBQXFFO3dCQUNyRSx3RUFBd0U7d0JBQ3hFLE1BQU0sR0FBRyxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQzt3QkFDNUQsSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsS0FBSyxTQUFTOzRCQUFFLE1BQU07d0JBQzdDLFNBQVMsRUFBRSxDQUFDO29CQUNkLENBQUM7b0JBQ0QsZ0RBQWdEO29CQUNoRCxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNyQyxDQUFDO2dCQUNELElBQUksU0FBUyxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUNsQixXQUFXLENBQUMsNkJBQTZCLEVBQUUsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDO29CQUMxRCxNQUFNLENBQUMsSUFBSSxDQUFDLHVEQUF1RCxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztnQkFDdEYsQ0FBQztnQkFDRCxPQUFPLFNBQVMsQ0FBQztZQUNuQixDQUFDO1lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztnQkFDYixNQUFNLENBQUMsSUFBSSxDQUFDLDRCQUE0QixFQUFFLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3hFLE9BQU8sQ0FBQyxDQUFDO1lBQ1gsQ0FBQztRQUNILENBQUM7UUFFRCxLQUFLLENBQUMsU0FBUztZQUNiLElBQUksQ0FBQztnQkFDSCxNQUFNLEtBQUssRUFBRSxDQUFDO2dCQUNkLE1BQU0sSUFBSSxFQUFFLENBQUM7WUFDZixDQUFDO1lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztnQkFDYixNQUFNLENBQUMsS0FBSyxDQUFDLDhCQUE4QixFQUFFLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDN0UsQ0FBQztRQUNILENBQUM7UUFFRCxLQUFLLENBQUMsS0FBSztZQUNULElBQUksQ0FBQztnQkFDSCxPQUFPLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMvQixDQUFDO1lBQUMsTUFBTSxDQUFDO2dCQUNQLE9BQU8sQ0FBQyxDQUFDO1lBQ1gsQ0FBQztRQUNILENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLHdCQUF3QixDQUFDLElBQTJDO0lBQ2xGLE1BQU0sSUFBSSxHQUFHLG9CQUFvQixDQUFvQyxhQUFhLENBQUMsQ0FBQztJQUNwRixJQUFJLENBQUMsSUFBSTtRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQ3ZCLE1BQU0sQ0FBQyxJQUFJLENBQUMsK0JBQStCLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDaEUsNEVBQTRFO0lBQzVFLDRFQUE0RTtJQUM1RSwrQ0FBK0M7SUFDL0MsT0FBTyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLElBQUksRUFBRSxLQUFLLEVBQUUsb0JBQW9CLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM3RixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IHJhbmRvbVVVSUQgfSBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHsgY3JlYXRlRW52UmVkaXNDbGllbnQsIGNyZWF0ZVJlZGlzUmVhZHlHYXRlLCB0eXBlIFJlYWR5QXdhcmVSZWRpcyB9IGZyb20gJy4vZW52LXJlZGlzLmpzJztcbmltcG9ydCB0eXBlIHsgUmVtb3RlQXVkaXRFdmVudCB9IGZyb20gJy4vcmVtb3RlLWF1ZGl0LWNsaWVudC5qcyc7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tICcuLi91dGlscy9sb2dnZXIuanMnO1xuaW1wb3J0IHsgZW1pdENvdW50ZXIgfSBmcm9tICcuLi91dGlscy9tZXRyaWMtZW1pdHRlci5qcyc7XG5pbXBvcnQgeyBlcnJvck1lc3NhZ2UgfSBmcm9tICcuLi91dGlscy9yZXNwb25zZS5qcyc7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcignYXVkaXQtc3Bvb2wnKTtcblxuLyoqIEEgYnVmZmVyZWQgZW1pc3Npb246IHRoZSBldmVudCBwbHVzIHdoaWNoIHNlcnZpY2UgbXVzdCByZS1kZWxpdmVyIGl0LiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdWRpdFNwb29sRW50cnkge1xuICBldmVudDogUmVtb3RlQXVkaXRFdmVudDtcbiAgc2VydmljZU5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBEdXJhYmxlIGJ1ZmZlciBmb3IgYXVkaXQgZXZlbnRzIHRoYXQgZmFpbGVkIExJVkUgZGVsaXZlcnkgdG8gdGhlIHBsYXRmb3JtXG4gKiAocmV0cmllcyBleGhhdXN0ZWQgZHVyaW5nIGEgc3VzdGFpbmVkIG91dGFnZSkuIFdpdGhvdXQgdGhpcywgdGhlIGF1ZGl0IHRyYWlsIOKAlFxuICogYSBzZWN1cml0eSBsb2cg4oCUIGlzIHNpbGVudGx5IGxvc3QgdGhlIG1vbWVudCB0aGUgcGxhdGZvcm0gaXMgZG93biBmb3IgbG9uZ2VyXG4gKiB0aGFuIHRoZSBjbGllbnQncyBzbWFsbCByZXRyeSBidWRnZXQuXG4gKlxuICogQ29udHJhY3Q6XG4gKiAtIEJPVU5ERUQuIEEgc2VjdXJpdHkgbG9nIG11c3QgZGVncmFkZSB0byBcImRyb3BwZWQgdGhlIG9sZGVzdCwgbG91ZGx5XCIgKGFcbiAqICAgbWV0cmljKSByYXRoZXIgdGhhbiBncm93IHdpdGhvdXQgbGltaXQgYW5kIE9PTSB0aGUgZW1pdHRlci5cbiAqIC0gRkFJTC1TQUZFLiBFdmVyeSBtZXRob2Qgc3dhbGxvd3MgaXRzIG93biBlcnJvcnMg4oCUIGEgYnJva2VuL3VucmVhY2hhYmxlIHNwb29sXG4gKiAgIG11c3QgbmV2ZXIgYnJlYWsgb3IgYmxvY2sgdGhlIGF1ZGl0IGVtaXNzaW9uIHBhdGggKHdoaWNoIGlzIGl0c2VsZlxuICogICBmaXJlLWFuZC1mb3JnZXQpLiBBIHNwb29sIHByb2JsZW0gZGVncmFkZXMgdG8gdGhlIHByZS1zcG9vbCBiZWhhdmlvci5cbiAqIC0gT3JkZXJpbmcgaXMgYmVzdC1lZmZvcnQuIFJlLWRlbGl2ZXJlZCBldmVudHMgY2hhaW4gYXQgcmUtZGVsaXZlcnkgdGltZVxuICogICAodGhhdCdzIHdoZW4gdGhlIHBsYXRmb3JtIGluc2VydHMgdGhlbSksIHNvIGVhY2ggZXZlbnQgYWxzbyBjYXJyaWVzIGFuXG4gKiAgIGBvY2N1cnJlZEF0YCBzdGFtcGVkIGF0IGVtaXNzaW9uIGZvciByZXZpZXdlcnMg4oCUIHNlZSBSZW1vdGVBdWRpdEV2ZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF1ZGl0U3Bvb2wge1xuICAvKiogQnVmZmVyIGFuIGV2ZW50IHRoYXQgZmFpbGVkIGxpdmUgZGVsaXZlcnkuICovXG4gIGVucXVldWUoZW50cnk6IEF1ZGl0U3Bvb2xFbnRyeSk6IFByb21pc2U8dm9pZD47XG4gIC8qKlxuICAgKiBBdG9taWNhbGx5IE1PVkUgdXAgdG8gYG1heGAgYnVmZmVyZWQgZW50cmllcyBvbnRvIGFuIGluLXByb2dyZXNzIGxpc3QgYW5kXG4gICAqIHJldHVybiB0aGVtLiBCZWNhdXNlIHRoZSBlbnRyaWVzIGFyZSBtb3ZlZCAobm90IHBvcHBlZC1hbmQtZHJvcHBlZCksIGEgY3Jhc2hcbiAgICogbWlkLWRyYWluIGxlYXZlcyB0aGVtIHJlY292ZXJhYmxlIG9uIHRoZSBpbi1wcm9ncmVzcyBsaXN0IOKAlCBzZWUgYHJlY292ZXJgLlxuICAgKiBFYWNoIHRha2VuIGVudHJ5IE1VU1QgYmUgcmVzb2x2ZWQgd2l0aCBleGFjdGx5IG9uZSBvZiBgYWNrYCAoZGVsaXZlcmVkKSBvclxuICAgKiBgcmVxdWV1ZWAgKHN0aWxsIGZhaWxpbmcpLCBvciBpdCBsaW5nZXJzIG9uIHRoZSBpbi1wcm9ncmVzcyBsaXN0IHVudGlsIHRoZVxuICAgKiBuZXh0IGByZWNvdmVyYC5cbiAgICovXG4gIHRha2UobWF4OiBudW1iZXIpOiBQcm9taXNlPEF1ZGl0U3Bvb2xFbnRyeVtdPjtcbiAgLyoqIEFja25vd2xlZGdlIHN1Y2Nlc3NmdWxseSByZS1kZWxpdmVyZWQgZW50cmllcyDigJQgcmVtb3ZlcyB0aGVtIGZyb20gdGhlXG4gICAqICBpbi1wcm9ncmVzcyBsaXN0IHNvIHRoZXkgYXJlIG5vdCByZWNvdmVyZWQgYWdhaW4uICovXG4gIGFjayhlbnRyaWVzOiBBdWRpdFNwb29sRW50cnlbXSk6IFByb21pc2U8dm9pZD47XG4gIC8qKiBSZXR1cm4gZW50cmllcyB3aG9zZSByZS1kZWxpdmVyeSBmYWlsZWQgdG8gdGhlIEhFQUQgb2YgdGhlIGJ1ZmZlciAocmV0cmllZFxuICAgKiAgZmlyc3QpIGFuZCBjbGVhciB0aGVtIGZyb20gdGhlIGluLXByb2dyZXNzIGxpc3QuIEJlc3QtZWZmb3J0LiAqL1xuICByZXF1ZXVlKGVudHJpZXM6IEF1ZGl0U3Bvb2xFbnRyeVtdKTogUHJvbWlzZTx2b2lkPjtcbiAgLyoqXG4gICAqIFJlY2xhaW0gZW50cmllcyBzdHJhbmRlZCBvbiBBQkFORE9ORUQgaW4tcHJvZ3Jlc3MgbGlzdHMg4oCUIHRob3NlIG9mIG93bmVyc1xuICAgKiAoc3Bvb2wgaW5zdGFuY2VzLCBpLmUuIHBvZHMpIHdob3NlIGhlYXJ0YmVhdCBpcyBvbGRlciB0aGFuIHRoZSBzdGFsZVxuICAgKiB0aHJlc2hvbGQg4oCUIG1vdmluZyB0aGVtIGJhY2sgdG8gdGhlIGhlYWQgb2YgdGhlIG1haW4gYnVmZmVyLiBBIExJVkUgb3duZXInc1xuICAgKiBpbi1mbGlnaHQgYmF0Y2ggaXMgbmV2ZXIgdG91Y2hlZCwgc28gYSBwZWVyJ3MgcmVjb3ZlciBjYW4ndCBkdXBsaWNhdGUgd29ya1xuICAgKiB0aGF0IG93bmVyIGlzIHN0aWxsIGRlbGl2ZXJpbmcuIFNhZmUgdG8gY2FsbCBwZXJpb2RpY2FsbHk7IHJldHVybnMgdGhlXG4gICAqIG51bWJlciByZWNsYWltZWQuXG4gICAqL1xuICByZWNvdmVyKCk6IFByb21pc2U8bnVtYmVyPjtcbiAgLyoqIE1hcmsgdGhpcyBvd25lciBhbGl2ZSAoc28gbm8gcGVlciByZWNsYWltcyBpdHMgaW4tZmxpZ2h0IGJhdGNoKS4gKi9cbiAgaGVhcnRiZWF0KCk6IFByb21pc2U8dm9pZD47XG4gIC8qKiBBcHByb3hpbWF0ZSBjdXJyZW50IGRlcHRoIChmb3IgbWV0cmljcyAvIGRyYWluIGRlY2lzaW9ucykuICovXG4gIGRlcHRoKCk6IFByb21pc2U8bnVtYmVyPjtcbn1cblxuLyoqIE1pbmltYWwgUmVkaXMgTElTVCBzdXJmYWNlIHRoZSBzcG9vbCBuZWVkcyAoYSBzdWJzZXQgb2YgaW9yZWRpcykuICovXG5pbnRlcmZhY2UgUmVkaXNMaXN0Q2xpZW50IHtcbiAgcnB1c2goa2V5OiBzdHJpbmcsIC4uLnZhbHVlczogc3RyaW5nW10pOiBQcm9taXNlPG51bWJlcj47XG4gIGxwdXNoKGtleTogc3RyaW5nLCAuLi52YWx1ZXM6IHN0cmluZ1tdKTogUHJvbWlzZTxudW1iZXI+O1xuICBscG9wKGtleTogc3RyaW5nLCBjb3VudDogbnVtYmVyKTogUHJvbWlzZTxzdHJpbmdbXSB8IG51bGw+O1xuICBsdHJpbShrZXk6IHN0cmluZywgc3RhcnQ6IG51bWJlciwgc3RvcDogbnVtYmVyKTogUHJvbWlzZTx1bmtub3duPjtcbiAgbGxlbihrZXk6IHN0cmluZyk6IFByb21pc2U8bnVtYmVyPjtcbiAgLyoqIEF0b21pY2FsbHkgcG9wIGZyb20gb25lIGxpc3QgZW5kIGFuZCBwdXNoIHRvIGFub3RoZXIgKFJlZGlzIOKJpSA2LjIpLiAqL1xuICBsbW92ZShzb3VyY2U6IHN0cmluZywgZGVzdGluYXRpb246IHN0cmluZywgZnJvbTogJ0xFRlQnIHwgJ1JJR0hUJywgdG86ICdMRUZUJyB8ICdSSUdIVCcpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+O1xuICAvKiogUmVtb3ZlIGBjb3VudGAgb2NjdXJyZW5jZXMgb2YgYHZhbHVlYCBmcm9tIGEgbGlzdC4gKi9cbiAgbHJlbShrZXk6IHN0cmluZywgY291bnQ6IG51bWJlciwgdmFsdWU6IHN0cmluZyk6IFByb21pc2U8bnVtYmVyPjtcbiAgLyoqIE93bmVyIGhlYXJ0YmVhdHM6IGEgc29ydGVkIHNldCBvZiBvd25lciBpZCDihpIgbGFzdC1zZWVuIGVwb2NoIG1zLiAqL1xuICB6YWRkKGtleTogc3RyaW5nLCBzY29yZTogbnVtYmVyLCBtZW1iZXI6IHN0cmluZyk6IFByb21pc2U8dW5rbm93bj47XG4gIHpyYW5nZWJ5c2NvcmUoa2V5OiBzdHJpbmcsIG1pbjogbnVtYmVyIHwgc3RyaW5nLCBtYXg6IG51bWJlciB8IHN0cmluZyk6IFByb21pc2U8c3RyaW5nW10+O1xuICB6cmVtKGtleTogc3RyaW5nLCBtZW1iZXI6IHN0cmluZyk6IFByb21pc2U8bnVtYmVyPjtcbn1cblxuLyoqXG4gKiBUaGUgc3Bvb2wga2V5IGZvciBvbmUgc2VydmljZSdzIGJ1ZmZlcmVkIGF1ZGl0IGV2ZW50cy4gUGVyIFNFUlZJQ0Ugb25cbiAqIHB1cnBvc2U6IHJlLWRlbGl2ZXJ5IG1pbnRzIGEgc2VydmljZSB0b2tlbiBhcyBgZW50cnkuc2VydmljZU5hbWVgLCB3aGljaCBvbmx5XG4gKiB0aGF0IHNlcnZpY2UncyBwb2RzIGNhbiBzaWduIChwZXItc2VydmljZSBrZXlzKS4gQSBzaGFyZWQga2V5IGxldCBhIHBvZCBvZlxuICogb25lIHNlcnZpY2UgdGFrZSBhbm90aGVyJ3MgZW50cmllcywgZmFpbCB0byBzaWduIGZvciB0aGVtLCBhbmQgcmVxdWV1ZSB0aGVtXG4gKiBmb3JldmVyIOKAlCB3aGlsZSB0aGF0IHNlcnZpY2UncyBvd24gcG9kcyBuZXZlciBzYXcgdGhlbS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGF1ZGl0U3Bvb2xLZXkoc2VydmljZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgYXVkaXQ6c3Bvb2w6JHtzZXJ2aWNlTmFtZX1gO1xufVxuXG5jb25zdCBERUZBVUxUX01BWF9ERVBUSCA9IDEwXzAwMDtcbi8qKiBBbiBvd25lciB3aG9zZSBoZWFydGJlYXQgaXMgb2xkZXIgdGhhbiB0aGlzIGlzIHByZXN1bWVkIGRlYWQgKGl0cyBwb2QgY3Jhc2hlZCkuICovXG5jb25zdCBERUZBVUxUX1NUQUxFX09XTkVSX01TID0gMTAgKiA2MF8wMDA7XG4vKiogR3VhcmQgc28gYSBwYXRob2xvZ2ljYWwgaW4tcHJvZ3Jlc3MgbGlzdCBjYW4ndCBzcGluIGByZWNvdmVyYC9gdGFrZWAgZm9yZXZlci4gKi9cbmNvbnN0IE1BWF9NT1ZFX0lURVJBVElPTlMgPSAxMDBfMDAwO1xuXG5mdW5jdGlvbiBzYWZlUGFyc2UocmF3OiBzdHJpbmcpOiBBdWRpdFNwb29sRW50cnkgfCBudWxsIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKHJhdykgYXMgQXVkaXRTcG9vbEVudHJ5O1xuICAgIHJldHVybiBwYXJzZWQgJiYgcGFyc2VkLmV2ZW50ICYmIHBhcnNlZC5zZXJ2aWNlTmFtZSA/IHBhcnNlZCA6IG51bGw7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbi8qKlxuICogUmVkaXMtTElTVC1iYWNrZWQgc3Bvb2wuIER1cmFibGUgYWNyb3NzIHByb2Nlc3MgcmVzdGFydHMgKHVubGlrZSBhbiBpbi1tZW1vcnlcbiAqIG9yIHBlci1wb2QtZGlzayBidWZmZXIpLCBzaGFyZWQgYnkgYWxsIHJlcGxpY2FzIG9mIGEgc2VydmljZSwgYW5kIGJvdW5kZWQgdmlhXG4gKiBhIHRyaW0tdG8tdGFpbCBvbiBvdmVyZmxvdyAoZHJvcHMgdGhlIE9MREVTVCwgZW1pdHRpbmcgYGF1ZGl0X3Nwb29sX2Ryb3BwZWRfdG90YWxgKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWRpc0F1ZGl0U3Bvb2xPcHRpb25zIHtcbiAgLyoqIFRoZSBidWZmZXIncyBSZWRpcyBrZXkg4oCUIG9uZSBwZXIgc2VydmljZSAoe0BsaW5rIGF1ZGl0U3Bvb2xLZXl9KS4gKi9cbiAga2V5OiBzdHJpbmc7XG4gIG1heERlcHRoPzogbnVtYmVyO1xuICAvKiogVGhpcyBpbnN0YW5jZSdzIG93bmVyIGlkIChkZWZhdWx0OiByYW5kb20gcGVyIGluc3RhbmNlKS4gKi9cbiAgb3duZXJJZD86IHN0cmluZztcbiAgLyoqIEhlYXJ0YmVhdCBhZ2UgYWZ0ZXIgd2hpY2ggYW4gb3duZXIncyBpbi1mbGlnaHQgYmF0Y2ggaXMgcmVjbGFpbWFibGUuICovXG4gIHN0YWxlT3duZXJNcz86IG51bWJlcjtcbiAgLyoqIEF3YWl0ZWQgYmVmb3JlIGVhY2ggY29tbWFuZCDigJQgZS5nLiBhIHJlYWRpbmVzcyBnYXRlIGZvciBhIGxhemlseSBjb25uZWN0aW5nIGNsaWVudC4gKi9cbiAgcmVhZHk/OiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmVkaXNBdWRpdFNwb29sKHJlZGlzOiBSZWRpc0xpc3RDbGllbnQsIG9wdHM6IFJlZGlzQXVkaXRTcG9vbE9wdGlvbnMpOiBBdWRpdFNwb29sIHtcbiAgY29uc3Qga2V5ID0gb3B0cy5rZXk7XG4gIGNvbnN0IG93bmVySWQgPSBvcHRzLm93bmVySWQgPz8gcmFuZG9tVVVJRCgpO1xuICBjb25zdCBzdGFsZU93bmVyTXMgPSBNYXRoLm1heCgxLCBvcHRzLnN0YWxlT3duZXJNcyA/PyBERUZBVUxUX1NUQUxFX09XTkVSX01TKTtcbiAgY29uc3QgcmVhZHkgPSBvcHRzLnJlYWR5ID8/ICgoKSA9PiBQcm9taXNlLnJlc29sdmUoKSk7XG4gIC8vIFBFUi1PV05FUiBpbi1wcm9ncmVzcyBsaXN0IOKAlCBhIHRha2VuIGJhdGNoIGxpdmVzIGhlcmUgdW50aWwgaXQgaXMgYWNrZWRcbiAgLy8gKGRlbGl2ZXJlZCkgb3IgcmVxdWV1ZWQgKHN0aWxsIGZhaWxpbmcpLiBJdCBpcyBhIHNlY3VyaXR5IGxvZydzIGR1cmFiaWxpdHlcbiAgLy8gbmV0OiBhIGNyYXNoIGJldHdlZW4gdGFrZSBhbmQgYWNrL3JlcXVldWUgbGVhdmVzIHRoZSBiYXRjaCBoZXJlLCBhbmQgYSBwZWVyJ3NcbiAgLy8gKG9yIHRoaXMgcG9kJ3Mgc3VjY2Vzc29yJ3MpIGByZWNvdmVyYCByZWNsYWltcyBpdCBvbmNlIHRoZSBvd25lcidzIGhlYXJ0YmVhdFxuICAvLyBnb2VzIHN0YWxlLiBPbmUgc2hhcmVkIGluLWZsaWdodCBsaXN0IGxldCBhbnkgcmVwbGljYSdzIHN0YXJ0dXAgcmVjb3ZlclxuICAvLyBzdGVhbCBiYXRjaGVzIGl0cyBsaXZlIHNpYmxpbmdzIHdlcmUgbWlkLXdheSB0aHJvdWdoIGRlbGl2ZXJpbmcuXG4gIGNvbnN0IGluZmxpZ2h0S2V5T2YgPSAob3duZXI6IHN0cmluZykgPT4gYCR7a2V5fTppbmZsaWdodDoke293bmVyfWA7XG4gIGNvbnN0IGluUHJvZ3Jlc3NLZXkgPSBpbmZsaWdodEtleU9mKG93bmVySWQpO1xuICBjb25zdCBvd25lcnNLZXkgPSBgJHtrZXl9Om93bmVyc2A7XG4gIGNvbnN0IG1heERlcHRoID0gTWF0aC5tYXgoMSwgb3B0cy5tYXhEZXB0aCA/PyBERUZBVUxUX01BWF9ERVBUSCk7XG5cbiAgY29uc3QgYmVhdCA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBhd2FpdCByZWRpcy56YWRkKG93bmVyc0tleSwgRGF0ZS5ub3coKSwgb3duZXJJZCk7XG4gIH07XG5cbiAgLy8gVGhlIEVYQUNUIHNlcmlhbGl6ZWQgc3RyaW5nIGVhY2ggcmV0dXJuZWQgZW50cnkgd2FzIHBhcnNlZCBmcm9tLCBzbyBgYWNrYCAvXG4gIC8vIGByZXF1ZXVlYCBjYW4gTFJFTSB0aGUgcHJlY2lzZSB2YWx1ZSBvZmYgdGhlIGluLXByb2dyZXNzIGxpc3QuIEtleWVkIGJ5IHRoZVxuICAvLyByZXR1cm5lZCBvYmplY3QgaWRlbnRpdHkgKHRoZSBkcmFpbiBjb25zdW1lciBwYXNzZXMgdGhlIFNBTUUgb2JqZWN0cyBiYWNrKSxcbiAgLy8gc28gaXQgbmVlZHMgbm8gc3RhYmxlIHJlLXNlcmlhbGl6YXRpb24uIFdlYWtNYXAg4oaSIGVudHJpZXMgR0MgbmF0dXJhbGx5LlxuICBjb25zdCByYXdCeUVudHJ5ID0gbmV3IFdlYWtNYXA8QXVkaXRTcG9vbEVudHJ5LCBzdHJpbmc+KCk7XG4gIGNvbnN0IHJhd09mID0gKGVudHJ5OiBBdWRpdFNwb29sRW50cnkpOiBzdHJpbmcgPT4gcmF3QnlFbnRyeS5nZXQoZW50cnkpID8/IEpTT04uc3RyaW5naWZ5KGVudHJ5KTtcblxuICByZXR1cm4ge1xuICAgIGFzeW5jIGVucXVldWUoZW50cnkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHJlYWR5KCk7XG4gICAgICAgIGNvbnN0IGxlbiA9IGF3YWl0IHJlZGlzLnJwdXNoKGtleSwgSlNPTi5zdHJpbmdpZnkoZW50cnkpKTtcbiAgICAgICAgZW1pdENvdW50ZXIoJ2F1ZGl0X3Nwb29sX2VucXVldWVkX3RvdGFsJywgeyBzZXJ2aWNlOiBlbnRyeS5zZXJ2aWNlTmFtZSB9KTtcbiAgICAgICAgaWYgKGxlbiA+IG1heERlcHRoKSB7XG4gICAgICAgICAgLy8gS2VlcCBvbmx5IHRoZSBuZXdlc3QgYG1heERlcHRoYDsgZHJvcCB0aGUgb3ZlcmZsb3cgYXQgdGhlIGhlYWQuXG4gICAgICAgICAgY29uc3QgZHJvcHBlZCA9IGxlbiAtIG1heERlcHRoO1xuICAgICAgICAgIGF3YWl0IHJlZGlzLmx0cmltKGtleSwgZHJvcHBlZCwgLTEpO1xuICAgICAgICAgIGVtaXRDb3VudGVyKCdhdWRpdF9zcG9vbF9kcm9wcGVkX3RvdGFsJywgeyBzZXJ2aWNlOiBlbnRyeS5zZXJ2aWNlTmFtZSB9LCBkcm9wcGVkKTtcbiAgICAgICAgICBsb2dnZXIud2FybignQXVkaXQgc3Bvb2wgb3ZlcmZsb3cg4oCUIGRyb3BwZWQgb2xkZXN0IGJ1ZmZlcmVkIGV2ZW50cycsIHsgZHJvcHBlZCwgbWF4RGVwdGggfSk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBsb2dnZXIud2FybignQXVkaXQgc3Bvb2wgZW5xdWV1ZSBmYWlsZWQgKGV2ZW50IGxvc3QpJywgeyBlcnJvcjogZXJyb3JNZXNzYWdlKGVycikgfSk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGFzeW5jIHRha2UobWF4KSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCByZWFkeSgpO1xuICAgICAgICBhd2FpdCBiZWF0KCk7XG4gICAgICAgIGNvbnN0IG91dDogQXVkaXRTcG9vbEVudHJ5W10gPSBbXTtcbiAgICAgICAgY29uc3QgbGltaXQgPSBNYXRoLm1heCgxLCBtYXgpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbWl0OyBpKyspIHtcbiAgICAgICAgICAvLyBBdG9taWNhbGx5IE1PVkUgaGVhZOKGkmluLXByb2dyZXNzLXRhaWwgc28gdGhlIGVudHJ5IGlzIG5ldmVyIGluIGxpbWJvOlxuICAgICAgICAgIC8vIGl0IGlzIG9uIGV4YWN0bHkgb25lIGxpc3QgYXQgYWxsIHRpbWVzLCByZWNvdmVyYWJsZSBhZnRlciBhIGNyYXNoLlxuICAgICAgICAgIGNvbnN0IHJhdyA9IGF3YWl0IHJlZGlzLmxtb3ZlKGtleSwgaW5Qcm9ncmVzc0tleSwgJ0xFRlQnLCAnUklHSFQnKTtcbiAgICAgICAgICBpZiAocmF3ID09PSBudWxsIHx8IHJhdyA9PT0gdW5kZWZpbmVkKSBicmVhaztcbiAgICAgICAgICBjb25zdCBwYXJzZWQgPSBzYWZlUGFyc2UocmF3KTtcbiAgICAgICAgICBpZiAocGFyc2VkKSB7XG4gICAgICAgICAgICByYXdCeUVudHJ5LnNldChwYXJzZWQsIHJhdyk7XG4gICAgICAgICAgICBvdXQucHVzaChwYXJzZWQpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBDb3JydXB0IHBheWxvYWQg4oCUIGRyb3AgaXQgb2ZmIHRoZSBpbi1wcm9ncmVzcyBsaXN0IHNvIGl0IGNhbid0IHdlZGdlXG4gICAgICAgICAgICAvLyB0aGUgZHJhaW4sIGFuZCBhY2NvdW50IGZvciBpdC5cbiAgICAgICAgICAgIGF3YWl0IHJlZGlzLmxyZW0oaW5Qcm9ncmVzc0tleSwgMSwgcmF3KTtcbiAgICAgICAgICAgIGVtaXRDb3VudGVyKCdhdWRpdF9zcG9vbF9kcm9wcGVkX3RvdGFsJywgeyBzZXJ2aWNlOiAndW5rbm93bicgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvdXQ7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgbG9nZ2VyLndhcm4oJ0F1ZGl0IHNwb29sIHRha2UgZmFpbGVkJywgeyBlcnJvcjogZXJyb3JNZXNzYWdlKGVycikgfSk7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgYXN5bmMgYWNrKGVudHJpZXMpIHtcbiAgICAgIGlmIChlbnRyaWVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgcmVhZHkoKTtcbiAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgICAgICAgYXdhaXQgcmVkaXMubHJlbShpblByb2dyZXNzS2V5LCAxLCByYXdPZihlbnRyeSkpO1xuICAgICAgICAgIHJhd0J5RW50cnkuZGVsZXRlKGVudHJ5KTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGxvZ2dlci53YXJuKCdBdWRpdCBzcG9vbCBhY2sgZmFpbGVkIChtYXkgcmUtZGVsaXZlciBvbiByZWNvdmVyKScsIHsgZXJyb3I6IGVycm9yTWVzc2FnZShlcnIpIH0pO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBhc3luYyByZXF1ZXVlKGVudHJpZXMpIHtcbiAgICAgIGlmIChlbnRyaWVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gUHV0IGZhaWxlZCByZS1kZWxpdmVyaWVzIGJhY2sgYXQgdGhlIEhFQUQgc28gdGhleSdyZSByZXRyaWVkIGZpcnN0IGFuZFxuICAgICAgICAvLyByb3VnaCBlbWlzc2lvbiBvcmRlciBpcyBwcmVzZXJ2ZWQgYWNyb3NzIHRoZSBvdXRhZ2Ug4oCUIGFuZCBjbGVhciB0aGVtXG4gICAgICAgIC8vIGZyb20gdGhlIGluLXByb2dyZXNzIGxpc3Qgc28gYHJlY292ZXJgIGRvZXNuJ3QgZG91YmxlIHRoZW0uIEl0ZXJhdGUgaW5cbiAgICAgICAgLy8gcmV2ZXJzZSBzbyBscHVzaCByZXN0b3JlcyB0aGUgYmF0Y2gncyBvcmlnaW5hbCBvcmRlciBhdCB0aGUgaGVhZC5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gT1JERVJJTkcgSU5WQVJJQU5UIChhdC1sZWFzdC1vbmNlKTogbHB1c2ggdG8gdGhlIG1haW4gbGlzdCBGSVJTVCwgVEhFTlxuICAgICAgICAvLyBscmVtIGZyb20gaW4tcHJvZ3Jlc3MuIEEgY3Jhc2ggYmV0d2VlbiB0aGUgdHdvIGxlYXZlcyB0aGUgZW50cnkgb24gQk9USFxuICAgICAgICAvLyBsaXN0cyDihpIgaGFybWxlc3MgZG91YmxlLWRlbGl2ZXJ5IChkZWR1cGVkIGRvd25zdHJlYW0gYnkgaWRlbXBvdGVuY3lcbiAgICAgICAgLy8gcmV1c2UpLCBuZXZlciBhIExPU1MuIFRoZSByZXZlcnNlIG9yZGVyIChscmVtIHRoZW4gbHB1c2gpIHdvdWxkIGRyb3AgdGhlXG4gICAgICAgIC8vIGV2ZW50IG91dHJpZ2h0IG9uIGEgY3Jhc2ggaW4gdGhlIGdhcCwgd2hpY2ggYSBzZWN1cml0eSBsb2cgbXVzdCBub3QgZG8uXG4gICAgICAgIGF3YWl0IHJlYWR5KCk7XG4gICAgICAgIGZvciAobGV0IGkgPSBlbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgY29uc3QgcmF3ID0gcmF3T2YoZW50cmllc1tpXSk7XG4gICAgICAgICAgYXdhaXQgcmVkaXMubHB1c2goa2V5LCByYXcpO1xuICAgICAgICAgIGF3YWl0IHJlZGlzLmxyZW0oaW5Qcm9ncmVzc0tleSwgMSwgcmF3KTtcbiAgICAgICAgICByYXdCeUVudHJ5LmRlbGV0ZShlbnRyaWVzW2ldKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGxvZ2dlci53YXJuKCdBdWRpdCBzcG9vbCByZXF1ZXVlIGZhaWxlZCAoZXZlbnRzIGxvc3QpJywgeyBlcnJvcjogZXJyb3JNZXNzYWdlKGVycikgfSk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGFzeW5jIHJlY292ZXIoKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCByZWFkeSgpO1xuICAgICAgICBhd2FpdCBiZWF0KCk7XG4gICAgICAgIGxldCByZWNsYWltZWQgPSAwO1xuICAgICAgICBjb25zdCBzdGFsZSA9IGF3YWl0IHJlZGlzLnpyYW5nZWJ5c2NvcmUob3duZXJzS2V5LCAnLWluZicsIERhdGUubm93KCkgLSBzdGFsZU93bmVyTXMpO1xuICAgICAgICBmb3IgKGNvbnN0IG93bmVyIG9mIHN0YWxlKSB7XG4gICAgICAgICAgaWYgKG93bmVyID09PSBvd25lcklkKSBjb250aW51ZTtcbiAgICAgICAgICBjb25zdCBzb3VyY2UgPSBpbmZsaWdodEtleU9mKG93bmVyKTtcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IE1BWF9NT1ZFX0lURVJBVElPTlM7IGkrKykge1xuICAgICAgICAgICAgLy8gTW92ZSBpbi1wcm9ncmVzcy10YWlsIOKGkiBtYWluLWhlYWQ6IGFuIG9sZGVyIHN0cmFuZGVkIGVudHJ5IChuZWFyZXJcbiAgICAgICAgICAgIC8vIHRoZSBpbi1wcm9ncmVzcyBoZWFkKSBlbmRzIHVwIGFoZWFkIG9mIGEgbmV3ZXIgb25lLCBwcmVzZXJ2aW5nIG9yZGVyLlxuICAgICAgICAgICAgY29uc3QgcmF3ID0gYXdhaXQgcmVkaXMubG1vdmUoc291cmNlLCBrZXksICdSSUdIVCcsICdMRUZUJyk7XG4gICAgICAgICAgICBpZiAocmF3ID09PSBudWxsIHx8IHJhdyA9PT0gdW5kZWZpbmVkKSBicmVhaztcbiAgICAgICAgICAgIHJlY2xhaW1lZCsrO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBPbmx5IGZvcmdldCB0aGUgb3duZXIgb25jZSBpdHMgbGlzdCBpcyBlbXB0eS5cbiAgICAgICAgICBhd2FpdCByZWRpcy56cmVtKG93bmVyc0tleSwgb3duZXIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZWNsYWltZWQgPiAwKSB7XG4gICAgICAgICAgZW1pdENvdW50ZXIoJ2F1ZGl0X3Nwb29sX3JlY292ZXJlZF90b3RhbCcsIHt9LCByZWNsYWltZWQpO1xuICAgICAgICAgIGxvZ2dlci53YXJuKCdBdWRpdCBzcG9vbCByZWNvdmVyZWQgZXZlbnRzIHN0cmFuZGVkIGJ5IGEgZGVhZCBvd25lcicsIHsgcmVjbGFpbWVkIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZWNsYWltZWQ7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgbG9nZ2VyLndhcm4oJ0F1ZGl0IHNwb29sIHJlY292ZXIgZmFpbGVkJywgeyBlcnJvcjogZXJyb3JNZXNzYWdlKGVycikgfSk7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBhc3luYyBoZWFydGJlYXQoKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCByZWFkeSgpO1xuICAgICAgICBhd2FpdCBiZWF0KCk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKCdBdWRpdCBzcG9vbCBoZWFydGJlYXQgZmFpbGVkJywgeyBlcnJvcjogZXJyb3JNZXNzYWdlKGVycikgfSk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGFzeW5jIGRlcHRoKCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHJlZGlzLmxsZW4oa2V5KTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cbiAgICB9LFxuICB9O1xufVxuXG4vKipcbiAqIEJ1aWxkIGEgUmVkaXMtYmFja2VkIGF1ZGl0IHNwb29sIGZyb20gdGhlIGFtYmllbnQgYFJFRElTX1VSTGAgLyBgUkVESVNfU0VOVElORUxTYFxuICogZW52IHZpYSB0aGUgc2hhcmVkIGBjcmVhdGVFbnZSZWRpc0NsaWVudGAuIFJldHVybnMgYG51bGxgIHdoZW4gUmVkaXMgaXMgbm90XG4gKiBjb25maWd1cmVkIOKAlCB0aGUgY2FsbGVyIHRoZW4gcnVucyB3aXRob3V0IGEgc3Bvb2wgKGJlc3QtZWZmb3J0IGJlaGF2aW9yKS4gVGhlIHNoYXJlZCBoZWxwZXIgbG9hZHNcbiAqIGlvcmVkaXMgdmlhIGBjcmVhdGVSZXF1aXJlYCwgc28gdGhpcyBzdGF5cyBpbXBvcnRhYmxlIHdoZXJlIFJlZGlzIGlzbid0IHByZXNlbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFbnZSZWRpc0F1ZGl0U3Bvb2wob3B0czogT21pdDxSZWRpc0F1ZGl0U3Bvb2xPcHRpb25zLCAncmVhZHknPik6IEF1ZGl0U3Bvb2wgfCBudWxsIHtcbiAgY29uc3QgaW5zdCA9IGNyZWF0ZUVudlJlZGlzQ2xpZW50PFJlZGlzTGlzdENsaWVudCAmIFJlYWR5QXdhcmVSZWRpcz4oJ2F1ZGl0LXNwb29sJyk7XG4gIGlmICghaW5zdCkgcmV0dXJuIG51bGw7XG4gIGxvZ2dlci5pbmZvKCdSZWRpcyBhdWRpdCBzcG9vbCBpbml0aWFsaXplZCcsIHsga2V5OiBvcHRzLmtleSB9KTtcbiAgLy8gVGhlIGVudiBjbGllbnQgaGFzIG5vIG9mZmxpbmUgcXVldWU6IGEgYm9vdC10aW1lIHJlY292ZXIoKSBydW4gYmVmb3JlIHRoZVxuICAvLyBjb25uZWN0aW9uIGlzIHVwIHdvdWxkIGZhaWwgYW5kIHN0cmFuZCBiYXRjaGVzIHVudGlsIHRoZSBuZXh0IHJlc3RhcnQsIHNvXG4gIC8vIGV2ZXJ5IGNvbW1hbmQgd2FpdHMgKGJvdW5kZWQpIGZvciByZWFkaW5lc3MuXG4gIHJldHVybiBjcmVhdGVSZWRpc0F1ZGl0U3Bvb2woaW5zdCwgeyAuLi5vcHRzLCByZWFkeTogY3JlYXRlUmVkaXNSZWFkeUdhdGUoaW5zdCwgMTBfMDAwKSB9KTtcbn1cbiJdfQ==
|
|
213
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtc3Bvb2wuanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9hdWRpdC1zcG9vbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDcEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLG9CQUFvQixFQUF3QixNQUFNLGdCQUFnQixDQUFDO0FBRWxHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXBELE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQztBQTBFM0M7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxXQUFtQjtJQUMvQyxPQUFPLGVBQWUsV0FBVyxFQUFFLENBQUM7QUFDdEMsQ0FBQztBQUVELE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDO0FBQ2pDLHNGQUFzRjtBQUN0RixNQUFNLHNCQUFzQixHQUFHLEVBQUUsR0FBRyxNQUFNLENBQUM7QUFDM0Msb0ZBQW9GO0FBQ3BGLE1BQU0sbUJBQW1CLEdBQUcsT0FBTyxDQUFDO0FBRXBDLFNBQVMsU0FBUyxDQUFDLEdBQVc7SUFDNUIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQW9CLENBQUM7UUFDbEQsT0FBTyxNQUFNLElBQUksTUFBTSxDQUFDLEtBQUssSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN0RSxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0FBQ0gsQ0FBQztBQW1C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O0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsSUFBMkM7SUFDbEYsTUFBTSxJQUFJLEdBQUcsb0JBQW9CLENBQW9DLGFBQWEsQ0FBQyxDQUFDO0lBQ3BGLElBQUksQ0FBQyxJQUFJO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDdkIsTUFBTSxDQUFDLElBQUksQ0FBQywrQkFBK0IsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNoRSw0RUFBNEU7SUFDNUUsNEVBQTRFO0lBQzVFLCtDQUErQztJQUMvQyxPQUFPLHFCQUFxQixDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxFQUFFLEtBQUssRUFBRSxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzdGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgcmFuZG9tVVVJRCB9IGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgeyBjcmVhdGVFbnZSZWRpc0NsaWVudCwgY3JlYXRlUmVkaXNSZWFkeUdhdGUsIHR5cGUgUmVhZHlBd2FyZVJlZGlzIH0gZnJvbSAnLi9lbnYtcmVkaXMuanMnO1xuaW1wb3J0IHR5cGUgeyBSZW1vdGVBdWRpdEV2ZW50IH0gZnJvbSAnLi9yZW1vdGUtYXVkaXQtY2xpZW50LmpzJztcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciB9IGZyb20gJy4uL3V0aWxzL2xvZ2dlci5qcyc7XG5pbXBvcnQgeyBlbWl0Q291bnRlciB9IGZyb20gJy4uL3V0aWxzL21ldHJpYy1lbWl0dGVyLmpzJztcbmltcG9ydCB7IGVycm9yTWVzc2FnZSB9IGZyb20gJy4uL3V0aWxzL3Jlc3BvbnNlLmpzJztcblxuY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKCdhdWRpdC1zcG9vbCcpO1xuXG4vKiogQSBidWZmZXJlZCBlbWlzc2lvbjogdGhlIGV2ZW50IHBsdXMgd2hpY2ggc2VydmljZSBtdXN0IHJlLWRlbGl2ZXIgaXQuICovXG5leHBvcnQgaW50ZXJmYWNlIEF1ZGl0U3Bvb2xFbnRyeSB7XG4gIGV2ZW50OiBSZW1vdGVBdWRpdEV2ZW50O1xuICBzZXJ2aWNlTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIER1cmFibGUgYnVmZmVyIGZvciBhdWRpdCBldmVudHMgdGhhdCBmYWlsZWQgTElWRSBkZWxpdmVyeSB0byB0aGUgcGxhdGZvcm1cbiAqIChyZXRyaWVzIGV4aGF1c3RlZCBkdXJpbmcgYSBzdXN0YWluZWQgb3V0YWdlKS4gV2l0aG91dCB0aGlzLCB0aGUgYXVkaXQgdHJhaWwg4oCUXG4gKiBhIHNlY3VyaXR5IGxvZyDigJQgaXMgc2lsZW50bHkgbG9zdCB0aGUgbW9tZW50IHRoZSBwbGF0Zm9ybSBpcyBkb3duIGZvciBsb25nZXJcbiAqIHRoYW4gdGhlIGNsaWVudCdzIHNtYWxsIHJldHJ5IGJ1ZGdldC5cbiAqXG4gKiBDb250cmFjdDpcbiAqIC0gQk9VTkRFRC4gQSBzZWN1cml0eSBsb2cgbXVzdCBkZWdyYWRlIHRvIFwiZHJvcHBlZCB0aGUgb2xkZXN0LCBsb3VkbHlcIiAoYVxuICogICBtZXRyaWMpIHJhdGhlciB0aGFuIGdyb3cgd2l0aG91dCBsaW1pdCBhbmQgT09NIHRoZSBlbWl0dGVyLlxuICogLSBGQUlMLVNBRkUuIEV2ZXJ5IG1ldGhvZCBzd2FsbG93cyBpdHMgb3duIGVycm9ycyDigJQgYSBicm9rZW4vdW5yZWFjaGFibGUgc3Bvb2xcbiAqICAgbXVzdCBuZXZlciBicmVhayBvciBibG9jayB0aGUgYXVkaXQgZW1pc3Npb24gcGF0aCAod2hpY2ggaXMgaXRzZWxmXG4gKiAgIGZpcmUtYW5kLWZvcmdldCkuIEEgc3Bvb2wgcHJvYmxlbSBkZWdyYWRlcyB0byB0aGUgcHJlLXNwb29sIGJlaGF2aW9yLlxuICogLSBPcmRlcmluZyBpcyBiZXN0LWVmZm9ydC4gUmUtZGVsaXZlcmVkIGV2ZW50cyBjaGFpbiBhdCByZS1kZWxpdmVyeSB0aW1lXG4gKiAgICh0aGF0J3Mgd2hlbiB0aGUgcGxhdGZvcm0gaW5zZXJ0cyB0aGVtKSwgc28gZWFjaCBldmVudCBhbHNvIGNhcnJpZXMgYW5cbiAqICAgYG9jY3VycmVkQXRgIHN0YW1wZWQgYXQgZW1pc3Npb24gZm9yIHJldmlld2VycyDigJQgc2VlIFJlbW90ZUF1ZGl0RXZlbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXVkaXRTcG9vbCB7XG4gIC8qKiBCdWZmZXIgYW4gZXZlbnQgdGhhdCBmYWlsZWQgbGl2ZSBkZWxpdmVyeS4gKi9cbiAgZW5xdWV1ZShlbnRyeTogQXVkaXRTcG9vbEVudHJ5KTogUHJvbWlzZTx2b2lkPjtcbiAgLyoqXG4gICAqIEF0b21pY2FsbHkgTU9WRSB1cCB0byBgbWF4YCBidWZmZXJlZCBlbnRyaWVzIG9udG8gYW4gaW4tcHJvZ3Jlc3MgbGlzdCBhbmRcbiAgICogcmV0dXJuIHRoZW0uIEJlY2F1c2UgdGhlIGVudHJpZXMgYXJlIG1vdmVkIChub3QgcG9wcGVkLWFuZC1kcm9wcGVkKSwgYSBjcmFzaFxuICAgKiBtaWQtZHJhaW4gbGVhdmVzIHRoZW0gcmVjb3ZlcmFibGUgb24gdGhlIGluLXByb2dyZXNzIGxpc3Qg4oCUIHNlZSBgcmVjb3ZlcmAuXG4gICAqIEVhY2ggdGFrZW4gZW50cnkgTVVTVCBiZSByZXNvbHZlZCB3aXRoIGV4YWN0bHkgb25lIG9mIGBhY2tgIChkZWxpdmVyZWQpIG9yXG4gICAqIGByZXF1ZXVlYCAoc3RpbGwgZmFpbGluZyksIG9yIGl0IGxpbmdlcnMgb24gdGhlIGluLXByb2dyZXNzIGxpc3QgdW50aWwgdGhlXG4gICAqIG5leHQgYHJlY292ZXJgLlxuICAgKi9cbiAgdGFrZShtYXg6IG51bWJlcik6IFByb21pc2U8QXVkaXRTcG9vbEVudHJ5W10+O1xuICAvKiogQWNrbm93bGVkZ2Ugc3VjY2Vzc2Z1bGx5IHJlLWRlbGl2ZXJlZCBlbnRyaWVzIOKAlCByZW1vdmVzIHRoZW0gZnJvbSB0aGVcbiAgICogIGluLXByb2dyZXNzIGxpc3Qgc28gdGhleSBhcmUgbm90IHJlY292ZXJlZCBhZ2Fpbi4gKi9cbiAgYWNrKGVudHJpZXM6IEF1ZGl0U3Bvb2xFbnRyeVtdKTogUHJvbWlzZTx2b2lkPjtcbiAgLyoqIFJldHVybiBlbnRyaWVzIHdob3NlIHJlLWRlbGl2ZXJ5IGZhaWxlZCB0byB0aGUgSEVBRCBvZiB0aGUgYnVmZmVyIChyZXRyaWVkXG4gICAqICBmaXJzdCkgYW5kIGNsZWFyIHRoZW0gZnJvbSB0aGUgaW4tcHJvZ3Jlc3MgbGlzdC4gQmVzdC1lZmZvcnQuICovXG4gIHJlcXVldWUoZW50cmllczogQXVkaXRTcG9vbEVudHJ5W10pOiBQcm9taXNlPHZvaWQ+O1xuICAvKipcbiAgICogUmVjbGFpbSBlbnRyaWVzIHN0cmFuZGVkIG9uIEFCQU5ET05FRCBpbi1wcm9ncmVzcyBsaXN0cyDigJQgdGhvc2Ugb2Ygb3duZXJzXG4gICAqIChzcG9vbCBpbnN0YW5jZXMsIGkuZS4gcG9kcykgd2hvc2UgaGVhcnRiZWF0IGlzIG9sZGVyIHRoYW4gdGhlIHN0YWxlXG4gICAqIHRocmVzaG9sZCDigJQgbW92aW5nIHRoZW0gYmFjayB0byB0aGUgaGVhZCBvZiB0aGUgbWFpbiBidWZmZXIuIEEgTElWRSBvd25lcidzXG4gICAqIGluLWZsaWdodCBiYXRjaCBpcyBuZXZlciB0b3VjaGVkLCBzbyBhIHBlZXIncyByZWNvdmVyIGNhbid0IGR1cGxpY2F0ZSB3b3JrXG4gICAqIHRoYXQgb3duZXIgaXMgc3RpbGwgZGVsaXZlcmluZy4gU2FmZSB0byBjYWxsIHBlcmlvZGljYWxseTsgcmV0dXJucyB0aGVcbiAgICogbnVtYmVyIHJlY2xhaW1lZC5cbiAgICovXG4gIHJlY292ZXIoKTogUHJvbWlzZTxudW1iZXI+O1xuICAvKiogTWFyayB0aGlzIG93bmVyIGFsaXZlIChzbyBubyBwZWVyIHJlY2xhaW1zIGl0cyBpbi1mbGlnaHQgYmF0Y2gpLiAqL1xuICBoZWFydGJlYXQoKTogUHJvbWlzZTx2b2lkPjtcbiAgLyoqIEFwcHJveGltYXRlIGN1cnJlbnQgZGVwdGggKGZvciBtZXRyaWNzIC8gZHJhaW4gZGVjaXNpb25zKS4gKi9cbiAgZGVwdGgoKTogUHJvbWlzZTxudW1iZXI+O1xufVxuXG4vKiogTWluaW1hbCBSZWRpcyBMSVNUIHN1cmZhY2UgdGhlIHNwb29sIG5lZWRzIChhIHN1YnNldCBvZiBpb3JlZGlzKS4gKi9cbmludGVyZmFjZSBSZWRpc0xpc3RDbGllbnQge1xuICBycHVzaChrZXk6IHN0cmluZywgLi4udmFsdWVzOiBzdHJpbmdbXSk6IFByb21pc2U8bnVtYmVyPjtcbiAgbHB1c2goa2V5OiBzdHJpbmcsIC4uLnZhbHVlczogc3RyaW5nW10pOiBQcm9taXNlPG51bWJlcj47XG4gIGxwb3Aoa2V5OiBzdHJpbmcsIGNvdW50OiBudW1iZXIpOiBQcm9taXNlPHN0cmluZ1tdIHwgbnVsbD47XG4gIGx0cmltKGtleTogc3RyaW5nLCBzdGFydDogbnVtYmVyLCBzdG9wOiBudW1iZXIpOiBQcm9taXNlPHVua25vd24+O1xuICBsbGVuKGtleTogc3RyaW5nKTogUHJvbWlzZTxudW1iZXI+O1xuICAvKiogQXRvbWljYWxseSBwb3AgZnJvbSBvbmUgbGlzdCBlbmQgYW5kIHB1c2ggdG8gYW5vdGhlciAoUmVkaXMg4omlIDYuMikuICovXG4gIGxtb3ZlKHNvdXJjZTogc3RyaW5nLCBkZXN0aW5hdGlvbjogc3RyaW5nLCBmcm9tOiAnTEVGVCcgfCAnUklHSFQnLCB0bzogJ0xFRlQnIHwgJ1JJR0hUJyk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD47XG4gIC8qKiBSZW1vdmUgYGNvdW50YCBvY2N1cnJlbmNlcyBvZiBgdmFsdWVgIGZyb20gYSBsaXN0LiAqL1xuICBscmVtKGtleTogc3RyaW5nLCBjb3VudDogbnVtYmVyLCB2YWx1ZTogc3RyaW5nKTogUHJvbWlzZTxudW1iZXI+O1xuICAvKiogT3duZXIgaGVhcnRiZWF0czogYSBzb3J0ZWQgc2V0IG9mIG93bmVyIGlkIOKGkiBsYXN0LXNlZW4gZXBvY2ggbXMuICovXG4gIHphZGQoa2V5OiBzdHJpbmcsIHNjb3JlOiBudW1iZXIsIG1lbWJlcjogc3RyaW5nKTogUHJvbWlzZTx1bmtub3duPjtcbiAgenJhbmdlYnlzY29yZShrZXk6IHN0cmluZywgbWluOiBudW1iZXIgfCBzdHJpbmcsIG1heDogbnVtYmVyIHwgc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT47XG4gIHpyZW0oa2V5OiBzdHJpbmcsIG1lbWJlcjogc3RyaW5nKTogUHJvbWlzZTxudW1iZXI+O1xufVxuXG4vKipcbiAqIFRoZSBzcG9vbCBrZXkgZm9yIG9uZSBzZXJ2aWNlJ3MgYnVmZmVyZWQgYXVkaXQgZXZlbnRzLiBQZXIgU0VSVklDRSBvblxuICogcHVycG9zZTogcmUtZGVsaXZlcnkgbWludHMgYSBzZXJ2aWNlIHRva2VuIGFzIGBlbnRyeS5zZXJ2aWNlTmFtZWAsIHdoaWNoIG9ubHlcbiAqIHRoYXQgc2VydmljZSdzIHBvZHMgY2FuIHNpZ24gKHBlci1zZXJ2aWNlIGtleXMpLiBBIHNoYXJlZCBrZXkgbGV0IGEgcG9kIG9mXG4gKiBvbmUgc2VydmljZSB0YWtlIGFub3RoZXIncyBlbnRyaWVzLCBmYWlsIHRvIHNpZ24gZm9yIHRoZW0sIGFuZCByZXF1ZXVlIHRoZW1cbiAqIGZvcmV2ZXIg4oCUIHdoaWxlIHRoYXQgc2VydmljZSdzIG93biBwb2RzIG5ldmVyIHNhdyB0aGVtLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXVkaXRTcG9vbEtleShzZXJ2aWNlTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBhdWRpdDpzcG9vbDoke3NlcnZpY2VOYW1lfWA7XG59XG5cbmNvbnN0IERFRkFVTFRfTUFYX0RFUFRIID0gMTBfMDAwO1xuLyoqIEFuIG93bmVyIHdob3NlIGhlYXJ0YmVhdCBpcyBvbGRlciB0aGFuIHRoaXMgaXMgcHJlc3VtZWQgZGVhZCAoaXRzIHBvZCBjcmFzaGVkKS4gKi9cbmNvbnN0IERFRkFVTFRfU1RBTEVfT1dORVJfTVMgPSAxMCAqIDYwXzAwMDtcbi8qKiBHdWFyZCBzbyBhIHBhdGhvbG9naWNhbCBpbi1wcm9ncmVzcyBsaXN0IGNhbid0IHNwaW4gYHJlY292ZXJgL2B0YWtlYCBmb3JldmVyLiAqL1xuY29uc3QgTUFYX01PVkVfSVRFUkFUSU9OUyA9IDEwMF8wMDA7XG5cbmZ1bmN0aW9uIHNhZmVQYXJzZShyYXc6IHN0cmluZyk6IEF1ZGl0U3Bvb2xFbnRyeSB8IG51bGwge1xuICB0cnkge1xuICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UocmF3KSBhcyBBdWRpdFNwb29sRW50cnk7XG4gICAgcmV0dXJuIHBhcnNlZCAmJiBwYXJzZWQuZXZlbnQgJiYgcGFyc2VkLnNlcnZpY2VOYW1lID8gcGFyc2VkIDogbnVsbDtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuLyoqXG4gKiBSZWRpcy1MSVNULWJhY2tlZCBzcG9vbC4gRHVyYWJsZSBhY3Jvc3MgcHJvY2VzcyByZXN0YXJ0cyAodW5saWtlIGFuIGluLW1lbW9yeVxuICogb3IgcGVyLXBvZC1kaXNrIGJ1ZmZlciksIHNoYXJlZCBieSBhbGwgcmVwbGljYXMgb2YgYSBzZXJ2aWNlLCBhbmQgYm91bmRlZCB2aWFcbiAqIGEgdHJpbS10by10YWlsIG9uIG92ZXJmbG93IChkcm9wcyB0aGUgT0xERVNULCBlbWl0dGluZyBgYXVkaXRfc3Bvb2xfZHJvcHBlZF90b3RhbGApLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZGlzQXVkaXRTcG9vbE9wdGlvbnMge1xuICAvKiogVGhlIGJ1ZmZlcidzIFJlZGlzIGtleSDigJQgb25lIHBlciBzZXJ2aWNlICh7QGxpbmsgYXVkaXRTcG9vbEtleX0pLiAqL1xuICBrZXk6IHN0cmluZztcbiAgbWF4RGVwdGg/OiBudW1iZXI7XG4gIC8qKiBUaGlzIGluc3RhbmNlJ3Mgb3duZXIgaWQgKGRlZmF1bHQ6IHJhbmRvbSBwZXIgaW5zdGFuY2UpLiAqL1xuICBvd25lcklkPzogc3RyaW5nO1xuICAvKiogSGVhcnRiZWF0IGFnZSBhZnRlciB3aGljaCBhbiBvd25lcidzIGluLWZsaWdodCBiYXRjaCBpcyByZWNsYWltYWJsZS4gKi9cbiAgc3RhbGVPd25lck1zPzogbnVtYmVyO1xuICAvKiogQXdhaXRlZCBiZWZvcmUgZWFjaCBjb21tYW5kIOKAlCBlLmcuIGEgcmVhZGluZXNzIGdhdGUgZm9yIGEgbGF6aWx5IGNvbm5lY3RpbmcgY2xpZW50LiAqL1xuICByZWFkeT86ICgpID0+IFByb21pc2U8dm9pZD47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZWRpc0F1ZGl0U3Bvb2wocmVkaXM6IFJlZGlzTGlzdENsaWVudCwgb3B0czogUmVkaXNBdWRpdFNwb29sT3B0aW9ucyk6IEF1ZGl0U3Bvb2wge1xuICBjb25zdCBrZXkgPSBvcHRzLmtleTtcbiAgY29uc3Qgb3duZXJJZCA9IG9wdHMub3duZXJJZCA/PyByYW5kb21VVUlEKCk7XG4gIGNvbnN0IHN0YWxlT3duZXJNcyA9IE1hdGgubWF4KDEsIG9wdHMuc3RhbGVPd25lck1zID8/IERFRkFVTFRfU1RBTEVfT1dORVJfTVMpO1xuICBjb25zdCByZWFkeSA9IG9wdHMucmVhZHkgPz8gKCgpID0+IFByb21pc2UucmVzb2x2ZSgpKTtcbiAgLy8gUEVSLU9XTkVSIGluLXByb2dyZXNzIGxpc3Qg4oCUIGEgdGFrZW4gYmF0Y2ggbGl2ZXMgaGVyZSB1bnRpbCBpdCBpcyBhY2tlZFxuICAvLyAoZGVsaXZlcmVkKSBvciByZXF1ZXVlZCAoc3RpbGwgZmFpbGluZykuIEl0IGlzIGEgc2VjdXJpdHkgbG9nJ3MgZHVyYWJpbGl0eVxuICAvLyBuZXQ6IGEgY3Jhc2ggYmV0d2VlbiB0YWtlIGFuZCBhY2svcmVxdWV1ZSBsZWF2ZXMgdGhlIGJhdGNoIGhlcmUsIGFuZCBhIHBlZXInc1xuICAvLyAob3IgdGhpcyBwb2QncyBzdWNjZXNzb3IncykgYHJlY292ZXJgIHJlY2xhaW1zIGl0IG9uY2UgdGhlIG93bmVyJ3MgaGVhcnRiZWF0XG4gIC8vIGdvZXMgc3RhbGUuIE9uZSBzaGFyZWQgaW4tZmxpZ2h0IGxpc3QgbGV0IGFueSByZXBsaWNhJ3Mgc3RhcnR1cCByZWNvdmVyXG4gIC8vIHN0ZWFsIGJhdGNoZXMgaXRzIGxpdmUgc2libGluZ3Mgd2VyZSBtaWQtd2F5IHRocm91Z2ggZGVsaXZlcmluZy5cbiAgY29uc3QgaW5mbGlnaHRLZXlPZiA9IChvd25lcjogc3RyaW5nKSA9PiBgJHtrZXl9OmluZmxpZ2h0OiR7b3duZXJ9YDtcbiAgY29uc3QgaW5Qcm9ncmVzc0tleSA9IGluZmxpZ2h0S2V5T2Yob3duZXJJZCk7XG4gIGNvbnN0IG93bmVyc0tleSA9IGAke2tleX06b3duZXJzYDtcbiAgY29uc3QgbWF4RGVwdGggPSBNYXRoLm1heCgxLCBvcHRzLm1heERlcHRoID8/IERFRkFVTFRfTUFYX0RFUFRIKTtcblxuICBjb25zdCBiZWF0ID0gYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGF3YWl0IHJlZGlzLnphZGQob3duZXJzS2V5LCBEYXRlLm5vdygpLCBvd25lcklkKTtcbiAgfTtcblxuICAvLyBUaGUgRVhBQ1Qgc2VyaWFsaXplZCBzdHJpbmcgZWFjaCByZXR1cm5lZCBlbnRyeSB3YXMgcGFyc2VkIGZyb20sIHNvIGBhY2tgIC9cbiAgLy8gYHJlcXVldWVgIGNhbiBMUkVNIHRoZSBwcmVjaXNlIHZhbHVlIG9mZiB0aGUgaW4tcHJvZ3Jlc3MgbGlzdC4gS2V5ZWQgYnkgdGhlXG4gIC8vIHJldHVybmVkIG9iamVjdCBpZGVudGl0eSAodGhlIGRyYWluIGNvbnN1bWVyIHBhc3NlcyB0aGUgU0FNRSBvYmplY3RzIGJhY2spLFxuICAvLyBzbyBpdCBuZWVkcyBubyBzdGFibGUgcmUtc2VyaWFsaXphdGlvbi4gV2Vha01hcCDihpIgZW50cmllcyBHQyBuYXR1cmFsbHkuXG4gIGNvbnN0IHJhd0J5RW50cnkgPSBuZXcgV2Vha01hcDxBdWRpdFNwb29sRW50cnksIHN0cmluZz4oKTtcbiAgY29uc3QgcmF3T2YgPSAoZW50cnk6IEF1ZGl0U3Bvb2xFbnRyeSk6IHN0cmluZyA9PiByYXdCeUVudHJ5LmdldChlbnRyeSkgPz8gSlNPTi5zdHJpbmdpZnkoZW50cnkpO1xuXG4gIHJldHVybiB7XG4gICAgYXN5bmMgZW5xdWV1ZShlbnRyeSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgcmVhZHkoKTtcbiAgICAgICAgY29uc3QgbGVuID0gYXdhaXQgcmVkaXMucnB1c2goa2V5LCBKU09OLnN0cmluZ2lmeShlbnRyeSkpO1xuICAgICAgICBlbWl0Q291bnRlcignYXVkaXRfc3Bvb2xfZW5xdWV1ZWRfdG90YWwnLCB7IHNlcnZpY2U6IGVudHJ5LnNlcnZpY2VOYW1lIH0pO1xuICAgICAgICBpZiAobGVuID4gbWF4RGVwdGgpIHtcbiAgICAgICAgICAvLyBLZWVwIG9ubHkgdGhlIG5ld2VzdCBgbWF4RGVwdGhgOyBkcm9wIHRoZSBvdmVyZmxvdyBhdCB0aGUgaGVhZC5cbiAgICAgICAgICBjb25zdCBkcm9wcGVkID0gbGVuIC0gbWF4RGVwdGg7XG4gICAgICAgICAgYXdhaXQgcmVkaXMubHRyaW0oa2V5LCBkcm9wcGVkLCAtMSk7XG4gICAgICAgICAgZW1pdENvdW50ZXIoJ2F1ZGl0X3Nwb29sX2Ryb3BwZWRfdG90YWwnLCB7IHNlcnZpY2U6IGVudHJ5LnNlcnZpY2VOYW1lIH0sIGRyb3BwZWQpO1xuICAgICAgICAgIGxvZ2dlci53YXJuKCdBdWRpdCBzcG9vbCBvdmVyZmxvdyDigJQgZHJvcHBlZCBvbGRlc3QgYnVmZmVyZWQgZXZlbnRzJywgeyBkcm9wcGVkLCBtYXhEZXB0aCB9KTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGxvZ2dlci53YXJuKCdBdWRpdCBzcG9vbCBlbnF1ZXVlIGZhaWxlZCAoZXZlbnQgbG9zdCknLCB7IGVycm9yOiBlcnJvck1lc3NhZ2UoZXJyKSB9KTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgYXN5bmMgdGFrZShtYXgpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHJlYWR5KCk7XG4gICAgICAgIGF3YWl0IGJlYXQoKTtcbiAgICAgICAgY29uc3Qgb3V0OiBBdWRpdFNwb29sRW50cnlbXSA9IFtdO1xuICAgICAgICBjb25zdCBsaW1pdCA9IE1hdGgubWF4KDEsIG1heCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGltaXQ7IGkrKykge1xuICAgICAgICAgIC8vIEF0b21pY2FsbHkgTU9WRSBoZWFk4oaSaW4tcHJvZ3Jlc3MtdGFpbCBzbyB0aGUgZW50cnkgaXMgbmV2ZXIgaW4gbGltYm86XG4gICAgICAgICAgLy8gaXQgaXMgb24gZXhhY3RseSBvbmUgbGlzdCBhdCBhbGwgdGltZXMsIHJlY292ZXJhYmxlIGFmdGVyIGEgY3Jhc2guXG4gICAgICAgICAgY29uc3QgcmF3ID0gYXdhaXQgcmVkaXMubG1vdmUoa2V5LCBpblByb2dyZXNzS2V5LCAnTEVGVCcsICdSSUdIVCcpO1xuICAgICAgICAgIGlmIChyYXcgPT09IG51bGwgfHwgcmF3ID09PSB1bmRlZmluZWQpIGJyZWFrO1xuICAgICAgICAgIGNvbnN0IHBhcnNlZCA9IHNhZmVQYXJzZShyYXcpO1xuICAgICAgICAgIGlmIChwYXJzZWQpIHtcbiAgICAgICAgICAgIHJhd0J5RW50cnkuc2V0KHBhcnNlZCwgcmF3KTtcbiAgICAgICAgICAgIG91dC5wdXNoKHBhcnNlZCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIENvcnJ1cHQgcGF5bG9hZCDigJQgZHJvcCBpdCBvZmYgdGhlIGluLXByb2dyZXNzIGxpc3Qgc28gaXQgY2FuJ3Qgd2VkZ2VcbiAgICAgICAgICAgIC8vIHRoZSBkcmFpbiwgYW5kIGFjY291bnQgZm9yIGl0LlxuICAgICAgICAgICAgYXdhaXQgcmVkaXMubHJlbShpblByb2dyZXNzS2V5LCAxLCByYXcpO1xuICAgICAgICAgICAgZW1pdENvdW50ZXIoJ2F1ZGl0X3Nwb29sX2Ryb3BwZWRfdG90YWwnLCB7IHNlcnZpY2U6ICd1bmtub3duJyB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG91dDtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBsb2dnZXIud2FybignQXVkaXQgc3Bvb2wgdGFrZSBmYWlsZWQnLCB7IGVycm9yOiBlcnJvck1lc3NhZ2UoZXJyKSB9KTtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBhc3luYyBhY2soZW50cmllcykge1xuICAgICAgaWYgKGVudHJpZXMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCByZWFkeSgpO1xuICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgICAgICBhd2FpdCByZWRpcy5scmVtKGluUHJvZ3Jlc3NLZXksIDEsIHJhd09mKGVudHJ5KSk7XG4gICAgICAgICAgcmF3QnlFbnRyeS5kZWxldGUoZW50cnkpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgbG9nZ2VyLndhcm4oJ0F1ZGl0IHNwb29sIGFjayBmYWlsZWQgKG1heSByZS1kZWxpdmVyIG9uIHJlY292ZXIpJywgeyBlcnJvcjogZXJyb3JNZXNzYWdlKGVycikgfSk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGFzeW5jIHJlcXVldWUoZW50cmllcykge1xuICAgICAgaWYgKGVudHJpZXMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgICB0cnkge1xuICAgICAgICAvLyBQdXQgZmFpbGVkIHJlLWRlbGl2ZXJpZXMgYmFjayBhdCB0aGUgSEVBRCBzbyB0aGV5J3JlIHJldHJpZWQgZmlyc3QgYW5kXG4gICAgICAgIC8vIHJvdWdoIGVtaXNzaW9uIG9yZGVyIGlzIHByZXNlcnZlZCBhY3Jvc3MgdGhlIG91dGFnZSDigJQgYW5kIGNsZWFyIHRoZW1cbiAgICAgICAgLy8gZnJvbSB0aGUgaW4tcHJvZ3Jlc3MgbGlzdCBzbyBgcmVjb3ZlcmAgZG9lc24ndCBkb3VibGUgdGhlbS4gSXRlcmF0ZSBpblxuICAgICAgICAvLyByZXZlcnNlIHNvIGxwdXNoIHJlc3RvcmVzIHRoZSBiYXRjaCdzIG9yaWdpbmFsIG9yZGVyIGF0IHRoZSBoZWFkLlxuICAgICAgICAvL1xuICAgICAgICAvLyBPUkRFUklORyBJTlZBUklBTlQgKGF0LWxlYXN0LW9uY2UpOiBscHVzaCB0byB0aGUgbWFpbiBsaXN0IEZJUlNULCBUSEVOXG4gICAgICAgIC8vIGxyZW0gZnJvbSBpbi1wcm9ncmVzcy4gQSBjcmFzaCBiZXR3ZWVuIHRoZSB0d28gbGVhdmVzIHRoZSBlbnRyeSBvbiBCT1RIXG4gICAgICAgIC8vIGxpc3RzIOKGkiBoYXJtbGVzcyBkb3VibGUtZGVsaXZlcnkgKGRlZHVwZWQgZG93bnN0cmVhbSBieSBpZGVtcG90ZW5jeVxuICAgICAgICAvLyByZXVzZSksIG5ldmVyIGEgTE9TUy4gVGhlIHJldmVyc2Ugb3JkZXIgKGxyZW0gdGhlbiBscHVzaCkgd291bGQgZHJvcCB0aGVcbiAgICAgICAgLy8gZXZlbnQgb3V0cmlnaHQgb24gYSBjcmFzaCBpbiB0aGUgZ2FwLCB3aGljaCBhIHNlY3VyaXR5IGxvZyBtdXN0IG5vdCBkby5cbiAgICAgICAgYXdhaXQgcmVhZHkoKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IGVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICBjb25zdCByYXcgPSByYXdPZihlbnRyaWVzW2ldKTtcbiAgICAgICAgICBhd2FpdCByZWRpcy5scHVzaChrZXksIHJhdyk7XG4gICAgICAgICAgYXdhaXQgcmVkaXMubHJlbShpblByb2dyZXNzS2V5LCAxLCByYXcpO1xuICAgICAgICAgIHJhd0J5RW50cnkuZGVsZXRlKGVudHJpZXNbaV0pO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgbG9nZ2VyLndhcm4oJ0F1ZGl0IHNwb29sIHJlcXVldWUgZmFpbGVkIChldmVudHMgbG9zdCknLCB7IGVycm9yOiBlcnJvck1lc3NhZ2UoZXJyKSB9KTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgYXN5bmMgcmVjb3ZlcigpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHJlYWR5KCk7XG4gICAgICAgIGF3YWl0IGJlYXQoKTtcbiAgICAgICAgbGV0IHJlY2xhaW1lZCA9IDA7XG4gICAgICAgIGNvbnN0IHN0YWxlID0gYXdhaXQgcmVkaXMuenJhbmdlYnlzY29yZShvd25lcnNLZXksICctaW5mJywgRGF0ZS5ub3coKSAtIHN0YWxlT3duZXJNcyk7XG4gICAgICAgIGZvciAoY29uc3Qgb3duZXIgb2Ygc3RhbGUpIHtcbiAgICAgICAgICBpZiAob3duZXIgPT09IG93bmVySWQpIGNvbnRpbnVlO1xuICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IGluZmxpZ2h0S2V5T2Yob3duZXIpO1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTUFYX01PVkVfSVRFUkFUSU9OUzsgaSsrKSB7XG4gICAgICAgICAgICAvLyBNb3ZlIGluLXByb2dyZXNzLXRhaWwg4oaSIG1haW4taGVhZDogYW4gb2xkZXIgc3RyYW5kZWQgZW50cnkgKG5lYXJlclxuICAgICAgICAgICAgLy8gdGhlIGluLXByb2dyZXNzIGhlYWQpIGVuZHMgdXAgYWhlYWQgb2YgYSBuZXdlciBvbmUsIHByZXNlcnZpbmcgb3JkZXIuXG4gICAgICAgICAgICBjb25zdCByYXcgPSBhd2FpdCByZWRpcy5sbW92ZShzb3VyY2UsIGtleSwgJ1JJR0hUJywgJ0xFRlQnKTtcbiAgICAgICAgICAgIGlmIChyYXcgPT09IG51bGwgfHwgcmF3ID09PSB1bmRlZmluZWQpIGJyZWFrO1xuICAgICAgICAgICAgcmVjbGFpbWVkKys7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIE9ubHkgZm9yZ2V0IHRoZSBvd25lciBvbmNlIGl0cyBsaXN0IGlzIGVtcHR5LlxuICAgICAgICAgIGF3YWl0IHJlZGlzLnpyZW0ob3duZXJzS2V5LCBvd25lcik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlY2xhaW1lZCA+IDApIHtcbiAgICAgICAgICBlbWl0Q291bnRlcignYXVkaXRfc3Bvb2xfcmVjb3ZlcmVkX3RvdGFsJywge30sIHJlY2xhaW1lZCk7XG4gICAgICAgICAgbG9nZ2VyLndhcm4oJ0F1ZGl0IHNwb29sIHJlY292ZXJlZCBldmVudHMgc3RyYW5kZWQgYnkgYSBkZWFkIG93bmVyJywgeyByZWNsYWltZWQgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlY2xhaW1lZDtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBsb2dnZXIud2FybignQXVkaXQgc3Bvb2wgcmVjb3ZlciBmYWlsZWQnLCB7IGVycm9yOiBlcnJvck1lc3NhZ2UoZXJyKSB9KTtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG4gICAgfSxcblxuICAgIGFzeW5jIGhlYXJ0YmVhdCgpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHJlYWR5KCk7XG4gICAgICAgIGF3YWl0IGJlYXQoKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBsb2dnZXIuZGVidWcoJ0F1ZGl0IHNwb29sIGhlYXJ0YmVhdCBmYWlsZWQnLCB7IGVycm9yOiBlcnJvck1lc3NhZ2UoZXJyKSB9KTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgYXN5bmMgZGVwdGgoKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gYXdhaXQgcmVkaXMubGxlbihrZXkpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuICAgIH0sXG4gIH07XG59XG5cbi8qKlxuICogQnVpbGQgYSBSZWRpcy1iYWNrZWQgYXVkaXQgc3Bvb2wgZnJvbSB0aGUgYW1iaWVudCBgUkVESVNfVVJMYCAvIGBSRURJU19TRU5USU5FTFNgXG4gKiBlbnYgdmlhIHRoZSBzaGFyZWQgYGNyZWF0ZUVudlJlZGlzQ2xpZW50YC4gUmV0dXJucyBgbnVsbGAgd2hlbiBSZWRpcyBpcyBub3RcbiAqIGNvbmZpZ3VyZWQg4oCUIHRoZSBjYWxsZXIgdGhlbiBydW5zIHdpdGhvdXQgYSBzcG9vbCAoYmVzdC1lZmZvcnQgYmVoYXZpb3IpLiBUaGUgc2hhcmVkIGhlbHBlciBsb2Fkc1xuICogaW9yZWRpcyB2aWEgYGNyZWF0ZVJlcXVpcmVgLCBzbyB0aGlzIHN0YXlzIGltcG9ydGFibGUgd2hlcmUgUmVkaXMgaXNuJ3QgcHJlc2VudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUVudlJlZGlzQXVkaXRTcG9vbChvcHRzOiBPbWl0PFJlZGlzQXVkaXRTcG9vbE9wdGlvbnMsICdyZWFkeSc+KTogQXVkaXRTcG9vbCB8IG51bGwge1xuICBjb25zdCBpbnN0ID0gY3JlYXRlRW52UmVkaXNDbGllbnQ8UmVkaXNMaXN0Q2xpZW50ICYgUmVhZHlBd2FyZVJlZGlzPignYXVkaXQtc3Bvb2wnKTtcbiAgaWYgKCFpbnN0KSByZXR1cm4gbnVsbDtcbiAgbG9nZ2VyLmluZm8oJ1JlZGlzIGF1ZGl0IHNwb29sIGluaXRpYWxpemVkJywgeyBrZXk6IG9wdHMua2V5IH0pO1xuICAvLyBUaGUgZW52IGNsaWVudCBoYXMgbm8gb2ZmbGluZSBxdWV1ZTogYSBib290LXRpbWUgcmVjb3ZlcigpIHJ1biBiZWZvcmUgdGhlXG4gIC8vIGNvbm5lY3Rpb24gaXMgdXAgd291bGQgZmFpbCBhbmQgc3RyYW5kIGJhdGNoZXMgdW50aWwgdGhlIG5leHQgcmVzdGFydCwgc29cbiAgLy8gZXZlcnkgY29tbWFuZCB3YWl0cyAoYm91bmRlZCkgZm9yIHJlYWRpbmVzcy5cbiAgcmV0dXJuIGNyZWF0ZVJlZGlzQXVkaXRTcG9vbChpbnN0LCB7IC4uLm9wdHMsIHJlYWR5OiBjcmVhdGVSZWRpc1JlYWR5R2F0ZShpbnN0LCAxMF8wMDApIH0pO1xufVxuIl19
|
|
@@ -369,4 +369,4 @@ export class CacheService {
|
|
|
369
369
|
export function createCacheService(prefix, defaultTtlSeconds = 300) {
|
|
370
370
|
return new CacheService({ prefix, defaultTtlSeconds });
|
|
371
371
|
}
|
|
372
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUtc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9jYWNoZS1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFFdEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUVwQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVwRCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsZUFBZSxDQUFDLENBQUM7QUFVN0M7Ozs7Ozs7R0FPRztBQUNILFNBQVMsVUFBVSxDQUFJLEtBQVE7SUFDN0IsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVE7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUM5RCxJQUFJLENBQUM7UUFDSCxPQUFPLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQU0sQ0FBQztJQUNoRCxDQUFDO0FBQ0gsQ0FBQztBQWtFRCxNQUFNLDBCQUEwQixHQUFHLGtCQUFrQixDQUFDO0FBRXREOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sVUFBVSwrQkFBK0IsQ0FBQyxTQUFrQztJQUNoRixNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDekMsTUFBTSxlQUFlLEdBQW1ELEVBQUUsQ0FBQztJQUMzRSxNQUFN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Q0FBQztRQUNMLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUM7WUFDSCxPQUFPLFVBQVUsQ0FBQyxNQUFNLE1BQU0sQ0FBQyxDQUFDO1FBQ2xDLENBQUM7Z0JBQVMsQ0FBQztZQUNULElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsS0FBSztRQUNULElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxzREFBc0Q7SUFDdEQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztJQUMxQixDQUFDO0NBQ0Y7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxNQUFjLEVBQUUsaUJBQWlCLEdBQUcsR0FBRztJQUN4RSxPQUFPLElBQUksWUFBWSxDQUFDLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLENBQUMsQ0FBQztBQUN6RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogTGlnaHR3ZWlnaHQgY2FjaGluZyBzZXJ2aWNlIHdpdGggVFRMIHN1cHBvcnQuXG4gKlxuICogU3RvcmFnZSBpcyBhIHBlci1wcm9jZXNzIHRydWUtTFJVIE1hcCAobm8gZXh0ZXJuYWwgZGVwZW5kZW5jaWVzKS5cbiAqXG4gKiBDcm9zcy1yZXBsaWNhIGludmFsaWRhdGlvbjogZXZlcnkgc2VydmljZSBydW5zIHNldmVyYWxcbiAqIHJlcGxpY2FzIChIUEEpLCBlYWNoIHdpdGggaXRzIE9XTiBpbi1tZW1vcnkgY2FjaGUuIEFuIGludmFsaWRhdGlvbiBwZXJmb3JtZWQgb25cbiAqIG9uZSBwb2QgKGBkZWxgIC8gYGludmFsaWRhdGVQYXR0ZXJuYCAvIGBjbGVhcmApIGlzIGJyb2FkY2FzdCBvdmVyIFJlZGlzIHB1Yi9zdWJcbiAqICh7QGxpbmsgQ2FjaGVJbnZhbGlkYXRpb25CdXN9LCB3aXJlZCBmcm9tIHRoZSBhbWJpZW50IFJlZGlzIGVudiBieSBkZWZhdWx0KSBhbmRcbiAqIGFwcGxpZWQgYnkgZXZlcnkgb3RoZXIgcG9kLCBzbyBhIHdyaXRlIG9uIHBvZCBBIGNhbid0IGxlYXZlIHBvZCBCIHNlcnZpbmcgdGhlXG4gKiBzdGFsZSBlbnRyeSB1bnRpbCBpdHMgVFRMIGxhcHNlcy4gQSBwb2Qgd2hvc2Ugc3Vic2NyaWJlciAocmUpY29ubmVjdHMgZmx1c2hlc1xuICogaXRzIGxvY2FsIGNhY2hlIOKAlCBpdCBtYXkgaGF2ZSBtaXNzZWQgaW52YWxpZGF0aW9ucyB3aGlsZSBkaXNjb25uZWN0ZWQg4oCUIGFuZCBhXG4gKiBgZ2V0T3JTZXRgIHdob3NlIGZhY3RvcnkgcmFjZWQgYW4gaW52YWxpZGF0aW9uIGRvZXMgbm90IGNhY2hlIGl0cyByZXN1bHQuXG4gKlxuICogRGVzaWduOlxuICogLSBBbGwgb3BlcmF0aW9ucyBhcmUgZmFpbC1zYWZlOiBjYWNoZSBtaXNzZXMvZXJyb3JzIHJldHVybiBudWxsLCBuZXZlciB0aHJvd1xuICogLSBSZWFkcyBkZWVwLWNsb25lLCBzbyBldmVyeSBjYWxsZXIgZ2V0cyBhbiBpbmRlcGVuZGVudCBjb3B5IChtdXRhdGluZyBhXG4gKiAgIHJlc3VsdCBpcyBhbHdheXMgc2FmZSlcbiAqIC0gYGdldE9yU2V0YCBpcyBzaW5nbGUtZmxpZ2h0OiBjb25jdXJyZW50IG1pc3NlcyBzaGFyZSBvbmUgZmFjdG9yeSgpIGNhbGxcbiAqIC0gS2V5IG5hbWVzcGFjZSBwcmVmaXhpbmcgdG8gYXZvaWQgY29sbGlzaW9ucyBiZXR3ZWVuIHNlcnZpY2VzXG4gKi9cblxuaW1wb3J0IHsgcmFuZG9tVVVJRCB9IGZyb20gJ2NyeXB0byc7XG5cbmltcG9ydCB7IGNyZWF0ZUVudlJlZGlzQ2xpZW50IH0gZnJvbSAnLi9lbnYtcmVkaXMuanMnO1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSAnLi4vdXRpbHMvbG9nZ2VyLmpzJztcbmltcG9ydCB7IGVtaXRDb3VudGVyIH0gZnJvbSAnLi4vdXRpbHMvbWV0cmljLWVtaXR0ZXIuanMnO1xuaW1wb3J0IHsgZXJyb3JNZXNzYWdlIH0gZnJvbSAnLi4vdXRpbHMvcmVzcG9uc2UuanMnO1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoJ2NhY2hlLXNlcnZpY2UnKTtcblxuLyoqXG4gKiBDYWNoZSBlbnRyeSB3aXRoIHZhbHVlIGFuZCBleHBpcmF0aW9uIHRpbWUuXG4gKi9cbmludGVyZmFjZSBDYWNoZUVudHJ5PFQ+IHtcbiAgdmFsdWU6IFQ7XG4gIGV4cGlyZXNBdDogbnVtYmVyOyAvLyBVbml4IHRpbWVzdGFtcCBpbiBtc1xufVxuXG4vKipcbiAqIERlZXAtY2xvbmUgYSB2YWx1ZSBzbyB0aGUgY2FjaGUgaGFuZHMgYmFjayBhbiBJTkRFUEVOREVOVCBjb3B5IG9uIGV2ZXJ5IHJlYWQuXG4gKiBXaXRob3V0IHRoaXMgaXQgcmV0dXJucyB0aGUgc2FtZSBzdG9yZWQgb2JqZWN0IHJlZmVyZW5jZSwgc28gYSBjb25zdW1lclxuICogbXV0YXRpbmcgYSBcImNhY2hlZFwiIG9iamVjdCBzaWxlbnRseSBjb3JydXB0cyB0aGUgc2hhcmVkIGNhY2hlLlxuICpcbiAqIFByaW1pdGl2ZXMgYXJlIHJldHVybmVkIGFzLWlzLiBQcmVmZXJzIHRoZSBzdHJ1Y3R1cmVkLWNsb25lIGFsZ29yaXRobTsgZmFsbHNcbiAqIGJhY2sgdG8gYSBKU09OIHJvdW5kLXRyaXAgb24gb2xkZXIgcnVudGltZXMgb3IgZXhvdGljIHZhbHVlcy5cbiAqL1xuZnVuY3Rpb24gY2xvbmVWYWx1ZTxUPih2YWx1ZTogVCk6IFQge1xuICBpZiAodmFsdWUgPT09IG51bGwgfHwgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JykgcmV0dXJuIHZhbHVlO1xuICB0cnkge1xuICAgIHJldHVybiBzdHJ1Y3R1cmVkQ2xvbmUodmFsdWUpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh2YWx1ZSkpIGFzIFQ7XG4gIH1cbn1cblxuLyoqXG4gKiBNaW5pbWFsIFJlZGlzIGtleS92YWx1ZSBjbGllbnQgc3VyZmFjZSAoc3Vic2V0IG9mIGlvcmVkaXMpIHNoYXJlZCBieSB0aGVcbiAqIHRva2VuLXJldm9jYXRpb24gcHVibGlzaGVyL3JlYWRlciBhbmQgcGxhdGZvcm0ncyBSZWRpcyBoZWxwZXJzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZGlzQ2FjaGVDbGllbnQge1xuICBnZXQoa2V5OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+O1xuICBzZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIC4uLmFyZ3M6IHVua25vd25bXSk6IFByb21pc2U8dW5rbm93bj47XG4gIGRlbCguLi5rZXlzOiBzdHJpbmdbXSk6IFByb21pc2U8bnVtYmVyPjtcbiAgLyoqXG4gICAqIFNlcnZlci1zaWRlIEx1YSAoaW9yZWRpcyBgZXZhbChzY3JpcHQsIG51bUtleXMsIC4uLmtleXNBbmRBcmdzKWApLiBPcHRpb25hbFxuICAgKiBzbyBhIHBsYWluIGtleS92YWx1ZSBmYWtlIHN0aWxsIHNhdGlzZmllcyB0aGUgaW50ZXJmYWNlOyB0aGUgd3JpdGVycyB0aGF0XG4gICAqIG5lZWQgYXRvbWljIGNvbXBhcmUtYW5kLXNldCAoZS5nLiBgcHVibGlzaFRva2VuUmV2b2NhdGlvbmApIHJlZnVzZSBhIGNsaWVudFxuICAgKiB3aXRob3V0IGl0IHJhdGhlciB0aGFuIGZhbGwgYmFjayB0byBhIHJhY3kgcmVhZC1tb2RpZnktd3JpdGUuXG4gICAqL1xuICBldmFsPyhzY3JpcHQ6IHN0cmluZywgbnVtS2V5czogbnVtYmVyLCAuLi5hcmdzOiBBcnJheTxzdHJpbmcgfCBudW1iZXI+KTogUHJvbWlzZTx1bmtub3duPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDYWNoZUNvbmZpZyB7XG4gIC8qKiBLZXkgcHJlZml4IGZvciBuYW1lc3BhY2UgaXNvbGF0aW9uIChlLmcuLCAncGx1Z2luOicsICdjb21wbGlhbmNlOicpICovXG4gIHByZWZpeDogc3RyaW5nO1xuICAvKiogRGVmYXVsdCBUVEwgaW4gc2Vjb25kcyAqL1xuICBkZWZhdWx0VHRsU2Vjb25kczogbnVtYmVyO1xuICAvKiogTWF4IGVudHJpZXMgZm9yIHRoZSBjYWNoZSAoZGVmYXVsdCAxMDAwKSAqL1xuICBtYXhFbnRyaWVzPzogbnVtYmVyO1xuICAvKipcbiAgICogQ3Jvc3MtcmVwbGljYSBpbnZhbGlkYXRpb24gYnVzLiBPbWl0IHRvIHVzZSB0aGUgc2hhcmVkIGVudi1SZWRpcyBidXMgKG51bGxcbiAgICogd2hlbiBSZWRpcyBpc24ndCBjb25maWd1cmVkIOKGkiBzaW5nbGUtcHJvY2VzcyBzZW1hbnRpY3MpOyBwYXNzIGBudWxsYCB0b1xuICAgKiBkaXNhYmxlIGV4cGxpY2l0bHkuXG4gICAqL1xuICBpbnZhbGlkYXRpb25CdXM/OiBDYWNoZUludmFsaWRhdGlvbkJ1cyB8IG51bGw7XG59XG5cbi8qKiBPbmUgaW52YWxpZGF0aW9uIGJyb2FkY2FzdCB0byBldmVyeSByZXBsaWNhLiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYWNoZUludmFsaWRhdGlvbk1lc3NhZ2Uge1xuICAvKiogSWQgb2YgdGhlIENhY2hlU2VydmljZSBpbnN0YW5jZSB0aGF0IGludmFsaWRhdGVkIChpdCBpZ25vcmVzIGl0cyBvd24gZWNobykuICovXG4gIG9yaWdpbjogc3RyaW5nO1xuICAvKiogVGhlIGNhY2hlIG5hbWVzcGFjZSAoYENhY2hlQ29uZmlnLnByZWZpeGApIHRoZSBpbnZhbGlkYXRpb24gYXBwbGllcyB0by4gKi9cbiAgcHJlZml4OiBzdHJpbmc7XG4gIG9wOiAnZGVsJyB8ICdwYXR0ZXJuJyB8ICdjbGVhcic7XG4gIC8qKiBVbi1wcmVmaXhlZCBrZXkgKGBkZWxgKSBvciBnbG9iIHBhdHRlcm4gKGBwYXR0ZXJuYCkuICovXG4gIGtleT86IHN0cmluZztcbn1cblxuLyoqIFRyYW5zcG9ydCB0aGF0IGZhbnMgY2FjaGUgaW52YWxpZGF0aW9ucyBvdXQgdG8gZXZlcnkgcmVwbGljYS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2FjaGVJbnZhbGlkYXRpb25CdXMge1xuICAvKiogRmlyZS1hbmQtZm9yZ2V0IGJyb2FkY2FzdC4gTmV2ZXIgdGhyb3dzLiAqL1xuICBwdWJsaXNoKG1zZzogQ2FjaGVJbnZhbGlkYXRpb25NZXNzYWdlKTogdm9pZDtcbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGhhbmRsZXJzLiBgb25NZXNzYWdlYCByZWNlaXZlcyBldmVyeSBicm9hZGNhc3QgKGluY2x1ZGluZyB0aGlzXG4gICAqIHByb2Nlc3MncyBvd24pOyBgb25SZXN5bmNgIGZpcmVzIHdoZW5ldmVyIHRoZSBzdWJzY3JpcHRpb24gaXMgKHJlKWVzdGFibGlzaGVkLFxuICAgKiBpLmUuIHdoZW5ldmVyIGludmFsaWRhdGlvbnMgbWF5IGhhdmUgYmVlbiBtaXNzZWQuXG4gICAqL1xuICBzdWJzY3JpYmUob25NZXNzYWdlOiAobXNnOiBDYWNoZUludmFsaWRhdGlvbk1lc3NhZ2UpID0+IHZvaWQsIG9uUmVzeW5jOiAoKSA9PiB2b2lkKTogdm9pZDtcbn1cblxuLyoqIE1pbmltYWwgaW9yZWRpcyBwdWIvc3ViIHN1cmZhY2UgdGhlIGVudiBidXMgbmVlZHMuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZGlzSW52YWxpZGF0aW9uQ2xpZW50IHtcbiAgcHVibGlzaChjaGFubmVsOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZyk6IFByb21pc2U8bnVtYmVyPjtcbiAgc3Vic2NyaWJlKC4uLmNoYW5uZWxzOiBzdHJpbmdbXSk6IFByb21pc2U8dW5rbm93bj47XG4gIG9uKGV2ZW50OiBzdHJpbmcsIGNiOiAoLi4uYXJnczogYW55W10pID0+IHZvaWQpOiB1bmtub3duO1xuICBkdXBsaWNhdGUoKTogUmVkaXNJbnZhbGlkYXRpb25DbGllbnQ7XG4gIHN0YXR1cz86IHN0cmluZztcbn1cblxuY29uc3QgQ0FDSEVfSU5WQUxJREFUSU9OX0NIQU5ORUwgPSAnY2FjaGU6aW52YWxpZGF0ZSc7XG5cbi8qKlxuICogUmVkaXMgcHViL3N1YiBpbnZhbGlkYXRpb24gYnVzLiBQVUJMSVNIIG9uIHRoZSBnaXZlbiBjbGllbnQ7IFNVQlNDUklCRSBvbiBhXG4gKiBgZHVwbGljYXRlKClgIChhIHN1YnNjcmliZWQgaW9yZWRpcyBjb25uZWN0aW9uIGNhbid0IHJ1biBvdGhlciBjb21tYW5kcykuXG4gKlxuICogVGhlIFNVQlNDUklCRSBpcyBpc3N1ZWQgb24gZXZlcnkgYHJlYWR5YCAoaW5pdGlhbCBjb25uZWN0IEFORCBlYWNoIHJlY29ubmVjdClcbiAqIHJhdGhlciB0aGFuIG9uY2UgYXQgY29uc3RydWN0aW9uOiB0aGUgZW52IGNsaWVudCBydW5zIHdpdGhvdXQgYW4gb2ZmbGluZVxuICogcXVldWUsIHNvIGEgc3Vic2NyaWJlIGlzc3VlZCBiZWZvcmUgdGhlIGNvbm5lY3Rpb24gaXMgdXAgaXMgcmVqZWN0ZWQgYW5kIHdvdWxkXG4gKiBuZXZlciBiZSByZXRyaWVkLiBFYWNoIGByZWFkeWAgYWxzbyB0cmlnZ2VycyBgb25SZXN5bmNgIHNvIGV2ZXJ5IGNhY2hlIGZsdXNoZXNcbiAqIHdoYXRldmVyIGl0IG1heSBoYXZlIG1pc3NlZCB3aGlsZSBkaXNjb25uZWN0ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZWRpc0NhY2hlSW52YWxpZGF0aW9uQnVzKHB1Ymxpc2hlcjogUmVkaXNJbnZhbGlkYXRpb25DbGllbnQpOiBDYWNoZUludmFsaWRhdGlvbkJ1cyB7XG4gIGNvbnN0IHN1YnNjcmliZXIgPSBwdWJsaXNoZXIuZHVwbGljYXRlKCk7XG4gIGNvbnN0IG1lc3NhZ2VIYW5kbGVyczogQXJyYXk8KG1zZzogQ2FjaGVJbnZhbGlkYXRpb25NZXNzYWdlKSA9PiB2b2lkPiA9IFtdO1xuICBjb25zdCByZXN5bmNIYW5kbGVyczogQXJyYXk8KCkgPT4gdm9pZD4gPSBbXTtcblxuICBjb25zdCByZXN5bmMgPSAoKTogdm9pZCA9PiB7XG4gICAgZm9yIChjb25zdCBoIG9mIHJlc3luY0hhbmRsZXJzKSB7XG4gICAgICB0cnkgeyBoKCk7IH0gY2F0Y2ggeyAvKiBpc29sYXRlZCAqLyB9XG4gICAgfVxuICB9O1xuICBjb25zdCBkb1N1YnNjcmliZSA9ICgpOiB2b2lkID0+IHtcbiAgICB2b2lkIFByb21pc2UucmVzb2x2ZShzdWJzY3JpYmVyLnN1YnNjcmliZShDQUNIRV9JTlZBTElEQVRJT05fQ0hBTk5FTCkpXG4gICAgICAudGhlbigoKSA9PiByZXN5bmMoKSlcbiAgICAgIC5jYXRjaCgoZXJyOiB1bmtub3duKSA9PiB7XG4gICAgICAgIGVtaXRDb3VudGVyKCdjYWNoZV9pbnZhbGlkYXRpb25fc3Vic2NyaWJlX2ZhaWxlZF90b3RhbCcsIHt9KTtcbiAgICAgICAgbG9nZ2VyLndhcm4oJ0NhY2hlIGludmFsaWRhdGlvbiBzdWJzY3JpYmUgZmFpbGVkOyB3aWxsIHJldHJ5IG9uIG5leHQgcmVjb25uZWN0Jywge1xuICAgICAgICAgIGVycm9yOiBlcnJvck1lc3NhZ2UoZXJyKSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfTtcblxuICBzdWJzY3JpYmVyLm9uKCdtZXNzYWdlJywgKGNoYW5uZWw6IHN0cmluZywgcmF3OiBzdHJpbmcpID0+IHtcbiAgICBpZiAoY2hhbm5lbCAhPT0gQ0FDSEVfSU5WQUxJREFUSU9OX0NIQU5ORUwpIHJldHVybjtcbiAgICBsZXQgbXNnOiBDYWNoZUludmFsaWRhdGlvbk1lc3NhZ2U7XG4gICAgdHJ5IHtcbiAgICAgIG1zZyA9IEpTT04ucGFyc2UocmF3KSBhcyBDYWNoZUludmFsaWRhdGlvbk1lc3NhZ2U7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGZvciAoY29uc3QgaCBvZiBtZXNzYWdlSGFuZGxlcnMpIHtcbiAgICAgIHRyeSB7IGgobXNnKTsgfSBjYXRjaCB7IC8qIG9uZSBjYWNoZSBjYW4ndCBicmVhayB0aGUgb3RoZXJzICovIH1cbiAgICB9XG4gIH0pO1xuICBzdWJzY3JpYmVyLm9uKCdyZWFkeScsIGRvU3Vic2NyaWJlKTtcbiAgc3Vic2NyaWJlci5vbignZXJyb3InLCAoZTogdW5rbm93bikgPT5cbiAgICBsb2dnZXIud2FybignQ2FjaGUgaW52YWxpZGF0aW9uIHN1YnNjcmliZXIgZXJyb3InLCB7IGVycm9yOiBlcnJvck1lc3NhZ2UoZSkgfSkpO1xuICBpZiAoc3Vic2NyaWJlci5zdGF0dXMgPT09ICdyZWFkeScpIGRvU3Vic2NyaWJlKCk7XG5cbiAgcmV0dXJuIHtcbiAgICBwdWJsaXNoKG1zZykge1xuICAgICAgdm9pZCBQcm9taXNlLnJlc29sdmUoKVxuICAgICAgICAudGhlbigoKSA9PiBwdWJsaXNoZXIucHVibGlzaChDQUNIRV9JTlZBTElEQVRJT05fQ0hBTk5FTCwgSlNPTi5zdHJpbmdpZnkobXNnKSkpXG4gICAgICAgIC5jYXRjaCgoZXJyOiB1bmtub3duKSA9PiB7XG4gICAgICAgICAgZW1pdENvdW50ZXIoJ2NhY2hlX2ludmFsaWRhdGlvbl9wdWJsaXNoX2ZhaWxlZF90b3RhbCcsIHsgcHJlZml4OiBtc2cucHJlZml4IH0pO1xuICAgICAgICAgIGxvZ2dlci53YXJuKCdDYWNoZSBpbnZhbGlkYXRpb24gcHVibGlzaCBmYWlsZWQgKG90aGVyIHJlcGxpY2FzIGtlZXAgdGhlIGVudHJ5IHVudGlsIFRUTCknLCB7XG4gICAgICAgICAgICBwcmVmaXg6IG1zZy5wcmVmaXgsIG9wOiBtc2cub3AsIGVycm9yOiBlcnJvck1lc3NhZ2UoZXJyKSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfSxcbiAgICBzdWJzY3JpYmUob25NZXNzYWdlLCBvblJlc3luYykge1xuICAgICAgbWVzc2FnZUhhbmRsZXJzLnB1c2gob25NZXNzYWdlKTtcbiAgICAgIHJlc3luY0hhbmRsZXJzLnB1c2gob25SZXN5bmMpO1xuICAgIH0sXG4gIH07XG59XG5cbi8vIHVuZGVmaW5lZCA9IG5vdCB5ZXQgYXR0ZW1wdGVkOyBudWxsID0gYXR0ZW1wdGVkLCBSZWRpcyBub3QgY29uZmlndXJlZC5cbmxldCBlbnZJbnZhbGlkYXRpb25CdXM6IENhY2hlSW52YWxpZGF0aW9uQnVzIHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuLyoqIFByb2Nlc3Mtd2lkZSBpbnZhbGlkYXRpb24gYnVzIGZyb20gdGhlIGFtYmllbnQgUmVkaXMgZW52IChudWxsIHdpdGhvdXQgUmVkaXMpLiAqL1xuZnVuY3Rpb24gZ2V0RW52Q2FjaGVJbnZhbGlkYXRpb25CdXMoKTogQ2FjaGVJbnZhbGlkYXRpb25CdXMgfCBudWxsIHtcbiAgaWYgKGVudkludmFsaWRhdGlvbkJ1cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgY2xpZW50ID0gY3JlYXRlRW52UmVkaXNDbGllbnQ8UmVkaXNJbnZhbGlkYXRpb25DbGllbnQ+KCdjYWNoZS1pbnZhbGlkYXRpb24nKTtcbiAgICBlbnZJbnZhbGlkYXRpb25CdXMgPSBjbGllbnQgPyBjcmVhdGVSZWRpc0NhY2hlSW52YWxpZGF0aW9uQnVzKGNsaWVudCkgOiBudWxsO1xuICB9XG4gIHJldHVybiBlbnZJbnZhbGlkYXRpb25CdXM7XG59XG5cbi8qKlxuICogQ2FjaGUgc2VydmljZSB3aXRoIGdldC9zZXQvZGVsIG9wZXJhdGlvbnMgYW5kIGF1dG9tYXRpYyBUVEwgZXhwaXJ5LlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBjYWNoZSA9IG5ldyBDYWNoZVNlcnZpY2UoeyBwcmVmaXg6ICdwbHVnaW46JywgZGVmYXVsdFR0bFNlY29uZHM6IDMwMCB9KTtcbiAqXG4gKiAvLyBTZXQgd2l0aCBkZWZhdWx0IFRUTFxuICogYXdhaXQgY2FjaGUuc2V0KCdvcmcxMjM6bGlzdCcsIHBsdWdpbnMpO1xuICpcbiAqIC8vIEdldCAocmV0dXJucyBudWxsIG9uIG1pc3MpXG4gKiBjb25zdCBjYWNoZWQgPSBhd2FpdCBjYWNoZS5nZXQ8UGx1Z2luW10+KCdvcmcxMjM6bGlzdCcpO1xuICpcbiAqIC8vIEludmFsaWRhdGVcbiAqIGF3YWl0IGNhY2hlLmRlbCgnb3JnMTIzOmxpc3QnKTtcbiAqXG4gKiAvLyBJbnZhbGlkYXRlIGJ5IHBhdHRlcm5cbiAqIGF3YWl0IGNhY2hlLmludmFsaWRhdGVQYXR0ZXJuKCdvcmcxMjM6KicpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBDYWNoZVNlcnZpY2Uge1xuICBwcml2YXRlIG1lbW9yeSA9IG5ldyBNYXA8c3RyaW5nLCBDYWNoZUVudHJ5PHVua25vd24+PigpO1xuICAvKipcbiAgICogSW4tZmxpZ2h0IGBnZXRPclNldGAgZmFjdG9yeSBwcm9taXNlcywga2V5ZWQgYnkgZnVsbCBjYWNoZSBrZXkuIENvYWxlc2Nlc1xuICAgKiBjb25jdXJyZW50IGNvbGQgY2FsbGVycyBvbnRvIGEgc2luZ2xlIGBmYWN0b3J5KClgIGludm9jYXRpb24gKHNpbmdsZS1mbGlnaHRcbiAgICogLyBzdGFtcGVkZSBwcm90ZWN0aW9uKTsgZW50cmllcyBhcmUgY2xlYXJlZCBvbmNlIHRoZSBwcm9taXNlIHNldHRsZXMuXG4gICAqL1xuICBwcml2YXRlIGluZmxpZ2h0ID0gbmV3IE1hcDxzdHJpbmcsIFByb21pc2U8dW5rbm93bj4+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcHJlZml4OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdFR0bE1zOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgbWF4RW50cmllczogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IGJ1czogQ2FjaGVJbnZhbGlkYXRpb25CdXMgfCBudWxsO1xuICBwcml2YXRlIHJlYWRvbmx5IGluc3RhbmNlSWQgPSByYW5kb21VVUlEKCk7XG4gIC8qKlxuICAgKiBCdW1wZWQgb24gRVZFUlkgaW52YWxpZGF0aW9uIChsb2NhbCBvciByZW1vdGUpLiBgZ2V0T3JTZXRgIG9ubHkgY2FjaGVzIGFcbiAgICogZmFjdG9yeSByZXN1bHQgaWYgbm8gaW52YWxpZGF0aW9uIGhhcHBlbmVkIHdoaWxlIHRoZSBmYWN0b3J5IHJhbiDigJQgb3RoZXJ3aXNlXG4gICAqIGl0IGNvdWxkIHJlLWNhY2hlIGEgdmFsdWUgcmVhZCBiZWZvcmUgdGhlIHdyaXRlIHRoYXQgaW52YWxpZGF0ZWQgaXQuXG4gICAqL1xuICBwcml2YXRlIGdlbmVyYXRpb24gPSAwO1xuXG4gIC8qKiBDYWNoZSBtZXRyaWNzIOKAlCB0cmFja3MgaGl0cywgbWlzc2VzLCBhbmQgaW52YWxpZGF0aW9ucy4gKi9cbiAgcmVhZG9ubHkgbWV0cmljcyA9IHsgaGl0czogMCwgbWlzc2VzOiAwLCBzZXRzOiAwLCBpbnZhbGlkYXRpb25zOiAwIH07XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBDYWNoZUNvbmZpZykge1xuICAgIHRoaXMucHJlZml4ID0gY29uZmlnLnByZWZpeDtcbiAgICB0aGlzLmRlZmF1bHRUdGxNcyA9IGNvbmZpZy5kZWZhdWx0VHRsU2Vjb25kcyAqIDEwMDA7XG4gICAgdGhpcy5tYXhFbnRyaWVzID0gY29uZmlnLm1heEVudHJpZXMgPz8gMTAwMDtcbiAgICB0aGlzLmJ1cyA9IGNvbmZpZy5pbnZhbGlkYXRpb25CdXMgPT09IHVuZGVmaW5lZCA/IGdldEVudkNhY2hlSW52YWxpZGF0aW9uQnVzKCkgOiBjb25maWcuaW52YWxpZGF0aW9uQnVzO1xuICAgIHRoaXMuYnVzPy5zdWJzY3JpYmUoXG4gICAgICAobXNnKSA9PiB7XG4gICAgICAgIGlmIChtc2cub3JpZ2luID09PSB0aGlzLmluc3RhbmNlSWQgfHwgbXNnLnByZWZpeCAhPT0gdGhpcy5wcmVmaXgpIHJldHVybjtcbiAgICAgICAgdGhpcy5hcHBseUxvY2FsSW52YWxpZGF0aW9uKG1zZy5vcCwgbXNnLmtleSk7XG4gICAgICB9LFxuICAgICAgKCkgPT4gdGhpcy5hcHBseUxvY2FsSW52YWxpZGF0aW9uKCdjbGVhcicpLFxuICAgICk7XG4gIH1cblxuICAvKiogQnJvYWRjYXN0IGFuIGludmFsaWRhdGlvbiB0byB0aGUgb3RoZXIgcmVwbGljYXMuICovXG4gIHByaXZhdGUgYnJvYWRjYXN0KG9wOiBDYWNoZUludmFsaWRhdGlvbk1lc3NhZ2VbJ29wJ10sIGtleT86IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuYnVzPy5wdWJsaXNoKHsgb3JpZ2luOiB0aGlzLmluc3RhbmNlSWQsIHByZWZpeDogdGhpcy5wcmVmaXgsIG9wLCAuLi4oa2V5ICE9PSB1bmRlZmluZWQgJiYgeyBrZXkgfSkgfSk7XG4gIH1cblxuICAvKiogQXBwbHkgYW4gaW52YWxpZGF0aW9uIHRvIFRISVMgcHJvY2VzcydzIGluLW1lbW9yeSBlbnRyaWVzLiBSZXR1cm5zIHRoZSBjb3VudCByZW1vdmVkLiAqL1xuICBwcml2YXRlIGFwcGx5TG9jYWxJbnZhbGlkYXRpb24ob3A6IENhY2hlSW52YWxpZGF0aW9uTWVzc2FnZVsnb3AnXSwga2V5Pzogc3RyaW5nKTogbnVtYmVyIHtcbiAgICB0aGlzLmdlbmVyYXRpb24rKztcbiAgICBpZiAob3AgPT09ICdjbGVhcicpIHtcbiAgICAgIGNvbnN0IG4gPSB0aGlzLm1lbW9yeS5zaXplO1xuICAgICAgdGhpcy5tZW1vcnkuY2xlYXIoKTtcbiAgICAgIHJldHVybiBuO1xuICAgIH1cbiAgICBpZiAob3AgPT09ICdkZWwnKSB7XG4gICAgICByZXR1cm4gdGhpcy5tZW1vcnkuZGVsZXRlKHRoaXMuZnVsbEtleShrZXkgPz8gJycpKSA/IDEgOiAwO1xuICAgIH1cbiAgICAvLyBHbG9iIHBhdHRlcm4uIEVzY2FwZSByZWdleCBtZXRhY2hhcmFjdGVycyBmaXJzdCBzbyBhIGxpdGVyYWwgYC5gL2AoYC9gW2BcbiAgICAvLyBpbiBhIGtleSBwcmVmaXggKGUuZy4gYG9yZzp2MS4yOipgKSBjYW4ndCBvdmVyLW1hdGNoIG9yIHRocm93IChhIHRocm93XG4gICAgLy8gaGVyZSB3b3VsZCBsZWF2ZSBlbnRyaWVzIHN0YWxlKTsgb25seSBgKmAgaXMgdHJlYXRlZCBhcyBhIHdpbGRjYXJkLlxuICAgIGNvbnN0IGZwID0gdGhpcy5mdWxsS2V5KGtleSA/PyAnJyk7XG4gICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKCdeJyArIGZwLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXF1cXFxcXS9nLCAnXFxcXCQmJykucmVwbGFjZSgvXFxcXFxcKi9nLCAnLionKSArICckJyk7XG4gICAgbGV0IGRlbGV0ZWQgPSAwO1xuICAgIGZvciAoY29uc3QgayBvZiB0aGlzLm1lbW9yeS5rZXlzKCkpIHtcbiAgICAgIGlmIChyZWdleC50ZXN0KGspKSB7XG4gICAgICAgIHRoaXMubWVtb3J5LmRlbGV0ZShrKTtcbiAgICAgICAgZGVsZXRlZCsrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGVsZXRlZDtcbiAgfVxuXG4gIHByaXZhdGUgZnVsbEtleShrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMucHJlZml4fSR7a2V5fWA7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgY2FjaGVkIHZhbHVlLiBSZXR1cm5zIG51bGwgb24gbWlzcyBvciBlcnJvci5cbiAgICpcbiAgICogVGhlIHJldHVybmVkIHZhbHVlIGlzIGFuIElOREVQRU5ERU5UIGRlZXAgY29weSDigJQgbXV0YXRpbmcgaXQgbmV2ZXIgYWZmZWN0c1xuICAgKiB0aGUgY2FjaGVkIGVudHJ5LlxuICAgKi9cbiAgYXN5bmMgZ2V0PFQ+KGtleTogc3RyaW5nKTogUHJvbWlzZTxUIHwgbnVsbD4ge1xuICAgIGNvbnN0IGZrID0gdGhpcy5mdWxsS2V5KGtleSk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgZW50cnkgPSB0aGlzLm1lbW9yeS5nZXQoZmspO1xuICAgICAgaWYgKCFlbnRyeSkgeyB0aGlzLm1ldHJpY3MubWlzc2VzKys7IHJldHVybiBudWxsOyB9XG4gICAgICBpZiAoRGF0ZS5ub3coKSA+IGVudHJ5LmV4cGlyZXNBdCkge1xuICAgICAgICB0aGlzLm1lbW9yeS5kZWxldGUoZmspO1xuICAgICAgICB0aGlzLm1ldHJpY3MubWlzc2VzKys7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgLy8gTFJVIHRvdWNoOiBkZWxldGUgKyByZS1pbnNlcnQgbW92ZXMgdGhpcyBrZXkgdG8gdGhlIG5ld2VzdCBwb3NpdGlvblxuICAgICAgLy8gKE1hcCBwcmVzZXJ2ZXMgaW5zZXJ0aW9uIG9yZGVyKSwgc28gYHNldGAncyBvbGRlc3QtZmlyc3QgZXZpY3Rpb24gaXMgYVxuICAgICAgLy8gdHJ1ZSBsZWFzdC1yZWNlbnRseS1VU0VEIGV2aWN0aW9uIHJhdGhlciB0aGFuIGZpcnN0LWluc2VydGVkIChGSUZPKS5cbiAgICAgIHRoaXMubWVtb3J5LmRlbGV0ZShmayk7XG4gICAgICB0aGlzLm1lbW9yeS5zZXQoZmssIGVudHJ5KTtcbiAgICAgIHRoaXMubWV0cmljcy5oaXRzKys7XG4gICAgICAvLyBDbG9uZSBzbyBhIGNhbGxlciBtdXRhdGluZyB0aGUgcmVzdWx0IGNhbid0IGNvcnJ1cHQgdGhlIHNoYXJlZCBlbnRyeS5cbiAgICAgIHJldHVybiBjbG9uZVZhbHVlKGVudHJ5LnZhbHVlKSBhcyBUO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhpcy5tZXRyaWNzLm1pc3NlcysrO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCBhIGNhY2hlZCB2YWx1ZSB3aXRoIG9wdGlvbmFsIFRUTCBvdmVycmlkZS5cbiAgICpcbiAgICogQHBhcmFtIGtleSAtIENhY2hlIGtleSAocHJlZml4IGlzIGFkZGVkIGF1dG9tYXRpY2FsbHkpXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFZhbHVlIHRvIGNhY2hlXG4gICAqIEBwYXJhbSB0dGxTZWNvbmRzIC0gVFRMIG92ZXJyaWRlICh1c2VzIGRlZmF1bHQgaWYgbm90IHByb3ZpZGVkKVxuICAgKi9cbiAgYXN5bmMgc2V0PFQ+KGtleTogc3RyaW5nLCB2YWx1ZTogVCwgdHRsU2Vjb25kcz86IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGZrID0gdGhpcy5mdWxsS2V5KGtleSk7XG4gICAgY29uc3QgdHRsID0gdHRsU2Vjb25kcyA/PyB0aGlzLmRlZmF1bHRUdGxNcyAvIDEwMDA7XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5tZXRyaWNzLnNldHMrKztcbiAgICAgIC8vIEEgd3JpdGUgY291bnRzIGFzIGEgdXNlLCBzbyBkcm9wIGFueSBleGlzdGluZyBlbnRyeSBmaXJzdFxuICAgICAgLy8gYW5kIHJlLWluc2VydCBiZWxvdyBhcyB0aGUgbmV3ZXN0IChNYXAgcHJlc2VydmVzIGluc2VydGlvbiBvcmRlcikuIFRoaXNcbiAgICAgIC8vIGtlZXBzIHRoZSBNYXAgb3JkZXJlZCBvbGRlc3QtVVNFRCDihpIgbmV3ZXN0LVVTRUQgc28gdGhlIGV2aWN0aW9uIGJlbG93IGlzXG4gICAgICAvLyB0cnVlIExSVSwgYW5kIGF2b2lkcyBldmljdGluZyBhIHZpY3RpbSB3aGVuIG1lcmVseSB1cGRhdGluZyBhIGtleS5cbiAgICAgIHRoaXMubWVtb3J5LmRlbGV0ZShmayk7XG4gICAgICBpZiAodGhpcy5tZW1vcnkuc2l6ZSA+PSB0aGlzLm1heEVudHJpZXMpIHtcbiAgICAgICAgY29uc3QgZmlyc3RLZXkgPSB0aGlzLm1lbW9yeS5rZXlzKCkubmV4dCgpLnZhbHVlO1xuICAgICAgICBpZiAoZmlyc3RLZXkpIHRoaXMubWVtb3J5LmRlbGV0ZShmaXJzdEtleSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubWVtb3J5LnNldChmaywge1xuICAgICAgICB2YWx1ZSxcbiAgICAgICAgZXhwaXJlc0F0OiBEYXRlLm5vdygpICsgdHRsICogMTAwMCxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gQ2FjaGUgc2V0IGZhaWx1cmUgaXMgbm9uLWZhdGFsXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZSBhIGNhY2hlZCB2YWx1ZS5cbiAgICovXG4gIGFzeW5jIGRlbChrZXk6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmFwcGx5TG9jYWxJbnZhbGlkYXRpb24oJ2RlbCcsIGtleSk7XG4gICAgICB0aGlzLmJyb2FkY2FzdCgnZGVsJywga2V5KTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIENhY2hlIGRlbGV0ZSBmYWlsdXJlIGlzIG5vbi1mYXRhbFxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbnZhbGlkYXRlIGFsbCBrZXlzIG1hdGNoaW5nIGEgcGF0dGVybiAoZS5nLiwgJ29yZzEyMzoqJykuXG4gICAqIE9ubHkgYCpgIGlzIGEgd2lsZGNhcmQuXG4gICAqL1xuICBhc3luYyBpbnZhbGlkYXRlUGF0dGVybihwYXR0ZXJuOiBzdHJpbmcpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBBcHBseSBsb2NhbGx5LCB0aGVuIGZhbiBvdXQgdG8gdGhlIG90aGVyIHJlcGxpY2FzLlxuICAgICAgY29uc3QgZGVsZXRlZCA9IHRoaXMuYXBwbHlMb2NhbEludmFsaWRhdGlvbigncGF0dGVybicsIHBhdHRlcm4pO1xuICAgICAgdGhpcy5icm9hZGNhc3QoJ3BhdHRlcm4nLCBwYXR0ZXJuKTtcbiAgICAgIHRoaXMubWV0cmljcy5pbnZhbGlkYXRpb25zICs9IGRlbGV0ZWQ7XG4gICAgICByZXR1cm4gZGVsZXRlZDtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgb3IgY29tcHV0ZTogcmV0dXJucyBjYWNoZWQgdmFsdWUgaWYgYXZhaWxhYmxlLCBvdGhlcndpc2UgY2FsbHMgdGhlXG4gICAqIGZhY3RvcnkgZnVuY3Rpb24sIGNhY2hlcyB0aGUgcmVzdWx0LCBhbmQgcmV0dXJucyBpdC5cbiAgICpcbiAgICogU2luZ2xlLWZsaWdodCAvIHN0YW1wZWRlIHByb3RlY3Rpb246IHdoZW4gTiBjYWxsZXJzIG1pc3MgY29uY3VycmVudGx5IGZvclxuICAgKiB0aGUgc2FtZSBrZXksIG9ubHkgT05FIGBmYWN0b3J5KClgIHJ1bnMg4oCUIHRoZSByZXN0IGF3YWl0IGl0cyBzaGFyZWQgcHJvbWlzZS5cbiAgICogVGhlIGluLWZsaWdodCBlbnRyeSBpcyBjbGVhcmVkIG9uY2UgaXQgc2V0dGxlcyAoc3VjY2VzcyBvciBmYWlsdXJlKSwgc28gYVxuICAgKiBmYWlsZWQgZmFjdG9yeSBkb2Vzbid0IHBvaXNvbiBsYXRlciBjYWxscy5cbiAgICpcbiAgICogQHBhcmFtIGtleSAtIENhY2hlIGtleVxuICAgKiBAcGFyYW0gZmFjdG9yeSAtIEFzeW5jIGZ1bmN0aW9uIHRvIGNvbXB1dGUgdGhlIHZhbHVlIG9uIGNhY2hlIG1pc3NcbiAgICogQHBhcmFtIHR0bFNlY29uZHMgLSBPcHRpb25hbCBUVEwgb3ZlcnJpZGVcbiAgICogQHJldHVybnMgVGhlIGNhY2hlZCBvciBjb21wdXRlZCB2YWx1ZVxuICAgKi9cbiAgYXN5bmMgZ2V0T3JTZXQ8VD4oa2V5OiBzdHJpbmcsIGZhY3Rvcnk6ICgpID0+IFByb21pc2U8VD4sIHR0bFNlY29uZHM/OiBudW1iZXIpOiBQcm9taXNlPFQ+IHtcbiAgICBjb25zdCBjYWNoZWQgPSBhd2FpdCB0aGlzLmdldDxUPihrZXkpO1xuICAgIGlmIChjYWNoZWQgIT09IG51bGwpIHJldHVybiBjYWNoZWQ7XG5cbiAgICBjb25zdCBmayA9IHRoaXMuZnVsbEtleShrZXkpO1xuICAgIC8vIENvYWxlc2NlIGNvbmN1cnJlbnQgY29sZCBjYWxsZXJzIG9udG8gYSBzaW5nbGUgZmFjdG9yeSgpIGludm9jYXRpb24uIFRoZVxuICAgIC8vIGluLWZsaWdodCBwcm9taXNlIHJlc29sdmVzIHRvIHRoZSBSQVcgdmFsdWU7IGVhY2ggYXdhaXRlciAodGhlIHByaW1hcnlcbiAgICAvLyBjYWxsZXIgYmVsb3cgQU5EIGV2ZXJ5IGNvYWxlc2NlZCBjYWxsZXIgaGVyZSkgY2xvbmVzIGl0IElOREVQRU5ERU5UTFkuXG4gICAgLy8gQ2xvbmluZyBpbnNpZGUgdGhlIGZsaWdodCBpbnN0ZWFkIHdvdWxkIGhhbmQgb25lIHNoYXJlZCBjbG9uZSB0byBhbGwgTlxuICAgIC8vIGNvYWxlc2NlZCBjYWxsZXJzLCBzbyBvbmUgY2FsbGVyIG11dGF0aW5nIGl0cyBcImluZGVwZW5kZW50XCIgcmVzdWx0IHdvdWxkXG4gICAgLy8gY29ycnVwdCB3aGF0IHRoZSBvdGhlcnMgcmVhZCDigJQgdGhlIGV4YWN0IGZvb3RndW4gZ2V0KCkncyBjbG9uZS1vbi1yZWFkXG4gICAgLy8gcHJldmVudHMuXG4gICAgY29uc3QgZXhpc3RpbmcgPSB0aGlzLmluZmxpZ2h0LmdldChmaykgYXMgUHJvbWlzZTxUPiB8IHVuZGVmaW5lZDtcbiAgICBpZiAoZXhpc3RpbmcpIHJldHVybiBjbG9uZVZhbHVlKGF3YWl0IGV4aXN0aW5nKTtcblxuICAgIGNvbnN0IGdlbmVyYXRpb25BdFN0YXJ0ID0gdGhpcy5nZW5lcmF0aW9uO1xuICAgIGNvbnN0IGZsaWdodCA9IChhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGF3YWl0IGZhY3RvcnkoKTtcbiAgICAgIC8vIEFuIGludmFsaWRhdGlvbiAoaGVyZSBvciBvbiBhbm90aGVyIHJlcGxpY2EpIGxhbmRlZCB3aGlsZSB0aGUgZmFjdG9yeVxuICAgICAgLy8gcmFuOiBpdHMgcmVhZCBtYXkgcHJlZGF0ZSB0aGF0IHdyaXRlLCBzbyBkb24ndCBjYWNoZSBpdC5cbiAgICAgIGlmICh0aGlzLmdlbmVyYXRpb24gPT09IGdlbmVyYXRpb25BdFN0YXJ0KSBhd2FpdCB0aGlzLnNldChrZXksIHZhbHVlLCB0dGxTZWNvbmRzKTtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9KSgpO1xuICAgIHRoaXMuaW5mbGlnaHQuc2V0KGZrLCBmbGlnaHQpO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gY2xvbmVWYWx1ZShhd2FpdCBmbGlnaHQpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmluZmxpZ2h0LmRlbGV0ZShmayk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIGFsbCBlbnRyaWVzICh1c2VmdWwgZm9yIHRlc3RpbmcpLlxuICAgKi9cbiAgYXN5bmMgY2xlYXIoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5hcHBseUxvY2FsSW52YWxpZGF0aW9uKCdjbGVhcicpO1xuICAgIHRoaXMuYnJvYWRjYXN0KCdjbGVhcicpO1xuICB9XG5cbiAgLyoqIEN1cnJlbnQgaW4tbWVtb3J5IGNhY2hlIHNpemUgKGZvciBkaWFnbm9zdGljcykuICovXG4gIGdldCBzaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMubWVtb3J5LnNpemU7XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBjYWNoZSBzZXJ2aWNlIGluc3RhbmNlLlxuICpcbiAqIEBwYXJhbSBwcmVmaXggLSBOYW1lc3BhY2UgcHJlZml4IChlLmcuLCAnY29tcGxpYW5jZTonLCAncGx1Z2luOicpXG4gKiBAcGFyYW0gZGVmYXVsdFR0bFNlY29uZHMgLSBEZWZhdWx0IFRUTCBpbiBzZWNvbmRzIChkZWZhdWx0IDMwMCA9IDUgbWluKVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ2FjaGVTZXJ2aWNlKHByZWZpeDogc3RyaW5nLCBkZWZhdWx0VHRsU2Vjb25kcyA9IDMwMCk6IENhY2hlU2VydmljZSB7XG4gIHJldHVybiBuZXcgQ2FjaGVTZXJ2aWNlKHsgcHJlZml4LCBkZWZhdWx0VHRsU2Vjb25kcyB9KTtcbn1cbiJdfQ==
|
|
372
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUtc2VydmljZS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL2NhY2hlLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRXBDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXBELE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxlQUFlLENBQUMsQ0FBQztBQVU3Qzs7Ozs7OztHQU9HO0FBQ0gsU0FBUyxVQUFVLENBQUksS0FBUTtJQUM3QixJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUTtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQzlELElBQUksQ0FBQztRQUNILE9BQU8sZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBTSxDQUFDO0lBQ2hELENBQUM7QUFDSCxDQUFDO0FBa0VELE1BQU0sMEJBQTBCLEdBQUcsa0JBQWtCLENBQUM7QUFFdEQ7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxVQUFVLCtCQUErQixDQUFDLFNBQWtDO0lBQ2hGLE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUN6QyxNQUFNLGVBQWUsR0FBbUQsRUFBRSxDQUFDO0lBQzNFLE1BQU0sY0FBYyxHQUFzQixFQUFFLENBQUM7SUFFN0MsTUFBTSxNQUFNLEdBQUcsR0FBUyxFQUFFO1FBQ3hCLEtBQUssTUFBTSxDQUFDLElBQUksY0FBYyxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDO2dCQUFDLENBQUMsRUFBRSxDQUFDO1lBQUMsQ0FBQztZQUFDLE1BQU0sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7SUFDSCxDQUFDLENBQUM7SUFDRixNQUFNLFdBQVcsR0FBRyxHQUFTLEVBQUU7UUFDN0IsS0FBSyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsMEJBQTBCLENBQUMsQ0FBQzthQUNuRSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7YUFDcEIsS0FBSyxDQUFDLENBQUMsR0FBWSxFQUFFLEVBQUU7WUFDdEIsV0FBVyxDQUFDLDJDQUEyQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzdELE1BQU0sQ0FBQyxJQUFJLENBQUMsbUVBQW1FLEVBQUU7Z0JBQy9FLEtBQUssRUFBRSxZQUFZLENBQUMsR0FBRyxDQUFDO2FBQ3pCLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQyxDQUFDO0lBRUYsVUFBVSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxPQUFlLEVBQUUsR0FBVyxFQUFFLEVBQUU7UUFDeEQsSUFBSSxPQUFPLEtBQUssMEJBQTBCO1lBQUUsT0FBTztRQUNuRCxJQUFJLEdBQTZCLENBQUM7UUFDbEMsSUFBSSxDQUFDO1lBQ0gsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUE2QixDQUFDO1FBQ3BELENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxPQUFPO1FBQ1QsQ0FBQztRQUNELEtBQUssTUFBTSxDQUFDLElBQUksZUFBZSxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDO2dCQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUFDLENBQUM7WUFBQyxNQUFNLENBQUMsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUNILFVBQVUsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3BDLFVBQVUsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBVSxFQUFFLEVBQUUsQ0FDcEMsTUFBTSxDQUFDLElBQUksQ0FBQyxxQ0FBcUMsRUFBRSxFQUFFLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEYsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLE9BQU87UUFBRSxXQUFXLEVBQUUsQ0FBQztJQUVqRCxPQUFPO1FBQ0wsT0FBTyxDQUFDLEdBQUc7WUFDVCxLQUFLLE9BQU8sQ0FBQyxPQUFPLEVBQUU7aUJBQ25CLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLDBCQUEwQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztpQkFDOUUsS0FBSyxDQUFDLENBQUMsR0FBWSxFQUFFLEVBQUU7Z0JBQ3RCLFdBQVcsQ0FBQyx5Q0FBeUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztnQkFDL0UsTUFBTSxDQUFDLElBQUksQ0FBQyw2RUFBNkUsRUFBRTtvQkFDekYsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxHQUFHLENBQUM7aUJBQ3pELENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztRQUNELFNBQVMsQ0FBQyxTQUFTLEVBQUUsUUFBUTtZQUMzQixlQUFlLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2hDLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEMsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQseUVBQXlFO0FBQ3pFLElBQUksa0JBQTJELENBQUM7QUFFaEUscUZBQXFGO0FBQ3JGLFNBQVMsMEJBQTBCO0lBQ2pDLElBQUksa0JBQWtCLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDckMsTUFBTSxNQUFNLEdBQUcsb0JBQW9CLENBQTBCLG9CQUFvQixDQUFDLENBQUM7UUFDbkYsa0JBQWtCLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQywrQkFBK0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQy9FLENBQUM7SUFDRCxPQUFPLGtCQUFrQixDQUFDO0FBQzVCLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILE1BQU0sT0FBTyxZQUFZO0lBQ2YsTUFBTSxHQUFHLElBQUksR0FBRyxFQUErQixDQUFDO0lBQ3hEOzs7O09BSUc7SUFDSyxRQUFRLEdBQUcsSUFBSSxHQUFHLEVBQTRCLENBQUM7SUFDdEMsTUFBTSxDQUFTO0lBQ2YsWUFBWSxDQUFTO0lBQ3JCLFVBQVUsQ0FBUztJQUNuQixHQUFHLENBQThCO0lBQ2pDLFVBQVUsR0FBRyxVQUFVLEVBQUUsQ0FBQztJQUMzQzs7OztPQUlHO0lBQ0ssVUFBVSxHQUFHLENBQUMsQ0FBQztJQUV2Qiw4REFBOEQ7SUFDckQsT0FBTyxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsYUFBYSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBRXJFLFlBQVksTUFBbUI7UUFDN0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQzVCLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztRQUNwRCxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDO1FBQzVDLElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLGVBQWUsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLDBCQUEwQixFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUM7UUFDeEcsSUFBSSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQ2pCLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDTixJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLFVBQVUsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxNQUFNO2dCQUFFLE9BQU87WUFDekUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9DLENBQUMsRUFDRCxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQzNDLENBQUM7SUFDSixDQUFDO0lBRUQsdURBQXVEO0lBQy9DLFNBQVMsQ0FBQyxFQUFrQyxFQUFFLEdBQVk7UUFDaEUsSUFBSSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLEdBQUcsS0FBSyxTQUFTLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3RyxDQUFDO0lBRUQsNEZBQTRGO0lBQ3BGLHNCQUFzQixDQUFDLEVBQWtDLEVBQUUsR0FBWTtRQUM3RSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEIsSUFBSSxFQUFFLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDbkIsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNwQixPQUFPLENBQUMsQ0FBQztRQUNYLENBQUM7UUFDRCxJQUFJLEVBQUUsS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUNqQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdELENBQUM7UUFDRCwyRUFBMkU7UUFDM0UseUVBQXlFO1FBQ3pFLHNFQUFzRTtRQUN0RSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNuQyxNQUFNLEtBQUssR0FBRyxJQUFJLE1BQU0sQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZHLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztRQUNoQixLQUFLLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNuQyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RCLE9BQU8sRUFBRSxDQUFDO1lBQ1osQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRU8sT0FBTyxDQUFDLEdBQVc7UUFDekIsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLEdBQUcsQ0FBSSxHQUFXO1FBQ3RCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFN0IsSUFBSSxDQUFDO1lBQ0gsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQUMsT0FBTyxJQUFJLENBQUM7WUFBQyxDQUFDO1lBQ25ELElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3RCLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztZQUNELHNFQUFzRTtZQUN0RSx5RUFBeUU7WUFDekUsdUVBQXVFO1lBQ3ZFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUMzQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3BCLHdFQUF3RTtZQUN4RSxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFNLENBQUM7UUFDdEMsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdEIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILEtBQUssQ0FBQyxHQUFHLENBQUksR0FBVyxFQUFFLEtBQVEsRUFBRSxVQUFtQjtRQUNyRCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdCLE1BQU0sR0FBRyxHQUFHLFVBQVUsSUFBSSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUVuRCxJQUFJLENBQUM7WUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3BCLDREQUE0RDtZQUM1RCwwRUFBMEU7WUFDMUUsMkVBQTJFO1lBQzNFLHFFQUFxRTtZQUNyRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN2QixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDeEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUM7Z0JBQ2pELElBQUksUUFBUTtvQkFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM3QyxDQUFDO1lBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFO2dCQUNsQixLQUFLO2dCQUNMLFNBQVMsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUk7YUFDbkMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLGlDQUFpQztRQUNuQyxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFXO1FBQ25CLElBQUksQ0FBQztZQUNILElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDeEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDN0IsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLG9DQUFvQztRQUN0QyxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxPQUFlO1FBQ3JDLElBQUksQ0FBQztZQUNILHFEQUFxRDtZQUNyRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ2hFLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxJQUFJLE9BQU8sQ0FBQztZQUN0QyxPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7O09BYUc7SUFDSCxLQUFLLENBQUMsUUFBUSxDQUFJLEdBQVcsRUFBRSxPQUF5QixFQUFFLFVBQW1CO1FBQzNFLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBSSxHQUFHLENBQUMsQ0FBQztRQUN0QyxJQUFJLE1BQU0sS0FBSyxJQUFJO1lBQUUsT0FBTyxNQUFNLENBQUM7UUFFbkMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QiwyRUFBMkU7UUFDM0UseUVBQXlFO1FBQ3pFLHlFQUF5RTtRQUN6RSx5RUFBeUU7UUFDekUsMkVBQTJFO1FBQzNFLHlFQUF5RTtRQUN6RSxZQUFZO1FBQ1osTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUEyQixDQUFDO1FBQ2pFLElBQUksUUFBUTtZQUFFLE9BQU8sVUFBVSxDQUFDLE1BQU0sUUFBUSxDQUFDLENBQUM7UUFFaEQsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQzFDLE1BQU0sTUFBTSxHQUFHLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDekIsTUFBTSxLQUFLLEdBQUcsTUFBTSxPQUFPLEVBQUUsQ0FBQztZQUM5Qix3RUFBd0U7WUFDeEUsMkRBQTJEO1lBQzNELElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxpQkFBaUI7Z0JBQUUsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDbEYsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQztZQUNILE9BQU8sVUFBVSxDQUFDLE1BQU0sTUFBTSxDQUFDLENBQUM7UUFDbEMsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxLQUFLO1FBQ1QsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELHNEQUFzRDtJQUN0RCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO0lBQzFCLENBQUM7Q0FDRjtBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUFDLE1BQWMsRUFBRSxpQkFBaUIsR0FBRyxHQUFHO0lBQ3hFLE9BQU8sSUFBSSxZQUFZLENBQUMsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDO0FBQ3pELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBMaWdodHdlaWdodCBjYWNoaW5nIHNlcnZpY2Ugd2l0aCBUVEwgc3VwcG9ydC5cbiAqXG4gKiBTdG9yYWdlIGlzIGEgcGVyLXByb2Nlc3MgdHJ1ZS1MUlUgTWFwIChubyBleHRlcm5hbCBkZXBlbmRlbmNpZXMpLlxuICpcbiAqIENyb3NzLXJlcGxpY2EgaW52YWxpZGF0aW9uOiBldmVyeSBzZXJ2aWNlIHJ1bnMgc2V2ZXJhbFxuICogcmVwbGljYXMgKEhQQSksIGVhY2ggd2l0aCBpdHMgT1dOIGluLW1lbW9yeSBjYWNoZS4gQW4gaW52YWxpZGF0aW9uIHBlcmZvcm1lZCBvblxuICogb25lIHBvZCAoYGRlbGAgLyBgaW52YWxpZGF0ZVBhdHRlcm5gIC8gYGNsZWFyYCkgaXMgYnJvYWRjYXN0IG92ZXIgUmVkaXMgcHViL3N1YlxuICogKHtAbGluayBDYWNoZUludmFsaWRhdGlvbkJ1c30sIHdpcmVkIGZyb20gdGhlIGFtYmllbnQgUmVkaXMgZW52IGJ5IGRlZmF1bHQpIGFuZFxuICogYXBwbGllZCBieSBldmVyeSBvdGhlciBwb2QsIHNvIGEgd3JpdGUgb24gcG9kIEEgY2FuJ3QgbGVhdmUgcG9kIEIgc2VydmluZyB0aGVcbiAqIHN0YWxlIGVudHJ5IHVudGlsIGl0cyBUVEwgbGFwc2VzLiBBIHBvZCB3aG9zZSBzdWJzY3JpYmVyIChyZSljb25uZWN0cyBmbHVzaGVzXG4gKiBpdHMgbG9jYWwgY2FjaGUg4oCUIGl0IG1heSBoYXZlIG1pc3NlZCBpbnZhbGlkYXRpb25zIHdoaWxlIGRpc2Nvbm5lY3RlZCDigJQgYW5kIGFcbiAqIGBnZXRPclNldGAgd2hvc2UgZmFjdG9yeSByYWNlZCBhbiBpbnZhbGlkYXRpb24gZG9lcyBub3QgY2FjaGUgaXRzIHJlc3VsdC5cbiAqXG4gKiBEZXNpZ246XG4gKiAtIEFsbCBvcGVyYXRpb25zIGFyZSBmYWlsLXNhZmU6IGNhY2hlIG1pc3Nlcy9lcnJvcnMgcmV0dXJuIG51bGwsIG5ldmVyIHRocm93XG4gKiAtIFJlYWRzIGRlZXAtY2xvbmUsIHNvIGV2ZXJ5IGNhbGxlciBnZXRzIGFuIGluZGVwZW5kZW50IGNvcHkgKG11dGF0aW5nIGFcbiAqICAgcmVzdWx0IGlzIGFsd2F5cyBzYWZlKVxuICogLSBgZ2V0T3JTZXRgIGlzIHNpbmdsZS1mbGlnaHQ6IGNvbmN1cnJlbnQgbWlzc2VzIHNoYXJlIG9uZSBmYWN0b3J5KCkgY2FsbFxuICogLSBLZXkgbmFtZXNwYWNlIHByZWZpeGluZyB0byBhdm9pZCBjb2xsaXNpb25zIGJldHdlZW4gc2VydmljZXNcbiAqL1xuXG5pbXBvcnQgeyByYW5kb21VVUlEIH0gZnJvbSAnY3J5cHRvJztcblxuaW1wb3J0IHsgY3JlYXRlRW52UmVkaXNDbGllbnQgfSBmcm9tICcuL2Vudi1yZWRpcy5qcyc7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tICcuLi91dGlscy9sb2dnZXIuanMnO1xuaW1wb3J0IHsgZW1pdENvdW50ZXIgfSBmcm9tICcuLi91dGlscy9tZXRyaWMtZW1pdHRlci5qcyc7XG5pbXBvcnQgeyBlcnJvck1lc3NhZ2UgfSBmcm9tICcuLi91dGlscy9yZXNwb25zZS5qcyc7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcignY2FjaGUtc2VydmljZScpO1xuXG4vKipcbiAqIENhY2hlIGVudHJ5IHdpdGggdmFsdWUgYW5kIGV4cGlyYXRpb24gdGltZS5cbiAqL1xuaW50ZXJmYWNlIENhY2hlRW50cnk8VD4ge1xuICB2YWx1ZTogVDtcbiAgZXhwaXJlc0F0OiBudW1iZXI7IC8vIFVuaXggdGltZXN0YW1wIGluIG1zXG59XG5cbi8qKlxuICogRGVlcC1jbG9uZSBhIHZhbHVlIHNvIHRoZSBjYWNoZSBoYW5kcyBiYWNrIGFuIElOREVQRU5ERU5UIGNvcHkgb24gZXZlcnkgcmVhZC5cbiAqIFdpdGhvdXQgdGhpcyBpdCByZXR1cm5zIHRoZSBzYW1lIHN0b3JlZCBvYmplY3QgcmVmZXJlbmNlLCBzbyBhIGNvbnN1bWVyXG4gKiBtdXRhdGluZyBhIFwiY2FjaGVkXCIgb2JqZWN0IHNpbGVudGx5IGNvcnJ1cHRzIHRoZSBzaGFyZWQgY2FjaGUuXG4gKlxuICogUHJpbWl0aXZlcyBhcmUgcmV0dXJuZWQgYXMtaXMuIFByZWZlcnMgdGhlIHN0cnVjdHVyZWQtY2xvbmUgYWxnb3JpdGhtOyBmYWxsc1xuICogYmFjayB0byBhIEpTT04gcm91bmQtdHJpcCBvbiBvbGRlciBydW50aW1lcyBvciBleG90aWMgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBjbG9uZVZhbHVlPFQ+KHZhbHVlOiBUKTogVCB7XG4gIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnKSByZXR1cm4gdmFsdWU7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHN0cnVjdHVyZWRDbG9uZSh2YWx1ZSk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHZhbHVlKSkgYXMgVDtcbiAgfVxufVxuXG4vKipcbiAqIE1pbmltYWwgUmVkaXMga2V5L3ZhbHVlIGNsaWVudCBzdXJmYWNlIChzdWJzZXQgb2YgaW9yZWRpcykgc2hhcmVkIGJ5IHRoZVxuICogdG9rZW4tcmV2b2NhdGlvbiBwdWJsaXNoZXIvcmVhZGVyIGFuZCBwbGF0Zm9ybSdzIFJlZGlzIGhlbHBlcnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVkaXNDYWNoZUNsaWVudCB7XG4gIGdldChrZXk6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD47XG4gIHNldChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZywgLi4uYXJnczogdW5rbm93bltdKTogUHJvbWlzZTx1bmtub3duPjtcbiAgZGVsKC4uLmtleXM6IHN0cmluZ1tdKTogUHJvbWlzZTxudW1iZXI+O1xuICAvKipcbiAgICogU2VydmVyLXNpZGUgTHVhIChpb3JlZGlzIGBldmFsKHNjcmlwdCwgbnVtS2V5cywgLi4ua2V5c0FuZEFyZ3MpYCkuIE9wdGlvbmFsXG4gICAqIHNvIGEgcGxhaW4ga2V5L3ZhbHVlIGZha2Ugc3RpbGwgc2F0aXNmaWVzIHRoZSBpbnRlcmZhY2U7IHRoZSB3cml0ZXJzIHRoYXRcbiAgICogbmVlZCBhdG9taWMgY29tcGFyZS1hbmQtc2V0IChlLmcuIGBwdWJsaXNoVG9rZW5SZXZvY2F0aW9uYCkgcmVmdXNlIGEgY2xpZW50XG4gICAqIHdpdGhvdXQgaXQgcmF0aGVyIHRoYW4gZmFsbCBiYWNrIHRvIGEgcmFjeSByZWFkLW1vZGlmeS13cml0ZS5cbiAgICovXG4gIGV2YWw/KHNjcmlwdDogc3RyaW5nLCBudW1LZXlzOiBudW1iZXIsIC4uLmFyZ3M6IEFycmF5PHN0cmluZyB8IG51bWJlcj4pOiBQcm9taXNlPHVua25vd24+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENhY2hlQ29uZmlnIHtcbiAgLyoqIEtleSBwcmVmaXggZm9yIG5hbWVzcGFjZSBpc29sYXRpb24gKGUuZy4sICdwbHVnaW46JywgJ2NvbXBsaWFuY2U6JykgKi9cbiAgcHJlZml4OiBzdHJpbmc7XG4gIC8qKiBEZWZhdWx0IFRUTCBpbiBzZWNvbmRzICovXG4gIGRlZmF1bHRUdGxTZWNvbmRzOiBudW1iZXI7XG4gIC8qKiBNYXggZW50cmllcyBmb3IgdGhlIGNhY2hlIChkZWZhdWx0IDEwMDApICovXG4gIG1heEVudHJpZXM/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBDcm9zcy1yZXBsaWNhIGludmFsaWRhdGlvbiBidXMuIE9taXQgdG8gdXNlIHRoZSBzaGFyZWQgZW52LVJlZGlzIGJ1cyAobnVsbFxuICAgKiB3aGVuIFJlZGlzIGlzbid0IGNvbmZpZ3VyZWQg4oaSIHNpbmdsZS1wcm9jZXNzIHNlbWFudGljcyk7IHBhc3MgYG51bGxgIHRvXG4gICAqIGRpc2FibGUgZXhwbGljaXRseS5cbiAgICovXG4gIGludmFsaWRhdGlvbkJ1cz86IENhY2hlSW52YWxpZGF0aW9uQnVzIHwgbnVsbDtcbn1cblxuLyoqIE9uZSBpbnZhbGlkYXRpb24gYnJvYWRjYXN0IHRvIGV2ZXJ5IHJlcGxpY2EuICovXG5leHBvcnQgaW50ZXJmYWNlIENhY2hlSW52YWxpZGF0aW9uTWVzc2FnZSB7XG4gIC8qKiBJZCBvZiB0aGUgQ2FjaGVTZXJ2aWNlIGluc3RhbmNlIHRoYXQgaW52YWxpZGF0ZWQgKGl0IGlnbm9yZXMgaXRzIG93biBlY2hvKS4gKi9cbiAgb3JpZ2luOiBzdHJpbmc7XG4gIC8qKiBUaGUgY2FjaGUgbmFtZXNwYWNlIChgQ2FjaGVDb25maWcucHJlZml4YCkgdGhlIGludmFsaWRhdGlvbiBhcHBsaWVzIHRvLiAqL1xuICBwcmVmaXg6IHN0cmluZztcbiAgb3A6ICdkZWwnIHwgJ3BhdHRlcm4nIHwgJ2NsZWFyJztcbiAgLyoqIFVuLXByZWZpeGVkIGtleSAoYGRlbGApIG9yIGdsb2IgcGF0dGVybiAoYHBhdHRlcm5gKS4gKi9cbiAga2V5Pzogc3RyaW5nO1xufVxuXG4vKiogVHJhbnNwb3J0IHRoYXQgZmFucyBjYWNoZSBpbnZhbGlkYXRpb25zIG91dCB0byBldmVyeSByZXBsaWNhLiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYWNoZUludmFsaWRhdGlvbkJ1cyB7XG4gIC8qKiBGaXJlLWFuZC1mb3JnZXQgYnJvYWRjYXN0LiBOZXZlciB0aHJvd3MuICovXG4gIHB1Ymxpc2gobXNnOiBDYWNoZUludmFsaWRhdGlvbk1lc3NhZ2UpOiB2b2lkO1xuICAvKipcbiAgICogUmVnaXN0ZXIgaGFuZGxlcnMuIGBvbk1lc3NhZ2VgIHJlY2VpdmVzIGV2ZXJ5IGJyb2FkY2FzdCAoaW5jbHVkaW5nIHRoaXNcbiAgICogcHJvY2VzcydzIG93bik7IGBvblJlc3luY2AgZmlyZXMgd2hlbmV2ZXIgdGhlIHN1YnNjcmlwdGlvbiBpcyAocmUpZXN0YWJsaXNoZWQsXG4gICAqIGkuZS4gd2hlbmV2ZXIgaW52YWxpZGF0aW9ucyBtYXkgaGF2ZSBiZWVuIG1pc3NlZC5cbiAgICovXG4gIHN1YnNjcmliZShvbk1lc3NhZ2U6IChtc2c6IENhY2hlSW52YWxpZGF0aW9uTWVzc2FnZSkgPT4gdm9pZCwgb25SZXN5bmM6ICgpID0+IHZvaWQpOiB2b2lkO1xufVxuXG4vKiogTWluaW1hbCBpb3JlZGlzIHB1Yi9zdWIgc3VyZmFjZSB0aGUgZW52IGJ1cyBuZWVkcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVkaXNJbnZhbGlkYXRpb25DbGllbnQge1xuICBwdWJsaXNoKGNoYW5uZWw6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nKTogUHJvbWlzZTxudW1iZXI+O1xuICBzdWJzY3JpYmUoLi4uY2hhbm5lbHM6IHN0cmluZ1tdKTogUHJvbWlzZTx1bmtub3duPjtcbiAgb24oZXZlbnQ6IHN0cmluZywgY2I6ICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZCk6IHVua25vd247XG4gIGR1cGxpY2F0ZSgpOiBSZWRpc0ludmFsaWRhdGlvbkNsaWVudDtcbiAgc3RhdHVzPzogc3RyaW5nO1xufVxuXG5jb25zdCBDQUNIRV9JTlZBTElEQVRJT05fQ0hBTk5FTCA9ICdjYWNoZTppbnZhbGlkYXRlJztcblxuLyoqXG4gKiBSZWRpcyBwdWIvc3ViIGludmFsaWRhdGlvbiBidXMuIFBVQkxJU0ggb24gdGhlIGdpdmVuIGNsaWVudDsgU1VCU0NSSUJFIG9uIGFcbiAqIGBkdXBsaWNhdGUoKWAgKGEgc3Vic2NyaWJlZCBpb3JlZGlzIGNvbm5lY3Rpb24gY2FuJ3QgcnVuIG90aGVyIGNvbW1hbmRzKS5cbiAqXG4gKiBUaGUgU1VCU0NSSUJFIGlzIGlzc3VlZCBvbiBldmVyeSBgcmVhZHlgIChpbml0aWFsIGNvbm5lY3QgQU5EIGVhY2ggcmVjb25uZWN0KVxuICogcmF0aGVyIHRoYW4gb25jZSBhdCBjb25zdHJ1Y3Rpb246IHRoZSBlbnYgY2xpZW50IHJ1bnMgd2l0aG91dCBhbiBvZmZsaW5lXG4gKiBxdWV1ZSwgc28gYSBzdWJzY3JpYmUgaXNzdWVkIGJlZm9yZSB0aGUgY29ubmVjdGlvbiBpcyB1cCBpcyByZWplY3RlZCBhbmQgd291bGRcbiAqIG5ldmVyIGJlIHJldHJpZWQuIEVhY2ggYHJlYWR5YCBhbHNvIHRyaWdnZXJzIGBvblJlc3luY2Agc28gZXZlcnkgY2FjaGUgZmx1c2hlc1xuICogd2hhdGV2ZXIgaXQgbWF5IGhhdmUgbWlzc2VkIHdoaWxlIGRpc2Nvbm5lY3RlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJlZGlzQ2FjaGVJbnZhbGlkYXRpb25CdXMocHVibGlzaGVyOiBSZWRpc0ludmFsaWRhdGlvbkNsaWVudCk6IENhY2hlSW52YWxpZGF0aW9uQnVzIHtcbiAgY29uc3Qgc3Vic2NyaWJlciA9IHB1Ymxpc2hlci5kdXBsaWNhdGUoKTtcbiAgY29uc3QgbWVzc2FnZUhhbmRsZXJzOiBBcnJheTwobXNnOiBDYWNoZUludmFsaWRhdGlvbk1lc3NhZ2UpID0+IHZvaWQ+ID0gW107XG4gIGNvbnN0IHJlc3luY0hhbmRsZXJzOiBBcnJheTwoKSA9PiB2b2lkPiA9IFtdO1xuXG4gIGNvbnN0IHJlc3luYyA9ICgpOiB2b2lkID0+IHtcbiAgICBmb3IgKGNvbnN0IGggb2YgcmVzeW5jSGFuZGxlcnMpIHtcbiAgICAgIHRyeSB7IGgoKTsgfSBjYXRjaCB7IC8qIGlzb2xhdGVkICovIH1cbiAgICB9XG4gIH07XG4gIGNvbnN0IGRvU3Vic2NyaWJlID0gKCk6IHZvaWQgPT4ge1xuICAgIHZvaWQgUHJvbWlzZS5yZXNvbHZlKHN1YnNjcmliZXIuc3Vic2NyaWJlKENBQ0hFX0lOVkFMSURBVElPTl9DSEFOTkVMKSlcbiAgICAgIC50aGVuKCgpID0+IHJlc3luYygpKVxuICAgICAgLmNhdGNoKChlcnI6IHVua25vd24pID0+IHtcbiAgICAgICAgZW1pdENvdW50ZXIoJ2NhY2hlX2ludmFsaWRhdGlvbl9zdWJzY3JpYmVfZmFpbGVkX3RvdGFsJywge30pO1xuICAgICAgICBsb2dnZXIud2FybignQ2FjaGUgaW52YWxpZGF0aW9uIHN1YnNjcmliZSBmYWlsZWQ7IHdpbGwgcmV0cnkgb24gbmV4dCByZWNvbm5lY3QnLCB7XG4gICAgICAgICAgZXJyb3I6IGVycm9yTWVzc2FnZShlcnIpLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9O1xuXG4gIHN1YnNjcmliZXIub24oJ21lc3NhZ2UnLCAoY2hhbm5lbDogc3RyaW5nLCByYXc6IHN0cmluZykgPT4ge1xuICAgIGlmIChjaGFubmVsICE9PSBDQUNIRV9JTlZBTElEQVRJT05fQ0hBTk5FTCkgcmV0dXJuO1xuICAgIGxldCBtc2c6IENhY2hlSW52YWxpZGF0aW9uTWVzc2FnZTtcbiAgICB0cnkge1xuICAgICAgbXNnID0gSlNPTi5wYXJzZShyYXcpIGFzIENhY2hlSW52YWxpZGF0aW9uTWVzc2FnZTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZm9yIChjb25zdCBoIG9mIG1lc3NhZ2VIYW5kbGVycykge1xuICAgICAgdHJ5IHsgaChtc2cpOyB9IGNhdGNoIHsgLyogb25lIGNhY2hlIGNhbid0IGJyZWFrIHRoZSBvdGhlcnMgKi8gfVxuICAgIH1cbiAgfSk7XG4gIHN1YnNjcmliZXIub24oJ3JlYWR5JywgZG9TdWJzY3JpYmUpO1xuICBzdWJzY3JpYmVyLm9uKCdlcnJvcicsIChlOiB1bmtub3duKSA9PlxuICAgIGxvZ2dlci53YXJuKCdDYWNoZSBpbnZhbGlkYXRpb24gc3Vic2NyaWJlciBlcnJvcicsIHsgZXJyb3I6IGVycm9yTWVzc2FnZShlKSB9KSk7XG4gIGlmIChzdWJzY3JpYmVyLnN0YXR1cyA9PT0gJ3JlYWR5JykgZG9TdWJzY3JpYmUoKTtcblxuICByZXR1cm4ge1xuICAgIHB1Ymxpc2gobXNnKSB7XG4gICAgICB2b2lkIFByb21pc2UucmVzb2x2ZSgpXG4gICAgICAgIC50aGVuKCgpID0+IHB1Ymxpc2hlci5wdWJsaXNoKENBQ0hFX0lOVkFMSURBVElPTl9DSEFOTkVMLCBKU09OLnN0cmluZ2lmeShtc2cpKSlcbiAgICAgICAgLmNhdGNoKChlcnI6IHVua25vd24pID0+IHtcbiAgICAgICAgICBlbWl0Q291bnRlcignY2FjaGVfaW52YWxpZGF0aW9uX3B1Ymxpc2hfZmFpbGVkX3RvdGFsJywgeyBwcmVmaXg6IG1zZy5wcmVmaXggfSk7XG4gICAgICAgICAgbG9nZ2VyLndhcm4oJ0NhY2hlIGludmFsaWRhdGlvbiBwdWJsaXNoIGZhaWxlZCAob3RoZXIgcmVwbGljYXMga2VlcCB0aGUgZW50cnkgdW50aWwgVFRMKScsIHtcbiAgICAgICAgICAgIHByZWZpeDogbXNnLnByZWZpeCwgb3A6IG1zZy5vcCwgZXJyb3I6IGVycm9yTWVzc2FnZShlcnIpLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9LFxuICAgIHN1YnNjcmliZShvbk1lc3NhZ2UsIG9uUmVzeW5jKSB7XG4gICAgICBtZXNzYWdlSGFuZGxlcnMucHVzaChvbk1lc3NhZ2UpO1xuICAgICAgcmVzeW5jSGFuZGxlcnMucHVzaChvblJlc3luYyk7XG4gICAgfSxcbiAgfTtcbn1cblxuLy8gdW5kZWZpbmVkID0gbm90IHlldCBhdHRlbXB0ZWQ7IG51bGwgPSBhdHRlbXB0ZWQsIFJlZGlzIG5vdCBjb25maWd1cmVkLlxubGV0IGVudkludmFsaWRhdGlvbkJ1czogQ2FjaGVJbnZhbGlkYXRpb25CdXMgfCBudWxsIHwgdW5kZWZpbmVkO1xuXG4vKiogUHJvY2Vzcy13aWRlIGludmFsaWRhdGlvbiBidXMgZnJvbSB0aGUgYW1iaWVudCBSZWRpcyBlbnYgKG51bGwgd2l0aG91dCBSZWRpcykuICovXG5mdW5jdGlvbiBnZXRFbnZDYWNoZUludmFsaWRhdGlvbkJ1cygpOiBDYWNoZUludmFsaWRhdGlvbkJ1cyB8IG51bGwge1xuICBpZiAoZW52SW52YWxpZGF0aW9uQnVzID09PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBjbGllbnQgPSBjcmVhdGVFbnZSZWRpc0NsaWVudDxSZWRpc0ludmFsaWRhdGlvbkNsaWVudD4oJ2NhY2hlLWludmFsaWRhdGlvbicpO1xuICAgIGVudkludmFsaWRhdGlvbkJ1cyA9IGNsaWVudCA/IGNyZWF0ZVJlZGlzQ2FjaGVJbnZhbGlkYXRpb25CdXMoY2xpZW50KSA6IG51bGw7XG4gIH1cbiAgcmV0dXJuIGVudkludmFsaWRhdGlvbkJ1cztcbn1cblxuLyoqXG4gKiBDYWNoZSBzZXJ2aWNlIHdpdGggZ2V0L3NldC9kZWwgb3BlcmF0aW9ucyBhbmQgYXV0b21hdGljIFRUTCBleHBpcnkuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGNhY2hlID0gbmV3IENhY2hlU2VydmljZSh7IHByZWZpeDogJ3BsdWdpbjonLCBkZWZhdWx0VHRsU2Vjb25kczogMzAwIH0pO1xuICpcbiAqIC8vIFNldCB3aXRoIGRlZmF1bHQgVFRMXG4gKiBhd2FpdCBjYWNoZS5zZXQoJ29yZzEyMzpsaXN0JywgcGx1Z2lucyk7XG4gKlxuICogLy8gR2V0IChyZXR1cm5zIG51bGwgb24gbWlzcylcbiAqIGNvbnN0IGNhY2hlZCA9IGF3YWl0IGNhY2hlLmdldDxQbHVnaW5bXT4oJ29yZzEyMzpsaXN0Jyk7XG4gKlxuICogLy8gSW52YWxpZGF0ZVxuICogYXdhaXQgY2FjaGUuZGVsKCdvcmcxMjM6bGlzdCcpO1xuICpcbiAqIC8vIEludmFsaWRhdGUgYnkgcGF0dGVyblxuICogYXdhaXQgY2FjaGUuaW52YWxpZGF0ZVBhdHRlcm4oJ29yZzEyMzoqJyk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIENhY2hlU2VydmljZSB7XG4gIHByaXZhdGUgbWVtb3J5ID0gbmV3IE1hcDxzdHJpbmcsIENhY2hlRW50cnk8dW5rbm93bj4+KCk7XG4gIC8qKlxuICAgKiBJbi1mbGlnaHQgYGdldE9yU2V0YCBmYWN0b3J5IHByb21pc2VzLCBrZXllZCBieSBmdWxsIGNhY2hlIGtleS4gQ29hbGVzY2VzXG4gICAqIGNvbmN1cnJlbnQgY29sZCBjYWxsZXJzIG9udG8gYSBzaW5nbGUgYGZhY3RvcnkoKWAgaW52b2NhdGlvbiAoc2luZ2xlLWZsaWdodFxuICAgKiAvIHN0YW1wZWRlIHByb3RlY3Rpb24pOyBlbnRyaWVzIGFyZSBjbGVhcmVkIG9uY2UgdGhlIHByb21pc2Ugc2V0dGxlcy5cbiAgICovXG4gIHByaXZhdGUgaW5mbGlnaHQgPSBuZXcgTWFwPHN0cmluZywgUHJvbWlzZTx1bmtub3duPj4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBwcmVmaXg6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0VHRsTXM6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBtYXhFbnRyaWVzOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgYnVzOiBDYWNoZUludmFsaWRhdGlvbkJ1cyB8IG51bGw7XG4gIHByaXZhdGUgcmVhZG9ubHkgaW5zdGFuY2VJZCA9IHJhbmRvbVVVSUQoKTtcbiAgLyoqXG4gICAqIEJ1bXBlZCBvbiBFVkVSWSBpbnZhbGlkYXRpb24gKGxvY2FsIG9yIHJlbW90ZSkuIGBnZXRPclNldGAgb25seSBjYWNoZXMgYVxuICAgKiBmYWN0b3J5IHJlc3VsdCBpZiBubyBpbnZhbGlkYXRpb24gaGFwcGVuZWQgd2hpbGUgdGhlIGZhY3RvcnkgcmFuIOKAlCBvdGhlcndpc2VcbiAgICogaXQgY291bGQgcmUtY2FjaGUgYSB2YWx1ZSByZWFkIGJlZm9yZSB0aGUgd3JpdGUgdGhhdCBpbnZhbGlkYXRlZCBpdC5cbiAgICovXG4gIHByaXZhdGUgZ2VuZXJhdGlvbiA9IDA7XG5cbiAgLyoqIENhY2hlIG1ldHJpY3Mg4oCUIHRyYWNrcyBoaXRzLCBtaXNzZXMsIGFuZCBpbnZhbGlkYXRpb25zLiAqL1xuICByZWFkb25seSBtZXRyaWNzID0geyBoaXRzOiAwLCBtaXNzZXM6IDAsIHNldHM6IDAsIGludmFsaWRhdGlvbnM6IDAgfTtcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IENhY2hlQ29uZmlnKSB7XG4gICAgdGhpcy5wcmVmaXggPSBjb25maWcucHJlZml4O1xuICAgIHRoaXMuZGVmYXVsdFR0bE1zID0gY29uZmlnLmRlZmF1bHRUdGxTZWNvbmRzICogMTAwMDtcbiAgICB0aGlzLm1heEVudHJpZXMgPSBjb25maWcubWF4RW50cmllcyA/PyAxMDAwO1xuICAgIHRoaXMuYnVzID0gY29uZmlnLmludmFsaWRhdGlvbkJ1cyA9PT0gdW5kZWZpbmVkID8gZ2V0RW52Q2FjaGVJbnZhbGlkYXRpb25CdXMoKSA6IGNvbmZpZy5pbnZhbGlkYXRpb25CdXM7XG4gICAgdGhpcy5idXM/LnN1YnNjcmliZShcbiAgICAgIChtc2cpID0+IHtcbiAgICAgICAgaWYgKG1zZy5vcmlnaW4gPT09IHRoaXMuaW5zdGFuY2VJZCB8fCBtc2cucHJlZml4ICE9PSB0aGlzLnByZWZpeCkgcmV0dXJuO1xuICAgICAgICB0aGlzLmFwcGx5TG9jYWxJbnZhbGlkYXRpb24obXNnLm9wLCBtc2cua2V5KTtcbiAgICAgIH0sXG4gICAgICAoKSA9PiB0aGlzLmFwcGx5TG9jYWxJbnZhbGlkYXRpb24oJ2NsZWFyJyksXG4gICAgKTtcbiAgfVxuXG4gIC8qKiBCcm9hZGNhc3QgYW4gaW52YWxpZGF0aW9uIHRvIHRoZSBvdGhlciByZXBsaWNhcy4gKi9cbiAgcHJpdmF0ZSBicm9hZGNhc3Qob3A6IENhY2hlSW52YWxpZGF0aW9uTWVzc2FnZVsnb3AnXSwga2V5Pzogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5idXM/LnB1Ymxpc2goeyBvcmlnaW46IHRoaXMuaW5zdGFuY2VJZCwgcHJlZml4OiB0aGlzLnByZWZpeCwgb3AsIC4uLihrZXkgIT09IHVuZGVmaW5lZCAmJiB7IGtleSB9KSB9KTtcbiAgfVxuXG4gIC8qKiBBcHBseSBhbiBpbnZhbGlkYXRpb24gdG8gVEhJUyBwcm9jZXNzJ3MgaW4tbWVtb3J5IGVudHJpZXMuIFJldHVybnMgdGhlIGNvdW50IHJlbW92ZWQuICovXG4gIHByaXZhdGUgYXBwbHlMb2NhbEludmFsaWRhdGlvbihvcDogQ2FjaGVJbnZhbGlkYXRpb25NZXNzYWdlWydvcCddLCBrZXk/OiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHRoaXMuZ2VuZXJhdGlvbisrO1xuICAgIGlmIChvcCA9PT0gJ2NsZWFyJykge1xuICAgICAgY29uc3QgbiA9IHRoaXMubWVtb3J5LnNpemU7XG4gICAgICB0aGlzLm1lbW9yeS5jbGVhcigpO1xuICAgICAgcmV0dXJuIG47XG4gICAgfVxuICAgIGlmIChvcCA9PT0gJ2RlbCcpIHtcbiAgICAgIHJldHVybiB0aGlzLm1lbW9yeS5kZWxldGUodGhpcy5mdWxsS2V5KGtleSA/PyAnJykpID8gMSA6IDA7XG4gICAgfVxuICAgIC8vIEdsb2IgcGF0dGVybi4gRXNjYXBlIHJlZ2V4IG1ldGFjaGFyYWN0ZXJzIGZpcnN0IHNvIGEgbGl0ZXJhbCBgLmAvYChgL2BbYFxuICAgIC8vIGluIGEga2V5IHByZWZpeCAoZS5nLiBgb3JnOnYxLjI6KmApIGNhbid0IG92ZXItbWF0Y2ggb3IgdGhyb3cgKGEgdGhyb3dcbiAgICAvLyBoZXJlIHdvdWxkIGxlYXZlIGVudHJpZXMgc3RhbGUpOyBvbmx5IGAqYCBpcyB0cmVhdGVkIGFzIGEgd2lsZGNhcmQuXG4gICAgY29uc3QgZnAgPSB0aGlzLmZ1bGxLZXkoa2V5ID8/ICcnKTtcbiAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoJ14nICsgZnAucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xcXVxcXFxdL2csICdcXFxcJCYnKS5yZXBsYWNlKC9cXFxcXFwqL2csICcuKicpICsgJyQnKTtcbiAgICBsZXQgZGVsZXRlZCA9IDA7XG4gICAgZm9yIChjb25zdCBrIG9mIHRoaXMubWVtb3J5LmtleXMoKSkge1xuICAgICAgaWYgKHJlZ2V4LnRlc3QoaykpIHtcbiAgICAgICAgdGhpcy5tZW1vcnkuZGVsZXRlKGspO1xuICAgICAgICBkZWxldGVkKys7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBkZWxldGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBmdWxsS2V5KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5wcmVmaXh9JHtrZXl9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBjYWNoZWQgdmFsdWUuIFJldHVybnMgbnVsbCBvbiBtaXNzIG9yIGVycm9yLlxuICAgKlxuICAgKiBUaGUgcmV0dXJuZWQgdmFsdWUgaXMgYW4gSU5ERVBFTkRFTlQgZGVlcCBjb3B5IOKAlCBtdXRhdGluZyBpdCBuZXZlciBhZmZlY3RzXG4gICAqIHRoZSBjYWNoZWQgZW50cnkuXG4gICAqL1xuICBhc3luYyBnZXQ8VD4oa2V5OiBzdHJpbmcpOiBQcm9taXNlPFQgfCBudWxsPiB7XG4gICAgY29uc3QgZmsgPSB0aGlzLmZ1bGxLZXkoa2V5KTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBlbnRyeSA9IHRoaXMubWVtb3J5LmdldChmayk7XG4gICAgICBpZiAoIWVudHJ5KSB7IHRoaXMubWV0cmljcy5taXNzZXMrKzsgcmV0dXJuIG51bGw7IH1cbiAgICAgIGlmIChEYXRlLm5vdygpID4gZW50cnkuZXhwaXJlc0F0KSB7XG4gICAgICAgIHRoaXMubWVtb3J5LmRlbGV0ZShmayk7XG4gICAgICAgIHRoaXMubWV0cmljcy5taXNzZXMrKztcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICAvLyBMUlUgdG91Y2g6IGRlbGV0ZSArIHJlLWluc2VydCBtb3ZlcyB0aGlzIGtleSB0byB0aGUgbmV3ZXN0IHBvc2l0aW9uXG4gICAgICAvLyAoTWFwIHByZXNlcnZlcyBpbnNlcnRpb24gb3JkZXIpLCBzbyBgc2V0YCdzIG9sZGVzdC1maXJzdCBldmljdGlvbiBpcyBhXG4gICAgICAvLyB0cnVlIGxlYXN0LXJlY2VudGx5LVVTRUQgZXZpY3Rpb24gcmF0aGVyIHRoYW4gZmlyc3QtaW5zZXJ0ZWQgKEZJRk8pLlxuICAgICAgdGhpcy5tZW1vcnkuZGVsZXRlKGZrKTtcbiAgICAgIHRoaXMubWVtb3J5LnNldChmaywgZW50cnkpO1xuICAgICAgdGhpcy5tZXRyaWNzLmhpdHMrKztcbiAgICAgIC8vIENsb25lIHNvIGEgY2FsbGVyIG11dGF0aW5nIHRoZSByZXN1bHQgY2FuJ3QgY29ycnVwdCB0aGUgc2hhcmVkIGVudHJ5LlxuICAgICAgcmV0dXJuIGNsb25lVmFsdWUoZW50cnkudmFsdWUpIGFzIFQ7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLm1ldHJpY3MubWlzc2VzKys7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0IGEgY2FjaGVkIHZhbHVlIHdpdGggb3B0aW9uYWwgVFRMIG92ZXJyaWRlLlxuICAgKlxuICAgKiBAcGFyYW0ga2V5IC0gQ2FjaGUga2V5IChwcmVmaXggaXMgYWRkZWQgYXV0b21hdGljYWxseSlcbiAgICogQHBhcmFtIHZhbHVlIC0gVmFsdWUgdG8gY2FjaGVcbiAgICogQHBhcmFtIHR0bFNlY29uZHMgLSBUVEwgb3ZlcnJpZGUgKHVzZXMgZGVmYXVsdCBpZiBub3QgcHJvdmlkZWQpXG4gICAqL1xuICBhc3luYyBzZXQ8VD4oa2V5OiBzdHJpbmcsIHZhbHVlOiBULCB0dGxTZWNvbmRzPzogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZmsgPSB0aGlzLmZ1bGxLZXkoa2V5KTtcbiAgICBjb25zdCB0dGwgPSB0dGxTZWNvbmRzID8/IHRoaXMuZGVmYXVsdFR0bE1zIC8gMTAwMDtcblxuICAgIHRyeSB7XG4gICAgICB0aGlzLm1ldHJpY3Muc2V0cysrO1xuICAgICAgLy8gQSB3cml0ZSBjb3VudHMgYXMgYSB1c2UsIHNvIGRyb3AgYW55IGV4aXN0aW5nIGVudHJ5IGZpcnN0XG4gICAgICAvLyBhbmQgcmUtaW5zZXJ0IGJlbG93IGFzIHRoZSBuZXdlc3QgKE1hcCBwcmVzZXJ2ZXMgaW5zZXJ0aW9uIG9yZGVyKS4gVGhpc1xuICAgICAgLy8ga2VlcHMgdGhlIE1hcCBvcmRlcmVkIG9sZGVzdC1VU0VEIOKGkiBuZXdlc3QtVVNFRCBzbyB0aGUgZXZpY3Rpb24gYmVsb3cgaXNcbiAgICAgIC8vIHRydWUgTFJVLCBhbmQgYXZvaWRzIGV2aWN0aW5nIGEgdmljdGltIHdoZW4gbWVyZWx5IHVwZGF0aW5nIGEga2V5LlxuICAgICAgdGhpcy5tZW1vcnkuZGVsZXRlKGZrKTtcbiAgICAgIGlmICh0aGlzLm1lbW9yeS5zaXplID49IHRoaXMubWF4RW50cmllcykge1xuICAgICAgICBjb25zdCBmaXJzdEtleSA9IHRoaXMubWVtb3J5LmtleXMoKS5uZXh0KCkudmFsdWU7XG4gICAgICAgIGlmIChmaXJzdEtleSkgdGhpcy5tZW1vcnkuZGVsZXRlKGZpcnN0S2V5KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5tZW1vcnkuc2V0KGZrLCB7XG4gICAgICAgIHZhbHVlLFxuICAgICAgICBleHBpcmVzQXQ6IERhdGUubm93KCkgKyB0dGwgKiAxMDAwLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBDYWNoZSBzZXQgZmFpbHVyZSBpcyBub24tZmF0YWxcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlIGEgY2FjaGVkIHZhbHVlLlxuICAgKi9cbiAgYXN5bmMgZGVsKGtleTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuYXBwbHlMb2NhbEludmFsaWRhdGlvbignZGVsJywga2V5KTtcbiAgICAgIHRoaXMuYnJvYWRjYXN0KCdkZWwnLCBrZXkpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gQ2FjaGUgZGVsZXRlIGZhaWx1cmUgaXMgbm9uLWZhdGFsXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEludmFsaWRhdGUgYWxsIGtleXMgbWF0Y2hpbmcgYSBwYXR0ZXJuIChlLmcuLCAnb3JnMTIzOionKS5cbiAgICogT25seSBgKmAgaXMgYSB3aWxkY2FyZC5cbiAgICovXG4gIGFzeW5jIGludmFsaWRhdGVQYXR0ZXJuKHBhdHRlcm46IHN0cmluZyk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIEFwcGx5IGxvY2FsbHksIHRoZW4gZmFuIG91dCB0byB0aGUgb3RoZXIgcmVwbGljYXMuXG4gICAgICBjb25zdCBkZWxldGVkID0gdGhpcy5hcHBseUxvY2FsSW52YWxpZGF0aW9uKCdwYXR0ZXJuJywgcGF0dGVybik7XG4gICAgICB0aGlzLmJyb2FkY2FzdCgncGF0dGVybicsIHBhdHRlcm4pO1xuICAgICAgdGhpcy5tZXRyaWNzLmludmFsaWRhdGlvbnMgKz0gZGVsZXRlZDtcbiAgICAgIHJldHVybiBkZWxldGVkO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBvciBjb21wdXRlOiByZXR1cm5zIGNhY2hlZCB2YWx1ZSBpZiBhdmFpbGFibGUsIG90aGVyd2lzZSBjYWxscyB0aGVcbiAgICogZmFjdG9yeSBmdW5jdGlvbiwgY2FjaGVzIHRoZSByZXN1bHQsIGFuZCByZXR1cm5zIGl0LlxuICAgKlxuICAgKiBTaW5nbGUtZmxpZ2h0IC8gc3RhbXBlZGUgcHJvdGVjdGlvbjogd2hlbiBOIGNhbGxlcnMgbWlzcyBjb25jdXJyZW50bHkgZm9yXG4gICAqIHRoZSBzYW1lIGtleSwgb25seSBPTkUgYGZhY3RvcnkoKWAgcnVucyDigJQgdGhlIHJlc3QgYXdhaXQgaXRzIHNoYXJlZCBwcm9taXNlLlxuICAgKiBUaGUgaW4tZmxpZ2h0IGVudHJ5IGlzIGNsZWFyZWQgb25jZSBpdCBzZXR0bGVzIChzdWNjZXNzIG9yIGZhaWx1cmUpLCBzbyBhXG4gICAqIGZhaWxlZCBmYWN0b3J5IGRvZXNuJ3QgcG9pc29uIGxhdGVyIGNhbGxzLlxuICAgKlxuICAgKiBAcGFyYW0ga2V5IC0gQ2FjaGUga2V5XG4gICAqIEBwYXJhbSBmYWN0b3J5IC0gQXN5bmMgZnVuY3Rpb24gdG8gY29tcHV0ZSB0aGUgdmFsdWUgb24gY2FjaGUgbWlzc1xuICAgKiBAcGFyYW0gdHRsU2Vjb25kcyAtIE9wdGlvbmFsIFRUTCBvdmVycmlkZVxuICAgKiBAcmV0dXJucyBUaGUgY2FjaGVkIG9yIGNvbXB1dGVkIHZhbHVlXG4gICAqL1xuICBhc3luYyBnZXRPclNldDxUPihrZXk6IHN0cmluZywgZmFjdG9yeTogKCkgPT4gUHJvbWlzZTxUPiwgdHRsU2Vjb25kcz86IG51bWJlcik6IFByb21pc2U8VD4ge1xuICAgIGNvbnN0IGNhY2hlZCA9IGF3YWl0IHRoaXMuZ2V0PFQ+KGtleSk7XG4gICAgaWYgKGNhY2hlZCAhPT0gbnVsbCkgcmV0dXJuIGNhY2hlZDtcblxuICAgIGNvbnN0IGZrID0gdGhpcy5mdWxsS2V5KGtleSk7XG4gICAgLy8gQ29hbGVzY2UgY29uY3VycmVudCBjb2xkIGNhbGxlcnMgb250byBhIHNpbmdsZSBmYWN0b3J5KCkgaW52b2NhdGlvbi4gVGhlXG4gICAgLy8gaW4tZmxpZ2h0IHByb21pc2UgcmVzb2x2ZXMgdG8gdGhlIFJBVyB2YWx1ZTsgZWFjaCBhd2FpdGVyICh0aGUgcHJpbWFyeVxuICAgIC8vIGNhbGxlciBiZWxvdyBBTkQgZXZlcnkgY29hbGVzY2VkIGNhbGxlciBoZXJlKSBjbG9uZXMgaXQgSU5ERVBFTkRFTlRMWS5cbiAgICAvLyBDbG9uaW5nIGluc2lkZSB0aGUgZmxpZ2h0IGluc3RlYWQgd291bGQgaGFuZCBvbmUgc2hhcmVkIGNsb25lIHRvIGFsbCBOXG4gICAgLy8gY29hbGVzY2VkIGNhbGxlcnMsIHNvIG9uZSBjYWxsZXIgbXV0YXRpbmcgaXRzIFwiaW5kZXBlbmRlbnRcIiByZXN1bHQgd291bGRcbiAgICAvLyBjb3JydXB0IHdoYXQgdGhlIG90aGVycyByZWFkIOKAlCB0aGUgZXhhY3QgZm9vdGd1biBnZXQoKSdzIGNsb25lLW9uLXJlYWRcbiAgICAvLyBwcmV2ZW50cy5cbiAgICBjb25zdCBleGlzdGluZyA9IHRoaXMuaW5mbGlnaHQuZ2V0KGZrKSBhcyBQcm9taXNlPFQ+IHwgdW5kZWZpbmVkO1xuICAgIGlmIChleGlzdGluZykgcmV0dXJuIGNsb25lVmFsdWUoYXdhaXQgZXhpc3RpbmcpO1xuXG4gICAgY29uc3QgZ2VuZXJhdGlvbkF0U3RhcnQgPSB0aGlzLmdlbmVyYXRpb247XG4gICAgY29uc3QgZmxpZ2h0ID0gKGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gYXdhaXQgZmFjdG9yeSgpO1xuICAgICAgLy8gQW4gaW52YWxpZGF0aW9uIChoZXJlIG9yIG9uIGFub3RoZXIgcmVwbGljYSkgbGFuZGVkIHdoaWxlIHRoZSBmYWN0b3J5XG4gICAgICAvLyByYW46IGl0cyByZWFkIG1heSBwcmVkYXRlIHRoYXQgd3JpdGUsIHNvIGRvbid0IGNhY2hlIGl0LlxuICAgICAgaWYgKHRoaXMuZ2VuZXJhdGlvbiA9PT0gZ2VuZXJhdGlvbkF0U3RhcnQpIGF3YWl0IHRoaXMuc2V0KGtleSwgdmFsdWUsIHR0bFNlY29uZHMpO1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0pKCk7XG4gICAgdGhpcy5pbmZsaWdodC5zZXQoZmssIGZsaWdodCk7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBjbG9uZVZhbHVlKGF3YWl0IGZsaWdodCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuaW5mbGlnaHQuZGVsZXRlKGZrKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXIgYWxsIGVudHJpZXMgKHVzZWZ1bCBmb3IgdGVzdGluZykuXG4gICAqL1xuICBhc3luYyBjbGVhcigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmFwcGx5TG9jYWxJbnZhbGlkYXRpb24oJ2NsZWFyJyk7XG4gICAgdGhpcy5icm9hZGNhc3QoJ2NsZWFyJyk7XG4gIH1cblxuICAvKiogQ3VycmVudCBpbi1tZW1vcnkgY2FjaGUgc2l6ZSAoZm9yIGRpYWdub3N0aWNzKS4gKi9cbiAgZ2V0IHNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5tZW1vcnkuc2l6ZTtcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZSBhIGNhY2hlIHNlcnZpY2UgaW5zdGFuY2UuXG4gKlxuICogQHBhcmFtIHByZWZpeCAtIE5hbWVzcGFjZSBwcmVmaXggKGUuZy4sICdjb21wbGlhbmNlOicsICdwbHVnaW46JylcbiAqIEBwYXJhbSBkZWZhdWx0VHRsU2Vjb25kcyAtIERlZmF1bHQgVFRMIGluIHNlY29uZHMgKGRlZmF1bHQgMzAwID0gNSBtaW4pXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDYWNoZVNlcnZpY2UocHJlZml4OiBzdHJpbmcsIGRlZmF1bHRUdGxTZWNvbmRzID0gMzAwKTogQ2FjaGVTZXJ2aWNlIHtcbiAgcmV0dXJuIG5ldyBDYWNoZVNlcnZpY2UoeyBwcmVmaXgsIGRlZmF1bHRUdGxTZWNvbmRzIH0pO1xufVxuIl19
|