@pipeline-builder/api-core 5.2.6 → 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 +1 -1
- 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
|
@@ -114,7 +114,18 @@ export function classifyAIError(error, fallbackMessage) {
|
|
|
114
114
|
if (providerStatus === 401 || providerStatus === 403) {
|
|
115
115
|
return { status: 502, code: ErrorCode.INTERNAL_ERROR, message: 'The AI provider rejected the API key used for this request. Check the key in Settings, or the one you supplied.' };
|
|
116
116
|
}
|
|
117
|
-
|
|
117
|
+
// A 4xx that is not 401/403/429: the provider understood us and refused.
|
|
118
|
+
// The BODY never surfaces — it carries org ids, request ids and the prompt
|
|
119
|
+
// (see the leak assertions in handle-ai-error.test.ts) — but the STATUS is
|
|
120
|
+
// a bare number and is the only thing that makes this refusal diagnosable.
|
|
121
|
+
// The case that drove this: a self-hosted OpenAI-compatible server that
|
|
122
|
+
// rejects the `tools` field answers 400, and the Ask AGENT always sends
|
|
123
|
+
// tools, so the whole feature failed with a message that named nothing.
|
|
124
|
+
return {
|
|
125
|
+
status: 502,
|
|
126
|
+
code: ErrorCode.INTERNAL_ERROR,
|
|
127
|
+
message: `${fallbackMessage} — the AI provider refused the request (HTTP ${providerStatus}). Check the service log for the reason.`,
|
|
128
|
+
};
|
|
118
129
|
}
|
|
119
130
|
if (isTimeout(error)) {
|
|
120
131
|
return { status: 504, code: ErrorCode.SERVICE_UNAVAILABLE, message: 'The AI provider did not respond in time. Try again, or ask for something smaller.' };
|
|
@@ -156,4 +167,4 @@ export function handleAIError(res, error, fallbackMessage) {
|
|
|
156
167
|
})}\n\n`);
|
|
157
168
|
res.end();
|
|
158
169
|
}
|
|
159
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3NlLWhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaGVscGVycy9zc2UtaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBR3RDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUvRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQUMsR0FBYTtJQUMzQyxHQUFHLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0lBQ25ELEdBQUcsQ0FBQyxTQUFTLENBQUMsZUFBZSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzNDLEdBQUcsQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDM0MsQ0FBQztBQVFEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEdBQXFCO0lBQ3JELE1BQU0sVUFBVSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7SUFDekMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFO1FBQ25CLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCO1lBQUUsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2hELENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDO0FBQzNCLENBQUM7QUFlRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsYUFBYSxDQUFDLElBQWEsRUFBRSxHQUFhLEVBQUUsU0FBaUI7SUFDM0UsZUFBZSxDQUFDLEdBQUcs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LElBQUksQ0FBQyxTQUFTLENBQUM7UUFDaEMsSUFBSSxFQUFFLE9BQU87UUFDYixPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU87UUFDdkIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO1FBQ2pCLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTTtRQUNyQixHQUFHLENBQUMsTUFBTSxDQUFDLGlCQUFpQixLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0tBQ25HLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDVixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDWixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB0eXBlIHsgUmVxdWVzdCwgUmVzcG9uc2UgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCB7IEFwcEVycm9yIH0gZnJvbSAnLi4vZXJyb3JzL2FwcC1lcnJvcnMuanMnO1xuaW1wb3J0IHsgRXJyb3JDb2RlIH0gZnJvbSAnLi4vdHlwZXMvZXJyb3ItY29kZXMuanMnO1xuaW1wb3J0IHsgZXJyb3JNZXNzYWdlLCBzZW5kRXJyb3IgfSBmcm9tICcuLi91dGlscy9yZXNwb25zZS5qcyc7XG5cbi8qKlxuICogU2V0IHRoZSBmb3VyIHN0YW5kYXJkIFNTRSByZXNwb25zZSBoZWFkZXJzIChkb2VzIE5PVCBmbHVzaCDigJQgdGhlIGNhbGxlciBmbHVzaGVzXG4gKiBhZnRlciBhbnkgYWRkaXRpb25hbCBwZXItZW5kcG9pbnQgc2V0dXAgbGlrZSBgcmVzLnNldFRpbWVvdXRgKS4gVGhlIHNpbmdsZVxuICogc291cmNlIG9mIHRydXRoIGZvciB0aGUgYHRleHQvZXZlbnQtc3RyZWFtYCArIG5vLWNhY2hlICsga2VlcC1hbGl2ZSArXG4gKiBgWC1BY2NlbC1CdWZmZXJpbmc6IG5vYCAoZGlzYWJsZSBuZ2lueCBidWZmZXJpbmcpIGJsb2NrLlxuICovXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVTc2VIZWFkZXJzKHJlczogUmVzcG9uc2UpOiB2b2lkIHtcbiAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ3RleHQvZXZlbnQtc3RyZWFtJyk7XG4gIHJlcy5zZXRIZWFkZXIoJ0NhY2hlLUNvbnRyb2wnLCAnbm8tY2FjaGUnKTtcbiAgcmVzLnNldEhlYWRlcignQ29ubmVjdGlvbicsICdrZWVwLWFsaXZlJyk7XG4gIHJlcy5zZXRIZWFkZXIoJ1gtQWNjZWwtQnVmZmVyaW5nJywgJ25vJyk7XG59XG5cbi8qKiBUaGUgc2xpY2Ugb2YgYW4gRXhwcmVzcy9Ob2RlIHJlc3BvbnNlIG5lZWRlZCB0byBvYnNlcnZlIGEgY2xpZW50IGRpc2Nvbm5lY3QuICovXG5pbnRlcmZhY2UgQ2xvc2FibGVSZXNwb25zZSB7XG4gIG9uKGV2ZW50OiAnY2xvc2UnLCBsaXN0ZW5lcjogKCkgPT4gdm9pZCk6IHVua25vd247XG4gIHJlYWRvbmx5IHdyaXRhYmxlRmluaXNoZWQ6IGJvb2xlYW47XG59XG5cbi8qKlxuICogQW4gQWJvcnRTaWduYWwgdGhhdCBmaXJlcyB3aGVuIHRoZSBjbGllbnQgZGlzY29ubmVjdHMgYmVmb3JlIHRoZSByZXNwb25zZVxuICogZmluaXNoZWQg4oCUIGNhbmNlbHMgYSBwcm92aWRlciBjYWxsIChhdm9pZHMgd2FzdGVkIHNwZW5kKSBhbmQgdGVsbHMgdGhlIHJvdXRlXG4gKiB0byBzdG9wIHdyaXRpbmcuXG4gKlxuICogRGlzY29ubmVjdCBpcyBkZXRlY3RlZCBvbiB0aGUgUkVTUE9OU0U6IGByZXNgIGVtaXRzICdjbG9zZScgd2hlbiB0aGVcbiAqIHVuZGVybHlpbmcgY29ubmVjdGlvbiBnb2VzIGF3YXksIGFuZCBgd3JpdGFibGVGaW5pc2hlZGAgdGVsbHMgYW4gZWFybHkgY2xvc2VcbiAqIChjbGllbnQgZ29uZSkgZnJvbSB0aGUgbm9ybWFsIGNsb3NlIGFmdGVyIGByZXMuZW5kKClgLiBUaGUgcmVxdWVzdCdzIG93blxuICogJ2Nsb3NlJyBpcyBub3QgYSBkaXNjb25uZWN0IHNpZ25hbCDigJQgb24gY3VycmVudCBOb2RlIGl0IGZpcmVzIG9uY2UgdGhlIHJlcXVlc3RcbiAqIEJPRFkgaGFzIGJlZW4gY29uc3VtZWQgKGV4cHJlc3MuanNvbigpIGRvZXMgdGhhdCBiZWZvcmUgdGhlIGhhbmRsZXIgcnVucyksIHNvXG4gKiBhIGRpc2Nvbm5lY3Qgd291bGQgbmV2ZXIgYmUgb2JzZXJ2ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGllbnRBYm9ydFNpZ25hbChyZXM6IENsb3NhYmxlUmVzcG9uc2UpOiBBYm9ydFNpZ25hbCB7XG4gIGNvbnN0IGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gIHJlcy5vbignY2xvc2UnLCAoKSA9PiB7XG4gICAgaWYgKCFyZXMud3JpdGFibGVGaW5pc2hlZCkgY29udHJvbGxlci5hYm9ydCgpO1xuICB9KTtcbiAgcmV0dXJuIGNvbnRyb2xsZXIuc2lnbmFsO1xufVxuXG4vKiogQW4gb3BlbiBTU0UgcmVzcG9uc2UuICovXG5leHBvcnQgaW50ZXJmYWNlIFNzZVN0cmVhbSB7XG4gIC8qKiBBYm9ydGVkIHdoZW4gdGhlIGNsaWVudCBkaXNjb25uZWN0cyBiZWZvcmUgdGhlIHN0cmVhbSBmaW5pc2hlZC4gKi9cbiAgcmVhZG9ubHkgc2lnbmFsOiBBYm9ydFNpZ25hbDtcbiAgLyoqIFRydWUgb25jZSB0aGUgY2xpZW50IGhhcyBkaXNjb25uZWN0ZWQuICovXG4gIGFib3J0ZWQoKTogYm9vbGVhbjtcbiAgLyoqIFdyaXRlIG9uZSBgZGF0YTpgIGZyYW1lIGNhcnJ5aW5nIGBldmVudGAgYXMgSlNPTi4gQSBuby1vcCBhZnRlciBhIGRpc2Nvbm5lY3QuICovXG4gIHNlbmQoZXZlbnQ6IHVua25vd24pOiB2b2lkO1xuICAvKiogV3JpdGUgdGhlIHRlcm1pbmFsIGBkYXRhOiBbRE9ORV1gIGZyYW1lIChwcmVjZWRlZCBieSBgZXZlbnRgLCB3aGVuIGdpdmVuKS5cbiAgICogIEEgbm8tb3AgYWZ0ZXIgYSBkaXNjb25uZWN0LiBUaGUgY2FsbGVyIHN0aWxsIGVuZHMgdGhlIHJlc3BvbnNlLiAqL1xuICBkb25lKGV2ZW50PzogdW5rbm93bik6IHZvaWQ7XG59XG5cbi8qKlxuICogU2V0IFNTRSByZXNwb25zZSBoZWFkZXJzLCBmbHVzaCwgYW5kIHJldHVybiB0aGUgc3RyZWFtJ3Mgd3JpdGVyIHBsdXMgaXRzXG4gKiBjbGllbnQtZGlzY29ubmVjdCBzaWduYWwgKHNlZSB7QGxpbmsgY2xpZW50QWJvcnRTaWduYWx9KS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluaXRTU0VTdHJlYW0oX3JlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSwgdGltZW91dE1zOiBudW1iZXIpOiBTc2VTdHJlYW0ge1xuICB3cml0ZVNzZUhlYWRlcnMocmVzKTtcbiAgcmVzLnNldFRpbWVvdXQodGltZW91dE1zKTtcbiAgcmVzLmZsdXNoSGVhZGVycygpO1xuICBjb25zdCBzaWduYWwgPSBjbGllbnRBYm9ydFNpZ25hbChyZXMpO1xuICBjb25zdCBzZW5kID0gKGV2ZW50OiB1bmtub3duKTogdm9pZCA9PiB7XG4gICAgaWYgKHNpZ25hbC5hYm9ydGVkKSByZXR1cm47XG4gICAgcmVzLndyaXRlKGBkYXRhOiAke0pTT04uc3RyaW5naWZ5KGV2ZW50KX1cXG5cXG5gKTtcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBzaWduYWwsXG4gICAgYWJvcnRlZDogKCkgPT4gc2lnbmFsLmFib3J0ZWQsXG4gICAgc2VuZCxcbiAgICBkb25lOiAoZXZlbnQ/OiB1bmtub3duKTogdm9pZCA9PiB7XG4gICAgICBpZiAoc2lnbmFsLmFib3J0ZWQpIHJldHVybjtcbiAgICAgIGlmIChldmVudCAhPT0gdW5kZWZpbmVkKSBzZW5kKGV2ZW50KTtcbiAgICAgIHJlcy53cml0ZSgnZGF0YTogW0RPTkVdXFxuXFxuJyk7XG4gICAgfSxcbiAgfTtcbn1cblxuLyoqIEhvdyBhbiBBSSBmYWlsdXJlIGlzIGFuc3dlcmVkOiBhbiBIVFRQIHN0YXR1cywgYSBjb2RlLCBhbmQgYSBtZXNzYWdlIFdFIHdyb3RlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBBSUVycm9yUmVzcG9uc2Uge1xuICBzdGF0dXM6IG51bWJlcjtcbiAgY29kZTogRXJyb3JDb2RlO1xuICAvKiogU2FmZSB0byBzaG93OiBuZXZlciByYXcgcHJvdmlkZXIgcmVzcG9uc2UgdGV4dC4gKi9cbiAgbWVzc2FnZTogc3RyaW5nO1xuICAvKiogU2Vjb25kcywgZnJvbSB0aGUgcHJvdmlkZXIncyBvd24gYFJldHJ5LUFmdGVyYCB3aGVuIGl0IHNlbnQgb25lLiAqL1xuICByZXRyeUFmdGVyU2Vjb25kcz86IG51bWJlcjtcbn1cblxuLyoqIFRoZSBmaWVsZHMgb2YgYW4gYWktc2RrIGBBUElDYWxsRXJyb3JgIHRoaXMgY2xhc3NpZmllciByZWFkcyAoZHVjay10eXBlZDogYXBpLWNvcmUgZG9lcyBub3QgZGVwZW5kIG9uIGBhaWApLiAqL1xuaW50ZXJmYWNlIFByb3ZpZGVyQ2FsbEVycm9yIHtcbiAgc3RhdHVzQ29kZT86IHVua25vd247XG4gIHJlc3BvbnNlSGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD47XG59XG5cbi8qKiBgUmV0cnktQWZ0ZXJgIGFzIHNlY29uZHMg4oCUIGVpdGhlciBmb3JtIHRoZSBoZWFkZXIgYWxsb3dzIChkZWx0YS1zZWNvbmRzIG9yIGFuIEhUVFAgZGF0ZSkuICovXG5mdW5jdGlvbiByZXRyeUFmdGVyU2Vjb25kcyhoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+IHwgdW5kZWZpbmVkKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgcmF3ID0gaGVhZGVycz8uWydyZXRyeS1hZnRlciddID8/IGhlYWRlcnM/LlsnUmV0cnktQWZ0ZXInXTtcbiAgaWYgKCFyYXcpIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IGFzTnVtYmVyID0gTnVtYmVyKHJhdyk7XG4gIGlmIChOdW1iZXIuaXNGaW5pdGUoYXNOdW1iZXIpICYmIGFzTnVtYmVyID49IDApIHJldHVybiBNYXRoLmNlaWwoYXNOdW1iZXIpO1xuICBjb25zdCBhdCA9IERhdGUucGFyc2UocmF3KTtcbiAgcmV0dXJuIE51bWJlci5pc05hTihhdCkgPyB1bmRlZmluZWQgOiBNYXRoLm1heCgwLCBNYXRoLmNlaWwoKGF0IC0gRGF0ZS5ub3coKSkgLyAxMDAwKSk7XG59XG5cbi8qKiBUcnVlIGZvciBhbiBhYm9ydCB0aGF0IGNhbWUgZnJvbSBhIFRJTUVPVVQgc2lnbmFsIHJhdGhlciB0aGFuIGEgY2xpZW50IGRpc2Nvbm5lY3QuICovXG5mdW5jdGlvbiBpc1RpbWVvdXQoZXJyb3I6IHVua25vd24pOiBib29sZWFuIHtcbiAgY29uc3QgZSA9IGVycm9yIGFzIHsgbmFtZT86IHVua25vd247IGNhdXNlPzogeyBuYW1lPzogdW5rbm93biB9IH0gfCBudWxsO1xuICByZXR1cm4gZT8ubmFtZSA9PT0gJ1RpbWVvdXRFcnJvcicgfHwgZT8uY2F1c2U/Lm5hbWUgPT09ICdUaW1lb3V0RXJyb3InO1xufVxuXG4vKipcbiAqIENsYXNzaWZ5IGFuIEFJIGZhaWx1cmUgaW50byB0aGUgcmVzcG9uc2UgYSBjYWxsZXIgc2VuZHMuXG4gKlxuICogUHJvdmlkZXIgZmFpbHVyZXMgYXJlIG1hdGNoZWQgb24gdGhlIHByb3ZpZGVyJ3MgSFRUUCBTVEFUVVMgKGBBUElDYWxsRXJyb3Iuc3RhdHVzQ29kZWApLFxuICogbmV2ZXIgb24gbWVzc2FnZSB0ZXh0LCBhbmQgYW5zd2VyZWQgd2l0aCBhIHNlbnRlbmNlIG9mIG91cnM6IGEgcHJvdmlkZXIncyBlcnJvciBib2R5XG4gKiBjYW4gY2FycnkgYWNjb3VudCBpZHMsIHJlcXVlc3QgaWRzLCBxdW90YSBkZXRhaWxzIG9yIGFuIGVjaG8gb2YgdGhlIHByb21wdCwgYW5kIG5vbmVcbiAqIG9mIGl0IGJlbG9uZ3MgaW4gYSByZXNwb25zZSBvciBhbiBTU0UgZnJhbWUuIFRoZSBmdWxsIGVycm9yIHN0aWxsIGdvZXMgdG8gdGhlXG4gKiBjYWxsZXIncyBsb2cgbGluZS5cbiAqXG4gKiAgLSA0Mjkg4oaSIDQyOSAod2l0aCB0aGUgcHJvdmlkZXIncyBgUmV0cnktQWZ0ZXJgKTogdGhlIHByb3ZpZGVyIGlzIHJhdGUgbGltaXRpbmcuXG4gKiAgLSA1MjkgLyA1eHgg4oaSIDUwMyAod2l0aCBgUmV0cnktQWZ0ZXJgKTogdGhlIHByb3ZpZGVyIGlzIG92ZXJsb2FkZWQgb3IgZG93bi5cbiAqICAtIDQwMSAvIDQwMyDihpIgNTAyOiB0aGUgcHJvdmlkZXIgcmVmdXNlZCB0aGUgY3JlZGVudGlhbCAoYSBCWU8gb3Igb3JnIGtleSBpcyB3cm9uZykuXG4gKiAgLSBhIHRpbWVvdXQgc2lnbmFsIOKGkiA1MDQuXG4gKiAgLSBhbiB7QGxpbmsgQXBwRXJyb3J9IChBSURpc2FibGVkRXJyb3IsIEFJQ29uZmlndXJhdGlvbkVycm9yLCDigKYpIOKGkiBpdHMgb3duIHN0YXR1cyBhbmQgbWVzc2FnZS5cbiAqICAtIG90aGVyd2lzZSB0aGUgY29uZmlndXJhdGlvbiBtZXNzYWdlcyB0aGUgcmVnaXN0cnkgd3JpdGVzICh0aGV5IG5hbWUgZW52IHZhcnMsXG4gKiAgICBuZXZlciB2YWx1ZXMpIGtlZXAgdGhlaXIgdGV4dDsgYW55dGhpbmcgZWxzZSBnZXRzIGBmYWxsYmFja01lc3NhZ2VgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2xhc3NpZnlBSUVycm9yKGVycm9yOiB1bmtub3duLCBmYWxsYmFja01lc3NhZ2U6IHN0cmluZyk6IEFJRXJyb3JSZXNwb25zZSB7XG4gIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwcEVycm9yKSB7XG4gICAgcmV0dXJuIHsgc3RhdHVzOiBlcnJvci5zdGF0dXNDb2RlLCBjb2RlOiBlcnJvci5jb2RlLCBtZXNzYWdlOiBlcnJvci5tZXNzYWdlIH07XG4gIH1cbiAgY29uc3QgcHJvdmlkZXJTdGF0dXMgPSB0eXBlb2YgKGVycm9yIGFzIFByb3ZpZGVyQ2FsbEVycm9yIHwgbnVsbCk/LnN0YXR1c0NvZGUgPT09ICdudW1iZXInXG4gICAgPyAoZXJyb3IgYXMgUHJvdmlkZXJDYWxsRXJyb3IpLnN0YXR1c0NvZGUgYXMgbnVtYmVyXG4gICAgOiB1bmRlZmluZWQ7XG4gIGlmIChwcm92aWRlclN0YXR1cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgcmV0cnlBZnRlciA9IHJldHJ5QWZ0ZXJTZWNvbmRzKChlcnJvciBhcyBQcm92aWRlckNhbGxFcnJvcikucmVzcG9uc2VIZWFkZXJzKTtcbiAgICBjb25zdCB3aXRoUmV0cnkgPSByZXRyeUFmdGVyICE9PSB1bmRlZmluZWQgPyB7IHJldHJ5QWZ0ZXJTZWNvbmRzOiByZXRyeUFmdGVyIH0gOiB7fTtcbiAgICBpZiAocHJvdmlkZXJTdGF0dXMgPT09IDQyOSkge1xuICAgICAgcmV0dXJuIHsgc3RhdHVzOiA0MjksIGNvZGU6IEVycm9yQ29kZS5SQVRFX0xJTUlUX0VYQ0VFREVELCBtZXNzYWdlOiAnVGhlIEFJIHByb3ZpZGVyIGlzIHJhdGUgbGltaXRpbmcgcmVxdWVzdHMuIFRyeSBhZ2FpbiBzaG9ydGx5LicsIC4uLndpdGhSZXRyeSB9O1xuICAgIH1cbiAgICBpZiAocHJvdmlkZXJTdGF0dXMgPT09IDUyOSB8fCBwcm92aWRlclN0YXR1cyA+PSA1MDApIHtcbiAgICAgIHJldHVybiB7IHN0YXR1czogNTAzLCBjb2RlOiBFcnJvckNvZGUuU0VSVklDRV9VTkFWQUlMQUJMRSwgbWVzc2FnZTogJ1RoZSBBSSBwcm92aWRlciBpcyB0ZW1wb3JhcmlseSB1bmF2YWlsYWJsZS4gVHJ5IGFnYWluIHNob3J0bHkuJywgLi4ud2l0aFJldHJ5IH07XG4gICAgfVxuICAgIGlmIChwcm92aWRlclN0YXR1cyA9PT0gNDAxIHx8IHByb3ZpZGVyU3RhdHVzID09PSA0MDMpIHtcbiAgICAgIHJldHVybiB7IHN0YXR1czogNTAyLCBjb2RlOiBFcnJvckNvZGUuSU5URVJOQUxfRVJST1IsIG1lc3NhZ2U6ICdUaGUgQUkgcHJvdmlkZXIgcmVqZWN0ZWQgdGhlIEFQSSBrZXkgdXNlZCBmb3IgdGhpcyByZXF1ZXN0LiBDaGVjayB0aGUga2V5IGluIFNldHRpbmdzLCBvciB0aGUgb25lIHlvdSBzdXBwbGllZC4nIH07XG4gICAgfVxuICAgIHJldHVybiB7IHN0YXR1czogNTAyLCBjb2RlOiBFcnJvckNvZGUuSU5URVJOQUxfRVJST1IsIG1lc3NhZ2U6IGZhbGxiYWNrTWVzc2FnZSB9O1xuICB9XG4gIGlmIChpc1RpbWVvdXQoZXJyb3IpKSB7XG4gICAgcmV0dXJuIHsgc3RhdHVzOiA1MDQsIGNvZGU6IEVycm9yQ29kZS5TRVJWSUNFX1VOQVZBSUxBQkxFLCBtZXNzYWdlOiAnVGhlIEFJIHByb3ZpZGVyIGRpZCBub3QgcmVzcG9uZCBpbiB0aW1lLiBUcnkgYWdhaW4sIG9yIGFzayBmb3Igc29tZXRoaW5nIHNtYWxsZXIuJyB9O1xuICB9XG5cbiAgY29uc3QgbWVzc2FnZSA9IHR5cGVvZiBlcnJvciA9PT0gJ3N0cmluZycgPyBlcnJvciA6IGVycm9yTWVzc2FnZShlcnJvcik7XG4gIGlmIChtZXNzYWdlLmluY2x1ZGVzKCdub3QgY29uZmlndXJlZCcpIHx8IG1lc3NhZ2UuaW5jbHVkZXMoJ0FQSSBrZXknKSkge1xuICAgIC8vIFN1cmZhY2UgdGhlIE9SSUdJTkFMIG1lc3NhZ2UuIE9ubHkgdGhlIHJlZ2lzdHJ5J3Mgb3duIGNvbmZpZ3VyYXRpb24gZXJyb3JzXG4gICAgLy8gcmVhY2ggaGVyZSAoYSBwcm92aWRlcidzIHJlc3BvbnNlIGNhcnJpZXMgYSBzdGF0dXMgYW5kIHdhcyBoYW5kbGVkIGFib3ZlKTpcbiAgICAvLyB0aGV5IG5hbWUgdGhlIE1JU1NJTkcgQ09ORklHVVJBVElPTiDigJQgXCJubyBwcm92aWRlciBBUEkga2V5IGlzIHNldCBhbmRcbiAgICAvLyBPUEVOQUlfQ09NUEFUSUJMRV9CQVNFX1VSTCBpcyB1bnNldFwiLCBvciB3aGljaCBlbnYgdmFyIGEgbmFtZWQgcHJvdmlkZXJcbiAgICAvLyB3YW50cyDigJQgbmV2ZXIgYSBzZWNyZXQgVkFMVUUsIGFuZCBhcmUgdGhlIG9ubHkgdGhpbmcgdGhhdCBtYWtlcyB0aGlzIGVycm9yXG4gICAgLy8gYWN0aW9uYWJsZS5cbiAgICByZXR1cm4geyBzdGF0dXM6IDUwMCwgY29kZTogRXJyb3JDb2RlLklOVEVSTkFMX0VSUk9SLCBtZXNzYWdlIH07XG4gIH1cbiAgaWYgKG1lc3NhZ2UuaW5jbHVkZXMoJ25vdCBhdmFpbGFibGUgZm9yIHByb3ZpZGVyJykpIHtcbiAgICByZXR1cm4geyBzdGF0dXM6IDQwMCwgY29kZTogRXJyb3JDb2RlLlZBTElEQVRJT05fRVJST1IsIG1lc3NhZ2UgfTtcbiAgfVxuICByZXR1cm4geyBzdGF0dXM6IDUwMCwgY29kZTogRXJyb3JDb2RlLklOVEVSTkFMX0VSUk9SLCBtZXNzYWdlOiBmYWxsYmFja01lc3NhZ2UgfTtcbn1cblxuLyoqXG4gKiBBbnN3ZXIgYW4gQUkgZ2VuZXJhdGlvbiBmYWlsdXJlOiBhbiBIVFRQIGVycm9yIGJlZm9yZSB0aGUgc3RyZWFtIHN0YXJ0ZWQsIG9yIGFuXG4gKiBTU0UgYGVycm9yYCBldmVudCAodGhlbiBlbmQpIG9uY2UgaXQgaGFzLiBUYWtlcyB0aGUgRVJST1IsIG5vdCBpdHMgbWVzc2FnZSDigJQgdGhlXG4gKiBwcm92aWRlciBzdGF0dXMgaXMgd2hhdCBkZWNpZGVzIHRoZSBhbnN3ZXIgKHNlZSB7QGxpbmsgY2xhc3NpZnlBSUVycm9yfSk7IGEgc3RyaW5nXG4gKiBpcyBzdGlsbCBhY2NlcHRlZCBmb3IgdGhlIHJlZ2lzdHJ5J3MgY29uZmlndXJhdGlvbiBtZXNzYWdlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhbmRsZUFJRXJyb3IocmVzOiBSZXNwb25zZSwgZXJyb3I6IHVua25vd24sIGZhbGxiYWNrTWVzc2FnZTogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IGFuc3dlciA9IGNsYXNzaWZ5QUlFcnJvcihlcnJvciwgZmFsbGJhY2tNZXNzYWdlKTtcbiAgaWYgKCFyZXMuaGVhZGVyc1NlbnQpIHtcbiAgICBpZiAoYW5zd2VyLnJldHJ5QWZ0ZXJTZWNvbmRzICE9PSB1bmRlZmluZWQpIHJlcy5zZXRIZWFkZXIoJ1JldHJ5LUFmdGVyJywgU3RyaW5nKGFuc3dlci5yZXRyeUFmdGVyU2Vjb25kcykpO1xuICAgIHJldHVybiBzZW5kRXJyb3IocmVzLCBhbnN3ZXIuc3RhdHVzLCBhbnN3ZXIubWVzc2FnZSwgYW5zd2VyLmNvZGUpO1xuICB9XG4gIHJlcy53cml0ZShgZGF0YTogJHtKU09OLnN0cmluZ2lmeSh7XG4gICAgdHlwZTogJ2Vycm9yJyxcbiAgICBtZXNzYWdlOiBhbnN3ZXIubWVzc2FnZSxcbiAgICBjb2RlOiBhbnN3ZXIuY29kZSxcbiAgICBzdGF0dXM6IGFuc3dlci5zdGF0dXMsXG4gICAgLi4uKGFuc3dlci5yZXRyeUFmdGVyU2Vjb25kcyAhPT0gdW5kZWZpbmVkID8geyByZXRyeUFmdGVyU2Vjb25kczogYW5zd2VyLnJldHJ5QWZ0ZXJTZWNvbmRzIH0gOiB7fSksXG4gIH0pfVxcblxcbmApO1xuICByZXMuZW5kKCk7XG59XG4iXX0=
|
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3NlLWhlbHBlcnMuanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9oZWxwZXJzL3NzZS1oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFHdEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRS9EOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FBQyxHQUFhO0lBQzNDLEdBQUcsQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLG1CQUFtQixDQUFDLENBQUM7SUFDbkQsR0FBRyxDQUFDLFNBQVMsQ0FBQyxlQUFlLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDM0MsR0FBRyxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDMUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUMzQyxDQUFDO0FBUUQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsR0FBcUI7SUFDckQsTUFBTSxVQUFVLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztJQUN6QyxHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7UUFDbkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0I7WUFBRSxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDaEQsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLFVBQVUsQ0FBQyxNQUFNLENBQUM7QUFDM0IsQ0FBQztBQWVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsSUFBYSxFQUFFLEdBQWEsRUFBRSxTQUFpQjtJQUMzRSxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckIs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Q0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUNELEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ2hDLElBQUksRUFBRSxPQUFPO1FBQ2IsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPO1FBQ3ZCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtRQUNqQixNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU07UUFDckIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztLQUNuRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ1YsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ1osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgdHlwZSB7IFJlcXVlc3QsIFJlc3BvbnNlIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgeyBBcHBFcnJvciB9IGZyb20gJy4uL2Vycm9ycy9hcHAtZXJyb3JzLmpzJztcbmltcG9ydCB7IEVycm9yQ29kZSB9IGZyb20gJy4uL3R5cGVzL2Vycm9yLWNvZGVzLmpzJztcbmltcG9ydCB7IGVycm9yTWVzc2FnZSwgc2VuZEVycm9yIH0gZnJvbSAnLi4vdXRpbHMvcmVzcG9uc2UuanMnO1xuXG4vKipcbiAqIFNldCB0aGUgZm91ciBzdGFuZGFyZCBTU0UgcmVzcG9uc2UgaGVhZGVycyAoZG9lcyBOT1QgZmx1c2gg4oCUIHRoZSBjYWxsZXIgZmx1c2hlc1xuICogYWZ0ZXIgYW55IGFkZGl0aW9uYWwgcGVyLWVuZHBvaW50IHNldHVwIGxpa2UgYHJlcy5zZXRUaW1lb3V0YCkuIFRoZSBzaW5nbGVcbiAqIHNvdXJjZSBvZiB0cnV0aCBmb3IgdGhlIGB0ZXh0L2V2ZW50LXN0cmVhbWAgKyBuby1jYWNoZSArIGtlZXAtYWxpdmUgK1xuICogYFgtQWNjZWwtQnVmZmVyaW5nOiBub2AgKGRpc2FibGUgbmdpbnggYnVmZmVyaW5nKSBibG9jay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlU3NlSGVhZGVycyhyZXM6IFJlc3BvbnNlKTogdm9pZCB7XG4gIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICd0ZXh0L2V2ZW50LXN0cmVhbScpO1xuICByZXMuc2V0SGVhZGVyKCdDYWNoZS1Db250cm9sJywgJ25vLWNhY2hlJyk7XG4gIHJlcy5zZXRIZWFkZXIoJ0Nvbm5lY3Rpb24nLCAna2VlcC1hbGl2ZScpO1xuICByZXMuc2V0SGVhZGVyKCdYLUFjY2VsLUJ1ZmZlcmluZycsICdubycpO1xufVxuXG4vKiogVGhlIHNsaWNlIG9mIGFuIEV4cHJlc3MvTm9kZSByZXNwb25zZSBuZWVkZWQgdG8gb2JzZXJ2ZSBhIGNsaWVudCBkaXNjb25uZWN0LiAqL1xuaW50ZXJmYWNlIENsb3NhYmxlUmVzcG9uc2Uge1xuICBvbihldmVudDogJ2Nsb3NlJywgbGlzdGVuZXI6ICgpID0+IHZvaWQpOiB1bmtub3duO1xuICByZWFkb25seSB3cml0YWJsZUZpbmlzaGVkOiBib29sZWFuO1xufVxuXG4vKipcbiAqIEFuIEFib3J0U2lnbmFsIHRoYXQgZmlyZXMgd2hlbiB0aGUgY2xpZW50IGRpc2Nvbm5lY3RzIGJlZm9yZSB0aGUgcmVzcG9uc2VcbiAqIGZpbmlzaGVkIOKAlCBjYW5jZWxzIGEgcHJvdmlkZXIgY2FsbCAoYXZvaWRzIHdhc3RlZCBzcGVuZCkgYW5kIHRlbGxzIHRoZSByb3V0ZVxuICogdG8gc3RvcCB3cml0aW5nLlxuICpcbiAqIERpc2Nvbm5lY3QgaXMgZGV0ZWN0ZWQgb24gdGhlIFJFU1BPTlNFOiBgcmVzYCBlbWl0cyAnY2xvc2UnIHdoZW4gdGhlXG4gKiB1bmRlcmx5aW5nIGNvbm5lY3Rpb24gZ29lcyBhd2F5LCBhbmQgYHdyaXRhYmxlRmluaXNoZWRgIHRlbGxzIGFuIGVhcmx5IGNsb3NlXG4gKiAoY2xpZW50IGdvbmUpIGZyb20gdGhlIG5vcm1hbCBjbG9zZSBhZnRlciBgcmVzLmVuZCgpYC4gVGhlIHJlcXVlc3QncyBvd25cbiAqICdjbG9zZScgaXMgbm90IGEgZGlzY29ubmVjdCBzaWduYWwg4oCUIG9uIGN1cnJlbnQgTm9kZSBpdCBmaXJlcyBvbmNlIHRoZSByZXF1ZXN0XG4gKiBCT0RZIGhhcyBiZWVuIGNvbnN1bWVkIChleHByZXNzLmpzb24oKSBkb2VzIHRoYXQgYmVmb3JlIHRoZSBoYW5kbGVyIHJ1bnMpLCBzb1xuICogYSBkaXNjb25uZWN0IHdvdWxkIG5ldmVyIGJlIG9ic2VydmVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2xpZW50QWJvcnRTaWduYWwocmVzOiBDbG9zYWJsZVJlc3BvbnNlKTogQWJvcnRTaWduYWwge1xuICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICByZXMub24oJ2Nsb3NlJywgKCkgPT4ge1xuICAgIGlmICghcmVzLndyaXRhYmxlRmluaXNoZWQpIGNvbnRyb2xsZXIuYWJvcnQoKTtcbiAgfSk7XG4gIHJldHVybiBjb250cm9sbGVyLnNpZ25hbDtcbn1cblxuLyoqIEFuIG9wZW4gU1NFIHJlc3BvbnNlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTc2VTdHJlYW0ge1xuICAvKiogQWJvcnRlZCB3aGVuIHRoZSBjbGllbnQgZGlzY29ubmVjdHMgYmVmb3JlIHRoZSBzdHJlYW0gZmluaXNoZWQuICovXG4gIHJlYWRvbmx5IHNpZ25hbDogQWJvcnRTaWduYWw7XG4gIC8qKiBUcnVlIG9uY2UgdGhlIGNsaWVudCBoYXMgZGlzY29ubmVjdGVkLiAqL1xuICBhYm9ydGVkKCk6IGJvb2xlYW47XG4gIC8qKiBXcml0ZSBvbmUgYGRhdGE6YCBmcmFtZSBjYXJyeWluZyBgZXZlbnRgIGFzIEpTT04uIEEgbm8tb3AgYWZ0ZXIgYSBkaXNjb25uZWN0LiAqL1xuICBzZW5kKGV2ZW50OiB1bmtub3duKTogdm9pZDtcbiAgLyoqIFdyaXRlIHRoZSB0ZXJtaW5hbCBgZGF0YTogW0RPTkVdYCBmcmFtZSAocHJlY2VkZWQgYnkgYGV2ZW50YCwgd2hlbiBnaXZlbikuXG4gICAqICBBIG5vLW9wIGFmdGVyIGEgZGlzY29ubmVjdC4gVGhlIGNhbGxlciBzdGlsbCBlbmRzIHRoZSByZXNwb25zZS4gKi9cbiAgZG9uZShldmVudD86IHVua25vd24pOiB2b2lkO1xufVxuXG4vKipcbiAqIFNldCBTU0UgcmVzcG9uc2UgaGVhZGVycywgZmx1c2gsIGFuZCByZXR1cm4gdGhlIHN0cmVhbSdzIHdyaXRlciBwbHVzIGl0c1xuICogY2xpZW50LWRpc2Nvbm5lY3Qgc2lnbmFsIChzZWUge0BsaW5rIGNsaWVudEFib3J0U2lnbmFsfSkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbml0U1NFU3RyZWFtKF9yZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UsIHRpbWVvdXRNczogbnVtYmVyKTogU3NlU3RyZWFtIHtcbiAgd3JpdGVTc2VIZWFkZXJzKHJlcyk7XG4gIHJlcy5zZXRUaW1lb3V0KHRpbWVvdXRNcyk7XG4gIHJlcy5mbHVzaEhlYWRlcnMoKTtcbiAgY29uc3Qgc2lnbmFsID0gY2xpZW50QWJvcnRTaWduYWwocmVzKTtcbiAgY29uc3Qgc2VuZCA9IChldmVudDogdW5rbm93bik6IHZvaWQgPT4ge1xuICAgIGlmIChzaWduYWwuYWJvcnRlZCkgcmV0dXJuO1xuICAgIHJlcy53cml0ZShgZGF0YTogJHtKU09OLnN0cmluZ2lmeShldmVudCl9XFxuXFxuYCk7XG4gIH07XG4gIHJldHVybiB7XG4gICAgc2lnbmFsLFxuICAgIGFib3J0ZWQ6ICgpID0+IHNpZ25hbC5hYm9ydGVkLFxuICAgIHNlbmQsXG4gICAgZG9uZTogKGV2ZW50PzogdW5rbm93bik6IHZvaWQgPT4ge1xuICAgICAgaWYgKHNpZ25hbC5hYm9ydGVkKSByZXR1cm47XG4gICAgICBpZiAoZXZlbnQgIT09IHVuZGVmaW5lZCkgc2VuZChldmVudCk7XG4gICAgICByZXMud3JpdGUoJ2RhdGE6IFtET05FXVxcblxcbicpO1xuICAgIH0sXG4gIH07XG59XG5cbi8qKiBIb3cgYW4gQUkgZmFpbHVyZSBpcyBhbnN3ZXJlZDogYW4gSFRUUCBzdGF0dXMsIGEgY29kZSwgYW5kIGEgbWVzc2FnZSBXRSB3cm90ZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQUlFcnJvclJlc3BvbnNlIHtcbiAgc3RhdHVzOiBudW1iZXI7XG4gIGNvZGU6IEVycm9yQ29kZTtcbiAgLyoqIFNhZmUgdG8gc2hvdzogbmV2ZXIgcmF3IHByb3ZpZGVyIHJlc3BvbnNlIHRleHQuICovXG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgLyoqIFNlY29uZHMsIGZyb20gdGhlIHByb3ZpZGVyJ3Mgb3duIGBSZXRyeS1BZnRlcmAgd2hlbiBpdCBzZW50IG9uZS4gKi9cbiAgcmV0cnlBZnRlclNlY29uZHM/OiBudW1iZXI7XG59XG5cbi8qKiBUaGUgZmllbGRzIG9mIGFuIGFpLXNkayBgQVBJQ2FsbEVycm9yYCB0aGlzIGNsYXNzaWZpZXIgcmVhZHMgKGR1Y2stdHlwZWQ6IGFwaS1jb3JlIGRvZXMgbm90IGRlcGVuZCBvbiBgYWlgKS4gKi9cbmludGVyZmFjZSBQcm92aWRlckNhbGxFcnJvciB7XG4gIHN0YXR1c0NvZGU/OiB1bmtub3duO1xuICByZXNwb25zZUhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+O1xufVxuXG4vKiogYFJldHJ5LUFmdGVyYCBhcyBzZWNvbmRzIOKAlCBlaXRoZXIgZm9ybSB0aGUgaGVhZGVyIGFsbG93cyAoZGVsdGEtc2Vjb25kcyBvciBhbiBIVFRQIGRhdGUpLiAqL1xuZnVuY3Rpb24gcmV0cnlBZnRlclNlY29uZHMoaGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPiB8IHVuZGVmaW5lZCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHJhdyA9IGhlYWRlcnM/LlsncmV0cnktYWZ0ZXInXSA/PyBoZWFkZXJzPy5bJ1JldHJ5LUFmdGVyJ107XG4gIGlmICghcmF3KSByZXR1cm4gdW5kZWZpbmVkO1xuICBjb25zdCBhc051bWJlciA9IE51bWJlcihyYXcpO1xuICBpZiAoTnVtYmVyLmlzRmluaXRlKGFzTnVtYmVyKSAmJiBhc051bWJlciA+PSAwKSByZXR1cm4gTWF0aC5jZWlsKGFzTnVtYmVyKTtcbiAgY29uc3QgYXQgPSBEYXRlLnBhcnNlKHJhdyk7XG4gIHJldHVybiBOdW1iZXIuaXNOYU4oYXQpID8gdW5kZWZpbmVkIDogTWF0aC5tYXgoMCwgTWF0aC5jZWlsKChhdCAtIERhdGUubm93KCkpIC8gMTAwMCkpO1xufVxuXG4vKiogVHJ1ZSBmb3IgYW4gYWJvcnQgdGhhdCBjYW1lIGZyb20gYSBUSU1FT1VUIHNpZ25hbCByYXRoZXIgdGhhbiBhIGNsaWVudCBkaXNjb25uZWN0LiAqL1xuZnVuY3Rpb24gaXNUaW1lb3V0KGVycm9yOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIGNvbnN0IGUgPSBlcnJvciBhcyB7IG5hbWU/OiB1bmtub3duOyBjYXVzZT86IHsgbmFtZT86IHVua25vd24gfSB9IHwgbnVsbDtcbiAgcmV0dXJuIGU/Lm5hbWUgPT09ICdUaW1lb3V0RXJyb3InIHx8IGU/LmNhdXNlPy5uYW1lID09PSAnVGltZW91dEVycm9yJztcbn1cblxuLyoqXG4gKiBDbGFzc2lmeSBhbiBBSSBmYWlsdXJlIGludG8gdGhlIHJlc3BvbnNlIGEgY2FsbGVyIHNlbmRzLlxuICpcbiAqIFByb3ZpZGVyIGZhaWx1cmVzIGFyZSBtYXRjaGVkIG9uIHRoZSBwcm92aWRlcidzIEhUVFAgU1RBVFVTIChgQVBJQ2FsbEVycm9yLnN0YXR1c0NvZGVgKSxcbiAqIG5ldmVyIG9uIG1lc3NhZ2UgdGV4dCwgYW5kIGFuc3dlcmVkIHdpdGggYSBzZW50ZW5jZSBvZiBvdXJzOiBhIHByb3ZpZGVyJ3MgZXJyb3IgYm9keVxuICogY2FuIGNhcnJ5IGFjY291bnQgaWRzLCByZXF1ZXN0IGlkcywgcXVvdGEgZGV0YWlscyBvciBhbiBlY2hvIG9mIHRoZSBwcm9tcHQsIGFuZCBub25lXG4gKiBvZiBpdCBiZWxvbmdzIGluIGEgcmVzcG9uc2Ugb3IgYW4gU1NFIGZyYW1lLiBUaGUgZnVsbCBlcnJvciBzdGlsbCBnb2VzIHRvIHRoZVxuICogY2FsbGVyJ3MgbG9nIGxpbmUuXG4gKlxuICogIC0gNDI5IOKGkiA0MjkgKHdpdGggdGhlIHByb3ZpZGVyJ3MgYFJldHJ5LUFmdGVyYCk6IHRoZSBwcm92aWRlciBpcyByYXRlIGxpbWl0aW5nLlxuICogIC0gNTI5IC8gNXh4IOKGkiA1MDMgKHdpdGggYFJldHJ5LUFmdGVyYCk6IHRoZSBwcm92aWRlciBpcyBvdmVybG9hZGVkIG9yIGRvd24uXG4gKiAgLSA0MDEgLyA0MDMg4oaSIDUwMjogdGhlIHByb3ZpZGVyIHJlZnVzZWQgdGhlIGNyZWRlbnRpYWwgKGEgQllPIG9yIG9yZyBrZXkgaXMgd3JvbmcpLlxuICogIC0gYSB0aW1lb3V0IHNpZ25hbCDihpIgNTA0LlxuICogIC0gYW4ge0BsaW5rIEFwcEVycm9yfSAoQUlEaXNhYmxlZEVycm9yLCBBSUNvbmZpZ3VyYXRpb25FcnJvciwg4oCmKSDihpIgaXRzIG93biBzdGF0dXMgYW5kIG1lc3NhZ2UuXG4gKiAgLSBvdGhlcndpc2UgdGhlIGNvbmZpZ3VyYXRpb24gbWVzc2FnZXMgdGhlIHJlZ2lzdHJ5IHdyaXRlcyAodGhleSBuYW1lIGVudiB2YXJzLFxuICogICAgbmV2ZXIgdmFsdWVzKSBrZWVwIHRoZWlyIHRleHQ7IGFueXRoaW5nIGVsc2UgZ2V0cyBgZmFsbGJhY2tNZXNzYWdlYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsYXNzaWZ5QUlFcnJvcihlcnJvcjogdW5rbm93biwgZmFsbGJhY2tNZXNzYWdlOiBzdHJpbmcpOiBBSUVycm9yUmVzcG9uc2Uge1xuICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBBcHBFcnJvcikge1xuICAgIHJldHVybiB7IHN0YXR1czogZXJyb3Iuc3RhdHVzQ29kZSwgY29kZTogZXJyb3IuY29kZSwgbWVzc2FnZTogZXJyb3IubWVzc2FnZSB9O1xuICB9XG4gIGNvbnN0IHByb3ZpZGVyU3RhdHVzID0gdHlwZW9mIChlcnJvciBhcyBQcm92aWRlckNhbGxFcnJvciB8IG51bGwpPy5zdGF0dXNDb2RlID09PSAnbnVtYmVyJ1xuICAgID8gKGVycm9yIGFzIFByb3ZpZGVyQ2FsbEVycm9yKS5zdGF0dXNDb2RlIGFzIG51bWJlclxuICAgIDogdW5kZWZpbmVkO1xuICBpZiAocHJvdmlkZXJTdGF0dXMgIT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IHJldHJ5QWZ0ZXIgPSByZXRyeUFmdGVyU2Vjb25kcygoZXJyb3IgYXMgUHJvdmlkZXJDYWxsRXJyb3IpLnJlc3BvbnNlSGVhZGVycyk7XG4gICAgY29uc3Qgd2l0aFJldHJ5ID0gcmV0cnlBZnRlciAhPT0gdW5kZWZpbmVkID8geyByZXRyeUFmdGVyU2Vjb25kczogcmV0cnlBZnRlciB9IDoge307XG4gICAgaWYgKHByb3ZpZGVyU3RhdHVzID09PSA0MjkpIHtcbiAgICAgIHJldHVybiB7IHN0YXR1czogNDI5LCBjb2RlOiBFcnJvckNvZGUuUkFURV9MSU1JVF9FWENFRURFRCwgbWVzc2FnZTogJ1RoZSBBSSBwcm92aWRlciBpcyByYXRlIGxpbWl0aW5nIHJlcXVlc3RzLiBUcnkgYWdhaW4gc2hvcnRseS4nLCAuLi53aXRoUmV0cnkgfTtcbiAgICB9XG4gICAgaWYgKHByb3ZpZGVyU3RhdHVzID09PSA1MjkgfHwgcHJvdmlkZXJTdGF0dXMgPj0gNTAwKSB7XG4gICAgICByZXR1cm4geyBzdGF0dXM6IDUwMywgY29kZTogRXJyb3JDb2RlLlNFUlZJQ0VfVU5BVkFJTEFCTEUsIG1lc3NhZ2U6ICdUaGUgQUkgcHJvdmlkZXIgaXMgdGVtcG9yYXJpbHkgdW5hdmFpbGFibGUuIFRyeSBhZ2FpbiBzaG9ydGx5LicsIC4uLndpdGhSZXRyeSB9O1xuICAgIH1cbiAgICBpZiAocHJvdmlkZXJTdGF0dXMgPT09IDQwMSB8fCBwcm92aWRlclN0YXR1cyA9PT0gNDAzKSB7XG4gICAgICByZXR1cm4geyBzdGF0dXM6IDUwMiwgY29kZTogRXJyb3JDb2RlLklOVEVSTkFMX0VSUk9SLCBtZXNzYWdlOiAnVGhlIEFJIHByb3ZpZGVyIHJlamVjdGVkIHRoZSBBUEkga2V5IHVzZWQgZm9yIHRoaXMgcmVxdWVzdC4gQ2hlY2sgdGhlIGtleSBpbiBTZXR0aW5ncywgb3IgdGhlIG9uZSB5b3Ugc3VwcGxpZWQuJyB9O1xuICAgIH1cbiAgICAvLyBBIDR4eCB0aGF0IGlzIG5vdCA0MDEvNDAzLzQyOTogdGhlIHByb3ZpZGVyIHVuZGVyc3Rvb2QgdXMgYW5kIHJlZnVzZWQuXG4gICAgLy8gVGhlIEJPRFkgbmV2ZXIgc3VyZmFjZXMg4oCUIGl0IGNhcnJpZXMgb3JnIGlkcywgcmVxdWVzdCBpZHMgYW5kIHRoZSBwcm9tcHRcbiAgICAvLyAoc2VlIHRoZSBsZWFrIGFzc2VydGlvbnMgaW4gaGFuZGxlLWFpLWVycm9yLnRlc3QudHMpIOKAlCBidXQgdGhlIFNUQVRVUyBpc1xuICAgIC8vIGEgYmFyZSBudW1iZXIgYW5kIGlzIHRoZSBvbmx5IHRoaW5nIHRoYXQgbWFrZXMgdGhpcyByZWZ1c2FsIGRpYWdub3NhYmxlLlxuICAgIC8vIFRoZSBjYXNlIHRoYXQgZHJvdmUgdGhpczogYSBzZWxmLWhvc3RlZCBPcGVuQUktY29tcGF0aWJsZSBzZXJ2ZXIgdGhhdFxuICAgIC8vIHJlamVjdHMgdGhlIGB0b29sc2AgZmllbGQgYW5zd2VycyA0MDAsIGFuZCB0aGUgQXNrIEFHRU5UIGFsd2F5cyBzZW5kc1xuICAgIC8vIHRvb2xzLCBzbyB0aGUgd2hvbGUgZmVhdHVyZSBmYWlsZWQgd2l0aCBhIG1lc3NhZ2UgdGhhdCBuYW1lZCBub3RoaW5nLlxuICAgIHJldHVybiB7XG4gICAgICBzdGF0dXM6IDUwMixcbiAgICAgIGNvZGU6IEVycm9yQ29kZS5JTlRFUk5BTF9FUlJPUixcbiAgICAgIG1lc3NhZ2U6IGAke2ZhbGxiYWNrTWVzc2FnZX0g4oCUIHRoZSBBSSBwcm92aWRlciByZWZ1c2VkIHRoZSByZXF1ZXN0IChIVFRQICR7cHJvdmlkZXJTdGF0dXN9KS4gQ2hlY2sgdGhlIHNlcnZpY2UgbG9nIGZvciB0aGUgcmVhc29uLmAsXG4gICAgfTtcbiAgfVxuICBpZiAoaXNUaW1lb3V0KGVycm9yKSkge1xuICAgIHJldHVybiB7IHN0YXR1czogNTA0LCBjb2RlOiBFcnJvckNvZGUuU0VSVklDRV9VTkFWQUlMQUJMRSwgbWVzc2FnZTogJ1RoZSBBSSBwcm92aWRlciBkaWQgbm90IHJlc3BvbmQgaW4gdGltZS4gVHJ5IGFnYWluLCBvciBhc2sgZm9yIHNvbWV0aGluZyBzbWFsbGVyLicgfTtcbiAgfVxuXG4gIGNvbnN0IG1lc3NhZ2UgPSB0eXBlb2YgZXJyb3IgPT09ICdzdHJpbmcnID8gZXJyb3IgOiBlcnJvck1lc3NhZ2UoZXJyb3IpO1xuICBpZiAobWVzc2FnZS5pbmNsdWRlcygnbm90IGNvbmZpZ3VyZWQnKSB8fCBtZXNzYWdlLmluY2x1ZGVzKCdBUEkga2V5JykpIHtcbiAgICAvLyBTdXJmYWNlIHRoZSBPUklHSU5BTCBtZXNzYWdlLiBPbmx5IHRoZSByZWdpc3RyeSdzIG93biBjb25maWd1cmF0aW9uIGVycm9yc1xuICAgIC8vIHJlYWNoIGhlcmUgKGEgcHJvdmlkZXIncyByZXNwb25zZSBjYXJyaWVzIGEgc3RhdHVzIGFuZCB3YXMgaGFuZGxlZCBhYm92ZSk6XG4gICAgLy8gdGhleSBuYW1lIHRoZSBNSVNTSU5HIENPTkZJR1VSQVRJT04g4oCUIFwibm8gcHJvdmlkZXIgQVBJIGtleSBpcyBzZXQgYW5kXG4gICAgLy8gT1BFTkFJX0NPTVBBVElCTEVfQkFTRV9VUkwgaXMgdW5zZXRcIiwgb3Igd2hpY2ggZW52IHZhciBhIG5hbWVkIHByb3ZpZGVyXG4gICAgLy8gd2FudHMg4oCUIG5ldmVyIGEgc2VjcmV0IFZBTFVFLCBhbmQgYXJlIHRoZSBvbmx5IHRoaW5nIHRoYXQgbWFrZXMgdGhpcyBlcnJvclxuICAgIC8vIGFjdGlvbmFibGUuXG4gICAgcmV0dXJuIHsgc3RhdHVzOiA1MDAsIGNvZGU6IEVycm9yQ29kZS5JTlRFUk5BTF9FUlJPUiwgbWVzc2FnZSB9O1xuICB9XG4gIGlmIChtZXNzYWdlLmluY2x1ZGVzKCdub3QgYXZhaWxhYmxlIGZvciBwcm92aWRlcicpKSB7XG4gICAgcmV0dXJuIHsgc3RhdHVzOiA0MDAsIGNvZGU6IEVycm9yQ29kZS5WQUxJREFUSU9OX0VSUk9SLCBtZXNzYWdlIH07XG4gIH1cbiAgcmV0dXJuIHsgc3RhdHVzOiA1MDAsIGNvZGU6IEVycm9yQ29kZS5JTlRFUk5BTF9FUlJPUiwgbWVzc2FnZTogZmFsbGJhY2tNZXNzYWdlIH07XG59XG5cbi8qKlxuICogQW5zd2VyIGFuIEFJIGdlbmVyYXRpb24gZmFpbHVyZTogYW4gSFRUUCBlcnJvciBiZWZvcmUgdGhlIHN0cmVhbSBzdGFydGVkLCBvciBhblxuICogU1NFIGBlcnJvcmAgZXZlbnQgKHRoZW4gZW5kKSBvbmNlIGl0IGhhcy4gVGFrZXMgdGhlIEVSUk9SLCBub3QgaXRzIG1lc3NhZ2Ug4oCUIHRoZVxuICogcHJvdmlkZXIgc3RhdHVzIGlzIHdoYXQgZGVjaWRlcyB0aGUgYW5zd2VyIChzZWUge0BsaW5rIGNsYXNzaWZ5QUlFcnJvcn0pOyBhIHN0cmluZ1xuICogaXMgc3RpbGwgYWNjZXB0ZWQgZm9yIHRoZSByZWdpc3RyeSdzIGNvbmZpZ3VyYXRpb24gbWVzc2FnZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVBSUVycm9yKHJlczogUmVzcG9uc2UsIGVycm9yOiB1bmtub3duLCBmYWxsYmFja01lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCBhbnN3ZXIgPSBjbGFzc2lmeUFJRXJyb3IoZXJyb3IsIGZhbGxiYWNrTWVzc2FnZSk7XG4gIGlmICghcmVzLmhlYWRlcnNTZW50KSB7XG4gICAgaWYgKGFuc3dlci5yZXRyeUFmdGVyU2Vjb25kcyAhPT0gdW5kZWZpbmVkKSByZXMuc2V0SGVhZGVyKCdSZXRyeS1BZnRlcicsIFN0cmluZyhhbnN3ZXIucmV0cnlBZnRlclNlY29uZHMpKTtcbiAgICByZXR1cm4gc2VuZEVycm9yKHJlcywgYW5zd2VyLnN0YXR1cywgYW5zd2VyLm1lc3NhZ2UsIGFuc3dlci5jb2RlKTtcbiAgfVxuICByZXMud3JpdGUoYGRhdGE6ICR7SlNPTi5zdHJpbmdpZnkoe1xuICAgIHR5cGU6ICdlcnJvcicsXG4gICAgbWVzc2FnZTogYW5zd2VyLm1lc3NhZ2UsXG4gICAgY29kZTogYW5zd2VyLmNvZGUsXG4gICAgc3RhdHVzOiBhbnN3ZXIuc3RhdHVzLFxuICAgIC4uLihhbnN3ZXIucmV0cnlBZnRlclNlY29uZHMgIT09IHVuZGVmaW5lZCA/IHsgcmV0cnlBZnRlclNlY29uZHM6IGFuc3dlci5yZXRyeUFmdGVyU2Vjb25kcyB9IDoge30pLFxuICB9KX1cXG5cXG5gKTtcbiAgcmVzLmVuZCgpO1xufVxuIl19
|
|
@@ -176,4 +176,4 @@ export function businessCalendar() {
|
|
|
176
176
|
holidays: parseHolidays(envStr('SUPPORT_BUSINESS_HOURS_HOLIDAYS', '')),
|
|
177
177
|
};
|
|
178
178
|
}
|
|
179
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcG9ydC1jYWxlbmRhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9oZWxwZXJzL3N1cHBvcnQtY2FsZW5kYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQ0c7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBU2pEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBZ0Q7SUFDbEYsZ0JBQWdCLEVBQUUsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7SUFDcEQsZ0JBQWdCLEVBQUUsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7SUFDcEQsZUFBZSxFQUFFLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO0NBQ3JELENBQUM7QUFjRix5RUFBeUU7QUFDekUsU0FBUyxVQUFVLENBQUMsRUFBUSxFQUFFLFFBQWdCO0lBQzVDLDRFQUE0RTtJQUM1RSw2REFBNkQ7SUFDN0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRTtRQUMzQyxRQUFRO1FBQ1IsSUFBSSxFQUFFLFNBQVM7UUFDZixLQUFLLEVBQUUsU0FBUztRQUNoQixHQUFHLEVBQUUsU0FBUztRQUNkLElBQUksRUFBRSxTQUFTO1FBQ2YsTUFBTSxFQUFFLEtBQUs7UUFDYixPQUFPLEVBQUUsT0FBTztLQUNqQixDQUFDLENBQUM7SUFDSCxNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMs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O0lBQ0QsT0FBTztRQUNMLFFBQVE7UUFDUixJQUFJLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyw2QkFBNkIsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNuRSxPQUFPLEVBQUUsTUFBTSxDQUFDLGlDQUFpQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQzNFLFFBQVEsRUFBRSxhQUFhLENBQUMsTUFBTSxDQUFDLGlDQUFpQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0tBQ3ZFLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogV2hlbiBhIHN1cHBvcnQgY2FzZSdzIGZpcnN0IHJlc3BvbnNlIGlzIERVRS5cbiAqXG4gKiBXSFkgQSBERUFETElORSBGVU5DVElPTiBBTkQgTk9UIEEgQ0xPQ0suIFRoZSB0YXJnZXRzIGFyZSBzdGF0ZWQgaW4gYnVzaW5lc3NcbiAqIERBWVMgKFwiMiBidXNpbmVzcyBkYXlzXCIsIFwibmV4dCBidXNpbmVzcyBkYXlcIiksIGFuZCB0aGF0IGNob2ljZSBpcyB3aGF0IG1ha2VzXG4gKiB0aGlzIHNtYWxsLiBBbiBob3Vycy1iYXNlZCB0YXJnZXQgKFwiNDggYnVzaW5lc3MgaG91cnNcIikgd291bGQgbmVlZCBhblxuICogYWNjdW11bGF0aW5nIHdpdGhpbi1kYXkgY2xvY2s6IHBhdXNlIGF0IHRoZSBlbmQgb2YgdGhlIHdvcmtpbmcgZGF5LCByZXN1bWUgYXRcbiAqIHRoZSBzdGFydCBvZiB0aGUgbmV4dCwgY291bnQgZWxhcHNlZCB3b3JraW5nIHNlY29uZHMsIGFuZCBkZWNpZGUgd2hhdCBhIGNhc2VcbiAqIG9wZW5lZCBmaXZlIG1pbnV0ZXMgYmVmb3JlIGNsb3NpbmcgaXMgb3dlZC4gQSBidXNpbmVzcy1EQVkgdGFyZ2V0IG5lZWRzIG9ubHlcbiAqIG9uZSBhbnN3ZXIg4oCUIGdpdmVuIGFuIG9wZW4gdGltZXN0YW1wLCB3aGF0IGluc3RhbnQgaXMgdGhlIGVuZCBvZiB0aGUgTnRoXG4gKiBmb2xsb3dpbmcgd29ya2luZyBkYXkg4oCUIHdoaWNoIGlzIGEgcHVyZSBmdW5jdGlvbiBvZiBhIGNhbGVuZGFyLlxuICpcbiAqIFdIWSBUSEUgUkVTVUxUIElTIEZST1pFTiBPTlRPIFRIRSBDQVNFLiBUaGUgY2FsbGVyIHN0b3JlcyB0aGlzIG9uXG4gKiBgc3VwcG9ydF9jYXNlLnJlc3BvbnNlX2R1ZV9hdGAgYXQgb3BlbiwgZXhhY3RseSBhcyBpdCBmcmVlemVzIGBsZXZlbGAuIFRocmVlXG4gKiB0aGluZ3MgZm9sbG93LCBhbmQgdG9nZXRoZXIgdGhleSBhcmUgdGhlIHJlYXNvbiB0byBkbyBpdCB0aGlzIHdheTpcbiAqXG4gKiAgIC0gYSBob2xpZGF5LWxpc3Qgb3Igd29ya2luZy13ZWVrIGNoYW5nZSBhZnRlciBhIGNhc2Ugb3BlbnMgY2Fubm90IG1vdmUgYVxuICogICAgIHByb21pc2UgYWxyZWFkeSBtYWRlIHRvIGEgY3VzdG9tZXI7XG4gKiAgIC0gdGhlIHN0YWZmIHF1ZXVlIG9yZGVycyBieSBhIHJlYWwgZGVhZGxpbmUgd2l0aCBubyBjYWxlbmRhciBhcml0aG1ldGljIHBlclxuICogICAgIHJvdztcbiAqICAgLSB0aGUgc3RhbmRhcmQvcHJpb3JpdHkgYnJlYWNoIGFsZXJ0IGJlY29tZXMgQ09OVFJBQ1RVQUwgcmF0aGVyIHRoYW4gdGhlXG4gKiAgICAgb3BlcmF0aW9uYWwgXCJ0aGUgcXVldWUgaXMgbm90IGJlaW5nIHdvcmtlZFwiIGd1YXJkIGl0IGhhcyB0byBiZSB0b2RheSxcbiAqICAgICBiZWNhdXNlIGEgd2FsbC1jbG9jayBxdWFudGlsZSBjYW5ub3QgZXhwcmVzcyBhIGJ1c2luZXNzLWRheSB0YXJnZXQgYXQgYWxsXG4gKiAgICAgKGEgcHJpb3JpdHkgY2FzZSByYWlzZWQgYXQgMTc6MDEgb24gYSBGcmlkYXkgaXMgbm90IGxhdGUgdW50aWwgTW9uZGF5XG4gKiAgICAgZXZlbmluZywgYWJvdXQgNzkgd2FsbC1jbG9jayBob3VycyBsYXRlcikuXG4gKlxuICogT05FIFBMQVRGT1JNIENBTEVOREFSLCBub3QgdGhlIHRlbmFudCdzLiBXaXRoIHBlci10ZW5hbnQgdGltZXpvbmVzIHRoZSBzYW1lXG4gKiBjYXNlIHJhaXNlZCBhdCB0aGUgc2FtZSBpbnN0YW50IGhhcyBhIGRpZmZlcmVudCBkZWFkbGluZSBwZXIgY3VzdG9tZXIsIGFuZCB0aGVcbiAqIHN0YWZmIHF1ZXVlIGNhbm5vdCBiZSBvcmRlcmVkIGJ5IFwibW9zdCBhdCByaXNrXCIgd2l0aG91dCBjb21wdXRpbmcgcGVyLXRlbmFudFxuICogYnVzaW5lc3MgdGltZSBmb3IgZXZlcnkgcm93LiBPbmUgY2xvY2ssIG9uZSBvcmRlcmluZywgb25lIG51bWJlciB0byBkZWZlbmQuIEFcbiAqIGN1c3RvbWVyIHdobyBjYW5ub3QgbGl2ZSB3aXRoIGEgYnVzaW5lc3MgY2FsZW5kYXIgYXQgYWxsIGlzIHRoZSBQUkVNSVVNXG4gKiBjdXN0b21lciwgd2hpY2ggaXMgYSBjbGVhbmVyIHVwc2VsbCB0aGFuIHNpbGVudGx5IHJ1bm5pbmcgdHdvIGRvemVuIGNsb2Nrcy5cbiAqL1xuXG5pbXBvcnQgeyBlbnZJbnQsIGVudlN0ciB9IGZyb20gJy4uL3V0aWxzL2Vudi5qcyc7XG5cbi8qKiBIb3cgYSBsZXZlbCdzIHRhcmdldCBpcyBtZWFzdXJlZC4gKi9cbmV4cG9ydCB0eXBlIFN1cHBvcnRUYXJnZXRLaW5kID1cbiAgLyoqIE4gd29ya2luZyBkYXlzLCBlbmRpbmcgYXQgdGhlIGNsb3NlIG9mIHRoZSBOdGguICovXG4gIHwgeyBraW5kOiAnYnVzaW5lc3MtZGF5cyc7IGRheXM6IG51bWJlciB9XG4gIC8qKiBOIGhvdXJzIG9mIHdhbGwgY2xvY2ssIHdpdGggbm8gY2FsZW5kYXIgYXBwbGllZCBhdCBhbGwuICovXG4gIHwgeyBraW5kOiAnZWxhcHNlZC1ob3Vycyc7IGhvdXJzOiBudW1iZXIgfTtcblxuLyoqXG4gKiBUaGUgbWVhc3VyZSBiZWhpbmQgZWFjaCBsZXZlbCdzIHB1Ymxpc2hlZCB0YXJnZXQuXG4gKlxuICogUHJlbWl1bSBpcyBgZWxhcHNlZC1ob3Vyc2Agb24gcHVycG9zZSwgYW5kIHRoYXQgaXMgdGhlIHdob2xlIG9mIGl0cyAyNMOXN1xuICogY2xhaW06IGl0cyBjbG9jayBkb2VzIG5vdCBzdG9wIGZvciBuaWdodHMsIHdlZWtlbmRzIG9yIGhvbGlkYXlzLCBzbyBub1xuICogY2FsZW5kYXIgaXMgY29uc3VsdGVkLiBJdCBpcyBhbHNvIHdoeSBwcmVtaXVtIGlzIHRoZSBvbmUgbGV2ZWwgd2hvc2UgdGFyZ2V0XG4gKiB0aGUgd2FsbC1jbG9jayBoaXN0b2dyYW0gY2FuIGNoZWNrIGRpcmVjdGx5LlxuICovXG5leHBvcnQgY29uc3QgU1VQUE9SVF9UQVJHRVRfTUVBU1VSRVM6IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIFN1cHBvcnRUYXJnZXRLaW5kPj4gPSB7XG4gIHN1cHBvcnRfc3RhbmRhcmQ6IHsga2luZDogJ2J1c2luZXNzLWRheXMnLCBkYXlzOiAyIH0sXG4gIHN1cHBvcnRfcHJpb3JpdHk6IHsga2luZDogJ2J1c2luZXNzLWRheXMnLCBkYXlzOiAxIH0sXG4gIHN1cHBvcnRfcHJlbWl1bTogeyBraW5kOiAnZWxhcHNlZC1ob3VycycsIGhvdXJzOiA4IH0sXG59O1xuXG4vKiogVGhlIHJlc29sdmVkIGJ1c2luZXNzIGNhbGVuZGFyLiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdXNpbmVzc0NhbGVuZGFyIHtcbiAgLyoqIElBTkEgem9uZS4gTmV2ZXIgYSBmaXhlZCBhYmJyZXZpYXRpb24g4oCUIHNlZSB7QGxpbmsgYnVzaW5lc3NDYWxlbmRhcn0uICovXG4gIHRpbWVab25lOiBzdHJpbmc7XG4gIC8qKiBXb3JraW5nIHdlZWtkYXlzLCAwID0gU3VuZGF5IOKApiA2ID0gU2F0dXJkYXkuICovXG4gIGRheXM6IHJlYWRvbmx5IG51bWJlcltdO1xuICAvKiogVGhlIGhvdXIgKDDigJMyMykgYXQgd2hpY2ggYSB3b3JraW5nIGRheSBDTE9TRVMsIGluIGB0aW1lWm9uZWAuICovXG4gIGVuZEhvdXI6IG51bWJlcjtcbiAgLyoqIE5vbi13b3JraW5nIGRhdGVzLCBgWVlZWS1NTS1ERGAgaW4gYHRpbWVab25lYC4gKi9cbiAgaG9saWRheXM6IFJlYWRvbmx5U2V0PHN0cmluZz47XG59XG5cbi8qKiBgWVlZWS1NTS1ERGAgYW5kIHRoZSB3ZWVrZGF5IG9mIGFuIGluc3RhbnQsIGFzIHNlZW4gaW4gYHRpbWVab25lYC4gKi9cbmZ1bmN0aW9uIGxvY2FsUGFydHMoYXQ6IERhdGUsIHRpbWVab25lOiBzdHJpbmcpOiB7IGRhdGU6IHN0cmluZzsgd2Vla2RheTogbnVtYmVyOyBob3VyOiBudW1iZXIgfSB7XG4gIC8vIGBlbi1DQWAgeWllbGRzIElTTy1vcmRlcmVkIGRhdGUgcGFydHMsIHdoaWNoIGlzIHRoZSBjaGVhcGVzdCB3YXkgdG8gZ2V0IGFcbiAgLy8gem9uZS1jb3JyZWN0IFlZWVktTU0tREQgd2l0aG91dCBwdWxsaW5nIGEgZGF0ZSBsaWJyYXJ5IGluLlxuICBjb25zdCBmbXQgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgnZW4tQ0EnLCB7XG4gICAgdGltZVpvbmUsXG4gICAgeWVhcjogJ251bWVyaWMnLFxuICAgIG1vbnRoOiAnMi1kaWdpdCcsXG4gICAgZGF5OiAnMi1kaWdpdCcsXG4gICAgaG91cjogJzItZGlnaXQnLFxuICAgIGhvdXIxMjogZmFsc2UsXG4gICAgd2Vla2RheTogJ3Nob3J0JyxcbiAgfSk7XG4gIGNvbnN0IHBhcnRzID0gbmV3IE1hcChmbXQuZm9ybWF0VG9QYXJ0cyhhdCkubWFwKChwKSA9PiBbcC50eXBlLCBwLnZhbHVlXSkpO1xuICBjb25zdCB3ZWVrZGF5cyA9IFsnU3VuJywgJ01vbicsICdUdWUnLCAnV2VkJywgJ1RodScsICdGcmknLCAnU2F0J107XG4gIHJldHVybiB7XG4gICAgZGF0ZTogYCR7cGFydHMuZ2V0KCd5ZWFyJyl9LSR7cGFydHMuZ2V0KCdtb250aCcpfS0ke3BhcnRzLmdldCgnZGF5Jyl9YCxcbiAgICB3ZWVrZGF5OiBNYXRoLm1heCgwLCB3ZWVrZGF5cy5pbmRleE9mKHBhcnRzLmdldCgnd2Vla2RheScpID8/ICcnKSksXG4gICAgLy8gYGhvdXIxMjogZmFsc2VgIGNhbiByZW5kZXIgbWlkbmlnaHQgYXMgMjQgaW4gc29tZSBlbmdpbmVzLlxuICAgIGhvdXI6IE51bWJlcihwYXJ0cy5nZXQoJ2hvdXInKSkgJSAyNCxcbiAgfTtcbn1cblxuLyoqIFRoZSBVVEMgaW5zdGFudCBvZiBgaG91cjowMGAgb24gbG9jYWwgZGF0ZSBgeW1kYCBpbiBgdGltZVpvbmVgLiAqL1xuZnVuY3Rpb24gaW5zdGFudEF0TG9jYWxIb3VyKHltZDogc3RyaW5nLCBob3VyOiBudW1iZXIsIHRpbWVab25lOiBzdHJpbmcpOiBEYXRlIHtcbiAgLy8gR3Vlc3MgZnJvbSB0aGUgbmFpdmUgVVRDIHJlYWRpbmcsIHRoZW4gY29ycmVjdCBieSB0aGUgem9uZSdzIGFjdHVhbCBvZmZzZXRcbiAgLy8gYXQgdGhhdCBtb21lbnQuIE9uZSBjb3JyZWN0aW9uIGlzIGVub3VnaDogdGhlIHJlc2lkdWFsIGVycm9yIGNvdWxkIG9ubHlcbiAgLy8gZXhjZWVkIGFuIGhvdXIgaWYgdGhlIG9mZnNldCBpdHNlbGYgY2hhbmdlZCBiZXR3ZWVuIHRoZSBndWVzcyBhbmQgdGhlXG4gIC8vIHRhcmdldCwgd2hpY2ggbm8gcmVhbCB6b25lIGRvZXMuXG4gIGNvbnN0IGd1ZXNzID0gbmV3IERhdGUoYCR7eW1kfVQke1N0cmluZyhob3VyKS5wYWRTdGFydCgyLCAnMCcpfTowMDowMFpgKTtcbiAgY29uc3Qgc2VlbiA9IGxvY2FsUGFydHMoZ3Vlc3MsIHRpbWVab25lKTtcbiAgY29uc3Qgc2VlblV0YyA9IERhdGUucGFyc2UoYCR7c2Vlbi5kYXRlfVQke1N0cmluZyhzZWVuLmhvdXIpLnBhZFN0YXJ0KDIsICcwJyl9OjAwOjAwWmApO1xuICByZXR1cm4gbmV3IERhdGUoZ3Vlc3MuZ2V0VGltZSgpICsgKGd1ZXNzLmdldFRpbWUoKSAtIHNlZW5VdGMpKTtcbn1cblxuLyoqIFN0ZXAgb25lIGNhbGVuZGFyIGRheSBmb3J3YXJkIGZyb20gYSBgWVlZWS1NTS1ERGAuICovXG5mdW5jdGlvbiBuZXh0WW1kKHltZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgZCA9IG5ldyBEYXRlKGAke3ltZH1UMTI6MDA6MDBaYCk7XG4gIGQuc2V0VVRDRGF0ZShkLmdldFVUQ0RhdGUoKSArIDEpO1xuICByZXR1cm4gZC50b0lTT1N0cmluZygpLnNsaWNlKDAsIDEwKTtcbn1cblxuY29uc3QgaXNXb3JraW5nRGF5ID0gKHltZDogc3RyaW5nLCB3ZWVrZGF5OiBudW1iZXIsIGNhbDogQnVzaW5lc3NDYWxlbmRhcik6IGJvb2xlYW4gPT5cbiAgY2FsLmRheXMuaW5jbHVkZXMod2Vla2RheSkgJiYgIWNhbC5ob2xpZGF5cy5oYXMoeW1kKTtcblxuLyoqIFRoZSB3ZWVrZGF5IG9mIGEgYFlZWVktTU0tRERgLCByZWFkIGF0IGxvY2FsIG5vb24gc28gbm8gem9uZSBzaGlmdHMgdGhlIGRhdGUuICovXG5jb25zdCB3ZWVrZGF5T2YgPSAoeW1kOiBzdHJpbmcsIHRpbWVab25lOiBzdHJpbmcpOiBudW1iZXIgPT5cbiAgbG9jYWxQYXJ0cyhuZXcgRGF0ZShgJHt5bWR9VDEyOjAwOjAwWmApLCB0aW1lWm9uZSkud2Vla2RheTtcblxuLyoqXG4gKiBUaGUgaW5zdGFudCBhIGZpcnN0IHJlc3BvbnNlIGlzIGR1ZSwgb3IgbnVsbCBmb3IgYSBsZXZlbCB3aXRoIG5vIHRhcmdldC5cbiAqXG4gKiBGb3IgYSBidXNpbmVzcy1kYXkgdGFyZ2V0OiB0aGUgY2xvc2Ugb2YgdGhlIE50aCB3b3JraW5nIGRheSBBRlRFUiB0aGUgb25lIHRoZVxuICogY2FzZSB3YXMgb3BlbmVkIG9uLiBBIGNhc2Ugb3BlbmVkIG9uIGEgRnJpZGF5IHdpdGggYSBuZXh0LWJ1c2luZXNzLWRheSB0YXJnZXRcbiAqIGlzIGR1ZSBhdCBNb25kYXkncyBjbG9zZSwgbm90IFNhdHVyZGF5J3Mg4oCUIFNhdHVyZGF5IGlzIG5vdCBhIHdvcmtpbmcgZGF5LCBzb1xuICogaXQgaXMgbm90IGNvdW50ZWQuIEEgY2FzZSBvcGVuZWQgT04gYSBub24td29ya2luZyBkYXkgc3RhcnRzIGNvdW50aW5nIGZyb20gdGhlXG4gKiBuZXh0IHdvcmtpbmcgZGF5LCB3aGljaCBpcyB0aGUgcmVhZGluZyB0aGF0IGZhdm91cnMgdGhlIGN1c3RvbWVyIGFuZCBpcyB0aGVcbiAqIG9ubHkgb25lIHRoYXQgY2FuIGJlIGV4cGxhaW5lZCBpbiBhIHNlbnRlbmNlLlxuICpcbiAqIFRoZSBkYXkgb2Ygb3BlbmluZyBpcyBuZXZlciBpdHNlbGYgdGhlIGRlYWRsaW5lLCBob3dldmVyIGVhcmx5IHRoZSBjYXNlXG4gKiBhcnJpdmVzLiBcIk5leHQgYnVzaW5lc3MgZGF5XCIgaGFzIHRvIG1lYW4gdG9tb3Jyb3csIG5vdCBcImxhdGVyIHRvZGF5XCIg4oCUIGEgY2FzZVxuICogb3BlbmVkIGF0IDA5OjAxIGFuZCBvbmUgb3BlbmVkIGF0IDE2OjU5IGFyZSBvd2VkIHRoZSBzYW1lIHRoaW5nLCBhbmQgYW55dGhpbmdcbiAqIGVsc2UgdHVybnMgdGhlIHRhcmdldCBpbnRvIGFuIGhvdXJzIGNsb2NrIGJ5IHRoZSBiYWNrIGRvb3IuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNwb25zZUR1ZUF0KFxuICBvcGVuZWRBdDogRGF0ZSxcbiAgbGV2ZWw6IHN0cmluZyxcbiAgY2FsOiBCdXNpbmVzc0NhbGVuZGFyID0gYnVzaW5lc3NDYWxlbmRhcigpLFxuKTogRGF0ZSB8IG51bGwge1xuICBjb25zdCBtZWFzdXJlID0gU1VQUE9SVF9UQVJHRVRfTUVBU1VSRVNbbGV2ZWxdO1xuICBpZiAoIW1lYXN1cmUpIHJldHVybiBudWxsO1xuICBpZiAobWVhc3VyZS5raW5kID09PSAnZWxhcHNlZC1ob3VycycpIHtcbiAgICByZXR1cm4gbmV3IERhdGUob3BlbmVkQXQuZ2V0VGltZSgpICsgbWVhc3VyZS5ob3VycyAqIDM2MDBfMDAwKTtcbiAgfVxuICAvLyBObyB3b3JraW5nIGRheXMgY29uZmlndXJlZCBhdCBhbGwgd291bGQgb3RoZXJ3aXNlIHNwaW4gZm9yZXZlci4gVHJlYXRlZCBhc1xuICAvLyBcIm5vIGRlYWRsaW5lXCIgcmF0aGVyIHRoYW4gYSB0aHJvdzogYSBtaXNjb25maWd1cmVkIGNhbGVuZGFyIG11c3Qgbm90IG1ha2VcbiAgLy8gb3BlbmluZyBhIGNhc2UgZmFpbC5cbiAgaWYgKGNhbC5kYXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGw7XG5cbiAgbGV0IHltZCA9IGxvY2FsUGFydHMob3BlbmVkQXQsIGNhbC50aW1lWm9uZSkuZGF0ZTtcbiAgbGV0IGNvdW50ZWQgPSAwO1xuICAvLyBCb3VuZGVkOiAzNjYgc3RlcHMgY292ZXJzIGEgeWVhciwgd2hpY2ggaXMgZmFyIHBhc3QgYW55IGhvbGlkYXkgbGlzdCB0aGF0XG4gIC8vIGlzIG5vdCBpdHNlbGYgYSBjb25maWd1cmF0aW9uIGVycm9yLlxuICBmb3IgKGxldCBzdGVwID0gMDsgc3RlcCA8IDM2NiAmJiBjb3VudGVkIDwgbWVhc3VyZS5kYXlzOyBzdGVwICs9IDEpIHtcbiAgICB5bWQgPSBuZXh0WW1kKHltZCk7XG4gICAgaWYgKGlzV29ya2luZ0RheSh5bWQsIHdlZWtkYXlPZih5bWQsIGNhbC50aW1lWm9uZSksIGNhbCkpIGNvdW50ZWQgKz0gMTtcbiAgfVxuICBpZiAoY291bnRlZCA8IG1lYXN1cmUuZGF5cykgcmV0dXJuIG51bGw7XG4gIHJldHVybiBpbnN0YW50QXRMb2NhbEhvdXIoeW1kLCBjYWwuZW5kSG91ciwgY2FsLnRpbWVab25lKTtcbn1cblxuLyoqIGAxLDIsMyw0LDVgIOKGkiBgWzEsMiwzLDQsNV1gLCBpZ25vcmluZyBhbnl0aGluZyB0aGF0IGlzIG5vdCBhIHdlZWtkYXkgaW5kZXguICovXG5mdW5jdGlvbiBwYXJzZURheXMocmF3OiBzdHJpbmcpOiBudW1iZXJbXSB7XG4gIGNvbnN0IG91dCA9IHJhdy5zcGxpdCgnLCcpXG4gICAgLm1hcCgodikgPT4gTnVtYmVyKHYudHJpbSgpKSlcbiAgICAuZmlsdGVyKCh2KSA9PiBOdW1iZXIuaXNJbnRlZ2VyKHYpICYmIHYgPj0gMCAmJiB2IDw9IDYpO1xuICByZXR1cm4gWy4uLm5ldyBTZXQob3V0KV0uc29ydCgoYSwgYikgPT4gYSAtIGIpO1xufVxuXG4vKiogYDIwMjYtMTItMjUsMjAyNy0wMS0wMWAg4oaSIGEgc2V0LCBpZ25vcmluZyBhbnl0aGluZyBub3QgYFlZWVktTU0tRERgLiAqL1xuZnVuY3Rpb24gcGFyc2VIb2xpZGF5cyhyYXc6IHN0cmluZyk6IFNldDxzdHJpbmc+IHtcbiAgcmV0dXJuIG5ldyBTZXQocmF3LnNwbGl0KCcsJykubWFwKCh2KSA9PiB2LnRyaW0oKSkuZmlsdGVyKCh2KSA9PiAvXlxcZHs0fS1cXGR7Mn0tXFxkezJ9JC8udGVzdCh2KSkpO1xufVxuXG4vKipcbiAqIFRoZSBjb25maWd1cmVkIGNhbGVuZGFyLlxuICpcbiAqIGBTVVBQT1JUX0JVU0lORVNTX0hPVVJTX1RaYCB0YWtlcyBhbiAqKklBTkEgem9uZSoqLCBkZWZhdWx0XG4gKiBgQW1lcmljYS9OZXdfWW9ya2AsIGFuZCBOT1QgYSBmaXhlZCBhYmJyZXZpYXRpb24gbGlrZSBgRVNUYC4gYEVTVGAgaXNcbiAqIHBlcm1hbmVudGx5IFVUQ+KIkjUsIHNvIGFuIGBFU1RgIHNldHRpbmcgd291bGQgcHV0IHRoZSBkZXNrIGFuIGhvdXIgb3V0IGZvciB0aGVcbiAqIGVpZ2h0IG1vbnRocyBvZiB0aGUgeWVhciB0aGF0IGFyZSBFRFQg4oCUIHRoZSBzYW1lIHJlYXNvblxuICogYEFTS19TQ0hFRFVMRV9USU1FWk9ORWAgdGFrZXMgYW4gSUFOQSB6b25lIGZvciBpdHMgY3JvbiB3aW5kb3dzLiBBblxuICogdW5yZWNvZ25pc2VkIHpvbmUgZmFsbHMgYmFjayB0byBVVEMgcmF0aGVyIHRoYW4gdGhyb3dpbmcsIGJlY2F1c2UgYSBiYWRcbiAqIHRpbWV6b25lIG11c3Qgbm90IHN0b3AgY2FzZXMgYmVpbmcgb3BlbmVkOyBpdCBpcyB2YWxpZGF0ZWQgaGVyZSBzbyB0aGVcbiAqIGZhbGxiYWNrIGlzIGRlbGliZXJhdGUgcmF0aGVyIHRoYW4gYW4gZXhjZXB0aW9uIHRocm93biBmcm9tIGBJbnRsYCBkZWVwIGluc2lkZVxuICogYSByZXF1ZXN0LlxuICpcbiAqIEV2ZXJ5IHN0b3JlZCB0aW1lc3RhbXAgc3RheXMgVVRDLiBUaGUgem9uZSBpcyBhcHBsaWVkIG9ubHkgdG8gZGVyaXZlIGFcbiAqIGRlYWRsaW5lLlxuICpcbiAqIEhvbGlkYXlzIGFyZSBhbiBleHBsaWNpdCBvcGVyYXRvci1tYWludGFpbmVkIGxpc3QgcmF0aGVyIHRoYW4gYSBsaWJyYXJ5OiBhXG4gKiBsaWJyYXJ5IHB1bGxzIGJvdGggYSBkZXBlbmRlbmN5IGFuZCBhIGhvbGlkYXkgUE9MSUNZIHRoYXQgY2Fubm90IGJlIGV4cGxhaW5lZFxuICogdG8gYSBjdXN0b21lciBkaXNwdXRpbmcgYSBkZWFkbGluZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1c2luZXNzQ2FsZW5kYXIoKTogQnVzaW5lc3NDYWxlbmRhciB7XG4gIGNvbnN0IGNvbmZpZ3VyZWQgPSBlbnZTdHIoJ1NVUFBPUlRfQlVTSU5FU1NfSE9VUlNfVFonLCAnQW1lcmljYS9OZXdfWW9yaycpO1xuICBsZXQgdGltZVpvbmUgPSBjb25maWd1cmVkO1xuICB0cnkge1xuICAgIG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCdlbi1DQScsIHsgdGltZVpvbmU6IGNvbmZpZ3VyZWQgfSkuZm9ybWF0KG5ldyBEYXRlKCkpO1xuICB9IGNhdGNoIHtcbiAgICB0aW1lWm9uZSA9ICdVVEMnO1xuICB9XG4gIHJldHVybiB7XG4gICAgdGltZVpvbmUsXG4gICAgZGF5czogcGFyc2VEYXlzKGVudlN0cignU1VQUE9SVF9CVVNJTkVTU19IT1VSU19EQVlTJywgJzEsMiwzLDQsNScpKSxcbiAgICBlbmRIb3VyOiBlbnZJbnQoJ1NVUFBPUlRfQlVTSU5FU1NfSE9VUlNfRU5EX0hPVVInLCAxNywgeyBtaW46IDAsIG1heDogMjMgfSksXG4gICAgaG9saWRheXM6IHBhcnNlSG9saWRheXMoZW52U3RyKCdTVVBQT1JUX0JVU0lORVNTX0hPVVJTX0hPTElEQVlTJywgJycpKSxcbiAgfTtcbn1cbiJdfQ==
|
|
179
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcG9ydC1jYWxlbmRhci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hlbHBlcnMvc3VwcG9ydC1jYWxlbmRhci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWdDRztBQUVILE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFTakQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFnRDtJQUNsRixnQkFBZ0IsRUFBRSxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtJQUNwRCxnQkFBZ0IsRUFBRSxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtJQUNwRCxlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7Q0FDckQsQ0FBQztBQWNGLHlFQUF5RTtBQUN6RSxTQUFTLFVBQVUsQ0FBQyxFQUFRLEVBQUUsUUFBZ0I7SUFDNUMsNEVBQTRFO0lBQzVFLDZEQUE2RDtJQUM3RCxNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFO1FBQzNDLFFBQVE7UUFDUixJQUFJLEVBQUUsU0FBUztRQUNmLEtBQUssRUFBRSxTQUFTO1FBQ2hCLEdBQUcsRUFBRSxTQUFTO1FBQ2QsSUFBSSxFQUFFLFNBQVM7UUFDZixNQUFNLEVBQUUsS0FBSztRQUNiLE9BQU8sRUFBRSxPQUFPO0tBQ2pCLENBQUMsQ0FBQztJQUNILE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxD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UUFBUTtRQUNSLElBQUksRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLDZCQUE2QixFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ25FLE9BQU8sRUFBRSxNQUFNLENBQUMsaUNBQWlDLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFDM0UsUUFBUSxFQUFFLGFBQWEsQ0FBQyxNQUFNLENBQUMsaUNBQWlDLEVBQUUsRUFBRSxDQUFDLENBQUM7S0FDdkUsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBXaGVuIGEgc3VwcG9ydCBjYXNlJ3MgZmlyc3QgcmVzcG9uc2UgaXMgRFVFLlxuICpcbiAqIFdIWSBBIERFQURMSU5FIEZVTkNUSU9OIEFORCBOT1QgQSBDTE9DSy4gVGhlIHRhcmdldHMgYXJlIHN0YXRlZCBpbiBidXNpbmVzc1xuICogREFZUyAoXCIyIGJ1c2luZXNzIGRheXNcIiwgXCJuZXh0IGJ1c2luZXNzIGRheVwiKSwgYW5kIHRoYXQgY2hvaWNlIGlzIHdoYXQgbWFrZXNcbiAqIHRoaXMgc21hbGwuIEFuIGhvdXJzLWJhc2VkIHRhcmdldCAoXCI0OCBidXNpbmVzcyBob3Vyc1wiKSB3b3VsZCBuZWVkIGFuXG4gKiBhY2N1bXVsYXRpbmcgd2l0aGluLWRheSBjbG9jazogcGF1c2UgYXQgdGhlIGVuZCBvZiB0aGUgd29ya2luZyBkYXksIHJlc3VtZSBhdFxuICogdGhlIHN0YXJ0IG9mIHRoZSBuZXh0LCBjb3VudCBlbGFwc2VkIHdvcmtpbmcgc2Vjb25kcywgYW5kIGRlY2lkZSB3aGF0IGEgY2FzZVxuICogb3BlbmVkIGZpdmUgbWludXRlcyBiZWZvcmUgY2xvc2luZyBpcyBvd2VkLiBBIGJ1c2luZXNzLURBWSB0YXJnZXQgbmVlZHMgb25seVxuICogb25lIGFuc3dlciDigJQgZ2l2ZW4gYW4gb3BlbiB0aW1lc3RhbXAsIHdoYXQgaW5zdGFudCBpcyB0aGUgZW5kIG9mIHRoZSBOdGhcbiAqIGZvbGxvd2luZyB3b3JraW5nIGRheSDigJQgd2hpY2ggaXMgYSBwdXJlIGZ1bmN0aW9uIG9mIGEgY2FsZW5kYXIuXG4gKlxuICogV0hZIFRIRSBSRVNVTFQgSVMgRlJPWkVOIE9OVE8gVEhFIENBU0UuIFRoZSBjYWxsZXIgc3RvcmVzIHRoaXMgb25cbiAqIGBzdXBwb3J0X2Nhc2UucmVzcG9uc2VfZHVlX2F0YCBhdCBvcGVuLCBleGFjdGx5IGFzIGl0IGZyZWV6ZXMgYGxldmVsYC4gVGhyZWVcbiAqIHRoaW5ncyBmb2xsb3csIGFuZCB0b2dldGhlciB0aGV5IGFyZSB0aGUgcmVhc29uIHRvIGRvIGl0IHRoaXMgd2F5OlxuICpcbiAqICAgLSBhIGhvbGlkYXktbGlzdCBvciB3b3JraW5nLXdlZWsgY2hhbmdlIGFmdGVyIGEgY2FzZSBvcGVucyBjYW5ub3QgbW92ZSBhXG4gKiAgICAgcHJvbWlzZSBhbHJlYWR5IG1hZGUgdG8gYSBjdXN0b21lcjtcbiAqICAgLSB0aGUgc3RhZmYgcXVldWUgb3JkZXJzIGJ5IGEgcmVhbCBkZWFkbGluZSB3aXRoIG5vIGNhbGVuZGFyIGFyaXRobWV0aWMgcGVyXG4gKiAgICAgcm93O1xuICogICAtIHRoZSBzdGFuZGFyZC9wcmlvcml0eSBicmVhY2ggYWxlcnQgYmVjb21lcyBDT05UUkFDVFVBTCByYXRoZXIgdGhhbiB0aGVcbiAqICAgICBvcGVyYXRpb25hbCBcInRoZSBxdWV1ZSBpcyBub3QgYmVpbmcgd29ya2VkXCIgZ3VhcmQgaXQgaGFzIHRvIGJlIHRvZGF5LFxuICogICAgIGJlY2F1c2UgYSB3YWxsLWNsb2NrIHF1YW50aWxlIGNhbm5vdCBleHByZXNzIGEgYnVzaW5lc3MtZGF5IHRhcmdldCBhdCBhbGxcbiAqICAgICAoYSBwcmlvcml0eSBjYXNlIHJhaXNlZCBhdCAxNzowMSBvbiBhIEZyaWRheSBpcyBub3QgbGF0ZSB1bnRpbCBNb25kYXlcbiAqICAgICBldmVuaW5nLCBhYm91dCA3OSB3YWxsLWNsb2NrIGhvdXJzIGxhdGVyKS5cbiAqXG4gKiBPTkUgUExBVEZPUk0gQ0FMRU5EQVIsIG5vdCB0aGUgdGVuYW50J3MuIFdpdGggcGVyLXRlbmFudCB0aW1lem9uZXMgdGhlIHNhbWVcbiAqIGNhc2UgcmFpc2VkIGF0IHRoZSBzYW1lIGluc3RhbnQgaGFzIGEgZGlmZmVyZW50IGRlYWRsaW5lIHBlciBjdXN0b21lciwgYW5kIHRoZVxuICogc3RhZmYgcXVldWUgY2Fubm90IGJlIG9yZGVyZWQgYnkgXCJtb3N0IGF0IHJpc2tcIiB3aXRob3V0IGNvbXB1dGluZyBwZXItdGVuYW50XG4gKiBidXNpbmVzcyB0aW1lIGZvciBldmVyeSByb3cuIE9uZSBjbG9jaywgb25lIG9yZGVyaW5nLCBvbmUgbnVtYmVyIHRvIGRlZmVuZC4gQVxuICogY3VzdG9tZXIgd2hvIGNhbm5vdCBsaXZlIHdpdGggYSBidXNpbmVzcyBjYWxlbmRhciBhdCBhbGwgaXMgdGhlIFBSRU1JVU1cbiAqIGN1c3RvbWVyLCB3aGljaCBpcyBhIGNsZWFuZXIgdXBzZWxsIHRoYW4gc2lsZW50bHkgcnVubmluZyB0d28gZG96ZW4gY2xvY2tzLlxuICovXG5cbmltcG9ydCB7IGVudkludCwgZW52U3RyIH0gZnJvbSAnLi4vdXRpbHMvZW52LmpzJztcblxuLyoqIEhvdyBhIGxldmVsJ3MgdGFyZ2V0IGlzIG1lYXN1cmVkLiAqL1xuZXhwb3J0IHR5cGUgU3VwcG9ydFRhcmdldEtpbmQgPVxuICAvKiogTiB3b3JraW5nIGRheXMsIGVuZGluZyBhdCB0aGUgY2xvc2Ugb2YgdGhlIE50aC4gKi9cbiAgfCB7IGtpbmQ6ICdidXNpbmVzcy1kYXlzJzsgZGF5czogbnVtYmVyIH1cbiAgLyoqIE4gaG91cnMgb2Ygd2FsbCBjbG9jaywgd2l0aCBubyBjYWxlbmRhciBhcHBsaWVkIGF0IGFsbC4gKi9cbiAgfCB7IGtpbmQ6ICdlbGFwc2VkLWhvdXJzJzsgaG91cnM6IG51bWJlciB9O1xuXG4vKipcbiAqIFRoZSBtZWFzdXJlIGJlaGluZCBlYWNoIGxldmVsJ3MgcHVibGlzaGVkIHRhcmdldC5cbiAqXG4gKiBQcmVtaXVtIGlzIGBlbGFwc2VkLWhvdXJzYCBvbiBwdXJwb3NlLCBhbmQgdGhhdCBpcyB0aGUgd2hvbGUgb2YgaXRzIDI0w5c3XG4gKiBjbGFpbTogaXRzIGNsb2NrIGRvZXMgbm90IHN0b3AgZm9yIG5pZ2h0cywgd2Vla2VuZHMgb3IgaG9saWRheXMsIHNvIG5vXG4gKiBjYWxlbmRhciBpcyBjb25zdWx0ZWQuIEl0IGlzIGFsc28gd2h5IHByZW1pdW0gaXMgdGhlIG9uZSBsZXZlbCB3aG9zZSB0YXJnZXRcbiAqIHRoZSB3YWxsLWNsb2NrIGhpc3RvZ3JhbSBjYW4gY2hlY2sgZGlyZWN0bHkuXG4gKi9cbmV4cG9ydCBjb25zdCBTVVBQT1JUX1RBUkdFVF9NRUFTVVJFUzogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgU3VwcG9ydFRhcmdldEtpbmQ+PiA9IHtcbiAgc3VwcG9ydF9zdGFuZGFyZDogeyBraW5kOiAnYnVzaW5lc3MtZGF5cycsIGRheXM6IDIgfSxcbiAgc3VwcG9ydF9wcmlvcml0eTogeyBraW5kOiAnYnVzaW5lc3MtZGF5cycsIGRheXM6IDEgfSxcbiAgc3VwcG9ydF9wcmVtaXVtOiB7IGtpbmQ6ICdlbGFwc2VkLWhvdXJzJywgaG91cnM6IDggfSxcbn07XG5cbi8qKiBUaGUgcmVzb2x2ZWQgYnVzaW5lc3MgY2FsZW5kYXIuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1c2luZXNzQ2FsZW5kYXIge1xuICAvKiogSUFOQSB6b25lLiBOZXZlciBhIGZpeGVkIGFiYnJldmlhdGlvbiDigJQgc2VlIHtAbGluayBidXNpbmVzc0NhbGVuZGFyfS4gKi9cbiAgdGltZVpvbmU6IHN0cmluZztcbiAgLyoqIFdvcmtpbmcgd2Vla2RheXMsIDAgPSBTdW5kYXkg4oCmIDYgPSBTYXR1cmRheS4gKi9cbiAgZGF5czogcmVhZG9ubHkgbnVtYmVyW107XG4gIC8qKiBUaGUgaG91ciAoMOKAkzIzKSBhdCB3aGljaCBhIHdvcmtpbmcgZGF5IENMT1NFUywgaW4gYHRpbWVab25lYC4gKi9cbiAgZW5kSG91cjogbnVtYmVyO1xuICAvKiogTm9uLXdvcmtpbmcgZGF0ZXMsIGBZWVlZLU1NLUREYCBpbiBgdGltZVpvbmVgLiAqL1xuICBob2xpZGF5czogUmVhZG9ubHlTZXQ8c3RyaW5nPjtcbn1cblxuLyoqIGBZWVlZLU1NLUREYCBhbmQgdGhlIHdlZWtkYXkgb2YgYW4gaW5zdGFudCwgYXMgc2VlbiBpbiBgdGltZVpvbmVgLiAqL1xuZnVuY3Rpb24gbG9jYWxQYXJ0cyhhdDogRGF0ZSwgdGltZVpvbmU6IHN0cmluZyk6IHsgZGF0ZTogc3RyaW5nOyB3ZWVrZGF5OiBudW1iZXI7IGhvdXI6IG51bWJlciB9IHtcbiAgLy8gYGVuLUNBYCB5aWVsZHMgSVNPLW9yZGVyZWQgZGF0ZSBwYXJ0cywgd2hpY2ggaXMgdGhlIGNoZWFwZXN0IHdheSB0byBnZXQgYVxuICAvLyB6b25lLWNvcnJlY3QgWVlZWS1NTS1ERCB3aXRob3V0IHB1bGxpbmcgYSBkYXRlIGxpYnJhcnkgaW4uXG4gIGNvbnN0IGZtdCA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KCdlbi1DQScsIHtcbiAgICB0aW1lWm9uZSxcbiAgICB5ZWFyOiAnbnVtZXJpYycsXG4gICAgbW9udGg6ICcyLWRpZ2l0JyxcbiAgICBkYXk6ICcyLWRpZ2l0JyxcbiAgICBob3VyOiAnMi1kaWdpdCcsXG4gICAgaG91cjEyOiBmYWxzZSxcbiAgICB3ZWVrZGF5OiAnc2hvcnQnLFxuICB9KTtcbiAgY29uc3QgcGFydHMgPSBuZXcgTWFwKGZtdC5mb3JtYXRUb1BhcnRzKGF0KS5tYXAoKHApID0+IFtwLnR5cGUsIHAudmFsdWVdKSk7XG4gIGNvbnN0IHdlZWtkYXlzID0gWydTdW4nLCAnTW9uJywgJ1R1ZScsICdXZWQnLCAnVGh1JywgJ0ZyaScsICdTYXQnXTtcbiAgcmV0dXJuIHtcbiAgICBkYXRlOiBgJHtwYXJ0cy5nZXQoJ3llYXInKX0tJHtwYXJ0cy5nZXQoJ21vbnRoJyl9LSR7cGFydHMuZ2V0KCdkYXknKX1gLFxuICAgIHdlZWtkYXk6IE1hdGgubWF4KDAsIHdlZWtkYXlzLmluZGV4T2YocGFydHMuZ2V0KCd3ZWVrZGF5JykgPz8gJycpKSxcbiAgICAvLyBgaG91cjEyOiBmYWxzZWAgY2FuIHJlbmRlciBtaWRuaWdodCBhcyAyNCBpbiBzb21lIGVuZ2luZXMuXG4gICAgaG91cjogTnVtYmVyKHBhcnRzLmdldCgnaG91cicpKSAlIDI0LFxuICB9O1xufVxuXG4vKiogVGhlIFVUQyBpbnN0YW50IG9mIGBob3VyOjAwYCBvbiBsb2NhbCBkYXRlIGB5bWRgIGluIGB0aW1lWm9uZWAuICovXG5mdW5jdGlvbiBpbnN0YW50QXRMb2NhbEhvdXIoeW1kOiBzdHJpbmcsIGhvdXI6IG51bWJlciwgdGltZVpvbmU6IHN0cmluZyk6IERhdGUge1xuICAvLyBHdWVzcyBmcm9tIHRoZSBuYWl2ZSBVVEMgcmVhZGluZywgdGhlbiBjb3JyZWN0IGJ5IHRoZSB6b25lJ3MgYWN0dWFsIG9mZnNldFxuICAvLyBhdCB0aGF0IG1vbWVudC4gT25lIGNvcnJlY3Rpb24gaXMgZW5vdWdoOiB0aGUgcmVzaWR1YWwgZXJyb3IgY291bGQgb25seVxuICAvLyBleGNlZWQgYW4gaG91ciBpZiB0aGUgb2Zmc2V0IGl0c2VsZiBjaGFuZ2VkIGJldHdlZW4gdGhlIGd1ZXNzIGFuZCB0aGVcbiAgLy8gdGFyZ2V0LCB3aGljaCBubyByZWFsIHpvbmUgZG9lcy5cbiAgY29uc3QgZ3Vlc3MgPSBuZXcgRGF0ZShgJHt5bWR9VCR7U3RyaW5nKGhvdXIpLnBhZFN0YXJ0KDIsICcwJyl9OjAwOjAwWmApO1xuICBjb25zdCBzZWVuID0gbG9jYWxQYXJ0cyhndWVzcywgdGltZVpvbmUpO1xuICBjb25zdCBzZWVuVXRjID0gRGF0ZS5wYXJzZShgJHtzZWVuLmRhdGV9VCR7U3RyaW5nKHNlZW4uaG91cikucGFkU3RhcnQoMiwgJzAnKX06MDA6MDBaYCk7XG4gIHJldHVybiBuZXcgRGF0ZShndWVzcy5nZXRUaW1lKCkgKyAoZ3Vlc3MuZ2V0VGltZSgpIC0gc2VlblV0YykpO1xufVxuXG4vKiogU3RlcCBvbmUgY2FsZW5kYXIgZGF5IGZvcndhcmQgZnJvbSBhIGBZWVlZLU1NLUREYC4gKi9cbmZ1bmN0aW9uIG5leHRZbWQoeW1kOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBkID0gbmV3IERhdGUoYCR7eW1kfVQxMjowMDowMFpgKTtcbiAgZC5zZXRVVENEYXRlKGQuZ2V0VVRDRGF0ZSgpICsgMSk7XG4gIHJldHVybiBkLnRvSVNPU3RyaW5nKCkuc2xpY2UoMCwgMTApO1xufVxuXG5jb25zdCBpc1dvcmtpbmdEYXkgPSAoeW1kOiBzdHJpbmcsIHdlZWtkYXk6IG51bWJlciwgY2FsOiBCdXNpbmVzc0NhbGVuZGFyKTogYm9vbGVhbiA9PlxuICBjYWwuZGF5cy5pbmNsdWRlcyh3ZWVrZGF5KSAmJiAhY2FsLmhvbGlkYXlzLmhhcyh5bWQpO1xuXG4vKiogVGhlIHdlZWtkYXkgb2YgYSBgWVlZWS1NTS1ERGAsIHJlYWQgYXQgbG9jYWwgbm9vbiBzbyBubyB6b25lIHNoaWZ0cyB0aGUgZGF0ZS4gKi9cbmNvbnN0IHdlZWtkYXlPZiA9ICh5bWQ6IHN0cmluZywgdGltZVpvbmU6IHN0cmluZyk6IG51bWJlciA9PlxuICBsb2NhbFBhcnRzKG5ldyBEYXRlKGAke3ltZH1UMTI6MDA6MDBaYCksIHRpbWVab25lKS53ZWVrZGF5O1xuXG4vKipcbiAqIFRoZSBpbnN0YW50IGEgZmlyc3QgcmVzcG9uc2UgaXMgZHVlLCBvciBudWxsIGZvciBhIGxldmVsIHdpdGggbm8gdGFyZ2V0LlxuICpcbiAqIEZvciBhIGJ1c2luZXNzLWRheSB0YXJnZXQ6IHRoZSBjbG9zZSBvZiB0aGUgTnRoIHdvcmtpbmcgZGF5IEFGVEVSIHRoZSBvbmUgdGhlXG4gKiBjYXNlIHdhcyBvcGVuZWQgb24uIEEgY2FzZSBvcGVuZWQgb24gYSBGcmlkYXkgd2l0aCBhIG5leHQtYnVzaW5lc3MtZGF5IHRhcmdldFxuICogaXMgZHVlIGF0IE1vbmRheSdzIGNsb3NlLCBub3QgU2F0dXJkYXkncyDigJQgU2F0dXJkYXkgaXMgbm90IGEgd29ya2luZyBkYXksIHNvXG4gKiBpdCBpcyBub3QgY291bnRlZC4gQSBjYXNlIG9wZW5lZCBPTiBhIG5vbi13b3JraW5nIGRheSBzdGFydHMgY291bnRpbmcgZnJvbSB0aGVcbiAqIG5leHQgd29ya2luZyBkYXksIHdoaWNoIGlzIHRoZSByZWFkaW5nIHRoYXQgZmF2b3VycyB0aGUgY3VzdG9tZXIgYW5kIGlzIHRoZVxuICogb25seSBvbmUgdGhhdCBjYW4gYmUgZXhwbGFpbmVkIGluIGEgc2VudGVuY2UuXG4gKlxuICogVGhlIGRheSBvZiBvcGVuaW5nIGlzIG5ldmVyIGl0c2VsZiB0aGUgZGVhZGxpbmUsIGhvd2V2ZXIgZWFybHkgdGhlIGNhc2VcbiAqIGFycml2ZXMuIFwiTmV4dCBidXNpbmVzcyBkYXlcIiBoYXMgdG8gbWVhbiB0b21vcnJvdywgbm90IFwibGF0ZXIgdG9kYXlcIiDigJQgYSBjYXNlXG4gKiBvcGVuZWQgYXQgMDk6MDEgYW5kIG9uZSBvcGVuZWQgYXQgMTY6NTkgYXJlIG93ZWQgdGhlIHNhbWUgdGhpbmcsIGFuZCBhbnl0aGluZ1xuICogZWxzZSB0dXJucyB0aGUgdGFyZ2V0IGludG8gYW4gaG91cnMgY2xvY2sgYnkgdGhlIGJhY2sgZG9vci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc3BvbnNlRHVlQXQoXG4gIG9wZW5lZEF0OiBEYXRlLFxuICBsZXZlbDogc3RyaW5nLFxuICBjYWw6IEJ1c2luZXNzQ2FsZW5kYXIgPSBidXNpbmVzc0NhbGVuZGFyKCksXG4pOiBEYXRlIHwgbnVsbCB7XG4gIGNvbnN0IG1lYXN1cmUgPSBTVVBQT1JUX1RBUkdFVF9NRUFTVVJFU1tsZXZlbF07XG4gIGlmICghbWVhc3VyZSkgcmV0dXJuIG51bGw7XG4gIGlmIChtZWFzdXJlLmtpbmQgPT09ICdlbGFwc2VkLWhvdXJzJykge1xuICAgIHJldHVybiBuZXcgRGF0ZShvcGVuZWRBdC5nZXRUaW1lKCkgKyBtZWFzdXJlLmhvdXJzICogMzYwMF8wMDApO1xuICB9XG4gIC8vIE5vIHdvcmtpbmcgZGF5cyBjb25maWd1cmVkIGF0IGFsbCB3b3VsZCBvdGhlcndpc2Ugc3BpbiBmb3JldmVyLiBUcmVhdGVkIGFzXG4gIC8vIFwibm8gZGVhZGxpbmVcIiByYXRoZXIgdGhhbiBhIHRocm93OiBhIG1pc2NvbmZpZ3VyZWQgY2FsZW5kYXIgbXVzdCBub3QgbWFrZVxuICAvLyBvcGVuaW5nIGEgY2FzZSBmYWlsLlxuICBpZiAoY2FsLmRheXMubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcblxuICBsZXQgeW1kID0gbG9jYWxQYXJ0cyhvcGVuZWRBdCwgY2FsLnRpbWVab25lKS5kYXRlO1xuICBsZXQgY291bnRlZCA9IDA7XG4gIC8vIEJvdW5kZWQ6IDM2NiBzdGVwcyBjb3ZlcnMgYSB5ZWFyLCB3aGljaCBpcyBmYXIgcGFzdCBhbnkgaG9saWRheSBsaXN0IHRoYXRcbiAgLy8gaXMgbm90IGl0c2VsZiBhIGNvbmZpZ3VyYXRpb24gZXJyb3IuXG4gIGZvciAobGV0IHN0ZXAgPSAwOyBzdGVwIDwgMzY2ICYmIGNvdW50ZWQgPCBtZWFzdXJlLmRheXM7IHN0ZXAgKz0gMSkge1xuICAgIHltZCA9IG5leHRZbWQoeW1kKTtcbiAgICBpZiAoaXNXb3JraW5nRGF5KHltZCwgd2Vla2RheU9mKHltZCwgY2FsLnRpbWVab25lKSwgY2FsKSkgY291bnRlZCArPSAxO1xuICB9XG4gIGlmIChjb3VudGVkIDwgbWVhc3VyZS5kYXlzKSByZXR1cm4gbnVsbDtcbiAgcmV0dXJuIGluc3RhbnRBdExvY2FsSG91cih5bWQsIGNhbC5lbmRIb3VyLCBjYWwudGltZVpvbmUpO1xufVxuXG4vKiogYDEsMiwzLDQsNWAg4oaSIGBbMSwyLDMsNCw1XWAsIGlnbm9yaW5nIGFueXRoaW5nIHRoYXQgaXMgbm90IGEgd2Vla2RheSBpbmRleC4gKi9cbmZ1bmN0aW9uIHBhcnNlRGF5cyhyYXc6IHN0cmluZyk6IG51bWJlcltdIHtcbiAgY29uc3Qgb3V0ID0gcmF3LnNwbGl0KCcsJylcbiAgICAubWFwKCh2KSA9PiBOdW1iZXIodi50cmltKCkpKVxuICAgIC5maWx0ZXIoKHYpID0+IE51bWJlci5pc0ludGVnZXIodikgJiYgdiA+PSAwICYmIHYgPD0gNik7XG4gIHJldHVybiBbLi4ubmV3IFNldChvdXQpXS5zb3J0KChhLCBiKSA9PiBhIC0gYik7XG59XG5cbi8qKiBgMjAyNi0xMi0yNSwyMDI3LTAxLTAxYCDihpIgYSBzZXQsIGlnbm9yaW5nIGFueXRoaW5nIG5vdCBgWVlZWS1NTS1ERGAuICovXG5mdW5jdGlvbiBwYXJzZUhvbGlkYXlzKHJhdzogc3RyaW5nKTogU2V0PHN0cmluZz4ge1xuICByZXR1cm4gbmV3IFNldChyYXcuc3BsaXQoJywnKS5tYXAoKHYpID0+IHYudHJpbSgpKS5maWx0ZXIoKHYpID0+IC9eXFxkezR9LVxcZHsyfS1cXGR7Mn0kLy50ZXN0KHYpKSk7XG59XG5cbi8qKlxuICogVGhlIGNvbmZpZ3VyZWQgY2FsZW5kYXIuXG4gKlxuICogYFNVUFBPUlRfQlVTSU5FU1NfSE9VUlNfVFpgIHRha2VzIGFuICoqSUFOQSB6b25lKiosIGRlZmF1bHRcbiAqIGBBbWVyaWNhL05ld19Zb3JrYCwgYW5kIE5PVCBhIGZpeGVkIGFiYnJldmlhdGlvbiBsaWtlIGBFU1RgLiBgRVNUYCBpc1xuICogcGVybWFuZW50bHkgVVRD4oiSNSwgc28gYW4gYEVTVGAgc2V0dGluZyB3b3VsZCBwdXQgdGhlIGRlc2sgYW4gaG91ciBvdXQgZm9yIHRoZVxuICogZWlnaHQgbW9udGhzIG9mIHRoZSB5ZWFyIHRoYXQgYXJlIEVEVCDigJQgdGhlIHNhbWUgcmVhc29uXG4gKiBgQVNLX1NDSEVEVUxFX1RJTUVaT05FYCB0YWtlcyBhbiBJQU5BIHpvbmUgZm9yIGl0cyBjcm9uIHdpbmRvd3MuIEFuXG4gKiB1bnJlY29nbmlzZWQgem9uZSBmYWxscyBiYWNrIHRvIFVUQyByYXRoZXIgdGhhbiB0aHJvd2luZywgYmVjYXVzZSBhIGJhZFxuICogdGltZXpvbmUgbXVzdCBub3Qgc3RvcCBjYXNlcyBiZWluZyBvcGVuZWQ7IGl0IGlzIHZhbGlkYXRlZCBoZXJlIHNvIHRoZVxuICogZmFsbGJhY2sgaXMgZGVsaWJlcmF0ZSByYXRoZXIgdGhhbiBhbiBleGNlcHRpb24gdGhyb3duIGZyb20gYEludGxgIGRlZXAgaW5zaWRlXG4gKiBhIHJlcXVlc3QuXG4gKlxuICogRXZlcnkgc3RvcmVkIHRpbWVzdGFtcCBzdGF5cyBVVEMuIFRoZSB6b25lIGlzIGFwcGxpZWQgb25seSB0byBkZXJpdmUgYVxuICogZGVhZGxpbmUuXG4gKlxuICogSG9saWRheXMgYXJlIGFuIGV4cGxpY2l0IG9wZXJhdG9yLW1haW50YWluZWQgbGlzdCByYXRoZXIgdGhhbiBhIGxpYnJhcnk6IGFcbiAqIGxpYnJhcnkgcHVsbHMgYm90aCBhIGRlcGVuZGVuY3kgYW5kIGEgaG9saWRheSBQT0xJQ1kgdGhhdCBjYW5ub3QgYmUgZXhwbGFpbmVkXG4gKiB0byBhIGN1c3RvbWVyIGRpc3B1dGluZyBhIGRlYWRsaW5lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVzaW5lc3NDYWxlbmRhcigpOiBCdXNpbmVzc0NhbGVuZGFyIHtcbiAgY29uc3QgY29uZmlndXJlZCA9IGVudlN0cignU1VQUE9SVF9CVVNJTkVTU19IT1VSU19UWicsICdBbWVyaWNhL05ld19Zb3JrJyk7XG4gIGxldCB0aW1lWm9uZSA9IGNvbmZpZ3VyZWQ7XG4gIHRyeSB7XG4gICAgbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQoJ2VuLUNBJywgeyB0aW1lWm9uZTogY29uZmlndXJlZCB9KS5mb3JtYXQobmV3IERhdGUoKSk7XG4gIH0gY2F0Y2gge1xuICAgIHRpbWVab25lID0gJ1VUQyc7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB0aW1lWm9uZSxcbiAgICBkYXlzOiBwYXJzZURheXMoZW52U3RyKCdTVVBQT1JUX0JVU0lORVNTX0hPVVJTX0RBWVMnLCAnMSwyLDMsNCw1JykpLFxuICAgIGVuZEhvdXI6IGVudkludCgnU1VQUE9SVF9CVVNJTkVTU19IT1VSU19FTkRfSE9VUicsIDE3LCB7IG1pbjogMCwgbWF4OiAyMyB9KSxcbiAgICBob2xpZGF5czogcGFyc2VIb2xpZGF5cyhlbnZTdHIoJ1NVUFBPUlRfQlVTSU5FU1NfSE9VUlNfSE9MSURBWVMnLCAnJykpLFxuICB9O1xufVxuIl19
|
package/lib/index.js
CHANGED
|
@@ -96,4 +96,4 @@ export * from './errors/index.js';
|
|
|
96
96
|
export * from './validation/index.js';
|
|
97
97
|
// OpenAPI
|
|
98
98
|
export * from './openapi/index.js';
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaURHO0FBRUg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5Qkc7QUFFSCxRQUFRO0FBQ1IsY0FBYyxrQkFBa0IsQ0FBQztBQUVqQyxZQUFZO0FBQ1osY0FBYyxzQkFBc0IsQ0FBQztBQUVyQyxRQUFRO0FBQ1IsY0FBYyxrQkFBa0IsQ0FBQztBQUVqQyxVQUFVO0FBQ1YsY0FBYyxvQkFBb0IsQ0FBQztBQUVuQyxXQUFXO0FBQ1gsY0FBYyxxQkFBcUIsQ0FBQztBQUVwQyxhQUFhO0FBQ2IsY0FBYyx1QkFBdUIsQ0FBQztBQUV0QyxTQUFTO0FBQ1QsY0FBYyxtQkFBbUIsQ0FBQztBQUVsQyxTQUFTO0FBQ1QsY0FBYyxtQkFBbUIsQ0FBQztBQUVsQyxhQUFhO0FBQ2IsY0FBYyx1QkFBdUIsQ0FBQztBQUV0QyxVQUFVO0FBQ1YsY0FBYyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIEBtb2R1bGUgQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmVcbiAqXG4gKiBDb3JlIEFQSSB1dGlsaXRpZXMgc2hhcmVkIGFjcm9zcyBhbGwgc2VydmljZXMuXG4gKlxuICogKipNaWRkbGV3YXJlKipcbiAqIC0gcmVxdWlyZUF1dGgsIHJlcXVpcmVTeXN0ZW1BZG1pbiwgcmVxdWlyZUZlYXR1cmUg4oCUIEpXVCBhdXRoZW50aWNhdGlvblxuICogLSBpc1N5c3RlbUFkbWluLCBpc1NlcnZpY2VQcmluY2lwYWwg4oCUIGF1dGhvcml6YXRpb24gaGVscGVycyAoaXNTeXN0ZW1PcmdJZCByZW1haW5zIGFzIGEgY29udGVudC1vd25lciBjaGVjaywgbm90IGEgcHJpdmlsZWdlIGdhdGUpXG4gKiAtIHNpZ25TZXJ2aWNlVG9rZW4sIGdldFNlcnZpY2VBdXRoSGVhZGVyIOKAlCBpbnRlci1zZXJ2aWNlIEpXVCBtaW50aW5nXG4gKlxuICogKipUeXBlcyoqXG4gKiAtIEVycm9yQ29kZSwgRXJyb3JDb2RlU3RhdHVzIOKAlCBzdGFuZGFyZGl6ZWQgZXJyb3IgY29kZSBlbnVtIGFuZCBzdGF0dXMgbWFwcGluZ1xuICogLSBSZXF1ZXN0SWRlbnRpdHkg4oCUIHBhcnNlZCBKV1QgaWRlbnRpdHlcbiAqIC0gU2VydmljZUNvbmZpZywgUmVxdWVzdE9wdGlvbnMg4oCUIEhUVFAgY2xpZW50IHR5cGVzXG4gKiAtIFF1b3RhVHlwZSwgUXVvdGFDaGVja1Jlc3VsdCDigJQgcXVvdGEgc2VydmljZSB0eXBlc1xuICogLSBQaXBlbGluZVR5cGUsIENvbXB1dGVUeXBlLCBWaXNpYmlsaXR5IOKAlCBwaXBlbGluZSBkb21haW4gdHlwZXNcbiAqIC0gRmVhdHVyZUZsYWdzIOKAlCBmZWF0dXJlIGZsYWcgdHlwZXNcbiAqXG4gKiAqKlV0aWxpdGllcyoqXG4gKiAtIGNyZWF0ZUxvZ2dlciDigJQgV2luc3Rvbi1iYXNlZCBzdHJ1Y3R1cmVkIGxvZ2dlciBmYWN0b3J5XG4gKiAtIHNlbmRTdWNjZXNzLCBzZW5kRXJyb3IsIHNlbmRQYWdpbmF0ZWROZXN0ZWQsIHNlbmRCYWRSZXF1ZXN0LCBzZW5kSW50ZXJuYWxFcnJvciDigJQgSFRUUCByZXNwb25zZSBoZWxwZXJzXG4gKiAtIGdldFBhcmFtIOKAlCByZXF1ZXN0IHBhcmFtZXRlciBleHRyYWN0aW9uXG4gKiAtIHBhcnNlUXVlcnlJbnQsIHBhcnNlUXVlcnlTdHJpbmcg4oCUIHF1ZXJ5IHN0cmluZyBwYXJzaW5nXG4gKiAtIGdldElkZW50aXR5IOKAlCBpZGVudGl0eSBleHRyYWN0aW9uIGZyb20gcmVxdWVzdHNcbiAqIC0gYWN0b3JJZCDigJQgdGhlIGF1ZGl0IGFjdG9yIGZvciBhIHJvdXRlIGNvbnRleHQgKG9uZSBgc3lzdGVtYCBzZW50aW5lbClcbiAqIC0gZXJyb3JNZXNzYWdlIOKAlCBzYWZlIGVycm9yLXRvLXN0cmluZyBjb252ZXJzaW9uXG4gKlxuICogKipDb25zdGFudHMqKlxuICogLSBIVFRQIHN0YXR1cyBjb2RlcywgQUkgcHJvdmlkZXIgaWRlbnRpZmllcnMsIHRpbWUgY29uc3RhbnRzXG4gKlxuICogKipTZXJ2aWNlcyoqXG4gKiAtIEludGVybmFsSHR0cENsaWVudCwgY3JlYXRlU2FmZUNsaWVudCDigJQgaW50ZXJuYWwgc2VydmljZS10by1zZXJ2aWNlIEhUVFAgY2xpZW50XG4gKiAtIGNyZWF0ZVF1b3RhU2VydmljZSDigJQgcXVvdGEgZW5mb3JjZW1lbnQgY2xpZW50IGZhY3RvcnlcbiAqIC0gQ2FjaGVTZXJ2aWNlIOKAlCBpbi1tZW1vcnkgVFRMIGNhY2hlXG4gKiAtIENvbXBsaWFuY2VDbGllbnQg4oCUIGNvbXBsaWFuY2Ugc2VydmljZSBjbGllbnRcbiAqIC0gRW50aXR5RXZlbnRFbWl0dGVyIOKAlCBkb21haW4gZXZlbnQgcHViL3N1YlxuICogLSByZXRyeUZvcmV2ZXIg4oCUIGNhcHBlZC1iYWNrb2ZmIHdhaXQgZm9yIGEgZGVwZW5kZW5jeSB0aGF0IG11c3QgY29tZSB1cFxuICpcbiAqICoqRXJyb3JzKipcbiAqIC0gQXBwRXJyb3IsIE5vdEZvdW5kRXJyb3IsIEZvcmJpZGRlbkVycm9yIOKAlCB0eXBlZCBIVFRQIGVycm9yIGNsYXNzZXNcbiAqXG4gKiAqKlZhbGlkYXRpb24qKlxuICogLSBab2QtYmFzZWQgcmVxdWVzdCB2YWxpZGF0aW9uIHNjaGVtYXMgYW5kIG1pZGRsZXdhcmVcbiAqXG4gKiAqKlJvdXRlcyoqXG4gKiAtIEhlYWx0aCBjaGVjayByb3V0ZSBmYWN0b3J5XG4gKlxuICogKipPcGVuQVBJKipcbiAqIC0gU2NoZW1hIHJlZ2lzdHJ5IGFuZCBzcGVjIGdlbmVyYXRpb25cbiAqL1xuXG4vKipcbiAqIFBVQkxJQyBTVVJGQUNFIFBPTElDWVxuICpcbiAqIFRoZSByb290IHJlLWV4cG9ydHMgdGhlIHRlbiBzdWItYmFycmVscywgYW5kIGVhY2ggU1VCLUJBUlJFTCBpcyB0aGUgYWxsb3ctbGlzdFxuICogZm9yIGl0cyBvd24gYXJlYTogZXZlcnkgcmUtZXhwb3J0IE5BTUVTIHdoYXQgaXQgZXhwb3J0cyAobm8gYGV4cG9ydCAqYCksIGFuZFxuICogYSBuYW1lIGlzIG9uIHRoZSBsaXN0IG9ubHkgYmVjYXVzZSBzb21lIG90aGVyIHBhY2thZ2Ug4oCUIGEgc2VydmljZSwgdGhlXG4gKiBmcm9udGVuZCwgYSB0ZXN0LCBhIGRlcGxveSBzY3JpcHQg4oCUIGFjdHVhbGx5IGltcG9ydHMgaXQuIEludGVybmFscyBhcmVcbiAqIGV4Y2x1ZGVkIHRoZXJlIHJhdGhlciB0aGFuIGhlcmUsIHNvIHRoZSBleGNsdXNpb24gc2l0cyBuZXh0IHRvIHRoZSBjb2RlIHRoYXRcbiAqIGRlZmluZXMgdGhlbS4gQWRkaW5nIGFuIGV4cG9ydCB0byBhIG1vZHVsZSBkb2VzIE5PVCBwdWJsaXNoIGl0OyBhZGQgaXQgdG9cbiAqIHRoZSBzdWItYmFycmVsIHdoZW4gYSBjb25zdW1lciBuZWVkcyBpdC5cbiAqXG4gKiBEZWxpYmVyYXRlbHkgaW50ZXJuYWwsIGZvciBleGFtcGxlOlxuICogLSBgc2VydmljZXMvcmV0cnktc3RyYXRlZ3lgIOKAlCBkZWNpc2lvbiBmdW5jdGlvbnMgb25seTsgYHBhcnNlUmV0cnlBZnRlcmAsXG4gKiAgIGBhZGRKaXR0ZXJgIGFuZCB0aGUgREVGQVVMVF8qIGNvbnN0YW50cyBhcmUgYmFja29mZiBpbnRlcm5hbHMuXG4gKiAtIGBzZXJ2aWNlcy9jaXJjdWl0LWJyZWFrZXJgIOKAlCBgcmVzZXRDaXJjdWl0QnJlYWtlcnNgIG9ubHk7IHRoZVxuICogICBgQ2lyY3VpdEJyZWFrZXJgIGNsYXNzIGlzIHdpcmVkIGJ5IHRoZSBzaGFyZWQgSFRUUCBjbGllbnQsIG5vdCBieSBzZXJ2aWNlcy5cbiAqIC0gYHNlcnZpY2VzL3NlcnZpY2Uta2V5c2Ag4oCUIHZlcmlmeS9pbnNwZWN0IG9ubHk7IHNpZ25pbmcsIHRoZSBrZXkgYnVuZGxlIGFuZFxuICogICBgX3Jlc2V0U2VydmljZUtleXNGb3JUZXN0c2Agc3RheSBpbnNpZGUuXG4gKiAtIGB1dGlscy9qd2tgIOKAlCBjb25zdGFudHMsIHNoYXBlcywgZGVjb2RlcnMgYW5kIHRoZSB0d28gc2lnbmVyLWZhY2luZyBoZWxwZXJzXG4gKiAgIHBsYXRmb3JtIG5lZWRzOyBgandrVGh1bWJwcmludGAgLyBgcHVibGljS2V5RnJvbUp3a2Agc3RheSBpbnNpZGUuXG4gKlxuICogYXBpLWNvcmUncyBvd24gbW9kdWxlcyByZWFjaCB0aGUgZXhjbHVkZWQgc3ltYm9scyBieSByZWxhdGl2ZSBpbXBvcnQ7IHVuaXRcbiAqIHRlc3RzIHJlYWNoIHRoZW0gYnkgREVFUCBpbXBvcnRcbiAqIChgQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUvbGliL3NlcnZpY2VzL3NlcnZpY2Uta2V5cy5qc2ApLiBUZXN0IGhlbHBlcnMgYXJlXG4gKiB0aGUgc2VwYXJhdGUgYEBwaXBlbGluZS1idWlsZGVyL2FwaS1jb3JlL3Rlc3RpbmdgIGVudHJ5LCBuZXZlciB0aGlzIGJhcnJlbC5cbiAqL1xuXG4vLyBUeXBlc1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcy9pbmRleC5qcyc7XG5cbi8vIENvbnN0YW50c1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdGFudHMvaW5kZXguanMnO1xuXG4vLyBVdGlsc1xuZXhwb3J0ICogZnJvbSAnLi91dGlscy9pbmRleC5qcyc7XG5cbi8vIEhlbHBlcnNcbmV4cG9ydCAqIGZyb20gJy4vaGVscGVycy9pbmRleC5qcyc7XG5cbi8vIFNlcnZpY2VzXG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2luZGV4LmpzJztcblxuLy8gTWlkZGxld2FyZVxuZXhwb3J0ICogZnJvbSAnLi9taWRkbGV3YXJlL2luZGV4LmpzJztcblxuLy8gUm91dGVzXG5leHBvcnQgKiBmcm9tICcuL3JvdXRlcy9pbmRleC5qcyc7XG5cbi8vIEVycm9yc1xuZXhwb3J0ICogZnJvbSAnLi9lcnJvcnMvaW5kZXguanMnO1xuXG4vLyBWYWxpZGF0aW9uXG5leHBvcnQgKiBmcm9tICcuL3ZhbGlkYXRpb24vaW5kZXguanMnO1xuXG4vLyBPcGVuQVBJXG5leHBvcnQgKiBmcm9tICcuL29wZW5hcGkvaW5kZXguanMnO1xuIl19
|
|
@@ -23,4 +23,4 @@ export function proposable(req, res, next) {
|
|
|
23
23
|
}
|
|
24
24
|
next();
|
|
25
25
|
}
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNrLXByb3ZlbmFuY2UuanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9taWRkbGV3YXJlL2Fzay1wcm92ZW5hbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUE2Q3RDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFdEQsa0ZBQWtGO0FBQ2xGLE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHLDhCQUE4QixDQUFDO0FBRTdFOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsVUFBVSxDQUFDLEdBQVksRUFBRSxHQUFhLEVBQUUsSUFBa0I7SUFDeEUsSUFBSSxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDakQsV0FBVyxDQUFDLDhCQUE4QixFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFLDRFQUE0RTtRQUM1RSxrREFBa0Q7UUFDbEQsY0FBYyxDQUFDLEdBQUcsRUFBRSxnQkFBZ0Isc0JBQXNCLGlFQUFpRSxDQUFDLENBQUM7UUFDN0gsT0FBTztJQUNULENBQUM7SUFDRCxJQUFJLEVBQUUsQ0FBQztBQUNULENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBgcHJvcG9zYWJsZWAg4oCUIHRoZSBnYXRlIG9uIHRoZSBvbmUgcmVxdWVzdCBoZWFkZXIgYSBjbGllbnQgbWF5IHVzZSB0b1xuICogaW5mbHVlbmNlIGFuIGF1ZGl0IGV2ZW50LlxuICpcbiAqIFRoZSBBc2sgcGFuZWwncyBjb25maXJtIHBhdGggY29tbWl0cyBhIGRyYWZ0ZWQgY2hhbmdlIHRocm91Z2ggdGhlIFNBTUUgcm91dGVcbiAqIHRoZSBkYXNoYm9hcmQncyBvd24gYnV0dG9uIGNhbGxzLCB3aXRoIHRoZSB1c2VyJ3Mgb3duIHNlc3Npb24uIERlc2lnbiBydWxlIDZcbiAqIHNheXMgdGhlIHJlc3VsdGluZyBhdWRpdCBldmVudCBtdXN0IHJlY29yZCB0aGF0IGFuIEFJIGRyYWZ0ZWQgaXQsIHNvIGFuXG4gKiBpbmNpZGVudCByZXZpZXcgY2FuIHRlbGwgXCJ0aGUgYWRtaW4gY2hhbmdlZCB0aGlzXCIgZnJvbSBcImFuIEFJIGRyYWZ0ZWQgaXQgYW5kXG4gKiB0aGUgYWRtaW4gY2xpY2tlZCBBcHBseVwiLiBUaGUgYnJvd3NlciBzYXlzIHNvIHdpdGggYFgtUEItUHJvcG9zZWQtQnlgLlxuICpcbiAqIFRoYXQgaXMgYSBjbGllbnQgd3JpdGluZyBpbnRvIHRoZSBoYXNoLWNoYWluZWQgYXVkaXQgdHJhaWwsIHNvIHRoZSBjaGFubmVsIGlzXG4gKiBtYWRlIGFzIG5hcnJvdyBhcyBhIGNoYW5uZWwgY2FuIGJlOiBPTkUgaGVhZGVyLCBPTkUgYWNjZXB0ZWQgdmFsdWUgKHRoZVxuICogc2hhcmVkIGBBU0tfQUdFTlRfUFJPUE9TRVJgIGNvbnN0YW50KSwgd3JpdGluZyBPTkUgYWRkaXRpdmUga2V5LiBUaGVyZSBpcyBub1xuICogZnJlZSB0ZXh0IGFuZCBubyBvYmplY3QgdG8gbWVyZ2Ug4oCUIGB3aXRoUHJvcG9zYWxQcm92ZW5hbmNlYCByZS1kZXJpdmVzIHRoZVxuICogZnJhZ21lbnQgZnJvbSB0aGUgY29uc3RhbnQgcmF0aGVyIHRoYW4gY29weWluZyBhbnl0aGluZyBvZmYgdGhlIHJlcXVlc3QsIHNvXG4gKiB0aGUgd29yc3QgYSBjYWxsZXIgY2FuIGRvIGlzIGFzc2VydCB0aGUgb25lIHRoaW5nIHRoZSBoZWFkZXIgZXhpc3RzIHRvXG4gKiBhc3NlcnQuXG4gKlxuICogUkVKRUNULCBOT1QgSUdOT1JFLiBBIHZhbHVlIG90aGVyIHRoYW4gdGhlIGNvbnN0YW50IGZhaWxzIHRoZSByZXF1ZXN0IHdpdGggYVxuICogNDAwIGJlZm9yZSB0aGUgaGFuZGxlciBydW5zLCBiZWNhdXNlOlxuICpcbiAqICAtIFNpbGVudGx5IGRyb3BwaW5nIGl0IHJlcHJvZHVjZXMgdGhlIGV4YWN0IGJ1ZyB0aGlzIHdvcmsgZXhpc3RzIHRvIGZpeC4gVGhlXG4gKiAgICByZWFzb24gcHJvdmVuYW5jZSB3YXMgbmV2ZXIgc2VudCBiZWZvcmUgaXMgdGhhdCB0aGUgdXBkYXRlIHNjaGVtYXMgYXJlXG4gKiAgICBub24tc3RyaWN0IGB6Lm9iamVjdGBzIHRoYXQgU1RSSVAgdW5rbm93biBrZXlzLCBzbyBhIGNsaWVudCBjb3VsZCBzZW5kIHRoZVxuICogICAgZmllbGQgYW5kIGhhdmUgaXQgdmFuaXNoLiBBIGhlYWRlciB0aGF0IGlzIHF1aWV0bHkgaWdub3JlZCBpcyB0aGUgc2FtZVxuICogICAgdHJhcCBvbmUgbGF5ZXIgdXAsIGFuZCB0aGUgbmV4dCByZWFkZXIgd291bGQgaGF2ZSB0byBwcm92ZSBieSBleHBlcmltZW50XG4gKiAgICB3aGV0aGVyIGl0IGxhbmRzLlxuICogIC0gTm8gbGVnaXRpbWF0ZSBjbGllbnQgc2VuZHMgYW55IG90aGVyIHZhbHVlLCBzbyBhIHJlamVjdGlvbiBjYW4gYnJlYWtcbiAqICAgIG5vdGhpbmcgdGhhdCB3b3JrcyB0b2RheS4gQW4gdW5leHBlY3RlZCB2YWx1ZSBpcyBlaXRoZXIgYSBjbGllbnQgYnVnIOKAlFxuICogICAgd2hpY2ggc2hvdWxkIGZhaWwgbG91ZGx5LCBhdCB0aGUgd3JpdGUsIG5vdCBsZWF2ZSBhIHRyYWlsIHRoYXQgaXMgc2lsZW50bHlcbiAqICAgIG1pc3NpbmcgaXRzIG1hcmtlciDigJQgb3Igc29tZW9uZSBwcm9iaW5nIHdoYXQgdGhlIGF1ZGl0IHRyYWlsIHdpbGwgYWNjZXB0LFxuICogICAgd2hpY2ggc2hvdWxkIGJlIGNvdW50ZWQgKGBhc2tfcHJvdmVuYW5jZV9yZWZ1c2VkX3RvdGFsYCkgcmF0aGVyIHRoYW5cbiAqICAgIGFic29yYmVkLlxuICogIC0gRmFpbGluZyBCRUZPUkUgdGhlIG11dGF0aW9uIG1lYW5zIGEgcmVmdXNhbCBuZXZlciBsZWF2ZXMgYSB3cml0dGVuIGNoYW5nZVxuICogICAgd2hvc2UgcHJvdmVuYW5jZSB3YXMgdGhyb3duIGF3YXkuIFRoZSBhbHRlcm5hdGl2ZSDigJQgd3JpdGUsIHRoZW4gZHJvcCB0aGVcbiAqICAgIG1hcmtlciDigJQgaXMgdGhlIG9uZSBvdXRjb21lIHRoYXQgbWFrZXMgdGhlIHRyYWlsIGFjdGl2ZWx5IG1pc2xlYWRpbmcuXG4gKlxuICogQmVsdCBhbmQgYnJhY2VzOiB7QGxpbmsgcmVhZFByb3Bvc2VyQ2xhaW19IGhvbm91cnMgbm90aGluZyBidXQgdGhlIGNvbnN0YW50LFxuICogc28gZXZlbiBhIHJvdXRlIHRoYXQgZm9yZ290IHRoaXMgZ2F0ZSBjYW5ub3Qgc3RvcmUgYSBmb3JnZWQgcHJvcG9zZXIuIFRoZVxuICogZ2F0ZSB0dXJucyBcImlnbm9yZWRcIiBpbnRvIFwicmVmdXNlZFwiOyBpdCBpcyBub3Qgd2hhdCBtYWtlcyBmb3JnZXJ5IGhhcm1sZXNzLlxuICovXG5cbmltcG9ydCB0eXBlIHsgUmVxdWVzdCwgUmVzcG9uc2UsIE5leHRGdW5jdGlvbiB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IHsgQVNLX1BST1BPU0VEX0JZX0hFQURFUiwgcmVhZFByb3Bvc2VyQ2xhaW0gfSBmcm9tICcuLi90eXBlcy9hc2stcHJvcG9zYWxzLmpzJztcbmltcG9ydCB7IGVtaXRDb3VudGVyIH0gZnJvbSAnLi4vdXRpbHMvbWV0cmljLWVtaXR0ZXIuanMnO1xuaW1wb3J0IHsgc2VuZEJhZFJlcXVlc3QgfSBmcm9tICcuLi91dGlscy9yZXNwb25zZS5qcyc7XG5cbi8qKiBDb3VudGVyIGluY3JlbWVudGVkIHdoZW4gYSByZXF1ZXN0IGNsYWltcyBhIHByb3Bvc2VyIHRoYXQgaXMgbm90IHRoZSBhZ2VudC4gKi9cbmV4cG9ydCBjb25zdCBBU0tfUFJPVkVOQU5DRV9SRUZVU0VEX0NPVU5URVIgPSAnYXNrX3Byb3ZlbmFuY2VfcmVmdXNlZF90b3RhbCc7XG5cbi8qKlxuICogRXhwcmVzcyBtaWRkbGV3YXJlIGZvciBhIHJvdXRlIGFuIEFzayBwcm9wb3NhbCBtYXkgY29tbWl0IHRvOiBhY2NlcHQgdGhlXG4gKiBhZ2VudCBwcm92ZW5hbmNlIG1hcmtlciwgcmVmdXNlIGFueSBvdGhlciBwcm9wb3NlciB3aXRoIGEgNDAwLlxuICpcbiAqIFBsYWNlIGl0IGluIHRoZSBjaGFpbiBiZXNpZGUgYGF1ZGl0ZWQoLi4uKWAsIGJlZm9yZSB0aGUgaGFuZGxlcjpcbiAqIGByb3V0ZXIucHV0KCcvOmlkJywgYXVkaXRlZCgncGlwZWxpbmUudXBkYXRlJyksIHByb3Bvc2FibGUsIHdpdGhSb3V0ZShoKSlgLlxuICogVGhlIGhhbmRsZXIgdGhlbiByZWNvcmRzIHdpdGggYHdpdGhQcm9wb3NhbFByb3ZlbmFuY2UocmVxLmhlYWRlcnMsIHsuLi59KWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm9wb3NhYmxlKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSwgbmV4dDogTmV4dEZ1bmN0aW9uKTogdm9pZCB7XG4gIGlmIChyZWFkUHJvcG9zZXJDbGFpbShyZXEuaGVhZGVycykgPT09ICdmb3JlaWduJykge1xuICAgIGVtaXRDb3VudGVyKEFTS19QUk9WRU5BTkNFX1JFRlVTRURfQ09VTlRFUiwgeyBtZXRob2Q6IHJlcS5tZXRob2QgfSk7XG4gICAgLy8gVGhlIHJlamVjdGVkIHZhbHVlIGlzIG5ldmVyIGVjaG9lZCBiYWNrIOKAlCBpdCBpcyBhdHRhY2tlci1jb250cm9sbGVkIHRleHQsXG4gICAgLy8gYW5kIHRoZSBydWxlIGlzIHNob3J0IGVub3VnaCB0byBzdGF0ZSBvdXRyaWdodC5cbiAgICBzZW5kQmFkUmVxdWVzdChyZXMsIGBVbnJlY29nbmlzZWQgJHtBU0tfUFJPUE9TRURfQllfSEVBREVSfSBoZWFkZXI6IHRoZSBvbmx5IHByb3Bvc2VyIHRoaXMgcm91dGUgYWNjZXB0cyBpcyB0aGUgQXNrIGFnZW50LmApO1xuICAgIHJldHVybjtcbiAgfVxuICBuZXh0KCk7XG59XG4iXX0=
|
|
@@ -173,4 +173,4 @@ export function refuseForAssurance(options, decoded, req, res) {
|
|
|
173
173
|
}
|
|
174
174
|
return false;
|
|
175
175
|
}
|
|
176
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzdXJhbmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21pZGRsZXdhcmUvYXNzdXJhbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFRdEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBa0MsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzlELE9BQU8sRUFBd0MsTUFBTSxvQkFBb0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxNQUFtRTtJQUNsRyxPQUFPLE1BQU0sRUFBRSxhQUFhLEtBQUssTUFBTSxJQUFJLE1BQU0sQ0FBQyxTQUFTLEtBQUssUUFBUSxDQUFDO0FBQzNFLENBQUM7QUF1QkQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsT0FBeUI7SUFDeEQsT0FBTyxZQUFZLENBQUMsQ0FBQyxHQUFZLEVBQUUsR0FBYSxFQUFFLElBQWtCLEVBQVEsRUFBRTtRQUM1RSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2QsT0FBTyxTQUFTLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxZQUFZLEVBQUUseUJBQXlCLEVBQUUsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3BHLENBQUM7UUFDRCw2RUFBNkU7UUFDN0UsNkVBQTZFO1FBQzdF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Q25FLFNBQVMsQ0FBQyxlQUFlLENBQzFCLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFNlc3Npb24tYXNzdXJhbmNlIGdhdGVzOiBtaW5pbXVtIEFBTCAvIG1heCBhdXRoIGFnZSBmb3IgYSBwZXJzb24ncyBzZXNzaW9uLFxuICogYW5kIHRoZSBvcmctYWRtaW4gTUZBIHBvbGljeS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFJlcXVlc3QsIFJlc3BvbnNlLCBOZXh0RnVuY3Rpb24gfSBmcm9tICdleHByZXNzJztcbmltcG9ydCB7IHJlY29yZEF1dGh6RGVuaWFsIH0gZnJvbSAnLi9wZXJtaXNzaW9uLWdhdGVzLmpzJztcbmltcG9ydCB7IHRhZ1JvdXRlR2F0ZSwgdHlwZSBPcmdBZG1pbkFzc3VyYW5jZU1hY2hpbmVzIH0gZnJvbSAnLi9yb3V0ZS10YWJsZS5qcyc7XG5pbXBvcnQgeyBIdHRwU3RhdHVzIH0gZnJvbSAnLi4vY29uc3RhbnRzL2h0dHAtc3RhdHVzLmpzJztcbmltcG9ydCB7IHNlcnZpY2VJZGVudGl0eSB9IGZyb20gJy4uL3NlcnZpY2VzL3NlcnZpY2Uta2V5cy5qcyc7XG5pbXBvcnQgeyB0eXBlIEFzc3VyYW5jZUxldmVsLCB0eXBlIEp3dFBheWxvYWQgfSBmcm9tICcuLi90eXBlcy9jb21tb24uanMnO1xuaW1wb3J0IHsgRXJyb3JDb2RlIH0gZnJvbSAnLi4vdHlwZXMvZXJyb3ItY29kZXMuanMnO1xuaW1wb3J0IHsgZW1pdENvdW50ZXIgfSBmcm9tICcuLi91dGlscy9tZXRyaWMtZW1pdHRlci5qcyc7XG5pbXBvcnQgeyBzZW5kRXJyb3IgfSBmcm9tICcuLi91dGlscy9yZXNwb25zZS5qcyc7XG4vKipcbiAqIFdoZXRoZXIgYSBzZXQgb2YgdmVyaWZpZWQgY2xhaW1zIHNwZWFrcyBmb3IgYSBQRVJTT04ncyBvd24gc2Vzc2lvbiDigJQgdGhlIG9ubHlcbiAqIGtpbmQgb2YgY3JlZGVudGlhbCBhbiBhc3N1cmFuY2UgbGV2ZWwgY2FuIGJlIGFzc2VydGVkIGFib3V0LlxuICpcbiAqIEV4Y2x1ZGVzIGFsbCB0aHJlZSBtYWNoaW5lIHNoYXBlczogYW4gaW50ZXJuYWwgc2VydmljZSBwcmluY2lwYWwsIGFuIG9yZ1xuICogc2VydmljZSBhY2NvdW50LCBhbmQgYW55IGV4Y2hhbmdlZCBhY2Nlc3Mga2V5IChgdG9rZW5fdXNlOiAnYXBpX2tleSdgLCBpLmUuIGFcbiAqIFBBVCBvciBhIHNlcnZpY2UtYWNjb3VudCBrZXkpLCBlYWNoIG9mIHdoaWNoIGF1dGhlbnRpY2F0ZXMgYSBwcm9ncmFtIGhvbGRpbmcgYVxuICogc2VjcmV0IHJhdGhlciB0aGFuIGEgcGVyc29uIHByZXNlbnRpbmcgZmFjdG9ycy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzSHVtYW5QcmluY2lwYWwoY2xhaW1zOiBQaWNrPEp3dFBheWxvYWQsICdwcmluY2lwYWxUeXBlJyB8ICd0b2tlbl91c2UnPiB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICByZXR1cm4gY2xhaW1zPy5wcmluY2lwYWxUeXBlID09PSAndXNlcicgJiYgY2xhaW1zLnRva2VuX3VzZSA9PT0gJ2FjY2Vzcyc7XG59XG5cbi8qKiBXaGF0IGFuIGFzc3VyYW5jZSBnYXRlIGRlbWFuZHMuICovXG5leHBvcnQgaW50ZXJmYWNlIEFzc3VyYW5jZU9wdGlvbnMge1xuICBtaW5Bc3N1cmFuY2U6IEFzc3VyYW5jZUxldmVsO1xuICBtYXhBZ2U/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBBIE5BTUVEIGNhcnZlLW91dCBmb3IgcmVxdWVzdHMgdGhhdCBjYW5ub3QgcG9zc2libHkgc2F0aXNmeSB0aGUgbGV2ZWwgYW5kXG4gICAqIG11c3Qgc3RpbGwgYmUgc2VydmVkIOKAlCB0b2RheSBvbmx5IG9uZSBleGlzdHM6IHRoZSBib290c3RyYXAtYWRtaW5pc3RyYXRvclxuICAgKiB3aW5kb3csIHdoZXJlIGEgZnJlc2ggaW5zdGFsbCdzIHNpbmdsZSBhZG1pbiBoYXMgbm8gZmFjdG9yIHlldCBhbmQgdGhlIHNldHVwXG4gICAqIGNhbGxzIHRoYXQgY3JlYXRlIHRoZSBpbnN0YWxsJ3MgYXV0b21hdGlvbiBjcmVkZW50aWFsIHdvdWxkIG90aGVyd2lzZSBiZVxuICAgKiB1bnJlYWNoYWJsZSAoc2VlIHBsYXRmb3JtJ3MgYGlzQm9vdHN0cmFwU2V0dXBSZXF1ZXN0YCkuXG4gICAqXG4gICAqIEl0IGlzIGRlbGliZXJhdGVseSBzaGFwZWQgYXMgYHsgcmVhc29uLCB3aGVuIH1gIHJhdGhlciB0aGFuIGEgYmFyZSBwcmVkaWNhdGU6XG4gICAqIHRoZSByZWFzb24gaXMgY291bnRlZCAoYGFzc3VyYW5jZV9leGVtcHRlZF90b3RhbHtyZWFzb259YCkgYW5kIHB1Ymxpc2hlZCBvblxuICAgKiB0aGUgcm91dGUgdGFibGUgYXMgYGFzc3VyYW5jZUV4ZW1wdGAsIHNvIGFuIGV4ZW1wdGlvbiBjYW5ub3QgYmUgYWRkZWQgd2l0aG91dFxuICAgKiBzaG93aW5nIHVwIGluIHRoZSBnZW5lcmF0ZWQgdGFibGUgYSByZXZpZXdlciByZWFkcy4gVGhlIGdhdGUga2VlcHMgaXRzXG4gICAqIGBtaW5Bc3N1cmFuY2VgIHRhZyBlaXRoZXIgd2F5IOKAlCB0aGUgcm91dGUgc3RpbGwgcmVxdWlyZXMgTUZBLWdyYWRlIGZvclxuICAgKiBldmVyeW9uZSB0aGUgY2FydmUtb3V0IGRvZXMgbm90IG5hbWUuXG4gICAqL1xuICBleGVtcHQ/OiB7IHJlYXNvbjogc3RyaW5nOyB3aGVuOiAocmVxOiBSZXF1ZXN0KSA9PiBib29sZWFuIH07XG59XG5cbi8qKlxuICogU3RhbmRhbG9uZSBhc3N1cmFuY2UgZ2F0ZSwgZm9yIGEgc2VydmljZSB3aG9zZSBvd24gYHJlcXVpcmVBdXRoYCBpcyBub3RcbiAqIGFwaS1jb3JlJ3MgKHBsYXRmb3JtJ3MgaXMgaXRzIG93biwgYmVjYXVzZSBpdCByZWFkcyBNb25nbykuIENvbXBvc2UgaXQgQUZURVJcbiAqIGF1dGhlbnRpY2F0aW9uOiBgcm91dGVyLmdldCgnL3gnLCByZXF1aXJlQXV0aCwgcmVxdWlyZUFzc3VyYW5jZSh7IG1pbkFzc3VyYW5jZTogMiB9KSwgaClgLlxuICpcbiAqIElkZW50aWNhbCBydWxlcyBhbmQgaWRlbnRpY2FsIHJlZnVzYWxzIHRvIGByZXF1aXJlQXV0aCh7IG1pbkFzc3VyYW5jZSB9KWAg4oCUXG4gKiB0aGF0IG9wdGlvbiBzaW1wbHkgY2FsbHMgdGhlIHNhbWUgY2hlY2sgaW5saW5lLCBzbyB0aGVyZSBpcyBvbmUgaW1wbGVtZW50YXRpb25cbiAqIG9mIFwiaXMgdGhpcyBzZXNzaW9uIE1GQS1ncmFkZVwiIGluIHRoZSBjb2RlYmFzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlcXVpcmVBc3N1cmFuY2Uob3B0aW9uczogQXNzdXJhbmNlT3B0aW9ucykge1xuICByZXR1cm4gdGFnUm91dGVHYXRlKChyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UsIG5leHQ6IE5leHRGdW5jdGlvbik6IHZvaWQgPT4ge1xuICAgIGlmICghcmVxLnVzZXIpIHtcbiAgICAgIHJldHVybiBzZW5kRXJyb3IocmVzLCBIdHRwU3RhdHVzLlVOQVVUSE9SSVpFRCwgJ0F1dGhlbnRpY2F0aW9uIHJlcXVpcmVkJywgRXJyb3JDb2RlLlVOQVVUSE9SSVpFRCk7XG4gICAgfVxuICAgIC8vIEEgbmFtZWQgZXhlbXB0aW9uIGlzIGNoZWNrZWQgQUZURVIgYXV0aGVudGljYXRpb24gYW5kIGJlZm9yZSB0aGUgbGV2ZWwsIHNvXG4gICAgLy8gaXQgY2FuIG5ldmVyIGFkbWl0IGFuIHVuYXV0aGVudGljYXRlZCBjYWxsZXIsIGFuZCBpdCBpcyBjb3VudGVkIGV2ZXJ5IHRpbWVcbiAgICAvLyBpdCBmaXJlcyDigJQgYW4gZXhlbXB0aW9uIG5vYm9keSBjYW4gc2VlIGlzIGhvdyBhIGdhdGUgcXVpZXRseSBzdG9wcyBiZWluZyBvbmUuXG4gICAgaWYgKG9wdGlvbnMuZXhlbXB0Py53aGVuKHJlcSkgPT09IHRydWUpIHtcbiAgICAgIGVtaXRDb3VudGVyKCdhc3N1cmFuY2VfZXhlbXB0ZWRfdG90YWwnLCB7IHNlcnZpY2U6IHNlcnZpY2VJZGVudGl0eSgpLCByZWFzb246IG9wdGlvbnMuZXhlbXB0LnJlYXNvbiB9KTtcbiAgICAgIHJldHVybiBuZXh0KCk7XG4gICAgfVxuICAgIGlmIChyZWZ1c2VGb3JBc3N1cmFuY2Uob3B0aW9ucywgcmVxLnVzZXIgYXMgSnd0UGF5bG9hZCwgcmVxLCByZXMpKSByZXR1cm47XG4gICAgbmV4dCgpO1xuICB9LCB7XG4gICAga2luZDogJ2Fzc3VyYW5jZScsXG4gICAgbWluQXNzdXJhbmNlOiBvcHRpb25zLm1pbkFzc3VyYW5jZSxcbiAgICAuLi4ob3B0aW9ucy5tYXhBZ2UgIT09IHVuZGVmaW5lZCA/IHsgbWF4QWdlOiBvcHRpb25zLm1heEFnZSB9IDoge30pLFxuICAgIC4uLihvcHRpb25zLmV4ZW1wdCA/IHsgZXhlbXB0OiBvcHRpb25zLmV4ZW1wdC5yZWFzb24gfSA6IHt9KSxcbiAgfSk7XG59XG5cbi8qKlxuICogSGFuZGxlci1sZXZlbCB0d2luIG9mIHtAbGluayByZXF1aXJlQXNzdXJhbmNlfSwgZm9yIGEgcm91dGUgd2hlcmUgb25seSBTT01FXG4gKiByZXF1ZXN0cyBtdXN0IGJlIE1GQS1ncmFkZSDigJQgZS5nLiBhIHBvbGljeSByb3V0ZSBvbiB3aGljaCBUSUdIVEVOSU5HIGEgc2V0dGluZ1xuICogc3RheXMgb3BlbiB0byBhIHNpbmdsZS1mYWN0b3Igc2Vzc2lvbiAoc28gYW4gYWRtaW4gd2l0aG91dCBNRkEgY2FuIGFkb3B0IGl0KVxuICogYnV0IExPT1NFTklORyBpdCBkb2VzIG5vdC4gU2FtZSBydWxlcyBhbmQgdGhlIHNhbWUgdGhyZWUgcmVmdXNhbHMuIFJldHVybnNcbiAqIHRydWUgd2hlbiB0aGUgcmVxdWVzdCB3YXMgUkVGVVNFRCAoYSByZXNwb25zZSBoYXMgYmVlbiBzZW50KS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZnVzZVdlYWtTZXNzaW9uKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSwgb3B0aW9uczogQXNzdXJhbmNlT3B0aW9ucyk6IGJvb2xlYW4ge1xuICBpZiAoIXJlcS51c2VyKSB7XG4gICAgc2VuZEVycm9yKHJlcywgSHR0cFN0YXR1cy5VTkFVVEhPUklaRUQsICdBdXRoZW50aWNhdGlvbiByZXF1aXJlZCcsIEVycm9yQ29kZS5VTkFVVEhPUklaRUQpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiByZWZ1c2VGb3JBc3N1cmFuY2Uob3B0aW9ucywgcmVxLnVzZXIgYXMgSnd0UGF5bG9hZCwgcmVxLCByZXMpO1xufVxuXG4vKiogV2hhdCB7QGxpbmsgcmVxdWlyZU9yZ0FkbWluQXNzdXJhbmNlfSBkZW1hbmRzIG9mIGEgcm91dGUuICovXG5leHBvcnQgaW50ZXJmYWNlIE9yZ0FkbWluQXNzdXJhbmNlT3B0aW9ucyB7XG4gIC8qKiBXaGF0IGEgbWFjaGluZSBjcmVkZW50aWFsIChQQVQsIHNlcnZpY2UgYWNjb3VudCwgbWFjaGluZSBzZXNzaW9uKSBtZWV0cyBvblxuICAgKiAgdGhpcyByb3V0ZSB3aGlsZSB0aGUgcG9saWN5IGlzIG9uIOKAlCBzZWUge0BsaW5rIE9yZ0FkbWluQXNzdXJhbmNlTWFjaGluZXN9LlxuICAgKiAgUmVxdWlyZWQsIHNvIGV2ZXJ5IHJvdXRlIHN0YXRlcyBpdHMgZGVjaXNpb24gcmF0aGVyIHRoYW4gaW5oZXJpdGluZyBvbmUuICovXG4gIG1hY2hpbmVzOiBPcmdBZG1pbkFzc3VyYW5jZU1hY2hpbmVzO1xufVxuXG4vKiogYGRldGFpbHMucmVhc29uYCBvbiBhIHJlZnVzYWwgYnkge0BsaW5rIHJlcXVpcmVPcmdBZG1pbkFzc3VyYW5jZX0sIHNvIHRoZSBVSVxuICogIGNhbiBzYXkgaXQgaXMgdGhlIE9SRydzIHBvbGljeSBhc2tpbmcsIG5vdCB0aGUgcm91dGUncyBvd24gcmVxdWlyZW1lbnQuICovXG5leHBvcnQgY29uc3QgT1JHX0FETUlOX01GQV9SRUFTT04gPSAnb3JnX2FkbWluX3BvbGljeSc7XG5cbi8qKlxuICogVGhlIHJlZnVzYWwge0BsaW5rIHJlcXVpcmVPcmdBZG1pbkFzc3VyYW5jZX0gd291bGQgc2VuZCBmb3IgdGhlc2UgY2xhaW1zLCBvclxuICogYHVuZGVmaW5lZGAgd2hlbiB0aGUgcmVxdWVzdCBtYXkgcHJvY2VlZC4gRXhwb3J0ZWQgc28gYSBoYW5kbGVyIHdob3NlIHBvbGljeVxuICogYXBwbGllcyB0byBvbmx5IFBBUlQgb2YgYSByb3V0ZSAoZS5nLiBgZ2VuZXJhdGUtdG9rZW5gLCB3aGVyZSBvcGVuaW5nIGEgbmV3XG4gKiBtYWNoaW5lIGNyZWRlbnRpYWwgaXMgZ2F0ZWQgYnV0IHJlbmV3aW5nIGFuIGV4aXN0aW5nIG9uZSBpcyBub3QpIGFwcGxpZXMgdGhlXG4gKiBleGFjdCBzYW1lIHJ1bGUgcmF0aGVyIHRoYW4gYSBjb3B5IG9mIGl0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gb3JnQWRtaW5Bc3N1cmFuY2VSZWZ1c2FsKFxuICBjbGFpbXM6IEp3dFBheWxvYWQgfCB1bmRlZmluZWQsXG4gIG9wdGlvbnM6IE9yZ0FkbWluQXNzdXJhbmNlT3B0aW9ucyxcbik6IHsgc3RhdHVzOiBudW1iZXI7IGNvZGU6IEVycm9yQ29kZTsgbWVzc2FnZTogc3RyaW5nOyByZWFzb246ICdtYWNoaW5lX3ByaW5jaXBhbCcgfCAnd2Vha19zZXNzaW9uJyB9IHwgdW5kZWZpbmVkIHtcbiAgLy8gVGhlIGNsYWltIGlzIG9ubHkgZXZlciBgMmAsIGFuZCBvbmx5IHdoZW4gdGhlIHBvbGljeSBpcyBvbiAoc2VlIEp3dFBheWxvYWQpLlxuICBpZiAoIWNsYWltcyB8fCBjbGFpbXMub3JnX2FkbWluX2FhbCAhPT0gMikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgaWYgKCFpc0h1bWFuUHJpbmNpcGFsKGNsYWltcykpIHtcbiAgICBpZiAob3B0aW9ucy5tYWNoaW5lcyA9PT0gJ2FsbG93JykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhdHVzOiBIdHRwU3RhdHVzLkZPUkJJRERFTixcbiAgICAgIGNvZGU6IEVycm9yQ29kZS5IVU1BTl9TRVNTSU9OX1JFUVVJUkVELFxuICAgICAgcmVhc29uOiAnbWFjaGluZV9wcmluY2lwYWwnLFxuICAgICAgbWVzc2FnZTogJ1lvdXIgb3JnYW5pemF0aW9uIHJlcXVpcmVzIHR3by1mYWN0b3IgYXV0aGVudGljYXRpb24gZm9yIHRoaXMgYWN0aW9uIOKAlCBBUEkga2V5cyBhbmQgc2VydmljZSBhY2NvdW50cyBjYW5ub3QgcGVyZm9ybSBpdCcsXG4gICAgfTtcbiAgfVxuICBpZiAoKGNsYWltcy5hYWwgPz8gMSkgPj0gMikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgcmV0dXJuIHtcbiAgICBzdGF0dXM6IEh0dHBTdGF0dXMuVU5BVVRIT1JJWkVELFxuICAgIGNvZGU6IEVycm9yQ29kZS5NRkFfUkVRVUlSRUQsXG4gICAgcmVhc29uOiAnd2Vha19zZXNzaW9uJyxcbiAgICBtZXNzYWdlOiAnWW91ciBvcmdhbml6YXRpb24gcmVxdWlyZXMgdHdvLWZhY3RvciBhdXRoZW50aWNhdGlvbiBmb3IgYWRtaW5pc3RyYXRpdmUgYWN0aW9ucyDigJQgc2lnbiBpbiBhZ2FpbiB3aXRoIGEgcGFzc2tleSBvciBhbiBhdXRoZW50aWNhdG9yIGNvZGUnLFxuICB9O1xufVxuXG4vKipcbiAqIEFwcGx5IHtAbGluayBvcmdBZG1pbkFzc3VyYW5jZVJlZnVzYWx9IGFuZCBzZW5kIGl0cyByZWZ1c2FsLiBSZXR1cm5zIHRydWUgd2hlblxuICogdGhlIHJlcXVlc3Qgd2FzIFJFRlVTRUQgKGEgcmVzcG9uc2UgaGFzIGJlZW4gc2VudCkuIEZvciBoYW5kbGVyLWxldmVsIHVzZTtcbiAqIHJvdXRlcyB1c2Uge0BsaW5rIHJlcXVpcmVPcmdBZG1pbkFzc3VyYW5jZX0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWZ1c2VGb3JPcmdBZG1pbkFzc3VyYW5jZShyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UsIG9wdGlvbnM6IE9yZ0FkbWluQXNzdXJhbmNlT3B0aW9ucyk6IGJvb2xlYW4ge1xuICBjb25zdCByZWZ1c2FsID0gb3JnQWRtaW5Bc3N1cmFuY2VSZWZ1c2FsKHJlcS51c2VyIGFzIEp3dFBheWxvYWQgfCB1bmRlZmluZWQsIG9wdGlvbnMpO1xuICBpZiAoIXJlZnVzYWwpIHJldHVybiBmYWxzZTtcbiAgZW1pdENvdW50ZXIoJ21mYV9lbmZvcmNlbWVudF9yZWZ1c2VkX3RvdGFsJywgeyBzZXJ2aWNlOiBzZXJ2aWNlSWRlbnRpdHkoKSwgcmVhc29uOiBgb3JnX2FkbWluXyR7cmVmdXNhbC5yZWFzb259YCB9KTtcbiAgcmVjb3JkQXV0aHpEZW5pYWwocmVxLCAnYXNzdXJhbmNlOm9yZy1hZG1pbicpO1xuICBzZW5kRXJyb3IocmVzLCByZWZ1c2FsLnN0YXR1cywgcmVmdXNhbC5tZXNzYWdlLCByZWZ1c2FsLmNvZGUsIHsgcmVhc29uOiBPUkdfQURNSU5fTUZBX1JFQVNPTiB9KTtcbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKlxuICogVGhlIG9yZyBwb2xpY3kgXCJhZG1pbmlzdHJhdGl2ZSBhY3Rpb25zIHJlcXVpcmUgTUZBXCIgKGBhZG1pbkFjdGlvbnNSZXF1aXJlTWZhYCkuXG4gKlxuICogVW5saWtlIHtAbGluayByZXF1aXJlQXNzdXJhbmNlfSwgdGhlIHJlcXVpcmVtZW50IGlzIHRoZSBPUkcncyBjaG9pY2UsIG5vdCB0aGVcbiAqIHJvdXRlJ3M6IHRoZSBnYXRlIHJlYWRzIHRoZSBgb3JnX2FkbWluX2FhbGAgY2xhaW0sIHNldCBhdCB0b2tlbiBpc3N1ZSBmcm9tIHRoZVxuICogYWN0aXZlIG9yZydzIHBvbGljeSAoc3RyaWN0ZXN0IGFjcm9zcyBpdHMgYW5jZXN0b3JzKSwgc28gYSBzZXJ2aWNlIHRoYXQgY2Fubm90XG4gKiByZWFkIHRoZSBvcmcgZG9jdW1lbnQgc3RpbGwgZW5mb3JjZXMgaXQuIFdpdGggdGhlIHBvbGljeSBvZmYgdGhlIGdhdGUgaXMgYVxuICogbm8tb3A7IHdpdGggaXQgb24sIGEgc2luZ2xlLWZhY3RvciBzZXNzaW9uIGlzIHJlZnVzZWQgNDAxIGBNRkFfUkVRVUlSRURgXG4gKiAod2l0aCBgZGV0YWlscy5yZWFzb246ICdvcmdfYWRtaW5fcG9saWN5J2ApIOKAlCB0aGUgc2FtZSBjb2RlIHRoZSBjbGllbnQgYWxyZWFkeVxuICogdHVybnMgaW50byBcImVucm9sIGEgZmFjdG9yIC8gc2lnbiBpbiB3aXRoIGl0XCIsIG5ldmVyIGEgc2lnbi1vdXQuXG4gKlxuICogYG1hY2hpbmVzYCBpcyBkZWNpZGVkIHBlciByb3V0ZSAoc2VlIHtAbGluayBPcmdBZG1pbkFzc3VyYW5jZU1hY2hpbmVzfSk6IHRoZVxuICogcG9saWN5IGlzIGFib3V0IGhvdyBzdHJvbmdseSBhIFBFUlNPTidzIHNlc3Npb24gd2FzIG9wZW5lZCwgc28gYXV0b21hdGlvbiB0aGF0XG4gKiBsZWdpdGltYXRlbHkgZHJpdmVzIGEgcm91dGUga2VlcHMgd29ya2luZyAoYGFsbG93YCksIHdoaWxlIGEgcm91dGUgdGhhdCBtaW50c1xuICogYSBmdXJ0aGVyIGNyZWRlbnRpYWwgcmVmdXNlcyBtYWNoaW5lcyBvdXRyaWdodCAoYHJlZnVzZWAsIDQwM1xuICogYEhVTUFOX1NFU1NJT05fUkVRVUlSRURgIOKAlCB0aGUgc2FtZSByZWZ1c2FsIGByZXF1aXJlQXNzdXJhbmNlYCBnaXZlcyB0aGVtKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlcXVpcmVPcmdBZG1pbkFzc3VyYW5jZShvcHRpb25zOiBPcmdBZG1pbkFzc3VyYW5jZU9wdGlvbnMpIHtcbiAgcmV0dXJuIHRhZ1JvdXRlR2F0ZSgocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlLCBuZXh0OiBOZXh0RnVuY3Rpb24pOiB2b2lkID0+IHtcbiAgICBpZiAoIXJlcS51c2VyKSB7XG4gICAgICByZXR1cm4gc2VuZEVycm9yKHJlcywgSHR0cFN0YXR1cy5VTkFVVEhPUklaRUQsICdBdXRoZW50aWNhdGlvbiByZXF1aXJlZCcsIEVycm9yQ29kZS5VTkFVVEhPUklaRUQpO1xuICAgIH1cbiAgICBpZiAocmVmdXNlRm9yT3JnQWRtaW5Bc3N1cmFuY2UocmVxLCByZXMsIG9wdGlvbnMpKSByZXR1cm47XG4gICAgbmV4dCgpO1xuICB9LCB7IGtpbmQ6ICdvcmdBZG1pbkFzc3VyYW5jZScsIG1hY2hpbmVzOiBvcHRpb25zLm1hY2hpbmVzIH0pO1xufVxuXG4vKipcbiAqIEVuZm9yY2UgYG1pbkFzc3VyYW5jZWAgLyBgbWF4QWdlYCBvbiBhIHZlcmlmaWVkIHRva2VuLiBSZXR1cm5zIHRydWUgd2hlbiB0aGVcbiAqIHJlcXVlc3Qgd2FzIFJFRlVTRUQgKGEgcmVzcG9uc2UgaGFzIGJlZW4gc2VudCkuXG4gKlxuICogVGhyZWUgZGlzdGluY3QgcmVmdXNhbHMsIGJlY2F1c2UgdGhlIGNsaWVudCdzIG5leHQgbW92ZSBkaWZmZXJzIGZvciBlYWNoOlxuICogYSBtYWNoaW5lIG11c3Qgc3RvcCAoNDAzKSwgYSB3ZWFrIHNlc3Npb24gbXVzdCBnYWluIGEgZmFjdG9yICg0MDFcbiAqIGBNRkFfUkVRVUlSRURgIOKGkiBlbnJvbG1lbnQsIG5ldmVyIGEgc2lnbi1vdXQpLCBhbmQgYSBzdGFsZSBvbmUgbXVzdCBzaW1wbHlcbiAqIGF1dGhlbnRpY2F0ZSBhZ2FpbiAoNDAxIGBSRUFVVEhfUkVRVUlSRURgKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZnVzZUZvckFzc3VyYW5jZShcbiAgb3B0aW9uczogQXNzdXJhbmNlT3B0aW9ucyxcbiAgZGVjb2RlZDogSnd0UGF5bG9hZCxcbiAgcmVxOiBSZXF1ZXN0LFxuICByZXM6IFJlc3BvbnNlLFxuKTogYm9vbGVhbiB7XG4gIGNvbnN0IG1pbkFzc3VyYW5jZSA9IG9wdGlvbnMubWluQXNzdXJhbmNlO1xuICBjb25zdCByZWZ1c2UgPSAocmVhc29uOiBzdHJpbmcsIHN0YXR1czogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmcsIGNvZGU6IEVycm9yQ29kZSk6IHRydWUgPT4ge1xuICAgIGVtaXRDb3VudGVyKCdtZmFfZW5mb3JjZW1lbnRfcmVmdXNlZF90b3RhbCcsIHsgc2VydmljZTogc2VydmljZUlkZW50aXR5KCksIHJlYXNvbiB9KTtcbiAgICByZWNvcmRBdXRoekRlbmlhbChyZXEsIGBhc3N1cmFuY2U6JHttaW5Bc3N1cmFuY2V9YCk7XG4gICAgc2VuZEVycm9yKHJlcywgc3RhdHVzLCBtZXNzYWdlLCBjb2RlKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcblxuICBpZiAoIWlzSHVtYW5QcmluY2lwYWwoZGVjb2RlZCkpIHtcbiAgICByZXR1cm4gcmVmdXNlKFxuICAgICAgJ21hY2hpbmVfcHJpbmNpcGFsJywgSHR0cFN0YXR1cy5GT1JCSURERU4sXG4gICAgICAnVGhpcyBhY3Rpb24gcmVxdWlyZXMgYSBwZXJzb24gc2lnbmVkIGluIHdpdGggdHdvLWZhY3RvciBhdXRoZW50aWNhdGlvbiDigJQgQVBJIGtleXMgYW5kIHNlcnZpY2UgYWNjb3VudHMgY2Fubm90IHBlcmZvcm0gaXQnLFxuICAgICAgRXJyb3JDb2RlLkhVTUFOX1NFU1NJT05fUkVRVUlSRUQsXG4gICAgKTtcbiAgfVxuICBpZiAoKGRlY29kZWQuYWFsID8/IDEpIDwgbWluQXNzdXJhbmNlKSB7XG4gICAgcmV0dXJuIHJlZnVzZShcbiAgICAgICd3ZWFrX3Nlc3Npb24nLCBIdHRwU3RhdHVzLlVOQVVUSE9SSVpFRCxcbiAgICAgICdUaGlzIGFjdGlvbiByZXF1aXJlcyB0d28tZmFjdG9yIGF1dGhlbnRpY2F0aW9uIOKAlCBzaWduIGluIGFnYWluIHdpdGggYSBwYXNza2V5IG9yIGFuIGF1dGhlbnRpY2F0b3IgY29kZScsXG4gICAgICBFcnJvckNvZGUuTUZBX1JFUVVJUkVELFxuICAgICk7XG4gIH1cbiAgaWYgKG9wdGlvbnMubWF4QWdlICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBhdXRoVGltZSA9IGRlY29kZWQuYXV0aF90aW1lO1xuICAgIC8vIE5vIGBhdXRoX3RpbWVgIGlzIG5vdCBcInJlY2VudCBlbm91Z2ggYnkgZGVmYXVsdFwiIOKAlCBgaGFzVmFsaWRJZGVudGl0eUNsYWltc2BcbiAgICAvLyBhbHJlYWR5IHJlcXVpcmVzIGl0IG9uIGEgdXNlciB0b2tlbiwgc28gYW4gYWJzZW50IG9uZSBtZWFucyBhIHRva2VuIHRoaXNcbiAgICAvLyBnYXRlIGNhbm5vdCByZWFzb24gYWJvdXQuIEZhaWwgY2xvc2VkLlxuICAgIGlmICh0eXBlb2YgYXV0aFRpbWUgIT09ICdudW1iZXInIHx8IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApIC0gYXV0aFRpbWUgPiBvcHRpb25zLm1heEFnZSkge1xuICAgICAgcmV0dXJuIHJlZnVzZShcbiAgICAgICAgJ3N0YWxlX3Nlc3Npb24nLCBIdHRwU3RhdHVzLlVOQVVUSE9SSVpFRCxcbiAgICAgICAgJ1RoaXMgYWN0aW9uIHJlcXVpcmVzIGEgcmVjZW50IHNpZ24taW4g4oCUIHBsZWFzZSBhdXRoZW50aWNhdGUgYWdhaW4nLFxuICAgICAgICBFcnJvckNvZGUuUkVBVVRIX1JFUVVJUkVELFxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4iXX0=
|
|
176
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzdXJhbmNlLmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWlkZGxld2FyZS9hc3N1cmFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQVF0QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsWUFBWSxFQUFrQyxNQUFNLGtCQUFrQixDQUFDO0FBQ2hGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDOUQsT0FBTyxFQUF3QyxNQUFNLG9CQUFvQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFDLE1BQW1FO0lBQ2xHLE9BQU8sTUFBTSxFQUFFLGFBQWEsS0FBSyxNQUFNLElBQUksTUFBTSxDQUFDLFNBQVMsS0FBSyxRQUFRLENBQUM7QUFDM0UsQ0FBQztBQXVCRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxPQUF5QjtJQUN4RCxPQUFPLFlBQVksQ0FBQyxDQUFDLEdBQVksRUFBRSxHQUFhLEVBQUUsSUFBa0IsRUFBUSxFQUFFO1FBQzVFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDZCxPQUFPLFNBQVMsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLFlBQVksRUFBRSx5QkFBeUIsRUFBRSxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDcEcsQ0FBQztRQUNELDZFQUE2RTtRQUM3RSw2RUFBNkU7UUFDN0UsZ0ZBQWdGO1FBQ2hGLElB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QWUsQ0FDMUIsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbi8qKlxuICogU2Vzc2lvbi1hc3N1cmFuY2UgZ2F0ZXM6IG1pbmltdW0gQUFMIC8gbWF4IGF1dGggYWdlIGZvciBhIHBlcnNvbidzIHNlc3Npb24sXG4gKiBhbmQgdGhlIG9yZy1hZG1pbiBNRkEgcG9saWN5LlxuICovXG5cbmltcG9ydCB0eXBlIHsgUmVxdWVzdCwgUmVzcG9uc2UsIE5leHRGdW5jdGlvbiB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IHsgcmVjb3JkQXV0aHpEZW5pYWwgfSBmcm9tICcuL3Blcm1pc3Npb24tZ2F0ZXMuanMnO1xuaW1wb3J0IHsgdGFnUm91dGVHYXRlLCB0eXBlIE9yZ0FkbWluQXNzdXJhbmNlTWFjaGluZXMgfSBmcm9tICcuL3JvdXRlLXRhYmxlLmpzJztcbmltcG9ydCB7IEh0dHBTdGF0dXMgfSBmcm9tICcuLi9jb25zdGFudHMvaHR0cC1zdGF0dXMuanMnO1xuaW1wb3J0IHsgc2VydmljZUlkZW50aXR5IH0gZnJvbSAnLi4vc2VydmljZXMvc2VydmljZS1rZXlzLmpzJztcbmltcG9ydCB7IHR5cGUgQXNzdXJhbmNlTGV2ZWwsIHR5cGUgSnd0UGF5bG9hZCB9IGZyb20gJy4uL3R5cGVzL2NvbW1vbi5qcyc7XG5pbXBvcnQgeyBFcnJvckNvZGUgfSBmcm9tICcuLi90eXBlcy9lcnJvci1jb2Rlcy5qcyc7XG5pbXBvcnQgeyBlbWl0Q291bnRlciB9IGZyb20gJy4uL3V0aWxzL21ldHJpYy1lbWl0dGVyLmpzJztcbmltcG9ydCB7IHNlbmRFcnJvciB9IGZyb20gJy4uL3V0aWxzL3Jlc3BvbnNlLmpzJztcbi8qKlxuICogV2hldGhlciBhIHNldCBvZiB2ZXJpZmllZCBjbGFpbXMgc3BlYWtzIGZvciBhIFBFUlNPTidzIG93biBzZXNzaW9uIOKAlCB0aGUgb25seVxuICoga2luZCBvZiBjcmVkZW50aWFsIGFuIGFzc3VyYW5jZSBsZXZlbCBjYW4gYmUgYXNzZXJ0ZWQgYWJvdXQuXG4gKlxuICogRXhjbHVkZXMgYWxsIHRocmVlIG1hY2hpbmUgc2hhcGVzOiBhbiBpbnRlcm5hbCBzZXJ2aWNlIHByaW5jaXBhbCwgYW4gb3JnXG4gKiBzZXJ2aWNlIGFjY291bnQsIGFuZCBhbnkgZXhjaGFuZ2VkIGFjY2VzcyBrZXkgKGB0b2tlbl91c2U6ICdhcGlfa2V5J2AsIGkuZS4gYVxuICogUEFUIG9yIGEgc2VydmljZS1hY2NvdW50IGtleSksIGVhY2ggb2Ygd2hpY2ggYXV0aGVudGljYXRlcyBhIHByb2dyYW0gaG9sZGluZyBhXG4gKiBzZWNyZXQgcmF0aGVyIHRoYW4gYSBwZXJzb24gcHJlc2VudGluZyBmYWN0b3JzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNIdW1hblByaW5jaXBhbChjbGFpbXM6IFBpY2s8Snd0UGF5bG9hZCwgJ3ByaW5jaXBhbFR5cGUnIHwgJ3Rva2VuX3VzZSc+IHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gIHJldHVybiBjbGFpbXM/LnByaW5jaXBhbFR5cGUgPT09ICd1c2VyJyAmJiBjbGFpbXMudG9rZW5fdXNlID09PSAnYWNjZXNzJztcbn1cblxuLyoqIFdoYXQgYW4gYXNzdXJhbmNlIGdhdGUgZGVtYW5kcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXNzdXJhbmNlT3B0aW9ucyB7XG4gIG1pbkFzc3VyYW5jZTogQXNzdXJhbmNlTGV2ZWw7XG4gIG1heEFnZT86IG51bWJlcjtcbiAgLyoqXG4gICAqIEEgTkFNRUQgY2FydmUtb3V0IGZvciByZXF1ZXN0cyB0aGF0IGNhbm5vdCBwb3NzaWJseSBzYXRpc2Z5IHRoZSBsZXZlbCBhbmRcbiAgICogbXVzdCBzdGlsbCBiZSBzZXJ2ZWQg4oCUIHRvZGF5IG9ubHkgb25lIGV4aXN0czogdGhlIGJvb3RzdHJhcC1hZG1pbmlzdHJhdG9yXG4gICAqIHdpbmRvdywgd2hlcmUgYSBmcmVzaCBpbnN0YWxsJ3Mgc2luZ2xlIGFkbWluIGhhcyBubyBmYWN0b3IgeWV0IGFuZCB0aGUgc2V0dXBcbiAgICogY2FsbHMgdGhhdCBjcmVhdGUgdGhlIGluc3RhbGwncyBhdXRvbWF0aW9uIGNyZWRlbnRpYWwgd291bGQgb3RoZXJ3aXNlIGJlXG4gICAqIHVucmVhY2hhYmxlIChzZWUgcGxhdGZvcm0ncyBgaXNCb290c3RyYXBTZXR1cFJlcXVlc3RgKS5cbiAgICpcbiAgICogSXQgaXMgZGVsaWJlcmF0ZWx5IHNoYXBlZCBhcyBgeyByZWFzb24sIHdoZW4gfWAgcmF0aGVyIHRoYW4gYSBiYXJlIHByZWRpY2F0ZTpcbiAgICogdGhlIHJlYXNvbiBpcyBjb3VudGVkIChgYXNzdXJhbmNlX2V4ZW1wdGVkX3RvdGFse3JlYXNvbn1gKSBhbmQgcHVibGlzaGVkIG9uXG4gICAqIHRoZSByb3V0ZSB0YWJsZSBhcyBgYXNzdXJhbmNlRXhlbXB0YCwgc28gYW4gZXhlbXB0aW9uIGNhbm5vdCBiZSBhZGRlZCB3aXRob3V0XG4gICAqIHNob3dpbmcgdXAgaW4gdGhlIGdlbmVyYXRlZCB0YWJsZSBhIHJldmlld2VyIHJlYWRzLiBUaGUgZ2F0ZSBrZWVwcyBpdHNcbiAgICogYG1pbkFzc3VyYW5jZWAgdGFnIGVpdGhlciB3YXkg4oCUIHRoZSByb3V0ZSBzdGlsbCByZXF1aXJlcyBNRkEtZ3JhZGUgZm9yXG4gICAqIGV2ZXJ5b25lIHRoZSBjYXJ2ZS1vdXQgZG9lcyBub3QgbmFtZS5cbiAgICovXG4gIGV4ZW1wdD86IHsgcmVhc29uOiBzdHJpbmc7IHdoZW46IChyZXE6IFJlcXVlc3QpID0+IGJvb2xlYW4gfTtcbn1cblxuLyoqXG4gKiBTdGFuZGFsb25lIGFzc3VyYW5jZSBnYXRlLCBmb3IgYSBzZXJ2aWNlIHdob3NlIG93biBgcmVxdWlyZUF1dGhgIGlzIG5vdFxuICogYXBpLWNvcmUncyAocGxhdGZvcm0ncyBpcyBpdHMgb3duLCBiZWNhdXNlIGl0IHJlYWRzIE1vbmdvKS4gQ29tcG9zZSBpdCBBRlRFUlxuICogYXV0aGVudGljYXRpb246IGByb3V0ZXIuZ2V0KCcveCcsIHJlcXVpcmVBdXRoLCByZXF1aXJlQXNzdXJhbmNlKHsgbWluQXNzdXJhbmNlOiAyIH0pLCBoKWAuXG4gKlxuICogSWRlbnRpY2FsIHJ1bGVzIGFuZCBpZGVudGljYWwgcmVmdXNhbHMgdG8gYHJlcXVpcmVBdXRoKHsgbWluQXNzdXJhbmNlIH0pYCDigJRcbiAqIHRoYXQgb3B0aW9uIHNpbXBseSBjYWxscyB0aGUgc2FtZSBjaGVjayBpbmxpbmUsIHNvIHRoZXJlIGlzIG9uZSBpbXBsZW1lbnRhdGlvblxuICogb2YgXCJpcyB0aGlzIHNlc3Npb24gTUZBLWdyYWRlXCIgaW4gdGhlIGNvZGViYXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVxdWlyZUFzc3VyYW5jZShvcHRpb25zOiBBc3N1cmFuY2VPcHRpb25zKSB7XG4gIHJldHVybiB0YWdSb3V0ZUdhdGUoKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSwgbmV4dDogTmV4dEZ1bmN0aW9uKTogdm9pZCA9PiB7XG4gICAgaWYgKCFyZXEudXNlcikge1xuICAgICAgcmV0dXJuIHNlbmRFcnJvcihyZXMsIEh0dHBTdGF0dXMuVU5BVVRIT1JJWkVELCAnQXV0aGVudGljYXRpb24gcmVxdWlyZWQnLCBFcnJvckNvZGUuVU5BVVRIT1JJWkVEKTtcbiAgICB9XG4gICAgLy8gQSBuYW1lZCBleGVtcHRpb24gaXMgY2hlY2tlZCBBRlRFUiBhdXRoZW50aWNhdGlvbiBhbmQgYmVmb3JlIHRoZSBsZXZlbCwgc29cbiAgICAvLyBpdCBjYW4gbmV2ZXIgYWRtaXQgYW4gdW5hdXRoZW50aWNhdGVkIGNhbGxlciwgYW5kIGl0IGlzIGNvdW50ZWQgZXZlcnkgdGltZVxuICAgIC8vIGl0IGZpcmVzIOKAlCBhbiBleGVtcHRpb24gbm9ib2R5IGNhbiBzZWUgaXMgaG93IGEgZ2F0ZSBxdWlldGx5IHN0b3BzIGJlaW5nIG9uZS5cbiAgICBpZiAob3B0aW9ucy5leGVtcHQ/LndoZW4ocmVxKSA9PT0gdHJ1ZSkge1xuICAgICAgZW1pdENvdW50ZXIoJ2Fzc3VyYW5jZV9leGVtcHRlZF90b3RhbCcsIHsgc2VydmljZTogc2VydmljZUlkZW50aXR5KCksIHJlYXNvbjogb3B0aW9ucy5leGVtcHQucmVhc29uIH0pO1xuICAgICAgcmV0dXJuIG5leHQoKTtcbiAgICB9XG4gICAgaWYgKHJlZnVzZUZvckFzc3VyYW5jZShvcHRpb25zLCByZXEudXNlciBhcyBKd3RQYXlsb2FkLCByZXEsIHJlcykpIHJldHVybjtcbiAgICBuZXh0KCk7XG4gIH0sIHtcbiAgICBraW5kOiAnYXNzdXJhbmNlJyxcbiAgICBtaW5Bc3N1cmFuY2U6IG9wdGlvbnMubWluQXNzdXJhbmNlLFxuICAgIC4uLihvcHRpb25zLm1heEFnZSAhPT0gdW5kZWZpbmVkID8geyBtYXhBZ2U6IG9wdGlvbnMubWF4QWdlIH0gOiB7fSksXG4gICAgLi4uKG9wdGlvbnMuZXhlbXB0ID8geyBleGVtcHQ6IG9wdGlvbnMuZXhlbXB0LnJlYXNvbiB9IDoge30pLFxuICB9KTtcbn1cblxuLyoqXG4gKiBIYW5kbGVyLWxldmVsIHR3aW4gb2Yge0BsaW5rIHJlcXVpcmVBc3N1cmFuY2V9LCBmb3IgYSByb3V0ZSB3aGVyZSBvbmx5IFNPTUVcbiAqIHJlcXVlc3RzIG11c3QgYmUgTUZBLWdyYWRlIOKAlCBlLmcuIGEgcG9saWN5IHJvdXRlIG9uIHdoaWNoIFRJR0hURU5JTkcgYSBzZXR0aW5nXG4gKiBzdGF5cyBvcGVuIHRvIGEgc2luZ2xlLWZhY3RvciBzZXNzaW9uIChzbyBhbiBhZG1pbiB3aXRob3V0IE1GQSBjYW4gYWRvcHQgaXQpXG4gKiBidXQgTE9PU0VOSU5HIGl0IGRvZXMgbm90LiBTYW1lIHJ1bGVzIGFuZCB0aGUgc2FtZSB0aHJlZSByZWZ1c2Fscy4gUmV0dXJuc1xuICogdHJ1ZSB3aGVuIHRoZSByZXF1ZXN0IHdhcyBSRUZVU0VEIChhIHJlc3BvbnNlIGhhcyBiZWVuIHNlbnQpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVmdXNlV2Vha1Nlc3Npb24ocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlLCBvcHRpb25zOiBBc3N1cmFuY2VPcHRpb25zKTogYm9vbGVhbiB7XG4gIGlmICghcmVxLnVzZXIpIHtcbiAgICBzZW5kRXJyb3IocmVzLCBIdHRwU3RhdHVzLlVOQVVUSE9SSVpFRCwgJ0F1dGhlbnRpY2F0aW9uIHJlcXVpcmVkJywgRXJyb3JDb2RlLlVOQVVUSE9SSVpFRCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIHJlZnVzZUZvckFzc3VyYW5jZShvcHRpb25zLCByZXEudXNlciBhcyBKd3RQYXlsb2FkLCByZXEsIHJlcyk7XG59XG5cbi8qKiBXaGF0IHtAbGluayByZXF1aXJlT3JnQWRtaW5Bc3N1cmFuY2V9IGRlbWFuZHMgb2YgYSByb3V0ZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3JnQWRtaW5Bc3N1cmFuY2VPcHRpb25zIHtcbiAgLyoqIFdoYXQgYSBtYWNoaW5lIGNyZWRlbnRpYWwgKFBBVCwgc2VydmljZSBhY2NvdW50LCBtYWNoaW5lIHNlc3Npb24pIG1lZXRzIG9uXG4gICAqICB0aGlzIHJvdXRlIHdoaWxlIHRoZSBwb2xpY3kgaXMgb24g4oCUIHNlZSB7QGxpbmsgT3JnQWRtaW5Bc3N1cmFuY2VNYWNoaW5lc30uXG4gICAqICBSZXF1aXJlZCwgc28gZXZlcnkgcm91dGUgc3RhdGVzIGl0cyBkZWNpc2lvbiByYXRoZXIgdGhhbiBpbmhlcml0aW5nIG9uZS4gKi9cbiAgbWFjaGluZXM6IE9yZ0FkbWluQXNzdXJhbmNlTWFjaGluZXM7XG59XG5cbi8qKiBgZGV0YWlscy5yZWFzb25gIG9uIGEgcmVmdXNhbCBieSB7QGxpbmsgcmVxdWlyZU9yZ0FkbWluQXNzdXJhbmNlfSwgc28gdGhlIFVJXG4gKiAgY2FuIHNheSBpdCBpcyB0aGUgT1JHJ3MgcG9saWN5IGFza2luZywgbm90IHRoZSByb3V0ZSdzIG93biByZXF1aXJlbWVudC4gKi9cbmV4cG9ydCBjb25zdCBPUkdfQURNSU5fTUZBX1JFQVNPTiA9ICdvcmdfYWRtaW5fcG9saWN5JztcblxuLyoqXG4gKiBUaGUgcmVmdXNhbCB7QGxpbmsgcmVxdWlyZU9yZ0FkbWluQXNzdXJhbmNlfSB3b3VsZCBzZW5kIGZvciB0aGVzZSBjbGFpbXMsIG9yXG4gKiBgdW5kZWZpbmVkYCB3aGVuIHRoZSByZXF1ZXN0IG1heSBwcm9jZWVkLiBFeHBvcnRlZCBzbyBhIGhhbmRsZXIgd2hvc2UgcG9saWN5XG4gKiBhcHBsaWVzIHRvIG9ubHkgUEFSVCBvZiBhIHJvdXRlIChlLmcuIGBnZW5lcmF0ZS10b2tlbmAsIHdoZXJlIG9wZW5pbmcgYSBuZXdcbiAqIG1hY2hpbmUgY3JlZGVudGlhbCBpcyBnYXRlZCBidXQgcmVuZXdpbmcgYW4gZXhpc3Rpbmcgb25lIGlzIG5vdCkgYXBwbGllcyB0aGVcbiAqIGV4YWN0IHNhbWUgcnVsZSByYXRoZXIgdGhhbiBhIGNvcHkgb2YgaXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvcmdBZG1pbkFzc3VyYW5jZVJlZnVzYWwoXG4gIGNsYWltczogSnd0UGF5bG9hZCB8IHVuZGVmaW5lZCxcbiAgb3B0aW9uczogT3JnQWRtaW5Bc3N1cmFuY2VPcHRpb25zLFxuKTogeyBzdGF0dXM6IG51bWJlcjsgY29kZTogRXJyb3JDb2RlOyBtZXNzYWdlOiBzdHJpbmc7IHJlYXNvbjogJ21hY2hpbmVfcHJpbmNpcGFsJyB8ICd3ZWFrX3Nlc3Npb24nIH0gfCB1bmRlZmluZWQge1xuICAvLyBUaGUgY2xhaW0gaXMgb25seSBldmVyIGAyYCwgYW5kIG9ubHkgd2hlbiB0aGUgcG9saWN5IGlzIG9uIChzZWUgSnd0UGF5bG9hZCkuXG4gIGlmICghY2xhaW1zIHx8IGNsYWltcy5vcmdfYWRtaW5fYWFsICE9PSAyKSByZXR1cm4gdW5kZWZpbmVkO1xuICBpZiAoIWlzSHVtYW5QcmluY2lwYWwoY2xhaW1zKSkge1xuICAgIGlmIChvcHRpb25zLm1hY2hpbmVzID09PSAnYWxsb3cnKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHJldHVybiB7XG4gICAgICBzdGF0dXM6IEh0dHBTdGF0dXMuRk9SQklEREVOLFxuICAgICAgY29kZTogRXJyb3JDb2RlLkhVTUFOX1NFU1NJT05fUkVRVUlSRUQsXG4gICAgICByZWFzb246ICdtYWNoaW5lX3ByaW5jaXBhbCcsXG4gICAgICBtZXNzYWdlOiAnWW91ciBvcmdhbml6YXRpb24gcmVxdWlyZXMgdHdvLWZhY3RvciBhdXRoZW50aWNhdGlvbiBmb3IgdGhpcyBhY3Rpb24g4oCUIEFQSSBrZXlzIGFuZCBzZXJ2aWNlIGFjY291bnRzIGNhbm5vdCBwZXJmb3JtIGl0JyxcbiAgICB9O1xuICB9XG4gIGlmICgoY2xhaW1zLmFhbCA/PyAxKSA+PSAyKSByZXR1cm4gdW5kZWZpbmVkO1xuICByZXR1cm4ge1xuICAgIHN0YXR1czogSHR0cFN0YXR1cy5VTkFVVEhPUklaRUQsXG4gICAgY29kZTogRXJyb3JDb2RlLk1GQV9SRVFVSVJFRCxcbiAgICByZWFzb246ICd3ZWFrX3Nlc3Npb24nLFxuICAgIG1lc3NhZ2U6ICdZb3VyIG9yZ2FuaXphdGlvbiByZXF1aXJlcyB0d28tZmFjdG9yIGF1dGhlbnRpY2F0aW9uIGZvciBhZG1pbmlzdHJhdGl2ZSBhY3Rpb25zIOKAlCBzaWduIGluIGFnYWluIHdpdGggYSBwYXNza2V5IG9yIGFuIGF1dGhlbnRpY2F0b3IgY29kZScsXG4gIH07XG59XG5cbi8qKlxuICogQXBwbHkge0BsaW5rIG9yZ0FkbWluQXNzdXJhbmNlUmVmdXNhbH0gYW5kIHNlbmQgaXRzIHJlZnVzYWwuIFJldHVybnMgdHJ1ZSB3aGVuXG4gKiB0aGUgcmVxdWVzdCB3YXMgUkVGVVNFRCAoYSByZXNwb25zZSBoYXMgYmVlbiBzZW50KS4gRm9yIGhhbmRsZXItbGV2ZWwgdXNlO1xuICogcm91dGVzIHVzZSB7QGxpbmsgcmVxdWlyZU9yZ0FkbWluQXNzdXJhbmNlfS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZnVzZUZvck9yZ0FkbWluQXNzdXJhbmNlKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSwgb3B0aW9uczogT3JnQWRtaW5Bc3N1cmFuY2VPcHRpb25zKTogYm9vbGVhbiB7XG4gIGNvbnN0IHJlZnVzYWwgPSBvcmdBZG1pbkFzc3VyYW5jZVJlZnVzYWwocmVxLnVzZXIgYXMgSnd0UGF5bG9hZCB8IHVuZGVmaW5lZCwgb3B0aW9ucyk7XG4gIGlmICghcmVmdXNhbCkgcmV0dXJuIGZhbHNlO1xuICBlbWl0Q291bnRlcignbWZhX2VuZm9yY2VtZW50X3JlZnVzZWRfdG90YWwnLCB7IHNlcnZpY2U6IHNlcnZpY2VJZGVudGl0eSgpLCByZWFzb246IGBvcmdfYWRtaW5fJHtyZWZ1c2FsLnJlYXNvbn1gIH0pO1xuICByZWNvcmRBdXRoekRlbmlhbChyZXEsICdhc3N1cmFuY2U6b3JnLWFkbWluJyk7XG4gIHNlbmRFcnJvcihyZXMsIHJlZnVzYWwuc3RhdHVzLCByZWZ1c2FsLm1lc3NhZ2UsIHJlZnVzYWwuY29kZSwgeyByZWFzb246IE9SR19BRE1JTl9NRkFfUkVBU09OIH0pO1xuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBUaGUgb3JnIHBvbGljeSBcImFkbWluaXN0cmF0aXZlIGFjdGlvbnMgcmVxdWlyZSBNRkFcIiAoYGFkbWluQWN0aW9uc1JlcXVpcmVNZmFgKS5cbiAqXG4gKiBVbmxpa2Uge0BsaW5rIHJlcXVpcmVBc3N1cmFuY2V9LCB0aGUgcmVxdWlyZW1lbnQgaXMgdGhlIE9SRydzIGNob2ljZSwgbm90IHRoZVxuICogcm91dGUnczogdGhlIGdhdGUgcmVhZHMgdGhlIGBvcmdfYWRtaW5fYWFsYCBjbGFpbSwgc2V0IGF0IHRva2VuIGlzc3VlIGZyb20gdGhlXG4gKiBhY3RpdmUgb3JnJ3MgcG9saWN5IChzdHJpY3Rlc3QgYWNyb3NzIGl0cyBhbmNlc3RvcnMpLCBzbyBhIHNlcnZpY2UgdGhhdCBjYW5ub3RcbiAqIHJlYWQgdGhlIG9yZyBkb2N1bWVudCBzdGlsbCBlbmZvcmNlcyBpdC4gV2l0aCB0aGUgcG9saWN5IG9mZiB0aGUgZ2F0ZSBpcyBhXG4gKiBuby1vcDsgd2l0aCBpdCBvbiwgYSBzaW5nbGUtZmFjdG9yIHNlc3Npb24gaXMgcmVmdXNlZCA0MDEgYE1GQV9SRVFVSVJFRGBcbiAqICh3aXRoIGBkZXRhaWxzLnJlYXNvbjogJ29yZ19hZG1pbl9wb2xpY3knYCkg4oCUIHRoZSBzYW1lIGNvZGUgdGhlIGNsaWVudCBhbHJlYWR5XG4gKiB0dXJucyBpbnRvIFwiZW5yb2wgYSBmYWN0b3IgLyBzaWduIGluIHdpdGggaXRcIiwgbmV2ZXIgYSBzaWduLW91dC5cbiAqXG4gKiBgbWFjaGluZXNgIGlzIGRlY2lkZWQgcGVyIHJvdXRlIChzZWUge0BsaW5rIE9yZ0FkbWluQXNzdXJhbmNlTWFjaGluZXN9KTogdGhlXG4gKiBwb2xpY3kgaXMgYWJvdXQgaG93IHN0cm9uZ2x5IGEgUEVSU09OJ3Mgc2Vzc2lvbiB3YXMgb3BlbmVkLCBzbyBhdXRvbWF0aW9uIHRoYXRcbiAqIGxlZ2l0aW1hdGVseSBkcml2ZXMgYSByb3V0ZSBrZWVwcyB3b3JraW5nIChgYWxsb3dgKSwgd2hpbGUgYSByb3V0ZSB0aGF0IG1pbnRzXG4gKiBhIGZ1cnRoZXIgY3JlZGVudGlhbCByZWZ1c2VzIG1hY2hpbmVzIG91dHJpZ2h0IChgcmVmdXNlYCwgNDAzXG4gKiBgSFVNQU5fU0VTU0lPTl9SRVFVSVJFRGAg4oCUIHRoZSBzYW1lIHJlZnVzYWwgYHJlcXVpcmVBc3N1cmFuY2VgIGdpdmVzIHRoZW0pLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVxdWlyZU9yZ0FkbWluQXNzdXJhbmNlKG9wdGlvbnM6IE9yZ0FkbWluQXNzdXJhbmNlT3B0aW9ucykge1xuICByZXR1cm4gdGFnUm91dGVHYXRlKChyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UsIG5leHQ6IE5leHRGdW5jdGlvbik6IHZvaWQgPT4ge1xuICAgIGlmICghcmVxLnVzZXIpIHtcbiAgICAgIHJldHVybiBzZW5kRXJyb3IocmVzLCBIdHRwU3RhdHVzLlVOQVVUSE9SSVpFRCwgJ0F1dGhlbnRpY2F0aW9uIHJlcXVpcmVkJywgRXJyb3JDb2RlLlVOQVVUSE9SSVpFRCk7XG4gICAgfVxuICAgIGlmIChyZWZ1c2VGb3JPcmdBZG1pbkFzc3VyYW5jZShyZXEsIHJlcywgb3B0aW9ucykpIHJldHVybjtcbiAgICBuZXh0KCk7XG4gIH0sIHsga2luZDogJ29yZ0FkbWluQXNzdXJhbmNlJywgbWFjaGluZXM6IG9wdGlvbnMubWFjaGluZXMgfSk7XG59XG5cbi8qKlxuICogRW5mb3JjZSBgbWluQXNzdXJhbmNlYCAvIGBtYXhBZ2VgIG9uIGEgdmVyaWZpZWQgdG9rZW4uIFJldHVybnMgdHJ1ZSB3aGVuIHRoZVxuICogcmVxdWVzdCB3YXMgUkVGVVNFRCAoYSByZXNwb25zZSBoYXMgYmVlbiBzZW50KS5cbiAqXG4gKiBUaHJlZSBkaXN0aW5jdCByZWZ1c2FscywgYmVjYXVzZSB0aGUgY2xpZW50J3MgbmV4dCBtb3ZlIGRpZmZlcnMgZm9yIGVhY2g6XG4gKiBhIG1hY2hpbmUgbXVzdCBzdG9wICg0MDMpLCBhIHdlYWsgc2Vzc2lvbiBtdXN0IGdhaW4gYSBmYWN0b3IgKDQwMVxuICogYE1GQV9SRVFVSVJFRGAg4oaSIGVucm9sbWVudCwgbmV2ZXIgYSBzaWduLW91dCksIGFuZCBhIHN0YWxlIG9uZSBtdXN0IHNpbXBseVxuICogYXV0aGVudGljYXRlIGFnYWluICg0MDEgYFJFQVVUSF9SRVFVSVJFRGApLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVmdXNlRm9yQXNzdXJhbmNlKFxuICBvcHRpb25zOiBBc3N1cmFuY2VPcHRpb25zLFxuICBkZWNvZGVkOiBKd3RQYXlsb2FkLFxuICByZXE6IFJlcXVlc3QsXG4gIHJlczogUmVzcG9uc2UsXG4pOiBib29sZWFuIHtcbiAgY29uc3QgbWluQXNzdXJhbmNlID0gb3B0aW9ucy5taW5Bc3N1cmFuY2U7XG4gIGNvbnN0IHJlZnVzZSA9IChyZWFzb246IHN0cmluZywgc3RhdHVzOiBudW1iZXIsIG1lc3NhZ2U6IHN0cmluZywgY29kZTogRXJyb3JDb2RlKTogdHJ1ZSA9PiB7XG4gICAgZW1pdENvdW50ZXIoJ21mYV9lbmZvcmNlbWVudF9yZWZ1c2VkX3RvdGFsJywgeyBzZXJ2aWNlOiBzZXJ2aWNlSWRlbnRpdHkoKSwgcmVhc29uIH0pO1xuICAgIHJlY29yZEF1dGh6RGVuaWFsKHJlcSwgYGFzc3VyYW5jZToke21pbkFzc3VyYW5jZX1gKTtcbiAgICBzZW5kRXJyb3IocmVzLCBzdGF0dXMsIG1lc3NhZ2UsIGNvZGUpO1xuICAgIHJldHVybiB0cnVlO1xuICB9O1xuXG4gIGlmICghaXNIdW1hblByaW5jaXBhbChkZWNvZGVkKSkge1xuICAgIHJldHVybiByZWZ1c2UoXG4gICAgICAnbWFjaGluZV9wcmluY2lwYWwnLCBIdHRwU3RhdHVzLkZPUkJJRERFTixcbiAgICAgICdUaGlzIGFjdGlvbiByZXF1aXJlcyBhIHBlcnNvbiBzaWduZWQgaW4gd2l0aCB0d28tZmFjdG9yIGF1dGhlbnRpY2F0aW9uIOKAlCBBUEkga2V5cyBhbmQgc2VydmljZSBhY2NvdW50cyBjYW5ub3QgcGVyZm9ybSBpdCcsXG4gICAgICBFcnJvckNvZGUuSFVNQU5fU0VTU0lPTl9SRVFVSVJFRCxcbiAgICApO1xuICB9XG4gIGlmICgoZGVjb2RlZC5hYWwgPz8gMSkgPCBtaW5Bc3N1cmFuY2UpIHtcbiAgICByZXR1cm4gcmVmdXNlKFxuICAgICAgJ3dlYWtfc2Vzc2lvbicsIEh0dHBTdGF0dXMuVU5BVVRIT1JJWkVELFxuICAgICAgJ1RoaXMgYWN0aW9uIHJlcXVpcmVzIHR3by1mYWN0b3IgYXV0aGVudGljYXRpb24g4oCUIHNpZ24gaW4gYWdhaW4gd2l0aCBhIHBhc3NrZXkgb3IgYW4gYXV0aGVudGljYXRvciBjb2RlJyxcbiAgICAgIEVycm9yQ29kZS5NRkFfUkVRVUlSRUQsXG4gICAgKTtcbiAgfVxuICBpZiAob3B0aW9ucy5tYXhBZ2UgIT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IGF1dGhUaW1lID0gZGVjb2RlZC5hdXRoX3RpbWU7XG4gICAgLy8gTm8gYGF1dGhfdGltZWAgaXMgbm90IFwicmVjZW50IGVub3VnaCBieSBkZWZhdWx0XCIg4oCUIGBoYXNWYWxpZElkZW50aXR5Q2xhaW1zYFxuICAgIC8vIGFscmVhZHkgcmVxdWlyZXMgaXQgb24gYSB1c2VyIHRva2VuLCBzbyBhbiBhYnNlbnQgb25lIG1lYW5zIGEgdG9rZW4gdGhpc1xuICAgIC8vIGdhdGUgY2Fubm90IHJlYXNvbiBhYm91dC4gRmFpbCBjbG9zZWQuXG4gICAgaWYgKHR5cGVvZiBhdXRoVGltZSAhPT0gJ251bWJlcicgfHwgTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCkgLSBhdXRoVGltZSA+IG9wdGlvbnMubWF4QWdlKSB7XG4gICAgICByZXR1cm4gcmVmdXNlKFxuICAgICAgICAnc3RhbGVfc2Vzc2lvbicsIEh0dHBTdGF0dXMuVU5BVVRIT1JJWkVELFxuICAgICAgICAnVGhpcyBhY3Rpb24gcmVxdWlyZXMgYSByZWNlbnQgc2lnbi1pbiDigJQgcGxlYXNlIGF1dGhlbnRpY2F0ZSBhZ2FpbicsXG4gICAgICAgIEVycm9yQ29kZS5SRUFVVEhfUkVRVUlSRUQsXG4gICAgICApO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbiJdfQ==
|
package/lib/middleware/auth.js
CHANGED
|
@@ -199,4 +199,4 @@ async function verifyAndAttach(options, rawToken, req, res, next) {
|
|
|
199
199
|
return sendError(res, HttpStatus.UNAUTHORIZED, 'Authentication failed', ErrorCode.UNAUTHORIZED);
|
|
200
200
|
}
|
|
201
201
|
}
|
|
202
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9taWRkbGV3YXJlL2F1dGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQVF0QyxPQUFPLEdBQUcsTUFBTSxjQUFjLENBQUM7QUFDL0IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSwyQkFBMkIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRixPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9FLE9BQU8sRUFBdUIsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsV0FBVyxFQUF3QixNQUFNLHNCQUFzQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxZ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LENBQUM7SUFDbEcsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuLyoqXG4gKiBgcmVxdWlyZUF1dGhgOiBiZWFyZXIgLyBhY2Nlc3Mta2V5IGF1dGhlbnRpY2F0aW9uLCB0aGUgY2hlY2tzIGV2ZXJ5XG4gKiB2ZXJpZmllZCByZXF1ZXN0IHBhc3NlcywgYW5kIHRoZSB0ZW5hbnQgaWRlbnRpdHkgaXQgYXR0YWNoZXMuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBSZXF1ZXN0LCBSZXNwb25zZSwgTmV4dEZ1bmN0aW9uIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgand0IGZyb20gJ2pzb253ZWJ0b2tlbic7XG5pbXBvcnQgeyByZWZ1c2VGb3JBc3N1cmFuY2UgfSBmcm9tICcuL2Fzc3VyYW5jZS5qcyc7XG5pbXBvcnQgeyBydW5EZWZlcnJlZFF1b3RhQ2hlY2sgfSBmcm9tICcuL2RlZmVycmVkLXF1b3RhLWNoZWNrLmpzJztcbmltcG9ydCB7IGhhc1ZhbGlkSWRlbnRpdHlDbGFpbXMsIHZlcmlmeUJlYXJlclRva2VuIH0gZnJvbSAnLi9qd3QtdmVyaWZ5LmpzJztcbmltcG9ydCB7IHJlY29yZEF1dGh6RGVuaWFsIH0gZnJvbSAnLi9wZXJtaXNzaW9uLWdhdGVzLmpzJztcbmltcG9ydCB7IGNoZWNrUmV2b2NhdGlvbiwgaXNJbXBlcnNvbmF0aW9uV3JpdGVCbG9ja2VkLCBuZWVkc1Jldm9jYXRpb25DaGVjayB9IGZyb20gJy4vcmV2b2NhdGlvbi5qcyc7XG5pbXBvcnQgeyB0YWdSb3V0ZUdhdGUgfSBmcm9tICcuL3JvdXRlLXRhYmxlLmpzJztcbmltcG9ydCB7IGlzU2VydmljZVRva2VuRGVuaWVkLCBzZXJ2aWNlTmFtZU9mIH0gZnJvbSAnLi9zZXJ2aWNlLXRva2Vucy5qcyc7XG5pbXBvcnQgeyBIdHRwU3RhdHVzIH0gZnJvbSAnLi4vY29uc3RhbnRzL2h0dHAtc3RhdHVzLmpzJztcbmltcG9ydCB7IEp3a3NVbmF2YWlsYWJsZUVycm9yLCBVbmtub3duS2lkRXJyb3IgfSBmcm9tICcuLi9zZXJ2aWNlcy9qd2tzLWNhY2hlLmpzJztcbmltcG9ydCB7IFNlcnZpY2VLZXlFcnJvciwgc2VydmljZUlkZW50aXR5IH0gZnJvbSAnLi4vc2VydmljZXMvc2VydmljZS1rZXlzLmpzJztcbmltcG9ydCB7IHR5cGUgQXNzdXJhbmNlTGV2ZWwgfSBmcm9tICcuLi90eXBlcy9jb21tb24uanMnO1xuaW1wb3J0IHsgRXJyb3JDb2RlIH0gZnJvbSAnLi4vdHlwZXMvZXJyb3ItY29kZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBIdHRwUmVxdWVzdCB9IGZyb20gJy4uL3R5cGVzL2h0dHAuanMnO1xuaW1wb3J0IHsgaXNPcGFxdWVBcGlLZXkgfSBmcm9tICcuLi91dGlscy9hcGkta2V5LmpzJztcbmltcG9ydCB7IGdldEhlYWRlclN0cmluZyB9IGZyb20gJy4uL3V0aWxzL2hlYWRlcnMuanMnO1xuaW1wb3J0IHsgZ2V0SWRlbnRpdHksIHR5cGUgUmVxdWVzdElkZW50aXR5IH0gZnJvbSAnLi4vdXRpbHMvaWRlbnRpdHkuanMnO1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyIH0gZnJvbSAnLi4vdXRpbHMvbG9nZ2VyLmpzJztcbmltcG9ydCB7IGVtaXRDb3VudGVyIH0gZnJvbSAnLi4vdXRpbHMvbWV0cmljLWVtaXR0ZXIuanMnO1xuaW1wb3J0IHsgc2VuZEVycm9yIH0gZnJvbSAnLi4vdXRpbHMvcmVzcG9uc2UuanMnO1xuXG5jb25zdCBsb2dnZXIgPSBjcmVhdGVMb2dnZXIoJ2F1dGgtbWlkZGxld2FyZScpO1xuZXhwb3J0IGludGVyZmFjZSBSZXF1aXJlQXV0aE9wdGlvbnMge1xuICAvKipcbiAgICogQWxsb3cgeC1vcmctaWQveC1vcmctbmFtZSBoZWFkZXJzIHRvIG92ZXJyaWRlIHRoZSBKV1QncyBvcmdhbml6YXRpb24gZmllbGRzLlxuICAgKlxuICAgKiBXaGVuIGVuYWJsZWQsIHRoZSBgeC1vcmctaWRgL2B4LW9yZy1uYW1lYCBoZWFkZXJzIG92ZXJyaWRlIHRoZSBjYWxsZXIncyBvcmdcbiAgICog4oCUIGJ1dCBPTkxZIGZvciBhIHZlcmlmaWVkIFNZUy1BRE1JTiAoYGlzU3VwZXJBZG1pbmAgY2xhaW0pLiBGb3IgYW55IG9yZGluYXJ5XG4gICAqIGF1dGhlbnRpY2F0ZWQgdXNlciB0aGUgaGVhZGVycyBhcmUgaWdub3JlZCwgc28gZW5hYmxpbmcgdGhpcyBjYW4gbmV2ZXIgbGV0IGFcbiAgICogbm9ybWFsIHVzZXIgaW1wZXJzb25hdGUgYW5vdGhlciB0ZW5hbnQncyBvcmcuIFVzZSBmb3IgY3Jvc3Mtb3JnIGFkbWluIHRvb2xpbmdcbiAgICogKGUuZy4gYSBzeXNhZG1pbiBtYW5hZ2luZyBhIGdpdmVuIG9yZydzIGJpbGxpbmcpLiBJZiB1bnN1cmUsIGxlYXZlIGl0IGRpc2FibGVkLlxuICAgKi9cbiAgYWxsb3dPcmdIZWFkZXJPdmVycmlkZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBEZW1hbmQgdGhhdCB0aGUgd2hvbGUgU0VTU0lPTiBiZSBhdCBsZWFzdCB0aGlzIGFzc3VyYW5jZSBsZXZlbC5cbiAgICpcbiAgICogYG1pbkFzc3VyYW5jZTogMmAgbWVhbnMgdGhlIHBlcnNvbiBhdXRoZW50aWNhdGVkIHdpdGggYSBzZWNvbmQgZmFjdG9yIOKAlCBhXG4gICAqIHBhc3NrZXkgd2l0aCB1c2VyIHZlcmlmaWNhdGlvbiwgYSBwYXNzd29yZCBwbHVzIGFuIGF1dGhlbnRpY2F0b3IgY29kZSwgb3JcbiAgICogU1NPIHRocm91Z2ggYW4gSWRQIHRoZSBvcmcgbWFya2VkIGFzIGVuZm9yY2luZyBNRkEuIEEgd2Vha2VyIHRva2VuIGdldHNcbiAgICogKio0MDEgYE1GQV9SRVFVSVJFRGAqKiwgd2hpY2ggdGhlIGNsaWVudCBhbnN3ZXJzIGJ5IHNlbmRpbmcgdGhlIHBlcnNvbiB0b1xuICAgKiBlbnJvbG1lbnQgb3IgdG8gYSBzdHJvbmdlciBzaWduLWluOyByZWZyZXNoaW5nIGNhbm5vdCBoZWxwLCBiZWNhdXNlIGBhYWxgXG4gICAqIGxpdmVzIG9uIHRoZSBzZXNzaW9uIHNsb3QgYW5kIGEgcmVmcmVzaCBuZXZlciByYWlzZXMgaXQuXG4gICAqXG4gICAqIFRoaXMgaXMgdGhlIFNFU1NJT04tbGV2ZWwgY291bnRlcnBhcnQgdG8ge0BsaW5rIHJlcXVpcmVTdGVwVXB9LCB3aGljaCBzdGF5c1xuICAgKiBhIGZyZXNoLCBwZXItYWN0aW9uIGNvbmZpcm1hdGlvbi4gVXNlIGJvdGggb24gdGhlIG1vc3QgZGFuZ2Vyb3VzIHJvdXRlcy5cbiAgICpcbiAgICogTUFDSElORVMgTkVWRVIgU0FUSVNGWSBJVC4gQSBzZXJ2aWNlIHByaW5jaXBhbCwgYW4gb3JnIHNlcnZpY2UgYWNjb3VudCBhbmRcbiAgICogYW4gZXhjaGFuZ2VkIGFjY2VzcyBrZXkgYWxsIGdldCAqKjQwMyBgSFVNQU5fU0VTU0lPTl9SRVFVSVJFRGAqKiDigJQgdGhlcmUgaXNcbiAgICogbm8gcGVyc29uIGJlaGluZCB0aGVtIHRvIGhhdmUgcHJlc2VudGVkIGEgZmFjdG9yLCBzbyBcImFzc3VyYW5jZVwiIGlzIG5vdCBhXG4gICAqIHF1ZXN0aW9uIHRoZWlyIGNyZWRlbnRpYWwgY2FuIGFuc3dlci4gVGhhdCBpcyBkZWxpYmVyYXRlbHkgbm90IGEgc2lsZW50XG4gICAqIHBhc3MtdGhyb3VnaCBmb3IgaW50ZXJuYWwgc2VydmljZXM6IGEgcm91dGUgdGhhdCBkZW1hbmRzIE1GQSBpcyBhIHJvdXRlIGFcbiAgICogaHVtYW4gaXMgZG9pbmcgc29tZXRoaW5nIGRhbmdlcm91cyBvbi5cbiAgICovXG4gIG1pbkFzc3VyYW5jZT86IEFzc3VyYW5jZUxldmVsO1xuICAvKipcbiAgICogV2l0aCB7QGxpbmsgbWluQXNzdXJhbmNlfSwgYWRkaXRpb25hbGx5IGJvdW5kIGhvdyBsb25nIGFnbyB0aGF0IHNpZ24taW5cbiAgICogaGFwcGVuZWQgKHNlY29uZHMsIGNvbXBhcmVkIGFnYWluc3QgdGhlIHRva2VuJ3MgYGF1dGhfdGltZWApLiBBIHNlc3Npb24gdGhhdFxuICAgKiBpcyBNRkEtZ3JhZGUgYnV0IG9sZGVyIHRoYW4gdGhpcyBnZXRzICoqNDAxIGBSRUFVVEhfUkVRVUlSRURgKiouIElnbm9yZWRcbiAgICogd2l0aG91dCBgbWluQXNzdXJhbmNlYCDigJQgXCJob3cgcmVjZW50XCIgaXMgb25seSBtZWFuaW5nZnVsIG9uY2UgXCJob3cgc3Ryb25nXCJcbiAgICogaXMgYmVpbmcgYXNrZWQuXG4gICAqL1xuICBtYXhBZ2U/OiBudW1iZXI7XG59XG5cbi8qKiBKV1QgYXV0aCBtaWRkbGV3YXJlLiBVc2UgZGlyZWN0bHkgb3IgY2FsbCB3aXRoIG9wdGlvbnMuICovXG5leHBvcnQgZnVuY3Rpb24gcmVxdWlyZUF1dGgoXG4gIHJlcTogUmVxdWVzdCxcbiAgcmVzOiBSZXNwb25zZSxcbiAgbmV4dDogTmV4dEZ1bmN0aW9uLFxuKTogdm9pZDtcbmV4cG9ydCBmdW5jdGlvbiByZXF1aXJlQXV0aChcbiAgb3B0aW9ucz86IFJlcXVpcmVBdXRoT3B0aW9ucyxcbik6IChyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UsIG5leHQ6IE5leHRGdW5jdGlvbikgPT4gdm9pZDtcbmV4cG9ydCBmdW5jdGlvbiByZXF1aXJlQXV0aChcbiAgcmVxT3JPcHRpb25zPzogUmVxdWVzdCB8IFJlcXVpcmVBdXRoT3B0aW9ucyxcbiAgcmVzPzogUmVzcG9uc2UsXG4gIG5leHQ/OiBOZXh0RnVuY3Rpb24sXG4pOiB2b2lkIHwgKChyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UsIG5leHQ6IE5leHRGdW5jdGlvbikgPT4gdm9pZCkge1xuICBpZiAocmVxT3JPcHRpb25zICYmIHJlcyAmJiBuZXh0ICYmICdoZWFkZXJzJyBpbiByZXFPck9wdGlvbnMpIHtcbiAgICByZXR1cm4gX3JlcXVpcmVBdXRoKHt9LCByZXFPck9wdGlvbnMgYXMgUmVxdWVzdCwgcmVzLCBuZXh0KTtcbiAgfVxuXG4gIGNvbnN0IG9wdGlvbnMgPSAocmVxT3JPcHRpb25zIGFzIFJlcXVpcmVBdXRoT3B0aW9ucykgfHwge307XG4gIGNvbnN0IGdhdGUgPSB0YWdSb3V0ZUdhdGUoKHJlcTogUmVxdWVzdCwgcmVzSW5uZXI6IFJlc3BvbnNlLCBuZXh0SW5uZXI6IE5leHRGdW5jdGlvbikgPT4ge1xuICAgIF9yZXF1aXJlQXV0aChvcHRpb25zLCByZXEsIHJlc0lubmVyLCBuZXh0SW5uZXIpO1xuICB9LCB7IGtpbmQ6ICdhdXRoJyB9KTtcbiAgaWYgKG9wdGlvbnMubWluQXNzdXJhbmNlKSB7XG4gICAgdGFnUm91dGVHYXRlKGdhdGUsIHsga2luZDogJ2Fzc3VyYW5jZScsIG1pbkFzc3VyYW5jZTogb3B0aW9ucy5taW5Bc3N1cmFuY2UsIC4uLihvcHRpb25zLm1heEFnZSAhPT0gdW5kZWZpbmVkID8geyBtYXhBZ2U6IG9wdGlvbnMubWF4QWdlIH0gOiB7fSkgfSk7XG4gIH1cbiAgcmV0dXJuIGdhdGU7XG59XG50YWdSb3V0ZUdhdGUocmVxdWlyZUF1dGgsIHsga2luZDogJ2F1dGgnIH0pO1xuXG5mdW5jdGlvbiBfcmVxdWlyZUF1dGgoXG4gIG9wdGlvbnM6IFJlcXVpcmVBdXRoT3B0aW9ucyxcbiAgcmVxOiBSZXF1ZXN0LFxuICByZXM6IFJlc3BvbnNlLFxuICBuZXh0OiBOZXh0RnVuY3Rpb24sXG4pOiB2b2lkIHtcbiAgY29uc3QgYXV0aEhlYWRlciA9IHJlcS5oZWFkZXJzLmF1dGhvcml6YXRpb247XG5cbiAgaWYgKCFhdXRoSGVhZGVyKSB7XG4gICAgcmV0dXJuIHNlbmRFcnJvcihyZXMsIEh0dHBTdGF0dXMuVU5BVVRIT1JJWkVELCAnQXV0aG9yaXphdGlvbiBoZWFkZXIgcmVxdWlyZWQnLCBFcnJvckNvZGUuVE9LRU5fTUlTU0lORyk7XG4gIH1cblxuICBjb25zdCBwYXJ0cyA9IGF1dGhIZWFkZXIuc3BsaXQoJyAnKTtcbiAgaWYgKHBhcnRzLmxlbmd0aCAhPT0gMiB8fCBwYXJ0c1swXSAhPT0gJ0JlYXJlcicpIHtcbiAgICByZXR1cm4gc2VuZEVycm9yKHJlcywgSHR0cFN0YXR1cy5VTkFVVEhPUklaRUQsICdJbnZhbGlkIGF1dGhvcml6YXRpb24gZm9ybWF0LiBVc2U6IEJlYXJlciA8dG9rZW4+JywgRXJyb3JDb2RlLlRPS0VOX0lOVkFMSUQpO1xuICB9XG5cbiAgLy8gQW4gT1BBUVVFIEFDQ0VTUyBLRVkgKGBwYl9wYXRf4oCmYCAvIGBwYl9zYV/igKZgKSBjYXJyaWVzIG5vIGNsYWltcyBhbmQgbm9cbiAgLy8gc2lnbmF0dXJlLCBzbyBpdCBjYW5ub3QgYmUgdmVyaWZpZWQgaGVyZS4gVHJhZGUgaXQgYXQgcGxhdGZvcm0gZm9yIGFcbiAgLy8gc2hvcnQtbGl2ZWQgSldUIChjYWNoZWQgaW4tcHJvY2VzcyB1bnRpbCBpdCBleHBpcmVzKSBhbmQgdGhlbiB2ZXJpZnkgdGhhdFxuICAvLyBKV1Qgb24gdGhlIG5vcm1hbCBwYXRoIOKAlCBzZXJ2aWNlcyBuZXZlciByZWFkIGEga2V5IGhhc2guIFNlZVxuICAvLyBgc2VydmljZXMvYXBpLWtleS1leGNoYW5nZS50c2AuXG4gIGlmIChpc09wYXF1ZUFwaUtleShwYXJ0c1sxXSkpIHtcbiAgICB2b2lkIHJlc29sdmVBcGlLZXkob3B0aW9ucywgcGFydHNbMV0sIHJlcSwgcmVzLCBuZXh0KTtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBgLmNhdGNoKG5leHQpYCBmb3J3YXJkcyBhIERPV05TVFJFQU0gc3luY2hyb25vdXMgdGhyb3cgZnJvbSBgbmV4dCgpYCB0b1xuICAvLyBFeHByZXNzJ3MgZXJyb3IgbWlkZGxld2FyZSDigJQgdmVyaWZpY2F0aW9uIGl0c2VsZiBuZXZlciByZWplY3RzIChpdCBtYXBzXG4gIC8vIGV2ZXJ5IGZhaWx1cmUgdG8gYSByZXNwb25zZSkuXG4gIHZvaWQgdmVyaWZ5QW5kQXR0YWNoKG9wdGlvbnMsIHBhcnRzWzFdLCByZXEsIHJlcywgbmV4dCkuY2F0Y2gobmV4dCk7XG59XG5cbi8qKlxuICogRXhjaGFuZ2UgYW4gb3BhcXVlIGtleSBmb3IgYSBKV1QsIHRoZW4gY29udGludWUgb24gdGhlIG5vcm1hbCB2ZXJpZmljYXRpb25cbiAqIHBhdGguIEEgcmVmdXNlZCBrZXkgaXMgYSA0MDE7IGFuIHVucmVhY2hhYmxlIHBsYXRmb3JtIGlzIGEgNTAzIChuZXZlciBhIHBhc3Mg4oCUXG4gKiBhbiB1bnZlcmlmaWFibGUgY3JlZGVudGlhbCBpcyBub3QgYW4gaWRlbnRpdHkpLlxuICovXG5hc3luYyBmdW5jdGlvbiByZXNvbHZlQXBpS2V5KFxuICBvcHRpb25zOiBSZXF1aXJlQXV0aE9wdGlvbnMsXG4gIGtleTogc3RyaW5nLFxuICByZXE6IFJlcXVlc3QsXG4gIHJlczogUmVzcG9uc2UsXG4gIG5leHQ6IE5leHRGdW5jdGlvbixcbik6IFByb21pc2U8dm9pZD4ge1xuICAvLyBMb2FkZWQgTEFaSUxZLCBvbiB0aGUgZmlyc3Qga2V5IGV2ZXIgcHJlc2VudGVkLiBBIHN0YXRpYyBpbXBvcnQgd291bGQgcHV0XG4gIC8vIHRoZSBIVFRQIGNsaWVudCAoYW5kIHBsYXRmb3JtJ3MgYWRkcmVzcykgaW50byB0aGUgaW1wb3J0IGdyYXBoIG9mIGV2ZXJ5XG4gIC8vIG1vZHVsZSB0aGF0IG1lcmVseSB1c2VzIGByZXF1aXJlQXV0aGAsIHdoaWNoIGJvdGggd2lkZW5zIHRoZSBib290IGdyYXBoIGFuZFxuICAvLyBicmVha3MgYW55IHRlc3QgdGhhdCBtb2NrcyBgaHR0cC1jbGllbnQuanNgIHdpdGggYSBwYXJ0aWFsIG1vZHVsZS5cbiAgY29uc3QgeyBleGNoYW5nZUFwaUtleSwgQXBpS2V5RXhjaGFuZ2VVbmF2YWlsYWJsZUVycm9yIH0gPSBhd2FpdCBpbXBvcnQoJy4uL3NlcnZpY2VzL2FwaS1rZXktZXhjaGFuZ2UuanMnKTtcbiAgbGV0IHRva2VuOiBzdHJpbmc7XG4gIHRyeSB7XG4gICAgdG9rZW4gPSBhd2FpdCBleGNoYW5nZUFwaUtleShrZXkpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEFwaUtleUV4Y2hhbmdlVW5hdmFpbGFibGVFcnJvcikge1xuICAgICAgcmV0dXJuIHNlbmRFcnJvcihcbiAgICAgICAgcmVzLCBIdHRwU3RhdHVzLlNFUlZJQ0VfVU5BVkFJTEFCTEUsXG4gICAgICAgICdBY2Nlc3Mta2V5IHZlcmlmaWNhdGlvbiBpcyB0ZW1wb3JhcmlseSB1bmF2YWlsYWJsZTsgcGxlYXNlIHJldHJ5JyxcbiAgICAgICAgRXJyb3JDb2RlLlNFUlZJQ0VfVU5BVkFJTEFCTEUsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gc2VuZEVycm9yKHJlcywgSHR0cFN0YXR1cy5VTkFVVEhPUklaRUQsICdJbnZhbGlkIG9yIHJldm9rZWQgYWNjZXNzIGtleScsIEVycm9yQ29kZS5UT0tFTl9JTlZBTElEKTtcbiAgfVxuICBhd2FpdCB2ZXJpZnlBbmRBdHRhY2gob3B0aW9ucywgdG9rZW4sIHJlcSwgcmVzLCBuZXh0KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdmVyaWZ5QW5kQXR0YWNoKFxuICBvcHRpb25zOiBSZXF1aXJlQXV0aE9wdGlvbnMsXG4gIHJhd1Rva2VuOiBzdHJpbmcsXG4gIHJlcTogUmVxdWVzdCxcbiAgcmVzOiBSZXNwb25zZSxcbiAgbmV4dDogTmV4dEZ1bmN0aW9uLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIHRyeSB7XG4gICAgLy8gVHdvIGNoYWlucywgb25lIGVudHJ5IHBvaW50IChzZWUgYHZlcmlmeUJlYXJlclRva2VuYCk6IGEgdXNlciB0b2tlbiBtdXN0XG4gICAgLy8gYmUgRVMyNTYgc2lnbmVkIGJ5IHBsYXRmb3JtIGFuZCB2ZXJpZmllZCBhZ2FpbnN0IGl0cyBwdWJsaXNoZWQgSldLUzsgYW5cbiAgICAvLyBpbnRlcm5hbCBzZXJ2aWNlIHRva2VuIG11c3QgYmUgRVMyNTYgc2lnbmVkIGJ5IHRoYXQgc2VydmljZSdzIE9XTiBrZXkgYW5kXG4gICAgLy8gZGVjbGFyZSBpdHNlbGYgYSBzZXJ2aWNlIHByaW5jaXBhbC4gQm90aCBwaW4gdGhlIGFsZ29yaXRobSAobm9cbiAgICAvLyBhbGctY29uZnVzaW9uLCBubyBgYWxnOm5vbmVgKSBhbmQgYm90aCBhcHBseSB0aGUgb3B0aW9uYWwgaXNzdWVyL2F1ZGllbmNlXG4gICAgLy8gYmluZGluZy5cbiAgICBjb25zdCBkZWNvZGVkID0gYXdhaXQgdmVyaWZ5QmVhcmVyVG9rZW4ocmF3VG9rZW4pO1xuXG4gICAgaWYgKGRlY29kZWQudHlwZSAhPT0gJ2FjY2VzcycpIHtcbiAgICAgIHJldHVybiBzZW5kRXJyb3IocmVzLCBIdHRwU3RhdHVzLlVOQVVUSE9SSVpFRCwgJ09ubHkgYWNjZXNzIHRva2VucyBjYW4gYmUgdXNlZCBmb3IgQVBJIHJlcXVlc3RzJywgRXJyb3JDb2RlLlRPS0VOX0lOVkFMSUQpO1xuICAgIH1cblxuICAgIGlmICghZGVjb2RlZC5zdWIgfHwgIWRlY29kZWQucm9sZSB8fCAhaGFzVmFsaWRJZGVudGl0eUNsYWltcyhkZWNvZGVkKSkge1xuICAgICAgcmV0dXJuIHNlbmRFcnJvcihyZXMsIEh0dHBTdGF0dXMuVU5BVVRIT1JJWkVELCAnVG9rZW4gbWlzc2luZyByZXF1aXJlZCBmaWVsZHMnLCBFcnJvckNvZGUuVE9LRU5fSU5WQUxJRCk7XG4gICAgfVxuXG4gICAgLy8gU2VydmljZS10b2tlbiBraWxsLXN3aXRjaDogcmVqZWN0IGEgc2VydmljZSBwcmluY2lwYWwgd2hvc2Ugc2VydmljZSBoYXNcbiAgICAvLyBiZWVuIGFkZGVkIHRvIHRoZSBkZW55bGlzdC4gT3RoZXJ3aXNlIHRoZSBvbmx5IHdheSB0byBpbnZhbGlkYXRlIGFcbiAgICAvLyBzZXJ2aWNlJ3MgdG9rZW5zIGJlZm9yZSB0aGVpciAoc2hvcnQpIFRUTCBpcyByb3RhdGluZyB0aGF0IHNlcnZpY2Unc1xuICAgIC8vIHNpZ25pbmcga2V5OyB0aGlzIGN1dHMgb25lIGNvbXByb21pc2VkL3JvZ3VlIHNlcnZpY2Ugb2ZmIGltbWVkaWF0ZWx5LiBPKDEpIFNldCBsb29rdXAsIHplcm8gY29zdCB3aGVuIHRoZSBkZW55bGlzdFxuICAgIC8vIGlzIGVtcHR5ICh0aGUgZGVmYXVsdCksIHNvIGl0IG5ldmVyIHRheGVzIHRoZSBTMlMgaG90IHBhdGggdW5sZXNzIGFybWVkLlxuICAgIGlmIChpc1NlcnZpY2VUb2tlbkRlbmllZChkZWNvZGVkKSkge1xuICAgICAgZW1pdENvdW50ZXIoJ3NlcnZpY2VfdG9rZW5fZGVuaWVkX3RvdGFsJywgeyBzZXJ2aWNlOiBzZXJ2aWNlTmFtZU9mKGRlY29kZWQpID8/ICd1bmtub3duJyB9KTtcbiAgICAgIGxvZ2dlci53YXJuKCdSZWplY3RlZCBkZW55bGlzdGVkIHNlcnZpY2UgdG9rZW4nLCB7IHN1YjogZGVjb2RlZC5zdWIgfSk7XG4gICAgICByZXR1cm4gc2VuZEVycm9yKHJlcywgSHR0cFN0YXR1cy5VTkFVVEhPUklaRUQsICdTZXJ2aWNlIHRva2VuIHJldm9rZWQnLCBFcnJvckNvZGUuVE9LRU5fUkVWT0tFRCk7XG4gICAgfVxuXG4gICAgcmVxLnVzZXIgPSB7IC4uLmRlY29kZWQgfTtcblxuICAgIC8vIFJFQUQtT05MWSBJTVBFUlNPTkFUSU9OLiBUaGUgdG9rZW4gbmFtZXMgdGhlIG9wZXJhdG9yIEFORCBzYXlzIGl0IG1heSBvbmx5XG4gICAgLy8gbG9vazogZXZlcnkgc2VydmljZSByZWZ1c2VzIGEgc3RhdGUgY2hhbmdlIHVuZGVyIGl0LCBub3Qgb25seSBwbGF0Zm9ybSDigJRcbiAgICAvLyBhIHN1cHBvcnQgc2Vzc2lvbiB0aGF0IGNvdWxkIHdyaXRlIHRvIHBsdWdpbi9jb21wbGlhbmNlL2JpbGxpbmcgaXMgbm90XG4gICAgLy8gcmVhZC1vbmx5LiBDaGVja2VkIGJlZm9yZSBhbnkgb3RoZXIgZ2F0ZSBzbyBubyByb3V0ZSBjYW4gZm9yZ2V0IGl0LlxuICAgIGlmIChpc0ltcGVyc29uYXRpb25Xcml0ZUJsb2NrZWQocmVxLm1ldGhvZCwgZGVjb2RlZCkpIHtcbiAgICAgIGlmIChyZXEubWV0aG9kKSByZWNvcmRBdXRoekRlbmlhbChyZXEsICdpbXBlcnNvbmF0aW9uLXJlYWQtb25seScpO1xuICAgICAgcmV0dXJuIHNlbmRFcnJvcihcbiAgICAgICAgcmVzLCBIdHRwU3RhdHVzLkZPUkJJRERFTixcbiAgICAgICAgJ1dyaXRlIHJlcXVlc3RzIGFyZSBkaXNhYmxlZCBkdXJpbmcgcmVhZC1vbmx5IGltcGVyc29uYXRpb24uIFN0b3AgaW1wZXJzb25hdGluZyB0byBtYWtlIGNoYW5nZXMuJyxcbiAgICAgICAgRXJyb3JDb2RlLklNUEVSU09OQVRJT05fUkVBRF9PTkxZLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBCT09UU1RSQVAtQURNSU4gRU5ST0xNRU5UIFNFU1NJT04uIFN1Y2ggYSB0b2tlbiBleGlzdHMgc29cbiAgICAvLyB0aGUgaW5zdGFsbCdzIG9ubHkgYWRtaW4gY2FuIGVucm9sIGEgZmFjdG9yOyBpdCBpcyBgYWFsOiAxYCBhbmQgbXVzdCBub3RcbiAgICAvLyByZWFjaCBhbnl0aGluZyBlbHNlLiBQbGF0Zm9ybSDigJQgd2hpY2ggb3ducyB0aGUgZXhjZXB0aW9uIGFuZCBrbm93cyB3aGljaFxuICAgIC8vIG9mIGl0cyBvd24gcm91dGVzIGBpbml0LXBsYXRmb3JtLnNoYCBjYWxscyDigJQgYWxsb3dzIGFuIGV4cGxpY2l0IGZldyBiZWZvcmVcbiAgICAvLyB0aGlzIHBvaW50IChzZWUgaXRzIG93biBgcmVxdWlyZUF1dGhgKTsgaW4gRVZFUlkgb3RoZXIgc2VydmljZSB0aGUgYW5zd2VyXG4gICAgLy8gaXMgc2ltcGx5IG5vLCBzbyB0aGUgcmVhY2ggcmVzdHJpY3Rpb24gaG9sZHMgd2l0aG91dCBhIHBlci1zZXJ2aWNlXG4gICAgLy8gYWxsb3dsaXN0IHRvIGtlZXAgaW4gc3luYy5cbiAgICBpZiAoZGVjb2RlZC5tZmFFbnJvbGxtZW50UGVuZGluZyA9PT0gdHJ1ZSkge1xuICAgICAgZW1pdENvdW50ZXIoJ21mYV9lbmZvcmNlbWVudF9yZWZ1c2VkX3RvdGFsJywgeyBzZXJ2aWNlOiBzZXJ2aWNlSWRlbnRpdHkoKSwgcmVhc29uOiAnYm9vdHN0cmFwX3Nlc3Npb24nIH0pO1xuICAgICAgcmVjb3JkQXV0aHpEZW5pYWwocmVxLCAnbWZhLWVucm9sbWVudCcpO1xuICAgICAgcmV0dXJuIHNlbmRFcnJvcihcbiAgICAgICAgcmVzLCBIdHRwU3RhdHVzLkZPUkJJRERFTixcbiAgICAgICAgJ0ZpbmlzaCBzZXR0aW5nIHVwIHR3by1mYWN0b3IgYXV0aGVudGljYXRpb24gYmVmb3JlIHVzaW5nIHRoZSByZXN0IG9mIFBpcGVsaW5lIEJ1aWxkZXInLFxuICAgICAgICBFcnJvckNvZGUuTUZBX0VOUk9MTE1FTlRfUkVRVUlSRUQsXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFNlc3Npb24tbGV2ZWwgYXNzdXJhbmNlIChgcmVxdWlyZUF1dGgoeyBtaW5Bc3N1cmFuY2UsIG1heEFnZSB9KWApLlxuICAgIGlmIChvcHRpb25zLm1pbkFzc3VyYW5jZVxuICAgICAgJiYgcmVmdXNlRm9yQXNzdXJhbmNlKHsgbWluQXNzdXJhbmNlOiBvcHRpb25zLm1pbkFzc3VyYW5jZSwgLi4uKG9wdGlvbnMubWF4QWdlICE9PSB1bmRlZmluZWQgPyB7IG1heEFnZTogb3B0aW9ucy5tYXhBZ2UgfSA6IHt9KSB9LCBkZWNvZGVkLCByZXEsIHJlcykpIHJldHVybjtcblxuICAgIC8vIFRoZSB4LW9yZy1pZC94LW9yZy1uYW1lIG92ZXJyaWRlIGxldHMgYSBTWVMtQURNSU4gYWN0IG9uIGEgY2hvc2VuIG9yZ1xuICAgIC8vIChjcm9zcy1vcmcgYWRtaW4gdG9vbGluZykuIEl0IGlzIGdhdGVkIG9uIHRoZSB2ZXJpZmllZCBgaXNTdXBlckFkbWluYCBjbGFpbVxuICAgIC8vIGhlcmUgc28gdGhhdCBldmVuIGEgcm91dGUgd2hpY2ggbWlzdGFrZW5seSBlbmFibGVzIGBhbGxvd09yZ0hlYWRlck92ZXJyaWRlYFxuICAgIC8vIGNhbiBORVZFUiBsZXQgYW4gb3JkaW5hcnkgYXV0aGVudGljYXRlZCB1c2VyIHNwb29mIGFub3RoZXIgdGVuYW50J3Mgb3JnIHZpYVxuICAgIC8vIHRoZSBoZWFkZXIg4oCUIGRlZmVuY2UtaW4tZGVwdGggYWdhaW5zdCB0aGUgY3Jvc3MtdGVuYW50IGJyZWFrIHRoaXMgY2F1c2VkLlxuICAgIGlmIChvcHRpb25zLmFsbG93T3JnSGVhZGVyT3ZlcnJpZGUgJiYgZGVjb2RlZC5pc1N1cGVyQWRtaW4gPT09IHRydWUpIHtcbiAgICAgIGNvbnN0IGhlYWRlck9yZ0lkID0gZ2V0SGVhZGVyU3RyaW5nKHJlcS5oZWFkZXJzWyd4LW9yZy1pZCddKTtcbiAgICAgIGNvbnN0IGhlYWRlck9yZ05hbWUgPSBnZXRIZWFkZXJTdHJpbmcocmVxLmhlYWRlcnNbJ3gtb3JnLW5hbWUnXSk7XG4gICAgICBpZiAoaGVhZGVyT3JnSWQpIHJlcS51c2VyLm9yZ2FuaXphdGlvbklkID0gaGVhZGVyT3JnSWQ7XG4gICAgICBpZiAoaGVhZGVyT3JnTmFtZSkgcmVxLnVzZXIub3JnYW5pemF0aW9uTmFtZSA9IGhlYWRlck9yZ05hbWU7XG4gICAgfVxuXG4gICAgLy8gUmUtZGVyaXZlIHRoZSByZXF1ZXN0J3MgdGVuYW50IGlkZW50aXR5IGZyb20gdGhlIE5PVy12ZXJpZmllZCBKV1QuXG4gICAgLy9cbiAgICAvLyBgYXR0YWNoUmVxdWVzdENvbnRleHRgIHJ1bnMgYXMgYSBnbG9iYWwgbWlkZGxld2FyZSBCRUZPUkUgdGhpcyBwZXItcm91dGVcbiAgICAvLyBgcmVxdWlyZUF1dGhgLCBzbyBpdCBjYXB0dXJlZCBgcmVxLmNvbnRleHQuaWRlbnRpdHlgIHdoaWxlIGByZXEudXNlcmAgd2FzXG4gICAgLy8gc3RpbGwgdW5kZWZpbmVkIOKAlCBhdCB3aGljaCBwb2ludCBgZ2V0SWRlbnRpdHlgIGZhbGxzIGJhY2sgdG8gdGhlIHJhdyxcbiAgICAvLyBjbGllbnQtc2V0dGFibGUgYHgtb3JnLWlkYC9geC11c2VyLWlkYCBoZWFkZXJzLiBFdmVyeSBkb3duc3RyZWFtIHRlbmFudC1cbiAgICAvLyBhdXRob3JpdHkgY29uc3VtZXIgKHJlcXVpcmVPcmdJZCwgd2l0aFRlbmFudENvbnRleHQncyBSTFMgc2NvcGUsIGNoZWNrUXVvdGEsXG4gICAgLy8gd2l0aFJvdXRlLCBhbmQgdGhlIGlkZW1wb3RlbmN5IG5hbWVzcGFjZSkgcmVhZHMgYHJlcS5jb250ZXh0LmlkZW50aXR5YCwgc29cbiAgICAvLyB0aGF0IGZyb3plbiBoZWFkZXItZGVyaXZlZCB2YWx1ZSDigJQgbm90IHRoZSBKV1Qg4oCUIHdhcyBnb3Zlcm5pbmcgdGVuYW5jeSBvblxuICAgIC8vIGFueSBub24tbmdpbnggcGF0aC4gUmVjb21wdXRpbmcgaGVyZSwgYXQgdGhlIHNpbmdsZSBwb3N0LXZlcmlmaWNhdGlvbiBjaG9rZVxuICAgIC8vIHBvaW50LCBtYWtlcyBgZ2V0SWRlbnRpdHlgIHByZWZlciB0aGUgdmVyaWZpZWQgYHJlcS51c2VyYCAoc2VlIGlkZW50aXR5LnRzKVxuICAgIC8vIHNvIHRlbmFuY3kgaXMgSldULWF1dGhvcml0YXRpdmUuIFRoZSBuZ2lueCBgeC1vcmctaWRgIG92ZXJ3cml0ZSBzdGF5cyBhc1xuICAgIC8vIGRlZmVuY2UtaW4tZGVwdGguIEd1YXJkZWQgb24gYHJlcS5jb250ZXh0YCBzbyBzZXJ2aWNlcy9wYXRocyB0aGF0IG5ldmVyXG4gICAgLy8gYXR0YWNoIGEgY29udGV4dCAob3IgcnVuIHJlcXVpcmVBdXRoIHByZS1jb250ZXh0KSBhcmUgdW5hZmZlY3RlZC5cbiAgICBjb25zdCByZXFDdHggPSAocmVxIGFzIFJlcXVlc3QgJiB7IGNvbnRleHQ/OiB7IGlkZW50aXR5OiBSZXF1ZXN0SWRlbnRpdHkgfSB9KS5jb250ZXh0O1xuICAgIGlmIChyZXFDdHgpIHtcbiAgICAgIHJlcUN0eC5pZGVudGl0eSA9IGdldElkZW50aXR5KHJlcSBhcyB1bmtub3duIGFzIEh0dHBSZXF1ZXN0KTtcbiAgICB9XG5cbiAgICAvLyBTZXNzaW9uIGludmFsaWRhdGlvbiAodG9rZW4tdmVyc2lvbiBzdG9yZSArIGltcGVyc29uYXRpb24tc2Vzc2lvblxuICAgIC8vIGxpdmVuZXNzKS4gTm8gc3RvcmUgcmVnaXN0ZXJlZCDih5Igb25seSBpbXBlcnNvbmF0aW9uIHNlc3Npb25zIGFyZSBjaGVja2VkLlxuICAgIGlmIChuZWVkc1Jldm9jYXRpb25DaGVjayhkZWNvZGVkKSkge1xuICAgICAgLy8gYC5jYXRjaChuZXh0KWAgZm9yd2FyZHMgYSBET1dOU1RSRUFNIHN5bmNocm9ub3VzIHRocm93IGZyb20gYG5leHQoKWAgdG9cbiAgICAgIC8vIEV4cHJlc3MncyBlcnJvciBtaWRkbGV3YXJlIOKAlCB0aGlzIGBuZXh0KClgIHJ1bnMgaW4gYSBtaWNyb3Rhc2ssIG91dHNpZGVcbiAgICAgIC8vIHRoZSBzdXJyb3VuZGluZyB0cnkvY2F0Y2guIFRoZSBjaGVjayBpdHNlbGYgbmV2ZXIgcmVqZWN0cy5cbiAgICAgIGNoZWNrUmV2b2NhdGlvbihkZWNvZGVkKS50aGVuKChyZWZ1c2FsKSA9PiB7XG4gICAgICAgIGlmIChyZWZ1c2FsKSByZXR1cm4gc2VuZEVycm9yKHJlcywgSHR0cFN0YXR1cy5VTkFVVEhPUklaRUQsIHJlZnVzYWwsIEVycm9yQ29kZS5UT0tFTl9SRVZPS0VEKTtcbiAgICAgICAgcnVuRGVmZXJyZWRRdW90YUNoZWNrKHJlcSwgcmVzLCBuZXh0KTtcbiAgICAgIH0pLmNhdGNoKG5leHQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFRoZSBhcGlDYWxscyBjaGVjayBhIG1vdW50IGFybWVkIChhcGktc2VydmVyIGBhcGlDYWxsc1F1b3RhYCkgcnVucyBoZXJlLFxuICAgIC8vIG5vdyB0aGF0IHRlbmFuY3kgaXMgSldULWF1dGhvcml0YXRpdmU7IGEgcGxhaW4gbmV4dCgpIHdoZXJlIG5vbmUgd2FzIGFybWVkLlxuICAgIHJ1bkRlZmVycmVkUXVvdGFDaGVjayhyZXEsIHJlcywgbmV4dCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKGVycm9yIGluc3RhbmNlb2Ygand0LlRva2VuRXhwaXJlZEVycm9yKSB7XG4gICAgICByZXR1cm4gc2VuZEVycm9yKHJlcywgSHR0cFN0YXR1cy5VTkFVVEhPUklaRUQsICdUb2tlbiBoYXMgZXhwaXJlZCcsIEVycm9yQ29kZS5UT0tFTl9FWFBJUkVEKTtcbiAgICB9XG5cbiAgICAvLyBUaGUgc2lnbmluZyBrZXlzIGNvdWxkbid0IGJlIGZldGNoZWQsIHNvIHRoZSB0b2tlbidzIHZhbGlkaXR5IGlzIFVOS05PV04uXG4gICAgLy8gRmFpbCBDTE9TRUQgd2l0aCBhIHJldHJ5YWJsZSA1MDMg4oCUIG5ldmVyIGEgcGFzcywgYW5kIG5ldmVyIGEgNDAxIHRoYXRcbiAgICAvLyB3b3VsZCBzZW5kIGEgbGVnaXRpbWF0ZSBjbGllbnQgb2ZmIHRvIHJlLWF1dGhlbnRpY2F0ZSBvdmVyIG91ciBvdXRhZ2UuXG4gICAgLy8gU2FtZSByZWFzb25pbmcgZm9yIHRoZSBTRVJWSUNFIGNoYWluOiBubyByZWFkYWJsZSBrZXkgYnVuZGxlIG1lYW5zIG5vIHdheVxuICAgIC8vIHRvIHRlbGwgYSBwZWVyJ3MgdG9rZW4gZnJvbSBhIGZvcmdlcnksIHNvIHRoZSByZXF1ZXN0IGlzIHJlZnVzZWQgd2l0aCBhXG4gICAgLy8gcmV0cnlhYmxlIDUwMyByYXRoZXIgdGhhbiBhZG1pdHRlZCBvciBib3VuY2VkIHRvIHJlLWF1dGhlbnRpY2F0ZS5cbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBKd2tzVW5hdmFpbGFibGVFcnJvciB8fCBlcnJvciBpbnN0YW5jZW9mIFNlcnZpY2VLZXlFcnJvcikge1xuICAgICAgbG9nZ2VyLndhcm4oJ1JlamVjdGluZyByZXF1ZXN0OiB0b2tlbiBzaWduaW5nIGtleXMgdW5hdmFpbGFibGUnLCB7IGVycm9yOiBlcnJvci5tZXNzYWdlIH0pO1xuICAgICAgcmV0dXJuIHNlbmRFcnJvcihcbiAgICAgICAgcmVzLCBIdHRwU3RhdHVzLlNFUlZJQ0VfVU5BVkFJTEFCTEUsXG4gICAgICAgICdUb2tlbiB2ZXJpZmljYXRpb24gaXMgdGVtcG9yYXJpbHkgdW5hdmFpbGFibGU7IHBsZWFzZSByZXRyeScsXG4gICAgICAgIEVycm9yQ29kZS5TRVJWSUNFX1VOQVZBSUxBQkxFLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBVbmtub3duS2lkRXJyb3IgfHwgZXJyb3IgaW5zdGFuY2VvZiBqd3QuSnNvbldlYlRva2VuRXJyb3IpIHtcbiAgICAgIHJldHVybiBzZW5kRXJyb3IocmVzLCBIdHRwU3RhdHVzLlVOQVVUSE9SSVpFRCwgJ0ludmFsaWQgdG9rZW4nLCBFcnJvckNvZGUuVE9LRU5fSU5WQUxJRCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlbmRFcnJvcihyZXMsIEh0dHBTdGF0dXMuVU5BVVRIT1JJWkVELCAnQXV0aGVudGljYXRpb24gZmFpbGVkJywgRXJyb3JDb2RlLlVOQVVUSE9SSVpFRCk7XG4gIH1cbn1cblxuIl19
|
|
202
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21pZGRsZXdhcmUvYXV0aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBUXRDLE9BQU8sR0FBRyxNQUFNLGNBQWMsQ0FBQztBQUMvQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLDJCQUEyQixFQUFFLG9CQUFvQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0UsT0FBTyxFQUF1QixNQUFNLG9CQUFvQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxXQUFXLEVBQXdCLE1BQU0sc0JBQXNCLENBQUM7QUFDekUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFakQsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLGlCQUFpQixDQUFDLENBQUM7QUFvRC9DLE1BQU0sVUFBVSxXQUFXLENBQ3pCLFlBQTJDLEVBQzNDLEdBQWMsRUFDZCxJQUFtQjtJQUVuQixJQUFJLFlBQVksSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLFNBQVMsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM3RCxPQUFPLFlBQVksQ0FBQyxFQUFFLEVBQUUsWUFBdUIsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELE1BQU0sT0FBTyxHQUFJLFlBQW1DLElBQUksRUFBRSxDQUFDO0lBQzNELE1BQU0sSUFBSSxHQUFHLFlBQVksQ0FBQyxDQUFDLEdBQVksRUFBRSxRQUFrQixFQUFFLFNBQXVCLEVBQUUsRUFBRTtRQUN0RixZQUFZLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDbEQsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDckIsSUFBSSxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDekIsWUFBWSxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE9BQU8sQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNySixDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBQ0QsWUFBWSxDQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBRTVDLFNBQVMsWUFBWSxDQUNuQixPQUEyQixFQUMzQixHQUFZLEVBQ1osR0FBYSxFQUNiLElBQWtCO0lBRWxCLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO0lBRTdDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNoQixPQUFPLFNBQVMsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLFlBQVksRUFBRSwrQkFBK0IsRUFBRSxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDM0csQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDaEQsT0FBTyxTQUFTLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxZQUFZLEVBQUUsbURBQW1ELEVBQUUsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQy9ILENBQUM7SUFFRCx5RUFBeUU7SUFDekUsdUVBQXVFO0lBQ3ZFLDRFQUE0RTtJQUM1RSwrREFBK0Q7SUFDL0Qsa0NBQWtDO0lBQ2xDLElBQUksY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDN0IsS0FBSyxhQUFhLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3RELE9BQU87SUFDVCxDQUFDO0lBRUQsMEVBQTBFO0lBQzFFLDBFQUEwRTtJQUMxRSxnQ0FBZ0M7SUFDaEMsS0FBSyxlQUFlLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0RSxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILEtBQUssVUFBVSxhQUFhLENBQzFCLE9BQTJCLEVBQzNCLEdBQVcsRUFDWCxHQUFZLEVBQ1osR0FBYSxFQUNiLElBQWtCO0lBRWxCLDRFQUE0RTtJQUM1RSwwRUFBMEU7SUFDMUUsOEVBQThFO0lBQzlFLHFFQUFxRTtJQUNyRSxNQUFNLEVBQUUsY0FBYyxFQUFFLDhCQUE4QixFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUMsaUNBQWlDLENBQUMsQ0FBQztJQUMzRyxJQUFJLEtBQWEsQ0FBQztJQUNsQixJQUFJLENBQUM7UUFDSCxLQUFLLEdBQUcsTUFBTSxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixJQUFJLEtBQUssWUFBWSw4QkFBOEIsRUFBRSxDQUFDO1lBQ3BELE9BQU8sU0FBUyxDQUNkLEdBQUcsRUFBRSxVQUFVLENBQUMsbUJBQW1CLEVBQ25DLGtFQUFrRSxFQUNsRSxTQUFTLENBQUMsbUJBQW1CLENBQzlCLENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxZQUFZLEVBQUUsK0JBQStCLEVBQUUsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzNHLENBQUM7SUFDRCxNQUFNLGVBQWUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDeEQsQ0FBQztBQUVELEtBQUssVUFBVSxlQUFlLENBQzVCLE9BQTJCLEVBQzNCLFFBQWdCLEVBQ2hCLEdBQVksRUFDWixHQUFhLEVBQ2IsSUFBa0I7SUFFbEIsSUFBSSxDQUFDO1FBQ0gsMkVBQTJFO1FBQzNFLDBFQUEwRTtRQUMxRSw0RUFBNEU7UUFDNUUsaUVBQWlFO1FBQ2pFLDRFQUE0RTtRQUM1RSxXQUFXO1FBQ1gsTUFBTSxPQUFPLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVsRCxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDOUIsT0FBTyxTQUFTLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxZQUFZLEVBQUUsaURBQWlELEVBQUUsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzdILENBQUM7UUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3RFLE9BQU8sU0FBUyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsWUFBWSxFQUFFLCtCQUErQixFQUFFLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMzRyxDQUFDO1FBRUQsMEVBQTBFO1FBQzFFLHFFQUFxRTtRQUNyRSx1RUFBdUU7UUFDdkUscUhBQXFIO1FBQ3JILDJFQUEyRTtRQUMzRSxJQUFJLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDbEMsV0FBVyxDQUFDLDRCQUE0QixFQUFFLEVBQUUsT0FBTyxFQUFFLGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1lBQzVGLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUNBQW1DLEVBQUUsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDdkUsT0FBTyxTQUFTLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxZQUFZLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ25HLENBQUM7UUFFRCxHQUFHLENBQUMsSUFBSSxHQUFHLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQztRQUUxQiw2RUFBNkU7UUFDN0UsMkVBQTJFO1FBQzNFLHlFQUF5RTtRQUN6RSxzRUFBc0U7UUFDdEUsSUFBSSwyQkFBMkIsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDckQsSUFBSSxHQUFHLENBQUMsTUFBTTtnQkFBRSxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUseUJBQXlCLENBQUMsQ0FBQztZQUNsRSxPQUFPLFNBQVMsQ0FDZCxHQUFHLEVBQUUsVUFBVSxDQUFDLFNBQVMsRUFDekIsaUdBQWlHLEVBQ2pHLFNBQVMsQ0FBQyx1QkFBdUIsQ0FDbEMsQ0FBQztRQUNKLENBQUM7UUFFRCw0REFBNEQ7UUFDNUQsMkVBQTJFO1FBQzNFLDJFQUEyRTtRQUMzRSw2RUFBNkU7UUFDN0UsNEVBQTRFO1FBQzVFLHFFQUFxRTtRQUNyRSw2QkFBNkI7UUFDN0IsSUFBSSxPQUFPLENBQUMsb0JBQW9CLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDMUMsV0FBVyxDQUFDLCtCQUErQixFQUFFLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxtQkFBbUIsRUFBRSxDQUFDLENBQUM7WUFDMUcsaUJBQWlCLENBQUMsR0FBRyxFQUFFLGVBQWUsQ0FBQyxDQUFDO1lBQ3hDLE9BQU8sU0FBUyxDQUNkLEdBQUcsRUFBRSxVQUFVLENBQUMsU0FBUyxFQUN6Qix1RkFBdUYsRUFDdkYsU0FBUyxDQUFDLHVCQUF1QixDQUNsQyxDQUFDO1FBQ0osQ0FBQztRQUVELHFFQUFxRTtRQUNyRSxJQUFJLE9BQU8sQ0FBQyxZQUFZO2VBQ25CLGtCQUFrQixDQUFDLEVBQUUsWUFBWSxFQUFFLE9BQU8sQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7WUFBRSxPQUFPO1FBRWhLLHdFQUF3RTtRQUN4RSw4RUFBOEU7UUFDOUUsOEVBQThFO1FBQzlFLDhFQUE4RTtRQUM5RSw0RUFBNEU7UUFDNUUsSUFBSSxPQUFPLENBQUMsc0JBQXNCLElBQUksT0FBTyxDQUFDLFlBQVksS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNwRSxNQUFNLFdBQVcsR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1lBQzdELE1BQU0sYUFBYSxHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFDakUsSUFBSSxXQUFXO2dCQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxHQUFHLFdBQVcsQ0FBQztZQUN2RCxJQUFJLGFBQWE7Z0JBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxhQUFhLENBQUM7UUFDL0QsQ0FBQztRQUVELHFFQUFxRTtRQUNyRSxFQUFFO1FBQ0YsMkVBQTJFO1FBQzNFLDRFQUE0RTtRQUM1RSx3RUFBd0U7UUFDeEUsMkVBQTJFO1FBQzNFLCtFQUErRTtRQUMvRSw2RUFBNkU7UUFDN0UsNEVBQTRFO1FBQzVFLDhFQUE4RTtRQUM5RSw4RUFBOEU7UUFDOUUsMkVBQTJFO1FBQzNFLDBFQUEwRTtRQUMxRSxvRUFBb0U7UUFDcEUsTUFBTSxNQUFNLEdBQUksR0FBNkQsQ0FBQyxPQUFPLENBQUM7UUFDdEYsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLE1BQU0sQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLEdBQTZCLENBQUMsQ0FBQztRQUMvRCxDQUFDO1FBRUQsb0VBQW9FO1FBQ3BFLDRFQUE0RTtRQUM1RSxJQUFJLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDbEMsMEVBQTBFO1lBQzFFLDBFQUEwRTtZQUMxRSw2REFBNkQ7WUFDN0QsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUN4QyxJQUFJLE9BQU87b0JBQUUsT0FBTyxTQUFTLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxZQUFZLEVBQUUsT0FBTyxFQUFFLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDOUYscUJBQXFCLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN4QyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDZixPQUFPO1FBQ1QsQ0FBQztRQUVELDJFQUEyRTtRQUMzRSw4RUFBOEU7UUFDOUUscUJBQXFCLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLElBQUksS0FBSyxZQUFZLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzNDLE9BQU8sU0FBUyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsWUFBWSxFQUFFLG1CQUFtQixFQUFFLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMvRixDQUFDO1FBRUQsNEVBQTRFO1FBQzVFLHdFQUF3RTtRQUN4RSx5RUFBeUU7UUFDekUsNEVBQTRFO1FBQzVFLDBFQUEwRTtRQUMxRSxvRUFBb0U7UUFDcEUsSUFBSSxLQUFLLFlBQVksb0JBQW9CLElBQUksS0FBSyxZQUFZLGVBQWUsRUFBRSxDQUFDO1lBQzlFLE1BQU0sQ0FBQyxJQUFJLENBQUMsbURBQW1ELEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDM0YsT0FBTyxTQUFTLENBQ2QsR0FBRyxFQUFFLFVBQVUsQ0FBQyxtQkFBbUIsRUFDbkMsNkRBQTZELEVBQzdELFNBQVMsQ0FBQyxtQkFBbUIsQ0FDOUIsQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLEtBQUssWUFBWSxlQUFlLElBQUksS0FBSyxZQUFZLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQy9FLE9BQU8sU0FBUyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDM0YsQ0FBQztRQUVELE9BQU8sU0FBUyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsWUFBWSxFQUFFLHVCQUF1QixFQUFFLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNsRyxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIGByZXF1aXJlQXV0aGA6IGJlYXJlciAvIGFjY2Vzcy1rZXkgYXV0aGVudGljYXRpb24sIHRoZSBjaGVja3MgZXZlcnlcbiAqIHZlcmlmaWVkIHJlcXVlc3QgcGFzc2VzLCBhbmQgdGhlIHRlbmFudCBpZGVudGl0eSBpdCBhdHRhY2hlcy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFJlcXVlc3QsIFJlc3BvbnNlLCBOZXh0RnVuY3Rpb24gfSBmcm9tICdleHByZXNzJztcbmltcG9ydCBqd3QgZnJvbSAnanNvbndlYnRva2VuJztcbmltcG9ydCB7IHJlZnVzZUZvckFzc3VyYW5jZSB9IGZyb20gJy4vYXNzdXJhbmNlLmpzJztcbmltcG9ydCB7IHJ1bkRlZmVycmVkUXVvdGFDaGVjayB9IGZyb20gJy4vZGVmZXJyZWQtcXVvdGEtY2hlY2suanMnO1xuaW1wb3J0IHsgaGFzVmFsaWRJZGVudGl0eUNsYWltcywgdmVyaWZ5QmVhcmVyVG9rZW4gfSBmcm9tICcuL2p3dC12ZXJpZnkuanMnO1xuaW1wb3J0IHsgcmVjb3JkQXV0aHpEZW5pYWwgfSBmcm9tICcuL3Blcm1pc3Npb24tZ2F0ZXMuanMnO1xuaW1wb3J0IHsgY2hlY2tSZXZvY2F0aW9uLCBpc0ltcGVyc29uYXRpb25Xcml0ZUJsb2NrZWQsIG5lZWRzUmV2b2NhdGlvbkNoZWNrIH0gZnJvbSAnLi9yZXZvY2F0aW9uLmpzJztcbmltcG9ydCB7IHRhZ1JvdXRlR2F0ZSB9IGZyb20gJy4vcm91dGUtdGFibGUuanMnO1xuaW1wb3J0IHsgaXNTZXJ2aWNlVG9rZW5EZW5pZWQsIHNlcnZpY2VOYW1lT2YgfSBmcm9tICcuL3NlcnZpY2UtdG9rZW5zLmpzJztcbmltcG9ydCB7IEh0dHBTdGF0dXMgfSBmcm9tICcuLi9jb25zdGFudHMvaHR0cC1zdGF0dXMuanMnO1xuaW1wb3J0IHsgSndrc1VuYXZhaWxhYmxlRXJyb3IsIFVua25vd25LaWRFcnJvciB9IGZyb20gJy4uL3NlcnZpY2VzL2p3a3MtY2FjaGUuanMnO1xuaW1wb3J0IHsgU2VydmljZUtleUVycm9yLCBzZXJ2aWNlSWRlbnRpdHkgfSBmcm9tICcuLi9zZXJ2aWNlcy9zZXJ2aWNlLWtleXMuanMnO1xuaW1wb3J0IHsgdHlwZSBBc3N1cmFuY2VMZXZlbCB9IGZyb20gJy4uL3R5cGVzL2NvbW1vbi5qcyc7XG5pbXBvcnQgeyBFcnJvckNvZGUgfSBmcm9tICcuLi90eXBlcy9lcnJvci1jb2Rlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IEh0dHBSZXF1ZXN0IH0gZnJvbSAnLi4vdHlwZXMvaHR0cC5qcyc7XG5pbXBvcnQgeyBpc09wYXF1ZUFwaUtleSB9IGZyb20gJy4uL3V0aWxzL2FwaS1rZXkuanMnO1xuaW1wb3J0IHsgZ2V0SGVhZGVyU3RyaW5nIH0gZnJvbSAnLi4vdXRpbHMvaGVhZGVycy5qcyc7XG5pbXBvcnQgeyBnZXRJZGVudGl0eSwgdHlwZSBSZXF1ZXN0SWRlbnRpdHkgfSBmcm9tICcuLi91dGlscy9pZGVudGl0eS5qcyc7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIgfSBmcm9tICcuLi91dGlscy9sb2dnZXIuanMnO1xuaW1wb3J0IHsgZW1pdENvdW50ZXIgfSBmcm9tICcuLi91dGlscy9tZXRyaWMtZW1pdHRlci5qcyc7XG5pbXBvcnQgeyBzZW5kRXJyb3IgfSBmcm9tICcuLi91dGlscy9yZXNwb25zZS5qcyc7XG5cbmNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcignYXV0aC1taWRkbGV3YXJlJyk7XG5leHBvcnQgaW50ZXJmYWNlIFJlcXVpcmVBdXRoT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBbGxvdyB4LW9yZy1pZC94LW9yZy1uYW1lIGhlYWRlcnMgdG8gb3ZlcnJpZGUgdGhlIEpXVCdzIG9yZ2FuaXphdGlvbiBmaWVsZHMuXG4gICAqXG4gICAqIFdoZW4gZW5hYmxlZCwgdGhlIGB4LW9yZy1pZGAvYHgtb3JnLW5hbWVgIGhlYWRlcnMgb3ZlcnJpZGUgdGhlIGNhbGxlcidzIG9yZ1xuICAgKiDigJQgYnV0IE9OTFkgZm9yIGEgdmVyaWZpZWQgU1lTLUFETUlOIChgaXNTdXBlckFkbWluYCBjbGFpbSkuIEZvciBhbnkgb3JkaW5hcnlcbiAgICogYXV0aGVudGljYXRlZCB1c2VyIHRoZSBoZWFkZXJzIGFyZSBpZ25vcmVkLCBzbyBlbmFibGluZyB0aGlzIGNhbiBuZXZlciBsZXQgYVxuICAgKiBub3JtYWwgdXNlciBpbXBlcnNvbmF0ZSBhbm90aGVyIHRlbmFudCdzIG9yZy4gVXNlIGZvciBjcm9zcy1vcmcgYWRtaW4gdG9vbGluZ1xuICAgKiAoZS5nLiBhIHN5c2FkbWluIG1hbmFnaW5nIGEgZ2l2ZW4gb3JnJ3MgYmlsbGluZykuIElmIHVuc3VyZSwgbGVhdmUgaXQgZGlzYWJsZWQuXG4gICAqL1xuICBhbGxvd09yZ0hlYWRlck92ZXJyaWRlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIERlbWFuZCB0aGF0IHRoZSB3aG9sZSBTRVNTSU9OIGJlIGF0IGxlYXN0IHRoaXMgYXNzdXJhbmNlIGxldmVsLlxuICAgKlxuICAgKiBgbWluQXNzdXJhbmNlOiAyYCBtZWFucyB0aGUgcGVyc29uIGF1dGhlbnRpY2F0ZWQgd2l0aCBhIHNlY29uZCBmYWN0b3Ig4oCUIGFcbiAgICogcGFzc2tleSB3aXRoIHVzZXIgdmVyaWZpY2F0aW9uLCBhIHBhc3N3b3JkIHBsdXMgYW4gYXV0aGVudGljYXRvciBjb2RlLCBvclxuICAgKiBTU08gdGhyb3VnaCBhbiBJZFAgdGhlIG9yZyBtYXJrZWQgYXMgZW5mb3JjaW5nIE1GQS4gQSB3ZWFrZXIgdG9rZW4gZ2V0c1xuICAgKiAqKjQwMSBgTUZBX1JFUVVJUkVEYCoqLCB3aGljaCB0aGUgY2xpZW50IGFuc3dlcnMgYnkgc2VuZGluZyB0aGUgcGVyc29uIHRvXG4gICAqIGVucm9sbWVudCBvciB0byBhIHN0cm9uZ2VyIHNpZ24taW47IHJlZnJlc2hpbmcgY2Fubm90IGhlbHAsIGJlY2F1c2UgYGFhbGBcbiAgICogbGl2ZXMgb24gdGhlIHNlc3Npb24gc2xvdCBhbmQgYSByZWZyZXNoIG5ldmVyIHJhaXNlcyBpdC5cbiAgICpcbiAgICogVGhpcyBpcyB0aGUgU0VTU0lPTi1sZXZlbCBjb3VudGVycGFydCB0byB7QGxpbmsgcmVxdWlyZVN0ZXBVcH0sIHdoaWNoIHN0YXlzXG4gICAqIGEgZnJlc2gsIHBlci1hY3Rpb24gY29uZmlybWF0aW9uLiBVc2UgYm90aCBvbiB0aGUgbW9zdCBkYW5nZXJvdXMgcm91dGVzLlxuICAgKlxuICAgKiBNQUNISU5FUyBORVZFUiBTQVRJU0ZZIElULiBBIHNlcnZpY2UgcHJpbmNpcGFsLCBhbiBvcmcgc2VydmljZSBhY2NvdW50IGFuZFxuICAgKiBhbiBleGNoYW5nZWQgYWNjZXNzIGtleSBhbGwgZ2V0ICoqNDAzIGBIVU1BTl9TRVNTSU9OX1JFUVVJUkVEYCoqIOKAlCB0aGVyZSBpc1xuICAgKiBubyBwZXJzb24gYmVoaW5kIHRoZW0gdG8gaGF2ZSBwcmVzZW50ZWQgYSBmYWN0b3IsIHNvIFwiYXNzdXJhbmNlXCIgaXMgbm90IGFcbiAgICogcXVlc3Rpb24gdGhlaXIgY3JlZGVudGlhbCBjYW4gYW5zd2VyLiBUaGF0IGlzIGRlbGliZXJhdGVseSBub3QgYSBzaWxlbnRcbiAgICogcGFzcy10aHJvdWdoIGZvciBpbnRlcm5hbCBzZXJ2aWNlczogYSByb3V0ZSB0aGF0IGRlbWFuZHMgTUZBIGlzIGEgcm91dGUgYVxuICAgKiBodW1hbiBpcyBkb2luZyBzb21ldGhpbmcgZGFuZ2Vyb3VzIG9uLlxuICAgKi9cbiAgbWluQXNzdXJhbmNlPzogQXNzdXJhbmNlTGV2ZWw7XG4gIC8qKlxuICAgKiBXaXRoIHtAbGluayBtaW5Bc3N1cmFuY2V9LCBhZGRpdGlvbmFsbHkgYm91bmQgaG93IGxvbmcgYWdvIHRoYXQgc2lnbi1pblxuICAgKiBoYXBwZW5lZCAoc2Vjb25kcywgY29tcGFyZWQgYWdhaW5zdCB0aGUgdG9rZW4ncyBgYXV0aF90aW1lYCkuIEEgc2Vzc2lvbiB0aGF0XG4gICAqIGlzIE1GQS1ncmFkZSBidXQgb2xkZXIgdGhhbiB0aGlzIGdldHMgKio0MDEgYFJFQVVUSF9SRVFVSVJFRGAqKi4gSWdub3JlZFxuICAgKiB3aXRob3V0IGBtaW5Bc3N1cmFuY2VgIOKAlCBcImhvdyByZWNlbnRcIiBpcyBvbmx5IG1lYW5pbmdmdWwgb25jZSBcImhvdyBzdHJvbmdcIlxuICAgKiBpcyBiZWluZyBhc2tlZC5cbiAgICovXG4gIG1heEFnZT86IG51bWJlcjtcbn1cblxuLyoqIEpXVCBhdXRoIG1pZGRsZXdhcmUuIFVzZSBkaXJlY3RseSBvciBjYWxsIHdpdGggb3B0aW9ucy4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXF1aXJlQXV0aChcbiAgcmVxOiBSZXF1ZXN0LFxuICByZXM6IFJlc3BvbnNlLFxuICBuZXh0OiBOZXh0RnVuY3Rpb24sXG4pOiB2b2lkO1xuZXhwb3J0IGZ1bmN0aW9uIHJlcXVpcmVBdXRoKFxuICBvcHRpb25zPzogUmVxdWlyZUF1dGhPcHRpb25zLFxuKTogKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSwgbmV4dDogTmV4dEZ1bmN0aW9uKSA9PiB2b2lkO1xuZXhwb3J0IGZ1bmN0aW9uIHJlcXVpcmVBdXRoKFxuICByZXFPck9wdGlvbnM/OiBSZXF1ZXN0IHwgUmVxdWlyZUF1dGhPcHRpb25zLFxuICByZXM/OiBSZXNwb25zZSxcbiAgbmV4dD86IE5leHRGdW5jdGlvbixcbik6IHZvaWQgfCAoKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSwgbmV4dDogTmV4dEZ1bmN0aW9uKSA9PiB2b2lkKSB7XG4gIGlmIChyZXFPck9wdGlvbnMgJiYgcmVzICYmIG5leHQgJiYgJ2hlYWRlcnMnIGluIHJlcU9yT3B0aW9ucykge1xuICAgIHJldHVybiBfcmVxdWlyZUF1dGgoe30sIHJlcU9yT3B0aW9ucyBhcyBSZXF1ZXN0LCByZXMsIG5leHQpO1xuICB9XG5cbiAgY29uc3Qgb3B0aW9ucyA9IChyZXFPck9wdGlvbnMgYXMgUmVxdWlyZUF1dGhPcHRpb25zKSB8fCB7fTtcbiAgY29uc3QgZ2F0ZSA9IHRhZ1JvdXRlR2F0ZSgocmVxOiBSZXF1ZXN0LCByZXNJbm5lcjogUmVzcG9uc2UsIG5leHRJbm5lcjogTmV4dEZ1bmN0aW9uKSA9PiB7XG4gICAgX3JlcXVpcmVBdXRoKG9wdGlvbnMsIHJlcSwgcmVzSW5uZXIsIG5leHRJbm5lcik7XG4gIH0sIHsga2luZDogJ2F1dGgnIH0pO1xuICBpZiAob3B0aW9ucy5taW5Bc3N1cmFuY2UpIHtcbiAgICB0YWdSb3V0ZUdhdGUoZ2F0ZSwgeyBraW5kOiAnYXNzdXJhbmNlJywgbWluQXNzdXJhbmNlOiBvcHRpb25zLm1pbkFzc3VyYW5jZSwgLi4uKG9wdGlvbnMubWF4QWdlICE9PSB1bmRlZmluZWQgPyB7IG1heEFnZTogb3B0aW9ucy5tYXhBZ2UgfSA6IHt9KSB9KTtcbiAgfVxuICByZXR1cm4gZ2F0ZTtcbn1cbnRhZ1JvdXRlR2F0ZShyZXF1aXJlQXV0aCwgeyBraW5kOiAnYXV0aCcgfSk7XG5cbmZ1bmN0aW9uIF9yZXF1aXJlQXV0aChcbiAgb3B0aW9uczogUmVxdWlyZUF1dGhPcHRpb25zLFxuICByZXE6IFJlcXVlc3QsXG4gIHJlczogUmVzcG9uc2UsXG4gIG5leHQ6IE5leHRGdW5jdGlvbixcbik6IHZvaWQge1xuICBjb25zdCBhdXRoSGVhZGVyID0gcmVxLmhlYWRlcnMuYXV0aG9yaXphdGlvbjtcblxuICBpZiAoIWF1dGhIZWFkZXIpIHtcbiAgICByZXR1cm4gc2VuZEVycm9yKHJlcywgSHR0cFN0YXR1cy5VTkFVVEhPUklaRUQsICdBdXRob3JpemF0aW9uIGhlYWRlciByZXF1aXJlZCcsIEVycm9yQ29kZS5UT0tFTl9NSVNTSU5HKTtcbiAgfVxuXG4gIGNvbnN0IHBhcnRzID0gYXV0aEhlYWRlci5zcGxpdCgnICcpO1xuICBpZiAocGFydHMubGVuZ3RoICE9PSAyIHx8IHBhcnRzWzBdICE9PSAnQmVhcmVyJykge1xuICAgIHJldHVybiBzZW5kRXJyb3IocmVzLCBIdHRwU3RhdHVzLlVOQVVUSE9SSVpFRCwgJ0ludmFsaWQgYXV0aG9yaXphdGlvbiBmb3JtYXQuIFVzZTogQmVhcmVyIDx0b2tlbj4nLCBFcnJvckNvZGUuVE9LRU5fSU5WQUxJRCk7XG4gIH1cblxuICAvLyBBbiBPUEFRVUUgQUNDRVNTIEtFWSAoYHBiX3BhdF/igKZgIC8gYHBiX3NhX+KApmApIGNhcnJpZXMgbm8gY2xhaW1zIGFuZCBub1xuICAvLyBzaWduYXR1cmUsIHNvIGl0IGNhbm5vdCBiZSB2ZXJpZmllZCBoZXJlLiBUcmFkZSBpdCBhdCBwbGF0Zm9ybSBmb3IgYVxuICAvLyBzaG9ydC1saXZlZCBKV1QgKGNhY2hlZCBpbi1wcm9jZXNzIHVudGlsIGl0IGV4cGlyZXMpIGFuZCB0aGVuIHZlcmlmeSB0aGF0XG4gIC8vIEpXVCBvbiB0aGUgbm9ybWFsIHBhdGgg4oCUIHNlcnZpY2VzIG5ldmVyIHJlYWQgYSBrZXkgaGFzaC4gU2VlXG4gIC8vIGBzZXJ2aWNlcy9hcGkta2V5LWV4Y2hhbmdlLnRzYC5cbiAgaWYgKGlzT3BhcXVlQXBpS2V5KHBhcnRzWzFdKSkge1xuICAgIHZvaWQgcmVzb2x2ZUFwaUtleShvcHRpb25zLCBwYXJ0c1sxXSwgcmVxLCByZXMsIG5leHQpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIGAuY2F0Y2gobmV4dClgIGZvcndhcmRzIGEgRE9XTlNUUkVBTSBzeW5jaHJvbm91cyB0aHJvdyBmcm9tIGBuZXh0KClgIHRvXG4gIC8vIEV4cHJlc3MncyBlcnJvciBtaWRkbGV3YXJlIOKAlCB2ZXJpZmljYXRpb24gaXRzZWxmIG5ldmVyIHJlamVjdHMgKGl0IG1hcHNcbiAgLy8gZXZlcnkgZmFpbHVyZSB0byBhIHJlc3BvbnNlKS5cbiAgdm9pZCB2ZXJpZnlBbmRBdHRhY2gob3B0aW9ucywgcGFydHNbMV0sIHJlcSwgcmVzLCBuZXh0KS5jYXRjaChuZXh0KTtcbn1cblxuLyoqXG4gKiBFeGNoYW5nZSBhbiBvcGFxdWUga2V5IGZvciBhIEpXVCwgdGhlbiBjb250aW51ZSBvbiB0aGUgbm9ybWFsIHZlcmlmaWNhdGlvblxuICogcGF0aC4gQSByZWZ1c2VkIGtleSBpcyBhIDQwMTsgYW4gdW5yZWFjaGFibGUgcGxhdGZvcm0gaXMgYSA1MDMgKG5ldmVyIGEgcGFzcyDigJRcbiAqIGFuIHVudmVyaWZpYWJsZSBjcmVkZW50aWFsIGlzIG5vdCBhbiBpZGVudGl0eSkuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHJlc29sdmVBcGlLZXkoXG4gIG9wdGlvbnM6IFJlcXVpcmVBdXRoT3B0aW9ucyxcbiAga2V5OiBzdHJpbmcsXG4gIHJlcTogUmVxdWVzdCxcbiAgcmVzOiBSZXNwb25zZSxcbiAgbmV4dDogTmV4dEZ1bmN0aW9uLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIC8vIExvYWRlZCBMQVpJTFksIG9uIHRoZSBmaXJzdCBrZXkgZXZlciBwcmVzZW50ZWQuIEEgc3RhdGljIGltcG9ydCB3b3VsZCBwdXRcbiAgLy8gdGhlIEhUVFAgY2xpZW50IChhbmQgcGxhdGZvcm0ncyBhZGRyZXNzKSBpbnRvIHRoZSBpbXBvcnQgZ3JhcGggb2YgZXZlcnlcbiAgLy8gbW9kdWxlIHRoYXQgbWVyZWx5IHVzZXMgYHJlcXVpcmVBdXRoYCwgd2hpY2ggYm90aCB3aWRlbnMgdGhlIGJvb3QgZ3JhcGggYW5kXG4gIC8vIGJyZWFrcyBhbnkgdGVzdCB0aGF0IG1vY2tzIGBodHRwLWNsaWVudC5qc2Agd2l0aCBhIHBhcnRpYWwgbW9kdWxlLlxuICBjb25zdCB7IGV4Y2hhbmdlQXBpS2V5LCBBcGlLZXlFeGNoYW5nZVVuYXZhaWxhYmxlRXJyb3IgfSA9IGF3YWl0IGltcG9ydCgnLi4vc2VydmljZXMvYXBpLWtleS1leGNoYW5nZS5qcycpO1xuICBsZXQgdG9rZW46IHN0cmluZztcbiAgdHJ5IHtcbiAgICB0b2tlbiA9IGF3YWl0IGV4Y2hhbmdlQXBpS2V5KGtleSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQXBpS2V5RXhjaGFuZ2VVbmF2YWlsYWJsZUVycm9yKSB7XG4gICAgICByZXR1cm4gc2VuZEVycm9yKFxuICAgICAgICByZXMsIEh0dHBTdGF0dXMuU0VSVklDRV9VTkFWQUlMQUJMRSxcbiAgICAgICAgJ0FjY2Vzcy1rZXkgdmVyaWZpY2F0aW9uIGlzIHRlbXBvcmFyaWx5IHVuYXZhaWxhYmxlOyBwbGVhc2UgcmV0cnknLFxuICAgICAgICBFcnJvckNvZGUuU0VSVklDRV9VTkFWQUlMQUJMRSxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBzZW5kRXJyb3IocmVzLCBIdHRwU3RhdHVzLlVOQVVUSE9SSVpFRCwgJ0ludmFsaWQgb3IgcmV2b2tlZCBhY2Nlc3Mga2V5JywgRXJyb3JDb2RlLlRPS0VOX0lOVkFMSUQpO1xuICB9XG4gIGF3YWl0IHZlcmlmeUFuZEF0dGFjaChvcHRpb25zLCB0b2tlbiwgcmVxLCByZXMsIG5leHQpO1xufVxuXG5hc3luYyBmdW5jdGlvbiB2ZXJpZnlBbmRBdHRhY2goXG4gIG9wdGlvbnM6IFJlcXVpcmVBdXRoT3B0aW9ucyxcbiAgcmF3VG9rZW46IHN0cmluZyxcbiAgcmVxOiBSZXF1ZXN0LFxuICByZXM6IFJlc3BvbnNlLFxuICBuZXh0OiBOZXh0RnVuY3Rpb24sXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgdHJ5IHtcbiAgICAvLyBUd28gY2hhaW5zLCBvbmUgZW50cnkgcG9pbnQgKHNlZSBgdmVyaWZ5QmVhcmVyVG9rZW5gKTogYSB1c2VyIHRva2VuIG11c3RcbiAgICAvLyBiZSBFUzI1NiBzaWduZWQgYnkgcGxhdGZvcm0gYW5kIHZlcmlmaWVkIGFnYWluc3QgaXRzIHB1Ymxpc2hlZCBKV0tTOyBhblxuICAgIC8vIGludGVybmFsIHNlcnZpY2UgdG9rZW4gbXVzdCBiZSBFUzI1NiBzaWduZWQgYnkgdGhhdCBzZXJ2aWNlJ3MgT1dOIGtleSBhbmRcbiAgICAvLyBkZWNsYXJlIGl0c2VsZiBhIHNlcnZpY2UgcHJpbmNpcGFsLiBCb3RoIHBpbiB0aGUgYWxnb3JpdGhtIChub1xuICAgIC8vIGFsZy1jb25mdXNpb24sIG5vIGBhbGc6bm9uZWApIGFuZCBib3RoIGFwcGx5IHRoZSBvcHRpb25hbCBpc3N1ZXIvYXVkaWVuY2VcbiAgICAvLyBiaW5kaW5nLlxuICAgIGNvbnN0IGRlY29kZWQgPSBhd2FpdCB2ZXJpZnlCZWFyZXJUb2tlbihyYXdUb2tlbik7XG5cbiAgICBpZiAoZGVjb2RlZC50eXBlICE9PSAnYWNjZXNzJykge1xuICAgICAgcmV0dXJuIHNlbmRFcnJvcihyZXMsIEh0dHBTdGF0dXMuVU5BVVRIT1JJWkVELCAnT25seSBhY2Nlc3MgdG9rZW5zIGNhbiBiZSB1c2VkIGZvciBBUEkgcmVxdWVzdHMnLCBFcnJvckNvZGUuVE9LRU5fSU5WQUxJRCk7XG4gICAgfVxuXG4gICAgaWYgKCFkZWNvZGVkLnN1YiB8fCAhZGVjb2RlZC5yb2xlIHx8ICFoYXNWYWxpZElkZW50aXR5Q2xhaW1zKGRlY29kZWQpKSB7XG4gICAgICByZXR1cm4gc2VuZEVycm9yKHJlcywgSHR0cFN0YXR1cy5VTkFVVEhPUklaRUQsICdUb2tlbiBtaXNzaW5nIHJlcXVpcmVkIGZpZWxkcycsIEVycm9yQ29kZS5UT0tFTl9JTlZBTElEKTtcbiAgICB9XG5cbiAgICAvLyBTZXJ2aWNlLXRva2VuIGtpbGwtc3dpdGNoOiByZWplY3QgYSBzZXJ2aWNlIHByaW5jaXBhbCB3aG9zZSBzZXJ2aWNlIGhhc1xuICAgIC8vIGJlZW4gYWRkZWQgdG8gdGhlIGRlbnlsaXN0LiBPdGhlcndpc2UgdGhlIG9ubHkgd2F5IHRvIGludmFsaWRhdGUgYVxuICAgIC8vIHNlcnZpY2UncyB0b2tlbnMgYmVmb3JlIHRoZWlyIChzaG9ydCkgVFRMIGlzIHJvdGF0aW5nIHRoYXQgc2VydmljZSdzXG4gICAgLy8gc2lnbmluZyBrZXk7IHRoaXMgY3V0cyBvbmUgY29tcHJvbWlzZWQvcm9ndWUgc2VydmljZSBvZmYgaW1tZWRpYXRlbHkuIE8oMSkgU2V0IGxvb2t1cCwgemVybyBjb3N0IHdoZW4gdGhlIGRlbnlsaXN0XG4gICAgLy8gaXMgZW1wdHkgKHRoZSBkZWZhdWx0KSwgc28gaXQgbmV2ZXIgdGF4ZXMgdGhlIFMyUyBob3QgcGF0aCB1bmxlc3MgYXJtZWQuXG4gICAgaWYgKGlzU2VydmljZVRva2VuRGVuaWVkKGRlY29kZWQpKSB7XG4gICAgICBlbWl0Q291bnRlcignc2VydmljZV90b2tlbl9kZW5pZWRfdG90YWwnLCB7IHNlcnZpY2U6IHNlcnZpY2VOYW1lT2YoZGVjb2RlZCkgPz8gJ3Vua25vd24nIH0pO1xuICAgICAgbG9nZ2VyLndhcm4oJ1JlamVjdGVkIGRlbnlsaXN0ZWQgc2VydmljZSB0b2tlbicsIHsgc3ViOiBkZWNvZGVkLnN1YiB9KTtcbiAgICAgIHJldHVybiBzZW5kRXJyb3IocmVzLCBIdHRwU3RhdHVzLlVOQVVUSE9SSVpFRCwgJ1NlcnZpY2UgdG9rZW4gcmV2b2tlZCcsIEVycm9yQ29kZS5UT0tFTl9SRVZPS0VEKTtcbiAgICB9XG5cbiAgICByZXEudXNlciA9IHsgLi4uZGVjb2RlZCB9O1xuXG4gICAgLy8gUkVBRC1PTkxZIElNUEVSU09OQVRJT04uIFRoZSB0b2tlbiBuYW1lcyB0aGUgb3BlcmF0b3IgQU5EIHNheXMgaXQgbWF5IG9ubHlcbiAgICAvLyBsb29rOiBldmVyeSBzZXJ2aWNlIHJlZnVzZXMgYSBzdGF0ZSBjaGFuZ2UgdW5kZXIgaXQsIG5vdCBvbmx5IHBsYXRmb3JtIOKAlFxuICAgIC8vIGEgc3VwcG9ydCBzZXNzaW9uIHRoYXQgY291bGQgd3JpdGUgdG8gcGx1Z2luL2NvbXBsaWFuY2UvYmlsbGluZyBpcyBub3RcbiAgICAvLyByZWFkLW9ubHkuIENoZWNrZWQgYmVmb3JlIGFueSBvdGhlciBnYXRlIHNvIG5vIHJvdXRlIGNhbiBmb3JnZXQgaXQuXG4gICAgaWYgKGlzSW1wZXJzb25hdGlvbldyaXRlQmxvY2tlZChyZXEubWV0aG9kLCBkZWNvZGVkKSkge1xuICAgICAgaWYgKHJlcS5tZXRob2QpIHJlY29yZEF1dGh6RGVuaWFsKHJlcSwgJ2ltcGVyc29uYXRpb24tcmVhZC1vbmx5Jyk7XG4gICAgICByZXR1cm4gc2VuZEVycm9yKFxuICAgICAgICByZXMsIEh0dHBTdGF0dXMuRk9SQklEREVOLFxuICAgICAgICAnV3JpdGUgcmVxdWVzdHMgYXJlIGRpc2FibGVkIGR1cmluZyByZWFkLW9ubHkgaW1wZXJzb25hdGlvbi4gU3RvcCBpbXBlcnNvbmF0aW5nIHRvIG1ha2UgY2hhbmdlcy4nLFxuICAgICAgICBFcnJvckNvZGUuSU1QRVJTT05BVElPTl9SRUFEX09OTFksXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIEJPT1RTVFJBUC1BRE1JTiBFTlJPTE1FTlQgU0VTU0lPTi4gU3VjaCBhIHRva2VuIGV4aXN0cyBzb1xuICAgIC8vIHRoZSBpbnN0YWxsJ3Mgb25seSBhZG1pbiBjYW4gZW5yb2wgYSBmYWN0b3I7IGl0IGlzIGBhYWw6IDFgIGFuZCBtdXN0IG5vdFxuICAgIC8vIHJlYWNoIGFueXRoaW5nIGVsc2UuIFBsYXRmb3JtIOKAlCB3aGljaCBvd25zIHRoZSBleGNlcHRpb24gYW5kIGtub3dzIHdoaWNoXG4gICAgLy8gb2YgaXRzIG93biByb3V0ZXMgYGluaXQtcGxhdGZvcm0uc2hgIGNhbGxzIOKAlCBhbGxvd3MgYW4gZXhwbGljaXQgZmV3IGJlZm9yZVxuICAgIC8vIHRoaXMgcG9pbnQgKHNlZSBpdHMgb3duIGByZXF1aXJlQXV0aGApOyBpbiBFVkVSWSBvdGhlciBzZXJ2aWNlIHRoZSBhbnN3ZXJcbiAgICAvLyBpcyBzaW1wbHkgbm8sIHNvIHRoZSByZWFjaCByZXN0cmljdGlvbiBob2xkcyB3aXRob3V0IGEgcGVyLXNlcnZpY2VcbiAgICAvLyBhbGxvd2xpc3QgdG8ga2VlcCBpbiBzeW5jLlxuICAgIGlmIChkZWNvZGVkLm1mYUVucm9sbG1lbnRQZW5kaW5nID09PSB0cnVlKSB7XG4gICAgICBlbWl0Q291bnRlcignbWZhX2VuZm9yY2VtZW50X3JlZnVzZWRfdG90YWwnLCB7IHNlcnZpY2U6IHNlcnZpY2VJZGVudGl0eSgpLCByZWFzb246ICdib290c3RyYXBfc2Vzc2lvbicgfSk7XG4gICAgICByZWNvcmRBdXRoekRlbmlhbChyZXEsICdtZmEtZW5yb2xtZW50Jyk7XG4gICAgICByZXR1cm4gc2VuZEVycm9yKFxuICAgICAgICByZXMsIEh0dHBTdGF0dXMuRk9SQklEREVOLFxuICAgICAgICAnRmluaXNoIHNldHRpbmcgdXAgdHdvLWZhY3RvciBhdXRoZW50aWNhdGlvbiBiZWZvcmUgdXNpbmcgdGhlIHJlc3Qgb2YgUGlwZWxpbmUgQnVpbGRlcicsXG4gICAgICAgIEVycm9yQ29kZS5NRkFfRU5ST0xMTUVOVF9SRVFVSVJFRCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gU2Vzc2lvbi1sZXZlbCBhc3N1cmFuY2UgKGByZXF1aXJlQXV0aCh7IG1pbkFzc3VyYW5jZSwgbWF4QWdlIH0pYCkuXG4gICAgaWYgKG9wdGlvbnMubWluQXNzdXJhbmNlXG4gICAgICAmJiByZWZ1c2VGb3JBc3N1cmFuY2UoeyBtaW5Bc3N1cmFuY2U6IG9wdGlvbnMubWluQXNzdXJhbmNlLCAuLi4ob3B0aW9ucy5tYXhBZ2UgIT09IHVuZGVmaW5lZCA/IHsgbWF4QWdlOiBvcHRpb25zLm1heEFnZSB9IDoge30pIH0sIGRlY29kZWQsIHJlcSwgcmVzKSkgcmV0dXJuO1xuXG4gICAgLy8gVGhlIHgtb3JnLWlkL3gtb3JnLW5hbWUgb3ZlcnJpZGUgbGV0cyBhIFNZUy1BRE1JTiBhY3Qgb24gYSBjaG9zZW4gb3JnXG4gICAgLy8gKGNyb3NzLW9yZyBhZG1pbiB0b29saW5nKS4gSXQgaXMgZ2F0ZWQgb24gdGhlIHZlcmlmaWVkIGBpc1N1cGVyQWRtaW5gIGNsYWltXG4gICAgLy8gaGVyZSBzbyB0aGF0IGV2ZW4gYSByb3V0ZSB3aGljaCBtaXN0YWtlbmx5IGVuYWJsZXMgYGFsbG93T3JnSGVhZGVyT3ZlcnJpZGVgXG4gICAgLy8gY2FuIE5FVkVSIGxldCBhbiBvcmRpbmFyeSBhdXRoZW50aWNhdGVkIHVzZXIgc3Bvb2YgYW5vdGhlciB0ZW5hbnQncyBvcmcgdmlhXG4gICAgLy8gdGhlIGhlYWRlciDigJQgZGVmZW5jZS1pbi1kZXB0aCBhZ2FpbnN0IHRoZSBjcm9zcy10ZW5hbnQgYnJlYWsgdGhpcyBjYXVzZWQuXG4gICAgaWYgKG9wdGlvbnMuYWxsb3dPcmdIZWFkZXJPdmVycmlkZSAmJiBkZWNvZGVkLmlzU3VwZXJBZG1pbiA9PT0gdHJ1ZSkge1xuICAgICAgY29uc3QgaGVhZGVyT3JnSWQgPSBnZXRIZWFkZXJTdHJpbmcocmVxLmhlYWRlcnNbJ3gtb3JnLWlkJ10pO1xuICAgICAgY29uc3QgaGVhZGVyT3JnTmFtZSA9IGdldEhlYWRlclN0cmluZyhyZXEuaGVhZGVyc1sneC1vcmctbmFtZSddKTtcbiAgICAgIGlmIChoZWFkZXJPcmdJZCkgcmVxLnVzZXIub3JnYW5pemF0aW9uSWQgPSBoZWFkZXJPcmdJZDtcbiAgICAgIGlmIChoZWFkZXJPcmdOYW1lKSByZXEudXNlci5vcmdhbml6YXRpb25OYW1lID0gaGVhZGVyT3JnTmFtZTtcbiAgICB9XG5cbiAgICAvLyBSZS1kZXJpdmUgdGhlIHJlcXVlc3QncyB0ZW5hbnQgaWRlbnRpdHkgZnJvbSB0aGUgTk9XLXZlcmlmaWVkIEpXVC5cbiAgICAvL1xuICAgIC8vIGBhdHRhY2hSZXF1ZXN0Q29udGV4dGAgcnVucyBhcyBhIGdsb2JhbCBtaWRkbGV3YXJlIEJFRk9SRSB0aGlzIHBlci1yb3V0ZVxuICAgIC8vIGByZXF1aXJlQXV0aGAsIHNvIGl0IGNhcHR1cmVkIGByZXEuY29udGV4dC5pZGVudGl0eWAgd2hpbGUgYHJlcS51c2VyYCB3YXNcbiAgICAvLyBzdGlsbCB1bmRlZmluZWQg4oCUIGF0IHdoaWNoIHBvaW50IGBnZXRJZGVudGl0eWAgZmFsbHMgYmFjayB0byB0aGUgcmF3LFxuICAgIC8vIGNsaWVudC1zZXR0YWJsZSBgeC1vcmctaWRgL2B4LXVzZXItaWRgIGhlYWRlcnMuIEV2ZXJ5IGRvd25zdHJlYW0gdGVuYW50LVxuICAgIC8vIGF1dGhvcml0eSBjb25zdW1lciAocmVxdWlyZU9yZ0lkLCB3aXRoVGVuYW50Q29udGV4dCdzIFJMUyBzY29wZSwgY2hlY2tRdW90YSxcbiAgICAvLyB3aXRoUm91dGUsIGFuZCB0aGUgaWRlbXBvdGVuY3kgbmFtZXNwYWNlKSByZWFkcyBgcmVxLmNvbnRleHQuaWRlbnRpdHlgLCBzb1xuICAgIC8vIHRoYXQgZnJvemVuIGhlYWRlci1kZXJpdmVkIHZhbHVlIOKAlCBub3QgdGhlIEpXVCDigJQgd2FzIGdvdmVybmluZyB0ZW5hbmN5IG9uXG4gICAgLy8gYW55IG5vbi1uZ2lueCBwYXRoLiBSZWNvbXB1dGluZyBoZXJlLCBhdCB0aGUgc2luZ2xlIHBvc3QtdmVyaWZpY2F0aW9uIGNob2tlXG4gICAgLy8gcG9pbnQsIG1ha2VzIGBnZXRJZGVudGl0eWAgcHJlZmVyIHRoZSB2ZXJpZmllZCBgcmVxLnVzZXJgIChzZWUgaWRlbnRpdHkudHMpXG4gICAgLy8gc28gdGVuYW5jeSBpcyBKV1QtYXV0aG9yaXRhdGl2ZS4gVGhlIG5naW54IGB4LW9yZy1pZGAgb3ZlcndyaXRlIHN0YXlzIGFzXG4gICAgLy8gZGVmZW5jZS1pbi1kZXB0aC4gR3VhcmRlZCBvbiBgcmVxLmNvbnRleHRgIHNvIHNlcnZpY2VzL3BhdGhzIHRoYXQgbmV2ZXJcbiAgICAvLyBhdHRhY2ggYSBjb250ZXh0IChvciBydW4gcmVxdWlyZUF1dGggcHJlLWNvbnRleHQpIGFyZSB1bmFmZmVjdGVkLlxuICAgIGNvbnN0IHJlcUN0eCA9IChyZXEgYXMgUmVxdWVzdCAmIHsgY29udGV4dD86IHsgaWRlbnRpdHk6IFJlcXVlc3RJZGVudGl0eSB9IH0pLmNvbnRleHQ7XG4gICAgaWYgKHJlcUN0eCkge1xuICAgICAgcmVxQ3R4LmlkZW50aXR5ID0gZ2V0SWRlbnRpdHkocmVxIGFzIHVua25vd24gYXMgSHR0cFJlcXVlc3QpO1xuICAgIH1cblxuICAgIC8vIFNlc3Npb24gaW52YWxpZGF0aW9uICh0b2tlbi12ZXJzaW9uIHN0b3JlICsgaW1wZXJzb25hdGlvbi1zZXNzaW9uXG4gICAgLy8gbGl2ZW5lc3MpLiBObyBzdG9yZSByZWdpc3RlcmVkIOKHkiBvbmx5IGltcGVyc29uYXRpb24gc2Vzc2lvbnMgYXJlIGNoZWNrZWQuXG4gICAgaWYgKG5lZWRzUmV2b2NhdGlvbkNoZWNrKGRlY29kZWQpKSB7XG4gICAgICAvLyBgLmNhdGNoKG5leHQpYCBmb3J3YXJkcyBhIERPV05TVFJFQU0gc3luY2hyb25vdXMgdGhyb3cgZnJvbSBgbmV4dCgpYCB0b1xuICAgICAgLy8gRXhwcmVzcydzIGVycm9yIG1pZGRsZXdhcmUg4oCUIHRoaXMgYG5leHQoKWAgcnVucyBpbiBhIG1pY3JvdGFzaywgb3V0c2lkZVxuICAgICAgLy8gdGhlIHN1cnJvdW5kaW5nIHRyeS9jYXRjaC4gVGhlIGNoZWNrIGl0c2VsZiBuZXZlciByZWplY3RzLlxuICAgICAgY2hlY2tSZXZvY2F0aW9uKGRlY29kZWQpLnRoZW4oKHJlZnVzYWwpID0+IHtcbiAgICAgICAgaWYgKHJlZnVzYWwpIHJldHVybiBzZW5kRXJyb3IocmVzLCBIdHRwU3RhdHVzLlVOQVVUSE9SSVpFRCwgcmVmdXNhbCwgRXJyb3JDb2RlLlRPS0VOX1JFVk9LRUQpO1xuICAgICAgICBydW5EZWZlcnJlZFF1b3RhQ2hlY2socmVxLCByZXMsIG5leHQpO1xuICAgICAgfSkuY2F0Y2gobmV4dCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gVGhlIGFwaUNhbGxzIGNoZWNrIGEgbW91bnQgYXJtZWQgKGFwaS1zZXJ2ZXIgYGFwaUNhbGxzUXVvdGFgKSBydW5zIGhlcmUsXG4gICAgLy8gbm93IHRoYXQgdGVuYW5jeSBpcyBKV1QtYXV0aG9yaXRhdGl2ZTsgYSBwbGFpbiBuZXh0KCkgd2hlcmUgbm9uZSB3YXMgYXJtZWQuXG4gICAgcnVuRGVmZXJyZWRRdW90YUNoZWNrKHJlcSwgcmVzLCBuZXh0KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBqd3QuVG9rZW5FeHBpcmVkRXJyb3IpIHtcbiAgICAgIHJldHVybiBzZW5kRXJyb3IocmVzLCBIdHRwU3RhdHVzLlVOQVVUSE9SSVpFRCwgJ1Rva2VuIGhhcyBleHBpcmVkJywgRXJyb3JDb2RlLlRPS0VOX0VYUElSRUQpO1xuICAgIH1cblxuICAgIC8vIFRoZSBzaWduaW5nIGtleXMgY291bGRuJ3QgYmUgZmV0Y2hlZCwgc28gdGhlIHRva2VuJ3MgdmFsaWRpdHkgaXMgVU5LTk9XTi5cbiAgICAvLyBGYWlsIENMT1NFRCB3aXRoIGEgcmV0cnlhYmxlIDUwMyDigJQgbmV2ZXIgYSBwYXNzLCBhbmQgbmV2ZXIgYSA0MDEgdGhhdFxuICAgIC8vIHdvdWxkIHNlbmQgYSBsZWdpdGltYXRlIGNsaWVudCBvZmYgdG8gcmUtYXV0aGVudGljYXRlIG92ZXIgb3VyIG91dGFnZS5cbiAgICAvLyBTYW1lIHJlYXNvbmluZyBmb3IgdGhlIFNFUlZJQ0UgY2hhaW46IG5vIHJlYWRhYmxlIGtleSBidW5kbGUgbWVhbnMgbm8gd2F5XG4gICAgLy8gdG8gdGVsbCBhIHBlZXIncyB0b2tlbiBmcm9tIGEgZm9yZ2VyeSwgc28gdGhlIHJlcXVlc3QgaXMgcmVmdXNlZCB3aXRoIGFcbiAgICAvLyByZXRyeWFibGUgNTAzIHJhdGhlciB0aGFuIGFkbWl0dGVkIG9yIGJvdW5jZWQgdG8gcmUtYXV0aGVudGljYXRlLlxuICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEp3a3NVbmF2YWlsYWJsZUVycm9yIHx8IGVycm9yIGluc3RhbmNlb2YgU2VydmljZUtleUVycm9yKSB7XG4gICAgICBsb2dnZXIud2FybignUmVqZWN0aW5nIHJlcXVlc3Q6IHRva2VuIHNpZ25pbmcga2V5cyB1bmF2YWlsYWJsZScsIHsgZXJyb3I6IGVycm9yLm1lc3NhZ2UgfSk7XG4gICAgICByZXR1cm4gc2VuZEVycm9yKFxuICAgICAgICByZXMsIEh0dHBTdGF0dXMuU0VSVklDRV9VTkFWQUlMQUJMRSxcbiAgICAgICAgJ1Rva2VuIHZlcmlmaWNhdGlvbiBpcyB0ZW1wb3JhcmlseSB1bmF2YWlsYWJsZTsgcGxlYXNlIHJldHJ5JyxcbiAgICAgICAgRXJyb3JDb2RlLlNFUlZJQ0VfVU5BVkFJTEFCTEUsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIFVua25vd25LaWRFcnJvciB8fCBlcnJvciBpbnN0YW5jZW9mIGp3dC5Kc29uV2ViVG9rZW5FcnJvcikge1xuICAgICAgcmV0dXJuIHNlbmRFcnJvcihyZXMsIEh0dHBTdGF0dXMuVU5BVVRIT1JJWkVELCAnSW52YWxpZCB0b2tlbicsIEVycm9yQ29kZS5UT0tFTl9JTlZBTElEKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2VuZEVycm9yKHJlcywgSHR0cFN0YXR1cy5VTkFVVEhPUklaRUQsICdBdXRoZW50aWNhdGlvbiBmYWlsZWQnLCBFcnJvckNvZGUuVU5BVVRIT1JJWkVEKTtcbiAgfVxufVxuXG4iXX0=
|
|
@@ -30,4 +30,4 @@ export function runDeferredQuotaCheck(req, res, next) {
|
|
|
30
30
|
delete res.locals[SLOT];
|
|
31
31
|
void check(req, res, next);
|
|
32
32
|
}
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmZXJyZWQtcXVvdGEtY2hlY2suanMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9taWRkbGV3YXJlL2RlZmVycmVkLXF1b3RhLWNoZWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7QUFJdEM7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7QUFDSCxNQUFNLElBQUksR0FBRyxvQkFBb0IsQ0FBQztBQUVsQywyREFBMkQ7QUFDM0QsTUFBTSxVQUFVLHFCQUFxQixDQUFDLEdBQWEsRUFBRSxLQUFxQjtJQUN4RSxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUMzQixDQUFDO0FBRUQsa0ZBQWtGO0FBQ2xGLE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxHQUFZLEVBQUUsR0FBYSxFQUFFLElBQWtCO0lBQ25GLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQStCLENBQUM7SUFDL0QsSUFBSSxDQUFDLEtBQUs7UUFBRSxPQUFPLElBQUksRUFBRSxDQUFDO0lBQzFCLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QixLQUFLLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHR5cGUgeyBOZXh0RnVuY3Rpb24sIFJlcXVlc3QsIFJlcXVlc3RIYW5kbGVyLCBSZXNwb25zZSB9IGZyb20gJ2V4cHJlc3MnO1xuXG4vKipcbiAqIEEgcXVvdGEgY2hlY2sgYXJtZWQgYXQgTU9VTlQgdGltZSBhbmQgcnVuIGJ5IGByZXF1aXJlQXV0aGAgb25jZSB0aGUgY2FsbGVyIGlzXG4gKiB2ZXJpZmllZC5cbiAqXG4gKiBXaHkgZGVmZXJyZWQ6IHRoZSBhcGlDYWxscyBtZXRlciArIGNoZWNrIG1vdW50IE9OQ0UgcGVyIHNlcnZpY2UsIGFoZWFkIG9mIGl0c1xuICogd2hvbGUgdXNlciBzdXJmYWNlIChhcGktc2VydmVyIGBhcGlDYWxsc1F1b3RhYCksIGJ1dCBhdXRoZW50aWNhdGlvbiBpcyBwZXJcbiAqIHJvdXRlIOKAlCByb3V0ZXJzIG1peCBwdWJsaWMsIHVzZXIgYW5kIG1hY2hpbmUgcm91dGVzIHVuZGVyIG9uZSBwcmVmaXguIEF0IG1vdW50XG4gKiB0aW1lIHRoZXJlIGlzIG5vIHZlcmlmaWVkIG9yZyB0byBjaGVjayB5ZXQsIGFuZCBjaGVja2luZyBhIGhlYWRlci1kZXJpdmVkIG9yXG4gKiBwZWVrZWQgb25lIHdvdWxkIGhhbmQgYSBmb3JnZWQgdG9rZW4gYSB2aWN0aW0gb3JnJ3MgdXNhZ2UgaW4gdGhlIDQyOSBib2R5LiBTb1xuICogdGhlIG1vdW50IG9ubHkgQVJNUyB0aGUgY2hlY2sgaGVyZSwgYW5kIGByZXF1aXJlQXV0aGAgKGFwaS1jb3JlJ3MsIGFuZFxuICogcGxhdGZvcm0ncyBvd24pIHJ1bnMgaXQgYXQgaXRzIHNpbmdsZSBwb3N0LXZlcmlmaWNhdGlvbiBjaG9rZSBwb2ludCwgYWZ0ZXJcbiAqIHRoZSByZXF1ZXN0IGlkZW50aXR5IGhhcyBiZWVuIHJlLWRlcml2ZWQgZnJvbSB0aGUgSldULiBBIHJvdXRlIHRoYXQgbmV2ZXJcbiAqIGF1dGhlbnRpY2F0ZXMgbmV2ZXIgcnVucyBpdCDigJQgdGhlcmUgaXMgbm8gb3JnIHRvIGJpbGwuXG4gKlxuICogQXQgbW9zdCBvbmNlIHBlciByZXF1ZXN0OiBydW5uaW5nIGl0IGVtcHRpZXMgdGhlIHNsb3QsIHNvIGEgc2Vjb25kXG4gKiBgcmVxdWlyZUF1dGhgIGluIHRoZSBzYW1lIGNoYWluIGlzIGEgcGxhaW4gYG5leHQoKWAuXG4gKi9cbmNvbnN0IFNMT1QgPSAnZGVmZXJyZWRRdW90YUNoZWNrJztcblxuLyoqIEFybSBgY2hlY2tgIHRvIHJ1biBhZnRlciB0aGlzIHJlcXVlc3QgYXV0aGVudGljYXRlcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcm1EZWZlcnJlZFF1b3RhQ2hlY2socmVzOiBSZXNwb25zZSwgY2hlY2s6IFJlcXVlc3RIYW5kbGVyKTogdm9pZCB7XG4gIHJlcy5sb2NhbHNbU0xPVF0gPSBjaGVjaztcbn1cblxuLyoqIGByZXF1aXJlQXV0aGAncyBgbmV4dCgpYDogcnVuIHRoZSBhcm1lZCBxdW90YSBjaGVjaywgaWYgYW55LCB0aGVuIGNvbnRpbnVlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1bkRlZmVycmVkUXVvdGFDaGVjayhyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UsIG5leHQ6IE5leHRGdW5jdGlvbik6IHZvaWQge1xuICBjb25zdCBjaGVjayA9IHJlcy5sb2NhbHM/LltTTE9UXSBhcyBSZXF1ZXN0SGFuZGxlciB8IHVuZGVmaW5lZDtcbiAgaWYgKCFjaGVjaykgcmV0dXJuIG5leHQoKTtcbiAgZGVsZXRlIHJlcy5sb2NhbHNbU0xPVF07XG4gIHZvaWQgY2hlY2socmVxLCByZXMsIG5leHQpO1xufVxuIl19
|
|
@@ -57,4 +57,4 @@ export function requireSystemOrgPermission(...permissions) {
|
|
|
57
57
|
requireAssurance({ minAssurance: 2 }),
|
|
58
58
|
];
|
|
59
59
|
}
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNvc3lzdGVtLWd1YXJkLmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWlkZGxld2FyZS9lY29zeXN0ZW0tZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQXdCdEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBRSx5QkFBeUIsRUFBbUIsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRWpEOytFQUMrRTtBQUMvRSxNQUFNLFVBQVUsa0JBQWtCLENBQUMsR0FBWTtJQUM3QyxPQUFPLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0FBQ2pELENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLFlBQVksQ0FBQyxTQUFTLGdCQUFnQixDQUFDLEdBQVksRUFBRSxHQUFhLEVBQUUsSUFBa0I7SUFDcEgsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNkLE9BQU8sU0FBUyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsWUFBWSxFQUFFLHlCQUF5QixFQUFFLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNwRyxDQUFDO0lBQ0QsSUFBSSxrQkFBa0IsQ0FBQyxHQUFHLENBQUM7UUFBRSxPQUFPLElBQUksRUFBRSxDQUFDO0lBQzNDLFdBQVcsQ0FBQyxnQ0FBZ0MsRUFBRSxFQUFFLFNBQVMsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ2xHLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUNyQyxPQUFPLFNBQVMsQ0FDZCxHQUFHLEVBQUUsVUFBVSxDQUFDLFNBQVMsRUFDekIsbUdBQW1HLEVBQ25HLFNBQVMsQ0FBQyxtQkFBbUIsQ0FDOUIsQ0FBQztBQUNKLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO0FBRTFCOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLFVBQVUsMEJBQTBCLENBQUMsR0FBRyxXQUF5QjtJQUNyRSxJQUFJLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsMERBQTBELENBQUMsQ0FBQztJQUMxRyxNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEUsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsMEVBQTBFLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pILENBQUM7SUFDRCxPQUFPO1FBQ0wsZ0JBQWdCO1FBQ2hCLGlCQUFpQixDQUFDLEdBQUcsV0FBVyxDQUFDO1FBQ2pDLGdCQUFnQixDQUFDLEVBQUUsWUFBWSxFQUFFLENBQUMsRUFBRSxDQUFDO0tBQ2xCLENBQUM7QUFDeEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIFRoZSBwbHVnaW4tZWNvc3lzdGVtIGdvdmVybmFuY2UgZ2F0ZSAoZG9jcy9ydW5ib29rcy9lY29zeXN0ZW0tbW9kZXJhdGlvbi5tZCkuXG4gKlxuICogT25seSB0aGUgc3lzdGVtIG9yZyBtYW5hZ2VzIG9yIGFwcHJvdmVzIHRoZSBlY29zeXN0ZW0uIEEgcm91dGUgdGhhdCBleGVyY2lzZXNcbiAqIGEgc3lzdGVtLW9yZy1vbmx5IHBlcm1pc3Npb24gKGBwbHVnaW5zOm1vZGVyYXRlYCwgYHB1Ymxpc2hlcnM6dmVyaWZ5YCkgbXVzdFxuICogdGhlcmVmb3JlIGNoZWNrIHRocmVlIHRoaW5ncywgYW5kIHtAbGluayByZXF1aXJlU3lzdGVtT3JnUGVybWlzc2lvbn0gY29tcG9zZXNcbiAqIHRoZW0gc28gbm8gcm91dGUgY2FuIGZvcmdldCBvbmU6XG4gKlxuICogIDEuIHtAbGluayByZXF1aXJlU3lzdGVtT3JnfSDigJQgdGhlIGNhbGxlcidzIEFDVElWRSBvcmcgaXMgdGhlIHN5c3RlbSBvcmcuIEFcbiAqICAgICB0b2tlbiBtaW50ZWQgaW4gYSB0ZW5hbnQgb3JnIGlzIHJlZnVzZWQgZXZlbiBmb3IgdGhlIHNhbWUgcGVyc29uIChhbmQgZXZlblxuICogICAgIGZvciBhIHN1cGVyYWRtaW46IHRoZXkgc3dpdGNoIHRvIHRoZSBzeXN0ZW0gb3JnIHRvIGFjdCBvbiB0aGUgZWNvc3lzdGVtLFxuICogICAgIHNvIGV2ZXJ5IGdvdmVybmFuY2UgZGVjaXNpb24gaXMgcmVjb3JkZWQgd2l0aCB0aGUgc3lzdGVtIG9yZydzIGlkKS5cbiAqICAyLiB0aGUgcGVybWlzc2lvbiBpdHNlbGYgKGByZXF1aXJlUGVybWlzc2lvbmAsIGFueS1vZik7XG4gKiAgMy4gYW4gTUZBLWdyYWRlIHNlc3Npb24gKGByZXF1aXJlQXNzdXJhbmNlKHsgbWluQXNzdXJhbmNlOiAyIH0pYCksIHdoaWNoIGFsc29cbiAqICAgICByZWZ1c2VzIGV2ZXJ5IG1hY2hpbmUgY3JlZGVudGlhbC5cbiAqXG4gKiBUaGUgcm91dGUtY292ZXJhZ2UgZ292ZXJuYW5jZSBjaGVjayAoYGZpbmRTeXN0ZW1PcmdHdWFyZFZpb2xhdGlvbnNgIGluXG4gKiBgdGVzdGluZy9yb3V0ZS1jb3ZlcmFnZS50c2ApIGZhaWxzIGFueSByb3V0ZSB0aGF0IGdhdGVzIG9uIGEgc3lzdGVtLW9yZy1vbmx5XG4gKiBwZXJtaXNzaW9uIHdpdGhvdXQgMSBhbmQgMywgc28gYSBoYW5kLXJvbGxlZCBjaGFpbiBjYW5ub3Qgc2xpcCB0aHJvdWdoLlxuICovXG5cbmltcG9ydCB0eXBlIHsgTmV4dEZ1bmN0aW9uLCBSZXF1ZXN0LCBSZXF1ZXN0SGFuZGxlciwgUmVzcG9uc2UgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCB7IHJlcXVpcmVBc3N1cmFuY2UgfSBmcm9tICcuL2Fzc3VyYW5jZS5qcyc7XG5pbXBvcnQgeyByZWNvcmRBdXRoekRlbmlhbCwgcmVxdWlyZVBlcm1pc3Npb24gfSBmcm9tICcuL3Blcm1pc3Npb24tZ2F0ZXMuanMnO1xuaW1wb3J0IHsgdGFnUm91dGVHYXRlIH0gZnJvbSAnLi9yb3V0ZS10YWJsZS5qcyc7XG5pbXBvcnQgeyBpc1N5c3RlbU9yZ0lkIH0gZnJvbSAnLi9zeXN0ZW0tb3JnLmpzJztcbmltcG9ydCB7IEh0dHBTdGF0dXMgfSBmcm9tICcuLi9jb25zdGFudHMvaHR0cC1zdGF0dXMuanMnO1xuaW1wb3J0IHsgRXJyb3JDb2RlIH0gZnJvbSAnLi4vdHlwZXMvZXJyb3ItY29kZXMuanMnO1xuaW1wb3J0IHsgaXNTeXN0ZW1PcmdPbmx5UGVybWlzc2lvbiwgdHlwZSBQZXJtaXNzaW9uIH0gZnJvbSAnLi4vdHlwZXMvcGVybWlzc2lvbnMuanMnO1xuaW1wb3J0IHsgZW1pdENvdW50ZXIgfSBmcm9tICcuLi91dGlscy9tZXRyaWMtZW1pdHRlci5qcyc7XG5pbXBvcnQgeyBzZW5kRXJyb3IgfSBmcm9tICcuLi91dGlscy9yZXNwb25zZS5qcyc7XG5cbi8qKiBXaGV0aGVyIHRoZSByZXF1ZXN0J3MgQUNUSVZFIG9yZyAodGhlIHRva2VuJ3MgYG9yZ2FuaXphdGlvbklkYCkgaXMgdGhlIHN5c3RlbVxuICogIG9yZy4gQ29tcGFyZWQgYnkgaWQgb25seSDigJQgYW4gb3JnIG1lcmVseSBOQU1FRCBcInN5c3RlbVwiIG5ldmVyIHF1YWxpZmllcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1N5c3RlbU9yZ1JlcXVlc3QocmVxOiBSZXF1ZXN0KTogYm9vbGVhbiB7XG4gIHJldHVybiBpc1N5c3RlbU9yZ0lkKHJlcS51c2VyPy5vcmdhbml6YXRpb25JZCk7XG59XG5cbi8qKlxuICogUmVxdWlyZSB0aGF0IHRoZSBjYWxsZXIncyBhY3RpdmUgb3JnIGlzIHRoZSBzeXN0ZW0gb3JnLiBDb21wb3NlIGFmdGVyXG4gKiBgcmVxdWlyZUF1dGhgLiBSZWZ1c2FscyBhcmUgNDAzIGBTWVNURU1fT1JHX1JFUVVJUkVEYCwgY291bnRlZFxuICogKGBzeXN0ZW1fb3JnX2d1YXJkX3JlZnVzZWRfdG90YWxgKSBhbmQgYXVkaXRlZCB0aHJvdWdoIHRoZSBzaGFyZWRcbiAqIGBhdXRoei5kZW5pZWRgIHNpbmsgKGByZXF1aXJlZDogJ3N5c3RlbS1vcmcnYCkuXG4gKi9cbmV4cG9ydCBjb25zdCByZXF1aXJlU3lzdGVtT3JnID0gdGFnUm91dGVHYXRlKGZ1bmN0aW9uIHJlcXVpcmVTeXN0ZW1PcmcocmVxOiBSZXF1ZXN0LCByZXM6IFJlc3BvbnNlLCBuZXh0OiBOZXh0RnVuY3Rpb24pOiB2b2lkIHtcbiAgaWYgKCFyZXEudXNlcikge1xuICAgIHJldHVybiBzZW5kRXJyb3IocmVzLCBIdHRwU3RhdHVzLlVOQVVUSE9SSVpFRCwgJ0F1dGhlbnRpY2F0aW9uIHJlcXVpcmVkJywgRXJyb3JDb2RlLlVOQVVUSE9SSVpFRCk7XG4gIH1cbiAgaWYgKGlzU3lzdGVtT3JnUmVxdWVzdChyZXEpKSByZXR1cm4gbmV4dCgpO1xuICBlbWl0Q291bnRlcignc3lzdGVtX29yZ19ndWFyZF9yZWZ1c2VkX3RvdGFsJywgeyBwcmluY2lwYWw6IHJlcS51c2VyLnByaW5jaXBhbFR5cGUgPz8gJ3Vua25vd24nIH0pO1xuICByZWNvcmRBdXRoekRlbmlhbChyZXEsICdzeXN0ZW0tb3JnJyk7XG4gIHJldHVybiBzZW5kRXJyb3IoXG4gICAgcmVzLCBIdHRwU3RhdHVzLkZPUkJJRERFTixcbiAgICAnVGhpcyBhY3Rpb24gaXMgcmVzZXJ2ZWQgZm9yIHRoZSBzeXN0ZW0gb3JnYW5pemF0aW9uIOKAlCBzd2l0Y2ggdG8gaXQgdG8gbWFuYWdlIHRoZSBwbHVnaW4gZWNvc3lzdGVtJyxcbiAgICBFcnJvckNvZGUuU1lTVEVNX09SR19SRVFVSVJFRCxcbiAgKTtcbn0sIHsga2luZDogJ3N5c3RlbU9yZycgfSk7XG5cbi8qKlxuICogVEhFIGdhdGUgZm9yIGFuIGVjb3N5c3RlbS1nb3Zlcm5hbmNlIHJvdXRlOiBzeXN0ZW0gb3JnICsgKGFueSBvZikgdGhlIGdpdmVuXG4gKiBzeXN0ZW0tb3JnLW9ubHkgcGVybWlzc2lvbihzKSArIGFuIE1GQS1ncmFkZSBodW1hbiBzZXNzaW9uLiBSZXR1cm5zIHRoZSBjaGFpblxuICogYXMgYW4gYXJyYXksIHdoaWNoIEV4cHJlc3MgZmxhdHRlbnM6XG4gKlxuICogYGBgdHNcbiAqIHJvdXRlci5wb3N0KCcvcmVxdWVzdHMvOmlkL2FwcHJvdmUnLCByZXF1aXJlQXV0aCwgcmVxdWlyZVN5c3RlbU9yZ1Blcm1pc3Npb24oJ3BsdWdpbnM6bW9kZXJhdGUnKSxcbiAqICAgcmVxdWlyZVN0ZXBVcCwgYXVkaXRlZCgncGx1Z2luLnJlcXVlc3QuYXBwcm92ZScpLCBoYW5kbGVyKTtcbiAqIGBgYFxuICpcbiAqIFRocm93cyBhdCByb3V0ZS1kZWZpbml0aW9uIHRpbWUgd2hlbiBoYW5kZWQgYSBwZXJtaXNzaW9uIHRoYXQgaXMgTk9UXG4gKiBzeXN0ZW0tb3JnLW9ubHkg4oCUIGEgdGVuYW50IHBlcm1pc3Npb24gYmVoaW5kIHRoaXMgZ2F0ZSB3b3VsZCBiZSB1bnJlYWNoYWJsZVxuICogZm9yIGV2ZXJ5IHRlbmFudCwgd2hpY2ggaXMgYWx3YXlzIGEgd2lyaW5nIG1pc3Rha2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXF1aXJlU3lzdGVtT3JnUGVybWlzc2lvbiguLi5wZXJtaXNzaW9uczogUGVybWlzc2lvbltdKTogUmVxdWVzdEhhbmRsZXJbXSB7XG4gIGlmIChwZXJtaXNzaW9ucy5sZW5ndGggPT09IDApIHRocm93IG5ldyBFcnJvcigncmVxdWlyZVN5c3RlbU9yZ1Blcm1pc3Npb24gbmVlZHMgYXQgbGVhc3Qgb25lIHBlcm1pc3Npb24nKTtcbiAgY29uc3QgdGVuYW50ID0gcGVybWlzc2lvbnMuZmlsdGVyKChwKSA9PiAhaXNTeXN0ZW1PcmdPbmx5UGVybWlzc2lvbihwKSk7XG4gIGlmICh0ZW5hbnQubGVuZ3RoID4gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgcmVxdWlyZVN5c3RlbU9yZ1Blcm1pc3Npb24gb25seSB0YWtlcyBzeXN0ZW0tb3JnLW9ubHkgcGVybWlzc2lvbnM7IGdvdCAke3RlbmFudC5qb2luKCcsICcpfWApO1xuICB9XG4gIHJldHVybiBbXG4gICAgcmVxdWlyZVN5c3RlbU9yZyxcbiAgICByZXF1aXJlUGVybWlzc2lvbiguLi5wZXJtaXNzaW9ucyksXG4gICAgcmVxdWlyZUFzc3VyYW5jZSh7IG1pbkFzc3VyYW5jZTogMiB9KSxcbiAgXSBhcyBSZXF1ZXN0SGFuZGxlcltdO1xufVxuIl19
|