Skip to content

Instantly share code, notes, and snippets.

@werpu
Created November 22, 2019 15:19
Show Gist options
  • Save werpu/d656d86cdc202f2e060d2e436e2d94ec to your computer and use it in GitHub Desktop.
Save werpu/d656d86cdc202f2e060d2e436e2d94ec to your computer and use it in GitHub Desktop.
(function(e, a) { for(var i in a) e[i] = a[i]; }(window, /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = "./src/main/typescript/api/Jsf.ts");
/******/ })
/************************************************************************/
/******/ ({
/***/ "./src/main/typescript/api/Jsf.ts":
/*!****************************************!*\
!*** ./src/main/typescript/api/Jsf.ts ***!
\****************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\r\n/* Licensed to the Apache Software Foundation (ASF) under one or more\r\n * contributor license agreements. See the NOTICE file distributed with\r\n * this work for additional information regarding copyright ownership.\r\n * The ASF licenses this file to you under the Apache License, Version 2.0\r\n * (the \"License\"); you may not use this file except in compliance with\r\n * the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\nvar _a, _b, _c;\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n///<reference path='./ApiInterfaces.ts'/>\r\n///<reference types='../../Types/Types'/>\r\nvar AjaxImpl_1 = __webpack_require__(/*! ../impl/AjaxImpl */ \"./src/main/typescript/impl/AjaxImpl.ts\");\r\nvar PushImpl_1 = __webpack_require__(/*! ../impl/PushImpl */ \"./src/main/typescript/impl/PushImpl.ts\");\r\nvar mf_impl = (_c = (_b = (_a = window) === null || _a === void 0 ? void 0 : _a.myfaces) === null || _b === void 0 ? void 0 : _b._impl, (_c !== null && _c !== void 0 ? _c : {}));\r\nvar jsf;\r\n(function (jsf) {\r\n \"use strict\";\r\n /*\r\n * Version of the implementation for the jsf.js.\r\n * <p />\r\n * as specified within the jsf specifications jsf.html:\r\n * <ul>\r\n * <li>left two digits major release number</li>\r\n * <li>middle two digits minor spec release number</li>\r\n * <li>right two digits bug release number</li>\r\n * </ul>\r\n * @constant\r\n */\r\n jsf.specversion = 220000;\r\n /**\r\n * Implementation version as specified within the jsf specification.\r\n * <p />\r\n * A number increased with every implementation version\r\n * and reset by moving to a new spec release number\r\n *\r\n * @constant\r\n */\r\n jsf.implversion = 0;\r\n /**\r\n * SeparatorChar as defined by UINamingContainer.getNamingContainerSeparatorChar()\r\n * @type {Char}\r\n */\r\n jsf.separatorchar = getSeparatorChar();\r\n /**\r\n * This method is responsible for the return of a given project stage as defined\r\n * by the jsf specification.\r\n * <p/>\r\n * Valid return values are:\r\n * <ul>\r\n * <li>&quot;Production&quot;</li>\r\n * <li>&quot;Development&quot;</li>\r\n * <li>&quot;SystemTest&quot;</li>\r\n * <li>&quot;UnitTest&quot;</li>\r\n * </li>\r\n *\r\n * @return {String} the current project state emitted by the server side method:\r\n * <i>javax.faces.application.Application.getProjectStage()</i>\r\n */\r\n function getProjectStage() {\r\n return AjaxImpl_1.Implementation.getProjectStage();\r\n }\r\n jsf.getProjectStage = getProjectStage;\r\n /**\r\n * collect and encode data for a given form element (must be of type form)\r\n * find the javax.faces.ViewState element and encode its value as well!\r\n * return a concatenated string of the encoded values!\r\n *\r\n * @throws an exception in case of the given element not being of type form!\r\n * https://issues.apache.org/jira/browse/MYFACES-2110\r\n */\r\n function getViewState(formElement) {\r\n return AjaxImpl_1.Implementation.getViewState(formElement);\r\n }\r\n jsf.getViewState = getViewState;\r\n /**\r\n * returns the window identifier for the given node / window\r\n * @param {optional String | DomNode} the node for which the client identifier has to be determined\r\n * @return the window identifier or null if none is found\r\n */\r\n function getClientWindow(rootNode) {\r\n return AjaxImpl_1.Implementation.getClientWindow(rootNode);\r\n }\r\n jsf.getClientWindow = getClientWindow;\r\n //private helper functions\r\n function getSeparatorChar() {\r\n return AjaxImpl_1.Implementation.getSeparatorChar();\r\n }\r\n //We hook the old namespace system into our npm system\r\n if (\"undefined\" == window.jsf) {\r\n window.jsf = jsf;\r\n }\r\n var ajax;\r\n (function (ajax) {\r\n \"use strict\";\r\n /**\r\n * this function has to send the ajax requests\r\n *\r\n * following requestInternal conditions must be met:\r\n * <ul>\r\n * <li> the requestInternal must be sent asynchronously! </li>\r\n * <li> the requestInternal must be a POST!!! requestInternal </li>\r\n * <li> the requestInternal url must be the form action attribute </li>\r\n * <li> all requests must be queued with a client side requestInternal queue to ensure the requestInternal ordering!</li>\r\n * </ul>\r\n *\r\n * @param {String|Node} element: any dom element no matter being it html or jsf, from which the event is emitted\r\n * @param {EVENT} event: any javascript event supported by that object\r\n * @param {Map} options : map of options being pushed into the ajax cycle\r\n */\r\n function request(element, event, options) {\r\n AjaxImpl_1.Implementation.request(element, event, options);\r\n //Implementation.getInstance().requestInternal(element, event, options);\r\n }\r\n ajax.request = request;\r\n /**\r\n * response handler\r\n * @param request the request object having triggered this response\r\n * @param context the request context\r\n *\r\n * TODO add info on what can be in the context\r\n */\r\n function response(request, context) {\r\n AjaxImpl_1.Implementation.response(request, context);\r\n }\r\n ajax.response = response;\r\n /**\r\n * Adds an error handler to our global error queue.\r\n * the error handler must be of the format <i>function errorListener(&lt;errorData&gt;)</i>\r\n * with errorData being of following format:\r\n * <ul>\r\n * <li> errorData.type : &quot;error&quot;</li>\r\n * <li> errorData.status : the error status message</li>\r\n * <li> errorData.serverErrorName : the server error name in case of a server error</li>\r\n * <li> errorData.serverErrorMessage : the server error message in case of a server error</li>\r\n * <li> errorData.source : the issuing source element which triggered the requestInternal </li>\r\n * <li> eventData.responseCode: the response code (aka http requestInternal response code, 401 etc...) </li>\r\n * <li> eventData.responseText: the requestInternal response text </li>\r\n * <li> eventData.responseXML: the requestInternal response xml </li>\r\n * </ul>\r\n *\r\n * @param {function} errorListener error handler must be of the format <i>function errorListener(&lt;errorData&gt;)</i>\r\n */\r\n function addOnError(errorFunc) {\r\n AjaxImpl_1.Implementation.addOnError(errorFunc);\r\n }\r\n ajax.addOnError = addOnError;\r\n /**\r\n * Adds a global event listener to the ajax event queue. The event listener must be a function\r\n * of following format: <i>function eventListener(&lt;eventData&gt;)</i>\r\n *\r\n * @param {function} eventListener event must be of the format <i>function eventListener(&lt;eventData&gt;)</i>\r\n */\r\n function addOnEvent(eventFunc) {\r\n AjaxImpl_1.Implementation.addOnEvent(eventFunc);\r\n }\r\n ajax.addOnEvent = addOnEvent;\r\n })(ajax = jsf.ajax || (jsf.ajax = {}));\r\n var util;\r\n (function (util) {\r\n /**\r\n * varargs function which executes a chain of code (functions or any other code)\r\n *\r\n * if any of the code returns false, the execution\r\n * is terminated prematurely skipping the rest of the code!\r\n *\r\n * @param {DomNode} source, the callee object\r\n * @param {Event} event, the event object of the callee event triggering this function\r\n * @param funcs ... arbitrary array of functions or strings\r\n * @returns true if the chain has succeeded false otherwise\r\n */\r\n function chain(source, event) {\r\n var funcs = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n funcs[_i - 2] = arguments[_i];\r\n }\r\n return AjaxImpl_1.Implementation.chain.apply(AjaxImpl_1.Implementation, __spreadArrays([source, event], funcs));\r\n }\r\n util.chain = chain;\r\n })(util = jsf.util || (jsf.util = {}));\r\n var push;\r\n (function (push) {\r\n /**\r\n * @param {function} onopen The function to be invoked when the web socket is opened.\r\n * @param {function} onmessage The function to be invoked when a message is received.\r\n * @param {function} onclose The function to be invoked when the web socket is closed.\r\n * @param {boolean} autoconnect Whether or not to immediately open the socket. Defaults to <code>false</code>.\r\n */\r\n function init(socketClientId, uri, channel, onopen, onmessage, onclose, behaviorScripts, autoconnect) {\r\n PushImpl_1.PushImpl.init(socketClientId, uri, channel, onopen, onmessage, onclose, behaviorScripts, autoconnect);\r\n }\r\n push.init = init;\r\n /**\r\n * Open the web socket on the given channel.\r\n * @param {string} channel The name of the web socket channel.\r\n * @throws {Error} When channel is unknown.\r\n */\r\n function open(socketClientId) {\r\n PushImpl_1.PushImpl.open(socketClientId);\r\n }\r\n push.open = open;\r\n /**\r\n * Close the web socket on the given channel.\r\n * @param {string} channel The name of the web socket channel.\r\n * @throws {Error} When channel is unknown.\r\n */\r\n function close(socketClientId) {\r\n PushImpl_1.PushImpl.close(socketClientId);\r\n }\r\n push.close = close;\r\n })(push = jsf.push || (jsf.push = {}));\r\n})(jsf = exports.jsf || (exports.jsf = {}));\r\n//fullfill the window contract\r\nvar myfaces2;\r\n(function (myfaces2) {\r\n //legacy compatibility\r\n myfaces2._impl = mf_impl;\r\n /**\r\n * AB function similar to mojarra and Primefaces\r\n * not part of the spec but a convenience accesor method\r\n * Code provided by Thomas Andraschko\r\n *\r\n * @param source the event source\r\n * @param event the event\r\n * @param eventName event name for java.javax.faces.behavior.evemnt\r\n * @param execute execute list as passed down in jsf.ajax.request\r\n * @param render\r\n * @param options\r\n */\r\n function ab(source, event, eventName, execute, render, options) {\r\n if (options === void 0) { options = {}; }\r\n if (eventName) {\r\n options[\"javax.faces.behavior.event\"] = eventName;\r\n }\r\n if (execute) {\r\n options[\"execute\"] = execute;\r\n }\r\n if (render) {\r\n options[\"render\"] = render;\r\n }\r\n jsf.ajax.request(source, event, options);\r\n }\r\n myfaces2.ab = ab;\r\n})(myfaces2 = exports.myfaces2 || (exports.myfaces2 = {}));\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbWFpbi90eXBlc2NyaXB0L2FwaS9Kc2YudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbWFpbi90eXBlc2NyaXB0L2FwaS9Kc2YudHM/NDI4NyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lIG9yIG1vcmVcclxuICogY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZSBkaXN0cmlidXRlZCB3aXRoXHJcbiAqIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC5cclxuICogVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjBcclxuICogKHRoZSBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aFxyXG4gKiB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxyXG4gKlxyXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG4gKlxyXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXHJcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcclxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXHJcbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcclxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXHJcbiAqL1xyXG5cclxuLy8vPHJlZmVyZW5jZSBwYXRoPScuL0FwaUludGVyZmFjZXMudHMnLz5cclxuLy8vPHJlZmVyZW5jZSB0eXBlcz0nLi4vLi4vVHlwZXMvVHlwZXMnLz5cclxuXHJcbmltcG9ydCB7SW1wbGVtZW50YXRpb259IGZyb20gXCIuLi9pbXBsL0FqYXhJbXBsXCI7XHJcbmltcG9ydCB7UHVzaEltcGx9IGZyb20gXCIuLi9pbXBsL1B1c2hJbXBsXCI7XHJcblxyXG5kZWNsYXJlIGxldCB3aW5kb3c6IGFueTtcclxuZGVjbGFyZSB0eXBlIENvbnRleHQgPSB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xyXG5cclxubGV0IG1mX2ltcGwgPSB3aW5kb3c/Lm15ZmFjZXM/Ll9pbXBsID8/IHt9O1xyXG5cclxuZXhwb3J0IG1vZHVsZSBqc2Yge1xyXG4gICAgXCJ1c2Ugc3RyaWN0XCI7XHJcblxyXG4gICAgLypcclxuICAgICAqIFZlcnNpb24gb2YgdGhlIGltcGxlbWVudGF0aW9uIGZvciB0aGUganNmLmpzLlxyXG4gICAgICogPHAgLz5cclxuICAgICAqIGFzIHNwZWNpZmllZCB3aXRoaW4gdGhlIGpzZiBzcGVjaWZpY2F0aW9ucyBqc2YuaHRtbDpcclxuICAgICAqIDx1bD5cclxuICAgICAqIDxsaT5sZWZ0IHR3byBkaWdpdHMgbWFqb3IgcmVsZWFzZSBudW1iZXI8L2xpPlxyXG4gICAgICogPGxpPm1pZGRsZSB0d28gZGlnaXRzIG1pbm9yIHNwZWMgcmVsZWFzZSBudW1iZXI8L2xpPlxyXG4gICAgICogPGxpPnJpZ2h0IHR3byBkaWdpdHMgYnVnIHJlbGVhc2UgbnVtYmVyPC9saT5cclxuICAgICAqIDwvdWw+XHJcbiAgICAgKiBAY29uc3RhbnRcclxuICAgICAqL1xyXG4gICAgZXhwb3J0IHZhciBzcGVjdmVyc2lvbiA9IDIyMDAwMDtcclxuICAgIC8qKlxyXG4gICAgICogSW1wbGVtZW50YXRpb24gdmVyc2lvbiBhcyBzcGVjaWZpZWQgd2l0aGluIHRoZSBqc2Ygc3BlY2lmaWNhdGlvbi5cclxuICAgICAqIDxwIC8+XHJcbiAgICAgKiBBIG51bWJlciBpbmNyZWFzZWQgd2l0aCBldmVyeSBpbXBsZW1lbnRhdGlvbiB2ZXJzaW9uXHJcbiAgICAgKiBhbmQgcmVzZXQgYnkgbW92aW5nIHRvIGEgbmV3IHNwZWMgcmVsZWFzZSBudW1iZXJcclxuICAgICAqXHJcbiAgICAgKiBAY29uc3RhbnRcclxuICAgICAqL1xyXG4gICAgZXhwb3J0IHZhciBpbXBsdmVyc2lvbiA9IDA7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXBhcmF0b3JDaGFyIGFzIGRlZmluZWQgYnkgVUlOYW1pbmdDb250YWluZXIuZ2V0TmFtaW5nQ29udGFpbmVyU2VwYXJhdG9yQ2hhcigpXHJcbiAgICAgKiBAdHlwZSB7Q2hhcn1cclxuICAgICAqL1xyXG4gICAgZXhwb3J0IHZhciBzZXBhcmF0b3JjaGFyID0gZ2V0U2VwYXJhdG9yQ2hhcigpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBtZXRob2QgaXMgcmVzcG9uc2libGUgZm9yIHRoZSByZXR1cm4gb2YgYSBnaXZlbiBwcm9qZWN0IHN0YWdlIGFzIGRlZmluZWRcclxuICAgICAqIGJ5IHRoZSBqc2Ygc3BlY2lmaWNhdGlvbi5cclxuICAgICAqIDxwLz5cclxuICAgICAqIFZhbGlkIHJldHVybiB2YWx1ZXMgYXJlOlxyXG4gICAgICogPHVsPlxyXG4gICAgICogICAgIDxsaT4mcXVvdDtQcm9kdWN0aW9uJnF1b3Q7PC9saT5cclxuICAgICAqICAgICA8bGk+JnF1b3Q7RGV2ZWxvcG1lbnQmcXVvdDs8L2xpPlxyXG4gICAgICogICAgIDxsaT4mcXVvdDtTeXN0ZW1UZXN0JnF1b3Q7PC9saT5cclxuICAgICAqICAgICA8bGk+JnF1b3Q7VW5pdFRlc3QmcXVvdDs8L2xpPlxyXG4gICAgICogPC9saT5cclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJuIHtTdHJpbmd9IHRoZSBjdXJyZW50IHByb2plY3Qgc3RhdGUgZW1pdHRlZCBieSB0aGUgc2VydmVyIHNpZGUgbWV0aG9kOlxyXG4gICAgICogPGk+amF2YXguZmFjZXMuYXBwbGljYXRpb24uQXBwbGljYXRpb24uZ2V0UHJvamVjdFN0YWdlKCk8L2k+XHJcbiAgICAgKi9cclxuICAgIGV4cG9ydCBmdW5jdGlvbiBnZXRQcm9qZWN0U3RhZ2UoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gSW1wbGVtZW50YXRpb24uZ2V0UHJvamVjdFN0YWdlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBjb2xsZWN0IGFuZCBlbmNvZGUgZGF0YSBmb3IgYSBnaXZlbiBmb3JtIGVsZW1lbnQgKG11c3QgYmUgb2YgdHlwZSBmb3JtKVxyXG4gICAgICogZmluZCB0aGUgamF2YXguZmFjZXMuVmlld1N0YXRlIGVsZW1lbnQgYW5kIGVuY29kZSBpdHMgdmFsdWUgYXMgd2VsbCFcclxuICAgICAqIHJldHVybiBhIGNvbmNhdGVuYXRlZCBzdHJpbmcgb2YgdGhlIGVuY29kZWQgdmFsdWVzIVxyXG4gICAgICpcclxuICAgICAqIEB0aHJvd3MgYW4gZXhjZXB0aW9uIGluIGNhc2Ugb2YgdGhlIGdpdmVuIGVsZW1lbnQgbm90IGJlaW5nIG9mIHR5cGUgZm9ybSFcclxuICAgICAqIGh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvTVlGQUNFUy0yMTEwXHJcbiAgICAgKi9cclxuICAgIGV4cG9ydCBmdW5jdGlvbiBnZXRWaWV3U3RhdGUoZm9ybUVsZW1lbnQ6IEVsZW1lbnQgfCBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBJbXBsZW1lbnRhdGlvbi5nZXRWaWV3U3RhdGUoZm9ybUVsZW1lbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogcmV0dXJucyB0aGUgd2luZG93IGlkZW50aWZpZXIgZm9yIHRoZSBnaXZlbiBub2RlIC8gd2luZG93XHJcbiAgICAgKiBAcGFyYW0ge29wdGlvbmFsIFN0cmluZyB8IERvbU5vZGV9ICB0aGUgbm9kZSBmb3Igd2hpY2ggdGhlIGNsaWVudCBpZGVudGlmaWVyIGhhcyB0byBiZSBkZXRlcm1pbmVkXHJcbiAgICAgKiBAcmV0dXJuIHRoZSB3aW5kb3cgaWRlbnRpZmllciBvciBudWxsIGlmIG5vbmUgaXMgZm91bmRcclxuICAgICAqL1xyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGdldENsaWVudFdpbmRvdyhyb290Tm9kZT86IEVsZW1lbnQgfCBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBJbXBsZW1lbnRhdGlvbi5nZXRDbGllbnRXaW5kb3cocm9vdE5vZGUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vcHJpdmF0ZSBoZWxwZXIgZnVuY3Rpb25zXHJcbiAgICBmdW5jdGlvbiBnZXRTZXBhcmF0b3JDaGFyKCkge1xyXG4gICAgICAgIHJldHVybiBJbXBsZW1lbnRhdGlvbi5nZXRTZXBhcmF0b3JDaGFyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy9XZSBob29rIHRoZSBvbGQgbmFtZXNwYWNlIHN5c3RlbSBpbnRvIG91ciBucG0gc3lzdGVtXHJcbiAgICBpZiAoXCJ1bmRlZmluZWRcIiA9PSB3aW5kb3cuanNmKSB7XHJcbiAgICAgICAgd2luZG93LmpzZiA9IGpzZjtcclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgbW9kdWxlIGFqYXgge1xyXG4gICAgICAgIFwidXNlIHN0cmljdFwiO1xyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiB0aGlzIGZ1bmN0aW9uIGhhcyB0byBzZW5kIHRoZSBhamF4IHJlcXVlc3RzXHJcbiAgICAgICAgICpcclxuICAgICAgICAgKiBmb2xsb3dpbmcgcmVxdWVzdEludGVybmFsIGNvbmRpdGlvbnMgbXVzdCBiZSBtZXQ6XHJcbiAgICAgICAgICogPHVsPlxyXG4gICAgICAgICAqICA8bGk+IHRoZSByZXF1ZXN0SW50ZXJuYWwgbXVzdCBiZSBzZW50IGFzeW5jaHJvbm91c2x5ISA8L2xpPlxyXG4gICAgICAgICAqICA8bGk+IHRoZSByZXF1ZXN0SW50ZXJuYWwgbXVzdCBiZSBhIFBPU1QhISEgcmVxdWVzdEludGVybmFsIDwvbGk+XHJcbiAgICAgICAgICogIDxsaT4gdGhlIHJlcXVlc3RJbnRlcm5hbCB1cmwgbXVzdCBiZSB0aGUgZm9ybSBhY3Rpb24gYXR0cmlidXRlIDwvbGk+XHJcbiAgICAgICAgICogIDxsaT4gYWxsIHJlcXVlc3RzIG11c3QgYmUgcXVldWVkIHdpdGggYSBjbGllbnQgc2lkZSByZXF1ZXN0SW50ZXJuYWwgcXVldWUgdG8gZW5zdXJlIHRoZSByZXF1ZXN0SW50ZXJuYWwgb3JkZXJpbmchPC9saT5cclxuICAgICAgICAgKiA8L3VsPlxyXG4gICAgICAgICAqXHJcbiAgICAgICAgICogQHBhcmFtIHtTdHJpbmd8Tm9kZX0gZWxlbWVudDogYW55IGRvbSBlbGVtZW50IG5vIG1hdHRlciBiZWluZyBpdCBodG1sIG9yIGpzZiwgZnJvbSB3aGljaCB0aGUgZXZlbnQgaXMgZW1pdHRlZFxyXG4gICAgICAgICAqIEBwYXJhbSB7RVZFTlR9IGV2ZW50OiBhbnkgamF2YXNjcmlwdCBldmVudCBzdXBwb3J0ZWQgYnkgdGhhdCBvYmplY3RcclxuICAgICAgICAgKiBAcGFyYW0ge01hcH0gb3B0aW9ucyA6IG1hcCBvZiBvcHRpb25zIGJlaW5nIHB1c2hlZCBpbnRvIHRoZSBhamF4IGN5Y2xlXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgZXhwb3J0IGZ1bmN0aW9uIHJlcXVlc3QoZWxlbWVudDogRWxlbWVudCwgZXZlbnQ/OiBFdmVudCwgb3B0aW9ucz86IENvbnRleHQpIHtcclxuICAgICAgICAgICAgSW1wbGVtZW50YXRpb24ucmVxdWVzdChlbGVtZW50LCBldmVudCwgb3B0aW9ucylcclxuICAgICAgICAgICAgLy9JbXBsZW1lbnRhdGlvbi5nZXRJbnN0YW5jZSgpLnJlcXVlc3RJbnRlcm5hbChlbGVtZW50LCBldmVudCwgb3B0aW9ucyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiByZXNwb25zZSBoYW5kbGVyXHJcbiAgICAgICAgICogQHBhcmFtIHJlcXVlc3QgdGhlIHJlcXVlc3Qgb2JqZWN0IGhhdmluZyB0cmlnZ2VyZWQgdGhpcyByZXNwb25zZVxyXG4gICAgICAgICAqIEBwYXJhbSBjb250ZXh0IHRoZSByZXF1ZXN0IGNvbnRleHRcclxuICAgICAgICAgKlxyXG4gICAgICAgICAqIFRPRE8gYWRkIGluZm8gb24gd2hhdCBjYW4gYmUgaW4gdGhlIGNvbnRleHRcclxuICAgICAgICAgKi9cclxuICAgICAgICBleHBvcnQgZnVuY3Rpb24gcmVzcG9uc2UocmVxdWVzdDogWE1MSHR0cFJlcXVlc3QsIGNvbnRleHQ/OiBDb250ZXh0KSB7XHJcbiAgICAgICAgICAgIEltcGxlbWVudGF0aW9uLnJlc3BvbnNlKHJlcXVlc3QsIGNvbnRleHQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogQWRkcyBhbiBlcnJvciBoYW5kbGVyIHRvIG91ciBnbG9iYWwgZXJyb3IgcXVldWUuXHJcbiAgICAgICAgICogdGhlIGVycm9yIGhhbmRsZXIgbXVzdCBiZSBvZiB0aGUgZm9ybWF0IDxpPmZ1bmN0aW9uIGVycm9yTGlzdGVuZXIoJmx0O2Vycm9yRGF0YSZndDspPC9pPlxyXG4gICAgICAgICAqIHdpdGggZXJyb3JEYXRhIGJlaW5nIG9mIGZvbGxvd2luZyBmb3JtYXQ6XHJcbiAgICAgICAgICogPHVsPlxyXG4gICAgICAgICAqICAgICA8bGk+IGVycm9yRGF0YS50eXBlIDogJnF1b3Q7ZXJyb3ImcXVvdDs8L2xpPlxyXG4gICAgICAgICAqICAgICA8bGk+IGVycm9yRGF0YS5zdGF0dXMgOiB0aGUgZXJyb3Igc3RhdHVzIG1lc3NhZ2U8L2xpPlxyXG4gICAgICAgICAqICAgICA8bGk+IGVycm9yRGF0YS5zZXJ2ZXJFcnJvck5hbWUgOiB0aGUgc2VydmVyIGVycm9yIG5hbWUgaW4gY2FzZSBvZiBhIHNlcnZlciBlcnJvcjwvbGk+XHJcbiAgICAgICAgICogICAgIDxsaT4gZXJyb3JEYXRhLnNlcnZlckVycm9yTWVzc2FnZSA6IHRoZSBzZXJ2ZXIgZXJyb3IgbWVzc2FnZSBpbiBjYXNlIG9mIGEgc2VydmVyIGVycm9yPC9saT5cclxuICAgICAgICAgKiAgICAgPGxpPiBlcnJvckRhdGEuc291cmNlICA6IHRoZSBpc3N1aW5nIHNvdXJjZSBlbGVtZW50IHdoaWNoIHRyaWdnZXJlZCB0aGUgcmVxdWVzdEludGVybmFsIDwvbGk+XHJcbiAgICAgICAgICogICAgIDxsaT4gZXZlbnREYXRhLnJlc3BvbnNlQ29kZTogdGhlIHJlc3BvbnNlIGNvZGUgKGFrYSBodHRwIHJlcXVlc3RJbnRlcm5hbCByZXNwb25zZSBjb2RlLCA0MDEgZXRjLi4uKSA8L2xpPlxyXG4gICAgICAgICAqICAgICA8bGk+IGV2ZW50RGF0YS5yZXNwb25zZVRleHQ6IHRoZSByZXF1ZXN0SW50ZXJuYWwgcmVzcG9uc2UgdGV4dCA8L2xpPlxyXG4gICAgICAgICAqICAgICA8bGk+IGV2ZW50RGF0YS5yZXNwb25zZVhNTDogdGhlIHJlcXVlc3RJbnRlcm5hbCByZXNwb25zZSB4bWwgPC9saT5cclxuICAgICAgICAgKiA8L3VsPlxyXG4gICAgICAgICAqXHJcbiAgICAgICAgICogQHBhcmFtIHtmdW5jdGlvbn0gZXJyb3JMaXN0ZW5lciBlcnJvciBoYW5kbGVyIG11c3QgYmUgb2YgdGhlIGZvcm1hdCA8aT5mdW5jdGlvbiBlcnJvckxpc3RlbmVyKCZsdDtlcnJvckRhdGEmZ3Q7KTwvaT5cclxuICAgICAgICAgKi9cclxuICAgICAgICBleHBvcnQgZnVuY3Rpb24gYWRkT25FcnJvcihlcnJvckZ1bmM6IChkYXRhOiBfYXBpSW50ZXJmYWNlcy5FcnJvckRhdGEpID0+IHZvaWQpIHtcclxuICAgICAgICAgICAgSW1wbGVtZW50YXRpb24uYWRkT25FcnJvcig8YW55PmVycm9yRnVuYyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBBZGRzIGEgZ2xvYmFsIGV2ZW50IGxpc3RlbmVyIHRvIHRoZSBhamF4IGV2ZW50IHF1ZXVlLiBUaGUgZXZlbnQgbGlzdGVuZXIgbXVzdCBiZSBhIGZ1bmN0aW9uXHJcbiAgICAgICAgICogb2YgZm9sbG93aW5nIGZvcm1hdDogPGk+ZnVuY3Rpb24gZXZlbnRMaXN0ZW5lcigmbHQ7ZXZlbnREYXRhJmd0Oyk8L2k+XHJcbiAgICAgICAgICpcclxuICAgICAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBldmVudExpc3RlbmVyIGV2ZW50IG11c3QgYmUgb2YgdGhlIGZvcm1hdCA8aT5mdW5jdGlvbiBldmVudExpc3RlbmVyKCZsdDtldmVudERhdGEmZ3Q7KTwvaT5cclxuICAgICAgICAgKi9cclxuICAgICAgICBleHBvcnQgZnVuY3Rpb24gYWRkT25FdmVudChldmVudEZ1bmM6IChkYXRhOiBfYXBpSW50ZXJmYWNlcy5FdmVudERhdGEpID0+IHZvaWQpIHtcclxuICAgICAgICAgICAgSW1wbGVtZW50YXRpb24uYWRkT25FdmVudCg8YW55PmV2ZW50RnVuYyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBtb2R1bGUgdXRpbCB7XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIHZhcmFyZ3MgZnVuY3Rpb24gd2hpY2ggZXhlY3V0ZXMgYSBjaGFpbiBvZiBjb2RlIChmdW5jdGlvbnMgb3IgYW55IG90aGVyIGNvZGUpXHJcbiAgICAgICAgICpcclxuICAgICAgICAgKiBpZiBhbnkgb2YgdGhlIGNvZGUgcmV0dXJucyBmYWxzZSwgdGhlIGV4ZWN1dGlvblxyXG4gICAgICAgICAqIGlzIHRlcm1pbmF0ZWQgcHJlbWF0dXJlbHkgc2tpcHBpbmcgdGhlIHJlc3Qgb2YgdGhlIGNvZGUhXHJcbiAgICAgICAgICpcclxuICAgICAgICAgKiBAcGFyYW0ge0RvbU5vZGV9IHNvdXJjZSwgdGhlIGNhbGxlZSBvYmplY3RcclxuICAgICAgICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudCwgdGhlIGV2ZW50IG9iamVjdCBvZiB0aGUgY2FsbGVlIGV2ZW50IHRyaWdnZXJpbmcgdGhpcyBmdW5jdGlvblxyXG4gICAgICAgICAqIEBwYXJhbSBmdW5jcyAuLi4gYXJiaXRyYXJ5IGFycmF5IG9mIGZ1bmN0aW9ucyBvciBzdHJpbmdzXHJcbiAgICAgICAgICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgY2hhaW4gaGFzIHN1Y2NlZWRlZCBmYWxzZSBvdGhlcndpc2VcclxuICAgICAgICAgKi9cclxuICAgICAgICBleHBvcnQgZnVuY3Rpb24gY2hhaW4oc291cmNlLCBldmVudCwgLi4uZnVuY3M6IEFycmF5PEZ1bmN0aW9uIHwgc3RyaW5nPik6IGJvb2xlYW4ge1xyXG4gICAgICAgICAgICByZXR1cm4gSW1wbGVtZW50YXRpb24uY2hhaW4oc291cmNlLCBldmVudCwgLi4uZnVuY3MpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgbW9kdWxlIHB1c2gge1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9ub3BlbiBUaGUgZnVuY3Rpb24gdG8gYmUgaW52b2tlZCB3aGVuIHRoZSB3ZWIgc29ja2V0IGlzIG9wZW5lZC5cclxuICAgICAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvbm1lc3NhZ2UgVGhlIGZ1bmN0aW9uIHRvIGJlIGludm9rZWQgd2hlbiBhIG1lc3NhZ2UgaXMgcmVjZWl2ZWQuXHJcbiAgICAgICAgICogQHBhcmFtIHtmdW5jdGlvbn0gb25jbG9zZSBUaGUgZnVuY3Rpb24gdG8gYmUgaW52b2tlZCB3aGVuIHRoZSB3ZWIgc29ja2V0IGlzIGNsb3NlZC5cclxuICAgICAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGF1dG9jb25uZWN0IFdoZXRoZXIgb3Igbm90IHRvIGltbWVkaWF0ZWx5IG9wZW4gdGhlIHNvY2tldC4gRGVmYXVsdHMgdG8gPGNvZGU+ZmFsc2U8L2NvZGU+LlxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIGV4cG9ydCBmdW5jdGlvbiBpbml0KHNvY2tldENsaWVudElkOiBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgdXJpOiBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgY2hhbm5lbDogc3RyaW5nLFxyXG4gICAgICAgICAgICAgICAgICAgIG9ub3BlbjogRnVuY3Rpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgb25tZXNzYWdlOiBGdW5jdGlvbixcclxuICAgICAgICAgICAgICAgICAgICBvbmNsb3NlOiBGdW5jdGlvbixcclxuICAgICAgICAgICAgICAgICAgICBiZWhhdmlvclNjcmlwdHM6IGFueSxcclxuICAgICAgICAgICAgICAgICAgICBhdXRvY29ubmVjdDogYm9vbGVhbikge1xyXG4gICAgICAgICAgICBQdXNoSW1wbC5pbml0KHNvY2tldENsaWVudElkLCB1cmksIGNoYW5uZWwsIG9ub3Blbiwgb25tZXNzYWdlLCBvbmNsb3NlLCBiZWhhdmlvclNjcmlwdHMsIGF1dG9jb25uZWN0KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIE9wZW4gdGhlIHdlYiBzb2NrZXQgb24gdGhlIGdpdmVuIGNoYW5uZWwuXHJcbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGNoYW5uZWwgVGhlIG5hbWUgb2YgdGhlIHdlYiBzb2NrZXQgY2hhbm5lbC5cclxuICAgICAgICAgKiBAdGhyb3dzIHtFcnJvcn0gV2hlbiBjaGFubmVsIGlzIHVua25vd24uXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgZXhwb3J0IGZ1bmN0aW9uIG9wZW4oc29ja2V0Q2xpZW50SWQ6IHN0cmluZykge1xyXG4gICAgICAgICAgICBQdXNoSW1wbC5vcGVuKHNvY2tldENsaWVudElkKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIENsb3NlIHRoZSB3ZWIgc29ja2V0IG9uIHRoZSBnaXZlbiBjaGFubmVsLlxyXG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjaGFubmVsIFRoZSBuYW1lIG9mIHRoZSB3ZWIgc29ja2V0IGNoYW5uZWwuXHJcbiAgICAgICAgICogQHRocm93cyB7RXJyb3J9IFdoZW4gY2hhbm5lbCBpcyB1bmtub3duLlxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIGV4cG9ydCBmdW5jdGlvbiBjbG9zZShzb2NrZXRDbGllbnRJZDogc3RyaW5nKSB7XHJcbiAgICAgICAgICAgIFB1c2hJbXBsLmNsb3NlKHNvY2tldENsaWVudElkKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxufVxyXG5cclxuXHJcblxyXG4vL2Z1bGxmaWxsIHRoZSB3aW5kb3cgY29udHJhY3RcclxuZXhwb3J0IG1vZHVsZSBteWZhY2VzMiB7XHJcblxyXG4gICAgLy9sZWdhY3kgY29tcGF0aWJpbGl0eVxyXG4gICAgZXhwb3J0IHZhciBfaW1wbCA9IG1mX2ltcGw7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBQiBmdW5jdGlvbiBzaW1pbGFyIHRvIG1vamFycmEgYW5kIFByaW1lZmFjZXNcclxuICAgICAqIG5vdCBwYXJ0IG9mIHRoZSBzcGVjIGJ1dCBhIGNvbnZlbmllbmNlIGFjY2Vzb3IgbWV0aG9kXHJcbiAgICAgKiBDb2RlIHByb3ZpZGVkIGJ5IFRob21hcyBBbmRyYXNjaGtvXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHNvdXJjZSB0aGUgZXZlbnQgc291cmNlXHJcbiAgICAgKiBAcGFyYW0gZXZlbnQgdGhlIGV2ZW50XHJcbiAgICAgKiBAcGFyYW0gZXZlbnROYW1lIGV2ZW50IG5hbWUgZm9yIGphdmEuamF2YXguZmFjZXMuYmVoYXZpb3IuZXZlbW50XHJcbiAgICAgKiBAcGFyYW0gZXhlY3V0ZSBleGVjdXRlIGxpc3QgYXMgcGFzc2VkIGRvd24gaW4ganNmLmFqYXgucmVxdWVzdFxyXG4gICAgICogQHBhcmFtIHJlbmRlclxyXG4gICAgICogQHBhcmFtIG9wdGlvbnNcclxuICAgICAqL1xyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGFiKHNvdXJjZTogRWxlbWVudCwgZXZlbnQ6IEV2ZW50LCBldmVudE5hbWU6IHN0cmluZywgZXhlY3V0ZTogc3RyaW5nLCByZW5kZXI6IHN0cmluZywgb3B0aW9uczogQ29udGV4dCA9IHt9KSB7XHJcbiAgICAgICAgaWYgKGV2ZW50TmFtZSkge1xyXG4gICAgICAgICAgICBvcHRpb25zW1wiamF2YXguZmFjZXMuYmVoYXZpb3IuZXZlbnRcIl0gPSBldmVudE5hbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChleGVjdXRlKSB7XHJcbiAgICAgICAgICAgIG9wdGlvbnNbXCJleGVjdXRlXCJdID0gZXhlY3V0ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHJlbmRlcikge1xyXG4gICAgICAgICAgICBvcHRpb25zW1wicmVuZGVyXCJdID0gcmVuZGVyO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAganNmLmFqYXgucmVxdWVzdChzb3VyY2UsIGV2ZW50LCBvcHRpb25zKTtcclxuICAgIH1cclxufVxyXG5cclxuXHJcbiJdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7OztBQWNBOzs7Ozs7Ozs7O0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFLQTtBQUVBO0FBQUE7QUFDQTtBQUVBOzs7Ozs7Ozs7O0FBVUE7QUFDQTtBQUNBOzs7Ozs7O0FBT0E7QUFDQTtBQUVBOzs7QUFHQTtBQUNBO0FBRUE7Ozs7Ozs7Ozs7Ozs7O0FBY0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBOzs7Ozs7O0FBT0E7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQ0E7QUFFQTs7Ozs7Ozs7Ozs7Ozs7QUFjQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFGQTtBQUlBOzs7Ozs7Ozs7Ozs7Ozs7O0FBZ0JBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBR0E7QUFFQTtBQUFBO0FBRUE7Ozs7Ozs7Ozs7QUFVQTtBQUNBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQ0E7QUFGQTtBQUdBO0FBRUE7QUFBQTtBQUNBOzs7OztBQUtBO0FBQ0E7QUFRQTtBQUNBO0FBVEE7QUFXQTs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUVBO0FBSUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUVBOzs7Ozs7Ozs7OztBQVdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFaQTtBQWFBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/main/typescript/api/Jsf.ts\n");
/***/ }),
/***/ "./src/main/typescript/api/myfaces.ts":
/*!********************************************!*\
!*** ./src/main/typescript/api/myfaces.ts ***!
\********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\r\n/* Licensed to the Apache Software Foundation (ASF) under one or more\r\n * contributor license agreements. See the NOTICE file distributed with\r\n * this work for additional information regarding copyright ownership.\r\n * The ASF licenses this file to you under the Apache License, Version 2.0\r\n * (the \"License\"); you may not use this file except in compliance with\r\n * the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar myfaces;\r\n(function (myfaces) {\r\n var ConfigHolder = /** @class */ (function () {\r\n function ConfigHolder() {\r\n this.projectStage = null;\r\n this.separator = null;\r\n }\r\n return ConfigHolder;\r\n }());\r\n myfaces.ConfigHolder = ConfigHolder;\r\n myfaces.config = new ConfigHolder();\r\n //if (window && \"undefined\" == typeof window.myfaces) {\r\n // window.myfaces = myfaces;\r\n //}\r\n})(myfaces = exports.myfaces || (exports.myfaces = {}));\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbWFpbi90eXBlc2NyaXB0L2FwaS9teWZhY2VzLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21haW4vdHlwZXNjcmlwdC9hcGkvbXlmYWNlcy50cz82MjlmIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUgb3IgbW9yZVxyXG4gKiBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlIGRpc3RyaWJ1dGVkIHdpdGhcclxuICogdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLlxyXG4gKiBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZSB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMFxyXG4gKiAodGhlIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoXHJcbiAqIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XHJcbiAqXHJcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbiAqXHJcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcclxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxyXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cclxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxyXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cclxuICovXHJcblxyXG4vKipcclxuICogaW50ZXJuYWwgbXlmYWNlcyBjb25maWcgb3ZlcnJpZGUgcGFyYW1zXHJcbiAqL1xyXG5kZWNsYXJlIHZhciB3aW5kb3c6IGFueTtcclxuZXhwb3J0IG1vZHVsZSBteWZhY2VzIHtcclxuXHJcbiAgICBleHBvcnQgY2xhc3MgQ29uZmlnSG9sZGVyIHtcclxuICAgICAgICBwcm9qZWN0U3RhZ2U6IHN0cmluZyA9IG51bGw7XHJcbiAgICAgICAgc2VwYXJhdG9yOiBzdHJpbmcgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCB2YXIgY29uZmlnID0gbmV3IENvbmZpZ0hvbGRlcigpO1xyXG5cclxuICAgIC8vaWYgKHdpbmRvdyAmJiBcInVuZGVmaW5lZFwiID09IHR5cGVvZiB3aW5kb3cubXlmYWNlcykge1xyXG4gICAgLy8gICAgd2luZG93Lm15ZmFjZXMgPSBteWZhY2VzO1xyXG4gICAgLy99XHJcbn1cclxuIl0sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7O0FBY0E7O0FBTUE7QUFBQTtBQUVBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBSEE7QUFLQTtBQUVBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/main/typescript/api/myfaces.ts\n");
/***/ }),
/***/ "./src/main/typescript/ext/monadish/DomQuery.ts":
/*!******************************************************!*\
!*** ./src/main/typescript/ext/monadish/DomQuery.ts ***!
\******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\r\n/* Licensed to the Apache Software Foundation (ASF) under one or more\r\n * contributor license agreements. See the NOTICE file distributed with\r\n * this work for additional information regarding copyright ownership.\r\n * The ASF licenses this file to you under the Apache License, Version 2.0\r\n * (the \"License\"); you may not use this file except in compliance with\r\n * the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Monad_1 = __webpack_require__(/*! ./Monad */ \"./src/main/typescript/ext/monadish/Monad.ts\");\r\nvar Stream_1 = __webpack_require__(/*! ./Stream */ \"./src/main/typescript/ext/monadish/Stream.ts\");\r\nvar Lang_1 = __webpack_require__(/*! ./Lang */ \"./src/main/typescript/ext/monadish/Lang.ts\");\r\nvar trim = Lang_1.Lang.trim;\r\nvar objToArray = Lang_1.Lang.objToArray;\r\nvar isString = Lang_1.Lang.isString;\r\nvar equalsIgnoreCase = Lang_1.Lang.equalsIgnoreCase;\r\n// @ts-ignore supression needed here due to fromnullable\r\nvar ElementAttribute = /** @class */ (function (_super) {\r\n __extends(ElementAttribute, _super);\r\n function ElementAttribute(element, name, defaultVal) {\r\n if (defaultVal === void 0) { defaultVal = null; }\r\n var _this = _super.call(this, element, name) || this;\r\n _this.element = element;\r\n _this.name = name;\r\n _this.defaultVal = defaultVal;\r\n return _this;\r\n }\r\n Object.defineProperty(ElementAttribute.prototype, \"value\", {\r\n get: function () {\r\n var _a;\r\n var val = (_a = this.element.get(0)).orElse.apply(_a, []).values;\r\n if (!val.length) {\r\n return this.defaultVal;\r\n }\r\n return val[0].getAttribute(this.name);\r\n },\r\n set: function (value) {\r\n var _a;\r\n var val = (_a = this.element.get(0)).orElse.apply(_a, []).values;\r\n for (var cnt = 0; cnt < val.length; cnt++) {\r\n val[cnt].setAttribute(this.name, value);\r\n }\r\n val[0].setAttribute(this.name, value);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ElementAttribute.prototype.getClass = function () {\r\n return ElementAttribute;\r\n };\r\n ElementAttribute.fromNullable = function (value, valueKey) {\r\n if (valueKey === void 0) { valueKey = \"value\"; }\r\n return new ElementAttribute(value, valueKey);\r\n };\r\n return ElementAttribute;\r\n}(Monad_1.ValueEmbedder));\r\nexports.ElementAttribute = ElementAttribute;\r\n/**\r\n * small helper for the specialized jsf case\r\n * @param src\r\n * @constructor\r\n */\r\nvar DEFAULT_JSF_WHITELIST = function (src) {\r\n return (src.indexOf(\"ln=scripts\") == -1 &&\r\n src.indexOf(\"ln=javax.faces\") == -1) ||\r\n (src.indexOf(\"/jsf.js\") == -1 &&\r\n src.indexOf(\"/jsf-uncompressed.js\") == -1);\r\n};\r\n/**\r\n * Monadic DomNode representation, ala jquery\r\n * This is a thin wrapper over querySelectorAll\r\n * to get slim monadic support\r\n * to reduce implementation code on the users side.\r\n * This is vital for frameworks which want to rely on\r\n * plain dom but still do not want to lose\r\n * the reduced code footprint of querying dom trees and traversing\r\n * by using functional patterns.\r\n *\r\n * Also a few convenience methods are added to reduce\r\n * the code footprint of standard dom processing\r\n * operations like eval\r\n *\r\n * TODO add jquery fallback support, since it is supported\r\n * in most older systems\r\n * Note parts of this code still stem from the Dom.js I have written 10 years\r\n * ago, those parts look a little bit ancient and will be replaced over time.\r\n *\r\n */\r\nvar DomQuery = /** @class */ (function () {\r\n function DomQuery() {\r\n var _a;\r\n var rootNode = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n rootNode[_i] = arguments[_i];\r\n }\r\n this.rootNode = [];\r\n this.pos = -1;\r\n this._limits = -1;\r\n if (Monad_1.Optional.fromNullable(rootNode).isAbsent() || !rootNode.length) {\r\n return;\r\n }\r\n else {\r\n //we need to flatten out the arrays\r\n for (var cnt = 0; cnt < rootNode.length; cnt++) {\r\n if (isString(rootNode[cnt])) {\r\n var foundElement = DomQuery.querySelectorAll(rootNode[cnt]);\r\n if (!foundElement.isAbsent()) {\r\n rootNode.push.apply(rootNode, foundElement.values);\r\n }\r\n }\r\n else if (rootNode[cnt] instanceof DomQuery) {\r\n (_a = this.rootNode).push.apply(_a, rootNode[cnt].values);\r\n }\r\n else {\r\n this.rootNode.push(rootNode[cnt]);\r\n }\r\n }\r\n }\r\n }\r\n Object.defineProperty(DomQuery.prototype, \"value\", {\r\n /**\r\n * returns the first element\r\n */\r\n get: function () {\r\n return this.getAsElem(0);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DomQuery.prototype, \"values\", {\r\n get: function () {\r\n return this.allElems();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DomQuery.prototype, \"id\", {\r\n /**\r\n * returns the id of the first element\r\n */\r\n get: function () {\r\n return new ElementAttribute(this.get(0), \"id\");\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DomQuery.prototype, \"length\", {\r\n /**\r\n * length of the entire query set\r\n */\r\n get: function () {\r\n return this.rootNode.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DomQuery.prototype, \"tagName\", {\r\n /**\r\n * convenience method for tagName\r\n */\r\n get: function () {\r\n return this.getAsElem(0).getIf(\"tagName\");\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DomQuery.prototype, \"nodeName\", {\r\n /**\r\n * convenience method for nodeName\r\n */\r\n get: function () {\r\n return this.getAsElem(0).getIf(\"nodeName\");\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n DomQuery.prototype.isTag = function (tagName) {\r\n return !this.isAbsent()\r\n && (this.nodeName.orElse(\"__none___\")\r\n .value.toLowerCase() == tagName.toLowerCase()\r\n || this.tagName.orElse(\"__none___\")\r\n .value.toLowerCase() == tagName.toLowerCase());\r\n };\r\n Object.defineProperty(DomQuery.prototype, \"type\", {\r\n /**\r\n * convenience property for type\r\n *\r\n * returns null in case of no type existing otherwise\r\n * the type of the first element\r\n */\r\n get: function () {\r\n return this.getAsElem(0).getIf(\"type\");\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DomQuery.prototype, \"name\", {\r\n /**\r\n * convenience property for name\r\n *\r\n * returns null in case of no type existing otherwise\r\n * the name of the first element\r\n */\r\n get: function () {\r\n return new Monad_1.ValueEmbedder(this.getAsElem(0).value, \"name\");\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DomQuery.prototype, \"inputValue\", {\r\n /**\r\n * convenience property for value\r\n *\r\n * returns null in case of no type existing otherwise\r\n * the value of the first element\r\n */\r\n get: function () {\r\n if (this.getAsElem(0).getIf(\"value\").isPresent()) {\r\n return new Monad_1.ValueEmbedder(this.getAsElem(0).value);\r\n }\r\n else {\r\n return Monad_1.ValueEmbedder.absent;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DomQuery.prototype, \"checked\", {\r\n get: function () {\r\n return Stream_1.Stream.of.apply(Stream_1.Stream, this.values).allMatch(function (el) { return !!el.checked; });\r\n },\r\n set: function (newChecked) {\r\n this.eachElem(function (el) { return el.checked = newChecked; });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DomQuery.prototype, \"elements\", {\r\n get: function () {\r\n var _this = this;\r\n var elements = this.stream.flatMap(function (item) {\r\n var formElement = item.value.value;\r\n return new Stream_1.Stream(formElement.elements ? objToArray(formElement.elements) : []);\r\n }).filter(function (item) { return !!item; }).collect(new DomQueryCollector());\r\n return elements\r\n .orElseLazy(function () { return _this.querySelectorAll(\"input, select, textarea, fieldset\"); });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DomQuery.prototype, \"disabled\", {\r\n /**\r\n * todo align this api with the rest of the apis\r\n */\r\n get: function () {\r\n return this.attr(\"disabled\").isPresent();\r\n },\r\n set: function (disabled) {\r\n // this.attr(\"disabled\").value = disabled + \"\";\r\n if (!disabled) {\r\n this.removeAttribute(\"disabled\");\r\n }\r\n else {\r\n this.attr(\"disabled\").value = \"disabled\";\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n DomQuery.prototype.removeAttribute = function (name) {\r\n this.eachElem(function (item) { return item.removeAttribute(name); });\r\n };\r\n Object.defineProperty(DomQuery.prototype, \"childNodes\", {\r\n get: function () {\r\n var childNodeArr = [];\r\n this.eachElem(function (item) {\r\n childNodeArr = childNodeArr.concat(objToArray(item.childNodes));\r\n });\r\n return new (DomQuery.bind.apply(DomQuery, __spreadArrays([void 0], childNodeArr)))();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DomQuery.prototype, \"stream\", {\r\n /**\r\n * binding into stream\r\n */\r\n get: function () {\r\n return new (Stream_1.Stream.bind.apply(Stream_1.Stream, __spreadArrays([void 0], this.asArray)))();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DomQuery.prototype, \"lazyStream\", {\r\n /**\r\n * fetches a lazy stream representation\r\n * lazy should be applied if you have some filters etc\r\n * in between, this can reduce the number of post filter operations\r\n * and ram usage\r\n * significantly because the operations are done lazily and stop\r\n * once they hit a dead end.\r\n */\r\n get: function () {\r\n return Stream_1.LazyStream.ofStreamDataSource(this);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(DomQuery.prototype, \"asArray\", {\r\n get: function () {\r\n var ret = [];\r\n this.each(function (item) {\r\n ret.push(item);\r\n });\r\n return ret;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * easy query selector all producer\r\n *\r\n * @param selector the selector\r\n * @returns a results dom query object\r\n */\r\n DomQuery.querySelectorAll = function (selector) {\r\n return new DomQuery(document).querySelectorAll(selector);\r\n };\r\n /**\r\n * byId producer\r\n *\r\n * @param selector id\r\n * @return a DomQuery containing the found elements\r\n */\r\n DomQuery.byId = function (selector) {\r\n if (isString(selector)) {\r\n return new DomQuery(document).byId(selector);\r\n }\r\n else {\r\n return new DomQuery(selector);\r\n }\r\n };\r\n /**\r\n * byTagName producer\r\n *\r\n * @param selector name\r\n * @return a DomQuery containing the found elements\r\n */\r\n DomQuery.byTagName = function (selector) {\r\n if (isString(selector)) {\r\n return new DomQuery(document).byTagName(selector);\r\n }\r\n else {\r\n return new DomQuery(selector);\r\n }\r\n };\r\n DomQuery.globalEval = function (code, nonce) {\r\n return new DomQuery(document).globalEval(code, nonce);\r\n };\r\n /**\r\n * builds the ie nodes properly in a placeholder\r\n * and bypasses a non script insert bug that way\r\n * @param markup the marku code\r\n */\r\n DomQuery.fromMarkup = function (markup) {\r\n //https://developer.mozilla.org/de/docs/Web/API/DOMParser license creative commons\r\n var doc = document.implementation.createHTMLDocument(\"\");\r\n markup = trim(markup);\r\n var lowerMarkup = markup.toLowerCase();\r\n if (lowerMarkup.indexOf('<!doctype') != -1 ||\r\n lowerMarkup.indexOf('<html') != -1 ||\r\n lowerMarkup.indexOf('<head') != -1 || //TODO proper regexps here to avoid embedded tags with same element names to be triggered\r\n lowerMarkup.indexOf('<body') != -1) {\r\n doc.documentElement.innerHTML = markup;\r\n return new DomQuery(doc.documentElement);\r\n }\r\n else {\r\n var startsWithTag = function (str, tagName) {\r\n var tag1 = [\"<\", tagName, \">\"].join(\"\");\r\n var tag2 = [\"<\", tagName, \" \"].join(\"\");\r\n return (str.indexOf(tag1) == 0) || (str.indexOf(tag2) == 0);\r\n };\r\n var dummyPlaceHolder = new DomQuery(document.createElement(\"div\"));\r\n //table needs special treatment due to the browsers auto creation\r\n if (startsWithTag(lowerMarkup, \"thead\") || startsWithTag(lowerMarkup, \"tbody\")) {\r\n dummyPlaceHolder.html(\"<table>\" + markup + \"</table>\");\r\n return dummyPlaceHolder.querySelectorAll(\"table\").get(0).childNodes.detach();\r\n }\r\n else if (startsWithTag(lowerMarkup, \"tfoot\")) {\r\n dummyPlaceHolder.html(\"<table><thead></thead><tbody><tbody\" + markup + \"</table>\");\r\n return dummyPlaceHolder.querySelectorAll(\"table\").get(2).childNodes.detach();\r\n }\r\n else if (startsWithTag(lowerMarkup, \"tr\")) {\r\n dummyPlaceHolder.html(\"<table><tbody>\" + markup + \"</tbody></table>\");\r\n return dummyPlaceHolder.querySelectorAll(\"tbody\").get(0).childNodes.detach();\r\n }\r\n else if (startsWithTag(lowerMarkup, \"td\")) {\r\n dummyPlaceHolder.html(\"<table><tbody><tr>\" + markup + \"</tr></tbody></table>\");\r\n return dummyPlaceHolder.querySelectorAll(\"tr\").get(0).childNodes.detach();\r\n }\r\n dummyPlaceHolder.html(markup);\r\n return dummyPlaceHolder.childNodes.detach();\r\n }\r\n };\r\n /**\r\n * returns the nth element as domquery\r\n * from the internal elements\r\n * note if you try to reach a non existing element position\r\n * you will get back an absent entry\r\n *\r\n * @param index the nth index\r\n */\r\n DomQuery.prototype.get = function (index) {\r\n return (index < this.rootNode.length) ? new DomQuery(this.rootNode[index]) : DomQuery.absent;\r\n };\r\n /**\r\n * returns the nth element as optional of an Element object\r\n * @param index the number from the index\r\n * @param defaults the default value if the index is overrun default Optional.absent\r\n */\r\n DomQuery.prototype.getAsElem = function (index, defaults) {\r\n if (defaults === void 0) { defaults = Monad_1.Optional.absent; }\r\n return (index < this.rootNode.length) ? Monad_1.Optional.fromNullable(this.rootNode[index]) : defaults;\r\n };\r\n /**\r\n * returns the value array< of all elements\r\n */\r\n DomQuery.prototype.allElems = function () {\r\n return this.rootNode;\r\n };\r\n /**\r\n * absent no values reached?\r\n */\r\n DomQuery.prototype.isAbsent = function () {\r\n return this.length == 0;\r\n };\r\n /**\r\n * should make the code clearer\r\n * note if you pass a function\r\n * this refers to the active dopmquery object\r\n */\r\n DomQuery.prototype.isPresent = function (presentRunnable) {\r\n var absent = this.isAbsent();\r\n if (!absent && presentRunnable) {\r\n presentRunnable.call(this, this);\r\n }\r\n return !absent;\r\n };\r\n /**\r\n * should make the code clearer\r\n * note if you pass a function\r\n * this refers to the active dopmquery object\r\n *\r\n *\r\n * @param presentRunnable\r\n */\r\n DomQuery.prototype.ifPresentLazy = function (presentRunnable) {\r\n if (presentRunnable === void 0) { presentRunnable = function () {\r\n }; }\r\n this.isPresent.call(this, presentRunnable);\r\n return this;\r\n };\r\n /**\r\n * remove all affected nodes from this query object from the dom tree\r\n */\r\n DomQuery.prototype.delete = function () {\r\n this.eachElem(function (node) {\r\n if (node.parentNode) {\r\n node.parentNode.removeChild(node);\r\n }\r\n });\r\n };\r\n /**\r\n * query selector all on the existing dom query object\r\n *\r\n * @param selector the standard selector\r\n * @return a DomQuery with the results\r\n */\r\n DomQuery.prototype.querySelectorAll = function (selector) {\r\n var _a, _b, _c;\r\n if (!((_b = (_a = this) === null || _a === void 0 ? void 0 : _a.rootNode) === null || _b === void 0 ? void 0 : _b.length)) {\r\n return this;\r\n }\r\n var nodes = [];\r\n for (var cnt = 0; cnt < this.rootNode.length; cnt++) {\r\n if (!((_c = this.rootNode[cnt]) === null || _c === void 0 ? void 0 : _c.querySelectorAll)) {\r\n continue;\r\n }\r\n var res = this.rootNode[cnt].querySelectorAll(selector);\r\n nodes = nodes.concat(objToArray(res));\r\n }\r\n return new (DomQuery.bind.apply(DomQuery, __spreadArrays([void 0], nodes)))();\r\n };\r\n /**\r\n * core byId method\r\n * @param id the id to search for\r\n * @param includeRoot also match the root element?\r\n */\r\n DomQuery.prototype.byId = function (id, includeRoot) {\r\n var _a;\r\n var res = [];\r\n for (var cnt = 0; includeRoot && cnt < this.rootNode.length; cnt++) {\r\n if (((_a = this.rootNode[cnt]) === null || _a === void 0 ? void 0 : _a.id) == id) {\r\n res.push(new DomQuery(this.rootNode[cnt]));\r\n }\r\n }\r\n //for some strange kind of reason the # selector fails\r\n //on hidden elements we use the attributes match selector\r\n //that works\r\n res = res.concat(this.querySelectorAll(\"[id=\\\"\" + id + \"\\\"]\"));\r\n return new (DomQuery.bind.apply(DomQuery, __spreadArrays([void 0], res)))();\r\n };\r\n /**\r\n * same as byId just for the tag name\r\n * @param tagName\r\n * @param includeRoot\r\n */\r\n DomQuery.prototype.byTagName = function (tagName, includeRoot) {\r\n var _a;\r\n var res = [];\r\n for (var cnt = 0; includeRoot && cnt < this.rootNode.length; cnt++) {\r\n if (((_a = this.rootNode[cnt]) === null || _a === void 0 ? void 0 : _a.tagName) == tagName) {\r\n res.push(new DomQuery(this.rootNode[cnt]));\r\n }\r\n }\r\n res = res.concat(this.querySelectorAll(tagName));\r\n return new (DomQuery.bind.apply(DomQuery, __spreadArrays([void 0], res)))();\r\n };\r\n /**\r\n * attr accessor, usage myQuery.attr(\"class\").value = \"bla\"\r\n * or let value myQuery.attr(\"class\").value\r\n * @param attr the attribute to set\r\n * @param defaultValue the default value in case nothing is presented (defaults to null)\r\n */\r\n DomQuery.prototype.attr = function (attr, defaultValue) {\r\n if (defaultValue === void 0) { defaultValue = null; }\r\n return new ElementAttribute(this, attr, defaultValue);\r\n };\r\n /**\r\n * hasclass, checks for an existing class in the class attributes\r\n *\r\n * @param clazz the class to search for\r\n */\r\n DomQuery.prototype.hasClass = function (clazz) {\r\n var hasIt = false;\r\n this.each(function (item) {\r\n var oldClass = item.attr(\"class\").value || \"\";\r\n if (oldClass.toLowerCase().indexOf(clazz.toLowerCase()) == -1) {\r\n return;\r\n }\r\n else {\r\n var oldClasses = oldClass.split(/\\s+/gi);\r\n var found = false;\r\n for (var cnt = 0; cnt < oldClasses.length && !found; cnt++) {\r\n found = oldClasses[cnt].toLowerCase() == clazz.toLowerCase();\r\n }\r\n hasIt = hasIt || found;\r\n if (hasIt) {\r\n return false;\r\n }\r\n }\r\n });\r\n return hasIt;\r\n };\r\n /**\r\n * appends a class string if not already in the element(s)\r\n *\r\n * @param clazz the style class to append\r\n */\r\n DomQuery.prototype.addClass = function (clazz) {\r\n var _this = this;\r\n this.each(function (item) {\r\n var oldClass = item.attr(\"class\").value || \"\";\r\n if (!_this.hasClass(clazz)) {\r\n item.attr(\"class\").value = trim(oldClass + \" \" + clazz);\r\n return;\r\n }\r\n });\r\n return this;\r\n };\r\n /**\r\n * remove the style class if in the class definitions\r\n *\r\n * @param clazz\r\n */\r\n DomQuery.prototype.removeClass = function (clazz) {\r\n var _this = this;\r\n this.each(function (item) {\r\n if (_this.hasClass(clazz)) {\r\n var oldClass = item.attr(\"class\").value || \"\";\r\n var newClasses = [];\r\n var oldClasses = oldClass.split(/\\s+/gi);\r\n for (var cnt = 0; cnt < oldClasses.length; cnt++) {\r\n if (oldClasses[cnt].toLowerCase() != clazz.toLowerCase()) {\r\n newClasses.push(oldClasses[cnt]);\r\n }\r\n }\r\n item.attr(\"class\").value = newClasses.join(\" \");\r\n }\r\n });\r\n return this;\r\n };\r\n /**\r\n * checks whether we have a multipart element in our children\r\n */\r\n DomQuery.prototype.isMultipartCandidate = function () {\r\n return this.querySelectorAll(\"input[type='file']\").firstElem().isPresent();\r\n };\r\n /**\r\n * innerHtml equivalkent\r\n * equivalent to jqueries html\r\n * as setter the html is set and the\r\n * DomQuery is given back\r\n * as getter the html string is returned\r\n *\r\n * @param inval\r\n */\r\n DomQuery.prototype.html = function (inval) {\r\n if (Monad_1.Optional.fromNullable(inval).isAbsent()) {\r\n return this.isPresent() ? Monad_1.Optional.fromNullable(this.innerHtml) : Monad_1.Optional.absent;\r\n }\r\n this.innerHtml = inval;\r\n return this;\r\n };\r\n Object.defineProperty(DomQuery.prototype, \"innerHtml\", {\r\n get: function () {\r\n var retArr = [];\r\n this.eachElem(function (elem) { return retArr.push(elem.innerHTML); });\r\n return retArr.join(\"\");\r\n },\r\n set: function (inVal) {\r\n this.eachElem(function (elem) { return elem.innerHTML = inVal; });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n //source: https://developer.mozilla.org/en-US/docs/Web/API/Element/matches\r\n //code snippet license: https://creativecommons.org/licenses/by-sa/2.5/\r\n DomQuery.prototype._mozMatchesSelector = function (toMatch, selector) {\r\n var prot = toMatch;\r\n var matchesSelector = prot.matchesSelector ||\r\n prot.mozMatchesSelector ||\r\n prot.msMatchesSelector ||\r\n prot.oMatchesSelector ||\r\n prot.webkitMatchesSelector ||\r\n function (s) {\r\n var matches = (document || window.ownerDocument).querySelectorAll(s), i = matches.length;\r\n while (--i >= 0 && matches.item(i) !== toMatch) {\r\n }\r\n return i > -1;\r\n };\r\n return matchesSelector.call(toMatch, selector);\r\n };\r\n /**\r\n * filters the current dom query elements\r\n * upon a given selector\r\n *\r\n * @param selector\r\n */\r\n DomQuery.prototype.filterSelector = function (selector) {\r\n var _this = this;\r\n var matched = [];\r\n this.eachElem(function (item) {\r\n if (_this._mozMatchesSelector(item, selector)) {\r\n matched.push(item);\r\n }\r\n });\r\n return new (DomQuery.bind.apply(DomQuery, __spreadArrays([void 0], matched)))();\r\n };\r\n DomQuery.prototype.matchesSelector = function (selector) {\r\n var _this = this;\r\n this.eachElem(function (item) {\r\n if (!_this._mozMatchesSelector(item, selector)) {\r\n return false;\r\n }\r\n });\r\n return true;\r\n };\r\n /**\r\n * easy node traversal, you can pass\r\n * a set of node selectors which are joined as direct childs\r\n *\r\n * not the rootnodes are not in the getIf, those are always the child nodes\r\n *\r\n * @param nodeSelector\r\n */\r\n DomQuery.prototype.getIf = function () {\r\n var nodeSelector = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n nodeSelector[_i] = arguments[_i];\r\n }\r\n var selectorStage = this.childNodes;\r\n for (var cnt = 0; cnt < nodeSelector.length; cnt++) {\r\n selectorStage = selectorStage.filterSelector(nodeSelector[cnt]);\r\n if (selectorStage.isAbsent()) {\r\n return selectorStage;\r\n }\r\n }\r\n return selectorStage;\r\n };\r\n DomQuery.prototype.eachElem = function (func) {\r\n for (var cnt = 0, len = this.rootNode.length; cnt < len; cnt++) {\r\n if (func(this.rootNode[cnt], cnt) === false) {\r\n break;\r\n }\r\n }\r\n return this;\r\n };\r\n DomQuery.prototype.firstElem = function (func) {\r\n if (func === void 0) { func = function (item) { return item; }; }\r\n if (this.rootNode.length > 1) {\r\n func(this.rootNode[0], 0);\r\n }\r\n return this;\r\n };\r\n DomQuery.prototype.each = function (func) {\r\n Stream_1.Stream.of.apply(Stream_1.Stream, this.rootNode).each(function (item, cnt) {\r\n //we could use a filter, but for the best performance we dont\r\n if (item == null) {\r\n return;\r\n }\r\n return func(DomQuery.byId(item), cnt);\r\n });\r\n return this;\r\n };\r\n /**\r\n * returns a new dom query containing only the first element max\r\n *\r\n * @param func a an optional callback function to perform an operation on the first element\r\n */\r\n DomQuery.prototype.first = function (func) {\r\n if (func === void 0) { func = function (item) { return item; }; }\r\n if (this.rootNode.length >= 1) {\r\n func(this.get(0), 0);\r\n return this.get(0);\r\n }\r\n return this;\r\n };\r\n /**\r\n * filter function which filters a subset\r\n *\r\n * @param func\r\n */\r\n DomQuery.prototype.filter = function (func) {\r\n var reArr = [];\r\n this.each(function (item) {\r\n func(item) ? reArr.push(item) : null;\r\n });\r\n return new (DomQuery.bind.apply(DomQuery, __spreadArrays([void 0], reArr)))();\r\n };\r\n //TODO append prepend\r\n /**\r\n * global eval head appendix method\r\n * no other methods are supported anymore\r\n * @param code the code to be evaled\r\n * @param nonce optional nonce key for higher security\r\n */\r\n DomQuery.prototype.globalEval = function (code, nonce) {\r\n var head = document.getElementsByTagName(\"head\")[0] || document.documentElement;\r\n var script = document.createElement(\"script\");\r\n if (nonce) {\r\n script.setAttribute(\"nonce\", nonce);\r\n }\r\n script.type = \"text/javascript\";\r\n script.innerHTML = code;\r\n var newScriptElement = head.appendChild(script);\r\n head.removeChild(newScriptElement);\r\n return this;\r\n };\r\n /**\r\n * detaches a set of nodes from their parent elements\r\n * in a browser independend manner\r\n * @param {Object} items the items which need to be detached\r\n * @return {Array} an array of nodes with the detached dom nodes\r\n */\r\n DomQuery.prototype.detach = function () {\r\n this.eachElem(function (item) {\r\n item.parentNode.removeChild(item);\r\n });\r\n return this;\r\n };\r\n /**\r\n * appends the current set of elements\r\n * to the element or first element passed via elem\r\n * @param elem\r\n */\r\n DomQuery.prototype.appendTo = function (elem) {\r\n this.eachElem(function (item) {\r\n var value1 = elem.getAsElem(0).orElseLazy(function () {\r\n return {\r\n appendChild: function (theItem) {\r\n }\r\n };\r\n }).value;\r\n value1.appendChild(item);\r\n });\r\n };\r\n /**\r\n * loads and evals a script from a source uri\r\n *\r\n * @param src the source to be loaded and evaled\r\n * @param defer in miliseconds execution default (0 == no defer)\r\n * @param charSet\r\n */\r\n DomQuery.prototype.loadScriptEval = function (src, defer, charSet) {\r\n var _this = this;\r\n if (defer === void 0) { defer = 0; }\r\n if (charSet === void 0) { charSet = \"utf-8\"; }\r\n var xhr = new XMLHttpRequest();\r\n xhr.open(\"GET\", src, false);\r\n if (charSet) {\r\n xhr.setRequestHeader(\"Content-Type\", \"application/x-javascript; charset:\" + charSet);\r\n }\r\n xhr.send(null);\r\n xhr.onload = function (responseData) {\r\n //defer also means we have to process after the ajax response\r\n //has been processed\r\n //we can achieve that with a small timeout, the timeout\r\n //triggers after the processing is done!\r\n if (!defer) {\r\n _this.globalEval(xhr.responseText.replace(\"\\n\", \"\\r\\n\") + \"\\r\\n//@ sourceURL=\" + src);\r\n }\r\n else {\r\n //TODO not ideal we maybe ought to move to something else here\r\n //but since it is not in use yet, it is ok\r\n setTimeout(function () {\r\n _this.globalEval(xhr.responseText + \"\\r\\n//@ sourceURL=\" + src);\r\n }, defer);\r\n }\r\n };\r\n xhr.onerror = function (data) {\r\n throw Error(data);\r\n };\r\n //since we are synchronous we do it after not with onReadyStateChange\r\n return this;\r\n };\r\n DomQuery.prototype.insertAfter = function () {\r\n var toInsertParams = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n toInsertParams[_i] = arguments[_i];\r\n }\r\n this.each(function (existingItem) {\r\n var existingElement = existingItem.getAsElem(0).value;\r\n var rootNode = existingElement.parentNode;\r\n var _loop_1 = function (cnt) {\r\n var nextSibling = existingElement.nextSibling;\r\n toInsertParams[cnt].eachElem(function (insertElem) {\r\n if (nextSibling) {\r\n rootNode.insertBefore(insertElem, nextSibling);\r\n existingElement = nextSibling;\r\n }\r\n else {\r\n rootNode.appendChild(insertElem);\r\n }\r\n });\r\n };\r\n for (var cnt = 0; cnt < toInsertParams.length; cnt++) {\r\n _loop_1(cnt);\r\n }\r\n });\r\n var res = [];\r\n res.push(this);\r\n res = res.concat(toInsertParams);\r\n return new (DomQuery.bind.apply(DomQuery, __spreadArrays([void 0], res)))();\r\n };\r\n DomQuery.prototype.insertBefore = function () {\r\n var toInsertParams = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n toInsertParams[_i] = arguments[_i];\r\n }\r\n this.each(function (existingItem) {\r\n var existingElement = existingItem.getAsElem(0).value;\r\n var rootNode = existingElement.parentNode;\r\n for (var cnt = 0; cnt < toInsertParams.length; cnt++) {\r\n toInsertParams[cnt].eachElem(function (insertElem) {\r\n rootNode.insertBefore(insertElem, existingElement);\r\n });\r\n }\r\n });\r\n var res = [];\r\n res.push(this);\r\n res = res.concat(toInsertParams);\r\n return new (DomQuery.bind.apply(DomQuery, __spreadArrays([void 0], res)))();\r\n };\r\n DomQuery.prototype.orElse = function () {\r\n var elseValue = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n elseValue[_i] = arguments[_i];\r\n }\r\n if (this.isPresent()) {\r\n return this;\r\n }\r\n else {\r\n return new (DomQuery.bind.apply(DomQuery, __spreadArrays([void 0], elseValue)))();\r\n }\r\n };\r\n DomQuery.prototype.orElseLazy = function (func) {\r\n if (this.isPresent()) {\r\n return this;\r\n }\r\n else {\r\n return new DomQuery(func());\r\n }\r\n };\r\n DomQuery.prototype.parents = function (tagName) {\r\n var retSet = new Set();\r\n var retArr = [];\r\n var lowerTagName = tagName.toLowerCase();\r\n var resolveItem = function (item) {\r\n if ((item.tagName || \"\").toLowerCase() == lowerTagName && !retSet.has(item)) {\r\n retSet.add(item);\r\n retArr.push(item);\r\n }\r\n };\r\n this.eachElem(function (item) {\r\n while (item.parentNode) {\r\n item = item.parentNode;\r\n resolveItem(item);\r\n //nested forms not possible, performance shortcut\r\n if (tagName == \"form\" && retArr.length) {\r\n return false;\r\n }\r\n }\r\n });\r\n return new (DomQuery.bind.apply(DomQuery, __spreadArrays([void 0], retArr)))();\r\n };\r\n DomQuery.prototype.copyAttrs = function (sourceItem) {\r\n var _this = this;\r\n sourceItem.eachElem(function (sourceNode) {\r\n var attrs = objToArray(sourceNode.attributes);\r\n for (var _i = 0, attrs_1 = attrs; _i < attrs_1.length; _i++) {\r\n var item = attrs_1[_i];\r\n var value = item.value;\r\n var name_1 = item.name;\r\n switch (name_1) {\r\n case \"id\":\r\n _this.id.value = value;\r\n break;\r\n case \"disabled\":\r\n _this.resolveAttributeHolder(\"disabled\").disabled = value;\r\n break;\r\n case \"checked\":\r\n _this.resolveAttributeHolder(\"checked\").checked = value;\r\n break;\r\n default:\r\n _this.attr(name_1).value = value;\r\n }\r\n }\r\n });\r\n return this;\r\n };\r\n /**\r\n * resolves an attribute holder compared\r\n * @param attr\r\n */\r\n DomQuery.prototype.resolveAttributeHolder = function (attrName) {\r\n if (attrName === void 0) { attrName = \"value\"; }\r\n var ret = [];\r\n ret[attrName] = null;\r\n return (attrName in this.getAsElem(0).value) ?\r\n this.getAsElem(0).value :\r\n ret;\r\n };\r\n /**\r\n * outerhtml convenience method\r\n * browsers only support innerHTML but\r\n * for instance for your jsf.js we have a full\r\n * replace pattern which needs outerHTML processing\r\n *\r\n * @param markup\r\n * @param runEmbeddedScripts\r\n * @param runEmbeddedCss\r\n */\r\n DomQuery.prototype.outerHTML = function (markup, runEmbeddedScripts, runEmbeddedCss) {\r\n if (this.isAbsent()) {\r\n return;\r\n }\r\n var nodes = DomQuery.fromMarkup(markup);\r\n var res = [];\r\n var toReplace = this.getAsElem(0).value;\r\n var firstInsert = nodes.get(0);\r\n var parentNode = toReplace.parentNode;\r\n var replaced = firstInsert.getAsElem(0).value;\r\n parentNode.replaceChild(replaced, toReplace);\r\n res.push(new DomQuery(replaced));\r\n //no replacement possible\r\n if (this.isAbsent()) {\r\n return this;\r\n }\r\n var insertAdditionalItems = [];\r\n if (nodes.length > 1) {\r\n insertAdditionalItems = insertAdditionalItems.concat.apply(insertAdditionalItems, nodes.values.slice(1));\r\n res.push(DomQuery.byId(replaced).insertAfter(new (DomQuery.bind.apply(DomQuery, __spreadArrays([void 0], insertAdditionalItems)))()));\r\n }\r\n if (runEmbeddedScripts) {\r\n this.runScripts();\r\n }\r\n if (runEmbeddedCss) {\r\n this.runCss();\r\n }\r\n return nodes;\r\n };\r\n /**\r\n * Run through the given nodes in the DomQuery execute the inline scripts\r\n * @param whilteListed: optional whitelist function which can filter out script tags which are not processed\r\n * defaults to the standard jsf.js exclusion (we use this code for myfaces)\r\n */\r\n DomQuery.prototype.runScripts = function (whilteListed) {\r\n var _this = this;\r\n if (whilteListed === void 0) { whilteListed = DEFAULT_JSF_WHITELIST; }\r\n var finalScripts = [], equi = equalsIgnoreCase, execScrpt = function (item) {\r\n var tagName = item.tagName;\r\n var itemType = item.type || \"\";\r\n if (tagName && equi(tagName, \"script\") &&\r\n (itemType === \"\" || equi(itemType, \"text/javascript\") ||\r\n equi(itemType, \"javascript\") ||\r\n equi(itemType, \"text/ecmascript\") ||\r\n equi(itemType, \"ecmascript\"))) {\r\n var src = item.getAttribute('src');\r\n if ('undefined' != typeof src\r\n && null != src\r\n && src.length > 0) {\r\n //we have to move this into an inner if because chrome otherwise chokes\r\n //due to changing the and order instead of relying on left to right\r\n //if jsf.js is already registered we do not replace it anymore\r\n if (whilteListed(src)) {\r\n if (finalScripts.length) {\r\n //script source means we have to eval the existing\r\n //scripts before running the include\r\n _this.globalEval(finalScripts.join(\"\\n\"));\r\n finalScripts = [];\r\n }\r\n _this.loadScriptEval(src, 0, \"UTF-8\");\r\n }\r\n }\r\n else {\r\n // embedded script auto eval\r\n //TODO this probably needs to be changed due to our new parsing structures\r\n //probably not needed anymore\r\n var evalText = trim(item.text || item.innerText || item.innerHTML);\r\n var go = true;\r\n while (go) {\r\n go = false;\r\n if (evalText.substring(0, 4) == \"<!--\") {\r\n evalText = evalText.substring(4);\r\n go = true;\r\n }\r\n if (evalText.substring(0, 4) == \"//<!--\") {\r\n evalText = evalText.substring(6);\r\n go = true;\r\n }\r\n if (evalText.substring(0, 11) == \"//<![CDATA[\") {\r\n evalText = evalText.substring(11);\r\n go = true;\r\n }\r\n }\r\n // we have to run the script under a global context\r\n //we store the script for less calls to eval\r\n finalScripts.push(evalText);\r\n }\r\n }\r\n };\r\n try {\r\n var scriptElements = new DomQuery(this.filterSelector(\"script\"), this.querySelectorAll(\"script\"));\r\n //script execution order by relative pos in their dom tree\r\n scriptElements.stream\r\n .flatMap(function (item) {\r\n return Stream_1.Stream.of(item.values);\r\n })\r\n .sort(function (node1, node2) {\r\n return node1.compareDocumentPosition(node2) - 3; //preceding 2, following == 4\r\n })\r\n .each(function (item) { return execScrpt(item); });\r\n if (finalScripts.length) {\r\n this.globalEval(finalScripts.join(\"\\n\"));\r\n }\r\n }\r\n catch (e) {\r\n if (window.console && window.console.error) {\r\n //not sure if we\r\n //should use our standard\r\n //error mechanisms here\r\n //because in the head appendix\r\n //method only a console\r\n //error would be raised as well\r\n console.error(e.message || e.description);\r\n }\r\n }\r\n finally {\r\n //the usual ie6 fix code\r\n //the IE6 garbage collector is broken\r\n //nulling closures helps somewhat to reduce\r\n //mem leaks, which are impossible to avoid\r\n //at this browser\r\n execScrpt = null;\r\n }\r\n return this;\r\n };\r\n DomQuery.prototype.runCss = function () {\r\n var applyStyle = function (item, style) {\r\n var _a, _b, _c, _d, _e;\r\n var newSS = document.createElement(\"style\");\r\n document.getElementsByTagName(\"head\")[0].appendChild(newSS);\r\n var styleSheet = (_a = newSS.sheet, (_a !== null && _a !== void 0 ? _a : newSS.styleSheet));\r\n newSS.setAttribute(\"rel\", (_b = item.getAttribute(\"rel\"), (_b !== null && _b !== void 0 ? _b : \"stylesheet\")));\r\n newSS.setAttribute(\"type\", (_c = item.getAttribute(\"type\"), (_c !== null && _c !== void 0 ? _c : \"text/css\")));\r\n if (_e = (_d = styleSheet) === null || _d === void 0 ? void 0 : _d.cssText, (_e !== null && _e !== void 0 ? _e : false)) {\r\n styleSheet.cssText = style;\r\n }\r\n else {\r\n newSS.appendChild(document.createTextNode(style));\r\n }\r\n }, execCss = function (item) {\r\n var tagName = item.tagName;\r\n if (tagName && equalsIgnoreCase(tagName, \"link\") && equalsIgnoreCase(item.getAttribute(\"type\"), \"text/css\")) {\r\n applyStyle(item, \"@import url('\" + item.getAttribute(\"href\") + \"');\");\r\n }\r\n else if (tagName && equalsIgnoreCase(tagName, \"style\") && equalsIgnoreCase(item.getAttribute(\"type\"), \"text/css\")) {\r\n var innerText = [];\r\n //compliant browsers know child nodes\r\n var childNodes = item.childNodes;\r\n if (childNodes) {\r\n var len = childNodes.length;\r\n for (var cnt = 0; cnt < len; cnt++) {\r\n innerText.push(childNodes[cnt].innerHTML || childNodes[cnt].data);\r\n }\r\n //non compliant ones innerHTML\r\n }\r\n else if (item.innerHTML) {\r\n innerText.push(item.innerHTML);\r\n }\r\n applyStyle(item, innerText.join(\"\"));\r\n }\r\n };\r\n var scriptElements = new DomQuery(this.filterSelector(\"link, style\"), this.querySelectorAll(\"link, style\"));\r\n scriptElements.stream\r\n .flatMap(function (item) {\r\n return Stream_1.Stream.of(item.values);\r\n })\r\n .sort(function (node1, node2) {\r\n return node1.compareDocumentPosition(node2) - 3; //preceding 2, following == 4\r\n })\r\n .each(function (item) { return execCss(item); });\r\n return this;\r\n };\r\n /**\r\n * fires a click event on the underlying dom elements\r\n */\r\n DomQuery.prototype.click = function () {\r\n this.fireEvent(\"click\");\r\n return this;\r\n };\r\n DomQuery.prototype.addEventListener = function (type, listener, options) {\r\n this.eachElem(function (node) {\r\n node.addEventListener(type, listener, options);\r\n });\r\n return this;\r\n };\r\n DomQuery.prototype.removeEventListener = function (type, listener, options) {\r\n this.eachElem(function (node) {\r\n node.removeEventListener(type, listener, options);\r\n });\r\n return this;\r\n };\r\n /**\r\n * fires an event\r\n */\r\n DomQuery.prototype.fireEvent = function (eventName) {\r\n this.eachElem(function (node) {\r\n var doc;\r\n if (node.ownerDocument) {\r\n doc = node.ownerDocument;\r\n }\r\n else if (node.nodeType == 9) {\r\n // the node may be the document itself, nodeType 9 = DOCUMENT_NODE\r\n doc = node;\r\n }\r\n else {\r\n throw new Error(\"Invalid node passed to fireEvent: \" + node.id);\r\n }\r\n if (node.dispatchEvent) {\r\n // Gecko-style approach (now the standard) takes more work\r\n var eventClass = \"\";\r\n // Different events have different event classes.\r\n // If this switch statement can't map an eventName to an eventClass,\r\n // the event firing is going to fail.\r\n switch (eventName) {\r\n case \"click\": // Dispatching of 'click' appears to not work correctly in Safari. Use 'mousedown' or 'mouseup' instead.\r\n case \"mousedown\":\r\n case \"mouseup\":\r\n eventClass = \"MouseEvents\";\r\n break;\r\n case \"focus\":\r\n case \"change\":\r\n case \"blur\":\r\n case \"select\":\r\n eventClass = \"HTMLEvents\";\r\n break;\r\n default:\r\n throw \"fireEvent: Couldn't find an event class for event '\" + eventName + \"'.\";\r\n break;\r\n }\r\n var event_1 = doc.createEvent(eventClass);\r\n event_1.initEvent(eventName, true, true); // All events created as bubbling and cancelable.\r\n event_1.synthetic = true; // allow detection of synthetic events\r\n // The second parameter says go ahead with the default action\r\n node.dispatchEvent(event_1);\r\n }\r\n else if (node.fireEvent) {\r\n // IE-old school style, you can drop this if you don't need to support IE8 and lower\r\n var event = doc.createEventObject();\r\n event.synthetic = true; // allow detection of synthetic events\r\n node.fireEvent(\"on\" + eventName, event);\r\n }\r\n });\r\n };\r\n DomQuery.prototype.textContent = function (joinstr) {\r\n if (joinstr === void 0) { joinstr = \"\"; }\r\n return this.stream\r\n .map(function (value) {\r\n var item = value.getAsElem(0).orElseLazy(function () {\r\n return {\r\n textContent: \"\"\r\n };\r\n }).value;\r\n return item.textContent || \"\";\r\n })\r\n .reduce(function (text1, text2) { return text1 + joinstr + text2; }, \"\").value;\r\n };\r\n DomQuery.prototype.innerText = function (joinstr) {\r\n if (joinstr === void 0) { joinstr = \"\"; }\r\n return this.stream\r\n .map(function (value) {\r\n var item = value.getAsElem(0).orElseLazy(function () {\r\n return {\r\n innerText: \"\"\r\n };\r\n }).value;\r\n return item.innerText || \"\";\r\n })\r\n .reduce(function (text1, text2) { return [text1, text2].join(joinstr); }, \"\").value;\r\n };\r\n /**\r\n * encodes all input elements properly into respective\r\n * config entries, this can be used\r\n * for legacy systems, for newer usecases, use the\r\n * HTML5 Form class which all newer browsers provide\r\n *\r\n * @param toMerge optional config which can be merged in\r\n * @return a copy pf\r\n */\r\n DomQuery.prototype.encodeFormElement = function (toMerge) {\r\n if (toMerge === void 0) { toMerge = new Monad_1.Config({}); }\r\n //browser behavior no element name no encoding (normal submit fails in that case)\r\n //https://issues.apache.org/jira/browse/MYFACES-2847\r\n if (this.name.isAbsent()) {\r\n return;\r\n }\r\n //lets keep it sideffects free\r\n var target = toMerge.shallowCopy;\r\n this.each(function (element) {\r\n if (element.name.isAbsent()) { //no name, no encoding\r\n return;\r\n }\r\n var name = element.name.value;\r\n var tagName = element.tagName.orElse(\"__none__\").value.toLowerCase();\r\n var elemType = element.type.orElse(\"__none__\").value.toLowerCase();\r\n elemType = elemType.toLowerCase();\r\n // routine for all elements\r\n // rules:\r\n // - process only inputs, textareas and selects\r\n // - elements muest have attribute \"name\"\r\n // - elements must not be disabled\r\n if (((tagName == \"input\" || tagName == \"textarea\" || tagName == \"select\") &&\r\n (name != null && name != \"\")) && !element.disabled) {\r\n // routine for select elements\r\n // rules:\r\n // - if select-one and value-Attribute exist => \"name=value\"\r\n // (also if value empty => \"name=\")\r\n // - if select-one and value-Attribute don't exist =>\r\n // \"name=DisplayValue\"\r\n // - if select multi and multple selected => \"name=value1&name=value2\"\r\n // - if select and selectedIndex=-1 don't submit\r\n if (tagName == \"select\") {\r\n // selectedIndex must be >= 0 sein to be submittet\r\n var selectElem = element.getAsElem(0).value;\r\n if (selectElem.selectedIndex >= 0) {\r\n var uLen = selectElem.options.length;\r\n for (var u = 0; u < uLen; u++) {\r\n // find all selected options\r\n //let subBuf = [];\r\n if (selectElem.options[u].selected) {\r\n var elementOption = selectElem.options[u];\r\n target.assign(name).value = (elementOption.getAttribute(\"value\") != null) ?\r\n elementOption.value : elementOption.text;\r\n }\r\n }\r\n }\r\n }\r\n // routine for remaining elements\r\n // rules:\r\n // - don't submit no selects (processed above), buttons, reset buttons, submit buttons,\r\n // - submit checkboxes and radio inputs only if checked\r\n if ((tagName != \"select\" && elemType != \"button\"\r\n && elemType != \"reset\" && elemType != \"submit\" && elemType != \"image\")\r\n && ((elemType != \"checkbox\" && elemType != \"radio\") || element.checked)) {\r\n var files = element.value.files;\r\n if (files && files.length) {\r\n //xhr level2\r\n target.assign(name).value = files[0];\r\n }\r\n else {\r\n target.assign(name).value = element.inputValue.value;\r\n }\r\n }\r\n }\r\n });\r\n return target;\r\n };\r\n Object.defineProperty(DomQuery.prototype, \"cDATAAsString\", {\r\n get: function () {\r\n var cDataBlock = [];\r\n // response may contain several blocks\r\n return this.stream\r\n .flatMap(function (item) { return item.childNodes.stream; }).reduce(function (reduced, item) {\r\n var _a, _b, _c, _d;\r\n reduced.push((_d = (_c = (_b = (_a = item) === null || _a === void 0 ? void 0 : _a.value) === null || _b === void 0 ? void 0 : _b.value) === null || _c === void 0 ? void 0 : _c.data, (_d !== null && _d !== void 0 ? _d : \"\")));\r\n return reduced;\r\n }, []).value.join(\"\");\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n DomQuery.prototype.subNodes = function (from, to) {\r\n if (Monad_1.Optional.fromNullable(to).isAbsent()) {\r\n to = this.length;\r\n }\r\n return new (DomQuery.bind.apply(DomQuery, __spreadArrays([void 0], this.rootNode.slice(from, Math.min(to, this.length)))))();\r\n };\r\n DomQuery.prototype.limits = function (end) {\r\n this._limits = end;\r\n return this;\r\n };\r\n //-- internally exposed methods needed for the interconnectivity\r\n DomQuery.prototype.hasNext = function () {\r\n var isLimitsReached = this._limits != -1 && this.pos >= this._limits - 1;\r\n var isEndOfArray = this.pos >= this.values.length - 1;\r\n return !(isLimitsReached ||\r\n isEndOfArray);\r\n };\r\n DomQuery.prototype.next = function () {\r\n if (!this.hasNext()) {\r\n return null;\r\n }\r\n this.pos++;\r\n return new DomQuery(this.values[this.pos]);\r\n };\r\n DomQuery.prototype.reset = function () {\r\n this.pos = -1;\r\n };\r\n DomQuery.absent = new DomQuery();\r\n return DomQuery;\r\n}());\r\nexports.DomQuery = DomQuery;\r\n/**\r\n * Various collectors\r\n * which can be used in conjunction with Streams\r\n */\r\n/**\r\n * A collector which bundles a full dom query stream into a single dom query element\r\n *\r\n * This connects basically our stream back into DomQuery\r\n */\r\nvar DomQueryCollector = /** @class */ (function () {\r\n function DomQueryCollector() {\r\n this.data = [];\r\n }\r\n DomQueryCollector.prototype.collect = function (element) {\r\n this.data.push(element);\r\n };\r\n Object.defineProperty(DomQueryCollector.prototype, \"finalValue\", {\r\n get: function () {\r\n return new (DomQuery.bind.apply(DomQuery, __spreadArrays([void 0], this.data)))();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return DomQueryCollector;\r\n}());\r\nexports.DomQueryCollector = DomQueryCollector;\r\n/**\r\n * abbreviation for DomQuery\r\n */\r\nexports.DQ = DomQuery;\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbWFpbi90eXBlc2NyaXB0L2V4dC9tb25hZGlzaC9Eb21RdWVyeS50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tYWluL3R5cGVzY3JpcHQvZXh0L21vbmFkaXNoL0RvbVF1ZXJ5LnRzP2JmMDkiXSwic291cmNlc0NvbnRlbnQiOlsiLyogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZSBvciBtb3JlXHJcbiAqIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUgZGlzdHJpYnV0ZWQgd2l0aFxyXG4gKiB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuXHJcbiAqIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wXHJcbiAqICh0aGUgXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGhcclxuICogdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcclxuICpcclxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuICpcclxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxyXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXHJcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxyXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXHJcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7Q29uZmlnLCBPcHRpb25hbCwgVmFsdWVFbWJlZGRlcn0gZnJvbSBcIi4vTW9uYWRcIjtcclxuaW1wb3J0IHtYTUxRdWVyeX0gZnJvbSBcIi4vWG1sUXVlcnlcIjtcclxuaW1wb3J0IHtJU3RyZWFtLCBMYXp5U3RyZWFtLCBTdHJlYW19IGZyb20gXCIuL1N0cmVhbVwiO1xyXG5pbXBvcnQge0lDb2xsZWN0b3IsIElTdHJlYW1EYXRhU291cmNlfSBmcm9tIFwiLi9Tb3VyY2VzQ29sbGVjdG9yc1wiO1xyXG5pbXBvcnQge0xhbmd9IGZyb20gXCIuL0xhbmdcIjtcclxuaW1wb3J0IHRyaW0gPSBMYW5nLnRyaW07XHJcbmltcG9ydCBvYmpUb0FycmF5ID0gTGFuZy5vYmpUb0FycmF5O1xyXG5pbXBvcnQgaXNTdHJpbmcgPSBMYW5nLmlzU3RyaW5nO1xyXG5pbXBvcnQgZXF1YWxzSWdub3JlQ2FzZSA9IExhbmcuZXF1YWxzSWdub3JlQ2FzZTtcclxuXHJcbi8vIEB0cy1pZ25vcmUgc3VwcmVzc2lvbiBuZWVkZWQgaGVyZSBkdWUgdG8gZnJvbW51bGxhYmxlXHJcbmV4cG9ydCBjbGFzcyBFbGVtZW50QXR0cmlidXRlIGV4dGVuZHMgVmFsdWVFbWJlZGRlcjxzdHJpbmc+IHtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnQ6IERvbVF1ZXJ5LCBwcml2YXRlIG5hbWU6IHN0cmluZywgcHJpdmF0ZSBkZWZhdWx0VmFsOiBzdHJpbmcgPSBudWxsKSB7XHJcbiAgICAgICAgc3VwZXIoZWxlbWVudCwgbmFtZSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHZhbHVlKCk6IHN0cmluZyB7XHJcbiAgICAgICAgbGV0IHZhbDogRWxlbWVudFtdID0gdGhpcy5lbGVtZW50LmdldCgwKS5vckVsc2UoLi4uW10pLnZhbHVlcztcclxuICAgICAgICBpZiAoIXZhbC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFZhbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHZhbFswXS5nZXRBdHRyaWJ1dGUodGhpcy5uYW1lKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXQgdmFsdWUodmFsdWU6IHN0cmluZykge1xyXG4gICAgICAgIGxldCB2YWw6IEVsZW1lbnRbXSA9IHRoaXMuZWxlbWVudC5nZXQoMCkub3JFbHNlKC4uLltdKS52YWx1ZXM7XHJcbiAgICAgICAgZm9yIChsZXQgY250ID0gMDsgY250IDwgdmFsLmxlbmd0aDsgY250KyspIHtcclxuICAgICAgICAgICAgdmFsW2NudF0uc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YWxbMF0uc2V0QXR0cmlidXRlKHRoaXMubmFtZSwgdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBnZXRDbGFzcygpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiBFbGVtZW50QXR0cmlidXRlO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBmcm9tTnVsbGFibGUodmFsdWU/OiBhbnksIHZhbHVlS2V5OiBzdHJpbmcgPSBcInZhbHVlXCIpOiBFbGVtZW50QXR0cmlidXRlIHtcclxuICAgICAgICByZXR1cm4gbmV3IEVsZW1lbnRBdHRyaWJ1dGUodmFsdWUsIHZhbHVlS2V5KTtcclxuICAgIH1cclxuXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBzbWFsbCBoZWxwZXIgZm9yIHRoZSBzcGVjaWFsaXplZCBqc2YgY2FzZVxyXG4gKiBAcGFyYW0gc3JjXHJcbiAqIEBjb25zdHJ1Y3RvclxyXG4gKi9cclxuY29uc3QgREVGQVVMVF9KU0ZfV0hJVEVMSVNUID0gKHNyYzogc3RyaW5nKSA9PiB7XHJcbiAgICByZXR1cm4gKHNyYy5pbmRleE9mKFwibG49c2NyaXB0c1wiKSA9PSAtMSAmJlxyXG4gICAgICAgIHNyYy5pbmRleE9mKFwibG49amF2YXguZmFjZXNcIikgPT0gLTEpIHx8XHJcbiAgICAgICAgKHNyYy5pbmRleE9mKFwiL2pzZi5qc1wiKSA9PSAtMSAmJlxyXG4gICAgICAgICAgICBzcmMuaW5kZXhPZihcIi9qc2YtdW5jb21wcmVzc2VkLmpzXCIpID09IC0xKTtcclxufTtcclxuXHJcbmludGVyZmFjZSBJRG9tUXVlcnkge1xyXG4gICAgLyoqXHJcbiAgICAgKiByZWFkcyB0aGUgZmlyc3QgZWxlbWVudCBpZiBpdCBleGlzdHMgYW5kIHJldHVybnMgYW4gb3B0aW9uYWxcclxuICAgICAqL1xyXG4gICAgcmVhZG9ubHkgdmFsdWU6IE9wdGlvbmFsPEVsZW1lbnQ+O1xyXG4gICAgLyoqXHJcbiAgICAgKiBBbGwgZWxlbWVudHMgYXMgYXJyYXlcclxuICAgICAqL1xyXG4gICAgcmVhZG9ubHkgdmFsdWVzOiBFbGVtZW50W107XHJcbiAgICAvKipcclxuICAgICAqIHJldHVybnMgdGhlIGlkIGFzIHNldHRhYmxlIHZhbHVlIChTZWUgYWxzbyBWYWx1ZUVtYmVkZGVyKVxyXG4gICAgICovXHJcbiAgICByZWFkb25seSBpZDogVmFsdWVFbWJlZGRlcjxzdHJpbmc+O1xyXG4gICAgLyoqXHJcbiAgICAgKiByZXR1cm5zIHRoZSBsZW5ndGggb2YgZW1iZWRkZWQgbm9kZXMgKHRvcCBsZXZlbClcclxuICAgICAqL1xyXG4gICAgcmVhZG9ubHkgbGVuZ3RoOiBudW1iZXI7XHJcbiAgICAvKipcclxuICAgICAqIHRoZSB0YWcgbmFtZSBvZiB0aGUgZmlyc3QgZWxlbWVudFxyXG4gICAgICovXHJcbiAgICByZWFkb25seSB0YWdOYW1lOiBPcHRpb25hbDxzdHJpbmc+O1xyXG4gICAgLyoqXHJcbiAgICAgKiB0aGUgbm9kZSBuYW1lIG9mIHRoZSBmaXJzdCBlbGVtZW50XHJcbiAgICAgKi9cclxuICAgIHJlYWRvbmx5IG5vZGVOYW1lOiBPcHRpb25hbDxzdHJpbmc+O1xyXG4gICAgLyoqXHJcbiAgICAgKiB0aGUgdHlwZSBvZiB0aGUgZmlyc3QgZWxlbWVudFxyXG4gICAgICovXHJcbiAgICByZWFkb25seSB0eXBlOiBPcHRpb25hbDxzdHJpbmc+O1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgbmFtZSBhcyBjaGFuZ2VhYmxlIHZhbHVlXHJcbiAgICAgKi9cclxuICAgIHJlYWRvbmx5IG5hbWU6IFZhbHVlRW1iZWRkZXI8c3RyaW5nPjtcclxuICAgIC8qKlxyXG4gICAgICogVGhlIHRoZSB2YWx1ZSBpbiBjYXNlIG9mIGlucHV0cyBhcyBjaGFuZ2VhYmxlIHZhbHVlXHJcbiAgICAgKi9cclxuICAgIHJlYWRvbmx5IGlucHV0VmFsdWU6IFZhbHVlRW1iZWRkZXI8c3RyaW5nIHwgYm9vbGVhbj47XHJcbiAgICAvKipcclxuICAgICAqIHRoZSB1bmRlcmx5aW5nIGZvcm0gZWxlbWVudHMgYXMgZG9tcXVlcnkgb2JqZWN0XHJcbiAgICAgKi9cclxuICAgIHJlYWRvbmx5IGVsZW1lbnRzOiBEb21RdWVyeTtcclxuICAgIC8qKlxyXG4gICAgICogc2V0dGFibGUgZmxhZyBmb3IgZGlzYWJsZWRcclxuICAgICAqL1xyXG4gICAgZGlzYWJsZWQ6IGJvb2xlYW47XHJcbiAgICAvKipcclxuICAgICAqIFRoZSBjaGlsZCBub2RlcyBvZiB0aGlzIG5vZGUgY29sbGVjdGlvbiBhcyByZWFkb25seSBhdHRyaWJ1dGVcclxuICAgICAqL1xyXG4gICAgcmVhZG9ubHkgY2hpbGROb2RlczogRG9tUXVlcnk7XHJcbiAgICAvKipcclxuICAgICAqIGFuIGVhcmx5IHN0cmVhbSByZXByZXNlbnRhdGlvbiBmb3IgdGhpcyBEb21RdWVyeVxyXG4gICAgICovXHJcbiAgICByZWFkb25seSBzdHJlYW06IFN0cmVhbTxEb21RdWVyeT47XHJcbiAgICAvKipcclxuICAgICAqIGxhenkgc3RyZWFtIHJlcHJlc2VudGF0aW9uIGZvciB0aGlzIERvbVF1ZXJ5XHJcbiAgICAgKi9cclxuICAgIHJlYWRvbmx5IGxhenlTdHJlYW06IExhenlTdHJlYW08RG9tUXVlcnk+O1xyXG4gICAgLyoqXHJcbiAgICAgKiB0cmFuc2Zvcm0gdGhpcyBub2RlIGNvbGxlY3Rpb24gdG8gYW4gYXJyYXlcclxuICAgICAqL1xyXG4gICAgcmVhZG9ubHkgYXNBcnJheTogQXJyYXk8RG9tUXVlcnk+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogcmV0dXJucyB0cnVlIGlmIHRoZSBlbGVtZW50cyBoYXZlIHRoZSB0YWcgKnRhZ05hbWUqIGFzIHRhZyBlbWJlZGRlZCAoaGlnaGVzdCBsZXZlbClcclxuICAgICAqIEBwYXJhbSB0YWdOYW1lXHJcbiAgICAgKi9cclxuICAgIGlzVGFnKHRhZ05hbWU6IHN0cmluZyk6IGJvb2xlYW47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiByZXR1cm5zIHRoZSBudGggZWxlbWVudCBhcyBkb21xdWVyeVxyXG4gICAgICogZnJvbSB0aGUgaW50ZXJuYWwgZWxlbWVudHNcclxuICAgICAqIG5vdGUgaWYgeW91IHRyeSB0byByZWFjaCBhIG5vbiBleGlzdGluZyBlbGVtZW50IHBvc2l0aW9uXHJcbiAgICAgKiB5b3Ugd2lsbCBnZXQgYmFjayBhbiBhYnNlbnQgZW50cnlcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gaW5kZXggdGhlIG50aCBpbmRleFxyXG4gICAgICovXHJcbiAgICBnZXQoaW5kZXg6IG51bWJlcik6IERvbVF1ZXJ5O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogcmV0dXJucyB0aGUgbnRoIGVsZW1lbnQgYXMgb3B0aW9uYWwgb2YgYW4gRWxlbWVudCBvYmplY3RcclxuICAgICAqIEBwYXJhbSBpbmRleCB0aGUgbnVtYmVyIGZyb20gdGhlIGluZGV4XHJcbiAgICAgKiBAcGFyYW0gZGVmYXVsdHMgdGhlIGRlZmF1bHQgdmFsdWUgaWYgdGhlIGluZGV4IGlzIG92ZXJydW4gZGVmYXVsdCBPcHRpb25hbC5hYnNlbnRcclxuICAgICAqL1xyXG4gICAgZ2V0QXNFbGVtKGluZGV4OiBudW1iZXIsIGRlZmF1bHRzOiBPcHRpb25hbDxhbnk+KTogT3B0aW9uYWw8RWxlbWVudD47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiByZXR1cm5zIHRoZSB2YWx1ZSBhcnJheTwgb2YgYWxsIGVsZW1lbnRzXHJcbiAgICAgKi9cclxuICAgIGFsbEVsZW1zKCk6IEFycmF5PEVsZW1lbnQ+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogYWJzZW50IG5vIHZhbHVlcyByZWFjaGVkP1xyXG4gICAgICovXHJcbiAgICBpc0Fic2VudCgpOiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogc2hvdWxkIG1ha2UgdGhlIGNvZGUgY2xlYXJlclxyXG4gICAgICogbm90ZSBpZiB5b3UgcGFzcyBhIGZ1bmN0aW9uXHJcbiAgICAgKiB0aGlzIHJlZmVycyB0byB0aGUgYWN0aXZlIGRvcG1xdWVyeSBvYmplY3RcclxuICAgICAqL1xyXG4gICAgaXNQcmVzZW50KHByZXNlbnRSdW5uYWJsZSA/OiAoZWxlbSA/OiBEb21RdWVyeSkgPT4gdm9pZCk6IGJvb2xlYW47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBzaG91bGQgbWFrZSB0aGUgY29kZSBjbGVhcmVyXHJcbiAgICAgKiBub3RlIGlmIHlvdSBwYXNzIGEgZnVuY3Rpb25cclxuICAgICAqIHRoaXMgcmVmZXJzIHRvIHRoZSBhY3RpdmUgZG9wbXF1ZXJ5IG9iamVjdFxyXG4gICAgICpcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gcHJlc2VudFJ1bm5hYmxlXHJcbiAgICAgKi9cclxuICAgIGlmUHJlc2VudExhenkocHJlc2VudFJ1bm5hYmxlOiAoZWxlbSA/OiBEb21RdWVyeSkgPT4gdm9pZCk6IERvbVF1ZXJ5O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogcmVtb3ZlIGFsbCBhZmZlY3RlZCBub2RlcyBmcm9tIHRoaXMgcXVlcnkgb2JqZWN0IGZyb20gdGhlIGRvbSB0cmVlXHJcbiAgICAgKi9cclxuICAgIGRlbGV0ZSgpOiB2b2lkO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogcXVlcnkgc2VsZWN0b3IgYWxsIG9uIHRoZSBleGlzdGluZyBkb20gcXVlcnkgb2JqZWN0XHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHNlbGVjdG9yIHRoZSBzdGFuZGFyZCBzZWxlY3RvclxyXG4gICAgICogQHJldHVybiBhIERvbVF1ZXJ5IHdpdGggdGhlIHJlc3VsdHNcclxuICAgICAqL1xyXG4gICAgcXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik6IERvbVF1ZXJ5O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogY29yZSBieUlkIG1ldGhvZFxyXG4gICAgICogQHBhcmFtIGlkIHRoZSBpZCB0byBzZWFyY2ggZm9yXHJcbiAgICAgKiBAcGFyYW0gaW5jbHVkZVJvb3QgYWxzbyBtYXRjaCB0aGUgcm9vdCBlbGVtZW50P1xyXG4gICAgICovXHJcbiAgICBieUlkKGlkOiBzdHJpbmcsIGluY2x1ZGVSb290PzogYm9vbGVhbik6IERvbVF1ZXJ5O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogc2FtZSBhcyBieUlkIGp1c3QgZm9yIHRoZSB0YWcgbmFtZVxyXG4gICAgICogQHBhcmFtIHRhZ05hbWVcclxuICAgICAqIEBwYXJhbSBpbmNsdWRlUm9vdFxyXG4gICAgICovXHJcbiAgICBieVRhZ05hbWUodGFnTmFtZTogc3RyaW5nLCBpbmNsdWRlUm9vdCA/OiBib29sZWFuKTogRG9tUXVlcnk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBhdHRyIGFjY2Vzc29yLCB1c2FnZSBteVF1ZXJ5LmF0dHIoXCJjbGFzc1wiKS52YWx1ZSA9IFwiYmxhXCJcclxuICAgICAqIG9yIGxldCB2YWx1ZSBteVF1ZXJ5LmF0dHIoXCJjbGFzc1wiKS52YWx1ZVxyXG4gICAgICogQHBhcmFtIGF0dHIgdGhlIGF0dHJpYnV0ZSB0byBzZXRcclxuICAgICAqIEBwYXJhbSBkZWZhdWx0VmFsdWUgdGhlIGRlZmF1bHQgdmFsdWUgaW4gY2FzZSBub3RoaW5nIGlzIHByZXNlbnRlZCAoZGVmYXVsdHMgdG8gbnVsbClcclxuICAgICAqL1xyXG4gICAgYXR0cihhdHRyOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZTogc3RyaW5nKTogRWxlbWVudEF0dHJpYnV0ZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGhhc2NsYXNzLCBjaGVja3MgZm9yIGFuIGV4aXN0aW5nIGNsYXNzIGluIHRoZSBjbGFzcyBhdHRyaWJ1dGVzXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGNsYXp6IHRoZSBjbGFzcyB0byBzZWFyY2ggZm9yXHJcbiAgICAgKi9cclxuICAgIGhhc0NsYXNzKGNsYXp6OiBzdHJpbmcpOiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogYXBwZW5kcyBhIGNsYXNzIHN0cmluZyBpZiBub3QgYWxyZWFkeSBpbiB0aGUgZWxlbWVudChzKVxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBjbGF6eiB0aGUgc3R5bGUgY2xhc3MgdG8gYXBwZW5kXHJcbiAgICAgKi9cclxuICAgIGFkZENsYXNzKGNsYXp6OiBzdHJpbmcpOiBEb21RdWVyeTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIHJlbW92ZSB0aGUgc3R5bGUgY2xhc3MgaWYgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGNsYXp6XHJcbiAgICAgKi9cclxuICAgIHJlbW92ZUNsYXNzKGNsYXp6OiBzdHJpbmcpOiBEb21RdWVyeTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGNoZWNrcyB3aGV0aGVyIHdlIGhhdmUgYSBtdWx0aXBhcnQgZWxlbWVudCBpbiBvdXIgY2hpbGRyZW5cclxuICAgICAqL1xyXG4gICAgaXNNdWx0aXBhcnRDYW5kaWRhdGUoKTogYm9vbGVhbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGlubmVySHRtbCBlcXVpdmFsa2VudFxyXG4gICAgICogZXF1aXZhbGVudCB0byBqcXVlcmllcyBodG1sXHJcbiAgICAgKiBhcyBzZXR0ZXIgdGhlIGh0bWwgaXMgc2V0IGFuZCB0aGVcclxuICAgICAqIERvbVF1ZXJ5IGlzIGdpdmVuIGJhY2tcclxuICAgICAqIGFzIGdldHRlciB0aGUgaHRtbCBzdHJpbmcgaXMgcmV0dXJuZWRcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gaW52YWxcclxuICAgICAqL1xyXG4gICAgaHRtbChpbnZhbD86IHN0cmluZyk6IERvbVF1ZXJ5IHwgT3B0aW9uYWw8c3RyaW5nPjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGVhc3kgbm9kZSB0cmF2ZXJzYWwsIHlvdSBjYW4gcGFzc1xyXG4gICAgICogYSBzZXQgb2Ygbm9kZSBzZWxlY3RvcnMgd2hpY2ggYXJlIGpvaW5lZCBhcyBkaXJlY3QgY2hpbGRzXHJcbiAgICAgKlxyXG4gICAgICogbm90IHRoZSByb290bm9kZXMgYXJlIG5vdCBpbiB0aGUgZ2V0SWYsIHRob3NlIGFyZSBhbHdheXMgdGhlIGNoaWxkIG5vZGVzXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIG5vZGVTZWxlY3RvclxyXG4gICAgICovXHJcbiAgICBnZXRJZiguLi5ub2RlU2VsZWN0b3I6IEFycmF5PHN0cmluZz4pOiBEb21RdWVyeTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGl0ZXJhdGUgb3ZlciBlYWNoIGVsZW1lbnQgYW5kIHBlcmZvcm0gc29tZXRoaW5nIG9uIHRoZSBlbGVtZW50XHJcbiAgICAgKiAoRG9tIGVsZW1lbnQgaXMgcGFzc2VkIGluc3RlYWQgb2YgRG9tUXVlcnkpXHJcbiAgICAgKiBAcGFyYW0gZnVuY1xyXG4gICAgICovXHJcbiAgICBlYWNoRWxlbShmdW5jOiAoaXRlbTogRWxlbWVudCwgY250PzogbnVtYmVyKSA9PiBhbnkpOiBEb21RdWVyeTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIHBlcmZvcm0gYW4gb3BlcmF0aW9uIG9uIHRoZSBmaXJzdCBlbGVtZW50XHJcbiAgICAgKiByZXR1cm5zIGEgRG9tUXVlcnkgb24gdGhlIGZpcnN0IGVsZW1lbnQgb25seVxyXG4gICAgICogQHBhcmFtIGZ1bmNcclxuICAgICAqL1xyXG4gICAgZmlyc3RFbGVtKGZ1bmM6IChpdGVtOiBFbGVtZW50LCBjbnQ/OiBudW1iZXIpID0+IGFueSk6IERvbVF1ZXJ5O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogc2FtZSBhcyBlYWNoRWxlbSwgYnV0IGEgRG9tUXVlcnkgb2JqZWN0IGlzIHBhc3NlZCBkb3duXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGZ1bmNcclxuICAgICAqL1xyXG4gICAgZWFjaChmdW5jOiAoaXRlbTogRG9tUXVlcnksIGNudD86IG51bWJlcikgPT4gYW55KTogRG9tUXVlcnk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiByZXR1cm5zIGEgbmV3IGRvbSBxdWVyeSBjb250YWluaW5nIG9ubHkgdGhlIGZpcnN0IGVsZW1lbnQgbWF4XHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGZ1bmMgYSBhbiBvcHRpb25hbCBjYWxsYmFjayBmdW5jdGlvbiB0byBwZXJmb3JtIGFuIG9wZXJhdGlvbiBvbiB0aGUgZmlyc3QgZWxlbWVudFxyXG4gICAgICovXHJcbiAgICBmaXJzdChmdW5jOiAoaXRlbTogRG9tUXVlcnksIGNudD86IG51bWJlcikgPT4gYW55KTogRG9tUXVlcnk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBmaWx0ZXIgZnVuY3Rpb24gd2hpY2ggZmlsdGVycyBhIHN1YnNldFxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBmdW5jXHJcbiAgICAgKi9cclxuICAgIGZpbHRlcihmdW5jOiAoaXRlbTogRG9tUXVlcnkpID0+IGJvb2xlYW4pOiBEb21RdWVyeTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGdsb2JhbCBldmFsIGhlYWQgYXBwZW5kaXggbWV0aG9kXHJcbiAgICAgKiBubyBvdGhlciBtZXRob2RzIGFyZSBzdXBwb3J0ZWQgYW55bW9yZVxyXG4gICAgICogQHBhcmFtIGNvZGUgdGhlIGNvZGUgdG8gYmUgZXZhbGVkXHJcbiAgICAgKiBAcGFyYW0gIG5vbmNlIG9wdGlvbmFsICBub25jZSBrZXkgZm9yIGhpZ2hlciBzZWN1cml0eVxyXG4gICAgICovXHJcbiAgICBnbG9iYWxFdmFsKGNvZGU6IHN0cmluZywgbm9uY2UgPzogc3RyaW5nKTogRG9tUXVlcnk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBkZXRhY2hlcyBhIHNldCBvZiBub2RlcyBmcm9tIHRoZWlyIHBhcmVudCBlbGVtZW50c1xyXG4gICAgICogaW4gYSBicm93c2VyIGluZGVwZW5kZW5kIG1hbm5lclxyXG4gICAgICogQHBhcmFtIHtPYmplY3R9IGl0ZW1zIHRoZSBpdGVtcyB3aGljaCBuZWVkIHRvIGJlIGRldGFjaGVkXHJcbiAgICAgKiBAcmV0dXJuIHtBcnJheX0gYW4gYXJyYXkgb2Ygbm9kZXMgd2l0aCB0aGUgZGV0YWNoZWQgZG9tIG5vZGVzXHJcbiAgICAgKi9cclxuICAgIGRldGFjaCgpOiBEb21RdWVyeTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGFwcGVuZHMgdGhlIGN1cnJlbnQgc2V0IG9mIGVsZW1lbnRzXHJcbiAgICAgKiB0byB0aGUgZWxlbWVudCBvciBmaXJzdCBlbGVtZW50IHBhc3NlZCB2aWEgZWxlbVxyXG4gICAgICogQHBhcmFtIGVsZW1cclxuICAgICAqL1xyXG4gICAgYXBwZW5kVG8oZWxlbTogRG9tUXVlcnkpOiB2b2lkO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogbG9hZHMgYW5kIGV2YWxzIGEgc2NyaXB0IGZyb20gYSBzb3VyY2UgdXJpXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHNyYyB0aGUgc291cmNlIHRvIGJlIGxvYWRlZCBhbmQgZXZhbGVkXHJcbiAgICAgKiBAcGFyYW0gZGVmZXIgaW4gbWlsaXNlY29uZHMgZXhlY3V0aW9uIGRlZmF1bHQgKDAgPT0gbm8gZGVmZXIpXHJcbiAgICAgKiBAcGFyYW0gY2hhclNldFxyXG4gICAgICovXHJcbiAgICBsb2FkU2NyaXB0RXZhbChzcmM6IHN0cmluZywgZGVmZXI6IG51bWJlciwgY2hhclNldDogc3RyaW5nKTogdm9pZDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGluc2VydCB0b0luc2VydCBhZnRlciB0aGUgY3VycmVudCBlbGVtZW50XHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHRvSW5zZXJ0IGFuIGFycmF5IG9mIERvbVF1ZXJ5IG9iamVjdHNcclxuICAgICAqL1xyXG4gICAgaW5zZXJ0QWZ0ZXIoLi4udG9JbnNlcnQ6IEFycmF5PERvbVF1ZXJ5Pik6IERvbVF1ZXJ5O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogaW5zZXJ0cyB0aGUgZWxlbWVudHMgYmVmb3JlIHRoZSBjdXJyZW50IGVsZW1lbnRcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gdG9JbnNlcnRcclxuICAgICAqL1xyXG4gICAgaW5zZXJ0QmVmb3JlKC4uLnRvSW5zZXJ0OiBBcnJheTxEb21RdWVyeT4pOiBEb21RdWVyeTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGluIGNhc2UgdGhlIGRvbXF1ZXJ5IGlzIHBvaW50aW5nIHRvIG5vdGhpbmcgdGhlIGVsc2UgdmFsdWUgaXMgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uXHJcbiAgICAgKiBhbHMgYWx0ZXJuYXRpdmVcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gZWxzZVZhbHVlIHRoZSBlbHNlIHZhbHVlXHJcbiAgICAgKi9cclxuICAgIG9yRWxzZSguLi5lbHNlVmFsdWU6IGFueSk6IERvbVF1ZXJ5O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogdGhlIHNhbWUgd2l0aCBsYXp5IGV2YWx1YXRpb24gZm9yIGNhc2VzIHdoZXJlIGdldHRpbmcgdGhlIGVsc2UgdmFsdWVcclxuICAgICAqIGlzIGEgaGVhdnkgb3BlcmF0aW9uXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGZ1bmMgdGhlIGVsc2UgcHJvdmlkZXIgZnVuY3Rpb25cclxuICAgICAqL1xyXG4gICAgb3JFbHNlTGF6eShmdW5jOiAoKSA9PiBhbnkpOiBEb21RdWVyeTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGFsbCBwYXJlbnRzIHdpdGggVGFnTmFtZVxyXG4gICAgICogQHBhcmFtIHRhZ05hbWVcclxuICAgICAqL1xyXG4gICAgcGFyZW50cyh0YWdOYW1lOiBzdHJpbmcpOiBEb21RdWVyeTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGNvcHkgYWxsIGF0dHJpYnV0ZXMgb2Ygc291cmNlSXRlbSB0byB0aGlzIERvbVF1ZXJ5IGl0ZW1zXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHNvdXJjZUl0ZW0gdGhlIHNvdXJjZSBpdGVtIHRvIGNvcHkgb3ZlciAoY2FuIGJlIGFub3RoZXIgZG9tcXVlcnkgb3IgYSBwYXJzZWQgWE1MIFF1ZXJ5IGl0ZW0pXHJcbiAgICAgKi9cclxuICAgIGNvcHlBdHRycyhzb3VyY2VJdGVtOiBEb21RdWVyeSB8IFhNTFF1ZXJ5KTogRG9tUXVlcnk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBvdXRlcmh0bWwgY29udmVuaWVuY2UgbWV0aG9kXHJcbiAgICAgKiBicm93c2VycyBvbmx5IHN1cHBvcnQgaW5uZXJIVE1MIGJ1dFxyXG4gICAgICogZm9yIGluc3RhbmNlIGZvciB5b3VyIGpzZi5qcyB3ZSBoYXZlIGEgZnVsbFxyXG4gICAgICogcmVwbGFjZSBwYXR0ZXJuIHdoaWNoIG5lZWRzIG91dGVySFRNTCBwcm9jZXNzaW5nXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIG1hcmt1cFxyXG4gICAgICogQHBhcmFtIHJ1bkVtYmVkZGVkU2NyaXB0c1xyXG4gICAgICogQHBhcmFtIHJ1bkVtYmVkZGVkQ3NzXHJcbiAgICAgKi9cclxuICAgIG91dGVySFRNTChtYXJrdXA6IHN0cmluZywgcnVuRW1iZWRkZWRTY3JpcHRzID86IGJvb2xlYW4sIHJ1bkVtYmVkZGVkQ3NzID86IGJvb2xlYW4pOiBEb21RdWVyeTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFJ1biB0aHJvdWdoIHRoZSBnaXZlbiBub2RlcyBpbiB0aGUgRG9tUXVlcnkgZXhlY3V0ZSB0aGUgaW5saW5lIHNjcmlwdHNcclxuICAgICAqIEBwYXJhbSB3aGlsdGVMaXN0ZWQ6IG9wdGlvbmFsIHdoaXRlbGlzdCBmdW5jdGlvbiB3aGljaCBjYW4gZmlsdGVyIG91dCBzY3JpcHQgdGFncyB3aGljaCBhcmUgbm90IHByb2Nlc3NlZFxyXG4gICAgICogZGVmYXVsdHMgdG8gdGhlIHN0YW5kYXJkIGpzZi5qcyBleGNsdXNpb24gKHdlIHVzZSB0aGlzIGNvZGUgZm9yIG15ZmFjZXMpXHJcbiAgICAgKi9cclxuICAgIHJ1blNjcmlwdHMod2hpbHRlTGlzdGVkOiAodmFsOiBzdHJpbmcpID0+IGJvb2xlYW4pOiBEb21RdWVyeTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIHJ1bnMgdGhlIGVtYmVkZGVkIGNzc1xyXG4gICAgICovXHJcbiAgICBydW5Dc3MoKTogRG9tUXVlcnk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBmaXJlcyBhIGNsaWNrIGV2ZW50IG9uIHRoZSB1bmRlcmx5aW5nIGRvbSBlbGVtZW50c1xyXG4gICAgICovXHJcbiAgICBjbGljaygpOiBEb21RdWVyeTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGFkZHMgYW4gZXZlbnQgbGlzdGVuZXJcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gdHlwZVxyXG4gICAgICogQHBhcmFtIGxpc3RlbmVyXHJcbiAgICAgKiBAcGFyYW0gb3B0aW9uc1xyXG4gICAgICovXHJcbiAgICBhZGRFdmVudExpc3RlbmVyKHR5cGU6IHN0cmluZywgbGlzdGVuZXI6IChldnQ6IEV2ZW50KSA9PiB2b2lkLCBvcHRpb25zPzogYm9vbGVhbiB8IEV2ZW50TGlzdGVuZXJPcHRpb25zKTogRG9tUXVlcnk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiByZW1vdmVzIGFuIGV2ZW50IGxpc3RlbmVyXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHR5cGVcclxuICAgICAqIEBwYXJhbSBsaXN0ZW5lclxyXG4gICAgICogQHBhcmFtIG9wdGlvbnNcclxuICAgICAqL1xyXG4gICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlOiBzdHJpbmcsIGxpc3RlbmVyOiAoZXZ0OiBFdmVudCkgPT4gdm9pZCwgb3B0aW9ucz86IGJvb2xlYW4gfCBFdmVudExpc3RlbmVyT3B0aW9ucyk6IERvbVF1ZXJ5O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogZmlyZXMgYW4gZXZlbnRcclxuICAgICAqL1xyXG4gICAgZmlyZUV2ZW50KGV2ZW50TmFtZTogc3RyaW5nKTogdm9pZDtcclxuXHJcbiAgICAvKlxyXG4gICAgICogcHVzaGVzICBpbiBvcHRpb25hbGx5IGEgbmV3IHRleHRDb250ZW50LCBhbmQvb3IgcmV0dXJucyB0aGUgY3VycmVudCB0ZXh0IGNvbnRlbnRcclxuICAgICAqL1xyXG4gICAgdGV4dENvbnRlbnQoam9pbnN0cj86IHN0cmluZyk6IHN0cmluZztcclxuXHJcbiAgICAvKlxyXG4gICAgICogcHVzaGVzICBpbiBvcHRpb25hbGx5IGEgbmV3IGlubmVyVGV4dCwgYW5kL29yIHJldHVybnMgdGhlIGN1cnJlbnQgaW5uZXJUZXh0XHJcbiAgICAgKi9cclxuICAgIGlubmVyVGV4dChqb2luc3RyPzogc3RyaW5nKTogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogZW5jb2RlcyBhbGwgaW5wdXQgZWxlbWVudHMgcHJvcGVybHkgaW50byByZXNwZWN0aXZlXHJcbiAgICAgKiBjb25maWcgZW50cmllcywgdGhpcyBjYW4gYmUgdXNlZFxyXG4gICAgICogZm9yIGxlZ2FjeSBzeXN0ZW1zLCBmb3IgbmV3ZXIgdXNlY2FzZXMsIHVzZSB0aGVcclxuICAgICAqIEhUTUw1IEZvcm0gY2xhc3Mgd2hpY2ggYWxsIG5ld2VyIGJyb3dzZXJzIHByb3ZpZGVcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gdG9NZXJnZSBvcHRpb25hbCBjb25maWcgd2hpY2ggY2FuIGJlIG1lcmdlZCBpblxyXG4gICAgICogQHJldHVybiBhIGNvcHkgcGZcclxuICAgICAqL1xyXG4gICAgZW5jb2RlRm9ybUVsZW1lbnQodG9NZXJnZSk6IENvbmZpZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIGZldGNoZXMgdGhlIHN1Ym5vZGVzIGZyb20gLi4uIHRvLi5cclxuICAgICAqIEBwYXJhbSBmcm9tXHJcbiAgICAgKiBAcGFyYW0gdG9cclxuICAgICAqL1xyXG4gICAgc3ViTm9kZXMoZnJvbTogbnVtYmVyLCB0bz86IG51bWJlcik6IERvbVF1ZXJ5O1xyXG59XHJcblxyXG4vKipcclxuICogTW9uYWRpYyBEb21Ob2RlIHJlcHJlc2VudGF0aW9uLCBhbGEganF1ZXJ5XHJcbiAqIFRoaXMgaXMgYSB0aGluIHdyYXBwZXIgb3ZlciBxdWVyeVNlbGVjdG9yQWxsXHJcbiAqIHRvIGdldCBzbGltIG1vbmFkaWMgc3VwcG9ydFxyXG4gKiB0byByZWR1Y2UgaW1wbGVtZW50YXRpb24gY29kZSBvbiB0aGUgdXNlcnMgc2lkZS5cclxuICogVGhpcyBpcyB2aXRhbCBmb3IgZnJhbWV3b3JrcyB3aGljaCB3YW50IHRvIHJlbHkgb25cclxuICogcGxhaW4gZG9tIGJ1dCBzdGlsbCBkbyBub3Qgd2FudCB0byBsb3NlXHJcbiAqIHRoZSByZWR1Y2VkIGNvZGUgZm9vdHByaW50IG9mIHF1ZXJ5aW5nIGRvbSB0cmVlcyBhbmQgdHJhdmVyc2luZ1xyXG4gKiBieSB1c2luZyBmdW5jdGlvbmFsIHBhdHRlcm5zLlxyXG4gKlxyXG4gKiBBbHNvIGEgZmV3IGNvbnZlbmllbmNlIG1ldGhvZHMgYXJlIGFkZGVkIHRvIHJlZHVjZVxyXG4gKiB0aGUgY29kZSBmb290cHJpbnQgb2Ygc3RhbmRhcmQgZG9tIHByb2Nlc3NpbmdcclxuICogb3BlcmF0aW9ucyBsaWtlIGV2YWxcclxuICpcclxuICogVE9ETyBhZGQganF1ZXJ5IGZhbGxiYWNrIHN1cHBvcnQsIHNpbmNlIGl0IGlzIHN1cHBvcnRlZFxyXG4gKiBpbiBtb3N0IG9sZGVyIHN5c3RlbXNcclxuICogTm90ZSBwYXJ0cyBvZiB0aGlzIGNvZGUgc3RpbGwgc3RlbSBmcm9tIHRoZSBEb20uanMgSSBoYXZlIHdyaXR0ZW4gMTAgeWVhcnNcclxuICogYWdvLCB0aG9zZSBwYXJ0cyBsb29rIGEgbGl0dGxlIGJpdCBhbmNpZW50IGFuZCB3aWxsIGJlIHJlcGxhY2VkIG92ZXIgdGltZS5cclxuICpcclxuICovXHJcbmV4cG9ydCBjbGFzcyBEb21RdWVyeSBpbXBsZW1lbnRzIElEb21RdWVyeSwgSVN0cmVhbURhdGFTb3VyY2U8RG9tUXVlcnk+IHtcclxuXHJcbiAgICBzdGF0aWMgYWJzZW50ID0gbmV3IERvbVF1ZXJ5KCk7XHJcblxyXG4gICAgcHJpdmF0ZSByb290Tm9kZTogQXJyYXk8RWxlbWVudD4gPSBbXTtcclxuXHJcbiAgICBwb3MgPSAtMTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvciguLi5yb290Tm9kZTogQXJyYXk8RWxlbWVudCB8IERvbVF1ZXJ5IHwgRG9jdW1lbnQgfCBBcnJheTxhbnk+IHwgc3RyaW5nPikge1xyXG5cclxuICAgICAgICBpZiAoT3B0aW9uYWwuZnJvbU51bGxhYmxlKHJvb3ROb2RlKS5pc0Fic2VudCgpIHx8ICFyb290Tm9kZS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vd2UgbmVlZCB0byBmbGF0dGVuIG91dCB0aGUgYXJyYXlzXHJcblxyXG4gICAgICAgICAgICBmb3IgKGxldCBjbnQgPSAwOyBjbnQgPCByb290Tm9kZS5sZW5ndGg7IGNudCsrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNTdHJpbmcocm9vdE5vZGVbY250XSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZm91bmRFbGVtZW50ID0gRG9tUXVlcnkucXVlcnlTZWxlY3RvckFsbCg8c3RyaW5nPnJvb3ROb2RlW2NudF0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghZm91bmRFbGVtZW50LmlzQWJzZW50KCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcm9vdE5vZGUucHVzaCguLi5mb3VuZEVsZW1lbnQudmFsdWVzKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocm9vdE5vZGVbY250XSBpbnN0YW5jZW9mIERvbVF1ZXJ5KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb290Tm9kZS5wdXNoKC4uLig8YW55PnJvb3ROb2RlW2NudF0pLnZhbHVlcyk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm9vdE5vZGUucHVzaCg8YW55PnJvb3ROb2RlW2NudF0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogcmV0dXJucyB0aGUgZmlyc3QgZWxlbWVudFxyXG4gICAgICovXHJcbiAgICBnZXQgdmFsdWUoKTogT3B0aW9uYWw8RWxlbWVudD4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdldEFzRWxlbSgwKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgdmFsdWVzKCk6IEVsZW1lbnRbXSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYWxsRWxlbXMoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIHJldHVybnMgdGhlIGlkIG9mIHRoZSBmaXJzdCBlbGVtZW50XHJcbiAgICAgKi9cclxuICAgIGdldCBpZCgpOiBWYWx1ZUVtYmVkZGVyPHN0cmluZz4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgRWxlbWVudEF0dHJpYnV0ZSh0aGlzLmdldCgwKSwgXCJpZFwiKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGxlbmd0aCBvZiB0aGUgZW50aXJlIHF1ZXJ5IHNldFxyXG4gICAgICovXHJcbiAgICBnZXQgbGVuZ3RoKCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucm9vdE5vZGUubGVuZ3RoXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBjb252ZW5pZW5jZSBtZXRob2QgZm9yIHRhZ05hbWVcclxuICAgICAqL1xyXG4gICAgZ2V0IHRhZ05hbWUoKTogT3B0aW9uYWw8c3RyaW5nPiB7XHJcbiAgICAgICAgcmV0dXJuIDxPcHRpb25hbDxzdHJpbmc+PnRoaXMuZ2V0QXNFbGVtKDApLmdldElmKFwidGFnTmFtZVwiKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGNvbnZlbmllbmNlIG1ldGhvZCBmb3Igbm9kZU5hbWVcclxuICAgICAqL1xyXG4gICAgZ2V0IG5vZGVOYW1lKCk6IE9wdGlvbmFsPHN0cmluZz4ge1xyXG4gICAgICAgIHJldHVybiA8T3B0aW9uYWw8c3RyaW5nPj50aGlzLmdldEFzRWxlbSgwKS5nZXRJZihcIm5vZGVOYW1lXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGlzVGFnKHRhZ05hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAhdGhpcy5pc0Fic2VudCgpXHJcbiAgICAgICAgICAgICYmICh0aGlzLm5vZGVOYW1lLm9yRWxzZShcIl9fbm9uZV9fX1wiKVxyXG4gICAgICAgICAgICAgICAgICAgIC52YWx1ZS50b0xvd2VyQ2FzZSgpID09IHRhZ05hbWUudG9Mb3dlckNhc2UoKVxyXG4gICAgICAgICAgICAgICAgfHwgdGhpcy50YWdOYW1lLm9yRWxzZShcIl9fbm9uZV9fX1wiKVxyXG4gICAgICAgICAgICAgICAgICAgIC52YWx1ZS50b0xvd2VyQ2FzZSgpID09IHRhZ05hbWUudG9Mb3dlckNhc2UoKVxyXG4gICAgICAgICAgICApXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBjb252ZW5pZW5jZSBwcm9wZXJ0eSBmb3IgdHlwZVxyXG4gICAgICpcclxuICAgICAqIHJldHVybnMgbnVsbCBpbiBjYXNlIG9mIG5vIHR5cGUgZXhpc3Rpbmcgb3RoZXJ3aXNlXHJcbiAgICAgKiB0aGUgdHlwZSBvZiB0aGUgZmlyc3QgZWxlbWVudFxyXG4gICAgICovXHJcbiAgICBnZXQgdHlwZSgpOiBPcHRpb25hbDxzdHJpbmc+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5nZXRBc0VsZW0oMCkuZ2V0SWYoXCJ0eXBlXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogY29udmVuaWVuY2UgcHJvcGVydHkgZm9yIG5hbWVcclxuICAgICAqXHJcbiAgICAgKiByZXR1cm5zIG51bGwgaW4gY2FzZSBvZiBubyB0eXBlIGV4aXN0aW5nIG90aGVyd2lzZVxyXG4gICAgICogdGhlIG5hbWUgb2YgdGhlIGZpcnN0IGVsZW1lbnRcclxuICAgICAqL1xyXG4gICAgZ2V0IG5hbWUoKTogVmFsdWVFbWJlZGRlcjxzdHJpbmc+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFZhbHVlRW1iZWRkZXIodGhpcy5nZXRBc0VsZW0oMCkudmFsdWUsIFwibmFtZVwiKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGNvbnZlbmllbmNlIHByb3BlcnR5IGZvciB2YWx1ZVxyXG4gICAgICpcclxuICAgICAqIHJldHVybnMgbnVsbCBpbiBjYXNlIG9mIG5vIHR5cGUgZXhpc3Rpbmcgb3RoZXJ3aXNlXHJcbiAgICAgKiB0aGUgdmFsdWUgb2YgdGhlIGZpcnN0IGVsZW1lbnRcclxuICAgICAqL1xyXG4gICAgZ2V0IGlucHV0VmFsdWUoKTogVmFsdWVFbWJlZGRlcjxzdHJpbmcgfCBib29sZWFuPiB7XHJcbiAgICAgICAgaWYgKHRoaXMuZ2V0QXNFbGVtKDApLmdldElmKFwidmFsdWVcIikuaXNQcmVzZW50KCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBWYWx1ZUVtYmVkZGVyPHN0cmluZz4odGhpcy5nZXRBc0VsZW0oMCkudmFsdWUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiA8YW55PlZhbHVlRW1iZWRkZXIuYWJzZW50O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXQgY2hlY2tlZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gU3RyZWFtLm9mKC4uLnRoaXMudmFsdWVzKS5hbGxNYXRjaChlbCA9PiAhISg8YW55PmVsKS5jaGVja2VkKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXQgY2hlY2tlZChuZXdDaGVja2VkOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5lYWNoRWxlbShlbCA9PiAoPGFueT5lbCkuY2hlY2tlZCA9IG5ld0NoZWNrZWQpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBlbGVtZW50cygpOiBEb21RdWVyeSB7XHJcbiAgICAgICAgbGV0IGVsZW1lbnRzOiBEb21RdWVyeSA9IHRoaXMuc3RyZWFtLmZsYXRNYXAoKGl0ZW06IERvbVF1ZXJ5KSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBmb3JtRWxlbWVudDogSFRNTEZvcm1FbGVtZW50ID0gPEhUTUxGb3JtRWxlbWVudD5pdGVtLnZhbHVlLnZhbHVlO1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IFN0cmVhbShmb3JtRWxlbWVudC5lbGVtZW50cyA/IG9ialRvQXJyYXkoZm9ybUVsZW1lbnQuZWxlbWVudHMpIDogW10pO1xyXG4gICAgICAgIH0pLmZpbHRlcihpdGVtID0+ICEhaXRlbSkuY29sbGVjdChuZXcgRG9tUXVlcnlDb2xsZWN0b3IoKSk7XHJcblxyXG4gICAgICAgIHJldHVybiBlbGVtZW50c1xyXG4gICAgICAgICAgICAub3JFbHNlTGF6eSgoKSA9PiB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwoXCJpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSwgZmllbGRzZXRcIikpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogdG9kbyBhbGlnbiB0aGlzIGFwaSB3aXRoIHRoZSByZXN0IG9mIHRoZSBhcGlzXHJcbiAgICAgKi9cclxuICAgIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5hdHRyKFwiZGlzYWJsZWRcIikuaXNQcmVzZW50KCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IGRpc2FibGVkKGRpc2FibGVkOiBib29sZWFuKSB7XHJcbiAgICAgICAgLy8gdGhpcy5hdHRyKFwiZGlzYWJsZWRcIikudmFsdWUgPSBkaXNhYmxlZCArIFwiXCI7XHJcbiAgICAgICAgaWYgKCFkaXNhYmxlZCkge1xyXG4gICAgICAgICAgICB0aGlzLnJlbW92ZUF0dHJpYnV0ZShcImRpc2FibGVkXCIpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXR0cihcImRpc2FibGVkXCIpLnZhbHVlID0gXCJkaXNhYmxlZFwiO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlQXR0cmlidXRlKG5hbWU6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuZWFjaEVsZW0oaXRlbSA9PiBpdGVtLnJlbW92ZUF0dHJpYnV0ZShuYW1lKSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGNoaWxkTm9kZXMoKTogRG9tUXVlcnkge1xyXG4gICAgICAgIGxldCBjaGlsZE5vZGVBcnI6IEFycmF5PEVsZW1lbnQ+ID0gW107XHJcbiAgICAgICAgdGhpcy5lYWNoRWxlbSgoaXRlbTogRWxlbWVudCkgPT4ge1xyXG4gICAgICAgICAgICBjaGlsZE5vZGVBcnIgPSBjaGlsZE5vZGVBcnIuY29uY2F0KG9ialRvQXJyYXkoaXRlbS5jaGlsZE5vZGVzKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBEb21RdWVyeSguLi5jaGlsZE5vZGVBcnIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogYmluZGluZyBpbnRvIHN0cmVhbVxyXG4gICAgICovXHJcbiAgICBnZXQgc3RyZWFtKCk6IFN0cmVhbTxEb21RdWVyeT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgU3RyZWFtPERvbVF1ZXJ5PiguLi50aGlzLmFzQXJyYXkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogZmV0Y2hlcyBhIGxhenkgc3RyZWFtIHJlcHJlc2VudGF0aW9uXHJcbiAgICAgKiBsYXp5IHNob3VsZCBiZSBhcHBsaWVkIGlmIHlvdSBoYXZlIHNvbWUgZmlsdGVycyBldGNcclxuICAgICAqIGluIGJldHdlZW4sIHRoaXMgY2FuIHJlZHVjZSB0aGUgbnVtYmVyIG9mIHBvc3QgZmlsdGVyIG9wZXJhdGlvbnNcclxuICAgICAqIGFuZCByYW0gdXNhZ2VcclxuICAgICAqIHNpZ25pZmljYW50bHkgYmVjYXVzZSB0aGUgb3BlcmF0aW9ucyBhcmUgZG9uZSBsYXppbHkgYW5kIHN0b3BcclxuICAgICAqIG9uY2UgdGhleSBoaXQgYSBkZWFkIGVuZC5cclxuICAgICAqL1xyXG4gICAgZ2V0IGxhenlTdHJlYW0oKTogTGF6eVN0cmVhbTxEb21RdWVyeT4ge1xyXG4gICAgICAgIHJldHVybiBMYXp5U3RyZWFtLm9mU3RyZWFtRGF0YVNvdXJjZSh0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgYXNBcnJheSgpOiBBcnJheTxEb21RdWVyeT4ge1xyXG4gICAgICAgIGxldCByZXQ6IEFycmF5PERvbVF1ZXJ5PiA9IFtdO1xyXG4gICAgICAgIHRoaXMuZWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICByZXQucHVzaChpdGVtKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogZWFzeSBxdWVyeSBzZWxlY3RvciBhbGwgcHJvZHVjZXJcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gc2VsZWN0b3IgdGhlIHNlbGVjdG9yXHJcbiAgICAgKiBAcmV0dXJucyBhIHJlc3VsdHMgZG9tIHF1ZXJ5IG9iamVjdFxyXG4gICAgICovXHJcbiAgICBzdGF0aWMgcXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcjogc3RyaW5nKTogRG9tUXVlcnkge1xyXG4gICAgICAgIHJldHVybiBuZXcgRG9tUXVlcnkoZG9jdW1lbnQpLnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogYnlJZCBwcm9kdWNlclxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBzZWxlY3RvciBpZFxyXG4gICAgICogQHJldHVybiBhIERvbVF1ZXJ5IGNvbnRhaW5pbmcgdGhlIGZvdW5kIGVsZW1lbnRzXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBieUlkKHNlbGVjdG9yOiBzdHJpbmcgfCBEb21RdWVyeSB8IEVsZW1lbnQpOiBEb21RdWVyeSB7XHJcbiAgICAgICAgaWYgKGlzU3RyaW5nKHNlbGVjdG9yKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IERvbVF1ZXJ5KGRvY3VtZW50KS5ieUlkKDxzdHJpbmc+c2VsZWN0b3IpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgRG9tUXVlcnkoPGFueT5zZWxlY3Rvcik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogYnlUYWdOYW1lIHByb2R1Y2VyXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHNlbGVjdG9yIG5hbWVcclxuICAgICAqIEByZXR1cm4gYSBEb21RdWVyeSBjb250YWluaW5nIHRoZSBmb3VuZCBlbGVtZW50c1xyXG4gICAgICovXHJcbiAgICBzdGF0aWMgYnlUYWdOYW1lKHNlbGVjdG9yOiBzdHJpbmcgfCBEb21RdWVyeSB8IEVsZW1lbnQpOiBEb21RdWVyeSB7XHJcbiAgICAgICAgaWYgKGlzU3RyaW5nKHNlbGVjdG9yKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IERvbVF1ZXJ5KGRvY3VtZW50KS5ieVRhZ05hbWUoPHN0cmluZz5zZWxlY3Rvcik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBEb21RdWVyeSg8YW55PnNlbGVjdG9yKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGdsb2JhbEV2YWwoY29kZTogc3RyaW5nLCBub25jZT86IHN0cmluZyk6IERvbVF1ZXJ5IHtcclxuICAgICAgICByZXR1cm4gbmV3IERvbVF1ZXJ5KGRvY3VtZW50KS5nbG9iYWxFdmFsKGNvZGUsIG5vbmNlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGJ1aWxkcyB0aGUgaWUgbm9kZXMgcHJvcGVybHkgaW4gYSBwbGFjZWhvbGRlclxyXG4gICAgICogYW5kIGJ5cGFzc2VzIGEgbm9uIHNjcmlwdCBpbnNlcnQgYnVnIHRoYXQgd2F5XHJcbiAgICAgKiBAcGFyYW0gbWFya3VwIHRoZSBtYXJrdSBjb2RlXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBmcm9tTWFya3VwKG1hcmt1cDogc3RyaW5nKTogRG9tUXVlcnkge1xyXG5cclxuICAgICAgICAvL2h0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RlL2RvY3MvV2ViL0FQSS9ET01QYXJzZXIgbGljZW5zZSBjcmVhdGl2ZSBjb21tb25zXHJcbiAgICAgICAgY29uc3QgZG9jID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KFwiXCIpO1xyXG4gICAgICAgIG1hcmt1cCA9IHRyaW0obWFya3VwKTtcclxuICAgICAgICBsZXQgbG93ZXJNYXJrdXAgPSBtYXJrdXAudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICBpZiAobG93ZXJNYXJrdXAuaW5kZXhPZignPCFkb2N0eXBlJykgIT0gLTEgfHxcclxuICAgICAgICAgICAgbG93ZXJNYXJrdXAuaW5kZXhPZignPGh0bWwnKSAhPSAtMSB8fFxyXG4gICAgICAgICAgICBsb3dlck1hcmt1cC5pbmRleE9mKCc8aGVhZCcpICE9IC0xIHx8IC8vVE9ETyBwcm9wZXIgcmVnZXhwcyBoZXJlIHRvIGF2b2lkIGVtYmVkZGVkIHRhZ3Mgd2l0aCBzYW1lIGVsZW1lbnQgbmFtZXMgdG8gYmUgdHJpZ2dlcmVkXHJcbiAgICAgICAgICAgIGxvd2VyTWFya3VwLmluZGV4T2YoJzxib2R5JykgIT0gLTEpIHtcclxuICAgICAgICAgICAgZG9jLmRvY3VtZW50RWxlbWVudC5pbm5lckhUTUwgPSBtYXJrdXA7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgRG9tUXVlcnkoZG9jLmRvY3VtZW50RWxlbWVudCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbGV0IHN0YXJ0c1dpdGhUYWcgPSBmdW5jdGlvbiAoc3RyOiBzdHJpbmcsIHRhZ05hbWU6IHN0cmluZykge1xyXG4gICAgICAgICAgICAgICAgbGV0IHRhZzEgPSBbXCI8XCIsIHRhZ05hbWUsIFwiPlwiXS5qb2luKFwiXCIpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHRhZzIgPSBbXCI8XCIsIHRhZ05hbWUsIFwiIFwiXS5qb2luKFwiXCIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChzdHIuaW5kZXhPZih0YWcxKSA9PSAwKSB8fCAoc3RyLmluZGV4T2YodGFnMikgPT0gMCk7XHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICBsZXQgZHVtbXlQbGFjZUhvbGRlciA9IG5ldyBEb21RdWVyeShkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpKTtcclxuXHJcbiAgICAgICAgICAgIC8vdGFibGUgbmVlZHMgc3BlY2lhbCB0cmVhdG1lbnQgZHVlIHRvIHRoZSBicm93c2VycyBhdXRvIGNyZWF0aW9uXHJcbiAgICAgICAgICAgIGlmIChzdGFydHNXaXRoVGFnKGxvd2VyTWFya3VwLCBcInRoZWFkXCIpIHx8IHN0YXJ0c1dpdGhUYWcobG93ZXJNYXJrdXAsIFwidGJvZHlcIikpIHtcclxuICAgICAgICAgICAgICAgIGR1bW15UGxhY2VIb2xkZXIuaHRtbChgPHRhYmxlPiR7bWFya3VwfTwvdGFibGU+YCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZHVtbXlQbGFjZUhvbGRlci5xdWVyeVNlbGVjdG9yQWxsKFwidGFibGVcIikuZ2V0KDApLmNoaWxkTm9kZXMuZGV0YWNoKCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RhcnRzV2l0aFRhZyhsb3dlck1hcmt1cCwgXCJ0Zm9vdFwiKSkge1xyXG4gICAgICAgICAgICAgICAgZHVtbXlQbGFjZUhvbGRlci5odG1sKGA8dGFibGU+PHRoZWFkPjwvdGhlYWQ+PHRib2R5Pjx0Ym9keSR7bWFya3VwfTwvdGFibGU+YCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZHVtbXlQbGFjZUhvbGRlci5xdWVyeVNlbGVjdG9yQWxsKFwidGFibGVcIikuZ2V0KDIpLmNoaWxkTm9kZXMuZGV0YWNoKCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RhcnRzV2l0aFRhZyhsb3dlck1hcmt1cCwgXCJ0clwiKSkge1xyXG4gICAgICAgICAgICAgICAgZHVtbXlQbGFjZUhvbGRlci5odG1sKGA8dGFibGU+PHRib2R5PiR7bWFya3VwfTwvdGJvZHk+PC90YWJsZT5gKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBkdW1teVBsYWNlSG9sZGVyLnF1ZXJ5U2VsZWN0b3JBbGwoXCJ0Ym9keVwiKS5nZXQoMCkuY2hpbGROb2Rlcy5kZXRhY2goKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChzdGFydHNXaXRoVGFnKGxvd2VyTWFya3VwLCBcInRkXCIpKSB7XHJcbiAgICAgICAgICAgICAgICBkdW1teVBsYWNlSG9sZGVyLmh0bWwoYDx0YWJsZT48dGJvZHk+PHRyPiR7bWFya3VwfTwvdHI+PC90Ym9keT48L3RhYmxlPmApO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGR1bW15UGxhY2VIb2xkZXIucXVlcnlTZWxlY3RvckFsbChcInRyXCIpLmdldCgwKS5jaGlsZE5vZGVzLmRldGFjaCgpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBkdW1teVBsYWNlSG9sZGVyLmh0bWwobWFya3VwKTtcclxuICAgICAgICAgICAgcmV0dXJuIGR1bW15UGxhY2VIb2xkZXIuY2hpbGROb2Rlcy5kZXRhY2goKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIHJldHVybnMgdGhlIG50aCBlbGVtZW50IGFzIGRvbXF1ZXJ5XHJcbiAgICAgKiBmcm9tIHRoZSBpbnRlcm5hbCBlbGVtZW50c1xyXG4gICAgICogbm90ZSBpZiB5b3UgdHJ5IHRvIHJlYWNoIGEgbm9uIGV4aXN0aW5nIGVsZW1lbnQgcG9zaXRpb25cclxuICAgICAqIHlvdSB3aWxsIGdldCBiYWNrIGFuIGFic2VudCBlbnRyeVxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBpbmRleCB0aGUgbnRoIGluZGV4XHJcbiAgICAgKi9cclxuICAgIGdldChpbmRleDogbnVtYmVyKTogRG9tUXVlcnkge1xyXG4gICAgICAgIHJldHVybiAoaW5kZXggPCB0aGlzLnJvb3ROb2RlLmxlbmd0aCkgPyBuZXcgRG9tUXVlcnkodGhpcy5yb290Tm9kZVtpbmRleF0pIDogRG9tUXVlcnkuYWJzZW50O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogcmV0dXJucyB0aGUgbnRoIGVsZW1lbnQgYXMgb3B0aW9uYWwgb2YgYW4gRWxlbWVudCBvYmplY3RcclxuICAgICAqIEBwYXJhbSBpbmRleCB0aGUgbnVtYmVyIGZyb20gdGhlIGluZGV4XHJcbiAgICAgKiBAcGFyYW0gZGVmYXVsdHMgdGhlIGRlZmF1bHQgdmFsdWUgaWYgdGhlIGluZGV4IGlzIG92ZXJydW4gZGVmYXVsdCBPcHRpb25hbC5hYnNlbnRcclxuICAgICAqL1xyXG4gICAgZ2V0QXNFbGVtKGluZGV4OiBudW1iZXIsIGRlZmF1bHRzOiBPcHRpb25hbDxhbnk+ID0gT3B0aW9uYWwuYWJzZW50KTogT3B0aW9uYWw8RWxlbWVudD4ge1xyXG4gICAgICAgIHJldHVybiAoaW5kZXggPCB0aGlzLnJvb3ROb2RlLmxlbmd0aCkgPyBPcHRpb25hbC5mcm9tTnVsbGFibGUodGhpcy5yb290Tm9kZVtpbmRleF0pIDogZGVmYXVsdHM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiByZXR1cm5zIHRoZSB2YWx1ZSBhcnJheTwgb2YgYWxsIGVsZW1lbnRzXHJcbiAgICAgKi9cclxuICAgIGFsbEVsZW1zKCk6IEFycmF5PEVsZW1lbnQ+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5yb290Tm9kZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGFic2VudCBubyB2YWx1ZXMgcmVhY2hlZD9cclxuICAgICAqL1xyXG4gICAgaXNBYnNlbnQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubGVuZ3RoID09IDA7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBzaG91bGQgbWFrZSB0aGUgY29kZSBjbGVhcmVyXHJcbiAgICAgKiBub3RlIGlmIHlvdSBwYXNzIGEgZnVuY3Rpb25cclxuICAgICAqIHRoaXMgcmVmZXJzIHRvIHRoZSBhY3RpdmUgZG9wbXF1ZXJ5IG9iamVjdFxyXG4gICAgICovXHJcbiAgICBpc1ByZXNlbnQocHJlc2VudFJ1bm5hYmxlID86IChlbGVtID86IERvbVF1ZXJ5KSA9PiB2b2lkKTogYm9vbGVhbiB7XHJcbiAgICAgICAgbGV0IGFic2VudCA9IHRoaXMuaXNBYnNlbnQoKTtcclxuICAgICAgICBpZiAoIWFic2VudCAmJiBwcmVzZW50UnVubmFibGUpIHtcclxuICAgICAgICAgICAgcHJlc2VudFJ1bm5hYmxlLmNhbGwodGhpcywgdGhpcylcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuICFhYnNlbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBzaG91bGQgbWFrZSB0aGUgY29kZSBjbGVhcmVyXHJcbiAgICAgKiBub3RlIGlmIHlvdSBwYXNzIGEgZnVuY3Rpb25cclxuICAgICAqIHRoaXMgcmVmZXJzIHRvIHRoZSBhY3RpdmUgZG9wbXF1ZXJ5IG9iamVjdFxyXG4gICAgICpcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gcHJlc2VudFJ1bm5hYmxlXHJcbiAgICAgKi9cclxuICAgIGlmUHJlc2VudExhenkocHJlc2VudFJ1bm5hYmxlOiAoZWxlbSA/OiBEb21RdWVyeSkgPT4gdm9pZCA9IGZ1bmN0aW9uICgpIHtcclxuICAgIH0pOiBEb21RdWVyeSB7XHJcbiAgICAgICAgdGhpcy5pc1ByZXNlbnQuY2FsbCh0aGlzLCBwcmVzZW50UnVubmFibGUpO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogcmVtb3ZlIGFsbCBhZmZlY3RlZCBub2RlcyBmcm9tIHRoaXMgcXVlcnkgb2JqZWN0IGZyb20gdGhlIGRvbSB0cmVlXHJcbiAgICAgKi9cclxuICAgIGRlbGV0ZSgpIHtcclxuICAgICAgICB0aGlzLmVhY2hFbGVtKChub2RlOiBFbGVtZW50KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChub2RlLnBhcmVudE5vZGUpIHtcclxuICAgICAgICAgICAgICAgIG5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChub2RlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogcXVlcnkgc2VsZWN0b3IgYWxsIG9uIHRoZSBleGlzdGluZyBkb20gcXVlcnkgb2JqZWN0XHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHNlbGVjdG9yIHRoZSBzdGFuZGFyZCBzZWxlY3RvclxyXG4gICAgICogQHJldHVybiBhIERvbVF1ZXJ5IHdpdGggdGhlIHJlc3VsdHNcclxuICAgICAqL1xyXG4gICAgcXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik6IERvbVF1ZXJ5IHtcclxuICAgICAgICBpZiAoIXRoaXM/LnJvb3ROb2RlPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBub2RlcyA9IFtdO1xyXG4gICAgICAgIGZvciAobGV0IGNudCA9IDA7IGNudCA8IHRoaXMucm9vdE5vZGUubGVuZ3RoOyBjbnQrKykge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMucm9vdE5vZGVbY250XT8ucXVlcnlTZWxlY3RvckFsbCkge1xyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IHJlcyA9IHRoaXMucm9vdE5vZGVbY250XS5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKTtcclxuICAgICAgICAgICAgbm9kZXMgPSBub2Rlcy5jb25jYXQob2JqVG9BcnJheShyZXMpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBuZXcgRG9tUXVlcnkoLi4ubm9kZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogY29yZSBieUlkIG1ldGhvZFxyXG4gICAgICogQHBhcmFtIGlkIHRoZSBpZCB0byBzZWFyY2ggZm9yXHJcbiAgICAgKiBAcGFyYW0gaW5jbHVkZVJvb3QgYWxzbyBtYXRjaCB0aGUgcm9vdCBlbGVtZW50P1xyXG4gICAgICovXHJcbiAgICBieUlkKGlkOiBzdHJpbmcsIGluY2x1ZGVSb290PzogYm9vbGVhbik6IERvbVF1ZXJ5IHtcclxuICAgICAgICBsZXQgcmVzOiBBcnJheTxEb21RdWVyeT4gPSBbXTtcclxuICAgICAgICBmb3IgKGxldCBjbnQgPSAwOyBpbmNsdWRlUm9vdCAmJiBjbnQgPCB0aGlzLnJvb3ROb2RlLmxlbmd0aDsgY250KyspIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMucm9vdE5vZGVbY250XT8uaWQgPT0gaWQpIHtcclxuICAgICAgICAgICAgICAgIHJlcy5wdXNoKG5ldyBEb21RdWVyeSh0aGlzLnJvb3ROb2RlW2NudF0pKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvL2ZvciBzb21lIHN0cmFuZ2Uga2luZCBvZiByZWFzb24gdGhlICMgc2VsZWN0b3IgZmFpbHNcclxuICAgICAgICAvL29uIGhpZGRlbiBlbGVtZW50cyB3ZSB1c2UgdGhlIGF0dHJpYnV0ZXMgbWF0Y2ggc2VsZWN0b3JcclxuICAgICAgICAvL3RoYXQgd29ya3NcclxuICAgICAgICByZXMgPSByZXMuY29uY2F0KHRoaXMucXVlcnlTZWxlY3RvckFsbChgW2lkPVwiJHtpZH1cIl1gKSk7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBEb21RdWVyeSguLi5yZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogc2FtZSBhcyBieUlkIGp1c3QgZm9yIHRoZSB0YWcgbmFtZVxyXG4gICAgICogQHBhcmFtIHRhZ05hbWVcclxuICAgICAqIEBwYXJhbSBpbmNsdWRlUm9vdFxyXG4gICAgICovXHJcbiAgICBieVRhZ05hbWUodGFnTmFtZTogc3RyaW5nLCBpbmNsdWRlUm9vdCA/OiBib29sZWFuKTogRG9tUXVlcnkge1xyXG4gICAgICAgIGxldCByZXMgPSBbXTtcclxuICAgICAgICBmb3IgKGxldCBjbnQgPSAwOyBpbmNsdWRlUm9vdCAmJiBjbnQgPCB0aGlzLnJvb3ROb2RlLmxlbmd0aDsgY250KyspIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMucm9vdE5vZGVbY250XT8udGFnTmFtZSA9PSB0YWdOYW1lKSB7XHJcbiAgICAgICAgICAgICAgICByZXMucHVzaChuZXcgRG9tUXVlcnkodGhpcy5yb290Tm9kZVtjbnRdKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmVzID0gcmVzLmNvbmNhdCh0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwodGFnTmFtZSkpO1xyXG4gICAgICAgIHJldHVybiBuZXcgRG9tUXVlcnkoLi4ucmVzKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGF0dHIgYWNjZXNzb3IsIHVzYWdlIG15UXVlcnkuYXR0cihcImNsYXNzXCIpLnZhbHVlID0gXCJibGFcIlxyXG4gICAgICogb3IgbGV0IHZhbHVlIG15UXVlcnkuYXR0cihcImNsYXNzXCIpLnZhbHVlXHJcbiAgICAgKiBAcGFyYW0gYXR0ciB0aGUgYXR0cmlidXRlIHRvIHNldFxyXG4gICAgICogQHBhcmFtIGRlZmF1bHRWYWx1ZSB0aGUgZGVmYXVsdCB2YWx1ZSBpbiBjYXNlIG5vdGhpbmcgaXMgcHJlc2VudGVkIChkZWZhdWx0cyB0byBudWxsKVxyXG4gICAgICovXHJcbiAgICBhdHRyKGF0dHI6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBzdHJpbmcgPSBudWxsKTogRWxlbWVudEF0dHJpYnV0ZSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBFbGVtZW50QXR0cmlidXRlKHRoaXMsIGF0dHIsIGRlZmF1bHRWYWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBoYXNjbGFzcywgY2hlY2tzIGZvciBhbiBleGlzdGluZyBjbGFzcyBpbiB0aGUgY2xhc3MgYXR0cmlidXRlc1xyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBjbGF6eiB0aGUgY2xhc3MgdG8gc2VhcmNoIGZvclxyXG4gICAgICovXHJcbiAgICBoYXNDbGFzcyhjbGF6ejogc3RyaW5nKSB7XHJcbiAgICAgICAgbGV0IGhhc0l0ID0gZmFsc2U7XHJcblxyXG4gICAgICAgIHRoaXMuZWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgb2xkQ2xhc3MgPSBpdGVtLmF0dHIoXCJjbGFzc1wiKS52YWx1ZSB8fCBcIlwiO1xyXG4gICAgICAgICAgICBpZiAob2xkQ2xhc3MudG9Mb3dlckNhc2UoKS5pbmRleE9mKGNsYXp6LnRvTG93ZXJDYXNlKCkpID09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgb2xkQ2xhc3NlcyA9IG9sZENsYXNzLnNwbGl0KC9cXHMrL2dpKTtcclxuICAgICAgICAgICAgICAgIGxldCBmb3VuZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgY250ID0gMDsgY250IDwgb2xkQ2xhc3Nlcy5sZW5ndGggJiYgIWZvdW5kOyBjbnQrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvdW5kID0gb2xkQ2xhc3Nlc1tjbnRdLnRvTG93ZXJDYXNlKCkgPT0gY2xhenoudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGhhc0l0ID0gaGFzSXQgfHwgZm91bmQ7XHJcbiAgICAgICAgICAgICAgICBpZiAoaGFzSXQpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gaGFzSXQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBhcHBlbmRzIGEgY2xhc3Mgc3RyaW5nIGlmIG5vdCBhbHJlYWR5IGluIHRoZSBlbGVtZW50KHMpXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGNsYXp6IHRoZSBzdHlsZSBjbGFzcyB0byBhcHBlbmRcclxuICAgICAqL1xyXG4gICAgYWRkQ2xhc3MoY2xheno6IHN0cmluZyk6IERvbVF1ZXJ5IHtcclxuICAgICAgICB0aGlzLmVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgbGV0IG9sZENsYXNzID0gaXRlbS5hdHRyKFwiY2xhc3NcIikudmFsdWUgfHwgXCJcIjtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmhhc0NsYXNzKGNsYXp6KSkge1xyXG4gICAgICAgICAgICAgICAgaXRlbS5hdHRyKFwiY2xhc3NcIikudmFsdWUgPSB0cmltKG9sZENsYXNzICsgXCIgXCIgKyBjbGF6eik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIHJlbW92ZSB0aGUgc3R5bGUgY2xhc3MgaWYgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGNsYXp6XHJcbiAgICAgKi9cclxuICAgIHJlbW92ZUNsYXNzKGNsYXp6OiBzdHJpbmcpOiBEb21RdWVyeSB7XHJcbiAgICAgICAgdGhpcy5lYWNoKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmhhc0NsYXNzKGNsYXp6KSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IG9sZENsYXNzID0gaXRlbS5hdHRyKFwiY2xhc3NcIikudmFsdWUgfHwgXCJcIjtcclxuICAgICAgICAgICAgICAgIGxldCBuZXdDbGFzc2VzID0gW107XHJcbiAgICAgICAgICAgICAgICBsZXQgb2xkQ2xhc3NlcyA9IG9sZENsYXNzLnNwbGl0KC9cXHMrL2dpKTtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGNudCA9IDA7IGNudCA8IG9sZENsYXNzZXMubGVuZ3RoOyBjbnQrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvbGRDbGFzc2VzW2NudF0udG9Mb3dlckNhc2UoKSAhPSBjbGF6ei50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld0NsYXNzZXMucHVzaChvbGRDbGFzc2VzW2NudF0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGl0ZW0uYXR0cihcImNsYXNzXCIpLnZhbHVlID0gbmV3Q2xhc3Nlcy5qb2luKFwiIFwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogY2hlY2tzIHdoZXRoZXIgd2UgaGF2ZSBhIG11bHRpcGFydCBlbGVtZW50IGluIG91ciBjaGlsZHJlblxyXG4gICAgICovXHJcbiAgICBpc011bHRpcGFydENhbmRpZGF0ZSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5xdWVyeVNlbGVjdG9yQWxsKFwiaW5wdXRbdHlwZT0nZmlsZSddXCIpLmZpcnN0RWxlbSgpLmlzUHJlc2VudCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogaW5uZXJIdG1sIGVxdWl2YWxrZW50XHJcbiAgICAgKiBlcXVpdmFsZW50IHRvIGpxdWVyaWVzIGh0bWxcclxuICAgICAqIGFzIHNldHRlciB0aGUgaHRtbCBpcyBzZXQgYW5kIHRoZVxyXG4gICAgICogRG9tUXVlcnkgaXMgZ2l2ZW4gYmFja1xyXG4gICAgICogYXMgZ2V0dGVyIHRoZSBodG1sIHN0cmluZyBpcyByZXR1cm5lZFxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBpbnZhbFxyXG4gICAgICovXHJcbiAgICBodG1sKGludmFsPzogc3RyaW5nKTogRG9tUXVlcnkgfCBPcHRpb25hbDxzdHJpbmc+IHtcclxuICAgICAgICBpZiAoT3B0aW9uYWwuZnJvbU51bGxhYmxlKGludmFsKS5pc0Fic2VudCgpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmlzUHJlc2VudCgpID8gT3B0aW9uYWwuZnJvbU51bGxhYmxlKHRoaXMuaW5uZXJIdG1sKSA6IE9wdGlvbmFsLmFic2VudDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5pbm5lckh0bWwgPSBpbnZhbDtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IGlubmVySHRtbChpblZhbDogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5lYWNoRWxlbShlbGVtID0+IGVsZW0uaW5uZXJIVE1MID0gaW5WYWwpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBpbm5lckh0bWwoKTogc3RyaW5nIHtcclxuICAgICAgICBsZXQgcmV0QXJyID0gW107XHJcbiAgICAgICAgdGhpcy5lYWNoRWxlbShlbGVtID0+IHJldEFyci5wdXNoKGVsZW0uaW5uZXJIVE1MKSk7XHJcbiAgICAgICAgcmV0dXJuIHJldEFyci5qb2luKFwiXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vc291cmNlOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRWxlbWVudC9tYXRjaGVzXHJcbiAgICAvL2NvZGUgc25pcHBldCBsaWNlbnNlOiBodHRwczovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktc2EvMi41L1xyXG4gICAgcHJpdmF0ZSBfbW96TWF0Y2hlc1NlbGVjdG9yKHRvTWF0Y2g6IEVsZW1lbnQsIHNlbGVjdG9yOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICBsZXQgcHJvdDogeyBba2V5OiBzdHJpbmddOiBGdW5jdGlvbiB9ID0gKDxhbnk+dG9NYXRjaCk7XHJcbiAgICAgICAgbGV0IG1hdGNoZXNTZWxlY3RvcjogRnVuY3Rpb24gPSBwcm90Lm1hdGNoZXNTZWxlY3RvciB8fFxyXG4gICAgICAgICAgICBwcm90Lm1vek1hdGNoZXNTZWxlY3RvciB8fFxyXG4gICAgICAgICAgICBwcm90Lm1zTWF0Y2hlc1NlbGVjdG9yIHx8XHJcbiAgICAgICAgICAgIHByb3Qub01hdGNoZXNTZWxlY3RvciB8fFxyXG4gICAgICAgICAgICBwcm90LndlYmtpdE1hdGNoZXNTZWxlY3RvciB8fFxyXG4gICAgICAgICAgICBmdW5jdGlvbiAoczogc3RyaW5nKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgbWF0Y2hlczogTm9kZUxpc3RPZjxIVE1MRWxlbWVudD4gPSAoZG9jdW1lbnQgfHwgKDxhbnk+d2luZG93KS5vd25lckRvY3VtZW50KS5xdWVyeVNlbGVjdG9yQWxsKHMpLFxyXG4gICAgICAgICAgICAgICAgICAgIGkgPSBtYXRjaGVzLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgIHdoaWxlICgtLWkgPj0gMCAmJiBtYXRjaGVzLml0ZW0oaSkgIT09IHRvTWF0Y2gpIHtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiBpID4gLTE7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIG1hdGNoZXNTZWxlY3Rvci5jYWxsKHRvTWF0Y2gsIHNlbGVjdG9yKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGZpbHRlcnMgdGhlIGN1cnJlbnQgZG9tIHF1ZXJ5IGVsZW1lbnRzXHJcbiAgICAgKiB1cG9uIGEgZ2l2ZW4gc2VsZWN0b3JcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gc2VsZWN0b3JcclxuICAgICAqL1xyXG4gICAgZmlsdGVyU2VsZWN0b3Ioc2VsZWN0b3I6IHN0cmluZyk6IERvbVF1ZXJ5IHtcclxuICAgICAgICBsZXQgbWF0Y2hlZCA9IFtdO1xyXG5cclxuICAgICAgICB0aGlzLmVhY2hFbGVtKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fbW96TWF0Y2hlc1NlbGVjdG9yKGl0ZW0sIHNlbGVjdG9yKSkge1xyXG4gICAgICAgICAgICAgICAgbWF0Y2hlZC5wdXNoKGl0ZW0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gbmV3IERvbVF1ZXJ5KC4uLm1hdGNoZWQpO1xyXG4gICAgfVxyXG5cclxuICAgIG1hdGNoZXNTZWxlY3RvcihzZWxlY3Rvcjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgdGhpcy5lYWNoRWxlbShpdGVtID0+IHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLl9tb3pNYXRjaGVzU2VsZWN0b3IoaXRlbSwgc2VsZWN0b3IpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGVhc3kgbm9kZSB0cmF2ZXJzYWwsIHlvdSBjYW4gcGFzc1xyXG4gICAgICogYSBzZXQgb2Ygbm9kZSBzZWxlY3RvcnMgd2hpY2ggYXJlIGpvaW5lZCBhcyBkaXJlY3QgY2hpbGRzXHJcbiAgICAgKlxyXG4gICAgICogbm90IHRoZSByb290bm9kZXMgYXJlIG5vdCBpbiB0aGUgZ2V0SWYsIHRob3NlIGFyZSBhbHdheXMgdGhlIGNoaWxkIG5vZGVzXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIG5vZGVTZWxlY3RvclxyXG4gICAgICovXHJcbiAgICBnZXRJZiguLi5ub2RlU2VsZWN0b3I6IEFycmF5PHN0cmluZz4pOiBEb21RdWVyeSB7XHJcblxyXG4gICAgICAgIGxldCBzZWxlY3RvclN0YWdlOiBEb21RdWVyeSA9IHRoaXMuY2hpbGROb2RlcztcclxuICAgICAgICBmb3IgKGxldCBjbnQgPSAwOyBjbnQgPCBub2RlU2VsZWN0b3IubGVuZ3RoOyBjbnQrKykge1xyXG4gICAgICAgICAgICBzZWxlY3RvclN0YWdlID0gc2VsZWN0b3JTdGFnZS5maWx0ZXJTZWxlY3Rvcihub2RlU2VsZWN0b3JbY250XSk7XHJcbiAgICAgICAgICAgIGlmIChzZWxlY3RvclN0YWdlLmlzQWJzZW50KCkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBzZWxlY3RvclN0YWdlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBzZWxlY3RvclN0YWdlO1xyXG4gICAgfVxyXG5cclxuICAgIGVhY2hFbGVtKGZ1bmM6IChpdGVtOiBFbGVtZW50LCBjbnQ/OiBudW1iZXIpID0+IGFueSk6IERvbVF1ZXJ5IHtcclxuICAgICAgICBmb3IgKGxldCBjbnQgPSAwLCBsZW4gPSB0aGlzLnJvb3ROb2RlLmxlbmd0aDsgY250IDwgbGVuOyBjbnQrKykge1xyXG4gICAgICAgICAgICBpZiAoZnVuYyh0aGlzLnJvb3ROb2RlW2NudF0sIGNudCkgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICBmaXJzdEVsZW0oZnVuYzogKGl0ZW06IEVsZW1lbnQsIGNudD86IG51bWJlcikgPT4gYW55ID0gaXRlbSA9PiBpdGVtKTogRG9tUXVlcnkge1xyXG4gICAgICAgIGlmICh0aGlzLnJvb3ROb2RlLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgZnVuYyh0aGlzLnJvb3ROb2RlWzBdLCAwKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgZWFjaChmdW5jOiAoaXRlbTogRG9tUXVlcnksIGNudD86IG51bWJlcikgPT4gYW55KTogRG9tUXVlcnkge1xyXG4gICAgICAgIFN0cmVhbS5vZiguLi50aGlzLnJvb3ROb2RlKVxyXG4gICAgICAgICAgICAuZWFjaCgoaXRlbSwgY250KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvL3dlIGNvdWxkIHVzZSBhIGZpbHRlciwgYnV0IGZvciB0aGUgYmVzdCBwZXJmb3JtYW5jZSB3ZSBkb250XHJcbiAgICAgICAgICAgICAgICBpZiAoaXRlbSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmMoRG9tUXVlcnkuYnlJZChpdGVtKSwgY250KTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogcmV0dXJucyBhIG5ldyBkb20gcXVlcnkgY29udGFpbmluZyBvbmx5IHRoZSBmaXJzdCBlbGVtZW50IG1heFxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBmdW5jIGEgYW4gb3B0aW9uYWwgY2FsbGJhY2sgZnVuY3Rpb24gdG8gcGVyZm9ybSBhbiBvcGVyYXRpb24gb24gdGhlIGZpcnN0IGVsZW1lbnRcclxuICAgICAqL1xyXG4gICAgZmlyc3QoZnVuYzogKGl0ZW06IERvbVF1ZXJ5LCBjbnQ/OiBudW1iZXIpID0+IGFueSA9IChpdGVtKSA9PiBpdGVtKTogRG9tUXVlcnkge1xyXG4gICAgICAgIGlmICh0aGlzLnJvb3ROb2RlLmxlbmd0aCA+PSAxKSB7XHJcbiAgICAgICAgICAgIGZ1bmModGhpcy5nZXQoMCksIDApO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXQoMCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogZmlsdGVyIGZ1bmN0aW9uIHdoaWNoIGZpbHRlcnMgYSBzdWJzZXRcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gZnVuY1xyXG4gICAgICovXHJcbiAgICBmaWx0ZXIoZnVuYzogKGl0ZW06IERvbVF1ZXJ5KSA9PiBib29sZWFuKTogRG9tUXVlcnkge1xyXG4gICAgICAgIGxldCByZUFycjogQXJyYXk8RG9tUXVlcnk+ID0gW107XHJcbiAgICAgICAgdGhpcy5lYWNoKChpdGVtOiBEb21RdWVyeSkgPT4ge1xyXG4gICAgICAgICAgICBmdW5jKGl0ZW0pID8gcmVBcnIucHVzaChpdGVtKSA6IG51bGw7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBEb21RdWVyeSguLi48YW55PnJlQXJyKTtcclxuICAgIH1cclxuXHJcbiAgICAvL1RPRE8gYXBwZW5kIHByZXBlbmRcclxuXHJcbiAgICAvKipcclxuICAgICAqIGdsb2JhbCBldmFsIGhlYWQgYXBwZW5kaXggbWV0aG9kXHJcbiAgICAgKiBubyBvdGhlciBtZXRob2RzIGFyZSBzdXBwb3J0ZWQgYW55bW9yZVxyXG4gICAgICogQHBhcmFtIGNvZGUgdGhlIGNvZGUgdG8gYmUgZXZhbGVkXHJcbiAgICAgKiBAcGFyYW0gIG5vbmNlIG9wdGlvbmFsICBub25jZSBrZXkgZm9yIGhpZ2hlciBzZWN1cml0eVxyXG4gICAgICovXHJcbiAgICBnbG9iYWxFdmFsKGNvZGU6IHN0cmluZywgbm9uY2UgPzogc3RyaW5nKTogRG9tUXVlcnkge1xyXG4gICAgICAgIGxldCBoZWFkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJoZWFkXCIpWzBdIHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcclxuICAgICAgICBsZXQgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtcclxuICAgICAgICBpZiAobm9uY2UpIHtcclxuICAgICAgICAgICAgc2NyaXB0LnNldEF0dHJpYnV0ZShcIm5vbmNlXCIsIG5vbmNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgc2NyaXB0LnR5cGUgPSBcInRleHQvamF2YXNjcmlwdFwiO1xyXG4gICAgICAgIHNjcmlwdC5pbm5lckhUTUwgPSBjb2RlO1xyXG4gICAgICAgIGxldCBuZXdTY3JpcHRFbGVtZW50ID0gaGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpO1xyXG4gICAgICAgIGhlYWQucmVtb3ZlQ2hpbGQobmV3U2NyaXB0RWxlbWVudCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBkZXRhY2hlcyBhIHNldCBvZiBub2RlcyBmcm9tIHRoZWlyIHBhcmVudCBlbGVtZW50c1xyXG4gICAgICogaW4gYSBicm93c2VyIGluZGVwZW5kZW5kIG1hbm5lclxyXG4gICAgICogQHBhcmFtIHtPYmplY3R9IGl0ZW1zIHRoZSBpdGVtcyB3aGljaCBuZWVkIHRvIGJlIGRldGFjaGVkXHJcbiAgICAgKiBAcmV0dXJuIHtBcnJheX0gYW4gYXJyYXkgb2Ygbm9kZXMgd2l0aCB0aGUgZGV0YWNoZWQgZG9tIG5vZGVzXHJcbiAgICAgKi9cclxuICAgIGRldGFjaCgpOiBEb21RdWVyeSB7XHJcbiAgICAgICAgdGhpcy5lYWNoRWxlbSgoaXRlbTogRWxlbWVudCkgPT4ge1xyXG4gICAgICAgICAgICBpdGVtLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoaXRlbSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBhcHBlbmRzIHRoZSBjdXJyZW50IHNldCBvZiBlbGVtZW50c1xyXG4gICAgICogdG8gdGhlIGVsZW1lbnQgb3IgZmlyc3QgZWxlbWVudCBwYXNzZWQgdmlhIGVsZW1cclxuICAgICAqIEBwYXJhbSBlbGVtXHJcbiAgICAgKi9cclxuICAgIGFwcGVuZFRvKGVsZW06IERvbVF1ZXJ5KSB7XHJcbiAgICAgICAgdGhpcy5lYWNoRWxlbSgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgdmFsdWUxOiBFbGVtZW50ID0gPEVsZW1lbnQ+ZWxlbS5nZXRBc0VsZW0oMCkub3JFbHNlTGF6eSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGFwcGVuZENoaWxkOiAodGhlSXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KS52YWx1ZTtcclxuICAgICAgICAgICAgdmFsdWUxLmFwcGVuZENoaWxkKGl0ZW0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogbG9hZHMgYW5kIGV2YWxzIGEgc2NyaXB0IGZyb20gYSBzb3VyY2UgdXJpXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHNyYyB0aGUgc291cmNlIHRvIGJlIGxvYWRlZCBhbmQgZXZhbGVkXHJcbiAgICAgKiBAcGFyYW0gZGVmZXIgaW4gbWlsaXNlY29uZHMgZXhlY3V0aW9uIGRlZmF1bHQgKDAgPT0gbm8gZGVmZXIpXHJcbiAgICAgKiBAcGFyYW0gY2hhclNldFxyXG4gICAgICovXHJcbiAgICBsb2FkU2NyaXB0RXZhbChzcmM6IHN0cmluZywgZGVmZXI6IG51bWJlciA9IDAsIGNoYXJTZXQ6IHN0cmluZyA9IFwidXRmLThcIikge1xyXG4gICAgICAgIGxldCB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcclxuICAgICAgICB4aHIub3BlbihcIkdFVFwiLCBzcmMsIGZhbHNlKTtcclxuXHJcbiAgICAgICAgaWYgKGNoYXJTZXQpIHtcclxuICAgICAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoXCJDb250ZW50LVR5cGVcIiwgXCJhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQ7IGNoYXJzZXQ6XCIgKyBjaGFyU2V0KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHhoci5zZW5kKG51bGwpO1xyXG5cclxuICAgICAgICB4aHIub25sb2FkID0gKHJlc3BvbnNlRGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIC8vZGVmZXIgYWxzbyBtZWFucyB3ZSBoYXZlIHRvIHByb2Nlc3MgYWZ0ZXIgdGhlIGFqYXggcmVzcG9uc2VcclxuICAgICAgICAgICAgLy9oYXMgYmVlbiBwcm9jZXNzZWRcclxuICAgICAgICAgICAgLy93ZSBjYW4gYWNoaWV2ZSB0aGF0IHdpdGggYSBzbWFsbCB0aW1lb3V0LCB0aGUgdGltZW91dFxyXG4gICAgICAgICAgICAvL3RyaWdnZXJzIGFmdGVyIHRoZSBwcm9jZXNzaW5nIGlzIGRvbmUhXHJcbiAgICAgICAgICAgIGlmICghZGVmZXIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2xvYmFsRXZhbCh4aHIucmVzcG9uc2VUZXh0LnJlcGxhY2UoXCJcXG5cIiwgXCJcXHJcXG5cIikgKyBcIlxcclxcbi8vQCBzb3VyY2VVUkw9XCIgKyBzcmMpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy9UT0RPIG5vdCBpZGVhbCB3ZSBtYXliZSBvdWdodCB0byBtb3ZlIHRvIHNvbWV0aGluZyBlbHNlIGhlcmVcclxuICAgICAgICAgICAgICAgIC8vYnV0IHNpbmNlIGl0IGlzIG5vdCBpbiB1c2UgeWV0LCBpdCBpcyBva1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nbG9iYWxFdmFsKHhoci5yZXNwb25zZVRleHQgKyBcIlxcclxcbi8vQCBzb3VyY2VVUkw9XCIgKyBzcmMpO1xyXG4gICAgICAgICAgICAgICAgfSwgZGVmZXIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgeGhyLm9uZXJyb3IgPSAoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRocm93IEVycm9yKGRhdGEpO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgLy9zaW5jZSB3ZSBhcmUgc3luY2hyb25vdXMgd2UgZG8gaXQgYWZ0ZXIgbm90IHdpdGggb25SZWFkeVN0YXRlQ2hhbmdlXHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIGluc2VydEFmdGVyKC4uLnRvSW5zZXJ0UGFyYW1zOiBBcnJheTxEb21RdWVyeT4pOiBEb21RdWVyeSB7XHJcblxyXG5cclxuICAgICAgICB0aGlzLmVhY2goZXhpc3RpbmdJdGVtID0+IHtcclxuICAgICAgICAgICAgbGV0IGV4aXN0aW5nRWxlbWVudCA9IGV4aXN0aW5nSXRlbS5nZXRBc0VsZW0oMCkudmFsdWU7XHJcbiAgICAgICAgICAgIGxldCByb290Tm9kZSA9IGV4aXN0aW5nRWxlbWVudC5wYXJlbnROb2RlO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBjbnQgPSAwOyBjbnQgPCB0b0luc2VydFBhcmFtcy5sZW5ndGg7IGNudCsrKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgbmV4dFNpYmxpbmc6IEVsZW1lbnQgPSA8YW55PmV4aXN0aW5nRWxlbWVudC5uZXh0U2libGluZztcclxuICAgICAgICAgICAgICAgIHRvSW5zZXJ0UGFyYW1zW2NudF0uZWFjaEVsZW0oaW5zZXJ0RWxlbSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRTaWJsaW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvb3ROb2RlLmluc2VydEJlZm9yZShpbnNlcnRFbGVtLCBuZXh0U2libGluZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nRWxlbWVudCA9IG5leHRTaWJsaW5nO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvb3ROb2RlLmFwcGVuZENoaWxkKGluc2VydEVsZW0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBsZXQgcmVzID0gW107XHJcbiAgICAgICAgcmVzLnB1c2godGhpcyk7XHJcbiAgICAgICAgcmVzID0gcmVzLmNvbmNhdCh0b0luc2VydFBhcmFtcyk7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBEb21RdWVyeSguLi5yZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGluc2VydEJlZm9yZSguLi50b0luc2VydFBhcmFtczogQXJyYXk8RG9tUXVlcnk+KTogRG9tUXVlcnkge1xyXG4gICAgICAgIHRoaXMuZWFjaChleGlzdGluZ0l0ZW0gPT4ge1xyXG4gICAgICAgICAgICBsZXQgZXhpc3RpbmdFbGVtZW50ID0gZXhpc3RpbmdJdGVtLmdldEFzRWxlbSgwKS52YWx1ZTtcclxuICAgICAgICAgICAgbGV0IHJvb3ROb2RlID0gZXhpc3RpbmdFbGVtZW50LnBhcmVudE5vZGU7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGNudCA9IDA7IGNudCA8IHRvSW5zZXJ0UGFyYW1zLmxlbmd0aDsgY250KyspIHtcclxuICAgICAgICAgICAgICAgIHRvSW5zZXJ0UGFyYW1zW2NudF0uZWFjaEVsZW0oaW5zZXJ0RWxlbSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcm9vdE5vZGUuaW5zZXJ0QmVmb3JlKGluc2VydEVsZW0sIGV4aXN0aW5nRWxlbWVudCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGxldCByZXMgPSBbXTtcclxuICAgICAgICByZXMucHVzaCh0aGlzKTtcclxuICAgICAgICByZXMgPSByZXMuY29uY2F0KHRvSW5zZXJ0UGFyYW1zKTtcclxuICAgICAgICByZXR1cm4gbmV3IERvbVF1ZXJ5KC4uLnJlcyk7XHJcbiAgICB9XHJcblxyXG4gICAgb3JFbHNlKC4uLmVsc2VWYWx1ZTogYW55KTogRG9tUXVlcnkge1xyXG4gICAgICAgIGlmICh0aGlzLmlzUHJlc2VudCgpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgRG9tUXVlcnkoLi4uZWxzZVZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb3JFbHNlTGF6eShmdW5jOiAoKSA9PiBhbnkpOiBEb21RdWVyeSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNQcmVzZW50KCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBEb21RdWVyeShmdW5jKCkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwYXJlbnRzKHRhZ05hbWU6IHN0cmluZyk6IERvbVF1ZXJ5IHtcclxuICAgICAgICBjb25zdCByZXRTZXQ6IFNldDxFbGVtZW50PiA9IG5ldyBTZXQoKTtcclxuICAgICAgICBjb25zdCByZXRBcnI6IEFycmF5PEVsZW1lbnQ+ID0gW107XHJcbiAgICAgICAgY29uc3QgbG93ZXJUYWdOYW1lID0gdGFnTmFtZS50b0xvd2VyQ2FzZSgpO1xyXG5cclxuICAgICAgICBsZXQgcmVzb2x2ZUl0ZW0gPSAoaXRlbTogRWxlbWVudCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoKGl0ZW0udGFnTmFtZSB8fCBcIlwiKS50b0xvd2VyQ2FzZSgpID09IGxvd2VyVGFnTmFtZSAmJiAhcmV0U2V0LmhhcyhpdGVtKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0U2V0LmFkZChpdGVtKTtcclxuICAgICAgICAgICAgICAgIHJldEFyci5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5lYWNoRWxlbSgoaXRlbTogRWxlbWVudCkgPT4ge1xyXG4gICAgICAgICAgICB3aGlsZSAoaXRlbS5wYXJlbnROb2RlKSB7XHJcbiAgICAgICAgICAgICAgICBpdGVtID0gPEVsZW1lbnQ+aXRlbS5wYXJlbnROb2RlO1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZUl0ZW0oaXRlbSk7XHJcbiAgICAgICAgICAgICAgICAvL25lc3RlZCBmb3JtcyBub3QgcG9zc2libGUsIHBlcmZvcm1hbmNlIHNob3J0Y3V0XHJcbiAgICAgICAgICAgICAgICBpZiAodGFnTmFtZSA9PSBcImZvcm1cIiAmJiByZXRBcnIubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiBuZXcgRG9tUXVlcnkoLi4ucmV0QXJyKTtcclxuICAgIH1cclxuXHJcbiAgICBjb3B5QXR0cnMoc291cmNlSXRlbTogRG9tUXVlcnkgfCBYTUxRdWVyeSk6IERvbVF1ZXJ5IHtcclxuICAgICAgICBzb3VyY2VJdGVtLmVhY2hFbGVtKChzb3VyY2VOb2RlOiBFbGVtZW50KSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBhdHRyczogQXJyYXk8QXR0cj4gPSBvYmpUb0FycmF5KHNvdXJjZU5vZGUuYXR0cmlidXRlcyk7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgYXR0cnMpIHtcclxuICAgICAgICAgICAgICAgIGxldCB2YWx1ZTogc3RyaW5nID0gaXRlbS52YWx1ZTtcclxuICAgICAgICAgICAgICAgIGxldCBuYW1lOiBzdHJpbmcgPSBpdGVtLm5hbWU7XHJcblxyXG4gICAgICAgICAgICAgICAgc3dpdGNoIChuYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImlkXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaWQudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImRpc2FibGVkXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVzb2x2ZUF0dHJpYnV0ZUhvbGRlcihcImRpc2FibGVkXCIpLmRpc2FibGVkID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJjaGVja2VkXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVzb2x2ZUF0dHJpYnV0ZUhvbGRlcihcImNoZWNrZWRcIikuY2hlY2tlZCA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmF0dHIobmFtZSkudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogcmVzb2x2ZXMgYW4gYXR0cmlidXRlIGhvbGRlciBjb21wYXJlZFxyXG4gICAgICogQHBhcmFtIGF0dHJcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSByZXNvbHZlQXR0cmlidXRlSG9sZGVyKGF0dHJOYW1lOiBzdHJpbmcgPSBcInZhbHVlXCIpOiBIVE1MRm9ybUVsZW1lbnQgfCBhbnkge1xyXG4gICAgICAgIGxldCByZXQgPSBbXTtcclxuICAgICAgICByZXRbYXR0ck5hbWVdID0gbnVsbDtcclxuICAgICAgICByZXR1cm4gKGF0dHJOYW1lIGluIHRoaXMuZ2V0QXNFbGVtKDApLnZhbHVlKSA/XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0QXNFbGVtKDApLnZhbHVlIDpcclxuICAgICAgICAgICAgcmV0O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogb3V0ZXJodG1sIGNvbnZlbmllbmNlIG1ldGhvZFxyXG4gICAgICogYnJvd3NlcnMgb25seSBzdXBwb3J0IGlubmVySFRNTCBidXRcclxuICAgICAqIGZvciBpbnN0YW5jZSBmb3IgeW91ciBqc2YuanMgd2UgaGF2ZSBhIGZ1bGxcclxuICAgICAqIHJlcGxhY2UgcGF0dGVybiB3aGljaCBuZWVkcyBvdXRlckhUTUwgcHJvY2Vzc2luZ1xyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBtYXJrdXBcclxuICAgICAqIEBwYXJhbSBydW5FbWJlZGRlZFNjcmlwdHNcclxuICAgICAqIEBwYXJhbSBydW5FbWJlZGRlZENzc1xyXG4gICAgICovXHJcbiAgICBvdXRlckhUTUwobWFya3VwOiBzdHJpbmcsIHJ1bkVtYmVkZGVkU2NyaXB0cyA/OiBib29sZWFuLCBydW5FbWJlZGRlZENzcyA/OiBib29sZWFuKTogRG9tUXVlcnkge1xyXG4gICAgICAgIGlmKHRoaXMuaXNBYnNlbnQoKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgbm9kZXMgPSBEb21RdWVyeS5mcm9tTWFya3VwKG1hcmt1cCk7XHJcbiAgICAgICAgbGV0IHJlcyA9IFtdO1xyXG4gICAgICAgIGxldCB0b1JlcGxhY2UgPSB0aGlzLmdldEFzRWxlbSgwKS52YWx1ZTtcclxuICAgICAgICBsZXQgZmlyc3RJbnNlcnQgPSBub2Rlcy5nZXQoMCk7XHJcbiAgICAgICAgbGV0IHBhcmVudE5vZGUgPSB0b1JlcGxhY2UucGFyZW50Tm9kZTtcclxuICAgICAgICBsZXQgcmVwbGFjZWQgPSBmaXJzdEluc2VydC5nZXRBc0VsZW0oMCkudmFsdWU7XHJcbiAgICAgICAgcGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQocmVwbGFjZWQsIHRvUmVwbGFjZSk7XHJcbiAgICAgICAgcmVzLnB1c2gobmV3IERvbVF1ZXJ5KHJlcGxhY2VkKSk7XHJcbiAgICAgICAgLy9ubyByZXBsYWNlbWVudCBwb3NzaWJsZVxyXG4gICAgICAgIGlmKHRoaXMuaXNBYnNlbnQoKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBpbnNlcnRBZGRpdGlvbmFsSXRlbXMgPSBbXTtcclxuXHJcbiAgICAgICAgaWYgKG5vZGVzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgaW5zZXJ0QWRkaXRpb25hbEl0ZW1zID0gaW5zZXJ0QWRkaXRpb25hbEl0ZW1zLmNvbmNhdCguLi5ub2Rlcy52YWx1ZXMuc2xpY2UoMSkpO1xyXG4gICAgICAgICAgICByZXMucHVzaChEb21RdWVyeS5ieUlkKHJlcGxhY2VkKS5pbnNlcnRBZnRlcihuZXcgRG9tUXVlcnkoLi4uaW5zZXJ0QWRkaXRpb25hbEl0ZW1zKSkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHJ1bkVtYmVkZGVkU2NyaXB0cykge1xyXG4gICAgICAgICAgICB0aGlzLnJ1blNjcmlwdHMoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHJ1bkVtYmVkZGVkQ3NzKSB7XHJcbiAgICAgICAgICAgIHRoaXMucnVuQ3NzKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gbm9kZXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSdW4gdGhyb3VnaCB0aGUgZ2l2ZW4gbm9kZXMgaW4gdGhlIERvbVF1ZXJ5IGV4ZWN1dGUgdGhlIGlubGluZSBzY3JpcHRzXHJcbiAgICAgKiBAcGFyYW0gd2hpbHRlTGlzdGVkOiBvcHRpb25hbCB3aGl0ZWxpc3QgZnVuY3Rpb24gd2hpY2ggY2FuIGZpbHRlciBvdXQgc2NyaXB0IHRhZ3Mgd2hpY2ggYXJlIG5vdCBwcm9jZXNzZWRcclxuICAgICAqIGRlZmF1bHRzIHRvIHRoZSBzdGFuZGFyZCBqc2YuanMgZXhjbHVzaW9uICh3ZSB1c2UgdGhpcyBjb2RlIGZvciBteWZhY2VzKVxyXG4gICAgICovXHJcbiAgICBydW5TY3JpcHRzKHdoaWx0ZUxpc3RlZDogKHZhbDogc3RyaW5nKSA9PiBib29sZWFuID0gREVGQVVMVF9KU0ZfV0hJVEVMSVNUKTogRG9tUXVlcnkge1xyXG4gICAgICAgIGxldCBmaW5hbFNjcmlwdHMgPSBbXSxcclxuICAgICAgICAgICAgZXF1aSA9IGVxdWFsc0lnbm9yZUNhc2UsXHJcbiAgICAgICAgICAgIGV4ZWNTY3JwdCA9IChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgdGFnTmFtZSA9IGl0ZW0udGFnTmFtZTtcclxuICAgICAgICAgICAgICAgIGxldCBpdGVtVHlwZSA9IGl0ZW0udHlwZSB8fCBcIlwiO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRhZ05hbWUgJiYgZXF1aSh0YWdOYW1lLCBcInNjcmlwdFwiKSAmJlxyXG4gICAgICAgICAgICAgICAgICAgIChpdGVtVHlwZSA9PT0gXCJcIiB8fCBlcXVpKGl0ZW1UeXBlLCBcInRleHQvamF2YXNjcmlwdFwiKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlcXVpKGl0ZW1UeXBlLCBcImphdmFzY3JpcHRcIikgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXF1aShpdGVtVHlwZSwgXCJ0ZXh0L2VjbWFzY3JpcHRcIikgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXF1aShpdGVtVHlwZSwgXCJlY21hc2NyaXB0XCIpKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBzcmMgPSBpdGVtLmdldEF0dHJpYnV0ZSgnc3JjJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCd1bmRlZmluZWQnICE9IHR5cGVvZiBzcmNcclxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgbnVsbCAhPSBzcmNcclxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgc3JjLmxlbmd0aCA+IDBcclxuICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy93ZSBoYXZlIHRvIG1vdmUgdGhpcyBpbnRvIGFuIGlubmVyIGlmIGJlY2F1c2UgY2hyb21lIG90aGVyd2lzZSBjaG9rZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy9kdWUgdG8gY2hhbmdpbmcgdGhlIGFuZCBvcmRlciBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gbGVmdCB0byByaWdodFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL2lmIGpzZi5qcyBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQgd2UgZG8gbm90IHJlcGxhY2UgaXQgYW55bW9yZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAod2hpbHRlTGlzdGVkKHNyYykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaW5hbFNjcmlwdHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9zY3JpcHQgc291cmNlIG1lYW5zIHdlIGhhdmUgdG8gZXZhbCB0aGUgZXhpc3RpbmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3NjcmlwdHMgYmVmb3JlIHJ1bm5pbmcgdGhlIGluY2x1ZGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdsb2JhbEV2YWwoZmluYWxTY3JpcHRzLmpvaW4oXCJcXG5cIikpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbFNjcmlwdHMgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZFNjcmlwdEV2YWwoc3JjLCAwLCBcIlVURi04XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVtYmVkZGVkIHNjcmlwdCBhdXRvIGV2YWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy9UT0RPIHRoaXMgcHJvYmFibHkgbmVlZHMgdG8gYmUgY2hhbmdlZCBkdWUgdG8gb3VyIG5ldyBwYXJzaW5nIHN0cnVjdHVyZXNcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy9wcm9iYWJseSBub3QgbmVlZGVkIGFueW1vcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGV2YWxUZXh0ID0gdHJpbShpdGVtLnRleHQgfHwgaXRlbS5pbm5lclRleHQgfHwgaXRlbS5pbm5lckhUTUwpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZ28gPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGdvKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2YWxUZXh0LnN1YnN0cmluZygwLCA0KSA9PSBcIjwhLS1cIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2YWxUZXh0ID0gZXZhbFRleHQuc3Vic3RyaW5nKDQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldmFsVGV4dC5zdWJzdHJpbmcoMCwgNCkgPT0gXCIvLzwhLS1cIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2YWxUZXh0ID0gZXZhbFRleHQuc3Vic3RyaW5nKDYpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldmFsVGV4dC5zdWJzdHJpbmcoMCwgMTEpID09IFwiLy88IVtDREFUQVtcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2YWxUZXh0ID0gZXZhbFRleHQuc3Vic3RyaW5nKDExKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2UgaGF2ZSB0byBydW4gdGhlIHNjcmlwdCB1bmRlciBhIGdsb2JhbCBjb250ZXh0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vd2Ugc3RvcmUgdGhlIHNjcmlwdCBmb3IgbGVzcyBjYWxscyB0byBldmFsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsU2NyaXB0cy5wdXNoKGV2YWxUZXh0KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGxldCBzY3JpcHRFbGVtZW50cyA9IG5ldyBEb21RdWVyeSh0aGlzLmZpbHRlclNlbGVjdG9yKFwic2NyaXB0XCIpLCB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwoXCJzY3JpcHRcIikpO1xyXG4gICAgICAgICAgICAvL3NjcmlwdCBleGVjdXRpb24gb3JkZXIgYnkgcmVsYXRpdmUgcG9zIGluIHRoZWlyIGRvbSB0cmVlXHJcbiAgICAgICAgICAgIHNjcmlwdEVsZW1lbnRzLnN0cmVhbVxyXG4gICAgICAgICAgICAgICAgLmZsYXRNYXAoaXRlbSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmVhbS5vZihpdGVtLnZhbHVlcylcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAuc29ydCgobm9kZTEsIG5vZGUyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGUxLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKG5vZGUyKSAtIDM7IC8vcHJlY2VkaW5nIDIsIGZvbGxvd2luZyA9PSA0XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgLmVhY2goaXRlbSA9PiBleGVjU2NycHQoaXRlbSkpO1xyXG5cclxuICAgICAgICAgICAgaWYgKGZpbmFsU2NyaXB0cy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2xvYmFsRXZhbChmaW5hbFNjcmlwdHMuam9pbihcIlxcblwiKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGlmICh3aW5kb3cuY29uc29sZSAmJiB3aW5kb3cuY29uc29sZS5lcnJvcikge1xyXG4gICAgICAgICAgICAgICAgLy9ub3Qgc3VyZSBpZiB3ZVxyXG4gICAgICAgICAgICAgICAgLy9zaG91bGQgdXNlIG91ciBzdGFuZGFyZFxyXG4gICAgICAgICAgICAgICAgLy9lcnJvciBtZWNoYW5pc21zIGhlcmVcclxuICAgICAgICAgICAgICAgIC8vYmVjYXVzZSBpbiB0aGUgaGVhZCBhcHBlbmRpeFxyXG4gICAgICAgICAgICAgICAgLy9tZXRob2Qgb25seSBhIGNvbnNvbGVcclxuICAgICAgICAgICAgICAgIC8vZXJyb3Igd291bGQgYmUgcmFpc2VkIGFzIHdlbGxcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZS5tZXNzYWdlIHx8IGUuZGVzY3JpcHRpb24pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBmaW5hbGx5IHtcclxuICAgICAgICAgICAgLy90aGUgdXN1YWwgaWU2IGZpeCBjb2RlXHJcbiAgICAgICAgICAgIC8vdGhlIElFNiBnYXJiYWdlIGNvbGxlY3RvciBpcyBicm9rZW5cclxuICAgICAgICAgICAgLy9udWxsaW5nIGNsb3N1cmVzIGhlbHBzIHNvbWV3aGF0IHRvIHJlZHVjZVxyXG4gICAgICAgICAgICAvL21lbSBsZWFrcywgd2hpY2ggYXJlIGltcG9zc2libGUgdG8gYXZvaWRcclxuICAgICAgICAgICAgLy9hdCB0aGlzIGJyb3dzZXJcclxuICAgICAgICAgICAgZXhlY1NjcnB0ID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgcnVuQ3NzKCk6IERvbVF1ZXJ5IHtcclxuXHJcbiAgICAgICAgY29uc3QgYXBwbHlTdHlsZSA9IChpdGVtOiBFbGVtZW50LCBzdHlsZTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgbmV3U1M6IEhUTUxTdHlsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImhlYWRcIilbMF0uYXBwZW5kQ2hpbGQobmV3U1MpO1xyXG5cclxuICAgICAgICAgICAgICAgIGxldCBzdHlsZVNoZWV0ID0gbmV3U1Muc2hlZXQgPz8gKDxhbnk+bmV3U1MpLnN0eWxlU2hlZXQ7XHJcblxyXG4gICAgICAgICAgICAgICAgbmV3U1Muc2V0QXR0cmlidXRlKFwicmVsXCIsIGl0ZW0uZ2V0QXR0cmlidXRlKFwicmVsXCIpID8/IFwic3R5bGVzaGVldFwiKTtcclxuICAgICAgICAgICAgICAgIG5ld1NTLnNldEF0dHJpYnV0ZShcInR5cGVcIiwgaXRlbS5nZXRBdHRyaWJ1dGUoXCJ0eXBlXCIpID8/IFwidGV4dC9jc3NcIik7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHN0eWxlU2hlZXQ/LmNzc1RleHQgPz8gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgICAgICBzdHlsZVNoZWV0LmNzc1RleHQgPSBzdHlsZTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV3U1MuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc3R5bGUpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgIGV4ZWNDc3MgPSAoaXRlbTogRWxlbWVudCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdGFnTmFtZSA9IGl0ZW0udGFnTmFtZTtcclxuICAgICAgICAgICAgICAgIGlmICh0YWdOYW1lICYmIGVxdWFsc0lnbm9yZUNhc2UodGFnTmFtZSwgXCJsaW5rXCIpICYmIGVxdWFsc0lnbm9yZUNhc2UoaXRlbS5nZXRBdHRyaWJ1dGUoXCJ0eXBlXCIpLCBcInRleHQvY3NzXCIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXBwbHlTdHlsZShpdGVtLCBcIkBpbXBvcnQgdXJsKCdcIiArIGl0ZW0uZ2V0QXR0cmlidXRlKFwiaHJlZlwiKSArIFwiJyk7XCIpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0YWdOYW1lICYmIGVxdWFsc0lnbm9yZUNhc2UodGFnTmFtZSwgXCJzdHlsZVwiKSAmJiBlcXVhbHNJZ25vcmVDYXNlKGl0ZW0uZ2V0QXR0cmlidXRlKFwidHlwZVwiKSwgXCJ0ZXh0L2Nzc1wiKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpbm5lclRleHQgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICAvL2NvbXBsaWFudCBicm93c2VycyBrbm93IGNoaWxkIG5vZGVzXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNoaWxkTm9kZXM6IE5vZGVMaXN0ID0gaXRlbS5jaGlsZE5vZGVzO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZE5vZGVzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxlbiA9IGNoaWxkTm9kZXMubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBjbnQgPSAwOyBjbnQgPCBsZW47IGNudCsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbm5lclRleHQucHVzaCgoPEVsZW1lbnQ+Y2hpbGROb2Rlc1tjbnRdKS5pbm5lckhUTUwgfHwgKDxDaGFyYWN0ZXJEYXRhPmNoaWxkTm9kZXNbY250XSkuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgLy9ub24gY29tcGxpYW50IG9uZXMgaW5uZXJIVE1MXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtLmlubmVySFRNTCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbm5lclRleHQucHVzaChpdGVtLmlubmVySFRNTCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBhcHBseVN0eWxlKGl0ZW0sIGlubmVyVGV4dC5qb2luKFwiXCIpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgY29uc3Qgc2NyaXB0RWxlbWVudHM6IERvbVF1ZXJ5ID0gbmV3IERvbVF1ZXJ5KHRoaXMuZmlsdGVyU2VsZWN0b3IoXCJsaW5rLCBzdHlsZVwiKSwgdGhpcy5xdWVyeVNlbGVjdG9yQWxsKFwibGluaywgc3R5bGVcIikpO1xyXG5cclxuICAgICAgICBzY3JpcHRFbGVtZW50cy5zdHJlYW1cclxuICAgICAgICAgICAgLmZsYXRNYXAoaXRlbSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gU3RyZWFtLm9mKGl0ZW0udmFsdWVzKVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAuc29ydCgobm9kZTEsIG5vZGUyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbm9kZTEuY29tcGFyZURvY3VtZW50UG9zaXRpb24obm9kZTIpIC0gMzsgLy9wcmVjZWRpbmcgMiwgZm9sbG93aW5nID09IDRcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLmVhY2goaXRlbSA9PiBleGVjQ3NzKGl0ZW0pKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBmaXJlcyBhIGNsaWNrIGV2ZW50IG9uIHRoZSB1bmRlcmx5aW5nIGRvbSBlbGVtZW50c1xyXG4gICAgICovXHJcbiAgICBjbGljaygpOiBEb21RdWVyeSB7XHJcbiAgICAgICAgdGhpcy5maXJlRXZlbnQoXCJjbGlja1wiKTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICBhZGRFdmVudExpc3RlbmVyKHR5cGU6IHN0cmluZywgbGlzdGVuZXI6IChldnQ6IEV2ZW50KSA9PiB2b2lkLCBvcHRpb25zPzogYm9vbGVhbiB8IEV2ZW50TGlzdGVuZXJPcHRpb25zKTogRG9tUXVlcnkge1xyXG4gICAgICAgIHRoaXMuZWFjaEVsZW0oKG5vZGU6IEVsZW1lbnQpID0+IHtcclxuICAgICAgICAgICAgbm9kZS5hZGRFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyLCBvcHRpb25zKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVFdmVudExpc3RlbmVyKHR5cGU6IHN0cmluZywgbGlzdGVuZXI6IChldnQ6IEV2ZW50KSA9PiB2b2lkLCBvcHRpb25zPzogYm9vbGVhbiB8IEV2ZW50TGlzdGVuZXJPcHRpb25zKTogRG9tUXVlcnkge1xyXG4gICAgICAgIHRoaXMuZWFjaEVsZW0oKG5vZGU6IEVsZW1lbnQpID0+IHtcclxuICAgICAgICAgICAgbm9kZS5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyLCBvcHRpb25zKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGZpcmVzIGFuIGV2ZW50XHJcbiAgICAgKi9cclxuICAgIGZpcmVFdmVudChldmVudE5hbWU6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuZWFjaEVsZW0oKG5vZGU6IEVsZW1lbnQpID0+IHtcclxuICAgICAgICAgICAgdmFyIGRvYztcclxuICAgICAgICAgICAgaWYgKG5vZGUub3duZXJEb2N1bWVudCkge1xyXG4gICAgICAgICAgICAgICAgZG9jID0gbm9kZS5vd25lckRvY3VtZW50O1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGUubm9kZVR5cGUgPT0gOSkge1xyXG4gICAgICAgICAgICAgICAgLy8gdGhlIG5vZGUgbWF5IGJlIHRoZSBkb2N1bWVudCBpdHNlbGYsIG5vZGVUeXBlIDkgPSBET0NVTUVOVF9OT0RFXHJcbiAgICAgICAgICAgICAgICBkb2MgPSBub2RlO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBub2RlIHBhc3NlZCB0byBmaXJlRXZlbnQ6IFwiICsgbm9kZS5pZCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChub2RlLmRpc3BhdGNoRXZlbnQpIHtcclxuICAgICAgICAgICAgICAgIC8vIEdlY2tvLXN0eWxlIGFwcHJvYWNoIChub3cgdGhlIHN0YW5kYXJkKSB0YWtlcyBtb3JlIHdvcmtcclxuICAgICAgICAgICAgICAgIHZhciBldmVudENsYXNzID0gXCJcIjtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBEaWZmZXJlbnQgZXZlbnRzIGhhdmUgZGlmZmVyZW50IGV2ZW50IGNsYXNzZXMuXHJcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIHN3aXRjaCBzdGF0ZW1lbnQgY2FuJ3QgbWFwIGFuIGV2ZW50TmFtZSB0byBhbiBldmVudENsYXNzLFxyXG4gICAgICAgICAgICAgICAgLy8gdGhlIGV2ZW50IGZpcmluZyBpcyBnb2luZyB0byBmYWlsLlxyXG4gICAgICAgICAgICAgICAgc3dpdGNoIChldmVudE5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiY2xpY2tcIjogLy8gRGlzcGF0Y2hpbmcgb2YgJ2NsaWNrJyBhcHBlYXJzIHRvIG5vdCB3b3JrIGNvcnJlY3RseSBpbiBTYWZhcmkuIFVzZSAnbW91c2Vkb3duJyBvciAnbW91c2V1cCcgaW5zdGVhZC5cclxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwibW91c2Vkb3duXCI6XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcIm1vdXNldXBcIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRDbGFzcyA9IFwiTW91c2VFdmVudHNcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJmb2N1c1wiOlxyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJjaGFuZ2VcIjpcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiYmx1clwiOlxyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJzZWxlY3RcIjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRDbGFzcyA9IFwiSFRNTEV2ZW50c1wiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgXCJmaXJlRXZlbnQ6IENvdWxkbid0IGZpbmQgYW4gZXZlbnQgY2xhc3MgZm9yIGV2ZW50ICdcIiArIGV2ZW50TmFtZSArIFwiJy5cIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBsZXQgZXZlbnQgPSBkb2MuY3JlYXRlRXZlbnQoZXZlbnRDbGFzcyk7XHJcbiAgICAgICAgICAgICAgICBldmVudC5pbml0RXZlbnQoZXZlbnROYW1lLCB0cnVlLCB0cnVlKTsgLy8gQWxsIGV2ZW50cyBjcmVhdGVkIGFzIGJ1YmJsaW5nIGFuZCBjYW5jZWxhYmxlLlxyXG5cclxuICAgICAgICAgICAgICAgIGV2ZW50LnN5bnRoZXRpYyA9IHRydWU7IC8vIGFsbG93IGRldGVjdGlvbiBvZiBzeW50aGV0aWMgZXZlbnRzXHJcbiAgICAgICAgICAgICAgICAvLyBUaGUgc2Vjb25kIHBhcmFtZXRlciBzYXlzIGdvIGFoZWFkIHdpdGggdGhlIGRlZmF1bHQgYWN0aW9uXHJcbiAgICAgICAgICAgICAgICBub2RlLmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKCg8YW55Pm5vZGUpLmZpcmVFdmVudCkge1xyXG4gICAgICAgICAgICAgICAgLy8gSUUtb2xkIHNjaG9vbCBzdHlsZSwgeW91IGNhbiBkcm9wIHRoaXMgaWYgeW91IGRvbid0IG5lZWQgdG8gc3VwcG9ydCBJRTggYW5kIGxvd2VyXHJcbiAgICAgICAgICAgICAgICB2YXIgZXZlbnQgPSBkb2MuY3JlYXRlRXZlbnRPYmplY3QoKTtcclxuICAgICAgICAgICAgICAgIGV2ZW50LnN5bnRoZXRpYyA9IHRydWU7IC8vIGFsbG93IGRldGVjdGlvbiBvZiBzeW50aGV0aWMgZXZlbnRzXHJcbiAgICAgICAgICAgICAgICAoPGFueT5ub2RlKS5maXJlRXZlbnQoXCJvblwiICsgZXZlbnROYW1lLCBldmVudCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIHRleHRDb250ZW50KGpvaW5zdHI6IHN0cmluZyA9IFwiXCIpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnN0cmVhbVxyXG4gICAgICAgICAgICAubWFwKCh2YWx1ZTogRG9tUXVlcnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBpdGVtID0gdmFsdWUuZ2V0QXNFbGVtKDApLm9yRWxzZUxhenkoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiA8YW55PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dENvbnRlbnQ6IFwiXCJcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgfSkudmFsdWU7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKDxhbnk+aXRlbSkudGV4dENvbnRlbnQgfHwgXCJcIjtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnJlZHVjZSgodGV4dDEsIHRleHQyKSA9PiB0ZXh0MSArIGpvaW5zdHIgKyB0ZXh0MiwgXCJcIikudmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgaW5uZXJUZXh0KGpvaW5zdHI6IHN0cmluZyA9IFwiXCIpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnN0cmVhbVxyXG4gICAgICAgICAgICAubWFwKCh2YWx1ZTogRG9tUXVlcnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBpdGVtID0gdmFsdWUuZ2V0QXNFbGVtKDApLm9yRWxzZUxhenkoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiA8YW55PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgaW5uZXJUZXh0OiBcIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIH0pLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuICg8YW55Pml0ZW0pLmlubmVyVGV4dCB8fCBcIlwiO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAucmVkdWNlKCh0ZXh0MSwgdGV4dDIpID0+IFt0ZXh0MSwgdGV4dDJdLmpvaW4oam9pbnN0ciksIFwiXCIpLnZhbHVlO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGVuY29kZXMgYWxsIGlucHV0IGVsZW1lbnRzIHByb3Blcmx5IGludG8gcmVzcGVjdGl2ZVxyXG4gICAgICogY29uZmlnIGVudHJpZXMsIHRoaXMgY2FuIGJlIHVzZWRcclxuICAgICAqIGZvciBsZWdhY3kgc3lzdGVtcywgZm9yIG5ld2VyIHVzZWNhc2VzLCB1c2UgdGhlXHJcbiAgICAgKiBIVE1MNSBGb3JtIGNsYXNzIHdoaWNoIGFsbCBuZXdlciBicm93c2VycyBwcm92aWRlXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHRvTWVyZ2Ugb3B0aW9uYWwgY29uZmlnIHdoaWNoIGNhbiBiZSBtZXJnZWQgaW5cclxuICAgICAqIEByZXR1cm4gYSBjb3B5IHBmXHJcbiAgICAgKi9cclxuICAgIGVuY29kZUZvcm1FbGVtZW50KHRvTWVyZ2UgPSBuZXcgQ29uZmlnKHt9KSk6IENvbmZpZyB7XHJcblxyXG4gICAgICAgIC8vYnJvd3NlciBiZWhhdmlvciBubyBlbGVtZW50IG5hbWUgbm8gZW5jb2RpbmcgKG5vcm1hbCBzdWJtaXQgZmFpbHMgaW4gdGhhdCBjYXNlKVxyXG4gICAgICAgIC8vaHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9NWUZBQ0VTLTI4NDdcclxuICAgICAgICBpZiAodGhpcy5uYW1lLmlzQWJzZW50KCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy9sZXRzIGtlZXAgaXQgc2lkZWZmZWN0cyBmcmVlXHJcbiAgICAgICAgbGV0IHRhcmdldCA9IHRvTWVyZ2Uuc2hhbGxvd0NvcHk7XHJcblxyXG4gICAgICAgIHRoaXMuZWFjaCgoZWxlbWVudDogRG9tUXVlcnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQubmFtZS5pc0Fic2VudCgpKSB7Ly9ubyBuYW1lLCBubyBlbmNvZGluZ1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxldCBuYW1lID0gZWxlbWVudC5uYW1lLnZhbHVlO1xyXG4gICAgICAgICAgICBsZXQgdGFnTmFtZSA9IGVsZW1lbnQudGFnTmFtZS5vckVsc2UoXCJfX25vbmVfX1wiKS52YWx1ZS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgICAgICBsZXQgZWxlbVR5cGUgPSBlbGVtZW50LnR5cGUub3JFbHNlKFwiX19ub25lX19cIikudmFsdWUudG9Mb3dlckNhc2UoKTtcclxuXHJcbiAgICAgICAgICAgIGVsZW1UeXBlID0gZWxlbVR5cGUudG9Mb3dlckNhc2UoKTtcclxuXHJcbiAgICAgICAgICAgIC8vIHJvdXRpbmUgZm9yIGFsbCBlbGVtZW50c1xyXG4gICAgICAgICAgICAvLyBydWxlczpcclxuICAgICAgICAgICAgLy8gLSBwcm9jZXNzIG9ubHkgaW5wdXRzLCB0ZXh0YXJlYXMgYW5kIHNlbGVjdHNcclxuICAgICAgICAgICAgLy8gLSBlbGVtZW50cyBtdWVzdCBoYXZlIGF0dHJpYnV0ZSBcIm5hbWVcIlxyXG4gICAgICAgICAgICAvLyAtIGVsZW1lbnRzIG11c3Qgbm90IGJlIGRpc2FibGVkXHJcbiAgICAgICAgICAgIGlmICgoKHRhZ05hbWUgPT0gXCJpbnB1dFwiIHx8IHRhZ05hbWUgPT0gXCJ0ZXh0YXJlYVwiIHx8IHRhZ05hbWUgPT0gXCJzZWxlY3RcIikgJiZcclxuICAgICAgICAgICAgICAgIChuYW1lICE9IG51bGwgJiYgbmFtZSAhPSBcIlwiKSkgJiYgIWVsZW1lbnQuZGlzYWJsZWQpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyByb3V0aW5lIGZvciBzZWxlY3QgZWxlbWVudHNcclxuICAgICAgICAgICAgICAgIC8vIHJ1bGVzOlxyXG4gICAgICAgICAgICAgICAgLy8gLSBpZiBzZWxlY3Qtb25lIGFuZCB2YWx1ZS1BdHRyaWJ1dGUgZXhpc3QgPT4gXCJuYW1lPXZhbHVlXCJcclxuICAgICAgICAgICAgICAgIC8vIChhbHNvIGlmIHZhbHVlIGVtcHR5ID0+IFwibmFtZT1cIilcclxuICAgICAgICAgICAgICAgIC8vIC0gaWYgc2VsZWN0LW9uZSBhbmQgdmFsdWUtQXR0cmlidXRlIGRvbid0IGV4aXN0ID0+XHJcbiAgICAgICAgICAgICAgICAvLyBcIm5hbWU9RGlzcGxheVZhbHVlXCJcclxuICAgICAgICAgICAgICAgIC8vIC0gaWYgc2VsZWN0IG11bHRpIGFuZCBtdWx0cGxlIHNlbGVjdGVkID0+IFwibmFtZT12YWx1ZTEmbmFtZT12YWx1ZTJcIlxyXG4gICAgICAgICAgICAgICAgLy8gLSBpZiBzZWxlY3QgYW5kIHNlbGVjdGVkSW5kZXg9LTEgZG9uJ3Qgc3VibWl0XHJcbiAgICAgICAgICAgICAgICBpZiAodGFnTmFtZSA9PSBcInNlbGVjdFwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gc2VsZWN0ZWRJbmRleCBtdXN0IGJlID49IDAgc2VpbiB0byBiZSBzdWJtaXR0ZXRcclxuICAgICAgICAgICAgICAgICAgICBsZXQgc2VsZWN0RWxlbTogSFRNTFNlbGVjdEVsZW1lbnQgPSA8SFRNTFNlbGVjdEVsZW1lbnQ+ZWxlbWVudC5nZXRBc0VsZW0oMCkudmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdEVsZW0uc2VsZWN0ZWRJbmRleCA+PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB1TGVuID0gc2VsZWN0RWxlbS5vcHRpb25zLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgdSA9IDA7IHUgPCB1TGVuOyB1KyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZpbmQgYWxsIHNlbGVjdGVkIG9wdGlvbnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vbGV0IHN1YkJ1ZiA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdEVsZW0ub3B0aW9uc1t1XS5zZWxlY3RlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBlbGVtZW50T3B0aW9uID0gc2VsZWN0RWxlbS5vcHRpb25zW3VdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5hc3NpZ24obmFtZSkudmFsdWUgPSAoZWxlbWVudE9wdGlvbi5nZXRBdHRyaWJ1dGUoXCJ2YWx1ZVwiKSAhPSBudWxsKSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRPcHRpb24udmFsdWUgOiBlbGVtZW50T3B0aW9uLnRleHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gcm91dGluZSBmb3IgcmVtYWluaW5nIGVsZW1lbnRzXHJcbiAgICAgICAgICAgICAgICAvLyBydWxlczpcclxuICAgICAgICAgICAgICAgIC8vIC0gZG9uJ3Qgc3VibWl0IG5vIHNlbGVjdHMgKHByb2Nlc3NlZCBhYm92ZSksIGJ1dHRvbnMsIHJlc2V0IGJ1dHRvbnMsIHN1Ym1pdCBidXR0b25zLFxyXG4gICAgICAgICAgICAgICAgLy8gLSBzdWJtaXQgY2hlY2tib3hlcyBhbmQgcmFkaW8gaW5wdXRzIG9ubHkgaWYgY2hlY2tlZFxyXG4gICAgICAgICAgICAgICAgaWYgKCh0YWdOYW1lICE9IFwic2VsZWN0XCIgJiYgZWxlbVR5cGUgIT0gXCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICYmIGVsZW1UeXBlICE9IFwicmVzZXRcIiAmJiBlbGVtVHlwZSAhPSBcInN1Ym1pdFwiICYmIGVsZW1UeXBlICE9IFwiaW1hZ2VcIilcclxuICAgICAgICAgICAgICAgICAgICAmJiAoKGVsZW1UeXBlICE9IFwiY2hlY2tib3hcIiAmJiBlbGVtVHlwZSAhPSBcInJhZGlvXCIpIHx8IGVsZW1lbnQuY2hlY2tlZCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZmlsZXM6IGFueSA9ICg8YW55PmVsZW1lbnQudmFsdWUpLmZpbGVzO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWxlcyAmJiBmaWxlcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy94aHIgbGV2ZWwyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5hc3NpZ24obmFtZSkudmFsdWUgPSBmaWxlc1swXTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuYXNzaWduKG5hbWUpLnZhbHVlID0gZWxlbWVudC5pbnB1dFZhbHVlLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRhcmdldDtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGNEQVRBQXNTdHJpbmcoKTogc3RyaW5nIHtcclxuICAgICAgICBsZXQgY0RhdGFCbG9jayA9IFtdO1xyXG4gICAgICAgIC8vIHJlc3BvbnNlIG1heSBjb250YWluIHNldmVyYWwgYmxvY2tzXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RyZWFtXHJcbiAgICAgICAgICAgIC5mbGF0TWFwKGl0ZW0gPT4gaXRlbS5jaGlsZE5vZGVzLnN0cmVhbSkucmVkdWNlKChyZWR1Y2VkOiBBcnJheTxhbnk+LCBpdGVtOiBEb21RdWVyeSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmVkdWNlZC5wdXNoKCg8YW55Pml0ZW0/LnZhbHVlPy52YWx1ZSk/LmRhdGEgPz8gXCJcIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVkdWNlZDtcclxuICAgICAgICAgICAgfSwgW10pLnZhbHVlLmpvaW4oXCJcIik7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHN1Yk5vZGVzKGZyb206IG51bWJlciwgdG8/OiBudW1iZXIpOiBEb21RdWVyeSB7XHJcbiAgICAgICAgaWYgKE9wdGlvbmFsLmZyb21OdWxsYWJsZSh0bykuaXNBYnNlbnQoKSkge1xyXG4gICAgICAgICAgICB0byA9IHRoaXMubGVuZ3RoO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbmV3IERvbVF1ZXJ5KC4uLnRoaXMucm9vdE5vZGUuc2xpY2UoZnJvbSwgTWF0aC5taW4odG8sIHRoaXMubGVuZ3RoKSkpO1xyXG4gICAgfVxyXG5cclxuICAgIF9saW1pdHMgPSAtMTtcclxuXHJcbiAgICBsaW1pdHMoZW5kOiBudW1iZXIpOiBJU3RyZWFtPERvbVF1ZXJ5PiB7XHJcbiAgICAgICAgdGhpcy5fbGltaXRzID0gZW5kO1xyXG4gICAgICAgIHJldHVybiA8YW55PnRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgLy8tLSBpbnRlcm5hbGx5IGV4cG9zZWQgbWV0aG9kcyBuZWVkZWQgZm9yIHRoZSBpbnRlcmNvbm5lY3Rpdml0eVxyXG4gICAgaGFzTmV4dCgpIHtcclxuICAgICAgICBsZXQgaXNMaW1pdHNSZWFjaGVkID0gdGhpcy5fbGltaXRzICE9IC0xICYmIHRoaXMucG9zID49IHRoaXMuX2xpbWl0cyAtIDE7XHJcbiAgICAgICAgbGV0IGlzRW5kT2ZBcnJheSA9IHRoaXMucG9zID49IHRoaXMudmFsdWVzLmxlbmd0aCAtIDE7XHJcbiAgICAgICAgcmV0dXJuICEoaXNMaW1pdHNSZWFjaGVkIHx8XHJcbiAgICAgICAgICAgIGlzRW5kT2ZBcnJheSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmV4dCgpOiBEb21RdWVyeSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmhhc05leHQoKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5wb3MrKztcclxuICAgICAgICByZXR1cm4gbmV3IERvbVF1ZXJ5KHRoaXMudmFsdWVzW3RoaXMucG9zXSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVzZXQoKSB7XHJcbiAgICAgICAgdGhpcy5wb3MgPSAtMTtcclxuICAgIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIFZhcmlvdXMgY29sbGVjdG9yc1xyXG4gKiB3aGljaCBjYW4gYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIFN0cmVhbXNcclxuICovXHJcblxyXG4vKipcclxuICogQSBjb2xsZWN0b3Igd2hpY2ggYnVuZGxlcyBhIGZ1bGwgZG9tIHF1ZXJ5IHN0cmVhbSBpbnRvIGEgc2luZ2xlIGRvbSBxdWVyeSBlbGVtZW50XHJcbiAqXHJcbiAqIFRoaXMgY29ubmVjdHMgYmFzaWNhbGx5IG91ciBzdHJlYW0gYmFjayBpbnRvIERvbVF1ZXJ5XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgRG9tUXVlcnlDb2xsZWN0b3IgaW1wbGVtZW50cyBJQ29sbGVjdG9yPERvbVF1ZXJ5LCBEb21RdWVyeT4ge1xyXG5cclxuICAgIGRhdGE6IERvbVF1ZXJ5W10gPSBbXTtcclxuXHJcbiAgICBjb2xsZWN0KGVsZW1lbnQ6IERvbVF1ZXJ5KSB7XHJcbiAgICAgICAgdGhpcy5kYXRhLnB1c2goZWxlbWVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGZpbmFsVmFsdWUoKTogRG9tUXVlcnkge1xyXG4gICAgICAgIHJldHVybiBuZXcgRG9tUXVlcnkoLi4udGhpcy5kYXRhKTtcclxuICAgIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIGFiYnJldmlhdGlvbiBmb3IgRG9tUXVlcnlcclxuICovXHJcbmV4cG9ydCBjb25zdCBEUSA9IERvbVF1ZXJ5O1xyXG5leHBvcnQgdHlwZSBEUSA9IERvbVF1ZXJ5O1xyXG4iXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7QUFjQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUVBO0FBRUE7QUFBQTs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQVJBO0FBVUE7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBOUJBO0FBZ0NBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFtWUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFtQkE7QUFDQTtBQVFBOztBQUFBO0FBQUE7QUFBQTs7QUFKQTtBQUVBO0FBa3VDQTtBQTl0Q0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFIQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQUE7QUFFQTtBQUFBO0FBQ0E7QUFDQTs7O0FBQUE7QUFLQTtBQUhBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7QUFBQTtBQUtBO0FBSEE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7OztBQUFBO0FBS0E7QUFIQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQUE7QUFLQTtBQUhBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBUUE7QUFOQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQUE7QUFRQTtBQU5BOzs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBOzs7QUFBQTtBQVFBO0FBTkE7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBOzs7QUFBQTtBQUVBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBOzs7QUFKQTtBQU1BO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBOzs7QUFBQTtBQUtBO0FBSEE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7OztBQVZBO0FBWUE7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQUE7QUFLQTtBQUhBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7QUFBQTtBQVVBO0FBUkE7Ozs7Ozs7QUFPQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQUE7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFBQTtBQUVBOzs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7Ozs7QUFJQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBR0E7Ozs7Ozs7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7O0FBSUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7Ozs7OztBQU9BO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7OztBQUtBO0FBQ0E7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTs7OztBQUlBO0FBQ0E7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7Ozs7QUFJQTtBQUNBOztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7OztBQUtBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTs7OztBQUlBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7Ozs7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7OztBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7Ozs7Ozs7O0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVJBO0FBQ0E7QUFDQTs7O0FBQUE7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7Ozs7O0FBS0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7Ozs7O0FBT0E7QUFDQTtBQUFBO0FBQUE7QUFBQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBOzs7O0FBSUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7Ozs7O0FBTUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTs7QUFUQTtBQUFBO0FBV0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7Ozs7Ozs7O0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7Ozs7QUFJQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTs7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7Ozs7Ozs7O0FBUUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUVBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQS92Q0E7QUFnd0NBO0FBQUE7QUFsd0NBO0FBb3dDQTs7O0FBR0E7QUFFQTs7OztBQUlBO0FBQ0E7QUFBQTtBQUVBO0FBU0E7QUFQQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQ0E7QUFDQTs7O0FBQUE7QUFDQTtBQUFBO0FBWEE7QUFhQTs7QUFFQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/main/typescript/ext/monadish/DomQuery.ts\n");
/***/ }),
/***/ "./src/main/typescript/ext/monadish/Lang.ts":
/*!**************************************************!*\
!*** ./src/main/typescript/ext/monadish/Lang.ts ***!
\**************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\r\n/* Licensed to the Apache Software Foundation (ASF) under one or more\r\n * contributor license agreements. See the NOTICE file distributed with\r\n * this work for additional information regarding copyright ownership.\r\n * The ASF licenses this file to you under the Apache License, Version 2.0\r\n * (the \"License\"); you may not use this file except in compliance with\r\n * the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Promise_1 = __webpack_require__(/*! ./Promise */ \"./src/main/typescript/ext/monadish/Promise.ts\");\r\nvar Monad_1 = __webpack_require__(/*! ./Monad */ \"./src/main/typescript/ext/monadish/Monad.ts\");\r\n/**\r\n * Lang helpers crossported from the apache myfaces project\r\n */\r\nvar Lang;\r\n(function (Lang) {\r\n //should be in lang, but for now here to avoid recursive imports, not sure if typescript still has a problem with those\r\n /**\r\n * helper function to savely resolve anything\r\n * this is not an elvis operator, it resolves\r\n * a value without exception in a tree and if\r\n * it is not resolvable then an optional of\r\n * a default value is restored or Optional.empty\r\n * if none is given\r\n *\r\n * usage\r\n * <code>\r\n * let var: Optiona<string> = saveResolve(() => a.b.c.d.e, \"foobaz\")\r\n * </code>\r\n *\r\n * @param resolverProducer a lambda which can produce the value\r\n * @param defaultValue an optional default value if the producer failes to produce anything\r\n * @returns an Optional of the produced value\r\n */\r\n function saveResolve(resolverProducer, defaultValue) {\r\n if (defaultValue === void 0) { defaultValue = null; }\r\n try {\r\n var result = resolverProducer();\r\n return Monad_1.Optional.fromNullable((result !== null && result !== void 0 ? result : defaultValue));\r\n }\r\n catch (e) {\r\n return Monad_1.Optional.absent;\r\n }\r\n }\r\n Lang.saveResolve = saveResolve;\r\n function saveResolveLazy(resolverProducer, defaultValue) {\r\n if (defaultValue === void 0) { defaultValue = null; }\r\n try {\r\n var result = resolverProducer();\r\n return Monad_1.Optional.fromNullable((result !== null && result !== void 0 ? result : defaultValue()));\r\n }\r\n catch (e) {\r\n return Monad_1.Optional.absent;\r\n }\r\n }\r\n Lang.saveResolveLazy = saveResolveLazy;\r\n /**\r\n * String to array function performs a string to array transformation\r\n * @param {String} it the string which has to be changed into an array\r\n * @param {RegExp} splitter our splitter reglar expression\r\n * @return a trimmed array of the splitted string\r\n */\r\n function strToArray(it, splitter) {\r\n if (splitter === void 0) { splitter = /\\./gi; }\r\n var ret = [];\r\n it.split(splitter).forEach((function (element) {\r\n ret.push(trim(element));\r\n }));\r\n return ret;\r\n }\r\n Lang.strToArray = strToArray;\r\n /**\r\n * hyperfast trim\r\n * http://blog.stevenlevithan.com/archives/faster-trim-javascript\r\n * crossported from dojo\r\n */\r\n function trim(str) {\r\n str = str.replace(/^\\s\\s*/, '');\r\n var ws = /\\s/, i = str.length;\r\n while (ws.test(str.charAt(--i))) {\r\n //do nothing\r\n }\r\n return str.slice(0, i + 1);\r\n }\r\n Lang.trim = trim;\r\n /**\r\n * generic object arrays like dom definitions to array conversion method which\r\n * transforms any object to something array like\r\n * @param obj\r\n * @param offset\r\n * @param pack\r\n * @returns an array converted from the object\r\n */\r\n function objToArray(obj, offset, pack) {\r\n if (offset === void 0) { offset = 0; }\r\n if (pack === void 0) { pack = []; }\r\n if (((obj !== null && obj !== void 0 ? obj : \"__undefined__\")) == \"__undefined__\") {\r\n return (pack !== null && pack !== void 0 ? pack : null);\r\n }\r\n //since offset is numeric we cannot use the shortcut due to 0 being false\r\n //special condition array delivered no offset no pack\r\n if (obj instanceof Array && !offset && !pack)\r\n return obj;\r\n return pack.concat(Array.prototype.slice.call(obj, offset));\r\n }\r\n Lang.objToArray = objToArray;\r\n /**\r\n * equalsIgnoreCase, case insensitive comparison of two strings\r\n *\r\n * @param source\r\n * @param destination\r\n */\r\n function equalsIgnoreCase(source, destination) {\r\n var finalSource = (source !== null && source !== void 0 ? source : \"___no_value__\");\r\n var finalDest = (destination !== null && destination !== void 0 ? destination : \"___no_value__\");\r\n //in any other case we do a strong string comparison\r\n return finalSource.toLowerCase() === finalDest.toLowerCase();\r\n }\r\n Lang.equalsIgnoreCase = equalsIgnoreCase;\r\n /*\r\n * Promise wrappers for timeout and interval\r\n */\r\n function timeout(timeout) {\r\n var handler = null;\r\n return new Promise_1.CancellablePromise(function (apply, reject) {\r\n handler = setTimeout(function () { return apply(); }, timeout);\r\n }, function () {\r\n if (handler) {\r\n clearTimeout(handler);\r\n handler = null;\r\n }\r\n });\r\n }\r\n Lang.timeout = timeout;\r\n function interval(timeout) {\r\n var handler = null;\r\n return new Promise_1.CancellablePromise(function (apply, reject) {\r\n handler = setInterval(function () {\r\n apply();\r\n }, timeout);\r\n }, function () {\r\n if (handler) {\r\n clearInterval(handler);\r\n handler = null;\r\n }\r\n });\r\n }\r\n Lang.interval = interval;\r\n /**\r\n * runtime type assertion\r\n *\r\n * @param probe the probe to be tested for a type\r\n * @param theType the type to be tested for\r\n */\r\n function assertType(probe, theType) {\r\n return isString(theType) ? typeof probe == theType : probe instanceof theType;\r\n }\r\n Lang.assertType = assertType;\r\n /**\r\n * Backported from dojo\r\n * a failsafe string determination method\r\n * (since in javascript String != \"\" typeof alone fails!)\r\n * @param it {|Object|} the object to be checked for being a string\r\n * @return true in case of being a string false otherwise\r\n */\r\n function isString(it) {\r\n //\tsummary:\r\n //\t\tReturn true if it is a String\r\n return !!arguments.length && it != null && (typeof it == \"string\" || it instanceof String); // Boolean\r\n }\r\n Lang.isString = isString;\r\n function isFunc(it) {\r\n return it instanceof Function || typeof it === \"function\";\r\n }\r\n Lang.isFunc = isFunc;\r\n // code from https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\r\n // license https://creativecommons.org/licenses/by-sa/2.5/\r\n function objAssign(target) {\r\n var theArgs = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n theArgs[_i - 1] = arguments[_i];\r\n }\r\n if (target == null) { // TypeError if undefined or null\r\n throw new TypeError('Cannot convert undefined or null to object');\r\n }\r\n var to = Object(target);\r\n if (Object.assign) {\r\n theArgs.forEach(function (item) { return Object.assign(to, item); });\r\n return to;\r\n }\r\n theArgs.forEach(function (item) {\r\n var nextSource = item;\r\n if (nextSource != null) { // Skip over if undefined or null\r\n for (var nextKey in nextSource) {\r\n // Avoid bugs when hasOwnProperty is shadowed\r\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\r\n to[nextKey] = nextSource[nextKey];\r\n }\r\n }\r\n }\r\n });\r\n return to;\r\n }\r\n Lang.objAssign = objAssign;\r\n})(Lang = exports.Lang || (exports.Lang = {}));\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbWFpbi90eXBlc2NyaXB0L2V4dC9tb25hZGlzaC9MYW5nLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21haW4vdHlwZXNjcmlwdC9leHQvbW9uYWRpc2gvTGFuZy50cz85OGQ1Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUgb3IgbW9yZVxyXG4gKiBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlIGRpc3RyaWJ1dGVkIHdpdGhcclxuICogdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLlxyXG4gKiBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZSB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMFxyXG4gKiAodGhlIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoXHJcbiAqIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XHJcbiAqXHJcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbiAqXHJcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcclxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxyXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cclxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxyXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cclxuICovXHJcblxyXG5pbXBvcnQge0NhbmNlbGxhYmxlUHJvbWlzZX0gZnJvbSBcIi4vUHJvbWlzZVwiO1xyXG5pbXBvcnQge09wdGlvbmFsfSBmcm9tIFwiLi9Nb25hZFwiO1xyXG5cclxuLyoqXHJcbiAqIExhbmcgaGVscGVycyBjcm9zc3BvcnRlZCBmcm9tIHRoZSBhcGFjaGUgbXlmYWNlcyBwcm9qZWN0XHJcbiAqL1xyXG5leHBvcnQgbW9kdWxlIExhbmcge1xyXG4gICAgXHJcblxyXG4gICAgLy9zaG91bGQgYmUgaW4gbGFuZywgYnV0IGZvciBub3cgaGVyZSB0byBhdm9pZCByZWN1cnNpdmUgaW1wb3J0cywgbm90IHN1cmUgaWYgdHlwZXNjcmlwdCBzdGlsbCBoYXMgYSBwcm9ibGVtIHdpdGggdGhvc2VcclxuICAgIC8qKlxyXG4gICAgICogaGVscGVyIGZ1bmN0aW9uIHRvIHNhdmVseSByZXNvbHZlIGFueXRoaW5nXHJcbiAgICAgKiB0aGlzIGlzIG5vdCBhbiBlbHZpcyBvcGVyYXRvciwgaXQgcmVzb2x2ZXNcclxuICAgICAqIGEgdmFsdWUgd2l0aG91dCBleGNlcHRpb24gaW4gYSB0cmVlIGFuZCBpZlxyXG4gICAgICogaXQgaXMgbm90IHJlc29sdmFibGUgdGhlbiBhbiBvcHRpb25hbCBvZlxyXG4gICAgICogYSBkZWZhdWx0IHZhbHVlIGlzIHJlc3RvcmVkIG9yIE9wdGlvbmFsLmVtcHR5XHJcbiAgICAgKiBpZiBub25lIGlzIGdpdmVuXHJcbiAgICAgKlxyXG4gICAgICogdXNhZ2VcclxuICAgICAqIDxjb2RlPlxyXG4gICAgICogICAgIGxldCB2YXI6IE9wdGlvbmE8c3RyaW5nPiA9IHNhdmVSZXNvbHZlKCgpID0+IGEuYi5jLmQuZSwgXCJmb29iYXpcIilcclxuICAgICAqIDwvY29kZT5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gcmVzb2x2ZXJQcm9kdWNlciBhIGxhbWJkYSB3aGljaCBjYW4gcHJvZHVjZSB0aGUgdmFsdWVcclxuICAgICAqIEBwYXJhbSBkZWZhdWx0VmFsdWUgYW4gb3B0aW9uYWwgZGVmYXVsdCB2YWx1ZSBpZiB0aGUgcHJvZHVjZXIgZmFpbGVzIHRvIHByb2R1Y2UgYW55dGhpbmdcclxuICAgICAqIEByZXR1cm5zIGFuIE9wdGlvbmFsIG9mIHRoZSBwcm9kdWNlZCB2YWx1ZVxyXG4gICAgICovXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gc2F2ZVJlc29sdmU8VD4ocmVzb2x2ZXJQcm9kdWNlcjogKCkgPT4gVCwgZGVmYXVsdFZhbHVlOiBUID0gbnVsbCk6IE9wdGlvbmFsPFQ+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0gcmVzb2x2ZXJQcm9kdWNlcigpO1xyXG4gICAgICAgICAgICByZXR1cm4gT3B0aW9uYWwuZnJvbU51bGxhYmxlKHJlc3VsdCA/PyBkZWZhdWx0VmFsdWUpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsLmFic2VudDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHNhdmVSZXNvbHZlTGF6eTxUPihyZXNvbHZlclByb2R1Y2VyOiAoKSA9PiBULCBkZWZhdWx0VmFsdWU6ICgpID0+IFQgPSBudWxsKTogT3B0aW9uYWw8VD4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGxldCByZXN1bHQgPSByZXNvbHZlclByb2R1Y2VyKCk7XHJcbiAgICAgICAgICAgIHJldHVybiBPcHRpb25hbC5mcm9tTnVsbGFibGUocmVzdWx0ID8/IGRlZmF1bHRWYWx1ZSgpKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBPcHRpb25hbC5hYnNlbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU3RyaW5nIHRvIGFycmF5IGZ1bmN0aW9uIHBlcmZvcm1zIGEgc3RyaW5nIHRvIGFycmF5IHRyYW5zZm9ybWF0aW9uXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gaXQgdGhlIHN0cmluZyB3aGljaCBoYXMgdG8gYmUgY2hhbmdlZCBpbnRvIGFuIGFycmF5XHJcbiAgICAgKiBAcGFyYW0ge1JlZ0V4cH0gc3BsaXR0ZXIgb3VyIHNwbGl0dGVyIHJlZ2xhciBleHByZXNzaW9uXHJcbiAgICAgKiBAcmV0dXJuIGEgdHJpbW1lZCBhcnJheSBvZiB0aGUgc3BsaXR0ZWQgc3RyaW5nXHJcbiAgICAgKi9cclxuICAgIGV4cG9ydCBmdW5jdGlvbiBzdHJUb0FycmF5KGl0OiBzdHJpbmcsIHNwbGl0dGVyOiBzdHJpbmcgfCBSZWdFeHAgPSAvXFwuL2dpKTogQXJyYXk8c3RyaW5nPiB7XHJcblxyXG4gICAgICAgIGxldCByZXQgPSBbXTtcclxuICAgICAgICBpdC5zcGxpdChzcGxpdHRlcikuZm9yRWFjaCgoZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgIHJldC5wdXNoKHRyaW0oZWxlbWVudCkpO1xyXG4gICAgICAgIH0pKTtcclxuICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogaHlwZXJmYXN0IHRyaW1cclxuICAgICAqIGh0dHA6Ly9ibG9nLnN0ZXZlbmxldml0aGFuLmNvbS9hcmNoaXZlcy9mYXN0ZXItdHJpbS1qYXZhc2NyaXB0XHJcbiAgICAgKiBjcm9zc3BvcnRlZCBmcm9tIGRvam9cclxuICAgICAqL1xyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHRyaW0oc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHN0ciA9IHN0ci5yZXBsYWNlKC9eXFxzXFxzKi8sICcnKTtcclxuICAgICAgICBsZXQgd3MgPSAvXFxzLywgaSA9IHN0ci5sZW5ndGg7XHJcblxyXG4gICAgICAgIHdoaWxlICh3cy50ZXN0KHN0ci5jaGFyQXQoLS1pKSkpIHtcclxuICAgICAgICAgICAgLy9kbyBub3RoaW5nXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBzdHIuc2xpY2UoMCwgaSArIDEpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogZ2VuZXJpYyBvYmplY3QgYXJyYXlzIGxpa2UgZG9tIGRlZmluaXRpb25zIHRvIGFycmF5IGNvbnZlcnNpb24gbWV0aG9kIHdoaWNoXHJcbiAgICAgKiB0cmFuc2Zvcm1zIGFueSBvYmplY3QgdG8gc29tZXRoaW5nIGFycmF5IGxpa2VcclxuICAgICAqIEBwYXJhbSBvYmpcclxuICAgICAqIEBwYXJhbSBvZmZzZXRcclxuICAgICAqIEBwYXJhbSBwYWNrXHJcbiAgICAgKiBAcmV0dXJucyBhbiBhcnJheSBjb252ZXJ0ZWQgZnJvbSB0aGUgb2JqZWN0XHJcbiAgICAgKi9cclxuICAgIGV4cG9ydCBmdW5jdGlvbiBvYmpUb0FycmF5PFQ+KG9iajogYW55LCBvZmZzZXQ6IG51bWJlciA9IDAsIHBhY2s6IEFycmF5PFQ+ID0gW10pOiBBcnJheTxUPiB7XHJcbiAgICAgICAgaWYgKChvYmogPz8gXCJfX3VuZGVmaW5lZF9fXCIpID09IFwiX191bmRlZmluZWRfX1wiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBwYWNrID8/IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vc2luY2Ugb2Zmc2V0IGlzIG51bWVyaWMgd2UgY2Fubm90IHVzZSB0aGUgc2hvcnRjdXQgZHVlIHRvIDAgYmVpbmcgZmFsc2VcclxuICAgICAgICAvL3NwZWNpYWwgY29uZGl0aW9uIGFycmF5IGRlbGl2ZXJlZCBubyBvZmZzZXQgbm8gcGFja1xyXG4gICAgICAgIGlmICgoPGFueT5vYmopIGluc3RhbmNlb2YgQXJyYXkgJiYgIW9mZnNldCAmJiAhcGFjaykgcmV0dXJuIG9iajtcclxuXHJcbiAgICAgICAgcmV0dXJuIHBhY2suY29uY2F0KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKG9iaiwgb2Zmc2V0KSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBlcXVhbHNJZ25vcmVDYXNlLCBjYXNlIGluc2Vuc2l0aXZlIGNvbXBhcmlzb24gb2YgdHdvIHN0cmluZ3NcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gc291cmNlXHJcbiAgICAgKiBAcGFyYW0gZGVzdGluYXRpb25cclxuICAgICAqL1xyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGVxdWFsc0lnbm9yZUNhc2Uoc291cmNlPzogc3RyaW5nLCBkZXN0aW5hdGlvbj86IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGxldCBmaW5hbFNvdXJjZSA9IHNvdXJjZSA/PyBcIl9fX25vX3ZhbHVlX19cIjtcclxuICAgICAgICBsZXQgZmluYWxEZXN0ID0gZGVzdGluYXRpb24gPz8gXCJfX19ub192YWx1ZV9fXCI7XHJcblxyXG4gICAgICAgIC8vaW4gYW55IG90aGVyIGNhc2Ugd2UgZG8gYSBzdHJvbmcgc3RyaW5nIGNvbXBhcmlzb25cclxuICAgICAgICByZXR1cm4gZmluYWxTb3VyY2UudG9Mb3dlckNhc2UoKSA9PT0gZmluYWxEZXN0LnRvTG93ZXJDYXNlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLypcclxuICAgICAqIFByb21pc2Ugd3JhcHBlcnMgZm9yIHRpbWVvdXQgYW5kIGludGVydmFsXHJcbiAgICAgKi9cclxuICAgIGV4cG9ydCBmdW5jdGlvbiB0aW1lb3V0KHRpbWVvdXQ6IG51bWJlcik6IENhbmNlbGxhYmxlUHJvbWlzZSB7XHJcbiAgICAgICAgbGV0IGhhbmRsZXI6IGFueSA9IG51bGw7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDYW5jZWxsYWJsZVByb21pc2UoKGFwcGx5OiBGdW5jdGlvbiwgcmVqZWN0OiBGdW5jdGlvbikgPT4ge1xyXG4gICAgICAgICAgICBoYW5kbGVyID0gc2V0VGltZW91dCgoKSA9PiBhcHBseSgpLCB0aW1lb3V0KTtcclxuICAgICAgICB9LCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChoYW5kbGVyKSB7XHJcbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQoaGFuZGxlcik7XHJcbiAgICAgICAgICAgICAgICBoYW5kbGVyID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBmdW5jdGlvbiBpbnRlcnZhbCh0aW1lb3V0OiBudW1iZXIpOiBDYW5jZWxsYWJsZVByb21pc2Uge1xyXG4gICAgICAgIGxldCBoYW5kbGVyOiBhbnkgPSBudWxsO1xyXG4gICAgICAgIHJldHVybiBuZXcgQ2FuY2VsbGFibGVQcm9taXNlKChhcHBseTogRnVuY3Rpb24sIHJlamVjdDogRnVuY3Rpb24pID0+IHtcclxuICAgICAgICAgICAgaGFuZGxlciA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGFwcGx5KCk7XHJcbiAgICAgICAgICAgIH0sIHRpbWVvdXQpO1xyXG4gICAgICAgIH0sICgpID0+IHtcclxuICAgICAgICAgICAgaWYgKGhhbmRsZXIpIHtcclxuICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaGFuZGxlcik7XHJcbiAgICAgICAgICAgICAgICBoYW5kbGVyID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogcnVudGltZSB0eXBlIGFzc2VydGlvblxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBwcm9iZSB0aGUgcHJvYmUgdG8gYmUgdGVzdGVkIGZvciBhIHR5cGVcclxuICAgICAqIEBwYXJhbSB0aGVUeXBlIHRoZSB0eXBlIHRvIGJlIHRlc3RlZCBmb3JcclxuICAgICAqL1xyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGFzc2VydFR5cGUocHJvYmU6IGFueSwgdGhlVHlwZTogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIGlzU3RyaW5nKHRoZVR5cGUpID8gdHlwZW9mIHByb2JlID09IHRoZVR5cGUgOiBwcm9iZSBpbnN0YW5jZW9mIHRoZVR5cGU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBCYWNrcG9ydGVkIGZyb20gZG9qb1xyXG4gICAgICogYSBmYWlsc2FmZSBzdHJpbmcgZGV0ZXJtaW5hdGlvbiBtZXRob2RcclxuICAgICAqIChzaW5jZSBpbiBqYXZhc2NyaXB0IFN0cmluZyAhPSBcIlwiIHR5cGVvZiBhbG9uZSBmYWlscyEpXHJcbiAgICAgKiBAcGFyYW0gaXQge3xPYmplY3R8fSB0aGUgb2JqZWN0IHRvIGJlIGNoZWNrZWQgZm9yIGJlaW5nIGEgc3RyaW5nXHJcbiAgICAgKiBAcmV0dXJuIHRydWUgaW4gY2FzZSBvZiBiZWluZyBhIHN0cmluZyBmYWxzZSBvdGhlcndpc2VcclxuICAgICAqL1xyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGlzU3RyaW5nKGl0PzogYW55KTogYm9vbGVhbiB7XHJcbiAgICAgICAgLy9cdHN1bW1hcnk6XHJcbiAgICAgICAgLy9cdFx0UmV0dXJuIHRydWUgaWYgaXQgaXMgYSBTdHJpbmdcclxuICAgICAgICByZXR1cm4gISFhcmd1bWVudHMubGVuZ3RoICYmIGl0ICE9IG51bGwgJiYgKHR5cGVvZiBpdCA9PSBcInN0cmluZ1wiIHx8IGl0IGluc3RhbmNlb2YgU3RyaW5nKTsgLy8gQm9vbGVhblxyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBmdW5jdGlvbiBpc0Z1bmMoaXQ6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBpdCBpbnN0YW5jZW9mIEZ1bmN0aW9uIHx8IHR5cGVvZiBpdCA9PT0gXCJmdW5jdGlvblwiO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGNvZGUgZnJvbSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kZS9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9PYmplY3QvYXNzaWduXHJcbiAgICAvLyBsaWNlbnNlIGh0dHBzOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS1zYS8yLjUvXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gb2JqQXNzaWduKHRhcmdldDogYW55LCAuLi50aGVBcmdzOiBhbnkpIHsgLy8gLmxlbmd0aCBvZiBmdW5jdGlvbiBpcyAyXHJcbiAgICAgICAgaWYgKHRhcmdldCA9PSBudWxsKSB7IC8vIFR5cGVFcnJvciBpZiB1bmRlZmluZWQgb3IgbnVsbFxyXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY29udmVydCB1bmRlZmluZWQgb3IgbnVsbCB0byBvYmplY3QnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCB0byA9IE9iamVjdCh0YXJnZXQpO1xyXG4gICAgICAgIGlmKCg8YW55Pk9iamVjdCkuYXNzaWduKSB7XHJcbiAgICAgICAgICAgIHRoZUFyZ3MuZm9yRWFjaChpdGVtID0+ICg8YW55Pk9iamVjdCkuYXNzaWduKHRvLCBpdGVtKSk7XHJcbiAgICAgICAgICAgIHJldHVybiB0bztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoZUFyZ3MuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgICAgbGV0IG5leHRTb3VyY2UgPSBpdGVtO1xyXG4gICAgICAgICAgICBpZiAobmV4dFNvdXJjZSAhPSBudWxsKSB7IC8vIFNraXAgb3ZlciBpZiB1bmRlZmluZWQgb3IgbnVsbFxyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgbmV4dEtleSBpbiBuZXh0U291cmNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gQXZvaWQgYnVncyB3aGVuIGhhc093blByb3BlcnR5IGlzIHNoYWRvd2VkXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuZXh0U291cmNlLCBuZXh0S2V5KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0b1tuZXh0S2V5XSA9IG5leHRTb3VyY2VbbmV4dEtleV07XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHRvO1xyXG4gICAgfVxyXG59XHJcblxyXG4iXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7QUFjQTs7QUFFQTtBQUNBO0FBRUE7O0FBRUE7QUFDQTtBQUFBO0FBR0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7OztBQWdCQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBUEE7QUFTQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQVBBO0FBU0E7Ozs7O0FBS0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUEE7QUFTQTs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVJBO0FBVUE7Ozs7Ozs7QUFPQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQVRBO0FBV0E7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFOQTtBQVFBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVZBO0FBWUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFaQTtBQWNBOzs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFJQTs7Ozs7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFNQTtBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTs7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUF2QkE7QUF3QkE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/main/typescript/ext/monadish/Lang.ts\n");
/***/ }),
/***/ "./src/main/typescript/ext/monadish/Monad.ts":
/*!***************************************************!*\
!*** ./src/main/typescript/ext/monadish/Monad.ts ***!
\***************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\r\n/* Licensed to the Apache Software Foundation (ASF) under one or more\r\n * contributor license agreements. See the NOTICE file distributed with\r\n * this work for additional information regarding copyright ownership.\r\n * The ASF licenses this file to you under the Apache License, Version 2.0\r\n * (the \"License\"); you may not use this file except in compliance with\r\n * the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/**\r\n * A module which keeps basic monadish like definitions in place without any sidedependencies to other modules.\r\n * Useful if you need the functions in another library to keep its dependencies down\r\n */\r\n/*IMonad definitions*/\r\nvar Lang_1 = __webpack_require__(/*! ./Lang */ \"./src/main/typescript/ext/monadish/Lang.ts\");\r\nvar SourcesCollectors_1 = __webpack_require__(/*! ./SourcesCollectors */ \"./src/main/typescript/ext/monadish/SourcesCollectors.ts\");\r\nvar Stream_1 = __webpack_require__(/*! ./Stream */ \"./src/main/typescript/ext/monadish/Stream.ts\");\r\nvar objAssign = Lang_1.Lang.objAssign;\r\n/**\r\n * Implementation of a monad\r\n * (Sideffect free), no write allowed directly on the monads\r\n * value state\r\n */\r\nvar Monad = /** @class */ (function () {\r\n function Monad(value) {\r\n this._value = value;\r\n }\r\n Object.defineProperty(Monad.prototype, \"value\", {\r\n get: function () {\r\n return this._value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Monad.prototype.map = function (fn) {\r\n if (!fn) {\r\n fn = function (inval) { return inval; };\r\n }\r\n var result = fn(this.value);\r\n return new Monad(result);\r\n };\r\n Monad.prototype.flatMap = function (fn) {\r\n var _a;\r\n var mapped = this.map(fn);\r\n while (((_a = mapped) === null || _a === void 0 ? void 0 : _a.value) instanceof Monad) {\r\n mapped = mapped.value;\r\n }\r\n return mapped;\r\n };\r\n return Monad;\r\n}());\r\nexports.Monad = Monad;\r\n/**\r\n * optional implementation, an optional is basically an implementation of a Monad with additional syntactic\r\n * sugar on top\r\n * (Sideeffect free, since value assignment is not allowed)\r\n * */\r\nvar Optional = /** @class */ (function (_super) {\r\n __extends(Optional, _super);\r\n function Optional(value) {\r\n return _super.call(this, value) || this;\r\n }\r\n Object.defineProperty(Optional.prototype, \"value\", {\r\n get: function () {\r\n if (this._value instanceof Monad) {\r\n return this._value.flatMap().value;\r\n }\r\n return this._value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Optional.fromNullable = function (value) {\r\n return new Optional(value);\r\n };\r\n /*syntactic sugar for absent and present checks*/\r\n Optional.prototype.isAbsent = function () {\r\n return \"undefined\" == typeof this.value || null == this.value;\r\n };\r\n /**\r\n * any value present\r\n */\r\n Optional.prototype.isPresent = function (presentRunnable) {\r\n var absent = this.isAbsent();\r\n if (!absent && presentRunnable) {\r\n presentRunnable.call(this, this);\r\n }\r\n return !absent;\r\n };\r\n Optional.prototype.ifPresentLazy = function (presentRunnable) {\r\n if (presentRunnable === void 0) { presentRunnable = function () {\r\n }; }\r\n this.isPresent.call(this, presentRunnable);\r\n return this;\r\n };\r\n Optional.prototype.orElse = function (elseValue) {\r\n if (this.isPresent()) {\r\n return this;\r\n }\r\n else {\r\n //shortcut\r\n if (elseValue == null) {\r\n return Optional.absent;\r\n }\r\n return this.flatMap(function () { return elseValue; });\r\n }\r\n };\r\n /**\r\n * lazy, passes a function which then is lazily evaluated\r\n * instead of a direct value\r\n * @param func\r\n */\r\n Optional.prototype.orElseLazy = function (func) {\r\n if (this.isPresent()) {\r\n return this;\r\n }\r\n else {\r\n return this.flatMap(func);\r\n }\r\n };\r\n /*\r\n * we need to implement it to fullfill the contract, although it is used only internally\r\n * all values are flattened when accessed anyway, so there is no need to call this methiod\r\n */\r\n Optional.prototype.flatMap = function (fn) {\r\n var val = _super.prototype.flatMap.call(this, fn);\r\n if (!(val instanceof Optional)) {\r\n return Optional.fromNullable(val.value);\r\n }\r\n return val.flatMap();\r\n };\r\n /*\r\n * elvis operation, take care, if you use this you lose typesafety and refactoring\r\n * capabilites, unfortunately typesceript does not allow to have its own elvis operator\r\n * this is some syntactic sugar however which is quite useful*/\r\n Optional.prototype.getIf = function () {\r\n var key = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n key[_i] = arguments[_i];\r\n }\r\n var currentPos = this;\r\n for (var cnt = 0; cnt < key.length; cnt++) {\r\n var currKey = this.keyVal(key[cnt]);\r\n var arrPos = this.arrayIndex(key[cnt]);\r\n if (currKey === \"\" && arrPos >= 0) {\r\n currentPos = this.getClass().fromNullable(!(currentPos.value instanceof Array) ? null : (currentPos.value.length < arrPos ? null : currentPos.value[arrPos]));\r\n if (currentPos.isAbsent()) {\r\n return currentPos;\r\n }\r\n continue;\r\n }\r\n else if (currKey && arrPos >= 0) {\r\n if (currentPos.getIfPresent(currKey).isAbsent()) {\r\n return currentPos;\r\n }\r\n currentPos = (currentPos.getIfPresent(currKey).value instanceof Array) ? this.getClass().fromNullable(currentPos.getIfPresent(currKey).value[arrPos]) : this.getClass().absent;\r\n if (currentPos.isAbsent()) {\r\n return currentPos;\r\n }\r\n continue;\r\n }\r\n else {\r\n currentPos = currentPos.getIfPresent(currKey);\r\n }\r\n if (currentPos.isAbsent()) {\r\n return currentPos;\r\n }\r\n else if (arrPos > -1) {\r\n currentPos = this.getClass().fromNullable(currentPos.value[arrPos]);\r\n }\r\n }\r\n var retVal = currentPos;\r\n return retVal;\r\n };\r\n /**\r\n * simple match, if the first order function call returns\r\n * true then there is a match, if the value is not present\r\n * it never matches\r\n *\r\n * @param fn the first order function performing the match\r\n */\r\n Optional.prototype.match = function (fn) {\r\n if (this.isAbsent()) {\r\n return false;\r\n }\r\n return fn(this.value);\r\n };\r\n /**\r\n * convenience function to flatmap the internal value\r\n * and replace it with a default in case of being absent\r\n *\r\n * @param defaultVal\r\n * @returns {Optional<any>}\r\n */\r\n Optional.prototype.get = function (defaultVal) {\r\n if (defaultVal === void 0) { defaultVal = Optional.absent; }\r\n if (this.isAbsent()) {\r\n return this.getClass().fromNullable(defaultVal).flatMap();\r\n }\r\n return this.getClass().fromNullable(this.value).flatMap();\r\n };\r\n Optional.prototype.toJson = function () {\r\n return JSON.stringify(this.value);\r\n };\r\n /**\r\n * helper to override several implementations in a more fluent way\r\n * by having a getClass operation we can avoid direct calls into the constructor or\r\n * static methods and do not have to implement several methods which rely on the type\r\n * of \"this\"\r\n * @returns {Monadish.Optional}\r\n */\r\n Optional.prototype.getClass = function () {\r\n return Optional;\r\n };\r\n /*helper method for getIf with array access aka <name>[<indexPos>]*/\r\n Optional.prototype.arrayIndex = function (key) {\r\n var start = key.indexOf(\"[\");\r\n var end = key.indexOf(\"]\");\r\n if (start >= 0 && end > 0 && start < end) {\r\n return parseInt(key.substring(start + 1, end));\r\n }\r\n else {\r\n return -1;\r\n }\r\n };\r\n /*helper method for getIf with array access aka <name>[<indexPos>]*/\r\n Optional.prototype.keyVal = function (key) {\r\n var start = key.indexOf(\"[\");\r\n if (start >= 0) {\r\n return key.substring(0, start);\r\n }\r\n else {\r\n return key;\r\n }\r\n };\r\n /**\r\n * additional syntactic sugar which is not part of the usual optional implementation\r\n * but makes life easier, if you want to sacrifice typesafety and refactoring\r\n * capabilities in typescript\r\n */\r\n Optional.prototype.getIfPresent = function (key) {\r\n if (this.isAbsent()) {\r\n return this.getClass().absent;\r\n }\r\n return this.getClass().fromNullable(this.value[key]).flatMap();\r\n };\r\n /**\r\n * elvis like typesafe functional save resolver\r\n * a typesafe option for getIfPresent\r\n *\r\n * usage myOptional.resolve(value => value.subAttr.subAttr2).orElseLazy(....)\r\n * if this is resolvable without any errors an Optional with the value is returned\r\n * if not, then an Optional absent is returned, also if you return Optional absent\r\n * it is flatmapped into absent\r\n *\r\n * @param resolver the resolver function, can throw any arbitrary errors, int the error case\r\n * the resolution goes towards absent\r\n */\r\n Optional.prototype.resolve = function (resolver) {\r\n if (this.isAbsent()) {\r\n return Optional.absent;\r\n }\r\n try {\r\n return Optional.fromNullable(resolver(this.value));\r\n }\r\n catch (e) {\r\n return Optional.absent;\r\n }\r\n };\r\n /*default value for absent*/\r\n Optional.absent = Optional.fromNullable(null);\r\n return Optional;\r\n}(Monad));\r\nexports.Optional = Optional;\r\n// --------------------- From here onwards we break out the sideffects free limits ------------\r\n/**\r\n * ValueEmbedder is the writeable version\r\n * of optional, it basically is a wrappber\r\n * around a construct which has a state\r\n * and can be written to.\r\n *\r\n * For the readonly version see Optional\r\n */\r\nvar ValueEmbedder = /** @class */ (function (_super) {\r\n __extends(ValueEmbedder, _super);\r\n function ValueEmbedder(rootElem, valueKey) {\r\n if (valueKey === void 0) { valueKey = \"value\"; }\r\n var _this = _super.call(this, rootElem) || this;\r\n _this.key = valueKey;\r\n return _this;\r\n }\r\n Object.defineProperty(ValueEmbedder.prototype, \"value\", {\r\n get: function () {\r\n return this._value ? this._value[this.key] : null;\r\n },\r\n set: function (newVal) {\r\n if (!this._value) {\r\n return;\r\n }\r\n this._value[this.key] = newVal;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ValueEmbedder.prototype.orElse = function (elseValue) {\r\n var alternative = {};\r\n alternative[this.key] = elseValue;\r\n return this.isPresent() ? this : new ValueEmbedder(alternative, this.key);\r\n };\r\n ValueEmbedder.prototype.orElseLazy = function (func) {\r\n if (this.isPresent()) {\r\n return this;\r\n }\r\n else {\r\n var alternative = {};\r\n alternative[this.key] = func();\r\n return new ValueEmbedder(alternative, this.key);\r\n }\r\n };\r\n /**\r\n * helper to override several implementations in a more fluent way\r\n * by having a getClass operation we can avoid direct calls into the constructor or\r\n * static methods and do not have to implement several methods which rely on the type\r\n * of \"this\"\r\n * @returns {Monadish.Optional}\r\n */\r\n ValueEmbedder.prototype.getClass = function () {\r\n return ValueEmbedder;\r\n };\r\n ValueEmbedder.fromNullable = function (value, valueKey) {\r\n if (valueKey === void 0) { valueKey = \"value\"; }\r\n return new ValueEmbedder(value, valueKey);\r\n };\r\n /*default value for absent*/\r\n ValueEmbedder.absent = ValueEmbedder.fromNullable(null);\r\n return ValueEmbedder;\r\n}(Optional));\r\nexports.ValueEmbedder = ValueEmbedder;\r\n/**\r\n * specialized value embedder\r\n * for our Configuration\r\n */\r\nvar ConfigEntry = /** @class */ (function (_super) {\r\n __extends(ConfigEntry, _super);\r\n function ConfigEntry(rootElem, key, arrPos) {\r\n var _this = _super.call(this, rootElem, key) || this;\r\n _this.arrPos = (arrPos !== null && arrPos !== void 0 ? arrPos : -1);\r\n return _this;\r\n }\r\n Object.defineProperty(ConfigEntry.prototype, \"value\", {\r\n get: function () {\r\n if (this.key == \"\" && this.arrPos >= 0) {\r\n return this._value[this.arrPos];\r\n }\r\n else if (this.key && this.arrPos >= 0) {\r\n return this._value[this.key][this.arrPos];\r\n }\r\n return this._value[this.key];\r\n },\r\n set: function (val) {\r\n if (this.key == \"\" && this.arrPos >= 0) {\r\n this._value[this.arrPos] = val;\r\n return;\r\n }\r\n else if (this.key && this.arrPos >= 0) {\r\n this._value[this.key][this.arrPos] = val;\r\n return;\r\n }\r\n this._value[this.key] = val;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /*default value for absent*/\r\n ConfigEntry.absent = ConfigEntry.fromNullable(null);\r\n return ConfigEntry;\r\n}(ValueEmbedder));\r\n/**\r\n * Config, basically an optional wrapper for a json structure\r\n * (not sideeffect free, since we can alter the internal config state\r\n * without generating a new config), not sure if we should make it sideffect free\r\n * since this would swallow a lot of performane and ram\r\n */\r\nvar Config = /** @class */ (function (_super) {\r\n __extends(Config, _super);\r\n function Config(root) {\r\n return _super.call(this, root) || this;\r\n }\r\n Object.defineProperty(Config.prototype, \"shallowCopy\", {\r\n get: function () {\r\n return new Config(Stream_1.Stream.ofAssoc(this.value).collect(new SourcesCollectors_1.AssocArrayCollector()));\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Config.prototype, \"deepCopy\", {\r\n get: function () {\r\n return new Config(objAssign({}, this.value));\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Config.fromNullable = function (value) {\r\n return new Config(value);\r\n };\r\n /**\r\n * simple merge for the root configs\r\n */\r\n Config.prototype.shallowMerge = function (other, overwrite) {\r\n if (overwrite === void 0) { overwrite = true; }\r\n for (var key in other.value) {\r\n if (overwrite || !(key in this.value)) {\r\n this.assign(key).value = other.getIf(key).value;\r\n }\r\n }\r\n };\r\n Config.prototype.assign = function () {\r\n var keys = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n keys[_i] = arguments[_i];\r\n }\r\n if (keys.length < 1) {\r\n return;\r\n }\r\n this.buildPath(keys);\r\n var currKey = this.keyVal(keys[keys.length - 1]);\r\n var arrPos = this.arrayIndex(keys[keys.length - 1]);\r\n var retVal = new ConfigEntry(keys.length == 1 ? this.value : this.getIf.apply(this, keys.slice(0, keys.length - 1)).value, currKey, arrPos);\r\n return retVal;\r\n };\r\n Config.prototype.assignIf = function (condition) {\r\n var keys = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n keys[_i - 1] = arguments[_i];\r\n }\r\n return condition ? this.assign.apply(this, keys) : { value: null };\r\n };\r\n Config.prototype.getIf = function () {\r\n var keys = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n keys[_i] = arguments[_i];\r\n }\r\n return this.getClass().fromNullable(_super.prototype.getIf.apply(this, keys).value);\r\n };\r\n Config.prototype.get = function (defaultVal) {\r\n return this.getClass().fromNullable(_super.prototype.get.call(this, defaultVal).value);\r\n };\r\n //empties the current config entry\r\n Config.prototype.delete = function (key) {\r\n if (key in this.value) {\r\n delete this.value[key];\r\n }\r\n return this;\r\n };\r\n Config.prototype.toJson = function () {\r\n return JSON.stringify(this.value);\r\n };\r\n Config.prototype.getClass = function () {\r\n return Config;\r\n };\r\n Config.prototype.setVal = function (val) {\r\n this._value = val;\r\n };\r\n Config.prototype.buildPath = function (keys) {\r\n var val = this;\r\n var parentVal = this.getClass().fromNullable(null);\r\n var parentPos = -1;\r\n var alloc = function (arr, length) {\r\n var length1 = arr.length;\r\n var length2 = length1 + length;\r\n for (var cnt = length1; cnt < length2; cnt++) {\r\n arr.push({});\r\n }\r\n };\r\n for (var cnt = 0; cnt < keys.length; cnt++) {\r\n var currKey = this.keyVal(keys[cnt]);\r\n var arrPos = this.arrayIndex(keys[cnt]);\r\n if (currKey === \"\" && arrPos >= 0) {\r\n val.setVal((val.value instanceof Array) ? val.value : []);\r\n alloc(val.value, arrPos + 1);\r\n if (parentPos >= 0) {\r\n parentVal.value[parentPos] = val.value;\r\n }\r\n parentVal = val;\r\n parentPos = arrPos;\r\n val = this.getClass().fromNullable(val.value[arrPos]);\r\n continue;\r\n }\r\n var tempVal = val.getIf(currKey);\r\n if (arrPos == -1) {\r\n if (tempVal.isAbsent()) {\r\n tempVal = this.getClass().fromNullable(val.value[currKey] = {});\r\n }\r\n else {\r\n val = tempVal;\r\n }\r\n }\r\n else {\r\n var arr = (tempVal.value instanceof Array) ? tempVal.value : [];\r\n alloc(arr, arrPos + 1);\r\n val.value[currKey] = arr;\r\n tempVal = this.getClass().fromNullable(arr[arrPos]);\r\n }\r\n parentVal = val;\r\n parentPos = arrPos;\r\n val = tempVal;\r\n }\r\n return this;\r\n };\r\n return Config;\r\n}(Optional));\r\nexports.Config = Config;\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbWFpbi90eXBlc2NyaXB0L2V4dC9tb25hZGlzaC9Nb25hZC50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tYWluL3R5cGVzY3JpcHQvZXh0L21vbmFkaXNoL01vbmFkLnRzPzExMDkiXSwic291cmNlc0NvbnRlbnQiOlsiLyogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZSBvciBtb3JlXHJcbiAqIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUgZGlzdHJpYnV0ZWQgd2l0aFxyXG4gKiB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuXHJcbiAqIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wXHJcbiAqICh0aGUgXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGhcclxuICogdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcclxuICpcclxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuICpcclxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxyXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXHJcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxyXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXHJcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBBIG1vZHVsZSB3aGljaCBrZWVwcyAgYmFzaWMgbW9uYWRpc2ggbGlrZSBkZWZpbml0aW9ucyBpbiBwbGFjZSB3aXRob3V0IGFueSBzaWRlZGVwZW5kZW5jaWVzIHRvIG90aGVyIG1vZHVsZXMuXHJcbiAqIFVzZWZ1bCBpZiB5b3UgbmVlZCB0aGUgZnVuY3Rpb25zIGluIGFub3RoZXIgbGlicmFyeSB0byBrZWVwIGl0cyBkZXBlbmRlbmNpZXMgZG93blxyXG4gKi9cclxuXHJcbi8qSU1vbmFkIGRlZmluaXRpb25zKi9cclxuXHJcbmltcG9ydCB7TGFuZ30gZnJvbSBcIi4vTGFuZ1wiO1xyXG5pbXBvcnQge0Fzc29jQXJyYXlDb2xsZWN0b3J9IGZyb20gXCIuL1NvdXJjZXNDb2xsZWN0b3JzXCI7XHJcbmltcG9ydCB7U3RyZWFtfSBmcm9tIFwiLi9TdHJlYW1cIjtcclxuaW1wb3J0IG9iakFzc2lnbiA9IExhbmcub2JqQXNzaWduO1xyXG5cclxuLyoqXHJcbiAqIElGdW5jdG9yIGludGVyZmFjZSxcclxuICogZGVmaW5lcyBhbiBpbnRlcmZhY2Ugd2hpY2ggYWxsb3dzIHRvIG1hcCBhIGZ1bmN0b3JcclxuICogdmlhIGEgZmlyc3Qgb3JkZXIgZnVuY3Rpb24gdG8gYW5vdGhlciBmdW5jdG9yXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIElGdW5jdG9yPFQ+IHtcclxuICAgIG1hcDxSPihmbjogKGRhdGE6IFQpID0+IFIpOiBJRnVuY3RvcjxSPjtcclxufVxyXG5cclxuLyoqXHJcbiAqIElNb25hZCBkZWZpbml0aW9uLCBiYXNpY2FsbHkgYSBmdW5jdG9yIHdpdGggYSBmbGFwdG1hcCBpbXBsZW1lbnRhdGlvbiAoZmxhdG1hcCByZWR1Y2VzIGFsbCBuZXN0ZWQgbW9uYWRzIGFmdGVyIGFcclxuICogZnVuY3Rpb24gY2FsbCBmIGludG8gYSBtb25hZCB3aXRoIHRoZSBuZXN0aW5nIGxldmVsIG9mIDFcclxuICpcclxuICogZmxhdG1hcCBmbGF0cyBuZXN0ZWQgTW9uYWRzIGludG8gYSBJTW9uYWQgb2YgdGhlIGRlZXBlc3QgbmVzdGVkIGltcGxlbWVudGF0aW9uXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIElNb25hZDxULCBNIGV4dGVuZHMgSU1vbmFkPGFueSwgYW55Pj4gZXh0ZW5kcyBJRnVuY3RvcjxUPiB7XHJcbiAgICBmbGF0TWFwPFQsIE0+KGY6IChUKSA9PiBNKTogSU1vbmFkPGFueSwgYW55PjtcclxufVxyXG5cclxuLyoqXHJcbiAqIGEgc3RhdGVmdWwgZnVuY3RvciB3aGljaCBob2xkcyBhIHZhbHVlIHVwbiB3aGljaCBhXHJcbiAqIGZ1bmN0aW9uIGNhbiBiZSBhcHBsaWVkXHJcbiAqXHJcbiAqIGFzIHZhbHVlIGhvbGRlciBvZiB0eXBlIFRcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUlkZW50aXR5PFQ+IGV4dGVuZHMgSUZ1bmN0b3I8VD4ge1xyXG4gICAgcmVhZG9ubHkgdmFsdWU6IFQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiAgY3VzdG9tIHZhbHVlIGhvbGRlciBkZWZpbml0aW9uLCBzaW5jZSB3ZSBhcmUgbm90IHB1cmUgZnVuY3Rpb25hbFxyXG4gKiAgYnV0IGl0ZXJhdGl2ZSB3ZSBoYXZlIHN0cnVjdHVyZXMgd2hpY2ggYWxsb3cgdGhlIGFzc2lnbm1lbnQgb2YgYSB2YWx1ZVxyXG4gKiAgYWxzbyBub3QgYWxsIHN0cnVjdHVyZXMgYXJlIHNpZGVmZmVjdCBmcmVlXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIElWYWx1ZUhvbGRlcjxUPiB7XHJcbiAgICB2YWx1ZTogVCB8IEFycmF5PFQ+O1xyXG59XHJcblxyXG4vKipcclxuICogSW1wbGVtZW50YXRpb24gb2YgYSBtb25hZFxyXG4gKiAoU2lkZWZmZWN0IGZyZWUpLCBubyB3cml0ZSBhbGxvd2VkIGRpcmVjdGx5IG9uIHRoZSBtb25hZHNcclxuICogdmFsdWUgc3RhdGVcclxuICovXHJcbmV4cG9ydCBjbGFzcyBNb25hZDxUPiBpbXBsZW1lbnRzIElNb25hZDxULCBNb25hZDxhbnk+PiwgSVZhbHVlSG9sZGVyPFQ+IHtcclxuICAgIGNvbnN0cnVjdG9yKHZhbHVlOiBUKSB7XHJcbiAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgX3ZhbHVlOiBUO1xyXG5cclxuICAgIGdldCB2YWx1ZSgpOiBUIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwPFI+KGZuPzogKGRhdGE6IFQpID0+IFIpOiBNb25hZDxSPiB7XHJcbiAgICAgICAgaWYgKCFmbikge1xyXG4gICAgICAgICAgICBmbiA9IChpbnZhbDogYW55KSA9PiA8Uj5pbnZhbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHJlc3VsdDogUiA9IGZuKHRoaXMudmFsdWUpO1xyXG4gICAgICAgIHJldHVybiBuZXcgTW9uYWQocmVzdWx0KTtcclxuICAgIH1cclxuXHJcbiAgICBmbGF0TWFwPFI+KGZuPzogKGRhdGE6IFQpID0+IFIpOiBNb25hZDxhbnk+IHtcclxuICAgICAgICBsZXQgbWFwcGVkOiBNb25hZDxhbnk+ID0gdGhpcy5tYXAoZm4pO1xyXG4gICAgICAgIHdoaWxlIChtYXBwZWQ/LnZhbHVlIGluc3RhbmNlb2YgTW9uYWQpIHtcclxuICAgICAgICAgICAgbWFwcGVkID0gbWFwcGVkLnZhbHVlXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBtYXBwZWQ7XHJcbiAgICB9XHJcblxyXG59XHJcblxyXG5cclxuXHJcblxyXG4vKipcclxuICogb3B0aW9uYWwgaW1wbGVtZW50YXRpb24sIGFuIG9wdGlvbmFsIGlzIGJhc2ljYWxseSBhbiBpbXBsZW1lbnRhdGlvbiBvZiBhIE1vbmFkIHdpdGggYWRkaXRpb25hbCBzeW50YWN0aWNcclxuICogc3VnYXIgb24gdG9wXHJcbiAqIChTaWRlZWZmZWN0IGZyZWUsIHNpbmNlIHZhbHVlIGFzc2lnbm1lbnQgaXMgbm90IGFsbG93ZWQpXHJcbiAqICovXHJcbmV4cG9ydCBjbGFzcyBPcHRpb25hbDxUPiBleHRlbmRzIE1vbmFkPFQ+IHtcclxuXHJcbiAgICAvKmRlZmF1bHQgdmFsdWUgZm9yIGFic2VudCovXHJcbiAgICBzdGF0aWMgYWJzZW50ID0gT3B0aW9uYWwuZnJvbU51bGxhYmxlKG51bGwpO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHZhbHVlOiBUKSB7XHJcbiAgICAgICAgc3VwZXIodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCB2YWx1ZSgpOiBUIHtcclxuICAgICAgICBpZiAodGhpcy5fdmFsdWUgaW5zdGFuY2VvZiBNb25hZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWUuZmxhdE1hcCgpLnZhbHVlXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZnJvbU51bGxhYmxlPFQ+KHZhbHVlPzogVCk6IE9wdGlvbmFsPFQ+IHtcclxuICAgICAgICByZXR1cm4gbmV3IE9wdGlvbmFsKHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKnN5bnRhY3RpYyBzdWdhciBmb3IgYWJzZW50IGFuZCBwcmVzZW50IGNoZWNrcyovXHJcbiAgICBpc0Fic2VudCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gXCJ1bmRlZmluZWRcIiA9PSB0eXBlb2YgdGhpcy52YWx1ZSB8fCBudWxsID09IHRoaXMudmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBhbnkgdmFsdWUgcHJlc2VudFxyXG4gICAgICovXHJcbiAgICBpc1ByZXNlbnQocHJlc2VudFJ1bm5hYmxlID86ICh2YWwgPzogTW9uYWQ8VD4pID0+IHZvaWQpOiBib29sZWFuIHtcclxuICAgICAgICBsZXQgYWJzZW50ID0gdGhpcy5pc0Fic2VudCgpO1xyXG4gICAgICAgIGlmICghYWJzZW50ICYmIHByZXNlbnRSdW5uYWJsZSkge1xyXG4gICAgICAgICAgICBwcmVzZW50UnVubmFibGUuY2FsbCh0aGlzLCB0aGlzKVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gIWFic2VudDtcclxuICAgIH1cclxuXHJcbiAgICBpZlByZXNlbnRMYXp5KHByZXNlbnRSdW5uYWJsZTogKHZhbCA/OiBNb25hZDxUPikgPT4gdm9pZCA9ICgpID0+IHtcclxuICAgIH0pOiBNb25hZDxUPiB7XHJcbiAgICAgICAgdGhpcy5pc1ByZXNlbnQuY2FsbCh0aGlzLCBwcmVzZW50UnVubmFibGUpO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIG9yRWxzZShlbHNlVmFsdWU6IGFueSk6IE9wdGlvbmFsPGFueT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmlzUHJlc2VudCgpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vc2hvcnRjdXRcclxuICAgICAgICAgICAgaWYgKGVsc2VWYWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gT3B0aW9uYWwuYWJzZW50O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZsYXRNYXAoKCkgPT4gZWxzZVZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBsYXp5LCBwYXNzZXMgYSBmdW5jdGlvbiB3aGljaCB0aGVuIGlzIGxhemlseSBldmFsdWF0ZWRcclxuICAgICAqIGluc3RlYWQgb2YgYSBkaXJlY3QgdmFsdWVcclxuICAgICAqIEBwYXJhbSBmdW5jXHJcbiAgICAgKi9cclxuICAgIG9yRWxzZUxhenkoZnVuYzogKCkgPT4gYW55KTogT3B0aW9uYWw8YW55PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNQcmVzZW50KCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmxhdE1hcChmdW5jKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLypcclxuICAgICAqIHdlIG5lZWQgdG8gaW1wbGVtZW50IGl0IHRvIGZ1bGxmaWxsIHRoZSBjb250cmFjdCwgYWx0aG91Z2ggaXQgaXMgdXNlZCBvbmx5IGludGVybmFsbHlcclxuICAgICAqIGFsbCB2YWx1ZXMgYXJlIGZsYXR0ZW5lZCB3aGVuIGFjY2Vzc2VkIGFueXdheSwgc28gdGhlcmUgaXMgbm8gbmVlZCB0byBjYWxsIHRoaXMgbWV0aGlvZFxyXG4gICAgICovXHJcbiAgICBmbGF0TWFwPFI+KGZuPzogKGRhdGE6IFQpID0+IFIpOiBPcHRpb25hbDxhbnk+IHtcclxuICAgICAgICBsZXQgdmFsID0gc3VwZXIuZmxhdE1hcChmbik7XHJcbiAgICAgICAgaWYgKCEodmFsIGluc3RhbmNlb2YgT3B0aW9uYWwpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBPcHRpb25hbC5mcm9tTnVsbGFibGUodmFsLnZhbHVlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiA8T3B0aW9uYWw8YW55Pj52YWwuZmxhdE1hcCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBlbHZpcyBvcGVyYXRpb24sIHRha2UgY2FyZSwgaWYgeW91IHVzZSB0aGlzIHlvdSBsb3NlIHR5cGVzYWZldHkgYW5kIHJlZmFjdG9yaW5nXHJcbiAgICAgKiBjYXBhYmlsaXRlcywgdW5mb3J0dW5hdGVseSB0eXBlc2NlcmlwdCBkb2VzIG5vdCBhbGxvdyB0byBoYXZlIGl0cyBvd24gZWx2aXMgb3BlcmF0b3JcclxuICAgICAqIHRoaXMgaXMgc29tZSBzeW50YWN0aWMgc3VnYXIgaG93ZXZlciB3aGljaCBpcyBxdWl0ZSB1c2VmdWwqL1xyXG4gICAgZ2V0SWY8Uj4oLi4ua2V5OiBzdHJpbmdbXSk6IE9wdGlvbmFsPFI+IHtcclxuXHJcbiAgICAgICAgbGV0IGN1cnJlbnRQb3M6IE9wdGlvbmFsPGFueT4gPSB0aGlzO1xyXG4gICAgICAgIGZvciAobGV0IGNudCA9IDA7IGNudCA8IGtleS5sZW5ndGg7IGNudCsrKSB7XHJcbiAgICAgICAgICAgIGxldCBjdXJyS2V5ID0gdGhpcy5rZXlWYWwoa2V5W2NudF0pO1xyXG4gICAgICAgICAgICBsZXQgYXJyUG9zID0gdGhpcy5hcnJheUluZGV4KGtleVtjbnRdKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChjdXJyS2V5ID09PSBcIlwiICYmIGFyclBvcyA+PSAwKSB7XHJcbiAgICAgICAgICAgICAgICBjdXJyZW50UG9zID0gdGhpcy5nZXRDbGFzcygpLmZyb21OdWxsYWJsZSghKGN1cnJlbnRQb3MudmFsdWUgaW5zdGFuY2VvZiBBcnJheSkgPyBudWxsIDogKGN1cnJlbnRQb3MudmFsdWUubGVuZ3RoIDwgYXJyUG9zID8gbnVsbCA6IGN1cnJlbnRQb3MudmFsdWVbYXJyUG9zXSkpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRQb3MuaXNBYnNlbnQoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50UG9zO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY3VycktleSAmJiBhcnJQb3MgPj0gMCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRQb3MuZ2V0SWZQcmVzZW50KGN1cnJLZXkpLmlzQWJzZW50KCkpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudFBvcztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGN1cnJlbnRQb3MgPSAoY3VycmVudFBvcy5nZXRJZlByZXNlbnQoY3VycktleSkudmFsdWUgaW5zdGFuY2VvZiBBcnJheSkgPyB0aGlzLmdldENsYXNzKCkuZnJvbU51bGxhYmxlKGN1cnJlbnRQb3MuZ2V0SWZQcmVzZW50KGN1cnJLZXkpLnZhbHVlW2FyclBvc10pIDogdGhpcy5nZXRDbGFzcygpLmFic2VudDtcclxuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50UG9zLmlzQWJzZW50KCkpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudFBvcztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGN1cnJlbnRQb3MgPSBjdXJyZW50UG9zLmdldElmUHJlc2VudChjdXJyS2V5KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoY3VycmVudFBvcy5pc0Fic2VudCgpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudFBvcztcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChhcnJQb3MgPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgY3VycmVudFBvcyA9IHRoaXMuZ2V0Q2xhc3MoKS5mcm9tTnVsbGFibGUoY3VycmVudFBvcy52YWx1ZVthcnJQb3NdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgcmV0VmFsID0gY3VycmVudFBvcztcclxuXHJcbiAgICAgICAgcmV0dXJuIHJldFZhbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIHNpbXBsZSBtYXRjaCwgaWYgdGhlIGZpcnN0IG9yZGVyIGZ1bmN0aW9uIGNhbGwgcmV0dXJuc1xyXG4gICAgICogdHJ1ZSB0aGVuIHRoZXJlIGlzIGEgbWF0Y2gsIGlmIHRoZSB2YWx1ZSBpcyBub3QgcHJlc2VudFxyXG4gICAgICogaXQgbmV2ZXIgbWF0Y2hlc1xyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBmbiB0aGUgZmlyc3Qgb3JkZXIgZnVuY3Rpb24gcGVyZm9ybWluZyB0aGUgbWF0Y2hcclxuICAgICAqL1xyXG4gICAgbWF0Y2goZm46IChpdGVtOiBUKSA9PiBib29sZWFuKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNBYnNlbnQoKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2VcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZuKHRoaXMudmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogY29udmVuaWVuY2UgZnVuY3Rpb24gdG8gZmxhdG1hcCB0aGUgaW50ZXJuYWwgdmFsdWVcclxuICAgICAqIGFuZCByZXBsYWNlIGl0IHdpdGggYSBkZWZhdWx0IGluIGNhc2Ugb2YgYmVpbmcgYWJzZW50XHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGRlZmF1bHRWYWxcclxuICAgICAqIEByZXR1cm5zIHtPcHRpb25hbDxhbnk+fVxyXG4gICAgICovXHJcbiAgICBnZXQ8Uj4oZGVmYXVsdFZhbDogYW55ID0gT3B0aW9uYWwuYWJzZW50KTogT3B0aW9uYWw8Uj4ge1xyXG4gICAgICAgIGlmICh0aGlzLmlzQWJzZW50KCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2xhc3MoKS5mcm9tTnVsbGFibGUoZGVmYXVsdFZhbCkuZmxhdE1hcCgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2xhc3MoKS5mcm9tTnVsbGFibGUodGhpcy52YWx1ZSkuZmxhdE1hcCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRvSnNvbigpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLnZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGhlbHBlciB0byBvdmVycmlkZSBzZXZlcmFsIGltcGxlbWVudGF0aW9ucyBpbiBhIG1vcmUgZmx1ZW50IHdheVxyXG4gICAgICogYnkgaGF2aW5nIGEgZ2V0Q2xhc3Mgb3BlcmF0aW9uIHdlIGNhbiBhdm9pZCBkaXJlY3QgY2FsbHMgaW50byB0aGUgY29uc3RydWN0b3Igb3JcclxuICAgICAqIHN0YXRpYyBtZXRob2RzIGFuZCBkbyBub3QgaGF2ZSB0byBpbXBsZW1lbnQgc2V2ZXJhbCBtZXRob2RzIHdoaWNoIHJlbHkgb24gdGhlIHR5cGVcclxuICAgICAqIG9mIFwidGhpc1wiXHJcbiAgICAgKiBAcmV0dXJucyB7TW9uYWRpc2guT3B0aW9uYWx9XHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBnZXRDbGFzcygpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiBPcHRpb25hbDtcclxuICAgIH1cclxuXHJcbiAgICAvKmhlbHBlciBtZXRob2QgZm9yIGdldElmIHdpdGggYXJyYXkgYWNjZXNzIGFrYSA8bmFtZT5bPGluZGV4UG9zPl0qL1xyXG4gICAgcHJvdGVjdGVkIGFycmF5SW5kZXgoa2V5OiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgICAgIGxldCBzdGFydCA9IGtleS5pbmRleE9mKFwiW1wiKTtcclxuICAgICAgICBsZXQgZW5kID0ga2V5LmluZGV4T2YoXCJdXCIpO1xyXG4gICAgICAgIGlmIChzdGFydCA+PSAwICYmIGVuZCA+IDAgJiYgc3RhcnQgPCBlbmQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KGtleS5zdWJzdHJpbmcoc3RhcnQgKyAxLCBlbmQpKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qaGVscGVyIG1ldGhvZCBmb3IgZ2V0SWYgd2l0aCBhcnJheSBhY2Nlc3MgYWthIDxuYW1lPls8aW5kZXhQb3M+XSovXHJcbiAgICBwcm90ZWN0ZWQga2V5VmFsKGtleTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICBsZXQgc3RhcnQgPSBrZXkuaW5kZXhPZihcIltcIik7XHJcblxyXG4gICAgICAgIGlmIChzdGFydCA+PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBrZXkuc3Vic3RyaW5nKDAsIHN0YXJ0KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4ga2V5O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGFkZGl0aW9uYWwgc3ludGFjdGljIHN1Z2FyIHdoaWNoIGlzIG5vdCBwYXJ0IG9mIHRoZSB1c3VhbCBvcHRpb25hbCBpbXBsZW1lbnRhdGlvblxyXG4gICAgICogYnV0IG1ha2VzIGxpZmUgZWFzaWVyLCBpZiB5b3Ugd2FudCB0byBzYWNyaWZpY2UgdHlwZXNhZmV0eSBhbmQgcmVmYWN0b3JpbmdcclxuICAgICAqIGNhcGFiaWxpdGllcyBpbiB0eXBlc2NyaXB0XHJcbiAgICAgKi9cclxuICAgIGdldElmUHJlc2VudDxSPihrZXk6IHN0cmluZyk6IE9wdGlvbmFsPFI+IHtcclxuICAgICAgICBpZiAodGhpcy5pc0Fic2VudCgpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldENsYXNzKCkuYWJzZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5nZXRDbGFzcygpLmZyb21OdWxsYWJsZSh0aGlzLnZhbHVlW2tleV0pLmZsYXRNYXAoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGVsdmlzIGxpa2UgdHlwZXNhZmUgZnVuY3Rpb25hbCBzYXZlIHJlc29sdmVyXHJcbiAgICAgKiBhIHR5cGVzYWZlIG9wdGlvbiBmb3IgZ2V0SWZQcmVzZW50XHJcbiAgICAgKlxyXG4gICAgICogdXNhZ2UgbXlPcHRpb25hbC5yZXNvbHZlKHZhbHVlID0+IHZhbHVlLnN1YkF0dHIuc3ViQXR0cjIpLm9yRWxzZUxhenkoLi4uLilcclxuICAgICAqIGlmIHRoaXMgaXMgcmVzb2x2YWJsZSB3aXRob3V0IGFueSBlcnJvcnMgYW4gT3B0aW9uYWwgd2l0aCB0aGUgdmFsdWUgaXMgcmV0dXJuZWRcclxuICAgICAqIGlmIG5vdCwgdGhlbiBhbiBPcHRpb25hbCBhYnNlbnQgaXMgcmV0dXJuZWQsIGFsc28gaWYgeW91IHJldHVybiBPcHRpb25hbCBhYnNlbnRcclxuICAgICAqIGl0IGlzIGZsYXRtYXBwZWQgaW50byBhYnNlbnRcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gcmVzb2x2ZXIgdGhlIHJlc29sdmVyIGZ1bmN0aW9uLCBjYW4gdGhyb3cgYW55IGFyYml0cmFyeSBlcnJvcnMsIGludCAgdGhlIGVycm9yIGNhc2VcclxuICAgICAqIHRoZSByZXNvbHV0aW9uIGdvZXMgdG93YXJkcyBhYnNlbnRcclxuICAgICAqL1xyXG4gICAgcmVzb2x2ZTxWPihyZXNvbHZlcjogKGl0ZW06IFQpID0+IFYpOiBPcHRpb25hbDxWPiB7XHJcbiAgICAgICAgaWYodGhpcy5pc0Fic2VudCgpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBPcHRpb25hbC5hYnNlbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHJldHVybiBPcHRpb25hbC5mcm9tTnVsbGFibGUocmVzb2x2ZXIodGhpcy52YWx1ZSkpXHJcbiAgICAgICAgfSBjYXRjaChlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBPcHRpb25hbC5hYnNlbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxufVxyXG5cclxuXHJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGcm9tIGhlcmUgb253YXJkcyB3ZSBicmVhayBvdXQgdGhlIHNpZGVmZmVjdHMgZnJlZSBsaW1pdHMgLS0tLS0tLS0tLS0tXHJcblxyXG5cclxuLyoqXHJcbiAqIFZhbHVlRW1iZWRkZXIgaXMgdGhlIHdyaXRlYWJsZSB2ZXJzaW9uXHJcbiAqIG9mIG9wdGlvbmFsLCBpdCBiYXNpY2FsbHkgaXMgYSB3cmFwcGJlclxyXG4gKiBhcm91bmQgYSBjb25zdHJ1Y3Qgd2hpY2ggaGFzIGEgc3RhdGVcclxuICogYW5kIGNhbiBiZSB3cml0dGVuIHRvLlxyXG4gKlxyXG4gKiBGb3IgdGhlIHJlYWRvbmx5IHZlcnNpb24gc2VlIE9wdGlvbmFsXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgVmFsdWVFbWJlZGRlcjxUPiBleHRlbmRzIE9wdGlvbmFsPFQ+IGltcGxlbWVudHMgSVZhbHVlSG9sZGVyPFQ+IHtcclxuXHJcbiAgICAvKmRlZmF1bHQgdmFsdWUgZm9yIGFic2VudCovXHJcbiAgICBzdGF0aWMgYWJzZW50ID0gIFZhbHVlRW1iZWRkZXIuZnJvbU51bGxhYmxlKG51bGwpO1xyXG5cclxuICAgIHByb3RlY3RlZCBrZXk6IHN0cmluZztcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihyb290RWxlbTogYW55LCB2YWx1ZUtleTogc3RyaW5nID0gXCJ2YWx1ZVwiKSB7XHJcbiAgICAgICAgc3VwZXIocm9vdEVsZW0pO1xyXG5cclxuICAgICAgICB0aGlzLmtleSA9IHZhbHVlS2V5O1xyXG4gICAgfVxyXG5cclxuICAgIGdldCB2YWx1ZSgpOiBUIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWUgPyA8VD50aGlzLl92YWx1ZVt0aGlzLmtleV0gOiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHNldCB2YWx1ZShuZXdWYWw6IFQpIHtcclxuICAgICAgICBpZighdGhpcy5fdmFsdWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl92YWx1ZVt0aGlzLmtleV0gPSBuZXdWYWxcclxuICAgIH1cclxuXHJcbiAgICBvckVsc2UoZWxzZVZhbHVlOiBhbnkpOiBPcHRpb25hbDxhbnk+IHtcclxuICAgICAgICBsZXQgYWx0ZXJuYXRpdmUgPSB7fTtcclxuICAgICAgICBhbHRlcm5hdGl2ZVt0aGlzLmtleV0gPSBlbHNlVmFsdWU7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNQcmVzZW50KCkgPyB0aGlzIDogbmV3IFZhbHVlRW1iZWRkZXIoYWx0ZXJuYXRpdmUsIHRoaXMua2V5KTtcclxuICAgIH1cclxuXHJcbiAgICBvckVsc2VMYXp5KGZ1bmM6ICgpID0+IGFueSk6IE9wdGlvbmFsPGFueT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmlzUHJlc2VudCgpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGxldCBhbHRlcm5hdGl2ZSA9IHt9O1xyXG4gICAgICAgICAgICBhbHRlcm5hdGl2ZVt0aGlzLmtleV0gPSBmdW5jKCk7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgVmFsdWVFbWJlZGRlcihhbHRlcm5hdGl2ZSwgdGhpcy5rZXkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGhlbHBlciB0byBvdmVycmlkZSBzZXZlcmFsIGltcGxlbWVudGF0aW9ucyBpbiBhIG1vcmUgZmx1ZW50IHdheVxyXG4gICAgICogYnkgaGF2aW5nIGEgZ2V0Q2xhc3Mgb3BlcmF0aW9uIHdlIGNhbiBhdm9pZCBkaXJlY3QgY2FsbHMgaW50byB0aGUgY29uc3RydWN0b3Igb3JcclxuICAgICAqIHN0YXRpYyBtZXRob2RzIGFuZCBkbyBub3QgaGF2ZSB0byBpbXBsZW1lbnQgc2V2ZXJhbCBtZXRob2RzIHdoaWNoIHJlbHkgb24gdGhlIHR5cGVcclxuICAgICAqIG9mIFwidGhpc1wiXHJcbiAgICAgKiBAcmV0dXJucyB7TW9uYWRpc2guT3B0aW9uYWx9XHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBnZXRDbGFzcygpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiBWYWx1ZUVtYmVkZGVyO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBmcm9tTnVsbGFibGU8VD4odmFsdWU/OiBhbnksIHZhbHVlS2V5OiBzdHJpbmcgPSBcInZhbHVlXCIpOiBWYWx1ZUVtYmVkZGVyPFQ+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFZhbHVlRW1iZWRkZXIodmFsdWUsIHZhbHVlS2V5KTtcclxuICAgIH1cclxuXHJcbn1cclxuXHJcblxyXG5cclxuLyoqXHJcbiAqIHNwZWNpYWxpemVkIHZhbHVlIGVtYmVkZGVyXHJcbiAqIGZvciBvdXIgQ29uZmlndXJhdGlvblxyXG4gKi9cclxuY2xhc3MgQ29uZmlnRW50cnk8VD4gZXh0ZW5kcyBWYWx1ZUVtYmVkZGVyPFQ+IHtcclxuXHJcbiAgICAvKmRlZmF1bHQgdmFsdWUgZm9yIGFic2VudCovXHJcbiAgICBzdGF0aWMgYWJzZW50ID0gQ29uZmlnRW50cnkuZnJvbU51bGxhYmxlKG51bGwpO1xyXG5cclxuICAgIGFyclBvczogbnVtYmVyO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHJvb3RFbGVtOiBhbnksIGtleTogYW55LCBhcnJQb3M/OiBudW1iZXIpIHtcclxuICAgICAgICBzdXBlcihyb290RWxlbSwga2V5KTtcclxuXHJcbiAgICAgICAgdGhpcy5hcnJQb3MgPSAgYXJyUG9zID8/IC0xO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCB2YWx1ZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5rZXkgPT0gXCJcIiAmJiB0aGlzLmFyclBvcyA+PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl92YWx1ZVt0aGlzLmFyclBvc107XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmtleSAmJiB0aGlzLmFyclBvcyA+PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl92YWx1ZVt0aGlzLmtleV1bdGhpcy5hcnJQb3NdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWVbdGhpcy5rZXldO1xyXG4gICAgfVxyXG5cclxuICAgIHNldCB2YWx1ZSh2YWw6IFQpIHtcclxuICAgICAgICBpZiAodGhpcy5rZXkgPT0gXCJcIiAmJiB0aGlzLmFyclBvcyA+PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlW3RoaXMuYXJyUG9zXSA9IHZhbDtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5rZXkgJiYgdGhpcy5hcnJQb3MgPj0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLl92YWx1ZVt0aGlzLmtleV1bdGhpcy5hcnJQb3NdID0gdmFsO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX3ZhbHVlW3RoaXMua2V5XSA9IHZhbDtcclxuICAgIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIENvbmZpZywgYmFzaWNhbGx5IGFuIG9wdGlvbmFsIHdyYXBwZXIgZm9yIGEganNvbiBzdHJ1Y3R1cmVcclxuICogKG5vdCBzaWRlZWZmZWN0IGZyZWUsIHNpbmNlIHdlIGNhbiBhbHRlciB0aGUgaW50ZXJuYWwgY29uZmlnIHN0YXRlXHJcbiAqIHdpdGhvdXQgZ2VuZXJhdGluZyBhIG5ldyBjb25maWcpLCBub3Qgc3VyZSBpZiB3ZSBzaG91bGQgbWFrZSBpdCBzaWRlZmZlY3QgZnJlZVxyXG4gKiBzaW5jZSB0aGlzIHdvdWxkIHN3YWxsb3cgYSBsb3Qgb2YgcGVyZm9ybWFuZSBhbmQgcmFtXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgQ29uZmlnIGV4dGVuZHMgT3B0aW9uYWw8YW55PiB7XHJcbiAgICBjb25zdHJ1Y3Rvcihyb290OiBhbnkpIHtcclxuICAgICAgICBzdXBlcihyb290KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgc2hhbGxvd0NvcHkoKTogQ29uZmlnIHtcclxuICAgICAgICByZXR1cm4gbmV3IENvbmZpZyhTdHJlYW0ub2ZBc3NvYyh0aGlzLnZhbHVlKS5jb2xsZWN0KG5ldyBBc3NvY0FycmF5Q29sbGVjdG9yKCkpKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZGVlcENvcHkoKTogQ29uZmlnIHtcclxuICAgICAgICByZXR1cm4gbmV3IENvbmZpZyhvYmpBc3NpZ24oe30sIHRoaXMudmFsdWUpKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZnJvbU51bGxhYmxlPFQ+KHZhbHVlPzogYW55KTogQ29uZmlnIHtcclxuICAgICAgICByZXR1cm4gbmV3IENvbmZpZyh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBzaW1wbGUgbWVyZ2UgZm9yIHRoZSByb290IGNvbmZpZ3NcclxuICAgICAqL1xyXG4gICAgc2hhbGxvd01lcmdlKG90aGVyOiBDb25maWcsIG92ZXJ3cml0ZSA9IHRydWUpIHtcclxuICAgICAgICBmb3IgKGxldCBrZXkgaW4gb3RoZXIudmFsdWUpIHtcclxuICAgICAgICAgICAgaWYgKG92ZXJ3cml0ZSB8fMKgIShrZXkgaW4gdGhpcy52YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYXNzaWduKGtleSkudmFsdWUgPSBvdGhlci5nZXRJZihrZXkpLnZhbHVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzc2lnbiguLi5rZXlzKTogSVZhbHVlSG9sZGVyPGFueT4ge1xyXG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA8IDEpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5idWlsZFBhdGgoa2V5cyk7XHJcblxyXG4gICAgICAgIGxldCBjdXJyS2V5ID0gdGhpcy5rZXlWYWwoa2V5c1trZXlzLmxlbmd0aCAtIDFdKTtcclxuICAgICAgICBsZXQgYXJyUG9zID0gdGhpcy5hcnJheUluZGV4KGtleXNba2V5cy5sZW5ndGggLSAxXSk7XHJcbiAgICAgICAgbGV0IHJldFZhbCA9IG5ldyBDb25maWdFbnRyeShrZXlzLmxlbmd0aCA9PSAxID8gdGhpcy52YWx1ZSA6IHRoaXMuZ2V0SWYuYXBwbHkodGhpcywga2V5cy5zbGljZSgwLCBrZXlzLmxlbmd0aCAtIDEpKS52YWx1ZSxcclxuICAgICAgICAgICAgY3VycktleSwgYXJyUG9zXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHJldFZhbDtcclxuICAgIH1cclxuXHJcbiAgICBhc3NpZ25JZihjb25kaXRpb246IGJvb2xlYW4sIC4uLmtleXM6IEFycmF5PGFueT4pOiBJVmFsdWVIb2xkZXI8YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIGNvbmRpdGlvbiA/IHRoaXMuYXNzaWduKC4uLmtleXMpIDoge3ZhbHVlOiBudWxsfTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgZ2V0SWYoLi4ua2V5czogQXJyYXk8c3RyaW5nPik6IENvbmZpZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2xhc3MoKS5mcm9tTnVsbGFibGUoc3VwZXIuZ2V0SWYuYXBwbHkodGhpcywga2V5cykudmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldChkZWZhdWx0VmFsOiBhbnkpOiBDb25maWcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdldENsYXNzKCkuZnJvbU51bGxhYmxlKHN1cGVyLmdldChkZWZhdWx0VmFsKS52YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy9lbXB0aWVzIHRoZSBjdXJyZW50IGNvbmZpZyBlbnRyeVxyXG4gICAgZGVsZXRlKGtleTogc3RyaW5nKTogQ29uZmlnIHtcclxuICAgICAgICBpZiAoa2V5IGluIHRoaXMudmFsdWUpIHtcclxuICAgICAgICAgICAgZGVsZXRlIHRoaXMudmFsdWVba2V5XTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgdG9Kc29uKCk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMudmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBnZXRDbGFzcygpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiBDb25maWc7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzZXRWYWwodmFsOiBhbnkpIHtcclxuICAgICAgICB0aGlzLl92YWx1ZSA9IHZhbDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGJ1aWxkUGF0aChrZXlzOiBBcnJheTxhbnk+KTogQ29uZmlnIHtcclxuICAgICAgICBsZXQgdmFsID0gdGhpcztcclxuICAgICAgICBsZXQgcGFyZW50VmFsID0gdGhpcy5nZXRDbGFzcygpLmZyb21OdWxsYWJsZShudWxsKTtcclxuICAgICAgICBsZXQgcGFyZW50UG9zID0gLTE7XHJcbiAgICAgICAgbGV0IGFsbG9jID0gZnVuY3Rpb24gKGFycjogQXJyYXk8YW55PiwgbGVuZ3RoOiBudW1iZXIpIHtcclxuICAgICAgICAgICAgbGV0IGxlbmd0aDEgPSBhcnIubGVuZ3RoO1xyXG4gICAgICAgICAgICBsZXQgbGVuZ3RoMiA9IGxlbmd0aDEgKyBsZW5ndGg7XHJcbiAgICAgICAgICAgIGZvcihsZXQgY250ID0gbGVuZ3RoMTsgY250IDwgbGVuZ3RoMjsgY250KyspIHtcclxuICAgICAgICAgICAgICAgIGFyci5wdXNoKHt9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGZvciAobGV0IGNudCA9IDA7IGNudCA8IGtleXMubGVuZ3RoOyBjbnQrKykge1xyXG4gICAgICAgICAgICBsZXQgY3VycktleSA9IHRoaXMua2V5VmFsKGtleXNbY250XSk7XHJcbiAgICAgICAgICAgIGxldCBhcnJQb3MgPSB0aGlzLmFycmF5SW5kZXgoa2V5c1tjbnRdKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChjdXJyS2V5ID09PSBcIlwiICYmIGFyclBvcyA+PSAwKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgdmFsLnNldFZhbCgodmFsLnZhbHVlIGluc3RhbmNlb2YgQXJyYXkpID8gdmFsLnZhbHVlIDogW10pO1xyXG4gICAgICAgICAgICAgICAgYWxsb2ModmFsLnZhbHVlLCBhcnJQb3MgKyAxKTtcclxuICAgICAgICAgICAgICAgIGlmIChwYXJlbnRQb3MgPj0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudFZhbC52YWx1ZVtwYXJlbnRQb3NdID0gdmFsLnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcGFyZW50VmFsID0gdmFsO1xyXG4gICAgICAgICAgICAgICAgcGFyZW50UG9zID0gYXJyUG9zO1xyXG4gICAgICAgICAgICAgICAgdmFsID0gdGhpcy5nZXRDbGFzcygpLmZyb21OdWxsYWJsZSh2YWwudmFsdWVbYXJyUG9zXSk7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgbGV0IHRlbXBWYWwgPSA8Q29uZmlnPnZhbC5nZXRJZihjdXJyS2V5KTtcclxuICAgICAgICAgICAgaWYgKGFyclBvcyA9PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRlbXBWYWwuaXNBYnNlbnQoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRlbXBWYWwgPSA8Q29uZmlnPnRoaXMuZ2V0Q2xhc3MoKS5mcm9tTnVsbGFibGUodmFsLnZhbHVlW2N1cnJLZXldID0ge30pO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB2YWwgPSA8YW55PnRlbXBWYWw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgYXJyID0gKHRlbXBWYWwudmFsdWUgaW5zdGFuY2VvZiBBcnJheSkgPyB0ZW1wVmFsLnZhbHVlIDogW107XHJcbiAgICAgICAgICAgICAgICBhbGxvYyhhcnIsIGFyclBvcyArIDEpO1xyXG4gICAgICAgICAgICAgICAgdmFsLnZhbHVlW2N1cnJLZXldID0gYXJyO1xyXG4gICAgICAgICAgICAgICAgdGVtcFZhbCA9IHRoaXMuZ2V0Q2xhc3MoKS5mcm9tTnVsbGFibGUoYXJyW2FyclBvc10pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHBhcmVudFZhbCA9IHZhbDtcclxuICAgICAgICAgICAgcGFyZW50UG9zID0gYXJyUG9zO1xyXG4gICAgICAgICAgICB2YWwgPSA8YW55PnRlbXBWYWw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxufVxyXG5cclxuXHJcbiJdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7OztBQWNBOzs7Ozs7Ozs7Ozs7Ozs7QUFFQTs7O0FBR0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBd0NBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQUE7QUFDQTtBQUNBOzs7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQTNCQTtBQWdDQTs7OztBQUlBO0FBQ0E7QUFBQTtBQUtBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTs7O0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBOzs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7Ozs7QUFNQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7Ozs7OztBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7Ozs7Ozs7OztBQVdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQTFOQTtBQUNBO0FBMk5BO0FBQUE7QUE5TkE7QUFpT0E7QUFHQTs7Ozs7OztBQU9BO0FBQ0E7QUFBQTtBQU9BO0FBQUE7QUFBQTtBQUdBOztBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQVBBO0FBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7Ozs7OztBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFuREE7QUFDQTtBQW9EQTtBQUFBO0FBdkRBO0FBMkRBOzs7QUFHQTtBQUNBO0FBQUE7QUFPQTtBQUFBO0FBR0E7O0FBQ0E7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQVhBO0FBbEJBO0FBQ0E7QUE2QkE7QUFBQTtBQUVBOzs7OztBQUtBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQUNBOzs7QUFBQTtBQUVBO0FBQUE7QUFDQTtBQUNBOzs7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUVBOztBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQ0E7QUFHQTtBQUFBO0FBQUE7QUFBQTs7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUE5SEE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/main/typescript/ext/monadish/Monad.ts\n");
/***/ }),
/***/ "./src/main/typescript/ext/monadish/Promise.ts":
/*!*****************************************************!*\
!*** ./src/main/typescript/ext/monadish/Promise.ts ***!
\*****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Monad_1 = __webpack_require__(/*! ./Monad */ \"./src/main/typescript/ext/monadish/Monad.ts\");\r\nvar PromiseStatus;\r\n(function (PromiseStatus) {\r\n PromiseStatus[PromiseStatus[\"PENDING\"] = 0] = \"PENDING\";\r\n PromiseStatus[PromiseStatus[\"FULLFILLED\"] = 1] = \"FULLFILLED\";\r\n PromiseStatus[PromiseStatus[\"REJECTED\"] = 2] = \"REJECTED\";\r\n})(PromiseStatus = exports.PromiseStatus || (exports.PromiseStatus = {}));\r\n/**\r\n * a small (probably not 100% correct, although I tried to be correct as possible) Promise implementation\r\n * for systems which do not have a promise implemented\r\n * Note, although an internal state is kept, this is sideffect free since\r\n * is value is a function to operate on, hence no real state is kept internally, except for the then\r\n * and catch calling order\r\n */\r\nvar Promise = /** @class */ (function () {\r\n function Promise(executor) {\r\n var _this = this;\r\n this.status = PromiseStatus.PENDING;\r\n this.allFuncs = [];\r\n //super(executor);\r\n this.value = executor;\r\n this.value(function (data) { return _this.resolve(data); }, function (data) { return _this.reject(data); });\r\n }\r\n Promise.all = function () {\r\n var promises = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n promises[_i] = arguments[_i];\r\n }\r\n var promiseCnt = 0;\r\n var myapply;\r\n var myPromise = new Promise(function (apply, reject) {\r\n myapply = apply;\r\n });\r\n var executor = function () {\r\n promiseCnt++;\r\n if (promises.length == promiseCnt) {\r\n myapply();\r\n }\r\n };\r\n executor.__last__ = true;\r\n for (var cnt = 0; cnt < promises.length; cnt++) {\r\n promises[cnt].finally(executor);\r\n }\r\n return myPromise;\r\n };\r\n Promise.race = function () {\r\n var promises = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n promises[_i] = arguments[_i];\r\n }\r\n var promiseCnt = 0;\r\n var myapply;\r\n var myreject;\r\n var myPromise = new Promise(function (apply, reject) {\r\n myapply = apply;\r\n myreject = reject;\r\n });\r\n var thenexecutor = function () {\r\n if (!!myapply) {\r\n myapply();\r\n }\r\n myapply = null;\r\n myreject = null;\r\n return null;\r\n };\r\n thenexecutor.__last__ = true;\r\n var catchexeutor = function () {\r\n if (!!myreject) {\r\n myreject();\r\n }\r\n myreject = null;\r\n myapply = null;\r\n return null;\r\n };\r\n catchexeutor.__last__ = true;\r\n for (var cnt = 0; cnt < promises.length; cnt++) {\r\n promises[cnt].then(thenexecutor);\r\n promises[cnt].catch(catchexeutor);\r\n }\r\n return myPromise;\r\n };\r\n Promise.reject = function (reason) {\r\n var retVal = new Promise(function (resolve, reject) {\r\n //not really doable without a hack\r\n if (reason instanceof Promise) {\r\n reason.then(function (val) {\r\n reject(val);\r\n });\r\n }\r\n else {\r\n setTimeout(function () {\r\n reject(reason);\r\n }, 1);\r\n }\r\n });\r\n return retVal;\r\n };\r\n Promise.resolve = function (reason) {\r\n var retVal = new Promise(function (resolve, reject) {\r\n //not really doable without a hack\r\n if (reason instanceof Promise) {\r\n reason.then(function (val) { return resolve(val); });\r\n }\r\n else {\r\n setTimeout(function () {\r\n resolve(reason);\r\n }, 1);\r\n }\r\n });\r\n return retVal;\r\n };\r\n Promise.prototype.then = function (executorFunc, catchfunc) {\r\n this.allFuncs.push({ \"then\": executorFunc });\r\n if (catchfunc) {\r\n this.allFuncs.push({ \"catch\": catchfunc });\r\n }\r\n this.spliceLastFuncs();\r\n return this;\r\n };\r\n Promise.prototype.catch = function (executorFunc) {\r\n this.allFuncs.push({ \"catch\": executorFunc });\r\n this.spliceLastFuncs();\r\n return this;\r\n };\r\n Promise.prototype.finally = function (executorFunc) {\r\n if (this.__reason__) {\r\n this.__reason__.finally(executorFunc);\r\n return;\r\n }\r\n this.allFuncs.push({ \"finally\": executorFunc });\r\n this.spliceLastFuncs();\r\n return this;\r\n };\r\n Promise.prototype.resolve = function (val) {\r\n while (this.allFuncs.length) {\r\n if (!this.allFuncs[0].then) {\r\n break;\r\n }\r\n var fn = this.allFuncs.shift();\r\n var funcResult = Monad_1.Optional.fromNullable(fn.then(val));\r\n if (funcResult.isPresent()) {\r\n funcResult = funcResult.flatMap();\r\n val = funcResult.value;\r\n if (val instanceof Promise) {\r\n //var func = (newVal: any) => {this.resolve(newVal)};\r\n //func.__last__ = true;\r\n //val.then(func);\r\n this.transferIntoNewPromise(val);\r\n return;\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n this.appyFinally();\r\n this.status = PromiseStatus.FULLFILLED;\r\n };\r\n Promise.prototype.reject = function (val) {\r\n while (this.allFuncs.length) {\r\n if (this.allFuncs[0].finally) {\r\n break;\r\n }\r\n var fn = this.allFuncs.shift();\r\n if (fn.catch) {\r\n var funcResult = Monad_1.Optional.fromNullable(fn.catch(val));\r\n if (funcResult.isPresent()) {\r\n funcResult = funcResult.flatMap();\r\n val = funcResult.value;\r\n if (val instanceof Promise) {\r\n //val.then((newVal: any) => {this.resolve(newVal)});\r\n this.transferIntoNewPromise(val);\r\n return;\r\n }\r\n this.status = PromiseStatus.REJECTED;\r\n break;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n this.status = PromiseStatus.REJECTED;\r\n this.appyFinally();\r\n };\r\n Promise.prototype.appyFinally = function () {\r\n while (this.allFuncs.length) {\r\n var fn = this.allFuncs.shift();\r\n if (fn.finally) {\r\n fn.finally();\r\n }\r\n }\r\n };\r\n Promise.prototype.spliceLastFuncs = function () {\r\n var lastFuncs = [];\r\n var rest = [];\r\n for (var cnt = 0; cnt < this.allFuncs.length; cnt++) {\r\n for (var key in this.allFuncs[cnt]) {\r\n if (this.allFuncs[cnt][key].__last__) {\r\n lastFuncs.push(this.allFuncs[cnt]);\r\n }\r\n else {\r\n rest.push(this.allFuncs[cnt]);\r\n }\r\n }\r\n }\r\n this.allFuncs = rest.concat(lastFuncs);\r\n };\r\n Promise.prototype.transferIntoNewPromise = function (val) {\r\n for (var cnt = 0; cnt < this.allFuncs.length; cnt++) {\r\n for (var key in this.allFuncs[cnt]) {\r\n val[key](this.allFuncs[cnt][key]);\r\n }\r\n }\r\n };\r\n return Promise;\r\n}());\r\nexports.Promise = Promise;\r\n/**\r\n * a cancellable promise\r\n * a Promise with a cancel function, which can be cancellend any time\r\n * this is useful for promises which use cancellable asynchronous operations\r\n * note, even in a cancel state, the finally of the promise is executed, however\r\n * subsequent thens are not anymore.\r\n * The current then however is fished or a catch is called depending on how the outer\r\n * operation reacts to a cancel order.\r\n */\r\nvar CancellablePromise = /** @class */ (function (_super) {\r\n __extends(CancellablePromise, _super);\r\n /**\r\n * @param executor asynchronous callback operation which triggers the callback\r\n * @param cancellator cancel operation, separate from the trigger operation\r\n */\r\n function CancellablePromise(executor, cancellator) {\r\n var _this = _super.call(this, executor) || this;\r\n _this.cancellator = function () {\r\n };\r\n _this.cancellator = cancellator;\r\n return _this;\r\n }\r\n CancellablePromise.prototype.cancel = function () {\r\n this.status = PromiseStatus.REJECTED;\r\n this.appyFinally();\r\n //lets terminate it once and for all, the finally has been applied\r\n this.allFuncs = [];\r\n };\r\n CancellablePromise.prototype.then = function (executorFunc, catchfunc) {\r\n return _super.prototype.then.call(this, executorFunc, catchfunc);\r\n };\r\n CancellablePromise.prototype.catch = function (executorFunc) {\r\n return _super.prototype.catch.call(this, executorFunc);\r\n };\r\n CancellablePromise.prototype.finally = function (executorFunc) {\r\n return _super.prototype.finally.call(this, executorFunc);\r\n };\r\n return CancellablePromise;\r\n}(Promise));\r\nexports.CancellablePromise = CancellablePromise;\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbWFpbi90eXBlc2NyaXB0L2V4dC9tb25hZGlzaC9Qcm9taXNlLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21haW4vdHlwZXNjcmlwdC9leHQvbW9uYWRpc2gvUHJvbWlzZS50cz8yMTVlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7T3B0aW9uYWx9IGZyb20gXCIuL01vbmFkXCI7XHJcblxyXG5leHBvcnQgZW51bSBQcm9taXNlU3RhdHVzIHtcclxuICAgIFBFTkRJTkcsIEZVTExGSUxMRUQsIFJFSkVDVEVEXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVByb21pc2Uge1xyXG4gICAgdGhlbihleGVjdXRvckZ1bmM6ICh2YWw6IGFueSkgPT4gYW55KTogSVByb21pc2U7XHJcblxyXG4gICAgY2F0Y2goZXhlY3V0b3JGdW5jOiAodmFsOiBhbnkpID0+IGFueSk6IElQcm9taXNlXHJcblxyXG4gICAgZmluYWxseShleGVjdXRvckZ1bmM6ICgpID0+IHZvaWQpOiBJUHJvbWlzZTtcclxuXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBhIHNtYWxsIChwcm9iYWJseSBub3QgMTAwJSBjb3JyZWN0LCBhbHRob3VnaCBJIHRyaWVkIHRvIGJlIGNvcnJlY3QgYXMgcG9zc2libGUpIFByb21pc2UgaW1wbGVtZW50YXRpb25cclxuICogZm9yIHN5c3RlbXMgd2hpY2ggZG8gbm90IGhhdmUgYSBwcm9taXNlIGltcGxlbWVudGVkXHJcbiAqIE5vdGUsIGFsdGhvdWdoIGFuIGludGVybmFsIHN0YXRlIGlzIGtlcHQsIHRoaXMgaXMgc2lkZWZmZWN0IGZyZWUgc2luY2VcclxuICogaXMgdmFsdWUgaXMgYSBmdW5jdGlvbiB0byBvcGVyYXRlIG9uLCBoZW5jZSBubyByZWFsIHN0YXRlIGlzIGtlcHQgaW50ZXJuYWxseSwgZXhjZXB0IGZvciB0aGUgdGhlblxyXG4gKiBhbmQgY2F0Y2ggY2FsbGluZyBvcmRlclxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFByb21pc2UgaW1wbGVtZW50cyBJUHJvbWlzZSB7XHJcblxyXG4gICAgc3RhdHVzID0gUHJvbWlzZVN0YXR1cy5QRU5ESU5HO1xyXG4gICAgcHJvdGVjdGVkIGFsbEZ1bmNzOiBBcnJheTxhbnk+ID0gW107XHJcbiAgICBwcml2YXRlIHZhbHVlOiAocmVzb2x2ZTogKHZhbD86IGFueSkgPT4gdm9pZCwgcmVqZWN0OiAodmFsPzogYW55KSA9PiB2b2lkKSA9PiB2b2lkO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKGV4ZWN1dG9yOiAocmVzb2x2ZTogKHZhbD86IGFueSkgPT4gdm9pZCwgcmVqZWN0OiAodmFsPzogYW55KSA9PiB2b2lkKSA9PiB2b2lkKSB7XHJcbiAgICAgICAgLy9zdXBlcihleGVjdXRvcik7XHJcbiAgICAgICAgdGhpcy52YWx1ZSA9IGV4ZWN1dG9yO1xyXG4gICAgICAgIHRoaXMudmFsdWUoKGRhdGE6IGFueSkgPT4gdGhpcy5yZXNvbHZlKGRhdGEpLCAoZGF0YTogYW55KSA9PiB0aGlzLnJlamVjdChkYXRhKSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGFsbCguLi5wcm9taXNlczogQXJyYXk8SVByb21pc2U+KTogSVByb21pc2Uge1xyXG5cclxuICAgICAgICBsZXQgcHJvbWlzZUNudCA9IDA7XHJcbiAgICAgICAgbGV0IG15YXBwbHk6IEZ1bmN0aW9uO1xyXG5cclxuICAgICAgICBsZXQgbXlQcm9taXNlID0gbmV3IFByb21pc2UoKGFwcGx5OiBGdW5jdGlvbiwgcmVqZWN0OiBGdW5jdGlvbikgPT4ge1xyXG4gICAgICAgICAgICBteWFwcGx5ID0gYXBwbHk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgbGV0IGV4ZWN1dG9yID0gKCkgPT4ge1xyXG4gICAgICAgICAgICBwcm9taXNlQ250Kys7XHJcblxyXG4gICAgICAgICAgICBpZiAocHJvbWlzZXMubGVuZ3RoID09IHByb21pc2VDbnQpIHtcclxuICAgICAgICAgICAgICAgIG15YXBwbHkoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgKDxhbnk+ZXhlY3V0b3IpLl9fbGFzdF9fID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgZm9yIChsZXQgY250ID0gMDsgY250IDwgcHJvbWlzZXMubGVuZ3RoOyBjbnQrKykge1xyXG4gICAgICAgICAgICBwcm9taXNlc1tjbnRdLmZpbmFsbHkoZXhlY3V0b3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbXlQcm9taXNlO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyByYWNlKC4uLnByb21pc2VzOiBBcnJheTxJUHJvbWlzZT4pOiBJUHJvbWlzZSB7XHJcblxyXG4gICAgICAgIGxldCBwcm9taXNlQ250ID0gMDtcclxuICAgICAgICBsZXQgbXlhcHBseTogRnVuY3Rpb247XHJcbiAgICAgICAgbGV0IG15cmVqZWN0OiBGdW5jdGlvbjtcclxuXHJcbiAgICAgICAgbGV0IG15UHJvbWlzZSA9IG5ldyBQcm9taXNlKChhcHBseTogRnVuY3Rpb24sIHJlamVjdDogRnVuY3Rpb24pID0+IHtcclxuICAgICAgICAgICAgbXlhcHBseSA9IGFwcGx5O1xyXG4gICAgICAgICAgICBteXJlamVjdCA9IHJlamVjdDtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgbGV0IHRoZW5leGVjdXRvciA9ICgpOiBJUHJvbWlzZSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghIW15YXBwbHkpIHtcclxuICAgICAgICAgICAgICAgIG15YXBwbHkoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBteWFwcGx5ID0gbnVsbDtcclxuICAgICAgICAgICAgbXlyZWplY3QgPSBudWxsO1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9O1xyXG4gICAgICAgICg8YW55PnRoZW5leGVjdXRvcikuX19sYXN0X18gPSB0cnVlO1xyXG5cclxuICAgICAgICBsZXQgY2F0Y2hleGV1dG9yID0gKCk6IElQcm9taXNlID0+IHtcclxuICAgICAgICAgICAgaWYgKCEhbXlyZWplY3QpIHtcclxuICAgICAgICAgICAgICAgIG15cmVqZWN0KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbXlyZWplY3QgPSBudWxsO1xyXG4gICAgICAgICAgICBteWFwcGx5ID0gbnVsbDtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfTtcclxuICAgICAgICAoPGFueT5jYXRjaGV4ZXV0b3IpLl9fbGFzdF9fID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgZm9yIChsZXQgY250ID0gMDsgY250IDwgcHJvbWlzZXMubGVuZ3RoOyBjbnQrKykge1xyXG4gICAgICAgICAgICBwcm9taXNlc1tjbnRdLnRoZW4odGhlbmV4ZWN1dG9yKTtcclxuICAgICAgICAgICAgcHJvbWlzZXNbY250XS5jYXRjaChjYXRjaGV4ZXV0b3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbXlQcm9taXNlO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyByZWplY3QocmVhc29uOiBhbnkpOiBQcm9taXNlIHtcclxuICAgICAgICBsZXQgcmV0VmFsID0gbmV3IFByb21pc2UoKHJlc29sdmU6IGFueSwgcmVqZWN0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgLy9ub3QgcmVhbGx5wqBkb2FibGUgd2l0aG91dCBhIGhhY2tcclxuICAgICAgICAgICAgaWYgKHJlYXNvbiBpbnN0YW5jZW9mIFByb21pc2UpIHtcclxuICAgICAgICAgICAgICAgIHJlYXNvbi50aGVuKCh2YWw6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlamVjdCh2YWwpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZWplY3QocmVhc29uKTtcclxuICAgICAgICAgICAgICAgIH0sIDEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiByZXRWYWw7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHJlc29sdmUocmVhc29uOiBhbnkpOiBQcm9taXNlIHtcclxuICAgICAgICBsZXQgcmV0VmFsID0gbmV3IFByb21pc2UoKHJlc29sdmU6IGFueSwgcmVqZWN0OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgLy9ub3QgcmVhbGx5wqBkb2FibGUgd2l0aG91dCBhIGhhY2tcclxuICAgICAgICAgICAgaWYgKHJlYXNvbiBpbnN0YW5jZW9mIFByb21pc2UpIHtcclxuICAgICAgICAgICAgICAgIHJlYXNvbi50aGVuKCh2YWwpID0+IHJlc29sdmUodmFsKSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlYXNvbik7XHJcbiAgICAgICAgICAgICAgICB9LCAxKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gcmV0VmFsO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICB0aGVuKGV4ZWN1dG9yRnVuYzogKHZhbD86IGFueSkgPT4gYW55LCBjYXRjaGZ1bmM/OiAodmFsPzogYW55KSA9PiBhbnkpOiBQcm9taXNlIHtcclxuICAgICAgICB0aGlzLmFsbEZ1bmNzLnB1c2goe1widGhlblwiOiBleGVjdXRvckZ1bmN9KTtcclxuICAgICAgICBpZiAoY2F0Y2hmdW5jKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWxsRnVuY3MucHVzaCh7XCJjYXRjaFwiOiBjYXRjaGZ1bmN9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zcGxpY2VMYXN0RnVuY3MoKTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICBjYXRjaChleGVjdXRvckZ1bmM6ICh2YWw/OiBhbnkpID0+IHZvaWQpOiBQcm9taXNlIHtcclxuICAgICAgICB0aGlzLmFsbEZ1bmNzLnB1c2goe1wiY2F0Y2hcIjogZXhlY3V0b3JGdW5jfSk7XHJcbiAgICAgICAgdGhpcy5zcGxpY2VMYXN0RnVuY3MoKTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICBmaW5hbGx5KGV4ZWN1dG9yRnVuYzogKCkgPT4gdm9pZCk6IFByb21pc2Uge1xyXG4gICAgICAgIGlmICgoPGFueT50aGlzKS5fX3JlYXNvbl9fKSB7XHJcbiAgICAgICAgICAgICg8YW55PnRoaXMpLl9fcmVhc29uX18uZmluYWxseShleGVjdXRvckZ1bmMpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmFsbEZ1bmNzLnB1c2goe1wiZmluYWxseVwiOiBleGVjdXRvckZ1bmN9KTtcclxuICAgICAgICB0aGlzLnNwbGljZUxhc3RGdW5jcygpO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCByZXNvbHZlKHZhbD86IGFueSkge1xyXG5cclxuICAgICAgICB3aGlsZSAodGhpcy5hbGxGdW5jcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmFsbEZ1bmNzWzBdLnRoZW4pIHtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxldCBmbiA9IHRoaXMuYWxsRnVuY3Muc2hpZnQoKTtcclxuXHJcbiAgICAgICAgICAgIGxldCBmdW5jUmVzdWx0ID0gT3B0aW9uYWwuZnJvbU51bGxhYmxlKGZuLnRoZW4odmFsKSk7XHJcblxyXG4gICAgICAgICAgICBpZiAoZnVuY1Jlc3VsdC5pc1ByZXNlbnQoKSkge1xyXG4gICAgICAgICAgICAgICAgZnVuY1Jlc3VsdCA9IGZ1bmNSZXN1bHQuZmxhdE1hcCgpO1xyXG4gICAgICAgICAgICAgICAgdmFsID0gZnVuY1Jlc3VsdC52YWx1ZTtcclxuICAgICAgICAgICAgICAgIGlmICh2YWwgaW5zdGFuY2VvZiBQcm9taXNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy92YXIgZnVuYyA9IChuZXdWYWw6IGFueSkgPT4ge3RoaXMucmVzb2x2ZShuZXdWYWwpfTtcclxuICAgICAgICAgICAgICAgICAgICAvL2Z1bmMuX19sYXN0X18gID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAvL3ZhbC50aGVuKGZ1bmMpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHJhbnNmZXJJbnRvTmV3UHJvbWlzZSh2YWwpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5hcHB5RmluYWxseSgpO1xyXG4gICAgICAgIHRoaXMuc3RhdHVzID0gUHJvbWlzZVN0YXR1cy5GVUxMRklMTEVEO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCByZWplY3QodmFsPzogYW55KSB7XHJcblxyXG4gICAgICAgIHdoaWxlICh0aGlzLmFsbEZ1bmNzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5hbGxGdW5jc1swXS5maW5hbGx5KSB7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB2YXIgZm4gPSB0aGlzLmFsbEZ1bmNzLnNoaWZ0KCk7XHJcbiAgICAgICAgICAgIGlmIChmbi5jYXRjaCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIGZ1bmNSZXN1bHQgPSBPcHRpb25hbC5mcm9tTnVsbGFibGUoZm4uY2F0Y2godmFsKSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZnVuY1Jlc3VsdC5pc1ByZXNlbnQoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGZ1bmNSZXN1bHQgPSBmdW5jUmVzdWx0LmZsYXRNYXAoKTtcclxuICAgICAgICAgICAgICAgICAgICB2YWwgPSBmdW5jUmVzdWx0LnZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWwgaW5zdGFuY2VvZiBQcm9taXNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vdmFsLnRoZW4oKG5ld1ZhbDogYW55KSA9PiB7dGhpcy5yZXNvbHZlKG5ld1ZhbCl9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50cmFuc2ZlckludG9OZXdQcm9taXNlKHZhbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0dXMgPSBQcm9taXNlU3RhdHVzLlJFSkVDVEVEO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zdGF0dXMgPSBQcm9taXNlU3RhdHVzLlJFSkVDVEVEO1xyXG4gICAgICAgIHRoaXMuYXBweUZpbmFsbHkoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgYXBweUZpbmFsbHkoKSB7XHJcbiAgICAgICAgd2hpbGUgKHRoaXMuYWxsRnVuY3MubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHZhciBmbiA9IHRoaXMuYWxsRnVuY3Muc2hpZnQoKTtcclxuICAgICAgICAgICAgaWYgKGZuLmZpbmFsbHkpIHtcclxuICAgICAgICAgICAgICAgIGZuLmZpbmFsbHkoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNwbGljZUxhc3RGdW5jcygpIHtcclxuICAgICAgICBsZXQgbGFzdEZ1bmNzID0gW107XHJcbiAgICAgICAgbGV0IHJlc3QgPSBbXTtcclxuICAgICAgICBmb3IgKGxldCBjbnQgPSAwOyBjbnQgPCB0aGlzLmFsbEZ1bmNzLmxlbmd0aDsgY250KyspIHtcclxuICAgICAgICAgICAgZm9yIChsZXQga2V5IGluIHRoaXMuYWxsRnVuY3NbY250XSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYWxsRnVuY3NbY250XVtrZXldLl9fbGFzdF9fKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGFzdEZ1bmNzLnB1c2godGhpcy5hbGxGdW5jc1tjbnRdKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdC5wdXNoKHRoaXMuYWxsRnVuY3NbY250XSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5hbGxGdW5jcyA9IHJlc3QuY29uY2F0KGxhc3RGdW5jcyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSB0cmFuc2ZlckludG9OZXdQcm9taXNlKHZhbDogYW55KSB7XHJcbiAgICAgICAgZm9yICh2YXIgY250ID0gMDsgY250IDwgdGhpcy5hbGxGdW5jcy5sZW5ndGg7IGNudCsrKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGtleSBpbiB0aGlzLmFsbEZ1bmNzW2NudF0pIHtcclxuICAgICAgICAgICAgICAgIHZhbFtrZXldKHRoaXMuYWxsRnVuY3NbY250XVtrZXldKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIGEgY2FuY2VsbGFibGUgcHJvbWlzZVxyXG4gKiBhIFByb21pc2Ugd2l0aCBhIGNhbmNlbCBmdW5jdGlvbiwgd2hpY2ggY2FuIGJlIGNhbmNlbGxlbmQgYW55IHRpbWVcclxuICogdGhpcyBpcyB1c2VmdWwgZm9yIHByb21pc2VzIHdoaWNoIHVzZSBjYW5jZWxsYWJsZSBhc3luY2hyb25vdXMgb3BlcmF0aW9uc1xyXG4gKiBub3RlLCBldmVuIGluIGEgY2FuY2VsIHN0YXRlLCB0aGUgZmluYWxseSBvZiB0aGUgcHJvbWlzZSBpcyBleGVjdXRlZCwgaG93ZXZlclxyXG4gKiBzdWJzZXF1ZW50IHRoZW5zIGFyZSBub3QgYW55bW9yZS5cclxuICogVGhlIGN1cnJlbnQgdGhlbiBob3dldmVyIGlzIGZpc2hlZCBvciBhIGNhdGNoIGlzIGNhbGxlZCBkZXBlbmRpbmcgb24gaG93IHRoZSBvdXRlclxyXG4gKiBvcGVyYXRpb24gcmVhY3RzIHRvIGEgY2FuY2VsIG9yZGVyLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIENhbmNlbGxhYmxlUHJvbWlzZSBleHRlbmRzIFByb21pc2Uge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHBhcmFtIGV4ZWN1dG9yIGFzeW5jaHJvbm91cyBjYWxsYmFjayBvcGVyYXRpb24gd2hpY2ggdHJpZ2dlcnMgdGhlIGNhbGxiYWNrXHJcbiAgICAgKiBAcGFyYW0gY2FuY2VsbGF0b3IgY2FuY2VsIG9wZXJhdGlvbiwgc2VwYXJhdGUgZnJvbSB0aGUgdHJpZ2dlciBvcGVyYXRpb25cclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IoZXhlY3V0b3I6IChyZXNvbHZlOiAodmFsPzogYW55KSA9PiB2b2lkLCByZWplY3Q6ICh2YWw/OiBhbnkpID0+IHZvaWQpID0+IHZvaWQsIGNhbmNlbGxhdG9yOiAoKSA9PiB2b2lkKSB7XHJcbiAgICAgICAgc3VwZXIoZXhlY3V0b3IpO1xyXG4gICAgICAgIHRoaXMuY2FuY2VsbGF0b3IgPSBjYW5jZWxsYXRvcjtcclxuICAgIH1cclxuXHJcbiAgICBjYW5jZWwoKSB7XHJcbiAgICAgICAgdGhpcy5zdGF0dXMgPSBQcm9taXNlU3RhdHVzLlJFSkVDVEVEO1xyXG4gICAgICAgIHRoaXMuYXBweUZpbmFsbHkoKTtcclxuICAgICAgICAvL2xldHMgdGVybWluYXRlIGl0IG9uY2UgYW5kIGZvciBhbGwsIHRoZSBmaW5hbGx5IGhhcyBiZWVuIGFwcGxpZWRcclxuICAgICAgICB0aGlzLmFsbEZ1bmNzID0gW107XHJcbiAgICB9XHJcblxyXG4gICAgdGhlbihleGVjdXRvckZ1bmM6ICh2YWw/OiBhbnkpID0+IGFueSwgY2F0Y2hmdW5jPzogKHZhbD86IGFueSkgPT4gYW55KTogQ2FuY2VsbGFibGVQcm9taXNlIHtcclxuICAgICAgICByZXR1cm4gPENhbmNlbGxhYmxlUHJvbWlzZT5zdXBlci50aGVuKGV4ZWN1dG9yRnVuYywgY2F0Y2hmdW5jKTtcclxuICAgIH1cclxuXHJcbiAgICBjYXRjaChleGVjdXRvckZ1bmM6ICh2YWw/OiBhbnkpID0+IHZvaWQpOiBDYW5jZWxsYWJsZVByb21pc2Uge1xyXG4gICAgICAgIHJldHVybiA8Q2FuY2VsbGFibGVQcm9taXNlPnN1cGVyLmNhdGNoKGV4ZWN1dG9yRnVuYyk7XHJcbiAgICB9XHJcblxyXG4gICAgZmluYWxseShleGVjdXRvckZ1bmM6ICgpID0+IHZvaWQpOiBDYW5jZWxsYWJsZVByb21pc2Uge1xyXG4gICAgICAgIHJldHVybiA8Q2FuY2VsbGFibGVQcm9taXNlPnN1cGVyLmZpbmFsbHkoZXhlY3V0b3JGdW5jKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNhbmNlbGxhdG9yID0gKCkgPT4ge1xyXG4gICAgfTtcclxufVxyXG5cclxuXHJcblxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBRUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBV0E7Ozs7OztBQU1BO0FBQ0E7QUFNQTtBQUFBO0FBSkE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7O0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBOztBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUE5TkE7QUFnT0E7Ozs7Ozs7O0FBUUE7QUFDQTtBQUFBO0FBRUE7OztBQUdBO0FBQ0E7QUFBQTtBQXdCQTtBQUNBO0FBdkJBOztBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBSUE7QUFBQTtBQWhDQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/main/typescript/ext/monadish/Promise.ts\n");
/***/ }),
/***/ "./src/main/typescript/ext/monadish/SourcesCollectors.ts":
/*!***************************************************************!*\
!*** ./src/main/typescript/ext/monadish/SourcesCollectors.ts ***!
\***************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\r\n/* Licensed to the Apache Software Foundation (ASF) under one or more\r\n * contributor license agreements. See the NOTICE file distributed with\r\n * this work for additional information regarding copyright ownership.\r\n * The ASF licenses this file to you under the Apache License, Version 2.0\r\n * (the \"License\"); you may not use this file except in compliance with\r\n * the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Stream_1 = __webpack_require__(/*! ./Stream */ \"./src/main/typescript/ext/monadish/Stream.ts\");\r\n/**\r\n * implementation of iteratable on top of array\r\n */\r\nvar ArrayStreamDataSource = /** @class */ (function () {\r\n function ArrayStreamDataSource() {\r\n var value = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n value[_i] = arguments[_i];\r\n }\r\n this.dataPos = -1;\r\n this.value = value;\r\n }\r\n ArrayStreamDataSource.prototype.hasNext = function () {\r\n return this.value.length - 1 > this.dataPos;\r\n };\r\n ArrayStreamDataSource.prototype.next = function () {\r\n this.dataPos++;\r\n return this.value[this.dataPos];\r\n };\r\n ArrayStreamDataSource.prototype.reset = function () {\r\n this.dataPos = -1;\r\n };\r\n return ArrayStreamDataSource;\r\n}());\r\nexports.ArrayStreamDataSource = ArrayStreamDataSource;\r\n/**\r\n * an intermediate data source wich prefilters\r\n * incoming stream data\r\n * and lets only the data out which\r\n * passes the filter function check\r\n */\r\nvar FilteredStreamDatasource = /** @class */ (function () {\r\n function FilteredStreamDatasource(filterFunc, parent) {\r\n this.filteredNext = null;\r\n this.filterFunc = filterFunc;\r\n this.inputDataSource = parent;\r\n }\r\n /**\r\n * in order to filter we have to make a look ahead until the\r\n * first next allowed element\r\n * hence we prefetch the element and then\r\n * serve it via next\r\n */\r\n FilteredStreamDatasource.prototype.hasNext = function () {\r\n while (this.filteredNext == null && this.inputDataSource.hasNext()) {\r\n var next = this.inputDataSource.next();\r\n if (this.filterFunc(next)) {\r\n this.filteredNext = next;\r\n return true;\r\n }\r\n else {\r\n this.filteredNext = null;\r\n }\r\n }\r\n return this.filteredNext != null;\r\n };\r\n /**\r\n * serve the next element\r\n */\r\n FilteredStreamDatasource.prototype.next = function () {\r\n var ret = this.filteredNext;\r\n this.filteredNext = null;\r\n //We have to call hasNext, to roll another\r\n //prefetch in case someone runs next\r\n //sequentially without calling hasNext\r\n this.hasNext();\r\n return ret;\r\n };\r\n FilteredStreamDatasource.prototype.reset = function () {\r\n this.filteredNext = null;\r\n this.inputDataSource.reset();\r\n };\r\n return FilteredStreamDatasource;\r\n}());\r\nexports.FilteredStreamDatasource = FilteredStreamDatasource;\r\n/**\r\n * an intermediate datasource which maps the items from\r\n * one into another\r\n */\r\nvar MappedStreamDataSource = /** @class */ (function () {\r\n function MappedStreamDataSource(mapFunc, parent) {\r\n this.mapFunc = mapFunc;\r\n this.inputDataSource = parent;\r\n }\r\n MappedStreamDataSource.prototype.hasNext = function () {\r\n return this.inputDataSource.hasNext();\r\n };\r\n MappedStreamDataSource.prototype.next = function () {\r\n return this.mapFunc(this.inputDataSource.next());\r\n };\r\n MappedStreamDataSource.prototype.reset = function () {\r\n this.inputDataSource.reset();\r\n };\r\n return MappedStreamDataSource;\r\n}());\r\nexports.MappedStreamDataSource = MappedStreamDataSource;\r\n/**\r\n * Same for flatmap to deal with element -> stream mappings\r\n */\r\nvar FlatMapStreamDataSource = /** @class */ (function () {\r\n function FlatMapStreamDataSource(func, parent) {\r\n this.mapFunc = func;\r\n this.inputDataSource = parent;\r\n }\r\n FlatMapStreamDataSource.prototype.hasNext = function () {\r\n return this.resolveCurrentNext() || this.resolveNextNext();\r\n };\r\n FlatMapStreamDataSource.prototype.resolveCurrentNext = function () {\r\n var next = false;\r\n if (this.activeDataSource) {\r\n next = this.activeDataSource.hasNext();\r\n }\r\n return next;\r\n };\r\n FlatMapStreamDataSource.prototype.resolveNextNext = function () {\r\n var next = false;\r\n while (!next && this.inputDataSource.hasNext()) {\r\n var mapped = this.mapFunc(this.inputDataSource.next());\r\n if (Array.isArray(mapped)) {\r\n this.activeDataSource = new (ArrayStreamDataSource.bind.apply(ArrayStreamDataSource, __spreadArrays([void 0], mapped)))();\r\n }\r\n else {\r\n this.activeDataSource = mapped;\r\n }\r\n next = this.activeDataSource.hasNext();\r\n }\r\n return next;\r\n };\r\n FlatMapStreamDataSource.prototype.next = function () {\r\n return this.activeDataSource.next();\r\n };\r\n FlatMapStreamDataSource.prototype.reset = function () {\r\n this.inputDataSource.reset();\r\n };\r\n return FlatMapStreamDataSource;\r\n}());\r\nexports.FlatMapStreamDataSource = FlatMapStreamDataSource;\r\n/**\r\n * For the time being we only need one collector\r\n * a collector which collects a stream back into arrays\r\n */\r\nvar ArrayCollector = /** @class */ (function () {\r\n function ArrayCollector() {\r\n this.data = [];\r\n }\r\n ArrayCollector.prototype.collect = function (element) {\r\n this.data.push(element);\r\n };\r\n Object.defineProperty(ArrayCollector.prototype, \"finalValue\", {\r\n get: function () {\r\n return this.data;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ArrayCollector;\r\n}());\r\nexports.ArrayCollector = ArrayCollector;\r\n/**\r\n * collects an assoc stream back to an assoc array\r\n */\r\nvar AssocArrayCollector = /** @class */ (function () {\r\n function AssocArrayCollector() {\r\n this.finalValue = {};\r\n }\r\n AssocArrayCollector.prototype.collect = function (element) {\r\n var _a, _b;\r\n this.finalValue[_a = element[0], (_a !== null && _a !== void 0 ? _a : element)] = (_b = element[1], (_b !== null && _b !== void 0 ? _b : true));\r\n };\r\n return AssocArrayCollector;\r\n}());\r\nexports.AssocArrayCollector = AssocArrayCollector;\r\n/**\r\n * Form data collector for key value pair streams\r\n */\r\nvar FormDataCollector = /** @class */ (function () {\r\n function FormDataCollector() {\r\n this.finalValue = new FormData();\r\n }\r\n FormDataCollector.prototype.collect = function (element) {\r\n this.finalValue.append(element.key, element.value);\r\n };\r\n return FormDataCollector;\r\n}());\r\nexports.FormDataCollector = FormDataCollector;\r\n/**\r\n * Form data collector for DomQuery streams\r\n */\r\nvar QueryFormDataCollector = /** @class */ (function () {\r\n function QueryFormDataCollector() {\r\n this.finalValue = new FormData();\r\n }\r\n QueryFormDataCollector.prototype.collect = function (element) {\r\n var toMerge = element.encodeFormElement();\r\n if (toMerge.isPresent()) {\r\n this.finalValue.append(element.name.value, toMerge.get(element.name).value);\r\n }\r\n };\r\n return QueryFormDataCollector;\r\n}());\r\nexports.QueryFormDataCollector = QueryFormDataCollector;\r\n/**\r\n * Encoded String collector from dom query streams\r\n */\r\nvar QueryFormStringCollector = /** @class */ (function () {\r\n function QueryFormStringCollector() {\r\n this.formData = [];\r\n }\r\n QueryFormStringCollector.prototype.collect = function (element) {\r\n var toMerge = element.encodeFormElement();\r\n if (toMerge.isPresent()) {\r\n this.formData.push([element.name.value, toMerge.get(element.name).value]);\r\n }\r\n };\r\n Object.defineProperty(QueryFormStringCollector.prototype, \"finalValue\", {\r\n get: function () {\r\n return Stream_1.Stream.of.apply(Stream_1.Stream, this.formData).map(function (keyVal) { return keyVal.join(\"=\"); })\r\n .reduce(function (item1, item2) { return [item1, item2].join(\"&\"); })\r\n .orElse(\"\").value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return QueryFormStringCollector;\r\n}());\r\nexports.QueryFormStringCollector = QueryFormStringCollector;\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbWFpbi90eXBlc2NyaXB0L2V4dC9tb25hZGlzaC9Tb3VyY2VzQ29sbGVjdG9ycy50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tYWluL3R5cGVzY3JpcHQvZXh0L21vbmFkaXNoL1NvdXJjZXNDb2xsZWN0b3JzLnRzP2ZhMDgiXSwic291cmNlc0NvbnRlbnQiOlsiLyogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZSBvciBtb3JlXHJcbiAqIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUgZGlzdHJpYnV0ZWQgd2l0aFxyXG4gKiB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuXHJcbiAqIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wXHJcbiAqICh0aGUgXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGhcclxuICogdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcclxuICpcclxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuICpcclxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxyXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXHJcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxyXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXHJcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7U3RyZWFtLCBTdHJlYW1NYXBwZXJ9IGZyb20gXCIuL1N0cmVhbVwiO1xyXG5pbXBvcnQge0RvbVF1ZXJ5fSBmcm9tIFwiLi9Eb21RdWVyeVwiO1xyXG5cclxuLyoqXHJcbiAqIEV2ZXJ5IGRhdGEgc291cmNlIHdpY2ggZmVlZHMgZGF0YSBpbnRvIHRoZSBsYXp5IHN0cmVhbVxyXG4gKiBvciBzdHJlYW0gZ2VuZXJhbGx5IG11c3QgaW1wbGVtZW50IHRoaXMgaW50ZXJmYWNlXHJcbiAqXHJcbiAqIEl0IGlzIGJhc2ljYWxseSBhbiBpdGVyYXRhYmxlIHRvIHRoZSBjb3JlXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIElTdHJlYW1EYXRhU291cmNlPFQ+IHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEByZXR1cm5zIHRydWUgaWYgYWRkaXRpb25hbCBkYXRhIGlzIHByZXNlbnRcclxuICAgICAqL1xyXG4gICAgaGFzTmV4dCgpOiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogZmFsc2UgaWYgbm90XHJcbiAgICAgKi9cclxuICAgIG5leHQoKTogVDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIHJlc2V0cyB0aGUgcG9zaXRpb24gdG8gdGhlIGJlZ2lubmluZ1xyXG4gICAgICovXHJcbiAgICByZXNldCgpOiB2b2lkO1xyXG59XHJcblxyXG4vKipcclxuICogQSBjb2xsZWN0b3IsIG5lZWRzIHRvIGJlIGltcGxlbWVudGVkXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIElDb2xsZWN0b3I8VCwgUz4ge1xyXG4gICAgLyoqXHJcbiAgICAgKiB0aGlzIG1ldGhvZCBiYXNpY2FsbHkgdGFrZXMgYSBzaW5nbGUgc3RyZWFtIGVsZW1lbnRcclxuICAgICAqIGFuZCBkb2VzIHNvbWV0aGluZyB3aXRoIGl0IChjb2xsZWN0aW5nIGl0IG9uZSB3YXkgb3IgdGhlIG90aGVyXHJcbiAgICAgKiBpbiBtb3N0IGNhc2VzKVxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBlbGVtZW50XHJcbiAgICAgKi9cclxuICAgIGNvbGxlY3QoZWxlbWVudDogVCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiB0aGUgZmluYWwgcmVzdWx0IGFmdGVyIGFsbCB0aGUgY29sbGVjdGluZyBpcyBkb25lXHJcbiAgICAgKi9cclxuICAgIGZpbmFsVmFsdWU6IFM7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBpbXBsZW1lbnRhdGlvbiBvZiBpdGVyYXRhYmxlIG9uIHRvcCBvZiBhcnJheVxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEFycmF5U3RyZWFtRGF0YVNvdXJjZTxUPiBpbXBsZW1lbnRzIElTdHJlYW1EYXRhU291cmNlPFQ+IHtcclxuICAgIHZhbHVlOiBBcnJheTxUPjtcclxuICAgIGRhdGFQb3MgPSAtMTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvciguLi52YWx1ZTogQXJyYXk8VD4pIHtcclxuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgaGFzTmV4dCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZS5sZW5ndGggLSAxID4gdGhpcy5kYXRhUG9zO1xyXG4gICAgfVxyXG5cclxuICAgIG5leHQoKTogVCB7XHJcbiAgICAgICAgdGhpcy5kYXRhUG9zKys7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVbdGhpcy5kYXRhUG9zXTtcclxuICAgIH1cclxuXHJcbiAgICByZXNldCgpIHtcclxuICAgICAgICB0aGlzLmRhdGFQb3MgPSAtMTtcclxuICAgIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIGFuIGludGVybWVkaWF0ZSBkYXRhIHNvdXJjZSB3aWNoIHByZWZpbHRlcnNcclxuICogaW5jb21pbmcgc3RyZWFtIGRhdGFcclxuICogYW5kIGxldHMgb25seSB0aGUgZGF0YSBvdXQgd2hpY2hcclxuICogcGFzc2VzIHRoZSBmaWx0ZXIgZnVuY3Rpb24gY2hlY2tcclxuICovXHJcbmV4cG9ydCBjbGFzcyBGaWx0ZXJlZFN0cmVhbURhdGFzb3VyY2U8VD4gaW1wbGVtZW50cyBJU3RyZWFtRGF0YVNvdXJjZTxUPiB7XHJcblxyXG4gICAgZmlsdGVyRnVuYzogKFQpID0+IGJvb2xlYW47XHJcbiAgICBpbnB1dERhdGFTb3VyY2U6IElTdHJlYW1EYXRhU291cmNlPFQ+O1xyXG5cclxuICAgIGZpbHRlcmVkTmV4dDogVCA9IG51bGw7XHJcblxyXG4gICAgY29uc3RydWN0b3IoZmlsdGVyRnVuYzogKFQpID0+IGJvb2xlYW4sIHBhcmVudDogSVN0cmVhbURhdGFTb3VyY2U8VD4pIHtcclxuICAgICAgICB0aGlzLmZpbHRlckZ1bmMgPSBmaWx0ZXJGdW5jO1xyXG4gICAgICAgIHRoaXMuaW5wdXREYXRhU291cmNlID0gcGFyZW50O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogaW4gb3JkZXIgdG8gZmlsdGVyIHdlIGhhdmUgdG8gbWFrZSBhIGxvb2sgYWhlYWQgdW50aWwgdGhlXHJcbiAgICAgKiBmaXJzdCBuZXh0IGFsbG93ZWQgZWxlbWVudFxyXG4gICAgICogaGVuY2Ugd2UgcHJlZmV0Y2ggdGhlIGVsZW1lbnQgYW5kIHRoZW5cclxuICAgICAqIHNlcnZlIGl0IHZpYSBuZXh0XHJcbiAgICAgKi9cclxuICAgIGhhc05leHQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgd2hpbGUgKHRoaXMuZmlsdGVyZWROZXh0ID09IG51bGwgJiYgdGhpcy5pbnB1dERhdGFTb3VyY2UuaGFzTmV4dCgpKSB7XHJcbiAgICAgICAgICAgIGxldCBuZXh0OiBUID0gPFQ+dGhpcy5pbnB1dERhdGFTb3VyY2UubmV4dCgpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5maWx0ZXJGdW5jKG5leHQpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcmVkTmV4dCA9IG5leHQ7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyZWROZXh0ID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXJlZE5leHQgIT0gbnVsbDtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBzZXJ2ZSB0aGUgbmV4dCBlbGVtZW50XHJcbiAgICAgKi9cclxuICAgIG5leHQoKTogVCB7XHJcbiAgICAgICAgbGV0IHJldCA9IHRoaXMuZmlsdGVyZWROZXh0O1xyXG4gICAgICAgIHRoaXMuZmlsdGVyZWROZXh0ID0gbnVsbDtcclxuICAgICAgICAvL1dlIGhhdmUgdG8gY2FsbCBoYXNOZXh0LCB0byByb2xsIGFub3RoZXJcclxuICAgICAgICAvL3ByZWZldGNoIGluIGNhc2Ugc29tZW9uZSBydW5zIG5leHRcclxuICAgICAgICAvL3NlcXVlbnRpYWxseSB3aXRob3V0IGNhbGxpbmcgaGFzTmV4dFxyXG4gICAgICAgIHRoaXMuaGFzTmV4dCgpO1xyXG4gICAgICAgIHJldHVybiByZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgcmVzZXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJlZE5leHQgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuaW5wdXREYXRhU291cmNlLnJlc2V0KCk7XHJcbiAgICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBhbiBpbnRlcm1lZGlhdGUgZGF0YXNvdXJjZSB3aGljaCBtYXBzIHRoZSBpdGVtcyBmcm9tXHJcbiAqIG9uZSBpbnRvIGFub3RoZXJcclxuICovXHJcbmV4cG9ydCBjbGFzcyBNYXBwZWRTdHJlYW1EYXRhU291cmNlPFQsIFM+IGltcGxlbWVudHMgSVN0cmVhbURhdGFTb3VyY2U8Uz4ge1xyXG5cclxuICAgIG1hcEZ1bmM6IChUKSA9PiBTO1xyXG4gICAgaW5wdXREYXRhU291cmNlOiBJU3RyZWFtRGF0YVNvdXJjZTxUPjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihtYXBGdW5jOiAoVCkgPT4gUywgcGFyZW50OiBJU3RyZWFtRGF0YVNvdXJjZTxUPikge1xyXG4gICAgICAgIHRoaXMubWFwRnVuYyA9IG1hcEZ1bmM7XHJcbiAgICAgICAgdGhpcy5pbnB1dERhdGFTb3VyY2UgPSBwYXJlbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgaGFzTmV4dCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pbnB1dERhdGFTb3VyY2UuaGFzTmV4dCgpO1xyXG4gICAgfVxyXG5cclxuICAgIG5leHQoKTogUyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubWFwRnVuYyh0aGlzLmlucHV0RGF0YVNvdXJjZS5uZXh0KCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlc2V0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaW5wdXREYXRhU291cmNlLnJlc2V0KCk7XHJcbiAgICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBTYW1lIGZvciBmbGF0bWFwIHRvIGRlYWwgd2l0aCBlbGVtZW50IC0+IHN0cmVhbSBtYXBwaW5nc1xyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEZsYXRNYXBTdHJlYW1EYXRhU291cmNlPFQsIFM+IGltcGxlbWVudHMgSVN0cmVhbURhdGFTb3VyY2U8Uz4ge1xyXG5cclxuICAgIG1hcEZ1bmM6IFN0cmVhbU1hcHBlcjxUPjtcclxuXHJcbiAgICBpbnB1dERhdGFTb3VyY2U6IElTdHJlYW1EYXRhU291cmNlPFQ+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogdGhlIGN1cnJlbnRseSBhY3RpdmUgc3RyZWFtXHJcbiAgICAgKiBjb21pbmcgZnJvbSBhbiBpbmNvbWluZyBlbGVtZW50XHJcbiAgICAgKiBvbmNlIHRoZSBlbmQgb2YgdGhpcyBvbmUgaXMgcmVhY2hlZFxyXG4gICAgICogaXQgaXMgc3dhcHBlZCBvdXQgYnkgYW5vdGhlciBvbmVcclxuICAgICAqIGZyb20gdGhlIG5leHQgZWxlbWVudFxyXG4gICAgICovXHJcbiAgICBhY3RpdmVEYXRhU291cmNlOiBJU3RyZWFtRGF0YVNvdXJjZTxTPjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihmdW5jOiBTdHJlYW1NYXBwZXI8VD4sIHBhcmVudDogSVN0cmVhbURhdGFTb3VyY2U8VD4pIHtcclxuICAgICAgICB0aGlzLm1hcEZ1bmMgPSBmdW5jO1xyXG4gICAgICAgIHRoaXMuaW5wdXREYXRhU291cmNlID0gcGFyZW50O1xyXG4gICAgfVxyXG5cclxuICAgIGhhc05leHQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucmVzb2x2ZUN1cnJlbnROZXh0KCkgfHwgdGhpcy5yZXNvbHZlTmV4dE5leHQoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHJlc29sdmVDdXJyZW50TmV4dCgpIHtcclxuICAgICAgICBsZXQgbmV4dCA9IGZhbHNlO1xyXG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZURhdGFTb3VyY2UpIHtcclxuICAgICAgICAgICAgbmV4dCA9IHRoaXMuYWN0aXZlRGF0YVNvdXJjZS5oYXNOZXh0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuZXh0O1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcmVzb2x2ZU5leHROZXh0KCkge1xyXG4gICAgICAgIGxldCBuZXh0ID0gZmFsc2U7XHJcbiAgICAgICAgd2hpbGUgKCFuZXh0ICYmIHRoaXMuaW5wdXREYXRhU291cmNlLmhhc05leHQoKSkge1xyXG4gICAgICAgICAgICBsZXQgbWFwcGVkID0gIHRoaXMubWFwRnVuYyh0aGlzLmlucHV0RGF0YVNvdXJjZS5uZXh0KCkpO1xyXG4gICAgICAgICAgICBpZihBcnJheS5pc0FycmF5KG1hcHBlZCkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlRGF0YVNvdXJjZSA9IG5ldyBBcnJheVN0cmVhbURhdGFTb3VyY2UoLi4ubWFwcGVkKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlRGF0YVNvdXJjZSA9IG1hcHBlZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBuZXh0ID0gdGhpcy5hY3RpdmVEYXRhU291cmNlLmhhc05leHQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG5leHQ7XHJcbiAgICB9XHJcblxyXG4gICAgbmV4dCgpOiBTIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmVEYXRhU291cmNlLm5leHQoKTtcclxuICAgIH1cclxuXHJcbiAgICByZXNldCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmlucHV0RGF0YVNvdXJjZS5yZXNldCgpO1xyXG4gICAgfVxyXG59XHJcblxyXG4vKipcclxuICogRm9yIHRoZSB0aW1lIGJlaW5nIHdlIG9ubHkgbmVlZCBvbmUgY29sbGVjdG9yXHJcbiAqIGEgY29sbGVjdG9yIHdoaWNoIGNvbGxlY3RzIGEgc3RyZWFtIGJhY2sgaW50byBhcnJheXNcclxuICovXHJcbmV4cG9ydCBjbGFzcyBBcnJheUNvbGxlY3RvcjxTPiBpbXBsZW1lbnRzIElDb2xsZWN0b3I8UywgQXJyYXk8Uz4+IHtcclxuICAgIHByaXZhdGUgZGF0YTogQXJyYXk8Uz4gPSBbXTtcclxuXHJcbiAgICBjb2xsZWN0KGVsZW1lbnQ6IFMpIHtcclxuICAgICAgICB0aGlzLmRhdGEucHVzaChlbGVtZW50KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZmluYWxWYWx1ZSgpOiBBcnJheTxTPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YTtcclxuICAgIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIGNvbGxlY3RzIGFuIGFzc29jIHN0cmVhbSBiYWNrIHRvIGFuIGFzc29jIGFycmF5XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgQXNzb2NBcnJheUNvbGxlY3RvcjxTPiBpbXBsZW1lbnRzIElDb2xsZWN0b3I8W3N0cmluZywgU10gfMKgc3RyaW5nLCB7W2tleTpzdHJpbmddOlN9PiB7XHJcblxyXG4gICAgZmluYWxWYWx1ZToge1trZXk6c3RyaW5nXTphbnl9ID0ge307XHJcblxyXG4gICAgY29sbGVjdChlbGVtZW50OiBbc3RyaW5nLCBTXSB8IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuZmluYWxWYWx1ZVtlbGVtZW50WzBdID8/IDxzdHJpbmc+ZWxlbWVudF0gPSBlbGVtZW50WzFdID8/IHRydWU7XHJcbiAgICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBGb3JtIGRhdGEgY29sbGVjdG9yIGZvciBrZXkgdmFsdWUgcGFpciBzdHJlYW1zXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgRm9ybURhdGFDb2xsZWN0b3IgaW1wbGVtZW50cyBJQ29sbGVjdG9yPHsga2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkgfSwgRm9ybURhdGE+IHtcclxuICAgIGZpbmFsVmFsdWU6IEZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcblxyXG4gICAgY29sbGVjdChlbGVtZW50OiB7IGtleTogc3RyaW5nOyB2YWx1ZTogYW55IH0pIHtcclxuICAgICAgICB0aGlzLmZpbmFsVmFsdWUuYXBwZW5kKGVsZW1lbnQua2V5LCBlbGVtZW50LnZhbHVlKTtcclxuICAgIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIEZvcm0gZGF0YSBjb2xsZWN0b3IgZm9yIERvbVF1ZXJ5IHN0cmVhbXNcclxuICovXHJcbmV4cG9ydCBjbGFzcyBRdWVyeUZvcm1EYXRhQ29sbGVjdG9yIGltcGxlbWVudHMgSUNvbGxlY3RvcjxEb21RdWVyeSwgRm9ybURhdGE+IHtcclxuICAgIGZpbmFsVmFsdWU6IEZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcblxyXG4gICAgY29sbGVjdChlbGVtZW50OiBEb21RdWVyeSkge1xyXG4gICAgICAgIGxldCB0b01lcmdlID0gZWxlbWVudC5lbmNvZGVGb3JtRWxlbWVudCgpO1xyXG4gICAgICAgIGlmICh0b01lcmdlLmlzUHJlc2VudCgpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmluYWxWYWx1ZS5hcHBlbmQoZWxlbWVudC5uYW1lLnZhbHVlLCB0b01lcmdlLmdldChlbGVtZW50Lm5hbWUpLnZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBFbmNvZGVkIFN0cmluZyBjb2xsZWN0b3IgZnJvbSBkb20gcXVlcnkgc3RyZWFtc1xyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFF1ZXJ5Rm9ybVN0cmluZ0NvbGxlY3RvciBpbXBsZW1lbnRzIElDb2xsZWN0b3I8RG9tUXVlcnksIHN0cmluZz4ge1xyXG5cclxuICAgIGZvcm1EYXRhOiBbW3N0cmluZywgc3RyaW5nXV0gPSA8YW55PltdO1xyXG5cclxuICAgIGNvbGxlY3QoZWxlbWVudDogRG9tUXVlcnkpIHtcclxuICAgICAgICBsZXQgdG9NZXJnZSA9IGVsZW1lbnQuZW5jb2RlRm9ybUVsZW1lbnQoKTtcclxuICAgICAgICBpZiAodG9NZXJnZS5pc1ByZXNlbnQoKSkge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm1EYXRhLnB1c2goW2VsZW1lbnQubmFtZS52YWx1ZSwgdG9NZXJnZS5nZXQoZWxlbWVudC5uYW1lKS52YWx1ZV0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXQgZmluYWxWYWx1ZSgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBTdHJlYW0ub2YoLi4udGhpcy5mb3JtRGF0YSlcclxuICAgICAgICAgICAgLm1hcDxzdHJpbmc+KGtleVZhbCA9PiBrZXlWYWwuam9pbihcIj1cIikpXHJcbiAgICAgICAgICAgIC5yZWR1Y2UoKGl0ZW0xLCBpdGVtMikgPT4gW2l0ZW0xLCBpdGVtMl0uam9pbihcIiZcIikpXHJcbiAgICAgICAgICAgIC5vckVsc2UoXCJcIikudmFsdWU7XHJcbiAgICB9XHJcbn0iXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7QUFjQTs7Ozs7Ozs7O0FBRUE7QUE4Q0E7O0FBRUE7QUFDQTtBQUlBO0FBQUE7QUFBQTtBQUFBOztBQUZBO0FBR0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQXBCQTtBQXNCQTs7Ozs7QUFLQTtBQUNBO0FBT0E7QUFGQTtBQUdBO0FBQ0E7QUFDQTtBQUVBOzs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQWpEQTtBQW1EQTs7O0FBR0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQXJCQTtBQXVCQTs7QUFFQTtBQUNBO0FBZUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBckRBO0FBdURBOzs7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQVNBO0FBUEE7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7OztBQUFBO0FBQ0E7QUFBQTtBQVZBO0FBWUE7O0FBRUE7QUFDQTtBQUFBO0FBRUE7QUFLQTtBQUhBOztBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBUEE7QUFTQTs7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUtBO0FBSEE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQU5BO0FBUUE7O0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFRQTtBQU5BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFUQTtBQVdBOztBQUVBO0FBQ0E7QUFBQTtBQUVBO0FBZUE7QUFiQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7OztBQUFBO0FBQ0E7QUFBQTtBQWpCQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/main/typescript/ext/monadish/SourcesCollectors.ts\n");
/***/ }),
/***/ "./src/main/typescript/ext/monadish/Stream.ts":
/*!****************************************************!*\
!*** ./src/main/typescript/ext/monadish/Stream.ts ***!
\****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\r\n/* Licensed to the Apache Software Foundation (ASF) under one or more\r\n * contributor license agreements. See the NOTICE file distributed with\r\n * this work for additional information regarding copyright ownership.\r\n * The ASF licenses this file to you under the Apache License, Version 2.0\r\n * (the \"License\"); you may not use this file except in compliance with\r\n * the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/*\r\n * A small stream implementation\r\n */\r\nvar Monad_1 = __webpack_require__(/*! ./Monad */ \"./src/main/typescript/ext/monadish/Monad.ts\");\r\nvar SourcesCollectors_1 = __webpack_require__(/*! ./SourcesCollectors */ \"./src/main/typescript/ext/monadish/SourcesCollectors.ts\");\r\n/**\r\n * A simple typescript based reimplementation of streams\r\n *\r\n * This is the early eval version\r\n * for a lazy eval version check, LazyStream, which is api compatible\r\n * to this implementation, however with the benefit of being able\r\n * to provide infinite data sources and generic data providers, the downside\r\n * is, it might be a tad slower in some situations\r\n */\r\nvar Stream = /** @class */ (function () {\r\n function Stream() {\r\n var value = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n value[_i] = arguments[_i];\r\n }\r\n this._limits = -1;\r\n this.pos = -1;\r\n this.value = value;\r\n }\r\n Stream.of = function () {\r\n var data = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n data[_i] = arguments[_i];\r\n }\r\n return new (Stream.bind.apply(Stream, __spreadArrays([void 0], data)))();\r\n };\r\n Stream.ofAssoc = function (data) {\r\n return this.of.apply(this, Object.keys(data)).map(function (key) { return [key, data[key]]; });\r\n };\r\n Stream.ofDataSource = function (dataSource) {\r\n var value = [];\r\n while (dataSource.hasNext()) {\r\n value.push(dataSource.next());\r\n }\r\n return new (Stream.bind.apply(Stream, __spreadArrays([void 0], value)))();\r\n };\r\n Stream.prototype.limits = function (end) {\r\n this._limits = end;\r\n return this;\r\n };\r\n Stream.prototype.onElem = function (fn) {\r\n for (var cnt = 0; cnt < this.value.length && (this._limits == -1 || cnt < this._limits); cnt++) {\r\n if (fn(this.value[cnt], cnt) === false) {\r\n break;\r\n }\r\n }\r\n return this;\r\n };\r\n Stream.prototype.each = function (fn) {\r\n this.onElem(fn);\r\n };\r\n Stream.prototype.map = function (fn) {\r\n if (!fn) {\r\n fn = function (inval) { return inval; };\r\n }\r\n var res = [];\r\n this.each(function (item, cnt) {\r\n res.push(fn(item));\r\n });\r\n return new (Stream.bind.apply(Stream, __spreadArrays([void 0], res)))();\r\n };\r\n /*\r\n * we need to implement it to fullfill the contract, although it is used only internally\r\n * all values are flattened when accessed anyway, so there is no need to call this methiod\r\n */\r\n Stream.prototype.flatMap = function (fn) {\r\n var ret = [];\r\n this.each(function (item) {\r\n var strmR = fn(item);\r\n ret = Array.isArray(strmR) ? ret.concat(strmR) : ret.concat.apply(ret, strmR.value);\r\n });\r\n return Stream.of.apply(Stream, ret);\r\n };\r\n Stream.prototype.filter = function (fn) {\r\n var res = [];\r\n this.each(function (data) {\r\n if (fn(data)) {\r\n res.push(data);\r\n }\r\n });\r\n return new (Stream.bind.apply(Stream, __spreadArrays([void 0], res)))();\r\n };\r\n Stream.prototype.reduce = function (fn, startVal) {\r\n if (startVal === void 0) { startVal = null; }\r\n var offset = startVal != null ? 0 : 1;\r\n var val1 = startVal != null ? startVal : this.value.length ? this.value[0] : null;\r\n for (var cnt = offset; cnt < this.value.length && (this._limits == -1 || cnt < this._limits); cnt++) {\r\n val1 = fn(val1, this.value[cnt]);\r\n }\r\n return Monad_1.Optional.fromNullable(val1);\r\n };\r\n Stream.prototype.first = function () {\r\n return this.value && this.value.length ? Monad_1.Optional.fromNullable(this.value[0]) : Monad_1.Optional.absent;\r\n };\r\n Stream.prototype.last = function () {\r\n //could be done via reduce, but is faster this way\r\n var length = this._limits > 0 ? Math.min(this._limits, this.value.length) : this.value.length;\r\n return Monad_1.Optional.fromNullable(length ? this.value[length - 1] : null);\r\n };\r\n Stream.prototype.anyMatch = function (fn) {\r\n for (var cnt = 0; cnt < this.value.length && (this._limits == -1 || cnt < this._limits); cnt++) {\r\n if (fn(this.value[cnt])) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n Stream.prototype.allMatch = function (fn) {\r\n if (!this.value.length) {\r\n return false;\r\n }\r\n var matches = 0;\r\n for (var cnt = 0; cnt < this.value.length; cnt++) {\r\n if (fn(this.value[cnt])) {\r\n matches++;\r\n }\r\n }\r\n return matches == this.value.length;\r\n };\r\n Stream.prototype.noneMatch = function (fn) {\r\n var matches = 0;\r\n for (var cnt = 0; cnt < this.value.length; cnt++) {\r\n if (!fn(this.value[cnt])) {\r\n matches++;\r\n }\r\n }\r\n return matches == this.value.length;\r\n };\r\n Stream.prototype.sort = function (comparator) {\r\n var newArr = this.value.slice().sort(comparator);\r\n return Stream.of.apply(Stream, newArr);\r\n };\r\n Stream.prototype.collect = function (collector) {\r\n this.each(function (data) { return collector.collect(data); });\r\n return collector.finalValue;\r\n };\r\n //-- internally exposed methods needed for the interconnectivity\r\n Stream.prototype.hasNext = function () {\r\n var isLimitsReached = this._limits != -1 && this.pos >= this._limits - 1;\r\n var isEndOfArray = this.pos >= this.value.length - 1;\r\n return !(isLimitsReached || isEndOfArray);\r\n };\r\n Stream.prototype.next = function () {\r\n if (!this.hasNext()) {\r\n return null;\r\n }\r\n this.pos++;\r\n return this.value[this.pos];\r\n };\r\n Stream.prototype.reset = function () {\r\n this.pos = -1;\r\n };\r\n return Stream;\r\n}());\r\nexports.Stream = Stream;\r\n/**\r\n * Lazy implementation of a Stream\r\n * The idea is to connect the intermediate\r\n * streams as datasources like a linked list\r\n * with reverse referencing and for special\r\n * operations like filtering flatmapping\r\n * have intermediate datasources in the list\r\n * with specialized functions.\r\n *\r\n * Sort of a modified pipe valve pattern\r\n * the streams are the pipes the intermediate\r\n * data sources are the valves\r\n *\r\n * We then can use passed in functions to control\r\n * the flow in the valves\r\n *\r\n * That way we can have a lazy evaluating stream\r\n *\r\n * So if an endpoint requests data\r\n * a callback trace goes back the stream list\r\n * which triggers an operation upwards\r\n * which sends data down the drain which then is processed\r\n * and filtered until one element hits the endpoint.\r\n *\r\n * That is repeated, until all elements are processed\r\n * or an internal limit is hit.\r\n *\r\n */\r\nvar LazyStream = /** @class */ (function () {\r\n function LazyStream(parent) {\r\n this._limits = -1;\r\n /*\r\n * needed to have the limits check working\r\n * we need to keep track of the current position\r\n * in the stream\r\n */\r\n this.pos = -1;\r\n this.dataSource = parent;\r\n }\r\n LazyStream.of = function () {\r\n var values = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n values[_i] = arguments[_i];\r\n }\r\n return new LazyStream(new (SourcesCollectors_1.ArrayStreamDataSource.bind.apply(SourcesCollectors_1.ArrayStreamDataSource, __spreadArrays([void 0], values)))());\r\n };\r\n LazyStream.ofAssoc = function (data) {\r\n return this.of.apply(this, Object.keys(data)).map(function (key) { return [key, data[key]]; });\r\n };\r\n LazyStream.ofStreamDataSource = function (value) {\r\n return new LazyStream(value);\r\n };\r\n LazyStream.prototype.hasNext = function () {\r\n if (this.isOverLimits()) {\r\n return false;\r\n }\r\n return this.dataSource.hasNext();\r\n };\r\n LazyStream.prototype.next = function () {\r\n var next = this.dataSource.next();\r\n // @ts-ignore\r\n this.pos++;\r\n return next;\r\n };\r\n LazyStream.prototype.reset = function () {\r\n this.dataSource.reset();\r\n this.pos = 0;\r\n this._limits = -1;\r\n };\r\n LazyStream.prototype.nextFilter = function (fn) {\r\n if (this.hasNext()) {\r\n var newVal = this.next();\r\n if (!fn(newVal)) {\r\n return this.nextFilter(fn);\r\n }\r\n return newVal;\r\n }\r\n return null;\r\n };\r\n LazyStream.prototype.limits = function (max) {\r\n this._limits = max;\r\n return this;\r\n };\r\n //main stream methods\r\n LazyStream.prototype.collect = function (collector) {\r\n while (this.hasNext()) {\r\n var t = this.next();\r\n collector.collect(t);\r\n }\r\n return collector.finalValue;\r\n };\r\n LazyStream.prototype.onElem = function (fn) {\r\n var _this = this;\r\n return new LazyStream(new SourcesCollectors_1.MappedStreamDataSource(function (el) {\r\n if (fn(el, _this.pos) === false) {\r\n _this.stop();\r\n }\r\n return el;\r\n }, this));\r\n };\r\n LazyStream.prototype.filter = function (fn) {\r\n return new LazyStream(new SourcesCollectors_1.FilteredStreamDatasource(fn, this));\r\n };\r\n LazyStream.prototype.map = function (fn) {\r\n return new LazyStream(new SourcesCollectors_1.MappedStreamDataSource(fn, this));\r\n };\r\n LazyStream.prototype.flatMap = function (fn) {\r\n return new LazyStream(new SourcesCollectors_1.FlatMapStreamDataSource(fn, this));\r\n };\r\n //endpoint\r\n LazyStream.prototype.each = function (fn) {\r\n while (this.hasNext()) {\r\n if (fn(this.next()) === false) {\r\n this.stop();\r\n }\r\n }\r\n };\r\n LazyStream.prototype.reduce = function (fn, startVal) {\r\n if (startVal === void 0) { startVal = null; }\r\n if (!this.hasNext()) {\r\n return Monad_1.Optional.absent;\r\n }\r\n var value1 = null;\r\n var value2 = null;\r\n if (startVal != null) {\r\n value1 = startVal;\r\n value2 = this.next();\r\n }\r\n else {\r\n value1 = this.next();\r\n if (!this.hasNext()) {\r\n return Monad_1.Optional.fromNullable(value1);\r\n }\r\n value2 = this.next();\r\n }\r\n value1 = fn(value1, value2);\r\n while (this.hasNext()) {\r\n value2 = this.next();\r\n value1 = fn(value1, value2);\r\n }\r\n return Monad_1.Optional.fromNullable(value1);\r\n };\r\n LazyStream.prototype.last = function () {\r\n if (!this.hasNext()) {\r\n return Monad_1.Optional.absent;\r\n }\r\n return this.reduce(function (el1, el2) { return el2; });\r\n };\r\n LazyStream.prototype.first = function () {\r\n this.reset();\r\n if (!this.hasNext()) {\r\n return Monad_1.Optional.absent;\r\n }\r\n return Monad_1.Optional.fromNullable(this.next());\r\n };\r\n LazyStream.prototype.anyMatch = function (fn) {\r\n while (this.hasNext()) {\r\n if (fn(this.next())) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n LazyStream.prototype.allMatch = function (fn) {\r\n while (this.hasNext()) {\r\n if (!fn(this.next())) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n LazyStream.prototype.noneMatch = function (fn) {\r\n while (this.hasNext()) {\r\n if (fn(this.next())) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n LazyStream.prototype.sort = function (comparator) {\r\n var arr = this.collect(new SourcesCollectors_1.ArrayCollector());\r\n arr = arr.sort(comparator);\r\n return LazyStream.of.apply(LazyStream, arr);\r\n };\r\n Object.defineProperty(LazyStream.prototype, \"value\", {\r\n get: function () {\r\n return this.collect(new SourcesCollectors_1.ArrayCollector());\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n LazyStream.prototype.stop = function () {\r\n this.pos = this._limits + 1000000000;\r\n };\r\n LazyStream.prototype.isOverLimits = function () {\r\n return this._limits != -1 && this.pos >= this._limits - 1;\r\n };\r\n return LazyStream;\r\n}());\r\nexports.LazyStream = LazyStream;\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbWFpbi90eXBlc2NyaXB0L2V4dC9tb25hZGlzaC9TdHJlYW0udHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbWFpbi90eXBlc2NyaXB0L2V4dC9tb25hZGlzaC9TdHJlYW0udHM/OTQ1YiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lIG9yIG1vcmVcclxuICogY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZSBkaXN0cmlidXRlZCB3aXRoXHJcbiAqIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC5cclxuICogVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjBcclxuICogKHRoZSBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aFxyXG4gKiB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxyXG4gKlxyXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG4gKlxyXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXHJcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcclxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXHJcbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcclxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXHJcbiAqL1xyXG5cclxuLypcclxuICogQSBzbWFsbCBzdHJlYW0gaW1wbGVtZW50YXRpb25cclxuICovXHJcbmltcG9ydCB7SU1vbmFkLCBJVmFsdWVIb2xkZXIsIE9wdGlvbmFsfSBmcm9tIFwiLi9Nb25hZFwiO1xyXG5pbXBvcnQge1xyXG4gICAgQXJyYXlDb2xsZWN0b3IsXHJcbiAgICBBcnJheVN0cmVhbURhdGFTb3VyY2UsXHJcbiAgICBGaWx0ZXJlZFN0cmVhbURhdGFzb3VyY2UsIEZsYXRNYXBTdHJlYW1EYXRhU291cmNlLFxyXG4gICAgSUNvbGxlY3RvcixcclxuICAgIElTdHJlYW1EYXRhU291cmNlLFxyXG4gICAgTWFwcGVkU3RyZWFtRGF0YVNvdXJjZVxyXG59IGZyb20gXCIuL1NvdXJjZXNDb2xsZWN0b3JzXCI7XHJcblxyXG4vKlxyXG4gKiBzb21lIHR5cGVkZWZzIHRvIG1ha2UgdGhlIGNvZGUgbW9yZSByZWFiYWJsZVxyXG4gKi9cclxuZXhwb3J0IHR5cGUgU3RyZWFtTWFwcGVyPFQ+ID0gKGRhdGE6IFQpID0+IElTdHJlYW1EYXRhU291cmNlPGFueT47XHJcbmV4cG9ydCB0eXBlIEFycmF5TWFwcGVyPFQ+ID0gKGRhdGE6IFQpID0+IEFycmF5PGFueT47XHJcbmV4cG9ydCB0eXBlIEl0ZXJhdGFibGVDb25zdW1lcjxUPiA9IChkYXRhOiBULCBwb3MgPzogbnVtYmVyKSA9PiB2b2lkIHwgYm9vbGVhbjtcclxuZXhwb3J0IHR5cGUgUmVkdWNhYmxlPFQ+ID0gKHZhbDE6IFQsIHZhbDI6IFQpID0+IFQ7XHJcbmV4cG9ydCB0eXBlIE1hdGNoYWJsZTxUPiA9IChkYXRhOiBUKSA9PiBib29sZWFuO1xyXG5leHBvcnQgdHlwZSBNYXBwYWJsZTxULCBSPiA9IChkYXRhOiBUKSA9PiBSO1xyXG5leHBvcnQgdHlwZSBDb21wYXJhdG9yPFQ+ID0gKGVsMTogVCwgZWwyOiBUKSA9PiBudW1iZXI7XHJcblxyXG4vKipcclxuICogR2VuZXJpYyBpbnRlcmZhY2UgZGVmaW5pbmcgYSBzdHJlYW1cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVN0cmVhbTxUPiB7XHJcbiAgICAvKipcclxuICAgICAqIFBlcmZvcm0gdGhlIG9wZXJhdGlvbiBmbiBvbiBhIHNpbmdsZSBlbGVtZW50IGluIHRoZSBzdHJlYW0gYXQgYSB0aW1lXHJcbiAgICAgKiB0aGVuIHBhc3MgdGhlIHN0cmVhbSBvdmVyIGZvciBmdXJ0aGVyIHByb2Nlc3NpbmdcclxuICAgICAqIFRoaXMgaXMgYmFzaWNhbGx5IGFuIGludGVybWVkaWF0ZSBwb2ludCBpbiB0aGUgc3RyZWFtXHJcbiAgICAgKiB3aXRoIGZ1cnRoZXIgcHJvY2Vzc2luZyBoYXBwZW5pbmcgbGF0ZXIsIGRvIG5vdCB1c2VcclxuICAgICAqIHRoaXMgbWV0aG9kIHRvIGdhdGhlciBkYXRhIG9yIGl0ZXJhdGUgb3ZlciBhbGwgZGF0ZSBmb3IgcHJvY2Vzc2luZ1xyXG4gICAgICogKGZvciB0aGUgc2Vjb25kIGNhc2UgZWFjaCBoYXMgdG8gYmUgdXNlZClcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gZm4gdGhlIHByb2Nlc3NpbmcgZnVuY3Rpb24sIGlmIGl0IHJldHVybnMgZmFsc2UsIGZ1cnRoZXIgcHJvY2Vzc2luZyBpcyBzdG9wcGVkXHJcbiAgICAgKi9cclxuICAgIG9uRWxlbShmbjogSXRlcmF0YWJsZUNvbnN1bWVyPFQ+KTogSVN0cmVhbTxUPjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEl0ZXJhdGUgb3ZlciBhbGwgZWxlbWVudHMgaW4gdGhlIHN0cmVhbSBhbmQgZG8gc29tZSBwcm9jZXNzaW5nIHZpYSBmblxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBmbiB0YWtlcyBhIHNpbmdsZSBlbGVtZW50IGFuZCBpZiBpdCByZXR1cm5zIGZhbHNlXHJcbiAgICAgKiB0aGVuIGZ1cnRoZXIgcHJvY2Vzc2luZyBpcyBzdG9wcGVkXHJcbiAgICAgKi9cclxuICAgIGVhY2goZm46IEl0ZXJhdGFibGVDb25zdW1lcjxUPik6IHZvaWQ7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBtYXBzIGEgc2luZ2xlIGVsZW1lbnQgaW50byBhbm90aGVyIHZpYSBmblxyXG4gICAgICogQHBhcmFtIGZuIGZ1bmN0aW9uIHdoaWNoIHRha2VzIG9uZSBlbGVtZW50IGluIGFuZCByZXR1cm5zIGFub3RoZXJcclxuICAgICAqL1xyXG4gICAgbWFwPFI+KGZuPzogTWFwcGFibGU8VCwgUj4pOiBJU3RyZWFtPFI+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGFrZXMgYW4gZWxlbWVudCBpbiBhbmQgcmV0dXJucyBhIHNldCBvZiBzb21ldGhpbmdcclxuICAgICAqIHRoZSBzZXQgdGhlbiBpcyBmbGF0dGVkIGludG8gYSBzaW5nbGUgc3RyZWFtIHRvIGJlIGZ1cnRoZXIgcHJvY2Vzc2VkXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGZuXHJcbiAgICAgKi9cclxuICAgIGZsYXRNYXA8Uj4oZm4/OiBTdHJlYW1NYXBwZXI8VD4gfCBBcnJheU1hcHBlcjxUPik6IElTdHJlYW08Uj47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBmaWx0ZXJpbmcsIHRha2VzIGFuIGVsZW1lbnQgaW4gYW5kIGlzIHByb2Nlc3NlZCBieSBmbi5cclxuICAgICAqIElmIGl0IHJldHVybnMgZmFsc2UgdGhlbiBmdXJ0aGVyIHByb2Nlc3Npbmcgb24gdGhpcyBlbGVtZW50IGlzIHNraXBwZWRcclxuICAgICAqIGlmIGl0IHJldHVybnMgdHJ1ZSBpdCBpcyBwYXNzZWQgZG93biB0aGUgY2hhaW4uXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGZuXHJcbiAgICAgKi9cclxuICAgIGZpbHRlcihmbj86IE1hdGNoYWJsZTxUPik6IElTdHJlYW08VD47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBmdW5jdGlvbmFsIHJlZHVjZS4uLiB0YWtlcyB0d28gZWxlbWVudHMgaW4gdGhlIHN0cmVhbSBhbmQgcmVkdWNlcyB0b1xyXG4gICAgICogb25lIGZyb20gbGVmdCB0byByaWdodFxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBmbiB0aGUgcmVkdWN0aW9uIGZ1bmN0aW9uIGZvciBpbnN0YW5jZSAodmFsMSx2YWwyKSA9PiB2YWwxbCt2YWwyXHJcbiAgICAgKiBAcGFyYW0gc3RhcnRWYWwgYW4gb3B0aW9uYWwgc3RhcnRpbmcgdmFsdWUsIGlmIHByb3ZpZGVkIHRoZSB0aGUgcHJvY2Vzc2luZyBzdGFydHMgd2l0aCB0aGlzIGVsZW1lbnRcclxuICAgICAqIGFuZCBmdXJ0aGVyIGdvZXMgZG93biBpbnRvIHRoZSBzdHJlYW0sIGlmIG5vdCwgdGhlbiB0aGUgZmlyc3QgdHdvIGVsZW1lbnRzIGFyZSB0YWtlbiBhcyByZWR1Y3Rpb24gc3RhcnRpbmcgcG9pbnRcclxuICAgICAqL1xyXG4gICAgcmVkdWNlKGZuOiBSZWR1Y2FibGU8VD4sIHN0YXJ0VmFsOiBUKTogT3B0aW9uYWw8VD47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiByZXR1cm5zIHRoZSBmaXJzdCBlbGVtZW50IGluIHRoZSBzdHJlYW0gaXMgZ2l2ZW4gYXMgT3B0aW9uYWxcclxuICAgICAqL1xyXG4gICAgZmlyc3QoKTogT3B0aW9uYWw8VD47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIHRoZSBsYXN0IHN0cmVhbSBlbGVtZW50IChub3RlIGluIGVuZGxlc3Mgc3RyZWFtcyB3aXRob3V0IGZpbHRlcmluZyBhbmQgbGltaXRpbmcgeW91IHdpbGwgbmV2ZXIgcmVhY2ggdGhhdFxyXG4gICAgICogcG9pbnQgaGVuY2UgcHJvZHVjaW5nIGFuIGVuZGxlc3MgbG9vcClcclxuICAgICAqL1xyXG4gICAgbGFzdCgpOiBPcHRpb25hbDxUPjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIHJldHVybnMgdHJ1ZSBpZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgZWxlbWVudCB3aGVyZSBhIGNhbGwgZm4oZWxlbWVudCkgcHJvZHVjZXMgdHJ1ZVxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBmblxyXG4gICAgICovXHJcbiAgICBhbnlNYXRjaChmbjogTWF0Y2hhYmxlPFQ+KTogYm9vbGVhbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIHJldHVybnMgdHJ1ZSBpZiBhbGwgZWxtZW1lbnRzIHByb2R1Y2UgdHJ1ZSBvbiBhIGNhbGwgdG8gZm4oZWxlbWVudClcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gZm5cclxuICAgICAqL1xyXG4gICAgYWxsTWF0Y2goZm46IE1hdGNoYWJsZTxUPik6IGJvb2xlYW47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiByZXR1cm5zIHRydWUgaWYgbm8gZWxtZW1lbnRzIHByb2R1Y2UgdHJ1ZSBvbiBhIGNhbGwgdG8gZm4oZWxlbWVudClcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gZm5cclxuICAgICAqL1xyXG4gICAgbm9uZU1hdGNoKGZuOiBNYXRjaGFibGU8VD4pOiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29sbGVjdCB0aGUgZWxlbWVudHMgd2l0aCBhIGNvbGxlY3RvciBnaXZlblxyXG4gICAgICogVGhlcmUgYXJlIGEgbnVtYmVyIG9mIGNvbGxlY3RvcnMgcHJvdmlkZWRcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gY29sbGVjdG9yXHJcbiAgICAgKi9cclxuICAgIGNvbGxlY3QoY29sbGVjdG9yOiBJQ29sbGVjdG9yPFQsIGFueT4pOiBhbnk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBzb3J0IG9uIHRoZSBzdHJlYW0sIHRoaXMgaXMgYSBzcGVjaWFsIGNhc2VcclxuICAgICAqIG9mIGFuIGVuZHBvaW50LCBzbyB5b3VyIGRhdGEgd2hpY2ggaXMgZmVkIGluIG5lZWRzXHJcbiAgICAgKiB0byBiZSBsaW1pdGVkIG90aGVyd2lzZSBpdCB3aWxsIGZhaWxcclxuICAgICAqIGl0IHN0aWxsIHJldHVybnMgYSBzdHJlYW0gZm9yIGZ1cnRoZXIgcHJvY2Vzc2luZ1xyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBjb21wYXJhdG9yXHJcbiAgICAgKi9cclxuICAgIHNvcnQoY29tcGFyYXRvcjogQ29tcGFyYXRvcjxUPik6IElTdHJlYW08VD47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMaW1pdHMgdGhlIHN0cmVhbSB0byBhIGNlcnRhaW4gbnVtYmVyIG9mIGVsZW1lbnRzXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGVuZCB0aGUgbGltaXQgb2YgdGhlIHN0cmVhbVxyXG4gICAgICovXHJcbiAgICBsaW1pdHMoZW5kOiBudW1iZXIpOiBJU3RyZWFtPFQ+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogcmV0dXJucyB0aGUgc3RyZWFtIGNvbGxlY3RlZCBpbnRvIGFuIGFycmF5ICg5MCUgdXNlLWNhc2UgYWJicmV2aWF0aW9uXHJcbiAgICAgKi9cclxuICAgIHZhbHVlOiBBcnJheTxUPjtcclxufVxyXG5cclxuLyoqXHJcbiAqIEEgc2ltcGxlIHR5cGVzY3JpcHQgYmFzZWQgcmVpbXBsZW1lbnRhdGlvbiBvZiBzdHJlYW1zXHJcbiAqXHJcbiAqIFRoaXMgaXMgdGhlIGVhcmx5IGV2YWwgdmVyc2lvblxyXG4gKiBmb3IgYSBsYXp5IGV2YWwgdmVyc2lvbiBjaGVjaywgTGF6eVN0cmVhbSwgd2hpY2ggaXMgYXBpIGNvbXBhdGlibGVcclxuICogdG8gdGhpcyBpbXBsZW1lbnRhdGlvbiwgaG93ZXZlciB3aXRoIHRoZSBiZW5lZml0IG9mIGJlaW5nIGFibGVcclxuICogdG8gcHJvdmlkZSBpbmZpbml0ZSBkYXRhIHNvdXJjZXMgYW5kIGdlbmVyaWMgZGF0YSBwcm92aWRlcnMsIHRoZSBkb3duc2lkZVxyXG4gKiBpcywgaXQgbWlnaHQgYmUgYSB0YWQgc2xvd2VyIGluIHNvbWUgc2l0dWF0aW9uc1xyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFN0cmVhbTxUPiBpbXBsZW1lbnRzIElNb25hZDxULCBTdHJlYW08YW55Pj4sIElWYWx1ZUhvbGRlcjxBcnJheTxUPj4sIElTdHJlYW08VD4ge1xyXG5cclxuICAgIHZhbHVlOiBBcnJheTxUPjtcclxuICAgIF9saW1pdHMgPSAtMTtcclxuXHJcbiAgICBwcml2YXRlIHBvcyA9IC0xO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKC4uLnZhbHVlOiBUW10pIHtcclxuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIG9mPFQ+KC4uLmRhdGE6IEFycmF5PFQ+KTogU3RyZWFtPFQ+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFN0cmVhbTxUPiguLi5kYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgb2ZBc3NvYzxUPihkYXRhOiB7W2tleTogc3RyaW5nXTogVH0pOiBTdHJlYW08W3N0cmluZywgVF0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5vZiguLi5PYmplY3Qua2V5cyhkYXRhKSkubWFwKGtleSA9PiBba2V5LCBkYXRhW2tleV1dKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgb2ZEYXRhU291cmNlPFQ+KGRhdGFTb3VyY2U6IElTdHJlYW1EYXRhU291cmNlPFQ+KSB7XHJcbiAgICAgICAgbGV0IHZhbHVlOiBUW10gPSBbXTtcclxuICAgICAgICB3aGlsZSAoZGF0YVNvdXJjZS5oYXNOZXh0KCkpIHtcclxuICAgICAgICAgICAgdmFsdWUucHVzaChkYXRhU291cmNlLm5leHQoKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gbmV3IFN0cmVhbSguLi52YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgbGltaXRzKGVuZDogbnVtYmVyKTogU3RyZWFtPFQ+IHtcclxuICAgICAgICB0aGlzLl9saW1pdHMgPSBlbmQ7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgb25FbGVtKGZuOiAoZGF0YTogVCwgcG9zID86IG51bWJlcikgPT4gdm9pZCB8IGJvb2xlYW4pOiBTdHJlYW08VD4ge1xyXG4gICAgICAgIGZvciAobGV0IGNudCA9IDA7IGNudCA8IHRoaXMudmFsdWUubGVuZ3RoICYmICh0aGlzLl9saW1pdHMgPT0gLTEgfHwgY250IDwgdGhpcy5fbGltaXRzKTsgY250KyspIHtcclxuICAgICAgICAgICAgaWYgKGZuKHRoaXMudmFsdWVbY250XSwgY250KSA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIGVhY2goZm46IChkYXRhOiBULCBwb3MgPzogbnVtYmVyKSA9PiB2b2lkIHwgYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMub25FbGVtKGZuKTtcclxuICAgIH1cclxuXHJcbiAgICBtYXA8Uj4oZm4/OiAoZGF0YTogVCkgPT4gUik6IFN0cmVhbTxSPiB7XHJcbiAgICAgICAgaWYgKCFmbikge1xyXG4gICAgICAgICAgICBmbiA9IChpbnZhbDogYW55KSA9PiA8Uj5pbnZhbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHJlczogUltdID0gW107XHJcbiAgICAgICAgdGhpcy5lYWNoKChpdGVtLCBjbnQpID0+IHtcclxuICAgICAgICAgICAgcmVzLnB1c2goZm4oaXRlbSkpXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiBuZXcgU3RyZWFtPFI+KC4uLnJlcyk7XHJcbiAgICB9XHJcblxyXG4gICAgLypcclxuICAgICAqIHdlIG5lZWQgdG8gaW1wbGVtZW50IGl0IHRvIGZ1bGxmaWxsIHRoZSBjb250cmFjdCwgYWx0aG91Z2ggaXQgaXMgdXNlZCBvbmx5IGludGVybmFsbHlcclxuICAgICAqIGFsbCB2YWx1ZXMgYXJlIGZsYXR0ZW5lZCB3aGVuIGFjY2Vzc2VkIGFueXdheSwgc28gdGhlcmUgaXMgbm8gbmVlZCB0byBjYWxsIHRoaXMgbWV0aGlvZFxyXG4gICAgICovXHJcblxyXG4gICAgZmxhdE1hcDxJU3RyZWFtRGF0YVNvdXJjZT4oZm46IChkYXRhOiBUKSA9PiBJU3RyZWFtRGF0YVNvdXJjZSB8wqBBcnJheTxhbnk+KTogU3RyZWFtPGFueT4ge1xyXG4gICAgICAgIGxldCByZXQgPSBbXTtcclxuICAgICAgICB0aGlzLmVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBzdHJtUjogYW55ID0gZm4oaXRlbSk7XHJcbiAgICAgICAgICAgIHJldCA9IEFycmF5LmlzQXJyYXkoc3RybVIpID8gcmV0LmNvbmNhdChzdHJtUikgOiByZXQuY29uY2F0KC4uLnN0cm1SLnZhbHVlKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gPFN0cmVhbTxhbnk+PlN0cmVhbS5vZiguLi5yZXQpO1xyXG4gICAgfVxyXG5cclxuICAgIGZpbHRlcihmbj86IChkYXRhOiBUKSA9PiBib29sZWFuKTogU3RyZWFtPFQ+IHtcclxuICAgICAgICBsZXQgcmVzOiBBcnJheTxUPiA9IFtdO1xyXG4gICAgICAgIHRoaXMuZWFjaCgoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZm4oZGF0YSkpIHtcclxuICAgICAgICAgICAgICAgIHJlcy5wdXNoKGRhdGEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBTdHJlYW08VD4oLi4ucmVzKTtcclxuICAgIH1cclxuXHJcbiAgICByZWR1Y2UoZm46IFJlZHVjYWJsZTxUPiwgc3RhcnRWYWw6IFQgPSBudWxsKTogT3B0aW9uYWw8VD4ge1xyXG4gICAgICAgIGxldCBvZmZzZXQgPSBzdGFydFZhbCAhPSBudWxsID8gMCA6IDE7XHJcbiAgICAgICAgbGV0IHZhbDEgPSBzdGFydFZhbCAhPSBudWxsID8gc3RhcnRWYWwgOiB0aGlzLnZhbHVlLmxlbmd0aCA/IHRoaXMudmFsdWVbMF0gOiBudWxsO1xyXG5cclxuICAgICAgICBmb3IgKGxldCBjbnQgPSBvZmZzZXQ7IGNudCA8IHRoaXMudmFsdWUubGVuZ3RoICYmICh0aGlzLl9saW1pdHMgPT0gLTEgfHwgY250IDwgdGhpcy5fbGltaXRzKTsgY250KyspIHtcclxuICAgICAgICAgICAgdmFsMSA9IGZuKHZhbDEsIHRoaXMudmFsdWVbY250XSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBPcHRpb25hbC5mcm9tTnVsbGFibGUodmFsMSk7XHJcbiAgICB9XHJcblxyXG4gICAgZmlyc3QoKTogT3B0aW9uYWw8VD4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlICYmIHRoaXMudmFsdWUubGVuZ3RoID8gT3B0aW9uYWwuZnJvbU51bGxhYmxlKHRoaXMudmFsdWVbMF0pIDogT3B0aW9uYWwuYWJzZW50O1xyXG4gICAgfVxyXG5cclxuICAgIGxhc3QoKTogT3B0aW9uYWw8VD4ge1xyXG4gICAgICAgIC8vY291bGQgYmUgZG9uZSB2aWEgcmVkdWNlLCBidXQgaXMgZmFzdGVyIHRoaXMgd2F5XHJcbiAgICAgICAgbGV0IGxlbmd0aCA9IHRoaXMuX2xpbWl0cyA+IDAgPyBNYXRoLm1pbih0aGlzLl9saW1pdHMsIHRoaXMudmFsdWUubGVuZ3RoKSA6IHRoaXMudmFsdWUubGVuZ3RoO1xyXG5cclxuICAgICAgICByZXR1cm4gT3B0aW9uYWwuZnJvbU51bGxhYmxlKGxlbmd0aCA/IHRoaXMudmFsdWVbbGVuZ3RoIC0gMV0gOiBudWxsKTtcclxuICAgIH1cclxuXHJcbiAgICBhbnlNYXRjaChmbjogTWF0Y2hhYmxlPFQ+KTogYm9vbGVhbiB7XHJcbiAgICAgICAgZm9yIChsZXQgY250ID0gMDsgY250IDwgdGhpcy52YWx1ZS5sZW5ndGggJiYgKHRoaXMuX2xpbWl0cyA9PSAtMSB8fCBjbnQgPCB0aGlzLl9saW1pdHMpOyBjbnQrKykge1xyXG4gICAgICAgICAgICBpZiAoZm4odGhpcy52YWx1ZVtjbnRdKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGFsbE1hdGNoKGZuOiBNYXRjaGFibGU8VD4pOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIXRoaXMudmFsdWUubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IG1hdGNoZXMgPSAwO1xyXG4gICAgICAgIGZvciAobGV0IGNudCA9IDA7IGNudCA8IHRoaXMudmFsdWUubGVuZ3RoOyBjbnQrKykge1xyXG4gICAgICAgICAgICBpZiAoZm4odGhpcy52YWx1ZVtjbnRdKSkge1xyXG4gICAgICAgICAgICAgICAgbWF0Y2hlcysrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBtYXRjaGVzID09IHRoaXMudmFsdWUubGVuZ3RoO1xyXG4gICAgfVxyXG5cclxuICAgIG5vbmVNYXRjaChmbjogTWF0Y2hhYmxlPFQ+KTogYm9vbGVhbiB7XHJcbiAgICAgICAgbGV0IG1hdGNoZXMgPSAwO1xyXG4gICAgICAgIGZvciAobGV0IGNudCA9IDA7IGNudCA8IHRoaXMudmFsdWUubGVuZ3RoOyBjbnQrKykge1xyXG4gICAgICAgICAgICBpZiAoIWZuKHRoaXMudmFsdWVbY250XSkpIHtcclxuICAgICAgICAgICAgICAgIG1hdGNoZXMrKztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbWF0Y2hlcyA9PSB0aGlzLnZhbHVlLmxlbmd0aDtcclxuICAgIH1cclxuXHJcbiAgICBzb3J0KGNvbXBhcmF0b3I6IENvbXBhcmF0b3I8VD4pOiBJU3RyZWFtPFQ+IHtcclxuICAgICAgICBsZXQgbmV3QXJyID0gdGhpcy52YWx1ZS5zbGljZSgpLnNvcnQoY29tcGFyYXRvcik7XHJcbiAgICAgICAgcmV0dXJuIFN0cmVhbS5vZiguLi5uZXdBcnIpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBjb2xsZWN0KGNvbGxlY3RvcjogSUNvbGxlY3RvcjxULCBhbnk+KTogYW55IHtcclxuICAgICAgICB0aGlzLmVhY2goZGF0YSA9PiBjb2xsZWN0b3IuY29sbGVjdChkYXRhKSk7XHJcbiAgICAgICAgcmV0dXJuIGNvbGxlY3Rvci5maW5hbFZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vLS0gaW50ZXJuYWxseSBleHBvc2VkIG1ldGhvZHMgbmVlZGVkIGZvciB0aGUgaW50ZXJjb25uZWN0aXZpdHlcclxuICAgIGhhc05leHQoKSB7XHJcbiAgICAgICAgbGV0IGlzTGltaXRzUmVhY2hlZCA9IHRoaXMuX2xpbWl0cyAhPSAtMSAmJiB0aGlzLnBvcyA+PSB0aGlzLl9saW1pdHMgLSAxO1xyXG4gICAgICAgIGxldCBpc0VuZE9mQXJyYXkgPSB0aGlzLnBvcyA+PSB0aGlzLnZhbHVlLmxlbmd0aCAtIDE7XHJcbiAgICAgICAgcmV0dXJuICEoaXNMaW1pdHNSZWFjaGVkIHx8IGlzRW5kT2ZBcnJheSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmV4dCgpOiBUIHtcclxuICAgICAgICBpZiAoIXRoaXMuaGFzTmV4dCgpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnBvcysrO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlW3RoaXMucG9zXTtcclxuICAgIH1cclxuXHJcbiAgICByZXNldCgpIHtcclxuICAgICAgICB0aGlzLnBvcyA9IC0xO1xyXG4gICAgfVxyXG5cclxufVxyXG5cclxuLyoqXHJcbiAqIExhenkgaW1wbGVtZW50YXRpb24gb2YgYSBTdHJlYW1cclxuICogVGhlIGlkZWEgaXMgdG8gY29ubmVjdCB0aGUgaW50ZXJtZWRpYXRlXHJcbiAqIHN0cmVhbXMgYXMgZGF0YXNvdXJjZXMgbGlrZSBhIGxpbmtlZCBsaXN0XHJcbiAqIHdpdGggcmV2ZXJzZSByZWZlcmVuY2luZyBhbmQgZm9yIHNwZWNpYWxcclxuICogb3BlcmF0aW9ucyBsaWtlIGZpbHRlcmluZyBmbGF0bWFwcGluZ1xyXG4gKiBoYXZlIGludGVybWVkaWF0ZSBkYXRhc291cmNlcyBpbiB0aGUgbGlzdFxyXG4gKiB3aXRoIHNwZWNpYWxpemVkIGZ1bmN0aW9ucy5cclxuICpcclxuICogU29ydCBvZiBhIG1vZGlmaWVkIHBpcGUgdmFsdmUgcGF0dGVyblxyXG4gKiB0aGUgc3RyZWFtcyBhcmUgdGhlIHBpcGVzIHRoZSBpbnRlcm1lZGlhdGVcclxuICogZGF0YSBzb3VyY2VzIGFyZSB0aGUgdmFsdmVzXHJcbiAqXHJcbiAqIFdlIHRoZW4gY2FuIHVzZSBwYXNzZWQgaW4gZnVuY3Rpb25zIHRvIGNvbnRyb2xcclxuICogdGhlIGZsb3cgaW4gdGhlIHZhbHZlc1xyXG4gKlxyXG4gKiBUaGF0IHdheSB3ZSBjYW4gaGF2ZSBhIGxhenkgZXZhbHVhdGluZyBzdHJlYW1cclxuICpcclxuICogU28gaWYgYW4gZW5kcG9pbnQgcmVxdWVzdHMgZGF0YVxyXG4gKiBhIGNhbGxiYWNrIHRyYWNlIGdvZXMgYmFjayB0aGUgc3RyZWFtIGxpc3RcclxuICogd2hpY2ggdHJpZ2dlcnMgYW4gb3BlcmF0aW9uIHVwd2FyZHNcclxuICogd2hpY2ggc2VuZHMgZGF0YSBkb3duIHRoZSBkcmFpbiB3aGljaCB0aGVuIGlzIHByb2Nlc3NlZFxyXG4gKiBhbmQgZmlsdGVyZWQgdW50aWwgb25lIGVsZW1lbnQgaGl0cyB0aGUgZW5kcG9pbnQuXHJcbiAqXHJcbiAqIFRoYXQgaXMgcmVwZWF0ZWQsIHVudGlsIGFsbCBlbGVtZW50cyBhcmUgcHJvY2Vzc2VkXHJcbiAqIG9yIGFuIGludGVybmFsIGxpbWl0IGlzIGhpdC5cclxuICpcclxuICovXHJcbmV4cG9ydCBjbGFzcyBMYXp5U3RyZWFtPFQ+IGltcGxlbWVudHMgSVN0cmVhbURhdGFTb3VyY2U8VD4sIElTdHJlYW08VD4sIElNb25hZDxULCBMYXp5U3RyZWFtPGFueT4+IHtcclxuXHJcbiAgICBwcm90ZWN0ZWQgZGF0YVNvdXJjZTogSVN0cmVhbURhdGFTb3VyY2U8VD47XHJcbiAgICBfbGltaXRzID0gLTE7XHJcblxyXG4gICAgLypcclxuICAgICAqIG5lZWRlZCB0byBoYXZlIHRoZSBsaW1pdHMgY2hlY2sgd29ya2luZ1xyXG4gICAgICogd2UgbmVlZCB0byBrZWVwIHRyYWNrIG9mIHRoZSBjdXJyZW50IHBvc2l0aW9uXHJcbiAgICAgKiBpbiB0aGUgc3RyZWFtXHJcbiAgICAgKi9cclxuICAgIHBvcyA9IC0xO1xyXG5cclxuICAgIHN0YXRpYyBvZjxUPiguLi52YWx1ZXM6IEFycmF5PFQ+KTogTGF6eVN0cmVhbTxUPiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBMYXp5U3RyZWFtPFQ+KG5ldyBBcnJheVN0cmVhbURhdGFTb3VyY2UoLi4udmFsdWVzKSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIG9mQXNzb2M8VD4oZGF0YToge1trZXk6IHN0cmluZ106IFR9KTogTGF6eVN0cmVhbTxbc3RyaW5nLCBUXT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm9mKC4uLk9iamVjdC5rZXlzKGRhdGEpKS5tYXAoa2V5ID0+IFtrZXksIGRhdGFba2V5XV0pO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBvZlN0cmVhbURhdGFTb3VyY2U8VD4odmFsdWU6IElTdHJlYW1EYXRhU291cmNlPFQ+KTogTGF6eVN0cmVhbTxUPiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBMYXp5U3RyZWFtKHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcihwYXJlbnQ6IElTdHJlYW1EYXRhU291cmNlPFQ+KSB7XHJcbiAgICAgICAgdGhpcy5kYXRhU291cmNlID0gcGFyZW50O1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBoYXNOZXh0KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICh0aGlzLmlzT3ZlckxpbWl0cygpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmRhdGFTb3VyY2UuaGFzTmV4dCgpO1xyXG4gICAgfVxyXG5cclxuICAgIG5leHQoKTogVCB7XHJcbiAgICAgICAgbGV0IG5leHQgPSB0aGlzLmRhdGFTb3VyY2UubmV4dCgpO1xyXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICB0aGlzLnBvcysrO1xyXG4gICAgICAgIHJldHVybiBuZXh0O1xyXG4gICAgfVxyXG5cclxuICAgIHJlc2V0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5yZXNldCgpO1xyXG4gICAgICAgIHRoaXMucG9zID0gMDtcclxuICAgICAgICB0aGlzLl9saW1pdHMgPSAtMTtcclxuICAgIH1cclxuXHJcbiAgICBuZXh0RmlsdGVyKGZuOiBNYXRjaGFibGU8VD4pOiBUIHtcclxuICAgICAgICBpZiAodGhpcy5oYXNOZXh0KCkpIHtcclxuICAgICAgICAgICAgbGV0IG5ld1ZhbDogVCA9IHRoaXMubmV4dCgpO1xyXG4gICAgICAgICAgICBpZiAoIWZuKG5ld1ZhbCkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm5leHRGaWx0ZXIoZm4pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiA8VD5uZXdWYWw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGxpbWl0cyhtYXg6IG51bWJlcik6IExhenlTdHJlYW08VD4ge1xyXG4gICAgICAgIHRoaXMuX2xpbWl0cyA9IG1heDtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvL21haW4gc3RyZWFtIG1ldGhvZHNcclxuICAgIGNvbGxlY3QoY29sbGVjdG9yOiBJQ29sbGVjdG9yPFQsIGFueT4pOiBhbnkge1xyXG4gICAgICAgIHdoaWxlICh0aGlzLmhhc05leHQoKSkge1xyXG4gICAgICAgICAgICBsZXQgdCA9IHRoaXMubmV4dCgpO1xyXG4gICAgICAgICAgICBjb2xsZWN0b3IuY29sbGVjdCg8VD50KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGNvbGxlY3Rvci5maW5hbFZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIG9uRWxlbShmbjogSXRlcmF0YWJsZUNvbnN1bWVyPFQ+KTogTGF6eVN0cmVhbTxUPiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBMYXp5U3RyZWFtKG5ldyBNYXBwZWRTdHJlYW1EYXRhU291cmNlKChlbCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZm4oZWwsIHRoaXMucG9zKSA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBlbDtcclxuICAgICAgICB9LCB0aGlzKSk7XHJcbiAgICB9XHJcblxyXG4gICAgZmlsdGVyKGZuOiBNYXRjaGFibGU8VD4pOiBMYXp5U3RyZWFtPFQ+IHtcclxuICAgICAgICByZXR1cm4gPExhenlTdHJlYW08VD4+bmV3IExhenlTdHJlYW08VD4obmV3IEZpbHRlcmVkU3RyZWFtRGF0YXNvdXJjZTxhbnk+KGZuLCB0aGlzKSk7XHJcbiAgICB9XHJcblxyXG4gICAgbWFwPFI+KGZuOiBNYXBwYWJsZTxULCBSPik6IExhenlTdHJlYW08YW55PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBMYXp5U3RyZWFtKG5ldyBNYXBwZWRTdHJlYW1EYXRhU291cmNlKGZuLCB0aGlzKSk7XHJcbiAgICB9XHJcblxyXG4gICAgZmxhdE1hcDxTdHJlYW1NYXBwZXI+KGZuOiBTdHJlYW1NYXBwZXIgfCBBcnJheU1hcHBlcjxhbnk+KTogTGF6eVN0cmVhbTxhbnk+IHtcclxuXHJcbiAgICAgICAgcmV0dXJuIG5ldyBMYXp5U3RyZWFtPGFueT4obmV3IEZsYXRNYXBTdHJlYW1EYXRhU291cmNlKDxhbnk+Zm4sIHRoaXMpKTtcclxuICAgIH1cclxuXHJcbiAgICAvL2VuZHBvaW50XHJcbiAgICBlYWNoKGZuOiBJdGVyYXRhYmxlQ29uc3VtZXI8VD4pIHtcclxuICAgICAgICB3aGlsZSAodGhpcy5oYXNOZXh0KCkpIHtcclxuICAgICAgICAgICAgaWYgKGZuKHRoaXMubmV4dCgpKSA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJlZHVjZShmbjogUmVkdWNhYmxlPFQ+LCBzdGFydFZhbDogVCA9IG51bGwpOiBPcHRpb25hbDxUPiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmhhc05leHQoKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gT3B0aW9uYWwuYWJzZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgdmFsdWUxID0gbnVsbDtcclxuICAgICAgICBsZXQgdmFsdWUyID0gbnVsbDtcclxuICAgICAgICBpZiAoc3RhcnRWYWwgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICB2YWx1ZTEgPSBzdGFydFZhbDtcclxuICAgICAgICAgICAgdmFsdWUyID0gdGhpcy5uZXh0KCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdmFsdWUxID0gdGhpcy5uZXh0KCk7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5oYXNOZXh0KCkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBPcHRpb25hbC5mcm9tTnVsbGFibGUodmFsdWUxKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB2YWx1ZTIgPSB0aGlzLm5leHQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFsdWUxID0gZm4odmFsdWUxLCB2YWx1ZTIpO1xyXG4gICAgICAgIHdoaWxlICh0aGlzLmhhc05leHQoKSkge1xyXG4gICAgICAgICAgICB2YWx1ZTIgPSB0aGlzLm5leHQoKTtcclxuICAgICAgICAgICAgdmFsdWUxID0gZm4odmFsdWUxLCB2YWx1ZTIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIE9wdGlvbmFsLmZyb21OdWxsYWJsZSh2YWx1ZTEpO1xyXG4gICAgfVxyXG5cclxuICAgIGxhc3QoKTogT3B0aW9uYWw8VD4ge1xyXG4gICAgICAgIGlmICghdGhpcy5oYXNOZXh0KCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsLmFic2VudDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucmVkdWNlKChlbDEsIGVsMikgPT4gZWwyKTtcclxuICAgIH1cclxuXHJcbiAgICBmaXJzdCgpOiBPcHRpb25hbDxUPiB7XHJcbiAgICAgICAgdGhpcy5yZXNldCgpO1xyXG4gICAgICAgIGlmICghdGhpcy5oYXNOZXh0KCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsLmFic2VudDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIE9wdGlvbmFsLmZyb21OdWxsYWJsZSh0aGlzLm5leHQoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgYW55TWF0Y2goZm46IE1hdGNoYWJsZTxUPik6IGJvb2xlYW4ge1xyXG4gICAgICAgIHdoaWxlICh0aGlzLmhhc05leHQoKSkge1xyXG4gICAgICAgICAgICBpZiAoZm4odGhpcy5uZXh0KCkpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgYWxsTWF0Y2goZm46IE1hdGNoYWJsZTxUPik6IGJvb2xlYW4ge1xyXG4gICAgICAgIHdoaWxlICh0aGlzLmhhc05leHQoKSkge1xyXG4gICAgICAgICAgICBpZiAoIWZuKHRoaXMubmV4dCgpKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIG5vbmVNYXRjaChmbjogTWF0Y2hhYmxlPFQ+KTogYm9vbGVhbiB7XHJcbiAgICAgICAgd2hpbGUgKHRoaXMuaGFzTmV4dCgpKSB7XHJcbiAgICAgICAgICAgIGlmIChmbih0aGlzLm5leHQoKSkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBzb3J0KGNvbXBhcmF0b3I6IENvbXBhcmF0b3I8VD4pOiBJU3RyZWFtPFQ+IHtcclxuICAgICAgICBsZXQgYXJyID0gdGhpcy5jb2xsZWN0KG5ldyBBcnJheUNvbGxlY3RvcigpKTtcclxuICAgICAgICBhcnIgPSBhcnIuc29ydChjb21wYXJhdG9yKTtcclxuICAgICAgICByZXR1cm4gTGF6eVN0cmVhbS5vZiguLi5hcnIpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCB2YWx1ZSgpOiBBcnJheTxUPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sbGVjdChuZXcgQXJyYXlDb2xsZWN0b3I8VD4oKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzdG9wKCkge1xyXG4gICAgICAgIHRoaXMucG9zID0gdGhpcy5fbGltaXRzICsgMTAwMDAwMDAwMDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGlzT3ZlckxpbWl0cygpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fbGltaXRzICE9IC0xICYmIHRoaXMucG9zID49IHRoaXMuX2xpbWl0cyAtIDE7XHJcbiAgICB9XHJcblxyXG59XHJcblxyXG5cclxuIl0sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7O0FBY0E7Ozs7Ozs7OztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQTRJQTs7Ozs7Ozs7QUFRQTtBQUNBO0FBT0E7QUFBQTtBQUFBO0FBQUE7O0FBSkE7QUFFQTtBQUdBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFBQTs7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBOzs7QUFHQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFyS0E7QUF1S0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTJCQTtBQUNBO0FBd0JBO0FBckJBO0FBRUE7Ozs7QUFJQTtBQUNBO0FBZUE7QUFFQTtBQWZBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQ0E7QUFDQTs7O0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBL0xBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/main/typescript/ext/monadish/Stream.ts\n");
/***/ }),
/***/ "./src/main/typescript/ext/monadish/XmlQuery.ts":
/*!******************************************************!*\
!*** ./src/main/typescript/ext/monadish/XmlQuery.ts ***!
\******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\r\n/* Licensed to the Apache Software Foundation (ASF) under one or more\r\n * contributor license agreements. See the NOTICE file distributed with\r\n * this work for additional information regarding copyright ownership.\r\n * The ASF licenses this file to you under the Apache License, Version 2.0\r\n * (the \"License\"); you may not use this file except in compliance with\r\n * the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Lang_1 = __webpack_require__(/*! ./Lang */ \"./src/main/typescript/ext/monadish/Lang.ts\");\r\nvar DomQuery_1 = __webpack_require__(/*! ./DomQuery */ \"./src/main/typescript/ext/monadish/DomQuery.ts\");\r\nvar isString = Lang_1.Lang.isString;\r\n/**\r\n * xml query as specialized case for DomQuery\r\n */\r\nvar XMLQuery = /** @class */ (function (_super) {\r\n __extends(XMLQuery, _super);\r\n function XMLQuery(rootNode, docType) {\r\n if (docType === void 0) { docType = \"text/xml\"; }\r\n var _this = this;\r\n var createIe11DomQueryShim = function () {\r\n //at the time if wroting ie11 is the only relevant browser\r\n //left withut any DomQuery support\r\n var parser = new ActiveXObject(\"Microsoft.XMLDOM\");\r\n parser.async = false;\r\n //we shim th dom parser from ie in\r\n return {\r\n parseFromString: function (text, contentType) {\r\n return parser.loadXML(text);\r\n }\r\n };\r\n };\r\n var parseXML = function (xml) {\r\n if (xml == null) {\r\n return null;\r\n }\r\n var domParser = Lang_1.Lang.saveResolveLazy(function () { return new window.DOMParser(); }, function () { return createIe11DomQueryShim(); }).value;\r\n return domParser.parseFromString(xml, docType);\r\n };\r\n if (isString(rootNode)) {\r\n _this = _super.call(this, parseXML(rootNode)) || this;\r\n }\r\n else {\r\n _this = _super.call(this, rootNode) || this;\r\n }\r\n return _this;\r\n }\r\n XMLQuery.prototype.isXMLParserError = function () {\r\n return this.querySelectorAll(\"parsererror\").isPresent();\r\n };\r\n XMLQuery.prototype.toString = function () {\r\n var ret = [];\r\n this.eachElem(function (node) {\r\n var _a, _b, _c, _d, _e;\r\n var serialized = (_d = (_c = (_b = (_a = window) === null || _a === void 0 ? void 0 : _a.XMLSerializer) === null || _b === void 0 ? void 0 : _b.constructor()) === null || _c === void 0 ? void 0 : _c.serializeToString(node), (_d !== null && _d !== void 0 ? _d : (_e = node) === null || _e === void 0 ? void 0 : _e.xml));\r\n if (!!serialized) {\r\n ret.push(serialized);\r\n }\r\n });\r\n return ret.join(\"\");\r\n };\r\n XMLQuery.prototype.parserErrorText = function (joinstr) {\r\n return this.querySelectorAll(\"parsererror\").textContent(joinstr);\r\n };\r\n XMLQuery.parseXML = function (txt) {\r\n return new XMLQuery(txt);\r\n };\r\n XMLQuery.parseHTML = function (txt) {\r\n return new XMLQuery(txt, \"text/html\");\r\n };\r\n XMLQuery.fromString = function (txt, parseType) {\r\n if (parseType === void 0) { parseType = \"text/xml\"; }\r\n return new XMLQuery(txt, parseType);\r\n };\r\n return XMLQuery;\r\n}(DomQuery_1.DomQuery));\r\nexports.XMLQuery = XMLQuery;\r\nexports.XQ = XMLQuery;\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbWFpbi90eXBlc2NyaXB0L2V4dC9tb25hZGlzaC9YbWxRdWVyeS50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tYWluL3R5cGVzY3JpcHQvZXh0L21vbmFkaXNoL1htbFF1ZXJ5LnRzPzY0NGQiXSwic291cmNlc0NvbnRlbnQiOlsiLyogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZSBvciBtb3JlXHJcbiAqIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUgZGlzdHJpYnV0ZWQgd2l0aFxyXG4gKiB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuXHJcbiAqIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wXHJcbiAqICh0aGUgXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGhcclxuICogdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcclxuICpcclxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuICpcclxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxyXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXHJcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxyXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXHJcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7TGFuZ30gZnJvbSBcIi4vTGFuZ1wiO1xyXG5pbXBvcnQge0RvbVF1ZXJ5fSBmcm9tIFwiLi9Eb21RdWVyeVwiO1xyXG5pbXBvcnQgaXNTdHJpbmcgPSBMYW5nLmlzU3RyaW5nO1xyXG5cclxuZGVjbGFyZSBsZXQgQWN0aXZlWE9iamVjdDogYW55O1xyXG5cclxuLyoqXHJcbiAqIHhtbCBxdWVyeSBhcyBzcGVjaWFsaXplZCBjYXNlIGZvciBEb21RdWVyeVxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFhNTFF1ZXJ5IGV4dGVuZHMgRG9tUXVlcnkge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHJvb3ROb2RlOiBEb2N1bWVudCB8IHN0cmluZyB8IERvbVF1ZXJ5LCBkb2NUeXBlOiBTdXBwb3J0ZWRUeXBlID0gXCJ0ZXh0L3htbFwiKSB7XHJcblxyXG5cclxuICAgICAgICBsZXQgY3JlYXRlSWUxMURvbVF1ZXJ5U2hpbSA9ICgpOiBET01QYXJzZXIgPT4ge1xyXG4gICAgICAgICAgICAvL2F0IHRoZSB0aW1lIGlmIHdyb3RpbmcgaWUxMSBpcyB0aGUgb25seSByZWxldmFudCBicm93c2VyXHJcbiAgICAgICAgICAgIC8vbGVmdCB3aXRodXQgYW55IERvbVF1ZXJ5IHN1cHBvcnRcclxuICAgICAgICAgICAgbGV0IHBhcnNlciA9IG5ldyBBY3RpdmVYT2JqZWN0KFwiTWljcm9zb2Z0LlhNTERPTVwiKTtcclxuICAgICAgICAgICAgcGFyc2VyLmFzeW5jID0gZmFsc2U7XHJcbiAgICAgICAgICAgIC8vd2Ugc2hpbSB0aCBkb20gcGFyc2VyIGZyb20gaWUgaW5cclxuICAgICAgICAgICAgcmV0dXJuIDxhbnk+IHtcclxuICAgICAgICAgICAgICAgIHBhcnNlRnJvbVN0cmluZzogKHRleHQ6IHN0cmluZywgY29udGVudFR5cGU6IHN0cmluZyk6IERvY3VtZW50ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VyLmxvYWRYTUwodGV4dCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBsZXQgcGFyc2VYTUwgPSAoeG1sOiBzdHJpbmcpOiBEb2N1bWVudCA9PiB7XHJcbiAgICAgICAgICAgIGlmKHhtbCA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgZG9tUGFyc2VyOiBET01QYXJzZXIgPSBMYW5nLnNhdmVSZXNvbHZlTGF6eTxET01QYXJzZXI+KFxyXG4gICAgICAgICAgICAgICAgKCkgPT4gbmV3IHdpbmRvdy5ET01QYXJzZXIoKSxcclxuICAgICAgICAgICAgICAgICgpOiBET01QYXJzZXIgPT4gIGNyZWF0ZUllMTFEb21RdWVyeVNoaW0oKVxyXG4gICAgICAgICAgICApLnZhbHVlO1xyXG4gICAgICAgICAgICByZXR1cm4gZG9tUGFyc2VyLnBhcnNlRnJvbVN0cmluZyh4bWwsIGRvY1R5cGUpO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGlmKGlzU3RyaW5nKHJvb3ROb2RlKSkge1xyXG4gICAgICAgICAgICBzdXBlcihwYXJzZVhNTCg8c3RyaW5nPnJvb3ROb2RlKSlcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBzdXBlcihyb290Tm9kZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBpc1hNTFBhcnNlckVycm9yKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwoXCJwYXJzZXJlcnJvclwiKS5pc1ByZXNlbnQoKTtcclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIHRvU3RyaW5nKCk6IHN0cmluZyB7XHJcbiAgICAgICAgbGV0IHJldCA9IFtdO1xyXG4gICAgICAgIHRoaXMuZWFjaEVsZW0oKG5vZGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgc2VyaWFsaXplZCA9ICg8YW55PndpbmRvdyk/LlhNTFNlcmlhbGl6ZXI/LmNvbnN0cnVjdG9yKCk/LnNlcmlhbGl6ZVRvU3RyaW5nKG5vZGUpID8/IG5vZGU/LnhtbDtcclxuICAgICAgICAgICAgaWYoISFzZXJpYWxpemVkKSB7XHJcbiAgICAgICAgICAgICAgICByZXQucHVzaChzZXJpYWxpemVkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiByZXQuam9pbihcIlwiKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgcGFyc2VyRXJyb3JUZXh0KGpvaW5zdHI6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucXVlcnlTZWxlY3RvckFsbChcInBhcnNlcmVycm9yXCIpLnRleHRDb250ZW50KGpvaW5zdHIpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBwYXJzZVhNTCh0eHQ6IHN0cmluZyk6IFhNTFF1ZXJ5IHtcclxuICAgICAgICByZXR1cm4gbmV3ICBYTUxRdWVyeSh0eHQpO1xyXG4gICAgfVxyXG4gICAgc3RhdGljIHBhcnNlSFRNTCh0eHQ6IHN0cmluZyk6IFhNTFF1ZXJ5IHtcclxuICAgICAgICByZXR1cm4gbmV3ICBYTUxRdWVyeSh0eHQsIFwidGV4dC9odG1sXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBmcm9tU3RyaW5nKHR4dDogc3RyaW5nLCBwYXJzZVR5cGU6IFN1cHBvcnRlZFR5cGUgPSBcInRleHQveG1sXCIpOiBYTUxRdWVyeSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyAgWE1MUXVlcnkodHh0LHBhcnNlVHlwZSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBYUSA9IFhNTFF1ZXJ5O1xyXG5leHBvcnQgdHlwZSBYUSA9IFhNTFF1ZXJ5OyJdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7OztBQWNBOzs7Ozs7Ozs7Ozs7Ozs7QUFFQTtBQUNBO0FBQ0E7QUFJQTs7QUFFQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTs7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQXJFQTtBQXVFQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/main/typescript/ext/monadish/XmlQuery.ts\n");
/***/ }),
/***/ "./src/main/typescript/ext/monadish/index.ts":
/*!***************************************************!*\
!*** ./src/main/typescript/ext/monadish/index.ts ***!
\***************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar DomQuery_1 = __webpack_require__(/*! ./DomQuery */ \"./src/main/typescript/ext/monadish/DomQuery.ts\");\r\nexports.DomQuery = DomQuery_1.DomQuery;\r\nexports.ElementAttribute = DomQuery_1.ElementAttribute;\r\nexports.DomQueryCollector = DomQuery_1.DomQueryCollector;\r\nexports.DQ = DomQuery_1.DQ;\r\nvar Lang_1 = __webpack_require__(/*! ./Lang */ \"./src/main/typescript/ext/monadish/Lang.ts\");\r\nexports.Lang = Lang_1.Lang;\r\nvar Monad_1 = __webpack_require__(/*! ./Monad */ \"./src/main/typescript/ext/monadish/Monad.ts\");\r\nexports.Config = Monad_1.Config;\r\nexports.Monad = Monad_1.Monad;\r\nexports.Optional = Monad_1.Optional;\r\nexports.ValueEmbedder = Monad_1.ValueEmbedder;\r\nvar Promise_1 = __webpack_require__(/*! ./Promise */ \"./src/main/typescript/ext/monadish/Promise.ts\");\r\nexports.CancellablePromise = Promise_1.CancellablePromise;\r\nexports.Promise = Promise_1.Promise;\r\nexports.PromiseStatus = Promise_1.PromiseStatus;\r\nvar XmlQuery_1 = __webpack_require__(/*! ./XmlQuery */ \"./src/main/typescript/ext/monadish/XmlQuery.ts\");\r\nexports.XMLQuery = XmlQuery_1.XMLQuery;\r\nexports.XQ = XmlQuery_1.XQ;\r\nvar Stream_1 = __webpack_require__(/*! ./Stream */ \"./src/main/typescript/ext/monadish/Stream.ts\");\r\nexports.Stream = Stream_1.Stream;\r\nexports.LazyStream = Stream_1.LazyStream;\r\nvar SourcesCollectors_1 = __webpack_require__(/*! ./SourcesCollectors */ \"./src/main/typescript/ext/monadish/SourcesCollectors.ts\");\r\nexports.ArrayStreamDataSource = SourcesCollectors_1.ArrayStreamDataSource;\r\nexports.MappedStreamDataSource = SourcesCollectors_1.MappedStreamDataSource;\r\nexports.FilteredStreamDatasource = SourcesCollectors_1.FilteredStreamDatasource;\r\nexports.FlatMapStreamDataSource = SourcesCollectors_1.FlatMapStreamDataSource;\r\nexports.QueryFormStringCollector = SourcesCollectors_1.QueryFormStringCollector;\r\nexports.ArrayCollector = SourcesCollectors_1.ArrayCollector;\r\nexports.AssocArrayCollector = SourcesCollectors_1.AssocArrayCollector;\r\nexports.FormDataCollector = SourcesCollectors_1.FormDataCollector;\r\nexports.QueryFormDataCollector = SourcesCollectors_1.QueryFormDataCollector;\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbWFpbi90eXBlc2NyaXB0L2V4dC9tb25hZGlzaC9pbmRleC50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tYWluL3R5cGVzY3JpcHQvZXh0L21vbmFkaXNoL2luZGV4LnRzP2E2MjYiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtEb21RdWVyeSwgRWxlbWVudEF0dHJpYnV0ZSwgRG9tUXVlcnlDb2xsZWN0b3IsIERRfSBmcm9tIFwiLi9Eb21RdWVyeVwiO1xyXG5leHBvcnQge0xhbmd9IGZyb20gXCIuL0xhbmdcIjtcclxuZXhwb3J0IHtDb25maWcsIE1vbmFkLCBJVmFsdWVIb2xkZXIsIElGdW5jdG9yLCBJTW9uYWQsIElJZGVudGl0eSwgT3B0aW9uYWwsIFZhbHVlRW1iZWRkZXJ9IGZyb20gXCIuL01vbmFkXCI7XHJcbmV4cG9ydCB7Q2FuY2VsbGFibGVQcm9taXNlLCBQcm9taXNlLCBJUHJvbWlzZSwgUHJvbWlzZVN0YXR1c30gZnJvbSBcIi4vUHJvbWlzZVwiO1xyXG5leHBvcnQge1hNTFF1ZXJ5LCBYUX0gZnJvbSBcIi4vWG1sUXVlcnlcIjtcclxuZXhwb3J0IHtTdHJlYW0sIExhenlTdHJlYW0sIEl0ZXJhdGFibGVDb25zdW1lciwgSVN0cmVhbX0gZnJvbSBcIi4vU3RyZWFtXCI7XHJcbmV4cG9ydCB7XHJcbiAgICBBcnJheVN0cmVhbURhdGFTb3VyY2UsXHJcbiAgICBNYXBwZWRTdHJlYW1EYXRhU291cmNlLFxyXG4gICAgRmlsdGVyZWRTdHJlYW1EYXRhc291cmNlLFxyXG4gICAgRmxhdE1hcFN0cmVhbURhdGFTb3VyY2UsXHJcbiAgICBRdWVyeUZvcm1TdHJpbmdDb2xsZWN0b3IsXHJcbiAgICBJU3RyZWFtRGF0YVNvdXJjZSxcclxuICAgIElDb2xsZWN0b3IsXHJcbiAgICBBcnJheUNvbGxlY3RvcixcclxuICAgIEFzc29jQXJyYXlDb2xsZWN0b3IsXHJcbiAgICBGb3JtRGF0YUNvbGxlY3RvcixcclxuICAgIFF1ZXJ5Rm9ybURhdGFDb2xsZWN0b3JcclxufSBmcm9tIFwiLi9Tb3VyY2VzQ29sbGVjdG9yc1wiO1xyXG5cclxuXHJcbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/main/typescript/ext/monadish/index.ts\n");
/***/ }),
/***/ "./src/main/typescript/impl/AjaxImpl.ts":
/*!**********************************************!*\
!*** ./src/main/typescript/impl/AjaxImpl.ts ***!
\**********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\r\n/* Licensed to the Apache Software Foundation (ASF) under one or more\r\n * contributor license agreements. See the NOTICE file distributed with\r\n * this work for additional information regarding copyright ownership.\r\n * The ASF licenses this file to you under the Apache License, Version 2.0\r\n * (the \"License\"); you may not use this file except in compliance with\r\n * the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar myfacesConfig = __webpack_require__(/*! ../api/myfaces */ \"./src/main/typescript/api/myfaces.ts\");\r\nvar Response_1 = __webpack_require__(/*! ./xhrCore/Response */ \"./src/main/typescript/impl/xhrCore/Response.ts\");\r\nvar XhrRequest_1 = __webpack_require__(/*! ./xhrCore/XhrRequest */ \"./src/main/typescript/impl/xhrCore/XhrRequest.ts\");\r\nvar AsyncQueue_1 = __webpack_require__(/*! ./util/AsyncQueue */ \"./src/main/typescript/impl/util/AsyncQueue.ts\");\r\nvar Monad_1 = __webpack_require__(/*! ../ext/monadish/Monad */ \"./src/main/typescript/ext/monadish/Monad.ts\");\r\nvar Const_1 = __webpack_require__(/*! ./core/Const */ \"./src/main/typescript/impl/core/Const.ts\");\r\nvar Assertions_1 = __webpack_require__(/*! ./util/Assertions */ \"./src/main/typescript/impl/util/Assertions.ts\");\r\nvar XhrFormData_1 = __webpack_require__(/*! ./xhrCore/XhrFormData */ \"./src/main/typescript/impl/xhrCore/XhrFormData.ts\");\r\nvar ExtDomQuery_1 = __webpack_require__(/*! ./util/ExtDomQuery */ \"./src/main/typescript/impl/util/ExtDomQuery.ts\");\r\nvar ErrorData_1 = __webpack_require__(/*! ./xhrCore/ErrorData */ \"./src/main/typescript/impl/xhrCore/ErrorData.ts\");\r\nvar DomQuery_1 = __webpack_require__(/*! ../ext/monadish/DomQuery */ \"./src/main/typescript/ext/monadish/DomQuery.ts\");\r\nvar monadish_1 = __webpack_require__(/*! ../ext/monadish */ \"./src/main/typescript/ext/monadish/index.ts\");\r\nvar SourcesCollectors_1 = __webpack_require__(/*! ../ext/monadish/SourcesCollectors */ \"./src/main/typescript/ext/monadish/SourcesCollectors.ts\");\r\nvar Lang_1 = __webpack_require__(/*! ./util/Lang */ \"./src/main/typescript/impl/util/Lang.ts\");\r\n/*\r\n * allowed project stages\r\n */\r\nvar ProjectStages;\r\n(function (ProjectStages) {\r\n ProjectStages[\"Production\"] = \"Production\";\r\n ProjectStages[\"Development\"] = \"Development\";\r\n ProjectStages[\"SystemTest\"] = \"SystemTest\";\r\n ProjectStages[\"UnitTest\"] = \"UnitTest\";\r\n})(ProjectStages || (ProjectStages = {}));\r\n/*\r\n * blockfilter for the passthrough filtering; the attributes given here\r\n * will not be transmitted from the options into the passthrough\r\n */\r\nvar BlockFilter;\r\n(function (BlockFilter) {\r\n BlockFilter[\"onerror\"] = \"onerror\";\r\n BlockFilter[\"onevent\"] = \"onevent\";\r\n BlockFilter[\"render\"] = \"render\";\r\n BlockFilter[\"execute\"] = \"execute\";\r\n BlockFilter[\"myfaces\"] = \"myfaces\";\r\n BlockFilter[\"delay\"] = \"delay\";\r\n BlockFilter[\"timeout\"] = \"timeout\";\r\n BlockFilter[\"windowId\"] = \"windowId\";\r\n})(BlockFilter || (BlockFilter = {}));\r\n/**\r\n * Core Implementation\r\n * to distinct between api and impl\r\n *\r\n * The original idea was to make the implementation pluggable\r\n * but this is pointless, you always can overwrite the thin api layer\r\n * however a dedicated api makes sense for readability reasons\r\n */\r\nvar Implementation;\r\n(function (Implementation) {\r\n var trim = monadish_1.Lang.trim;\r\n var getMessage = Lang_1.ExtLang.getMessage;\r\n var getForm = Lang_1.ExtLang.getForm;\r\n var getLocalOrGlobalConfig = Lang_1.ExtLang.getLocalOrGlobalConfig;\r\n var getEvent = Lang_1.ExtLang.getEvent;\r\n var getGlobalConfig = Lang_1.ExtLang.getGlobalConfig;\r\n var assert = Assertions_1.Assertions.assert;\r\n var CTX_PARAM_PASS_THR = Const_1.Const.CTX_PARAM_PASS_THR;\r\n var P_EVT = Const_1.Const.P_EVT;\r\n var SOURCE = Const_1.Const.SOURCE;\r\n var ON_EVENT = Const_1.Const.ON_EVENT;\r\n var ON_ERROR = Const_1.Const.ON_ERROR;\r\n var MYFACES = Const_1.Const.MYFACES;\r\n var MF_NONE = Const_1.Const.MF_NONE;\r\n var P_PARTIAL_SOURCE = Const_1.Const.P_PARTIAL_SOURCE;\r\n var P_AJAX = Const_1.Const.P_AJAX;\r\n var P_RESET_VALUES = Const_1.Const.P_RESET_VALUES;\r\n var CTX_PARAM_SRC_FRM_ID = Const_1.Const.CTX_PARAM_SRC_FRM_ID;\r\n var CTX_PARAM_SRC_CTL_ID = Const_1.Const.CTX_PARAM_SRC_CTL_ID;\r\n var CTX_PARAM_TR_TYPE = Const_1.Const.CTX_PARAM_TR_TYPE;\r\n var REQ_TYPE_POST = Const_1.Const.REQ_TYPE_POST;\r\n var P_WIN_ID = Const_1.Const.P_WIN_ID;\r\n var CTX_PARAM_EXECUTE = Const_1.Const.CTX_PARAM_EXECUTE;\r\n var P_EXECUTE = Const_1.Const.P_EXECUTE;\r\n var P_WINDOW_ID = Const_1.Const.P_WINDOW_ID;\r\n var P_RENDER = Const_1.Const.P_RENDER;\r\n var IDENT_ALL = Const_1.Const.IDENT_ALL;\r\n var IDENT_NONE = Const_1.Const.IDENT_NONE;\r\n var IDENT_FORM = Const_1.Const.IDENT_FORM;\r\n var IDENT_THIS = Const_1.Const.IDENT_THIS;\r\n var P_CLIENTWINDOW = Const_1.Const.P_CLIENTWINDOW;\r\n var CTX_PARAM_TIMEOUT = Const_1.Const.CTX_PARAM_TIMEOUT;\r\n var CTX_PARAM_DELAY = Const_1.Const.CTX_PARAM_DELAY;\r\n var globalConfig = myfacesConfig.myfaces.config;\r\n var projectStage = null;\r\n var separator = null;\r\n var eventQueue = [];\r\n var errorQueue = [];\r\n var requestQueue = null;\r\n /*error reporting threshold*/\r\n var threshold = \"ERROR\";\r\n //we need to proxy this in the tests\r\n Implementation.queueHandler = {\r\n /**\r\n * public to make it shimmable for tests\r\n */\r\n addRequestToQueue: function (elem, form, reqCtx, respPassThr, delay, timeout) {\r\n if (delay === void 0) { delay = 0; }\r\n if (timeout === void 0) { timeout = 0; }\r\n requestQueue = (requestQueue !== null && requestQueue !== void 0 ? requestQueue : new AsyncQueue_1.AsynchronouseQueue());\r\n requestQueue.enqueue(new XhrRequest_1.XhrRequest(elem, form, reqCtx, respPassThr, [], timeout), delay);\r\n }\r\n };\r\n /**\r\n * fetches the separator char from the given script tags\r\n *\r\n * @return {char} the separator char for the given script tags\r\n */\r\n function getSeparatorChar() {\r\n var _a, _b, _c, _d, _e;\r\n return _e = (_c = (_b = (_a = this) === null || _a === void 0 ? void 0 : _a.globalConfig) === null || _b === void 0 ? void 0 : _b.separator, (_c !== null && _c !== void 0 ? _c : (_d = this) === null || _d === void 0 ? void 0 : _d.separator)), (_e !== null && _e !== void 0 ? _e : (separator = ExtDomQuery_1.ExtDomquery.searchJsfJsFor(/separator=([^&;]*)/).orElse(\":\").value));\r\n }\r\n Implementation.getSeparatorChar = getSeparatorChar;\r\n //for testing only\r\n function reset() {\r\n globalConfig = myfacesConfig.myfaces.config;\r\n projectStage = null;\r\n separator = null;\r\n eventQueue = [];\r\n errorQueue = [];\r\n requestQueue = null;\r\n }\r\n Implementation.reset = reset;\r\n /**\r\n * @return the project stage also emitted by the server:\r\n * it cannot be cached and must be delivered over the server\r\n * The value for it comes from the requestInternal parameter of the jsf.js script called \"stage\".\r\n */\r\n function getProjectStage() {\r\n var _a, _b, _c, _d, _e;\r\n return _e = (_c = (_b = (_a = this) === null || _a === void 0 ? void 0 : _a.globalConfig) === null || _b === void 0 ? void 0 : _b.projectStage, (_c !== null && _c !== void 0 ? _c : (_d = this) === null || _d === void 0 ? void 0 : _d.projectStage)), (_e !== null && _e !== void 0 ? _e : (projectStage = resolveProjectStateFromURL()));\r\n }\r\n Implementation.getProjectStage = getProjectStage;\r\n function resolveProjectStateFromURL() {\r\n /* run through all script tags and try to find the one that includes jsf.js */\r\n var foundStage = ExtDomQuery_1.ExtDomquery.searchJsfJsFor(/stage=([^&;]*)/).value;\r\n return (foundStage in ProjectStages) ? foundStage : null;\r\n }\r\n Implementation.resolveProjectStateFromURL = resolveProjectStateFromURL;\r\n function chain(source, event) {\r\n var funcs = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n funcs[_i - 2] = arguments[_i];\r\n }\r\n var ret = true;\r\n var resolveAndExecute = function (func) {\r\n if (\"string\" != typeof func) {\r\n return (ret = ret && (func.call(source, event) !== false));\r\n }\r\n else {\r\n //either a function or a string can be passed in case of a string we have to wrap it into another function\r\n //it it is not a plain executable code but a definition\r\n var sourceCode = trim(func);\r\n if (sourceCode.indexOf(\"function \") == 0) {\r\n sourceCode = \"return \" + sourceCode + \" (event)\";\r\n }\r\n return (ret = ret && (new Function(\"event\", sourceCode).call(source, event) !== false));\r\n }\r\n };\r\n monadish_1.Stream.of.apply(monadish_1.Stream, funcs).each(function (func) { return resolveAndExecute(func); });\r\n return ret;\r\n }\r\n Implementation.chain = chain;\r\n /**\r\n * this function has to send the ajax requests\r\n *\r\n * following request conditions must be met:\r\n * <ul>\r\n * <li> the request must be sent asynchronously! </li>\r\n * <li> the request must be a POST!!! request </li>\r\n * <li> the request url must be the form action attribute </li>\r\n * <li> all requests must be queued with a client side request queue to ensure the request ordering!</li>\r\n * </ul>\r\n *\r\n * @param {String|Node} elem any dom element no matter being it html or jsf, from which the event is emitted\r\n * @param {|Event|} event any javascript event supported by that object\r\n * @param {|Object|} options map of options being pushed into the ajax cycle\r\n *\r\n *\r\n * a) transformArguments out of the function\r\n * b) passThrough handling with a map copy with a filter map block map\r\n */\r\n function request(el, event, opts) {\r\n var _a, _b, _c, _d, _e, _f, _g, _h;\r\n /*\r\n *namespace remap for our local function context we mix the entire function namespace into\r\n *a local function variable so that we do not have to write the entire namespace\r\n *all the time\r\n */\r\n event = getEvent(event);\r\n //options not set we define a default one with nothing\r\n var options = new Monad_1.Config(opts).deepCopy;\r\n var elem = DomQuery_1.DQ.byId(el || event.target);\r\n var elementId = elem.id;\r\n var requestCtx = new Monad_1.Config({});\r\n var internalCtx = new Monad_1.Config({});\r\n Assertions_1.Assertions.assertRequestIntegrity(options, elem);\r\n applyWindowId(options);\r\n requestCtx.assign(CTX_PARAM_PASS_THR).value = fetchPassthroughValues(options.value);\r\n requestCtx.assignIf(!!event, CTX_PARAM_PASS_THR, P_EVT).value = (_a = event) === null || _a === void 0 ? void 0 : _a.type;\r\n /**\r\n * ajax pass through context with the source\r\n * onevent and onerror\r\n */\r\n requestCtx.assign(SOURCE).value = elementId.value;\r\n /**\r\n * on event and onError...\r\n * those values will be traversed later on\r\n * also into the response context\r\n */\r\n requestCtx.assign(ON_EVENT).value = (_b = options.value) === null || _b === void 0 ? void 0 : _b.onevent;\r\n requestCtx.assign(ON_ERROR).value = (_c = options.value) === null || _c === void 0 ? void 0 : _c.onerror;\r\n /**\r\n * lets drag the myfaces config params also in\r\n */\r\n requestCtx.assign(MYFACES).value = (_d = options.value) === null || _d === void 0 ? void 0 : _d.myfaces;\r\n /**\r\n * fetch the parent form\r\n *\r\n * note we also add an override possibility here\r\n * so that people can use dummy forms and work\r\n * with detached objects\r\n */\r\n var configId = (_g = (_f = (_e = requestCtx.value) === null || _e === void 0 ? void 0 : _e.myfaces) === null || _f === void 0 ? void 0 : _f.form, (_g !== null && _g !== void 0 ? _g : MF_NONE));\r\n var form = resolveForm(requestCtx, elem, event);\r\n /**\r\n * binding contract the javax.faces.source must be set\r\n */\r\n requestCtx.assign(CTX_PARAM_PASS_THR, P_PARTIAL_SOURCE).value = elementId.value;\r\n /**\r\n * javax.faces.partial.ajax must be set to true\r\n */\r\n requestCtx.assign(CTX_PARAM_PASS_THR, P_AJAX).value = true;\r\n /**\r\n * binding contract the javax.faces.source must be set\r\n */\r\n requestCtx.assign(CTX_PARAM_PASS_THR, P_PARTIAL_SOURCE).value = elementId.value;\r\n /**\r\n * if resetValues is set to true\r\n * then we have to set javax.faces.resetValues as well\r\n * as pass through parameter\r\n * the value has to be explicitly true, according to\r\n * the specs jsdoc\r\n */\r\n requestCtx.assignIf(true === ((_h = options.value) === null || _h === void 0 ? void 0 : _h.resetValues), CTX_PARAM_PASS_THR, P_RESET_VALUES).value = true;\r\n //additional meta information to speed things up, note internal non jsf\r\n //pass through options are stored under _mfInternal in the context\r\n internalCtx.assign(CTX_PARAM_SRC_FRM_ID).value = form.id.value;\r\n internalCtx.assign(CTX_PARAM_SRC_CTL_ID).value = elementId.value;\r\n internalCtx.assign(CTX_PARAM_TR_TYPE).value = REQ_TYPE_POST;\r\n //mojarra compatibility, mojarra is sending the form id as well\r\n //this is not documented behavior but can be determined by running\r\n //mojarra under blackbox conditions\r\n //i assume it does the same as our formId_submit=1 so leaving it out\r\n //wont hurt but for the sake of compatibility we are going to add it\r\n requestCtx.assign(CTX_PARAM_PASS_THR, form.id.value).value = form.id.value;\r\n applyClientWindowId(form, requestCtx);\r\n applyExecute(options, requestCtx, form, elementId.value);\r\n applyRender(options, requestCtx, form, elementId.value);\r\n var delay = resolveDelay(options, requestCtx);\r\n var timeout = resolveTimeout(options, requestCtx);\r\n //now we enqueue the request as asynchronous runnable into our request\r\n //queue and let the queue take over the rest\r\n Implementation.queueHandler.addRequestToQueue(elem, form, requestCtx, internalCtx, delay, timeout);\r\n }\r\n Implementation.request = request;\r\n /**\r\n * Spec. 13.3.3\r\n * Examining the response markup and updating the DOM tree\r\n * @param {XMLHttpRequest} request - the ajax request\r\n * @param {Object} context - the ajax context\r\n */\r\n function response(request, context) {\r\n Response_1.Response.processResponse(request, context);\r\n }\r\n Implementation.response = response;\r\n function addOnError(errorListener) {\r\n /*error handling already done in the assert of the queue*/\r\n errorQueue.push(errorListener);\r\n }\r\n Implementation.addOnError = addOnError;\r\n function addOnEvent(eventListener) {\r\n /*error handling already done in the assert of the queue*/\r\n eventQueue.push(eventListener);\r\n }\r\n Implementation.addOnEvent = addOnEvent;\r\n /**\r\n * sends an event\r\n */\r\n function sendEvent(data, localHandler) {\r\n if (localHandler === void 0) { localHandler = function (data) { }; }\r\n /*now we serve the queue as well*/\r\n localHandler(data);\r\n eventQueue.forEach(function (fn) { return fn(data); });\r\n }\r\n Implementation.sendEvent = sendEvent;\r\n function registerPromise() {\r\n var _a, _b;\r\n window[\"Promise\"] = (_b = (_a = window) === null || _a === void 0 ? void 0 : _a.Promise, (_b !== null && _b !== void 0 ? _b : monadish_1.Promise));\r\n }\r\n Implementation.registerPromise = registerPromise;\r\n /**\r\n * error handler behavior called internally\r\n * and only into the impl it takes care of the\r\n * internal message transformation to a myfaces internal error\r\n * and then uses the standard send error mechanisms\r\n * also a double error logging prevention is done as well\r\n *\r\n * @param request the request currently being processed\r\n * @param context the context affected by this error\r\n * @param exception the exception being thrown\r\n * @param clearRequestQueue if set to true, clears the request queue of all pending requests\r\n */\r\n function stdErrorHandler(request, context, exception, clearRequestQueue) {\r\n if (clearRequestQueue === void 0) { clearRequestQueue = false; }\r\n //newer browsers do not allow to hold additional values on native objects like exceptions\r\n //we hence capsule it into the request, which is gced automatically\r\n //on ie as well, since the stdErrorHandler usually is called between requests\r\n //this is a valid approach\r\n try {\r\n if (threshold == \"ERROR\") {\r\n var errorData = ErrorData_1.ErrorData.fromClient(exception);\r\n sendError(errorData);\r\n }\r\n }\r\n finally {\r\n if (clearRequestQueue) {\r\n requestQueue.cleanup();\r\n }\r\n }\r\n }\r\n Implementation.stdErrorHandler = stdErrorHandler;\r\n /**\r\n * implementation triggering the error chain\r\n *\r\n * @param {Object} request the request object which comes from the xhr cycle\r\n * @param {Object} context (Map) the context object being pushed over the xhr cycle keeping additional metadata\r\n * @param {String} errorName the error name\r\n * @param {String} errorMessage the error name\r\n * @param {String} responseCode response Code\r\n * @param {String} responseMessage response Message\r\n *\r\n * @param {String} serverErrorName the server error name in case of a server error\r\n * @param {String} serverErrorMessage the server error message in case of a server error\r\n * @param {String} caller optional caller reference for extended error messages\r\n * @param {String} callFunc optional caller Function reference for extended error messages\r\n *\r\n * handles the errors, in case of an onError exists within the context the onError is called as local error handler\r\n * the registered error handlers in the queue receiv an error message to be dealt with\r\n * and if the projectStage is at development an alert box is displayed\r\n *\r\n * note: we have additional functionality here, via the global config myfaces.config.defaultErrorOutput a function can be provided\r\n * which changes the default output behavior from alert to something else\r\n *\r\n *\r\n */\r\n function sendError(errorData, localHandler) {\r\n if (localHandler === void 0) { localHandler = function (data) { }; }\r\n localHandler(errorData);\r\n errorQueue.forEach(function (errorCallback) {\r\n errorCallback(errorData);\r\n });\r\n var displayError = getGlobalConfig(\"defaultErrorOutput\", (console ? console.error : alert));\r\n displayError(errorData);\r\n }\r\n Implementation.sendError = sendError;\r\n /**\r\n * @return the client window id of the current window, if one is given\r\n */\r\n function getClientWindow(node) {\r\n var _a;\r\n var ALTERED = \"___mf_id_altered__\";\r\n var INIT = \"___init____\";\r\n /**\r\n * the search root for the dom element search\r\n */\r\n var searchRoot = new DomQuery_1.DQ(node || document.body);\r\n /**\r\n * a set of input elements holding the window id over the entire document\r\n */\r\n var windowIdHolders = searchRoot.querySelectorAll(\"form #\" + P_WIN_ID);\r\n /**\r\n * lazy helper to fetch the window id from the window url\r\n */\r\n var fetchWindowIdFromUrl = function () { return ExtDomQuery_1.ExtDomquery.searchJsfJsFor(/jfwid=([^&;]*)/).orElse(null).value; };\r\n /**\r\n * functional double check based on stream reduction\r\n * the values should be identical or on INIT value which is a premise to\r\n * skip the first check\r\n *\r\n * @param value1\r\n * @param value2\r\n */\r\n var doubleCheck = function (value1, value2) {\r\n if (value1 == ALTERED) {\r\n return value1;\r\n }\r\n else if (value1 == INIT) {\r\n return value2;\r\n }\r\n else if (value1 != value2) {\r\n return ALTERED;\r\n }\r\n return value2;\r\n };\r\n /**\r\n * helper for cleaner code, maps the value from an item\r\n *\r\n * @param item\r\n */\r\n var getValue = function (item) { return item.attr(\"value\").value; };\r\n /**\r\n * fetch the window id from the forms\r\n * window ids must be present in all forms\r\n * or non existent. If they exist all of them must be the same\r\n */\r\n var formWindowId = searchRoot.stream.map(getValue).reduce(doubleCheck, INIT);\r\n //if the resulting window id is set on altered then we have an unresolvable problem\r\n assert(formWindowId.value != ALTERED, \"Multiple different windowIds found in document\");\r\n /**\r\n * return the window id or null\r\n * prio, forms under node/document and if not given then from the url\r\n */\r\n return _a = formWindowId.value, (_a !== null && _a !== void 0 ? _a : fetchWindowIdFromUrl());\r\n }\r\n Implementation.getClientWindow = getClientWindow;\r\n /**\r\n * collect and encode data for a given form element (must be of type form)\r\n * find the javax.faces.ViewState element and encode its value as well!\r\n * return a concatenated string of the encoded values!\r\n *\r\n * @throws Error in case of the given element not being of type form!\r\n * https://issues.apache.org/jira/browse/MYFACES-2110\r\n */\r\n function getViewState(form) {\r\n /**\r\n * typecheck assert!, we opt for strong typing here\r\n * because it makes it easier to detect bugs\r\n */\r\n var element = DomQuery_1.DQ.byId(form);\r\n if (!element.isTag(\"form\")) {\r\n throw new Error(getMessage(\"ERR_VIEWSTATE\"));\r\n }\r\n var formData = new XhrFormData_1.XhrFormData(element);\r\n return formData.toString();\r\n }\r\n Implementation.getViewState = getViewState;\r\n //----------------------------------------------- Methods ---------------------------------------------------------------------\r\n function applyWindowId(options) {\r\n var _a, _b, _c;\r\n var windowId = (_c = (_b = (_a = options) === null || _a === void 0 ? void 0 : _a.value) === null || _b === void 0 ? void 0 : _b.windowId, (_c !== null && _c !== void 0 ? _c : ExtDomQuery_1.ExtDomquery.windowId));\r\n options.assignIf(!!windowId, P_WINDOW_ID).value = windowId;\r\n options.delete(\"windowId\");\r\n }\r\n function applyRender(options, ctx, form, elementId) {\r\n if (options.getIf(\"render\").isPresent()) {\r\n transformValues(ctx.getIf(CTX_PARAM_PASS_THR).get({}), P_RENDER, options.getIf(\"render\").value, form, elementId);\r\n }\r\n }\r\n function applyExecute(options, ctx, form, elementId) {\r\n var PARAM_EXECUTE = CTX_PARAM_EXECUTE;\r\n var PARAM_PASS_THR = CTX_PARAM_PASS_THR;\r\n if (options.getIf(PARAM_EXECUTE).isPresent()) {\r\n /*the options must be a blank delimited list of strings*/\r\n /*compliance with Mojarra which automatically adds @this to an execute\r\n * the spec rev 2.0a however states, if none is issued nothing at all should be sent down\r\n */\r\n options.assign(PARAM_EXECUTE).value = options.getIf(PARAM_EXECUTE).value + \" @this\";\r\n transformValues(ctx.getIf(PARAM_PASS_THR).get({}), P_EXECUTE, options.getIf(PARAM_EXECUTE).value, form, elementId);\r\n }\r\n else {\r\n ctx.assign(PARAM_PASS_THR, P_EXECUTE).value = elementId;\r\n }\r\n }\r\n function applyClientWindowId(form, ctx) {\r\n var clientWindow = jsf.getClientWindow(form.getAsElem(0).value);\r\n if (clientWindow) {\r\n ctx.assign(CTX_PARAM_PASS_THR, P_CLIENTWINDOW).value = clientWindow;\r\n }\r\n }\r\n /**\r\n * transforms the user values to the expected one\r\n * with the proper none all form and this handling\r\n * (note we also could use a simple string replace but then\r\n * we would have had double entries under some circumstances)\r\n *\r\n * there are several standardized constants which need a special treatment\r\n * like @all, @none, @form, @this\r\n *\r\n * @param targetConfig the target configuration receiving the final values\r\n * @param targetKey the target key\r\n * @param userValues the passed user values (aka input string which needs to be transformed)\r\n * @param issuingForm the form where the issuing element originates\r\n * @param issuingElementId the issuing element\r\n */\r\n function transformValues(targetConfig, targetKey, userValues, issuingForm, issuingElementId) {\r\n //a cleaner implementation of the transform list method\r\n var iterValues = (userValues) ? trim(userValues).split(/\\s+/gi) : [];\r\n var ret = [];\r\n var processed = {};\r\n //TODO make this code cleaner\r\n //the idea is simply to loop over all values and then replace\r\n //their generic values and filter out doubles\r\n //this is more readable than the old indexed based solution\r\n //and not really slower because we had to build up the index in our old solution\r\n //anyway\r\n for (var cnt = 0; cnt < iterValues.length; cnt++) {\r\n //avoid doubles\r\n if (iterValues[cnt] in processed) {\r\n continue;\r\n }\r\n switch (iterValues[cnt]) {\r\n //@none no values should be sent\r\n case IDENT_NONE:\r\n return targetConfig.delete(targetKey);\r\n //@all is a pass through case according to the spec\r\n case IDENT_ALL:\r\n targetConfig.assign(targetKey).value = IDENT_ALL;\r\n return targetConfig;\r\n //@form pushes the issuing form id into our list\r\n case IDENT_FORM:\r\n ret.push(issuingForm.id.value);\r\n processed[issuingForm.id.value] = true;\r\n break;\r\n //@this is replaced with the current issuing element id\r\n case IDENT_THIS:\r\n if (!(issuingElementId in processed)) {\r\n ret.push(issuingElementId);\r\n processed[issuingElementId] = true;\r\n }\r\n break;\r\n default:\r\n ret.push(iterValues[cnt]);\r\n processed[iterValues[cnt]] = true;\r\n }\r\n }\r\n //We now add the target as joined list\r\n targetConfig.assign(targetKey).value = ret.join(\" \");\r\n return targetConfig;\r\n }\r\n function fetchPassthroughValues(mappedOpts) {\r\n return monadish_1.Stream.ofAssoc(mappedOpts)\r\n .filter(function (item) { return !(item[0] in BlockFilter); })\r\n .collect(new SourcesCollectors_1.AssocArrayCollector());\r\n }\r\n function resolveForm(requestCtx, elem, event) {\r\n var _a, _b, _c;\r\n var configId = (_c = (_b = (_a = requestCtx.value) === null || _a === void 0 ? void 0 : _a.myfaces) === null || _b === void 0 ? void 0 : _b.form, (_c !== null && _c !== void 0 ? _c : MF_NONE)); //requestCtx.getIf(MYFACES, \"form\").orElse(MF_NONE).value;\r\n var form = DomQuery_1.DQ\r\n .byId(configId)\r\n .orElseLazy(function () { return getForm(elem.getAsElem(0).value, event); });\r\n return form;\r\n }\r\n function resolveTimeout(options, requestCtx) {\r\n var _a;\r\n var getCfg = getLocalOrGlobalConfig;\r\n return _a = options.getIf(CTX_PARAM_TIMEOUT).value, (_a !== null && _a !== void 0 ? _a : getCfg(requestCtx.value, CTX_PARAM_TIMEOUT, 0));\r\n }\r\n function resolveDelay(options, requestCtx) {\r\n var _a;\r\n var getCfg = getLocalOrGlobalConfig;\r\n return _a = options.getIf(CTX_PARAM_DELAY).value, (_a !== null && _a !== void 0 ? _a : getCfg(requestCtx.value, CTX_PARAM_DELAY, 0));\r\n }\r\n})(Implementation = exports.Implementation || (exports.Implementation = {}));\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbWFpbi90eXBlc2NyaXB0L2ltcGwvQWpheEltcGwudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbWFpbi90eXBlc2NyaXB0L2ltcGwvQWpheEltcGwudHM/MjlkOSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lIG9yIG1vcmVcclxuICogY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZSBkaXN0cmlidXRlZCB3aXRoXHJcbiAqIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC5cclxuICogVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjBcclxuICogKHRoZSBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aFxyXG4gKiB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxyXG4gKlxyXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG4gKlxyXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXHJcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcclxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXHJcbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcclxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXHJcbiAqL1xyXG5cclxuaW1wb3J0ICogYXMgbXlmYWNlc0NvbmZpZyBmcm9tIFwiLi4vYXBpL215ZmFjZXNcIjtcclxuXHJcbmltcG9ydCB7SUxpc3RlbmVyfSBmcm9tIFwiLi91dGlsL0xpc3RlbmVyUXVldWVcIjtcclxuaW1wb3J0IHtSZXNwb25zZX0gZnJvbSBcIi4veGhyQ29yZS9SZXNwb25zZVwiO1xyXG5pbXBvcnQge1hoclJlcXVlc3R9IGZyb20gXCIuL3hockNvcmUvWGhyUmVxdWVzdFwiO1xyXG5pbXBvcnQge0FzeW5jaHJvbm91c2VRdWV1ZX0gZnJvbSBcIi4vdXRpbC9Bc3luY1F1ZXVlXCI7XHJcbmltcG9ydCB7Q29uZmlnLCBPcHRpb25hbH0gZnJvbSBcIi4uL2V4dC9tb25hZGlzaC9Nb25hZFwiO1xyXG5cclxuaW1wb3J0IHtDb25zdH0gZnJvbSBcIi4vY29yZS9Db25zdFwiO1xyXG5pbXBvcnQge0Fzc2VydGlvbnN9IGZyb20gXCIuL3V0aWwvQXNzZXJ0aW9uc1wiO1xyXG5pbXBvcnQge1hockZvcm1EYXRhfSBmcm9tIFwiLi94aHJDb3JlL1hockZvcm1EYXRhXCI7XHJcbmltcG9ydCB7RXh0RG9tcXVlcnl9IGZyb20gXCIuL3V0aWwvRXh0RG9tUXVlcnlcIjtcclxuaW1wb3J0IHtFcnJvckRhdGF9IGZyb20gXCIuL3hockNvcmUvRXJyb3JEYXRhXCI7XHJcbmltcG9ydCB7RXZlbnREYXRhfSBmcm9tIFwiLi94aHJDb3JlL0V2ZW50RGF0YVwiO1xyXG5pbXBvcnQge0RRfSBmcm9tIFwiLi4vZXh0L21vbmFkaXNoL0RvbVF1ZXJ5XCI7XHJcbmltcG9ydCB7TGFuZywgUHJvbWlzZSwgU3RyZWFtfSBmcm9tIFwiLi4vZXh0L21vbmFkaXNoXCI7XHJcbmltcG9ydCB7QXNzb2NBcnJheUNvbGxlY3Rvcn0gZnJvbSBcIi4uL2V4dC9tb25hZGlzaC9Tb3VyY2VzQ29sbGVjdG9yc1wiO1xyXG5pbXBvcnQge0V4dExhbmd9IGZyb20gXCIuL3V0aWwvTGFuZ1wiO1xyXG5cclxuZGVjbGFyZSB2YXIganNmOiBhbnk7XHJcblxyXG4vKlxyXG4gKiBhbGxvd2VkIHByb2plY3Qgc3RhZ2VzXHJcbiAqL1xyXG5lbnVtIFByb2plY3RTdGFnZXMge1xyXG4gICAgUHJvZHVjdGlvbiA9IFwiUHJvZHVjdGlvblwiLFxyXG4gICAgRGV2ZWxvcG1lbnQgPSBcIkRldmVsb3BtZW50XCIsXHJcbiAgICBTeXN0ZW1UZXN0ID0gXCJTeXN0ZW1UZXN0XCIsXHJcbiAgICBVbml0VGVzdCA9IFwiVW5pdFRlc3RcIlxyXG59XHJcblxyXG4vKlxyXG4gKiAgIGJsb2NrZmlsdGVyIGZvciB0aGUgcGFzc3Rocm91Z2ggZmlsdGVyaW5nOyB0aGUgYXR0cmlidXRlcyBnaXZlbiBoZXJlXHJcbiAqICAgd2lsbCBub3QgYmUgdHJhbnNtaXR0ZWQgZnJvbSB0aGUgb3B0aW9ucyBpbnRvIHRoZSBwYXNzdGhyb3VnaFxyXG4gKi9cclxuZW51bSBCbG9ja0ZpbHRlciB7XHJcbiAgICBvbmVycm9yID0gXCJvbmVycm9yXCIsXHJcbiAgICBvbmV2ZW50ID0gXCJvbmV2ZW50XCIsXHJcbiAgICByZW5kZXIgPSBcInJlbmRlclwiLFxyXG4gICAgZXhlY3V0ZSA9IFwiZXhlY3V0ZVwiLFxyXG4gICAgbXlmYWNlcyA9IFwibXlmYWNlc1wiLFxyXG4gICAgZGVsYXkgPSBcImRlbGF5XCIsXHJcbiAgICB0aW1lb3V0ID0gXCJ0aW1lb3V0XCIsXHJcbiAgICB3aW5kb3dJZCA9IFwid2luZG93SWRcIlxyXG59XHJcblxyXG4vKipcclxuICogQ29yZSBJbXBsZW1lbnRhdGlvblxyXG4gKiB0byBkaXN0aW5jdCBiZXR3ZWVuIGFwaSBhbmQgaW1wbFxyXG4gKlxyXG4gKiBUaGUgb3JpZ2luYWwgaWRlYSB3YXMgdG8gbWFrZSB0aGUgaW1wbGVtZW50YXRpb24gcGx1Z2dhYmxlXHJcbiAqIGJ1dCB0aGlzIGlzIHBvaW50bGVzcywgeW91IGFsd2F5cyBjYW4gb3ZlcndyaXRlIHRoZSB0aGluIGFwaSBsYXllclxyXG4gKiBob3dldmVyIGEgZGVkaWNhdGVkIGFwaSBtYWtlcyBzZW5zZSBmb3IgcmVhZGFiaWxpdHkgcmVhc29uc1xyXG4gKi9cclxuZXhwb3J0IG1vZHVsZSBJbXBsZW1lbnRhdGlvbiB7XHJcblxyXG4gICAgaW1wb3J0IHRyaW0gPSBMYW5nLnRyaW07XHJcbiAgICBpbXBvcnQgZ2V0TWVzc2FnZSA9IEV4dExhbmcuZ2V0TWVzc2FnZTtcclxuICAgIGltcG9ydCBnZXRGb3JtID0gRXh0TGFuZy5nZXRGb3JtO1xyXG4gICAgaW1wb3J0IGdldExvY2FsT3JHbG9iYWxDb25maWcgPSBFeHRMYW5nLmdldExvY2FsT3JHbG9iYWxDb25maWc7XHJcbiAgICBpbXBvcnQgZ2V0RXZlbnQgPSBFeHRMYW5nLmdldEV2ZW50O1xyXG4gICAgaW1wb3J0IGdldEdsb2JhbENvbmZpZyA9IEV4dExhbmcuZ2V0R2xvYmFsQ29uZmlnO1xyXG4gICAgaW1wb3J0IGFzc2VydCA9IEFzc2VydGlvbnMuYXNzZXJ0O1xyXG4gICAgaW1wb3J0IENUWF9QQVJBTV9QQVNTX1RIUiA9IENvbnN0LkNUWF9QQVJBTV9QQVNTX1RIUjtcclxuICAgIGltcG9ydCBQX0VWVCA9IENvbnN0LlBfRVZUO1xyXG4gICAgaW1wb3J0IFNPVVJDRSA9IENvbnN0LlNPVVJDRTtcclxuICAgIGltcG9ydCBPTl9FVkVOVCA9IENvbnN0Lk9OX0VWRU5UO1xyXG4gICAgaW1wb3J0IE9OX0VSUk9SID0gQ29uc3QuT05fRVJST1I7XHJcbiAgICBpbXBvcnQgTVlGQUNFUyA9IENvbnN0Lk1ZRkFDRVM7XHJcbiAgICBpbXBvcnQgTUZfTk9ORSA9IENvbnN0Lk1GX05PTkU7XHJcbiAgICBpbXBvcnQgUF9QQVJUSUFMX1NPVVJDRSA9IENvbnN0LlBfUEFSVElBTF9TT1VSQ0U7XHJcbiAgICBpbXBvcnQgUF9BSkFYID0gQ29uc3QuUF9BSkFYO1xyXG4gICAgaW1wb3J0IFBfUkVTRVRfVkFMVUVTID0gQ29uc3QuUF9SRVNFVF9WQUxVRVM7XHJcbiAgICBpbXBvcnQgQ1RYX1BBUkFNX1NSQ19GUk1fSUQgPSBDb25zdC5DVFhfUEFSQU1fU1JDX0ZSTV9JRDtcclxuICAgIGltcG9ydCBDVFhfUEFSQU1fU1JDX0NUTF9JRCA9IENvbnN0LkNUWF9QQVJBTV9TUkNfQ1RMX0lEO1xyXG4gICAgaW1wb3J0IENUWF9QQVJBTV9UUl9UWVBFID0gQ29uc3QuQ1RYX1BBUkFNX1RSX1RZUEU7XHJcbiAgICBpbXBvcnQgUkVRX1RZUEVfUE9TVCA9IENvbnN0LlJFUV9UWVBFX1BPU1Q7XHJcbiAgICBpbXBvcnQgUF9XSU5fSUQgPSBDb25zdC5QX1dJTl9JRDtcclxuICAgIGltcG9ydCBDVFhfUEFSQU1fRVhFQ1VURSA9IENvbnN0LkNUWF9QQVJBTV9FWEVDVVRFO1xyXG4gICAgaW1wb3J0IFBfRVhFQ1VURSA9IENvbnN0LlBfRVhFQ1VURTtcclxuICAgIGltcG9ydCBQX1dJTkRPV19JRCA9IENvbnN0LlBfV0lORE9XX0lEO1xyXG4gICAgaW1wb3J0IFBfUkVOREVSID0gQ29uc3QuUF9SRU5ERVI7XHJcbiAgICBpbXBvcnQgSURFTlRfQUxMID0gQ29uc3QuSURFTlRfQUxMO1xyXG4gICAgaW1wb3J0IElERU5UX05PTkUgPSBDb25zdC5JREVOVF9OT05FO1xyXG4gICAgaW1wb3J0IElERU5UX0ZPUk0gPSBDb25zdC5JREVOVF9GT1JNO1xyXG4gICAgaW1wb3J0IElERU5UX1RISVMgPSBDb25zdC5JREVOVF9USElTO1xyXG4gICAgaW1wb3J0IFBfQ0xJRU5UV0lORE9XID0gQ29uc3QuUF9DTElFTlRXSU5ET1c7XHJcbiAgICBpbXBvcnQgQ1RYX1BBUkFNX1RJTUVPVVQgPSBDb25zdC5DVFhfUEFSQU1fVElNRU9VVDtcclxuICAgIGltcG9ydCBDVFhfUEFSQU1fREVMQVkgPSBDb25zdC5DVFhfUEFSQU1fREVMQVk7XHJcbiAgICBsZXQgZ2xvYmFsQ29uZmlnID0gbXlmYWNlc0NvbmZpZy5teWZhY2VzLmNvbmZpZztcclxuXHJcbiAgICBsZXQgcHJvamVjdFN0YWdlOiBzdHJpbmcgPSBudWxsO1xyXG4gICAgbGV0IHNlcGFyYXRvcjogc3RyaW5nID0gbnVsbDtcclxuICAgIGxldCBldmVudFF1ZXVlID0gW107XHJcbiAgICBsZXQgZXJyb3JRdWV1ZSA9IFtdO1xyXG4gICAgbGV0IHJlcXVlc3RRdWV1ZSA9IG51bGw7XHJcbiAgICAvKmVycm9yIHJlcG9ydGluZyB0aHJlc2hvbGQqL1xyXG4gICAgbGV0IHRocmVzaG9sZCA9IFwiRVJST1JcIjtcclxuXHJcbiAgICAvL3dlIG5lZWQgdG8gcHJveHkgdGhpcyBpbiB0aGUgdGVzdHNcclxuICAgIGV4cG9ydCBsZXQgcXVldWVIYW5kbGVyID0ge1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIHB1YmxpYyB0byBtYWtlIGl0IHNoaW1tYWJsZSBmb3IgdGVzdHNcclxuICAgICAgICAgKi9cclxuICAgICAgICBhZGRSZXF1ZXN0VG9RdWV1ZTogZnVuY3Rpb24gKGVsZW06IERRLCBmb3JtOiBEUSwgcmVxQ3R4OiBDb25maWcsIHJlc3BQYXNzVGhyOiBDb25maWcsIGRlbGF5ID0gMCwgdGltZW91dCA9IDApIHtcclxuICAgICAgICAgICAgcmVxdWVzdFF1ZXVlID0gcmVxdWVzdFF1ZXVlID8/IG5ldyBBc3luY2hyb25vdXNlUXVldWU8WGhyUmVxdWVzdD4oKTtcclxuICAgICAgICAgICAgcmVxdWVzdFF1ZXVlLmVucXVldWUobmV3IFhoclJlcXVlc3QoZWxlbSwgZm9ybSwgcmVxQ3R4LCByZXNwUGFzc1RociwgW10sIHRpbWVvdXQpLCBkZWxheSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogZmV0Y2hlcyB0aGUgc2VwYXJhdG9yIGNoYXIgZnJvbSB0aGUgZ2l2ZW4gc2NyaXB0IHRhZ3NcclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJuIHtjaGFyfSB0aGUgc2VwYXJhdG9yIGNoYXIgZm9yIHRoZSBnaXZlbiBzY3JpcHQgdGFnc1xyXG4gICAgICovXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gZ2V0U2VwYXJhdG9yQ2hhcigpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzPy5nbG9iYWxDb25maWc/LnNlcGFyYXRvciA/P1xyXG4gICAgICAgICAgICB0aGlzPy5zZXBhcmF0b3IgPz9cclxuICAgICAgICAgICAgKHNlcGFyYXRvciA9IEV4dERvbXF1ZXJ5LnNlYXJjaEpzZkpzRm9yKC9zZXBhcmF0b3I9KFteJjtdKikvKS5vckVsc2UoXCI6XCIpLnZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICAvL2ZvciB0ZXN0aW5nIG9ubHlcclxuICAgIGV4cG9ydCBmdW5jdGlvbiByZXNldCgpIHtcclxuICAgICAgICBnbG9iYWxDb25maWcgPSBteWZhY2VzQ29uZmlnLm15ZmFjZXMuY29uZmlnO1xyXG5cclxuICAgICAgICBwcm9qZWN0U3RhZ2UgPSBudWxsO1xyXG4gICAgICAgIHNlcGFyYXRvciA9IG51bGw7XHJcbiAgICAgICAgZXZlbnRRdWV1ZSA9IFtdO1xyXG4gICAgICAgIGVycm9yUXVldWUgPSBbXTtcclxuICAgICAgICByZXF1ZXN0UXVldWUgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHJldHVybiB0aGUgcHJvamVjdCBzdGFnZSBhbHNvIGVtaXR0ZWQgYnkgdGhlIHNlcnZlcjpcclxuICAgICAqIGl0IGNhbm5vdCBiZSBjYWNoZWQgYW5kIG11c3QgYmUgZGVsaXZlcmVkIG92ZXIgdGhlIHNlcnZlclxyXG4gICAgICogVGhlIHZhbHVlIGZvciBpdCBjb21lcyBmcm9tIHRoZSByZXF1ZXN0SW50ZXJuYWwgcGFyYW1ldGVyIG9mIHRoZSBqc2YuanMgc2NyaXB0IGNhbGxlZCBcInN0YWdlXCIuXHJcbiAgICAgKi9cclxuICAgIGV4cG9ydCBmdW5jdGlvbiBnZXRQcm9qZWN0U3RhZ2UoKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM/Lmdsb2JhbENvbmZpZz8ucHJvamVjdFN0YWdlID8/XHJcbiAgICAgICAgICAgIHRoaXM/LnByb2plY3RTdGFnZSA/P1xyXG4gICAgICAgICAgICAocHJvamVjdFN0YWdlID0gcmVzb2x2ZVByb2plY3RTdGF0ZUZyb21VUkwoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVQcm9qZWN0U3RhdGVGcm9tVVJMKCk6IHN0cmluZyB8IG51bGwge1xyXG5cclxuICAgICAgICAvKiBydW4gdGhyb3VnaCBhbGwgc2NyaXB0IHRhZ3MgYW5kIHRyeSB0byBmaW5kIHRoZSBvbmUgdGhhdCBpbmNsdWRlcyBqc2YuanMgKi9cclxuICAgICAgICBsZXQgZm91bmRTdGFnZSA9IDxzdHJpbmc+RXh0RG9tcXVlcnkuc2VhcmNoSnNmSnNGb3IoL3N0YWdlPShbXiY7XSopLykudmFsdWU7XHJcbiAgICAgICAgcmV0dXJuIChmb3VuZFN0YWdlIGluIFByb2plY3RTdGFnZXMpID8gZm91bmRTdGFnZSA6IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGNoYWluKHNvdXJjZTogYW55LCBldmVudDogRXZlbnQsIC4uLmZ1bmNzOiBFdmFsRnVuY3MpOiBib29sZWFuIHtcclxuXHJcbiAgICAgICAgbGV0IHJldCA9IHRydWU7XHJcbiAgICAgICAgbGV0IHJlc29sdmVBbmRFeGVjdXRlID0gZnVuY3Rpb24gKGZ1bmM6IEZ1bmN0aW9uIHwgc3RyaW5nKSB7XHJcbiAgICAgICAgICAgIGlmIChcInN0cmluZ1wiICE9IHR5cGVvZiBmdW5jKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKHJldCA9IHJldCAmJiAoKDxGdW5jdGlvbj5mdW5jKS5jYWxsKHNvdXJjZSwgZXZlbnQpICE9PSBmYWxzZSkpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy9laXRoZXIgYSBmdW5jdGlvbiBvciBhIHN0cmluZyBjYW4gYmUgcGFzc2VkIGluIGNhc2Ugb2YgYSBzdHJpbmcgd2UgaGF2ZSB0byB3cmFwIGl0IGludG8gYW5vdGhlciBmdW5jdGlvblxyXG4gICAgICAgICAgICAgICAgLy9pdCBpdCBpcyBub3QgYSBwbGFpbiBleGVjdXRhYmxlIGNvZGUgYnV0IGEgZGVmaW5pdGlvblxyXG4gICAgICAgICAgICAgICAgbGV0IHNvdXJjZUNvZGUgPSB0cmltKDxzdHJpbmc+ZnVuYyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoc291cmNlQ29kZS5pbmRleE9mKFwiZnVuY3Rpb24gXCIpID09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBzb3VyY2VDb2RlID0gYHJldHVybiAke3NvdXJjZUNvZGV9IChldmVudClgO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChyZXQgPSByZXQgJiYgKG5ldyBGdW5jdGlvbihcImV2ZW50XCIsIHNvdXJjZUNvZGUpLmNhbGwoc291cmNlLCBldmVudCkgIT09IGZhbHNlKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICA8YW55PlN0cmVhbS5vZiguLi5mdW5jcykuZWFjaChmdW5jID0+IHJlc29sdmVBbmRFeGVjdXRlKGZ1bmMpKTtcclxuICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogdGhpcyBmdW5jdGlvbiBoYXMgdG8gc2VuZCB0aGUgYWpheCByZXF1ZXN0c1xyXG4gICAgICpcclxuICAgICAqIGZvbGxvd2luZyByZXF1ZXN0IGNvbmRpdGlvbnMgbXVzdCBiZSBtZXQ6XHJcbiAgICAgKiA8dWw+XHJcbiAgICAgKiAgPGxpPiB0aGUgcmVxdWVzdCBtdXN0IGJlIHNlbnQgYXN5bmNocm9ub3VzbHkhIDwvbGk+XHJcbiAgICAgKiAgPGxpPiB0aGUgcmVxdWVzdCBtdXN0IGJlIGEgUE9TVCEhISByZXF1ZXN0IDwvbGk+XHJcbiAgICAgKiAgPGxpPiB0aGUgcmVxdWVzdCB1cmwgbXVzdCBiZSB0aGUgZm9ybSBhY3Rpb24gYXR0cmlidXRlIDwvbGk+XHJcbiAgICAgKiAgPGxpPiBhbGwgcmVxdWVzdHMgbXVzdCBiZSBxdWV1ZWQgd2l0aCBhIGNsaWVudCBzaWRlIHJlcXVlc3QgcXVldWUgdG8gZW5zdXJlIHRoZSByZXF1ZXN0IG9yZGVyaW5nITwvbGk+XHJcbiAgICAgKiA8L3VsPlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfE5vZGV9IGVsZW0gYW55IGRvbSBlbGVtZW50IG5vIG1hdHRlciBiZWluZyBpdCBodG1sIG9yIGpzZiwgZnJvbSB3aGljaCB0aGUgZXZlbnQgaXMgZW1pdHRlZFxyXG4gICAgICogQHBhcmFtIHt8RXZlbnR8fSBldmVudCBhbnkgamF2YXNjcmlwdCBldmVudCBzdXBwb3J0ZWQgYnkgdGhhdCBvYmplY3RcclxuICAgICAqIEBwYXJhbSB7fE9iamVjdHx9IG9wdGlvbnMgIG1hcCBvZiBvcHRpb25zIGJlaW5nIHB1c2hlZCBpbnRvIHRoZSBhamF4IGN5Y2xlXHJcbiAgICAgKlxyXG4gICAgICpcclxuICAgICAqIGEpIHRyYW5zZm9ybUFyZ3VtZW50cyBvdXQgb2YgdGhlIGZ1bmN0aW9uXHJcbiAgICAgKiBiKSBwYXNzVGhyb3VnaCBoYW5kbGluZyB3aXRoIGEgbWFwIGNvcHkgd2l0aCBhIGZpbHRlciBtYXAgYmxvY2sgbWFwXHJcbiAgICAgKi9cclxuICAgIGV4cG9ydCBmdW5jdGlvbiByZXF1ZXN0KGVsOiBFbGVtRGVmLCBldmVudD86IEV2ZW50LCBvcHRzID86IE9wdGlvbnMpIHtcclxuXHJcbiAgICAgICAgLypcclxuICAgICAgICAgKm5hbWVzcGFjZSByZW1hcCBmb3Igb3VyIGxvY2FsIGZ1bmN0aW9uIGNvbnRleHQgd2UgbWl4IHRoZSBlbnRpcmUgZnVuY3Rpb24gbmFtZXNwYWNlIGludG9cclxuICAgICAgICAgKmEgbG9jYWwgZnVuY3Rpb24gdmFyaWFibGUgc28gdGhhdCB3ZSBkbyBub3QgaGF2ZSB0byB3cml0ZSB0aGUgZW50aXJlIG5hbWVzcGFjZVxyXG4gICAgICAgICAqYWxsIHRoZSB0aW1lXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgZXZlbnQgPSBnZXRFdmVudChldmVudCk7XHJcblxyXG4gICAgICAgIC8vb3B0aW9ucyBub3Qgc2V0IHdlIGRlZmluZSBhIGRlZmF1bHQgb25lIHdpdGggbm90aGluZ1xyXG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSBuZXcgQ29uZmlnKG9wdHMpLmRlZXBDb3B5O1xyXG4gICAgICAgIGNvbnN0IGVsZW0gPSBEUS5ieUlkKGVsIHx8IDxFbGVtZW50PmV2ZW50LnRhcmdldCk7XHJcbiAgICAgICAgY29uc3QgZWxlbWVudElkID0gZWxlbS5pZDtcclxuICAgICAgICBjb25zdCByZXF1ZXN0Q3R4ID0gbmV3IENvbmZpZyh7fSk7XHJcbiAgICAgICAgY29uc3QgaW50ZXJuYWxDdHggPSBuZXcgQ29uZmlnKHt9KTtcclxuXHJcbiAgICAgICAgQXNzZXJ0aW9ucy5hc3NlcnRSZXF1ZXN0SW50ZWdyaXR5KG9wdGlvbnMsIGVsZW0pO1xyXG5cclxuICAgICAgICBhcHBseVdpbmRvd0lkKG9wdGlvbnMpO1xyXG5cclxuICAgICAgICByZXF1ZXN0Q3R4LmFzc2lnbihDVFhfUEFSQU1fUEFTU19USFIpLnZhbHVlID0gZmV0Y2hQYXNzdGhyb3VnaFZhbHVlcyhvcHRpb25zLnZhbHVlKTtcclxuXHJcbiAgICAgICAgcmVxdWVzdEN0eC5hc3NpZ25JZighIWV2ZW50LCBDVFhfUEFSQU1fUEFTU19USFIsIFBfRVZUKS52YWx1ZSA9IGV2ZW50Py50eXBlO1xyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBhamF4IHBhc3MgdGhyb3VnaCBjb250ZXh0IHdpdGggdGhlIHNvdXJjZVxyXG4gICAgICAgICAqIG9uZXZlbnQgYW5kIG9uZXJyb3JcclxuICAgICAgICAgKi9cclxuICAgICAgICByZXF1ZXN0Q3R4LmFzc2lnbihTT1VSQ0UpLnZhbHVlID0gZWxlbWVudElkLnZhbHVlO1xyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBvbiBldmVudCBhbmQgb25FcnJvci4uLlxyXG4gICAgICAgICAqIHRob3NlIHZhbHVlcyB3aWxsIGJlIHRyYXZlcnNlZCBsYXRlciBvblxyXG4gICAgICAgICAqIGFsc28gaW50byB0aGUgcmVzcG9uc2UgY29udGV4dFxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHJlcXVlc3RDdHguYXNzaWduKE9OX0VWRU5UKS52YWx1ZSA9IG9wdGlvbnMudmFsdWU/Lm9uZXZlbnQ7XHJcbiAgICAgICAgcmVxdWVzdEN0eC5hc3NpZ24oT05fRVJST1IpLnZhbHVlID0gb3B0aW9ucy52YWx1ZT8ub25lcnJvcjtcclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogbGV0cyBkcmFnIHRoZSBteWZhY2VzIGNvbmZpZyBwYXJhbXMgYWxzbyBpblxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHJlcXVlc3RDdHguYXNzaWduKE1ZRkFDRVMpLnZhbHVlID0gb3B0aW9ucy52YWx1ZT8ubXlmYWNlcztcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBmZXRjaCB0aGUgcGFyZW50IGZvcm1cclxuICAgICAgICAgKlxyXG4gICAgICAgICAqIG5vdGUgd2UgYWxzbyBhZGQgYW4gb3ZlcnJpZGUgcG9zc2liaWxpdHkgaGVyZVxyXG4gICAgICAgICAqIHNvIHRoYXQgcGVvcGxlIGNhbiB1c2UgZHVtbXkgZm9ybXMgYW5kIHdvcmtcclxuICAgICAgICAgKiB3aXRoIGRldGFjaGVkIG9iamVjdHNcclxuICAgICAgICAgKi9cclxuICAgICAgICBjb25zdCBjb25maWdJZCA9IHJlcXVlc3RDdHgudmFsdWU/Lm15ZmFjZXM/LmZvcm0gPz8gTUZfTk9ORTtcclxuICAgICAgICBsZXQgZm9ybTogRFEgPSByZXNvbHZlRm9ybShyZXF1ZXN0Q3R4LCBlbGVtLCBldmVudCk7XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIGJpbmRpbmcgY29udHJhY3QgdGhlIGphdmF4LmZhY2VzLnNvdXJjZSBtdXN0IGJlIHNldFxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHJlcXVlc3RDdHguYXNzaWduKENUWF9QQVJBTV9QQVNTX1RIUiwgUF9QQVJUSUFMX1NPVVJDRSkudmFsdWUgPSBlbGVtZW50SWQudmFsdWU7XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIGphdmF4LmZhY2VzLnBhcnRpYWwuYWpheCBtdXN0IGJlIHNldCB0byB0cnVlXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgcmVxdWVzdEN0eC5hc3NpZ24oQ1RYX1BBUkFNX1BBU1NfVEhSLCBQX0FKQVgpLnZhbHVlID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogYmluZGluZyBjb250cmFjdCB0aGUgamF2YXguZmFjZXMuc291cmNlIG11c3QgYmUgc2V0XHJcbiAgICAgICAgICovXHJcbiAgICAgICAgcmVxdWVzdEN0eC5hc3NpZ24oQ1RYX1BBUkFNX1BBU1NfVEhSLCBQX1BBUlRJQUxfU09VUkNFKS52YWx1ZSA9IGVsZW1lbnRJZC52YWx1ZTtcclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogaWYgcmVzZXRWYWx1ZXMgaXMgc2V0IHRvIHRydWVcclxuICAgICAgICAgKiB0aGVuIHdlIGhhdmUgdG8gc2V0IGphdmF4LmZhY2VzLnJlc2V0VmFsdWVzIGFzIHdlbGxcclxuICAgICAgICAgKiBhcyBwYXNzIHRocm91Z2ggcGFyYW1ldGVyXHJcbiAgICAgICAgICogdGhlIHZhbHVlIGhhcyB0byBiZSBleHBsaWNpdGx5IHRydWUsIGFjY29yZGluZyB0b1xyXG4gICAgICAgICAqIHRoZSBzcGVjcyBqc2RvY1xyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHJlcXVlc3RDdHguYXNzaWduSWYodHJ1ZSA9PT0gb3B0aW9ucy52YWx1ZT8ucmVzZXRWYWx1ZXMsXHJcbiAgICAgICAgICAgIENUWF9QQVJBTV9QQVNTX1RIUiwgUF9SRVNFVF9WQUxVRVMpLnZhbHVlID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgLy9hZGRpdGlvbmFsIG1ldGEgaW5mb3JtYXRpb24gdG8gc3BlZWQgdGhpbmdzIHVwLCBub3RlIGludGVybmFsIG5vbiBqc2ZcclxuICAgICAgICAvL3Bhc3MgdGhyb3VnaCBvcHRpb25zIGFyZSBzdG9yZWQgdW5kZXIgX21mSW50ZXJuYWwgaW4gdGhlIGNvbnRleHRcclxuICAgICAgICBpbnRlcm5hbEN0eC5hc3NpZ24oQ1RYX1BBUkFNX1NSQ19GUk1fSUQpLnZhbHVlID0gZm9ybS5pZC52YWx1ZTtcclxuICAgICAgICBpbnRlcm5hbEN0eC5hc3NpZ24oQ1RYX1BBUkFNX1NSQ19DVExfSUQpLnZhbHVlID0gZWxlbWVudElkLnZhbHVlO1xyXG4gICAgICAgIGludGVybmFsQ3R4LmFzc2lnbihDVFhfUEFSQU1fVFJfVFlQRSkudmFsdWUgPSBSRVFfVFlQRV9QT1NUO1xyXG5cclxuICAgICAgICAvL21vamFycmEgY29tcGF0aWJpbGl0eSwgbW9qYXJyYSBpcyBzZW5kaW5nIHRoZSBmb3JtIGlkIGFzIHdlbGxcclxuICAgICAgICAvL3RoaXMgaXMgbm90IGRvY3VtZW50ZWQgYmVoYXZpb3IgYnV0IGNhbiBiZSBkZXRlcm1pbmVkIGJ5IHJ1bm5pbmdcclxuICAgICAgICAvL21vamFycmEgdW5kZXIgYmxhY2tib3ggY29uZGl0aW9uc1xyXG4gICAgICAgIC8vaSBhc3N1bWUgaXQgZG9lcyB0aGUgc2FtZSBhcyBvdXIgZm9ybUlkX3N1Ym1pdD0xIHNvIGxlYXZpbmcgaXQgb3V0XHJcbiAgICAgICAgLy93b250IGh1cnQgYnV0IGZvciB0aGUgc2FrZSBvZiBjb21wYXRpYmlsaXR5IHdlIGFyZSBnb2luZyB0byBhZGQgaXRcclxuXHJcbiAgICAgICAgcmVxdWVzdEN0eC5hc3NpZ24oQ1RYX1BBUkFNX1BBU1NfVEhSLCBmb3JtLmlkLnZhbHVlKS52YWx1ZSA9IGZvcm0uaWQudmFsdWU7XHJcblxyXG4gICAgICAgIGFwcGx5Q2xpZW50V2luZG93SWQoZm9ybSwgcmVxdWVzdEN0eCk7XHJcblxyXG4gICAgICAgIGFwcGx5RXhlY3V0ZShvcHRpb25zLCByZXF1ZXN0Q3R4LCBmb3JtLCBlbGVtZW50SWQudmFsdWUpO1xyXG4gICAgICAgIGFwcGx5UmVuZGVyKG9wdGlvbnMsIHJlcXVlc3RDdHgsIGZvcm0sIGVsZW1lbnRJZC52YWx1ZSk7XHJcblxyXG4gICAgICAgIGxldCBkZWxheTogbnVtYmVyID0gcmVzb2x2ZURlbGF5KG9wdGlvbnMsIHJlcXVlc3RDdHgpO1xyXG4gICAgICAgIGxldCB0aW1lb3V0OiBudW1iZXIgPSByZXNvbHZlVGltZW91dChvcHRpb25zLCByZXF1ZXN0Q3R4KTtcclxuXHJcbiAgICAgICAgLy9ub3cgd2UgZW5xdWV1ZSB0aGUgcmVxdWVzdCBhcyBhc3luY2hyb25vdXMgcnVubmFibGUgaW50byBvdXIgcmVxdWVzdFxyXG4gICAgICAgIC8vcXVldWUgYW5kIGxldCB0aGUgcXVldWUgdGFrZSBvdmVyIHRoZSByZXN0XHJcbiAgICAgICAgcXVldWVIYW5kbGVyLmFkZFJlcXVlc3RUb1F1ZXVlKGVsZW0sIGZvcm0sIHJlcXVlc3RDdHgsIGludGVybmFsQ3R4LCBkZWxheSwgdGltZW91dCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTcGVjLiAxMy4zLjNcclxuICAgICAqIEV4YW1pbmluZyB0aGUgcmVzcG9uc2UgbWFya3VwIGFuZCB1cGRhdGluZyB0aGUgRE9NIHRyZWVcclxuICAgICAqIEBwYXJhbSB7WE1MSHR0cFJlcXVlc3R9IHJlcXVlc3QgLSB0aGUgYWpheCByZXF1ZXN0XHJcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gY29udGV4dCAtIHRoZSBhamF4IGNvbnRleHRcclxuICAgICAqL1xyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHJlc3BvbnNlKHJlcXVlc3Q6IFhNTEh0dHBSZXF1ZXN0LCBjb250ZXh0OiBDb250ZXh0KSB7XHJcbiAgICAgICAgUmVzcG9uc2UucHJvY2Vzc1Jlc3BvbnNlKHJlcXVlc3QsIGNvbnRleHQpO1xyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBmdW5jdGlvbiBhZGRPbkVycm9yKGVycm9yTGlzdGVuZXI6IElMaXN0ZW5lcjxFcnJvckRhdGE+KSB7XHJcbiAgICAgICAgLyplcnJvciBoYW5kbGluZyBhbHJlYWR5IGRvbmUgaW4gdGhlIGFzc2VydCBvZiB0aGUgcXVldWUqL1xyXG4gICAgICAgIGVycm9yUXVldWUucHVzaChlcnJvckxpc3RlbmVyKTtcclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gYWRkT25FdmVudChldmVudExpc3RlbmVyOiBJTGlzdGVuZXI8RXZlbnREYXRhPikge1xyXG4gICAgICAgIC8qZXJyb3IgaGFuZGxpbmcgYWxyZWFkeSBkb25lIGluIHRoZSBhc3NlcnQgb2YgdGhlIHF1ZXVlKi9cclxuICAgICAgICBldmVudFF1ZXVlLnB1c2goZXZlbnRMaXN0ZW5lcik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBzZW5kcyBhbiBldmVudFxyXG4gICAgICovXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gc2VuZEV2ZW50KGRhdGE6IEV2ZW50RGF0YSwgbG9jYWxIYW5kbGVyID0gZnVuY3Rpb24oZGF0YTogRXZlbnREYXRhKSB7fSkge1xyXG4gICAgICAgIC8qbm93IHdlIHNlcnZlIHRoZSBxdWV1ZSBhcyB3ZWxsKi9cclxuICAgICAgICBsb2NhbEhhbmRsZXIoZGF0YSk7XHJcbiAgICAgICAgZXZlbnRRdWV1ZS5mb3JFYWNoKGZuID0+IGZuKGRhdGEpKTtcclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJQcm9taXNlKCkge1xyXG4gICAgICAgIHdpbmRvd1tcIlByb21pc2VcIl0gPSAoPGFueT53aW5kb3cpPy5Qcm9taXNlID8/IFByb21pc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBlcnJvciBoYW5kbGVyIGJlaGF2aW9yIGNhbGxlZCBpbnRlcm5hbGx5XHJcbiAgICAgKiBhbmQgb25seSBpbnRvIHRoZSBpbXBsIGl0IHRha2VzIGNhcmUgb2YgdGhlXHJcbiAgICAgKiBpbnRlcm5hbCBtZXNzYWdlIHRyYW5zZm9ybWF0aW9uIHRvIGEgbXlmYWNlcyBpbnRlcm5hbCBlcnJvclxyXG4gICAgICogYW5kIHRoZW4gdXNlcyB0aGUgc3RhbmRhcmQgc2VuZCBlcnJvciBtZWNoYW5pc21zXHJcbiAgICAgKiBhbHNvIGEgZG91YmxlIGVycm9yIGxvZ2dpbmcgcHJldmVudGlvbiBpcyBkb25lIGFzIHdlbGxcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gcmVxdWVzdCB0aGUgcmVxdWVzdCBjdXJyZW50bHkgYmVpbmcgcHJvY2Vzc2VkXHJcbiAgICAgKiBAcGFyYW0gY29udGV4dCB0aGUgY29udGV4dCBhZmZlY3RlZCBieSB0aGlzIGVycm9yXHJcbiAgICAgKiBAcGFyYW0gZXhjZXB0aW9uIHRoZSBleGNlcHRpb24gYmVpbmcgdGhyb3duXHJcbiAgICAgKiBAcGFyYW0gY2xlYXJSZXF1ZXN0UXVldWUgaWYgc2V0IHRvIHRydWUsIGNsZWFycyB0aGUgcmVxdWVzdCBxdWV1ZSBvZiBhbGwgcGVuZGluZyByZXF1ZXN0c1xyXG4gICAgICovXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gc3RkRXJyb3JIYW5kbGVyKHJlcXVlc3Q6IFhNTEh0dHBSZXF1ZXN0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiBDb25maWcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbjogYW55LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhclJlcXVlc3RRdWV1ZSA9IGZhbHNlKSB7XHJcbiAgICAgICAgLy9uZXdlciBicm93c2VycyBkbyBub3QgYWxsb3cgdG8gaG9sZCBhZGRpdGlvbmFsIHZhbHVlcyBvbiBuYXRpdmUgb2JqZWN0cyBsaWtlIGV4Y2VwdGlvbnNcclxuICAgICAgICAvL3dlIGhlbmNlIGNhcHN1bGUgaXQgaW50byB0aGUgcmVxdWVzdCwgd2hpY2ggaXMgZ2NlZCBhdXRvbWF0aWNhbGx5XHJcbiAgICAgICAgLy9vbiBpZSBhcyB3ZWxsLCBzaW5jZSB0aGUgc3RkRXJyb3JIYW5kbGVyIHVzdWFsbHkgaXMgY2FsbGVkIGJldHdlZW4gcmVxdWVzdHNcclxuICAgICAgICAvL3RoaXMgaXMgYSB2YWxpZCBhcHByb2FjaFxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmICh0aHJlc2hvbGQgPT0gXCJFUlJPUlwiKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgZXJyb3JEYXRhID0gRXJyb3JEYXRhLmZyb21DbGllbnQoZXhjZXB0aW9uKTtcclxuICAgICAgICAgICAgICAgIHNlbmRFcnJvcihlcnJvckRhdGEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBmaW5hbGx5IHtcclxuICAgICAgICAgICAgaWYgKGNsZWFyUmVxdWVzdFF1ZXVlKSB7XHJcbiAgICAgICAgICAgICAgICByZXF1ZXN0UXVldWUuY2xlYW51cCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogaW1wbGVtZW50YXRpb24gdHJpZ2dlcmluZyB0aGUgZXJyb3IgY2hhaW5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gcmVxdWVzdCB0aGUgcmVxdWVzdCBvYmplY3Qgd2hpY2ggY29tZXMgZnJvbSB0aGUgeGhyIGN5Y2xlXHJcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gY29udGV4dCAoTWFwKSB0aGUgY29udGV4dCBvYmplY3QgYmVpbmcgcHVzaGVkIG92ZXIgdGhlIHhociBjeWNsZSBrZWVwaW5nIGFkZGl0aW9uYWwgbWV0YWRhdGFcclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBlcnJvck5hbWUgdGhlIGVycm9yIG5hbWVcclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBlcnJvck1lc3NhZ2UgdGhlIGVycm9yIG5hbWVcclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSByZXNwb25zZUNvZGUgcmVzcG9uc2UgQ29kZVxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHJlc3BvbnNlTWVzc2FnZSByZXNwb25zZSBNZXNzYWdlXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHNlcnZlckVycm9yTmFtZSB0aGUgc2VydmVyIGVycm9yIG5hbWUgaW4gY2FzZSBvZiBhIHNlcnZlciBlcnJvclxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHNlcnZlckVycm9yTWVzc2FnZSB0aGUgc2VydmVyIGVycm9yIG1lc3NhZ2UgaW4gY2FzZSBvZiBhIHNlcnZlciBlcnJvclxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IGNhbGxlciBvcHRpb25hbCBjYWxsZXIgcmVmZXJlbmNlIGZvciBleHRlbmRlZCBlcnJvciBtZXNzYWdlc1xyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IGNhbGxGdW5jIG9wdGlvbmFsIGNhbGxlciBGdW5jdGlvbiByZWZlcmVuY2UgZm9yIGV4dGVuZGVkIGVycm9yIG1lc3NhZ2VzXHJcbiAgICAgKlxyXG4gICAgICogIGhhbmRsZXMgdGhlIGVycm9ycywgaW4gY2FzZSBvZiBhbiBvbkVycm9yIGV4aXN0cyB3aXRoaW4gdGhlIGNvbnRleHQgdGhlIG9uRXJyb3IgaXMgY2FsbGVkIGFzIGxvY2FsIGVycm9yIGhhbmRsZXJcclxuICAgICAqICB0aGUgcmVnaXN0ZXJlZCBlcnJvciBoYW5kbGVycyBpbiB0aGUgcXVldWUgcmVjZWl2IGFuIGVycm9yIG1lc3NhZ2UgdG8gYmUgZGVhbHQgd2l0aFxyXG4gICAgICogIGFuZCBpZiB0aGUgcHJvamVjdFN0YWdlIGlzIGF0IGRldmVsb3BtZW50IGFuIGFsZXJ0IGJveCBpcyBkaXNwbGF5ZWRcclxuICAgICAqXHJcbiAgICAgKiAgbm90ZTogd2UgaGF2ZSBhZGRpdGlvbmFsIGZ1bmN0aW9uYWxpdHkgaGVyZSwgdmlhIHRoZSBnbG9iYWwgY29uZmlnIG15ZmFjZXMuY29uZmlnLmRlZmF1bHRFcnJvck91dHB1dCBhIGZ1bmN0aW9uIGNhbiBiZSBwcm92aWRlZFxyXG4gICAgICogIHdoaWNoIGNoYW5nZXMgdGhlIGRlZmF1bHQgb3V0cHV0IGJlaGF2aW9yIGZyb20gYWxlcnQgdG8gc29tZXRoaW5nIGVsc2VcclxuICAgICAqXHJcbiAgICAgKlxyXG4gICAgICovXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gc2VuZEVycm9yKGVycm9yRGF0YTogYW55LCBsb2NhbEhhbmRsZXIgPSBmdW5jdGlvbihkYXRhOiBhbnkpIHt9KSB7XHJcblxyXG4gICAgICAgIGxvY2FsSGFuZGxlcihlcnJvckRhdGEpO1xyXG4gICAgICAgIGVycm9yUXVldWUuZm9yRWFjaCgoZXJyb3JDYWxsYmFjazogRnVuY3Rpb24pID0+IHtcclxuICAgICAgICAgICAgZXJyb3JDYWxsYmFjayhlcnJvckRhdGEpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGxldCBkaXNwbGF5RXJyb3I6IChzdHJpbmcpID0+IHZvaWQgPSBnZXRHbG9iYWxDb25maWcoXCJkZWZhdWx0RXJyb3JPdXRwdXRcIiwgKGNvbnNvbGUgPyBjb25zb2xlLmVycm9yIDogYWxlcnQpKTtcclxuICAgICAgICBkaXNwbGF5RXJyb3IoZXJyb3JEYXRhKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEByZXR1cm4gdGhlIGNsaWVudCB3aW5kb3cgaWQgb2YgdGhlIGN1cnJlbnQgd2luZG93LCBpZiBvbmUgaXMgZ2l2ZW5cclxuICAgICAqL1xyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGdldENsaWVudFdpbmRvdyhub2RlID86IEVsZW1lbnQgfCBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IEFMVEVSRUQgPSBcIl9fX21mX2lkX2FsdGVyZWRfX1wiO1xyXG4gICAgICAgIGNvbnN0IElOSVQgPSBcIl9fX2luaXRfX19fXCI7XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIHRoZSBzZWFyY2ggcm9vdCBmb3IgdGhlIGRvbSBlbGVtZW50IHNlYXJjaFxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIGxldCBzZWFyY2hSb290ID0gbmV3IERRKG5vZGUgfHwgZG9jdW1lbnQuYm9keSk7XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIGEgc2V0IG9mIGlucHV0IGVsZW1lbnRzIGhvbGRpbmcgdGhlIHdpbmRvdyBpZCBvdmVyIHRoZSBlbnRpcmUgZG9jdW1lbnRcclxuICAgICAgICAgKi9cclxuICAgICAgICBsZXQgd2luZG93SWRIb2xkZXJzID0gc2VhcmNoUm9vdC5xdWVyeVNlbGVjdG9yQWxsKGBmb3JtICMke1BfV0lOX0lEfWApO1xyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBsYXp5IGhlbHBlciB0byBmZXRjaCB0aGUgd2luZG93IGlkIGZyb20gdGhlIHdpbmRvdyB1cmxcclxuICAgICAgICAgKi9cclxuICAgICAgICBsZXQgZmV0Y2hXaW5kb3dJZEZyb21VcmwgPSAoKSA9PiBFeHREb21xdWVyeS5zZWFyY2hKc2ZKc0ZvcigvamZ3aWQ9KFteJjtdKikvKS5vckVsc2UobnVsbCkudmFsdWU7XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIGZ1bmN0aW9uYWwgZG91YmxlIGNoZWNrIGJhc2VkIG9uIHN0cmVhbSByZWR1Y3Rpb25cclxuICAgICAgICAgKiB0aGUgdmFsdWVzIHNob3VsZCBiZSBpZGVudGljYWwgb3Igb24gSU5JVCB2YWx1ZSB3aGljaCBpcyBhIHByZW1pc2UgdG9cclxuICAgICAgICAgKiBza2lwIHRoZSBmaXJzdCBjaGVja1xyXG4gICAgICAgICAqXHJcbiAgICAgICAgICogQHBhcmFtIHZhbHVlMVxyXG4gICAgICAgICAqIEBwYXJhbSB2YWx1ZTJcclxuICAgICAgICAgKi9cclxuICAgICAgICBsZXQgZG91YmxlQ2hlY2sgPSAodmFsdWUxOiBzdHJpbmcsIHZhbHVlMjogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh2YWx1ZTEgPT0gQUxURVJFRCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlMTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZTEgPT0gSU5JVCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlMjtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZTEgIT0gdmFsdWUyKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gQUxURVJFRDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWUyO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIGhlbHBlciBmb3IgY2xlYW5lciBjb2RlLCBtYXBzIHRoZSB2YWx1ZSBmcm9tIGFuIGl0ZW1cclxuICAgICAgICAgKlxyXG4gICAgICAgICAqIEBwYXJhbSBpdGVtXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgbGV0IGdldFZhbHVlID0gKGl0ZW06IERRKSA9PiBpdGVtLmF0dHIoXCJ2YWx1ZVwiKS52YWx1ZTtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBmZXRjaCB0aGUgd2luZG93IGlkIGZyb20gdGhlIGZvcm1zXHJcbiAgICAgICAgICogd2luZG93IGlkcyBtdXN0IGJlIHByZXNlbnQgaW4gYWxsIGZvcm1zXHJcbiAgICAgICAgICogb3Igbm9uIGV4aXN0ZW50LiBJZiB0aGV5IGV4aXN0IGFsbCBvZiB0aGVtIG11c3QgYmUgdGhlIHNhbWVcclxuICAgICAgICAgKi9cclxuICAgICAgICBsZXQgZm9ybVdpbmRvd0lkOiBPcHRpb25hbDxzdHJpbmc+ID0gc2VhcmNoUm9vdC5zdHJlYW0ubWFwPHN0cmluZz4oZ2V0VmFsdWUpLnJlZHVjZShkb3VibGVDaGVjaywgSU5JVCk7XHJcblxyXG4gICAgICAgIC8vaWYgdGhlIHJlc3VsdGluZyB3aW5kb3cgaWQgaXMgc2V0IG9uIGFsdGVyZWQgdGhlbiB3ZSBoYXZlIGFuIHVucmVzb2x2YWJsZSBwcm9ibGVtXHJcbiAgICAgICAgYXNzZXJ0KGZvcm1XaW5kb3dJZC52YWx1ZSAhPSBBTFRFUkVELCBcIk11bHRpcGxlIGRpZmZlcmVudCB3aW5kb3dJZHMgZm91bmQgaW4gZG9jdW1lbnRcIik7XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIHJldHVybiB0aGUgd2luZG93IGlkIG9yIG51bGxcclxuICAgICAgICAgKiBwcmlvLCBmb3JtcyB1bmRlciBub2RlL2RvY3VtZW50IGFuZCBpZiBub3QgZ2l2ZW4gdGhlbiBmcm9tIHRoZSB1cmxcclxuICAgICAgICAgKi9cclxuICAgICAgICByZXR1cm4gZm9ybVdpbmRvd0lkLnZhbHVlID8/IGZldGNoV2luZG93SWRGcm9tVXJsKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBjb2xsZWN0IGFuZCBlbmNvZGUgZGF0YSBmb3IgYSBnaXZlbiBmb3JtIGVsZW1lbnQgKG11c3QgYmUgb2YgdHlwZSBmb3JtKVxyXG4gICAgICogZmluZCB0aGUgamF2YXguZmFjZXMuVmlld1N0YXRlIGVsZW1lbnQgYW5kIGVuY29kZSBpdHMgdmFsdWUgYXMgd2VsbCFcclxuICAgICAqIHJldHVybiBhIGNvbmNhdGVuYXRlZCBzdHJpbmcgb2YgdGhlIGVuY29kZWQgdmFsdWVzIVxyXG4gICAgICpcclxuICAgICAqIEB0aHJvd3MgRXJyb3IgaW4gY2FzZSBvZiB0aGUgZ2l2ZW4gZWxlbWVudCBub3QgYmVpbmcgb2YgdHlwZSBmb3JtIVxyXG4gICAgICogaHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9NWUZBQ0VTLTIxMTBcclxuICAgICAqL1xyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGdldFZpZXdTdGF0ZShmb3JtOiBFbGVtZW50IHwgc3RyaW5nKSB7XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogIHR5cGVjaGVjayBhc3NlcnQhLCB3ZSBvcHQgZm9yIHN0cm9uZyB0eXBpbmcgaGVyZVxyXG4gICAgICAgICAqICBiZWNhdXNlIGl0IG1ha2VzIGl0IGVhc2llciB0byBkZXRlY3QgYnVnc1xyXG4gICAgICAgICAqL1xyXG5cclxuICAgICAgICBsZXQgZWxlbWVudDogRFEgPSBEUS5ieUlkKGZvcm0pO1xyXG4gICAgICAgIGlmICghZWxlbWVudC5pc1RhZyhcImZvcm1cIikpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGdldE1lc3NhZ2UoXCJFUlJfVklFV1NUQVRFXCIpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBmb3JtRGF0YSA9IG5ldyBYaHJGb3JtRGF0YShlbGVtZW50KTtcclxuICAgICAgICByZXR1cm4gZm9ybURhdGEudG9TdHJpbmcoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG4gICAgZnVuY3Rpb24gYXBwbHlXaW5kb3dJZChvcHRpb25zOiBDb25maWcpIHtcclxuICAgICAgICBsZXQgd2luZG93SWQgPSBvcHRpb25zPy52YWx1ZT8ud2luZG93SWQgPz8gRXh0RG9tcXVlcnkud2luZG93SWQ7XHJcbiAgICAgICAgb3B0aW9ucy5hc3NpZ25JZighIXdpbmRvd0lkLCBQX1dJTkRPV19JRCkudmFsdWUgPSB3aW5kb3dJZDtcclxuICAgICAgICBvcHRpb25zLmRlbGV0ZShcIndpbmRvd0lkXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIGFwcGx5UmVuZGVyKG9wdGlvbnM6IENvbmZpZywgY3R4OiBDb25maWcsIGZvcm06IERRLCBlbGVtZW50SWQ6IHN0cmluZykge1xyXG4gICAgICAgIGlmIChvcHRpb25zLmdldElmKFwicmVuZGVyXCIpLmlzUHJlc2VudCgpKSB7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybVZhbHVlcyhjdHguZ2V0SWYoQ1RYX1BBUkFNX1BBU1NfVEhSKS5nZXQoe30pLCBQX1JFTkRFUiwgPHN0cmluZz5vcHRpb25zLmdldElmKFwicmVuZGVyXCIpLnZhbHVlLCBmb3JtLCA8YW55PmVsZW1lbnRJZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIGFwcGx5RXhlY3V0ZShvcHRpb25zOiBDb25maWcsIGN0eDogQ29uZmlnLCBmb3JtOiBEUSwgZWxlbWVudElkOiBzdHJpbmcpIHtcclxuICAgICAgICBjb25zdCBQQVJBTV9FWEVDVVRFID0gQ1RYX1BBUkFNX0VYRUNVVEU7XHJcbiAgICAgICAgY29uc3QgUEFSQU1fUEFTU19USFIgPSBDVFhfUEFSQU1fUEFTU19USFI7XHJcblxyXG4gICAgICAgIGlmIChvcHRpb25zLmdldElmKFBBUkFNX0VYRUNVVEUpLmlzUHJlc2VudCgpKSB7XHJcbiAgICAgICAgICAgIC8qdGhlIG9wdGlvbnMgbXVzdCBiZSBhIGJsYW5rIGRlbGltaXRlZCBsaXN0IG9mIHN0cmluZ3MqL1xyXG4gICAgICAgICAgICAvKmNvbXBsaWFuY2Ugd2l0aCBNb2phcnJhIHdoaWNoIGF1dG9tYXRpY2FsbHkgYWRkcyBAdGhpcyB0byBhbiBleGVjdXRlXHJcbiAgICAgICAgICAgICAqIHRoZSBzcGVjIHJldiAyLjBhIGhvd2V2ZXIgc3RhdGVzLCBpZiBub25lIGlzIGlzc3VlZCBub3RoaW5nIGF0IGFsbCBzaG91bGQgYmUgc2VudCBkb3duXHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBvcHRpb25zLmFzc2lnbihQQVJBTV9FWEVDVVRFKS52YWx1ZSA9IG9wdGlvbnMuZ2V0SWYoUEFSQU1fRVhFQ1VURSkudmFsdWUgKyBcIiBAdGhpc1wiO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm1WYWx1ZXMoY3R4LmdldElmKFBBUkFNX1BBU1NfVEhSKS5nZXQoe30pLCBQX0VYRUNVVEUsIDxzdHJpbmc+b3B0aW9ucy5nZXRJZihQQVJBTV9FWEVDVVRFKS52YWx1ZSwgZm9ybSwgPGFueT5lbGVtZW50SWQpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGN0eC5hc3NpZ24oUEFSQU1fUEFTU19USFIsIFBfRVhFQ1VURSkudmFsdWUgPSBlbGVtZW50SWQ7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIGFwcGx5Q2xpZW50V2luZG93SWQoZm9ybTogRFEsIGN0eDogQ29uZmlnKSB7XHJcbiAgICAgICAgbGV0IGNsaWVudFdpbmRvdyA9IGpzZi5nZXRDbGllbnRXaW5kb3coZm9ybS5nZXRBc0VsZW0oMCkudmFsdWUpO1xyXG4gICAgICAgIGlmIChjbGllbnRXaW5kb3cpIHtcclxuICAgICAgICAgICAgY3R4LmFzc2lnbihDVFhfUEFSQU1fUEFTU19USFIsIFBfQ0xJRU5UV0lORE9XKS52YWx1ZSA9IGNsaWVudFdpbmRvdztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiB0cmFuc2Zvcm1zIHRoZSB1c2VyIHZhbHVlcyB0byB0aGUgZXhwZWN0ZWQgb25lXHJcbiAgICAgKiB3aXRoIHRoZSBwcm9wZXIgbm9uZSBhbGwgZm9ybSBhbmQgdGhpcyBoYW5kbGluZ1xyXG4gICAgICogKG5vdGUgd2UgYWxzbyBjb3VsZCB1c2UgYSBzaW1wbGUgc3RyaW5nIHJlcGxhY2UgYnV0IHRoZW5cclxuICAgICAqIHdlIHdvdWxkIGhhdmUgaGFkIGRvdWJsZSBlbnRyaWVzIHVuZGVyIHNvbWUgY2lyY3Vtc3RhbmNlcylcclxuICAgICAqXHJcbiAgICAgKiB0aGVyZSBhcmUgc2V2ZXJhbCBzdGFuZGFyZGl6ZWQgY29uc3RhbnRzIHdoaWNoIG5lZWQgYSBzcGVjaWFsIHRyZWF0bWVudFxyXG4gICAgICogbGlrZSBAYWxsLCBAbm9uZSwgQGZvcm0sIEB0aGlzXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHRhcmdldENvbmZpZyB0aGUgdGFyZ2V0IGNvbmZpZ3VyYXRpb24gcmVjZWl2aW5nIHRoZSBmaW5hbCB2YWx1ZXNcclxuICAgICAqIEBwYXJhbSB0YXJnZXRLZXkgdGhlIHRhcmdldCBrZXlcclxuICAgICAqIEBwYXJhbSB1c2VyVmFsdWVzIHRoZSBwYXNzZWQgdXNlciB2YWx1ZXMgKGFrYSBpbnB1dCBzdHJpbmcgd2hpY2ggbmVlZHMgdG8gYmUgdHJhbnNmb3JtZWQpXHJcbiAgICAgKiBAcGFyYW0gaXNzdWluZ0Zvcm0gdGhlIGZvcm0gd2hlcmUgdGhlIGlzc3VpbmcgZWxlbWVudCBvcmlnaW5hdGVzXHJcbiAgICAgKiBAcGFyYW0gaXNzdWluZ0VsZW1lbnRJZCB0aGUgaXNzdWluZyBlbGVtZW50XHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIHRyYW5zZm9ybVZhbHVlcyh0YXJnZXRDb25maWc6IENvbmZpZywgdGFyZ2V0S2V5OiBzdHJpbmcsIHVzZXJWYWx1ZXM6IHN0cmluZywgaXNzdWluZ0Zvcm06IERRLCBpc3N1aW5nRWxlbWVudElkOiBzdHJpbmcpOiBDb25maWcge1xyXG4gICAgICAgIC8vYSBjbGVhbmVyIGltcGxlbWVudGF0aW9uIG9mIHRoZSB0cmFuc2Zvcm0gbGlzdCBtZXRob2RcclxuXHJcbiAgICAgICAgbGV0IGl0ZXJWYWx1ZXMgPSAodXNlclZhbHVlcykgPyB0cmltKHVzZXJWYWx1ZXMpLnNwbGl0KC9cXHMrL2dpKSA6IFtdO1xyXG4gICAgICAgIGxldCByZXQgPSBbXTtcclxuXHJcbiAgICAgICAgbGV0IHByb2Nlc3NlZCA9IHt9O1xyXG5cclxuICAgICAgICAvL1RPRE8gbWFrZSB0aGlzIGNvZGUgY2xlYW5lclxyXG5cclxuICAgICAgICAvL3RoZSBpZGVhIGlzIHNpbXBseSB0byBsb29wIG92ZXIgYWxsIHZhbHVlcyBhbmQgdGhlbiByZXBsYWNlXHJcbiAgICAgICAgLy90aGVpciBnZW5lcmljIHZhbHVlcyBhbmQgZmlsdGVyIG91dCBkb3VibGVzXHJcbiAgICAgICAgLy90aGlzIGlzIG1vcmUgcmVhZGFibGUgdGhhbiB0aGUgb2xkIGluZGV4ZWQgYmFzZWQgc29sdXRpb25cclxuICAgICAgICAvL2FuZCBub3QgcmVhbGx5IHNsb3dlciBiZWNhdXNlIHdlIGhhZCB0byBidWlsZCB1cCB0aGUgaW5kZXggaW4gb3VyIG9sZCBzb2x1dGlvblxyXG4gICAgICAgIC8vYW55d2F5XHJcbiAgICAgICAgZm9yIChsZXQgY250ID0gMDsgY250IDwgaXRlclZhbHVlcy5sZW5ndGg7IGNudCsrKSB7XHJcbiAgICAgICAgICAgIC8vYXZvaWQgZG91Ymxlc1xyXG4gICAgICAgICAgICBpZiAoaXRlclZhbHVlc1tjbnRdIGluIHByb2Nlc3NlZCkge1xyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc3dpdGNoIChpdGVyVmFsdWVzW2NudF0pIHtcclxuICAgICAgICAgICAgICAgIC8vQG5vbmUgbm8gdmFsdWVzIHNob3VsZCBiZSBzZW50XHJcbiAgICAgICAgICAgICAgICBjYXNlIElERU5UX05PTkU6XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldENvbmZpZy5kZWxldGUodGFyZ2V0S2V5KTtcclxuICAgICAgICAgICAgICAgIC8vQGFsbCBpcyBhIHBhc3MgdGhyb3VnaCBjYXNlIGFjY29yZGluZyB0byB0aGUgc3BlY1xyXG4gICAgICAgICAgICAgICAgY2FzZSBJREVOVF9BTEw6XHJcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0Q29uZmlnLmFzc2lnbih0YXJnZXRLZXkpLnZhbHVlID0gSURFTlRfQUxMO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXRDb25maWc7XHJcbiAgICAgICAgICAgICAgICAvL0Bmb3JtIHB1c2hlcyB0aGUgaXNzdWluZyBmb3JtIGlkIGludG8gb3VyIGxpc3RcclxuICAgICAgICAgICAgICAgIGNhc2UgSURFTlRfRk9STTpcclxuICAgICAgICAgICAgICAgICAgICByZXQucHVzaChpc3N1aW5nRm9ybS5pZC52YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2VkW2lzc3VpbmdGb3JtLmlkLnZhbHVlXSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAvL0B0aGlzIGlzIHJlcGxhY2VkIHdpdGggdGhlIGN1cnJlbnQgaXNzdWluZyBlbGVtZW50IGlkXHJcbiAgICAgICAgICAgICAgICBjYXNlIElERU5UX1RISVM6XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEoaXNzdWluZ0VsZW1lbnRJZCBpbiBwcm9jZXNzZWQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldC5wdXNoKGlzc3VpbmdFbGVtZW50SWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZWRbaXNzdWluZ0VsZW1lbnRJZF0gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0LnB1c2goaXRlclZhbHVlc1tjbnRdKTtcclxuICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZWRbaXRlclZhbHVlc1tjbnRdXSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy9XZSBub3cgYWRkIHRoZSB0YXJnZXQgYXMgam9pbmVkIGxpc3RcclxuICAgICAgICB0YXJnZXRDb25maWcuYXNzaWduKHRhcmdldEtleSkudmFsdWUgPSByZXQuam9pbihcIiBcIik7XHJcbiAgICAgICAgcmV0dXJuIHRhcmdldENvbmZpZztcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBmZXRjaFBhc3N0aHJvdWdoVmFsdWVzKG1hcHBlZE9wdHM6IHsgW2tleTogc3RyaW5nXTogYW55IH0pIHtcclxuICAgICAgICByZXR1cm4gU3RyZWFtLm9mQXNzb2MobWFwcGVkT3B0cylcclxuICAgICAgICAgICAgLmZpbHRlcihpdGVtID0+ICEoaXRlbVswXSBpbiBCbG9ja0ZpbHRlcikpXHJcbiAgICAgICAgICAgIC5jb2xsZWN0KG5ldyBBc3NvY0FycmF5Q29sbGVjdG9yKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIHJlc29sdmVGb3JtKHJlcXVlc3RDdHg6IENvbmZpZywgZWxlbTogRFEsIGV2ZW50OiBFdmVudCk6IERRIHtcclxuICAgICAgICBjb25zdCBjb25maWdJZCA9IHJlcXVlc3RDdHgudmFsdWU/Lm15ZmFjZXM/LmZvcm0gPz8gTUZfTk9ORTsgLy9yZXF1ZXN0Q3R4LmdldElmKE1ZRkFDRVMsIFwiZm9ybVwiKS5vckVsc2UoTUZfTk9ORSkudmFsdWU7XHJcbiAgICAgICAgbGV0IGZvcm06IERRID0gRFFcclxuICAgICAgICAgICAgLmJ5SWQoY29uZmlnSWQpXHJcbiAgICAgICAgICAgIC5vckVsc2VMYXp5KCgpID0+IGdldEZvcm0oZWxlbS5nZXRBc0VsZW0oMCkudmFsdWUsIGV2ZW50KSk7XHJcbiAgICAgICAgcmV0dXJuIGZvcm1cclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiByZXNvbHZlVGltZW91dChvcHRpb25zOiBDb25maWcsIHJlcXVlc3RDdHg6IENvbmZpZyk6IG51bWJlciB7XHJcbiAgICAgICAgbGV0IGdldENmZyA9IGdldExvY2FsT3JHbG9iYWxDb25maWc7XHJcbiAgICAgICAgcmV0dXJuIG9wdGlvbnMuZ2V0SWYoQ1RYX1BBUkFNX1RJTUVPVVQpLnZhbHVlID8/IGdldENmZyhyZXF1ZXN0Q3R4LnZhbHVlLCBDVFhfUEFSQU1fVElNRU9VVCwgMCk7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gcmVzb2x2ZURlbGF5KG9wdGlvbnM6IENvbmZpZywgcmVxdWVzdEN0eDogQ29uZmlnKTogbnVtYmVyIHtcclxuICAgICAgICBsZXQgZ2V0Q2ZnID0gZ2V0TG9jYWxPckdsb2JhbENvbmZpZztcclxuXHJcbiAgICAgICAgcmV0dXJuIG9wdGlvbnMuZ2V0SWYoQ1RYX1BBUkFNX0RFTEFZKS52YWx1ZSA/PyBnZXRDZmcocmVxdWVzdEN0eC52YWx1ZSwgQ1RYX1BBUkFNX0RFTEFZLCAwKTtcclxuICAgIH1cclxuXHJcbn1cclxuIl0sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7O0FBY0E7O0FBRUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUlBOztBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7O0FBR0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7Ozs7Ozs7QUFPQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7OztBQUlBO0FBQ0E7O0FBQ0E7QUFHQTtBQUpBO0FBTUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUkE7QUFVQTs7OztBQUlBO0FBQ0E7O0FBQ0E7QUFHQTtBQUpBO0FBTUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUxBO0FBT0E7QUFBQTtBQUFBO0FBQUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBbkJBO0FBcUJBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFrQkE7QUFDQTs7QUFFQTs7OztBQUlBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBRUE7QUFFQTtBQUVBOzs7QUFHQTtBQUNBO0FBRUE7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7Ozs7OztBQU1BO0FBQ0E7QUFDQTtBQUVBOztBQUVBO0FBQ0E7QUFFQTs7QUFFQTtBQUNBO0FBRUE7O0FBRUE7QUFDQTtBQUVBOzs7Ozs7QUFNQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQXRHQTtBQXdHQTs7Ozs7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTs7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBTUE7O0FBQ0E7QUFDQTtBQUZBO0FBSUE7Ozs7Ozs7Ozs7O0FBV0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFsQkE7QUFvQkE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBdUJBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUkE7QUFVQTs7QUFFQTtBQUNBOztBQUNBO0FBQ0E7QUFFQTs7QUFFQTtBQUNBO0FBRUE7O0FBRUE7QUFDQTtBQUVBOztBQUVBO0FBQ0E7QUFFQTs7Ozs7OztBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7Ozs7QUFJQTtBQUNBO0FBQ0E7Ozs7QUFJQTtBQUNBO0FBRUE7QUFDQTtBQUVBOzs7QUFHQTtBQUNBO0FBQ0E7QUEzREE7QUE2REE7Ozs7Ozs7QUFPQTtBQUNBO0FBQ0E7OztBQUdBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFiQTtBQWVBO0FBRUE7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7Ozs7Ozs7Ozs7Ozs7QUFjQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7QUFDQTtBQUVBO0FBQ0E7QUFFQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/main/typescript/impl/AjaxImpl.ts\n");
/***/ }),
/***/ "./src/main/typescript/impl/PushImpl.ts":
/*!**********************************************!*\
!*** ./src/main/typescript/impl/PushImpl.ts ***!
\**********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\r\n/**\r\n * Typescript port of the jsf.push part in the myfaces implementation\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n//TODO still work in progress\r\n//this is a 1:1 port for the time being\r\nvar Jsf_1 = __webpack_require__(/*! ../api/Jsf */ \"./src/main/typescript/api/Jsf.ts\");\r\nvar Const_1 = __webpack_require__(/*! ./core/Const */ \"./src/main/typescript/impl/core/Const.ts\");\r\n/**\r\n * Implementation class for the push functionality\r\n */\r\nvar PushImpl;\r\n(function (PushImpl) {\r\n var REASON_EXPIRED = Const_1.Const.REASON_EXPIRED;\r\n var MAX_RECONNECT_ATTEMPTS = Const_1.Const.MAX_RECONNECT_ATTEMPTS;\r\n var RECONNECT_INTERVAL = Const_1.Const.RECONNECT_INTERVAL;\r\n var URL_PROTOCOL = window.location.protocol.replace(\"http\", \"ws\") + \"//\";\r\n //we expose the member variables for testing purposes\r\n //they are not directly touched outside of tests\r\n /* socket map by token */\r\n PushImpl.sockets = {};\r\n /* component attributes by clientId */\r\n PushImpl.components = {};\r\n /* client ids by token (share websocket connection) */\r\n PushImpl.clientIdsByTokens = {};\r\n //needed for testing\r\n function reset() {\r\n PushImpl.sockets = {};\r\n PushImpl.components = {};\r\n PushImpl.clientIdsByTokens = {};\r\n }\r\n PushImpl.reset = reset;\r\n /*\r\n * Api implementations, exposed functions\r\n */\r\n /**\r\n *\r\n * @param {function} onopen The function to be invoked when the web socket is opened.\r\n * @param {function} onmessage The function to be invoked when a message is received.\r\n * @param {function} onclose The function to be invoked when the web socket is closed.\r\n * @param {boolean} autoconnect Whether or not to immediately open the socket. Defaults to <code>false</code>.\r\n */\r\n function init(socketClientId, uri, channel, onopen, onmessage, onclose, behaviorScripts, autoconnect) {\r\n onclose = resolveFunction(onclose);\r\n if (!window.WebSocket) { // IE6-9.\r\n onclose(-1, channel);\r\n return;\r\n }\r\n var channelToken = uri.substr(uri.indexOf('?') + 1);\r\n if (!PushImpl.components[socketClientId]) {\r\n PushImpl.components[socketClientId] = {\r\n 'channelToken': channelToken,\r\n 'onopen': resolveFunction(onopen),\r\n 'onmessage': resolveFunction(onmessage),\r\n 'onclose': onclose,\r\n 'behaviors': behaviorScripts,\r\n 'autoconnect': autoconnect\r\n };\r\n if (!PushImpl.clientIdsByTokens[channelToken]) {\r\n PushImpl.clientIdsByTokens[channelToken] = [];\r\n }\r\n PushImpl.clientIdsByTokens[channelToken].push(socketClientId);\r\n if (!PushImpl.sockets[channelToken]) {\r\n PushImpl.sockets[channelToken] = new Socket(channelToken, getBaseURL(uri), channel);\r\n }\r\n }\r\n if (autoconnect) {\r\n Jsf_1.jsf.push.open(socketClientId);\r\n }\r\n }\r\n PushImpl.init = init;\r\n function open(socketClientId) {\r\n var _a, _b;\r\n getSocket((_b = (_a = PushImpl.components) === null || _a === void 0 ? void 0 : _a[socketClientId]) === null || _b === void 0 ? void 0 : _b.channelToken).open();\r\n }\r\n PushImpl.open = open;\r\n function close(socketClientId) {\r\n var _a;\r\n getSocket((_a = PushImpl.components) === null || _a === void 0 ? void 0 : _a[socketClientId].channelToken).close();\r\n }\r\n PushImpl.close = close;\r\n // Private helper classes\r\n // Private classes functions ----------------------------------------------------------------------------------\r\n /**\r\n * Creates a reconnecting web socket. When the web socket successfully connects on first attempt, then it will\r\n * automatically reconnect on timeout with cumulative intervals of 500ms with a maximum of 25 attempts (~3 minutes).\r\n * The <code>onclose</code> function will be called with the error code of the last attempt.\r\n * @constructor\r\n * @param {string} channelToken the channel token associated with this websocket connection\r\n * @param {string} url The URL of the web socket\r\n * @param {string} channel The name of the web socket channel.\r\n */\r\n var Socket = /** @class */ (function () {\r\n function Socket(channelToken, url, channel) {\r\n this.channelToken = channelToken;\r\n this.url = url;\r\n this.channel = channel;\r\n this.reconnectAttempts = 0;\r\n }\r\n Socket.prototype.open = function () {\r\n if (this.socket && this.socket.readyState == 1) {\r\n return;\r\n }\r\n this.socket = new WebSocket(this.url);\r\n this.bindCallbacks();\r\n };\r\n Socket.prototype.onopen = function (event) {\r\n if (!this.reconnectAttempts) {\r\n var clientIds = PushImpl.clientIdsByTokens[this.channelToken];\r\n for (var i = clientIds.length - 1; i >= 0; i--) {\r\n var socketClientId = clientIds[i];\r\n PushImpl.components[socketClientId]['onopen'](this.channel);\r\n }\r\n }\r\n this.reconnectAttempts = 0;\r\n };\r\n Socket.prototype.onmmessage = function (event) {\r\n var message = JSON.parse(event.data);\r\n for (var i = PushImpl.clientIdsByTokens[this.channelToken].length - 1; i >= 0; i--) {\r\n var socketClientId = PushImpl.clientIdsByTokens[this.channelToken][i];\r\n if (document.getElementById(socketClientId)) {\r\n try {\r\n PushImpl.components[socketClientId]['onmessage'](message, this.channel, event);\r\n }\r\n catch (e) {\r\n //Ignore\r\n }\r\n var behaviors = PushImpl.components[socketClientId]['behaviors'];\r\n var functions = behaviors[message];\r\n if (functions && functions.length) {\r\n for (var j = 0; j < functions.length; j++) {\r\n try {\r\n functions[j](null);\r\n }\r\n catch (e) {\r\n //Ignore\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n PushImpl.clientIdsByTokens[this.channelToken].splice(i, 1);\r\n }\r\n }\r\n if (PushImpl.clientIdsByTokens[this.channelToken].length == 0) {\r\n //tag dissapeared\r\n this.close();\r\n }\r\n };\r\n Socket.prototype.onclose = function (event) {\r\n var _a, _b;\r\n if (!this.socket\r\n || (event.code == 1000 && event.reason == REASON_EXPIRED)\r\n || (event.code == 1008)\r\n || (!this.reconnectAttempts)\r\n || (this.reconnectAttempts >= MAX_RECONNECT_ATTEMPTS)) {\r\n var clientIds = PushImpl.clientIdsByTokens[this.channelToken];\r\n for (var i = clientIds.length - 1; i >= 0; i--) {\r\n var socketClientId = clientIds[i];\r\n PushImpl.components[socketClientId]['onclose']((_a = event) === null || _a === void 0 ? void 0 : _a.code, (_b = this) === null || _b === void 0 ? void 0 : _b.channel, event);\r\n }\r\n }\r\n else {\r\n setTimeout(this.open, RECONNECT_INTERVAL * this.reconnectAttempts++);\r\n }\r\n };\r\n ;\r\n Socket.prototype.close = function () {\r\n if (this.socket) {\r\n var s = this.socket;\r\n this.socket = null;\r\n s.close();\r\n }\r\n };\r\n /**\r\n * bind the callbacks to the socket callbacks\r\n */\r\n Socket.prototype.bindCallbacks = function () {\r\n var _this = this;\r\n this.socket.onopen = function (event) { return _this.onopen(event); };\r\n this.socket.onmessage = function (event) { return _this.onmmessage(event); };\r\n this.socket.onclose = function (event) { return _this.onclose(event); };\r\n };\r\n return Socket;\r\n }());\r\n // Private static functions ---------------------------------------------------------------------------------------\r\n function getBaseURL(url) {\r\n if (url.indexOf(\"://\") < 0) {\r\n var base = window.location.hostname + \":\" + window.location.port;\r\n return URL_PROTOCOL + base + url;\r\n }\r\n else {\r\n return url;\r\n }\r\n }\r\n /**\r\n * Get socket associated with given channelToken.\r\n * @param {string} channelToken The name of the web socket channelToken.\r\n * @return {Socket} Socket associated with given channelToken.\r\n * @throws {Error} When channelToken is unknown, you may need to initialize\r\n * it first via <code>init()</code> function.\r\n */\r\n function getSocket(channelToken) {\r\n var socket = PushImpl.sockets[channelToken];\r\n if (socket) {\r\n return socket;\r\n }\r\n else {\r\n throw new Error(\"Unknown channelToken: \" + channelToken);\r\n }\r\n }\r\n function resolveFunction(fn) {\r\n if (fn === void 0) { fn = function () {\r\n }; }\r\n return ((typeof fn !== \"function\") && (fn = window[fn]), fn);\r\n }\r\n})(PushImpl = exports.PushImpl || (exports.PushImpl = {}));\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbWFpbi90eXBlc2NyaXB0L2ltcGwvUHVzaEltcGwudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbWFpbi90eXBlc2NyaXB0L2ltcGwvUHVzaEltcGwudHM/OTE2NiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogVHlwZXNjcmlwdCBwb3J0IG9mIHRoZSBqc2YucHVzaCBwYXJ0IGluIHRoZSBteWZhY2VzIGltcGxlbWVudGF0aW9uXHJcbiAqL1xyXG5cclxuLy9UT0RPIHN0aWxsIHdvcmsgaW4gcHJvZ3Jlc3NcclxuLy90aGlzIGlzIGEgMToxIHBvcnQgZm9yIHRoZSB0aW1lIGJlaW5nXHJcbmltcG9ydCB7anNmfSBmcm9tIFwiLi4vYXBpL0pzZlwiO1xyXG5pbXBvcnQge0NvbnN0fSBmcm9tIFwiLi9jb3JlL0NvbnN0XCI7XHJcblxyXG5cclxuLyoqXHJcbiAqIEltcGxlbWVudGF0aW9uIGNsYXNzIGZvciB0aGUgcHVzaCBmdW5jdGlvbmFsaXR5XHJcbiAqL1xyXG5leHBvcnQgbW9kdWxlIFB1c2hJbXBsIHtcclxuXHJcbiAgICBpbXBvcnQgUkVBU09OX0VYUElSRUQgPSBDb25zdC5SRUFTT05fRVhQSVJFRDtcclxuICAgIGltcG9ydCBNQVhfUkVDT05ORUNUX0FUVEVNUFRTID0gQ29uc3QuTUFYX1JFQ09OTkVDVF9BVFRFTVBUUztcclxuICAgIGltcG9ydCBSRUNPTk5FQ1RfSU5URVJWQUwgPSBDb25zdC5SRUNPTk5FQ1RfSU5URVJWQUw7XHJcblxyXG4gICAgY29uc3QgVVJMX1BST1RPQ09MID0gd2luZG93LmxvY2F0aW9uLnByb3RvY29sLnJlcGxhY2UoXCJodHRwXCIsIFwid3NcIikgKyBcIi8vXCI7XHJcblxyXG5cclxuICAgIC8vd2UgZXhwb3NlIHRoZSBtZW1iZXIgdmFyaWFibGVzIGZvciB0ZXN0aW5nIHB1cnBvc2VzXHJcbiAgICAvL3RoZXkgYXJlIG5vdCBkaXJlY3RseSB0b3VjaGVkIG91dHNpZGUgb2YgdGVzdHNcclxuXHJcbiAgICAvKiBzb2NrZXQgbWFwIGJ5IHRva2VuICovXHJcbiAgICBleHBvcnQgbGV0IHNvY2tldHMgPSB7fTtcclxuICAgIC8qIGNvbXBvbmVudCBhdHRyaWJ1dGVzIGJ5IGNsaWVudElkICovXHJcbiAgICBleHBvcnQgbGV0IGNvbXBvbmVudHMgPSB7fTtcclxuICAgIC8qIGNsaWVudCBpZHMgYnkgdG9rZW4gKHNoYXJlIHdlYnNvY2tldCBjb25uZWN0aW9uKSAqL1xyXG4gICAgZXhwb3J0IGxldCBjbGllbnRJZHNCeVRva2VucyA9IHt9O1xyXG5cclxuXHJcbiAgICAvL25lZWRlZCBmb3IgdGVzdGluZ1xyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHJlc2V0KCkge1xyXG4gICAgICAgIHNvY2tldHMgPSB7fTtcclxuICAgICAgICBjb21wb25lbnRzID0ge31cclxuICAgICAgICBjbGllbnRJZHNCeVRva2VucyA9IHt9XHJcbiAgICB9XHJcblxyXG4gICAgLypcclxuICAgICAqIEFwaSBpbXBsZW1lbnRhdGlvbnMsIGV4cG9zZWQgZnVuY3Rpb25zXHJcbiAgICAgKi9cclxuXHJcbiAgICAvKipcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvbm9wZW4gVGhlIGZ1bmN0aW9uIHRvIGJlIGludm9rZWQgd2hlbiB0aGUgd2ViIHNvY2tldCBpcyBvcGVuZWQuXHJcbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvbm1lc3NhZ2UgVGhlIGZ1bmN0aW9uIHRvIGJlIGludm9rZWQgd2hlbiBhIG1lc3NhZ2UgaXMgcmVjZWl2ZWQuXHJcbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvbmNsb3NlIFRoZSBmdW5jdGlvbiB0byBiZSBpbnZva2VkIHdoZW4gdGhlIHdlYiBzb2NrZXQgaXMgY2xvc2VkLlxyXG4gICAgICogQHBhcmFtIHtib29sZWFufSBhdXRvY29ubmVjdCBXaGV0aGVyIG9yIG5vdCB0byBpbW1lZGlhdGVseSBvcGVuIHRoZSBzb2NrZXQuIERlZmF1bHRzIHRvIDxjb2RlPmZhbHNlPC9jb2RlPi5cclxuICAgICAqL1xyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGluaXQoc29ja2V0Q2xpZW50SWQ6IHN0cmluZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgIHVyaTogc3RyaW5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgY2hhbm5lbDogc3RyaW5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgb25vcGVuOiBGdW5jdGlvbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgIG9ubWVzc2FnZTogRnVuY3Rpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBvbmNsb3NlOiBGdW5jdGlvbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGJlaGF2aW9yU2NyaXB0czogYW55LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2Nvbm5lY3Q6IGJvb2xlYW4pIHtcclxuICAgICAgICBvbmNsb3NlID0gcmVzb2x2ZUZ1bmN0aW9uKG9uY2xvc2UpO1xyXG5cclxuICAgICAgICBpZiAoIXdpbmRvdy5XZWJTb2NrZXQpIHsgLy8gSUU2LTkuXHJcbiAgICAgICAgICAgIG9uY2xvc2UoLTEsIGNoYW5uZWwpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgY2hhbm5lbFRva2VuID0gdXJpLnN1YnN0cih1cmkuaW5kZXhPZignPycpICsgMSk7XHJcblxyXG4gICAgICAgIGlmICghY29tcG9uZW50c1tzb2NrZXRDbGllbnRJZF0pIHtcclxuICAgICAgICAgICAgY29tcG9uZW50c1tzb2NrZXRDbGllbnRJZF0gPSB7XHJcbiAgICAgICAgICAgICAgICAnY2hhbm5lbFRva2VuJzogY2hhbm5lbFRva2VuLFxyXG4gICAgICAgICAgICAgICAgJ29ub3Blbic6IHJlc29sdmVGdW5jdGlvbihvbm9wZW4pLFxyXG4gICAgICAgICAgICAgICAgJ29ubWVzc2FnZScgOiByZXNvbHZlRnVuY3Rpb24ob25tZXNzYWdlKSxcclxuICAgICAgICAgICAgICAgICdvbmNsb3NlJzogb25jbG9zZSxcclxuICAgICAgICAgICAgICAgICdiZWhhdmlvcnMnOiBiZWhhdmlvclNjcmlwdHMsXHJcbiAgICAgICAgICAgICAgICAnYXV0b2Nvbm5lY3QnOiBhdXRvY29ubmVjdH07XHJcbiAgICAgICAgICAgIGlmICghY2xpZW50SWRzQnlUb2tlbnNbY2hhbm5lbFRva2VuXSkge1xyXG4gICAgICAgICAgICAgICAgY2xpZW50SWRzQnlUb2tlbnNbY2hhbm5lbFRva2VuXSA9IFtdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNsaWVudElkc0J5VG9rZW5zW2NoYW5uZWxUb2tlbl0ucHVzaChzb2NrZXRDbGllbnRJZCk7XHJcbiAgICAgICAgICAgIGlmICghc29ja2V0c1tjaGFubmVsVG9rZW5dKXtcclxuICAgICAgICAgICAgICAgIHNvY2tldHNbY2hhbm5lbFRva2VuXSA9IG5ldyBTb2NrZXQoY2hhbm5lbFRva2VuLFxyXG4gICAgICAgICAgICAgICAgICAgIGdldEJhc2VVUkwodXJpKSwgY2hhbm5lbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChhdXRvY29ubmVjdCkge1xyXG4gICAgICAgICAgICBqc2YucHVzaC5vcGVuKHNvY2tldENsaWVudElkKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIG9wZW4oc29ja2V0Q2xpZW50SWQ6IHN0cmluZykge1xyXG4gICAgICAgIGdldFNvY2tldChjb21wb25lbnRzPy5bc29ja2V0Q2xpZW50SWRdPy5jaGFubmVsVG9rZW4pLm9wZW4oKTtcclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gY2xvc2Uoc29ja2V0Q2xpZW50SWQ6IHN0cmluZykge1xyXG4gICAgICAgIGdldFNvY2tldChjb21wb25lbnRzPy5bc29ja2V0Q2xpZW50SWRdLmNoYW5uZWxUb2tlbikuY2xvc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBQcml2YXRlIGhlbHBlciBjbGFzc2VzXHJcbiAgICAvLyBQcml2YXRlIGNsYXNzZXMgZnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhIHJlY29ubmVjdGluZyB3ZWIgc29ja2V0LiBXaGVuIHRoZSB3ZWIgc29ja2V0IHN1Y2Nlc3NmdWxseSBjb25uZWN0cyBvbiBmaXJzdCBhdHRlbXB0LCB0aGVuIGl0IHdpbGxcclxuICAgICAqIGF1dG9tYXRpY2FsbHkgcmVjb25uZWN0IG9uIHRpbWVvdXQgd2l0aCBjdW11bGF0aXZlIGludGVydmFscyBvZiA1MDBtcyB3aXRoIGEgbWF4aW11bSBvZiAyNSBhdHRlbXB0cyAofjMgbWludXRlcykuXHJcbiAgICAgKiBUaGUgPGNvZGU+b25jbG9zZTwvY29kZT4gZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUgZXJyb3IgY29kZSBvZiB0aGUgbGFzdCBhdHRlbXB0LlxyXG4gICAgICogQGNvbnN0cnVjdG9yXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gY2hhbm5lbFRva2VuIHRoZSBjaGFubmVsIHRva2VuIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHdlYnNvY2tldCBjb25uZWN0aW9uXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsIFRoZSBVUkwgb2YgdGhlIHdlYiBzb2NrZXRcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjaGFubmVsIFRoZSBuYW1lIG9mIHRoZSB3ZWIgc29ja2V0IGNoYW5uZWwuXHJcbiAgICAgKi9cclxuXHJcbiAgICBjbGFzcyBTb2NrZXQge1xyXG5cclxuICAgICAgICBzb2NrZXQ6IFdlYlNvY2tldDtcclxuICAgICAgICByZWNvbm5lY3RBdHRlbXB0cyA9IDA7XHJcblxyXG4gICAgICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY2hhbm5lbFRva2VuOiBzdHJpbmcsIHByaXZhdGUgdXJsOiBzdHJpbmcsIHByaXZhdGUgY2hhbm5lbDogc3RyaW5nKSB7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBvcGVuKCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zb2NrZXQgJiYgdGhpcy5zb2NrZXQucmVhZHlTdGF0ZSA9PSAxKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zb2NrZXQgPSBuZXcgV2ViU29ja2V0KHRoaXMudXJsKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuYmluZENhbGxiYWNrcygpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgb25vcGVuKGV2ZW50OiBhbnkpIHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLnJlY29ubmVjdEF0dGVtcHRzKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgY2xpZW50SWRzID0gY2xpZW50SWRzQnlUb2tlbnNbdGhpcy5jaGFubmVsVG9rZW5dO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IGNsaWVudElkcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBzb2NrZXRDbGllbnRJZCA9IGNsaWVudElkc1tpXTtcclxuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRzW3NvY2tldENsaWVudElkXVsnb25vcGVuJ10odGhpcy5jaGFubmVsKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnJlY29ubmVjdEF0dGVtcHRzID0gMDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIG9ubW1lc3NhZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgICAgICAgICBsZXQgbWVzc2FnZSA9IEpTT04ucGFyc2UoZXZlbnQuZGF0YSk7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBjbGllbnRJZHNCeVRva2Vuc1t0aGlzLmNoYW5uZWxUb2tlbl0ubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgICAgICAgICAgIGxldCBzb2NrZXRDbGllbnRJZCA9IGNsaWVudElkc0J5VG9rZW5zW3RoaXMuY2hhbm5lbFRva2VuXVtpXTtcclxuICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzb2NrZXRDbGllbnRJZCkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRzW3NvY2tldENsaWVudElkXVsnb25tZXNzYWdlJ10obWVzc2FnZSwgdGhpcy5jaGFubmVsLCBldmVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL0lnbm9yZVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBsZXQgYmVoYXZpb3JzID0gY29tcG9uZW50c1tzb2NrZXRDbGllbnRJZF1bJ2JlaGF2aW9ycyddO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBmdW5jdGlvbnMgPSBiZWhhdmlvcnNbbWVzc2FnZV07XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZ1bmN0aW9ucyAmJiBmdW5jdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgZnVuY3Rpb25zLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uc1tqXShudWxsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL0lnbm9yZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBjbGllbnRJZHNCeVRva2Vuc1t0aGlzLmNoYW5uZWxUb2tlbl0uc3BsaWNlKGksIDEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChjbGllbnRJZHNCeVRva2Vuc1t0aGlzLmNoYW5uZWxUb2tlbl0ubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgICAgIC8vdGFnIGRpc3NhcGVhcmVkXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIG9uY2xvc2UoZXZlbnQ6IGFueSkge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuc29ja2V0XHJcbiAgICAgICAgICAgICAgICB8fCAoZXZlbnQuY29kZSA9PSAxMDAwICYmIGV2ZW50LnJlYXNvbiA9PSBSRUFTT05fRVhQSVJFRClcclxuICAgICAgICAgICAgICAgIHx8IChldmVudC5jb2RlID09IDEwMDgpXHJcbiAgICAgICAgICAgICAgICB8fCAoIXRoaXMucmVjb25uZWN0QXR0ZW1wdHMpXHJcbiAgICAgICAgICAgICAgICB8fCAodGhpcy5yZWNvbm5lY3RBdHRlbXB0cyA+PSBNQVhfUkVDT05ORUNUX0FUVEVNUFRTKSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGNsaWVudElkcyA9IGNsaWVudElkc0J5VG9rZW5zW3RoaXMuY2hhbm5lbFRva2VuXTtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSBjbGllbnRJZHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgc29ja2V0Q2xpZW50SWQgPSBjbGllbnRJZHNbaV07XHJcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50c1tzb2NrZXRDbGllbnRJZF1bJ29uY2xvc2UnXShldmVudD8uY29kZSwgdGhpcz8uY2hhbm5lbCwgZXZlbnQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCh0aGlzLm9wZW4sIFJFQ09OTkVDVF9JTlRFUlZBTCAqIHRoaXMucmVjb25uZWN0QXR0ZW1wdHMrKyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBjbG9zZSgpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc29ja2V0KSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgcyA9IHRoaXMuc29ja2V0O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zb2NrZXQgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgcy5jbG9zZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBiaW5kIHRoZSBjYWxsYmFja3MgdG8gdGhlIHNvY2tldCBjYWxsYmFja3NcclxuICAgICAgICAgKi9cclxuICAgICAgICBwcml2YXRlIGJpbmRDYWxsYmFja3MoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc29ja2V0Lm9ub3BlbiA9IChldmVudDogRXZlbnQpID0+IHRoaXMub25vcGVuKGV2ZW50KTtcclxuICAgICAgICAgICAgdGhpcy5zb2NrZXQub25tZXNzYWdlID0gKGV2ZW50OiBFdmVudCkgPT4gdGhpcy5vbm1tZXNzYWdlKGV2ZW50KTtcclxuICAgICAgICAgICAgdGhpcy5zb2NrZXQub25jbG9zZSA9IChldmVudDogRXZlbnQpID0+IHRoaXMub25jbG9zZShldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFByaXZhdGUgc3RhdGljIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiAgICBmdW5jdGlvbiBnZXRCYXNlVVJMKHVybDogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKHVybC5pbmRleE9mKFwiOi8vXCIpIDwgMCkge1xyXG4gICAgICAgICAgICBsZXQgYmFzZSA9IHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSArIFwiOlwiICsgd2luZG93LmxvY2F0aW9uLnBvcnQ7XHJcbiAgICAgICAgICAgIHJldHVybiBVUkxfUFJPVE9DT0wgKyBiYXNlICsgdXJsO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1cmw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0IHNvY2tldCBhc3NvY2lhdGVkIHdpdGggZ2l2ZW4gY2hhbm5lbFRva2VuLlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGNoYW5uZWxUb2tlbiBUaGUgbmFtZSBvZiB0aGUgd2ViIHNvY2tldCBjaGFubmVsVG9rZW4uXHJcbiAgICAgKiBAcmV0dXJuIHtTb2NrZXR9IFNvY2tldCBhc3NvY2lhdGVkIHdpdGggZ2l2ZW4gY2hhbm5lbFRva2VuLlxyXG4gICAgICogQHRocm93cyB7RXJyb3J9IFdoZW4gY2hhbm5lbFRva2VuIGlzIHVua25vd24sIHlvdSBtYXkgbmVlZCB0byBpbml0aWFsaXplXHJcbiAgICAgKiAgICAgICAgICAgICAgICAgaXQgZmlyc3QgdmlhIDxjb2RlPmluaXQoKTwvY29kZT4gZnVuY3Rpb24uXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIGdldFNvY2tldChjaGFubmVsVG9rZW46IHN0cmluZyk6IFNvY2tldCB7XHJcbiAgICAgICAgbGV0IHNvY2tldCA9IHNvY2tldHNbY2hhbm5lbFRva2VuXTtcclxuICAgICAgICBpZiAoc29ja2V0KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBzb2NrZXQ7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biBjaGFubmVsVG9rZW46IFwiICsgY2hhbm5lbFRva2VuKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gcmVzb2x2ZUZ1bmN0aW9uKGZuOiBGdW5jdGlvbiB8IHN0cmluZyA9ICgpID0+IHtcclxuICAgIH0pOiBGdW5jdGlvbiB7XHJcbiAgICAgICAgcmV0dXJuIDxGdW5jdGlvbj4oKHR5cGVvZiBmbiAhPT0gXCJmdW5jdGlvblwiKSAmJiAoZm4gPSB3aW5kb3dbZm5dKSwgZm4pO1xyXG4gICAgfVxyXG5cclxufSJdLCJtYXBwaW5ncyI6IjtBQUFBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7O0FBRUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFNQTs7QUFFQTtBQUVBOzs7Ozs7QUFNQTtBQUNBO0FBUUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBdENBO0FBd0NBOztBQUNBO0FBQ0E7QUFGQTtBQUlBOztBQUNBO0FBQ0E7QUFGQTtBQUlBO0FBQ0E7QUFDQTs7Ozs7Ozs7QUFRQTtBQUVBO0FBS0E7QUFBQTtBQUFBO0FBQUE7QUFGQTtBQUdBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7Ozs7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/main/typescript/impl/PushImpl.ts\n");
/***/ }),
/***/ "./src/main/typescript/impl/core/Const.ts":
/*!************************************************!*\
!*** ./src/main/typescript/impl/core/Const.ts ***!
\************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\r\n/* Licensed to the Apache Software Foundation (ASF) under one or more\r\n * contributor license agreements. See the NOTICE file distributed with\r\n * this work for additional information regarding copyright ownership.\r\n * The ASF licenses this file to you under the Apache License, Version 2.0\r\n * (the \"License\"); you may not use this file except in compliance with\r\n * the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Const;\r\n(function (Const) {\r\n /*internal identifiers for options*/\r\n Const.IDENT_ALL = \"@all\";\r\n Const.IDENT_NONE = \"@none\";\r\n Const.IDENT_THIS = \"@this\";\r\n Const.IDENT_FORM = \"@form\";\r\n /*\r\n * [export const] constants\r\n */\r\n Const.P_PARTIAL_SOURCE = \"javax.faces.source\";\r\n Const.PARTIAL_ID = \"partialId\";\r\n Const.P_VIEWSTATE = \"javax.faces.ViewState\";\r\n Const.P_VIEWROOT = \"javax.faces.ViewRoot\";\r\n Const.P_VIEWHEAD = \"javax.faces.ViewHead\";\r\n Const.P_VIEWBODY = \"javax.faces.ViewBody\";\r\n Const.P_CLIENTWINDOW = \"javax.faces.ClientWindow\";\r\n Const.P_AJAX = \"javax.faces.partial.ajax\";\r\n Const.P_EXECUTE = \"javax.faces.partial.execute\";\r\n Const.P_RENDER = \"javax.faces.partial.render\";\r\n Const.P_EVT = \"javax.faces.partial.event\";\r\n Const.P_CLIENT_WINDOW = \"javax.faces.ClientWindow\";\r\n Const.P_RESET_VALUES = \"javax.faces.partial.resetValues\";\r\n Const.P_WIN_ID = \"javax.faces.WindowId\";\r\n Const.P_WINDOW_ID = \"javax.faces.windowId\";\r\n /* message types */\r\n Const.ERROR = \"error\";\r\n Const.EVENT = \"event\";\r\n Const.ON_ERROR = \"onerror\";\r\n Const.ON_EVENT = \"onevent\";\r\n /* event emitting stages */\r\n Const.BEGIN = \"begin\";\r\n Const.COMPLETE = \"complete\";\r\n Const.SUCCESS = \"success\";\r\n Const.SOURCE = \"source\";\r\n Const.STATUS = \"status\";\r\n Const.ERROR_NAME = \"error-name\";\r\n Const.ERROR_MESSAGE = \"error-message\";\r\n Const.RESPONSE_TEXT = \"responseText\";\r\n Const.RESPONSE_XML = \"responseXML\";\r\n /*ajax errors spec 14.4.2*/\r\n Const.HTTPERROR = \"httpError\";\r\n Const.EMPTY_RESPONSE = \"emptyResponse\";\r\n Const.MALFORMEDXML = \"malformedXML\";\r\n Const.SERVER_ERROR = \"serverError\";\r\n Const.CLIENT_ERROR = \"clientError\";\r\n Const.TIMEOUT_EVENT = \"timeout\";\r\n Const.CTX_PARAM_MF_INTERNAL = \"_mfInternal\";\r\n Const.CTX_PARAM_SRC_FRM_ID = \"_mfSourceFormId\";\r\n Const.CTX_PARAM_SRC_CTL_ID = \"_mfSourceControlId\";\r\n Const.CTX_PARAM_TR_TYPE = \"_mfTransportType\";\r\n Const.CTX_PARAM_PASS_THR = \"passThrgh\";\r\n Const.CTX_PARAM_DELAY = \"delay\";\r\n Const.CTX_PARAM_TIMEOUT = \"timeout\";\r\n Const.CTX_PARAM_RST = \"resetValues\";\r\n Const.CTX_PARAM_EXECUTE = \"execute\";\r\n Const.STAGE_DEVELOPMENT = \"Development\";\r\n Const.CONTENT_TYPE = \"Content-Type\";\r\n Const.HEAD_FACES_REQ = \"Faces-Request\";\r\n Const.REQ_ACCEPT = \"Accept\";\r\n Const.VAL_AJAX = \"partial/ajax\";\r\n Const.ENCODED_URL = \"javax.faces.encodedURL\";\r\n Const.REQ_TYPE_GET = \"GET\";\r\n Const.REQ_TYPE_POST = \"POST\";\r\n Const.STATE_EVT_BEGIN = \"begin\"; //TODO remove this\r\n Const.STATE_EVT_TIMEOUT = \"TIMEOUT_EVENT\";\r\n Const.STATE_EVT_COMPLETE = \"complete\"; //TODO remove this\r\n Const.URL_ENCODED = \"application/x-www-form-urlencoded\";\r\n Const.MULTIPART = \"multipart/form-data\";\r\n Const.NO_TIMEOUT = 0;\r\n Const.STD_ACCEPT = \"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\";\r\n Const.TAG_HEAD = \"head\";\r\n Const.TAG_FORM = \"form\";\r\n Const.TAG_BODY = \"body\";\r\n Const.TAG_BEFORE = \"before\";\r\n Const.TAG_AFTER = \"after\";\r\n Const.TAG_ATTR = \"attribute\";\r\n Const.SEL_VIEWSTATE_ELEM = \"[name='\" + Const.P_VIEWSTATE + \"']\";\r\n Const.SEL_RESPONSE_XML = \"responseXML\";\r\n Const.PHASE_PROCESS_RESPONSE = \"processResponse\";\r\n Const.ERR_NO_PARTIAL_RESPONSE = \"Partial response not set\";\r\n Const.ATTR_URL = \"url\";\r\n Const.ATTR_NAME = \"name\";\r\n Const.ATTR_VALUE = \"value\";\r\n Const.ATTR_ID = \"id\";\r\n /*partial response types*/\r\n Const.RESP_PARTIAL = \"partial-response\";\r\n Const.RESP_TYPE_ERROR = \"error\";\r\n Const.RESP_TYPE_REDIRECT = \"redirect\";\r\n Const.RESP_TYPE_CHANGES = \"changes\";\r\n /*partial commands*/\r\n Const.CMD_CHANGES = \"changes\";\r\n Const.CMD_UPDATE = \"update\";\r\n Const.CMD_DELETE = \"delete\";\r\n Const.CMD_INSERT = \"insert\";\r\n Const.CMD_EVAL = \"eval\";\r\n Const.CMD_ERROR = \"error\";\r\n Const.CMD_ATTRIBUTES = \"attributes\";\r\n Const.CMD_EXTENSION = \"extension\";\r\n Const.CMD_REDIRECT = \"redirect\";\r\n /*other constants*/\r\n Const.UPDATE_FORMS = \"_updateForms\";\r\n Const.UPDATE_ELEMS = \"_updateElems\";\r\n Const.MYFACES = \"myfaces\";\r\n Const.SEL_SCRIPTS_STYLES = \"script, style, link\";\r\n Const.MF_NONE = \"__mf_none__\";\r\n Const.REASON_EXPIRED = \"Expired\";\r\n Const.APPLIED_VST = \"appliedViewState\";\r\n Const.RECONNECT_INTERVAL = 500;\r\n Const.MAX_RECONNECT_ATTEMPTS = 25;\r\n Const.HTML_VIEWSTATE = [\"<input type='hidden'\", \"id='\", Const.P_VIEWSTATE, \"' name='\", Const.P_VIEWSTATE, \"' value='' />\"].join(\"\");\r\n Const.EMPTY_FUNC = Object.freeze(function () { });\r\n Const.EMPTY_STR = \"\";\r\n Const.EMPTY_MAP = Object.freeze({});\r\n})(Const = exports.Const || (exports.Const = {}));\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbWFpbi90eXBlc2NyaXB0L2ltcGwvY29yZS9Db25zdC50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tYWluL3R5cGVzY3JpcHQvaW1wbC9jb3JlL0NvbnN0LnRzPzc5YTUiXSwic291cmNlc0NvbnRlbnQiOlsiLyogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZSBvciBtb3JlXHJcbiAqIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUgZGlzdHJpYnV0ZWQgd2l0aFxyXG4gKiB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuXHJcbiAqIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wXHJcbiAqICh0aGUgXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGhcclxuICogdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcclxuICpcclxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuICpcclxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxyXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXHJcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxyXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXHJcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4gKi9cclxuXHJcbmV4cG9ydCBtb2R1bGUgQ29uc3Qge1xyXG4gICAgLyppbnRlcm5hbCBpZGVudGlmaWVycyBmb3Igb3B0aW9ucyovXHJcbiAgICBleHBvcnQgY29uc3QgSURFTlRfQUxMID0gXCJAYWxsXCI7XHJcbiAgICBleHBvcnQgY29uc3QgSURFTlRfTk9ORSA9IFwiQG5vbmVcIjtcclxuICAgIGV4cG9ydCBjb25zdCBJREVOVF9USElTID0gXCJAdGhpc1wiO1xyXG4gICAgZXhwb3J0IGNvbnN0IElERU5UX0ZPUk0gPSBcIkBmb3JtXCI7XHJcblxyXG4gICAgLypcclxuICAgICAqIFtleHBvcnQgY29uc3RdIGNvbnN0YW50c1xyXG4gICAgICovXHJcblxyXG4gICAgZXhwb3J0IGNvbnN0IFBfUEFSVElBTF9TT1VSQ0UgPSBcImphdmF4LmZhY2VzLnNvdXJjZVwiO1xyXG4gICAgZXhwb3J0IGNvbnN0IFBBUlRJQUxfSUQgPSBcInBhcnRpYWxJZFwiO1xyXG4gICAgZXhwb3J0IGNvbnN0IFBfVklFV1NUQVRFID0gXCJqYXZheC5mYWNlcy5WaWV3U3RhdGVcIjtcclxuICAgIGV4cG9ydCBjb25zdCBQX1ZJRVdST09UID0gXCJqYXZheC5mYWNlcy5WaWV3Um9vdFwiO1xyXG4gICAgZXhwb3J0IGNvbnN0IFBfVklFV0hFQUQgPSBcImphdmF4LmZhY2VzLlZpZXdIZWFkXCI7XHJcbiAgICBleHBvcnQgY29uc3QgUF9WSUVXQk9EWSA9IFwiamF2YXguZmFjZXMuVmlld0JvZHlcIjtcclxuXHJcblxyXG4gICAgZXhwb3J0IGNvbnN0IFBfQ0xJRU5UV0lORE9XID0gXCJqYXZheC5mYWNlcy5DbGllbnRXaW5kb3dcIjtcclxuICAgIGV4cG9ydCBjb25zdCBQX0FKQVggPSBcImphdmF4LmZhY2VzLnBhcnRpYWwuYWpheFwiO1xyXG4gICAgZXhwb3J0IGNvbnN0IFBfRVhFQ1VURSA9IFwiamF2YXguZmFjZXMucGFydGlhbC5leGVjdXRlXCI7XHJcbiAgICBleHBvcnQgY29uc3QgUF9SRU5ERVIgPSBcImphdmF4LmZhY2VzLnBhcnRpYWwucmVuZGVyXCI7XHJcbiAgICBleHBvcnQgY29uc3QgUF9FVlQgPSBcImphdmF4LmZhY2VzLnBhcnRpYWwuZXZlbnRcIjtcclxuICAgIGV4cG9ydCBjb25zdCBQX0NMSUVOVF9XSU5ET1cgPSBcImphdmF4LmZhY2VzLkNsaWVudFdpbmRvd1wiO1xyXG4gICAgZXhwb3J0IGNvbnN0IFBfUkVTRVRfVkFMVUVTID0gXCJqYXZheC5mYWNlcy5wYXJ0aWFsLnJlc2V0VmFsdWVzXCI7XHJcbiAgICBleHBvcnQgY29uc3QgUF9XSU5fSUQgPSBcImphdmF4LmZhY2VzLldpbmRvd0lkXCI7XHJcblxyXG4gICAgZXhwb3J0IGNvbnN0IFBfV0lORE9XX0lEID0gXCJqYXZheC5mYWNlcy53aW5kb3dJZFwiO1xyXG5cclxuICAgIC8qIG1lc3NhZ2UgdHlwZXMgKi9cclxuICAgIGV4cG9ydCBjb25zdCBFUlJPUiA9IFwiZXJyb3JcIjtcclxuICAgIGV4cG9ydCBjb25zdCBFVkVOVCA9IFwiZXZlbnRcIjtcclxuXHJcbiAgICBleHBvcnQgY29uc3QgT05fRVJST1IgPSBcIm9uZXJyb3JcIjtcclxuICAgIGV4cG9ydCBjb25zdCBPTl9FVkVOVCA9IFwib25ldmVudFwiO1xyXG5cclxuICAgIC8qIGV2ZW50IGVtaXR0aW5nIHN0YWdlcyAqL1xyXG4gICAgZXhwb3J0IGNvbnN0IEJFR0lOID0gXCJiZWdpblwiO1xyXG4gICAgZXhwb3J0IGNvbnN0IENPTVBMRVRFID0gXCJjb21wbGV0ZVwiO1xyXG4gICAgZXhwb3J0IGNvbnN0IFNVQ0NFU1MgPSBcInN1Y2Nlc3NcIjtcclxuXHJcbiAgICBleHBvcnQgY29uc3QgU09VUkNFID0gXCJzb3VyY2VcIjtcclxuICAgIGV4cG9ydCBjb25zdCBTVEFUVVMgPSBcInN0YXR1c1wiO1xyXG5cclxuXHJcbiAgICBleHBvcnQgY29uc3QgRVJST1JfTkFNRSA9IFwiZXJyb3ItbmFtZVwiO1xyXG4gICAgZXhwb3J0IGNvbnN0IEVSUk9SX01FU1NBR0UgPSBcImVycm9yLW1lc3NhZ2VcIjtcclxuXHJcblxyXG4gICAgZXhwb3J0IGNvbnN0IFJFU1BPTlNFX1RFWFQgPSBcInJlc3BvbnNlVGV4dFwiO1xyXG4gICAgZXhwb3J0IGNvbnN0IFJFU1BPTlNFX1hNTCA9IFwicmVzcG9uc2VYTUxcIjtcclxuXHJcbiAgICAvKmFqYXggZXJyb3JzIHNwZWMgMTQuNC4yKi9cclxuICAgIGV4cG9ydCBjb25zdCBIVFRQRVJST1IgPSBcImh0dHBFcnJvclwiO1xyXG4gICAgZXhwb3J0IGNvbnN0IEVNUFRZX1JFU1BPTlNFID0gXCJlbXB0eVJlc3BvbnNlXCI7XHJcbiAgICBleHBvcnQgY29uc3QgTUFMRk9STUVEWE1MID0gXCJtYWxmb3JtZWRYTUxcIjtcclxuICAgIGV4cG9ydCBjb25zdCBTRVJWRVJfRVJST1IgPSBcInNlcnZlckVycm9yXCI7XHJcbiAgICBleHBvcnQgY29uc3QgQ0xJRU5UX0VSUk9SID0gXCJjbGllbnRFcnJvclwiO1xyXG4gICAgZXhwb3J0IGNvbnN0IFRJTUVPVVRfRVZFTlQgPSBcInRpbWVvdXRcIjtcclxuXHJcbiAgICBleHBvcnQgY29uc3QgQ1RYX1BBUkFNX01GX0lOVEVSTkFMID0gXCJfbWZJbnRlcm5hbFwiO1xyXG5cclxuICAgIGV4cG9ydCBjb25zdCBDVFhfUEFSQU1fU1JDX0ZSTV9JRCA9IFwiX21mU291cmNlRm9ybUlkXCI7XHJcbiAgICBleHBvcnQgY29uc3QgQ1RYX1BBUkFNX1NSQ19DVExfSUQgPSBcIl9tZlNvdXJjZUNvbnRyb2xJZFwiO1xyXG4gICAgZXhwb3J0IGNvbnN0IENUWF9QQVJBTV9UUl9UWVBFID0gXCJfbWZUcmFuc3BvcnRUeXBlXCI7XHJcbiAgICBleHBvcnQgY29uc3QgQ1RYX1BBUkFNX1BBU1NfVEhSID0gXCJwYXNzVGhyZ2hcIjtcclxuICAgIGV4cG9ydCBjb25zdCBDVFhfUEFSQU1fREVMQVkgPSBcImRlbGF5XCI7XHJcbiAgICBleHBvcnQgY29uc3QgQ1RYX1BBUkFNX1RJTUVPVVQgPSBcInRpbWVvdXRcIjtcclxuICAgIGV4cG9ydCBjb25zdCBDVFhfUEFSQU1fUlNUID0gXCJyZXNldFZhbHVlc1wiO1xyXG4gICAgZXhwb3J0IGNvbnN0IENUWF9QQVJBTV9FWEVDVVRFID0gXCJleGVjdXRlXCI7XHJcblxyXG4gICAgZXhwb3J0IGNvbnN0IFNUQUdFX0RFVkVMT1BNRU5UID0gXCJEZXZlbG9wbWVudFwiO1xyXG5cclxuXHJcblxyXG4gICAgZXhwb3J0IGNvbnN0IENPTlRFTlRfVFlQRT0gXCJDb250ZW50LVR5cGVcIjtcclxuICAgIGV4cG9ydCBjb25zdCBIRUFEX0ZBQ0VTX1JFUT0gXCJGYWNlcy1SZXF1ZXN0XCI7XHJcbiAgICBleHBvcnQgY29uc3QgUkVRX0FDQ0VQVCA9IFwiQWNjZXB0XCI7XHJcbiAgICBleHBvcnQgY29uc3QgVkFMX0FKQVg9IFwicGFydGlhbC9hamF4XCI7XHJcbiAgICBleHBvcnQgY29uc3QgRU5DT0RFRF9VUkw9IFwiamF2YXguZmFjZXMuZW5jb2RlZFVSTFwiO1xyXG4gICAgZXhwb3J0IGNvbnN0IFJFUV9UWVBFX0dFVCA9IFwiR0VUXCI7XHJcbiAgICBleHBvcnQgY29uc3QgUkVRX1RZUEVfUE9TVCA9IFwiUE9TVFwiO1xyXG4gICAgZXhwb3J0IGNvbnN0IFNUQVRFX0VWVF9CRUdJTiA9IFwiYmVnaW5cIjsgLy9UT0RPIHJlbW92ZSB0aGlzXHJcbiAgICBleHBvcnQgY29uc3QgU1RBVEVfRVZUX1RJTUVPVVQgPSBcIlRJTUVPVVRfRVZFTlRcIjtcclxuICAgIGV4cG9ydCBjb25zdCBTVEFURV9FVlRfQ09NUExFVEUgPSBcImNvbXBsZXRlXCI7IC8vVE9ETyByZW1vdmUgdGhpc1xyXG4gICAgZXhwb3J0IGNvbnN0IFVSTF9FTkNPREVEID0gXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcIjtcclxuICAgIGV4cG9ydCBjb25zdCBNVUxUSVBBUlQgPSBcIm11bHRpcGFydC9mb3JtLWRhdGFcIjtcclxuICAgIGV4cG9ydCBjb25zdCBOT19USU1FT1VUID0gMDtcclxuICAgIGV4cG9ydCBjb25zdCBTVERfQUNDRVBUID0gXCJ0ZXh0L2h0bWwsYXBwbGljYXRpb24veGh0bWwreG1sLGFwcGxpY2F0aW9uL3htbDtxPTAuOSwqLyo7cT0wLjhcIjtcclxuXHJcbiAgICBleHBvcnQgY29uc3QgVEFHX0hFQUQgPSBcImhlYWRcIjtcclxuICAgIGV4cG9ydCBjb25zdCBUQUdfRk9STSA9IFwiZm9ybVwiO1xyXG4gICAgZXhwb3J0IGNvbnN0IFRBR19CT0RZID0gXCJib2R5XCI7XHJcbiAgICBleHBvcnQgY29uc3QgVEFHX0JFRk9SRSA9IFwiYmVmb3JlXCI7XHJcbiAgICBleHBvcnQgY29uc3QgVEFHX0FGVEVSID0gXCJhZnRlclwiO1xyXG5cclxuICAgIGV4cG9ydCBjb25zdCBUQUdfQVRUUiA9IFwiYXR0cmlidXRlXCI7XHJcblxyXG5cclxuICAgIGV4cG9ydCBjb25zdCBTRUxfVklFV1NUQVRFX0VMRU0gPSBcIltuYW1lPSdcIiArIENvbnN0LlBfVklFV1NUQVRFICsgXCInXVwiO1xyXG4gICAgZXhwb3J0IGNvbnN0IFNFTF9SRVNQT05TRV9YTUwgPSBcInJlc3BvbnNlWE1MXCI7XHJcblxyXG4gICAgZXhwb3J0IGNvbnN0IFBIQVNFX1BST0NFU1NfUkVTUE9OU0UgPSBcInByb2Nlc3NSZXNwb25zZVwiO1xyXG5cclxuXHJcbiAgICBleHBvcnQgY29uc3QgRVJSX05PX1BBUlRJQUxfUkVTUE9OU0UgPSBcIlBhcnRpYWwgcmVzcG9uc2Ugbm90IHNldFwiO1xyXG5cclxuICAgIGV4cG9ydCBjb25zdCBBVFRSX1VSTCA9IFwidXJsXCI7XHJcbiAgICBleHBvcnQgY29uc3QgQVRUUl9OQU1FID0gXCJuYW1lXCI7XHJcbiAgICBleHBvcnQgY29uc3QgQVRUUl9WQUxVRSA9IFwidmFsdWVcIjtcclxuICAgIGV4cG9ydCBjb25zdCBBVFRSX0lEID0gXCJpZFwiO1xyXG5cclxuICAgIC8qcGFydGlhbCByZXNwb25zZSB0eXBlcyovXHJcbiAgICBleHBvcnQgY29uc3QgUkVTUF9QQVJUSUFMID0gXCJwYXJ0aWFsLXJlc3BvbnNlXCI7XHJcbiAgICBleHBvcnQgY29uc3QgUkVTUF9UWVBFX0VSUk9SID0gXCJlcnJvclwiO1xyXG4gICAgZXhwb3J0IGNvbnN0IFJFU1BfVFlQRV9SRURJUkVDVCA9IFwicmVkaXJlY3RcIjtcclxuICAgIGV4cG9ydCBjb25zdCBSRVNQX1RZUEVfQ0hBTkdFUyA9IFwiY2hhbmdlc1wiO1xyXG5cclxuICAgIC8qcGFydGlhbCBjb21tYW5kcyovXHJcbiAgICBleHBvcnQgY29uc3QgQ01EX0NIQU5HRVMgPSBcImNoYW5nZXNcIjtcclxuICAgIGV4cG9ydCBjb25zdCBDTURfVVBEQVRFID0gXCJ1cGRhdGVcIjtcclxuICAgIGV4cG9ydCBjb25zdCBDTURfREVMRVRFID0gXCJkZWxldGVcIjtcclxuICAgIGV4cG9ydCBjb25zdCBDTURfSU5TRVJUID0gXCJpbnNlcnRcIjtcclxuICAgIGV4cG9ydCBjb25zdCBDTURfRVZBTCA9IFwiZXZhbFwiO1xyXG4gICAgZXhwb3J0IGNvbnN0IENNRF9FUlJPUiA9IFwiZXJyb3JcIjtcclxuICAgIGV4cG9ydCBjb25zdCBDTURfQVRUUklCVVRFUyA9IFwiYXR0cmlidXRlc1wiO1xyXG4gICAgZXhwb3J0IGNvbnN0IENNRF9FWFRFTlNJT04gPSBcImV4dGVuc2lvblwiO1xyXG4gICAgZXhwb3J0IGNvbnN0IENNRF9SRURJUkVDVCA9IFwicmVkaXJlY3RcIjtcclxuXHJcbiAgICAvKm90aGVyIGNvbnN0YW50cyovXHJcblxyXG4gICAgZXhwb3J0IGNvbnN0IFVQREFURV9GT1JNUyA9IFwiX3VwZGF0ZUZvcm1zXCI7XHJcbiAgICBleHBvcnQgY29uc3QgVVBEQVRFX0VMRU1TID0gXCJfdXBkYXRlRWxlbXNcIjtcclxuXHJcbiAgICBleHBvcnQgY29uc3QgTVlGQUNFUyA9IFwibXlmYWNlc1wiO1xyXG5cclxuICAgIGV4cG9ydCBjb25zdCBTRUxfU0NSSVBUU19TVFlMRVMgPSBcInNjcmlwdCwgc3R5bGUsIGxpbmtcIjtcclxuXHJcbiAgICBleHBvcnQgY29uc3QgTUZfTk9ORSA9IFwiX19tZl9ub25lX19cIjtcclxuXHJcbiAgICBleHBvcnQgY29uc3QgUkVBU09OX0VYUElSRUQgPSBcIkV4cGlyZWRcIjtcclxuXHJcbiAgICBleHBvcnQgY29uc3QgQVBQTElFRF9WU1QgPSBcImFwcGxpZWRWaWV3U3RhdGVcIjtcclxuXHJcbiAgICBleHBvcnQgY29uc3QgUkVDT05ORUNUX0lOVEVSVkFMID0gNTAwO1xyXG4gICAgZXhwb3J0IGNvbnN0IE1BWF9SRUNPTk5FQ1RfQVRURU1QVFMgPSAyNTtcclxuXHJcbiAgICBleHBvcnQgY29uc3QgSFRNTF9WSUVXU1RBVEUgPSBbXCI8aW5wdXQgdHlwZT0naGlkZGVuJ1wiLCBcImlkPSdcIiwgUF9WSUVXU1RBVEUsIFwiJyBuYW1lPSdcIiwgUF9WSUVXU1RBVEUsIFwiJyB2YWx1ZT0nJyAvPlwiXS5qb2luKFwiXCIpO1xyXG5cclxuICAgIGV4cG9ydCBjb25zdCBFTVBUWV9GVU5DID0gT2JqZWN0LmZyZWV6ZSgoKSA9PiB7fSk7XHJcbiAgICBleHBvcnQgY29uc3QgRU1QVFlfU1RSID0gXCJcIjtcclxuICAgIGV4cG9ydCBjb25zdCBFTVBUWV9NQVAgPSBPYmplY3QuZnJlZXplKHt9KTtcclxufSJdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7OztBQWNBOztBQUVBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7O0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBR0E7QUFDQTtBQUdBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUdBO0FBQ0E7QUFFQTtBQUdBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFFQTtBQUVBO0FBRUE7QUFFQTtBQUVBO0FBRUE7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/main/typescript/impl/core/Const.ts\n");
/***/ }),
/***/ "./src/main/typescript/impl/core/ImplTypes.ts":
/*!****************************************************!*\
!*** ./src/main/typescript/impl/core/ImplTypes.ts ***!
\****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\r\n/* Licensed to the Apache Software Foundation (ASF) under one or more\r\n * contributor license agreements. See the NOTICE file distributed with\r\n * this work for additional information regarding copyright ownership.\r\n * The ASF licenses this file to you under the Apache License, Version 2.0\r\n * (the \"License\"); you may not use this file except in compliance with\r\n * the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Const_1 = __webpack_require__(/*! ./Const */ \"./src/main/typescript/impl/core/Const.ts\");\r\nvar P_VIEWSTATE = Const_1.Const.P_VIEWSTATE;\r\n/**\r\n * a helper class to isolate the\r\n * view state data processing\r\n */\r\nvar ViewState = /** @class */ (function () {\r\n function ViewState(id, value) {\r\n this.id = id;\r\n this.value = value;\r\n var viewStatePos = id.indexOf(P_VIEWSTATE);\r\n this.nameSpace = viewStatePos > 0 ? id.substr(0, viewStatePos - 1) : \"\";\r\n }\r\n Object.defineProperty(ViewState.prototype, \"hasNameSpace\", {\r\n get: function () {\r\n var _a, _b;\r\n return !!(_b = (_a = this) === null || _a === void 0 ? void 0 : _a.nameSpace, (_b !== null && _b !== void 0 ? _b : \"\")).length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ViewState;\r\n}());\r\nexports.ViewState = ViewState;\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbWFpbi90eXBlc2NyaXB0L2ltcGwvY29yZS9JbXBsVHlwZXMudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbWFpbi90eXBlc2NyaXB0L2ltcGwvY29yZS9JbXBsVHlwZXMudHM/NDc2OSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lIG9yIG1vcmVcbiAqIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUgZGlzdHJpYnV0ZWQgd2l0aFxuICogdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLlxuICogVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjBcbiAqICh0aGUgXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGhcbiAqIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7Q29uc3R9IGZyb20gXCIuL0NvbnN0XCI7XG5pbXBvcnQgUF9WSUVXU1RBVEUgPSBDb25zdC5QX1ZJRVdTVEFURTtcblxuZXhwb3J0IGludGVyZmFjZSBJZFZhbHVlSG9sZGVyIHtcblxuICAgIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgdmFsdWU6IHN0cmluZztcblxufVxuXG4vKipcbiAqIGEgaGVscGVyIGNsYXNzIHRvIGlzb2xhdGUgdGhlXG4gKiB2aWV3IHN0YXRlIGRhdGEgcHJvY2Vzc2luZ1xuICovXG5leHBvcnQgY2xhc3MgVmlld1N0YXRlIGltcGxlbWVudHMgSWRWYWx1ZUhvbGRlciB7XG5cbiAgICBuYW1lU3BhY2U6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBpZDogc3RyaW5nLCBwdWJsaWMgdmFsdWU6IHN0cmluZykge1xuICAgICAgICBsZXQgdmlld1N0YXRlUG9zID0gaWQuaW5kZXhPZihQX1ZJRVdTVEFURSk7XG4gICAgICAgIHRoaXMubmFtZVNwYWNlID0gdmlld1N0YXRlUG9zID4gMCA/IGlkLnN1YnN0cigwLCB2aWV3U3RhdGVQb3MgLSAxKSA6IFwiXCI7XG4gICAgfVxuXG4gICAgZ2V0IGhhc05hbWVTcGFjZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhKHRoaXM/Lm5hbWVTcGFjZSA/PyBcIlwiKS5sZW5ndGg7XG4gICAgfVxufSJdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7OztBQWNBOztBQUVBO0FBQ0E7QUFTQTs7O0FBR0E7QUFDQTtBQUlBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7O0FBQ0E7QUFDQTs7O0FBQUE7QUFDQTtBQUFBO0FBWkE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/main/typescript/impl/core/ImplTypes.ts\n");
/***/ }),
/***/ "./src/main/typescript/impl/i18n/Messages.ts":
/*!***************************************************!*\
!*** ./src/main/typescript/impl/i18n/Messages.ts ***!
\***************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\r\n/* Licensed to the Apache Software Foundation (ASF) under one or more\r\n * contributor license agreements. See the NOTICE file distributed with\r\n * this work for additional information regarding copyright ownership.\r\n * The ASF licenses this file to you under the Apache License, Version 2.0\r\n * (the \"License\"); you may not use this file except in compliance with\r\n * the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Messages = /** @class */ (function () {\r\n function Messages() {\r\n this.MSG_TEST = \"Testmessage\";\r\n /*Messages*/\r\n /** @constant */\r\n this.MSG_DEV_MODE = \"Note, this message is only sent, because project stage is development and no \" +\r\n \"other error listeners are registered.\";\r\n /** @constant */\r\n this.MSG_AFFECTED_CLASS = \"Affected Class=\";\r\n /** @constant */\r\n this.MSG_AFFECTED_METHOD = \"Affected Method=\";\r\n /** @constant */\r\n this.MSG_ERROR_NAME = \"Error Name=\";\r\n /** @constant */\r\n this.MSG_ERROR_MESSAGE = \"Error Message=\";\r\n /** @constant */\r\n this.MSG_SERVER_ERROR_NAME = \"Server Error Name=\";\r\n /** @constant */\r\n this.MSG_ERROR_DESC = \"Error Description=\";\r\n /** @constant */\r\n this.MSG_ERROR_NO = \"Error Number=\";\r\n /** @constant */\r\n this.MSG_ERROR_LINENO = \"Error Line Number=\";\r\n /*Errors and messages*/\r\n /** @constant */\r\n this.ERR_FORM = \"Sourceform could not be determined, either because element is not attached to a form or we have multiple forms with named elements of the same identifier or name, stopping the ajax processing\";\r\n /** @constant */\r\n this.ERR_VIEWSTATE = \"jsf.viewState= param value not of type form!\";\r\n /** @constant */\r\n this.ERR_TRANSPORT = \"Transport type {0} does not exist\";\r\n /** @constant */\r\n this.ERR_EVT_PASS = \"an event must be passed down (either a an event object null or undefined) \";\r\n /** @constant */\r\n this.ERR_CONSTRUCT = \"Parts of the response couldn't be retrieved when constructing the event data= {0} \";\r\n /** @constant */\r\n this.ERR_MALFORMEDXML = \"The server response could not be parsed, the server has returned with a response which is not xml !\";\r\n /** @constant */\r\n this.ERR_SOURCE_FUNC = \"source cannot be a function (probably source and event were not defined or set to null\";\r\n /** @constant */\r\n this.ERR_EV_OR_UNKNOWN = \"An event object or unknown must be passed as second parameter\";\r\n /** @constant */\r\n this.ERR_SOURCE_NOSTR = \"source cannot be a string\";\r\n /** @constant */\r\n this.ERR_SOURCE_DEF_NULL = \"source must be defined or null\";\r\n //_Lang.js\r\n /** @constant */\r\n this.ERR_MUST_STRING = \"{0}: {1} namespace must be of type String\";\r\n /** @constant */\r\n this.ERR_REF_OR_ID = \"{0}: {1} a reference node or identifier must be provided\";\r\n /** @constant */\r\n this.ERR_PARAM_GENERIC = \"{0}: parameter {1} must be of type {2}\";\r\n /** @constant */\r\n this.ERR_PARAM_STR = \"{0}: {1} param must be of type string\";\r\n /** @constant */\r\n this.ERR_PARAM_STR_RE = \"{0}: {1} param must be of type string or a regular expression\";\r\n /** @constant */\r\n this.ERR_PARAM_MIXMAPS = \"{0}: both a source as well as a destination map must be provided\";\r\n /** @constant */\r\n this.ERR_MUST_BE_PROVIDED = \"{0}: an {1} and a {2} must be provided\";\r\n /** @constant */\r\n this.ERR_MUST_BE_PROVIDED1 = \"{0}: {1} must be set\";\r\n /** @constant */\r\n this.ERR_REPLACE_EL = \"replaceElements called while evalNodes is not an array\";\r\n /** @constant */\r\n this.ERR_EMPTY_RESPONSE = \"{0}: The response cannot be null or empty!\";\r\n /** @constant */\r\n this.ERR_ITEM_ID_NOTFOUND = \"{0}: item with identifier {1} could not be found\";\r\n /** @constant */\r\n this.ERR_PPR_IDREQ = \"{0}: Error in PPR Insert, id must be present\";\r\n /** @constant */\r\n this.ERR_PPR_INSERTBEFID = \"{0}: Error in PPR Insert, before id or after id must be present\";\r\n /** @constant */\r\n this.ERR_PPR_INSERTBEFID_1 = \"{0}: Error in PPR Insert, before node of id {1} does not exist in document\";\r\n /** @constant */\r\n this.ERR_PPR_INSERTBEFID_2 = \"{0}: Error in PPR Insert, after node of id {1} does not exist in document\";\r\n /** @constant */\r\n this.ERR_PPR_DELID = \"{0}: Error in delete, id not in xml markup\";\r\n /** @constant */\r\n this.ERR_PPR_UNKNOWNCID = \"{0}: Unknown Html-Component-ID= {1}\";\r\n /** @constant */\r\n this.ERR_NO_VIEWROOTATTR = \"{0}: Changing of ViewRoot attributes is not supported\";\r\n /** @constant */\r\n this.ERR_NO_HEADATTR = \"{0}: Changing of Head attributes is not supported\";\r\n /** @constant */\r\n this.ERR_RED_URL = \"{0}: Redirect without url\";\r\n /** @constant */\r\n this.ERR_REQ_FAILED_UNKNOWN = \"Request failed with unknown status\";\r\n /** @constant */\r\n this.ERR_REQU_FAILED = \"Request failed with status {0} and reason {1}\";\r\n /** @constant */\r\n this.UNKNOWN = \"UNKNOWN\";\r\n }\r\n return Messages;\r\n}());\r\nexports.Messages = Messages;\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbWFpbi90eXBlc2NyaXB0L2ltcGwvaTE4bi9NZXNzYWdlcy50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tYWluL3R5cGVzY3JpcHQvaW1wbC9pMThuL01lc3NhZ2VzLnRzPzkyM2EiXSwic291cmNlc0NvbnRlbnQiOlsiLyogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZSBvciBtb3JlXHJcbiAqIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUgZGlzdHJpYnV0ZWQgd2l0aFxyXG4gKiB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuXHJcbiAqIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wXHJcbiAqICh0aGUgXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGhcclxuICogdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcclxuICpcclxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuICpcclxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxyXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXHJcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxyXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXHJcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4gKi9cclxuXHJcbmV4cG9ydCBjbGFzcyBNZXNzYWdlcyB7XHJcbiAgICBNU0dfVEVTVCA9IFwiVGVzdG1lc3NhZ2VcIjtcclxuXHJcbiAgICAvKk1lc3NhZ2VzKi9cclxuICAgIC8qKiBAY29uc3RhbnQgKi9cclxuICAgIE1TR19ERVZfTU9ERSA9IFwiTm90ZSwgdGhpcyBtZXNzYWdlIGlzIG9ubHkgc2VudCwgYmVjYXVzZSBwcm9qZWN0IHN0YWdlIGlzIGRldmVsb3BtZW50IGFuZCBubyBcIiArXHJcbiAgICAgICAgXCJvdGhlciBlcnJvciBsaXN0ZW5lcnMgYXJlIHJlZ2lzdGVyZWQuXCI7XHJcbiAgICAvKiogQGNvbnN0YW50ICovXHJcbiAgICBNU0dfQUZGRUNURURfQ0xBU1MgPSBcIkFmZmVjdGVkIENsYXNzPVwiO1xyXG4gICAgLyoqIEBjb25zdGFudCAqL1xyXG4gICAgTVNHX0FGRkVDVEVEX01FVEhPRCA9IFwiQWZmZWN0ZWQgTWV0aG9kPVwiO1xyXG4gICAgLyoqIEBjb25zdGFudCAqL1xyXG4gICAgTVNHX0VSUk9SX05BTUUgPSBcIkVycm9yIE5hbWU9XCI7XHJcbiAgICAvKiogQGNvbnN0YW50ICovXHJcbiAgICBNU0dfRVJST1JfTUVTU0FHRSA9IFwiRXJyb3IgTWVzc2FnZT1cIjtcclxuICAgIC8qKiBAY29uc3RhbnQgKi9cclxuICAgIE1TR19TRVJWRVJfRVJST1JfTkFNRSA9IFwiU2VydmVyIEVycm9yIE5hbWU9XCI7XHJcblxyXG4gICAgLyoqIEBjb25zdGFudCAqL1xyXG4gICAgTVNHX0VSUk9SX0RFU0MgPSBcIkVycm9yIERlc2NyaXB0aW9uPVwiO1xyXG4gICAgLyoqIEBjb25zdGFudCAqL1xyXG4gICAgTVNHX0VSUk9SX05PID0gXCJFcnJvciBOdW1iZXI9XCI7XHJcbiAgICAvKiogQGNvbnN0YW50ICovXHJcbiAgICBNU0dfRVJST1JfTElORU5PID0gXCJFcnJvciBMaW5lIE51bWJlcj1cIjtcclxuXHJcbiAgICAvKkVycm9ycyBhbmQgbWVzc2FnZXMqL1xyXG4gICAgLyoqIEBjb25zdGFudCAqL1xyXG4gICAgRVJSX0ZPUk0gPSBcIlNvdXJjZWZvcm0gY291bGQgbm90IGJlIGRldGVybWluZWQsIGVpdGhlciBiZWNhdXNlIGVsZW1lbnQgaXMgbm90IGF0dGFjaGVkIHRvIGEgZm9ybSBvciB3ZSBoYXZlIG11bHRpcGxlIGZvcm1zIHdpdGggbmFtZWQgZWxlbWVudHMgb2YgdGhlIHNhbWUgaWRlbnRpZmllciBvciBuYW1lLCBzdG9wcGluZyB0aGUgYWpheCBwcm9jZXNzaW5nXCI7XHJcbiAgICAvKiogQGNvbnN0YW50ICovXHJcbiAgICBFUlJfVklFV1NUQVRFID0gXCJqc2Yudmlld1N0YXRlPSBwYXJhbSB2YWx1ZSBub3Qgb2YgdHlwZSBmb3JtIVwiO1xyXG4gICAgLyoqIEBjb25zdGFudCAqL1xyXG4gICAgRVJSX1RSQU5TUE9SVCA9IFwiVHJhbnNwb3J0IHR5cGUgezB9IGRvZXMgbm90IGV4aXN0XCI7XHJcbiAgICAvKiogQGNvbnN0YW50ICovXHJcbiAgICBFUlJfRVZUX1BBU1MgPSBcImFuIGV2ZW50IG11c3QgYmUgcGFzc2VkIGRvd24gKGVpdGhlciBhIGFuIGV2ZW50IG9iamVjdCBudWxsIG9yIHVuZGVmaW5lZCkgXCI7XHJcbiAgICAvKiogQGNvbnN0YW50ICovXHJcbiAgICBFUlJfQ09OU1RSVUNUID0gXCJQYXJ0cyBvZiB0aGUgcmVzcG9uc2UgY291bGRuJ3QgYmUgcmV0cmlldmVkIHdoZW4gY29uc3RydWN0aW5nIHRoZSBldmVudCBkYXRhPSB7MH0gXCI7XHJcbiAgICAvKiogQGNvbnN0YW50ICovXHJcbiAgICBFUlJfTUFMRk9STUVEWE1MID0gXCJUaGUgc2VydmVyIHJlc3BvbnNlIGNvdWxkIG5vdCBiZSBwYXJzZWQsIHRoZSBzZXJ2ZXIgaGFzIHJldHVybmVkIHdpdGggYSByZXNwb25zZSB3aGljaCBpcyBub3QgeG1sICFcIjtcclxuICAgIC8qKiBAY29uc3RhbnQgKi9cclxuICAgIEVSUl9TT1VSQ0VfRlVOQyA9IFwic291cmNlIGNhbm5vdCBiZSBhIGZ1bmN0aW9uIChwcm9iYWJseSBzb3VyY2UgYW5kIGV2ZW50IHdlcmUgbm90IGRlZmluZWQgb3Igc2V0IHRvIG51bGxcIjtcclxuICAgIC8qKiBAY29uc3RhbnQgKi9cclxuICAgIEVSUl9FVl9PUl9VTktOT1dOID0gXCJBbiBldmVudCBvYmplY3Qgb3IgdW5rbm93biBtdXN0IGJlIHBhc3NlZCBhcyBzZWNvbmQgcGFyYW1ldGVyXCI7XHJcbiAgICAvKiogQGNvbnN0YW50ICovXHJcbiAgICBFUlJfU09VUkNFX05PU1RSID0gXCJzb3VyY2UgY2Fubm90IGJlIGEgc3RyaW5nXCI7XHJcbiAgICAvKiogQGNvbnN0YW50ICovXHJcbiAgICBFUlJfU09VUkNFX0RFRl9OVUxMID0gXCJzb3VyY2UgbXVzdCBiZSBkZWZpbmVkIG9yIG51bGxcIjtcclxuXHJcbiAgICAvL19MYW5nLmpzXHJcbiAgICAvKiogQGNvbnN0YW50ICovXHJcbiAgICBFUlJfTVVTVF9TVFJJTkcgPSBcInswfTogezF9IG5hbWVzcGFjZSBtdXN0IGJlIG9mIHR5cGUgU3RyaW5nXCI7XHJcbiAgICAvKiogQGNvbnN0YW50ICovXHJcbiAgICBFUlJfUkVGX09SX0lEID0gXCJ7MH06IHsxfSBhIHJlZmVyZW5jZSBub2RlIG9yIGlkZW50aWZpZXIgbXVzdCBiZSBwcm92aWRlZFwiO1xyXG4gICAgLyoqIEBjb25zdGFudCAqL1xyXG4gICAgRVJSX1BBUkFNX0dFTkVSSUMgPSBcInswfTogcGFyYW1ldGVyIHsxfSBtdXN0IGJlIG9mIHR5cGUgezJ9XCI7XHJcbiAgICAvKiogQGNvbnN0YW50ICovXHJcbiAgICBFUlJfUEFSQU1fU1RSID0gXCJ7MH06IHsxfSBwYXJhbSBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nXCI7XHJcbiAgICAvKiogQGNvbnN0YW50ICovXHJcbiAgICBFUlJfUEFSQU1fU1RSX1JFID0gXCJ7MH06IHsxfSBwYXJhbSBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nIG9yIGEgcmVndWxhciBleHByZXNzaW9uXCI7XHJcbiAgICAvKiogQGNvbnN0YW50ICovXHJcbiAgICBFUlJfUEFSQU1fTUlYTUFQUyA9IFwiezB9OiBib3RoIGEgc291cmNlIGFzIHdlbGwgYXMgYSBkZXN0aW5hdGlvbiBtYXAgbXVzdCBiZSBwcm92aWRlZFwiO1xyXG4gICAgLyoqIEBjb25zdGFudCAqL1xyXG4gICAgRVJSX01VU1RfQkVfUFJPVklERUQgPSBcInswfTogYW4gezF9IGFuZCBhIHsyfSBtdXN0IGJlIHByb3ZpZGVkXCI7XHJcbiAgICAvKiogQGNvbnN0YW50ICovXHJcbiAgICBFUlJfTVVTVF9CRV9QUk9WSURFRDEgPSBcInswfTogezF9IG11c3QgYmUgc2V0XCI7XHJcblxyXG4gICAgLyoqIEBjb25zdGFudCAqL1xyXG4gICAgRVJSX1JFUExBQ0VfRUwgPSBcInJlcGxhY2VFbGVtZW50cyBjYWxsZWQgd2hpbGUgZXZhbE5vZGVzIGlzIG5vdCBhbiBhcnJheVwiO1xyXG5cclxuICAgIC8qKiBAY29uc3RhbnQgKi9cclxuICAgIEVSUl9FTVBUWV9SRVNQT05TRSA9IFwiezB9OiBUaGUgcmVzcG9uc2UgY2Fubm90IGJlIG51bGwgb3IgZW1wdHkhXCI7XHJcbiAgICAvKiogQGNvbnN0YW50ICovXHJcbiAgICBFUlJfSVRFTV9JRF9OT1RGT1VORCA9IFwiezB9OiBpdGVtIHdpdGggaWRlbnRpZmllciB7MX0gY291bGQgbm90IGJlIGZvdW5kXCI7XHJcbiAgICAvKiogQGNvbnN0YW50ICovXHJcbiAgICBFUlJfUFBSX0lEUkVRID0gXCJ7MH06IEVycm9yIGluIFBQUiBJbnNlcnQsIGlkIG11c3QgYmUgcHJlc2VudFwiO1xyXG4gICAgLyoqIEBjb25zdGFudCAqL1xyXG4gICAgRVJSX1BQUl9JTlNFUlRCRUZJRCA9IFwiezB9OiBFcnJvciBpbiBQUFIgSW5zZXJ0LCBiZWZvcmUgaWQgb3IgYWZ0ZXIgaWQgbXVzdCBiZSBwcmVzZW50XCI7XHJcbiAgICAvKiogQGNvbnN0YW50ICovXHJcbiAgICBFUlJfUFBSX0lOU0VSVEJFRklEXzEgPSBcInswfTogRXJyb3IgaW4gUFBSIEluc2VydCwgYmVmb3JlICBub2RlIG9mIGlkIHsxfSBkb2VzIG5vdCBleGlzdCBpbiBkb2N1bWVudFwiO1xyXG4gICAgLyoqIEBjb25zdGFudCAqL1xyXG4gICAgRVJSX1BQUl9JTlNFUlRCRUZJRF8yID0gXCJ7MH06IEVycm9yIGluIFBQUiBJbnNlcnQsIGFmdGVyICBub2RlIG9mIGlkIHsxfSBkb2VzIG5vdCBleGlzdCBpbiBkb2N1bWVudFwiO1xyXG5cclxuICAgIC8qKiBAY29uc3RhbnQgKi9cclxuICAgIEVSUl9QUFJfREVMSUQgPSBcInswfTogRXJyb3IgaW4gZGVsZXRlLCBpZCBub3QgaW4geG1sIG1hcmt1cFwiO1xyXG4gICAgLyoqIEBjb25zdGFudCAqL1xyXG4gICAgRVJSX1BQUl9VTktOT1dOQ0lEID0gXCJ7MH06ICBVbmtub3duIEh0bWwtQ29tcG9uZW50LUlEPSB7MX1cIjtcclxuXHJcbiAgICAvKiogQGNvbnN0YW50ICovXHJcbiAgICBFUlJfTk9fVklFV1JPT1RBVFRSID0gXCJ7MH06IENoYW5naW5nIG9mIFZpZXdSb290IGF0dHJpYnV0ZXMgaXMgbm90IHN1cHBvcnRlZFwiO1xyXG4gICAgLyoqIEBjb25zdGFudCAqL1xyXG4gICAgRVJSX05PX0hFQURBVFRSID0gXCJ7MH06IENoYW5naW5nIG9mIEhlYWQgYXR0cmlidXRlcyBpcyBub3Qgc3VwcG9ydGVkXCI7XHJcbiAgICAvKiogQGNvbnN0YW50ICovXHJcbiAgICBFUlJfUkVEX1VSTCA9IFwiezB9OiBSZWRpcmVjdCB3aXRob3V0IHVybFwiO1xyXG5cclxuICAgIC8qKiBAY29uc3RhbnQgKi9cclxuICAgIEVSUl9SRVFfRkFJTEVEX1VOS05PV04gPSBcIlJlcXVlc3QgZmFpbGVkIHdpdGggdW5rbm93biBzdGF0dXNcIjtcclxuXHJcbiAgICAvKiogQGNvbnN0YW50ICovXHJcbiAgICBFUlJfUkVRVV9GQUlMRUQgPSBcIlJlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzIHswfSBhbmQgcmVhc29uIHsxfVwiO1xyXG5cclxuICAgIC8qKiBAY29uc3RhbnQgKi9cclxuICAgIFVOS05PV04gPSBcIlVOS05PV05cIjtcclxufSJdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7OztBQWNBOztBQUVBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBckdBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/main/typescript/impl/i18n/Messages.ts\n");
/***/ }),
/***/ "./src/main/typescript/impl/util/Assertions.ts":
/*!*****************************************************!*\
!*** ./src/main/typescript/impl/util/Assertions.ts ***!
\*****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar monadish_1 = __webpack_require__(/*! ../../ext/monadish */ \"./src/main/typescript/ext/monadish/index.ts\");\r\nvar Const_1 = __webpack_require__(/*! ../core/Const */ \"./src/main/typescript/impl/core/Const.ts\");\r\nvar Lang_1 = __webpack_require__(/*! ./Lang */ \"./src/main/typescript/impl/util/Lang.ts\");\r\nvar getMessage = Lang_1.ExtLang.getMessage;\r\nvar makeException = Lang_1.ExtLang.makeException;\r\n/**\r\n * a set of internal code assertions\r\n * which raise an error\r\n *\r\n */\r\nvar Assertions;\r\n(function (Assertions) {\r\n function assertRequestIntegrity(options, elem) {\r\n /*assert if the onerror is set and once if it is set it must be of type function*/\r\n assertFunction(options.getIf(Const_1.Const.ON_ERROR).value);\r\n /*assert if the onevent is set and once if it is set it must be of type function*/\r\n assertFunction(options.getIf(Const_1.Const.ON_EVENT).value);\r\n //improve the error messages if an empty elem is passed\r\n //Assertions.assertElementExists(elem);\r\n assert(elem.isPresent(), getMessage(\"ERR_MUST_BE_PROVIDED1\", \"{0}: source must be provided or exist\", \"source element id\"), \"jsf.ajax.request\", \"ArgNotSet\");\r\n }\r\n Assertions.assertRequestIntegrity = assertRequestIntegrity;\r\n function assertUrlExists(node) {\r\n if (node.attr(Const_1.Const.ATTR_URL).isAbsent()) {\r\n throw Assertions.raiseError(new Error(), getMessage(\"ERR_RED_URL\", null, \"_Ajaxthis.processRedirect\"), \"processRedirect\");\r\n }\r\n }\r\n Assertions.assertUrlExists = assertUrlExists;\r\n /**\r\n * checks the xml for various issues which can occur\r\n * and prevent a proper processing\r\n */\r\n function assertValidXMLResponse(responseXML) {\r\n assert(!responseXML.isAbsent(), Const_1.Const.EMPTY_RESPONSE, Const_1.Const.PHASE_PROCESS_RESPONSE);\r\n assert(!responseXML.isXMLParserError(), responseXML.parserErrorText(\"\"), Const_1.Const.PHASE_PROCESS_RESPONSE);\r\n assert(responseXML.querySelectorAll(Const_1.Const.RESP_PARTIAL).isPresent(), Const_1.Const.ERR_NO_PARTIAL_RESPONSE, Const_1.Const.PHASE_PROCESS_RESPONSE);\r\n }\r\n Assertions.assertValidXMLResponse = assertValidXMLResponse;\r\n /**\r\n * internal helper which raises an error in the\r\n * format we need for further processing\r\n *\r\n * @param message the message\r\n * @param title the title of the error (optional)\r\n * @param name the name of the error (optional)\r\n */\r\n function raiseError(error, message, caller, title, name) {\r\n var finalTitle = (title !== null && title !== void 0 ? title : Const_1.Const.MALFORMEDXML);\r\n var finalName = (name !== null && name !== void 0 ? name : Const_1.Const.MALFORMEDXML);\r\n var finalMessage = (message !== null && message !== void 0 ? message : \"\");\r\n //TODO clean up the messy makeException, this is a perfect case for encapsulation and sane defaults\r\n return makeException(error, finalTitle, finalName, \"Response\", caller || ((arguments.caller) ? arguments.caller.toString() : \"_raiseError\"), finalMessage);\r\n }\r\n Assertions.raiseError = raiseError;\r\n /*\r\n * using the new typescript 3.7 compiler assertion functionality to improve compiler hinting\r\n * we are not fully there yet, but soon\r\n */\r\n function assert(value, msg, caller, title) {\r\n if (msg === void 0) { msg = \"\"; }\r\n if (caller === void 0) { caller = \"\"; }\r\n if (title === void 0) { title = \"Assertion Error\"; }\r\n if (!value) {\r\n throw Assertions.raiseError(new Error(), msg, caller, title);\r\n }\r\n }\r\n Assertions.assert = assert;\r\n function assertType(value, theType, msg, caller, title) {\r\n if (msg === void 0) { msg = \"\"; }\r\n if (caller === void 0) { caller = \"\"; }\r\n if (title === void 0) { title = \"Type Assertion Error\"; }\r\n if ((!!value) && !monadish_1.Lang.assertType(value, theType)) {\r\n throw Assertions.raiseError(new Error(), msg, caller, title);\r\n }\r\n }\r\n Assertions.assertType = assertType;\r\n function assertFunction(value, msg, caller, title) {\r\n if (msg === void 0) { msg = \"\"; }\r\n if (caller === void 0) { caller = \"\"; }\r\n if (title === void 0) { title = \"Assertion Error\"; }\r\n assertType(value, \"function\", msg, caller, title);\r\n }\r\n Assertions.assertFunction = assertFunction;\r\n})(Assertions = exports.Assertions || (exports.Assertions = {}));\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbWFpbi90eXBlc2NyaXB0L2ltcGwvdXRpbC9Bc3NlcnRpb25zLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21haW4vdHlwZXNjcmlwdC9pbXBsL3V0aWwvQXNzZXJ0aW9ucy50cz9mYzQyIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29uZmlnLCBMYW5nLCBYTUxRdWVyeX0gZnJvbSBcIi4uLy4uL2V4dC9tb25hZGlzaFwiO1xyXG5pbXBvcnQge0NvbnN0fSBmcm9tIFwiLi4vY29yZS9Db25zdFwiO1xyXG5cclxuaW1wb3J0IHtEUX0gZnJvbSBcIi4uLy4uL2V4dC9tb25hZGlzaC9Eb21RdWVyeVwiO1xyXG5pbXBvcnQge0V4dExhbmd9IGZyb20gXCIuL0xhbmdcIjtcclxuaW1wb3J0IGdldE1lc3NhZ2UgPSBFeHRMYW5nLmdldE1lc3NhZ2U7XHJcbmltcG9ydCBtYWtlRXhjZXB0aW9uID0gRXh0TGFuZy5tYWtlRXhjZXB0aW9uO1xyXG5cclxuLyoqXHJcbiAqIGEgc2V0IG9mIGludGVybmFsIGNvZGUgYXNzZXJ0aW9uc1xyXG4gKiB3aGljaCByYWlzZSBhbiBlcnJvclxyXG4gKlxyXG4gKi9cclxuZXhwb3J0IG1vZHVsZSBBc3NlcnRpb25zIHtcclxuXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gYXNzZXJ0UmVxdWVzdEludGVncml0eShvcHRpb25zOiBDb25maWcsIGVsZW06IERRKTogdm9pZCB8IG5ldmVyIHtcclxuICAgICAgICAvKmFzc2VydCBpZiB0aGUgb25lcnJvciBpcyBzZXQgYW5kIG9uY2UgaWYgaXQgaXMgc2V0IGl0IG11c3QgYmUgb2YgdHlwZSBmdW5jdGlvbiovXHJcbiAgICAgICAgYXNzZXJ0RnVuY3Rpb24ob3B0aW9ucy5nZXRJZihDb25zdC5PTl9FUlJPUikudmFsdWUpO1xyXG4gICAgICAgIC8qYXNzZXJ0IGlmIHRoZSBvbmV2ZW50IGlzIHNldCBhbmQgb25jZSBpZiBpdCBpcyBzZXQgaXQgbXVzdCBiZSBvZiB0eXBlIGZ1bmN0aW9uKi9cclxuICAgICAgICBhc3NlcnRGdW5jdGlvbihvcHRpb25zLmdldElmKENvbnN0Lk9OX0VWRU5UKS52YWx1ZSk7XHJcbiAgICAgICAgLy9pbXByb3ZlIHRoZSBlcnJvciBtZXNzYWdlcyBpZiBhbiBlbXB0eSBlbGVtIGlzIHBhc3NlZFxyXG4gICAgICAgIC8vQXNzZXJ0aW9ucy5hc3NlcnRFbGVtZW50RXhpc3RzKGVsZW0pO1xyXG4gICAgICAgIGFzc2VydChlbGVtLmlzUHJlc2VudCgpLCBnZXRNZXNzYWdlKFwiRVJSX01VU1RfQkVfUFJPVklERUQxXCIsIFwiezB9OiBzb3VyY2UgIG11c3QgYmUgcHJvdmlkZWQgb3IgZXhpc3RcIiwgXCJzb3VyY2UgZWxlbWVudCBpZFwiKSwgXCJqc2YuYWpheC5yZXF1ZXN0XCIsIFwiQXJnTm90U2V0XCIsICApXHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGFzc2VydFVybEV4aXN0cyhub2RlOiBYTUxRdWVyeSk6IHZvaWQgfCBuZXZlciB7XHJcbiAgICAgICAgaWYgKG5vZGUuYXR0cihDb25zdC5BVFRSX1VSTCkuaXNBYnNlbnQoKSkge1xyXG4gICAgICAgICAgICB0aHJvdyBBc3NlcnRpb25zLnJhaXNlRXJyb3IobmV3IEVycm9yKCksIGdldE1lc3NhZ2UoXCJFUlJfUkVEX1VSTFwiLCBudWxsLCBcIl9BamF4dGhpcy5wcm9jZXNzUmVkaXJlY3RcIiksIFwicHJvY2Vzc1JlZGlyZWN0XCIpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGNoZWNrcyB0aGUgeG1sIGZvciB2YXJpb3VzIGlzc3VlcyB3aGljaCBjYW4gb2NjdXJcclxuICAgICAqIGFuZCBwcmV2ZW50IGEgcHJvcGVyIHByb2Nlc3NpbmdcclxuICAgICAqL1xyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGFzc2VydFZhbGlkWE1MUmVzcG9uc2UocmVzcG9uc2VYTUw6IFhNTFF1ZXJ5KSA6IHZvaWQgfCBuZXZlciAge1xyXG4gICAgICAgIGFzc2VydCghcmVzcG9uc2VYTUwuaXNBYnNlbnQoKSwgQ29uc3QuRU1QVFlfUkVTUE9OU0UsIENvbnN0LlBIQVNFX1BST0NFU1NfUkVTUE9OU0UpO1xyXG4gICAgICAgIGFzc2VydCghcmVzcG9uc2VYTUwuaXNYTUxQYXJzZXJFcnJvcigpLCAgcmVzcG9uc2VYTUwucGFyc2VyRXJyb3JUZXh0KFwiXCIpLCBDb25zdC5QSEFTRV9QUk9DRVNTX1JFU1BPTlNFKTtcclxuICAgICAgICBhc3NlcnQocmVzcG9uc2VYTUwucXVlcnlTZWxlY3RvckFsbChDb25zdC5SRVNQX1BBUlRJQUwpLmlzUHJlc2VudCgpLCBDb25zdC5FUlJfTk9fUEFSVElBTF9SRVNQT05TRSwgQ29uc3QuUEhBU0VfUFJPQ0VTU19SRVNQT05TRSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBpbnRlcm5hbCBoZWxwZXIgd2hpY2ggcmFpc2VzIGFuIGVycm9yIGluIHRoZVxyXG4gICAgICogZm9ybWF0IHdlIG5lZWQgZm9yIGZ1cnRoZXIgcHJvY2Vzc2luZ1xyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBtZXNzYWdlIHRoZSBtZXNzYWdlXHJcbiAgICAgKiBAcGFyYW0gdGl0bGUgdGhlIHRpdGxlIG9mIHRoZSBlcnJvciAob3B0aW9uYWwpXHJcbiAgICAgKiBAcGFyYW0gbmFtZSB0aGUgbmFtZSBvZiB0aGUgZXJyb3IgKG9wdGlvbmFsKVxyXG4gICAgICovXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gcmFpc2VFcnJvcihlcnJvcjogYW55LCBtZXNzYWdlOiBzdHJpbmcsIGNhbGxlciA/OiBzdHJpbmcsIHRpdGxlID86IHN0cmluZywgbmFtZSA/OiBzdHJpbmcpOiBFcnJvciB7XHJcblxyXG4gICAgICAgIGxldCBmaW5hbFRpdGxlID0gdGl0bGUgPz8gQ29uc3QuTUFMRk9STUVEWE1MO1xyXG4gICAgICAgIGxldCBmaW5hbE5hbWUgPSBuYW1lID8/IENvbnN0Lk1BTEZPUk1FRFhNTDtcclxuICAgICAgICBsZXQgZmluYWxNZXNzYWdlID0gbWVzc2FnZSA/PyBcIlwiO1xyXG5cclxuICAgICAgICAvL1RPRE8gY2xlYW4gdXAgdGhlIG1lc3N5IG1ha2VFeGNlcHRpb24sIHRoaXMgaXMgYSBwZXJmZWN0IGNhc2UgZm9yIGVuY2Fwc3VsYXRpb24gYW5kIHNhbmUgZGVmYXVsdHNcclxuICAgICAgICByZXR1cm4gbWFrZUV4Y2VwdGlvbihlcnJvciwgZmluYWxUaXRsZSwgZmluYWxOYW1lLCBcIlJlc3BvbnNlXCIsIGNhbGxlciB8fCAoKCg8YW55PmFyZ3VtZW50cykuY2FsbGVyKSA/ICg8YW55PmFyZ3VtZW50cykuY2FsbGVyLnRvU3RyaW5nKCkgOiBcIl9yYWlzZUVycm9yXCIpLCBmaW5hbE1lc3NhZ2UpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qXHJcbiAgICAgKiB1c2luZyB0aGUgbmV3IHR5cGVzY3JpcHQgMy43IGNvbXBpbGVyIGFzc2VydGlvbiBmdW5jdGlvbmFsaXR5IHRvIGltcHJvdmUgY29tcGlsZXIgaGludGluZ1xyXG4gICAgICogd2UgYXJlIG5vdCBmdWxseSB0aGVyZSB5ZXQsIGJ1dCBzb29uXHJcbiAgICAgKi9cclxuXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gYXNzZXJ0KHZhbHVlOiBhbnksIG1zZyA9IFwiXCIsIGNhbGxlcj1cIlwiLCB0aXRsZT1cIkFzc2VydGlvbiBFcnJvclwiKTogYXNzZXJ0cyB2YWx1ZSB7XHJcbiAgICAgICAgaWYoIXZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRocm93IEFzc2VydGlvbnMucmFpc2VFcnJvcihuZXcgRXJyb3IoKSwgbXNnICxjYWxsZXIsIHRpdGxlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGV4cG9ydCBmdW5jdGlvbiBhc3NlcnRUeXBlKHZhbHVlOiBhbnksIHRoZVR5cGU6IGFueSwgbXNnID0gXCJcIiwgY2FsbGVyPVwiXCIsIHRpdGxlPVwiVHlwZSBBc3NlcnRpb24gRXJyb3JcIik6IGFzc2VydHMgdmFsdWUge1xyXG4gICAgICAgIGlmKCghIXZhbHVlKSAmJiAhTGFuZy5hc3NlcnRUeXBlKHZhbHVlLHRoZVR5cGUpKSB7XHJcbiAgICAgICAgICAgIHRocm93IEFzc2VydGlvbnMucmFpc2VFcnJvcihuZXcgRXJyb3IoKSwgbXNnICxjYWxsZXIsIHRpdGxlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGFzc2VydEZ1bmN0aW9uKHZhbHVlOiBhbnksIG1zZyA9IFwiXCIsIGNhbGxlcj1cIlwiLCB0aXRsZT1cIkFzc2VydGlvbiBFcnJvclwiKTogYXNzZXJ0cyB2YWx1ZSBpcyBGdW5jdGlvbiB7XHJcbiAgICAgICAgYXNzZXJ0VHlwZSh2YWx1ZSwgXCJmdW5jdGlvblwiLCBtc2csIGNhbGxlciwgdGl0bGUpO1xyXG4gICAgfVxyXG59XHJcblxyXG5cclxuIl0sIm1hcHBpbmdzIjoiOztBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFFQTs7OztBQUlBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQVJBO0FBVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBTUE7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBTUE7Ozs7Ozs7QUFPQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBUkE7QUFVQTs7O0FBR0E7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFPQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFNQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFGQTtBQUdBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/main/typescript/impl/util/Assertions.ts\n");
/***/ }),
/***/ "./src/main/typescript/impl/util/AsyncQueue.ts":
/*!*****************************************************!*\
!*** ./src/main/typescript/impl/util/AsyncQueue.ts ***!
\*****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/**\r\n * Asynchronous queue which starts to work\r\n * through the callbacks until the queue is empty\r\n *\r\n * Every callback must be of async runnable\r\n * which is sort of an extended promise which has\r\n * added a decicated cancel and start point\r\n *\r\n * This interface can be used as wrapper contract\r\n * for normal promises if needed.\r\n */\r\nvar AsynchronouseQueue = /** @class */ (function () {\r\n function AsynchronouseQueue() {\r\n this.runnableQueue = [];\r\n }\r\n Object.defineProperty(AsynchronouseQueue.prototype, \"isEmpty\", {\r\n get: function () {\r\n return !this.runnableQueue.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * enequeues an element and starts the\r\n * asynchronous work loop if not already running\r\n *\r\n * @param element the element to be queued and processed\r\n * @param delay possible delay after our usual process or drop if something newer is incoming algorithm\r\n */\r\n AsynchronouseQueue.prototype.enqueue = function (element, delay) {\r\n var _this = this;\r\n if (delay === void 0) { delay = 0; }\r\n if (this.delayTimeout) {\r\n clearTimeout(this.delayTimeout);\r\n this.delayTimeout = null;\r\n }\r\n if (delay) {\r\n this.delayTimeout = setTimeout(function () {\r\n _this.appendElement(element);\r\n });\r\n }\r\n else {\r\n this.appendElement(element);\r\n }\r\n };\r\n AsynchronouseQueue.prototype.dequeue = function () {\r\n return this.runnableQueue.shift();\r\n };\r\n AsynchronouseQueue.prototype.cleanup = function () {\r\n this.currentlyRunning = null;\r\n this.runnableQueue.length = 0;\r\n };\r\n AsynchronouseQueue.prototype.appendElement = function (element) {\r\n //only if the first element is added we start with a trigger\r\n //otherwise a process already is running and not finished yet at that\r\n //time\r\n this.runnableQueue.push(element);\r\n if (!this.currentlyRunning) {\r\n this.runEntry();\r\n }\r\n };\r\n AsynchronouseQueue.prototype.runEntry = function () {\r\n var _this = this;\r\n if (this.isEmpty) {\r\n this.currentlyRunning = null;\r\n return;\r\n }\r\n this.currentlyRunning = this.dequeue();\r\n this.currentlyRunning\r\n .catch(function (e) {\r\n //in case of an error we always clean up the remaining calls\r\n //to allow a clean recovery of the application\r\n _this.cleanup();\r\n throw e;\r\n })\r\n .then(\r\n //the idea is to trigger the next over an event to reduce\r\n //the number of recursive calls (stacks might be limited\r\n //compared to ram)\r\n //naturally give we have a DOM, the DOM is the natural event dispatch system\r\n //which we can use, to decouple the calls from a recursive stack call\r\n //(the browser engine will take care of that)\r\n function () { return _this.callForNextElementToProcess(); }).start();\r\n };\r\n AsynchronouseQueue.prototype.cancel = function () {\r\n try {\r\n if (this.currentlyRunning) {\r\n this.currentlyRunning.cancel();\r\n }\r\n }\r\n finally {\r\n this.cleanup();\r\n }\r\n };\r\n AsynchronouseQueue.prototype.callForNextElementToProcess = function () {\r\n this.runEntry();\r\n };\r\n AsynchronouseQueue.prototype.processNextElement = function () {\r\n this.currentlyRunning = null;\r\n if (!this.isEmpty) {\r\n this.runEntry();\r\n }\r\n };\r\n AsynchronouseQueue.EVT_NEXT = \"__mf_queue_next__\";\r\n return AsynchronouseQueue;\r\n}());\r\nexports.AsynchronouseQueue = AsynchronouseQueue;\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbWFpbi90eXBlc2NyaXB0L2ltcGwvdXRpbC9Bc3luY1F1ZXVlLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21haW4vdHlwZXNjcmlwdC9pbXBsL3V0aWwvQXN5bmNRdWV1ZS50cz84NTBmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXN5bmNSdW5uYWJsZX0gZnJvbSBcIi4vQXN5bmNSdW5uYWJsZVwiO1xyXG5cclxuXHJcbi8qKlxyXG4gKiBBc3luY2hyb25vdXMgcXVldWUgd2hpY2ggc3RhcnRzIHRvIHdvcmtcclxuICogdGhyb3VnaCB0aGUgY2FsbGJhY2tzIHVudGlsIHRoZSBxdWV1ZSBpcyBlbXB0eVxyXG4gKlxyXG4gKiBFdmVyeSBjYWxsYmFjayBtdXN0IGJlIG9mIGFzeW5jIHJ1bm5hYmxlXHJcbiAqIHdoaWNoIGlzIHNvcnQgb2YgYW4gZXh0ZW5kZWQgcHJvbWlzZSB3aGljaCBoYXNcclxuICogYWRkZWQgYSBkZWNpY2F0ZWQgY2FuY2VsIGFuZCBzdGFydCBwb2ludFxyXG4gKlxyXG4gKiBUaGlzIGludGVyZmFjZSBjYW4gYmUgdXNlZCBhcyB3cmFwcGVyIGNvbnRyYWN0XHJcbiAqIGZvciBub3JtYWwgcHJvbWlzZXMgaWYgbmVlZGVkLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEFzeW5jaHJvbm91c2VRdWV1ZTxUIGV4dGVuZHMgQXN5bmNSdW5uYWJsZTxhbnk+PiB7XHJcbiAgICBzdGF0aWMgRVZUX05FWFQgPSBcIl9fbWZfcXVldWVfbmV4dF9fXCI7XHJcblxyXG4gICAgcHJpdmF0ZSBydW5uYWJsZVF1ZXVlID0gW107XHJcbiAgICBwcml2YXRlIGRlbGF5VGltZW91dDogbnVtYmVyO1xyXG5cclxuICAgIGN1cnJlbnRseVJ1bm5pbmc6IEFzeW5jUnVubmFibGU8YW55PjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgaXNFbXB0eSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gIXRoaXMucnVubmFibGVRdWV1ZS5sZW5ndGg7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBlbmVxdWV1ZXMgYW4gZWxlbWVudCBhbmQgc3RhcnRzIHRoZVxyXG4gICAgICogYXN5bmNocm9ub3VzIHdvcmsgbG9vcCBpZiBub3QgYWxyZWFkeSBydW5uaW5nXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGVsZW1lbnQgdGhlIGVsZW1lbnQgdG8gYmUgcXVldWVkIGFuZCBwcm9jZXNzZWRcclxuICAgICAqIEBwYXJhbSBkZWxheSBwb3NzaWJsZSBkZWxheSBhZnRlciBvdXIgdXN1YWwgcHJvY2VzcyBvciBkcm9wIGlmIHNvbWV0aGluZyBuZXdlciBpcyBpbmNvbWluZyBhbGdvcml0aG1cclxuICAgICAqL1xyXG4gICAgZW5xdWV1ZShlbGVtZW50OiBULCBkZWxheSA9IDApIHtcclxuICAgICAgICBpZiAodGhpcy5kZWxheVRpbWVvdXQpIHtcclxuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZGVsYXlUaW1lb3V0KTtcclxuICAgICAgICAgICAgdGhpcy5kZWxheVRpbWVvdXQgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZGVsYXkpIHtcclxuICAgICAgICAgICAgdGhpcy5kZWxheVRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYXBwZW5kRWxlbWVudChlbGVtZW50KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5hcHBlbmRFbGVtZW50KGVsZW1lbnQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBkZXF1ZXVlKCk6IFQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnJ1bm5hYmxlUXVldWUuc2hpZnQoKTtcclxuICAgIH1cclxuXHJcbiAgICBjbGVhbnVwKCkge1xyXG4gICAgICAgIHRoaXMuY3VycmVudGx5UnVubmluZyA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5ydW5uYWJsZVF1ZXVlLmxlbmd0aCA9IDA7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhcHBlbmRFbGVtZW50KGVsZW1lbnQ6IFQpIHtcclxuICAgICAgICAvL29ubHkgaWYgdGhlIGZpcnN0IGVsZW1lbnQgaXMgYWRkZWQgd2Ugc3RhcnQgd2l0aCBhIHRyaWdnZXJcclxuICAgICAgICAvL290aGVyd2lzZSBhIHByb2Nlc3MgYWxyZWFkeSBpcyBydW5uaW5nIGFuZCBub3QgZmluaXNoZWQgeWV0IGF0IHRoYXRcclxuICAgICAgICAvL3RpbWVcclxuICAgICAgICB0aGlzLnJ1bm5hYmxlUXVldWUucHVzaChlbGVtZW50KTtcclxuICAgICAgICBpZiAoIXRoaXMuY3VycmVudGx5UnVubmluZykge1xyXG4gICAgICAgICAgICB0aGlzLnJ1bkVudHJ5KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcnVuRW50cnkoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNFbXB0eSkge1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRseVJ1bm5pbmcgPSBudWxsO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY3VycmVudGx5UnVubmluZyA9IHRoaXMuZGVxdWV1ZSgpO1xyXG4gICAgICAgIHRoaXMuY3VycmVudGx5UnVubmluZ1xyXG4gICAgICAgICAgICAuY2F0Y2goKGUpID0+IHtcclxuICAgICAgICAgICAgICAgIC8vaW4gY2FzZSBvZiBhbiBlcnJvciB3ZSBhbHdheXMgY2xlYW4gdXAgdGhlIHJlbWFpbmluZyBjYWxsc1xyXG4gICAgICAgICAgICAgICAgLy90byBhbGxvdyBhIGNsZWFuIHJlY292ZXJ5IG9mIHRoZSBhcHBsaWNhdGlvblxyXG4gICAgICAgICAgICAgICAgdGhpcy5jbGVhbnVwKCk7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBlO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAudGhlbihcclxuICAgICAgICAgICAgICAgIC8vdGhlIGlkZWEgaXMgdG8gdHJpZ2dlciB0aGUgbmV4dCBvdmVyIGFuIGV2ZW50IHRvIHJlZHVjZVxyXG4gICAgICAgICAgICAgICAgLy90aGUgbnVtYmVyIG9mIHJlY3Vyc2l2ZSBjYWxscyAoc3RhY2tzIG1pZ2h0IGJlIGxpbWl0ZWRcclxuICAgICAgICAgICAgICAgIC8vY29tcGFyZWQgdG8gcmFtKVxyXG4gICAgICAgICAgICAgICAgLy9uYXR1cmFsbHkgZ2l2ZSB3ZSBoYXZlIGEgRE9NLCB0aGUgRE9NIGlzIHRoZSBuYXR1cmFsIGV2ZW50IGRpc3BhdGNoIHN5c3RlbVxyXG4gICAgICAgICAgICAgICAgLy93aGljaCB3ZSBjYW4gdXNlLCB0byBkZWNvdXBsZSB0aGUgY2FsbHMgZnJvbSBhIHJlY3Vyc2l2ZSBzdGFjayBjYWxsXHJcbiAgICAgICAgICAgICAgICAvLyh0aGUgYnJvd3NlciBlbmdpbmUgd2lsbCB0YWtlIGNhcmUgb2YgdGhhdClcclxuICAgICAgICAgICAgICAgICgpID0+IHRoaXMuY2FsbEZvck5leHRFbGVtZW50VG9Qcm9jZXNzKClcclxuICAgICAgICAgICAgKS5zdGFydCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNhbmNlbCgpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50bHlSdW5uaW5nKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRseVJ1bm5pbmcuY2FuY2VsKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICB0aGlzLmNsZWFudXAoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjYWxsRm9yTmV4dEVsZW1lbnRUb1Byb2Nlc3MoKSB7XHJcbiAgICAgICAgdGhpcy5ydW5FbnRyeSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcHJvY2Vzc05leHRFbGVtZW50KCkge1xyXG4gICAgICAgIHRoaXMuY3VycmVudGx5UnVubmluZyA9IG51bGw7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzRW1wdHkpIHtcclxuICAgICAgICAgICAgdGhpcy5ydW5FbnRyeSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbn0iXSwibWFwcGluZ3MiOiI7O0FBR0E7Ozs7Ozs7Ozs7QUFVQTtBQUNBO0FBUUE7QUFMQTtBQU1BO0FBRUE7QUFBQTtBQUNBO0FBQ0E7OztBQUFBO0FBRUE7Ozs7OztBQU1BO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWpHQTtBQW1HQTtBQUFBO0FBcEdBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/main/typescript/impl/util/AsyncQueue.ts\n");
/***/ }),
/***/ "./src/main/typescript/impl/util/ExtDomQuery.ts":
/*!******************************************************!*\
!*** ./src/main/typescript/impl/util/ExtDomQuery.ts ***!
\******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Monad_1 = __webpack_require__(/*! ../../ext/monadish/Monad */ \"./src/main/typescript/ext/monadish/Monad.ts\");\r\nvar Const_1 = __webpack_require__(/*! ../core/Const */ \"./src/main/typescript/impl/core/Const.ts\");\r\nvar DomQuery_1 = __webpack_require__(/*! ../../ext/monadish/DomQuery */ \"./src/main/typescript/ext/monadish/DomQuery.ts\");\r\n/**\r\n * Extension which adds implementation specific\r\n * meta data to our dom qury\r\n *\r\n * Usage\r\n * el = new ExtDQ(oldReference)\r\n * nonce = el.nonce\r\n * windowId = el.getWindowId\r\n */\r\nvar ExtDomquery = /** @class */ (function (_super) {\r\n __extends(ExtDomquery, _super);\r\n function ExtDomquery() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n Object.defineProperty(ExtDomquery, \"windowId\", {\r\n get: function () {\r\n return new ExtDomquery(document.body).windowId;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ExtDomquery, \"nonce\", {\r\n get: function () {\r\n return new ExtDomquery(document.body).nonce;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ExtDomquery.prototype, \"windowId\", {\r\n get: function () {\r\n var fetchWindowIdFromURL = function () {\r\n var href = window.location.href;\r\n var windowId = \"windowId\";\r\n var regex = new RegExp(\"[\\\\?&]\" + windowId + \"=([^&#\\\\;]*)\");\r\n var results = regex.exec(href);\r\n //initial trial over the url and a regexp\r\n if (results != null)\r\n return results[1];\r\n return null;\r\n };\r\n //byId ($)\r\n if (this.value.isPresent()) {\r\n var result = this.querySelectorAll(\"form input[name='\" + Const_1.Const.P_WIN_ID + \"']\");\r\n if (result.length > 0) {\r\n throw Error(\"Multiple different windowIds found in document\");\r\n }\r\n return (result.isPresent()) ? result.getAsElem(0).value.value : fetchWindowIdFromURL();\r\n }\r\n else {\r\n return fetchWindowIdFromURL();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ExtDomquery.prototype, \"nonce\", {\r\n /*\r\n determines the jsfjs nonce and adds them to the namespace\r\n * this is done once and only lazily\r\n */\r\n get: function () {\r\n //already processed\r\n var myfacesConfig = new Monad_1.Config(window.myfaces);\r\n var nonce = myfacesConfig.assign(\"config\", \"cspMeta\", \"nonce\");\r\n if (nonce.value) {\r\n return nonce.value;\r\n }\r\n var curScript = new DomQuery_1.DQ(document.currentScript);\r\n //since our baseline atm is ie11 we cannot use document.currentScript globally\r\n if (curScript.attr(\"nonce\").value != null) {\r\n //fastpath for modern browsers\r\n return curScript.attr(\"nonce\").value;\r\n }\r\n var nonceScript = DomQuery_1.DQ.querySelectorAll(\"script[src], link[src]\").lazyStream\r\n .filter(function (item) { return item.attr(\"nonce\").value != null && item.attr(\"src\") != null; })\r\n .map((function (item) { return !item.attr(\"src\").value.match(/jsf\\.js\\?ln\\=javax\\.faces/gi); }))\r\n .first();\r\n if (nonceScript.isPresent()) {\r\n nonce.value = DomQuery_1.DomQuery.byId(nonceScript.value).attr(\"nonce\").value;\r\n }\r\n return nonce.value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n ExtDomquery.searchJsfJsFor = function (item) {\r\n return new ExtDomquery(document).searchJsfJsFor(item);\r\n };\r\n ExtDomquery.prototype.searchJsfJsFor = function (rexp) {\r\n //perfect application for lazy stream\r\n return DomQuery_1.DQ.querySelectorAll(\"script\").lazyStream\r\n .filter(function (item) {\r\n var _a;\r\n return (_a = item.attr(\"src\").value, (_a !== null && _a !== void 0 ? _a : \"\")).search(/\\/javax\\.faces\\.resource.*\\/jsf\\.js.*separator/) != -1;\r\n }).map(function (item) {\r\n var result = item.attr(\"src\").value.match(rexp);\r\n return decodeURIComponent(result[1]);\r\n }).first();\r\n };\r\n ExtDomquery.prototype.globalEval = function (code, nonce) {\r\n return _super.prototype.globalEval.call(this, code, (nonce !== null && nonce !== void 0 ? nonce : this.nonce));\r\n };\r\n return ExtDomquery;\r\n}(DomQuery_1.DQ));\r\nexports.ExtDomquery = ExtDomquery;\r\nexports.ExtDQ = DomQuery_1.DQ;\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbWFpbi90eXBlc2NyaXB0L2ltcGwvdXRpbC9FeHREb21RdWVyeS50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tYWluL3R5cGVzY3JpcHQvaW1wbC91dGlsL0V4dERvbVF1ZXJ5LnRzP2VlYjciXSwic291cmNlc0NvbnRlbnQiOlsiXHJcbmltcG9ydCB7Q29uZmlnLCBJVmFsdWVIb2xkZXIsIE9wdGlvbmFsfSBmcm9tIFwiLi4vLi4vZXh0L21vbmFkaXNoL01vbmFkXCI7XHJcbmltcG9ydCB7Q29uc3R9IGZyb20gXCIuLi9jb3JlL0NvbnN0XCI7XHJcbmltcG9ydCB7RG9tUXVlcnksIERRfSBmcm9tIFwiLi4vLi4vZXh0L21vbmFkaXNoL0RvbVF1ZXJ5XCI7XHJcblxyXG5kZWNsYXJlIGxldCB3aW5kb3c6IGFueTtcclxuXHJcbi8qKlxyXG4gKiBFeHRlbnNpb24gd2hpY2ggYWRkcyBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpY1xyXG4gKiBtZXRhIGRhdGEgdG8gb3VyIGRvbSBxdXJ5XHJcbiAqXHJcbiAqIFVzYWdlXHJcbiAqIGVsID0gbmV3IEV4dERRKG9sZFJlZmVyZW5jZSlcclxuICogbm9uY2UgPSBlbC5ub25jZVxyXG4gKiB3aW5kb3dJZCA9IGVsLmdldFdpbmRvd0lkXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgRXh0RG9tcXVlcnkgZXh0ZW5kcyBEUSB7XHJcblxyXG4gICAgc3RhdGljIGdldCB3aW5kb3dJZCgpIHtcclxuICAgICAgICByZXR1cm4gbmV3IEV4dERvbXF1ZXJ5KGRvY3VtZW50LmJvZHkpLndpbmRvd0lkO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXQgbm9uY2UoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gbmV3IEV4dERvbXF1ZXJ5KGRvY3VtZW50LmJvZHkpLm5vbmNlO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCB3aW5kb3dJZCgpIHtcclxuXHJcbiAgICAgICAgY29uc3QgZmV0Y2hXaW5kb3dJZEZyb21VUkwgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGxldCBocmVmID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XHJcbiAgICAgICAgICAgIGxldCB3aW5kb3dJZCA9IFwid2luZG93SWRcIjtcclxuICAgICAgICAgICAgbGV0IHJlZ2V4ID0gbmV3IFJlZ0V4cChcIltcXFxcPyZdXCIgKyB3aW5kb3dJZCArIFwiPShbXiYjXFxcXDtdKilcIik7XHJcbiAgICAgICAgICAgIGxldCByZXN1bHRzID0gcmVnZXguZXhlYyhocmVmKTtcclxuICAgICAgICAgICAgLy9pbml0aWFsIHRyaWFsIG92ZXIgdGhlIHVybCBhbmQgYSByZWdleHBcclxuICAgICAgICAgICAgaWYgKHJlc3VsdHMgIT0gbnVsbCkgcmV0dXJuIHJlc3VsdHNbMV07XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIC8vYnlJZCAoJClcclxuICAgICAgICBpZiAodGhpcy52YWx1ZS5pc1ByZXNlbnQoKSkge1xyXG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5xdWVyeVNlbGVjdG9yQWxsKFwiZm9ybSBpbnB1dFtuYW1lPSdcIiArIENvbnN0LlBfV0lOX0lEICsgXCInXVwiKTtcclxuICAgICAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcIk11bHRpcGxlIGRpZmZlcmVudCB3aW5kb3dJZHMgZm91bmQgaW4gZG9jdW1lbnRcIik7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiAocmVzdWx0LmlzUHJlc2VudCgpKSA/ICg8SFRNTElucHV0RWxlbWVudD5yZXN1bHQuZ2V0QXNFbGVtKDApLnZhbHVlKS52YWx1ZSA6IGZldGNoV2luZG93SWRGcm9tVVJMKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZldGNoV2luZG93SWRGcm9tVVJMKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qXHJcbiAgICBkZXRlcm1pbmVzIHRoZSBqc2ZqcyBub25jZSBhbmQgYWRkcyB0aGVtIHRvIHRoZSBuYW1lc3BhY2VcclxuICAgICogdGhpcyBpcyBkb25lIG9uY2UgYW5kIG9ubHkgbGF6aWx5XHJcbiAgICAqL1xyXG4gICAgZ2V0IG5vbmNlKCk6IHN0cmluZyB7XHJcbiAgICAgICAgLy9hbHJlYWR5IHByb2Nlc3NlZFxyXG4gICAgICAgIGxldCBteWZhY2VzQ29uZmlnID0gbmV3IENvbmZpZyh3aW5kb3cubXlmYWNlcyk7XHJcbiAgICAgICAgbGV0IG5vbmNlOiBJVmFsdWVIb2xkZXI8c3RyaW5nPiA9IG15ZmFjZXNDb25maWcuYXNzaWduKFwiY29uZmlnXCIsIFwiY3NwTWV0YVwiLCBcIm5vbmNlXCIpO1xyXG4gICAgICAgIGlmIChub25jZS52YWx1ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gPHN0cmluZz5ub25jZS52YWx1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBjdXJTY3JpcHQgPSBuZXcgRFEoZG9jdW1lbnQuY3VycmVudFNjcmlwdCk7XHJcbiAgICAgICAgLy9zaW5jZSBvdXIgYmFzZWxpbmUgYXRtIGlzIGllMTEgd2UgY2Fubm90IHVzZSBkb2N1bWVudC5jdXJyZW50U2NyaXB0IGdsb2JhbGx5XHJcbiAgICAgICAgaWYgKGN1clNjcmlwdC5hdHRyKFwibm9uY2VcIikudmFsdWUgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAvL2Zhc3RwYXRoIGZvciBtb2Rlcm4gYnJvd3NlcnNcclxuICAgICAgICAgICAgcmV0dXJuIGN1clNjcmlwdC5hdHRyKFwibm9uY2VcIikudmFsdWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgbm9uY2VTY3JpcHQgPSBEUS5xdWVyeVNlbGVjdG9yQWxsKFwic2NyaXB0W3NyY10sIGxpbmtbc3JjXVwiKS5sYXp5U3RyZWFtXHJcbiAgICAgICAgICAgIC5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uYXR0cihcIm5vbmNlXCIpLnZhbHVlICE9IG51bGwgJiYgaXRlbS5hdHRyKFwic3JjXCIpICE9IG51bGwpXHJcbiAgICAgICAgICAgIC5tYXAoKGl0ZW0gPT4gIWl0ZW0uYXR0cihcInNyY1wiKS52YWx1ZS5tYXRjaCgvanNmXFwuanNcXD9sblxcPWphdmF4XFwuZmFjZXMvZ2kpKSlcclxuICAgICAgICAgICAgLmZpcnN0KCk7XHJcblxyXG4gICAgICAgIGlmIChub25jZVNjcmlwdC5pc1ByZXNlbnQoKSkge1xyXG4gICAgICAgICAgICBub25jZS52YWx1ZSA9IERvbVF1ZXJ5LmJ5SWQobm9uY2VTY3JpcHQudmFsdWUpLmF0dHIoXCJub25jZVwiKS52YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIDxzdHJpbmc+bm9uY2UudmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHNlYXJjaEpzZkpzRm9yKGl0ZW06IFJlZ0V4cCk6IE9wdGlvbmFsPFN0cmluZz4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgRXh0RG9tcXVlcnkoZG9jdW1lbnQpLnNlYXJjaEpzZkpzRm9yKGl0ZW0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNlYXJjaEpzZkpzRm9yKHJleHA6IFJlZ0V4cCk6IE9wdGlvbmFsPHN0cmluZz4ge1xyXG4gICAgICAgIC8vcGVyZmVjdCBhcHBsaWNhdGlvbiBmb3IgbGF6eSBzdHJlYW1cclxuICAgICAgICByZXR1cm4gRFEucXVlcnlTZWxlY3RvckFsbChcInNjcmlwdFwiKS5sYXp5U3RyZWFtXHJcbiAgICAgICAgICAgICAgICAuZmlsdGVyKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoaXRlbS5hdHRyKFwic3JjXCIpLnZhbHVlID8/wqBcIlwiKS5zZWFyY2goL1xcL2phdmF4XFwuZmFjZXNcXC5yZXNvdXJjZS4qXFwvanNmXFwuanMuKnNlcGFyYXRvci8pICE9IC0xO1xyXG4gICAgICAgICAgICAgICAgfSkubWFwKChpdGVtOiBEUSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBpdGVtLmF0dHIoXCJzcmNcIikudmFsdWUubWF0Y2gocmV4cCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChyZXN1bHRbMV0pO1xyXG4gICAgICAgICAgICAgICAgfSkuZmlyc3QoKTtcclxuICAgIH1cclxuXHJcbiAgICBnbG9iYWxFdmFsKGNvZGU6IHN0cmluZywgbm9uY2UgPzogc3RyaW5nKTogRFEge1xyXG4gICAgICAgIHJldHVybiBzdXBlci5nbG9iYWxFdmFsKGNvZGUsIG5vbmNlID8/IHRoaXMubm9uY2UpO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgRXh0RFEgPSBEUTsiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUNBO0FBQ0E7QUFDQTtBQUlBOzs7Ozs7OztBQVFBO0FBQ0E7QUFBQTtBQUFBOztBQW1GQTtBQWpGQTtBQUFBO0FBQ0E7QUFDQTs7O0FBQUE7QUFFQTtBQUFBO0FBQ0E7QUFDQTs7O0FBQUE7QUFFQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7OztBQUFBO0FBTUE7QUFKQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBbkZBO0FBcUZBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/main/typescript/impl/util/ExtDomQuery.ts\n");
/***/ }),
/***/ "./src/main/typescript/impl/util/Lang.ts":
/*!***********************************************!*\
!*** ./src/main/typescript/impl/util/Lang.ts ***!
\***********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\r\n/* Licensed to the Apache Software Foundation (ASF) under one or more\r\n * contributor license agreements. See the NOTICE file distributed with\r\n * this work for additional information regarding copyright ownership.\r\n * The ASF licenses this file to you under the Apache License, Version 2.0\r\n * (the \"License\"); you may not use this file except in compliance with\r\n * the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n *\r\n * todo replace singleton with module definition\r\n *\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Lang_1 = __webpack_require__(/*! ../../ext/monadish/Lang */ \"./src/main/typescript/ext/monadish/Lang.ts\");\r\nvar Messages_1 = __webpack_require__(/*! ../i18n/Messages */ \"./src/main/typescript/impl/i18n/Messages.ts\");\r\nvar Promise_1 = __webpack_require__(/*! ../../ext/monadish/Promise */ \"./src/main/typescript/ext/monadish/Promise.ts\");\r\nvar DomQuery_1 = __webpack_require__(/*! ../../ext/monadish/DomQuery */ \"./src/main/typescript/ext/monadish/DomQuery.ts\");\r\nvar monadish_1 = __webpack_require__(/*! ../../ext/monadish */ \"./src/main/typescript/ext/monadish/index.ts\");\r\nvar ExtLang;\r\n(function (ExtLang) {\r\n var installedLocale;\r\n var nameSpace = \"impl/util/Lang/\";\r\n /**\r\n * instead of Polyfills we rely on class\r\n * producers\r\n * @constructor\r\n */\r\n function getPromise() {\r\n return (Promise !== null && Promise !== void 0 ? Promise : Promise_1.CancellablePromise);\r\n }\r\n ExtLang.getPromise = getPromise;\r\n function getLanguage() {\r\n //TODO global config override\r\n var _a, _b, _c;\r\n var language = (_b = (_a = navigator.languages) === null || _a === void 0 ? void 0 : _a[0], (_b !== null && _b !== void 0 ? _b : (_c = navigator) === null || _c === void 0 ? void 0 : _c.language));\r\n language = language.split(\"-\")[0];\r\n return language;\r\n }\r\n ExtLang.getLanguage = getLanguage;\r\n //should be in lang, but for now here to avoid recursive imports, not sure if typescript still has a problem with those\r\n /**\r\n * helper function to savely resolve anything\r\n * this is not an elvis operator, it resolves\r\n * a value without exception in a tree and if\r\n * it is not resolvable then an optional of\r\n * a default value is restored or Optional.empty\r\n * if none is given\r\n *\r\n * usage\r\n * <code>\r\n * let var: Optional<string> = saveResolve(() => a.b.c.d.e, \"foobaz\")\r\n * </code>\r\n *\r\n * @param resolverProducer a lambda which can produce the value\r\n * @param defaultValue an optional default value if the producer failes to produce anything\r\n * @returns an Optional of the produced value\r\n */\r\n function failSaveResolve(resolverProducer, defaultValue) {\r\n if (defaultValue === void 0) { defaultValue = null; }\r\n return Lang_1.Lang.saveResolve(resolverProducer, defaultValue);\r\n }\r\n ExtLang.failSaveResolve = failSaveResolve;\r\n function failSaveExecute(resolverProducer, defaultValue) {\r\n if (defaultValue === void 0) { defaultValue = null; }\r\n Lang_1.Lang.saveResolve(resolverProducer, defaultValue);\r\n }\r\n ExtLang.failSaveExecute = failSaveExecute;\r\n /**\r\n * returns a given localized message upon a given key\r\n * basic java log like templating functionality is included\r\n *\r\n * @param {String} key the key for the message\r\n * @param {String} defaultMessage optional default message if none was found\r\n *\r\n * Additionally you can pass additional arguments, which are used\r\n * in the same way java log templates use the params\r\n *\r\n * @param templateParams the param list to be filled in\r\n */\r\n function getMessage(key, defaultMessage) {\r\n var templateParams = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n templateParams[_i - 2] = arguments[_i];\r\n }\r\n var _a, _b;\r\n installedLocale = (installedLocale !== null && installedLocale !== void 0 ? installedLocale : new Messages_1.Messages());\r\n var msg = (_b = (_a = installedLocale[key], (_a !== null && _a !== void 0 ? _a : defaultMessage)), (_b !== null && _b !== void 0 ? _b : key + \" - undefined message\"));\r\n monadish_1.Stream.of.apply(monadish_1.Stream, templateParams).each(function (param, cnt) {\r\n msg = msg.replace(new RegExp([\"\\\\{\", cnt, \"\\\\}\"].join(\"\"), \"g\"), param);\r\n });\r\n return msg;\r\n }\r\n ExtLang.getMessage = getMessage;\r\n /**\r\n * transforms a key value pair into a string\r\n * @param key the key\r\n * @param val the value\r\n * @param delimiter the delimiter\r\n */\r\n function keyValToStr(key, val, delimiter) {\r\n if (delimiter === void 0) { delimiter = \"\\n\"; }\r\n return [key, val].join(delimiter);\r\n }\r\n ExtLang.keyValToStr = keyValToStr;\r\n /**\r\n * determines the correct event depending\r\n * on the browsers state\r\n *\r\n * @param evt incoming event object (note not all browsers\r\n * have this)\r\n *\r\n * @return an event object no matter what is incoming\r\n */\r\n function getEvent(evt) {\r\n var _a, _b;\r\n return _b = (evt !== null && evt !== void 0 ? evt : (_a = window) === null || _a === void 0 ? void 0 : _a.event), (_b !== null && _b !== void 0 ? _b : {});\r\n }\r\n ExtLang.getEvent = getEvent;\r\n /**\r\n * cross port from the dojo lib\r\n * browser save event resolution\r\n * @param evt the event object\r\n * (with a fallback for ie events if none is present)\r\n */\r\n function getEventTarget(evt) {\r\n var _a, _b, _c, _d, _e;\r\n //ie6 and 7 fallback\r\n evt = getEvent(evt);\r\n /**\r\n * evt source is defined in the jsf events\r\n * seems like some component authors use our code\r\n * so we add it here see also\r\n * https://issues.apache.org/jira/browse/MYFACES-2458\r\n * not entirely a bug but makes sense to add this\r\n * behavior. I dont use it that way but nevertheless it\r\n * does not break anything so why not\r\n * */\r\n var t = (_d = (_b = (_a = evt) === null || _a === void 0 ? void 0 : _a.srcElement, (_b !== null && _b !== void 0 ? _b : (_c = evt) === null || _c === void 0 ? void 0 : _c.target)), (_d !== null && _d !== void 0 ? _d : (_e = evt) === null || _e === void 0 ? void 0 : _e.source));\r\n while ((t) && (t.nodeType != 1)) {\r\n t = t.parentNode;\r\n }\r\n return t;\r\n }\r\n ExtLang.getEventTarget = getEventTarget;\r\n /**\r\n * creates an exeption with additional internal parameters\r\n * for extra information\r\n *\r\n * @param {String} title the exception title\r\n * @param {String} name the exception name\r\n * @param {String} callerCls the caller class\r\n * @param {String} callFunc the caller function\r\n * @param {String} message the message for the exception\r\n */\r\n function makeException(error, title, name, callerCls, callFunc, message) {\r\n var _a;\r\n return new Error((_a = message + ((callerCls !== null && callerCls !== void 0 ? callerCls : nameSpace)) + callFunc, (_a !== null && _a !== void 0 ? _a : (\"\" + arguments.caller.toString()))));\r\n }\r\n ExtLang.makeException = makeException;\r\n /**\r\n * fetches a global config entry\r\n * @param {String} configName the name of the configuration entry\r\n * @param {Object} defaultValue\r\n *\r\n * @return either the config entry or if none is given the default value\r\n */\r\n function getGlobalConfig(configName, defaultValue) {\r\n var _a, _b, _c, _d;\r\n /**\r\n * note we could use exists but this is an heavy operation, since the config name usually\r\n * given this function here is called very often\r\n * is a single entry without . in between we can do the lighter shortcut\r\n */\r\n return _d = (_c = (_b = (_a = window) === null || _a === void 0 ? void 0 : _a.myfaces) === null || _b === void 0 ? void 0 : _b.config) === null || _c === void 0 ? void 0 : _c[configName], (_d !== null && _d !== void 0 ? _d : defaultValue);\r\n }\r\n ExtLang.getGlobalConfig = getGlobalConfig;\r\n /**\r\n * gets the local or global options with local ones having higher priority\r\n * if no local or global one was found then the default value is given back\r\n *\r\n * @param {String} configName the name of the configuration entry\r\n * @param {String} localOptions the local options root for the configuration myfaces as default marker is added implicitely\r\n *\r\n * @param {Object} defaultValue\r\n *\r\n * @return either the config entry or if none is given the default value\r\n */\r\n function getLocalOrGlobalConfig(localOptions, configName, defaultValue) {\r\n var _a, _b, _c, _d, _e, _f, _g, _h;\r\n return _h = (_d = (_c = (_b = (_a = localOptions.value) === null || _a === void 0 ? void 0 : _a.myfaces) === null || _b === void 0 ? void 0 : _b.config) === null || _c === void 0 ? void 0 : _c[configName], (_d !== null && _d !== void 0 ? _d : (_g = (_f = (_e = window) === null || _e === void 0 ? void 0 : _e.myfaces) === null || _f === void 0 ? void 0 : _f.config) === null || _g === void 0 ? void 0 : _g[configName])), (_h !== null && _h !== void 0 ? _h : defaultValue);\r\n }\r\n ExtLang.getLocalOrGlobalConfig = getLocalOrGlobalConfig;\r\n ;\r\n /**\r\n * fetches the form in an unprecise manner depending\r\n * on an element or event target\r\n *\r\n * @param elem\r\n * @param event\r\n */\r\n function getForm(elem, event) {\r\n var FORM = \"form\";\r\n var queryElem = new DomQuery_1.DQ(elem);\r\n var eventTarget = new DomQuery_1.DQ(ExtLang.getEventTarget(event));\r\n if (queryElem.isTag(FORM)) {\r\n return queryElem;\r\n }\r\n //html 5 for handling\r\n if (queryElem.attr(FORM).isPresent()) {\r\n var formId = queryElem.attr(FORM).value;\r\n var foundForm = DomQuery_1.DQ.byId(formId);\r\n if (foundForm.isPresent()) {\r\n return foundForm;\r\n }\r\n }\r\n var form = queryElem.parents(FORM)\r\n .orElseLazy(function () { return queryElem.byTagName(FORM, true); })\r\n .orElseLazy(function () { return eventTarget.parents(FORM); })\r\n .orElseLazy(function () { return eventTarget.byTagName(FORM); })\r\n .first();\r\n assertFormExists(form);\r\n return form;\r\n }\r\n ExtLang.getForm = getForm;\r\n function assertFormExists(form) {\r\n if (form.isAbsent()) {\r\n throw makeException(new Error(), null, null, \"Impl\", \"getForm\", getMessage(\"ERR_FORM\"));\r\n }\r\n }\r\n})(ExtLang = exports.ExtLang || (exports.ExtLang = {}));\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbWFpbi90eXBlc2NyaXB0L2ltcGwvdXRpbC9MYW5nLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21haW4vdHlwZXNjcmlwdC9pbXBsL3V0aWwvTGFuZy50cz8wYWRkIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUgb3IgbW9yZVxyXG4gKiBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlIGRpc3RyaWJ1dGVkIHdpdGhcclxuICogdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLlxyXG4gKiBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZSB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMFxyXG4gKiAodGhlIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoXHJcbiAqIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XHJcbiAqXHJcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbiAqXHJcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcclxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxyXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cclxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxyXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cclxuICpcclxuICogdG9kbyByZXBsYWNlIHNpbmdsZXRvbiB3aXRoIG1vZHVsZSBkZWZpbml0aW9uXHJcbiAqXHJcbiAqL1xyXG5cclxuaW1wb3J0IHtMYW5nIGFzIExhbmdCYXNlfSBmcm9tIFwiLi4vLi4vZXh0L21vbmFkaXNoL0xhbmdcIjtcclxuaW1wb3J0IHtNZXNzYWdlc30gZnJvbSBcIi4uL2kxOG4vTWVzc2FnZXNcIjtcclxuaW1wb3J0IHtDb25maWcsIE9wdGlvbmFsfSBmcm9tIFwiLi4vLi4vZXh0L21vbmFkaXNoL01vbmFkXCI7XHJcbmltcG9ydCB7Q2FuY2VsbGFibGVQcm9taXNlfSBmcm9tIFwiLi4vLi4vZXh0L21vbmFkaXNoL1Byb21pc2VcIjtcclxuaW1wb3J0IHtEb21RdWVyeSwgRFF9IGZyb20gXCIuLi8uLi9leHQvbW9uYWRpc2gvRG9tUXVlcnlcIjtcclxuaW1wb3J0IHtTdHJlYW19IGZyb20gXCIuLi8uLi9leHQvbW9uYWRpc2hcIjtcclxuXHJcblxyXG5leHBvcnQgbW9kdWxlIEV4dExhbmcge1xyXG5cclxuICAgICBsZXQgaW5zdGFsbGVkTG9jYWxlOiBNZXNzYWdlcztcclxuICAgICBsZXQgbmFtZVNwYWNlID0gXCJpbXBsL3V0aWwvTGFuZy9cIjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGluc3RlYWQgb2YgUG9seWZpbGxzIHdlIHJlbHkgb24gY2xhc3NcclxuICAgICAqIHByb2R1Y2Vyc1xyXG4gICAgICogQGNvbnN0cnVjdG9yXHJcbiAgICAgKi9cclxuICAgIGV4cG9ydCBmdW5jdGlvbiBnZXRQcm9taXNlKCk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UgPz8gQ2FuY2VsbGFibGVQcm9taXNlO1xyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBmdW5jdGlvbiBnZXRMYW5ndWFnZSgpOiBzdHJpbmcge1xyXG4gICAgICAgIC8vVE9ETyBnbG9iYWwgY29uZmlnIG92ZXJyaWRlXHJcblxyXG4gICAgICAgIGxldCBsYW5ndWFnZTogc3RyaW5nID0gKDxhbnk+bmF2aWdhdG9yKS5sYW5ndWFnZXM/LlswXSA/PyBuYXZpZ2F0b3I/Lmxhbmd1YWdlO1xyXG4gICAgICAgIGxhbmd1YWdlID0gbGFuZ3VhZ2Uuc3BsaXQoXCItXCIpWzBdO1xyXG4gICAgICAgIHJldHVybiBsYW5ndWFnZTtcclxuICAgIH1cclxuXHJcbiAgICAvL3Nob3VsZCBiZSBpbiBsYW5nLCBidXQgZm9yIG5vdyBoZXJlIHRvIGF2b2lkIHJlY3Vyc2l2ZSBpbXBvcnRzLCBub3Qgc3VyZSBpZiB0eXBlc2NyaXB0IHN0aWxsIGhhcyBhIHByb2JsZW0gd2l0aCB0aG9zZVxyXG4gICAgLyoqXHJcbiAgICAgKiBoZWxwZXIgZnVuY3Rpb24gdG8gc2F2ZWx5IHJlc29sdmUgYW55dGhpbmdcclxuICAgICAqIHRoaXMgaXMgbm90IGFuIGVsdmlzIG9wZXJhdG9yLCBpdCByZXNvbHZlc1xyXG4gICAgICogYSB2YWx1ZSB3aXRob3V0IGV4Y2VwdGlvbiBpbiBhIHRyZWUgYW5kIGlmXHJcbiAgICAgKiBpdCBpcyBub3QgcmVzb2x2YWJsZSB0aGVuIGFuIG9wdGlvbmFsIG9mXHJcbiAgICAgKiBhIGRlZmF1bHQgdmFsdWUgaXMgcmVzdG9yZWQgb3IgT3B0aW9uYWwuZW1wdHlcclxuICAgICAqIGlmIG5vbmUgaXMgZ2l2ZW5cclxuICAgICAqXHJcbiAgICAgKiB1c2FnZVxyXG4gICAgICogPGNvZGU+XHJcbiAgICAgKiAgICAgbGV0IHZhcjogT3B0aW9uYWw8c3RyaW5nPiA9IHNhdmVSZXNvbHZlKCgpID0+IGEuYi5jLmQuZSwgXCJmb29iYXpcIilcclxuICAgICAqIDwvY29kZT5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gcmVzb2x2ZXJQcm9kdWNlciBhIGxhbWJkYSB3aGljaCBjYW4gcHJvZHVjZSB0aGUgdmFsdWVcclxuICAgICAqIEBwYXJhbSBkZWZhdWx0VmFsdWUgYW4gb3B0aW9uYWwgZGVmYXVsdCB2YWx1ZSBpZiB0aGUgcHJvZHVjZXIgZmFpbGVzIHRvIHByb2R1Y2UgYW55dGhpbmdcclxuICAgICAqIEByZXR1cm5zIGFuIE9wdGlvbmFsIG9mIHRoZSBwcm9kdWNlZCB2YWx1ZVxyXG4gICAgICovXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gZmFpbFNhdmVSZXNvbHZlPFQ+KHJlc29sdmVyUHJvZHVjZXI6ICgpID0+IFQsIGRlZmF1bHRWYWx1ZTogVCA9IG51bGwpOiBPcHRpb25hbDxUPiB7XHJcbiAgICAgICAgcmV0dXJuIExhbmdCYXNlLnNhdmVSZXNvbHZlKHJlc29sdmVyUHJvZHVjZXIsIGRlZmF1bHRWYWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGZhaWxTYXZlRXhlY3V0ZTxUPihyZXNvbHZlclByb2R1Y2VyOiAoKSA9PiBhbnksIGRlZmF1bHRWYWx1ZTogVCA9IG51bGwpOiB2b2lkIHtcclxuICAgICAgICBMYW5nQmFzZS5zYXZlUmVzb2x2ZShyZXNvbHZlclByb2R1Y2VyLCBkZWZhdWx0VmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogcmV0dXJucyBhIGdpdmVuIGxvY2FsaXplZCBtZXNzYWdlIHVwb24gYSBnaXZlbiBrZXlcclxuICAgICAqIGJhc2ljIGphdmEgbG9nIGxpa2UgdGVtcGxhdGluZyBmdW5jdGlvbmFsaXR5IGlzIGluY2x1ZGVkXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IGtleSB0aGUga2V5IGZvciB0aGUgbWVzc2FnZVxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IGRlZmF1bHRNZXNzYWdlIG9wdGlvbmFsIGRlZmF1bHQgbWVzc2FnZSBpZiBub25lIHdhcyBmb3VuZFxyXG4gICAgICpcclxuICAgICAqIEFkZGl0aW9uYWxseSB5b3UgY2FuIHBhc3MgYWRkaXRpb25hbCBhcmd1bWVudHMsIHdoaWNoIGFyZSB1c2VkXHJcbiAgICAgKiBpbiB0aGUgc2FtZSB3YXkgamF2YSBsb2cgdGVtcGxhdGVzIHVzZSB0aGUgcGFyYW1zXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHRlbXBsYXRlUGFyYW1zIHRoZSBwYXJhbSBsaXN0IHRvIGJlIGZpbGxlZCBpblxyXG4gICAgICovXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gZ2V0TWVzc2FnZShrZXk6IHN0cmluZywgZGVmYXVsdE1lc3NhZ2U/OiBzdHJpbmcsIC4uLnRlbXBsYXRlUGFyYW1zOiBBcnJheTxzdHJpbmc+KTogc3RyaW5nIHtcclxuICAgICAgICBpbnN0YWxsZWRMb2NhbGUgPSBpbnN0YWxsZWRMb2NhbGUgPz8gbmV3IE1lc3NhZ2VzKCk7XHJcblxyXG4gICAgICAgIGxldCBtc2cgPSBpbnN0YWxsZWRMb2NhbGVba2V5XSA/PyBkZWZhdWx0TWVzc2FnZSA/PyBrZXkgKyBcIiAtIHVuZGVmaW5lZCBtZXNzYWdlXCI7XHJcblxyXG4gICAgICAgIFN0cmVhbS5vZiguLi50ZW1wbGF0ZVBhcmFtcykuZWFjaCgocGFyYW0sIGNudCkgPT4ge1xyXG4gICAgICAgICAgICBtc2cgPSBtc2cucmVwbGFjZShuZXcgUmVnRXhwKFtcIlxcXFx7XCIsIGNudCwgXCJcXFxcfVwiXS5qb2luKFwiXCIpLCBcImdcIiksIHBhcmFtKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIG1zZztcclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogdHJhbnNmb3JtcyBhIGtleSB2YWx1ZSBwYWlyIGludG8gYSBzdHJpbmdcclxuICAgICAqIEBwYXJhbSBrZXkgdGhlIGtleVxyXG4gICAgICogQHBhcmFtIHZhbCB0aGUgdmFsdWVcclxuICAgICAqIEBwYXJhbSBkZWxpbWl0ZXIgdGhlIGRlbGltaXRlclxyXG4gICAgICovXHJcbiAgICBleHBvcnQgZnVuY3Rpb24ga2V5VmFsVG9TdHIoa2V5OiBzdHJpbmcsIHZhbDogc3RyaW5nLCBkZWxpbWl0ZXI6IHN0cmluZyA9IFwiXFxuXCIpIHtcclxuICAgICAgICByZXR1cm4gW2tleSwgdmFsXS5qb2luKGRlbGltaXRlcik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBkZXRlcm1pbmVzIHRoZSBjb3JyZWN0IGV2ZW50IGRlcGVuZGluZ1xyXG4gICAgICogb24gdGhlIGJyb3dzZXJzIHN0YXRlXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGV2dCBpbmNvbWluZyBldmVudCBvYmplY3QgKG5vdGUgbm90IGFsbCBicm93c2Vyc1xyXG4gICAgICogaGF2ZSB0aGlzKVxyXG4gICAgICpcclxuICAgICAqIEByZXR1cm4gYW4gZXZlbnQgb2JqZWN0IG5vIG1hdHRlciB3aGF0IGlzIGluY29taW5nXHJcbiAgICAgKi9cclxuICAgIGV4cG9ydCBmdW5jdGlvbiBnZXRFdmVudChldnQ6IEV2ZW50KTogRXZlbnQge1xyXG4gICAgICAgIHJldHVybiBldnQgPz8gPGFueT53aW5kb3c/LmV2ZW50ID8/IHt9O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogY3Jvc3MgcG9ydCBmcm9tIHRoZSBkb2pvIGxpYlxyXG4gICAgICogYnJvd3NlciBzYXZlIGV2ZW50IHJlc29sdXRpb25cclxuICAgICAqIEBwYXJhbSBldnQgdGhlIGV2ZW50IG9iamVjdFxyXG4gICAgICogKHdpdGggYSBmYWxsYmFjayBmb3IgaWUgZXZlbnRzIGlmIG5vbmUgaXMgcHJlc2VudClcclxuICAgICAqL1xyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGdldEV2ZW50VGFyZ2V0KGV2dDogRXZlbnQpOiBFbGVtZW50IHtcclxuICAgICAgICAvL2llNiBhbmQgNyBmYWxsYmFja1xyXG4gICAgICAgIGV2dCA9IGdldEV2ZW50KGV2dCk7XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogZXZ0IHNvdXJjZSBpcyBkZWZpbmVkIGluIHRoZSBqc2YgZXZlbnRzXHJcbiAgICAgICAgICogc2VlbXMgbGlrZSBzb21lIGNvbXBvbmVudCBhdXRob3JzIHVzZSBvdXIgY29kZVxyXG4gICAgICAgICAqIHNvIHdlIGFkZCBpdCBoZXJlIHNlZSBhbHNvXHJcbiAgICAgICAgICogaHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9NWUZBQ0VTLTI0NThcclxuICAgICAgICAgKiBub3QgZW50aXJlbHkgYSBidWcgYnV0IG1ha2VzIHNlbnNlIHRvIGFkZCB0aGlzXHJcbiAgICAgICAgICogYmVoYXZpb3IuIEkgZG9udCB1c2UgaXQgdGhhdCB3YXkgYnV0IG5ldmVydGhlbGVzcyBpdFxyXG4gICAgICAgICAqIGRvZXMgbm90IGJyZWFrIGFueXRoaW5nIHNvIHdoeSBub3RcclxuICAgICAgICAgKiAqL1xyXG4gICAgICAgIGxldCB0ID0gZXZ0Py5zcmNFbGVtZW50ID8/IGV2dD8udGFyZ2V0ID8/ICg8YW55PmV2dCk/LnNvdXJjZTtcclxuICAgICAgICB3aGlsZSAoKHQpICYmICh0Lm5vZGVUeXBlICE9IDEpKSB7XHJcbiAgICAgICAgICAgIHQgPSB0LnBhcmVudE5vZGU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogY3JlYXRlcyBhbiBleGVwdGlvbiB3aXRoIGFkZGl0aW9uYWwgaW50ZXJuYWwgcGFyYW1ldGVyc1xyXG4gICAgICogZm9yIGV4dHJhIGluZm9ybWF0aW9uXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHRpdGxlIHRoZSBleGNlcHRpb24gdGl0bGVcclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lICB0aGUgZXhjZXB0aW9uIG5hbWVcclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBjYWxsZXJDbHMgdGhlIGNhbGxlciBjbGFzc1xyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IGNhbGxGdW5jIHRoZSBjYWxsZXIgZnVuY3Rpb25cclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBtZXNzYWdlIHRoZSBtZXNzYWdlIGZvciB0aGUgZXhjZXB0aW9uXHJcbiAgICAgKi9cclxuICAgIGV4cG9ydCBmdW5jdGlvbiBtYWtlRXhjZXB0aW9uKGVycm9yOiBFcnJvciwgdGl0bGU6IHN0cmluZywgbmFtZTogc3RyaW5nLCBjYWxsZXJDbHM6IHN0cmluZywgY2FsbEZ1bmM6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nKTogRXJyb3Ige1xyXG5cclxuICAgICAgICByZXR1cm4gbmV3IEVycm9yKG1lc3NhZ2UgKyAoY2FsbGVyQ2xzID8/IG5hbWVTcGFjZSkgKyBjYWxsRnVuYyA/PyAoXCJcIiArICg8YW55PmFyZ3VtZW50cykuY2FsbGVyLnRvU3RyaW5nKCkpKTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBmZXRjaGVzIGEgZ2xvYmFsIGNvbmZpZyBlbnRyeVxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IGNvbmZpZ05hbWUgdGhlIG5hbWUgb2YgdGhlIGNvbmZpZ3VyYXRpb24gZW50cnlcclxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBkZWZhdWx0VmFsdWVcclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJuIGVpdGhlciB0aGUgY29uZmlnIGVudHJ5IG9yIGlmIG5vbmUgaXMgZ2l2ZW4gdGhlIGRlZmF1bHQgdmFsdWVcclxuICAgICAqL1xyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGdldEdsb2JhbENvbmZpZyhjb25maWdOYW1lOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZTogYW55KTogYW55IHtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBub3RlIHdlIGNvdWxkIHVzZSBleGlzdHMgYnV0IHRoaXMgaXMgYW4gaGVhdnkgb3BlcmF0aW9uLCBzaW5jZSB0aGUgY29uZmlnIG5hbWUgdXN1YWxseVxyXG4gICAgICAgICAqIGdpdmVuIHRoaXMgZnVuY3Rpb24gaGVyZSBpcyBjYWxsZWQgdmVyeSBvZnRlblxyXG4gICAgICAgICAqIGlzIGEgc2luZ2xlIGVudHJ5IHdpdGhvdXQgLiBpbiBiZXR3ZWVuIHdlIGNhbiBkbyB0aGUgbGlnaHRlciBzaG9ydGN1dFxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHJldHVybiAoPGFueT53aW5kb3cpPy5teWZhY2VzPy5jb25maWc/Lltjb25maWdOYW1lXSA/PyBkZWZhdWx0VmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBnZXRzIHRoZSBsb2NhbCBvciBnbG9iYWwgb3B0aW9ucyB3aXRoIGxvY2FsIG9uZXMgaGF2aW5nIGhpZ2hlciBwcmlvcml0eVxyXG4gICAgICogaWYgbm8gbG9jYWwgb3IgZ2xvYmFsIG9uZSB3YXMgZm91bmQgdGhlbiB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBnaXZlbiBiYWNrXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IGNvbmZpZ05hbWUgdGhlIG5hbWUgb2YgdGhlIGNvbmZpZ3VyYXRpb24gZW50cnlcclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBsb2NhbE9wdGlvbnMgdGhlIGxvY2FsIG9wdGlvbnMgcm9vdCBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gbXlmYWNlcyBhcyBkZWZhdWx0IG1hcmtlciBpcyBhZGRlZCBpbXBsaWNpdGVseVxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBkZWZhdWx0VmFsdWVcclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJuIGVpdGhlciB0aGUgY29uZmlnIGVudHJ5IG9yIGlmIG5vbmUgaXMgZ2l2ZW4gdGhlIGRlZmF1bHQgdmFsdWVcclxuICAgICAqL1xyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGdldExvY2FsT3JHbG9iYWxDb25maWcobG9jYWxPcHRpb25zOiBDb25maWcsIGNvbmZpZ05hbWU6IHN0cmluZywgZGVmYXVsdFZhbHVlOiBhbnkpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiBsb2NhbE9wdGlvbnMudmFsdWU/Lm15ZmFjZXM/LmNvbmZpZz8uW2NvbmZpZ05hbWVdID8/XHJcbiAgICAgICAgICAgICg8YW55PndpbmRvdyk/Lm15ZmFjZXM/LmNvbmZpZz8uW2NvbmZpZ05hbWVdID8/XHJcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogZmV0Y2hlcyB0aGUgZm9ybSBpbiBhbiB1bnByZWNpc2UgbWFubmVyIGRlcGVuZGluZ1xyXG4gICAgICogb24gYW4gZWxlbWVudCBvciBldmVudCB0YXJnZXRcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gZWxlbVxyXG4gICAgICogQHBhcmFtIGV2ZW50XHJcbiAgICAgKi9cclxuICAgIGV4cG9ydCBmdW5jdGlvbiBnZXRGb3JtKGVsZW06IEVsZW1lbnQsIGV2ZW50ID86IEV2ZW50KTogRFEgfCBuZXZlciB7XHJcblxyXG4gICAgICAgIGNvbnN0IEZPUk0gPSBcImZvcm1cIjtcclxuXHJcbiAgICAgICAgbGV0IHF1ZXJ5RWxlbSA9IG5ldyBEUShlbGVtKTtcclxuICAgICAgICBsZXQgZXZlbnRUYXJnZXQgPSBuZXcgRFEoRXh0TGFuZy5nZXRFdmVudFRhcmdldChldmVudCkpO1xyXG5cclxuICAgICAgICBpZiAocXVlcnlFbGVtLmlzVGFnKEZPUk0pKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBxdWVyeUVsZW07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvL2h0bWwgNSBmb3IgaGFuZGxpbmdcclxuICAgICAgICBpZiAocXVlcnlFbGVtLmF0dHIoRk9STSkuaXNQcmVzZW50KCkpIHtcclxuICAgICAgICAgICAgbGV0IGZvcm1JZCA9IHF1ZXJ5RWxlbS5hdHRyKEZPUk0pLnZhbHVlO1xyXG4gICAgICAgICAgICBsZXQgZm91bmRGb3JtID0gRFEuYnlJZChmb3JtSWQpO1xyXG4gICAgICAgICAgICBpZiAoZm91bmRGb3JtLmlzUHJlc2VudCgpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZm91bmRGb3JtO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgZm9ybSA9IHF1ZXJ5RWxlbS5wYXJlbnRzKEZPUk0pXHJcbiAgICAgICAgICAgIC5vckVsc2VMYXp5KCgpID0+IHF1ZXJ5RWxlbS5ieVRhZ05hbWUoRk9STSwgdHJ1ZSkpXHJcbiAgICAgICAgICAgIC5vckVsc2VMYXp5KCgpID0+IGV2ZW50VGFyZ2V0LnBhcmVudHMoRk9STSkpXHJcbiAgICAgICAgICAgIC5vckVsc2VMYXp5KCgpID0+IGV2ZW50VGFyZ2V0LmJ5VGFnTmFtZShGT1JNKSlcclxuICAgICAgICAgICAgLmZpcnN0KCk7XHJcblxyXG4gICAgICAgIGFzc2VydEZvcm1FeGlzdHMoZm9ybSk7XHJcblxyXG4gICAgICAgIHJldHVybiBmb3JtO1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIGFzc2VydEZvcm1FeGlzdHMoZm9ybTogRG9tUXVlcnkpOiB2b2lkIHwgbmV2ZXIge1xyXG4gICAgICAgIGlmIChmb3JtLmlzQWJzZW50KCkpIHtcclxuICAgICAgICAgICAgdGhyb3cgbWFrZUV4Y2VwdGlvbihuZXcgRXJyb3IoKSwgbnVsbCwgbnVsbCwgXCJJbXBsXCIsIFwiZ2V0Rm9ybVwiLCBnZXRNZXNzYWdlKFwiRVJSX0ZPUk1cIikpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbn0iXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQkE7O0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUdBO0FBQUE7QUFFQTtBQUNBO0FBRUE7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQU5BO0FBUUE7QUFDQTs7Ozs7Ozs7Ozs7Ozs7OztBQWdCQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRkE7QUFJQTtBQUFBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7Ozs7Ozs7Ozs7O0FBV0E7QUFDQTtBQUFBO0FBQUE7QUFBQTs7O0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFWQTtBQWNBOzs7OztBQUtBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFGQTtBQUlBOzs7Ozs7OztBQVFBO0FBQ0E7O0FBQ0E7QUFDQTtBQUZBO0FBSUE7Ozs7O0FBS0E7QUFDQTs7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7O0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFqQkE7QUFtQkE7Ozs7Ozs7OztBQVNBO0FBQ0E7O0FBRUE7QUFFQTtBQUpBO0FBTUE7Ozs7OztBQU1BO0FBQ0E7O0FBQ0E7Ozs7QUFJQTtBQUNBO0FBQ0E7QUFQQTtBQVNBOzs7Ozs7Ozs7O0FBVUE7QUFDQTs7QUFDQTtBQUdBO0FBSkE7QUFJQTtBQUdBOzs7Ozs7QUFNQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUE3QkE7QUErQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/main/typescript/impl/util/Lang.ts\n");
/***/ }),
/***/ "./src/main/typescript/impl/xhrCore/ErrorData.ts":
/*!*******************************************************!*\
!*** ./src/main/typescript/impl/xhrCore/ErrorData.ts ***!
\*******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Const_1 = __webpack_require__(/*! ../core/Const */ \"./src/main/typescript/impl/core/Const.ts\");\r\nvar EventData_1 = __webpack_require__(/*! ./EventData */ \"./src/main/typescript/impl/xhrCore/EventData.ts\");\r\nvar Lang_1 = __webpack_require__(/*! ../util/Lang */ \"./src/main/typescript/impl/util/Lang.ts\");\r\nvar getMessage = Lang_1.ExtLang.getMessage;\r\nvar SOURCE = Const_1.Const.SOURCE;\r\nvar ERROR_NAME = Const_1.Const.ERROR_NAME;\r\nvar ERROR_MESSAGE = Const_1.Const.ERROR_MESSAGE;\r\nvar STATUS = Const_1.Const.STATUS;\r\nvar RESPONSE_TEXT = Const_1.Const.RESPONSE_TEXT;\r\nvar RESPONSE_XML = Const_1.Const.RESPONSE_XML;\r\nvar ErrorType;\r\n(function (ErrorType) {\r\n ErrorType[\"SERVER_ERROR\"] = \"serverError\";\r\n ErrorType[\"HTTP_ERROR\"] = \"httpError\";\r\n ErrorType[\"CLIENT_ERROR\"] = \"clientErrror\";\r\n ErrorType[\"TIMEOUT\"] = \"timeout\";\r\n})(ErrorType = exports.ErrorType || (exports.ErrorType = {}));\r\n/**\r\n * the spec has a problem of having the error\r\n * object somewhat underspecified, there is no clear\r\n * description of the required contents.\r\n * I want to streamline it with mojarra here\r\n * hence we are going to move\r\n * everything into the same attributes,\r\n * I will add deprecated myfaces backwards compatibility attributes as well\r\n */\r\nvar ErrorData = /** @class */ (function (_super) {\r\n __extends(ErrorData, _super);\r\n function ErrorData(source, errorName, errorMessage, responseText, responseXML, responseCode, status, type) {\r\n if (responseText === void 0) { responseText = null; }\r\n if (responseXML === void 0) { responseXML = null; }\r\n if (responseCode === void 0) { responseCode = \"200\"; }\r\n if (status === void 0) { status = \"UNKNOWN\"; }\r\n if (type === void 0) { type = ErrorType.CLIENT_ERROR; }\r\n var _this = _super.call(this) || this;\r\n _this.type = \"error\";\r\n _this.source = source;\r\n _this.type = \"error\";\r\n _this.errorName = errorName;\r\n _this.message = _this.errorMessage = errorMessage;\r\n _this.responseCode = responseCode;\r\n _this.responseText = responseText;\r\n _this.status = status;\r\n _this.typeDetails = type;\r\n if (type == ErrorType.SERVER_ERROR) {\r\n _this.serverErrorName = _this.errorName;\r\n _this.serverErrorMessage = _this.errorMessage;\r\n }\r\n return _this;\r\n }\r\n ErrorData.fromClient = function (e) {\r\n return new ErrorData(\"client\", e.name, e.message, e.stack);\r\n };\r\n ErrorData.fromHttpConnection = function (source, name, message, responseText, responseCode) {\r\n return new ErrorData(source, name, message, responseText, responseCode, null, \"UNKNOWN\", ErrorType.HTTP_ERROR);\r\n };\r\n ErrorData.fromGeneric = function (context, errorCode, errorType) {\r\n var UNKNOWN = \"UNKNOWN\";\r\n var getMsg = this.getMsg;\r\n var source = getMsg(context, SOURCE);\r\n var errorName = getMsg(context, ERROR_NAME);\r\n var errorMessage = getMsg(context, ERROR_MESSAGE);\r\n var status = getMsg(context, STATUS);\r\n var responseText = getMsg(context, RESPONSE_TEXT);\r\n var responseXML = getMsg(context, RESPONSE_XML);\r\n return new ErrorData(source, name, errorMessage, responseText, responseXML, errorCode + \"\", status, ErrorType.SERVER_ERROR);\r\n };\r\n ErrorData.getMsg = function (context, param) {\r\n var UNKNOWN = \"UNKNOWN\";\r\n return getMessage(context.getIf(param).orElse(UNKNOWN).value);\r\n };\r\n ErrorData.fromServerError = function (context) {\r\n return this.fromGeneric(context, -1, ErrorType.SERVER_ERROR);\r\n };\r\n return ErrorData;\r\n}(EventData_1.EventData));\r\nexports.ErrorData = ErrorData;\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbWFpbi90eXBlc2NyaXB0L2ltcGwveGhyQ29yZS9FcnJvckRhdGEudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbWFpbi90eXBlc2NyaXB0L2ltcGwveGhyQ29yZS9FcnJvckRhdGEudHM/NTNjYiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbnN0fSBmcm9tIFwiLi4vY29yZS9Db25zdFwiO1xyXG5pbXBvcnQge0NvbmZpZ30gZnJvbSBcIi4uLy4uL2V4dC9tb25hZGlzaFwiO1xyXG5cclxuaW1wb3J0IHtFdmVudERhdGF9IGZyb20gXCIuL0V2ZW50RGF0YVwiO1xyXG5pbXBvcnQge0V4dExhbmd9IGZyb20gXCIuLi91dGlsL0xhbmdcIjtcclxuaW1wb3J0IGdldE1lc3NhZ2UgPSBFeHRMYW5nLmdldE1lc3NhZ2U7XHJcbmltcG9ydCBTT1VSQ0UgPSBDb25zdC5TT1VSQ0U7XHJcbmltcG9ydCBFUlJPUl9OQU1FID0gQ29uc3QuRVJST1JfTkFNRTtcclxuaW1wb3J0IEVSUk9SX01FU1NBR0UgPSBDb25zdC5FUlJPUl9NRVNTQUdFO1xyXG5pbXBvcnQgU1RBVFVTID0gQ29uc3QuU1RBVFVTO1xyXG5pbXBvcnQgUkVTUE9OU0VfVEVYVCA9IENvbnN0LlJFU1BPTlNFX1RFWFQ7XHJcbmltcG9ydCBSRVNQT05TRV9YTUwgPSBDb25zdC5SRVNQT05TRV9YTUw7XHJcblxyXG5cclxuZXhwb3J0IGVudW0gRXJyb3JUeXBlIHtcclxuICAgIFNFUlZFUl9FUlJPUiA9IFwic2VydmVyRXJyb3JcIixcclxuICAgIEhUVFBfRVJST1IgPSBcImh0dHBFcnJvclwiLFxyXG4gICAgQ0xJRU5UX0VSUk9SID0gXCJjbGllbnRFcnJyb3JcIixcclxuICAgIFRJTUVPVVQgPSBcInRpbWVvdXRcIlxyXG59XHJcblxyXG4vKipcclxuICogdGhlIHNwZWMgaGFzIGEgcHJvYmxlbSBvZiBoYXZpbmcgdGhlIGVycm9yXHJcbiAqIG9iamVjdCBzb21ld2hhdCB1bmRlcnNwZWNpZmllZCwgdGhlcmUgaXMgbm8gY2xlYXJcclxuICogZGVzY3JpcHRpb24gb2YgdGhlIHJlcXVpcmVkIGNvbnRlbnRzLlxyXG4gKiBJIHdhbnQgdG8gc3RyZWFtbGluZSBpdCB3aXRoIG1vamFycmEgaGVyZVxyXG4gKiBoZW5jZSB3ZSBhcmUgZ29pbmcgdG8gbW92ZVxyXG4gKiBldmVyeXRoaW5nIGludG8gdGhlIHNhbWUgYXR0cmlidXRlcyxcclxuICogSSB3aWxsIGFkZCBkZXByZWNhdGVkIG15ZmFjZXMgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgYXR0cmlidXRlcyBhcyB3ZWxsXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgRXJyb3JEYXRhIGV4dGVuZHMgRXZlbnREYXRhIHtcclxuXHJcbiAgICB0eXBlOiBzdHJpbmcgPSBcImVycm9yXCI7XHJcbiAgICBzb3VyY2U6IHN0cmluZztcclxuICAgIGVycm9yTmFtZTogc3RyaW5nO1xyXG4gICAgZXJyb3JNZXNzYWdlOiBzdHJpbmc7XHJcblxyXG4gICAgcmVzcG9uc2VUZXh0OiBzdHJpbmc7XHJcbiAgICByZXNwb25zZVhNTDogYW55O1xyXG5cclxuICAgIHN0YXR1czogc3RyaW5nO1xyXG4gICAgdHlwZURldGFpbHM6IEVycm9yVHlwZTtcclxuXHJcbiAgICAvL1RPRE8gYmFja3dhcmRzIGNvbXBhdGlibGUgYXR0cmlidXRlc1xyXG4gICAgc2VydmVyRXJyb3JOYW1lOiBzdHJpbmc7XHJcbiAgICBzZXJ2ZXJFcnJvck1lc3NhZ2U6IHN0cmluZztcclxuICAgIG1lc3NhZ2U6IHN0cmluZztcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihzb3VyY2U6IHN0cmluZywgZXJyb3JOYW1lOiBzdHJpbmcsIGVycm9yTWVzc2FnZTogc3RyaW5nLCByZXNwb25zZVRleHQ6IHN0cmluZyA9IG51bGwsIHJlc3BvbnNlWE1MOiBhbnkgPSBudWxsLCByZXNwb25zZUNvZGU6IHN0cmluZyA9IFwiMjAwXCIsIHN0YXR1czogc3RyaW5nID0gXCJVTktOT1dOXCIsIHR5cGUgPSBFcnJvclR5cGUuQ0xJRU5UX0VSUk9SKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICB0aGlzLnNvdXJjZSA9IHNvdXJjZTtcclxuICAgICAgICB0aGlzLnR5cGUgPSBcImVycm9yXCI7XHJcbiAgICAgICAgdGhpcy5lcnJvck5hbWUgPSBlcnJvck5hbWU7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlID0gdGhpcy5lcnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2U7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zZUNvZGUgPSByZXNwb25zZUNvZGU7XHJcbiAgICAgICAgdGhpcy5yZXNwb25zZVRleHQgPSByZXNwb25zZVRleHQ7XHJcbiAgICAgICAgdGhpcy5zdGF0dXMgPSBzdGF0dXM7XHJcbiAgICAgICAgdGhpcy50eXBlRGV0YWlscyA9IHR5cGU7XHJcblxyXG4gICAgICAgIGlmICh0eXBlID09IEVycm9yVHlwZS5TRVJWRVJfRVJST1IpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXJ2ZXJFcnJvck5hbWUgPSB0aGlzLmVycm9yTmFtZTtcclxuICAgICAgICAgICAgdGhpcy5zZXJ2ZXJFcnJvck1lc3NhZ2UgPSB0aGlzLmVycm9yTWVzc2FnZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIGZyb21DbGllbnQoZTogRXJyb3IpOiBFcnJvckRhdGEge1xyXG4gICAgICAgIHJldHVybiBuZXcgRXJyb3JEYXRhKFwiY2xpZW50XCIsIGUubmFtZSwgZS5tZXNzYWdlLCBlLnN0YWNrKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZnJvbUh0dHBDb25uZWN0aW9uKHNvdXJjZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZywgcmVzcG9uc2VUZXh0LCByZXNwb25zZUNvZGU6IG51bWJlcik6IEVycm9yRGF0YSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBFcnJvckRhdGEoc291cmNlLCBuYW1lLCBtZXNzYWdlLCByZXNwb25zZVRleHQsIHJlc3BvbnNlQ29kZSwgbnVsbCwgXCJVTktOT1dOXCIsIEVycm9yVHlwZS5IVFRQX0VSUk9SKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZnJvbUdlbmVyaWMoY29udGV4dDogQ29uZmlnLCBlcnJvckNvZGU6IG51bWJlciwgZXJyb3JUeXBlOiBTdHJpbmcpOiBFcnJvckRhdGEge1xyXG5cclxuICAgICAgICBsZXQgVU5LTk9XTiA9IFwiVU5LTk9XTlwiO1xyXG4gICAgICAgIGxldCBnZXRNc2cgPSB0aGlzLmdldE1zZztcclxuXHJcbiAgICAgICAgbGV0IHNvdXJjZSA9ICBnZXRNc2coY29udGV4dCxTT1VSQ0UpO1xyXG4gICAgICAgIGxldCBlcnJvck5hbWUgPSAgZ2V0TXNnKGNvbnRleHQsRVJST1JfTkFNRSk7XHJcbiAgICAgICAgbGV0IGVycm9yTWVzc2FnZSA9ICBnZXRNc2coY29udGV4dCwgRVJST1JfTUVTU0FHRSk7XHJcbiAgICAgICAgbGV0IHN0YXR1cyA9ICBnZXRNc2coY29udGV4dCxTVEFUVVMpO1xyXG4gICAgICAgIGxldCByZXNwb25zZVRleHQgPSAgZ2V0TXNnKGNvbnRleHQsUkVTUE9OU0VfVEVYVCk7XHJcbiAgICAgICAgbGV0IHJlc3BvbnNlWE1MID0gIGdldE1zZyhjb250ZXh0LFJFU1BPTlNFX1hNTCk7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBFcnJvckRhdGEoc291cmNlLCBuYW1lLCBlcnJvck1lc3NhZ2UsIHJlc3BvbnNlVGV4dCwgcmVzcG9uc2VYTUwsIGVycm9yQ29kZStcIlwiLCBzdGF0dXMsIEVycm9yVHlwZS5TRVJWRVJfRVJST1IpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3RhdGljIGdldE1zZyhjb250ZXh0LCBwYXJhbSkge1xyXG4gICAgICAgIGxldCBVTktOT1dOID0gXCJVTktOT1dOXCI7XHJcbiAgICAgICAgcmV0dXJuIGdldE1lc3NhZ2UoY29udGV4dC5nZXRJZihwYXJhbSkub3JFbHNlKFVOS05PV04pLnZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZnJvbVNlcnZlckVycm9yKGNvbnRleHQ6IENvbmZpZyk6IEVycm9yRGF0YSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZnJvbUdlbmVyaWMoY29udGV4dCwgLTEsIEVycm9yVHlwZS5TRVJWRVJfRVJST1IpO1xyXG4gICAgfVxyXG5cclxufSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7Ozs7OztBQVFBO0FBQ0E7QUFBQTtBQWtCQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWhCQTtBQWtCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBbEVBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/main/typescript/impl/xhrCore/ErrorData.ts\n");
/***/ }),
/***/ "./src/main/typescript/impl/xhrCore/EventData.ts":
/*!*******************************************************!*\
!*** ./src/main/typescript/impl/xhrCore/EventData.ts ***!
\*******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar monadish_1 = __webpack_require__(/*! ../../ext/monadish */ \"./src/main/typescript/ext/monadish/index.ts\");\r\nvar Const_1 = __webpack_require__(/*! ../core/Const */ \"./src/main/typescript/impl/core/Const.ts\");\r\nvar Lang_1 = __webpack_require__(/*! ../util/Lang */ \"./src/main/typescript/impl/util/Lang.ts\");\r\nvar getMessage = Lang_1.ExtLang.getMessage;\r\nvar EVENT = Const_1.Const.EVENT;\r\nvar P_PARTIAL_SOURCE = Const_1.Const.P_PARTIAL_SOURCE;\r\nvar BEGIN = Const_1.Const.BEGIN;\r\nvar CTX_PARAM_PASS_THR = Const_1.Const.CTX_PARAM_PASS_THR;\r\nvar SOURCE = Const_1.Const.SOURCE;\r\nvar EventData = /** @class */ (function () {\r\n function EventData() {\r\n }\r\n EventData.createFromRequest = function (request, context, /*event name*/ name) {\r\n var _a, _b, _c, _d;\r\n var eventData = new EventData();\r\n var UNKNOWN = getMessage(\"UNKNOWN\");\r\n eventData.type = EVENT;\r\n eventData.status = name;\r\n var sourceId = context.getIf(SOURCE)\r\n .orElse(context.getIf(P_PARTIAL_SOURCE).value)\r\n .orElse(context.getIf(CTX_PARAM_PASS_THR, P_PARTIAL_SOURCE).value).value;\r\n if (sourceId) {\r\n eventData.source = monadish_1.DQ.byId(sourceId).first().value.value;\r\n }\r\n if (name !== BEGIN) {\r\n eventData.responseCode = (_b = (_a = request) === null || _a === void 0 ? void 0 : _a.status) === null || _b === void 0 ? void 0 : _b.toString();\r\n eventData.responseText = (_c = request) === null || _c === void 0 ? void 0 : _c.responseText;\r\n eventData.responseXML = (_d = request) === null || _d === void 0 ? void 0 : _d.responseXML;\r\n }\r\n return eventData;\r\n };\r\n return EventData;\r\n}());\r\nexports.EventData = EventData;\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbWFpbi90eXBlc2NyaXB0L2ltcGwveGhyQ29yZS9FdmVudERhdGEudHMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvbWFpbi90eXBlc2NyaXB0L2ltcGwveGhyQ29yZS9FdmVudERhdGEudHM/MzNjMyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbmZpZywgRFF9IGZyb20gXCIuLi8uLi9leHQvbW9uYWRpc2hcIjtcclxuaW1wb3J0IHtDb25zdH0gZnJvbSBcIi4uL2NvcmUvQ29uc3RcIjtcclxuaW1wb3J0IHtFeHRMYW5nfSBmcm9tIFwiLi4vdXRpbC9MYW5nXCI7XHJcbmltcG9ydCBnZXRNZXNzYWdlID0gRXh0TGFuZy5nZXRNZXNzYWdlO1xyXG5pbXBvcnQgRVZFTlQgPSBDb25zdC5FVkVOVDtcclxuaW1wb3J0IFBfUEFSVElBTF9TT1VSQ0UgPSBDb25zdC5QX1BBUlRJQUxfU09VUkNFO1xyXG5pbXBvcnQgQkVHSU4gPSBDb25zdC5CRUdJTjtcclxuaW1wb3J0IENUWF9QQVJBTV9QQVNTX1RIUiA9IENvbnN0LkNUWF9QQVJBTV9QQVNTX1RIUjtcclxuaW1wb3J0IFNPVVJDRSA9IENvbnN0LlNPVVJDRTtcclxuXHJcbmV4cG9ydCBjbGFzcyBFdmVudERhdGEge1xyXG4gICAgdHlwZTogc3RyaW5nO1xyXG4gICAgc3RhdHVzOiBzdHJpbmc7XHJcbiAgICBzb3VyY2U6IGFueTtcclxuICAgIHJlc3BvbnNlQ29kZTogc3RyaW5nO1xyXG4gICAgcmVzcG9uc2VUZXh0OiBzdHJpbmc7XHJcbiAgICByZXNwb25zZVhNTDogRG9jdW1lbnQ7XHJcblxyXG4gICAgc3RhdGljIGNyZWF0ZUZyb21SZXF1ZXN0KHJlcXVlc3Q6IFhNTEh0dHBSZXF1ZXN0LCBjb250ZXh0OiBDb25maWcsIC8qZXZlbnQgbmFtZSovIG5hbWU6IHN0cmluZyk6IEV2ZW50RGF0YSB7XHJcblxyXG4gICAgICAgIGxldCBldmVudERhdGEgPSBuZXcgRXZlbnREYXRhKCk7XHJcbiAgICAgICAgbGV0IFVOS05PV04gPSBnZXRNZXNzYWdlKFwiVU5LTk9XTlwiKTtcclxuXHJcbiAgICAgICAgZXZlbnREYXRhLnR5cGUgPSBFVkVOVDtcclxuICAgICAgICBldmVudERhdGEuc3RhdHVzID0gbmFtZTtcclxuXHJcbiAgICAgICAgbGV0IHNvdXJjZUlkOiBzdHJpbmcgPSBjb250ZXh0LmdldElmKFNPVVJDRSlcclxuICAgICAgICAgICAgLm9yRWxzZShjb250ZXh0LmdldElmKFBfUEFSVElBTF9TT1VSQ0UpLnZhbHVlKVxyXG4gICAgICAgICAgICAub3JFbHNlKGNvbnRleHQuZ2V0SWYoQ1RYX1BBUkFNX1BBU1NfVEhSLCBQX1BBUlRJQUxfU09VUkNFKS52YWx1ZSkudmFsdWU7XHJcbiAgICAgICAgaWYoc291cmNlSWQpIHtcclxuICAgICAgICAgICAgZXZlbnREYXRhLnNvdXJjZSA9IERRLmJ5SWQoc291cmNlSWQpLmZpcnN0KCkudmFsdWUudmFsdWU7XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgaWYgKG5hbWUgIT09IEJFR0lOKSB7XHJcbiAgICAgICAgICAgIGV2ZW50RGF0YS5yZXNwb25zZUNvZGUgPSByZXF1ZXN0Py5zdGF0dXM/LnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgIGV2ZW50RGF0YS5yZXNwb25zZVRleHQgPSByZXF1ZXN0Py5yZXNwb25zZVRleHQ7XHJcbiAgICAgICAgICAgIGV2ZW50RGF0YS5yZXNwb25zZVhNTCA9IHJlcXVlc3Q/LnJlc3BvbnNlWE1MO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZXZlbnREYXRhO1xyXG4gICAgfVxyXG59XHJcbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBK0JBO0FBdkJBOztBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBL0JBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/main/typescript/impl/xhrCore/EventData.ts\n");
/***/ }),
/***/ "./src/main/typescript/impl/xhrCore/ResonseDataResolver.ts":
/*!*****************************************************************!*\
!*** ./src/main/typescript/impl/xhrCore/ResonseDataResolver.ts ***!
\*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\r\n/* Licensed to the Apache Software Foundation (ASF) under one or more\r\n * contributor license agreements. See the NOTICE file distributed with\r\n * this work for additional information regarding copyright ownership.\r\n * The ASF licenses this file to you under the Apache License, Version 2.0\r\n * (the \"License\"); you may not use this file except in compliance with\r\n * the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar monadish_1 = __webpack_require__(/*! ../../ext/monadish */ \"./src/main/typescript/ext/monadish/index.ts\");\r\nvar Const_1 = __webpack_require__(/*! ../core/Const */ \"./src/main/typescript/impl/core/Const.ts\");\r\nvar Assertions_1 = __webpack_require__(/*! ../util/Assertions */ \"./src/main/typescript/impl/util/Assertions.ts\");\r\nvar DomQuery_1 = __webpack_require__(/*! ../../ext/monadish/DomQuery */ \"./src/main/typescript/ext/monadish/DomQuery.ts\");\r\nvar CTX_PARAM_SRC_FRM_ID = Const_1.Const.CTX_PARAM_SRC_FRM_ID;\r\nvar TAG_FORM = Const_1.Const.TAG_FORM;\r\nvar CTX_PARAM_SRC_CTL_ID = Const_1.Const.CTX_PARAM_SRC_CTL_ID;\r\nvar SOURCE = Const_1.Const.SOURCE;\r\nvar CTX_PARAM_MF_INTERNAL = Const_1.Const.CTX_PARAM_MF_INTERNAL;\r\nvar UPDATE_FORMS = Const_1.Const.UPDATE_FORMS;\r\nvar UPDATE_ELEMS = Const_1.Const.UPDATE_ELEMS;\r\nvar SEL_RESPONSE_XML = Const_1.Const.SEL_RESPONSE_XML;\r\n/**\r\n * Resolver for various aspects of the response data\r\n *\r\n * stateless because it might be called from various\r\n * parts of the response classes\r\n */\r\nvar ResonseDataResolver;\r\n(function (ResonseDataResolver) {\r\n /**\r\n * fetches the response XML\r\n * as XML Query object\r\n *\r\n * @param request the request hosting the responseXML\r\n *\r\n * Throws an error in case of non existent or wrong xml data\r\n *\r\n */\r\n function resolveResponseXML(request) {\r\n var ret = new monadish_1.XMLQuery(request.getIf(SEL_RESPONSE_XML).value);\r\n Assertions_1.Assertions.assertValidXMLResponse(ret);\r\n return ret;\r\n }\r\n ResonseDataResolver.resolveResponseXML = resolveResponseXML;\r\n /**\r\n * Splits the incoming passthrough context apart\r\n * in an internal and an external nomalized context\r\n * the internal one is just for our internal processing\r\n *\r\n * @param context the root context as associative array\r\n */\r\n function resolveContexts(context) {\r\n /**\r\n * we split the context apart into the external one and\r\n * some internal values\r\n */\r\n var externalContext = monadish_1.Config.fromNullable(context);\r\n var internalContext = externalContext.getIf(CTX_PARAM_MF_INTERNAL);\r\n if (!internalContext.isPresent()) {\r\n internalContext = monadish_1.Config.fromNullable({});\r\n }\r\n /**\r\n * prepare storage for some deferred operations\r\n */\r\n internalContext.assign(UPDATE_FORMS).value = [];\r\n internalContext.assign(UPDATE_ELEMS).value = [];\r\n return { externalContext: externalContext, internalContext: internalContext };\r\n }\r\n ResonseDataResolver.resolveContexts = resolveContexts;\r\n /**\r\n * fetches the source element out of our conexts\r\n *\r\n * @param context the external context which shpuld host the source id\r\n * @param internalContext internal passthrough fall back\r\n *\r\n */\r\n function resolveSourceElement(context, internalContext) {\r\n var elemId = resolveSourceElementId(context, internalContext);\r\n var elem = DomQuery_1.DQ.byId(elemId.value);\r\n return elem;\r\n }\r\n ResonseDataResolver.resolveSourceElement = resolveSourceElement;\r\n /**\r\n * fetches the source form if it still exists\r\n * also embedded forms and parent forms are taken into consideration\r\n * as fallbacks\r\n *\r\n * @param internalContext\r\n * @param elem\r\n */\r\n function resolveSourceForm(internalContext, elem) {\r\n var sourceFormId = internalContext.getIf(CTX_PARAM_SRC_FRM_ID);\r\n var sourceForm = new DomQuery_1.DQ(sourceFormId.isPresent() ? document.forms[sourceFormId.value] : null);\r\n sourceForm = sourceForm.orElse(elem.parents(TAG_FORM))\r\n .orElse(elem.querySelectorAll(TAG_FORM))\r\n .orElse(DomQuery_1.DQ.querySelectorAll(TAG_FORM));\r\n return sourceForm;\r\n }\r\n ResonseDataResolver.resolveSourceForm = resolveSourceForm;\r\n function resolveSourceElementId(context, internalContext) {\r\n //?internal context?? used to be external one\r\n return internalContext.getIf(CTX_PARAM_SRC_CTL_ID)\r\n .orElseLazy(function () { return context.getIf(SOURCE, \"id\").value; });\r\n }\r\n})(ResonseDataResolver = exports.ResonseDataResolver || (exports.ResonseDataResolver = {}));\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbWFpbi90eXBlc2NyaXB0L2ltcGwveGhyQ29yZS9SZXNvbnNlRGF0YVJlc29sdmVyLnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21haW4vdHlwZXNjcmlwdC9pbXBsL3hockNvcmUvUmVzb25zZURhdGFSZXNvbHZlci50cz84Njg3Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUgb3IgbW9yZVxyXG4gKiBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlIGRpc3RyaWJ1dGVkIHdpdGhcclxuICogdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLlxyXG4gKiBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZSB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMFxyXG4gKiAodGhlIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoXHJcbiAqIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XHJcbiAqXHJcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbiAqXHJcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcclxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxyXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cclxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxyXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cclxuICovXHJcblxyXG5pbXBvcnQge0NvbmZpZywgT3B0aW9uYWwsIFhNTFF1ZXJ5fSBmcm9tIFwiLi4vLi4vZXh0L21vbmFkaXNoXCI7XHJcbmltcG9ydCB7Q29uc3R9IGZyb20gXCIuLi9jb3JlL0NvbnN0XCI7XHJcbmltcG9ydCB7QXNzZXJ0aW9uc30gZnJvbSBcIi4uL3V0aWwvQXNzZXJ0aW9uc1wiO1xyXG5pbXBvcnQge0RRfSBmcm9tIFwiLi4vLi4vZXh0L21vbmFkaXNoL0RvbVF1ZXJ5XCI7XHJcbmltcG9ydCBDVFhfUEFSQU1fU1JDX0ZSTV9JRCA9IENvbnN0LkNUWF9QQVJBTV9TUkNfRlJNX0lEO1xyXG5pbXBvcnQgVEFHX0ZPUk0gPSBDb25zdC5UQUdfRk9STTtcclxuaW1wb3J0IENUWF9QQVJBTV9TUkNfQ1RMX0lEID0gQ29uc3QuQ1RYX1BBUkFNX1NSQ19DVExfSUQ7XHJcbmltcG9ydCBTT1VSQ0UgPSBDb25zdC5TT1VSQ0U7XHJcbmltcG9ydCBDVFhfUEFSQU1fTUZfSU5URVJOQUwgPSBDb25zdC5DVFhfUEFSQU1fTUZfSU5URVJOQUw7XHJcbmltcG9ydCBVUERBVEVfRk9STVMgPSBDb25zdC5VUERBVEVfRk9STVM7XHJcbmltcG9ydCBVUERBVEVfRUxFTVMgPSBDb25zdC5VUERBVEVfRUxFTVM7XHJcbmltcG9ydCBTRUxfUkVTUE9OU0VfWE1MID0gQ29uc3QuU0VMX1JFU1BPTlNFX1hNTDtcclxuXHJcbi8qKlxyXG4gKiBSZXNvbHZlciBmb3IgdmFyaW91cyBhc3BlY3RzIG9mIHRoZSByZXNwb25zZSBkYXRhXHJcbiAqXHJcbiAqIHN0YXRlbGVzcyBiZWNhdXNlIGl0IG1pZ2h0IGJlIGNhbGxlZCBmcm9tIHZhcmlvdXNcclxuICogcGFydHMgb2YgdGhlIHJlc3BvbnNlIGNsYXNzZXNcclxuICovXHJcbmV4cG9ydCBtb2R1bGUgUmVzb25zZURhdGFSZXNvbHZlciB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBmZXRjaGVzIHRoZSByZXNwb25zZSBYTUxcclxuICAgICAqIGFzIFhNTCBRdWVyeSBvYmplY3RcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gcmVxdWVzdCB0aGUgcmVxdWVzdCBob3N0aW5nIHRoZSByZXNwb25zZVhNTFxyXG4gICAgICpcclxuICAgICAqIFRocm93cyBhbiBlcnJvciBpbiBjYXNlIG9mIG5vbiBleGlzdGVudCBvciB3cm9uZyB4bWwgZGF0YVxyXG4gICAgICpcclxuICAgICAqL1xyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVSZXNwb25zZVhNTChyZXF1ZXN0OiBDb25maWcpOiBYTUxRdWVyeSB7XHJcbiAgICAgICAgbGV0IHJldCA9IG5ldyBYTUxRdWVyeShyZXF1ZXN0LmdldElmKFNFTF9SRVNQT05TRV9YTUwpLnZhbHVlKTtcclxuICAgICAgICBBc3NlcnRpb25zLmFzc2VydFZhbGlkWE1MUmVzcG9uc2UocmV0KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNwbGl0cyB0aGUgaW5jb21pbmcgcGFzc3Rocm91Z2ggY29udGV4dCBhcGFydFxyXG4gICAgICogaW4gYW4gaW50ZXJuYWwgYW5kIGFuIGV4dGVybmFsIG5vbWFsaXplZCBjb250ZXh0XHJcbiAgICAgKiB0aGUgaW50ZXJuYWwgb25lIGlzIGp1c3QgZm9yIG91ciBpbnRlcm5hbCBwcm9jZXNzaW5nXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGNvbnRleHQgdGhlIHJvb3QgY29udGV4dCBhcyBhc3NvY2lhdGl2ZSBhcnJheVxyXG4gICAgICovXHJcbiAgICBleHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUNvbnRleHRzKGNvbnRleHQ6IHsgW3A6IHN0cmluZ106IGFueSB9KTogYW55IHtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiB3ZSBzcGxpdCB0aGUgY29udGV4dCBhcGFydCBpbnRvIHRoZSBleHRlcm5hbCBvbmUgYW5kXHJcbiAgICAgICAgICogc29tZSBpbnRlcm5hbCB2YWx1ZXNcclxuICAgICAgICAgKi9cclxuICAgICAgICBsZXQgZXh0ZXJuYWxDb250ZXh0ID0gQ29uZmlnLmZyb21OdWxsYWJsZShjb250ZXh0KTtcclxuICAgICAgICBsZXQgaW50ZXJuYWxDb250ZXh0ID0gZXh0ZXJuYWxDb250ZXh0LmdldElmKENUWF9QQVJBTV9NRl9JTlRFUk5BTCk7XHJcbiAgICAgICAgaWYoIWludGVybmFsQ29udGV4dC5pc1ByZXNlbnQoKSkge1xyXG4gICAgICAgICAgICBpbnRlcm5hbENvbnRleHQgPSBDb25maWcuZnJvbU51bGxhYmxlKHt9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIHByZXBhcmUgc3RvcmFnZSBmb3Igc29tZSBkZWZlcnJlZCBvcGVyYXRpb25zXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgaW50ZXJuYWxDb250ZXh0LmFzc2lnbihVUERBVEVfRk9STVMpLnZhbHVlID0gW107XHJcbiAgICAgICAgaW50ZXJuYWxDb250ZXh0LmFzc2lnbihVUERBVEVfRUxFTVMpLnZhbHVlID0gW107XHJcbiAgICAgICAgcmV0dXJuIHtleHRlcm5hbENvbnRleHQsIGludGVybmFsQ29udGV4dH07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBmZXRjaGVzIHRoZSBzb3VyY2UgZWxlbWVudCBvdXQgb2Ygb3VyIGNvbmV4dHNcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gY29udGV4dCB0aGUgZXh0ZXJuYWwgY29udGV4dCB3aGljaCBzaHB1bGQgaG9zdCB0aGUgc291cmNlIGlkXHJcbiAgICAgKiBAcGFyYW0gaW50ZXJuYWxDb250ZXh0IGludGVybmFsIHBhc3N0aHJvdWdoIGZhbGwgYmFja1xyXG4gICAgICpcclxuICAgICAqL1xyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVTb3VyY2VFbGVtZW50KGNvbnRleHQ6IENvbmZpZywgaW50ZXJuYWxDb250ZXh0OiBDb25maWcpOiBEUSB7XHJcbiAgICAgICAgbGV0IGVsZW1JZCA9IHJlc29sdmVTb3VyY2VFbGVtZW50SWQoY29udGV4dCwgaW50ZXJuYWxDb250ZXh0KTtcclxuICAgICAgICBsZXQgZWxlbSA9IERRLmJ5SWQoZWxlbUlkLnZhbHVlKTtcclxuICAgICAgICByZXR1cm4gZWxlbTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGZldGNoZXMgdGhlIHNvdXJjZSBmb3JtIGlmIGl0IHN0aWxsIGV4aXN0c1xyXG4gICAgICogYWxzbyBlbWJlZGRlZCBmb3JtcyBhbmQgcGFyZW50IGZvcm1zIGFyZSB0YWtlbiBpbnRvIGNvbnNpZGVyYXRpb25cclxuICAgICAqIGFzIGZhbGxiYWNrc1xyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBpbnRlcm5hbENvbnRleHRcclxuICAgICAqIEBwYXJhbSBlbGVtXHJcbiAgICAgKi9cclxuICAgIGV4cG9ydCBmdW5jdGlvbiByZXNvbHZlU291cmNlRm9ybShpbnRlcm5hbENvbnRleHQ6IENvbmZpZywgZWxlbTogRFEpOiBEUSB7XHJcbiAgICAgICAgbGV0IHNvdXJjZUZvcm1JZCA9IGludGVybmFsQ29udGV4dC5nZXRJZihDVFhfUEFSQU1fU1JDX0ZSTV9JRCk7XHJcbiAgICAgICAgbGV0IHNvdXJjZUZvcm0gPSBuZXcgRFEoc291cmNlRm9ybUlkLmlzUHJlc2VudCgpID8gZG9jdW1lbnQuZm9ybXNbc291cmNlRm9ybUlkLnZhbHVlXSA6IG51bGwpO1xyXG5cclxuICAgICAgICBzb3VyY2VGb3JtID0gc291cmNlRm9ybS5vckVsc2UoZWxlbS5wYXJlbnRzKFRBR19GT1JNKSlcclxuICAgICAgICAgICAgLm9yRWxzZShlbGVtLnF1ZXJ5U2VsZWN0b3JBbGwoVEFHX0ZPUk0pKVxyXG4gICAgICAgICAgICAub3JFbHNlKERRLnF1ZXJ5U2VsZWN0b3JBbGwoVEFHX0ZPUk0pKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHNvdXJjZUZvcm07XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGZ1bmN0aW9uIHJlc29sdmVTb3VyY2VFbGVtZW50SWQoY29udGV4dDogQ29uZmlnLCBpbnRlcm5hbENvbnRleHQ6IENvbmZpZyk6IE9wdGlvbmFsPHN0cmluZz4ge1xyXG4gICAgICAgIC8vP2ludGVybmFsIGNvbnRleHQ/PyB1c2VkIHRvIGJlIGV4dGVybmFsIG9uZVxyXG4gICAgICAgIHJldHVybiBpbnRlcm5hbENvbnRleHQuZ2V0SWYoQ1RYX1BBUkFNX1NSQ19DVExfSUQpXHJcbiAgICAgICAgICAgIC5vckVsc2VMYXp5KCgpID0+IGNvbnRleHQuZ2V0SWYoU09VUkNFLCBcImlkXCIpLnZhbHVlKTtcclxuICAgIH1cclxuXHJcbn0iXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7QUFjQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7Ozs7QUFLQTtBQUNBO0FBQUE7QUFFQTs7Ozs7Ozs7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFMQTtBQU9BOzs7Ozs7QUFNQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFqQkE7QUFtQkE7Ozs7OztBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBTUE7Ozs7Ozs7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFUQTtBQVlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/main/typescript/impl/xhrCore/ResonseDataResolver.ts\n");
/***/ }),
/***/ "./src/main/typescript/impl/xhrCore/Response.ts":
/*!******************************************************!*\
!*** ./src/main/typescript/impl/xhrCore/Response.ts ***!
\******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\r\n/* Licensed to the Apache Software Foundation (ASF) under one or more\r\n * contributor license agreements. See the NOTICE file distributed with\r\n * this work for additional information regarding copyright ownership.\r\n * The ASF licenses this file to you under the Apache License, Version 2.0\r\n * (the \"License\"); you may not use this file except in compliance with\r\n * the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar monadish_1 = __webpack_require__(/*! ../../ext/monadish */ \"./src/main/typescript/ext/monadish/index.ts\");\r\nvar Const_1 = __webpack_require__(/*! ../core/Const */ \"./src/main/typescript/impl/core/Const.ts\");\r\nvar ResponseProcessor_1 = __webpack_require__(/*! ./ResponseProcessor */ \"./src/main/typescript/impl/xhrCore/ResponseProcessor.ts\");\r\nvar ResonseDataResolver_1 = __webpack_require__(/*! ./ResonseDataResolver */ \"./src/main/typescript/impl/xhrCore/ResonseDataResolver.ts\");\r\nvar RESPONSE_XML = Const_1.Const.RESPONSE_XML;\r\nvar RESP_PARTIAL = Const_1.Const.RESP_PARTIAL;\r\nvar PARTIAL_ID = Const_1.Const.PARTIAL_ID;\r\nvar CMD_ERROR = Const_1.Const.CMD_ERROR;\r\nvar CMD_REDIRECT = Const_1.Const.CMD_REDIRECT;\r\nvar CMD_CHANGES = Const_1.Const.CMD_CHANGES;\r\nvar CMD_UPDATE = Const_1.Const.CMD_UPDATE;\r\nvar CMD_EVAL = Const_1.Const.CMD_EVAL;\r\nvar CMD_INSERT = Const_1.Const.CMD_INSERT;\r\nvar CMD_DELETE = Const_1.Const.CMD_DELETE;\r\nvar CMD_ATTRIBUTES = Const_1.Const.CMD_ATTRIBUTES;\r\nvar CMD_EXTENSION = Const_1.Const.CMD_EXTENSION;\r\nvar P_VIEWROOT = Const_1.Const.P_VIEWROOT;\r\nvar P_VIEWHEAD = Const_1.Const.P_VIEWHEAD;\r\nvar P_VIEWBODY = Const_1.Const.P_VIEWBODY;\r\nvar Response;\r\n(function (Response) {\r\n var resolveResponseXML = ResonseDataResolver_1.ResonseDataResolver.resolveResponseXML;\r\n var resolveContexts = ResonseDataResolver_1.ResonseDataResolver.resolveContexts;\r\n var TAG_BEFORE = Const_1.Const.TAG_BEFORE;\r\n var TAG_AFTER = Const_1.Const.TAG_AFTER;\r\n /**\r\n * Standardized jsf.js response\r\n * this one is called straight from jsf.js.response\r\n *\r\n * The processing follows the spec by going for the responseXML\r\n * and processing its tags\r\n *\r\n * @param {XMLHttpRequest} request (xhrRequest) - xhr request object\r\n * @param {[key: string]: any} context (Map) - AJAX context\r\n *\r\n */\r\n function processResponse(request, context) {\r\n var req = monadish_1.Config.fromNullable(request);\r\n var _a = resolveContexts(context), externalContext = _a.externalContext, internalContext = _a.internalContext;\r\n var responseXML = resolveResponseXML(req);\r\n var responseProcessor = new ResponseProcessor_1.ResponseProcessor(req, externalContext, internalContext);\r\n internalContext.assign(RESPONSE_XML).value = responseXML;\r\n //we now process the partial tags, or in none given raise an error\r\n responseXML.querySelectorAll(RESP_PARTIAL)\r\n .each(function (item) { return processPartialTag(item, responseProcessor, internalContext); });\r\n //we now process the viewstates and the evals deferred\r\n //the reason for this is that often it is better\r\n //to wait until the document has caught up before\r\n //doing any evals even on embedded scripts\r\n responseProcessor.fixViewStates();\r\n responseProcessor.globalEval();\r\n responseProcessor.done();\r\n }\r\n Response.processResponse = processResponse;\r\n /**\r\n * highest node partial-response from there the main operations are triggered\r\n */\r\n function processPartialTag(node, responseProcessor, internalContext) {\r\n internalContext.assign(PARTIAL_ID).value = node.id;\r\n var SEL_SUB_TAGS = [CMD_ERROR, CMD_REDIRECT, CMD_CHANGES].join(\",\");\r\n //now we can process the main operations\r\n node.getIf(SEL_SUB_TAGS).each(function (node) {\r\n switch (node.tagName.value) {\r\n case CMD_ERROR:\r\n responseProcessor.error(node);\r\n break;\r\n case CMD_REDIRECT:\r\n responseProcessor.redirect(node);\r\n break;\r\n case CMD_CHANGES:\r\n processChangesTag(node, responseProcessor);\r\n break;\r\n }\r\n });\r\n }\r\n var processInsert = function (responseProcessor, node) {\r\n //path1 insert after as child tags\r\n if (node.querySelectorAll([TAG_BEFORE, TAG_AFTER].join(\",\")).length) {\r\n responseProcessor.insertWithSubtags(node);\r\n }\r\n else { //insert before after with id\r\n responseProcessor.insert(node);\r\n }\r\n };\r\n /**\r\n * next level changes tag\r\n *\r\n * @param node\r\n * @param responseProcessor\r\n */\r\n function processChangesTag(node, responseProcessor) {\r\n var ALLOWED_TAGS = [CMD_UPDATE, CMD_EVAL, CMD_INSERT, CMD_DELETE, CMD_ATTRIBUTES, CMD_EXTENSION].join(\",\");\r\n node.getIf(ALLOWED_TAGS).each(function (node) {\r\n switch (node.tagName.value) {\r\n case CMD_UPDATE:\r\n processUpdateTag(node, responseProcessor);\r\n break;\r\n case CMD_EVAL:\r\n responseProcessor.eval(node);\r\n break;\r\n case CMD_INSERT:\r\n processInsert(responseProcessor, node);\r\n break;\r\n case CMD_DELETE:\r\n responseProcessor.delete(node);\r\n break;\r\n case CMD_ATTRIBUTES:\r\n responseProcessor.attributes(node);\r\n break;\r\n case CMD_EXTENSION:\r\n break;\r\n }\r\n });\r\n return true;\r\n }\r\n /**\r\n * branch tag update.. drill further down into the updates\r\n * special case viewstate in that case it is a leaf\r\n * and the viewstate must be processed\r\n *\r\n * @param node\r\n * @param responseProcessor\r\n */\r\n function processUpdateTag(node, responseProcessor) {\r\n if (!responseProcessor.processViewState(node)) {\r\n handleElementUpdate(node, responseProcessor);\r\n }\r\n }\r\n /**\r\n * element update\r\n *\r\n * @param node\r\n * @param responseProcessor\r\n */\r\n function handleElementUpdate(node, responseProcessor) {\r\n var cdataBlock = node.cDATAAsString;\r\n switch (node.id.value) {\r\n case P_VIEWROOT:\r\n responseProcessor.replaceViewRoot(monadish_1.DQ.fromMarkup(cdataBlock.substring(cdataBlock.indexOf(\"<html\"))));\r\n break;\r\n case P_VIEWHEAD:\r\n responseProcessor.replaceHead(monadish_1.DQ.fromMarkup(cdataBlock));\r\n break;\r\n case P_VIEWBODY:\r\n responseProcessor.replaceBody(monadish_1.DQ.fromMarkup(cdataBlock));\r\n break;\r\n default: //htmlItem replacement\r\n responseProcessor.update(node, cdataBlock);\r\n break;\r\n }\r\n }\r\n})(Response = exports.Response || (exports.Response = {}));\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbWFpbi90eXBlc2NyaXB0L2ltcGwveGhyQ29yZS9SZXNwb25zZS50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tYWluL3R5cGVzY3JpcHQvaW1wbC94aHJDb3JlL1Jlc3BvbnNlLnRzP2U5ZjYiXSwic291cmNlc0NvbnRlbnQiOlsiLyogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZSBvciBtb3JlXHJcbiAqIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUgZGlzdHJpYnV0ZWQgd2l0aFxyXG4gKiB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuXHJcbiAqIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wXHJcbiAqICh0aGUgXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGhcclxuICogdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcclxuICpcclxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuICpcclxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxyXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXHJcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxyXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXHJcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7Q29uZmlnLCBEUSxYTUxRdWVyeX0gZnJvbSBcIi4uLy4uL2V4dC9tb25hZGlzaFwiO1xyXG5pbXBvcnQge0NvbnN0fSBmcm9tIFwiLi4vY29yZS9Db25zdFwiO1xyXG5pbXBvcnQge1Jlc3BvbnNlUHJvY2Vzc29yfSBmcm9tIFwiLi9SZXNwb25zZVByb2Nlc3NvclwiO1xyXG5pbXBvcnQge1Jlc29uc2VEYXRhUmVzb2x2ZXJ9IGZyb20gXCIuL1Jlc29uc2VEYXRhUmVzb2x2ZXJcIjtcclxuaW1wb3J0IHtJUmVzcG9uc2VQcm9jZXNzb3J9IGZyb20gXCIuL0lSZXNwb25zZVByb2Nlc3NvclwiO1xyXG5pbXBvcnQgUkVTUE9OU0VfWE1MID0gQ29uc3QuUkVTUE9OU0VfWE1MO1xyXG5pbXBvcnQgUkVTUF9QQVJUSUFMID0gQ29uc3QuUkVTUF9QQVJUSUFMO1xyXG5pbXBvcnQgUEFSVElBTF9JRCA9IENvbnN0LlBBUlRJQUxfSUQ7XHJcbmltcG9ydCBDTURfRVJST1IgPSBDb25zdC5DTURfRVJST1I7XHJcbmltcG9ydCBDTURfUkVESVJFQ1QgPSBDb25zdC5DTURfUkVESVJFQ1Q7XHJcbmltcG9ydCBDTURfQ0hBTkdFUyA9IENvbnN0LkNNRF9DSEFOR0VTO1xyXG5pbXBvcnQgQ01EX1VQREFURSA9IENvbnN0LkNNRF9VUERBVEU7XHJcbmltcG9ydCBDTURfRVZBTCA9IENvbnN0LkNNRF9FVkFMO1xyXG5pbXBvcnQgQ01EX0lOU0VSVCA9IENvbnN0LkNNRF9JTlNFUlQ7XHJcbmltcG9ydCBDTURfREVMRVRFID0gQ29uc3QuQ01EX0RFTEVURTtcclxuaW1wb3J0IENNRF9BVFRSSUJVVEVTID0gQ29uc3QuQ01EX0FUVFJJQlVURVM7XHJcbmltcG9ydCBDTURfRVhURU5TSU9OID0gQ29uc3QuQ01EX0VYVEVOU0lPTjtcclxuaW1wb3J0IFBfVklFV1JPT1QgPSBDb25zdC5QX1ZJRVdST09UO1xyXG5pbXBvcnQgUF9WSUVXSEVBRCA9IENvbnN0LlBfVklFV0hFQUQ7XHJcbmltcG9ydCBQX1ZJRVdCT0RZID0gQ29uc3QuUF9WSUVXQk9EWTtcclxuaW1wb3J0IFBfVklFV1NUQVRFID0gQ29uc3QuUF9WSUVXU1RBVEU7XHJcblxyXG5leHBvcnQgbW9kdWxlIFJlc3BvbnNlIHtcclxuXHJcbiAgICBpbXBvcnQgcmVzb2x2ZVJlc3BvbnNlWE1MID0gUmVzb25zZURhdGFSZXNvbHZlci5yZXNvbHZlUmVzcG9uc2VYTUw7XHJcbiAgICBpbXBvcnQgcmVzb2x2ZUNvbnRleHRzID0gUmVzb25zZURhdGFSZXNvbHZlci5yZXNvbHZlQ29udGV4dHM7XHJcbiAgICBpbXBvcnQgVEFHX0JFRk9SRSA9IENvbnN0LlRBR19CRUZPUkU7XHJcbiAgICBpbXBvcnQgVEFHX0FGVEVSID0gQ29uc3QuVEFHX0FGVEVSO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogU3RhbmRhcmRpemVkIGpzZi5qcyByZXNwb25zZVxyXG4gICAgICogdGhpcyBvbmUgaXMgY2FsbGVkIHN0cmFpZ2h0IGZyb20ganNmLmpzLnJlc3BvbnNlXHJcbiAgICAgKlxyXG4gICAgICogVGhlIHByb2Nlc3NpbmcgZm9sbG93cyB0aGUgc3BlYyBieSBnb2luZyBmb3IgdGhlIHJlc3BvbnNlWE1MXHJcbiAgICAgKiBhbmQgcHJvY2Vzc2luZyBpdHMgdGFnc1xyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSB7WE1MSHR0cFJlcXVlc3R9IHJlcXVlc3QgKHhoclJlcXVlc3QpIC0geGhyIHJlcXVlc3Qgb2JqZWN0XHJcbiAgICAgKiBAcGFyYW0ge1trZXk6IHN0cmluZ106IGFueX0gY29udGV4dCAoTWFwKSAtIEFKQVggY29udGV4dFxyXG4gICAgICpcclxuICAgICAqL1xyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIHByb2Nlc3NSZXNwb25zZShyZXF1ZXN0OiBYTUxIdHRwUmVxdWVzdCwgY29udGV4dDogeyBba2V5OiBzdHJpbmddOiBhbnkgfSkge1xyXG5cclxuICAgICAgICBsZXQgcmVxID0gQ29uZmlnLmZyb21OdWxsYWJsZShyZXF1ZXN0KTtcclxuICAgICAgICBsZXQge2V4dGVybmFsQ29udGV4dCwgaW50ZXJuYWxDb250ZXh0fSA9IHJlc29sdmVDb250ZXh0cyhjb250ZXh0KTtcclxuICAgICAgICBsZXQgcmVzcG9uc2VYTUw6IFhNTFF1ZXJ5ID0gcmVzb2x2ZVJlc3BvbnNlWE1MKHJlcSk7XHJcbiAgICAgICAgbGV0IHJlc3BvbnNlUHJvY2Vzc29yID0gbmV3IFJlc3BvbnNlUHJvY2Vzc29yKHJlcSwgZXh0ZXJuYWxDb250ZXh0LCBpbnRlcm5hbENvbnRleHQpO1xyXG5cclxuICAgICAgICBpbnRlcm5hbENvbnRleHQuYXNzaWduKFJFU1BPTlNFX1hNTCkudmFsdWUgPSByZXNwb25zZVhNTDtcclxuXHJcbiAgICAgICAgLy93ZSBub3cgcHJvY2VzcyB0aGUgcGFydGlhbCB0YWdzLCBvciBpbiBub25lIGdpdmVuIHJhaXNlIGFuIGVycm9yXHJcbiAgICAgICAgcmVzcG9uc2VYTUwucXVlcnlTZWxlY3RvckFsbChSRVNQX1BBUlRJQUwpXHJcbiAgICAgICAgICAgIC5lYWNoKGl0ZW0gPT4gcHJvY2Vzc1BhcnRpYWxUYWcoPFhNTFF1ZXJ5Pml0ZW0sIHJlc3BvbnNlUHJvY2Vzc29yLCBpbnRlcm5hbENvbnRleHQpKTtcclxuXHJcbiAgICAgICAgLy93ZSBub3cgcHJvY2VzcyB0aGUgdmlld3N0YXRlcyBhbmQgdGhlIGV2YWxzIGRlZmVycmVkXHJcbiAgICAgICAgLy90aGUgcmVhc29uIGZvciB0aGlzIGlzIHRoYXQgb2Z0ZW4gaXQgaXMgYmV0dGVyXHJcbiAgICAgICAgLy90byB3YWl0IHVudGlsIHRoZSBkb2N1bWVudCBoYXMgY2F1Z2h0IHVwIGJlZm9yZVxyXG4gICAgICAgIC8vZG9pbmcgYW55IGV2YWxzIGV2ZW4gb24gZW1iZWRkZWQgc2NyaXB0c1xyXG4gICAgICAgIHJlc3BvbnNlUHJvY2Vzc29yLmZpeFZpZXdTdGF0ZXMoKTtcclxuICAgICAgICByZXNwb25zZVByb2Nlc3Nvci5nbG9iYWxFdmFsKCk7XHJcblxyXG4gICAgICAgIHJlc3BvbnNlUHJvY2Vzc29yLmRvbmUoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGhpZ2hlc3Qgbm9kZSBwYXJ0aWFsLXJlc3BvbnNlIGZyb20gdGhlcmUgdGhlIG1haW4gb3BlcmF0aW9ucyBhcmUgdHJpZ2dlcmVkXHJcbiAgICAgKi9cclxuICAgICBmdW5jdGlvbiBwcm9jZXNzUGFydGlhbFRhZyhub2RlOiBYTUxRdWVyeSwgcmVzcG9uc2VQcm9jZXNzb3I6IElSZXNwb25zZVByb2Nlc3NvciwgaW50ZXJuYWxDb250ZXh0KSB7XHJcblxyXG4gICAgICAgIGludGVybmFsQ29udGV4dC5hc3NpZ24oUEFSVElBTF9JRCkudmFsdWUgPSBub2RlLmlkO1xyXG4gICAgICAgIGNvbnN0IFNFTF9TVUJfVEFHUyA9IFtDTURfRVJST1IsIENNRF9SRURJUkVDVCwgQ01EX0NIQU5HRVNdLmpvaW4oXCIsXCIpO1xyXG5cclxuICAgICAgICAvL25vdyB3ZSBjYW4gcHJvY2VzcyB0aGUgbWFpbiBvcGVyYXRpb25zXHJcbiAgICAgICAgbm9kZS5nZXRJZihTRUxfU1VCX1RBR1MpLmVhY2goKG5vZGU6IFhNTFF1ZXJ5KSA9PiB7XHJcbiAgICAgICAgICAgIHN3aXRjaCAobm9kZS50YWdOYW1lLnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlIENNRF9FUlJPUjpcclxuICAgICAgICAgICAgICAgICAgICByZXNwb25zZVByb2Nlc3Nvci5lcnJvcihub2RlKTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgQ01EX1JFRElSRUNUOlxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlUHJvY2Vzc29yLnJlZGlyZWN0KG5vZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBDTURfQ0hBTkdFUzpcclxuICAgICAgICAgICAgICAgICAgICBwcm9jZXNzQ2hhbmdlc1RhZyhub2RlLCByZXNwb25zZVByb2Nlc3Nvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHByb2Nlc3NJbnNlcnQgPSBmdW5jdGlvbiAocmVzcG9uc2VQcm9jZXNzb3I6IElSZXNwb25zZVByb2Nlc3Nvciwgbm9kZTogWE1MUXVlcnkpIHtcclxuICAgICAgICAgLy9wYXRoMSBpbnNlcnQgYWZ0ZXIgYXMgY2hpbGQgdGFnc1xyXG4gICAgICAgICBpZihub2RlLnF1ZXJ5U2VsZWN0b3JBbGwoW1RBR19CRUZPUkUsIFRBR19BRlRFUl0uam9pbihcIixcIikpLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgcmVzcG9uc2VQcm9jZXNzb3IuaW5zZXJ0V2l0aFN1YnRhZ3Mobm9kZSk7XHJcbiAgICAgICAgIH0gZWxzZSB7IC8vaW5zZXJ0IGJlZm9yZSBhZnRlciB3aXRoIGlkXHJcbiAgICAgICAgICAgICByZXNwb25zZVByb2Nlc3Nvci5pbnNlcnQobm9kZSk7XHJcbiAgICAgICAgIH1cclxuXHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogbmV4dCBsZXZlbCBjaGFuZ2VzIHRhZ1xyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBub2RlXHJcbiAgICAgKiBAcGFyYW0gcmVzcG9uc2VQcm9jZXNzb3JcclxuICAgICAqL1xyXG4gICAgIGZ1bmN0aW9uIHByb2Nlc3NDaGFuZ2VzVGFnKG5vZGU6IFhNTFF1ZXJ5LCByZXNwb25zZVByb2Nlc3NvcjogSVJlc3BvbnNlUHJvY2Vzc29yKTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3QgQUxMT1dFRF9UQUdTID0gW0NNRF9VUERBVEUsIENNRF9FVkFMLCBDTURfSU5TRVJULCBDTURfREVMRVRFLCBDTURfQVRUUklCVVRFUywgQ01EX0VYVEVOU0lPTl0uam9pbihcIixcIik7XHJcbiAgICAgICAgbm9kZS5nZXRJZihBTExPV0VEX1RBR1MpLmVhY2goXHJcbiAgICAgICAgICAgIChub2RlOiBYTUxRdWVyeSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLnRhZ05hbWUudmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIENNRF9VUERBVEU6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NVcGRhdGVUYWcobm9kZSwgcmVzcG9uc2VQcm9jZXNzb3IpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBDTURfRVZBTDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VQcm9jZXNzb3IuZXZhbChub2RlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgQ01EX0lOU0VSVDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc0luc2VydChyZXNwb25zZVByb2Nlc3Nvciwgbm9kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBjYXNlIENNRF9ERUxFVEU6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlUHJvY2Vzc29yLmRlbGV0ZShub2RlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgQ01EX0FUVFJJQlVURVM6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlUHJvY2Vzc29yLmF0dHJpYnV0ZXMobm9kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBjYXNlIENNRF9FWFRFTlNJT046XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGJyYW5jaCB0YWcgdXBkYXRlLi4gZHJpbGwgZnVydGhlciBkb3duIGludG8gdGhlIHVwZGF0ZXNcclxuICAgICAqIHNwZWNpYWwgY2FzZSB2aWV3c3RhdGUgaW4gdGhhdCBjYXNlIGl0IGlzIGEgbGVhZlxyXG4gICAgICogYW5kIHRoZSB2aWV3c3RhdGUgbXVzdCBiZSBwcm9jZXNzZWRcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gbm9kZVxyXG4gICAgICogQHBhcmFtIHJlc3BvbnNlUHJvY2Vzc29yXHJcbiAgICAgKi9cclxuICAgICBmdW5jdGlvbiBwcm9jZXNzVXBkYXRlVGFnKG5vZGU6IFhNTFF1ZXJ5LCByZXNwb25zZVByb2Nlc3NvcjogSVJlc3BvbnNlUHJvY2Vzc29yKSB7XHJcbiAgICAgICAgaWYgKCFyZXNwb25zZVByb2Nlc3Nvci5wcm9jZXNzVmlld1N0YXRlKG5vZGUpKSB7XHJcbiAgICAgICAgICAgIGhhbmRsZUVsZW1lbnRVcGRhdGUobm9kZSwgcmVzcG9uc2VQcm9jZXNzb3IpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGVsZW1lbnQgdXBkYXRlXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIG5vZGVcclxuICAgICAqIEBwYXJhbSByZXNwb25zZVByb2Nlc3NvclxyXG4gICAgICovXHJcbiAgICAgZnVuY3Rpb24gaGFuZGxlRWxlbWVudFVwZGF0ZShub2RlOiBYTUxRdWVyeSwgcmVzcG9uc2VQcm9jZXNzb3I6IElSZXNwb25zZVByb2Nlc3Nvcikge1xyXG4gICAgICAgIGxldCBjZGF0YUJsb2NrID0gbm9kZS5jREFUQUFzU3RyaW5nO1xyXG4gICAgICAgIHN3aXRjaCAobm9kZS5pZC52YWx1ZSkge1xyXG4gICAgICAgICAgICBjYXNlIFBfVklFV1JPT1QgOlxyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2VQcm9jZXNzb3IucmVwbGFjZVZpZXdSb290KERRLmZyb21NYXJrdXAoY2RhdGFCbG9jay5zdWJzdHJpbmcoY2RhdGFCbG9jay5pbmRleE9mKFwiPGh0bWxcIikpKSk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgIGNhc2UgUF9WSUVXSEVBRDpcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNlUHJvY2Vzc29yLnJlcGxhY2VIZWFkKERRLmZyb21NYXJrdXAoY2RhdGFCbG9jaykpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgICBjYXNlIFBfVklFV0JPRFk6XHJcbiAgICAgICAgICAgICAgICByZXNwb25zZVByb2Nlc3Nvci5yZXBsYWNlQm9keShEUS5mcm9tTWFya3VwKGNkYXRhQmxvY2spKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgZGVmYXVsdDovL2h0bWxJdGVtIHJlcGxhY2VtZW50XHJcbiAgICAgICAgICAgICAgICByZXNwb25zZVByb2Nlc3Nvci51cGRhdGUobm9kZSwgY2RhdGFCbG9jayk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59Il0sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7O0FBY0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7Ozs7Ozs7OztBQVVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQXJCQTtBQXVCQTs7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUVBOzs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTs7Ozs7OztBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7OztBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/main/typescript/impl/xhrCore/Response.ts\n");
/***/ }),
/***/ "./src/main/typescript/impl/xhrCore/ResponseProcessor.ts":
/*!***************************************************************!*\
!*** ./src/main/typescript/impl/xhrCore/ResponseProcessor.ts ***!
\***************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\r\n/* Licensed to the Apache Software Foundation (ASF) under one or more\r\n * contributor license agreements. See the NOTICE file distributed with\r\n * this work for additional information regarding copyright ownership.\r\n * The ASF licenses this file to you under the Apache License, Version 2.0\r\n * (the \"License\"); you may not use this file except in compliance with\r\n * the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar monadish_1 = __webpack_require__(/*! ../../ext/monadish */ \"./src/main/typescript/ext/monadish/index.ts\");\r\nvar Const_1 = __webpack_require__(/*! ../core/Const */ \"./src/main/typescript/impl/core/Const.ts\");\r\nvar AjaxImpl_1 = __webpack_require__(/*! ../AjaxImpl */ \"./src/main/typescript/impl/AjaxImpl.ts\");\r\nvar Assertions_1 = __webpack_require__(/*! ../util/Assertions */ \"./src/main/typescript/impl/util/Assertions.ts\");\r\nvar ErrorData_1 = __webpack_require__(/*! ./ErrorData */ \"./src/main/typescript/impl/xhrCore/ErrorData.ts\");\r\nvar DomQuery_1 = __webpack_require__(/*! ../../ext/monadish/DomQuery */ \"./src/main/typescript/ext/monadish/DomQuery.ts\");\r\nvar Lang_1 = __webpack_require__(/*! ../util/Lang */ \"./src/main/typescript/impl/util/Lang.ts\");\r\nvar trim = monadish_1.Lang.trim;\r\nvar getLocalOrGlobalConfig = Lang_1.ExtLang.getLocalOrGlobalConfig;\r\nvar TAG_HEAD = Const_1.Const.TAG_HEAD;\r\nvar SEL_SCRIPTS_STYLES = Const_1.Const.SEL_SCRIPTS_STYLES;\r\nvar TAG_BODY = Const_1.Const.TAG_BODY;\r\nvar TAG_FORM = Const_1.Const.TAG_FORM;\r\nvar SOURCE = Const_1.Const.SOURCE;\r\nvar ERROR_NAME = Const_1.Const.ERROR_NAME;\r\nvar ERROR_MESSAGE = Const_1.Const.ERROR_MESSAGE;\r\nvar P_PARTIAL_SOURCE = Const_1.Const.P_PARTIAL_SOURCE;\r\nvar RESPONSE_XML = Const_1.Const.RESPONSE_XML;\r\nvar ON_ERROR = Const_1.Const.ON_ERROR;\r\nvar TAG_BEFORE = Const_1.Const.TAG_BEFORE;\r\nvar TAG_AFTER = Const_1.Const.TAG_AFTER;\r\nvar UPDATE_ELEMS = Const_1.Const.UPDATE_ELEMS;\r\nvar UPDATE_FORMS = Const_1.Const.UPDATE_FORMS;\r\nvar SEL_VIEWSTATE_ELEM = Const_1.Const.SEL_VIEWSTATE_ELEM;\r\nvar P_VIEWSTATE = Const_1.Const.P_VIEWSTATE;\r\nvar ATTR_URL = Const_1.Const.ATTR_URL;\r\nvar EMPTY_FUNC = Const_1.Const.EMPTY_FUNC;\r\nvar TAG_ATTR = Const_1.Const.TAG_ATTR;\r\nvar ATTR_NAME = Const_1.Const.ATTR_NAME;\r\nvar ATTR_VALUE = Const_1.Const.ATTR_VALUE;\r\nvar HTML_VIEWSTATE = Const_1.Const.HTML_VIEWSTATE;\r\nvar APPLIED_VST = Const_1.Const.APPLIED_VST;\r\nvar ATTR_ID = Const_1.Const.ATTR_ID;\r\nvar ImplTypes_1 = __webpack_require__(/*! ../core/ImplTypes */ \"./src/main/typescript/impl/core/ImplTypes.ts\");\r\nvar EventData_1 = __webpack_require__(/*! ./EventData */ \"./src/main/typescript/impl/xhrCore/EventData.ts\");\r\nvar SUCCESS = Const_1.Const.SUCCESS;\r\nvar ON_EVENT = Const_1.Const.ON_EVENT;\r\n/**\r\n * Response processor\r\n *\r\n * Each XML tag is either a node or a leaf\r\n * or both\r\n *\r\n * the processor provides a set of operations\r\n * which are executed on a single leaf node per operation\r\n * and present the core functionality of our response\r\n *\r\n */\r\nvar ResponseProcessor = /** @class */ (function () {\r\n function ResponseProcessor(request, externalContext, internalContext) {\r\n this.request = request;\r\n this.externalContext = externalContext;\r\n this.internalContext = internalContext;\r\n }\r\n ResponseProcessor.prototype.replaceHead = function (shadowDocument) {\r\n var shadowHead = shadowDocument.querySelectorAll(TAG_HEAD);\r\n if (!shadowHead.isPresent()) {\r\n return;\r\n }\r\n var shadowInnerHTML = shadowHead.html().value;\r\n var oldHead = DomQuery_1.DQ.querySelectorAll(TAG_HEAD);\r\n //delete all to avoid script and style overlays\r\n oldHead.querySelectorAll(SEL_SCRIPTS_STYLES).delete();\r\n this.storeForEval(shadowHead);\r\n };\r\n /**\r\n * replaces the body in the expected manner\r\n * which means the entire body content is refreshed\r\n * however also the body attributes must be transferred\r\n * keeping event handlers etc... in place\r\n *\r\n * @param shadowDocument .. an incoming shadow document hosting the new nodes\r\n */\r\n ResponseProcessor.prototype.replaceBody = function (shadowDocument) {\r\n var shadowBody = shadowDocument.querySelectorAll(TAG_BODY);\r\n if (!shadowBody.isPresent()) {\r\n return;\r\n }\r\n var shadowInnerHTML = shadowBody.html().value;\r\n var resultingBody = DomQuery_1.DQ.querySelectorAll(TAG_BODY).html(shadowInnerHTML);\r\n var updateForms = resultingBody.querySelectorAll(TAG_FORM);\r\n resultingBody.copyAttrs(shadowBody);\r\n this.storeForPostProcessing(updateForms, resultingBody);\r\n };\r\n /**\r\n * Leaf Tag eval... process whatever is in the evals cdata block\r\n *\r\n * @param node the node to eval\r\n */\r\n ResponseProcessor.prototype.eval = function (node) {\r\n DomQuery_1.DQ.globalEval(node.cDATAAsString);\r\n };\r\n /**\r\n * processes an incoming error from the response\r\n * which is hosted under the &lt;error&gt; tag\r\n * @param request the current request\r\n * @param context the context object\r\n * @param node the node in the xml hosting the error message\r\n */\r\n ResponseProcessor.prototype.error = function (node) {\r\n /**\r\n * <error>\r\n * <error-name>String</error-name>\r\n * <error-message><![CDATA[message]]></error-message>\r\n * <error>\r\n */\r\n var mergedErrorData = new monadish_1.Config({});\r\n mergedErrorData.assign(SOURCE).value = this.externalContext.getIf(P_PARTIAL_SOURCE).get(0).value;\r\n mergedErrorData.assign(ERROR_NAME).value = node.getIf(ERROR_NAME).textContent(\"\");\r\n mergedErrorData.assign(ERROR_MESSAGE).value = node.getIf(ERROR_MESSAGE).cDATAAsString;\r\n var hasResponseXML = this.internalContext.get(RESPONSE_XML).isPresent();\r\n mergedErrorData.assignIf(hasResponseXML, RESPONSE_XML).value = this.internalContext.getIf(RESPONSE_XML).value.get(0).value;\r\n var errorData = ErrorData_1.ErrorData.fromServerError(mergedErrorData);\r\n this.externalContext.getIf(ON_ERROR).orElse(this.internalContext.getIf(ON_ERROR).value).orElse(EMPTY_FUNC).value(errorData);\r\n AjaxImpl_1.Implementation.sendError(errorData);\r\n };\r\n /**\r\n * process the redirect operation\r\n *\r\n * @param node\r\n */\r\n ResponseProcessor.prototype.redirect = function (node) {\r\n Assertions_1.Assertions.assertUrlExists(node);\r\n var redirectUrl = trim(node.attr(ATTR_URL).value);\r\n if (redirectUrl != \"\") {\r\n window.location.href = redirectUrl;\r\n }\r\n };\r\n /**\r\n * processes the update operation and updates the node with the cdata block\r\n * @param context\r\n * @param internalContext\r\n * @param node\r\n * @param cdataBlock\r\n */\r\n ResponseProcessor.prototype.update = function (node, cdataBlock) {\r\n var _a;\r\n var result = DomQuery_1.DQ.byId(node.id.value).outerHTML(cdataBlock, false, false);\r\n var sourceForm = (_a = result) === null || _a === void 0 ? void 0 : _a.parents(TAG_FORM).orElse(result.byTagName(TAG_FORM, true));\r\n if (sourceForm) {\r\n this.storeForPostProcessing(sourceForm, result);\r\n }\r\n };\r\n ResponseProcessor.prototype.delete = function (node) {\r\n DomQuery_1.DQ.byId(node.id.value).delete();\r\n };\r\n /**\r\n * attributes leaf tag... process the attributes\r\n *\r\n * @param node\r\n */\r\n ResponseProcessor.prototype.attributes = function (node) {\r\n var elem = DomQuery_1.DQ.byId(node.id.value);\r\n node.byTagName(TAG_ATTR).each(function (item) {\r\n elem.attr(item.attr(ATTR_NAME).value).value = item.attr(ATTR_VALUE).value;\r\n });\r\n };\r\n /**\r\n * @param shadownResponse\r\n */\r\n ResponseProcessor.prototype.replaceViewRoot = function (shadowDocument) {\r\n this.replaceHead(shadowDocument);\r\n this.replaceBody(shadowDocument);\r\n };\r\n /**\r\n * insert handling, either before or after\r\n *\r\n * @param node\r\n */\r\n ResponseProcessor.prototype.insert = function (node) {\r\n //let insertId = node.id; //not used atm\r\n var before = node.attr(TAG_BEFORE);\r\n var after = node.attr(TAG_AFTER);\r\n var insertNodes = DomQuery_1.DQ.fromMarkup(node.cDATAAsString);\r\n if (before.isPresent()) {\r\n var res = DomQuery_1.DQ.byId(before.value).insertBefore(insertNodes);\r\n this.internalContext.assign(UPDATE_ELEMS).value.push(insertNodes);\r\n }\r\n if (after.isPresent()) {\r\n var domQuery = DomQuery_1.DQ.byId(after.value);\r\n domQuery.insertAfter(insertNodes);\r\n this.internalContext.assign(UPDATE_ELEMS).value.push(insertNodes);\r\n }\r\n };\r\n ResponseProcessor.prototype.insertWithSubtags = function (node) {\r\n var _this = this;\r\n var before = node.querySelectorAll(TAG_BEFORE);\r\n var after = node.querySelectorAll(TAG_AFTER);\r\n before.each(function (item) {\r\n var insertId = item.attr(ATTR_ID);\r\n var insertNodes = DomQuery_1.DQ.fromMarkup(item.cDATAAsString);\r\n if (insertId.isPresent()) {\r\n DomQuery_1.DQ.byId(insertId.value).insertBefore(insertNodes);\r\n _this.internalContext.assign(UPDATE_ELEMS).value.push(insertNodes);\r\n }\r\n });\r\n after.each(function (item) {\r\n var insertId = item.attr(ATTR_ID);\r\n var insertNodes = DomQuery_1.DQ.fromMarkup(item.cDATAAsString);\r\n if (insertId.isPresent()) {\r\n DomQuery_1.DQ.byId(insertId.value).insertAfter(insertNodes);\r\n _this.internalContext.assign(UPDATE_ELEMS).value.push(insertNodes);\r\n }\r\n });\r\n };\r\n /**\r\n * process the viewState update, update the affected\r\n * forms with their respective new viewstate values\r\n *\r\n */\r\n ResponseProcessor.prototype.processViewState = function (node) {\r\n if (this.isViewStateNode(node)) {\r\n var viewStateValue = node.textContent();\r\n this.internalContext.assign(APPLIED_VST, node.id.value).value = new ImplTypes_1.ViewState(node.id.value, viewStateValue);\r\n return true;\r\n }\r\n return false;\r\n };\r\n ResponseProcessor.prototype.globalEval = function () {\r\n var updateElems = new (DomQuery_1.DQ.bind.apply(DomQuery_1.DQ, __spreadArrays([void 0], this.internalContext.getIf(UPDATE_ELEMS).value)))();\r\n updateElems.runCss();\r\n updateElems.runScripts();\r\n };\r\n ResponseProcessor.prototype.fixViewStates = function () {\r\n var _this = this;\r\n monadish_1.Stream.ofAssoc(this.internalContext.getIf(APPLIED_VST).orElse({}).value)\r\n .each(function (item) {\r\n var key = item[0];\r\n var value = item[1];\r\n var nameSpace = DomQuery_1.DQ.byId(value.nameSpace).orElse(document.body);\r\n var affectedForms = nameSpace.byTagName(TAG_FORM);\r\n var affectedForms2 = nameSpace.filter(function (item) { return item.tagName.orElse(\"\").value.toLowerCase() == TAG_FORM; });\r\n _this.appendViewStateToForms(new monadish_1.DomQuery(affectedForms, affectedForms2), value.value);\r\n });\r\n };\r\n ResponseProcessor.prototype.done = function () {\r\n var eventData = EventData_1.EventData.createFromRequest(this.request.value, this.externalContext, SUCCESS);\r\n //because some frameworks might decorate them over the context in the response\r\n var eventHandler = this.externalContext.getIf(ON_EVENT).orElse(this.internalContext.getIf(ON_EVENT).value).orElse(EMPTY_FUNC).value;\r\n AjaxImpl_1.Implementation.sendEvent(eventData, eventHandler);\r\n };\r\n ResponseProcessor.prototype.isAllFormResolution = function (context) {\r\n return getLocalOrGlobalConfig(context, \"no_portlet_env\", false);\r\n };\r\n ResponseProcessor.prototype.appendViewStateToForms = function (forms, viewState) {\r\n var _this = this;\r\n forms.each(function (form) {\r\n var viewStateElems = form.querySelectorAll(SEL_VIEWSTATE_ELEM)\r\n .orElseLazy(function () { return _this.newViewStateElement(form); });\r\n viewStateElems.attr(\"value\").value = viewState;\r\n });\r\n };\r\n /**\r\n * Helper to Create a new JSF ViewState Element\r\n *\r\n * @param parent, the parent node to attach the viewstate element to\r\n * (usually a form node)\r\n */\r\n ResponseProcessor.prototype.newViewStateElement = function (parent) {\r\n var newViewState = DomQuery_1.DQ.fromMarkup(HTML_VIEWSTATE);\r\n newViewState.appendTo(parent);\r\n return newViewState;\r\n };\r\n /**\r\n * Stores certain aspects of the dom for later post processing\r\n *\r\n * @param updateForms the update forms which should receive standardized internal jsf data\r\n * @param toBeEvaled the resulting elements which should be evaled\r\n */\r\n ResponseProcessor.prototype.storeForPostProcessing = function (updateForms, toBeEvaled) {\r\n this.storeForUpdate(updateForms);\r\n this.storeForEval(toBeEvaled);\r\n };\r\n ResponseProcessor.prototype.storeForUpdate = function (updateForms) {\r\n this.internalContext.assign(UPDATE_FORMS).value.push(updateForms);\r\n };\r\n ResponseProcessor.prototype.storeForEval = function (toBeEvaled) {\r\n this.internalContext.assign(UPDATE_ELEMS).value.push(toBeEvaled);\r\n };\r\n ResponseProcessor.prototype.isViewStateNode = function (node) {\r\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\r\n var separatorchar = window.jsf.separatorchar;\r\n return \"undefined\" != typeof ((_b = (_a = node) === null || _a === void 0 ? void 0 : _a.id) === null || _b === void 0 ? void 0 : _b.value) && (((_d = (_c = node) === null || _c === void 0 ? void 0 : _c.id) === null || _d === void 0 ? void 0 : _d.value) == P_VIEWSTATE ||\r\n ((_g = (_f = (_e = node) === null || _e === void 0 ? void 0 : _e.id) === null || _f === void 0 ? void 0 : _f.value) === null || _g === void 0 ? void 0 : _g.indexOf([separatorchar, P_VIEWSTATE].join(\"\"))) != -1 ||\r\n ((_k = (_j = (_h = node) === null || _h === void 0 ? void 0 : _h.id) === null || _j === void 0 ? void 0 : _j.value) === null || _k === void 0 ? void 0 : _k.indexOf([P_VIEWSTATE, separatorchar].join(\"\"))) != -1);\r\n };\r\n return ResponseProcessor;\r\n}());\r\nexports.ResponseProcessor = ResponseProcessor;\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbWFpbi90eXBlc2NyaXB0L2ltcGwveGhyQ29yZS9SZXNwb25zZVByb2Nlc3Nvci50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tYWluL3R5cGVzY3JpcHQvaW1wbC94aHJDb3JlL1Jlc3BvbnNlUHJvY2Vzc29yLnRzP2Q0Y2IiXSwic291cmNlc0NvbnRlbnQiOlsiLyogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZSBvciBtb3JlXHJcbiAqIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUgZGlzdHJpYnV0ZWQgd2l0aFxyXG4gKiB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuXHJcbiAqIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wXHJcbiAqICh0aGUgXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGhcclxuICogdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcclxuICpcclxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuICpcclxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxyXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXHJcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxyXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXHJcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7Q29uZmlnLCBEb21RdWVyeSwgTGFuZywgU3RyZWFtLCBYTUxRdWVyeX0gZnJvbSBcIi4uLy4uL2V4dC9tb25hZGlzaFwiO1xyXG5pbXBvcnQge0NvbnN0fSBmcm9tIFwiLi4vY29yZS9Db25zdFwiO1xyXG5pbXBvcnQge0ltcGxlbWVudGF0aW9ufSBmcm9tIFwiLi4vQWpheEltcGxcIjtcclxuaW1wb3J0IHtBc3NlcnRpb25zfSBmcm9tIFwiLi4vdXRpbC9Bc3NlcnRpb25zXCI7XHJcblxyXG5pbXBvcnQge1Jlc29uc2VEYXRhUmVzb2x2ZXJ9IGZyb20gXCIuL1Jlc29uc2VEYXRhUmVzb2x2ZXJcIjtcclxuaW1wb3J0IHtJUmVzcG9uc2VQcm9jZXNzb3J9IGZyb20gXCIuL0lSZXNwb25zZVByb2Nlc3NvclwiO1xyXG5pbXBvcnQge0Vycm9yRGF0YX0gZnJvbSBcIi4vRXJyb3JEYXRhXCI7XHJcbmltcG9ydCB7RFF9IGZyb20gXCIuLi8uLi9leHQvbW9uYWRpc2gvRG9tUXVlcnlcIjtcclxuaW1wb3J0IHtFeHRMYW5nfSBmcm9tIFwiLi4vdXRpbC9MYW5nXCI7XHJcbmltcG9ydCB0cmltID0gTGFuZy50cmltO1xyXG5pbXBvcnQgZ2V0TG9jYWxPckdsb2JhbENvbmZpZyA9IEV4dExhbmcuZ2V0TG9jYWxPckdsb2JhbENvbmZpZztcclxuaW1wb3J0IHJlc29sdmVTb3VyY2VFbGVtZW50ID0gUmVzb25zZURhdGFSZXNvbHZlci5yZXNvbHZlU291cmNlRWxlbWVudDtcclxuaW1wb3J0IHJlc29sdmVTb3VyY2VGb3JtID0gUmVzb25zZURhdGFSZXNvbHZlci5yZXNvbHZlU291cmNlRm9ybTtcclxuXHJcbmltcG9ydCBUQUdfSEVBRCA9IENvbnN0LlRBR19IRUFEO1xyXG5pbXBvcnQgU0VMX1NDUklQVFNfU1RZTEVTID0gQ29uc3QuU0VMX1NDUklQVFNfU1RZTEVTO1xyXG5pbXBvcnQgVEFHX0JPRFkgPSBDb25zdC5UQUdfQk9EWTtcclxuaW1wb3J0IFRBR19GT1JNID0gQ29uc3QuVEFHX0ZPUk07XHJcbmltcG9ydCBTT1VSQ0UgPSBDb25zdC5TT1VSQ0U7XHJcbmltcG9ydCBFUlJPUl9OQU1FID0gQ29uc3QuRVJST1JfTkFNRTtcclxuaW1wb3J0IEVSUk9SX01FU1NBR0UgPSBDb25zdC5FUlJPUl9NRVNTQUdFO1xyXG5pbXBvcnQgUF9QQVJUSUFMX1NPVVJDRSA9IENvbnN0LlBfUEFSVElBTF9TT1VSQ0U7XHJcbmltcG9ydCBSRVNQT05TRV9YTUwgPSBDb25zdC5SRVNQT05TRV9YTUw7XHJcbmltcG9ydCBPTl9FUlJPUiA9IENvbnN0Lk9OX0VSUk9SO1xyXG5pbXBvcnQgVEFHX0JFRk9SRSA9IENvbnN0LlRBR19CRUZPUkU7XHJcbmltcG9ydCBUQUdfQUZURVIgPSBDb25zdC5UQUdfQUZURVI7XHJcbmltcG9ydCBVUERBVEVfRUxFTVMgPSBDb25zdC5VUERBVEVfRUxFTVM7XHJcbmltcG9ydCBVUERBVEVfRk9STVMgPSBDb25zdC5VUERBVEVfRk9STVM7XHJcbmltcG9ydCBTRUxfVklFV1NUQVRFX0VMRU0gPSBDb25zdC5TRUxfVklFV1NUQVRFX0VMRU07XHJcbmltcG9ydCBQX1ZJRVdTVEFURSA9IENvbnN0LlBfVklFV1NUQVRFO1xyXG5pbXBvcnQgQVRUUl9VUkwgPSBDb25zdC5BVFRSX1VSTDtcclxuaW1wb3J0IEVNUFRZX0ZVTkMgPSBDb25zdC5FTVBUWV9GVU5DO1xyXG5pbXBvcnQgVEFHX0FUVFIgPSBDb25zdC5UQUdfQVRUUjtcclxuaW1wb3J0IEFUVFJfTkFNRSA9IENvbnN0LkFUVFJfTkFNRTtcclxuaW1wb3J0IEFUVFJfVkFMVUUgPSBDb25zdC5BVFRSX1ZBTFVFO1xyXG5pbXBvcnQgSFRNTF9WSUVXU1RBVEUgPSBDb25zdC5IVE1MX1ZJRVdTVEFURTtcclxuaW1wb3J0IEFQUExJRURfVlNUID0gQ29uc3QuQVBQTElFRF9WU1Q7XHJcbmltcG9ydCBBVFRSX0lEID0gQ29uc3QuQVRUUl9JRDtcclxuXHJcbmltcG9ydCB7Vmlld1N0YXRlfSBmcm9tIFwiLi4vY29yZS9JbXBsVHlwZXNcIjtcclxuaW1wb3J0IHtFdmVudERhdGF9IGZyb20gXCIuL0V2ZW50RGF0YVwiO1xyXG5pbXBvcnQgU1VDQ0VTUyA9IENvbnN0LlNVQ0NFU1M7XHJcbmltcG9ydCBPTl9FVkVOVCA9IENvbnN0Lk9OX0VWRU5UO1xyXG5cclxuLyoqXHJcbiAqIFJlc3BvbnNlIHByb2Nlc3NvclxyXG4gKlxyXG4gKiBFYWNoICBYTUwgdGFnIGlzIGVpdGhlciBhIG5vZGUgb3IgYSBsZWFmXHJcbiAqIG9yIGJvdGhcclxuICpcclxuICogdGhlIHByb2Nlc3NvciBwcm92aWRlcyBhIHNldCBvZiBvcGVyYXRpb25zXHJcbiAqIHdoaWNoIGFyZSBleGVjdXRlZCBvbiBhIHNpbmdsZSBsZWFmIG5vZGUgcGVyIG9wZXJhdGlvblxyXG4gKiBhbmQgcHJlc2VudCB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IG9mIG91ciByZXNwb25zZVxyXG4gKlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFJlc3BvbnNlUHJvY2Vzc29yIGltcGxlbWVudHMgSVJlc3BvbnNlUHJvY2Vzc29yIHtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlcXVlc3Q6IENvbmZpZywgcHJpdmF0ZSBleHRlcm5hbENvbnRleHQ6IENvbmZpZywgcHJpdmF0ZSBpbnRlcm5hbENvbnRleHQ6IENvbmZpZykge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICByZXBsYWNlSGVhZChzaGFkb3dEb2N1bWVudDogWE1MUXVlcnkgfCBEUSkge1xyXG4gICAgICAgIGxldCBzaGFkb3dIZWFkID0gc2hhZG93RG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChUQUdfSEVBRCk7XHJcbiAgICAgICAgaWYgKCFzaGFkb3dIZWFkLmlzUHJlc2VudCgpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHNoYWRvd0lubmVySFRNTDogc3RyaW5nID0gPHN0cmluZz5zaGFkb3dIZWFkLmh0bWwoKS52YWx1ZTtcclxuICAgICAgICBsZXQgb2xkSGVhZCA9IERRLnF1ZXJ5U2VsZWN0b3JBbGwoVEFHX0hFQUQpO1xyXG5cclxuICAgICAgICAvL2RlbGV0ZSBhbGwgdG8gYXZvaWQgc2NyaXB0IGFuZCBzdHlsZSBvdmVybGF5c1xyXG4gICAgICAgIG9sZEhlYWQucXVlcnlTZWxlY3RvckFsbChTRUxfU0NSSVBUU19TVFlMRVMpLmRlbGV0ZSgpO1xyXG5cclxuICAgICAgICB0aGlzLnN0b3JlRm9yRXZhbChzaGFkb3dIZWFkKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIHJlcGxhY2VzIHRoZSBib2R5IGluIHRoZSBleHBlY3RlZCBtYW5uZXJcclxuICAgICAqIHdoaWNoIG1lYW5zIHRoZSBlbnRpcmUgYm9keSBjb250ZW50IGlzIHJlZnJlc2hlZFxyXG4gICAgICogaG93ZXZlciBhbHNvIHRoZSBib2R5IGF0dHJpYnV0ZXMgbXVzdCBiZSB0cmFuc2ZlcnJlZFxyXG4gICAgICoga2VlcGluZyBldmVudCBoYW5kbGVycyBldGMuLi4gaW4gcGxhY2VcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gc2hhZG93RG9jdW1lbnQgLi4gYW4gaW5jb21pbmcgc2hhZG93IGRvY3VtZW50IGhvc3RpbmcgdGhlIG5ldyBub2Rlc1xyXG4gICAgICovXHJcbiAgICByZXBsYWNlQm9keShzaGFkb3dEb2N1bWVudDogWE1MUXVlcnkgfCBEUSkge1xyXG5cclxuICAgICAgICBsZXQgc2hhZG93Qm9keSA9IHNoYWRvd0RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoVEFHX0JPRFkpO1xyXG4gICAgICAgIGlmICghc2hhZG93Qm9keS5pc1ByZXNlbnQoKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgc2hhZG93SW5uZXJIVE1MOiBzdHJpbmcgPSA8c3RyaW5nPnNoYWRvd0JvZHkuaHRtbCgpLnZhbHVlO1xyXG5cclxuICAgICAgICBsZXQgcmVzdWx0aW5nQm9keSA9IDxEUT5EUS5xdWVyeVNlbGVjdG9yQWxsKFRBR19CT0RZKS5odG1sKHNoYWRvd0lubmVySFRNTCk7XHJcbiAgICAgICAgbGV0IHVwZGF0ZUZvcm1zID0gcmVzdWx0aW5nQm9keS5xdWVyeVNlbGVjdG9yQWxsKFRBR19GT1JNKTtcclxuXHJcbiAgICAgICAgcmVzdWx0aW5nQm9keS5jb3B5QXR0cnMoc2hhZG93Qm9keSk7XHJcblxyXG4gICAgICAgIHRoaXMuc3RvcmVGb3JQb3N0UHJvY2Vzc2luZyh1cGRhdGVGb3JtcywgcmVzdWx0aW5nQm9keSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMZWFmIFRhZyBldmFsLi4uIHByb2Nlc3Mgd2hhdGV2ZXIgaXMgaW4gdGhlIGV2YWxzIGNkYXRhIGJsb2NrXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIG5vZGUgdGhlIG5vZGUgdG8gZXZhbFxyXG4gICAgICovXHJcbiAgICBldmFsKG5vZGU6IFhNTFF1ZXJ5KSB7XHJcbiAgICAgICAgRFEuZ2xvYmFsRXZhbChub2RlLmNEQVRBQXNTdHJpbmcpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogcHJvY2Vzc2VzIGFuIGluY29taW5nIGVycm9yIGZyb20gdGhlIHJlc3BvbnNlXHJcbiAgICAgKiB3aGljaCBpcyBob3N0ZWQgdW5kZXIgdGhlICZsdDtlcnJvciZndDsgdGFnXHJcbiAgICAgKiBAcGFyYW0gcmVxdWVzdCB0aGUgY3VycmVudCByZXF1ZXN0XHJcbiAgICAgKiBAcGFyYW0gY29udGV4dCB0aGUgY29udGV4dCBvYmplY3RcclxuICAgICAqIEBwYXJhbSBub2RlIHRoZSBub2RlIGluIHRoZSB4bWwgaG9zdGluZyB0aGUgZXJyb3IgbWVzc2FnZVxyXG4gICAgICovXHJcbiAgICBlcnJvcihub2RlOiBYTUxRdWVyeSkge1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIDxlcnJvcj5cclxuICAgICAgICAgKiAgICAgIDxlcnJvci1uYW1lPlN0cmluZzwvZXJyb3ItbmFtZT5cclxuICAgICAgICAgKiAgICAgIDxlcnJvci1tZXNzYWdlPjwhW0NEQVRBW21lc3NhZ2VdXT48L2Vycm9yLW1lc3NhZ2U+XHJcbiAgICAgICAgICogPGVycm9yPlxyXG4gICAgICAgICAqL1xyXG5cclxuICAgICAgICBsZXQgbWVyZ2VkRXJyb3JEYXRhID0gbmV3IENvbmZpZyh7fSk7XHJcbiAgICAgICAgbWVyZ2VkRXJyb3JEYXRhLmFzc2lnbihTT1VSQ0UpLnZhbHVlID0gdGhpcy5leHRlcm5hbENvbnRleHQuZ2V0SWYoUF9QQVJUSUFMX1NPVVJDRSkuZ2V0KDApLnZhbHVlO1xyXG4gICAgICAgIG1lcmdlZEVycm9yRGF0YS5hc3NpZ24oRVJST1JfTkFNRSkudmFsdWUgPSBub2RlLmdldElmKEVSUk9SX05BTUUpLnRleHRDb250ZW50KFwiXCIpO1xyXG4gICAgICAgIG1lcmdlZEVycm9yRGF0YS5hc3NpZ24oRVJST1JfTUVTU0FHRSkudmFsdWUgPSBub2RlLmdldElmKEVSUk9SX01FU1NBR0UpLmNEQVRBQXNTdHJpbmc7XHJcblxyXG4gICAgICAgIGxldCBoYXNSZXNwb25zZVhNTCA9IHRoaXMuaW50ZXJuYWxDb250ZXh0LmdldChSRVNQT05TRV9YTUwpLmlzUHJlc2VudCgpO1xyXG4gICAgICAgIG1lcmdlZEVycm9yRGF0YS5hc3NpZ25JZihoYXNSZXNwb25zZVhNTCwgUkVTUE9OU0VfWE1MKS52YWx1ZSA9IHRoaXMuaW50ZXJuYWxDb250ZXh0LmdldElmKFJFU1BPTlNFX1hNTCkudmFsdWUuZ2V0KDApLnZhbHVlO1xyXG5cclxuICAgICAgICBsZXQgZXJyb3JEYXRhID0gRXJyb3JEYXRhLmZyb21TZXJ2ZXJFcnJvcihtZXJnZWRFcnJvckRhdGEpO1xyXG5cclxuICAgICAgICB0aGlzLmV4dGVybmFsQ29udGV4dC5nZXRJZihPTl9FUlJPUikub3JFbHNlKHRoaXMuaW50ZXJuYWxDb250ZXh0LmdldElmKE9OX0VSUk9SKS52YWx1ZSkub3JFbHNlKEVNUFRZX0ZVTkMpLnZhbHVlKGVycm9yRGF0YSk7XHJcbiAgICAgICAgSW1wbGVtZW50YXRpb24uc2VuZEVycm9yKGVycm9yRGF0YSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBwcm9jZXNzIHRoZSByZWRpcmVjdCBvcGVyYXRpb25cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gbm9kZVxyXG4gICAgICovXHJcbiAgICByZWRpcmVjdChub2RlOiBYTUxRdWVyeSkge1xyXG4gICAgICAgIEFzc2VydGlvbnMuYXNzZXJ0VXJsRXhpc3RzKG5vZGUpO1xyXG5cclxuICAgICAgICBsZXQgcmVkaXJlY3RVcmwgPSB0cmltKG5vZGUuYXR0cihBVFRSX1VSTCkudmFsdWUpO1xyXG4gICAgICAgIGlmIChyZWRpcmVjdFVybCAhPSBcIlwiKSB7XHJcbiAgICAgICAgICAgICg8YW55PndpbmRvdykubG9jYXRpb24uaHJlZiA9IHJlZGlyZWN0VXJsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIHByb2Nlc3NlcyB0aGUgdXBkYXRlIG9wZXJhdGlvbiBhbmQgdXBkYXRlcyB0aGUgbm9kZSB3aXRoIHRoZSBjZGF0YSBibG9ja1xyXG4gICAgICogQHBhcmFtIGNvbnRleHRcclxuICAgICAqIEBwYXJhbSBpbnRlcm5hbENvbnRleHRcclxuICAgICAqIEBwYXJhbSBub2RlXHJcbiAgICAgKiBAcGFyYW0gY2RhdGFCbG9ja1xyXG4gICAgICovXHJcbiAgICB1cGRhdGUobm9kZTogWE1MUXVlcnksIGNkYXRhQmxvY2s6IHN0cmluZykge1xyXG4gICAgICAgIGxldCByZXN1bHQgPSBEUS5ieUlkKG5vZGUuaWQudmFsdWUpLm91dGVySFRNTChjZGF0YUJsb2NrLCBmYWxzZSwgZmFsc2UpO1xyXG4gICAgICAgIGxldCBzb3VyY2VGb3JtID0gcmVzdWx0Py5wYXJlbnRzKFRBR19GT1JNKS5vckVsc2UocmVzdWx0LmJ5VGFnTmFtZShUQUdfRk9STSwgdHJ1ZSkpO1xyXG4gICAgICAgIGlmKHNvdXJjZUZvcm0pIHtcclxuICAgICAgICAgICAgdGhpcy5zdG9yZUZvclBvc3RQcm9jZXNzaW5nKHNvdXJjZUZvcm0sIHJlc3VsdCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBkZWxldGUobm9kZTogWE1MUXVlcnkpIHtcclxuICAgICAgICBEUS5ieUlkKG5vZGUuaWQudmFsdWUpLmRlbGV0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogYXR0cmlidXRlcyBsZWFmIHRhZy4uLiBwcm9jZXNzIHRoZSBhdHRyaWJ1dGVzXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIG5vZGVcclxuICAgICAqL1xyXG4gICAgYXR0cmlidXRlcyhub2RlOiBYTUxRdWVyeSkge1xyXG4gICAgICAgIGxldCBlbGVtID0gRFEuYnlJZChub2RlLmlkLnZhbHVlKTtcclxuXHJcbiAgICAgICAgbm9kZS5ieVRhZ05hbWUoVEFHX0FUVFIpLmVhY2goKGl0ZW06IFhNTFF1ZXJ5KSA9PiB7XHJcbiAgICAgICAgICAgIGVsZW0uYXR0cihpdGVtLmF0dHIoQVRUUl9OQU1FKS52YWx1ZSkudmFsdWUgPSBpdGVtLmF0dHIoQVRUUl9WQUxVRSkudmFsdWU7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcGFyYW0gc2hhZG93blJlc3BvbnNlXHJcbiAgICAgKi9cclxuICAgIHJlcGxhY2VWaWV3Um9vdChzaGFkb3dEb2N1bWVudDogWE1MUXVlcnkpIHtcclxuICAgICAgICB0aGlzLnJlcGxhY2VIZWFkKHNoYWRvd0RvY3VtZW50KTtcclxuICAgICAgICB0aGlzLnJlcGxhY2VCb2R5KHNoYWRvd0RvY3VtZW50KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGluc2VydCBoYW5kbGluZywgZWl0aGVyIGJlZm9yZSBvciBhZnRlclxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBub2RlXHJcbiAgICAgKi9cclxuICAgIGluc2VydChub2RlOiBYTUxRdWVyeSkge1xyXG4gICAgICAgIC8vbGV0IGluc2VydElkID0gbm9kZS5pZDsgLy9ub3QgdXNlZCBhdG1cclxuXHJcbiAgICAgICAgbGV0IGJlZm9yZSA9IG5vZGUuYXR0cihUQUdfQkVGT1JFKTtcclxuICAgICAgICBsZXQgYWZ0ZXIgPSBub2RlLmF0dHIoVEFHX0FGVEVSKTtcclxuXHJcbiAgICAgICAgbGV0IGluc2VydE5vZGVzID0gRFEuZnJvbU1hcmt1cCg8YW55Pm5vZGUuY0RBVEFBc1N0cmluZyk7XHJcblxyXG4gICAgICAgIGlmIChiZWZvcmUuaXNQcmVzZW50KCkpIHtcclxuICAgICAgICAgICAgbGV0IHJlcyA9IERRLmJ5SWQoYmVmb3JlLnZhbHVlKS5pbnNlcnRCZWZvcmUoaW5zZXJ0Tm9kZXMpO1xyXG4gICAgICAgICAgICB0aGlzLmludGVybmFsQ29udGV4dC5hc3NpZ24oVVBEQVRFX0VMRU1TKS52YWx1ZS5wdXNoKGluc2VydE5vZGVzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGFmdGVyLmlzUHJlc2VudCgpKSB7XHJcbiAgICAgICAgICAgIGxldCBkb21RdWVyeSA9IERRLmJ5SWQoYWZ0ZXIudmFsdWUpO1xyXG4gICAgICAgICAgICBkb21RdWVyeS5pbnNlcnRBZnRlcihpbnNlcnROb2Rlcyk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmludGVybmFsQ29udGV4dC5hc3NpZ24oVVBEQVRFX0VMRU1TKS52YWx1ZS5wdXNoKGluc2VydE5vZGVzKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaW5zZXJ0V2l0aFN1YnRhZ3Mobm9kZTogWE1MUXVlcnkpIHtcclxuICAgICAgICBsZXQgYmVmb3JlID0gbm9kZS5xdWVyeVNlbGVjdG9yQWxsKFRBR19CRUZPUkUpO1xyXG4gICAgICAgIGxldCBhZnRlciA9IG5vZGUucXVlcnlTZWxlY3RvckFsbChUQUdfQUZURVIpO1xyXG5cclxuICAgICAgICBiZWZvcmUuZWFjaChpdGVtID0+IHtcclxuICAgICAgICAgICAgbGV0IGluc2VydElkID0gaXRlbS5hdHRyKEFUVFJfSUQpO1xyXG4gICAgICAgICAgICBsZXQgaW5zZXJ0Tm9kZXMgPSBEUS5mcm9tTWFya3VwKDxhbnk+aXRlbS5jREFUQUFzU3RyaW5nKTtcclxuICAgICAgICAgICAgaWYoaW5zZXJ0SWQuaXNQcmVzZW50KCkpIHtcclxuICAgICAgICAgICAgICAgIERRLmJ5SWQoaW5zZXJ0SWQudmFsdWUpLmluc2VydEJlZm9yZShpbnNlcnROb2Rlcyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmludGVybmFsQ29udGV4dC5hc3NpZ24oVVBEQVRFX0VMRU1TKS52YWx1ZS5wdXNoKGluc2VydE5vZGVzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBhZnRlci5lYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICBsZXQgaW5zZXJ0SWQgPSBpdGVtLmF0dHIoQVRUUl9JRCk7XHJcbiAgICAgICAgICAgIGxldCBpbnNlcnROb2RlcyA9IERRLmZyb21NYXJrdXAoPGFueT5pdGVtLmNEQVRBQXNTdHJpbmcpO1xyXG4gICAgICAgICAgICBpZihpbnNlcnRJZC5pc1ByZXNlbnQoKSkge1xyXG4gICAgICAgICAgICAgICAgRFEuYnlJZChpbnNlcnRJZC52YWx1ZSkuaW5zZXJ0QWZ0ZXIoaW5zZXJ0Tm9kZXMpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbnRlcm5hbENvbnRleHQuYXNzaWduKFVQREFURV9FTEVNUykudmFsdWUucHVzaChpbnNlcnROb2Rlcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIHByb2Nlc3MgdGhlIHZpZXdTdGF0ZSB1cGRhdGUsIHVwZGF0ZSB0aGUgYWZmZWN0ZWRcclxuICAgICAqIGZvcm1zIHdpdGggdGhlaXIgcmVzcGVjdGl2ZSBuZXcgdmlld3N0YXRlIHZhbHVlc1xyXG4gICAgICpcclxuICAgICAqL1xyXG4gICAgcHJvY2Vzc1ZpZXdTdGF0ZShub2RlOiBYTUxRdWVyeSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmKCB0aGlzLmlzVmlld1N0YXRlTm9kZShub2RlKSkge1xyXG4gICAgICAgICAgICBsZXQgdmlld1N0YXRlVmFsdWUgPSBub2RlLnRleHRDb250ZW50KCk7XHJcbiAgICAgICAgICAgIHRoaXMuaW50ZXJuYWxDb250ZXh0LmFzc2lnbihBUFBMSUVEX1ZTVCwgbm9kZS5pZC52YWx1ZSkudmFsdWUgPSBuZXcgVmlld1N0YXRlKG5vZGUuaWQudmFsdWUsIHZpZXdTdGF0ZVZhbHVlKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBnbG9iYWxFdmFsKCkge1xyXG4gICAgICAgIGxldCB1cGRhdGVFbGVtcyA9IG5ldyBEUSguLi50aGlzLmludGVybmFsQ29udGV4dC5nZXRJZihVUERBVEVfRUxFTVMpLnZhbHVlKTtcclxuICAgICAgICB1cGRhdGVFbGVtcy5ydW5Dc3MoKTtcclxuICAgICAgICB1cGRhdGVFbGVtcy5ydW5TY3JpcHRzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZml4Vmlld1N0YXRlcygpIHtcclxuICAgICAgICBTdHJlYW0ub2ZBc3NvYzxWaWV3U3RhdGU+KHRoaXMuaW50ZXJuYWxDb250ZXh0LmdldElmKEFQUExJRURfVlNUKS5vckVsc2Uoe30pLnZhbHVlKVxyXG4gICAgICAgICAgICAuZWFjaCgoaXRlbTogQXJyYXk8YW55PikgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IGtleSA9IGl0ZW1bMF07XHJcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWU6IFZpZXdTdGF0ZSA9aXRlbVsxXTtcclxuICAgICAgICAgICAgICAgIGxldCBuYW1lU3BhY2UgPSBEUS5ieUlkKHZhbHVlLm5hbWVTcGFjZSkub3JFbHNlKGRvY3VtZW50LmJvZHkpO1xyXG4gICAgICAgICAgICAgICAgbGV0IGFmZmVjdGVkRm9ybXMgPSBuYW1lU3BhY2UuYnlUYWdOYW1lKFRBR19GT1JNKTtcclxuICAgICAgICAgICAgICAgIGxldCBhZmZlY3RlZEZvcm1zMiA9IG5hbWVTcGFjZS5maWx0ZXIoaXRlbSA9PiBpdGVtLnRhZ05hbWUub3JFbHNlKFwiXCIpLnZhbHVlLnRvTG93ZXJDYXNlKCkgPT0gVEFHX0ZPUk0pO1xyXG5cclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmFwcGVuZFZpZXdTdGF0ZVRvRm9ybXMobmV3IERvbVF1ZXJ5KGFmZmVjdGVkRm9ybXMsIGFmZmVjdGVkRm9ybXMyKSwgdmFsdWUudmFsdWUpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBkb25lKCkge1xyXG4gICAgICAgIGxldCBldmVudERhdGEgPSBFdmVudERhdGEuY3JlYXRlRnJvbVJlcXVlc3QodGhpcy5yZXF1ZXN0LnZhbHVlLCB0aGlzLmV4dGVybmFsQ29udGV4dCwgU1VDQ0VTUyk7XHJcblxyXG4gICAgICAgIC8vYmVjYXVzZSBzb21lIGZyYW1ld29ya3MgbWlnaHQgZGVjb3JhdGUgdGhlbSBvdmVyIHRoZSBjb250ZXh0IGluIHRoZSByZXNwb25zZVxyXG4gICAgICAgIGxldCBldmVudEhhbmRsZXIgPSB0aGlzLmV4dGVybmFsQ29udGV4dC5nZXRJZihPTl9FVkVOVCkub3JFbHNlKHRoaXMuaW50ZXJuYWxDb250ZXh0LmdldElmKE9OX0VWRU5UKS52YWx1ZSkub3JFbHNlKEVNUFRZX0ZVTkMpLnZhbHVlO1xyXG4gICAgICAgIEltcGxlbWVudGF0aW9uLnNlbmRFdmVudChldmVudERhdGEsICBldmVudEhhbmRsZXIpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBwcml2YXRlIGlzQWxsRm9ybVJlc29sdXRpb24oY29udGV4dDogQ29uZmlnKSB7XHJcbiAgICAgICAgcmV0dXJuIGdldExvY2FsT3JHbG9iYWxDb25maWcoY29udGV4dCwgXCJub19wb3J0bGV0X2VudlwiLCBmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhcHBlbmRWaWV3U3RhdGVUb0Zvcm1zKGZvcm1zOiBEUSwgdmlld1N0YXRlOiBzdHJpbmcpIHtcclxuICAgICAgICBmb3Jtcy5lYWNoKChmb3JtOiBEUSkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgdmlld1N0YXRlRWxlbXMgPSBmb3JtLnF1ZXJ5U2VsZWN0b3JBbGwoU0VMX1ZJRVdTVEFURV9FTEVNKVxyXG4gICAgICAgICAgICAgICAgLm9yRWxzZUxhenkoKCkgPT4gdGhpcy5uZXdWaWV3U3RhdGVFbGVtZW50KGZvcm0pKTtcclxuXHJcbiAgICAgICAgICAgIHZpZXdTdGF0ZUVsZW1zLmF0dHIoXCJ2YWx1ZVwiKS52YWx1ZSA9IHZpZXdTdGF0ZTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEhlbHBlciB0byBDcmVhdGUgYSBuZXcgSlNGIFZpZXdTdGF0ZSBFbGVtZW50XHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHBhcmVudCwgdGhlIHBhcmVudCBub2RlIHRvIGF0dGFjaCB0aGUgdmlld3N0YXRlIGVsZW1lbnQgdG9cclxuICAgICAqICh1c3VhbGx5IGEgZm9ybSBub2RlKVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIG5ld1ZpZXdTdGF0ZUVsZW1lbnQocGFyZW50OiBEUSk6IERRIHtcclxuICAgICAgICBsZXQgbmV3Vmlld1N0YXRlID0gRFEuZnJvbU1hcmt1cChIVE1MX1ZJRVdTVEFURSk7XHJcbiAgICAgICAgbmV3Vmlld1N0YXRlLmFwcGVuZFRvKHBhcmVudCk7XHJcbiAgICAgICAgcmV0dXJuIG5ld1ZpZXdTdGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFN0b3JlcyBjZXJ0YWluIGFzcGVjdHMgb2YgdGhlIGRvbSBmb3IgbGF0ZXIgcG9zdCBwcm9jZXNzaW5nXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHVwZGF0ZUZvcm1zIHRoZSB1cGRhdGUgZm9ybXMgd2hpY2ggc2hvdWxkIHJlY2VpdmUgc3RhbmRhcmRpemVkIGludGVybmFsIGpzZiBkYXRhXHJcbiAgICAgKiBAcGFyYW0gdG9CZUV2YWxlZCB0aGUgcmVzdWx0aW5nIGVsZW1lbnRzIHdoaWNoIHNob3VsZCBiZSBldmFsZWRcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBzdG9yZUZvclBvc3RQcm9jZXNzaW5nKHVwZGF0ZUZvcm1zOiBEUSwgdG9CZUV2YWxlZDogRFEpIHtcclxuICAgICAgICB0aGlzLnN0b3JlRm9yVXBkYXRlKHVwZGF0ZUZvcm1zKTtcclxuICAgICAgICB0aGlzLnN0b3JlRm9yRXZhbCh0b0JlRXZhbGVkKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHN0b3JlRm9yVXBkYXRlKHVwZGF0ZUZvcm1zOiBEUSkge1xyXG4gICAgICAgIHRoaXMuaW50ZXJuYWxDb250ZXh0LmFzc2lnbihVUERBVEVfRk9STVMpLnZhbHVlLnB1c2godXBkYXRlRm9ybXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3RvcmVGb3JFdmFsKHRvQmVFdmFsZWQ6IERRKSB7XHJcbiAgICAgICAgdGhpcy5pbnRlcm5hbENvbnRleHQuYXNzaWduKFVQREFURV9FTEVNUykudmFsdWUucHVzaCh0b0JlRXZhbGVkKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGlzVmlld1N0YXRlTm9kZShub2RlOiBYTUxRdWVyeSkge1xyXG4gICAgICAgIGxldCBzZXBhcmF0b3JjaGFyID0gKDxhbnk+d2luZG93KS5qc2Yuc2VwYXJhdG9yY2hhcjtcclxuICAgICAgICByZXR1cm4gXCJ1bmRlZmluZWRcIiAhPSB0eXBlb2Ygbm9kZT8uaWQ/LnZhbHVlICYmICggbm9kZT8uaWQ/LnZhbHVlID09IFBfVklFV1NUQVRFIHx8XHJcbiAgICAgICAgICAgIG5vZGU/LmlkPy52YWx1ZT8uaW5kZXhPZihbc2VwYXJhdG9yY2hhciwgUF9WSUVXU1RBVEVdLmpvaW4oXCJcIikpICE9IC0xIHx8XHJcbiAgICAgICAgICAgIG5vZGU/LmlkPy52YWx1ZT8uaW5kZXhPZihbUF9WSUVXU1RBVEUsIHNlcGFyYXRvcmNoYXJdLmpvaW4oXCJcIikpICE9IC0xICk7XHJcbiAgICB9XHJcblxyXG59Il0sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7O0FBY0E7Ozs7Ozs7OztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7Ozs7Ozs7Ozs7QUFVQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTs7Ozs7OztBQU9BO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUVBOzs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7Ozs7O0FBTUE7QUFDQTtBQUNBOzs7OztBQUtBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFFQTs7OztBQUlBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7Ozs7O0FBTUE7QUFDQTs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFFQTs7OztBQUlBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7O0FBSUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7OztBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBOztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBeFJBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/main/typescript/impl/xhrCore/ResponseProcessor.ts\n");
/***/ }),
/***/ "./src/main/typescript/impl/xhrCore/XhrFormData.ts":
/*!*********************************************************!*\
!*** ./src/main/typescript/impl/xhrCore/XhrFormData.ts ***!
\*********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\r\n/* Licensed to the Apache Software Foundation (ASF) under one or more\r\n * contributor license agreements. See the NOTICE file distributed with\r\n * this work for additional information regarding copyright ownership.\r\n * The ASF licenses this file to you under the Apache License, Version 2.0\r\n * (the \"License\"); you may not use this file except in compliance with\r\n * the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar monadish_1 = __webpack_require__(/*! ../../ext/monadish */ \"./src/main/typescript/ext/monadish/index.ts\");\r\nvar Const_1 = __webpack_require__(/*! ../core/Const */ \"./src/main/typescript/impl/core/Const.ts\");\r\nvar Stream_1 = __webpack_require__(/*! ../../ext/monadish/Stream */ \"./src/main/typescript/ext/monadish/Stream.ts\");\r\nvar DomQuery_1 = __webpack_require__(/*! ../../ext/monadish/DomQuery */ \"./src/main/typescript/ext/monadish/DomQuery.ts\");\r\nvar isString = monadish_1.Lang.isString;\r\nvar P_VIEWSTATE = Const_1.Const.P_VIEWSTATE;\r\n/**\r\n * we simplify now compared to the old form handling\r\n * given that we have a configuration in place we can recycle that\r\n * for the entire parameter generation\r\n * then we have two fallbacks one for the non multipart case\r\n * the other one for the multipart case\r\n *\r\n * From outside we work on a single form configuration\r\n * which we can use like any other config\r\n *\r\n * TODO make this code smaller we might have\r\n * enough leverage in the streams collectors\r\n * api just to do that.\r\n */\r\nvar XhrFormData = /** @class */ (function (_super) {\r\n __extends(XhrFormData, _super);\r\n /**\r\n * by the time we hit this code, datasource alöready must be of type form\r\n *\r\n * @param dataSource either a form as domquery object or an encoded url string\r\n * @param partialIdsArray partial ids to collect\r\n */\r\n function XhrFormData(dataSource, partialIdsArray) {\r\n var _this = _super.call(this, {}) || this;\r\n _this.dataSource = dataSource;\r\n _this.partialIdsArray = partialIdsArray;\r\n //a call to getViewState before must pass the encoded line\r\n //a call from getViewState passes the form element as datasource\r\n //so we have two call points\r\n if (isString(dataSource)) {\r\n _this.handleStringSource();\r\n }\r\n else {\r\n _this.handleFormSource();\r\n }\r\n return _this;\r\n }\r\n XhrFormData.prototype.handleFormSource = function () {\r\n //encode and append the issuing item if not a partial ids array of ids is passed\r\n /*\r\n * Spec. 13.3.1\r\n * Collect and encode input elements.\r\n * Additionally the hidden element javax.faces.ViewState\r\n * Enhancement partial page submit\r\n *\r\n */\r\n this.encodeSubmittableFields(this, this.dataSource, this.partialIdsArray);\r\n if (this.getIf(P_VIEWSTATE).isPresent()) {\r\n return;\r\n }\r\n this.applyViewState(this.dataSource);\r\n };\r\n XhrFormData.prototype.handleStringSource = function () {\r\n this.mergeEncodedString(this.dataSource);\r\n return;\r\n };\r\n XhrFormData.prototype.applyViewState = function (form) {\r\n var _this = this;\r\n form.byId(Const_1.Const.P_VIEWSTATE)\r\n .ifPresentLazy(function (elem) {\r\n var value = elem.inputValue.value;\r\n _this.assignIf(!!value, Const_1.Const.P_VIEWSTATE).value = value;\r\n });\r\n };\r\n XhrFormData.prototype.mergeEncodedString = function (encoded) {\r\n var _this = this;\r\n var splittedEntries = encoded.split(/\\&/gi);\r\n Stream_1.Stream.of.apply(Stream_1.Stream, splittedEntries).map(function (line) { return line.split(/\\=/gi); })\r\n .each(function (keyVal) {\r\n _this.assign(keyVal[0]).value = keyVal[1] || null;\r\n });\r\n };\r\n // noinspection JSUnusedGlobalSymbols\r\n /**\r\n * @returns a Form data representation\r\n */\r\n XhrFormData.prototype.toFormData = function () {\r\n var ret = new FormData();\r\n for (var key in this.value) {\r\n if (this.value.hasOwnProperty(key)) {\r\n ret.append(key, this.value[key]);\r\n }\r\n }\r\n return ret;\r\n };\r\n /**\r\n * returns an encoded string representation of our xhr form data\r\n *\r\n * @param defaultStr optional default value if nothing is there to encode\r\n */\r\n XhrFormData.prototype.toString = function (defaultStr) {\r\n if (defaultStr === void 0) { defaultStr = \"\"; }\r\n if (this.isAbsent()) {\r\n return defaultStr;\r\n }\r\n var entries = [];\r\n for (var key in this.value) {\r\n if (this.value.hasOwnProperty(key)) {\r\n //key value already encoded so no need to reencode them again\r\n entries.push(key + \"=\" + this.value[key]);\r\n }\r\n }\r\n return entries.join(\"&\");\r\n };\r\n /**\r\n * determines fields to submit\r\n * @param {Object} targetBuf - the target form buffer receiving the data\r\n * @param {Node} parentItem - form element item is nested in\r\n * @param {Array} partialIds - ids fo PPS\r\n */\r\n XhrFormData.prototype.encodeSubmittableFields = function (targetBuf, parentItem, partialIds) {\r\n var toEncode = null;\r\n if (this.partialIdsArray && this.partialIdsArray.length) {\r\n //in case of our myfaces reduced ppr we only\r\n //only submit the partials\r\n //TODO maybe also the window id and other defaults lets see\r\n //this is not a spec case anyway\r\n this._value = {};\r\n toEncode = new (DomQuery_1.DQ.bind.apply(DomQuery_1.DQ, __spreadArrays([void 0], this.partialIdsArray)))();\r\n }\r\n else {\r\n if (parentItem.isAbsent())\r\n throw \"NO_PARITEM\";\r\n toEncode = parentItem;\r\n }\r\n //lets encode the form elements\r\n this.shallowMerge(toEncode.querySelectorAll(\"input, checkbox, select, textarea\").encodeFormElement());\r\n };\r\n Object.defineProperty(XhrFormData.prototype, \"isMultipartRequest\", {\r\n get: function () {\r\n return this.dataSource instanceof DomQuery_1.DQ && this.dataSource.querySelectorAll(\"input[type='file']\").isPresent();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return XhrFormData;\r\n}(monadish_1.Config));\r\nexports.XhrFormData = XhrFormData;\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbWFpbi90eXBlc2NyaXB0L2ltcGwveGhyQ29yZS9YaHJGb3JtRGF0YS50cy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tYWluL3R5cGVzY3JpcHQvaW1wbC94aHJDb3JlL1hockZvcm1EYXRhLnRzP2I1MGIiXSwic291cmNlc0NvbnRlbnQiOlsiLyogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZSBvciBtb3JlXHJcbiAqIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUgZGlzdHJpYnV0ZWQgd2l0aFxyXG4gKiB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuXHJcbiAqIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wXHJcbiAqICh0aGUgXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGhcclxuICogdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcclxuICpcclxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuICpcclxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxyXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXHJcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxyXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXHJcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7Q29uZmlnLCBMYW5nfSBmcm9tIFwiLi4vLi4vZXh0L21vbmFkaXNoXCI7XHJcbmltcG9ydCB7Q29uc3R9IGZyb20gXCIuLi9jb3JlL0NvbnN0XCI7XHJcbmltcG9ydCB7SW1wbGVtZW50YXRpb259IGZyb20gXCIuLi9BamF4SW1wbFwiO1xyXG5cclxuaW1wb3J0IHtTdHJlYW19IGZyb20gXCIuLi8uLi9leHQvbW9uYWRpc2gvU3RyZWFtXCI7XHJcbmltcG9ydCB7RFF9IGZyb20gXCIuLi8uLi9leHQvbW9uYWRpc2gvRG9tUXVlcnlcIjtcclxuaW1wb3J0IGlzU3RyaW5nID0gTGFuZy5pc1N0cmluZztcclxuaW1wb3J0IFBfVklFV1NUQVRFID0gQ29uc3QuUF9WSUVXU1RBVEU7XHJcblxyXG5kZWNsYXJlIGxldCBqc2Y6IGFueTtcclxuXHJcbi8qKlxyXG4gKiB3ZSBzaW1wbGlmeSBub3cgY29tcGFyZWQgdG8gdGhlIG9sZCBmb3JtIGhhbmRsaW5nXHJcbiAqIGdpdmVuIHRoYXQgd2UgaGF2ZSBhIGNvbmZpZ3VyYXRpb24gaW4gcGxhY2Ugd2UgY2FuIHJlY3ljbGUgdGhhdFxyXG4gKiBmb3IgdGhlIGVudGlyZSBwYXJhbWV0ZXIgZ2VuZXJhdGlvblxyXG4gKiB0aGVuIHdlIGhhdmUgdHdvIGZhbGxiYWNrcyBvbmUgZm9yIHRoZSBub24gbXVsdGlwYXJ0IGNhc2VcclxuICogdGhlIG90aGVyIG9uZSBmb3IgdGhlIG11bHRpcGFydCBjYXNlXHJcbiAqXHJcbiAqIEZyb20gb3V0c2lkZSB3ZSB3b3JrIG9uIGEgc2luZ2xlIGZvcm0gY29uZmlndXJhdGlvblxyXG4gKiB3aGljaCB3ZSBjYW4gdXNlIGxpa2UgYW55IG90aGVyIGNvbmZpZ1xyXG4gKlxyXG4gKiBUT0RPIG1ha2UgdGhpcyBjb2RlIHNtYWxsZXIgd2UgbWlnaHQgaGF2ZVxyXG4gKiBlbm91Z2ggbGV2ZXJhZ2UgaW4gdGhlIHN0cmVhbXMgY29sbGVjdG9yc1xyXG4gKiBhcGkganVzdCB0byBkbyB0aGF0LlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFhockZvcm1EYXRhIGV4dGVuZHMgQ29uZmlnIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGJ5IHRoZSB0aW1lIHdlIGhpdCB0aGlzIGNvZGUsIGRhdGFzb3VyY2UgYWzDtnJlYWR5IG11c3QgYmUgb2YgdHlwZSBmb3JtXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGRhdGFTb3VyY2UgZWl0aGVyIGEgZm9ybSBhcyBkb21xdWVyeSBvYmplY3Qgb3IgYW4gZW5jb2RlZCB1cmwgc3RyaW5nXHJcbiAgICAgKiBAcGFyYW0gcGFydGlhbElkc0FycmF5IHBhcnRpYWwgaWRzIHRvIGNvbGxlY3RcclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBkYXRhU291cmNlOiBEUSB8IHN0cmluZywgcHJpdmF0ZSBwYXJ0aWFsSWRzQXJyYXk/OiBzdHJpbmdbXSkge1xyXG4gICAgICAgIHN1cGVyKHt9KTtcclxuICAgICAgICAvL2EgY2FsbCB0byBnZXRWaWV3U3RhdGUgYmVmb3JlIG11c3QgcGFzcyB0aGUgZW5jb2RlZCBsaW5lXHJcbiAgICAgICAgLy9hIGNhbGwgZnJvbSBnZXRWaWV3U3RhdGUgcGFzc2VzIHRoZSBmb3JtIGVsZW1lbnQgYXMgZGF0YXNvdXJjZVxyXG4gICAgICAgIC8vc28gd2UgaGF2ZSB0d28gY2FsbCBwb2ludHNcclxuICAgICAgICBpZiAoaXNTdHJpbmcoZGF0YVNvdXJjZSkpIHtcclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVTdHJpbmdTb3VyY2UoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZUZvcm1Tb3VyY2UoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBoYW5kbGVGb3JtU291cmNlKCkge1xyXG4gICAgICAgIC8vZW5jb2RlIGFuZCBhcHBlbmQgdGhlIGlzc3VpbmcgaXRlbSBpZiBub3QgYSBwYXJ0aWFsIGlkcyBhcnJheSBvZiBpZHMgaXMgcGFzc2VkXHJcbiAgICAgICAgLypcclxuICAgICAgICAgKiBTcGVjLiAxMy4zLjFcclxuICAgICAgICAgKiBDb2xsZWN0IGFuZCBlbmNvZGUgaW5wdXQgZWxlbWVudHMuXHJcbiAgICAgICAgICogQWRkaXRpb25hbGx5IHRoZSBoaWRkZW4gZWxlbWVudCBqYXZheC5mYWNlcy5WaWV3U3RhdGVcclxuICAgICAgICAgKiBFbmhhbmNlbWVudCBwYXJ0aWFsIHBhZ2Ugc3VibWl0XHJcbiAgICAgICAgICpcclxuICAgICAgICAgKi9cclxuXHJcbiAgICAgICAgdGhpcy5lbmNvZGVTdWJtaXR0YWJsZUZpZWxkcyh0aGlzLCA8RFE+dGhpcy5kYXRhU291cmNlLCB0aGlzLnBhcnRpYWxJZHNBcnJheSk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmdldElmKFBfVklFV1NUQVRFKS5pc1ByZXNlbnQoKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmFwcGx5Vmlld1N0YXRlKDxEUT50aGlzLmRhdGFTb3VyY2UpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaGFuZGxlU3RyaW5nU291cmNlKCkge1xyXG4gICAgICAgIHRoaXMubWVyZ2VFbmNvZGVkU3RyaW5nKDxzdHJpbmc+dGhpcy5kYXRhU291cmNlKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhcHBseVZpZXdTdGF0ZShmb3JtOiBEUSkge1xyXG4gICAgICAgIGZvcm0uYnlJZChDb25zdC5QX1ZJRVdTVEFURSlcclxuICAgICAgICAgICAgLmlmUHJlc2VudExhenkoKGVsZW06IERRKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBlbGVtLmlucHV0VmFsdWUudmFsdWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFzc2lnbklmKCEhdmFsdWUgLENvbnN0LlBfVklFV1NUQVRFKS52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBtZXJnZUVuY29kZWRTdHJpbmcoZW5jb2RlZDogc3RyaW5nKSB7XHJcbiAgICAgICAgbGV0IHNwbGl0dGVkRW50cmllcyA9IGVuY29kZWQuc3BsaXQoL1xcJi9naSk7XHJcbiAgICAgICAgU3RyZWFtLm9mKC4uLnNwbGl0dGVkRW50cmllcylcclxuICAgICAgICAgICAgLm1hcChsaW5lID0+IGxpbmUuc3BsaXQoL1xcPS9naSkpXHJcbiAgICAgICAgICAgIC5lYWNoKGtleVZhbCA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFzc2lnbihrZXlWYWwgWzBdKS52YWx1ZSA9IGtleVZhbFsxXSB8fCBudWxsO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBub2luc3BlY3Rpb24gSlNVbnVzZWRHbG9iYWxTeW1ib2xzXHJcbiAgICAvKipcclxuICAgICAqIEByZXR1cm5zIGEgRm9ybSBkYXRhIHJlcHJlc2VudGF0aW9uXHJcbiAgICAgKi9cclxuICAgIHRvRm9ybURhdGEoKTogRm9ybURhdGEge1xyXG4gICAgICAgIGxldCByZXQ6IGFueSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgICAgIGZvciAobGV0IGtleSBpbiB0aGlzLnZhbHVlKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICAgICAgICAgIHJldC5hcHBlbmQoa2V5LCB0aGlzLnZhbHVlW2tleV0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJldDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIHJldHVybnMgYW4gZW5jb2RlZCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2Ygb3VyIHhociBmb3JtIGRhdGFcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gZGVmYXVsdFN0ciBvcHRpb25hbCBkZWZhdWx0IHZhbHVlIGlmIG5vdGhpbmcgaXMgdGhlcmUgdG8gZW5jb2RlXHJcbiAgICAgKi9cclxuICAgIHRvU3RyaW5nKGRlZmF1bHRTdHIgPSBcIlwiKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAodGhpcy5pc0Fic2VudCgpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBkZWZhdWx0U3RyO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgZW50cmllcyA9IFtdO1xyXG4gICAgICAgIGZvciAobGV0IGtleSBpbiB0aGlzLnZhbHVlKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICAgICAgICAgIC8va2V5IHZhbHVlIGFscmVhZHkgZW5jb2RlZCBzbyBubyBuZWVkIHRvIHJlZW5jb2RlIHRoZW0gYWdhaW5cclxuICAgICAgICAgICAgICAgIGVudHJpZXMucHVzaChgJHtrZXl9PSR7dGhpcy52YWx1ZVtrZXldfWApXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGVudHJpZXMuam9pbihcIiZcIilcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGRldGVybWluZXMgZmllbGRzIHRvIHN1Ym1pdFxyXG4gICAgICogQHBhcmFtIHtPYmplY3R9IHRhcmdldEJ1ZiAtIHRoZSB0YXJnZXQgZm9ybSBidWZmZXIgcmVjZWl2aW5nIHRoZSBkYXRhXHJcbiAgICAgKiBAcGFyYW0ge05vZGV9IHBhcmVudEl0ZW0gLSBmb3JtIGVsZW1lbnQgaXRlbSBpcyBuZXN0ZWQgaW5cclxuICAgICAqIEBwYXJhbSB7QXJyYXl9IHBhcnRpYWxJZHMgLSBpZHMgZm8gUFBTXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZW5jb2RlU3VibWl0dGFibGVGaWVsZHModGFyZ2V0QnVmOiBDb25maWcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudEl0ZW06IERRLCBwYXJ0aWFsSWRzID86IHN0cmluZ1tdKSB7XHJcbiAgICAgICAgbGV0IHRvRW5jb2RlID0gbnVsbDtcclxuICAgICAgICBpZiAodGhpcy5wYXJ0aWFsSWRzQXJyYXkgJiYgdGhpcy5wYXJ0aWFsSWRzQXJyYXkubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIC8vaW4gY2FzZSBvZiBvdXIgbXlmYWNlcyByZWR1Y2VkIHBwciB3ZSBvbmx5XHJcbiAgICAgICAgICAgIC8vb25seSBzdWJtaXQgdGhlIHBhcnRpYWxzXHJcblxyXG4gICAgICAgICAgICAvL1RPRE8gbWF5YmUgYWxzbyB0aGUgd2luZG93IGlkIGFuZCBvdGhlciBkZWZhdWx0cyBsZXRzIHNlZVxyXG4gICAgICAgICAgICAvL3RoaXMgaXMgbm90IGEgc3BlYyBjYXNlIGFueXdheVxyXG4gICAgICAgICAgICB0aGlzLl92YWx1ZSA9IHt9O1xyXG4gICAgICAgICAgICB0b0VuY29kZSA9IG5ldyBEUSguLi50aGlzLnBhcnRpYWxJZHNBcnJheSk7XHJcblxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChwYXJlbnRJdGVtLmlzQWJzZW50KCkpIHRocm93IFwiTk9fUEFSSVRFTVwiO1xyXG4gICAgICAgICAgICB0b0VuY29kZSA9IHBhcmVudEl0ZW07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvL2xldHMgZW5jb2RlIHRoZSBmb3JtIGVsZW1lbnRzXHJcbiAgICAgICAgdGhpcy5zaGFsbG93TWVyZ2UodG9FbmNvZGUucXVlcnlTZWxlY3RvckFsbChcImlucHV0LCBjaGVja2JveCwgc2VsZWN0LCB0ZXh0YXJlYVwiKS5lbmNvZGVGb3JtRWxlbWVudCgpKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgaXNNdWx0aXBhcnRSZXF1ZXN0KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAgdGhpcy5kYXRhU291cmNlIGluc3RhbmNlb2YgRFEgJiYgKDxEUT4gdGhpcy5kYXRhU291cmNlKS5xdWVyeVNlbGVjdG9yQWxsKFwiaW5wdXRbdHlwZT0nZmlsZSddXCIpLmlzUHJlc2VudCgpO1xyXG4gICAgfVxyXG5cclxufSJdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7OztBQWNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7Ozs7Ozs7Ozs7Ozs7QUFhQTtBQUNBO0FBQUE7QUFFQTs7Ozs7QUFLQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBOztBQUNBO0FBRUE7QUFDQTtBQUNBOzs7Ozs7QUFNQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7Ozs7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTs7Ozs7QUFLQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQUNBOzs7QUFBQTtBQUVBO0FBQUE7QUE3SEE7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/main/typescript/impl/xhrCore/XhrFormData.ts\n");
/***/ }),
/***/ "./src/main/typescript/impl/xhrCore/XhrRequest.ts":
/*!********************************************************!*\
!*** ./src/main/typescript/impl/xhrCore/XhrRequest.ts ***!
\********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("\r\n/* Licensed to the Apache Software Foundation (ASF) under one or more\r\n * contributor license agreements. See the NOTICE file distributed with\r\n * this work for additional information regarding copyright ownership.\r\n * The ASF licenses this file to you under the Apache License, Version 2.0\r\n * (the \"License\"); you may not use this file except in compliance with\r\n * the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar AjaxImpl_1 = __webpack_require__(/*! ../AjaxImpl */ \"./src/main/typescript/impl/AjaxImpl.ts\");\r\nvar Const_1 = __webpack_require__(/*! ../core/Const */ \"./src/main/typescript/impl/core/Const.ts\");\r\nvar XhrFormData_1 = __webpack_require__(/*! ./XhrFormData */ \"./src/main/typescript/impl/xhrCore/XhrFormData.ts\");\r\nvar ErrorData_1 = __webpack_require__(/*! ./ErrorData */ \"./src/main/typescript/impl/xhrCore/ErrorData.ts\");\r\nvar EventData_1 = __webpack_require__(/*! ./EventData */ \"./src/main/typescript/impl/xhrCore/EventData.ts\");\r\nvar Lang_1 = __webpack_require__(/*! ../util/Lang */ \"./src/main/typescript/impl/util/Lang.ts\");\r\nvar failSaveExecute = Lang_1.ExtLang.failSaveExecute;\r\nvar getPromise = Lang_1.ExtLang.getPromise;\r\nvar COMPLETE = Const_1.Const.COMPLETE;\r\nvar NO_TIMEOUT = Const_1.Const.NO_TIMEOUT;\r\nvar REQ_TYPE_POST = Const_1.Const.REQ_TYPE_POST;\r\nvar URL_ENCODED = Const_1.Const.URL_ENCODED;\r\nvar ON_EVENT = Const_1.Const.ON_EVENT;\r\nvar ON_ERROR = Const_1.Const.ON_ERROR;\r\nvar MULTIPART = Const_1.Const.MULTIPART;\r\nvar CTX_PARAM_PASS_THR = Const_1.Const.CTX_PARAM_PASS_THR;\r\nvar CTX_PARAM_MF_INTERNAL = Const_1.Const.CTX_PARAM_MF_INTERNAL;\r\nvar CONTENT_TYPE = Const_1.Const.CONTENT_TYPE;\r\nvar HEAD_FACES_REQ = Const_1.Const.HEAD_FACES_REQ;\r\nvar VAL_AJAX = Const_1.Const.VAL_AJAX;\r\nvar STATE_EVT_TIMEOUT = Const_1.Const.STATE_EVT_TIMEOUT;\r\nvar REQ_ACCEPT = Const_1.Const.REQ_ACCEPT;\r\nvar STD_ACCEPT = Const_1.Const.STD_ACCEPT;\r\nvar REQ_TYPE_GET = Const_1.Const.REQ_TYPE_GET;\r\nvar ENCODED_URL = Const_1.Const.ENCODED_URL;\r\nvar BEGIN = Const_1.Const.BEGIN;\r\nvar MALFORMEDXML = Const_1.Const.MALFORMEDXML;\r\nvar ERROR = Const_1.Const.ERROR;\r\nvar EMPTY_FUNC = Const_1.Const.EMPTY_FUNC;\r\nvar XhrRequest = /** @class */ (function () {\r\n /**\r\n * Reqired Parameters\r\n *\r\n * @param source the issuing element\r\n * @param sourceForm the form which is related to the issuing element\r\n * @param requestContext the request context with allö pass through values\r\n *\r\n * Optional Parameters\r\n *\r\n * @param partialIdsArray an optional restricting partial ids array for encoding\r\n * @param timeout optional xhr timeout\r\n * @param ajaxType optional request type, default \"POST\"\r\n * @param contentType optional content type, default \"application/x-www-form-urlencoded\"\r\n * @param xhrObject optional xhr object which must fullfill the XMLHTTPRequest api, default XMLHttpRequest\r\n */\r\n function XhrRequest(source, sourceForm, requestContext, internalContext, partialIdsArray, timeout, ajaxType, contentType, xhrObject) {\r\n if (partialIdsArray === void 0) { partialIdsArray = []; }\r\n if (timeout === void 0) { timeout = NO_TIMEOUT; }\r\n if (ajaxType === void 0) { ajaxType = REQ_TYPE_POST; }\r\n if (contentType === void 0) { contentType = URL_ENCODED; }\r\n if (xhrObject === void 0) { xhrObject = new XMLHttpRequest(); }\r\n this.source = source;\r\n this.sourceForm = sourceForm;\r\n this.requestContext = requestContext;\r\n this.internalContext = internalContext;\r\n this.partialIdsArray = partialIdsArray;\r\n this.timeout = timeout;\r\n this.ajaxType = ajaxType;\r\n this.contentType = contentType;\r\n this.xhrObject = xhrObject;\r\n this.stopProgress = false;\r\n }\r\n XhrRequest.prototype.start = function () {\r\n var _this = this;\r\n var fsExec = failSaveExecute;\r\n var xhrObject = this.xhrObject;\r\n try {\r\n var viewState = jsf.getViewState(this.sourceForm.getAsElem(0).value);\r\n var formData = new XhrFormData_1.XhrFormData(viewState);\r\n this.contentType = formData.isMultipartRequest ? MULTIPART : this.contentType;\r\n //next step the pass through parameters are merged in for post params\r\n var requestContext = this.requestContext;\r\n var passThroughParams = requestContext.getIf(CTX_PARAM_PASS_THR);\r\n formData.shallowMerge(passThroughParams);\r\n this.responseContext = passThroughParams.deepCopy;\r\n //we have to shift the internal passthroughs around to build up our response context\r\n var responseContext = this.responseContext;\r\n responseContext.assign(CTX_PARAM_MF_INTERNAL).value = this.internalContext.value;\r\n //per spec the onevent and onerrors must be passed through to the response\r\n responseContext.assign(ON_EVENT).value = requestContext.getIf(ON_EVENT).value;\r\n responseContext.assign(ON_ERROR).value = requestContext.getIf(ON_ERROR).value;\r\n xhrObject.open(this.ajaxType, this.resolveFinalUrl(formData), true);\r\n //adding timeout\r\n this.timeout ? xhrObject.timeout = this.timeout : null;\r\n //a bug in the xhr stub library prevents the setRequestHeader to be properly executed on fake xhr objects\r\n //normal browsers should resolve this\r\n //tests can quietly fail on this one\r\n fsExec(function () { return xhrObject.setRequestHeader(CONTENT_TYPE, _this.contentType + \"; charset=utf-8\"); });\r\n fsExec(function () { return xhrObject.setRequestHeader(HEAD_FACES_REQ, VAL_AJAX); });\r\n //probably not needed anymore, will test this\r\n //some webkit based mobile browsers do not follow the w3c spec of\r\n // setting the accept headers automatically\r\n fsExec(function () { return xhrObject.setRequestHeader(REQ_ACCEPT, STD_ACCEPT); });\r\n this.sendEvent(BEGIN);\r\n this.sendRequest(formData);\r\n }\r\n catch (e) {\r\n //_onError//_onError\r\n this.handleError(e);\r\n }\r\n return this;\r\n };\r\n XhrRequest.prototype.cancel = function () {\r\n try {\r\n this.xhrObject.abort();\r\n }\r\n catch (e) {\r\n this.handleError(e);\r\n }\r\n };\r\n Object.defineProperty(XhrRequest.prototype, \"$promise\", {\r\n /*\r\n * Promise bindings\r\n *\r\n * We have to delegate a few calls to our promise\r\n * to make the callback from the outside and inside work with our\r\n * xhr promise\r\n *\r\n */\r\n get: function () {\r\n var _this = this;\r\n if (!this.xhrPromise) {\r\n this.xhrPromise = new (getPromise())(function (resolve, reject) {\r\n //to allow callback into xhr over promises\r\n //we have to register the callbacks\r\n //accordingly\r\n _this.registerXhrCallbacks(resolve, reject);\r\n });\r\n }\r\n return this.xhrPromise;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n XhrRequest.prototype.catch = function (func) {\r\n this.$promise.catch(func);\r\n return this;\r\n };\r\n XhrRequest.prototype.finally = function (func) {\r\n //no ie11 support we probably are going to revert to shims for that one\r\n this.$promise.then(func).catch(func);\r\n //(<any>this.$promise).then(func);\r\n return this;\r\n };\r\n XhrRequest.prototype.then = function (func) {\r\n this.$promise.then(func);\r\n return this;\r\n };\r\n /**\r\n * attaches the internal event and processing\r\n * callback within the promise to our xhr object\r\n *\r\n * @param resolve\r\n * @param reject\r\n */\r\n XhrRequest.prototype.registerXhrCallbacks = function (resolve, reject) {\r\n var _this = this;\r\n var xhrObject = this.xhrObject;\r\n xhrObject.onabort = function () {\r\n _this.onAbort(resolve, reject);\r\n };\r\n xhrObject.ontimeout = function () {\r\n _this.onTimeout(resolve, reject);\r\n };\r\n xhrObject.onload = function () {\r\n _this.onSuccess(_this.xhrObject, resolve, reject);\r\n };\r\n xhrObject.onloadend = function () {\r\n _this.onDone(_this.xhrObject, resolve, reject);\r\n };\r\n xhrObject.onerror = function (errorData) {\r\n _this.onError(errorData, resolve, reject);\r\n };\r\n };\r\n /*\r\n * xhr processing callbacks\r\n *\r\n * Those methods are the callbacks called by\r\n * the xhr object depending on its own state\r\n */\r\n XhrRequest.prototype.onAbort = function (resolve, reject) {\r\n reject();\r\n };\r\n XhrRequest.prototype.onTimeout = function (resolve, reject) {\r\n this.sendEvent(STATE_EVT_TIMEOUT);\r\n reject();\r\n };\r\n XhrRequest.prototype.onSuccess = function (data, resolve, reject) {\r\n var _a, _b, _c;\r\n this.sendEvent(COMPLETE);\r\n //malforms always result in empty response xml\r\n if (!((_b = (_a = this) === null || _a === void 0 ? void 0 : _a.xhrObject) === null || _b === void 0 ? void 0 : _b.responseXML)) {\r\n this.handleMalFormedXML(resolve);\r\n return;\r\n }\r\n jsf.ajax.response(this.xhrObject, (_c = this.responseContext.value, (_c !== null && _c !== void 0 ? _c : {})));\r\n };\r\n XhrRequest.prototype.handleMalFormedXML = function (resolve) {\r\n var _a;\r\n this.stopProgress = true;\r\n var errorData = {\r\n type: ERROR,\r\n status: MALFORMEDXML,\r\n responseCode: 200,\r\n responseText: (_a = this.xhrObject) === null || _a === void 0 ? void 0 : _a.responseText,\r\n source: {\r\n id: this.source.id.value\r\n }\r\n };\r\n try {\r\n AjaxImpl_1.Implementation.sendError(errorData);\r\n }\r\n finally {\r\n resolve(errorData);\r\n }\r\n //non blocking non clearing\r\n };\r\n XhrRequest.prototype.onDone = function (data, resolve, reject) {\r\n if (this.stopProgress) {\r\n return;\r\n }\r\n resolve(data);\r\n };\r\n XhrRequest.prototype.onError = function (errorData, resolve, reject) {\r\n this.handleError(errorData);\r\n reject();\r\n };\r\n /*\r\n * other helpers\r\n */\r\n XhrRequest.prototype.sendEvent = function (evtType) {\r\n var eventData = EventData_1.EventData.createFromRequest(this.xhrObject, this.requestContext, evtType);\r\n try {\r\n //user code error, we might cover\r\n //this in onError but also we cannot swallow it\r\n //we need to resolve the local handlers lazyly,\r\n //because some frameworks might decorate them over the context in the response\r\n var eventHandler = this.resolveHandlerFunc(ON_EVENT);\r\n ;\r\n AjaxImpl_1.Implementation.sendEvent(eventData, eventHandler);\r\n }\r\n catch (e) {\r\n this.handleError(e);\r\n throw e;\r\n }\r\n };\r\n XhrRequest.prototype.handleError = function (exception) {\r\n var errorData = ErrorData_1.ErrorData.fromClient(exception);\r\n var eventHandler = this.resolveHandlerFunc(ON_ERROR);\r\n AjaxImpl_1.Implementation.sendError(errorData, eventHandler);\r\n };\r\n /**\r\n * resolves the event handlers lazly\r\n * so that if some decoration happens in between we can deal with it\r\n *\r\n * @param funcName\r\n */\r\n XhrRequest.prototype.resolveHandlerFunc = function (funcName) {\r\n return this.responseContext.getIf(funcName)\r\n .orElse(this.requestContext.getIf(funcName).value)\r\n .orElse(EMPTY_FUNC).value;\r\n };\r\n XhrRequest.prototype.resolveTargetUrl = function (srcFormElement) {\r\n return (typeof srcFormElement.elements[ENCODED_URL] == 'undefined') ?\r\n srcFormElement.action :\r\n srcFormElement.elements[ENCODED_URL].value;\r\n };\r\n XhrRequest.prototype.sendRequest = function (formData) {\r\n var isPost = this.ajaxType != REQ_TYPE_GET;\r\n if (formData.isMultipartRequest) {\r\n this.xhrObject.send((isPost) ? formData.toFormData() : null);\r\n }\r\n else {\r\n this.xhrObject.send((isPost) ? formData.toString() : null);\r\n }\r\n };\r\n XhrRequest.prototype.resolveFinalUrl = function (formData) {\r\n var targetUrl = this.resolveTargetUrl(this.sourceForm.getAsElem(0).value);\r\n return targetUrl + (this.ajaxType == REQ_TYPE_GET ? \"?\" + formData.toString() : \"\");\r\n };\r\n return XhrRequest;\r\n}());\r\nexports.XhrRequest = XhrRequest;\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbWFpbi90eXBlc2NyaXB0L2ltcGwveGhyQ29yZS9YaHJSZXF1ZXN0LnRzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21haW4vdHlwZXNjcmlwdC9pbXBsL3hockNvcmUvWGhyUmVxdWVzdC50cz83ZDFlIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUgb3IgbW9yZVxyXG4gKiBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlIGRpc3RyaWJ1dGVkIHdpdGhcclxuICogdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLlxyXG4gKiBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZSB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMFxyXG4gKiAodGhlIFwiTGljZW5zZVwiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoXHJcbiAqIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XHJcbiAqXHJcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbiAqXHJcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcclxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxyXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cclxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxyXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cclxuICovXHJcblxyXG5cclxuaW1wb3J0IHtBc3luY1J1bm5hYmxlfSBmcm9tIFwiLi4vdXRpbC9Bc3luY1J1bm5hYmxlXCI7XHJcbmltcG9ydCB7Q29uZmlnfSBmcm9tIFwiLi4vLi4vZXh0L21vbmFkaXNoL01vbmFkXCI7XHJcbmltcG9ydCB7SW1wbGVtZW50YXRpb259IGZyb20gXCIuLi9BamF4SW1wbFwiO1xyXG5cclxuaW1wb3J0IHtDb25zdH0gZnJvbSBcIi4uL2NvcmUvQ29uc3RcIjtcclxuaW1wb3J0IHtYaHJGb3JtRGF0YX0gZnJvbSBcIi4vWGhyRm9ybURhdGFcIjtcclxuaW1wb3J0IHtFcnJvckRhdGF9IGZyb20gXCIuL0Vycm9yRGF0YVwiO1xyXG5pbXBvcnQge0V2ZW50RGF0YX0gZnJvbSBcIi4vRXZlbnREYXRhXCI7XHJcbmltcG9ydCB7RFF9IGZyb20gXCIuLi8uLi9leHQvbW9uYWRpc2gvRG9tUXVlcnlcIjtcclxuaW1wb3J0IHtFeHRMYW5nfSBmcm9tIFwiLi4vdXRpbC9MYW5nXCI7XHJcbmltcG9ydCB7QXNzZXJ0aW9uc30gZnJvbSBcIi4uL3V0aWwvQXNzZXJ0aW9uc1wiO1xyXG5pbXBvcnQgZmFpbFNhdmVFeGVjdXRlID0gRXh0TGFuZy5mYWlsU2F2ZUV4ZWN1dGU7XHJcbmltcG9ydCBnZXRQcm9taXNlID0gRXh0TGFuZy5nZXRQcm9taXNlO1xyXG5pbXBvcnQgQ09NUExFVEUgPSBDb25zdC5DT01QTEVURTtcclxuaW1wb3J0IE5PX1RJTUVPVVQgPSBDb25zdC5OT19USU1FT1VUO1xyXG5pbXBvcnQgUkVRX1RZUEVfUE9TVCA9IENvbnN0LlJFUV9UWVBFX1BPU1Q7XHJcbmltcG9ydCBVUkxfRU5DT0RFRCA9IENvbnN0LlVSTF9FTkNPREVEO1xyXG5pbXBvcnQgT05fRVZFTlQgPSBDb25zdC5PTl9FVkVOVDtcclxuaW1wb3J0IE9OX0VSUk9SID0gQ29uc3QuT05fRVJST1I7XHJcbmltcG9ydCBNVUxUSVBBUlQgPSBDb25zdC5NVUxUSVBBUlQ7XHJcbmltcG9ydCBDVFhfUEFSQU1fUEFTU19USFIgPSBDb25zdC5DVFhfUEFSQU1fUEFTU19USFI7XHJcbmltcG9ydCBDVFhfUEFSQU1fTUZfSU5URVJOQUwgPSBDb25zdC5DVFhfUEFSQU1fTUZfSU5URVJOQUw7XHJcbmltcG9ydCBDT05URU5UX1RZUEUgPSBDb25zdC5DT05URU5UX1RZUEU7XHJcbmltcG9ydCBIRUFEX0ZBQ0VTX1JFUSA9IENvbnN0LkhFQURfRkFDRVNfUkVRO1xyXG5pbXBvcnQgVkFMX0FKQVggPSBDb25zdC5WQUxfQUpBWDtcclxuaW1wb3J0IFNUQVRFX0VWVF9USU1FT1VUID0gQ29uc3QuU1RBVEVfRVZUX1RJTUVPVVQ7XHJcbmltcG9ydCBSRVFfQUNDRVBUID0gQ29uc3QuUkVRX0FDQ0VQVDtcclxuaW1wb3J0IFNURF9BQ0NFUFQgPSBDb25zdC5TVERfQUNDRVBUO1xyXG5pbXBvcnQgUkVRX1RZUEVfR0VUID0gQ29uc3QuUkVRX1RZUEVfR0VUO1xyXG5pbXBvcnQgRU5DT0RFRF9VUkwgPSBDb25zdC5FTkNPREVEX1VSTDtcclxuaW1wb3J0IEJFR0lOID0gQ29uc3QuQkVHSU47XHJcbmltcG9ydCBNQUxGT1JNRURYTUwgPSBDb25zdC5NQUxGT1JNRURYTUw7XHJcbmltcG9ydCBFUlJPUiA9IENvbnN0LkVSUk9SO1xyXG5pbXBvcnQgRU1QVFlfRlVOQyA9IENvbnN0LkVNUFRZX0ZVTkM7XHJcblxyXG5cclxuLyoqXHJcbiAqIEpTRmVkIFhIUiBSZXF1ZXN0IFdyYXBwZXJcclxuICogYXMgQXN5bmNydW5uYWJsZSBmb3Igb3VyIEFzeW5jaHJvbm91cyBxdWV1ZVxyXG4gKlxyXG4gKiBUaGUgaWRlYSBpcyB0aGF0IHdlIGJhc2ljYWxseSBqdXN0IGVucXVldWVcclxuICogYSBzaW5nbGUgYWpheCByZXF1ZXN0IGludG8gb3VyIHF1ZXVlXHJcbiAqIGFuZCBsZXQgdGhlIHF1ZXVlIGRvIHRoZSBwcm9jZXNzaW5nLlxyXG4gKlxyXG4gKi9cclxuXHJcbmRlY2xhcmUgbGV0IGpzZjogYW55O1xyXG5cclxuZXhwb3J0IGNsYXNzIFhoclJlcXVlc3QgaW1wbGVtZW50cyBBc3luY1J1bm5hYmxlPFhNTEh0dHBSZXF1ZXN0PiB7XHJcblxyXG4gICAgLyoqIHByZWRlZmluZWQgbWV0aG9kICovXHJcblxyXG5cclxuICAgIHByaXZhdGUgeGhyUHJvbWlzZTogUHJvbWlzZTxYTUxIdHRwUmVxdWVzdD47XHJcblxyXG5cclxuXHJcbiAgICBwcml2YXRlIHJlc3BvbnNlQ29udGV4dDogQ29uZmlnO1xyXG5cclxuICAgIHByaXZhdGUgc3RvcFByb2dyZXNzID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXFpcmVkIFBhcmFtZXRlcnNcclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0gc291cmNlIHRoZSBpc3N1aW5nIGVsZW1lbnRcclxuICAgICAqIEBwYXJhbSBzb3VyY2VGb3JtIHRoZSBmb3JtIHdoaWNoIGlzIHJlbGF0ZWQgdG8gdGhlIGlzc3VpbmcgZWxlbWVudFxyXG4gICAgICogQHBhcmFtIHJlcXVlc3RDb250ZXh0IHRoZSByZXF1ZXN0IGNvbnRleHQgd2l0aCBhbGzDtiBwYXNzIHRocm91Z2ggdmFsdWVzXHJcbiAgICAgKlxyXG4gICAgICogT3B0aW9uYWwgUGFyYW1ldGVyc1xyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBwYXJ0aWFsSWRzQXJyYXkgYW4gb3B0aW9uYWwgcmVzdHJpY3RpbmcgcGFydGlhbCBpZHMgYXJyYXkgZm9yIGVuY29kaW5nXHJcbiAgICAgKiBAcGFyYW0gdGltZW91dCBvcHRpb25hbCB4aHIgdGltZW91dFxyXG4gICAgICogQHBhcmFtIGFqYXhUeXBlIG9wdGlvbmFsIHJlcXVlc3QgdHlwZSwgZGVmYXVsdCBcIlBPU1RcIlxyXG4gICAgICogQHBhcmFtIGNvbnRlbnRUeXBlIG9wdGlvbmFsIGNvbnRlbnQgdHlwZSwgZGVmYXVsdCBcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFwiXHJcbiAgICAgKiBAcGFyYW0geGhyT2JqZWN0IG9wdGlvbmFsIHhociBvYmplY3Qgd2hpY2ggbXVzdCBmdWxsZmlsbCB0aGUgWE1MSFRUUFJlcXVlc3QgYXBpLCBkZWZhdWx0IFhNTEh0dHBSZXF1ZXN0XHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgc291cmNlOiBEUSxcclxuICAgICAgICBwcml2YXRlIHNvdXJjZUZvcm06IERRLFxyXG4gICAgICAgIHByaXZhdGUgcmVxdWVzdENvbnRleHQ6IENvbmZpZyxcclxuICAgICAgICBwcml2YXRlIGludGVybmFsQ29udGV4dDogQ29uZmlnLFxyXG4gICAgICAgIHByaXZhdGUgcGFydGlhbElkc0FycmF5ID0gW10sXHJcbiAgICAgICAgcHJpdmF0ZSB0aW1lb3V0ID0gTk9fVElNRU9VVCxcclxuICAgICAgICBwcml2YXRlIGFqYXhUeXBlID0gUkVRX1RZUEVfUE9TVCxcclxuICAgICAgICBwcml2YXRlIGNvbnRlbnRUeXBlID0gVVJMX0VOQ09ERUQsXHJcbiAgICAgICAgcHJpdmF0ZSB4aHJPYmplY3QgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKVxyXG4gICAgKSB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0KCk6IEFzeW5jUnVubmFibGU8WE1MSHR0cFJlcXVlc3Q+IHtcclxuXHJcbiAgICAgICAgbGV0IGZzRXhlYyA9IGZhaWxTYXZlRXhlY3V0ZTtcclxuICAgICAgICBsZXQgeGhyT2JqZWN0ID0gdGhpcy54aHJPYmplY3Q7XHJcblxyXG4gICAgICAgIHRyeSB7XHJcblxyXG4gICAgICAgICAgICBsZXQgdmlld1N0YXRlID0ganNmLmdldFZpZXdTdGF0ZSh0aGlzLnNvdXJjZUZvcm0uZ2V0QXNFbGVtKDApLnZhbHVlKTtcclxuICAgICAgICAgICAgbGV0IGZvcm1EYXRhOiBYaHJGb3JtRGF0YSA9IG5ldyBYaHJGb3JtRGF0YSh2aWV3U3RhdGUpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5jb250ZW50VHlwZSA9IGZvcm1EYXRhLmlzTXVsdGlwYXJ0UmVxdWVzdCA/IE1VTFRJUEFSVCA6IHRoaXMuY29udGVudFR5cGU7XHJcblxyXG4gICAgICAgICAgICAvL25leHQgc3RlcCB0aGUgcGFzcyB0aHJvdWdoIHBhcmFtZXRlcnMgYXJlIG1lcmdlZCBpbiBmb3IgcG9zdCBwYXJhbXNcclxuICAgICAgICAgICAgbGV0IHJlcXVlc3RDb250ZXh0ID0gdGhpcy5yZXF1ZXN0Q29udGV4dDtcclxuICAgICAgICAgICAgbGV0IHBhc3NUaHJvdWdoUGFyYW1zID0gcmVxdWVzdENvbnRleHQuZ2V0SWYoQ1RYX1BBUkFNX1BBU1NfVEhSKTtcclxuICAgICAgICAgICAgZm9ybURhdGEuc2hhbGxvd01lcmdlKHBhc3NUaHJvdWdoUGFyYW1zKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMucmVzcG9uc2VDb250ZXh0ID0gcGFzc1Rocm91Z2hQYXJhbXMuZGVlcENvcHk7XHJcblxyXG4gICAgICAgICAgICAvL3dlIGhhdmUgdG8gc2hpZnQgdGhlIGludGVybmFsIHBhc3N0aHJvdWdocyBhcm91bmQgdG8gYnVpbGQgdXAgb3VyIHJlc3BvbnNlIGNvbnRleHRcclxuICAgICAgICAgICAgbGV0IHJlc3BvbnNlQ29udGV4dCA9IHRoaXMucmVzcG9uc2VDb250ZXh0O1xyXG5cclxuICAgICAgICAgICAgcmVzcG9uc2VDb250ZXh0LmFzc2lnbihDVFhfUEFSQU1fTUZfSU5URVJOQUwpLnZhbHVlID0gdGhpcy5pbnRlcm5hbENvbnRleHQudmFsdWU7XHJcblxyXG4gICAgICAgICAgICAvL3BlciBzcGVjIHRoZSBvbmV2ZW50IGFuZCBvbmVycm9ycyBtdXN0IGJlIHBhc3NlZCB0aHJvdWdoIHRvIHRoZSByZXNwb25zZVxyXG4gICAgICAgICAgICByZXNwb25zZUNvbnRleHQuYXNzaWduKE9OX0VWRU5UKS52YWx1ZSA9IHJlcXVlc3RDb250ZXh0LmdldElmKE9OX0VWRU5UKS52YWx1ZTtcclxuICAgICAgICAgICAgcmVzcG9uc2VDb250ZXh0LmFzc2lnbihPTl9FUlJPUikudmFsdWUgPSByZXF1ZXN0Q29udGV4dC5nZXRJZihPTl9FUlJPUikudmFsdWU7XHJcblxyXG4gICAgICAgICAgICB4aHJPYmplY3Qub3Blbih0aGlzLmFqYXhUeXBlLCB0aGlzLnJlc29sdmVGaW5hbFVybChmb3JtRGF0YSksIHRydWUpO1xyXG5cclxuICAgICAgICAgICAgLy9hZGRpbmcgdGltZW91dFxyXG4gICAgICAgICAgICB0aGlzLnRpbWVvdXQgPyB4aHJPYmplY3QudGltZW91dCA9IHRoaXMudGltZW91dCA6IG51bGw7XHJcblxyXG4gICAgICAgICAgICAvL2EgYnVnIGluIHRoZSB4aHIgc3R1YiBsaWJyYXJ5IHByZXZlbnRzIHRoZSBzZXRSZXF1ZXN0SGVhZGVyIHRvIGJlIHByb3Blcmx5IGV4ZWN1dGVkIG9uIGZha2UgeGhyIG9iamVjdHNcclxuICAgICAgICAgICAgLy9ub3JtYWwgYnJvd3NlcnMgc2hvdWxkIHJlc29sdmUgdGhpc1xyXG4gICAgICAgICAgICAvL3Rlc3RzIGNhbiBxdWlldGx5IGZhaWwgb24gdGhpcyBvbmVcclxuXHJcbiAgICAgICAgICAgIGZzRXhlYygoKSA9PiB4aHJPYmplY3Quc2V0UmVxdWVzdEhlYWRlcihDT05URU5UX1RZUEUsIGAke3RoaXMuY29udGVudFR5cGV9OyBjaGFyc2V0PXV0Zi04YCkpO1xyXG4gICAgICAgICAgICBmc0V4ZWMoKCkgPT4geGhyT2JqZWN0LnNldFJlcXVlc3RIZWFkZXIoSEVBRF9GQUNFU19SRVEsIFZBTF9BSkFYKSk7XHJcblxyXG4gICAgICAgICAgICAvL3Byb2JhYmx5IG5vdCBuZWVkZWQgYW55bW9yZSwgd2lsbCB0ZXN0IHRoaXNcclxuICAgICAgICAgICAgLy9zb21lIHdlYmtpdCBiYXNlZCBtb2JpbGUgYnJvd3NlcnMgZG8gbm90IGZvbGxvdyB0aGUgdzNjIHNwZWMgb2ZcclxuICAgICAgICAgICAgLy8gc2V0dGluZyB0aGUgYWNjZXB0IGhlYWRlcnMgYXV0b21hdGljYWxseVxyXG4gICAgICAgICAgICBmc0V4ZWMoKCkgPT4geGhyT2JqZWN0LnNldFJlcXVlc3RIZWFkZXIoUkVRX0FDQ0VQVCwgU1REX0FDQ0VQVCkpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5zZW5kRXZlbnQoQkVHSU4pO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5zZW5kUmVxdWVzdChmb3JtRGF0YSk7XHJcblxyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgLy9fb25FcnJvci8vX29uRXJyb3JcclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgY2FuY2VsKCkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHRoaXMueGhyT2JqZWN0LmFib3J0KCk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZUVycm9yKGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKlxyXG4gICAgICogUHJvbWlzZSBiaW5kaW5nc1xyXG4gICAgICpcclxuICAgICAqIFdlIGhhdmUgdG8gZGVsZWdhdGUgYSBmZXcgY2FsbHMgdG8gb3VyIHByb21pc2VcclxuICAgICAqIHRvIG1ha2UgdGhlIGNhbGxiYWNrIGZyb20gdGhlIG91dHNpZGUgYW5kIGluc2lkZSB3b3JrIHdpdGggb3VyXHJcbiAgICAgKiB4aHIgcHJvbWlzZVxyXG4gICAgICpcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGdldCAkcHJvbWlzZSgpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIGlmICghdGhpcy54aHJQcm9taXNlKSB7XHJcbiAgICAgICAgICAgIHRoaXMueGhyUHJvbWlzZSA9IG5ldyAoZ2V0UHJvbWlzZSgpKSgocmVzb2x2ZTogQ29uc3VtZXI8YW55PiwgcmVqZWN0OiBDb25zdW1lcjxhbnk+KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvL3RvIGFsbG93IGNhbGxiYWNrIGludG8geGhyIG92ZXIgcHJvbWlzZXNcclxuICAgICAgICAgICAgICAgIC8vd2UgaGF2ZSB0byByZWdpc3RlciB0aGUgY2FsbGJhY2tzXHJcbiAgICAgICAgICAgICAgICAvL2FjY29yZGluZ2x5XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlZ2lzdGVyWGhyQ2FsbGJhY2tzKHJlc29sdmUsIHJlamVjdCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy54aHJQcm9taXNlO1xyXG4gICAgfVxyXG5cclxuICAgIGNhdGNoKGZ1bmM6IChkYXRhOiBhbnkpID0+IGFueSk6IEFzeW5jUnVubmFibGU8WE1MSHR0cFJlcXVlc3Q+IHtcclxuICAgICAgICB0aGlzLiRwcm9taXNlLmNhdGNoKGZ1bmMpO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIGZpbmFsbHkoZnVuYzogKCkgPT4gdm9pZCk6IEFzeW5jUnVubmFibGU8WE1MSHR0cFJlcXVlc3Q+IHtcclxuICAgICAgICAvL25vIGllMTEgc3VwcG9ydCB3ZSBwcm9iYWJseSBhcmUgZ29pbmcgdG8gcmV2ZXJ0IHRvIHNoaW1zIGZvciB0aGF0IG9uZVxyXG4gICAgICAgICg8YW55PnRoaXMuJHByb21pc2UpLnRoZW4oZnVuYykuY2F0Y2goZnVuYyk7XHJcbiAgICAgICAgLy8oPGFueT50aGlzLiRwcm9taXNlKS50aGVuKGZ1bmMpO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIHRoZW4oZnVuYzogKGRhdGE6IGFueSkgPT4gYW55KTogQXN5bmNSdW5uYWJsZTxYTUxIdHRwUmVxdWVzdD4ge1xyXG4gICAgICAgIHRoaXMuJHByb21pc2UudGhlbihmdW5jKTtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGF0dGFjaGVzIHRoZSBpbnRlcm5hbCBldmVudCBhbmQgcHJvY2Vzc2luZ1xyXG4gICAgICogY2FsbGJhY2sgd2l0aGluIHRoZSBwcm9taXNlIHRvIG91ciB4aHIgb2JqZWN0XHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHJlc29sdmVcclxuICAgICAqIEBwYXJhbSByZWplY3RcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIHJlZ2lzdGVyWGhyQ2FsbGJhY2tzKHJlc29sdmU6IENvbnN1bWVyPGFueT4sIHJlamVjdDogQ29uc3VtZXI8YW55Pikge1xyXG4gICAgICAgIGxldCB4aHJPYmplY3QgPSB0aGlzLnhock9iamVjdDtcclxuXHJcbiAgICAgICAgeGhyT2JqZWN0Lm9uYWJvcnQgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMub25BYm9ydChyZXNvbHZlLCByZWplY3QpO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgeGhyT2JqZWN0Lm9udGltZW91dCA9ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5vblRpbWVvdXQocmVzb2x2ZSwgcmVqZWN0KTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHhock9iamVjdC5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMub25TdWNjZXNzKHRoaXMueGhyT2JqZWN0LCByZXNvbHZlLCByZWplY3QpXHJcbiAgICAgICAgfTtcclxuICAgICAgICB4aHJPYmplY3Qub25sb2FkZW5kID0gKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm9uRG9uZSh0aGlzLnhock9iamVjdCwgcmVzb2x2ZSwgcmVqZWN0KTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHhock9iamVjdC5vbmVycm9yID0gKGVycm9yRGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMub25FcnJvcihlcnJvckRhdGEsIHJlc29sdmUsIHJlamVjdCk7XHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICAvKlxyXG4gICAgICogeGhyIHByb2Nlc3NpbmcgY2FsbGJhY2tzXHJcbiAgICAgKlxyXG4gICAgICogVGhvc2UgbWV0aG9kcyBhcmUgdGhlIGNhbGxiYWNrcyBjYWxsZWQgYnlcclxuICAgICAqIHRoZSB4aHIgb2JqZWN0IGRlcGVuZGluZyBvbiBpdHMgb3duIHN0YXRlXHJcbiAgICAgKi9cclxuXHJcbiAgICBwcm90ZWN0ZWQgb25BYm9ydChyZXNvbHZlOiBDb25zdW1lcjxhbnk+LCByZWplY3Q6IENvbnN1bWVyPGFueT4pIHtcclxuICAgICAgICByZWplY3QoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgb25UaW1lb3V0KHJlc29sdmU6IENvbnN1bWVyPGFueT4sIHJlamVjdDogQ29uc3VtZXI8YW55Pikge1xyXG4gICAgICAgIHRoaXMuc2VuZEV2ZW50KFNUQVRFX0VWVF9USU1FT1VUKTtcclxuICAgICAgICByZWplY3QoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgb25TdWNjZXNzKGRhdGE6IGFueSwgcmVzb2x2ZTogQ29uc3VtZXI8YW55PiwgcmVqZWN0OiBDb25zdW1lcjxhbnk+KSB7XHJcblxyXG4gICAgICAgIHRoaXMuc2VuZEV2ZW50KENPTVBMRVRFKTtcclxuXHJcbiAgICAgICAgLy9tYWxmb3JtcyBhbHdheXMgcmVzdWx0IGluIGVtcHR5IHJlc3BvbnNlIHhtbFxyXG4gICAgICAgIGlmKCF0aGlzPy54aHJPYmplY3Q/LnJlc3BvbnNlWE1MKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlTWFsRm9ybWVkWE1MKHJlc29sdmUpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBqc2YuYWpheC5yZXNwb25zZSh0aGlzLnhock9iamVjdCwgdGhpcy5yZXNwb25zZUNvbnRleHQudmFsdWUgPz8ge30pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaGFuZGxlTWFsRm9ybWVkWE1MKHJlc29sdmU6IEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgdGhpcy5zdG9wUHJvZ3Jlc3MgPSB0cnVlO1xyXG4gICAgICAgIGxldCBlcnJvckRhdGEgPSB7XHJcbiAgICAgICAgICAgIHR5cGU6IEVSUk9SLFxyXG4gICAgICAgICAgICBzdGF0dXM6IE1BTEZPUk1FRFhNTCxcclxuICAgICAgICAgICAgcmVzcG9uc2VDb2RlOiAyMDAsXHJcbiAgICAgICAgICAgIHJlc3BvbnNlVGV4dDogdGhpcy54aHJPYmplY3Q/LnJlc3BvbnNlVGV4dCxcclxuICAgICAgICAgICAgc291cmNlOiB7XHJcbiAgICAgICAgICAgICAgICBpZDogdGhpcy5zb3VyY2UuaWQudmFsdWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgSW1wbGVtZW50YXRpb24uc2VuZEVycm9yKGVycm9yRGF0YSk7XHJcbiAgICAgICAgfSBmaW5hbGx5IHtcclxuICAgICAgICAgICAgcmVzb2x2ZShlcnJvckRhdGEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvL25vbiBibG9ja2luZyBub24gY2xlYXJpbmdcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgb25Eb25lKGRhdGE6IGFueSwgcmVzb2x2ZTogQ29uc3VtZXI8YW55PiwgcmVqZWN0OiBDb25zdW1lcjxhbnk+KSB7XHJcbiAgICAgICAgaWYodGhpcy5zdG9wUHJvZ3Jlc3MpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXNvbHZlKGRhdGEpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBvbkVycm9yKGVycm9yRGF0YTogYW55LCByZXNvbHZlOiBDb25zdW1lcjxhbnk+LCByZWplY3Q6IENvbnN1bWVyPGFueT4pIHtcclxuICAgICAgICB0aGlzLmhhbmRsZUVycm9yKGVycm9yRGF0YSk7XHJcbiAgICAgICAgcmVqZWN0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLypcclxuICAgICAqIG90aGVyIGhlbHBlcnNcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBzZW5kRXZlbnQoZXZ0VHlwZTogc3RyaW5nKSB7XHJcbiAgICAgICAgbGV0IGV2ZW50RGF0YSA9IEV2ZW50RGF0YS5jcmVhdGVGcm9tUmVxdWVzdCh0aGlzLnhock9iamVjdCwgdGhpcy5yZXF1ZXN0Q29udGV4dCwgZXZ0VHlwZSk7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgLy91c2VyIGNvZGUgZXJyb3IsIHdlIG1pZ2h0IGNvdmVyXHJcbiAgICAgICAgICAgIC8vdGhpcyBpbiBvbkVycm9yIGJ1dCBhbHNvIHdlIGNhbm5vdCBzd2FsbG93IGl0XHJcbiAgICAgICAgICAgIC8vd2UgbmVlZCB0byByZXNvbHZlIHRoZSBsb2NhbCBoYW5kbGVycyBsYXp5bHksXHJcbiAgICAgICAgICAgIC8vYmVjYXVzZSBzb21lIGZyYW1ld29ya3MgbWlnaHQgZGVjb3JhdGUgdGhlbSBvdmVyIHRoZSBjb250ZXh0IGluIHRoZSByZXNwb25zZVxyXG4gICAgICAgICAgICBsZXQgZXZlbnRIYW5kbGVyID0gdGhpcy5yZXNvbHZlSGFuZGxlckZ1bmMoT05fRVZFTlQpOztcclxuICAgICAgICAgICAgSW1wbGVtZW50YXRpb24uc2VuZEV2ZW50KGV2ZW50RGF0YSwgIGV2ZW50SGFuZGxlcik7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZUVycm9yKGUpO1xyXG4gICAgICAgICAgICB0aHJvdyBlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGhhbmRsZUVycm9yKGV4Y2VwdGlvbikge1xyXG4gICAgICAgIGxldCBlcnJvckRhdGEgPSBFcnJvckRhdGEuZnJvbUNsaWVudChleGNlcHRpb24pO1xyXG5cclxuICAgICAgICBsZXQgZXZlbnRIYW5kbGVyID0gdGhpcy5yZXNvbHZlSGFuZGxlckZ1bmMoT05fRVJST1IpO1xyXG4gICAgICAgIEltcGxlbWVudGF0aW9uLnNlbmRFcnJvcihlcnJvckRhdGEsIGV2ZW50SGFuZGxlcik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiByZXNvbHZlcyB0aGUgZXZlbnQgaGFuZGxlcnMgbGF6bHlcclxuICAgICAqIHNvIHRoYXQgaWYgc29tZSBkZWNvcmF0aW9uIGhhcHBlbnMgaW4gYmV0d2VlbiB3ZSBjYW4gZGVhbCB3aXRoIGl0XHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIGZ1bmNOYW1lXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgcmVzb2x2ZUhhbmRsZXJGdW5jKGZ1bmNOYW1lOiBzdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5yZXNwb25zZUNvbnRleHQuZ2V0SWYoZnVuY05hbWUpXHJcbiAgICAgICAgICAgICAgICAub3JFbHNlKHRoaXMucmVxdWVzdENvbnRleHQuZ2V0SWYoZnVuY05hbWUpLnZhbHVlKVxyXG4gICAgICAgICAgICAgICAgLm9yRWxzZShFTVBUWV9GVU5DKS52YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHJlc29sdmVUYXJnZXRVcmwoc3JjRm9ybUVsZW1lbnQ6IEhUTUxGb3JtRWxlbWVudCkge1xyXG4gICAgICAgIHJldHVybiAodHlwZW9mIHNyY0Zvcm1FbGVtZW50LmVsZW1lbnRzW0VOQ09ERURfVVJMXSA9PSAndW5kZWZpbmVkJykgP1xyXG4gICAgICAgICAgICBzcmNGb3JtRWxlbWVudC5hY3Rpb24gOlxyXG4gICAgICAgICAgICBzcmNGb3JtRWxlbWVudC5lbGVtZW50c1tFTkNPREVEX1VSTF0udmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHNlbmRSZXF1ZXN0KGZvcm1EYXRhOiBYaHJGb3JtRGF0YSkge1xyXG4gICAgICAgIGxldCBpc1Bvc3QgPSB0aGlzLmFqYXhUeXBlICE9IFJFUV9UWVBFX0dFVDtcclxuICAgICAgICBpZihmb3JtRGF0YS5pc011bHRpcGFydFJlcXVlc3QpIHtcclxuICAgICAgICAgICAgdGhpcy54aHJPYmplY3Quc2VuZCgoaXNQb3N0KSA/IGZvcm1EYXRhLnRvRm9ybURhdGEoKSA6IG51bGwpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMueGhyT2JqZWN0LnNlbmQoKGlzUG9zdCkgPyBmb3JtRGF0YS50b1N0cmluZygpIDogbnVsbCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcmVzb2x2ZUZpbmFsVXJsKGZvcm1EYXRhOiBYaHJGb3JtRGF0YSkge1xyXG4gICAgICAgIGxldCB0YXJnZXRVcmwgPSB0aGlzLnJlc29sdmVUYXJnZXRVcmwoPEhUTUxGb3JtRWxlbWVudD50aGlzLnNvdXJjZUZvcm0uZ2V0QXNFbGVtKDApLnZhbHVlKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRhcmdldFVybCArICh0aGlzLmFqYXhUeXBlID09IFJFUV9UWVBFX0dFVCA/IFwiP1wiICsgZm9ybURhdGEudG9TdHJpbmcoKSA6IFwiXCIpO1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG59Il0sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7O0FBY0E7O0FBS0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWVBO0FBYUE7Ozs7Ozs7Ozs7Ozs7O0FBY0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFSQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUExQkE7QUE2QkE7QUFFQTtBQUFBO0FBRUE7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFFQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFVQTtBQVJBOzs7Ozs7O0FBT0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOzs7Ozs7QUFNQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7Ozs7O0FBS0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOztBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7Ozs7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBSUE7QUFBQTtBQWxTQTsiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/main/typescript/impl/xhrCore/XhrRequest.ts\n");
/***/ })
/******/ })));
//# sourceMappingURL=jsf.js.map
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment