vendor: 3,594 bytes, lines 1-88
1/******/ (function(modules) { // webpackBootstrap 2/******/ // The module cache 3/******/ var installedModules = {}; 4/******/ 5/******/ // The require function 6/******/ function __webpack_require__(moduleId) { 7/******/ 8/******/ // Check if module is in cache 9/******/ if(installedModules[moduleId]) { 10/******/ return installedModules[moduleId].exports; 11/******/ } 12/******/ // Create a new module (and put it into the cache) 13/******/ var module = installedModules[moduleId] = { 14/******/ i: moduleId, 15/******/ l: false, 16/******/ exports: {} 17/******/ }; 18/******/ 19/******/ // Execute the module function 20/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21/******/ 22/******/ // Flag the module as loaded 23/******/ module.l = true; 24/******/ 25/******/ // Return the exports of the module 26/******/ return module.exports; 27/******/ } 28/******/ 29/******/ 30/******/ // expose the modules object (__webpack_modules__) 31/******/ __webpack_require__.m = modules; 32/******/ 33/******/ // expose the module cache 34/******/ __webpack_require__.c = installedModules; 35/******/ 36/******/ // define getter function for harmony exports 37/******/ __webpack_require__.d = function(exports, name, getter) { 38/******/ if(!__webpack_require__.o(exports, name)) { 39/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); 40/******/ } 41/******/ }; 42/******/ 43/******/ // define __esModule on exports 44/******/ __webpack_require__.r = function(exports) { 45/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 46/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 47/******/ } 48/******/ Object.defineProperty(exports, '__esModule', { value: true }); 49/******/ }; 50/******/ 51/******/ // create a fake namespace object 52/******/ // mode & 1: value is a module id, require it 53/******/ // mode & 2: merge all properties of value into the ns 54/******/ // mode & 4: return value when already ns object 55/******/ // mode & 8|1: behave like require 56/******/ __webpack_require__.t = function(value, mode) { 57/******/ if(mode & 1) value = __webpack_require__(value); 58/******/ if(mode & 8) return value; 59/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; 60/******/ var ns = Object.create(null); 61/******/ __webpack_require__.r(ns); 62/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); 63/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); 64/******/ return ns; 65/******/ }; 66/******/ 67/******/ // getDefaultExport function for compatibility with non-harmony modules 68/******/ __webpack_require__.n = function(module) { 69/******/ var getter = module && module.__esModule ? 70/******/ function getDefault() { return module['default']; } : 71/******/ function getModuleExports() { return module; }; 72/******/ __webpack_require__.d(getter, 'a', getter); 73/******/ return getter; 74/******/ }; 75/******/ 76/******/ // Object.prototype.hasOwnProperty.call 77/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; 78/******/ 79/******/ // __webpack_public_path__ 80/******/ __webpack_require__.p = ""; 81/******/ 82/******/ 83/******/ // Load entry module and return exports 84/******/ return __webpack_require__(__webpack_require__.s = 0); 85/******/ }) 86/************************************************************************/ 87/******/ ({ 88
89/***/ "../js/scripts.js": 90/*!************************!*\ 91 !*** ../js/scripts.js ***! 92 \************************/ 93/*! no static exports found */ 94/***/ (function(module, exports, __webpack_require__) { 95 96var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* jQuery elevateZoom 3.0.8 - Demo's and documentation: - www.elevateweb.co.uk/image-zoom - Copyright (c) 2013 Andrew Eades - www.elevateweb.co.uk - Dual licensed under the LGPL licenses. - http://en.wikipedia.org/wiki/MIT_License - http://en.wikipedia.org/wiki/GNU_General_Public_License */ 97"function"!==typeof Object.create&&(Object.create=function(d){function h(){}h.prototype=d;return new h}); 98(function(d,h,l,m){var k={init:function(b,a){var c=this;c.elem=a;c.$elem=d(a);c.imageSrc=c.$elem.data("zoom-image")?c.$elem.data("zoom-image"):c.$elem.attr("src");c.options=d.extend({},d.fn.elevateZoom.options,b);c.options.tint&&(c.options.lensColour="none",c.options.lensOpacity="1");"inner"==c.options.zoomType&&(c.options.showLens=!1);c.$elem.parent().removeAttr("title").removeAttr("alt");c.zoomImage=c.imageSrc;c.refresh(1);d("#"+c.options.gallery+" a").click(function(a){c.options.galleryActiveClass&& 99(d("#"+c.options.gallery+" a").removeClass(c.options.galleryActiveClass),d(this).addClass(c.options.galleryActiveClass));a.preventDefault();d(this).data("zoom-image")?c.zoomImagePre=d(this).data("zoom-image"):c.zoomImagePre=d(this).data("image");c.swaptheimage(d(this).data("image"),c.zoomImagePre);return!1})},refresh:function(b){var a=this;setTimeout(function(){a.fetch(a.imageSrc)},b||a.options.refresh)},fetch:function(b){var a=this,c=new Image;c.onload=function(){a.largeWidth=c.width;a.largeHeight= 100c.height;a.startZoom();a.currentImage=a.imageSrc;a.options.onZoomedImageLoaded(a.$elem)};c.src=b},startZoom:function(){var b=this;b.nzWidth=b.$elem.width();b.nzHeight=b.$elem.height();b.isWindowActive=!1;b.isLensActive=!1;b.isTintActive=!1;b.overWindow=!1;b.options.imageCrossfade&&(b.zoomWrap=b.$elem.wrap('<div style="height:'+b.nzHeight+"px;width:"+b.nzWidth+'px;" class="zoomWrapper" />'),b.$elem.css("position","absolute"));b.zoomLock=1;b.scrollingLock=!1;b.changeBgSize=!1;b.currentZoomLevel=b.options.zoomLevel; 101b.nzOffset=b.$elem.offset();b.widthRatio=b.largeWidth/b.currentZoomLevel/b.nzWidth;b.heightRatio=b.largeHeight/b.currentZoomLevel/b.nzHeight;"window"==b.options.zoomType&&(b.zoomWindowStyle="overflow: hidden;background-position: 0px 0px;text-align:center;background-color: "+String(b.options.zoomWindowBgColour)+";width: "+String(b.options.zoomWindowWidth)+"px;height: "+String(b.options.zoomWindowHeight)+"px;float: left;background-size: "+b.largeWidth/b.currentZoomLevel+"px "+b.largeHeight/b.currentZoomLevel+ 102"px;display: none;z-index:100;border: "+String(b.options.borderSize)+"px solid "+b.options.borderColour+";background-repeat: no-repeat;position: absolute;");if("inner"==b.options.zoomType){var a=b.$elem.css("border-left-width");b.zoomWindowStyle="overflow: hidden;margin-left: "+String(a)+";margin-top: "+String(a)+";background-position: 0px 0px;width: "+String(b.nzWidth)+"px;height: "+String(b.nzHeight)+"px;float: left;display: none;cursor:"+b.options.cursor+";px solid "+b.options.borderColour+";background-repeat: no-repeat;position: absolute;"}"window"== 103b.options.zoomType&&(lensHeight=b.nzHeight<b.options.zoomWindowWidth/b.widthRatio?b.nzHeight:String(b.options.zoomWindowHeight/b.heightRatio),lensWidth=b.largeWidth<b.options.zoomWindowWidth?b.nzWidth:b.options.zoomWindowWidth/b.widthRatio,b.lensStyle="background-position: 0px 0px;width: "+String(b.options.zoomWindowWidth/b.widthRatio)+"px;height: "+String(b.options.zoomWindowHeight/b.heightRatio)+"px;float: right;display: none;overflow: hidden;z-index: 999;-webkit-transform: translateZ(0);opacity:"+ 104b.options.lensOpacity+";filter: alpha(opacity = "+100*b.options.lensOpacity+"); zoom:1;width:"+lensWidth+"px;height:"+lensHeight+"px;background-color:"+b.options.lensColour+";cursor:"+b.options.cursor+";border: "+b.options.lensBorderSize+"px solid "+b.options.lensBorderColour+";background-repeat: no-repeat;position: absolute;");b.tintStyle="display: block;position: absolute;background-color: "+b.options.tintColour+";filter:alpha(opacity=0);opacity: 0;width: "+b.nzWidth+"px;height: "+b.nzHeight+"px;"; 105b.lensRound="";"lens"==b.options.zoomType&&(b.lensStyle="background-position: 0px 0px;float: left;display: none;border: "+String(b.options.borderSize)+"px solid "+b.options.borderColour+";width:"+String(b.options.lensSize)+"px;height:"+String(b.options.lensSize)+"px;background-repeat: no-repeat;position: absolute;");"round"==b.options.lensShape&&(b.lensRound="border-top-left-radius: "+String(b.options.lensSize/2+b.options.borderSize)+"px;border-top-right-radius: "+String(b.options.lensSize/2+b.options.borderSize)+ 106"px;border-bottom-left-radius: "+String(b.options.lensSize/2+b.options.borderSize)+"px;border-bottom-right-radius: "+String(b.options.lensSize/2+b.options.borderSize)+"px;");b.zoomContainer=d('<div class="zoomContainer" style="-webkit-transform: translateZ(0);position:absolute;
106left:'+b.nzOffset.left+"px;top:"+b.nzOffset.top+"px;height:"+b.nzHeight+"px;width:"+b.nzWidth+'px;"></div>');d("body").append(b.zoomContainer);b.options.containLensZoom&&"lens"==b.options.zoomType&&b.zoomContainer.css("overflow", 107"hidden");"inner"!=b.options.zoomType&&(b.zoomLens=d("<div class='zoomLens' style='"+b.lensStyle+b.lensRound+"'> </div>").appendTo(b.zoomContainer).click(function(){b.$elem.trigger("click")}),b.options.tint&&(b.tintContainer=d("<div/>").addClass("tintContainer"),b.zoomTint=d("<div class='zoomTint' style='"+b.tintStyle+"'></div>"),b.zoomLens.wrap(b.tintContainer),b.zoomTintcss=b.zoomLens.after(b.zoomTint),b.zoomTintImage=d('<img style="position: absolute; left: 0px; top: 0px; max-width: none; width: '+ 108b.nzWidth+"px; height: "+b.nzHeight+'px;" src="'+b.imageSrc+'">').appendTo(b.zoomLens).click(function(){b.$elem.trigger("click")})));isNaN(b.options.zoomWindowPosition)?b.zoomWindow=d("<div style='z-index:999;left:"+b.windowOffsetLeft+"px;top:"+b.windowOffsetTop+"px;"+b.zoomWindowStyle+"' class='zoomWindow'> </div>").appendTo("body").click(function(){b.$elem.trigger("click")}):b.zoomWindow=d("<div style='z-index:999;left:"+b.windowOffsetLeft+"px;top:"+b.windowOffsetTop+"px;"+b.zoomWindowStyle+ 109"' class='zoomWindow'> </div>").appendTo(b.zoomContainer).click(function(){b.$elem.trigger("click")});b.zoomWindowContainer=d("<div/>").addClass("zoomWindowContainer").css("width",b.options.zoomWindowWidth);b.zoomWindow.wrap(b.zoomWindowContainer);"lens"==b.options.zoomType&&b.zoomLens.css({backgroundImage:"url('"+b.imageSrc+"')"});"window"==b.options.zoomType&&b.zoomWindow.css({backgroundImage:"url('"+b.imageSrc+"')"});"inner"==b.options.zoomType&&b.zoomWindow.css({backgroundImage:"url('"+b.imageSrc+ 110"')"});b.$elem.bind("touchmove",function(a){a.preventDefault();b.setPosition(a.originalEvent.touches[0]||a.originalEvent.changedTouches[0])});b.zoomContainer.bind("touchmove",function(a){"inner"==b.options.zoomType&&b.showHideWindow("show");a.preventDefault();b.setPosition(a.originalEvent.touches[0]||a.originalEvent.changedTouches[0])});b.zoomContainer.bind("touchend",function(a){b.showHideWindow("hide");b.options.showLens&&b.showHideLens("hide");b.options.tint&&"inner"!=b.options.zoomType&&b.showHideTint("hide")}); 111b.$elem.bind("touchend",function(a){b.showHideWindow("hide");b.options.showLens&&b.showHideLens("hide");b.options.tint&&"inner"!=b.options.zoomType&&b.showHideTint("hide")});b.options.showLens&&(b.zoomLens.bind("touchmove",function(a){a.preventDefault();b.setPosition(a.originalEvent.touches[0]||a.originalEvent.changedTouches[0])}),b.zoomLens.bind("touchend",function(a){b.showHideWindow("hide");b.options.showLens&&b.showHideLens("hide");b.options.tint&&"inner"!=b.options.zoomType&&b.showHideTint("hide")})); 112b.$elem.bind("mousemove",function(a){!1==b.overWindow&&b.setElements("show");if(b.lastX!==a.clientX||b.lastY!==a.clientY)b.setPosition(a),b.currentLoc=a;b.lastX=a.clientX;b.lastY=a.clientY});b.zoomContainer.bind("mousemove",function(a){!1==b.overWindow&&b.setElements("show");if(b.lastX!==a.clientX||b.lastY!==a.clientY)b.setPosition(a),b.currentLoc=a;b.lastX=a.clientX;b.lastY=a.clientY});"inner"!=b.options.zoomType&&b.zoomLens.bind("mousemove",function(a){if(b.lastX!==a.clientX||b.lastY!==a.clientY)b.setPosition(a), 113b.currentLoc=a;b.lastX=a.clientX;b.lastY=a.clientY});b.options.tint&&"inner"!=b.options.zoomType&&b.zoomTint.bind("mousemove",function(a){if(b.lastX!==a.clientX||b.lastY!==a.clientY)b.setPosition(a),b.currentLoc=a;b.lastX=a.clientX;b.lastY=a.clientY});"inner"==b.options.zoomType&&b.zoomWindow.bind("mousemove",function(a){if(b.lastX!==a.clientX||b.lastY!==a.clientY)b.setPosition(a),b.currentLoc=a;b.lastX=a.clientX;b.lastY=a.clientY});b.zoomContainer.add(b.$elem).mouseenter(function(){!1==b.overWindow&& 114b.setElements("show")}).mouseleave(function(){b.scrollLock||b.setElements("hide")});"inner"!=b.options.zoomType&&b.zoomWindow.mouseenter(function(){b.overWindow=!0;b.setElements("hide")}).mouseleave(function(){b.overWindow=!1});b.minZoomLevel=b.options.minZoomLevel?b.options.minZoomLevel:2*b.options.scrollZoomIncrement;b.options.scrollZoom&&b.zoomContainer.add(b.$elem).bind("mousewheel DOMMouseScroll MozMousePixelScroll",function(a){b.scrollLock=!0;clearTimeout(d.data(this,"timer"));d.data(this,"timer", 115setTimeout(function(){b.scrollLock=!1},250));var e=a.originalEvent.wheelDelta||-1*a.originalEvent.detail;a.stopImmediatePropagation();a.stopPropagation();a.preventDefault();0<e/120?b.currentZoomLevel>=b.minZoomLevel&&b.changeZoomLevel(b.currentZoomLevel-b.options.scrollZoomIncrement):b.options.maxZoomLevel?b.currentZoomLevel<=b.options.maxZoomLevel&&b.changeZoomLevel(parseFloat(b.currentZoomLevel)+b.options.scrollZoomIncrement):b.changeZoomLevel(parseFloat(b.currentZoomLevel)+b.options.scrollZoomIncrement); 116return!1})},setElements:function(b){if(!this.options.zoomEnabled)return!1;"show"==b&&this.isWindowSet&&("inner"==this.options.zoomType&&this.showHideWindow("show"),"window"==this.options.zoomType&&this.showHideWindow("show"),this.options.showLens&&this.showHideLens("show"),this.options.tint&&"inner"!=this.options.zoomType&&this.showHideTint("show"));"hide"==b&&("window"==this.options.zoomType&&this.showHideWindow("hide"),this.options.tint||this.showHideWindow("hide"),this.options.showLens&&this.showHideLens("hide"), 117this.options.tint&&this.showHideTint("hide"))},setPosition:function(b){if(!this.options.zoomEnabled)return!1;this.nzHeight=this.$elem.height();this.nzWidth=this.$elem.width();this.nzOffset=this.$elem.offset();this.options.tint&&"inner"!=this.options.zoomType&&(this.zoomTint.css({top:0}),this.zoomTint.css({left:0}));this.options.responsive&&!this.options.scrollZoom&&this.options.showLens&&(lensHeight=this.nzHeight<this.options.zoomWindowWidth/this.widthRatio?this.nzHeight:String(this.options.zoomWindowHeight/ 118this.heightRatio),lensWidth=this.largeWidth<this.options.zoomWindowWidth?this.nzWidth:this.options.zoomWindowWidth/this.widthRatio,this.widthRatio=this.largeWidth/this.nzWidth,this.heightRatio=this.largeHeight/this.nzHeight,"lens"!=this.options.zoomType&&(lensHeight=this.nzHeight<this.options.zoomWindowWidth/this.widthRatio?this.nzHeight:String(this.options.zoomWindowHeight/this.heightRatio),lensWidth=this.options.zoomWindowWidth<this.options.zoomWindowWidth?this.nzWidth:this.options.zoomWindowWidth/ 119this.widthRatio,this.zoomLens.css("width",lensWidth),this.zoomLens.css("height",lensHeight),this.options.tint&&(this.zoomTintImage.css("width",this.nzWidth),this.zoomTintImage.css("height",this.nzHeight))),"lens"==this.options.zoomType&&this.zoomLens.css({width:String(this.options.lensSize)+"px",height:String(this.options.lensSize)+"px"}));this.zoomContainer.css({top:this.nzOffset.top});this.zoomContainer.css({left:this.nzOffset.left});this.mouseLeft=parseInt(b.pageX-this.nzOffset.left);this.mouseTop= 120parseInt(b.pageY-this.nzOffset.top);"window"==this.options.zoomType&&(this.Etoppos=this.mouseTop<this.zoomLens.height()/2,this.Eboppos=this.mouseTop>this.nzHeight-this.zoomLens.height()/2-2*this.options.lensBorderSize,this.Eloppos=this.mouseLeft<0+this.zoomLens.width()/2,this.Eroppos=this.mouseLeft>this.nzWidth-this.zoomLens.width()/2-2*this.options.lensBorderSize);"inner"==this.options.zoomType&&(this.Etoppos=this.mouseTop<this.nzHeight/2/this.heightRatio,this.Eboppos=this.mouseTop>this.nzHeight- 121this.nzHeight/2/this.heightRatio,this.Eloppos=this.mouseLeft<0+this.nzWidth/2/this.widthRatio,this.Eroppos=this.mouseLeft>this.nzWidth-this.nzWidth/2/this.widthRatio-2*this.options.lensBorderSize);0>=this.mouseLeft||0>this.mouseTop||this.mouseLeft>this.nzWidth||this.mouseTop>this.nzHeight?this.setElements("hide"):(this.options.showLens&&(this.lensLeftPos=String(this.mouseLeft-this.zoomLens.width()/2),this.lensTopPos=String(this.mouseTop-this.zoomLens.height()/2)),this.Etoppos&&(this.lensTopPos=0), 122this.Eloppos&&(this.tintpos=this.lensLeftPos=this.windowLeftPos=0),"window"==this.options.zoomType&&(this.Eboppos&&(this.lensTopPos=Math.max(this.nzHeight-this.zoomLens.height()-2*this.options.lensBorderSize,0)),this.Eroppos&&(this.lensLeftPos=this.nzWidth-this.zoomLens.width()-2*this.options.lensBorderSize)),"inner"==this.options.zoomType&&(this.Eboppos&&(this.lensTopPos=Math.max(this.nzHeight-2*this.options.lensBorderSize,0)),this.Eroppos&&(this.lensLeftPos=this.nzWidth-this.nzWidth-2*this.options.lensBorderSize)), 123"lens"==this.options.zoomType&&(this.windowLeftPos=String(-1*((b.pageX-this.nzOffset.left)*this.widthRatio-this.zoomLens.width()/2)),this.windowTopPos=String(-1*((b.pageY-this.nzOffset.top)*this.heightRatio-this.zoomLens.height()/2)),this.zoomLens.css({backgroundPosition:this.windowLeftPos+"px "+this.windowTopPos+"px"}),this.changeBgSize&&(this.nzHeight>this.nzWidth?("lens"==this.options.zoomType&&this.zoomLens.css({"background-size":this.largeWidth/this.newvalueheight+"px "+this.largeHeight/this.newvalueheight+ 124"px"}),this.zoomWindow.css({"background-size":this.largeWidth/this.newvalueheight+"px "+this.largeHeight/this.newvalueheight+"px"})):("lens"==this.options.zoomType&&this.zoomLens.css({"background-size":this.largeWidth/this.newvaluewidth+"px "+this.largeHeight/this.newvaluewidth+"px"}),this.zoomWindow.css({"background-size":this.largeWidth/this.newvaluewidth+"px "+this.largeHeight/this.newvaluewidth+"px"})),this.changeBgSize=!1),this.setWindowPostition(b)),this.options.tint&&"inner"!=this.options.zoomType&& 125this.setTintPosition(b),"window"==this.options.zoomType&&this.setWindowPostition(b),"inner"==this.options.zoomType&&this.setWindowPostition(b),this.options.showLens&&(this.fullwidth&&"lens"!=this.options.zoomType&&(this.lensLeftPos=0),this.zoomLens.css({left:this.lensLeftPos+"px",top:this.lensTopPos+"px"})))},showHideWindow:function(b){"show"!=b||this.isWindowActive||(this.options.zoomWindowFadeIn?this.zoomWindow.stop(!0,!0,!1).fadeIn(this.options.zoomWindowFadeIn):this.zoomWindow.show(),this.isWindowActive= 126!0);"hide"==b&&this.isWindowActive&&(this.options.zoomWindowFadeOut?this.zoomWindow.stop(!0,!0).fadeOut(this.options.zoomWindowFadeOut):this.zoomWindow.hide(),this.isWindowActive=!1)},showHideLens:function(b){"show"!=b||this.isLensActive||(this.options.lensFadeIn?this.zoomLens.stop(!0,!0,!1).fadeIn(this.options.lensFadeIn):this.zoomLens.show(),this.isLensActive=!0);"hide"==b&&this.isLensActive&&(this.options.lensFadeOut?this.zoomLens.stop(!0,!0).fadeOut(this.options.lensFadeOut):this.zoomLens.hide(), 127this.isLensActive=!1)},showHideTint:function(b){"show"!=b||this.isTintActive||(this.options.zoomTintFadeIn?this.zoomTint.css({opacity:this.options.tintOpacity}).animate().stop(!0,!0).fadeIn("slow"):(this.zoomTint.css({opacity:this.options.tintOpacity}).animate(),this.zoomTint.show()),this.isTintActive=!0);"hide"==b&&this.isTintActive&&(this.options.zoomTintFadeOut?this.zoomTint.stop(!0,!0).fadeOut(this.options.zoomTintFadeOut):this.zoomTint.hide(),this.isTintActive=!1)},setLensPostition:function(b){}, 128setWindowPostition:function(b){var a=this;if(isNaN(a.options.zoomWindowPosition))a.externalContainer=d("#"+a.options.zoomWindowPosition),a.externalContainerWidth=a.externalContainer.width(),a.externalContainerHeight=a.externalContainer.height(),a.externalContainerOffset=a.externalContainer.offset(),a.windowOffsetTop=a.externalContainerOffset.top,a.windowOffsetLeft=a.externalContainerOffset.left;else switch(a.options.zoomWindowPosition){case 1:a.windowOffsetTop=a.options.zoomWindowOffety;a.windowOffsetLeft= 129+a.nzWidth;break;case 2:a.options.zoomWindowHeight>a.nzHeight&&(a.windowOffsetTop=-1*(a.options.zoomWindowHeight/2-a.nzHeight/2),a.windowOffsetLeft=a.nzWidth);break;case 3:a.windowOffsetTop=a.nzHeight-a.zoomWindow.height()-2*a.options.borderSize;a.windowOffsetLeft=a.nzWidth;break;case 4:a.windowOffsetTop=a.nzHeight;a.windowOffsetLeft=a.nzWidth;break;case 5:a.windowOffsetTop=a.nzHeight;a.windowOffsetLeft=a.nzWidth-a.zoomWindow.width()-2*a.options.borderSize;break;case 6:a.options.zoomWindowHeight> 130a.nzHeight&&(a.windowOffsetTop=a.nzHeight,a.windowOffsetLeft=-1*(a.options.zoomWindowWidth/2-a.nzWidth/2+2*a.options.borderSize));break;case 7:a.windowOffsetTop=a.nzHeight;a.windowOffsetLeft=0;break;case 8:a.windowOffsetTop=a.nzHeight;a.windowOffsetLeft=-1*(a.zoomWindow.width()+2*a.options.borderSize);break;case 9:a.windowOffsetTop=a.nzHeight-a.zoomWindow.height()-2*a.options.borderSize;a.windowOffsetLeft=-1*(a.zoomWindow.width()+2*a.options.borderSize);break;case 10:a.options.zoomWindowHeight>a.nzHeight&& 131(a.windowOffsetTop=-1*(a.options.zoomWindowHeight/2-a.nzHeight/2),a.windowOffsetLeft=-1*(a.zoomWindow.width()+2*a.options.borderSize));break;case 11:a.windowOffsetTop=a.options.zoomWindowOffety;a.windowOffsetLeft=-1*(a.zoomWindow.width()+2*a.options.borderSize);break;case 12:a.windowOffsetTop=-1*(a.zoomWindow.height()+2*a.options.borderSize);a.windowOffsetLeft=-1*(a.zoomWindow.width()+2*a.options.borderSize);break;case 13:a.windowOffsetTop=-1*(a.zoomWindow.height()+2*a.options.borderSize);a.windowOffsetLeft= 1320;break;case 14:a.options.zoomWindowHeight>a.nzHeight&&(a.windowOffsetTop=-1*(a.zoomWindow.height()+2*a.options.borderSize),a.windowOffsetLeft=-1*(a.options.zoomWindowWidth/2-a.nzWidth/2+2*a.options.borderSize));break;case 15:a.windowOffsetTop=-1*(a.zoomWindow.height()+2*a.options.borderSize);a.windowOffsetLeft=a.nzWidth-a.zoomWindow.width()-2*a.options.borderSize;break;case 16:a.windowOffsetTop=-1*(a.zoomWindow.height()+2*a.options.borderSize);a.windowOffsetLeft=a.nzWidth;break;default:a.windowOffsetTop= 133a.options.zoomWindowOffety,a.windowOffsetLeft=a.nzWidth}a.isWindowSet=!0;a.windowOffsetTop+=a.options.zoomWindowOffety;a.windowOffsetLeft+=a.options.zoomWindowOffetx;a.zoomWindow.css({top:a.windowOffsetTop});a.zoomWindow.css({left:a.windowOffsetLeft});"inner"==a.options.zoomType&&(a.zoomWindow.css({top:0}),a.zoomWindow.css({left:0}));a.windowLeftPos=String(-1*((b.pageX-a.nzOffset.left)*a.widthRatio-a.zoomWindow.width()/2));a.windowTopPos=String(-1*((b.pageY-a.nzOffset.top)*a.heightRatio-a.zoomWindow.height()/ 1342));a.Etoppos&&(a.windowTopPos=0);a.Eloppos&&(a.windowLeftPos=0);a.Eboppos&&(a.windowTopPos=-1*(a.largeHeight/a.currentZoomLevel-a.zoomWindow.height()));a.Eroppos&&(a.windowLeftPos=-1*(a.largeWidth/a.currentZoomLevel-a.zoomWindow.width()));a.fullheight&&(a.windowTopPos=0);a.fullwidth&&(a.windowLeftPos=0);if("window"==a.options.zoomType||"inner"==a.options.zoomType)1==a.zoomLock&&(1>=a.widthRatio&&(a.windowLeftPos=0),1>=a.heightRatio&&(a.windowTopPos=0)),a.largeHeight<a.options.zoomWindowHeight&&(a.windowTopPos= 1350),a.largeWidth<a.options.zoomWindowWidth&&(a.windowLeftPos=0),a.options.easing?(a.xp||(a.xp=0),a.yp||(a.yp=0),a.loop||(a.loop=setInterval(function(){a.xp+=(a.windowLeftPos-a.xp
135)/a.options.easingAmount;a.yp+=(a.windowTopPos-a.yp)/a.options.easingAmount;a.scrollingLock?(clearInterval(a.loop),a.xp=a.windowLeftPos,a.yp=a.windowTopPos,a.xp=-1*((b.pageX-a.nzOffset.left)*a.widthRatio-a.zoomWindow.width()/2),a.yp=-1*((b.pageY-a.nzOffset.top)*a.heightRatio-a.zoomWindow.height()/2),a.changeBgSize&&(a.nzHeight> 136a.nzWidth?("lens"==a.options.zoomType&&a.zoomLens.css({"background-size":a.largeWidth/a.newvalueheight+"px "+a.largeHeight/a.newvalueheight+"px"}),a.zoomWindow.css({"background-size":a.largeWidth/a.newvalueheight+"px "+a.largeHeight/a.newvalueheight+"px"})):("lens"!=a.options.zoomType&&a.zoomLens.css({"background-size":a.largeWidth/a.newvaluewidth+"px "+a.largeHeight/a.newvalueheight+"px"}),a.zoomWindow.css({"background-size":a.largeWidth/a.newvaluewidth+"px "+a.largeHeight/a.newvaluewidth+"px"})), 137a.changeBgSize=!1),a.zoomWindow.css({backgroundPosition:a.windowLeftPos+"px "+a.windowTopPos+"px"}),a.scrollingLock=!1,a.loop=!1):(a.changeBgSize&&(a.nzHeight>a.nzWidth?("lens"==a.options.zoomType&&a.zoomLens.css({"background-size":a.largeWidth/a.newvalueheight+"px "+a.largeHeight/a.newvalueheight+"px"}),a.zoomWindow.css({"background-size":a.largeWidth/a.newvalueheight+"px "+a.largeHeight/a.newvalueheight+"px"})):("lens"!=a.options.zoomType&&a.zoomLens.css({"background-size":a.largeWidth/a.newvaluewidth+ 138"px "+a.largeHeight/a.newvaluewidth+"px"}),a.zoomWindow.css({"background-size":a.largeWidth/a.newvaluewidth+"px "+a.largeHeight/a.newvaluewidth+"px"})),a.changeBgSize=!1),a.zoomWindow.css({backgroundPosition:a.xp+"px "+a.yp+"px"}))},16))):(a.changeBgSize&&(a.nzHeight>a.nzWidth?("lens"==a.options.zoomType&&a.zoomLens.css({"background-size":a.largeWidth/a.newvalueheight+"px "+a.largeHeight/a.newvalueheight+"px"}),a.zoomWindow.css({"background-size":a.largeWidth/a.newvalueheight+"px "+a.largeHeight/ 139a.newvalueheight+"px"})):("lens"==a.options.zoomType&&a.zoomLens.css({"background-size":a.largeWidth/a.newvaluewidth+"px "+a.largeHeight/a.newvaluewidth+"px"}),a.largeHeight/a.newvaluewidth<a.options.zoomWindowHeight?a.zoomWindow.css({"background-size":a.largeWidth/a.newvaluewidth+"px "+a.largeHeight/a.newvaluewidth+"px"}):a.zoomWindow.css({"background-size":a.largeWidth/a.newvalueheight+"px "+a.largeHeight/a.newvalueheight+"px"})),a.changeBgSize=!1),a.zoomWindow.css({backgroundPosition:a.windowLeftPos+ 140"px "+a.windowTopPos+"px"}))},setTintPosition:function(b){this.nzOffset=this.$elem.offset();this.tintpos=String(-1*(b.pageX-this.nzOffset.left-this.zoomLens.width()/2));this.tintposy=String(-1*(b.pageY-this.nzOffset.top-this.zoomLens.height()/2));this.Etoppos&&(this.tintposy=0);this.Eloppos&&(this.tintpos=0);this.Eboppos&&(this.tintposy=-1*(this.nzHeight-this.zoomLens.height()-2*this.options.lensBorderSize));this.Eroppos&&(this.tintpos=-1*(this.nzWidth-this.zoomLens.width()-2*this.options.lensBorderSize)); 141this.options.tint&&(this.fullheight&&(this.tintposy=0),this.fullwidth&&(this.tintpos=0),this.zoomTintImage.css({left:this.tintpos+"px"}),this.zoomTintImage.css({top:this.tintposy+"px"}))},swaptheimage:function(b,a){var c=this,e=new Image;c.options.loadingIcon&&(c.spinner=d("<div style=\"background: url('"+c.options.loadingIcon+"') no-repeat center;height:"+c.nzHeight+"px;width:"+c.nzWidth+'px;z-index: 2000;position: absolute; background-position: center center;"></div>'),c.$elem.after(c.spinner)); 142c.options.onImageSwap(c.$elem);e.onload=function(){c.largeWidth=e.width;c.largeHeight=e.height;c.zoomImage=a;c.zoomWindow.css({"background-size":c.largeWidth+"px "+c.largeHeight+"px"});c.zoomWindow.css({"background-size":c.largeWidth+"px "+c.largeHeight+"px"});c.swapAction(b,a)};e.src=a},swapAction:function(b,a){var c=this,e=new Image;e.onload=function(){c.nzHeight=e.height;c.nzWidth=e.width;c.options.onImageSwapComplete(c.$elem);c.doneCallback()};e.src=b;c.currentZoomLevel=c.options.zoomLevel;c.options.maxZoomLevel= 143!1;"lens"==c.options.zoomType&&c.zoomLens.css({backgroundImage:"url('"+a+"')"});"window"==c.options.zoomType&&c.zoomWindow.css({backgroundImage:"url('"+a+"')"});"inner"==c.options.zoomType&&c.zoomWindow.css({backgroundImage:"url('"+a+"')"});c.currentImage=a;if(c.options.imageCrossfade){var f=c.$elem,g=f.clone();c.$elem.attr("src",b);c.$elem.after(g);g.stop(!0).fadeOut(c.options.imageCrossfade,function(){d(this).remove()});c.$elem.width("auto").removeAttr("width");c.$elem.height("auto").removeAttr("height"); 144f.fadeIn(c.options.imageCrossfade);c.options.tint&&"inner"!=c.options.zoomType&&(f=c.zoomTintImage,g=f.clone(),c.zoomTintImage.attr("src",a),c.zoomTintImage.after(g),g.stop(!0).fadeOut(c.options.imageCrossfade,function(){d(this).remove()}),f.fadeIn(c.options.imageCrossfade),c.zoomTint.css({height:c.$elem.height()}),c.zoomTint.css({width:c.$elem.width()}));c.zoomContainer.css("height",c.$elem.height());c.zoomContainer.css("width",c.$elem.width());"inner"!=c.options.zoomType||c.options.constrainType|| 145(c.zoomWrap.parent().css("height",c.$elem.height()),c.zoomWrap.parent().css("width",c.$elem.width()),c.zoomWindow.css("height",c.$elem.height()),c.zoomWindow.css("width",c.$elem.width()))}else c.$elem.attr("src",b),c.options.tint&&(c.zoomTintImage.attr("src",a),c.zoomTintImage.attr("height",c.$elem.height()),c.zoomTintImage.css({height:c.$elem.height()}),c.zoomTint.css({height:c.$elem.height()})),c.zoomContainer.css("height",c.$elem.height()),c.zoomContainer.css("width",c.$elem.width());c.options.imageCrossfade&& 146(c.zoomWrap.css("height",c.$elem.height()),c.zoomWrap.css("width",c.$elem.width()));c.options.constrainType&&("height"==c.options.constrainType&&(c.zoomContainer.css("height",c.options.constrainSize),c.zoomContainer.css("width","auto"),c.options.imageCrossfade?(c.zoomWrap.css("height",c.options.constrainSize),c.zoomWrap.css("width","auto"),c.constwidth=c.zoomWrap.width()):(c.$elem.css("height",c.options.constrainSize),c.$elem.css("width","auto"),c.constwidth=c.$elem.width()),"inner"==c.options.zoomType&& 147(c.zoomWrap.parent().css("height",c.options.constrainSize),c.zoomWrap.parent().css("width",c.constwidth),c.zoomWindow.css("height",c.options.constrainSize),c.zoomWindow.css("width",c.constwidth)),c.options.tint&&(c.tintContainer.css("height",c.options.constrainSize),c.tintContainer.css("width",c.constwidth),c.zoomTint.css("height",c.options.constrainSize),c.zoomTint.css("width",c.constwidth),c.zoomTintImage.css("height",c.options.constrainSize),c.zoomTintImage.css("width",c.constwidth))),"width"== 148c.options.constrainType&&(c.zoomContainer.css("height","auto"),c.zoomContainer.css("width",c.options.constrainSize),c.options.imageCrossfade?(c.zoomWrap.css("height","auto"),c.zoomWrap.css("width",c.options.constrainSize),c.constheight=c.zoomWrap.height()):(c.$elem.css("height","auto"),c.$elem.css("width",c.options.constrainSize),c.constheight=c.$elem.height()),"inner"==c.options.zoomType&&(c.zoomWrap.parent().css("height",c.constheight),c.zoomWrap.parent().css("width",c.options.constrainSize),c.zoomWindow.css("height", 149c.constheight),c.zoomWindow.css("width",c.options.constrainSize)),c.options.tint&&(c.tintContainer.css("height",c.constheight),c.tintContainer.css("width",c.options.constrainSize),c.zoomTint.css("height",c.constheight),c.zoomTint.css("width",c.options.constrainSize),c.zoomTintImage.css("height",c.constheight),c.zoomTintImage.css("width",c.options.constrainSize))))},doneCallback:function(){this.options.loadingIcon&&this.spinner.hide();this.nzOffset=this.$elem.offset();this.nzWidth=this.$elem.width(); 150this.nzHeight=this.$elem.height();this.currentZoomLevel=this.options.zoomLevel;this.widthRatio=this.largeWidth/this.nzWidth;this.heightRatio=this.largeHeight/this.nzHeight;"window"==this.options.zoomType&&(lensHeight=this.nzHeight<this.options.zoomWindowWidth/this.widthRatio?this.nzHeight:String(this.options.zoomWindowHeight/this.heightRatio),lensWidth=this.options.zoomWindowWidth<this.options.zoomWindowWidth?this.nzWidth:this.options.zoomWindowWidth/this.widthRatio,this.zoomLens&&(this.zoomLens.css("width", 151lensWidth),this.zoomLens.css("height",lensHeight)))},getCurrentImage:function(){return this.zoomImage},getGalleryList:function(){var b=this;b.gallerylist=[];b.options.gallery?d("#"+b.options.gallery+" a").each(function(){var a="";d(this).data("zoom-image")?a=d(this).data("zoom-image"):d(this).data("image")&&(a=d(this).data("image"));a==b.zoomImage?b.gallerylist.unshift({href:""+a+"",title:d(this).find("img").attr("title")}):b.gallerylist.push({href:""+a+"",title:d(this).find("img").attr("title")})}): 152b.gallerylist.push({href:""+b.zoomImage+"",title:d(this).find("img").attr("title")});return b.gallerylist},changeZoomLevel:function(b){this.scrollingLock=!0;this.newvalue=parseFloat(b).toFixed(2);newvalue=parseFloat(b).toFixed(2);maxheightnewvalue=this.largeHeight/(this.options.zoomWindowHeight/this.nzHeight*this.nzHeight);maxwidthtnewvalue=this.largeWidth/(this.options.zoomWindowWidth/this.nzWidth*this.nzWidth);
152"inner"!=this.options.zoomType&&(maxheightnewvalue<=newvalue?(this.heightRatio=this.largeHeight/ 153maxheightnewvalue/this.nzHeight,this.newvalueheight=maxheightnewvalue,this.fullheight=!0):(this.heightRatio=this.largeHeight/newvalue/this.nzHeight,this.newvalueheight=newvalue,this.fullheight=!1),maxwidthtnewvalue<=newvalue?(this.widthRatio=this.largeWidth/maxwidthtnewvalue/this.nzWidth,this.newvaluewidth=maxwidthtnewvalue,this.fullwidth=!0):(this.widthRatio=this.largeWidth/newvalue/this.nzWidth,this.newvaluewidth=newvalue,this.fullwidth=!1),"lens"==this.options.zoomType&&(maxheightnewvalue<=newvalue? 154(this.fullwidth=!0,this.newvaluewidth=maxheightnewvalue):(this.widthRatio=this.largeWidth/newvalue/this.nzWidth,this.newvaluewidth=newvalue,this.fullwidth=!1)));"inner"==this.options.zoomType&&(maxheightnewvalue=parseFloat(this.largeHeight/this.nzHeight).toFixed(2),maxwidthtnewvalue=parseFloat(this.largeWidth/this.nzWidth).toFixed(2),newvalue>maxheightnewvalue&&(newvalue=maxheightnewvalue),newvalue>maxwidthtnewvalue&&(newvalue=maxwidthtnewvalue),maxheightnewvalue<=newvalue?(this.heightRatio=this.largeHeight/ 155newvalue/this.nzHeight,this.newvalueheight=newvalue>maxheightnewvalue?maxheightnewvalue:newvalue,this.fullheight=!0):(this.heightRatio=this.largeHeight/newvalue/this.nzHeight,this.newvalueheight=newvalue>maxheightnewvalue?maxheightnewvalue:newvalue,this.fullheight=!1),maxwidthtnewvalue<=newvalue?(this.widthRatio=this.largeWidth/newvalue/this.nzWidth,this.newvaluewidth=newvalue>maxwidthtnewvalue?maxwidthtnewvalue:newvalue,this.fullwidth=!0):(this.widthRatio=this.largeWidth/newvalue/this.nzWidth,this.newvaluewidth= 156newvalue,this.fullwidth=!1));scrcontinue=!1;"inner"==this.options.zoomType&&(this.nzWidth>this.nzHeight&&(this.newvaluewidth<=maxwidthtnewvalue?scrcontinue=!0:(scrcontinue=!1,this.fullwidth=this.fullheight=!0)),this.nzHeight>this.nzWidth&&(this.newvaluewidth<=maxwidthtnewvalue?scrcontinue=!0:(scrcontinue=!1,this.fullwidth=this.fullheight=!0)));"inner"!=this.options.zoomType&&(scrcontinue=!0);scrcontinue&&(this.zoomLock=0,this.changeZoom=!0,this.options.zoomWindowHeight/this.heightRatio<=this.nzHeight&& 157(this.currentZoomLevel=this.newvalueheight,"lens"!=this.options.zoomType&&"inner"!=this.options.zoomType&&(this.changeBgSize=!0,this.zoomLens.css({height:String(this.options.zoomWindowHeight/this.heightRatio)+"px"})),"lens"==this.options.zoomType||"inner"==this.options.zoomType)&&(this.changeBgSize=!0),this.options.zoomWindowWidth/this.widthRatio<=this.nzWidth&&("inner"!=this.options.zoomType&&this.newvaluewidth>this.newvalueheight&&(this.currentZoomLevel=this.newvaluewidth),"lens"!=this.options.zoomType&& 158"inner"!=this.options.zoomType&&(this.changeBgSize=!0,this.zoomLens.css({width:String(this.options.zoomWindowWidth/this.widthRatio)+"px"})),"lens"==this.options.zoomType||"inner"==this.options.zoomType)&&(this.changeBgSize=!0),"inner"==this.options.zoomType&&(this.changeBgSize=!0,this.nzWidth>this.nzHeight&&(this.currentZoomLevel=this.newvaluewidth),this.nzHeight>this.nzWidth&&(this.currentZoomLevel=this.newvaluewidth)));this.setPosition(this.currentLoc)},closeAll:function(){self.zoomWindow&&self.zoomWindow.hide(); 159self.zoomLens&&self.zoomLens.hide();self.zoomTint&&self.zoomTint.hide()},changeState:function(b){"enable"==b&&(this.options.zoomEnabled=!0);"disable"==b&&(this.options.zoomEnabled=!1)}};d.fn.elevateZoom=function(b){return this.each(function(){var a=Object.create(k);a.init(b,this);d.data(this,"elevateZoom",a)})};d.fn.elevateZoom.options={zoomActivation:"hover",zoomEnabled:!0,preloading:1,zoomLevel:1,scrollZoom:!1,scrollZoomIncrement:0.1,minZoomLevel:!1,maxZoomLevel:!1,easing:!1,easingAmount:12,lensSize:200, 160zoomWindowWidth:400,zoomWindowHeight:400,zoomWindowOffetx:0,zoomWindowOffety:0,zoomWindowPosition:1,zoomWindowBgColour:"#fff",lensFadeIn:!1,lensFadeOut:!1,debug:!1,zoomWindowFadeIn:!1,zoomWindowFadeOut:!1,zoomWindowAlwaysShow:!1,zoomTintFadeIn:!1,zoomTintFadeOut:!1,borderSize:4,showLens:!0,borderColour:"#888",lensBorderSize:1,lensBorderColour:"#000",lensShape:"square",zoomType:"window",containLensZoom:!1,lensColour:"white",lensOpacity:0.4,lenszoom:!1,tint:!1,tintColour:"#333",tintOpacity:0.4,gallery:!1, 161galleryActiveClass:"zoomGalleryActive",imageCrossfade:!1,constrainType:!1,constrainSize:!1,loadingIcon:!1,cursor:"default",responsive:!0,onComplete:d.noop,onZoomedImageLoaded:function(){},onImageSwap:d.noop,onImageSwapComplete:d.noop}})(jQuery,window,document); 162 163/*! 164 * jQuery Validation Plugin v1.19.1 165 * 166 * https://jqueryvalidation.org/ 167 * 168 * Copyright (c) 2019 Jörn Zaefferer 169 * Released under the MIT license 170 */ 171 !function(t){ true?!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! jquery */ "jquery")], __WEBPACK_AMD_DEFINE_FACTORY__ = (t), 172 __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? 173 (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
vendor: 20,340 bytes, line 174
174 __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)):undefined}(function(t){var e;t.extend(t.fn,{validate:function(e){if(this.length){var i=t.data(this[0],"validator");return i||(this.attr("novalidate","novalidate"),i=new t.validator(e,this[0]),t.data(this[0],"validator",i),i.settings.onsubmit&&(this.on("click.validate",":submit",function(e){i.submitButton=e.currentTarget,t(this).hasClass("cancel")&&(i.cancelSubmit=!0),void 0!==t(this).attr("formnovalidate")&&(i.cancelSubmit=!0)}),this.on("submit.validate",function(e){function s(){var s,n;return i.submitButton&&(i.settings.submitHandler||i.formSubmitted)&&(s=t("<input type='hidden'/>").attr("name",i.submitButton.name).val(t(i.submitButton).val()).appendTo(i.currentForm)),!(i.settings.submitHandler&&!i.settings.debug)||(n=i.settings.submitHandler.call(i,i.currentForm,e),s&&s.remove(),void 0!==n&&n)}return i.settings.debug&&e.preventDefault(),i.cancelSubmit?(i.cancelSubmit=!1,s()):i.form()?i.pendingRequest?(i.formSubmitted=!0,!1):s():(i.focusInvalid(),!1)})),i)}e&&e.debug&&window.console&&console.warn("Nothing selected, can't validate, returning nothing.")},valid:function(){var e,i,s;return t(this[0]).is("form")?e=this.validate().form():(s=[],e=!0,i=t(this[0].form).validate(),this.each(function(){(e=i.element(this)&&e)||(s=s.concat(i.errorList))}),i.errorList=s),e},rules:function(e,i){var s,n,r,a,o,l,h=this[0],d=void 0!==this.attr("contenteditable")&&"false"!==this.attr("contenteditable");if(null!=h&&(!h.form&&d&&(h.form=this.closest("form")[0],h.name=this.attr("name")),null!=h.form)){if(e)switch(n=(s=t.data(h.form,"validator").settings).rules,r=t.validator.staticRules(h),e){case"add":t.extend(r,t.validator.normalizeRule(i)),delete r.messages,n[h.name]=r,i.messages&&(s.messages[h.name]=t.extend(s.messages[h.name],i.messages));break;case"remove":return i?(l={},t.each(i.split(/\s/),function(t,e){l[e]=r[e],delete r[e]}),l):(delete n[h.name],r)}return(a=t.validator.normalizeRules(t.extend({},t.validator.classRules(h),t.validator.attributeRules(h),t.validator.dataRules(h),t.validator.staticRules(h)),h)).required&&(o=a.required,delete a.required,a=t.extend({required:o},a)),a.remote&&(o=a.remote,delete a.remote,a=t.extend(a,{remote:o})),a}}}),t.extend(t.expr.pseudos||t.expr[":"],{blank:function(e){return!t.trim(""+t(e).val())},filled:function(e){var i=t(e).val();return null!==i&&!!t.trim(""+i)},unchecked:function(e){return!t(e).prop("checked")}}),t.validator=function(e,i){this.settings=t.extend(!0,{},t.validator.defaults,e),this.currentForm=i,this.init()},t.validator.format=function(e,i){return 1===arguments.length?function(){var i=t.makeArray(arguments);return i.unshift(e),t.validator.format.apply(this,i)}:void 0===i?e:(arguments.length>2&&i.constructor!==Array&&(i=t.makeArray(arguments).slice(1)),i.constructor!==Array&&(i=[i]),t.each(i,function(t,i){e=e.replace(new RegExp("\\{"+t+"\\}","g"),function(){return i})}),e)},t.extend(t.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error",pendingClass:"pending",validClass:"valid",errorElement:"label",focusCleanup:!1,focusInvalid:!0,errorContainer:t([]),errorLabelContainer:t([]),onsubmit:!0,ignore:":hidden",ignoreTitle:!1,onfocusin:function(t){this.lastActive=t,this.settings.focusCleanup&&(this.settings.unhighlight&&this.settings.unhighlight.call(this,t,this.settings.errorClass,this.settings.validClass),this.hideThese(this.errorsFor(t)))},onfocusout:function(t){this.checkable(t)||!(t.name in this.submitted)&&this.optional(t)||this.element(t)},onkeyup:function(e,i){9===i.which&&""===this.elementValue(e)||-1!==t.inArray(i.keyCode,[16,17,18,20,35,36,37,38,39,40,45,144,225])||(e.name in this.submitted||e.name in this.invalid)&&this.element(e)},onclick:function(t){t.name in this.submitted?this.element(t):t.parentNode.name in this.submitted&&this.element(t.parentNode)},highlight:function(e,i,s){"radio"===e.type?this.findByName(e.name).addClass(i).removeClass(s):t(e).addClass(i).removeClass(s)},unhighlight:function(e,i,s){"radio"===e.type?this.findByName(e.name).removeClass(i).addClass(s):t(e).removeClass(i).addClass(s)}},setDefaults:function(e){t.extend(t.validator.defaults,e)},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date (ISO).",number:"Please enter a valid number.",digits:"Please enter only digits.",equalTo:"Please enter the same value again.",maxlength:t.validator.format("Please enter no more than {0} characters."),minlength:t.validator.format("Please enter at least {0} characters."),rangelength:t.validator.format("Please enter a value between {0} and {1} characters long."),range:t.validator.format("Please enter a value between {0} and {1}."),max:t.validator.format("Please enter a value less than or equal to {0}."),min:t.validator.format("Please enter a value greater than or equal to {0}."),step:t.validator.format("Please enter a multiple of {0}.")},autoCreateRanges:!1,prototype:{init:function(){this.labelContainer=t(this.settings.errorLabelContainer),this.errorContext=this.labelContainer.length&&this.labelContainer||t(this.currentForm),this.containers=t(this.settings.errorContainer).add(this.settings.errorLabelContainer),this.submitted={},this.valueCache={},this.pendingRequest=0,this.pending={},this.invalid={},this.reset();var e,i=this.currentForm,s=this.groups={};function n(e){var s=void 0!==t(this).attr("contenteditable")&&"false"!==t(this).attr("contenteditable");if(!this.form&&s&&(this.form=t(this).closest("form")[0],this.name=t(this).attr("name")),i===this.form){var n=t.data(this.form,"validator"),r="on"+e.type.replace(/^validate/,""),a=n.settings;a[r]&&!t(this).is(a.ignore)&&a[r].call(n,this,e)}}t.each(this.settings.groups,function(e,i){"string"==typeof i&&(i=i.split(/\s/)),t.each(i,function(t,i){s[i]=e})}),e=this.settings.rules,t.each(e,function(i,s){e[i]=t.validator.normalizeRule(s)}),t(this.currentForm).on("focusin.validate focusout.validate keyup.validate",":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], [type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], [type='radio'], [type='checkbox'], [contenteditable], [type='button']",n).on("click.validate","select, option, [type='radio'], [type='checkbox']",n),this.settings.invalidHandler&&t(this.currentForm).on("invalid-form.validate",this.settings.invalidHandler)},form:function(){return this.checkForm(),t.extend(this.submitted,this.errorMap),this.invalid=t.extend({},this.errorMap),this.valid()||t(this.currentForm).triggerHandler("invalid-form",[this]),this.showErrors(),this.valid()},checkForm:function(){this.prepareForm();for(var t=0,e=this.currentElements=this.elements();e[t];t++)this.check(e[t]);return this.valid()},element:function(e){var i,s,n=this.clean(e),r=this.validationTargetFor(n),a=this,o=!0;return void 0===r?delete this.invalid[n.name]:(this.prepareElement(r),this.currentElements=t(r),(s=this.groups[r.name])&&t.each(this.groups,function(t,e){e===s&&t!==r.name&&(n=a.validationTargetFor(a.clean(a.findByName(t))))&&n.name in a.invalid&&(a.currentElements.push(n),o=a.check(n)&&o)}),i=!1!==this.check(r),o=o&&i,this.invalid[r.name]=!i,this.numberOfInvalids()||(this.toHide=this.toHide.add(this.containers)),this.showErrors(),t(e).attr("aria-invalid",!i)),o},showErrors:function(e){if(e){var i=this;t.extend(this.errorMap,e),this.errorList=t.map(this.errorMap,function(t,e){return{message:t,element:i.findByName(e)[0]}}),this.successList=t.grep(this.successList,function(t){return!(t.name in e)})}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){t.fn.resetForm&&t(this.currentForm).resetForm(),this.invalid={},this.submitted={},this.prepareForm(),this.hideErrors();var e=this.elements().removeData("previousValue").removeAttr("aria-invalid");this.resetElements(e)},resetElements:function(t){var e;if(this.settings.unhighlight)for(e=0;t[e];e++)this.settings.unhighlight.call(this,t[e],this.settings.errorClass,""),this.findByName(t[e].name).removeClass(this.settings.validClass);else t.removeClass(this.settings.errorClass).removeClass(this.settings.validClass)},numberOfInvalids:function(){return this.objectLength(this.invalid)},objectLength:function(t){var e,i=0;for(e in t)void 0!==t[e]&&null!==t[e]&&!1!==t[e]&&i++;return i},hideErrors:function(){this.hideThese(this.toHide)},hideThese:function(t){t.not(this.containers).text(""),this.addWrapper(t).hide()},valid:function(){return 0===this.size()},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid)try{t(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").trigger("focus").trigger("focusin")}catch(t){}},findLastActive:function(){var e=this.lastActive;return e&&1===t.grep(this.errorList,function(t){return t.element.name===e.name}).length&&e},elements:function(){var e=this,i={};return t(this.currentForm).find("input, select, textarea, [contenteditable]").not(":submit, :reset, :image, :disabled").not(this.settings.ignore).filter(function(){var s=this.name||t(this).attr("name"),n=void 0!==t(this).attr("contenteditable")&&"false"!==t(this).attr("contenteditable");return!s&&e.settings.debug&&window.console&&console.error("%o has no name assigned",this),n&&(this.form=t(this).closest("form")[0],this.name=s),this.form===e.currentForm&&(!(s in i||!e.objectLength(t(this).rules()))&&(i[s]=!0,!0))})},clean:function(e){return t(e)[0]},errors:function(){var e=this.settings.errorClass.split(" ").join(".");return t(this.settings.errorElement+"."+e,this.errorContext)},resetInternals:function(){this.successList=[],this.errorList=[],this.errorMap={},this.toShow=t([]),this.toHide=t([])},reset:function(){this.resetInternals(),this.currentElements=t([])},prepareForm:function(){this.reset(),this.toHide=this.errors().add(this.containers)},prepareElement:function(t){this.reset(),this.toHide=this.errorsFor(t)},elementValue:function(e){var i,s,n=t(e),r=e.type,a=void 0!==n.attr("contenteditable")&&"false"!==n.attr("contenteditable");return"radio"===r||"checkbox"===r?this.findByName(e.name).filter(":checked").val():"number"===r&&void 0!==e.validity?e.validity.badInput?"NaN":n.val():(i=a?n.text():n.val(),"file"===r?"C:\\fakepath\\"===i.substr(0,12)?i.substr(12):(s=i.lastIndexOf("/"))>=0?i.substr(s+1):(s=i.lastIndexOf("\\"))>=0?i.substr(s+1):i:"string"==typeof i?i.replace(/\r/g,""):i)},check:function(e){e=this.validationTargetFor(this.clean(e));var i,s,n,r,a=t(e).rules(),o=t.map(a,function(t,e){return e}).length,l=!1,h=this.elementValue(e);for(s in"function"==typeof a.normalizer?r=a.normalizer:"function"==typeof this.settings.normalizer&&(r=this.settings.normalizer),r&&(h=r.call(e,h),delete a.normalizer),a){n={method:s,parameters:a[s]};try{if("dependency-mismatch"===(i=t.validator.methods[s].call(this,h,e,n.parameters))&&1===o){l=!0;continue}if(l=!1,"pending"===i)return void(this.toHide=this.toHide.not(this.errorsFor(e)));if(!i)return this.formatAndAdd(e,n),!1}catch(t){throw this.settings.debug&&window.console&&console.log("Exception occurred when checking element "+e.id+", check the '"+n.method+"' method.",t),t instanceof TypeError&&(t.message+=". Exception occurred when checking element "+e.id+", check the '"+n.method+"' method."),t}}if(!l)return this.objectLength(a)&&this.successList.push(e),!0},customDataMessage:function(e,i){return t(e).data("msg"+i.charAt(0).toUpperCase()+i.substring(1).toLowerCase())||t(e).data("msg")},customMessage:function(t,e){var i=this.settings.messages[t];return i&&(i.constructor===String?i:i[e])},findDefined:function(){for(var t=0;t<arguments.length;t++)if(void 0!==arguments[t])return arguments[t]},defaultMessage:function(e,i){"string"==typeof i&&(i={method:i});var s=this.findDefined(this.customMessage(e.name,i.method),this.customDataMessage(e,i.method),!this.settings.ignoreTitle&&e.title||void 0,t.validator.messages[i.method],"<strong>Warning: No message defined for "+e.name+"</strong>"),n=/\$?\{(\d+)\}/g;return"function"==typeof s?s=s.call(this,i.parameters,e):n.test(s)&&(s=t.validator.format(s.replace(n,"{$1}"),i.parameters)),s},formatAndAdd:function(t,e){var i=this.defaultMessage(t,e);this.errorList.push({message:i,element:t,method:e.method}),this.errorMap[t.name]=i,this.submitted[t.name]=i},addWrapper:function(t){return this.settings.wrapper&&(t=t.add(t.parent(this.settings.wrapper))),t},defaultShowErrors:function(){var t,e,i;for(t=0;this.errorList[t];t++)i=this.errorList[t],this.settings.highlight&&this.settings.highlight.call(this,i.element,this.settings.errorClass,this.settings.validClass),this.showLabel(i.element,i.message);if(this.errorList.length&&(this.toShow=this.toShow.add(this.containers)),this.settings.success)for(t=0;this.successList[t];t++)this.showLabel(this.successList[t]);if(this.settings.unhighlight)for(t=0,e=this.validElements();e[t];t++)this.settings.unhighlight.call(this,e[t],this.settings.errorClass,this.settings.validClass);this.toHide=this.toHide.not(this.toShow),this.hideErrors(),this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return t(this.errorList).map(function(){return this.element})},showLabel:function(e,i){var s,n,r,a,o=this.errorsFor(e),l=this.idOrName(e),h=t(e).attr("aria-describedby");o.length?(o.removeClass(this.settings.validClass).addClass(this.settings.errorClass),o.html(i)):(s=o=t("<"+this.settings.errorElement+">").attr("id",l+"-error").addClass(this.settings.errorClass).html(i||""),this.settings.wrapper&&(s=o.hide().show().wrap("<"+this.settings.wrapper+"/>").parent()),this.labelContainer.length?this.labelContainer.append(s):this.settings.errorPlacement?this.settings.errorPlacement.call(this,s,t(e)):s.insertAfter(e),o.is("label")?o.attr("for",l):0===o.parents("label[for='"+this.escapeCssMeta(l)+"']").length&&(r=o.attr("id"),h?h.match(new RegExp("\\b"+this.escapeCssMeta(r)+"\\b"))||(h+=" "+r):h=r,t(e).attr("aria-describedby",h),(n=this.groups[e.name])&&(a=this,t.each(a.groups,function(e,i){i===n&&t("[name='"+a.escapeCssMeta(e)+"']",a.currentForm).attr("aria-describedby",o.attr("id"))})))),!i&&this.settings.success&&(o.text(""),"string"==typeof this.settings.success?o.addClass(this.settings.success):this.settings.success(o,e)),this.toShow=this.toShow.add(o)},errorsFor:function(e){var i=this.escapeCssMeta(this.idOrName(e)),s=t(e).attr("aria-describedby"),n="label[for='"+i+"'], label[for='"+i+"'] *";return s&&(n=n+", #"+this.escapeCssMeta(s).replace(/\s+/g,", #")),this.errors().filter(n)},escapeCssMeta:function(t){return t.replace(/([\\!"#$%&'()*+,.\/:;<=>?@\[\]^`{|}~])/g,"\\$1")},idOrName:function(t){return this.groups[t.name]||(this.checkable(t)?t.name:t.id||t.name)},validationTargetFor:function(e){return this.checkable(e)&&(e=this.findByName(e.name)),t(e).not(this.settings.ignore)[0]},checkable:function(t){return/radio|checkbox/i.test(t.type)},findByName:function(e){return t(this.currentForm).find("[name='"+this.escapeCssMeta(e)+"']")},getLength:function(e,i){switch(i.nodeName.toLowerCase()){case"select":return t("option:selected",i).length;case"input":if(this.checkable(i))return this.findByName(i.name).filter(":checked").length}return e.length},depend:function(t,e){return!this.dependTypes[typeof t]||this.dependTypes[typeof t](t,e)},dependTypes:{boolean:function(t){return t},string:function(e,i){return!!t(e,i.form).length},function:function(t,e){return t(e)}},optional:function(e){var i=this.elementValue(e);return!t.validator.methods.required.call(this,i,e)&&"dependency-mismatch"},startRequest:function(e){this.pending[e.name]||(this.pendingRequest++,t(e).addClass(this.settings.pendingClass),this.pending[e.name]=!0)},stopRequest:function(e,i){this.pendingRequest--,this.pendingRequest<0&&(this.pendingRequest=0),delete this.pending[e.name],t(e).removeClass(this.settings.pendingClass),i&&0===this.pendingRequest&&this.formSubmitted&&this.form()?(t(this.currentForm).submit(),this.submitButton&&t("input:hidden[name='"+this.submitButton.name+"']",this.currentForm).remove(),this.formSubmitted=!1):!i&&0===this.pendingRequest&&this.formSubmitted&&(t(this.currentForm).triggerHandler("invalid-form",[this]),this.formSubmitted=!1)},previousValue:function(e,i){return i="string"==typeof i&&i||"remote",t.data(e,"previousValue")||t.data(e,"previousValue",{old:null,valid:!0,message:this.defaultMessage(e,{method:i})})},destroy:function(){this.resetForm(),t(this.currentForm).off(".validate").removeData("validator").find(".validate-equalTo-blur").off(".validate-equalTo").removeClass("validate-equalTo-blur").find(".validate-lessThan-blur").off(".validate-lessThan").removeClass("validate-lessThan-blur").find(".validate-lessThanEqual-blur").off(".validate-lessThanEqual").removeClass("validate-lessThanEqual-blur").find(".validate-greaterThanEqual-blur").off(".validate-greaterThanEqual").removeClass("validate-greaterThanEqual-blur").find(".validate-greaterThan-blur").off(".validate-greaterThan").removeClass("validate-greaterThan-blur")}},classRuleSettings:{required:{required:!0},email:{email:!0},url:{url:!0},date:{date:!0},dateISO:{dateISO:!0},number:{number:!0},digits:{digits:!0},creditcard:{creditcard:!0}},addClassRules:function(e,i){e.constructor===String?this.classRuleSettings[e]=i:t.extend(this.classRuleSettings,e)},classRules:function(e){var i={},s=t(e).attr("class");return s&&t.each(s.split(" "),function(){this in t.validator.classRuleSettings&&t.extend(i,t.validator.classRuleSettings[this])}),i},normalizeAttributeRule:function(t,e,i,s){/min|max|step/.test(i)&&(null===e||/number|range|text/.test(e))&&(s=Number(s),isNaN(s)&&(s=void 0)),s||0===s?t[i]=s:e===i&&"range"!==e&&(t[i]=!0)},attributeRules:function(e){var i,s,n={},r=t(e),a=e.getAttribute("type");for(i in t.validator.methods)"required"===i?(""===(s=e.getAttribute(i))&&(s=!0),s=!!s):s=r.attr(i),this.normalizeAttributeRule(n,a,i,s);return n.maxlength&&/-1|2147483647|524288/.test(n.maxlength)&&delete n.maxlength,n},dataRules:function(e){var i,s,n={},r=t(e),a=e.getAttribute("type");for(i in t.validator.methods)""===(s=r.data("rule"+i.charAt(0).toUpperCase()+i.substring(1).toLowerCase()))&&(s=!0),this.normalizeAttributeRule(n,a,i,s);return n},staticRules:function(e){var i={},s=t.data(e.form,"validator");return s.settings.rules&&(i=t.validator.normalizeRule(s.settings.rules[e.name])||{}),i},normalizeRules:function(e,i){return t.each(e,function(s,n){if(!1!==n){if(n.param||n.depends){var r=!0;switch(typeof n.depends){case"string":r=!!t(n.depends,i.form).length;break;case"function":r=n.depends.call(i,i)}r?e[s]=void 0===n.param||n.param:(t.data(i.form,"validator").resetElements(t(i)),delete e[s])}}else delete e[s]}),t.each(e,function(s,n){e[s]=t.isFunction(n)&&"normalizer"!==s?n(i):n}),t.each(["minlength","maxlength"],function(){e[this]&&(e[this]=Number(e[this]))}),t.each(["rangelength","range"],function(){var i;e[this]&&(t.isArray(e[this])?e[this]=[Number(e[this][0]),Number(e[this][1])]:"string"==typeof e[this]&&(i=e[this].replace(/[\[\]]/g,"").split(/[\s,]+/),e[this]=[Number(i[0]),Number(i[1])]))}),t.validator.autoCreateRanges&&(null!=e.min&&null!=e.max&&(e.range=[e.min,e.max],delete e.min,delete e.max),null!=e.minlength&&null!=e.maxlength&&(e.rangelength=[e.minlength,e.maxlength],delete e.minlength,delete e.maxlength)),e},normalizeRule:function(e){if("string"==typeof e){var i={};t.each(e.split(/\s/),function(){i[this]=!0}),e=i}return e},addMethod:function(e,i,s){t.validator.methods[e]=i,t.validator.messages[e]=void 0!==s?s:t.validator.messages[e],i.length<3&&t.validator.addClassRules(e,t.validator.normalizeRule(e))},methods:{required:function(e,i,s){if(!this.depend(s,i))return"dependency-mismatch";if("select"===i.nodeName.toLowerCase()){var n=t(i).val();return n&&n.length>0}return this.checkable(i)?this.getLength(e,i)>0:null!=e&&e.length>0},email:function(t,e){return this.optional(e)||/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(t)}
174,url:function(t,e){return this.optional(e)||/^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[\/?#]\S*)?$/i.test(t)},date:(e=!1,function(t,i){return e||(e=!0,this.settings.debug&&window.console&&console.warn("The `date` method is deprecated and will be removed in version '2.0.0'.\nPlease don't use it, since it relies on the Date constructor, which\nbehaves very differently across browsers and locales. Use `dateISO`\ninstead or one of the locale specific methods in `localizations/`\nand `additional-methods.js`.")),this.optional(i)||!/Invalid|NaN/.test(new Date(t).toString())}),dateISO:function(t,e){return this.optional(e)||/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(t)},number:function(t,e){return this.optional(e)||/^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(t)},digits:function(t,e){return this.optional(e)||/^\d+$/.test(t)},minlength:function(e,i,s){var n=t.isArray(e)?e.length:this.getLength(e,i);return this.optional(i)||n>=s},maxlength:function(e,i,s){var n=t.isArray(e)?e.length:this.getLength(e,i);return this.optional(i)||n<=s},rangelength:function(e,i,s){var n=t.isArray(e)?e.length:this.getLength(e,i);return this.optional(i)||n>=s[0]&&n<=s[1]},min:function(t,e,i){return this.optional(e)||t>=i},max:function(t,e,i){return this.optional(e)||t<=i},range:function(t,e,i){return this.optional(e)||t>=i[0]&&t<=i[1]},step:function(e,i,s){var n,r=t(i).attr("type"),a="Step attribute on input type "+r+" is not supported.",o=new RegExp("\\b"+r+"\\b"),l=function(t){var e=(""+t).match(/(?:\.(\d+))?$/);return e&&e[1]?e[1].length:0},h=function(t){return Math.round(t*Math.pow(10,n))},d=!0;if(r&&!o.test(["text","number","range"].join()))throw new Error(a);return n=l(s),(l(e)>n||h(e)%h(s)!=0)&&(d=!1),this.optional(i)||d},equalTo:function(e,i,s){var n=t(s);return this.settings.onfocusout&&n.not(".validate-equalTo-blur").length&&n.addClass("validate-equalTo-blur").on("blur.validate-equalTo",function(){t(i).valid()}),e===n.val()},remote:function(e,i,s,n){if(this.optional(i))return"dependency-mismatch";n="string"==typeof n&&n||"remote";var r,a,o,l=this.previousValue(i,n);return this.settings.messages[i.name]||(this.settings.messages[i.name]={}),l.originalMessage=l.originalMessage||this.settings.messages[i.name][n],this.settings.messages[i.name][n]=l.message,s="string"==typeof s&&{url:s}||s,o=t.param(t.extend({data:e},s.data)),l.old===o?l.valid:(l.old=o,r=this,this.startRequest(i),(a={})[i.name]=e,t.ajax(t.extend(!0,{mode:"abort",port:"validate"+i.name,dataType:"json",data:a,context:r.currentForm,success:function(t){var s,a,o,h=!0===t||"true"===t;r.settings.messages[i.name][n]=l.originalMessage,h?(o=r.formSubmitted,r.resetInternals(),r.toHide=r.errorsFor(i),r.formSubmitted=o,r.successList.push(i),r.invalid[i.name]=!1,r.showErrors()):(s={},a=t||r.defaultMessage(i,{method:n,parameters:e}),s[i.name]=l.message=a,r.invalid[i.name]=!0,r.showErrors(s)),l.valid=h,r.stopRequest(i,h)}},s)),"pending")}}});var i,s={};return t.ajaxPrefilter?t.ajaxPrefilter(function(t,e,i){var n=t.port;"abort"===t.mode&&(s[n]&&s[n].abort(),s[n]=i)}):(i=t.ajax,t.ajax=function(e){var n=("mode"in e?e:t.ajaxSettings).mode,r=("port"in e?e:t.ajaxSettings).port;return"abort"===n?(s[r]&&s[r].abort(),s[r]=i.apply(this,arguments),s[r]):i.apply(this,arguments)}),t}); 175 176 177// PDF-Icon an Links auf PDFs anhängen 178 function svgIconToPDF() { 179 var $pdf = jQuery('a[href$=".pdf"]'); 180 $pdf.addClass('pdf').attr('target', '_blank').append('<svg><use xlink:href="#shape-pdf" /></svg>'); 181 } 182 svgIconToPDF(); 183 184// Get Viewport Dimensions 185// returns object with viewport dimensions to match css in width and height properties 186// http://andylangton.co.uk/blog/development/get-viewport-size-width-and-height-javascript 187 188function updateViewportDimensions() { 189 var w=window,d=document,e=d.documentElement,g=d.getElementsByTagName('body')[0],x=w.innerWidth||e.clientWidth||g.clientWidth,y=w.innerHeight||e.clientHeight||g.clientHeight; 190 return { width:x,height:y }; 191} 192 193// setting the viewport width 194var viewport = updateViewportDimensions(); 195 196// Throttle Resize-triggered Events 197// Wrap your actions in this function to throttle the frequency of firing them off, for better performance, esp. on mobile. 198// http://stackoverflow.com/questions/2854407/javascript-jquery-window-resize-how-to-fire-after-the-resize-is-completed 199var waitForFinalEvent = (function () { 200 var timers = {}; 201 return function (callback, ms, uniqueId) { 202 if (!uniqueId) { uniqueId = "Don't call this twice without a uniqueId"; } 203 if (timers[uniqueId]) { clearTimeout (timers[uniqueId]); } 204 timers[uniqueId] = setTimeout(callback, ms); 205 }; 206})(); 207 208// how long to wait before deciding the resize has stopped, in ms. Aroun
208d 50-100 should work ok. 209var timeToWaitForLast = 100; 210 211 212/* 213new gridjs.Grid({ 214 columns: ["Position", "Name", "Vorname", "Anschrift", "Telefon", "E-Mail"], 215 data: [ 216 ["Pfarrer","Diederichs","Paul","SchlossstraÃe 16, 56856 Zell (Mosel)","06542 / 4536","[email protected]"], 217 ["Pater","Brenken","Matthias","KarmelitenstraÃe 2, 54538 Bengel","06532 / 9395-13","[email protected]"], 218 ["Gemeindereferent","Ivanovic","Ivo","SchlossstraÃe 16, 56856 Zell (Mosel)","06542 / 961175","[email protected]"], 219 ["Kaplan","Kurissummoottil Chacko","Shaibin","SchlossstraÃe 16, 56856 Zell (Mosel)","0151 / 66199007","[email protected]"], 220 ["Pastoralpraktikant","Kossmann","Christian","SchlossstraÃe 16, 56856 Zell (Mosel)","06542 / 9692282","[email protected]"], 221 ["Pfarrsekretärin","Dillenburg","Elsbeth","SchlossstraÃe 16, 56856 Zell (Mosel)","06542 / 4536","[email protected]"], 222 ["Pfarrsekretärin","Manderscheid","Tanja","SchlossstraÃe 16, 56856 Zell (Mosel)","06542 / 4536","[email protected]"], 223 ["Pfarrsekretärin","March","Leonie","SchlossstraÃe 16, 56856 Zell (Mosel)","06542 / 4536","[email protected]"] 224 ] 225}).render(document.getElementById("table-kirche-01")); 226*/ 227 228jQuery(document).ready(function($) { 229 230 // Animationen Quicklist 231 var fig3 = $('.iconlist ul'); 232 var $icon3 = fig3.children('li').hover(function() { 233 234 var self = this; 235 $(self).removeClass('anim delay anim-reverse'); 236 $(self).addClass('anim'); 237 238 }, function() { 239 240 var self = this; 241 $(self).addClass('anim-reverse delay'); 242 243 setTimeout(function(){ 244 245 if($(self).hasClass('delay')) { 246 $(self).removeClass('anim-reverse delay anim') 247 } 248 },750) 249 250 }); 251 252 // prüfe auf jQuery UI 253 if (typeof jQuery.ui != 'undefined') { 254 255 // jQuery UI Datepicker 256 jQuery( "#datepicker-from" ).datepicker({ 257 changeMonth: true, 258 changeYear: true, 259 minDate: 'dateToday', 260 numberOfMonths: 1, 261 dateFormat: 'dd MM, yy', 262 onClose: function( selectedDate ) { 263 jQuery( "#datepicker-to" ).datepicker( "option", "minDate", selectedDate ); 264 } 265 }); 266 267 jQuery( "#datepicker-to" ).datepicker({ 268 changeMonth: true, 269 changeYear: true, 270 numberOfMonths: 1, 271 dateFormat: 'dd MM, yy', 272 onClose: function( selectedDate ) { 273 jQuery( "#datepicker-from" ).datepicker( "option", "maxDate", selectedDate ); 274 } 275 }); 276 277 // German initialisation for the jQuery UI date picker plugin. (minified) 278 // Original written by Milian Wolff ([email protected]). 279 (function(e){return e.regional.de={closeText:"SchlieÃen",prevText:"<Zurück",nextText:"Vor>",currentText:"Heute",monthNames:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],dayNamesShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayNamesMin:["So","Mo","Di","Mi","Do","Fr","Sa"],weekHeader:"KW",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},e.setDefaults(e.regional.de),e.regional.de}); 280 }; 281 282 // Sterne für required field 283 var req = $('.wpcf7-form input.wpcf7-validates-as-required'); 284 req.parents('.form-field-wrap').children('label').append('<abbr class="validation-required"><svg><use xlink:href="#shape-star"></use></svg></abbr>'); 285 286 var reqWoo = $('.validate-required'); 287 reqWoo.children('label').append('<abbr class="validation-required"><svg class="icon-star"><use xlink:href="#shape-star"></use></svg></abbr>'); 288 289 jQuery.validator.addClassRules("wpcf7-validates-as-required", { 290 required: true 291 }); 292 293 $('p').each(function() { 294 var $this = $(this); 295 if($this.html().replace(/\s| /g, '').length == 0) 296 $this.remove(); 297 }); 298 299 300 $('.events').on('click', 'details', function () { 301 $('details').not($(this)).removeAttr('open'); 302 }); 303 304 305 $('.form-submit-wrap input').click(function(){ 306 $(this).parents('form').validate(); 307 }); 308 309 $('a[href*="#"]').not('[href="#"]').not('[href="#0"]').click(function(event) { 310 311 // On-page links
312 if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) { 313 314 // Figure out element to scroll to 315 var target = $(this.hash); 316 target = target.length ? target : $('[name=' + this.hash.slice(1) + ']'); 317 318 // Does a scroll target exist? 319 if (target.length) { 320 321 var offsetSize = $("header").innerHeight(); 322 var slideshowHeight = $('.header-gallery-wrap').innerHeight(); 323 324 // Only prevent default if animation is actually gonna happen 325 event.preventDefault(); 326 327 $('html, body').animate({ 328 scrollTop: target.offset().top - 60 329 }, 500, function() { 330 331 // Callback after animation 332 // Must change focus! 333 var $target = $(target); 334 $target.focus(); 335 336 // Checking if the target was focused 337 if ($target.is(":focus")) { 338 return false; 339 } else { 340 341 // Adding tabindex for elements not focusable 342 $target.attr('tabindex','-1'); 343 344 // Set focus again 345 $target.focus(); 346 }; 347 348 }); 349 } 350 } 351 352 }); 353 354 $('.gallery br').remove(); 355 356 // Dorfplan Zoom Script 357 if ($('.zoom').length) { 358 359 $('.zoom').elevateZoom({ 360 zoomType: "inner", 361 cursor: "crosshair", 362 zoomWindowFadeIn: 500, 363 zoomWindowFadeOut: 500 364 }); 365 } 366 367 368 /* 369 $('.entry-list-meta .mail span a').each(function(){ 370 console.log($(this).attr('href')); 371 }); 372 */ 373 374 375 var dBcontent=jQuery(".display-box > div"),dBtabs=jQuery(".display-box-navigator li a");function GetUrlParameter(a){sURLVariables=window.location.search.substring(1).split("&");for(var t=0;t<sURLVariables.length;t++){var i=sURLVariables[t].split("=");if(i[0]==a)return i[1]}}dBtabs.on("click",function(a){a.preventDefault();var t=$(this),i=t.closest(".display-box-wrap"),r=i.find(".display-box-navigator li a"),o=i.find(".display-box").find("> div");r.removeClass("current"),t.addClass("current");var n=t.parents("li").index();o.removeClass("show"),o.eq(n).addClass("show");var s=t.data("anchor");window.history.pushState("","","?db="+s)}),$(document).on("click",".db-anchor",function(a){a.preventDefault();var t=$(this).data("anchor");$(".display-box-navigator li").find("[data-anchor="+t+"]").trigger("click")}),$("body").hasClass("home")&&$(".menu-item > a").on("click",function(a){var t=$(this).attr("href");if(t.startsWith("/?db=")){a.preventDefault(),t=t.replace("/?db=","");var i=$(".display-box-navigator li").find("[data-anchor="+t+"]"),r=i.parents(".section-wrap").first();$("html, body").animate({scrollTop:r.offset().top-130}),i.trigger("click")}});var db=GetUrlParameter("db");db&&($("html, body").animate({scrollTop:$("[data-anchor="+db+"]").offset().top-130},500),setTimeout(function(){$(".display-box-navigator li").find("[data-anchor="+db+"]").trigger("click")},500)),viewport.width<960&&($(".display-box-navigator").each(function(){var a=$(this),t=a.find("li a"),i=$('<select class="display-box-navigator"></select>');t.each(function(){var a=$(this);i.append($("<option></option>").val(a.data("anchor")).text(a.text()))}),a.replaceWith(i)}),$(document).on("change",".display-box-navigator",function(){var a=$(this).val(),t=this.selectedIndex,i=$(this).parents(".display-box-wrap").find(".display-box");console.log(i),i.children("div").removeClass("show"),i.children("div").eq(t).addClass("show"),window.history.pushState("","","?db="+a)})); 376 377 378 $('.accordion').accordion({ 379 active: false, 380 collapsible: true, 381 heightStyle: 'content', 382 }); 383 384 385 386 387 388 389 390 391 392 // Lokalisierung jQuery Validation 393 $.extend( $.validator.messages, {required: "Dieses Feld ist ein Pflichtfeld.",maxlength: $.validator.format( "Geben Sie bitte maximal {0} Zeichen ein." ),minlength: $.validator.format( "Geben Sie bitte mindestens {0} Zeichen ein." ),rangelength: $.validator.format( "Geben Sie bitte mindestens {0} und maximal {1} Zeichen ein." ),email: "Geben Sie bitte eine gültige E-Mail-Adresse ein.",url: "Geben Sie bitte eine gültige URL ein.",date: "Geben Sie bitte ein gültiges Datum ein.",number: "Geben Sie bitte eine Nummer ein.",digits: "Geben Sie bitte nur Ziffern ein.",equalTo: "Wiederholen Sie bitte denselben Wert.",range: $.validator.format( "Geben Sie bitte einen Wert zwischen {0} und {1} ein." ),max: $.validator.format( "Geben Sie bitte einen Wert kleiner oder gleich {0} ein." ),min: $.validator.format( "Geben Sie bitte einen Wert gröÃer oder gleich {0} ein." ),creditcard: "Geben Sie bitte eine gültige Kreditkarten-Nummer ein.",remote: "Korrigieren Sie bitte dieses Feld.",dateISO: "Geben Sie bitte ein gültiges Datum ein (ISO-Format).",step: $.validator.format( "Geben Sie bitte ein Vielfaches von {0} ein." ),maxWords: $.validator.format( "Geben Sie bitte {0} Wörter oder weniger ein." ),minWords: $.validator.format( "Geben Sie bitte mindestens {0} Wörter ein." ),rangeWords: $.validator.format( "Geben Sie bitte zwischen {0} und {1} Wörtern ein." ),accept: "Geben Sie bitte einen Wert mit einem gültigen MIME-Typ ein.",alphanumeric: "Geben Sie bitte nur Buchstaben (keine Umlaute), Zahlen oder Unterstriche ein.",bankaccountNL: "Geben Sie bitte eine gültige Kontonummer ein.",bankorgiroaccountNL: "Geben Sie bitte eine gültige Bank- oder Girokontonummer ein.",bic: "Geben Sie bitte einen gültigen BIC-Code ein.",cifES: "Geben Sie bitte eine gültige CIF-Nummer ein.",cpfBR: "Geben Sie bitte eine gültige CPF-Nummer ein.",creditcardtypes: "Geben Sie bitte eine gültige Kreditkarten-Nummer ein.",currency: "Geben Sie bitte eine gültige Währung ein.",extension: "Geben Sie bitte einen Wert mit einer gültigen Erweiterung ein.",giroaccountNL: "Geben Sie bitte eine gültige Girokontonummer ein.",iban: "Geben Sie bitte eine gültige IBAN ein.",integer: "Geben Sie bitte eine positive oder negative Nicht-Dezimalzahl ein.",ipv4: "Geben Sie bitte eine gültige IPv4-Adresse ein.",ipv6: "Geben Sie bitte eine gültige IPv6-Adresse ein.",lettersonly: "Geben Sie bitte nur Buchstaben ein.",letterswithbasicpunc: "Geben Sie bitte nur Buchstaben oder Interpunktion ein.",mobileNL: "Geben Sie bitte eine gültige Handynummer ein.",mobileUK: "Geben Sie bitte eine gültige Handynummer ein.",netmask: "Geben Sie bitte eine gültige Netzmaske ein.",nie
393ES: "Geben Sie bitte eine gültige NIE-Nummer ein.",nifES: "Geben Sie bitte eine gültige NIF-Nummer ein.",nipPL: "Geben Sie bitte eine gültige NIP-Nummer ein.",notEqualTo: "Geben Sie bitte einen anderen Wert ein. Die Werte dürfen nicht gleich sein.",nowhitespace: "Kein Leerzeichen bitte.",pattern: "Ungültiges Format.",phoneNL: "Geben Sie bitte eine gültige Telefonnummer ein.",phonesUK: "Geben Sie bitte eine gültige britische Telefonnummer ein.",phoneUK: "Geben Sie bitte eine gültige Telefonnummer ein.",phoneUS: "Geben Sie bitte eine gültige Telefonnummer ein.",postalcodeBR: "Geben Sie bitte eine gültige brasilianische Postleitzahl ein.",postalCodeCA: "Geben Sie bitte eine gültige kanadische Postleitzahl ein.",postalcodeIT: "Geben Sie bitte eine gültige italienische Postleitzahl ein.",postalcodeNL: "Geben Sie bitte eine gültige niederländische Postleitzahl ein.",postcodeUK: "Geben Sie bitte eine gültige britische Postleitzahl ein.",require_from_group: $.validator.format( "Füllen Sie bitte mindestens {0} dieser Felder aus." ),skip_or_fill_minimum: $.validator.format( "Ãberspringen Sie bitte diese Felder oder füllen Sie mindestens {0} von ihnen aus." ),stateUS: "Geben Sie bitte einen gültigen US-Bundesstaat ein.",strippedminlength: $.validator.format( "Geben Sie bitte mindestens {0} Zeichen ein." ),time: "Geben Sie bitte eine gültige Uhrzeit zwischen 00:00 und 23:59 ein.",time12h: "Geben Sie bitte eine gültige Uhrzeit im 12-Stunden-Format ein.",vinUS: "Die angegebene Fahrzeugidentifikationsnummer (VIN) ist ungültig.",zipcodeUS: "Die angegebene US-Postleitzahl ist ungültig.",ziprange: "Ihre Postleitzahl muss im Bereich 902xx-xxxx bis 905xx-xxxx liegen."}); 394 395}); 396 397 398 399/***/ })
399, 400 401/***/ 0: 402/*!******************************!*\ 403 !*** multi ../js/scripts.js ***! 404 \******************************/ 405/*! no static exports found */ 406/***/ (function(module, exports, __webpack_require__) { 407 408module.exports = __webpack_require__(/*! /Volumes/sites/bullay.de/build/js/scripts.js */"../js/scripts.js"); 409 410 411/***/ }), 412 413/***/ "jquery": 414/*!*************************!*\ 415 !*** external "jQuery" ***! 416 \*************************/ 417/*! no static exports found */ 418/***/ (function(module, exports) { 419 420module.exports = jQuery; 421 422/***/ }) 423 424/******/ }); 425//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4uL2pzL3NjcmlwdHMuanMiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwialF1ZXJ5XCIiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtRQUFBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBOzs7UUFHQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0EsMENBQTBDLGdDQUFnQztRQUMxRTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLHdEQUF3RCxrQkFBa0I7UUFDMUU7UUFDQSxpREFBaUQsY0FBYztRQUMvRDs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0EseUNBQXlDLGlDQUFpQztRQUMxRSxnSEFBZ0gsbUJBQW1CLEVBQUU7UUFDckk7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSwyQkFBMkIsMEJBQTBCLEVBQUU7UUFDdkQsaUNBQWlDLGVBQWU7UUFDaEQ7UUFDQTtRQUNBOztRQUVBO1FBQ0Esc0RBQXNELCtEQUErRDs7UUFFckg7UUFDQTs7O1FBR0E7UUFDQTs7Ozs7Ozs7Ozs7O0FDbEZBO0FBQ0EsOERBQThELGNBQWMsY0FBYyxhQUFhO0FBQ3ZHLG1CQUFtQixPQUFPLG1CQUFtQixXQUFXLFNBQVMsYUFBYSxxRkFBcUYscUJBQXFCLDZCQUE2Qix3RUFBd0UscURBQXFELHVEQUF1RCx1QkFBdUIsYUFBYSxnREFBZ0Q7QUFDN2QseUhBQXlILG1CQUFtQiwwR0FBMEcscURBQXFELFNBQVMsRUFBRSxxQkFBcUIsV0FBVyxzQkFBc0Isb0JBQW9CLHVCQUF1QixtQkFBbUIsdUJBQXVCLG9CQUFvQixxQkFBcUI7QUFDMWUsU0FBUyxjQUFjLDBCQUEwQix3Q0FBd0Ms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BVUo7QUFDQSxxQ0FBcUMsc0dBQXNHLEVBQUUsNkVBQTZFLEVBQUUsK0VBQStFLEVBQUUsY0FBYyxFQUFFLGdYQUFnWCxFQUFFLE1BQU0sRUFBRSxtRkFBbUYsRUFBRSxrRkFBa0YsRUFBRSx5UEFBeVAsRUFBRSx5REFBeUQsRUFBRSx3RkFBd0YsRUFBRSwyRUFBMkUsRUFBRSxNQUFNLEVBQUUseXdFQUF5d0UsRUFBRSxrSUFBa0ksRUFBRSxxSkFBcUosRUFBRSwwWEFBMFg7O0FBRXJ1SSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDN1JELHdCIiwiZmlsZSI6InNjcmlwdHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybi
425BpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gMCk7XG4iLCIvKiBqUXVlcnkgZWxldmF0ZVpvb20gMy4wLjggLSBEZW1vJ3MgYW5kIGRvY3VtZW50YXRpb246IC0gd3d3LmVsZXZhdGV3ZWIuY28udWsvaW1hZ2Utem9vbSAtIENvcHlyaWdodCAoYykgMjAxMyBBbmRyZXcgRWFkZXMgLSB3d3cuZWxldmF0ZXdlYi5jby51ayAtIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIExHUEwgbGljZW5zZXMuIC0gaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NSVRfTGljZW5zZSAtIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR05VX0dlbmVyYWxfUHVibGljX0xpY2Vuc2UgKi9cblwiZnVuY3Rpb25cIiE9PXR5cGVvZiBPYmplY3QuY3JlYXRlJiYoT2JqZWN0LmNyZWF0ZT1mdW5jdGlvbihkKXtmdW5jdGlvbiBoKCl7fWgucHJvdG90eXBlPWQ7cmV0dXJuIG5ldyBofSk7XG4oZnVuY3Rpb24oZCxoLGwsbSl7dmFyIGs9e2luaXQ6ZnVuY3Rpb24oYixhKXt2YXIgYz10aGlzO2MuZWxlbT1hO2MuJGVsZW09ZChhKTtjLmltYWdlU3JjPWMuJGVsZW0uZGF0YShcInpvb20taW1hZ2VcIik/Yy4kZWxlbS5kYXRhKFwiem9vbS1pbWFnZVwiKTpjLiRlbGVtLmF0dHIoXCJzcmNcIik7Yy5vcHRpb25zPWQuZXh0ZW5kKHt9LGQuZm4uZWxldmF0ZVpvb20ub3B0aW9ucyxiKTtjLm9wdGlvbnMudGludCYmKGMub3B0aW9ucy5sZW5zQ29sb3VyPVwibm9uZVwiLGMub3B0aW9ucy5sZW5zT3BhY2l0eT1cIjFcIik7XCJpbm5lclwiPT1jLm9wdGlvbnMuem9vbVR5cGUmJihjLm9wdGlvbnMuc2hvd0xlbnM9ITEpO2MuJGVsZW0ucGFyZW50KCkucmVtb3ZlQXR0cihcInRpdGxlXCIpLnJlbW92ZUF0dHIoXCJhbHRcIik7Yy56b29tSW1hZ2U9Yy5pbWFnZVNyYztjLnJlZnJlc2goMSk7ZChcIiNcIitjLm9wdGlvbnMuZ2FsbGVyeStcIiBhXCIpLmNsaWNrKGZ1bmN0aW9uKGEpe2Mub3B0aW9ucy5nYWxsZXJ5QWN0aXZlQ2xhc3MmJlxuKGQoXCIjXCIrYy5vcHRpb25zLmdhbGxlcnkrXCIgYVwiKS5yZW1vdmVDbGFzcyhjLm9wdGlvbnMuZ2FsbGVyeUFjdGl2ZUNsYXNzKSxkKHRoaXMpLmFkZENsYXNzKGMub3B0aW9ucy5nYWxsZXJ5QWN0aXZlQ2xhc3MpKTthLnByZXZlbn
425REZWZhdWx0KCk7ZCh0aGlzKS5kYXRhKFwiem9vbS1pbWFnZVwiKT9jLnpvb21JbWFnZVByZT1kKHRoaXMpLmRhdGEoXCJ6b29tLWltYWdlXCIpOmMuem9vbUltYWdlUHJlPWQodGhpcykuZGF0YShcImltYWdlXCIpO2Muc3dhcHRoZWltYWdlKGQodGhpcykuZGF0YShcImltYWdlXCIpLGMuem9vbUltYWdlUHJlKTtyZXR1cm4hMX0pfSxyZWZyZXNoOmZ1bmN0aW9uKGIpe3ZhciBhPXRoaXM7c2V0VGltZW91dChmdW5jdGlvbigpe2EuZmV0Y2goYS5pbWFnZVNyYyl9LGJ8fGEub3B0aW9ucy5yZWZyZXNoKX0sZmV0Y2g6ZnVuY3Rpb24oYil7dmFyIGE9dGhpcyxjPW5ldyBJbWFnZTtjLm9ubG9hZD1mdW5jdGlvbigpe2EubGFyZ2VXaWR0aD1jLndpZHRoO2EubGFyZ2VIZWlnaHQ9XG5jLmhlaWdodDthLnN0YXJ0Wm9vbSgpO2EuY3VycmVudEltYWdlPWEuaW1hZ2VTcmM7YS5vcHRpb25zLm9uWm9vbWVkSW1hZ2VMb2FkZWQoYS4kZWxlbSl9O2Muc3JjPWJ9LHN0YXJ0Wm9vbTpmdW5jdGlvbigpe3ZhciBiPXRoaXM7Yi5ueldpZHRoPWIuJGVsZW0ud2lkdGgoKTtiLm56SGVpZ2h0PWIuJGVsZW0uaGVpZ2h0KCk7Yi5pc1dpbmRvd0FjdGl2ZT0hMTtiLmlzTGVuc0FjdGl2ZT0hMTtiLmlzVGludEFjdGl2ZT0hMTtiLm92ZXJXaW5kb3c9ITE7Yi5vcHRpb25zLmltYWdlQ3Jvc3NmYWRlJiYoYi56b29tV3JhcD1iLiRlbGVtLndyYXAoJzxkaXYgc3R5bGU9XCJoZWlnaHQ6JytiLm56SGVpZ2h0K1wicHg7d2lkdGg6XCIrYi5ueldpZHRoKydweDtcIiBjbGFzcz1cInpvb21XcmFwcGVyXCIgLz4nKSxiLiRlbGVtLmNzcyhcInBvc2l0aW9uXCIsXCJhYnNvbHV0ZVwiKSk7Yi56b29tTG9jaz0xO2Iuc2Nyb2xsaW5nTG9jaz0hMTtiLmNoYW5nZUJnU2l6ZT0hMTtiLmN1cnJlbnRab29tTGV2ZWw9Yi5vcHRpb25zLnpvb21MZXZlbDtcbmIubnpPZmZzZXQ9Yi4kZWxlbS5vZmZzZXQoKTtiLndpZHRoUmF0aW89Yi5sYXJnZVdpZHRoL2IuY3VycmVudFpvb21MZXZlbC9iLm56V2lkdGg7Yi5oZWlnaHRSYXRpbz1iLmxhcmdlSGVpZ2h0L2IuY3VycmVudFpvb21MZXZlbC9iLm56SGVpZ2h0O1wid2luZG93XCI9PWIub3B0aW9ucy56b29tVHlwZSYmKGIuem9vbVdpbmRvd1N0eWxlPVwib3ZlcmZsb3c6IGhpZGRlbjtiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwcHggMHB4O3RleHQtYWxpZ246Y2VudGVyO2JhY2tncm91bmQtY29sb3I6IFwiK1N0cmluZyhiLm9wdGlvbnMuem9vbVdpbmRvd0JnQ29sb3VyKStcIjt3aWR0aDogXCIrU3RyaW5nKGIub3B0aW9ucy56b29tV2luZG93V2lkdGgpK1wicHg7aGVpZ2h0OiBcIitTdHJpbmcoYi5vcHRpb25zLnpvb21XaW5kb3dIZWlnaHQpK1wicHg7ZmxvYXQ6IGxlZnQ7YmFja2dyb3VuZC1zaXplOiBcIitiLmxhcmdlV2lkdGgvYi5jdXJyZW50Wm9vbUxldmVsK1wicHggXCIrYi5sYXJnZUhlaWdodC9iLmN1cnJlbnRab29tTGV2ZWwrXG5cInB4O2Rpc3BsYXk6IG5vbmU7ei1pbmRleDoxMDA7Ym9yZGVyOiBcIitTdHJpbmcoYi5vcHRpb25zLmJvcmRlclNpemUpK1wicHggc29saWQgXCIrYi5vcHRpb25zLmJvcmRlckNvbG91citcIjtiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O3Bvc2l0aW9uOiBhYnNvbHV0ZTtcIik7aWYoXCJpbm5lclwiPT1iLm9wdGlvbnMuem9vbVR5cGUpe3ZhciBhPWIuJGVsZW0uY3NzKFwiYm9yZGVyLWxlZnQtd2lkdGhcIik7Yi56b29tV2luZG93U3R5bGU9XCJvdmVyZmxvdzogaGlkZGVuO21hcmdpbi1sZWZ0OiBcIitTdHJpbmcoYSkrXCI7bWFyZ2luLXRvcDogXCIrU3RyaW5nKGEpK1wiO2JhY2tncm91bmQtcG9zaXRpb246IDBweCAwcHg7d2lkdGg6IFwiK1N0cmluZyhiLm56V2lkdGgpK1wicHg7aGVpZ2h0OiBcIitTdHJpbmcoYi5uekhlaWdodCkrXCJweDtmbG9hdDogbGVmdDtkaXNwbGF5OiBub25lO2N1cnNvcjpcIitiLm9wdGlvbnMuY3Vyc29yK1wiO3B4IHNvbGlkIFwiK2Iub3B0aW9ucy5ib3JkZXJDb2xvdXIrXCI7YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtwb3NpdGlvbjogYWJzb2x1dGU7XCJ9XCJ3aW5kb3dcIj09XG5iLm9wdGlvbnMuem9vbVR5cGUmJihsZW5zSGVpZ2h0PWIubnpIZWlnaHQ8Yi5vcHRpb25zLnpvb21XaW5kb3dXaWR0aC9iLndpZHRoUmF0aW8/Yi5uekhlaWdodDpTdHJpbmcoYi5vcHRpb25zLnpvb21XaW5kb3dIZWlnaHQvYi5oZWlnaHRSYXRpbyksbGVuc1dpZHRoPWIubGFyZ2VXaWR0aDxiLm9wdGlvbnMuem9vbVdpbmRvd1dpZHRoP2IubnpXaWR0aDpiLm9wdGlvbnMuem9vbVdpbmRvd1dpZHRoL2Iud2lkdGhSYXRpbyxiLmxlbnNTdHlsZT1cImJhY2tncm91bmQtcG9zaXRpb246IDBweCAwcHg7d2lkdGg6IFwiK1N0cmluZyhiLm9wdGlvbnMuem9vbVdpbmRvd1dpZHRoL2Iud2lkdGhSYXRpbykrXCJweDtoZWlnaHQ6IFwiK1N0cmluZyhiLm9wdGlvbnMuem9vbVdpbmRvd0hlaWdodC9iLmhlaWdodFJhdGlvKStcInB4O2Zsb2F0OiByaWdodDtkaXNwbGF5OiBub25lO292ZXJmbG93OiBoaWRkZW47ei1pbmRleDogOTk5Oy13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApO29wYWNpdHk6XCIrXG5iLm9wdGlvbnMubGVuc09wYWNpdHkrXCI7ZmlsdGVyOiBhbHBoYShvcGFjaXR5ID0gXCIrMTAwKmIub3B0aW9ucy5sZW5zT3BhY2l0eStcIik7IHpvb206MTt3aWR0aDpcIitsZW5zV2lkdGgrXCJweDtoZWlnaHQ6XCIrbGVuc0hlaWdodCtcInB4O2JhY2tncm91bmQtY29sb3I6XCIrYi5vcHRpb25zLmxlbnNDb2xvdXIrXCI7Y3Vyc29yOlwiK2Iub3B0aW9ucy5jdXJzb3IrXCI7Ym9yZGVyOiBcIitiLm9wdGlvbnMubGVuc0JvcmRlclNpemUrXCJweCBzb2xpZCBcIitiLm9wdGlvbnMubGVuc0JvcmRlckNvbG91citcIjtiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O3Bvc2l0aW9uOiBhYnNvbHV0ZTtcIik7Yi50aW50U3R5bGU9XCJkaXNwbGF5OiBibG9jaztwb3NpdGlvbjogYWJzb2x1dGU7YmFja2dyb3VuZC1jb2xvcjogXCIrYi5vcHRpb25zLnRpbnRDb2xvdXIrXCI7ZmlsdGVyOmFscGhhKG9wYWNpdHk9MCk7b3BhY2l0eTogMDt3aWR0aDogXCIrYi5ueldpZHRoK1wicHg7aGVpZ2h0OiBcIitiLm56SGVpZ2h0K1wicHg7XCI7XG5iLmxlbnNSb3VuZD1cIlwiO1wibGVuc1wiPT1iLm9wdGlvbnMuem9vbVR5cGUmJihiLmxlbnNTdHlsZT1cImJhY2tncm91bmQtcG9zaXRpb246IDBweCAwcHg7ZmxvYXQ6IGxlZnQ7ZGlzcGxheTogbm9uZTtib3JkZXI6IFwiK1N0cmluZyhiLm9wdGlvbnMuYm9yZGVyU2l6ZSkrXCJweCBzb2xpZCBcIitiLm9wdGlvbnMuYm9yZGVyQ29sb3VyK1wiO3dpZHRoOlwiK1N0cmluZyhiLm9wdGlvbnMubGVuc1NpemUpK1wicHg7aGVpZ2h0OlwiK1N0cmluZyhiLm9wdGlvbnMubGVuc1NpemUpK1wicHg7YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtwb3NpdGlvbjogYWJzb2x1dGU7XCIpO1wicm91bmRcIj09Yi5vcHRpb25zLmxlbnNTaGFwZSYmKGIubGVuc1JvdW5kPVwiYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogXCIrU3RyaW5nKGIub3B0aW9ucy5sZW5zU2l6ZS8yK2Iub3B0aW9ucy5ib3JkZXJTaXplKStcInB4O2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOiBcIitTdHJpbmc
425oYi5vcHRpb25zLmxlbnNTaXplLzIrYi5vcHRpb25zLmJvcmRlclNpemUpK1xuXCJweDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiBcIitTdHJpbmcoYi5vcHRpb25zLmxlbnNTaXplLzIrYi5vcHRpb25zLmJvcmRlclNpemUpK1wicHg7Ym9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IFwiK1N0cmluZyhiLm9wdGlvbnMubGVuc1NpemUvMitiLm9wdGlvbnMuYm9yZGVyU2l6ZSkrXCJweDtcIik7Yi56b29tQ29udGFpbmVyPWQoJzxkaXYgY2xhc3M9XCJ6b29tQ29udGFpbmVyXCIgc3R5bGU9XCItd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OicrYi5uek9mZnNldC5sZWZ0K1wicHg7dG9wOlwiK2IubnpPZmZzZXQudG9wK1wicHg7aGVpZ2h0OlwiK2IubnpIZWlnaHQrXCJweDt3aWR0aDpcIitiLm56V2lkdGgrJ3B4O1wiPjwvZGl2PicpO2QoXCJib2R5XCIpLmFwcGVuZChiLnpvb21Db250YWluZXIpO2Iub3B0aW9ucy5jb250YWluTGVuc1pvb20mJlwibGVuc1wiPT1iLm9wdGlvbnMuem9vbVR5cGUmJmIuem9vbUNvbnRhaW5lci5jc3MoXCJvdmVyZmxvd1wiLFxuXCJoaWRkZW5cIik7XCJpbm5lclwiIT1iLm9wdGlvbnMuem9vbVR5cGUmJihiLnpvb21MZW5zPWQoXCI8ZGl2IGNsYXNzPSd6b29tTGVucycgc3R5bGU9J1wiK2IubGVuc1N0eWxlK2IubGVuc1JvdW5kK1wiJz4mbmJzcDs8L2Rpdj5cIikuYXBwZW5kVG8oYi56b29tQ29udGFpbmVyKS5jbGljayhmdW5jdGlvbigpe2IuJGVsZW0udHJpZ2dlcihcImNsaWNrXCIpfSksYi5vcHRpb25zLnRpbnQmJihiLnRpbnRDb250YWluZXI9ZChcIjxkaXYvPlwiKS5hZGRDbGFzcyhcInRpbnRDb250YWluZXJcIiksYi56b29tVGludD1kKFwiPGRpdiBjbGFzcz0nem9vbVRpbnQnIHN0eWxlPSdcIitiLnRpbnRTdHlsZStcIic+PC9kaXY+XCIpLGIuem9vbUxlbnMud3JhcChiLnRpbnRDb250YWluZXIpLGIuem9vbVRpbnRjc3M9Yi56b29tTGVucy5hZnRlcihiLnpvb21UaW50KSxiLnpvb21UaW50SW1hZ2U9ZCgnPGltZyBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMHB4OyB0b3A6IDBweDsgbWF4LXdpZHRoOiBub25lOyB3aWR0aDogJytcbmIubnpXaWR0aCtcInB4OyBoZWlnaHQ6IFwiK2IubnpIZWlnaHQrJ3B4O1wiIHNyYz1cIicrYi5pbWFnZVNyYysnXCI+JykuYXBwZW5kVG8oYi56b29tTGVucykuY2xpY2soZnVuY3Rpb24oKXtiLiRlbGVtLnRyaWdnZXIoXCJjbGlja1wiKX0pKSk7aXNOYU4oYi5vcHRpb25zLnpvb21XaW5kb3dQb3NpdGlvbik/Yi56b29tV2luZG93PWQoXCI8ZGl2IHN0eWxlPSd6LWluZGV4Ojk5OTtsZWZ0OlwiK2Iud2luZG93T2Zmc2V0TGVmdCtcInB4O3RvcDpcIitiLndpbmRvd09mZnNldFRvcCtcInB4O1wiK2Iuem9vbVdpbmRvd1N0eWxlK1wiJyBjbGFzcz0nem9vbVdpbmRvdyc+Jm5ic3A7PC9kaXY+XCIpLmFwcGVuZFRvKFwiYm9keVwiKS5jbGljayhmdW5jdGlvbigpe2IuJGVsZW0udHJpZ2dlcihcImNsaWNrXCIpfSk6Yi56b29tV2luZG93PWQoXCI8ZGl2IHN0eWxlPSd6LWluZGV4Ojk5OTtsZWZ0OlwiK2Iud2luZG93T2Zmc2V0TGVmdCtcInB4O3RvcDpcIitiLndpbmRvd09mZnNldFRvcCtcInB4O1wiK2Iuem9vbVdpbmRvd1N0eWxlK1xuXCInIGNsYXNzPSd6b29tV2luZG93Jz4mbmJzcDs8L2Rpdj5cIikuYXBwZW5kVG8oYi56b29tQ29udGFpbmVyKS5jbGljayhmdW5jdGlvbigpe2IuJGVsZW0udHJpZ2dlcihcImNsaWNrXCIpfSk7Yi56b29tV2luZG93Q29udGFpbmVyPWQoXCI8ZGl2Lz5cIikuYWRkQ2xhc3MoXCJ6b29tV2luZG93Q29udGFpbmVyXCIpLmNzcyhcIndpZHRoXCIsYi5vcHRpb25zLnpvb21XaW5kb3dXaWR0aCk7Yi56b29tV2luZG93LndyYXAoYi56b29tV2luZG93Q29udGFpbmVyKTtcImxlbnNcIj09Yi5vcHRpb25zLnpvb21UeXBlJiZiLnpvb21MZW5zLmNzcyh7YmFja2dyb3VuZEltYWdlOlwidXJsKCdcIitiLmltYWdlU3JjK1wiJylcIn0pO1wid2luZG93XCI9PWIub3B0aW9ucy56b29tVHlwZSYmYi56b29tV2luZG93LmNzcyh7YmFja2dyb3VuZEltYWdlOlwidXJsKCdcIitiLmltYWdlU3JjK1wiJylcIn0pO1wiaW5uZXJcIj09Yi5vcHRpb25zLnpvb21UeXBlJiZiLnpvb21XaW5kb3cuY3NzKHtiYWNrZ3JvdW5kSW1hZ2U6XCJ1cmwoJ1wiK2IuaW1hZ2VTcmMrXG5cIicpXCJ9KTtiLiRlbGVtLmJpbmQoXCJ0b3VjaG1vdmVcIixmdW5jdGlvbihhKXthLnByZXZlbn
425REZWZhdWx0KCk7Yi5zZXRQb3NpdGlvbihhLm9yaWdpbmFsRXZlbnQudG91Y2hlc1swXXx8YS5vcmlnaW5hbEV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdKX0pO2Iuem9vbUNvbnRhaW5lci5iaW5kKFwidG91Y2htb3ZlXCIsZnVuY3Rpb24oYSl7XCJpbm5lclwiPT1iLm9wdGlvbnMuem9vbVR5cGUmJmIuc2hvd0hpZGVXaW5kb3coXCJzaG93XCIpO2EucHJldmVudERlZmF1bHQoKTtiLnNldFBvc2l0aW9uKGEub3JpZ2luYWxFdmVudC50b3VjaGVzWzBdfHxhLm9yaWdpbmFsRXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0pfSk7Yi56b29tQ29udGFpbmVyLmJpbmQoXCJ0b3VjaGVuZFwiLGZ1bmN0aW9uKGEpe2Iuc2hvd0hpZGVXaW5kb3coXCJoaWRlXCIpO2Iub3B0aW9ucy5zaG93TGVucyYmYi5zaG93SGlkZUxlbnMoXCJoaWRlXCIpO2Iub3B0aW9ucy50aW50JiZcImlubmVyXCIhPWIub3B0aW9ucy56b29tVHlwZSYmYi5zaG93SGlkZVRpbnQoXCJoaWRlXCIpfSk7XG5iLiRlbGVtLmJpbmQoXCJ0b3VjaGVuZFwiLGZ1bmN0aW9uKGEpe2Iuc2hvd0hpZGVXaW5kb3coXCJoaWRlXCIpO2Iub3B0aW9ucy5zaG93TGVucyYmYi5zaG93SGlkZUxlbnMoXCJoaWRlXCIpO2Iub3B0aW9ucy50aW50JiZcImlubmVyXCIhPWIub3B0aW9ucy56b29tVHlwZSYmYi5zaG93SGlkZVRpbnQoXCJoaWRlXCIpfSk7Yi5vcHRpb25zLnNob3dMZW5zJiYoYi56b29tTGVucy5iaW5kKFwidG91Y2htb3ZlXCIsZnVuY3Rpb24oYSl7YS5wcmV2ZW50RGVmYXVsdCgpO2Iuc2V0UG9zaXRpb24oYS5vcmlnaW5hbEV2ZW50LnRvdWNoZXNbMF18fGEub3JpZ2luYWxFdmVudC5jaGFuZ2VkVG91Y2hlc1swXSl9KSxiLnpvb21MZW5zLmJpbmQoXCJ0b3VjaGVuZFwiLGZ1bmN0aW9uKGEpe2Iuc2hvd0hpZGVXaW5kb3coXCJoaWRlXCIpO2Iub3B0aW9ucy5zaG93TGVucyYmYi5zaG93SGlkZUxlbnMoXCJoaWRlXCIpO2Iub3B0aW9ucy50aW50JiZcImlubmVyXCIhPWIub3B0aW9ucy56b29tVHlwZSYmYi5zaG93SGlkZVRpbnQoXCJoaWRlXCIpfSkpO1xuYi4kZWxlbS5iaW5kKFwibW91c2Vtb3ZlXCIsZnVuY3Rpb24oYSl7ITE9PWIub3ZlcldpbmRvdyYmYi5zZXRFbGVtZW50cyhcInNob3dcIik7aWYoYi5sYXN0WCE9PWEuY2xpZW50WHx8Yi5sYXN0WSE9PWEuY2xpZW50WSliLnNldFBvc2l0aW9uKGEpLGIuY3VycmVudExvYz1hO2IubGFzdFg9YS5jbGllbnRYO2IubGFzdFk9YS5jbGllbnRZfSk7Yi56b29tQ29udGFpbmVyLmJpbmQoXCJtb3VzZW1vdmVcIixmdW5jdGlvbihhKXshMT09Yi5vdmVyV2luZG93JiZiLnNldEVsZW1lbnRzKFwic2hvd1wiKTtpZihiLmxhc3RYIT09YS5jbGllbnRYfHxiLmxhc3RZIT09YS5jbGllbnRZKWIuc2V0UG9zaXRpb24oYSksYi5jdXJyZW50TG9jPWE7Yi5sYXN0WD1hLmNsaWVudFg7Yi5sYXN0WT1hLmNsaWVudFl9KTtcImlubmVyXCIhPWIub3B0aW9ucy56b29tVHlwZSYmYi56b29tTGVucy5iaW5kKFwibW91c2Vtb3ZlXCIsZnVuY3Rpb24oYSl7aWYoYi5sYXN0WCE9PWEuY2xpZW50WHx8Yi5sYXN0WSE9PWEuY2xpZW50WSliLnNldFBvc2l0aW9uKGEpLFxuYi5jdXJyZW50TG9jPWE7Yi5sYXN0WD1hLmNsaWVudFg7Yi5sYXN0WT1hLmNsaWVudFl9KTtiLm9wdGlvbnMudGludCYmXCJpbm5lclwiIT1iLm9wdGlvbnMuem9vbVR5cGUmJmIuem9vbVRpbnQuYmluZChcIm1vdXNlbW92ZVwiLGZ1bmN0aW9uKGEpe2lmKGIubGFzdFghPT1hLmNsaWVudFh8fGIubGFzdFkhPT1hLmNsaWVudFkpYi5zZXRQb3NpdGlvbihhKSxiLmN1cnJlbnRMb2M9YTtiLmxhc3RYPWEuY2xpZW50WDtiLmxhc3RZPWEuY2xpZW50WX0pO1wiaW5uZXJcIj09Yi5vcHRpb25zLnpvb21UeXBlJiZiLnpvb21XaW5kb3cuYmluZChcIm1vdXNlbW92ZVwiLGZ1bmN0aW9uKGEpe2lmKGIubGFzdFghPT1hLmNsaWVudFh8fGIubGFzdFkhPT1hLmNsaWVudFkpYi5zZXRQb3NpdGlvbihhKSxiLmN1cnJlbnRMb2M9YTtiLmxhc3RYPWEuY2xpZW50WDtiLmxhc3RZPWEuY2xpZW50WX0pO2Iuem9vbUNvbnRhaW5lci5hZGQoYi4kZWxlbSkubW91c2VlbnRlcihmdW5jdGlvbigpeyExPT1iLm92ZXJXaW5kb3cmJlxuYi5zZXRFbGVtZW50cyhcInNob3dcIil9KS5tb3VzZWxlYXZlKGZ1bmN0aW9uKCl7Yi5zY3JvbGxMb2NrfHxiLnNldEVsZW1lbnRzKFwiaGlkZVwiKX0pO1wiaW5uZXJcIiE9Yi5vcHRpb25zLnpvb21UeXBlJiZiLnpvb21XaW5kb3cubW91c2VlbnRlcihmdW5jdGlvbigpe2Iub3ZlcldpbmRvdz0hMDtiLnNldEVsZW1lbnRzKFwiaGlkZVwiKX0pLm1vdXNlbGVhdmUoZnVuY3Rpb24oKXtiLm92ZXJXaW5kb3c9ITF9KTtiLm1pblpvb21MZXZlbD1iLm9wdGlvbnMubWluWm9vbUxldmVsP2Iub3B0aW9ucy5taW5ab29tTGV2ZWw6MipiLm9wdGlvbnMuc2Nyb2xsWm9vbUluY3JlbWVudDtiLm9wdGlvbnMuc2Nyb2xsWm9vbSYmYi56b29tQ29udGFpbmVyLmFkZChiLiRlbGVtKS5iaW5kKFwibW91c2V3aGVlbCBET01Nb3VzZVNjcm9sbCBNb3pNb3VzZVBpeGVsU2Nyb2xsXCIsZnVuY3Rpb24oYSl7Yi5zY3JvbGxMb2NrPSEwO2NsZWFyVGltZW91dChkLmRhdGEodGhpcyxcInRpbWVyXCIpKTtkLmRhdGEodGhpcyxcInRpbWVyXCIsXG5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Yi5zY3JvbGxMb2NrPSExfSwyNTApKTt2YXIgZT1hLm9yaWdpbmFsRXZlbnQud2hlZWxEZWx0YXx8LTEqYS5vcmlnaW5hbEV2ZW50LmRldGFpbDthLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO2Euc3RvcFByb3BhZ2F0aW9uKCk7YS5wcmV2ZW50RGVmYXVsdCgpOzA8ZS8xMjA/Yi5jdXJyZW50Wm9vbUxldmVsPj1iLm1pblpvb21MZXZlbCYmYi5jaGFuZ2Vab29tTGV2ZWwoYi5jdXJyZW50Wm9vbUxldmVsLWIub3B0aW9ucy5zY3JvbGxab29tSW5jcmVtZW50KTpiLm9wdGlvbnMubWF4Wm9vbUxldmVsP2IuY3VycmVudFpvb21MZXZlbDw9Yi5vcHRpb25zLm1heFpvb21MZXZlbCYmYi5jaGFuZ2Vab29tTGV2ZWwocGFyc2VGbG9hdChiLmN1cnJlbnRab29tTGV2ZWwpK2Iub3B0aW9ucy5zY3JvbGxab29tSW5jcmVtZW50KTpiLmNoYW5nZVpvb21MZXZlbChwYXJzZUZsb2F0KGIuY3VycmVudFpvb21MZXZlbCkrYi5vcHRpb25zLnNjcm9sbFpvb21JbmNyZW1lbnQpO1xucmV0dXJuITF9KX0sc2V0RWxlbWVudHM6ZnVuY3Rpb24oYil7aWYoIXRoaXMub3B0aW9ucy56b29tRW5hYmxlZClyZXR1cm4hMTtcInNob3dcIj09YiYmdGhpcy5pc1dpbmRvd1NldCYmKFwiaW5uZXJcIj09dGhpcy5vcHRpb25zLnpvb21UeXBlJiZ0aGlzLnNob3dIaWRlV2luZG93KFwic2hvd1wiKSxcIndpbmRvd1wiPT10aGlzLm9wdGlvbnMuem9vbVR5cGUmJnRoaXMuc2hvd0hpZGVXaW5kb3coXCJzaG93XCIpLHRoaXMub3B0aW9ucy5zaG93TGVucyYmdGhpcy5zaG93SGlkZUxlbnMoXCJzaG93XCIpLHRoaXMub3B0aW9ucy50aW50JiZcImlubmVyXCIhPXRoaXMub3B0aW9ucy56b29tVHlwZSYmdGhpcy5zaG93SGlkZVRpbnQoXCJzaG93XCIpKTtcImhpZGVcIj09YiYmKFwid2luZG93XCI9PXRoaXMub3B0aW9ucy56b29tVHlwZSYmdGhpcy5zaG93SGlkZVdpbmRvdyhcImhpZGVcIiksdGhpcy5vcHRpb25zLnRpbnR8fHRoaXMuc2hvd0hpZGVXaW5kb3coXCJoaWRlXCIpLHRoaXMub3B0aW9ucy5zaG93TGVucyYmdGhpcy5zaG93SGlkZUxlbnMoXCJoaWRlXCIpLFxudGhpcy5vcHRpb25zLnRpbnQmJnRoaXMuc2hvd0hpZGVUaW50KFwiaGlkZVwiKSl9LHNldFBvc2l0aW9uOmZ1bmN0aW9uKGIpe2lmKCF0aGlzLm9wdGlvbnMuem9vbUVuYWJsZWQpcmV0dXJuITE7dGhpcy5uekhlaWdodD10aGlzLiRlbGVtLmhlaWdodCgpO3RoaXMubnpXaWR0aD10aGlzLiRlbGVtLndpZHRoKCk7dGhpcy5uek9mZnNldD10aGlzLiRlbGVtLm9mZnNldCgpO3RoaXMub3B0aW9ucy50aW50JiZcImlubmVyXCIhPXRoaXMub3B0aW9ucy56b29tVHlwZSYmKHR
425oaXMuem9vbVRpbnQuY3NzKHt0b3A6MH0pLHRoaXMuem9vbVRpbnQuY3NzKHtsZWZ0OjB9KSk7dGhpcy5vcHRpb25zLnJlc3BvbnNpdmUmJiF0aGlzLm9wdGlvbnMuc2Nyb2xsWm9vbSYmdGhpcy5vcHRpb25zLnNob3dMZW5zJiYobGVuc0hlaWdodD10aGlzLm56SGVpZ2h0PHRoaXMub3B0aW9ucy56b29tV2luZG93V2lkdGgvdGhpcy53aWR0aFJhdGlvP3RoaXMubnpIZWlnaHQ6U3RyaW5nKHRoaXMub3B0aW9ucy56b29tV2luZG93SGVpZ2h0L1xudGhpcy5oZWlnaHRSYXRpbyksbGVuc1dpZHRoPXRoaXMubGFyZ2VXaWR0aDx0aGlzLm9wdGlvbnMuem9vbVdpbmRvd1dpZHRoP3RoaXMubnpXaWR0aDp0aGlzLm9wdGlvbnMuem9vbVdpbmRvd1dpZHRoL3RoaXMud2lkdGhSYXRpbyx0aGlzLndpZHRoUmF0aW89dGhpcy5sYXJnZVdpZHRoL3RoaXMubnpXaWR0aCx0aGlzLmhlaWdodFJhdGlvPXRoaXMubGFyZ2VIZWlnaHQvdGhpcy5uekhlaWdodCxcImxlbnNcIiE9dGhpcy5vcHRpb25zLnpvb21UeXBlJiYobGVuc0hlaWdodD10aGlzLm56SGVpZ2h0PHRoaXMub3B0aW9ucy56b29tV2luZG93V2lkdGgvdGhpcy53aWR0aFJhdGlvP3RoaXMubnpIZWlnaHQ6U3RyaW5nKHRoaXMub3B0aW9ucy56b29tV2luZG93SGVpZ2h0L3RoaXMuaGVpZ2h0UmF0aW8pLGxlbnNXaWR0aD10aGlzLm9wdGlvbnMuem9vbVdpbmRvd1dpZHRoPHRoaXMub3B0aW9ucy56b29tV2luZG93V2lkdGg/dGhpcy5ueldpZHRoOnRoaXMub3B0aW9ucy56b29tV2luZG93V2lkdGgvXG50aGlzLndpZHRoUmF0aW8sdGhpcy56b29tTGVucy5jc3MoXCJ3aWR0aFwiLGxlbnNXaWR0aCksdGhpcy56b29tTGVucy5jc3MoXCJoZWlnaHRcIixsZW5zSGVpZ2h0KSx0aGlzLm9wdGlvbnMudGludCYmKHRoaXMuem9vbVRpbnRJbWFnZS5jc3MoXCJ3aWR0aFwiLHRoaXMubnpXaWR0aCksdGhpcy56b29tVGludEltYWdlLmNzcyhcImhlaWdodFwiLHRoaXMubnpIZWlnaHQpKSksXCJsZW5zXCI9PXRoaXMub3B0aW9ucy56b29tVHlwZSYmdGhpcy56b29tTGVucy5jc3Moe3dpZHRoOlN0cmluZyh0aGlzLm9wdGlvbnMubGVuc1NpemUpK1wicHhcIixoZWlnaHQ6U3RyaW5nKHRoaXMub3B0aW9ucy5sZW5zU2l6ZSkrXCJweFwifSkpO3RoaXMuem9vbUNvbnRhaW5lci5jc3Moe3RvcDp0aGlzLm56T2Zmc2V0LnRvcH0pO3RoaXMuem9vbUNvbnRhaW5lci5jc3Moe2xlZnQ6dGhpcy5uek9mZnNldC5sZWZ0fSk7dGhpcy5tb3VzZUxlZnQ9cGFyc2VJbnQoYi5wYWdlWC10aGlzLm56T2Zmc2V0LmxlZnQpO3RoaXMubW91c2VUb3A9XG5wYXJzZUludChiLnBhZ2VZLXRoaXMubnpPZmZzZXQudG9wKTtcIndpbmRvd1wiPT10aGlzLm9wdGlvbnMuem9vbVR5cGUmJih0aGlzLkV0b3Bwb3M9dGhpcy5tb3VzZVRvcDx0aGlzLnpvb21MZW5zLmhlaWdodCgpLzIsdGhpcy5FYm9wcG9zPXRoaXMubW91c2VUb3A+dGhpcy5uekhlaWdodC10aGlzLnpvb21MZW5zLmhlaWdodCgpLzItMip0aGlzLm9wdGlvbnMubGVuc0JvcmRlclNpemUsdGhpcy5FbG9wcG9zPXRoaXMubW91c2VMZWZ0PDArdGhpcy56b29tTGVucy53aWR0aCgpLzIsdGhpcy5Fcm9wcG9zPXRoaXMubW91c2VMZWZ0PnRoaXMubnpXaWR0aC10aGlzLnpvb21MZW5zLndpZHRoKCkvMi0yKnRoaXMub3B0aW9ucy5sZW5zQm9yZGVyU2l6ZSk7XCJpbm5lclwiPT10aGlzLm9wdGlvbnMuem9vbVR5cGUmJih0aGlzLkV0b3Bwb3M9dGhpcy5tb3VzZVRvcDx0aGlzLm56SGVpZ2h0LzIvdGhpcy5oZWlnaHRSYXRpbyx0aGlzLkVib3Bwb3M9dGhpcy5tb3VzZVRvcD50aGlzLm56SGVpZ2h0LVxudGhpcy5uekhlaWdodC8yL3RoaXMuaGVpZ2h0UmF0aW8sdGhpcy5FbG9wcG9zPXRoaXMubW91c2VMZWZ0PDArdGhpcy5ueldpZHRoLzIvdGhpcy53aWR0aFJhdGlvLHRoaXMuRXJvcHBvcz10aGlzLm1vdXNlTGVmdD50aGlzLm56V2lkdGgtdGhpcy5ueldpZHRoLzIvdGhpcy53aWR0aFJhdGlvLTIqdGhpcy5vcHRpb25zLmxlbnNCb3JkZXJTaXplKTswPj10aGlzLm1vdXNlTGVmd
425Hx8MD50aGlzLm1vdXNlVG9wfHx0aGlzLm1vdXNlTGVmdD50aGlzLm56V2lkdGh8fHRoaXMubW91c2VUb3A+dGhpcy5uekhlaWdodD90aGlzLnNldEVsZW1lbnRzKFwiaGlkZVwiKToodGhpcy5vcHRpb25zLnNob3dMZW5zJiYodGhpcy5sZW5zTGVmdFBvcz1TdHJpbmcodGhpcy5tb3VzZUxlZnQtdGhpcy56b29tTGVucy53aWR0aCgpLzIpLHRoaXMubGVuc1RvcFBvcz1TdHJpbmcodGhpcy5tb3VzZVRvcC10aGlzLnpvb21MZW5zLmhlaWdodCgpLzIpKSx0aGlzLkV0b3Bwb3MmJih0aGlzLmxlbnNUb3BQb3M9MCksXG50aGlzLkVsb3Bwb3MmJih0aGlzLnRpbnRwb3M9dGhpcy5sZW5zTGVmdFBvcz10aGlzLndpbmRvd0xlZnRQb3M9MCksXCJ3aW5kb3dcIj09dGhpcy5vcHRpb25zLnpvb21UeXBlJiYodGhpcy5FYm9wcG9zJiYodGhpcy5sZW5zVG9wUG9zPU1hdGgubWF4KHRoaXMubnpIZWlnaHQtdGhpcy56b29tTGVucy5oZWlnaHQoKS0yKnRoaXMub3B0aW9ucy5sZW5zQm9yZGVyU2l6ZSwwKSksdGhpcy5Fcm9wcG9zJiYodGhpcy5sZW5zTGVmdFBvcz10aGlzLm56V2lkdGgtdGhpcy56b29tTGVucy53aWR0aCgpLTIqdGhpcy5vcHRpb25zLmxlbnNCb3JkZXJTaXplKSksXCJpbm5lclwiPT10aGlzLm9wdGlvbnMuem9vbVR5cGUmJih0aGlzLkVib3Bwb3MmJih0aGlzLmxlbnNUb3BQb3M9TWF0aC5tYXgodGhpcy5uekhlaWdodC0yKnRoaXMub3B0aW9ucy5sZW5zQm9yZGVyU2l6ZSwwKSksdGhpcy5Fcm9wcG9zJiYodGhpcy5sZW5zTGVmdFBvcz10aGlzLm56V2lkdGgtdGhpcy5ueldpZHRoLTIqdGhpcy5vcHRpb25zLmxlbnNCb3JkZXJTaXplKSksXG5cImxlbnNcIj09dGhpcy5vcHRpb25zLnpvb21UeXBlJiYodGhpcy53aW5kb3dMZWZ0UG9zPVN0cmluZygtMSooKGIucGFnZVgtdGhpcy5uek9mZnNldC5sZWZ0KSp0aGlzLndpZHRoUmF0aW8tdGhpcy56b29tTGVucy53aWR0aCgpLzIpKSx0aGlzLndpbmRvd1RvcFBvcz1TdHJpbmcoLTEqKChiLnBhZ2VZLXRoaXMubnpPZmZzZXQudG9wKSp0aGlzLmhlaWdodFJhdGlvLXRoaXMuem9vbUxlbnMuaGVpZ2h0KCkvMikpLHRoaXMuem9vbUxlbnMuY3NzKHtiYWNrZ3JvdW5kUG9zaXRpb246dGhpcy53aW5kb3dMZWZ0UG9zK1wicHggXCIrdGh
425pcy53aW5kb3dUb3BQb3MrXCJweFwifSksdGhpcy5jaGFuZ2VCZ1NpemUmJih0aGlzLm56SGVpZ2h0PnRoaXMubnpXaWR0aD8oXCJsZW5zXCI9PXRoaXMub3B0aW9ucy56b29tVHlwZSYmdGhpcy56b29tTGVucy5jc3Moe1wiYmFja2dyb3VuZC1zaXplXCI6dGhpcy5sYXJnZVdpZHRoL3RoaXMubmV3dmFsdWVoZWlnaHQrXCJweCBcIit0aGlzLmxhcmdlSGVpZ2h0L3RoaXMubmV3dmFsdWVoZWlnaHQrXG5cInB4XCJ9KSx0aGlzLnpvb21XaW5kb3cuY3NzKHtcImJhY2tncm91bmQtc2l6ZVwiOnRoaXMubGFyZ2VXaWR0aC90aGlzLm5ld3ZhbHVlaGVpZ2h0K1wicHggXCIrdGhpcy5sYXJnZUhlaWdodC90aGlzLm5ld3ZhbHVlaGVpZ2h0K1wicHhcIn0pKTooXCJsZW5zXCI9PXRoaXMub3B0aW9ucy56b29tVHlwZSYmdGhpcy56b29tTGVucy5jc3Moe1wiYmFja2dyb3VuZC1zaXplXCI6dGhpcy5sYXJnZVdpZHRoL3RoaXMubmV3dmFsdWV3aWR0aCtcInB4IFwiK3RoaXMubGFyZ2VIZWlnaHQvdGhpcy5uZXd2YWx1ZXdpZHRoK1wicHhcIn0pLHRoaXMuem9vbVdpbmRvdy5jc3Moe1wiYmFja2dyb3VuZC1zaXplXCI6dGhpcy5sYXJnZVdpZHRoL3RoaXMubmV3dmFsdWV3aWR0aCtcInB4IFwiK3RoaXMubGFyZ2VIZWlnaHQvdGhpcy5uZXd2YWx1ZXdpZHRoK1wicHhcIn0pKSx0aGlzLmNoYW5nZUJnU2l6ZT0hMSksdGhpcy5zZXRXaW5kb3dQb3N0aXRpb24oYikpLHRoaXMub3B0aW9ucy50aW50JiZcImlubmVyXCIhPXRoaXMub3B0aW9ucy56b29tVHlwZSYmXG50aGlzLnNldFRpbnRQb3NpdGlvbihiKSxcIndpbmRvd1wiPT10aGlzLm9wdGlvbnMuem9vbVR5cGUmJnRoaXMuc2V0V2luZG93UG9zdGl0aW9uKGIpLFwiaW5uZXJcIj09dGhpcy5vcHRpb25zLnpvb21UeXBlJiZ0aGlzLnNldFdpbmRvd1Bvc3RpdGlvbihiKSx0aGlzLm9wdGlvbnMuc2hvd0xlbnMmJih0aGlzLmZ1bGx3aWR0aCYmXCJsZW5zXCIhPXRoaXMub3B0aW9ucy56b29tVHlwZSYmKHRoaXMubGVuc0xlZnRQb3M9MCksdGhpcy56b29tTGVucy5jc3Moe2xlZnQ6dGhpcy5sZW5zTGVmdFBvcytcInB4XCIsdG9wOnRoaXMubGVuc1RvcFBvcytcInB4XCJ9KSkpfSxzaG93SGlkZVdpbmRvdzpmdW5jdGlvbihiKXtcInNob3dcIiE9Ynx8dGhpcy5pc1dpbmRvd0FjdGl2ZXx8KHRoaXMub3B0aW9ucy56b29tV2luZG93RmFkZUluP3RoaXMuem9vbVdpbmRvdy5zdG9wKCEwLCEwLCExKS5mYWRlSW4odGhpcy5vcHRpb25zLnpvb21XaW5kb3dGYWRlSW4pOnRoaXMuem9vbVdpbmRvdy5zaG93KCksdGhpcy5pc1dpbmRvd0FjdGl2ZT1cbiEwKTtcImhpZGVcIj09YiYmdGhpcy5pc1dpbmRvd0FjdGl2ZSYmKHRoaXMub3B0aW9ucy56b29tV2luZG93RmFkZU91dD90aGlzLnpvb21XaW5kb3cuc3RvcCghMCwhMCkuZmFkZU91dCh0aGlzLm9wdGlvbnMuem9vbVdpbmRvd0ZhZGVPdXQpOnRoaXMuem9vbVdpbmRvdy5oaWRlKCksdGhpcy5pc1dpbmRvd0FjdGl2ZT0hMSl9LHNob3dIaWRlTGVuczpmdW5jdGlvbihiKXtcInNob3dcIiE9Ynx8dGhpcy5pc0xlbnNBY3RpdmV8fCh0aGlzLm9wdGlvbnMubGVuc0ZhZGVJbj90aGlzLnpvb21MZW5zLnN0b3AoITAsITAsITEpLmZhZGVJbih0aGlzLm9wdGlvbnMubGVuc0ZhZGVJbik6dGhpcy56b29tTGVucy5zaG93KCksdGhpcy5pc0xlbnNBY3RpdmU9ITApO1wiaGlkZVwiPT1iJiZ0aGlzLmlzTGVuc0FjdGl2ZSYmKHRoaXMub3B0aW9ucy5sZW5zRmFkZU91dD90aGlzLnpvb21MZW5zLnN0b3AoITAsITApLmZhZGVPdXQodGhpcy5vcHRpb25zLmxlbnNGYWRlT3V0KTp0aGlzLnpvb21MZW5zLmhpZGUoKSxcbnRoaXMuaXNMZW5zQWN0aXZlPSExKX0sc2hvd0hpZGVUaW50OmZ1bmN0aW9uKGIpe1wic2hvd1wiIT1ifHx0aGlzLmlzVGludEFjdGl2ZXx8KHRoaXMub3B0aW9ucy56b29tVGludEZhZGVJbj90aGlzLnpvb21UaW50LmNzcyh7b3BhY2l0eTp0aGlzLm9wdGlvbnMudGludE9wYWNpdHl9KS5hbmltYXRlKCkuc3RvcCghMCwhMCkuZmFkZUluKFwic2xvd1wiKToodGhpcy56b29tVGludC5jc3Moe29wYWNpdHk6dGhpcy5vcHRpb25zLnRpbnRPcGFjaXR5fSkuYW5pbWF0ZSgpLHRoaXMuem9vbVRpbnQuc2hvdygpKSx0aGlzLmlzVGludEFjdGl2ZT0hMCk7XCJoaWRlXCI9PWImJnRoaXMuaXNUaW50QWN0aXZlJiYodGhpcy5vcHRpb25zLnpvb21UaW50RmFkZU91dD90aGlzLnpvb21UaW50LnN0b3AoITAsITApLmZhZGVPdXQodGhpcy5vcHRpb25zLnpvb21UaW50RmFkZU91dCk6dGhpcy56b29tVGludC5oaWRlKCksdGhpcy5pc1RpbnRBY3RpdmU9ITEpfSxzZXRMZW5zUG9zdGl0aW9uOmZ1bmN0aW9uKGIpe30sXG5zZXRXaW5kb3dQb3N0aXRpb246ZnVuY3Rpb24oYil7dmFyIGE9dGhpcztpZihpc05hTihhLm9wdGlvbnMuem9vbVdpbmRvd1Bvc2l0aW9uKSlhLmV4dGVybmFsQ29udGFpbmVyPWQoXCIjXCIrYS5vcHRpb25zLnpvb21XaW5kb3dQb3NpdGlvbiksYS5leHRlcm5hbENvbnRhaW5lcldpZHRoPWEuZXh0ZXJuYWxDb250YWluZXIud2lkdGgoKSxhLmV4dGVybmFsQ29udGFpbmVySGVpZ2h0PWEuZXh0ZXJuYWxDb250YWluZXIuaGVpZ2h0KCksYS5leHRlcm5hbENvbnRhaW5lck9mZnNldD1hLmV4dGVybmFsQ29udGFpbmVyLm9mZnNldCgpLGEud2luZG93T2Zmc2V0VG9wPWEuZXh0ZXJuYWxDb250YWluZXJPZmZzZXQudG9wLGEud2luZG93T2Zmc2V0TGVmdD1hLmV4dGVybmFsQ29udGFpbmVyT2Zmc2V0LmxlZnQ7ZWxzZSBzd2l0Y2goYS5vcHRpb25zLnpvb21XaW5kb3dQb3NpdGlvbil7Y2FzZSAxOmEud2luZG93T2Zmc2V0VG9wPWEub3B0aW9ucy56b29tV2luZG93T2ZmZXR5O2Eud2luZG93T2Zmc2V0TGVmdD1cbithLm56V2lkdGg7YnJlYWs7Y2FzZSAyOmEub3B0aW9ucy56b29tV2luZG93SGVpZ2h0PmEubnpIZWlnaHQmJihhLndpbmRvd09mZnNldFRvcD0tMSooYS5vcHRpb25zLnpvb21XaW5kb3dIZWlnaHQvMi1hLm56SGVpZ2h0LzIpLGEud2luZG93T2Zmc2V0TGVmdD1hLm56V2lkdGgpO2JyZWFrO2Nhc2UgMzphLndpbmRvd09mZnNldFRvcD1hLm56SGVpZ2h0LWEuem9vbVdpbmRvdy5oZWlnaHQoKS0yKmEub3B0aW9ucy5ib3JkZXJTaXplO2Eud2luZG93T2Zmc2V0TGVmdD1hLm56V2lkdGg7YnJlYWs7Y2FzZSA0OmEud2luZG93T2Zmc2V0VG9wPWEubnpIZWlnaHQ7YS53aW5kb3dPZmZzZXRMZWZ0PWEubnpXaWR0aDticmVhaztjYXNlIDU6YS53aW5kb3dPZmZzZXRUb3A9YS5uekhlaWdodDthLndpbmRvd09mZnNldExlZnQ9YS5ueldpZHRoLWEuem9vbVdpbmRvdy53aWR0aCgpLTIqYS5vcHRpb25zLmJvcmRlclNpemU7YnJlYWs7Y2FzZSA2OmEub3B0aW9ucy56b29tV2luZG93SGVpZ2h0PlxuYS5uekhlaWdodCYmKGEud2luZG93T2Zmc2V0VG9wPWEubnpIZWlnaHQsYS53aW5kb3dPZmZzZXRMZWZ0PS0xKihhLm9wdGlvbnMuem9vbVdpbmRvd1dpZHRoLzItYS5ueldpZHRoLzIrMiphLm9wdGlvbnMuYm9yZGVyU2l6ZSkpO2JyZWFrO2Nhc2UgNzphLndpbmRvd09mZnNldFRvcD1hLm56SGVpZ2h0O2Eud2luZG93T2Zmc2V0TGVmdD0wO2JyZWFrO2Nhc2UgODphLndpbmRvd09mZnNldFRvcD1hLm56SGVpZ2h0O2Eud2luZG93T2Zmc2V0TGVmdD0tMSooYS56b29tV2luZG93LndpZHRoKCkrMiphLm9wdGlvbnMuYm9yZGVyU2l6ZSk7YnJlYWs7Y2FzZSA5OmEud2luZG93T2Zmc2V0VG9wPWEubnpIZWlnaHQtYS56b29tV2luZG93LmhlaWdodCgpLTIqYS5vcHRpb25zLmJvcmRlclNpemU7YS53aW5kb3dPZmZzZXRMZWZ0PS0xKihhLnpvb21XaW5kb3cud2lkdGgoKSsyKmEub3B0aW9ucy5ib3JkZXJTaXplKTticmVhaztjYXNlIDEwOmEub3B0aW9ucy56b29tV2luZG93SGVpZ2h0PmEubnpIZWlnaHQmJlxuKGEud2luZG93T2Zmc2V0VG9wPS0xKihhLm9wdGlvbnMuem9vbVdpbmRvd0hlaWdodC8yLWEubnpIZWlnaHQvMiksYS53aW5kb3dPZmZzZXRMZWZ0PS0xKihhLnpvb21XaW5kb3cud2lkdGgoKSsyKmEub3B0aW9ucy5ib3JkZXJTaXplKSk7YnJlYWs7Y2FzZSAxMTphLndpbmRvd09mZnNldFRvcD1hLm9wdGlvbnMuem9vbVdpbmRvd09mZmV0eTthLndpbmRvd09mZnNldExlZnQ9LTEqKGEuem9vbVdpbmRvdy53aWR0aCgpKzIqYS5vcHRpb25zLmJvcmRlclNpemUpO2JyZWFrO2Nhc2UgMTI6YS53aW5kb3dPZmZzZXRUb3A9LTEqKGEuem9vbVdpbmRvdy5oZWlnaHQoKSsyKmEub3B0aW9ucy5ib3JkZXJTaXplKTthLndpbmRvd09mZnNldExlZnQ9LTEqKGEuem9vbVdpbmRvdy53aWR0aCgpKzIqYS5vcHRpb25zLmJvcmRlclNpemUpO2JyZWFrO2Nhc2UgMTM6YS53aW5kb3dPZmZzZXRUb3A9LTEqKGEuem9vbVdpbmRvdy5oZWlnaHQoKSsyKmEub3B0aW9ucy5ib3JkZXJTaXplKTthLndpbmRvd09mZnNldExlZnQ9XG4wO2JyZWFrO2Nhc2UgMTQ6YS5vcHRpb25zLnpvb21XaW5kb3dIZWlnaHQ+YS5uekhlaWdodCYmKGEud2luZG93T2Zmc2V0VG9wPS0xKihhLnpvb21XaW5kb3cuaGVpZ2h0KCkrMiphLm9wdGlvbnMuYm9yZGVyU2l6ZSksYS53aW5kb3dPZmZzZXRMZWZ0PS0xKihhLm9wdGlvbnMuem9vbVdpbmRvd1dpZHRoLzItYS5ueldpZHRoLzIrMiphLm9wdGlvbnMuYm9yZGVyU2l6ZSkpO2JyZWFrO2Nhc2UgMTU6YS53aW5kb3dPZmZzZXRUb3A9LTEqKGEuem9vbVdpbmRvdy5oZWlnaHQoKSsyKmEub3B0aW9ucy5ib3JkZXJTaXplKTthLndpbmRvd09mZnNldExlZnQ9YS5ueldpZHRoLWEuem9vbVdpbmRvdy53aWR0aCgpLTIqYS5vcHRpb25zLmJvcmRlclNpemU7YnJlYWs7Y2FzZSAxNjphLndpbmRvd09mZnNldFRvcD0tMSooYS56b29tV2luZG93LmhlaWdodCgpKzIqYS5vcHRpb25zLmJvcmRlclNpemUpO2Eud2luZG93T2Zmc2V0TGVmdD1hLm56V2lkdGg7YnJlYWs7ZGVmYXVsdDphLndpbmRvd09mZnNldFRvcD1cbmEub3B0aW9ucy56b29tV2luZG93T2ZmZXR5LGEud2luZG93T2Zmc2V0TGVmdD1hLm56V2lkdGh9YS5pc1dpbmRvd1NldD0hMDthLndpbmRvd09mZnNldFRvcCs9YS5vcHRpb25zLnpvb21XaW5kb3dPZmZldHk7YS53aW5kb3dPZmZzZXRMZWZ0Kz1hLm9wdGlvbnMuem9vbVdpbmRvd09mZmV0eDthLnpvb21XaW5kb3cuY3NzKHt0b3A6YS53aW5kb3dPZmZzZXRUb3B9KTthLnpvb21XaW5kb3cuY3NzKHtsZWZ0OmEud2luZG93T2Zmc2V0TGVmdH0pO1wiaW5uZXJcIj09YS5vcHRpb25zLnpvb21UeXBlJiYoYS56b29tV2luZG93LmNzcyh7dG9wOjB9KSxhLnpvb21XaW5kb3cuY3NzKHtsZWZ0OjB9KSk7YS53aW5kb3dMZWZ0UG9zPVN0cmluZygtMSooKGIucGFnZVgtYS5uek9mZnNldC5sZWZ0KSphLndpZHRoUmF0aW8tYS56b29tV2luZG93LndpZHRoKCkvMikpO2Eud2luZG93VG9wUG9zPVN0cmluZygtMSooKGIucGFnZVktYS5uek9mZnNldC50b3ApKm
425EuaGVpZ2h0UmF0aW8tYS56b29tV2luZG93LmhlaWdodCgpL1xuMikpO2EuRXRvcHBvcyYmKGEud2luZG93VG9wUG9zPTApO2EuRWxvcHBvcyYmKGEud2luZG93TGVmdFBvcz0wKTthLkVib3Bwb3MmJihhLndpbmRvd1RvcFBvcz0tMSooYS5sYXJnZUhlaWdodC9hLmN1cnJlbnRab29tTGV2ZWwtYS56b29tV2luZG93LmhlaWdodCgpKSk7YS5Fcm9wcG9zJiYoYS53aW5kb3dMZWZ0UG9zPS0xKihhLmxhcmdlV2lkdGgvYS5jdXJyZW50Wm9vbUxldmVsLWEuem9vbVdpbmRvdy53aWR0aCgpKSk7YS5mdWxsaGVpZ2h0JiYoYS53aW5kb3dUb3BQb3M9MCk7YS5mdWxsd2lkdGgmJihhLndpbmRvd0xlZnRQb3M9MCk7aWYoXCJ3aW5kb3dcIj09YS5vcHRpb25zLnpvb21UeXBlfHxcImlubmVyXCI9PWEub3B0aW9ucy56b29tVHlwZSkxPT1hLnpvb21Mb2NrJiYoMT49YS53aWR0aFJhdGlvJiYoYS53aW5kb3dMZWZ0UG9zPTApLDE+PWEuaGVpZ2h0UmF0aW8mJihhLndpbmRvd1RvcFBvcz0wKSksYS5sYXJnZUhlaWdodDxhLm9wdGlvbnMuem9vbVdpbmRvd0hlaWdodCYmKGEud2luZG93VG9wUG9zPVxuMCksYS5sYXJnZVdpZHRoPGEub3B0aW9ucy56b29tV2luZG93V2lkdGgmJihhLndpbmRvd0xlZnRQb3M9MCksYS5vcHRpb25zLmVhc2luZz8oYS54cHx8KGEueHA9MCksYS55cHx8KGEueXA9MCksYS5sb29wfHwoYS5sb29wPXNldEludGVydmFsKGZ1bmN0aW9uKCl7YS54cCs9KGEud2luZG93TGVmdFBvcy1hLnhwKS9hLm9wdGlvbnMuZWFzaW5nQW1vdW50O2EueXArPShhLndpbmRvd1RvcFBvcy1hLnlwKS9hLm9wdGlvbnMuZWFzaW5nQW1vdW50O2Euc2Nyb2xsaW5nTG9jaz8oY2xlYXJJbnRlcnZhbChhLmxvb3ApLGEueHA9YS53aW5kb3dMZWZ0UG9zLGEueXA9YS53aW5kb3dUb3BQb3MsYS54cD0tMSooKGIucGFnZVgtYS5uek9mZnNldC5sZWZ0KSphLndpZHRoUmF0aW8tYS56b29tV2luZG93LndpZHRoKCkvMiksYS55cD0tMSooKGIucGFnZVktYS5uek9mZnNldC50b3ApKmEuaGVpZ2h0UmF0aW8tYS56b29tV2luZG93LmhlaWdodCgpLzIpLGEuY2hhbmdlQmdTaXplJiYoYS5uekhlaWdodD5cbmEubnpXaWR0aD8oXCJsZW5zXCI9PWEub3B0aW9ucy56b29tVHlwZSYmYS56b29tTGVucy5jc3Moe1wiYmFja2dyb3VuZC1zaXplXCI6YS5sYXJnZVdpZHRoL2EubmV3dmFsdWVoZWlnaHQrXCJweCBcIithLmxhcmdlSGVpZ2h0L2EubmV3dmFsdWVoZWlnaHQrXCJweFwifSksYS56b29tV2luZG93LmNzcyh7XCJiYWNrZ3JvdW5kLXNpemVcIjphLmxhcmdlV2lkdGgvYS5uZXd2YWx1ZWhlaWdodCtcInB4IFwiK2EubGFyZ2VIZWlnaHQvYS5uZXd2YWx1ZWhlaWdodCtcInB4XCJ9KSk6KFwibGVuc1wiIT1hLm9wdGlvbnMuem9vbVR5cGUmJmEuem9vbUxlbnMuY3NzKHtcImJhY2tncm91bmQtc2l6ZVwiOmEubGFyZ2VXaWR0aC9hLm5ld3ZhbHVld2lkdGgrXCJweCBcIithLmxhcmdlSGVpZ2h0L2EubmV3dmFsdWVoZWlnaHQrXCJweFwifSksYS56b29tV2luZG93LmNzcyh7XCJiYWNrZ3JvdW5kLXNpemVcIjphLmxhcmdlV2lkdGgvYS5uZXd2YWx1ZXdpZHRoK1wicHggXCIrYS5sYXJnZUhlaWdodC9hLm5ld3ZhbHVld2lkdGgrXCJweFwifSkpLFxuYS5jaGFuZ2VCZ1NpemU9ITEpLGEuem9vbVdpbmRvdy5jc3Moe2JhY2tncm91bmRQb3NpdGlvbjphLndpbmRvd0xlZnRQb3MrXCJweCBcIithLndpbmRvd1RvcFBvcytcInB4XCJ9KSxhLnNjcm9sbGluZ0xvY2s9ITEsYS5sb29wPSExKTooYS5jaGFuZ2VCZ1NpemUmJihhLm56SGVpZ2h0PmEubnpXaWR0aD8oXCJsZW5zXCI9PWEub3B0aW9ucy56b29tVHlwZSYmYS56b29tTGVucy5jc3Moe1wiYmFja2dyb3VuZC1zaXplXCI6YS5sYXJnZVdpZHRoL2EubmV3dmFsdWVoZWlnaHQrXCJweCBcIithLmxhcmdlSGVpZ2h0L2EubmV3dmFsdWVoZWlnaHQrXCJweFwifSksYS56b29tV2luZG93LmNzcyh7XCJiYWNrZ3JvdW5kLXNpemVcIjphLmxhcmdlV2lkdGgvYS5uZXd2YWx1ZWhlaWdodCtcInB4IFwiK2EubGFyZ2VIZWlnaHQvYS5uZXd2YWx1ZWhlaWdodCtcInB4XCJ9KSk6KFwibGVuc1wiIT1hLm9wdGlvbnMuem9vbVR5cGUmJmEuem9vbUxlbnMuY3NzKHtcImJhY2tncm91bmQtc2l6ZVwiOmEubGFyZ2VXaWR0aC9hLm5ld3ZhbHVld2lkdGgrXG5cInB4IFwiK2EubGFyZ2VIZWlnaHQvYS5uZXd2YWx1ZXdpZHRoK1wicHhcIn0pLGEuem9vbVdpbmRvdy5jc3Moe1wiYmFja2dyb3VuZC1zaXplXCI6YS5sYXJnZVdpZHRoL2EubmV3dmFsdWV3aWR0aCtcInB4IFwiK2EubGFyZ2VIZWlnaHQvYS5uZXd2YWx1ZXdpZHRoK1wicHhcIn0pKSxhLmNoYW5nZUJnU2l6ZT0hMSksYS56b29tV2luZG93LmNzcyh7YmFja2dyb3VuZFBvc2l0aW9uOmEueHArXCJweCBcIithLnlwK1wicHhcIn0pKX0sMTYpKSk6KGEuY2hhbmdlQmdTaXplJiYoYS5uekhlaWdodD5hLm56V2lkdGg/KFwibGVuc1wiPT1hLm9wdGlvbnMuem9vbVR5cGUmJmEuem9vbUxlbnMuY3NzKHtcImJhY2tncm91bmQtc2l6ZVwiOmEubGFyZ2VXaWR0aC9hLm5ld3ZhbHVlaGVpZ2h0K1wicHggXCIrYS5sYXJnZUhlaWdodC9hLm5ld3ZhbHVlaGVpZ2h0K1wicHhcIn0pLGEuem9vbVdpbmRvdy5jc3Moe1wiYmFja2dyb3VuZC1zaXplXCI6YS5sYXJnZVdpZHRoL2EubmV3dmFsdWVoZWlnaHQrXCJweCBcIithLmxhcmdlSGVpZ2h0L1xuYS5uZXd2YWx1ZWhlaWdodCtcInB4XCJ9KSk6KFwibGVuc1wiPT1hLm9wdGlvbnMuem9vbVR5cGUmJmEuem9vbUxlbnMuY3NzKHtcImJhY2tncm91bmQtc2l6ZVwiOmEubGFyZ2VXaWR0aC9hLm5ld3ZhbHVld2lkdGgrXCJweCBcIithLmxhcmdlSGVpZ2h0L2EubmV3dmFsdWV3aWR0aCtcInB4XCJ9KSxhLmxhcmdlSGVpZ2h0L2EubmV3dmFsdWV3aWR0aDxhLm9wdGlvbnMuem9vbVdpbmRvd0hlaWdodD9hLnpvb21XaW5kb3cuY3NzKHtcImJhY2tncm91bmQtc2l6ZVwiOmEubGFyZ2VXaWR0aC9hLm5ld3ZhbHVld2lkdGgrXCJweCBcIithLmxhcmdlSGVpZ2h0L2EubmV3dmFsdWV3aWR0aCtcInB4XCJ9KTphLnpvb21XaW5kb3cuY3NzKHtcImJhY2tncm91bmQtc2l6ZVwiOmEubGFyZ2VXaWR0aC9hLm5ld3ZhbHVlaGVpZ2h0K1wicHggXCIrYS5sYXJnZUhlaWdodC9hLm5ld3ZhbHVlaGVpZ2h0K1wicHhcIn0pKSxhLmNoYW5nZUJnU2l6ZT0hMSksYS56b29tV2luZG93LmNzcyh7YmFja2dyb3VuZFBvc2l0aW9uOmEud2luZG93TGVmdFBvcytcblwicHggXCIrYS53aW5kb3dUb3BQb3MrXCJweFwifSkpfSxzZXRUaW50UG9zaXRpb246ZnVuY3Rpb24oYil7dGhpcy5uek9mZnNldD10aGlzLiRlbGVtLm9mZnNldCgpO3RoaXMudGludHBvcz
4251TdHJpbmcoLTEqKGIucGFnZVgtdGhpcy5uek9mZnNldC5sZWZ0LXRoaXMuem9vbUxlbnMud2lkdGgoKS8yKSk7dGhpcy50aW50cG9zeT1TdHJpbmcoLTEqKGIucGFnZVktdGhpcy5uek9mZnNldC50b3AtdGhpcy56b29tTGVucy5oZWlnaHQoKS8yKSk7dGhpcy5FdG9wcG9zJiYodGhpcy50aW50cG9zeT0wKTt0aGlzLkVsb3Bwb3MmJih0aGlzLnRpbnRwb3M9MCk7dGhpcy5FYm9wcG9zJiYodGhpcy50aW50cG9zeT0tMSoodGhpcy5uekhlaWdodC10aGlzLnpvb21MZW5zLmhlaWdodCgpLTIqdGhpcy5vcHRpb25zLmxlbnNCb3JkZXJTaXplKSk7dGhpcy5Fcm9wcG9zJiYodGhpcy50aW50cG9zPS0xKih0aGlzLm56V2lkdGgtdGhpcy56b29tTGVucy53aWR0aCgpLTIqdGhpcy5vcHRpb25zLmxlbnNCb3JkZXJTaXplKSk7XG50aGlzLm9wdGlvbnMudGludCYmKHRoaXMuZnVsbGhlaWdodCYmKHRoaXMudGludHBvc3k9MCksdGhpcy5mdWxsd2lkdGgmJih0aGlzLnRpbnRwb3M9MCksdGhpcy56b29tVGludEltYWdlLmNzcyh7bGVmdDp0aGlzLnRpbnRwb3MrXCJweFwifSksdGhpcy56b29tVGludEltYWdlLmNzcyh7dG9wOnRoaXMudGludHBvc3krXCJweFwifSkpfSxzd2FwdGhlaW1hZ2U6ZnVuY3Rpb24oYixhKXt2YXIgYz10aGlzLGU9bmV3IEltYWdlO2Mub3B0aW9ucy5sb2FkaW5nSWNvbiYmKGMuc3Bpbm5lcj1kKFwiPGRpdiBzdHlsZT1cXFwiYmFja2dyb3VuZDogdXJsKCdcIitjLm9wdGlvbnMubG9hZGluZ0ljb24rXCInKSBuby1yZXBlYXQgY2VudGVyO2hlaWdodDpcIitjLm56SGVpZ2h0K1wicHg7d2lkdGg6XCIrYy5ueldpZHRoKydweDt6LWluZGV4OiAyMDAwO3Bvc2l0aW9uOiBhYnNvbHV0ZTsgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjtcIj48L2Rpdj4nKSxjLiRlbGVtLmFmdGVyKGMuc3Bpbm5lcikpO1xuYy5vcHRpb25zLm9uSW1hZ2VTd2FwKGMuJGVsZW0pO2Uub25sb2FkPWZ1bmN0aW9uKCl7Yy5sYXJnZVdpZHRoPWUud2lkdGg7Yy5sYXJnZUhlaWdodD1lLmhlaWdodDtjLnpvb21JbWFnZT1hO2Muem9vbVdpbmRvdy5jc3Moe1wiYmFja2dyb3VuZC1zaXplXCI6Yy5sYXJnZVdpZHRoK1wicHggXCIrYy5sYXJnZUhlaWdodCtcInB4XCJ9KTtjLnpvb21XaW5kb3cuY3NzKHtcImJhY2tncm91bmQtc2l6ZVwiOmMubGFyZ2VXaWR0aCtcInB4IFwiK2MubGFyZ2VIZWlnaHQrXCJweFwifSk7Yy5zd2FwQWN0aW9uKGIsYSl9O2Uuc3JjPWF9LHN3YXBBY3Rpb246ZnVuY3Rpb24oYixhKXt2YXIgYz10aGlzLGU9bmV3IEltYWdlO2Uub25sb2FkPWZ1bmN0aW9uKCl7Yy5uekhlaWdodD1lLmhlaWdodDtjLm56V2lkdGg9ZS53aWR0aDtjLm9wdGlvbnMub25JbWFnZVN3YXBDb21wbGV0ZShjLiRlbGVtKTtjLmRvbmVDYWxsYmFjaygpfTtlLnNyYz1iO2MuY3VycmVudFpvb21MZXZlbD1jLm9wdGlvbnMuem9vbUxldmVsO2Mub3B0aW9ucy5tYXhab29tTGV2ZWw9XG4hMTtcImxlbnNcIj09Yy5vcHRpb25zLnpvb21UeXBlJiZjLnpvb21MZW5zLmNzcyh7YmFja2dyb3VuZEltYWdlOlwidXJsKCdcIithK1wiJylcIn0pO1wid2luZG93XCI9PWMub3B0aW9ucy56b29tVHlwZSYmYy56b29tV2luZG93LmNzcyh7YmFja2dyb3VuZEltYWdlOlwidXJsKCdcIithK1wiJylcIn0pO1wiaW5uZXJcIj09Yy5vcHRpb25zLnpvb21UeXBlJiZjLnpvb21XaW5kb3cuY3NzKHtiYWNrZ3JvdW5kSW1hZ2U6XCJ1cmwoJ1wiK2ErXCInKVwifSk7Yy5jdXJyZW50SW1hZ2U9YTtpZihjLm9wdGlvbnMuaW1hZ2VDcm9zc2ZhZGUpe3ZhciBmPWMuJGVsZW0sZz1mLmNsb25lKCk7Yy4kZWxlbS5hdHRyKFwic3JjXCIsYik7Yy4kZWxlbS5hZnRlcihnKTtnLnN0b3AoITApLmZhZGVPdXQoYy5vcHRpb25zLmltYWdlQ3Jvc3NmYWRlLGZ1bmN0aW9uKCl7ZCh0aGlzKS5yZW1vdmUoKX0pO2MuJGVsZW0ud2lkdGgoXCJhdXRvXCIpLnJlbW92ZUF0dHIoXCJ3aWR0aFwiKTtjLiRlbGVtLmhlaWdodChcImF1dG9cIikucmVtb3ZlQXR0cihcImhlaWdodFwiKTtcbmYuZmFkZUluKGMub3B0aW9ucy5pbWFnZUNyb3NzZmFkZSk7Yy5vcHRpb25zLnRpbnQmJlwiaW5uZXJcIiE9Yy5vcHRpb25zLnpvb21UeXBlJiYoZj1jLnpvb21UaW50SW1hZ2UsZz1mLmNsb25lKCksYy56b29tVGludEltYWdlLmF0dHIoXCJzcmNcIixhKSxjLnpvb21UaW50SW1hZ2UuYWZ0ZXIoZyksZy5zdG9wKCEwKS5mYWRlT3V0KGMub3B0aW9ucy5pbWFnZUNyb3NzZmFkZSxmdW5jdGlvbigpe2QodGhpcykucmVtb3ZlKCl9KSxmLmZhZGVJbihjLm9wdGlvbnMuaW1hZ2VDcm9zc2ZhZGUpLGMuem9vbVRpbnQuY3NzKHtoZWlnaHQ6Yy4kZWxlbS5oZWlnaHQoKX0pLGMuem9vbVRpbnQuY3NzKHt3aWR0aDpjLiRlbGVtLndpZHRoKCl9KSk7Yy56b29tQ29udGFpbmVyLmNzcyhcImhlaWdodFwiLGMuJGVsZW0uaGVpZ2h0KCkpO2Muem9vbUNvbnRhaW5lci5jc3MoXCJ3aWR0aFwiLGMuJGVsZW0ud2lkdGgoKSk7XCJpbm5lclwiIT1jLm9wdGlvbnMuem9vbVR5cGV8fGMub3B0aW9ucy5jb25zdHJhaW5UeXBlfHxcbihjLnpvb21XcmFwLnBhcmVudCgpLmNzcyhcImhlaWdodFwiLGMuJGVsZW0uaGVpZ2h0KCkpLGMuem9vbVdyYXAucGFyZW50KCkuY3NzKFwid2lkdGhcIixjLiRlbGVtLndpZHRoKCkpLGMuem9vbVdpbmRvdy5jc3MoXCJoZWlnaHRcIixjLiRlbGVtLmhlaWdodCgpKSxjLnpvb21XaW5kb3cuY3NzKFwid2lkdGhcIixjLiRlbGVtLndpZHRoKCkpKX1lbHNlIGMuJGVsZW0uYXR0cihcInNyY1wiLGIpLGMub3B0aW9ucy50aW50JiYoYy56b29tVGludEltYWdlLmF0dHIoXCJzcmNcIixhKSxjLnpvb21UaW50SW1hZ2UuYXR0cihcImhlaWdodFwiLGMuJGVsZW0uaGVpZ2h0KCkpLGMuem9vbVRpbnRJbWFnZS5jc3Moe2hlaWdodDpjLiRlbGVtLmhlaWdodCgpfSksYy56b29tVGludC5jc3Moe2hlaWdodDpjLiRlbGVtLmhlaWdodCgpfSkpLGMuem9vbUNvbnRhaW5lci5jc3MoXCJoZWlnaHRcIixjLiRlbGVtLmhlaWdodCgpKSxjLnpvb21Db250YWluZXIuY3NzKFwid2lkdGhcIixjLiRlbGVtLndpZHRoKCkpO2Mub3B0aW9ucy5pbWFnZUNyb3NzZmFkZSYmXG4oYy56b29tV3JhcC5jc3MoXCJoZWlnaHRcIixjLiRlbGVtLmhlaWdodCgpKSxjLnpvb21XcmFwLmNzcyhcIndpZHRoXCIsYy4kZWxlbS53aWR0aCgpKSk7Yy5vcHRpb25zLmNvbnN0cmFpblR5cGUmJihcImhlaWdodFwiPT1jLm9wdGlvbnMuY29uc3RyYWluVHlwZSYmKGMuem9vbUNvbnRhaW5lci5jc3MoXCJoZWlnaHRcIixjLm9wdGlvbnMuY29uc3RyYWluU2l6ZSksYy56b29tQ29udGFpbmVyLmNzcyhcIndpZHRoXCIsXCJhdXRvXCIpLGMub3B0aW9ucy5pbWFnZUNyb3NzZmFkZT8oYy56b29tV3JhcC5jc3MoXCJoZWlnaHRcIixjLm9wdGlvbnMuY29uc3RyYWluU2l6ZSksYy56b29tV3JhcC5jc3MoXCJ3aWR0aFwiLFwiYXV0b1wiKSxjLmNvbnN0d2lkdGg9Yy56b29tV3JhcC53aWR0aCgpKTooYy4kZWxlbS5jc3MoXCJoZWlnaHRcIixjLm9wdGlvbnMuY29uc3RyYWluU2l6ZSksYy4kZWxlbS5jc3MoXCJ3aWR0aFwiLFwiYXV0b1wiKSxjLmNvbnN0d2lkdGg9Yy4kZWxlbS53aWR0aCgpKSxcImlubmVyXCI9PWMub3B0aW9ucy56b29tVHlwZSYmXG4oYy56b29tV3JhcC5wYXJlbnQoKS5jc3MoXCJoZWlnaHRcIixjLm9wdGlvbnMuY29uc3RyYWluU2l6ZSksYy56b29tV3JhcC5wYXJlbnQoKS5jc3MoXCJ3aWR0aFwiLGMuY29uc3R3aWR0aCksYy56b29tV2luZG93LmNzcyhcImhlaWdodFwiLGMub3B0aW9ucy5jb25zdHJhaW5TaXplKSxjLnpvb21XaW5kb3cuY3NzKFwid2lkdGhcIixjLmNvbnN0d2lkdGgpKSxjLm9wdGlvbnMudGludCYmKGMudGludENvbnRhaW5lci5jc3MoXCJoZWlnaHRcIixjLm9wdGlvbnMuY29uc3RyYWluU2l6ZSksYy50aW50Q29udGFpbmVyLmNzcyhcIndpZHRoXCIsYy5jb25zdHdpZHRoKSxjLnpvb21UaW50LmNzcyhcImhlaWdodFwiLGMub3B0aW9ucy5jb25zdHJhaW5TaXplKSxjLnpvb21UaW50LmNzcyhcIndpZHRoXCIsYy5jb25zdHdpZHRoKSxjLnpvb21UaW50SW1hZ2UuY3NzKFwiaGVpZ2h0XCIsYy5vcHRpb25zLmNvbnN0cmFpblNpemUpLGMuem9vbVRpbnRJbWFnZS5jc3MoXCJ3aWR0aFwiLGMuY29uc3R3aWR0aCkpKSxcIndpZHRoXCI9PVxuYy5vcHRpb25zLmNvbnN0cmFpblR5cGUmJihjLnpvb21Db250YWluZXIuY3NzKFwiaGVpZ2h0XCIsXCJhdXRvXCIpLGMuem9vbUNvbnRhaW5lci5jc3MoXCJ3aWR0aFwiLGMub3B0aW9ucy5jb25zdHJhaW5TaXplKSxjLm9wdGlvbnMuaW1hZ2VDcm9zc2ZhZGU/KGMuem9vbVdyYXAuY3NzKFwiaGVpZ2h0XCIsXCJhdXRvXCIpLGMuem9vbVdyYXAuY3NzKFwid2lkdGhcIixjLm9wdGlvbnMuY29uc3RyYWluU2l6ZSksYy5jb25zdGhlaWdodD1jLnpvb21XcmFwLmhlaWdodCgpKTooYy4kZWxlbS5jc3MoXCJoZWlnaHRcIixcImF1dG9cIiksYy4kZWxlbS5jc3MoXCJ3aWR0aFwiLGMub3B0aW9ucy5jb25zdHJhaW5TaXplKSxjLmNvbnN0aGVpZ2h0PWMuJGVsZW0uaGVpZ2h0KCkpLFwiaW5uZXJcIj09Yy5vcHRpb25zLnpvb21UeXBlJiYoYy56b29tV3JhcC5wYXJlbnQoKS5jc3MoXCJoZWlnaHRcIixjLmNvbnN0aGVpZ2h0KSxjLnpvb21XcmFwLnBhcmVudCgpLmNzcyhcIndpZHRoXCIsYy5vcHRpb25zLmNvbnN0cmFpblNpemUpLGMuem9vbVdpbmRvdy5jc3MoXCJoZWlnaHRcIixcbmMuY29uc3RoZWlnaHQpLGMuem9vbVdpbmRvdy5jc3MoXCJ3aWR0aFwiLGMub3B0aW9ucy5jb25zdHJhaW5TaXplKSksYy5vcHRpb25zLnRpbnQmJihjLnRpbnRDb250YWluZXIuY3NzKFwiaGVpZ2h0XCIsYy5jb25zdGhlaWdodCksYy50aW50Q29udGFpbmVyLmNzcyhcIndpZHRoXCIsYy5vcHRpb25zLmNvbnN0cmFpblNpemUpLGMuem9vbVRpbnQuY3NzKFwiaGVpZ2h0XCIsYy5jb25zdGhlaWdodCksYy56b29tVGludC5jc3MoXCJ3aWR0aFwiLGMub3B0aW9ucy5jb25zdHJhaW5TaXplKSxjLnpvb21UaW50SW1hZ2UuY3NzKFwiaGVpZ2h0XCIsYy5jb25zdGhlaWdodCksYy56b29tVGludEltYWdlLmNzcyhcIndpZHRoXCIsYy5vcHRpb25zLmNvbnN0cmFpblNpemUpKSkpfSxkb25lQ2FsbGJhY2s6ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMubG9hZGluZ0ljb24mJnRoaXMuc3Bpbm5lci5oaWRlKCk7dGhpcy5uek9mZnNldD10aGlzLiRlbGVtLm9mZnNldCgpO3RoaXMubnpXaWR0aD10aGlzLiRlbGVtLndpZHRoKCk7XG50aGlzLm56SGVpZ2h0PXRoaXMuJGVsZW0uaGVpZ2h0KCk7dGhpcy5jdXJyZW50Wm9vbUxldmVsPXRoaXMub3B0aW9ucy56b29tTGV2ZWw7dGhpcy53aWR0aFJhdGlvPXRoaXMubGFyZ2VXaWR0aC90aGlzLm56V2lkdGg7dGhpcy5oZWlnaHRSYXRpbz10aGlzLmxhcmdlSGVpZ2h0L3RoaXMubnpIZWlnaHQ7XCJ3aW5kb3dcIj09dGhpcy5vcHRpb25zLnpvb21UeXBlJiYobGVuc0hlaWdodD10aGlzLm56SGVpZ2h0PHRoaXMub3B0aW9ucy56b29tV2luZG93V2lkdGgvdGhpcy53aWR0aFJhdGlvP3RoaXMubnpIZWlnaHQ6U3RyaW5nKHRoaXMub3B0aW9ucy56b29tV2luZG93SGVpZ2h0L3RoaXMuaGVpZ2h0UmF0aW8pLGxlbnNXaWR0aD10aGlzLm9wdGlvbnMuem9vbVdpbmRvd1dpZHRoPHRoaXMub3B0aW9ucy56b29tV2luZG93V2lkdGg/dGhpcy5ueldpZHRoOnRoaXMub3B0aW9ucy56b29tV2luZG93V2lkdGgvdGhpcy53aWR0aFJhdGlvLHRoaXMuem9vbUxlbnMmJih0aGlzLnpvb21MZW5zLmNzcyhcIndpZHRoXCIsXG5sZW5zV2lkdGgpLHRoaXMuem9vbUxlbnMuY3NzKFwiaGVpZ2h0XCIsbGVuc0hlaWdodCkpKX0sZ2V0Q3VycmVudEltYWdlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuem9vbUltYWdlfSxnZXRHYWxsZXJ5TGlzdDpmdW5jdGlvbigpe3ZhciBiPXRoaXM7Yi5nYWxsZXJ5bGlzdD1bXTtiLm9wdGlvbnMuZ2FsbGVyeT9kKFwiI1wiK2Iub3B0aW9ucy5nYWxsZXJ5K1wiIGFcIikuZWFjaChmdW5jdGlvbigpe3ZhciBhPVwiXCI7ZCh0aGlzKS5kYXRhKFwiem9vbS1pbWFnZVwiKT9hPWQodGhpcykuZGF0YShcInpvb20taW1hZ2VcIik6ZCh0aGlzKS5kYXRhKFwiaW1hZ2VcIikmJihhPWQodGhpcykuZGF0YShcImltYWdlXCIpKTthPT1iLnpvb21JbWFnZT9iLmdhbGxlcnlsaXN0LnVuc2hpZnQoe2hyZWY6XCJcIithK1wiXCIsdGl0bGU6ZCh0aGlzKS5maW5kKFwiaW1nXCIpLmF0dHIoXCJ0aXRsZVwiKX0pOmIuZ2FsbGVyeWxpc3QucHVzaCh7aHJlZjpcIlwiK2ErXCJcIix0aXRsZTpkKHRoaXMpLmZpbmQoXCJpbWdcIikuYXR0cihcInRpdGxlXCIpfSl9KTpcbmIuZ2FsbGVyeWxpc3QucHVzaCh7aHJlZjpcIlwiK2Iuem9vbUltYWdlK1wiXCIsdGl0bGU6ZCh0aGlzKS5maW5kKFwiaW1nXCIpLmF0dHIoXCJ0aXRsZVwiKX0pO3JldHVybiBiLmdhbGxlcnlsaXN0fSxjaGFuZ2Vab29tTGV2ZWw6ZnVuY3Rpb24oYil7dGhpcy5zY3JvbGxpbmdMb2NrPSEwO3RoaXMubmV3dmFsdWU9cGFyc2VGbG9hdChiKS50b0ZpeGVkKDIpO25ld3ZhbHVlPXBhcnNlRmxvYXQoYikudG9GaXhlZCgyKTttYXhoZWlnaHRuZXd2YWx1ZT10aGlzLmxhcmdlSGVpZ2h0Lyh0aGlzLm9wdGlvbnMuem9vbVdpbmRvd0hlaWdodC90aGlzLm56SGVpZ2h0KnRoaXMubnpIZWlnaHQpO21heHdpZHRodG5ld3ZhbHVlPXRoaXMubGFyZ2VXaWR0aC8odGhpcy5vcHRpb25zLnpvb21XaW5kb3dXaWR0aC90aGlzLm56V2lkdGgqdGhpcy5ueldpZHRoKTtcImlubmVyXCIhPXRoaXMub3B0aW9ucy56b29tVHlwZSYmKG1heGhlaWdodG5ld3ZhbHVlPD1uZXd2YWx1ZT8odGhpcy5oZWlnaHRSYXRpbz10aGlzLmxhcmdlSGVpZ2h0L1xubWF4aGVpZ2h0bmV3dmFsdWUvdGhpcy5uekhlaWdodCx0aGlzLm5ld3ZhbHVlaGVpZ2h0PW1heGhlaWdodG5ld3ZhbHVlLHRoaXMuZnVsbGhlaWdodD0hMCk6KHRoaXMuaGVpZ2h0UmF0aW89dGhpcy5sYXJnZUhlaWdodC9uZXd2YWx1ZS90aGlzLm56SGVpZ2h0LHRoaXMubmV3dmFsdWVoZWlnaHQ9bmV3dmFsdWUsdGhpcy5mdWxsaGVpZ2h0PSExKSxtYXh3aWR0aHRuZXd2YWx1ZTw9bmV3dmFsdWU/KHRoaXMud2lkdGhSYXRpbz10aGlzLmxhcmdlV2lkdGgvbWF4d2lkdGh0bmV3dmFsdWUvdGhpcy5ueldpZHRoLHRoaXMubmV3dmFsdWV3aWR0aD1tYXh3aWR0aHRuZXd2YWx1ZSx0aGlzLmZ1bGx3aWR0aD0hMCk6KHRoaXMud2lkdGhSYXRpbz10aGlzLmxhcmdlV2lkdGgvbmV3dmFsdWUvdGhpcy5ueldpZHRoLHRoaXMubmV3dmFsdWV3aWR0aD1uZXd2YWx1ZSx0aGlzLmZ1bGx3aWR0aD0hMSksXCJsZW5zXCI9PXRoaXMub3B0aW9ucy56b29tVHlwZSYmKG1heGhlaWdodG5ld3ZhbHVlPD1uZXd2YWx1ZT9cbih0aGlzLmZ1bGx3aWR0aD0hMCx0aGlzLm5ld3ZhbHVld2lkdGg9bWF4aGVpZ2h0bmV3dmFsdWUpOih0aGlzLndpZHRoUmF0aW89dGhpcy5sYXJnZVdpZHRoL25ld3ZhbHVlL3RoaXMubnpXaWR0aCx0aGlzLm5ld3ZhbHVld2lkdGg9bmV3dmFsdWUsdGhpcy5mdWxsd2lkdGg9ITEpKSk7XCJpbm5lclwiPT10aGlzLm9wdGlvbnMuem9vbVR5cGUmJihtYXhoZWlnaHRuZXd2YWx1ZT1wYXJzZU
425Zsb2F0KHRoaXMubGFyZ2VIZWlnaHQvdGhpcy5uekhlaWdodCkudG9GaXhlZCgyKSxtYXh3aWR0aHRuZXd2YWx1ZT1wYXJzZUZsb2F0KHRoaXMubGFyZ2VXaWR0aC90aGlzLm56V2lkdGgpLnRvRml4ZWQoMiksbmV3dmFsdWU+bWF4aGVpZ2h0bmV3dmFsdWUmJihuZXd2YWx1ZT1tYXhoZWlnaHRuZXd2YWx1ZSksbmV3dmFsdWU+bWF4d2lkdGh0bmV3dmFsdWUmJihuZXd2YWx1ZT1tYXh3aWR0aHRuZXd2YWx1ZSksbWF4aGVpZ2h0bmV3dmFsdWU8PW5ld3ZhbHVlPyh0aGlzLmhlaWdodFJhdGlvPXRoaXMubGFyZ2VIZWlnaHQvXG5uZXd2YWx1ZS90aGlzLm56SGVpZ2h0LHRoaXMubmV3dmFsdWVoZWlnaHQ9bmV3dmFsdWU+bWF4aGVpZ2h0bmV3dmFsdWU/bWF4aGVpZ2h0bmV3dmFsdWU6bmV3dmFsdWUsdGhpcy5mdWxsaGVpZ2h0PSEwKToodGhpcy5oZWlnaHRSYXRpbz10aGlzLmxhcmdlSGVpZ2h0L25ld3ZhbHVlL3RoaXMubnpIZWlnaHQsdGhpcy5uZXd2YWx1ZWhlaWdodD1uZXd2YWx1ZT5tYXhoZWlnaHRuZXd2YWx1ZT9tYXhoZWlnaHRuZXd2YWx1ZTpuZXd2YWx1ZSx0aGlzLmZ1bGxoZWlnaHQ9ITEpLG1heHdpZHRodG5ld3ZhbHVlPD1uZXd2YWx1ZT8odGhpcy53aWR0aFJhdGlvPXRoaXMubGFyZ2VXaWR0aC9uZXd2YWx1ZS90aGlzLm56V2lkdGgsdGhpcy5uZXd2YWx1ZXdpZHRoPW5ld3ZhbHVlPm1heHdpZHRodG5ld3ZhbHVlP21heHdpZHRodG5ld3ZhbHVlOm5ld3ZhbHVlLHRoaXMuZnVsbHdpZHRoPSEwKToodGhpcy53aWR0aFJhdGlvPXRoaXMubGFyZ2VXaWR0aC9uZXd2YWx1ZS90aGlzLm56V2lkdGgsdGhpcy5uZXd2YWx1ZXdpZHRoPVxubmV3dmFsdWUsdGhpcy5mdWxsd2lkdGg9ITEpKTtzY3Jjb250aW51ZT0hMTtcImlubmVyXCI9PXRoaXMub3B0aW9ucy56b29tVHlwZSYmKHRoaXMubnpXaWR0aD50aGlzLm56SGVpZ2h0JiYodGhpcy5uZXd2YWx1ZXdpZHRoPD1tYXh3aWR0aHRuZXd2YWx1ZT9zY3Jjb250aW51ZT0hMDooc2NyY29udGludWU9ITEsdGhpcy5mdWxsd2lkdGg9dGhpcy5mdWxsaGVpZ2h0PSEwKSksdGhpcy5uekhlaWdodD50aGlzLm56V2lkdGgmJih0aGlzLm5ld3ZhbHVld2lkdGg8PW1heHdpZHRodG5ld3ZhbHVlP3NjcmNvbnRpbnVlPSEwOihzY3Jjb250aW51ZT0hMSx0aGlzLmZ1bGx3aWR0aD10aGlzLmZ1bGxoZWlnaHQ9ITApKSk7XCJpbm5lclwiIT10aGlzLm9wdGlvbnMuem9vbVR5cGUmJihzY3Jjb250aW51ZT0hMCk7c2NyY29udGludWUmJih0aGlzLnpvb21Mb2NrPTAsdGhpcy5jaGFuZ2Vab29tPSEwLHRoaXMub3B0aW9ucy56b29tV2luZG93SGVpZ2h0L3RoaXMuaGVpZ2h0UmF0aW88PXRoaXMubnpIZWlnaHQmJlxuKHRoaXMuY3VycmVudFpvb21MZXZlbD10aGlzLm5ld3ZhbHVlaGVpZ2h0LFwibGVuc1wiIT10aGlzLm9wdGlvbnMuem9vbVR5cGUmJlwiaW5uZXJcIiE9dGhpcy5vcHRpb25zLnpvb21UeXBlJiYodGhpcy5jaGFuZ2VCZ1NpemU9ITAsdGhpcy56b29tTGVucy5jc3Moe2hlaWdodDpTdHJpbmcodGhpcy5vcHRpb25zLnpvb21XaW5kb3dIZWlnaHQvdGhpcy5oZWlnaHRSYXRpbykrXCJweFwifSkpLFwibGVuc1wiPT10aGlzLm9wdGlvbnMuem9vbVR5cGV8fFwiaW5uZXJcIj09dGhpcy5vcHRpb25zLnpvb21UeXBlKSYmKHRoaXMuY2hhbmdlQmdTaXplPSEwKSx0aGlzLm9wdGlvbnMuem9vbVdpbmRvd1dpZHRoL3RoaXMud2lkdGhSYXRpbzw9dGhpcy5ueldpZHRoJiYoXCJpbm5lclwiIT10aGlzLm9wdGlvbnMuem9vbVR5cGUmJnRoaXMubmV3dmFsdWV3aWR0aD50aGlzLm5ld3ZhbHVlaGVpZ2h0JiYodGhpcy5jdXJyZW50Wm9vbUxldmVsPXRoaXMubmV3dmFsdWV3aWR0aCksXCJsZW5zXCIhPXRoaXMub3B0aW9ucy56b29tVHlwZSYmXG5cImlubmVyXCIhPXRoaXMub3B0aW9ucy56b29tVHlwZSYmKHRoaXMuY2hhbmdlQmdTaXplPSEwLHRoaXMuem9vbUxlbnMuY3NzKHt3aWR0aDpTdHJpbmcodGhpcy5vcHRpb25zLnpvb21XaW5kb3dXaWR0aC90aGlzLndpZHRoUmF0aW8pK1wicHhcIn0pKSxcImxlbnNcIj09dGhpcy5vcHRpb25zLnpvb21UeXBlfHxcImlubmVyXCI9PXRoaXMub3B0aW9ucy56b29tVHlwZSkmJih0aGlzLmNoYW5nZUJnU2l6ZT0hMCksXCJpbm5lclwiPT10aGlzLm9wdGlvbnMuem9vbVR5cGUmJih0aGlzLmNoYW5nZUJnU2l6ZT0hMCx0aGlzLm56V2lkdGg+dGhpcy5uekhlaWdodCYmKHRoaXMuY3VycmVudFpvb21MZXZlbD10aGlzLm5ld3ZhbHVld2lkdGgpLHRoaXMubnpIZWlnaHQ+dGhpcy5ueldpZHRoJiYodGhpcy5jdXJyZW50Wm9vbUxldmVsPXRoaXMubmV3dmFsdWV3aWR0aCkpKTt0aGlzLnNldFBvc2l0aW9uKHRoaXMuY3VycmVudExvYyl9LGNsb3NlQWxsOmZ1bmN0aW9uKCl7c2VsZi56b29tV2luZG93JiZzZWxmLnpvb21XaW5kb3cuaGlkZSgpO1xuc2VsZi56b29tTGVucyYmc2VsZi56b29tTGVucy5oaWRlKCk7c2VsZi56b29tVGludCYmc2VsZi56b29tVGludC5oaWRlKCl9LGNoYW5nZVN0YXRlOmZ1bmN0aW9uKGIpe1wiZW5hYmxlXCI9PWImJih0aGlzLm9wdGlvbnMuem9vbUVuYWJsZWQ9ITApO1wiZGlzYWJsZVwiPT1iJiYodGhpcy5vcHRpb25zLnpvb21FbmFibGVkPSExKX19O2QuZm4uZWxldmF0ZVpvb209ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBhPU9iamVjdC5jcmVhdGUoayk7YS5pbml0KGIsdGhpcyk7ZC5kYXRhKHRoaXMsXCJlbGV2YXRlWm9vbVwiLGEpfSl9O2QuZm4uZWxldmF0ZVpvb20ub3B0aW9ucz17em9vbUFjdGl2YXRpb246XCJob3ZlclwiLHpvb21FbmFibGVkOiEwLHByZWxvYWRpbmc6MSx6b29tTGV2ZWw6MSxzY3JvbGxab29tOiExLHNjcm9sbFpvb21JbmNyZW1lbnQ6MC4xLG1pblpvb21MZXZlbDohMSxtYXhab29tTGV2ZWw6ITEsZWFzaW5nOiExLGVhc2luZ0Ftb3VudDoxMixsZW5zU2l6ZToyMDAsXG56b29tV2luZG93V2lkdGg6NDAwLHpvb21XaW5kb3dIZWlnaHQ6NDAwLHpvb21XaW5kb3dPZmZldHg6MCx6b29tV2luZG93T2ZmZXR5OjAsem9vbVdpbmRvd1Bvc2l0aW9uOjEsem9vbVdpbmRvd0JnQ29sb3VyOlwiI2ZmZlwiLGxlbnNGYWRlSW46ITEsbGVuc0ZhZGVPdXQ6ITEsZGVidWc6ITEsem9vbVdpbmRvd0ZhZGVJbjohMSx6b29tV2luZG93RmFkZU91dDohMSx6b29tV2luZG93QWx3YXlzU2hvdzohMSx6b29tVGludEZhZG
425VJbjohMSx6b29tVGludEZhZGVPdXQ6ITEsYm9yZGVyU2l6ZTo0LHNob3dMZW5zOiEwLGJvcmRlckNvbG91cjpcIiM4ODhcIixsZW5zQm9yZGVyU2l6ZToxLGxlbnNCb3JkZXJDb2xvdXI6XCIjMDAwXCIsbGVuc1NoYXBlOlwic3F1YXJlXCIsem9vbVR5cGU6XCJ3aW5kb3dcIixjb250YWluTGVuc1pvb206ITEsbGVuc0NvbG91cjpcIndoaXRlXCIsbGVuc09wYWNpdHk6MC40LGxlbnN6b29tOiExLHRpbnQ6ITEsdGludENvbG91cjpcIiMzMzNcIix0aW50T3BhY2l0eTowLjQsZ2FsbGVyeTohMSxcbmdhbGxlcnlBY3RpdmVDbGFzczpcInpvb21HYWxsZXJ5QWN0aXZlXCIsaW1hZ2VDcm9zc2ZhZGU6ITEsY29uc3RyYWluVHlwZTohMSxjb25zdHJhaW5TaXplOiExLGxvYWRpbmdJY29uOiExLGN1cnNvcjpcImRlZmF1bHRcIixyZXNwb25zaXZlOiEwLG9uQ29tcGxldGU6ZC5ub29wLG9uWm9vbWVkSW1hZ2VMb2FkZWQ6ZnVuY3Rpb24oKXt9LG9uSW1hZ2VTd2FwOmQubm9vcCxvbkltYWdlU3dhcENvbXBsZXRlOmQubm9vcH19KShqUXVlcnksd2luZG93LGRvY3VtZW50KTtcblxuLyohXG4gKiBqUXVlcnkgVmFsaWRhdGlvbiBQbHVnaW4gdjEuMTkuMVxuICpcbiAqIGh0dHBzOi8vanF1ZXJ5dmFsaWRhdGlvbi5vcmcvXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDE5IErDtnJuIFphZWZmZXJlclxuICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlXG4gKi9cbiAhZnVuY3Rpb24odCl7XCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShbXCJqcXVlcnlcIl0sdCk6XCJvYmplY3RcIj09dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9dChyZXF1aXJlKFwianF1ZXJ5XCIpKTp0KGpRdWVyeSl9KGZ1bmN0aW9uKHQpe3ZhciBlO3QuZXh0ZW5kKHQuZm4se3ZhbGlkYXRlOmZ1bmN0aW9uKGUpe2lmKHRoaXMubGVuZ3RoKXt2YXIgaT10LmRhdGEodGhpc1swXSxcInZhbGlkYXRvclwiKTtyZXR1cm4gaXx8KHRoaXMuYXR0cihcIm5vdmFsaWRhdGVcIixcIm5vdmFsaWRhdGVcIiksaT1uZXcgdC52YWxpZGF0b3IoZSx0aGlzWzBdKSx0LmRhdGEodGhpc1swXSxcInZhbGlkYXRvclwiLGkpLGkuc2V0dGluZ3Mub25zdWJtaXQmJih0aGlzLm9uKFwiY2xpY2sudmFsaWRhdGVcIixcIjpzdWJtaXRcIixmdW5jdGlvbihlKXtpLnN1Ym1pdEJ1dHRvbj1lLmN1cnJlbnRUYXJnZXQsdCh0aGlzKS5oYXNDbGFzcyhcImNhbmNlbFwiKSYmKGkuY2FuY2VsU3VibWl0PSEwKSx2b2lkIDAhPT10KHRoaXMpLmF0dHIoXCJmb3Jtbm92YWxpZGF0ZVwiKSYmKGkuY2FuY2VsU3VibWl0PSEwKX0pLHRoaXMub24oXCJzdWJtaXQudmFsaWRhdGVcIixmdW5jdGlvbihlKXtmdW5jdGlvbiBzKCl7dmFyIHMsbjtyZXR1cm4gaS5zdWJtaXRCdXR0b24mJihpLnNldHRpbmdzLnN1Ym1pdEhhbmRsZXJ8fGkuZm9ybVN1Ym1pdHRlZCkmJihzPXQoXCI8aW5wdXQgdHlwZT0naGlkZGVuJy8+XCIpLmF0dHIoXCJuYW1lXCIsaS5zdWJtaXRCdXR0b24ubmFtZSkudmFsKHQoaS5zdWJtaXRCdXR0b24pLnZhbCgpKS5hcHBlbmRUbyhpLmN1cnJlbnRGb3JtKSksIShpLnNldHRpbmdzLnN1Ym1pdEhhbmRsZXImJiFpLnNldHRpbmdzLmRlYnVnKXx8KG49aS5zZXR0aW5ncy5zdWJtaXRIYW5kbGVyLmNhbGwoaSxpLmN1cnJlbnRGb3JtLGUpLHMmJnMucmVtb3ZlKCksdm9pZCAwIT09biYmbil9cmV0dXJuIGkuc2V0dGluZ3MuZGVidWcmJmUucHJldmVudERlZmF1bHQoKSxpLmNhbmNlbFN1Ym1pdD8oaS5jYW5jZWxTdWJtaXQ9ITEscygpKTppLmZvcm0oKT9pLnBlbmRpbmdSZXF1ZXN0PyhpLmZvcm1TdWJtaXR0ZWQ9ITAsITEpOnMoKTooaS5mb2N1c0ludmFsaWQoKSwhMSl9KSksaSl9ZSYmZS5kZWJ1ZyYmd2luZG93LmNvbnNvbGUmJmNvbnNvbGUud2FybihcIk5vdGhpbmcgc2VsZWN0ZWQsIGNhbid0IHZhbGlkYXRlLCByZXR1cm5pbmcgbm90aGluZy5cIil9LHZhbGlkOmZ1bmN0aW9uKCl7dmFyIGUsaSxzO3JldHVybiB0KHRoaXNbMF0pLmlzKFwiZm9ybVwiKT9lPXRoaXMudmFsaWRhdGUoKS5mb3JtKCk6KHM9W10sZT0hMCxpPXQodGhpc1swXS5mb3JtKS52YWxpZGF0ZSgpLHRoaXMuZWFjaChmdW5jdGlvbigpeyhlPWkuZWxlbWVudCh0aGlzKSYmZSl8fChzPXMuY29uY2F0KGkuZXJyb3JMaXN0KSl9KSxpLmVycm9yTGlzdD1zKSxlfSxydWxlczpmdW5jdGlvbihlLGkpe3ZhciBzLG4scixhLG8sbCxoPXRoaXNbMF0sZD12b2lkIDAhPT10aGlzLmF0dHIoXCJjb250ZW50ZWRpdGFibGVcIikmJlwiZmFsc2VcIiE9PXRoaXMuYXR0cihcImNvbnRlbnRlZGl0YWJsZVwiKTtpZihudWxsIT1oJiYoIWguZm9ybSYmZCYmKGguZm9ybT10aGlzLmNsb3Nlc3QoXCJmb3JtXCIpWzBdLGgubmFtZT10aGlzLmF0dHIoXCJuYW1lXCIpKSxudWxsIT1oLmZvcm0pKXtpZihlKXN3aXRjaChuPShzPXQuZGF0YShoLmZvcm0sXCJ2YWxpZGF0b3JcIikuc2V0dGluZ3MpLnJ1bGVzLHI9dC52YWxpZGF0b3Iuc3RhdGljUnVsZXMoaCksZSl7Y2FzZVwiYWRkXCI6dC5leHRlbmQocix0LnZhbGlkYXRvci5ub3JtYWxpemVSdWxlKGkpKSxkZWxldGUgci5tZXNzYWdlcyxuW2gubmFtZV09cixpLm1lc3NhZ2VzJiYocy5tZXNzYWdlc1toLm5hbWVdPXQuZXh0ZW5kKHMubWVzc2FnZXNbaC5uYW1lXSxpLm1lc3NhZ2VzKSk7YnJlYWs7Y2FzZVwicmVtb3ZlXCI6cmV0dXJuIGk/KGw9e30sdC5lYWNoKGkuc3BsaXQoL1xccy8pLGZ1bmN0aW9uKHQsZSl7bFtlXT1yW2VdLGRlbGV0ZSByW2VdfSksbCk6KGRlbGV0ZSBuW2gubmFtZV0scil9cmV0dXJuKGE9dC52YWxpZGF0b3Iubm9ybWFsaXplUnVsZXModC5leHRlbmQoe30sdC52YWxpZGF0b3IuY2xhc3NSdWxlcyhoKSx0LnZhbGlkYXRvci5hdHRyaWJ1dGVSdWxlcyhoKSx0LnZhbGlkYXRvci5kYXRhUnVsZXMoaCksdC52YWxpZGF0b3Iuc3RhdGljUnVsZXMoaCkpLGgpKS5yZXF1aXJlZCYmKG89YS5yZXF1aXJlZCxkZWxldGUgYS5yZXF1aXJlZCxhPXQuZXh0ZW5kKHtyZXF1aXJlZDpvfSxhKSksYS5yZW1vdGUmJihvPWEucmVtb3RlLGRlbGV0ZSBhLnJlbW90ZSxhPXQuZXh0ZW5kKGEse3JlbW90ZTpvfSkpLGF9fX0pLHQuZXh0
425ZW5kKHQuZXhwci5wc2V1ZG9zfHx0LmV4cHJbXCI6XCJdLHtibGFuazpmdW5jdGlvbihlKXtyZXR1cm4hdC50cmltKFwiXCIrdChlKS52YWwoKSl9LGZpbGxlZDpmdW5jdGlvbihlKXt2YXIgaT10KGUpLnZhbCgpO3JldHVybiBudWxsIT09aSYmISF0LnRyaW0oXCJcIitpKX0sdW5jaGVja2VkOmZ1bmN0aW9uKGUpe3JldHVybiF0KGUpLnByb3AoXCJjaGVja2VkXCIpfX0pLHQudmFsaWRhdG9yPWZ1bmN0aW9uKGUsaSl7dGhpcy5zZXR0aW5ncz10LmV4dGVuZCghMCx7fSx0LnZhbGlkYXRvci5kZWZhdWx0cyxlKSx0aGlzLmN1cnJlbnRGb3JtPWksdGhpcy5pbml0KCl9LHQudmFsaWRhdG9yLmZvcm1hdD1mdW5jdGlvbihlLGkpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD9mdW5jdGlvbigpe3ZhciBpPXQubWFrZUFycmF5KGFyZ3VtZW50cyk7cmV0dXJuIGkudW5zaGlmdChlKSx0LnZhbGlkYXRvci5mb3JtYXQuYXBwbHkodGhpcyxpKX06dm9pZCAwPT09aT9lOihhcmd1bWVudHMubGVuZ3RoPjImJmkuY29uc3RydWN0b3IhPT1BcnJheSYmKGk9dC5tYWtlQXJyYXkoYXJndW1lbnRzKS5zbGljZSgxKSksaS5jb25zdHJ1Y3RvciE9PUFycmF5JiYoaT1baV0pLHQuZWFjaChpLGZ1bmN0aW9uKHQsaSl7ZT1lLnJlcGxhY2UobmV3IFJlZ0V4cChcIlxcXFx7XCIrdCtcIlxcXFx9XCIsXCJnXCIpLGZ1bmN0aW9uKCl7cmV0dXJuIGl9KX0pLGUpfSx0LmV4dGVuZCh0LnZhbGlkYXRvcix7ZGVmYXVsdHM6e21lc3NhZ2VzOnt9LGdyb3Vwczp7fSxydWxlczp7fSxlcnJvckNsYXNzOlwiZXJyb3JcIixwZW5kaW5nQ2xhc3M6XCJwZW5kaW5nXCIsdmFsaWRDbGFzczpcInZhbGlkXCIsZXJyb3JFbGVtZW50OlwibGFiZWxcIixmb2N1c0NsZWFudXA6ITEsZm9jdXNJbnZhbGlkOiEwLGVycm9yQ29udGFpbmVyOnQoW10pLGVycm9yTGFiZWxDb250YWluZXI6dChbXSksb25zdWJtaXQ6ITAsaWdub3JlOlwiOmhpZGRlblwiLGlnbm9yZVRpdGxlOiExLG9uZm9jdXNpbjpmdW5jdGlvbih0KXt0aGlzLmxhc3RBY3RpdmU9dCx0aGlzLnNldHRpbmdzLmZvY3VzQ2xlYW51cCYmKHRoaXMuc2V0dGluZ3MudW5oaWdobGlnaHQmJnRoaXMuc2V0dGluZ3MudW5oaWdobGlnaHQuY2FsbCh0aGlzLHQsdGhpcy5zZXR0aW5ncy5lcnJvckNsYXNzLHRoaXMuc2V0dGluZ3MudmFsaWRDbGFzcyksdGhpcy5oaWRlVGhlc2UodGhpcy5lcnJvcnNGb3IodCkpKX0sb25mb2N1c291dDpmdW5jdGlvbih0KXt0aGlzLmNoZWNrYWJsZSh0KXx8ISh0Lm5hbWUgaW4gdGhpcy5zdWJtaXR0ZWQpJiZ0aGlzLm9wdGlvbmFsKHQpfHx0aGlzLmVsZW1lbnQodCl9LG9ua2V5dXA6ZnVuY3Rpb24oZSxpKXs5PT09aS53aGljaCYmXCJcIj09PXRoaXMuZWxlbWVudFZhbHVlKGUpfHwtMSE9PXQuaW5BcnJheShpLmtleUNvZGUsWzE2LDE3LDE4LDIwLDM1LDM2LDM3LDM4LDM5LDQwLDQ1LDE0NCwyMjVdKXx8KGUubmFtZSBpbiB0aGlzLnN1Ym1pdHRlZHx8ZS5uYW1lIGluIHRoaXMuaW52YWxpZCkmJnRoaXMuZWxlbWVudChlKX0sb25jbGljazpmdW5jdGlvbih0KXt0Lm5hbWUgaW4gdGhpcy5zdWJtaXR0ZWQ/dGhpcy5lbGVtZW50KHQpOnQucGFyZW50Tm9kZS5uYW1lIGluIHRoaXMuc3VibWl0dGVkJiZ0aGlzLmVsZW1lbnQodC5wYXJlbnROb2RlKX0saGlnaGxpZ2h0OmZ1bmN0aW9uKGUsaSxzKXtcInJhZGlvXCI9PT1lLnR5cGU/dGhpcy5maW5kQnlOYW1lKGUubmFtZSkuYWRkQ2xhc3MoaSkucmVtb3ZlQ2xhc3Mocyk6dChlKS5hZGRDbGFzcyhpKS5yZW1vdmVDbGFzcyhzKX0sdW5oaWdobGlnaHQ6ZnVuY3Rpb24oZSxpLHMpe1wicmFkaW9cIj09PWUudHlwZT90aGlzLmZpbmRCeU5hbWUoZS5uYW1lKS5yZW1vdmVDbGFzcyhpKS5hZGRDbGFzcyhzKTp0KGUpLnJlbW92ZUNsYXNzKGkpLmFkZENsYXNzKHMpfX0sc2V0RGVmYXVsdHM6ZnVuY3Rpb24oZSl7dC5leHRlbmQodC52YWxpZGF0b3IuZGVmYXVsdHMsZSl9LG1lc3NhZ2VzOntyZXF1aXJlZDpcIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuXCIscmVtb3RlOlwiUGxlYXNlIGZpeCB0aGlzIGZpZWxkLlwiLGVtYWlsOlwiUGxlYXNlIGVudGVyIGEgdmFsaWQgZW1haWwgYWRkcmVzcy5cIix1cmw6XCJQbGVhc2UgZW50ZXIgYSB2YWxpZCBVUkwuXCIsZGF0ZTpcIlBsZWFzZSBlbnRlciBhIHZhbGlkIGRhdGUuXCIsZGF0ZUlTTzpcIlBsZWFzZSBlbnRlciBhIHZhbGlkIGRhdGUgKElTTykuXCIsbnVtYmVyOlwiUGxlYXNlIGVudGVyIGEgdmFsaWQgbnVtYmVyLlwiLGRpZ2l0czpcIlBsZWFzZSBlbnRlciBvbmx5IGRpZ2l0cy5cIixlcXVhbFRvOlwiUGxlYXNlIGVudGVyIHRoZSBzYW1lIHZhbHVlIGFnYWluLlwiLG1heGxlbmd0aDp0LnZhbGlkYXRvci5mb3JtYXQoXCJQbGVhc2UgZW50ZXIgbm8gbW9yZSB0aGFuIHswfSBjaGFyYWN0ZXJzLlwiKSxtaW5sZW5ndGg6dC52YWxpZGF0b3IuZm9ybWF0KFwiUGxlYXNlIGVudGVyIGF0IGxlYXN0IHswfSBjaGFyYWN0ZXJzLlwiKSxyYW5nZWxlbmd0aDp0LnZhbGlkYXRvci5mb3JtYXQoXCJQbGVhc2UgZW50ZXIgYSB2YWx1ZSBiZXR3ZWVuIHswfSBhbmQgezF9IGNoYXJhY3RlcnMgbG9uZy5cIikscmFuZ2U6dC52YWxpZGF0b3IuZm9ybWF0KFwiUGxlYXNlIGVudGVyIGEgdmFsdWUgYmV0d2VlbiB7MH0gYW5kIHsxfS5cIiksbWF4OnQudmFsaWRhdG9yLmZvcm1hdChcIlBsZWFzZSBlbnRlciBhIHZhbHVlIGxlc3MgdGhhbiBvciBlcXVhbCB0byB7MH0uXCIpLG1pbjp0LnZhbGlkYXRvci5mb3JtYXQoXCJQbGVhc2UgZW50ZXIgYSB2YWx1ZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gezB9LlwiKSxzdGVwOnQudmFsaWRhdG9yLmZvcm1hdChcIlBsZWFzZSBlbnRlciBhIG11bHRpcGxlIG9mIHswfS5cIil9LGF1dG9DcmVhdGVSYW5nZXM6ITEscHJvdG90eXBlOntpbml0OmZ1bmN0aW9uKCl7dGhpcy5sYWJlbENvbnRhaW5lcj10KHRoaXMuc2V0dGluZ3MuZXJyb3JMYWJlbENvbnRhaW5lciksdGhpcy5lcnJvckNvbnRleHQ9dGhpcy5sYWJlbENvbnRhaW5lci5sZW5ndGgmJnRoaXMubGFiZWxDb250YWluZXJ8fHQodGhpcy5jdXJyZW50Rm9ybSksdGhpcy5jb250YWluZXJzPXQodGhpcy5zZXR0aW5ncy5lcnJvckNvbnRhaW5lcikuYWRkKHRoaXMuc2V0dGluZ3MuZXJyb3JMYWJlbENvbnRhaW5lciksdGhpcy5zdWJtaXR0ZWQ9e30sdGhpcy52YWx1ZUNhY2hlPXt9LHRoaXMucGVuZGluZ1JlcXVlc3Q9MCx0aGlzLnBlbmRpbmc9e30sdGhpcy5pbnZhbGlkPXt9LHRoaXMucmVzZXQoKTt2YXIgZSxpPXRoaXMuY3VycmVudEZvcm0scz10aGlzLmdyb3Vwcz17fTtmdW5jdGlvbiBuKGUpe3ZhciBzPXZvaWQgMCE9PXQodGhpcykuYXR0cihcImNvbnRlbn
425RlZGl0YWJsZVwiKSYmXCJmYWxzZVwiIT09dCh0aGlzKS5hdHRyKFwiY29udGVudGVkaXRhYmxlXCIpO2lmKCF0aGlzLmZvcm0mJnMmJih0aGlzLmZvcm09dCh0aGlzKS5jbG9zZXN0KFwiZm9ybVwiKVswXSx0aGlzLm5hbWU9dCh0aGlzKS5hdHRyKFwibmFtZVwiKSksaT09PXRoaXMuZm9ybSl7dmFyIG49dC5kYXRhKHRoaXMuZm9ybSxcInZhbGlkYXRvclwiKSxyPVwib25cIitlLnR5cGUucmVwbGFjZSgvXnZhbGlkYXRlLyxcIlwiKSxhPW4uc2V0dGluZ3M7YVtyXSYmIXQodGhpcykuaXMoYS5pZ25vcmUpJiZhW3JdLmNhbGwobix0aGlzLGUpfX10LmVhY2godGhpcy5zZXR0aW5ncy5ncm91cHMsZnVuY3Rpb24oZSxpKXtcInN0cmluZ1wiPT10eXBlb2YgaSYmKGk9aS5zcGxpdCgvXFxzLykpLHQuZWFjaChpLGZ1bmN0aW9uKHQsaSl7c1tpXT1lfSl9KSxlPXRoaXMuc2V0dGluZ3MucnVsZXMsdC5lYWNoKGUsZnVuY3Rpb24oaSxzKXtlW2ldPXQudmFsaWRhdG9yLm5vcm1hbGl6ZVJ1bGUocyl9KSx0KHRoaXMuY3VycmVudEZvcm0pLm9uKFwiZm9jdXNpbi52YWxpZGF0ZSBmb2N1c291dC52YWxpZGF0ZSBrZXl1cC52YWxpZGF0ZVwiLFwiOnRleHQsIFt0eXBlPSdwYXNzd29yZCddLCBbdHlwZT0nZmlsZSddLCBzZWxlY3QsIHRleHRhcmVhLCBbdHlwZT0nbnVtYmVyJ10sIFt0eXBlPSdzZWFyY2gnXSwgW3R5cGU9J3RlbCddLCBbdHlwZT0ndXJsJ10sIFt0eXBlPSdlbWFpbCddLCBbdHlwZT0nZGF0ZXRpbWUnXSwgW3R5cGU9J2RhdGUnXSwgW3R5cGU9J21vbnRoJ10sIFt0eXBlPSd3ZWVrJ10sIFt0eXBlPSd0aW1lJ10sIFt0eXBlPSdkYXRldGltZS1sb2NhbCddLCBbdHlwZT0ncmFuZ2UnXSwgW3R5cGU9J2NvbG9yJ10sIFt0eXBlPSdyYWRpbyddLCBbdHlwZT0nY2hlY2tib3gnXSwgW2NvbnRlbnRlZGl0YWJsZV0sIFt0eXBlPSdidXR0b24nXVwiLG4pLm9uKFwiY2xpY2sudmFsaWRhdGVcIixcInNlbGVjdCwgb3B0aW9uLCBbdHlwZT0ncmFkaW8nXSwgW3R5cGU9J2NoZWNrYm94J11cIixuKSx0aGlzLnNldHRpbmdzLmludmFsaWRIYW5kbGVyJiZ0KHRoaXMuY3VycmVudEZvcm0pLm9uKFwiaW52YWxpZC1mb3JtLnZhbGlkYXRlXCIsdGhpcy5zZXR0aW5ncy5pbnZhbGlkSGFuZGxlcil9LGZvcm06ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jaGVja0Zvcm0oKSx0LmV4dGVuZCh0aGlzLnN1Ym1pdHRlZCx0aGlzLmVycm9yTWFwKSx0aGlzLmludmFsaWQ9dC5leHRlbmQoe30sdGhpcy5lcnJvck1hcCksdGhpcy52YWxpZCgpfHx0KHRoaXMuY3VycmVudEZvcm0pLnRyaWdnZXJIYW5kbGVyKFwiaW52YWxpZC1mb3JtXCIsW3RoaXNdKSx0aGlzLnNob3dFcnJvcnMoKSx0aGlzLnZhbGlkKCl9LGNoZWNrRm9ybTpmdW5jdGlvbigpe3RoaXMucHJlcGFyZUZvcm0oKTtmb3IodmFyIHQ9MCxlPXRoaXMuY3VycmVudEVsZW1lbnRzPXRoaXMuZWxlbWVudHMoKTtlW3RdO3QrKyl0aGlzLmNoZWNrKGVbdF0pO3JldHVybiB0aGlzLnZhbGlkKCl9LGVsZW1lbnQ6ZnVuY3Rpb24oZSl7dmFyIGkscyxuPXRoaXMuY2xlYW4oZSkscj10aGlzLnZhbGlkYXRpb25UYXJnZXRGb3IobiksYT10aGlzLG89ITA7cmV0dXJuIHZvaWQgMD09PXI/ZGVsZXRlIHRoaXMuaW52YWxpZFtuLm5hbWVdOih0aGlzLnByZXBhcmVFbGVtZW50KHIpLHRoaXMuY3VycmVudEVsZW1lbnRzPXQociksKHM9dGhpcy5ncm91cHNbci5uYW1lXSkmJnQuZWFjaCh0aGlzLmdyb3VwcyxmdW5jdGlvbih0LGUpe2U9PT1zJiZ0IT09ci5uYW1lJiYobj1hLnZhbGlkYXRpb25UYXJnZXRGb3IoYS5jbGVhbihhLmZpbmRCeU5hbWUodCkpKSkmJm4ubmFtZSBpbiBhLmludmFsaWQmJihhLmN1cnJlbnRFbGVtZW50cy5wdXNoKG4pLG89YS5jaGVjayhuKSYmbyl9KSxpPSExIT09dGhpcy5jaGVjayhyKSxvPW8mJmksdGhpcy5pbnZhbGlkW3IubmFtZV09IWksdGhpcy5udW1iZXJPZkludmFsaWRzKCl8fCh0aGlzLnRvSGlkZT10aGlzLnRvSGlkZS5hZGQodGhpcy5jb250YWluZXJzKSksdGhpcy5zaG93RXJyb3JzKCksdChlKS5hdHRyKFwiYXJpYS1pbnZhbGlkXCIsIWkpKSxvfSxzaG93RXJyb3JzOmZ1bmN0aW9uKGUpe2lmKGUpe3ZhciBpPXRoaXM7dC5leHRlbmQodGhpcy5lcnJvck1hcCxlKSx0aGlzLmVycm9yTGlzdD10Lm1hcCh0aGlzLmVycm9yTWFwLGZ1bmN0aW9uKHQsZSl7cmV0dXJue21lc3NhZ2U6dCxlbGVtZW50OmkuZmluZEJ5TmFtZShlKVswXX19KSx0aGlzLnN1Y2Nlc3NMaXN0PXQuZ3JlcCh0aGlzLnN1Y2Nlc3NMaXN0LGZ1bmN0aW9uKHQpe3JldHVybiEodC5uYW1lIGluIGUpfSl9dGhpcy5zZXR0aW5ncy5zaG93RXJyb3JzP3RoaXMuc2V0dGluZ3Muc2hvd0Vycm9ycy5jYWxsKHRoaXMsdGhpcy5lcnJvck1hcCx0aGlzLmVycm9yTGlzdCk6dGhpcy5kZWZhdWx0U2hvd0Vycm9ycygpfSxyZXNldEZvcm06ZnVuY3Rpb24oKXt0LmZuLnJlc2V0Rm9ybSYmdCh0aGlzLmN1cnJlbnRGb3JtKS5yZXNldEZvcm0oKSx0aGlzLmludmFsaWQ9e30sdGhpcy5zdWJtaXR0ZWQ9e30sdGhpcy5wcmVwYXJlRm9ybSgpLHRoaXMuaGlkZUVycm9ycygpO3ZhciBlPXRoaXMuZWxlbWVudHMoKS5yZW1vdmVEYXRhKFwicHJldmlvdXNWYWx1ZVwiKS5yZW1vdmVBdHRyKFwiYXJpYS1pbnZhbGlkXCIpO3RoaXMucmVzZXRFbGVtZW50cyhlKX0scmVzZXRFbGVtZW50czpmdW5jdGlvbih0KXt2YXIgZTtpZih0aGlzLnNldHRpbmdzLnVuaGlnaGxpZ2h0KWZvcihlPTA7dFtlXTtlKyspdGhpcy5zZXR0aW5ncy51bmhpZ2hsaWdodC5jYWxsKHRoaXMsdFtlXSx0aGlzLnNldHRpbmdzLmVycm9yQ2xhc3MsXCJcIiksdGhpcy5maW5kQnlOYW1lKHRbZV0ubmFtZSkucmVtb3ZlQ2xhc3ModGhpcy5zZXR0aW5ncy52YWxpZENsYXNzKTtlbHNlIHQucmVtb3ZlQ2xhc3ModGhpcy5zZXR0aW5ncy5lcnJvckNsYXNzKS5yZW1vdmVDbGFzcyh0aGlzLnNldHRpbmdzLnZhbGlkQ2xhc3MpfSxudW1iZXJPZkludmFsaWRzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub2JqZWN0TGVuZ3RoKHRoaXMuaW52YWxpZCl9LG9iamVjdExlbmd0aDpmdW5jdGlvbih0KXt2YXIgZSxpPTA7Zm9yKGUgaW4gdCl2b2lkIDAhPT10W2VdJiZudWxsIT09dFtlXSYmITEhPT10W2VdJiZpKys7cmV0dXJuIGl9LGhpZGVFcnJvcnM6ZnVuY3Rpb24oKXt0aGlzLmhpZGVUaGVzZSh0aGlzLnRvSGlkZSl9LGhpZGVUaGVzZTpmdW5jdGlvbih0KXt0Lm5vdCh0aGlzLmNvbnRhaW5lcnMpLnRleHQoXCJcIiksdGhpcy5hZGRXcmFwcGVyKHQpLmhpZGUoKX0sdmFsaWQ6ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMuc2l6ZSgpfSxzaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXJyb3JMaXN0Lmxlbmd0aH0sZm9jdXNJbnZhbGlkOmZ1bmN0aW9uKCl7aWYodGhpcy5zZXR0aW5ncy5mb2N1c0ludmFsaWQpdHJ5e3QodGhpcy5maW5kTGFzdEFjdGl2ZSgpfHx0aGlzLmVycm9yTGlzdC5sZW5ndGgmJnRoaXMuZXJyb3JMaXN0WzBdLmVsZW1lbnR8fFtdKS5maWx0ZXIoXCI6dmlzaWJsZVwiKS50cmlnZ2VyKFwiZm9jdXNcIikudHJpZ2dlcihcImZvY3VzaW5cIil9Y2F0Y2godCl7fX0sZmluZExhc3RBY3RpdmU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmxhc3RBY3RpdmU7cmV0dXJuIGUmJjE9PT10LmdyZXAodGhpcy5lcnJvckxpc3QsZnVuY3Rpb24odCl7cmV0dXJuIHQuZWxlbWVudC5uYW1lPT09ZS5uYW1lfSkubGVuZ3RoJiZlfSxlbGVtZW50czpmdW5jdGlvbigpe3ZhciBlPXR
425oaXMsaT17fTtyZXR1cm4gdCh0aGlzLmN1cnJlbnRGb3JtKS5maW5kKFwiaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEsIFtjb250ZW50ZWRpdGFibGVdXCIpLm5vdChcIjpzdWJtaXQsIDpyZXNldCwgOmltYWdlLCA6ZGlzYWJsZWRcIikubm90KHRoaXMuc2V0dGluZ3MuaWdub3JlKS5maWx0ZXIoZnVuY3Rpb24oKXt2YXIgcz10aGlzLm5hbWV8fHQodGhpcykuYXR0cihcIm5hbWVcIiksbj12b2lkIDAhPT10KHRoaXMpLmF0dHIoXCJjb250ZW50ZWRpdGFibGVcIikmJlwiZmFsc2VcIiE9PXQodGhpcykuYXR0cihcImNvbnRlbnRlZGl0YWJsZVwiKTtyZXR1cm4hcyYmZS5zZXR0aW5ncy5kZWJ1ZyYmd2luZG93LmNvbnNvbGUmJmNvbnNvbGUuZXJyb3IoXCIlbyBoYXMgbm8gbmFtZSBhc3NpZ25lZFwiLHRoaXMpLG4mJih0aGlzLmZvcm09dCh0aGlzKS5jbG9zZXN0KFwiZm9ybVwiKVswXSx0aGlzLm5hbWU9cyksdGhpcy5mb3JtPT09ZS5jdXJyZW50Rm9ybSYmKCEocyBpbiBpfHwhZS5vYmplY3RMZW5ndGgodCh0aGlzKS5ydWxlcygpKSkmJihpW3NdPSEwLCEwKSl9KX0sY2xlYW46ZnVuY3Rpb24oZSl7cmV0dXJuIHQoZSlbMF19LGVycm9yczpmdW5jdGlvbigpe3ZhciBlPXRoaXMuc2V0dGluZ3MuZXJyb3JDbGFzcy5zcGxpdChcIiBcIikuam9pbihcIi5cIik7cmV0dXJuIHQodGhpcy5zZXR0aW5ncy5lcnJvckVsZW1lbnQrXCIuXCIrZSx0aGlzLmVycm9yQ29udGV4dCl9LHJlc2V0SW50ZXJuYWxzOmZ1bmN0aW9uKCl7dGhpcy5zdWNjZXNzTGlzdD1bXSx0aGlzLmVycm9yTGlzdD1bXSx0aGlzLmVycm9yTWFwPXt9LHRoaXMudG9TaG93PXQoW10pLHRoaXMudG9IaWRlPXQoW10pfSxyZXNldDpmdW5jdGlvbigpe3RoaXMucmVzZXRJbnRlcm5hbHMoKSx0aGlzLmN1cnJlbnRFbGVtZW50cz10KFtdKX0scHJlcGFyZUZvcm06ZnVuY3Rpb24oKXt0aGlzLnJlc2V0KCksdGhpcy50b0hpZGU9dGhpcy5lcnJvcnMoKS5hZGQodGhpcy5jb250YWluZXJzKX0scHJlcGFyZUVsZW1lbnQ6ZnVuY3Rpb24odCl7dGhpcy5yZXNldCgpLHRoaXMudG9IaWRlPXRoaXMuZXJyb3JzRm9yKHQpfSxlbGVtZW50VmFsdWU6ZnVuY3Rpb24oZSl7dmFyIGkscyxuPXQoZSkscj1lLnR5cGUsYT12b2lkIDAhPT1uLmF0dHIoXCJjb250ZW50ZWRpdGFibGVcIikmJlwiZmFsc2VcIiE9PW4uYXR0cihcImNvbnRlbnRlZGl0YWJsZVwiKTtyZXR1cm5cInJhZGlvXCI9PT1yfHxcImNoZWNrYm94XCI9PT1yP3RoaXMuZmluZEJ5TmFtZShlLm5hbWUpLmZpbHRlcihcIjpjaGVja2VkXCIpLnZhbCgpOlwibnVtYmVyXCI9PT1yJiZ2b2lkIDAhPT1lLnZhbGlkaXR5P2UudmFsaWRpdHkuYmFkSW5wdXQ/XCJOYU5cIjpuLnZhbCgpOihpPWE/bi50ZXh0KCk6bi52YWwoKSxcImZpbGVcIj09PXI/XCJDOlxcXFxmYWtlcGF0aFxcXFxcIj09PWkuc3Vic3RyKDAsMTIpP2kuc3Vic3RyKDEyKToocz1pLmxhc3RJbmRleE9mKFwiL1wiKSk+PTA/aS5zdWJzdHIocysxKToocz1pLmxhc3RJbmRleE9mKFwiXFxcXFwiKSk+PTA/aS5zdWJzdHIocysxKTppOlwic3RyaW5nXCI9PXR5cGVvZiBpP2kucmVwbGFjZSgvXFxyL2csXCJcIik6aSl9LGNoZWNrOmZ1bmN0aW9uKGUpe2U9dGhpcy52YWxpZGF0aW9uVGFyZ2V0Rm9yKHRoaXMuY2xlYW4oZSkpO3ZhciBpLHMsbixyLGE9dChlKS5ydWxlcygpLG89dC5tYXAoYSxmdW5jdGlvbih0LGUpe3JldHVybiBlfSkubGVuZ3RoLGw9ITEsaD10aGlzLmVsZW1lbnRWYWx1ZShlKTtmb3IocyBpblwiZnVuY3Rpb25cIj09dHlwZW9mIGEubm9ybWFsaXplcj9yPWEubm9ybWFsaXplcjpcImZ1bmN0aW9uXCI9PXR5cGVvZiB0aGlzLnNldHRpbmdzLm5vcm1hbGl6ZXImJihyPXRoaXMuc2V0dGluZ3Mubm9ybWFsaXplciksciYmKGg9ci5jYWxsKGUsaCksZGVsZXRlIGEubm9ybWFsaXplciksYSl7bj17bWV0aG9kOnMscGFyYW1ldGVyczphW3NdfTt0cnl7aWYoXCJkZXBlbmRlbmN5LW1pc21hdGNoXCI9PT0oaT10LnZhbGlkYXRvci5tZXRob2RzW3NdLmNhbGwodGhpcyxoLGUsbi5wYXJhbWV0ZXJzKSkmJjE9PT1vKXtsPSEwO2NvbnRpbnVlfWlmKGw9ITEsXCJwZW5kaW5nXCI9PT1pKXJldHVybiB2b2lkKHRoaXMudG9IaWRlPXRoaXMudG9IaWRlLm5vdCh0aGlzLmVycm9yc0ZvcihlKSkpO2lmKCFpKXJldHVybiB0aGlzLmZvcm1hdEFuZEFkZChlLG4pLCExfWNhdGNoKHQpe3Rocm93IHRoaXMuc2V0dGluZ3MuZGVidWcmJndpbmRvdy5jb25zb2xlJiZjb25zb2xlLmxvZyhcIkV4Y2VwdGlvbiBvY2N1cnJlZCB3aGVuIGNoZWNraW5nIGVsZW1lbnQgXCIrZS5pZCtcIiwgY2hlY2sgdGhlICdcIituLm1ldGhvZCtcIicgbWV0aG9kLlwiLHQpLHQgaW5zdGFuY2VvZiBUeXBlRXJyb3ImJih0Lm1lc3NhZ2UrPVwiLiAgRXhjZXB0aW9uIG9jY3VycmVkIHdoZW4gY2hlY2tpbmcgZWxlbWVudCBcIitlLmlkK1wiLCBjaGVjayB0aGUgJ1wiK24ubWV0aG9kK1wiJyBtZXRob2QuXCIpLHR9fWlmKCFsKXJldHVybiB0aGlzLm9iamVjdExlbmd0aChhKSYmdGhpcy5zdWNjZXNzTGlzdC5wdXNoKGUpLCEwfSxjdXN0b21EYXRhTWVzc2FnZTpmdW5jdGlvbihlLGkpe3JldHVybiB0KGUpLmRhdGEoXCJtc2dcIitpLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2kuc3Vic3RyaW5nKDEpLnRvTG93ZXJDYXNlKCkpfHx0KGUpLmRhdGEoXCJtc2dcIil9LGN1c3RvbU1lc3NhZ2U6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnNldHRpbmdzLm1lc3NhZ2VzW3RdO3JldHVybiBpJiYoaS5jb25zdHJ1Y3Rvcj09PVN0cmluZz9pOmlbZV0pfSxmaW5kRGVmaW5lZDpmdW5jdGlvbigpe2Zvcih2YXIgdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0KyspaWYodm9pZCAwIT09YXJndW1lbnRzW3RdKXJldHVybiBhcmd1bWVudHNbdF19LGRlZmF1bHRNZXNzYWdlOmZ1bmN0aW9uKGUsaSl7XCJzdHJpbmdcIj09dHlwZW9mIGkmJihpPXttZXRob2Q6aX0pO3ZhciBzPXRoaXMuZmluZERlZmluZWQodGhpcy5jdXN0b21NZXNzYWdlKGUubmFtZSxpLm1ldGhvZCksdGhpcy5jdXN0b21EYXRhTWVzc2FnZShlLGkubWV0aG9kKSwhdGhpcy5zZXR0aW5ncy5pZ25vcmVUaXRsZSYmZS50aXRsZXx8dm9pZCAwLHQudmFsaWRhdG9yLm1lc3NhZ2VzW2kubWV0aG9kXSxcIjxzdHJvbmc+V2FybmluZzogTm8gbWVzc2FnZSBkZWZpbmVkIGZvciBcIitlLm5hbWUrXCI8L3N0cm9uZz5cIiksbj0vXFwkP1xceyhcXGQrKVxcfS9nO3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIHM/cz1zLmNhbGwodGhpcyxpLnBhcmFtZXRlcnMsZSk6bi50ZXN0KHMpJiYocz10LnZhbGlkYXRvci5mb3JtYXQocy5yZXBsYWNlKG4sXCJ7JDF9XCIpLGkucGFyYW1ldGVycykpLHN9LGZvcm1hdEFuZEFkZDpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuZGVmYXVsdE1lc3NhZ2UodCxlKTt0aGlzLmVycm9yTGlzdC5wdXNoKHttZXNzYWdlOmksZWxlbWVudDp0LG1ldGhvZDplLm1ldGhvZH0pLHRoaXMuZXJyb3JNYXBbdC5uYW1lXT1pLHRoaXMuc3VibWl0dGVkW3QubmFtZV09aX0sYWRkV3JhcHBlcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zZXR0aW5ncy53cmFwcGVyJiYodD10LmFkZCh0LnBhcmVudCh0aGlzLnNldHRpbmdzLndyYXBwZXIpKSksdH0sZGVmYXVsdFNob3dFcnJvcnM6ZnVuY3Rpb24oKXt2YXIgdCxlLGk7Zm9yKHQ9MDt0aGlzLmVycm9yTGlzdFt0XTt0KyspaT10aGlzLmVycm9yTGlzdFt0XSx0aGlzLnNldHRpbmdzLmhpZ2hsaWdodCYmdGhpcy5zZXR0aW5ncy5oaWdobGlnaHQuY2FsbCh0aGlzLGkuZWxlbWVudCx0aGlzLnNldHRpbmdzLmVycm9yQ2xhc3MsdGhpcy5zZXR0aW5ncy52YWxpZENsYXNzKSx0aGlzLnNob3dMYWJlbChpLmVsZW1lbnQsaS5tZXNzYWdlKTtpZih0aGlzLmVycm9yTGlzdC5sZW5ndGgmJih0aGlzLnRvU2hvdz10aGlzLnRvU2hvdy5hZGQodGhpcy5jb250YWluZXJzKSksdGhpcy5zZXR0aW5ncy5zdWNjZXNzKWZvcih0PTA7dGhpcy5zdWNjZXNzTGlzdFt0XTt0KyspdGhpcy5zaG93TGFiZWwodGhpcy5zdWNjZXNzTGlzdFt0XSk7aWYodGhpcy5zZXR0aW5ncy51bmhpZ2hsaWdodClmb3IodD0wLGU9dGhpcy52YWxpZEVsZW1lbnRzKCk7ZVt0XTt0KyspdGhpcy5zZXR0aW5ncy51bmhpZ2hsaWdodC5jYWxsKHRoaXMsZVt0XSx0aGlzLnNldHRpbmdzLmVycm9yQ2xhc3MsdGhpcy5zZXR0aW5ncy52YWxpZENsYXNzKTt0aGlzLnRvSGlkZT10aGlzLnRvSGlkZS5ub3QodGhpcy50b1Nob3cpLHRoaXMuaGlkZUVycm9ycygpLHRoaXMuYWRkV3JhcHBlcih0aGlzLnRvU2hvdykuc2hvdygpfSx2YWxpZEVsZW1lbnRzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY3VycmVudEVsZW1lbnRzLm5vdCh0aGlzLmludmFsaWRFbGVtZW50cygpKX0saW52YWxpZEVsZW1lbnRzOmZ1bmN0aW9uKCl7cmV0dXJuIHQodGhpcy5lcnJvckxpc3QpLm1hcChmdW5jdGlvbigpe3JldHVybiB0aGlzLmVsZW1lbnR9KX0sc2hvd0xhYmVsOmZ1bmN0aW9uKGUsaSl7dmFyIHMsbixyLGEsbz10aGlzLmVycm9yc0ZvcihlKSxsPXRoaXMuaWRPck5hbWUoZSksaD10KGUpLmF0dHIoXCJhcmlhLWRlc2NyaWJlZGJ5XCIpO28ubGVuZ3RoPyhvLnJlbW92ZUNsYXNzKHRoaXMuc2V0dGluZ3MudmFsaWRDbGFzcykuYWRkQ2xhc3ModGhpcy5zZXR0aW5ncy5lcnJvckNsYXNzKSxvLmh0bWwoaSkpOihzPW89dChcIjxcIit0aGlzLnNldHRpbmdzLmVycm9yRWxlbWVudCtcIj5cIikuYXR0cihcImlkXCIsbCtcIi1lcnJvclwiKS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLmVycm9yQ2xhc3MpLmh0bWwoaXx8XCJcIiksdGhpcy5zZXR0aW5ncy53cmFwcGVyJiYocz1vLmhpZGUoKS5zaG93KCkud3JhcChcIjxcIit0aGlzLnNldHRpbmdzLndyYXBwZXIrXCIvPlwiKS5wYXJlbnQoKSksdGhpcy5sYWJlbENvbnRhaW5lci5sZW5ndGg/dGhpcy5sYWJlbENvbnRhaW5lci5hcHBlbmQocyk6dGhpcy5zZXR0aW5ncy5lcnJvclBsYWNlbWVudD90aGlzLnNldHRpbmdzLmVycm9yUGxhY2VtZW50LmNhbGwodGhpcyxzLHQoZSkpOnMuaW5zZXJ0QWZ0ZXIoZSksby5pcyhcImxhYmVsXCIpP28uYXR0cihcImZvclwiLGwpOjA9PT1vLnBhcmVudHMoXCJ
425sYWJlbFtmb3I9J1wiK3RoaXMuZXNjYXBlQ3NzTWV0YShsKStcIiddXCIpLmxlbmd0aCYmKHI9by5hdHRyKFwiaWRcIiksaD9oLm1hdGNoKG5ldyBSZWdFeHAoXCJcXFxcYlwiK3RoaXMuZXNjYXBlQ3NzTWV0YShyKStcIlxcXFxiXCIpKXx8KGgrPVwiIFwiK3IpOmg9cix0KGUpLmF0dHIoXCJhcmlhLWRlc2NyaWJlZGJ5XCIsaCksKG49dGhpcy5ncm91cHNbZS5uYW1lXSkmJihhPXRoaXMsdC5lYWNoKGEuZ3JvdXBzLGZ1bmN0aW9uKGUsaSl7aT09PW4mJnQoXCJbbmFtZT0nXCIrYS5lc2NhcGVDc3NNZXRhKGUpK1wiJ11cIixhLmN1cnJlbnRGb3JtKS5hdHRyKFwiYXJpYS1kZXNjcmliZWRieVwiLG8uYXR0cihcImlkXCIpKX0pKSkpLCFpJiZ0aGlzLnNldHRpbmdzLnN1Y2Nlc3MmJihvLnRleHQoXCJcIiksXCJzdHJpbmdcIj09dHlwZW9mIHRoaXMuc2V0dGluZ3Muc3VjY2Vzcz9vLmFkZENsYXNzKHRoaXMuc2V0dGluZ3Muc3VjY2Vzcyk6dGhpcy5zZXR0aW5ncy5zdWNjZXNzKG8sZSkpLHRoaXMudG9TaG93PXRoaXMudG9TaG93LmFkZChvKX0sZXJyb3JzRm9yOmZ1bmN0aW9uKGUpe3ZhciBpPXRoaXMuZXNjYXBlQ3NzTWV0YSh0aGlzLmlkT3JOYW1lKGUpKSxzPXQoZSkuYXR0cihcImFyaWEtZGVzY3JpYmVkYnlcIiksbj1cImxhYmVsW2Zvcj0nXCIraStcIiddLCBsYWJlbFtmb3I9J1wiK2krXCInXSAqXCI7cmV0dXJuIHMmJihuPW4rXCIsICNcIit0aGlzLmVzY2FwZUNzc01ldGEocykucmVwbGFjZSgvXFxzKy9nLFwiLCAjXCIpKSx0aGlzLmVycm9ycygpLmZpbHRlcihuKX0sZXNjYXBlQ3NzTWV0YTpmdW5jdGlvbih0KXtyZXR1cm4gdC5yZXBsYWNlKC8oW1xcXFwhXCIjJCUmJygpKissLlxcLzo7PD0+P0BcXFtcXF1eYHt8fX5dKS9nLFwiXFxcXCQxXCIpfSxpZE9yTmFtZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5ncm91cHNbdC5uYW1lXXx8KHRoaXMuY2hlY2thYmxlKHQpP3QubmFtZTp0LmlkfHx0Lm5hbWUpfSx2YWxpZGF0aW9uVGFyZ2V0Rm9yOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmNoZWNrYWJsZShlKSYmKGU9dGhpcy5maW5kQnlOYW1lKGUubmFtZSkpLHQoZSkubm90KHRoaXMuc2V0dGluZ3MuaWdub3JlKVswXX0sY2hlY2thYmxlOmZ1bmN0aW9uKHQpe3JldHVybi9yYWRpb3xjaGVja2JveC9pLnRlc3QodC50eXBlKX0sZmluZEJ5TmFtZTpmdW5jdGlvbihlKXtyZXR1cm4gdCh0aGlzLmN1cnJlbnRGb3JtKS5maW5kKFwiW25hbWU9J1wiK3RoaXMuZXNjYXBlQ3NzTWV0YShlKStcIiddXCIpfS
425xnZXRMZW5ndGg6ZnVuY3Rpb24oZSxpKXtzd2l0Y2goaS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKXtjYXNlXCJzZWxlY3RcIjpyZXR1cm4gdChcIm9wdGlvbjpzZWxlY3RlZFwiLGkpLmxlbmd0aDtjYXNlXCJpbnB1dFwiOmlmKHRoaXMuY2hlY2thYmxlKGkpKXJldHVybiB0aGlzLmZpbmRCeU5hbWUoaS5uYW1lKS5maWx0ZXIoXCI6Y2hlY2tlZFwiKS5sZW5ndGh9cmV0dXJuIGUubGVuZ3RofSxkZXBlbmQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4hdGhpcy5kZXBlbmRUeXBlc1t0eXBlb2YgdF18fHRoaXMuZGVwZW5kVHlwZXNbdHlwZW9mIHRdKHQsZSl9LGRlcGVuZFR5cGVzOntib29sZWFuOmZ1bmN0aW9uKHQpe3JldHVybiB0fSxzdHJpbmc6ZnVuY3Rpb24oZSxpKXtyZXR1cm4hIXQoZSxpLmZvcm0pLmxlbmd0aH0sZnVuY3Rpb246ZnVuY3Rpb24odCxlKXtyZXR1cm4gdChlKX19LG9wdGlvbmFsOmZ1bmN0aW9uKGUpe3ZhciBpPXRoaXMuZWxlbWVudFZhbHVlKGUpO3JldHVybiF0LnZhbGlkYXRvci5tZXRob2RzLnJlcXVpcmVkLmNhbGwodGhpcyxpLGUpJiZcImRlcGVuZGVuY3ktbWlzbWF0Y2hcIn0sc3RhcnRSZXF1ZXN0OmZ1bmN0aW9uKGUpe3RoaXMucGVuZGluZ1tlLm5hbWVdfHwodGhpcy5wZW5kaW5nUmVxdWVzdCsrLHQoZSkuYWRkQ2xhc3ModGhpcy5zZXR0aW5ncy5wZW5kaW5nQ2xhc3MpLHRoaXMucGVuZGluZ1tlLm5hbWVdPSEwKX0sc3RvcFJlcXVlc3Q6ZnVuY3Rpb24oZSxpKXt0aGlzLnBlbmRpbmdSZXF1ZXN0LS0sdGhpcy5wZW5kaW5nUmVxdWVzdDwwJiYodGhpcy5wZW5kaW5nUmVxdWVzdD0wKSxkZWxldGUgdGhpcy5wZW5kaW5nW2UubmFtZV0sdChlKS5yZW1vdmVDbGFzcyh0aGlzLnNldHRpbmdzLnBlbmRpbmdDbGFzcyksaSYmMD09PXRoaXMucGVuZGluZ1JlcXVlc3QmJnRoaXMuZm9ybVN1Ym1pdHRlZCYmdGhpcy5mb3JtKCk/KHQodGhpcy5jdXJyZW50Rm9ybSkuc3VibWl0KCksdGhpcy5zdWJtaXRCdXR0b24mJnQoXCJpbnB1dDpoaWRkZW5bbmFtZT0nXCIrdGhpcy5zdWJtaXRCdXR0b24ubmFtZStcIiddXCIsdGhpcy5jdXJyZW50Rm9ybSkucmVtb3ZlKCksdGhpcy5mb3JtU3VibWl0dGVkPSExKTohaSYmMD09PXRoaXMucGVuZGluZ1JlcXVlc3QmJnRoaXMuZm9ybVN1Ym1pdHRlZCYmKHQodGhpcy5jdXJyZW50Rm9ybSkudHJpZ2dlckhhbmRsZXIoXCJpbnZhbGlkLWZvcm1cIixbdGhpc10pLHRoaXMuZm9ybVN1Ym1pdHRlZD0hMSl9LHByZXZpb3VzVmFsdWU6ZnVuY3Rpb24oZSxpKXtyZXR1cm4gaT1cInN0cmluZ1wiPT10eXBlb2YgaSYmaXx8XCJyZW1vdGVcIix0LmRhdGEoZSxcInByZXZpb3VzVmFsdWVcIil8fHQuZGF0YShlLFwicHJldmlvdXNWYWx1ZVwiLHtvbGQ6bnVsbCx2YWxpZDohMCxtZXNzYWdlOnRoaXMuZGVmYXVsdE1lc3NhZ2UoZSx7bWV0aG9kOml9KX0pfSxkZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5yZXNldEZvcm0oKSx0KHRoaXMuY3VycmVudEZvcm0pLm9mZihcIi52YWxpZGF0ZVwiKS5yZW1vdmVEYXRhKFwidmFsaWRhdG9yXCIpLmZpbmQoXCIudmFsaWRhdGUtZXF1YWxUby1ibHVyXCIpLm9mZihcIi52YWxpZGF0ZS1lcXVhbFRvXCIpLnJlbW92ZUNsYXNzKFwidmFsaWRhdGUtZXF1YWxUby1ibHVyXCIpLmZpbmQoXCIudmFsaWRhdGUtbGVzc1RoYW4tYmx1clwiKS5vZmYoXCIudmFsaWRhdGUtbGVzc1RoYW5cIikucmVtb3ZlQ2xhc3MoXCJ2YWxpZGF0ZS1sZXNzVGhhbi1ibHVyXCIpLmZpbmQoXCIudmFsaWRhdGUtbGVzc1RoYW5FcXVhbC1ibHVyXCIpLm9mZihcIi52YWxpZGF0ZS1sZXNzVGhhbkVxdWFsXCIpLnJlbW92ZUNsYXNzKFwidmFsaWRhdGUtbGVzc1RoYW5FcXVhbC1ibHVyXCIpLmZpbmQoXCIudmFsaWRhdGUtZ3JlYXRlclRoYW5FcXVhbC1ibHVyXCIpLm9mZihcIi52YWxpZGF0ZS1ncmVhdGVyVGhhbkVxdWFsXCIpLnJlbW92ZUNsYXNzKFwidmFsaWRhdGUtZ3JlYXRlclRoYW5FcXVhbC1ibHVyXCIpLmZpbmQoXCIudmFsaWRhdGUtZ3JlYXRlclRoYW4tYmx1clwiKS5vZmYoXCIudmFsaWRhdGUtZ3JlYXRlclRoYW5cIikucmVtb3ZlQ2xhc3MoXCJ2YWxpZGF0ZS1ncmVhdGVyVGhhbi1ibHVyXCIpfX0sY2xhc3NSdWxlU2V0dGluZ3M6e3JlcXVpcmVkOntyZXF1aXJlZDohMH0sZW1haWw6e2VtYWlsOiEwfSx1cmw6e3VybDohMH0sZGF0ZTp7ZGF0ZTohMH0sZGF0ZUlTTzp7ZGF0ZUlTTzohMH0sbnVtYmVyOntudW1iZXI6ITB9LGRpZ2l0czp7ZGlnaXRzOiEwfSxjcmVkaXRjYXJkOntjcmVkaXRjYXJkOiEwfX0sYWRkQ2xhc3NSdWxlczpmdW5jdGlvbihlLGkpe2UuY29uc3RydWN0b3I9PT1TdHJpbmc/dGhpcy5jbGFzc1J1bGVTZXR0aW5nc1tlXT1pOnQuZXh0ZW5kKHRoaXMuY2xhc3NSdWxlU2V0dGluZ3MsZSl9LGNsYXNzUnVsZXM6ZnVuY3Rpb24oZSl7dmFyIGk9e30scz10KGUpLmF0dHIoXCJjbGFzc1wiKTtyZXR1cm4gcyYmdC5lYWNoKHMuc3BsaXQoXCIgXCIpLGZ1bmN0aW9uKCl7dGhpcyBpbiB0LnZhbGlkYXRvci5jbGFzc1J1bGVTZXR0aW5ncyYmdC5leHRlbmQoaSx0LnZhbGlkYXRvci5jbGFzc1J1bGVTZXR0aW5nc1t0aGlzXSl9KSxpfSxub3JtYWxpemVBdHRyaWJ1dGVSdWxlOmZ1bmN0aW9uKHQsZSxpLHMpey9taW58bWF4fHN0ZXAvLnRlc3QoaSkmJihudWxsPT09ZXx8L251bWJlcnxyYW5nZXx0ZXh0Ly50ZXN0KGUpKSYmKHM9TnVtYmVyKHMpLGlzTmFOKHMpJiYocz12b2lkIDApKSxzfHwwPT09cz90W2ldPXM6ZT09PWkmJlwicmFuZ2VcIiE9PWUmJih0W2ldPSEwKX0sYXR0cmlidXRlUnVsZXM6ZnVuY3Rpb24oZSl7dmFyIGkscyxuPXt9LHI9dChlKSxhPWUuZ2V0QXR0cmlidXRlKFwidHlwZVwiKTtmb3IoaSBpbiB0LnZhbGlkYXRvci5tZXRob2RzKVwicmVxdWlyZWRcIj09PWk/KFwiXCI9PT0ocz1lLmdldEF0dHJpYnV0ZShpKSkmJihzPSEwKSxzPSEhcyk6cz1yLmF0dHIoaSksdGhpcy5ub3JtYWxpemVBdHRyaWJ1dGVSdWxlKG4sYSxpLHMpO3JldHVybiBuLm1heGxlbmd0aCYmLy0xfDIxNDc0ODM2NDd8NTI0Mjg4Ly50ZXN0KG4ubWF4bGVuZ3RoKSYmZGVsZXRlIG4ubWF4bGVuZ3RoLG59LGRhdGFSdWxlczpmdW5jdGlvbihlKXt2YXIgaSxzLG49e30scj10KGUpLGE9ZS5nZXRBdHRyaWJ1dGUoXCJ0eXBlXCIpO2ZvcihpIGluIHQudmFsaWRhdG9yLm1ldGhvZHMpXCJcIj09PShzPXIuZGF0YShcInJ1bGVcIitpLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2kuc3Vic3RyaW5nKDEpLnRvTG93ZXJDYXNlKCkpKSYmKHM9ITApLHRoaXMubm9ybWFsaXplQXR0cmlidXRlUnVsZShuLGEsaSxzKTtyZXR1cm4gbn0sc3RhdGljUnVsZXM6ZnVuY3Rpb24oZSl7dmFyIGk9e30scz10LmRhdGEoZS5mb3JtLFwidmFsaWRhdG9yXCIpO3JldHVybiBzLnNldHRpbmdzLnJ1bGVzJiYoaT10LnZhbGlkYXRvci5ub3JtYWxpem
425VSdWxlKHMuc2V0dGluZ3MucnVsZXNbZS5uYW1lXSl8fHt9KSxpfSxub3JtYWxpemVSdWxlczpmdW5jdGlvbihlLGkpe3JldHVybiB0LmVhY2goZSxmdW5jdGlvbihzLG4pe2lmKCExIT09bil7aWYobi5wYXJhbXx8bi5kZXBlbmRzKXt2YXIgcj0hMDtzd2l0Y2godHlwZW9mIG4uZGVwZW5kcyl7Y2FzZVwic3RyaW5nXCI6cj0hIXQobi5kZXBlbmRzLGkuZm9ybSkubGVuZ3RoO2JyZWFrO2Nhc2VcImZ1bmN0aW9uXCI6cj1uLmRlcGVuZHMuY2FsbChpLGkpfXI/ZVtzXT12b2lkIDA9PT1uLnBhcmFtfHxuLnBhcmFtOih0LmRhdGEoaS5mb3JtLFwidmFsaWRhdG9yXCIpLnJlc2V0RWxlbWVudHModChpKSksZGVsZXRlIGVbc10pfX1lbHNlIGRlbGV0ZSBlW3NdfSksdC5lYWNoKGUsZnVuY3Rpb24ocyxuKXtlW3NdPXQuaXNGdW5jdGlvbihuKSYmXCJub3JtYWxpemVyXCIhPT1zP24oaSk6bn0pLHQuZWFjaChbXCJtaW5sZW5ndGhcIixcIm1heGxlbmd0aFwiXSxmdW5jdGlvbigpe2VbdGhpc10mJihlW3RoaXNdPU51bWJlcihlW3RoaXNdKSl9KSx0LmVhY2goW1wicmFuZ2VsZW5ndGhcIixcInJhbmdlXCJdLGZ1bmN0aW9uKCl7dmFyIGk7ZVt0aGlzXSYmKHQuaXNBcnJheShlW3RoaXNdKT9lW3RoaXNdPVtOdW1iZXIoZVt0aGlzXVswXSksTnVtYmVyKGVbdGhpc11bMV0pXTpcInN0cmluZ1wiPT10eXBlb2YgZVt0aGlzXSYmKGk9ZVt0aGlzXS5yZXBsYWNlKC9bXFxbXFxdXS9nLFwiXCIpLnNwbGl0KC9bXFxzLF0rLyksZVt0aGlzXT1bTnVtYmVyKGlbMF0pLE51bWJlcihpWzFdKV0pKX0pLHQudmFsaWRhdG9yLmF1dG9DcmVhdGVSYW5nZXMmJihudWxsIT1lLm1pbiYmbnVsbCE9ZS5tYXgmJihlLnJhbmdlPVtlLm1pbixlLm1heF0sZGVsZXRlIGUubWluLGRlbGV0ZSBlLm1heCksbnVsbCE9ZS5taW5sZW5ndGgmJm51bGwhPWUubWF4bGVuZ3RoJiYoZS5yYW5nZWxlbmd0aD1bZS5taW5sZW5ndGgsZS5tYXhsZW5ndGhdLGRlbGV0ZSBlLm1pbmxlbmd0aCxkZWxldGUgZS5tYXhsZW5ndGgpKSxlfSxub3JtYWxpemVSdWxlOmZ1bmN0aW9uKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXt2YXIgaT17fTt0LmVhY2goZS5zcGxpdCgvXFxzLyksZnVuY3Rpb24oKXtpW3RoaXNdPSEwfSksZT1pfXJldHVybiBlfSxhZGRNZXRob2Q6ZnVuY3Rpb24oZSxpLHMpe3QudmFsaWRhdG9yLm1ldGhvZHNbZV09aSx0LnZhbGlkYXRvci5tZXNzYWdlc1tlXT12b2lkIDAhPT1zP3M6dC52YWxpZGF0b3IubWVzc2FnZXNbZV0saS5sZW5ndGg8MyYmdC52YWxpZGF0b3IuYWRkQ2xhc3NSdWxlcyhlLHQudmFsaWRhdG9yLm5vcm1hbGl6ZVJ1bGUoZSkpfSxtZXRob2RzOntyZXF1aXJlZDpmdW5jdGlvbihlLGkscyl7aWYoIXRoaXMuZGVwZW5kKHMsaSkpcmV0dXJuXCJkZXBlbmRlbmN5LW1pc21hdGNoXCI7aWYoXCJzZWxlY3RcIj09PWkubm9kZU5hbWUudG9Mb3dlckNhc2UoKSl7dmFyIG49dChpKS52YWwoKTtyZXR1cm4gbiYmbi5sZW5ndGg+MH1yZXR1cm4gdGhpcy5jaGVja2FibGUoaSk/dGhpcy5nZXRMZW5ndGgoZSxpKT4wOm51bGwhPWUmJmUubGVuZ3RoPjB9LGVtYWlsOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMub3B0aW9uYWwoZSl8fC9eW2EtekEtWjAtOS4hIyQlJicqK1xcLz0/Xl9ge3x9fi1dK0BbYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8oPzpcXC5bYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8pKiQvLnRlc3QodCl9LHVybDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLm9wdGlvbmFsKGUpfHwvXig/Oig/Oig/Omh0dHBzP3xmdHApOik/XFwvXFwvKSg/OlxcUysoPzo6XFxTKik/QCk/KD86KD8hKD86MTB8MTI3KSg/OlxcLlxcZHsxLDN9KXszfSkoPyEoPzoxNjlcXC4yNTR8MTkyXFwuMTY4KSg/OlxcLlxcZHsxLDN9KXsyfSkoPyExNzJcXC4oPzoxWzYtOV18MlxcZHwzWzAtMV0pKD86XFwuXFxkezEsM30pezJ9KSg/OlsxLTldXFxkP3wxXFxkXFxkfDJbMDFdXFxkfDIyWzAtM10pKD86XFwuKD86MT9cXGR7MSwyfXwyWzAtNF1cXGR8MjVbMC01XSkpezJ9KD86XFwuKD86WzEtOV1cXGQ/fDFcXGRcXGR8MlswLTRdXFxkfDI1WzAtNF0pKXwoPzooPzpbYS16XFx1MDBhMS1cXHVmZmZmMC05XS0qKSpbYS16XFx1MDBhMS1cXHVmZmZmMC05XSspKD86XFwuKD86W2EtelxcdTAwYTEtXFx1ZmZmZjAtOV0tKikqW2EtelxcdTAwYTEtXFx1ZmZmZjAtOV0rKSooPzpcXC4oPzpbYS16XFx1MDBhMS1cXHVmZmZmXXsyLH0pKS4/KSg/OjpcXGR7Miw1fSk/KD86W1xcLz8jXVxcUyopPyQvaS50ZXN0KHQpfSxkYXRlOihlPSExLGZ1bmN0aW9uKHQsaSl7cmV0dXJuIGV8fChlPSEwLHRoaXMuc2V0dGluZ3MuZGVidWcmJndpbmRvdy5jb25zb2xlJiZjb25zb2xlLndhcm4oXCJUaGUgYGRhdGVgIG1ldGhvZCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdmVyc2lvbiAnMi4wLjAnLlxcblBsZWFzZSBkb24ndCB1c2UgaXQsIHNpbmNlIGl0IHJlbGllcyBvbiB0aGUgRGF0ZSBjb25zdHJ1Y3Rvciwgd2hpY2hcXG5iZWhhdmVzIHZlcnkgZGlmZmVyZW50bHkgYWNyb3NzIGJyb3dzZXJzIGFuZCBsb2NhbGVzLiBVc2UgYGRhdGVJU09gXFxuaW5zdGVhZCBvciBvbmUgb2YgdGhlIGxvY2FsZSBzcGVjaWZpYyBtZXRob2RzIGluIGBsb2NhbGl6YXRpb25zL2BcXG5hbmQgYGFkZGl0aW9uYWwtbWV0aG9kcy5qc2AuXCIpKSx0aGlzLm9wdGlvbmFsKGkpfHwhL0ludmFsaWR8TmFOLy50ZXN0KG5ldyBEYXRlKHQpLnRvU3RyaW5nKCkpfSksZGF0ZUlTTzpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLm9wdGlvbmFsKGUpfHwvXlxcZHs0fVtcXC9cXC1dKDA/WzEtOV18MVswMTJdKVtcXC9cXC1dKDA/WzEtOV18WzEyXVswLTldfDNbMDFdKSQvLnRlc3QodCl9LG51bWJlcjpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLm9wdGlvbmFsKGUpfHwvXig/Oi0/XFxkK3wtP1xcZHsxLDN9KD86LFxcZHszfSkrKT8oPzpcXC5cXGQrKT8kLy50ZXN0KHQpfSxkaWdpdHM6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5vcHRpb25hbChlKXx8L15cXGQrJC8udGVzdCh0KX0sbWlubGVuZ3RoOmZ1bmN0aW9uKGUsaSxzKXt2YXIgbj10LmlzQXJyYXkoZSk/ZS5sZW5ndGg6dGhpcy5nZXRMZW5ndGgoZSxpKTtyZXR1cm4gdGhpcy5vcHRpb25hbChpKXx8bj49c30sbWF4bGVuZ3RoOmZ1bmN0aW9uKGUsaSxzKXt2YXIgbj10LmlzQXJyYXkoZSk/ZS5sZW5ndGg6dGhpcy5nZXRMZW5ndGgoZSxpKTtyZXR1cm4gdGhpcy5vcHRpb25hbChpKXx8bjw9c30scmFuZ2VsZW5ndGg6ZnVuY3Rpb24oZSxpLHMpe3ZhciBuPXQuaXNBcnJheShlKT9lLmxlbmd0aDp0aGlzLmdldExlbmd0aChlLGkpO3JldHVybiB0aGlzLm9wdGlvbmFsKGkpfHxuPj1zWzBdJiZuPD1zWzFdfSxtaW46ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLm9wdGlvbmFsKGUpfHx0Pj1pfSxtYXg6ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLm9wdGlvbmFsKGUpfHx0PD1pfSxyYW5nZTpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRoaXMub3B0aW9uYWwoZSl8fHQ+PWlbMF0mJnQ8PWlbMV19LHN0ZXA6ZnVuY3Rpb24oZSxpLHMpe3ZhciBuLHI9dChpKS5hdHRyKFwidHlwZVwiKSxhPVwiU3RlcCBhdHRyaWJ1dGUgb24gaW5wdXQgdHlwZSBcIityK1wiIGlzIG5vdCBzdXBwb3J0ZWQuXCIsbz1uZXcgUmVnRXhwKFwiXFxcXGJcIityK1wiXFxcXGJcIiksbD1mdW5jdGlvbih0KXt2YXIgZT0oXCJcIit0KS5tYXRjaCgvKD86XFwuKFxcZCspKT8kLyk7cmV0dXJuIGUmJmVbMV0/ZVsxXS5sZW5ndGg6MH0saD1mdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5yb3VuZCh0Kk1hdGgucG93KDEwLG4pKX0sZD0hMDtpZihyJiYhby50ZXN0KFtcInRleHRcIixcIm51bWJlclwiLFwicmFuZ2VcIl0uam9pbigpKSl0aHJvdyBuZXcgRXJyb3IoYSk7cmV0dXJuIG49bChzKSwobChlKT5ufHxoKGUpJWgocykhPTApJ
425iYoZD0hMSksdGhpcy5vcHRpb25hbChpKXx8ZH0sZXF1YWxUbzpmdW5jdGlvbihlLGkscyl7dmFyIG49dChzKTtyZXR1cm4gdGhpcy5zZXR0aW5ncy5vbmZvY3Vzb3V0JiZuLm5vdChcIi52YWxpZGF0ZS1lcXVhbFRvLWJsdXJcIikubGVuZ3RoJiZuLmFkZENsYXNzKFwidmFsaWRhdGUtZXF1YWxUby1ibHVyXCIpLm9uKFwiYmx1ci52YWxpZGF0ZS1lcXVhbFRvXCIsZnVuY3Rpb24oKXt0KGkpLnZhbGlkKCl9KSxlPT09bi52YWwoKX0scmVtb3RlOmZ1bmN0aW9uKGUsaSxzLG4pe2lmKHRoaXMub3B0aW9uYWwoaSkpcmV0dXJuXCJkZXBlbmRlbmN5LW1pc21hdGNoXCI7bj1cInN0cmluZ1wiPT10eXBlb2YgbiYmbnx8XCJyZW1vdGVcIjt2YXIgcixhLG8sbD10aGlzLnByZXZpb3VzVmFsdWUoaSxuKTtyZXR1cm4gdGhpcy5zZXR0aW5ncy5tZXNzYWdlc1tpLm5hbWVdfHwodGhpcy5zZXR0aW5ncy5tZXNzYWdlc1tpLm5hbWVdPXt9KSxsLm9yaWdpbmFsTWVzc2FnZT1sLm9yaWdpbmFsTWVzc2FnZXx8dGhpcy5zZXR0aW5ncy5tZXNzYWdlc1tpLm5hbWVdW25dLHRoaXMuc2V0dGluZ3MubWVzc2FnZXNbaS5uYW1lXVtuXT1sLm1lc3NhZ2Uscz1cInN0cmluZ1wiPT10eXBlb2YgcyYme3VybDpzfXx8cyxvPXQucGFyYW0odC5leHRlbmQoe2RhdGE6ZX0scy5kYXRhKSksbC5vbGQ9PT1vP2wudmFsaWQ6KGwub2xkPW8scj10aGlzLHRoaXMuc3RhcnRSZXF1ZXN0KGkpLChhPXt9KVtpLm5hbWVdPWUsdC5hamF4KHQuZXh0ZW5kKCEwLHttb2RlOlwiYWJvcnRcIixwb3J0OlwidmFsaWRhdGVcIitpLm5hbWUsZGF0YVR5cGU6XCJqc29uXCIsZGF0YTphLGNvbnRleHQ6ci5jdXJyZW50Rm9ybSxzdWNjZXNzOmZ1bmN0aW9uKHQpe3ZhciBzLGEsbyxoPSEwPT09dHx8XCJ0cnVlXCI9PT10O3Iuc2V0dGluZ3MubWVzc2FnZXNbaS5uYW1lXVtuXT1sLm9yaWdpbmFsTWVzc2FnZSxoPyhvPXIuZm9ybVN1Ym1pdHRlZCxyLnJlc2V0SW50ZXJuYWxzKCksci50b0hpZGU9ci5lcnJvcnNGb3IoaSksci5mb3JtU3VibWl0dGVkPW8sci5zdWNjZXNzTGlzdC5wdXNoKGkpLHIuaW52YWxpZFtpLm5hbWVdPSExLHIuc2hvd0Vycm9ycygpKToocz17fSxhPXR8fHIuZGVmYXVsdE1lc3NhZ2UoaSx7bWV0aG9kOm4scGFyYW1ldGVyczplfSksc1tpLm5hbWVdPWwubWVzc2FnZT1hLHIuaW52YWxpZFtpLm5hbWVdPSEwLHIuc2hvd0Vycm9ycyhzKSksbC52YWxpZD1oLHIuc3RvcFJlcXVlc3QoaSxoKX19LHMpKSxcInBlbmRpbmdcIil9fX0pO3ZhciBpLHM9e307cmV0dXJuIHQuYWpheFByZWZpbHRlcj90LmFqYXhQcmVmaWx0ZXIoZnVuY3Rpb24odCxlLGkpe3ZhciBuPXQucG9ydDtcImFib3J0XCI9PT10Lm1vZGUmJihzW25dJiZzW25dLmFib3J0KCksc1tuXT1pKX0pOihpPXQuYWpheCx0LmFqYXg9ZnVuY3Rpb24oZSl7dmFyIG49KFwibW9kZVwiaW4gZT9lOnQuYWpheFNldHRpbmdzKS5tb2RlLHI9KFwicG9ydFwiaW4gZT9lOnQuYWpheFNldHRpbmdzKS5wb3J0O3JldHVyblwiYWJvcnRcIj09PW4/KHNbcl0mJnNbcl0uYWJvcnQoKSxzW3JdPWkuYXBwbHkodGhpcyxhcmd1bWVudHMpLHNbcl0pOmkuYXBwbHkodGhpcyxhcmd1bWVudHMpfSksdH0pO1xuXG4vL1x0R2V0IFZpZXdwb3J0IERpbWVuc2lvbnNcbi8vXHRyZXR1cm5zIG9iamVjdCB3aXRoIHZpZXdwb3J0IGRpbWVuc2lvbnMgdG8gbWF0Y2ggY3NzIGluIHdpZHRoIGFuZCBoZWlnaHQgcHJvcGVydGllc1xuLy9cdGh0dHA6Ly9hbmR5bGFuZ3Rvbi5jby51ay9ibG9nL2RldmVsb3BtZW50L2dldC12aWV3cG9ydC1zaXplLXdpZHRoLWFuZC1oZWlnaHQtamF2YXNjcmlwdFxuXG5mdW5jdGlvbiB1cGRhdGVWaWV3cG9ydERpbWVuc2lvbnMoKSB7XG4gIHZhciB3PXdpbmRvdyxkPWRvY3VtZW50LGU9ZC5kb2N1bWVudEVsZW1lbnQsZz1kLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdib2R5JylbMF0seD13LmlubmVyV2lkdGh8fGUuY2xpZW50V2lkdGh8fGcuY2xpZW50V2lkdGgseT13LmlubmVySGVpZ2h0fHxlLmNsaWVudEhlaWdodHx8Zy5jbGllbnRIZWlnaHQ7XG4gIHJldHVybiB7IHdpZHRoOngsaGVpZ2h0OnkgfTtcbn1cblxuLy8gc2V0dGluZyB0aGUgdmlld3BvcnQgd2lkdGhcbnZhciB2aWV3cG9ydCA9IHVwZGF0ZVZpZXdwb3J0RGltZW5zaW9ucygpO1xuXG4vL1x0VGhyb3R0bGUgUmVzaXplLXRyaWdnZXJlZCBFdmVudHNcbi8vXHRXcmFwIHlvdXIgYWN0aW9ucyBpbiB0aGlzIGZ1bmN0aW9uIHRvIHRocm90dGxlIHRoZSBmcmVxdWVuY3kgb2YgZmlyaW5nIHRoZW0gb2ZmLCBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlLCBlc3AuIG9uIG1vYmlsZS5cbi8vIFx0aHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yODU0NDA3L2phdmFzY3JpcHQtanF1ZXJ5LXdpbmRvdy1yZXNpemUtaG93LXRvLWZpcmUtYWZ0ZXItdGhlLXJlc2l6ZS1pcy1jb21wbGV0ZWRcbnZhciB3YWl0Rm9yRmluYWxFdmVudCA9IChmdW5jdGlvbiAoKSB7XG4gIHZhciB0aW1lcnMgPSB7fTtcbiAgcmV0dXJuIGZ1bmN0aW9uIChjYWxsYmFjaywgbXMsIHVuaXF1ZUlkKSB7XG4gICAgaWYgKCF1bmlxdWVJZCkgeyB1bmlxdWVJZCA9IFwiRG9uJ3QgY2FsbCB0aGlzIHR3aWNlIHdpdGhvdXQgYSB1bmlxdWVJZFwiOyB9XG4gICAgaWYgKHRpbWVyc1t1bmlxdWVJZF0pIHsgY2xlYXJUaW1lb3V0ICh0aW1lcnNbdW5pcXVlSWRdKTsgfVxuICAgIHRpbWVyc1t1bmlxdWVJZF0gPSBzZXRUaW1lb3V0KGNhbGxiYWNrLCBtcyk7XG4gIH07XG59KSgpO1xuXG4vLyBob3cgbG9uZyB0byB3YWl0IGJlZm9yZSBkZWNpZGluZyB0aGUgcmVzaXplIGhhcyBzdG9wcGVkLCBpbiBtcy4gQXJvdW5kIDUwLTEwMCBzaG91bGQgd29yayBvay5cbnZhciB0aW1lVG9XYWl0Rm9yTGFzdCA9IDEwMDtcblxuXG4vKlxubmV3IGdyaWRqcy5HcmlkKHtcblx0Y29sdW1uczogW1wiUG9zaXRpb25cIiwgXCJOYW1lXCIsIFwiVm9ybmFtZVwiLCBcIkFuc2NocmlmdFwiLCBcIlRlbGVmb25cIiwgXCJFLU1haWxcIl0sXG5cdGRhdGE6IFtcblx0XHRbXCJQZmFycmVyXCIsXCJEaWVkZXJpY2hzXCIsXCJQYXVsXCIsXCJTY2hsb3Nzc3RyYcOfZSAxNiwgNTY4NTYgWmVsbCAoTW9zZWwpXCIsXCIwNjU0MiAvIDQ1MzZcIixcInBhdWxkaWVkZXJpY2hzQHdlYi5kZVwiXSxcblx0XHRbXCJQYXRlclwiLFwiQnJlbmtlblwiLFwiTWF0dGhpYXNcIixcIkthcm1lbGl0ZW5zdHJhw59lID
425IsIDU0NTM4IEJlbmdlbFwiLFwiMDY1MzIgLyA5Mzk1LTEzXCIsXCJtYXR0aGlhcy5icmVua2VuQGthcm1lbGl0ZW4uZGVcIl0sXG5cdFx0W1wiR2VtZWluZGVyZWZlcmVudFwiLFwiSXZhbm92aWNcIixcIkl2b1wiLFwiU2NobG9zc3N0cmHDn2UgMTYsIDU2ODU2IFplbGwgKE1vc2VsKVwiLFwiMDY1NDIgLyA5NjExNzVcIixcIml2by5pdmFub3ZpY0BnbXguZGVcIl0sXG5cdFx0W1wiS2FwbGFuXCIsXCJLdXJpc3N1bW1vb3R0aWwgQ2hhY2tvXCIsXCJTaGFpYmluXCIsXCJTY2hsb3Nzc3RyYcOfZSAxNiwgNTY4NTYgWmVsbCAoTW9zZWwpXCIsXCIwMTUxIC8gNjYxOTkwMDdcIixcInNoYWliaW5rY21zZnNAZ21haWwuY29tXCJdLFxuXHRcdFtcIlBhc3RvcmFscHJha3Rpa2FudFwiLFwiS29zc21hbm5cIixcIkNocmlzdGlhblwiLFwiU2NobG9zc3N0cmHDn2UgMTYsIDU2ODU2IFplbGwgKE1vc2VsKVwiLFwiMDY1NDIgLyA5NjkyMjgyXCIsXCJjaHJpc3RpYW4ua29zc21hbm5AYmlzdHVtLXRyaWVyLmRlXCJdLFxuXHRcdFtcIlBmYXJyc2VrcmV0w6RyaW5cIixcIkRpbGxlbmJ1cmdcIixcIkVsc2JldGhcIixcIlNjaGxvc3NzdHJhw59lIDE2LCA1Njg1NiBaZWxsIChNb3NlbClcIixcIjA2NTQyIC8gNDUzNlwiLFwicGZhcnJhbXRAcGZhcnJlaWVuZ2VtZWluc2NoYWZ0LXplbGxlci1oYW1tLmRlXCJdLFxuXHRcdFtcIlBmYXJyc2VrcmV0w6RyaW5cIixcIk1hbmRlcnNjaGVpZFwiLFwiVGFuamFcIixcIlNjaGxvc3NzdHJhw59lIDE2LCA1Njg1NiBaZWxsIChNb3NlbClcIixcIjA2NTQyIC8gNDUzNlwiLFwicGZhcnJhbXRAcGZhcnJlaWVuZ2VtZWluc2NoYWZ0LXplbGxlci1oYW1tLmRlXCJdLFxuXHRcdFtcIlBmYXJyc2VrcmV0w6RyaW5cIixcIk1hcmNoXCIsXCJMZW9uaWVcIixcIlNjaGxvc3NzdHJhw59lIDE2LCA1Njg1NiBaZWxsIChNb3NlbClcIixcIjA2NTQyIC8gNDUzNlwiLFwicGZhcnJhbXRAcGZhcnJlaWVuZ2VtZWluc2NoYWZ0LXplbGxlci1oYW1tLmRlXCJdXG5cdF1cbn0pLnJlbmRlcihkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInRhYmxlLWtpcmNoZS0wMVwiKSk7XG4qL1xuXG5qUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCQpIHtcblxuXHQvLyBBbmltYXRpb25lbiBRdWlja2xpc3RcbiAgICB2YXIgZmlnMyAgPSAkKCcuaWNvbmxpc3QgdWwnKTtcbiAgICB2YXIgJGljb24zID0gZmlnMy5jaGlsZHJlbignbGknKS5ob3ZlcihmdW5jdGlvbigpIHtcblxuICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgICAgJChzZWxmKS5yZW1vdmVDbGFzcygnYW5pbSBkZWxheSBhbmltLXJldmVyc2UnKTtcbiAgICAgICQoc2VsZikuYWRkQ2xhc3MoJ2FuaW0nKTtcblxuICAgIH0sIGZ1bmN0aW9uKCkge1xuXG4gICAgICB2Y
425XIgc2VsZiA9IHRoaXM7XG4gICAgICAkKHNlbGYpLmFkZENsYXNzKCdhbmltLXJldmVyc2UgZGVsYXknKTtcblxuICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpe1xuICAgICAgICAgIFxuICAgICAgICAgIGlmKCQoc2VsZikuaGFzQ2xhc3MoJ2RlbGF5JykpIHtcbiAgICAgICAgICAgICQoc2VsZikucmVtb3ZlQ2xhc3MoJ2FuaW0tcmV2ZXJzZSBkZWxheSBhbmltJylcbiAgICAgICAgICB9XG4gICAgICB9LDc1MClcblxuICBcdH0pO1xuXG5cdC8vIHByw7xmZSBhdWYgalF1ZXJ5IFVJXG5cdGlmICh0eXBlb2YgalF1ZXJ5LnVpICE9ICd1bmRlZmluZWQnKSB7XG5cblx0XHQvLyBqUXVlcnkgVUkgRGF0ZXBpY2tlclxuXHRcdGpRdWVyeSggXCIjZGF0ZXBpY2tlci1mcm9tXCIgKS5kYXRlcGlja2VyKHtcblx0ICAgICAgICBjaGFuZ2VNb250aDogdHJ1ZSxcblx0ICAgICAgICBjaGFuZ2VZZWFyOiB0cnVlLFxuXHQgICAgICAgIG1pbkRhdGU6ICdkYXRlVG9kYXknLFxuXHQgICAgICAgIG51bWJlck9mTW9udGhzOiAxLFxuXHQgICAgICAgIGRhdGVGb3JtYXQ6ICdkZCBNTSwgeXknLFxuXHQgICAgICAgIG9uQ2xvc2U6IGZ1bmN0aW9uKCBzZWxlY3RlZERhdGUgKSB7XG5cdCAgICAgICAgXHRqUXVlcnkoIFwiI2RhdGVwaWNrZXItdG9cIiApLmRhdGVwaWNrZXIoIFwib3B0aW9uXCIsIFwibWluRGF0ZVwiLCBzZWxlY3RlZERhdGUgKTtcblx0ICAgICAgICB9XG5cdCAgICB9KTtcblxuXHQgICAgalF1ZXJ5KCBcIiNkYXRlcGlja2VyLXRvXCIgKS5kYXRlcGlja2VyKHtcblx0ICAgICAgICBjaGFuZ2VNb250aDogdHJ1ZSxcblx0ICAgICAgICBjaGFuZ2VZZWFyOiB0cnVlLFxuXHQgICAgICAgIG51bWJlck9mTW9udGhzOiAxLFxuXHQgICAgICAgIGRhdGVGb3JtYXQ6ICdkZCBNTSwgeXknLFxuXHQgICAgICAgIG9uQ2xvc2U6IGZ1bmN0aW9uKCBzZWxlY3RlZERhdGUgKSB7XG5cdCAgICAgICAgXHRqUXVlcnkoIFwiI2RhdGVwaWNrZXItZnJvbVwiICkuZGF0ZXBpY2tlciggXCJvcHRpb25cIiwgXCJtYXhEYXRlXCIsIHNlbGVjdGVkRGF0ZSApO1xuXHQgICAgICAgIH1cblx0ICAgIH0pO1xuXG5cdCAgICAvLyBHZXJtYW4gaW5pdGlhbGlzYXRpb24gZm9yIHRoZSBqUXVlcnkgVUkgZGF0ZSBwaWNrZXIgcGx1Z2luLiAobWluaWZpZWQpXG5cdCAgICAvLyBPcmlnaW5hbCB3cml0dGVuIGJ5IE1pbGlhbiBXb2xmZiAobWFpbEBtaWxpYW53LmRlKS5cblx0ICAgIChmdW5jdGlvbihlKXtyZXR1cm4gZS5yZWdpb25hbC5kZT17Y2xvc2VUZXh0OlwiU2NobGllw59lblwiLHByZXZUZXh0OlwiJiN4M0M7WnVyw7xja1wiLG5leHRUZXh0OlwiVm9yJiN4M0U7XCIsY3VycmVudFRleHQ6XCJIZXV0ZVwiLG1vbnRoTmFtZXM6W1wiSmFudWFyXCIsXCJGZWJydWFyXCIsXCJNw6RyelwiLFwiQXByaWxcIixcIk1haVwiLFwiSnVuaVwiLFwiSnVsaVwiLFwiQXVndXN0XCIsXCJTZXB0ZW1iZXJcIixcIk9rdG9iZXJcIixcIk5vdmVtYmVyXCIsXCJEZXplbWJlclwiXSxtb250aE5hbWVzU2hvcnQ6W1wiSmFuXCIsXCJGZWJcIixcIk3DpHJcIixcIkFwclwiLFwiTWFpXCIsXCJKdW5cIixcIkp1bFwiLFwiQXVnXCIsXCJTZXBcIixcIk9rdFwiLFwiTm92XCIsXCJEZXpcIl0sZGF5TmFtZXM6W1wiU29ubnRhZ1wiLFwiTW9udGFnXCIsXCJEaWVuc3RhZ1wiLFwiTWl0dHdvY2hcIixcIkRvbm5lcnN0YWdcIixcIkZyZWl0YWdcIixcIlNhbXN0YWdcIl0sZGF5TmFtZXNTaG9ydDpbXCJTb1wiLFwiTW9cIixcIkRpXCIsXCJNaVwiLFwiRG9cIixcIkZyXCIsXCJTYVwiXSxkYXlOYW1lc01pbjpbXCJTb1wiLFwiTW9cIixcIkRpXCIsXCJNaVwiLFwiRG9cIixcIkZyXCIsXCJTYVwiXSx3ZWVrSGVhZGVyOlwiS1dcIixkYXRlRm9ybWF0OlwiZGQubW0ueXlcIixmaXJzdERheToxLGlzUlRMOiExLHNob3dNb250aEFmdGVyWWVhcjohMSx5ZWFyU3VmZml4OlwiXCJ9LGUuc2V0RGVmYXVsdHMoZS5yZWdpb25hbC5kZSksZS5yZWdpb25hbC5kZX0pO1xuXHR9O1xuXG5cdC8vIFN0ZXJuZSBmw7xyIHJlcXVpcmVkIGZpZWxkXG5cdHZhciByZXEgPSAkKCcud3BjZjctZm9ybSBpbnB1dC53cGNmNy12YWxpZGF0ZXMtYXMtcmVxdWlyZWQnKTtcblx0XHRyZXEucGFyZW50cygnLmZvcm0tZmllbGQtd3JhcCcpLmNoaWxkcmVuKCdsYWJlbCcpLmFwcGVuZCgnPGFiYnIgY2xhc3M9XCJ2YWxpZGF0aW9uLXJlcXVpcmVkXCI+PHN2Zz48dXNlIHhsaW5rOmhyZWY9XCIjc2hhcGUtc3RhclwiPjwvdXNlPjwvc3ZnPjwvYWJicj4nKTtcblxuXHR2YXIgcmVxV29vID0gJCgnLnZhbGlkYXRlLXJlcXVpcmVkJyk7XG5cdFx0cmVxV29vLmNoaWxkcmVuKCdsYWJlbCcpLmFwcGVuZCgnPGFiYnIgY2xhc3M9XCJ2YWxpZGF0aW9uLXJlcXVpcmVkXCI+PHN2ZyBjbGFzcz1cImljb24tc3RhclwiPjx1c2UgeGxpbms6aHJlZj1cIiNzaGFwZS1zdGFyXCI+PC91c2U+PC9zdmc+PC9hYmJyPicpO1xuXG5cdGpRdWVyeS52YWxpZGF0b3IuYWRkQ2xhc3NSdWxlcyhcIndwY2Y3LXZhbGlkYXRlcy1hcy1yZXF1aXJlZFwiLCB7XG4gICAgXHRyZXF1aXJlZDogdHJ1ZVxuICAgIH0pO1xuXG4gICAgJCgncCcpLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgXHR2YXIgJHRoaXMgPSAkKHRoaXMpO1xuICAgIFx0aWYoJHRoaXMuaHRtbCgpLnJlcGxhY2UoL1xcc3wmbmJzcDsvZywgJycpLmxlbmd0aCA9PSAwKVxuICAgIFx0JHRoaXMucmVtb3ZlKCk7XG4gICAgfSk7XG5cbiAgICBcbiAgICAkKCcuZXZlbnRzJykub24oJ2NsaWNrJywgJ2RldGFpbHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgXHQkKCdkZXRhaWxzJykubm90KCQodGhpcykpLnJlbW92ZUF0dHIoJ29wZW4nKTtcblx0fSk7XG5cblxuXHQkKCcuZm9ybS1zdWJtaXQtd3JhcCBpbnB1dCcpLmNsaWNrKGZ1bmN0aW9uKCl7XG4gICAgXHQkKHRoaXMpLnBhcmVudHMoJ2Zvcm0nKS52YWxpZGF0ZSgpO1xuICAgIH0pO1xuXG4gICAgJCgnYVtocmVmKj1cIiNcIl0nKS5ub3QoJ1tocmVmPVwiI1wiXScpLm5vdCgnW2hyZWY9XCIjMFwiXScpLmNsaWNrKGZ1bmN0aW9uKGV2ZW50KSB7XG5cbiAgICBcdC8vIE9uLXBhZ2UgbGlua3NcbiAgICAgICAgaWYgKGxvY2F0aW9uLnBhdGhuYW1lLnJlcGxhY2UoL15cXC8vLCAnJykgPT0gdGhpcy5wYXRobmFtZS5yZXBsYWNlKC9eXFwvLywgJycpICYmIGxvY2F0aW9uLmhvc3RuYW1lID09IHRoaXMuaG9zdG5hbWUpIHtcblxuICAgICAgICBcdC8vIEZpZ3VyZSBvdXQgZWxlbWVudCB0byBzY3JvbGwgdG9cbiAgICAgICAgXHR2YXIgdGFyZ2V0ID0gJCh0aGlzLmhhc2gpO1xuICAgICAgICBcdHRhcmdldCA9IHRhcmdldC5sZW5ndGggPyB0YXJnZXQgOiAkKCdbbmFtZT0nICsgdGh
425pcy5oYXNoLnNsaWNlKDEpICsgJ10nKTtcblxuICAgICAgICBcdC8vIERvZXMgYSBzY3JvbGwgdGFyZ2V0IGV4aXN0P1xuICAgICAgICBcdGlmICh0YXJnZXQubGVuZ3RoKSB7XG5cbiAgICAgICAgXHRcdHZhciBvZmZzZXRTaXplID0gJChcImhlYWRlclwiKS5pbm5lckhlaWdodCgpO1xuICAgICAgICBcdFx0dmFyIHNsaWRlc2hvd0hlaWdodCA9ICQoJy5oZWFkZXItZ2FsbGVyeS13cmFwJykuaW5uZXJIZWlnaHQoKTtcblxuICAgICAgICBcdFx0Ly8gT25seSBwcmV2ZW50IGRlZmF1bHQgaWYgYW5pbWF0aW9uIGlzIGFjdHVhbGx5IGdvbm5hIGhhcHBlblxuICAgICAgICBcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICBcdFx0JCgnaHRtbCwgYm9keScpLmFuaW1hdGUoe1xuICAgICAgICBcdFx0XHRzY3JvbGxUb3A6IHRhcmdldC5vZmZzZXQoKS50b3AgLSA2MFxuICAgICAgICBcdFx0fSwgNTAwLCBmdW5jdGlvbigpIHtcblxuICAgICAgICBcdFx0XHQvLyBDYWxsYmFjayBhZnRlciBhbmltYXRpb25cbiAgICAgICAgXHRcdFx0Ly8gTXVzdCBjaGFuZ2UgZm9jdXMhXG4gICAgICAgIFx0XHRcdHZhciAkdGFyZ2V0ID0gJCh0YXJnZXQpO1xuICAgICAgICBcdFx0XHQkdGFyZ2V0LmZvY3VzKCk7XG4gICAgICAgIFx0XHRcdFxuICAgICAgICBcdFx0XHQvLyBDaGVja2luZyBpZiB0aGUgdGFyZ2V0IHdhcyBmb2N1c2VkXG4gICAgICAgIFx0XHRcdGlmICgkdGFyZ2V0LmlzKFwiOmZvY3VzXCIpKSB7XG4gICAgICAgIFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuICAgICAgICBcdFx0XHR9IGVsc2Uge1xuXG4gICAgICAgIFx0XHRcdFx0Ly8gQWRkaW5nIHRhYmluZGV4IGZvciBlbGVtZW50cyBub3QgZm9jdXNhYmxlXG4gICAgICAgIFx0XHRcdFx0JHRhcmdldC5hdHRyKCd0YWJpbmRleCcsJy0xJyk7XG5cdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdC8vIFNldCBmb2N1cyBhZ2FpblxuICAgICAgICBcdFx0XHRcdCR0YXJnZXQuZm9jdXMoKTtcbiAgICAgICAgXHRcdFx0fTtcbiAgICAgICAgXHRcdFx0XG5cdFx0XHRcdH0pO1xuICAgICAgICBcdH1cbiAgICAgICAgfVxuXG4gICAgfSk7XG5cbiAgICAkKCcuZ2FsbGVyeSBicicpLnJlbW92ZSgpO1xuXG4gICAgLy8gRG9yZnBsYW4gWm9vbSBTY3JpcHRcbiAgICBpZiAoJCgnLnpvb20nKS5sZW5ndGgpIHtcblxuICAgIFx0JCgnLnpvb20nKS5lbGV2YXRlWm9vbSh7XG4gICAgXHRcdHpvb21UeXBlOiBcImlubmVyXCIsXG4gICAgXHRcdGN1cnNvcjogXCJjcm9zc2hhaXJcIixcbiAgICBcdFx0em9vbVdpbmRvd0ZhZGVJbjogNTAwLFxuICAgIFx0XHR6b29tV2luZG93RmFkZU91dDogNTAwXG4gICAgXHR9KTtcbiAgICB9XG5cblxuICAgIC8qXG5cdCQoJy5lbnRyeS1saXN0LW1ldGEgLm1haWwgc3BhbiBhJykuZWFjaChmdW5jdGlvbigpe1xuXHRcdGNvbnNvbGUubG9nKCQodGhpcykuYXR0cignaHJlZicpKTtcblx0fSk7XG5cdCovXG5cbiAgICBcbiAgICQoJy5hY2NvcmRpb24nKS5hY2NvcmRpb24oe1xuICAgXHRcdGFjdGl2ZTogZmFsc2UsXG4gICBcdFx0Y29sbGFwc2libGU6IHRydWUsXG4gICBcdFx0aGVpZ2h0U3R5bGU6ICdjb250ZW50JyxcbiAgIH0pO1xuXG5cbiAgICBcblxuXG5cdFxuXG5cblxuICAgIC8vIExva2FsaXNpZXJ1bmcgalF1ZXJ5IFZhbGlkYXRpb25cbiAgICAkLmV4dGVuZCggJC52YWxpZGF0b3IubWVzc2FnZXMsIHtyZXF1aXJlZDogXCJEaWVzZXMgRmVsZCBpc3QgZWluIFBmbGljaHRmZWxkLlwiLG1heGxlbmd0aDogJC52YWxpZGF0b3IuZm9ybWF0KCBcIkdlYmVuIFNpZSBiaXR0ZSBtYXhpbWFsIHswfSBaZWljaGVuIGVpbi5cIiApLG1pbmxlbmd0aDogJC52YWxpZGF0b3IuZm9ybWF0KCBcIkdlYmVuIFNpZSBiaXR0ZSBtaW5kZXN0ZW5zIHswfSBaZWljaGVuIGVpbi5cIiApLHJhbmdlbGVuZ3RoOiAkLnZhbGlkYXRvci5mb3JtYXQoIFwiR2ViZW4gU2llIGJpdHRlIG1pbmRlc3RlbnMgezB9IHVuZCBtYXhpbWFsIHsxfSBaZWljaGVuIGVpbi5cIiApLGVtYWlsOiBcIkdlYmVuIFNpZSBiaXR0ZSBlaW5lIGfDvGx0aWdlIEUtTWFpbC1BZHJlc3NlIGVpbi5cIix1cmw6IFwiR2ViZW4gU2llIGJpdHRlIGVpbmUgZ8O8bHRpZ2UgVVJMIGVpbi5cIixkYXRlOiBcIkdlYmVuIFNpZSBiaXR0ZSBlaW4gZ8O8bHRpZ2VzIERhdHVtIGVpbi5cIixudW1iZXI6IFwiR2ViZW4gU2llIGJpdHRlIGVpbmUgTnVtbWVyIGVpbi5cIixkaWdpdHM6IFwiR2ViZW4gU2llIGJpdHRlIG51ciBaaWZmZXJuIGVpbi5cIixlcXVhbFRvOiBcIldpZWRlcmhvbGVuIFNpZSBiaXR0ZSBkZW5zZWxiZW4gV2VydC5cIixyYW5nZTogJC52YWxpZGF0b3IuZm9ybWF0KCBcIkdlYmVuIFNpZSBiaXR0ZSBlaW5lbiBXZXJ0IHp3aXNjaGVuIHswfSB1bmQgezF9IGVpbi5cIiApLG1heDogJC52YWxpZGF0b3IuZm9ybWF0KCBcIkdlYmVuIFNpZSBiaXR0ZSBlaW5lbiBXZXJ0IGtsZWluZXIgb2RlciBnbGVpY2ggezB9IGVpbi5cIiApLG1pbjogJC52YWxpZGF0b3IuZm9ybWF0KCBcIkdlYmVuIFNpZSBiaXR0ZSBlaW5lbiBXZXJ0IGdyw7bDn2VyIG9kZXIgZ2xlaWNoIHswfSBlaW4uXCIgKSxjcmVkaXRjYXJkOiBcIkdlYmVuIFNpZSBiaXR0ZSBlaW5lIGfDvGx0aWdlIEtyZWRpdGthcnRlbi1OdW1tZXIgZWluLlwiLHJlbW90ZTogXCJLb3JyaWdpZXJlbiBTaWUgYml0dGUgZGllc2VzIEZlbGQuXCIsZGF0ZUlTTzogXCJHZWJlbiBTaWUgYml0dGUgZWluIGfDvGx0aWdlcyBEYXR1bSBlaW4gKElTTy1Gb3JtYXQpLlwiLHN0ZXA6ICQudmFsaWRhdG9yLmZvcm1hdCggXCJHZWJlbiBTaWUgYml0dGUgZWluIFZpZWxmYWNoZXMgdm9uIHswfSBlaW4uXCIgKSxtYXhXb3JkczogJC52YWxpZGF0b3IuZm9ybWF0KCBcIkdlYmVuIFNpZSBiaXR0ZSB7MH0gV8O2cnRlciBvZGVyIHdlbmlnZXIgZWluLlwiICksbWluV29yZHM6ICQudmFsaWRhdG9yLmZvcm1hdCggXCJHZWJlbiBTaWUgYml0dGUgbWluZGVzdGVucyB7MH0gV8O2cnRlciBlaW4uXCIgKSxyYW5nZVdvcmRzOiAkLnZhbGlkYXRvci5mb3JtYXQoIFwiR2ViZW4gU2llIGJpdHRlIHp3aXNjaGVuIHswfSB1bmQgezF9IFfDtnJ0ZXJuIGVpbi5cIiApLGFjY2VwdDogXCJHZWJlbiBTaWUgYml0dGUgZWluZW4gV2VydCBtaXQgZWluZW0gZ8O8bHRpZ2VuIE1JTUUtVHlwIGVpbi5cIixhbHBoYW51bWVyaWM6IFwiR2ViZW4gU2llIGJpdHRlIG51ciBCdWNoc3RhYmVuIChrZWluZSBVbWxhdXRlKSwgWmFobGVuIG9kZXIgVW50ZXJzdHJpY2hlIGVpbi5cIixiYW5rYWNjb3VudE5MOiBcIkdlYmVuIFNpZSBiaXR0ZSBlaW5lIGfDvGx0aWdlIEtvbnRvbnVtbWVyIGVpbi5cIixiYW5rb3JnaXJvYWNjb3VudE5MOiBcIkdlYmVuIFNpZSBiaXR0ZSBlaW5lIGfDvGx0aWdlIEJhbmstIG9kZXIgR2lyb2tvbnRvbnVtbWVyIGVpbi5cIixiaWM6IFwiR2ViZW4gU2llIGJpdHRlIGVpbmVuIGfDvGx0aWdlbiBCSUMtQ29kZSBlaW4uXCIsY2lmRVM6IFwiR2ViZW4gU2llIGJpdHRlIGVpbmUgZ8O8bHRpZ2UgQ0lGLU51bW1lciBlaW4uXCIsY3BmQlI6IFwiR2ViZW4gU2llIGJpdHRlIGVpbmUgZ8O8bHRpZ2UgQ1BGLU51bW1lciBlaW4uXCIsY3JlZGl0Y2FyZHR5cGVzOiBcIkdlYmVuIFNpZSBiaXR0ZSBlaW5lIGfDvGx0aWdlIEtyZWRpdGthcnRlbi1OdW1tZXIgZWluLlwiLGN1cnJlbmN5OiBcIkdlYmVuIFNpZSBiaXR0ZSBlaW5lIGfDvGx0aWdlIFfDpGhydW5nIGVpbi5cIixleHRlbnNpb246IFwiR2ViZW4gU2llIGJpdHRlIGVpbmVuIFdlcnQgbWl0IGVpbmVyIGfDvGx0aWdlbiBFcndlaXRlcnVuZyBlaW4uXCIsZ2lyb2FjY291bnROTDogXCJHZWJlbiBTaWUgYml0dGUgZWluZSBnw7xsdGlnZSBHaXJva29udG9udW1tZXIgZWluLlwiLGliYW46IFwiR2ViZW4gU2llIGJpdHRlIGVpbmUgZ8O8bHRpZ2UgSUJBTiBlaW4uXCIsaW50ZWdlcjogIFwiR2ViZW4gU2llIGJpdHRlIGVpbmUgcG9zaXRpdmUgb2RlciBuZWdhdGl2ZSBOaWNodC1EZXppbWFsemFobCBlaW4uXCIsaXB2NDogXCJHZWJlbiBTaWUgYml0dGUgZWluZSBnw7xsdGlnZSBJUHY0LUFkcmVzc2UgZWluLlwiLGlwdjY6IFwiR2ViZW4gU2llIGJpdHRlIGVpbmUgZ8O8bHRpZ2UgSVB2Ni1BZHJlc3NlIGVpbi5cIixsZXR0ZXJzb25seTogXCJHZWJlbiBTaWUgYml0dGUgbnVyIEJ1Y2hzdGFiZW4gZWluLlwiLGxldHRlcnN3aXRoYmFzaWNwdW5jOiBcIkdlYmVuIFNpZSBiaXR0ZSBudXIgQnVjaHN0YWJlbiBvZGVyIEludGVycHVua3Rpb24gZWluLlwiLG1vYmlsZU5MOiBcIkdlYmVuIFNpZSBiaXR0ZSBlaW5lIGfDvGx0aWdlIEhhbmR5bnVtbWVyIGVpbi5cIixtb2JpbGVVSzogXCJHZWJlbiBTaWUgYml0dGUgZWluZSBnw7xsdGlnZSBIYW5keW51bW1lciBlaW4uXCIsbmV0bWFzazogIFwiR2ViZW4gU2llIGJpdHRlIGVpbmUgZ8O8bHRpZ2UgTmV0em1hc2tlIGVpbi5cIixuaWVFUzogXCJHZWJlbiBTaWUgYml0dGUgZWluZSBnw7xsdGlnZSBOSUUtTnVtbWVyIGVpbi5cIixuaWZFUzogXCJHZWJlbiBTaWUgYml0dGUgZWluZSBnw7xsdGlnZSBOSUYtTnVtbWVyIGVpbi5cIixuaXBQTDogXCJHZWJlbiBTaWUgYml0dGUgZWluZSBnw7xsdGlnZSBOSVAtTnVtbWVyIGVpbi5cIixub3RFcXVhbFRvOiBcIkdlYmVuIFNpZSBiaXR0ZSBlaW5lbiBhbmRlcmVuIFdlcnQgZWluLiBEaWUgV2VydGUgZMO8cmZlbiBuaWNodCBnbGVpY2ggc2Vpbi5cIixub3doaXRlc3BhY2U6IFwiS2VpbiBMZWVyemVpY2hlbiBiaXR0ZS5cIixwYXR0ZXJuOiBcIlVuZ8O8bHRpZ2VzIEZvcm1hdC5cIixwaG9uZU5MOiBcIkdlYmVuIFNpZSBiaXR0ZSBlaW5lIGfDvGx0aWdlIFRlbGVmb25udW1tZXIgZWluLlwiLHBob25lc1VLOiBcIkdlYmVuIFNpZSBiaXR0ZSBlaW5lIGfDvGx0aWdlIGJyaXRpc2NoZSBUZWxlZm9ubnVtbWVyIGVpbi5cIixwaG9uZVVLOiBcIkdlYmVuIFNpZSBiaXR0ZSBlaW5lIGfDvGx0aWdlIFRlbGVmb25udW1tZXIgZWluLlwiLHBob25lVVM6IFwiR2ViZW4gU2llIGJpdHRlIGVpbmUgZ8O8bHRpZ2UgVGVsZWZvbm51bW1lciBlaW4uXCIscG9zdGFsY29kZUJSOiBcIkdlYmVuIFNpZSBiaXR0ZSBlaW5lIGfDvGx0aWdlIGJyYXNpbGlhbmlzY2hlIFBvc3RsZWl0emFobCBlaW4uXCIscG9zdGFsQ29kZUNBOiBcIkdlYmVuIFNpZSBiaXR0ZSBlaW5lIGfDvGx0aWdlIGthbmFkaXNjaGUgUG9zdGxlaXR6YWhsIGVpbi5cIixwb3N0YWxjb2RlSVQ6IFwiR2ViZW4gU2llIGJpdHRlIGVpbmUgZ8O8bHRpZ2UgaXRhbGllbmlzY2hlIFBvc3RsZWl0emFobCBlaW4uXCIscG9zdGFsY29kZU5MOiBcIkdlYmVuIFNpZSBiaXR0ZSBlaW5lIGfDvGx0aWdlIG5pZWRlcmzDpG5kaXNjaGUgUG9zdGxlaXR6YWhsIGVpbi5cIixwb3N0Y29kZVVLOiBcIkdlYmVuIFNpZSBiaXR0ZSBlaW5lIGfDvGx0aWdlIGJyaXRpc2NoZSBQb3N0bGVpdHphaGwgZWluLlwiLHJlcXVpcmVfZnJvbV9ncm91cDogJC52YWxpZGF0b3IuZm9ybWF0KCBcIkbDvGxsZW4gU2llIGJpdHRlIG1pbmRlc3RlbnMgezB9IGRpZXNlciBGZWxkZXIgYXVzLlwiICksc2tpcF9vcl9maWxsX21pbmltdW06ICQudmFsaWRhdG9yLmZvcm1hdCggXCLDnGJlcnNwcmluZ2VuIFNpZSBiaXR0ZSBkaWVzZSBGZWxkZXIgb2RlciBmw7xsbGVuIFNpZSBtaW5kZXN0ZW5zIHswfSB2b24gaWhuZW4gYXVzLlwiICksc3RhdGVVUzogXCJHZWJlbiBTaWUgYml0dGUgZWluZW4gZ8O8bHRpZ2VuIFVTLUJ1bmRlc3N0YWF0IGVpbi5cIixzdHJpcHBlZG1pbmxlbmd0aDogJC52YWxpZGF0b3IuZm9ybWF0KCBcIkdlYmVuIFNpZSBiaXR0ZSBtaW5kZXN0ZW5zIHswfSBaZWljaGVuIGVpbi5cIiApLHRpbWU6IFwiR2ViZW4gU2llIGJpdHRlIGVpbmUgZ8O8bHRpZ2UgVWhyemVpdCB6d2lzY2hlbiAwMDowMCB1bmQgMjM6NTkgZWluLlwiLHRpbWUxMmg6IFwiR2ViZW4gU2llIGJpdHRlIGVpbmUgZ8O8bHRpZ2UgVWhyemVpdCBpbSAxMi1TdHVuZGVuLUZvcm1hdCBlaW4uXCIsdmluVVM6IFwiRGllIGFuZ2VnZWJlbmUgRmFocnpldWdpZGVudGlmaWthdGlvbnNudW1tZXIgKFZJTikgaXN0IHVuZ8O8bHRpZy5cIix6aXBjb2RlVVM6IFwiRGllIGFuZ2VnZWJlbmUgVVMtUG9zdGxlaXR6YWhsIGlzdCB1bmfDvGx0aWcuXCIsemlwcmFuZ2U6IFwiSWhyZSBQb3N0bGVpdHphaGwgbXVzcyBpbSBCZXJlaWNoIDkwMnh4LXh4eHggYmlzIDkwNXh4LXh4eHggbGllZ2VuLlwifSk7XG5cbn0pO1xuXG4iLCJtb2R1bGUuZXhwb3J0cyA9IGpRdWVyeTsiXSwic291cmNlUm9vdCI6IiJ9
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.