UNPKG

projen

Version:

CDK for software projects

275 lines • 90.2 kB
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.toJson_NodeConfigSchema = toJson_NodeConfigSchema;
exports.toJson_NodeConfigSchemaNodeOptions = toJson_NodeConfigSchemaNodeOptions;
exports.toJson_NodeConfigSchemaPermission = toJson_NodeConfigSchemaPermission;
exports.toJson_NodeConfigSchemaTest = toJson_NodeConfigSchemaTest;
exports.toJson_NodeConfigSchemaWatch = toJson_NodeConfigSchemaWatch;
/**
 * Converts an object of type 'NodeConfigSchema' to JSON representation.
 * @internal
 */
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
function toJson_NodeConfigSchema(obj) {
    if (obj === undefined) {
        return undefined;
    }
    const result = {
        '$schema': obj.schema,
        'nodeOptions': toJson_NodeConfigSchemaNodeOptions(obj.nodeOptions),
        'nodeVersion': obj.nodeVersion,
        'permission': toJson_NodeConfigSchemaPermission(obj.permission),
        'test': toJson_NodeConfigSchemaTest(obj.test),
        'watch': toJson_NodeConfigSchemaWatch(obj.watch),
    };
    // filter undefined values
    return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
/**
 * Converts an object of type 'NodeConfigSchemaNodeOptions' to JSON representation.
 * @internal
 */
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
function toJson_NodeConfigSchemaNodeOptions(obj) {
    if (obj === undefined) {
        return undefined;
    }
    const result = {
        'addons': obj.addons,
        'allow-addons': obj.allowAddons,
        'allow-child-process': obj.allowChildProcess,
        'allow-ffi': obj.allowFfi,
        'allow-fs-read': obj.allowFsRead?.map(y => y),
        'allow-fs-write': obj.allowFsWrite?.map(y => y),
        'allow-inspector': obj.allowInspector,
        'allow-net': obj.allowNet,
        'allow-openssl-store': obj.allowOpensslStore,
        'allow-wasi': obj.allowWasi,
        'allow-worker': obj.allowWorker,
        'async-context-frame': obj.asyncContextFrame,
        'conditions': obj.conditions?.map(y => y),
        'cpu-prof': obj.cpuProf,
        'cpu-prof-dir': obj.cpuProfDir,
        'cpu-prof-interval': obj.cpuProfInterval,
        'cpu-prof-name': obj.cpuProfName,
        'debug-arraybuffer-allocations': obj.debugArraybufferAllocations,
        'deprecation': obj.deprecation,
        'diagnostic-dir': obj.diagnosticDir,
        'disable-proto': obj.disableProto,
        'disable-sigusr1': obj.disableSigusr1,
        'disable-warning': obj.disableWarning?.map(y => y),
        'disable-wasm-trap-handler': obj.disableWasmTrapHandler,
        'dns-result-order': obj.dnsResultOrder,
        'enable-fips': obj.enableFips,
        'enable-source-maps': obj.enableSourceMaps,
        'entry-url': obj.entryUrl,
        'experimental-addon-modules': obj.experimentalAddonModules,
        'experimental-detect-module': obj.experimentalDetectModule,
        'experimental-eventsource': obj.experimentalEventsource,
        'experimental-ffi': obj.experimentalFfi,
        'experimental-global-navigator': obj.experimentalGlobalNavigator,
        'experimental-import-meta-resolve': obj.experimentalImportMetaResolve,
        'experimental-loader': obj.experimentalLoader?.map(y => y),
        'experimental-print-required-tla': obj.experimentalPrintRequiredTla,
        'experimental-repl-await': obj.experimentalReplAwait,
        'experimental-require-module': obj.experimentalRequireModule,
        'experimental-shadow-realm': obj.experimentalShadowRealm,
        'experimental-sqlite': obj.experimentalSqlite,
        'experimental-stream-iter': obj.experimentalStreamIter,
        'experimental-vm-modules': obj.experimentalVmModules,
        'experimental-websocket': obj.experimentalWebsocket,
        'experimental-webstorage': obj.experimentalWebstorage,
        'extra-info-on-fatal-exception': obj.extraInfoOnFatalException,
        'force-async-hooks-checks': obj.forceAsyncHooksChecks,
        'force-context-aware': obj.forceContextAware,
        'force-fips': obj.forceFips,
        'force-node-api-uncaught-exceptions-policy': obj.forceNodeApiUncaughtExceptionsPolicy,
        'frozen-intrinsics': obj.frozenIntrinsics,
        'global-search-paths': obj.globalSearchPaths,
        'heap-prof': obj.heapProf,
        'heap-prof-dir': obj.heapProfDir,
        'heap-prof-interval': obj.heapProfInterval,
        'heap-prof-name': obj.heapProfName,
        'heapsnapshot-near-heap-limit': obj.heapsnapshotNearHeapLimit,
        'heapsnapshot-signal': obj.heapsnapshotSignal,
        'icu-data-dir': obj.icuDataDir,
        'import': obj.import?.map(y => y),
        'input-type': obj.inputType,
        'insecure-http-parser': obj.insecureHttpParser,
        'inspect': obj.inspect,
        'inspect-brk': obj.inspectBrk,
        'inspect-port': obj.inspectPort,
        'inspect-publish-uid': obj.inspectPublishUid,
        'inspect-wait': obj.inspectWait,
        'localstorage-file': obj.localstorageFile,
        'max-http-header-size': obj.maxHttpHeaderSize,
        'max-old-space-size-percentage': obj.maxOldSpaceSizePercentage,
        'network-family-autoselection': obj.networkFamilyAutoselection,
        'network-family-autoselection-attempt-timeout': obj.networkFamilyAutoselectionAttemptTimeout,
        'node-snapshot': obj.nodeSnapshot,
        'openssl-config': obj.opensslConfig,
        'openssl-legacy-provider': obj.opensslLegacyProvider,
        'openssl-shared-config': obj.opensslSharedConfig,
        'pending-deprecation': obj.pendingDeprecation,
        'permission': obj.permission,
        'permission-audit': obj.permissionAudit,
        'preserve-symlinks': obj.preserveSymlinks,
        'preserve-symlinks-main': obj.preserveSymlinksMain,
        'redirect-warnings': obj.redirectWarnings,
        'report-compact': obj.reportCompact,
        'report-dir': obj.reportDir,
        'report-exclude-env': obj.reportExcludeEnv,
        'report-exclude-network': obj.reportExcludeNetwork,
        'report-filename': obj.reportFilename,
        'report-on-fatalerror': obj.reportOnFatalerror,
        'report-on-signal': obj.reportOnSignal,
        'report-signal': obj.reportSignal,
        'report-uncaught-exception': obj.reportUncaughtException,
        'require': obj.require?.map(y => y),
        'require-module': obj.requireModule,
        'secure-heap': obj.secureHeap,
        'secure-heap-min': obj.secureHeapMin,
        'snapshot-blob': obj.snapshotBlob,
        'stack-trace-limit': obj.stackTraceLimit,
        'strip-types': obj.stripTypes,
        'test-coverage-branches': obj.testCoverageBranches,
        'test-coverage-exclude': obj.testCoverageExclude?.map(y => y),
        'test-coverage-functions': obj.testCoverageFunctions,
        'test-coverage-include': obj.testCoverageInclude?.map(y => y),
        'test-coverage-lines': obj.testCoverageLines,
        'test-global-setup': obj.testGlobalSetup,
        'test-isolation': obj.testIsolation,
        'test-name-pattern': obj.testNamePattern?.map(y => y),
        'test-only': obj.testOnly,
        'test-random-seed': obj.testRandomSeed,
        'test-randomize': obj.testRandomize,
        'test-reporter': obj.testReporter?.map(y => y),
        'test-reporter-destination': obj.testReporterDestination?.map(y => y),
        'test-rerun-failures': obj.testRerunFailures,
        'test-shard': obj.testShard,
        'test-skip-pattern': obj.testSkipPattern?.map(y => y),
        'throw-deprecation': obj.throwDeprecation,
        'title': obj.title,
        'tls-cipher-list': obj.tlsCipherList,
        'tls-keylog': obj.tlsKeylog,
        'tls-max-v1.2': obj.tlsMaxV12,
        'tls-max-v1.3': obj.tlsMaxV13,
        'tls-min-v1.0': obj.tlsMinV10,
        'tls-min-v1.1': obj.tlsMinV11,
        'tls-min-v1.2': obj.tlsMinV12,
        'tls-min-v1.3': obj.tlsMinV13,
        'trace-deprecation': obj.traceDeprecation,
        'trace-env': obj.traceEnv,
        'trace-env-js-stack': obj.traceEnvJsStack,
        'trace-env-native-stack': obj.traceEnvNativeStack,
        'trace-event-categories': obj.traceEventCategories,
        'trace-event-file-pattern': obj.traceEventFilePattern,
        'trace-exit': obj.traceExit,
        'trace-promises': obj.tracePromises,
        'trace-require-module': obj.traceRequireModule,
        'trace-sigint': obj.traceSigint,
        'trace-sync-io': obj.traceSyncIo,
        'trace-tls': obj.traceTls,
        'trace-uncaught': obj.traceUncaught,
        'trace-warnings': obj.traceWarnings,
        'track-heap-objects': obj.trackHeapObjects,
        'unhandled-rejections': obj.unhandledRejections,
        'use-bundled-ca': obj.useBundledCa,
        'use-env-proxy': obj.useEnvProxy,
        'use-largepages': obj.useLargepages,
        'use-openssl-ca': obj.useOpensslCa,
        'use-system-ca': obj.useSystemCa,
        'v8-pool-size': obj.v8PoolSize,
        'verify-base-objects': obj.verifyBaseObjects,
        'warnings': obj.warnings,
        'watch': obj.watch,
        'watch-kill-signal': obj.watchKillSignal,
        'watch-path': obj.watchPath?.map(y => y),
        'watch-preserve-output': obj.watchPreserveOutput,
        'zero-fill-buffers': obj.zeroFillBuffers,
    };
    // filter undefined values
    return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
/**
 * Converts an object of type 'NodeConfigSchemaPermission' to JSON representation.
 * @internal
 */
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
function toJson_NodeConfigSchemaPermission(obj) {
    if (obj === undefined) {
        return undefined;
    }
    const result = {
        'allow-addons': obj.allowAddons,
        'allow-child-process': obj.allowChildProcess,
        'allow-ffi': obj.allowFfi,
        'allow-fs-read': obj.allowFsRead?.map(y => y),
        'allow-fs-write': obj.allowFsWrite?.map(y => y),
        'allow-inspector': obj.allowInspector,
        'allow-net': obj.allowNet,
        'allow-openssl-store': obj.allowOpensslStore,
        'allow-wasi': obj.allowWasi,
        'allow-worker': obj.allowWorker,
        'permission': obj.permission,
    };
    // filter undefined values
    return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
/**
 * Converts an object of type 'NodeConfigSchemaTest' to JSON representation.
 * @internal
 */
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
function toJson_NodeConfigSchemaTest(obj) {
    if (obj === undefined) {
        return undefined;
    }
    const result = {
        'experimental-test-coverage': obj.experimentalTestCoverage,
        'experimental-test-module-mocks': obj.experimentalTestModuleMocks,
        'test': obj.test,
        'test-concurrency': obj.testConcurrency,
        'test-coverage-branches': obj.testCoverageBranches,
        'test-coverage-exclude': obj.testCoverageExclude?.map(y => y),
        'test-coverage-functions': obj.testCoverageFunctions,
        'test-coverage-include': obj.testCoverageInclude?.map(y => y),
        'test-coverage-lines': obj.testCoverageLines,
        'test-force-exit': obj.testForceExit,
        'test-global-setup': obj.testGlobalSetup,
        'test-isolation': obj.testIsolation,
        'test-name-pattern': obj.testNamePattern?.map(y => y),
        'test-only': obj.testOnly,
        'test-random-seed': obj.testRandomSeed,
        'test-randomize': obj.testRandomize,
        'test-reporter': obj.testReporter?.map(y => y),
        'test-reporter-destination': obj.testReporterDestination?.map(y => y),
        'test-rerun-failures': obj.testRerunFailures,
        'test-shard': obj.testShard,
        'test-skip-pattern': obj.testSkipPattern?.map(y => y),
        'test-timeout': obj.testTimeout,
        'test-update-snapshots': obj.testUpdateSnapshots,
    };
    // filter undefined values
    return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
/**
 * Converts an object of type 'NodeConfigSchemaWatch' to JSON representation.
 * @internal
 */
/* eslint-disable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
function toJson_NodeConfigSchemaWatch(obj) {
    if (obj === undefined) {
        return undefined;
    }
    const result = {
        'watch': obj.watch,
        'watch-kill-signal': obj.watchKillSignal,
        'watch-path': obj.watchPath?.map(y => y),
        'watch-preserve-output': obj.watchPreserveOutput,
    };
    // filter undefined values
    return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
/* eslint-enable max-len, @stylistic/max-len, quote-props, @stylistic/quote-props */
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvamF2YXNjcmlwdC9ub2RlLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXlDQSwwREFZQztBQTJpQ0QsZ0ZBOEpDO0FBMEZELDhFQWlCQztBQThLRCxrRUE2QkM7QUF5Q0Qsb0VBVUM7QUFua0REOzs7R0FHRztBQUNILHFGQUFxRjtBQUNyRixTQUFnQix1QkFBdUIsQ0FBQyxHQUFpQztJQUN2RSxJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUFDLE9BQU8sU0FBUyxDQUFDO0lBQUMsQ0FBQztJQUM1QyxNQUFNLE1BQU0sR0FBRztRQUNiLFNBQVMsRUFBRSxHQUFHLENBQUMsTUFBTTtRQUNyQixhQUFhLEVBQUUsa0NBQWtDLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQztRQUNsRSxhQUFhLEVBQUUsR0FBRyxDQUFDLFdBQVc7UUFDOUIsWUFBWSxFQUFFLGlDQUFpQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUM7UUFDL0QsTUFBTSxFQUFFLDJCQUEyQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFDN0MsT0FBTyxFQUFFLDRCQUE0QixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7S0FDakQsQ0FBQztJQUNGLDBCQUEwQjtJQUMxQixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUMxRyxDQUFDO0FB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QUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUMxRyxDQUFDO0FBQ0Qsb0ZBQW9GIiwic291cmNlc0NvbnRlbnQiOlsiLy8gfn4gR2VuZXJhdGVkIGJ5IHByb2plbi4gVG8gbW9kaWZ5LCBlZGl0IC5wcm9qZW5yYy50cyBhbmQgcnVuIFwibm9kZSAuL3Byb2plbi5qc1wiLlxuLyoqXG4gKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb2RlQ29uZmlnU2NoZW1hIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYSMkc2NoZW1hXG4gICAqL1xuICByZWFkb25seSBzY2hlbWE/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYSNub2RlT3B0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgbm9kZU9wdGlvbnM/OiBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYSNub2RlVmVyc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgbm9kZVZlcnNpb24/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYSNwZXJtaXNzaW9uXG4gICAqL1xuICByZWFkb25seSBwZXJtaXNzaW9uPzogTm9kZUNvbmZpZ1NjaGVtYVBlcm1pc3Npb247XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYSN0ZXN0XG4gICAqL1xuICByZWFkb25seSB0ZXN0PzogTm9kZUNvbmZpZ1NjaGVtYVRlc3Q7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYSN3YXRjaFxuICAgKi9cbiAgcmVhZG9ubHkgd2F0Y2g/OiBOb2RlQ29uZmlnU2NoZW1hV2F0Y2g7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ05vZGVDb25maWdTY2hlbWEnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9Ob2RlQ29uZmlnU2NoZW1hKG9iajogTm9kZUNvbmZpZ1NjaGVtYSB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJyRzY2hlbWEnOiBvYmouc2NoZW1hLFxuICAgICdub2RlT3B0aW9ucyc6IHRvSnNvbl9Ob2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMob2JqLm5vZGVPcHRpb25zKSxcbiAgICAnbm9kZVZlcnNpb24nOiBvYmoubm9kZVZlcnNpb24sXG4gICAgJ3Blcm1pc3Npb24nOiB0b0pzb25fTm9kZUNvbmZpZ1NjaGVtYVBlcm1pc3Npb24ob2JqLnBlcm1pc3Npb24pLFxuICAgICd0ZXN0JzogdG9Kc29uX05vZGVDb25maWdTY2hlbWFUZXN0KG9iai50ZXN0KSxcbiAgICAnd2F0Y2gnOiB0b0pzb25fTm9kZUNvbmZpZ1NjaGVtYVdhdGNoKG9iai53YXRjaCksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBkaXNhYmxlIGxvYWRpbmcgbmF0aXZlIGFkZG9uc1xuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNhZGRvbnNcbiAgICovXG4gIHJlYWRvbmx5IGFkZG9ucz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGFsbG93IHVzZSBvZiBhZGRvbnMgd2hlbiBhbnkgcGVybWlzc2lvbnMgYXJlIHNldFxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNhbGxvdy1hZGRvbnNcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93QWRkb25zPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogYWxsb3cgdXNlIG9mIGNoaWxkIHByb2Nlc3Mgd2hlbiBhbnkgcGVybWlzc2lvbnMgYXJlIHNldFxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNhbGxvdy1jaGlsZC1wcm9jZXNzXG4gICAqL1xuICByZWFkb25seSBhbGxvd0NoaWxkUHJvY2Vzcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGFsbG93IHVzZSBvZiBGRkkgd2hlbiBhbnkgcGVybWlzc2lvbnMgYXJlIHNldFxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNhbGxvdy1mZmlcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93RmZpPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogYWxsb3cgcGVybWlzc2lvbnMgdG8gcmVhZCB0aGUgZmlsZXN5c3RlbVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNhbGxvdy1mcy1yZWFkXG4gICAqL1xuICByZWFkb25seSBhbGxvd0ZzUmVhZD86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBhbGxvdyBwZXJtaXNzaW9ucyB0byB3cml0ZSBpbiB0aGUgZmlsZXN5c3RlbVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNhbGxvdy1mcy13cml0ZVxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dGc1dyaXRlPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIGFsbG93IHVzZSBvZiBpbnNwZWN0b3Igd2hlbiBhbnkgcGVybWlzc2lvbnMgYXJlIHNldFxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNhbGxvdy1pbnNwZWN0b3JcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93SW5zcGVjdG9yPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogYWxsb3cgdXNlIG9mIG5ldHdvcmsgd2hlbiBhbnkgcGVybWlzc2lvbnMgYXJlIHNldFxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNhbGxvdy1uZXRcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93TmV0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogYWxsb3cgdXNlIG9mIE9wZW5TU0wgU1RPUkUgbG9hZGVycyB3aGVuIGFueSBwZXJtaXNzaW9ucyBhcmUgc2V0XG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI2FsbG93LW9wZW5zc2wtc3RvcmVcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93T3BlbnNzbFN0b3JlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogYWxsb3cgd2FzaSB3aGVuIGFueSBwZXJtaXNzaW9ucyBhcmUgc2V0XG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI2FsbG93LXdhc2lcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93V2FzaT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGFsbG93IHdvcmtlciB0aHJlYWRzIHdoZW4gYW55IHBlcm1pc3Npb25zIGFyZSBzZXRcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjYWxsb3ctd29ya2VyXG4gICAqL1xuICByZWFkb25seSBhbGxvd1dvcmtlcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEltcHJvdmUgQXN5bmNMb2NhbFN0b3JhZ2UgcGVyZm9ybWFuY2Ugd2l0aCBBc3luY0NvbnRleHRGcmFtZVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNhc3luYy1jb250ZXh0LWZyYW1lXG4gICAqL1xuICByZWFkb25seSBhc3luY0NvbnRleHRGcmFtZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGFkZGl0aW9uYWwgdXNlciBjb25kaXRpb25zIGZvciBjb25kaXRpb25hbCBleHBvcnRzIGFuZCBpbXBvcnRzXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI2NvbmRpdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IGNvbmRpdGlvbnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogU3RhcnQgdGhlIFY4IENQVSBwcm9maWxlciBvbiBzdGFydCB1cCwgYW5kIHdyaXRlIHRoZSBDUFUgcHJvZmlsZSB0byBkaXNrIGJlZm9yZSBleGl0LiBJZiAtLWNwdS1wcm9mLWRpciBpcyBub3Qgc3BlY2lmaWVkLCB3cml0ZSB0aGUgcHJvZmlsZSB0byB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS5cbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjY3B1LXByb2ZcbiAgICovXG4gIHJlYWRvbmx5IGNwdVByb2Y/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEaXJlY3Rvcnkgd2hlcmUgdGhlIFY4IHByb2ZpbGVzIGdlbmVyYXRlZCBieSAtLWNwdS1wcm9mIHdpbGwgYmUgcGxhY2VkLiBEb2VzIG5vdCBhZmZlY3QgLS1wcm9mLlxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNjcHUtcHJvZi1kaXJcbiAgICovXG4gIHJlYWRvbmx5IGNwdVByb2ZEaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIHNwZWNpZmllZCBzYW1wbGluZyBpbnRlcnZhbCBpbiBtaWNyb3NlY29uZHMgZm9yIHRoZSBWOCBDUFUgcHJvZmlsZSBnZW5lcmF0ZWQgd2l0aCAtLWNwdS1wcm9mLiAoZGVmYXVsdDogMTAwMClcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjY3B1LXByb2YtaW50ZXJ2YWxcbiAgICovXG4gIHJlYWRvbmx5IGNwdVByb2ZJbnRlcnZhbD86IG51bWJlcjtcblxuICAvKipcbiAgICogc3BlY2lmaWVkIGZpbGUgbmFtZSBvZiB0aGUgVjggQ1BVIHByb2ZpbGUgZ2VuZXJhdGVkIHdpdGggLS1jcHUtcHJvZlxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNjcHUtcHJvZi1uYW1lXG4gICAqL1xuICByZWFkb25seSBjcHVQcm9mTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjZGVidWctYXJyYXlidWZmZXItYWxsb2NhdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IGRlYnVnQXJyYXlidWZmZXJBbGxvY2F0aW9ucz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIHNpbGVuY2UgZGVwcmVjYXRpb24gd2FybmluZ3NcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjZGVwcmVjYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IGRlcHJlY2F0aW9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogc2V0IGRpciBmb3IgYWxsIG91dHB1dCBmaWxlcyAoZGVmYXVsdDogY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSlcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjZGlhZ25vc3RpYy1kaXJcbiAgICovXG4gIHJlYWRvbmx5IGRpYWdub3N0aWNEaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIGRpc2FibGUgT2JqZWN0LnByb3RvdHlwZS5fX3Byb3RvX19cbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjZGlzYWJsZS1wcm90b1xuICAgKi9cbiAgcmVhZG9ubHkgZGlzYWJsZVByb3RvPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEaXNhYmxlIGluc3BlY3RvciB0aHJlYWQgdG8gYmUgbGlzdGVuaW5nIGZvciBTSUdVU1IxIHNpZ25hbFxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNkaXNhYmxlLXNpZ3VzcjFcbiAgICovXG4gIHJlYWRvbmx5IGRpc2FibGVTaWd1c3IxPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogc2lsZW5jZSBzcGVjaWZpYyBwcm9jZXNzIHdhcm5pbmdzXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI2Rpc2FibGUtd2FybmluZ1xuICAgKi9cbiAgcmVhZG9ubHkgZGlzYWJsZVdhcm5pbmc/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogRGlzYWJsZSB0cmFwLWhhbmRsZXItYmFzZWQgV2ViQXNzZW1ibHkgYm91bmQgY2hlY2tzLiBWOCB3aWxsIGluc2VydCBpbmxpbmUgYm91bmQgY2hlY2tzIHdoZW4gY29tcGlsaW5nIFdlYkFzc2VtYmx5IHdoaWNoIG1heSBzbG93IGRvd24gcGVyZm9ybWFuY2UuXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI2Rpc2FibGUtd2FzbS10cmFwLWhhbmRsZXJcbiAgICovXG4gIHJlYWRvbmx5IGRpc2FibGVXYXNtVHJhcEhhbmRsZXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBzZXQgZGVmYXVsdCB2YWx1ZSBvZiB2ZXJiYXRpbSBpbiBkbnMubG9va3VwLiBPcHRpb25zIGFyZSAnaXB2NGZpcnN0JyAoSVB2NCBhZGRyZXNzZXMgYXJlIHBsYWNlZCBiZWZvcmUgSVB2NiBhZGRyZXNzZXMpICdpcHY2Zmlyc3QnIChJUHY2IGFkZHJlc3NlcyBhcmUgcGxhY2VkIGJlZm9yZSBJUHY0IGFkZHJlc3NlcykgJ3ZlcmJhdGltJyAoYWRkcmVzc2VzIGFyZSBpbiB0aGUgb3JkZXIgdGhlIEROUyByZXNvbHZlciByZXR1cm5lZClcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjZG5zLXJlc3VsdC1vcmRlclxuICAgKi9cbiAgcmVhZG9ubHkgZG5zUmVzdWx0T3JkZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIGVuYWJsZSBGSVBTIGNyeXB0byBhdCBzdGFydHVwXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI2VuYWJsZS1maXBzXG4gICAqL1xuICByZWFkb25seSBlbmFibGVGaXBzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU291cmNlIE1hcCBWMyBzdXBwb3J0IGZvciBzdGFjayB0cmFjZXNcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjZW5hYmxlLXNvdXJjZS1tYXBzXG4gICAqL1xuICByZWFkb25seSBlbmFibGVTb3VyY2VNYXBzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVHJlYXQgdGhlIGVudHJ5cG9pbnQgYXMgYSBVUkxcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjZW50cnktdXJsXG4gICAqL1xuICByZWFkb25seSBlbnRyeVVybD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGV4cGVyaW1lbnRhbCBpbXBvcnQgc3VwcG9ydCBmb3IgYWRkb25zXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI2V4cGVyaW1lbnRhbC1hZGRvbi1tb2R1bGVzXG4gICAqL1xuICByZWFkb25seSBleHBlcmltZW50YWxBZGRvbk1vZHVsZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiB3aGVuIGFtYmlndW91cyBtb2R1bGVzIGZhaWwgdG8gZXZhbHVhdGUgYmVjYXVzZSB0aGV5IGNvbnRhaW4gRVMgbW9kdWxlIHN5bnRheCwgdHJ5IGFnYWluIHRvIGV2YWx1YXRlIHRoZW0gYXMgRVMgbW9kdWxlc1xuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNleHBlcmltZW50YWwtZGV0ZWN0LW1vZHVsZVxuICAgKi9cbiAgcmVhZG9ubHkgZXhwZXJpbWVudGFsRGV0ZWN0TW9kdWxlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogZXhwZXJpbWVudGFsIEV2ZW50U291cmNlIEFQSVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNleHBlcmltZW50YWwtZXZlbnRzb3VyY2VcbiAgICovXG4gIHJlYWRvbmx5IGV4cGVyaW1lbnRhbEV2ZW50c291cmNlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogZXhwZXJpbWVudGFsIG5vZGU6ZmZpIG1vZHVsZVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNleHBlcmltZW50YWwtZmZpXG4gICAqL1xuICByZWFkb25seSBleHBlcmltZW50YWxGZmk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBleHBvc2UgZXhwZXJpbWVudGFsIE5hdmlnYXRvciBBUEkgb24gdGhlIGdsb2JhbCBzY29wZVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNleHBlcmltZW50YWwtZ2xvYmFsLW5hdmlnYXRvclxuICAgKi9cbiAgcmVhZG9ubHkgZXhwZXJpbWVudGFsR2xvYmFsTmF2aWdhdG9yPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogZXhwZXJpbWVudGFsIEVTIE1vZHVsZSBpbXBvcnQubWV0YS5yZXNvbHZlKCkgcGFyZW50VVJMIHN1cHBvcnRcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjZXhwZXJpbWVudGFsLWltcG9ydC1tZXRhLXJlc29sdmVcbiAgICovXG4gIHJlYWRvbmx5IGV4cGVyaW1lbnRhbEltcG9ydE1ldGFSZXNvbHZlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogdXNlIHRoZSBzcGVjaWZpZWQgbW9kdWxlIGFzIGEgY3VzdG9tIGxvYWRlclxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNleHBlcmltZW50YWwtbG9hZGVyXG4gICAqL1xuICByZWFkb25seSBleHBlcmltZW50YWxMb2FkZXI/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogUHJpbnQgcGVuZGluZyB0b3AtbGV2ZWwgYXdhaXQuIElmIC0tcmVxdWlyZS1tb2R1bGUgaXMgdHJ1ZSwgZXZhbHVhdGUgYXN5bmNocm9ub3VzIGdyYXBocyBsb2FkZWQgYnkgYHJlcXVpcmUoKWAgYnV0IGRvIG5vdCBydW4gdGhlIG1pY3JvdGFza3MsIGluIG9yZGVyIHRvIGZpbmQgYW5kIHByaW50IHRvcC1sZXZlbCBhd2FpdCBpbiB0aGUgZ3JhcGhcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjZXhwZXJpbWVudGFsLXByaW50LXJlcXVpcmVkLXRsYVxuICAgKi9cbiAgcmVhZG9ubHkgZXhwZXJpbWVudGFsUHJpbnRSZXF1aXJlZFRsYT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGV4cGVyaW1lbnRhbCBhd2FpdCBrZXl3b3JkIHN1cHBvcnQgaW4gUkVQTFxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNleHBlcmltZW50YWwtcmVwbC1hd2FpdFxuICAgKi9cbiAgcmVhZG9ubHkgZXhwZXJpbWVudGFsUmVwbEF3YWl0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogTGVnYWN5IGFsaWFzIGZvciAtLXJlcXVpcmUtbW9kdWxlXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI2V4cGVyaW1lbnRhbC1yZXF1aXJlLW1vZHVsZVxuICAgKi9cbiAgcmVhZG9ubHkgZXhwZXJpbWVudGFsUmVxdWlyZU1vZHVsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI2V4cGVyaW1lbnRhbC1zaGFkb3ctcmVhbG1cbiAgICovXG4gIHJlYWRvbmx5IGV4cGVyaW1lbnRhbFNoYWRvd1JlYWxtPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogZXhwZXJpbWVudGFsIG5vZGU6c3FsaXRlIG1vZHVsZVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNleHBlcmltZW50YWwtc3FsaXRlXG4gICAqL1xuICByZWFkb25seSBleHBlcmltZW50YWxTcWxpdGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBleHBlcmltZW50YWwgaXRlcmFibGUgc3RyZWFtcyBBUEkgKG5vZGU6c3RyZWFtL2l0ZXIpXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI2V4cGVyaW1lbnRhbC1zdHJlYW0taXRlclxuICAgKi9cbiAgcmVhZG9ubHkgZXhwZXJpbWVudGFsU3RyZWFtSXRlcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGV4cGVyaW1lbnRhbCBFUyBNb2R1bGUgc3VwcG9ydCBpbiB2bSBtb2R1bGVcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjZXhwZXJpbWVudGFsLXZtLW1vZHVsZXNcbiAgICovXG4gIHJlYWRvbmx5IGV4cGVyaW1lbnRhbFZtTW9kdWxlcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGV4cGVyaW1lbnRhbCBXZWJTb2NrZXQgQVBJXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI2V4cGVyaW1lbnRhbC13ZWJzb2NrZXRcbiAgICovXG4gIHJlYWRvbmx5IGV4cGVyaW1lbnRhbFdlYnNvY2tldD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGV4cGVyaW1lbnRhbCBXZWIgU3RvcmFnZSBBUElcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjZXhwZXJpbWVudGFsLXdlYnN0b3JhZ2VcbiAgICovXG4gIHJlYWRvbmx5IGV4cGVyaW1lbnRhbFdlYnN0b3JhZ2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBoaWRlIGV4dHJhIGluZm9ybWF0aW9uIG9uIGZhdGFsIGV4Y2VwdGlvbiB0aGF0IGNhdXNlcyBleGl0XG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI2V4dHJhLWluZm8tb24tZmF0YWwtZXhjZXB0aW9uXG4gICAqL1xuICByZWFkb25seSBleHRyYUluZm9PbkZhdGFsRXhjZXB0aW9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogZGlzYWJsZSBjaGVja3MgZm9yIGFzeW5jX2hvb2tzXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI2ZvcmNlLWFzeW5jLWhvb2tzLWNoZWNrc1xuICAgKi9cbiAgcmVhZG9ubHkgZm9yY2VBc3luY0hvb2tzQ2hlY2tzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogZGlzYWJsZSBsb2FkaW5nIG5vbi1jb250ZXh0LWF3YXJlIGFkZG9uc1xuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNmb3JjZS1jb250ZXh0LWF3YXJlXG4gICAqL1xuICByZWFkb25seSBmb3JjZUNvbnRleHRBd2FyZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGZvcmNlIEZJUFMgY3J5cHRvIChjYW5ub3QgYmUgZGlzYWJsZWQpXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI2ZvcmNlLWZpcHNcbiAgICovXG4gIHJlYWRvbmx5IGZvcmNlRmlwcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGVuZm9yY2VzICd1bmNhdWdodEV4Y2VwdGlvbicgZXZlbnQgb24gTm9kZSBBUEkgYXN5bmNocm9ub3VzIGNhbGxiYWNrc1xuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNmb3JjZS1ub2RlLWFwaS11bmNhdWdodC1leGNlcHRpb25zLXBvbGljeVxuICAgKi9cbiAgcmVhZG9ubHkgZm9yY2VOb2RlQXBpVW5jYXVnaHRFeGNlcHRpb25zUG9saWN5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogZXhwZXJpbWVudGFsIGZyb3plbiBpbnRyaW5zaWNzIHN1cHBvcnRcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjZnJvemVuLWludHJpbnNpY3NcbiAgICovXG4gIHJlYWRvbmx5IGZyb3plbkludHJpbnNpY3M/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBkaXNhYmxlIGdsb2JhbCBtb2R1bGUgc2VhcmNoIHBhdGhzXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI2dsb2JhbC1zZWFyY2gtcGF0aHNcbiAgICovXG4gIHJlYWRvbmx5IGdsb2JhbFNlYXJjaFBhdGhzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU3RhcnQgdGhlIFY4IGhlYXAgcHJvZmlsZXIgb24gc3RhcnQgdXAsIGFuZCB3cml0ZSB0aGUgaGVhcCBwcm9maWxlIHRvIGRpc2sgYmVmb3JlIGV4aXQuIElmIC0taGVhcC1wcm9mLWRpciBpcyBub3Qgc3BlY2lmaWVkLCB3cml0ZSB0aGUgcHJvZmlsZSB0byB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS5cbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjaGVhcC1wcm9mXG4gICAqL1xuICByZWFkb25seSBoZWFwUHJvZj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERpcmVjdG9yeSB3aGVyZSB0aGUgVjggaGVhcCBwcm9maWxlcyBnZW5lcmF0ZWQgYnkgLS1oZWFwLXByb2Ygd2lsbCBiZSBwbGFjZWQuXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI2hlYXAtcHJvZi1kaXJcbiAgICovXG4gIHJlYWRvbmx5IGhlYXBQcm9mRGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBzcGVjaWZpZWQgc2FtcGxpbmcgaW50ZXJ2YWwgaW4gYnl0ZXMgZm9yIHRoZSBWOCBoZWFwIHByb2ZpbGUgZ2VuZXJhdGVkIHdpdGggLS1oZWFwLXByb2YuIChkZWZhdWx0OiA1MTIgKiAxMDI0KVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNoZWFwLXByb2YtaW50ZXJ2YWxcbiAgICovXG4gIHJlYWRvbmx5IGhlYXBQcm9mSW50ZXJ2YWw/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIHNwZWNpZmllZCBmaWxlIG5hbWUgb2YgdGhlIFY4IGhlYXAgcHJvZmlsZSBnZW5lcmF0ZWQgd2l0aCAtLWhlYXAtcHJvZlxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNoZWFwLXByb2YtbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgaGVhcFByb2ZOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBoZWFwIHNuYXBzaG90cyB3aGVuZXZlciBWOCBpcyBhcHByb2FjaGluZyB0aGUgaGVhcCBsaW1pdC4gTm8gbW9yZSB0aGFuIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGhlYXAgc25hcHNob3RzIHdpbGwgYmUgZ2VuZXJhdGVkLlxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNoZWFwc25hcHNob3QtbmVhci1oZWFwLWxpbWl0XG4gICAqL1xuICByZWFkb25seSBoZWFwc25hcHNob3ROZWFySGVhcExpbWl0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBoZWFwIHNuYXBzaG90IG9uIHNwZWNpZmllZCBzaWduYWxcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjaGVhcHNuYXBzaG90LXNpZ25hbFxuICAgKi9cbiAgcmVhZG9ubHkgaGVhcHNuYXBzaG90U2lnbmFsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBzZXQgSUNVIGRhdGEgbG9hZCBwYXRoIHRvIGRpciAob3ZlcnJpZGVzIE5PREVfSUNVX0RBVEEpIChub3RlOiBsaW5rZWQtaW4gSUNVIGRhdGEgaXMgcHJlc2VudClcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjaWN1LWRhdGEtZGlyXG4gICAqL1xuICByZWFkb25seSBpY3VEYXRhRGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFUyBtb2R1bGUgdG8gcHJlbG9hZCAob3B0aW9uIGNhbiBiZSByZXBlYXRlZClcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjaW1wb3J0XG4gICAqL1xuICByZWFkb25seSBpbXBvcnQ/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogc2V0IG1vZHVsZSB0eXBlIGZvciBzdHJpbmcgaW5wdXRcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjaW5wdXQtdHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5wdXRUeXBlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiB1c2UgYW4gaW5zZWN1cmUgSFRUUCBwYXJzZXIgdGhhdCBhY2NlcHRzIGludmFsaWQgSFRUUCBoZWFkZXJzXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI2luc2VjdXJlLWh0dHAtcGFyc2VyXG4gICAqL1xuICByZWFkb25seSBpbnNlY3VyZUh0dHBQYXJzZXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBhY3RpdmF0ZSBpbnNwZWN0b3Igb24gaG9zdDpwb3J0IChkZWZhdWx0OiAxMjcuMC4wLjE6OTIyOSlcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjaW5zcGVjdFxuICAgKi9cbiAgcmVhZG9ubHkgaW5zcGVjdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGFjdGl2YXRlIGluc3BlY3RvciBvbiBob3N0OnBvcnQgYW5kIGJyZWFrIGF0IHN0YXJ0IG9mIHVzZXIgc2NyaXB0XG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI2luc3BlY3QtYnJrXG4gICAqL1xuICByZWFkb25seSBpbnNwZWN0QnJrPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogc2V0IGhvc3Q6cG9ydCBmb3IgaW5zcGVjdG9yXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI2luc3BlY3QtcG9ydFxuICAgKi9cbiAgcmVhZG9ubHkgaW5zcGVjdFBvcnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIGRlc3RpbmF0aW9ucyBmb3IgaW5zcGVjdG9yIHVpZChkZWZhdWx0OiBzdGRlcnIsaHR0cClcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjaW5zcGVjdC1wdWJsaXNoLXVpZFxuICAgKi9cbiAgcmVhZG9ubHkgaW5zcGVjdFB1Ymxpc2hVaWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIGFjdGl2YXRlIGluc3BlY3RvciBvbiBob3N0OnBvcnQgYW5kIHdhaXQgZm9yIGRlYnVnZ2VyIHRvIGJlIGF0dGFjaGVkXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI2luc3BlY3Qtd2FpdFxuICAgKi9cbiAgcmVhZG9ubHkgaW5zcGVjdFdhaXQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBmaWxlIHVzZWQgdG8gcGVyc2lzdCBsb2NhbFN0b3JhZ2UgZGF0YVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNsb2NhbHN0b3JhZ2UtZmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgbG9jYWxzdG9yYWdlRmlsZT86IHN0cmluZztcblxuICAvKipcbiAgICogc2V0IHRoZSBtYXhpbXVtIHNpemUgb2YgSFRUUCBoZWFkZXJzIChkZWZhdWx0OiAxNjM4NCAoMTZLQikpXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI21heC1odHRwLWhlYWRlci1zaXplXG4gICAqL1xuICByZWFkb25seSBtYXhIdHRwSGVhZGVyU2l6ZT86IG51bWJlcjtcblxuICAvKipcbiAgICogc2V0IFY4J3MgbWF4IG9sZCBzcGFjZSBzaXplIGFzIGEgcGVyY2VudGFnZSBvZiBhdmFpbGFibGUgbWVtb3J5IChlLmcuLCAnNTAlJykuIFRha2VzIHByZWNlZGVuY2Ugb3ZlciAtLW1heC1vbGQtc3BhY2Utc2l6ZS5cbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjbWF4LW9sZC1zcGFjZS1zaXplLXBlcmNlbnRhZ2VcbiAgICovXG4gIHJlYWRvbmx5IG1heE9sZFNwYWNlU2l6ZVBlcmNlbnRhZ2U/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERpc2FibGUgbmV0d29yayBhZGRyZXNzIGZhbWlseSBhdXRvZGV0ZWN0aW9uIGFsZ29yaXRobVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNuZXR3b3JrLWZhbWlseS1hdXRvc2VsZWN0aW9uXG4gICAqL1xuICByZWFkb25seSBuZXR3b3JrRmFtaWx5QXV0b3NlbGVjdGlvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBuZXR3b3JrIGZhbWlseSBhdXRvc2VsZWN0aW9uIGF0dGVtcHQgdGltZW91dC5cbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjbmV0d29yay1mYW1pbHktYXV0b3NlbGVjdGlvbi1hdHRlbXB0LXRpbWVvdXRcbiAgICovXG4gIHJlYWRvbmx5IG5ldHdvcmtGYW1pbHlBdXRvc2VsZWN0aW9uQXR0ZW1wdFRpbWVvdXQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI25vZGUtc25hcHNob3RcbiAgICovXG4gIHJlYWRvbmx5IG5vZGVTbmFwc2hvdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGxvYWQgT3BlblNTTCBjb25maWd1cmF0aW9uIGZyb20gdGhlIHNwZWNpZmllZCBmaWxlIChvdmVycmlkZXMgT1BFTlNTTF9DT05GKVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNvcGVuc3NsLWNvbmZpZ1xuICAgKi9cbiAgcmVhZG9ubHkgb3BlbnNzbENvbmZpZz86IHN0cmluZztcblxuICAvKipcbiAgICogZW5hYmxlIE9wZW5TU0wgMy4wIGxlZ2FjeSBwcm92aWRlclxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNvcGVuc3NsLWxlZ2FjeS1wcm92aWRlclxuICAgKi9cbiAgcmVhZG9ubHkgb3BlbnNzbExlZ2FjeVByb3ZpZGVyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogZW5hYmxlIE9wZW5TU0wgc2hhcmVkIGNvbmZpZ3VyYXRpb25cbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjb3BlbnNzbC1zaGFyZWQtY29uZmlnXG4gICAqL1xuICByZWFkb25seSBvcGVuc3NsU2hhcmVkQ29uZmlnPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogZW1pdCBwZW5kaW5nIGRlcHJlY2F0aW9uIHdhcm5pbmdzXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI3BlbmRpbmctZGVwcmVjYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IHBlbmRpbmdEZXByZWNhdGlvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGVuYWJsZSB0aGUgcGVybWlzc2lvbiBzeXN0ZW1cbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjcGVybWlzc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgcGVybWlzc2lvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGVuYWJsZSBhdWRpdCBvbmx5IGZvciB0aGUgcGVybWlzc2lvbiBzeXN0ZW1cbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjcGVybWlzc2lvbi1hdWRpdFxuICAgKi9cbiAgcmVhZG9ubHkgcGVybWlzc2lvbkF1ZGl0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogcHJlc2VydmUgc3ltYm9saWMgbGlua3Mgd2hlbiByZXNvbHZpbmdcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjcHJlc2VydmUtc3ltbGlua3NcbiAgICovXG4gIHJlYWRvbmx5IHByZXNlcnZlU3ltbGlua3M/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBwcmVzZXJ2ZSBzeW1ib2xpYyBsaW5rcyB3aGVuIHJlc29sdmluZyB0aGUgbWFpbiBtb2R1bGVcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjcHJlc2VydmUtc3ltbGlua3MtbWFpblxuICAgKi9cbiAgcmVhZG9ubHkgcHJlc2VydmVTeW1saW5rc01haW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiB3cml0ZSB3YXJuaW5ncyB0byBmaWxlIGluc3RlYWQgb2Ygc3RkZXJyXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI3JlZGlyZWN0LXdhcm5pbmdzXG4gICAqL1xuICByZWFkb25seSByZWRpcmVjdFdhcm5pbmdzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBvdXRwdXQgY29tcGFjdCBzaW5nbGUtbGluZSBKU09OXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI3JlcG9ydC1jb21wYWN0XG4gICAqL1xuICByZWFkb25seSByZXBvcnRDb21wYWN0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogZGVmaW5lIGN1c3RvbSByZXBvcnQgcGF0aG5hbWUuIChkZWZhdWx0OiBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5KVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNyZXBvcnQtZGlyXG4gICAqL1xuICByZWFkb25seSByZXBvcnREaXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEV4Y2x1ZGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIHdoZW4gZ2VuZXJhdGluZyByZXBvcnQgKGRlZmF1bHQ6IGZhbHNlKVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNyZXBvcnQtZXhjbHVkZS1lbnZcbiAgICovXG4gIHJlYWRvbmx5IHJlcG9ydEV4Y2x1ZGVFbnY/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBleGNsdWRlIG5ldHdvcmsgaW50ZXJmYWNlIGRpYWdub3N0aWNzLiAoZGVmYXVsdDogZmFsc2UpXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI3JlcG9ydC1leGNsdWRlLW5ldHdvcmtcbiAgICovXG4gIHJlYWRvbmx5IHJlcG9ydEV4Y2x1ZGVOZXR3b3JrPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogZGVmaW5lIGN1c3RvbSByZXBvcnQgZmlsZSBuYW1lLiAoZGVmYXVsdDogWVlZWU1NREQuSEhNTVNTLlBJRC5TRVFVRU5DRSMudHh0KVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNyZXBvcnQtZmlsZW5hbWVcbiAgICovXG4gIHJlYWRvbmx5IHJlcG9ydEZpbGVuYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBnZW5lcmF0ZSBkaWFnbm9zdGljIHJlcG9ydCBvbiBmYXRhbCAoaW50ZXJuYWwpIGVycm9yc1xuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNyZXBvcnQtb24tZmF0YWxlcnJvclxuICAgKi9cbiAgcmVhZG9ubHkgcmVwb3J0T25GYXRhbGVycm9yPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogZ2VuZXJhdGUgZGlhZ25vc3RpYyByZXBvcnQgdXBvbiByZWNlaXZpbmcgc2lnbmFsc1xuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNyZXBvcnQtb24tc2lnbmFsXG4gICAqL1xuICByZWFkb25seSByZXBvcnRPblNpZ25hbD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGNhdXNlcyBkaWFnbm9zdGljIHJlcG9ydCB0byBiZSBwcm9kdWNlZCBvbiBwcm92aWRlZCBzaWduYWwsIHVuc3VwcG9ydGVkIGluIFdpbmRvd3MuIChkZWZhdWx0OiBTSUdVU1IyKVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNyZXBvcnQtc2lnbmFsXG4gICAqL1xuICByZWFkb25seSByZXBvcnRTaWduYWw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIGdlbmVyYXRlIGRpYWdub3N0aWMgcmVwb3J0IG9uIHVuY2F1Z2h0IGV4Y2VwdGlvbnNcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjcmVwb3J0LXVuY2F1Z2h0LWV4Y2VwdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgcmVwb3J0VW5jYXVnaHRFeGNlcHRpb24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDb21tb25KUyBtb2R1bGUgdG8gcHJlbG9hZCAob3B0aW9uIGNhbiBiZSByZXBlYXRlZClcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjcmVxdWlyZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWlyZT86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBBbGxvdyBsb2FkaW5nIHN5bmNocm9ub3VzIEVTIE1vZHVsZXMgaW4gcmVxdWlyZSgpLlxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNyZXF1aXJlLW1vZHVsZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWlyZU1vZHVsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIHRvdGFsIHNpemUgb2YgdGhlIE9wZW5TU0wgc2VjdXJlIGhlYXBcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjc2VjdXJlLWhlYXBcbiAgICovXG4gIHJlYWRvbmx5IHNlY3VyZUhlYXA/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIG1pbmltdW0gYWxsb2NhdGlvbiBzaXplIGZyb20gdGhlIE9wZW5TU0wgc2VjdXJlIGhlYXBcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjc2VjdXJlLWhlYXAtbWluXG4gICAqL1xuICByZWFkb25seSBzZWN1cmVIZWFwTWluPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBQYXRoIHRvIHRoZSBzbmFwc2hvdCBibG9iIHRoYXQncyBlaXRoZXIgdGhlIHJlc3VsdCBvZiBzbmFwc2hvdGJ1aWxkaW5nLCBvciB0aGUgYmxvYiB0aGF0IGlzIHVzZWQgdG8gcmVzdG9yZSB0aGUgYXBwbGljYXRpb24gc3RhdGVcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjc25hcHNob3QtYmxvYlxuICAgKi9cbiAgcmVhZG9ubHkgc25hcHNob3RCbG9iPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyNzdGFjay10cmFjZS1saW1pdFxuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tUcmFjZUxpbWl0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUeXBlLXN0cmlwcGluZyBmb3IgVHlwZVNjcmlwdCBmaWxlcy5cbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjc3RyaXAtdHlwZXNcbiAgICovXG4gIHJlYWRvbmx5IHN0cmlwVHlwZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiB0aGUgYnJhbmNoIGNvdmVyYWdlIG1pbmltdW0gdGhyZXNob2xkXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI3Rlc3QtY292ZXJhZ2UtYnJhbmNoZXNcbiAgICovXG4gIHJlYWRvbmx5IHRlc3RDb3ZlcmFnZUJyYW5jaGVzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBleGNsdWRlIGZpbGVzIGZyb20gY292ZXJhZ2UgcmVwb3J0IHRoYXQgbWF0Y2ggdGhpcyBnbG9iIHBhdHRlcm5cbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjdGVzdC1jb3ZlcmFnZS1leGNsdWRlXG4gICAqL1xuICByZWFkb25seSB0ZXN0Q292ZXJhZ2VFeGNsdWRlPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIHRoZSBmdW5jdGlvbiBjb3ZlcmFnZSBtaW5pbXVtIHRocmVzaG9sZFxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyN0ZXN0LWNvdmVyYWdlLWZ1bmN0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgdGVzdENvdmVyYWdlRnVuY3Rpb25zPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBpbmNsdWRlIGZpbGVzIGluIGNvdmVyYWdlIHJlcG9ydCB0aGF0IG1hdGNoIHRoaXMgZ2xvYiBwYXR0ZXJuXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI3Rlc3QtY292ZXJhZ2UtaW5jbHVkZVxuICAgKi9cbiAgcmVhZG9ubHkgdGVzdENvdmVyYWdlSW5jbHVkZT86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiB0aGUgbGluZSBjb3ZlcmFnZSBtaW5pbXVtIHRocmVzaG9sZFxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyN0ZXN0LWNvdmVyYWdlLWxpbmVzXG4gICAqL1xuICByZWFkb25seSB0ZXN0Q292ZXJhZ2VMaW5lcz86IG51bWJlcjtcblxuICAvKipcbiAgICogc3BlY2lmaWVzIHRoZSBwYXRoIHRvIHRoZSBnbG9iYWwgc2V0dXAgZmlsZVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyN0ZXN0LWdsb2JhbC1zZXR1cFxuICAgKi9cbiAgcmVhZG9ubHkgdGVzdEdsb2JhbFNldHVwPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBjb25maWd1cmVzIHRoZSB0eXBlIG9mIHRlc3QgaXNvbGF0aW9uIHVzZWQgaW4gdGhlIHRlc3QgcnVubmVyXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI3Rlc3QtaXNvbGF0aW9uXG4gICAqL1xuICByZWFkb25seSB0ZXN0SXNvbGF0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBydW4gdGVzdHMgd2hvc2UgbmFtZSBtYXRjaGVzIHRoaXMgcmVndWxhciBleHByZXNzaW9uXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI3Rlc3QtbmFtZS1wYXR0ZXJuXG4gICAqL1xuICByZWFkb25seSB0ZXN0TmFtZVBhdHRlcm4/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogcnVuIHRlc3RzIHdpdGggJ29ubHknIG9wdGlvbiBzZXRcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjdGVzdC1vbmx5XG4gICAqL1xuICByZWFkb25seSB0ZXN0T25seT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIHNlZWQgdXNlZCB0byByYW5kb21pemUgdGVzdCBleGVjdXRpb24gb3JkZXJcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjdGVzdC1yYW5kb20tc2VlZFxuICAgKi9cbiAgcmVhZG9ubHkgdGVzdFJhbmRvbVNlZWQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIHJ1biB0ZXN0cyBpbiBhIHJhbmRvbSBvcmRlclxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyN0ZXN0LXJhbmRvbWl6ZVxuICAgKi9cbiAgcmVhZG9ubHkgdGVzdFJhbmRvbWl6ZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIHJlcG9ydCB0ZXN0IG91dHB1dCB1c2luZyB0aGUgZ2l2ZW4gcmVwb3J0ZXJcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjdGVzdC1yZXBvcnRlclxuICAgKi9cbiAgcmVhZG9ubHkgdGVzdFJlcG9ydGVyPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIHJlcG9ydCBnaXZlbiByZXBvcnRlciB0byB0aGUgZ2l2ZW4gZGVzdGluYXRpb25cbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjdGVzdC1yZXBvcnRlci1kZXN0aW5hdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgdGVzdFJlcG9ydGVyRGVzdGluYXRpb24/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogc3BlY2lmaWVzIHRoZSBwYXRoIHRvIHRoZSByZXJ1biBzdGF0ZSBmaWxlXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI3Rlc3QtcmVydW4tZmFpbHVyZXNcbiAgICovXG4gIHJlYWRvbmx5IHRlc3RSZXJ1bkZhaWx1cmVzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBydW4gdGVzdCBhdCBzcGVjaWZpYyBzaGFyZFxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyN0ZXN0LXNoYXJkXG4gICAqL1xuICByZWFkb25seSB0ZXN0U2hhcmQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIHJ1biB0ZXN0cyB3aG9zZSBuYW1lIGRvIG5vdCBtYXRjaCB0aGlzIHJlZ3VsYXIgZXhwcmVzc2lvblxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyN0ZXN0LXNraXAtcGF0dGVyblxuICAgKi9cbiAgcmVhZG9ubHkgdGVzdFNraXBQYXR0ZXJuPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIHRocm93IGFuIGV4Y2VwdGlvbiBvbiBkZXByZWNhdGlvbnNcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjdGhyb3ctZGVwcmVjYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IHRocm93RGVwcmVjYXRpb24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiB0aGUgcHJvY2VzcyB0aXRsZSB0byB1c2Ugb24gc3RhcnR1cFxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyN0aXRsZVxuICAgKi9cbiAgcmVhZG9ubHkgdGl0bGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIHVzZSBhbiBhbHRlcm5hdGl2ZSBkZWZhdWx0IFRMUyBjaXBoZXIgbGlzdFxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyN0bHMtY2lwaGVyLWxpc3RcbiAgICovXG4gIHJlYWRvbmx5IHRsc0NpcGhlckxpc3Q/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIGxvZyBUTFMgZGVjcnlwdGlvbiBrZXlzIHRvIG5hbWVkIGZpbGUgZm9yIHRyYWZmaWMgYW5hbHlzaXNcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjdGxzLWtleWxvZ1xuICAgKi9cbiAgcmVhZG9ubHkgdGxzS2V5bG9nPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBzZXQgZGVmYXVsdCBUTFMgbWF4aW11bSB0byBUTFN2MS4yIChkZWZhdWx0OiBUTFN2MS4zKVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyN0bHMtbWF4LXYxLjJcbiAgICovXG4gIHJlYWRvbmx5IHRsc01heFYxMj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIHNldCBkZWZhdWx0IFRMUyBtYXhpbXVtIHRvIFRMU3YxLjMgKGRlZmF1bHQ6IFRMU3YxLjMpXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI3Rscy1tYXgtdjEuM1xuICAgKi9cbiAgcmVhZG9ubHkgdGxzTWF4VjEzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogc2V0IGRlZmF1bHQgVExTIG1pbmltdW0gdG8gVExTdjEuMCAoZGVmYXVsdDogVExTdjEuMilcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjdGxzLW1pbi12MS4wXG4gICAqL1xuICByZWFkb25seSB0bHNNaW5WMTA/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBzZXQgZGVmYXVsdCBUTFMgbWluaW11bSB0byBUTFN2MS4xIChkZWZhdWx0OiBUTFN2MS4yKVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyN0bHMtbWluLXYxLjFcbiAgICovXG4gIHJlYWRvbmx5IHRsc01pblYxMT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIHNldCBkZWZhdWx0IFRMUyBtaW5pbXVtIHRvIFRMU3YxLjIgKGRlZmF1bHQ6IFRMU3YxLjIpXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI3Rscy1taW4tdjEuMlxuICAgKi9cbiAgcmVhZG9ubHkgdGxzTWluVjEyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogc2V0IGRlZmF1bHQgVExTIG1pbmltdW0gdG8gVExTdjEuMyAoZGVmYXVsdDogVExTdjEuMilcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjdGxzLW1pbi12MS4zXG4gICAqL1xuICByZWFkb25seSB0bHNNaW5WMTM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBzaG93IHN0YWNrIHRyYWNlcyBvbiBkZXByZWNhdGlvbnNcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjdHJhY2UtZGVwcmVjYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IHRyYWNlRGVwcmVjYXRpb24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBQcmludCBhY2Nlc3NlcyB0byB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI3RyYWNlLWVudlxuICAgKi9cbiAgcmVhZG9ubHkgdHJhY2VFbnY/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBQcmludCBhY2Nlc3NlcyB0byB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFuZCB0aGUgSmF2YVNjcmlwdCBzdGFjayB0cmFjZVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyN0cmFjZS1lbnYtanMtc3RhY2tcbiAgICovXG4gIHJlYWRvbmx5IHRyYWNlRW52SnNTdGFjaz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFByaW50IGFjY2Vzc2VzIHRvIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYW5kIHRoZSBuYXRpdmUgc3RhY2sgdHJhY2VcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjdHJhY2UtZW52LW5hdGl2ZS1zdGFja1xuICAgKi9cbiAgcmVhZG9ubHkgdHJhY2VFbnZOYXRpdmVTdGFjaz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIHRyYWNlIGV2ZW50IGNhdGVnb3JpZXMgdG8gcmVjb3JkXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI3RyYWNlLWV2ZW50LWNhdGVnb3JpZXNcbiAgICovXG4gIHJlYWRvbmx5IHRyYWNlRXZlbnRDYXRlZ29yaWVzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUZW1wbGF0ZSBzdHJpbmcgc3BlY2lmeWluZyB0aGUgZmlsZXBhdGggZm9yIHRoZSB0cmFjZS1ldmVudHMgZGF0YSwgaXQgc3VwcG9ydHMgJHtyb3RhdGlvbn0gYW5kICR7cGlkfS5cbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjdHJhY2UtZXZlbnQtZmlsZS1wYXR0ZXJuXG4gICAqL1xuICByZWFkb25seSB0cmFjZUV2ZW50RmlsZVBhdHRlcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIHNob3cgc3RhY2sgdHJhY2Ugd2hlbiBhbiBlbnZpcm9ubWVudCBleGl0c1xuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyN0cmFjZS1leGl0XG4gICAqL1xuICByZWFkb25seSB0cmFjZUV4aXQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBzaG93IHN0YWNrIHRyYWNlcyBvbiBwcm9taXNlIGluaXRpYWxpemF0aW9uIGFuZCByZXNvbHV0aW9uXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI3RyYWNlLXByb21pc2VzXG4gICAqL1xuICByZWFkb25seSB0cmFjZVByb21pc2VzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUHJpbnQgYWNjZXNzIHRvIHJlcXVpcmUoZXNtKS4gT3B0aW9ucyBhcmUgJ2FsbCcgKHByaW50IGFsbCB1c2FnZSkgYW5kICduby1ub2RlLW1vZHVsZXMnIChleGNsdWRpbmcgdXNhZ2UgZnJvbSB0aGUgbm9kZV9tb2R1bGVzIGZvbGRlcilcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjdHJhY2UtcmVxdWlyZS1tb2R1bGVcbiAgICovXG4gIHJlYWRvbmx5IHRyYWNlUmVxdWlyZU1vZHVsZT86IHN0cmluZztcblxuICAvKipcbiAgICogZW5hYmxlIHByaW50aW5nIEphdmFTY3JpcHQgc3RhY2t0cmFjZSBvbiBTSUdJTlRcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjdHJhY2Utc2lnaW50XG4gICAqL1xuICByZWFkb25seSB0cmFjZVNpZ2ludD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIHNob3cgc3RhY2sgdHJhY2Ugd2hlbiB1c2Ugb2Ygc3luYyBJTyBpcyBkZXRlY3RlZCBhZnRlciB0aGUgZmlyc3QgdGlja1xuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyN0cmFjZS1zeW5jLWlvXG4gICAqL1xuICByZWFkb25seSB0cmFjZVN5bmNJbz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIHByaW50cyBUTFMgcGFja2V0IHRyYWNlIGluZm9ybWF0aW9uIHRvIHN0ZGVyclxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyN0cmFjZS10bHNcbiAgICovXG4gIHJlYWRvbmx5IHRyYWNlVGxzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogc2hvdyBzdGFjayB0cmFjZXMgZm9yIHRoZSBgdGhyb3dgIGJlaGluZCB1bmNhdWdodCBleGNlcHRpb25zXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI3RyYWNlLXVuY2F1Z2h0XG4gICAqL1xuICByZWFkb25seSB0cmFjZVVuY2F1Z2h0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogc2hvdyBzdGFjayB0cmFjZXMgb24gcHJvY2VzcyB3YXJuaW5nc1xuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyN0cmFjZS13YXJuaW5nc1xuICAgKi9cbiAgcmVhZG9ubHkgdHJhY2VXYXJuaW5ncz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIHRyYWNrIGhlYXAgb2JqZWN0IGFsbG9jYXRpb25zIGZvciBoZWFwIHNuYXBzaG90c1xuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyN0cmFjay1oZWFwLW9iamVjdHNcbiAgICovXG4gIHJlYWRvbmx5IHRyYWNrSGVhcE9iamVjdHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBkZWZpbmUgdW5oYW5kbGVkIHJlamVjdGlvbnMgYmVoYXZpb3IuIE9wdGlvbnMgYXJlICdzdHJpY3QnIChhbHdheXMgcmFpc2UgYW4gZXJyb3IpLCAndGhyb3cnIChyYWlzZSBhbiBlcnJvciB1bmxlc3MgJ3VuaGFuZGxlZFJlamVjdGlvbicgaG9vayBpcyBzZXQpLCAnd2FybicgKGxvZyBhIHdhcm5pbmcpLCAnbm9uZScgKHNpbGVuY2Ugd2FybmluZ3MpLCAnd2Fybi13aXRoLWVycm9yLWNvZGUnIChsb2cgYSB3YXJuaW5nIGFuZCBzZXQgZXhpdCBjb2RlIDEgdW5sZXNzICd1bmhhbmRsZWRSZWplY3Rpb24nIGhvb2sgaXMgc2V0KS4gKGRlZmF1bHQ6IHRocm93KVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyN1bmhhbmRsZWQtcmVqZWN0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgdW5oYW5kbGVkUmVqZWN0aW9ucz86IHN0cmluZztcblxuICAvKipcbiAgICogdXNlIGJ1bmRsZWQgQ0Egc3RvcmUgKGRlZmF1bHQpXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI3VzZS1idW5kbGVkLWNhXG4gICAqL1xuICByZWFkb25seSB1c2VCdW5kbGVkQ2E/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBwYXJzZSBwcm94eSBzZXR0aW5ncyBmcm9tIEhUVFBfUFJPWFkvSFRUUFNfUFJPWFkvTk9fUFJPWFllbnZpcm9ubWVudCB2YXJpYWJsZXMgYW5kIGFwcGx5IHRoZSBzZXR0aW5nIGluIGdsb2JhbCBIVFRQL0hUVFBTIGNsaWVudHNcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjdXNlLWVudi1wcm94eVxuICAgKi9cbiAgcmVhZG9ubHkgdXNlRW52UHJveHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBNYXAgdGhlIE5vZGUuanMgc3RhdGljIGNvZGUgdG8gbGFyZ2UgcGFnZXMuIE9wdGlvbnMgYXJlICdvZmYnICh0aGUgZGVmYXVsdCB2YWx1ZSwgbWVhbmluZyBkbyBub3QgbWFwKSwgJ29uJyAobWFwIGFuZCBpZ25vcmUgZmFpbHVyZSwgcmVwb3J0aW5nIGl0IHRvIHN0ZGVyciksIG9yICdzaWxlbnQnIChtYXAgYW5kIHNpbGVudGx5IGlnbm9yZSBmYWlsdXJlKVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyN1c2UtbGFyZ2VwYWdlc1xuICAgKi9cbiAgcmVhZG9ubHkgdXNlTGFyZ2VwYWdlcz86IHN0cmluZztcblxuICAvKipcbiAgICogdXNlIE9wZW5TU0wncyBkZWZhdWx0IENBIHN0b3JlXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI3VzZS1vcGVuc3NsLWNhXG4gICAqL1xuICByZWFkb25seSB1c2VPcGVuc3NsQ2E/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiB1c2Ugc3lzdGVtJ3MgQ0Egc3RvcmVcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjdXNlLXN5c3RlbS1jYVxuICAgKi9cbiAgcmVhZG9ubHkgdXNlU3lzdGVtQ2E/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBzZXQgVjgncyB0aHJlYWQgcG9vbCBzaXplXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI3Y4LXBvb2wtc2l6ZVxuICAgKi9cbiAgcmVhZG9ubHkgdjhQb29sU2l6ZT86IG51bWJlcjtcblxuICAvKipcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjdmVyaWZ5LWJhc2Utb2JqZWN0c1xuICAgKi9cbiAgcmVhZG9ubHkgdmVyaWZ5QmFzZU9iamVjdHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBzaWxlbmNlIGFsbCBwcm9jZXNzIHdhcm5pbmdzXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI3dhcm5pbmdzXG4gICAqL1xuICByZWFkb25seSB3YXJuaW5ncz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIHJ1biBpbiB3YXRjaCBtb2RlXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI3dhdGNoXG4gICAqL1xuICByZWFkb25seSB3YXRjaD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGtpbGwgc2lnbmFsIHRvIHNlbmQgdG8gdGhlIHByb2Nlc3Mgb24gd2F0Y2ggbW9kZSByZXN0YXJ0cyhkZWZhdWx0OiBTSUdURVJNKVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyN3YXRjaC1raWxsLXNpZ25hbFxuICAgKi9cbiAgcmVhZG9ubHkgd2F0Y2hLaWxsU2lnbmFsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBwYXRoIHRvIHdhdGNoXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYU5vZGVPcHRpb25zI3dhdGNoLXBhdGhcbiAgICovXG4gIHJlYWRvbmx5IHdhdGNoUGF0aD86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBwcmVzZXJ2ZSBvdXRwdXRzIG9uIHdhdGNoIG1vZGUgcmVzdGFydFxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyN3YXRjaC1wcmVzZXJ2ZS1vdXRwdXRcbiAgICovXG4gIHJlYWRvbmx5IHdhdGNoUHJlc2VydmVPdXRwdXQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBhdXRvbWF0aWNhbGx5IHplcm8tZmlsbCBhbGwgbmV3bHkgYWxsb2NhdGVkIEJ1ZmZlciBpbnN0YW5jZXNcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hTm9kZU9wdGlvbnMjemVyby1maWxsLWJ1ZmZlcnNcbiAgICovXG4gIHJlYWRvbmx5IHplcm9GaWxsQnVmZmVycz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ05vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX05vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyhvYmo6IE5vZGVDb25maWdTY2hlbWFOb2RlT3B0aW9ucyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ2FkZG9ucyc6IG9iai5hZGRvbnMsXG4gICAgJ2FsbG93LWFkZG9ucyc6IG9iai5hbGxvd0FkZG9ucyxcbiAgICAnYWxsb3ctY2hpbGQtcHJvY2Vzcyc6IG9iai5hbGxvd0NoaWxkUHJvY2VzcyxcbiAgICAnYWxsb3ctZmZpJzogb2JqLmFsbG93RmZpLFxuICAgICdhbGxvdy1mcy1yZWFkJzogb2JqLmFsbG93RnNSZWFkPy5tYXAoeSA9PiB5KSxcbiAgICAnYWxsb3ctZnMtd3JpdGUnOiBvYmouYWxsb3dGc1dyaXRlPy5tYXAoeSA9PiB5KSxcbiAgICAnYWxsb3ctaW5zcGVjdG9yJzogb2JqLmFsbG93SW5zcGVjdG9yLFxuICAgICdhbGxvdy1uZXQnOiBvYmouYWxsb3dOZXQsXG4gICAgJ2FsbG93LW9wZW5zc2wtc3RvcmUnOiBvYmouYWxsb3dPcGVuc3NsU3RvcmUsXG4gICAgJ2FsbG93LXdhc2knOiBvYmouYWxsb3dXYXNpLFxuICAgICdhbGxvdy13b3JrZXInOiBvYmouYWxsb3dXb3JrZXIsXG4gICAgJ2FzeW5jLWNvbnRleHQtZnJhbWUnOiBvYmouYXN5bmNDb250ZXh0RnJhbWUsXG4gICAgJ2NvbmRpdGlvbnMnOiBvYmouY29uZGl0aW9ucz8ubWFwKHkgPT4geSksXG4gICAgJ2NwdS1wcm9mJzogb2JqLmNwdVByb2YsXG4gICAgJ2NwdS1wcm9mLWRpcic6IG9iai5jcHVQcm9mRGlyLFxuICAgICdjcHUtcHJvZi1pbnRlcnZhbCc6IG9iai5jcHVQcm9mSW50ZXJ2YWwsXG4gICAgJ2NwdS1wcm9mLW5hbWUnOiBvYmouY3B1UHJvZk5hbWUsXG4gICAgJ2RlYnVnLWFycmF5YnVmZmVyLWFsbG9jYXRpb25zJzogb2JqLmRlYnVnQXJyYXlidWZmZXJBbGxvY2F0aW9ucyxcbiAgICAnZGVwcmVjYXRpb24nOiBvYmouZGVwcmVjYXRpb24sXG4gICAgJ2RpYWdub3N0aWMtZGlyJzogb2JqLmRpYWdub3N0aWNEaXIsXG4gICAgJ2Rpc2FibGUtcHJvdG8nOiBvYmouZGlzYWJsZVByb3RvLFxuICAgICdkaXNhYmxlLXNpZ3VzcjEnOiBvYmouZGlzYWJsZVNpZ3VzcjEsXG4gICAgJ2Rpc2FibGUtd2FybmluZyc6IG9iai5kaXNhYmxlV2FybmluZz8ubWFwKHkgPT4geSksXG4gICAgJ2Rpc2FibGUtd2FzbS10cmFwLWhhbmRsZXInOiBvYmouZGlzYWJsZVdhc21UcmFwSGFuZGxlcixcbiAgICAnZG5zLXJlc3VsdC1vcmRlcic6IG9iai5kbnNSZXN1bHRPcmRlcixcbiAgICAnZW5hYmxlLWZpcHMnOiBvYmouZW5hYmxlRmlwcyxcbiAgICAnZW5hYmxlLXNvdXJjZS1tYXBzJzogb2JqLmVuYWJsZVNvdXJjZU1hcHMsXG4gICAgJ2VudHJ5LXVybCc6IG9iai5lbnRyeVVybCxcbiAgICAnZXhwZXJpbWVudGFsLWFkZG9uLW1vZHVsZXMnOiBvYmouZXhwZXJpbWVudGFsQWRkb25Nb2R1bGVzLFxuICAgICdleHBlcmltZW50YWwtZGV0ZWN0LW1vZHVsZSc6IG9iai5leHBlcmltZW50YWxEZXRlY3RNb2R1bGUsXG4gICAgJ2V4cGVyaW1lbnRhbC1ldmVudHNvdXJjZSc6IG9iai5leHBlcmltZW50YWxFdmVudHNvdXJjZSxcbiAgICAnZXhwZXJpbWVudGFsLWZmaSc6IG9iai5leHBlcmltZW50YWxGZmksXG4gICAgJ2V4cGVyaW1lbnRhbC1nbG9iYWwtbmF2aWdhdG9yJzogb2JqLmV4cGVyaW1lbnRhbEdsb2JhbE5hdmlnYXRvcixcbiAgICAnZXhwZXJpbWVudGFsLWltcG9ydC1tZXRhLXJlc29sdmUnOiBvYmouZXhwZXJpbWVudGFsSW1wb3J0TWV0YVJlc29sdmUsXG4gICAgJ2V4cGVyaW1lbnRhbC1sb2FkZXInOiBvYmouZXhwZXJpbWVudGFsTG9hZGVyPy5tYXAoeSA9PiB5KSxcbiAgICAnZXhwZXJpbWVudGFsLXByaW50LXJlcXVpcmVkLXRsYSc6IG9iai5leHBlcmltZW50YWxQcmludFJlcXVpcmVkVGxhLFxuICAgICdleHBlcmltZW50YWwtcmVwbC1hd2FpdCc6IG9iai5leHBlcmltZW50YWxSZXBsQXdhaXQsXG4gICAgJ2V4cGVyaW1lbnRhbC1yZXF1aXJlLW1vZHVsZSc6IG9iai5leHBlcmltZW50YWxSZXF1aXJlTW9kdWxlLFxuICAgICdleHBlcmltZW50YWwtc2hhZG93LXJlYWxtJzogb2JqLmV4cGVyaW1lbnRhbFNoYWRvd1JlYWxtLFxuICAgICdleHBlcmltZW50YWwtc3FsaXRlJzogb2JqLmV4cGVyaW1lbnRhbFNxbGl0ZSxcbiAgICAnZXhwZXJpbWVudGFsLXN0cmVhbS1pdGVyJzogb2JqLmV4cGVyaW1lbnRhbFN0cmVhbUl0ZXIsXG4gICAgJ2V4cGVyaW1lbnRhbC12bS1tb2R1bGVzJzogb2JqLmV4cGVyaW1lbnRhbFZtTW9kdWxlcyxcbiAgICAnZXhwZXJpbWVudGFsLXdlYnNvY2tldCc6IG9iai5leHBlcmltZW50YWxXZWJzb2NrZXQsXG4gICAgJ2V4cGVyaW1lbnRhbC13ZWJzdG9yYWdlJzogb2JqLmV4cGVyaW1lbnRhbFdlYnN0b3JhZ2UsXG4gICAgJ2V4dHJhLWluZm8tb24tZmF0YWwtZXhjZXB0aW9uJzogb2JqLmV4dHJhSW5mb09uRmF0YWxFeGNlcHRpb24sXG4gICAgJ2ZvcmNlLWFzeW5jLWhvb2tzLWNoZWNrcyc6IG9iai5mb3JjZUFzeW5jSG9va3NDaGVja3MsXG4gICAgJ2ZvcmNlLWNvbnRleHQtYXdhcmUnOiBvYmouZm9yY2VDb250ZXh0QXdhcmUsXG4gICAgJ2ZvcmNlLWZpcHMnOiBvYmouZm9yY2VGaXBzLFxuICAgICdmb3JjZS1ub2RlLWFwaS11bmNhdWdodC1leGNlcHRpb25zLXBvbGljeSc6IG9iai5mb3JjZU5vZGVBcGlVbmNhdWdodEV4Y2VwdGlvbnNQb2xpY3ksXG4gICAgJ2Zyb3plbi1pbnRyaW5zaWNzJzogb2JqLmZyb3plbkludHJpbnNpY3MsXG4gICAgJ2dsb2JhbC1zZWFyY2gtcGF0aHMnOiBvYmouZ2xvYmFsU2VhcmNoUGF0aHMsXG4gICAgJ2hlYXAtcHJvZic6IG9iai5oZWFwUHJvZixcbiAgICAnaGVhcC1wcm9mLWRpcic6IG9iai5oZWFwUHJvZkRpcixcbiAgICAnaGVhcC1wcm9mLWludGVydmFsJzogb2JqLmhlYXBQcm9mSW50ZXJ2YWwsXG4gICAgJ2hlYXAtcHJvZi1uYW1lJzogb2JqLmhlYXBQcm9mTmFtZSxcbiAgICAnaGVhcHNuYXBzaG90LW5lYXItaGVhcC1saW1pdCc6IG9iai5oZWFwc25hcHNob3ROZWFySGVhcExpbWl0LFxuICAgICdoZWFwc25hcHNob3Qtc2lnbmFsJzogb2JqLmhlYXBzbmFwc2hvdFNpZ25hbCxcbiAgICAnaWN1LWRhdGEtZGlyJzogb2JqLmljdURhdGFEaXIsXG4gICAgJ2ltcG9ydCc6IG9iai5pbXBvcnQ/Lm1hcCh5ID0+IHkpLFxuICAgICdpbnB1dC10eXBlJzogb2JqLmlucHV0VHlwZSxcbiAgICAnaW5zZWN1cmUtaHR0cC1wYXJzZXInOiBvYmouaW5zZWN1cmVIdHRwUGFyc2VyLFxuICAgICdpbnNwZWN0Jzogb2JqLmluc3BlY3QsXG4gICAgJ2luc3BlY3QtYnJrJzogb2JqLmluc3BlY3RCcmssXG4gICAgJ2luc3BlY3QtcG9ydCc6IG9iai5pbnNwZWN0UG9ydCxcbiAgICAnaW5zcGVjdC1wdWJsaXNoLXVpZCc6IG9iai5pbnNwZWN0UHVibGlzaFVpZCxcbiAgICAnaW5zcGVjdC13YWl0Jzogb2JqLmluc3BlY3RXYWl0LFxuICAgICdsb2NhbHN0b3JhZ2UtZmlsZSc6IG9iai5sb2NhbHN0b3JhZ2VGaWxlLFxuICAgICdtYXgtaHR0cC1oZWFkZXItc2l6ZSc6IG9iai5tYXhIdHRwSGVhZGVyU2l6ZSxcbiAgICAnbWF4LW9sZC1zcGFjZS1zaXplLXBlcmNlbnRhZ2UnOiBvYmoubWF4T2xkU3BhY2VTaXplUGVyY2VudGFnZSxcbiAgICAnbmV0d29yay1mYW1pbHktYXV0b3NlbGVjdGlvbic6IG9iai5uZXR3b3JrRmFtaWx5QXV0b3NlbGVjdGlvbixcbiAgICAnbmV0d29yay1mYW1pbHktYXV0b3NlbGVjdGlvbi1hdHRlbXB0LXRpbWVvdXQnOiBvYmoubmV0d29ya0ZhbWlseUF1dG9zZWxlY3Rpb25BdHRlbXB0VGltZW91dCxcbiAgICAnbm9kZS1zbmFwc2hvdCc6IG9iai5ub2RlU25hcHNob3QsXG4gICAgJ29wZW5zc2wtY29uZmlnJzogb2JqLm9wZW5zc2xDb25maWcsXG4gICAgJ29wZW5zc2wtbGVnYWN5LXByb3ZpZGVyJzogb2JqLm9wZW5zc2xMZWdhY3lQcm92aWRlcixcbiAgICAnb3BlbnNzbC1zaGFyZWQtY29uZmlnJzogb2JqLm9wZW5zc2xTaGFyZWRDb25maWcsXG4gICAgJ3BlbmRpbmctZGVwcmVjYXRpb24nOiBvYmoucGVuZGluZ0RlcHJlY2F0aW9uLFxuICAgICdwZXJtaXNzaW9uJzogb2JqLnBlcm1pc3Npb24sXG4gICAgJ3Blcm1pc3Npb24tYXVkaXQnOiBvYmoucGVybWlzc2lvbkF1ZGl0LFxuICAgICdwcmVzZXJ2ZS1zeW1saW5rcyc6IG9iai5wcmVzZXJ2ZVN5bWxpbmtzLFxuICAgICdwcmVzZXJ2ZS1zeW1saW5rcy1tYWluJzogb2JqLnByZXNlcnZlU3ltbGlua3NNYWluLFxuICAgICdyZWRpcmVjdC13YXJuaW5ncyc6IG9iai5yZWRpcmVjdFdhcm5pbmdzLFxuICAgICdyZXBvcnQtY29tcGFjdCc6IG9iai5yZXBvcnRDb21wYWN0LFxuICAgICdyZXBvcnQtZGlyJzogb2JqLnJlcG9ydERpcixcbiAgICAncmVwb3J0LWV4Y2x1ZGUtZW52Jzogb2JqLnJlcG9ydEV4Y2x1ZGVFbnYsXG4gICAgJ3JlcG9ydC1leGNsdWRlLW5ldHdvcmsnOiBvYmoucmVwb3J0RXhjbHVkZU5ldHdvcmssXG4gICAgJ3JlcG9ydC1maWxlbmFtZSc6IG9iai5yZXBvcnRGaWxlbmFtZSxcbiAgICAncmVwb3J0LW9uLWZhdGFsZXJyb3InOiBvYmoucmVwb3J0T25GYXRhbGVycm9yLFxuICAgICdyZXBvcnQtb24tc2lnbmFsJzogb2JqLnJlcG9ydE9uU2lnbmFsLFxuICAgICdyZXBvcnQtc2lnbmFsJzogb2JqLnJlcG9ydFNpZ25hbCxcbiAgICAncmVwb3J0LXVuY2F1Z2h0LWV4Y2VwdGlvbic6IG9iai5yZXBvcnRVbmNhdWdodEV4Y2VwdGlvbixcbiAgICAncmVxdWlyZSc6IG9iai5yZXF1aXJlPy5tYXAoeSA9PiB5KSxcbiAgICAncmVxdWlyZS1tb2R1bGUnOiBvYmoucmVxdWlyZU1vZHVsZSxcbiAgICAnc2VjdXJlLWhlYXAnOiBvYmouc2VjdXJlSGVhcCxcbiAgICAnc2VjdXJlLWhlYXAtbWluJzogb2JqLnNlY3VyZUhlYXBNaW4sXG4gICAgJ3NuYXBzaG90LWJsb2InOiBvYmouc25hcHNob3RCbG9iLFxuICAgICdzdGFjay10cmFjZS1saW1pdCc6IG9iai5zdGFja1RyYWNlTGltaXQsXG4gICAgJ3N0cmlwLXR5cGVzJzogb2JqLnN0cmlwVHlwZXMsXG4gICAgJ3Rlc3QtY292ZXJhZ2UtYnJhbmNoZXMnOiBvYmoudGVzdENvdmVyYWdlQnJhbmNoZXMsXG4gICAgJ3Rlc3QtY292ZXJhZ2UtZXhjbHVkZSc6IG9iai50ZXN0Q292ZXJhZ2VFeGNsdWRlPy5tYXAoeSA9PiB5KSxcbiAgICAndGVzdC1jb3ZlcmFnZS1mdW5jdGlvbnMnOiBvYmoudGVzdENvdmVyYWdlRnVuY3Rpb25zLFxuICAgICd0ZXN0LWNvdmVyYWdlLWluY2x1ZGUnOiBvYmoudGVzdENvdmVyYWdlSW5jbHVkZT8ubWFwKHkgPT4geSksXG4gICAgJ3Rlc3QtY292ZXJhZ2UtbGluZXMnOiBvYmoudGVzdENvdmVyYWdlTGluZXMsXG4gICAgJ3Rlc3QtZ2xvYmFsLXNldHVwJzogb2JqLnRlc3RHbG9iYWxTZXR1cCxcbiAgICAndGVzdC1pc29sYXRpb24nOiBvYmoudGVzdElzb2xhdGlvbixcbiAgICAndGVzdC1uYW1lLXBhdHRlcm4nOiBvYmoudGVzdE5hbWVQYXR0ZXJuPy5tYXAoeSA9PiB5KSxcbiAgICAndGVzdC1vbmx5Jzogb2JqLnRlc3RPbmx5LFxuICAgICd0ZXN0LXJhbmRvbS1zZWVkJzogb2JqLnRlc3RSYW5kb21TZWVkLFxuICAgICd0ZXN0LXJhbmRvbWl6ZSc6IG9iai50ZXN0UmFuZG9taXplLFxuICAgICd0ZXN0LXJlcG9ydGVyJzogb2JqLnRlc3RSZXBvcnRlcj8ubWFwKHkgPT4geSksXG4gICAgJ3Rlc3QtcmVwb3J0ZXItZGVzdGluYXRpb24nOiBvYmoudGVzdFJlcG9ydGVyRGVzdGluYXRpb24/Lm1hcCh5ID0+IHkpLFxuICAgICd0ZXN0LXJlcnVuLWZhaWx1cmVzJzogb2JqLnRlc3RSZXJ1bkZhaWx1cmVzLFxuICAgICd0ZXN0LXNoYXJkJzogb2JqLnRlc3RTaGFyZCxcbiAgICAndGVzdC1za2lwLXBhdHRlcm4nOiBvYmoudGVzdFNraXBQYXR0ZXJuPy5tYXAoeSA9PiB5KSxcbiAgICAndGhyb3ctZGVwcmVjYXRpb24nOiBvYmoudGhyb3dEZXByZWNhdGlvbixcbiAgICAndGl0bGUnOiBvYmoudGl0bGUsXG4gICAgJ3Rscy1jaXBoZXItbGlzdCc6IG9iai50bHNDaXBoZXJMaXN0LFxuICAgICd0bHMta2V5bG9nJzogb2JqLnRsc0tleWxvZyxcbiAgICAndGxzLW1heC12MS4yJzogb2JqLnRsc01heFYxMixcbiAgICAndGxzLW1heC12MS4zJzogb2JqLnRsc01heFYxMyxcbiAgICAndGxzLW1pbi12MS4wJzogb2JqLnRsc01pblYxMCxcbiAgICAndGxzLW1pbi12MS4xJzogb2JqLnRsc01pblYxMSxcbiAgICAndGxzLW1pbi12MS4yJzogb2JqLnRsc01pblYxMixcbiAgICAndGxzLW1pbi12MS4zJzogb2JqLnRsc01pblYxMyxcbiAgICAndHJhY2UtZGVwcmVjYXRpb24nOiBvYmoudHJhY2VEZXByZWNhdGlvbixcbiAgICAndHJhY2UtZW52Jzogb2JqLnRyYWNlRW52LFxuICAgICd0cmFjZS1lbnYtanMtc3RhY2snOiBvYmoudHJhY2VFbnZKc1N0YWNrLFxuICAgICd0cmFjZS1lbnYtbmF0aXZlLXN0YWNrJzogb2JqLnRyYWNlRW52TmF0aXZlU3RhY2ssXG4gICAgJ3RyYWNlLWV2ZW50LWNhdGVnb3JpZXMnOiBvYmoudHJhY2VFdmVudENhdGVnb3JpZXMsXG4gICAgJ3RyYWNlLWV2ZW50LWZpbGUtcGF0dGVybic6IG9iai50cmFjZUV2ZW50RmlsZVBhdHRlcm4sXG4gICAgJ3RyYWNlLWV4aXQnOiBvYmoudHJhY2VFeGl0LFxuICAgICd0cmFjZS1wcm9taXNlcyc6IG9iai50cmFjZVByb21pc2VzLFxuICAgICd0cmFjZS1yZXF1aXJlLW1vZHVsZSc6IG9iai50cmFjZVJlcXVpcmVNb2R1bGUsXG4gICAgJ3RyYWNlLXNpZ2ludCc6IG9iai50cmFjZVNpZ2ludCxcbiAgICAndHJhY2Utc3luYy1pbyc6IG9iai50cmFjZVN5bmNJbyxcbiAgICAndHJhY2UtdGxzJzogb2JqLnRyYWNlVGxzLFxuICAgICd0cmFjZS11bmNhdWdodCc6IG9iai50cmFjZVVuY2F1Z2h0LFxuICAgICd0cmFjZS13YXJuaW5ncyc6IG9iai50cmFjZVdhcm5pbmdzLFxuICAgICd0cmFjay1oZWFwLW9iamVjdHMnOiBvYmoudHJhY2tIZWFwT2JqZWN0cyxcbiAgICAndW5oYW5kbGVkLXJlamVjdGlvbnMnOiBvYmoudW5oYW5kbGVkUmVqZWN0aW9ucyxcbiAgICAndXNlLWJ1bmRsZWQtY2EnOiBvYmoudXNlQnVuZGxlZENhLFxuICAgICd1c2UtZW52LXByb3h5Jzogb2JqLnVzZUVudlByb3h5LFxuICAgICd1c2UtbGFyZ2VwYWdlcyc6IG9iai51c2VMYXJnZXBhZ2VzLFxuICAgICd1c2Utb3BlbnNzbC1jYSc6IG9iai51c2VPcGVuc3NsQ2EsXG4gICAgJ3VzZS1zeXN0ZW0tY2EnOiBvYmoudXNlU3lzdGVtQ2EsXG4gICAgJ3Y4LXBvb2wtc2l6ZSc6IG9iai52OFBvb2xTaXplLFxuICAgICd2ZXJpZnktYmFzZS1vYmplY3RzJzogb2JqLnZlcmlmeUJhc2VPYmplY3RzLFxuICAgICd3YXJuaW5ncyc6IG9iai53YXJuaW5ncyxcbiAgICAnd2F0Y2gnOiBvYmoud2F0Y2gsXG4gICAgJ3dhdGNoLWtpbGwtc2lnbmFsJzogb2JqLndhdGNoS2lsbFNpZ25hbCxcbiAgICAnd2F0Y2gtcGF0aCc6IG9iai53YXRjaFBhdGg/Lm1hcCh5ID0+IHkpLFxuICAgICd3YXRjaC1wcmVzZXJ2ZS1vdXRwdXQnOiBvYmoud2F0Y2hQcmVzZXJ2ZU91dHB1dCxcbiAgICAnemVyby1maWxsLWJ1ZmZlcnMnOiBvYmouemVyb0ZpbGxCdWZmZXJzLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hUGVybWlzc2lvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vZGVDb25maWdTY2hlbWFQZXJtaXNzaW9uIHtcbiAgLyoqXG4gICAqIGFsbG93IHVzZSBvZiBhZGRvbnMgd2hlbiBhbnkgcGVybWlzc2lvbnMgYXJlIHNldFxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFQZXJtaXNzaW9uI2FsbG93LWFkZG9uc1xuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dBZGRvbnM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBhbGxvdyB1c2Ugb2YgY2hpbGQgcHJvY2VzcyB3aGVuIGFueSBwZXJtaXNzaW9ucyBhcmUgc2V0XG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYVBlcm1pc3Npb24jYWxsb3ctY2hpbGQtcHJvY2Vzc1xuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dDaGlsZFByb2Nlc3M/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBhbGxvdyB1c2Ugb2YgRkZJIHdoZW4gYW55IHBlcm1pc3Npb25zIGFyZSBzZXRcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hUGVybWlzc2lvbiNhbGxvdy1mZmlcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93RmZpPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogYWxsb3cgcGVybWlzc2lvbnMgdG8gcmVhZCB0aGUgZmlsZXN5c3RlbVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFQZXJtaXNzaW9uI2FsbG93LWZzLXJlYWRcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93RnNSZWFkPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIGFsbG93IHBlcm1pc3Npb25zIHRvIHdyaXRlIGluIHRoZSBmaWxlc3lzdGVtXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYVBlcm1pc3Npb24jYWxsb3ctZnMtd3JpdGVcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93RnNXcml0ZT86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBhbGxvdyB1c2Ugb2YgaW5zcGVjdG9yIHdoZW4gYW55IHBlcm1pc3Npb25zIGFyZSBzZXRcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hUGVybWlzc2lvbiNhbGxvdy1pbnNwZWN0b3JcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93SW5zcGVjdG9yPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogYWxsb3cgdXNlIG9mIG5ldHdvcmsgd2hlbiBhbnkgcGVybWlzc2lvbnMgYXJlIHNldFxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFQZXJtaXNzaW9uI2FsbG93LW5ldFxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dOZXQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBhbGxvdyB1c2Ugb2YgT3BlblNTTCBTVE9SRSBsb2FkZXJzIHdoZW4gYW55IHBlcm1pc3Npb25zIGFyZSBzZXRcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hUGVybWlzc2lvbiNhbGxvdy1vcGVuc3NsLXN0b3JlXG4gICAqL1xuICByZWFkb25seSBhbGxvd09wZW5zc2xTdG9yZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGFsbG93IHdhc2kgd2hlbiBhbnkgcGVybWlzc2lvbnMgYXJlIHNldFxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFQZXJtaXNzaW9uI2FsbG93LXdhc2lcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93V2FzaT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGFsbG93IHdvcmtlciB0aHJlYWRzIHdoZW4gYW55IHBlcm1pc3Npb25zIGFyZSBzZXRcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hUGVybWlzc2lvbiNhbGxvdy13b3JrZXJcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93V29ya2VyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogZW5hYmxlIHRoZSBwZXJtaXNzaW9uIHN5c3RlbVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFQZXJtaXNzaW9uI3Blcm1pc3Npb25cbiAgICovXG4gIHJlYWRvbmx5IHBlcm1pc3Npb24/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdOb2RlQ29uZmlnU2NoZW1hUGVybWlzc2lvbicgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX05vZGVDb25maWdTY2hlbWFQZXJtaXNzaW9uKG9iajogTm9kZUNvbmZpZ1NjaGVtYVBlcm1pc3Npb24gfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdhbGxvdy1hZGRvbnMnOiBvYmouYWxsb3dBZGRvbnMsXG4gICAgJ2FsbG93LWNoaWxkLXByb2Nlc3MnOiBvYmouYWxsb3dDaGlsZFByb2Nlc3MsXG4gICAgJ2FsbG93LWZmaSc6IG9iai5hbGxvd0ZmaSxcbiAgICAnYWxsb3ctZnMtcmVhZCc6IG9iai5hbGxvd0ZzUmVhZD8ubWFwKHkgPT4geSksXG4gICAgJ2FsbG93LWZzLXdyaXRlJzogb2JqLmFsbG93RnNXcml0ZT8ubWFwKHkgPT4geSksXG4gICAgJ2FsbG93LWluc3BlY3Rvcic6IG9iai5hbGxvd0luc3BlY3RvcixcbiAgICAnYWxsb3ctbmV0Jzogb2JqLmFsbG93TmV0LFxuICAgICdhbGxvdy1vcGVuc3NsLXN0b3JlJzogb2JqLmFsbG93T3BlbnNzbFN0b3JlLFxuICAgICdhbGxvdy13YXNpJzogb2JqLmFsbG93V2FzaSxcbiAgICAnYWxsb3ctd29ya2VyJzogb2JqLmFsbG93V29ya2VyLFxuICAgICdwZXJtaXNzaW9uJzogb2JqLnBlcm1pc3Npb24sXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFUZXN0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTm9kZUNvbmZpZ1NjaGVtYVRlc3Qge1xuICAvKipcbiAgICogZW5hYmxlIGNvZGUgY292ZXJhZ2UgaW4gdGhlIHRlc3QgcnVubmVyXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYVRlc3QjZXhwZXJpbWVudGFsLXRlc3QtY292ZXJhZ2VcbiAgICovXG4gIHJlYWRvbmx5IGV4cGVyaW1lbnRhbFRlc3RDb3ZlcmFnZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGVuYWJsZSBtb2R1bGUgbW9ja2luZyBpbiB0aGUgdGVzdCBydW5uZXJcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hVGVzdCNleHBlcmltZW50YWwtdGVzdC1tb2R1bGUtbW9ja3NcbiAgICovXG4gIHJlYWRvbmx5IGV4cGVyaW1lbnRhbFRlc3RNb2R1bGVNb2Nrcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGxhdW5jaCB0ZXN0IHJ1bm5lciBvbiBzdGFydHVwXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYVRlc3QjdGVzdFxuICAgKi9cbiAgcmVhZG9ubHkgdGVzdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIHNwZWNpZnkgdGVzdCBydW5uZXIgY29uY3VycmVuY3lcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hVGVzdCN0ZXN0LWNvbmN1cnJlbmN5XG4gICAqL1xuICByZWFkb25seSB0ZXN0Q29uY3VycmVuY3k/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIHRoZSBicmFuY2ggY292ZXJhZ2UgbWluaW11bSB0aHJlc2hvbGRcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hVGVzdCN0ZXN0LWNvdmVyYWdlLWJyYW5jaGVzXG4gICAqL1xuICByZWFkb25seSB0ZXN0Q292ZXJhZ2VCcmFuY2hlcz86IG51bWJlcjtcblxuICAvKipcbiAgICogZXhjbHVkZSBmaWxlcyBmcm9tIGNvdmVyYWdlIHJlcG9ydCB0aGF0IG1hdGNoIHRoaXMgZ2xvYiBwYXR0ZXJuXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYVRlc3QjdGVzdC1jb3ZlcmFnZS1leGNsdWRlXG4gICAqL1xuICByZWFkb25seSB0ZXN0Q292ZXJhZ2VFeGNsdWRlPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIHRoZSBmdW5jdGlvbiBjb3ZlcmFnZSBtaW5pbXVtIHRocmVzaG9sZFxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFUZXN0I3Rlc3QtY292ZXJhZ2UtZnVuY3Rpb25zXG4gICAqL1xuICByZWFkb25seSB0ZXN0Q292ZXJhZ2VGdW5jdGlvbnM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIGluY2x1ZGUgZmlsZXMgaW4gY292ZXJhZ2UgcmVwb3J0IHRoYXQgbWF0Y2ggdGhpcyBnbG9iIHBhdHRlcm5cbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hVGVzdCN0ZXN0LWNvdmVyYWdlLWluY2x1ZGVcbiAgICovXG4gIHJlYWRvbmx5IHRlc3RDb3ZlcmFnZUluY2x1ZGU/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogdGhlIGxpbmUgY292ZXJhZ2UgbWluaW11bSB0aHJlc2hvbGRcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hVGVzdCN0ZXN0LWNvdmVyYWdlLWxpbmVzXG4gICAqL1xuICByZWFkb25seSB0ZXN0Q292ZXJhZ2VMaW5lcz86IG51bWJlcjtcblxuICAvKipcbiAgICogZm9yY2UgdGVzdCBydW5uZXIgdG8gZXhpdCB1cG9uIGNvbXBsZXRpb25cbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hVGVzdCN0ZXN0LWZvcmNlLWV4aXRcbiAgICovXG4gIHJlYWRvbmx5IHRlc3RGb3JjZUV4aXQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBzcGVjaWZpZXMgdGhlIHBhdGggdG8gdGhlIGdsb2JhbCBzZXR1cCBmaWxlXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYVRlc3QjdGVzdC1nbG9iYWwtc2V0dXBcbiAgICovXG4gIHJlYWRvbmx5IHRlc3RHbG9iYWxTZXR1cD86IHN0cmluZztcblxuICAvKipcbiAgICogY29uZmlndXJlcyB0aGUgdHlwZSBvZiB0ZXN0IGlzb2xhdGlvbiB1c2VkIGluIHRoZSB0ZXN0IHJ1bm5lclxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFUZXN0I3Rlc3QtaXNvbGF0aW9uXG4gICAqL1xuICByZWFkb25seSB0ZXN0SXNvbGF0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBydW4gdGVzdHMgd2hvc2UgbmFtZSBtYXRjaGVzIHRoaXMgcmVndWxhciBleHByZXNzaW9uXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYVRlc3QjdGVzdC1uYW1lLXBhdHRlcm5cbiAgICovXG4gIHJlYWRvbmx5IHRlc3ROYW1lUGF0dGVybj86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBydW4gdGVzdHMgd2l0aCAnb25seScgb3B0aW9uIHNldFxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFUZXN0I3Rlc3Qtb25seVxuICAgKi9cbiAgcmVhZG9ubHkgdGVzdE9ubHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBzZWVkIHVzZWQgdG8gcmFuZG9taXplIHRlc3QgZXhlY3V0aW9uIG9yZGVyXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYVRlc3QjdGVzdC1yYW5kb20tc2VlZFxuICAgKi9cbiAgcmVhZG9ubHkgdGVzdFJhbmRvbVNlZWQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIHJ1biB0ZXN0cyBpbiBhIHJhbmRvbSBvcmRlclxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFUZXN0I3Rlc3QtcmFuZG9taXplXG4gICAqL1xuICByZWFkb25seSB0ZXN0UmFuZG9taXplPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogcmVwb3J0IHRlc3Qgb3V0cHV0IHVzaW5nIHRoZSBnaXZlbiByZXBvcnRlclxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFUZXN0I3Rlc3QtcmVwb3J0ZXJcbiAgICovXG4gIHJlYWRvbmx5IHRlc3RSZXBvcnRlcj86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiByZXBvcnQgZ2l2ZW4gcmVwb3J0ZXIgdG8gdGhlIGdpdmVuIGRlc3RpbmF0aW9uXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYVRlc3QjdGVzdC1yZXBvcnRlci1kZXN0aW5hdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgdGVzdFJlcG9ydGVyRGVzdGluYXRpb24/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogc3BlY2lmaWVzIHRoZSBwYXRoIHRvIHRoZSByZXJ1biBzdGF0ZSBmaWxlXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYVRlc3QjdGVzdC1yZXJ1bi1mYWlsdXJlc1xuICAgKi9cbiAgcmVhZG9ubHkgdGVzdFJlcnVuRmFpbHVyZXM/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIHJ1biB0ZXN0IGF0IHNwZWNpZmljIHNoYXJkXG4gICAqXG4gICAqIEBzY2hlbWEgTm9kZUNvbmZpZ1NjaGVtYVRlc3QjdGVzdC1zaGFyZFxuICAgKi9cbiAgcmVhZG9ubHkgdGVzdFNoYXJkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBydW4gdGVzdHMgd2hvc2UgbmFtZSBkbyBub3QgbWF0Y2ggdGhpcyByZWd1bGFyIGV4cHJlc3Npb25cbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hVGVzdCN0ZXN0LXNraXAtcGF0dGVyblxuICAgKi9cbiAgcmVhZG9ubHkgdGVzdFNraXBQYXR0ZXJuPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIHNwZWNpZnkgdGVzdCBydW5uZXIgdGltZW91dFxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFUZXN0I3Rlc3QtdGltZW91dFxuICAgKi9cbiAgcmVhZG9ubHkgdGVzdFRpbWVvdXQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIHJlZ2VuZXJhdGUgdGVzdCBzbmFwc2hvdHNcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hVGVzdCN0ZXN0LXVwZGF0ZS1zbmFwc2hvdHNcbiAgICovXG4gIHJlYWRvbmx5IHRlc3RVcGRhdGVTbmFwc2hvdHM/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdOb2RlQ29uZmlnU2NoZW1hVGVzdCcgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBAc3R5bGlzdGljL21heC1sZW4sIHF1b3RlLXByb3BzLCBAc3R5bGlzdGljL3F1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX05vZGVDb25maWdTY2hlbWFUZXN0KG9iajogTm9kZUNvbmZpZ1NjaGVtYVRlc3QgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdleHBlcmltZW50YWwtdGVzdC1jb3ZlcmFnZSc6IG9iai5leHBlcmltZW50YWxUZXN0Q292ZXJhZ2UsXG4gICAgJ2V4cGVyaW1lbnRhbC10ZXN0LW1vZHVsZS1tb2Nrcyc6IG9iai5leHBlcmltZW50YWxUZXN0TW9kdWxlTW9ja3MsXG4gICAgJ3Rlc3QnOiBvYmoudGVzdCxcbiAgICAndGVzdC1jb25jdXJyZW5jeSc6IG9iai50ZXN0Q29uY3VycmVuY3ksXG4gICAgJ3Rlc3QtY292ZXJhZ2UtYnJhbmNoZXMnOiBvYmoudGVzdENvdmVyYWdlQnJhbmNoZXMsXG4gICAgJ3Rlc3QtY292ZXJhZ2UtZXhjbHVkZSc6IG9iai50ZXN0Q292ZXJhZ2VFeGNsdWRlPy5tYXAoeSA9PiB5KSxcbiAgICAndGVzdC1jb3ZlcmFnZS1mdW5jdGlvbnMnOiBvYmoudGVzdENvdmVyYWdlRnVuY3Rpb25zLFxuICAgICd0ZXN0LWNvdmVyYWdlLWluY2x1ZGUnOiBvYmoudGVzdENvdmVyYWdlSW5jbHVkZT8ubWFwKHkgPT4geSksXG4gICAgJ3Rlc3QtY292ZXJhZ2UtbGluZXMnOiBvYmoudGVzdENvdmVyYWdlTGluZXMsXG4gICAgJ3Rlc3QtZm9yY2UtZXhpdCc6IG9iai50ZXN0Rm9yY2VFeGl0LFxuICAgICd0ZXN0LWdsb2JhbC1zZXR1cCc6IG9iai50ZXN0R2xvYmFsU2V0dXAsXG4gICAgJ3Rlc3QtaXNvbGF0aW9uJzogb2JqLnRlc3RJc29sYXRpb24sXG4gICAgJ3Rlc3QtbmFtZS1wYXR0ZXJuJzogb2JqLnRlc3ROYW1lUGF0dGVybj8ubWFwKHkgPT4geSksXG4gICAgJ3Rlc3Qtb25seSc6IG9iai50ZXN0T25seSxcbiAgICAndGVzdC1yYW5kb20tc2VlZCc6IG9iai50ZXN0UmFuZG9tU2VlZCxcbiAgICAndGVzdC1yYW5kb21pemUnOiBvYmoudGVzdFJhbmRvbWl6ZSxcbiAgICAndGVzdC1yZXBvcnRlcic6IG9iai50ZXN0UmVwb3J0ZXI/Lm1hcCh5ID0+IHkpLFxuICAgICd0ZXN0LXJlcG9ydGVyLWRlc3RpbmF0aW9uJzogb2JqLnRlc3RSZXBvcnRlckRlc3RpbmF0aW9uPy5tYXAoeSA9PiB5KSxcbiAgICAndGVzdC1yZXJ1bi1mYWlsdXJlcyc6IG9iai50ZXN0UmVydW5GYWlsdXJlcyxcbiAgICAndGVzdC1zaGFyZCc6IG9iai50ZXN0U2hhcmQsXG4gICAgJ3Rlc3Qtc2tpcC1wYXR0ZXJuJzogb2JqLnRlc3RTa2lwUGF0dGVybj8ubWFwKHkgPT4geSksXG4gICAgJ3Rlc3QtdGltZW91dCc6IG9iai50ZXN0VGltZW91dCxcbiAgICAndGVzdC11cGRhdGUtc25hcHNob3RzJzogb2JqLnRlc3RVcGRhdGVTbmFwc2hvdHMsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFXYXRjaFxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vZGVDb25maWdTY2hlbWFXYXRjaCB7XG4gIC8qKlxuICAgKiBydW4gaW4gd2F0Y2ggbW9kZVxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFXYXRjaCN3YXRjaFxuICAgKi9cbiAgcmVhZG9ubHkgd2F0Y2g/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBraWxsIHNpZ25hbCB0byBzZW5kIHRvIHRoZSBwcm9jZXNzIG9uIHdhdGNoIG1vZGUgcmVzdGFydHMoZGVmYXVsdDogU0lHVEVSTSlcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hV2F0Y2gjd2F0Y2gta2lsbC1zaWduYWxcbiAgICovXG4gIHJlYWRvbmx5IHdhdGNoS2lsbFNpZ25hbD86IHN0cmluZztcblxuICAvKipcbiAgICogcGF0aCB0byB3YXRjaFxuICAgKlxuICAgKiBAc2NoZW1hIE5vZGVDb25maWdTY2hlbWFXYXRjaCN3YXRjaC1wYXRoXG4gICAqL1xuICByZWFkb25seSB3YXRjaFBhdGg/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogcHJlc2VydmUgb3V0cHV0cyBvbiB3YXRjaCBtb2RlIHJlc3RhcnRcbiAgICpcbiAgICogQHNjaGVtYSBOb2RlQ29uZmlnU2NoZW1hV2F0Y2gjd2F0Y2gtcHJlc2VydmUtb3V0cHV0XG4gICAqL1xuICByZWFkb25seSB3YXRjaFByZXNlcnZlT3V0cHV0PzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnTm9kZUNvbmZpZ1NjaGVtYVdhdGNoJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICogQGludGVybmFsXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIEBzdHlsaXN0aWMvbWF4LWxlbiwgcXVvdGUtcHJvcHMsIEBzdHlsaXN0aWMvcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fTm9kZUNvbmZpZ1NjaGVtYVdhdGNoKG9iajogTm9kZUNvbmZpZ1NjaGVtYVdhdGNoIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnd2F0Y2gnOiBvYmoud2F0Y2gsXG4gICAgJ3dhdGNoLWtpbGwtc2lnbmFsJzogb2JqLndhdGNoS2lsbFNpZ25hbCxcbiAgICAnd2F0Y2gtcGF0aCc6IG9iai53YXRjaFBhdGg/Lm1hcCh5ID0+IHkpLFxuICAgICd3YXRjaC1wcmVzZXJ2ZS1vdXRwdXQnOiBvYmoud2F0Y2hQcmVzZXJ2ZU91dHB1dCxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgQHN0eWxpc3RpYy9tYXgtbGVuLCBxdW90ZS1wcm9wcywgQHN0eWxpc3RpYy9xdW90ZS1wcm9wcyAqL1xuIl19