1 | ;
|
2 | var _a, _b;
|
3 | Object.defineProperty(exports, "__esModule", { value: true });
|
4 | exports.ArtifactPath = exports.Artifact = void 0;
|
5 | const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
|
6 | const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
7 | const core_1 = require("@aws-cdk/core");
|
8 | const validation = require("./private/validation");
|
9 | /**
|
10 | * An output artifact of an action. Artifacts can be used as input by some actions.
|
11 | */
|
12 | class Artifact {
|
13 | constructor(artifactName) {
|
14 | this.metadata = {};
|
15 | validation.validateArtifactName(artifactName);
|
16 | this._artifactName = artifactName;
|
17 | }
|
18 | /**
|
19 | * A static factory method used to create instances of the Artifact class.
|
20 | * Mainly meant to be used from `decdk`.
|
21 | *
|
22 | * @param name the (required) name of the Artifact
|
23 | */
|
24 | static artifact(name) {
|
25 | return new Artifact(name);
|
26 | }
|
27 | get artifactName() {
|
28 | return this._artifactName;
|
29 | }
|
30 | /**
|
31 | * Returns an ArtifactPath for a file within this artifact.
|
32 | * CfnOutput is in the form "<artifact-name>::<file-name>"
|
33 | * @param fileName The name of the file
|
34 | */
|
35 | atPath(fileName) {
|
36 | return new ArtifactPath(this, fileName);
|
37 | }
|
38 | /**
|
39 | * The artifact attribute for the name of the S3 bucket where the artifact is stored.
|
40 | */
|
41 | get bucketName() {
|
42 | return artifactAttribute(this, 'BucketName');
|
43 | }
|
44 | /**
|
45 | * The artifact attribute for The name of the .zip file that contains the artifact that is
|
46 | * generated by AWS CodePipeline, such as 1ABCyZZ.zip.
|
47 | */
|
48 | get objectKey() {
|
49 | return artifactAttribute(this, 'ObjectKey');
|
50 | }
|
51 | /**
|
52 | * The artifact attribute of the Amazon Simple Storage Service (Amazon S3) URL of the artifact,
|
53 | * such as https://s3-us-west-2.amazonaws.com/artifactstorebucket-yivczw8jma0c/test/TemplateSo/1ABCyZZ.zip.
|
54 | */
|
55 | get url() {
|
56 | return artifactAttribute(this, 'URL');
|
57 | }
|
58 | /**
|
59 | * Returns a token for a value inside a JSON file within this artifact.
|
60 | * @param jsonFile The JSON file name.
|
61 | * @param keyName The hash key.
|
62 | */
|
63 | getParam(jsonFile, keyName) {
|
64 | return artifactGetParam(this, jsonFile, keyName);
|
65 | }
|
66 | /**
|
67 | * Returns the location of the .zip file in S3 that this Artifact represents.
|
68 | * Used by Lambda's `CfnParametersCode` when being deployed in a CodePipeline.
|
69 | */
|
70 | get s3Location() {
|
71 | return {
|
72 | bucketName: this.bucketName,
|
73 | objectKey: this.objectKey,
|
74 | };
|
75 | }
|
76 | /**
|
77 | * Add arbitrary extra payload to the artifact under a given key.
|
78 | * This can be used by CodePipeline actions to communicate data between themselves.
|
79 | * If metadata was already present under the given key,
|
80 | * it will be overwritten with the new value.
|
81 | */
|
82 | setMetadata(key, value) {
|
83 | this.metadata[key] = value;
|
84 | }
|
85 | /**
|
86 | * Retrieve the metadata stored in this artifact under the given key.
|
87 | * If there is no metadata stored under the given key,
|
88 | * null will be returned.
|
89 | */
|
90 | getMetadata(key) {
|
91 | return this.metadata[key];
|
92 | }
|
93 | toString() {
|
94 | return this.artifactName;
|
95 | }
|
96 | /** @internal */
|
97 | _setName(name) {
|
98 | if (this._artifactName) {
|
99 | throw new Error(`Artifact already has name '${this._artifactName}', cannot override it`);
|
100 | }
|
101 | else {
|
102 | this._artifactName = name;
|
103 | }
|
104 | }
|
105 | }
|
106 | exports.Artifact = Artifact;
|
107 | _a = JSII_RTTI_SYMBOL_1;
|
108 | Artifact[_a] = { fqn: "@aws-cdk/aws-codepipeline.Artifact", version: "1.156.1" };
|
109 | /**
|
110 | * A specific file within an output artifact.
|
111 | *
|
112 | * The most common use case for this is specifying the template file
|
113 | * for a CloudFormation action.
|
114 | */
|
115 | class ArtifactPath {
|
116 | constructor(artifact, fileName) {
|
117 | this.artifact = artifact;
|
118 | this.fileName = fileName;
|
119 | try {
|
120 | jsiiDeprecationWarnings._aws_cdk_aws_codepipeline_Artifact(artifact);
|
121 | }
|
122 | catch (error) {
|
123 | if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
124 | Error.captureStackTrace(error, this.constructor);
|
125 | }
|
126 | throw error;
|
127 | }
|
128 | }
|
129 | static artifactPath(artifactName, fileName) {
|
130 | return new ArtifactPath(Artifact.artifact(artifactName), fileName);
|
131 | }
|
132 | get location() {
|
133 | const artifactName = this.artifact.artifactName
|
134 | ? this.artifact.artifactName
|
135 | : core_1.Lazy.string({ produce: () => this.artifact.artifactName });
|
136 | return `${artifactName}::${this.fileName}`;
|
137 | }
|
138 | }
|
139 | exports.ArtifactPath = ArtifactPath;
|
140 | _b = JSII_RTTI_SYMBOL_1;
|
141 | ArtifactPath[_b] = { fqn: "@aws-cdk/aws-codepipeline.ArtifactPath", version: "1.156.1" };
|
142 | function artifactAttribute(artifact, attributeName) {
|
143 | const lazyArtifactName = core_1.Lazy.string({ produce: () => artifact.artifactName });
|
144 | return core_1.Token.asString({ 'Fn::GetArtifactAtt': [lazyArtifactName, attributeName] });
|
145 | }
|
146 | function artifactGetParam(artifact, jsonFile, keyName) {
|
147 | const lazyArtifactName = core_1.Lazy.string({ produce: () => artifact.artifactName });
|
148 | return core_1.Token.asString({ 'Fn::GetParam': [lazyArtifactName, jsonFile, keyName] });
|
149 | }
|
150 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJ0aWZhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhcnRpZmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSx3Q0FBNEM7QUFDNUMsbURBQW1EO0FBRW5EOztHQUVHO0FBQ0gsTUFBYSxRQUFRO0lBY25CLFlBQVksWUFBcUI7UUFGaEIsYUFBUSxHQUEyQixFQUFFLENBQUM7UUFHckQsVUFBVSxDQUFDLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRTlDLElBQUksQ0FBQyxhQUFhLEdBQUcsWUFBWSxDQUFDO0tBQ25DO0lBakJEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFZO1FBQ2pDLE9BQU8sSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDM0I7SUFXRCxJQUFXLFlBQVk7UUFDckIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0tBQzNCO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxRQUFnQjtRQUM1QixPQUFPLElBQUksWUFBWSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztLQUN6QztJQUVEOztPQUVHO0lBQ0gsSUFBVyxVQUFVO1FBQ25CLE9BQU8saUJBQWlCLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDO0tBQzlDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBVyxTQUFTO1FBQ2xCLE9BQU8saUJBQWlCLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0tBQzdDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBVyxHQUFHO1FBQ1osT0FBTyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7S0FDdkM7SUFFRDs7OztPQUlHO0lBQ0ksUUFBUSxDQUFDLFFBQWdCLEVBQUUsT0FBZTtRQUMvQyxPQUFPLGdCQUFnQixDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDbEQ7SUFFRDs7O09BR0c7SUFDSCxJQUFXLFVBQVU7UUFDbkIsT0FBTztZQUNMLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7U0FDMUIsQ0FBQztLQUNIO0lBRUQ7Ozs7O09BS0c7SUFDSSxXQUFXLENBQUMsR0FBVyxFQUFFLEtBQVU7UUFDeEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7S0FDNUI7SUFFRDs7OztPQUlHO0lBQ0ksV0FBVyxDQUFDLEdBQVc7UUFDNUIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQzNCO0lBRU0sUUFBUTtRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztLQUMxQjtJQUVELGdCQUFnQjtJQUNOLFFBQVEsQ0FBQyxJQUFZO1FBQzdCLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixJQUFJLENBQUMsYUFBYSx1QkFBdUIsQ0FBQyxDQUFDO1NBQzFGO2FBQU07WUFDTCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztTQUMzQjtLQUNGOztBQTFHSCw0QkEyR0M7OztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBYSxZQUFZO0lBS3ZCLFlBQXFCLFFBQWtCLEVBQVcsUUFBZ0I7UUFBN0MsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUFXLGFBQVEsR0FBUixRQUFRLENBQVE7Ozs7Ozs7Ozs7S0FFakU7SUFOTSxNQUFNLENBQUMsWUFBWSxDQUFDLFlBQW9CLEVBQUUsUUFBZ0I7UUFDL0QsT0FBTyxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0tBQ3BFO0lBTUQsSUFBVyxRQUFRO1FBQ2pCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWTtZQUM3QyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZO1lBQzVCLENBQUMsQ0FBQyxXQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUMvRCxPQUFPLEdBQUcsWUFBWSxLQUFLLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztLQUM1Qzs7QUFkSCxvQ0FlQzs7O0FBRUQsU0FBUyxpQkFBaUIsQ0FBQyxRQUFrQixFQUFFLGFBQXFCO0lBQ2xFLE1BQU0sZ0JBQWdCLEdBQUcsV0FBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUMvRSxPQUFPLFlBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxvQkFBb0IsRUFBRSxDQUFDLGdCQUFnQixFQUFFLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNyRixDQUFDO0FBRUQsU0FBUyxnQkFBZ0IsQ0FBQyxRQUFrQixFQUFFLFFBQWdCLEVBQUUsT0FBZTtJQUM3RSxNQUFNLGdCQUFnQixHQUFHLFdBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7SUFDL0UsT0FBTyxZQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsY0FBYyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNuRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgczMgZnJvbSAnQGF3cy1jZGsvYXdzLXMzJztcbmltcG9ydCB7IExhenksIFRva2VuIH0gZnJvbSAnQGF3cy1jZGsvY29yZSc7XG5pbXBvcnQgKiBhcyB2YWxpZGF0aW9uIGZyb20gJy4vcHJpdmF0ZS92YWxpZGF0aW9uJztcblxuLyoqXG4gKiBBbiBvdXRwdXQgYXJ0aWZhY3Qgb2YgYW4gYWN0aW9uLiBBcnRpZmFjdHMgY2FuIGJlIHVzZWQgYXMgaW5wdXQgYnkgc29tZSBhY3Rpb25zLlxuICovXG5leHBvcnQgY2xhc3MgQXJ0aWZhY3Qge1xuICAvKipcbiAgICogQSBzdGF0aWMgZmFjdG9yeSBtZXRob2QgdXNlZCB0byBjcmVhdGUgaW5zdGFuY2VzIG9mIHRoZSBBcnRpZmFjdCBjbGFzcy5cbiAgICogTWFpbmx5IG1lYW50IHRvIGJlIHVzZWQgZnJvbSBgZGVjZGtgLlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSB0aGUgKHJlcXVpcmVkKSBuYW1lIG9mIHRoZSBBcnRpZmFjdFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhcnRpZmFjdChuYW1lOiBzdHJpbmcpOiBBcnRpZmFjdCB7XG4gICAgcmV0dXJuIG5ldyBBcnRpZmFjdChuYW1lKTtcbiAgfVxuXG4gIHByaXZhdGUgX2FydGlmYWN0TmFtZT86IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBtZXRhZGF0YTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKGFydGlmYWN0TmFtZT86IHN0cmluZykge1xuICAgIHZhbGlkYXRpb24udmFsaWRhdGVBcnRpZmFjdE5hbWUoYXJ0aWZhY3ROYW1lKTtcblxuICAgIHRoaXMuX2FydGlmYWN0TmFtZSA9IGFydGlmYWN0TmFtZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXJ0aWZhY3ROYW1lKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2FydGlmYWN0TmFtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIEFydGlmYWN0UGF0aCBmb3IgYSBmaWxlIHdpdGhpbiB0aGlzIGFydGlmYWN0LlxuICAgKiBDZm5PdXRwdXQgaXMgaW4gdGhlIGZvcm0gXCI8YXJ0aWZhY3QtbmFtZT46OjxmaWxlLW5hbWU+XCJcbiAgICogQHBhcmFtIGZpbGVOYW1lIFRoZSBuYW1lIG9mIHRoZSBmaWxlXG4gICAqL1xuICBwdWJsaWMgYXRQYXRoKGZpbGVOYW1lOiBzdHJpbmcpOiBBcnRpZmFjdFBhdGgge1xuICAgIHJldHVybiBuZXcgQXJ0aWZhY3RQYXRoKHRoaXMsIGZpbGVOYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYXJ0aWZhY3QgYXR0cmlidXRlIGZvciB0aGUgbmFtZSBvZiB0aGUgUzMgYnVja2V0IHdoZXJlIHRoZSBhcnRpZmFjdCBpcyBzdG9yZWQuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGJ1Y2tldE5hbWUoKSB7XG4gICAgcmV0dXJuIGFydGlmYWN0QXR0cmlidXRlKHRoaXMsICdCdWNrZXROYW1lJyk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGFydGlmYWN0IGF0dHJpYnV0ZSBmb3IgVGhlIG5hbWUgb2YgdGhlIC56aXAgZmlsZSB0aGF0IGNvbnRhaW5zIHRoZSBhcnRpZmFjdCB0aGF0IGlzXG4gICAqIGdlbmVyYXRlZCBieSBBV1MgQ29kZVBpcGVsaW5lLCBzdWNoIGFzIDFBQkN5WlouemlwLlxuICAgKi9cbiAgcHVibGljIGdldCBvYmplY3RLZXkoKSB7XG4gICAgcmV0dXJuIGFydGlmYWN0QXR0cmlidXRlKHRoaXMsICdPYmplY3RLZXknKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYXJ0aWZhY3QgYXR0cmlidXRlIG9mIHRoZSBBbWF6b24gU2ltcGxlIFN0b3JhZ2UgU2VydmljZSAoQW1hem9uIFMzKSBVUkwgb2YgdGhlIGFydGlmYWN0LFxuICAgKiBzdWNoIGFzIGh0dHBzOi8vczMtdXMtd2VzdC0yLmFtYXpvbmF3cy5jb20vYXJ0aWZhY3RzdG9yZWJ1Y2tldC15aXZjenc4am1hMGMvdGVzdC9UZW1wbGF0ZVNvLzFBQkN5WlouemlwLlxuICAgKi9cbiAgcHVibGljIGdldCB1cmwoKSB7XG4gICAgcmV0dXJuIGFydGlmYWN0QXR0cmlidXRlKHRoaXMsICdVUkwnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgdG9rZW4gZm9yIGEgdmFsdWUgaW5zaWRlIGEgSlNPTiBmaWxlIHdpdGhpbiB0aGlzIGFydGlmYWN0LlxuICAgKiBAcGFyYW0ganNvbkZpbGUgVGhlIEpTT04gZmlsZSBuYW1lLlxuICAgKiBAcGFyYW0ga2V5TmFtZSBUaGUgaGFzaCBrZXkuXG4gICAqL1xuICBwdWJsaWMgZ2V0UGFyYW0oanNvbkZpbGU6IHN0cmluZywga2V5TmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGFydGlmYWN0R2V0UGFyYW0odGhpcywganNvbkZpbGUsIGtleU5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGxvY2F0aW9uIG9mIHRoZSAuemlwIGZpbGUgaW4gUzMgdGhhdCB0aGlzIEFydGlmYWN0IHJlcHJlc2VudHMuXG4gICAqIFVzZWQgYnkgTGFtYmRhJ3MgYENmblBhcmFtZXRlcnNDb2RlYCB3aGVuIGJlaW5nIGRlcGxveWVkIGluIGEgQ29kZVBpcGVsaW5lLlxuICAgKi9cbiAgcHVibGljIGdldCBzM0xvY2F0aW9uKCk6IHMzLkxvY2F0aW9uIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVja2V0TmFtZTogdGhpcy5idWNrZXROYW1lLFxuICAgICAgb2JqZWN0S2V5OiB0aGlzLm9iamVjdEtleSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhcmJpdHJhcnkgZXh0cmEgcGF5bG9hZCB0byB0aGUgYXJ0aWZhY3QgdW5kZXIgYSBnaXZlbiBrZXkuXG4gICAqIFRoaXMgY2FuIGJlIHVzZWQgYnkgQ29kZVBpcGVsaW5lIGFjdGlvbnMgdG8gY29tbXVuaWNhdGUgZGF0YSBiZXR3ZWVuIHRoZW1zZWx2ZXMuXG4gICAqIElmIG1ldGFkYXRhIHdhcyBhbHJlYWR5IHByZXNlbnQgdW5kZXIgdGhlIGdpdmVuIGtleSxcbiAgICogaXQgd2lsbCBiZSBvdmVyd3JpdHRlbiB3aXRoIHRoZSBuZXcgdmFsdWUuXG4gICAqL1xuICBwdWJsaWMgc2V0TWV0YWRhdGEoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm1ldGFkYXRhW2tleV0gPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSB0aGUgbWV0YWRhdGEgc3RvcmVkIGluIHRoaXMgYXJ0aWZhY3QgdW5kZXIgdGhlIGdpdmVuIGtleS5cbiAgICogSWYgdGhlcmUgaXMgbm8gbWV0YWRhdGEgc3RvcmVkIHVuZGVyIHRoZSBnaXZlbiBrZXksXG4gICAqIG51bGwgd2lsbCBiZSByZXR1cm5lZC5cbiAgICovXG4gIHB1YmxpYyBnZXRNZXRhZGF0YShrZXk6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMubWV0YWRhdGFba2V5XTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5hcnRpZmFjdE5hbWU7XG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIHByb3RlY3RlZCBfc2V0TmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5fYXJ0aWZhY3ROYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEFydGlmYWN0IGFscmVhZHkgaGFzIG5hbWUgJyR7dGhpcy5fYXJ0aWZhY3ROYW1lfScsIGNhbm5vdCBvdmVycmlkZSBpdGApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9hcnRpZmFjdE5hbWUgPSBuYW1lO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEEgc3BlY2lmaWMgZmlsZSB3aXRoaW4gYW4gb3V0cHV0IGFydGlmYWN0LlxuICpcbiAqIFRoZSBtb3N0IGNvbW1vbiB1c2UgY2FzZSBmb3IgdGhpcyBpcyBzcGVjaWZ5aW5nIHRoZSB0ZW1wbGF0ZSBmaWxlXG4gKiBmb3IgYSBDbG91ZEZvcm1hdGlvbiBhY3Rpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBBcnRpZmFjdFBhdGgge1xuICBwdWJsaWMgc3RhdGljIGFydGlmYWN0UGF0aChhcnRpZmFjdE5hbWU6IHN0cmluZywgZmlsZU5hbWU6IHN0cmluZyk6IEFydGlmYWN0UGF0aCB7XG4gICAgcmV0dXJuIG5ldyBBcnRpZmFjdFBhdGgoQXJ0aWZhY3QuYXJ0aWZhY3QoYXJ0aWZhY3ROYW1lKSwgZmlsZU5hbWUpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgYXJ0aWZhY3Q6IEFydGlmYWN0LCByZWFkb25seSBmaWxlTmFtZTogc3RyaW5nKSB7XG5cbiAgfVxuXG4gIHB1YmxpYyBnZXQgbG9jYXRpb24oKSB7XG4gICAgY29uc3QgYXJ0aWZhY3ROYW1lID0gdGhpcy5hcnRpZmFjdC5hcnRpZmFjdE5hbWVcbiAgICAgID8gdGhpcy5hcnRpZmFjdC5hcnRpZmFjdE5hbWVcbiAgICAgIDogTGF6eS5zdHJpbmcoeyBwcm9kdWNlOiAoKSA9PiB0aGlzLmFydGlmYWN0LmFydGlmYWN0TmFtZSB9KTtcbiAgICByZXR1cm4gYCR7YXJ0aWZhY3ROYW1lfTo6JHt0aGlzLmZpbGVOYW1lfWA7XG4gIH1cbn1cblxuZnVuY3Rpb24gYXJ0aWZhY3RBdHRyaWJ1dGUoYXJ0aWZhY3Q6IEFydGlmYWN0LCBhdHRyaWJ1dGVOYW1lOiBzdHJpbmcpIHtcbiAgY29uc3QgbGF6eUFydGlmYWN0TmFtZSA9IExhenkuc3RyaW5nKHsgcHJvZHVjZTogKCkgPT4gYXJ0aWZhY3QuYXJ0aWZhY3ROYW1lIH0pO1xuICByZXR1cm4gVG9rZW4uYXNTdHJpbmcoeyAnRm46OkdldEFydGlmYWN0QXR0JzogW2xhenlBcnRpZmFjdE5hbWUsIGF0dHJpYnV0ZU5hbWVdIH0pO1xufVxuXG5mdW5jdGlvbiBhcnRpZmFjdEdldFBhcmFtKGFydGlmYWN0OiBBcnRpZmFjdCwganNvbkZpbGU6IHN0cmluZywga2V5TmFtZTogc3RyaW5nKSB7XG4gIGNvbnN0IGxhenlBcnRpZmFjdE5hbWUgPSBMYXp5LnN0cmluZyh7IHByb2R1Y2U6ICgpID0+IGFydGlmYWN0LmFydGlmYWN0TmFtZSB9KTtcbiAgcmV0dXJuIFRva2VuLmFzU3RyaW5nKHsgJ0ZuOjpHZXRQYXJhbSc6IFtsYXp5QXJ0aWZhY3ROYW1lLCBqc29uRmlsZSwga2V5TmFtZV0gfSk7XG59XG4iXX0= |
\ | No newline at end of file |