mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-12-01 12:01:58 +00:00
94f86eda79
* Some improvements for introduction/performance.md
* Minor improvements for example_datasets
* Add website/package-lock.json to .gitignore
* YT paragraph was badly outdated and there is no real reason to write a new one
* Use weird introduction article as a starting point for F.A.Q.
* Some refactoring of first half of ya_metrika_task.md
* minor
* Weird docs footer bugfix
* Forgotten redirect
* h/v scrollbars same size in docs
* CLICKHOUSE-3831: introduce security changelog
* A bit more narrow tables on docs front page
* fix flag in ru docs
* Save some space in top level of docs ToC
* Capitalize most words in titles of docs/en/
* more docs scrollbar fixes
* fix incorrect merge
* fix link
* fix switching languages in single page docs mode
* Update mkdocs & mkdocs-material + unminify javascript
* cherrypick 17e18d1ecc
91 lines
27 KiB
JavaScript
91 lines
27 KiB
JavaScript
(function(e, a) { for(var i in a) e[i] = a[i]; }(window, /******/ (function(modules) { // webpackBootstrap
|
|
/******/ // The module cache
|
|
/******/ var installedModules = {};
|
|
/******/
|
|
/******/ // The require function
|
|
/******/ function __webpack_require__(moduleId) {
|
|
/******/
|
|
/******/ // Check if module is in cache
|
|
/******/ if(installedModules[moduleId]) {
|
|
/******/ return installedModules[moduleId].exports;
|
|
/******/ }
|
|
/******/ // Create a new module (and put it into the cache)
|
|
/******/ var module = installedModules[moduleId] = {
|
|
/******/ i: moduleId,
|
|
/******/ l: false,
|
|
/******/ exports: {}
|
|
/******/ };
|
|
/******/
|
|
/******/ // Execute the module function
|
|
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
|
|
/******/
|
|
/******/ // Flag the module as loaded
|
|
/******/ module.l = true;
|
|
/******/
|
|
/******/ // Return the exports of the module
|
|
/******/ return module.exports;
|
|
/******/ }
|
|
/******/
|
|
/******/
|
|
/******/ // expose the modules object (__webpack_modules__)
|
|
/******/ __webpack_require__.m = modules;
|
|
/******/
|
|
/******/ // expose the module cache
|
|
/******/ __webpack_require__.c = installedModules;
|
|
/******/
|
|
/******/ // define getter function for harmony exports
|
|
/******/ __webpack_require__.d = function(exports, name, getter) {
|
|
/******/ if(!__webpack_require__.o(exports, name)) {
|
|
/******/ Object.defineProperty(exports, name, {
|
|
/******/ configurable: false,
|
|
/******/ enumerable: true,
|
|
/******/ get: getter
|
|
/******/ });
|
|
/******/ }
|
|
/******/ };
|
|
/******/
|
|
/******/ // getDefaultExport function for compatibility with non-harmony modules
|
|
/******/ __webpack_require__.n = function(module) {
|
|
/******/ var getter = module && module.__esModule ?
|
|
/******/ function getDefault() { return module['default']; } :
|
|
/******/ function getModuleExports() { return module; };
|
|
/******/ __webpack_require__.d(getter, 'a', getter);
|
|
/******/ return getter;
|
|
/******/ };
|
|
/******/
|
|
/******/ // Object.prototype.hasOwnProperty.call
|
|
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
|
|
/******/
|
|
/******/ // __webpack_public_path__
|
|
/******/ __webpack_require__.p = "";
|
|
/******/
|
|
/******/ // Load entry module and return exports
|
|
/******/ return __webpack_require__(__webpack_require__.s = 4);
|
|
/******/ })
|
|
/************************************************************************/
|
|
/******/ ({
|
|
|
|
/***/ 4:
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
"use strict";
|
|
|
|
|
|
__webpack_require__(5);
|
|
|
|
/***/ }),
|
|
|
|
/***/ 5:
|
|
/***/ (function(module, exports) {
|
|
|
|
;(function(window){
|
|
/*! modernizr 3.5.0 (Custom Build) | MIT *
|
|
* https://modernizr.com/download/?-checked-csstransforms3d-dataset-details-fetch-json-svg-target-addtest-setclasses !*/
|
|
!function(e,t,n){function r(e,t){return typeof e===t}function i(){var e,t,n,i,o,s,a;for(var l in w)if(w.hasOwnProperty(l)){if(e=[],t=w[l],t.name&&(e.push(t.name.toLowerCase()),t.options&&t.options.aliases&&t.options.aliases.length))for(n=0;n<t.options.aliases.length;n++)e.push(t.options.aliases[n].toLowerCase());for(i=r(t.fn,"function")?t.fn():t.fn,o=0;o<e.length;o++)s=e[o],a=s.split("."),1===a.length?Modernizr[a[0]]=i:(!Modernizr[a[0]]||Modernizr[a[0]]instanceof Boolean||(Modernizr[a[0]]=new Boolean(Modernizr[a[0]])),Modernizr[a[0]][a[1]]=i),b.push((i?"":"no-")+a.join("-"))}}function o(e){var t=x.className,n=Modernizr._config.classPrefix||"";if(T&&(t=t.baseVal),Modernizr._config.enableJSClass){var r=new RegExp("(^|\\s)"+n+"no-js(\\s|$)");t=t.replace(r,"$1"+n+"js$2")}Modernizr._config.enableClasses&&(t+=" "+n+e.join(" "+n),T?x.className.baseVal=t:x.className=t)}function s(e,t){if("object"==typeof e)for(var n in e)_(e,n)&&s(n,e[n]);else{e=e.toLowerCase();var r=e.split("."),i=Modernizr[r[0]];if(2==r.length&&(i=i[r[1]]),"undefined"!=typeof i)return Modernizr;t="function"==typeof t?t():t,1==r.length?Modernizr[r[0]]=t:(!Modernizr[r[0]]||Modernizr[r[0]]instanceof Boolean||(Modernizr[r[0]]=new Boolean(Modernizr[r[0]])),Modernizr[r[0]][r[1]]=t),o([(t&&0!=t?"":"no-")+r.join("-")]),Modernizr._trigger(e,t)}return Modernizr}function a(){return"function"!=typeof t.createElement?t.createElement(arguments[0]):T?t.createElementNS.call(t,"http://www.w3.org/2000/svg",arguments[0]):t.createElement.apply(t,arguments)}function l(){var e=t.body;return e||(e=a(T?"svg":"body"),e.fake=!0),e}function u(e,n,r,i){var o,s,u,f,d="modernizr",c=a("div"),p=l();if(parseInt(r,10))for(;r--;)u=a("div"),u.id=i?i[r]:d+(r+1),c.appendChild(u);return o=a("style"),o.type="text/css",o.id="s"+d,(p.fake?p:c).appendChild(o),p.appendChild(c),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(t.createTextNode(e)),c.id=d,p.fake&&(p.style.background="",p.style.overflow="hidden",f=x.style.overflow,x.style.overflow="hidden",x.appendChild(p)),s=n(c,e),p.fake?(p.parentNode.removeChild(p),x.style.overflow=f,x.offsetHeight):c.parentNode.removeChild(c),!!s}function f(e,t){return!!~(""+e).indexOf(t)}function d(e){return e.replace(/([A-Z])/g,function(e,t){return"-"+t.toLowerCase()}).replace(/^ms-/,"-ms-")}function c(t,n,r){var i;if("getComputedStyle"in e){i=getComputedStyle.call(e,t,n);var o=e.console;if(null!==i)r&&(i=i.getPropertyValue(r));else if(o){var s=o.error?"error":"log";o[s].call(o,"getComputedStyle returning null, its possible modernizr test results are inaccurate")}}else i=!n&&t.currentStyle&&t.currentStyle[r];return i}function p(t,r){var i=t.length;if("CSS"in e&&"supports"in e.CSS){for(;i--;)if(e.CSS.supports(d(t[i]),r))return!0;return!1}if("CSSSupportsRule"in e){for(var o=[];i--;)o.push("("+d(t[i])+":"+r+")");return o=o.join(" or "),u("@supports ("+o+") { #modernizr { position: absolute; } }",function(e){return"absolute"==c(e,null,"position")})}return n}function h(e){return e.replace(/([a-z])-([a-z])/g,function(e,t,n){return t+n.toUpperCase()}).replace(/^-/,"")}function m(e,t,i,o){function s(){u&&(delete E.style,delete E.modElem)}if(o=r(o,"undefined")?!1:o,!r(i,"undefined")){var l=p(e,i);if(!r(l,"undefined"))return l}for(var u,d,c,m,g,v=["modernizr","tspan","samp"];!E.style&&v.length;)u=!0,E.modElem=a(v.shift()),E.style=E.modElem.style;for(c=e.length,d=0;c>d;d++)if(m=e[d],g=E.style[m],f(m,"-")&&(m=h(m)),E.style[m]!==n){if(o||r(i,"undefined"))return s(),"pfx"==t?m:!0;try{E.style[m]=i}catch(y){}if(E.style[m]!=g)return s(),"pfx"==t?m:!0}return s(),!1}function g(e,t){return function(){return e.apply(t,arguments)}}function v(e,t,n){var i;for(var o in e)if(e[o]in t)return n===!1?e[o]:(i=t[e[o]],r(i,"function")?g(i,n||t):i);return!1}function y(e,t,n,i,o){var s=e.charAt(0).toUpperCase()+e.slice(1),a=(e+" "+P.join(s+" ")+s).split(" ");return r(t,"string")||r(t,"undefined")?m(a,t,i,o):(a=(e+" "+A.join(s+" ")+s).split(" "),v(a,t,n))}function S(e,t,r){return y(e,n,n,t,r)}var w=[],C={_version:"3.5.0",_config:{classPrefix:"",enableClasses:!0,enableJSClass:!0,usePrefixes:!0},_q:[],on:function(e,t){var n=this;setTimeout(function(){t(n[e])},0)},addTest:function(e,t,n){w.push({name:e,fn:t,options:n})},addAsyncTest:function(e){w.push({name:null,fn:e})}},Modernizr=function(){};Modernizr.prototype=C,Modernizr=new Modernizr;var _,b=[],x=t.documentElement,T="svg"===x.nodeName.toLowerCase();!function(){var e={}.hasOwnProperty;_=r(e,"undefined")||r(e.call,"undefined")?function(e,t){return t in e&&r(e.constructor.prototype[t],"undefined")}:function(t,n){return e.call(t,n)}}(),C._l={},C.on=function(e,t){this._l[e]||(this._l[e]=[]),this._l[e].push(t),Modernizr.hasOwnProperty(e)&&setTimeout(function(){Modernizr._trigger(e,Modernizr[e])},0)},C._trigger=function(e,t){if(this._l[e]){var n=this._l[e];setTimeout(function(){var e,r;for(e=0;e<n.length;e++)(r=n[e])(t)},0),delete this._l[e]}},Modernizr._q.push(function(){C.addTest=s}),Modernizr.addTest("json","JSON"in e&&"parse"in JSON&&"stringify"in JSON),Modernizr.addTest("svg",!!t.createElementNS&&!!t.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect);var z=C.testStyles=u;Modernizr.addTest("checked",function(){return z("#modernizr {position:absolute} #modernizr input {margin-left:10px} #modernizr :checked {margin-left:20px;display:block}",function(e){var t=a("input");return t.setAttribute("type","checkbox"),t.setAttribute("checked","checked"),e.appendChild(t),20===t.offsetLeft})}),Modernizr.addTest("target",function(){var t=e.document;if(!("querySelectorAll"in t))return!1;try{return t.querySelectorAll(":target"),!0}catch(n){return!1}}),Modernizr.addTest("dataset",function(){var e=a("div");return e.setAttribute("data-a-b","c"),!(!e.dataset||"c"!==e.dataset.aB)}),Modernizr.addTest("details",function(){var e,t=a("details");return"open"in t?(z("#modernizr details{display:block}",function(n){n.appendChild(t),t.innerHTML="<summary>a</summary>b",e=t.offsetHeight,t.open=!0,e=e!=t.offsetHeight}),e):!1}),Modernizr.addTest("fetch","fetch"in e);var k="Moz O ms Webkit",P=C._config.usePrefixes?k.split(" "):[];C._cssomPrefixes=P;var N={elem:a("modernizr")};Modernizr._q.push(function(){delete N.elem});var E={style:N.elem.style};Modernizr._q.unshift(function(){delete E.style});var A=C._config.usePrefixes?k.toLowerCase().split(" "):[];C._domPrefixes=A,C.testAllProps=y,C.testAllProps=S;var j="CSS"in e&&"supports"in e.CSS,O="supportsCSS"in e;Modernizr.addTest("supports",j||O),Modernizr.addTest("csstransforms3d",function(){var e=!!S("perspective","1px",!0),t=Modernizr._config.usePrefixes;if(e&&(!t||"webkitPerspective"in x.style)){var n,r="#modernizr{width:0;height:0}";Modernizr.supports?n="@supports (perspective: 1px)":(n="@media (transform-3d)",t&&(n+=",(-webkit-transform-3d)")),n+="{#modernizr{width:7px;height:18px;margin:0;padding:0;border:0}}",z(r+n,function(t){e=7===t.offsetWidth&&18===t.offsetHeight})}return e}),i(),o(b),delete C.addTest,delete C.addAsyncTest;for(var q=0;q<Modernizr._q.length;q++)Modernizr._q[q]();e.Modernizr=Modernizr}(window,document);
|
|
module.exports = window.Modernizr;
|
|
})(window);
|
|
|
|
/***/ })
|
|
|
|
/******/ })));
|
|
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAgYTNkZDgwN2QiLCJ3ZWJwYWNrOi8vLy4vc3JjL2Fzc2V0cy9qYXZhc2NyaXB0cy9tb2Rlcm5penIuanMiLCJ3ZWJwYWNrOi8vLy4vLm1vZGVybml6ci1hdXRvcmMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBMkIsMEJBQTBCLEVBQUU7QUFDdkQseUNBQWlDLGVBQWU7QUFDaEQ7QUFDQTtBQUNBOztBQUVBO0FBQ0EsOERBQXNELCtEQUErRDs7QUFFckg7QUFDQTs7QUFFQTtBQUNBOzs7Ozs7Ozs7OztBQ3ZDQSx1Qjs7Ozs7OztBQ3RCQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBLGlCQUFpQixnQkFBZ0Isb0JBQW9CLGFBQWEsa0JBQWtCLHVDQUF1QyxxSEFBcUgsMkJBQTJCLCtDQUErQyx5Q0FBeUMsV0FBVyx5TkFBeU4sY0FBYyxzREFBc0QscURBQXFELDZDQUE2Qyw2QkFBNkIsZ0dBQWdHLGdCQUFnQix1REFBdUQsS0FBSyxrQkFBa0IscUNBQXFDLG1FQUFtRSxxUEFBcVAsaUJBQWlCLGFBQWEsZ0xBQWdMLGFBQWEsYUFBYSw0Q0FBNEMsb0JBQW9CLDJDQUEyQyx1QkFBdUIsSUFBSSxpREFBaUQsb1pBQW9aLGdCQUFnQiwyQkFBMkIsY0FBYywwQ0FBMEMsMEJBQTBCLHlCQUF5QixrQkFBa0IsTUFBTSwyQkFBMkIsK0JBQStCLGdCQUFnQix5Q0FBeUMsV0FBVyw0QkFBNEIsb0dBQW9HLDZDQUE2QyxTQUFTLGdCQUFnQixlQUFlLGtDQUFrQyxLQUFLLElBQUksdUNBQXVDLFNBQVMsMEJBQTBCLGFBQWEsSUFBSSwrQkFBK0IsOENBQThDLGFBQWEsb0JBQW9CLEVBQUUsRUFBRSxjQUFjLHVDQUF1QyxFQUFFLFNBQVMsY0FBYyxvREFBb0QseUJBQXlCLG1CQUFtQixvQkFBb0IsYUFBYSxxQ0FBcUMsOENBQThDLGFBQWEsOEJBQThCLGlEQUFpRCxtQkFBbUIscURBQXFELG1CQUFtQixJQUFJLDhEQUE4RCxnREFBZ0QsSUFBSSxhQUFhLFVBQVUsMENBQTBDLGNBQWMsZ0JBQWdCLGtCQUFrQiw2QkFBNkIsa0JBQWtCLE1BQU0sc0ZBQXNGLFNBQVMsc0JBQXNCLGdGQUFnRixrR0FBa0csa0JBQWtCLG9CQUFvQixZQUFZLDBCQUEwQixnRUFBZ0Usd0JBQXdCLFdBQVcsc0JBQXNCLFFBQVEsSUFBSSx5QkFBeUIsUUFBUSxzQkFBc0IsRUFBRSwwQkFBMEIsUUFBUSxlQUFlLEdBQUcsd0JBQXdCLDhDQUE4QyxrRUFBa0UsWUFBWSxRQUFRLGdCQUFnQix3REFBd0QseURBQXlELGVBQWUsb0JBQW9CLFVBQVUsb0JBQW9CLGtHQUFrRyxtQ0FBbUMsSUFBSSwwQkFBMEIsZUFBZSxpQkFBaUIsc0JBQXNCLFFBQVEsUUFBUSxXQUFXLGdCQUFnQix1QkFBdUIsOEJBQThCLFlBQVksK0xBQStMLHFCQUFxQix1Q0FBdUMsc0JBQXNCLGtCQUFrQixtQkFBbUIsaUJBQWlCLHNCQUFzQixpQkFBaUIsY0FBYyxjQUFjLGlCQUFpQixnSEFBZ0gsRUFBRSx3Q0FBd0MsaUJBQWlCLHNDQUFzQyxJQUFJLHdDQUF3QyxTQUFTLFVBQVUseUNBQXlDLGVBQWUsd0VBQXdFLHlDQUF5QyxxQkFBcUIsd0NBQXdDLGNBQWMsY0FBYyxvR0FBb0csUUFBUSx5Q0FBeUMsZ0VBQWdFLG1CQUFtQixPQUFPLHFCQUFxQiw2QkFBNkIsY0FBYyxFQUFFLE9BQU8sb0JBQW9CLGdDQUFnQyxlQUFlLEVBQUUsMERBQTBELG1EQUFtRCx3REFBd0Qsa0ZBQWtGLGtFQUFrRSwyQ0FBMkMsb0JBQW9CLFFBQVEsU0FBUyxFQUFFLHVIQUF1SCxXQUFXLFVBQVUsWUFBWSxTQUFTLFVBQVUsVUFBVSxvQkFBb0IseUNBQXlDLEVBQUUsU0FBUyxrREFBa0QsWUFBWSxzQkFBc0Isc0JBQXNCLHNCQUFzQjtBQUNoNE47QUFDQSxDQUFDLFUiLCJmaWxlIjoiYXNzZXRzL2phdmFzY3JpcHRzL21vZGVybml6ci5qcyIsInNvdXJjZXNDb250ZW50IjpbIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRcdH1cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuIFx0XHRcdFx0Y29uZmlndXJhYmxlOiBmYWxzZSxcbiBcdFx0XHRcdGVudW1lcmFibGU6IHRydWUsXG4gXHRcdFx0XHRnZXQ6IGdldHRlclxuIFx0XHRcdH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDQpO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHdlYnBhY2svYm9vdHN0cmFwIGEzZGQ4MDdkIiwiLypcbiAqIENvcHlyaWdodCAoYykgMjAxNi0yMDE4IE1hcnRpbiBEb25hdGggPG1hcnRpbi5kb25hdGhAc3F1aWRmdW5rLmNvbT5cbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0b1xuICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGVcbiAqIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vclxuICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbiAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkdcbiAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1NcbiAqIElOIFRIRSBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQgXCIuLi8uLi8uLi8ubW9kZXJuaXpyLWF1dG9yY1wiXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvYXNzZXRzL2phdmFzY3JpcHRzL21vZGVybml6ci5qcyIsIjsoZnVuY3Rpb24od2luZG93KXtcbi8qISBtb2Rlcm5penIgMy41LjAgKEN1c3RvbSBCdWlsZCkgfCBNSVQgKlxuICogaHR0cHM6Ly9tb2Rlcm5penIuY29tL2Rvd25sb2FkLz8tY2hlY2tlZC1jc3N0cmFuc2Zvcm1zM2QtZGF0YXNldC1kZXRhaWxzLWZldGNoLWpzb24tc3ZnLXRhcmdldC1hZGR0ZXN0LXNldGNsYXNzZXMgISovXG4hZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm4gdHlwZW9mIGU9PT10fWZ1bmN0aW9uIGkoKXt2YXIgZSx0LG4saSxvLHMsYTtmb3IodmFyIGwgaW4gdylpZih3Lmhhc093blByb3BlcnR5KGwpKXtpZihlPVtdLHQ9d1tsXSx0Lm5hbWUmJihlLnB1c2godC5uYW1lLnRvTG93ZXJDYXNlKCkpLHQub3B0aW9ucyYmdC5vcHRpb25zLmFsaWFzZXMmJnQub3B0aW9ucy5hbGlhc2VzLmxlbmd0aCkpZm9yKG49MDtuPHQub3B0aW9ucy5hbGlhc2VzLmxlbmd0aDtuKyspZS5wdXNoKHQub3B0aW9ucy5hbGlhc2VzW25dLnRvTG93ZXJDYXNlKCkpO2ZvcihpPXIodC5mbixcImZ1bmN0aW9uXCIpP3QuZm4oKTp0LmZuLG89MDtvPGUubGVuZ3RoO28rKylzPWVbb10sYT1zLnNwbGl0KFwiLlwiKSwxPT09YS5sZW5ndGg/TW9kZXJuaXpyW2FbMF1dPWk6KCFNb2Rlcm5penJbYVswXV18fE1vZGVybml6clthWzBdXWluc3RhbmNlb2YgQm9vbGVhbnx8KE1vZGVybml6clthWzBdXT1uZXcgQm9vbGVhbihNb2Rlcm5penJbYVswXV0pKSxNb2Rlcm5penJbYVswXV1bYVsxXV09aSksYi5wdXNoKChpP1wiXCI6XCJuby1cIikrYS5qb2luKFwiLVwiKSl9fWZ1bmN0aW9uIG8oZSl7dmFyIHQ9eC5jbGFzc05hbWUsbj1Nb2Rlcm5penIuX2NvbmZpZy5jbGFzc1ByZWZpeHx8XCJcIjtpZihUJiYodD10LmJhc2VWYWwpLE1vZGVybml6ci5fY29uZmlnLmVuYWJsZUpTQ2xhc3Mpe3ZhciByPW5ldyBSZWdFeHAoXCIoXnxcXFxccylcIituK1wibm8tanMoXFxcXHN8JClcIik7dD10LnJlcGxhY2UocixcIiQxXCIrbitcImpzJDJcIil9TW9kZXJuaXpyLl9jb25maWcuZW5hYmxlQ2xhc3NlcyYmKHQrPVwiIFwiK24rZS5qb2luKFwiIFwiK24pLFQ/eC5jbGFzc05hbWUuYmFzZVZhbD10OnguY2xhc3NOYW1lPXQpfWZ1bmN0aW9uIHMoZSx0KXtpZihcIm9iamVjdFwiPT10eXBlb2YgZSlmb3IodmFyIG4gaW4gZSlfKGUsbikmJnMobixlW25dKTtlbHNle2U9ZS50b0xvd2VyQ2FzZSgpO3ZhciByPWUuc3BsaXQoXCIuXCIpLGk9TW9kZXJuaXpyW3JbMF1dO2lmKDI9PXIubGVuZ3RoJiYoaT1pW3JbMV1dKSxcInVuZGVmaW5lZFwiIT10eXBlb2YgaSlyZXR1cm4gTW9kZXJuaXpyO3Q9XCJmdW5jdGlvblwiPT10eXBlb2YgdD90KCk6dCwxPT1yLmxlbmd0aD9Nb2Rlcm5penJbclswXV09dDooIU1vZGVybml6cltyWzBdXXx8TW9kZXJuaXpyW3JbMF1daW5zdGFuY2VvZiBCb29sZWFufHwoTW9kZXJuaXpyW3JbMF1dPW5ldyBCb29sZWFuKE1vZGVybml6cltyWzBdXSkpLE1vZGVybml6cltyWzBdXVtyWzFdXT10KSxvKFsodCYmMCE9dD9cIlwiOlwibm8tXCIpK3Iuam9pbihcIi1cIildKSxNb2Rlcm5penIuX3RyaWdnZXIoZSx0KX1yZXR1cm4gTW9kZXJuaXpyfWZ1bmN0aW9uIGEoKXtyZXR1cm5cImZ1bmN0aW9uXCIhPXR5cGVvZiB0LmNyZWF0ZUVsZW1lbnQ/dC5jcmVhdGVFbGVtZW50KGFyZ3VtZW50c1swXSk6VD90LmNyZWF0ZUVsZW1lbnROUy5jYWxsKHQsXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLGFyZ3VtZW50c1swXSk6dC5jcmVhdGVFbGVtZW50LmFwcGx5KHQsYXJndW1lbnRzKX1mdW5jdGlvbiBsKCl7dmFyIGU9dC5ib2R5O3JldHVybiBlfHwoZT1hKFQ/XCJzdmdcIjpcImJvZHlcIiksZS5mYWtlPSEwKSxlfWZ1bmN0aW9uIHUoZSxuLHIsaSl7dmFyIG8scyx1LGYsZD1cIm1vZGVybml6clwiLGM9YShcImRpdlwiKSxwPWwoKTtpZihwYXJzZUludChyLDEwKSlmb3IoO3ItLTspdT1hKFwiZGl2XCIpLHUuaWQ9aT9pW3JdOmQrKHIrMSksYy5hcHBlbmRDaGlsZCh1KTtyZXR1cm4gbz1hKFwic3R5bGVcIiksby50eXBlPVwidGV4dC9jc3NcIixvLmlkPVwic1wiK2QsKHAuZmFrZT9wOmMpLmFwcGVuZENoaWxkKG8pLHAuYXBwZW5kQ2hpbGQoYyksby5zdHlsZVNoZWV0P28uc3R5bGVTaGVldC5jc3NUZXh0PWU6by5hcHBlbmRDaGlsZCh0LmNyZWF0ZVRleHROb2RlKGUpKSxjLmlkPWQscC5mYWtlJiYocC5zdHlsZS5iYWNrZ3JvdW5kPVwiXCIscC5zdHlsZS5vdmVyZmxvdz1cImhpZGRlblwiLGY9eC5zdHlsZS5vdmVyZmxvdyx4LnN0eWxlLm92ZXJmbG93PVwiaGlkZGVuXCIseC5hcHBlbmRDaGlsZChwKSkscz1uKGMsZSkscC5mYWtlPyhwLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQocCkseC5zdHlsZS5vdmVyZmxvdz1mLHgub2Zmc2V0SGVpZ2h0KTpjLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYyksISFzfWZ1bmN0aW9uIGYoZSx0KXtyZXR1cm4hIX4oXCJcIitlKS5pbmRleE9mKHQpfWZ1bmN0aW9uIGQoZSl7cmV0dXJuIGUucmVwbGFjZSgvKFtBLVpdKS9nLGZ1bmN0aW9uKGUsdCl7cmV0dXJuXCItXCIrdC50b0xvd2VyQ2FzZSgpfSkucmVwbGFjZSgvXm1zLS8sXCItbXMtXCIpfWZ1bmN0aW9uIGModCxuLHIpe3ZhciBpO2lmKFwiZ2V0Q29tcHV0ZWRTdHlsZVwiaW4gZSl7aT1nZXRDb21wdXRlZFN0eWxlLmNhbGwoZSx0LG4pO3ZhciBvPWUuY29uc29sZTtpZihudWxsIT09aSlyJiYoaT1pLmdldFByb3BlcnR5VmFsdWUocikpO2Vsc2UgaWYobyl7dmFyIHM9by5lcnJvcj9cImVycm9yXCI6XCJsb2dcIjtvW3NdLmNhbGwobyxcImdldENvbXB1dGVkU3R5bGUgcmV0dXJuaW5nIG51bGwsIGl0cyBwb3NzaWJsZSBtb2Rlcm5penIgdGVzdCByZXN1bHRzIGFyZSBpbmFjY3VyYXRlXCIpfX1lbHNlIGk9IW4mJnQuY3VycmVudFN0eWxlJiZ0LmN1cnJlbnRTdHlsZVtyXTtyZXR1cm4gaX1mdW5jdGlvbiBwKHQscil7dmFyIGk9dC5sZW5ndGg7aWYoXCJDU1NcImluIGUmJlwic3VwcG9ydHNcImluIGUuQ1NTKXtmb3IoO2ktLTspaWYoZS5DU1Muc3VwcG9ydHMoZCh0W2ldKSxyKSlyZXR1cm4hMDtyZXR1cm4hMX1pZihcIkNTU1N1cHBvcnRzUnVsZVwiaW4gZSl7Zm9yKHZhciBvPVtdO2ktLTspby5wdXNoKFwiKFwiK2QodFtpXSkrXCI6XCIrcitcIilcIik7cmV0dXJuIG89by5qb2luKFwiIG9yIFwiKSx1KFwiQHN1cHBvcnRzIChcIitvK1wiKSB7ICNtb2Rlcm5penIgeyBwb3NpdGlvbjogYWJzb2x1dGU7IH0gfVwiLGZ1bmN0aW9uKGUpe3JldHVyblwiYWJzb2x1dGVcIj09YyhlLG51bGwsXCJwb3NpdGlvblwiKX0pfXJldHVybiBufWZ1bmN0aW9uIGgoZSl7cmV0dXJuIGUucmVwbGFjZSgvKFthLXpdKS0oW2Etel0pL2csZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0K24udG9VcHBlckNhc2UoKX0pLnJlcGxhY2UoL14tLyxcIlwiKX1mdW5jdGlvbiBtKGUsdCxpLG8pe2Z1bmN0aW9uIHMoKXt1JiYoZGVsZXRlIEUuc3R5bGUsZGVsZXRlIEUubW9kRWxlbSl9aWYobz1yKG8sXCJ1bmRlZmluZWRcIik/ITE6bywhcihpLFwidW5kZWZpbmVkXCIpKXt2YXIgbD1wKGUsaSk7aWYoIXIobCxcInVuZGVmaW5lZFwiKSlyZXR1cm4gbH1mb3IodmFyIHUsZCxjLG0sZyx2PVtcIm1vZGVybml6clwiLFwidHNwYW5cIixcInNhbXBcIl07IUUuc3R5bGUmJnYubGVuZ3RoOyl1PSEwLEUubW9kRWxlbT1hKHYuc2hpZnQoKSksRS5zdHlsZT1FLm1vZEVsZW0uc3R5bGU7Zm9yKGM9ZS5sZW5ndGgsZD0wO2M+ZDtkKyspaWYobT1lW2RdLGc9RS5zdHlsZVttXSxmKG0sXCItXCIpJiYobT1oKG0pKSxFLnN0eWxlW21dIT09bil7aWYob3x8cihpLFwidW5kZWZpbmVkXCIpKXJldHVybiBzKCksXCJwZnhcIj09dD9tOiEwO3RyeXtFLnN0eWxlW21dPWl9Y2F0Y2goeSl7fWlmKEUuc3R5bGVbbV0hPWcpcmV0dXJuIHMoKSxcInBmeFwiPT10P206ITB9cmV0dXJuIHMoKSwhMX1mdW5jdGlvbiBnKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGUuYXBwbHkodCxhcmd1bWVudHMpfX1mdW5jdGlvbiB2KGUsdCxuKXt2YXIgaTtmb3IodmFyIG8gaW4gZSlpZihlW29daW4gdClyZXR1cm4gbj09PSExP2Vbb106KGk9dFtlW29dXSxyKGksXCJmdW5jdGlvblwiKT9nKGksbnx8dCk6aSk7cmV0dXJuITF9ZnVuY3Rpb24geShlLHQsbixpLG8pe3ZhciBzPWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrZS5zbGljZSgxKSxhPShlK1wiIFwiK1Auam9pbihzK1wiIFwiKStzKS5zcGxpdChcIiBcIik7cmV0dXJuIHIodCxcInN0cmluZ1wiKXx8cih0LFwidW5kZWZpbmVkXCIpP20oYSx0LGksbyk6KGE9KGUrXCIgXCIrQS5qb2luKHMrXCIgXCIpK3MpLnNwbGl0KFwiIFwiKSx2KGEsdCxuKSl9ZnVuY3Rpb24gUyhlLHQscil7cmV0dXJuIHkoZSxuLG4sdCxyKX12YXIgdz1bXSxDPXtfdmVyc2lvbjpcIjMuNS4wXCIsX2NvbmZpZzp7Y2xhc3NQcmVmaXg6XCJcIixlbmFibGVDbGFzc2VzOiEwLGVuYWJsZUpTQ2xhc3M6ITAsdXNlUHJlZml4ZXM6ITB9LF9xOltdLG9uOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcztzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dChuW2VdKX0sMCl9LGFkZFRlc3Q6ZnVuY3Rpb24oZSx0LG4pe3cucHVzaCh7bmFtZTplLGZuOnQsb3B0aW9uczpufSl9LGFkZEFzeW5jVGVzdDpmdW5jdGlvbihlKXt3LnB1c2goe25hbWU6bnVsbCxmbjplfSl9fSxNb2Rlcm5penI9ZnVuY3Rpb24oKXt9O01vZGVybml6ci5wcm90b3R5cGU9QyxNb2Rlcm5penI9bmV3IE1vZGVybml6cjt2YXIgXyxiPVtdLHg9dC5kb2N1bWVudEVsZW1lbnQsVD1cInN2Z1wiPT09eC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOyFmdW5jdGlvbigpe3ZhciBlPXt9Lmhhc093blByb3BlcnR5O189cihlLFwidW5kZWZpbmVkXCIpfHxyKGUuY2FsbCxcInVuZGVmaW5lZFwiKT9mdW5jdGlvbihlLHQpe3JldHVybiB0IGluIGUmJnIoZS5jb25zdHJ1Y3Rvci5wcm90b3R5cGVbdF0sXCJ1bmRlZmluZWRcIil9OmZ1bmN0aW9uKHQsbil7cmV0dXJuIGUuY2FsbCh0LG4pfX0oKSxDLl9sPXt9LEMub249ZnVuY3Rpb24oZSx0KXt0aGlzLl9sW2VdfHwodGhpcy5fbFtlXT1bXSksdGhpcy5fbFtlXS5wdXNoKHQpLE1vZGVybml6ci5oYXNPd25Qcm9wZXJ0eShlKSYmc2V0VGltZW91dChmdW5jdGlvbigpe01vZGVybml6ci5fdHJpZ2dlcihlLE1vZGVybml6cltlXSl9LDApfSxDLl90cmlnZ2VyPWZ1bmN0aW9uKGUsdCl7aWYodGhpcy5fbFtlXSl7dmFyIG49dGhpcy5fbFtlXTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIGUscjtmb3IoZT0wO2U8bi5sZW5ndGg7ZSsrKShyPW5bZV0pKHQpfSwwKSxkZWxldGUgdGhpcy5fbFtlXX19LE1vZGVybml6ci5fcS5wdXNoKGZ1bmN0aW9uKCl7Qy5hZGRUZXN0PXN9KSxNb2Rlcm5penIuYWRkVGVzdChcImpzb25cIixcIkpTT05cImluIGUmJlwicGFyc2VcImluIEpTT04mJlwic3RyaW5naWZ5XCJpbiBKU09OKSxNb2Rlcm5penIuYWRkVGVzdChcInN2Z1wiLCEhdC5jcmVhdGVFbGVtZW50TlMmJiEhdC5jcmVhdGVFbGVtZW50TlMoXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFwic3ZnXCIpLmNyZWF0ZVNWR1JlY3QpO3ZhciB6PUMudGVzdFN0eWxlcz11O01vZGVybml6ci5hZGRUZXN0KFwiY2hlY2tlZFwiLGZ1bmN0aW9uKCl7cmV0dXJuIHooXCIjbW9kZXJuaXpyIHtwb3NpdGlvbjphYnNvbHV0ZX0gI21vZGVybml6ciBpbnB1dCB7bWFyZ2luLWxlZnQ6MTBweH0gI21vZGVybml6ciA6Y2hlY2tlZCB7bWFyZ2luLWxlZnQ6MjBweDtkaXNwbGF5OmJsb2NrfVwiLGZ1bmN0aW9uKGUpe3ZhciB0PWEoXCJpbnB1dFwiKTtyZXR1cm4gdC5zZXRBdHRyaWJ1dGUoXCJ0eXBlXCIsXCJjaGVja2JveFwiKSx0LnNldEF0dHJpYnV0ZShcImNoZWNrZWRcIixcImNoZWNrZWRcIiksZS5hcHBlbmRDaGlsZCh0KSwyMD09PXQub2Zmc2V0TGVmdH0pfSksTW9kZXJuaXpyLmFkZFRlc3QoXCJ0YXJnZXRcIixmdW5jdGlvbigpe3ZhciB0PWUuZG9jdW1lbnQ7aWYoIShcInF1ZXJ5U2VsZWN0b3JBbGxcImluIHQpKXJldHVybiExO3RyeXtyZXR1cm4gdC5xdWVyeVNlbGVjdG9yQWxsKFwiOnRhcmdldFwiKSwhMH1jYXRjaChuKXtyZXR1cm4hMX19KSxNb2Rlcm5penIuYWRkVGVzdChcImRhdGFzZXRcIixmdW5jdGlvbigpe3ZhciBlPWEoXCJkaXZcIik7cmV0dXJuIGUuc2V0QXR0cmlidXRlKFwiZGF0YS1hLWJcIixcImNcIiksISghZS5kYXRhc2V0fHxcImNcIiE9PWUuZGF0YXNldC5hQil9KSxNb2Rlcm5penIuYWRkVGVzdChcImRldGFpbHNcIixmdW5jdGlvbigpe3ZhciBlLHQ9YShcImRldGFpbHNcIik7cmV0dXJuXCJvcGVuXCJpbiB0Pyh6KFwiI21vZGVybml6ciBkZXRhaWxze2Rpc3BsYXk6YmxvY2t9XCIsZnVuY3Rpb24obil7bi5hcHBlbmRDaGlsZCh0KSx0LmlubmVySFRNTD1cIjxzdW1tYXJ5PmE8L3N1bW1hcnk+YlwiLGU9dC5vZmZzZXRIZWlnaHQsdC5vcGVuPSEwLGU9ZSE9dC5vZmZzZXRIZWlnaHR9KSxlKTohMX0pLE1vZGVybml6ci5hZGRUZXN0KFwiZmV0Y2hcIixcImZldGNoXCJpbiBlKTt2YXIgaz1cIk1veiBPIG1zIFdlYmtpdFwiLFA9Qy5fY29uZmlnLnVzZVByZWZpeGVzP2suc3BsaXQoXCIgXCIpOltdO0MuX2Nzc29tUHJlZml4ZXM9UDt2YXIgTj17ZWxlbTphKFwibW9kZXJuaXpyXCIpfTtNb2Rlcm5penIuX3EucHVzaChmdW5jdGlvbigpe2RlbGV0ZSBOLmVsZW19KTt2YXIgRT17c3R5bGU6Ti5lbGVtLnN0eWxlfTtNb2Rlcm5penIuX3EudW5zaGlmdChmdW5jdGlvbigpe2RlbGV0ZSBFLnN0eWxlfSk7dmFyIEE9Qy5fY29uZmlnLnVzZVByZWZpeGVzP2sudG9Mb3dlckNhc2UoKS5zcGxpdChcIiBcIik6W107Qy5fZG9tUHJlZml4ZXM9QSxDLnRlc3RBbGxQcm9wcz15LEMudGVzdEFsbFByb3BzPVM7dmFyIGo9XCJDU1NcImluIGUmJlwic3VwcG9ydHNcImluIGUuQ1NTLE89XCJzdXBwb3J0c0NTU1wiaW4gZTtNb2Rlcm5penIuYWRkVGVzdChcInN1cHBvcnRzXCIsanx8TyksTW9kZXJuaXpyLmFkZFRlc3QoXCJjc3N0cmFuc2Zvcm1zM2RcIixmdW5jdGlvbigpe3ZhciBlPSEhUyhcInBlcnNwZWN0aXZlXCIsXCIxcHhcIiwhMCksdD1Nb2Rlcm5penIuX2NvbmZpZy51c2VQcmVmaXhlcztpZihlJiYoIXR8fFwid2Via2l0UGVyc3BlY3RpdmVcImluIHguc3R5bGUpKXt2YXIgbixyPVwiI21vZGVybml6cnt3aWR0aDowO2hlaWdodDowfVwiO01vZGVybml6ci5zdXBwb3J0cz9uPVwiQHN1cHBvcnRzIChwZXJzcGVjdGl2ZTogMXB4KVwiOihuPVwiQG1lZGlhICh0cmFuc2Zvcm0tM2QpXCIsdCYmKG4rPVwiLCgtd2Via2l0LXRyYW5zZm9ybS0zZClcIikpLG4rPVwieyNtb2Rlcm5penJ7d2lkdGg6N3B4O2hlaWdodDoxOHB4O21hcmdpbjowO3BhZGRpbmc6MDtib3JkZXI6MH19XCIseihyK24sZnVuY3Rpb24odCl7ZT03PT09dC5vZmZzZXRXaWR0aCYmMTg9PT10Lm9mZnNldEhlaWdodH0pfXJldHVybiBlfSksaSgpLG8oYiksZGVsZXRlIEMuYWRkVGVzdCxkZWxldGUgQy5hZGRBc3luY1Rlc3Q7Zm9yKHZhciBxPTA7cTxNb2Rlcm5penIuX3EubGVuZ3RoO3ErKylNb2Rlcm5penIuX3FbcV0oKTtlLk1vZGVybml6cj1Nb2Rlcm5penJ9KHdpbmRvdyxkb2N1bWVudCk7XG5tb2R1bGUuZXhwb3J0cyA9IHdpbmRvdy5Nb2Rlcm5penI7XG59KSh3aW5kb3cpO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vLm1vZGVybml6ci1hdXRvcmNcbi8vIG1vZHVsZSBpZCA9IDVcbi8vIG1vZHVsZSBjaHVua3MgPSAxIl0sInNvdXJjZVJvb3QiOiIifQ==
|