"use strict"; /* * ATTENTION: An "eval-source-map" devtool has been used. * This devtool is neither made for production nor for readable output files. * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) * or disable the default devtool with "devtool: false". * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). */ exports.id = "vendor-chunks/@modelcontextprotocol"; exports.ids = ["vendor-chunks/@modelcontextprotocol"]; exports.modules = { /***/ "(action-browser)/./node_modules/@modelcontextprotocol/sdk/dist/client/index.js": /*!*********************************************************************!*\ !*** ./node_modules/@modelcontextprotocol/sdk/dist/client/index.js ***! \*********************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Client: () => (/* binding */ Client)\n/* harmony export */ });\n/* harmony import */ var _shared_protocol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/protocol.js */ \"(action-browser)/./node_modules/@modelcontextprotocol/sdk/dist/shared/protocol.js\");\n/* harmony import */ var _types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../types.js */ \"(action-browser)/./node_modules/@modelcontextprotocol/sdk/dist/types.js\");\n\n\n/**\n * An MCP client on top of a pluggable transport.\n *\n * The client will automatically begin the initialization flow with the server when connect() is called.\n *\n * To use with custom types, extend the base Request/Notification/Result types and pass them as type parameters:\n *\n * ```typescript\n * // Custom schemas\n * const CustomRequestSchema = RequestSchema.extend({...})\n * const CustomNotificationSchema = NotificationSchema.extend({...})\n * const CustomResultSchema = ResultSchema.extend({...})\n *\n * // Type aliases\n * type CustomRequest = z.infer\n * type CustomNotification = z.infer\n * type CustomResult = z.infer\n *\n * // Create typed client\n * const client = new Client({\n * name: \"CustomClient\",\n * version: \"1.0.0\"\n * })\n * ```\n */ class Client extends _shared_protocol_js__WEBPACK_IMPORTED_MODULE_0__.Protocol {\n /**\n * Initializes this client with the given name and version information.\n */ constructor(_clientInfo, options){\n super(options);\n this._clientInfo = _clientInfo;\n this._capabilities = options.capabilities;\n }\n assertCapability(capability, method) {\n var _a;\n if (!((_a = this._serverCapabilities) === null || _a === void 0 ? void 0 : _a[capability])) {\n throw new Error(`Server does not support ${capability} (required for ${method})`);\n }\n }\n async connect(transport) {\n await super.connect(transport);\n try {\n const result = await this.request({\n method: \"initialize\",\n params: {\n protocolVersion: _types_js__WEBPACK_IMPORTED_MODULE_1__.LATEST_PROTOCOL_VERSION,\n capabilities: this._capabilities,\n clientInfo: this._clientInfo\n }\n }, _types_js__WEBPACK_IMPORTED_MODULE_1__.InitializeResultSchema);\n if (result === undefined) {\n throw new Error(`Server sent invalid initialize result: ${result}`);\n }\n if (!_types_js__WEBPACK_IMPORTED_MODULE_1__.SUPPORTED_PROTOCOL_VERSIONS.includes(result.protocolVersion)) {\n throw new Error(`Server's protocol version is not supported: ${result.protocolVersion}`);\n }\n this._serverCapabilities = result.capabilities;\n this._serverVersion = result.serverInfo;\n await this.notification({\n method: \"notifications/initialized\"\n });\n } catch (error) {\n // Disconnect if initialization fails.\n void this.close();\n throw error;\n }\n }\n /**\n * After initialization has completed, this will be populated with the server's reported capabilities.\n */ getServerCapabilities() {\n return this._serverCapabilities;\n }\n /**\n * After initialization has completed, this will be populated with information about the server's name and version.\n */ getServerVersion() {\n return this._serverVersion;\n }\n assertCapabilityForMethod(method) {\n var _a, _b, _c, _d, _e;\n switch(method){\n case \"logging/setLevel\":\n if (!((_a = this._serverCapabilities) === null || _a === void 0 ? void 0 : _a.logging)) {\n throw new Error(`Server does not support logging (required for ${method})`);\n }\n break;\n case \"prompts/get\":\n case \"prompts/list\":\n if (!((_b = this._serverCapabilities) === null || _b === void 0 ? void 0 : _b.prompts)) {\n throw new Error(`Server does not support prompts (required for ${method})`);\n }\n break;\n case \"resources/list\":\n case \"resources/templates/list\":\n case \"resources/read\":\n case \"resources/subscribe\":\n case \"resources/unsubscribe\":\n if (!((_c = this._serverCapabilities) === null || _c === void 0 ? void 0 : _c.resources)) {\n throw new Error(`Server does not support resources (required for ${method})`);\n }\n if (method === \"resources/subscribe\" && !this._serverCapabilities.resources.subscribe) {\n throw new Error(`Server does not support resource subscriptions (required for ${method})`);\n }\n break;\n case \"tools/call\":\n case \"tools/list\":\n if (!((_d = this._serverCapabilities) === null || _d === void 0 ? void 0 : _d.tools)) {\n throw new Error(`Server does not support tools (required for ${method})`);\n }\n break;\n case \"completion/complete\":\n if (!((_e = this._serverCapabilities) === null || _e === void 0 ? void 0 : _e.prompts)) {\n throw new Error(`Server does not support prompts (required for ${method})`);\n }\n break;\n case \"initialize\":\n break;\n case \"ping\":\n break;\n }\n }\n assertNotificationCapability(method) {\n var _a;\n switch(method){\n case \"notifications/roots/list_changed\":\n if (!((_a = this._capabilities.roots) === null || _a === void 0 ? void 0 : _a.listChanged)) {\n throw new Error(`Client does not support roots list changed notifications (required for ${method})`);\n }\n break;\n case \"notifications/initialized\":\n break;\n case \"notifications/cancelled\":\n break;\n case \"notifications/progress\":\n break;\n }\n }\n assertRequestHandlerCapability(method) {\n switch(method){\n case \"sampling/createMessage\":\n if (!this._capabilities.sampling) {\n throw new Error(`Client does not support sampling capability (required for ${method})`);\n }\n break;\n case \"roots/list\":\n if (!this._capabilities.roots) {\n throw new Error(`Client does not support roots capability (required for ${method})`);\n }\n break;\n case \"ping\":\n break;\n }\n }\n async ping(options) {\n return this.request({\n method: \"ping\"\n }, _types_js__WEBPACK_IMPORTED_MODULE_1__.EmptyResultSchema, options);\n }\n async complete(params, options) {\n return this.request({\n method: \"completion/complete\",\n params\n }, _types_js__WEBPACK_IMPORTED_MODULE_1__.CompleteResultSchema, options);\n }\n async setLoggingLevel(level, options) {\n return this.request({\n method: \"logging/setLevel\",\n params: {\n level\n }\n }, _types_js__WEBPACK_IMPORTED_MODULE_1__.EmptyResultSchema, options);\n }\n async getPrompt(params, options) {\n return this.request({\n method: \"prompts/get\",\n params\n }, _types_js__WEBPACK_IMPORTED_MODULE_1__.GetPromptResultSchema, options);\n }\n async listPrompts(params, options) {\n return this.request({\n method: \"prompts/list\",\n params\n }, _types_js__WEBPACK_IMPORTED_MODULE_1__.ListPromptsResultSchema, options);\n }\n async listResources(params, options) {\n return this.request({\n method: \"resources/list\",\n params\n }, _types_js__WEBPACK_IMPORTED_MODULE_1__.ListResourcesResultSchema, options);\n }\n async listResourceTemplates(params, options) {\n return this.request({\n method: \"resources/templates/list\",\n params\n }, _types_js__WEBPACK_IMPORTED_MODULE_1__.ListResourceTemplatesResultSchema, options);\n }\n async readResource(params, options) {\n return this.request({\n method: \"resources/read\",\n params\n }, _types_js__WEBPACK_IMPORTED_MODULE_1__.ReadResourceResultSchema, options);\n }\n async subscribeResource(params, options) {\n return this.request({\n method: \"resources/subscribe\",\n params\n }, _types_js__WEBPACK_IMPORTED_MODULE_1__.EmptyResultSchema, options);\n }\n async unsubscribeResource(params, options) {\n return this.request({\n method: \"resources/unsubscribe\",\n params\n }, _types_js__WEBPACK_IMPORTED_MODULE_1__.EmptyResultSchema, options);\n }\n async callTool(params, resultSchema = _types_js__WEBPACK_IMPORTED_MODULE_1__.CallToolResultSchema, options) {\n return this.request({\n method: \"tools/call\",\n params\n }, resultSchema, options);\n }\n async listTools(params, options) {\n return this.request({\n method: \"tools/list\",\n params\n }, _types_js__WEBPACK_IMPORTED_MODULE_1__.ListToolsResultSchema, options);\n }\n async sendRootsListChanged() {\n return this.notification({\n method: \"notifications/roots/list_changed\"\n });\n }\n} //# sourceMappingURL=index.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFjdGlvbi1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AbW9kZWxjb250ZXh0cHJvdG9jb2wvc2RrL2Rpc3QvY2xpZW50L2luZGV4LmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUFrRDtBQUN3UjtBQUMxVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBd0JDLEdBQ00sTUFBTWEsZUFBZWIseURBQVFBO0lBQ2hDOztLQUVDLEdBQ0RjLFlBQVlDLFdBQVcsRUFBRUMsT0FBTyxDQUFFO1FBQzlCLEtBQUssQ0FBQ0E7UUFDTixJQUFJLENBQUNELFdBQVcsR0FBR0E7UUFDbkIsSUFBSSxDQUFDRSxhQUFhLEdBQUdELFFBQVFFLFlBQVk7SUFDN0M7SUFDQUMsaUJBQWlCQyxVQUFVLEVBQUVDLE1BQU0sRUFBRTtRQUNqQyxJQUFJQztRQUNKLElBQUksQ0FBRSxFQUFDQSxLQUFLLElBQUksQ0FBQ0MsbUJBQW1CLE1BQU0sUUFBUUQsT0FBTyxLQUFLLElBQUksS0FBSyxJQUFJQSxFQUFFLENBQUNGLFdBQVcsR0FBRztZQUN4RixNQUFNLElBQUlJLE1BQU0sQ0FBQyx3QkFBd0IsRUFBRUosV0FBVyxlQUFlLEVBQUVDLE9BQU8sQ0FBQyxDQUFDO1FBQ3BGO0lBQ0o7SUFDQSxNQUFNSSxRQUFRQyxTQUFTLEVBQUU7UUFDckIsTUFBTSxLQUFLLENBQUNELFFBQVFDO1FBQ3BCLElBQUk7WUFDQSxNQUFNQyxTQUFTLE1BQU0sSUFBSSxDQUFDQyxPQUFPLENBQUM7Z0JBQzlCUCxRQUFRO2dCQUNSUSxRQUFRO29CQUNKQyxpQkFBaUJ4Qiw4REFBdUJBO29CQUN4Q1ksY0FBYyxJQUFJLENBQUNELGFBQWE7b0JBQ2hDYyxZQUFZLElBQUksQ0FBQ2hCLFdBQVc7Z0JBQ2hDO1lBQ0osR0FBR1YsNkRBQXNCQTtZQUN6QixJQUFJc0IsV0FBV0ssV0FBVztnQkFDdEIsTUFBTSxJQUFJUixNQUFNLENBQUMsdUNBQXVDLEVBQUVHLE9BQU8sQ0FBQztZQUN0RTtZQUNBLElBQUksQ0FBQ2Ysa0VBQTJC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O1lBQWNRO1FBQU8sR0FBR3VDLGNBQWNwRDtJQUN4RTtJQUNBLE1BQU1xRCxVQUFVeEMsTUFBTSxFQUFFYixPQUFPLEVBQUU7UUFDN0IsT0FBTyxJQUFJLENBQUNZLE9BQU8sQ0FBQztZQUFFUCxRQUFRO1lBQWNRO1FBQU8sR0FBR25CLDREQUFxQkEsRUFBRU07SUFDakY7SUFDQSxNQUFNc0QsdUJBQXVCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDbEMsWUFBWSxDQUFDO1lBQUVmLFFBQVE7UUFBbUM7SUFDMUU7QUFDSixFQUNBLGlDQUFpQyIsInNvdXJjZXMiOlsid2VicGFjazovL25leHRjaGF0Ly4vbm9kZV9tb2R1bGVzL0Btb2RlbGNvbnRleHRwcm90b2NvbC9zZGsvZGlzdC9jbGllbnQvaW5kZXguanM/ZTQ5NyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm90b2NvbCwgfSBmcm9tIFwiLi4vc2hhcmVkL3Byb3RvY29sLmpzXCI7XG5pbXBvcnQgeyBDYWxsVG9vbFJlc3VsdFNjaGVtYSwgQ29tcGxldGVSZXN1bHRTY2hlbWEsIEVtcHR5UmVzdWx0U2NoZW1hLCBHZXRQcm9tcHRSZXN1bHRTY2hlbWEsIEluaXRpYWxpemVSZXN1bHRTY2hlbWEsIExBVEVTVF9QUk9UT0NPTF9WRVJTSU9OLCBMaXN0UHJvbXB0c1Jlc3VsdFNjaGVtYSwgTGlzdFJlc291cmNlc1Jlc3VsdFNjaGVtYSwgTGlzdFJlc291cmNlVGVtcGxhdGVzUmVzdWx0U2NoZW1hLCBMaXN0VG9vbHNSZXN1bHRTY2hlbWEsIFJlYWRSZXNvdXJjZVJlc3VsdFNjaGVtYSwgU1VQUE9SVEVEX1BST1RPQ09MX1ZFUlNJT05TLCB9IGZyb20gXCIuLi90eXBlcy5qc1wiO1xuLyoqXG4gKiBBbiBNQ1AgY2xpZW50IG9uIHRvcCBvZiBhIHBsdWdnYWJsZSB0cmFuc3BvcnQuXG4gKlxuICogVGhlIGNsaWVudCB3aWxsIGF1dG9tYXRpY2FsbHkgYmVnaW4gdGhlIGluaXRpYWxpemF0aW9uIGZsb3cgd2l0aCB0aGUgc2VydmVyIHdoZW4gY29ubmVjdCgpIGlzIGNhbGxlZC5cbiAqXG4gKiBUbyB1c2Ugd2l0aCBjdXN0b20gdHlwZXMsIGV4dGVuZCB0aGUgYmFzZSBSZXF1ZXN0L05vdGlmaWNhdGlvbi9SZXN1bHQgdHlwZXMgYW5kIHBhc3MgdGhlbSBhcyB0eXBlIHBhcmFtZXRlcnM6XG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gQ3VzdG9tIHNjaGVtYXNcbiAqIGNvbnN0IEN1c3RvbVJlcXVlc3RTY2hlbWEgPSBSZXF1ZXN0U2NoZW1hLmV4dGVuZCh7Li4ufSlcbiAqIGNvbnN0IEN1c3RvbU5vdGlmaWNhdGlvblNjaGVtYSA9IE5vdGlmaWNhdGlvblNjaGVtYS5leHRlbmQoey4uLn0pXG4gKiBjb25zdCBDdXN0b21SZXN1bHRTY2hlbWEgPSBSZXN1bHRTY2hlbWEuZXh0ZW5kKHsuLi59KVxuICpcbiAqIC8vIFR5cGUgYWxpYXNlc1xuICogdHlwZSBDdXN0b21SZXF1ZXN0ID0gei5pbmZlcjx0eXBlb2YgQ3VzdG9tUmVxdWVzdFNjaGVtYT5cbiAqIHR5cGUgQ3VzdG9tTm90aWZpY2F0aW9uID0gei5pbmZlcjx0eXBlb2YgQ3VzdG9tTm90aWZpY2F0aW9uU2NoZW1hPlxuICogdHlwZSBDdXN0b21SZXN1bHQgPSB6LmluZmVyPHR5cGVvZiBDdXN0b21SZXN1bHRTY2hlbWE+XG4gKlxuICogLy8gQ3JlYXRlIHR5cGVkIGNsaWVudFxuICogY29uc3QgY2xpZW50ID0gbmV3IENsaWVudDxDdXN0b21SZXF1ZXN0LCBDdXN0b21Ob3RpZmljYXRpb24sIEN1c3RvbVJlc3VsdD4oe1xuICogICBuYW1lOiBcIkN1c3RvbUNsaWVudFwiLFxuICogICB2ZXJzaW9uOiBcIjEuMC4wXCJcbiAqIH0pXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIENsaWVudCBleHRlbmRzIFByb3RvY29sIHtcbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplcyB0aGlzIGNsaWVudCB3aXRoIHRoZSBnaXZlbiBuYW1lIGFuZCB2ZXJzaW9uIGluZm9ybWF0aW9uLlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKF9jbGllbnRJbmZvLCBvcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgICAgICB0aGlzLl9jbGllbnRJbmZvID0gX2NsaWVudEluZm87XG4gICAgICAgIHRoaXMuX2NhcGFiaWxpdGllcyA9IG9wdGlvbnMuY2FwYWJpbGl0aWVzO1xuICAgIH1cbiAgICBhc3NlcnRDYXBhYmlsaXR5KGNhcGFiaWxpdHksIG1ldGhvZCkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmICghKChfYSA9IHRoaXMuX3NlcnZlckNhcGFiaWxpdGllcykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hW2NhcGFiaWxpdHldKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTZXJ2ZXIgZG9lcyBub3Qgc3VwcG9ydCAke2NhcGFiaWxpdHl9IChyZXF1aXJlZCBmb3IgJHttZXRob2R9KWApO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIGNvbm5lY3QodHJhbnNwb3J0KSB7XG4gICAgICAgIGF3YWl0IHN1cGVyLmNvbm5lY3QodHJhbnNwb3J0KTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucmVxdWVzdCh7XG4gICAgICAgICAgICAgICAgbWV0aG9kOiBcImluaXRpYWxpemVcIixcbiAgICAgICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgcHJvdG9jb2xWZXJzaW9uOiBMQVRFU1RfUFJPVE9DT0xfVkVSU0lPTixcbiAgICAgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzOiB0aGlzLl9jYXBhYmlsaXRpZXMsXG4gICAgICAgICAgICAgICAgICAgIGNsaWVudEluZm86IHRoaXMuX2NsaWVudEluZm8sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sIEluaXRpYWxpemVSZXN1bHRTY2hlbWEpO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTZXJ2ZXIgc2VudCBpbnZhbGlkIGluaXRpYWxpemUgcmVzdWx0OiAke3Jlc3VsdH1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghU1VQUE9SVEVEX1BST1RPQ09MX1ZFUlNJT05TLmluY2x1ZGVzKHJlc3VsdC5wcm90b2NvbFZlcnNpb24pKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTZXJ2ZXIncyBwcm90b2NvbCB2ZXJzaW9uIGlzIG5vdCBzdXBwb3J0ZWQ6ICR7cmVzdWx0LnByb3RvY29sVmVyc2lvbn1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX3NlcnZlckNhcGFiaWxpdGllcyA9IHJlc3VsdC5jYXBhYmlsaXRpZXM7XG4gICAgICAgICAgICB0aGlzLl9zZXJ2ZXJWZXJzaW9uID0gcmVzdWx0LnNlcnZlckluZm87XG4gICAgICAgICAgICBhd2FpdCB0aGlzLm5vdGlmaWNhdGlvbih7XG4gICAgICAgICAgICAgICAgbWV0aG9kOiBcIm5vdGlmaWNhdGlvbnMvaW5pdGlhbGl6ZWRcIixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgLy8gRGlzY29ubmVjdCBpZiBpbml0aWFsaXphdGlvbiBmYWlscy5cbiAgICAgICAgICAgIHZvaWQgdGhpcy5jbG9zZSgpO1xuICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogQWZ0ZXIgaW5pdGlhbGl6YXRpb24gaGFzIGNvbXBsZXRlZCwgdGhpcyB3aWxsIGJlIHBvcHVsYXRlZCB3aXRoIHRoZSBzZXJ2ZXIncyByZXBvcnRlZCBjYXBhYmlsaXRpZXMuXG4gICAgICovXG4gICAgZ2V0U2VydmVyQ2FwYWJpbGl0aWVzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VydmVyQ2FwYWJpbGl0aWVzO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBBZnRlciBpbml0aWFsaXphdGlvbiBoYXMgY29tcGxldGVkLCB0aGlzIHdpbGwgYmUgcG9wdWxhdGVkIHdpdGggaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNlcnZlcidzIG5hbWUgYW5kIHZlcnNpb24uXG4gICAgICovXG4gICAgZ2V0U2VydmVyVmVyc2lvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlcnZlclZlcnNpb247XG4gICAgfVxuICAgIGFzc2VydENhcGFiaWxpdHlGb3JNZXRob2QobWV0aG9kKSB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2U7XG4gICAgICAgIHN3aXRjaCAobWV0aG9kKSB7XG4gICAgICAgICAgICBjYXNlIFwibG9nZ2luZy9zZXRMZXZlbFwiOlxuICAgICAgICAgICAgICAgIGlmICghKChfYSA9IHRoaXMuX3NlcnZlckNhcGFiaWxpdGllcykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxvZ2dpbmcpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgU2VydmVyIGRvZXMgbm90IHN1cHBvcnQgbG9nZ2luZyAocmVxdWlyZWQgZm9yICR7bWV0aG9kfSlgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwicHJvbXB0cy9nZXRcIjpcbiAgICAgICAgICAgIGNhc2UgXCJwcm9tcHRzL2xpc3RcIjpcbiAgICAgICAgICAgICAgICBpZiAoISgoX2IgPSB0aGlzLl9zZXJ2ZXJDYXBhYmlsaXRpZXMpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5wcm9tcHRzKSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNlcnZlciBkb2VzIG5vdCBzdXBwb3J0IHByb21wdHMgKHJlcXVpcmVkIGZvciAke21ldGhvZH0pYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcInJlc291cmNlcy9saXN0XCI6XG4gICAgICAgICAgICBjYXNlIFwicmVzb3VyY2VzL3RlbXBsYXRlcy9saXN0XCI6XG4gICAgICAgICAgICBjYXNlIFwicmVzb3VyY2VzL3JlYWRcIjpcbiAgICAgICAgICAgIGNhc2UgXCJyZXNvdXJjZXMvc3Vic2NyaWJlXCI6XG4gICAgICAgICAgICBjYXNlIFwicmVzb3VyY2VzL3Vuc3Vic2NyaWJlXCI6XG4gICAgICAgICAgICAgICAgaWYgKCEoKF9jID0gdGhpcy5fc2VydmVyQ2FwYWJpbGl0aWVzKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MucmVzb3VyY2VzKSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNlcnZlciBkb2VzIG5vdCBzdXBwb3J0IHJlc291cmNlcyAocmVxdWlyZWQgZm9yICR7bWV0aG9kfSlgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG1ldGhvZCA9PT0gXCJyZXNvdXJjZXMvc3Vic2NyaWJlXCIgJiZcbiAgICAgICAgICAgICAgICAgICAgIXRoaXMuX3NlcnZlckNhcGFiaWxpdGllcy5yZXNvdXJjZXMuc3Vic2NyaWJlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgU2VydmVyIGRvZXMgbm90IHN1cHBvcnQgcmVzb3VyY2Ugc3Vic2NyaXB0aW9ucyAocmVxdWlyZWQgZm9yICR7bWV0aG9kfSlgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwidG9vbHMvY2FsbFwiOlxuICAgICAgICAgICAgY2FzZSBcInRvb2xzL2xpc3RcIjpcbiAgICAgICAgICAgICAgICBpZiAoISgoX2QgPSB0aGlzLl9zZXJ2ZXJDYXBhYmlsaXRpZXMpID09PSBudWxsIHx8IF9kID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZC50b29scykpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTZXJ2ZXIgZG9lcyBub3Qgc3VwcG9ydCB0b29scyAocmVxdWlyZWQgZm9yICR7bWV0aG9kfSlgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwiY29tcGxldGlvbi9jb21wbGV0ZVwiOlxuICAgICAgICAgICAgICAgIGlmICghKChfZSA9IHRoaXMuX3NlcnZlckNhcGFiaWxpdGllcykgPT09IG51bGwgfHwgX2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9lLnByb21wdHMpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgU2VydmVyIGRvZXMgbm90IHN1cHBvcnQgcHJvbXB0cyAocmVxdWlyZWQgZm9yICR7bWV0aG9kfSlgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwiaW5pdGlhbGl6ZVwiOlxuICAgICAgICAgICAgICAgIC8vIE5vIHNwZWNpZmljIGNhcGFiaWxpdHkgcmVxdWlyZWQgZm9yIGluaXRpYWxpemVcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJwaW5nXCI6XG4gICAgICAgICAgICAgICAgLy8gTm8gc3BlY2lmaWMgY2FwYWJpbGl0eSByZXF1aXJlZCBmb3IgcGluZ1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzc2VydE5vdGlmaWNhdGlvbkNhcGFiaWxpdHkobWV0aG9kKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgc3dpdGNoIChtZXRob2QpIHtcbiAgICAgICAgICAgIGNhc2UgXCJub3RpZmljYXRpb25zL3Jvb3RzL2xpc3RfY2hhbmdlZFwiOlxuICAgICAgICAgICAgICAgIGlmICghKChfYSA9IHRoaXMuX2NhcGFiaWxpdGllcy5yb290cykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmxpc3RDaGFuZ2VkKSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENsaWVudCBkb2VzIG5vdCBzdXBwb3J0IHJvb3RzIGxpc3QgY2hhbmdlZCBub3RpZmljYXRpb25zIChyZXF1aXJlZCBmb3IgJHttZXRob2R9KWApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJub3RpZmljYXRpb25zL2luaXRpYWxpemVkXCI6XG4gICAgICAgICAgICAgICAgLy8gTm8gc3BlY2lmaWMgY2FwYWJpbGl0eSByZXF1aXJlZCBmb3IgaW5pdGlhbGl6ZWRcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJub3RpZmljYXRpb25zL2NhbmNlbGxlZFwiOlxuICAgICAgICAgICAgICAgIC8vIENhbmNlbGxhdGlvbiBub3RpZmljYXRpb25zIGFyZSBhbHdheXMgYWxsb3dlZFxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIm5vdGlmaWNhdGlvbnMvcHJvZ3Jlc3NcIjpcbiAgICAgICAgICAgICAgICAvLyBQcm9ncmVzcyBub3RpZmljYXRpb25zIGFyZSBhbHdheXMgYWxsb3dlZFxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzc2VydFJlcXVlc3RIYW5kbGVyQ2FwYWJpbGl0eShtZXRob2QpIHtcbiAgICAgICAgc3dpdGNoIChtZXRob2QpIHtcbiAgICAgICAgICAgIGNhc2UgXCJzYW1wbGluZy9jcmVhdGVNZXNzYWdlXCI6XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9jYXBhYmlsaXRpZXMuc2FtcGxpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDbGllbnQgZG9lcyBub3Qgc3VwcG9ydCBzYW1wbGluZyBjYXBhYmlsaXR5IChyZXF1aXJlZCBmb3IgJHttZXRob2R9KWApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJyb290cy9saXN0XCI6XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9jYXBhYmlsaXRpZXMucm9vdHMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDbGllbnQgZG9lcyBub3Qgc3VwcG9ydCByb290cyBjYXBhYmlsaXR5IChyZXF1aXJlZCBmb3IgJHttZXRob2R9KWApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJwaW5nXCI6XG4gICAgICAgICAgICAgICAgLy8gTm8gc3BlY2lmaWMgY2FwYWJpbGl0eSByZXF1aXJlZCBmb3IgcGluZ1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIHBpbmcob3B0aW9ucykge1xuICAgICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHsgbWV0aG9kOiBcInBpbmdcIiB9LCBFbXB0eVJlc3VsdFNjaGVtYSwgb3B0aW9ucyk7XG4gICAgfVxuICAgIGFzeW5jIGNvbXBsZXRlKHBhcmFtcywgb3B0aW9ucykge1xuICAgICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHsgbWV0aG9kOiBcImNvbXBsZXRpb24vY29tcGxldGVcIiwgcGFyYW1zIH0sIENvbXBsZXRlUmVzdWx0U2NoZW1hLCBvcHRpb25zKTtcbiAgICB9XG4gICAgYXN5bmMgc2V0TG9nZ2luZ0xldmVsKGxldmVsLCBvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlcXVlc3QoeyBtZXRob2Q6IFwibG9nZ2luZy9zZXRMZXZlbFwiLCBwYXJhbXM6IHsgbGV2ZWwgfSB9LCBFbXB0eVJlc3VsdFNjaGVtYSwgb3B0aW9ucyk7XG4gICAgfVxuICAgIGFzeW5jIGdldFByb21wdChwYXJhbXMsIG9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdCh7IG1ldGhvZDogXCJwcm9tcHRzL2dldFwiLCBwYXJhbXMgfSwgR2V0UHJvbXB0UmVzdWx0U2NoZW1hLCBvcHRpb25zKTtcbiAgICB9XG4gICAgYXN5bmMgbGlzdFByb21wdHMocGFyYW1zLCBvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlcXVlc3QoeyBtZXRob2Q6IFwicHJvbXB0cy9saXN0XCIsIHBhcmFtcyB9LCBMaXN0UHJvbXB0c1Jlc3VsdFNjaGVtYSwgb3B0aW9ucyk7XG4gICAgfVxuICAgIGFzeW5jIGxpc3RSZXNvdXJjZXMocGFyYW1zLCBvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlcXVlc3QoeyBtZXRob2Q6IFwicmVzb3VyY2VzL2xpc3RcIiwgcGFyYW1zIH0sIExpc3RSZXNvdXJjZXNSZXN1bHRTY2hlbWEsIG9wdGlvbnMpO1xuICAgIH1cbiAgICBhc3luYyBsaXN0UmVzb3VyY2VUZW1wbGF0ZXMocGFyYW1zLCBvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlcXVlc3QoeyBtZXRob2Q6IFwicmVzb3VyY2VzL3RlbXBsYXRlcy9saXN0XCIsIHBhcmFtcyB9LCBMaXN0UmVzb3VyY2VUZW1wbGF0ZXNSZXN1bHRTY2hlbWEsIG9wdGlvbnMpO1xuICAgIH1cbiAgICBhc3luYyByZWFkUmVzb3VyY2UocGFyYW1zLCBvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlcXVlc3QoeyBtZXRob2Q6IFwicmVzb3VyY2VzL3JlYWRcIiwgcGFyYW1zIH0sIFJlYWRSZXNvdXJjZVJlc3VsdFNjaGVtYSwgb3B0aW9ucyk7XG4gICAgfVxuICAgIGFzeW5jIHN1YnNjcmliZVJlc291cmNlKHBhcmFtcywgb3B0aW9ucykge1xuICAgICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHsgbWV0aG9kOiBcInJlc291cmNlcy9zdWJzY3JpYmVcIiwgcGFyYW1zIH0sIEVtcHR5UmVzdWx0U2NoZW1hLCBvcHRpb25zKTtcbiAgICB9XG4gICAgYXN5bmMgdW5zdWJzY3JpYmVSZXNvdXJjZShwYXJhbXMsIG9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdCh7IG1ldGhvZDogXCJyZXNvdXJjZXMvdW5zdWJzY3JpYmVcIiwgcGFyYW1zIH0sIEVtcHR5UmVzdWx0U2NoZW1hLCBvcHRpb25zKTtcbiAgICB9XG4gICAgYXN5bmMgY2FsbFRvb2wocGFyYW1zLCByZXN1bHRTY2hlbWEgPSBDYWxsVG9vbFJlc3VsdFNjaGVtYSwgb3B0aW9ucykge1xuICAgICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHsgbWV0aG9kOiBcInRvb2xzL2NhbGxcIiwgcGFyYW1zIH0sIHJlc3VsdFNjaGVtYSwgb3B0aW9ucyk7XG4gICAgfVxuICAgIGFzeW5jIGxpc3RUb29scyhwYXJhbXMsIG9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdCh7IG1ldGhvZDogXCJ0b29scy9saXN0XCIsIHBhcmFtcyB9LCBMaXN0VG9vbHNSZXN1bHRTY2hlbWEsIG9wdGlvbnMpO1xuICAgIH1cbiAgICBhc3luYyBzZW5kUm9vdHNMaXN0Q2hhbmdlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubm90aWZpY2F0aW9uKHsgbWV0aG9kOiBcIm5vdGlmaWNhdGlvbnMvcm9vdHMvbGlzdF9jaGFuZ2VkXCIgfSk7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sIm5hbWVzIjpbIlByb3RvY29sIiwiQ2FsbFRvb2xSZXN1bHRTY2hlbWEiLCJDb21wbGV0ZVJlc3VsdFNjaGVtYSIsIkVtcHR5UmVzdWx0U2NoZW1hIiwiR2V0UHJvbXB0UmVzdWx0U2NoZW1hIiwiSW5pdGlhbGl6ZVJlc3VsdFNjaGVtYSIsIkxBVEVTVF9QUk9UT0NPTF9WRVJTSU9OIiwiTGlzdFByb21wdHNSZXN1bHRTY2hlbWEiLCJMaXN0UmVzb3VyY2VzUmVzdWx0U2NoZW1hIiwiTGlzdFJlc291cmNlVGVtcGxhdGVzUmVzdWx0U2NoZW1hIiwiTGlzdFRvb2xzUmVzdWx0U2NoZW1hIiwiUmVhZFJlc291cmNlUmVzdWx0U2NoZW1hIiwiU1VQUE9SVEVEX1BST1RPQ09MX1ZFUlNJT05TIiwiQ2xpZW50IiwiY29uc3RydWN0b3IiLCJfY2xpZW50SW5mbyIsIm9wdGlvbnMiLCJfY2FwYWJpbGl0aWVzIiwiY2FwYWJpbGl0aWVzIiwiYXNzZXJ0Q2FwYWJpbGl0eSIsImNhcGFiaWxpdHkiLCJtZXRob2QiLCJfYSIsIl9zZXJ2ZXJDYXBhYmlsaXRpZXMiLCJFcnJvciIsImNvbm5lY3QiLCJ0cmFuc3BvcnQiLCJyZXN1bHQiLCJyZXF1ZXN0IiwicGFyYW1zIiwicHJvdG9jb2xWZXJzaW9uIiwiY2xpZW50SW5mbyIsInVuZGVmaW5lZCIsImluY2x1ZGVzIiwiX3NlcnZlclZlcnNpb24iLCJzZXJ2ZXJJbmZvIiwibm90aWZpY2F0aW9uIiwiZXJyb3IiLCJjbG9zZSIsImdldFNlcnZlckNhcGFiaWxpdGllcyIsImdldFNlcnZlclZlcnNpb24iLCJhc3NlcnRDYXBhYmlsaXR5Rm9yTWV0aG9kIiwiX2IiLCJfYyIsIl9kIiwiX2UiLCJsb2dnaW5nIiwicHJvbXB0cyIsInJlc291cmNlcyIsInN1YnNjcmliZSIsInRvb2xzIiwiYXNzZXJ0Tm90aWZpY2F0aW9uQ2FwYWJpbGl0eSIsInJvb3RzIiwibGlzdENoYW5nZWQiLCJhc3NlcnRSZXF1ZXN0SGFuZGxlckNhcGFiaWxpdHkiLCJzYW1wbGluZyIsInBpbmciLCJjb21wbGV0ZSIsInNldExvZ2dpbmdMZXZlbCIsImxldmVsIiwiZ2V0UHJvbXB0IiwibGlzdFByb21wdHMiLCJsaXN0UmVzb3VyY2VzIiwibGlzdFJlc291cmNlVGVtcGxhdGVzIiwicmVhZFJlc291cmNlIiwic3Vic2NyaWJlUmVzb3VyY2UiLCJ1bnN1YnNjcmliZVJlc291cmNlIiwiY2FsbFRvb2wiLCJyZXN1bHRTY2hlbWEiLCJsaXN0VG9vbHMiLCJzZW5kUm9vdHNMaXN0Q2hhbmdlZCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(action-browser)/./node_modules/@modelcontextprotocol/sdk/dist/client/index.js\n"); /***/ }), /***/ "(action-browser)/./node_modules/@modelcontextprotocol/sdk/dist/client/stdio.js": /*!*********************************************************************!*\ !*** ./node_modules/@modelcontextprotocol/sdk/dist/client/stdio.js ***! \*********************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ DEFAULT_INHERITED_ENV_VARS: () => (/* binding */ DEFAULT_INHERITED_ENV_VARS),\n/* harmony export */ StdioClientTransport: () => (/* binding */ StdioClientTransport),\n/* harmony export */ getDefaultEnvironment: () => (/* binding */ getDefaultEnvironment)\n/* harmony export */ });\n/* harmony import */ var node_child_process__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! node:child_process */ \"node:child_process\");\n/* harmony import */ var node_process__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! node:process */ \"node:process\");\n/* harmony import */ var _shared_stdio_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/stdio.js */ \"(action-browser)/./node_modules/@modelcontextprotocol/sdk/dist/shared/stdio.js\");\n\n\n\n/**\n * Environment variables to inherit by default, if an environment is not explicitly given.\n */ const DEFAULT_INHERITED_ENV_VARS = node_process__WEBPACK_IMPORTED_MODULE_1__.platform === \"win32\" ? [\n \"APPDATA\",\n \"HOMEDRIVE\",\n \"HOMEPATH\",\n \"LOCALAPPDATA\",\n \"PATH\",\n \"PROCESSOR_ARCHITECTURE\",\n \"SYSTEMDRIVE\",\n \"SYSTEMROOT\",\n \"TEMP\",\n \"USERNAME\",\n \"USERPROFILE\"\n] : /* list inspired by the default env inheritance of sudo */ [\n \"HOME\",\n \"LOGNAME\",\n \"PATH\",\n \"SHELL\",\n \"TERM\",\n \"USER\"\n];\n/**\n * Returns a default environment object including only environment variables deemed safe to inherit.\n */ function getDefaultEnvironment() {\n const env = {};\n for (const key of DEFAULT_INHERITED_ENV_VARS){\n const value = node_process__WEBPACK_IMPORTED_MODULE_1__.env[key];\n if (value === undefined) {\n continue;\n }\n if (value.startsWith(\"()\")) {\n continue;\n }\n env[key] = value;\n }\n return env;\n}\n/**\n * Client transport for stdio: this will connect to a server by spawning a process and communicating with it over stdin/stdout.\n *\n * This transport is only available in Node.js environments.\n */ class StdioClientTransport {\n constructor(server){\n this._abortController = new AbortController();\n this._readBuffer = new _shared_stdio_js__WEBPACK_IMPORTED_MODULE_2__.ReadBuffer();\n this._serverParams = server;\n }\n /**\n * Starts the server process and prepares to communicate with it.\n */ async start() {\n if (this._process) {\n throw new Error(\"StdioClientTransport already started! If using Client class, note that connect() calls start() automatically.\");\n }\n return new Promise((resolve, reject)=>{\n var _a, _b, _c, _d, _e, _f;\n this._process = (0,node_child_process__WEBPACK_IMPORTED_MODULE_0__.spawn)(this._serverParams.command, (_a = this._serverParams.args) !== null && _a !== void 0 ? _a : [], {\n env: (_b = this._serverParams.env) !== null && _b !== void 0 ? _b : getDefaultEnvironment(),\n stdio: [\n \"pipe\",\n \"pipe\",\n (_c = this._serverParams.stderr) !== null && _c !== void 0 ? _c : \"inherit\"\n ],\n shell: false,\n signal: this._abortController.signal,\n windowsHide: node_process__WEBPACK_IMPORTED_MODULE_1__.platform === \"win32\" && isElectron()\n });\n this._process.on(\"error\", (error)=>{\n var _a, _b;\n if (error.name === \"AbortError\") {\n // Expected when close() is called.\n (_a = this.onclose) === null || _a === void 0 ? void 0 : _a.call(this);\n return;\n }\n reject(error);\n (_b = this.onerror) === null || _b === void 0 ? void 0 : _b.call(this, error);\n });\n this._process.on(\"spawn\", ()=>{\n resolve();\n });\n this._process.on(\"close\", (_code)=>{\n var _a;\n this._process = undefined;\n (_a = this.onclose) === null || _a === void 0 ? void 0 : _a.call(this);\n });\n (_d = this._process.stdin) === null || _d === void 0 ? void 0 : _d.on(\"error\", (error)=>{\n var _a;\n (_a = this.onerror) === null || _a === void 0 ? void 0 : _a.call(this, error);\n });\n (_e = this._process.stdout) === null || _e === void 0 ? void 0 : _e.on(\"data\", (chunk)=>{\n this._readBuffer.append(chunk);\n this.processReadBuffer();\n });\n (_f = this._process.stdout) === null || _f === void 0 ? void 0 : _f.on(\"error\", (error)=>{\n var _a;\n (_a = this.onerror) === null || _a === void 0 ? void 0 : _a.call(this, error);\n });\n });\n }\n /**\n * The stderr stream of the child process, if `StdioServerParameters.stderr` was set to \"pipe\" or \"overlapped\".\n *\n * This is only available after the process has been started.\n */ get stderr() {\n var _a, _b;\n return (_b = (_a = this._process) === null || _a === void 0 ? void 0 : _a.stderr) !== null && _b !== void 0 ? _b : null;\n }\n processReadBuffer() {\n var _a, _b;\n while(true){\n try {\n const message = this._readBuffer.readMessage();\n if (message === null) {\n break;\n }\n (_a = this.onmessage) === null || _a === void 0 ? void 0 : _a.call(this, message);\n } catch (error) {\n (_b = this.onerror) === null || _b === void 0 ? void 0 : _b.call(this, error);\n }\n }\n }\n async close() {\n this._abortController.abort();\n this._process = undefined;\n this._readBuffer.clear();\n }\n send(message) {\n return new Promise((resolve)=>{\n var _a;\n if (!((_a = this._process) === null || _a === void 0 ? void 0 : _a.stdin)) {\n throw new Error(\"Not connected\");\n }\n const json = (0,_shared_stdio_js__WEBPACK_IMPORTED_MODULE_2__.serializeMessage)(message);\n if (this._process.stdin.write(json)) {\n resolve();\n } else {\n this._process.stdin.once(\"drain\", resolve);\n }\n });\n }\n}\nfunction isElectron() {\n return \"type\" in node_process__WEBPACK_IMPORTED_MODULE_1__;\n} //# sourceMappingURL=stdio.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFjdGlvbi1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AbW9kZWxjb250ZXh0cHJvdG9jb2wvc2RrL2Rpc3QvY2xpZW50L3N0ZGlvLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUEyQztBQUNSO0FBQytCO0FBQ2xFOztDQUVDLEdBQ00sTUFBTUksNkJBQTZCSCxrREFBZ0IsS0FBSyxVQUN6RDtJQUNFO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7Q0FDSCxHQUNDLHdEQUF3RCxHQUN0RDtJQUFDO0lBQVE7SUFBVztJQUFRO0lBQVM7SUFBUTtDQUFPLENBQUM7QUFDN0Q7O0NBRUMsR0FDTSxTQUFTSztJQUNaLE1BQU1DLE1BQU0sQ0FBQztJQUNiLEtBQUssTUFBTUMsT0FBT0osMkJBQTRCO1FBQzFDLE1BQU1LLFFBQVFSLDZDQUFXLENBQUNPLElBQUk7UUFDOUIsSUFBSUMsVUFBVUMsV0FBVztZQUNyQjtRQUNKO1FBQ0EsSUFBSUQsTUFBTUUsVUFBVSxDQUFDLE9BQU87WUFFeEI7UUFDSjtRQUNBSixHQUFHLENBQUNDLElBQUksR0FBR0M7SUFDZjtJQUNBLE9BQU9GO0FBQ1g7QUFDQTs7OztDQUlDLEdBQ00sTUFBTUs7SUFDVEMsWUFBWUMsTUFBTSxDQUFFO1FBQ2hCLElBQUksQ0FBQ0MsZ0JBQWdCLEdBQUcsSUFBSUM7UUFDNUIsSUFBSSxDQUFDQyxXQUFXLEdBQUcsSUFBSWYsd0RBQVVBO1FBQ2pDLElBQUksQ0FBQ2dCLGFBQWEsR0FBR0o7SUFDekI7SUFDQTs7S0FFQyxHQUNELE1BQU1LLFFBQVE7UUFDVixJQUFJLElBQUksQ0FBQ0MsUUFBUSxFQUFFO1lBQ2YsTUFBTSxJQUFJQyxNQUFNO1FBQ3BCO1FBQ0EsT0FBTyxJQUFJQyxRQUFRLENBQUNDLFNBQVNDO1lBQ3pCLElBQUlDLElBQUlDLElBQUlDLElBQUlDLElBQUlDLElBQUlDO1lBQ3hCLElBQUksQ0FBQ1YsUUFBUSxHQUFHcEIseURBQUtBLENBQUMsSUFB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QUN0QztRQUNKO0lBQ0o7QUFDSjtBQUNBLFNBQVNlO0lBQ0wsT0FBTyxtREFBaUJyQztBQUM1QixFQUNBLGlDQUFpQyIsInNvdXJjZXMiOlsid2VicGFjazovL25leHRjaGF0Ly4vbm9kZV9tb2R1bGVzL0Btb2RlbGNvbnRleHRwcm90b2NvbC9zZGsvZGlzdC9jbGllbnQvc3RkaW8uanM/YzcxMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzcGF3biB9IGZyb20gXCJub2RlOmNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCBwcm9jZXNzIGZyb20gXCJub2RlOnByb2Nlc3NcIjtcbmltcG9ydCB7IFJlYWRCdWZmZXIsIHNlcmlhbGl6ZU1lc3NhZ2UgfSBmcm9tIFwiLi4vc2hhcmVkL3N0ZGlvLmpzXCI7XG4vKipcbiAqIEVudmlyb25tZW50IHZhcmlhYmxlcyB0byBpbmhlcml0IGJ5IGRlZmF1bHQsIGlmIGFuIGVudmlyb25tZW50IGlzIG5vdCBleHBsaWNpdGx5IGdpdmVuLlxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9JTkhFUklURURfRU5WX1ZBUlMgPSBwcm9jZXNzLnBsYXRmb3JtID09PSBcIndpbjMyXCJcbiAgICA/IFtcbiAgICAgICAgXCJBUFBEQVRBXCIsXG4gICAgICAgIFwiSE9NRURSSVZFXCIsXG4gICAgICAgIFwiSE9NRVBBVEhcIixcbiAgICAgICAgXCJMT0NBTEFQUERBVEFcIixcbiAgICAgICAgXCJQQVRIXCIsXG4gICAgICAgIFwiUFJPQ0VTU09SX0FSQ0hJVEVDVFVSRVwiLFxuICAgICAgICBcIlNZU1RFTURSSVZFXCIsXG4gICAgICAgIFwiU1lTVEVNUk9PVFwiLFxuICAgICAgICBcIlRFTVBcIixcbiAgICAgICAgXCJVU0VSTkFNRVwiLFxuICAgICAgICBcIlVTRVJQUk9GSUxFXCIsXG4gICAgXVxuICAgIDogLyogbGlzdCBpbnNwaXJlZCBieSB0aGUgZGVmYXVsdCBlbnYgaW5oZXJpdGFuY2Ugb2Ygc3VkbyAqL1xuICAgICAgICBbXCJIT01FXCIsIFwiTE9HTkFNRVwiLCBcIlBBVEhcIiwgXCJTSEVMTFwiLCBcIlRFUk1cIiwgXCJVU0VSXCJdO1xuLyoqXG4gKiBSZXR1cm5zIGEgZGVmYXVsdCBlbnZpcm9ubWVudCBvYmplY3QgaW5jbHVkaW5nIG9ubHkgZW52aXJvbm1lbnQgdmFyaWFibGVzIGRlZW1lZCBzYWZlIHRvIGluaGVyaXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0RW52aXJvbm1lbnQoKSB7XG4gICAgY29uc3QgZW52ID0ge307XG4gICAgZm9yIChjb25zdCBrZXkgb2YgREVGQVVMVF9JTkhFUklURURfRU5WX1ZBUlMpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBwcm9jZXNzLmVudltrZXldO1xuICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoXCIoKVwiKSkge1xuICAgICAgICAgICAgLy8gU2tpcCBmdW5jdGlvbnMsIHdoaWNoIGFyZSBhIHNlY3VyaXR5IHJpc2suXG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBlbnZba2V5XSA9IHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gZW52O1xufVxuLyoqXG4gKiBDbGllbnQgdHJhbnNwb3J0IGZvciBzdGRpbzogdGhpcyB3aWxsIGNvbm5lY3QgdG8gYSBzZXJ2ZXIgYnkgc3Bhd25pbmcgYSBwcm9jZXNzIGFuZCBjb21tdW5pY2F0aW5nIHdpdGggaXQgb3ZlciBzdGRpbi9zdGRvdXQuXG4gKlxuICogVGhpcyB0cmFuc3BvcnQgaXMgb25seSBhdmFpbGFibGUgaW4gTm9kZS5qcyBlbnZpcm9ubWVudHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBTdGRpb0NsaWVudFRyYW5zcG9ydCB7XG4gICAgY29uc3RydWN0b3Ioc2VydmVyKSB7XG4gICAgICAgIHRoaXMuX2Fib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICAgICAgdGhpcy5fcmVhZEJ1ZmZlciA9IG5ldyBSZWFkQnVmZmVyKCk7XG4gICAgICAgIHRoaXMuX3NlcnZlclBhcmFtcyA9IHNlcnZlcjtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU3RhcnRzIHRoZSBzZXJ2ZXIgcHJvY2VzcyBhbmQgcHJlcGFyZXMgdG8gY29tbXVuaWNhdGUgd2l0aCBpdC5cbiAgICAgKi9cbiAgICBhc3luYyBzdGFydCgpIHtcbiAgICAgICAgaWYgKHRoaXMuX3Byb2Nlc3MpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlN0ZGlvQ2xpZW50VHJhbnNwb3J0IGFscmVhZHkgc3RhcnRlZCEgSWYgdXNpbmcgQ2xpZW50IGNsYXNzLCBub3RlIHRoYXQgY29ubmVjdCgpIGNhbGxzIHN0YXJ0KCkgYXV0b21hdGljYWxseS5cIik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2UsIF9mO1xuICAgICAgICAgICAgdGhpcy5fcHJvY2VzcyA9IHNwYXduKHRoaXMuX3NlcnZlclBhcmFtcy5jb21tYW5kLCAoX2EgPSB0aGlzLl9zZXJ2ZXJQYXJhbXMuYXJncykgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogW10sIHtcbiAgICAgICAgICAgICAgICBlbnY6IChfYiA9IHRoaXMuX3NlcnZlclBhcmFtcy5lbnYpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IGdldERlZmF1bHRFbnZpcm9ubWVudCgpLFxuICAgICAgICAgICAgICAgIHN0ZGlvOiBbXCJwaXBlXCIsIFwicGlwZVwiLCAoX2MgPSB0aGlzLl9zZXJ2ZXJQYXJhbXMuc3RkZXJyKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiBcImluaGVyaXRcIl0sXG4gICAgICAgICAgICAgICAgc2hlbGw6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHNpZ25hbDogdGhpcy5fYWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgICAgICAgICAgICB3aW5kb3dzSGlkZTogcHJvY2Vzcy5wbGF0Zm9ybSA9PT0gXCJ3aW4zMlwiICYmIGlzRWxlY3Ryb24oKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5fcHJvY2Vzcy5vbihcImVycm9yXCIsIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICAgICAgaWYgKGVycm9yLm5hbWUgPT09IFwiQWJvcnRFcnJvclwiKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEV4cGVjdGVkIHdoZW4gY2xvc2UoKSBpcyBjYWxsZWQuXG4gICAgICAgICAgICAgICAgICAgIChfYSA9IHRoaXMub25jbG9zZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwodGhpcyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgICAgICAoX2IgPSB0aGlzLm9uZXJyb3IpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKHRoaXMsIGVycm9yKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5fcHJvY2Vzcy5vbihcInNwYXduXCIsICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuX3Byb2Nlc3Mub24oXCJjbG9zZVwiLCAoX2NvZGUpID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgdGhpcy5fcHJvY2VzcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAoX2EgPSB0aGlzLm9uY2xvc2UpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAoX2QgPSB0aGlzLl9wcm9jZXNzLnN0ZGluKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Qub24oXCJlcnJvclwiLCAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgKF9hID0gdGhpcy5vbmVycm9yKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbCh0aGlzLCBlcnJvcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIChfZSA9IHRoaXMuX3Byb2Nlc3Muc3Rkb3V0KSA9PT0gbnVsbCB8fCBfZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Uub24oXCJkYXRhXCIsIChjaHVuaykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3JlYWRCdWZmZXIuYXBwZW5kKGNodW5rKTtcbiAgICAgICAgICAgICAgICB0aGlzLnByb2Nlc3NSZWFkQnVmZmVyKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIChfZiA9IHRoaXMuX3Byb2Nlc3Muc3Rkb3V0KSA9PT0gbnVsbCB8fCBfZiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Yub24oXCJlcnJvclwiLCAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgKF9hID0gdGhpcy5vbmVycm9yKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbCh0aGlzLCBlcnJvcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFRoZSBzdGRlcnIgc3RyZWFtIG9mIHRoZSBjaGlsZCBwcm9jZXNzLCBpZiBgU3RkaW9TZXJ2ZXJQYXJhbWV0ZXJzLnN0ZGVycmAgd2FzIHNldCB0byBcInBpcGVcIiBvciBcIm92ZXJsYXBwZWRcIi5cbiAgICAgKlxuICAgICAqIFRoaXMgaXMgb25seSBhdmFpbGFibGUgYWZ0ZXIgdGhlIHByb2Nlc3MgaGFzIGJlZW4gc3RhcnRlZC5cbiAgICAgKi9cbiAgICBnZXQgc3RkZXJyKCkge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICByZXR1cm4gKF9iID0gKF9hID0gdGhpcy5fcHJvY2VzcykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnN0ZGVycikgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogbnVsbDtcbiAgICB9XG4gICAgcHJvY2Vzc1JlYWRCdWZmZXIoKSB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLl9yZWFkQnVmZmVyLnJlYWRNZXNzYWdlKCk7XG4gICAgICAgICAgICAgICAgaWYgKG1lc3NhZ2UgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIChfYSA9IHRoaXMub25tZXNzYWdlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbCh0aGlzLCBtZXNzYWdlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIChfYiA9IHRoaXMub25lcnJvcikgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwodGhpcywgZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGFzeW5jIGNsb3NlKCkge1xuICAgICAgICB0aGlzLl9hYm9ydENvbnRyb2xsZXIuYWJvcnQoKTtcbiAgICAgICAgdGhpcy5fcHJvY2VzcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5fcmVhZEJ1ZmZlci5jbGVhcigpO1xuICAgIH1cbiAgICBzZW5kKG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBpZiAoISgoX2EgPSB0aGlzLl9wcm9jZXNzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc3RkaW4pKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTm90IGNvbm5lY3RlZFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGpzb24gPSBzZXJpYWxpemVNZXNzYWdlKG1lc3NhZ2UpO1xuICAgICAgICAgICAgaWYgKHRoaXMuX3Byb2Nlc3Muc3RkaW4ud3JpdGUoanNvbikpIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9wcm9jZXNzLnN0ZGluLm9uY2UoXCJkcmFpblwiLCByZXNvbHZlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuZnVuY3Rpb24gaXNFbGVjdHJvbigpIHtcbiAgICByZXR1cm4gXCJ0eXBlXCIgaW4gcHJvY2Vzcztcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXN0ZGlvLmpzLm1hcCJdLCJuYW1lcyI6WyJzcGF3biIsInByb2Nlc3MiLCJSZWFkQnVmZmVyIiwic2VyaWFsaXplTWVzc2FnZSIsIkRFRkFVTFRfSU5IRVJJVEVEX0VOVl9WQVJTIiwicGxhdGZvcm0iLCJnZXREZWZhdWx0RW52aXJvbm1lbnQiLCJlbnYiLCJrZXkiLCJ2YWx1ZSIsInVuZGVmaW5lZCIsInN0YXJ0c1dpdGgiLCJTdGRpb0NsaWVudFRyYW5zcG9ydCIsImNvbnN0cnVjdG9yIiwic2VydmVyIiwiX2Fib3J0Q29udHJvbGxlciIsIkFib3J0Q29udHJvbGxlciIsIl9yZWFkQnVmZmVyIiwiX3NlcnZlclBhcmFtcyIsInN0YXJ0IiwiX3Byb2Nlc3MiLCJFcnJvciIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiX2EiLCJfYiIsIl9jIiwiX2QiLCJfZSIsIl9mIiwiY29tbWFuZCIsImFyZ3MiLCJzdGRpbyIsInN0ZGVyciIsInNoZWxsIiwic2lnbmFsIiwid2luZG93c0hpZGUiLCJpc0VsZWN0cm9uIiwib24iLCJlcnJvciIsIm5hbWUiLCJvbmNsb3NlIiwiY2FsbCIsIm9uZXJyb3IiLCJfY29kZSIsInN0ZGluIiwic3Rkb3V0IiwiY2h1bmsiLCJhcHBlbmQiLCJwcm9jZXNzUmVhZEJ1ZmZlciIsIm1lc3NhZ2UiLCJyZWFkTWVzc2FnZSIsIm9ubWVzc2FnZSIsImNsb3NlIiwiYWJvcnQiLCJjbGVhciIsInNlbmQiLCJqc29uIiwid3JpdGUiLCJvbmNlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(action-browser)/./node_modules/@modelcontextprotocol/sdk/dist/client/stdio.js\n"); /***/ }), /***/ "(action-browser)/./node_modules/@modelcontextprotocol/sdk/dist/shared/protocol.js": /*!************************************************************************!*\ !*** ./node_modules/@modelcontextprotocol/sdk/dist/shared/protocol.js ***! \************************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ DEFAULT_REQUEST_TIMEOUT_MSEC: () => (/* binding */ DEFAULT_REQUEST_TIMEOUT_MSEC),\n/* harmony export */ Protocol: () => (/* binding */ Protocol)\n/* harmony export */ });\n/* harmony import */ var _types_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../types.js */ \"(action-browser)/./node_modules/@modelcontextprotocol/sdk/dist/types.js\");\n\n/**\n * The default request timeout, in miliseconds.\n */ const DEFAULT_REQUEST_TIMEOUT_MSEC = 60000;\n/**\n * Implements MCP protocol framing on top of a pluggable transport, including\n * features like request/response linking, notifications, and progress.\n */ class Protocol {\n constructor(_options){\n this._options = _options;\n this._requestMessageId = 0;\n this._requestHandlers = new Map();\n this._requestHandlerAbortControllers = new Map();\n this._notificationHandlers = new Map();\n this._responseHandlers = new Map();\n this._progressHandlers = new Map();\n this.setNotificationHandler(_types_js__WEBPACK_IMPORTED_MODULE_0__.CancelledNotificationSchema, (notification)=>{\n const controller = this._requestHandlerAbortControllers.get(notification.params.requestId);\n controller === null || controller === void 0 ? void 0 : controller.abort(notification.params.reason);\n });\n this.setNotificationHandler(_types_js__WEBPACK_IMPORTED_MODULE_0__.ProgressNotificationSchema, (notification)=>{\n this._onprogress(notification);\n });\n this.setRequestHandler(_types_js__WEBPACK_IMPORTED_MODULE_0__.PingRequestSchema, // Automatic pong by default.\n (_request)=>({}));\n }\n /**\n * Attaches to the given transport, starts it, and starts listening for messages.\n *\n * The Protocol object assumes ownership of the Transport, replacing any callbacks that have already been set, and expects that it is the only user of the Transport instance going forward.\n */ async connect(transport) {\n this._transport = transport;\n this._transport.onclose = ()=>{\n this._onclose();\n };\n this._transport.onerror = (error)=>{\n this._onerror(error);\n };\n this._transport.onmessage = (message)=>{\n if (!(\"method\" in message)) {\n this._onresponse(message);\n } else if (\"id\" in message) {\n this._onrequest(message);\n } else {\n this._onnotification(message);\n }\n };\n await this._transport.start();\n }\n _onclose() {\n var _a;\n const responseHandlers = this._responseHandlers;\n this._responseHandlers = new Map();\n this._progressHandlers.clear();\n this._transport = undefined;\n (_a = this.onclose) === null || _a === void 0 ? void 0 : _a.call(this);\n const error = new _types_js__WEBPACK_IMPORTED_MODULE_0__.McpError(_types_js__WEBPACK_IMPORTED_MODULE_0__.ErrorCode.ConnectionClosed, \"Connection closed\");\n for (const handler of responseHandlers.values()){\n handler(error);\n }\n }\n _onerror(error) {\n var _a;\n (_a = this.onerror) === null || _a === void 0 ? void 0 : _a.call(this, error);\n }\n _onnotification(notification) {\n var _a;\n const handler = (_a = this._notificationHandlers.get(notification.method)) !== null && _a !== void 0 ? _a : this.fallbackNotificationHandler;\n // Ignore notifications not being subscribed to.\n if (handler === undefined) {\n return;\n }\n // Starting with Promise.resolve() puts any synchronous errors into the monad as well.\n Promise.resolve().then(()=>handler(notification)).catch((error)=>this._onerror(new Error(`Uncaught error in notification handler: ${error}`)));\n }\n _onrequest(request) {\n var _a, _b;\n const handler = (_a = this._requestHandlers.get(request.method)) !== null && _a !== void 0 ? _a : this.fallbackRequestHandler;\n if (handler === undefined) {\n (_b = this._transport) === null || _b === void 0 ? void 0 : _b.send({\n jsonrpc: \"2.0\",\n id: request.id,\n error: {\n code: _types_js__WEBPACK_IMPORTED_MODULE_0__.ErrorCode.MethodNotFound,\n message: \"Method not found\"\n }\n }).catch((error)=>this._onerror(new Error(`Failed to send an error response: ${error}`)));\n return;\n }\n const abortController = new AbortController();\n this._requestHandlerAbortControllers.set(request.id, abortController);\n // Starting with Promise.resolve() puts any synchronous errors into the monad as well.\n Promise.resolve().then(()=>handler(request, {\n signal: abortController.signal\n })).then((result)=>{\n var _a;\n if (abortController.signal.aborted) {\n return;\n }\n return (_a = this._transport) === null || _a === void 0 ? void 0 : _a.send({\n result,\n jsonrpc: \"2.0\",\n id: request.id\n });\n }, (error)=>{\n var _a, _b;\n if (abortController.signal.aborted) {\n return;\n }\n return (_a = this._transport) === null || _a === void 0 ? void 0 : _a.send({\n jsonrpc: \"2.0\",\n id: request.id,\n error: {\n code: Number.isSafeInteger(error[\"code\"]) ? error[\"code\"] : _types_js__WEBPACK_IMPORTED_MODULE_0__.ErrorCode.InternalError,\n message: (_b = error.message) !== null && _b !== void 0 ? _b : \"Internal error\"\n }\n });\n }).catch((error)=>this._onerror(new Error(`Failed to send response: ${error}`))).finally(()=>{\n this._requestHandlerAbortControllers.delete(request.id);\n });\n }\n _onprogress(notification) {\n const { progressToken, ...params } = notification.params;\n const handler = this._progressHandlers.get(Number(progressToken));\n if (handler === undefined) {\n this._onerror(new Error(`Received a progress notification for an unknown token: ${JSON.stringify(notification)}`));\n return;\n }\n handler(params);\n }\n _onresponse(response) {\n const messageId = response.id;\n const handler = this._responseHandlers.get(Number(messageId));\n if (handler === undefined) {\n this._onerror(new Error(`Received a response for an unknown message ID: ${JSON.stringify(response)}`));\n return;\n }\n this._responseHandlers.delete(Number(messageId));\n this._progressHandlers.delete(Number(messageId));\n if (\"result\" in response) {\n handler(response);\n } else {\n const error = new _types_js__WEBPACK_IMPORTED_MODULE_0__.McpError(response.error.code, response.error.message, response.error.data);\n handler(error);\n }\n }\n get transport() {\n return this._transport;\n }\n /**\n * Closes the connection.\n */ async close() {\n var _a;\n await ((_a = this._transport) === null || _a === void 0 ? void 0 : _a.close());\n }\n /**\n * Sends a request and wait for a response.\n *\n * Do not use this method to emit notifications! Use notification() instead.\n */ request(request, resultSchema, options) {\n return new Promise((resolve, reject)=>{\n var _a, _b, _c, _d;\n if (!this._transport) {\n reject(new Error(\"Not connected\"));\n return;\n }\n if (((_a = this._options) === null || _a === void 0 ? void 0 : _a.enforceStrictCapabilities) === true) {\n this.assertCapabilityForMethod(request.method);\n }\n (_b = options === null || options === void 0 ? void 0 : options.signal) === null || _b === void 0 ? void 0 : _b.throwIfAborted();\n const messageId = this._requestMessageId++;\n const jsonrpcRequest = {\n ...request,\n jsonrpc: \"2.0\",\n id: messageId\n };\n if (options === null || options === void 0 ? void 0 : options.onprogress) {\n this._progressHandlers.set(messageId, options.onprogress);\n jsonrpcRequest.params = {\n ...request.params,\n _meta: {\n progressToken: messageId\n }\n };\n }\n let timeoutId = undefined;\n this._responseHandlers.set(messageId, (response)=>{\n var _a;\n if (timeoutId !== undefined) {\n clearTimeout(timeoutId);\n }\n if ((_a = options === null || options === void 0 ? void 0 : options.signal) === null || _a === void 0 ? void 0 : _a.aborted) {\n return;\n }\n if (response instanceof Error) {\n return reject(response);\n }\n try {\n const result = resultSchema.parse(response.result);\n resolve(result);\n } catch (error) {\n reject(error);\n }\n });\n const cancel = (reason)=>{\n var _a;\n this._responseHandlers.delete(messageId);\n this._progressHandlers.delete(messageId);\n (_a = this._transport) === null || _a === void 0 ? void 0 : _a.send({\n jsonrpc: \"2.0\",\n method: \"notifications/cancelled\",\n params: {\n requestId: messageId,\n reason: String(reason)\n }\n }).catch((error)=>this._onerror(new Error(`Failed to send cancellation: ${error}`)));\n reject(reason);\n };\n (_c = options === null || options === void 0 ? void 0 : options.signal) === null || _c === void 0 ? void 0 : _c.addEventListener(\"abort\", ()=>{\n var _a;\n if (timeoutId !== undefined) {\n clearTimeout(timeoutId);\n }\n cancel((_a = options === null || options === void 0 ? void 0 : options.signal) === null || _a === void 0 ? void 0 : _a.reason);\n });\n const timeout = (_d = options === null || options === void 0 ? void 0 : options.timeout) !== null && _d !== void 0 ? _d : DEFAULT_REQUEST_TIMEOUT_MSEC;\n timeoutId = setTimeout(()=>cancel(new _types_js__WEBPACK_IMPORTED_MODULE_0__.McpError(_types_js__WEBPACK_IMPORTED_MODULE_0__.ErrorCode.RequestTimeout, \"Request timed out\", {\n timeout\n })), timeout);\n this._transport.send(jsonrpcRequest).catch((error)=>{\n if (timeoutId !== undefined) {\n clearTimeout(timeoutId);\n }\n reject(error);\n });\n });\n }\n /**\n * Emits a notification, which is a one-way message that does not expect a response.\n */ async notification(notification) {\n if (!this._transport) {\n throw new Error(\"Not connected\");\n }\n this.assertNotificationCapability(notification.method);\n const jsonrpcNotification = {\n ...notification,\n jsonrpc: \"2.0\"\n };\n await this._transport.send(jsonrpcNotification);\n }\n /**\n * Registers a handler to invoke when this protocol object receives a request with the given method.\n *\n * Note that this will replace any previous request handler for the same method.\n */ setRequestHandler(requestSchema, handler) {\n const method = requestSchema.shape.method.value;\n this.assertRequestHandlerCapability(method);\n this._requestHandlers.set(method, (request, extra)=>Promise.resolve(handler(requestSchema.parse(request), extra)));\n }\n /**\n * Removes the request handler for the given method.\n */ removeRequestHandler(method) {\n this._requestHandlers.delete(method);\n }\n /**\n * Registers a handler to invoke when this protocol object receives a notification with the given method.\n *\n * Note that this will replace any previous notification handler for the same method.\n */ setNotificationHandler(notificationSchema, handler) {\n this._notificationHandlers.set(notificationSchema.shape.method.value, (notification)=>Promise.resolve(handler(notificationSchema.parse(notification))));\n }\n /**\n * Removes the notification handler for the given method.\n */ removeNotificationHandler(method) {\n this._notificationHandlers.delete(method);\n }\n} //# sourceMappingURL=protocol.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFjdGlvbi1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AbW9kZWxjb250ZXh0cHJvdG9jb2wvc2RrL2Rpc3Qvc2hhcmVkL3Byb3RvY29sLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUErSDtBQUMvSDs7Q0FFQyxHQUNNLE1BQU1LLCtCQUErQixNQUFNO0FBQ2xEOzs7Q0FHQyxHQUNNLE1BQU1DO0lBQ1RDLFlBQVlDLFFBQVEsQ0FBRTtRQUNsQixJQUFJLENBQUNBLFFBQVEsR0FBR0E7UUFDaEIsSUFBSSxDQUFDQyxpQkFBaUIsR0FBRztRQUN6QixJQUFJLENBQUNDLGdCQUFnQixHQUFHLElBQUlDO1FBQzVCLElBQUksQ0FBQ0MsK0JBQStCLEdBQUcsSUFBSUQ7UUFDM0MsSUFBSSxDQUFDRSxxQkFBcUIsR0FBRyxJQUFJRjtRQUNqQyxJQUFJLENBQUNHLGlCQUFpQixHQUFHLElBQUlIO1FBQzdCLElBQUksQ0FBQ0ksaUJBQWlCLEdBQUcsSUFBSUo7UUFDN0IsSUFBSSxDQUFDSyxzQkFBc0IsQ0FBQ2hCLGtFQUEyQkEsRUFBRSxDQUFDaUI7WUFDdEQsTUFBTUMsYUFBYSxJQUFJLENBQUNOLCtCQUErQixDQUFDTyxHQUFHLENBQUNGLGFBQWFHLE1BQU0sQ0FBQ0MsU0FBUztZQUN6RkgsZUFBZSxRQUFRQSxlQUFlLEtBQUssSUFBSSxLQUFLLElBQUlBLFdBQVdJLEtBQUssQ0FBQ0wsYUFBYUcsTUFBTSxDQUFDRyxNQUFNO1FBQ3ZHO1FBQ0EsSUFBSSxDQUFDUCxzQkFBc0IsQ0FBQ1osaUVBQTBCQSxFQUFFLENBQUNhO1lBQ3JELElBQUksQ0FBQ08sV0FBVyxDQUFDUDtRQUNyQjtRQUNBLElBQUksQ0FBQ1EsaUJBQWlCLENBQUN0Qix3REFBaUJBLEVBQ3hDLDZCQUE2QjtRQUM3QixDQUFDdUIsV0FBYyxFQUFDO0lBQ3BCO0lBQ0E7Ozs7S0FJQyxHQUNELE1BQU1DLFFBQVFDLFNBQVMsRUFBRTtRQUNyQixJQUFJLENBQUNDLFVBQVUsR0FBR0Q7UUFDbEIsSUFBSSxDQUFD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SSxDQUFDL0IsVUFBVSxDQUFDOEIsSUFBSSxDQUFDNEM7SUFDL0I7SUFDQTs7OztLQUlDLEdBQ0Q5RSxrQkFBa0IrRSxhQUFhLEVBQUV6RCxPQUFPLEVBQUU7UUFDdEMsTUFBTUUsU0FBU3VELGNBQWNDLEtBQUssQ0FBQ3hELE1BQU0sQ0FBQ3lELEtBQUs7UUFDL0MsSUFBSSxDQUFDQyw4QkFBOEIsQ0FBQzFEO1FBQ3BDLElBQUksQ0FBQ3ZDLGdCQUFnQixDQUFDd0QsR0FBRyxDQUFDakIsUUFBUSxDQUFDTyxTQUFTb0QsUUFBVXpELFFBQVFDLE9BQU8sQ0FBQ0wsUUFBUXlELGNBQWNULEtBQUssQ0FBQ3ZDLFVBQVVvRDtJQUNoSDtJQUNBOztLQUVDLEdBQ0RDLHFCQUFxQjVELE1BQU0sRUFBRTtRQUN6QixJQUFJLENBQUN2QyxnQkFBZ0IsQ0FBQ2dFLE1BQU0sQ0FBQ3pCO0lBQ2pDO0lBQ0E7Ozs7S0FJQyxHQUNEakMsdUJBQXVCOEYsa0JBQWtCLEVBQUUvRCxPQUFPLEVBQUU7UUFDaEQsSUFBSSxDQUFDbEMscUJBQXFCLENBQUNxRCxHQUFHLENBQUM0QyxtQkFBbUJMLEtBQUssQ0FBQ3hELE1BQU0sQ0FBQ3lELEtBQUssRUFBRSxDQUFDekYsZUFBaUJrQyxRQUFRQyxPQUFPLENBQUNMLFFBQVErRCxtQkFBbUJmLEtBQUssQ0FBQzlFO0lBQzdJO0lBQ0E7O0tBRUMsR0FDRDhGLDBCQUEwQjlELE1BQU0sRUFBRTtRQUM5QixJQUFJLENBQUNwQyxxQkFBcUIsQ0FBQzZELE1BQU0sQ0FBQ3pCO0lBQ3RDO0FBQ0osRUFDQSxvQ0FBb0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9uZXh0Y2hhdC8uL25vZGVfbW9kdWxlcy9AbW9kZWxjb250ZXh0cHJvdG9jb2wvc2RrL2Rpc3Qvc2hhcmVkL3Byb3RvY29sLmpzPzg1NWYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2FuY2VsbGVkTm90aWZpY2F0aW9uU2NoZW1hLCBFcnJvckNvZGUsIE1jcEVycm9yLCBQaW5nUmVxdWVzdFNjaGVtYSwgUHJvZ3Jlc3NOb3RpZmljYXRpb25TY2hlbWEsIH0gZnJvbSBcIi4uL3R5cGVzLmpzXCI7XG4vKipcbiAqIFRoZSBkZWZhdWx0IHJlcXVlc3QgdGltZW91dCwgaW4gbWlsaXNlY29uZHMuXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX1JFUVVFU1RfVElNRU9VVF9NU0VDID0gNjAwMDA7XG4vKipcbiAqIEltcGxlbWVudHMgTUNQIHByb3RvY29sIGZyYW1pbmcgb24gdG9wIG9mIGEgcGx1Z2dhYmxlIHRyYW5zcG9ydCwgaW5jbHVkaW5nXG4gKiBmZWF0dXJlcyBsaWtlIHJlcXVlc3QvcmVzcG9uc2UgbGlua2luZywgbm90aWZpY2F0aW9ucywgYW5kIHByb2dyZXNzLlxuICovXG5leHBvcnQgY2xhc3MgUHJvdG9jb2wge1xuICAgIGNvbnN0cnVjdG9yKF9vcHRpb25zKSB7XG4gICAgICAgIHRoaXMuX29wdGlvbnMgPSBfb3B0aW9ucztcbiAgICAgICAgdGhpcy5fcmVxdWVzdE1lc3NhZ2VJZCA9IDA7XG4gICAgICAgIHRoaXMuX3JlcXVlc3RIYW5kbGVycyA9IG5ldyBNYXAoKTtcbiAgICAgICAgdGhpcy5fcmVxdWVzdEhhbmRsZXJBYm9ydENvbnRyb2xsZXJzID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25IYW5kbGVycyA9IG5ldyBNYXAoKTtcbiAgICAgICAgdGhpcy5fcmVzcG9uc2VIYW5kbGVycyA9IG5ldyBNYXAoKTtcbiAgICAgICAgdGhpcy5fcHJvZ3Jlc3NIYW5kbGVycyA9IG5ldyBNYXAoKTtcbiAgICAgICAgdGhpcy5zZXROb3RpZmljYXRpb25IYW5kbGVyKENhbmNlbGxlZE5vdGlmaWNhdGlvblNjaGVtYSwgKG5vdGlmaWNhdGlvbikgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29udHJvbGxlciA9IHRoaXMuX3JlcXVlc3RIYW5kbGVyQWJvcnRDb250cm9sbGVycy5nZXQobm90aWZpY2F0aW9uLnBhcmFtcy5yZXF1ZXN0SWQpO1xuICAgICAgICAgICAgY29udHJvbGxlciA9PT0gbnVsbCB8fCBjb250cm9sbGVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjb250cm9sbGVyLmFib3J0KG5vdGlmaWNhdGlvbi5wYXJhbXMucmVhc29uKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc2V0Tm90aWZpY2F0aW9uSGFuZGxlcihQcm9ncmVzc05vdGlmaWNhdGlvblNjaGVtYSwgKG5vdGlmaWNhdGlvbikgPT4ge1xuICAgICAgICAgICAgdGhpcy5fb25wcm9ncmVzcyhub3RpZmljYXRpb24pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zZXRSZXF1ZXN0SGFuZGxlcihQaW5nUmVxdWVzdFNjaGVtYSwgXG4gICAgICAgIC8vIEF1dG9tYXRpYyBwb25nIGJ5IGRlZmF1bHQuXG4gICAgICAgIChfcmVxdWVzdCkgPT4gKHt9KSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEF0dGFjaGVzIHRvIHRoZSBnaXZlbiB0cmFuc3BvcnQsIHN0YXJ0cyBpdCwgYW5kIHN0YXJ0cyBsaXN0ZW5pbmcgZm9yIG1lc3NhZ2VzLlxuICAgICAqXG4gICAgICogVGhlIFByb3RvY29sIG9iamVjdCBhc3N1bWVzIG93bmVyc2hpcCBvZiB0aGUgVHJhbnNwb3J0LCByZXBsYWNpbmcgYW55IGNhbGxiYWNrcyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIHNldCwgYW5kIGV4cGVjdHMgdGhhdCBpdCBpcyB0aGUgb25seSB1c2VyIG9mIHRoZSBUcmFuc3BvcnQgaW5zdGFuY2UgZ29pbmcgZm9yd2FyZC5cbiAgICAgKi9cbiAgICBhc3luYyBjb25uZWN0KHRyYW5zcG9ydCkge1xuICAgICAgICB0aGlzLl90cmFuc3BvcnQgPSB0cmFuc3BvcnQ7XG4gICAgICAgIHRoaXMuX3RyYW5zcG9ydC5vbmNsb3NlID0gKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fb25jbG9zZSgpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLl90cmFuc3BvcnQub25lcnJvciA9IChlcnJvcikgPT4ge1xuICAgICAgICAgICAgdGhpcy5fb25lcnJvcihlcnJvcik7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuX3RyYW5zcG9ydC5vbm1lc3NhZ2UgPSAobWVzc2FnZSkgPT4ge1xuICAgICAgICAgICAgaWYgKCEoXCJtZXRob2RcIiBpbiBtZXNzYWdlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX29ucmVzcG9uc2UobWVzc2FnZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChcImlkXCIgaW4gbWVzc2FnZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX29ucmVxdWVzdChtZXNzYWdlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX29ubm90aWZpY2F0aW9uKG1lc3NhZ2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBhd2FpdCB0aGlzLl90cmFuc3BvcnQuc3RhcnQoKTtcbiAgICB9XG4gICAgX29uY2xvc2UoKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2VIYW5kbGVycyA9IHRoaXMuX3Jlc3BvbnNlSGFuZGxlcnM7XG4gICAgICAgIHRoaXMuX3Jlc3BvbnNlSGFuZGxlcnMgPSBuZXcgTWFwKCk7XG4gICAgICAgIHRoaXMuX3Byb2dyZXNzSGFuZGxlcnMuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5fdHJhbnNwb3J0ID0gdW5kZWZpbmVkO1xuICAgICAgICAoX2EgPSB0aGlzLm9uY2xvc2UpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKHRoaXMpO1xuICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBNY3BFcnJvcihFcnJvckNvZGUuQ29ubmVjdGlvbkNsb3NlZCwgXCJDb25uZWN0aW9uIGNsb3NlZFwiKTtcbiAgICAgICAgZm9yIChjb25zdCBoYW5kbGVyIG9mIHJlc3BvbnNlSGFuZGxlcnMudmFsdWVzKCkpIHtcbiAgICAgICAgICAgIGhhbmRsZXIoZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuICAgIF9vbmVycm9yKGVycm9yKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgKF9hID0gdGhpcy5vbmVycm9yKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbCh0aGlzLCBlcnJvcik7XG4gICAgfVxuICAgIF9vbm5vdGlmaWNhdGlvbihub3RpZmljYXRpb24pIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCBoYW5kbGVyID0gKF9hID0gdGhpcy5fbm90aWZpY2F0aW9uSGFuZGxlcnMuZ2V0KG5vdGlmaWNhdGlvbi5tZXRob2QpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB0aGlzLmZhbGxiYWNrTm90aWZpY2F0aW9uSGFuZGxlcjtcbiAgICAgICAgLy8gSWdub3JlIG5vdGlmaWNhdGlvbnMgbm90IGJlaW5nIHN1YnNjcmliZWQgdG8uXG4gICAgICAgIGlmIChoYW5kbGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBTdGFydGluZyB3aXRoIFByb21pc2UucmVzb2x2ZSgpIHB1dHMgYW55IHN5bmNocm9ub3VzIGVycm9ycyBpbnRvIHRoZSBtb25hZCBhcyB3ZWxsLlxuICAgICAgICBQcm9taXNlLnJlc29sdmUoKVxuICAgICAgICAgICAgLnRoZW4oKCkgPT4gaGFuZGxlcihub3RpZmljYXRpb24pKVxuICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4gdGhpcy5fb25lcnJvcihuZXcgRXJyb3IoYFVuY2F1Z2h0IGVycm9yIGluIG5vdGlmaWNhdGlvbiBoYW5kbGVyOiAke2Vycm9yfWApKSk7XG4gICAgfVxuICAgIF9vbnJlcXVlc3QocmVxdWVzdCkge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICBjb25zdCBoYW5kbGVyID0gKF9hID0gdGhpcy5fcmVxdWVzdEhhbmRsZXJzLmdldChyZXF1ZXN0Lm1ldGhvZCkpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHRoaXMuZmFsbGJhY2tSZXF1ZXN0SGFuZGxlcjtcbiAgICAgICAgaWYgKGhhbmRsZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgKF9iID0gdGhpcy5fdHJhbnNwb3J0KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Iuc2VuZCh7XG4gICAgICAgICAgICAgICAganNvbnJwYzogXCIyLjBcIixcbiAgICAgICAgICAgICAgICBpZDogcmVxdWVzdC5pZCxcbiAgICAgICAgICAgICAgICBlcnJvcjoge1xuICAgICAgICAgICAgICAgICAgICBjb2RlOiBFcnJvckNvZGUuTWV0aG9kTm90Rm91bmQsXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IFwiTWV0aG9kIG5vdCBmb3VuZFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHRoaXMuX29uZXJyb3IobmV3IEVycm9yKGBGYWlsZWQgdG8gc2VuZCBhbiBlcnJvciByZXNwb25zZTogJHtlcnJvcn1gKSkpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICAgICAgdGhpcy5fcmVxdWVzdEhhbmRsZXJBYm9ydENvbnRyb2xsZXJzLnNldChyZXF1ZXN0LmlkLCBhYm9ydENvbnRyb2xsZXIpO1xuICAgICAgICAvLyBTdGFydGluZyB3aXRoIFByb21pc2UucmVzb2x2ZSgpIHB1dHMgYW55IHN5bmNocm9ub3VzIGVycm9ycyBpbnRvIHRoZSBtb25hZCBhcyB3ZWxsLlxuICAgICAgICBQcm9taXNlLnJlc29sdmUoKVxuICAgICAgICAgICAgLnRoZW4oKCkgPT4gaGFuZGxlcihyZXF1ZXN0LCB7IHNpZ25hbDogYWJvcnRDb250cm9sbGVyLnNpZ25hbCB9KSlcbiAgICAgICAgICAgIC50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIGlmIChhYm9ydENvbnRyb2xsZXIuc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gKF9hID0gdGhpcy5fdHJhbnNwb3J0KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc2VuZCh7XG4gICAgICAgICAgICAgICAgcmVzdWx0LFxuICAgICAgICAgICAgICAgIGpzb25ycGM6IFwiMi4wXCIsXG4gICAgICAgICAgICAgICAgaWQ6IHJlcXVlc3QuaWQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAgICAgaWYgKGFib3J0Q29udHJvbGxlci5zaWduYWwuYWJvcnRlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAoX2EgPSB0aGlzLl90cmFuc3BvcnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zZW5kKHtcbiAgICAgICAgICAgICAgICBqc29ucnBjOiBcIjIuMFwiLFxuICAgICAgICAgICAgICAgIGlkOiByZXF1ZXN0LmlkLFxuICAgICAgICAgICAgICAgIGVycm9yOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvZGU6IE51bWJlci5pc1NhZmVJbnRlZ2VyKGVycm9yW1wiY29kZVwiXSlcbiAgICAgICAgICAgICAgICAgICAgICAgID8gZXJyb3JbXCJjb2RlXCJdXG4gICAgICAgICAgICAgICAgICAgICAgICA6IEVycm9yQ29kZS5JbnRlcm5hbEVycm9yLFxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAoX2IgPSBlcnJvci5tZXNzYWdlKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBcIkludGVybmFsIGVycm9yXCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4gdGhpcy5fb25lcnJvcihuZXcgRXJyb3IoYEZhaWxlZCB0byBzZW5kIHJlc3BvbnNlOiAke2Vycm9yfWApKSlcbiAgICAgICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3JlcXVlc3RIYW5kbGVyQWJvcnRDb250cm9sbGVycy5kZWxldGUocmVxdWVzdC5pZCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBfb25wcm9ncmVzcyhub3RpZmljYXRpb24pIHtcbiAgICAgICAgY29uc3QgeyBwcm9ncmVzc1Rva2VuLCAuLi5wYXJhbXMgfSA9IG5vdGlmaWNhdGlvbi5wYXJhbXM7XG4gICAgICAgIGNvbnN0IGhhbmRsZXIgPSB0aGlzLl9wcm9ncmVzc0hhbmRsZXJzLmdldChOdW1iZXIocHJvZ3Jlc3NUb2tlbikpO1xuICAgICAgICBpZiAoaGFuZGxlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgUmVjZWl2ZWQgYSBwcm9ncmVzcyBub3RpZmljYXRpb24gZm9yIGFuIHVua25vd24gdG9rZW46ICR7SlNPTi5zdHJpbmdpZnkobm90aWZpY2F0aW9uKX1gKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaGFuZGxlcihwYXJhbXMpO1xuICAgIH1cbiAgICBfb25yZXNwb25zZShyZXNwb25zZSkge1xuICAgICAgICBjb25zdCBtZXNzYWdlSWQgPSByZXNwb25zZS5pZDtcbiAgICAgICAgY29uc3QgaGFuZGxlciA9IHRoaXMuX3Jlc3BvbnNlSGFuZGxlcnMuZ2V0KE51bWJlcihtZXNzYWdlSWQpKTtcbiAgICAgICAgaWYgKGhhbmRsZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5fb25lcnJvcihuZXcgRXJyb3IoYFJlY2VpdmVkIGEgcmVzcG9uc2UgZm9yIGFuIHVua25vd24gbWVzc2FnZSBJRDogJHtKU09OLnN0cmluZ2lmeShyZXNwb25zZSl9YCkpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3Jlc3BvbnNlSGFuZGxlcnMuZGVsZXRlKE51bWJlcihtZXNzYWdlSWQpKTtcbiAgICAgICAgdGhpcy5fcHJvZ3Jlc3NIYW5kbGVycy5kZWxldGUoTnVtYmVyKG1lc3NhZ2VJZCkpO1xuICAgICAgICBpZiAoXCJyZXN1bHRcIiBpbiByZXNwb25zZSkge1xuICAgICAgICAgICAgaGFuZGxlcihyZXNwb25zZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBNY3BFcnJvcihyZXNwb25zZS5lcnJvci5jb2RlLCByZXNwb25zZS5lcnJvci5tZXNzYWdlLCByZXNwb25zZS5lcnJvci5kYXRhKTtcbiAgICAgICAgICAgIGhhbmRsZXIoZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldCB0cmFuc3BvcnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90cmFuc3BvcnQ7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENsb3NlcyB0aGUgY29ubmVjdGlvbi5cbiAgICAgKi9cbiAgICBhc3luYyBjbG9zZSgpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBhd2FpdCAoKF9hID0gdGhpcy5fdHJhbnNwb3J0KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2xvc2UoKSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFNlbmRzIGEgcmVxdWVzdCBhbmQgd2FpdCBmb3IgYSByZXNwb25zZS5cbiAgICAgKlxuICAgICAqIERvIG5vdCB1c2UgdGhpcyBtZXRob2QgdG8gZW1pdCBub3RpZmljYXRpb25zISBVc2Ugbm90aWZpY2F0aW9uKCkgaW5zdGVhZC5cbiAgICAgKi9cbiAgICByZXF1ZXN0KHJlcXVlc3QsIHJlc3VsdFNjaGVtYSwgb3B0aW9ucykge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kO1xuICAgICAgICAgICAgaWYgKCF0aGlzLl90cmFuc3BvcnQpIHtcbiAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKFwiTm90IGNvbm5lY3RlZFwiKSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCgoX2EgPSB0aGlzLl9vcHRpb25zKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZW5mb3JjZVN0cmljdENhcGFiaWxpdGllcykgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFzc2VydENhcGFiaWxpdHlGb3JNZXRob2QocmVxdWVzdC5tZXRob2QpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgKF9iID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLnNpZ25hbCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnRocm93SWZBYm9ydGVkKCk7XG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlSWQgPSB0aGlzLl9yZXF1ZXN0TWVzc2FnZUlkKys7XG4gICAgICAgICAgICBjb25zdCBqc29ucnBjUmVxdWVzdCA9IHtcbiAgICAgICAgICAgICAgICAuLi5yZXF1ZXN0LFxuICAgICAgICAgICAgICAgIGpzb25ycGM6IFwiMi4wXCIsXG4gICAgICAgICAgICAgICAgaWQ6IG1lc3NhZ2VJZCxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAob3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLm9ucHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9wcm9ncmVzc0hhbmRsZXJzLnNldChtZXNzYWdlSWQsIG9wdGlvbnMub25wcm9ncmVzcyk7XG4gICAgICAgICAgICAgICAganNvbnJwY1JlcXVlc3QucGFyYW1zID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5yZXF1ZXN0LnBhcmFtcyxcbiAgICAgICAgICAgICAgICAgICAgX21ldGE6IHsgcHJvZ3Jlc3NUb2tlbjogbWVzc2FnZUlkIH0sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCB0aW1lb3V0SWQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB0aGlzLl9yZXNwb25zZUhhbmRsZXJzLnNldChtZXNzYWdlSWQsIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICBpZiAodGltZW91dElkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICgoX2EgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuc2lnbmFsKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuYWJvcnRlZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZSBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QocmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSByZXN1bHRTY2hlbWEucGFyc2UocmVzcG9uc2UucmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IGNhbmNlbCA9IChyZWFzb24pID0+IHtcbiAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVzcG9uc2VIYW5kbGVycy5kZWxldGUobWVzc2FnZUlkKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9wcm9ncmVzc0hhbmRsZXJzLmRlbGV0ZShtZXNzYWdlSWQpO1xuICAgICAgICAgICAgICAgIChfYSA9IHRoaXMuX3RyYW5zcG9ydCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnNlbmQoe1xuICAgICAgICAgICAgICAgICAgICBqc29ucnBjOiBcIjIuMFwiLFxuICAgICAgICAgICAgICAgICAgICBtZXRob2Q6IFwibm90aWZpY2F0aW9ucy9jYW5jZWxsZWRcIixcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SWQ6IG1lc3NhZ2VJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlYXNvbjogU3RyaW5nKHJlYXNvbiksXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB0aGlzLl9vbmVycm9yKG5ldyBFcnJvcihgRmFpbGVkIHRvIHNlbmQgY2FuY2VsbGF0aW9uOiAke2Vycm9yfWApKSk7XG4gICAgICAgICAgICAgICAgcmVqZWN0KHJlYXNvbik7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgKF9jID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLnNpZ25hbCkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLmFkZEV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIGlmICh0aW1lb3V0SWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FuY2VsKChfYSA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5zaWduYWwpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5yZWFzb24pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb25zdCB0aW1lb3V0ID0gKF9kID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLnRpbWVvdXQpICE9PSBudWxsICYmIF9kICE9PSB2b2lkIDAgPyBfZCA6IERFRkFVTFRfUkVRVUVTVF9USU1FT1VUX01TRUM7XG4gICAgICAgICAgICB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IGNhbmNlbChuZXcgTWNwRXJyb3IoRXJyb3JDb2RlLlJlcXVlc3RUaW1lb3V0LCBcIlJlcXVlc3QgdGltZWQgb3V0XCIsIHtcbiAgICAgICAgICAgICAgICB0aW1lb3V0LFxuICAgICAgICAgICAgfSkpLCB0aW1lb3V0KTtcbiAgICAgICAgICAgIHRoaXMuX3RyYW5zcG9ydC5zZW5kKGpzb25ycGNSZXF1ZXN0KS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGltZW91dElkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEVtaXRzIGEgbm90aWZpY2F0aW9uLCB3aGljaCBpcyBhIG9uZS13YXkgbWVzc2FnZSB0aGF0IGRvZXMgbm90IGV4cGVjdCBhIHJlc3BvbnNlLlxuICAgICAqL1xuICAgIGFzeW5jIG5vdGlmaWNhdGlvbihub3RpZmljYXRpb24pIHtcbiAgICAgICAgaWYgKCF0aGlzLl90cmFuc3BvcnQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vdCBjb25uZWN0ZWRcIik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hc3NlcnROb3RpZmljYXRpb25DYXBhYmlsaXR5KG5vdGlmaWNhdGlvbi5tZXRob2QpO1xuICAgICAgICBjb25zdCBqc29ucnBjTm90aWZpY2F0aW9uID0ge1xuICAgICAgICAgICAgLi4ubm90aWZpY2F0aW9uLFxuICAgICAgICAgICAganNvbnJwYzogXCIyLjBcIixcbiAgICAgICAgfTtcbiAgICAgICAgYXdhaXQgdGhpcy5fdHJhbnNwb3J0LnNlbmQoanNvbnJwY05vdGlmaWNhdGlvbik7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJlZ2lzdGVycyBhIGhhbmRsZXIgdG8gaW52b2tlIHdoZW4gdGhpcyBwcm90b2NvbCBvYmplY3QgcmVjZWl2ZXMgYSByZXF1ZXN0IHdpdGggdGhlIGdpdmVuIG1ldGhvZC5cbiAgICAgKlxuICAgICAqIE5vdGUgdGhhdCB0aGlzIHdpbGwgcmVwbGFjZSBhbnkgcHJldmlvdXMgcmVxdWVzdCBoYW5kbGVyIGZvciB0aGUgc2FtZSBtZXRob2QuXG4gICAgICovXG4gICAgc2V0UmVxdWVzdEhhbmRsZXIocmVxdWVzdFNjaGVtYSwgaGFuZGxlcikge1xuICAgICAgICBjb25zdCBtZXRob2QgPSByZXF1ZXN0U2NoZW1hLnNoYXBlLm1ldGhvZC52YWx1ZTtcbiAgICAgICAgdGhpcy5hc3NlcnRSZXF1ZXN0SGFuZGxlckNhcGFiaWxpdHkobWV0aG9kKTtcbiAgICAgICAgdGhpcy5fcmVxdWVzdEhhbmRsZXJzLnNldChtZXRob2QsIChyZXF1ZXN0LCBleHRyYSkgPT4gUHJvbWlzZS5yZXNvbHZlKGhhbmRsZXIocmVxdWVzdFNjaGVtYS5wYXJzZShyZXF1ZXN0KSwgZXh0cmEpKSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgdGhlIHJlcXVlc3QgaGFuZGxlciBmb3IgdGhlIGdpdmVuIG1ldGhvZC5cbiAgICAgKi9cbiAgICByZW1vdmVSZXF1ZXN0SGFuZGxlcihtZXRob2QpIHtcbiAgICAgICAgdGhpcy5fcmVxdWVzdEhhbmRsZXJzLmRlbGV0ZShtZXRob2QpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZWdpc3RlcnMgYSBoYW5kbGVyIHRvIGludm9rZSB3aGVuIHRoaXMgcHJvdG9jb2wgb2JqZWN0IHJlY2VpdmVzIGEgbm90aWZpY2F0aW9uIHdpdGggdGhlIGdpdmVuIG1ldGhvZC5cbiAgICAgKlxuICAgICAqIE5vdGUgdGhhdCB0aGlzIHdpbGwgcmVwbGFjZSBhbnkgcHJldmlvdXMgbm90aWZpY2F0aW9uIGhhbmRsZXIgZm9yIHRoZSBzYW1lIG1ldGhvZC5cbiAgICAgKi9cbiAgICBzZXROb3RpZmljYXRpb25IYW5kbGVyKG5vdGlmaWNhdGlvblNjaGVtYSwgaGFuZGxlcikge1xuICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25IYW5kbGVycy5zZXQobm90aWZpY2F0aW9uU2NoZW1hLnNoYXBlLm1ldGhvZC52YWx1ZSwgKG5vdGlmaWNhdGlvbikgPT4gUHJvbWlzZS5yZXNvbHZlKGhhbmRsZXIobm90aWZpY2F0aW9uU2NoZW1hLnBhcnNlKG5vdGlmaWNhdGlvbikpKSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgdGhlIG5vdGlmaWNhdGlvbiBoYW5kbGVyIGZvciB0aGUgZ2l2ZW4gbWV0aG9kLlxuICAgICAqL1xuICAgIHJlbW92ZU5vdGlmaWNhdGlvbkhhbmRsZXIobWV0aG9kKSB7XG4gICAgICAgIHRoaXMuX25vdGlmaWNhdGlvbkhhbmRsZXJzLmRlbGV0ZShtZXRob2QpO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXByb3RvY29sLmpzLm1hcCJdLCJuYW1lcyI6WyJDYW5jZWxsZWROb3RpZmljYXRpb25TY2hlbWEiLCJFcnJvckNvZGUiLCJNY3BFcnJvciIsIlBpbmdSZXF1ZXN0U2NoZW1hIiwiUHJvZ3Jlc3NOb3RpZmljYXRpb25TY2hlbWEiLCJERUZBVUxUX1JFUVVFU1RfVElNRU9VVF9NU0VDIiwiUHJvdG9jb2wiLCJjb25zdHJ1Y3RvciIsIl9vcHRpb25zIiwiX3JlcXVlc3RNZXNzYWdlSWQiLCJfcmVxdWVzdEhhbmRsZXJzIiwiTWFwIiwiX3JlcXVlc3RIYW5kbGVyQWJvcnRDb250cm9sbGVycyIsIl9ub3RpZmljYXRpb25IYW5kbGVycyIsIl9yZXNwb25zZUhhbmRsZXJzIiwiX3Byb2dyZXNzSGFuZGxlcnMiLCJzZXROb3RpZmljYXRpb25IYW5kbGVyIiwibm90aWZpY2F0aW9uIiwiY29udHJvbGxlciIsImdldCIsInBhcmFtcyIsInJlcXVlc3RJZCIsImFib3J0IiwicmVhc29uIiwiX29ucHJvZ3Jlc3MiLCJzZXRSZXF1ZXN0SGFuZGxlciIsIl9yZXF1ZXN0IiwiY29ubmVjdCIsInRyYW5zcG9ydCIsIl90cmFuc3BvcnQiLCJvbmNsb3NlIiwiX29uY2xvc2UiLCJvbmVycm9yIiwiZXJyb3IiLCJfb25lcnJvciIsIm9ubWVzc2FnZSIsIm1lc3NhZ2UiLCJfb25yZXNwb25zZSIsIl9vbnJlcXVlc3QiLCJfb25ub3RpZmljYXRpb24iLCJzdGFydCIsIl9hIiwicmVzcG9uc2VIYW5kbGVycyIsImNsZWFyIiwidW5kZWZpbmVkIiwiY2FsbCIsIkNvbm5lY3Rpb25DbG9zZWQiLCJoYW5kbGVyIiwidmFsdWVzIiwibWV0aG9kIiwiZmFsbGJhY2tOb3RpZmljYXRpb25IYW5kbGVyIiwiUHJvbWlzZSIsInJlc29sdmUiLCJ0aGVuIiwiY2F0Y2giLCJFcnJvciIsInJlcXVlc3QiLCJfYiIsImZhbGxiYWNrUmVxdWVzdEhhbmRsZXIiLCJzZW5kIiwianNvbnJwYyIsImlkIiwiY29kZSIsIk1ldGhvZE5vdEZvdW5kIiwiYWJvcnRDb250cm9sbGVyIiwiQWJvcnRDb250cm9sbGVyIiwic2V0Iiwic2lnbmFsIiwicmVzdWx0IiwiYWJvcnRlZCIsIk51bWJlciIsImlzU2FmZUludGVnZXIiLCJJbnRlcm5hbEVycm9yIiwiZmluYWxseSIsImRlbGV0ZSIsInByb2dyZXNzVG9rZW4iLCJKU09OIiwic3RyaW5naWZ5IiwicmVzcG9uc2UiLCJtZXNzYWdlSWQiLCJkYXRhIiwiY2xvc2UiLCJyZXN1bHRTY2hlbWEiLCJvcHRpb25zIiwicmVqZWN0IiwiX2MiLCJfZCIsImVuZm9yY2VTdHJpY3RDYXBhYmlsaXRpZXMiLCJhc3NlcnRDYXBhYmlsaXR5Rm9yTWV0aG9kIiwidGhyb3dJZkFib3J0ZWQiLCJqc29ucnBjUmVxdWVzdCIsIm9ucHJvZ3Jlc3MiLCJfbWV0YSIsInRpbWVvdXRJZCIsImNsZWFyVGltZW91dCIsInBhcnNlIiwiY2FuY2VsIiwiU3RyaW5nIiwiYWRkRXZlbnRMaXN0ZW5lciIsInRpbWVvdXQiLCJzZXRUaW1lb3V0IiwiUmVxdWVzdFRpbWVvdXQiLCJhc3NlcnROb3RpZmljYXRpb25DYXBhYmlsaXR5IiwianNvbnJwY05vdGlmaWNhdGlvbiIsInJlcXVlc3RTY2hlbWEiLCJzaGFwZSIsInZhbHVlIiwiYXNzZXJ0UmVxdWVzdEhhbmRsZXJDYXBhYmlsaXR5IiwiZXh0cmEiLCJyZW1vdmVSZXF1ZXN0SGFuZGxlciIsIm5vdGlmaWNhdGlvblNjaGVtYSIsInJlbW92ZU5vdGlmaWNhdGlvbkhhbmRsZXIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(action-browser)/./node_modules/@modelcontextprotocol/sdk/dist/shared/protocol.js\n"); /***/ }), /***/ "(action-browser)/./node_modules/@modelcontextprotocol/sdk/dist/shared/stdio.js": /*!*********************************************************************!*\ !*** ./node_modules/@modelcontextprotocol/sdk/dist/shared/stdio.js ***! \*********************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ReadBuffer: () => (/* binding */ ReadBuffer),\n/* harmony export */ deserializeMessage: () => (/* binding */ deserializeMessage),\n/* harmony export */ serializeMessage: () => (/* binding */ serializeMessage)\n/* harmony export */ });\n/* harmony import */ var _types_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../types.js */ \"(action-browser)/./node_modules/@modelcontextprotocol/sdk/dist/types.js\");\n\n/**\n * Buffers a continuous stdio stream into discrete JSON-RPC messages.\n */ class ReadBuffer {\n append(chunk) {\n this._buffer = this._buffer ? Buffer.concat([\n this._buffer,\n chunk\n ]) : chunk;\n }\n readMessage() {\n if (!this._buffer) {\n return null;\n }\n const index = this._buffer.indexOf(\"\\n\");\n if (index === -1) {\n return null;\n }\n const line = this._buffer.toString(\"utf8\", 0, index);\n this._buffer = this._buffer.subarray(index + 1);\n return deserializeMessage(line);\n }\n clear() {\n this._buffer = undefined;\n }\n}\nfunction deserializeMessage(line) {\n return _types_js__WEBPACK_IMPORTED_MODULE_0__.JSONRPCMessageSchema.parse(JSON.parse(line));\n}\nfunction serializeMessage(message) {\n return JSON.stringify(message) + \"\\n\";\n} //# sourceMappingURL=stdio.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFjdGlvbi1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AbW9kZWxjb250ZXh0cHJvdG9jb2wvc2RrL2Rpc3Qvc2hhcmVkL3N0ZGlvLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBbUQ7QUFDbkQ7O0NBRUMsR0FDTSxNQUFNQztJQUNUQyxPQUFPQyxLQUFLLEVBQUU7UUFDVixJQUFJLENBQUNDLE9BQU8sR0FBRyxJQUFJLENBQUNBLE9BQU8sR0FBR0MsT0FBT0MsTUFBTSxDQUFDO1lBQUMsSUFBSSxDQUFDRixPQUFPO1lBQUVEO1NBQU0sSUFBSUE7SUFDekU7SUFDQUksY0FBYztRQUNWLElBQUksQ0FBQyxJQUFJLENBQUNILE9BQU8sRUFBRTtZQUNmLE9BQU87UUFDWDtRQUNBLE1BQU1JLFFBQVEsSUFBSSxDQUFDSixPQUFPLENBQUNLLE9BQU8sQ0FBQztRQUNuQyxJQUFJRCxVQUFVLENBQUMsR0FBRztZQUNkLE9BQU87UUFDWDtRQUNBLE1BQU1FLE9BQU8sSUFBSSxDQUFDTixPQUFPLENBQUNPLFFBQVEsQ0FBQyxRQUFRLEdBQUdIO1FBQzlDLElBQUksQ0FBQ0osT0FBTyxHQUFHLElBQUksQ0FBQ0EsT0FBTyxDQUFDUSxRQUFRLENBQUNKLFFBQVE7UUFDN0MsT0FBT0ssbUJBQW1CSDtJQUM5QjtJQUNBSSxRQUFRO1FBQ0osSUFBSSxDQUFDVixPQUFPLEdBQUdXO0lBQ25CO0FBQ0o7QUFDTyxTQUFTRixtQkFBbUJILElBQUk7SUFDbkMsT0FBT1YsMkRBQW9CQSxDQUFDZ0IsS0FBSyxDQUFDQyxLQUFLRCxLQUFLLENBQUNOO0FBQ2pEO0FBQ08sU0FBU1EsaUJBQWlCQyxPQUFPO0lBQ3BDLE9BQU9GLEtBQUtHLFNBQVMsQ0FBQ0QsV0FBVztBQUNyQyxFQUNBLGlDQUFpQyIsInNvdXJjZXMiOlsid2VicGFjazovL25leHRjaGF0Ly4vbm9kZV9tb2R1bGVzL0Btb2RlbGNvbnRleHRwcm90b2NvbC9zZGsvZGlzdC9zaGFyZWQvc3RkaW8uanM/M2IwNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBKU09OUlBDTWVzc2FnZVNjaGVtYSB9IGZyb20gXCIuLi90eXBlcy5qc1wiO1xuLyoqXG4gKiBCdWZmZXJzIGEgY29udGludW91cyBzdGRpbyBzdHJlYW0gaW50byBkaXNjcmV0ZSBKU09OLVJQQyBtZXNzYWdlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIFJlYWRCdWZmZXIge1xuICAgIGFwcGVuZChjaHVuaykge1xuICAgICAgICB0aGlzLl9idWZmZXIgPSB0aGlzLl9idWZmZXIgPyBCdWZmZXIuY29uY2F0KFt0aGlzLl9idWZmZXIsIGNodW5rXSkgOiBjaHVuaztcbiAgICB9XG4gICAgcmVhZE1lc3NhZ2UoKSB7XG4gICAgICAgIGlmICghdGhpcy5fYnVmZmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuX2J1ZmZlci5pbmRleE9mKFwiXFxuXCIpO1xuICAgICAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsaW5lID0gdGhpcy5fYnVmZmVyLnRvU3RyaW5nKFwidXRmOFwiLCAwLCBpbmRleCk7XG4gICAgICAgIHRoaXMuX2J1ZmZlciA9IHRoaXMuX2J1ZmZlci5zdWJhcnJheShpbmRleCArIDEpO1xuICAgICAgICByZXR1cm4gZGVzZXJpYWxpemVNZXNzYWdlKGxpbmUpO1xuICAgIH1cbiAgICBjbGVhcigpIHtcbiAgICAgICAgdGhpcy5fYnVmZmVyID0gdW5kZWZpbmVkO1xuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBkZXNlcmlhbGl6ZU1lc3NhZ2UobGluZSkge1xuICAgIHJldHVybiBKU09OUlBDTWVzc2FnZVNjaGVtYS5wYXJzZShKU09OLnBhcnNlKGxpbmUpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemVNZXNzYWdlKG1lc3NhZ2UpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkgKyBcIlxcblwiO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c3RkaW8uanMubWFwIl0sIm5hbWVzIjpbIkpTT05SUENNZXNzYWdlU2NoZW1hIiwiUmVhZEJ1ZmZlciIsImFwcGVuZCIsImNodW5rIiwiX2J1ZmZlciIsIkJ1ZmZlciIsImNvbmNhdCIsInJlYWRNZXNzYWdlIiwiaW5kZXgiLCJpbmRleE9mIiwibGluZSIsInRvU3RyaW5nIiwic3ViYXJyYXkiLCJkZXNlcmlhbGl6ZU1lc3NhZ2UiLCJjbGVhciIsInVuZGVmaW5lZCIsInBhcnNlIiwiSlNPTiIsInNlcmlhbGl6ZU1lc3NhZ2UiLCJtZXNzYWdlIiwic3RyaW5naWZ5Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(action-browser)/./node_modules/@modelcontextprotocol/sdk/dist/shared/stdio.js\n"); /***/ }), /***/ "(action-browser)/./node_modules/@modelcontextprotocol/sdk/dist/types.js": /*!**************************************************************!*\ !*** ./node_modules/@modelcontextprotocol/sdk/dist/types.js ***! \**************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BlobResourceContentsSchema: () => (/* binding */ BlobResourceContentsSchema),\n/* harmony export */ CallToolRequestSchema: () => (/* binding */ CallToolRequestSchema),\n/* harmony export */ CallToolResultSchema: () => (/* binding */ CallToolResultSchema),\n/* harmony export */ CancelledNotificationSchema: () => (/* binding */ CancelledNotificationSchema),\n/* harmony export */ ClientCapabilitiesSchema: () => (/* binding */ ClientCapabilitiesSchema),\n/* harmony export */ ClientNotificationSchema: () => (/* binding */ ClientNotificationSchema),\n/* harmony export */ ClientRequestSchema: () => (/* binding */ ClientRequestSchema),\n/* harmony export */ ClientResultSchema: () => (/* binding */ ClientResultSchema),\n/* harmony export */ CompatibilityCallToolResultSchema: () => (/* binding */ CompatibilityCallToolResultSchema),\n/* harmony export */ CompleteRequestSchema: () => (/* binding */ CompleteRequestSchema),\n/* harmony export */ CompleteResultSchema: () => (/* binding */ CompleteResultSchema),\n/* harmony export */ CreateMessageRequestSchema: () => (/* binding */ CreateMessageRequestSchema),\n/* harmony export */ CreateMessageResultSchema: () => (/* binding */ CreateMessageResultSchema),\n/* harmony export */ CursorSchema: () => (/* binding */ CursorSchema),\n/* harmony export */ EmbeddedResourceSchema: () => (/* binding */ EmbeddedResourceSchema),\n/* harmony export */ EmptyResultSchema: () => (/* binding */ EmptyResultSchema),\n/* harmony export */ ErrorCode: () => (/* binding */ ErrorCode),\n/* harmony export */ GetPromptRequestSchema: () => (/* binding */ GetPromptRequestSchema),\n/* harmony export */ GetPromptResultSchema: () => (/* binding */ GetPromptResultSchema),\n/* harmony export */ ImageContentSchema: () => (/* binding */ ImageContentSchema),\n/* harmony export */ ImplementationSchema: () => (/* binding */ ImplementationSchema),\n/* harmony export */ InitializeRequestSchema: () => (/* binding */ InitializeRequestSchema),\n/* harmony export */ InitializeResultSchema: () => (/* binding */ InitializeResultSchema),\n/* harmony export */ InitializedNotificationSchema: () => (/* binding */ InitializedNotificationSchema),\n/* harmony export */ JSONRPCErrorSchema: () => (/* binding */ JSONRPCErrorSchema),\n/* harmony export */ JSONRPCMessageSchema: () => (/* binding */ JSONRPCMessageSchema),\n/* harmony export */ JSONRPCNotificationSchema: () => (/* binding */ JSONRPCNotificationSchema),\n/* harmony export */ JSONRPCRequestSchema: () => (/* binding */ JSONRPCRequestSchema),\n/* harmony export */ JSONRPCResponseSchema: () => (/* binding */ JSONRPCResponseSchema),\n/* harmony export */ JSONRPC_VERSION: () => (/* binding */ JSONRPC_VERSION),\n/* harmony export */ LATEST_PROTOCOL_VERSION: () => (/* binding */ LATEST_PROTOCOL_VERSION),\n/* harmony export */ ListPromptsRequestSchema: () => (/* binding */ ListPromptsRequestSchema),\n/* harmony export */ ListPromptsResultSchema: () => (/* binding */ ListPromptsResultSchema),\n/* harmony export */ ListResourceTemplatesRequestSchema: () => (/* binding */ ListResourceTemplatesRequestSchema),\n/* harmony export */ ListResourceTemplatesResultSchema: () => (/* binding */ ListResourceTemplatesResultSchema),\n/* harmony export */ ListResourcesRequestSchema: () => (/* binding */ ListResourcesRequestSchema),\n/* harmony export */ ListResourcesResultSchema: () => (/* binding */ ListResourcesResultSchema),\n/* harmony export */ ListRootsRequestSchema: () => (/* binding */ ListRootsRequestSchema),\n/* harmony export */ ListRootsResultSchema: () => (/* binding */ ListRootsResultSchema),\n/* harmony export */ ListToolsRequestSchema: () => (/* binding */ ListToolsRequestSchema),\n/* harmony export */ ListToolsResultSchema: () => (/* binding */ ListToolsResultSchema),\n/* harmony export */ LoggingLevelSchema: () => (/* binding */ LoggingLevelSchema),\n/* harmony export */ LoggingMessageNotificationSchema: () => (/* binding */ LoggingMessageNotificationSchema),\n/* harmony export */ McpError: () => (/* binding */ McpError),\n/* harmony export */ ModelHintSchema: () => (/* binding */ ModelHintSchema),\n/* harmony export */ ModelPreferencesSchema: () => (/* binding */ ModelPreferencesSchema),\n/* harmony export */ NotificationSchema: () => (/* binding */ NotificationSchema),\n/* harmony export */ PaginatedRequestSchema: () => (/* binding */ PaginatedRequestSchema),\n/* harmony export */ PaginatedResultSchema: () => (/* binding */ PaginatedResultSchema),\n/* harmony export */ PingRequestSchema: () => (/* binding */ PingRequestSchema),\n/* harmony export */ ProgressNotificationSchema: () => (/* binding */ ProgressNotificationSchema),\n/* harmony export */ ProgressSchema: () => (/* binding */ ProgressSchema),\n/* harmony export */ ProgressTokenSchema: () => (/* binding */ ProgressTokenSchema),\n/* harmony export */ PromptArgumentSchema: () => (/* binding */ PromptArgumentSchema),\n/* harmony export */ PromptListChangedNotificationSchema: () => (/* binding */ PromptListChangedNotificationSchema),\n/* harmony export */ PromptMessageSchema: () => (/* binding */ PromptMessageSchema),\n/* harmony export */ PromptReferenceSchema: () => (/* binding */ PromptReferenceSchema),\n/* harmony export */ PromptSchema: () => (/* binding */ PromptSchema),\n/* harmony export */ ReadResourceRequestSchema: () => (/* binding */ ReadResourceRequestSchema),\n/* harmony export */ ReadResourceResultSchema: () => (/* binding */ ReadResourceResultSchema),\n/* harmony export */ RequestIdSchema: () => (/* binding */ RequestIdSchema),\n/* harmony export */ RequestSchema: () => (/* binding */ RequestSchema),\n/* harmony export */ ResourceContentsSchema: () => (/* binding */ ResourceContentsSchema),\n/* harmony export */ ResourceListChangedNotificationSchema: () => (/* binding */ ResourceListChangedNotificationSchema),\n/* harmony export */ ResourceReferenceSchema: () => (/* binding */ ResourceReferenceSchema),\n/* harmony export */ ResourceSchema: () => (/* binding */ ResourceSchema),\n/* harmony export */ ResourceTemplateSchema: () => (/* binding */ ResourceTemplateSchema),\n/* harmony export */ ResourceUpdatedNotificationSchema: () => (/* binding */ ResourceUpdatedNotificationSchema),\n/* harmony export */ ResultSchema: () => (/* binding */ ResultSchema),\n/* harmony export */ RootSchema: () => (/* binding */ RootSchema),\n/* harmony export */ RootsListChangedNotificationSchema: () => (/* binding */ RootsListChangedNotificationSchema),\n/* harmony export */ SUPPORTED_PROTOCOL_VERSIONS: () => (/* binding */ SUPPORTED_PROTOCOL_VERSIONS),\n/* harmony export */ SamplingMessageSchema: () => (/* binding */ SamplingMessageSchema),\n/* harmony export */ ServerCapabilitiesSchema: () => (/* binding */ ServerCapabilitiesSchema),\n/* harmony export */ ServerNotificationSchema: () => (/* binding */ ServerNotificationSchema),\n/* harmony export */ ServerRequestSchema: () => (/* binding */ ServerRequestSchema),\n/* harmony export */ ServerResultSchema: () => (/* binding */ ServerResultSchema),\n/* harmony export */ SetLevelRequestSchema: () => (/* binding */ SetLevelRequestSchema),\n/* harmony export */ SubscribeRequestSchema: () => (/* binding */ SubscribeRequestSchema),\n/* harmony export */ TextContentSchema: () => (/* binding */ TextContentSchema),\n/* harmony export */ TextResourceContentsSchema: () => (/* binding */ TextResourceContentsSchema),\n/* harmony export */ ToolListChangedNotificationSchema: () => (/* binding */ ToolListChangedNotificationSchema),\n/* harmony export */ ToolSchema: () => (/* binding */ ToolSchema),\n/* harmony export */ UnsubscribeRequestSchema: () => (/* binding */ UnsubscribeRequestSchema)\n/* harmony export */ });\n/* harmony import */ var zod__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! zod */ \"(action-browser)/./node_modules/zod/lib/index.mjs\");\n\nconst LATEST_PROTOCOL_VERSION = \"2024-11-05\";\nconst SUPPORTED_PROTOCOL_VERSIONS = [\n LATEST_PROTOCOL_VERSION,\n \"2024-10-07\"\n];\n/* JSON-RPC types */ const JSONRPC_VERSION = \"2.0\";\n/**\n * A progress token, used to associate progress notifications with the original request.\n */ const ProgressTokenSchema = zod__WEBPACK_IMPORTED_MODULE_0__.z.union([\n zod__WEBPACK_IMPORTED_MODULE_0__.z.string(),\n zod__WEBPACK_IMPORTED_MODULE_0__.z.number().int()\n]);\n/**\n * An opaque token used to represent a cursor for pagination.\n */ const CursorSchema = zod__WEBPACK_IMPORTED_MODULE_0__.z.string();\nconst BaseRequestParamsSchema = zod__WEBPACK_IMPORTED_MODULE_0__.z.object({\n _meta: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(zod__WEBPACK_IMPORTED_MODULE_0__.z.object({\n /**\n * If specified, the caller is requesting out-of-band progress notifications for this request (as represented by notifications/progress). The value of this parameter is an opaque token that will be attached to any subsequent notifications. The receiver is not obligated to provide these notifications.\n */ progressToken: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(ProgressTokenSchema)\n }).passthrough())\n}).passthrough();\nconst RequestSchema = zod__WEBPACK_IMPORTED_MODULE_0__.z.object({\n method: zod__WEBPACK_IMPORTED_MODULE_0__.z.string(),\n params: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(BaseRequestParamsSchema)\n});\nconst BaseNotificationParamsSchema = zod__WEBPACK_IMPORTED_MODULE_0__.z.object({\n /**\n * This parameter name is reserved by MCP to allow clients and servers to attach additional metadata to their notifications.\n */ _meta: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(zod__WEBPACK_IMPORTED_MODULE_0__.z.object({}).passthrough())\n}).passthrough();\nconst NotificationSchema = zod__WEBPACK_IMPORTED_MODULE_0__.z.object({\n method: zod__WEBPACK_IMPORTED_MODULE_0__.z.string(),\n params: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(BaseNotificationParamsSchema)\n});\nconst ResultSchema = zod__WEBPACK_IMPORTED_MODULE_0__.z.object({\n /**\n * This result property is reserved by the protocol to allow clients and servers to attach additional metadata to their responses.\n */ _meta: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(zod__WEBPACK_IMPORTED_MODULE_0__.z.object({}).passthrough())\n}).passthrough();\n/**\n * A uniquely identifying ID for a request in JSON-RPC.\n */ const RequestIdSchema = zod__WEBPACK_IMPORTED_MODULE_0__.z.union([\n zod__WEBPACK_IMPORTED_MODULE_0__.z.string(),\n zod__WEBPACK_IMPORTED_MODULE_0__.z.number().int()\n]);\n/**\n * A request that expects a response.\n */ const JSONRPCRequestSchema = zod__WEBPACK_IMPORTED_MODULE_0__.z.object({\n jsonrpc: zod__WEBPACK_IMPORTED_MODULE_0__.z.literal(JSONRPC_VERSION),\n id: RequestIdSchema\n}).merge(RequestSchema).strict();\n/**\n * A notification which does not expect a response.\n */ const JSONRPCNotificationSchema = zod__WEBPACK_IMPORTED_MODULE_0__.z.object({\n jsonrpc: zod__WEBPACK_IMPORTED_MODULE_0__.z.literal(JSONRPC_VERSION)\n}).merge(NotificationSchema).strict();\n/**\n * A successful (non-error) response to a request.\n */ const JSONRPCResponseSchema = zod__WEBPACK_IMPORTED_MODULE_0__.z.object({\n jsonrpc: zod__WEBPACK_IMPORTED_MODULE_0__.z.literal(JSONRPC_VERSION),\n id: RequestIdSchema,\n result: ResultSchema\n}).strict();\n/**\n * An incomplete set of error codes that may appear in JSON-RPC responses.\n */ var ErrorCode;\n(function(ErrorCode) {\n // SDK error codes\n ErrorCode[ErrorCode[\"ConnectionClosed\"] = -1] = \"ConnectionClosed\";\n ErrorCode[ErrorCode[\"RequestTimeout\"] = -2] = \"RequestTimeout\";\n // Standard JSON-RPC error codes\n ErrorCode[ErrorCode[\"ParseError\"] = -32700] = \"ParseError\";\n ErrorCode[ErrorCode[\"InvalidRequest\"] = -32600] = \"InvalidRequest\";\n ErrorCode[ErrorCode[\"MethodNotFound\"] = -32601] = \"MethodNotFound\";\n ErrorCode[ErrorCode[\"InvalidParams\"] = -32602] = \"InvalidParams\";\n ErrorCode[ErrorCode[\"InternalError\"] = -32603] = \"InternalError\";\n})(ErrorCode || (ErrorCode = {}));\n/**\n * A response to a request that indicates an error occurred.\n */ const JSONRPCErrorSchema = zod__WEBPACK_IMPORTED_MODULE_0__.z.object({\n jsonrpc: zod__WEBPACK_IMPORTED_MODULE_0__.z.literal(JSONRPC_VERSION),\n id: RequestIdSchema,\n error: zod__WEBPACK_IMPORTED_MODULE_0__.z.object({\n /**\n * The error type that occurred.\n */ code: zod__WEBPACK_IMPORTED_MODULE_0__.z.number().int(),\n /**\n * A short description of the error. The message SHOULD be limited to a concise single sentence.\n */ message: zod__WEBPACK_IMPORTED_MODULE_0__.z.string(),\n /**\n * Additional information about the error. The value of this member is defined by the sender (e.g. detailed error information, nested errors etc.).\n */ data: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(zod__WEBPACK_IMPORTED_MODULE_0__.z.unknown())\n })\n}).strict();\nconst JSONRPCMessageSchema = zod__WEBPACK_IMPORTED_MODULE_0__.z.union([\n JSONRPCRequestSchema,\n JSONRPCNotificationSchema,\n JSONRPCResponseSchema,\n JSONRPCErrorSchema\n]);\n/* Empty result */ /**\n * A response that indicates success but carries no data.\n */ const EmptyResultSchema = ResultSchema.strict();\n/* Cancellation */ /**\n * This notification can be sent by either side to indicate that it is cancelling a previously-issued request.\n *\n * The request SHOULD still be in-flight, but due to communication latency, it is always possible that this notification MAY arrive after the request has already finished.\n *\n * This notification indicates that the result will be unused, so any associated processing SHOULD cease.\n *\n * A client MUST NOT attempt to cancel its `initialize` request.\n */ const CancelledNotificationSchema = NotificationSchema.extend({\n method: zod__WEBPACK_IMPORTED_MODULE_0__.z.literal(\"notifications/cancelled\"),\n params: BaseNotificationParamsSchema.extend({\n /**\n * The ID of the request to cancel.\n *\n * This MUST correspond to the ID of a request previously issued in the same direction.\n */ requestId: RequestIdSchema,\n /**\n * An optional string describing the reason for the cancellation. This MAY be logged or presented to the user.\n */ reason: zod__WEBPACK_IMPORTED_MODULE_0__.z.string().optional()\n })\n});\n/* Initialization */ /**\n * Describes the name and version of an MCP implementation.\n */ const ImplementationSchema = zod__WEBPACK_IMPORTED_MODULE_0__.z.object({\n name: zod__WEBPACK_IMPORTED_MODULE_0__.z.string(),\n version: zod__WEBPACK_IMPORTED_MODULE_0__.z.string()\n}).passthrough();\n/**\n * Capabilities a client may support. Known capabilities are defined here, in this schema, but this is not a closed set: any client can define its own, additional capabilities.\n */ const ClientCapabilitiesSchema = zod__WEBPACK_IMPORTED_MODULE_0__.z.object({\n /**\n * Experimental, non-standard capabilities that the client supports.\n */ experimental: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(zod__WEBPACK_IMPORTED_MODULE_0__.z.object({}).passthrough()),\n /**\n * Present if the client supports sampling from an LLM.\n */ sampling: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(zod__WEBPACK_IMPORTED_MODULE_0__.z.object({}).passthrough()),\n /**\n * Present if the client supports listing roots.\n */ roots: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(zod__WEBPACK_IMPORTED_MODULE_0__.z.object({\n /**\n * Whether the client supports issuing notifications for changes to the roots list.\n */ listChanged: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(zod__WEBPACK_IMPORTED_MODULE_0__.z.boolean())\n }).passthrough())\n}).passthrough();\n/**\n * This request is sent from the client to the server when it first connects, asking it to begin initialization.\n */ const InitializeRequestSchema = RequestSchema.extend({\n method: zod__WEBPACK_IMPORTED_MODULE_0__.z.literal(\"initialize\"),\n params: BaseRequestParamsSchema.extend({\n /**\n * The latest version of the Model Context Protocol that the client supports. The client MAY decide to support older versions as well.\n */ protocolVersion: zod__WEBPACK_IMPORTED_MODULE_0__.z.string(),\n capabilities: ClientCapabilitiesSchema,\n clientInfo: ImplementationSchema\n })\n});\n/**\n * Capabilities that a server may support. Known capabilities are defined here, in this schema, but this is not a closed set: any server can define its own, additional capabilities.\n */ const ServerCapabilitiesSchema = zod__WEBPACK_IMPORTED_MODULE_0__.z.object({\n /**\n * Experimental, non-standard capabilities that the server supports.\n */ experimental: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(zod__WEBPACK_IMPORTED_MODULE_0__.z.object({}).passthrough()),\n /**\n * Present if the server supports sending log messages to the client.\n */ logging: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(zod__WEBPACK_IMPORTED_MODULE_0__.z.object({}).passthrough()),\n /**\n * Present if the server offers any prompt templates.\n */ prompts: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(zod__WEBPACK_IMPORTED_MODULE_0__.z.object({\n /**\n * Whether this server supports issuing notifications for changes to the prompt list.\n */ listChanged: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(zod__WEBPACK_IMPORTED_MODULE_0__.z.boolean())\n }).passthrough()),\n /**\n * Present if the server offers any resources to read.\n */ resources: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(zod__WEBPACK_IMPORTED_MODULE_0__.z.object({\n /**\n * Whether this server supports clients subscribing to resource updates.\n */ subscribe: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(zod__WEBPACK_IMPORTED_MODULE_0__.z.boolean()),\n /**\n * Whether this server supports issuing notifications for changes to the resource list.\n */ listChanged: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(zod__WEBPACK_IMPORTED_MODULE_0__.z.boolean())\n }).passthrough()),\n /**\n * Present if the server offers any tools to call.\n */ tools: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(zod__WEBPACK_IMPORTED_MODULE_0__.z.object({\n /**\n * Whether this server supports issuing notifications for changes to the tool list.\n */ listChanged: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(zod__WEBPACK_IMPORTED_MODULE_0__.z.boolean())\n }).passthrough())\n}).passthrough();\n/**\n * After receiving an initialize request from the client, the server sends this response.\n */ const InitializeResultSchema = ResultSchema.extend({\n /**\n * The version of the Model Context Protocol that the server wants to use. This may not match the version that the client requested. If the client cannot support this version, it MUST disconnect.\n */ protocolVersion: zod__WEBPACK_IMPORTED_MODULE_0__.z.string(),\n capabilities: ServerCapabilitiesSchema,\n serverInfo: ImplementationSchema\n});\n/**\n * This notification is sent from the client to the server after initialization has finished.\n */ const InitializedNotificationSchema = NotificationSchema.extend({\n method: zod__WEBPACK_IMPORTED_MODULE_0__.z.literal(\"notifications/initialized\")\n});\n/* Ping */ /**\n * A ping, issued by either the server or the client, to check that the other party is still alive. The receiver must promptly respond, or else may be disconnected.\n */ const PingRequestSchema = RequestSchema.extend({\n method: zod__WEBPACK_IMPORTED_MODULE_0__.z.literal(\"ping\")\n});\n/* Progress notifications */ const ProgressSchema = zod__WEBPACK_IMPORTED_MODULE_0__.z.object({\n /**\n * The progress thus far. This should increase every time progress is made, even if the total is unknown.\n */ progress: zod__WEBPACK_IMPORTED_MODULE_0__.z.number(),\n /**\n * Total number of items to process (or total progress required), if known.\n */ total: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(zod__WEBPACK_IMPORTED_MODULE_0__.z.number())\n}).passthrough();\n/**\n * An out-of-band notification used to inform the receiver of a progress update for a long-running request.\n */ const ProgressNotificationSchema = NotificationSchema.extend({\n method: zod__WEBPACK_IMPORTED_MODULE_0__.z.literal(\"notifications/progress\"),\n params: BaseNotificationParamsSchema.merge(ProgressSchema).extend({\n /**\n * The progress token which was given in the initial request, used to associate this notification with the request that is proceeding.\n */ progressToken: ProgressTokenSchema\n })\n});\n/* Pagination */ const PaginatedRequestSchema = RequestSchema.extend({\n params: BaseRequestParamsSchema.extend({\n /**\n * An opaque token representing the current pagination position.\n * If provided, the server should return results starting after this cursor.\n */ cursor: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(CursorSchema)\n }).optional()\n});\nconst PaginatedResultSchema = ResultSchema.extend({\n /**\n * An opaque token representing the pagination position after the last returned result.\n * If present, there may be more results available.\n */ nextCursor: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(CursorSchema)\n});\n/* Resources */ /**\n * The contents of a specific resource or sub-resource.\n */ const ResourceContentsSchema = zod__WEBPACK_IMPORTED_MODULE_0__.z.object({\n /**\n * The URI of this resource.\n */ uri: zod__WEBPACK_IMPORTED_MODULE_0__.z.string(),\n /**\n * The MIME type of this resource, if known.\n */ mimeType: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(zod__WEBPACK_IMPORTED_MODULE_0__.z.string())\n}).passthrough();\nconst TextResourceContentsSchema = ResourceContentsSchema.extend({\n /**\n * The text of the item. This must only be set if the item can actually be represented as text (not binary data).\n */ text: zod__WEBPACK_IMPORTED_MODULE_0__.z.string()\n});\nconst BlobResourceContentsSchema = ResourceContentsSchema.extend({\n /**\n * A base64-encoded string representing the binary data of the item.\n */ blob: zod__WEBPACK_IMPORTED_MODULE_0__.z.string().base64()\n});\n/**\n * A known resource that the server is capable of reading.\n */ const ResourceSchema = zod__WEBPACK_IMPORTED_MODULE_0__.z.object({\n /**\n * The URI of this resource.\n */ uri: zod__WEBPACK_IMPORTED_MODULE_0__.z.string(),\n /**\n * A human-readable name for this resource.\n *\n * This can be used by clients to populate UI elements.\n */ name: zod__WEBPACK_IMPORTED_MODULE_0__.z.string(),\n /**\n * A description of what this resource represents.\n *\n * This can be used by clients to improve the LLM's understanding of available resources. It can be thought of like a \"hint\" to the model.\n */ description: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(zod__WEBPACK_IMPORTED_MODULE_0__.z.string()),\n /**\n * The MIME type of this resource, if known.\n */ mimeType: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(zod__WEBPACK_IMPORTED_MODULE_0__.z.string())\n}).passthrough();\n/**\n * A template description for resources available on the server.\n */ const ResourceTemplateSchema = zod__WEBPACK_IMPORTED_MODULE_0__.z.object({\n /**\n * A URI template (according to RFC 6570) that can be used to construct resource URIs.\n */ uriTemplate: zod__WEBPACK_IMPORTED_MODULE_0__.z.string(),\n /**\n * A human-readable name for the type of resource this template refers to.\n *\n * This can be used by clients to populate UI elements.\n */ name: zod__WEBPACK_IMPORTED_MODULE_0__.z.string(),\n /**\n * A description of what this template is for.\n *\n * This can be used by clients to improve the LLM's understanding of available resources. It can be thought of like a \"hint\" to the model.\n */ description: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(zod__WEBPACK_IMPORTED_MODULE_0__.z.string()),\n /**\n * The MIME type for all resources that match this template. This should only be included if all resources matching this template have the same type.\n */ mimeType: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(zod__WEBPACK_IMPORTED_MODULE_0__.z.string())\n}).passthrough();\n/**\n * Sent from the client to request a list of resources the server has.\n */ const ListResourcesRequestSchema = PaginatedRequestSchema.extend({\n method: zod__WEBPACK_IMPORTED_MODULE_0__.z.literal(\"resources/list\")\n});\n/**\n * The server's response to a resources/list request from the client.\n */ const ListResourcesResultSchema = PaginatedResultSchema.extend({\n resources: zod__WEBPACK_IMPORTED_MODULE_0__.z.array(ResourceSchema)\n});\n/**\n * Sent from the client to request a list of resource templates the server has.\n */ const ListResourceTemplatesRequestSchema = PaginatedRequestSchema.extend({\n method: zod__WEBPACK_IMPORTED_MODULE_0__.z.literal(\"resources/templates/list\")\n});\n/**\n * The server's response to a resources/templates/list request from the client.\n */ const ListResourceTemplatesResultSchema = PaginatedResultSchema.extend({\n resourceTemplates: zod__WEBPACK_IMPORTED_MODULE_0__.z.array(ResourceTemplateSchema)\n});\n/**\n * Sent from the client to the server, to read a specific resource URI.\n */ const ReadResourceRequestSchema = RequestSchema.extend({\n method: zod__WEBPACK_IMPORTED_MODULE_0__.z.literal(\"resources/read\"),\n params: BaseRequestParamsSchema.extend({\n /**\n * The URI of the resource to read. The URI can use any protocol; it is up to the server how to interpret it.\n */ uri: zod__WEBPACK_IMPORTED_MODULE_0__.z.string()\n })\n});\n/**\n * The server's response to a resources/read request from the client.\n */ const ReadResourceResultSchema = ResultSchema.extend({\n contents: zod__WEBPACK_IMPORTED_MODULE_0__.z.array(zod__WEBPACK_IMPORTED_MODULE_0__.z.union([\n TextResourceContentsSchema,\n BlobResourceContentsSchema\n ]))\n});\n/**\n * An optional notification from the server to the client, informing it that the list of resources it can read from has changed. This may be issued by servers without any previous subscription from the client.\n */ const ResourceListChangedNotificationSchema = NotificationSchema.extend({\n method: zod__WEBPACK_IMPORTED_MODULE_0__.z.literal(\"notifications/resources/list_changed\")\n});\n/**\n * Sent from the client to request resources/updated notifications from the server whenever a particular resource changes.\n */ const SubscribeRequestSchema = RequestSchema.extend({\n method: zod__WEBPACK_IMPORTED_MODULE_0__.z.literal(\"resources/subscribe\"),\n params: BaseRequestParamsSchema.extend({\n /**\n * The URI of the resource to subscribe to. The URI can use any protocol; it is up to the server how to interpret it.\n */ uri: zod__WEBPACK_IMPORTED_MODULE_0__.z.string()\n })\n});\n/**\n * Sent from the client to request cancellation of resources/updated notifications from the server. This should follow a previous resources/subscribe request.\n */ const UnsubscribeRequestSchema = RequestSchema.extend({\n method: zod__WEBPACK_IMPORTED_MODULE_0__.z.literal(\"resources/unsubscribe\"),\n params: BaseRequestParamsSchema.extend({\n /**\n * The URI of the resource to unsubscribe from.\n */ uri: zod__WEBPACK_IMPORTED_MODULE_0__.z.string()\n })\n});\n/**\n * A notification from the server to the client, informing it that a resource has changed and may need to be read again. This should only be sent if the client previously sent a resources/subscribe request.\n */ const ResourceUpdatedNotificationSchema = NotificationSchema.extend({\n method: zod__WEBPACK_IMPORTED_MODULE_0__.z.literal(\"notifications/resources/updated\"),\n params: BaseNotificationParamsSchema.extend({\n /**\n * The URI of the resource that has been updated. This might be a sub-resource of the one that the client actually subscribed to.\n */ uri: zod__WEBPACK_IMPORTED_MODULE_0__.z.string()\n })\n});\n/* Prompts */ /**\n * Describes an argument that a prompt can accept.\n */ const PromptArgumentSchema = zod__WEBPACK_IMPORTED_MODULE_0__.z.object({\n /**\n * The name of the argument.\n */ name: zod__WEBPACK_IMPORTED_MODULE_0__.z.string(),\n /**\n * A human-readable description of the argument.\n */ description: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(zod__WEBPACK_IMPORTED_MODULE_0__.z.string()),\n /**\n * Whether this argument must be provided.\n */ required: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(zod__WEBPACK_IMPORTED_MODULE_0__.z.boolean())\n}).passthrough();\n/**\n * A prompt or prompt template that the server offers.\n */ const PromptSchema = zod__WEBPACK_IMPORTED_MODULE_0__.z.object({\n /**\n * The name of the prompt or prompt template.\n */ name: zod__WEBPACK_IMPORTED_MODULE_0__.z.string(),\n /**\n * An optional description of what this prompt provides\n */ description: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(zod__WEBPACK_IMPORTED_MODULE_0__.z.string()),\n /**\n * A list of arguments to use for templating the prompt.\n */ arguments: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(zod__WEBPACK_IMPORTED_MODULE_0__.z.array(PromptArgumentSchema))\n}).passthrough();\n/**\n * Sent from the client to request a list of prompts and prompt templates the server has.\n */ const ListPromptsRequestSchema = PaginatedRequestSchema.extend({\n method: zod__WEBPACK_IMPORTED_MODULE_0__.z.literal(\"prompts/list\")\n});\n/**\n * The server's response to a prompts/list request from the client.\n */ const ListPromptsResultSchema = PaginatedResultSchema.extend({\n prompts: zod__WEBPACK_IMPORTED_MODULE_0__.z.array(PromptSchema)\n});\n/**\n * Used by the client to get a prompt provided by the server.\n */ const GetPromptRequestSchema = RequestSchema.extend({\n method: zod__WEBPACK_IMPORTED_MODULE_0__.z.literal(\"prompts/get\"),\n params: BaseRequestParamsSchema.extend({\n /**\n * The name of the prompt or prompt template.\n */ name: zod__WEBPACK_IMPORTED_MODULE_0__.z.string(),\n /**\n * Arguments to use for templating the prompt.\n */ arguments: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(zod__WEBPACK_IMPORTED_MODULE_0__.z.record(zod__WEBPACK_IMPORTED_MODULE_0__.z.string()))\n })\n});\n/**\n * Text provided to or from an LLM.\n */ const TextContentSchema = zod__WEBPACK_IMPORTED_MODULE_0__.z.object({\n type: zod__WEBPACK_IMPORTED_MODULE_0__.z.literal(\"text\"),\n /**\n * The text content of the message.\n */ text: zod__WEBPACK_IMPORTED_MODULE_0__.z.string()\n}).passthrough();\n/**\n * An image provided to or from an LLM.\n */ const ImageContentSchema = zod__WEBPACK_IMPORTED_MODULE_0__.z.object({\n type: zod__WEBPACK_IMPORTED_MODULE_0__.z.literal(\"image\"),\n /**\n * The base64-encoded image data.\n */ data: zod__WEBPACK_IMPORTED_MODULE_0__.z.string().base64(),\n /**\n * The MIME type of the image. Different providers may support different image types.\n */ mimeType: zod__WEBPACK_IMPORTED_MODULE_0__.z.string()\n}).passthrough();\n/**\n * The contents of a resource, embedded into a prompt or tool call result.\n */ const EmbeddedResourceSchema = zod__WEBPACK_IMPORTED_MODULE_0__.z.object({\n type: zod__WEBPACK_IMPORTED_MODULE_0__.z.literal(\"resource\"),\n resource: zod__WEBPACK_IMPORTED_MODULE_0__.z.union([\n TextResourceContentsSchema,\n BlobResourceContentsSchema\n ])\n}).passthrough();\n/**\n * Describes a message returned as part of a prompt.\n */ const PromptMessageSchema = zod__WEBPACK_IMPORTED_MODULE_0__.z.object({\n role: zod__WEBPACK_IMPORTED_MODULE_0__.z.enum([\n \"user\",\n \"assistant\"\n ]),\n content: zod__WEBPACK_IMPORTED_MODULE_0__.z.union([\n TextContentSchema,\n ImageContentSchema,\n EmbeddedResourceSchema\n ])\n}).passthrough();\n/**\n * The server's response to a prompts/get request from the client.\n */ const GetPromptResultSchema = ResultSchema.extend({\n /**\n * An optional description for the prompt.\n */ description: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(zod__WEBPACK_IMPORTED_MODULE_0__.z.string()),\n messages: zod__WEBPACK_IMPORTED_MODULE_0__.z.array(PromptMessageSchema)\n});\n/**\n * An optional notification from the server to the client, informing it that the list of prompts it offers has changed. This may be issued by servers without any previous subscription from the client.\n */ const PromptListChangedNotificationSchema = NotificationSchema.extend({\n method: zod__WEBPACK_IMPORTED_MODULE_0__.z.literal(\"notifications/prompts/list_changed\")\n});\n/* Tools */ /**\n * Definition for a tool the client can call.\n */ const ToolSchema = zod__WEBPACK_IMPORTED_MODULE_0__.z.object({\n /**\n * The name of the tool.\n */ name: zod__WEBPACK_IMPORTED_MODULE_0__.z.string(),\n /**\n * A human-readable description of the tool.\n */ description: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(zod__WEBPACK_IMPORTED_MODULE_0__.z.string()),\n /**\n * A JSON Schema object defining the expected parameters for the tool.\n */ inputSchema: zod__WEBPACK_IMPORTED_MODULE_0__.z.object({\n type: zod__WEBPACK_IMPORTED_MODULE_0__.z.literal(\"object\"),\n properties: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(zod__WEBPACK_IMPORTED_MODULE_0__.z.object({}).passthrough())\n }).passthrough()\n}).passthrough();\n/**\n * Sent from the client to request a list of tools the server has.\n */ const ListToolsRequestSchema = PaginatedRequestSchema.extend({\n method: zod__WEBPACK_IMPORTED_MODULE_0__.z.literal(\"tools/list\")\n});\n/**\n * The server's response to a tools/list request from the client.\n */ const ListToolsResultSchema = PaginatedResultSchema.extend({\n tools: zod__WEBPACK_IMPORTED_MODULE_0__.z.array(ToolSchema)\n});\n/**\n * The server's response to a tool call.\n */ const CallToolResultSchema = ResultSchema.extend({\n content: zod__WEBPACK_IMPORTED_MODULE_0__.z.array(zod__WEBPACK_IMPORTED_MODULE_0__.z.union([\n TextContentSchema,\n ImageContentSchema,\n EmbeddedResourceSchema\n ])),\n isError: zod__WEBPACK_IMPORTED_MODULE_0__.z.boolean().default(false).optional()\n});\n/**\n * CallToolResultSchema extended with backwards compatibility to protocol version 2024-10-07.\n */ const CompatibilityCallToolResultSchema = CallToolResultSchema.or(ResultSchema.extend({\n toolResult: zod__WEBPACK_IMPORTED_MODULE_0__.z.unknown()\n}));\n/**\n * Used by the client to invoke a tool provided by the server.\n */ const CallToolRequestSchema = RequestSchema.extend({\n method: zod__WEBPACK_IMPORTED_MODULE_0__.z.literal(\"tools/call\"),\n params: BaseRequestParamsSchema.extend({\n name: zod__WEBPACK_IMPORTED_MODULE_0__.z.string(),\n arguments: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(zod__WEBPACK_IMPORTED_MODULE_0__.z.record(zod__WEBPACK_IMPORTED_MODULE_0__.z.unknown()))\n })\n});\n/**\n * An optional notification from the server to the client, informing it that the list of tools it offers has changed. This may be issued by servers without any previous subscription from the client.\n */ const ToolListChangedNotificationSchema = NotificationSchema.extend({\n method: zod__WEBPACK_IMPORTED_MODULE_0__.z.literal(\"notifications/tools/list_changed\")\n});\n/* Logging */ /**\n * The severity of a log message.\n */ const LoggingLevelSchema = zod__WEBPACK_IMPORTED_MODULE_0__.z.enum([\n \"debug\",\n \"info\",\n \"notice\",\n \"warning\",\n \"error\",\n \"critical\",\n \"alert\",\n \"emergency\"\n]);\n/**\n * A request from the client to the server, to enable or adjust logging.\n */ const SetLevelRequestSchema = RequestSchema.extend({\n method: zod__WEBPACK_IMPORTED_MODULE_0__.z.literal(\"logging/setLevel\"),\n params: BaseRequestParamsSchema.extend({\n /**\n * The level of logging that the client wants to receive from the server. The server should send all logs at this level and higher (i.e., more severe) to the client as notifications/logging/message.\n */ level: LoggingLevelSchema\n })\n});\n/**\n * Notification of a log message passed from server to client. If no logging/setLevel request has been sent from the client, the server MAY decide which messages to send automatically.\n */ const LoggingMessageNotificationSchema = NotificationSchema.extend({\n method: zod__WEBPACK_IMPORTED_MODULE_0__.z.literal(\"notifications/message\"),\n params: BaseNotificationParamsSchema.extend({\n /**\n * The severity of this log message.\n */ level: LoggingLevelSchema,\n /**\n * An optional name of the logger issuing this message.\n */ logger: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(zod__WEBPACK_IMPORTED_MODULE_0__.z.string()),\n /**\n * The data to be logged, such as a string message or an object. Any JSON serializable type is allowed here.\n */ data: zod__WEBPACK_IMPORTED_MODULE_0__.z.unknown()\n })\n});\n/* Sampling */ /**\n * Hints to use for model selection.\n */ const ModelHintSchema = zod__WEBPACK_IMPORTED_MODULE_0__.z.object({\n /**\n * A hint for a model name.\n */ name: zod__WEBPACK_IMPORTED_MODULE_0__.z.string().optional()\n}).passthrough();\n/**\n * The server's preferences for model selection, requested of the client during sampling.\n */ const ModelPreferencesSchema = zod__WEBPACK_IMPORTED_MODULE_0__.z.object({\n /**\n * Optional hints to use for model selection.\n */ hints: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(zod__WEBPACK_IMPORTED_MODULE_0__.z.array(ModelHintSchema)),\n /**\n * How much to prioritize cost when selecting a model.\n */ costPriority: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(zod__WEBPACK_IMPORTED_MODULE_0__.z.number().min(0).max(1)),\n /**\n * How much to prioritize sampling speed (latency) when selecting a model.\n */ speedPriority: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(zod__WEBPACK_IMPORTED_MODULE_0__.z.number().min(0).max(1)),\n /**\n * How much to prioritize intelligence and capabilities when selecting a model.\n */ intelligencePriority: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(zod__WEBPACK_IMPORTED_MODULE_0__.z.number().min(0).max(1))\n}).passthrough();\n/**\n * Describes a message issued to or received from an LLM API.\n */ const SamplingMessageSchema = zod__WEBPACK_IMPORTED_MODULE_0__.z.object({\n role: zod__WEBPACK_IMPORTED_MODULE_0__.z.enum([\n \"user\",\n \"assistant\"\n ]),\n content: zod__WEBPACK_IMPORTED_MODULE_0__.z.union([\n TextContentSchema,\n ImageContentSchema\n ])\n}).passthrough();\n/**\n * A request from the server to sample an LLM via the client. The client has full discretion over which model to select. The client should also inform the user before beginning sampling, to allow them to inspect the request (human in the loop) and decide whether to approve it.\n */ const CreateMessageRequestSchema = RequestSchema.extend({\n method: zod__WEBPACK_IMPORTED_MODULE_0__.z.literal(\"sampling/createMessage\"),\n params: BaseRequestParamsSchema.extend({\n messages: zod__WEBPACK_IMPORTED_MODULE_0__.z.array(SamplingMessageSchema),\n /**\n * An optional system prompt the server wants to use for sampling. The client MAY modify or omit this prompt.\n */ systemPrompt: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(zod__WEBPACK_IMPORTED_MODULE_0__.z.string()),\n /**\n * A request to include context from one or more MCP servers (including the caller), to be attached to the prompt. The client MAY ignore this request.\n */ includeContext: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(zod__WEBPACK_IMPORTED_MODULE_0__.z.enum([\n \"none\",\n \"thisServer\",\n \"allServers\"\n ])),\n temperature: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(zod__WEBPACK_IMPORTED_MODULE_0__.z.number()),\n /**\n * The maximum number of tokens to sample, as requested by the server. The client MAY choose to sample fewer tokens than requested.\n */ maxTokens: zod__WEBPACK_IMPORTED_MODULE_0__.z.number().int(),\n stopSequences: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(zod__WEBPACK_IMPORTED_MODULE_0__.z.array(zod__WEBPACK_IMPORTED_MODULE_0__.z.string())),\n /**\n * Optional metadata to pass through to the LLM provider. The format of this metadata is provider-specific.\n */ metadata: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(zod__WEBPACK_IMPORTED_MODULE_0__.z.object({}).passthrough()),\n /**\n * The server's preferences for which model to select.\n */ modelPreferences: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(ModelPreferencesSchema)\n })\n});\n/**\n * The client's response to a sampling/create_message request from the server. The client should inform the user before returning the sampled message, to allow them to inspect the response (human in the loop) and decide whether to allow the server to see it.\n */ const CreateMessageResultSchema = ResultSchema.extend({\n /**\n * The name of the model that generated the message.\n */ model: zod__WEBPACK_IMPORTED_MODULE_0__.z.string(),\n /**\n * The reason why sampling stopped.\n */ stopReason: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(zod__WEBPACK_IMPORTED_MODULE_0__.z.enum([\n \"endTurn\",\n \"stopSequence\",\n \"maxTokens\"\n ]).or(zod__WEBPACK_IMPORTED_MODULE_0__.z.string())),\n role: zod__WEBPACK_IMPORTED_MODULE_0__.z.enum([\n \"user\",\n \"assistant\"\n ]),\n content: zod__WEBPACK_IMPORTED_MODULE_0__.z.discriminatedUnion(\"type\", [\n TextContentSchema,\n ImageContentSchema\n ])\n});\n/* Autocomplete */ /**\n * A reference to a resource or resource template definition.\n */ const ResourceReferenceSchema = zod__WEBPACK_IMPORTED_MODULE_0__.z.object({\n type: zod__WEBPACK_IMPORTED_MODULE_0__.z.literal(\"ref/resource\"),\n /**\n * The URI or URI template of the resource.\n */ uri: zod__WEBPACK_IMPORTED_MODULE_0__.z.string()\n}).passthrough();\n/**\n * Identifies a prompt.\n */ const PromptReferenceSchema = zod__WEBPACK_IMPORTED_MODULE_0__.z.object({\n type: zod__WEBPACK_IMPORTED_MODULE_0__.z.literal(\"ref/prompt\"),\n /**\n * The name of the prompt or prompt template\n */ name: zod__WEBPACK_IMPORTED_MODULE_0__.z.string()\n}).passthrough();\n/**\n * A request from the client to the server, to ask for completion options.\n */ const CompleteRequestSchema = RequestSchema.extend({\n method: zod__WEBPACK_IMPORTED_MODULE_0__.z.literal(\"completion/complete\"),\n params: BaseRequestParamsSchema.extend({\n ref: zod__WEBPACK_IMPORTED_MODULE_0__.z.union([\n PromptReferenceSchema,\n ResourceReferenceSchema\n ]),\n /**\n * The argument's information\n */ argument: zod__WEBPACK_IMPORTED_MODULE_0__.z.object({\n /**\n * The name of the argument\n */ name: zod__WEBPACK_IMPORTED_MODULE_0__.z.string(),\n /**\n * The value of the argument to use for completion matching.\n */ value: zod__WEBPACK_IMPORTED_MODULE_0__.z.string()\n }).passthrough()\n })\n});\n/**\n * The server's response to a completion/complete request\n */ const CompleteResultSchema = ResultSchema.extend({\n completion: zod__WEBPACK_IMPORTED_MODULE_0__.z.object({\n /**\n * An array of completion values. Must not exceed 100 items.\n */ values: zod__WEBPACK_IMPORTED_MODULE_0__.z.array(zod__WEBPACK_IMPORTED_MODULE_0__.z.string()).max(100),\n /**\n * The total number of completion options available. This can exceed the number of values actually sent in the response.\n */ total: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(zod__WEBPACK_IMPORTED_MODULE_0__.z.number().int()),\n /**\n * Indicates whether there are additional completion options beyond those provided in the current response, even if the exact total is unknown.\n */ hasMore: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(zod__WEBPACK_IMPORTED_MODULE_0__.z.boolean())\n }).passthrough()\n});\n/* Roots */ /**\n * Represents a root directory or file that the server can operate on.\n */ const RootSchema = zod__WEBPACK_IMPORTED_MODULE_0__.z.object({\n /**\n * The URI identifying the root. This *must* start with file:// for now.\n */ uri: zod__WEBPACK_IMPORTED_MODULE_0__.z.string().startsWith(\"file://\"),\n /**\n * An optional name for the root.\n */ name: zod__WEBPACK_IMPORTED_MODULE_0__.z.optional(zod__WEBPACK_IMPORTED_MODULE_0__.z.string())\n}).passthrough();\n/**\n * Sent from the server to request a list of root URIs from the client.\n */ const ListRootsRequestSchema = RequestSchema.extend({\n method: zod__WEBPACK_IMPORTED_MODULE_0__.z.literal(\"roots/list\")\n});\n/**\n * The client's response to a roots/list request from the server.\n */ const ListRootsResultSchema = ResultSchema.extend({\n roots: zod__WEBPACK_IMPORTED_MODULE_0__.z.array(RootSchema)\n});\n/**\n * A notification from the client to the server, informing it that the list of roots has changed.\n */ const RootsListChangedNotificationSchema = NotificationSchema.extend({\n method: zod__WEBPACK_IMPORTED_MODULE_0__.z.literal(\"notifications/roots/list_changed\")\n});\n/* Client messages */ const ClientRequestSchema = zod__WEBPACK_IMPORTED_MODULE_0__.z.union([\n PingRequestSchema,\n InitializeRequestSchema,\n CompleteRequestSchema,\n SetLevelRequestSchema,\n GetPromptRequestSchema,\n ListPromptsRequestSchema,\n ListResourcesRequestSchema,\n ListResourceTemplatesRequestSchema,\n ReadResourceRequestSchema,\n SubscribeRequestSchema,\n UnsubscribeRequestSchema,\n CallToolRequestSchema,\n ListToolsRequestSchema\n]);\nconst ClientNotificationSchema = zod__WEBPACK_IMPORTED_MODULE_0__.z.union([\n CancelledNotificationSchema,\n ProgressNotificationSchema,\n InitializedNotificationSchema,\n RootsListChangedNotificationSchema\n]);\nconst ClientResultSchema = zod__WEBPACK_IMPORTED_MODULE_0__.z.union([\n EmptyResultSchema,\n CreateMessageResultSchema,\n ListRootsResultSchema\n]);\n/* Server messages */ const ServerRequestSchema = zod__WEBPACK_IMPORTED_MODULE_0__.z.union([\n PingRequestSchema,\n CreateMessageRequestSchema,\n ListRootsRequestSchema\n]);\nconst ServerNotificationSchema = zod__WEBPACK_IMPORTED_MODULE_0__.z.union([\n CancelledNotificationSchema,\n ProgressNotificationSchema,\n LoggingMessageNotificationSchema,\n ResourceUpdatedNotificationSchema,\n ResourceListChangedNotificationSchema,\n ToolListChangedNotificationSchema,\n PromptListChangedNotificationSchema\n]);\nconst ServerResultSchema = zod__WEBPACK_IMPORTED_MODULE_0__.z.union([\n EmptyResultSchema,\n InitializeResultSchema,\n CompleteResultSchema,\n GetPromptResultSchema,\n ListPromptsResultSchema,\n ListResourcesResultSchema,\n ListResourceTemplatesResultSchema,\n ReadResourceResultSchema,\n CallToolResultSchema,\n ListToolsResultSchema\n]);\nclass McpError extends Error {\n constructor(code, message, data){\n super(`MCP error ${code}: ${message}`);\n this.code = code;\n this.data = data;\n }\n} //# sourceMappingURL=types.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFjdGlvbi1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9AbW9kZWxjb250ZXh0cHJvdG9jb2wvc2RrL2Rpc3QvdHlwZXMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUF3QjtBQUNqQixNQUFNQywwQkFBMEIsYUFBYTtBQUM3QyxNQUFNQyw4QkFBOEI7SUFDdkNEO0lBQ0E7Q0FDSCxDQUFDO0FBQ0Ysa0JBQWtCLEdBQ1gsTUFBTUUsa0JBQWtCLE1BQU07QUFDckM7O0NBRUMsR0FDTSxNQUFNQyxzQkFBc0JKLGtDQUFDQSxDQUFDSyxLQUFLLENBQUM7SUFBQ0wsa0NBQUNBLENBQUNNLE1BQU07SUFBSU4sa0NBQUNBLENBQUNPLE1BQU0sR0FBR0MsR0FBRztDQUFHLEVBQUU7QUFDM0U7O0NBRUMsR0FDTSxNQUFNQyxlQUFlVCxrQ0FBQ0EsQ0FBQ00sTUFBTSxHQUFHO0FBQ3ZDLE1BQU1JLDBCQUEwQlYsa0NBQUNBLENBQzVCVyxNQUFNLENBQUM7SUFDUkMsT0FBT1osa0NBQUNBLENBQUNhLFFBQVEsQ0FBQ2Isa0NBQUNBLENBQ2RXLE1BQU0sQ0FBQztRQUNSOztTQUVDLEdBQ0RHLGVBQWVkLGtDQUFDQSxDQUFDYSxRQUFRLENBQUNUO0lBQzlCLEdBQ0tXLFdBQVc7QUFDcEIsR0FDS0EsV0FBVztBQUNULE1BQU1DLGdCQUFnQmhCLGtDQUFDQSxDQUFDVyxNQUFNLENBQUM7SUFDbENNLFFBQVFqQixrQ0FBQ0EsQ0FBQ00sTUFBTTtJQUNoQlksUUFBUWxCLGtDQUFDQSxDQUFDYSxRQUFRLENBQUNIO0FBQ3ZCLEdBQUc7QUFDSCxNQUFNUywrQkFBK0JuQixrQ0FBQ0EsQ0FDakNXLE1BQU0sQ0FBQztJQUNSOztLQUVDLEdBQ0RDLE9BQU9aLGtDQUFDQSxDQUFDYSxRQUFRLENBQUNiLGtDQUFDQSxDQUFDVyxNQUFNLENBQUMsQ0FB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NEc7Q0FDSCxFQUFFO0FBQ0ksTUFBTUcscUJBQXFCakwsa0NBQUNBLENBQUNLLEtBQUssQ0FBQztJQUN0Q21DO0lBQ0FvSDtJQUNBaUI7Q0FDSCxFQUFFO0FBQ0gsbUJBQW1CLEdBQ1osTUFBTUssc0JBQXNCbEwsa0NBQUNBLENBQUNLLEtBQUssQ0FBQztJQUN2QzhEO0lBQ0FpRjtJQUNBd0I7Q0FDSCxFQUFFO0FBQ0ksTUFBTU8sMkJBQTJCbkwsa0NBQUNBLENBQUNLLEtBQUssQ0FBQztJQUM1Q29DO0lBQ0E4QjtJQUNBa0U7SUFDQXJDO0lBQ0FIO0lBQ0FvQztJQUNBYjtDQUNILEVBQUU7QUFDSSxNQUFNNEQscUJBQXFCcEwsa0NBQUNBLENBQUNLLEtBQUssQ0FBQztJQUN0Q21DO0lBQ0F3QjtJQUNBc0c7SUFDQWhEO0lBQ0FaO0lBQ0FqQjtJQUNBRztJQUNBRztJQUNBK0I7SUFDQUQ7Q0FDSCxFQUFFO0FBQ0ksTUFBTXdELGlCQUFpQkM7SUFDMUJDLFlBQVlwSixJQUFJLEVBQUVDLE9BQU8sRUFBRUMsSUFBSSxDQUFFO1FBQzdCLEtBQUssQ0FBQyxDQUFDLFVBQVUsRUFBRUYsS0FBSyxFQUFFLEVBQUVDLFFBQVEsQ0FBQztRQUNyQyxJQUFJLENBQUNELElBQUksR0FBR0E7UUFDWixJQUFJLENBQUNFLElBQUksR0FBR0E7SUFDaEI7QUFDSixFQUNBLGlDQUFpQyIsInNvdXJjZXMiOlsid2VicGFjazovL25leHRjaGF0Ly4vbm9kZV9tb2R1bGVzL0Btb2RlbGNvbnRleHRwcm90b2NvbC9zZGsvZGlzdC90eXBlcy5qcz9kODk2Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5leHBvcnQgY29uc3QgTEFURVNUX1BST1RPQ09MX1ZFUlNJT04gPSBcIjIwMjQtMTEtMDVcIjtcbmV4cG9ydCBjb25zdCBTVVBQT1JURURfUFJPVE9DT0xfVkVSU0lPTlMgPSBbXG4gICAgTEFURVNUX1BST1RPQ09MX1ZFUlNJT04sXG4gICAgXCIyMDI0LTEwLTA3XCIsXG5dO1xuLyogSlNPTi1SUEMgdHlwZXMgKi9cbmV4cG9ydCBjb25zdCBKU09OUlBDX1ZFUlNJT04gPSBcIjIuMFwiO1xuLyoqXG4gKiBBIHByb2dyZXNzIHRva2VuLCB1c2VkIHRvIGFzc29jaWF0ZSBwcm9ncmVzcyBub3RpZmljYXRpb25zIHdpdGggdGhlIG9yaWdpbmFsIHJlcXVlc3QuXG4gKi9cbmV4cG9ydCBjb25zdCBQcm9ncmVzc1Rva2VuU2NoZW1hID0gei51bmlvbihbei5zdHJpbmcoKSwgei5udW1iZXIoKS5pbnQoKV0pO1xuLyoqXG4gKiBBbiBvcGFxdWUgdG9rZW4gdXNlZCB0byByZXByZXNlbnQgYSBjdXJzb3IgZm9yIHBhZ2luYXRpb24uXG4gKi9cbmV4cG9ydCBjb25zdCBDdXJzb3JTY2hlbWEgPSB6LnN0cmluZygpO1xuY29uc3QgQmFzZVJlcXVlc3RQYXJhbXNTY2hlbWEgPSB6XG4gICAgLm9iamVjdCh7XG4gICAgX21ldGE6IHoub3B0aW9uYWwoelxuICAgICAgICAub2JqZWN0KHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIElmIHNwZWNpZmllZCwgdGhlIGNhbGxlciBpcyByZXF1ZXN0aW5nIG91dC1vZi1iYW5kIHByb2dyZXNzIG5vdGlmaWNhdGlvbnMgZm9yIHRoaXMgcmVxdWVzdCAoYXMgcmVwcmVzZW50ZWQgYnkgbm90aWZpY2F0aW9ucy9wcm9ncmVzcykuIFRoZSB2YWx1ZSBvZiB0aGlzIHBhcmFtZXRlciBpcyBhbiBvcGFxdWUgdG9rZW4gdGhhdCB3aWxsIGJlIGF0dGFjaGVkIHRvIGFueSBzdWJzZXF1ZW50IG5vdGlmaWNhdGlvbnMuIFRoZSByZWNlaXZlciBpcyBub3Qgb2JsaWdhdGVkIHRvIHByb3ZpZGUgdGhlc2Ugbm90aWZpY2F0aW9ucy5cbiAgICAgICAgICovXG4gICAgICAgIHByb2dyZXNzVG9rZW46IHoub3B0aW9uYWwoUHJvZ3Jlc3NUb2tlblNjaGVtYSksXG4gICAgfSlcbiAgICAgICAgLnBhc3N0aHJvdWdoKCkpLFxufSlcbiAgICAucGFzc3Rocm91Z2goKTtcbmV4cG9ydCBjb25zdCBSZXF1ZXN0U2NoZW1hID0gei5vYmplY3Qoe1xuICAgIG1ldGhvZDogei5zdHJpbmcoKSxcbiAgICBwYXJhbXM6IHoub3B0aW9uYWwoQmFzZVJlcXVlc3RQYXJhbXNTY2hlbWEpLFxufSk7XG5jb25zdCBCYXNlTm90aWZpY2F0aW9uUGFyYW1zU2NoZW1hID0gelxuICAgIC5vYmplY3Qoe1xuICAgIC8qKlxuICAgICAqIFRoaXMgcGFyYW1ldGVyIG5hbWUgaXMgcmVzZXJ2ZWQgYnkgTUNQIHRvIGFsbG93IGNsaWVudHMgYW5kIHNlcnZlcnMgdG8gYXR0YWNoIGFkZGl0aW9uYWwgbWV0YWRhdGEgdG8gdGhlaXIgbm90aWZpY2F0aW9ucy5cbiAgICAgKi9cbiAgICBfbWV0YTogei5vcHRpb25hbCh6Lm9iamVjdCh7fSkucGFzc3Rocm91Z2goKSksXG59KVxuICAgIC5wYXNzdGhyb3VnaCgpO1xuZXhwb3J0IGNvbnN0IE5vdGlmaWNhdGlvblNjaGVtYSA9IHoub2JqZWN0KHtcbiAgICBtZXRob2Q6IHouc3RyaW5nKCksXG4gICAgcGFyYW1zOiB6Lm9wdGlvbmFsKEJhc2VOb3RpZmljYXRpb25QYXJhbXNTY2hlbWEpLFxufSk7XG5leHBvcnQgY29uc3QgUmVzdWx0U2NoZW1hID0gelxuICAgIC5vYmplY3Qoe1xuICAgIC8qKlxuICAgICAqIFRoaXMgcmVzdWx0IHByb3BlcnR5IGlzIHJlc2VydmVkIGJ5IHRoZSBwcm90b2NvbCB0byBhbGxvdyBjbGllbnRzIGFuZCBzZXJ2ZXJzIHRvIGF0dGFjaCBhZGRpdGlvbmFsIG1ldGFkYXRhIHRvIHRoZWlyIHJlc3BvbnNlcy5cbiAgICAgKi9cbiAgICBfbWV0YTogei5vcHRpb25hbCh6Lm9iamVjdCh7fSkucGFzc3Rocm91Z2goKSksXG59KVxuICAgIC5wYXNzdGhyb3VnaCgpO1xuLyoqXG4gKiBBIHVuaXF1ZWx5IGlkZW50aWZ5aW5nIElEIGZvciBhIHJlcXVlc3QgaW4gSlNPTi1SUEMuXG4gKi9cbmV4cG9ydCBjb25zdCBSZXF1ZXN0SWRTY2hlbWEgPSB6LnVuaW9uKFt6LnN0cmluZygpLCB6Lm51bWJlcigpLmludCgpXSk7XG4vKipcbiAqIEEgcmVxdWVzdCB0aGF0IGV4cGVjdHMgYSByZXNwb25zZS5cbiAqL1xuZXhwb3J0IGNvbnN0IEpTT05SUENSZXF1ZXN0U2NoZW1hID0gelxuICAgIC5vYmplY3Qoe1xuICAgIGpzb25ycGM6IHoubGl0ZXJhbChKU09OUlBDX1ZFUlNJT04pLFxuICAgIGlkOiBSZXF1ZXN0SWRTY2hlbWEsXG59KVxuICAgIC5tZXJnZShSZXF1ZXN0U2NoZW1hKVxuICAgIC5zdHJpY3QoKTtcbi8qKlxuICogQSBub3RpZmljYXRpb24gd2hpY2ggZG9lcyBub3QgZXhwZWN0IGEgcmVzcG9uc2UuXG4gKi9cbmV4cG9ydCBjb25zdCBKU09OUlBDTm90aWZpY2F0aW9uU2NoZW1hID0gelxuICAgIC5vYmplY3Qoe1xuICAgIGpzb25ycGM6IHoubGl0ZXJhbChKU09OUlBDX1ZFUlNJT04pLFxufSlcbiAgICAubWVyZ2UoTm90aWZpY2F0aW9uU2NoZW1hKVxuICAgIC5zdHJpY3QoKTtcbi8qKlxuICogQSBzdWNjZXNzZnVsIChub24tZXJyb3IpIHJlc3BvbnNlIHRvIGEgcmVxdWVzdC5cbiAqL1xuZXhwb3J0IGNvbnN0IEpTT05SUENSZXNwb25zZVNjaGVtYSA9IHpcbiAgICAub2JqZWN0KHtcbiAgICBqc29ucnBjOiB6LmxpdGVyYWwoSlNPTlJQQ19WRVJTSU9OKSxcbiAgICBpZDogUmVxdWVzdElkU2NoZW1hLFxuICAgIHJlc3VsdDogUmVzdWx0U2NoZW1hLFxufSlcbiAgICAuc3RyaWN0KCk7XG4vKipcbiAqIEFuIGluY29tcGxldGUgc2V0IG9mIGVycm9yIGNvZGVzIHRoYXQgbWF5IGFwcGVhciBpbiBKU09OLVJQQyByZXNwb25zZXMuXG4gKi9cbmV4cG9ydCB2YXIgRXJyb3JDb2RlO1xuKGZ1bmN0aW9uIChFcnJvckNvZGUpIHtcbiAgICAvLyBTREsgZXJyb3IgY29kZXNcbiAgICBFcnJvckNvZGVbRXJyb3JDb2RlW1wiQ29ubmVjdGlvbkNsb3NlZFwiXSA9IC0xXSA9IFwiQ29ubmVjdGlvbkNsb3NlZFwiO1xuICAgIEVycm9yQ29kZVtFcnJvckNvZGVbXCJSZXF1ZXN0VGltZW91dFwiXSA9IC0yXSA9IFwiUmVxdWVzdFRpbWVvdXRcIjtcbiAgICAvLyBTdGFuZGFyZCBKU09OLVJQQyBlcnJvciBjb2Rlc1xuICAgIEVycm9yQ29kZVtFcnJvckNvZGVbXCJQYXJzZUVycm9yXCJdID0gLTMyNzAwXSA9IFwiUGFyc2VFcnJvclwiO1xuICAgIEVycm9yQ29kZVtFcnJvckNvZGVbXCJJbnZhbGlkUmVxdWVzdFwiXSA9IC0zMjYwMF0gPSBcIkludmFsaWRSZXF1ZXN0XCI7XG4gICAgRXJyb3JDb2RlW0Vycm9yQ29kZVtcIk1ldGhvZE5vdEZvdW5kXCJdID0gLTMyNjAxXSA9IFwiTWV0aG9kTm90Rm91bmRcIjtcbiAgICBFcnJvckNvZGVbRXJyb3JDb2RlW1wiSW52YWxpZFBhcmFtc1wiXSA9IC0zMjYwMl0gPSBcIkludmFsaWRQYXJhbXNcIjtcbiAgICBFcnJvckNvZGVbRXJyb3JDb2RlW1wiSW50ZXJuYWxFcnJvclwiXSA9IC0zMjYwM10gPSBcIkludGVybmFsRXJyb3JcIjtcbn0pKEVycm9yQ29kZSB8fCAoRXJyb3JDb2RlID0ge30pKTtcbi8qKlxuICogQSByZXNwb25zZSB0byBhIHJlcXVlc3QgdGhhdCBpbmRpY2F0ZXMgYW4gZXJyb3Igb2NjdXJyZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBKU09OUlBDRXJyb3JTY2hlbWEgPSB6XG4gICAgLm9iamVjdCh7XG4gICAganNvbnJwYzogei5saXRlcmFsKEpTT05SUENfVkVSU0lPTiksXG4gICAgaWQ6IFJlcXVlc3RJZFNjaGVtYSxcbiAgICBlcnJvcjogei5vYmplY3Qoe1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIGVycm9yIHR5cGUgdGhhdCBvY2N1cnJlZC5cbiAgICAgICAgICovXG4gICAgICAgIGNvZGU6IHoubnVtYmVyKCkuaW50KCksXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBIHNob3J0IGRlc2NyaXB0aW9uIG9mIHRoZSBlcnJvci4gVGhlIG1lc3NhZ2UgU0hPVUxEIGJlIGxpbWl0ZWQgdG8gYSBjb25jaXNlIHNpbmdsZSBzZW50ZW5jZS5cbiAgICAgICAgICovXG4gICAgICAgIG1lc3NhZ2U6IHouc3RyaW5nKCksXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBlcnJvci4gVGhlIHZhbHVlIG9mIHRoaXMgbWVtYmVyIGlzIGRlZmluZWQgYnkgdGhlIHNlbmRlciAoZS5nLiBkZXRhaWxlZCBlcnJvciBpbmZvcm1hdGlvbiwgbmVzdGVkIGVycm9ycyBldGMuKS5cbiAgICAgICAgICovXG4gICAgICAgIGRhdGE6IHoub3B0aW9uYWwoei51bmtub3duKCkpLFxuICAgIH0pLFxufSlcbiAgICAuc3RyaWN0KCk7XG5leHBvcnQgY29uc3QgSlNPTlJQQ01lc3NhZ2VTY2hlbWEgPSB6LnVuaW9uKFtcbiAgICBKU09OUlBDUmVxdWVzdFNjaGVtYSxcbiAgICBKU09OUlBDTm90aWZpY2F0aW9uU2NoZW1hLFxuICAgIEpTT05SUENSZXNwb25zZVNjaGVtYSxcbiAgICBKU09OUlBDRXJyb3JTY2hlbWEsXG5dKTtcbi8qIEVtcHR5IHJlc3VsdCAqL1xuLyoqXG4gKiBBIHJlc3BvbnNlIHRoYXQgaW5kaWNhdGVzIHN1Y2Nlc3MgYnV0IGNhcnJpZXMgbm8gZGF0YS5cbiAqL1xuZXhwb3J0IGNvbnN0IEVtcHR5UmVzdWx0U2NoZW1hID0gUmVzdWx0U2NoZW1hLnN0cmljdCgpO1xuLyogQ2FuY2VsbGF0aW9uICovXG4vKipcbiAqIFRoaXMgbm90aWZpY2F0aW9uIGNhbiBiZSBzZW50IGJ5IGVpdGhlciBzaWRlIHRvIGluZGljYXRlIHRoYXQgaXQgaXMgY2FuY2VsbGluZyBhIHByZXZpb3VzbHktaXNzdWVkIHJlcXVlc3QuXG4gKlxuICogVGhlIHJlcXVlc3QgU0hPVUxEIHN0aWxsIGJlIGluLWZsaWdodCwgYnV0IGR1ZSB0byBjb21tdW5pY2F0aW9uIGxhdGVuY3ksIGl0IGlzIGFsd2F5cyBwb3NzaWJsZSB0aGF0IHRoaXMgbm90aWZpY2F0aW9uIE1BWSBhcnJpdmUgYWZ0ZXIgdGhlIHJlcXVlc3QgaGFzIGFscmVhZHkgZmluaXNoZWQuXG4gKlxuICogVGhpcyBub3RpZmljYXRpb24gaW5kaWNhdGVzIHRoYXQgdGhlIHJlc3VsdCB3aWxsIGJlIHVudXNlZCwgc28gYW55IGFzc29jaWF0ZWQgcHJvY2Vzc2luZyBTSE9VTEQgY2Vhc2UuXG4gKlxuICogQSBjbGllbnQgTVVTVCBOT1QgYXR0ZW1wdCB0byBjYW5jZWwgaXRzIGBpbml0aWFsaXplYCByZXF1ZXN0LlxuICovXG5leHBvcnQgY29uc3QgQ2FuY2VsbGVkTm90aWZpY2F0aW9uU2NoZW1hID0gTm90aWZpY2F0aW9uU2NoZW1hLmV4dGVuZCh7XG4gICAgbWV0aG9kOiB6LmxpdGVyYWwoXCJub3RpZmljYXRpb25zL2NhbmNlbGxlZFwiKSxcbiAgICBwYXJhbXM6IEJhc2VOb3RpZmljYXRpb25QYXJhbXNTY2hlbWEuZXh0ZW5kKHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoZSBJRCBvZiB0aGUgcmVxdWVzdCB0byBjYW5jZWwuXG4gICAgICAgICAqXG4gICAgICAgICAqIFRoaXMgTVVTVCBjb3JyZXNwb25kIHRvIHRoZSBJRCBvZiBhIHJlcXVlc3QgcHJldmlvdXNseSBpc3N1ZWQgaW4gdGhlIHNhbWUgZGlyZWN0aW9uLlxuICAgICAgICAgKi9cbiAgICAgICAgcmVxdWVzdElkOiBSZXF1ZXN0SWRTY2hlbWEsXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBbiBvcHRpb25hbCBzdHJpbmcgZGVzY3JpYmluZyB0aGUgcmVhc29uIGZvciB0aGUgY2FuY2VsbGF0aW9uLiBUaGlzIE1BWSBiZSBsb2dnZWQgb3IgcHJlc2VudGVkIHRvIHRoZSB1c2VyLlxuICAgICAgICAgKi9cbiAgICAgICAgcmVhc29uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgfSksXG59KTtcbi8qIEluaXRpYWxpemF0aW9uICovXG4vKipcbiAqIERlc2NyaWJlcyB0aGUgbmFtZSBhbmQgdmVyc2lvbiBvZiBhbiBNQ1AgaW1wbGVtZW50YXRpb24uXG4gKi9cbmV4cG9ydCBjb25zdCBJbXBsZW1lbnRhdGlvblNjaGVtYSA9IHpcbiAgICAub2JqZWN0KHtcbiAgICBuYW1lOiB6LnN0cmluZygpLFxuICAgIHZlcnNpb246IHouc3RyaW5nKCksXG59KVxuICAgIC5wYXNzdGhyb3VnaCgpO1xuLyoqXG4gKiBDYXBhYmlsaXRpZXMgYSBjbGllbnQgbWF5IHN1cHBvcnQuIEtub3duIGNhcGFiaWxpdGllcyBhcmUgZGVmaW5lZCBoZXJlLCBpbiB0aGlzIHNjaGVtYSwgYnV0IHRoaXMgaXMgbm90IGEgY2xvc2VkIHNldDogYW55IGNsaWVudCBjYW4gZGVmaW5lIGl0cyBvd24sIGFkZGl0aW9uYWwgY2FwYWJpbGl0aWVzLlxuICovXG5leHBvcnQgY29uc3QgQ2xpZW50Q2FwYWJpbGl0aWVzU2NoZW1hID0gelxuICAgIC5vYmplY3Qoe1xuICAgIC8qKlxuICAgICAqIEV4cGVyaW1lbnRhbCwgbm9uLXN0YW5kYXJkIGNhcGFiaWxpdGllcyB0aGF0IHRoZSBjbGllbnQgc3VwcG9ydHMuXG4gICAgICovXG4gICAgZXhwZXJpbWVudGFsOiB6Lm9wdGlvbmFsKHoub2JqZWN0KHt9KS5wYXNzdGhyb3VnaCgpKSxcbiAgICAvKipcbiAgICAgKiBQcmVzZW50IGlmIHRoZSBjbGllbnQgc3VwcG9ydHMgc2FtcGxpbmcgZnJvbSBhbiBMTE0uXG4gICAgICovXG4gICAgc2FtcGxpbmc6IHoub3B0aW9uYWwoei5vYmplY3Qoe30pLnBhc3N0aHJvdWdoKCkpLFxuICAgIC8qKlxuICAgICAqIFByZXNlbnQgaWYgdGhlIGNsaWVudCBzdXBwb3J0cyBsaXN0aW5nIHJvb3RzLlxuICAgICAqL1xuICAgIHJvb3RzOiB6Lm9wdGlvbmFsKHpcbiAgICAgICAgLm9iamVjdCh7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBXaGV0aGVyIHRoZSBjbGllbnQgc3VwcG9ydHMgaXNzdWluZyBub3RpZmljYXRpb25zIGZvciBjaGFuZ2VzIHRvIHRoZSByb290cyBsaXN0LlxuICAgICAgICAgKi9cbiAgICAgICAgbGlzdENoYW5nZWQ6IHoub3B0aW9uYWwoei5ib29sZWFuKCkpLFxuICAgIH0pXG4gICAgICAgIC5wYXNzdGhyb3VnaCgpKSxcbn0pXG4gICAgLnBhc3N0aHJvdWdoKCk7XG4vKipcbiAqIFRoaXMgcmVxdWVzdCBpcyBzZW50IGZyb20gdGhlIGNsaWVudCB0byB0aGUgc2VydmVyIHdoZW4gaXQgZmlyc3QgY29ubmVjdHMsIGFza2luZyBpdCB0byBiZWdpbiBpbml0aWFsaXphdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IEluaXRpYWxpemVSZXF1ZXN0U2NoZW1hID0gUmVxdWVzdFNjaGVtYS5leHRlbmQoe1xuICAgIG1ldGhvZDogei5saXRlcmFsKFwiaW5pdGlhbGl6ZVwiKSxcbiAgICBwYXJhbXM6IEJhc2VSZXF1ZXN0UGFyYW1zU2NoZW1hLmV4dGVuZCh7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIE1vZGVsIENvbnRleHQgUHJvdG9jb2wgdGhhdCB0aGUgY2xpZW50IHN1cHBvcnRzLiBUaGUgY2xpZW50IE1BWSBkZWNpZGUgdG8gc3VwcG9ydCBvbGRlciB2ZXJzaW9ucyBhcyB3ZWxsLlxuICAgICAgICAgKi9cbiAgICAgICAgcHJvdG9jb2xWZXJzaW9uOiB6LnN0cmluZygpLFxuICAgICAgICBjYXBhYmlsaXRpZXM6IENsaWVudENhcGFiaWxpdGllc1NjaGVtYSxcbiAgICAgICAgY2xpZW50SW5mbzogSW1wbGVtZW50YXRpb25TY2hlbWEsXG4gICAgfSksXG59KTtcbi8qKlxuICogQ2FwYWJpbGl0aWVzIHRoYXQgYSBzZXJ2ZXIgbWF5IHN1cHBvcnQuIEtub3duIGNhcGFiaWxpdGllcyBhcmUgZGVmaW5lZCBoZXJlLCBpbiB0aGlzIHNjaGVtYSwgYnV0IHRoaXMgaXMgbm90IGEgY2xvc2VkIHNldDogYW55IHNlcnZlciBjYW4gZGVmaW5lIGl0cyBvd24sIGFkZGl0aW9uYWwgY2FwYWJpbGl0aWVzLlxuICovXG5leHBvcnQgY29uc3QgU2VydmVyQ2FwYWJpbGl0aWVzU2NoZW1hID0gelxuICAgIC5vYmplY3Qoe1xuICAgIC8qKlxuICAgICAqIEV4cGVyaW1lbnRhbCwgbm9uLXN0YW5kYXJkIGNhcGFiaWxpdGllcyB0aGF0IHRoZSBzZXJ2ZXIgc3VwcG9ydHMuXG4gICAgICovXG4gICAgZXhwZXJpbWVudGFsOiB6Lm9wdGlvbmFsKHoub2JqZWN0KHt9KS5wYXNzdGhyb3VnaCgpKSxcbiAgICAvKipcbiAgICAgKiBQcmVzZW50IGlmIHRoZSBzZXJ2ZXIgc3VwcG9ydHMgc2VuZGluZyBsb2cgbWVzc2FnZXMgdG8gdGhlIGNsaWVudC5cbiAgICAgKi9cbiAgICBsb2dnaW5nOiB6Lm9wdGlvbmFsKHoub2JqZWN0KHt9KS5wYXNzdGhyb3VnaCgpKSxcbiAgICAvKipcbiAgICAgKiBQcmVzZW50IGlmIHRoZSBzZXJ2ZXIgb2ZmZXJzIGFueSBwcm9tcHQgdGVtcGxhdGVzLlxuICAgICAqL1xuICAgIHByb21wdHM6IHoub3B0aW9uYWwoelxuICAgICAgICAub2JqZWN0KHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFdoZXRoZXIgdGhpcyBzZXJ2ZXIgc3VwcG9ydHMgaXNzdWluZyBub3RpZmljYXRpb25zIGZvciBjaGFuZ2VzIHRvIHRoZSBwcm9tcHQgbGlzdC5cbiAgICAgICAgICovXG4gICAgICAgIGxpc3RDaGFuZ2VkOiB6Lm9wdGlvbmFsKHouYm9vbGVhbigpKSxcbiAgICB9KVxuICAgICAgICAucGFzc3Rocm91Z2goKSksXG4gICAgLyoqXG4gICAgICogUHJlc2VudCBpZiB0aGUgc2VydmVyIG9mZmVycyBhbnkgcmVzb3VyY2VzIHRvIHJlYWQuXG4gICAgICovXG4gICAgcmVzb3VyY2VzOiB6Lm9wdGlvbmFsKHpcbiAgICAgICAgLm9iamVjdCh7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBXaGV0aGVyIHRoaXMgc2VydmVyIHN1cHBvcnRzIGNsaWVudHMgc3Vic2NyaWJpbmcgdG8gcmVzb3VyY2UgdXBkYXRlcy5cbiAgICAgICAgICovXG4gICAgICAgIHN1YnNjcmliZTogei5vcHRpb25hbCh6LmJvb2xlYW4oKSksXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBXaGV0aGVyIHRoaXMgc2VydmVyIHN1cHBvcnRzIGlzc3Vpbmcgbm90aWZpY2F0aW9ucyBmb3IgY2hhbmdlcyB0byB0aGUgcmVzb3VyY2UgbGlzdC5cbiAgICAgICAgICovXG4gICAgICAgIGxpc3RDaGFuZ2VkOiB6Lm9wdGlvbmFsKHouYm9vbGVhbigpKSxcbiAgICB9KVxuICAgICAgICAucGFzc3Rocm91Z2goKSksXG4gICAgLyoqXG4gICAgICogUHJlc2VudCBpZiB0aGUgc2VydmVyIG9mZmVycyBhbnkgdG9vbHMgdG8gY2FsbC5cbiAgICAgKi9cbiAgICB0b29sczogei5vcHRpb25hbCh6XG4gICAgICAgIC5vYmplY3Qoe1xuICAgICAgICAvKipcbiAgICAgICAgICogV2hldGhlciB0aGlzIHNlcnZlciBzdXBwb3J0cyBpc3N1aW5nIG5vdGlmaWNhdGlvbnMgZm9yIGNoYW5nZXMgdG8gdGhlIHRvb2wgbGlzdC5cbiAgICAgICAgICovXG4gICAgICAgIGxpc3RDaGFuZ2VkOiB6Lm9wdGlvbmFsKHouYm9vbGVhbigpKSxcbiAgICB9KVxuICAgICAgICAucGFzc3Rocm91Z2goKSksXG59KVxuICAgIC5wYXNzdGhyb3VnaCgpO1xuLyoqXG4gKiBBZnRlciByZWNlaXZpbmcgYW4gaW5pdGlhbGl6ZSByZXF1ZXN0IGZyb20gdGhlIGNsaWVudCwgdGhlIHNlcnZlciBzZW5kcyB0aGlzIHJlc3BvbnNlLlxuICovXG5leHBvcnQgY29uc3QgSW5pdGlhbGl6ZVJlc3VsdFNjaGVtYSA9IFJlc3VsdFNjaGVtYS5leHRlbmQoe1xuICAgIC8qKlxuICAgICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBNb2RlbCBDb250ZXh0IFByb3RvY29sIHRoYXQgdGhlIHNlcnZlciB3YW50cyB0byB1c2UuIFRoaXMgbWF5IG5vdCBtYXRjaCB0aGUgdmVyc2lvbiB0aGF0IHRoZSBjbGllbnQgcmVxdWVzdGVkLiBJZiB0aGUgY2xpZW50IGNhbm5vdCBzdXBwb3J0IHRoaXMgdmVyc2lvbiwgaXQgTVVTVCBkaXNjb25uZWN0LlxuICAgICAqL1xuICAgIHByb3RvY29sVmVyc2lvbjogei5zdHJpbmcoKSxcbiAgICBjYXBhYmlsaXRpZXM6IFNlcnZlckNhcGFiaWxpdGllc1NjaGVtYSxcbiAgICBzZXJ2ZXJJbmZvOiBJbXBsZW1lbnRhdGlvblNjaGVtYSxcbn0pO1xuLyoqXG4gKiBUaGlzIG5vdGlmaWNhdGlvbiBpcyBzZW50IGZyb20gdGhlIGNsaWVudCB0byB0aGUgc2VydmVyIGFmdGVyIGluaXRpYWxpemF0aW9uIGhhcyBmaW5pc2hlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IEluaXRpYWxpemVkTm90aWZpY2F0aW9uU2NoZW1hID0gTm90aWZpY2F0aW9uU2NoZW1hLmV4dGVuZCh7XG4gICAgbWV0aG9kOiB6LmxpdGVyYWwoXCJub3RpZmljYXRpb25zL2luaXRpYWxpemVkXCIpLFxufSk7XG4vKiBQaW5nICovXG4vKipcbiAqIEEgcGluZywgaXNzdWVkIGJ5IGVpdGhlciB0aGUgc2VydmVyIG9yIHRoZSBjbGllbnQsIHRvIGNoZWNrIHRoYXQgdGhlIG90aGVyIHBhcnR5IGlzIHN0aWxsIGFsaXZlLiBUaGUgcmVjZWl2ZXIgbXVzdCBwcm9tcHRseSByZXNwb25kLCBvciBlbHNlIG1heSBiZSBkaXNjb25uZWN0ZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBQaW5nUmVxdWVzdFNjaGVtYSA9IFJlcXVlc3RTY2hlbWEuZXh0ZW5kKHtcbiAgICBtZXRob2Q6IHoubGl0ZXJhbChcInBpbmdcIiksXG59KTtcbi8qIFByb2dyZXNzIG5vdGlmaWNhdGlvbnMgKi9cbmV4cG9ydCBjb25zdCBQcm9ncmVzc1NjaGVtYSA9IHpcbiAgICAub2JqZWN0KHtcbiAgICAvKipcbiAgICAgKiBUaGUgcHJvZ3Jlc3MgdGh1cyBmYXIuIFRoaXMgc2hvdWxkIGluY3JlYXNlIGV2ZXJ5IHRpbWUgcHJvZ3Jlc3MgaXMgbWFkZSwgZXZlbiBpZiB0aGUgdG90YWwgaXMgdW5rbm93bi5cbiAgICAgKi9cbiAgICBwcm9ncmVzczogei5udW1iZXIoKSxcbiAgICAvKipcbiAgICAgKiBUb3RhbCBudW1iZXIgb2YgaXRlbXMgdG8gcHJvY2VzcyAob3IgdG90YWwgcHJvZ3Jlc3MgcmVxdWlyZWQpLCBpZiBrbm93bi5cbiAgICAgKi9cbiAgICB0b3RhbDogei5vcHRpb25hbCh6Lm51bWJlcigpKSxcbn0pXG4gICAgLnBhc3N0aHJvdWdoKCk7XG4vKipcbiAqIEFuIG91dC1vZi1iYW5kIG5vdGlmaWNhdGlvbiB1c2VkIHRvIGluZm9ybSB0aGUgcmVjZWl2ZXIgb2YgYSBwcm9ncmVzcyB1cGRhdGUgZm9yIGEgbG9uZy1ydW5uaW5nIHJlcXVlc3QuXG4gKi9cbmV4cG9ydCBjb25zdCBQcm9ncmVzc05vdGlmaWNhdGlvblNjaGVtYSA9IE5vdGlmaWNhdGlvblNjaGVtYS5leHRlbmQoe1xuICAgIG1ldGhvZDogei5saXRlcmFsKFwibm90aWZpY2F0aW9ucy9wcm9ncmVzc1wiKSxcbiAgICBwYXJhbXM6IEJhc2VOb3RpZmljYXRpb25QYXJhbXNTY2hlbWEubWVyZ2UoUHJvZ3Jlc3NTY2hlbWEpLmV4dGVuZCh7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgcHJvZ3Jlc3MgdG9rZW4gd2hpY2ggd2FzIGdpdmVuIGluIHRoZSBpbml0aWFsIHJlcXVlc3QsIHVzZWQgdG8gYXNzb2NpYXRlIHRoaXMgbm90aWZpY2F0aW9uIHdpdGggdGhlIHJlcXVlc3QgdGhhdCBpcyBwcm9jZWVkaW5nLlxuICAgICAgICAgKi9cbiAgICAgICAgcHJvZ3Jlc3NUb2tlbjogUHJvZ3Jlc3NUb2tlblNjaGVtYSxcbiAgICB9KSxcbn0pO1xuLyogUGFnaW5hdGlvbiAqL1xuZXhwb3J0IGNvbnN0IFBhZ2luYXRlZFJlcXVlc3RTY2hlbWEgPSBSZXF1ZXN0U2NoZW1hLmV4dGVuZCh7XG4gICAgcGFyYW1zOiBCYXNlUmVxdWVzdFBhcmFtc1NjaGVtYS5leHRlbmQoe1xuICAgICAgICAvKipcbiAgICAgICAgICogQW4gb3BhcXVlIHRva2VuIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCBwYWdpbmF0aW9uIHBvc2l0aW9uLlxuICAgICAgICAgKiBJZiBwcm92aWRlZCwgdGhlIHNlcnZlciBzaG91bGQgcmV0dXJuIHJlc3VsdHMgc3RhcnRpbmcgYWZ0ZXIgdGhpcyBjdXJzb3IuXG4gICAgICAgICAqL1xuICAgICAgICBjdXJzb3I6IHoub3B0aW9uYWwoQ3Vyc29yU2NoZW1hKSxcbiAgICB9KS5vcHRpb25hbCgpLFxufSk7XG5leHBvcnQgY29uc3QgUGFnaW5hdGVkUmVzdWx0U2NoZW1hID0gUmVzdWx0U2NoZW1hLmV4dGVuZCh7XG4gICAgLyoqXG4gICAgICogQW4gb3BhcXVlIHRva2VuIHJlcHJlc2VudGluZyB0aGUgcGFnaW5hdGlvbiBwb3NpdGlvbiBhZnRlciB0aGUgbGFzdCByZXR1cm5lZCByZXN1bHQuXG4gICAgICogSWYgcHJlc2VudCwgdGhlcmUgbWF5IGJlIG1vcmUgcmVzdWx0cyBhdmFpbGFibGUuXG4gICAgICovXG4gICAgbmV4dEN1cnNvcjogei5vcHRpb25hbChDdXJzb3JTY2hlbWEpLFxufSk7XG4vKiBSZXNvdXJjZXMgKi9cbi8qKlxuICogVGhlIGNvbnRlbnRzIG9mIGEgc3BlY2lmaWMgcmVzb3VyY2Ugb3Igc3ViLXJlc291cmNlLlxuICovXG5leHBvcnQgY29uc3QgUmVzb3VyY2VDb250ZW50c1NjaGVtYSA9IHpcbiAgICAub2JqZWN0KHtcbiAgICAvKipcbiAgICAgKiBUaGUgVVJJIG9mIHRoaXMgcmVzb3VyY2UuXG4gICAgICovXG4gICAgdXJpOiB6LnN0cmluZygpLFxuICAgIC8qKlxuICAgICAqIFRoZSBNSU1FIHR5cGUgb2YgdGhpcyByZXNvdXJjZSwgaWYga25vd24uXG4gICAgICovXG4gICAgbWltZVR5cGU6IHoub3B0aW9uYWwoei5zdHJpbmcoKSksXG59KVxuICAgIC5wYXNzdGhyb3VnaCgpO1xuZXhwb3J0IGNvbnN0IFRleHRSZXNvdXJjZUNvbnRlbnRzU2NoZW1hID0gUmVzb3VyY2VDb250ZW50c1NjaGVtYS5leHRlbmQoe1xuICAgIC8qKlxuICAgICAqIFRoZSB0ZXh0IG9mIHRoZSBpdGVtLiBUaGlzIG11c3Qgb25seSBiZSBzZXQgaWYgdGhlIGl0ZW0gY2FuIGFjdHVhbGx5IGJlIHJlcHJlc2VudGVkIGFzIHRleHQgKG5vdCBiaW5hcnkgZGF0YSkuXG4gICAgICovXG4gICAgdGV4dDogei5zdHJpbmcoKSxcbn0pO1xuZXhwb3J0IGNvbnN0IEJsb2JSZXNvdXJjZUNvbnRlbnRzU2NoZW1hID0gUmVzb3VyY2VDb250ZW50c1NjaGVtYS5leHRlbmQoe1xuICAgIC8qKlxuICAgICAqIEEgYmFzZTY0LWVuY29kZWQgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgYmluYXJ5IGRhdGEgb2YgdGhlIGl0ZW0uXG4gICAgICovXG4gICAgYmxvYjogei5zdHJpbmcoKS5iYXNlNjQoKSxcbn0pO1xuLyoqXG4gKiBBIGtub3duIHJlc291cmNlIHRoYXQgdGhlIHNlcnZlciBpcyBjYXBhYmxlIG9mIHJlYWRpbmcuXG4gKi9cbmV4cG9ydCBjb25zdCBSZXNvdXJjZVNjaGVtYSA9IHpcbiAgICAub2JqZWN0KHtcbiAgICAvKipcbiAgICAgKiBUaGUgVVJJIG9mIHRoaXMgcmVzb3VyY2UuXG4gICAgICovXG4gICAgdXJpOiB6LnN0cmluZygpLFxuICAgIC8qKlxuICAgICAqIEEgaHVtYW4tcmVhZGFibGUgbmFtZSBmb3IgdGhpcyByZXNvdXJjZS5cbiAgICAgKlxuICAgICAqIFRoaXMgY2FuIGJlIHVzZWQgYnkgY2xpZW50cyB0byBwb3B1bGF0ZSBVSSBlbGVtZW50cy5cbiAgICAgKi9cbiAgICBuYW1lOiB6LnN0cmluZygpLFxuICAgIC8qKlxuICAgICAqIEEgZGVzY3JpcHRpb24gb2Ygd2hhdCB0aGlzIHJlc291cmNlIHJlcHJlc2VudHMuXG4gICAgICpcbiAgICAgKiBUaGlzIGNhbiBiZSB1c2VkIGJ5IGNsaWVudHMgdG8gaW1wcm92ZSB0aGUgTExNJ3MgdW5kZXJzdGFuZGluZyBvZiBhdmFpbGFibGUgcmVzb3VyY2VzLiBJdCBjYW4gYmUgdGhvdWdodCBvZiBsaWtlIGEgXCJoaW50XCIgdG8gdGhlIG1vZGVsLlxuICAgICAqL1xuICAgIGRlc2NyaXB0aW9uOiB6Lm9wdGlvbmFsKHouc3RyaW5nKCkpLFxuICAgIC8qKlxuICAgICAqIFRoZSBNSU1FIHR5cGUgb2YgdGhpcyByZXNvdXJjZSwgaWYga25vd24uXG4gICAgICovXG4gICAgbWltZVR5cGU6IHoub3B0aW9uYWwoei5zdHJpbmcoKSksXG59KVxuICAgIC5wYXNzdGhyb3VnaCgpO1xuLyoqXG4gKiBBIHRlbXBsYXRlIGRlc2NyaXB0aW9uIGZvciByZXNvdXJjZXMgYXZhaWxhYmxlIG9uIHRoZSBzZXJ2ZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBSZXNvdXJjZVRlbXBsYXRlU2NoZW1hID0gelxuICAgIC5vYmplY3Qoe1xuICAgIC8qKlxuICAgICAqIEEgVVJJIHRlbXBsYXRlIChhY2NvcmRpbmcgdG8gUkZDIDY1NzApIHRoYXQgY2FuIGJlIHVzZWQgdG8gY29uc3RydWN0IHJlc291cmNlIFVSSXMuXG4gICAgICovXG4gICAgdXJpVGVtcGxhdGU6IHouc3RyaW5nKCksXG4gICAgLyoqXG4gICAgICogQSBodW1hbi1yZWFkYWJsZSBuYW1lIGZvciB0aGUgdHlwZSBvZiByZXNvdXJjZSB0aGlzIHRlbXBsYXRlIHJlZmVycyB0by5cbiAgICAgKlxuICAgICAqIFRoaXMgY2FuIGJlIHVzZWQgYnkgY2xpZW50cyB0byBwb3B1bGF0ZSBVSSBlbGVtZW50cy5cbiAgICAgKi9cbiAgICBuYW1lOiB6LnN0cmluZygpLFxuICAgIC8qKlxuICAgICAqIEEgZGVzY3JpcHRpb24gb2Ygd2hhdCB0aGlzIHRlbXBsYXRlIGlzIGZvci5cbiAgICAgKlxuICAgICAqIFRoaXMgY2FuIGJlIHVzZWQgYnkgY2xpZW50cyB0byBpbXByb3ZlIHRoZSBMTE0ncyB1bmRlcnN0YW5kaW5nIG9mIGF2YWlsYWJsZSByZXNvdXJjZXMuIEl0IGNhbiBiZSB0aG91Z2h0IG9mIGxpa2UgYSBcImhpbnRcIiB0byB0aGUgbW9kZWwuXG4gICAgICovXG4gICAgZGVzY3JpcHRpb246IHoub3B0aW9uYWwoei5zdHJpbmcoKSksXG4gICAgLyoqXG4gICAgICogVGhlIE1JTUUgdHlwZSBmb3IgYWxsIHJlc291cmNlcyB0aGF0IG1hdGNoIHRoaXMgdGVtcGxhdGUuIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW5jbHVkZWQgaWYgYWxsIHJlc291cmNlcyBtYXRjaGluZyB0aGlzIHRlbXBsYXRlIGhhdmUgdGhlIHNhbWUgdHlwZS5cbiAgICAgKi9cbiAgICBtaW1lVHlwZTogei5vcHRpb25hbCh6LnN0cmluZygpKSxcbn0pXG4gICAgLnBhc3N0aHJvdWdoKCk7XG4vKipcbiAqIFNlbnQgZnJvbSB0aGUgY2xpZW50IHRvIHJlcXVlc3QgYSBsaXN0IG9mIHJlc291cmNlcyB0aGUgc2VydmVyIGhhcy5cbiAqL1xuZXhwb3J0IGNvbnN0IExpc3RSZXNvdXJjZXNSZXF1ZXN0U2NoZW1hID0gUGFnaW5hdGVkUmVxdWVzdFNjaGVtYS5leHRlbmQoe1xuICAgIG1ldGhvZDogei5saXRlcmFsKFwicmVzb3VyY2VzL2xpc3RcIiksXG59KTtcbi8qKlxuICogVGhlIHNlcnZlcidzIHJlc3BvbnNlIHRvIGEgcmVzb3VyY2VzL2xpc3QgcmVxdWVzdCBmcm9tIHRoZSBjbGllbnQuXG4gKi9cbmV4cG9ydCBjb25zdCBMaXN0UmVzb3VyY2VzUmVzdWx0U2NoZW1hID0gUGFnaW5hdGVkUmVzdWx0U2NoZW1hLmV4dGVuZCh7XG4gICAgcmVzb3VyY2VzOiB6LmFycmF5KFJlc291cmNlU2NoZW1hKSxcbn0pO1xuLyoqXG4gKiBTZW50IGZyb20gdGhlIGNsaWVudCB0byByZXF1ZXN0IGEgbGlzdCBvZiByZXNvdXJjZSB0ZW1wbGF0ZXMgdGhlIHNlcnZlciBoYXMuXG4gKi9cbmV4cG9ydCBjb25zdCBMaXN0UmVzb3VyY2VUZW1wbGF0ZXNSZXF1ZXN0U2NoZW1hID0gUGFnaW5hdGVkUmVxdWVzdFNjaGVtYS5leHRlbmQoe1xuICAgIG1ldGhvZDogei5saXRlcmFsKFwicmVzb3VyY2VzL3RlbXBsYXRlcy9saXN0XCIpLFxufSk7XG4vKipcbiAqIFRoZSBzZXJ2ZXIncyByZXNwb25zZSB0byBhIHJlc291cmNlcy90ZW1wbGF0ZXMvbGlzdCByZXF1ZXN0IGZyb20gdGhlIGNsaWVudC5cbiAqL1xuZXhwb3J0IGNvbnN0IExpc3RSZXNvdXJjZVRlbXBsYXRlc1Jlc3VsdFNjaGVtYSA9IFBhZ2luYXRlZFJlc3VsdFNjaGVtYS5leHRlbmQoe1xuICAgIHJlc291cmNlVGVtcGxhdGVzOiB6LmFycmF5KFJlc291cmNlVGVtcGxhdGVTY2hlbWEpLFxufSk7XG4vKipcbiAqIFNlbnQgZnJvbSB0aGUgY2xpZW50IHRvIHRoZSBzZXJ2ZXIsIHRvIHJlYWQgYSBzcGVjaWZpYyByZXNvdXJjZSBVUkkuXG4gKi9cbmV4cG9ydCBjb25zdCBSZWFkUmVzb3VyY2VSZXF1ZXN0U2NoZW1hID0gUmVxdWVzdFNjaGVtYS5leHRlbmQoe1xuICAgIG1ldGhvZDogei5saXRlcmFsKFwicmVzb3VyY2VzL3JlYWRcIiksXG4gICAgcGFyYW1zOiBCYXNlUmVxdWVzdFBhcmFtc1NjaGVtYS5leHRlbmQoe1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIFVSSSBvZiB0aGUgcmVzb3VyY2UgdG8gcmVhZC4gVGhlIFVSSSBjYW4gdXNlIGFueSBwcm90b2NvbDsgaXQgaXMgdXAgdG8gdGhlIHNlcnZlciBob3cgdG8gaW50ZXJwcmV0IGl0LlxuICAgICAgICAgKi9cbiAgICAgICAgdXJpOiB6LnN0cmluZygpLFxuICAgIH0pLFxufSk7XG4vKipcbiAqIFRoZSBzZXJ2ZXIncyByZXNwb25zZSB0byBhIHJlc291cmNlcy9yZWFkIHJlcXVlc3QgZnJvbSB0aGUgY2xpZW50LlxuICovXG5leHBvcnQgY29uc3QgUmVhZFJlc291cmNlUmVzdWx0U2NoZW1hID0gUmVzdWx0U2NoZW1hLmV4dGVuZCh7XG4gICAgY29udGVudHM6IHouYXJyYXkoei51bmlvbihbVGV4dFJlc291cmNlQ29udGVudHNTY2hlbWEsIEJsb2JSZXNvdXJjZUNvbnRlbnRzU2NoZW1hXSkpLFxufSk7XG4vKipcbiAqIEFuIG9wdGlvbmFsIG5vdGlmaWNhdGlvbiBmcm9tIHRoZSBzZXJ2ZXIgdG8gdGhlIGNsaWVudCwgaW5mb3JtaW5nIGl0IHRoYXQgdGhlIGxpc3Qgb2YgcmVzb3VyY2VzIGl0IGNhbiByZWFkIGZyb20gaGFzIGNoYW5nZWQuIFRoaXMgbWF5IGJlIGlzc3VlZCBieSBzZXJ2ZXJzIHdpdGhvdXQgYW55IHByZXZpb3VzIHN1YnNjcmlwdGlvbiBmcm9tIHRoZSBjbGllbnQuXG4gKi9cbmV4cG9ydCBjb25zdCBSZXNvdXJjZUxpc3RDaGFuZ2VkTm90aWZpY2F0aW9uU2NoZW1hID0gTm90aWZpY2F0aW9uU2NoZW1hLmV4dGVuZCh7XG4gICAgbWV0aG9kOiB6LmxpdGVyYWwoXCJub3RpZmljYXRpb25zL3Jlc291cmNlcy9saXN0X2NoYW5nZWRcIiksXG59KTtcbi8qKlxuICogU2VudCBmcm9tIHRoZSBjbGllbnQgdG8gcmVxdWVzdCByZXNvdXJjZXMvdXBkYXRlZCBub3RpZmljYXRpb25zIGZyb20gdGhlIHNlcnZlciB3aGVuZXZlciBhIHBhcnRpY3VsYXIgcmVzb3VyY2UgY2hhbmdlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IFN1YnNjcmliZVJlcXVlc3RTY2hlbWEgPSBSZXF1ZXN0U2NoZW1hLmV4dGVuZCh7XG4gICAgbWV0aG9kOiB6LmxpdGVyYWwoXCJyZXNvdXJjZXMvc3Vic2NyaWJlXCIpLFxuICAgIHBhcmFtczogQmFzZVJlcXVlc3RQYXJhbXNTY2hlbWEuZXh0ZW5kKHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoZSBVUkkgb2YgdGhlIHJlc291cmNlIHRvIHN1YnNjcmliZSB0by4gVGhlIFVSSSBjYW4gdXNlIGFueSBwcm90b2NvbDsgaXQgaXMgdXAgdG8gdGhlIHNlcnZlciBob3cgdG8gaW50ZXJwcmV0IGl0LlxuICAgICAgICAgKi9cbiAgICAgICAgdXJpOiB6LnN0cmluZygpLFxuICAgIH0pLFxufSk7XG4vKipcbiAqIFNlbnQgZnJvbSB0aGUgY2xpZW50IHRvIHJlcXVlc3QgY2FuY2VsbGF0aW9uIG9mIHJlc291cmNlcy91cGRhdGVkIG5vdGlmaWNhdGlvbnMgZnJvbSB0aGUgc2VydmVyLiBUaGlzIHNob3VsZCBmb2xsb3cgYSBwcmV2aW91cyByZXNvdXJjZXMvc3Vic2NyaWJlIHJlcXVlc3QuXG4gKi9cbmV4cG9ydCBjb25zdCBVbnN1YnNjcmliZVJlcXVlc3RTY2hlbWEgPSBSZXF1ZXN0U2NoZW1hLmV4dGVuZCh7XG4gICAgbWV0aG9kOiB6LmxpdGVyYWwoXCJyZXNvdXJjZXMvdW5zdWJzY3JpYmVcIiksXG4gICAgcGFyYW1zOiBCYXNlUmVxdWVzdFBhcmFtc1NjaGVtYS5leHRlbmQoe1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIFVSSSBvZiB0aGUgcmVzb3VyY2UgdG8gdW5zdWJzY3JpYmUgZnJvbS5cbiAgICAgICAgICovXG4gICAgICAgIHVyaTogei5zdHJpbmcoKSxcbiAgICB9KSxcbn0pO1xuLyoqXG4gKiBBIG5vdGlmaWNhdGlvbiBmcm9tIHRoZSBzZXJ2ZXIgdG8gdGhlIGNsaWVudCwgaW5mb3JtaW5nIGl0IHRoYXQgYSByZXNvdXJjZSBoYXMgY2hhbmdlZCBhbmQgbWF5IG5lZWQgdG8gYmUgcmVhZCBhZ2Fpbi4gVGhpcyBzaG91bGQgb25seSBiZSBzZW50IGlmIHRoZSBjbGllbnQgcHJldmlvdXNseSBzZW50IGEgcmVzb3VyY2VzL3N1YnNjcmliZSByZXF1ZXN0LlxuICovXG5leHBvcnQgY29uc3QgUmVzb3VyY2VVcGRhdGVkTm90aWZpY2F0aW9uU2NoZW1hID0gTm90aWZpY2F0aW9uU2NoZW1hLmV4dGVuZCh7XG4gICAgbWV0aG9kOiB6LmxpdGVyYWwoXCJub3RpZmljYXRpb25zL3Jlc291cmNlcy91cGRhdGVkXCIpLFxuICAgIHBhcmFtczogQmFzZU5vdGlmaWNhdGlvblBhcmFtc1NjaGVtYS5leHRlbmQoe1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIFVSSSBvZiB0aGUgcmVzb3VyY2UgdGhhdCBoYXMgYmVlbiB1cGRhdGVkLiBUaGlzIG1pZ2h0IGJlIGEgc3ViLXJlc291cmNlIG9mIHRoZSBvbmUgdGhhdCB0aGUgY2xpZW50IGFjdHVhbGx5IHN1YnNjcmliZWQgdG8uXG4gICAgICAgICAqL1xuICAgICAgICB1cmk6IHouc3RyaW5nKCksXG4gICAgfSksXG59KTtcbi8qIFByb21wdHMgKi9cbi8qKlxuICogRGVzY3JpYmVzIGFuIGFyZ3VtZW50IHRoYXQgYSBwcm9tcHQgY2FuIGFjY2VwdC5cbiAqL1xuZXhwb3J0IGNvbnN0IFByb21wdEFyZ3VtZW50U2NoZW1hID0gelxuICAgIC5vYmplY3Qoe1xuICAgIC8qKlxuICAgICAqIFRoZSBuYW1lIG9mIHRoZSBhcmd1bWVudC5cbiAgICAgKi9cbiAgICBuYW1lOiB6LnN0cmluZygpLFxuICAgIC8qKlxuICAgICAqIEEgaHVtYW4tcmVhZGFibGUgZGVzY3JpcHRpb24gb2YgdGhlIGFyZ3VtZW50LlxuICAgICAqL1xuICAgIGRlc2NyaXB0aW9uOiB6Lm9wdGlvbmFsKHouc3RyaW5nKCkpLFxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhpcyBhcmd1bWVudCBtdXN0IGJlIHByb3ZpZGVkLlxuICAgICAqL1xuICAgIHJlcXVpcmVkOiB6Lm9wdGlvbmFsKHouYm9vbGVhbigpKSxcbn0pXG4gICAgLnBhc3N0aHJvdWdoKCk7XG4vKipcbiAqIEEgcHJvbXB0IG9yIHByb21wdCB0ZW1wbGF0ZSB0aGF0IHRoZSBzZXJ2ZXIgb2ZmZXJzLlxuICovXG5leHBvcnQgY29uc3QgUHJvbXB0U2NoZW1hID0gelxuICAgIC5vYmplY3Qoe1xuICAgIC8qKlxuICAgICAqIFRoZSBuYW1lIG9mIHRoZSBwcm9tcHQgb3IgcHJvbXB0IHRlbXBsYXRlLlxuICAgICAqL1xuICAgIG5hbWU6IHouc3RyaW5nKCksXG4gICAgLyoqXG4gICAgICogQW4gb3B0aW9uYWwgZGVzY3JpcHRpb24gb2Ygd2hhdCB0aGlzIHByb21wdCBwcm92aWRlc1xuICAgICAqL1xuICAgIGRlc2NyaXB0aW9uOiB6Lm9wdGlvbmFsKHouc3RyaW5nKCkpLFxuICAgIC8qKlxuICAgICAqIEEgbGlzdCBvZiBhcmd1bWVudHMgdG8gdXNlIGZvciB0ZW1wbGF0aW5nIHRoZSBwcm9tcHQuXG4gICAgICovXG4gICAgYXJndW1lbnRzOiB6Lm9wdGlvbmFsKHouYXJyYXkoUHJvbXB0QXJndW1lbnRTY2hlbWEpKSxcbn0pXG4gICAgLnBhc3N0aHJvdWdoKCk7XG4vKipcbiAqIFNlbnQgZnJvbSB0aGUgY2xpZW50IHRvIHJlcXVlc3QgYSBsaXN0IG9mIHByb21wdHMgYW5kIHByb21wdCB0ZW1wbGF0ZXMgdGhlIHNlcnZlciBoYXMuXG4gKi9cbmV4cG9ydCBjb25zdCBMaXN0UHJvbXB0c1JlcXVlc3RTY2hlbWEgPSBQYWdpbmF0ZWRSZXF1ZXN0U2NoZW1hLmV4dGVuZCh7XG4gICAgbWV0aG9kOiB6LmxpdGVyYWwoXCJwcm9tcHRzL2xpc3RcIiksXG59KTtcbi8qKlxuICogVGhlIHNlcnZlcidzIHJlc3BvbnNlIHRvIGEgcHJvbXB0cy9saXN0IHJlcXVlc3QgZnJvbSB0aGUgY2xpZW50LlxuICovXG5leHBvcnQgY29uc3QgTGlzdFByb21wdHNSZXN1bHRTY2hlbWEgPSBQYWdpbmF0ZWRSZXN1bHRTY2hlbWEuZXh0ZW5kKHtcbiAgICBwcm9tcHRzOiB6LmFycmF5KFByb21wdFNjaGVtYSksXG59KTtcbi8qKlxuICogVXNlZCBieSB0aGUgY2xpZW50IHRvIGdldCBhIHByb21wdCBwcm92aWRlZCBieSB0aGUgc2VydmVyLlxuICovXG5leHBvcnQgY29uc3QgR2V0UHJvbXB0UmVxdWVzdFNjaGVtYSA9IFJlcXVlc3RTY2hlbWEuZXh0ZW5kKHtcbiAgICBtZXRob2Q6IHoubGl0ZXJhbChcInByb21wdHMvZ2V0XCIpLFxuICAgIHBhcmFtczogQmFzZVJlcXVlc3RQYXJhbXNTY2hlbWEuZXh0ZW5kKHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoZSBuYW1lIG9mIHRoZSBwcm9tcHQgb3IgcHJvbXB0IHRlbXBsYXRlLlxuICAgICAgICAgKi9cbiAgICAgICAgbmFtZTogei5zdHJpbmcoKSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEFyZ3VtZW50cyB0byB1c2UgZm9yIHRlbXBsYXRpbmcgdGhlIHByb21wdC5cbiAgICAgICAgICovXG4gICAgICAgIGFyZ3VtZW50czogei5vcHRpb25hbCh6LnJlY29yZCh6LnN0cmluZygpKSksXG4gICAgfSksXG59KTtcbi8qKlxuICogVGV4dCBwcm92aWRlZCB0byBvciBmcm9tIGFuIExMTS5cbiAqL1xuZXhwb3J0IGNvbnN0IFRleHRDb250ZW50U2NoZW1hID0gelxuICAgIC5vYmplY3Qoe1xuICAgIHR5cGU6IHoubGl0ZXJhbChcInRleHRcIiksXG4gICAgLyoqXG4gICAgICogVGhlIHRleHQgY29udGVudCBvZiB0aGUgbWVzc2FnZS5cbiAgICAgKi9cbiAgICB0ZXh0OiB6LnN0cmluZygpLFxufSlcbiAgICAucGFzc3Rocm91Z2goKTtcbi8qKlxuICogQW4gaW1hZ2UgcHJvdmlkZWQgdG8gb3IgZnJvbSBhbiBMTE0uXG4gKi9cbmV4cG9ydCBjb25zdCBJbWFnZUNvbnRlbnRTY2hlbWEgPSB6XG4gICAgLm9iamVjdCh7XG4gICAgdHlwZTogei5saXRlcmFsKFwiaW1hZ2VcIiksXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2U2NC1lbmNvZGVkIGltYWdlIGRhdGEuXG4gICAgICovXG4gICAgZGF0YTogei5zdHJpbmcoKS5iYXNlNjQoKSxcbiAgICAvKipcbiAgICAgKiBUaGUgTUlNRSB0eXBlIG9mIHRoZSBpbWFnZS4gRGlmZmVyZW50IHByb3ZpZGVycyBtYXkgc3VwcG9ydCBkaWZmZXJlbnQgaW1hZ2UgdHlwZXMuXG4gICAgICovXG4gICAgbWltZVR5cGU6IHouc3RyaW5nKCksXG59KVxuICAgIC5wYXNzdGhyb3VnaCgpO1xuLyoqXG4gKiBUaGUgY29udGVudHMgb2YgYSByZXNvdXJjZSwgZW1iZWRkZWQgaW50byBhIHByb21wdCBvciB0b29sIGNhbGwgcmVzdWx0LlxuICovXG5leHBvcnQgY29uc3QgRW1iZWRkZWRSZXNvdXJjZVNjaGVtYSA9IHpcbiAgICAub2JqZWN0KHtcbiAgICB0eXBlOiB6LmxpdGVyYWwoXCJyZXNvdXJjZVwiKSxcbiAgICByZXNvdXJjZTogei51bmlvbihbVGV4dFJlc291cmNlQ29udGVudHNTY2hlbWEsIEJsb2JSZXNvdXJjZUNvbnRlbnRzU2NoZW1hXSksXG59KVxuICAgIC5wYXNzdGhyb3VnaCgpO1xuLyoqXG4gKiBEZXNjcmliZXMgYSBtZXNzYWdlIHJldHVybmVkIGFzIHBhcnQgb2YgYSBwcm9tcHQuXG4gKi9cbmV4cG9ydCBjb25zdCBQcm9tcHRNZXNzYWdlU2NoZW1hID0gelxuICAgIC5vYmplY3Qoe1xuICAgIHJvbGU6IHouZW51bShbXCJ1c2VyXCIsIFwiYXNzaXN0YW50XCJdKSxcbiAgICBjb250ZW50OiB6LnVuaW9uKFtcbiAgICAgICAgVGV4dENvbnRlbnRTY2hlbWEsXG4gICAgICAgIEltYWdlQ29udGVudFNjaGVtYSxcbiAgICAgICAgRW1iZWRkZWRSZXNvdXJjZVNjaGVtYSxcbiAgICBdKSxcbn0pXG4gICAgLnBhc3N0aHJvdWdoKCk7XG4vKipcbiAqIFRoZSBzZXJ2ZXIncyByZXNwb25zZSB0byBhIHByb21wdHMvZ2V0IHJlcXVlc3QgZnJvbSB0aGUgY2xpZW50LlxuICovXG5leHBvcnQgY29uc3QgR2V0UHJvbXB0UmVzdWx0U2NoZW1hID0gUmVzdWx0U2NoZW1hLmV4dGVuZCh7XG4gICAgLyoqXG4gICAgICogQW4gb3B0aW9uYWwgZGVzY3JpcHRpb24gZm9yIHRoZSBwcm9tcHQuXG4gICAgICovXG4gICAgZGVzY3JpcHRpb246IHoub3B0aW9uYWwoei5zdHJpbmcoKSksXG4gICAgbWVzc2FnZXM6IHouYXJyYXkoUHJvbXB0TWVzc2FnZVNjaGVtYSksXG59KTtcbi8qKlxuICogQW4gb3B0aW9uYWwgbm90aWZpY2F0aW9uIGZyb20gdGhlIHNlcnZlciB0byB0aGUgY2xpZW50LCBpbmZvcm1pbmcgaXQgdGhhdCB0aGUgbGlzdCBvZiBwcm9tcHRzIGl0IG9mZmVycyBoYXMgY2hhbmdlZC4gVGhpcyBtYXkgYmUgaXNzdWVkIGJ5IHNlcnZlcnMgd2l0aG91dCBhbnkgcHJldmlvdXMgc3Vic2NyaXB0aW9uIGZyb20gdGhlIGNsaWVudC5cbiAqL1xuZXhwb3J0IGNvbnN0IFByb21wdExpc3RDaGFuZ2VkTm90aWZpY2F0aW9uU2NoZW1hID0gTm90aWZpY2F0aW9uU2NoZW1hLmV4dGVuZCh7XG4gICAgbWV0aG9kOiB6LmxpdGVyYWwoXCJub3RpZmljYXRpb25zL3Byb21wdHMvbGlzdF9jaGFuZ2VkXCIpLFxufSk7XG4vKiBUb29scyAqL1xuLyoqXG4gKiBEZWZpbml0aW9uIGZvciBhIHRvb2wgdGhlIGNsaWVudCBjYW4gY2FsbC5cbiAqL1xuZXhwb3J0IGNvbnN0IFRvb2xTY2hlbWEgPSB6XG4gICAgLm9iamVjdCh7XG4gICAgLyoqXG4gICAgICogVGhlIG5hbWUgb2YgdGhlIHRvb2wuXG4gICAgICovXG4gICAgbmFtZTogei5zdHJpbmcoKSxcbiAgICAvKipcbiAgICAgKiBBIGh1bWFuLXJlYWRhYmxlIGRlc2NyaXB0aW9uIG9mIHRoZSB0b29sLlxuICAgICAqL1xuICAgIGRlc2NyaXB0aW9uOiB6Lm9wdGlvbmFsKHouc3RyaW5nKCkpLFxuICAgIC8qKlxuICAgICAqIEEgSlNPTiBTY2hlbWEgb2JqZWN0IGRlZmluaW5nIHRoZSBleHBlY3RlZCBwYXJhbWV0ZXJzIGZvciB0aGUgdG9vbC5cbiAgICAgKi9cbiAgICBpbnB1dFNjaGVtYTogelxuICAgICAgICAub2JqZWN0KHtcbiAgICAgICAgdHlwZTogei5saXRlcmFsKFwib2JqZWN0XCIpLFxuICAgICAgICBwcm9wZXJ0aWVzOiB6Lm9wdGlvbmFsKHoub2JqZWN0KHt9KS5wYXNzdGhyb3VnaCgpKSxcbiAgICB9KVxuICAgICAgICAucGFzc3Rocm91Z2goKSxcbn0pXG4gICAgLnBhc3N0aHJvdWdoKCk7XG4vKipcbiAqIFNlbnQgZnJvbSB0aGUgY2xpZW50IHRvIHJlcXVlc3QgYSBsaXN0IG9mIHRvb2xzIHRoZSBzZXJ2ZXIgaGFzLlxuICovXG5leHBvcnQgY29uc3QgTGlzdFRvb2xzUmVxdWVzdFNjaGVtYSA9IFBhZ2luYXRlZFJlcXVlc3RTY2hlbWEuZXh0ZW5kKHtcbiAgICBtZXRob2Q6IHoubGl0ZXJhbChcInRvb2xzL2xpc3RcIiksXG59KTtcbi8qKlxuICogVGhlIHNlcnZlcidzIHJlc3BvbnNlIHRvIGEgdG9vbHMvbGlzdCByZXF1ZXN0IGZyb20gdGhlIGNsaWVudC5cbiAqL1xuZXhwb3J0IGNvbnN0IExpc3RUb29sc1Jlc3VsdFNjaGVtYSA9IFBhZ2luYXRlZFJlc3VsdFNjaGVtYS5leHRlbmQoe1xuICAgIHRvb2xzOiB6LmFycmF5KFRvb2xTY2hlbWEpLFxufSk7XG4vKipcbiAqIFRoZSBzZXJ2ZXIncyByZXNwb25zZSB0byBhIHRvb2wgY2FsbC5cbiAqL1xuZXhwb3J0IGNvbnN0IENhbGxUb29sUmVzdWx0U2NoZW1hID0gUmVzdWx0U2NoZW1hLmV4dGVuZCh7XG4gICAgY29udGVudDogei5hcnJheSh6LnVuaW9uKFtUZXh0Q29udGVudFNjaGVtYSwgSW1hZ2VDb250ZW50U2NoZW1hLCBFbWJlZGRlZFJlc291cmNlU2NoZW1hXSkpLFxuICAgIGlzRXJyb3I6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLm9wdGlvbmFsKCksXG59KTtcbi8qKlxuICogQ2FsbFRvb2xSZXN1bHRTY2hlbWEgZXh0ZW5kZWQgd2l0aCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB0byBwcm90b2NvbCB2ZXJzaW9uIDIwMjQtMTAtMDcuXG4gKi9cbmV4cG9ydCBjb25zdCBDb21wYXRpYmlsaXR5Q2FsbFRvb2xSZXN1bHRTY2hlbWEgPSBDYWxsVG9vbFJlc3VsdFNjaGVtYS5vcihSZXN1bHRTY2hlbWEuZXh0ZW5kKHtcbiAgICB0b29sUmVzdWx0OiB6LnVua25vd24oKSxcbn0pKTtcbi8qKlxuICogVXNlZCBieSB0aGUgY2xpZW50IHRvIGludm9rZSBhIHRvb2wgcHJvdmlkZWQgYnkgdGhlIHNlcnZlci5cbiAqL1xuZXhwb3J0IGNvbnN0IENhbGxUb29sUmVxdWVzdFNjaGVtYSA9IFJlcXVlc3RTY2hlbWEuZXh0ZW5kKHtcbiAgICBtZXRob2Q6IHoubGl0ZXJhbChcInRvb2xzL2NhbGxcIiksXG4gICAgcGFyYW1zOiBCYXNlUmVxdWVzdFBhcmFtc1NjaGVtYS5leHRlbmQoe1xuICAgICAgICBuYW1lOiB6LnN0cmluZygpLFxuICAgICAgICBhcmd1bWVudHM6IHoub3B0aW9uYWwoei5yZWNvcmQoei51bmtub3duKCkpKSxcbiAgICB9KSxcbn0pO1xuLyoqXG4gKiBBbiBvcHRpb25hbCBub3RpZmljYXRpb24gZnJvbSB0aGUgc2VydmVyIHRvIHRoZSBjbGllbnQsIGluZm9ybWluZyBpdCB0aGF0IHRoZSBsaXN0IG9mIHRvb2xzIGl0IG9mZmVycyBoYXMgY2hhbmdlZC4gVGhpcyBtYXkgYmUgaXNzdWVkIGJ5IHNlcnZlcnMgd2l0aG91dCBhbnkgcHJldmlvdXMgc3Vic2NyaXB0aW9uIGZyb20gdGhlIGNsaWVudC5cbiAqL1xuZXhwb3J0IGNvbnN0IFRvb2xMaXN0Q2hhbmdlZE5vdGlmaWNhdGlvblNjaGVtYSA9IE5vdGlmaWNhdGlvblNjaGVtYS5leHRlbmQoe1xuICAgIG1ldGhvZDogei5saXRlcmFsKFwibm90aWZpY2F0aW9ucy90b29scy9saXN0X2NoYW5nZWRcIiksXG59KTtcbi8qIExvZ2dpbmcgKi9cbi8qKlxuICogVGhlIHNldmVyaXR5IG9mIGEgbG9nIG1lc3NhZ2UuXG4gKi9cbmV4cG9ydCBjb25zdCBMb2dnaW5nTGV2ZWxTY2hlbWEgPSB6LmVudW0oW1xuICAgIFwiZGVidWdcIixcbiAgICBcImluZm9cIixcbiAgICBcIm5vdGljZVwiLFxuICAgIFwid2FybmluZ1wiLFxuICAgIFwiZXJyb3JcIixcbiAgICBcImNyaXRpY2FsXCIsXG4gICAgXCJhbGVydFwiLFxuICAgIFwiZW1lcmdlbmN5XCIsXG5dKTtcbi8qKlxuICogQSByZXF1ZXN0IGZyb20gdGhlIGNsaWVudCB0byB0aGUgc2VydmVyLCB0byBlbmFibGUgb3IgYWRqdXN0IGxvZ2dpbmcuXG4gKi9cbmV4cG9ydCBjb25zdCBTZXRMZXZlbFJlcXVlc3RTY2hlbWEgPSBSZXF1ZXN0U2NoZW1hLmV4dGVuZCh7XG4gICAgbWV0aG9kOiB6LmxpdGVyYWwoXCJsb2dnaW5nL3NldExldmVsXCIpLFxuICAgIHBhcmFtczogQmFzZVJlcXVlc3RQYXJhbXNTY2hlbWEuZXh0ZW5kKHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoZSBsZXZlbCBvZiBsb2dnaW5nIHRoYXQgdGhlIGNsaWVudCB3YW50cyB0byByZWNlaXZlIGZyb20gdGhlIHNlcnZlci4gVGhlIHNlcnZlciBzaG91bGQgc2VuZCBhbGwgbG9ncyBhdCB0aGlzIGxldmVsIGFuZCBoaWdoZXIgKGkuZS4sIG1vcmUgc2V2ZXJlKSB0byB0aGUgY2xpZW50IGFzIG5vdGlmaWNhdGlvbnMvbG9nZ2luZy9tZXNzYWdlLlxuICAgICAgICAgKi9cbiAgICAgICAgbGV2ZWw6IExvZ2dpbmdMZXZlbFNjaGVtYSxcbiAgICB9KSxcbn0pO1xuLyoqXG4gKiBOb3RpZmljYXRpb24gb2YgYSBsb2cgbWVzc2FnZSBwYXNzZWQgZnJvbSBzZXJ2ZXIgdG8gY2xpZW50LiBJZiBubyBsb2dnaW5nL3NldExldmVsIHJlcXVlc3QgaGFzIGJlZW4gc2VudCBmcm9tIHRoZSBjbGllbnQsIHRoZSBzZXJ2ZXIgTUFZIGRlY2lkZSB3aGljaCBtZXNzYWdlcyB0byBzZW5kIGF1dG9tYXRpY2FsbHkuXG4gKi9cbmV4cG9ydCBjb25zdCBMb2dnaW5nTWVzc2FnZU5vdGlmaWNhdGlvblNjaGVtYSA9IE5vdGlmaWNhdGlvblNjaGVtYS5leHRlbmQoe1xuICAgIG1ldGhvZDogei5saXRlcmFsKFwibm90aWZpY2F0aW9ucy9tZXNzYWdlXCIpLFxuICAgIHBhcmFtczogQmFzZU5vdGlmaWNhdGlvblBhcmFtc1NjaGVtYS5leHRlbmQoe1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIHNldmVyaXR5IG9mIHRoaXMgbG9nIG1lc3NhZ2UuXG4gICAgICAgICAqL1xuICAgICAgICBsZXZlbDogTG9nZ2luZ0xldmVsU2NoZW1hLFxuICAgICAgICAvKipcbiAgICAgICAgICogQW4gb3B0aW9uYWwgbmFtZSBvZiB0aGUgbG9nZ2VyIGlzc3VpbmcgdGhpcyBtZXNzYWdlLlxuICAgICAgICAgKi9cbiAgICAgICAgbG9nZ2VyOiB6Lm9wdGlvbmFsKHouc3RyaW5nKCkpLFxuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIGRhdGEgdG8gYmUgbG9nZ2VkLCBzdWNoIGFzIGEgc3RyaW5nIG1lc3NhZ2Ugb3IgYW4gb2JqZWN0LiBBbnkgSlNPTiBzZXJpYWxpemFibGUgdHlwZSBpcyBhbGxvd2VkIGhlcmUuXG4gICAgICAgICAqL1xuICAgICAgICBkYXRhOiB6LnVua25vd24oKSxcbiAgICB9KSxcbn0pO1xuLyogU2FtcGxpbmcgKi9cbi8qKlxuICogSGludHMgdG8gdXNlIGZvciBtb2RlbCBzZWxlY3Rpb24uXG4gKi9cbmV4cG9ydCBjb25zdCBNb2RlbEhpbnRTY2hlbWEgPSB6XG4gICAgLm9iamVjdCh7XG4gICAgLyoqXG4gICAgICogQSBoaW50IGZvciBhIG1vZGVsIG5hbWUuXG4gICAgICovXG4gICAgbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxufSlcbiAgICAucGFzc3Rocm91Z2goKTtcbi8qKlxuICogVGhlIHNlcnZlcidzIHByZWZlcmVuY2VzIGZvciBtb2RlbCBzZWxlY3Rpb24sIHJlcXVlc3RlZCBvZiB0aGUgY2xpZW50IGR1cmluZyBzYW1wbGluZy5cbiAqL1xuZXhwb3J0IGNvbnN0IE1vZGVsUHJlZmVyZW5jZXNTY2hlbWEgPSB6XG4gICAgLm9iamVjdCh7XG4gICAgLyoqXG4gICAgICogT3B0aW9uYWwgaGludHMgdG8gdXNlIGZvciBtb2RlbCBzZWxlY3Rpb24uXG4gICAgICovXG4gICAgaGludHM6IHoub3B0aW9uYWwoei5hcnJheShNb2RlbEhpbnRTY2hlbWEpKSxcbiAgICAvKipcbiAgICAgKiBIb3cgbXVjaCB0byBwcmlvcml0aXplIGNvc3Qgd2hlbiBzZWxlY3RpbmcgYSBtb2RlbC5cbiAgICAgKi9cbiAgICBjb3N0UHJpb3JpdHk6IHoub3B0aW9uYWwoei5udW1iZXIoKS5taW4oMCkubWF4KDEpKSxcbiAgICAvKipcbiAgICAgKiBIb3cgbXVjaCB0byBwcmlvcml0aXplIHNhbXBsaW5nIHNwZWVkIChsYXRlbmN5KSB3aGVuIHNlbGVjdGluZyBhIG1vZGVsLlxuICAgICAqL1xuICAgIHNwZWVkUHJpb3JpdHk6IHoub3B0aW9uYWwoei5udW1iZXIoKS5taW4oMCkubWF4KDEpKSxcbiAgICAvKipcbiAgICAgKiBIb3cgbXVjaCB0byBwcmlvcml0aXplIGludGVsbGlnZW5jZSBhbmQgY2FwYWJpbGl0aWVzIHdoZW4gc2VsZWN0aW5nIGEgbW9kZWwuXG4gICAgICovXG4gICAgaW50ZWxsaWdlbmNlUHJpb3JpdHk6IHoub3B0aW9uYWwoei5udW1iZXIoKS5taW4oMCkubWF4KDEpKSxcbn0pXG4gICAgLnBhc3N0aHJvdWdoKCk7XG4vKipcbiAqIERlc2NyaWJlcyBhIG1lc3NhZ2UgaXNzdWVkIHRvIG9yIHJlY2VpdmVkIGZyb20gYW4gTExNIEFQSS5cbiAqL1xuZXhwb3J0IGNvbnN0IFNhbXBsaW5nTWVzc2FnZVNjaGVtYSA9IHpcbiAgICAub2JqZWN0KHtcbiAgICByb2xlOiB6LmVudW0oW1widXNlclwiLCBcImFzc2lzdGFudFwiXSksXG4gICAgY29udGVudDogei51bmlvbihbVGV4dENvbnRlbnRTY2hlbWEsIEltYWdlQ29udGVudFNjaGVtYV0pLFxufSlcbiAgICAucGFzc3Rocm91Z2goKTtcbi8qKlxuICogQSByZXF1ZXN0IGZyb20gdGhlIHNlcnZlciB0byBzYW1wbGUgYW4gTExNIHZpYSB0aGUgY2xpZW50LiBUaGUgY2xpZW50IGhhcyBmdWxsIGRpc2NyZXRpb24gb3ZlciB3aGljaCBtb2RlbCB0byBzZWxlY3QuIFRoZSBjbGllbnQgc2hvdWxkIGFsc28gaW5mb3JtIHRoZSB1c2VyIGJlZm9yZSBiZWdpbm5pbmcgc2FtcGxpbmcsIHRvIGFsbG93IHRoZW0gdG8gaW5zcGVjdCB0aGUgcmVxdWVzdCAoaHVtYW4gaW4gdGhlIGxvb3ApIGFuZCBkZWNpZGUgd2hldGhlciB0byBhcHByb3ZlIGl0LlxuICovXG5leHBvcnQgY29uc3QgQ3JlYXRlTWVzc2FnZVJlcXVlc3RTY2hlbWEgPSBSZXF1ZXN0U2NoZW1hLmV4dGVuZCh7XG4gICAgbWV0aG9kOiB6LmxpdGVyYWwoXCJzYW1wbGluZy9jcmVhdGVNZXNzYWdlXCIpLFxuICAgIHBhcmFtczogQmFzZVJlcXVlc3RQYXJhbXNTY2hlbWEuZXh0ZW5kKHtcbiAgICAgICAgbWVzc2FnZXM6IHouYXJyYXkoU2FtcGxpbmdNZXNzYWdlU2NoZW1hKSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEFuIG9wdGlvbmFsIHN5c3RlbSBwcm9tcHQgdGhlIHNlcnZlciB3YW50cyB0byB1c2UgZm9yIHNhbXBsaW5nLiBUaGUgY2xpZW50IE1BWSBtb2RpZnkgb3Igb21pdCB0aGlzIHByb21wdC5cbiAgICAgICAgICovXG4gICAgICAgIHN5c3RlbVByb21wdDogei5vcHRpb25hbCh6LnN0cmluZygpKSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEEgcmVxdWVzdCB0byBpbmNsdWRlIGNvbnRleHQgZnJvbSBvbmUgb3IgbW9yZSBNQ1Agc2VydmVycyAoaW5jbHVkaW5nIHRoZSBjYWxsZXIpLCB0byBiZSBhdHRhY2hlZCB0byB0aGUgcHJvbXB0LiBUaGUgY2xpZW50IE1BWSBpZ25vcmUgdGhpcyByZXF1ZXN0LlxuICAgICAgICAgKi9cbiAgICAgICAgaW5jbHVkZUNvbnRleHQ6IHoub3B0aW9uYWwoei5lbnVtKFtcIm5vbmVcIiwgXCJ0aGlzU2VydmVyXCIsIFwiYWxsU2VydmVyc1wiXSkpLFxuICAgICAgICB0ZW1wZXJhdHVyZTogei5vcHRpb25hbCh6Lm51bWJlcigpKSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiB0b2tlbnMgdG8gc2FtcGxlLCBhcyByZXF1ZXN0ZWQgYnkgdGhlIHNlcnZlci4gVGhlIGNsaWVudCBNQVkgY2hvb3NlIHRvIHNhbXBsZSBmZXdlciB0b2tlbnMgdGhhbiByZXF1ZXN0ZWQuXG4gICAgICAgICAqL1xuICAgICAgICBtYXhUb2tlbnM6IHoubnVtYmVyKCkuaW50KCksXG4gICAgICAgIHN0b3BTZXF1ZW5jZXM6IHoub3B0aW9uYWwoei5hcnJheSh6LnN0cmluZygpKSksXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBPcHRpb25hbCBtZXRhZGF0YSB0byBwYXNzIHRocm91Z2ggdG8gdGhlIExMTSBwcm92aWRlci4gVGhlIGZvcm1hdCBvZiB0aGlzIG1ldGFkYXRhIGlzIHByb3ZpZGVyLXNwZWNpZmljLlxuICAgICAgICAgKi9cbiAgICAgICAgbWV0YWRhdGE6IHoub3B0aW9uYWwoei5vYmplY3Qoe30pLnBhc3N0aHJvdWdoKCkpLFxuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIHNlcnZlcidzIHByZWZlcmVuY2VzIGZvciB3aGljaCBtb2RlbCB0byBzZWxlY3QuXG4gICAgICAgICAqL1xuICAgICAgICBtb2RlbFByZWZlcmVuY2VzOiB6Lm9wdGlvbmFsKE1vZGVsUHJlZmVyZW5jZXNTY2hlbWEpLFxuICAgIH0pLFxufSk7XG4vKipcbiAqIFRoZSBjbGllbnQncyByZXNwb25zZSB0byBhIHNhbXBsaW5nL2NyZWF0ZV9tZXNzYWdlIHJlcXVlc3QgZnJvbSB0aGUgc2VydmVyLiBUaGUgY2xpZW50IHNob3VsZCBpbmZvcm0gdGhlIHVzZXIgYmVmb3JlIHJldHVybmluZyB0aGUgc2FtcGxlZCBtZXNzYWdlLCB0byBhbGxvdyB0aGVtIHRvIGluc3BlY3QgdGhlIHJlc3BvbnNlIChodW1hbiBpbiB0aGUgbG9vcCkgYW5kIGRlY2lkZSB3aGV0aGVyIHRvIGFsbG93IHRoZSBzZXJ2ZXIgdG8gc2VlIGl0LlxuICovXG5leHBvcnQgY29uc3QgQ3JlYXRlTWVzc2FnZVJlc3VsdFNjaGVtYSA9IFJlc3VsdFNjaGVtYS5leHRlbmQoe1xuICAgIC8qKlxuICAgICAqIFRoZSBuYW1lIG9mIHRoZSBtb2RlbCB0aGF0IGdlbmVyYXRlZCB0aGUgbWVzc2FnZS5cbiAgICAgKi9cbiAgICBtb2RlbDogei5zdHJpbmcoKSxcbiAgICAvKipcbiAgICAgKiBUaGUgcmVhc29uIHdoeSBzYW1wbGluZyBzdG9wcGVkLlxuICAgICAqL1xuICAgIHN0b3BSZWFzb246IHoub3B0aW9uYWwoei5lbnVtKFtcImVuZFR1cm5cIiwgXCJzdG9wU2VxdWVuY2VcIiwgXCJtYXhUb2tlbnNcIl0pLm9yKHouc3RyaW5nKCkpKSxcbiAgICByb2xlOiB6LmVudW0oW1widXNlclwiLCBcImFzc2lzdGFudFwiXSksXG4gICAgY29udGVudDogei5kaXNjcmltaW5hdGVkVW5pb24oXCJ0eXBlXCIsIFtcbiAgICAgICAgVGV4dENvbnRlbnRTY2hlbWEsXG4gICAgICAgIEltYWdlQ29udGVudFNjaGVtYSxcbiAgICBdKSxcbn0pO1xuLyogQXV0b2NvbXBsZXRlICovXG4vKipcbiAqIEEgcmVmZXJlbmNlIHRvIGEgcmVzb3VyY2Ugb3IgcmVzb3VyY2UgdGVtcGxhdGUgZGVmaW5pdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IFJlc291cmNlUmVmZXJlbmNlU2NoZW1hID0gelxuICAgIC5vYmplY3Qoe1xuICAgIHR5cGU6IHoubGl0ZXJhbChcInJlZi9yZXNvdXJjZVwiKSxcbiAgICAvKipcbiAgICAgKiBUaGUgVVJJIG9yIFVSSSB0ZW1wbGF0ZSBvZiB0aGUgcmVzb3VyY2UuXG4gICAgICovXG4gICAgdXJpOiB6LnN0cmluZygpLFxufSlcbiAgICAucGFzc3Rocm91Z2goKTtcbi8qKlxuICogSWRlbnRpZmllcyBhIHByb21wdC5cbiAqL1xuZXhwb3J0IGNvbnN0IFByb21wdFJlZmVyZW5jZVNjaGVtYSA9IHpcbiAgICAub2JqZWN0KHtcbiAgICB0eXBlOiB6LmxpdGVyYWwoXCJyZWYvcHJvbXB0XCIpLFxuICAgIC8qKlxuICAgICAqIFRoZSBuYW1lIG9mIHRoZSBwcm9tcHQgb3IgcHJvbXB0IHRlbXBsYXRlXG4gICAgICovXG4gICAgbmFtZTogei5zdHJpbmcoKSxcbn0pXG4gICAgLnBhc3N0aHJvdWdoKCk7XG4vKipcbiAqIEEgcmVxdWVzdCBmcm9tIHRoZSBjbGllbnQgdG8gdGhlIHNlcnZlciwgdG8gYXNrIGZvciBjb21wbGV0aW9uIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCBjb25zdCBDb21wbGV0ZVJlcXVlc3RTY2hlbWEgPSBSZXF1ZXN0U2NoZW1hLmV4dGVuZCh7XG4gICAgbWV0aG9kOiB6LmxpdGVyYWwoXCJjb21wbGV0aW9uL2NvbXBsZXRlXCIpLFxuICAgIHBhcmFtczogQmFzZVJlcXVlc3RQYXJhbXNTY2hlbWEuZXh0ZW5kKHtcbiAgICAgICAgcmVmOiB6LnVuaW9uKFtQcm9tcHRSZWZlcmVuY2VTY2hlbWEsIFJlc291cmNlUmVmZXJlbmNlU2NoZW1hXSksXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgYXJndW1lbnQncyBpbmZvcm1hdGlvblxuICAgICAgICAgKi9cbiAgICAgICAgYXJndW1lbnQ6IHpcbiAgICAgICAgICAgIC5vYmplY3Qoe1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUaGUgbmFtZSBvZiB0aGUgYXJndW1lbnRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgbmFtZTogei5zdHJpbmcoKSxcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogVGhlIHZhbHVlIG9mIHRoZSBhcmd1bWVudCB0byB1c2UgZm9yIGNvbXBsZXRpb24gbWF0Y2hpbmcuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHZhbHVlOiB6LnN0cmluZygpLFxuICAgICAgICB9KVxuICAgICAgICAgICAgLnBhc3N0aHJvdWdoKCksXG4gICAgfSksXG59KTtcbi8qKlxuICogVGhlIHNlcnZlcidzIHJlc3BvbnNlIHRvIGEgY29tcGxldGlvbi9jb21wbGV0ZSByZXF1ZXN0XG4gKi9cbmV4cG9ydCBjb25zdCBDb21wbGV0ZVJlc3VsdFNjaGVtYSA9IFJlc3VsdFNjaGVtYS5leHRlbmQoe1xuICAgIGNvbXBsZXRpb246IHpcbiAgICAgICAgLm9iamVjdCh7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBbiBhcnJheSBvZiBjb21wbGV0aW9uIHZhbHVlcy4gTXVzdCBub3QgZXhjZWVkIDEwMCBpdGVtcy5cbiAgICAgICAgICovXG4gICAgICAgIHZhbHVlczogei5hcnJheSh6LnN0cmluZygpKS5tYXgoMTAwKSxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFRoZSB0b3RhbCBudW1iZXIgb2YgY29tcGxldGlvbiBvcHRpb25zIGF2YWlsYWJsZS4gVGhpcyBjYW4gZXhjZWVkIHRoZSBudW1iZXIgb2YgdmFsdWVzIGFjdHVhbGx5IHNlbnQgaW4gdGhlIHJlc3BvbnNlLlxuICAgICAgICAgKi9cbiAgICAgICAgdG90YWw6IHoub3B0aW9uYWwoei5udW1iZXIoKS5pbnQoKSksXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGVyZSBhcmUgYWRkaXRpb25hbCBjb21wbGV0aW9uIG9wdGlvbnMgYmV5b25kIHRob3NlIHByb3ZpZGVkIGluIHRoZSBjdXJyZW50IHJlc3BvbnNlLCBldmVuIGlmIHRoZSBleGFjdCB0b3RhbCBpcyB1bmtub3duLlxuICAgICAgICAgKi9cbiAgICAgICAgaGFzTW9yZTogei5vcHRpb25hbCh6LmJvb2xlYW4oKSksXG4gICAgfSlcbiAgICAgICAgLnBhc3N0aHJvdWdoKCksXG59KTtcbi8qIFJvb3RzICovXG4vKipcbiAqIFJlcHJlc2VudHMgYSByb290IGRpcmVjdG9yeSBvciBmaWxlIHRoYXQgdGhlIHNlcnZlciBjYW4gb3BlcmF0ZSBvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IFJvb3RTY2hlbWEgPSB6XG4gICAgLm9iamVjdCh7XG4gICAgLyoqXG4gICAgICogVGhlIFVSSSBpZGVudGlmeWluZyB0aGUgcm9vdC4gVGhpcyAqbXVzdCogc3RhcnQgd2l0aCBmaWxlOi8vIGZvciBub3cuXG4gICAgICovXG4gICAgdXJpOiB6LnN0cmluZygpLnN0YXJ0c1dpdGgoXCJmaWxlOi8vXCIpLFxuICAgIC8qKlxuICAgICAqIEFuIG9wdGlvbmFsIG5hbWUgZm9yIHRoZSByb290LlxuICAgICAqL1xuICAgIG5hbWU6IHoub3B0aW9uYWwoei5zdHJpbmcoKSksXG59KVxuICAgIC5wYXNzdGhyb3VnaCgpO1xuLyoqXG4gKiBTZW50IGZyb20gdGhlIHNlcnZlciB0byByZXF1ZXN0IGEgbGlzdCBvZiByb290IFVSSXMgZnJvbSB0aGUgY2xpZW50LlxuICovXG5leHBvcnQgY29uc3QgTGlzdFJvb3RzUmVxdWVzdFNjaGVtYSA9IFJlcXVlc3RTY2hlbWEuZXh0ZW5kKHtcbiAgICBtZXRob2Q6IHoubGl0ZXJhbChcInJvb3RzL2xpc3RcIiksXG59KTtcbi8qKlxuICogVGhlIGNsaWVudCdzIHJlc3BvbnNlIHRvIGEgcm9vdHMvbGlzdCByZXF1ZXN0IGZyb20gdGhlIHNlcnZlci5cbiAqL1xuZXhwb3J0IGNvbnN0IExpc3RSb290c1Jlc3VsdFNjaGVtYSA9IFJlc3VsdFNjaGVtYS5leHRlbmQoe1xuICAgIHJvb3RzOiB6LmFycmF5KFJvb3RTY2hlbWEpLFxufSk7XG4vKipcbiAqIEEgbm90aWZpY2F0aW9uIGZyb20gdGhlIGNsaWVudCB0byB0aGUgc2VydmVyLCBpbmZvcm1pbmcgaXQgdGhhdCB0aGUgbGlzdCBvZiByb290cyBoYXMgY2hhbmdlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IFJvb3RzTGlzdENoYW5nZWROb3RpZmljYXRpb25TY2hlbWEgPSBOb3RpZmljYXRpb25TY2hlbWEuZXh0ZW5kKHtcbiAgICBtZXRob2Q6IHoubGl0ZXJhbChcIm5vdGlmaWNhdGlvbnMvcm9vdHMvbGlzdF9jaGFuZ2VkXCIpLFxufSk7XG4vKiBDbGllbnQgbWVzc2FnZXMgKi9cbmV4cG9ydCBjb25zdCBDbGllbnRSZXF1ZXN0U2NoZW1hID0gei51bmlvbihbXG4gICAgUGluZ1JlcXVlc3RTY2hlbWEsXG4gICAgSW5pdGlhbGl6ZVJlcXVlc3RTY2hlbWEsXG4gICAgQ29tcGxldGVSZXF1ZXN0U2NoZW1hLFxuICAgIFNldExldmVsUmVxdWVzdFNjaGVtYSxcbiAgICBHZXRQcm9tcHRSZXF1ZXN0U2NoZW1hLFxuICAgIExpc3RQcm9tcHRzUmVxdWVzdFNjaGVtYSxcbiAgICBMaXN0UmVzb3VyY2VzUmVxdWVzdFNjaGVtYSxcbiAgICBMaXN0UmVzb3VyY2VUZW1wbGF0ZXNSZXF1ZXN0U2NoZW1hLFxuICAgIFJlYWRSZXNvdXJjZVJlcXVlc3RTY2hlbWEsXG4gICAgU3Vic2NyaWJlUmVxdWVzdFNjaGVtYSxcbiAgICBVbnN1YnNjcmliZVJlcXVlc3RTY2hlbWEsXG4gICAgQ2FsbFRvb2xSZXF1ZXN0U2NoZW1hLFxuICAgIExpc3RUb29sc1JlcXVlc3RTY2hlbWEsXG5dKTtcbmV4cG9ydCBjb25zdCBDbGllbnROb3RpZmljYXRpb25TY2hlbWEgPSB6LnVuaW9uKFtcbiAgICBDYW5jZWxsZWROb3RpZmljYXRpb25TY2hlbWEsXG4gICAgUHJvZ3Jlc3NOb3RpZmljYXRpb25TY2hlbWEsXG4gICAgSW5pdGlhbGl6ZWROb3RpZmljYXRpb25TY2hlbWEsXG4gICAgUm9vdHNMaXN0Q2hhbmdlZE5vdGlmaWNhdGlvblNjaGVtYSxcbl0pO1xuZXhwb3J0IGNvbnN0IENsaWVudFJlc3VsdFNjaGVtYSA9IHoudW5pb24oW1xuICAgIEVtcHR5UmVzdWx0U2NoZW1hLFxuICAgIENyZWF0ZU1lc3NhZ2VSZXN1bHRTY2hlbWEsXG4gICAgTGlzdFJvb3RzUmVzdWx0U2NoZW1hLFxuXSk7XG4vKiBTZXJ2ZXIgbWVzc2FnZXMgKi9cbmV4cG9ydCBjb25zdCBTZXJ2ZXJSZXF1ZXN0U2NoZW1hID0gei51bmlvbihbXG4gICAgUGluZ1JlcXVlc3RTY2hlbWEsXG4gICAgQ3JlYXRlTWVzc2FnZVJlcXVlc3RTY2hlbWEsXG4gICAgTGlzdFJvb3RzUmVxdWVzdFNjaGVtYSxcbl0pO1xuZXhwb3J0IGNvbnN0IFNlcnZlck5vdGlmaWNhdGlvblNjaGVtYSA9IHoudW5pb24oW1xuICAgIENhbmNlbGxlZE5vdGlmaWNhdGlvblNjaGVtYSxcbiAgICBQcm9ncmVzc05vdGlmaWNhdGlvblNjaGVtYSxcbiAgICBMb2dnaW5nTWVzc2FnZU5vdGlmaWNhdGlvblNjaGVtYSxcbiAgICBSZXNvdXJjZVVwZGF0ZWROb3RpZmljYXRpb25TY2hlbWEsXG4gICAgUmVzb3VyY2VMaXN0Q2hhbmdlZE5vdGlmaWNhdGlvblNjaGVtYSxcbiAgICBUb29sTGlzdENoYW5nZWROb3RpZmljYXRpb25TY2hlbWEsXG4gICAgUHJvbXB0TGlzdENoYW5nZWROb3RpZmljYXRpb25TY2hlbWEsXG5dKTtcbmV4cG9ydCBjb25zdCBTZXJ2ZXJSZXN1bHRTY2hlbWEgPSB6LnVuaW9uKFtcbiAgICBFbXB0eVJlc3VsdFNjaGVtYSxcbiAgICBJbml0aWFsaXplUmVzdWx0U2NoZW1hLFxuICAgIENvbXBsZXRlUmVzdWx0U2NoZW1hLFxuICAgIEdldFByb21wdFJlc3VsdFNjaGVtYSxcbiAgICBMaXN0UHJvbXB0c1Jlc3VsdFNjaGVtYSxcbiAgICBMaXN0UmVzb3VyY2VzUmVzdWx0U2NoZW1hLFxuICAgIExpc3RSZXNvdXJjZVRlbXBsYXRlc1Jlc3VsdFNjaGVtYSxcbiAgICBSZWFkUmVzb3VyY2VSZXN1bHRTY2hlbWEsXG4gICAgQ2FsbFRvb2xSZXN1bHRTY2hlbWEsXG4gICAgTGlzdFRvb2xzUmVzdWx0U2NoZW1hLFxuXSk7XG5leHBvcnQgY2xhc3MgTWNwRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgY29uc3RydWN0b3IoY29kZSwgbWVzc2FnZSwgZGF0YSkge1xuICAgICAgICBzdXBlcihgTUNQIGVycm9yICR7Y29kZX06ICR7bWVzc2FnZX1gKTtcbiAgICAgICAgdGhpcy5jb2RlID0gY29kZTtcbiAgICAgICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD10eXBlcy5qcy5tYXAiXSwibmFtZXMiOlsieiIsIkxBVEVTVF9QUk9UT0NPTF9WRVJTSU9OIiwiU1VQUE9SVEVEX1BST1RPQ09MX1ZFUlNJT05TIiwiSlNPTlJQQ19WRVJTSU9OIiwiUHJvZ3Jlc3NUb2tlblNjaGVtYSIsInVuaW9uIiwic3RyaW5nIiwibnVtYmVyIiwiaW50IiwiQ3Vyc29yU2NoZW1hIiwiQmFzZVJlcXVlc3RQYXJhbXNTY2hlbWEiLCJvYmplY3QiLCJfbWV0YSIsIm9wdGlvbmFsIiwicHJvZ3Jlc3NUb2tlbiIsInBhc3N0aHJvdWdoIiwiUmVxdWVzdFNjaGVtYSIsIm1ldGhvZCIsInBhcmFtcyIsIkJhc2VOb3RpZmljYXRpb25QYXJhbXNTY2hlbWEiLCJOb3RpZmljYXRpb25TY2hlbWEiLCJSZXN1bHRTY2hlbWEiLCJSZXF1ZXN0SWRTY2hlbWEiLCJKU09OUlBDUmVxdWVzdFNjaGVtYSIsImpzb25ycGMiLCJsaXRlcmFsIiwiaWQiLCJtZXJnZSIsInN0cmljdCIsIkpTT05SUENOb3RpZmljYXRpb25TY2hlbWEiLCJKU09OUlBDUmVzcG9uc2VTY2hlbWEiLCJyZXN1bHQiLCJFcnJvckNvZGUiLCJKU09OUlBDRXJyb3JTY2hlbWEiLCJlcnJvciIsImNvZGUiLCJtZXNzYWdlIiwiZGF0YSIsInVua25vd24iLCJKU09OUlBDTWVzc2FnZVNjaGVtYSIsIkVtcHR5UmVzdWx0U2NoZW1hIiwiQ2FuY2VsbGVkTm90aWZpY2F0aW9uU2NoZW1hIiwiZXh0ZW5kIiwicmVxdWVzdElkIiwicmVhc29uIiwiSW1wbGVtZW50YXRpb25TY2hlbWEiLCJuYW1lIiwidmVyc2lvbiIsIkNsaWVudENhcGFiaWxpdGllc1NjaGVtYSIsImV4cGVyaW1lbnRhbCIsInNhbXBsaW5nIiwicm9vdHMiLCJsaXN0Q2hhbmdlZCIsImJvb2xlYW4iLCJJbml0aWFsaXplUmVxdWVzdFNjaGVtYSIsInByb3RvY29sVmVyc2lvbiIsImNhcGFiaWxpdGllcyIsImNsaWVudEluZm8iLCJTZXJ2ZXJDYXBhYmlsaXRpZXNTY2hlbWEiLCJsb2dnaW5nIiwicHJvbXB0cyIsInJlc291cmNlcyIsInN1YnNjcmliZSIsInRvb2xzIiwiSW5pdGlhbGl6ZVJlc3VsdFNjaGVtYSIsInNlcnZlckluZm8iLCJJbml0aWFsaXplZE5vdGlmaWNhdGlvblNjaGVtYSIsIlBpbmdSZXF1ZXN0U2NoZW1hIiwiUHJvZ3Jlc3NTY2hlbWEiLCJwcm9ncmVzcyIsInRvdGFsIiwiUHJvZ3Jlc3NOb3RpZmljYXRpb25TY2hlbWEiLCJQYWdpbmF0ZWRSZXF1ZXN0U2NoZW1hIiwiY3Vyc29yIiwiUGFnaW5hdGVkUmVzdWx0U2NoZW1hIiwibmV4dEN1cnNvciIsIlJlc291cmNlQ29udGVudHNTY2hlbWEiLCJ1cmkiLCJtaW1lVHlwZSIsIlRleHRSZXNvdXJjZUNvbnRlbnRzU2NoZW1hIiwidGV4dCIsIkJsb2JSZXNvdXJjZUNvbnRlbnRzU2NoZW1hIiwiYmxvYiIsImJhc2U2NCIsIlJlc291cmNlU2NoZW1hIiwiZGVzY3JpcHRpb24iLCJSZXNvdXJjZVRlbXBsYXRlU2NoZW1hIiwidXJpVGVtcGxhdGUiLCJMaXN0UmVzb3VyY2VzUmVxdWVzdFNjaGVtYSIsIkxpc3RSZXNvdXJjZXNSZXN1bHRTY2hlbWEiLCJhcnJheSIsIkxpc3RSZXNvdXJjZVRlbXBsYXRlc1JlcXVlc3RTY2hlbWEiLCJMaXN0UmVzb3VyY2VUZW1wbGF0ZXNSZXN1bHRTY2hlbWEiLCJyZXNvdXJjZVRlbXBsYXRlcyIsIlJlYWRSZXNvdXJjZVJlcXVlc3RTY2hlbWEiLCJSZWFkUmVzb3VyY2VSZXN1bHRTY2hlbWEiLCJjb250ZW50cyIsIlJlc291cmNlTGlzdENoYW5nZWROb3RpZmljYXRpb25TY2hlbWEiLCJTdWJzY3JpYmVSZXF1ZXN0U2NoZW1hIiwiVW5zdWJzY3JpYmVSZXF1ZXN0U2NoZW1hIiwiUmVzb3VyY2VVcGRhdGVkTm90aWZpY2F0aW9uU2NoZW1hIiwiUHJvbXB0QXJndW1lbnRTY2hlbWEiLCJyZXF1aXJlZCIsIlByb21wdFNjaGVtYSIsImFyZ3VtZW50cyIsIkxpc3RQcm9tcHRzUmVxdWVzdFNjaGVtYSIsIkxpc3RQcm9tcHRzUmVzdWx0U2NoZW1hIiwiR2V0UHJvbXB0UmVxdWVzdFNjaGVtYSIsInJlY29yZCIsIlRleHRDb250ZW50U2NoZW1hIiwidHlwZSIsIkltYWdlQ29udGVudFNjaGVtYSIsIkVtYmVkZGVkUmVzb3VyY2VTY2hlbWEiLCJyZXNvdXJjZSIsIlByb21wdE1lc3NhZ2VTY2hlbWEiLCJyb2xlIiwiZW51bSIsImNvbnRlbnQiLCJHZXRQcm9tcHRSZXN1bHRTY2hlbWEiLCJtZXNzYWdlcyIsIlByb21wdExpc3RDaGFuZ2VkTm90aWZpY2F0aW9uU2NoZW1hIiwiVG9vbFNjaGVtYSIsImlucHV0U2NoZW1hIiwicHJvcGVydGllcyIsIkxpc3RUb29sc1JlcXVlc3RTY2hlbWEiLCJMaXN0VG9vbHNSZXN1bHRTY2hlbWEiLCJDYWxsVG9vbFJlc3VsdFNjaGVtYSIsImlzRXJyb3IiLCJkZWZhdWx0IiwiQ29tcGF0aWJpbGl0eUNhbGxUb29sUmVzdWx0U2NoZW1hIiwib3IiLCJ0b29sUmVzdWx0IiwiQ2FsbFRvb2xSZXF1ZXN0U2NoZW1hIiwiVG9vbExpc3RDaGFuZ2VkTm90aWZpY2F0aW9uU2NoZW1hIiwiTG9nZ2luZ0xldmVsU2NoZW1hIiwiU2V0TGV2ZWxSZXF1ZXN0U2NoZW1hIiwibGV2ZWwiLCJMb2dnaW5nTWVzc2FnZU5vdGlmaWNhdGlvblNjaGVtYSIsImxvZ2dlciIsIk1vZGVsSGludFNjaGVtYSIsIk1vZGVsUHJlZmVyZW5jZXNTY2hlbWEiLCJoaW50cyIsImNvc3RQcmlvcml0eSIsIm1pbiIsIm1heCIsInNwZWVkUHJpb3JpdHkiLCJpbnRlbGxpZ2VuY2VQcmlvcml0eSIsIlNhbXBsaW5nTWVzc2FnZVNjaGVtYSIsIkNyZWF0ZU1lc3NhZ2VSZXF1ZXN0U2NoZW1hIiwic3lzdGVtUHJvbXB0IiwiaW5jbHVkZUNvbnRleHQiLCJ0ZW1wZXJhdHVyZSIsIm1heFRva2VucyIsInN0b3BTZXF1ZW5jZXMiLCJtZXRhZGF0YSIsIm1vZGVsUHJlZmVyZW5jZXMiLCJDcmVhdGVNZXNzYWdlUmVzdWx0U2NoZW1hIiwibW9kZWwiLCJzdG9wUmVhc29uIiwiZGlzY3JpbWluYXRlZFVuaW9uIiwiUmVzb3VyY2VSZWZlcmVuY2VTY2hlbWEiLCJQcm9tcHRSZWZlcmVuY2VTY2hlbWEiLCJDb21wbGV0ZVJlcXVlc3RTY2hlbWEiLCJyZWYiLCJhcmd1bWVudCIsInZhbHVlIiwiQ29tcGxldGVSZXN1bHRTY2hlbWEiLCJjb21wbGV0aW9uIiwidmFsdWVzIiwiaGFzTW9yZSIsIlJvb3RTY2hlbWEiLCJzdGFydHNXaXRoIiwiTGlzdFJvb3RzUmVxdWVzdFNjaGVtYSIsIkxpc3RSb290c1Jlc3VsdFNjaGVtYSIsIlJvb3RzTGlzdENoYW5nZWROb3RpZmljYXRpb25TY2hlbWEiLCJDbGllbnRSZXF1ZXN0U2NoZW1hIiwiQ2xpZW50Tm90aWZpY2F0aW9uU2NoZW1hIiwiQ2xpZW50UmVzdWx0U2NoZW1hIiwiU2VydmVyUmVxdWVzdFNjaGVtYSIsIlNlcnZlck5vdGlmaWNhdGlvblNjaGVtYSIsIlNlcnZlclJlc3VsdFNjaGVtYSIsIk1jcEVycm9yIiwiRXJyb3IiLCJjb25zdHJ1Y3RvciJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(action-browser)/./node_modules/@modelcontextprotocol/sdk/dist/types.js\n"); /***/ }) }; ;