UNPKG

cdk-iam-floyd

Version:

AWS IAM policy statement generator with fluent interface for AWS CDK

295 lines 20.7 kB
"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_agentaccess-mcp.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 invoke a forwarded tool on a remote instance * * Access Level: Write * * Possible conditions: * - .ifStackArn() * * https://docs.aws.amazon.com/appstream2/latest/developerguide/ */ toCallForwardedTool() { return this.to('CallForwardedTool'); } /** * Grants permission to check the connection status of a streaming session * * Access Level: Read * * Possible conditions: * - .ifStackArn() * * https://docs.aws.amazon.com/appstream2/latest/developerguide/ */ toCheckConnectionStatus() { return this.to('CheckConnectionStatus'); } /** * 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: * - .toCallForwardedTool() * - .toCheckConnectionStatus() * - .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_agentaccess-mcp.html). * */ constructor(props) { super(props); this.servicePrefix = 'agentaccess-mcp'; this.accessLevelList = { Write: [ 'CallForwardedTool', 'DoubleClick', 'HoldKey', 'InvokeMcp', 'KeyPress', 'LeftClick', 'LeftClickDrag', 'LeftMouseDown', 'LeftMouseUp', 'MiddleClick', 'MovePointer', 'RightClick', 'Scroll', 'TripleClick', 'TypeText' ], Read: [ 'CheckConnectionStatus', 'GetScreenshot' ] }; } } exports.AgentaccessMcp = AgentaccessMcp; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnRhY2Nlc3MtbWNwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYWdlbnRhY2Nlc3MtbWNwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHlDQUF5RDtBQUd6RDs7OztHQUlHO0FBQ0gsTUFBYSxjQUFlLFNBQVEsd0JBQWU7SUFHakQ7Ozs7Ozs7OztPQVNHO0lBQ0ksbUJBQW1CO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSSx1QkFBdUI7UUFDNUIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNJLGFBQWE7UUFDbEIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSSxlQUFlO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksU0FBUztRQUNkLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksV0FBVztRQUNoQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNJLFVBQVU7UUFDZixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNJLFdBQVc7UUFDaEIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSSxlQUFlO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksZUFBZTtRQUNwQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNJLGFBQWE7UUFDbEIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSSxhQUFhO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksYUFBYTtRQUNsQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNJLFlBQVk7UUFDakIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSSxRQUFRO1FBQ2IsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSSxhQUFhO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksVUFBVTtRQUNmLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBMEJEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQTBCRztJQUNJLFVBQVUsQ0FBQyxLQUF3QixFQUFFLFFBQTRCO1FBQ3RFLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLFFBQVEsSUFBSSxTQUFTLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsWUFBWSxLQUFnQztRQUMxQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUE1U1Isa0JBQWEsR0FBRyxpQkFBaUIsQ0FBQztRQWdQL0Isb0JBQWUsR0FBb0I7WUFDM0MsS0FBSyxFQUFFO2dCQUNMLG1CQUFtQjtnQkFDbkIsYUFBYTtnQkFDYixTQUFTO2dCQUNULFdBQVc7Z0JBQ1gsVUFBVTtnQkFDVixXQUFXO2dCQUNYLGVBQWU7Z0JBQ2YsZUFBZTtnQkFDZixhQUFhO2dCQUNiLGFBQWE7Z0JBQ2IsYUFBYTtnQkFDYixZQUFZO2dCQUNaLFFBQVE7Z0JBQ1IsYUFBYTtnQkFDYixVQUFVO2FBQ1g7WUFDRCxJQUFJLEVBQUU7Z0JBQ0osdUJBQXVCO2dCQUN2QixlQUFlO2FBQ2hCO1NBQ0YsQ0FBQztJQXVDRixDQUFDO0NBQ0Y7QUEvU0Qsd0NBK1NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWNjZXNzTGV2ZWxMaXN0IH0gZnJvbSAnLi4vLi4vc2hhcmVkL2FjY2Vzcy1sZXZlbCc7XG5pbXBvcnQgeyBQb2xpY3lTdGF0ZW1lbnQsIE9wZXJhdG9yIH0gZnJvbSAnLi4vLi4vc2hhcmVkJztcbmltcG9ydCB7IGF3c19pYW0gYXMgaWFtIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5cbi8qKlxuICogU3RhdGVtZW50IHByb3ZpZGVyIGZvciBzZXJ2aWNlIFthZ2VudGFjY2Vzcy1tY3BdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9zZXJ2aWNlLWF1dGhvcml6YXRpb24vbGF0ZXN0L3JlZmVyZW5jZS9saXN0X2FnZW50YWNjZXNzLW1jcC5odG1sKS5cbiAqXG4gKiBAcGFyYW0gc2lkIFtTSURdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9JQU0vbGF0ZXN0L1VzZXJHdWlkZS9yZWZlcmVuY2VfcG9saWNpZXNfZWxlbWVudHNfc2lkLmh0bWwpIG9mIHRoZSBzdGF0ZW1lbnRcbiAqL1xuZXhwb3J0IGNsYXNzIEFnZW50YWNjZXNzTWNwIGV4dGVuZHMgUG9saWN5U3RhdGVtZW50IHtcbiAgcHVibGljIHNlcnZpY2VQcmVmaXggPSAnYWdlbnRhY2Nlc3MtbWNwJztcblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gaW52b2tlIGEgZm9yd2FyZGVkIHRvb2wgb24gYSByZW1vdGUgaW5zdGFuY2VcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZlN0YWNrQXJuKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL1xuICAgKi9cbiAgcHVibGljIHRvQ2FsbEZvcndhcmRlZFRvb2woKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0NhbGxGb3J3YXJkZWRUb29sJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gY2hlY2sgdGhlIGNvbm5lY3Rpb24gc3RhdHVzIG9mIGEgc3RyZWFtaW5nIHNlc3Npb25cbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBSZWFkXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmU3RhY2tBcm4oKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvXG4gICAqL1xuICBwdWJsaWMgdG9DaGVja0Nvbm5lY3Rpb25TdGF0dXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0NoZWNrQ29ubmVjdGlvblN0YXR1cycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHBlcmZvcm0gZG91YmxlIGNsaWNrIGF0IGNvb3JkaW5hdGVzXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZTdGFja0FybigpXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9cbiAgICovXG4gIHB1YmxpYyB0b0RvdWJsZUNsaWNrKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdEb3VibGVDbGljaycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGNhcHR1cmUgc2NyZWVuIHN0YXRlXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogUmVhZFxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZlN0YWNrQXJuKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL1xuICAgKi9cbiAgcHVibGljIHRvR2V0U2NyZWVuc2hvdCgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnR2V0U2NyZWVuc2hvdCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGhvbGQga2V5IGRvd25cbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZlN0YWNrQXJuKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL1xuICAgKi9cbiAgcHVibGljIHRvSG9sZEtleSgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnSG9sZEtleScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIGluaXRpYWxpemUgc2Vzc2lvbnMgYW5kIGRpc2NvdmVyIHRvb2xzXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZTdGFja0FybigpXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9cbiAgICovXG4gIHB1YmxpYyB0b0ludm9rZU1jcCgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnSW52b2tlTWNwJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gcHJlc3Mga2V5IG9yIGtleSBjb21iaW5hdGlvblxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmU3RhY2tBcm4oKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvXG4gICAqL1xuICBwdWJsaWMgdG9LZXlQcmVzcygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnS2V5UHJlc3MnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBwZXJmb3JtIGxlZnQgbW91c2UgY2xpY2sgYXQgY29vcmRpbmF0ZXNcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZlN0YWNrQXJuKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL1xuICAgKi9cbiAgcHVibGljIHRvTGVmdENsaWNrKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdMZWZ0Q2xpY2snKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBjbGljayBhbmQgZHJhZyBiZXR3ZWVuIGNvb3JkaW5hdGVzXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZTdGFja0FybigpXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9cbiAgICovXG4gIHB1YmxpYyB0b0xlZnRDbGlja0RyYWcoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ0xlZnRDbGlja0RyYWcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBwcmVzcyBhbmQgaG9sZCBsZWZ0IG1vdXNlIGJ1dHRvblxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmU3RhY2tBcm4oKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvXG4gICAqL1xuICBwdWJsaWMgdG9MZWZ0TW91c2VEb3duKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdMZWZ0TW91c2VEb3duJyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHBlcm1pc3Npb24gdG8gcmVsZWFzZSBsZWZ0IG1vdXNlIGJ1dHRvblxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmU3RhY2tBcm4oKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvXG4gICAqL1xuICBwdWJsaWMgdG9MZWZ0TW91c2VVcCgpIHtcbiAgICByZXR1cm4gdGhpcy50bygnTGVmdE1vdXNlVXAnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBwZXJmb3JtIG1pZGRsZSBtb3VzZSBjbGljayBhdCBjb29yZGluYXRlc1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmU3RhY2tBcm4oKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvXG4gICAqL1xuICBwdWJsaWMgdG9NaWRkbGVDbGljaygpIHtcbiAgICByZXR1cm4gdGhpcy50bygnTWlkZGxlQ2xpY2snKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBtb3ZlIGN1cnNvciB0byBjb29yZGluYXRlc1xuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmU3RhY2tBcm4oKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvXG4gICAqL1xuICBwdWJsaWMgdG9Nb3ZlUG9pbnRlcigpIHtcbiAgICByZXR1cm4gdGhpcy50bygnTW92ZVBvaW50ZXInKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBwZXJmb3JtIHJpZ2h0IG1vdXNlIGNsaWNrIGF0IGNvb3JkaW5hdGVzXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZTdGFja0FybigpXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9cbiAgICovXG4gIHB1YmxpYyB0b1JpZ2h0Q2xpY2soKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ1JpZ2h0Q2xpY2snKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudHMgcGVybWlzc2lvbiB0byBzY3JvbGwgaW4gYW55IGRpcmVjdGlvblxuICAgKlxuICAgKiBBY2Nlc3MgTGV2ZWw6IFdyaXRlXG4gICAqXG4gICAqIFBvc3NpYmxlIGNvbmRpdGlvbnM6XG4gICAqIC0gLmlmU3RhY2tBcm4oKVxuICAgKlxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXBwc3RyZWFtMi9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvXG4gICAqL1xuICBwdWJsaWMgdG9TY3JvbGwoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ1Njcm9sbCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHBlcmZvcm0gdHJpcGxlIGNsaWNrIGF0IGNvb3JkaW5hdGVzXG4gICAqXG4gICAqIEFjY2VzcyBMZXZlbDogV3JpdGVcbiAgICpcbiAgICogUG9zc2libGUgY29uZGl0aW9uczpcbiAgICogLSAuaWZTdGFja0FybigpXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hcHBzdHJlYW0yL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9cbiAgICovXG4gIHB1YmxpYyB0b1RyaXBsZUNsaWNrKCkge1xuICAgIHJldHVybiB0aGlzLnRvKCdUcmlwbGVDbGljaycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBwZXJtaXNzaW9uIHRvIHR5cGUgdGV4dCBzdHJpbmdcbiAgICpcbiAgICogQWNjZXNzIExldmVsOiBXcml0ZVxuICAgKlxuICAgKiBQb3NzaWJsZSBjb25kaXRpb25zOlxuICAgKiAtIC5pZlN0YWNrQXJuKClcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL1xuICAgKi9cbiAgcHVibGljIHRvVHlwZVRleHQoKSB7XG4gICAgcmV0dXJuIHRoaXMudG8oJ1R5cGVUZXh0Jyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWNjZXNzTGV2ZWxMaXN0OiBBY2Nlc3NMZXZlbExpc3QgPSB7XG4gICAgV3JpdGU6IFtcbiAgICAgICdDYWxsRm9yd2FyZGVkVG9vbCcsXG4gICAgICAnRG91YmxlQ2xpY2snLFxuICAgICAgJ0hvbGRLZXknLFxuICAgICAgJ0ludm9rZU1jcCcsXG4gICAgICAnS2V5UHJlc3MnLFxuICAgICAgJ0xlZnRDbGljaycsXG4gICAgICAnTGVmdENsaWNrRHJhZycsXG4gICAgICAnTGVmdE1vdXNlRG93bicsXG4gICAgICAnTGVmdE1vdXNlVXAnLFxuICAgICAgJ01pZGRsZUNsaWNrJyxcbiAgICAgICdNb3ZlUG9pbnRlcicsXG4gICAgICAnUmlnaHRDbGljaycsXG4gICAgICAnU2Nyb2xsJyxcbiAgICAgICdUcmlwbGVDbGljaycsXG4gICAgICAnVHlwZVRleHQnXG4gICAgXSxcbiAgICBSZWFkOiBbXG4gICAgICAnQ2hlY2tDb25uZWN0aW9uU3RhdHVzJyxcbiAgICAgICdHZXRTY3JlZW5zaG90J1xuICAgIF1cbiAgfTtcblxuICAvKipcbiAgICogRmlsdGVycyBhY2Nlc3MgYnkgdGhlIEFSTiBvZiB0aGUgV29ya1NwYWNlcyBBcHBsaWNhdGlvbnMgc3RhY2tcbiAgICpcbiAgICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2FwcHN0cmVhbTIvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL1xuICAgKlxuICAgKiBBcHBsaWVzIHRvIGFjdGlvbnM6XG4gICAqIC0gLnRvQ2FsbEZvcndhcmRlZFRvb2woKVxuICAgKiAtIC50b0NoZWNrQ29ubmVjdGlvblN0YXR1cygpXG4gICAqIC0gLnRvRG91YmxlQ2xpY2soKVxuICAgKiAtIC50b0dldFNjcmVlbnNob3QoKVxuICAgKiAtIC50b0hvbGRLZXkoKVxuICAgKiAtIC50b0ludm9rZU1jcCgpXG4gICAqIC0gLnRvS2V5UHJlc3MoKVxuICAgKiAtIC50b0xlZnRDbGljaygpXG4gICAqIC0gLnRvTGVmdENsaWNrRHJhZygpXG4gICAqIC0gLnRvTGVmdE1vdXNlRG93bigpXG4gICAqIC0gLnRvTGVmdE1vdXNlVXAoKVxuICAgKiAtIC50b01pZGRsZUNsaWNrKClcbiAgICogLSAudG9Nb3ZlUG9pbnRlcigpXG4gICAqIC0gLnRvUmlnaHRDbGljaygpXG4gICAqIC0gLnRvU2Nyb2xsKClcbiAgICogLSAudG9UcmlwbGVDbGljaygpXG4gICAqIC0gLnRvVHlwZVRleHQoKVxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlKHMpIHRvIGNoZWNrXG4gICAqIEBwYXJhbSBvcGVyYXRvciBXb3JrcyB3aXRoIFthcm4gb3BlcmF0b3JzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vSUFNL2xhdGVzdC9Vc2VyR3VpZGUvcmVmZXJlbmNlX3BvbGljaWVzX2VsZW1lbnRzX2NvbmRpdGlvbl9vcGVyYXRvcnMuaHRtbCNDb25kaXRpb25zX0FSTikuICoqRGVmYXVsdDoqKiBgQXJuTGlrZWBcbiAgICovXG4gIHB1YmxpYyBpZlN0YWNrQXJuKHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSwgb3BlcmF0b3I/OiBPcGVyYXRvciB8IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmlmKGBTdGFja0FybmAsIHZhbHVlLCBvcGVyYXRvciA/PyAnQXJuTGlrZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXRlbWVudCBwcm92aWRlciBmb3Igc2VydmljZSBbYWdlbnRhY2Nlc3MtbWNwXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc2VydmljZS1hdXRob3JpemF0aW9uL2xhdGVzdC9yZWZlcmVuY2UvbGlzdF9hZ2VudGFjY2Vzcy1tY3AuaHRtbCkuXG4gICAqXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcm9wcz86IGlhbS5Qb2xpY3lTdGF0ZW1lbnRQcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgfVxufVxuIl19