@cdk-cloudformation/freyraim-spider-loadbalancer-module
Version:
Schema for Module Fragment of type FreyrAIM::Spider::LoadBalancer::MODULE
301 lines • 53 kB
JavaScript
"use strict";
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CfnLoadBalancerModule = exports.toJson_CfnLoadBalancerModulePropsResourcesElbBucket = exports.toJson_CfnLoadBalancerModulePropsResourcesElbBucketPolicy = exports.toJson_CfnLoadBalancerModulePropsResourcesListenerRule1 = exports.toJson_CfnLoadBalancerModulePropsResourcesListener1 = exports.toJson_CfnLoadBalancerModulePropsResourcesLoadBalancer1 = exports.toJson_CfnLoadBalancerModulePropsResourcesTargetGroup2 = exports.toJson_CfnLoadBalancerModulePropsResourcesTargetGroup1 = exports.toJson_CfnLoadBalancerModulePropsResourcesSpiderEc2Instance = exports.toJson_CfnLoadBalancerModulePropsParametersVpcId = exports.toJson_CfnLoadBalancerModulePropsParametersRunTime = exports.toJson_CfnLoadBalancerModulePropsParametersImageDigest = exports.toJson_CfnLoadBalancerModulePropsParametersEnvName = exports.toJson_CfnLoadBalancerModulePropsParametersElbBucketName = exports.toJson_CfnLoadBalancerModulePropsResources = exports.toJson_CfnLoadBalancerModulePropsParameters = exports.toJson_CfnLoadBalancerModuleProps = void 0;
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
// Generated by cdk-import
const cdk = require("aws-cdk-lib");
/**
* Converts an object of type 'CfnLoadBalancerModuleProps' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_CfnLoadBalancerModuleProps(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'Parameters': toJson_CfnLoadBalancerModulePropsParameters(obj.parameters),
'Resources': toJson_CfnLoadBalancerModulePropsResources(obj.resources),
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_CfnLoadBalancerModuleProps = toJson_CfnLoadBalancerModuleProps;
/**
* Converts an object of type 'CfnLoadBalancerModulePropsParameters' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_CfnLoadBalancerModulePropsParameters(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'ELBBucketName': toJson_CfnLoadBalancerModulePropsParametersElbBucketName(obj.elbBucketName),
'EnvName': toJson_CfnLoadBalancerModulePropsParametersEnvName(obj.envName),
'ImageDigest': toJson_CfnLoadBalancerModulePropsParametersImageDigest(obj.imageDigest),
'RunTime': toJson_CfnLoadBalancerModulePropsParametersRunTime(obj.runTime),
'VpcID': toJson_CfnLoadBalancerModulePropsParametersVpcId(obj.vpcId),
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_CfnLoadBalancerModulePropsParameters = toJson_CfnLoadBalancerModulePropsParameters;
/**
* Converts an object of type 'CfnLoadBalancerModulePropsResources' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_CfnLoadBalancerModulePropsResources(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'SpiderEC2Instance': toJson_CfnLoadBalancerModulePropsResourcesSpiderEc2Instance(obj.spiderEc2Instance),
'TargetGroup1': toJson_CfnLoadBalancerModulePropsResourcesTargetGroup1(obj.targetGroup1),
'TargetGroup2': toJson_CfnLoadBalancerModulePropsResourcesTargetGroup2(obj.targetGroup2),
'LoadBalancer1': toJson_CfnLoadBalancerModulePropsResourcesLoadBalancer1(obj.loadBalancer1),
'Listener1': toJson_CfnLoadBalancerModulePropsResourcesListener1(obj.listener1),
'ListenerRule1': toJson_CfnLoadBalancerModulePropsResourcesListenerRule1(obj.listenerRule1),
'ELBBucketPolicy': toJson_CfnLoadBalancerModulePropsResourcesElbBucketPolicy(obj.elbBucketPolicy),
'ELBBucket': toJson_CfnLoadBalancerModulePropsResourcesElbBucket(obj.elbBucket),
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_CfnLoadBalancerModulePropsResources = toJson_CfnLoadBalancerModulePropsResources;
/**
* Converts an object of type 'CfnLoadBalancerModulePropsParametersElbBucketName' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_CfnLoadBalancerModulePropsParametersElbBucketName(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'Type': obj.type,
'Description': obj.description,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_CfnLoadBalancerModulePropsParametersElbBucketName = toJson_CfnLoadBalancerModulePropsParametersElbBucketName;
/**
* Converts an object of type 'CfnLoadBalancerModulePropsParametersEnvName' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_CfnLoadBalancerModulePropsParametersEnvName(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'Type': obj.type,
'Description': obj.description,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_CfnLoadBalancerModulePropsParametersEnvName = toJson_CfnLoadBalancerModulePropsParametersEnvName;
/**
* Converts an object of type 'CfnLoadBalancerModulePropsParametersImageDigest' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_CfnLoadBalancerModulePropsParametersImageDigest(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'Type': obj.type,
'Description': obj.description,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_CfnLoadBalancerModulePropsParametersImageDigest = toJson_CfnLoadBalancerModulePropsParametersImageDigest;
/**
* Converts an object of type 'CfnLoadBalancerModulePropsParametersRunTime' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_CfnLoadBalancerModulePropsParametersRunTime(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'Type': obj.type,
'Description': obj.description,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_CfnLoadBalancerModulePropsParametersRunTime = toJson_CfnLoadBalancerModulePropsParametersRunTime;
/**
* Converts an object of type 'CfnLoadBalancerModulePropsParametersVpcId' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_CfnLoadBalancerModulePropsParametersVpcId(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'Type': obj.type,
'Description': obj.description,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_CfnLoadBalancerModulePropsParametersVpcId = toJson_CfnLoadBalancerModulePropsParametersVpcId;
/**
* Converts an object of type 'CfnLoadBalancerModulePropsResourcesSpiderEc2Instance' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_CfnLoadBalancerModulePropsResourcesSpiderEc2Instance(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'Type': obj.type,
'Properties': obj.properties,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_CfnLoadBalancerModulePropsResourcesSpiderEc2Instance = toJson_CfnLoadBalancerModulePropsResourcesSpiderEc2Instance;
/**
* Converts an object of type 'CfnLoadBalancerModulePropsResourcesTargetGroup1' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_CfnLoadBalancerModulePropsResourcesTargetGroup1(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'Type': obj.type,
'Properties': obj.properties,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_CfnLoadBalancerModulePropsResourcesTargetGroup1 = toJson_CfnLoadBalancerModulePropsResourcesTargetGroup1;
/**
* Converts an object of type 'CfnLoadBalancerModulePropsResourcesTargetGroup2' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_CfnLoadBalancerModulePropsResourcesTargetGroup2(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'Type': obj.type,
'Properties': obj.properties,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_CfnLoadBalancerModulePropsResourcesTargetGroup2 = toJson_CfnLoadBalancerModulePropsResourcesTargetGroup2;
/**
* Converts an object of type 'CfnLoadBalancerModulePropsResourcesLoadBalancer1' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_CfnLoadBalancerModulePropsResourcesLoadBalancer1(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'Type': obj.type,
'Properties': obj.properties,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_CfnLoadBalancerModulePropsResourcesLoadBalancer1 = toJson_CfnLoadBalancerModulePropsResourcesLoadBalancer1;
/**
* Converts an object of type 'CfnLoadBalancerModulePropsResourcesListener1' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_CfnLoadBalancerModulePropsResourcesListener1(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'Type': obj.type,
'Properties': obj.properties,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_CfnLoadBalancerModulePropsResourcesListener1 = toJson_CfnLoadBalancerModulePropsResourcesListener1;
/**
* Converts an object of type 'CfnLoadBalancerModulePropsResourcesListenerRule1' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_CfnLoadBalancerModulePropsResourcesListenerRule1(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'Type': obj.type,
'Properties': obj.properties,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_CfnLoadBalancerModulePropsResourcesListenerRule1 = toJson_CfnLoadBalancerModulePropsResourcesListenerRule1;
/**
* Converts an object of type 'CfnLoadBalancerModulePropsResourcesElbBucketPolicy' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_CfnLoadBalancerModulePropsResourcesElbBucketPolicy(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'Type': obj.type,
'Properties': obj.properties,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_CfnLoadBalancerModulePropsResourcesElbBucketPolicy = toJson_CfnLoadBalancerModulePropsResourcesElbBucketPolicy;
/**
* Converts an object of type 'CfnLoadBalancerModulePropsResourcesElbBucket' to JSON representation.
*/
/* eslint-disable max-len, quote-props */
function toJson_CfnLoadBalancerModulePropsResourcesElbBucket(obj) {
if (obj === undefined) {
return undefined;
}
const result = {
'Type': obj.type,
'Properties': obj.properties,
};
// filter undefined values
return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {});
}
exports.toJson_CfnLoadBalancerModulePropsResourcesElbBucket = toJson_CfnLoadBalancerModulePropsResourcesElbBucket;
/* eslint-enable max-len, quote-props */
/**
* A CloudFormation `FreyrAIM::Spider::LoadBalancer::MODULE`
*
* @cloudformationResource FreyrAIM::Spider::LoadBalancer::MODULE
* @stability external
* @link http://unknown-url
*/
class CfnLoadBalancerModule extends cdk.CfnResource {
/**
* Create a new `FreyrAIM::Spider::LoadBalancer::MODULE`.
*
* @param scope - scope in which this resource is defined
* @param id - scoped id of the resource
* @param props - resource properties
*/
constructor(scope, id, props) {
super(scope, id, { type: CfnLoadBalancerModule.CFN_RESOURCE_TYPE_NAME, properties: toJson_CfnLoadBalancerModuleProps(props) });
this.props = props;
}
}
exports.CfnLoadBalancerModule = CfnLoadBalancerModule;
_a = JSII_RTTI_SYMBOL_1;
CfnLoadBalancerModule[_a] = { fqn: "@cdk-cloudformation/freyraim-spider-loadbalancer-module.CfnLoadBalancerModule", version: "1.1.0-alpha.7" };
/**
* The CloudFormation resource type name for this resource class.
*/
CfnLoadBalancerModule.CFN_RESOURCE_TYPE_NAME = "FreyrAIM::Spider::LoadBalancer::MODULE";
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwwQkFBMEI7QUFDMUIsbUNBQW1DO0FBcUJuQzs7R0FFRztBQUNILHlDQUF5QztBQUN6QyxTQUFnQixpQ0FBaUMsQ0FBQyxHQUEyQztJQUMzRixJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUU7UUFBRSxPQUFPLFNBQVMsQ0FBQztLQUFFO0lBQzVDLE1BQU0sTUFBTSxHQUFHO1FBQ2IsWUFBWSxFQUFFLDJDQUEyQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUM7UUFDekUsV0FBVyxFQUFFLDBDQUEwQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUM7S0FDdkUsQ0FBQztJQUNGLDBCQUEwQjtJQUMxQixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUMxRyxDQUFDO0FBUkQsOEVBUUM7QUE0Q0Q7O0dBRUc7QUFDSCx5Q0FBeUM7QUFDekMsU0FBZ0IsMkNBQTJDLENBQUMsR0FBcUQ7SUFDL0csSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFO1FBQUUsT0FBTyxTQUFTLENBQUM7S0FBRTtJQUM1QyxNQUFNLE1BQU0sR0FBRztRQUNiLGVBQWUsRUFBRSx3REFBd0QsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDO1FBQzVGLFNBQVMsRUFBRSxrREFBa0QsQ0FBQyxHQUFHLENBQUMsT0FBTyxD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cEYsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUscUJBQXFCLENBQUMsc0JBQXNCLEVBQUUsVUFBVSxFQUFFLGlDQUFpQyxDQUFDLEtBQUssQ0FBRSxFQUFFLENBQUMsQ0FBQztRQUVoSSxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUVyQixDQUFDOztBQXhCSCxzREF5QkM7OztBQXhCQzs7RUFFRTtBQUNxQiw0Q0FBc0IsR0FBRyx3Q0FBd0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdlbmVyYXRlZCBieSBjZGstaW1wb3J0XG5pbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgY29uc3RydWN0cyBmcm9tICdjb25zdHJ1Y3RzJztcblxuLyoqXG4gKiBTY2hlbWEgZm9yIE1vZHVsZSBGcmFnbWVudCBvZiB0eXBlIEZyZXlyQUlNOjpTcGlkZXI6OkxvYWRCYWxhbmNlcjo6TU9EVUxFXG4gKlxuICogQHNjaGVtYSBDZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENmbkxvYWRCYWxhbmNlck1vZHVsZVByb3BzIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgQ2ZuTG9hZEJhbGFuY2VyTW9kdWxlUHJvcHMjUGFyYW1ldGVyc1xuICAgKi9cbiAgcmVhZG9ubHkgcGFyYW1ldGVycz86IENmbkxvYWRCYWxhbmNlck1vZHVsZVByb3BzUGFyYW1ldGVycztcblxuICAvKipcbiAgICogQHNjaGVtYSBDZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wcyNSZXNvdXJjZXNcbiAgICovXG4gIHJlYWRvbmx5IHJlc291cmNlcz86IENmbkxvYWRCYWxhbmNlck1vZHVsZVByb3BzUmVzb3VyY2VzO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0NmbkxvYWRCYWxhbmNlck1vZHVsZVByb3BzJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9DZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wcyhvYmo6IENmbkxvYWRCYWxhbmNlck1vZHVsZVByb3BzIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnUGFyYW1ldGVycyc6IHRvSnNvbl9DZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1BhcmFtZXRlcnMob2JqLnBhcmFtZXRlcnMpLFxuICAgICdSZXNvdXJjZXMnOiB0b0pzb25fQ2ZuTG9hZEJhbGFuY2VyTW9kdWxlUHJvcHNSZXNvdXJjZXMob2JqLnJlc291cmNlcyksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBDZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1BhcmFtZXRlcnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1BhcmFtZXRlcnMge1xuICAvKipcbiAgICogVGhlIEVMQiBsb2dzIGJ1Y2tldCBuYW1lXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuTG9hZEJhbGFuY2VyTW9kdWxlUHJvcHNQYXJhbWV0ZXJzI0VMQkJ1Y2tldE5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGVsYkJ1Y2tldE5hbWU/OiBDZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1BhcmFtZXRlcnNFbGJCdWNrZXROYW1lO1xuXG4gIC8qKlxuICAgKiBUaGUgZW52aXJvbm1lbnQgbmFtZVxuICAgKlxuICAgKiBAc2NoZW1hIENmbkxvYWRCYWxhbmNlck1vZHVsZVByb3BzUGFyYW1ldGVycyNFbnZOYW1lXG4gICAqL1xuICByZWFkb25seSBlbnZOYW1lPzogQ2ZuTG9hZEJhbGFuY2VyTW9kdWxlUHJvcHNQYXJhbWV0ZXJzRW52TmFtZTtcblxuICAvKipcbiAgICogVGhlIEltYWdlRGlnZXN0XG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuTG9hZEJhbGFuY2VyTW9kdWxlUHJvcHNQYXJhbWV0ZXJzI0ltYWdlRGlnZXN0XG4gICAqL1xuICByZWFkb25seSBpbWFnZURpZ2VzdD86IENmbkxvYWRCYWxhbmNlck1vZHVsZVByb3BzUGFyYW1ldGVyc0ltYWdlRGlnZXN0O1xuXG4gIC8qKlxuICAgKiBUaGUgUnVuVGltZVxuICAgKlxuICAgKiBAc2NoZW1hIENmbkxvYWRCYWxhbmNlck1vZHVsZVByb3BzUGFyYW1ldGVycyNSdW5UaW1lXG4gICAqL1xuICByZWFkb25seSBydW5UaW1lPzogQ2ZuTG9hZEJhbGFuY2VyTW9kdWxlUHJvcHNQYXJhbWV0ZXJzUnVuVGltZTtcblxuICAvKipcbiAgICogVnBjLUlEXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuTG9hZEJhbGFuY2VyTW9kdWxlUHJvcHNQYXJhbWV0ZXJzI1ZwY0lEXG4gICAqL1xuICByZWFkb25seSB2cGNJZD86IENmbkxvYWRCYWxhbmNlck1vZHVsZVByb3BzUGFyYW1ldGVyc1ZwY0lkO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0NmbkxvYWRCYWxhbmNlck1vZHVsZVByb3BzUGFyYW1ldGVycycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fQ2ZuTG9hZEJhbGFuY2VyTW9kdWxlUHJvcHNQYXJhbWV0ZXJzKG9iajogQ2ZuTG9hZEJhbGFuY2VyTW9kdWxlUHJvcHNQYXJhbWV0ZXJzIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnRUxCQnVja2V0TmFtZSc6IHRvSnNvbl9DZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1BhcmFtZXRlcnNFbGJCdWNrZXROYW1lKG9iai5lbGJCdWNrZXROYW1lKSxcbiAgICAnRW52TmFtZSc6IHRvSnNvbl9DZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1BhcmFtZXRlcnNFbnZOYW1lKG9iai5lbnZOYW1lKSxcbiAgICAnSW1hZ2VEaWdlc3QnOiB0b0pzb25fQ2ZuTG9hZEJhbGFuY2VyTW9kdWxlUHJvcHNQYXJhbWV0ZXJzSW1hZ2VEaWdlc3Qob2JqLmltYWdlRGlnZXN0KSxcbiAgICAnUnVuVGltZSc6IHRvSnNvbl9DZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1BhcmFtZXRlcnNSdW5UaW1lKG9iai5ydW5UaW1lKSxcbiAgICAnVnBjSUQnOiB0b0pzb25fQ2ZuTG9hZEJhbGFuY2VyTW9kdWxlUHJvcHNQYXJhbWV0ZXJzVnBjSWQob2JqLnZwY0lkKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIENmbkxvYWRCYWxhbmNlck1vZHVsZVByb3BzUmVzb3VyY2VzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2ZuTG9hZEJhbGFuY2VyTW9kdWxlUHJvcHNSZXNvdXJjZXMge1xuICAvKipcbiAgICogQHNjaGVtYSBDZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1Jlc291cmNlcyNTcGlkZXJFQzJJbnN0YW5jZVxuICAgKi9cbiAgcmVhZG9ubHkgc3BpZGVyRWMySW5zdGFuY2U/OiBDZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1Jlc291cmNlc1NwaWRlckVjMkluc3RhbmNlO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIENmbkxvYWRCYWxhbmNlck1vZHVsZVByb3BzUmVzb3VyY2VzI1RhcmdldEdyb3VwMVxuICAgKi9cbiAgcmVhZG9ubHkgdGFyZ2V0R3JvdXAxPzogQ2ZuTG9hZEJhbGFuY2VyTW9kdWxlUHJvcHNSZXNvdXJjZXNUYXJnZXRHcm91cDE7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgQ2ZuTG9hZEJhbGFuY2VyTW9kdWxlUHJvcHNSZXNvdXJjZXMjVGFyZ2V0R3JvdXAyXG4gICAqL1xuICByZWFkb25seSB0YXJnZXRHcm91cDI/OiBDZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1Jlc291cmNlc1RhcmdldEdyb3VwMjtcblxuICAvKipcbiAgICogQHNjaGVtYSBDZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1Jlc291cmNlcyNMb2FkQmFsYW5jZXIxXG4gICAqL1xuICByZWFkb25seSBsb2FkQmFsYW5jZXIxPzogQ2ZuTG9hZEJhbGFuY2VyTW9kdWxlUHJvcHNSZXNvdXJjZXNMb2FkQmFsYW5jZXIxO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIENmbkxvYWRCYWxhbmNlck1vZHVsZVByb3BzUmVzb3VyY2VzI0xpc3RlbmVyMVxuICAgKi9cbiAgcmVhZG9ubHkgbGlzdGVuZXIxPzogQ2ZuTG9hZEJhbGFuY2VyTW9kdWxlUHJvcHNSZXNvdXJjZXNMaXN0ZW5lcjE7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgQ2ZuTG9hZEJhbGFuY2VyTW9kdWxlUHJvcHNSZXNvdXJjZXMjTGlzdGVuZXJSdWxlMVxuICAgKi9cbiAgcmVhZG9ubHkgbGlzdGVuZXJSdWxlMT86IENmbkxvYWRCYWxhbmNlck1vZHVsZVByb3BzUmVzb3VyY2VzTGlzdGVuZXJSdWxlMTtcblxuICAvKipcbiAgICogQHNjaGVtYSBDZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1Jlc291cmNlcyNFTEJCdWNrZXRQb2xpY3lcbiAgICovXG4gIHJlYWRvbmx5IGVsYkJ1Y2tldFBvbGljeT86IENmbkxvYWRCYWxhbmNlck1vZHVsZVByb3BzUmVzb3VyY2VzRWxiQnVja2V0UG9saWN5O1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIENmbkxvYWRCYWxhbmNlck1vZHVsZVByb3BzUmVzb3VyY2VzI0VMQkJ1Y2tldFxuICAgKi9cbiAgcmVhZG9ubHkgZWxiQnVja2V0PzogQ2ZuTG9hZEJhbGFuY2VyTW9kdWxlUHJvcHNSZXNvdXJjZXNFbGJCdWNrZXQ7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnQ2ZuTG9hZEJhbGFuY2VyTW9kdWxlUHJvcHNSZXNvdXJjZXMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0NmbkxvYWRCYWxhbmNlck1vZHVsZVByb3BzUmVzb3VyY2VzKG9iajogQ2ZuTG9hZEJhbGFuY2VyTW9kdWxlUHJvcHNSZXNvdXJjZXMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdTcGlkZXJFQzJJbnN0YW5jZSc6IHRvSnNvbl9DZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1Jlc291cmNlc1NwaWRlckVjMkluc3RhbmNlKG9iai5zcGlkZXJFYzJJbnN0YW5jZSksXG4gICAgJ1RhcmdldEdyb3VwMSc6IHRvSnNvbl9DZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1Jlc291cmNlc1RhcmdldEdyb3VwMShvYmoudGFyZ2V0R3JvdXAxKSxcbiAgICAnVGFyZ2V0R3JvdXAyJzogdG9Kc29uX0NmbkxvYWRCYWxhbmNlck1vZHVsZVByb3BzUmVzb3VyY2VzVGFyZ2V0R3JvdXAyKG9iai50YXJnZXRHcm91cDIpLFxuICAgICdMb2FkQmFsYW5jZXIxJzogdG9Kc29uX0NmbkxvYWRCYWxhbmNlck1vZHVsZVByb3BzUmVzb3VyY2VzTG9hZEJhbGFuY2VyMShvYmoubG9hZEJhbGFuY2VyMSksXG4gICAgJ0xpc3RlbmVyMSc6IHRvSnNvbl9DZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1Jlc291cmNlc0xpc3RlbmVyMShvYmoubGlzdGVuZXIxKSxcbiAgICAnTGlzdGVuZXJSdWxlMSc6IHRvSnNvbl9DZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1Jlc291cmNlc0xpc3RlbmVyUnVsZTEob2JqLmxpc3RlbmVyUnVsZTEpLFxuICAgICdFTEJCdWNrZXRQb2xpY3knOiB0b0pzb25fQ2ZuTG9hZEJhbGFuY2VyTW9kdWxlUHJvcHNSZXNvdXJjZXNFbGJCdWNrZXRQb2xpY3kob2JqLmVsYkJ1Y2tldFBvbGljeSksXG4gICAgJ0VMQkJ1Y2tldCc6IHRvSnNvbl9DZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1Jlc291cmNlc0VsYkJ1Y2tldChvYmouZWxiQnVja2V0KSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBUaGUgRUxCIGxvZ3MgYnVja2V0IG5hbWVcbiAqXG4gKiBAc2NoZW1hIENmbkxvYWRCYWxhbmNlck1vZHVsZVByb3BzUGFyYW1ldGVyc0VsYkJ1Y2tldE5hbWVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1BhcmFtZXRlcnNFbGJCdWNrZXROYW1lIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgQ2ZuTG9hZEJhbGFuY2VyTW9kdWxlUHJvcHNQYXJhbWV0ZXJzRWxiQnVja2V0TmFtZSNUeXBlXG4gICAqL1xuICByZWFkb25seSB0eXBlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgQ2ZuTG9hZEJhbGFuY2VyTW9kdWxlUHJvcHNQYXJhbWV0ZXJzRWxiQnVja2V0TmFtZSNEZXNjcmlwdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb246IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdDZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1BhcmFtZXRlcnNFbGJCdWNrZXROYW1lJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9DZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1BhcmFtZXRlcnNFbGJCdWNrZXROYW1lKG9iajogQ2ZuTG9hZEJhbGFuY2VyTW9kdWxlUHJvcHNQYXJhbWV0ZXJzRWxiQnVja2V0TmFtZSB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ1R5cGUnOiBvYmoudHlwZSxcbiAgICAnRGVzY3JpcHRpb24nOiBvYmouZGVzY3JpcHRpb24sXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogVGhlIGVudmlyb25tZW50IG5hbWVcbiAqXG4gKiBAc2NoZW1hIENmbkxvYWRCYWxhbmNlck1vZHVsZVByb3BzUGFyYW1ldGVyc0Vudk5hbWVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1BhcmFtZXRlcnNFbnZOYW1lIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgQ2ZuTG9hZEJhbGFuY2VyTW9kdWxlUHJvcHNQYXJhbWV0ZXJzRW52TmFtZSNUeXBlXG4gICAqL1xuICByZWFkb25seSB0eXBlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgQ2ZuTG9hZEJhbGFuY2VyTW9kdWxlUHJvcHNQYXJhbWV0ZXJzRW52TmFtZSNEZXNjcmlwdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb246IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdDZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1BhcmFtZXRlcnNFbnZOYW1lJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9DZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1BhcmFtZXRlcnNFbnZOYW1lKG9iajogQ2ZuTG9hZEJhbGFuY2VyTW9kdWxlUHJvcHNQYXJhbWV0ZXJzRW52TmFtZSB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ1R5cGUnOiBvYmoudHlwZSxcbiAgICAnRGVzY3JpcHRpb24nOiBvYmouZGVzY3JpcHRpb24sXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogVGhlIEltYWdlRGlnZXN0XG4gKlxuICogQHNjaGVtYSBDZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1BhcmFtZXRlcnNJbWFnZURpZ2VzdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIENmbkxvYWRCYWxhbmNlck1vZHVsZVByb3BzUGFyYW1ldGVyc0ltYWdlRGlnZXN0IHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgQ2ZuTG9hZEJhbGFuY2VyTW9kdWxlUHJvcHNQYXJhbWV0ZXJzSW1hZ2VEaWdlc3QjVHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIENmbkxvYWRCYWxhbmNlck1vZHVsZVByb3BzUGFyYW1ldGVyc0ltYWdlRGlnZXN0I0Rlc2NyaXB0aW9uXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbjogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0NmbkxvYWRCYWxhbmNlck1vZHVsZVByb3BzUGFyYW1ldGVyc0ltYWdlRGlnZXN0JyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9DZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1BhcmFtZXRlcnNJbWFnZURpZ2VzdChvYmo6IENmbkxvYWRCYWxhbmNlck1vZHVsZVByb3BzUGFyYW1ldGVyc0ltYWdlRGlnZXN0IHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnVHlwZSc6IG9iai50eXBlLFxuICAgICdEZXNjcmlwdGlvbic6IG9iai5kZXNjcmlwdGlvbixcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBUaGUgUnVuVGltZVxuICpcbiAqIEBzY2hlbWEgQ2ZuTG9hZEJhbGFuY2VyTW9kdWxlUHJvcHNQYXJhbWV0ZXJzUnVuVGltZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENmbkxvYWRCYWxhbmNlck1vZHVsZVByb3BzUGFyYW1ldGVyc1J1blRpbWUge1xuICAvKipcbiAgICogQHNjaGVtYSBDZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1BhcmFtZXRlcnNSdW5UaW1lI1R5cGVcbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBDZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1BhcmFtZXRlcnNSdW5UaW1lI0Rlc2NyaXB0aW9uXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbjogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0NmbkxvYWRCYWxhbmNlck1vZHVsZVByb3BzUGFyYW1ldGVyc1J1blRpbWUnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0NmbkxvYWRCYWxhbmNlck1vZHVsZVByb3BzUGFyYW1ldGVyc1J1blRpbWUob2JqOiBDZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1BhcmFtZXRlcnNSdW5UaW1lIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnVHlwZSc6IG9iai50eXBlLFxuICAgICdEZXNjcmlwdGlvbic6IG9iai5kZXNjcmlwdGlvbixcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBWcGMtSURcbiAqXG4gKiBAc2NoZW1hIENmbkxvYWRCYWxhbmNlck1vZHVsZVByb3BzUGFyYW1ldGVyc1ZwY0lkXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2ZuTG9hZEJhbGFuY2VyTW9kdWxlUHJvcHNQYXJhbWV0ZXJzVnBjSWQge1xuICAvKipcbiAgICogQHNjaGVtYSBDZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1BhcmFtZXRlcnNWcGNJZCNUeXBlXG4gICAqL1xuICByZWFkb25seSB0eXBlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgQ2ZuTG9hZEJhbGFuY2VyTW9kdWxlUHJvcHNQYXJhbWV0ZXJzVnBjSWQjRGVzY3JpcHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uOiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnQ2ZuTG9hZEJhbGFuY2VyTW9kdWxlUHJvcHNQYXJhbWV0ZXJzVnBjSWQnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0NmbkxvYWRCYWxhbmNlck1vZHVsZVByb3BzUGFyYW1ldGVyc1ZwY0lkKG9iajogQ2ZuTG9hZEJhbGFuY2VyTW9kdWxlUHJvcHNQYXJhbWV0ZXJzVnBjSWQgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdUeXBlJzogb2JqLnR5cGUsXG4gICAgJ0Rlc2NyaXB0aW9uJzogb2JqLmRlc2NyaXB0aW9uLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgQ2ZuTG9hZEJhbGFuY2VyTW9kdWxlUHJvcHNSZXNvdXJjZXNTcGlkZXJFYzJJbnN0YW5jZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENmbkxvYWRCYWxhbmNlck1vZHVsZVByb3BzUmVzb3VyY2VzU3BpZGVyRWMySW5zdGFuY2Uge1xuICAvKipcbiAgICogQHNjaGVtYSBDZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1Jlc291cmNlc1NwaWRlckVjMkluc3RhbmNlI1R5cGVcbiAgICovXG4gIHJlYWRvbmx5IHR5cGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgQ2ZuTG9hZEJhbGFuY2VyTW9kdWxlUHJvcHNSZXNvdXJjZXNTcGlkZXJFYzJJbnN0YW5jZSNQcm9wZXJ0aWVzXG4gICAqL1xuICByZWFkb25seSBwcm9wZXJ0aWVzPzogYW55O1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0NmbkxvYWRCYWxhbmNlck1vZHVsZVByb3BzUmVzb3VyY2VzU3BpZGVyRWMySW5zdGFuY2UnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0NmbkxvYWRCYWxhbmNlck1vZHVsZVByb3BzUmVzb3VyY2VzU3BpZGVyRWMySW5zdGFuY2Uob2JqOiBDZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1Jlc291cmNlc1NwaWRlckVjMkluc3RhbmNlIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnVHlwZSc6IG9iai50eXBlLFxuICAgICdQcm9wZXJ0aWVzJzogb2JqLnByb3BlcnRpZXMsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBDZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1Jlc291cmNlc1RhcmdldEdyb3VwMVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENmbkxvYWRCYWxhbmNlck1vZHVsZVByb3BzUmVzb3VyY2VzVGFyZ2V0R3JvdXAxIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgQ2ZuTG9hZEJhbGFuY2VyTW9kdWxlUHJvcHNSZXNvdXJjZXNUYXJnZXRHcm91cDEjVHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZT86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBDZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1Jlc291cmNlc1RhcmdldEdyb3VwMSNQcm9wZXJ0aWVzXG4gICAqL1xuICByZWFkb25seSBwcm9wZXJ0aWVzPzogYW55O1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0NmbkxvYWRCYWxhbmNlck1vZHVsZVByb3BzUmVzb3VyY2VzVGFyZ2V0R3JvdXAxJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9DZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1Jlc291cmNlc1RhcmdldEdyb3VwMShvYmo6IENmbkxvYWRCYWxhbmNlck1vZHVsZVByb3BzUmVzb3VyY2VzVGFyZ2V0R3JvdXAxIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnVHlwZSc6IG9iai50eXBlLFxuICAgICdQcm9wZXJ0aWVzJzogb2JqLnByb3BlcnRpZXMsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBDZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1Jlc291cmNlc1RhcmdldEdyb3VwMlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENmbkxvYWRCYWxhbmNlck1vZHVsZVByb3BzUmVzb3VyY2VzVGFyZ2V0R3JvdXAyIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgQ2ZuTG9hZEJhbGFuY2VyTW9kdWxlUHJvcHNSZXNvdXJjZXNUYXJnZXRHcm91cDIjVHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZT86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBDZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1Jlc291cmNlc1RhcmdldEdyb3VwMiNQcm9wZXJ0aWVzXG4gICAqL1xuICByZWFkb25seSBwcm9wZXJ0aWVzPzogYW55O1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0NmbkxvYWRCYWxhbmNlck1vZHVsZVByb3BzUmVzb3VyY2VzVGFyZ2V0R3JvdXAyJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9DZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1Jlc291cmNlc1RhcmdldEdyb3VwMihvYmo6IENmbkxvYWRCYWxhbmNlck1vZHVsZVByb3BzUmVzb3VyY2VzVGFyZ2V0R3JvdXAyIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnVHlwZSc6IG9iai50eXBlLFxuICAgICdQcm9wZXJ0aWVzJzogb2JqLnByb3BlcnRpZXMsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBDZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1Jlc291cmNlc0xvYWRCYWxhbmNlcjFcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1Jlc291cmNlc0xvYWRCYWxhbmNlcjEge1xuICAvKipcbiAgICogQHNjaGVtYSBDZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1Jlc291cmNlc0xvYWRCYWxhbmNlcjEjVHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZT86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBDZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1Jlc291cmNlc0xvYWRCYWxhbmNlcjEjUHJvcGVydGllc1xuICAgKi9cbiAgcmVhZG9ubHkgcHJvcGVydGllcz86IGFueTtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdDZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1Jlc291cmNlc0xvYWRCYWxhbmNlcjEnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0NmbkxvYWRCYWxhbmNlck1vZHVsZVByb3BzUmVzb3VyY2VzTG9hZEJhbGFuY2VyMShvYmo6IENmbkxvYWRCYWxhbmNlck1vZHVsZVByb3BzUmVzb3VyY2VzTG9hZEJhbGFuY2VyMSB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ1R5cGUnOiBvYmoudHlwZSxcbiAgICAnUHJvcGVydGllcyc6IG9iai5wcm9wZXJ0aWVzLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgQ2ZuTG9hZEJhbGFuY2VyTW9kdWxlUHJvcHNSZXNvdXJjZXNMaXN0ZW5lcjFcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1Jlc291cmNlc0xpc3RlbmVyMSB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIENmbkxvYWRCYWxhbmNlck1vZHVsZVByb3BzUmVzb3VyY2VzTGlzdGVuZXIxI1R5cGVcbiAgICovXG4gIHJlYWRvbmx5IHR5cGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgQ2ZuTG9hZEJhbGFuY2VyTW9kdWxlUHJvcHNSZXNvdXJjZXNMaXN0ZW5lcjEjUHJvcGVydGllc1xuICAgKi9cbiAgcmVhZG9ubHkgcHJvcGVydGllcz86IGFueTtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdDZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1Jlc291cmNlc0xpc3RlbmVyMScgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fQ2ZuTG9hZEJhbGFuY2VyTW9kdWxlUHJvcHNSZXNvdXJjZXNMaXN0ZW5lcjEob2JqOiBDZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1Jlc291cmNlc0xpc3RlbmVyMSB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ1R5cGUnOiBvYmoudHlwZSxcbiAgICAnUHJvcGVydGllcyc6IG9iai5wcm9wZXJ0aWVzLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgQ2ZuTG9hZEJhbGFuY2VyTW9kdWxlUHJvcHNSZXNvdXJjZXNMaXN0ZW5lclJ1bGUxXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2ZuTG9hZEJhbGFuY2VyTW9kdWxlUHJvcHNSZXNvdXJjZXNMaXN0ZW5lclJ1bGUxIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgQ2ZuTG9hZEJhbGFuY2VyTW9kdWxlUHJvcHNSZXNvdXJjZXNMaXN0ZW5lclJ1bGUxI1R5cGVcbiAgICovXG4gIHJlYWRvbmx5IHR5cGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgQ2ZuTG9hZEJhbGFuY2VyTW9kdWxlUHJvcHNSZXNvdXJjZXNMaXN0ZW5lclJ1bGUxI1Byb3BlcnRpZXNcbiAgICovXG4gIHJlYWRvbmx5IHByb3BlcnRpZXM/OiBhbnk7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnQ2ZuTG9hZEJhbGFuY2VyTW9kdWxlUHJvcHNSZXNvdXJjZXNMaXN0ZW5lclJ1bGUxJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9DZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1Jlc291cmNlc0xpc3RlbmVyUnVsZTEob2JqOiBDZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1Jlc291cmNlc0xpc3RlbmVyUnVsZTEgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdUeXBlJzogb2JqLnR5cGUsXG4gICAgJ1Byb3BlcnRpZXMnOiBvYmoucHJvcGVydGllcyxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIENmbkxvYWRCYWxhbmNlck1vZHVsZVByb3BzUmVzb3VyY2VzRWxiQnVja2V0UG9saWN5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2ZuTG9hZEJhbGFuY2VyTW9kdWxlUHJvcHNSZXNvdXJjZXNFbGJCdWNrZXRQb2xpY3kge1xuICAvKipcbiAgICogQHNjaGVtYSBDZm5Mb2FkQmFsYW5jZXJNb2R1bGVQcm9wc1Jlc291cmNlc0VsYkJ1Y2tldFBvbGljeSNUeXBlXG4gICAqL1xuICByZWFkb25seSB0eXBlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIENmbkxvYWRCYWxhbmNlck1vZHVsZVByb3BzUmVzb3VyY2VzRWxiQnVja2V0UG9saWN5I1Byb3BlcnRpZXNcbiAgICovXG4gIHJlYWRvbmx5IHByb3BlcnRpZXM/OiBhbnk7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnQ2ZuTG9hZEJhbGFuY2VyTW9kdWxlUHJvcHNSZXNvdXJjZXNFbGJCdWNrZXRQb2xpY3knIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0NmbkxvYWRCYWxhbmNlck1vZHVsZVByb3BzUmVzb3VyY2VzRWxiQnVja2V0UG9saWN5KG9iajogQ2ZuTG9hZEJhbGFuY2VyTW9kdWxlUHJvcHNSZXNvdXJjZXNFbGJCdWNrZXRQb2xpY3kgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx