@agilemotion/oui-react-js 2.0.12 → 2.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/InteractionPortalApp.js +30 -2
- package/dist/components/Turnstile.js +151 -0
- package/dist/components/WordDocumentViewer.js +7 -2
- package/dist/components/footer/Footer.js +9 -16
- package/dist/components/layout/Layout.js +10 -2
- package/dist/components/layout/ViewPort.js +7 -4
- package/dist/view/security/LoginInteractionPortal.js +75 -20
- package/dist/view/security/RegisterInteractionPortal.js +216 -0
- package/dist/view/security/joburg-logo.png +0 -0
- package/dist/view/security/joburg.jpg +0 -0
- package/package.json +1 -1
|
@@ -16,9 +16,14 @@ var _LottieIcon = _interopRequireDefault(require("./LottieIcon"));
|
|
|
16
16
|
require("./WordDocumentViewer.css");
|
|
17
17
|
var _useResizeObserver = require("./observers/useResizeObserver");
|
|
18
18
|
var _useOnFullyVisible = require("./observers/useOnFullyVisible");
|
|
19
|
+
var _process$env$REACT_AP;
|
|
19
20
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
20
21
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
21
|
-
|
|
22
|
+
// Sourced at build time from REACT_APP_SYNCFUSION_LICENSE_KEY (CRA env
|
|
23
|
+
// convention — matches REACT_APP_DOCS_API_HOST etc.). Previously this
|
|
24
|
+
// was hardcoded in source so every commit pinned the license; now it
|
|
25
|
+
// rotates via CI env vars without a source edit.
|
|
26
|
+
const KEY = exports.KEY = (_process$env$REACT_AP = process.env.REACT_APP_SYNCFUSION_LICENSE_KEY) !== null && _process$env$REACT_AP !== void 0 ? _process$env$REACT_AP : 'Ngo9BigBOggjHTQxAR8/V1JGaF5cXGpCf1FpRmJGdld5fUVHYVZUTXxaS00DNHVRdkdlWX5ceHVRQ2BYUUdwX0NWYEs=';
|
|
22
27
|
(0, _ej2Base.registerLicense)(KEY);
|
|
23
28
|
function resolveLocation() {
|
|
24
29
|
console.log("RESOLVE DOC HOST : ", process.env.REACT_APP_DOCS_API_HOST);
|
|
@@ -713,4 +718,4 @@ const WordDocumentViewer = props => {
|
|
|
713
718
|
}));
|
|
714
719
|
};
|
|
715
720
|
var _default = exports.default = WordDocumentViewer;
|
|
716
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RQcm9taXNlVHJhY2tlciIsIl9VdGlscyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfZWoyUmVhY3REb2N1bWVudGVkaXRvciIsIl9BcHBsaWNhdGlvbk1hbmFnZXIiLCJfZWoyQmFzZSIsIl9BbGVydCIsIl9Mb3R0aWVJY29uIiwiX3VzZVJlc2l6ZU9ic2VydmVyIiwiX3VzZU9uRnVsbHlWaXNpYmxlIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwidCIsIldlYWtNYXAiLCJyIiwibiIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsImhhcyIsImdldCIsInNldCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiS0VZIiwiZXhwb3J0cyIsInJlZ2lzdGVyTGljZW5zZSIsInJlc29sdmVMb2NhdGlvbiIsImNvbnNvbGUiLCJsb2ciLCJwcm9jZXNzIiwiZW52IiwiUkVBQ1RfQVBQX0RPQ1NfQVBJX0hPU1QiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsInByb3RvY29sIiwiaG9zdG5hbWUiLCJyZXNvbHZlRG9jU3ZjIiwiUkVBQ1RfQVBQX0RPQ1NfQVBJX1BBVEgiLCJET0NTVkMiLCJnZXREb2NzQmFzZSIsImFwcGxpY2F0aW9uTWFuYWdlciIsImdldENvbnRleHRSb290IiwiZ2V0U2VydmljZVVybCIsImNvbmNhdCIsIkRvY3VtZW50RWRpdG9yQ29udGFpbmVyQ29tcG9uZW50IiwiSW5qZWN0IiwiVG9vbGJhciIsIkxFVkVMX0ZNVCIsImFwcGx5TGV2ZWwiLCJlZCIsImxldmVsIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiZGVwdGgiLCJNYXRoIiwibWF4IiwibWluIiwic2VsZWN0aW9uIiwicGFyYWdyYXBoRm9ybWF0IiwibGlzdExldmVsTnVtYmVyIiwiYXBwbHlOdW1iZXJpbmciLCJ1c2VEeW5hbWljU3luY2Z1c2lvbkhlaWdodCIsInBhcmVudFJlZiIsImNvbnRhaW5lclJlZiIsImhlaWdodCIsInNldEhlaWdodCIsInVzZVN0YXRlIiwibWVhc3VyZSIsInVzZUNhbGxiYWNrIiwiY3VycmVudCIsInJlY3QiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJuZXdIZWlnaHQiLCJmbG9vciIsInVzZVJlc2l6ZU9ic2VydmVyIiwidXNlRWZmZWN0IiwicmVzaXplIiwiZG9jdW1lbnRFZGl0b3IiLCJXb3JkRG9jdW1lbnRWaWV3ZXIiLCJwcm9wcyIsImNvbnRhaW5lciIsInNldENvbnRhaW5lciIsIlJlYWN0IiwiaXRlbXMiLCJzZXRJdGVtcyIsInZpc2libGUiLCJzZXRWaXNpYmxlIiwicmVSZW5kZXJpbmciLCJzZXRSZVJlbmRlcmluZyIsImpzb24iLCJzZXRKc29uIiwiZXJyb3JNZXNzYWdlIiwic2V0RXJyb3JNZXNzYWdlIiwiY3VycmVudFRleHQiLCJ1c2VSZWYiLCJhY3RpdmVBbmNob3JSZWYiLCJhbmNob3JFbmQiLCJkZWxldGVMb2NrUmVmIiwibG9hZGluZyIsInVzZU9uRnVsbHlWaXNpYmxlIiwiZWwiLCJlZGl0b3JIZWlnaHQiLCJpc1BvaW50SW5zaWRlRWxlbWVudCIsIngiLCJ5IiwibGVmdCIsInJpZ2h0IiwidG9wIiwiYm90dG9tIiwiZ2V0Vmlld2VyRWxlbWVudCIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJpZCIsImlzTmF2aWdhdGlvbktleSIsImluY2x1ZGVzIiwia2V5Iiwibm9ybWFsaXplQW5jaG9yIiwidmFsdWUiLCJyZXBsYWNlIiwidmlld2VyRWxlbWVudCIsImluc2VydFJlYWRvbmx5QW5jaG9yIiwiZXZlbnREYXRhIiwiZHJvcFBvc2l0aW9uIiwiZG9jIiwiZWRpdG9yIiwic2VsIiwiY2FyZXRPZmZzZXQiLCJzdGFydE9mZnNldCIsImV4aXN0aW5nQW5jaG9yIiwiZ3JhYkFuY2hvcldpdGhCb3VuZHMiLCJhdFN0YXJ0IiwiYXRFbmQiLCJlbmRPZmZzZXQiLCJ3YXJuIiwidG9rZW4iLCJpbnNlcnRUZXh0IiwiZHJvcERhdGEiLCJhcGkiLCJnZXRWYWx1ZSIsInNhdmVBc0Jhc2U2NCIsInZhbHVlSGFuZGxlciIsIm51bWJlcmluZ0l0ZW1zIiwidGV4dCIsInNlcGFyYXRvciIsInRvb2xiYXJJdGVtcyIsImNvbW1lbnRzT25seSIsInRvb2x0aXBUZXh0IiwicHJlZml4SWNvbiIsImNvbW1hbmQiLCJlbmFibGVVcGxvYWQiLCJ1bnNoaWZ0IiwiX3Byb3BzJGZpbGUiLCJmaWxlIiwiYmFzZTY0IiwiYXJyYXlCdWZmZXIiLCJVdGlscyIsImJhc2U2NFRvQXJyYXlCdWZmZXIiLCJCbG9iIiwidHlwZSIsImZvcm1EYXRhIiwiRm9ybURhdGEiLCJhcHBlbmQiLCJhY2Nlc3NUb2tlbiIsInNlc3Npb25TdG9yYWdlIiwiZ2V0SXRlbSIsImlkVG9rZW4iLCJ0cmFja1Byb21pc2UiLCJmZXRjaCIsIm1ldGhvZCIsImhlYWRlcnMiLCJib2R5IiwidGhlbiIsInJlc3BvbnNlIiwidGltZXIiLCJzZXRUaW1lb3V0IiwiY2xlYXJUaW1lb3V0Iiwic2V0dXBDb250YWluZXIiLCJjdXJyZW50VXNlciIsImdldFVzZXJEZXRhaWxzIiwibmFtZSIsInN1cm5hbWUiLCJhbGxvd1VucmVzb2x2ZWRDaGFuZ2VzIiwicmV2aXNpb25zIiwiX3Byb3BzJGZpbGUyIiwiX3Byb3BzJGZpbGUzIiwic3RvcFByb3RlY3Rpb24iLCJibG9iIiwic2F2ZUFzQmxvYiIsImVuZm9yY2VQcm90ZWN0aW9uIiwiRmlsZSIsImV4dHJhY3REb2N1bWVudFRleHQiLCJvcmlnaW5hbFN0YXJ0Iiwib3JpZ2luYWxFbmQiLCJzZWxlY3RBbGwiLCJnZXRUZXh0Iiwic2VsZWN0IiwiZXh0cmFjdEFuY2hvclRva2VucyIsInJlZ2V4IiwidG9rZW5zIiwiU2V0IiwibWF0Y2giLCJleGVjIiwiYWRkIiwiQXJyYXkiLCJmcm9tIiwiaXNDYXJldFdpdGhpblJhbmdlIiwiY2FyZXQiLCJzdGFydCIsImVuZCIsInBhcmFncmFwaCIsInhJbiIsInlJbiIsImRlbGV0ZUN1cnJlbnRBbmNob3IiLCJkb2NFZGl0b3IiLCJhbmNob3IiLCJ1cGRhdGVBY3RpdmVBbmNob3IiLCJzY2FuUmlnaHRVbnRpbEFuY2hvciIsIm9yaWdpbk9mZnNldCIsIm1heFNjYW4iLCJidW1wT2Zmc2V0IiwiY2giLCJ0ZXN0IiwibmV4dCIsInNjYW5MZWZ0VW50aWxBbmNob3IiLCJwcmV2IiwiZ2V0Q2hhckF0Iiwib2Zmc2V0IiwiaXNDYXJldEltbWVkaWF0ZWx5QmVmb3JlQW5jaG9yU3RhcnQiLCJjMCIsImMxIiwiaXNDYXJldEltbWVkaWF0ZWx5QWZ0ZXJBbmNob3IiLCJzZWxlY3RDdXJyZW50V29yZCIsInNjYW5TdGFydCIsImlzQ2FyZXRBdEVuZCIsImRlbHRhIiwicGFydHMiLCJzcGxpdCIsImlkeCIsInBhcnNlSW50IiwidG9TdHJpbmciLCJqb2luIiwiYmVmb3JlWG1sSHR0cFJlcXVlc3RTZW5kIiwiYXJncyIsInB1c2giLCJhZGRFdmVudExpc3RlbmVyIiwiZXZlbnQiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJlZGl0b3JIaXN0b3J5IiwidW5kbyIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwiY3RybEtleSIsIm1ldGFLZXkiLCJvbk1vdXNlVXAiLCJjbGllbnRYIiwiY2xpZW50WSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJkb2N1bWVudENoYW5nZSIsImVuYWJsZVRyYWNrQ2hhbmdlcyIsImlzTnVsbCIsInRyYWNrQ2hhbmdlcyIsInJlYWRPbmx5IiwiaXNSZWFkT25seSIsInZhbHVlQ2hhbmdlSGFuZGxlciIsImRpc2FibGVBY2NlcHRDaGFuZ2VzIiwiYWNjZXB0QnV0dG9ucyIsImdldEVsZW1lbnRzQnlDbGFzc05hbWUiLCJhY2NlcHRCdXR0b24iLCJwYXJlbnRFbGVtZW50IiwicmVtb3ZlQ2hpbGQiLCJkaXNhYmxlUmVqZWN0Q2hhbmdlcyIsInJlamVjdEJ1dHRvbnMiLCJyZWplY3RCdXR0b24iLCJvcGVuIiwib25Ub29sYmFyQ2xpY2siLCJfY29udGFpbmVyJGRvY3VtZW50RWQiLCJpdGVtIiwiYXBwbHlCdWxsZXQiLCJjbGVhckxpc3QiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwic3R5bGUiLCJyZWYiLCJ3aWR0aCIsImZsZXhXcmFwIiwiZGlzcGxheSIsImp1c3RpZnlDb250ZW50IiwiYWxpZ25Db250ZW50IiwicGFkZGluZyIsIm1heEhlaWdodCIsInZhcmlhbnQiLCJzaG93Iiwib25DbG9zZSIsImRpc21pc3NpYmxlIiwid2l0aCIsImNvbG9yIiwic2NvcGUiLCJjcmVhdGVkIiwiZW5hYmxlUGVyc2lzdGVuY2UiLCJ0b29sYmFyQ2xpY2siLCJyZXN0cmljdEVkaXRpbmciLCJzaG93UHJvcGVydGllc1BhbmUiLCJlbmFibGVBdXRvRm9jdXMiLCJzZXJ2aWNlVXJsIiwiZW5hYmxlVG9vbGJhciIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL1dvcmREb2N1bWVudFZpZXdlci5qc3giXSwic291cmNlc0NvbnRlbnQiOlsi77u/aW1wb3J0IFJlYWN0LCB7dXNlRWZmZWN0LCB1c2VSZWZ9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7dHJhY2tQcm9taXNlfSBmcm9tIFwicmVhY3QtcHJvbWlzZS10cmFja2VyXCI7XG5pbXBvcnQgVXRpbHMgZnJvbSBcIi4uL1V0aWxzXCI7XG5pbXBvcnQge0RvY3VtZW50RWRpdG9yQ29udGFpbmVyQ29tcG9uZW50LCBUb29sYmFyfSBmcm9tICdAc3luY2Z1c2lvbi9lajItcmVhY3QtZG9jdW1lbnRlZGl0b3InO1xuaW1wb3J0IFwiLi9Eb2N1bWVudFRlbXBsYXRlRGVzaWduZXJDb21wb25lbnQuY3NzXCJcbmltcG9ydCBhcHBsaWNhdGlvbk1hbmFnZXIgZnJvbSBcIi4uL0FwcGxpY2F0aW9uTWFuYWdlclwiO1xuaW1wb3J0IHtyZWdpc3RlckxpY2Vuc2V9IGZyb20gXCJAc3luY2Z1c2lvbi9lajItYmFzZVwiO1xuaW1wb3J0IEFsZXJ0IGZyb20gXCJyZWFjdC1ib290c3RyYXAvQWxlcnRcIjtcbmltcG9ydCBMb3R0aWVJY29uIGZyb20gXCIuL0xvdHRpZUljb25cIjtcbmltcG9ydCBcIi4vV29yZERvY3VtZW50Vmlld2VyLmNzc1wiXG5pbXBvcnQge3VzZVN0YXRlLCB1c2VDYWxsYmFja30gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge3VzZVJlc2l6ZU9ic2VydmVyfSBmcm9tIFwiLi9vYnNlcnZlcnMvdXNlUmVzaXplT2JzZXJ2ZXJcIjtcbmltcG9ydCB7dXNlT25GdWxseVZpc2libGV9IGZyb20gXCIuL29ic2VydmVycy91c2VPbkZ1bGx5VmlzaWJsZVwiO1xuXG5leHBvcnQgY29uc3QgS0VZID0gJ05nbzlCaWdCT2dnakhUUXhBUjgvVjFKR2FGNWNYR3BDZjFGcFJtSkdkbGQ1ZlVWSFlWWlVUWHhhUzAwRE5IVlJka2RsV1g1Y2VIVlJRMkJZVVVkd1gwTldZRXM9JztcbnJlZ2lzdGVyTGljZW5zZShLRVkpO1xuXG5mdW5jdGlvbiByZXNvbHZlTG9jYXRpb24oKSB7XG4gICAgY29uc29sZS5sb2coXCJSRVNPTFZFIERPQyBIT1NUIDogXCIsIHByb2Nlc3MuZW52LlJFQUNUX0FQUF9ET0NTX0FQSV9IT1NUKTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuUkVBQ1RfQVBQX0RPQ1NfQVBJX0hPU1QpIHtcbiAgICAgICAgcmV0dXJuIHByb2Nlc3MuZW52LlJFQUNUX0FQUF9ET0NTX0FQSV9IT1NUO1xuICAgIH1cblxuICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgKyAnLy8nICsgd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lO1xufVxuXG5mdW5jdGlvbiByZXNvbHZlRG9jU3ZjKCkge1xuICAgIGNvbnNvbGUubG9nKFwiUkVTT0xWRSBET0MgUEFUSCA6IFwiLCBwcm9jZXNzLmVudi5SRUFDVF9BUFBfRE9DU19BUElfUEFUSCk7XG4gICAgaWYgKHByb2Nlc3MuZW52LlJFQUNUX0FQUF9ET0NTX0FQSV9QQVRIKSB7XG4gICAgICAgIHJldHVybiBwcm9jZXNzLmVudi5SRUFDVF9BUFBfRE9DU19BUElfUEFUSDtcbiAgICB9XG5cbiAgICByZXR1cm4gXCIvZG9jcy9hcGkvdjEvc3luY2Z1c2lvblwiO1xufVxuXG5leHBvcnQgY29uc3QgbG9jYXRpb24gPSByZXNvbHZlTG9jYXRpb24oKTtcbmV4cG9ydCBjb25zdCBET0NTVkMgPSByZXNvbHZlRG9jU3ZjKCk7XG5cbmZ1bmN0aW9uIGdldERvY3NCYXNlKCkge1xuICAgIHJldHVybiBsb2NhdGlvbiArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRDb250ZXh0Um9vdCgpICsgRE9DU1ZDO1xufVxuXG5mdW5jdGlvbiBnZXRTZXJ2aWNlVXJsKCkge1xuICAgIC8vIFN5bmNmdXNpb24ncyBEb2N1bWVudEVkaXRvciB1c2VzIHRoaXMgcHJvcCBhcyBhIEJBU0UgYW5kIGRpcmVjdGx5XG4gICAgLy8gY29uY2F0ZW5hdGVzIHRoZSBhY3Rpb24gbmFtZSBvbnRvIGl0IChJbXBvcnQsIFN5c3RlbUNsaXBib2FyZCxcbiAgICAvLyBTcGVsbENoZWNrLCBFeHBvcnRTRkRULCAuLi4pLiBTbyB3ZSBtdXN0IHJldHVybiBKVVNUIHRoZSBiYXNlIOKAlFxuICAgIC8vIHRyYWlsaW5nIHNsYXNoIHNvIHRoZSBhcHBlbmRlZCBhY3Rpb24gbGFuZHMgYXMgYSBjbGVhbiBwYXRoXG4gICAgLy8gc2VnbWVudCwgbm90IGFzIGEgY29udGludWF0aW9uIG9mIHRoZSBwcmV2aW91cyBzZWdtZW50LlxuICAgIC8vXG4gICAgLy8gV2UgaW50ZW50aW9uYWxseSBkbyBOT1QgYXBwZW5kIFwiL0ltcG9ydFwiIGhlcmUuIFRoZSBleHBsaWNpdCBQT1NUXG4gICAgLy8gYXQgdGhlIGBwcm9wcy5maWxlPy5iYXNlNjRgIGZldGNoIGxvd2VyIGluIHRoZSBjb21wb25lbnQgYnVpbGRzXG4gICAgLy8gaXRzIG93biAvSW1wb3J0IFVSTCB3aXRoIGhlYWRlci1iYXNlZCBhdXRoOyB0aGUgZWRpdG9yJ3MgaW50ZXJuYWxcbiAgICAvLyBjYWxscyAobm90YWJseSBTeXN0ZW1DbGlwYm9hcmQsIHdoaWNoIGZpcmVzIG9uIHJpY2gtY29udGVudFxuICAgIC8vIHBhc3RlcyBmcm9tIFdvcmQpIG5lZWQgY2xlYW4gYmFzZSArIGFjdGlvbiBjb21wb3NpdGlvbi5cbiAgICAvL1xuICAgIC8vIEF1dGggdmlhIHF1ZXJ5IHN0cmluZyBpcyBhbHNvIGludGVudGlvbmFsbHkgYWJzZW50IOKAlCBjb25jYXRlbmF0aW5nXG4gICAgLy8gdGhlIGFjdGlvbiBuYW1lIG9udG8gYSBVUkwgdGhhdCBhbHJlYWR5IGNhcnJpZXMgYD90b2tlbj0uLi5gIHdvdWxkXG4gICAgLy8gY29ycnVwdCBib3RoIHRoZSBxdWVyeSBzdHJpbmcgYW5kIHRoZSBhY3Rpb24gcGF0aC4gSWYgYSBkZXBsb3ltZW50XG4gICAgLy8gZXZlciByb3V0ZXMgdGhpcyB0aHJvdWdoIGEgZ2F0ZXdheSB0aGF0IGVuZm9yY2VzIGF1dGgsIHJlZ2lzdGVyIGFuXG4gICAgLy8gSHR0cENsaWVudCBpbnRlcmNlcHRvciBvbiB0aGUgRG9jdW1lbnRFZGl0b3IgaW5zdGFuY2UgdG8gYWRkIHRoZVxuICAgIC8vIGhlYWRlciByYXRoZXIgdGhhbiByZWludHJvZHVjaW5nIHRoZSBxdWVyeS1wYXJhbSBhcHByb2FjaC5cbiAgICByZXR1cm4gYCR7Z2V0RG9jc0Jhc2UoKX0vYDtcbn1cblxuRG9jdW1lbnRFZGl0b3JDb250YWluZXJDb21wb25lbnQuSW5qZWN0KFRvb2xiYXIpO1xuXG5jb25zdCBMRVZFTF9GTVQgPSBbJyUxLicsICclMS4lMi4nLCAnJTEuJTIuJTMuJ107XG5cbmZ1bmN0aW9uIGFwcGx5TGV2ZWwoZWQsIGxldmVsID0gMCkge1xuICAgIGNvbnN0IGRlcHRoID0gTWF0aC5tYXgoMCwgTWF0aC5taW4obGV2ZWwsIExFVkVMX0ZNVC5sZW5ndGggLSAxKSk7XG4gICAgZWQuc2VsZWN0aW9uLnBhcmFncmFwaEZvcm1hdC5saXN0TGV2ZWxOdW1iZXIgPSBkZXB0aDtcbiAgICBlZC5hcHBseU51bWJlcmluZyhMRVZFTF9GTVRbZGVwdGhdLCAnQXJhYmljJyk7XG59XG5cbmZ1bmN0aW9uIHVzZUR5bmFtaWNTeW5jZnVzaW9uSGVpZ2h0KHBhcmVudFJlZiwgY29udGFpbmVyUmVmKSB7XG4gICAgY29uc3QgW2hlaWdodCwgc2V0SGVpZ2h0XSA9IHVzZVN0YXRlKDApO1xuXG4gICAgY29uc3QgbWVhc3VyZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgaWYgKCFwYXJlbnRSZWYuY3VycmVudCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHJlY3QgPSBwYXJlbnRSZWYuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3QgbmV3SGVpZ2h0ID0gTWF0aC5mbG9vcihyZWN0LmhlaWdodCk7XG5cbiAgICAgICAgaWYgKG5ld0hlaWdodCA+IDAgJiYgbmV3SGVpZ2h0ICE9PSBoZWlnaHQpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiTUVBU1VSRSA6IFwiLCBuZXdIZWlnaHQpO1xuICAgICAgICAgICAgc2V0SGVpZ2h0KG5ld0hlaWdodCk7XG4gICAgICAgIH1cbiAgICB9LCBbcGFyZW50UmVmLCBoZWlnaHRdKTtcblxuICAgIC8vIPCflIEgUmVzaXplIG9ic2VydmVyXG4gICAgdXNlUmVzaXplT2JzZXJ2ZXIocGFyZW50UmVmLCBtZWFzdXJlKTtcblxuICAgIC8vIOKaoSBTeW5jZnVzaW9uIHJlc2l6ZSB0cmlnZ2VyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKGNvbnRhaW5lclJlZi5jdXJyZW50ICYmIGhlaWdodCA+IDApIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyUmVmLmN1cnJlbnQucmVzaXplKCk7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyUmVmLmN1cnJlbnQuZG9jdW1lbnRFZGl0b3IucmVzaXplKCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgLy8gc2lsZW50XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LCBbaGVpZ2h0LCBjb250YWluZXJSZWZdKTtcblxuICAgIHJldHVybiBoZWlnaHQ7XG59XG5cbmNvbnN0IFdvcmREb2N1bWVudFZpZXdlciA9IChwcm9wcykgPT4ge1xuICAgIGNvbnN0IFtjb250YWluZXIsIHNldENvbnRhaW5lcl0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbaXRlbXMsIHNldEl0ZW1zXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFt2aXNpYmxlLCBzZXRWaXNpYmxlXSA9IFJlYWN0LnVzZVN0YXRlKHRydWUpO1xuICAgIGNvbnN0IFtyZVJlbmRlcmluZywgc2V0UmVSZW5kZXJpbmddID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtqc29uLCBzZXRKc29uXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtlcnJvck1lc3NhZ2UsIHNldEVycm9yTWVzc2FnZV0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBjdXJyZW50VGV4dCA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICBjb25zdCBhY3RpdmVBbmNob3JSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgYW5jaG9yRW5kID0gdXNlUmVmKGZhbHNlKTtcbiAgICBjb25zdCBkZWxldGVMb2NrUmVmID0gdXNlUmVmKGZhbHNlKTtcbiAgICBjb25zdCBsb2FkaW5nID0gdXNlUmVmKHRydWUpO1xuICAgIGNvbnN0IHBhcmVudFJlZiA9IHVzZU9uRnVsbHlWaXNpYmxlKChlbCkgPT4ge1xuICAgICAgICBpZiAoIXJlUmVuZGVyaW5nKSB7XG4gICAgICAgICAgICBzZXRWaXNpYmxlKGZhbHNlKTtcbiAgICAgICAgICAgIHNldFJlUmVuZGVyaW5nKHRydWUpO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBjb250YWluZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgZWRpdG9ySGVpZ2h0ID0gdXNlRHluYW1pY1N5bmNmdXNpb25IZWlnaHQocGFyZW50UmVmLCBjb250YWluZXJSZWYpO1xuXG4gICAgZnVuY3Rpb24gaXNQb2ludEluc2lkZUVsZW1lbnQoeCwgeSwgZWwpIHtcbiAgICAgICAgaWYgKCFlbCkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBjb25zdCByZWN0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHggPj0gcmVjdC5sZWZ0ICYmXG4gICAgICAgICAgICB4IDw9IHJlY3QucmlnaHQgJiZcbiAgICAgICAgICAgIHkgPj0gcmVjdC50b3AgJiZcbiAgICAgICAgICAgIHkgPD0gcmVjdC5ib3R0b21cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRWaWV3ZXJFbGVtZW50KCkge1xuICAgICAgICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXG4gICAgICAgICAgICBgJHtwcm9wcy5pZH0tY29udGFpbmVyX2VkaXRvcl92aWV3ZXJDb250YWluZXJgXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNOYXZpZ2F0aW9uS2V5KGUpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICdBcnJvd0xlZnQnLCAnQXJyb3dSaWdodCcsICdBcnJvd1VwJywgJ0Fycm93RG93bicsXG4gICAgICAgICAgICAnSG9tZScsICdFbmQnLCAnUGFnZVVwJywgJ1BhZ2VEb3duJ1xuICAgICAgICBdLmluY2x1ZGVzKGUua2V5KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBub3JtYWxpemVBbmNob3IodmFsdWUpIHtcbiAgICAgICAgaWYgKCF2YWx1ZSkgcmV0dXJuIG51bGw7XG4gICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgICAgICAgLnJlcGxhY2UoL15cXFtcXFt8XFxdXFxdJC9nLCAnJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC9ePDx8Pj4kL2csICcnKTtcbiAgICB9XG5cbiAgICBsZXQgdmlld2VyRWxlbWVudCA9IGdldFZpZXdlckVsZW1lbnQoKTtcblxuICAgIGZ1bmN0aW9uIGluc2VydFJlYWRvbmx5QW5jaG9yKGV2ZW50RGF0YSwgZHJvcFBvc2l0aW9uKSB7XG4gICAgICAgIGlmICghY29udGFpbmVyPy5kb2N1bWVudEVkaXRvcikgcmV0dXJuO1xuICAgICAgICBpZiAoIWRyb3BQb3NpdGlvbikgcmV0dXJuO1xuXG4gICAgICAgIGlmICghaXNQb2ludEluc2lkZUVsZW1lbnQoZHJvcFBvc2l0aW9uLngsIGRyb3BQb3NpdGlvbi55LCB2aWV3ZXJFbGVtZW50KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZG9jID0gY29udGFpbmVyLmRvY3VtZW50RWRpdG9yO1xuICAgICAgICBjb25zdCBlZCA9IGRvYy5lZGl0b3I7XG4gICAgICAgIGNvbnN0IHNlbCA9IGRvYy5zZWxlY3Rpb247XG4gICAgICAgIGlmICghZWQgfHwgIXNlbCkgcmV0dXJuO1xuXG4gICAgICAgIC8vIFJlamVjdCBkcm9wIGlmIGN1cnNvciBpcyBzdHJpY3RseSBpbnNpZGUgYW4gZXhpc3RpbmcgYW5jaG9yXG4gICAgICAgIC8vIEFsbG93IGRyb3BwaW5nIGF0IHRoZSBleGFjdCBzdGFydCBvciBlbmQgYm91bmRhcnlcbiAgICAgICAgY29uc3QgY2FyZXRPZmZzZXQgPSBzZWwuc3RhcnRPZmZzZXQ7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nQW5jaG9yID0gZ3JhYkFuY2hvcldpdGhCb3VuZHMoY29udGFpbmVyKTtcbiAgICAgICAgaWYgKGV4aXN0aW5nQW5jaG9yKSB7XG4gICAgICAgICAgICBjb25zdCBhdFN0YXJ0ID0gY2FyZXRPZmZzZXQgPT09IGV4aXN0aW5nQW5jaG9yLnN0YXJ0T2Zmc2V0O1xuICAgICAgICAgICAgY29uc3QgYXRFbmQgPSBjYXJldE9mZnNldCA9PT0gZXhpc3RpbmdBbmNob3IuZW5kT2Zmc2V0O1xuICAgICAgICAgICAgaWYgKCFhdFN0YXJ0ICYmICFhdEVuZCkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcIkRyb3AgcmVqZWN0ZWQg4oCUIGN1cnNvciBpcyBpbnNpZGUgYW5jaG9yOiBcIiArIGV4aXN0aW5nQW5jaG9yLnRva2VuKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0b2tlbiA9IGBbWyR7bm9ybWFsaXplQW5jaG9yKGV2ZW50RGF0YSl9XV1gO1xuICAgICAgICBlZC5pbnNlcnRUZXh0KHRva2VuKTtcbiAgICB9XG5cbiAgICBjb25zdCBkcm9wRGF0YSA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICBjb25zdCBhcGkgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBnZXRWYWx1ZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBzYXZlQXNCYXNlNjQoKTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIGluc2VydFJlYWRvbmx5QW5jaG9yOiBhc3luYyAodmFsdWUsIGRyb3BQb3NpdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgIGRyb3BEYXRhLmN1cnJlbnQgPSB7dmFsdWUsIGRyb3BQb3NpdGlvbn07XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHByb3BzLnZhbHVlSGFuZGxlci5hcGkgPSBhcGkoKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IG51bWJlcmluZ0l0ZW1zID0gW1xuICAgICAgICB7aWQ6ICdsdmwtMCcsIHRleHQ6ICcxLid9LFxuICAgICAgICB7aWQ6ICdsdmwtMScsIHRleHQ6ICcxLjEnfSxcbiAgICAgICAge2lkOiAnbHZsLTInLCB0ZXh0OiAnMS4xLjEnfSxcbiAgICAgICAge3NlcGFyYXRvcjogdHJ1ZX0sXG4gICAgICAgIHtpZDogJ2NsZWFyJywgdGV4dDogJ0NsZWFyIGxpc3QnfSxcbiAgICBdO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgbGV0IHRvb2xiYXJJdGVtcyA9IHByb3BzLmNvbW1lbnRzT25seSA/XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgXCJDb21tZW50c1wiXG4gICAgICAgICAgICBdXG4gICAgICAgICAgICA6XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgXCJVbmRvXCIsXG4gICAgICAgICAgICAgICAgXCJSZWRvXCIsXG4gICAgICAgICAgICAgICAgXCJTZXBhcmF0b3JcIixcbiAgICAgICAgICAgICAgICB7aWQ6ICdidWxsZXRzJywgdGV4dDogJ+KAoiBCdWxsZXRzJywgdG9vbHRpcFRleHQ6ICdCdWxsZXRlZCBsaXN0J30sXG4gICAgICAgICAgICAgICAgXCJTZXBhcmF0b3JcIixcbiAgICAgICAgICAgICAgICB7dG9vbHRpcFRleHQ6ICdCb2xkJywgcHJlZml4SWNvbjogJ2UtaWNvbnMgZS1ib2xkJywgY29tbWFuZDogJ0JvbGQnfSxcbiAgICAgICAgICAgICAgICB7dG9vbHRpcFRleHQ6ICdJdGFsaWMnLCBwcmVmaXhJY29uOiAnZS1pY29ucyBlLWl0YWxpYycsIGNvbW1hbmQ6ICdJdGFsaWMnfSxcbiAgICAgICAgICAgICAgICBcIlNlcGFyYXRvclwiLFxuICAgICAgICAgICAgICAgIFwiSW1hZ2VcIixcbiAgICAgICAgICAgICAgICBcIlRhYmxlXCIsXG4gICAgICAgICAgICAgICAgXCJTZXBhcmF0b3JcIixcbiAgICAgICAgICAgICAgICBcIkhlYWRlclwiLFxuICAgICAgICAgICAgICAgIFwiRm9vdGVyXCIsXG4gICAgICAgICAgICAgICAgXCJQYWdlU2V0dXBcIixcbiAgICAgICAgICAgICAgICBcIkJyZWFrXCIsXG4gICAgICAgICAgICAgICAgXCJQYWdlTnVtYmVyXCIsXG4gICAgICAgICAgICAgICAgXCJJbnNlcnRGb290bm90ZVwiLFxuICAgICAgICAgICAgICAgIFwiU2VwYXJhdG9yXCIsXG4gICAgICAgICAgICAgICAgXCJGaW5kXCIsXG4gICAgICAgICAgICAgICAgXCJTZXBhcmF0b3JcIixcbiAgICAgICAgICAgICAgICBcIkNvbW1lbnRzXCJcbiAgICAgICAgICAgIF1cblxuICAgICAgICBpZiAocHJvcHMuZW5hYmxlVXBsb2FkKSB7XG4gICAgICAgICAgICB0b29sYmFySXRlbXMudW5zaGlmdChcIk9wZW5cIik7XG4gICAgICAgIH1cblxuICAgICAgICBzZXRJdGVtcyh0b29sYmFySXRlbXMpO1xuICAgIH0sIFtdKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChwcm9wcy5maWxlPy5iYXNlNjQpIHtcbiAgICAgICAgICAgIGxldCBiYXNlNjQgPSBwcm9wcy5maWxlLmJhc2U2NDtcbiAgICAgICAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gVXRpbHMuYmFzZTY0VG9BcnJheUJ1ZmZlcihiYXNlNjQpO1xuICAgICAgICAgICAgY29uc3QgZmlsZSA9IG5ldyBCbG9iKFthcnJheUJ1ZmZlcl0sIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBwcm9wcy5maWxlLnR5cGVcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlcycsIGZpbGUsICdkb2N1bWVudC5kb2N4Jyk7XG5cbiAgICAgICAgICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnYWNjZXNzVG9rZW4nKTtcbiAgICAgICAgICAgIGNvbnN0IGlkVG9rZW4gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdpZFRva2VuJyk7XG5cbiAgICAgICAgICAgIHRyYWNrUHJvbWlzZShcbiAgICAgICAgICAgICAgICBmZXRjaChcbiAgICAgICAgICAgICAgICAgICAgYCR7Z2V0RG9jc0Jhc2UoKX0vSW1wb3J0YCxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiAnQmVhcmVyICcgKyBhY2Nlc3NUb2tlbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaWRUb2tlbic6IGlkVG9rZW5cblxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IGZvcm1EYXRhLFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0cmFja1Byb21pc2UoXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5qc29uKCkudGhlbigoanNvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEpzb24oanNvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9LCBbcHJvcHMuZmlsZV0pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKHJlUmVuZGVyaW5nKSB7XG4gICAgICAgICAgICBjb25zdCB0aW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBzZXRWaXNpYmxlKHRydWUpO1xuICAgICAgICAgICAgfSwgMV8wMDApO1xuXG4gICAgICAgICAgICByZXR1cm4gKCkgPT4gd2luZG93LmNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgICAgIH1cbiAgICB9LCBbcmVSZW5kZXJpbmddKTtcblxuICAgIGZ1bmN0aW9uIHNldHVwQ29udGFpbmVyKCkge1xuICAgICAgICBjb250YWluZXIuZG9jdW1lbnRFZGl0b3IuY3VycmVudFVzZXIgPSBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0VXNlckRldGFpbHMoKS5uYW1lICsgXCIgXCIgKyBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0VXNlckRldGFpbHMoKS5zdXJuYW1lO1xuICAgIH1cblxuICAgIGNvbnN0IHNhdmVBc0Jhc2U2NCA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgaWYgKHByb3BzLmFsbG93VW5yZXNvbHZlZENoYW5nZXMgPT09IGZhbHNlICYmIGNvbnRhaW5lci5kb2N1bWVudEVkaXRvci5yZXZpc2lvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgc2V0RXJyb3JNZXNzYWdlKFwiUGxlYXNlIGFjY2VwdCBvciByZWplY3QgYWxsIHN1Z2dlc3RlZCBjaGFuZ2VzXCIpO1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29udGFpbmVyKSB7XG4gICAgICAgICAgICBjb250YWluZXIuZG9jdW1lbnRFZGl0b3IuZWRpdG9yLnN0b3BQcm90ZWN0aW9uKFwicGFzc3dvcmRcIik7XG4gICAgICAgICAgICBsZXQgYmxvYiA9IGF3YWl0IGNvbnRhaW5lci5kb2N1bWVudEVkaXRvci5zYXZlQXNCbG9iKCdEb2N4Jyk7XG4gICAgICAgICAgICBpZiAocHJvcHMuY29tbWVudHNPbmx5KSB7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyLmRvY3VtZW50RWRpdG9yLmVkaXRvci5lbmZvcmNlUHJvdGVjdGlvbigncGFzc3dvcmQnLCAnQ29tbWVudHNPbmx5Jyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBuZXcgRmlsZShbYmxvYl0sIHByb3BzLmZpbGU/Lm5hbWUgPyBwcm9wcy5maWxlLm5hbWUgOiAnZG9jdW1lbnQuZG9jeCcsIHt0eXBlOiBwcm9wcy5maWxlPy50eXBlID8gcHJvcHMuZmlsZS50eXBlIDogJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50J30pO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGV4dHJhY3REb2N1bWVudFRleHQoZWRpdG9yKSB7XG4gICAgICAgIGlmIChjdXJyZW50VGV4dC5jdXJyZW50KSByZXR1cm4gY3VycmVudFRleHQuY3VycmVudDtcblxuICAgICAgICBjb25zdCBvcmlnaW5hbFN0YXJ0ID0gZWRpdG9yLnNlbGVjdGlvbi5zdGFydE9mZnNldDtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxFbmQgPSBlZGl0b3Iuc2VsZWN0aW9uLmVuZE9mZnNldDtcblxuICAgICAgICBlZGl0b3Iuc2VsZWN0aW9uLnNlbGVjdEFsbCgpO1xuICAgICAgICBjb25zdCB0ZXh0ID0gZWRpdG9yLnNlbGVjdGlvbi5nZXRUZXh0KCk7XG4gICAgICAgIGVkaXRvci5zZWxlY3Rpb24uc2VsZWN0KG9yaWdpbmFsU3RhcnQsIG9yaWdpbmFsRW5kKTtcblxuICAgICAgICBjdXJyZW50VGV4dC5jdXJyZW50ID0gdGV4dDtcbiAgICAgICAgcmV0dXJuIHRleHQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXh0cmFjdEFuY2hvclRva2Vucyh0ZXh0KSB7XG4gICAgICAgIGNvbnN0IHJlZ2V4ID0gL1xcW1xcW1teXFxbXFxdXSs/XFxdXFxdL2c7XG4gICAgICAgIGNvbnN0IHRva2VucyA9IG5ldyBTZXQoKTtcbiAgICAgICAgbGV0IG1hdGNoO1xuXG4gICAgICAgIHdoaWxlICgobWF0Y2ggPSByZWdleC5leGVjKHRleHQpKSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgdG9rZW5zLmFkZChtYXRjaFswXSk7IC8vIGV4YWN0IFtbVEVYVF1dXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbSh0b2tlbnMpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzQ2FyZXRXaXRoaW5SYW5nZShjYXJldCwgc3RhcnQsIGVuZCkge1xuICAgICAgICBpZiAoY2FyZXQucGFyYWdyYXBoICE9PSBzdGFydC5wYXJhZ3JhcGgpIHJldHVybiBmYWxzZTtcblxuICAgICAgICBjb25zdCB4ID0gY2FyZXQubG9jYXRpb24ueEluO1xuICAgICAgICBjb25zdCB5ID0gY2FyZXQubG9jYXRpb24ueUluO1xuXG4gICAgICAgIC8vY29uc29sZS5sb2coXCJDSEVDS0lORyBDQVJFVCBXSVRISU4gUkFOR0UgOiBcIiwgeCwgeSwgc3RhcnQubG9jYXRpb24ueEluLCBzdGFydC5sb2NhdGlvbi55SW4sIGVuZC5sb2NhdGlvbi54SW4sIGVuZC5sb2NhdGlvbi55SW4pO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgeSA9PT0gc3RhcnQubG9jYXRpb24ueUluICYmXG4gICAgICAgICAgICB4ID49IHN0YXJ0LmxvY2F0aW9uLnhJbiAmJlxuICAgICAgICAgICAgeCA8PSBlbmQubG9jYXRpb24ueEluXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVsZXRlQ3VycmVudEFuY2hvcihjb250YWluZXIpIHtcbiAgICAgICAgY29uc3QgZWRpdG9yID0gY29udGFpbmVyPy5kb2N1bWVudEVkaXRvcjtcbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uID0gZWRpdG9yPy5zZWxlY3Rpb247XG4gICAgICAgIGNvbnN0IGRvY0VkaXRvciA9IGVkaXRvcj8uZWRpdG9yO1xuXG4gICAgICAgIGNvbnN0IGFuY2hvciA9IGFjdGl2ZUFuY2hvclJlZi5jdXJyZW50O1xuICAgICAgICBpZiAoIWVkaXRvciB8fCAhc2VsZWN0aW9uIHx8ICFkb2NFZGl0b3IgfHwgIWFuY2hvcikgcmV0dXJuO1xuXG4gICAgICAgIC8vY29uc29sZS5sb2coXCJFTkQgT0ZGU0VUIDogXCIsIGFuY2hvci5lbmRPZmZzZXQsIGJ1bXBPZmZzZXQoYW5jaG9yLmVuZE9mZnNldCwgLTEpKVxuICAgICAgICAvL2NvbnNvbGUubG9nKFwiU1RBUlQgLSBFTkQgOiBcIiwgYW5jaG9yLnN0YXJ0T2Zmc2V0LCBidW1wT2Zmc2V0KGFuY2hvci5lbmRPZmZzZXQsIC0xKSk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBzZWxlY3Rpb24uc2VsZWN0KGFuY2hvci5zdGFydE9mZnNldCwgYW5jaG9yLmVuZE9mZnNldCk7XG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiU0VMRUNUSU9OIFRFWFQgOiBcIiArIHNlbGVjdGlvbi50ZXh0KTtcbiAgICAgICAgICAgIC8vZG9jRWRpdG9yLmRlbGV0ZSgpO1xuICAgICAgICAgICAgLy9zZWxlY3Rpb24uc2VsZWN0KGFuY2hvci5zdGFydE9mZnNldCwgYW5jaG9yLnN0YXJ0T2Zmc2V0KTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIGFjdGl2ZUFuY2hvclJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgICAgIHVwZGF0ZUFjdGl2ZUFuY2hvcihjb250YWluZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdXBkYXRlQWN0aXZlQW5jaG9yKGNvbnRhaW5lcikge1xuICAgICAgICBhY3RpdmVBbmNob3JSZWYuY3VycmVudCA9IGdyYWJBbmNob3JXaXRoQm91bmRzKGNvbnRhaW5lcik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2NhblJpZ2h0VW50aWxBbmNob3IoZWRpdG9yLCBvcmlnaW5PZmZzZXQsIG1heFNjYW4gPSA1MDApIHtcbiAgICAgICAgY29uc3Qgc2VsID0gZWRpdG9yLnNlbGVjdGlvbjtcbiAgICAgICAgbGV0IGN1cnJlbnQgPSBvcmlnaW5PZmZzZXQ7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXhTY2FuOyBpKyspIHtcbiAgICAgICAgICAgIC8vIG1vdmUgcmlnaHRcbiAgICAgICAgICAgIGN1cnJlbnQgPSBidW1wT2Zmc2V0KGN1cnJlbnQsICsxKTtcblxuICAgICAgICAgICAgc2VsLnNlbGVjdChjdXJyZW50LCBjdXJyZW50KTtcblxuICAgICAgICAgICAgLy8gc2VsZWN0IE9ORSBjaGFyYWN0ZXIgb25seVxuICAgICAgICAgICAgc2VsLnNlbGVjdChcbiAgICAgICAgICAgICAgICBjdXJyZW50LFxuICAgICAgICAgICAgICAgIGJ1bXBPZmZzZXQoY3VycmVudCwgKzEpXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjb25zdCBjaCA9IHNlbC50ZXh0O1xuXG4gICAgICAgICAgICAvLyDim5QgQmFpbCBvbiB3aGl0ZXNwYWNlIG9yIHBhcmFncmFwaCBicmVha1xuICAgICAgICAgICAgaWYgKCFjaCB8fCAvXFxzLy50ZXN0KGNoKSkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgIC8vIERldGVjdCBjbG9zaW5nIFwiXV1cIlxuICAgICAgICAgICAgaWYgKGNoID09PSAnXScpIHtcbiAgICAgICAgICAgICAgICAvLyBsb29rYWhlYWQgb25lIGNoYXJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0ID0gYnVtcE9mZnNldChjdXJyZW50LCArMSk7XG4gICAgICAgICAgICAgICAgc2VsLnNlbGVjdChuZXh0LCBidW1wT2Zmc2V0KG5leHQsICsxKSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoc2VsLnRleHQgPT09ICddJykge1xuICAgICAgICAgICAgICAgICAgICAvLyByZXR1cm4gcG9zaXRpb24gQUZURVIgXV1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJ1bXBPZmZzZXQoY3VycmVudCwgKzIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNjYW5MZWZ0VW50aWxBbmNob3IoZWRpdG9yLCBvcmlnaW5PZmZzZXQsIG1heFNjYW4gPSA1MDApIHtcbiAgICAgICAgY29uc3Qgc2VsID0gZWRpdG9yLnNlbGVjdGlvbjtcbiAgICAgICAgbGV0IGN1cnJlbnQgPSBvcmlnaW5PZmZzZXQ7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXhTY2FuOyBpKyspIHtcbiAgICAgICAgICAgIGN1cnJlbnQgPSBidW1wT2Zmc2V0KGN1cnJlbnQsIC0xKTtcblxuICAgICAgICAgICAgLy8gc2VsZWN0IG9uZSBjaGFyIHRvIHRoZSBsZWZ0XG4gICAgICAgICAgICBzZWwuc2VsZWN0KFxuICAgICAgICAgICAgICAgIGJ1bXBPZmZzZXQoY3VycmVudCwgLTEpLFxuICAgICAgICAgICAgICAgIGN1cnJlbnRcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGNvbnN0IGNoID0gc2VsLnRleHQ7XG5cbiAgICAgICAgICAgIGlmICghY2ggfHwgL1xccy8udGVzdChjaCkpIHJldHVybiBudWxsO1xuXG4gICAgICAgICAgICAvLyBkZXRlY3QgW1tcbiAgICAgICAgICAgIGlmIChjaCA9PT0gJ1snKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldiA9IGJ1bXBPZmZzZXQoY3VycmVudCwgLTEpO1xuICAgICAgICAgICAgICAgIHNlbC5zZWxlY3QoXG4gICAgICAgICAgICAgICAgICAgIGJ1bXBPZmZzZXQocHJldiwgLTEpLFxuICAgICAgICAgICAgICAgICAgICBwcmV2XG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGlmIChzZWwudGV4dCA9PT0gJ1snKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIPCflJEgRklYOiBnbyBiYWNrIFRXTyBjaGFyc1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYnVtcE9mZnNldChjdXJyZW50LCAtMik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0Q2hhckF0KGVkaXRvciwgb2Zmc2V0KSB7XG4gICAgICAgIGNvbnN0IHNlbCA9IGVkaXRvci5zZWxlY3Rpb247XG4gICAgICAgIHNlbC5zZWxlY3Qob2Zmc2V0LCBidW1wT2Zmc2V0KG9mZnNldCwgKzEpKTtcbiAgICAgICAgcmV0dXJuIHNlbC50ZXh0IHx8IG51bGw7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNDYXJldEltbWVkaWF0ZWx5QmVmb3JlQW5jaG9yU3RhcnQoZWRpdG9yLCBvZmZzZXQpIHtcbiAgICAgICAgY29uc3QgYzAgPSBnZXRDaGFyQXQoZWRpdG9yLCBvZmZzZXQpO1xuICAgICAgICBjb25zdCBjMSA9IGdldENoYXJBdChlZGl0b3IsIGJ1bXBPZmZzZXQob2Zmc2V0LCArMSkpO1xuICAgICAgICByZXR1cm4gYzAgPT09ICdbJyAmJiBjMSA9PT0gJ1snOyAvLyB8W1tURVhUXV1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0NhcmV0SW1tZWRpYXRlbHlBZnRlckFuY2hvcihlZGl0b3IsIG9mZnNldCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgZ2V0Q2hhckF0KGVkaXRvciwgYnVtcE9mZnNldChvZmZzZXQsIC0xKSkgPT09ICddJyAmJlxuICAgICAgICAgICAgZ2V0Q2hhckF0KGVkaXRvciwgYnVtcE9mZnNldChvZmZzZXQsIC0yKSkgPT09ICddJ1xuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdyYWJBbmNob3JXaXRoQm91bmRzKGNvbnRhaW5lcikge1xuICAgICAgICBjb25zdCBlZGl0b3IgPSBjb250YWluZXI/LmRvY3VtZW50RWRpdG9yO1xuICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSBlZGl0b3I/LnNlbGVjdGlvbjtcblxuICAgICAgICBjb25zdCBvcmlnaW5hbFN0YXJ0ID0gc2VsZWN0aW9uLnN0YXJ0T2Zmc2V0O1xuICAgICAgICBjb25zdCBvcmlnaW5hbEVuZCA9IHNlbGVjdGlvbi5lbmRPZmZzZXQ7XG5cbiAgICAgICAgc2VsZWN0aW9uLnNlbGVjdEN1cnJlbnRXb3JkKCk7XG4gICAgICAgIHNlbGVjdGlvbi5zZWxlY3Qob3JpZ2luYWxTdGFydCwgb3JpZ2luYWxFbmQpO1xuXG4gICAgICAgIC8vbGV0IHdvcmQgPSBzZWxlY3Rpb24udGV4dDtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcImdyYWJBbmNob3JXaXRoQm91bmRzIFNFTEVDVElPTiBURVhUIDogXCIsIHdvcmQpO1xuXG4gICAgICAgIGxldCBzY2FuU3RhcnQgPSBvcmlnaW5hbFN0YXJ0O1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKGlzQ2FyZXRJbW1lZGlhdGVseUJlZm9yZUFuY2hvclN0YXJ0KGVkaXRvciwgb3JpZ2luYWxTdGFydCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGlzQ2FyZXRBdEVuZCA9IGlzQ2FyZXRJbW1lZGlhdGVseUFmdGVyQW5jaG9yKGVkaXRvciwgb3JpZ2luYWxTdGFydClcbiAgICAgICAgICAgIGlmIChpc0NhcmV0QXRFbmQpIHtcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiQ0FSRVQgQVQgRU5EXCIpO1xuICAgICAgICAgICAgICAgIHNjYW5TdGFydCA9IGJ1bXBPZmZzZXQob3JpZ2luYWxTdGFydCwgLTMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBsZWZ0ID0gc2NhbkxlZnRVbnRpbEFuY2hvcihlZGl0b3IsIHNjYW5TdGFydCk7XG4gICAgICAgICAgICBjb25zdCByaWdodCA9IHNjYW5SaWdodFVudGlsQW5jaG9yKGVkaXRvciwgc2NhblN0YXJ0KTtcblxuICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3Rpb24uc2VsZWN0KGxlZnQsIHJpZ2h0KTtcbiAgICAgICAgICAgICAgICBjb25zdCB0ZXh0ID0gc2VsZWN0aW9uLnRleHQ7XG4gICAgICAgICAgICAgICAgYW5jaG9yRW5kLmN1cnJlbnQgPSBpc0NhcmV0QXRFbmQ7XG5cbiAgICAgICAgICAgICAgICAvKmNvbnNvbGUubG9nKFwiR1JBQiBSRVNVTFQgOiBcIiwge1xuICAgICAgICAgICAgICAgICAgICB0b2tlbjogdGV4dCxcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRPZmZzZXQ6IGxlZnQsXG4gICAgICAgICAgICAgICAgICAgIGVuZE9mZnNldDogcmlnaHRcbiAgICAgICAgICAgICAgICB9KTsqL1xuXG4gICAgICAgICAgICAgICAgaWYgKC9eXFxbXFxbLis/XFxdXFxdJC8udGVzdCh0ZXh0KSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW46IHRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydE9mZnNldDogbGVmdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZE9mZnNldDogcmlnaHRcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBzZWxlY3Rpb24uc2VsZWN0KG9yaWdpbmFsU3RhcnQsIG9yaWdpbmFsRW5kKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1bXBPZmZzZXQob2Zmc2V0LCBkZWx0YSkge1xuICAgICAgICBjb25zdCBwYXJ0cyA9IG9mZnNldC5zcGxpdCgnOycpO1xuICAgICAgICBjb25zdCBpZHggPSBwYXJ0cy5sZW5ndGggLSAxO1xuXG4gICAgICAgIGNvbnN0IHZhbHVlID0gTWF0aC5tYXgoMCwgcGFyc2VJbnQocGFydHNbaWR4XSwgMTApICsgZGVsdGEpO1xuICAgICAgICBwYXJ0c1tpZHhdID0gdmFsdWUudG9TdHJpbmcoKTtcblxuICAgICAgICByZXR1cm4gcGFydHMuam9pbignOycpO1xuICAgIH1cblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgICAgICAgIHNldHVwQ29udGFpbmVyKCk7XG4gICAgICAgICAgICAvL2F1dG9TYXZlKCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGVkaXRvciA9IGNvbnRhaW5lci5kb2N1bWVudEVkaXRvcjtcblxuICAgICAgICAgICAgLy8gSW5qZWN0IG91ciBhdXRoIGhlYWRlcnMgb250byBldmVyeSBYSFIgU3luY2Z1c2lvbiBmaXJlc1xuICAgICAgICAgICAgLy8gaW50ZXJuYWxseSAoSW1wb3J0IC8gU3lzdGVtQ2xpcGJvYXJkIC8gU3BlbGxDaGVjayAvXG4gICAgICAgICAgICAvLyBFeHBvcnRTRkRUIC8gUmVzdHJpY3RFZGl0aW5nKS4gV2l0aG91dCB0aGlzLCByZXF1ZXN0cyB0byBhXG4gICAgICAgICAgICAvLyBnYXRld2F5LXByb3RlY3RlZCBkb2NzIHNlcnZpY2UgY29tZSBiYWNrIDQwMSBhbmQgdGhlXG4gICAgICAgICAgICAvLyBlZGl0b3Igc2lsZW50bHkgc3dhbGxvd3MgdGhlIGZhaWx1cmUg4oCUIG1vc3QgdmlzaWJseSBvblxuICAgICAgICAgICAgLy8gcmljaC1jb250ZW50IHBhc3RlIGZyb20gV29yZCwgd2hpY2ggcm91dGVzIHRocm91Z2hcbiAgICAgICAgICAgIC8vIFN5c3RlbUNsaXBib2FyZC4gUmVhZGluZyB0aGUgdG9rZW5zIGF0IGZpcmUgdGltZSAobm90IGF0XG4gICAgICAgICAgICAvLyBzZXR1cCkgc28gdG9rZW4gcmVmcmVzaGVzIGFyZSBwaWNrZWQgdXAuXG4gICAgICAgICAgICBlZGl0b3IuYmVmb3JlWG1sSHR0cFJlcXVlc3RTZW5kID0gKGFyZ3MpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2FjY2Vzc1Rva2VuJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgaWRUb2tlbiA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2lkVG9rZW4nKTtcblxuICAgICAgICAgICAgICAgIC8vIFJFUExBQ0UgYXJncy5oZWFkZXJzIHJhdGhlciB0aGFuIHB1c2goKSDigJQgU3luY2Z1c2lvbidzXG4gICAgICAgICAgICAgICAgLy8gaW50ZXJuYWwgQWpheEhlbHBlciByZXVzZXMgdGhlIHNhbWUgYXJncy5oZWFkZXJzIGFycmF5XG4gICAgICAgICAgICAgICAgLy8gYWNyb3NzIHJlcXVlc3RzIChhbmQgaW4gZGV2IFN0cmljdE1vZGUgdGhlIGVmZmVjdCBydW5zXG4gICAgICAgICAgICAgICAgLy8gdHdpY2UpLCBzbyBwdXNoaW5nIGNvbXBvdW5kcyB0aGUgZW50cmllcy4gV2l0aCBhIGZ1bGxcbiAgICAgICAgICAgICAgICAvLyBKV1QgYmVhcmVyIHBlciBkdXBsaWNhdGUgdGhlIHJlcXVlc3QgcmFwaWRseSBleGNlZWRzXG4gICAgICAgICAgICAgICAgLy8gbmdpbngncyA4S0IgaGVhZGVyIGJ1ZmZlciBhbmQgdGhlIGdhdGV3YXkgcmV0dXJucyA0MzFcbiAgICAgICAgICAgICAgICAvLyBSZXF1ZXN0IEhlYWRlciBGaWVsZHMgVG9vIExhcmdlOyB0aGUgYnJvd3NlciB0aGVuXG4gICAgICAgICAgICAgICAgLy8gcmVwb3J0cyB0aGUgc3ltcHRvbSBhcyBhIENPUlMgZmFpbHVyZSBiZWNhdXNlIHRoZSA0MzFcbiAgICAgICAgICAgICAgICAvLyByZXNwb25zZSBjYXJyaWVzIG5vIEFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbi5cbiAgICAgICAgICAgICAgICAvL1xuICAgICAgICAgICAgICAgIC8vIEVhY2ggcHVzaGVkIG9iamVjdCdzIFBST1BFUlRZIE5BTUUgYmVjb21lcyB0aGUgSFRUUFxuICAgICAgICAgICAgICAgIC8vIGhlYWRlciBuYW1lIG9uIHRoZSB3aXJlIChBamF4SGVscGVyIGRvZXNcbiAgICAgICAgICAgICAgICAvLyBgZm9yIChjb25zdCBrIGluIGgpIHhoci5zZXRSZXF1ZXN0SGVhZGVyKGssIGhba10pYCkuXG4gICAgICAgICAgICAgICAgY29uc3QgaGVhZGVycyA9IFtdO1xuICAgICAgICAgICAgICAgIGlmIChhY2Nlc3NUb2tlbikge1xuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzLnB1c2goeyAnQXV0aG9yaXphdGlvbic6ICdCZWFyZXIgJyArIGFjY2Vzc1Rva2VuIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaWRUb2tlbikge1xuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzLnB1c2goeyAnaWRUb2tlbic6IGlkVG9rZW4gfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGFyZ3MuaGVhZGVycyA9IGhlYWRlcnM7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBlZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcigna2V5RG93bicsIChhcmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZSA9IGFyZ3MuZXZlbnQ7XG5cbiAgICAgICAgICAgICAgICAvLyAx77iP4oOjIE5hdmlnYXRpb24ga2V5cyDihpIgaW5zcGVjdCBvbmx5XG4gICAgICAgICAgICAgICAgaWYgKGlzTmF2aWdhdGlvbktleShlKSkge1xuICAgICAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlQWN0aXZlQW5jaG9yKGNvbnRhaW5lcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiQUNUSVZFIEFOQ0hPUiA6IFwiLCBhY3RpdmVBbmNob3JSZWYuY3VycmVudCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiREVMRVRFIExPQ0tFRCA6IFwiLCBkZWxldGVMb2NrUmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ0JhY2tzcGFjZScgfHwgZS5rZXkgPT09ICdEZWxldGUnKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGRlbGV0ZUxvY2tSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3luY2Z1c2lvbiBhbHJlYWR5IGRlbGV0ZWQg4oaSIHJld2luZCBzYWZlbHlcbiAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRvci5lZGl0b3JIaXN0b3J5LnVuZG8oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBBY3F1aXJlIGxvY2tcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlTG9ja1JlZi5jdXJyZW50ID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBSZWxlYXNlIGxvY2sgd2hlbiBlZGl0b3IgaXMgYWN0dWFsbHkgc3RhYmxlXG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZUxvY2tSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIDLvuI/ig6MgSWYgd2UgYXJlIGluc2lkZSBhIHJlc3RyaWN0ZWQgYW5jaG9yXG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcImFuY2hvckVuZC5jdXJyZW50IDogXCIsIGFuY2hvckVuZC5jdXJyZW50LCBhY3RpdmVBbmNob3JSZWYuY3VycmVudCk7XG4gICAgICAgICAgICAgICAgaWYgKChhY3RpdmVBbmNob3JSZWYuY3VycmVudCAmJiAhaXNOYXZpZ2F0aW9uS2V5KGUpKSB8fCBhbmNob3JFbmQuY3VycmVudCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBEZWxldGUgLyBCYWNrc3BhY2UgPSBkZWxldGUgd2hvbGUgYW5jaG9yXG4gICAgICAgICAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ0JhY2tzcGFjZScgfHwgZS5rZXkgPT09ICdEZWxldGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvL2VkaXRvci5lZGl0b3JIaXN0b3J5LnVuZG8oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZUN1cnJlbnRBbmNob3IoY29udGFpbmVyLCBhY3RpdmVBbmNob3JSZWYuY3VycmVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVBbmNob3JSZWYuY3VycmVudCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmNob3JFbmQuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlTG9ja1JlZi5jdXJyZW50ID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIGJsb2NrIHdoZW4gd2UgYXJlIGF0IHRoZSBlbmQgb2YgYW4gYW5jaG9yLiBJbnB1dCB3aWxsIG5ldmVyIGRhbWFnZSB0aGUgYW5jaG9yXG4gICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJVTkJMT0NLSU5HIDogXCIsIGFuY2hvckVuZC5jdXJyZW50LCBhY3RpdmVBbmNob3JSZWYuY3VycmVudCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghYW5jaG9yRW5kLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIPCflJIgQmxvY2sgdHlwaW5nICYgcGFzdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmtleS5sZW5ndGggPT09IDEgfHwgLy8gcHJpbnRhYmxlIGNoYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmN0cmxLZXkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLm1ldGFLZXlcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlQW5jaG9yUmVmLmN1cnJlbnQgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgYW5jaG9yRW5kLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoZS5rZXkgPT09ICdCYWNrc3BhY2UnIHx8IGUua2V5ID09PSAnRGVsZXRlJykge1xuICAgICAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlQWN0aXZlQW5jaG9yKGNvbnRhaW5lcik7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCBvbk1vdXNlVXAgPSAoZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghaXNQb2ludEluc2lkZUVsZW1lbnQoZS5jbGllbnRYLCBlLmNsaWVudFksIHZpZXdlckVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoZHJvcERhdGEuY3VycmVudCkge1xuICAgICAgICAgICAgICAgICAgICBpbnNlcnRSZWFkb25seUFuY2hvcihkcm9wRGF0YS5jdXJyZW50LnZhbHVlLCBkcm9wRGF0YS5jdXJyZW50LmRyb3BQb3NpdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIGRyb3BEYXRhLmN1cnJlbnQgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHVwZGF0ZUFjdGl2ZUFuY2hvcihjb250YWluZXIpO1xuICAgICAgICAgICAgICAgIC8vdmlld2VyLnN0eWxlLm92ZXJmbG93ID0gJ2F1dG8nO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdmlld2VyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgb25Nb3VzZVVwKTtcbiAgICAgICAgICAgIHJldHVybiAoKSA9PiB2aWV3ZXJFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBvbk1vdXNlVXApO1xuICAgICAgICB9XG4gICAgfSwgW2NvbnRhaW5lcl0pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKGNvbnRhaW5lciAmJiBqc29uKSB7XG4gICAgICAgICAgICBjb250YWluZXIuZG9jdW1lbnRFZGl0b3IuZG9jdW1lbnRDaGFuZ2UgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyLmRvY3VtZW50RWRpdG9yLmVuYWJsZVRyYWNrQ2hhbmdlcyA9ICFVdGlscy5pc051bGwocHJvcHMudHJhY2tDaGFuZ2VzKSA/IHByb3BzLnRyYWNrQ2hhbmdlcyA6IHRydWU7XG4gICAgICAgICAgICAgICAgaWYgKHByb3BzLmNvbW1lbnRzT25seSkge1xuICAgICAgICAgICAgICAgICAgICBjb250YWluZXIuZG9jdW1lbnRFZGl0b3IuZWRpdG9yLmVuZm9yY2VQcm90ZWN0aW9uKCdwYXNzd29yZCcsICdDb21tZW50c09ubHknKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHByb3BzLnJlYWRPbmx5KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5kb2N1bWVudEVkaXRvci5pc1JlYWRPbmx5ID0gcHJvcHMucmVhZE9ubHk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGxvYWRpbmcuY3VycmVudCkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZmlsZSA9IGF3YWl0IHNhdmVBc0Jhc2U2NCgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocHJvcHMudmFsdWVDaGFuZ2VIYW5kbGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy52YWx1ZUNoYW5nZUhhbmRsZXIoZmlsZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBsb2FkaW5nLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjdXJyZW50VGV4dC5jdXJyZW50ID0gZXh0cmFjdERvY3VtZW50VGV4dChjb250YWluZXIuZG9jdW1lbnRFZGl0b3IuZWRpdG9yKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnRhaW5lci5kb2N1bWVudEVkaXRvci5hZGRFdmVudExpc3RlbmVyKCdjb250ZW50Q2hhbmdlJywgYXN5bmMgKGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocHJvcHMuZGlzYWJsZUFjY2VwdENoYW5nZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGFjY2VwdEJ1dHRvbnMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiZS1kZS10cmFjay1hY2NlcHQtYnV0dG9uXCIpO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGFjY2VwdEJ1dHRvbiBvZiBhY2NlcHRCdXR0b25zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhY2NlcHRCdXR0b24ucGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZChhY2NlcHRCdXR0b24pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHByb3BzLmRpc2FibGVSZWplY3RDaGFuZ2VzKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZWplY3RCdXR0b25zID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImUtZGUtdHJhY2stcmVqZWN0LWJ1dHRvblwiKTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCByZWplY3RCdXR0b24gb2YgcmVqZWN0QnV0dG9ucykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0QnV0dG9uLnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQocmVqZWN0QnV0dG9uKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChsb2FkaW5nLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGZpbGUgPSBhd2FpdCBzYXZlQXNCYXNlNjQoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BzLnZhbHVlQ2hhbmdlSGFuZGxlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMudmFsdWVDaGFuZ2VIYW5kbGVyKGZpbGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgbG9hZGluZy5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY3VycmVudFRleHQuY3VycmVudCA9IGV4dHJhY3REb2N1bWVudFRleHQoY29udGFpbmVyLmRvY3VtZW50RWRpdG9yLmVkaXRvcik7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29udGFpbmVyLmRvY3VtZW50RWRpdG9yLm9wZW4oanNvbik7XG4gICAgICAgICAgICBjb250YWluZXIuZG9jdW1lbnRFZGl0b3IuZW5hYmxlVHJhY2tDaGFuZ2VzID0gIVV0aWxzLmlzTnVsbChwcm9wcy50cmFja0NoYW5nZXMpID8gcHJvcHMudHJhY2tDaGFuZ2VzIDogdHJ1ZTtcbiAgICAgICAgICAgIC8vY29udGFpbmVyLmRvY3VtZW50RWRpdG9yLmlzUmVhZE9ubHkgPSAocHJvcHMucmVhZE9ubHkgfHwgcHJvcHMuY29tbWVudHNPbmx5KTtcbiAgICAgICAgfVxuICAgIH0sIFtqc29uLCBjb250YWluZXJdKTtcblxuICAgIGNvbnN0IG9uVG9vbGJhckNsaWNrID0gKGFyZ3MpID0+IHtcbiAgICAgICAgY29uc3QgZWQgPSBjb250YWluZXI/LmRvY3VtZW50RWRpdG9yPy5lZGl0b3I7XG4gICAgICAgIGlmICghZWQpIHJldHVybjtcbiAgICAgICAgc3dpdGNoIChhcmdzLml0ZW0uaWQpIHtcbiAgICAgICAgICAgIGNhc2UgJ2J1bGxldHMnOlxuICAgICAgICAgICAgICAgIGVkLmFwcGx5QnVsbGV0KCdcXHVmMGI3JywgJ1N5bWJvbCcpOyAvLyDigKJcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ251bWJlcmluZyc6XG4gICAgICAgICAgICAgICAgZWQuYXBwbHlOdW1iZXJpbmcoJyUxLicsICdBcmFiaWMnKTsgLy8gMS5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2xldmVsLTAnOlxuICAgICAgICAgICAgICAgIGFwcGx5TGV2ZWwoZWQsIDApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbGV2ZWwtMSc6XG4gICAgICAgICAgICAgICAgYXBwbHlMZXZlbChlZCwgMSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdsZXZlbC0yJzpcbiAgICAgICAgICAgICAgICBhcHBseUxldmVsKGVkLCAyKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NsZWFyLWxpc3QnOlxuICAgICAgICAgICAgICAgIGVkLmNsZWFyTGlzdCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIC8vIGxldCBidWlsdC1pbnMgKFVuZG8vUmVkby9OZXcvT3Blbikgd29yayBub3JtYWxseVxuICAgICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXsnbm8tbWFyZ2luIG5vLXBhZGRpbmcnfSBzdHlsZT17e2hlaWdodDogJzEwMCUnfX0gaWQ9e2BwYXJlbnQtY29udGFpbmVyYH0gcmVmPXtwYXJlbnRSZWZ9PlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICF2aXNpYmxlICYmXG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgZmxleFdyYXA6ICd3cmFwJyxcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgIGFsaWduQ29udGVudDogJ2NlbnRlcidcbiAgICAgICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAgICAgICAgPExvdHRpZUljb24gaWQ9eyd3YWl0aW5nLXNtJ30vPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSAmJlxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogJzAgMzJweCAwIDMycHgnLFxuICAgICAgICAgICAgICAgICAgICBtYXhIZWlnaHQ6ICc2NHB4J1xuICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICA8QWxlcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9eydkYW5nZXInfVxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvdz17IVV0aWxzLmlzTnVsbChlcnJvck1lc3NhZ2UpfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0RXJyb3JNZXNzYWdlKG51bGwpfVxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzbWlzc2libGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aDogJzEwMCUnXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT17e2NvbG9yOiAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpJ319PntlcnJvck1lc3NhZ2V9PC9wPlxuICAgICAgICAgICAgICAgICAgICA8L0FsZXJ0PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgey8qIFNldHRpbmcgZW5hYmxlVHJhY2tDaGFuZ2VzIHRvIGZhbHNlIGRvZXMgbm90IHdvcmsgc28gd2UgZHVwbGljYXRlIHRoZSBjb2RlKi99XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdmlzaWJsZSAmJiBpdGVtcyAmJiAoVXRpbHMuaXNOdWxsKHByb3BzLnRyYWNrQ2hhbmdlcykgfHwgcHJvcHMudHJhY2tDaGFuZ2VzID09PSB0cnVlKSAmJlxuICAgICAgICAgICAgICAgIDxEb2N1bWVudEVkaXRvckNvbnRhaW5lckNvbXBvbmVudCBpZD17YCR7cHJvcHMuaWR9LWNvbnRhaW5lcmB9IGhlaWdodD17ZWRpdG9ySGVpZ2h0ID4gMCA/IGAke2VkaXRvckhlaWdodH1weGAgOiAnMTIwMHB4J31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmPXsoc2NvcGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldENvbnRhaW5lcihzY29wZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJSZWYuY3VycmVudCA9IHNjb3BlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udGFpbmVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLnJlc2l6ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5kb2N1bWVudEVkaXRvci5yZXNpemUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlUGVyc2lzdGVuY2U9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sYmFyQ2xpY2s9e29uVG9vbGJhckNsaWNrfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sYmFySXRlbXM9e2l0ZW1zfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0cmljdEVkaXRpbmc9e3Byb3BzLnJlYWRPbmx5ICYmICFwcm9wcy5jb21tZW50c09ubHl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dQcm9wZXJ0aWVzUGFuZT17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZVRyYWNrQ2hhbmdlcz17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQXV0b0ZvY3VzPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZVVybD17Z2V0U2VydmljZVVybCgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVUb29sYmFyPXshKHByb3BzLnJlYWRPbmx5KSB8fCBwcm9wcy5jb21tZW50c09ubHl9Lz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB2aXNpYmxlICYmIGl0ZW1zICYmIHByb3BzLnRyYWNrQ2hhbmdlcyA9PT0gZmFsc2UgJiZcbiAgICAgICAgICAgICAgICA8RG9jdW1lbnRFZGl0b3JDb250YWluZXJDb21wb25lbnQgaWQ9e2Ake3Byb3BzLmlkfS1jb250YWluZXJgfSBoZWlnaHQ9e2VkaXRvckhlaWdodCA+IDAgPyBgJHtlZGl0b3JIZWlnaHR9cHhgIDogJzEyMDBweCd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZj17KHNjb3BlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDb250YWluZXIoc2NvcGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyUmVmLmN1cnJlbnQgPSBzY29wZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZD17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5yZXNpemUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIuZG9jdW1lbnRFZGl0b3IucmVzaXplKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZVBlcnNpc3RlbmNlPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGJhckNsaWNrPXtvblRvb2xiYXJDbGlja31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGJhckl0ZW1zPXtpdGVtc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3RFZGl0aW5nPXtwcm9wcy5yZWFkT25seSAmJiAhcHJvcHMuY29tbWVudHNPbmx5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93UHJvcGVydGllc1BhbmU9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVBdXRvRm9jdXM9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlVXJsPXtnZXRTZXJ2aWNlVXJsKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZVRvb2xiYXI9eyEocHJvcHMucmVhZE9ubHkpIHx8IHByb3BzLmNvbW1lbnRzT25seX0vPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgV29yZERvY3VtZW50Vmlld2VyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQyxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDRCxJQUFBQyxvQkFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsTUFBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUksdUJBQUEsR0FBQUosT0FBQTtBQUNBQSxPQUFBO0FBQ0EsSUFBQUssbUJBQUEsR0FBQUYsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFNLFFBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLE1BQUEsR0FBQUosc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFRLFdBQUEsR0FBQUwsc0JBQUEsQ0FB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
|
|
721
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RQcm9taXNlVHJhY2tlciIsIl9VdGlscyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfZWoyUmVhY3REb2N1bWVudGVkaXRvciIsIl9BcHBsaWNhdGlvbk1hbmFnZXIiLCJfZWoyQmFzZSIsIl9BbGVydCIsIl9Mb3R0aWVJY29uIiwiX3VzZVJlc2l6ZU9ic2VydmVyIiwiX3VzZU9uRnVsbHlWaXNpYmxlIiwiX3Byb2Nlc3MkZW52JFJFQUNUX0FQIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwidCIsIldlYWtNYXAiLCJyIiwibiIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsImhhcyIsImdldCIsInNldCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiS0VZIiwiZXhwb3J0cyIsInByb2Nlc3MiLCJlbnYiLCJSRUFDVF9BUFBfU1lOQ0ZVU0lPTl9MSUNFTlNFX0tFWSIsInJlZ2lzdGVyTGljZW5zZSIsInJlc29sdmVMb2NhdGlvbiIsImNvbnNvbGUiLCJsb2ciLCJSRUFDVF9BUFBfRE9DU19BUElfSE9TVCIsIndpbmRvdyIsImxvY2F0aW9uIiwicHJvdG9jb2wiLCJob3N0bmFtZSIsInJlc29sdmVEb2NTdmMiLCJSRUFDVF9BUFBfRE9DU19BUElfUEFUSCIsIkRPQ1NWQyIsImdldERvY3NCYXNlIiwiYXBwbGljYXRpb25NYW5hZ2VyIiwiZ2V0Q29udGV4dFJvb3QiLCJnZXRTZXJ2aWNlVXJsIiwiY29uY2F0IiwiRG9jdW1lbnRFZGl0b3JDb250YWluZXJDb21wb25lbnQiLCJJbmplY3QiLCJUb29sYmFyIiwiTEVWRUxfRk1UIiwiYXBwbHlMZXZlbCIsImVkIiwibGV2ZWwiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJkZXB0aCIsIk1hdGgiLCJtYXgiLCJtaW4iLCJzZWxlY3Rpb24iLCJwYXJhZ3JhcGhGb3JtYXQiLCJsaXN0TGV2ZWxOdW1iZXIiLCJhcHBseU51bWJlcmluZyIsInVzZUR5bmFtaWNTeW5jZnVzaW9uSGVpZ2h0IiwicGFyZW50UmVmIiwiY29udGFpbmVyUmVmIiwiaGVpZ2h0Iiwic2V0SGVpZ2h0IiwidXNlU3RhdGUiLCJtZWFzdXJlIiwidXNlQ2FsbGJhY2siLCJjdXJyZW50IiwicmVjdCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsIm5ld0hlaWdodCIsImZsb29yIiwidXNlUmVzaXplT2JzZXJ2ZXIiLCJ1c2VFZmZlY3QiLCJyZXNpemUiLCJkb2N1bWVudEVkaXRvciIsIldvcmREb2N1bWVudFZpZXdlciIsInByb3BzIiwiY29udGFpbmVyIiwic2V0Q29udGFpbmVyIiwiUmVhY3QiLCJpdGVtcyIsInNldEl0ZW1zIiwidmlzaWJsZSIsInNldFZpc2libGUiLCJyZVJlbmRlcmluZyIsInNldFJlUmVuZGVyaW5nIiwianNvbiIsInNldEpzb24iLCJlcnJvck1lc3NhZ2UiLCJzZXRFcnJvck1lc3NhZ2UiLCJjdXJyZW50VGV4dCIsInVzZVJlZiIsImFjdGl2ZUFuY2hvclJlZiIsImFuY2hvckVuZCIsImRlbGV0ZUxvY2tSZWYiLCJsb2FkaW5nIiwidXNlT25GdWxseVZpc2libGUiLCJlbCIsImVkaXRvckhlaWdodCIsImlzUG9pbnRJbnNpZGVFbGVtZW50IiwieCIsInkiLCJsZWZ0IiwicmlnaHQiLCJ0b3AiLCJib3R0b20iLCJnZXRWaWV3ZXJFbGVtZW50IiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImlkIiwiaXNOYXZpZ2F0aW9uS2V5IiwiaW5jbHVkZXMiLCJrZXkiLCJub3JtYWxpemVBbmNob3IiLCJ2YWx1ZSIsInJlcGxhY2UiLCJ2aWV3ZXJFbGVtZW50IiwiaW5zZXJ0UmVhZG9ubHlBbmNob3IiLCJldmVudERhdGEiLCJkcm9wUG9zaXRpb24iLCJkb2MiLCJlZGl0b3IiLCJzZWwiLCJjYXJldE9mZnNldCIsInN0YXJ0T2Zmc2V0IiwiZXhpc3RpbmdBbmNob3IiLCJncmFiQW5jaG9yV2l0aEJvdW5kcyIsImF0U3RhcnQiLCJhdEVuZCIsImVuZE9mZnNldCIsIndhcm4iLCJ0b2tlbiIsImluc2VydFRleHQiLCJkcm9wRGF0YSIsImFwaSIsImdldFZhbHVlIiwic2F2ZUFzQmFzZTY0IiwidmFsdWVIYW5kbGVyIiwibnVtYmVyaW5nSXRlbXMiLCJ0ZXh0Iiwic2VwYXJhdG9yIiwidG9vbGJhckl0ZW1zIiwiY29tbWVudHNPbmx5IiwidG9vbHRpcFRleHQiLCJwcmVmaXhJY29uIiwiY29tbWFuZCIsImVuYWJsZVVwbG9hZCIsInVuc2hpZnQiLCJfcHJvcHMkZmlsZSIsImZpbGUiLCJiYXNlNjQiLCJhcnJheUJ1ZmZlciIsIlV0aWxzIiwiYmFzZTY0VG9BcnJheUJ1ZmZlciIsIkJsb2IiLCJ0eXBlIiwiZm9ybURhdGEiLCJGb3JtRGF0YSIsImFwcGVuZCIsImFjY2Vzc1Rva2VuIiwic2Vzc2lvblN0b3JhZ2UiLCJnZXRJdGVtIiwiaWRUb2tlbiIsInRyYWNrUHJvbWlzZSIsImZldGNoIiwibWV0aG9kIiwiaGVhZGVycyIsImJvZHkiLCJ0aGVuIiwicmVzcG9uc2UiLCJ0aW1lciIsInNldFRpbWVvdXQiLCJjbGVhclRpbWVvdXQiLCJzZXR1cENvbnRhaW5lciIsImN1cnJlbnRVc2VyIiwiZ2V0VXNlckRldGFpbHMiLCJuYW1lIiwic3VybmFtZSIsImFsbG93VW5yZXNvbHZlZENoYW5nZXMiLCJyZXZpc2lvbnMiLCJfcHJvcHMkZmlsZTIiLCJfcHJvcHMkZmlsZTMiLCJzdG9wUHJvdGVjdGlvbiIsImJsb2IiLCJzYXZlQXNCbG9iIiwiZW5mb3JjZVByb3RlY3Rpb24iLCJGaWxlIiwiZXh0cmFjdERvY3VtZW50VGV4dCIsIm9yaWdpbmFsU3RhcnQiLCJvcmlnaW5hbEVuZCIsInNlbGVjdEFsbCIsImdldFRleHQiLCJzZWxlY3QiLCJleHRyYWN0QW5jaG9yVG9rZW5zIiwicmVnZXgiLCJ0b2tlbnMiLCJTZXQiLCJtYXRjaCIsImV4ZWMiLCJhZGQiLCJBcnJheSIsImZyb20iLCJpc0NhcmV0V2l0aGluUmFuZ2UiLCJjYXJldCIsInN0YXJ0IiwiZW5kIiwicGFyYWdyYXBoIiwieEluIiwieUluIiwiZGVsZXRlQ3VycmVudEFuY2hvciIsImRvY0VkaXRvciIsImFuY2hvciIsInVwZGF0ZUFjdGl2ZUFuY2hvciIsInNjYW5SaWdodFVudGlsQW5jaG9yIiwib3JpZ2luT2Zmc2V0IiwibWF4U2NhbiIsImJ1bXBPZmZzZXQiLCJjaCIsInRlc3QiLCJuZXh0Iiwic2NhbkxlZnRVbnRpbEFuY2hvciIsInByZXYiLCJnZXRDaGFyQXQiLCJvZmZzZXQiLCJpc0NhcmV0SW1tZWRpYXRlbHlCZWZvcmVBbmNob3JTdGFydCIsImMwIiwiYzEiLCJpc0NhcmV0SW1tZWRpYXRlbHlBZnRlckFuY2hvciIsInNlbGVjdEN1cnJlbnRXb3JkIiwic2NhblN0YXJ0IiwiaXNDYXJldEF0RW5kIiwiZGVsdGEiLCJwYXJ0cyIsInNwbGl0IiwiaWR4IiwicGFyc2VJbnQiLCJ0b1N0cmluZyIsImpvaW4iLCJiZWZvcmVYbWxIdHRwUmVxdWVzdFNlbmQiLCJhcmdzIiwicHVzaCIsImFkZEV2ZW50TGlzdGVuZXIiLCJldmVudCIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImVkaXRvckhpc3RvcnkiLCJ1bmRvIiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJjdHJsS2V5IiwibWV0YUtleSIsIm9uTW91c2VVcCIsImNsaWVudFgiLCJjbGllbnRZIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImRvY3VtZW50Q2hhbmdlIiwiZW5hYmxlVHJhY2tDaGFuZ2VzIiwiaXNOdWxsIiwidHJhY2tDaGFuZ2VzIiwicmVhZE9ubHkiLCJpc1JlYWRPbmx5IiwidmFsdWVDaGFuZ2VIYW5kbGVyIiwiZGlzYWJsZUFjY2VwdENoYW5nZXMiLCJhY2NlcHRCdXR0b25zIiwiZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSIsImFjY2VwdEJ1dHRvbiIsInBhcmVudEVsZW1lbnQiLCJyZW1vdmVDaGlsZCIsImRpc2FibGVSZWplY3RDaGFuZ2VzIiwicmVqZWN0QnV0dG9ucyIsInJlamVjdEJ1dHRvbiIsIm9wZW4iLCJvblRvb2xiYXJDbGljayIsIl9jb250YWluZXIkZG9jdW1lbnRFZCIsIml0ZW0iLCJhcHBseUJ1bGxldCIsImNsZWFyTGlzdCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJzdHlsZSIsInJlZiIsIndpZHRoIiwiZmxleFdyYXAiLCJkaXNwbGF5IiwianVzdGlmeUNvbnRlbnQiLCJhbGlnbkNvbnRlbnQiLCJwYWRkaW5nIiwibWF4SGVpZ2h0IiwidmFyaWFudCIsInNob3ciLCJvbkNsb3NlIiwiZGlzbWlzc2libGUiLCJ3aXRoIiwiY29sb3IiLCJzY29wZSIsImNyZWF0ZWQiLCJlbmFibGVQZXJzaXN0ZW5jZSIsInRvb2xiYXJDbGljayIsInJlc3RyaWN0RWRpdGluZyIsInNob3dQcm9wZXJ0aWVzUGFuZSIsImVuYWJsZUF1dG9Gb2N1cyIsInNlcnZpY2VVcmwiLCJlbmFibGVUb29sYmFyIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvV29yZERvY3VtZW50Vmlld2VyLmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyLvu79pbXBvcnQgUmVhY3QsIHt1c2VFZmZlY3QsIHVzZVJlZn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHt0cmFja1Byb21pc2V9IGZyb20gXCJyZWFjdC1wcm9taXNlLXRyYWNrZXJcIjtcbmltcG9ydCBVdGlscyBmcm9tIFwiLi4vVXRpbHNcIjtcbmltcG9ydCB7RG9jdW1lbnRFZGl0b3JDb250YWluZXJDb21wb25lbnQsIFRvb2xiYXJ9IGZyb20gJ0BzeW5jZnVzaW9uL2VqMi1yZWFjdC1kb2N1bWVudGVkaXRvcic7XG5pbXBvcnQgXCIuL0RvY3VtZW50VGVtcGxhdGVEZXNpZ25lckNvbXBvbmVudC5jc3NcIlxuaW1wb3J0IGFwcGxpY2F0aW9uTWFuYWdlciBmcm9tIFwiLi4vQXBwbGljYXRpb25NYW5hZ2VyXCI7XG5pbXBvcnQge3JlZ2lzdGVyTGljZW5zZX0gZnJvbSBcIkBzeW5jZnVzaW9uL2VqMi1iYXNlXCI7XG5pbXBvcnQgQWxlcnQgZnJvbSBcInJlYWN0LWJvb3RzdHJhcC9BbGVydFwiO1xuaW1wb3J0IExvdHRpZUljb24gZnJvbSBcIi4vTG90dGllSWNvblwiO1xuaW1wb3J0IFwiLi9Xb3JkRG9jdW1lbnRWaWV3ZXIuY3NzXCJcbmltcG9ydCB7dXNlU3RhdGUsIHVzZUNhbGxiYWNrfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7dXNlUmVzaXplT2JzZXJ2ZXJ9IGZyb20gXCIuL29ic2VydmVycy91c2VSZXNpemVPYnNlcnZlclwiO1xuaW1wb3J0IHt1c2VPbkZ1bGx5VmlzaWJsZX0gZnJvbSBcIi4vb2JzZXJ2ZXJzL3VzZU9uRnVsbHlWaXNpYmxlXCI7XG5cbi8vIFNvdXJjZWQgYXQgYnVpbGQgdGltZSBmcm9tIFJFQUNUX0FQUF9TWU5DRlVTSU9OX0xJQ0VOU0VfS0VZIChDUkEgZW52XG4vLyBjb252ZW50aW9uIOKAlCBtYXRjaGVzIFJFQUNUX0FQUF9ET0NTX0FQSV9IT1NUIGV0Yy4pLiBQcmV2aW91c2x5IHRoaXNcbi8vIHdhcyBoYXJkY29kZWQgaW4gc291cmNlIHNvIGV2ZXJ5IGNvbW1pdCBwaW5uZWQgdGhlIGxpY2Vuc2U7IG5vdyBpdFxuLy8gcm90YXRlcyB2aWEgQ0kgZW52IHZhcnMgd2l0aG91dCBhIHNvdXJjZSBlZGl0LlxuZXhwb3J0IGNvbnN0IEtFWSA9IHByb2Nlc3MuZW52LlJFQUNUX0FQUF9TWU5DRlVTSU9OX0xJQ0VOU0VfS0VZID8/ICdOZ285QmlnQk9nZ2pIVFF4QVI4L1YxSkdhRjVjWEdwQ2YxRnBSbUpHZGxkNWZVVkhZVlpVVFh4YVMwMEROSFZSZGtkbFdYNWNlSFZSUTJCWVVVZHdYME5XWUVzPSc7XG5yZWdpc3RlckxpY2Vuc2UoS0VZKTtcblxuZnVuY3Rpb24gcmVzb2x2ZUxvY2F0aW9uKCkge1xuICAgIGNvbnNvbGUubG9nKFwiUkVTT0xWRSBET0MgSE9TVCA6IFwiLCBwcm9jZXNzLmVudi5SRUFDVF9BUFBfRE9DU19BUElfSE9TVCk7XG4gICAgaWYgKHByb2Nlc3MuZW52LlJFQUNUX0FQUF9ET0NTX0FQSV9IT1NUKSB7XG4gICAgICAgIHJldHVybiBwcm9jZXNzLmVudi5SRUFDVF9BUFBfRE9DU19BUElfSE9TVDtcbiAgICB9XG5cbiAgICByZXR1cm4gd2luZG93LmxvY2F0aW9uLnByb3RvY29sICsgJy8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZTtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZURvY1N2YygpIHtcbiAgICBjb25zb2xlLmxvZyhcIlJFU09MVkUgRE9DIFBBVEggOiBcIiwgcHJvY2Vzcy5lbnYuUkVBQ1RfQVBQX0RPQ1NfQVBJX1BBVEgpO1xuICAgIGlmIChwcm9jZXNzLmVudi5SRUFDVF9BUFBfRE9DU19BUElfUEFUSCkge1xuICAgICAgICByZXR1cm4gcHJvY2Vzcy5lbnYuUkVBQ1RfQVBQX0RPQ1NfQVBJX1BBVEg7XG4gICAgfVxuXG4gICAgcmV0dXJuIFwiL2RvY3MvYXBpL3YxL3N5bmNmdXNpb25cIjtcbn1cblxuZXhwb3J0IGNvbnN0IGxvY2F0aW9uID0gcmVzb2x2ZUxvY2F0aW9uKCk7XG5leHBvcnQgY29uc3QgRE9DU1ZDID0gcmVzb2x2ZURvY1N2YygpO1xuXG5mdW5jdGlvbiBnZXREb2NzQmFzZSgpIHtcbiAgICByZXR1cm4gbG9jYXRpb24gKyBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0Q29udGV4dFJvb3QoKSArIERPQ1NWQztcbn1cblxuZnVuY3Rpb24gZ2V0U2VydmljZVVybCgpIHtcbiAgICAvLyBTeW5jZnVzaW9uJ3MgRG9jdW1lbnRFZGl0b3IgdXNlcyB0aGlzIHByb3AgYXMgYSBCQVNFIGFuZCBkaXJlY3RseVxuICAgIC8vIGNvbmNhdGVuYXRlcyB0aGUgYWN0aW9uIG5hbWUgb250byBpdCAoSW1wb3J0LCBTeXN0ZW1DbGlwYm9hcmQsXG4gICAgLy8gU3BlbGxDaGVjaywgRXhwb3J0U0ZEVCwgLi4uKS4gU28gd2UgbXVzdCByZXR1cm4gSlVTVCB0aGUgYmFzZSDigJRcbiAgICAvLyB0cmFpbGluZyBzbGFzaCBzbyB0aGUgYXBwZW5kZWQgYWN0aW9uIGxhbmRzIGFzIGEgY2xlYW4gcGF0aFxuICAgIC8vIHNlZ21lbnQsIG5vdCBhcyBhIGNvbnRpbnVhdGlvbiBvZiB0aGUgcHJldmlvdXMgc2VnbWVudC5cbiAgICAvL1xuICAgIC8vIFdlIGludGVudGlvbmFsbHkgZG8gTk9UIGFwcGVuZCBcIi9JbXBvcnRcIiBoZXJlLiBUaGUgZXhwbGljaXQgUE9TVFxuICAgIC8vIGF0IHRoZSBgcHJvcHMuZmlsZT8uYmFzZTY0YCBmZXRjaCBsb3dlciBpbiB0aGUgY29tcG9uZW50IGJ1aWxkc1xuICAgIC8vIGl0cyBvd24gL0ltcG9ydCBVUkwgd2l0aCBoZWFkZXItYmFzZWQgYXV0aDsgdGhlIGVkaXRvcidzIGludGVybmFsXG4gICAgLy8gY2FsbHMgKG5vdGFibHkgU3lzdGVtQ2xpcGJvYXJkLCB3aGljaCBmaXJlcyBvbiByaWNoLWNvbnRlbnRcbiAgICAvLyBwYXN0ZXMgZnJvbSBXb3JkKSBuZWVkIGNsZWFuIGJhc2UgKyBhY3Rpb24gY29tcG9zaXRpb24uXG4gICAgLy9cbiAgICAvLyBBdXRoIHZpYSBxdWVyeSBzdHJpbmcgaXMgYWxzbyBpbnRlbnRpb25hbGx5IGFic2VudCDigJQgY29uY2F0ZW5hdGluZ1xuICAgIC8vIHRoZSBhY3Rpb24gbmFtZSBvbnRvIGEgVVJMIHRoYXQgYWxyZWFkeSBjYXJyaWVzIGA/dG9rZW49Li4uYCB3b3VsZFxuICAgIC8vIGNvcnJ1cHQgYm90aCB0aGUgcXVlcnkgc3RyaW5nIGFuZCB0aGUgYWN0aW9uIHBhdGguIElmIGEgZGVwbG95bWVudFxuICAgIC8vIGV2ZXIgcm91dGVzIHRoaXMgdGhyb3VnaCBhIGdhdGV3YXkgdGhhdCBlbmZvcmNlcyBhdXRoLCByZWdpc3RlciBhblxuICAgIC8vIEh0dHBDbGllbnQgaW50ZXJjZXB0b3Igb24gdGhlIERvY3VtZW50RWRpdG9yIGluc3RhbmNlIHRvIGFkZCB0aGVcbiAgICAvLyBoZWFkZXIgcmF0aGVyIHRoYW4gcmVpbnRyb2R1Y2luZyB0aGUgcXVlcnktcGFyYW0gYXBwcm9hY2guXG4gICAgcmV0dXJuIGAke2dldERvY3NCYXNlKCl9L2A7XG59XG5cbkRvY3VtZW50RWRpdG9yQ29udGFpbmVyQ29tcG9uZW50LkluamVjdChUb29sYmFyKTtcblxuY29uc3QgTEVWRUxfRk1UID0gWyclMS4nLCAnJTEuJTIuJywgJyUxLiUyLiUzLiddO1xuXG5mdW5jdGlvbiBhcHBseUxldmVsKGVkLCBsZXZlbCA9IDApIHtcbiAgICBjb25zdCBkZXB0aCA9IE1hdGgubWF4KDAsIE1hdGgubWluKGxldmVsLCBMRVZFTF9GTVQubGVuZ3RoIC0gMSkpO1xuICAgIGVkLnNlbGVjdGlvbi5wYXJhZ3JhcGhGb3JtYXQubGlzdExldmVsTnVtYmVyID0gZGVwdGg7XG4gICAgZWQuYXBwbHlOdW1iZXJpbmcoTEVWRUxfRk1UW2RlcHRoXSwgJ0FyYWJpYycpO1xufVxuXG5mdW5jdGlvbiB1c2VEeW5hbWljU3luY2Z1c2lvbkhlaWdodChwYXJlbnRSZWYsIGNvbnRhaW5lclJlZikge1xuICAgIGNvbnN0IFtoZWlnaHQsIHNldEhlaWdodF0gPSB1c2VTdGF0ZSgwKTtcblxuICAgIGNvbnN0IG1lYXN1cmUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIGlmICghcGFyZW50UmVmLmN1cnJlbnQpIHJldHVybjtcblxuICAgICAgICBjb25zdCByZWN0ID0gcGFyZW50UmVmLmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IG5ld0hlaWdodCA9IE1hdGguZmxvb3IocmVjdC5oZWlnaHQpO1xuXG4gICAgICAgIGlmIChuZXdIZWlnaHQgPiAwICYmIG5ld0hlaWdodCAhPT0gaGVpZ2h0KSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIk1FQVNVUkUgOiBcIiwgbmV3SGVpZ2h0KTtcbiAgICAgICAgICAgIHNldEhlaWdodChuZXdIZWlnaHQpO1xuICAgICAgICB9XG4gICAgfSwgW3BhcmVudFJlZiwgaGVpZ2h0XSk7XG5cbiAgICAvLyDwn5SBIFJlc2l6ZSBvYnNlcnZlclxuICAgIHVzZVJlc2l6ZU9ic2VydmVyKHBhcmVudFJlZiwgbWVhc3VyZSk7XG5cbiAgICAvLyDimqEgU3luY2Z1c2lvbiByZXNpemUgdHJpZ2dlclxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChjb250YWluZXJSZWYuY3VycmVudCAmJiBoZWlnaHQgPiAwKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lclJlZi5jdXJyZW50LnJlc2l6ZSgpO1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lclJlZi5jdXJyZW50LmRvY3VtZW50RWRpdG9yLnJlc2l6ZSgpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIC8vIHNpbGVudFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSwgW2hlaWdodCwgY29udGFpbmVyUmVmXSk7XG5cbiAgICByZXR1cm4gaGVpZ2h0O1xufVxuXG5jb25zdCBXb3JkRG9jdW1lbnRWaWV3ZXIgPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCBbY29udGFpbmVyLCBzZXRDb250YWluZXJdID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW2l0ZW1zLCBzZXRJdGVtc10gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbdmlzaWJsZSwgc2V0VmlzaWJsZV0gPSBSZWFjdC51c2VTdGF0ZSh0cnVlKTtcbiAgICBjb25zdCBbcmVSZW5kZXJpbmcsIHNldFJlUmVuZGVyaW5nXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbanNvbiwgc2V0SnNvbl0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbZXJyb3JNZXNzYWdlLCBzZXRFcnJvck1lc3NhZ2VdID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgY3VycmVudFRleHQgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgY29uc3QgYWN0aXZlQW5jaG9yUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGFuY2hvckVuZCA9IHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3QgZGVsZXRlTG9ja1JlZiA9IHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3QgbG9hZGluZyA9IHVzZVJlZih0cnVlKTtcbiAgICBjb25zdCBwYXJlbnRSZWYgPSB1c2VPbkZ1bGx5VmlzaWJsZSgoZWwpID0+IHtcbiAgICAgICAgaWYgKCFyZVJlbmRlcmluZykge1xuICAgICAgICAgICAgc2V0VmlzaWJsZShmYWxzZSk7XG4gICAgICAgICAgICBzZXRSZVJlbmRlcmluZyh0cnVlKTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgY29udGFpbmVyUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGVkaXRvckhlaWdodCA9IHVzZUR5bmFtaWNTeW5jZnVzaW9uSGVpZ2h0KHBhcmVudFJlZiwgY29udGFpbmVyUmVmKTtcblxuICAgIGZ1bmN0aW9uIGlzUG9pbnRJbnNpZGVFbGVtZW50KHgsIHksIGVsKSB7XG4gICAgICAgIGlmICghZWwpIHJldHVybiBmYWxzZTtcbiAgICAgICAgY29uc3QgcmVjdCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB4ID49IHJlY3QubGVmdCAmJlxuICAgICAgICAgICAgeCA8PSByZWN0LnJpZ2h0ICYmXG4gICAgICAgICAgICB5ID49IHJlY3QudG9wICYmXG4gICAgICAgICAgICB5IDw9IHJlY3QuYm90dG9tXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0Vmlld2VyRWxlbWVudCgpIHtcbiAgICAgICAgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxuICAgICAgICAgICAgYCR7cHJvcHMuaWR9LWNvbnRhaW5lcl9lZGl0b3Jfdmlld2VyQ29udGFpbmVyYFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzTmF2aWdhdGlvbktleShlKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAnQXJyb3dMZWZ0JywgJ0Fycm93UmlnaHQnLCAnQXJyb3dVcCcsICdBcnJvd0Rvd24nLFxuICAgICAgICAgICAgJ0hvbWUnLCAnRW5kJywgJ1BhZ2VVcCcsICdQYWdlRG93bidcbiAgICAgICAgXS5pbmNsdWRlcyhlLmtleSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbm9ybWFsaXplQW5jaG9yKHZhbHVlKSB7XG4gICAgICAgIGlmICghdmFsdWUpIHJldHVybiBudWxsO1xuICAgICAgICByZXR1cm4gdmFsdWVcbiAgICAgICAgICAgIC5yZXBsYWNlKC9eXFxbXFxbfFxcXVxcXSQvZywgJycpXG4gICAgICAgICAgICAucmVwbGFjZSgvXjw8fD4+JC9nLCAnJyk7XG4gICAgfVxuXG4gICAgbGV0IHZpZXdlckVsZW1lbnQgPSBnZXRWaWV3ZXJFbGVtZW50KCk7XG5cbiAgICBmdW5jdGlvbiBpbnNlcnRSZWFkb25seUFuY2hvcihldmVudERhdGEsIGRyb3BQb3NpdGlvbikge1xuICAgICAgICBpZiAoIWNvbnRhaW5lcj8uZG9jdW1lbnRFZGl0b3IpIHJldHVybjtcbiAgICAgICAgaWYgKCFkcm9wUG9zaXRpb24pIHJldHVybjtcblxuICAgICAgICBpZiAoIWlzUG9pbnRJbnNpZGVFbGVtZW50KGRyb3BQb3NpdGlvbi54LCBkcm9wUG9zaXRpb24ueSwgdmlld2VyRWxlbWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRvYyA9IGNvbnRhaW5lci5kb2N1bWVudEVkaXRvcjtcbiAgICAgICAgY29uc3QgZWQgPSBkb2MuZWRpdG9yO1xuICAgICAgICBjb25zdCBzZWwgPSBkb2Muc2VsZWN0aW9uO1xuICAgICAgICBpZiAoIWVkIHx8ICFzZWwpIHJldHVybjtcblxuICAgICAgICAvLyBSZWplY3QgZHJvcCBpZiBjdXJzb3IgaXMgc3RyaWN0bHkgaW5zaWRlIGFuIGV4aXN0aW5nIGFuY2hvclxuICAgICAgICAvLyBBbGxvdyBkcm9wcGluZyBhdCB0aGUgZXhhY3Qgc3RhcnQgb3IgZW5kIGJvdW5kYXJ5XG4gICAgICAgIGNvbnN0IGNhcmV0T2Zmc2V0ID0gc2VsLnN0YXJ0T2Zmc2V0O1xuICAgICAgICBjb25zdCBleGlzdGluZ0FuY2hvciA9IGdyYWJBbmNob3JXaXRoQm91bmRzKGNvbnRhaW5lcik7XG4gICAgICAgIGlmIChleGlzdGluZ0FuY2hvcikge1xuICAgICAgICAgICAgY29uc3QgYXRTdGFydCA9IGNhcmV0T2Zmc2V0ID09PSBleGlzdGluZ0FuY2hvci5zdGFydE9mZnNldDtcbiAgICAgICAgICAgIGNvbnN0IGF0RW5kID0gY2FyZXRPZmZzZXQgPT09IGV4aXN0aW5nQW5jaG9yLmVuZE9mZnNldDtcbiAgICAgICAgICAgIGlmICghYXRTdGFydCAmJiAhYXRFbmQpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXCJEcm9wIHJlamVjdGVkIOKAlCBjdXJzb3IgaXMgaW5zaWRlIGFuY2hvcjogXCIgKyBleGlzdGluZ0FuY2hvci50b2tlbik7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdG9rZW4gPSBgW1ske25vcm1hbGl6ZUFuY2hvcihldmVudERhdGEpfV1dYDtcbiAgICAgICAgZWQuaW5zZXJ0VGV4dCh0b2tlbik7XG4gICAgfVxuXG4gICAgY29uc3QgZHJvcERhdGEgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgY29uc3QgYXBpID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ2V0VmFsdWU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2F2ZUFzQmFzZTY0KCk7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICBpbnNlcnRSZWFkb25seUFuY2hvcjogYXN5bmMgKHZhbHVlLCBkcm9wUG9zaXRpb24pID0+IHtcbiAgICAgICAgICAgICAgICBkcm9wRGF0YS5jdXJyZW50ID0ge3ZhbHVlLCBkcm9wUG9zaXRpb259O1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH07XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBwcm9wcy52YWx1ZUhhbmRsZXIuYXBpID0gYXBpKCk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBudW1iZXJpbmdJdGVtcyA9IFtcbiAgICAgICAge2lkOiAnbHZsLTAnLCB0ZXh0OiAnMS4nfSxcbiAgICAgICAge2lkOiAnbHZsLTEnLCB0ZXh0OiAnMS4xJ30sXG4gICAgICAgIHtpZDogJ2x2bC0yJywgdGV4dDogJzEuMS4xJ30sXG4gICAgICAgIHtzZXBhcmF0b3I6IHRydWV9LFxuICAgICAgICB7aWQ6ICdjbGVhcicsIHRleHQ6ICdDbGVhciBsaXN0J30sXG4gICAgXTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGxldCB0b29sYmFySXRlbXMgPSBwcm9wcy5jb21tZW50c09ubHkgP1xuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIFwiQ29tbWVudHNcIlxuICAgICAgICAgICAgXVxuICAgICAgICAgICAgOlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIFwiVW5kb1wiLFxuICAgICAgICAgICAgICAgIFwiUmVkb1wiLFxuICAgICAgICAgICAgICAgIFwiU2VwYXJhdG9yXCIsXG4gICAgICAgICAgICAgICAge2lkOiAnYnVsbGV0cycsIHRleHQ6ICfigKIgQnVsbGV0cycsIHRvb2x0aXBUZXh0OiAnQnVsbGV0ZWQgbGlzdCd9LFxuICAgICAgICAgICAgICAgIFwiU2VwYXJhdG9yXCIsXG4gICAgICAgICAgICAgICAge3Rvb2x0aXBUZXh0OiAnQm9sZCcsIHByZWZpeEljb246ICdlLWljb25zIGUtYm9sZCcsIGNvbW1hbmQ6ICdCb2xkJ30sXG4gICAgICAgICAgICAgICAge3Rvb2x0aXBUZXh0OiAnSXRhbGljJywgcHJlZml4SWNvbjogJ2UtaWNvbnMgZS1pdGFsaWMnLCBjb21tYW5kOiAnSXRhbGljJ30sXG4gICAgICAgICAgICAgICAgXCJTZXBhcmF0b3JcIixcbiAgICAgICAgICAgICAgICBcIkltYWdlXCIsXG4gICAgICAgICAgICAgICAgXCJUYWJsZVwiLFxuICAgICAgICAgICAgICAgIFwiU2VwYXJhdG9yXCIsXG4gICAgICAgICAgICAgICAgXCJIZWFkZXJcIixcbiAgICAgICAgICAgICAgICBcIkZvb3RlclwiLFxuICAgICAgICAgICAgICAgIFwiUGFnZVNldHVwXCIsXG4gICAgICAgICAgICAgICAgXCJCcmVha1wiLFxuICAgICAgICAgICAgICAgIFwiUGFnZU51bWJlclwiLFxuICAgICAgICAgICAgICAgIFwiSW5zZXJ0Rm9vdG5vdGVcIixcbiAgICAgICAgICAgICAgICBcIlNlcGFyYXRvclwiLFxuICAgICAgICAgICAgICAgIFwiRmluZFwiLFxuICAgICAgICAgICAgICAgIFwiU2VwYXJhdG9yXCIsXG4gICAgICAgICAgICAgICAgXCJDb21tZW50c1wiXG4gICAgICAgICAgICBdXG5cbiAgICAgICAgaWYgKHByb3BzLmVuYWJsZVVwbG9hZCkge1xuICAgICAgICAgICAgdG9vbGJhckl0ZW1zLnVuc2hpZnQoXCJPcGVuXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0SXRlbXModG9vbGJhckl0ZW1zKTtcbiAgICB9LCBbXSk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAocHJvcHMuZmlsZT8uYmFzZTY0KSB7XG4gICAgICAgICAgICBsZXQgYmFzZTY0ID0gcHJvcHMuZmlsZS5iYXNlNjQ7XG4gICAgICAgICAgICBjb25zdCBhcnJheUJ1ZmZlciA9IFV0aWxzLmJhc2U2NFRvQXJyYXlCdWZmZXIoYmFzZTY0KTtcbiAgICAgICAgICAgIGNvbnN0IGZpbGUgPSBuZXcgQmxvYihbYXJyYXlCdWZmZXJdLCB7XG4gICAgICAgICAgICAgICAgdHlwZTogcHJvcHMuZmlsZS50eXBlXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZXMnLCBmaWxlLCAnZG9jdW1lbnQuZG9jeCcpO1xuXG4gICAgICAgICAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2FjY2Vzc1Rva2VuJyk7XG4gICAgICAgICAgICBjb25zdCBpZFRva2VuID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnaWRUb2tlbicpO1xuXG4gICAgICAgICAgICB0cmFja1Byb21pc2UoXG4gICAgICAgICAgICAgICAgZmV0Y2goXG4gICAgICAgICAgICAgICAgICAgIGAke2dldERvY3NCYXNlKCl9L0ltcG9ydGAsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogJ0JlYXJlciAnICsgYWNjZXNzVG9rZW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lkVG9rZW4nOiBpZFRva2VuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBmb3JtRGF0YSxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdHJhY2tQcm9taXNlKFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuanNvbigpLnRoZW4oKGpzb24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRKc29uKGpzb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfSwgW3Byb3BzLmZpbGVdKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChyZVJlbmRlcmluZykge1xuICAgICAgICAgICAgY29uc3QgdGltZXIgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgc2V0VmlzaWJsZSh0cnVlKTtcbiAgICAgICAgICAgIH0sIDFfMDAwKTtcblxuICAgICAgICAgICAgcmV0dXJuICgpID0+IHdpbmRvdy5jbGVhclRpbWVvdXQodGltZXIpO1xuICAgICAgICB9XG4gICAgfSwgW3JlUmVuZGVyaW5nXSk7XG5cbiAgICBmdW5jdGlvbiBzZXR1cENvbnRhaW5lcigpIHtcbiAgICAgICAgY29udGFpbmVyLmRvY3VtZW50RWRpdG9yLmN1cnJlbnRVc2VyID0gYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkubmFtZSArIFwiIFwiICsgYXBwbGljYXRpb25NYW5hZ2VyLmdldFVzZXJEZXRhaWxzKCkuc3VybmFtZTtcbiAgICB9XG5cbiAgICBjb25zdCBzYXZlQXNCYXNlNjQgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgIGlmIChwcm9wcy5hbGxvd1VucmVzb2x2ZWRDaGFuZ2VzID09PSBmYWxzZSAmJiBjb250YWluZXIuZG9jdW1lbnRFZGl0b3IucmV2aXNpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHNldEVycm9yTWVzc2FnZShcIlBsZWFzZSBhY2NlcHQgb3IgcmVqZWN0IGFsbCBzdWdnZXN0ZWQgY2hhbmdlc1wiKTtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbnRhaW5lcikge1xuICAgICAgICAgICAgY29udGFpbmVyLmRvY3VtZW50RWRpdG9yLmVkaXRvci5zdG9wUHJvdGVjdGlvbihcInBhc3N3b3JkXCIpO1xuICAgICAgICAgICAgbGV0IGJsb2IgPSBhd2FpdCBjb250YWluZXIuZG9jdW1lbnRFZGl0b3Iuc2F2ZUFzQmxvYignRG9jeCcpO1xuICAgICAgICAgICAgaWYgKHByb3BzLmNvbW1lbnRzT25seSkge1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lci5kb2N1bWVudEVkaXRvci5lZGl0b3IuZW5mb3JjZVByb3RlY3Rpb24oJ3Bhc3N3b3JkJywgJ0NvbW1lbnRzT25seScpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbmV3IEZpbGUoW2Jsb2JdLCBwcm9wcy5maWxlPy5uYW1lID8gcHJvcHMuZmlsZS5uYW1lIDogJ2RvY3VtZW50LmRvY3gnLCB7dHlwZTogcHJvcHMuZmlsZT8udHlwZSA/IHByb3BzLmZpbGUudHlwZSA6ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudCd9KTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBleHRyYWN0RG9jdW1lbnRUZXh0KGVkaXRvcikge1xuICAgICAgICBpZiAoY3VycmVudFRleHQuY3VycmVudCkgcmV0dXJuIGN1cnJlbnRUZXh0LmN1cnJlbnQ7XG5cbiAgICAgICAgY29uc3Qgb3JpZ2luYWxTdGFydCA9IGVkaXRvci5zZWxlY3Rpb24uc3RhcnRPZmZzZXQ7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsRW5kID0gZWRpdG9yLnNlbGVjdGlvbi5lbmRPZmZzZXQ7XG5cbiAgICAgICAgZWRpdG9yLnNlbGVjdGlvbi5zZWxlY3RBbGwoKTtcbiAgICAgICAgY29uc3QgdGV4dCA9IGVkaXRvci5zZWxlY3Rpb24uZ2V0VGV4dCgpO1xuICAgICAgICBlZGl0b3Iuc2VsZWN0aW9uLnNlbGVjdChvcmlnaW5hbFN0YXJ0LCBvcmlnaW5hbEVuZCk7XG5cbiAgICAgICAgY3VycmVudFRleHQuY3VycmVudCA9IHRleHQ7XG4gICAgICAgIHJldHVybiB0ZXh0O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGV4dHJhY3RBbmNob3JUb2tlbnModGV4dCkge1xuICAgICAgICBjb25zdCByZWdleCA9IC9cXFtcXFtbXlxcW1xcXV0rP1xcXVxcXS9nO1xuICAgICAgICBjb25zdCB0b2tlbnMgPSBuZXcgU2V0KCk7XG4gICAgICAgIGxldCBtYXRjaDtcblxuICAgICAgICB3aGlsZSAoKG1hdGNoID0gcmVnZXguZXhlYyh0ZXh0KSkgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHRva2Vucy5hZGQobWF0Y2hbMF0pOyAvLyBleGFjdCBbW1RFWFRdXVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odG9rZW5zKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0NhcmV0V2l0aGluUmFuZ2UoY2FyZXQsIHN0YXJ0LCBlbmQpIHtcbiAgICAgICAgaWYgKGNhcmV0LnBhcmFncmFwaCAhPT0gc3RhcnQucGFyYWdyYXBoKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgeCA9IGNhcmV0LmxvY2F0aW9uLnhJbjtcbiAgICAgICAgY29uc3QgeSA9IGNhcmV0LmxvY2F0aW9uLnlJbjtcblxuICAgICAgICAvL2NvbnNvbGUubG9nKFwiQ0hFQ0tJTkcgQ0FSRVQgV0lUSElOIFJBTkdFIDogXCIsIHgsIHksIHN0YXJ0LmxvY2F0aW9uLnhJbiwgc3RhcnQubG9jYXRpb24ueUluLCBlbmQubG9jYXRpb24ueEluLCBlbmQubG9jYXRpb24ueUluKTtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHkgPT09IHN0YXJ0LmxvY2F0aW9uLnlJbiAmJlxuICAgICAgICAgICAgeCA+PSBzdGFydC5sb2NhdGlvbi54SW4gJiZcbiAgICAgICAgICAgIHggPD0gZW5kLmxvY2F0aW9uLnhJblxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGRlbGV0ZUN1cnJlbnRBbmNob3IoY29udGFpbmVyKSB7XG4gICAgICAgIGNvbnN0IGVkaXRvciA9IGNvbnRhaW5lcj8uZG9jdW1lbnRFZGl0b3I7XG4gICAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IGVkaXRvcj8uc2VsZWN0aW9uO1xuICAgICAgICBjb25zdCBkb2NFZGl0b3IgPSBlZGl0b3I/LmVkaXRvcjtcblxuICAgICAgICBjb25zdCBhbmNob3IgPSBhY3RpdmVBbmNob3JSZWYuY3VycmVudDtcbiAgICAgICAgaWYgKCFlZGl0b3IgfHwgIXNlbGVjdGlvbiB8fCAhZG9jRWRpdG9yIHx8ICFhbmNob3IpIHJldHVybjtcblxuICAgICAgICAvL2NvbnNvbGUubG9nKFwiRU5EIE9GRlNFVCA6IFwiLCBhbmNob3IuZW5kT2Zmc2V0LCBidW1wT2Zmc2V0KGFuY2hvci5lbmRPZmZzZXQsIC0xKSlcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcIlNUQVJUIC0gRU5EIDogXCIsIGFuY2hvci5zdGFydE9mZnNldCwgYnVtcE9mZnNldChhbmNob3IuZW5kT2Zmc2V0LCAtMSkpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgc2VsZWN0aW9uLnNlbGVjdChhbmNob3Iuc3RhcnRPZmZzZXQsIGFuY2hvci5lbmRPZmZzZXQpO1xuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcIlNFTEVDVElPTiBURVhUIDogXCIgKyBzZWxlY3Rpb24udGV4dCk7XG4gICAgICAgICAgICAvL2RvY0VkaXRvci5kZWxldGUoKTtcbiAgICAgICAgICAgIC8vc2VsZWN0aW9uLnNlbGVjdChhbmNob3Iuc3RhcnRPZmZzZXQsIGFuY2hvci5zdGFydE9mZnNldCk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBhY3RpdmVBbmNob3JSZWYuY3VycmVudCA9IG51bGw7XG4gICAgICAgICAgICB1cGRhdGVBY3RpdmVBbmNob3IoY29udGFpbmVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHVwZGF0ZUFjdGl2ZUFuY2hvcihjb250YWluZXIpIHtcbiAgICAgICAgYWN0aXZlQW5jaG9yUmVmLmN1cnJlbnQgPSBncmFiQW5jaG9yV2l0aEJvdW5kcyhjb250YWluZXIpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNjYW5SaWdodFVudGlsQW5jaG9yKGVkaXRvciwgb3JpZ2luT2Zmc2V0LCBtYXhTY2FuID0gNTAwKSB7XG4gICAgICAgIGNvbnN0IHNlbCA9IGVkaXRvci5zZWxlY3Rpb247XG4gICAgICAgIGxldCBjdXJyZW50ID0gb3JpZ2luT2Zmc2V0O1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWF4U2NhbjsgaSsrKSB7XG4gICAgICAgICAgICAvLyBtb3ZlIHJpZ2h0XG4gICAgICAgICAgICBjdXJyZW50ID0gYnVtcE9mZnNldChjdXJyZW50LCArMSk7XG5cbiAgICAgICAgICAgIHNlbC5zZWxlY3QoY3VycmVudCwgY3VycmVudCk7XG5cbiAgICAgICAgICAgIC8vIHNlbGVjdCBPTkUgY2hhcmFjdGVyIG9ubHlcbiAgICAgICAgICAgIHNlbC5zZWxlY3QoXG4gICAgICAgICAgICAgICAgY3VycmVudCxcbiAgICAgICAgICAgICAgICBidW1wT2Zmc2V0KGN1cnJlbnQsICsxKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgY29uc3QgY2ggPSBzZWwudGV4dDtcblxuICAgICAgICAgICAgLy8g4puUIEJhaWwgb24gd2hpdGVzcGFjZSBvciBwYXJhZ3JhcGggYnJlYWtcbiAgICAgICAgICAgIGlmICghY2ggfHwgL1xccy8udGVzdChjaCkpIHJldHVybiBudWxsO1xuXG4gICAgICAgICAgICAvLyBEZXRlY3QgY2xvc2luZyBcIl1dXCJcbiAgICAgICAgICAgIGlmIChjaCA9PT0gJ10nKSB7XG4gICAgICAgICAgICAgICAgLy8gbG9va2FoZWFkIG9uZSBjaGFyXG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dCA9IGJ1bXBPZmZzZXQoY3VycmVudCwgKzEpO1xuICAgICAgICAgICAgICAgIHNlbC5zZWxlY3QobmV4dCwgYnVtcE9mZnNldChuZXh0LCArMSkpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHNlbC50ZXh0ID09PSAnXScpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gcmV0dXJuIHBvc2l0aW9uIEFGVEVSIF1dXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBidW1wT2Zmc2V0KGN1cnJlbnQsICsyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzY2FuTGVmdFVudGlsQW5jaG9yKGVkaXRvciwgb3JpZ2luT2Zmc2V0LCBtYXhTY2FuID0gNTAwKSB7XG4gICAgICAgIGNvbnN0IHNlbCA9IGVkaXRvci5zZWxlY3Rpb247XG4gICAgICAgIGxldCBjdXJyZW50ID0gb3JpZ2luT2Zmc2V0O1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWF4U2NhbjsgaSsrKSB7XG4gICAgICAgICAgICBjdXJyZW50ID0gYnVtcE9mZnNldChjdXJyZW50LCAtMSk7XG5cbiAgICAgICAgICAgIC8vIHNlbGVjdCBvbmUgY2hhciB0byB0aGUgbGVmdFxuICAgICAgICAgICAgc2VsLnNlbGVjdChcbiAgICAgICAgICAgICAgICBidW1wT2Zmc2V0KGN1cnJlbnQsIC0xKSxcbiAgICAgICAgICAgICAgICBjdXJyZW50XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjb25zdCBjaCA9IHNlbC50ZXh0O1xuXG4gICAgICAgICAgICBpZiAoIWNoIHx8IC9cXHMvLnRlc3QoY2gpKSByZXR1cm4gbnVsbDtcblxuICAgICAgICAgICAgLy8gZGV0ZWN0IFtbXG4gICAgICAgICAgICBpZiAoY2ggPT09ICdbJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHByZXYgPSBidW1wT2Zmc2V0KGN1cnJlbnQsIC0xKTtcbiAgICAgICAgICAgICAgICBzZWwuc2VsZWN0KFxuICAgICAgICAgICAgICAgICAgICBidW1wT2Zmc2V0KHByZXYsIC0xKSxcbiAgICAgICAgICAgICAgICAgICAgcHJldlxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBpZiAoc2VsLnRleHQgPT09ICdbJykge1xuICAgICAgICAgICAgICAgICAgICAvLyDwn5SRIEZJWDogZ28gYmFjayBUV08gY2hhcnNcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJ1bXBPZmZzZXQoY3VycmVudCwgLTIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldENoYXJBdChlZGl0b3IsIG9mZnNldCkge1xuICAgICAgICBjb25zdCBzZWwgPSBlZGl0b3Iuc2VsZWN0aW9uO1xuICAgICAgICBzZWwuc2VsZWN0KG9mZnNldCwgYnVtcE9mZnNldChvZmZzZXQsICsxKSk7XG4gICAgICAgIHJldHVybiBzZWwudGV4dCB8fCBudWxsO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzQ2FyZXRJbW1lZGlhdGVseUJlZm9yZUFuY2hvclN0YXJ0KGVkaXRvciwgb2Zmc2V0KSB7XG4gICAgICAgIGNvbnN0IGMwID0gZ2V0Q2hhckF0KGVkaXRvciwgb2Zmc2V0KTtcbiAgICAgICAgY29uc3QgYzEgPSBnZXRDaGFyQXQoZWRpdG9yLCBidW1wT2Zmc2V0KG9mZnNldCwgKzEpKTtcbiAgICAgICAgcmV0dXJuIGMwID09PSAnWycgJiYgYzEgPT09ICdbJzsgLy8gfFtbVEVYVF1dXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNDYXJldEltbWVkaWF0ZWx5QWZ0ZXJBbmNob3IoZWRpdG9yLCBvZmZzZXQpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIGdldENoYXJBdChlZGl0b3IsIGJ1bXBPZmZzZXQob2Zmc2V0LCAtMSkpID09PSAnXScgJiZcbiAgICAgICAgICAgIGdldENoYXJBdChlZGl0b3IsIGJ1bXBPZmZzZXQob2Zmc2V0LCAtMikpID09PSAnXSdcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBncmFiQW5jaG9yV2l0aEJvdW5kcyhjb250YWluZXIpIHtcbiAgICAgICAgY29uc3QgZWRpdG9yID0gY29udGFpbmVyPy5kb2N1bWVudEVkaXRvcjtcbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uID0gZWRpdG9yPy5zZWxlY3Rpb247XG5cbiAgICAgICAgY29uc3Qgb3JpZ2luYWxTdGFydCA9IHNlbGVjdGlvbi5zdGFydE9mZnNldDtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxFbmQgPSBzZWxlY3Rpb24uZW5kT2Zmc2V0O1xuXG4gICAgICAgIHNlbGVjdGlvbi5zZWxlY3RDdXJyZW50V29yZCgpO1xuICAgICAgICBzZWxlY3Rpb24uc2VsZWN0KG9yaWdpbmFsU3RhcnQsIG9yaWdpbmFsRW5kKTtcblxuICAgICAgICAvL2xldCB3b3JkID0gc2VsZWN0aW9uLnRleHQ7XG4gICAgICAgIC8vY29uc29sZS5sb2coXCJncmFiQW5jaG9yV2l0aEJvdW5kcyBTRUxFQ1RJT04gVEVYVCA6IFwiLCB3b3JkKTtcblxuICAgICAgICBsZXQgc2NhblN0YXJ0ID0gb3JpZ2luYWxTdGFydDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChpc0NhcmV0SW1tZWRpYXRlbHlCZWZvcmVBbmNob3JTdGFydChlZGl0b3IsIG9yaWdpbmFsU3RhcnQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBpc0NhcmV0QXRFbmQgPSBpc0NhcmV0SW1tZWRpYXRlbHlBZnRlckFuY2hvcihlZGl0b3IsIG9yaWdpbmFsU3RhcnQpXG4gICAgICAgICAgICBpZiAoaXNDYXJldEF0RW5kKSB7XG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcIkNBUkVUIEFUIEVORFwiKTtcbiAgICAgICAgICAgICAgICBzY2FuU3RhcnQgPSBidW1wT2Zmc2V0KG9yaWdpbmFsU3RhcnQsIC0zKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgbGVmdCA9IHNjYW5MZWZ0VW50aWxBbmNob3IoZWRpdG9yLCBzY2FuU3RhcnQpO1xuICAgICAgICAgICAgY29uc3QgcmlnaHQgPSBzY2FuUmlnaHRVbnRpbEFuY2hvcihlZGl0b3IsIHNjYW5TdGFydCk7XG5cbiAgICAgICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0KSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0aW9uLnNlbGVjdChsZWZ0LCByaWdodCk7XG4gICAgICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNlbGVjdGlvbi50ZXh0O1xuICAgICAgICAgICAgICAgIGFuY2hvckVuZC5jdXJyZW50ID0gaXNDYXJldEF0RW5kO1xuXG4gICAgICAgICAgICAgICAgLypjb25zb2xlLmxvZyhcIkdSQUIgUkVTVUxUIDogXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgdG9rZW46IHRleHQsXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0T2Zmc2V0OiBsZWZ0LFxuICAgICAgICAgICAgICAgICAgICBlbmRPZmZzZXQ6IHJpZ2h0XG4gICAgICAgICAgICAgICAgfSk7Ki9cblxuICAgICAgICAgICAgICAgIGlmICgvXlxcW1xcWy4rP1xcXVxcXSQvLnRlc3QodGV4dCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuOiB0ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRPZmZzZXQ6IGxlZnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRPZmZzZXQ6IHJpZ2h0XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgc2VsZWN0aW9uLnNlbGVjdChvcmlnaW5hbFN0YXJ0LCBvcmlnaW5hbEVuZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidW1wT2Zmc2V0KG9mZnNldCwgZGVsdGEpIHtcbiAgICAgICAgY29uc3QgcGFydHMgPSBvZmZzZXQuc3BsaXQoJzsnKTtcbiAgICAgICAgY29uc3QgaWR4ID0gcGFydHMubGVuZ3RoIC0gMTtcblxuICAgICAgICBjb25zdCB2YWx1ZSA9IE1hdGgubWF4KDAsIHBhcnNlSW50KHBhcnRzW2lkeF0sIDEwKSArIGRlbHRhKTtcbiAgICAgICAgcGFydHNbaWR4XSA9IHZhbHVlLnRvU3RyaW5nKCk7XG5cbiAgICAgICAgcmV0dXJuIHBhcnRzLmpvaW4oJzsnKTtcbiAgICB9XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoY29udGFpbmVyKSB7XG4gICAgICAgICAgICBzZXR1cENvbnRhaW5lcigpO1xuICAgICAgICAgICAgLy9hdXRvU2F2ZSgpO1xuXG4gICAgICAgICAgICBjb25zdCBlZGl0b3IgPSBjb250YWluZXIuZG9jdW1lbnRFZGl0b3I7XG5cbiAgICAgICAgICAgIC8vIEluamVjdCBvdXIgYXV0aCBoZWFkZXJzIG9udG8gZXZlcnkgWEhSIFN5bmNmdXNpb24gZmlyZXNcbiAgICAgICAgICAgIC8vIGludGVybmFsbHkgKEltcG9ydCAvIFN5c3RlbUNsaXBib2FyZCAvIFNwZWxsQ2hlY2sgL1xuICAgICAgICAgICAgLy8gRXhwb3J0U0ZEVCAvIFJlc3RyaWN0RWRpdGluZykuIFdpdGhvdXQgdGhpcywgcmVxdWVzdHMgdG8gYVxuICAgICAgICAgICAgLy8gZ2F0ZXdheS1wcm90ZWN0ZWQgZG9jcyBzZXJ2aWNlIGNvbWUgYmFjayA0MDEgYW5kIHRoZVxuICAgICAgICAgICAgLy8gZWRpdG9yIHNpbGVudGx5IHN3YWxsb3dzIHRoZSBmYWlsdXJlIOKAlCBtb3N0IHZpc2libHkgb25cbiAgICAgICAgICAgIC8vIHJpY2gtY29udGVudCBwYXN0ZSBmcm9tIFdvcmQsIHdoaWNoIHJvdXRlcyB0aHJvdWdoXG4gICAgICAgICAgICAvLyBTeXN0ZW1DbGlwYm9hcmQuIFJlYWRpbmcgdGhlIHRva2VucyBhdCBmaXJlIHRpbWUgKG5vdCBhdFxuICAgICAgICAgICAgLy8gc2V0dXApIHNvIHRva2VuIHJlZnJlc2hlcyBhcmUgcGlja2VkIHVwLlxuICAgICAgICAgICAgZWRpdG9yLmJlZm9yZVhtbEh0dHBSZXF1ZXN0U2VuZCA9IChhcmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWNjZXNzVG9rZW4gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdhY2Nlc3NUb2tlbicpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlkVG9rZW4gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdpZFRva2VuJyk7XG5cbiAgICAgICAgICAgICAgICAvLyBSRVBMQUNFIGFyZ3MuaGVhZGVycyByYXRoZXIgdGhhbiBwdXNoKCkg4oCUIFN5bmNmdXNpb24nc1xuICAgICAgICAgICAgICAgIC8vIGludGVybmFsIEFqYXhIZWxwZXIgcmV1c2VzIHRoZSBzYW1lIGFyZ3MuaGVhZGVycyBhcnJheVxuICAgICAgICAgICAgICAgIC8vIGFjcm9zcyByZXF1ZXN0cyAoYW5kIGluIGRldiBTdHJpY3RNb2RlIHRoZSBlZmZlY3QgcnVuc1xuICAgICAgICAgICAgICAgIC8vIHR3aWNlKSwgc28gcHVzaGluZyBjb21wb3VuZHMgdGhlIGVudHJpZXMuIFdpdGggYSBmdWxsXG4gICAgICAgICAgICAgICAgLy8gSldUIGJlYXJlciBwZXIgZHVwbGljYXRlIHRoZSByZXF1ZXN0IHJhcGlkbHkgZXhjZWVkc1xuICAgICAgICAgICAgICAgIC8vIG5naW54J3MgOEtCIGhlYWRlciBidWZmZXIgYW5kIHRoZSBnYXRld2F5IHJldHVybnMgNDMxXG4gICAgICAgICAgICAgICAgLy8gUmVxdWVzdCBIZWFkZXIgRmllbGRzIFRvbyBMYXJnZTsgdGhlIGJyb3dzZXIgdGhlblxuICAgICAgICAgICAgICAgIC8vIHJlcG9ydHMgdGhlIHN5bXB0b20gYXMgYSBDT1JTIGZhaWx1cmUgYmVjYXVzZSB0aGUgNDMxXG4gICAgICAgICAgICAgICAgLy8gcmVzcG9uc2UgY2FycmllcyBubyBBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4uXG4gICAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgICAvLyBFYWNoIHB1c2hlZCBvYmplY3QncyBQUk9QRVJUWSBOQU1FIGJlY29tZXMgdGhlIEhUVFBcbiAgICAgICAgICAgICAgICAvLyBoZWFkZXIgbmFtZSBvbiB0aGUgd2lyZSAoQWpheEhlbHBlciBkb2VzXG4gICAgICAgICAgICAgICAgLy8gYGZvciAoY29uc3QgayBpbiBoKSB4aHIuc2V0UmVxdWVzdEhlYWRlcihrLCBoW2tdKWApLlxuICAgICAgICAgICAgICAgIGNvbnN0IGhlYWRlcnMgPSBbXTtcbiAgICAgICAgICAgICAgICBpZiAoYWNjZXNzVG9rZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVycy5wdXNoKHsgJ0F1dGhvcml6YXRpb24nOiAnQmVhcmVyICcgKyBhY2Nlc3NUb2tlbiB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGlkVG9rZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVycy5wdXNoKHsgJ2lkVG9rZW4nOiBpZFRva2VuIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhcmdzLmhlYWRlcnMgPSBoZWFkZXJzO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgZWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoJ2tleURvd24nLCAoYXJncykgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGUgPSBhcmdzLmV2ZW50O1xuXG4gICAgICAgICAgICAgICAgLy8gMe+4j+KDoyBOYXZpZ2F0aW9uIGtleXMg4oaSIGluc3BlY3Qgb25seVxuICAgICAgICAgICAgICAgIGlmIChpc05hdmlnYXRpb25LZXkoZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUFjdGl2ZUFuY2hvcihjb250YWluZXIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcIkFDVElWRSBBTkNIT1IgOiBcIiwgYWN0aXZlQW5jaG9yUmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhcIkRFTEVURSBMT0NLRUQgOiBcIiwgZGVsZXRlTG9ja1JlZi5jdXJyZW50KTtcbiAgICAgICAgICAgICAgICBpZiAoZS5rZXkgPT09ICdCYWNrc3BhY2UnIHx8IGUua2V5ID09PSAnRGVsZXRlJykge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChkZWxldGVMb2NrUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN5bmNmdXNpb24gYWxyZWFkeSBkZWxldGVkIOKGkiByZXdpbmQgc2FmZWx5XG4gICAgICAgICAgICAgICAgICAgICAgICBlZGl0b3IuZWRpdG9ySGlzdG9yeS51bmRvKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gQWNxdWlyZSBsb2NrXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZUxvY2tSZWYuY3VycmVudCA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gUmVsZWFzZSBsb2NrIHdoZW4gZWRpdG9yIGlzIGFjdHVhbGx5IHN0YWJsZVxuICAgICAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVMb2NrUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyAy77iP4oOjIElmIHdlIGFyZSBpbnNpZGUgYSByZXN0cmljdGVkIGFuY2hvclxuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJhbmNob3JFbmQuY3VycmVudCA6IFwiLCBhbmNob3JFbmQuY3VycmVudCwgYWN0aXZlQW5jaG9yUmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgICAgIGlmICgoYWN0aXZlQW5jaG9yUmVmLmN1cnJlbnQgJiYgIWlzTmF2aWdhdGlvbktleShlKSkgfHwgYW5jaG9yRW5kLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gRGVsZXRlIC8gQmFja3NwYWNlID0gZGVsZXRlIHdob2xlIGFuY2hvclxuICAgICAgICAgICAgICAgICAgICBpZiAoZS5rZXkgPT09ICdCYWNrc3BhY2UnIHx8IGUua2V5ID09PSAnRGVsZXRlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy9lZGl0b3IuZWRpdG9ySGlzdG9yeS51bmRvKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVDdXJyZW50QW5jaG9yKGNvbnRhaW5lciwgYWN0aXZlQW5jaG9yUmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlQW5jaG9yUmVmLmN1cnJlbnQgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgYW5jaG9yRW5kLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZUxvY2tSZWYuY3VycmVudCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byBibG9jayB3aGVuIHdlIGFyZSBhdCB0aGUgZW5kIG9mIGFuIGFuY2hvci4gSW5wdXQgd2lsbCBuZXZlciBkYW1hZ2UgdGhlIGFuY2hvclxuICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiVU5CTE9DS0lORyA6IFwiLCBhbmNob3JFbmQuY3VycmVudCwgYWN0aXZlQW5jaG9yUmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWFuY2hvckVuZC5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDwn5SSIEJsb2NrIHR5cGluZyAmIHBhc3RlXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5rZXkubGVuZ3RoID09PSAxIHx8IC8vIHByaW50YWJsZSBjaGFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5jdHJsS2V5IHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5tZXRhS2V5XG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZUFuY2hvclJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGFuY2hvckVuZC5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGUua2V5ID09PSAnQmFja3NwYWNlJyB8fCBlLmtleSA9PT0gJ0RlbGV0ZScpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUFjdGl2ZUFuY2hvcihjb250YWluZXIpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3Qgb25Nb3VzZVVwID0gKGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzUG9pbnRJbnNpZGVFbGVtZW50KGUuY2xpZW50WCwgZS5jbGllbnRZLCB2aWV3ZXJFbGVtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGRyb3BEYXRhLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgaW5zZXJ0UmVhZG9ubHlBbmNob3IoZHJvcERhdGEuY3VycmVudC52YWx1ZSwgZHJvcERhdGEuY3VycmVudC5kcm9wUG9zaXRpb24pO1xuICAgICAgICAgICAgICAgICAgICBkcm9wRGF0YS5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB1cGRhdGVBY3RpdmVBbmNob3IoY29udGFpbmVyKTtcbiAgICAgICAgICAgICAgICAvL3ZpZXdlci5zdHlsZS5vdmVyZmxvdyA9ICdhdXRvJztcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHZpZXdlckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG9uTW91c2VVcCk7XG4gICAgICAgICAgICByZXR1cm4gKCkgPT4gdmlld2VyRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgb25Nb3VzZVVwKTtcbiAgICAgICAgfVxuICAgIH0sIFtjb250YWluZXJdKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChjb250YWluZXIgJiYganNvbikge1xuICAgICAgICAgICAgY29udGFpbmVyLmRvY3VtZW50RWRpdG9yLmRvY3VtZW50Q2hhbmdlID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lci5kb2N1bWVudEVkaXRvci5lbmFibGVUcmFja0NoYW5nZXMgPSAhVXRpbHMuaXNOdWxsKHByb3BzLnRyYWNrQ2hhbmdlcykgPyBwcm9wcy50cmFja0NoYW5nZXMgOiB0cnVlO1xuICAgICAgICAgICAgICAgIGlmIChwcm9wcy5jb21tZW50c09ubHkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLmRvY3VtZW50RWRpdG9yLmVkaXRvci5lbmZvcmNlUHJvdGVjdGlvbigncGFzc3dvcmQnLCAnQ29tbWVudHNPbmx5Jyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwcm9wcy5yZWFkT25seSkge1xuICAgICAgICAgICAgICAgICAgICBjb250YWluZXIuZG9jdW1lbnRFZGl0b3IuaXNSZWFkT25seSA9IHByb3BzLnJlYWRPbmx5O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChsb2FkaW5nLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGZpbGUgPSBhd2FpdCBzYXZlQXNCYXNlNjQoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb3BzLnZhbHVlQ2hhbmdlSGFuZGxlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMudmFsdWVDaGFuZ2VIYW5kbGVyKGZpbGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgbG9hZGluZy5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY3VycmVudFRleHQuY3VycmVudCA9IGV4dHJhY3REb2N1bWVudFRleHQoY29udGFpbmVyLmRvY3VtZW50RWRpdG9yLmVkaXRvcik7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBjb250YWluZXIuZG9jdW1lbnRFZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcignY29udGVudENoYW5nZScsIGFzeW5jIChlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHByb3BzLmRpc2FibGVBY2NlcHRDaGFuZ2VzKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBhY2NlcHRCdXR0b25zID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImUtZGUtdHJhY2stYWNjZXB0LWJ1dHRvblwiKTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBhY2NlcHRCdXR0b24gb2YgYWNjZXB0QnV0dG9ucykge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXB0QnV0dG9uLnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQoYWNjZXB0QnV0dG9uKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChwcm9wcy5kaXNhYmxlUmVqZWN0Q2hhbmdlcykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVqZWN0QnV0dG9ucyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJlLWRlLXRyYWNrLXJlamVjdC1idXR0b25cIik7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcmVqZWN0QnV0dG9uIG9mIHJlamVjdEJ1dHRvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdEJ1dHRvbi5wYXJlbnRFbGVtZW50LnJlbW92ZUNoaWxkKHJlamVjdEJ1dHRvbik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAobG9hZGluZy5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBmaWxlID0gYXdhaXQgc2F2ZUFzQmFzZTY0KCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwcm9wcy52YWx1ZUNoYW5nZUhhbmRsZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLnZhbHVlQ2hhbmdlSGFuZGxlcihmaWxlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGxvYWRpbmcuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGN1cnJlbnRUZXh0LmN1cnJlbnQgPSBleHRyYWN0RG9jdW1lbnRUZXh0KGNvbnRhaW5lci5kb2N1bWVudEVkaXRvci5lZGl0b3IpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbnRhaW5lci5kb2N1bWVudEVkaXRvci5vcGVuKGpzb24pO1xuICAgICAgICAgICAgY29udGFpbmVyLmRvY3VtZW50RWRpdG9yLmVuYWJsZVRyYWNrQ2hhbmdlcyA9ICFVdGlscy5pc051bGwocHJvcHMudHJhY2tDaGFuZ2VzKSA/IHByb3BzLnRyYWNrQ2hhbmdlcyA6IHRydWU7XG4gICAgICAgICAgICAvL2NvbnRhaW5lci5kb2N1bWVudEVkaXRvci5pc1JlYWRPbmx5ID0gKHByb3BzLnJlYWRPbmx5IHx8IHByb3BzLmNvbW1lbnRzT25seSk7XG4gICAgICAgIH1cbiAgICB9LCBbanNvbiwgY29udGFpbmVyXSk7XG5cbiAgICBjb25zdCBvblRvb2xiYXJDbGljayA9IChhcmdzKSA9PiB7XG4gICAgICAgIGNvbnN0IGVkID0gY29udGFpbmVyPy5kb2N1bWVudEVkaXRvcj8uZWRpdG9yO1xuICAgICAgICBpZiAoIWVkKSByZXR1cm47XG4gICAgICAgIHN3aXRjaCAoYXJncy5pdGVtLmlkKSB7XG4gICAgICAgICAgICBjYXNlICdidWxsZXRzJzpcbiAgICAgICAgICAgICAgICBlZC5hcHBseUJ1bGxldCgnXFx1ZjBiNycsICdTeW1ib2wnKTsgLy8g4oCiXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdudW1iZXJpbmcnOlxuICAgICAgICAgICAgICAgIGVkLmFwcGx5TnVtYmVyaW5nKCclMS4nLCAnQXJhYmljJyk7IC8vIDEuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdsZXZlbC0wJzpcbiAgICAgICAgICAgICAgICBhcHBseUxldmVsKGVkLCAwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2xldmVsLTEnOlxuICAgICAgICAgICAgICAgIGFwcGx5TGV2ZWwoZWQsIDEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbGV2ZWwtMic6XG4gICAgICAgICAgICAgICAgYXBwbHlMZXZlbChlZCwgMik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjbGVhci1saXN0JzpcbiAgICAgICAgICAgICAgICBlZC5jbGVhckxpc3QoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAvLyBsZXQgYnVpbHQtaW5zIChVbmRvL1JlZG8vTmV3L09wZW4pIHdvcmsgbm9ybWFsbHlcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J25vLW1hcmdpbiBuby1wYWRkaW5nJ30gc3R5bGU9e3toZWlnaHQ6ICcxMDAlJ319IGlkPXtgcGFyZW50LWNvbnRhaW5lcmB9IHJlZj17cGFyZW50UmVmfT5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAhdmlzaWJsZSAmJlxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICAgICAgICAgIGZsZXhXcmFwOiAnd3JhcCcsXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICBhbGlnbkNvbnRlbnQ6ICdjZW50ZXInXG4gICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgIDxMb3R0aWVJY29uIGlkPXsnd2FpdGluZy1zbSd9Lz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgJiZcbiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICcwIDMycHggMCAzMnB4JyxcbiAgICAgICAgICAgICAgICAgICAgbWF4SGVpZ2h0OiAnNjRweCdcbiAgICAgICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAgICAgICAgPEFsZXJ0XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PXsnZGFuZ2VyJ31cbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3c9eyFVdGlscy5pc051bGwoZXJyb3JNZXNzYWdlKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldEVycm9yTWVzc2FnZShudWxsKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc21pc3NpYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGg6ICcxMDAlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9e3tjb2xvcjogJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC44KSd9fT57ZXJyb3JNZXNzYWdlfTwvcD5cbiAgICAgICAgICAgICAgICAgICAgPC9BbGVydD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHsvKiBTZXR0aW5nIGVuYWJsZVRyYWNrQ2hhbmdlcyB0byBmYWxzZSBkb2VzIG5vdCB3b3JrIHNvIHdlIGR1cGxpY2F0ZSB0aGUgY29kZSovfVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHZpc2libGUgJiYgaXRlbXMgJiYgKFV0aWxzLmlzTnVsbChwcm9wcy50cmFja0NoYW5nZXMpIHx8IHByb3BzLnRyYWNrQ2hhbmdlcyA9PT0gdHJ1ZSkgJiZcbiAgICAgICAgICAgICAgICA8RG9jdW1lbnRFZGl0b3JDb250YWluZXJDb21wb25lbnQgaWQ9e2Ake3Byb3BzLmlkfS1jb250YWluZXJgfSBoZWlnaHQ9e2VkaXRvckhlaWdodCA+IDAgPyBgJHtlZGl0b3JIZWlnaHR9cHhgIDogJzEyMDBweCd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZj17KHNjb3BlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRDb250YWluZXIoc2NvcGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyUmVmLmN1cnJlbnQgPSBzY29wZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZD17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5yZXNpemUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIuZG9jdW1lbnRFZGl0b3IucmVzaXplKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZVBlcnNpc3RlbmNlPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGJhckNsaWNrPXtvblRvb2xiYXJDbGlja31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbGJhckl0ZW1zPXtpdGVtc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdHJpY3RFZGl0aW5nPXtwcm9wcy5yZWFkT25seSAmJiAhcHJvcHMuY29tbWVudHNPbmx5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93UHJvcGVydGllc1BhbmU9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVUcmFja0NoYW5nZXM9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZUF1dG9Gb2N1cz17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VVcmw9e2dldFNlcnZpY2VVcmwoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlVG9vbGJhcj17IShwcm9wcy5yZWFkT25seSkgfHwgcHJvcHMuY29tbWVudHNPbmx5fS8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdmlzaWJsZSAmJiBpdGVtcyAmJiBwcm9wcy50cmFja0NoYW5nZXMgPT09IGZhbHNlICYmXG4gICAgICAgICAgICAgICAgPERvY3VtZW50RWRpdG9yQ29udGFpbmVyQ29tcG9uZW50IGlkPXtgJHtwcm9wcy5pZH0tY29udGFpbmVyYH0gaGVpZ2h0PXtlZGl0b3JIZWlnaHQgPiAwID8gYCR7ZWRpdG9ySGVpZ2h0fXB4YCA6ICcxMjAwcHgnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWY9eyhzY29wZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q29udGFpbmVyKHNjb3BlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lclJlZi5jdXJyZW50ID0gc2NvcGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWQ9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIucmVzaXplKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLmRvY3VtZW50RWRpdG9yLnJlc2l6ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVQZXJzaXN0ZW5jZT17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xiYXJDbGljaz17b25Ub29sYmFyQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xiYXJJdGVtcz17aXRlbXN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0RWRpdGluZz17cHJvcHMucmVhZE9ubHkgJiYgIXByb3BzLmNvbW1lbnRzT25seX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1Byb3BlcnRpZXNQYW5lPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlQXV0b0ZvY3VzPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZVVybD17Z2V0U2VydmljZVVybCgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVUb29sYmFyPXshKHByb3BzLnJlYWRPbmx5KSB8fCBwcm9wcy5jb21tZW50c09ubHl9Lz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFdvcmREb2N1bWVudFZpZXdlcjsiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFDLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNELElBQUFDLG9CQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxNQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSSx1QkFBQSxHQUFBSixPQUFBO0FBQ0FBLE9BQUE7QUFDQSxJQUFBSyxtQkFBQSxHQUFBRixzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQU0sUUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sTUFBQSxHQUFBSixzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQVEsV0FBQSxHQUFBTCxzQkFBQSxDQUFBSCxPQUFBO0FBQ0FBLE9BQUE7QUFFQSxJQUFBUyxrQkFBQSxHQUFBVCxPQUFBO0FBQ0EsSUFBQVUsa0JBQUEsR0FBQVYsT0FBQTtBQUFnRSxJQUFBVyxxQkFBQTtBQUFBLFNBQUFSLHVCQUFBUyxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBQUEsU0FBQWIsd0JBQUFhLENBQUEsRUFBQUcsQ0FBQSw2QkFBQUMsT0FBQSxNQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFqQix1QkFBQSxZQUFBQSxDQUFBYSxDQUFBLEVBQUFHLENBQUEsU0FBQUEsQ0FBQSxJQUFBSCxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxTQUFBRCxDQUFBLE1BQUFPLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLEtBQUFDLFNBQUEsUUFBQVIsT0FBQSxFQUFBRixDQUFBLGlCQUFBQSxDQUFBLHVCQUFBQSxDQUFBLHlCQUFBQSxDQUFBLFNBQUFTLENBQUEsTUFBQUYsQ0FBQSxHQUFBSixDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxR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QUU3TixLQUFLLENBQUNzTCxRQUFRLElBQUksQ0FBQ3RMLEtBQUssQ0FBQ2tFLFlBQWE7SUFDdkQ0SixrQkFBa0IsRUFBRSxLQUFNO0lBQzFCM0Msa0JBQWtCLEVBQUUsSUFBSztJQUN6QjRDLGVBQWUsRUFBRSxLQUFNO0lBQ3ZCQyxVQUFVLEVBQUV0USxhQUFhLENBQUMsQ0FBRTtJQUM1QnVRLGFBQWEsRUFBRSxDQUFFak8sS0FBSyxDQUFDc0wsUUFBUyxJQUFJdEwsS0FBSyxDQUFDa0U7RUFBYSxDQUFDLENBQUMsRUFHM0Y1RCxPQUFPLElBQUlGLEtBQUssSUFBSUosS0FBSyxDQUFDcUwsWUFBWSxLQUFLLEtBQUssaUJBQ2hEaFIsTUFBQSxDQUFBZ0IsT0FBQSxDQUFBbVIsYUFBQSxDQUFDN1IsdUJBQUEsQ0FBQWlELGdDQUFnQztJQUFDcUUsRUFBRSxLQUFBdEUsTUFBQSxDQUFLcUMsS0FBSyxDQUFDaUMsRUFBRSxlQUFhO0lBQUNoRCxNQUFNLEVBQUVxQyxZQUFZLEdBQUcsQ0FBQyxNQUFBM0QsTUFBQSxDQUFNMkQsWUFBWSxVQUFPLFFBQVM7SUFDdkZxTCxHQUFHLEVBQUdjLEtBQUssSUFBSztNQUNadk4sWUFBWSxDQUFDdU4sS0FBSyxDQUFDO01BQ25Cek8sWUFBWSxDQUFDTSxPQUFPLEdBQUdtTyxLQUFLO0lBQ2hDLENBQUU7SUFDRkMsT0FBTyxFQUFFQSxDQUFBLEtBQU07TUFDWCxJQUFJek4sU0FBUyxFQUFFO1FBQ1hBLFNBQVMsQ0FBQ0osTUFBTSxDQUFDLENBQUM7UUFDbEJJLFNBQVMsQ0FBQ0gsY0FBYyxDQUFDRCxNQUFNLENBQUMsQ0FBQztNQUNyQztJQUNKLENBQUU7SUFDRjhOLGlCQUFpQixFQUFFLEtBQU07SUFDekJDLFlBQVksRUFBRXpCLGNBQWU7SUFDN0JsSSxZQUFZLEVBQUU3RCxLQUFNO0lBQ3BCeU4sZUFBZSxFQUFFN04sS0FBSyxDQUFDc0wsUUFBUSxJQUFJLENBQUN0TCxLQUFLLENBQUNrRSxZQUFhO0lBQ3ZENEosa0JBQWtCLEVBQUUsS0FBTTtJQUMxQkMsZUFBZSxFQUFFLEtBQU07SUFDdkJDLFVBQVUsRUFBRXRRLGFBQWEsQ0FBQyxDQUFFO0lBQzVCdVEsYUFBYSxFQUFFLENBQUVqTyxLQUFLLENBQUNzTCxRQUFTLElBQUl0TCxLQUFLLENBQUNrRTtFQUFhLENBQUMsQ0FFN0YsQ0FBQztBQUVkLENBQUM7QUFBQyxJQUFBZ0ssUUFBQSxHQUFBM1IsT0FBQSxDQUFBbEIsT0FBQSxHQUVhMEUsa0JBQWtCIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -8,8 +8,6 @@ var _react = _interopRequireDefault(require("react"));
|
|
|
8
8
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
9
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
10
10
|
var _styles = require("@mui/styles");
|
|
11
|
-
var _List = _interopRequireDefault(require("@mui/material/List"));
|
|
12
|
-
var _ListItem = _interopRequireDefault(require("@mui/material/ListItem"));
|
|
13
11
|
var _footerStyle = _interopRequireDefault(require("../../assets/jss/components/footerStyle"));
|
|
14
12
|
var _CardAvatar = _interopRequireDefault(require("../card/CardAvatar"));
|
|
15
13
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -19,13 +17,11 @@ const Footer = props => {
|
|
|
19
17
|
const [width] = _react.default.useState(props.width ? props.width : null);
|
|
20
18
|
const {
|
|
21
19
|
fluid,
|
|
22
|
-
white
|
|
23
|
-
rtlActive
|
|
20
|
+
white
|
|
24
21
|
} = props;
|
|
25
22
|
let container = (0, _classnames.default)({
|
|
26
23
|
[classes.container]: !fluid,
|
|
27
|
-
[classes.containerFluid]: fluid
|
|
28
|
-
[classes.whiteColor]: white
|
|
24
|
+
[classes.containerFluid]: fluid
|
|
29
25
|
});
|
|
30
26
|
let anchor = classes.a + (0, _classnames.default)({
|
|
31
27
|
[" " + classes.whiteColor]: white
|
|
@@ -37,7 +33,8 @@ const Footer = props => {
|
|
|
37
33
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
38
34
|
className: classes.wrapper,
|
|
39
35
|
style: {
|
|
40
|
-
borderTop: '1px solid ' + props.splitterColor
|
|
36
|
+
borderTop: '1px solid ' + props.splitterColor,
|
|
37
|
+
color: 'rgb(189, 189, 189)'
|
|
41
38
|
}
|
|
42
39
|
}, /*#__PURE__*/_react.default.createElement("footer", {
|
|
43
40
|
className: classes.footer,
|
|
@@ -47,16 +44,12 @@ const Footer = props => {
|
|
|
47
44
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
48
45
|
className: container,
|
|
49
46
|
style: {
|
|
50
|
-
width: '100%'
|
|
47
|
+
width: '100%',
|
|
48
|
+
display: 'flex',
|
|
49
|
+
justifyContent: 'center'
|
|
51
50
|
}
|
|
52
51
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
53
|
-
className:
|
|
54
|
-
}, /*#__PURE__*/_react.default.createElement(_List.default, {
|
|
55
|
-
className: classes.list
|
|
56
|
-
}, /*#__PURE__*/_react.default.createElement(_ListItem.default, {
|
|
57
|
-
className: classes.inlineBlock
|
|
58
|
-
}))), /*#__PURE__*/_react.default.createElement("div", {
|
|
59
|
-
className: classes.right + " row"
|
|
52
|
+
className: "row"
|
|
60
53
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
61
54
|
style: {
|
|
62
55
|
paddingLeft: "8px",
|
|
@@ -81,4 +74,4 @@ Footer.propTypes = {
|
|
|
81
74
|
rtlActive: _propTypes.default.bool
|
|
82
75
|
};
|
|
83
76
|
var _default = exports.default = Footer;
|
|
84
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
77
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9wcm9wVHlwZXMiLCJfY2xhc3NuYW1lcyIsIl9zdHlsZXMiLCJfZm9vdGVyU3R5bGUiLCJfQ2FyZEF2YXRhciIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsInVzZVN0eWxlcyIsIm1ha2VTdHlsZXMiLCJzdHlsZXMiLCJGb290ZXIiLCJwcm9wcyIsImNsYXNzZXMiLCJ3aWR0aCIsIlJlYWN0IiwidXNlU3RhdGUiLCJmbHVpZCIsIndoaXRlIiwiY29udGFpbmVyIiwiY3giLCJjb250YWluZXJGbHVpZCIsImFuY2hvciIsImEiLCJ3aGl0ZUNvbG9yIiwiYmxvY2siLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwid3JhcHBlciIsInN0eWxlIiwiYm9yZGVyVG9wIiwic3BsaXR0ZXJDb2xvciIsImNvbG9yIiwiZm9vdGVyIiwiZGlzcGxheSIsImp1c3RpZnlDb250ZW50IiwicGFkZGluZ0xlZnQiLCJtYXJnaW5SaWdodCIsInBsYWluIiwibG9nbyIsInNyYyIsImFsdCIsInRleHQiLCJEYXRlIiwiZ2V0WWVhciIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsImJvb2wiLCJydGxBY3RpdmUiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZm9vdGVyL0Zvb3Rlci5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IGN4IGZyb20gXCJjbGFzc25hbWVzXCI7XG5cbmltcG9ydCB7bWFrZVN0eWxlc30gZnJvbSBcIkBtdWkvc3R5bGVzXCI7XG5cbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4uLy4uL2Fzc2V0cy9qc3MvY29tcG9uZW50cy9mb290ZXJTdHlsZVwiO1xuaW1wb3J0IENhcmRBdmF0YXIgZnJvbSBcIi4uL2NhcmQvQ2FyZEF2YXRhclwiO1xuXG5jb25zdCB1c2VTdHlsZXMgPSBtYWtlU3R5bGVzKHN0eWxlcyk7XG5cbmNvbnN0IEZvb3RlciA9IChwcm9wcykgPT4ge1xuICAgIGNvbnN0IGNsYXNzZXMgPSB1c2VTdHlsZXMoKTtcbiAgICBjb25zdCBbd2lkdGhdID0gUmVhY3QudXNlU3RhdGUocHJvcHMud2lkdGggPyBwcm9wcy53aWR0aCA6IG51bGwpO1xuXG4gICAgY29uc3Qge1xuICAgICAgICBmbHVpZCxcbiAgICAgICAgd2hpdGVcbiAgICB9ID0gcHJvcHM7XG5cbiAgICBsZXQgY29udGFpbmVyID0gY3goe1xuICAgICAgICBbY2xhc3Nlcy5jb250YWluZXJdOiAhZmx1aWQsXG4gICAgICAgIFtjbGFzc2VzLmNvbnRhaW5lckZsdWlkXTogZmx1aWRcbiAgICB9KTtcblxuICAgIGxldCBhbmNob3IgPVxuICAgICAgICBjbGFzc2VzLmEgK1xuICAgICAgICBjeCh7XG4gICAgICAgICAgICBbXCIgXCIgKyBjbGFzc2VzLndoaXRlQ29sb3JdOiB3aGl0ZVxuICAgICAgICB9KTtcblxuICAgIGxldCBibG9jayA9IGN4KHtcbiAgICAgICAgW2NsYXNzZXMuYmxvY2tdOiB0cnVlLFxuICAgICAgICBbY2xhc3Nlcy53aGl0ZUNvbG9yXTogd2hpdGVcbiAgICB9KTtcbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy53cmFwcGVyfSBzdHlsZT17e2JvcmRlclRvcDogJzFweCBzb2xpZCAnICsgcHJvcHMuc3BsaXR0ZXJDb2xvciwgY29sb3I6ICdyZ2IoMTg5LCAxODksIDE4OSknfX0+XG4gICAgICAgICAgICA8Zm9vdGVyIGNsYXNzTmFtZT17Y2xhc3Nlcy5mb290ZXJ9IHN0eWxlPXt7d2lkdGg6IHdpZHRofX0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NvbnRhaW5lcn0gc3R5bGU9e3t3aWR0aDogJzEwMCUnLCBkaXNwbGF5OiAnZmxleCcsIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJ319PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17XCJyb3dcIn0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7cGFkZGluZ0xlZnQ6IFwiOHB4XCIsIG1hcmdpblJpZ2h0OiAnMjBweCd9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2FyZEF2YXRhciBwbGFpbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29sLSotKlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMubG9nbyA/IDxpbWcgc3JjPXtwcm9wcy5sb2dvfSBhbHQ9XCIuLi5cIi8+IDogbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjb2wtKi0qXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy50ZXh0ID8gPGRpdj4mbmJzcDsmbmJzcDt7cHJvcHMudGV4dH08L2Rpdj4gOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQ2FyZEF2YXRhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgJmNvcHk7IHsxOTAwICsgbmV3IERhdGUoKS5nZXRZZWFyKCl9IHtcIiBcIn1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Zvb3Rlcj5cbiAgICAgICAgPC9kaXY+XG4gICAgKTtcbn07XG5cbkZvb3Rlci5wcm9wVHlwZXMgPSB7XG4gICAgZmx1aWQ6IFByb3BUeXBlcy5ib29sLFxuICAgIHdoaXRlOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBydGxBY3RpdmU6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBGb290ZXI7XG5cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsVUFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsV0FBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUcsT0FBQSxHQUFBSCxPQUFBO0FBRUEsSUFBQUksWUFBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUssV0FBQSxHQUFBTixzQkFBQSxDQUFBQyxPQUFBO0FBQTRDLFNBQUFELHVCQUFBTyxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBRTVDLE1BQU1HLFNBQVMsR0FBRyxJQUFBQyxrQkFBVSxFQUFDQyxvQkFBTSxDQUFDO0FBRXBDLE1BQU1DLE1BQU0sR0FBSUMsS0FBSyxJQUFLO0VBQ3RCLE1BQU1DLE9BQU8sR0FBR0wsU0FBUyxDQUFDLENBQUM7RUFDM0IsTUFBTSxDQUFDTSxLQUFLLENBQUMsR0FBR0MsY0FBSyxDQUFDQyxRQUFRLENBQUNK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
|