@aws-cdk/aws-ecs
Version:
The CDK Construct Library for AWS::ECS
214 lines • 22.6 kB
JavaScript
;
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.TmpfsMountOption = exports.DevicePermission = exports.Capability = exports.LinuxParameters = void 0;
const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
const cdk = require("@aws-cdk/core");
// keep this import separate from other imports to reduce chance for merge conflicts with v2-main
// eslint-disable-next-line no-duplicate-imports, import/order
const core_1 = require("@aws-cdk/core");
/**
* Linux-specific options that are applied to the container.
*/
class LinuxParameters extends core_1.Construct {
/**
* Constructs a new instance of the LinuxParameters class.
*/
constructor(scope, id, props = {}) {
super(scope, id);
/**
* Capabilities to be added
*/
this.capAdd = new Array();
/**
* Capabilities to be dropped
*/
this.capDrop = new Array();
/**
* Device mounts
*/
this.devices = new Array();
/**
* TmpFs mounts
*/
this.tmpfs = new Array();
jsiiDeprecationWarnings._aws_cdk_aws_ecs_LinuxParametersProps(props);
this.sharedMemorySize = props.sharedMemorySize;
this.initProcessEnabled = props.initProcessEnabled;
}
/**
* Adds one or more Linux capabilities to the Docker configuration of a container.
*
* Only works with EC2 launch type.
*/
addCapabilities(...cap) {
jsiiDeprecationWarnings._aws_cdk_aws_ecs_Capability(cap);
this.capAdd.push(...cap);
}
/**
* Removes one or more Linux capabilities to the Docker configuration of a container.
*
* Only works with EC2 launch type.
*/
dropCapabilities(...cap) {
jsiiDeprecationWarnings._aws_cdk_aws_ecs_Capability(cap);
this.capDrop.push(...cap);
}
/**
* Adds one or more host devices to a container.
*/
addDevices(...device) {
jsiiDeprecationWarnings._aws_cdk_aws_ecs_Device(device);
this.devices.push(...device);
}
/**
* Specifies the container path, mount options, and size (in MiB) of the tmpfs mount for a container.
*
* Only works with EC2 launch type.
*/
addTmpfs(...tmpfs) {
jsiiDeprecationWarnings._aws_cdk_aws_ecs_Tmpfs(tmpfs);
this.tmpfs.push(...tmpfs);
}
/**
* Renders the Linux parameters to a CloudFormation object.
*/
renderLinuxParameters() {
return {
initProcessEnabled: this.initProcessEnabled,
sharedMemorySize: this.sharedMemorySize,
capabilities: {
add: cdk.Lazy.list({ produce: () => this.capAdd }, { omitEmpty: true }),
drop: cdk.Lazy.list({ produce: () => this.capDrop }, { omitEmpty: true }),
},
devices: cdk.Lazy.any({ produce: () => this.devices.map(renderDevice) }, { omitEmptyArray: true }),
tmpfs: cdk.Lazy.any({ produce: () => this.tmpfs.map(renderTmpfs) }, { omitEmptyArray: true }),
};
}
}
exports.LinuxParameters = LinuxParameters;
_a = JSII_RTTI_SYMBOL_1;
LinuxParameters[_a] = { fqn: "@aws-cdk/aws-ecs.LinuxParameters", version: "1.149.0" };
function renderDevice(device) {
return {
containerPath: device.containerPath,
hostPath: device.hostPath,
permissions: device.permissions,
};
}
function renderTmpfs(tmpfs) {
return {
containerPath: tmpfs.containerPath,
size: tmpfs.size,
mountOptions: tmpfs.mountOptions,
};
}
/**
* A Linux capability
*/
var Capability;
(function (Capability) {
Capability["ALL"] = "ALL";
Capability["AUDIT_CONTROL"] = "AUDIT_CONTROL";
Capability["AUDIT_WRITE"] = "AUDIT_WRITE";
Capability["BLOCK_SUSPEND"] = "BLOCK_SUSPEND";
Capability["CHOWN"] = "CHOWN";
Capability["DAC_OVERRIDE"] = "DAC_OVERRIDE";
Capability["DAC_READ_SEARCH"] = "DAC_READ_SEARCH";
Capability["FOWNER"] = "FOWNER";
Capability["FSETID"] = "FSETID";
Capability["IPC_LOCK"] = "IPC_LOCK";
Capability["IPC_OWNER"] = "IPC_OWNER";
Capability["KILL"] = "KILL";
Capability["LEASE"] = "LEASE";
Capability["LINUX_IMMUTABLE"] = "LINUX_IMMUTABLE";
Capability["MAC_ADMIN"] = "MAC_ADMIN";
Capability["MAC_OVERRIDE"] = "MAC_OVERRIDE";
Capability["MKNOD"] = "MKNOD";
Capability["NET_ADMIN"] = "NET_ADMIN";
Capability["NET_BIND_SERVICE"] = "NET_BIND_SERVICE";
Capability["NET_BROADCAST"] = "NET_BROADCAST";
Capability["NET_RAW"] = "NET_RAW";
Capability["SETFCAP"] = "SETFCAP";
Capability["SETGID"] = "SETGID";
Capability["SETPCAP"] = "SETPCAP";
Capability["SETUID"] = "SETUID";
Capability["SYS_ADMIN"] = "SYS_ADMIN";
Capability["SYS_BOOT"] = "SYS_BOOT";
Capability["SYS_CHROOT"] = "SYS_CHROOT";
Capability["SYS_MODULE"] = "SYS_MODULE";
Capability["SYS_NICE"] = "SYS_NICE";
Capability["SYS_PACCT"] = "SYS_PACCT";
Capability["SYS_PTRACE"] = "SYS_PTRACE";
Capability["SYS_RAWIO"] = "SYS_RAWIO";
Capability["SYS_RESOURCE"] = "SYS_RESOURCE";
Capability["SYS_TIME"] = "SYS_TIME";
Capability["SYS_TTY_CONFIG"] = "SYS_TTY_CONFIG";
Capability["SYSLOG"] = "SYSLOG";
Capability["WAKE_ALARM"] = "WAKE_ALARM";
})(Capability = exports.Capability || (exports.Capability = {}));
/**
* Permissions for device access
*/
var DevicePermission;
(function (DevicePermission) {
/**
* Read
*/
DevicePermission["READ"] = "read";
/**
* Write
*/
DevicePermission["WRITE"] = "write";
/**
* Make a node
*/
DevicePermission["MKNOD"] = "mknod";
})(DevicePermission = exports.DevicePermission || (exports.DevicePermission = {}));
/**
* The supported options for a tmpfs mount for a container.
*/
var TmpfsMountOption;
(function (TmpfsMountOption) {
TmpfsMountOption["DEFAULTS"] = "defaults";
TmpfsMountOption["RO"] = "ro";
TmpfsMountOption["RW"] = "rw";
TmpfsMountOption["SUID"] = "suid";
TmpfsMountOption["NOSUID"] = "nosuid";
TmpfsMountOption["DEV"] = "dev";
TmpfsMountOption["NODEV"] = "nodev";
TmpfsMountOption["EXEC"] = "exec";
TmpfsMountOption["NOEXEC"] = "noexec";
TmpfsMountOption["SYNC"] = "sync";
TmpfsMountOption["ASYNC"] = "async";
TmpfsMountOption["DIRSYNC"] = "dirsync";
TmpfsMountOption["REMOUNT"] = "remount";
TmpfsMountOption["MAND"] = "mand";
TmpfsMountOption["NOMAND"] = "nomand";
TmpfsMountOption["ATIME"] = "atime";
TmpfsMountOption["NOATIME"] = "noatime";
TmpfsMountOption["DIRATIME"] = "diratime";
TmpfsMountOption["NODIRATIME"] = "nodiratime";
TmpfsMountOption["BIND"] = "bind";
TmpfsMountOption["RBIND"] = "rbind";
TmpfsMountOption["UNBINDABLE"] = "unbindable";
TmpfsMountOption["RUNBINDABLE"] = "runbindable";
TmpfsMountOption["PRIVATE"] = "private";
TmpfsMountOption["RPRIVATE"] = "rprivate";
TmpfsMountOption["SHARED"] = "shared";
TmpfsMountOption["RSHARED"] = "rshared";
TmpfsMountOption["SLAVE"] = "slave";
TmpfsMountOption["RSLAVE"] = "rslave";
TmpfsMountOption["RELATIME"] = "relatime";
TmpfsMountOption["NORELATIME"] = "norelatime";
TmpfsMountOption["STRICTATIME"] = "strictatime";
TmpfsMountOption["NOSTRICTATIME"] = "nostrictatime";
TmpfsMountOption["MODE"] = "mode";
TmpfsMountOption["UID"] = "uid";
TmpfsMountOption["GID"] = "gid";
TmpfsMountOption["NR_INODES"] = "nr_inodes";
TmpfsMountOption["NR_BLOCKS"] = "nr_blocks";
TmpfsMountOption["MPOL"] = "mpol";
})(TmpfsMountOption = exports.TmpfsMountOption || (exports.TmpfsMountOption = {}));
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGludXgtcGFyYW1ldGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImxpbnV4LXBhcmFtZXRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEscUNBQXFDO0FBSXJDLGlHQUFpRztBQUNqRyw4REFBOEQ7QUFDOUQsd0NBQTJEO0FBcUIzRDs7R0FFRztBQUNILE1BQWEsZUFBZ0IsU0FBUSxnQkFBYTtJQStCaEQ7O09BRUc7SUFDSCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLFFBQThCLEVBQUU7UUFDeEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQXhCbkI7O1dBRUc7UUFDYyxXQUFNLEdBQUcsSUFBSSxLQUFLLEVBQWMsQ0FBQztRQUVsRDs7V0FFRztRQUNjLFlBQU8sR0FBRyxJQUFJLEtBQUssRUFBYyxDQUFDO1FBRW5EOztXQUVHO1FBQ2MsWUFBTyxHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7UUFFL0M7O1dBRUc7UUFDYyxVQUFLLEdBQUcsSUFBSSxLQUFLLEVBQVMsQ0FBQzs7UUFRMUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQztRQUMvQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixDQUFDO0tBQ3BEO0lBRUQ7Ozs7T0FJRztJQUNJLGVBQWUsQ0FBQyxHQUFHLEdBQWlCOztRQUN6QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0tBQzFCO0lBRUQ7Ozs7T0FJRztJQUNJLGdCQUFnQixDQUFDLEdBQUcsR0FBaUI7O1FBQzFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7S0FDM0I7SUFFRDs7T0FFRztJQUNJLFVBQVUsQ0FBQyxHQUFHLE1BQWdCOztRQUNuQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxD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Q0FBQTtJQUMvQixpQ0FBYSxDQUFBO0lBQ2IsK0JBQVcsQ0FBQTtJQUNYLCtCQUFXLENBQUE7SUFDWCwyQ0FBdUIsQ0FBQTtJQUN2QiwyQ0FBdUIsQ0FBQTtJQUN2QixpQ0FBYSxDQUFBO0FBQ2YsQ0FBQyxFQXhDVyxnQkFBZ0IsR0FBaEIsd0JBQWdCLEtBQWhCLHdCQUFnQixRQXdDM0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSAnQGF3cy1jZGsvY29yZSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IENmblRhc2tEZWZpbml0aW9uIH0gZnJvbSAnLi9lY3MuZ2VuZXJhdGVkJztcblxuLy8ga2VlcCB0aGlzIGltcG9ydCBzZXBhcmF0ZSBmcm9tIG90aGVyIGltcG9ydHMgdG8gcmVkdWNlIGNoYW5jZSBmb3IgbWVyZ2UgY29uZmxpY3RzIHdpdGggdjItbWFpblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWR1cGxpY2F0ZS1pbXBvcnRzLCBpbXBvcnQvb3JkZXJcbmltcG9ydCB7IENvbnN0cnVjdCBhcyBDb3JlQ29uc3RydWN0IH0gZnJvbSAnQGF3cy1jZGsvY29yZSc7XG5cbi8qKlxuICogVGhlIHByb3BlcnRpZXMgZm9yIGRlZmluaW5nIExpbnV4LXNwZWNpZmljIG9wdGlvbnMgdGhhdCBhcmUgYXBwbGllZCB0byB0aGUgY29udGFpbmVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpbnV4UGFyYW1ldGVyc1Byb3BzIHtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyB3aGV0aGVyIHRvIHJ1biBhbiBpbml0IHByb2Nlc3MgaW5zaWRlIHRoZSBjb250YWluZXIgdGhhdCBmb3J3YXJkcyBzaWduYWxzIGFuZCByZWFwcyBwcm9jZXNzZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBpbml0UHJvY2Vzc0VuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgZm9yIHRoZSBzaXplIChpbiBNaUIpIG9mIHRoZSAvZGV2L3NobSB2b2x1bWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vIHNoYXJlZCBtZW1vcnkuXG4gICAqL1xuICByZWFkb25seSBzaGFyZWRNZW1vcnlTaXplPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIExpbnV4LXNwZWNpZmljIG9wdGlvbnMgdGhhdCBhcmUgYXBwbGllZCB0byB0aGUgY29udGFpbmVyLlxuICovXG5leHBvcnQgY2xhc3MgTGludXhQYXJhbWV0ZXJzIGV4dGVuZHMgQ29yZUNvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBpbml0IHByb2Nlc3MgaXMgZW5hYmxlZFxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBpbml0UHJvY2Vzc0VuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgc2hhcmVkIG1lbW9yeSBzaXplLiBOb3QgdmFsaWQgZm9yIEZhcmdhdGUgbGF1bmNoIHR5cGVcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgc2hhcmVkTWVtb3J5U2l6ZT86IG51bWJlcjtcblxuICAvKipcbiAgICogQ2FwYWJpbGl0aWVzIHRvIGJlIGFkZGVkXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGNhcEFkZCA9IG5ldyBBcnJheTxDYXBhYmlsaXR5PigpO1xuXG4gIC8qKlxuICAgKiBDYXBhYmlsaXRpZXMgdG8gYmUgZHJvcHBlZFxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBjYXBEcm9wID0gbmV3IEFycmF5PENhcGFiaWxpdHk+KCk7XG5cbiAgLyoqXG4gICAqIERldmljZSBtb3VudHNcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgZGV2aWNlcyA9IG5ldyBBcnJheTxEZXZpY2U+KCk7XG5cbiAgLyoqXG4gICAqIFRtcEZzIG1vdW50c1xuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSB0bXBmcyA9IG5ldyBBcnJheTxUbXBmcz4oKTtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgTGludXhQYXJhbWV0ZXJzIGNsYXNzLlxuICAgKi9cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IExpbnV4UGFyYW1ldGVyc1Byb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5zaGFyZWRNZW1vcnlTaXplID0gcHJvcHMuc2hhcmVkTWVtb3J5U2l6ZTtcbiAgICB0aGlzLmluaXRQcm9jZXNzRW5hYmxlZCA9IHByb3BzLmluaXRQcm9jZXNzRW5hYmxlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIG9uZSBvciBtb3JlIExpbnV4IGNhcGFiaWxpdGllcyB0byB0aGUgRG9ja2VyIGNvbmZpZ3VyYXRpb24gb2YgYSBjb250YWluZXIuXG4gICAqXG4gICAqIE9ubHkgd29ya3Mgd2l0aCBFQzIgbGF1bmNoIHR5cGUuXG4gICAqL1xuICBwdWJsaWMgYWRkQ2FwYWJpbGl0aWVzKC4uLmNhcDogQ2FwYWJpbGl0eVtdKSB7XG4gICAgdGhpcy5jYXBBZGQucHVzaCguLi5jYXApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgb25lIG9yIG1vcmUgTGludXggY2FwYWJpbGl0aWVzIHRvIHRoZSBEb2NrZXIgY29uZmlndXJhdGlvbiBvZiBhIGNvbnRhaW5lci5cbiAgICpcbiAgICogT25seSB3b3JrcyB3aXRoIEVDMiBsYXVuY2ggdHlwZS5cbiAgICovXG4gIHB1YmxpYyBkcm9wQ2FwYWJpbGl0aWVzKC4uLmNhcDogQ2FwYWJpbGl0eVtdKSB7XG4gICAgdGhpcy5jYXBEcm9wLnB1c2goLi4uY2FwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIG9uZSBvciBtb3JlIGhvc3QgZGV2aWNlcyB0byBhIGNvbnRhaW5lci5cbiAgICovXG4gIHB1YmxpYyBhZGREZXZpY2VzKC4uLmRldmljZTogRGV2aWNlW10pIHtcbiAgICB0aGlzLmRldmljZXMucHVzaCguLi5kZXZpY2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgY29udGFpbmVyIHBhdGgsIG1vdW50IG9wdGlvbnMsIGFuZCBzaXplIChpbiBNaUIpIG9mIHRoZSB0bXBmcyBtb3VudCBmb3IgYSBjb250YWluZXIuXG4gICAqXG4gICAqIE9ubHkgd29ya3Mgd2l0aCBFQzIgbGF1bmNoIHR5cGUuXG4gICAqL1xuICBwdWJsaWMgYWRkVG1wZnMoLi4udG1wZnM6IFRtcGZzW10pIHtcbiAgICB0aGlzLnRtcGZzLnB1c2goLi4udG1wZnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIExpbnV4IHBhcmFtZXRlcnMgdG8gYSBDbG91ZEZvcm1hdGlvbiBvYmplY3QuXG4gICAqL1xuICBwdWJsaWMgcmVuZGVyTGludXhQYXJhbWV0ZXJzKCk6IENmblRhc2tEZWZpbml0aW9uLkxpbnV4UGFyYW1ldGVyc1Byb3BlcnR5IHtcbiAgICByZXR1cm4ge1xuICAgICAgaW5pdFByb2Nlc3NFbmFibGVkOiB0aGlzLmluaXRQcm9jZXNzRW5hYmxlZCxcbiAgICAgIHNoYXJlZE1lbW9yeVNpemU6IHRoaXMuc2hhcmVkTWVtb3J5U2l6ZSxcbiAgICAgIGNhcGFiaWxpdGllczoge1xuICAgICAgICBhZGQ6IGNkay5MYXp5Lmxpc3QoeyBwcm9kdWNlOiAoKSA9PiB0aGlzLmNhcEFkZCB9LCB7IG9taXRFbXB0eTogdHJ1ZSB9KSxcbiAgICAgICAgZHJvcDogY2RrLkxhenkubGlzdCh7IHByb2R1Y2U6ICgpID0+IHRoaXMuY2FwRHJvcCB9LCB7IG9taXRFbXB0eTogdHJ1ZSB9KSxcbiAgICAgIH0sXG4gICAgICBkZXZpY2VzOiBjZGsuTGF6eS5hbnkoeyBwcm9kdWNlOiAoKSA9PiB0aGlzLmRldmljZXMubWFwKHJlbmRlckRldmljZSkgfSwgeyBvbWl0RW1wdHlBcnJheTogdHJ1ZSB9KSxcbiAgICAgIHRtcGZzOiBjZGsuTGF6eS5hbnkoeyBwcm9kdWNlOiAoKSA9PiB0aGlzLnRtcGZzLm1hcChyZW5kZXJUbXBmcykgfSwgeyBvbWl0RW1wdHlBcnJheTogdHJ1ZSB9KSxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogQSBjb250YWluZXIgaW5zdGFuY2UgaG9zdCBkZXZpY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGV2aWNlIHtcbiAgLyoqXG4gICAqIFRoZSBwYXRoIGluc2lkZSB0aGUgY29udGFpbmVyIGF0IHdoaWNoIHRvIGV4cG9zZSB0aGUgaG9zdCBkZXZpY2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IFNhbWUgcGF0aCBhcyB0aGUgaG9zdFxuICAgKi9cbiAgcmVhZG9ubHkgY29udGFpbmVyUGF0aD86IHN0cmluZyxcblxuICAvKipcbiAgICogVGhlIHBhdGggZm9yIHRoZSBkZXZpY2Ugb24gdGhlIGhvc3QgY29udGFpbmVyIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgaG9zdFBhdGg6IHN0cmluZyxcblxuICAvKipcbiAgICogVGhlIGV4cGxpY2l0IHBlcm1pc3Npb25zIHRvIHByb3ZpZGUgdG8gdGhlIGNvbnRhaW5lciBmb3IgdGhlIGRldmljZS5cbiAgICogQnkgZGVmYXVsdCwgdGhlIGNvbnRhaW5lciBoYXMgcGVybWlzc2lvbnMgZm9yIHJlYWQsIHdyaXRlLCBhbmQgbWtub2QgZm9yIHRoZSBkZXZpY2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IFJlYWRvbmx5XG4gICAqL1xuICByZWFkb25seSBwZXJtaXNzaW9ucz86IERldmljZVBlcm1pc3Npb25bXVxufVxuXG5mdW5jdGlvbiByZW5kZXJEZXZpY2UoZGV2aWNlOiBEZXZpY2UpOiBDZm5UYXNrRGVmaW5pdGlvbi5EZXZpY2VQcm9wZXJ0eSB7XG4gIHJldHVybiB7XG4gICAgY29udGFpbmVyUGF0aDogZGV2aWNlLmNvbnRhaW5lclBhdGgsXG4gICAgaG9zdFBhdGg6IGRldmljZS5ob3N0UGF0aCxcbiAgICBwZXJtaXNzaW9uczogZGV2aWNlLnBlcm1pc3Npb25zLFxuICB9O1xufVxuXG4vKipcbiAqIFRoZSBkZXRhaWxzIG9mIGEgdG1wZnMgbW91bnQgZm9yIGEgY29udGFpbmVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRtcGZzIHtcbiAgLyoqXG4gICAqIFRoZSBhYnNvbHV0ZSBmaWxlIHBhdGggd2hlcmUgdGhlIHRtcGZzIHZvbHVtZSBpcyB0byBiZSBtb3VudGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGFpbmVyUGF0aDogc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBUaGUgc2l6ZSAoaW4gTWlCKSBvZiB0aGUgdG1wZnMgdm9sdW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgc2l6ZTogbnVtYmVyLFxuXG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiB0bXBmcyB2b2x1bWUgbW91bnQgb3B0aW9ucy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZVxuICAgKiBbVG1wZnNNb3VudE9wdGlvbnNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25FQ1MvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfVG1wZnMuaHRtbCkuXG4gICAqL1xuICByZWFkb25seSBtb3VudE9wdGlvbnM/OiBUbXBmc01vdW50T3B0aW9uW10sXG59XG5cbmZ1bmN0aW9uIHJlbmRlclRtcGZzKHRtcGZzOiBUbXBmcyk6IENmblRhc2tEZWZpbml0aW9uLlRtcGZzUHJvcGVydHkge1xuICByZXR1cm4ge1xuICAgIGNvbnRhaW5lclBhdGg6IHRtcGZzLmNvbnRhaW5lclBhdGgsXG4gICAgc2l6ZTogdG1wZnMuc2l6ZSxcbiAgICBtb3VudE9wdGlvbnM6IHRtcGZzLm1vdW50T3B0aW9ucyxcbiAgfTtcbn1cblxuLyoqXG4gKiBBIExpbnV4IGNhcGFiaWxpdHlcbiAqL1xuZXhwb3J0IGVudW0gQ2FwYWJpbGl0eSB7XG4gIEFMTCA9ICdBTEwnLFxuICBBVURJVF9DT05UUk9MID0gJ0FVRElUX0NPTlRST0wnLFxuICBBVURJVF9XUklURSA9ICdBVURJVF9XUklURScsXG4gIEJMT0NLX1NVU1BFTkQgPSAnQkxPQ0tfU1VTUEVORCcsXG4gIENIT1dOID0gJ0NIT1dOJyxcbiAgREFDX09WRVJSSURFID0gJ0RBQ19PVkVSUklERScsXG4gIERBQ19SRUFEX1NFQVJDSCA9ICdEQUNfUkVBRF9TRUFSQ0gnLFxuICBGT1dORVIgPSAnRk9XTkVSJyxcbiAgRlNFVElEID0gJ0ZTRVRJRCcsXG4gIElQQ19MT0NLID0gJ0lQQ19MT0NLJyxcbiAgSVBDX09XTkVSID0gJ0lQQ19PV05FUicsXG4gIEtJTEwgPSAnS0lMTCcsXG4gIExFQVNFID0gJ0xFQVNFJyxcbiAgTElOVVhfSU1NVVRBQkxFID0gJ0xJTlVYX0lNTVVUQUJMRScsXG4gIE1BQ19BRE1JTiA9ICdNQUNfQURNSU4nLFxuICBNQUNfT1ZFUlJJREUgPSAnTUFDX09WRVJSSURFJyxcbiAgTUtOT0QgPSAnTUtOT0QnLFxuICBORVRfQURNSU4gPSAnTkVUX0FETUlOJyxcbiAgTkVUX0JJTkRfU0VSVklDRSA9ICdORVRfQklORF9TRVJWSUNFJyxcbiAgTkVUX0JST0FEQ0FTVCA9ICdORVRfQlJPQURDQVNUJyxcbiAgTkVUX1JBVyA9ICdORVRfUkFXJyxcbiAgU0VURkNBUCA9ICdTRVRGQ0FQJyxcbiAgU0VUR0lEID0gJ1NFVEdJRCcsXG4gIFNFVFBDQVAgPSAnU0VUUENBUCcsXG4gIFNFVFVJRCA9ICdTRVRVSUQnLFxuICBTWVNfQURNSU4gPSAnU1lTX0FETUlOJyxcbiAgU1lTX0JPT1QgPSAnU1lTX0JPT1QnLFxuICBTWVNfQ0hST09UID0gJ1NZU19DSFJPT1QnLFxuICBTWVNfTU9EVUxFID0gJ1NZU19NT0RVTEUnLFxuICBTWVNfTklDRSA9ICdTWVNfTklDRScsXG4gIFNZU19QQUNDVCA9ICdTWVNfUEFDQ1QnLFxuICBTWVNfUFRSQUNFID0gJ1NZU19QVFJBQ0UnLFxuICBTWVNfUkFXSU8gPSAnU1lTX1JBV0lPJyxcbiAgU1lTX1JFU09VUkNFID0gJ1NZU19SRVNPVVJDRScsXG4gIFNZU19USU1FID0gJ1NZU19USU1FJyxcbiAgU1lTX1RUWV9DT05GSUcgPSAnU1lTX1RUWV9DT05GSUcnLFxuICBTWVNMT0cgPSAnU1lTTE9HJyxcbiAgV0FLRV9BTEFSTSA9ICdXQUtFX0FMQVJNJ1xufVxuXG4vKipcbiAqIFBlcm1pc3Npb25zIGZvciBkZXZpY2UgYWNjZXNzXG4gKi9cbmV4cG9ydCBlbnVtIERldmljZVBlcm1pc3Npb24ge1xuICAvKipcbiAgICogUmVhZFxuICAgKi9cbiAgUkVBRCA9ICdyZWFkJyxcblxuICAvKipcbiAgICogV3JpdGVcbiAgICovXG4gIFdSSVRFID0gJ3dyaXRlJyxcblxuICAvKipcbiAgICogTWFrZSBhIG5vZGVcbiAgICovXG4gIE1LTk9EID0gJ21rbm9kJyxcbn1cblxuLyoqXG4gKiBUaGUgc3VwcG9ydGVkIG9wdGlvbnMgZm9yIGEgdG1wZnMgbW91bnQgZm9yIGEgY29udGFpbmVyLlxuICovXG5leHBvcnQgZW51bSBUbXBmc01vdW50T3B0aW9uIHtcbiAgREVGQVVMVFMgPSAnZGVmYXVsdHMnLFxuICBSTyA9ICdybycsXG4gIFJXID0gJ3J3JyxcbiAgU1VJRCA9ICdzdWlkJyxcbiAgTk9TVUlEID0gJ25vc3VpZCcsXG4gIERFViA9ICdkZXYnLFxuICBOT0RFViA9ICdub2RldicsXG4gIEVYRUMgPSAnZXhlYycsXG4gIE5PRVhFQyA9ICdub2V4ZWMnLFxuICBTWU5DID0gJ3N5bmMnLFxuICBBU1lOQyA9ICdhc3luYycsXG4gIERJUlNZTkMgPSAnZGlyc3luYycsXG4gIFJFTU9VTlQgPSAncmVtb3VudCcsXG4gIE1BTkQgPSAnbWFuZCcsXG4gIE5PTUFORCA9ICdub21hbmQnLFxuICBBVElNRSA9ICdhdGltZScsXG4gIE5PQVRJTUUgPSAnbm9hdGltZScsXG4gIERJUkFUSU1FID0gJ2RpcmF0aW1lJyxcbiAgTk9ESVJBVElNRSA9ICdub2RpcmF0aW1lJyxcbiAgQklORCA9ICdiaW5kJyxcbiAgUkJJTkQgPSAncmJpbmQnLFxuICBVTkJJTkRBQkxFID0gJ3VuYmluZGFibGUnLFxuICBSVU5CSU5EQUJMRSA9ICdydW5iaW5kYWJsZScsXG4gIFBSSVZBVEUgPSAncHJpdmF0ZScsXG4gIFJQUklWQVRFID0gJ3Jwcml2YXRlJyxcbiAgU0hBUkVEID0gJ3NoYXJlZCcsXG4gIFJTSEFSRUQgPSAncnNoYXJlZCcsXG4gIFNMQVZFID0gJ3NsYXZlJyxcbiAgUlNMQVZFID0gJ3JzbGF2ZScsXG4gIFJFTEFUSU1FID0gJ3JlbGF0aW1lJyxcbiAgTk9SRUxBVElNRSA9ICdub3JlbGF0aW1lJyxcbiAgU1RSSUNUQVRJTUUgPSAnc3RyaWN0YXRpbWUnLFxuICBOT1NUUklDVEFUSU1FID0gJ25vc3RyaWN0YXRpbWUnLFxuICBNT0RFID0gJ21vZGUnLFxuICBVSUQgPSAndWlkJyxcbiAgR0lEID0gJ2dpZCcsXG4gIE5SX0lOT0RFUyA9ICducl9pbm9kZXMnLFxuICBOUl9CTE9DS1MgPSAnbnJfYmxvY2tzJyxcbiAgTVBPTCA9ICdtcG9sJ1xufVxuIl19