@aws-cdk/aws-glue-alpha
Version:
The CDK Construct Library for AWS::Glue
97 lines • 14.6 kB
JavaScript
;
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.PySparkEtlJob = void 0;
const jsiiDeprecationWarnings = require("../../.warnings.jsii.js");
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
const aws_glue_1 = require("aws-cdk-lib/aws-glue");
const constants_1 = require("../constants");
const spark_job_1 = require("./spark-job");
const metadata_resource_1 = require("aws-cdk-lib/core/lib/metadata-resource");
const prop_injectable_1 = require("aws-cdk-lib/core/lib/prop-injectable");
/**
* PySpark ETL Jobs class
*
* ETL jobs support pySpark and Scala languages, for which there are separate
* but similar constructors. ETL jobs default to the G2 worker type, but you
* can override this default with other supported worker type values
* (G1, G2, G4 and G8). ETL jobs defaults to Glue version 4.0, which you can
* override to 3.0. The following ETL features are enabled by default:
* —enable-metrics, —enable-spark-ui, —enable-continuous-cloudwatch-log.
* You can find more details about version, worker type and other features
* in Glue's public documentation.
*/
let PySparkEtlJob = class PySparkEtlJob extends spark_job_1.SparkJob {
/**
* PySparkEtlJob constructor
*/
constructor(scope, id, props) {
super(scope, id, props);
try {
jsiiDeprecationWarnings._aws_cdk_aws_glue_alpha_PySparkEtlJobProps(props);
}
catch (error) {
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
Error.captureStackTrace(error, PySparkEtlJob);
}
throw error;
}
// Enhanced CDK Analytics Telemetry
(0, metadata_resource_1.addConstructMetadata)(this, props);
// Combine command line arguments into a single line item
const defaultArguments = {
...this.executableArguments(props),
...this.nonExecutableCommonArguments(props),
};
const jobResource = new aws_glue_1.CfnJob(this, 'Resource', {
name: props.jobName,
description: props.description,
role: this.role.roleArn,
command: {
name: constants_1.JobType.ETL,
scriptLocation: this.codeS3ObjectUrl(props.script),
pythonVersion: constants_1.PythonVersion.THREE,
},
glueVersion: props.glueVersion ?? constants_1.GlueVersion.V4_0,
workerType: props.workerType ?? constants_1.WorkerType.G_1X,
numberOfWorkers: props.numberOfWorkers ? props.numberOfWorkers : 10,
maxRetries: props.jobRunQueuingEnabled ? 0 : props.maxRetries,
jobRunQueuingEnabled: props.jobRunQueuingEnabled ? props.jobRunQueuingEnabled : false,
executionProperty: props.maxConcurrentRuns ? { maxConcurrentRuns: props.maxConcurrentRuns } : undefined,
timeout: props.timeout?.toMinutes(),
connections: props.connections ? { connections: props.connections.map((connection) => connection.connectionName) } : undefined,
securityConfiguration: props.securityConfiguration?.securityConfigurationName,
tags: props.tags,
defaultArguments,
});
const resourceName = this.getResourceNameAttribute(jobResource.ref);
this.jobArn = this.buildJobArn(this, resourceName);
this.jobName = resourceName;
}
/**
* Set the executable arguments with best practices enabled by default
*
* @returns An array of arguments for Glue to use on execution
*/
executableArguments(props) {
const args = {};
args['--job-language'] = constants_1.JobLanguage.PYTHON;
this.setupExtraCodeArguments(args, props);
return args;
}
};
exports.PySparkEtlJob = PySparkEtlJob;
_a = JSII_RTTI_SYMBOL_1;
PySparkEtlJob[_a] = { fqn: "@aws-cdk/aws-glue-alpha.PySparkEtlJob", version: "2.208.0-alpha.0" };
/** Uniquely identifies this class. */
PySparkEtlJob.PROPERTY_INJECTION_ID = '@aws-cdk.aws-glue-alpha.PySparkEtlJob';
exports.PySparkEtlJob = PySparkEtlJob = __decorate([
prop_injectable_1.propertyInjectable
], PySparkEtlJob);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHlzcGFyay1ldGwtam9iLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicHlzcGFyay1ldGwtam9iLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLG1EQUE4QztBQUU5Qyw0Q0FBNEY7QUFFNUYsMkNBQXNEO0FBQ3RELDhFQUE4RTtBQUM5RSwwRUFBMEU7QUFvRDFFOzs7Ozs7Ozs7OztHQVdHO0FBRUksSUFBTSxhQUFhLEdBQW5CLE1BQU0sYUFBYyxTQUFRLG9CQUFRO0lBTXpDOztPQUVHO0lBQ0gsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF5QjtRQUNqRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQzs7Ozs7OytDQVZmLGFBQWE7Ozs7UUFXdEIsbUNBQW1DO1FBQ25DLElBQUEsd0NBQW9CLEVBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRWxDLHlEQUF5RDtRQUN6RCxNQUFNLGdCQUFnQixHQUFHO1lBQ3ZCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQztZQUNsQyxHQUFHLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxLQUFLLENBQUM7U0FDNUMsQ0FBQztRQUVGLE1BQU0sV0FBVyxHQUFHLElBQUksaUJBQU0sQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQy9DLElBQUksRUFBRSxLQUFLLENBQUMsT0FBTztZQUNuQixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7WUFDOUIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztZQUN2QixPQUFPLEVBQUU7Z0JBQ1AsSUFBSSxFQUFFLG1CQUFPLENBQUMsR0FBRztnQkFDakIsY0FBYyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztnQkFDbEQsYUFBYSxFQUFFLHlCQUFhLENBQUMsS0FBSzthQUNuQztZQUNELFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVyxJQUFJLHVCQUFXLENBQUMsSUFBSTtZQUNsRCxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVUsSUFBSSxzQkFBVSxDQUFDLElBQUk7WUFDL0MsZUFBZSxFQUFFLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDbkUsVUFBVSxFQUFFLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVTtZQUM3RCxvQkFBb0IsRUFBRSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsS0FBSztZQUNyRixpQkFBaUIsRUFBRSxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDdkcsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFO1lBQ25DLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDOUgscUJBQXFCLEVBQUUsS0FBSyxDQUFDLHFCQUFxQixFQUFFLHlCQUF5QjtZQUM3RSxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7WUFDaEIsZ0JBQWdCO1NBQ2pCLENBQUMsQ0FBQztRQUVILE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsT0FBTyxHQUFHLFlBQVksQ0FBQztLQUM3QjtJQUVEOzs7O09BSUc7SUFDSyxtQkFBbUIsQ0FBQyxLQUF5QjtRQUNuRCxNQUFNLElBQUksR0FBOEIsRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLHVCQUFXLENBQUMsTUFBTSxDQUFDO1FBQzVDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDMUMsT0FBTyxJQUFJLENBQUM7S0FDYjs7QUF6RFUsc0NBQWE7OztBQUN4QixzQ0FBc0M7QUFDZixtQ0FBcUIsR0FBVyx1Q0FBdUMsQUFBbEQsQ0FBbUQ7d0JBRnBGLGFBQWE7SUFEekIsb0NBQWtCO0dBQ04sYUFBYSxDQTBEekIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZm5Kb2IgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZ2x1ZSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IEpvYlR5cGUsIEdsdWVWZXJzaW9uLCBKb2JMYW5ndWFnZSwgUHl0aG9uVmVyc2lvbiwgV29ya2VyVHlwZSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBDb2RlIH0gZnJvbSAnLi4vY29kZSc7XG5pbXBvcnQgeyBTcGFya0pvYiwgU3BhcmtKb2JQcm9wcyB9IGZyb20gJy4vc3Bhcmstam9iJztcbmltcG9ydCB7IGFkZENvbnN0cnVjdE1ldGFkYXRhIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvbWV0YWRhdGEtcmVzb3VyY2UnO1xuaW1wb3J0IHsgcHJvcGVydHlJbmplY3RhYmxlIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvcHJvcC1pbmplY3RhYmxlJztcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjcmVhdGluZyBhIFB5dGhvbiBTcGFyayBFVEwgam9iXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHlTcGFya0V0bEpvYlByb3BzIGV4dGVuZHMgU3BhcmtKb2JQcm9wcyB7XG4gIC8qKlxuICAgKiBFeHRyYSBQeXRob24gRmlsZXMgUzMgVVJMIChvcHRpb25hbClcbiAgICogUzMgVVJMIHdoZXJlIGFkZGl0aW9uYWwgcHl0aG9uIGRlcGVuZGVuY2llcyBhcmUgbG9jYXRlZFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGV4dHJhIGZpbGVzXG4gICAqL1xuICByZWFkb25seSBleHRyYVB5dGhvbkZpbGVzPzogQ29kZVtdO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGZpbGVzLCBzdWNoIGFzIGNvbmZpZ3VyYXRpb24gZmlsZXMgdGhhdCBBV1MgR2x1ZSBjb3BpZXMgdG8gdGhlIHdvcmtpbmcgZGlyZWN0b3J5IG9mIHlvdXIgc2NyaXB0IGJlZm9yZSBleGVjdXRpbmcgaXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gZXh0cmEgZmlsZXMgc3BlY2lmaWVkLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9nbHVlL2xhdGVzdC9kZy9hd3MtZ2x1ZS1wcm9ncmFtbWluZy1ldGwtZ2x1ZS1hcmd1bWVudHMuaHRtbFxuICAgKi9cbiAgcmVhZG9ubHkgZXh0cmFGaWxlcz86IENvZGVbXTtcblxuICAvKipcbiAgICogRXh0cmEgSmFycyBTMyBVUkwgKG9wdGlvbmFsKVxuICAgKiBTMyBVUkwgd2hlcmUgYWRkaXRpb25hbCBqYXIgZGVwZW5kZW5jaWVzIGFyZSBsb2NhdGVkXG4gICAqIEBkZWZhdWx0IC0gbm8gZXh0cmEgamFyIGZpbGVzXG4gICAqL1xuICByZWFkb25seSBleHRyYUphcnM/OiBDb2RlW107XG5cbiAgLyoqXG4gICAqIFNldHRpbmcgdGhpcyB2YWx1ZSB0byB0cnVlIHByaW9yaXRpemVzIHRoZSBjdXN0b21lcidzIGV4dHJhIEpBUiBmaWxlcyBpbiB0aGUgY2xhc3NwYXRoLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZSAtIHByaW9yaXR5IGlzIG5vdCBnaXZlbiB0byB1c2VyLXByb3ZpZGVkIGphcnNcbiAgICpcbiAgICogQHNlZSBgLS11c2VyLWphcnMtZmlyc3RgIGluIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9nbHVlL2xhdGVzdC9kZy9hd3MtZ2x1ZS1wcm9ncmFtbWluZy1ldGwtZ2x1ZS1hcmd1bWVudHMuaHRtbFxuICAgKi9cbiAgcmVhZG9ubHkgZXh0cmFKYXJzRmlyc3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgd2hldGhlciBqb2IgcnVuIHF1ZXVpbmcgaXMgZW5hYmxlZCBmb3IgdGhlIGpvYiBydW5zIGZvciB0aGlzIGpvYi5cbiAgICogQSB2YWx1ZSBvZiB0cnVlIG1lYW5zIGpvYiBydW4gcXVldWluZyBpcyBlbmFibGVkIGZvciB0aGUgam9iIHJ1bnMuXG4gICAqIElmIGZhbHNlIG9yIG5vdCBwb3B1bGF0ZWQsIHRoZSBqb2IgcnVucyB3aWxsIG5vdCBiZSBjb25zaWRlcmVkIGZvciBxdWV1ZWluZy5cbiAgICogSWYgdGhpcyBmaWVsZCBkb2VzIG5vdCBtYXRjaCB0aGUgdmFsdWUgc2V0IGluIHRoZSBqb2IgcnVuLCB0aGVuIHRoZSB2YWx1ZSBmcm9tXG4gICAqIHRoZSBqb2IgcnVuIGZpZWxkIHdpbGwgYmUgdXNlZC4gVGhpcyBwcm9wZXJ0eSBtdXN0IGJlIHNldCB0byBmYWxzZSBmb3IgZmxleCBqb2JzLlxuICAgKiBJZiB0aGlzIHByb3BlcnR5IGlzIGVuYWJsZWQsIG1heFJldHJpZXMgbXVzdCBiZSBzZXQgdG8gemVyby5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGpvYlJ1blF1ZXVpbmdFbmFibGVkPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQeVNwYXJrIEVUTCBKb2JzIGNsYXNzXG4gKlxuICogRVRMIGpvYnMgc3VwcG9ydCBweVNwYXJrIGFuZCBTY2FsYSBsYW5ndWFnZXMsIGZvciB3aGljaCB0aGVyZSBhcmUgc2VwYXJhdGVcbiAqIGJ1dCBzaW1pbGFyIGNvbnN0cnVjdG9ycy4gRVRMIGpvYnMgZGVmYXVsdCB0byB0aGUgRzIgd29ya2VyIHR5cGUsIGJ1dCB5b3VcbiAqIGNhbiBvdmVycmlkZSB0aGlzIGRlZmF1bHQgd2l0aCBvdGhlciBzdXBwb3J0ZWQgd29ya2VyIHR5cGUgdmFsdWVzXG4gKiAoRzEsIEcyLCBHNCBhbmQgRzgpLiBFVEwgam9icyBkZWZhdWx0cyB0byBHbHVlIHZlcnNpb24gNC4wLCB3aGljaCB5b3UgY2FuXG4gKiBvdmVycmlkZSB0byAzLjAuIFRoZSBmb2xsb3dpbmcgRVRMIGZlYXR1cmVzIGFyZSBlbmFibGVkIGJ5IGRlZmF1bHQ6XG4gKiDigJRlbmFibGUtbWV0cmljcywg4oCUZW5hYmxlLXNwYXJrLXVpLCDigJRlbmFibGUtY29udGludW91cy1jbG91ZHdhdGNoLWxvZy5cbiAqIFlvdSBjYW4gZmluZCBtb3JlIGRldGFpbHMgYWJvdXQgdmVyc2lvbiwgd29ya2VyIHR5cGUgYW5kIG90aGVyIGZlYXR1cmVzXG4gKiBpbiBHbHVlJ3MgcHVibGljIGRvY3VtZW50YXRpb24uXG4gKi9cbkBwcm9wZXJ0eUluamVjdGFibGVcbmV4cG9ydCBjbGFzcyBQeVNwYXJrRXRsSm9iIGV4dGVuZHMgU3BhcmtKb2Ige1xuICAvKiogVW5pcXVlbHkgaWRlbnRpZmllcyB0aGlzIGNsYXNzLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1BFUlRZX0lOSkVDVElPTl9JRDogc3RyaW5nID0gJ0Bhd3MtY2RrLmF3cy1nbHVlLWFscGhhLlB5U3BhcmtFdGxKb2InO1xuICBwdWJsaWMgcmVhZG9ubHkgam9iQXJuOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBqb2JOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFB5U3BhcmtFdGxKb2IgY29uc3RydWN0b3JcbiAgICovXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQeVNwYXJrRXRsSm9iUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcbiAgICAvLyBFbmhhbmNlZCBDREsgQW5hbHl0aWNzIFRlbGVtZXRyeVxuICAgIGFkZENvbnN0cnVjdE1ldGFkYXRhKHRoaXMsIHByb3BzKTtcblxuICAgIC8vIENvbWJpbmUgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBpbnRvIGEgc2luZ2xlIGxpbmUgaXRlbVxuICAgIGNvbnN0IGRlZmF1bHRBcmd1bWVudHMgPSB7XG4gICAgICAuLi50aGlzLmV4ZWN1dGFibGVBcmd1bWVudHMocHJvcHMpLFxuICAgICAgLi4udGhpcy5ub25FeGVjdXRhYmxlQ29tbW9uQXJndW1lbnRzKHByb3BzKSxcbiAgICB9O1xuXG4gICAgY29uc3Qgam9iUmVzb3VyY2UgPSBuZXcgQ2ZuSm9iKHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIG5hbWU6IHByb3BzLmpvYk5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICByb2xlOiB0aGlzLnJvbGUucm9sZUFybixcbiAgICAgIGNvbW1hbmQ6IHtcbiAgICAgICAgbmFtZTogSm9iVHlwZS5FVEwsXG4gICAgICAgIHNjcmlwdExvY2F0aW9uOiB0aGlzLmNvZGVTM09iamVjdFVybChwcm9wcy5zY3JpcHQpLFxuICAgICAgICBweXRob25WZXJzaW9uOiBQeXRob25WZXJzaW9uLlRIUkVFLFxuICAgICAgfSxcbiAgICAgIGdsdWVWZXJzaW9uOiBwcm9wcy5nbHVlVmVyc2lvbiA/PyBHbHVlVmVyc2lvbi5WNF8wLFxuICAgICAgd29ya2VyVHlwZTogcHJvcHMud29ya2VyVHlwZSA/PyBXb3JrZXJUeXBlLkdfMVgsXG4gICAgICBudW1iZXJPZldvcmtlcnM6IHByb3BzLm51bWJlck9mV29ya2VycyA/IHByb3BzLm51bWJlck9mV29ya2VycyA6IDEwLFxuICAgICAgbWF4UmV0cmllczogcHJvcHMuam9iUnVuUXVldWluZ0VuYWJsZWQgPyAwIDogcHJvcHMubWF4UmV0cmllcyxcbiAgICAgIGpvYlJ1blF1ZXVpbmdFbmFibGVkOiBwcm9wcy5qb2JSdW5RdWV1aW5nRW5hYmxlZCA/IHByb3BzLmpvYlJ1blF1ZXVpbmdFbmFibGVkIDogZmFsc2UsXG4gICAgICBleGVjdXRpb25Qcm9wZXJ0eTogcHJvcHMubWF4Q29uY3VycmVudFJ1bnMgPyB7IG1heENvbmN1cnJlbnRSdW5zOiBwcm9wcy5tYXhDb25jdXJyZW50UnVucyB9IDogdW5kZWZpbmVkLFxuICAgICAgdGltZW91dDogcHJvcHMudGltZW91dD8udG9NaW51dGVzKCksXG4gICAgICBjb25uZWN0aW9uczogcHJvcHMuY29ubmVjdGlvbnMgPyB7IGNvbm5lY3Rpb25zOiBwcm9wcy5jb25uZWN0aW9ucy5tYXAoKGNvbm5lY3Rpb24pID0+IGNvbm5lY3Rpb24uY29ubmVjdGlvbk5hbWUpIH0gOiB1bmRlZmluZWQsXG4gICAgICBzZWN1cml0eUNvbmZpZ3VyYXRpb246IHByb3BzLnNlY3VyaXR5Q29uZmlndXJhdGlvbj8uc2VjdXJpdHlDb25maWd1cmF0aW9uTmFtZSxcbiAgICAgIHRhZ3M6IHByb3BzLnRhZ3MsXG4gICAgICBkZWZhdWx0QXJndW1lbnRzLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcmVzb3VyY2VOYW1lID0gdGhpcy5nZXRSZXNvdXJjZU5hbWVBdHRyaWJ1dGUoam9iUmVzb3VyY2UucmVmKTtcbiAgICB0aGlzLmpvYkFybiA9IHRoaXMuYnVpbGRKb2JBcm4odGhpcywgcmVzb3VyY2VOYW1lKTtcbiAgICB0aGlzLmpvYk5hbWUgPSByZXNvdXJjZU5hbWU7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBleGVjdXRhYmxlIGFyZ3VtZW50cyB3aXRoIGJlc3QgcHJhY3RpY2VzIGVuYWJsZWQgYnkgZGVmYXVsdFxuICAgKlxuICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBhcmd1bWVudHMgZm9yIEdsdWUgdG8gdXNlIG9uIGV4ZWN1dGlvblxuICAgKi9cbiAgcHJpdmF0ZSBleGVjdXRhYmxlQXJndW1lbnRzKHByb3BzOiBQeVNwYXJrRXRsSm9iUHJvcHMpIHtcbiAgICBjb25zdCBhcmdzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG4gICAgYXJnc1snLS1qb2ItbGFuZ3VhZ2UnXSA9IEpvYkxhbmd1YWdlLlBZVEhPTjtcbiAgICB0aGlzLnNldHVwRXh0cmFDb2RlQXJndW1lbnRzKGFyZ3MsIHByb3BzKTtcbiAgICByZXR1cm4gYXJncztcbiAgfVxufVxuIl19