cdk-iam-floyd
Version:
AWS IAM policy statement generator with fluent interface for AWS CDK
265 lines • 18.6 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.AgentaccessMcp = void 0;
const shared_1 = require("../../shared");
/**
* Statement provider for service [agentaccess-mcp](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonworkspacesagentaccessmcpserver.html).
*
* @param sid [SID](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_sid.html) of the statement
*/
class AgentaccessMcp extends shared_1.PolicyStatement {
/**
* Grants permission to perform double click at coordinates
*
* Access Level: Write
*
* Possible conditions:
* - .ifStackArn()
*
* https://docs.aws.amazon.com/appstream2/latest/developerguide/
*/
toDoubleClick() {
return this.to('DoubleClick');
}
/**
* Grants permission to capture screen state
*
* Access Level: Read
*
* Possible conditions:
* - .ifStackArn()
*
* https://docs.aws.amazon.com/appstream2/latest/developerguide/
*/
toGetScreenshot() {
return this.to('GetScreenshot');
}
/**
* Grants permission to hold key down
*
* Access Level: Write
*
* Possible conditions:
* - .ifStackArn()
*
* https://docs.aws.amazon.com/appstream2/latest/developerguide/
*/
toHoldKey() {
return this.to('HoldKey');
}
/**
* Grants permission to initialize sessions and discover tools
*
* Access Level: Write
*
* Possible conditions:
* - .ifStackArn()
*
* https://docs.aws.amazon.com/appstream2/latest/developerguide/
*/
toInvokeMcp() {
return this.to('InvokeMcp');
}
/**
* Grants permission to press key or key combination
*
* Access Level: Write
*
* Possible conditions:
* - .ifStackArn()
*
* https://docs.aws.amazon.com/appstream2/latest/developerguide/
*/
toKeyPress() {
return this.to('KeyPress');
}
/**
* Grants permission to perform left mouse click at coordinates
*
* Access Level: Write
*
* Possible conditions:
* - .ifStackArn()
*
* https://docs.aws.amazon.com/appstream2/latest/developerguide/
*/
toLeftClick() {
return this.to('LeftClick');
}
/**
* Grants permission to click and drag between coordinates
*
* Access Level: Write
*
* Possible conditions:
* - .ifStackArn()
*
* https://docs.aws.amazon.com/appstream2/latest/developerguide/
*/
toLeftClickDrag() {
return this.to('LeftClickDrag');
}
/**
* Grants permission to press and hold left mouse button
*
* Access Level: Write
*
* Possible conditions:
* - .ifStackArn()
*
* https://docs.aws.amazon.com/appstream2/latest/developerguide/
*/
toLeftMouseDown() {
return this.to('LeftMouseDown');
}
/**
* Grants permission to release left mouse button
*
* Access Level: Write
*
* Possible conditions:
* - .ifStackArn()
*
* https://docs.aws.amazon.com/appstream2/latest/developerguide/
*/
toLeftMouseUp() {
return this.to('LeftMouseUp');
}
/**
* Grants permission to perform middle mouse click at coordinates
*
* Access Level: Write
*
* Possible conditions:
* - .ifStackArn()
*
* https://docs.aws.amazon.com/appstream2/latest/developerguide/
*/
toMiddleClick() {
return this.to('MiddleClick');
}
/**
* Grants permission to move cursor to coordinates
*
* Access Level: Write
*
* Possible conditions:
* - .ifStackArn()
*
* https://docs.aws.amazon.com/appstream2/latest/developerguide/
*/
toMovePointer() {
return this.to('MovePointer');
}
/**
* Grants permission to perform right mouse click at coordinates
*
* Access Level: Write
*
* Possible conditions:
* - .ifStackArn()
*
* https://docs.aws.amazon.com/appstream2/latest/developerguide/
*/
toRightClick() {
return this.to('RightClick');
}
/**
* Grants permission to scroll in any direction
*
* Access Level: Write
*
* Possible conditions:
* - .ifStackArn()
*
* https://docs.aws.amazon.com/appstream2/latest/developerguide/
*/
toScroll() {
return this.to('Scroll');
}
/**
* Grants permission to perform triple click at coordinates
*
* Access Level: Write
*
* Possible conditions:
* - .ifStackArn()
*
* https://docs.aws.amazon.com/appstream2/latest/developerguide/
*/
toTripleClick() {
return this.to('TripleClick');
}
/**
* Grants permission to type text string
*
* Access Level: Write
*
* Possible conditions:
* - .ifStackArn()
*
* https://docs.aws.amazon.com/appstream2/latest/developerguide/
*/
toTypeText() {
return this.to('TypeText');
}
/**
* Filters access by the ARN of the WorkSpaces Applications stack
*
* https://docs.aws.amazon.com/appstream2/latest/developerguide/
*
* Applies to actions:
* - .toDoubleClick()
* - .toGetScreenshot()
* - .toHoldKey()
* - .toInvokeMcp()
* - .toKeyPress()
* - .toLeftClick()
* - .toLeftClickDrag()
* - .toLeftMouseDown()
* - .toLeftMouseUp()
* - .toMiddleClick()
* - .toMovePointer()
* - .toRightClick()
* - .toScroll()
* - .toTripleClick()
* - .toTypeText()
*
* @param value The value(s) to check
* @param operator Works with [arn operators](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_ARN). **Default:** `ArnLike`
*/
ifStackArn(value, operator) {
return this.if(`StackArn`, value, operator ?? 'ArnLike');
}
/**
* Statement provider for service [agentaccess-mcp](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonworkspacesagentaccessmcpserver.html).
*
*/
constructor(props) {
super(props);
this.servicePrefix = 'agentaccess-mcp';
this.accessLevelList = {
Write: [
'DoubleClick',
'HoldKey',
'InvokeMcp',
'KeyPress',
'LeftClick',
'LeftClickDrag',
'LeftMouseDown',
'LeftMouseUp',
'MiddleClick',
'MovePointer',
'RightClick',
'Scroll',
'TripleClick',
'TypeText'
],
Read: [
'GetScreenshot'
]
};
}
}
exports.AgentaccessMcp = AgentaccessMcp;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlc2FnZW50YWNjZXNzbWNwc2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsid29ya3NwYWNlc2FnZW50YWNjZXNzbWNwc2VydmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHlDQUF5RDtBQUd6RDs7OztHQUlHO0FBQ0gsTUFBYSxjQUFlLFNBQVEsd0JBQWU7SUFHakQ7Ozs7Ozs7OztPQVNHO0lBQ0ksYUFBYTtRQUNsQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNJLGVBQWU7UUFDcEIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSSxTQUFTO1FBQ2QsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSSxXQUFXO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksVUFBVTtRQUNmLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksV0FBVztRQUNoQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNJLGVBQWU7UUFDcEIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSSxlQUFlO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksYUFBYTtRQUNsQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNJLGFBQWE7UUFDbEIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSSxhQUFhO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksWUFBWTtRQUNqQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNJLFFBQVE7UUFDYixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNJLGFBQWE7UUFDbEIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSSxVQUFVO1FBQ2YsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUF3QkQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQXdCRztJQUNJLFVBQVUsQ0FBQyxLQUF3QixFQUFFLFFBQTRCO1FBQ3RFLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLFFBQVEsSUFBSSxTQUFTLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsWUFBWSxLQUFnQztRQUMxQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUE1UVIsa0JBQWEsR0FBRyxpQkFBaUIsQ0FBQztRQW9OL0Isb0JBQWUsR0FBb0I7WUFDM0MsS0FBSyxFQUFFO2dCQUNMLGFBQWE7Z0JBQ2IsU0FBUztnQkFDVCxXQUFXO2dCQUNYLFVBQVU7Z0JBQ1YsV0FBVztnQkFDWCxlQUFlO2dCQUNmLGVBQWU7Z0JBQ2YsYUFBYTtnQkFDYixhQUFhO2dCQUNiLGFBQWE7Z0JBQ2IsWUFBWTtnQkFDWixRQUFRO2dCQUNSLGFBQWE7Z0JBQ2IsVUFBVTthQUNYO1lBQ0QsSUFBSSxFQUFFO2dCQUNKLGVBQWU7YUFDaEI7U0FDRixDQUFDO0lBcUNGLENBQUM7Q0FDRjtBQS9RRCx3Q0ErUUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY2Nlc3NMZXZlbExpc3QgfSBmcm9tICcuLi8uLi9zaGFyZWQvYWNjZXNzLWxldmVsJztcbmltcG9ydCB7IFBvbGljeVN0YXRlbWVudCwgT3BlcmF0b3IgfSBmcm9tICcuLi8uLi9zaGFyZWQnO1xuaW1wb3J0IHsgYXdzX2lhbSBhcyBpYW0gfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcblxuLyoqXG4gKiBTdGF0ZW1lbnQgcHJvdmlkZXIgZm9yIHNlcnZpY2UgW2FnZW50YWNjZXNzLW1jcF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3NlcnZpY2UtYXV0aG9yaXphdGlvbi9sYXRlc3QvcmVmZXJlbmNlL2xpc3RfYW1hem9ud29ya3NwYWNlc2FnZW50YWNjZXNzbWNwc2VydmVyLmh0bWwpLlxuICpcbiAqIEBwYXJhbSBzaWQgW1NJRF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0lBTS9sYXRlc3QvVXNlckd1aWRlL3JlZmVyZW5jZV9wb2xpY2llc19lbGVtZW50c19zaWQuaHRtbCkgb2YgdGhlIHN0YXRlbWVudFxuICovXG5leHBvcnQgY2xhc3MgQWdlbnRhY2Nlc3NNY3AgZXh0ZW5kcyBQb2xpY3lTdGF0ZW1lbnQge1xuICBwdWJsaWMgc2VydmljZVByZWZpeCA9ICdhZ2VudGFjY2Vzcy1tY3AnO1xuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBwZXJmb3JtIGRvdWJsZSBjbGljayBhdCBjb29yZGluYXRlc1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmU3RhY2tBcm4oKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvXG4gICAqL1xuICBwdWJsaWMgdG9Eb3VibGVDbGljaygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnRG91YmxlQ2xpY2snKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBjYXB0dXJlIHNjcmVlbiBzdGF0ZVxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFJlYWRcbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZTdGFja0FybigpXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9cbiAgICovXG4gIHB1YmxpYyB0b0dldFNjcmVlbnNob3QoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0dldFNjcmVlbnNob3QnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBob2xkIGtleSBkb3duXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZTdGFja0FybigpXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9cbiAgICovXG4gIHB1YmxpYyB0b0hvbGRLZXkoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0hvbGRLZXknKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBpbml0aWFsaXplIHNlc3Npb25zIGFuZCBkaXNjb3ZlciB0b29sc1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmU3RhY2tBcm4oKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvXG4gICAqL1xuICBwdWJsaWMgdG9JbnZva2VNY3AoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0ludm9rZU1jcCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHByZXNzIGtleSBvciBrZXkgY29tYmluYXRpb25cbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZlN0YWNrQXJuKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL1xuICAgKi9cbiAgcHVibGljIHRvS2V5UHJlc3MoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0tleVByZXNzJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gcGVyZm9ybSBsZWZ0IG1vdXNlIGNsaWNrIGF0IGNvb3JkaW5hdGVzXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZTdGFja0FybigpXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9cbiAgICovXG4gIHB1YmxpYyB0b0xlZnRDbGljaygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnTGVmdENsaWNrJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gY2xpY2sgYW5kIGRyYWcgYmV0d2VlbiBjb29yZGluYXRlc1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmU3RhY2tBcm4oKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvXG4gICAqL1xuICBwdWJsaWMgdG9MZWZ0Q2xpY2tEcmFnKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdMZWZ0Q2xpY2tEcmFnJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gcHJlc3MgYW5kIGhvbGQgbGVmdCBtb3VzZSBidXR0b25cbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZlN0YWNrQXJuKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL1xuICAgKi9cbiAgcHVibGljIHRvTGVmdE1vdXNlRG93bigpIHtcbiAgICByZXR1cm4gdGhpcy50bygnTGVmdE1vdXNlRG93bicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHJlbGVhc2UgbGVmdCBtb3VzZSBidXR0b25cbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZlN0YWNrQXJuKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL1xuICAgKi9cbiAgcHVibGljIHRvTGVmdE1vdXNlVXAoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0xlZnRNb3VzZVVwJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gcGVyZm9ybSBtaWRkbGUgbW91c2UgY2xpY2sgYXQgY29vcmRpbmF0ZXNcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZlN0YWNrQXJuKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL1xuICAgKi9cbiAgcHVibGljIHRvTWlkZGxlQ2xpY2soKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ01pZGRsZUNsaWNrJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gbW92ZSBjdXJzb3IgdG8gY29vcmRpbmF0ZXNcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZlN0YWNrQXJuKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL1xuICAgKi9cbiAgcHVibGljIHRvTW92ZVBvaW50ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ01vdmVQb2ludGVyJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gcGVyZm9ybSByaWdodCBtb3VzZSBjbGljayBhdCBjb29yZGluYXRlc1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmU3RhY2tBcm4oKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvXG4gICAqL1xuICBwdWJsaWMgdG9SaWdodENsaWNrKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdSaWdodENsaWNrJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gc2Nyb2xsIGluIGFueSBkaXJlY3Rpb25cbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZlN0YWNrQXJuKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL1xuICAgKi9cbiAgcHVibGljIHRvU2Nyb2xsKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdTY3JvbGwnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBwZXJmb3JtIHRyaXBsZSBjbGljayBhdCBjb29yZGluYXRlc1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmU3RhY2tBcm4oKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvXG4gICAqL1xuICBwdWJsaWMgdG9UcmlwbGVDbGljaygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnVHJpcGxlQ2xpY2snKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byB0eXBlIHRleHQgc3RyaW5nXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZTdGFja0FybigpXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9cbiAgICovXG4gIHB1YmxpYyB0b1R5cGVUZXh0KCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdUeXBlVGV4dCcpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFjY2Vzc0xldmVsTGlzdDogQWNjZXNzTGV2ZWxMaXN0ID0ge1xuICAgIFdyaXRlOiBbXG4gICAgICAnRG91YmxlQ2xpY2snLFxuICAgICAgJ0hvbGRLZXknLFxuICAgICAgJ0ludm9rZU1jcCcsXG4gICAgICAnS2V5UHJlc3MnLFxuICAgICAgJ0xlZnRDbGljaycsXG4gICAgICAnTGVmdENsaWNrRHJhZycsXG4gICAgICAnTGVmdE1vdXNlRG93bicsXG4gICAgICAnTGVmdE1vdXNlVXAnLFxuICAgICAgJ01pZGRsZUNsaWNrJyxcbiAgICAgICdNb3ZlUG9pbnRlcicsXG4gICAgICAnUmlnaHRDbGljaycsXG4gICAgICAnU2Nyb2xsJyxcbiAgICAgICdUcmlwbGVDbGljaycsXG4gICAgICAnVHlwZVRleHQnXG4gICAgXSxcbiAgICBSZWFkOiBbXG4gICAgICAnR2V0U2NyZWVuc2hvdCdcbiAgICBdXG4gIH07XG5cbiAgLyoqXG4gICAqIEZpbHRlcnMgYWNjZXNzIGJ5IHRoZSBBUk4gb2YgdGhlIFdvcmtTcGFjZXMgQXBwbGljYXRpb25zIHN0YWNrXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9cbiAgICpcbiAgICogQXBwbGllcyB0byBhY3Rpb25zOlxuICAgKiAtIC50b0RvdWJsZUNsaWNrKClcbiAgICogLSAudG9HZXRTY3JlZW5zaG90KClcbiAgICogLSAudG9Ib2xkS2V5KClcbiAgICogLSAudG9JbnZva2VNY3AoKVxuICAgKiAtIC50b0tleVByZXNzKClcbiAgICogLSAudG9MZWZ0Q2xpY2soKVxuICAgKiAtIC50b0xlZnRDbGlja0RyYWcoKVxuICAgKiAtIC50b0xlZnRNb3VzZURvd24oKVxuICAgKiAtIC50b0xlZnRNb3VzZVVwKClcbiAgICogLSAudG9NaWRkbGVDbGljaygpXG4gICAqIC0gLnRvTW92ZVBvaW50ZXIoKVxuICAgKiAtIC50b1JpZ2h0Q2xpY2soKVxuICAgKiAtIC50b1Njcm9sbCgpXG4gICAqIC0gLnRvVHJpcGxlQ2xpY2soKVxuICAgKiAtIC50b1R5cGVUZXh0KClcbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZShzKSB0byBjaGVja1xuICAgKiBAcGFyYW0gb3BlcmF0b3IgV29ya3Mgd2l0aCBbYXJuIG9wZXJhdG9yc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0lBTS9sYXRlc3QvVXNlckd1aWRlL3JlZmVyZW5jZV9wb2xpY2llc19lbGVtZW50c19jb25kaXRpb25fb3BlcmF0b3JzLmh0bWwjQ29uZGl0aW9uc19BUk4pLiAqKkRlZmF1bHQ6KiogYEFybkxpa2VgXG4gICAqL1xuICBwdWJsaWMgaWZTdGFja0Fybih2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10sIG9wZXJhdG9yPzogT3BlcmF0b3IgfCBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5pZihgU3RhY2tBcm5gLCB2YWx1ZSwgb3BlcmF0b3IgPz8gJ0Fybkxpa2UnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGF0ZW1lbnQgcHJvdmlkZXIgZm9yIHNlcnZpY2UgW2FnZW50YWNjZXNzLW1jcF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3NlcnZpY2UtYXV0aG9yaXphdGlvbi9sYXRlc3QvcmVmZXJlbmNlL2xpc3RfYW1hem9ud29ya3NwYWNlc2FnZW50YWNjZXNzbWNwc2VydmVyLmh0bWwpLlxuICAgKlxuICAgKi9cbiAgY29uc3RydWN0b3IocHJvcHM/OiBpYW0uUG9saWN5U3RhdGVtZW50UHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG4gIH1cbn1cbiJdfQ==