biojs-vis-pinpad
Advanced tools
Comparing version 0.1.3 to 0.1.4
@@ -395,3 +395,3 @@ require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ | ||
/*jshint laxbreak: true */ | ||
"use strict"; | ||
"use strict" ; | ||
/* | ||
@@ -416,4 +416,4 @@ * biojs-vis-pinpad | ||
var defaultOpts = { | ||
height: '500px', | ||
width: '250px', | ||
height: '500px', | ||
highlightColor: 'green' | ||
@@ -568,2 +568,2 @@ }; | ||
},{"./PinPadModel":4,"./PinPadViewer":5}]},{},["biojs-vis-pinpad"]) | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlc1xcYnJvd3NlcmlmeVxcbm9kZV9tb2R1bGVzXFxicm93c2VyLXBhY2tcXF9wcmVsdWRlLmpzIiwibGliXFxDYXRlZ29yeUZhY3RvcnkuanMiLCJsaWJcXENhdGVnb3J5TW9kZWwuanMiLCJsaWJcXEVsZW1lbnRGYWN0b3J5LmpzIiwibGliXFxQaW5QYWRNb2RlbC5qcyIsImxpYlxcUGluUGFkVmlld2VyLmpzIiwibGliXFxQaW5QYWQuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUNBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2xLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDN0VBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNwSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gcyhvLHUpe2lmKCFuW29dKXtpZighdFtvXSl7dmFyIGE9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtpZighdSYmYSlyZXR1cm4gYShvLCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBmPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrbytcIidcIik7dGhyb3cgZi5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGZ9dmFyIGw9bltvXT17ZXhwb3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W29dWzFdW2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bb10uZXhwb3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKXMocltvXSk7cmV0dXJuIHN9KSIsIi8qanNsaW50IG5vZGU6IHRydWUgKi9cclxuLypqc2hpbnQgbGF4YnJlYWs6IHRydWUgKi9cclxuXCJ1c2Ugc3RyaWN0XCI7XHJcblxyXG52YXIgZDMgPSByZXF1aXJlKCdkMycpO1xyXG52YXIgXyA9IHJlcXVpcmUoJ3VuZGVyc2NvcmUnKTtcclxudmFyIEVsZW1lbnRGYWN0b3J5ID0gcmVxdWlyZSgnLi9FbGVtZW50RmFjdG9yeScpO1xyXG5cclxudmFyIENhdGVnb3J5ID0gZnVuY3Rpb24ocGluUGFkVmlld2VyLCBjYXRUaXRsZSkge1xyXG4gICAgdmFyIGNhdGVnb3J5ID0gdGhpcztcclxuICAgIGNhdGVnb3J5LnBpblBhZFZpZXdlciA9IHBpblBhZFZpZXdlcjtcclxuICAgIGNhdGVnb3J5LnRpdGxlID0gY2F0VGl0bGU7XHJcbiAgICBjYXRlZ29yeS5vcGVuID0gdHJ1ZTtcclxuICAgIGNhdGVnb3J5LmVsZW1lbnRzID0gW107XHJcblxyXG4gICAgdmFyIGNhdGVnb3J5Q29udGFpbmVyID0gY2F0ZWdvcnkucGluUGFkVmlld2VyLnBhZENvbnRhaW5lci5hcHBlbmQoJ2RpdicpLmNsYXNzZWQoJ3VwX3BwX2NhdGVnb3J5LWNvbnRhaW5lcicsIHRydWUpO1xyXG5cclxuICAgIGNhdGVnb3J5LmhlYWRlciA9IGNhdGVnb3J5Q29udGFpbmVyLmFwcGVuZCgnZGl2JykuY2xhc3NlZCgndXBfcHBfY2F0ZWdvcnktaGVhZGVyJywgdHJ1ZSk7XHJcbiAgICBjYXRlZ29yeS5oZWFkZXIudGl0bGUgPSBjYXRlZ29yeS5oZWFkZXIuYXBwZW5kKCdhJylcclxuICAgICAgICAuYXR0cignY2xhc3MnLCAndXBfcHBfY2F0ZWdvcnktbmFtZSB1cF9wZnR2X2Fycm93LWRvd24nKVxyXG4gICAgICAgIC50ZXh0KGNhdFRpdGxlKVxyXG4gICAgICAgIC5vbignY2xpY2snLCBmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgY2F0ZWdvcnkudG9nZ2xlKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICBjYXRlZ29yeS5oZWFkZXIuYXBwZW5kKCdzcGFuJylcclxuICAgICAgICAuY2xhc3NlZCgndXBfcHBfaWNvbkNvbnRhaW5lcicsIHRydWUpXHJcbiAgICAgICAgLnN0eWxlKCdmbG9hdCcsICdyaWdodCcpXHJcbiAgICAgICAgLmFwcGVuZCgnZGl2JylcclxuICAgICAgICAuYXR0cignY2xhc3MnLCAndXAtcHAtaWNvbi10cmFzaCB1cF9wcF9jbGlja2FibGUtaWNvbicpXHJcbiAgICAgICAgLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICBjYXRlZ29yeS5kZWxlZ2F0ZUNhdGVnb3J5UmVtb3ZhbChjYXRlZ29yeS50aXRsZSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgY2F0ZWdvcnkucGFkQ29udGFpbmVyID0gY2F0ZWdvcnlDb250YWluZXIuYXBwZW5kKCdkaXYnKS5jbGFzc2VkKCd1cF9wcF9jYXRlZ29yeS1wYWQnLCB0cnVlKTtcclxuXHJcbiAgICBjYXRlZ29yeS5yZW1vdmUgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICB3aGlsZSAoY2F0ZWdvcnkuZWxlbWVudHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBjYXRlZ29yeS5lbGVtZW50c1swXS5yZW1vdmUoY2F0ZWdvcnkuZWxlbWVudHNbMF0uaWQsIGNhdGVnb3J5LnRpdGxlLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIGNhdGVnb3J5LmVsZW1lbnRzLnNwbGljZSgwLCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0ZWdvcnlDb250YWluZXIucmVtb3ZlKCk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNhdGVnb3J5LnRvZ2dsZSA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIGlmIChjYXRlZ29yeS5wYWRDb250YWluZXIuc3R5bGUoJ2Rpc3BsYXknKSA9PT0gJ25vbmUnKSB7XHJcbiAgICAgICAgICAgIGNhdGVnb3J5LnBhZENvbnRhaW5lci5zdHlsZSgnZGlzcGxheScsICdibG9jaycpO1xyXG4gICAgICAgICAgICBjYXRlZ29yeS5oZWFkZXIudGl0bGUuYXR0cignY2xhc3MnLCAndXBfcHBfY2F0ZWdvcnktbmFtZSB1cF9wZnR2X2Fycm93LWRvd24nKTtcclxuICAgICAgICAgICAgY2F0ZWdvcnkub3BlbiA9IHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY2F0ZWdvcnkucGFkQ29udGFpbmVyLnN0eWxlKCdkaXNwbGF5JywgJ25vbmUnKTtcclxuICAgICAgICAgICAgY2F0ZWdvcnkuaGVhZGVyLnRpdGxlLmF0dHIoJ2NsYXNzJywgJ3VwX3BwX2NhdGVnb3J5LW5hbWUgdXBfcGZ0dl9hcnJvdy1yaWdodCcpO1xyXG4gICAgICAgICAgICBjYXRlZ29yeS5vcGVuID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBjYXRlZ29yeS5hZGRFbGVtZW50ID0gZnVuY3Rpb24oZWxlbSwgc29ydGVkSW5kZXgsIGFsbEVsZW1lbnRzKSB7XHJcbiAgICAgICAgdmFyIG5ld0VsZW0gPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgaWYgKHNvcnRlZEluZGV4ID4gY2F0ZWdvcnkuZWxlbWVudHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIG5ld0VsZW0gPSAgRWxlbWVudEZhY3RvcnkuY3JlYXRlRWxlbWVudChjYXRlZ29yeSwgZWxlbSk7XHJcbiAgICAgICAgICAgIGNhdGVnb3J5LmVsZW1lbnRzLnB1c2gobmV3RWxlbSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY2F0ZWdvcnkucGFkQ29udGFpbmVyLnNlbGVjdEFsbCgnKicpLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICBfLmVhY2goYWxsRWxlbWVudHMsIGZ1bmN0aW9uKGVsZW0sIGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgb3BlbiA9IGluZGV4ID09PSBzb3J0ZWRJbmRleCA/IHVuZGVmaW5lZCA6IGNhdGVnb3J5LmVsZW1lbnRzW2luZGV4XS5vcGVuO1xyXG4gICAgICAgICAgICAgICAgdmFyIGFkZGVkID0gRWxlbWVudEZhY3RvcnkuY3JlYXRlRWxlbWVudChjYXRlZ29yeSwgZWxlbSwgb3Blbik7XHJcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT09IHNvcnRlZEluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV3RWxlbSA9IGFkZGVkO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5LmVsZW1lbnRzLnNwbGljZShzb3J0ZWRJbmRleCwgMCwgbmV3RWxlbSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbmV3RWxlbTtcclxuICAgIH07XHJcblxyXG4gICAgY2F0ZWdvcnkucmVtb3ZlRWxlbWVudCA9IGZ1bmN0aW9uKGVsSW5kZXgpIHtcclxuICAgICAgICB2YXIgZWxlbWVudCA9IGNhdGVnb3J5LmVsZW1lbnRzW2VsSW5kZXhdO1xyXG4gICAgICAgIGNhdGVnb3J5LmVsZW1lbnRzLnNwbGljZShlbEluZGV4LCAxKTtcclxuICAgICAgICBFbGVtZW50RmFjdG9yeS5yZW1vdmVFbGVtZW50KGVsZW1lbnQpO1xyXG4gICAgfTtcclxuXHJcbiAgICBjYXRlZ29yeS5kZWxlZ2F0ZUVsZW1lbnRSZW1vdmFsID0gZnVuY3Rpb24oZWxJZCkge1xyXG4gICAgICAgIGNhdGVnb3J5LnBpblBhZFZpZXdlci5kZWxlZ2F0ZUVsZW1lbnRSZW1vdmFsKGVsSWQpO1xyXG4gICAgfTtcclxuXHJcbiAgICBjYXRlZ29yeS5kZWxlZ2F0ZUNhdGVnb3J5UmVtb3ZhbCA9IGZ1bmN0aW9uKGNhdFRpdGxlKSB7XHJcbiAgICAgICAgY2F0ZWdvcnkucGluUGFkVmlld2VyLmRlbGVnYXRlQ2F0ZWdvcnlSZW1vdmFsKGNhdFRpdGxlKTtcclxuICAgIH07XHJcbn07XHJcblxyXG52YXIgQ2F0ZWdvcnlGYWN0b3J5ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBjcmVhdGVDYXRlZ29yeTogZnVuY3Rpb24ocGluUGFkVmlld2VyLCBjYXRUaXRsZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IENhdGVnb3J5KHBpblBhZFZpZXdlciwgY2F0VGl0bGUpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVtb3ZlQ2F0ZWdvcnk6IGZ1bmN0aW9uKGNhdGVnb3J5KSB7XHJcbiAgICAgICAgICAgIGNhdGVnb3J5LnJlbW92ZSgpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY3JlYXRlRWxlbWVudDogZnVuY3Rpb24oY2F0ZWdvcnksIGVsZW0sIGVsSW5kZXgsIGFsbEVsZW1lbnRzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBjYXRlZ29yeS5hZGRFbGVtZW50KGVsZW0sIGVsSW5kZXgsIGFsbEVsZW1lbnRzKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlbW92ZUVsZW1lbnQ6IGZ1bmN0aW9uKGNhdGVnb3J5LCBlbEluZGV4KSB7XHJcbiAgICAgICAgICAgIGNhdGVnb3J5LnJlbW92ZUVsZW1lbnQoZWxJbmRleCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxufSgpO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBDYXRlZ29yeUZhY3Rvcnk7IiwiLypqc2xpbnQgbm9kZTogdHJ1ZSAqL1xyXG4vKmpzaGludCBsYXhicmVhazogdHJ1ZSAqL1xyXG5cInVzZSBzdHJpY3RcIjtcclxuXHJcbnZhciBfID0gcmVxdWlyZSgndW5kZXJzY29yZScpO1xyXG5cclxudmFyIENhdGVnb3J5TW9kZWwgPSBmdW5jdGlvbihjYXRUaXRsZSwgb3JkZXJpbmcpIHtcclxuICAgIHZhciBjYXRNb2RlbCA9IHRoaXM7XHJcbiAgICBjYXRNb2RlbC50aXRsZSA9IGNhdFRpdGxlO1xyXG4gICAgY2F0TW9kZWwub3JkZXJpbmcgPSBvcmRlcmluZztcclxuICAgIGNhdE1vZGVsLmVsZW1lbnRzID0gW107XHJcblxyXG4gICAgY2F0TW9kZWwuYWRkRWxlbWVudCA9IGZ1bmN0aW9uKGVsZW1lbnQpIHtcclxuICAgICAgICB2YXIgc29ydGVkSW5kZXggPSAwO1xyXG4gICAgICAgIGlmIChjYXRNb2RlbC5vcmRlcmluZyAmJiBlbGVtZW50Lm9yZGVyaW5nKSB7XHJcbiAgICAgICAgICAgIHZhciByZXN0ID0gXy5wbHVjayhjYXRNb2RlbC5lbGVtZW50cywgJ29yZGVyaW5nJyk7XHJcbiAgICAgICAgICAgIF8uZWFjaChvcmRlcmluZywgZnVuY3Rpb24oYXR0cikge1xyXG4gICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gXy5zb3J0ZWRJbmRleChyZXN0LCBlbGVtZW50Lm9yZGVyaW5nLCBhdHRyKTtcclxuICAgICAgICAgICAgICAgIHNvcnRlZEluZGV4ID0gc29ydGVkSW5kZXggKyBpbmRleDtcclxuICAgICAgICAgICAgICAgIHJlc3QgPSBfLnJlc3QocmVzdCwgaW5kZXgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBzb3J0ZWRJbmRleCA9IGNhdE1vZGVsLmVsZW1lbnRzLmxlbmd0aDtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0TW9kZWwuZWxlbWVudHMuc3BsaWNlKHNvcnRlZEluZGV4LCAwLCBlbGVtZW50KTtcclxuICAgICAgICByZXR1cm4gc29ydGVkSW5kZXg7XHJcbiAgICB9O1xyXG5cclxuICAgIGNhdE1vZGVsLnJlbW92ZUVsZW1lbnQgPSBmdW5jdGlvbihpbmRleCkge1xyXG4gICAgICAgIGlmICgoMCA8PSBpbmRleCkgJiYgKGluZGV4IDwgY2F0TW9kZWwuZWxlbWVudHMubGVuZ3RoKSkge1xyXG4gICAgICAgICAgICBjYXRNb2RlbC5lbGVtZW50cy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgICByZXR1cm4gaW5kZXg7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbn07XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IENhdGVnb3J5TW9kZWw7IiwiLypqc2xpbnQgbm9kZTogdHJ1ZSAqL1xyXG4vKmpzaGludCBsYXhicmVhazogdHJ1ZSAqL1xyXG5cInVzZSBzdHJpY3RcIjtcclxuXHJcbnZhciBkMyA9IHJlcXVpcmUoJ2QzJyk7XHJcbnZhciBfID0gcmVxdWlyZSgndW5kZXJzY29yZScpO1xyXG5cclxudmFyIGlzTGluayA9IGZ1bmN0aW9uKGluZm8pIHtcclxuICAgIGlmICgodHlwZW9mIGluZm8gPT09ICdvYmplY3QnKSAmJiAhKGluZm8gaW5zdGFuY2VvZiBBcnJheSkpIHtcclxuICAgICAgICB2YXIga2V5cyA9IF8ua2V5cyhpbmZvKTtcclxuICAgICAgICBpZiAoKGtleXMubGVuZ3RoID09PSAyKSAmJiBfLmNvbnRhaW5zKGtleXMsICd2YWx1ZScpICYmIF8uY29udGFpbnMoa2V5cywgJ2xpbmsnKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2VcclxufTtcclxuXHJcbnZhciBhZGRMaW5rID0gZnVuY3Rpb24oY29udGFpbmVyLCBpbmZvVGV4dCwgaW5mb0xpbmspIHtcclxuICAgIGlmIChpbmZvTGluayAmJiAoaW5mb0xpbmsgIT09ICctJykpIHtcclxuICAgICAgICBjb250YWluZXIuYXBwZW5kKCdhJylcclxuICAgICAgICAgICAgLmF0dHIoJ2hyZWYnLCBpbmZvTGluaylcclxuICAgICAgICAgICAgLmF0dHIoJ3RhcmdldCcsICdfYmxhbmsnKVxyXG4gICAgICAgICAgICAudGV4dChpbmZvVGV4dCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnRhaW5lci50ZXh0KGluZm9UZXh0KTtcclxuICAgIH1cclxufTtcclxuXHJcbnZhciBhZGRWYWx1ZSA9IGZ1bmN0aW9uKGNvbnRhaW5lciwgaW5mbykge1xyXG4gICAgaWYgKCh0eXBlb2YgaW5mbyA9PT0gJ3N0cmluZycpIHx8ICh0eXBlb2YgaW5mbyA9PT0gJ251bWJlcicpIHx8ICh0eXBlb2YgaW5mbyA9PT0gJ2Jvb2xlYW4nKSkge1xyXG4gICAgICAgIGNvbnRhaW5lci50ZXh0KGluZm8pO1xyXG4gICAgfSBlbHNlIGlmIChpc0xpbmsoaW5mbykpIHtcclxuICAgICAgICBhZGRMaW5rKGNvbnRhaW5lciwgaW5mby52YWx1ZSwgaW5mby5saW5rKTtcclxuICAgIH0gZWxzZSBpZiAoaW5mbyBpbnN0YW5jZW9mIEFycmF5KSB7XHJcbiAgICAgICAgXy5lYWNoKGluZm8sIGZ1bmN0aW9uKGRhdHVtLCBpbmRleCkge1xyXG4gICAgICAgICAgICB2YXIgc3BhbiA9IGNvbnRhaW5lci5hcHBlbmQoJ3NwYW4nKTtcclxuICAgICAgICAgICAgYWRkVmFsdWUoc3BhbiwgZGF0dW0pO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXggIT09IChpbmZvLmxlbmd0aC0xKSkge1xyXG4gICAgICAgICAgICAgICAgY29udGFpbmVyLmFwcGVuZCgnc3BhbicpLnRleHQoJywgJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgYWRkRGF0YShjb250YWluZXIuYXBwZW5kKCd0YWJsZScpLCBpbmZvKTtcclxuICAgIH1cclxufTtcclxuXHJcbnZhciBhZGREYXR1bSA9IGZ1bmN0aW9uKHRhYmxlLCBrZXksIGluZm8pIHtcclxuICAgIHZhciB0ciA9IHRhYmxlLmFwcGVuZCgndHInKTtcclxuICAgIGlmIChrZXkuaW5kZXhPZignc3R5bGVkXycpID09PSAwKSB7XHJcbiAgICAgICAgdmFyIGxlZnRDb2wgPSB0ci5hcHBlbmQoJ3RkJykudGV4dChpbmZvLmtleSk7XHJcbiAgICAgICAgaWYgKGluZm8ua2V5X3N0eWxlKSB7XHJcbiAgICAgICAgICAgIGxlZnRDb2wuYXR0cignc3R5bGUnLCBpbmZvLmtleV9zdHlsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciByaWdodENvbCA9IHRyLmFwcGVuZCgndGQnKTtcclxuICAgICAgICBpZiAoaW5mby52YWx1ZV9zdHlsZSkge1xyXG4gICAgICAgICAgICByaWdodENvbC5hdHRyKCdzdHlsZScsIGluZm8udmFsdWVfc3R5bGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBhZGRWYWx1ZShyaWdodENvbCwgaW5mby52YWx1ZSlcclxuICAgIH0gZWxzZSBpZiAoa2V5LmluZGV4T2YoJ3N1YnNlY3Rpb25fJykgPT09IDApIHtcclxuICAgICAgICB0ci5hcHBlbmQoJ3RkJylcclxuICAgICAgICAgICAgLmF0dHIoJ2NvbHNwYW4nLCAyKVxyXG4gICAgICAgICAgICAuY2xhc3NlZCgndXBfcHBfdGFibGVfc3Vic2VjdGlvbicsIHRydWUpXHJcbiAgICAgICAgICAgIC50ZXh0KGluZm8udGl0bGUpO1xyXG4gICAgICAgIGFkZERhdGEodGFibGUsIGluZm8uaW5mb3JtYXRpb24pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICB0ci5hcHBlbmQoJ3RkJykudGV4dChrZXkucmVwbGFjZSgvXy9nLCAnICcpKTtcclxuICAgICAgICBhZGRWYWx1ZSh0ci5hcHBlbmQoJ3RkJyksIGluZm8pO1xyXG4gICAgfVxyXG59O1xyXG5cclxudmFyIGFkZERhdGEgPSBmdW5jdGlvbih0YWJsZSwgZGF0YSkge1xyXG4gICAgXy5lYWNoKGRhdGEsIGZ1bmN0aW9uKGluZm8sIGtleSkge1xyXG4gICAgICAgIGFkZERhdHVtKHRhYmxlLCBrZXksIGluZm8pO1xyXG4gICAgfSk7XHJcbn07XHJcblxyXG52YXIgRWxlbWVudCA9IGZ1bmN0aW9uKGNhdGVnb3J5LCBlbGVtLCBvcGVuKSB7XHJcbiAgICB2YXIgZWxlbWVudCA9IHRoaXM7XHJcbiAgICBlbGVtZW50LmlkID0gZWxlbS5pZDtcclxuICAgIGVsZW1lbnQuY2F0ZWdvcnkgPSBjYXRlZ29yeTtcclxuICAgIGVsZW1lbnQub3BlbiA9IG9wZW47XHJcbiAgICBlbGVtZW50LmhlYWRlciA9IHVuZGVmaW5lZDtcclxuICAgIGVsZW1lbnQudGFibGVDb250YWluZXIgPSB1bmRlZmluZWQ7XHJcbiAgICBlbGVtZW50LnRhYmxlID0gdW5kZWZpbmVkO1xyXG5cclxuICAgIGVsZW1lbnQudG9nZ2xlID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgaWYgKGVsZW1lbnQudGFibGVDb250YWluZXIuc3R5bGUoJ2Rpc3BsYXknKSA9PT0gJ25vbmUnKSB7XHJcbiAgICAgICAgICAgIGVsZW1lbnQudGFibGVDb250YWluZXIuc3R5bGUoJ2Rpc3BsYXknLCAnYmxvY2snKTtcclxuICAgICAgICAgICAgZWxlbWVudC5oZWFkZXIudGl0bGUuYXR0cignY2xhc3MnLCAndXBfcHBfZWxlbWVudC1uYW1lIHVwX3BmdHZfYXJyb3ctZG93bicpO1xyXG4gICAgICAgICAgICBlbGVtZW50Lm9wZW4gPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGVsZW1lbnQudGFibGVDb250YWluZXIuc3R5bGUoJ2Rpc3BsYXknLCAnbm9uZScpO1xyXG4gICAgICAgICAgICBlbGVtZW50LmhlYWRlci50aXRsZS5hdHRyKCdjbGFzcycsICd1cF9wcF9lbGVtZW50LW5hbWUgdXBfcGZ0dl9hcnJvdy1yaWdodCcpO1xyXG4gICAgICAgICAgICBlbGVtZW50Lm9wZW4gPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIHZhciBlbGVtQ29udGFpbmVyID0gZWxlbWVudC5jYXRlZ29yeS5wYWRDb250YWluZXIuYXBwZW5kKCdkaXYnKS5hdHRyKCdpZCcsICdwaW5uZWRfZWxlbV9pZF8nICsgZWxlbS5pZCk7XHJcblxyXG4gICAgZWxlbWVudC5maXJzdChlbGVtZW50LmNhdGVnb3J5LnRpdGxlLCBlbGVtQ29udGFpbmVyLCBfLmZpcnN0KGVsZW0uc2VjdGlvbnMpKTtcclxuICAgIGVsZW1lbnQudGFpbChlbGVtZW50LnRhYmxlLCBfLnRhaWwoZWxlbS5zZWN0aW9ucykpO1xyXG59O1xyXG5cclxuRWxlbWVudC5wcm90b3R5cGUuZmlyc3QgPSBmdW5jdGlvbihjYXRUaXRsZSwgY29udGFpbmVyLCBzZWN0aW9uKSB7XHJcbiAgICB2YXIgZWxlbWVudCA9IHRoaXM7XHJcbiAgICBlbGVtZW50LmhlYWRlciA9IGNvbnRhaW5lci5hcHBlbmQoJ2RpdicpLmNsYXNzZWQoJ3VwX3BwX2VsZW1lbnQtaGVhZGVyJywgdHJ1ZSk7XHJcbiAgICBlbGVtZW50LmhlYWRlci50aXRsZSA9IGVsZW1lbnQuaGVhZGVyLmFwcGVuZCgnYScpXHJcbiAgICAgICAgLmF0dHIoJ2NsYXNzJywgZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50Lm9wZW4gPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3VwX3BwX2VsZW1lbnQtbmFtZSB1cF9wZnR2X2Fycm93LXJpZ2h0JztcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAndXBfcHBfZWxlbWVudC1uYW1lIHVwX3BmdHZfYXJyb3ctZG93bic7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIC50ZXh0KHNlY3Rpb24udGl0bGUpXHJcbiAgICAgICAgLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICBlbGVtZW50LnRvZ2dsZSgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgZWxlbWVudC5oZWFkZXIuYXBwZW5kKCdzcGFuJylcclxuICAgICAgICAuY2xhc3NlZCgndXBfcHBfaWNvbkNvbnRhaW5lcicsIHRydWUpXHJcbiAgICAgICAgLnN0eWxlKCdmbG9hdCcsICdyaWdodCcpXHJcbiAgICAgICAgLmFwcGVuZCgnZGl2JylcclxuICAgICAgICAuYXR0cignY2xhc3MnLCAndXAtcHAtaWNvbi10cmFzaCB1cF9wcF9jbGlja2FibGUtaWNvbicpXHJcbiAgICAgICAgLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICBlbGVtZW50LmNhdGVnb3J5LmRlbGVnYXRlRWxlbWVudFJlbW92YWwoZWxlbWVudC5pZCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgZWxlbWVudC50YWJsZUNvbnRhaW5lciA9IGNvbnRhaW5lci5hcHBlbmQoJ2RpdicpO1xyXG4gICAgaWYgKGVsZW1lbnQub3BlbiA9PT0gZmFsc2UpIHtcclxuICAgICAgICBlbGVtZW50LnRhYmxlQ29udGFpbmVyLnN0eWxlKCdkaXNwbGF5JywgJ25vbmUnKTtcclxuICAgIH1cclxuICAgIGVsZW1lbnQudGFibGUgPSBlbGVtZW50LnRhYmxlQ29udGFpbmVyLmFwcGVuZCgndGFibGUnKS5hdHRyKCd3aWR0aCcsICcxMDAlJyk7XHJcbiAgICBhZGREYXRhKGVsZW1lbnQudGFibGUsIHNlY3Rpb24uaW5mb3JtYXRpb24pO1xyXG59O1xyXG5cclxuRWxlbWVudC5wcm90b3R5cGUudGFpbCA9IGZ1bmN0aW9uKGNvbnRhaW5lciwgc2VjdGlvbnMpIHtcclxuICAgIF8uZWFjaChzZWN0aW9ucywgZnVuY3Rpb24oc2VjdGlvbikge1xyXG4gICAgICAgIGNvbnRhaW5lci5hcHBlbmQoJ3RyJykuY2xhc3NlZCgndXBfcHBfZWxlbWVudC1zZWN0aW9uJywgdHJ1ZSlcclxuICAgICAgICAgICAgLmFwcGVuZCgndGQnKVxyXG4gICAgICAgICAgICAuYXR0cignY29sc3BhbicsIDIpXHJcbiAgICAgICAgICAgIC50ZXh0KHNlY3Rpb24udGl0bGUpO1xyXG5cclxuICAgICAgICBhZGREYXRhKGNvbnRhaW5lciwgc2VjdGlvbi5pbmZvcm1hdGlvbik7XHJcbiAgICB9KTtcclxufTtcclxuXHJcbkVsZW1lbnQucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uKGlkKSB7XHJcbiAgICB2YXIgY29udGFpbmVyID0gZDMuc2VsZWN0KCcjJyArICdwaW5uZWRfZWxlbV9pZF8nICsgaWQpO1xyXG4gICAgY29udGFpbmVyLnJlbW92ZSgpO1xyXG59O1xyXG5cclxudmFyIEVsZW1lbnRGYWN0b3J5ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBjcmVhdGVFbGVtZW50OiBmdW5jdGlvbihjYXRlZ29yeSwgZWxlbSwgb3Blbikge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IEVsZW1lbnQoY2F0ZWdvcnksIGVsZW0sIG9wZW4pO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVtb3ZlRWxlbWVudDogZnVuY3Rpb24oZWxlbWVudCkge1xyXG4gICAgICAgICAgICBlbGVtZW50LnJlbW92ZShlbGVtZW50LmlkKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG59KCk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IEVsZW1lbnRGYWN0b3J5OyIsIi8qanNsaW50IG5vZGU6IHRydWUgKi9cclxuLypqc2hpbnQgbGF4YnJlYWs6IHRydWUgKi9cclxuXCJ1c2Ugc3RyaWN0XCI7XHJcblxyXG52YXIgXyA9IHJlcXVpcmUoJ3VuZGVyc2NvcmUnKTtcclxudmFyIENhdGVnb3J5TW9kZWwgPSByZXF1aXJlKCcuL0NhdGVnb3J5TW9kZWwnKTtcclxuXHJcbnZhciBhZGRDYXRlZ29yeSA9IGZ1bmN0aW9uKHBpblBhZE1vZGVsLCBjYXRUaXRsZSwgb3JkZXJpbmcpIHtcclxuICAgIHJldHVybiBuZXcgQ2F0ZWdvcnlNb2RlbChjYXRUaXRsZSwgb3JkZXJpbmcpO1xyXG59O1xyXG5cclxudmFyIFBpblBhZE1vZGVsID0gZnVuY3Rpb24ob3JkZXJpbmcpIHtcclxuICAgIHZhciBwaW5QYWRNb2RlbCA9IHRoaXM7XHJcbiAgICBwaW5QYWRNb2RlbC5jYXRlZ29yaWVzID0gW107XHJcblxyXG4gICAgcGluUGFkTW9kZWwuYWRkRWxlbWVudCA9IGZ1bmN0aW9uKGVsZW1lbnQpIHtcclxuICAgICAgICB2YXIgY2F0ZWdvcnk7XHJcbiAgICAgICAgdmFyIGNhdEluZGV4ID0gLTE7XHJcbiAgICAgICAgdmFyIGVsZW0gPSBfLmZpbmQocGluUGFkTW9kZWwuY2F0ZWdvcmllcywgZnVuY3Rpb24oY2F0LCBjb3VudGVyKSB7XHJcbiAgICAgICAgICAgIGlmIChjYXQudGl0bGUgPT09IGVsZW1lbnQuY2F0ZWdvcnkpIHtcclxuICAgICAgICAgICAgICAgIGNhdGVnb3J5ID0gY2F0O1xyXG4gICAgICAgICAgICAgICAgY2F0SW5kZXggPSBjb3VudGVyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBfLmZpbmQoY2F0LmVsZW1lbnRzLCBmdW5jdGlvbihlbCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQuaWQgPT09IGVsLmlkXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmIChlbGVtKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7ZXJyb3I6ICdkdXBsaWNhdGlvbid9O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICghY2F0ZWdvcnkgfHwgKGNhdEluZGV4ID09PSAtMSkpIHtcclxuICAgICAgICAgICAgICAgIGNhdGVnb3J5ID0gYWRkQ2F0ZWdvcnkocGluUGFkTW9kZWwsIGVsZW1lbnQuY2F0ZWdvcnksIG9yZGVyaW5nKTtcclxuICAgICAgICAgICAgICAgIHBpblBhZE1vZGVsLmNhdGVnb3JpZXMucHVzaChjYXRlZ29yeSk7XHJcbiAgICAgICAgICAgICAgICBjYXRJbmRleCA9IHBpblBhZE1vZGVsLmNhdGVnb3JpZXMubGVuZ3RoIC0gMTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB2YXIgZWxJbmRleCA9IGNhdGVnb3J5LmFkZEVsZW1lbnQoZWxlbWVudCk7XHJcbiAgICAgICAgICAgIHJldHVybiB7Y2F0SW5kZXg6IGNhdEluZGV4LCBlbEluZGV4OiBlbEluZGV4fTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIHBpblBhZE1vZGVsLnJlbW92ZUVsZW1lbnQgPSBmdW5jdGlvbihlbElkKSB7XHJcbiAgICAgICAgdmFyIGNhdEluZGV4ID0gLTEsIGVsSW5kZXggPSAtMTtcclxuICAgICAgICBfLmZpbmQocGluUGFkTW9kZWwuY2F0ZWdvcmllcywgZnVuY3Rpb24oY2F0LCBjb3VudGVyKSB7XHJcbiAgICAgICAgICAgIHZhciBlbGVtZW50ID0gXy5maW5kKGNhdC5lbGVtZW50cywgZnVuY3Rpb24oZWwsIGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICBlbEluZGV4ID0gaW5kZXg7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZWwuaWQgPT09IGVsSWQ7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgY2F0SW5kZXggPSBjb3VudGVyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBjYXRJbmRleCAhPT0gLTE7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKChjYXRJbmRleCAhPT0gLTEpICYmIChlbEluZGV4ICE9PSAtMSkpIHtcclxuICAgICAgICAgICAgdmFyIHJlbW92ZWRGcm9tQ2F0ZWdvcnkgPSBwaW5QYWRNb2RlbC5jYXRlZ29yaWVzW2NhdEluZGV4XS50aXRsZTtcclxuICAgICAgICAgICAgdmFyIHJlbW92ZWRFbGVtZW50ID0gcGluUGFkTW9kZWwuY2F0ZWdvcmllc1tjYXRJbmRleF0uZWxlbWVudHNbZWxJbmRleF07XHJcbiAgICAgICAgICAgIHBpblBhZE1vZGVsLmNhdGVnb3JpZXNbY2F0SW5kZXhdLnJlbW92ZUVsZW1lbnQoZWxJbmRleCk7XHJcbiAgICAgICAgICAgIGlmIChwaW5QYWRNb2RlbC5jYXRlZ29yaWVzW2NhdEluZGV4XS5lbGVtZW50cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgIHBpblBhZE1vZGVsLmNhdGVnb3JpZXMuc3BsaWNlKGNhdEluZGV4LCAxKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4ge2NhdEluZGV4OiBjYXRJbmRleCwgZWxJbmRleDogZWxJbmRleCwgY2F0ZWdvcnk6IHJlbW92ZWRGcm9tQ2F0ZWdvcnksIGVsZW1lbnQ6IHJlbW92ZWRFbGVtZW50fTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHtlcnJvcjogJ3Vua25vd24nfVxyXG4gICAgfTtcclxuXHJcbiAgICBwaW5QYWRNb2RlbC5yZW1vdmVDYXRlZ29yeSA9IGZ1bmN0aW9uKGNhdFRpdGxlKSB7XHJcbiAgICAgICAgdmFyIGNhdEluZGV4ID0gLTE7XHJcbiAgICAgICAgdmFyIGNhdGVnb3J5ID0gXy5maW5kKHBpblBhZE1vZGVsLmNhdGVnb3JpZXMsIGZ1bmN0aW9uKGNhdCwgaW5kZXgpIHtcclxuICAgICAgICAgICAgY2F0SW5kZXggPSBpbmRleDtcclxuICAgICAgICAgICAgcmV0dXJuIGNhdC50aXRsZSA9PT0gY2F0VGl0bGU7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKGNhdGVnb3J5KSB7XHJcbiAgICAgICAgICAgIHBpblBhZE1vZGVsLmNhdGVnb3JpZXMuc3BsaWNlKGNhdEluZGV4LCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHtjYXRJbmRleDogY2F0SW5kZXh9O1xyXG4gICAgfTtcclxufTtcclxuXHJcbm1vZHVsZS5leHBvcnRzID0gUGluUGFkTW9kZWw7IiwiLypqc2xpbnQgbm9kZTogdHJ1ZSAqL1xyXG4vKmpzaGludCBsYXhicmVhazogdHJ1ZSAqL1xyXG5cInVzZSBzdHJpY3RcIjtcclxuLypcclxuICogYmlvanMtdmlzLXBpbnBhZFxyXG4gKiBodHRwczovL2dpdGh1Yi5jb20vZWJpLXVuaXByb3QvYmlvanMtdmlzLXBpbnBhZFxyXG4gKlxyXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTQgZWJpLXVuaXByb3RcclxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSAyIGxpY2Vuc2UuXHJcbiAqL1xyXG5cclxuLyoqXHJcbkBjbGFzcyBQaW5QYWRWaWV3ZXJcclxuICovXHJcbnZhciBkMyA9IHJlcXVpcmUoJ2QzJyk7XHJcbnZhciBfID0gcmVxdWlyZSgndW5kZXJzY29yZScpO1xyXG52YXIgQ2F0ZWdvcnlGYWN0b3J5ID0gcmVxdWlyZSgnLi9DYXRlZ29yeUZhY3RvcnknKTtcclxuXHJcbi8qKlxyXG4gKiBQcml2YXRlIE1ldGhvZHNcclxuICovXHJcbnZhciBkZWZhdWx0T3B0cyA9IHtcclxuICAgIHdpZHRoOiAnMjUwcHgnLFxyXG4gICAgaGVpZ2h0OiAnNTAwcHgnLFxyXG4gICAgaGlnaGxpZ2h0Q29sb3I6ICdncmVlbidcclxufTtcclxudmFyIGluaXQgPSBmdW5jdGlvbihwaW5QYWRWaWV3ZXIsIHRvUGluKSB7XHJcbiAgICB2YXIgcGluUGFkVmlld2VyQ29udGFpbmVyID0gZDMuc2VsZWN0KHBpblBhZFZpZXdlci5vcHRpb25zLmVsKVxyXG4gICAgICAudGV4dCgnJylcclxuICAgICAgLmFwcGVuZCgnZGl2JylcclxuICAgICAgLmNsYXNzZWQoJ3VwX3BwX21haW4tY29udGFpbmVyJywgdHJ1ZSlcclxuICAgICAgLnN0eWxlKCd3aWR0aCcsIHBpblBhZFZpZXdlci5vcHRpb25zLndpZHRoKTtcclxuXHJcbiAgICB2YXIgbWFpblRpdGxlID0gcGluUGFkVmlld2VyQ29udGFpbmVyLmFwcGVuZCgnZGl2JykuY2xhc3NlZCgndXBfcHBfbWFpblRpdGxlJywgdHJ1ZSk7XHJcbiAgICBtYWluVGl0bGUuYXBwZW5kKCdkaXYnKS5jbGFzc2VkKCd1cF9wcF9pY29uQ29udGFpbmVyJywgdHJ1ZSlcclxuICAgICAgICAuYXBwZW5kKCdkaXYnKS5jbGFzc2VkKCd1cC1wcC1pY29uLXBpbicsIHRydWUpLmNsYXNzZWQoJ3VwX3BwX2ljb24nLCB0cnVlKTtcclxuICAgIHBpblBhZFZpZXdlci5vZmZzZXRUb3AgPSBtYWluVGl0bGUubm9kZSgpLm9mZnNldEhlaWdodCArIG1haW5UaXRsZS5ub2RlKCkub2Zmc2V0VG9wO1xyXG5cclxuICAgIHBpblBhZFZpZXdlci5wYWRDb250YWluZXIgPSBwaW5QYWRWaWV3ZXJDb250YWluZXIuYXBwZW5kKCdkaXYnKVxyXG4gICAgICAgIC5jbGFzc2VkKCd1cF9wcF9wYWQnLCB0cnVlKVxyXG4gICAgICAgIC5zdHlsZSgnaGVpZ2h0JywgcGluUGFkVmlld2VyLm9wdGlvbnMuaGVpZ2h0KTtcclxuXHJcbiAgICBpZiAocGluUGFkVmlld2VyLm9wdGlvbnMudG9QaW4pIHtcclxuICAgICAgICBwaW5QYWRWaWV3ZXIuYWRkRWxlbWVudCh0b1Bpbik7XHJcbiAgICB9XHJcbn07XHJcblxyXG4vKlxyXG4gKiBQdWJsaWMgTWV0aG9kc1xyXG4gKi9cclxudmFyIFBpblBhZFZpZXdlciA9IGZ1bmN0aW9uKG9wdHMsIHRvUGluLCBwaW5QYWQpe1xyXG4gICAgdmFyIHBpblBhZFZpZXdlciA9IHRoaXM7XHJcbiAgICBwaW5QYWRWaWV3ZXIub3B0aW9ucyA9IF8uZXh0ZW5kKHt9LCBkZWZhdWx0T3B0cywgb3B0cyk7XHJcbiAgICBwaW5QYWRWaWV3ZXIucGluUGFkID0gcGluUGFkO1xyXG4gICAgcGluUGFkVmlld2VyLm9mZnNldFRvcCA9IHVuZGVmaW5lZDtcclxuICAgIHBpblBhZFZpZXdlci5jYXRlZ29yaWVzID0gW107XHJcblxyXG4gICAgaW5pdChwaW5QYWRWaWV3ZXIsIHRvUGluKTtcclxufTtcclxuXHJcbnZhciBhZGRDYXRlZ29yeSA9IGZ1bmN0aW9uKHBpblBhZFZpZXdlciwgY2F0ZWdvcnkpIHtcclxuICAgIHJldHVybiBDYXRlZ29yeUZhY3RvcnkuY3JlYXRlQ2F0ZWdvcnkocGluUGFkVmlld2VyLCBjYXRlZ29yeSk7XHJcbn07XHJcblxyXG5QaW5QYWRWaWV3ZXIucHJvdG90eXBlLmFkZEVsZW1lbnQgPSBmdW5jdGlvbih0b1BpbiwgY2F0SW5kZXgsIGVsSW5kZXgsIGFsbEVsZW1lbnRzKSB7XHJcbiAgICB2YXIgcGluUGFkVmlld2VyID0gdGhpcztcclxuICAgIC8vYWRkIGNhdGVnb3J5XHJcbiAgICB2YXIgY2F0ZWdvcnk7XHJcbiAgICBpZiAoY2F0SW5kZXggPj0gcGluUGFkVmlld2VyLmNhdGVnb3JpZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgcGluUGFkVmlld2VyLmNhdGVnb3JpZXMucHVzaChhZGRDYXRlZ29yeShwaW5QYWRWaWV3ZXIsIHRvUGluLmNhdGVnb3J5KSk7XHJcbiAgICAgICAgY2F0ZWdvcnkgPSBfLmxhc3QocGluUGFkVmlld2VyLmNhdGVnb3JpZXMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICBjYXRlZ29yeSA9IHBpblBhZFZpZXdlci5jYXRlZ29yaWVzW2NhdEluZGV4XTtcclxuICAgIH1cclxuICAgIGlmICghY2F0ZWdvcnkub3Blbikge1xyXG4gICAgICAgIGNhdGVnb3J5LnRvZ2dsZSgpO1xyXG4gICAgfVxyXG4gICAgdmFyIG5ld0VsZW0gPSBDYXRlZ29yeUZhY3RvcnkuY3JlYXRlRWxlbWVudChjYXRlZ29yeSwgdG9QaW4sIGVsSW5kZXgsIGFsbEVsZW1lbnRzKTtcclxuICAgIHZhciBlbGVtWSA9IG5ld0VsZW0uaGVhZGVyLm5vZGUoKS5vZmZzZXRUb3A7XHJcbiAgICBwaW5QYWRWaWV3ZXIucGFkQ29udGFpbmVyLm5vZGUoKS5zY3JvbGxUb3AgPSBlbGVtWSAtIHBpblBhZFZpZXdlci5vZmZzZXRUb3A7XHJcbiAgICB2YXIgY29sb3IgPSBuZXdFbGVtLmhlYWRlci5zdHlsZSgnYmFja2dyb3VuZC1jb2xvcicpO1xyXG4gICAgbmV3RWxlbS5oZWFkZXJcclxuICAgICAgICAudHJhbnNpdGlvbigpXHJcbiAgICAgICAgLmR1cmF0aW9uKDE1MDApXHJcbiAgICAgICAgLnN0eWxlVHdlZW4oJ2JhY2tncm91bmQtY29sb3InLCBmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGQzLmludGVycG9sYXRlKHBpblBhZFZpZXdlci5vcHRpb25zLmhpZ2hsaWdodENvbG9yLCBjb2xvcik7XHJcbiAgICAgICAgfSlcclxuICAgIDtcclxuICAgIHJldHVybiBuZXdFbGVtO1xyXG59O1xyXG5cclxuUGluUGFkVmlld2VyLnByb3RvdHlwZS5yZW1vdmVFbGVtZW50ID0gZnVuY3Rpb24oY2F0SW5kZXgsIGVsSW5kZXgpIHtcclxuICAgIHZhciBwaW5QYWRWaWV3ZXIgPSB0aGlzO1xyXG4gICAgQ2F0ZWdvcnlGYWN0b3J5LnJlbW92ZUVsZW1lbnQocGluUGFkVmlld2VyLmNhdGVnb3JpZXNbY2F0SW5kZXhdLCBlbEluZGV4KTtcclxuICAgIGlmIChwaW5QYWRWaWV3ZXIuY2F0ZWdvcmllc1tjYXRJbmRleF0uZWxlbWVudHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgQ2F0ZWdvcnlGYWN0b3J5LnJlbW92ZUNhdGVnb3J5KHBpblBhZFZpZXdlci5jYXRlZ29yaWVzW2NhdEluZGV4XSk7XHJcbiAgICAgICAgcGluUGFkVmlld2VyLmNhdGVnb3JpZXMuc3BsaWNlKGNhdEluZGV4LCAxKTtcclxuICAgIH1cclxufTtcclxuXHJcblBpblBhZFZpZXdlci5wcm90b3R5cGUuZGVsZWdhdGVFbGVtZW50UmVtb3ZhbCA9IGZ1bmN0aW9uKGVsSWQpIHtcclxuICAgIHZhciBwaW5QYWRWaWV3ZXIgPSB0aGlzO1xyXG4gICAgcGluUGFkVmlld2VyLnBpblBhZC5yZW1vdmVFbGVtZW50KGVsSWQpO1xyXG59O1xyXG5cclxuUGluUGFkVmlld2VyLnByb3RvdHlwZS5yZW1vdmVDYXRlZ29yeSA9IGZ1bmN0aW9uKGNhdEluZGV4KSB7XHJcbiAgICB2YXIgcGluUGFkVmlld2VyID0gdGhpcztcclxuICAgIENhdGVnb3J5RmFjdG9yeS5yZW1vdmVDYXRlZ29yeShwaW5QYWRWaWV3ZXIuY2F0ZWdvcmllc1tjYXRJbmRleF0pO1xyXG4gICAgcGluUGFkVmlld2VyLmNhdGVnb3JpZXMuc3BsaWNlKGNhdEluZGV4LCAxKTtcclxufTtcclxuXHJcblBpblBhZFZpZXdlci5wcm90b3R5cGUuZGVsZWdhdGVDYXRlZ29yeVJlbW92YWwgPSBmdW5jdGlvbihjYXRUaXRsZSkge1xyXG4gICAgdmFyIHBpblBhZFZpZXdlciA9IHRoaXM7XHJcbiAgICBwaW5QYWRWaWV3ZXIucGluUGFkLnJlbW92ZUNhdGVnb3J5KGNhdFRpdGxlKTtcclxufTtcclxuXHJcbm1vZHVsZS5leHBvcnRzID0gUGluUGFkVmlld2VyOyIsIi8qanNsaW50IG5vZGU6IHRydWUgKi9cclxuLypqc2hpbnQgbGF4YnJlYWs6IHRydWUgKi9cclxuXCJ1c2Ugc3RyaWN0XCI7XHJcblxyXG52YXIgUGluUGFkVmlld2VyID0gcmVxdWlyZSgnLi9QaW5QYWRWaWV3ZXInKTtcclxudmFyIFBpblBhZE1vZGVsID0gcmVxdWlyZSgnLi9QaW5QYWRNb2RlbCcpO1xyXG5cclxudmFyIFBpblBhZCA9IGZ1bmN0aW9uKG9wdHMpIHtcclxuICAgIHZhciBwaW5QYWQgPSB0aGlzO1xyXG4gICAgcGluUGFkLm1vZGVsID0gbmV3IFBpblBhZE1vZGVsKG9wdHMub3JkZXJpbmcpO1xyXG4gICAgcGluUGFkLnZpZXdlciA9IG5ldyBQaW5QYWRWaWV3ZXIob3B0cy5vcHRpb25zLCBvcHRzLnRvUGluLCBwaW5QYWQpO1xyXG4gICAgcGluUGFkLmRpc3BhdGNoZXIgPSBkMy5kaXNwYXRjaChcImFkZFwiLCBcImR1cGxpY2F0aW9uXCIsIFwicmVtb3ZlXCIsIFwidW5rbm93blwiLCBcImluY29tcGxldGVcIik7XHJcblxyXG4gICAgcGluUGFkLmFkZEVsZW1lbnQgPSBmdW5jdGlvbihlbGVtZW50KSB7XHJcbiAgICAgICAgaWYgKGVsZW1lbnQuY2F0ZWdvcnkgJiYgZWxlbWVudC5pZCAmJiBlbGVtZW50LnNlY3Rpb25zICYmIChlbGVtZW50LnNlY3Rpb25zLmxlbmd0aCAhPT0gMCkpIHtcclxuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHBpblBhZC5tb2RlbC5hZGRFbGVtZW50KGVsZW1lbnQpO1xyXG4gICAgICAgICAgICBpZiAocmVzdWx0LmVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICBwaW5QYWQuZGlzcGF0Y2hlci5kdXBsaWNhdGlvbih7ZWxlbWVudDogZWxlbWVudH0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcGluUGFkLnZpZXdlci5hZGRFbGVtZW50KGVsZW1lbnQsIHJlc3VsdC5jYXRJbmRleCwgcmVzdWx0LmVsSW5kZXgsXHJcbiAgICAgICAgICAgICAgICAgICAgcGluUGFkLm1vZGVsLmNhdGVnb3JpZXNbcmVzdWx0LmNhdEluZGV4XS5lbGVtZW50cyk7XHJcbiAgICAgICAgICAgICAgICBwaW5QYWQuZGlzcGF0Y2hlci5hZGQoe1xyXG4gICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5OiBlbGVtZW50LmNhdGVnb3J5LFxyXG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ6IGVsZW1lbnRcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcGluUGFkLmRpc3BhdGNoZXIuaW5jb21wbGV0ZSh7ZWxlbWVudDogZWxlbWVudH0pO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgcGluUGFkLnJlbW92ZUVsZW1lbnQgPSBmdW5jdGlvbihlbElkKSB7XHJcbiAgICAgICAgdmFyIHJlc3VsdCA9IHBpblBhZC5tb2RlbC5yZW1vdmVFbGVtZW50KGVsSWQpO1xyXG4gICAgICAgIGlmIChyZXN1bHQuZXJyb3IpIHtcclxuICAgICAgICAgICAgcGluUGFkLmRpc3BhdGNoZXIudW5rbm93bih7ZWxlbWVudDogZWxJZH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHBpblBhZC52aWV3ZXIucmVtb3ZlRWxlbWVudChyZXN1bHQuY2F0SW5kZXgsIHJlc3VsdC5lbEluZGV4KTtcclxuICAgICAgICAgICAgcGluUGFkLmRpc3BhdGNoZXIucmVtb3ZlKHtlbGVtZW50OiByZXN1bHQuZWxlbWVudH0pO1xyXG4gICAgICAgICAgICBpZiAoKHBpblBhZC5tb2RlbC5jYXRlZ29yaWVzLmxlbmd0aCA9PT0gMCkgfHwgKHBpblBhZC5tb2RlbC5jYXRlZ29yaWVzLmxlbmd0aCA9PT0gcmVzdWx0LmNhdEluZGV4KSkge1xyXG4gICAgICAgICAgICAgICAgcGluUGFkLmRpc3BhdGNoZXIucmVtb3ZlKHtjYXRlZ29yeTogcmVzdWx0LmNhdGVnb3J5fSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocGluUGFkLm1vZGVsLmNhdGVnb3JpZXNbcmVzdWx0LmNhdEluZGV4XS50aXRsZSAhPT0gcmVzdWx0LmNhdGVnb3J5KSB7XHJcbiAgICAgICAgICAgICAgICBwaW5QYWQuZGlzcGF0Y2hlci5yZW1vdmUoe2NhdGVnb3J5OiByZXN1bHQuY2F0ZWdvcnl9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgcGluUGFkLnJlbW92ZUNhdGVnb3J5ID0gZnVuY3Rpb24oY2F0VGl0bGUpIHtcclxuICAgICAgICB2YXIgcmVzdWx0ID0gcGluUGFkLm1vZGVsLnJlbW92ZUNhdGVnb3J5KGNhdFRpdGxlKTtcclxuICAgICAgICBwaW5QYWQudmlld2VyLnJlbW92ZUNhdGVnb3J5KHJlc3VsdC5jYXRJbmRleCk7XHJcbiAgICAgICAgcGluUGFkLmRpc3BhdGNoZXIucmVtb3ZlKHtjYXRlZ29yeTogY2F0VGl0bGV9KTtcclxuICAgIH07XHJcbn07XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IFBpblBhZDsiXX0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlc1xcYnJvd3NlcmlmeVxcbm9kZV9tb2R1bGVzXFxicm93c2VyLXBhY2tcXF9wcmVsdWRlLmpzIiwibGliXFxDYXRlZ29yeUZhY3RvcnkuanMiLCJsaWJcXENhdGVnb3J5TW9kZWwuanMiLCJsaWJcXEVsZW1lbnRGYWN0b3J5LmpzIiwibGliXFxQaW5QYWRNb2RlbC5qcyIsImxpYlxcUGluUGFkVmlld2VyLmpzIiwibGliXFxQaW5QYWQuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUNBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2xLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDN0VBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNwSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gcyhvLHUpe2lmKCFuW29dKXtpZighdFtvXSl7dmFyIGE9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtpZighdSYmYSlyZXR1cm4gYShvLCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBmPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrbytcIidcIik7dGhyb3cgZi5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGZ9dmFyIGw9bltvXT17ZXhwb3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W29dWzFdW2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bb10uZXhwb3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKXMocltvXSk7cmV0dXJuIHN9KSIsIi8qanNsaW50IG5vZGU6IHRydWUgKi9cclxuLypqc2hpbnQgbGF4YnJlYWs6IHRydWUgKi9cclxuXCJ1c2Ugc3RyaWN0XCI7XHJcblxyXG52YXIgZDMgPSByZXF1aXJlKCdkMycpO1xyXG52YXIgXyA9IHJlcXVpcmUoJ3VuZGVyc2NvcmUnKTtcclxudmFyIEVsZW1lbnRGYWN0b3J5ID0gcmVxdWlyZSgnLi9FbGVtZW50RmFjdG9yeScpO1xyXG5cclxudmFyIENhdGVnb3J5ID0gZnVuY3Rpb24ocGluUGFkVmlld2VyLCBjYXRUaXRsZSkge1xyXG4gICAgdmFyIGNhdGVnb3J5ID0gdGhpcztcclxuICAgIGNhdGVnb3J5LnBpblBhZFZpZXdlciA9IHBpblBhZFZpZXdlcjtcclxuICAgIGNhdGVnb3J5LnRpdGxlID0gY2F0VGl0bGU7XHJcbiAgICBjYXRlZ29yeS5vcGVuID0gdHJ1ZTtcclxuICAgIGNhdGVnb3J5LmVsZW1lbnRzID0gW107XHJcblxyXG4gICAgdmFyIGNhdGVnb3J5Q29udGFpbmVyID0gY2F0ZWdvcnkucGluUGFkVmlld2VyLnBhZENvbnRhaW5lci5hcHBlbmQoJ2RpdicpLmNsYXNzZWQoJ3VwX3BwX2NhdGVnb3J5LWNvbnRhaW5lcicsIHRydWUpO1xyXG5cclxuICAgIGNhdGVnb3J5LmhlYWRlciA9IGNhdGVnb3J5Q29udGFpbmVyLmFwcGVuZCgnZGl2JykuY2xhc3NlZCgndXBfcHBfY2F0ZWdvcnktaGVhZGVyJywgdHJ1ZSk7XHJcbiAgICBjYXRlZ29yeS5oZWFkZXIudGl0bGUgPSBjYXRlZ29yeS5oZWFkZXIuYXBwZW5kKCdhJylcclxuICAgICAgICAuYXR0cignY2xhc3MnLCAndXBfcHBfY2F0ZWdvcnktbmFtZSB1cF9wZnR2X2Fycm93LWRvd24nKVxyXG4gICAgICAgIC50ZXh0KGNhdFRpdGxlKVxyXG4gICAgICAgIC5vbignY2xpY2snLCBmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgY2F0ZWdvcnkudG9nZ2xlKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICBjYXRlZ29yeS5oZWFkZXIuYXBwZW5kKCdzcGFuJylcclxuICAgICAgICAuY2xhc3NlZCgndXBfcHBfaWNvbkNvbnRhaW5lcicsIHRydWUpXHJcbiAgICAgICAgLnN0eWxlKCdmbG9hdCcsICdyaWdodCcpXHJcbiAgICAgICAgLmFwcGVuZCgnZGl2JylcclxuICAgICAgICAuYXR0cignY2xhc3MnLCAndXAtcHAtaWNvbi10cmFzaCB1cF9wcF9jbGlja2FibGUtaWNvbicpXHJcbiAgICAgICAgLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICBjYXRlZ29yeS5kZWxlZ2F0ZUNhdGVnb3J5UmVtb3ZhbChjYXRlZ29yeS50aXRsZSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgY2F0ZWdvcnkucGFkQ29udGFpbmVyID0gY2F0ZWdvcnlDb250YWluZXIuYXBwZW5kKCdkaXYnKS5jbGFzc2VkKCd1cF9wcF9jYXRlZ29yeS1wYWQnLCB0cnVlKTtcclxuXHJcbiAgICBjYXRlZ29yeS5yZW1vdmUgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICB3aGlsZSAoY2F0ZWdvcnkuZWxlbWVudHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBjYXRlZ29yeS5lbGVtZW50c1swXS5yZW1vdmUoY2F0ZWdvcnkuZWxlbWVudHNbMF0uaWQsIGNhdGVnb3J5LnRpdGxlLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIGNhdGVnb3J5LmVsZW1lbnRzLnNwbGljZSgwLCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0ZWdvcnlDb250YWluZXIucmVtb3ZlKCk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNhdGVnb3J5LnRvZ2dsZSA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIGlmIChjYXRlZ29yeS5wYWRDb250YWluZXIuc3R5bGUoJ2Rpc3BsYXknKSA9PT0gJ25vbmUnKSB7XHJcbiAgICAgICAgICAgIGNhdGVnb3J5LnBhZENvbnRhaW5lci5zdHlsZSgnZGlzcGxheScsICdibG9jaycpO1xyXG4gICAgICAgICAgICBjYXRlZ29yeS5oZWFkZXIudGl0bGUuYXR0cignY2xhc3MnLCAndXBfcHBfY2F0ZWdvcnktbmFtZSB1cF9wZnR2X2Fycm93LWRvd24nKTtcclxuICAgICAgICAgICAgY2F0ZWdvcnkub3BlbiA9IHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY2F0ZWdvcnkucGFkQ29udGFpbmVyLnN0eWxlKCdkaXNwbGF5JywgJ25vbmUnKTtcclxuICAgICAgICAgICAgY2F0ZWdvcnkuaGVhZGVyLnRpdGxlLmF0dHIoJ2NsYXNzJywgJ3VwX3BwX2NhdGVnb3J5LW5hbWUgdXBfcGZ0dl9hcnJvdy1yaWdodCcpO1xyXG4gICAgICAgICAgICBjYXRlZ29yeS5vcGVuID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBjYXRlZ29yeS5hZGRFbGVtZW50ID0gZnVuY3Rpb24oZWxlbSwgc29ydGVkSW5kZXgsIGFsbEVsZW1lbnRzKSB7XHJcbiAgICAgICAgdmFyIG5ld0VsZW0gPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgaWYgKHNvcnRlZEluZGV4ID4gY2F0ZWdvcnkuZWxlbWVudHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIG5ld0VsZW0gPSAgRWxlbWVudEZhY3RvcnkuY3JlYXRlRWxlbWVudChjYXRlZ29yeSwgZWxlbSk7XHJcbiAgICAgICAgICAgIGNhdGVnb3J5LmVsZW1lbnRzLnB1c2gobmV3RWxlbSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY2F0ZWdvcnkucGFkQ29udGFpbmVyLnNlbGVjdEFsbCgnKicpLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICBfLmVhY2goYWxsRWxlbWVudHMsIGZ1bmN0aW9uKGVsZW0sIGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgb3BlbiA9IGluZGV4ID09PSBzb3J0ZWRJbmRleCA/IHVuZGVmaW5lZCA6IGNhdGVnb3J5LmVsZW1lbnRzW2luZGV4XS5vcGVuO1xyXG4gICAgICAgICAgICAgICAgdmFyIGFkZGVkID0gRWxlbWVudEZhY3RvcnkuY3JlYXRlRWxlbWVudChjYXRlZ29yeSwgZWxlbSwgb3Blbik7XHJcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT09IHNvcnRlZEluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmV3RWxlbSA9IGFkZGVkO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5LmVsZW1lbnRzLnNwbGljZShzb3J0ZWRJbmRleCwgMCwgbmV3RWxlbSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbmV3RWxlbTtcclxuICAgIH07XHJcblxyXG4gICAgY2F0ZWdvcnkucmVtb3ZlRWxlbWVudCA9IGZ1bmN0aW9uKGVsSW5kZXgpIHtcclxuICAgICAgICB2YXIgZWxlbWVudCA9IGNhdGVnb3J5LmVsZW1lbnRzW2VsSW5kZXhdO1xyXG4gICAgICAgIGNhdGVnb3J5LmVsZW1lbnRzLnNwbGljZShlbEluZGV4LCAxKTtcclxuICAgICAgICBFbGVtZW50RmFjdG9yeS5yZW1vdmVFbGVtZW50KGVsZW1lbnQpO1xyXG4gICAgfTtcclxuXHJcbiAgICBjYXRlZ29yeS5kZWxlZ2F0ZUVsZW1lbnRSZW1vdmFsID0gZnVuY3Rpb24oZWxJZCkge1xyXG4gICAgICAgIGNhdGVnb3J5LnBpblBhZFZpZXdlci5kZWxlZ2F0ZUVsZW1lbnRSZW1vdmFsKGVsSWQpO1xyXG4gICAgfTtcclxuXHJcbiAgICBjYXRlZ29yeS5kZWxlZ2F0ZUNhdGVnb3J5UmVtb3ZhbCA9IGZ1bmN0aW9uKGNhdFRpdGxlKSB7XHJcbiAgICAgICAgY2F0ZWdvcnkucGluUGFkVmlld2VyLmRlbGVnYXRlQ2F0ZWdvcnlSZW1vdmFsKGNhdFRpdGxlKTtcclxuICAgIH07XHJcbn07XHJcblxyXG52YXIgQ2F0ZWdvcnlGYWN0b3J5ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBjcmVhdGVDYXRlZ29yeTogZnVuY3Rpb24ocGluUGFkVmlld2VyLCBjYXRUaXRsZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IENhdGVnb3J5KHBpblBhZFZpZXdlciwgY2F0VGl0bGUpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVtb3ZlQ2F0ZWdvcnk6IGZ1bmN0aW9uKGNhdGVnb3J5KSB7XHJcbiAgICAgICAgICAgIGNhdGVnb3J5LnJlbW92ZSgpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY3JlYXRlRWxlbWVudDogZnVuY3Rpb24oY2F0ZWdvcnksIGVsZW0sIGVsSW5kZXgsIGFsbEVsZW1lbnRzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBjYXRlZ29yeS5hZGRFbGVtZW50KGVsZW0sIGVsSW5kZXgsIGFsbEVsZW1lbnRzKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlbW92ZUVsZW1lbnQ6IGZ1bmN0aW9uKGNhdGVnb3J5LCBlbEluZGV4KSB7XHJcbiAgICAgICAgICAgIGNhdGVnb3J5LnJlbW92ZUVsZW1lbnQoZWxJbmRleCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxufSgpO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBDYXRlZ29yeUZhY3Rvcnk7IiwiLypqc2xpbnQgbm9kZTogdHJ1ZSAqL1xyXG4vKmpzaGludCBsYXhicmVhazogdHJ1ZSAqL1xyXG5cInVzZSBzdHJpY3RcIjtcclxuXHJcbnZhciBfID0gcmVxdWlyZSgndW5kZXJzY29yZScpO1xyXG5cclxudmFyIENhdGVnb3J5TW9kZWwgPSBmdW5jdGlvbihjYXRUaXRsZSwgb3JkZXJpbmcpIHtcclxuICAgIHZhciBjYXRNb2RlbCA9IHRoaXM7XHJcbiAgICBjYXRNb2RlbC50aXRsZSA9IGNhdFRpdGxlO1xyXG4gICAgY2F0TW9kZWwub3JkZXJpbmcgPSBvcmRlcmluZztcclxuICAgIGNhdE1vZGVsLmVsZW1lbnRzID0gW107XHJcblxyXG4gICAgY2F0TW9kZWwuYWRkRWxlbWVudCA9IGZ1bmN0aW9uKGVsZW1lbnQpIHtcclxuICAgICAgICB2YXIgc29ydGVkSW5kZXggPSAwO1xyXG4gICAgICAgIGlmIChjYXRNb2RlbC5vcmRlcmluZyAmJiBlbGVtZW50Lm9yZGVyaW5nKSB7XHJcbiAgICAgICAgICAgIHZhciByZXN0ID0gXy5wbHVjayhjYXRNb2RlbC5lbGVtZW50cywgJ29yZGVyaW5nJyk7XHJcbiAgICAgICAgICAgIF8uZWFjaChvcmRlcmluZywgZnVuY3Rpb24oYXR0cikge1xyXG4gICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gXy5zb3J0ZWRJbmRleChyZXN0LCBlbGVtZW50Lm9yZGVyaW5nLCBhdHRyKTtcclxuICAgICAgICAgICAgICAgIHNvcnRlZEluZGV4ID0gc29ydGVkSW5kZXggKyBpbmRleDtcclxuICAgICAgICAgICAgICAgIHJlc3QgPSBfLnJlc3QocmVzdCwgaW5kZXgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBzb3J0ZWRJbmRleCA9IGNhdE1vZGVsLmVsZW1lbnRzLmxlbmd0aDtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0TW9kZWwuZWxlbWVudHMuc3BsaWNlKHNvcnRlZEluZGV4LCAwLCBlbGVtZW50KTtcclxuICAgICAgICByZXR1cm4gc29ydGVkSW5kZXg7XHJcbiAgICB9O1xyXG5cclxuICAgIGNhdE1vZGVsLnJlbW92ZUVsZW1lbnQgPSBmdW5jdGlvbihpbmRleCkge1xyXG4gICAgICAgIGlmICgoMCA8PSBpbmRleCkgJiYgKGluZGV4IDwgY2F0TW9kZWwuZWxlbWVudHMubGVuZ3RoKSkge1xyXG4gICAgICAgICAgICBjYXRNb2RlbC5lbGVtZW50cy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgICByZXR1cm4gaW5kZXg7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbn07XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IENhdGVnb3J5TW9kZWw7IiwiLypqc2xpbnQgbm9kZTogdHJ1ZSAqL1xyXG4vKmpzaGludCBsYXhicmVhazogdHJ1ZSAqL1xyXG5cInVzZSBzdHJpY3RcIjtcclxuXHJcbnZhciBkMyA9IHJlcXVpcmUoJ2QzJyk7XHJcbnZhciBfID0gcmVxdWlyZSgndW5kZXJzY29yZScpO1xyXG5cclxudmFyIGlzTGluayA9IGZ1bmN0aW9uKGluZm8pIHtcclxuICAgIGlmICgodHlwZW9mIGluZm8gPT09ICdvYmplY3QnKSAmJiAhKGluZm8gaW5zdGFuY2VvZiBBcnJheSkpIHtcclxuICAgICAgICB2YXIga2V5cyA9IF8ua2V5cyhpbmZvKTtcclxuICAgICAgICBpZiAoKGtleXMubGVuZ3RoID09PSAyKSAmJiBfLmNvbnRhaW5zKGtleXMsICd2YWx1ZScpICYmIF8uY29udGFpbnMoa2V5cywgJ2xpbmsnKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2VcclxufTtcclxuXHJcbnZhciBhZGRMaW5rID0gZnVuY3Rpb24oY29udGFpbmVyLCBpbmZvVGV4dCwgaW5mb0xpbmspIHtcclxuICAgIGlmIChpbmZvTGluayAmJiAoaW5mb0xpbmsgIT09ICctJykpIHtcclxuICAgICAgICBjb250YWluZXIuYXBwZW5kKCdhJylcclxuICAgICAgICAgICAgLmF0dHIoJ2hyZWYnLCBpbmZvTGluaylcclxuICAgICAgICAgICAgLmF0dHIoJ3RhcmdldCcsICdfYmxhbmsnKVxyXG4gICAgICAgICAgICAudGV4dChpbmZvVGV4dCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnRhaW5lci50ZXh0KGluZm9UZXh0KTtcclxuICAgIH1cclxufTtcclxuXHJcbnZhciBhZGRWYWx1ZSA9IGZ1bmN0aW9uKGNvbnRhaW5lciwgaW5mbykge1xyXG4gICAgaWYgKCh0eXBlb2YgaW5mbyA9PT0gJ3N0cmluZycpIHx8ICh0eXBlb2YgaW5mbyA9PT0gJ251bWJlcicpIHx8ICh0eXBlb2YgaW5mbyA9PT0gJ2Jvb2xlYW4nKSkge1xyXG4gICAgICAgIGNvbnRhaW5lci50ZXh0KGluZm8pO1xyXG4gICAgfSBlbHNlIGlmIChpc0xpbmsoaW5mbykpIHtcclxuICAgICAgICBhZGRMaW5rKGNvbnRhaW5lciwgaW5mby52YWx1ZSwgaW5mby5saW5rKTtcclxuICAgIH0gZWxzZSBpZiAoaW5mbyBpbnN0YW5jZW9mIEFycmF5KSB7XHJcbiAgICAgICAgXy5lYWNoKGluZm8sIGZ1bmN0aW9uKGRhdHVtLCBpbmRleCkge1xyXG4gICAgICAgICAgICB2YXIgc3BhbiA9IGNvbnRhaW5lci5hcHBlbmQoJ3NwYW4nKTtcclxuICAgICAgICAgICAgYWRkVmFsdWUoc3BhbiwgZGF0dW0pO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXggIT09IChpbmZvLmxlbmd0aC0xKSkge1xyXG4gICAgICAgICAgICAgICAgY29udGFpbmVyLmFwcGVuZCgnc3BhbicpLnRleHQoJywgJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgYWRkRGF0YShjb250YWluZXIuYXBwZW5kKCd0YWJsZScpLCBpbmZvKTtcclxuICAgIH1cclxufTtcclxuXHJcbnZhciBhZGREYXR1bSA9IGZ1bmN0aW9uKHRhYmxlLCBrZXksIGluZm8pIHtcclxuICAgIHZhciB0ciA9IHRhYmxlLmFwcGVuZCgndHInKTtcclxuICAgIGlmIChrZXkuaW5kZXhPZignc3R5bGVkXycpID09PSAwKSB7XHJcbiAgICAgICAgdmFyIGxlZnRDb2wgPSB0ci5hcHBlbmQoJ3RkJykudGV4dChpbmZvLmtleSk7XHJcbiAgICAgICAgaWYgKGluZm8ua2V5X3N0eWxlKSB7XHJcbiAgICAgICAgICAgIGxlZnRDb2wuYXR0cignc3R5bGUnLCBpbmZvLmtleV9zdHlsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciByaWdodENvbCA9IHRyLmFwcGVuZCgndGQnKTtcclxuICAgICAgICBpZiAoaW5mby52YWx1ZV9zdHlsZSkge1xyXG4gICAgICAgICAgICByaWdodENvbC5hdHRyKCdzdHlsZScsIGluZm8udmFsdWVfc3R5bGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBhZGRWYWx1ZShyaWdodENvbCwgaW5mby52YWx1ZSlcclxuICAgIH0gZWxzZSBpZiAoa2V5LmluZGV4T2YoJ3N1YnNlY3Rpb25fJykgPT09IDApIHtcclxuICAgICAgICB0ci5hcHBlbmQoJ3RkJylcclxuICAgICAgICAgICAgLmF0dHIoJ2NvbHNwYW4nLCAyKVxyXG4gICAgICAgICAgICAuY2xhc3NlZCgndXBfcHBfdGFibGVfc3Vic2VjdGlvbicsIHRydWUpXHJcbiAgICAgICAgICAgIC50ZXh0KGluZm8udGl0bGUpO1xyXG4gICAgICAgIGFkZERhdGEodGFibGUsIGluZm8uaW5mb3JtYXRpb24pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICB0ci5hcHBlbmQoJ3RkJykudGV4dChrZXkucmVwbGFjZSgvXy9nLCAnICcpKTtcclxuICAgICAgICBhZGRWYWx1ZSh0ci5hcHBlbmQoJ3RkJyksIGluZm8pO1xyXG4gICAgfVxyXG59O1xyXG5cclxudmFyIGFkZERhdGEgPSBmdW5jdGlvbih0YWJsZSwgZGF0YSkge1xyXG4gICAgXy5lYWNoKGRhdGEsIGZ1bmN0aW9uKGluZm8sIGtleSkge1xyXG4gICAgICAgIGFkZERhdHVtKHRhYmxlLCBrZXksIGluZm8pO1xyXG4gICAgfSk7XHJcbn07XHJcblxyXG52YXIgRWxlbWVudCA9IGZ1bmN0aW9uKGNhdGVnb3J5LCBlbGVtLCBvcGVuKSB7XHJcbiAgICB2YXIgZWxlbWVudCA9IHRoaXM7XHJcbiAgICBlbGVtZW50LmlkID0gZWxlbS5pZDtcclxuICAgIGVsZW1lbnQuY2F0ZWdvcnkgPSBjYXRlZ29yeTtcclxuICAgIGVsZW1lbnQub3BlbiA9IG9wZW47XHJcbiAgICBlbGVtZW50LmhlYWRlciA9IHVuZGVmaW5lZDtcclxuICAgIGVsZW1lbnQudGFibGVDb250YWluZXIgPSB1bmRlZmluZWQ7XHJcbiAgICBlbGVtZW50LnRhYmxlID0gdW5kZWZpbmVkO1xyXG5cclxuICAgIGVsZW1lbnQudG9nZ2xlID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgaWYgKGVsZW1lbnQudGFibGVDb250YWluZXIuc3R5bGUoJ2Rpc3BsYXknKSA9PT0gJ25vbmUnKSB7XHJcbiAgICAgICAgICAgIGVsZW1lbnQudGFibGVDb250YWluZXIuc3R5bGUoJ2Rpc3BsYXknLCAnYmxvY2snKTtcclxuICAgICAgICAgICAgZWxlbWVudC5oZWFkZXIudGl0bGUuYXR0cignY2xhc3MnLCAndXBfcHBfZWxlbWVudC1uYW1lIHVwX3BmdHZfYXJyb3ctZG93bicpO1xyXG4gICAgICAgICAgICBlbGVtZW50Lm9wZW4gPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGVsZW1lbnQudGFibGVDb250YWluZXIuc3R5bGUoJ2Rpc3BsYXknLCAnbm9uZScpO1xyXG4gICAgICAgICAgICBlbGVtZW50LmhlYWRlci50aXRsZS5hdHRyKCdjbGFzcycsICd1cF9wcF9lbGVtZW50LW5hbWUgdXBfcGZ0dl9hcnJvdy1yaWdodCcpO1xyXG4gICAgICAgICAgICBlbGVtZW50Lm9wZW4gPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIHZhciBlbGVtQ29udGFpbmVyID0gZWxlbWVudC5jYXRlZ29yeS5wYWRDb250YWluZXIuYXBwZW5kKCdkaXYnKS5hdHRyKCdpZCcsICdwaW5uZWRfZWxlbV9pZF8nICsgZWxlbS5pZCk7XHJcblxyXG4gICAgZWxlbWVudC5maXJzdChlbGVtZW50LmNhdGVnb3J5LnRpdGxlLCBlbGVtQ29udGFpbmVyLCBfLmZpcnN0KGVsZW0uc2VjdGlvbnMpKTtcclxuICAgIGVsZW1lbnQudGFpbChlbGVtZW50LnRhYmxlLCBfLnRhaWwoZWxlbS5zZWN0aW9ucykpO1xyXG59O1xyXG5cclxuRWxlbWVudC5wcm90b3R5cGUuZmlyc3QgPSBmdW5jdGlvbihjYXRUaXRsZSwgY29udGFpbmVyLCBzZWN0aW9uKSB7XHJcbiAgICB2YXIgZWxlbWVudCA9IHRoaXM7XHJcbiAgICBlbGVtZW50LmhlYWRlciA9IGNvbnRhaW5lci5hcHBlbmQoJ2RpdicpLmNsYXNzZWQoJ3VwX3BwX2VsZW1lbnQtaGVhZGVyJywgdHJ1ZSk7XHJcbiAgICBlbGVtZW50LmhlYWRlci50aXRsZSA9IGVsZW1lbnQuaGVhZGVyLmFwcGVuZCgnYScpXHJcbiAgICAgICAgLmF0dHIoJ2NsYXNzJywgZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50Lm9wZW4gPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3VwX3BwX2VsZW1lbnQtbmFtZSB1cF9wZnR2X2Fycm93LXJpZ2h0JztcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAndXBfcHBfZWxlbWVudC1uYW1lIHVwX3BmdHZfYXJyb3ctZG93bic7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIC50ZXh0KHNlY3Rpb24udGl0bGUpXHJcbiAgICAgICAgLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICBlbGVtZW50LnRvZ2dsZSgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgZWxlbWVudC5oZWFkZXIuYXBwZW5kKCdzcGFuJylcclxuICAgICAgICAuY2xhc3NlZCgndXBfcHBfaWNvbkNvbnRhaW5lcicsIHRydWUpXHJcbiAgICAgICAgLnN0eWxlKCdmbG9hdCcsICdyaWdodCcpXHJcbiAgICAgICAgLmFwcGVuZCgnZGl2JylcclxuICAgICAgICAuYXR0cignY2xhc3MnLCAndXAtcHAtaWNvbi10cmFzaCB1cF9wcF9jbGlja2FibGUtaWNvbicpXHJcbiAgICAgICAgLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICBlbGVtZW50LmNhdGVnb3J5LmRlbGVnYXRlRWxlbWVudFJlbW92YWwoZWxlbWVudC5pZCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgZWxlbWVudC50YWJsZUNvbnRhaW5lciA9IGNvbnRhaW5lci5hcHBlbmQoJ2RpdicpO1xyXG4gICAgaWYgKGVsZW1lbnQub3BlbiA9PT0gZmFsc2UpIHtcclxuICAgICAgICBlbGVtZW50LnRhYmxlQ29udGFpbmVyLnN0eWxlKCdkaXNwbGF5JywgJ25vbmUnKTtcclxuICAgIH1cclxuICAgIGVsZW1lbnQudGFibGUgPSBlbGVtZW50LnRhYmxlQ29udGFpbmVyLmFwcGVuZCgndGFibGUnKS5hdHRyKCd3aWR0aCcsICcxMDAlJyk7XHJcbiAgICBhZGREYXRhKGVsZW1lbnQudGFibGUsIHNlY3Rpb24uaW5mb3JtYXRpb24pO1xyXG59O1xyXG5cclxuRWxlbWVudC5wcm90b3R5cGUudGFpbCA9IGZ1bmN0aW9uKGNvbnRhaW5lciwgc2VjdGlvbnMpIHtcclxuICAgIF8uZWFjaChzZWN0aW9ucywgZnVuY3Rpb24oc2VjdGlvbikge1xyXG4gICAgICAgIGNvbnRhaW5lci5hcHBlbmQoJ3RyJykuY2xhc3NlZCgndXBfcHBfZWxlbWVudC1zZWN0aW9uJywgdHJ1ZSlcclxuICAgICAgICAgICAgLmFwcGVuZCgndGQnKVxyXG4gICAgICAgICAgICAuYXR0cignY29sc3BhbicsIDIpXHJcbiAgICAgICAgICAgIC50ZXh0KHNlY3Rpb24udGl0bGUpO1xyXG5cclxuICAgICAgICBhZGREYXRhKGNvbnRhaW5lciwgc2VjdGlvbi5pbmZvcm1hdGlvbik7XHJcbiAgICB9KTtcclxufTtcclxuXHJcbkVsZW1lbnQucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uKGlkKSB7XHJcbiAgICB2YXIgY29udGFpbmVyID0gZDMuc2VsZWN0KCcjJyArICdwaW5uZWRfZWxlbV9pZF8nICsgaWQpO1xyXG4gICAgY29udGFpbmVyLnJlbW92ZSgpO1xyXG59O1xyXG5cclxudmFyIEVsZW1lbnRGYWN0b3J5ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBjcmVhdGVFbGVtZW50OiBmdW5jdGlvbihjYXRlZ29yeSwgZWxlbSwgb3Blbikge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IEVsZW1lbnQoY2F0ZWdvcnksIGVsZW0sIG9wZW4pO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVtb3ZlRWxlbWVudDogZnVuY3Rpb24oZWxlbWVudCkge1xyXG4gICAgICAgICAgICBlbGVtZW50LnJlbW92ZShlbGVtZW50LmlkKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG59KCk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IEVsZW1lbnRGYWN0b3J5OyIsIi8qanNsaW50IG5vZGU6IHRydWUgKi9cclxuLypqc2hpbnQgbGF4YnJlYWs6IHRydWUgKi9cclxuXCJ1c2Ugc3RyaWN0XCI7XHJcblxyXG52YXIgXyA9IHJlcXVpcmUoJ3VuZGVyc2NvcmUnKTtcclxudmFyIENhdGVnb3J5TW9kZWwgPSByZXF1aXJlKCcuL0NhdGVnb3J5TW9kZWwnKTtcclxuXHJcbnZhciBhZGRDYXRlZ29yeSA9IGZ1bmN0aW9uKHBpblBhZE1vZGVsLCBjYXRUaXRsZSwgb3JkZXJpbmcpIHtcclxuICAgIHJldHVybiBuZXcgQ2F0ZWdvcnlNb2RlbChjYXRUaXRsZSwgb3JkZXJpbmcpO1xyXG59O1xyXG5cclxudmFyIFBpblBhZE1vZGVsID0gZnVuY3Rpb24ob3JkZXJpbmcpIHtcclxuICAgIHZhciBwaW5QYWRNb2RlbCA9IHRoaXM7XHJcbiAgICBwaW5QYWRNb2RlbC5jYXRlZ29yaWVzID0gW107XHJcblxyXG4gICAgcGluUGFkTW9kZWwuYWRkRWxlbWVudCA9IGZ1bmN0aW9uKGVsZW1lbnQpIHtcclxuICAgICAgICB2YXIgY2F0ZWdvcnk7XHJcbiAgICAgICAgdmFyIGNhdEluZGV4ID0gLTE7XHJcbiAgICAgICAgdmFyIGVsZW0gPSBfLmZpbmQocGluUGFkTW9kZWwuY2F0ZWdvcmllcywgZnVuY3Rpb24oY2F0LCBjb3VudGVyKSB7XHJcbiAgICAgICAgICAgIGlmIChjYXQudGl0bGUgPT09IGVsZW1lbnQuY2F0ZWdvcnkpIHtcclxuICAgICAgICAgICAgICAgIGNhdGVnb3J5ID0gY2F0O1xyXG4gICAgICAgICAgICAgICAgY2F0SW5kZXggPSBjb3VudGVyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBfLmZpbmQoY2F0LmVsZW1lbnRzLCBmdW5jdGlvbihlbCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQuaWQgPT09IGVsLmlkXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmIChlbGVtKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7ZXJyb3I6ICdkdXBsaWNhdGlvbid9O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICghY2F0ZWdvcnkgfHwgKGNhdEluZGV4ID09PSAtMSkpIHtcclxuICAgICAgICAgICAgICAgIGNhdGVnb3J5ID0gYWRkQ2F0ZWdvcnkocGluUGFkTW9kZWwsIGVsZW1lbnQuY2F0ZWdvcnksIG9yZGVyaW5nKTtcclxuICAgICAgICAgICAgICAgIHBpblBhZE1vZGVsLmNhdGVnb3JpZXMucHVzaChjYXRlZ29yeSk7XHJcbiAgICAgICAgICAgICAgICBjYXRJbmRleCA9IHBpblBhZE1vZGVsLmNhdGVnb3JpZXMubGVuZ3RoIC0gMTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB2YXIgZWxJbmRleCA9IGNhdGVnb3J5LmFkZEVsZW1lbnQoZWxlbWVudCk7XHJcbiAgICAgICAgICAgIHJldHVybiB7Y2F0SW5kZXg6IGNhdEluZGV4LCBlbEluZGV4OiBlbEluZGV4fTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIHBpblBhZE1vZGVsLnJlbW92ZUVsZW1lbnQgPSBmdW5jdGlvbihlbElkKSB7XHJcbiAgICAgICAgdmFyIGNhdEluZGV4ID0gLTEsIGVsSW5kZXggPSAtMTtcclxuICAgICAgICBfLmZpbmQocGluUGFkTW9kZWwuY2F0ZWdvcmllcywgZnVuY3Rpb24oY2F0LCBjb3VudGVyKSB7XHJcbiAgICAgICAgICAgIHZhciBlbGVtZW50ID0gXy5maW5kKGNhdC5lbGVtZW50cywgZnVuY3Rpb24oZWwsIGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICBlbEluZGV4ID0gaW5kZXg7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZWwuaWQgPT09IGVsSWQ7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgY2F0SW5kZXggPSBjb3VudGVyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBjYXRJbmRleCAhPT0gLTE7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKChjYXRJbmRleCAhPT0gLTEpICYmIChlbEluZGV4ICE9PSAtMSkpIHtcclxuICAgICAgICAgICAgdmFyIHJlbW92ZWRGcm9tQ2F0ZWdvcnkgPSBwaW5QYWRNb2RlbC5jYXRlZ29yaWVzW2NhdEluZGV4XS50aXRsZTtcclxuICAgICAgICAgICAgdmFyIHJlbW92ZWRFbGVtZW50ID0gcGluUGFkTW9kZWwuY2F0ZWdvcmllc1tjYXRJbmRleF0uZWxlbWVudHNbZWxJbmRleF07XHJcbiAgICAgICAgICAgIHBpblBhZE1vZGVsLmNhdGVnb3JpZXNbY2F0SW5kZXhdLnJlbW92ZUVsZW1lbnQoZWxJbmRleCk7XHJcbiAgICAgICAgICAgIGlmIChwaW5QYWRNb2RlbC5jYXRlZ29yaWVzW2NhdEluZGV4XS5lbGVtZW50cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgIHBpblBhZE1vZGVsLmNhdGVnb3JpZXMuc3BsaWNlKGNhdEluZGV4LCAxKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4ge2NhdEluZGV4OiBjYXRJbmRleCwgZWxJbmRleDogZWxJbmRleCwgY2F0ZWdvcnk6IHJlbW92ZWRGcm9tQ2F0ZWdvcnksIGVsZW1lbnQ6IHJlbW92ZWRFbGVtZW50fTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHtlcnJvcjogJ3Vua25vd24nfVxyXG4gICAgfTtcclxuXHJcbiAgICBwaW5QYWRNb2RlbC5yZW1vdmVDYXRlZ29yeSA9IGZ1bmN0aW9uKGNhdFRpdGxlKSB7XHJcbiAgICAgICAgdmFyIGNhdEluZGV4ID0gLTE7XHJcbiAgICAgICAgdmFyIGNhdGVnb3J5ID0gXy5maW5kKHBpblBhZE1vZGVsLmNhdGVnb3JpZXMsIGZ1bmN0aW9uKGNhdCwgaW5kZXgpIHtcclxuICAgICAgICAgICAgY2F0SW5kZXggPSBpbmRleDtcclxuICAgICAgICAgICAgcmV0dXJuIGNhdC50aXRsZSA9PT0gY2F0VGl0bGU7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKGNhdGVnb3J5KSB7XHJcbiAgICAgICAgICAgIHBpblBhZE1vZGVsLmNhdGVnb3JpZXMuc3BsaWNlKGNhdEluZGV4LCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHtjYXRJbmRleDogY2F0SW5kZXh9O1xyXG4gICAgfTtcclxufTtcclxuXHJcbm1vZHVsZS5leHBvcnRzID0gUGluUGFkTW9kZWw7IiwiLypqc2xpbnQgbm9kZTogdHJ1ZSAqL1xyXG4vKmpzaGludCBsYXhicmVhazogdHJ1ZSAqL1xyXG5cInVzZSBzdHJpY3RcIiA7XHJcbi8qXHJcbiAqIGJpb2pzLXZpcy1waW5wYWRcclxuICogaHR0cHM6Ly9naXRodWIuY29tL2ViaS11bmlwcm90L2Jpb2pzLXZpcy1waW5wYWRcclxuICpcclxuICogQ29weXJpZ2h0IChjKSAyMDE0IGViaS11bmlwcm90XHJcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgMiBsaWNlbnNlLlxyXG4gKi9cclxuXHJcbi8qKlxyXG5AY2xhc3MgUGluUGFkVmlld2VyXHJcbiAqL1xyXG52YXIgZDMgPSByZXF1aXJlKCdkMycpO1xyXG52YXIgXyA9IHJlcXVpcmUoJ3VuZGVyc2NvcmUnKTtcclxudmFyIENhdGVnb3J5RmFjdG9yeSA9IHJlcXVpcmUoJy4vQ2F0ZWdvcnlGYWN0b3J5Jyk7XHJcblxyXG4vKipcclxuICogUHJpdmF0ZSBNZXRob2RzXHJcbiAqL1xyXG52YXIgZGVmYXVsdE9wdHMgPSB7XHJcbiAgICBoZWlnaHQ6ICc1MDBweCcsXHJcbiAgICB3aWR0aDogJzI1MHB4JyxcclxuICAgIGhpZ2hsaWdodENvbG9yOiAnZ3JlZW4nXHJcbn07XHJcbnZhciBpbml0ID0gZnVuY3Rpb24ocGluUGFkVmlld2VyLCB0b1Bpbikge1xyXG4gICAgdmFyIHBpblBhZFZpZXdlckNvbnRhaW5lciA9IGQzLnNlbGVjdChwaW5QYWRWaWV3ZXIub3B0aW9ucy5lbClcclxuICAgICAgLnRleHQoJycpXHJcbiAgICAgIC5hcHBlbmQoJ2RpdicpXHJcbiAgICAgIC5jbGFzc2VkKCd1cF9wcF9tYWluLWNvbnRhaW5lcicsIHRydWUpXHJcbiAgICAgIC5zdHlsZSgnd2lkdGgnLCBwaW5QYWRWaWV3ZXIub3B0aW9ucy53aWR0aCk7XHJcblxyXG4gICAgdmFyIG1haW5UaXRsZSA9IHBpblBhZFZpZXdlckNvbnRhaW5lci5hcHBlbmQoJ2RpdicpLmNsYXNzZWQoJ3VwX3BwX21haW5UaXRsZScsIHRydWUpO1xyXG4gICAgbWFpblRpdGxlLmFwcGVuZCgnZGl2JykuY2xhc3NlZCgndXBfcHBfaWNvbkNvbnRhaW5lcicsIHRydWUpXHJcbiAgICAgICAgLmFwcGVuZCgnZGl2JykuY2xhc3NlZCgndXAtcHAtaWNvbi1waW4nLCB0cnVlKS5jbGFzc2VkKCd1cF9wcF9pY29uJywgdHJ1ZSk7XHJcbiAgICBwaW5QYWRWaWV3ZXIub2Zmc2V0VG9wID0gbWFpblRpdGxlLm5vZGUoKS5vZmZzZXRIZWlnaHQgKyBtYWluVGl0bGUubm9kZSgpLm9mZnNldFRvcDtcclxuXHJcbiAgICBwaW5QYWRWaWV3ZXIucGFkQ29udGFpbmVyID0gcGluUGFkVmlld2VyQ29udGFpbmVyLmFwcGVuZCgnZGl2JylcclxuICAgICAgICAuY2xhc3NlZCgndXBfcHBfcGFkJywgdHJ1ZSlcclxuICAgICAgICAuc3R5bGUoJ2hlaWdodCcsIHBpblBhZFZpZXdlci5vcHRpb25zLmhlaWdodCk7XHJcblxyXG4gICAgaWYgKHBpblBhZFZpZXdlci5vcHRpb25zLnRvUGluKSB7XHJcbiAgICAgICAgcGluUGFkVmlld2VyLmFkZEVsZW1lbnQodG9QaW4pO1xyXG4gICAgfVxyXG59O1xyXG5cclxuLypcclxuICogUHVibGljIE1ldGhvZHNcclxuICovXHJcbnZhciBQaW5QYWRWaWV3ZXIgPSBmdW5jdGlvbihvcHRzLCB0b1BpbiwgcGluUGFkKXtcclxuICAgIHZhciBwaW5QYWRWaWV3ZXIgPSB0aGlzO1xyXG4gICAgcGluUGFkVmlld2VyLm9wdGlvbnMgPSBfLmV4dGVuZCh7fSwgZGVmYXVsdE9wdHMsIG9wdHMpO1xyXG4gICAgcGluUGFkVmlld2VyLnBpblBhZCA9IHBpblBhZDtcclxuICAgIHBpblBhZFZpZXdlci5vZmZzZXRUb3AgPSB1bmRlZmluZWQ7XHJcbiAgICBwaW5QYWRWaWV3ZXIuY2F0ZWdvcmllcyA9IFtdO1xyXG5cclxuICAgIGluaXQocGluUGFkVmlld2VyLCB0b1Bpbik7XHJcbn07XHJcblxyXG52YXIgYWRkQ2F0ZWdvcnkgPSBmdW5jdGlvbihwaW5QYWRWaWV3ZXIsIGNhdGVnb3J5KSB7XHJcbiAgICByZXR1cm4gQ2F0ZWdvcnlGYWN0b3J5LmNyZWF0ZUNhdGVnb3J5KHBpblBhZFZpZXdlciwgY2F0ZWdvcnkpO1xyXG59O1xyXG5cclxuUGluUGFkVmlld2VyLnByb3RvdHlwZS5hZGRFbGVtZW50ID0gZnVuY3Rpb24odG9QaW4sIGNhdEluZGV4LCBlbEluZGV4LCBhbGxFbGVtZW50cykge1xyXG4gICAgdmFyIHBpblBhZFZpZXdlciA9IHRoaXM7XHJcbiAgICAvL2FkZCBjYXRlZ29yeVxyXG4gICAgdmFyIGNhdGVnb3J5O1xyXG4gICAgaWYgKGNhdEluZGV4ID49IHBpblBhZFZpZXdlci5jYXRlZ29yaWVzLmxlbmd0aCkge1xyXG4gICAgICAgIHBpblBhZFZpZXdlci5jYXRlZ29yaWVzLnB1c2goYWRkQ2F0ZWdvcnkocGluUGFkVmlld2VyLCB0b1Bpbi5jYXRlZ29yeSkpO1xyXG4gICAgICAgIGNhdGVnb3J5ID0gXy5sYXN0KHBpblBhZFZpZXdlci5jYXRlZ29yaWVzKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY2F0ZWdvcnkgPSBwaW5QYWRWaWV3ZXIuY2F0ZWdvcmllc1tjYXRJbmRleF07XHJcbiAgICB9XHJcbiAgICBpZiAoIWNhdGVnb3J5Lm9wZW4pIHtcclxuICAgICAgICBjYXRlZ29yeS50b2dnbGUoKTtcclxuICAgIH1cclxuICAgIHZhciBuZXdFbGVtID0gQ2F0ZWdvcnlGYWN0b3J5LmNyZWF0ZUVsZW1lbnQoY2F0ZWdvcnksIHRvUGluLCBlbEluZGV4LCBhbGxFbGVtZW50cyk7XHJcbiAgICB2YXIgZWxlbVkgPSBuZXdFbGVtLmhlYWRlci5ub2RlKCkub2Zmc2V0VG9wO1xyXG4gICAgcGluUGFkVmlld2VyLnBhZENvbnRhaW5lci5ub2RlKCkuc2Nyb2xsVG9wID0gZWxlbVkgLSBwaW5QYWRWaWV3ZXIub2Zmc2V0VG9wO1xyXG4gICAgdmFyIGNvbG9yID0gbmV3RWxlbS5oZWFkZXIuc3R5bGUoJ2JhY2tncm91bmQtY29sb3InKTtcclxuICAgIG5ld0VsZW0uaGVhZGVyXHJcbiAgICAgICAgLnRyYW5zaXRpb24oKVxyXG4gICAgICAgIC5kdXJhdGlvbigxNTAwKVxyXG4gICAgICAgIC5zdHlsZVR3ZWVuKCdiYWNrZ3JvdW5kLWNvbG9yJywgZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBkMy5pbnRlcnBvbGF0ZShwaW5QYWRWaWV3ZXIub3B0aW9ucy5oaWdobGlnaHRDb2xvciwgY29sb3IpO1xyXG4gICAgICAgIH0pXHJcbiAgICA7XHJcbiAgICByZXR1cm4gbmV3RWxlbTtcclxufTtcclxuXHJcblBpblBhZFZpZXdlci5wcm90b3R5cGUucmVtb3ZlRWxlbWVudCA9IGZ1bmN0aW9uKGNhdEluZGV4LCBlbEluZGV4KSB7XHJcbiAgICB2YXIgcGluUGFkVmlld2VyID0gdGhpcztcclxuICAgIENhdGVnb3J5RmFjdG9yeS5yZW1vdmVFbGVtZW50KHBpblBhZFZpZXdlci5jYXRlZ29yaWVzW2NhdEluZGV4XSwgZWxJbmRleCk7XHJcbiAgICBpZiAocGluUGFkVmlld2VyLmNhdGVnb3JpZXNbY2F0SW5kZXhdLmVsZW1lbnRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIENhdGVnb3J5RmFjdG9yeS5yZW1vdmVDYXRlZ29yeShwaW5QYWRWaWV3ZXIuY2F0ZWdvcmllc1tjYXRJbmRleF0pO1xyXG4gICAgICAgIHBpblBhZFZpZXdlci5jYXRlZ29yaWVzLnNwbGljZShjYXRJbmRleCwgMSk7XHJcbiAgICB9XHJcbn07XHJcblxyXG5QaW5QYWRWaWV3ZXIucHJvdG90eXBlLmRlbGVnYXRlRWxlbWVudFJlbW92YWwgPSBmdW5jdGlvbihlbElkKSB7XHJcbiAgICB2YXIgcGluUGFkVmlld2VyID0gdGhpcztcclxuICAgIHBpblBhZFZpZXdlci5waW5QYWQucmVtb3ZlRWxlbWVudChlbElkKTtcclxufTtcclxuXHJcblBpblBhZFZpZXdlci5wcm90b3R5cGUucmVtb3ZlQ2F0ZWdvcnkgPSBmdW5jdGlvbihjYXRJbmRleCkge1xyXG4gICAgdmFyIHBpblBhZFZpZXdlciA9IHRoaXM7XHJcbiAgICBDYXRlZ29yeUZhY3RvcnkucmVtb3ZlQ2F0ZWdvcnkocGluUGFkVmlld2VyLmNhdGVnb3JpZXNbY2F0SW5kZXhdKTtcclxuICAgIHBpblBhZFZpZXdlci5jYXRlZ29yaWVzLnNwbGljZShjYXRJbmRleCwgMSk7XHJcbn07XHJcblxyXG5QaW5QYWRWaWV3ZXIucHJvdG90eXBlLmRlbGVnYXRlQ2F0ZWdvcnlSZW1vdmFsID0gZnVuY3Rpb24oY2F0VGl0bGUpIHtcclxuICAgIHZhciBwaW5QYWRWaWV3ZXIgPSB0aGlzO1xyXG4gICAgcGluUGFkVmlld2VyLnBpblBhZC5yZW1vdmVDYXRlZ29yeShjYXRUaXRsZSk7XHJcbn07XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IFBpblBhZFZpZXdlcjsiLCIvKmpzbGludCBub2RlOiB0cnVlICovXHJcbi8qanNoaW50IGxheGJyZWFrOiB0cnVlICovXHJcblwidXNlIHN0cmljdFwiO1xyXG5cclxudmFyIFBpblBhZFZpZXdlciA9IHJlcXVpcmUoJy4vUGluUGFkVmlld2VyJyk7XHJcbnZhciBQaW5QYWRNb2RlbCA9IHJlcXVpcmUoJy4vUGluUGFkTW9kZWwnKTtcclxuXHJcbnZhciBQaW5QYWQgPSBmdW5jdGlvbihvcHRzKSB7XHJcbiAgICB2YXIgcGluUGFkID0gdGhpcztcclxuICAgIHBpblBhZC5tb2RlbCA9IG5ldyBQaW5QYWRNb2RlbChvcHRzLm9yZGVyaW5nKTtcclxuICAgIHBpblBhZC52aWV3ZXIgPSBuZXcgUGluUGFkVmlld2VyKG9wdHMub3B0aW9ucywgb3B0cy50b1BpbiwgcGluUGFkKTtcclxuICAgIHBpblBhZC5kaXNwYXRjaGVyID0gZDMuZGlzcGF0Y2goXCJhZGRcIiwgXCJkdXBsaWNhdGlvblwiLCBcInJlbW92ZVwiLCBcInVua25vd25cIiwgXCJpbmNvbXBsZXRlXCIpO1xyXG5cclxuICAgIHBpblBhZC5hZGRFbGVtZW50ID0gZnVuY3Rpb24oZWxlbWVudCkge1xyXG4gICAgICAgIGlmIChlbGVtZW50LmNhdGVnb3J5ICYmIGVsZW1lbnQuaWQgJiYgZWxlbWVudC5zZWN0aW9ucyAmJiAoZWxlbWVudC5zZWN0aW9ucy5sZW5ndGggIT09IDApKSB7XHJcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBwaW5QYWQubW9kZWwuYWRkRWxlbWVudChlbGVtZW50KTtcclxuICAgICAgICAgICAgaWYgKHJlc3VsdC5lcnJvcikge1xyXG4gICAgICAgICAgICAgICAgcGluUGFkLmRpc3BhdGNoZXIuZHVwbGljYXRpb24oe2VsZW1lbnQ6IGVsZW1lbnR9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHBpblBhZC52aWV3ZXIuYWRkRWxlbWVudChlbGVtZW50LCByZXN1bHQuY2F0SW5kZXgsIHJlc3VsdC5lbEluZGV4LFxyXG4gICAgICAgICAgICAgICAgICAgIHBpblBhZC5tb2RlbC5jYXRlZ29yaWVzW3Jlc3VsdC5jYXRJbmRleF0uZWxlbWVudHMpO1xyXG4gICAgICAgICAgICAgICAgcGluUGFkLmRpc3BhdGNoZXIuYWRkKHtcclxuICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeTogZWxlbWVudC5jYXRlZ29yeSxcclxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiBlbGVtZW50XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHBpblBhZC5kaXNwYXRjaGVyLmluY29tcGxldGUoe2VsZW1lbnQ6IGVsZW1lbnR9KTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIHBpblBhZC5yZW1vdmVFbGVtZW50ID0gZnVuY3Rpb24oZWxJZCkge1xyXG4gICAgICAgIHZhciByZXN1bHQgPSBwaW5QYWQubW9kZWwucmVtb3ZlRWxlbWVudChlbElkKTtcclxuICAgICAgICBpZiAocmVzdWx0LmVycm9yKSB7XHJcbiAgICAgICAgICAgIHBpblBhZC5kaXNwYXRjaGVyLnVua25vd24oe2VsZW1lbnQ6IGVsSWR9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBwaW5QYWQudmlld2VyLnJlbW92ZUVsZW1lbnQocmVzdWx0LmNhdEluZGV4LCByZXN1bHQuZWxJbmRleCk7XHJcbiAgICAgICAgICAgIHBpblBhZC5kaXNwYXRjaGVyLnJlbW92ZSh7ZWxlbWVudDogcmVzdWx0LmVsZW1lbnR9KTtcclxuICAgICAgICAgICAgaWYgKChwaW5QYWQubW9kZWwuY2F0ZWdvcmllcy5sZW5ndGggPT09IDApIHx8IChwaW5QYWQubW9kZWwuY2F0ZWdvcmllcy5sZW5ndGggPT09IHJlc3VsdC5jYXRJbmRleCkpIHtcclxuICAgICAgICAgICAgICAgIHBpblBhZC5kaXNwYXRjaGVyLnJlbW92ZSh7Y2F0ZWdvcnk6IHJlc3VsdC5jYXRlZ29yeX0pO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHBpblBhZC5tb2RlbC5jYXRlZ29yaWVzW3Jlc3VsdC5jYXRJbmRleF0udGl0bGUgIT09IHJlc3VsdC5jYXRlZ29yeSkge1xyXG4gICAgICAgICAgICAgICAgcGluUGFkLmRpc3BhdGNoZXIucmVtb3ZlKHtjYXRlZ29yeTogcmVzdWx0LmNhdGVnb3J5fSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIHBpblBhZC5yZW1vdmVDYXRlZ29yeSA9IGZ1bmN0aW9uKGNhdFRpdGxlKSB7XHJcbiAgICAgICAgdmFyIHJlc3VsdCA9IHBpblBhZC5tb2RlbC5yZW1vdmVDYXRlZ29yeShjYXRUaXRsZSk7XHJcbiAgICAgICAgcGluUGFkLnZpZXdlci5yZW1vdmVDYXRlZ29yeShyZXN1bHQuY2F0SW5kZXgpO1xyXG4gICAgICAgIHBpblBhZC5kaXNwYXRjaGVyLnJlbW92ZSh7Y2F0ZWdvcnk6IGNhdFRpdGxlfSk7XHJcbiAgICB9O1xyXG59O1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBQaW5QYWQ7Il19 |
@@ -8,8 +8,7 @@ � �Y[s�6�+2wV%�#%͋T��I�ٝ�6��t_< ,B����������B�]�y�[��s?�9T�?{�X���RLX�� *94+2�L|_�[~gi�뉪I�E~k�e�k��v�,����X�r:-��^�ID�� �S�F�R�d�=O~VJ�8zO��z��"�<�|_��w�5�������)�<٤��,���O�����o>����o?EdS#�<C�RJ��塮W(���.�Т��Խ"^��YEf6.�n��ʱ*cq#�,�INړ�X��n^�_�[���K�Ex6_�TZ0�w+~}��X�����X����!�WlRi�7:2�TY��(%��E�T���EIBdK髟�Ȅ��n�T_a#�B��v�Z����#����3S#"�\,��SY2�]���$���ne��LK���BS.���p0.�S����V��}�.���j� |�6~d�D�;FA��^x�n7��?�o=% | ||
0Ͼҩs�*I� y��=�1�R��TRK�s��i�r��Owg^Ka��Un��v�8q��@�7��cy��ԽX?�ʪ�W�?-x�2G�<� +T/�lM+L��Cl�t28Ы]N�g���^���0�z'�_ȅ���{�Ϧ���x�y;u�L-qI?(��g�������|GG$��Cӹ��Rm��;�N�����L�*1����z�[��Ov+f���_%��`�ؓH�V>�Y����LK�G[��$Й- Eb�㇇�h��\r�i��7h�A �1!ֶ?#����e�pp��J��ڠ�=�Ƶ�z%���0#y��(꠹���o; � �.{�i�Z�?�w����������*�_�gf�(� | ||
sR����7TVhw��0،��f��A�"� 1����T%}Grq+�\=��f�"�9~K��[|:N��:Vpݢ�n�յht-���Z`����ޱ��)i�a|����s�ĉn�<P��L�����H7Ɨ�O䒷��w�J�قgSs�����KDv��2z;���T��{Y��c��A�ٌ+lgP, ����mP�{� | ||
c/��,�T� | ||
*����V��?���#�����@��[G�Ylo�ӟ$NHX;N��ߍ��{��u����� | ||
�V5fW�`Eˏ\�6;��v�A�*rt��V�I�i�Z��F�[��+4�z��6����N7WE &�����D���]V��M\*�&.@C>�`� | ||
r��ug/��e���>|y)���_Qio(�5<�*�=�� [&���(Y��jV��}K�9�=�|~P�Do�d�f'@jQq��|�Lm��Ε>=C���mS��L�� aA_��uR�#�����p̚�q-�����ŧ�<,>1�Շ>�������̤��:0�FHO��i�h��]e42����"���q\�6>,���� | ||
�L�L��{.��fO��܊���◾�|ki��]��=�qKf!u0�Ǒ��v��T[� W�,���Sl����`_��y�?��F^��5���֡q���e��e�� H� �2�����t~� �?;�o�Ȋ�|�I�nBҀ���A �e�ѡb#���������h���FfW{H7>4����e� C;�Z v8��{F��9�g�cz�R=��v�fC���R{8�W������W>��nF�kT�6N ��|�m�.��\λ�r̪��n?��֝�!B0Nm� | ||
s��{��%˷�l���0=�%��T�;& |