Skip to content

Instantly share code, notes, and snippets.

@dfeng
Created July 21, 2015 16:52
Show Gist options
  • Select an option

  • Save dfeng/195bc9f552774ecd5a48 to your computer and use it in GitHub Desktop.

Select an option

Save dfeng/195bc9f552774ecd5a48 to your computer and use it in GitHub Desktop.
This file has been truncated, but you can view the full file.
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="pandoc" />
<title>Background</title>
<script src="data:application/x-javascript;base64,LyohIGpRdWVyeSB2MS4xMS4wIHwgKGMpIDIwMDUsIDIwMTQgalF1ZXJ5IEZvdW5kYXRpb24sIEluYy4gfCBqcXVlcnkub3JnL2xpY2Vuc2UgKi8KIWZ1bmN0aW9uKGEsYil7Im9iamVjdCI9PXR5cGVvZiBtb2R1bGUmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9YS5kb2N1bWVudD9iKGEsITApOmZ1bmN0aW9uKGEpe2lmKCFhLmRvY3VtZW50KXRocm93IG5ldyBFcnJvcigialF1ZXJ5IHJlcXVpcmVzIGEgd2luZG93IHdpdGggYSBkb2N1bWVudCIpO3JldHVybiBiKGEpfTpiKGEpfSgidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6dGhpcyxmdW5jdGlvbihhLGIpe3ZhciBjPVtdLGQ9Yy5zbGljZSxlPWMuY29uY2F0LGY9Yy5wdXNoLGc9Yy5pbmRleE9mLGg9e30saT1oLnRvU3RyaW5nLGo9aC5oYXNPd25Qcm9wZXJ0eSxrPSIiLnRyaW0sbD17fSxtPSIxLjExLjAiLG49ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IG4uZm4uaW5pdChhLGIpfSxvPS9eW1xzXHVGRUZGXHhBMF0rfFtcc1x1RkVGRlx4QTBdKyQvZyxwPS9eLW1zLS8scT0vLShbXGRhLXpdKS9naSxyPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGIudG9VcHBlckNhc2UoKX07bi5mbj1uLnByb3RvdHlwZT17anF1ZXJ5Om0sY29uc3RydWN0b3I6bixzZWxlY3RvcjoiIixsZW5ndGg6MCx0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIGQuY2FsbCh0aGlzKX0sZ2V0OmZ1bmN0aW9uKGEpe3JldHVybiBudWxsIT1hPzA+YT90aGlzW2ErdGhpcy5sZW5ndGhdOnRoaXNbYV06ZC5jYWxsKHRoaXMpfSxwdXNoU3RhY2s6ZnVuY3Rpb24oYSl7dmFyIGI9bi5tZXJnZSh0aGlzLmNvbnN0cnVjdG9yKCksYSk7cmV0dXJuIGIucHJldk9iamVjdD10aGlzLGIuY29udGV4dD10aGlzLmNvbnRleHQsYn0sZWFjaDpmdW5jdGlvbihhLGIpe3JldHVybiBuLmVhY2godGhpcyxhLGIpfSxtYXA6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKG4ubWFwKHRoaXMsZnVuY3Rpb24oYixjKXtyZXR1cm4gYS5jYWxsKGIsYyxiKX0pKX0sc2xpY2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZC5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSxmaXJzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKDApfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoLTEpfSxlcTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLmxlbmd0aCxjPSthKygwPmE/YjowKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soYz49MCYmYj5jP1t0aGlzW2NdXTpbXSl9LGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnByZXZPYmplY3R8fHRoaXMuY29uc3RydWN0b3IobnVsbCl9LHB1c2g6Zixzb3J0OmMuc29ydCxzcGxpY2U6Yy5zcGxpY2V9LG4uZXh0ZW5kPW4uZm4uZXh0ZW5kPWZ1bmN0aW9uKCl7dmFyIGEsYixjLGQsZSxmLGc9YXJndW1lbnRzWzBdfHx7fSxoPTEsaT1hcmd1bWVudHMubGVuZ3RoLGo9ITE7Zm9yKCJib29sZWFuIj09dHlwZW9mIGcmJihqPWcsZz1hcmd1bWVudHNbaF18fHt9LGgrKyksIm9iamVjdCI9PXR5cGVvZiBnfHxuLmlzRnVuY3Rpb24oZyl8fChnPXt9KSxoPT09aSYmKGc9dGhpcyxoLS0pO2k+aDtoKyspaWYobnVsbCE9KGU9YXJndW1lbnRzW2hdKSlmb3IoZCBpbiBlKWE9Z1tkXSxjPWVbZF0sZyE9PWMmJihqJiZjJiYobi5pc1BsYWluT2JqZWN0KGMpfHwoYj1uLmlzQXJyYXkoYykpKT8oYj8oYj0hMSxmPWEmJm4uaXNBcnJheShhKT9hOltdKTpmPWEmJm4uaXNQbGFpbk9iamVjdChhKT9hOnt9LGdbZF09bi5leHRlbmQoaixmLGMpKTp2b2lkIDAhPT1jJiYoZ1tkXT1jKSk7cmV0dXJuIGd9LG4uZXh0ZW5kKHtleHBhbmRvOiJqUXVlcnkiKyhtK01hdGgucmFuZG9tKCkpLnJlcGxhY2UoL1xEL2csIiIpLGlzUmVhZHk6ITAsZXJyb3I6ZnVuY3Rpb24oYSl7dGhyb3cgbmV3IEVycm9yKGEpfSxub29wOmZ1bmN0aW9uKCl7fSxpc0Z1bmN0aW9uOmZ1bmN0aW9uKGEpe3JldHVybiJmdW5jdGlvbiI9PT1uLnR5cGUoYSl9LGlzQXJyYXk6QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24oYSl7cmV0dXJuImFycmF5Ij09PW4udHlwZShhKX0saXNXaW5kb3c6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPWEmJmE9PWEud2luZG93fSxpc051bWVyaWM6ZnVuY3Rpb24oYSl7cmV0dXJuIGEtcGFyc2VGbG9hdChhKT49MH0saXNFbXB0eU9iamVjdDpmdW5jdGlvbihhKXt2YXIgYjtmb3IoYiBpbiBhKXJldHVybiExO3JldHVybiEwfSxpc1BsYWluT2JqZWN0OmZ1bmN0aW9uKGEpe3ZhciBiO2lmKCFhfHwib2JqZWN0IiE9PW4udHlwZShhKXx8YS5ub2RlVHlwZXx8bi5pc1dpbmRvdyhhKSlyZXR1cm4hMTt0cnl7aWYoYS5jb25zdHJ1Y3RvciYmIWouY2FsbChhLCJjb25zdHJ1Y3RvciIpJiYhai5jYWxsKGEuY29uc3RydWN0b3IucHJvdG90eXBlLCJpc1Byb3RvdHlwZU9mIikpcmV0dXJuITF9Y2F0Y2goYyl7cmV0dXJuITF9aWYobC5vd25MYXN0KWZvcihiIGluIGEpcmV0dXJuIGouY2FsbChhLGIpO2ZvcihiIGluIGEpO3JldHVybiB2b2lkIDA9PT1ifHxqLmNhbGwoYSxiKX0sdHlwZTpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YT9hKyIiOiJvYmplY3QiPT10eXBlb2YgYXx8ImZ1bmN0aW9uIj09dHlwZW9mIGE/aFtpLmNhbGwoYSldfHwib2JqZWN0Ijp0eXBlb2YgYX0sZ2xvYmFsRXZhbDpmdW5jdGlvbihiKXtiJiZuLnRyaW0oYikmJihhLmV4ZWNTY3JpcHR8fGZ1bmN0aW9uKGIpe2EuZXZhbC5jYWxsKGEsYil9KShiKX0sY2FtZWxDYXNlOmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UocCwibXMtIikucmVwbGFjZShxLHIpfSxub2RlTmFtZTpmdW5jdGlvbihhLGIpe3JldHVybiBhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1iLnRvTG93ZXJDYXNlKCl9LGVhY2g6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGU9MCxmPWEubGVuZ3RoLGc9cyhhKTtpZihjKXtpZihnKXtmb3IoO2Y+ZTtlKyspaWYoZD1iLmFwcGx5KGFbZV0sYyksZD09PSExKWJyZWFrfWVsc2UgZm9yKGUgaW4gYSlpZihkPWIuYXBwbHkoYVtlXSxjKSxkPT09ITEpYnJlYWt9ZWxzZSBpZihnKXtmb3IoO2Y+ZTtlKyspaWYoZD1iLmNhbGwoYVtlXSxlLGFbZV0pLGQ9PT0hMSlicmVha31lbHNlIGZvcihlIGluIGEpaWYoZD1iLmNhbGwoYVtlXSxlLGFbZV0pLGQ9PT0hMSlicmVhaztyZXR1cm4gYX0sdHJpbTprJiYhay5jYWxsKCJcdWZlZmZceGEwIik/ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/IiI6ay5jYWxsKGEpfTpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YT8iIjooYSsiIikucmVwbGFjZShvLCIiKX0sbWFrZUFycmF5OmZ1bmN0aW9uKGEsYil7dmFyIGM9Ynx8W107cmV0dXJuIG51bGwhPWEmJihzKE9iamVjdChhKSk/bi5tZXJnZShjLCJzdHJpbmciPT10eXBlb2YgYT9bYV06YSk6Zi5jYWxsKGMsYSkpLGN9LGluQXJyYXk6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkO2lmKGIpe2lmKGcpcmV0dXJuIGcuY2FsbChiLGEsYyk7Zm9yKGQ9Yi5sZW5ndGgsYz1jPzA+Yz9NYXRoLm1heCgwLGQrYyk6YzowO2Q+YztjKyspaWYoYyBpbiBiJiZiW2NdPT09YSlyZXR1cm4gY31yZXR1cm4tMX0sbWVyZ2U6ZnVuY3Rpb24oYSxiKXt2YXIgYz0rYi5sZW5ndGgsZD0wLGU9YS5sZW5ndGg7d2hpbGUoYz5kKWFbZSsrXT1iW2QrK107aWYoYyE9PWMpd2hpbGUodm9pZCAwIT09YltkXSlhW2UrK109YltkKytdO3JldHVybiBhLmxlbmd0aD1lLGF9LGdyZXA6ZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZCxlPVtdLGY9MCxnPWEubGVuZ3RoLGg9IWM7Zz5mO2YrKylkPSFiKGFbZl0sZiksZCE9PWgmJmUucHVzaChhW2ZdKTtyZXR1cm4gZX0sbWFwOmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxmPTAsZz1hLmxlbmd0aCxoPXMoYSksaT1bXTtpZihoKWZvcig7Zz5mO2YrKylkPWIoYVtmXSxmLGMpLG51bGwhPWQmJmkucHVzaChkKTtlbHNlIGZvcihmIGluIGEpZD1iKGFbZl0sZixjKSxudWxsIT1kJiZpLnB1c2goZCk7cmV0dXJuIGUuYXBwbHkoW10saSl9LGd1aWQ6MSxwcm94eTpmdW5jdGlvbihhLGIpe3ZhciBjLGUsZjtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGImJihmPWFbYl0sYj1hLGE9Ziksbi5pc0Z1bmN0aW9uKGEpPyhjPWQuY2FsbChhcmd1bWVudHMsMiksZT1mdW5jdGlvbigpe3JldHVybiBhLmFwcGx5KGJ8fHRoaXMsYy5jb25jYXQoZC5jYWxsKGFyZ3VtZW50cykpKX0sZS5ndWlkPWEuZ3VpZD1hLmd1aWR8fG4uZ3VpZCsrLGUpOnZvaWQgMH0sbm93OmZ1bmN0aW9uKCl7cmV0dXJuK25ldyBEYXRlfSxzdXBwb3J0Omx9KSxuLmVhY2goIkJvb2xlYW4gTnVtYmVyIFN0cmluZyBGdW5jdGlvbiBBcnJheSBEYXRlIFJlZ0V4cCBPYmplY3QgRXJyb3IiLnNwbGl0KCIgIiksZnVuY3Rpb24oYSxiKXtoWyJbb2JqZWN0ICIrYisiXSJdPWIudG9Mb3dlckNhc2UoKX0pO2Z1bmN0aW9uIHMoYSl7dmFyIGI9YS5sZW5ndGgsYz1uLnR5cGUoYSk7cmV0dXJuImZ1bmN0aW9uIj09PWN8fG4uaXNXaW5kb3coYSk/ITE6MT09PWEubm9kZVR5cGUmJmI/ITA6ImFycmF5Ij09PWN8fDA9PT1ifHwibnVtYmVyIj09dHlwZW9mIGImJmI+MCYmYi0xIGluIGF9dmFyIHQ9ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwLHEscixzPSJzaXp6bGUiKy1uZXcgRGF0ZSx0PWEuZG9jdW1lbnQsdT0wLHY9MCx3PWViKCkseD1lYigpLHk9ZWIoKSx6PWZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9PT1iJiYoaj0hMCksMH0sQT0idW5kZWZpbmVkIixCPTE8PDMxLEM9e30uaGFzT3duUHJvcGVydHksRD1bXSxFPUQucG9wLEY9RC5wdXNoLEc9RC5wdXNoLEg9RC5zbGljZSxJPUQuaW5kZXhPZnx8ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTAsYz10aGlzLmxlbmd0aDtjPmI7YisrKWlmKHRoaXNbYl09PT1hKXJldHVybiBiO3JldHVybi0xfSxKPSJjaGVja2VkfHNlbGVjdGVkfGFzeW5jfGF1dG9mb2N1c3xhdXRvcGxheXxjb250cm9sc3xkZWZlcnxkaXNhYmxlZHxoaWRkZW58aXNtYXB8bG9vcHxtdWx0aXBsZXxvcGVufHJlYWRvbmx5fHJlcXVpcmVkfHNjb3BlZCIsSz0iW1xceDIwXFx0XFxyXFxuXFxmXSIsTD0iKD86XFxcXC58W1xcdy1dfFteXFx4MDAtXFx4YTBdKSsiLE09TC5yZXBsYWNlKCJ3IiwidyMiKSxOPSJcXFsiK0srIiooIitMKyIpIitLKyIqKD86KFsqXiR8IX5dPz0pIitLKyIqKD86KFsnXCJdKSgoPzpcXFxcLnxbXlxcXFxdKSo/KVxcM3woIitNKyIpfCl8KSIrSysiKlxcXSIsTz0iOigiK0wrIikoPzpcXCgoKFsnXCJdKSgoPzpcXFxcLnxbXlxcXFxdKSo/KVxcM3woKD86XFxcXC58W15cXFxcKClbXFxdXXwiK04ucmVwbGFjZSgzLDgpKyIpKil8LiopXFwpfCkiLFA9bmV3IFJlZ0V4cCgiXiIrSysiK3woKD86XnxbXlxcXFxdKSg/OlxcXFwuKSopIitLKyIrJCIsImciKSxRPW5ldyBSZWdFeHAoIl4iK0srIiosIitLKyIqIiksUj1uZXcgUmVnRXhwKCJeIitLKyIqKFs+K35dfCIrSysiKSIrSysiKiIpLFM9bmV3IFJlZ0V4cCgiPSIrSysiKihbXlxcXSdcIl0qPykiK0srIipcXF0iLCJnIiksVD1uZXcgUmVnRXhwKE8pLFU9bmV3IFJlZ0V4cCgiXiIrTSsiJCIpLFY9e0lEOm5ldyBSZWdFeHAoIl4jKCIrTCsiKSIpLENMQVNTOm5ldyBSZWdFeHAoIl5cXC4oIitMKyIpIiksVEFHOm5ldyBSZWdFeHAoIl4oIitMLnJlcGxhY2UoInciLCJ3KiIpKyIpIiksQVRUUjpuZXcgUmVnRXhwKCJeIitOKSxQU0VVRE86bmV3IFJlZ0V4cCgiXiIrTyksQ0hJTEQ6bmV3IFJlZ0V4cCgiXjoob25seXxmaXJzdHxsYXN0fG50aHxudGgtbGFzdCktKGNoaWxkfG9mLXR5cGUpKD86XFwoIitLKyIqKGV2ZW58b2RkfCgoWystXXwpKFxcZCopbnwpIitLKyIqKD86KFsrLV18KSIrSysiKihcXGQrKXwpKSIrSysiKlxcKXwpIiwiaSIpLGJvb2w6bmV3IFJlZ0V4cCgiXig/OiIrSisiKSQiLCJpIiksbmVlZHNDb250ZXh0Om5ldyBSZWdFeHAoIl4iK0srIipbPit+XXw6KGV2ZW58b2RkfGVxfGd0fGx0fG50aHxmaXJzdHxsYXN0KSg/OlxcKCIrSysiKigoPzotXFxkKT9cXGQqKSIrSysiKlxcKXwpKD89W14tXXwkKSIsImkiKX0sVz0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLFg9L15oXGQkL2ksWT0vXltee10rXHtccypcW25hdGl2ZSBcdy8sWj0vXig/OiMoW1x3LV0rKXwoXHcrKXxcLihbXHctXSspKSQvLCQ9L1srfl0vLF89Lyd8XFwvZyxhYj1uZXcgUmVnRXhwKCJcXFxcKFtcXGRhLWZdezEsNn0iK0srIj98KCIrSysiKXwuKSIsImlnIiksYmI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPSIweCIrYi02NTUzNjtyZXR1cm4gZCE9PWR8fGM/YjowPmQ/U3RyaW5nLmZyb21DaGFyQ29kZShkKzY1NTM2KTpTdHJpbmcuZnJvbUNoYXJDb2RlKGQ+PjEwfDU1Mjk2LDEwMjMmZHw1NjMyMCl9O3RyeXtHLmFwcGx5KEQ9SC5jYWxsKHQuY2hpbGROb2RlcyksdC5jaGlsZE5vZGVzKSxEW3QuY2hpbGROb2Rlcy5sZW5ndGhdLm5vZGVUeXBlfWNhdGNoKGNiKXtHPXthcHBseTpELmxlbmd0aD9mdW5jdGlvbihhLGIpe0YuYXBwbHkoYSxILmNhbGwoYikpfTpmdW5jdGlvbihhLGIpe3ZhciBjPWEubGVuZ3RoLGQ9MDt3aGlsZShhW2MrK109YltkKytdKTthLmxlbmd0aD1jLTF9fX1mdW5jdGlvbiBkYihhLGIsZCxlKXt2YXIgZixnLGgsaSxqLG0scCxxLHUsdjtpZigoYj9iLm93bmVyRG9jdW1lbnR8fGI6dCkhPT1sJiZrKGIpLGI9Ynx8bCxkPWR8fFtdLCFhfHwic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIGQ7aWYoMSE9PShpPWIubm9kZVR5cGUpJiY5IT09aSlyZXR1cm5bXTtpZihuJiYhZSl7aWYoZj1aLmV4ZWMoYSkpaWYoaD1mWzFdKXtpZig5PT09aSl7aWYoZz1iLmdldEVsZW1lbnRCeUlkKGgpLCFnfHwhZy5wYXJlbnROb2RlKXJldHVybiBkO2lmKGcuaWQ9PT1oKXJldHVybiBkLnB1c2goZyksZH1lbHNlIGlmKGIub3duZXJEb2N1bWVudCYmKGc9Yi5vd25lckRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGgpKSYmcihiLGcpJiZnLmlkPT09aClyZXR1cm4gZC5wdXNoKGcpLGR9ZWxzZXtpZihmWzJdKXJldHVybiBHLmFwcGx5KGQsYi5nZXRFbGVtZW50c0J5VGFnTmFtZShhKSksZDtpZigoaD1mWzNdKSYmYy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lJiZiLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpcmV0dXJuIEcuYXBwbHkoZCxiLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoaCkpLGR9aWYoYy5xc2EmJighb3x8IW8udGVzdChhKSkpe2lmKHE9cD1zLHU9Yix2PTk9PT1pJiZhLDE9PT1pJiYib2JqZWN0IiE9PWIubm9kZU5hbWUudG9Mb3dlckNhc2UoKSl7bT1vYihhKSwocD1iLmdldEF0dHJpYnV0ZSgiaWQiKSk/cT1wLnJlcGxhY2UoXywiXFwkJiIpOmIuc2V0QXR0cmlidXRlKCJpZCIscSkscT0iW2lkPSciK3ErIiddICIsaj1tLmxlbmd0aDt3aGlsZShqLS0pbVtqXT1xK3BiKG1bal0pO3U9JC50ZXN0KGEpJiZtYihiLnBhcmVudE5vZGUpfHxiLHY9bS5qb2luKCIsIil9aWYodil0cnl7cmV0dXJuIEcuYXBwbHkoZCx1LnF1ZXJ5U2VsZWN0b3JBbGwodikpLGR9Y2F0Y2godyl7fWZpbmFsbHl7cHx8Yi5yZW1vdmVBdHRyaWJ1dGUoImlkIil9fX1yZXR1cm4geGIoYS5yZXBsYWNlKFAsIiQxIiksYixkLGUpfWZ1bmN0aW9uIGViKCl7dmFyIGE9W107ZnVuY3Rpb24gYihjLGUpe3JldHVybiBhLnB1c2goYysiICIpPmQuY2FjaGVMZW5ndGgmJmRlbGV0ZSBiW2Euc2hpZnQoKV0sYltjKyIgIl09ZX1yZXR1cm4gYn1mdW5jdGlvbiBmYihhKXtyZXR1cm4gYVtzXT0hMCxhfWZ1bmN0aW9uIGdiKGEpe3ZhciBiPWwuY3JlYXRlRWxlbWVudCgiZGl2Iik7dHJ5e3JldHVybiEhYShiKX1jYXRjaChjKXtyZXR1cm4hMX1maW5hbGx5e2IucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGIpLGI9bnVsbH19ZnVuY3Rpb24gaGIoYSxiKXt2YXIgYz1hLnNwbGl0KCJ8IiksZT1hLmxlbmd0aDt3aGlsZShlLS0pZC5hdHRySGFuZGxlW2NbZV1dPWJ9ZnVuY3Rpb24gaWIoYSxiKXt2YXIgYz1iJiZhLGQ9YyYmMT09PWEubm9kZVR5cGUmJjE9PT1iLm5vZGVUeXBlJiYofmIuc291cmNlSW5kZXh8fEIpLSh+YS5zb3VyY2VJbmRleHx8Qik7aWYoZClyZXR1cm4gZDtpZihjKXdoaWxlKGM9Yy5uZXh0U2libGluZylpZihjPT09YilyZXR1cm4tMTtyZXR1cm4gYT8xOi0xfWZ1bmN0aW9uIGpiKGEpe3JldHVybiBmdW5jdGlvbihiKXt2YXIgYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PWMmJmIudHlwZT09PWF9fWZ1bmN0aW9uIGtiKGEpe3JldHVybiBmdW5jdGlvbihiKXt2YXIgYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuKCJpbnB1dCI9PT1jfHwiYnV0dG9uIj09PWMpJiZiLnR5cGU9PT1hfX1mdW5jdGlvbiBsYihhKXtyZXR1cm4gZmIoZnVuY3Rpb24oYil7cmV0dXJuIGI9K2IsZmIoZnVuY3Rpb24oYyxkKXt2YXIgZSxmPWEoW10sYy5sZW5ndGgsYiksZz1mLmxlbmd0aDt3aGlsZShnLS0pY1tlPWZbZ11dJiYoY1tlXT0hKGRbZV09Y1tlXSkpfSl9KX1mdW5jdGlvbiBtYihhKXtyZXR1cm4gYSYmdHlwZW9mIGEuZ2V0RWxlbWVudHNCeVRhZ05hbWUhPT1BJiZhfWM9ZGIuc3VwcG9ydD17fSxmPWRiLmlzWE1MPWZ1bmN0aW9uKGEpe3ZhciBiPWEmJihhLm93bmVyRG9jdW1lbnR8fGEpLmRvY3VtZW50RWxlbWVudDtyZXR1cm4gYj8iSFRNTCIhPT1iLm5vZGVOYW1lOiExfSxrPWRiLnNldERvY3VtZW50PWZ1bmN0aW9uKGEpe3ZhciBiLGU9YT9hLm93bmVyRG9jdW1lbnR8fGE6dCxnPWUuZGVmYXVsdFZpZXc7cmV0dXJuIGUhPT1sJiY5PT09ZS5ub2RlVHlwZSYmZS5kb2N1bWVudEVsZW1lbnQ/KGw9ZSxtPWUuZG9jdW1lbnRFbGVtZW50LG49IWYoZSksZyYmZyE9PWcudG9wJiYoZy5hZGRFdmVudExpc3RlbmVyP2cuYWRkRXZlbnRMaXN0ZW5lcigidW5sb2FkIixmdW5jdGlvbigpe2soKX0sITEpOmcuYXR0YWNoRXZlbnQmJmcuYXR0YWNoRXZlbnQoIm9udW5sb2FkIixmdW5jdGlvbigpe2soKX0pKSxjLmF0dHJpYnV0ZXM9Z2IoZnVuY3Rpb24oYSl7cmV0dXJuIGEuY2xhc3NOYW1lPSJpIiwhYS5nZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIpfSksYy5nZXRFbGVtZW50c0J5VGFnTmFtZT1nYihmdW5jdGlvbihhKXtyZXR1cm4gYS5hcHBlbmRDaGlsZChlLmNyZWF0ZUNvbW1lbnQoIiIpKSwhYS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aH0pLGMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZT1ZLnRlc3QoZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKSYmZ2IoZnVuY3Rpb24oYSl7cmV0dXJuIGEuaW5uZXJIVE1MPSI8ZGl2IGNsYXNzPSdhJz48L2Rpdj48ZGl2IGNsYXNzPSdhIGknPjwvZGl2PiIsYS5maXJzdENoaWxkLmNsYXNzTmFtZT0iaSIsMj09PWEuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiaSIpLmxlbmd0aH0pLGMuZ2V0QnlJZD1nYihmdW5jdGlvbihhKXtyZXR1cm4gbS5hcHBlbmRDaGlsZChhKS5pZD1zLCFlLmdldEVsZW1lbnRzQnlOYW1lfHwhZS5nZXRFbGVtZW50c0J5TmFtZShzKS5sZW5ndGh9KSxjLmdldEJ5SWQ/KGQuZmluZC5JRD1mdW5jdGlvbihhLGIpe2lmKHR5cGVvZiBiLmdldEVsZW1lbnRCeUlkIT09QSYmbil7dmFyIGM9Yi5nZXRFbGVtZW50QnlJZChhKTtyZXR1cm4gYyYmYy5wYXJlbnROb2RlP1tjXTpbXX19LGQuZmlsdGVyLklEPWZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShhYixiYik7cmV0dXJuIGZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZSgiaWQiKT09PWJ9fSk6KGRlbGV0ZSBkLmZpbmQuSUQsZC5maWx0ZXIuSUQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5yZXBsYWNlKGFiLGJiKTtyZXR1cm4gZnVuY3Rpb24oYSl7dmFyIGM9dHlwZW9mIGEuZ2V0QXR0cmlidXRlTm9kZSE9PUEmJmEuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKTtyZXR1cm4gYyYmYy52YWx1ZT09PWJ9fSksZC5maW5kLlRBRz1jLmdldEVsZW1lbnRzQnlUYWdOYW1lP2Z1bmN0aW9uKGEsYil7cmV0dXJuIHR5cGVvZiBiLmdldEVsZW1lbnRzQnlUYWdOYW1lIT09QT9iLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpOnZvaWQgMH06ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPVtdLGU9MCxmPWIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYSk7aWYoIioiPT09YSl7d2hpbGUoYz1mW2UrK10pMT09PWMubm9kZVR5cGUmJmQucHVzaChjKTtyZXR1cm4gZH1yZXR1cm4gZn0sZC5maW5kLkNMQVNTPWMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmZnVuY3Rpb24oYSxiKXtyZXR1cm4gdHlwZW9mIGIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSE9PUEmJm4/Yi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGEpOnZvaWQgMH0scD1bXSxvPVtdLChjLnFzYT1ZLnRlc3QoZS5xdWVyeVNlbGVjdG9yQWxsKSkmJihnYihmdW5jdGlvbihhKXthLmlubmVySFRNTD0iPHNlbGVjdCB0PScnPjxvcHRpb24gc2VsZWN0ZWQ9Jyc+PC9vcHRpb24+PC9zZWxlY3Q+IixhLnF1ZXJ5U2VsZWN0b3JBbGwoIlt0Xj0nJ10iKS5sZW5ndGgmJm8ucHVzaCgiWypeJF09IitLKyIqKD86Jyd8XCJcIikiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIltzZWxlY3RlZF0iKS5sZW5ndGh8fG8ucHVzaCgiXFxbIitLKyIqKD86dmFsdWV8IitKKyIpIiksYS5xdWVyeVNlbGVjdG9yQWxsKCI6Y2hlY2tlZCIpLmxlbmd0aHx8by5wdXNoKCI6Y2hlY2tlZCIpfSksZ2IoZnVuY3Rpb24oYSl7dmFyIGI9ZS5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO2Iuc2V0QXR0cmlidXRlKCJ0eXBlIiwiaGlkZGVuIiksYS5hcHBlbmRDaGlsZChiKS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCJEIiksYS5xdWVyeVNlbGVjdG9yQWxsKCJbbmFtZT1kXSIpLmxlbmd0aCYmby5wdXNoKCJuYW1lIitLKyIqWypeJHwhfl0/PSIpLGEucXVlcnlTZWxlY3RvckFsbCgiOmVuYWJsZWQiKS5sZW5ndGh8fG8ucHVzaCgiOmVuYWJsZWQiLCI6ZGlzYWJsZWQiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIiosOngiKSxvLnB1c2goIiwuKjoiKX0pKSwoYy5tYXRjaGVzU2VsZWN0b3I9WS50ZXN0KHE9bS53ZWJraXRNYXRjaGVzU2VsZWN0b3J8fG0ubW96TWF0Y2hlc1NlbGVjdG9yfHxtLm9NYXRjaGVzU2VsZWN0b3J8fG0ubXNNYXRjaGVzU2VsZWN0b3IpKSYmZ2IoZnVuY3Rpb24oYSl7Yy5kaXNjb25uZWN0ZWRNYXRjaD1xLmNhbGwoYSwiZGl2IikscS5jYWxsKGEsIltzIT0nJ106eCIpLHAucHVzaCgiIT0iLE8pfSksbz1vLmxlbmd0aCYmbmV3IFJlZ0V4cChvLmpvaW4oInwiKSkscD1wLmxlbmd0aCYmbmV3IFJlZ0V4cChwLmpvaW4oInwiKSksYj1ZLnRlc3QobS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbikscj1ifHxZLnRlc3QobS5jb250YWlucyk/ZnVuY3Rpb24oYSxiKXt2YXIgYz05PT09YS5ub2RlVHlwZT9hLmRvY3VtZW50RWxlbWVudDphLGQ9YiYmYi5wYXJlbnROb2RlO3JldHVybiBhPT09ZHx8ISghZHx8MSE9PWQubm9kZVR5cGV8fCEoYy5jb250YWlucz9jLmNvbnRhaW5zKGQpOmEuY29tcGFyZURvY3VtZW50UG9zaXRpb24mJjE2JmEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oZCkpKX06ZnVuY3Rpb24oYSxiKXtpZihiKXdoaWxlKGI9Yi5wYXJlbnROb2RlKWlmKGI9PT1hKXJldHVybiEwO3JldHVybiExfSx6PWI/ZnVuY3Rpb24oYSxiKXtpZihhPT09YilyZXR1cm4gaj0hMCwwO3ZhciBkPSFhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uLSFiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uO3JldHVybiBkP2Q6KGQ9KGEub3duZXJEb2N1bWVudHx8YSk9PT0oYi5vd25lckRvY3VtZW50fHxiKT9hLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGIpOjEsMSZkfHwhYy5zb3J0RGV0YWNoZWQmJmIuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYSk9PT1kP2E9PT1lfHxhLm93bmVyRG9jdW1lbnQ9PT10JiZyKHQsYSk/LTE6Yj09PWV8fGIub3duZXJEb2N1bWVudD09PXQmJnIodCxiKT8xOmk/SS5jYWxsKGksYSktSS5jYWxsKGksYik6MDo0JmQ/LTE6MSl9OmZ1bmN0aW9uKGEsYil7aWYoYT09PWIpcmV0dXJuIGo9ITAsMDt2YXIgYyxkPTAsZj1hLnBhcmVudE5vZGUsZz1iLnBhcmVudE5vZGUsaD1bYV0saz1bYl07aWYoIWZ8fCFnKXJldHVybiBhPT09ZT8tMTpiPT09ZT8xOmY/LTE6Zz8xOmk/SS5jYWxsKGksYSktSS5jYWxsKGksYik6MDtpZihmPT09ZylyZXR1cm4gaWIoYSxiKTtjPWE7d2hpbGUoYz1jLnBhcmVudE5vZGUpaC51bnNoaWZ0KGMpO2M9Yjt3aGlsZShjPWMucGFyZW50Tm9kZSlrLnVuc2hpZnQoYyk7d2hpbGUoaFtkXT09PWtbZF0pZCsrO3JldHVybiBkP2liKGhbZF0sa1tkXSk6aFtkXT09PXQ/LTE6a1tkXT09PXQ/MTowfSxlKTpsfSxkYi5tYXRjaGVzPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGRiKGEsbnVsbCxudWxsLGIpfSxkYi5tYXRjaGVzU2VsZWN0b3I9ZnVuY3Rpb24oYSxiKXtpZigoYS5vd25lckRvY3VtZW50fHxhKSE9PWwmJmsoYSksYj1iLnJlcGxhY2UoUywiPSckMSddIiksISghYy5tYXRjaGVzU2VsZWN0b3J8fCFufHxwJiZwLnRlc3QoYil8fG8mJm8udGVzdChiKSkpdHJ5e3ZhciBkPXEuY2FsbChhLGIpO2lmKGR8fGMuZGlzY29ubmVjdGVkTWF0Y2h8fGEuZG9jdW1lbnQmJjExIT09YS5kb2N1bWVudC5ub2RlVHlwZSlyZXR1cm4gZH1jYXRjaChlKXt9cmV0dXJuIGRiKGIsbCxudWxsLFthXSkubGVuZ3RoPjB9LGRiLmNvbnRhaW5zPWZ1bmN0aW9uKGEsYil7cmV0dXJuKGEub3duZXJEb2N1bWVudHx8YSkhPT1sJiZrKGEpLHIoYSxiKX0sZGIuYXR0cj1mdW5jdGlvbihhLGIpeyhhLm93bmVyRG9jdW1lbnR8fGEpIT09bCYmayhhKTt2YXIgZT1kLmF0dHJIYW5kbGVbYi50b0xvd2VyQ2FzZSgpXSxmPWUmJkMuY2FsbChkLmF0dHJIYW5kbGUsYi50b0xvd2VyQ2FzZSgpKT9lKGEsYiwhbik6dm9pZCAwO3JldHVybiB2b2lkIDAhPT1mP2Y6Yy5hdHRyaWJ1dGVzfHwhbj9hLmdldEF0dHJpYnV0ZShiKTooZj1hLmdldEF0dHJpYnV0ZU5vZGUoYikpJiZmLnNwZWNpZmllZD9mLnZhbHVlOm51bGx9LGRiLmVycm9yPWZ1bmN0aW9uKGEpe3Rocm93IG5ldyBFcnJvcigiU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIithKX0sZGIudW5pcXVlU29ydD1mdW5jdGlvbihhKXt2YXIgYixkPVtdLGU9MCxmPTA7aWYoaj0hYy5kZXRlY3REdXBsaWNhdGVzLGk9IWMuc29ydFN0YWJsZSYmYS5zbGljZSgwKSxhLnNvcnQoeiksail7d2hpbGUoYj1hW2YrK10pYj09PWFbZl0mJihlPWQucHVzaChmKSk7d2hpbGUoZS0tKWEuc3BsaWNlKGRbZV0sMSl9cmV0dXJuIGk9bnVsbCxhfSxlPWRiLmdldFRleHQ9ZnVuY3Rpb24oYSl7dmFyIGIsYz0iIixkPTAsZj1hLm5vZGVUeXBlO2lmKGYpe2lmKDE9PT1mfHw5PT09Znx8MTE9PT1mKXtpZigic3RyaW5nIj09dHlwZW9mIGEudGV4dENvbnRlbnQpcmV0dXJuIGEudGV4dENvbnRlbnQ7Zm9yKGE9YS5maXJzdENoaWxkO2E7YT1hLm5leHRTaWJsaW5nKWMrPWUoYSl9ZWxzZSBpZigzPT09Znx8ND09PWYpcmV0dXJuIGEubm9kZVZhbHVlfWVsc2Ugd2hpbGUoYj1hW2QrK10pYys9ZShiKTtyZXR1cm4gY30sZD1kYi5zZWxlY3RvcnM9e2NhY2hlTGVuZ3RoOjUwLGNyZWF0ZVBzZXVkbzpmYixtYXRjaDpWLGF0dHJIYW5kbGU6e30sZmluZDp7fSxyZWxhdGl2ZTp7Ij4iOntkaXI6InBhcmVudE5vZGUiLGZpcnN0OiEwfSwiICI6e2RpcjoicGFyZW50Tm9kZSJ9LCIrIjp7ZGlyOiJwcmV2aW91c1NpYmxpbmciLGZpcnN0OiEwfSwifiI6e2RpcjoicHJldmlvdXNTaWJsaW5nIn19LHByZUZpbHRlcjp7QVRUUjpmdW5jdGlvbihhKXtyZXR1cm4gYVsxXT1hWzFdLnJlcGxhY2UoYWIsYmIpLGFbM109KGFbNF18fGFbNV18fCIiKS5yZXBsYWNlKGFiLGJiKSwifj0iPT09YVsyXSYmKGFbM109IiAiK2FbM10rIiAiKSxhLnNsaWNlKDAsNCl9LENISUxEOmZ1bmN0aW9uKGEpe3JldHVybiBhWzFdPWFbMV0udG9Mb3dlckNhc2UoKSwibnRoIj09PWFbMV0uc2xpY2UoMCwzKT8oYVszXXx8ZGIuZXJyb3IoYVswXSksYVs0XT0rKGFbNF0/YVs1XSsoYVs2XXx8MSk6MiooImV2ZW4iPT09YVszXXx8Im9kZCI9PT1hWzNdKSksYVs1XT0rKGFbN10rYVs4XXx8Im9kZCI9PT1hWzNdKSk6YVszXSYmZGIuZXJyb3IoYVswXSksYX0sUFNFVURPOmZ1bmN0aW9uKGEpe3ZhciBiLGM9IWFbNV0mJmFbMl07cmV0dXJuIFYuQ0hJTEQudGVzdChhWzBdKT9udWxsOihhWzNdJiZ2b2lkIDAhPT1hWzRdP2FbMl09YVs0XTpjJiZULnRlc3QoYykmJihiPW9iKGMsITApKSYmKGI9Yy5pbmRleE9mKCIpIixjLmxlbmd0aC1iKS1jLmxlbmd0aCkmJihhWzBdPWFbMF0uc2xpY2UoMCxiKSxhWzJdPWMuc2xpY2UoMCxiKSksYS5zbGljZSgwLDMpKX19LGZpbHRlcjp7VEFHOmZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShhYixiYikudG9Mb3dlckNhc2UoKTtyZXR1cm4iKiI9PT1hP2Z1bmN0aW9uKCl7cmV0dXJuITB9OmZ1bmN0aW9uKGEpe3JldHVybiBhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1ifX0sQ0xBU1M6ZnVuY3Rpb24oYSl7dmFyIGI9d1thKyIgIl07cmV0dXJuIGJ8fChiPW5ldyBSZWdFeHAoIihefCIrSysiKSIrYSsiKCIrSysifCQpIikpJiZ3KGEsZnVuY3Rpb24oYSl7cmV0dXJuIGIudGVzdCgic3RyaW5nIj09dHlwZW9mIGEuY2xhc3NOYW1lJiZhLmNsYXNzTmFtZXx8dHlwZW9mIGEuZ2V0QXR0cmlidXRlIT09QSYmYS5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiKX0pfSxBVFRSOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZnVuY3Rpb24oZCl7dmFyIGU9ZGIuYXR0cihkLGEpO3JldHVybiBudWxsPT1lPyIhPSI9PT1iOmI/KGUrPSIiLCI9Ij09PWI/ZT09PWM6IiE9Ij09PWI/ZSE9PWM6Il49Ij09PWI/YyYmMD09PWUuaW5kZXhPZihjKToiKj0iPT09Yj9jJiZlLmluZGV4T2YoYyk+LTE6IiQ9Ij09PWI/YyYmZS5zbGljZSgtYy5sZW5ndGgpPT09Yzoifj0iPT09Yj8oIiAiK2UrIiAiKS5pbmRleE9mKGMpPi0xOiJ8PSI9PT1iP2U9PT1jfHxlLnNsaWNlKDAsYy5sZW5ndGgrMSk9PT1jKyItIjohMSk6ITB9fSxDSElMRDpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPSJudGgiIT09YS5zbGljZSgwLDMpLGc9Imxhc3QiIT09YS5zbGljZSgtNCksaD0ib2YtdHlwZSI9PT1iO3JldHVybiAxPT09ZCYmMD09PWU/ZnVuY3Rpb24oYSl7cmV0dXJuISFhLnBhcmVudE5vZGV9OmZ1bmN0aW9uKGIsYyxpKXt2YXIgaixrLGwsbSxuLG8scD1mIT09Zz8ibmV4dFNpYmxpbmciOiJwcmV2aW91c1NpYmxpbmciLHE9Yi5wYXJlbnROb2RlLHI9aCYmYi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLHQ9IWkmJiFoO2lmKHEpe2lmKGYpe3doaWxlKHApe2w9Yjt3aGlsZShsPWxbcF0paWYoaD9sLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1yOjE9PT1sLm5vZGVUeXBlKXJldHVybiExO289cD0ib25seSI9PT1hJiYhbyYmIm5leHRTaWJsaW5nIn1yZXR1cm4hMH1pZihvPVtnP3EuZmlyc3RDaGlsZDpxLmxhc3RDaGlsZF0sZyYmdCl7az1xW3NdfHwocVtzXT17fSksaj1rW2FdfHxbXSxuPWpbMF09PT11JiZqWzFdLG09alswXT09PXUmJmpbMl0sbD1uJiZxLmNoaWxkTm9kZXNbbl07d2hpbGUobD0rK24mJmwmJmxbcF18fChtPW49MCl8fG8ucG9wKCkpaWYoMT09PWwubm9kZVR5cGUmJisrbSYmbD09PWIpe2tbYV09W3UsbixtXTticmVha319ZWxzZSBpZih0JiYoaj0oYltzXXx8KGJbc109e30pKVthXSkmJmpbMF09PT11KW09alsxXTtlbHNlIHdoaWxlKGw9KytuJiZsJiZsW3BdfHwobT1uPTApfHxvLnBvcCgpKWlmKChoP2wubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXI6MT09PWwubm9kZVR5cGUpJiYrK20mJih0JiYoKGxbc118fChsW3NdPXt9KSlbYV09W3UsbV0pLGw9PT1iKSlicmVhaztyZXR1cm4gbS09ZSxtPT09ZHx8bSVkPT09MCYmbS9kPj0wfX19LFBTRVVETzpmdW5jdGlvbihhLGIpe3ZhciBjLGU9ZC5wc2V1ZG9zW2FdfHxkLnNldEZpbHRlcnNbYS50b0xvd2VyQ2FzZSgpXXx8ZGIuZXJyb3IoInVuc3VwcG9ydGVkIHBzZXVkbzogIithKTtyZXR1cm4gZVtzXT9lKGIpOmUubGVuZ3RoPjE/KGM9W2EsYSwiIixiXSxkLnNldEZpbHRlcnMuaGFzT3duUHJvcGVydHkoYS50b0xvd2VyQ2FzZSgpKT9mYihmdW5jdGlvbihhLGMpe3ZhciBkLGY9ZShhLGIpLGc9Zi5sZW5ndGg7d2hpbGUoZy0tKWQ9SS5jYWxsKGEsZltnXSksYVtkXT0hKGNbZF09ZltnXSl9KTpmdW5jdGlvbihhKXtyZXR1cm4gZShhLDAsYyl9KTplfX0scHNldWRvczp7bm90OmZiKGZ1bmN0aW9uKGEpe3ZhciBiPVtdLGM9W10sZD1nKGEucmVwbGFjZShQLCIkMSIpKTtyZXR1cm4gZFtzXT9mYihmdW5jdGlvbihhLGIsYyxlKXt2YXIgZixnPWQoYSxudWxsLGUsW10pLGg9YS5sZW5ndGg7d2hpbGUoaC0tKShmPWdbaF0pJiYoYVtoXT0hKGJbaF09ZikpfSk6ZnVuY3Rpb24oYSxlLGYpe3JldHVybiBiWzBdPWEsZChiLG51bGwsZixjKSwhYy5wb3AoKX19KSxoYXM6ZmIoZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3JldHVybiBkYihhLGIpLmxlbmd0aD4wfX0pLGNvbnRhaW5zOmZiKGZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihiKXtyZXR1cm4oYi50ZXh0Q29udGVudHx8Yi5pbm5lclRleHR8fGUoYikpLmluZGV4T2YoYSk+LTF9fSksbGFuZzpmYihmdW5jdGlvbihhKXtyZXR1cm4gVS50ZXN0KGF8fCIiKXx8ZGIuZXJyb3IoInVuc3VwcG9ydGVkIGxhbmc6ICIrYSksYT1hLnJlcGxhY2UoYWIsYmIpLnRvTG93ZXJDYXNlKCksZnVuY3Rpb24oYil7dmFyIGM7ZG8gaWYoYz1uP2IubGFuZzpiLmdldEF0dHJpYnV0ZSgieG1sOmxhbmciKXx8Yi5nZXRBdHRyaWJ1dGUoImxhbmciKSlyZXR1cm4gYz1jLnRvTG93ZXJDYXNlKCksYz09PWF8fDA9PT1jLmluZGV4T2YoYSsiLSIpO3doaWxlKChiPWIucGFyZW50Tm9kZSkmJjE9PT1iLm5vZGVUeXBlKTtyZXR1cm4hMX19KSx0YXJnZXQ6ZnVuY3Rpb24oYil7dmFyIGM9YS5sb2NhdGlvbiYmYS5sb2NhdGlvbi5oYXNoO3JldHVybiBjJiZjLnNsaWNlKDEpPT09Yi5pZH0scm9vdDpmdW5jdGlvbihhKXtyZXR1cm4gYT09PW19LGZvY3VzOmZ1bmN0aW9uKGEpe3JldHVybiBhPT09bC5hY3RpdmVFbGVtZW50JiYoIWwuaGFzRm9jdXN8fGwuaGFzRm9jdXMoKSkmJiEhKGEudHlwZXx8YS5ocmVmfHx+YS50YWJJbmRleCl9LGVuYWJsZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZGlzYWJsZWQ9PT0hMX0sZGlzYWJsZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZGlzYWJsZWQ9PT0hMH0sY2hlY2tlZDpmdW5jdGlvbihhKXt2YXIgYj1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PWImJiEhYS5jaGVja2VkfHwib3B0aW9uIj09PWImJiEhYS5zZWxlY3RlZH0sc2VsZWN0ZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucGFyZW50Tm9kZSYmYS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgsYS5zZWxlY3RlZD09PSEwfSxlbXB0eTpmdW5jdGlvbihhKXtmb3IoYT1hLmZpcnN0Q2hpbGQ7YTthPWEubmV4dFNpYmxpbmcpaWYoYS5ub2RlVHlwZTw2KXJldHVybiExO3JldHVybiEwfSxwYXJlbnQ6ZnVuY3Rpb24oYSl7cmV0dXJuIWQucHNldWRvcy5lbXB0eShhKX0saGVhZGVyOmZ1bmN0aW9uKGEpe3JldHVybiBYLnRlc3QoYS5ub2RlTmFtZSl9LGlucHV0OmZ1bmN0aW9uKGEpe3JldHVybiBXLnRlc3QoYS5ub2RlTmFtZSl9LGJ1dHRvbjpmdW5jdGlvbihhKXt2YXIgYj1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PWImJiJidXR0b24iPT09YS50eXBlfHwiYnV0dG9uIj09PWJ9LHRleHQ6ZnVuY3Rpb24oYSl7dmFyIGI7cmV0dXJuImlucHV0Ij09PWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmInRleHQiPT09YS50eXBlJiYobnVsbD09KGI9YS5nZXRBdHRyaWJ1dGUoInR5cGUiKSl8fCJ0ZXh0Ij09PWIudG9Mb3dlckNhc2UoKSl9LGZpcnN0OmxiKGZ1bmN0aW9uKCl7cmV0dXJuWzBdfSksbGFzdDpsYihmdW5jdGlvbihhLGIpe3JldHVybltiLTFdfSksZXE6bGIoZnVuY3Rpb24oYSxiLGMpe3JldHVyblswPmM/YytiOmNdfSksZXZlbjpsYihmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0wO2I+YztjKz0yKWEucHVzaChjKTtyZXR1cm4gYX0pLG9kZDpsYihmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0xO2I+YztjKz0yKWEucHVzaChjKTtyZXR1cm4gYX0pLGx0OmxiKGZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQ9MD5jP2MrYjpjOy0tZD49MDspYS5wdXNoKGQpO3JldHVybiBhfSksZ3Q6bGIoZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZD0wPmM/YytiOmM7KytkPGI7KWEucHVzaChkKTtyZXR1cm4gYX0pfX0sZC5wc2V1ZG9zLm50aD1kLnBzZXVkb3MuZXE7Zm9yKGIgaW57cmFkaW86ITAsY2hlY2tib3g6ITAsZmlsZTohMCxwYXNzd29yZDohMCxpbWFnZTohMH0pZC5wc2V1ZG9zW2JdPWpiKGIpO2ZvcihiIGlue3N1Ym1pdDohMCxyZXNldDohMH0pZC5wc2V1ZG9zW2JdPWtiKGIpO2Z1bmN0aW9uIG5iKCl7fW5iLnByb3RvdHlwZT1kLmZpbHRlcnM9ZC5wc2V1ZG9zLGQuc2V0RmlsdGVycz1uZXcgbmI7ZnVuY3Rpb24gb2IoYSxiKXt2YXIgYyxlLGYsZyxoLGksaixrPXhbYSsiICJdO2lmKGspcmV0dXJuIGI/MDprLnNsaWNlKDApO2g9YSxpPVtdLGo9ZC5wcmVGaWx0ZXI7d2hpbGUoaCl7KCFjfHwoZT1RLmV4ZWMoaCkpKSYmKGUmJihoPWguc2xpY2UoZVswXS5sZW5ndGgpfHxoKSxpLnB1c2goZj1bXSkpLGM9ITEsKGU9Ui5leGVjKGgpKSYmKGM9ZS5zaGlmdCgpLGYucHVzaCh7dmFsdWU6Yyx0eXBlOmVbMF0ucmVwbGFjZShQLCIgIil9KSxoPWguc2xpY2UoYy5sZW5ndGgpKTtmb3IoZyBpbiBkLmZpbHRlcikhKGU9VltnXS5leGVjKGgpKXx8altnXSYmIShlPWpbZ10oZSkpfHwoYz1lLnNoaWZ0KCksZi5wdXNoKHt2YWx1ZTpjLHR5cGU6ZyxtYXRjaGVzOmV9KSxoPWguc2xpY2UoYy5sZW5ndGgpKTtpZighYylicmVha31yZXR1cm4gYj9oLmxlbmd0aDpoP2RiLmVycm9yKGEpOngoYSxpKS5zbGljZSgwKX1mdW5jdGlvbiBwYihhKXtmb3IodmFyIGI9MCxjPWEubGVuZ3RoLGQ9IiI7Yz5iO2IrKylkKz1hW2JdLnZhbHVlO3JldHVybiBkfWZ1bmN0aW9uIHFiKGEsYixjKXt2YXIgZD1iLmRpcixlPWMmJiJwYXJlbnROb2RlIj09PWQsZj12Kys7cmV0dXJuIGIuZmlyc3Q/ZnVuY3Rpb24oYixjLGYpe3doaWxlKGI9YltkXSlpZigxPT09Yi5ub2RlVHlwZXx8ZSlyZXR1cm4gYShiLGMsZil9OmZ1bmN0aW9uKGIsYyxnKXt2YXIgaCxpLGo9W3UsZl07aWYoZyl7d2hpbGUoYj1iW2RdKWlmKCgxPT09Yi5ub2RlVHlwZXx8ZSkmJmEoYixjLGcpKXJldHVybiEwfWVsc2Ugd2hpbGUoYj1iW2RdKWlmKDE9PT1iLm5vZGVUeXBlfHxlKXtpZihpPWJbc118fChiW3NdPXt9KSwoaD1pW2RdKSYmaFswXT09PXUmJmhbMV09PT1mKXJldHVybiBqWzJdPWhbMl07aWYoaVtkXT1qLGpbMl09YShiLGMsZykpcmV0dXJuITB9fX1mdW5jdGlvbiByYihhKXtyZXR1cm4gYS5sZW5ndGg+MT9mdW5jdGlvbihiLGMsZCl7dmFyIGU9YS5sZW5ndGg7d2hpbGUoZS0tKWlmKCFhW2VdKGIsYyxkKSlyZXR1cm4hMTtyZXR1cm4hMH06YVswXX1mdW5jdGlvbiBzYihhLGIsYyxkLGUpe2Zvcih2YXIgZixnPVtdLGg9MCxpPWEubGVuZ3RoLGo9bnVsbCE9YjtpPmg7aCsrKShmPWFbaF0pJiYoIWN8fGMoZixkLGUpKSYmKGcucHVzaChmKSxqJiZiLnB1c2goaCkpO3JldHVybiBnfWZ1bmN0aW9uIHRiKGEsYixjLGQsZSxmKXtyZXR1cm4gZCYmIWRbc10mJihkPXRiKGQpKSxlJiYhZVtzXSYmKGU9dGIoZSxmKSksZmIoZnVuY3Rpb24oZixnLGgsaSl7dmFyIGosayxsLG09W10sbj1bXSxvPWcubGVuZ3RoLHA9Znx8d2IoYnx8IioiLGgubm9kZVR5cGU/W2hdOmgsW10pLHE9IWF8fCFmJiZiP3A6c2IocCxtLGEsaCxpKSxyPWM/ZXx8KGY/YTpvfHxkKT9bXTpnOnE7aWYoYyYmYyhxLHIsaCxpKSxkKXtqPXNiKHIsbiksZChqLFtdLGgsaSksaz1qLmxlbmd0aDt3aGlsZShrLS0pKGw9altrXSkmJihyW25ba11dPSEocVtuW2tdXT1sKSl9aWYoZil7aWYoZXx8YSl7aWYoZSl7aj1bXSxrPXIubGVuZ3RoO3doaWxlKGstLSkobD1yW2tdKSYmai5wdXNoKHFba109bCk7ZShudWxsLHI9W10saixpKX1rPXIubGVuZ3RoO3doaWxlKGstLSkobD1yW2tdKSYmKGo9ZT9JLmNhbGwoZixsKTptW2tdKT4tMSYmKGZbal09IShnW2pdPWwpKX19ZWxzZSByPXNiKHI9PT1nP3Iuc3BsaWNlKG8sci5sZW5ndGgpOnIpLGU/ZShudWxsLGcscixpKTpHLmFwcGx5KGcscil9KX1mdW5jdGlvbiB1YihhKXtmb3IodmFyIGIsYyxlLGY9YS5sZW5ndGgsZz1kLnJlbGF0aXZlW2FbMF0udHlwZV0saT1nfHxkLnJlbGF0aXZlWyIgIl0saj1nPzE6MCxrPXFiKGZ1bmN0aW9uKGEpe3JldHVybiBhPT09Yn0saSwhMCksbD1xYihmdW5jdGlvbihhKXtyZXR1cm4gSS5jYWxsKGIsYSk+LTF9LGksITApLG09W2Z1bmN0aW9uKGEsYyxkKXtyZXR1cm4hZyYmKGR8fGMhPT1oKXx8KChiPWMpLm5vZGVUeXBlP2soYSxjLGQpOmwoYSxjLGQpKX1dO2Y+ajtqKyspaWYoYz1kLnJlbGF0aXZlW2Fbal0udHlwZV0pbT1bcWIocmIobSksYyldO2Vsc2V7aWYoYz1kLmZpbHRlclthW2pdLnR5cGVdLmFwcGx5KG51bGwsYVtqXS5tYXRjaGVzKSxjW3NdKXtmb3IoZT0rK2o7Zj5lO2UrKylpZihkLnJlbGF0aXZlW2FbZV0udHlwZV0pYnJlYWs7cmV0dXJuIHRiKGo+MSYmcmIobSksaj4xJiZwYihhLnNsaWNlKDAsai0xKS5jb25jYXQoe3ZhbHVlOiIgIj09PWFbai0yXS50eXBlPyIqIjoiIn0pKS5yZXBsYWNlKFAsIiQxIiksYyxlPmomJnViKGEuc2xpY2UoaixlKSksZj5lJiZ1YihhPWEuc2xpY2UoZSkpLGY+ZSYmcGIoYSkpfW0ucHVzaChjKX1yZXR1cm4gcmIobSl9ZnVuY3Rpb24gdmIoYSxiKXt2YXIgYz1iLmxlbmd0aD4wLGU9YS5sZW5ndGg+MCxmPWZ1bmN0aW9uKGYsZyxpLGosayl7dmFyIG0sbixvLHA9MCxxPSIwIixyPWYmJltdLHM9W10sdD1oLHY9Znx8ZSYmZC5maW5kLlRBRygiKiIsayksdz11Kz1udWxsPT10PzE6TWF0aC5yYW5kb20oKXx8LjEseD12Lmxlbmd0aDtmb3IoayYmKGg9ZyE9PWwmJmcpO3EhPT14JiZudWxsIT0obT12W3FdKTtxKyspe2lmKGUmJm0pe249MDt3aGlsZShvPWFbbisrXSlpZihvKG0sZyxpKSl7ai5wdXNoKG0pO2JyZWFrfWsmJih1PXcpfWMmJigobT0hbyYmbSkmJnAtLSxmJiZyLnB1c2gobSkpfWlmKHArPXEsYyYmcSE9PXApe249MDt3aGlsZShvPWJbbisrXSlvKHIscyxnLGkpO2lmKGYpe2lmKHA+MCl3aGlsZShxLS0pcltxXXx8c1txXXx8KHNbcV09RS5jYWxsKGopKTtzPXNiKHMpfUcuYXBwbHkoaixzKSxrJiYhZiYmcy5sZW5ndGg+MCYmcCtiLmxlbmd0aD4xJiZkYi51bmlxdWVTb3J0KGopfXJldHVybiBrJiYodT13LGg9dCkscn07cmV0dXJuIGM/ZmIoZik6Zn1nPWRiLmNvbXBpbGU9ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPVtdLGU9W10sZj15W2ErIiAiXTtpZighZil7Ynx8KGI9b2IoYSkpLGM9Yi5sZW5ndGg7d2hpbGUoYy0tKWY9dWIoYltjXSksZltzXT9kLnB1c2goZik6ZS5wdXNoKGYpO2Y9eShhLHZiKGUsZCkpfXJldHVybiBmfTtmdW5jdGlvbiB3YihhLGIsYyl7Zm9yKHZhciBkPTAsZT1iLmxlbmd0aDtlPmQ7ZCsrKWRiKGEsYltkXSxjKTtyZXR1cm4gY31mdW5jdGlvbiB4YihhLGIsZSxmKXt2YXIgaCxpLGosayxsLG09b2IoYSk7aWYoIWYmJjE9PT1tLmxlbmd0aCl7aWYoaT1tWzBdPW1bMF0uc2xpY2UoMCksaS5sZW5ndGg+MiYmIklEIj09PShqPWlbMF0pLnR5cGUmJmMuZ2V0QnlJZCYmOT09PWIubm9kZVR5cGUmJm4mJmQucmVsYXRpdmVbaVsxXS50eXBlXSl7aWYoYj0oZC5maW5kLklEKGoubWF0Y2hlc1swXS5yZXBsYWNlKGFiLGJiKSxiKXx8W10pWzBdLCFiKXJldHVybiBlO2E9YS5zbGljZShpLnNoaWZ0KCkudmFsdWUubGVuZ3RoKX1oPVYubmVlZHNDb250ZXh0LnRlc3QoYSk/MDppLmxlbmd0aDt3aGlsZShoLS0pe2lmKGo9aVtoXSxkLnJlbGF0aXZlW2s9ai50eXBlXSlicmVhaztpZigobD1kLmZpbmRba10pJiYoZj1sKGoubWF0Y2hlc1swXS5yZXBsYWNlKGFiLGJiKSwkLnRlc3QoaVswXS50eXBlKSYmbWIoYi5wYXJlbnROb2RlKXx8YikpKXtpZihpLnNwbGljZShoLDEpLGE9Zi5sZW5ndGgmJnBiKGkpLCFhKXJldHVybiBHLmFwcGx5KGUsZiksZTticmVha319fXJldHVybiBnKGEsbSkoZixiLCFuLGUsJC50ZXN0KGEpJiZtYihiLnBhcmVudE5vZGUpfHxiKSxlfXJldHVybiBjLnNvcnRTdGFibGU9cy5zcGxpdCgiIikuc29ydCh6KS5qb2luKCIiKT09PXMsYy5kZXRlY3REdXBsaWNhdGVzPSEhaixrKCksYy5zb3J0RGV0YWNoZWQ9Z2IoZnVuY3Rpb24oYSl7cmV0dXJuIDEmYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihsLmNyZWF0ZUVsZW1lbnQoImRpdiIpKX0pLGdiKGZ1bmN0aW9uKGEpe3JldHVybiBhLmlubmVySFRNTD0iPGEgaHJlZj0nIyc+PC9hPiIsIiMiPT09YS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgiaHJlZiIpfSl8fGhiKCJ0eXBlfGhyZWZ8aGVpZ2h0fHdpZHRoIixmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGM/dm9pZCAwOmEuZ2V0QXR0cmlidXRlKGIsInR5cGUiPT09Yi50b0xvd2VyQ2FzZSgpPzE6Mil9KSxjLmF0dHJpYnV0ZXMmJmdiKGZ1bmN0aW9uKGEpe3JldHVybiBhLmlubmVySFRNTD0iPGlucHV0Lz4iLGEuZmlyc3RDaGlsZC5zZXRBdHRyaWJ1dGUoInZhbHVlIiwiIiksIiI9PT1hLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpfSl8fGhiKCJ2YWx1ZSIsZnVuY3Rpb24oYSxiLGMpe3JldHVybiBjfHwiaW5wdXQiIT09YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpP3ZvaWQgMDphLmRlZmF1bHRWYWx1ZX0pLGdiKGZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1hLmdldEF0dHJpYnV0ZSgiZGlzYWJsZWQiKX0pfHxoYihKLGZ1bmN0aW9uKGEsYixjKXt2YXIgZDtyZXR1cm4gYz92b2lkIDA6YVtiXT09PSEwP2IudG9Mb3dlckNhc2UoKTooZD1hLmdldEF0dHJpYnV0ZU5vZGUoYikpJiZkLnNwZWNpZmllZD9kLnZhbHVlOm51bGx9KSxkYn0oYSk7bi5maW5kPXQsbi5leHByPXQuc2VsZWN0b3JzLG4uZXhwclsiOiJdPW4uZXhwci5wc2V1ZG9zLG4udW5pcXVlPXQudW5pcXVlU29ydCxuLnRleHQ9dC5nZXRUZXh0LG4uaXNYTUxEb2M9dC5pc1hNTCxuLmNvbnRhaW5zPXQuY29udGFpbnM7dmFyIHU9bi5leHByLm1hdGNoLm5lZWRzQ29udGV4dCx2PS9ePChcdyspXHMqXC8/Pig/OjxcL1wxPnwpJC8sdz0vXi5bXjojXFtcLixdKiQvO2Z1bmN0aW9uIHgoYSxiLGMpe2lmKG4uaXNGdW5jdGlvbihiKSlyZXR1cm4gbi5ncmVwKGEsZnVuY3Rpb24oYSxkKXtyZXR1cm4hIWIuY2FsbChhLGQsYSkhPT1jfSk7aWYoYi5ub2RlVHlwZSlyZXR1cm4gbi5ncmVwKGEsZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1iIT09Y30pO2lmKCJzdHJpbmciPT10eXBlb2YgYil7aWYody50ZXN0KGIpKXJldHVybiBuLmZpbHRlcihiLGEsYyk7Yj1uLmZpbHRlcihiLGEpfXJldHVybiBuLmdyZXAoYSxmdW5jdGlvbihhKXtyZXR1cm4gbi5pbkFycmF5KGEsYik+PTAhPT1jfSl9bi5maWx0ZXI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWJbMF07cmV0dXJuIGMmJihhPSI6bm90KCIrYSsiKSIpLDE9PT1iLmxlbmd0aCYmMT09PWQubm9kZVR5cGU/bi5maW5kLm1hdGNoZXNTZWxlY3RvcihkLGEpP1tkXTpbXTpuLmZpbmQubWF0Y2hlcyhhLG4uZ3JlcChiLGZ1bmN0aW9uKGEpe3JldHVybiAxPT09YS5ub2RlVHlwZX0pKX0sbi5mbi5leHRlbmQoe2ZpbmQ6ZnVuY3Rpb24oYSl7dmFyIGIsYz1bXSxkPXRoaXMsZT1kLmxlbmd0aDtpZigic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIHRoaXMucHVzaFN0YWNrKG4oYSkuZmlsdGVyKGZ1bmN0aW9uKCl7Zm9yKGI9MDtlPmI7YisrKWlmKG4uY29udGFpbnMoZFtiXSx0aGlzKSlyZXR1cm4hMH0pKTtmb3IoYj0wO2U+YjtiKyspbi5maW5kKGEsZFtiXSxjKTtyZXR1cm4gYz10aGlzLnB1c2hTdGFjayhlPjE/bi51bmlxdWUoYyk6YyksYy5zZWxlY3Rvcj10aGlzLnNlbGVjdG9yP3RoaXMuc2VsZWN0b3IrIiAiK2E6YSxjfSxmaWx0ZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKHgodGhpcyxhfHxbXSwhMSkpfSxub3Q6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKHgodGhpcyxhfHxbXSwhMCkpfSxpczpmdW5jdGlvbihhKXtyZXR1cm4hIXgodGhpcywic3RyaW5nIj09dHlwZW9mIGEmJnUudGVzdChhKT9uKGEpOmF8fFtdLCExKS5sZW5ndGh9fSk7dmFyIHksej1hLmRvY3VtZW50LEE9L14oPzpccyooPFtcd1xXXSs+KVtePl0qfCMoW1x3LV0qKSkkLyxCPW4uZm4uaW5pdD1mdW5jdGlvbihhLGIpe3ZhciBjLGQ7aWYoIWEpcmV0dXJuIHRoaXM7aWYoInN0cmluZyI9PXR5cGVvZiBhKXtpZihjPSI8Ij09PWEuY2hhckF0KDApJiYiPiI9PT1hLmNoYXJBdChhLmxlbmd0aC0xKSYmYS5sZW5ndGg+PTM/W251bGwsYSxudWxsXTpBLmV4ZWMoYSksIWN8fCFjWzFdJiZiKXJldHVybiFifHxiLmpxdWVyeT8oYnx8eSkuZmluZChhKTp0aGlzLmNvbnN0cnVjdG9yKGIpLmZpbmQoYSk7aWYoY1sxXSl7aWYoYj1iIGluc3RhbmNlb2Ygbj9iWzBdOmIsbi5tZXJnZSh0aGlzLG4ucGFyc2VIVE1MKGNbMV0sYiYmYi5ub2RlVHlwZT9iLm93bmVyRG9jdW1lbnR8fGI6eiwhMCkpLHYudGVzdChjWzFdKSYmbi5pc1BsYWluT2JqZWN0KGIpKWZvcihjIGluIGIpbi5pc0Z1bmN0aW9uKHRoaXNbY10pP3RoaXNbY10oYltjXSk6dGhpcy5hdHRyKGMsYltjXSk7cmV0dXJuIHRoaXN9aWYoZD16LmdldEVsZW1lbnRCeUlkKGNbMl0pLGQmJmQucGFyZW50Tm9kZSl7aWYoZC5pZCE9PWNbMl0pcmV0dXJuIHkuZmluZChhKTt0aGlzLmxlbmd0aD0xLHRoaXNbMF09ZH1yZXR1cm4gdGhpcy5jb250ZXh0PXosdGhpcy5zZWxlY3Rvcj1hLHRoaXN9cmV0dXJuIGEubm9kZVR5cGU/KHRoaXMuY29udGV4dD10aGlzWzBdPWEsdGhpcy5sZW5ndGg9MSx0aGlzKTpuLmlzRnVuY3Rpb24oYSk/InVuZGVmaW5lZCIhPXR5cGVvZiB5LnJlYWR5P3kucmVhZHkoYSk6YShuKToodm9pZCAwIT09YS5zZWxlY3RvciYmKHRoaXMuc2VsZWN0b3I9YS5zZWxlY3Rvcix0aGlzLmNvbnRleHQ9YS5jb250ZXh0KSxuLm1ha2VBcnJheShhLHRoaXMpKX07Qi5wcm90b3R5cGU9bi5mbix5PW4oeik7dmFyIEM9L14oPzpwYXJlbnRzfHByZXYoPzpVbnRpbHxBbGwpKS8sRD17Y2hpbGRyZW46ITAsY29udGVudHM6ITAsbmV4dDohMCxwcmV2OiEwfTtuLmV4dGVuZCh7ZGlyOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1bXSxlPWFbYl07d2hpbGUoZSYmOSE9PWUubm9kZVR5cGUmJih2b2lkIDA9PT1jfHwxIT09ZS5ub2RlVHlwZXx8IW4oZSkuaXMoYykpKTE9PT1lLm5vZGVUeXBlJiZkLnB1c2goZSksZT1lW2JdO3JldHVybiBkfSxzaWJsaW5nOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPVtdO2E7YT1hLm5leHRTaWJsaW5nKTE9PT1hLm5vZGVUeXBlJiZhIT09YiYmYy5wdXNoKGEpO3JldHVybiBjfX0pLG4uZm4uZXh0ZW5kKHtoYXM6ZnVuY3Rpb24oYSl7dmFyIGIsYz1uKGEsdGhpcyksZD1jLmxlbmd0aDtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKXtmb3IoYj0wO2Q+YjtiKyspaWYobi5jb250YWlucyh0aGlzLGNbYl0pKXJldHVybiEwfSl9LGNsb3Nlc3Q6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGMsZD0wLGU9dGhpcy5sZW5ndGgsZj1bXSxnPXUudGVzdChhKXx8InN0cmluZyIhPXR5cGVvZiBhP24oYSxifHx0aGlzLmNvbnRleHQpOjA7ZT5kO2QrKylmb3IoYz10aGlzW2RdO2MmJmMhPT1iO2M9Yy5wYXJlbnROb2RlKWlmKGMubm9kZVR5cGU8MTEmJihnP2cuaW5kZXgoYyk+LTE6MT09PWMubm9kZVR5cGUmJm4uZmluZC5tYXRjaGVzU2VsZWN0b3IoYyxhKSkpe2YucHVzaChjKTticmVha31yZXR1cm4gdGhpcy5wdXNoU3RhY2soZi5sZW5ndGg+MT9uLnVuaXF1ZShmKTpmKX0saW5kZXg6ZnVuY3Rpb24oYSl7cmV0dXJuIGE/InN0cmluZyI9PXR5cGVvZiBhP24uaW5BcnJheSh0aGlzWzBdLG4oYSkpOm4uaW5BcnJheShhLmpxdWVyeT9hWzBdOmEsdGhpcyk6dGhpc1swXSYmdGhpc1swXS5wYXJlbnROb2RlP3RoaXMuZmlyc3QoKS5wcmV2QWxsKCkubGVuZ3RoOi0xfSxhZGQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2sobi51bmlxdWUobi5tZXJnZSh0aGlzLmdldCgpLG4oYSxiKSkpKX0sYWRkQmFjazpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5hZGQobnVsbD09YT90aGlzLnByZXZPYmplY3Q6dGhpcy5wcmV2T2JqZWN0LmZpbHRlcihhKSl9fSk7ZnVuY3Rpb24gRShhLGIpe2RvIGE9YVtiXTt3aGlsZShhJiYxIT09YS5ub2RlVHlwZSk7cmV0dXJuIGF9bi5lYWNoKHtwYXJlbnQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5wYXJlbnROb2RlO3JldHVybiBiJiYxMSE9PWIubm9kZVR5cGU/YjpudWxsfSxwYXJlbnRzOmZ1bmN0aW9uKGEpe3JldHVybiBuLmRpcihhLCJwYXJlbnROb2RlIil9LHBhcmVudHNVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIG4uZGlyKGEsInBhcmVudE5vZGUiLGMpfSxuZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBFKGEsIm5leHRTaWJsaW5nIil9LHByZXY6ZnVuY3Rpb24oYSl7cmV0dXJuIEUoYSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRBbGw6ZnVuY3Rpb24oYSl7cmV0dXJuIG4uZGlyKGEsIm5leHRTaWJsaW5nIil9LHByZXZBbGw6ZnVuY3Rpb24oYSl7cmV0dXJuIG4uZGlyKGEsInByZXZpb3VzU2libGluZyIpfSxuZXh0VW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBuLmRpcihhLCJuZXh0U2libGluZyIsYyl9LHByZXZVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIG4uZGlyKGEsInByZXZpb3VzU2libGluZyIsYyl9LHNpYmxpbmdzOmZ1bmN0aW9uKGEpe3JldHVybiBuLnNpYmxpbmcoKGEucGFyZW50Tm9kZXx8e30pLmZpcnN0Q2hpbGQsYSl9LGNoaWxkcmVuOmZ1bmN0aW9uKGEpe3JldHVybiBuLnNpYmxpbmcoYS5maXJzdENoaWxkKX0sY29udGVudHM6ZnVuY3Rpb24oYSl7cmV0dXJuIG4ubm9kZU5hbWUoYSwiaWZyYW1lIik/YS5jb250ZW50RG9jdW1lbnR8fGEuY29udGVudFdpbmRvdy5kb2N1bWVudDpuLm1lcmdlKFtdLGEuY2hpbGROb2Rlcyl9fSxmdW5jdGlvbihhLGIpe24uZm5bYV09ZnVuY3Rpb24oYyxkKXt2YXIgZT1uLm1hcCh0aGlzLGIsYyk7cmV0dXJuIlVudGlsIiE9PWEuc2xpY2UoLTUpJiYoZD1jKSxkJiYic3RyaW5nIj09dHlwZW9mIGQmJihlPW4uZmlsdGVyKGQsZSkpLHRoaXMubGVuZ3RoPjEmJihEW2FdfHwoZT1uLnVuaXF1ZShlKSksQy50ZXN0KGEpJiYoZT1lLnJldmVyc2UoKSkpLHRoaXMucHVzaFN0YWNrKGUpfX0pO3ZhciBGPS9cUysvZyxHPXt9O2Z1bmN0aW9uIEgoYSl7dmFyIGI9R1thXT17fTtyZXR1cm4gbi5lYWNoKGEubWF0Y2goRil8fFtdLGZ1bmN0aW9uKGEsYyl7YltjXT0hMH0pLGJ9bi5DYWxsYmFja3M9ZnVuY3Rpb24oYSl7YT0ic3RyaW5nIj09dHlwZW9mIGE/R1thXXx8SChhKTpuLmV4dGVuZCh7fSxhKTt2YXIgYixjLGQsZSxmLGcsaD1bXSxpPSFhLm9uY2UmJltdLGo9ZnVuY3Rpb24obCl7Zm9yKGM9YS5tZW1vcnkmJmwsZD0hMCxmPWd8fDAsZz0wLGU9aC5sZW5ndGgsYj0hMDtoJiZlPmY7ZisrKWlmKGhbZl0uYXBwbHkobFswXSxsWzFdKT09PSExJiZhLnN0b3BPbkZhbHNlKXtjPSExO2JyZWFrfWI9ITEsaCYmKGk/aS5sZW5ndGgmJmooaS5zaGlmdCgpKTpjP2g9W106ay5kaXNhYmxlKCkpfSxrPXthZGQ6ZnVuY3Rpb24oKXtpZihoKXt2YXIgZD1oLmxlbmd0aDshZnVuY3Rpb24gZihiKXtuLmVhY2goYixmdW5jdGlvbihiLGMpe3ZhciBkPW4udHlwZShjKTsiZnVuY3Rpb24iPT09ZD9hLnVuaXF1ZSYmay5oYXMoYyl8fGgucHVzaChjKTpjJiZjLmxlbmd0aCYmInN0cmluZyIhPT1kJiZmKGMpfSl9KGFyZ3VtZW50cyksYj9lPWgubGVuZ3RoOmMmJihnPWQsaihjKSl9cmV0dXJuIHRoaXN9LHJlbW92ZTpmdW5jdGlvbigpe3JldHVybiBoJiZuLmVhY2goYXJndW1lbnRzLGZ1bmN0aW9uKGEsYyl7dmFyIGQ7d2hpbGUoKGQ9bi5pbkFycmF5KGMsaCxkKSk+LTEpaC5zcGxpY2UoZCwxKSxiJiYoZT49ZCYmZS0tLGY+PWQmJmYtLSl9KSx0aGlzfSxoYXM6ZnVuY3Rpb24oYSl7cmV0dXJuIGE/bi5pbkFycmF5KGEsaCk+LTE6ISghaHx8IWgubGVuZ3RoKX0sZW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4gaD1bXSxlPTAsdGhpc30sZGlzYWJsZTpmdW5jdGlvbigpe3JldHVybiBoPWk9Yz12b2lkIDAsdGhpc30sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4haH0sbG9jazpmdW5jdGlvbigpe3JldHVybiBpPXZvaWQgMCxjfHxrLmRpc2FibGUoKSx0aGlzfSxsb2NrZWQ6ZnVuY3Rpb24oKXtyZXR1cm4haX0sZmlyZVdpdGg6ZnVuY3Rpb24oYSxjKXtyZXR1cm4haHx8ZCYmIWl8fChjPWN8fFtdLGM9W2EsYy5zbGljZT9jLnNsaWNlKCk6Y10sYj9pLnB1c2goYyk6aihjKSksdGhpc30sZmlyZTpmdW5jdGlvbigpe3JldHVybiBrLmZpcmVXaXRoKHRoaXMsYXJndW1lbnRzKSx0aGlzfSxmaXJlZDpmdW5jdGlvbigpe3JldHVybiEhZH19O3JldHVybiBrfSxuLmV4dGVuZCh7RGVmZXJyZWQ6ZnVuY3Rpb24oYSl7dmFyIGI9W1sicmVzb2x2ZSIsImRvbmUiLG4uQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLCJyZXNvbHZlZCJdLFsicmVqZWN0IiwiZmFpbCIsbi5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksInJlamVjdGVkIl0sWyJub3RpZnkiLCJwcm9ncmVzcyIsbi5DYWxsYmFja3MoIm1lbW9yeSIpXV0sYz0icGVuZGluZyIsZD17c3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gY30sYWx3YXlzOmZ1bmN0aW9uKCl7cmV0dXJuIGUuZG9uZShhcmd1bWVudHMpLmZhaWwoYXJndW1lbnRzKSx0aGlzfSx0aGVuOmZ1bmN0aW9uKCl7dmFyIGE9YXJndW1lbnRzO3JldHVybiBuLkRlZmVycmVkKGZ1bmN0aW9uKGMpe24uZWFjaChiLGZ1bmN0aW9uKGIsZil7dmFyIGc9bi5pc0Z1bmN0aW9uKGFbYl0pJiZhW2JdO2VbZlsxXV0oZnVuY3Rpb24oKXt2YXIgYT1nJiZnLmFwcGx5KHRoaXMsYXJndW1lbnRzKTthJiZuLmlzRnVuY3Rpb24oYS5wcm9taXNlKT9hLnByb21pc2UoKS5kb25lKGMucmVzb2x2ZSkuZmFpbChjLnJlamVjdCkucHJvZ3Jlc3MoYy5ub3RpZnkpOmNbZlswXSsiV2l0aCJdKHRoaXM9PT1kP2MucHJvbWlzZSgpOnRoaXMsZz9bYV06YXJndW1lbnRzKX0pfSksYT1udWxsfSkucHJvbWlzZSgpfSxwcm9taXNlOmZ1bmN0aW9uKGEpe3JldHVybiBudWxsIT1hP24uZXh0ZW5kKGEsZCk6ZH19LGU9e307cmV0dXJuIGQucGlwZT1kLnRoZW4sbi5lYWNoKGIsZnVuY3Rpb24oYSxmKXt2YXIgZz1mWzJdLGg9ZlszXTtkW2ZbMV1dPWcuYWRkLGgmJmcuYWRkKGZ1bmN0aW9uKCl7Yz1ofSxiWzFeYV1bMl0uZGlzYWJsZSxiWzJdWzJdLmxvY2spLGVbZlswXV09ZnVuY3Rpb24oKXtyZXR1cm4gZVtmWzBdKyJXaXRoIl0odGhpcz09PWU/ZDp0aGlzLGFyZ3VtZW50cyksdGhpc30sZVtmWzBdKyJXaXRoIl09Zy5maXJlV2l0aH0pLGQucHJvbWlzZShlKSxhJiZhLmNhbGwoZSxlKSxlfSx3aGVuOmZ1bmN0aW9uKGEpe3ZhciBiPTAsYz1kLmNhbGwoYXJndW1lbnRzKSxlPWMubGVuZ3RoLGY9MSE9PWV8fGEmJm4uaXNGdW5jdGlvbihhLnByb21pc2UpP2U6MCxnPTE9PT1mP2E6bi5EZWZlcnJlZCgpLGg9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmdW5jdGlvbihlKXtiW2FdPXRoaXMsY1thXT1hcmd1bWVudHMubGVuZ3RoPjE/ZC5jYWxsKGFyZ3VtZW50cyk6ZSxjPT09aT9nLm5vdGlmeVdpdGgoYixjKTotLWZ8fGcucmVzb2x2ZVdpdGgoYixjKX19LGksaixrO2lmKGU+MSlmb3IoaT1uZXcgQXJyYXkoZSksaj1uZXcgQXJyYXkoZSksaz1uZXcgQXJyYXkoZSk7ZT5iO2IrKyljW2JdJiZuLmlzRnVuY3Rpb24oY1tiXS5wcm9taXNlKT9jW2JdLnByb21pc2UoKS5kb25lKGgoYixrLGMpKS5mYWlsKGcucmVqZWN0KS5wcm9ncmVzcyhoKGIsaixpKSk6LS1mO3JldHVybiBmfHxnLnJlc29sdmVXaXRoKGssYyksZy5wcm9taXNlKCl9fSk7dmFyIEk7bi5mbi5yZWFkeT1mdW5jdGlvbihhKXtyZXR1cm4gbi5yZWFkeS5wcm9taXNlKCkuZG9uZShhKSx0aGlzfSxuLmV4dGVuZCh7aXNSZWFkeTohMSxyZWFkeVdhaXQ6MSxob2xkUmVhZHk6ZnVuY3Rpb24oYSl7YT9uLnJlYWR5V2FpdCsrOm4ucmVhZHkoITApfSxyZWFkeTpmdW5jdGlvbihhKXtpZihhPT09ITA/IS0tbi5yZWFkeVdhaXQ6IW4uaXNSZWFkeSl7aWYoIXouYm9keSlyZXR1cm4gc2V0VGltZW91dChuLnJlYWR5KTtuLmlzUmVhZHk9ITAsYSE9PSEwJiYtLW4ucmVhZHlXYWl0PjB8fChJLnJlc29sdmVXaXRoKHosW25dKSxuLmZuLnRyaWdnZXImJm4oeikudHJpZ2dlcigicmVhZHkiKS5vZmYoInJlYWR5IikpfX19KTtmdW5jdGlvbiBKKCl7ei5hZGRFdmVudExpc3RlbmVyPyh6LnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLEssITEpLGEucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsSywhMSkpOih6LmRldGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLEspLGEuZGV0YWNoRXZlbnQoIm9ubG9hZCIsSykpfWZ1bmN0aW9uIEsoKXsoei5hZGRFdmVudExpc3RlbmVyfHwibG9hZCI9PT1ldmVudC50eXBlfHwiY29tcGxldGUiPT09ei5yZWFkeVN0YXRlKSYmKEooKSxuLnJlYWR5KCkpfW4ucmVhZHkucHJvbWlzZT1mdW5jdGlvbihiKXtpZighSSlpZihJPW4uRGVmZXJyZWQoKSwiY29tcGxldGUiPT09ei5yZWFkeVN0YXRlKXNldFRpbWVvdXQobi5yZWFkeSk7ZWxzZSBpZih6LmFkZEV2ZW50TGlzdGVuZXIpei5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixLLCExKSxhLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLEssITEpO2Vsc2V7ei5hdHRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIixLKSxhLmF0dGFjaEV2ZW50KCJvbmxvYWQiLEspO3ZhciBjPSExO3RyeXtjPW51bGw9PWEuZnJhbWVFbGVtZW50JiZ6LmRvY3VtZW50RWxlbWVudH1jYXRjaChkKXt9YyYmYy5kb1Njcm9sbCYmIWZ1bmN0aW9uIGUoKXtpZighbi5pc1JlYWR5KXt0cnl7Yy5kb1Njcm9sbCgibGVmdCIpfWNhdGNoKGEpe3JldHVybiBzZXRUaW1lb3V0KGUsNTApfUooKSxuLnJlYWR5KCl9fSgpfXJldHVybiBJLnByb21pc2UoYil9O3ZhciBMPSJ1bmRlZmluZWQiLE07Zm9yKE0gaW4gbihsKSlicmVhaztsLm93bkxhc3Q9IjAiIT09TSxsLmlubGluZUJsb2NrTmVlZHNMYXlvdXQ9ITEsbihmdW5jdGlvbigpe3ZhciBhLGIsYz16LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF07YyYmKGE9ei5jcmVhdGVFbGVtZW50KCJkaXYiKSxhLnN0eWxlLmNzc1RleHQ9ImJvcmRlcjowO3dpZHRoOjA7aGVpZ2h0OjA7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDotOTk5OXB4O21hcmdpbi10b3A6MXB4IixiPXouY3JlYXRlRWxlbWVudCgiZGl2IiksYy5hcHBlbmRDaGlsZChhKS5hcHBlbmRDaGlsZChiKSx0eXBlb2YgYi5zdHlsZS56b29tIT09TCYmKGIuc3R5bGUuY3NzVGV4dD0iYm9yZGVyOjA7bWFyZ2luOjA7d2lkdGg6MXB4O3BhZGRpbmc6MXB4O2Rpc3BsYXk6aW5saW5lO3pvb206MSIsKGwuaW5saW5lQmxvY2tOZWVkc0xheW91dD0zPT09Yi5vZmZzZXRXaWR0aCkmJihjLnN0eWxlLnpvb209MSkpLGMucmVtb3ZlQ2hpbGQoYSksYT1iPW51bGwpfSksZnVuY3Rpb24oKXt2YXIgYT16LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2lmKG51bGw9PWwuZGVsZXRlRXhwYW5kbyl7bC5kZWxldGVFeHBhbmRvPSEwO3RyeXtkZWxldGUgYS50ZXN0fWNhdGNoKGIpe2wuZGVsZXRlRXhwYW5kbz0hMX19YT1udWxsfSgpLG4uYWNjZXB0RGF0YT1mdW5jdGlvbihhKXt2YXIgYj1uLm5vRGF0YVsoYS5ub2RlTmFtZSsiICIpLnRvTG93ZXJDYXNlKCldLGM9K2Eubm9kZVR5cGV8fDE7cmV0dXJuIDEhPT1jJiY5IT09Yz8hMTohYnx8YiE9PSEwJiZhLmdldEF0dHJpYnV0ZSgiY2xhc3NpZCIpPT09Yn07dmFyIE49L14oPzpce1tcd1xXXSpcfXxcW1tcd1xXXSpcXSkkLyxPPS8oW0EtWl0pL2c7ZnVuY3Rpb24gUChhLGIsYyl7aWYodm9pZCAwPT09YyYmMT09PWEubm9kZVR5cGUpe3ZhciBkPSJkYXRhLSIrYi5yZXBsYWNlKE8sIi0kMSIpLnRvTG93ZXJDYXNlKCk7aWYoYz1hLmdldEF0dHJpYnV0ZShkKSwic3RyaW5nIj09dHlwZW9mIGMpe3RyeXtjPSJ0cnVlIj09PWM/ITA6ImZhbHNlIj09PWM/ITE6Im51bGwiPT09Yz9udWxsOitjKyIiPT09Yz8rYzpOLnRlc3QoYyk/bi5wYXJzZUpTT04oYyk6Y31jYXRjaChlKXt9bi5kYXRhKGEsYixjKX1lbHNlIGM9dm9pZCAwfXJldHVybiBjfWZ1bmN0aW9uIFEoYSl7dmFyIGI7Zm9yKGIgaW4gYSlpZigoImRhdGEiIT09Ynx8IW4uaXNFbXB0eU9iamVjdChhW2JdKSkmJiJ0b0pTT04iIT09YilyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBSKGEsYixkLGUpe2lmKG4uYWNjZXB0RGF0YShhKSl7dmFyIGYsZyxoPW4uZXhwYW5kbyxpPWEubm9kZVR5cGUsaj1pP24uY2FjaGU6YSxrPWk/YVtoXTphW2hdJiZoO2lmKGsmJmpba10mJihlfHxqW2tdLmRhdGEpfHx2b2lkIDAhPT1kfHwic3RyaW5nIiE9dHlwZW9mIGIpcmV0dXJuIGt8fChrPWk/YVtoXT1jLnBvcCgpfHxuLmd1aWQrKzpoKSxqW2tdfHwoaltrXT1pP3t9Ont0b0pTT046bi5ub29wfSksKCJvYmplY3QiPT10eXBlb2YgYnx8ImZ1bmN0aW9uIj09dHlwZW9mIGIpJiYoZT9qW2tdPW4uZXh0ZW5kKGpba10sYik6altrXS5kYXRhPW4uZXh0ZW5kKGpba10uZGF0YSxiKSksZz1qW2tdLGV8fChnLmRhdGF8fChnLmRhdGE9e30pLGc9Zy5kYXRhKSx2b2lkIDAhPT1kJiYoZ1tuLmNhbWVsQ2FzZShiKV09ZCksInN0cmluZyI9PXR5cGVvZiBiPyhmPWdbYl0sbnVsbD09ZiYmKGY9Z1tuLmNhbWVsQ2FzZShiKV0pKTpmPWcsZgp9fWZ1bmN0aW9uIFMoYSxiLGMpe2lmKG4uYWNjZXB0RGF0YShhKSl7dmFyIGQsZSxmPWEubm9kZVR5cGUsZz1mP24uY2FjaGU6YSxoPWY/YVtuLmV4cGFuZG9dOm4uZXhwYW5kbztpZihnW2hdKXtpZihiJiYoZD1jP2dbaF06Z1toXS5kYXRhKSl7bi5pc0FycmF5KGIpP2I9Yi5jb25jYXQobi5tYXAoYixuLmNhbWVsQ2FzZSkpOmIgaW4gZD9iPVtiXTooYj1uLmNhbWVsQ2FzZShiKSxiPWIgaW4gZD9bYl06Yi5zcGxpdCgiICIpKSxlPWIubGVuZ3RoO3doaWxlKGUtLSlkZWxldGUgZFtiW2VdXTtpZihjPyFRKGQpOiFuLmlzRW1wdHlPYmplY3QoZCkpcmV0dXJufShjfHwoZGVsZXRlIGdbaF0uZGF0YSxRKGdbaF0pKSkmJihmP24uY2xlYW5EYXRhKFthXSwhMCk6bC5kZWxldGVFeHBhbmRvfHxnIT1nLndpbmRvdz9kZWxldGUgZ1toXTpnW2hdPW51bGwpfX19bi5leHRlbmQoe2NhY2hlOnt9LG5vRGF0YTp7ImFwcGxldCAiOiEwLCJlbWJlZCAiOiEwLCJvYmplY3QgIjoiY2xzaWQ6RDI3Q0RCNkUtQUU2RC0xMWNmLTk2QjgtNDQ0NTUzNTQwMDAwIn0saGFzRGF0YTpmdW5jdGlvbihhKXtyZXR1cm4gYT1hLm5vZGVUeXBlP24uY2FjaGVbYVtuLmV4cGFuZG9dXTphW24uZXhwYW5kb10sISFhJiYhUShhKX0sZGF0YTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIFIoYSxiLGMpfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEsYil7cmV0dXJuIFMoYSxiKX0sX2RhdGE6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBSKGEsYixjLCEwKX0sX3JlbW92ZURhdGE6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gUyhhLGIsITApfX0pLG4uZm4uZXh0ZW5kKHtkYXRhOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGY9dGhpc1swXSxnPWYmJmYuYXR0cmlidXRlcztpZih2b2lkIDA9PT1hKXtpZih0aGlzLmxlbmd0aCYmKGU9bi5kYXRhKGYpLDE9PT1mLm5vZGVUeXBlJiYhbi5fZGF0YShmLCJwYXJzZWRBdHRycyIpKSl7Yz1nLmxlbmd0aDt3aGlsZShjLS0pZD1nW2NdLm5hbWUsMD09PWQuaW5kZXhPZigiZGF0YS0iKSYmKGQ9bi5jYW1lbENhc2UoZC5zbGljZSg1KSksUChmLGQsZVtkXSkpO24uX2RhdGEoZiwicGFyc2VkQXR0cnMiLCEwKX1yZXR1cm4gZX1yZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGE/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7bi5kYXRhKHRoaXMsYSl9KTphcmd1bWVudHMubGVuZ3RoPjE/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7bi5kYXRhKHRoaXMsYSxiKX0pOmY/UChmLGEsbi5kYXRhKGYsYSkpOnZvaWQgMH0scmVtb3ZlRGF0YTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7bi5yZW1vdmVEYXRhKHRoaXMsYSl9KX19KSxuLmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkO3JldHVybiBhPyhiPShifHwiZngiKSsicXVldWUiLGQ9bi5fZGF0YShhLGIpLGMmJighZHx8bi5pc0FycmF5KGMpP2Q9bi5fZGF0YShhLGIsbi5tYWtlQXJyYXkoYykpOmQucHVzaChjKSksZHx8W10pOnZvaWQgMH0sZGVxdWV1ZTpmdW5jdGlvbihhLGIpe2I9Ynx8ImZ4Ijt2YXIgYz1uLnF1ZXVlKGEsYiksZD1jLmxlbmd0aCxlPWMuc2hpZnQoKSxmPW4uX3F1ZXVlSG9va3MoYSxiKSxnPWZ1bmN0aW9uKCl7bi5kZXF1ZXVlKGEsYil9OyJpbnByb2dyZXNzIj09PWUmJihlPWMuc2hpZnQoKSxkLS0pLGUmJigiZngiPT09YiYmYy51bnNoaWZ0KCJpbnByb2dyZXNzIiksZGVsZXRlIGYuc3RvcCxlLmNhbGwoYSxnLGYpKSwhZCYmZiYmZi5lbXB0eS5maXJlKCl9LF9xdWV1ZUhvb2tzOmZ1bmN0aW9uKGEsYil7dmFyIGM9YisicXVldWVIb29rcyI7cmV0dXJuIG4uX2RhdGEoYSxjKXx8bi5fZGF0YShhLGMse2VtcHR5Om4uQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLmFkZChmdW5jdGlvbigpe24uX3JlbW92ZURhdGEoYSxiKyJxdWV1ZSIpLG4uX3JlbW92ZURhdGEoYSxjKX0pfSl9fSksbi5mbi5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGEsYil7dmFyIGM9MjtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGEmJihiPWEsYT0iZngiLGMtLSksYXJndW1lbnRzLmxlbmd0aDxjP24ucXVldWUodGhpc1swXSxhKTp2b2lkIDA9PT1iP3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGM9bi5xdWV1ZSh0aGlzLGEsYik7bi5fcXVldWVIb29rcyh0aGlzLGEpLCJmeCI9PT1hJiYiaW5wcm9ncmVzcyIhPT1jWzBdJiZuLmRlcXVldWUodGhpcyxhKX0pfSxkZXF1ZXVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtuLmRlcXVldWUodGhpcyxhKX0pfSxjbGVhclF1ZXVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnF1ZXVlKGF8fCJmeCIsW10pfSxwcm9taXNlOmZ1bmN0aW9uKGEsYil7dmFyIGMsZD0xLGU9bi5EZWZlcnJlZCgpLGY9dGhpcyxnPXRoaXMubGVuZ3RoLGg9ZnVuY3Rpb24oKXstLWR8fGUucmVzb2x2ZVdpdGgoZixbZl0pfTsic3RyaW5nIiE9dHlwZW9mIGEmJihiPWEsYT12b2lkIDApLGE9YXx8ImZ4Ijt3aGlsZShnLS0pYz1uLl9kYXRhKGZbZ10sYSsicXVldWVIb29rcyIpLGMmJmMuZW1wdHkmJihkKyssYy5lbXB0eS5hZGQoaCkpO3JldHVybiBoKCksZS5wcm9taXNlKGIpfX0pO3ZhciBUPS9bKy1dPyg/OlxkKlwufClcZCsoPzpbZUVdWystXT9cZCt8KS8uc291cmNlLFU9WyJUb3AiLCJSaWdodCIsIkJvdHRvbSIsIkxlZnQiXSxWPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9Ynx8YSwibm9uZSI9PT1uLmNzcyhhLCJkaXNwbGF5Iil8fCFuLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudCxhKX0sVz1uLmFjY2Vzcz1mdW5jdGlvbihhLGIsYyxkLGUsZixnKXt2YXIgaD0wLGk9YS5sZW5ndGgsaj1udWxsPT1jO2lmKCJvYmplY3QiPT09bi50eXBlKGMpKXtlPSEwO2ZvcihoIGluIGMpbi5hY2Nlc3MoYSxiLGgsY1toXSwhMCxmLGcpfWVsc2UgaWYodm9pZCAwIT09ZCYmKGU9ITAsbi5pc0Z1bmN0aW9uKGQpfHwoZz0hMCksaiYmKGc/KGIuY2FsbChhLGQpLGI9bnVsbCk6KGo9YixiPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gai5jYWxsKG4oYSksYyl9KSksYikpZm9yKDtpPmg7aCsrKWIoYVtoXSxjLGc/ZDpkLmNhbGwoYVtoXSxoLGIoYVtoXSxjKSkpO3JldHVybiBlP2E6aj9iLmNhbGwoYSk6aT9iKGFbMF0sYyk6Zn0sWD0vXig/OmNoZWNrYm94fHJhZGlvKSQvaTshZnVuY3Rpb24oKXt2YXIgYT16LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxiPXouY3JlYXRlRWxlbWVudCgiZGl2IiksYz16LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7aWYoYi5zZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIsInQiKSxiLmlubmVySFRNTD0iICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0nL2EnPmE8L2E+IixsLmxlYWRpbmdXaGl0ZXNwYWNlPTM9PT1iLmZpcnN0Q2hpbGQubm9kZVR5cGUsbC50Ym9keT0hYi5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKS5sZW5ndGgsbC5odG1sU2VyaWFsaXplPSEhYi5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpLmxlbmd0aCxsLmh0bWw1Q2xvbmU9Ijw6bmF2PjwvOm5hdj4iIT09ei5jcmVhdGVFbGVtZW50KCJuYXYiKS5jbG9uZU5vZGUoITApLm91dGVySFRNTCxjLnR5cGU9ImNoZWNrYm94IixjLmNoZWNrZWQ9ITAsYS5hcHBlbmRDaGlsZChjKSxsLmFwcGVuZENoZWNrZWQ9Yy5jaGVja2VkLGIuaW5uZXJIVE1MPSI8dGV4dGFyZWE+eDwvdGV4dGFyZWE+IixsLm5vQ2xvbmVDaGVja2VkPSEhYi5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5kZWZhdWx0VmFsdWUsYS5hcHBlbmRDaGlsZChiKSxiLmlubmVySFRNTD0iPGlucHV0IHR5cGU9J3JhZGlvJyBjaGVja2VkPSdjaGVja2VkJyBuYW1lPSd0Jy8+IixsLmNoZWNrQ2xvbmU9Yi5jbG9uZU5vZGUoITApLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmNoZWNrZWQsbC5ub0Nsb25lRXZlbnQ9ITAsYi5hdHRhY2hFdmVudCYmKGIuYXR0YWNoRXZlbnQoIm9uY2xpY2siLGZ1bmN0aW9uKCl7bC5ub0Nsb25lRXZlbnQ9ITF9KSxiLmNsb25lTm9kZSghMCkuY2xpY2soKSksbnVsbD09bC5kZWxldGVFeHBhbmRvKXtsLmRlbGV0ZUV4cGFuZG89ITA7dHJ5e2RlbGV0ZSBiLnRlc3R9Y2F0Y2goZCl7bC5kZWxldGVFeHBhbmRvPSExfX1hPWI9Yz1udWxsfSgpLGZ1bmN0aW9uKCl7dmFyIGIsYyxkPXouY3JlYXRlRWxlbWVudCgiZGl2Iik7Zm9yKGIgaW57c3VibWl0OiEwLGNoYW5nZTohMCxmb2N1c2luOiEwfSljPSJvbiIrYiwobFtiKyJCdWJibGVzIl09YyBpbiBhKXx8KGQuc2V0QXR0cmlidXRlKGMsInQiKSxsW2IrIkJ1YmJsZXMiXT1kLmF0dHJpYnV0ZXNbY10uZXhwYW5kbz09PSExKTtkPW51bGx9KCk7dmFyIFk9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWEpJC9pLFo9L15rZXkvLCQ9L14oPzptb3VzZXxjb250ZXh0bWVudSl8Y2xpY2svLF89L14oPzpmb2N1c2luZm9jdXN8Zm9jdXNvdXRibHVyKSQvLGFiPS9eKFteLl0qKSg/OlwuKC4rKXwpJC87ZnVuY3Rpb24gYmIoKXtyZXR1cm4hMH1mdW5jdGlvbiBjYigpe3JldHVybiExfWZ1bmN0aW9uIGRiKCl7dHJ5e3JldHVybiB6LmFjdGl2ZUVsZW1lbnR9Y2F0Y2goYSl7fX1uLmV2ZW50PXtnbG9iYWw6e30sYWRkOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGYsZyxoLGksaixrLGwsbSxvLHAscSxyPW4uX2RhdGEoYSk7aWYocil7Yy5oYW5kbGVyJiYoaT1jLGM9aS5oYW5kbGVyLGU9aS5zZWxlY3RvciksYy5ndWlkfHwoYy5ndWlkPW4uZ3VpZCsrKSwoZz1yLmV2ZW50cyl8fChnPXIuZXZlbnRzPXt9KSwoaz1yLmhhbmRsZSl8fChrPXIuaGFuZGxlPWZ1bmN0aW9uKGEpe3JldHVybiB0eXBlb2Ygbj09PUx8fGEmJm4uZXZlbnQudHJpZ2dlcmVkPT09YS50eXBlP3ZvaWQgMDpuLmV2ZW50LmRpc3BhdGNoLmFwcGx5KGsuZWxlbSxhcmd1bWVudHMpfSxrLmVsZW09YSksYj0oYnx8IiIpLm1hdGNoKEYpfHxbIiJdLGg9Yi5sZW5ndGg7d2hpbGUoaC0tKWY9YWIuZXhlYyhiW2hdKXx8W10sbz1xPWZbMV0scD0oZlsyXXx8IiIpLnNwbGl0KCIuIikuc29ydCgpLG8mJihqPW4uZXZlbnQuc3BlY2lhbFtvXXx8e30sbz0oZT9qLmRlbGVnYXRlVHlwZTpqLmJpbmRUeXBlKXx8byxqPW4uZXZlbnQuc3BlY2lhbFtvXXx8e30sbD1uLmV4dGVuZCh7dHlwZTpvLG9yaWdUeXBlOnEsZGF0YTpkLGhhbmRsZXI6YyxndWlkOmMuZ3VpZCxzZWxlY3RvcjplLG5lZWRzQ29udGV4dDplJiZuLmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LnRlc3QoZSksbmFtZXNwYWNlOnAuam9pbigiLiIpfSxpKSwobT1nW29dKXx8KG09Z1tvXT1bXSxtLmRlbGVnYXRlQ291bnQ9MCxqLnNldHVwJiZqLnNldHVwLmNhbGwoYSxkLHAsaykhPT0hMXx8KGEuYWRkRXZlbnRMaXN0ZW5lcj9hLmFkZEV2ZW50TGlzdGVuZXIobyxrLCExKTphLmF0dGFjaEV2ZW50JiZhLmF0dGFjaEV2ZW50KCJvbiIrbyxrKSkpLGouYWRkJiYoai5hZGQuY2FsbChhLGwpLGwuaGFuZGxlci5ndWlkfHwobC5oYW5kbGVyLmd1aWQ9Yy5ndWlkKSksZT9tLnNwbGljZShtLmRlbGVnYXRlQ291bnQrKywwLGwpOm0ucHVzaChsKSxuLmV2ZW50Lmdsb2JhbFtvXT0hMCk7YT1udWxsfX0scmVtb3ZlOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGYsZyxoLGksaixrLGwsbSxvLHAscSxyPW4uaGFzRGF0YShhKSYmbi5fZGF0YShhKTtpZihyJiYoaz1yLmV2ZW50cykpe2I9KGJ8fCIiKS5tYXRjaChGKXx8WyIiXSxqPWIubGVuZ3RoO3doaWxlKGotLSlpZihoPWFiLmV4ZWMoYltqXSl8fFtdLG89cT1oWzFdLHA9KGhbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxvKXtsPW4uZXZlbnQuc3BlY2lhbFtvXXx8e30sbz0oZD9sLmRlbGVnYXRlVHlwZTpsLmJpbmRUeXBlKXx8byxtPWtbb118fFtdLGg9aFsyXSYmbmV3IFJlZ0V4cCgiKF58XFwuKSIrcC5qb2luKCJcXC4oPzouKlxcLnwpIikrIihcXC58JCkiKSxpPWY9bS5sZW5ndGg7d2hpbGUoZi0tKWc9bVtmXSwhZSYmcSE9PWcub3JpZ1R5cGV8fGMmJmMuZ3VpZCE9PWcuZ3VpZHx8aCYmIWgudGVzdChnLm5hbWVzcGFjZSl8fGQmJmQhPT1nLnNlbGVjdG9yJiYoIioqIiE9PWR8fCFnLnNlbGVjdG9yKXx8KG0uc3BsaWNlKGYsMSksZy5zZWxlY3RvciYmbS5kZWxlZ2F0ZUNvdW50LS0sbC5yZW1vdmUmJmwucmVtb3ZlLmNhbGwoYSxnKSk7aSYmIW0ubGVuZ3RoJiYobC50ZWFyZG93biYmbC50ZWFyZG93bi5jYWxsKGEscCxyLmhhbmRsZSkhPT0hMXx8bi5yZW1vdmVFdmVudChhLG8sci5oYW5kbGUpLGRlbGV0ZSBrW29dKX1lbHNlIGZvcihvIGluIGspbi5ldmVudC5yZW1vdmUoYSxvK2Jbal0sYyxkLCEwKTtuLmlzRW1wdHlPYmplY3QoaykmJihkZWxldGUgci5oYW5kbGUsbi5fcmVtb3ZlRGF0YShhLCJldmVudHMiKSl9fSx0cmlnZ2VyOmZ1bmN0aW9uKGIsYyxkLGUpe3ZhciBmLGcsaCxpLGssbCxtLG89W2R8fHpdLHA9ai5jYWxsKGIsInR5cGUiKT9iLnR5cGU6YixxPWouY2FsbChiLCJuYW1lc3BhY2UiKT9iLm5hbWVzcGFjZS5zcGxpdCgiLiIpOltdO2lmKGg9bD1kPWR8fHosMyE9PWQubm9kZVR5cGUmJjghPT1kLm5vZGVUeXBlJiYhXy50ZXN0KHArbi5ldmVudC50cmlnZ2VyZWQpJiYocC5pbmRleE9mKCIuIik+PTAmJihxPXAuc3BsaXQoIi4iKSxwPXEuc2hpZnQoKSxxLnNvcnQoKSksZz1wLmluZGV4T2YoIjoiKTwwJiYib24iK3AsYj1iW24uZXhwYW5kb10/YjpuZXcgbi5FdmVudChwLCJvYmplY3QiPT10eXBlb2YgYiYmYiksYi5pc1RyaWdnZXI9ZT8yOjMsYi5uYW1lc3BhY2U9cS5qb2luKCIuIiksYi5uYW1lc3BhY2VfcmU9Yi5uYW1lc3BhY2U/bmV3IFJlZ0V4cCgiKF58XFwuKSIrcS5qb2luKCJcXC4oPzouKlxcLnwpIikrIihcXC58JCkiKTpudWxsLGIucmVzdWx0PXZvaWQgMCxiLnRhcmdldHx8KGIudGFyZ2V0PWQpLGM9bnVsbD09Yz9bYl06bi5tYWtlQXJyYXkoYyxbYl0pLGs9bi5ldmVudC5zcGVjaWFsW3BdfHx7fSxlfHwhay50cmlnZ2VyfHxrLnRyaWdnZXIuYXBwbHkoZCxjKSE9PSExKSl7aWYoIWUmJiFrLm5vQnViYmxlJiYhbi5pc1dpbmRvdyhkKSl7Zm9yKGk9ay5kZWxlZ2F0ZVR5cGV8fHAsXy50ZXN0KGkrcCl8fChoPWgucGFyZW50Tm9kZSk7aDtoPWgucGFyZW50Tm9kZSlvLnB1c2goaCksbD1oO2w9PT0oZC5vd25lckRvY3VtZW50fHx6KSYmby5wdXNoKGwuZGVmYXVsdFZpZXd8fGwucGFyZW50V2luZG93fHxhKX1tPTA7d2hpbGUoKGg9b1ttKytdKSYmIWIuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSliLnR5cGU9bT4xP2k6ay5iaW5kVHlwZXx8cCxmPShuLl9kYXRhKGgsImV2ZW50cyIpfHx7fSlbYi50eXBlXSYmbi5fZGF0YShoLCJoYW5kbGUiKSxmJiZmLmFwcGx5KGgsYyksZj1nJiZoW2ddLGYmJmYuYXBwbHkmJm4uYWNjZXB0RGF0YShoKSYmKGIucmVzdWx0PWYuYXBwbHkoaCxjKSxiLnJlc3VsdD09PSExJiZiLnByZXZlbnREZWZhdWx0KCkpO2lmKGIudHlwZT1wLCFlJiYhYi5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmKCFrLl9kZWZhdWx0fHxrLl9kZWZhdWx0LmFwcGx5KG8ucG9wKCksYyk9PT0hMSkmJm4uYWNjZXB0RGF0YShkKSYmZyYmZFtwXSYmIW4uaXNXaW5kb3coZCkpe2w9ZFtnXSxsJiYoZFtnXT1udWxsKSxuLmV2ZW50LnRyaWdnZXJlZD1wO3RyeXtkW3BdKCl9Y2F0Y2gocil7fW4uZXZlbnQudHJpZ2dlcmVkPXZvaWQgMCxsJiYoZFtnXT1sKX1yZXR1cm4gYi5yZXN1bHR9fSxkaXNwYXRjaDpmdW5jdGlvbihhKXthPW4uZXZlbnQuZml4KGEpO3ZhciBiLGMsZSxmLGcsaD1bXSxpPWQuY2FsbChhcmd1bWVudHMpLGo9KG4uX2RhdGEodGhpcywiZXZlbnRzIil8fHt9KVthLnR5cGVdfHxbXSxrPW4uZXZlbnQuc3BlY2lhbFthLnR5cGVdfHx7fTtpZihpWzBdPWEsYS5kZWxlZ2F0ZVRhcmdldD10aGlzLCFrLnByZURpc3BhdGNofHxrLnByZURpc3BhdGNoLmNhbGwodGhpcyxhKSE9PSExKXtoPW4uZXZlbnQuaGFuZGxlcnMuY2FsbCh0aGlzLGEsaiksYj0wO3doaWxlKChmPWhbYisrXSkmJiFhLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpe2EuY3VycmVudFRhcmdldD1mLmVsZW0sZz0wO3doaWxlKChlPWYuaGFuZGxlcnNbZysrXSkmJiFhLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCkpKCFhLm5hbWVzcGFjZV9yZXx8YS5uYW1lc3BhY2VfcmUudGVzdChlLm5hbWVzcGFjZSkpJiYoYS5oYW5kbGVPYmo9ZSxhLmRhdGE9ZS5kYXRhLGM9KChuLmV2ZW50LnNwZWNpYWxbZS5vcmlnVHlwZV18fHt9KS5oYW5kbGV8fGUuaGFuZGxlcikuYXBwbHkoZi5lbGVtLGkpLHZvaWQgMCE9PWMmJihhLnJlc3VsdD1jKT09PSExJiYoYS5wcmV2ZW50RGVmYXVsdCgpLGEuc3RvcFByb3BhZ2F0aW9uKCkpKX1yZXR1cm4gay5wb3N0RGlzcGF0Y2gmJmsucG9zdERpc3BhdGNoLmNhbGwodGhpcyxhKSxhLnJlc3VsdH19LGhhbmRsZXJzOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGYsZz1bXSxoPWIuZGVsZWdhdGVDb3VudCxpPWEudGFyZ2V0O2lmKGgmJmkubm9kZVR5cGUmJighYS5idXR0b258fCJjbGljayIhPT1hLnR5cGUpKWZvcig7aSE9dGhpcztpPWkucGFyZW50Tm9kZXx8dGhpcylpZigxPT09aS5ub2RlVHlwZSYmKGkuZGlzYWJsZWQhPT0hMHx8ImNsaWNrIiE9PWEudHlwZSkpe2ZvcihlPVtdLGY9MDtoPmY7ZisrKWQ9YltmXSxjPWQuc2VsZWN0b3IrIiAiLHZvaWQgMD09PWVbY10mJihlW2NdPWQubmVlZHNDb250ZXh0P24oYyx0aGlzKS5pbmRleChpKT49MDpuLmZpbmQoYyx0aGlzLG51bGwsW2ldKS5sZW5ndGgpLGVbY10mJmUucHVzaChkKTtlLmxlbmd0aCYmZy5wdXNoKHtlbGVtOmksaGFuZGxlcnM6ZX0pfXJldHVybiBoPGIubGVuZ3RoJiZnLnB1c2goe2VsZW06dGhpcyxoYW5kbGVyczpiLnNsaWNlKGgpfSksZ30sZml4OmZ1bmN0aW9uKGEpe2lmKGFbbi5leHBhbmRvXSlyZXR1cm4gYTt2YXIgYixjLGQsZT1hLnR5cGUsZj1hLGc9dGhpcy5maXhIb29rc1tlXTtnfHwodGhpcy5maXhIb29rc1tlXT1nPSQudGVzdChlKT90aGlzLm1vdXNlSG9va3M6Wi50ZXN0KGUpP3RoaXMua2V5SG9va3M6e30pLGQ9Zy5wcm9wcz90aGlzLnByb3BzLmNvbmNhdChnLnByb3BzKTp0aGlzLnByb3BzLGE9bmV3IG4uRXZlbnQoZiksYj1kLmxlbmd0aDt3aGlsZShiLS0pYz1kW2JdLGFbY109ZltjXTtyZXR1cm4gYS50YXJnZXR8fChhLnRhcmdldD1mLnNyY0VsZW1lbnR8fHopLDM9PT1hLnRhcmdldC5ub2RlVHlwZSYmKGEudGFyZ2V0PWEudGFyZ2V0LnBhcmVudE5vZGUpLGEubWV0YUtleT0hIWEubWV0YUtleSxnLmZpbHRlcj9nLmZpbHRlcihhLGYpOmF9LHByb3BzOiJhbHRLZXkgYnViYmxlcyBjYW5jZWxhYmxlIGN0cmxLZXkgY3VycmVudFRhcmdldCBldmVudFBoYXNlIG1ldGFLZXkgcmVsYXRlZFRhcmdldCBzaGlmdEtleSB0YXJnZXQgdGltZVN0YW1wIHZpZXcgd2hpY2giLnNwbGl0KCIgIiksZml4SG9va3M6e30sa2V5SG9va3M6e3Byb3BzOiJjaGFyIGNoYXJDb2RlIGtleSBrZXlDb2RlIi5zcGxpdCgiICIpLGZpbHRlcjpmdW5jdGlvbihhLGIpe3JldHVybiBudWxsPT1hLndoaWNoJiYoYS53aGljaD1udWxsIT1iLmNoYXJDb2RlP2IuY2hhckNvZGU6Yi5rZXlDb2RlKSxhfX0sbW91c2VIb29rczp7cHJvcHM6ImJ1dHRvbiBidXR0b25zIGNsaWVudFggY2xpZW50WSBmcm9tRWxlbWVudCBvZmZzZXRYIG9mZnNldFkgcGFnZVggcGFnZVkgc2NyZWVuWCBzY3JlZW5ZIHRvRWxlbWVudCIuc3BsaXQoIiAiKSxmaWx0ZXI6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGUsZj1iLmJ1dHRvbixnPWIuZnJvbUVsZW1lbnQ7cmV0dXJuIG51bGw9PWEucGFnZVgmJm51bGwhPWIuY2xpZW50WCYmKGQ9YS50YXJnZXQub3duZXJEb2N1bWVudHx8eixlPWQuZG9jdW1lbnRFbGVtZW50LGM9ZC5ib2R5LGEucGFnZVg9Yi5jbGllbnRYKyhlJiZlLnNjcm9sbExlZnR8fGMmJmMuc2Nyb2xsTGVmdHx8MCktKGUmJmUuY2xpZW50TGVmdHx8YyYmYy5jbGllbnRMZWZ0fHwwKSxhLnBhZ2VZPWIuY2xpZW50WSsoZSYmZS5zY3JvbGxUb3B8fGMmJmMuc2Nyb2xsVG9wfHwwKS0oZSYmZS5jbGllbnRUb3B8fGMmJmMuY2xpZW50VG9wfHwwKSksIWEucmVsYXRlZFRhcmdldCYmZyYmKGEucmVsYXRlZFRhcmdldD1nPT09YS50YXJnZXQ/Yi50b0VsZW1lbnQ6ZyksYS53aGljaHx8dm9pZCAwPT09Znx8KGEud2hpY2g9MSZmPzE6MiZmPzM6NCZmPzI6MCksYX19LHNwZWNpYWw6e2xvYWQ6e25vQnViYmxlOiEwfSxmb2N1czp7dHJpZ2dlcjpmdW5jdGlvbigpe2lmKHRoaXMhPT1kYigpJiZ0aGlzLmZvY3VzKXRyeXtyZXR1cm4gdGhpcy5mb2N1cygpLCExfWNhdGNoKGEpe319LGRlbGVnYXRlVHlwZToiZm9jdXNpbiJ9LGJsdXI6e3RyaWdnZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcz09PWRiKCkmJnRoaXMuYmx1cj8odGhpcy5ibHVyKCksITEpOnZvaWQgMH0sZGVsZWdhdGVUeXBlOiJmb2N1c291dCJ9LGNsaWNrOnt0cmlnZ2VyOmZ1bmN0aW9uKCl7cmV0dXJuIG4ubm9kZU5hbWUodGhpcywiaW5wdXQiKSYmImNoZWNrYm94Ij09PXRoaXMudHlwZSYmdGhpcy5jbGljaz8odGhpcy5jbGljaygpLCExKTp2b2lkIDB9LF9kZWZhdWx0OmZ1bmN0aW9uKGEpe3JldHVybiBuLm5vZGVOYW1lKGEudGFyZ2V0LCJhIil9fSxiZWZvcmV1bmxvYWQ6e3Bvc3REaXNwYXRjaDpmdW5jdGlvbihhKXt2b2lkIDAhPT1hLnJlc3VsdCYmKGEub3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZT1hLnJlc3VsdCl9fX0sc2ltdWxhdGU6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9bi5leHRlbmQobmV3IG4uRXZlbnQsYyx7dHlwZTphLGlzU2ltdWxhdGVkOiEwLG9yaWdpbmFsRXZlbnQ6e319KTtkP24uZXZlbnQudHJpZ2dlcihlLG51bGwsYik6bi5ldmVudC5kaXNwYXRjaC5jYWxsKGIsZSksZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmYy5wcmV2ZW50RGVmYXVsdCgpfX0sbi5yZW1vdmVFdmVudD16LnJlbW92ZUV2ZW50TGlzdGVuZXI/ZnVuY3Rpb24oYSxiLGMpe2EucmVtb3ZlRXZlbnRMaXN0ZW5lciYmYS5yZW1vdmVFdmVudExpc3RlbmVyKGIsYywhMSl9OmZ1bmN0aW9uKGEsYixjKXt2YXIgZD0ib24iK2I7YS5kZXRhY2hFdmVudCYmKHR5cGVvZiBhW2RdPT09TCYmKGFbZF09bnVsbCksYS5kZXRhY2hFdmVudChkLGMpKX0sbi5FdmVudD1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzIGluc3RhbmNlb2Ygbi5FdmVudD8oYSYmYS50eXBlPyh0aGlzLm9yaWdpbmFsRXZlbnQ9YSx0aGlzLnR5cGU9YS50eXBlLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWEuZGVmYXVsdFByZXZlbnRlZHx8dm9pZCAwPT09YS5kZWZhdWx0UHJldmVudGVkJiYoYS5yZXR1cm5WYWx1ZT09PSExfHxhLmdldFByZXZlbnREZWZhdWx0JiZhLmdldFByZXZlbnREZWZhdWx0KCkpP2JiOmNiKTp0aGlzLnR5cGU9YSxiJiZuLmV4dGVuZCh0aGlzLGIpLHRoaXMudGltZVN0YW1wPWEmJmEudGltZVN0YW1wfHxuLm5vdygpLHZvaWQodGhpc1tuLmV4cGFuZG9dPSEwKSk6bmV3IG4uRXZlbnQoYSxiKX0sbi5FdmVudC5wcm90b3R5cGU9e2lzRGVmYXVsdFByZXZlbnRlZDpjYixpc1Byb3BhZ2F0aW9uU3RvcHBlZDpjYixpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDpjYixwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1iYixhJiYoYS5wcmV2ZW50RGVmYXVsdD9hLnByZXZlbnREZWZhdWx0KCk6YS5yZXR1cm5WYWx1ZT0hMSl9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPWJiLGEmJihhLnN0b3BQcm9wYWdhdGlvbiYmYS5zdG9wUHJvcGFnYXRpb24oKSxhLmNhbmNlbEJ1YmJsZT0hMCl9LHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3RoaXMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9YmIsdGhpcy5zdG9wUHJvcGFnYXRpb24oKX19LG4uZWFjaCh7bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCJ9LGZ1bmN0aW9uKGEsYil7bi5ldmVudC5zcGVjaWFsW2FdPXtkZWxlZ2F0ZVR5cGU6YixiaW5kVHlwZTpiLGhhbmRsZTpmdW5jdGlvbihhKXt2YXIgYyxkPXRoaXMsZT1hLnJlbGF0ZWRUYXJnZXQsZj1hLmhhbmRsZU9iajtyZXR1cm4oIWV8fGUhPT1kJiYhbi5jb250YWlucyhkLGUpKSYmKGEudHlwZT1mLm9yaWdUeXBlLGM9Zi5oYW5kbGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxhLnR5cGU9YiksY319fSksbC5zdWJtaXRCdWJibGVzfHwobi5ldmVudC5zcGVjaWFsLnN1Ym1pdD17c2V0dXA6ZnVuY3Rpb24oKXtyZXR1cm4gbi5ub2RlTmFtZSh0aGlzLCJmb3JtIik/ITE6dm9pZCBuLmV2ZW50LmFkZCh0aGlzLCJjbGljay5fc3VibWl0IGtleXByZXNzLl9zdWJtaXQiLGZ1bmN0aW9uKGEpe3ZhciBiPWEudGFyZ2V0LGM9bi5ub2RlTmFtZShiLCJpbnB1dCIpfHxuLm5vZGVOYW1lKGIsImJ1dHRvbiIpP2IuZm9ybTp2b2lkIDA7YyYmIW4uX2RhdGEoYywic3VibWl0QnViYmxlcyIpJiYobi5ldmVudC5hZGQoYywic3VibWl0Ll9zdWJtaXQiLGZ1bmN0aW9uKGEpe2EuX3N1Ym1pdF9idWJibGU9ITB9KSxuLl9kYXRhKGMsInN1Ym1pdEJ1YmJsZXMiLCEwKSl9KX0scG9zdERpc3BhdGNoOmZ1bmN0aW9uKGEpe2EuX3N1Ym1pdF9idWJibGUmJihkZWxldGUgYS5fc3VibWl0X2J1YmJsZSx0aGlzLnBhcmVudE5vZGUmJiFhLmlzVHJpZ2dlciYmbi5ldmVudC5zaW11bGF0ZSgic3VibWl0Iix0aGlzLnBhcmVudE5vZGUsYSwhMCkpfSx0ZWFyZG93bjpmdW5jdGlvbigpe3JldHVybiBuLm5vZGVOYW1lKHRoaXMsImZvcm0iKT8hMTp2b2lkIG4uZXZlbnQucmVtb3ZlKHRoaXMsIi5fc3VibWl0Iil9fSksbC5jaGFuZ2VCdWJibGVzfHwobi5ldmVudC5zcGVjaWFsLmNoYW5nZT17c2V0dXA6ZnVuY3Rpb24oKXtyZXR1cm4gWS50ZXN0KHRoaXMubm9kZU5hbWUpPygoImNoZWNrYm94Ij09PXRoaXMudHlwZXx8InJhZGlvIj09PXRoaXMudHlwZSkmJihuLmV2ZW50LmFkZCh0aGlzLCJwcm9wZXJ0eWNoYW5nZS5fY2hhbmdlIixmdW5jdGlvbihhKXsiY2hlY2tlZCI9PT1hLm9yaWdpbmFsRXZlbnQucHJvcGVydHlOYW1lJiYodGhpcy5fanVzdF9jaGFuZ2VkPSEwKX0pLG4uZXZlbnQuYWRkKHRoaXMsImNsaWNrLl9jaGFuZ2UiLGZ1bmN0aW9uKGEpe3RoaXMuX2p1c3RfY2hhbmdlZCYmIWEuaXNUcmlnZ2VyJiYodGhpcy5fanVzdF9jaGFuZ2VkPSExKSxuLmV2ZW50LnNpbXVsYXRlKCJjaGFuZ2UiLHRoaXMsYSwhMCl9KSksITEpOnZvaWQgbi5ldmVudC5hZGQodGhpcywiYmVmb3JlYWN0aXZhdGUuX2NoYW5nZSIsZnVuY3Rpb24oYSl7dmFyIGI9YS50YXJnZXQ7WS50ZXN0KGIubm9kZU5hbWUpJiYhbi5fZGF0YShiLCJjaGFuZ2VCdWJibGVzIikmJihuLmV2ZW50LmFkZChiLCJjaGFuZ2UuX2NoYW5nZSIsZnVuY3Rpb24oYSl7IXRoaXMucGFyZW50Tm9kZXx8YS5pc1NpbXVsYXRlZHx8YS5pc1RyaWdnZXJ8fG4uZXZlbnQuc2ltdWxhdGUoImNoYW5nZSIsdGhpcy5wYXJlbnROb2RlLGEsITApfSksbi5fZGF0YShiLCJjaGFuZ2VCdWJibGVzIiwhMCkpfSl9LGhhbmRsZTpmdW5jdGlvbihhKXt2YXIgYj1hLnRhcmdldDtyZXR1cm4gdGhpcyE9PWJ8fGEuaXNTaW11bGF0ZWR8fGEuaXNUcmlnZ2VyfHwicmFkaW8iIT09Yi50eXBlJiYiY2hlY2tib3giIT09Yi50eXBlP2EuaGFuZGxlT2JqLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpOnZvaWQgMH0sdGVhcmRvd246ZnVuY3Rpb24oKXtyZXR1cm4gbi5ldmVudC5yZW1vdmUodGhpcywiLl9jaGFuZ2UiKSwhWS50ZXN0KHRoaXMubm9kZU5hbWUpfX0pLGwuZm9jdXNpbkJ1YmJsZXN8fG4uZWFjaCh7Zm9jdXM6ImZvY3VzaW4iLGJsdXI6ImZvY3Vzb3V0In0sZnVuY3Rpb24oYSxiKXt2YXIgYz1mdW5jdGlvbihhKXtuLmV2ZW50LnNpbXVsYXRlKGIsYS50YXJnZXQsbi5ldmVudC5maXgoYSksITApfTtuLmV2ZW50LnNwZWNpYWxbYl09e3NldHVwOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy5vd25lckRvY3VtZW50fHx0aGlzLGU9bi5fZGF0YShkLGIpO2V8fGQuYWRkRXZlbnRMaXN0ZW5lcihhLGMsITApLG4uX2RhdGEoZCxiLChlfHwwKSsxKX0sdGVhcmRvd246ZnVuY3Rpb24oKXt2YXIgZD10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMsZT1uLl9kYXRhKGQsYiktMTtlP24uX2RhdGEoZCxiLGUpOihkLnJlbW92ZUV2ZW50TGlzdGVuZXIoYSxjLCEwKSxuLl9yZW1vdmVEYXRhKGQsYikpfX19KSxuLmZuLmV4dGVuZCh7b246ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZixnO2lmKCJvYmplY3QiPT10eXBlb2YgYSl7InN0cmluZyIhPXR5cGVvZiBiJiYoYz1jfHxiLGI9dm9pZCAwKTtmb3IoZiBpbiBhKXRoaXMub24oZixiLGMsYVtmXSxlKTtyZXR1cm4gdGhpc31pZihudWxsPT1jJiZudWxsPT1kPyhkPWIsYz1iPXZvaWQgMCk6bnVsbD09ZCYmKCJzdHJpbmciPT10eXBlb2YgYj8oZD1jLGM9dm9pZCAwKTooZD1jLGM9YixiPXZvaWQgMCkpLGQ9PT0hMSlkPWNiO2Vsc2UgaWYoIWQpcmV0dXJuIHRoaXM7cmV0dXJuIDE9PT1lJiYoZz1kLGQ9ZnVuY3Rpb24oYSl7cmV0dXJuIG4oKS5vZmYoYSksZy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGQuZ3VpZD1nLmd1aWR8fChnLmd1aWQ9bi5ndWlkKyspKSx0aGlzLmVhY2goZnVuY3Rpb24oKXtuLmV2ZW50LmFkZCh0aGlzLGEsZCxjLGIpfSl9LG9uZTpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gdGhpcy5vbihhLGIsYyxkLDEpfSxvZmY6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGU7aWYoYSYmYS5wcmV2ZW50RGVmYXVsdCYmYS5oYW5kbGVPYmopcmV0dXJuIGQ9YS5oYW5kbGVPYmosbihhLmRlbGVnYXRlVGFyZ2V0KS5vZmYoZC5uYW1lc3BhY2U/ZC5vcmlnVHlwZSsiLiIrZC5uYW1lc3BhY2U6ZC5vcmlnVHlwZSxkLnNlbGVjdG9yLGQuaGFuZGxlciksdGhpcztpZigib2JqZWN0Ij09dHlwZW9mIGEpe2ZvcihlIGluIGEpdGhpcy5vZmYoZSxiLGFbZV0pO3JldHVybiB0aGlzfXJldHVybihiPT09ITF8fCJmdW5jdGlvbiI9PXR5cGVvZiBiKSYmKGM9YixiPXZvaWQgMCksYz09PSExJiYoYz1jYiksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7bi5ldmVudC5yZW1vdmUodGhpcyxhLGMsYil9KX0sdHJpZ2dlcjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtuLmV2ZW50LnRyaWdnZXIoYSxiLHRoaXMpfSl9LHRyaWdnZXJIYW5kbGVyOmZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpc1swXTtyZXR1cm4gYz9uLmV2ZW50LnRyaWdnZXIoYSxiLGMsITApOnZvaWQgMH19KTtmdW5jdGlvbiBlYihhKXt2YXIgYj1mYi5zcGxpdCgifCIpLGM9YS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7aWYoYy5jcmVhdGVFbGVtZW50KXdoaWxlKGIubGVuZ3RoKWMuY3JlYXRlRWxlbWVudChiLnBvcCgpKTtyZXR1cm4gY312YXIgZmI9ImFiYnJ8YXJ0aWNsZXxhc2lkZXxhdWRpb3xiZGl8Y2FudmFzfGRhdGF8ZGF0YWxpc3R8ZGV0YWlsc3xmaWdjYXB0aW9ufGZpZ3VyZXxmb290ZXJ8aGVhZGVyfGhncm91cHxtYXJrfG1ldGVyfG5hdnxvdXRwdXR8cHJvZ3Jlc3N8c2VjdGlvbnxzdW1tYXJ5fHRpbWV8dmlkZW8iLGdiPS8galF1ZXJ5XGQrPSIoPzpudWxsfFxkKykiL2csaGI9bmV3IFJlZ0V4cCgiPCg/OiIrZmIrIilbXFxzLz5dIiwiaSIpLGliPS9eXHMrLyxqYj0vPCg/IWFyZWF8YnJ8Y29sfGVtYmVkfGhyfGltZ3xpbnB1dHxsaW5rfG1ldGF8cGFyYW0pKChbXHc6XSspW14+XSopXC8+L2dpLGtiPS88KFtcdzpdKykvLGxiPS88dGJvZHkvaSxtYj0vPHwmIz9cdys7LyxuYj0vPCg/OnNjcmlwdHxzdHlsZXxsaW5rKS9pLG9iPS9jaGVja2VkXHMqKD86W149XXw9XHMqLmNoZWNrZWQuKS9pLHBiPS9eJHxcLyg/OmphdmF8ZWNtYSlzY3JpcHQvaSxxYj0vXnRydWVcLyguKikvLHJiPS9eXHMqPCEoPzpcW0NEQVRBXFt8LS0pfCg/OlxdXF18LS0pPlxzKiQvZyxzYj17b3B0aW9uOlsxLCI8c2VsZWN0IG11bHRpcGxlPSdtdWx0aXBsZSc+IiwiPC9zZWxlY3Q+Il0sbGVnZW5kOlsxLCI8ZmllbGRzZXQ+IiwiPC9maWVsZHNldD4iXSxhcmVhOlsxLCI8bWFwPiIsIjwvbWFwPiJdLHBhcmFtOlsxLCI8b2JqZWN0PiIsIjwvb2JqZWN0PiJdLHRoZWFkOlsxLCI8dGFibGU+IiwiPC90YWJsZT4iXSx0cjpbMiwiPHRhYmxlPjx0Ym9keT4iLCI8L3Rib2R5PjwvdGFibGU+Il0sY29sOlsyLCI8dGFibGU+PHRib2R5PjwvdGJvZHk+PGNvbGdyb3VwPiIsIjwvY29sZ3JvdXA+PC90YWJsZT4iXSx0ZDpbMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90cj48L3Rib2R5PjwvdGFibGU+Il0sX2RlZmF1bHQ6bC5odG1sU2VyaWFsaXplP1swLCIiLCIiXTpbMSwiWDxkaXY+IiwiPC9kaXY+Il19LHRiPWViKHopLHViPXRiLmFwcGVuZENoaWxkKHouY3JlYXRlRWxlbWVudCgiZGl2IikpO3NiLm9wdGdyb3VwPXNiLm9wdGlvbixzYi50Ym9keT1zYi50Zm9vdD1zYi5jb2xncm91cD1zYi5jYXB0aW9uPXNiLnRoZWFkLHNiLnRoPXNiLnRkO2Z1bmN0aW9uIHZiKGEsYil7dmFyIGMsZCxlPTAsZj10eXBlb2YgYS5nZXRFbGVtZW50c0J5VGFnTmFtZSE9PUw/YS5nZXRFbGVtZW50c0J5VGFnTmFtZShifHwiKiIpOnR5cGVvZiBhLnF1ZXJ5U2VsZWN0b3JBbGwhPT1MP2EucXVlcnlTZWxlY3RvckFsbChifHwiKiIpOnZvaWQgMDtpZighZilmb3IoZj1bXSxjPWEuY2hpbGROb2Rlc3x8YTtudWxsIT0oZD1jW2VdKTtlKyspIWJ8fG4ubm9kZU5hbWUoZCxiKT9mLnB1c2goZCk6bi5tZXJnZShmLHZiKGQsYikpO3JldHVybiB2b2lkIDA9PT1ifHxiJiZuLm5vZGVOYW1lKGEsYik/bi5tZXJnZShbYV0sZik6Zn1mdW5jdGlvbiB3YihhKXtYLnRlc3QoYS50eXBlKSYmKGEuZGVmYXVsdENoZWNrZWQ9YS5jaGVja2VkKX1mdW5jdGlvbiB4YihhLGIpe3JldHVybiBuLm5vZGVOYW1lKGEsInRhYmxlIikmJm4ubm9kZU5hbWUoMTEhPT1iLm5vZGVUeXBlP2I6Yi5maXJzdENoaWxkLCJ0ciIpP2EuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRib2R5IilbMF18fGEuYXBwZW5kQ2hpbGQoYS5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRib2R5IikpOmF9ZnVuY3Rpb24geWIoYSl7cmV0dXJuIGEudHlwZT0obnVsbCE9PW4uZmluZC5hdHRyKGEsInR5cGUiKSkrIi8iK2EudHlwZSxhfWZ1bmN0aW9uIHpiKGEpe3ZhciBiPXFiLmV4ZWMoYS50eXBlKTtyZXR1cm4gYj9hLnR5cGU9YlsxXTphLnJlbW92ZUF0dHJpYnV0ZSgidHlwZSIpLGF9ZnVuY3Rpb24gQWIoYSxiKXtmb3IodmFyIGMsZD0wO251bGwhPShjPWFbZF0pO2QrKyluLl9kYXRhKGMsImdsb2JhbEV2YWwiLCFifHxuLl9kYXRhKGJbZF0sImdsb2JhbEV2YWwiKSl9ZnVuY3Rpb24gQmIoYSxiKXtpZigxPT09Yi5ub2RlVHlwZSYmbi5oYXNEYXRhKGEpKXt2YXIgYyxkLGUsZj1uLl9kYXRhKGEpLGc9bi5fZGF0YShiLGYpLGg9Zi5ldmVudHM7aWYoaCl7ZGVsZXRlIGcuaGFuZGxlLGcuZXZlbnRzPXt9O2ZvcihjIGluIGgpZm9yKGQ9MCxlPWhbY10ubGVuZ3RoO2U+ZDtkKyspbi5ldmVudC5hZGQoYixjLGhbY11bZF0pfWcuZGF0YSYmKGcuZGF0YT1uLmV4dGVuZCh7fSxnLmRhdGEpKX19ZnVuY3Rpb24gQ2IoYSxiKXt2YXIgYyxkLGU7aWYoMT09PWIubm9kZVR5cGUpe2lmKGM9Yi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLCFsLm5vQ2xvbmVFdmVudCYmYltuLmV4cGFuZG9dKXtlPW4uX2RhdGEoYik7Zm9yKGQgaW4gZS5ldmVudHMpbi5yZW1vdmVFdmVudChiLGQsZS5oYW5kbGUpO2IucmVtb3ZlQXR0cmlidXRlKG4uZXhwYW5kbyl9InNjcmlwdCI9PT1jJiZiLnRleHQhPT1hLnRleHQ/KHliKGIpLnRleHQ9YS50ZXh0LHpiKGIpKToib2JqZWN0Ij09PWM/KGIucGFyZW50Tm9kZSYmKGIub3V0ZXJIVE1MPWEub3V0ZXJIVE1MKSxsLmh0bWw1Q2xvbmUmJmEuaW5uZXJIVE1MJiYhbi50cmltKGIuaW5uZXJIVE1MKSYmKGIuaW5uZXJIVE1MPWEuaW5uZXJIVE1MKSk6ImlucHV0Ij09PWMmJlgudGVzdChhLnR5cGUpPyhiLmRlZmF1bHRDaGVja2VkPWIuY2hlY2tlZD1hLmNoZWNrZWQsYi52YWx1ZSE9PWEudmFsdWUmJihiLnZhbHVlPWEudmFsdWUpKToib3B0aW9uIj09PWM/Yi5kZWZhdWx0U2VsZWN0ZWQ9Yi5zZWxlY3RlZD1hLmRlZmF1bHRTZWxlY3RlZDooImlucHV0Ij09PWN8fCJ0ZXh0YXJlYSI9PT1jKSYmKGIuZGVmYXVsdFZhbHVlPWEuZGVmYXVsdFZhbHVlKX19bi5leHRlbmQoe2Nsb25lOmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGYsZyxoLGk9bi5jb250YWlucyhhLm93bmVyRG9jdW1lbnQsYSk7aWYobC5odG1sNUNsb25lfHxuLmlzWE1MRG9jKGEpfHwhaGIudGVzdCgiPCIrYS5ub2RlTmFtZSsiPiIpP2Y9YS5jbG9uZU5vZGUoITApOih1Yi5pbm5lckhUTUw9YS5vdXRlckhUTUwsdWIucmVtb3ZlQ2hpbGQoZj11Yi5maXJzdENoaWxkKSksIShsLm5vQ2xvbmVFdmVudCYmbC5ub0Nsb25lQ2hlY2tlZHx8MSE9PWEubm9kZVR5cGUmJjExIT09YS5ub2RlVHlwZXx8bi5pc1hNTERvYyhhKSkpZm9yKGQ9dmIoZiksaD12YihhKSxnPTA7bnVsbCE9KGU9aFtnXSk7KytnKWRbZ10mJkNiKGUsZFtnXSk7aWYoYilpZihjKWZvcihoPWh8fHZiKGEpLGQ9ZHx8dmIoZiksZz0wO251bGwhPShlPWhbZ10pO2crKylCYihlLGRbZ10pO2Vsc2UgQmIoYSxmKTtyZXR1cm4gZD12YihmLCJzY3JpcHQiKSxkLmxlbmd0aD4wJiZBYihkLCFpJiZ2YihhLCJzY3JpcHQiKSksZD1oPWU9bnVsbCxmfSxidWlsZEZyYWdtZW50OmZ1bmN0aW9uKGEsYixjLGQpe2Zvcih2YXIgZSxmLGcsaCxpLGosayxtPWEubGVuZ3RoLG89ZWIoYikscD1bXSxxPTA7bT5xO3ErKylpZihmPWFbcV0sZnx8MD09PWYpaWYoIm9iamVjdCI9PT1uLnR5cGUoZikpbi5tZXJnZShwLGYubm9kZVR5cGU/W2ZdOmYpO2Vsc2UgaWYobWIudGVzdChmKSl7aD1ofHxvLmFwcGVuZENoaWxkKGIuY3JlYXRlRWxlbWVudCgiZGl2IikpLGk9KGtiLmV4ZWMoZil8fFsiIiwiIl0pWzFdLnRvTG93ZXJDYXNlKCksaz1zYltpXXx8c2IuX2RlZmF1bHQsaC5pbm5lckhUTUw9a1sxXStmLnJlcGxhY2UoamIsIjwkMT48LyQyPiIpK2tbMl0sZT1rWzBdO3doaWxlKGUtLSloPWgubGFzdENoaWxkO2lmKCFsLmxlYWRpbmdXaGl0ZXNwYWNlJiZpYi50ZXN0KGYpJiZwLnB1c2goYi5jcmVhdGVUZXh0Tm9kZShpYi5leGVjKGYpWzBdKSksIWwudGJvZHkpe2Y9InRhYmxlIiE9PWl8fGxiLnRlc3QoZik/Ijx0YWJsZT4iIT09a1sxXXx8bGIudGVzdChmKT8wOmg6aC5maXJzdENoaWxkLGU9ZiYmZi5jaGlsZE5vZGVzLmxlbmd0aDt3aGlsZShlLS0pbi5ub2RlTmFtZShqPWYuY2hpbGROb2Rlc1tlXSwidGJvZHkiKSYmIWouY2hpbGROb2Rlcy5sZW5ndGgmJmYucmVtb3ZlQ2hpbGQoail9bi5tZXJnZShwLGguY2hpbGROb2RlcyksaC50ZXh0Q29udGVudD0iIjt3aGlsZShoLmZpcnN0Q2hpbGQpaC5yZW1vdmVDaGlsZChoLmZpcnN0Q2hpbGQpO2g9by5sYXN0Q2hpbGR9ZWxzZSBwLnB1c2goYi5jcmVhdGVUZXh0Tm9kZShmKSk7aCYmby5yZW1vdmVDaGlsZChoKSxsLmFwcGVuZENoZWNrZWR8fG4uZ3JlcCh2YihwLCJpbnB1dCIpLHdiKSxxPTA7d2hpbGUoZj1wW3ErK10paWYoKCFkfHwtMT09PW4uaW5BcnJheShmLGQpKSYmKGc9bi5jb250YWlucyhmLm93bmVyRG9jdW1lbnQsZiksaD12YihvLmFwcGVuZENoaWxkKGYpLCJzY3JpcHQiKSxnJiZBYihoKSxjKSl7ZT0wO3doaWxlKGY9aFtlKytdKXBiLnRlc3QoZi50eXBlfHwiIikmJmMucHVzaChmKX1yZXR1cm4gaD1udWxsLG99LGNsZWFuRGF0YTpmdW5jdGlvbihhLGIpe2Zvcih2YXIgZCxlLGYsZyxoPTAsaT1uLmV4cGFuZG8saj1uLmNhY2hlLGs9bC5kZWxldGVFeHBhbmRvLG09bi5ldmVudC5zcGVjaWFsO251bGwhPShkPWFbaF0pO2grKylpZigoYnx8bi5hY2NlcHREYXRhKGQpKSYmKGY9ZFtpXSxnPWYmJmpbZl0pKXtpZihnLmV2ZW50cylmb3IoZSBpbiBnLmV2ZW50cyltW2VdP24uZXZlbnQucmVtb3ZlKGQsZSk6bi5yZW1vdmVFdmVudChkLGUsZy5oYW5kbGUpO2pbZl0mJihkZWxldGUgaltmXSxrP2RlbGV0ZSBkW2ldOnR5cGVvZiBkLnJlbW92ZUF0dHJpYnV0ZSE9PUw/ZC5yZW1vdmVBdHRyaWJ1dGUoaSk6ZFtpXT1udWxsLGMucHVzaChmKSl9fX0pLG4uZm4uZXh0ZW5kKHt0ZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBXKHRoaXMsZnVuY3Rpb24oYSl7cmV0dXJuIHZvaWQgMD09PWE/bi50ZXh0KHRoaXMpOnRoaXMuZW1wdHkoKS5hcHBlbmQoKHRoaXNbMF0mJnRoaXNbMF0ub3duZXJEb2N1bWVudHx8eikuY3JlYXRlVGV4dE5vZGUoYSkpfSxudWxsLGEsYXJndW1lbnRzLmxlbmd0aCl9LGFwcGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cyxmdW5jdGlvbihhKXtpZigxPT09dGhpcy5ub2RlVHlwZXx8MTE9PT10aGlzLm5vZGVUeXBlfHw5PT09dGhpcy5ub2RlVHlwZSl7dmFyIGI9eGIodGhpcyxhKTtiLmFwcGVuZENoaWxkKGEpfX0pfSxwcmVwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZ1bmN0aW9uKGEpe2lmKDE9PT10aGlzLm5vZGVUeXBlfHwxMT09PXRoaXMubm9kZVR5cGV8fDk9PT10aGlzLm5vZGVUeXBlKXt2YXIgYj14Yih0aGlzLGEpO2IuaW5zZXJ0QmVmb3JlKGEsYi5maXJzdENoaWxkKX19KX0sYmVmb3JlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZ1bmN0aW9uKGEpe3RoaXMucGFyZW50Tm9kZSYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLHRoaXMpfSl9LGFmdGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZ1bmN0aW9uKGEpe3RoaXMucGFyZW50Tm9kZSYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLHRoaXMubmV4dFNpYmxpbmcpfSl9LHJlbW92ZTpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYyxkPWE/bi5maWx0ZXIoYSx0aGlzKTp0aGlzLGU9MDtudWxsIT0oYz1kW2VdKTtlKyspYnx8MSE9PWMubm9kZVR5cGV8fG4uY2xlYW5EYXRhKHZiKGMpKSxjLnBhcmVudE5vZGUmJihiJiZuLmNvbnRhaW5zKGMub3duZXJEb2N1bWVudCxjKSYmQWIodmIoYywic2NyaXB0IikpLGMucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChjKSk7cmV0dXJuIHRoaXN9LGVtcHR5OmZ1bmN0aW9uKCl7Zm9yKHZhciBhLGI9MDtudWxsIT0oYT10aGlzW2JdKTtiKyspezE9PT1hLm5vZGVUeXBlJiZuLmNsZWFuRGF0YSh2YihhLCExKSk7d2hpbGUoYS5maXJzdENoaWxkKWEucmVtb3ZlQ2hpbGQoYS5maXJzdENoaWxkKTthLm9wdGlvbnMmJm4ubm9kZU5hbWUoYSwic2VsZWN0IikmJihhLm9wdGlvbnMubGVuZ3RoPTApfXJldHVybiB0aGlzfSxjbG9uZTpmdW5jdGlvbihhLGIpe3JldHVybiBhPW51bGw9PWE/ITE6YSxiPW51bGw9PWI/YTpiLHRoaXMubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIG4uY2xvbmUodGhpcyxhLGIpfSl9LGh0bWw6ZnVuY3Rpb24oYSl7cmV0dXJuIFcodGhpcyxmdW5jdGlvbihhKXt2YXIgYj10aGlzWzBdfHx7fSxjPTAsZD10aGlzLmxlbmd0aDtpZih2b2lkIDA9PT1hKXJldHVybiAxPT09Yi5ub2RlVHlwZT9iLmlubmVySFRNTC5yZXBsYWNlKGdiLCIiKTp2b2lkIDA7aWYoISgic3RyaW5nIiE9dHlwZW9mIGF8fG5iLnRlc3QoYSl8fCFsLmh0bWxTZXJpYWxpemUmJmhiLnRlc3QoYSl8fCFsLmxlYWRpbmdXaGl0ZXNwYWNlJiZpYi50ZXN0KGEpfHxzYlsoa2IuZXhlYyhhKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKV0pKXthPWEucmVwbGFjZShqYiwiPCQxPjwvJDI+Iik7dHJ5e2Zvcig7ZD5jO2MrKyliPXRoaXNbY118fHt9LDE9PT1iLm5vZGVUeXBlJiYobi5jbGVhbkRhdGEodmIoYiwhMSkpLGIuaW5uZXJIVE1MPWEpO2I9MH1jYXRjaChlKXt9fWImJnRoaXMuZW1wdHkoKS5hcHBlbmQoYSl9LG51bGwsYSxhcmd1bWVudHMubGVuZ3RoKX0scmVwbGFjZVdpdGg6ZnVuY3Rpb24oKXt2YXIgYT1hcmd1bWVudHNbMF07cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZ1bmN0aW9uKGIpe2E9dGhpcy5wYXJlbnROb2RlLG4uY2xlYW5EYXRhKHZiKHRoaXMpKSxhJiZhLnJlcGxhY2VDaGlsZChiLHRoaXMpfSksYSYmKGEubGVuZ3RofHxhLm5vZGVUeXBlKT90aGlzOnRoaXMucmVtb3ZlKCl9LGRldGFjaDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5yZW1vdmUoYSwhMCl9LGRvbU1hbmlwOmZ1bmN0aW9uKGEsYil7YT1lLmFwcGx5KFtdLGEpO3ZhciBjLGQsZixnLGgsaSxqPTAsaz10aGlzLmxlbmd0aCxtPXRoaXMsbz1rLTEscD1hWzBdLHE9bi5pc0Z1bmN0aW9uKHApO2lmKHF8fGs+MSYmInN0cmluZyI9PXR5cGVvZiBwJiYhbC5jaGVja0Nsb25lJiZvYi50ZXN0KHApKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYyl7dmFyIGQ9bS5lcShjKTtxJiYoYVswXT1wLmNhbGwodGhpcyxjLGQuaHRtbCgpKSksZC5kb21NYW5pcChhLGIpfSk7aWYoayYmKGk9bi5idWlsZEZyYWdtZW50KGEsdGhpc1swXS5vd25lckRvY3VtZW50LCExLHRoaXMpLGM9aS5maXJzdENoaWxkLDE9PT1pLmNoaWxkTm9kZXMubGVuZ3RoJiYoaT1jKSxjKSl7Zm9yKGc9bi5tYXAodmIoaSwic2NyaXB0IikseWIpLGY9Zy5sZW5ndGg7az5qO2orKylkPWksaiE9PW8mJihkPW4uY2xvbmUoZCwhMCwhMCksZiYmbi5tZXJnZShnLHZiKGQsInNjcmlwdCIpKSksYi5jYWxsKHRoaXNbal0sZCxqKTtpZihmKWZvcihoPWdbZy5sZW5ndGgtMV0ub3duZXJEb2N1bWVudCxuLm1hcChnLHpiKSxqPTA7Zj5qO2orKylkPWdbal0scGIudGVzdChkLnR5cGV8fCIiKSYmIW4uX2RhdGEoZCwiZ2xvYmFsRXZhbCIpJiZuLmNvbnRhaW5zKGgsZCkmJihkLnNyYz9uLl9ldmFsVXJsJiZuLl9ldmFsVXJsKGQuc3JjKTpuLmdsb2JhbEV2YWwoKGQudGV4dHx8ZC50ZXh0Q29udGVudHx8ZC5pbm5lckhUTUx8fCIiKS5yZXBsYWNlKHJiLCIiKSkpO2k9Yz1udWxsfXJldHVybiB0aGlzfX0pLG4uZWFjaCh7YXBwZW5kVG86ImFwcGVuZCIscHJlcGVuZFRvOiJwcmVwZW5kIixpbnNlcnRCZWZvcmU6ImJlZm9yZSIsaW5zZXJ0QWZ0ZXI6ImFmdGVyIixyZXBsYWNlQWxsOiJyZXBsYWNlV2l0aCJ9LGZ1bmN0aW9uKGEsYil7bi5mblthXT1mdW5jdGlvbihhKXtmb3IodmFyIGMsZD0wLGU9W10sZz1uKGEpLGg9Zy5sZW5ndGgtMTtoPj1kO2QrKyljPWQ9PT1oP3RoaXM6dGhpcy5jbG9uZSghMCksbihnW2RdKVtiXShjKSxmLmFwcGx5KGUsYy5nZXQoKSk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGUpfX0pO3ZhciBEYixFYj17fTtmdW5jdGlvbiBGYihiLGMpe3ZhciBkPW4oYy5jcmVhdGVFbGVtZW50KGIpKS5hcHBlbmRUbyhjLmJvZHkpLGU9YS5nZXREZWZhdWx0Q29tcHV0ZWRTdHlsZT9hLmdldERlZmF1bHRDb21wdXRlZFN0eWxlKGRbMF0pLmRpc3BsYXk6bi5jc3MoZFswXSwiZGlzcGxheSIpO3JldHVybiBkLmRldGFjaCgpLGV9ZnVuY3Rpb24gR2IoYSl7dmFyIGI9eixjPUViW2FdO3JldHVybiBjfHwoYz1GYihhLGIpLCJub25lIiE9PWMmJmN8fChEYj0oRGJ8fG4oIjxpZnJhbWUgZnJhbWVib3JkZXI9JzAnIHdpZHRoPScwJyBoZWlnaHQ9JzAnLz4iKSkuYXBwZW5kVG8oYi5kb2N1bWVudEVsZW1lbnQpLGI9KERiWzBdLmNvbnRlbnRXaW5kb3d8fERiWzBdLmNvbnRlbnREb2N1bWVudCkuZG9jdW1lbnQsYi53cml0ZSgpLGIuY2xvc2UoKSxjPUZiKGEsYiksRGIuZGV0YWNoKCkpLEViW2FdPWMpLGN9IWZ1bmN0aW9uKCl7dmFyIGEsYixjPXouY3JlYXRlRWxlbWVudCgiZGl2IiksZD0iLXdlYmtpdC1ib3gtc2l6aW5nOmNvbnRlbnQtYm94Oy1tb3otYm94LXNpemluZzpjb250ZW50LWJveDtib3gtc2l6aW5nOmNvbnRlbnQtYm94O2Rpc3BsYXk6YmxvY2s7cGFkZGluZzowO21hcmdpbjowO2JvcmRlcjowIjtjLmlubmVySFRNTD0iICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0nL2EnPmE8L2E+PGlucHV0IHR5cGU9J2NoZWNrYm94Jy8+IixhPWMuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXSxhLnN0eWxlLmNzc1RleHQ9ImZsb2F0OmxlZnQ7b3BhY2l0eTouNSIsbC5vcGFjaXR5PS9eMC41Ly50ZXN0KGEuc3R5bGUub3BhY2l0eSksbC5jc3NGbG9hdD0hIWEuc3R5bGUuY3NzRmxvYXQsYy5zdHlsZS5iYWNrZ3JvdW5kQ2xpcD0iY29udGVudC1ib3giLGMuY2xvbmVOb2RlKCEwKS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcD0iIixsLmNsZWFyQ2xvbmVTdHlsZT0iY29udGVudC1ib3giPT09Yy5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCxhPWM9bnVsbCxsLnNocmlua1dyYXBCbG9ja3M9ZnVuY3Rpb24oKXt2YXIgYSxjLGUsZjtpZihudWxsPT1iKXtpZihhPXouZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSwhYSlyZXR1cm47Zj0iYm9yZGVyOjA7d2lkdGg6MDtoZWlnaHQ6MDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0Oi05OTk5cHgiLGM9ei5jcmVhdGVFbGVtZW50KCJkaXYiKSxlPXouY3JlYXRlRWxlbWVudCgiZGl2IiksYS5hcHBlbmRDaGlsZChjKS5hcHBlbmRDaGlsZChlKSxiPSExLHR5cGVvZiBlLnN0eWxlLnpvb20hPT1MJiYoZS5zdHlsZS5jc3NUZXh0PWQrIjt3aWR0aDoxcHg7cGFkZGluZzoxcHg7em9vbToxIixlLmlubmVySFRNTD0iPGRpdj48L2Rpdj4iLGUuZmlyc3RDaGlsZC5zdHlsZS53aWR0aD0iNXB4IixiPTMhPT1lLm9mZnNldFdpZHRoKSxhLnJlbW92ZUNoaWxkKGMpLGE9Yz1lPW51bGx9cmV0dXJuIGJ9fSgpO3ZhciBIYj0vXm1hcmdpbi8sSWI9bmV3IFJlZ0V4cCgiXigiK1QrIikoPyFweClbYS16JV0rJCIsImkiKSxKYixLYixMYj0vXih0b3B8cmlnaHR8Ym90dG9tfGxlZnQpJC87YS5nZXRDb21wdXRlZFN0eWxlPyhKYj1mdW5jdGlvbihhKXtyZXR1cm4gYS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoYSxudWxsKX0sS2I9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnLGg9YS5zdHlsZTtyZXR1cm4gYz1jfHxKYihhKSxnPWM/Yy5nZXRQcm9wZXJ0eVZhbHVlKGIpfHxjW2JdOnZvaWQgMCxjJiYoIiIhPT1nfHxuLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudCxhKXx8KGc9bi5zdHlsZShhLGIpKSxJYi50ZXN0KGcpJiZIYi50ZXN0KGIpJiYoZD1oLndpZHRoLGU9aC5taW5XaWR0aCxmPWgubWF4V2lkdGgsaC5taW5XaWR0aD1oLm1heFdpZHRoPWgud2lkdGg9ZyxnPWMud2lkdGgsaC53aWR0aD1kLGgubWluV2lkdGg9ZSxoLm1heFdpZHRoPWYpKSx2b2lkIDA9PT1nP2c6ZysiIn0pOnouZG9jdW1lbnRFbGVtZW50LmN1cnJlbnRTdHlsZSYmKEpiPWZ1bmN0aW9uKGEpe3JldHVybiBhLmN1cnJlbnRTdHlsZX0sS2I9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnLGg9YS5zdHlsZTtyZXR1cm4gYz1jfHxKYihhKSxnPWM/Y1tiXTp2b2lkIDAsbnVsbD09ZyYmaCYmaFtiXSYmKGc9aFtiXSksSWIudGVzdChnKSYmIUxiLnRlc3QoYikmJihkPWgubGVmdCxlPWEucnVudGltZVN0eWxlLGY9ZSYmZS5sZWZ0LGYmJihlLmxlZnQ9YS5jdXJyZW50U3R5bGUubGVmdCksaC5sZWZ0PSJmb250U2l6ZSI9PT1iPyIxZW0iOmcsZz1oLnBpeGVsTGVmdCsicHgiLGgubGVmdD1kLGYmJihlLmxlZnQ9ZikpLHZvaWQgMD09PWc/ZzpnKyIifHwiYXV0byJ9KTtmdW5jdGlvbiBNYihhLGIpe3JldHVybntnZXQ6ZnVuY3Rpb24oKXt2YXIgYz1hKCk7aWYobnVsbCE9YylyZXR1cm4gYz92b2lkIGRlbGV0ZSB0aGlzLmdldDoodGhpcy5nZXQ9YikuYXBwbHkodGhpcyxhcmd1bWVudHMpfX19IWZ1bmN0aW9uKCl7dmFyIGIsYyxkLGUsZixnLGg9ei5jcmVhdGVFbGVtZW50KCJkaXYiKSxpPSJib3JkZXI6MDt3aWR0aDowO2hlaWdodDowO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6LTk5OTlweCIsaj0iLXdlYmtpdC1ib3gtc2l6aW5nOmNvbnRlbnQtYm94Oy1tb3otYm94LXNpemluZzpjb250ZW50LWJveDtib3gtc2l6aW5nOmNvbnRlbnQtYm94O2Rpc3BsYXk6YmxvY2s7cGFkZGluZzowO21hcmdpbjowO2JvcmRlcjowIjtoLmlubmVySFRNTD0iICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0nL2EnPmE8L2E+PGlucHV0IHR5cGU9J2NoZWNrYm94Jy8+IixiPWguZ2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXSxiLnN0eWxlLmNzc1RleHQ9ImZsb2F0OmxlZnQ7b3BhY2l0eTouNSIsbC5vcGFjaXR5PS9eMC41Ly50ZXN0KGIuc3R5bGUub3BhY2l0eSksbC5jc3NGbG9hdD0hIWIuc3R5bGUuY3NzRmxvYXQsaC5zdHlsZS5iYWNrZ3JvdW5kQ2xpcD0iY29udGVudC1ib3giLGguY2xvbmVOb2RlKCEwKS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcD0iIixsLmNsZWFyQ2xvbmVTdHlsZT0iY29udGVudC1ib3giPT09aC5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCxiPWg9bnVsbCxuLmV4dGVuZChsLHtyZWxpYWJsZUhpZGRlbk9mZnNldHM6ZnVuY3Rpb24oKXtpZihudWxsIT1jKXJldHVybiBjO3ZhciBhLGIsZCxlPXouY3JlYXRlRWxlbWVudCgiZGl2IiksZj16LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF07aWYoZilyZXR1cm4gZS5zZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIsInQiKSxlLmlubmVySFRNTD0iICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0nL2EnPmE8L2E+PGlucHV0IHR5cGU9J2NoZWNrYm94Jy8+IixhPXouY3JlYXRlRWxlbWVudCgiZGl2IiksYS5zdHlsZS5jc3NUZXh0PWksZi5hcHBlbmRDaGlsZChhKS5hcHBlbmRDaGlsZChlKSxlLmlubmVySFRNTD0iPHRhYmxlPjx0cj48dGQ+PC90ZD48dGQ+dDwvdGQ+PC90cj48L3RhYmxlPiIsYj1lLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZCIpLGJbMF0uc3R5bGUuY3NzVGV4dD0icGFkZGluZzowO21hcmdpbjowO2JvcmRlcjowO2Rpc3BsYXk6bm9uZSIsZD0wPT09YlswXS5vZmZzZXRIZWlnaHQsYlswXS5zdHlsZS5kaXNwbGF5PSIiLGJbMV0uc3R5bGUuZGlzcGxheT0ibm9uZSIsYz1kJiYwPT09YlswXS5vZmZzZXRIZWlnaHQsZi5yZW1vdmVDaGlsZChhKSxlPWY9bnVsbCxjfSxib3hTaXppbmc6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09ZCYmaygpLGR9LGJveFNpemluZ1JlbGlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PWUmJmsoKSxlfSxwaXhlbFBvc2l0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PWYmJmsoKSxmfSxyZWxpYWJsZU1hcmdpblJpZ2h0OmZ1bmN0aW9uKCl7dmFyIGIsYyxkLGU7aWYobnVsbD09ZyYmYS5nZXRDb21wdXRlZFN0eWxlKXtpZihiPXouZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSwhYilyZXR1cm47Yz16LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGQ9ei5jcmVhdGVFbGVtZW50KCJkaXYiKSxjLnN0eWxlLmNzc1RleHQ9aSxiLmFwcGVuZENoaWxkKGMpLmFwcGVuZENoaWxkKGQpLGU9ZC5hcHBlbmRDaGlsZCh6LmNyZWF0ZUVsZW1lbnQoImRpdiIpKSxlLnN0eWxlLmNzc1RleHQ9ZC5zdHlsZS5jc3NUZXh0PWosZS5zdHlsZS5tYXJnaW5SaWdodD1lLnN0eWxlLndpZHRoPSIwIixkLnN0eWxlLndpZHRoPSIxcHgiLGc9IXBhcnNlRmxvYXQoKGEuZ2V0Q29tcHV0ZWRTdHlsZShlLG51bGwpfHx7fSkubWFyZ2luUmlnaHQpLGIucmVtb3ZlQ2hpbGQoYyl9cmV0dXJuIGd9fSk7ZnVuY3Rpb24gaygpe3ZhciBiLGMsaD16LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF07aCYmKGI9ei5jcmVhdGVFbGVtZW50KCJkaXYiKSxjPXouY3JlYXRlRWxlbWVudCgiZGl2IiksYi5zdHlsZS5jc3NUZXh0PWksaC5hcHBlbmRDaGlsZChiKS5hcHBlbmRDaGlsZChjKSxjLnN0eWxlLmNzc1RleHQ9Ii13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94Oy1tb3otYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDtwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmJsb2NrO3BhZGRpbmc6MXB4O2JvcmRlcjoxcHg7d2lkdGg6NHB4O21hcmdpbi10b3A6MSU7dG9wOjElIixuLnN3YXAoaCxudWxsIT1oLnN0eWxlLnpvb20/e3pvb206MX06e30sZnVuY3Rpb24oKXtkPTQ9PT1jLm9mZnNldFdpZHRofSksZT0hMCxmPSExLGc9ITAsYS5nZXRDb21wdXRlZFN0eWxlJiYoZj0iMSUiIT09KGEuZ2V0Q29tcHV0ZWRTdHlsZShjLG51bGwpfHx7fSkudG9wLGU9IjRweCI9PT0oYS5nZXRDb21wdXRlZFN0eWxlKGMsbnVsbCl8fHt3aWR0aDoiNHB4In0pLndpZHRoKSxoLnJlbW92ZUNoaWxkKGIpLGM9aD1udWxsKX19KCksbi5zd2FwPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlLGYsZz17fTtmb3IoZiBpbiBiKWdbZl09YS5zdHlsZVtmXSxhLnN0eWxlW2ZdPWJbZl07ZT1jLmFwcGx5KGEsZHx8W10pO2ZvcihmIGluIGIpYS5zdHlsZVtmXT1nW2ZdO3JldHVybiBlfTt2YXIgTmI9L2FscGhhXChbXildKlwpL2ksT2I9L29wYWNpdHlccyo9XHMqKFteKV0qKS8sUGI9L14obm9uZXx0YWJsZSg/IS1jW2VhXSkuKykvLFFiPW5ldyBSZWdFeHAoIl4oIitUKyIpKC4qKSQiLCJpIiksUmI9bmV3IFJlZ0V4cCgiXihbKy1dKT0oIitUKyIpIiwiaSIpLFNiPXtwb3NpdGlvbjoiYWJzb2x1dGUiLHZpc2liaWxpdHk6ImhpZGRlbiIsZGlzcGxheToiYmxvY2sifSxUYj17bGV0dGVyU3BhY2luZzowLGZvbnRXZWlnaHQ6NDAwfSxVYj1bIldlYmtpdCIsIk8iLCJNb3oiLCJtcyJdO2Z1bmN0aW9uIFZiKGEsYil7aWYoYiBpbiBhKXJldHVybiBiO3ZhciBjPWIuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrYi5zbGljZSgxKSxkPWIsZT1VYi5sZW5ndGg7d2hpbGUoZS0tKWlmKGI9VWJbZV0rYyxiIGluIGEpcmV0dXJuIGI7cmV0dXJuIGR9ZnVuY3Rpb24gV2IoYSxiKXtmb3IodmFyIGMsZCxlLGY9W10sZz0wLGg9YS5sZW5ndGg7aD5nO2crKylkPWFbZ10sZC5zdHlsZSYmKGZbZ109bi5fZGF0YShkLCJvbGRkaXNwbGF5IiksYz1kLnN0eWxlLmRpc3BsYXksYj8oZltnXXx8Im5vbmUiIT09Y3x8KGQuc3R5bGUuZGlzcGxheT0iIiksIiI9PT1kLnN0eWxlLmRpc3BsYXkmJlYoZCkmJihmW2ddPW4uX2RhdGEoZCwib2xkZGlzcGxheSIsR2IoZC5ub2RlTmFtZSkpKSk6ZltnXXx8KGU9VihkKSwoYyYmIm5vbmUiIT09Y3x8IWUpJiZuLl9kYXRhKGQsIm9sZGRpc3BsYXkiLGU/YzpuLmNzcyhkLCJkaXNwbGF5IikpKSk7Zm9yKGc9MDtoPmc7ZysrKWQ9YVtnXSxkLnN0eWxlJiYoYiYmIm5vbmUiIT09ZC5zdHlsZS5kaXNwbGF5JiYiIiE9PWQuc3R5bGUuZGlzcGxheXx8KGQuc3R5bGUuZGlzcGxheT1iP2ZbZ118fCIiOiJub25lIikpO3JldHVybiBhfWZ1bmN0aW9uIFhiKGEsYixjKXt2YXIgZD1RYi5leGVjKGIpO3JldHVybiBkP01hdGgubWF4KDAsZFsxXS0oY3x8MCkpKyhkWzJdfHwicHgiKTpifWZ1bmN0aW9uIFliKGEsYixjLGQsZSl7Zm9yKHZhciBmPWM9PT0oZD8iYm9yZGVyIjoiY29udGVudCIpPzQ6IndpZHRoIj09PWI/MTowLGc9MDs0PmY7Zis9MikibWFyZ2luIj09PWMmJihnKz1uLmNzcyhhLGMrVVtmXSwhMCxlKSksZD8oImNvbnRlbnQiPT09YyYmKGctPW4uY3NzKGEsInBhZGRpbmciK1VbZl0sITAsZSkpLCJtYXJnaW4iIT09YyYmKGctPW4uY3NzKGEsImJvcmRlciIrVVtmXSsiV2lkdGgiLCEwLGUpKSk6KGcrPW4uY3NzKGEsInBhZGRpbmciK1VbZl0sITAsZSksInBhZGRpbmciIT09YyYmKGcrPW4uY3NzKGEsImJvcmRlciIrVVtmXSsiV2lkdGgiLCEwLGUpKSk7cmV0dXJuIGd9ZnVuY3Rpb24gWmIoYSxiLGMpe3ZhciBkPSEwLGU9IndpZHRoIj09PWI/YS5vZmZzZXRXaWR0aDphLm9mZnNldEhlaWdodCxmPUpiKGEpLGc9bC5ib3hTaXppbmcoKSYmImJvcmRlci1ib3giPT09bi5jc3MoYSwiYm94U2l6aW5nIiwhMSxmKTtpZigwPj1lfHxudWxsPT1lKXtpZihlPUtiKGEsYixmKSwoMD5lfHxudWxsPT1lKSYmKGU9YS5zdHlsZVtiXSksSWIudGVzdChlKSlyZXR1cm4gZTtkPWcmJihsLmJveFNpemluZ1JlbGlhYmxlKCl8fGU9PT1hLnN0eWxlW2JdKSxlPXBhcnNlRmxvYXQoZSl8fDB9cmV0dXJuIGUrWWIoYSxiLGN8fChnPyJib3JkZXIiOiJjb250ZW50IiksZCxmKSsicHgifW4uZXh0ZW5kKHtjc3NIb29rczp7b3BhY2l0eTp7Z2V0OmZ1bmN0aW9uKGEsYil7aWYoYil7dmFyIGM9S2IoYSwib3BhY2l0eSIpO3JldHVybiIiPT09Yz8iMSI6Y319fX0sY3NzTnVtYmVyOntjb2x1bW5Db3VudDohMCxmaWxsT3BhY2l0eTohMCxmb250V2VpZ2h0OiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcmRlcjohMCxvcnBoYW5zOiEwLHdpZG93czohMCx6SW5kZXg6ITAsem9vbTohMH0sY3NzUHJvcHM6eyJmbG9hdCI6bC5jc3NGbG9hdD8iY3NzRmxvYXQiOiJzdHlsZUZsb2F0In0sc3R5bGU6ZnVuY3Rpb24oYSxiLGMsZCl7aWYoYSYmMyE9PWEubm9kZVR5cGUmJjghPT1hLm5vZGVUeXBlJiZhLnN0eWxlKXt2YXIgZSxmLGcsaD1uLmNhbWVsQ2FzZShiKSxpPWEuc3R5bGU7aWYoYj1uLmNzc1Byb3BzW2hdfHwobi5jc3NQcm9wc1toXT1WYihpLGgpKSxnPW4uY3NzSG9va3NbYl18fG4uY3NzSG9va3NbaF0sdm9pZCAwPT09YylyZXR1cm4gZyYmImdldCJpbiBnJiZ2b2lkIDAhPT0oZT1nLmdldChhLCExLGQpKT9lOmlbYl07aWYoZj10eXBlb2YgYywic3RyaW5nIj09PWYmJihlPVJiLmV4ZWMoYykpJiYoYz0oZVsxXSsxKSplWzJdK3BhcnNlRmxvYXQobi5jc3MoYSxiKSksZj0ibnVtYmVyIiksbnVsbCE9YyYmYz09PWMmJigibnVtYmVyIiE9PWZ8fG4uY3NzTnVtYmVyW2hdfHwoYys9InB4IiksbC5jbGVhckNsb25lU3R5bGV8fCIiIT09Y3x8MCE9PWIuaW5kZXhPZigiYmFja2dyb3VuZCIpfHwoaVtiXT0iaW5oZXJpdCIpLCEoZyYmInNldCJpbiBnJiZ2b2lkIDA9PT0oYz1nLnNldChhLGMsZCkpKSkpdHJ5e2lbYl09IiIsaVtiXT1jfWNhdGNoKGope319fSxjc3M6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGUsZixnLGg9bi5jYW1lbENhc2UoYik7cmV0dXJuIGI9bi5jc3NQcm9wc1toXXx8KG4uY3NzUHJvcHNbaF09VmIoYS5zdHlsZSxoKSksZz1uLmNzc0hvb2tzW2JdfHxuLmNzc0hvb2tzW2hdLGcmJiJnZXQiaW4gZyYmKGY9Zy5nZXQoYSwhMCxjKSksdm9pZCAwPT09ZiYmKGY9S2IoYSxiLGQpKSwibm9ybWFsIj09PWYmJmIgaW4gVGImJihmPVRiW2JdKSwiIj09PWN8fGM/KGU9cGFyc2VGbG9hdChmKSxjPT09ITB8fG4uaXNOdW1lcmljKGUpP2V8fDA6Zik6Zn19KSxuLmVhY2goWyJoZWlnaHQiLCJ3aWR0aCJdLGZ1bmN0aW9uKGEsYil7bi5jc3NIb29rc1tiXT17Z2V0OmZ1bmN0aW9uKGEsYyxkKXtyZXR1cm4gYz8wPT09YS5vZmZzZXRXaWR0aCYmUGIudGVzdChuLmNzcyhhLCJkaXNwbGF5IikpP24uc3dhcChhLFNiLGZ1bmN0aW9uKCl7cmV0dXJuIFpiKGEsYixkKX0pOlpiKGEsYixkKTp2b2lkIDB9LHNldDpmdW5jdGlvbihhLGMsZCl7dmFyIGU9ZCYmSmIoYSk7cmV0dXJuIFhiKGEsYyxkP1liKGEsYixkLGwuYm94U2l6aW5nKCkmJiJib3JkZXItYm94Ij09PW4uY3NzKGEsImJveFNpemluZyIsITEsZSksZSk6MCl9fX0pLGwub3BhY2l0eXx8KG4uY3NzSG9va3Mub3BhY2l0eT17Z2V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIE9iLnRlc3QoKGImJmEuY3VycmVudFN0eWxlP2EuY3VycmVudFN0eWxlLmZpbHRlcjphLnN0eWxlLmZpbHRlcil8fCIiKT8uMDEqcGFyc2VGbG9hdChSZWdFeHAuJDEpKyIiOmI/IjEiOiIifSxzZXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLnN0eWxlLGQ9YS5jdXJyZW50U3R5bGUsZT1uLmlzTnVtZXJpYyhiKT8iYWxwaGEob3BhY2l0eT0iKzEwMCpiKyIpIjoiIixmPWQmJmQuZmlsdGVyfHxjLmZpbHRlcnx8IiI7Yy56b29tPTEsKGI+PTF8fCIiPT09YikmJiIiPT09bi50cmltKGYucmVwbGFjZShOYiwiIikpJiZjLnJlbW92ZUF0dHJpYnV0ZSYmKGMucmVtb3ZlQXR0cmlidXRlKCJmaWx0ZXIiKSwiIj09PWJ8fGQmJiFkLmZpbHRlcil8fChjLmZpbHRlcj1OYi50ZXN0KGYpP2YucmVwbGFjZShOYixlKTpmKyIgIitlKX19KSxuLmNzc0hvb2tzLm1hcmdpblJpZ2h0PU1iKGwucmVsaWFibGVNYXJnaW5SaWdodCxmdW5jdGlvbihhLGIpe3JldHVybiBiP24uc3dhcChhLHtkaXNwbGF5OiJpbmxpbmUtYmxvY2sifSxLYixbYSwibWFyZ2luUmlnaHQiXSk6dm9pZCAwfSksbi5lYWNoKHttYXJnaW46IiIscGFkZGluZzoiIixib3JkZXI6IldpZHRoIn0sZnVuY3Rpb24oYSxiKXtuLmNzc0hvb2tzW2ErYl09e2V4cGFuZDpmdW5jdGlvbihjKXtmb3IodmFyIGQ9MCxlPXt9LGY9InN0cmluZyI9PXR5cGVvZiBjP2Muc3BsaXQoIiAiKTpbY107ND5kO2QrKyllW2ErVVtkXStiXT1mW2RdfHxmW2QtMl18fGZbMF07cmV0dXJuIGV9fSxIYi50ZXN0KGEpfHwobi5jc3NIb29rc1thK2JdLnNldD1YYil9KSxuLmZuLmV4dGVuZCh7Y3NzOmZ1bmN0aW9uKGEsYil7cmV0dXJuIFcodGhpcyxmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmPXt9LGc9MDtpZihuLmlzQXJyYXkoYikpe2ZvcihkPUpiKGEpLGU9Yi5sZW5ndGg7ZT5nO2crKylmW2JbZ11dPW4uY3NzKGEsYltnXSwhMSxkKTtyZXR1cm4gZn1yZXR1cm4gdm9pZCAwIT09Yz9uLnN0eWxlKGEsYixjKTpuLmNzcyhhLGIpCn0sYSxiLGFyZ3VtZW50cy5sZW5ndGg+MSl9LHNob3c6ZnVuY3Rpb24oKXtyZXR1cm4gV2IodGhpcywhMCl9LGhpZGU6ZnVuY3Rpb24oKXtyZXR1cm4gV2IodGhpcyl9LHRvZ2dsZTpmdW5jdGlvbihhKXtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBhP2E/dGhpcy5zaG93KCk6dGhpcy5oaWRlKCk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7Vih0aGlzKT9uKHRoaXMpLnNob3coKTpuKHRoaXMpLmhpZGUoKX0pfX0pO2Z1bmN0aW9uICRiKGEsYixjLGQsZSl7cmV0dXJuIG5ldyAkYi5wcm90b3R5cGUuaW5pdChhLGIsYyxkLGUpfW4uVHdlZW49JGIsJGIucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjokYixpbml0OmZ1bmN0aW9uKGEsYixjLGQsZSxmKXt0aGlzLmVsZW09YSx0aGlzLnByb3A9Yyx0aGlzLmVhc2luZz1lfHwic3dpbmciLHRoaXMub3B0aW9ucz1iLHRoaXMuc3RhcnQ9dGhpcy5ub3c9dGhpcy5jdXIoKSx0aGlzLmVuZD1kLHRoaXMudW5pdD1mfHwobi5jc3NOdW1iZXJbY10/IiI6InB4Iil9LGN1cjpmdW5jdGlvbigpe3ZhciBhPSRiLnByb3BIb29rc1t0aGlzLnByb3BdO3JldHVybiBhJiZhLmdldD9hLmdldCh0aGlzKTokYi5wcm9wSG9va3MuX2RlZmF1bHQuZ2V0KHRoaXMpfSxydW46ZnVuY3Rpb24oYSl7dmFyIGIsYz0kYi5wcm9wSG9va3NbdGhpcy5wcm9wXTtyZXR1cm4gdGhpcy5wb3M9Yj10aGlzLm9wdGlvbnMuZHVyYXRpb24/bi5lYXNpbmdbdGhpcy5lYXNpbmddKGEsdGhpcy5vcHRpb25zLmR1cmF0aW9uKmEsMCwxLHRoaXMub3B0aW9ucy5kdXJhdGlvbik6YSx0aGlzLm5vdz0odGhpcy5lbmQtdGhpcy5zdGFydCkqYit0aGlzLnN0YXJ0LHRoaXMub3B0aW9ucy5zdGVwJiZ0aGlzLm9wdGlvbnMuc3RlcC5jYWxsKHRoaXMuZWxlbSx0aGlzLm5vdyx0aGlzKSxjJiZjLnNldD9jLnNldCh0aGlzKTokYi5wcm9wSG9va3MuX2RlZmF1bHQuc2V0KHRoaXMpLHRoaXN9fSwkYi5wcm90b3R5cGUuaW5pdC5wcm90b3R5cGU9JGIucHJvdG90eXBlLCRiLnByb3BIb29rcz17X2RlZmF1bHQ6e2dldDpmdW5jdGlvbihhKXt2YXIgYjtyZXR1cm4gbnVsbD09YS5lbGVtW2EucHJvcF18fGEuZWxlbS5zdHlsZSYmbnVsbCE9YS5lbGVtLnN0eWxlW2EucHJvcF0/KGI9bi5jc3MoYS5lbGVtLGEucHJvcCwiIiksYiYmImF1dG8iIT09Yj9iOjApOmEuZWxlbVthLnByb3BdfSxzZXQ6ZnVuY3Rpb24oYSl7bi5meC5zdGVwW2EucHJvcF0/bi5meC5zdGVwW2EucHJvcF0oYSk6YS5lbGVtLnN0eWxlJiYobnVsbCE9YS5lbGVtLnN0eWxlW24uY3NzUHJvcHNbYS5wcm9wXV18fG4uY3NzSG9va3NbYS5wcm9wXSk/bi5zdHlsZShhLmVsZW0sYS5wcm9wLGEubm93K2EudW5pdCk6YS5lbGVtW2EucHJvcF09YS5ub3d9fX0sJGIucHJvcEhvb2tzLnNjcm9sbFRvcD0kYi5wcm9wSG9va3Muc2Nyb2xsTGVmdD17c2V0OmZ1bmN0aW9uKGEpe2EuZWxlbS5ub2RlVHlwZSYmYS5lbGVtLnBhcmVudE5vZGUmJihhLmVsZW1bYS5wcm9wXT1hLm5vdyl9fSxuLmVhc2luZz17bGluZWFyOmZ1bmN0aW9uKGEpe3JldHVybiBhfSxzd2luZzpmdW5jdGlvbihhKXtyZXR1cm4uNS1NYXRoLmNvcyhhKk1hdGguUEkpLzJ9fSxuLmZ4PSRiLnByb3RvdHlwZS5pbml0LG4uZnguc3RlcD17fTt2YXIgX2IsYWMsYmM9L14oPzp0b2dnbGV8c2hvd3xoaWRlKSQvLGNjPW5ldyBSZWdFeHAoIl4oPzooWystXSk9fCkoIitUKyIpKFthLXolXSopJCIsImkiKSxkYz0vcXVldWVIb29rcyQvLGVjPVtqY10sZmM9eyIqIjpbZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmNyZWF0ZVR3ZWVuKGEsYiksZD1jLmN1cigpLGU9Y2MuZXhlYyhiKSxmPWUmJmVbM118fChuLmNzc051bWJlclthXT8iIjoicHgiKSxnPShuLmNzc051bWJlclthXXx8InB4IiE9PWYmJitkKSYmY2MuZXhlYyhuLmNzcyhjLmVsZW0sYSkpLGg9MSxpPTIwO2lmKGcmJmdbM10hPT1mKXtmPWZ8fGdbM10sZT1lfHxbXSxnPStkfHwxO2RvIGg9aHx8Ii41IixnLz1oLG4uc3R5bGUoYy5lbGVtLGEsZytmKTt3aGlsZShoIT09KGg9Yy5jdXIoKS9kKSYmMSE9PWgmJi0taSl9cmV0dXJuIGUmJihnPWMuc3RhcnQ9K2d8fCtkfHwwLGMudW5pdD1mLGMuZW5kPWVbMV0/ZysoZVsxXSsxKSplWzJdOitlWzJdKSxjfV19O2Z1bmN0aW9uIGdjKCl7cmV0dXJuIHNldFRpbWVvdXQoZnVuY3Rpb24oKXtfYj12b2lkIDB9KSxfYj1uLm5vdygpfWZ1bmN0aW9uIGhjKGEsYil7dmFyIGMsZD17aGVpZ2h0OmF9LGU9MDtmb3IoYj1iPzE6MDs0PmU7ZSs9Mi1iKWM9VVtlXSxkWyJtYXJnaW4iK2NdPWRbInBhZGRpbmciK2NdPWE7cmV0dXJuIGImJihkLm9wYWNpdHk9ZC53aWR0aD1hKSxkfWZ1bmN0aW9uIGljKGEsYixjKXtmb3IodmFyIGQsZT0oZmNbYl18fFtdKS5jb25jYXQoZmNbIioiXSksZj0wLGc9ZS5sZW5ndGg7Zz5mO2YrKylpZihkPWVbZl0uY2FsbChjLGIsYSkpcmV0dXJuIGR9ZnVuY3Rpb24gamMoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGssbT10aGlzLG89e30scD1hLnN0eWxlLHE9YS5ub2RlVHlwZSYmVihhKSxyPW4uX2RhdGEoYSwiZnhzaG93Iik7Yy5xdWV1ZXx8KGg9bi5fcXVldWVIb29rcyhhLCJmeCIpLG51bGw9PWgudW5xdWV1ZWQmJihoLnVucXVldWVkPTAsaT1oLmVtcHR5LmZpcmUsaC5lbXB0eS5maXJlPWZ1bmN0aW9uKCl7aC51bnF1ZXVlZHx8aSgpfSksaC51bnF1ZXVlZCsrLG0uYWx3YXlzKGZ1bmN0aW9uKCl7bS5hbHdheXMoZnVuY3Rpb24oKXtoLnVucXVldWVkLS0sbi5xdWV1ZShhLCJmeCIpLmxlbmd0aHx8aC5lbXB0eS5maXJlKCl9KX0pKSwxPT09YS5ub2RlVHlwZSYmKCJoZWlnaHQiaW4gYnx8IndpZHRoImluIGIpJiYoYy5vdmVyZmxvdz1bcC5vdmVyZmxvdyxwLm92ZXJmbG93WCxwLm92ZXJmbG93WV0saj1uLmNzcyhhLCJkaXNwbGF5Iiksaz1HYihhLm5vZGVOYW1lKSwibm9uZSI9PT1qJiYoaj1rKSwiaW5saW5lIj09PWomJiJub25lIj09PW4uY3NzKGEsImZsb2F0IikmJihsLmlubGluZUJsb2NrTmVlZHNMYXlvdXQmJiJpbmxpbmUiIT09az9wLnpvb209MTpwLmRpc3BsYXk9ImlubGluZS1ibG9jayIpKSxjLm92ZXJmbG93JiYocC5vdmVyZmxvdz0iaGlkZGVuIixsLnNocmlua1dyYXBCbG9ja3MoKXx8bS5hbHdheXMoZnVuY3Rpb24oKXtwLm92ZXJmbG93PWMub3ZlcmZsb3dbMF0scC5vdmVyZmxvd1g9Yy5vdmVyZmxvd1sxXSxwLm92ZXJmbG93WT1jLm92ZXJmbG93WzJdfSkpO2ZvcihkIGluIGIpaWYoZT1iW2RdLGJjLmV4ZWMoZSkpe2lmKGRlbGV0ZSBiW2RdLGY9Znx8InRvZ2dsZSI9PT1lLGU9PT0ocT8iaGlkZSI6InNob3ciKSl7aWYoInNob3ciIT09ZXx8IXJ8fHZvaWQgMD09PXJbZF0pY29udGludWU7cT0hMH1vW2RdPXImJnJbZF18fG4uc3R5bGUoYSxkKX1pZighbi5pc0VtcHR5T2JqZWN0KG8pKXtyPyJoaWRkZW4iaW4gciYmKHE9ci5oaWRkZW4pOnI9bi5fZGF0YShhLCJmeHNob3ciLHt9KSxmJiYoci5oaWRkZW49IXEpLHE/bihhKS5zaG93KCk6bS5kb25lKGZ1bmN0aW9uKCl7bihhKS5oaWRlKCl9KSxtLmRvbmUoZnVuY3Rpb24oKXt2YXIgYjtuLl9yZW1vdmVEYXRhKGEsImZ4c2hvdyIpO2ZvcihiIGluIG8pbi5zdHlsZShhLGIsb1tiXSl9KTtmb3IoZCBpbiBvKWc9aWMocT9yW2RdOjAsZCxtKSxkIGluIHJ8fChyW2RdPWcuc3RhcnQscSYmKGcuZW5kPWcuc3RhcnQsZy5zdGFydD0id2lkdGgiPT09ZHx8ImhlaWdodCI9PT1kPzE6MCkpfX1mdW5jdGlvbiBrYyhhLGIpe3ZhciBjLGQsZSxmLGc7Zm9yKGMgaW4gYSlpZihkPW4uY2FtZWxDYXNlKGMpLGU9YltkXSxmPWFbY10sbi5pc0FycmF5KGYpJiYoZT1mWzFdLGY9YVtjXT1mWzBdKSxjIT09ZCYmKGFbZF09ZixkZWxldGUgYVtjXSksZz1uLmNzc0hvb2tzW2RdLGcmJiJleHBhbmQiaW4gZyl7Zj1nLmV4cGFuZChmKSxkZWxldGUgYVtkXTtmb3IoYyBpbiBmKWMgaW4gYXx8KGFbY109ZltjXSxiW2NdPWUpfWVsc2UgYltkXT1lfWZ1bmN0aW9uIGxjKGEsYixjKXt2YXIgZCxlLGY9MCxnPWVjLmxlbmd0aCxoPW4uRGVmZXJyZWQoKS5hbHdheXMoZnVuY3Rpb24oKXtkZWxldGUgaS5lbGVtfSksaT1mdW5jdGlvbigpe2lmKGUpcmV0dXJuITE7Zm9yKHZhciBiPV9ifHxnYygpLGM9TWF0aC5tYXgoMCxqLnN0YXJ0VGltZStqLmR1cmF0aW9uLWIpLGQ9Yy9qLmR1cmF0aW9ufHwwLGY9MS1kLGc9MCxpPWoudHdlZW5zLmxlbmd0aDtpPmc7ZysrKWoudHdlZW5zW2ddLnJ1bihmKTtyZXR1cm4gaC5ub3RpZnlXaXRoKGEsW2osZixjXSksMT5mJiZpP2M6KGgucmVzb2x2ZVdpdGgoYSxbal0pLCExKX0saj1oLnByb21pc2Uoe2VsZW06YSxwcm9wczpuLmV4dGVuZCh7fSxiKSxvcHRzOm4uZXh0ZW5kKCEwLHtzcGVjaWFsRWFzaW5nOnt9fSxjKSxvcmlnaW5hbFByb3BlcnRpZXM6YixvcmlnaW5hbE9wdGlvbnM6YyxzdGFydFRpbWU6X2J8fGdjKCksZHVyYXRpb246Yy5kdXJhdGlvbix0d2VlbnM6W10sY3JlYXRlVHdlZW46ZnVuY3Rpb24oYixjKXt2YXIgZD1uLlR3ZWVuKGEsai5vcHRzLGIsYyxqLm9wdHMuc3BlY2lhbEVhc2luZ1tiXXx8ai5vcHRzLmVhc2luZyk7cmV0dXJuIGoudHdlZW5zLnB1c2goZCksZH0sc3RvcDpmdW5jdGlvbihiKXt2YXIgYz0wLGQ9Yj9qLnR3ZWVucy5sZW5ndGg6MDtpZihlKXJldHVybiB0aGlzO2ZvcihlPSEwO2Q+YztjKyspai50d2VlbnNbY10ucnVuKDEpO3JldHVybiBiP2gucmVzb2x2ZVdpdGgoYSxbaixiXSk6aC5yZWplY3RXaXRoKGEsW2osYl0pLHRoaXN9fSksaz1qLnByb3BzO2ZvcihrYyhrLGoub3B0cy5zcGVjaWFsRWFzaW5nKTtnPmY7ZisrKWlmKGQ9ZWNbZl0uY2FsbChqLGEsayxqLm9wdHMpKXJldHVybiBkO3JldHVybiBuLm1hcChrLGljLGopLG4uaXNGdW5jdGlvbihqLm9wdHMuc3RhcnQpJiZqLm9wdHMuc3RhcnQuY2FsbChhLGopLG4uZngudGltZXIobi5leHRlbmQoaSx7ZWxlbTphLGFuaW06aixxdWV1ZTpqLm9wdHMucXVldWV9KSksai5wcm9ncmVzcyhqLm9wdHMucHJvZ3Jlc3MpLmRvbmUoai5vcHRzLmRvbmUsai5vcHRzLmNvbXBsZXRlKS5mYWlsKGoub3B0cy5mYWlsKS5hbHdheXMoai5vcHRzLmFsd2F5cyl9bi5BbmltYXRpb249bi5leHRlbmQobGMse3R3ZWVuZXI6ZnVuY3Rpb24oYSxiKXtuLmlzRnVuY3Rpb24oYSk/KGI9YSxhPVsiKiJdKTphPWEuc3BsaXQoIiAiKTtmb3IodmFyIGMsZD0wLGU9YS5sZW5ndGg7ZT5kO2QrKyljPWFbZF0sZmNbY109ZmNbY118fFtdLGZjW2NdLnVuc2hpZnQoYil9LHByZWZpbHRlcjpmdW5jdGlvbihhLGIpe2I/ZWMudW5zaGlmdChhKTplYy5wdXNoKGEpfX0pLG4uc3BlZWQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEmJiJvYmplY3QiPT10eXBlb2YgYT9uLmV4dGVuZCh7fSxhKTp7Y29tcGxldGU6Y3x8IWMmJmJ8fG4uaXNGdW5jdGlvbihhKSYmYSxkdXJhdGlvbjphLGVhc2luZzpjJiZifHxiJiYhbi5pc0Z1bmN0aW9uKGIpJiZifTtyZXR1cm4gZC5kdXJhdGlvbj1uLmZ4Lm9mZj8wOiJudW1iZXIiPT10eXBlb2YgZC5kdXJhdGlvbj9kLmR1cmF0aW9uOmQuZHVyYXRpb24gaW4gbi5meC5zcGVlZHM/bi5meC5zcGVlZHNbZC5kdXJhdGlvbl06bi5meC5zcGVlZHMuX2RlZmF1bHQsKG51bGw9PWQucXVldWV8fGQucXVldWU9PT0hMCkmJihkLnF1ZXVlPSJmeCIpLGQub2xkPWQuY29tcGxldGUsZC5jb21wbGV0ZT1mdW5jdGlvbigpe24uaXNGdW5jdGlvbihkLm9sZCkmJmQub2xkLmNhbGwodGhpcyksZC5xdWV1ZSYmbi5kZXF1ZXVlKHRoaXMsZC5xdWV1ZSl9LGR9LG4uZm4uZXh0ZW5kKHtmYWRlVG86ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIHRoaXMuZmlsdGVyKFYpLmNzcygib3BhY2l0eSIsMCkuc2hvdygpLmVuZCgpLmFuaW1hdGUoe29wYWNpdHk6Yn0sYSxjLGQpfSxhbmltYXRlOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPW4uaXNFbXB0eU9iamVjdChhKSxmPW4uc3BlZWQoYixjLGQpLGc9ZnVuY3Rpb24oKXt2YXIgYj1sYyh0aGlzLG4uZXh0ZW5kKHt9LGEpLGYpOyhlfHxuLl9kYXRhKHRoaXMsImZpbmlzaCIpKSYmYi5zdG9wKCEwKX07cmV0dXJuIGcuZmluaXNoPWcsZXx8Zi5xdWV1ZT09PSExP3RoaXMuZWFjaChnKTp0aGlzLnF1ZXVlKGYucXVldWUsZyl9LHN0b3A6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWZ1bmN0aW9uKGEpe3ZhciBiPWEuc3RvcDtkZWxldGUgYS5zdG9wLGIoYyl9O3JldHVybiJzdHJpbmciIT10eXBlb2YgYSYmKGM9YixiPWEsYT12b2lkIDApLGImJmEhPT0hMSYmdGhpcy5xdWV1ZShhfHwiZngiLFtdKSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYj0hMCxlPW51bGwhPWEmJmErInF1ZXVlSG9va3MiLGY9bi50aW1lcnMsZz1uLl9kYXRhKHRoaXMpO2lmKGUpZ1tlXSYmZ1tlXS5zdG9wJiZkKGdbZV0pO2Vsc2UgZm9yKGUgaW4gZylnW2VdJiZnW2VdLnN0b3AmJmRjLnRlc3QoZSkmJmQoZ1tlXSk7Zm9yKGU9Zi5sZW5ndGg7ZS0tOylmW2VdLmVsZW0hPT10aGlzfHxudWxsIT1hJiZmW2VdLnF1ZXVlIT09YXx8KGZbZV0uYW5pbS5zdG9wKGMpLGI9ITEsZi5zcGxpY2UoZSwxKSk7KGJ8fCFjKSYmbi5kZXF1ZXVlKHRoaXMsYSl9KX0sZmluaXNoOmZ1bmN0aW9uKGEpe3JldHVybiBhIT09ITEmJihhPWF8fCJmeCIpLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiLGM9bi5fZGF0YSh0aGlzKSxkPWNbYSsicXVldWUiXSxlPWNbYSsicXVldWVIb29rcyJdLGY9bi50aW1lcnMsZz1kP2QubGVuZ3RoOjA7Zm9yKGMuZmluaXNoPSEwLG4ucXVldWUodGhpcyxhLFtdKSxlJiZlLnN0b3AmJmUuc3RvcC5jYWxsKHRoaXMsITApLGI9Zi5sZW5ndGg7Yi0tOylmW2JdLmVsZW09PT10aGlzJiZmW2JdLnF1ZXVlPT09YSYmKGZbYl0uYW5pbS5zdG9wKCEwKSxmLnNwbGljZShiLDEpKTtmb3IoYj0wO2c+YjtiKyspZFtiXSYmZFtiXS5maW5pc2gmJmRbYl0uZmluaXNoLmNhbGwodGhpcyk7ZGVsZXRlIGMuZmluaXNofSl9fSksbi5lYWNoKFsidG9nZ2xlIiwic2hvdyIsImhpZGUiXSxmdW5jdGlvbihhLGIpe3ZhciBjPW4uZm5bYl07bi5mbltiXT1mdW5jdGlvbihhLGQsZSl7cmV0dXJuIG51bGw9PWF8fCJib29sZWFuIj09dHlwZW9mIGE/Yy5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dGhpcy5hbmltYXRlKGhjKGIsITApLGEsZCxlKX19KSxuLmVhY2goe3NsaWRlRG93bjpoYygic2hvdyIpLHNsaWRlVXA6aGMoImhpZGUiKSxzbGlkZVRvZ2dsZTpoYygidG9nZ2xlIiksZmFkZUluOntvcGFjaXR5OiJzaG93In0sZmFkZU91dDp7b3BhY2l0eToiaGlkZSJ9LGZhZGVUb2dnbGU6e29wYWNpdHk6InRvZ2dsZSJ9fSxmdW5jdGlvbihhLGIpe24uZm5bYV09ZnVuY3Rpb24oYSxjLGQpe3JldHVybiB0aGlzLmFuaW1hdGUoYixhLGMsZCl9fSksbi50aW1lcnM9W10sbi5meC50aWNrPWZ1bmN0aW9uKCl7dmFyIGEsYj1uLnRpbWVycyxjPTA7Zm9yKF9iPW4ubm93KCk7YzxiLmxlbmd0aDtjKyspYT1iW2NdLGEoKXx8YltjXSE9PWF8fGIuc3BsaWNlKGMtLSwxKTtiLmxlbmd0aHx8bi5meC5zdG9wKCksX2I9dm9pZCAwfSxuLmZ4LnRpbWVyPWZ1bmN0aW9uKGEpe24udGltZXJzLnB1c2goYSksYSgpP24uZnguc3RhcnQoKTpuLnRpbWVycy5wb3AoKX0sbi5meC5pbnRlcnZhbD0xMyxuLmZ4LnN0YXJ0PWZ1bmN0aW9uKCl7YWN8fChhYz1zZXRJbnRlcnZhbChuLmZ4LnRpY2ssbi5meC5pbnRlcnZhbCkpfSxuLmZ4LnN0b3A9ZnVuY3Rpb24oKXtjbGVhckludGVydmFsKGFjKSxhYz1udWxsfSxuLmZ4LnNwZWVkcz17c2xvdzo2MDAsZmFzdDoyMDAsX2RlZmF1bHQ6NDAwfSxuLmZuLmRlbGF5PWZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9bi5meD9uLmZ4LnNwZWVkc1thXXx8YTphLGI9Ynx8ImZ4Iix0aGlzLnF1ZXVlKGIsZnVuY3Rpb24oYixjKXt2YXIgZD1zZXRUaW1lb3V0KGIsYSk7Yy5zdG9wPWZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KGQpfX0pfSxmdW5jdGlvbigpe3ZhciBhLGIsYyxkLGU9ei5jcmVhdGVFbGVtZW50KCJkaXYiKTtlLnNldEF0dHJpYnV0ZSgiY2xhc3NOYW1lIiwidCIpLGUuaW5uZXJIVE1MPSIgIDxsaW5rLz48dGFibGU+PC90YWJsZT48YSBocmVmPScvYSc+YTwvYT48aW5wdXQgdHlwZT0nY2hlY2tib3gnLz4iLGE9ZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYSIpWzBdLGM9ei5jcmVhdGVFbGVtZW50KCJzZWxlY3QiKSxkPWMuYXBwZW5kQ2hpbGQoei5jcmVhdGVFbGVtZW50KCJvcHRpb24iKSksYj1lLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpWzBdLGEuc3R5bGUuY3NzVGV4dD0idG9wOjFweCIsbC5nZXRTZXRBdHRyaWJ1dGU9InQiIT09ZS5jbGFzc05hbWUsbC5zdHlsZT0vdG9wLy50ZXN0KGEuZ2V0QXR0cmlidXRlKCJzdHlsZSIpKSxsLmhyZWZOb3JtYWxpemVkPSIvYSI9PT1hLmdldEF0dHJpYnV0ZSgiaHJlZiIpLGwuY2hlY2tPbj0hIWIudmFsdWUsbC5vcHRTZWxlY3RlZD1kLnNlbGVjdGVkLGwuZW5jdHlwZT0hIXouY3JlYXRlRWxlbWVudCgiZm9ybSIpLmVuY3R5cGUsYy5kaXNhYmxlZD0hMCxsLm9wdERpc2FibGVkPSFkLmRpc2FibGVkLGI9ei5jcmVhdGVFbGVtZW50KCJpbnB1dCIpLGIuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsIiIpLGwuaW5wdXQ9IiI9PT1iLmdldEF0dHJpYnV0ZSgidmFsdWUiKSxiLnZhbHVlPSJ0IixiLnNldEF0dHJpYnV0ZSgidHlwZSIsInJhZGlvIiksbC5yYWRpb1ZhbHVlPSJ0Ij09PWIudmFsdWUsYT1iPWM9ZD1lPW51bGx9KCk7dmFyIG1jPS9cci9nO24uZm4uZXh0ZW5kKHt2YWw6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGU9dGhpc1swXTt7aWYoYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZD1uLmlzRnVuY3Rpb24oYSksdGhpcy5lYWNoKGZ1bmN0aW9uKGMpe3ZhciBlOzE9PT10aGlzLm5vZGVUeXBlJiYoZT1kP2EuY2FsbCh0aGlzLGMsbih0aGlzKS52YWwoKSk6YSxudWxsPT1lP2U9IiI6Im51bWJlciI9PXR5cGVvZiBlP2UrPSIiOm4uaXNBcnJheShlKSYmKGU9bi5tYXAoZSxmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YT8iIjphKyIifSkpLGI9bi52YWxIb29rc1t0aGlzLnR5cGVdfHxuLnZhbEhvb2tzW3RoaXMubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0sYiYmInNldCJpbiBiJiZ2b2lkIDAhPT1iLnNldCh0aGlzLGUsInZhbHVlIil8fCh0aGlzLnZhbHVlPWUpKX0pO2lmKGUpcmV0dXJuIGI9bi52YWxIb29rc1tlLnR5cGVdfHxuLnZhbEhvb2tzW2Uubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0sYiYmImdldCJpbiBiJiZ2b2lkIDAhPT0oYz1iLmdldChlLCJ2YWx1ZSIpKT9jOihjPWUudmFsdWUsInN0cmluZyI9PXR5cGVvZiBjP2MucmVwbGFjZShtYywiIik6bnVsbD09Yz8iIjpjKX19fSksbi5leHRlbmQoe3ZhbEhvb2tzOntvcHRpb246e2dldDpmdW5jdGlvbihhKXt2YXIgYj1uLmZpbmQuYXR0cihhLCJ2YWx1ZSIpO3JldHVybiBudWxsIT1iP2I6bi50ZXh0KGEpfX0sc2VsZWN0OntnZXQ6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiLGMsZD1hLm9wdGlvbnMsZT1hLnNlbGVjdGVkSW5kZXgsZj0ic2VsZWN0LW9uZSI9PT1hLnR5cGV8fDA+ZSxnPWY/bnVsbDpbXSxoPWY/ZSsxOmQubGVuZ3RoLGk9MD5lP2g6Zj9lOjA7aD5pO2krKylpZihjPWRbaV0sISghYy5zZWxlY3RlZCYmaSE9PWV8fChsLm9wdERpc2FibGVkP2MuZGlzYWJsZWQ6bnVsbCE9PWMuZ2V0QXR0cmlidXRlKCJkaXNhYmxlZCIpKXx8Yy5wYXJlbnROb2RlLmRpc2FibGVkJiZuLm5vZGVOYW1lKGMucGFyZW50Tm9kZSwib3B0Z3JvdXAiKSkpe2lmKGI9bihjKS52YWwoKSxmKXJldHVybiBiO2cucHVzaChiKX1yZXR1cm4gZ30sc2V0OmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlPWEub3B0aW9ucyxmPW4ubWFrZUFycmF5KGIpLGc9ZS5sZW5ndGg7d2hpbGUoZy0tKWlmKGQ9ZVtnXSxuLmluQXJyYXkobi52YWxIb29rcy5vcHRpb24uZ2V0KGQpLGYpPj0wKXRyeXtkLnNlbGVjdGVkPWM9ITB9Y2F0Y2goaCl7ZC5zY3JvbGxIZWlnaHR9ZWxzZSBkLnNlbGVjdGVkPSExO3JldHVybiBjfHwoYS5zZWxlY3RlZEluZGV4PS0xKSxlfX19fSksbi5lYWNoKFsicmFkaW8iLCJjaGVja2JveCJdLGZ1bmN0aW9uKCl7bi52YWxIb29rc1t0aGlzXT17c2V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIG4uaXNBcnJheShiKT9hLmNoZWNrZWQ9bi5pbkFycmF5KG4oYSkudmFsKCksYik+PTA6dm9pZCAwfX0sbC5jaGVja09ufHwobi52YWxIb29rc1t0aGlzXS5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PT1hLmdldEF0dHJpYnV0ZSgidmFsdWUiKT8ib24iOmEudmFsdWV9KX0pO3ZhciBuYyxvYyxwYz1uLmV4cHIuYXR0ckhhbmRsZSxxYz0vXig/OmNoZWNrZWR8c2VsZWN0ZWQpJC9pLHJjPWwuZ2V0U2V0QXR0cmlidXRlLHNjPWwuaW5wdXQ7bi5mbi5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVyh0aGlzLG4uYXR0cixhLGIsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7bi5yZW1vdmVBdHRyKHRoaXMsYSl9KX19KSxuLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmPWEubm9kZVR5cGU7aWYoYSYmMyE9PWYmJjghPT1mJiYyIT09ZilyZXR1cm4gdHlwZW9mIGEuZ2V0QXR0cmlidXRlPT09TD9uLnByb3AoYSxiLGMpOigxPT09ZiYmbi5pc1hNTERvYyhhKXx8KGI9Yi50b0xvd2VyQ2FzZSgpLGQ9bi5hdHRySG9va3NbYl18fChuLmV4cHIubWF0Y2guYm9vbC50ZXN0KGIpP29jOm5jKSksdm9pZCAwPT09Yz9kJiYiZ2V0ImluIGQmJm51bGwhPT0oZT1kLmdldChhLGIpKT9lOihlPW4uZmluZC5hdHRyKGEsYiksbnVsbD09ZT92b2lkIDA6ZSk6bnVsbCE9PWM/ZCYmInNldCJpbiBkJiZ2b2lkIDAhPT0oZT1kLnNldChhLGMsYikpP2U6KGEuc2V0QXR0cmlidXRlKGIsYysiIiksYyk6dm9pZCBuLnJlbW92ZUF0dHIoYSxiKSl9LHJlbW92ZUF0dHI6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGU9MCxmPWImJmIubWF0Y2goRik7aWYoZiYmMT09PWEubm9kZVR5cGUpd2hpbGUoYz1mW2UrK10pZD1uLnByb3BGaXhbY118fGMsbi5leHByLm1hdGNoLmJvb2wudGVzdChjKT9zYyYmcmN8fCFxYy50ZXN0KGMpP2FbZF09ITE6YVtuLmNhbWVsQ2FzZSgiZGVmYXVsdC0iK2MpXT1hW2RdPSExOm4uYXR0cihhLGMsIiIpLGEucmVtb3ZlQXR0cmlidXRlKHJjP2M6ZCl9LGF0dHJIb29rczp7dHlwZTp7c2V0OmZ1bmN0aW9uKGEsYil7aWYoIWwucmFkaW9WYWx1ZSYmInJhZGlvIj09PWImJm4ubm9kZU5hbWUoYSwiaW5wdXQiKSl7dmFyIGM9YS52YWx1ZTtyZXR1cm4gYS5zZXRBdHRyaWJ1dGUoInR5cGUiLGIpLGMmJihhLnZhbHVlPWMpLGJ9fX19fSksb2M9e3NldDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGI9PT0hMT9uLnJlbW92ZUF0dHIoYSxjKTpzYyYmcmN8fCFxYy50ZXN0KGMpP2Euc2V0QXR0cmlidXRlKCFyYyYmbi5wcm9wRml4W2NdfHxjLGMpOmFbbi5jYW1lbENhc2UoImRlZmF1bHQtIitjKV09YVtjXT0hMCxjfX0sbi5lYWNoKG4uZXhwci5tYXRjaC5ib29sLnNvdXJjZS5tYXRjaCgvXHcrL2cpLGZ1bmN0aW9uKGEsYil7dmFyIGM9cGNbYl18fG4uZmluZC5hdHRyO3BjW2JdPXNjJiZyY3x8IXFjLnRlc3QoYik/ZnVuY3Rpb24oYSxiLGQpe3ZhciBlLGY7cmV0dXJuIGR8fChmPXBjW2JdLHBjW2JdPWUsZT1udWxsIT1jKGEsYixkKT9iLnRvTG93ZXJDYXNlKCk6bnVsbCxwY1tiXT1mKSxlfTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGM/dm9pZCAwOmFbbi5jYW1lbENhc2UoImRlZmF1bHQtIitiKV0/Yi50b0xvd2VyQ2FzZSgpOm51bGx9fSksc2MmJnJjfHwobi5hdHRySG9va3MudmFsdWU9e3NldDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIG4ubm9kZU5hbWUoYSwiaW5wdXQiKT92b2lkKGEuZGVmYXVsdFZhbHVlPWIpOm5jJiZuYy5zZXQoYSxiLGMpfX0pLHJjfHwobmM9e3NldDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5nZXRBdHRyaWJ1dGVOb2RlKGMpO3JldHVybiBkfHxhLnNldEF0dHJpYnV0ZU5vZGUoZD1hLm93bmVyRG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlKGMpKSxkLnZhbHVlPWIrPSIiLCJ2YWx1ZSI9PT1jfHxiPT09YS5nZXRBdHRyaWJ1dGUoYyk/Yjp2b2lkIDB9fSxwYy5pZD1wYy5uYW1lPXBjLmNvb3Jkcz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ7cmV0dXJuIGM/dm9pZCAwOihkPWEuZ2V0QXR0cmlidXRlTm9kZShiKSkmJiIiIT09ZC52YWx1ZT9kLnZhbHVlOm51bGx9LG4udmFsSG9va3MuYnV0dG9uPXtnZXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmdldEF0dHJpYnV0ZU5vZGUoYik7cmV0dXJuIGMmJmMuc3BlY2lmaWVkP2MudmFsdWU6dm9pZCAwfSxzZXQ6bmMuc2V0fSxuLmF0dHJIb29rcy5jb250ZW50ZWRpdGFibGU9e3NldDpmdW5jdGlvbihhLGIsYyl7bmMuc2V0KGEsIiI9PT1iPyExOmIsYyl9fSxuLmVhY2goWyJ3aWR0aCIsImhlaWdodCJdLGZ1bmN0aW9uKGEsYil7bi5hdHRySG9va3NbYl09e3NldDpmdW5jdGlvbihhLGMpe3JldHVybiIiPT09Yz8oYS5zZXRBdHRyaWJ1dGUoYiwiYXV0byIpLGMpOnZvaWQgMH19fSkpLGwuc3R5bGV8fChuLmF0dHJIb29rcy5zdHlsZT17Z2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhLnN0eWxlLmNzc1RleHR8fHZvaWQgMH0sc2V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuc3R5bGUuY3NzVGV4dD1iKyIifX0pO3ZhciB0Yz0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b258b2JqZWN0KSQvaSx1Yz0vXig/OmF8YXJlYSkkL2k7bi5mbi5leHRlbmQoe3Byb3A6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVyh0aGlzLG4ucHJvcCxhLGIsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlUHJvcDpmdW5jdGlvbihhKXtyZXR1cm4gYT1uLnByb3BGaXhbYV18fGEsdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dHJ5e3RoaXNbYV09dm9pZCAwLGRlbGV0ZSB0aGlzW2FdfWNhdGNoKGIpe319KX19KSxuLmV4dGVuZCh7cHJvcEZpeDp7ImZvciI6Imh0bWxGb3IiLCJjbGFzcyI6ImNsYXNzTmFtZSJ9LHByb3A6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnPWEubm9kZVR5cGU7aWYoYSYmMyE9PWcmJjghPT1nJiYyIT09ZylyZXR1cm4gZj0xIT09Z3x8IW4uaXNYTUxEb2MoYSksZiYmKGI9bi5wcm9wRml4W2JdfHxiLGU9bi5wcm9wSG9va3NbYl0pLHZvaWQgMCE9PWM/ZSYmInNldCJpbiBlJiZ2b2lkIDAhPT0oZD1lLnNldChhLGMsYikpP2Q6YVtiXT1jOmUmJiJnZXQiaW4gZSYmbnVsbCE9PShkPWUuZ2V0KGEsYikpP2Q6YVtiXX0scHJvcEhvb2tzOnt0YWJJbmRleDp7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiPW4uZmluZC5hdHRyKGEsInRhYmluZGV4Iik7cmV0dXJuIGI/cGFyc2VJbnQoYiwxMCk6dGMudGVzdChhLm5vZGVOYW1lKXx8dWMudGVzdChhLm5vZGVOYW1lKSYmYS5ocmVmPzA6LTF9fX19KSxsLmhyZWZOb3JtYWxpemVkfHxuLmVhY2goWyJocmVmIiwic3JjIl0sZnVuY3Rpb24oYSxiKXtuLnByb3BIb29rc1tiXT17Z2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZShiLDQpfX19KSxsLm9wdFNlbGVjdGVkfHwobi5wcm9wSG9va3Muc2VsZWN0ZWQ9e2dldDpmdW5jdGlvbihhKXt2YXIgYj1hLnBhcmVudE5vZGU7cmV0dXJuIGImJihiLnNlbGVjdGVkSW5kZXgsYi5wYXJlbnROb2RlJiZiLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCksbnVsbH19KSxuLmVhY2goWyJ0YWJJbmRleCIsInJlYWRPbmx5IiwibWF4TGVuZ3RoIiwiY2VsbFNwYWNpbmciLCJjZWxsUGFkZGluZyIsInJvd1NwYW4iLCJjb2xTcGFuIiwidXNlTWFwIiwiZnJhbWVCb3JkZXIiLCJjb250ZW50RWRpdGFibGUiXSxmdW5jdGlvbigpe24ucHJvcEZpeFt0aGlzLnRvTG93ZXJDYXNlKCldPXRoaXN9KSxsLmVuY3R5cGV8fChuLnByb3BGaXguZW5jdHlwZT0iZW5jb2RpbmciKTt2YXIgdmM9L1tcdFxyXG5cZl0vZztuLmZuLmV4dGVuZCh7YWRkQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGg9MCxpPXRoaXMubGVuZ3RoLGo9InN0cmluZyI9PXR5cGVvZiBhJiZhO2lmKG4uaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe24odGhpcykuYWRkQ2xhc3MoYS5jYWxsKHRoaXMsYix0aGlzLmNsYXNzTmFtZSkpfSk7aWYoailmb3IoYj0oYXx8IiIpLm1hdGNoKEYpfHxbXTtpPmg7aCsrKWlmKGM9dGhpc1toXSxkPTE9PT1jLm5vZGVUeXBlJiYoYy5jbGFzc05hbWU/KCIgIitjLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UodmMsIiAiKToiICIpKXtmPTA7d2hpbGUoZT1iW2YrK10pZC5pbmRleE9mKCIgIitlKyIgIik8MCYmKGQrPWUrIiAiKTtnPW4udHJpbShkKSxjLmNsYXNzTmFtZSE9PWcmJihjLmNsYXNzTmFtZT1nKX1yZXR1cm4gdGhpc30scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGg9MCxpPXRoaXMubGVuZ3RoLGo9MD09PWFyZ3VtZW50cy5sZW5ndGh8fCJzdHJpbmciPT10eXBlb2YgYSYmYTtpZihuLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXtuKHRoaXMpLnJlbW92ZUNsYXNzKGEuY2FsbCh0aGlzLGIsdGhpcy5jbGFzc05hbWUpKX0pO2lmKGopZm9yKGI9KGF8fCIiKS5tYXRjaChGKXx8W107aT5oO2grKylpZihjPXRoaXNbaF0sZD0xPT09Yy5ub2RlVHlwZSYmKGMuY2xhc3NOYW1lPygiICIrYy5jbGFzc05hbWUrIiAiKS5yZXBsYWNlKHZjLCIgIik6IiIpKXtmPTA7d2hpbGUoZT1iW2YrK10pd2hpbGUoZC5pbmRleE9mKCIgIitlKyIgIik+PTApZD1kLnJlcGxhY2UoIiAiK2UrIiAiLCIgIik7Zz1hP24udHJpbShkKToiIixjLmNsYXNzTmFtZSE9PWcmJihjLmNsYXNzTmFtZT1nKX1yZXR1cm4gdGhpc30sdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24oYSxiKXt2YXIgYz10eXBlb2YgYTtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBiJiYic3RyaW5nIj09PWM/Yj90aGlzLmFkZENsYXNzKGEpOnRoaXMucmVtb3ZlQ2xhc3MoYSk6dGhpcy5lYWNoKG4uaXNGdW5jdGlvbihhKT9mdW5jdGlvbihjKXtuKHRoaXMpLnRvZ2dsZUNsYXNzKGEuY2FsbCh0aGlzLGMsdGhpcy5jbGFzc05hbWUsYiksYil9OmZ1bmN0aW9uKCl7aWYoInN0cmluZyI9PT1jKXt2YXIgYixkPTAsZT1uKHRoaXMpLGY9YS5tYXRjaChGKXx8W107d2hpbGUoYj1mW2QrK10pZS5oYXNDbGFzcyhiKT9lLnJlbW92ZUNsYXNzKGIpOmUuYWRkQ2xhc3MoYil9ZWxzZShjPT09THx8ImJvb2xlYW4iPT09YykmJih0aGlzLmNsYXNzTmFtZSYmbi5fZGF0YSh0aGlzLCJfX2NsYXNzTmFtZV9fIix0aGlzLmNsYXNzTmFtZSksdGhpcy5jbGFzc05hbWU9dGhpcy5jbGFzc05hbWV8fGE9PT0hMT8iIjpuLl9kYXRhKHRoaXMsIl9fY2xhc3NOYW1lX18iKXx8IiIpfSl9LGhhc0NsYXNzOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0iICIrYSsiICIsYz0wLGQ9dGhpcy5sZW5ndGg7ZD5jO2MrKylpZigxPT09dGhpc1tjXS5ub2RlVHlwZSYmKCIgIit0aGlzW2NdLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UodmMsIiAiKS5pbmRleE9mKGIpPj0wKXJldHVybiEwO3JldHVybiExfX0pLG4uZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IGxvYWQgcmVzaXplIHNjcm9sbCB1bmxvYWQgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBlcnJvciBjb250ZXh0bWVudSIuc3BsaXQoIiAiKSxmdW5jdGlvbihhLGIpe24uZm5bYl09ZnVuY3Rpb24oYSxjKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4wP3RoaXMub24oYixudWxsLGEsYyk6dGhpcy50cmlnZ2VyKGIpfX0pLG4uZm4uZXh0ZW5kKHtob3ZlcjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm1vdXNlZW50ZXIoYSkubW91c2VsZWF2ZShifHxhKX0sYmluZDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMub24oYSxudWxsLGIsYyl9LHVuYmluZDpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm9mZihhLG51bGwsYil9LGRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLm9uKGIsYSxjLGQpfSx1bmRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5vZmYoYSwiKioiKTp0aGlzLm9mZihiLGF8fCIqKiIsYyl9fSk7dmFyIHdjPW4ubm93KCkseGM9L1w/Lyx5Yz0vKCwpfChcW3x7KXwofXxdKXwiKD86W14iXFxcclxuXXxcXFsiXFxcL2JmbnJ0XXxcXHVbXGRhLWZBLUZdezR9KSoiXHMqOj98dHJ1ZXxmYWxzZXxudWxsfC0/KD8hMFxkKVxkKyg/OlwuXGQrfCkoPzpbZUVdWystXT9cZCt8KS9nO24ucGFyc2VKU09OPWZ1bmN0aW9uKGIpe2lmKGEuSlNPTiYmYS5KU09OLnBhcnNlKXJldHVybiBhLkpTT04ucGFyc2UoYisiIik7dmFyIGMsZD1udWxsLGU9bi50cmltKGIrIiIpO3JldHVybiBlJiYhbi50cmltKGUucmVwbGFjZSh5YyxmdW5jdGlvbihhLGIsZSxmKXtyZXR1cm4gYyYmYiYmKGQ9MCksMD09PWQ/YTooYz1lfHxiLGQrPSFmLSFlLCIiKX0pKT9GdW5jdGlvbigicmV0dXJuICIrZSkoKTpuLmVycm9yKCJJbnZhbGlkIEpTT046ICIrYil9LG4ucGFyc2VYTUw9ZnVuY3Rpb24oYil7dmFyIGMsZDtpZighYnx8InN0cmluZyIhPXR5cGVvZiBiKXJldHVybiBudWxsO3RyeXthLkRPTVBhcnNlcj8oZD1uZXcgRE9NUGFyc2VyLGM9ZC5wYXJzZUZyb21TdHJpbmcoYiwidGV4dC94bWwiKSk6KGM9bmV3IEFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxET00iKSxjLmFzeW5jPSJmYWxzZSIsYy5sb2FkWE1MKGIpKX1jYXRjaChlKXtjPXZvaWQgMH1yZXR1cm4gYyYmYy5kb2N1bWVudEVsZW1lbnQmJiFjLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwYXJzZXJlcnJvciIpLmxlbmd0aHx8bi5lcnJvcigiSW52YWxpZCBYTUw6ICIrYiksY307dmFyIHpjLEFjLEJjPS8jLiokLyxDYz0vKFs/Jl0pXz1bXiZdKi8sRGM9L14oLio/KTpbIFx0XSooW15cclxuXSopXHI/JC9nbSxFYz0vXig/OmFib3V0fGFwcHxhcHAtc3RvcmFnZXwuKy1leHRlbnNpb258ZmlsZXxyZXN8d2lkZ2V0KTokLyxGYz0vXig/OkdFVHxIRUFEKSQvLEdjPS9eXC9cLy8sSGM9L14oW1x3ListXSs6KSg/OlwvXC8oPzpbXlwvPyNdKkB8KShbXlwvPyM6XSopKD86OihcZCspfCl8KS8sSWM9e30sSmM9e30sS2M9IiovIi5jb25jYXQoIioiKTt0cnl7QWM9bG9jYXRpb24uaHJlZn1jYXRjaChMYyl7QWM9ei5jcmVhdGVFbGVtZW50KCJhIiksQWMuaHJlZj0iIixBYz1BYy5ocmVmfXpjPUhjLmV4ZWMoQWMudG9Mb3dlckNhc2UoKSl8fFtdO2Z1bmN0aW9uIE1jKGEpe3JldHVybiBmdW5jdGlvbihiLGMpeyJzdHJpbmciIT10eXBlb2YgYiYmKGM9YixiPSIqIik7dmFyIGQsZT0wLGY9Yi50b0xvd2VyQ2FzZSgpLm1hdGNoKEYpfHxbXTtpZihuLmlzRnVuY3Rpb24oYykpd2hpbGUoZD1mW2UrK10pIisiPT09ZC5jaGFyQXQoMCk/KGQ9ZC5zbGljZSgxKXx8IioiLChhW2RdPWFbZF18fFtdKS51bnNoaWZ0KGMpKTooYVtkXT1hW2RdfHxbXSkucHVzaChjKX19ZnVuY3Rpb24gTmMoYSxiLGMsZCl7dmFyIGU9e30sZj1hPT09SmM7ZnVuY3Rpb24gZyhoKXt2YXIgaTtyZXR1cm4gZVtoXT0hMCxuLmVhY2goYVtoXXx8W10sZnVuY3Rpb24oYSxoKXt2YXIgaj1oKGIsYyxkKTtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGp8fGZ8fGVbal0/Zj8hKGk9aik6dm9pZCAwOihiLmRhdGFUeXBlcy51bnNoaWZ0KGopLGcoaiksITEpfSksaX1yZXR1cm4gZyhiLmRhdGFUeXBlc1swXSl8fCFlWyIqIl0mJmcoIioiKX1mdW5jdGlvbiBPYyhhLGIpe3ZhciBjLGQsZT1uLmFqYXhTZXR0aW5ncy5mbGF0T3B0aW9uc3x8e307Zm9yKGQgaW4gYil2b2lkIDAhPT1iW2RdJiYoKGVbZF0/YTpjfHwoYz17fSkpW2RdPWJbZF0pO3JldHVybiBjJiZuLmV4dGVuZCghMCxhLGMpLGF9ZnVuY3Rpb24gUGMoYSxiLGMpe3ZhciBkLGUsZixnLGg9YS5jb250ZW50cyxpPWEuZGF0YVR5cGVzO3doaWxlKCIqIj09PWlbMF0paS5zaGlmdCgpLHZvaWQgMD09PWUmJihlPWEubWltZVR5cGV8fGIuZ2V0UmVzcG9uc2VIZWFkZXIoIkNvbnRlbnQtVHlwZSIpKTtpZihlKWZvcihnIGluIGgpaWYoaFtnXSYmaFtnXS50ZXN0KGUpKXtpLnVuc2hpZnQoZyk7YnJlYWt9aWYoaVswXWluIGMpZj1pWzBdO2Vsc2V7Zm9yKGcgaW4gYyl7aWYoIWlbMF18fGEuY29udmVydGVyc1tnKyIgIitpWzBdXSl7Zj1nO2JyZWFrfWR8fChkPWcpfWY9Znx8ZH1yZXR1cm4gZj8oZiE9PWlbMF0mJmkudW5zaGlmdChmKSxjW2ZdKTp2b2lkIDB9ZnVuY3Rpb24gUWMoYSxiLGMsZCl7dmFyIGUsZixnLGgsaSxqPXt9LGs9YS5kYXRhVHlwZXMuc2xpY2UoKTtpZihrWzFdKWZvcihnIGluIGEuY29udmVydGVycylqW2cudG9Mb3dlckNhc2UoKV09YS5jb252ZXJ0ZXJzW2ddO2Y9ay5zaGlmdCgpO3doaWxlKGYpaWYoYS5yZXNwb25zZUZpZWxkc1tmXSYmKGNbYS5yZXNwb25zZUZpZWxkc1tmXV09YiksIWkmJmQmJmEuZGF0YUZpbHRlciYmKGI9YS5kYXRhRmlsdGVyKGIsYS5kYXRhVHlwZSkpLGk9ZixmPWsuc2hpZnQoKSlpZigiKiI9PT1mKWY9aTtlbHNlIGlmKCIqIiE9PWkmJmkhPT1mKXtpZihnPWpbaSsiICIrZl18fGpbIiogIitmXSwhZylmb3IoZSBpbiBqKWlmKGg9ZS5zcGxpdCgiICIpLGhbMV09PT1mJiYoZz1qW2krIiAiK2hbMF1dfHxqWyIqICIraFswXV0pKXtnPT09ITA/Zz1qW2VdOmpbZV0hPT0hMCYmKGY9aFswXSxrLnVuc2hpZnQoaFsxXSkpO2JyZWFrfWlmKGchPT0hMClpZihnJiZhWyJ0aHJvd3MiXSliPWcoYik7ZWxzZSB0cnl7Yj1nKGIpfWNhdGNoKGwpe3JldHVybntzdGF0ZToicGFyc2VyZXJyb3IiLGVycm9yOmc/bDoiTm8gY29udmVyc2lvbiBmcm9tICIraSsiIHRvICIrZn19fXJldHVybntzdGF0ZToic3VjY2VzcyIsZGF0YTpifX1uLmV4dGVuZCh7YWN0aXZlOjAsbGFzdE1vZGlmaWVkOnt9LGV0YWc6e30sYWpheFNldHRpbmdzOnt1cmw6QWMsdHlwZToiR0VUIixpc0xvY2FsOkVjLnRlc3QoemNbMV0pLGdsb2JhbDohMCxwcm9jZXNzRGF0YTohMCxhc3luYzohMCxjb250ZW50VHlwZToiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04IixhY2NlcHRzOnsiKiI6S2MsdGV4dDoidGV4dC9wbGFpbiIsaHRtbDoidGV4dC9odG1sIix4bWw6ImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWwiLGpzb246ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdCJ9LGNvbnRlbnRzOnt4bWw6L3htbC8saHRtbDovaHRtbC8sanNvbjovanNvbi99LHJlc3BvbnNlRmllbGRzOnt4bWw6InJlc3BvbnNlWE1MIix0ZXh0OiJyZXNwb25zZVRleHQiLGpzb246InJlc3BvbnNlSlNPTiJ9LGNvbnZlcnRlcnM6eyIqIHRleHQiOlN0cmluZywidGV4dCBodG1sIjohMCwidGV4dCBqc29uIjpuLnBhcnNlSlNPTiwidGV4dCB4bWwiOm4ucGFyc2VYTUx9LGZsYXRPcHRpb25zOnt1cmw6ITAsY29udGV4dDohMH19LGFqYXhTZXR1cDpmdW5jdGlvbihhLGIpe3JldHVybiBiP09jKE9jKGEsbi5hamF4U2V0dGluZ3MpLGIpOk9jKG4uYWpheFNldHRpbmdzLGEpfSxhamF4UHJlZmlsdGVyOk1jKEljKSxhamF4VHJhbnNwb3J0Ok1jKEpjKSxhamF4OmZ1bmN0aW9uKGEsYil7Im9iamVjdCI9PXR5cGVvZiBhJiYoYj1hLGE9dm9pZCAwKSxiPWJ8fHt9O3ZhciBjLGQsZSxmLGcsaCxpLGosaz1uLmFqYXhTZXR1cCh7fSxiKSxsPWsuY29udGV4dHx8ayxtPWsuY29udGV4dCYmKGwubm9kZVR5cGV8fGwuanF1ZXJ5KT9uKGwpOm4uZXZlbnQsbz1uLkRlZmVycmVkKCkscD1uLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxxPWsuc3RhdHVzQ29kZXx8e30scj17fSxzPXt9LHQ9MCx1PSJjYW5jZWxlZCIsdj17cmVhZHlTdGF0ZTowLGdldFJlc3BvbnNlSGVhZGVyOmZ1bmN0aW9uKGEpe3ZhciBiO2lmKDI9PT10KXtpZighail7aj17fTt3aGlsZShiPURjLmV4ZWMoZikpaltiWzFdLnRvTG93ZXJDYXNlKCldPWJbMl19Yj1qW2EudG9Mb3dlckNhc2UoKV19cmV0dXJuIG51bGw9PWI/bnVsbDpifSxnZXRBbGxSZXNwb25zZUhlYWRlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXQ/ZjpudWxsfSxzZXRSZXF1ZXN0SGVhZGVyOmZ1bmN0aW9uKGEsYil7dmFyIGM9YS50b0xvd2VyQ2FzZSgpO3JldHVybiB0fHwoYT1zW2NdPXNbY118fGEsclthXT1iKSx0aGlzfSxvdmVycmlkZU1pbWVUeXBlOmZ1bmN0aW9uKGEpe3JldHVybiB0fHwoay5taW1lVHlwZT1hKSx0aGlzfSxzdGF0dXNDb2RlOmZ1bmN0aW9uKGEpe3ZhciBiO2lmKGEpaWYoMj50KWZvcihiIGluIGEpcVtiXT1bcVtiXSxhW2JdXTtlbHNlIHYuYWx3YXlzKGFbdi5zdGF0dXNdKTtyZXR1cm4gdGhpc30sYWJvcnQ6ZnVuY3Rpb24oYSl7dmFyIGI9YXx8dTtyZXR1cm4gaSYmaS5hYm9ydChiKSx4KDAsYiksdGhpc319O2lmKG8ucHJvbWlzZSh2KS5jb21wbGV0ZT1wLmFkZCx2LnN1Y2Nlc3M9di5kb25lLHYuZXJyb3I9di5mYWlsLGsudXJsPSgoYXx8ay51cmx8fEFjKSsiIikucmVwbGFjZShCYywiIikucmVwbGFjZShHYyx6Y1sxXSsiLy8iKSxrLnR5cGU9Yi5tZXRob2R8fGIudHlwZXx8ay5tZXRob2R8fGsudHlwZSxrLmRhdGFUeXBlcz1uLnRyaW0oay5kYXRhVHlwZXx8IioiKS50b0xvd2VyQ2FzZSgpLm1hdGNoKEYpfHxbIiJdLG51bGw9PWsuY3Jvc3NEb21haW4mJihjPUhjLmV4ZWMoay51cmwudG9Mb3dlckNhc2UoKSksay5jcm9zc0RvbWFpbj0hKCFjfHxjWzFdPT09emNbMV0mJmNbMl09PT16Y1syXSYmKGNbM118fCgiaHR0cDoiPT09Y1sxXT8iODAiOiI0NDMiKSk9PT0oemNbM118fCgiaHR0cDoiPT09emNbMV0/IjgwIjoiNDQzIikpKSksay5kYXRhJiZrLnByb2Nlc3NEYXRhJiYic3RyaW5nIiE9dHlwZW9mIGsuZGF0YSYmKGsuZGF0YT1uLnBhcmFtKGsuZGF0YSxrLnRyYWRpdGlvbmFsKSksTmMoSWMsayxiLHYpLDI9PT10KXJldHVybiB2O2g9ay5nbG9iYWwsaCYmMD09PW4uYWN0aXZlKysmJm4uZXZlbnQudHJpZ2dlcigiYWpheFN0YXJ0Iiksay50eXBlPWsudHlwZS50b1VwcGVyQ2FzZSgpLGsuaGFzQ29udGVudD0hRmMudGVzdChrLnR5cGUpLGU9ay51cmwsay5oYXNDb250ZW50fHwoay5kYXRhJiYoZT1rLnVybCs9KHhjLnRlc3QoZSk/IiYiOiI/Iikray5kYXRhLGRlbGV0ZSBrLmRhdGEpLGsuY2FjaGU9PT0hMSYmKGsudXJsPUNjLnRlc3QoZSk/ZS5yZXBsYWNlKENjLCIkMV89Iit3YysrKTplKyh4Yy50ZXN0KGUpPyImIjoiPyIpKyJfPSIrd2MrKykpLGsuaWZNb2RpZmllZCYmKG4ubGFzdE1vZGlmaWVkW2VdJiZ2LnNldFJlcXVlc3RIZWFkZXIoIklmLU1vZGlmaWVkLVNpbmNlIixuLmxhc3RNb2RpZmllZFtlXSksbi5ldGFnW2VdJiZ2LnNldFJlcXVlc3RIZWFkZXIoIklmLU5vbmUtTWF0Y2giLG4uZXRhZ1tlXSkpLChrLmRhdGEmJmsuaGFzQ29udGVudCYmay5jb250ZW50VHlwZSE9PSExfHxiLmNvbnRlbnRUeXBlKSYmdi5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLGsuY29udGVudFR5cGUpLHYuc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0IixrLmRhdGFUeXBlc1swXSYmay5hY2NlcHRzW2suZGF0YVR5cGVzWzBdXT9rLmFjY2VwdHNbay5kYXRhVHlwZXNbMF1dKygiKiIhPT1rLmRhdGFUeXBlc1swXT8iLCAiK0tjKyI7IHE9MC4wMSI6IiIpOmsuYWNjZXB0c1siKiJdKTtmb3IoZCBpbiBrLmhlYWRlcnMpdi5zZXRSZXF1ZXN0SGVhZGVyKGQsay5oZWFkZXJzW2RdKTtpZihrLmJlZm9yZVNlbmQmJihrLmJlZm9yZVNlbmQuY2FsbChsLHYsayk9PT0hMXx8Mj09PXQpKXJldHVybiB2LmFib3J0KCk7dT0iYWJvcnQiO2ZvcihkIGlue3N1Y2Nlc3M6MSxlcnJvcjoxLGNvbXBsZXRlOjF9KXZbZF0oa1tkXSk7aWYoaT1OYyhKYyxrLGIsdikpe3YucmVhZHlTdGF0ZT0xLGgmJm0udHJpZ2dlcigiYWpheFNlbmQiLFt2LGtdKSxrLmFzeW5jJiZrLnRpbWVvdXQ+MCYmKGc9c2V0VGltZW91dChmdW5jdGlvbigpe3YuYWJvcnQoInRpbWVvdXQiKX0say50aW1lb3V0KSk7dHJ5e3Q9MSxpLnNlbmQocix4KX1jYXRjaCh3KXtpZighKDI+dCkpdGhyb3cgdzt4KC0xLHcpfX1lbHNlIHgoLTEsIk5vIFRyYW5zcG9ydCIpO2Z1bmN0aW9uIHgoYSxiLGMsZCl7dmFyIGoscixzLHUsdyx4PWI7MiE9PXQmJih0PTIsZyYmY2xlYXJUaW1lb3V0KGcpLGk9dm9pZCAwLGY9ZHx8IiIsdi5yZWFkeVN0YXRlPWE+MD80OjAsaj1hPj0yMDAmJjMwMD5hfHwzMDQ9PT1hLGMmJih1PVBjKGssdixjKSksdT1RYyhrLHUsdixqKSxqPyhrLmlmTW9kaWZpZWQmJih3PXYuZ2V0UmVzcG9uc2VIZWFkZXIoIkxhc3QtTW9kaWZpZWQiKSx3JiYobi5sYXN0TW9kaWZpZWRbZV09dyksdz12LmdldFJlc3BvbnNlSGVhZGVyKCJldGFnIiksdyYmKG4uZXRhZ1tlXT13KSksMjA0PT09YXx8IkhFQUQiPT09ay50eXBlP3g9Im5vY29udGVudCI6MzA0PT09YT94PSJub3Rtb2RpZmllZCI6KHg9dS5zdGF0ZSxyPXUuZGF0YSxzPXUuZXJyb3Isaj0hcykpOihzPXgsKGF8fCF4KSYmKHg9ImVycm9yIiwwPmEmJihhPTApKSksdi5zdGF0dXM9YSx2LnN0YXR1c1RleHQ9KGJ8fHgpKyIiLGo/by5yZXNvbHZlV2l0aChsLFtyLHgsdl0pOm8ucmVqZWN0V2l0aChsLFt2LHgsc10pLHYuc3RhdHVzQ29kZShxKSxxPXZvaWQgMCxoJiZtLnRyaWdnZXIoaj8iYWpheFN1Y2Nlc3MiOiJhamF4RXJyb3IiLFt2LGssaj9yOnNdKSxwLmZpcmVXaXRoKGwsW3YseF0pLGgmJihtLnRyaWdnZXIoImFqYXhDb21wbGV0ZSIsW3Ysa10pLC0tbi5hY3RpdmV8fG4uZXZlbnQudHJpZ2dlcigiYWpheFN0b3AiKSkpfXJldHVybiB2fSxnZXRKU09OOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbi5nZXQoYSxiLGMsImpzb24iKX0sZ2V0U2NyaXB0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIG4uZ2V0KGEsdm9pZCAwLGIsInNjcmlwdCIpfX0pLG4uZWFjaChbImdldCIsInBvc3QiXSxmdW5jdGlvbihhLGIpe25bYl09ZnVuY3Rpb24oYSxjLGQsZSl7cmV0dXJuIG4uaXNGdW5jdGlvbihjKSYmKGU9ZXx8ZCxkPWMsYz12b2lkIDApLG4uYWpheCh7dXJsOmEsdHlwZTpiLGRhdGFUeXBlOmUsZGF0YTpjLHN1Y2Nlc3M6ZH0pfX0pLG4uZWFjaChbImFqYXhTdGFydCIsImFqYXhTdG9wIiwiYWpheENvbXBsZXRlIiwiYWpheEVycm9yIiwiYWpheFN1Y2Nlc3MiLCJhamF4U2VuZCJdLGZ1bmN0aW9uKGEsYil7bi5mbltiXT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5vbihiLGEpfX0pLG4uX2V2YWxVcmw9ZnVuY3Rpb24oYSl7cmV0dXJuIG4uYWpheCh7dXJsOmEsdHlwZToiR0VUIixkYXRhVHlwZToic2NyaXB0Iixhc3luYzohMSxnbG9iYWw6ITEsInRocm93cyI6ITB9KX0sbi5mbi5leHRlbmQoe3dyYXBBbGw6ZnVuY3Rpb24oYSl7aWYobi5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7bih0aGlzKS53cmFwQWxsKGEuY2FsbCh0aGlzLGIpKX0pO2lmKHRoaXNbMF0pe3ZhciBiPW4oYSx0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmVxKDApLmNsb25lKCEwKTt0aGlzWzBdLnBhcmVudE5vZGUmJmIuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pLGIubWFwKGZ1bmN0aW9uKCl7dmFyIGE9dGhpczt3aGlsZShhLmZpcnN0Q2hpbGQmJjE9PT1hLmZpcnN0Q2hpbGQubm9kZVR5cGUpYT1hLmZpcnN0Q2hpbGQ7cmV0dXJuIGF9KS5hcHBlbmQodGhpcyl9cmV0dXJuIHRoaXN9LHdyYXBJbm5lcjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKG4uaXNGdW5jdGlvbihhKT9mdW5jdGlvbihiKXtuKHRoaXMpLndyYXBJbm5lcihhLmNhbGwodGhpcyxiKSl9OmZ1bmN0aW9uKCl7dmFyIGI9bih0aGlzKSxjPWIuY29udGVudHMoKTtjLmxlbmd0aD9jLndyYXBBbGwoYSk6Yi5hcHBlbmQoYSl9KX0sd3JhcDpmdW5jdGlvbihhKXt2YXIgYj1uLmlzRnVuY3Rpb24oYSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihjKXtuKHRoaXMpLndyYXBBbGwoYj9hLmNhbGwodGhpcyxjKTphKX0pfSx1bndyYXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQoKS5lYWNoKGZ1bmN0aW9uKCl7bi5ub2RlTmFtZSh0aGlzLCJib2R5Iil8fG4odGhpcykucmVwbGFjZVdpdGgodGhpcy5jaGlsZE5vZGVzKX0pLmVuZCgpfX0pLG4uZXhwci5maWx0ZXJzLmhpZGRlbj1mdW5jdGlvbihhKXtyZXR1cm4gYS5vZmZzZXRXaWR0aDw9MCYmYS5vZmZzZXRIZWlnaHQ8PTB8fCFsLnJlbGlhYmxlSGlkZGVuT2Zmc2V0cygpJiYibm9uZSI9PT0oYS5zdHlsZSYmYS5zdHlsZS5kaXNwbGF5fHxuLmNzcyhhLCJkaXNwbGF5IikpfSxuLmV4cHIuZmlsdGVycy52aXNpYmxlPWZ1bmN0aW9uKGEpe3JldHVybiFuLmV4cHIuZmlsdGVycy5oaWRkZW4oYSl9O3ZhciBSYz0vJTIwL2csU2M9L1xbXF0kLyxUYz0vXHI/XG4vZyxVYz0vXig/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVzZXR8ZmlsZSkkL2ksVmM9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8a2V5Z2VuKS9pO2Z1bmN0aW9uIFdjKGEsYixjLGQpe3ZhciBlO2lmKG4uaXNBcnJheShiKSluLmVhY2goYixmdW5jdGlvbihiLGUpe2N8fFNjLnRlc3QoYSk/ZChhLGUpOldjKGErIlsiKygib2JqZWN0Ij09dHlwZW9mIGU/YjoiIikrIl0iLGUsYyxkKX0pO2Vsc2UgaWYoY3x8Im9iamVjdCIhPT1uLnR5cGUoYikpZChhLGIpO2Vsc2UgZm9yKGUgaW4gYilXYyhhKyJbIitlKyJdIixiW2VdLGMsZCl9bi5wYXJhbT1mdW5jdGlvbihhLGIpe3ZhciBjLGQ9W10sZT1mdW5jdGlvbihhLGIpe2I9bi5pc0Z1bmN0aW9uKGIpP2IoKTpudWxsPT1iPyIiOmIsZFtkLmxlbmd0aF09ZW5jb2RlVVJJQ29tcG9uZW50KGEpKyI9IitlbmNvZGVVUklDb21wb25lbnQoYil9O2lmKHZvaWQgMD09PWImJihiPW4uYWpheFNldHRpbmdzJiZuLmFqYXhTZXR0aW5ncy50cmFkaXRpb25hbCksbi5pc0FycmF5KGEpfHxhLmpxdWVyeSYmIW4uaXNQbGFpbk9iamVjdChhKSluLmVhY2goYSxmdW5jdGlvbigpe2UodGhpcy5uYW1lLHRoaXMudmFsdWUpfSk7ZWxzZSBmb3IoYyBpbiBhKVdjKGMsYVtjXSxiLGUpO3JldHVybiBkLmpvaW4oIiYiKS5yZXBsYWNlKFJjLCIrIil9LG4uZm4uZXh0ZW5kKHtzZXJpYWxpemU6ZnVuY3Rpb24oKXtyZXR1cm4gbi5wYXJhbSh0aGlzLnNlcmlhbGl6ZUFycmF5KCkpfSxzZXJpYWxpemVBcnJheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBhPW4ucHJvcCh0aGlzLCJlbGVtZW50cyIpO3JldHVybiBhP24ubWFrZUFycmF5KGEpOnRoaXN9KS5maWx0ZXIoZnVuY3Rpb24oKXt2YXIgYT10aGlzLnR5cGU7cmV0dXJuIHRoaXMubmFtZSYmIW4odGhpcykuaXMoIjpkaXNhYmxlZCIpJiZWYy50ZXN0KHRoaXMubm9kZU5hbWUpJiYhVWMudGVzdChhKSYmKHRoaXMuY2hlY2tlZHx8IVgudGVzdChhKSl9KS5tYXAoZnVuY3Rpb24oYSxiKXt2YXIgYz1uKHRoaXMpLnZhbCgpO3JldHVybiBudWxsPT1jP251bGw6bi5pc0FycmF5KGMpP24ubWFwKGMsZnVuY3Rpb24oYSl7cmV0dXJue25hbWU6Yi5uYW1lLHZhbHVlOmEucmVwbGFjZShUYywiXHJcbiIpfX0pOntuYW1lOmIubmFtZSx2YWx1ZTpjLnJlcGxhY2UoVGMsIlxyXG4iKX19KS5nZXQoKX19KSxuLmFqYXhTZXR0aW5ncy54aHI9dm9pZCAwIT09YS5BY3RpdmVYT2JqZWN0P2Z1bmN0aW9uKCl7cmV0dXJuIXRoaXMuaXNMb2NhbCYmL14oZ2V0fHBvc3R8aGVhZHxwdXR8ZGVsZXRlfG9wdGlvbnMpJC9pLnRlc3QodGhpcy50eXBlKSYmJGMoKXx8X2MoKX06JGM7dmFyIFhjPTAsWWM9e30sWmM9bi5hamF4U2V0dGluZ3MueGhyKCk7YS5BY3RpdmVYT2JqZWN0JiZuKGEpLm9uKCJ1bmxvYWQiLGZ1bmN0aW9uKCl7Zm9yKHZhciBhIGluIFljKVljW2FdKHZvaWQgMCwhMCl9KSxsLmNvcnM9ISFaYyYmIndpdGhDcmVkZW50aWFscyJpbiBaYyxaYz1sLmFqYXg9ISFaYyxaYyYmbi5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKGEpe2lmKCFhLmNyb3NzRG9tYWlufHxsLmNvcnMpe3ZhciBiO3JldHVybntzZW5kOmZ1bmN0aW9uKGMsZCl7dmFyIGUsZj1hLnhocigpLGc9KytYYztpZihmLm9wZW4oYS50eXBlLGEudXJsLGEuYXN5bmMsYS51c2VybmFtZSxhLnBhc3N3b3JkKSxhLnhockZpZWxkcylmb3IoZSBpbiBhLnhockZpZWxkcylmW2VdPWEueGhyRmllbGRzW2VdO2EubWltZVR5cGUmJmYub3ZlcnJpZGVNaW1lVHlwZSYmZi5vdmVycmlkZU1pbWVUeXBlKGEubWltZVR5cGUpLGEuY3Jvc3NEb21haW58fGNbIlgtUmVxdWVzdGVkLVdpdGgiXXx8KGNbIlgtUmVxdWVzdGVkLVdpdGgiXT0iWE1MSHR0cFJlcXVlc3QiKTtmb3IoZSBpbiBjKXZvaWQgMCE9PWNbZV0mJmYuc2V0UmVxdWVzdEhlYWRlcihlLGNbZV0rIiIpO2Yuc2VuZChhLmhhc0NvbnRlbnQmJmEuZGF0YXx8bnVsbCksYj1mdW5jdGlvbihjLGUpe3ZhciBoLGksajtpZihiJiYoZXx8ND09PWYucmVhZHlTdGF0ZSkpaWYoZGVsZXRlIFljW2ddLGI9dm9pZCAwLGYub25yZWFkeXN0YXRlY2hhbmdlPW4ubm9vcCxlKTQhPT1mLnJlYWR5U3RhdGUmJmYuYWJvcnQoKTtlbHNle2o9e30saD1mLnN0YXR1cywic3RyaW5nIj09dHlwZW9mIGYucmVzcG9uc2VUZXh0JiYoai50ZXh0PWYucmVzcG9uc2VUZXh0KTt0cnl7aT1mLnN0YXR1c1RleHR9Y2F0Y2goayl7aT0iIn1ofHwhYS5pc0xvY2FsfHxhLmNyb3NzRG9tYWluPzEyMjM9PT1oJiYoaD0yMDQpOmg9ai50ZXh0PzIwMDo0MDR9aiYmZChoLGksaixmLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKX0sYS5hc3luYz80PT09Zi5yZWFkeVN0YXRlP3NldFRpbWVvdXQoYik6Zi5vbnJlYWR5c3RhdGVjaGFuZ2U9WWNbZ109YjpiKCl9LGFib3J0OmZ1bmN0aW9uKCl7YiYmYih2b2lkIDAsITApfX19fSk7ZnVuY3Rpb24gJGMoKXt0cnl7cmV0dXJuIG5ldyBhLlhNTEh0dHBSZXF1ZXN0fWNhdGNoKGIpe319ZnVuY3Rpb24gX2MoKXt0cnl7cmV0dXJuIG5ldyBhLkFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIil9Y2F0Y2goYil7fX1uLmFqYXhTZXR1cCh7YWNjZXB0czp7c2NyaXB0OiJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdCJ9LGNvbnRlbnRzOntzY3JpcHQ6Lyg/OmphdmF8ZWNtYSlzY3JpcHQvfSxjb252ZXJ0ZXJzOnsidGV4dCBzY3JpcHQiOmZ1bmN0aW9uKGEpe3JldHVybiBuLmdsb2JhbEV2YWwoYSksYX19fSksbi5hamF4UHJlZmlsdGVyKCJzY3JpcHQiLGZ1bmN0aW9uKGEpe3ZvaWQgMD09PWEuY2FjaGUmJihhLmNhY2hlPSExKSxhLmNyb3NzRG9tYWluJiYoYS50eXBlPSJHRVQiLGEuZ2xvYmFsPSExKX0pLG4uYWpheFRyYW5zcG9ydCgic2NyaXB0IixmdW5jdGlvbihhKXtpZihhLmNyb3NzRG9tYWluKXt2YXIgYixjPXouaGVhZHx8bigiaGVhZCIpWzBdfHx6LmRvY3VtZW50RWxlbWVudDtyZXR1cm57c2VuZDpmdW5jdGlvbihkLGUpe2I9ei5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSxiLmFzeW5jPSEwLGEuc2NyaXB0Q2hhcnNldCYmKGIuY2hhcnNldD1hLnNjcmlwdENoYXJzZXQpLGIuc3JjPWEudXJsLGIub25sb2FkPWIub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKGEsYyl7KGN8fCFiLnJlYWR5U3RhdGV8fC9sb2FkZWR8Y29tcGxldGUvLnRlc3QoYi5yZWFkeVN0YXRlKSkmJihiLm9ubG9hZD1iLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLGIucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGIpLGI9bnVsbCxjfHxlKDIwMCwic3VjY2VzcyIpKX0sYy5pbnNlcnRCZWZvcmUoYixjLmZpcnN0Q2hpbGQpfSxhYm9ydDpmdW5jdGlvbigpe2ImJmIub25sb2FkKHZvaWQgMCwhMCl9fX19KTt2YXIgYWQ9W10sYmQ9Lyg9KVw/KD89JnwkKXxcP1w/LztuLmFqYXhTZXR1cCh7anNvbnA6ImNhbGxiYWNrIixqc29ucENhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIGE9YWQucG9wKCl8fG4uZXhwYW5kbysiXyIrd2MrKztyZXR1cm4gdGhpc1thXT0hMCxhfX0pLG4uYWpheFByZWZpbHRlcigianNvbiBqc29ucCIsZnVuY3Rpb24oYixjLGQpe3ZhciBlLGYsZyxoPWIuanNvbnAhPT0hMSYmKGJkLnRlc3QoYi51cmwpPyJ1cmwiOiJzdHJpbmciPT10eXBlb2YgYi5kYXRhJiYhKGIuY29udGVudFR5cGV8fCIiKS5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSYmYmQudGVzdChiLmRhdGEpJiYiZGF0YSIpO3JldHVybiBofHwianNvbnAiPT09Yi5kYXRhVHlwZXNbMF0/KGU9Yi5qc29ucENhbGxiYWNrPW4uaXNGdW5jdGlvbihiLmpzb25wQ2FsbGJhY2spP2IuanNvbnBDYWxsYmFjaygpOmIuanNvbnBDYWxsYmFjayxoP2JbaF09YltoXS5yZXBsYWNlKGJkLCIkMSIrZSk6Yi5qc29ucCE9PSExJiYoYi51cmwrPSh4Yy50ZXN0KGIudXJsKT8iJiI6Ij8iKStiLmpzb25wKyI9IitlKSxiLmNvbnZlcnRlcnNbInNjcmlwdCBqc29uIl09ZnVuY3Rpb24oKXtyZXR1cm4gZ3x8bi5lcnJvcihlKyIgd2FzIG5vdCBjYWxsZWQiKSxnWzBdfSxiLmRhdGFUeXBlc1swXT0ianNvbiIsZj1hW2VdLGFbZV09ZnVuY3Rpb24oKXtnPWFyZ3VtZW50c30sZC5hbHdheXMoZnVuY3Rpb24oKXthW2VdPWYsYltlXSYmKGIuanNvbnBDYWxsYmFjaz1jLmpzb25wQ2FsbGJhY2ssYWQucHVzaChlKSksZyYmbi5pc0Z1bmN0aW9uKGYpJiZmKGdbMF0pLGc9Zj12b2lkIDB9KSwic2NyaXB0Iik6dm9pZCAwfSksbi5wYXJzZUhUTUw9ZnVuY3Rpb24oYSxiLGMpe2lmKCFhfHwic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIG51bGw7ImJvb2xlYW4iPT10eXBlb2YgYiYmKGM9YixiPSExKSxiPWJ8fHo7dmFyIGQ9di5leGVjKGEpLGU9IWMmJltdO3JldHVybiBkP1tiLmNyZWF0ZUVsZW1lbnQoZFsxXSldOihkPW4uYnVpbGRGcmFnbWVudChbYV0sYixlKSxlJiZlLmxlbmd0aCYmbihlKS5yZW1vdmUoKSxuLm1lcmdlKFtdLGQuY2hpbGROb2RlcykpfTt2YXIgY2Q9bi5mbi5sb2FkO24uZm4ubG9hZD1mdW5jdGlvbihhLGIsYyl7aWYoInN0cmluZyIhPXR5cGVvZiBhJiZjZClyZXR1cm4gY2QuYXBwbHkodGhpcyxhcmd1bWVudHMpO3ZhciBkLGUsZixnPXRoaXMsaD1hLmluZGV4T2YoIiAiKTtyZXR1cm4gaD49MCYmKGQ9YS5zbGljZShoLGEubGVuZ3RoKSxhPWEuc2xpY2UoMCxoKSksbi5pc0Z1bmN0aW9uKGIpPyhjPWIsYj12b2lkIDApOmImJiJvYmplY3QiPT10eXBlb2YgYiYmKGY9IlBPU1QiKSxnLmxlbmd0aD4wJiZuLmFqYXgoe3VybDphLHR5cGU6ZixkYXRhVHlwZToiaHRtbCIsZGF0YTpifSkuZG9uZShmdW5jdGlvbihhKXtlPWFyZ3VtZW50cyxnLmh0bWwoZD9uKCI8ZGl2PiIpLmFwcGVuZChuLnBhcnNlSFRNTChhKSkuZmluZChkKTphKX0pLmNvbXBsZXRlKGMmJmZ1bmN0aW9uKGEsYil7Zy5lYWNoKGMsZXx8W2EucmVzcG9uc2VUZXh0LGIsYV0pfSksdGhpc30sbi5leHByLmZpbHRlcnMuYW5pbWF0ZWQ9ZnVuY3Rpb24oYSl7cmV0dXJuIG4uZ3JlcChuLnRpbWVycyxmdW5jdGlvbihiKXtyZXR1cm4gYT09PWIuZWxlbX0pLmxlbmd0aH07dmFyIGRkPWEuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O2Z1bmN0aW9uIGVkKGEpe3JldHVybiBuLmlzV2luZG93KGEpP2E6OT09PWEubm9kZVR5cGU/YS5kZWZhdWx0Vmlld3x8YS5wYXJlbnRXaW5kb3c6ITF9bi5vZmZzZXQ9e3NldE9mZnNldDpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosaz1uLmNzcyhhLCJwb3NpdGlvbiIpLGw9bihhKSxtPXt9OyJzdGF0aWMiPT09ayYmKGEuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIiksaD1sLm9mZnNldCgpLGY9bi5jc3MoYSwidG9wIiksaT1uLmNzcyhhLCJsZWZ0Iiksaj0oImFic29sdXRlIj09PWt8fCJmaXhlZCI9PT1rKSYmbi5pbkFycmF5KCJhdXRvIixbZixpXSk+LTEsaj8oZD1sLnBvc2l0aW9uKCksZz1kLnRvcCxlPWQubGVmdCk6KGc9cGFyc2VGbG9hdChmKXx8MCxlPXBhcnNlRmxvYXQoaSl8fDApLG4uaXNGdW5jdGlvbihiKSYmKGI9Yi5jYWxsKGEsYyxoKSksbnVsbCE9Yi50b3AmJihtLnRvcD1iLnRvcC1oLnRvcCtnKSxudWxsIT1iLmxlZnQmJihtLmxlZnQ9Yi5sZWZ0LWgubGVmdCtlKSwidXNpbmciaW4gYj9iLnVzaW5nLmNhbGwoYSxtKTpsLmNzcyhtKX19LG4uZm4uZXh0ZW5kKHtvZmZzZXQ6ZnVuY3Rpb24oYSl7aWYoYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdm9pZCAwPT09YT90aGlzOnRoaXMuZWFjaChmdW5jdGlvbihiKXtuLm9mZnNldC5zZXRPZmZzZXQodGhpcyxhLGIpfSk7dmFyIGIsYyxkPXt0b3A6MCxsZWZ0OjB9LGU9dGhpc1swXSxmPWUmJmUub3duZXJEb2N1bWVudDtpZihmKXJldHVybiBiPWYuZG9jdW1lbnRFbGVtZW50LG4uY29udGFpbnMoYixlKT8odHlwZW9mIGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0IT09TCYmKGQ9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSksYz1lZChmKSx7dG9wOmQudG9wKyhjLnBhZ2VZT2Zmc2V0fHxiLnNjcm9sbFRvcCktKGIuY2xpZW50VG9wfHwwKSxsZWZ0OmQubGVmdCsoYy5wYWdlWE9mZnNldHx8Yi5zY3JvbGxMZWZ0KS0oYi5jbGllbnRMZWZ0fHwwKX0pOmR9LHBvc2l0aW9uOmZ1bmN0aW9uKCl7aWYodGhpc1swXSl7dmFyIGEsYixjPXt0b3A6MCxsZWZ0OjB9LGQ9dGhpc1swXTtyZXR1cm4iZml4ZWQiPT09bi5jc3MoZCwicG9zaXRpb24iKT9iPWQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk6KGE9dGhpcy5vZmZzZXRQYXJlbnQoKSxiPXRoaXMub2Zmc2V0KCksbi5ub2RlTmFtZShhWzBdLCJodG1sIil8fChjPWEub2Zmc2V0KCkpLGMudG9wKz1uLmNzcyhhWzBdLCJib3JkZXJUb3BXaWR0aCIsITApLGMubGVmdCs9bi5jc3MoYVswXSwiYm9yZGVyTGVmdFdpZHRoIiwhMCkpLHt0b3A6Yi50b3AtYy50b3Atbi5jc3MoZCwibWFyZ2luVG9wIiwhMCksbGVmdDpiLmxlZnQtYy5sZWZ0LW4uY3NzKGQsIm1hcmdpbkxlZnQiLCEwKX19fSxvZmZzZXRQYXJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9mZnNldFBhcmVudHx8ZGQ7d2hpbGUoYSYmIW4ubm9kZU5hbWUoYSwiaHRtbCIpJiYic3RhdGljIj09PW4uY3NzKGEsInBvc2l0aW9uIikpYT1hLm9mZnNldFBhcmVudDtyZXR1cm4gYXx8ZGR9KX19KSxuLmVhY2goe3Njcm9sbExlZnQ6InBhZ2VYT2Zmc2V0IixzY3JvbGxUb3A6InBhZ2VZT2Zmc2V0In0sZnVuY3Rpb24oYSxiKXt2YXIgYz0vWS8udGVzdChiKTtuLmZuW2FdPWZ1bmN0aW9uKGQpe3JldHVybiBXKHRoaXMsZnVuY3Rpb24oYSxkLGUpe3ZhciBmPWVkKGEpO3JldHVybiB2b2lkIDA9PT1lP2Y/YiBpbiBmP2ZbYl06Zi5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbZF06YVtkXTp2b2lkKGY/Zi5zY3JvbGxUbyhjP24oZikuc2Nyb2xsTGVmdCgpOmUsYz9lOm4oZikuc2Nyb2xsVG9wKCkpOmFbZF09ZSl9LGEsZCxhcmd1bWVudHMubGVuZ3RoLG51bGwpfX0pLG4uZWFjaChbInRvcCIsImxlZnQiXSxmdW5jdGlvbihhLGIpe24uY3NzSG9va3NbYl09TWIobC5waXhlbFBvc2l0aW9uLGZ1bmN0aW9uKGEsYyl7cmV0dXJuIGM/KGM9S2IoYSxiKSxJYi50ZXN0KGMpP24oYSkucG9zaXRpb24oKVtiXSsicHgiOmMpOnZvaWQgMH0pfSksbi5lYWNoKHtIZWlnaHQ6ImhlaWdodCIsV2lkdGg6IndpZHRoIn0sZnVuY3Rpb24oYSxiKXtuLmVhY2goe3BhZGRpbmc6ImlubmVyIithLGNvbnRlbnQ6YiwiIjoib3V0ZXIiK2F9LGZ1bmN0aW9uKGMsZCl7bi5mbltkXT1mdW5jdGlvbihkLGUpe3ZhciBmPWFyZ3VtZW50cy5sZW5ndGgmJihjfHwiYm9vbGVhbiIhPXR5cGVvZiBkKSxnPWN8fChkPT09ITB8fGU9PT0hMD8ibWFyZ2luIjoiYm9yZGVyIik7cmV0dXJuIFcodGhpcyxmdW5jdGlvbihiLGMsZCl7dmFyIGU7cmV0dXJuIG4uaXNXaW5kb3coYik/Yi5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrYV06OT09PWIubm9kZVR5cGU/KGU9Yi5kb2N1bWVudEVsZW1lbnQsTWF0aC5tYXgoYi5ib2R5WyJzY3JvbGwiK2FdLGVbInNjcm9sbCIrYV0sYi5ib2R5WyJvZmZzZXQiK2FdLGVbIm9mZnNldCIrYV0sZVsiY2xpZW50IithXSkpOnZvaWQgMD09PWQ/bi5jc3MoYixjLGcpOm4uc3R5bGUoYixjLGQsZyl9LGIsZj9kOnZvaWQgMCxmLG51bGwpfX0pfSksbi5mbi5zaXplPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGVuZ3RofSxuLmZuLmFuZFNlbGY9bi5mbi5hZGRCYWNrLCJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQmJmRlZmluZSgianF1ZXJ5IixbXSxmdW5jdGlvbigpe3JldHVybiBufSk7dmFyIGZkPWEualF1ZXJ5LGdkPWEuJDtyZXR1cm4gbi5ub0NvbmZsaWN0PWZ1bmN0aW9uKGIpe3JldHVybiBhLiQ9PT1uJiYoYS4kPWdkKSxiJiZhLmpRdWVyeT09PW4mJihhLmpRdWVyeT1mZCksbn0sdHlwZW9mIGI9PT1MJiYoYS5qUXVlcnk9YS4kPW4pLG59KTsK"></script>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<script src="data:application/x-javascript;base64,LyohCiAqIEJvb3RzdHJhcCB2My4zLjEgKGh0dHA6Ly9nZXRib290c3RyYXAuY29tKQogKiBDb3B5cmlnaHQgMjAxMS0yMDE0IFR3aXR0ZXIsIEluYy4KICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYXN0ZXIvTElDRU5TRSkKICovCmlmKCJ1bmRlZmluZWQiPT10eXBlb2YgalF1ZXJ5KXRocm93IG5ldyBFcnJvcigiQm9vdHN0cmFwJ3MgSmF2YVNjcmlwdCByZXF1aXJlcyBqUXVlcnkiKTsrZnVuY3Rpb24oYSl7dmFyIGI9YS5mbi5qcXVlcnkuc3BsaXQoIiAiKVswXS5zcGxpdCgiLiIpO2lmKGJbMF08MiYmYlsxXTw5fHwxPT1iWzBdJiY5PT1iWzFdJiZiWzJdPDEpdGhyb3cgbmV3IEVycm9yKCJCb290c3RyYXAncyBKYXZhU2NyaXB0IHJlcXVpcmVzIGpRdWVyeSB2ZXJzaW9uIDEuOS4xIG9yIGhpZ2hlciIpfShqUXVlcnkpLCtmdW5jdGlvbihhKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYigpe3ZhciBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJvb3RzdHJhcCIpLGI9e1dlYmtpdFRyYW5zaXRpb246IndlYmtpdFRyYW5zaXRpb25FbmQiLE1velRyYW5zaXRpb246InRyYW5zaXRpb25lbmQiLE9UcmFuc2l0aW9uOiJvVHJhbnNpdGlvbkVuZCBvdHJhbnNpdGlvbmVuZCIsdHJhbnNpdGlvbjoidHJhbnNpdGlvbmVuZCJ9O2Zvcih2YXIgYyBpbiBiKWlmKHZvaWQgMCE9PWEuc3R5bGVbY10pcmV0dXJue2VuZDpiW2NdfTtyZXR1cm4hMX1hLmZuLmVtdWxhdGVUcmFuc2l0aW9uRW5kPWZ1bmN0aW9uKGIpe3ZhciBjPSExLGQ9dGhpczthKHRoaXMpLm9uZSgiYnNUcmFuc2l0aW9uRW5kIixmdW5jdGlvbigpe2M9ITB9KTt2YXIgZT1mdW5jdGlvbigpe2N8fGEoZCkudHJpZ2dlcihhLnN1cHBvcnQudHJhbnNpdGlvbi5lbmQpfTtyZXR1cm4gc2V0VGltZW91dChlLGIpLHRoaXN9LGEoZnVuY3Rpb24oKXthLnN1cHBvcnQudHJhbnNpdGlvbj1iKCksYS5zdXBwb3J0LnRyYW5zaXRpb24mJihhLmV2ZW50LnNwZWNpYWwuYnNUcmFuc2l0aW9uRW5kPXtiaW5kVHlwZTphLnN1cHBvcnQudHJhbnNpdGlvbi5lbmQsZGVsZWdhdGVUeXBlOmEuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCxoYW5kbGU6ZnVuY3Rpb24oYil7cmV0dXJuIGEoYi50YXJnZXQpLmlzKHRoaXMpP2IuaGFuZGxlT2JqLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpOnZvaWQgMH19KX0pfShqUXVlcnkpLCtmdW5jdGlvbihhKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYihiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGM9YSh0aGlzKSxlPWMuZGF0YSgiYnMuYWxlcnQiKTtlfHxjLmRhdGEoImJzLmFsZXJ0IixlPW5ldyBkKHRoaXMpKSwic3RyaW5nIj09dHlwZW9mIGImJmVbYl0uY2FsbChjKX0pfXZhciBjPSdbZGF0YS1kaXNtaXNzPSJhbGVydCJdJyxkPWZ1bmN0aW9uKGIpe2EoYikub24oImNsaWNrIixjLHRoaXMuY2xvc2UpfTtkLlZFUlNJT049IjMuMy4xIixkLlRSQU5TSVRJT05fRFVSQVRJT049MTUwLGQucHJvdG90eXBlLmNsb3NlPWZ1bmN0aW9uKGIpe2Z1bmN0aW9uIGMoKXtnLmRldGFjaCgpLnRyaWdnZXIoImNsb3NlZC5icy5hbGVydCIpLnJlbW92ZSgpfXZhciBlPWEodGhpcyksZj1lLmF0dHIoImRhdGEtdGFyZ2V0Iik7Znx8KGY9ZS5hdHRyKCJocmVmIiksZj1mJiZmLnJlcGxhY2UoLy4qKD89I1teXHNdKiQpLywiIikpO3ZhciBnPWEoZik7YiYmYi5wcmV2ZW50RGVmYXVsdCgpLGcubGVuZ3RofHwoZz1lLmNsb3Nlc3QoIi5hbGVydCIpKSxnLnRyaWdnZXIoYj1hLkV2ZW50KCJjbG9zZS5icy5hbGVydCIpKSxiLmlzRGVmYXVsdFByZXZlbnRlZCgpfHwoZy5yZW1vdmVDbGFzcygiaW4iKSxhLnN1cHBvcnQudHJhbnNpdGlvbiYmZy5oYXNDbGFzcygiZmFkZSIpP2cub25lKCJic1RyYW5zaXRpb25FbmQiLGMpLmVtdWxhdGVUcmFuc2l0aW9uRW5kKGQuVFJBTlNJVElPTl9EVVJBVElPTik6YygpKX07dmFyIGU9YS5mbi5hbGVydDthLmZuLmFsZXJ0PWIsYS5mbi5hbGVydC5Db25zdHJ1Y3Rvcj1kLGEuZm4uYWxlcnQubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLmFsZXJ0PWUsdGhpc30sYShkb2N1bWVudCkub24oImNsaWNrLmJzLmFsZXJ0LmRhdGEtYXBpIixjLGQucHJvdG90eXBlLmNsb3NlKX0oalF1ZXJ5KSwrZnVuY3Rpb24oYSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGIoYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1kLmRhdGEoImJzLmJ1dHRvbiIpLGY9Im9iamVjdCI9PXR5cGVvZiBiJiZiO2V8fGQuZGF0YSgiYnMuYnV0dG9uIixlPW5ldyBjKHRoaXMsZikpLCJ0b2dnbGUiPT1iP2UudG9nZ2xlKCk6YiYmZS5zZXRTdGF0ZShiKX0pfXZhciBjPWZ1bmN0aW9uKGIsZCl7dGhpcy4kZWxlbWVudD1hKGIpLHRoaXMub3B0aW9ucz1hLmV4dGVuZCh7fSxjLkRFRkFVTFRTLGQpLHRoaXMuaXNMb2FkaW5nPSExfTtjLlZFUlNJT049IjMuMy4xIixjLkRFRkFVTFRTPXtsb2FkaW5nVGV4dDoibG9hZGluZy4uLiJ9LGMucHJvdG90eXBlLnNldFN0YXRlPWZ1bmN0aW9uKGIpe3ZhciBjPSJkaXNhYmxlZCIsZD10aGlzLiRlbGVtZW50LGU9ZC5pcygiaW5wdXQiKT8idmFsIjoiaHRtbCIsZj1kLmRhdGEoKTtiKz0iVGV4dCIsbnVsbD09Zi5yZXNldFRleHQmJmQuZGF0YSgicmVzZXRUZXh0IixkW2VdKCkpLHNldFRpbWVvdXQoYS5wcm94eShmdW5jdGlvbigpe2RbZV0obnVsbD09ZltiXT90aGlzLm9wdGlvbnNbYl06ZltiXSksImxvYWRpbmdUZXh0Ij09Yj8odGhpcy5pc0xvYWRpbmc9ITAsZC5hZGRDbGFzcyhjKS5hdHRyKGMsYykpOnRoaXMuaXNMb2FkaW5nJiYodGhpcy5pc0xvYWRpbmc9ITEsZC5yZW1vdmVDbGFzcyhjKS5yZW1vdmVBdHRyKGMpKX0sdGhpcyksMCl9LGMucHJvdG90eXBlLnRvZ2dsZT1mdW5jdGlvbigpe3ZhciBhPSEwLGI9dGhpcy4kZWxlbWVudC5jbG9zZXN0KCdbZGF0YS10b2dnbGU9ImJ1dHRvbnMiXScpO2lmKGIubGVuZ3RoKXt2YXIgYz10aGlzLiRlbGVtZW50LmZpbmQoImlucHV0Iik7InJhZGlvIj09Yy5wcm9wKCJ0eXBlIikmJihjLnByb3AoImNoZWNrZWQiKSYmdGhpcy4kZWxlbWVudC5oYXNDbGFzcygiYWN0aXZlIik/YT0hMTpiLmZpbmQoIi5hY3RpdmUiKS5yZW1vdmVDbGFzcygiYWN0aXZlIikpLGEmJmMucHJvcCgiY2hlY2tlZCIsIXRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoImFjdGl2ZSIpKS50cmlnZ2VyKCJjaGFuZ2UiKX1lbHNlIHRoaXMuJGVsZW1lbnQuYXR0cigiYXJpYS1wcmVzc2VkIiwhdGhpcy4kZWxlbWVudC5oYXNDbGFzcygiYWN0aXZlIikpO2EmJnRoaXMuJGVsZW1lbnQudG9nZ2xlQ2xhc3MoImFjdGl2ZSIpfTt2YXIgZD1hLmZuLmJ1dHRvbjthLmZuLmJ1dHRvbj1iLGEuZm4uYnV0dG9uLkNvbnN0cnVjdG9yPWMsYS5mbi5idXR0b24ubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLmJ1dHRvbj1kLHRoaXN9LGEoZG9jdW1lbnQpLm9uKCJjbGljay5icy5idXR0b24uZGF0YS1hcGkiLCdbZGF0YS10b2dnbGVePSJidXR0b24iXScsZnVuY3Rpb24oYyl7dmFyIGQ9YShjLnRhcmdldCk7ZC5oYXNDbGFzcygiYnRuIil8fChkPWQuY2xvc2VzdCgiLmJ0biIpKSxiLmNhbGwoZCwidG9nZ2xlIiksYy5wcmV2ZW50RGVmYXVsdCgpfSkub24oImZvY3VzLmJzLmJ1dHRvbi5kYXRhLWFwaSBibHVyLmJzLmJ1dHRvbi5kYXRhLWFwaSIsJ1tkYXRhLXRvZ2dsZV49ImJ1dHRvbiJdJyxmdW5jdGlvbihiKXthKGIudGFyZ2V0KS5jbG9zZXN0KCIuYnRuIikudG9nZ2xlQ2xhc3MoImZvY3VzIiwvXmZvY3VzKGluKT8kLy50ZXN0KGIudHlwZSkpfSl9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZD1hKHRoaXMpLGU9ZC5kYXRhKCJicy5jYXJvdXNlbCIpLGY9YS5leHRlbmQoe30sYy5ERUZBVUxUUyxkLmRhdGEoKSwib2JqZWN0Ij09dHlwZW9mIGImJmIpLGc9InN0cmluZyI9PXR5cGVvZiBiP2I6Zi5zbGlkZTtlfHxkLmRhdGEoImJzLmNhcm91c2VsIixlPW5ldyBjKHRoaXMsZikpLCJudW1iZXIiPT10eXBlb2YgYj9lLnRvKGIpOmc/ZVtnXSgpOmYuaW50ZXJ2YWwmJmUucGF1c2UoKS5jeWNsZSgpfSl9dmFyIGM9ZnVuY3Rpb24oYixjKXt0aGlzLiRlbGVtZW50PWEoYiksdGhpcy4kaW5kaWNhdG9ycz10aGlzLiRlbGVtZW50LmZpbmQoIi5jYXJvdXNlbC1pbmRpY2F0b3JzIiksdGhpcy5vcHRpb25zPWMsdGhpcy5wYXVzZWQ9dGhpcy5zbGlkaW5nPXRoaXMuaW50ZXJ2YWw9dGhpcy4kYWN0aXZlPXRoaXMuJGl0ZW1zPW51bGwsdGhpcy5vcHRpb25zLmtleWJvYXJkJiZ0aGlzLiRlbGVtZW50Lm9uKCJrZXlkb3duLmJzLmNhcm91c2VsIixhLnByb3h5KHRoaXMua2V5ZG93bix0aGlzKSksImhvdmVyIj09dGhpcy5vcHRpb25zLnBhdXNlJiYhKCJvbnRvdWNoc3RhcnQiaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSYmdGhpcy4kZWxlbWVudC5vbigibW91c2VlbnRlci5icy5jYXJvdXNlbCIsYS5wcm94eSh0aGlzLnBhdXNlLHRoaXMpKS5vbigibW91c2VsZWF2ZS5icy5jYXJvdXNlbCIsYS5wcm94eSh0aGlzLmN5Y2xlLHRoaXMpKX07Yy5WRVJTSU9OPSIzLjMuMSIsYy5UUkFOU0lUSU9OX0RVUkFUSU9OPTYwMCxjLkRFRkFVTFRTPXtpbnRlcnZhbDo1ZTMscGF1c2U6ImhvdmVyIix3cmFwOiEwLGtleWJvYXJkOiEwfSxjLnByb3RvdHlwZS5rZXlkb3duPWZ1bmN0aW9uKGEpe2lmKCEvaW5wdXR8dGV4dGFyZWEvaS50ZXN0KGEudGFyZ2V0LnRhZ05hbWUpKXtzd2l0Y2goYS53aGljaCl7Y2FzZSAzNzp0aGlzLnByZXYoKTticmVhaztjYXNlIDM5OnRoaXMubmV4dCgpO2JyZWFrO2RlZmF1bHQ6cmV0dXJufWEucHJldmVudERlZmF1bHQoKX19LGMucHJvdG90eXBlLmN5Y2xlPWZ1bmN0aW9uKGIpe3JldHVybiBifHwodGhpcy5wYXVzZWQ9ITEpLHRoaXMuaW50ZXJ2YWwmJmNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbCksdGhpcy5vcHRpb25zLmludGVydmFsJiYhdGhpcy5wYXVzZWQmJih0aGlzLmludGVydmFsPXNldEludGVydmFsKGEucHJveHkodGhpcy5uZXh0LHRoaXMpLHRoaXMub3B0aW9ucy5pbnRlcnZhbCkpLHRoaXN9LGMucHJvdG90eXBlLmdldEl0ZW1JbmRleD1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy4kaXRlbXM9YS5wYXJlbnQoKS5jaGlsZHJlbigiLml0ZW0iKSx0aGlzLiRpdGVtcy5pbmRleChhfHx0aGlzLiRhY3RpdmUpfSxjLnByb3RvdHlwZS5nZXRJdGVtRm9yRGlyZWN0aW9uPWZ1bmN0aW9uKGEsYil7dmFyIGM9InByZXYiPT1hPy0xOjEsZD10aGlzLmdldEl0ZW1JbmRleChiKSxlPShkK2MpJXRoaXMuJGl0ZW1zLmxlbmd0aDtyZXR1cm4gdGhpcy4kaXRlbXMuZXEoZSl9LGMucHJvdG90eXBlLnRvPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMsYz10aGlzLmdldEl0ZW1JbmRleCh0aGlzLiRhY3RpdmU9dGhpcy4kZWxlbWVudC5maW5kKCIuaXRlbS5hY3RpdmUiKSk7cmV0dXJuIGE+dGhpcy4kaXRlbXMubGVuZ3RoLTF8fDA+YT92b2lkIDA6dGhpcy5zbGlkaW5nP3RoaXMuJGVsZW1lbnQub25lKCJzbGlkLmJzLmNhcm91c2VsIixmdW5jdGlvbigpe2IudG8oYSl9KTpjPT1hP3RoaXMucGF1c2UoKS5jeWNsZSgpOnRoaXMuc2xpZGUoYT5jPyJuZXh0IjoicHJldiIsdGhpcy4kaXRlbXMuZXEoYSkpfSxjLnByb3RvdHlwZS5wYXVzZT1mdW5jdGlvbihiKXtyZXR1cm4gYnx8KHRoaXMucGF1c2VkPSEwKSx0aGlzLiRlbGVtZW50LmZpbmQoIi5uZXh0LCAucHJldiIpLmxlbmd0aCYmYS5zdXBwb3J0LnRyYW5zaXRpb24mJih0aGlzLiRlbGVtZW50LnRyaWdnZXIoYS5zdXBwb3J0LnRyYW5zaXRpb24uZW5kKSx0aGlzLmN5Y2xlKCEwKSksdGhpcy5pbnRlcnZhbD1jbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWwpLHRoaXN9LGMucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zbGlkaW5nP3ZvaWQgMDp0aGlzLnNsaWRlKCJuZXh0Iil9LGMucHJvdG90eXBlLnByZXY9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zbGlkaW5nP3ZvaWQgMDp0aGlzLnNsaWRlKCJwcmV2Iil9LGMucHJvdG90eXBlLnNsaWRlPWZ1bmN0aW9uKGIsZCl7dmFyIGU9dGhpcy4kZWxlbWVudC5maW5kKCIuaXRlbS5hY3RpdmUiKSxmPWR8fHRoaXMuZ2V0SXRlbUZvckRpcmVjdGlvbihiLGUpLGc9dGhpcy5pbnRlcnZhbCxoPSJuZXh0Ij09Yj8ibGVmdCI6InJpZ2h0IixpPSJuZXh0Ij09Yj8iZmlyc3QiOiJsYXN0IixqPXRoaXM7aWYoIWYubGVuZ3RoKXtpZighdGhpcy5vcHRpb25zLndyYXApcmV0dXJuO2Y9dGhpcy4kZWxlbWVudC5maW5kKCIuaXRlbSIpW2ldKCl9aWYoZi5oYXNDbGFzcygiYWN0aXZlIikpcmV0dXJuIHRoaXMuc2xpZGluZz0hMTt2YXIgaz1mWzBdLGw9YS5FdmVudCgic2xpZGUuYnMuY2Fyb3VzZWwiLHtyZWxhdGVkVGFyZ2V0OmssZGlyZWN0aW9uOmh9KTtpZih0aGlzLiRlbGVtZW50LnRyaWdnZXIobCksIWwuaXNEZWZhdWx0UHJldmVudGVkKCkpe2lmKHRoaXMuc2xpZGluZz0hMCxnJiZ0aGlzLnBhdXNlKCksdGhpcy4kaW5kaWNhdG9ycy5sZW5ndGgpe3RoaXMuJGluZGljYXRvcnMuZmluZCgiLmFjdGl2ZSIpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKTt2YXIgbT1hKHRoaXMuJGluZGljYXRvcnMuY2hpbGRyZW4oKVt0aGlzLmdldEl0ZW1JbmRleChmKV0pO20mJm0uYWRkQ2xhc3MoImFjdGl2ZSIpfXZhciBuPWEuRXZlbnQoInNsaWQuYnMuY2Fyb3VzZWwiLHtyZWxhdGVkVGFyZ2V0OmssZGlyZWN0aW9uOmh9KTtyZXR1cm4gYS5zdXBwb3J0LnRyYW5zaXRpb24mJnRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoInNsaWRlIik/KGYuYWRkQ2xhc3MoYiksZlswXS5vZmZzZXRXaWR0aCxlLmFkZENsYXNzKGgpLGYuYWRkQ2xhc3MoaCksZS5vbmUoImJzVHJhbnNpdGlvbkVuZCIsZnVuY3Rpb24oKXtmLnJlbW92ZUNsYXNzKFtiLGhdLmpvaW4oIiAiKSkuYWRkQ2xhc3MoImFjdGl2ZSIpLGUucmVtb3ZlQ2xhc3MoWyJhY3RpdmUiLGhdLmpvaW4oIiAiKSksai5zbGlkaW5nPSExLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtqLiRlbGVtZW50LnRyaWdnZXIobil9LDApfSkuZW11bGF0ZVRyYW5zaXRpb25FbmQoYy5UUkFOU0lUSU9OX0RVUkFUSU9OKSk6KGUucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpLGYuYWRkQ2xhc3MoImFjdGl2ZSIpLHRoaXMuc2xpZGluZz0hMSx0aGlzLiRlbGVtZW50LnRyaWdnZXIobikpLGcmJnRoaXMuY3ljbGUoKSx0aGlzfX07dmFyIGQ9YS5mbi5jYXJvdXNlbDthLmZuLmNhcm91c2VsPWIsYS5mbi5jYXJvdXNlbC5Db25zdHJ1Y3Rvcj1jLGEuZm4uY2Fyb3VzZWwubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLmNhcm91c2VsPWQsdGhpc307dmFyIGU9ZnVuY3Rpb24oYyl7dmFyIGQsZT1hKHRoaXMpLGY9YShlLmF0dHIoImRhdGEtdGFyZ2V0Iil8fChkPWUuYXR0cigiaHJlZiIpKSYmZC5yZXBsYWNlKC8uKig/PSNbXlxzXSskKS8sIiIpKTtpZihmLmhhc0NsYXNzKCJjYXJvdXNlbCIpKXt2YXIgZz1hLmV4dGVuZCh7fSxmLmRhdGEoKSxlLmRhdGEoKSksaD1lLmF0dHIoImRhdGEtc2xpZGUtdG8iKTtoJiYoZy5pbnRlcnZhbD0hMSksYi5jYWxsKGYsZyksaCYmZi5kYXRhKCJicy5jYXJvdXNlbCIpLnRvKGgpLGMucHJldmVudERlZmF1bHQoKX19O2EoZG9jdW1lbnQpLm9uKCJjbGljay5icy5jYXJvdXNlbC5kYXRhLWFwaSIsIltkYXRhLXNsaWRlXSIsZSkub24oImNsaWNrLmJzLmNhcm91c2VsLmRhdGEtYXBpIiwiW2RhdGEtc2xpZGUtdG9dIixlKSxhKHdpbmRvdykub24oImxvYWQiLGZ1bmN0aW9uKCl7YSgnW2RhdGEtcmlkZT0iY2Fyb3VzZWwiXScpLmVhY2goZnVuY3Rpb24oKXt2YXIgYz1hKHRoaXMpO2IuY2FsbChjLGMuZGF0YSgpKX0pfSl9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGIpe3ZhciBjLGQ9Yi5hdHRyKCJkYXRhLXRhcmdldCIpfHwoYz1iLmF0dHIoImhyZWYiKSkmJmMucmVwbGFjZSgvLiooPz0jW15cc10rJCkvLCIiKTtyZXR1cm4gYShkKX1mdW5jdGlvbiBjKGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYz1hKHRoaXMpLGU9Yy5kYXRhKCJicy5jb2xsYXBzZSIpLGY9YS5leHRlbmQoe30sZC5ERUZBVUxUUyxjLmRhdGEoKSwib2JqZWN0Ij09dHlwZW9mIGImJmIpOyFlJiZmLnRvZ2dsZSYmInNob3ciPT1iJiYoZi50b2dnbGU9ITEpLGV8fGMuZGF0YSgiYnMuY29sbGFwc2UiLGU9bmV3IGQodGhpcyxmKSksInN0cmluZyI9PXR5cGVvZiBiJiZlW2JdKCl9KX12YXIgZD1mdW5jdGlvbihiLGMpe3RoaXMuJGVsZW1lbnQ9YShiKSx0aGlzLm9wdGlvbnM9YS5leHRlbmQoe30sZC5ERUZBVUxUUyxjKSx0aGlzLiR0cmlnZ2VyPWEodGhpcy5vcHRpb25zLnRyaWdnZXIpLmZpbHRlcignW2hyZWY9IiMnK2IuaWQrJyJdLCBbZGF0YS10YXJnZXQ9IiMnK2IuaWQrJyJdJyksdGhpcy50cmFuc2l0aW9uaW5nPW51bGwsdGhpcy5vcHRpb25zLnBhcmVudD90aGlzLiRwYXJlbnQ9dGhpcy5nZXRQYXJlbnQoKTp0aGlzLmFkZEFyaWFBbmRDb2xsYXBzZWRDbGFzcyh0aGlzLiRlbGVtZW50LHRoaXMuJHRyaWdnZXIpLHRoaXMub3B0aW9ucy50b2dnbGUmJnRoaXMudG9nZ2xlKCl9O2QuVkVSU0lPTj0iMy4zLjEiLGQuVFJBTlNJVElPTl9EVVJBVElPTj0zNTAsZC5ERUZBVUxUUz17dG9nZ2xlOiEwLHRyaWdnZXI6J1tkYXRhLXRvZ2dsZT0iY29sbGFwc2UiXSd9LGQucHJvdG90eXBlLmRpbWVuc2lvbj1mdW5jdGlvbigpe3ZhciBhPXRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoIndpZHRoIik7cmV0dXJuIGE/IndpZHRoIjoiaGVpZ2h0In0sZC5wcm90b3R5cGUuc2hvdz1mdW5jdGlvbigpe2lmKCF0aGlzLnRyYW5zaXRpb25pbmcmJiF0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJpbiIpKXt2YXIgYixlPXRoaXMuJHBhcmVudCYmdGhpcy4kcGFyZW50LmZpbmQoIj4gLnBhbmVsIikuY2hpbGRyZW4oIi5pbiwgLmNvbGxhcHNpbmciKTtpZighKGUmJmUubGVuZ3RoJiYoYj1lLmRhdGEoImJzLmNvbGxhcHNlIiksYiYmYi50cmFuc2l0aW9uaW5nKSkpe3ZhciBmPWEuRXZlbnQoInNob3cuYnMuY29sbGFwc2UiKTtpZih0aGlzLiRlbGVtZW50LnRyaWdnZXIoZiksIWYuaXNEZWZhdWx0UHJldmVudGVkKCkpe2UmJmUubGVuZ3RoJiYoYy5jYWxsKGUsImhpZGUiKSxifHxlLmRhdGEoImJzLmNvbGxhcHNlIixudWxsKSk7dmFyIGc9dGhpcy5kaW1lbnNpb24oKTt0aGlzLiRlbGVtZW50LnJlbW92ZUNsYXNzKCJjb2xsYXBzZSIpLmFkZENsYXNzKCJjb2xsYXBzaW5nIilbZ10oMCkuYXR0cigiYXJpYS1leHBhbmRlZCIsITApLHRoaXMuJHRyaWdnZXIucmVtb3ZlQ2xhc3MoImNvbGxhcHNlZCIpLmF0dHIoImFyaWEtZXhwYW5kZWQiLCEwKSx0aGlzLnRyYW5zaXRpb25pbmc9MTt2YXIgaD1mdW5jdGlvbigpe3RoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoImNvbGxhcHNpbmciKS5hZGRDbGFzcygiY29sbGFwc2UgaW4iKVtnXSgiIiksdGhpcy50cmFuc2l0aW9uaW5nPTAsdGhpcy4kZWxlbWVudC50cmlnZ2VyKCJzaG93bi5icy5jb2xsYXBzZSIpfTtpZighYS5zdXBwb3J0LnRyYW5zaXRpb24pcmV0dXJuIGguY2FsbCh0aGlzKTt2YXIgaT1hLmNhbWVsQ2FzZShbInNjcm9sbCIsZ10uam9pbigiLSIpKTt0aGlzLiRlbGVtZW50Lm9uZSgiYnNUcmFuc2l0aW9uRW5kIixhLnByb3h5KGgsdGhpcykpLmVtdWxhdGVUcmFuc2l0aW9uRW5kKGQuVFJBTlNJVElPTl9EVVJBVElPTilbZ10odGhpcy4kZWxlbWVudFswXVtpXSl9fX19LGQucHJvdG90eXBlLmhpZGU9ZnVuY3Rpb24oKXtpZighdGhpcy50cmFuc2l0aW9uaW5nJiZ0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJpbiIpKXt2YXIgYj1hLkV2ZW50KCJoaWRlLmJzLmNvbGxhcHNlIik7aWYodGhpcy4kZWxlbWVudC50cmlnZ2VyKGIpLCFiLmlzRGVmYXVsdFByZXZlbnRlZCgpKXt2YXIgYz10aGlzLmRpbWVuc2lvbigpO3RoaXMuJGVsZW1lbnRbY10odGhpcy4kZWxlbWVudFtjXSgpKVswXS5vZmZzZXRIZWlnaHQsdGhpcy4kZWxlbWVudC5hZGRDbGFzcygiY29sbGFwc2luZyIpLnJlbW92ZUNsYXNzKCJjb2xsYXBzZSBpbiIpLmF0dHIoImFyaWEtZXhwYW5kZWQiLCExKSx0aGlzLiR0cmlnZ2VyLmFkZENsYXNzKCJjb2xsYXBzZWQiKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwhMSksdGhpcy50cmFuc2l0aW9uaW5nPTE7dmFyIGU9ZnVuY3Rpb24oKXt0aGlzLnRyYW5zaXRpb25pbmc9MCx0aGlzLiRlbGVtZW50LnJlbW92ZUNsYXNzKCJjb2xsYXBzaW5nIikuYWRkQ2xhc3MoImNvbGxhcHNlIikudHJpZ2dlcigiaGlkZGVuLmJzLmNvbGxhcHNlIil9O3JldHVybiBhLnN1cHBvcnQudHJhbnNpdGlvbj92b2lkIHRoaXMuJGVsZW1lbnRbY10oMCkub25lKCJic1RyYW5zaXRpb25FbmQiLGEucHJveHkoZSx0aGlzKSkuZW11bGF0ZVRyYW5zaXRpb25FbmQoZC5UUkFOU0lUSU9OX0RVUkFUSU9OKTplLmNhbGwodGhpcyl9fX0sZC5wcm90b3R5cGUudG9nZ2xlPWZ1bmN0aW9uKCl7dGhpc1t0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJpbiIpPyJoaWRlIjoic2hvdyJdKCl9LGQucHJvdG90eXBlLmdldFBhcmVudD1mdW5jdGlvbigpe3JldHVybiBhKHRoaXMub3B0aW9ucy5wYXJlbnQpLmZpbmQoJ1tkYXRhLXRvZ2dsZT0iY29sbGFwc2UiXVtkYXRhLXBhcmVudD0iJyt0aGlzLm9wdGlvbnMucGFyZW50KyciXScpLmVhY2goYS5wcm94eShmdW5jdGlvbihjLGQpe3ZhciBlPWEoZCk7dGhpcy5hZGRBcmlhQW5kQ29sbGFwc2VkQ2xhc3MoYihlKSxlKX0sdGhpcykpLmVuZCgpfSxkLnByb3RvdHlwZS5hZGRBcmlhQW5kQ29sbGFwc2VkQ2xhc3M9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmhhc0NsYXNzKCJpbiIpO2EuYXR0cigiYXJpYS1leHBhbmRlZCIsYyksYi50b2dnbGVDbGFzcygiY29sbGFwc2VkIiwhYykuYXR0cigiYXJpYS1leHBhbmRlZCIsYyl9O3ZhciBlPWEuZm4uY29sbGFwc2U7YS5mbi5jb2xsYXBzZT1jLGEuZm4uY29sbGFwc2UuQ29uc3RydWN0b3I9ZCxhLmZuLmNvbGxhcHNlLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gYS5mbi5jb2xsYXBzZT1lLHRoaXN9LGEoZG9jdW1lbnQpLm9uKCJjbGljay5icy5jb2xsYXBzZS5kYXRhLWFwaSIsJ1tkYXRhLXRvZ2dsZT0iY29sbGFwc2UiXScsZnVuY3Rpb24oZCl7dmFyIGU9YSh0aGlzKTtlLmF0dHIoImRhdGEtdGFyZ2V0Iil8fGQucHJldmVudERlZmF1bHQoKTt2YXIgZj1iKGUpLGc9Zi5kYXRhKCJicy5jb2xsYXBzZSIpLGg9Zz8idG9nZ2xlIjphLmV4dGVuZCh7fSxlLmRhdGEoKSx7dHJpZ2dlcjp0aGlzfSk7Yy5jYWxsKGYsaCl9KX0oalF1ZXJ5KSwrZnVuY3Rpb24oYSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGIoYil7YiYmMz09PWIud2hpY2h8fChhKGUpLnJlbW92ZSgpLGEoZikuZWFjaChmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1jKGQpLGY9e3JlbGF0ZWRUYXJnZXQ6dGhpc307ZS5oYXNDbGFzcygib3BlbiIpJiYoZS50cmlnZ2VyKGI9YS5FdmVudCgiaGlkZS5icy5kcm9wZG93biIsZikpLGIuaXNEZWZhdWx0UHJldmVudGVkKCl8fChkLmF0dHIoImFyaWEtZXhwYW5kZWQiLCJmYWxzZSIpLGUucmVtb3ZlQ2xhc3MoIm9wZW4iKS50cmlnZ2VyKCJoaWRkZW4uYnMuZHJvcGRvd24iLGYpKSl9KSl9ZnVuY3Rpb24gYyhiKXt2YXIgYz1iLmF0dHIoImRhdGEtdGFyZ2V0Iik7Y3x8KGM9Yi5hdHRyKCJocmVmIiksYz1jJiYvI1tBLVphLXpdLy50ZXN0KGMpJiZjLnJlcGxhY2UoLy4qKD89I1teXHNdKiQpLywiIikpO3ZhciBkPWMmJmEoYyk7cmV0dXJuIGQmJmQubGVuZ3RoP2Q6Yi5wYXJlbnQoKX1mdW5jdGlvbiBkKGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYz1hKHRoaXMpLGQ9Yy5kYXRhKCJicy5kcm9wZG93biIpO2R8fGMuZGF0YSgiYnMuZHJvcGRvd24iLGQ9bmV3IGcodGhpcykpLCJzdHJpbmciPT10eXBlb2YgYiYmZFtiXS5jYWxsKGMpfSl9dmFyIGU9Ii5kcm9wZG93bi1iYWNrZHJvcCIsZj0nW2RhdGEtdG9nZ2xlPSJkcm9wZG93biJdJyxnPWZ1bmN0aW9uKGIpe2EoYikub24oImNsaWNrLmJzLmRyb3Bkb3duIix0aGlzLnRvZ2dsZSl9O2cuVkVSU0lPTj0iMy4zLjEiLGcucHJvdG90eXBlLnRvZ2dsZT1mdW5jdGlvbihkKXt2YXIgZT1hKHRoaXMpO2lmKCFlLmlzKCIuZGlzYWJsZWQsIDpkaXNhYmxlZCIpKXt2YXIgZj1jKGUpLGc9Zi5oYXNDbGFzcygib3BlbiIpO2lmKGIoKSwhZyl7Im9udG91Y2hzdGFydCJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQmJiFmLmNsb3Nlc3QoIi5uYXZiYXItbmF2IikubGVuZ3RoJiZhKCc8ZGl2IGNsYXNzPSJkcm9wZG93bi1iYWNrZHJvcCIvPicpLmluc2VydEFmdGVyKGEodGhpcykpLm9uKCJjbGljayIsYik7dmFyIGg9e3JlbGF0ZWRUYXJnZXQ6dGhpc307aWYoZi50cmlnZ2VyKGQ9YS5FdmVudCgic2hvdy5icy5kcm9wZG93biIsaCkpLGQuaXNEZWZhdWx0UHJldmVudGVkKCkpcmV0dXJuO2UudHJpZ2dlcigiZm9jdXMiKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwidHJ1ZSIpLGYudG9nZ2xlQ2xhc3MoIm9wZW4iKS50cmlnZ2VyKCJzaG93bi5icy5kcm9wZG93biIsaCl9cmV0dXJuITF9fSxnLnByb3RvdHlwZS5rZXlkb3duPWZ1bmN0aW9uKGIpe2lmKC8oMzh8NDB8Mjd8MzIpLy50ZXN0KGIud2hpY2gpJiYhL2lucHV0fHRleHRhcmVhL2kudGVzdChiLnRhcmdldC50YWdOYW1lKSl7dmFyIGQ9YSh0aGlzKTtpZihiLnByZXZlbnREZWZhdWx0KCksYi5zdG9wUHJvcGFnYXRpb24oKSwhZC5pcygiLmRpc2FibGVkLCA6ZGlzYWJsZWQiKSl7dmFyIGU9YyhkKSxnPWUuaGFzQ2xhc3MoIm9wZW4iKTtpZighZyYmMjchPWIud2hpY2h8fGcmJjI3PT1iLndoaWNoKXJldHVybiAyNz09Yi53aGljaCYmZS5maW5kKGYpLnRyaWdnZXIoImZvY3VzIiksZC50cmlnZ2VyKCJjbGljayIpO3ZhciBoPSIgbGk6bm90KC5kaXZpZGVyKTp2aXNpYmxlIGEiLGk9ZS5maW5kKCdbcm9sZT0ibWVudSJdJytoKycsIFtyb2xlPSJsaXN0Ym94Il0nK2gpO2lmKGkubGVuZ3RoKXt2YXIgaj1pLmluZGV4KGIudGFyZ2V0KTszOD09Yi53aGljaCYmaj4wJiZqLS0sNDA9PWIud2hpY2gmJmo8aS5sZW5ndGgtMSYmaisrLH5qfHwoaj0wKSxpLmVxKGopLnRyaWdnZXIoImZvY3VzIil9fX19O3ZhciBoPWEuZm4uZHJvcGRvd247YS5mbi5kcm9wZG93bj1kLGEuZm4uZHJvcGRvd24uQ29uc3RydWN0b3I9ZyxhLmZuLmRyb3Bkb3duLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gYS5mbi5kcm9wZG93bj1oLHRoaXN9LGEoZG9jdW1lbnQpLm9uKCJjbGljay5icy5kcm9wZG93bi5kYXRhLWFwaSIsYikub24oImNsaWNrLmJzLmRyb3Bkb3duLmRhdGEtYXBpIiwiLmRyb3Bkb3duIGZvcm0iLGZ1bmN0aW9uKGEpe2Euc3RvcFByb3BhZ2F0aW9uKCl9KS5vbigiY2xpY2suYnMuZHJvcGRvd24uZGF0YS1hcGkiLGYsZy5wcm90b3R5cGUudG9nZ2xlKS5vbigia2V5ZG93bi5icy5kcm9wZG93bi5kYXRhLWFwaSIsZixnLnByb3RvdHlwZS5rZXlkb3duKS5vbigia2V5ZG93bi5icy5kcm9wZG93bi5kYXRhLWFwaSIsJ1tyb2xlPSJtZW51Il0nLGcucHJvdG90eXBlLmtleWRvd24pLm9uKCJrZXlkb3duLmJzLmRyb3Bkb3duLmRhdGEtYXBpIiwnW3JvbGU9Imxpc3Rib3giXScsZy5wcm90b3R5cGUua2V5ZG93bil9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGIsZCl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlPWEodGhpcyksZj1lLmRhdGEoImJzLm1vZGFsIiksZz1hLmV4dGVuZCh7fSxjLkRFRkFVTFRTLGUuZGF0YSgpLCJvYmplY3QiPT10eXBlb2YgYiYmYik7Znx8ZS5kYXRhKCJicy5tb2RhbCIsZj1uZXcgYyh0aGlzLGcpKSwic3RyaW5nIj09dHlwZW9mIGI/ZltiXShkKTpnLnNob3cmJmYuc2hvdyhkKX0pfXZhciBjPWZ1bmN0aW9uKGIsYyl7dGhpcy5vcHRpb25zPWMsdGhpcy4kYm9keT1hKGRvY3VtZW50LmJvZHkpLHRoaXMuJGVsZW1lbnQ9YShiKSx0aGlzLiRiYWNrZHJvcD10aGlzLmlzU2hvd249bnVsbCx0aGlzLnNjcm9sbGJhcldpZHRoPTAsdGhpcy5vcHRpb25zLnJlbW90ZSYmdGhpcy4kZWxlbWVudC5maW5kKCIubW9kYWwtY29udGVudCIpLmxvYWQodGhpcy5vcHRpb25zLnJlbW90ZSxhLnByb3h5KGZ1bmN0aW9uKCl7dGhpcy4kZWxlbWVudC50cmlnZ2VyKCJsb2FkZWQuYnMubW9kYWwiKX0sdGhpcykpfTtjLlZFUlNJT049IjMuMy4xIixjLlRSQU5TSVRJT05fRFVSQVRJT049MzAwLGMuQkFDS0RST1BfVFJBTlNJVElPTl9EVVJBVElPTj0xNTAsYy5ERUZBVUxUUz17YmFja2Ryb3A6ITAsa2V5Ym9hcmQ6ITAsc2hvdzohMH0sYy5wcm90b3R5cGUudG9nZ2xlPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmlzU2hvd24/dGhpcy5oaWRlKCk6dGhpcy5zaG93KGEpfSxjLnByb3RvdHlwZS5zaG93PWZ1bmN0aW9uKGIpe3ZhciBkPXRoaXMsZT1hLkV2ZW50KCJzaG93LmJzLm1vZGFsIix7cmVsYXRlZFRhcmdldDpifSk7dGhpcy4kZWxlbWVudC50cmlnZ2VyKGUpLHRoaXMuaXNTaG93bnx8ZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKXx8KHRoaXMuaXNTaG93bj0hMCx0aGlzLmNoZWNrU2Nyb2xsYmFyKCksdGhpcy5zZXRTY3JvbGxiYXIoKSx0aGlzLiRib2R5LmFkZENsYXNzKCJtb2RhbC1vcGVuIiksdGhpcy5lc2NhcGUoKSx0aGlzLnJlc2l6ZSgpLHRoaXMuJGVsZW1lbnQub24oImNsaWNrLmRpc21pc3MuYnMubW9kYWwiLCdbZGF0YS1kaXNtaXNzPSJtb2RhbCJdJyxhLnByb3h5KHRoaXMuaGlkZSx0aGlzKSksdGhpcy5iYWNrZHJvcChmdW5jdGlvbigpe3ZhciBlPWEuc3VwcG9ydC50cmFuc2l0aW9uJiZkLiRlbGVtZW50Lmhhc0NsYXNzKCJmYWRlIik7ZC4kZWxlbWVudC5wYXJlbnQoKS5sZW5ndGh8fGQuJGVsZW1lbnQuYXBwZW5kVG8oZC4kYm9keSksZC4kZWxlbWVudC5zaG93KCkuc2Nyb2xsVG9wKDApLGQub3B0aW9ucy5iYWNrZHJvcCYmZC5hZGp1c3RCYWNrZHJvcCgpLGQuYWRqdXN0RGlhbG9nKCksZSYmZC4kZWxlbWVudFswXS5vZmZzZXRXaWR0aCxkLiRlbGVtZW50LmFkZENsYXNzKCJpbiIpLmF0dHIoImFyaWEtaGlkZGVuIiwhMSksZC5lbmZvcmNlRm9jdXMoKTt2YXIgZj1hLkV2ZW50KCJzaG93bi5icy5tb2RhbCIse3JlbGF0ZWRUYXJnZXQ6Yn0pO2U/ZC4kZWxlbWVudC5maW5kKCIubW9kYWwtZGlhbG9nIikub25lKCJic1RyYW5zaXRpb25FbmQiLGZ1bmN0aW9uKCl7ZC4kZWxlbWVudC50cmlnZ2VyKCJmb2N1cyIpLnRyaWdnZXIoZil9KS5lbXVsYXRlVHJhbnNpdGlvbkVuZChjLlRSQU5TSVRJT05fRFVSQVRJT04pOmQuJGVsZW1lbnQudHJpZ2dlcigiZm9jdXMiKS50cmlnZ2VyKGYpfSkpfSxjLnByb3RvdHlwZS5oaWRlPWZ1bmN0aW9uKGIpe2ImJmIucHJldmVudERlZmF1bHQoKSxiPWEuRXZlbnQoImhpZGUuYnMubW9kYWwiKSx0aGlzLiRlbGVtZW50LnRyaWdnZXIoYiksdGhpcy5pc1Nob3duJiYhYi5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmKHRoaXMuaXNTaG93bj0hMSx0aGlzLmVzY2FwZSgpLHRoaXMucmVzaXplKCksYShkb2N1bWVudCkub2ZmKCJmb2N1c2luLmJzLm1vZGFsIiksdGhpcy4kZWxlbWVudC5yZW1vdmVDbGFzcygiaW4iKS5hdHRyKCJhcmlhLWhpZGRlbiIsITApLm9mZigiY2xpY2suZGlzbWlzcy5icy5tb2RhbCIpLGEuc3VwcG9ydC50cmFuc2l0aW9uJiZ0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJmYWRlIik/dGhpcy4kZWxlbWVudC5vbmUoImJzVHJhbnNpdGlvbkVuZCIsYS5wcm94eSh0aGlzLmhpZGVNb2RhbCx0aGlzKSkuZW11bGF0ZVRyYW5zaXRpb25FbmQoYy5UUkFOU0lUSU9OX0RVUkFUSU9OKTp0aGlzLmhpZGVNb2RhbCgpKX0sYy5wcm90b3R5cGUuZW5mb3JjZUZvY3VzPWZ1bmN0aW9uKCl7YShkb2N1bWVudCkub2ZmKCJmb2N1c2luLmJzLm1vZGFsIikub24oImZvY3VzaW4uYnMubW9kYWwiLGEucHJveHkoZnVuY3Rpb24oYSl7dGhpcy4kZWxlbWVudFswXT09PWEudGFyZ2V0fHx0aGlzLiRlbGVtZW50LmhhcyhhLnRhcmdldCkubGVuZ3RofHx0aGlzLiRlbGVtZW50LnRyaWdnZXIoImZvY3VzIil9LHRoaXMpKX0sYy5wcm90b3R5cGUuZXNjYXBlPWZ1bmN0aW9uKCl7dGhpcy5pc1Nob3duJiZ0aGlzLm9wdGlvbnMua2V5Ym9hcmQ/dGhpcy4kZWxlbWVudC5vbigia2V5ZG93bi5kaXNtaXNzLmJzLm1vZGFsIixhLnByb3h5KGZ1bmN0aW9uKGEpezI3PT1hLndoaWNoJiZ0aGlzLmhpZGUoKX0sdGhpcykpOnRoaXMuaXNTaG93bnx8dGhpcy4kZWxlbWVudC5vZmYoImtleWRvd24uZGlzbWlzcy5icy5tb2RhbCIpfSxjLnByb3RvdHlwZS5yZXNpemU9ZnVuY3Rpb24oKXt0aGlzLmlzU2hvd24/YSh3aW5kb3cpLm9uKCJyZXNpemUuYnMubW9kYWwiLGEucHJveHkodGhpcy5oYW5kbGVVcGRhdGUsdGhpcykpOmEod2luZG93KS5vZmYoInJlc2l6ZS5icy5tb2RhbCIpfSxjLnByb3RvdHlwZS5oaWRlTW9kYWw9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3RoaXMuJGVsZW1lbnQuaGlkZSgpLHRoaXMuYmFja2Ryb3AoZnVuY3Rpb24oKXthLiRib2R5LnJlbW92ZUNsYXNzKCJtb2RhbC1vcGVuIiksYS5yZXNldEFkanVzdG1lbnRzKCksYS5yZXNldFNjcm9sbGJhcigpLGEuJGVsZW1lbnQudHJpZ2dlcigiaGlkZGVuLmJzLm1vZGFsIil9KX0sYy5wcm90b3R5cGUucmVtb3ZlQmFja2Ryb3A9ZnVuY3Rpb24oKXt0aGlzLiRiYWNrZHJvcCYmdGhpcy4kYmFja2Ryb3AucmVtb3ZlKCksdGhpcy4kYmFja2Ryb3A9bnVsbH0sYy5wcm90b3R5cGUuYmFja2Ryb3A9ZnVuY3Rpb24oYil7dmFyIGQ9dGhpcyxlPXRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoImZhZGUiKT8iZmFkZSI6IiI7aWYodGhpcy5pc1Nob3duJiZ0aGlzLm9wdGlvbnMuYmFja2Ryb3Ape3ZhciBmPWEuc3VwcG9ydC50cmFuc2l0aW9uJiZlO2lmKHRoaXMuJGJhY2tkcm9wPWEoJzxkaXYgY2xhc3M9Im1vZGFsLWJhY2tkcm9wICcrZSsnIiAvPicpLnByZXBlbmRUbyh0aGlzLiRlbGVtZW50KS5vbigiY2xpY2suZGlzbWlzcy5icy5tb2RhbCIsYS5wcm94eShmdW5jdGlvbihhKXthLnRhcmdldD09PWEuY3VycmVudFRhcmdldCYmKCJzdGF0aWMiPT10aGlzLm9wdGlvbnMuYmFja2Ryb3A/dGhpcy4kZWxlbWVudFswXS5mb2N1cy5jYWxsKHRoaXMuJGVsZW1lbnRbMF0pOnRoaXMuaGlkZS5jYWxsKHRoaXMpKX0sdGhpcykpLGYmJnRoaXMuJGJhY2tkcm9wWzBdLm9mZnNldFdpZHRoLHRoaXMuJGJhY2tkcm9wLmFkZENsYXNzKCJpbiIpLCFiKXJldHVybjtmP3RoaXMuJGJhY2tkcm9wLm9uZSgiYnNUcmFuc2l0aW9uRW5kIixiKS5lbXVsYXRlVHJhbnNpdGlvbkVuZChjLkJBQ0tEUk9QX1RSQU5TSVRJT05fRFVSQVRJT04pOmIoKX1lbHNlIGlmKCF0aGlzLmlzU2hvd24mJnRoaXMuJGJhY2tkcm9wKXt0aGlzLiRiYWNrZHJvcC5yZW1vdmVDbGFzcygiaW4iKTt2YXIgZz1mdW5jdGlvbigpe2QucmVtb3ZlQmFja2Ryb3AoKSxiJiZiKCl9O2Euc3VwcG9ydC50cmFuc2l0aW9uJiZ0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJmYWRlIik/dGhpcy4kYmFja2Ryb3Aub25lKCJic1RyYW5zaXRpb25FbmQiLGcpLmVtdWxhdGVUcmFuc2l0aW9uRW5kKGMuQkFDS0RST1BfVFJBTlNJVElPTl9EVVJBVElPTik6ZygpfWVsc2UgYiYmYigpfSxjLnByb3RvdHlwZS5oYW5kbGVVcGRhdGU9ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMuYmFja2Ryb3AmJnRoaXMuYWRqdXN0QmFja2Ryb3AoKSx0aGlzLmFkanVzdERpYWxvZygpfSxjLnByb3RvdHlwZS5hZGp1c3RCYWNrZHJvcD1mdW5jdGlvbigpe3RoaXMuJGJhY2tkcm9wLmNzcygiaGVpZ2h0IiwwKS5jc3MoImhlaWdodCIsdGhpcy4kZWxlbWVudFswXS5zY3JvbGxIZWlnaHQpfSxjLnByb3RvdHlwZS5hZGp1c3REaWFsb2c9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLiRlbGVtZW50WzBdLnNjcm9sbEhlaWdodD5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0O3RoaXMuJGVsZW1lbnQuY3NzKHtwYWRkaW5nTGVmdDohdGhpcy5ib2R5SXNPdmVyZmxvd2luZyYmYT90aGlzLnNjcm9sbGJhcldpZHRoOiIiLHBhZGRpbmdSaWdodDp0aGlzLmJvZHlJc092ZXJmbG93aW5nJiYhYT90aGlzLnNjcm9sbGJhcldpZHRoOiIifSl9LGMucHJvdG90eXBlLnJlc2V0QWRqdXN0bWVudHM9ZnVuY3Rpb24oKXt0aGlzLiRlbGVtZW50LmNzcyh7cGFkZGluZ0xlZnQ6IiIscGFkZGluZ1JpZ2h0OiIifSl9LGMucHJvdG90eXBlLmNoZWNrU2Nyb2xsYmFyPWZ1bmN0aW9uKCl7dGhpcy5ib2R5SXNPdmVyZmxvd2luZz1kb2N1bWVudC5ib2R5LnNjcm9sbEhlaWdodD5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0LHRoaXMuc2Nyb2xsYmFyV2lkdGg9dGhpcy5tZWFzdXJlU2Nyb2xsYmFyKCl9LGMucHJvdG90eXBlLnNldFNjcm9sbGJhcj1mdW5jdGlvbigpe3ZhciBhPXBhcnNlSW50KHRoaXMuJGJvZHkuY3NzKCJwYWRkaW5nLXJpZ2h0Iil8fDAsMTApO3RoaXMuYm9keUlzT3ZlcmZsb3dpbmcmJnRoaXMuJGJvZHkuY3NzKCJwYWRkaW5nLXJpZ2h0IixhK3RoaXMuc2Nyb2xsYmFyV2lkdGgpfSxjLnByb3RvdHlwZS5yZXNldFNjcm9sbGJhcj1mdW5jdGlvbigpe3RoaXMuJGJvZHkuY3NzKCJwYWRkaW5nLXJpZ2h0IiwiIil9LGMucHJvdG90eXBlLm1lYXN1cmVTY3JvbGxiYXI9ZnVuY3Rpb24oKXt2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTthLmNsYXNzTmFtZT0ibW9kYWwtc2Nyb2xsYmFyLW1lYXN1cmUiLHRoaXMuJGJvZHkuYXBwZW5kKGEpO3ZhciBiPWEub2Zmc2V0V2lkdGgtYS5jbGllbnRXaWR0aDtyZXR1cm4gdGhpcy4kYm9keVswXS5yZW1vdmVDaGlsZChhKSxifTt2YXIgZD1hLmZuLm1vZGFsO2EuZm4ubW9kYWw9YixhLmZuLm1vZGFsLkNvbnN0cnVjdG9yPWMsYS5mbi5tb2RhbC5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGEuZm4ubW9kYWw9ZCx0aGlzfSxhKGRvY3VtZW50KS5vbigiY2xpY2suYnMubW9kYWwuZGF0YS1hcGkiLCdbZGF0YS10b2dnbGU9Im1vZGFsIl0nLGZ1bmN0aW9uKGMpe3ZhciBkPWEodGhpcyksZT1kLmF0dHIoImhyZWYiKSxmPWEoZC5hdHRyKCJkYXRhLXRhcmdldCIpfHxlJiZlLnJlcGxhY2UoLy4qKD89I1teXHNdKyQpLywiIikpLGc9Zi5kYXRhKCJicy5tb2RhbCIpPyJ0b2dnbGUiOmEuZXh0ZW5kKHtyZW1vdGU6IS8jLy50ZXN0KGUpJiZlfSxmLmRhdGEoKSxkLmRhdGEoKSk7ZC5pcygiYSIpJiZjLnByZXZlbnREZWZhdWx0KCksZi5vbmUoInNob3cuYnMubW9kYWwiLGZ1bmN0aW9uKGEpe2EuaXNEZWZhdWx0UHJldmVudGVkKCl8fGYub25lKCJoaWRkZW4uYnMubW9kYWwiLGZ1bmN0aW9uKCl7ZC5pcygiOnZpc2libGUiKSYmZC50cmlnZ2VyKCJmb2N1cyIpfSl9KSxiLmNhbGwoZixnLHRoaXMpfSl9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZD1hKHRoaXMpLGU9ZC5kYXRhKCJicy50b29sdGlwIiksZj0ib2JqZWN0Ij09dHlwZW9mIGImJmIsZz1mJiZmLnNlbGVjdG9yOyhlfHwiZGVzdHJveSIhPWIpJiYoZz8oZXx8ZC5kYXRhKCJicy50b29sdGlwIixlPXt9KSxlW2ddfHwoZVtnXT1uZXcgYyh0aGlzLGYpKSk6ZXx8ZC5kYXRhKCJicy50b29sdGlwIixlPW5ldyBjKHRoaXMsZikpLCJzdHJpbmciPT10eXBlb2YgYiYmZVtiXSgpKX0pfXZhciBjPWZ1bmN0aW9uKGEsYil7dGhpcy50eXBlPXRoaXMub3B0aW9ucz10aGlzLmVuYWJsZWQ9dGhpcy50aW1lb3V0PXRoaXMuaG92ZXJTdGF0ZT10aGlzLiRlbGVtZW50PW51bGwsdGhpcy5pbml0KCJ0b29sdGlwIixhLGIpfTtjLlZFUlNJT049IjMuMy4xIixjLlRSQU5TSVRJT05fRFVSQVRJT049MTUwLGMuREVGQVVMVFM9e2FuaW1hdGlvbjohMCxwbGFjZW1lbnQ6InRvcCIsc2VsZWN0b3I6ITEsdGVtcGxhdGU6JzxkaXYgY2xhc3M9InRvb2x0aXAiIHJvbGU9InRvb2x0aXAiPjxkaXYgY2xhc3M9InRvb2x0aXAtYXJyb3ciPjwvZGl2PjxkaXYgY2xhc3M9InRvb2x0aXAtaW5uZXIiPjwvZGl2PjwvZGl2PicsdHJpZ2dlcjoiaG92ZXIgZm9jdXMiLHRpdGxlOiIiLGRlbGF5OjAsaHRtbDohMSxjb250YWluZXI6ITEsdmlld3BvcnQ6e3NlbGVjdG9yOiJib2R5IixwYWRkaW5nOjB9fSxjLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGIsYyxkKXt0aGlzLmVuYWJsZWQ9ITAsdGhpcy50eXBlPWIsdGhpcy4kZWxlbWVudD1hKGMpLHRoaXMub3B0aW9ucz10aGlzLmdldE9wdGlvbnMoZCksdGhpcy4kdmlld3BvcnQ9dGhpcy5vcHRpb25zLnZpZXdwb3J0JiZhKHRoaXMub3B0aW9ucy52aWV3cG9ydC5zZWxlY3Rvcnx8dGhpcy5vcHRpb25zLnZpZXdwb3J0KTtmb3IodmFyIGU9dGhpcy5vcHRpb25zLnRyaWdnZXIuc3BsaXQoIiAiKSxmPWUubGVuZ3RoO2YtLTspe3ZhciBnPWVbZl07aWYoImNsaWNrIj09Zyl0aGlzLiRlbGVtZW50Lm9uKCJjbGljay4iK3RoaXMudHlwZSx0aGlzLm9wdGlvbnMuc2VsZWN0b3IsYS5wcm94eSh0aGlzLnRvZ2dsZSx0aGlzKSk7ZWxzZSBpZigibWFudWFsIiE9Zyl7dmFyIGg9ImhvdmVyIj09Zz8ibW91c2VlbnRlciI6ImZvY3VzaW4iLGk9ImhvdmVyIj09Zz8ibW91c2VsZWF2ZSI6ImZvY3Vzb3V0Ijt0aGlzLiRlbGVtZW50Lm9uKGgrIi4iK3RoaXMudHlwZSx0aGlzLm9wdGlvbnMuc2VsZWN0b3IsYS5wcm94eSh0aGlzLmVudGVyLHRoaXMpKSx0aGlzLiRlbGVtZW50Lm9uKGkrIi4iK3RoaXMudHlwZSx0aGlzLm9wdGlvbnMuc2VsZWN0b3IsYS5wcm94eSh0aGlzLmxlYXZlLHRoaXMpKX19dGhpcy5vcHRpb25zLnNlbGVjdG9yP3RoaXMuX29wdGlvbnM9YS5leHRlbmQoe30sdGhpcy5vcHRpb25zLHt0cmlnZ2VyOiJtYW51YWwiLHNlbGVjdG9yOiIifSk6dGhpcy5maXhUaXRsZSgpfSxjLnByb3RvdHlwZS5nZXREZWZhdWx0cz1mdW5jdGlvbigpe3JldHVybiBjLkRFRkFVTFRTfSxjLnByb3RvdHlwZS5nZXRPcHRpb25zPWZ1bmN0aW9uKGIpe3JldHVybiBiPWEuZXh0ZW5kKHt9LHRoaXMuZ2V0RGVmYXVsdHMoKSx0aGlzLiRlbGVtZW50LmRhdGEoKSxiKSxiLmRlbGF5JiYibnVtYmVyIj09dHlwZW9mIGIuZGVsYXkmJihiLmRlbGF5PXtzaG93OmIuZGVsYXksaGlkZTpiLmRlbGF5fSksYn0sYy5wcm90b3R5cGUuZ2V0RGVsZWdhdGVPcHRpb25zPWZ1bmN0aW9uKCl7dmFyIGI9e30sYz10aGlzLmdldERlZmF1bHRzKCk7cmV0dXJuIHRoaXMuX29wdGlvbnMmJmEuZWFjaCh0aGlzLl9vcHRpb25zLGZ1bmN0aW9uKGEsZCl7Y1thXSE9ZCYmKGJbYV09ZCl9KSxifSxjLnByb3RvdHlwZS5lbnRlcj1mdW5jdGlvbihiKXt2YXIgYz1iIGluc3RhbmNlb2YgdGhpcy5jb25zdHJ1Y3Rvcj9iOmEoYi5jdXJyZW50VGFyZ2V0KS5kYXRhKCJicy4iK3RoaXMudHlwZSk7cmV0dXJuIGMmJmMuJHRpcCYmYy4kdGlwLmlzKCI6dmlzaWJsZSIpP3ZvaWQoYy5ob3ZlclN0YXRlPSJpbiIpOihjfHwoYz1uZXcgdGhpcy5jb25zdHJ1Y3RvcihiLmN1cnJlbnRUYXJnZXQsdGhpcy5nZXREZWxlZ2F0ZU9wdGlvbnMoKSksYShiLmN1cnJlbnRUYXJnZXQpLmRhdGEoImJzLiIrdGhpcy50eXBlLGMpKSxjbGVhclRpbWVvdXQoYy50aW1lb3V0KSxjLmhvdmVyU3RhdGU9ImluIixjLm9wdGlvbnMuZGVsYXkmJmMub3B0aW9ucy5kZWxheS5zaG93P3ZvaWQoYy50aW1lb3V0PXNldFRpbWVvdXQoZnVuY3Rpb24oKXsiaW4iPT1jLmhvdmVyU3RhdGUmJmMuc2hvdygpfSxjLm9wdGlvbnMuZGVsYXkuc2hvdykpOmMuc2hvdygpKX0sYy5wcm90b3R5cGUubGVhdmU9ZnVuY3Rpb24oYil7dmFyIGM9YiBpbnN0YW5jZW9mIHRoaXMuY29uc3RydWN0b3I/YjphKGIuY3VycmVudFRhcmdldCkuZGF0YSgiYnMuIit0aGlzLnR5cGUpO3JldHVybiBjfHwoYz1uZXcgdGhpcy5jb25zdHJ1Y3RvcihiLmN1cnJlbnRUYXJnZXQsdGhpcy5nZXREZWxlZ2F0ZU9wdGlvbnMoKSksYShiLmN1cnJlbnRUYXJnZXQpLmRhdGEoImJzLiIrdGhpcy50eXBlLGMpKSxjbGVhclRpbWVvdXQoYy50aW1lb3V0KSxjLmhvdmVyU3RhdGU9Im91dCIsYy5vcHRpb25zLmRlbGF5JiZjLm9wdGlvbnMuZGVsYXkuaGlkZT92b2lkKGMudGltZW91dD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Im91dCI9PWMuaG92ZXJTdGF0ZSYmYy5oaWRlKCl9LGMub3B0aW9ucy5kZWxheS5oaWRlKSk6Yy5oaWRlKCl9LGMucHJvdG90eXBlLnNob3c9ZnVuY3Rpb24oKXt2YXIgYj1hLkV2ZW50KCJzaG93LmJzLiIrdGhpcy50eXBlKTtpZih0aGlzLmhhc0NvbnRlbnQoKSYmdGhpcy5lbmFibGVkKXt0aGlzLiRlbGVtZW50LnRyaWdnZXIoYik7dmFyIGQ9YS5jb250YWlucyh0aGlzLiRlbGVtZW50WzBdLm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LHRoaXMuJGVsZW1lbnRbMF0pO2lmKGIuaXNEZWZhdWx0UHJldmVudGVkKCl8fCFkKXJldHVybjt2YXIgZT10aGlzLGY9dGhpcy50aXAoKSxnPXRoaXMuZ2V0VUlEKHRoaXMudHlwZSk7dGhpcy5zZXRDb250ZW50KCksZi5hdHRyKCJpZCIsZyksdGhpcy4kZWxlbWVudC5hdHRyKCJhcmlhLWRlc2NyaWJlZGJ5IixnKSx0aGlzLm9wdGlvbnMuYW5pbWF0aW9uJiZmLmFkZENsYXNzKCJmYWRlIik7dmFyIGg9ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMub3B0aW9ucy5wbGFjZW1lbnQ/dGhpcy5vcHRpb25zLnBsYWNlbWVudC5jYWxsKHRoaXMsZlswXSx0aGlzLiRlbGVtZW50WzBdKTp0aGlzLm9wdGlvbnMucGxhY2VtZW50LGk9L1xzP2F1dG8/XHM/L2ksaj1pLnRlc3QoaCk7aiYmKGg9aC5yZXBsYWNlKGksIiIpfHwidG9wIiksZi5kZXRhY2goKS5jc3Moe3RvcDowLGxlZnQ6MCxkaXNwbGF5OiJibG9jayJ9KS5hZGRDbGFzcyhoKS5kYXRhKCJicy4iK3RoaXMudHlwZSx0aGlzKSx0aGlzLm9wdGlvbnMuY29udGFpbmVyP2YuYXBwZW5kVG8odGhpcy5vcHRpb25zLmNvbnRhaW5lcik6Zi5pbnNlcnRBZnRlcih0aGlzLiRlbGVtZW50KTt2YXIgaz10aGlzLmdldFBvc2l0aW9uKCksbD1mWzBdLm9mZnNldFdpZHRoLG09ZlswXS5vZmZzZXRIZWlnaHQ7aWYoail7dmFyIG49aCxvPXRoaXMub3B0aW9ucy5jb250YWluZXI/YSh0aGlzLm9wdGlvbnMuY29udGFpbmVyKTp0aGlzLiRlbGVtZW50LnBhcmVudCgpLHA9dGhpcy5nZXRQb3NpdGlvbihvKTtoPSJib3R0b20iPT1oJiZrLmJvdHRvbSttPnAuYm90dG9tPyJ0b3AiOiJ0b3AiPT1oJiZrLnRvcC1tPHAudG9wPyJib3R0b20iOiJyaWdodCI9PWgmJmsucmlnaHQrbD5wLndpZHRoPyJsZWZ0IjoibGVmdCI9PWgmJmsubGVmdC1sPHAubGVmdD8icmlnaHQiOmgsZi5yZW1vdmVDbGFzcyhuKS5hZGRDbGFzcyhoKX12YXIgcT10aGlzLmdldENhbGN1bGF0ZWRPZmZzZXQoaCxrLGwsbSk7dGhpcy5hcHBseVBsYWNlbWVudChxLGgpO3ZhciByPWZ1bmN0aW9uKCl7dmFyIGE9ZS5ob3ZlclN0YXRlO2UuJGVsZW1lbnQudHJpZ2dlcigic2hvd24uYnMuIitlLnR5cGUpLGUuaG92ZXJTdGF0ZT1udWxsLCJvdXQiPT1hJiZlLmxlYXZlKGUpfTthLnN1cHBvcnQudHJhbnNpdGlvbiYmdGhpcy4kdGlwLmhhc0NsYXNzKCJmYWRlIik/Zi5vbmUoImJzVHJhbnNpdGlvbkVuZCIscikuZW11bGF0ZVRyYW5zaXRpb25FbmQoYy5UUkFOU0lUSU9OX0RVUkFUSU9OKTpyKCl9fSxjLnByb3RvdHlwZS5hcHBseVBsYWNlbWVudD1mdW5jdGlvbihiLGMpe3ZhciBkPXRoaXMudGlwKCksZT1kWzBdLm9mZnNldFdpZHRoLGY9ZFswXS5vZmZzZXRIZWlnaHQsZz1wYXJzZUludChkLmNzcygibWFyZ2luLXRvcCIpLDEwKSxoPXBhcnNlSW50KGQuY3NzKCJtYXJnaW4tbGVmdCIpLDEwKTtpc05hTihnKSYmKGc9MCksaXNOYU4oaCkmJihoPTApLGIudG9wPWIudG9wK2csYi5sZWZ0PWIubGVmdCtoLGEub2Zmc2V0LnNldE9mZnNldChkWzBdLGEuZXh0ZW5kKHt1c2luZzpmdW5jdGlvbihhKXtkLmNzcyh7dG9wOk1hdGgucm91bmQoYS50b3ApLGxlZnQ6TWF0aC5yb3VuZChhLmxlZnQpfSl9fSxiKSwwKSxkLmFkZENsYXNzKCJpbiIpO3ZhciBpPWRbMF0ub2Zmc2V0V2lkdGgsaj1kWzBdLm9mZnNldEhlaWdodDsidG9wIj09YyYmaiE9ZiYmKGIudG9wPWIudG9wK2Ytaik7dmFyIGs9dGhpcy5nZXRWaWV3cG9ydEFkanVzdGVkRGVsdGEoYyxiLGksaik7ay5sZWZ0P2IubGVmdCs9ay5sZWZ0OmIudG9wKz1rLnRvcDt2YXIgbD0vdG9wfGJvdHRvbS8udGVzdChjKSxtPWw/MiprLmxlZnQtZStpOjIqay50b3AtZitqLG49bD8ib2Zmc2V0V2lkdGgiOiJvZmZzZXRIZWlnaHQiO2Qub2Zmc2V0KGIpLHRoaXMucmVwbGFjZUFycm93KG0sZFswXVtuXSxsKX0sYy5wcm90b3R5cGUucmVwbGFjZUFycm93PWZ1bmN0aW9uKGEsYixjKXt0aGlzLmFycm93KCkuY3NzKGM/ImxlZnQiOiJ0b3AiLDUwKigxLWEvYikrIiUiKS5jc3MoYz8idG9wIjoibGVmdCIsIiIpfSxjLnByb3RvdHlwZS5zZXRDb250ZW50PWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy50aXAoKSxiPXRoaXMuZ2V0VGl0bGUoKTthLmZpbmQoIi50b29sdGlwLWlubmVyIilbdGhpcy5vcHRpb25zLmh0bWw/Imh0bWwiOiJ0ZXh0Il0oYiksYS5yZW1vdmVDbGFzcygiZmFkZSBpbiB0b3AgYm90dG9tIGxlZnQgcmlnaHQiKX0sYy5wcm90b3R5cGUuaGlkZT1mdW5jdGlvbihiKXtmdW5jdGlvbiBkKCl7ImluIiE9ZS5ob3ZlclN0YXRlJiZmLmRldGFjaCgpLGUuJGVsZW1lbnQucmVtb3ZlQXR0cigiYXJpYS1kZXNjcmliZWRieSIpLnRyaWdnZXIoImhpZGRlbi5icy4iK2UudHlwZSksYiYmYigpfXZhciBlPXRoaXMsZj10aGlzLnRpcCgpLGc9YS5FdmVudCgiaGlkZS5icy4iK3RoaXMudHlwZSk7cmV0dXJuIHRoaXMuJGVsZW1lbnQudHJpZ2dlcihnKSxnLmlzRGVmYXVsdFByZXZlbnRlZCgpP3ZvaWQgMDooZi5yZW1vdmVDbGFzcygiaW4iKSxhLnN1cHBvcnQudHJhbnNpdGlvbiYmdGhpcy4kdGlwLmhhc0NsYXNzKCJmYWRlIik/Zi5vbmUoImJzVHJhbnNpdGlvbkVuZCIsZCkuZW11bGF0ZVRyYW5zaXRpb25FbmQoYy5UUkFOU0lUSU9OX0RVUkFUSU9OKTpkKCksdGhpcy5ob3ZlclN0YXRlPW51bGwsdGhpcyl9LGMucHJvdG90eXBlLmZpeFRpdGxlPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy4kZWxlbWVudDsoYS5hdHRyKCJ0aXRsZSIpfHwic3RyaW5nIiE9dHlwZW9mIGEuYXR0cigiZGF0YS1vcmlnaW5hbC10aXRsZSIpKSYmYS5hdHRyKCJkYXRhLW9yaWdpbmFsLXRpdGxlIixhLmF0dHIoInRpdGxlIil8fCIiKS5hdHRyKCJ0aXRsZSIsIiIpfSxjLnByb3RvdHlwZS5oYXNDb250ZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0VGl0bGUoKX0sYy5wcm90b3R5cGUuZ2V0UG9zaXRpb249ZnVuY3Rpb24oYil7Yj1ifHx0aGlzLiRlbGVtZW50O3ZhciBjPWJbMF0sZD0iQk9EWSI9PWMudGFnTmFtZSxlPWMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7bnVsbD09ZS53aWR0aCYmKGU9YS5leHRlbmQoe30sZSx7d2lkdGg6ZS5yaWdodC1lLmxlZnQsaGVpZ2h0OmUuYm90dG9tLWUudG9wfSkpO3ZhciBmPWQ/e3RvcDowLGxlZnQ6MH06Yi5vZmZzZXQoKSxnPXtzY3JvbGw6ZD9kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wfHxkb2N1bWVudC5ib2R5LnNjcm9sbFRvcDpiLnNjcm9sbFRvcCgpfSxoPWQ/e3dpZHRoOmEod2luZG93KS53aWR0aCgpLGhlaWdodDphKHdpbmRvdykuaGVpZ2h0KCl9Om51bGw7cmV0dXJuIGEuZXh0ZW5kKHt9LGUsZyxoLGYpfSxjLnByb3RvdHlwZS5nZXRDYWxjdWxhdGVkT2Zmc2V0PWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiJib3R0b20iPT1hP3t0b3A6Yi50b3ArYi5oZWlnaHQsbGVmdDpiLmxlZnQrYi53aWR0aC8yLWMvMn06InRvcCI9PWE/e3RvcDpiLnRvcC1kLGxlZnQ6Yi5sZWZ0K2Iud2lkdGgvMi1jLzJ9OiJsZWZ0Ij09YT97dG9wOmIudG9wK2IuaGVpZ2h0LzItZC8yLGxlZnQ6Yi5sZWZ0LWN9Ont0b3A6Yi50b3ArYi5oZWlnaHQvMi1kLzIsbGVmdDpiLmxlZnQrYi53aWR0aH19LGMucHJvdG90eXBlLmdldFZpZXdwb3J0QWRqdXN0ZWREZWx0YT1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT17dG9wOjAsbGVmdDowfTtpZighdGhpcy4kdmlld3BvcnQpcmV0dXJuIGU7dmFyIGY9dGhpcy5vcHRpb25zLnZpZXdwb3J0JiZ0aGlzLm9wdGlvbnMudmlld3BvcnQucGFkZGluZ3x8MCxnPXRoaXMuZ2V0UG9zaXRpb24odGhpcy4kdmlld3BvcnQpO2lmKC9yaWdodHxsZWZ0Ly50ZXN0KGEpKXt2YXIgaD1iLnRvcC1mLWcuc2Nyb2xsLGk9Yi50b3ArZi1nLnNjcm9sbCtkO2g8Zy50b3A/ZS50b3A9Zy50b3AtaDppPmcudG9wK2cuaGVpZ2h0JiYoZS50b3A9Zy50b3ArZy5oZWlnaHQtaSl9ZWxzZXt2YXIgaj1iLmxlZnQtZixrPWIubGVmdCtmK2M7ajxnLmxlZnQ/ZS5sZWZ0PWcubGVmdC1qOms+Zy53aWR0aCYmKGUubGVmdD1nLmxlZnQrZy53aWR0aC1rKX1yZXR1cm4gZX0sYy5wcm90b3R5cGUuZ2V0VGl0bGU9ZnVuY3Rpb24oKXt2YXIgYSxiPXRoaXMuJGVsZW1lbnQsYz10aGlzLm9wdGlvbnM7cmV0dXJuIGE9Yi5hdHRyKCJkYXRhLW9yaWdpbmFsLXRpdGxlIil8fCgiZnVuY3Rpb24iPT10eXBlb2YgYy50aXRsZT9jLnRpdGxlLmNhbGwoYlswXSk6Yy50aXRsZSl9LGMucHJvdG90eXBlLmdldFVJRD1mdW5jdGlvbihhKXtkbyBhKz1+figxZTYqTWF0aC5yYW5kb20oKSk7d2hpbGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYSkpO3JldHVybiBhfSxjLnByb3RvdHlwZS50aXA9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kdGlwPXRoaXMuJHRpcHx8YSh0aGlzLm9wdGlvbnMudGVtcGxhdGUpfSxjLnByb3RvdHlwZS5hcnJvdz1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRhcnJvdz10aGlzLiRhcnJvd3x8dGhpcy50aXAoKS5maW5kKCIudG9vbHRpcC1hcnJvdyIpfSxjLnByb3RvdHlwZS5lbmFibGU9ZnVuY3Rpb24oKXt0aGlzLmVuYWJsZWQ9ITB9LGMucHJvdG90eXBlLmRpc2FibGU9ZnVuY3Rpb24oKXt0aGlzLmVuYWJsZWQ9ITF9LGMucHJvdG90eXBlLnRvZ2dsZUVuYWJsZWQ9ZnVuY3Rpb24oKXt0aGlzLmVuYWJsZWQ9IXRoaXMuZW5hYmxlZH0sYy5wcm90b3R5cGUudG9nZ2xlPWZ1bmN0aW9uKGIpe3ZhciBjPXRoaXM7YiYmKGM9YShiLmN1cnJlbnRUYXJnZXQpLmRhdGEoImJzLiIrdGhpcy50eXBlKSxjfHwoYz1uZXcgdGhpcy5jb25zdHJ1Y3RvcihiLmN1cnJlbnRUYXJnZXQsdGhpcy5nZXREZWxlZ2F0ZU9wdGlvbnMoKSksYShiLmN1cnJlbnRUYXJnZXQpLmRhdGEoImJzLiIrdGhpcy50eXBlLGMpKSksYy50aXAoKS5oYXNDbGFzcygiaW4iKT9jLmxlYXZlKGMpOmMuZW50ZXIoYyl9LGMucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO2NsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQpLHRoaXMuaGlkZShmdW5jdGlvbigpe2EuJGVsZW1lbnQub2ZmKCIuIithLnR5cGUpLnJlbW92ZURhdGEoImJzLiIrYS50eXBlKX0pfTt2YXIgZD1hLmZuLnRvb2x0aXA7YS5mbi50b29sdGlwPWIsYS5mbi50b29sdGlwLkNvbnN0cnVjdG9yPWMsYS5mbi50b29sdGlwLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gYS5mbi50b29sdGlwPWQsdGhpc319KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZD1hKHRoaXMpLGU9ZC5kYXRhKCJicy5wb3BvdmVyIiksZj0ib2JqZWN0Ij09dHlwZW9mIGImJmIsZz1mJiZmLnNlbGVjdG9yOyhlfHwiZGVzdHJveSIhPWIpJiYoZz8oZXx8ZC5kYXRhKCJicy5wb3BvdmVyIixlPXt9KSxlW2ddfHwoZVtnXT1uZXcgYyh0aGlzLGYpKSk6ZXx8ZC5kYXRhKCJicy5wb3BvdmVyIixlPW5ldyBjKHRoaXMsZikpLCJzdHJpbmciPT10eXBlb2YgYiYmZVtiXSgpKX0pfXZhciBjPWZ1bmN0aW9uKGEsYil7dGhpcy5pbml0KCJwb3BvdmVyIixhLGIpfTtpZighYS5mbi50b29sdGlwKXRocm93IG5ldyBFcnJvcigiUG9wb3ZlciByZXF1aXJlcyB0b29sdGlwLmpzIik7Yy5WRVJTSU9OPSIzLjMuMSIsYy5ERUZBVUxUUz1hLmV4dGVuZCh7fSxhLmZuLnRvb2x0aXAuQ29uc3RydWN0b3IuREVGQVVMVFMse3BsYWNlbWVudDoicmlnaHQiLHRyaWdnZXI6ImNsaWNrIixjb250ZW50OiIiLHRlbXBsYXRlOic8ZGl2IGNsYXNzPSJwb3BvdmVyIiByb2xlPSJ0b29sdGlwIj48ZGl2IGNsYXNzPSJhcnJvdyI+PC9kaXY+PGgzIGNsYXNzPSJwb3BvdmVyLXRpdGxlIj48L2gzPjxkaXYgY2xhc3M9InBvcG92ZXItY29udGVudCI+PC9kaXY+PC9kaXY+J30pLGMucHJvdG90eXBlPWEuZXh0ZW5kKHt9LGEuZm4udG9vbHRpcC5Db25zdHJ1Y3Rvci5wcm90b3R5cGUpLGMucHJvdG90eXBlLmNvbnN0cnVjdG9yPWMsYy5wcm90b3R5cGUuZ2V0RGVmYXVsdHM9ZnVuY3Rpb24oKXtyZXR1cm4gYy5ERUZBVUxUU30sYy5wcm90b3R5cGUuc2V0Q29udGVudD1mdW5jdGlvbigpe3ZhciBhPXRoaXMudGlwKCksYj10aGlzLmdldFRpdGxlKCksYz10aGlzLmdldENvbnRlbnQoKTthLmZpbmQoIi5wb3BvdmVyLXRpdGxlIilbdGhpcy5vcHRpb25zLmh0bWw/Imh0bWwiOiJ0ZXh0Il0oYiksYS5maW5kKCIucG9wb3Zlci1jb250ZW50IikuY2hpbGRyZW4oKS5kZXRhY2goKS5lbmQoKVt0aGlzLm9wdGlvbnMuaHRtbD8ic3RyaW5nIj09dHlwZW9mIGM/Imh0bWwiOiJhcHBlbmQiOiJ0ZXh0Il0oYyksYS5yZW1vdmVDbGFzcygiZmFkZSB0b3AgYm90dG9tIGxlZnQgcmlnaHQgaW4iKSxhLmZpbmQoIi5wb3BvdmVyLXRpdGxlIikuaHRtbCgpfHxhLmZpbmQoIi5wb3BvdmVyLXRpdGxlIikuaGlkZSgpfSxjLnByb3RvdHlwZS5oYXNDb250ZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0VGl0bGUoKXx8dGhpcy5nZXRDb250ZW50KCl9LGMucHJvdG90eXBlLmdldENvbnRlbnQ9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLiRlbGVtZW50LGI9dGhpcy5vcHRpb25zO3JldHVybiBhLmF0dHIoImRhdGEtY29udGVudCIpfHwoImZ1bmN0aW9uIj09dHlwZW9mIGIuY29udGVudD9iLmNvbnRlbnQuY2FsbChhWzBdKTpiLmNvbnRlbnQpfSxjLnByb3RvdHlwZS5hcnJvdz1mdW5jdGlvbigpe3JldHVybiB0aGlzLiRhcnJvdz10aGlzLiRhcnJvd3x8dGhpcy50aXAoKS5maW5kKCIuYXJyb3ciKX0sYy5wcm90b3R5cGUudGlwPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHRpcHx8KHRoaXMuJHRpcD1hKHRoaXMub3B0aW9ucy50ZW1wbGF0ZSkpLHRoaXMuJHRpcH07dmFyIGQ9YS5mbi5wb3BvdmVyO2EuZm4ucG9wb3Zlcj1iLGEuZm4ucG9wb3Zlci5Db25zdHJ1Y3Rvcj1jLGEuZm4ucG9wb3Zlci5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGEuZm4ucG9wb3Zlcj1kLHRoaXN9fShqUXVlcnkpLCtmdW5jdGlvbihhKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYihjLGQpe3ZhciBlPWEucHJveHkodGhpcy5wcm9jZXNzLHRoaXMpO3RoaXMuJGJvZHk9YSgiYm9keSIpLHRoaXMuJHNjcm9sbEVsZW1lbnQ9YShhKGMpLmlzKCJib2R5Iik/d2luZG93OmMpLHRoaXMub3B0aW9ucz1hLmV4dGVuZCh7fSxiLkRFRkFVTFRTLGQpLHRoaXMuc2VsZWN0b3I9KHRoaXMub3B0aW9ucy50YXJnZXR8fCIiKSsiIC5uYXYgbGkgPiBhIix0aGlzLm9mZnNldHM9W10sdGhpcy50YXJnZXRzPVtdLHRoaXMuYWN0aXZlVGFyZ2V0PW51bGwsdGhpcy5zY3JvbGxIZWlnaHQ9MCx0aGlzLiRzY3JvbGxFbGVtZW50Lm9uKCJzY3JvbGwuYnMuc2Nyb2xsc3B5IixlKSx0aGlzLnJlZnJlc2goKSx0aGlzLnByb2Nlc3MoKX1mdW5jdGlvbiBjKGMpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZD1hKHRoaXMpLGU9ZC5kYXRhKCJicy5zY3JvbGxzcHkiKSxmPSJvYmplY3QiPT10eXBlb2YgYyYmYztlfHxkLmRhdGEoImJzLnNjcm9sbHNweSIsZT1uZXcgYih0aGlzLGYpKSwic3RyaW5nIj09dHlwZW9mIGMmJmVbY10oKX0pfWIuVkVSU0lPTj0iMy4zLjEiLGIuREVGQVVMVFM9e29mZnNldDoxMH0sYi5wcm90b3R5cGUuZ2V0U2Nyb2xsSGVpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHNjcm9sbEVsZW1lbnRbMF0uc2Nyb2xsSGVpZ2h0fHxNYXRoLm1heCh0aGlzLiRib2R5WzBdLnNjcm9sbEhlaWdodCxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsSGVpZ2h0KX0sYi5wcm90b3R5cGUucmVmcmVzaD1mdW5jdGlvbigpe3ZhciBiPSJvZmZzZXQiLGM9MDthLmlzV2luZG93KHRoaXMuJHNjcm9sbEVsZW1lbnRbMF0pfHwoYj0icG9zaXRpb24iLGM9dGhpcy4kc2Nyb2xsRWxlbWVudC5zY3JvbGxUb3AoKSksdGhpcy5vZmZzZXRzPVtdLHRoaXMudGFyZ2V0cz1bXSx0aGlzLnNjcm9sbEhlaWdodD10aGlzLmdldFNjcm9sbEhlaWdodCgpO3ZhciBkPXRoaXM7dGhpcy4kYm9keS5maW5kKHRoaXMuc2VsZWN0b3IpLm1hcChmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1kLmRhdGEoInRhcmdldCIpfHxkLmF0dHIoImhyZWYiKSxmPS9eIy4vLnRlc3QoZSkmJmEoZSk7cmV0dXJuIGYmJmYubGVuZ3RoJiZmLmlzKCI6dmlzaWJsZSIpJiZbW2ZbYl0oKS50b3ArYyxlXV18fG51bGx9KS5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGFbMF0tYlswXX0pLmVhY2goZnVuY3Rpb24oKXtkLm9mZnNldHMucHVzaCh0aGlzWzBdKSxkLnRhcmdldHMucHVzaCh0aGlzWzFdKX0pfSxiLnByb3RvdHlwZS5wcm9jZXNzPWZ1bmN0aW9uKCl7dmFyIGEsYj10aGlzLiRzY3JvbGxFbGVtZW50LnNjcm9sbFRvcCgpK3RoaXMub3B0aW9ucy5vZmZzZXQsYz10aGlzLmdldFNjcm9sbEhlaWdodCgpLGQ9dGhpcy5vcHRpb25zLm9mZnNldCtjLXRoaXMuJHNjcm9sbEVsZW1lbnQuaGVpZ2h0KCksZT10aGlzLm9mZnNldHMsZj10aGlzLnRhcmdldHMsZz10aGlzLmFjdGl2ZVRhcmdldDtpZih0aGlzLnNjcm9sbEhlaWdodCE9YyYmdGhpcy5yZWZyZXNoKCksYj49ZClyZXR1cm4gZyE9KGE9ZltmLmxlbmd0aC0xXSkmJnRoaXMuYWN0aXZhdGUoYSk7aWYoZyYmYjxlWzBdKXJldHVybiB0aGlzLmFjdGl2ZVRhcmdldD1udWxsLHRoaXMuY2xlYXIoKTtmb3IoYT1lLmxlbmd0aDthLS07KWchPWZbYV0mJmI+PWVbYV0mJighZVthKzFdfHxiPD1lW2ErMV0pJiZ0aGlzLmFjdGl2YXRlKGZbYV0pfSxiLnByb3RvdHlwZS5hY3RpdmF0ZT1mdW5jdGlvbihiKXt0aGlzLmFjdGl2ZVRhcmdldD1iLHRoaXMuY2xlYXIoKTt2YXIgYz10aGlzLnNlbGVjdG9yKydbZGF0YS10YXJnZXQ9IicrYisnIl0sJyt0aGlzLnNlbGVjdG9yKydbaHJlZj0iJytiKyciXScsZD1hKGMpLnBhcmVudHMoImxpIikuYWRkQ2xhc3MoImFjdGl2ZSIpO2QucGFyZW50KCIuZHJvcGRvd24tbWVudSIpLmxlbmd0aCYmKGQ9ZC5jbG9zZXN0KCJsaS5kcm9wZG93biIpLmFkZENsYXNzKCJhY3RpdmUiKSksZC50cmlnZ2VyKCJhY3RpdmF0ZS5icy5zY3JvbGxzcHkiKX0sYi5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXthKHRoaXMuc2VsZWN0b3IpLnBhcmVudHNVbnRpbCh0aGlzLm9wdGlvbnMudGFyZ2V0LCIuYWN0aXZlIikucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpfTt2YXIgZD1hLmZuLnNjcm9sbHNweTthLmZuLnNjcm9sbHNweT1jLGEuZm4uc2Nyb2xsc3B5LkNvbnN0cnVjdG9yPWIsYS5mbi5zY3JvbGxzcHkubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLnNjcm9sbHNweT1kLHRoaXN9LGEod2luZG93KS5vbigibG9hZC5icy5zY3JvbGxzcHkuZGF0YS1hcGkiLGZ1bmN0aW9uKCl7YSgnW2RhdGEtc3B5PSJzY3JvbGwiXScpLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1hKHRoaXMpO2MuY2FsbChiLGIuZGF0YSgpKX0pfSl9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZD1hKHRoaXMpLGU9ZC5kYXRhKCJicy50YWIiKTtlfHxkLmRhdGEoImJzLnRhYiIsZT1uZXcgYyh0aGlzKSksInN0cmluZyI9PXR5cGVvZiBiJiZlW2JdKCl9KX12YXIgYz1mdW5jdGlvbihiKXt0aGlzLmVsZW1lbnQ9YShiKX07Yy5WRVJTSU9OPSIzLjMuMSIsYy5UUkFOU0lUSU9OX0RVUkFUSU9OPTE1MCxjLnByb3RvdHlwZS5zaG93PWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5lbGVtZW50LGM9Yi5jbG9zZXN0KCJ1bDpub3QoLmRyb3Bkb3duLW1lbnUpIiksZD1iLmRhdGEoInRhcmdldCIpO2lmKGR8fChkPWIuYXR0cigiaHJlZiIpLGQ9ZCYmZC5yZXBsYWNlKC8uKig/PSNbXlxzXSokKS8sIiIpKSwhYi5wYXJlbnQoImxpIikuaGFzQ2xhc3MoImFjdGl2ZSIpKXt2YXIgZT1jLmZpbmQoIi5hY3RpdmU6bGFzdCBhIiksZj1hLkV2ZW50KCJoaWRlLmJzLnRhYiIse3JlbGF0ZWRUYXJnZXQ6YlswXX0pLGc9YS5FdmVudCgic2hvdy5icy50YWIiLHtyZWxhdGVkVGFyZ2V0OmVbMF19KTtpZihlLnRyaWdnZXIoZiksYi50cmlnZ2VyKGcpLCFnLmlzRGVmYXVsdFByZXZlbnRlZCgpJiYhZi5pc0RlZmF1bHRQcmV2ZW50ZWQoKSl7dmFyIGg9YShkKTt0aGlzLmFjdGl2YXRlKGIuY2xvc2VzdCgibGkiKSxjKSx0aGlzLmFjdGl2YXRlKGgsaC5wYXJlbnQoKSxmdW5jdGlvbigpe2UudHJpZ2dlcih7dHlwZToiaGlkZGVuLmJzLnRhYiIscmVsYXRlZFRhcmdldDpiWzBdfSksYi50cmlnZ2VyKHt0eXBlOiJzaG93bi5icy50YWIiLHJlbGF0ZWRUYXJnZXQ6ZVswXX0pCn0pfX19LGMucHJvdG90eXBlLmFjdGl2YXRlPWZ1bmN0aW9uKGIsZCxlKXtmdW5jdGlvbiBmKCl7Zy5yZW1vdmVDbGFzcygiYWN0aXZlIikuZmluZCgiPiAuZHJvcGRvd24tbWVudSA+IC5hY3RpdmUiKS5yZW1vdmVDbGFzcygiYWN0aXZlIikuZW5kKCkuZmluZCgnW2RhdGEtdG9nZ2xlPSJ0YWIiXScpLmF0dHIoImFyaWEtZXhwYW5kZWQiLCExKSxiLmFkZENsYXNzKCJhY3RpdmUiKS5maW5kKCdbZGF0YS10b2dnbGU9InRhYiJdJykuYXR0cigiYXJpYS1leHBhbmRlZCIsITApLGg/KGJbMF0ub2Zmc2V0V2lkdGgsYi5hZGRDbGFzcygiaW4iKSk6Yi5yZW1vdmVDbGFzcygiZmFkZSIpLGIucGFyZW50KCIuZHJvcGRvd24tbWVudSIpJiZiLmNsb3Nlc3QoImxpLmRyb3Bkb3duIikuYWRkQ2xhc3MoImFjdGl2ZSIpLmVuZCgpLmZpbmQoJ1tkYXRhLXRvZ2dsZT0idGFiIl0nKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwhMCksZSYmZSgpfXZhciBnPWQuZmluZCgiPiAuYWN0aXZlIiksaD1lJiZhLnN1cHBvcnQudHJhbnNpdGlvbiYmKGcubGVuZ3RoJiZnLmhhc0NsYXNzKCJmYWRlIil8fCEhZC5maW5kKCI+IC5mYWRlIikubGVuZ3RoKTtnLmxlbmd0aCYmaD9nLm9uZSgiYnNUcmFuc2l0aW9uRW5kIixmKS5lbXVsYXRlVHJhbnNpdGlvbkVuZChjLlRSQU5TSVRJT05fRFVSQVRJT04pOmYoKSxnLnJlbW92ZUNsYXNzKCJpbiIpfTt2YXIgZD1hLmZuLnRhYjthLmZuLnRhYj1iLGEuZm4udGFiLkNvbnN0cnVjdG9yPWMsYS5mbi50YWIubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLnRhYj1kLHRoaXN9O3ZhciBlPWZ1bmN0aW9uKGMpe2MucHJldmVudERlZmF1bHQoKSxiLmNhbGwoYSh0aGlzKSwic2hvdyIpfTthKGRvY3VtZW50KS5vbigiY2xpY2suYnMudGFiLmRhdGEtYXBpIiwnW2RhdGEtdG9nZ2xlPSJ0YWIiXScsZSkub24oImNsaWNrLmJzLnRhYi5kYXRhLWFwaSIsJ1tkYXRhLXRvZ2dsZT0icGlsbCJdJyxlKX0oalF1ZXJ5KSwrZnVuY3Rpb24oYSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGIoYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1kLmRhdGEoImJzLmFmZml4IiksZj0ib2JqZWN0Ij09dHlwZW9mIGImJmI7ZXx8ZC5kYXRhKCJicy5hZmZpeCIsZT1uZXcgYyh0aGlzLGYpKSwic3RyaW5nIj09dHlwZW9mIGImJmVbYl0oKX0pfXZhciBjPWZ1bmN0aW9uKGIsZCl7dGhpcy5vcHRpb25zPWEuZXh0ZW5kKHt9LGMuREVGQVVMVFMsZCksdGhpcy4kdGFyZ2V0PWEodGhpcy5vcHRpb25zLnRhcmdldCkub24oInNjcm9sbC5icy5hZmZpeC5kYXRhLWFwaSIsYS5wcm94eSh0aGlzLmNoZWNrUG9zaXRpb24sdGhpcykpLm9uKCJjbGljay5icy5hZmZpeC5kYXRhLWFwaSIsYS5wcm94eSh0aGlzLmNoZWNrUG9zaXRpb25XaXRoRXZlbnRMb29wLHRoaXMpKSx0aGlzLiRlbGVtZW50PWEoYiksdGhpcy5hZmZpeGVkPXRoaXMudW5waW49dGhpcy5waW5uZWRPZmZzZXQ9bnVsbCx0aGlzLmNoZWNrUG9zaXRpb24oKX07Yy5WRVJTSU9OPSIzLjMuMSIsYy5SRVNFVD0iYWZmaXggYWZmaXgtdG9wIGFmZml4LWJvdHRvbSIsYy5ERUZBVUxUUz17b2Zmc2V0OjAsdGFyZ2V0OndpbmRvd30sYy5wcm90b3R5cGUuZ2V0U3RhdGU9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9dGhpcy4kdGFyZ2V0LnNjcm9sbFRvcCgpLGY9dGhpcy4kZWxlbWVudC5vZmZzZXQoKSxnPXRoaXMuJHRhcmdldC5oZWlnaHQoKTtpZihudWxsIT1jJiYidG9wIj09dGhpcy5hZmZpeGVkKXJldHVybiBjPmU/InRvcCI6ITE7aWYoImJvdHRvbSI9PXRoaXMuYWZmaXhlZClyZXR1cm4gbnVsbCE9Yz9lK3RoaXMudW5waW48PWYudG9wPyExOiJib3R0b20iOmEtZD49ZStnPyExOiJib3R0b20iO3ZhciBoPW51bGw9PXRoaXMuYWZmaXhlZCxpPWg/ZTpmLnRvcCxqPWg/ZzpiO3JldHVybiBudWxsIT1jJiZjPj1pPyJ0b3AiOm51bGwhPWQmJmkraj49YS1kPyJib3R0b20iOiExfSxjLnByb3RvdHlwZS5nZXRQaW5uZWRPZmZzZXQ9ZnVuY3Rpb24oKXtpZih0aGlzLnBpbm5lZE9mZnNldClyZXR1cm4gdGhpcy5waW5uZWRPZmZzZXQ7dGhpcy4kZWxlbWVudC5yZW1vdmVDbGFzcyhjLlJFU0VUKS5hZGRDbGFzcygiYWZmaXgiKTt2YXIgYT10aGlzLiR0YXJnZXQuc2Nyb2xsVG9wKCksYj10aGlzLiRlbGVtZW50Lm9mZnNldCgpO3JldHVybiB0aGlzLnBpbm5lZE9mZnNldD1iLnRvcC1hfSxjLnByb3RvdHlwZS5jaGVja1Bvc2l0aW9uV2l0aEV2ZW50TG9vcD1mdW5jdGlvbigpe3NldFRpbWVvdXQoYS5wcm94eSh0aGlzLmNoZWNrUG9zaXRpb24sdGhpcyksMSl9LGMucHJvdG90eXBlLmNoZWNrUG9zaXRpb249ZnVuY3Rpb24oKXtpZih0aGlzLiRlbGVtZW50LmlzKCI6dmlzaWJsZSIpKXt2YXIgYj10aGlzLiRlbGVtZW50LmhlaWdodCgpLGQ9dGhpcy5vcHRpb25zLm9mZnNldCxlPWQudG9wLGY9ZC5ib3R0b20sZz1hKCJib2R5IikuaGVpZ2h0KCk7Im9iamVjdCIhPXR5cGVvZiBkJiYoZj1lPWQpLCJmdW5jdGlvbiI9PXR5cGVvZiBlJiYoZT1kLnRvcCh0aGlzLiRlbGVtZW50KSksImZ1bmN0aW9uIj09dHlwZW9mIGYmJihmPWQuYm90dG9tKHRoaXMuJGVsZW1lbnQpKTt2YXIgaD10aGlzLmdldFN0YXRlKGcsYixlLGYpO2lmKHRoaXMuYWZmaXhlZCE9aCl7bnVsbCE9dGhpcy51bnBpbiYmdGhpcy4kZWxlbWVudC5jc3MoInRvcCIsIiIpO3ZhciBpPSJhZmZpeCIrKGg/Ii0iK2g6IiIpLGo9YS5FdmVudChpKyIuYnMuYWZmaXgiKTtpZih0aGlzLiRlbGVtZW50LnRyaWdnZXIoaiksai5pc0RlZmF1bHRQcmV2ZW50ZWQoKSlyZXR1cm47dGhpcy5hZmZpeGVkPWgsdGhpcy51bnBpbj0iYm90dG9tIj09aD90aGlzLmdldFBpbm5lZE9mZnNldCgpOm51bGwsdGhpcy4kZWxlbWVudC5yZW1vdmVDbGFzcyhjLlJFU0VUKS5hZGRDbGFzcyhpKS50cmlnZ2VyKGkucmVwbGFjZSgiYWZmaXgiLCJhZmZpeGVkIikrIi5icy5hZmZpeCIpfSJib3R0b20iPT1oJiZ0aGlzLiRlbGVtZW50Lm9mZnNldCh7dG9wOmctYi1mfSl9fTt2YXIgZD1hLmZuLmFmZml4O2EuZm4uYWZmaXg9YixhLmZuLmFmZml4LkNvbnN0cnVjdG9yPWMsYS5mbi5hZmZpeC5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGEuZm4uYWZmaXg9ZCx0aGlzfSxhKHdpbmRvdykub24oImxvYWQiLGZ1bmN0aW9uKCl7YSgnW2RhdGEtc3B5PSJhZmZpeCJdJykuZWFjaChmdW5jdGlvbigpe3ZhciBjPWEodGhpcyksZD1jLmRhdGEoKTtkLm9mZnNldD1kLm9mZnNldHx8e30sbnVsbCE9ZC5vZmZzZXRCb3R0b20mJihkLm9mZnNldC5ib3R0b209ZC5vZmZzZXRCb3R0b20pLG51bGwhPWQub2Zmc2V0VG9wJiYoZC5vZmZzZXQudG9wPWQub2Zmc2V0VG9wKSxiLmNhbGwoYyxkKX0pfSl9KGpRdWVyeSk7"></script>
<script src="data:application/x-javascript;base64,LyoqCiogQHByZXNlcnZlIEhUTUw1IFNoaXYgMy43LjIgfCBAYWZhcmthcyBAamRhbHRvbiBAam9uX25lYWwgQHJlbSB8IE1JVC9HUEwyIExpY2Vuc2VkCiovCi8vIE9ubHkgcnVuIHRoaXMgY29kZSBpbiBJRSA4CmlmICghIXdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKCJNU0lFIDgiKSkgewohZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEsYil7dmFyIGM9YS5jcmVhdGVFbGVtZW50KCJwIiksZD1hLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF18fGEuZG9jdW1lbnRFbGVtZW50O3JldHVybiBjLmlubmVySFRNTD0ieDxzdHlsZT4iK2IrIjwvc3R5bGU+IixkLmluc2VydEJlZm9yZShjLmxhc3RDaGlsZCxkLmZpcnN0Q2hpbGQpfWZ1bmN0aW9uIGQoKXt2YXIgYT10LmVsZW1lbnRzO3JldHVybiJzdHJpbmciPT10eXBlb2YgYT9hLnNwbGl0KCIgIik6YX1mdW5jdGlvbiBlKGEsYil7dmFyIGM9dC5lbGVtZW50czsic3RyaW5nIiE9dHlwZW9mIGMmJihjPWMuam9pbigiICIpKSwic3RyaW5nIiE9dHlwZW9mIGEmJihhPWEuam9pbigiICIpKSx0LmVsZW1lbnRzPWMrIiAiK2EsaihiKX1mdW5jdGlvbiBmKGEpe3ZhciBiPXNbYVtxXV07cmV0dXJuIGJ8fChiPXt9LHIrKyxhW3FdPXIsc1tyXT1iKSxifWZ1bmN0aW9uIGcoYSxjLGQpe2lmKGN8fChjPWIpLGwpcmV0dXJuIGMuY3JlYXRlRWxlbWVudChhKTtkfHwoZD1mKGMpKTt2YXIgZTtyZXR1cm4gZT1kLmNhY2hlW2FdP2QuY2FjaGVbYV0uY2xvbmVOb2RlKCk6cC50ZXN0KGEpPyhkLmNhY2hlW2FdPWQuY3JlYXRlRWxlbShhKSkuY2xvbmVOb2RlKCk6ZC5jcmVhdGVFbGVtKGEpLCFlLmNhbkhhdmVDaGlsZHJlbnx8by50ZXN0KGEpfHxlLnRhZ1Vybj9lOmQuZnJhZy5hcHBlbmRDaGlsZChlKX1mdW5jdGlvbiBoKGEsYyl7aWYoYXx8KGE9YiksbClyZXR1cm4gYS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7Yz1jfHxmKGEpO2Zvcih2YXIgZT1jLmZyYWcuY2xvbmVOb2RlKCksZz0wLGg9ZCgpLGk9aC5sZW5ndGg7aT5nO2crKyllLmNyZWF0ZUVsZW1lbnQoaFtnXSk7cmV0dXJuIGV9ZnVuY3Rpb24gaShhLGIpe2IuY2FjaGV8fChiLmNhY2hlPXt9LGIuY3JlYXRlRWxlbT1hLmNyZWF0ZUVsZW1lbnQsYi5jcmVhdGVGcmFnPWEuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCxiLmZyYWc9Yi5jcmVhdGVGcmFnKCkpLGEuY3JlYXRlRWxlbWVudD1mdW5jdGlvbihjKXtyZXR1cm4gdC5zaGl2TWV0aG9kcz9nKGMsYSxiKTpiLmNyZWF0ZUVsZW0oYyl9LGEuY3JlYXRlRG9jdW1lbnRGcmFnbWVudD1GdW5jdGlvbigiaCxmIiwicmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49Zi5jbG9uZU5vZGUoKSxjPW4uY3JlYXRlRWxlbWVudDtoLnNoaXZNZXRob2RzJiYoIitkKCkuam9pbigpLnJlcGxhY2UoL1tcd1wtOl0rL2csZnVuY3Rpb24oYSl7cmV0dXJuIGIuY3JlYXRlRWxlbShhKSxiLmZyYWcuY3JlYXRlRWxlbWVudChhKSwnYygiJythKyciKSd9KSsiKTtyZXR1cm4gbn0iKSh0LGIuZnJhZyl9ZnVuY3Rpb24gaihhKXthfHwoYT1iKTt2YXIgZD1mKGEpO3JldHVybiF0LnNoaXZDU1N8fGt8fGQuaGFzQ1NTfHwoZC5oYXNDU1M9ISFjKGEsImFydGljbGUsYXNpZGUsZGlhbG9nLGZpZ2NhcHRpb24sZmlndXJlLGZvb3RlcixoZWFkZXIsaGdyb3VwLG1haW4sbmF2LHNlY3Rpb257ZGlzcGxheTpibG9ja31tYXJre2JhY2tncm91bmQ6I0ZGMDtjb2xvcjojMDAwfXRlbXBsYXRle2Rpc3BsYXk6bm9uZX0iKSksbHx8aShhLGQpLGF9dmFyIGssbCxtPSIzLjcuMiIsbj1hLmh0bWw1fHx7fSxvPS9ePHxeKD86YnV0dG9ufG1hcHxzZWxlY3R8dGV4dGFyZWF8b2JqZWN0fGlmcmFtZXxvcHRpb258b3B0Z3JvdXApJC9pLHA9L14oPzphfGJ8Y29kZXxkaXZ8ZmllbGRzZXR8aDF8aDJ8aDN8aDR8aDV8aDZ8aXxsYWJlbHxsaXxvbHxwfHF8c3BhbnxzdHJvbmd8c3R5bGV8dGFibGV8dGJvZHl8dGR8dGh8dHJ8dWwpJC9pLHE9Il9odG1sNXNoaXYiLHI9MCxzPXt9OyFmdW5jdGlvbigpe3RyeXt2YXIgYT1iLmNyZWF0ZUVsZW1lbnQoImEiKTthLmlubmVySFRNTD0iPHh5ej48L3h5ej4iLGs9ImhpZGRlbiJpbiBhLGw9MT09YS5jaGlsZE5vZGVzLmxlbmd0aHx8ZnVuY3Rpb24oKXtiLmNyZWF0ZUVsZW1lbnQoImEiKTt2YXIgYT1iLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIGEuY2xvbmVOb2RlfHwidW5kZWZpbmVkIj09dHlwZW9mIGEuY3JlYXRlRG9jdW1lbnRGcmFnbWVudHx8InVuZGVmaW5lZCI9PXR5cGVvZiBhLmNyZWF0ZUVsZW1lbnR9KCl9Y2F0Y2goYyl7az0hMCxsPSEwfX0oKTt2YXIgdD17ZWxlbWVudHM6bi5lbGVtZW50c3x8ImFiYnIgYXJ0aWNsZSBhc2lkZSBhdWRpbyBiZGkgY2FudmFzIGRhdGEgZGF0YWxpc3QgZGV0YWlscyBkaWFsb2cgZmlnY2FwdGlvbiBmaWd1cmUgZm9vdGVyIGhlYWRlciBoZ3JvdXAgbWFpbiBtYXJrIG1ldGVyIG5hdiBvdXRwdXQgcGljdHVyZSBwcm9ncmVzcyBzZWN0aW9uIHN1bW1hcnkgdGVtcGxhdGUgdGltZSB2aWRlbyIsdmVyc2lvbjptLHNoaXZDU1M6bi5zaGl2Q1NTIT09ITEsc3VwcG9ydHNVbmtub3duRWxlbWVudHM6bCxzaGl2TWV0aG9kczpuLnNoaXZNZXRob2RzIT09ITEsdHlwZToiZGVmYXVsdCIsc2hpdkRvY3VtZW50OmosY3JlYXRlRWxlbWVudDpnLGNyZWF0ZURvY3VtZW50RnJhZ21lbnQ6aCxhZGRFbGVtZW50czplfTthLmh0bWw1PXQsaihiKX0odGhpcyxkb2N1bWVudCk7Cn07Cg=="></script>
<script src="data:application/x-javascript;base64,LyohIFJlc3BvbmQuanMgdjEuNC4yOiBtaW4vbWF4LXdpZHRoIG1lZGlhIHF1ZXJ5IHBvbHlmaWxsICogQ29weXJpZ2h0IDIwMTMgU2NvdHQgSmVobAogKiBMaWNlbnNlZCB1bmRlciBodHRwczovL2dpdGh1Yi5jb20vc2NvdHRqZWhsL1Jlc3BvbmQvYmxvYi9tYXN0ZXIvTElDRU5TRS1NSVQKICogICovCgppZiAoISF3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgiTVNJRSA4IikpIHsKIWZ1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjthLm1hdGNoTWVkaWE9YS5tYXRjaE1lZGlhfHxmdW5jdGlvbihhKXt2YXIgYixjPWEuZG9jdW1lbnRFbGVtZW50LGQ9Yy5maXJzdEVsZW1lbnRDaGlsZHx8Yy5maXJzdENoaWxkLGU9YS5jcmVhdGVFbGVtZW50KCJib2R5IiksZj1hLmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBmLmlkPSJtcS10ZXN0LTEiLGYuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7dG9wOi0xMDBlbSIsZS5zdHlsZS5iYWNrZ3JvdW5kPSJub25lIixlLmFwcGVuZENoaWxkKGYpLGZ1bmN0aW9uKGEpe3JldHVybiBmLmlubmVySFRNTD0nJnNoeTs8c3R5bGUgbWVkaWE9IicrYSsnIj4gI21xLXRlc3QtMSB7IHdpZHRoOiA0MnB4OyB9PC9zdHlsZT4nLGMuaW5zZXJ0QmVmb3JlKGUsZCksYj00Mj09PWYub2Zmc2V0V2lkdGgsYy5yZW1vdmVDaGlsZChlKSx7bWF0Y2hlczpiLG1lZGlhOmF9fX0oYS5kb2N1bWVudCl9KHRoaXMpLGZ1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKCl7dSghMCl9dmFyIGM9e307YS5yZXNwb25kPWMsYy51cGRhdGU9ZnVuY3Rpb24oKXt9O3ZhciBkPVtdLGU9ZnVuY3Rpb24oKXt2YXIgYj0hMTt0cnl7Yj1uZXcgYS5YTUxIdHRwUmVxdWVzdH1jYXRjaChjKXtiPW5ldyBhLkFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIil9cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGJ9fSgpLGY9ZnVuY3Rpb24oYSxiKXt2YXIgYz1lKCk7YyYmKGMub3BlbigiR0VUIixhLCEwKSxjLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpezQhPT1jLnJlYWR5U3RhdGV8fDIwMCE9PWMuc3RhdHVzJiYzMDQhPT1jLnN0YXR1c3x8YihjLnJlc3BvbnNlVGV4dCl9LDQhPT1jLnJlYWR5U3RhdGUmJmMuc2VuZChudWxsKSl9O2lmKGMuYWpheD1mLGMucXVldWU9ZCxjLnJlZ2V4PXttZWRpYTovQG1lZGlhW15ce10rXHsoW15ce1x9XSpce1teXH1ce10qXH0pKy9naSxrZXlmcmFtZXM6L0AoPzpcLSg/Om98bW96fHdlYmtpdClcLSk/a2V5ZnJhbWVzW15ce10rXHsoPzpbXlx7XH1dKlx7W15cfVx7XSpcfSkrW15cfV0qXH0vZ2ksdXJsczovKHVybFwoKVsnIl0/KFteXC9cKSciXVteOlwpJyJdKylbJyJdPyhcKSkvZyxmaW5kU3R5bGVzOi9AbWVkaWEgKihbXlx7XSspXHsoW1xTXHNdKz8pJC8sb25seTovKG9ubHlccyspPyhbYS16QS1aXSspXHM/LyxtaW53Oi9cKFtcc10qbWluXC13aWR0aFxzKjpbXHNdKihbXHNdKlswLTlcLl0rKShweHxlbSlbXHNdKlwpLyxtYXh3Oi9cKFtcc10qbWF4XC13aWR0aFxzKjpbXHNdKihbXHNdKlswLTlcLl0rKShweHxlbSlbXHNdKlwpL30sYy5tZWRpYVF1ZXJpZXNTdXBwb3J0ZWQ9YS5tYXRjaE1lZGlhJiZudWxsIT09YS5tYXRjaE1lZGlhKCJvbmx5IGFsbCIpJiZhLm1hdGNoTWVkaWEoIm9ubHkgYWxsIikubWF0Y2hlcywhYy5tZWRpYVF1ZXJpZXNTdXBwb3J0ZWQpe3ZhciBnLGgsaSxqPWEuZG9jdW1lbnQsaz1qLmRvY3VtZW50RWxlbWVudCxsPVtdLG09W10sbj1bXSxvPXt9LHA9MzAscT1qLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF18fGsscj1qLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJiYXNlIilbMF0scz1xLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIiksdD1mdW5jdGlvbigpe3ZhciBhLGI9ai5jcmVhdGVFbGVtZW50KCJkaXYiKSxjPWouYm9keSxkPWsuc3R5bGUuZm9udFNpemUsZT1jJiZjLnN0eWxlLmZvbnRTaXplLGY9ITE7cmV0dXJuIGIuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7Zm9udC1zaXplOjFlbTt3aWR0aDoxZW0iLGN8fChjPWY9ai5jcmVhdGVFbGVtZW50KCJib2R5IiksYy5zdHlsZS5iYWNrZ3JvdW5kPSJub25lIiksay5zdHlsZS5mb250U2l6ZT0iMTAwJSIsYy5zdHlsZS5mb250U2l6ZT0iMTAwJSIsYy5hcHBlbmRDaGlsZChiKSxmJiZrLmluc2VydEJlZm9yZShjLGsuZmlyc3RDaGlsZCksYT1iLm9mZnNldFdpZHRoLGY/ay5yZW1vdmVDaGlsZChjKTpjLnJlbW92ZUNoaWxkKGIpLGsuc3R5bGUuZm9udFNpemU9ZCxlJiYoYy5zdHlsZS5mb250U2l6ZT1lKSxhPWk9cGFyc2VGbG9hdChhKX0sdT1mdW5jdGlvbihiKXt2YXIgYz0iY2xpZW50V2lkdGgiLGQ9a1tjXSxlPSJDU1MxQ29tcGF0Ij09PWouY29tcGF0TW9kZSYmZHx8ai5ib2R5W2NdfHxkLGY9e30sbz1zW3MubGVuZ3RoLTFdLHI9KG5ldyBEYXRlKS5nZXRUaW1lKCk7aWYoYiYmZyYmcD5yLWcpcmV0dXJuIGEuY2xlYXJUaW1lb3V0KGgpLGg9YS5zZXRUaW1lb3V0KHUscCksdm9pZCAwO2c9cjtmb3IodmFyIHYgaW4gbClpZihsLmhhc093blByb3BlcnR5KHYpKXt2YXIgdz1sW3ZdLHg9dy5taW53LHk9dy5tYXh3LHo9bnVsbD09PXgsQT1udWxsPT09eSxCPSJlbSI7eCYmKHg9cGFyc2VGbG9hdCh4KSooeC5pbmRleE9mKEIpPi0xP2l8fHQoKToxKSkseSYmKHk9cGFyc2VGbG9hdCh5KSooeS5pbmRleE9mKEIpPi0xP2l8fHQoKToxKSksdy5oYXNxdWVyeSYmKHomJkF8fCEoenx8ZT49eCl8fCEoQXx8eT49ZSkpfHwoZlt3Lm1lZGlhXXx8KGZbdy5tZWRpYV09W10pLGZbdy5tZWRpYV0ucHVzaChtW3cucnVsZXNdKSl9Zm9yKHZhciBDIGluIG4pbi5oYXNPd25Qcm9wZXJ0eShDKSYmbltDXSYmbltDXS5wYXJlbnROb2RlPT09cSYmcS5yZW1vdmVDaGlsZChuW0NdKTtuLmxlbmd0aD0wO2Zvcih2YXIgRCBpbiBmKWlmKGYuaGFzT3duUHJvcGVydHkoRCkpe3ZhciBFPWouY3JlYXRlRWxlbWVudCgic3R5bGUiKSxGPWZbRF0uam9pbigiXG4iKTtFLnR5cGU9InRleHQvY3NzIixFLm1lZGlhPUQscS5pbnNlcnRCZWZvcmUoRSxvLm5leHRTaWJsaW5nKSxFLnN0eWxlU2hlZXQ/RS5zdHlsZVNoZWV0LmNzc1RleHQ9RjpFLmFwcGVuZENoaWxkKGouY3JlYXRlVGV4dE5vZGUoRikpLG4ucHVzaChFKX19LHY9ZnVuY3Rpb24oYSxiLGQpe3ZhciBlPWEucmVwbGFjZShjLnJlZ2V4LmtleWZyYW1lcywiIikubWF0Y2goYy5yZWdleC5tZWRpYSksZj1lJiZlLmxlbmd0aHx8MDtiPWIuc3Vic3RyaW5nKDAsYi5sYXN0SW5kZXhPZigiLyIpKTt2YXIgZz1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKGMucmVnZXgudXJscywiJDEiK2IrIiQyJDMiKX0saD0hZiYmZDtiLmxlbmd0aCYmKGIrPSIvIiksaCYmKGY9MSk7Zm9yKHZhciBpPTA7Zj5pO2krKyl7dmFyIGosayxuLG87aD8oaj1kLG0ucHVzaChnKGEpKSk6KGo9ZVtpXS5tYXRjaChjLnJlZ2V4LmZpbmRTdHlsZXMpJiZSZWdFeHAuJDEsbS5wdXNoKFJlZ0V4cC4kMiYmZyhSZWdFeHAuJDIpKSksbj1qLnNwbGl0KCIsIiksbz1uLmxlbmd0aDtmb3IodmFyIHA9MDtvPnA7cCsrKWs9bltwXSxsLnB1c2goe21lZGlhOmsuc3BsaXQoIigiKVswXS5tYXRjaChjLnJlZ2V4Lm9ubHkpJiZSZWdFeHAuJDJ8fCJhbGwiLHJ1bGVzOm0ubGVuZ3RoLTEsaGFzcXVlcnk6ay5pbmRleE9mKCIoIik+LTEsbWludzprLm1hdGNoKGMucmVnZXgubWludykmJnBhcnNlRmxvYXQoUmVnRXhwLiQxKSsoUmVnRXhwLiQyfHwiIiksbWF4dzprLm1hdGNoKGMucmVnZXgubWF4dykmJnBhcnNlRmxvYXQoUmVnRXhwLiQxKSsoUmVnRXhwLiQyfHwiIil9KX11KCl9LHc9ZnVuY3Rpb24oKXtpZihkLmxlbmd0aCl7dmFyIGI9ZC5zaGlmdCgpO2YoYi5ocmVmLGZ1bmN0aW9uKGMpe3YoYyxiLmhyZWYsYi5tZWRpYSksb1tiLmhyZWZdPSEwLGEuc2V0VGltZW91dChmdW5jdGlvbigpe3coKX0sMCl9KX19LHg9ZnVuY3Rpb24oKXtmb3IodmFyIGI9MDtiPHMubGVuZ3RoO2IrKyl7dmFyIGM9c1tiXSxlPWMuaHJlZixmPWMubWVkaWEsZz1jLnJlbCYmInN0eWxlc2hlZXQiPT09Yy5yZWwudG9Mb3dlckNhc2UoKTtlJiZnJiYhb1tlXSYmKGMuc3R5bGVTaGVldCYmYy5zdHlsZVNoZWV0LnJhd0Nzc1RleHQ/KHYoYy5zdHlsZVNoZWV0LnJhd0Nzc1RleHQsZSxmKSxvW2VdPSEwKTooIS9eKFthLXpBLVo6XSpcL1wvKS8udGVzdChlKSYmIXJ8fGUucmVwbGFjZShSZWdFeHAuJDEsIiIpLnNwbGl0KCIvIilbMF09PT1hLmxvY2F0aW9uLmhvc3QpJiYoIi8vIj09PWUuc3Vic3RyaW5nKDAsMikmJihlPWEubG9jYXRpb24ucHJvdG9jb2wrZSksZC5wdXNoKHtocmVmOmUsbWVkaWE6Zn0pKSl9dygpfTt4KCksYy51cGRhdGU9eCxjLmdldEVtVmFsdWU9dCxhLmFkZEV2ZW50TGlzdGVuZXI/YS5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLGIsITEpOmEuYXR0YWNoRXZlbnQmJmEuYXR0YWNoRXZlbnQoIm9ucmVzaXplIixiKX19KHRoaXMpOwp9Ow=="></script>
<style type="text/css">
/*!
* Bootstrap v3.3.1 (http://getbootstrap.com)
* Copyright 2011-2014 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*//*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:before,:after{color:#000!important;text-shadow:none!important;background:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:before,:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:hover,a:focus{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:400;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=radio],input[type=checkbox]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=radio]:focus,input[type=checkbox]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date],input[type=time],input[type=datetime-local],input[type=month]{line-height:34px}input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.radio input[type=radio],.radio-inline input[type=radio],.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox]{position:absolute;margin-top:4px \9;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type=radio][disabled],input[type=checkbox][disabled],input[type=radio].disabled,input[type=checkbox].disabled,fieldset[disabled] input[type=radio],fieldset[disabled] input[type=checkbox]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm,.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm,select.form-group-sm .form-control{height:30px;line-height:30px}textarea.input-sm,textarea.form-group-sm .form-control,select[multiple].input-sm,select[multiple].form-group-sm .form-control{height:auto}.input-lg,.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg,select.form-group-lg .form-control{height:46px;line-height:46px}textarea.input-lg,textarea.form-group-lg .form-control,select[multiple].input-lg,select[multiple].form-group-lg .form-control{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type=radio],.form-inline .checkbox input[type=checkbox]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.3px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#333;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default.focus,.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary:hover,.btn-primary:focus,.btn-primary.focus,.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success.focus,.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info.focus,.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning.focus,.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger.focus,.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#777;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=submit].btn-block,input[type=reset].btn-block,input[type=button].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none;visibility:hidden}.collapse.in{display:block;visibility:visible}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=radio],[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=radio],.input-group-addon input[type=checkbox]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none;visibility:hidden}.tab-content>.active{display:block;visibility:visible}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important;visibility:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type=radio],.navbar-form .checkbox input[type=checkbox]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px 15px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding:48px 0}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-right:auto;margin-left:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{color:#555;text-decoration:none;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-right:15px;padding-left:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:absolute;top:0;right:0;left:0;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{min-height:16.43px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-weight:400;line-height:1.4;visibility:visible;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-weight:400;line-height:1.42857143;text-align:left;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000;perspective:1000}.carousel-inner>.item.next,.carousel-inner>.item.active.right{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{display:table;content:" "}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important;visibility:hidden!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none!important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}
</style>
<script src="data:application/x-javascript;base64,KGZ1bmN0aW9uKCkgewogIC8vIElmIHdpbmRvdy5IVE1MV2lkZ2V0cyBpcyBhbHJlYWR5IGRlZmluZWQsIHRoZW4gdXNlIGl0OyBvdGhlcndpc2UgY3JlYXRlIGEKICAvLyBuZXcgb2JqZWN0LiBUaGlzIGFsbG93cyBwcmVjZWRpbmcgY29kZSB0byBzZXQgb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUKICAvLyBpbml0aWFsaXphdGlvbiBwcm9jZXNzICh0aG91Z2ggbm9uZSBjdXJyZW50bHkgZXhpc3QpLgogIHdpbmRvdy5IVE1MV2lkZ2V0cyA9IHdpbmRvdy5IVE1MV2lkZ2V0cyB8fCB7fTsKCiAgLy8gU2VlIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gYSB2aWV3ZXIgcGFuZS4gSWYgbm90LCB3ZSdyZSBpbiBhIHdlYiBicm93c2VyLgogIHZhciB2aWV3ZXJNb2RlID0gd2luZG93LkhUTUxXaWRnZXRzLnZpZXdlck1vZGUgPQogICAgICAvXGJ2aWV3ZXJfcGFuZT0xXGIvLnRlc3Qod2luZG93LmxvY2F0aW9uKTsKCiAgLy8gU2VlIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gU2hpbnkgbW9kZS4gSWYgbm90LCBpdCdzIGEgc3RhdGljIGRvY3VtZW50LgogIC8vIE5vdGUgdGhhdCBzdGF0aWMgd2lkZ2V0cyBjYW4gYXBwZWFyIGluIGJvdGggU2hpbnkgYW5kIHN0YXRpYyBtb2RlcywgYnV0CiAgLy8gb2J2aW91c2x5LCBTaGlueSB3aWRnZXRzIGNhbiBvbmx5IGFwcGVhciBpbiBTaGlueSBhcHBzL2RvY3VtZW50cy4KICB2YXIgc2hpbnlNb2RlID0gd2luZG93LkhUTUxXaWRnZXRzLnNoaW55TW9kZSA9CiAgICAgIHR5cGVvZih3aW5kb3cuU2hpbnkpICE9PSAidW5kZWZpbmVkIiAmJiAhIXdpbmRvdy5TaGlueS5vdXRwdXRCaW5kaW5nczsKCiAgLy8gV2UgY2FuJ3QgY291bnQgb24galF1ZXJ5IGJlaW5nIGF2YWlsYWJsZSwgc28gd2UgaW1wbGVtZW50IG91ciBvd24KICAvLyB2ZXJzaW9uIGlmIG5lY2Vzc2FyeS4KICBmdW5jdGlvbiBxdWVyeVNlbGVjdG9yQWxsKHNjb3BlLCBzZWxlY3RvcikgewogICAgaWYgKHR5cGVvZihqUXVlcnkpICE9PSAidW5kZWZpbmVkIiAmJiBzY29wZSBpbnN0YW5jZW9mIGpRdWVyeSkgewogICAgICByZXR1cm4gc2NvcGUuZmluZChzZWxlY3Rvcik7CiAgICB9CiAgICBpZiAoc2NvcGUucXVlcnlTZWxlY3RvckFsbCkgewogICAgICByZXR1cm4gc2NvcGUucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBhc0FycmF5KHZhbHVlKSB7CiAgICBpZiAodmFsdWUgPT09IG51bGwpCiAgICAgIHJldHVybiBbXTsKICAgIGlmICgkLmlzQXJyYXkodmFsdWUpKQogICAgICByZXR1cm4gdmFsdWU7CiAgICByZXR1cm4gW3ZhbHVlXTsKICB9CgogIC8vIEltcGxlbWVudCBqUXVlcnkncyBleHRlbmQKICBmdW5jdGlvbiBleHRlbmQodGFyZ2V0IC8qLCAuLi4gKi8pIHsKICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDEpIHsKICAgICAgcmV0dXJuIHRhcmdldDsKICAgIH0KICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07CiAgICAgIGZvciAodmFyIHByb3AgaW4gc291cmNlKSB7CiAgICAgICAgaWYgKHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShwcm9wKSkgewogICAgICAgICAgdGFyZ2V0W3Byb3BdID0gc291cmNlW3Byb3BdOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgcmV0dXJuIHRhcmdldDsKICB9CgogIC8vIElFOCBkb2Vzbid0IHN1cHBvcnQgQXJyYXkuZm9yRWFjaC4KICBmdW5jdGlvbiBmb3JFYWNoKHZhbHVlcywgY2FsbGJhY2ssIHRoaXNBcmcpIHsKICAgIGlmICh2YWx1ZXMuZm9yRWFjaCkgewogICAgICB2YWx1ZXMuZm9yRWFjaChjYWxsYmFjaywgdGhpc0FyZyk7CiAgICB9IGVsc2UgewogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykgewogICAgICAgIGNhbGxiYWNrLmNhbGwodGhpc0FyZywgdmFsdWVzW2ldLCBpLCB2YWx1ZXMpOwogICAgICB9CiAgICB9CiAgfQoKICAvLyBSZXBsYWNlcyB0aGUgc3BlY2lmaWVkIG1ldGhvZCB3aXRoIHRoZSByZXR1cm4gdmFsdWUgb2YgZnVuY1NvdXJjZS4KICAvLwogIC8vIE5vdGUgdGhhdCBmdW5jU291cmNlIHNob3VsZCBub3QgQkUgdGhlIG5ldyBtZXRob2QsIGl0IHNob3VsZCBiZSBhIGZ1bmN0aW9uCiAgLy8gdGhhdCBSRVRVUk5TIHRoZSBuZXcgbWV0aG9kLiBmdW5jU291cmNlIHJlY2VpdmVzIGEgc2luZ2xlIGFyZ3VtZW50IHRoYXQgaXMKICAvLyB0aGUgb3ZlcnJpZGRlbiBtZXRob2QsIGl0IGNhbiBiZSBjYWxsZWQgZnJvbSB0aGUgbmV3IG1ldGhvZC4gVGhlIG92ZXJyaWRkZW4KICAvLyBtZXRob2QgY2FuIGJlIGNhbGxlZCBsaWtlIGEgcmVndWxhciBmdW5jdGlvbiwgaXQgaGFzIHRoZSB0YXJnZXQgcGVybWFuZW50bHkKICAvLyBib3VuZCB0byBpdCBzbyAidGhpcyIgd2lsbCB3b3JrIGNvcnJlY3RseS4KICBmdW5jdGlvbiBvdmVycmlkZU1ldGhvZCh0YXJnZXQsIG1ldGhvZE5hbWUsIGZ1bmNTb3VyY2UpIHsKICAgIHZhciBzdXBlckZ1bmMgPSB0YXJnZXRbbWV0aG9kTmFtZV0gfHwgZnVuY3Rpb24oKSB7fTsKICAgIHZhciBzdXBlckZ1bmNCb3VuZCA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gc3VwZXJGdW5jLmFwcGx5KHRhcmdldCwgYXJndW1lbnRzKTsKICAgIH07CiAgICB0YXJnZXRbbWV0aG9kTmFtZV0gPSBmdW5jU291cmNlKHN1cGVyRnVuY0JvdW5kKTsKICB9CgogIC8vIEltcGxlbWVudCBhIHZhZ3VlIGZhY3NpbWlsaWUgb2YgalF1ZXJ5J3MgZGF0YSBtZXRob2QKICBmdW5jdGlvbiBlbGVtZW50RGF0YShlbCwgbmFtZSwgdmFsdWUpIHsKICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDIpIHsKICAgICAgcmV0dXJuIGVsWyJodG1sd2lkZ2V0X2RhdGFfIiArIG5hbWVdOwogICAgfSBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDMpIHsKICAgICAgZWxbImh0bWx3aWRnZXRfZGF0YV8iICsgbmFtZV0gPSB2YWx1ZTsKICAgICAgcmV0dXJuIGVsOwogICAgfSBlbHNlIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCJXcm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIGZvciBlbGVtZW50RGF0YTogIiArCiAgICAgICAgYXJndW1lbnRzLmxlbmd0aCk7CiAgICB9CiAgfQoKICAvLyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzM0NDYxNzAvZXNjYXBlLXN0cmluZy1mb3ItdXNlLWluLWphdmFzY3JpcHQtcmVnZXgKICBmdW5jdGlvbiBlc2NhcGVSZWdFeHAoc3RyKSB7CiAgICByZXR1cm4gc3RyLnJlcGxhY2UoL1tcLVxbXF1cL1x7XH1cKFwpXCpcK1w/XC5cXFxeXCRcfF0vZywgIlxcJCYiKTsKICB9CgogIGZ1bmN0aW9uIGhhc0NsYXNzKGVsLCBjbGFzc05hbWUpIHsKICAgIHZhciByZSA9IG5ldyBSZWdFeHAoIlxcYiIgKyBlc2NhcGVSZWdFeHAoY2xhc3NOYW1lKSArICJcXGIiKTsKICAgIHJldHVybiByZS50ZXN0KGVsLmNsYXNzTmFtZSk7CiAgfQoKICAvLyBlbGVtZW50cyAtIGFycmF5IChvciBhcnJheS1saWtlIG9iamVjdCkgb2YgSFRNTCBlbGVtZW50cwogIC8vIGNsYXNzTmFtZSAtIGNsYXNzIG5hbWUgdG8gdGVzdCBmb3IKICAvLyBpbmNsdWRlIC0gaWYgdHJ1ZSwgb25seSByZXR1cm4gZWxlbWVudHMgd2l0aCBnaXZlbiBjbGFzc05hbWU7CiAgLy8gICBpZiBmYWxzZSwgb25seSByZXR1cm4gZWxlbWVudHMgKndpdGhvdXQqIGdpdmVuIGNsYXNzTmFtZQogIGZ1bmN0aW9uIGZpbHRlckJ5Q2xhc3MoZWxlbWVudHMsIGNsYXNzTmFtZSwgaW5jbHVkZSkgewogICAgdmFyIHJlc3VsdHMgPSBbXTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyBpKyspIHsKICAgICAgaWYgKGhhc0NsYXNzKGVsZW1lbnRzW2ldLCBjbGFzc05hbWUpID09IGluY2x1ZGUpCiAgICAgICAgcmVzdWx0cy5wdXNoKGVsZW1lbnRzW2ldKTsKICAgIH0KICAgIHJldHVybiByZXN1bHRzOwogIH0KCiAgZnVuY3Rpb24gb24ob2JqLCBldmVudE5hbWUsIGZ1bmMpIHsKICAgIGlmIChvYmouYWRkRXZlbnRMaXN0ZW5lcikgewogICAgICBvYmouYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGZ1bmMsIGZhbHNlKTsKICAgIH0gZWxzZSBpZiAob2JqLmF0dGFjaEV2ZW50KSB7CiAgICAgIG9iai5hdHRhY2hFdmVudChldmVudE5hbWUsIGZ1bmMpOwogICAgfQogIH0KCiAgZnVuY3Rpb24gb2ZmKG9iaiwgZXZlbnROYW1lLCBmdW5jKSB7CiAgICBpZiAob2JqLnJlbW92ZUV2ZW50TGlzdGVuZXIpCiAgICAgIG9iai5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgZnVuYywgZmFsc2UpOwogICAgZWxzZSBpZiAob2JqLmRldGFjaEV2ZW50KSB7CiAgICAgIG9iai5kZXRhY2hFdmVudChldmVudE5hbWUsIGZ1bmMpOwogICAgfQogIH0KCiAgLy8gVHJhbnNsYXRlIGFycmF5IG9mIHZhbHVlcyB0byB0b3AvcmlnaHQvYm90dG9tL2xlZnQsIGFzIHVzdWFsIHdpdGgKICAvLyB0aGUgInBhZGRpbmciIENTUyBwcm9wZXJ0eQogIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9wYWRkaW5nCiAgZnVuY3Rpb24gdW5wYWNrUGFkZGluZyh2YWx1ZSkgewogICAgaWYgKHR5cGVvZih2YWx1ZSkgPT09ICJudW1iZXIiKQogICAgICB2YWx1ZSA9IFt2YWx1ZV07CiAgICBpZiAodmFsdWUubGVuZ3RoID09PSAxKSB7CiAgICAgIHJldHVybiB7dG9wOiB2YWx1ZVswXSwgcmlnaHQ6IHZhbHVlWzBdLCBib3R0b206IHZhbHVlWzBdLCBsZWZ0OiB2YWx1ZVswXX07CiAgICB9CiAgICBpZiAodmFsdWUubGVuZ3RoID09PSAyKSB7CiAgICAgIHJldHVybiB7dG9wOiB2YWx1ZVswXSwgcmlnaHQ6IHZhbHVlWzFdLCBib3R0b206IHZhbHVlWzBdLCBsZWZ0OiB2YWx1ZVsxXX07CiAgICB9CiAgICBpZiAodmFsdWUubGVuZ3RoID09PSAzKSB7CiAgICAgIHJldHVybiB7dG9wOiB2YWx1ZVswXSwgcmlnaHQ6IHZhbHVlWzFdLCBib3R0b206IHZhbHVlWzJdLCBsZWZ0OiB2YWx1ZVsxXX07CiAgICB9CiAgICBpZiAodmFsdWUubGVuZ3RoID09PSA0KSB7CiAgICAgIHJldHVybiB7dG9wOiB2YWx1ZVswXSwgcmlnaHQ6IHZhbHVlWzFdLCBib3R0b206IHZhbHVlWzJdLCBsZWZ0OiB2YWx1ZVszXX07CiAgICB9CiAgfQoKICAvLyBDb252ZXJ0IGFuIHVucGFja2VkIHBhZGRpbmcgb2JqZWN0IHRvIGEgQ1NTIHZhbHVlCiAgZnVuY3Rpb24gcGFkZGluZ1RvQ3NzKHBhZGRpbmdPYmopIHsKICAgIHJldHVybiBwYWRkaW5nT2JqLnRvcCArICJweCAiICsgcGFkZGluZ09iai5yaWdodCArICJweCAiICsgcGFkZGluZ09iai5ib3R0b20gKyAicHggIiArIHBhZGRpbmdPYmoubGVmdCArICJweCI7CiAgfQoKICAvLyBNYWtlcyBhIG51bWJlciBzdWl0YWJsZSBmb3IgQ1NTCiAgZnVuY3Rpb24gcHgoeCkgewogICAgaWYgKHR5cGVvZih4KSA9PT0gIm51bWJlciIpCiAgICAgIHJldHVybiB4ICsgInB4IjsKICAgIGVsc2UKICAgICAgcmV0dXJuIHg7CiAgfQoKICAvLyBSZXRyaWV2ZXMgcnVudGltZSB3aWRnZXQgc2l6aW5nIGluZm9ybWF0aW9uIGZvciBhbiBlbGVtZW50LgogIC8vIFRoZSByZXR1cm4gdmFsdWUgaXMgZWl0aGVyIG51bGwsIG9yIGFuIG9iamVjdCB3aXRoIGZpbGwsIHBhZGRpbmcsCiAgLy8gZGVmYXVsdFdpZHRoLCBkZWZhdWx0SGVpZ2h0IGZpZWxkcy4KICBmdW5jdGlvbiBzaXppbmdQb2xpY3koZWwpIHsKICAgIHZhciBzaXppbmdFbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInNjcmlwdFtkYXRhLWZvcj0nIiArIGVsLmlkICsgIiddW3R5cGU9J2FwcGxpY2F0aW9uL2h0bWx3aWRnZXQtc2l6aW5nJ10iKTsKICAgIGlmICghc2l6aW5nRWwpCiAgICAgIHJldHVybiBudWxsOwogICAgdmFyIHNwID0gSlNPTi5wYXJzZShzaXppbmdFbC50ZXh0Q29udGVudCB8fCBzaXppbmdFbC50ZXh0IHx8ICJ7fSIpOwogICAgaWYgKHZpZXdlck1vZGUpIHsKICAgICAgcmV0dXJuIHNwLnZpZXdlcjsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBzcC5icm93c2VyOwogICAgfQogIH0KCiAgZnVuY3Rpb24gaW5pdFNpemluZyhlbCkgewogICAgdmFyIHNpemluZyA9IHNpemluZ1BvbGljeShlbCk7CiAgICBpZiAoIXNpemluZykKICAgICAgcmV0dXJuOwoKICAgIHZhciBjZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaHRtbHdpZGdldF9jb250YWluZXIiKTsKICAgIGlmICghY2VsKQogICAgICByZXR1cm47CgogICAgaWYgKHR5cGVvZihzaXppbmcucGFkZGluZykgIT09ICJ1bmRlZmluZWQiKSB7CiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUubWFyZ2luID0gIjAiOwogICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmcgPSBwYWRkaW5nVG9Dc3ModW5wYWNrUGFkZGluZyhzaXppbmcucGFkZGluZykpOwogICAgfQoKICAgIGlmIChzaXppbmcuZmlsbCkgewogICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gImhpZGRlbiI7CiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUud2lkdGggPSAiMTAwJSI7CiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuaGVpZ2h0ID0gIjEwMCUiOwogICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUud2lkdGggPSAiMTAwJSI7CiAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5oZWlnaHQgPSAiMTAwJSI7CiAgICAgIGlmIChjZWwpIHsKICAgICAgICBjZWwuc3R5bGUucG9zaXRpb24gPSAiYWJzb2x1dGUiOwogICAgICAgIHZhciBwYWQgPSB1bnBhY2tQYWRkaW5nKHNpemluZy5wYWRkaW5nKTsKICAgICAgICBjZWwuc3R5bGUudG9wID0gcGFkLnRvcCArICJweCI7CiAgICAgICAgY2VsLnN0eWxlLnJpZ2h0ID0gcGFkLnJpZ2h0ICsgInB4IjsKICAgICAgICBjZWwuc3R5bGUuYm90dG9tID0gcGFkLmJvdHRvbSArICJweCI7CiAgICAgICAgY2VsLnN0eWxlLmxlZnQgPSBwYWQubGVmdCArICJweCI7CiAgICAgICAgZWwuc3R5bGUud2lkdGggPSAiMTAwJSI7CiAgICAgICAgZWwuc3R5bGUuaGVpZ2h0ID0gIjEwMCUiOwogICAgICB9CgogICAgICByZXR1cm4gewogICAgICAgIGdldFdpZHRoOiBmdW5jdGlvbigpIHsgcmV0dXJuIGNlbC5vZmZzZXRXaWR0aDsgfSwKICAgICAgICBnZXRIZWlnaHQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gY2VsLm9mZnNldEhlaWdodDsgfQogICAgICB9OwoKICAgIH0gZWxzZSB7CiAgICAgIGVsLnN0eWxlLndpZHRoID0gcHgoc2l6aW5nLndpZHRoKTsKICAgICAgZWwuc3R5bGUuaGVpZ2h0ID0gcHgoc2l6aW5nLmhlaWdodCk7CgogICAgICByZXR1cm4gewogICAgICAgIGdldFdpZHRoOiBmdW5jdGlvbigpIHsgcmV0dXJuIGVsLm9mZnNldFdpZHRoOyB9LAogICAgICAgIGdldEhlaWdodDogZnVuY3Rpb24oKSB7IHJldHVybiBlbC5vZmZzZXRIZWlnaHQ7IH0KICAgICAgfTsKICAgIH0KICB9CgogIC8vIERlZmF1bHQgaW1wbGVtZW50YXRpb25zIGZvciBtZXRob2RzCiAgdmFyIGRlZmF1bHRzID0gewogICAgZmluZDogZnVuY3Rpb24oc2NvcGUpIHsKICAgICAgcmV0dXJuIHF1ZXJ5U2VsZWN0b3JBbGwoc2NvcGUsICIuIiArIHRoaXMubmFtZSk7CiAgICB9LAogICAgcmVuZGVyRXJyb3I6IGZ1bmN0aW9uKGVsLCBlcnIpIHsKICAgICAgdmFyICRlbCA9ICQoZWwpOwoKICAgICAgdGhpcy5jbGVhckVycm9yKGVsKTsKCiAgICAgIC8vIEFkZCBhbGwgdGhlc2UgZXJyb3IgY2xhc3NlcywgYXMgU2hpbnkgZG9lcwogICAgICB2YXIgZXJyQ2xhc3MgPSAic2hpbnktb3V0cHV0LWVycm9yIjsKICAgICAgaWYgKGVyci50eXBlICE9PSBudWxsKSB7CiAgICAgICAgLy8gdXNlIHRoZSBjbGFzc2VzIG9mIHRoZSBlcnJvciBjb25kaXRpb24gYXMgQ1NTIGNsYXNzIG5hbWVzCiAgICAgICAgZXJyQ2xhc3MgPSBlcnJDbGFzcyArICIgIiArICQubWFwKGFzQXJyYXkoZXJyLnR5cGUpLCBmdW5jdGlvbih0eXBlKSB7CiAgICAgICAgICByZXR1cm4gZXJyQ2xhc3MgKyAiLSIgKyB0eXBlOwogICAgICAgIH0pLmpvaW4oIiAiKTsKICAgICAgfQogICAgICBlcnJDbGFzcyA9IGVyckNsYXNzICsgIiBodG1sd2lkZ2V0cy1lcnJvciI7CgogICAgICAvLyBJcyBlbCBpbmxpbmUgb3IgYmxvY2s/IElmIGlubGluZSBvciBpbmxpbmUtYmxvY2ssIGp1c3QgZGlzcGxheTpub25lIGl0CiAgICAgIC8vIGFuZCBhZGQgYW4gaW5saW5lIGVycm9yLgogICAgICB2YXIgZGlzcGxheSA9ICRlbC5jc3MoImRpc3BsYXkiKTsKICAgICAgJGVsLmRhdGEoInJlc3RvcmUtZGlzcGxheS1tb2RlIiwgZGlzcGxheSk7CgogICAgICBpZiAoZGlzcGxheSA9PT0gImlubGluZSIgfHwgZGlzcGxheSA9PT0gImlubGluZS1ibG9jayIpIHsKICAgICAgICAkZWwuaGlkZSgpOwogICAgICAgIGlmIChlcnIubWVzc2FnZSAhPT0gIiIpIHsKICAgICAgICAgIHZhciBlcnJvclNwYW4gPSAkKCI8c3Bhbj4iKS5hZGRDbGFzcyhlcnJDbGFzcyk7CiAgICAgICAgICBlcnJvclNwYW4udGV4dChlcnIubWVzc2FnZSk7CiAgICAgICAgICAkZWwuYWZ0ZXIoZXJyb3JTcGFuKTsKICAgICAgICB9CiAgICAgIH0gZWxzZSBpZiAoZGlzcGxheSA9PT0gImJsb2NrIikgewogICAgICAgIC8vIElmIGJsb2NrLCBhZGQgYW4gZXJyb3IganVzdCBhZnRlciB0aGUgZWwsIHNldCB2aXNpYmlsaXR5Om5vbmUgb24gdGhlCiAgICAgICAgLy8gZWwsIGFuZCBwb3NpdGlvbiB0aGUgZXJyb3IgdG8gYmUgb24gdG9wIG9mIHRoZSBlbC4KICAgICAgICAvLyBNYXJrIGl0IHdpdGggYSB1bmlxdWUgSUQgYW5kIENTUyBjbGFzcyBzbyB3ZSBjYW4gcmVtb3ZlIGl0IGxhdGVyLgogICAgICAgICRlbC5jc3MoInZpc2liaWxpdHkiLCAiaGlkZGVuIik7CiAgICAgICAgaWYgKGVyci5tZXNzYWdlICE9PSAiIikgewogICAgICAgICAgdmFyIGVycm9yRGl2ID0gJCgiPGRpdj4iKS5hZGRDbGFzcyhlcnJDbGFzcykuY3NzKCJwb3NpdGlvbiIsICJhYnNvbHV0ZSIpCiAgICAgICAgICAgIC5jc3MoInRvcCIsIGVsLm9mZnNldFRvcCkKICAgICAgICAgICAgLmNzcygibGVmdCIsIGVsLm9mZnNldExlZnQpCiAgICAgICAgICAgIC8vIHNldHRpbmcgd2lkdGggY2FuIHB1c2ggb3V0IHRoZSBwYWdlIHNpemUsIGZvcmNpbmcgb3RoZXJ3aXNlCiAgICAgICAgICAgIC8vIHVubmVjZXNzYXJ5IHNjcm9sbGJhcnMgdG8gYXBwZWFyIGFuZCBtYWtpbmcgaXQgaW1wb3NzaWJsZSBmb3IKICAgICAgICAgICAgLy8gdGhlIGVsZW1lbnQgdG8gc2hyaW5rOyBzbyB1c2UgbWF4LXdpZHRoIGluc3RlYWQKICAgICAgICAgICAgLmNzcygibWF4V2lkdGgiLCBlbC5vZmZzZXRXaWR0aCkKICAgICAgICAgICAgLmNzcygiaGVpZ2h0IiwgZWwub2Zmc2V0SGVpZ2h0KTsKICAgICAgICAgIGVycm9yRGl2LnRleHQoZXJyLm1lc3NhZ2UpOwogICAgICAgICAgJGVsLmFmdGVyKGVycm9yRGl2KTsKCiAgICAgICAgICAvLyBSZWFsbHkgZHVtYiB3YXkgdG8ga2VlcCB0aGUgc2l6ZS9wb3NpdGlvbiBvZiB0aGUgZXJyb3IgaW4gc3luYyB3aXRoCiAgICAgICAgICAvLyB0aGUgcGFyZW50IGVsZW1lbnQgYXMgdGhlIHdpbmRvdyBpcyByZXNpemVkIG9yIHdoYXRldmVyLgogICAgICAgICAgdmFyIGludElkID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGlmICghZXJyb3JEaXZbMF0ucGFyZW50RWxlbWVudCkgewogICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50SWQpOwogICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICBlcnJvckRpdgogICAgICAgICAgICAgIC5jc3MoInRvcCIsIGVsLm9mZnNldFRvcCkKICAgICAgICAgICAgICAuY3NzKCJsZWZ0IiwgZWwub2Zmc2V0TGVmdCkKICAgICAgICAgICAgICAuY3NzKCJtYXhXaWR0aCIsIGVsLm9mZnNldFdpZHRoKQogICAgICAgICAgICAgIC5jc3MoImhlaWdodCIsIGVsLm9mZnNldEhlaWdodCk7CiAgICAgICAgICB9LCA1MDApOwogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgIGNsZWFyRXJyb3I6IGZ1bmN0aW9uKGVsKSB7CiAgICAgIHZhciAkZWwgPSAkKGVsKTsKICAgICAgdmFyIGRpc3BsYXkgPSAkZWwuZGF0YSgicmVzdG9yZS1kaXNwbGF5LW1vZGUiKTsKICAgICAgJGVsLmRhdGEoInJlc3RvcmUtZGlzcGxheS1tb2RlIiwgbnVsbCk7CgogICAgICBpZiAoZGlzcGxheSA9PT0gImlubGluZSIgfHwgZGlzcGxheSA9PT0gImlubGluZS1ibG9jayIpIHsKICAgICAgICBpZiAoZGlzcGxheSkKICAgICAgICAgICRlbC5jc3MoImRpc3BsYXkiLCBkaXNwbGF5KTsKICAgICAgICAkKGVsLm5leHRTaWJsaW5nKS5maWx0ZXIoIi5odG1sd2lkZ2V0cy1lcnJvciIpLnJlbW92ZSgpOwogICAgICB9IGVsc2UgaWYgKGRpc3BsYXkgPT09ICJibG9jayIpewogICAgICAgICRlbC5jc3MoInZpc2liaWxpdHkiLCAiaW5oZXJpdCIpOwogICAgICAgICQoZWwubmV4dFNpYmxpbmcpLmZpbHRlcigiLmh0bWx3aWRnZXRzLWVycm9yIikucmVtb3ZlKCk7CiAgICAgIH0KICAgIH0sCiAgICBzaXppbmc6IHt9CiAgfTsKCiAgLy8gQ2FsbGVkIGJ5IHdpZGdldCBiaW5kaW5ncyB0byByZWdpc3RlciBhIG5ldyB0eXBlIG9mIHdpZGdldC4gVGhlIGRlZmluaXRpb24KICAvLyBvYmplY3QgY2FuIGNvbnRhaW4gdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgogIC8vIC0gbmFtZSAocmVxdWlyZWQpIC0gQSBzdHJpbmcgaW5kaWNhdGluZyB0aGUgYmluZGluZyBuYW1lLCB3aGljaCB3aWxsIGJlCiAgLy8gICB1c2VkIGJ5IGRlZmF1bHQgYXMgdGhlIENTUyBjbGFzc25hbWUgdG8gbG9vayBmb3IuCiAgLy8gLSBpbml0aWFsaXplIChvcHRpb25hbCkgLSBBIGZ1bmN0aW9uKGVsKSB0aGF0IHdpbGwgYmUgY2FsbGVkIG9uY2UgcGVyCiAgLy8gICB3aWRnZXQgZWxlbWVudDsgaWYgYSB2YWx1ZSBpcyByZXR1cm5lZCwgaXQgd2lsbCBiZSBwYXNzZWQgYXMgdGhlIHRoaXJkCiAgLy8gICB2YWx1ZSB0byByZW5kZXJWYWx1ZS4KICAvLyAtIHJlbmRlclZhbHVlIChyZXF1aXJlZCkgLSBBIGZ1bmN0aW9uKGVsLCBkYXRhLCBpbml0VmFsdWUpIHRoYXQgd2lsbCBiZQogIC8vICAgY2FsbGVkIHdpdGggZGF0YS4gU3RhdGljIGNvbnRleHRzIHdpbGwgY2F1c2UgdGhpcyB0byBiZSBjYWxsZWQgb25jZSBwZXIKICAvLyAgIGVsZW1lbnQ7IFNoaW55IGFwcHMgd2lsbCBjYXVzZSB0aGlzIHRvIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBwZXIKICAvLyAgIGVsZW1lbnQsIGFzIHRoZSBkYXRhIGNoYW5nZXMuCiAgd2luZG93LkhUTUxXaWRnZXRzLndpZGdldCA9IGZ1bmN0aW9uKGRlZmluaXRpb24pIHsKICAgIGlmICghZGVmaW5pdGlvbi5uYW1lKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigiV2lkZ2V0IG11c3QgaGF2ZSBhIG5hbWUiKTsKICAgIH0KICAgIGlmICghZGVmaW5pdGlvbi50eXBlKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigiV2lkZ2V0IG11c3QgaGF2ZSBhIHR5cGUiKTsKICAgIH0KICAgIC8vIEN1cnJlbnRseSB3ZSBvbmx5IHN1cHBvcnQgb3V0cHV0IHdpZGdldHMKICAgIGlmIChkZWZpbml0aW9uLnR5cGUgIT09ICJvdXRwdXQiKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIHdpZGdldCB0eXBlICciICsgZGVmaW5pdGlvbi50eXBlICsgIiciKTsKICAgIH0KICAgIC8vIFRPRE86IFZlcmlmeSB0aGF0IC5uYW1lIGlzIGEgdmFsaWQgQ1NTIGNsYXNzbmFtZQogICAgaWYgKCFkZWZpbml0aW9uLnJlbmRlclZhbHVlKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigiV2lkZ2V0IG11c3QgaGF2ZSBhIHJlbmRlclZhbHVlIGZ1bmN0aW9uIik7CiAgICB9CgogICAgLy8gRm9yIHN0YXRpYyByZW5kZXJpbmcgKG5vbi1TaGlueSksIHVzZSBhIHNpbXBsZSB3aWRnZXQgcmVnaXN0cmF0aW9uCiAgICAvLyBzY2hlbWUuIFdlIGFsc28gdXNlIHRoaXMgc2NoZW1lIGZvciBTaGlueSBhcHBzL2RvY3VtZW50cyB0aGF0IGFsc28KICAgIC8vIGNvbnRhaW4gc3RhdGljIHdpZGdldHMuCiAgICB3aW5kb3cuSFRNTFdpZGdldHMud2lkZ2V0cyA9IHdpbmRvdy5IVE1MV2lkZ2V0cy53aWRnZXRzIHx8IFtdOwogICAgLy8gTWVyZ2UgZGVmYXVsdHMgaW50byB0aGUgZGVmaW5pdGlvbjsgZG9uJ3QgbXV0YXRlIHRoZSBvcmlnaW5hbCBkZWZpbml0aW9uLgogICAgdmFyIHN0YXRpY0JpbmRpbmcgPSBleHRlbmQoe30sIGRlZmF1bHRzLCBkZWZpbml0aW9uKTsKICAgIG92ZXJyaWRlTWV0aG9kKHN0YXRpY0JpbmRpbmcsICJmaW5kIiwgZnVuY3Rpb24oc3VwZXJmdW5jKSB7CiAgICAgIHJldHVybiBmdW5jdGlvbihzY29wZSkgewogICAgICAgIHZhciByZXN1bHRzID0gc3VwZXJmdW5jKHNjb3BlKTsKICAgICAgICAvLyBGaWx0ZXIgb3V0IFNoaW55IG91dHB1dHMsIHdlIG9ubHkgd2FudCB0aGUgc3RhdGljIGtpbmQKICAgICAgICByZXR1cm4gZmlsdGVyQnlDbGFzcyhyZXN1bHRzLCAiaHRtbC13aWRnZXQtb3V0cHV0IiwgZmFsc2UpOwogICAgICB9OwogICAgfSk7CiAgICB3aW5kb3cuSFRNTFdpZGdldHMud2lkZ2V0cy5wdXNoKHN0YXRpY0JpbmRpbmcpOwoKICAgIGlmIChzaGlueU1vZGUpIHsKICAgICAgLy8gU2hpbnkgaXMgcnVubmluZy4gUmVnaXN0ZXIgdGhlIGRlZmluaXRpb24gYXMgYW4gb3V0cHV0IGJpbmRpbmcuCgogICAgICAvLyBNZXJnZSBkZWZhdWx0cyBpbnRvIHRoZSBkZWZpbml0aW9uOyBkb24ndCBtdXRhdGUgdGhlIG9yaWdpbmFsIGRlZmluaXRpb24uCiAgICAgIC8vIFRoZSBiYXNlIG9iamVjdCBpcyBhIFNoaW55IG91dHB1dCBiaW5kaW5nIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gU2hpbnkgbW9kZSwKICAgICAgLy8gb3IgYW4gZW1wdHkgb2JqZWN0IGlmIHdlJ3JlIG5vdC4KICAgICAgdmFyIHNoaW55QmluZGluZyA9IGV4dGVuZChuZXcgU2hpbnkuT3V0cHV0QmluZGluZygpLCBkZWZhdWx0cywgZGVmaW5pdGlvbik7CgogICAgICAvLyBXcmFwIHJlbmRlclZhbHVlIHRvIGhhbmRsZSBpbml0aWFsaXphdGlvbiwgd2hpY2ggdW5mb3J0dW5hdGVseSBpc24ndAogICAgICAvLyBzdXBwb3J0ZWQgbmF0aXZlbHkgYnkgU2hpbnkgYXQgdGhlIHRpbWUgb2YgdGhpcyB3cml0aW5nLgoKICAgICAgLy8gTkI6IHNoaW55QmluZGluZy5pbml0aWFsaXplIG1heSBiZSB1bmRlZmluZWQsIGFzIGl0J3Mgb3B0aW9uYWwuCgogICAgICAvLyBSZW5hbWUgaW5pdGlhbGl6ZSB0byBtYWtlIHN1cmUgaXQgaXNuJ3QgY2FsbGVkIGJ5IGEgZnV0dXJlIHZlcnNpb24KICAgICAgLy8gb2YgU2hpbnkgdGhhdCBkb2VzIHN1cHBvcnQgaW5pdGlhbGl6ZSBkaXJlY3RseS4KICAgICAgc2hpbnlCaW5kaW5nLl9odG1sd2lkZ2V0c19pbml0aWFsaXplID0gc2hpbnlCaW5kaW5nLmluaXRpYWxpemU7CiAgICAgIGRlbGV0ZSBzaGlueUJpbmRpbmcuaW5pdGlhbGl6ZTsKCiAgICAgIG92ZXJyaWRlTWV0aG9kKHNoaW55QmluZGluZywgImZpbmQiLCBmdW5jdGlvbihzdXBlcmZ1bmMpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24oc2NvcGUpIHsKCiAgICAgICAgICB2YXIgcmVzdWx0cyA9IHN1cGVyZnVuYyhzY29wZSk7CgogICAgICAgICAgLy8gT25seSByZXR1cm4gZWxlbWVudHMgdGhhdCBhcmUgU2hpbnkgb3V0cHV0cywgbm90IHN0YXRpYyBvbmVzCiAgICAgICAgICB2YXIgZHluYW1pY1Jlc3VsdHMgPSByZXN1bHRzLmZpbHRlcigiLmh0bWwtd2lkZ2V0LW91dHB1dCIpOwoKICAgICAgICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCB3aGF0ZXZlciBjYXVzZWQgU2hpbnkgdG8gdGhpbmsgdGhlcmUgbWlnaHQgYmUKICAgICAgICAgIC8vIG5ldyBkeW5hbWljIG91dHB1dHMsIGFsc28gY2F1c2VkIHRoZXJlIHRvIGJlIG5ldyBzdGF0aWMgb3V0cHV0cy4KICAgICAgICAgIC8vIFNpbmNlIHRoZXJlIG1pZ2h0IGJlIGxvdHMgb2YgZGlmZmVyZW50IGh0bWx3aWRnZXRzIGJpbmRpbmdzLCB3ZQogICAgICAgICAgLy8gc2NoZWR1bGUgZXhlY3V0aW9uIGZvciBsYXRlci0tbm8gbmVlZCB0byBzdGF0aWNSZW5kZXIgbXVsdGlwbGUKICAgICAgICAgIC8vIHRpbWVzLgogICAgICAgICAgaWYgKHJlc3VsdHMubGVuZ3RoICE9PSBkeW5hbWljUmVzdWx0cy5sZW5ndGgpCiAgICAgICAgICAgIHNjaGVkdWxlU3RhdGljUmVuZGVyKCk7CgogICAgICAgICAgcmV0dXJuIGR5bmFtaWNSZXN1bHRzOwogICAgICAgIH07CiAgICAgIH0pOwoKICAgICAgb3ZlcnJpZGVNZXRob2Qoc2hpbnlCaW5kaW5nLCAicmVuZGVyVmFsdWUiLCBmdW5jdGlvbihzdXBlcmZ1bmMpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24oZWwsIGRhdGEpIHsKICAgICAgICAgIC8vIFJlc29sdmUgc3RyaW5ncyBtYXJrZWQgYXMgamF2YXNjcmlwdCBsaXRlcmFscyB0byBvYmplY3RzCiAgICAgICAgICBpZiAoIShkYXRhLmV2YWxzIGluc3RhbmNlb2YgQXJyYXkpKSBkYXRhLmV2YWxzID0gW2RhdGEuZXZhbHNdOwogICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGRhdGEuZXZhbHMgJiYgaSA8IGRhdGEuZXZhbHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgd2luZG93LkhUTUxXaWRnZXRzLmV2YWx1YXRlU3RyaW5nTWVtYmVyKGRhdGEueCwgZGF0YS5ldmFsc1tpXSk7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoIXRoaXMucmVuZGVyT25OdWxsVmFsdWUpIHsKICAgICAgICAgICAgaWYgKGRhdGEueCA9PT0gbnVsbCkgewogICAgICAgICAgICAgIGVsLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgZWwuc3R5bGUudmlzaWJpbGl0eSA9ICJpbmhlcml0IjsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgaWYgKCFlbGVtZW50RGF0YShlbCwgImluaXRpYWxpemVkIikpIHsKICAgICAgICAgICAgaW5pdFNpemluZyhlbCk7CgogICAgICAgICAgICBlbGVtZW50RGF0YShlbCwgImluaXRpYWxpemVkIiwgdHJ1ZSk7CiAgICAgICAgICAgIGlmICh0aGlzLl9odG1sd2lkZ2V0c19pbml0aWFsaXplKSB7CiAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXMuX2h0bWx3aWRnZXRzX2luaXRpYWxpemUoZWwsIGVsLm9mZnNldFdpZHRoLAogICAgICAgICAgICAgICAgZWwub2Zmc2V0SGVpZ2h0KTsKICAgICAgICAgICAgICBlbGVtZW50RGF0YShlbCwgImluaXRfcmVzdWx0IiwgcmVzdWx0KTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgU2hpbnkucmVuZGVyRGVwZW5kZW5jaWVzKGRhdGEuZGVwcyk7CiAgICAgICAgICBzdXBlcmZ1bmMoZWwsIGRhdGEueCwgZWxlbWVudERhdGEoZWwsICJpbml0X3Jlc3VsdCIpKTsKICAgICAgICB9OwogICAgICB9KTsKCiAgICAgIG92ZXJyaWRlTWV0aG9kKHNoaW55QmluZGluZywgInJlc2l6ZSIsIGZ1bmN0aW9uKHN1cGVyZnVuYykgewogICAgICAgIHJldHVybiBmdW5jdGlvbihlbCwgd2lkdGgsIGhlaWdodCkgewogICAgICAgICAgLy8gU2hpbnkgY2FuIGNhbGwgcmVzaXplIGJlZm9yZSBpbml0aWFsaXplL3JlbmRlclZhbHVlIGhhdmUgYmVlbgogICAgICAgICAgLy8gY2FsbGVkLCB3aGljaCBkb2Vzbid0IG1ha2Ugc2Vuc2UgZm9yIHdpZGdldHMuCiAgICAgICAgICBpZiAoZWxlbWVudERhdGEoZWwsICJpbml0aWFsaXplZCIpKSB7CiAgICAgICAgICAgIHN1cGVyZnVuYyhlbCwgd2lkdGgsIGhlaWdodCwgZWxlbWVudERhdGEoZWwsICJpbml0X3Jlc3VsdCIpKTsKICAgICAgICAgIH0KICAgICAgICB9OwogICAgICB9KTsKCiAgICAgIFNoaW55Lm91dHB1dEJpbmRpbmdzLnJlZ2lzdGVyKHNoaW55QmluZGluZywgc2hpbnlCaW5kaW5nLm5hbWUpOwogICAgfQogIH07CgogIHZhciBzY2hlZHVsZVN0YXRpY1JlbmRlclRpbWVySWQgPSBudWxsOwogIGZ1bmN0aW9uIHNjaGVkdWxlU3RhdGljUmVuZGVyKCkgewogICAgaWYgKCFzY2hlZHVsZVN0YXRpY1JlbmRlclRpbWVySWQpIHsKICAgICAgc2NoZWR1bGVTdGF0aWNSZW5kZXJUaW1lcklkID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICBzY2hlZHVsZVN0YXRpY1JlbmRlclRpbWVySWQgPSBudWxsOwogICAgICAgIHdpbmRvdy5IVE1MV2lkZ2V0cy5zdGF0aWNSZW5kZXIoKTsKICAgICAgfSwgMSk7CiAgICB9CiAgfQoKICAvLyBSZW5kZXIgc3RhdGljIHdpZGdldHMgYWZ0ZXIgdGhlIGRvY3VtZW50IGZpbmlzaGVzIGxvYWRpbmcKICAvLyBTdGF0aWNhbGx5IHJlbmRlciBhbGwgZWxlbWVudHMgdGhhdCBhcmUgb2YgdGhpcyB3aWRnZXQncyBjbGFzcwogIHdpbmRvdy5IVE1MV2lkZ2V0cy5zdGF0aWNSZW5kZXIgPSBmdW5jdGlvbigpIHsKICAgIHZhciBiaW5kaW5ncyA9IHdpbmRvdy5IVE1MV2lkZ2V0cy53aWRnZXRzIHx8IFtdOwogICAgZm9yRWFjaChiaW5kaW5ncywgZnVuY3Rpb24oYmluZGluZykgewogICAgICB2YXIgbWF0Y2hlcyA9IGJpbmRpbmcuZmluZChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpOwogICAgICBmb3JFYWNoKG1hdGNoZXMsIGZ1bmN0aW9uKGVsKSB7CiAgICAgICAgdmFyIHNpemVPYmogPSBpbml0U2l6aW5nKGVsLCBiaW5kaW5nKTsKCiAgICAgICAgaWYgKGhhc0NsYXNzKGVsLCAiaHRtbC13aWRnZXQtc3RhdGljLWJvdW5kIikpCiAgICAgICAgICByZXR1cm47CiAgICAgICAgZWwuY2xhc3NOYW1lID0gZWwuY2xhc3NOYW1lICsgIiBodG1sLXdpZGdldC1zdGF0aWMtYm91bmQiOwoKICAgICAgICB2YXIgaW5pdFJlc3VsdDsKICAgICAgICBpZiAoYmluZGluZy5pbml0aWFsaXplKSB7CiAgICAgICAgICBpbml0UmVzdWx0ID0gYmluZGluZy5pbml0aWFsaXplKGVsLAogICAgICAgICAgICBzaXplT2JqID8gc2l6ZU9iai5nZXRXaWR0aCgpIDogZWwub2Zmc2V0V2lkdGgsCiAgICAgICAgICAgIHNpemVPYmogPyBzaXplT2JqLmdldEhlaWdodCgpIDogZWwub2Zmc2V0SGVpZ2h0CiAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgaWYgKGJpbmRpbmcucmVzaXplKSB7CiAgICAgICAgICB2YXIgbGFzdFNpemUgPSB7fTsKICAgICAgICAgIHZhciByZXNpemVIYW5kbGVyID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgc2l6ZSA9IHsKICAgICAgICAgICAgICB3OiBzaXplT2JqID8gc2l6ZU9iai5nZXRXaWR0aCgpIDogZWwub2Zmc2V0V2lkdGgsCiAgICAgICAgICAgICAgaDogc2l6ZU9iaiA/IHNpemVPYmouZ2V0SGVpZ2h0KCkgOiBlbC5vZmZzZXRIZWlnaHQKICAgICAgICAgICAgfTsKICAgICAgICAgICAgaWYgKHNpemUudyA9PT0gMCAmJiBzaXplLmggPT09IDApCiAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICBpZiAoc2l6ZS53ID09PSBsYXN0U2l6ZS53ICYmIHNpemUuaCA9PT0gbGFzdFNpemUuaCkKICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIGxhc3RTaXplID0gc2l6ZTsKICAgICAgICAgICAgYmluZGluZy5yZXNpemUoZWwsIHNpemUudywgc2l6ZS5oLCBpbml0UmVzdWx0KTsKICAgICAgICAgIH07CgogICAgICAgICAgb24od2luZG93LCAicmVzaXplIiwgcmVzaXplSGFuZGxlcik7CgogICAgICAgICAgLy8gVGhpcyBpcyBuZWVkZWQgZm9yIGNhc2VzIHdoZXJlIHdlJ3JlIHJ1bm5pbmcgaW4gYSBTaGlueQogICAgICAgICAgLy8gYXBwLCBidXQgdGhlIHdpZGdldCBpdHNlbGYgaXMgbm90IGEgU2hpbnkgb3V0cHV0LCBidXQKICAgICAgICAgIC8vIHJhdGhlciBhIHNpbXBsZSBzdGF0aWMgd2lkZ2V0LiBPbmUgZXhhbXBsZSBvZiB0aGlzIGlzCiAgICAgICAgICAvLyBhbiBybWFya2Rvd24gZG9jdW1lbnQgdGhhdCBoYXMgcnVudGltZTpzaGlueSBhbmQgd2lkZ2V0CiAgICAgICAgICAvLyB0aGF0IGlzbid0IGluIGEgcmVuZGVyIGZ1bmN0aW9uLiBTaGlueSBvbmx5IGtub3dzIHRvCiAgICAgICAgICAvLyBjYWxsIHJlc2l6ZSBoYW5kbGVycyBmb3IgU2hpbnkgb3V0cHV0cywgbm90IGZvciBzdGF0aWMKICAgICAgICAgIC8vIHdpZGdldHMsIHNvIHdlIGRvIGl0IG91cnNlbHZlcy4KICAgICAgICAgIGlmICh3aW5kb3cualF1ZXJ5KSB7CiAgICAgICAgICAgIHdpbmRvdy5qUXVlcnkoZG9jdW1lbnQpLm9uKCJzaG93biIsIHJlc2l6ZUhhbmRsZXIpOwogICAgICAgICAgICB3aW5kb3cualF1ZXJ5KGRvY3VtZW50KS5vbigiaGlkZGVuIiwgcmVzaXplSGFuZGxlcik7CiAgICAgICAgICB9CgogICAgICAgICAgLy8gVGhpcyBpcyBuZWVkZWQgZm9yIHRoZSBzcGVjaWZpYyBjYXNlIG9mIGlvc2xpZGVzLCB3aGljaAogICAgICAgICAgLy8gZmxpcHMgc2xpZGVzIGJldHdlZW4gZGlzcGxheTpub25lIGFuZCBkaXNwbGF5OmJsb2NrLgogICAgICAgICAgLy8gSWRlYWxseSB3ZSB3b3VsZCBub3QgaGF2ZSB0byBoYXZlIGlvc2xpZGUtc3BlY2lmaWMgY29kZQogICAgICAgICAgLy8gaGVyZSwgYnV0IHJhdGhlciBoYXZlIGlvc2xpZGVzIHJhaXNlIGEgZ2VuZXJpYyBldmVudCwKICAgICAgICAgIC8vIGJ1dCB0aGUgcm1hcmtkb3duIHBhY2thZ2UganVzdCB3ZW50IHRvIENSQU4gc28gdGhlCiAgICAgICAgICAvLyB3aW5kb3cgdG8gZ2V0dGluZyB0aGF0IGZpeGVkIG1heSBiZSBsb25nLgogICAgICAgICAgaWYgKHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKSB7CiAgICAgICAgICAgIC8vIEl0J3MgT0sgdG8gbGltaXQgdGhpcyB0byB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcgogICAgICAgICAgICAvLyBicm93c2VycyBiZWNhdXNlIGlvc2xpZGVzIGl0c2VsZiBvbmx5IHN1cHBvcnRzCiAgICAgICAgICAgIC8vIHN1Y2ggYnJvd3NlcnMuCiAgICAgICAgICAgIG9uKGRvY3VtZW50LCAic2xpZGVlbnRlciIsIHJlc2l6ZUhhbmRsZXIpOwogICAgICAgICAgICBvbihkb2N1bWVudCwgInNsaWRlbGVhdmUiLCByZXNpemVIYW5kbGVyKTsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHZhciBzY3JpcHREYXRhID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic2NyaXB0W2RhdGEtZm9yPSciICsgZWwuaWQgKyAiJ11bdHlwZT0nYXBwbGljYXRpb24vanNvbiddIik7CiAgICAgICAgaWYgKHNjcmlwdERhdGEpIHsKICAgICAgICAgIHZhciBkYXRhID0gSlNPTi5wYXJzZShzY3JpcHREYXRhLnRleHRDb250ZW50IHx8IHNjcmlwdERhdGEudGV4dCk7CiAgICAgICAgICAvLyBSZXNvbHZlIHN0cmluZ3MgbWFya2VkIGFzIGphdmFzY3JpcHQgbGl0ZXJhbHMgdG8gb2JqZWN0cwogICAgICAgICAgaWYgKCEoZGF0YS5ldmFscyBpbnN0YW5jZW9mIEFycmF5KSkgZGF0YS5ldmFscyA9IFtkYXRhLmV2YWxzXTsKICAgICAgICAgIGZvciAodmFyIGsgPSAwOyBkYXRhLmV2YWxzICYmIGsgPCBkYXRhLmV2YWxzLmxlbmd0aDsgaysrKSB7CiAgICAgICAgICAgIHdpbmRvdy5IVE1MV2lkZ2V0cy5ldmFsdWF0ZVN0cmluZ01lbWJlcihkYXRhLngsIGRhdGEuZXZhbHNba10pOwogICAgICAgICAgfQogICAgICAgICAgYmluZGluZy5yZW5kZXJWYWx1ZShlbCwgZGF0YS54LCBpbml0UmVzdWx0KTsKICAgICAgICB9CiAgICAgIH0pOwogICAgfSk7CiAgfQoKICAvLyBXYWl0IHVudGlsIGFmdGVyIHRoZSBkb2N1bWVudCBoYXMgbG9hZGVkIHRvIHJlbmRlciB0aGUgd2lkZ2V0cy4KICBpZiAoZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcikgewogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGZ1bmN0aW9uKCkgewogICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgYXJndW1lbnRzLmNhbGxlZSwgZmFsc2UpOwogICAgICB3aW5kb3cuSFRNTFdpZGdldHMuc3RhdGljUmVuZGVyKCk7CiAgICB9LCBmYWxzZSk7CiAgfSBlbHNlIGlmIChkb2N1bWVudC5hdHRhY2hFdmVudCkgewogICAgZG9jdW1lbnQuYXR0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsIGZ1bmN0aW9uKCkgewogICAgICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gImNvbXBsZXRlIikgewogICAgICAgIGRvY3VtZW50LmRldGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCBhcmd1bWVudHMuY2FsbGVlKTsKICAgICAgICB3aW5kb3cuSFRNTFdpZGdldHMuc3RhdGljUmVuZGVyKCk7CiAgICAgIH0KICAgIH0pOwogIH0KCgogIHdpbmRvdy5IVE1MV2lkZ2V0cy5nZXRBdHRhY2htZW50VXJsID0gZnVuY3Rpb24oZGVwbmFtZSwga2V5KSB7CiAgICAvLyBJZiBubyBrZXksIGRlZmF1bHQgdG8gdGhlIGZpcnN0IGl0ZW0KICAgIGlmICh0eXBlb2Yoa2V5KSA9PT0gInVuZGVmaW5lZCIpCiAgICAgIGtleSA9IDE7CgogICAgdmFyIGxpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChkZXBuYW1lICsgIi0iICsga2V5ICsgIi1hdHRhY2htZW50Iik7CiAgICBpZiAoIWxpbmspIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCJBdHRhY2htZW50ICIgKyBkZXBuYW1lICsgIi8iICsga2V5ICsgIiBub3QgZm91bmQgaW4gZG9jdW1lbnQiKTsKICAgIH0KICAgIHJldHVybiBsaW5rLmdldEF0dHJpYnV0ZSgiaHJlZiIpOwogIH07CgogIHdpbmRvdy5IVE1MV2lkZ2V0cy5kYXRhZnJhbWVUb0QzID0gZnVuY3Rpb24oZGYpIHsKICAgIHZhciBuYW1lcyA9IFtdOwogICAgdmFyIGxlbmd0aDsKICAgIGZvciAodmFyIG5hbWUgaW4gZGYpIHsKICAgICAgICBpZiAoZGYuaGFzT3duUHJvcGVydHkobmFtZSkpCiAgICAgICAgICAgIG5hbWVzLnB1c2gobmFtZSk7CiAgICAgICAgaWYgKHR5cGVvZihkZltuYW1lXSkgIT09ICJvYmplY3QiIHx8IHR5cGVvZihkZltuYW1lXS5sZW5ndGgpID09PSAidW5kZWZpbmVkIikgewogICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkFsbCBmaWVsZHMgbXVzdCBiZSBhcnJheXMiKTsKICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZihsZW5ndGgpICE9PSAidW5kZWZpbmVkIiAmJiBsZW5ndGggIT09IGRmW25hbWVdLmxlbmd0aCkgewogICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkFsbCBmaWVsZHMgbXVzdCBiZSBhcnJheXMgb2YgdGhlIHNhbWUgbGVuZ3RoIik7CiAgICAgICAgfQogICAgICAgIGxlbmd0aCA9IGRmW25hbWVdLmxlbmd0aDsKICAgIH0KICAgIHZhciByZXN1bHRzID0gW107CiAgICB2YXIgaXRlbTsKICAgIGZvciAodmFyIHJvdyA9IDA7IHJvdyA8IGxlbmd0aDsgcm93KyspIHsKICAgICAgICBpdGVtID0ge307CiAgICAgICAgZm9yICh2YXIgY29sID0gMDsgY29sIDwgbmFtZXMubGVuZ3RoOyBjb2wrKykgewogICAgICAgICAgICBpdGVtW25hbWVzW2NvbF1dID0gZGZbbmFtZXNbY29sXV1bcm93XTsKICAgICAgICB9CiAgICAgICAgcmVzdWx0cy5wdXNoKGl0ZW0pOwogICAgfQogICAgcmV0dXJuIHJlc3VsdHM7CiAgfTsKCiAgd2luZG93LkhUTUxXaWRnZXRzLnRyYW5zcG9zZUFycmF5MkQgPSBmdW5jdGlvbihhcnJheSkgewogICAgICB2YXIgbmV3QXJyYXkgPSBhcnJheVswXS5tYXAoZnVuY3Rpb24oY29sLCBpKSB7CiAgICAgICAgICByZXR1cm4gYXJyYXkubWFwKGZ1bmN0aW9uKHJvdykgewogICAgICAgICAgICAgIHJldHVybiByb3dbaV0KICAgICAgICAgIH0pCiAgICAgIH0pOwogICAgICByZXR1cm4gbmV3QXJyYXk7CiAgfTsKICAvLyBTcGxpdCB2YWx1ZSBhdCBzcGxpdENoYXIsIGJ1dCBhbGxvdyBzcGxpdENoYXIgdG8gYmUgZXNjYXBlZAogIC8vIHVzaW5nIGVzY2FwZUNoYXIuIEFueSBvdGhlciBjaGFyYWN0ZXJzIGVzY2FwZWQgYnkgZXNjYXBlQ2hhcgogIC8vIHdpbGwgYmUgaW5jbHVkZWQgYXMgdXN1YWwgKGluY2x1ZGluZyBlc2NhcGVDaGFyIGl0c2VsZikuCiAgZnVuY3Rpb24gc3BsaXRXaXRoRXNjYXBlKHZhbHVlLCBzcGxpdENoYXIsIGVzY2FwZUNoYXIpIHsKICAgIHZhciByZXN1bHRzID0gW107CiAgICB2YXIgZXNjYXBlTW9kZSA9IGZhbHNlOwogICAgdmFyIGN1cnJlbnRSZXN1bHQgPSAiIjsKICAgIGZvciAodmFyIHBvcyA9IDA7IHBvcyA8IHZhbHVlLmxlbmd0aDsgcG9zKyspIHsKICAgICAgaWYgKCFlc2NhcGVNb2RlKSB7CiAgICAgICAgaWYgKHZhbHVlW3Bvc10gPT09IHNwbGl0Q2hhcikgewogICAgICAgICAgcmVzdWx0cy5wdXNoKGN1cnJlbnRSZXN1bHQpOwogICAgICAgICAgY3VycmVudFJlc3VsdCA9ICIiOwogICAgICAgIH0gZWxzZSBpZiAodmFsdWVbcG9zXSA9PT0gZXNjYXBlQ2hhcikgewogICAgICAgICAgZXNjYXBlTW9kZSA9IHRydWU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGN1cnJlbnRSZXN1bHQgKz0gdmFsdWVbcG9zXTsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgY3VycmVudFJlc3VsdCArPSB2YWx1ZVtwb3NdOwogICAgICAgIGVzY2FwZU1vZGUgPSBmYWxzZTsKICAgICAgfQogICAgfQogICAgaWYgKGN1cnJlbnRSZXN1bHQgIT09ICIiKSB7CiAgICAgIHJlc3VsdHMucHVzaChjdXJyZW50UmVzdWx0KTsKICAgIH0KICAgIHJldHVybiByZXN1bHRzOwogIH0KICAvLyBGdW5jdGlvbiBhdXRob3JlZCBieSBZaWh1aS9KSiBBbGxhaXJlCiAgd2luZG93LkhUTUxXaWRnZXRzLmV2YWx1YXRlU3RyaW5nTWVtYmVyID0gZnVuY3Rpb24obywgbWVtYmVyKSB7CiAgICB2YXIgcGFydHMgPSBzcGxpdFdpdGhFc2NhcGUobWVtYmVyLCAnLicsICdcXCcpOwogICAgZm9yICh2YXIgaSA9IDAsIGwgPSBwYXJ0cy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKICAgICAgdmFyIHBhcnQgPSBwYXJ0c1tpXTsKICAgICAgLy8gcGFydCBtYXkgYmUgYSBjaGFyYWN0ZXIgb3IgJ251bWVyaWMnIG1lbWJlciBuYW1lCiAgICAgIGlmIChvICE9PSBudWxsICYmIHR5cGVvZiBvID09PSAib2JqZWN0IiAmJiBwYXJ0IGluIG8pIHsKICAgICAgICBpZiAoaSA9PSAobCAtIDEpKSB7IC8vIGlmIHdlIGFyZSBhdCB0aGUgZW5kIG9mIHRoZSBsaW5lIHRoZW4gZXZhbHVsYXRlCiAgICAgICAgICBpZiAodHlwZW9mIG9bcGFydF0gPT09ICJzdHJpbmciKQogICAgICAgICAgICBvW3BhcnRdID0gZXZhbCgiKCIgKyBvW3BhcnRdICsgIikiKTsKICAgICAgICB9IGVsc2UgeyAvLyBvdGhlcndpc2UgY29udGludWUgdG8gbmV4dCBlbWJlZGRlZCBvYmplY3QKICAgICAgICAgIG8gPSBvW3BhcnRdOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH07Cn0pKCk7Cgo="></script>
<link href="data:text/css;charset=utf-8,%2Evis%2Dpanel%2C%2Evis%2Dtimeline%7Bmargin%3A0%3Bpadding%3A0%3Bbox%2Dsizing%3Aborder%2Dbox%7D%2Evis%2Dbackground%2C%2Evis%2Dlabelset%2C%2Evis%2Dtimeline%7Boverflow%3Ahidden%7D%2Evis%20%2Eoverlay%7Bposition%3Aabsolute%3Btop%3A0%3Bleft%3A0%3Bwidth%3A100%25%3Bheight%3A100%25%3Bz%2Dindex%3A10%7D%2Evis%2Dactive%7Bbox%2Dshadow%3A0%200%2010px%20%2386d5f8%7D%2Evis%20%5Bclass%2A%3Dspan%5D%7Bmin%2Dheight%3A0%3Bwidth%3Aauto%7D%2Evis%2Dtimeline%7Bposition%3Arelative%3Bborder%3A1px%20solid%20%23bfbfbf%7D%2Evis%2Dpanel%7Bposition%3Aabsolute%7D%2Evis%2Dpanel%2Evis%2Dbottom%2C%2Evis%2Dpanel%2Evis%2Dcenter%2C%2Evis%2Dpanel%2Evis%2Dleft%2C%2Evis%2Dpanel%2Evis%2Dright%2C%2Evis%2Dpanel%2Evis%2Dtop%7Bborder%3A1px%20%23bfbfbf%7D%2Evis%2Dpanel%2Evis%2Dcenter%2C%2Evis%2Dpanel%2Evis%2Dleft%2C%2Evis%2Dpanel%2Evis%2Dright%7Bborder%2Dtop%2Dstyle%3Asolid%3Bborder%2Dbottom%2Dstyle%3Asolid%3Boverflow%3Ahidden%7D%2Evis%2Dpanel%2Evis%2Dbottom%2C%2Evis%2Dpanel%2Evis%2Dcenter%2C%2Evis%2Dpanel%2Evis%2Dtop%7Bborder%2Dleft%2Dstyle%3Asolid%3Bborder%2Dright%2Dstyle%3Asolid%7D%2Evis%2Dpanel%3E%2Evis%2Dcontent%7Bposition%3Arelative%7D%2Evis%2Dpanel%20%2Evis%2Dshadow%7Bposition%3Aabsolute%3Bwidth%3A100%25%3Bheight%3A1px%3Bbox%2Dshadow%3A0%200%2010px%20rgba%280%2C0%2C0%2C%2E8%29%7D%2Evis%2Ditemset%2C%2Evis%2Dlabelset%2C%2Evis%2Dlabelset%20%2Evis%2Dlabel%7Bbox%2Dsizing%3Aborder%2Dbox%3Bposition%3Arelative%7D%2Evis%2Dpanel%20%2Evis%2Dshadow%2Evis%2Dtop%7Btop%3A%2D1px%3Bleft%3A0%7D%2Evis%2Dpanel%20%2Evis%2Dshadow%2Evis%2Dbottom%7Bbottom%3A%2D1px%3Bleft%3A0%7D%2Evis%2Dlabelset%20%2Evis%2Dlabel%7Bleft%3A0%3Btop%3A0%3Bwidth%3A100%25%3Bcolor%3A%234d4d4d%3Bborder%2Dbottom%3A1px%20solid%20%23bfbfbf%7D%2Evis%2Dlabelset%20%2Evis%2Dlabel%3Alast%2Dchild%7Bborder%2Dbottom%3Anone%7D%2Evis%2Dlabelset%20%2Evis%2Dlabel%20%2Evis%2Dinner%7Bdisplay%3Ainline%2Dblock%3Bpadding%3A5px%7D%2Evis%2Dlabelset%20%2Evis%2Dlabel%20%2Evis%2Dinner%2Evis%2Dhidden%7Bpadding%3A0%7D%2Evis%2Ditemset%7Bpadding%3A0%3Bmargin%3A0%7D%2Evis%2Ditemset%20%2Evis%2Dbackground%2C%2Evis%2Ditemset%20%2Evis%2Dforeground%7Bposition%3Aabsolute%3Bwidth%3A100%25%3Bheight%3A100%25%3Boverflow%3Avisible%7D%2Evis%2Daxis%7Bposition%3Aabsolute%3Bwidth%3A100%25%3Bheight%3A0%3Bleft%3A0%3Bz%2Dindex%3A1%7D%2Evis%2Dforeground%20%2Evis%2Dgroup%7Bposition%3Arelative%3Bbox%2Dsizing%3Aborder%2Dbox%3Bborder%2Dbottom%3A1px%20solid%20%23bfbfbf%7D%2Evis%2Dforeground%20%2Evis%2Dgroup%3Alast%2Dchild%7Bborder%2Dbottom%3Anone%7D%2Evis%2Doverlay%7Bposition%3Aabsolute%3Btop%3A0%3Bleft%3A0%3Bwidth%3A100%25%3Bheight%3A100%25%3Bz%2Dindex%3A10%7D%2Evis%2Ditem%7Bposition%3Aabsolute%3Bcolor%3A%231A1A1A%3Bborder%2Dcolor%3A%2397B0F8%3Bborder%2Dwidth%3A1px%3Bbackground%2Dcolor%3A%23D5DDF6%3Bdisplay%3Ainline%2Dblock%7D%2Evis%2Ditem%2Evis%2Dpoint%2Evis%2Dselected%2C%2Evis%2Ditem%2Evis%2Dselected%7Bbackground%2Dcolor%3A%23FFF785%7D%2Evis%2Ditem%2Evis%2Dselected%7Bborder%2Dcolor%3A%23FFC200%3Bz%2Dindex%3A2%7D%2Evis%2Deditable%2Evis%2Dselected%7Bcursor%3Amove%7D%2Evis%2Ditem%2Evis%2Dbox%7Btext%2Dalign%3Acenter%3Bborder%2Dstyle%3Asolid%3Bborder%2Dradius%3A2px%7D%2Evis%2Ditem%2Evis%2Dpoint%7Bbackground%3A0%200%7D%2Evis%2Ditem%2Evis%2Ddot%7Bposition%3Aabsolute%3Bpadding%3A0%3Bborder%2Dwidth%3A4px%3Bborder%2Dstyle%3Asolid%3Bborder%2Dradius%3A4px%7D%2Evis%2Ditem%2Evis%2Drange%7Bborder%2Dstyle%3Asolid%3Bborder%2Dradius%3A2px%3Bbox%2Dsizing%3Aborder%2Dbox%7D%2Evis%2Ditem%2Evis%2Dbackground%7Bborder%3Anone%3Bbackground%2Dcolor%3Argba%28213%2C221%2C246%2C%2E4%29%3Bbox%2Dsizing%3Aborder%2Dbox%3Bpadding%3A0%3Bmargin%3A0%7D%2Evis%2Ditem%20%2Evis%2Ditem%2Doverflow%7Bposition%3Arelative%3Bwidth%3A100%25%3Bheight%3A100%25%3Bpadding%3A0%3Bmargin%3A0%3Boverflow%3Ahidden%7D%2Evis%2Ditem%2Evis%2Drange%20%2Evis%2Ditem%2Dcontent%7Bposition%3Arelative%3Bdisplay%3Ainline%2Dblock%7D%2Evis%2Ditem%2Evis%2Dbackground%20%2Evis%2Ditem%2Dcontent%7Bposition%3Aabsolute%3Bdisplay%3Ainline%2Dblock%7D%2Evis%2Ditem%2Evis%2Dline%7Bpadding%3A0%3Bposition%3Aabsolute%3Bwidth%3A0%3Bborder%2Dleft%2Dwidth%3A1px%3Bborder%2Dleft%2Dstyle%3Asolid%7D%2Evis%2Ditem%20%2Evis%2Ditem%2Dcontent%7Bwhite%2Dspace%3Anowrap%3Bbox%2Dsizing%3Aborder%2Dbox%3Bpadding%3A5px%7D%2Evis%2Ditem%20%2Evis%2Ddelete%7Bbackground%3Adata%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAAABGdBTUEAALGPC%2FxhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAP8A%2FwD%2FoL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAl2cEFnAAAAEAAAABAAXMatwwAAAVRJREFUOMt108FKG1EUBuBvYtxbRGwxiGBXeYCW0mVpDSKVvIJ0F%2FsyJsFdn6GCkaZ9gro3G1u0ILQgheJKRUwXPQNnxvTAcGf%2Bc%2F7%2FnPvfO8UEKLCFJg5w31aNqGtgG3c4xLSZyP0QgI8Tpu0quQhyPwTgsBnkAVYD3MM9DibVId5GbiW%2BB%2BVIt7hJha1IdhPWDayVsBvcFtHlDYZ4mgou8D7e%2BzXyN%2FTwuUhjbkSXLHIZ61KNvItxaYyayBDrZsf36DyGdilQE%2BngA57UyD%2Bxg08luTSxHvP%2FwRuRewDm7uV9WJ4hsBy5rczJJm7G%2FtcS6VesjxN2Hj4c5S10Qj2Tz%2FAunrOEr0VtB%2BZ6vMJ%2BzfkfcVQjnMbRvcRC5B%2FhBU4auMbVjBFHCRsFdp6wK1yXHjz37xItRuejfFQ1nwb4HXVfs4nPYsQv0p%2BoKlLgNf7gGP4Cw4ZUK7kMJVEAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDExLTA1LTE2VDExOjM1OjIxKzAyOjAw9uVF5gAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxMS0wNS0xNlQxMTozNToyMSswMjowMIe4%2FVoAAAAASUVORK5CYII%3D%20center%20no%2Drepeat%3Bposition%3Aabsolute%3Bwidth%3A24px%3Bheight%3A24px%3Btop%3A%2D4px%3Bright%3A%2D24px%3Bcursor%3Apointer%7D%2Evis%2Ditem%2Evis%2Drange%20%2Evis%2Ddrag%2Dleft%7Bposition%3Aabsolute%3Bwidth%3A24px%3Bmax%2Dwidth%3A20%25%3Bmin%2Dwidth%3A2px%3Bheight%3A100%25%3Btop%3A0%3Bleft%3A%2D4px%3Bcursor%3Aw%2Dresize%7D%2Evis%2Ditem%2Evis%2Drange%20%2Evis%2Ddrag%2Dright%7Bposition%3Aabsolute%3Bwidth%3A24px%3Bmax%2Dwidth%3A20%25%3Bmin%2Dwidth%3A2px%3Bheight%3A100%25%3Btop%3A0%3Bright%3A%2D4px%3Bcursor%3Ae%2Dresize%7D%2Evis%2Dtime%2Daxis%7Bposition%3Arelative%3Boverflow%3Ahidden%7D%2Evis%2Dtime%2Daxis%2Evis%2Dforeground%7Btop%3A0%3Bleft%3A0%3Bwidth%3A100%25%7D%2Evis%2Dtime%2Daxis%2Evis%2Dbackground%7Bposition%3Aabsolute%3Btop%3A0%3Bleft%3A0%3Bwidth%3A100%25%3Bheight%3A100%25%7D%2Evis%2Dtime%2Daxis%20%2Evis%2Dtext%7Bposition%3Aabsolute%3Bcolor%3A%234d4d4d%3Bpadding%3A3px%3Bwhite%2Dspace%3Anowrap%7D%2Evis%2Dtime%2Daxis%20%2Evis%2Dtext%2Evis%2Dmeasure%7Bposition%3Aabsolute%3Bpadding%2Dleft%3A0%3Bpadding%2Dright%3A0%3Bmargin%2Dleft%3A0%3Bmargin%2Dright%3A0%3Bvisibility%3Ahidden%7D%2Evis%2Dtime%2Daxis%20%2Evis%2Dgrid%2Evis%2Dvertical%7Bposition%3Aabsolute%3Bborder%2Dleft%3A1px%20solid%7D%2Evis%2Dtime%2Daxis%20%2Evis%2Dgrid%2Evis%2Dminor%7Bborder%2Dcolor%3A%23e5e5e5%7D%2Evis%2Dtime%2Daxis%20%2Evis%2Dgrid%2Evis%2Dmajor%7Bborder%2Dcolor%3A%23bfbfbf%7D%2Evis%2Dcurrent%2Dtime%7Bbackground%2Dcolor%3A%23FF7F6E%3Bwidth%3A2px%3Bz%2Dindex%3A1%7D%2Evis%2Dcustom%2Dtime%7Bbackground%2Dcolor%3A%236E94FF%3Bwidth%3A2px%3Bcursor%3Amove%3Bz%2Dindex%3A1%7D%2Evis%2Dpanel%2Evis%2Dbackground%2Evis%2Dhorizontal%20%2Evis%2Dgrid%2Evis%2Dhorizontal%7Bposition%3Aabsolute%3Bwidth%3A100%25%3Bheight%3A0%3Bborder%2Dbottom%3A1px%20solid%7D%2Evis%2Dpanel%2Evis%2Dbackground%2Evis%2Dhorizontal%20%2Evis%2Dgrid%2Evis%2Dminor%7Bborder%2Dcolor%3A%23e5e5e5%7D%2Evis%2Dpanel%2Evis%2Dbackground%2Evis%2Dhorizontal%20%2Evis%2Dgrid%2Evis%2Dmajor%7Bborder%2Dcolor%3A%23bfbfbf%7D%2Evis%2Ddata%2Daxis%20%2Evis%2Dy%2Daxis%2Evis%2Dmajor%7Bwidth%3A100%25%3Bposition%3Aabsolute%3Bcolor%3A%234d4d4d%3Bwhite%2Dspace%3Anowrap%7D%2Evis%2Ddata%2Daxis%20%2Evis%2Dy%2Daxis%2Evis%2Dmajor%2Evis%2Dmeasure%7Bpadding%3A0%3Bmargin%3A0%3Bborder%3A0%3Bvisibility%3Ahidden%3Bwidth%3Aauto%7D%2Evis%2Ddata%2Daxis%20%2Evis%2Dy%2Daxis%2Evis%2Dminor%7Bposition%3Aabsolute%3Bwidth%3A100%25%3Bcolor%3A%23bebebe%3Bwhite%2Dspace%3Anowrap%7D%2Evis%2Ddata%2Daxis%20%2Evis%2Dy%2Daxis%2Evis%2Dminor%2Evis%2Dmeasure%7Bpadding%3A0%3Bmargin%3A0%3Bborder%3A0%3Bvisibility%3Ahidden%3Bwidth%3Aauto%7D%2Evis%2Ddata%2Daxis%20%2Evis%2Dy%2Daxis%2Evis%2Dtitle%7Bposition%3Aabsolute%3Bcolor%3A%234d4d4d%3Bwhite%2Dspace%3Anowrap%3Bbottom%3A20px%3Btext%2Dalign%3Acenter%7D%2Evis%2Ddata%2Daxis%20%2Evis%2Dy%2Daxis%2Evis%2Dtitle%2Evis%2Dmeasure%7Bpadding%3A0%3Bmargin%3A0%3Bvisibility%3Ahidden%3Bwidth%3Aauto%7D%2Evis%2Ddata%2Daxis%20%2Evis%2Dy%2Daxis%2Evis%2Dtitle%2Evis%2Dleft%7Bbottom%3A0%3B%2Dwebkit%2Dtransform%2Dorigin%3Aleft%20top%3B%2Dmoz%2Dtransform%2Dorigin%3Aleft%20top%3B%2Dms%2Dtransform%2Dorigin%3Aleft%20top%3B%2Do%2Dtransform%2Dorigin%3Aleft%20top%3Btransform%2Dorigin%3Aleft%20bottom%3B%2Dwebkit%2Dtransform%3Arotate%28%2D90deg%29%3B%2Dmoz%2Dtransform%3Arotate%28%2D90deg%29%3B%2Dms%2Dtransform%3Arotate%28%2D90deg%29%3B%2Do%2Dtransform%3Arotate%28%2D90deg%29%3Btransform%3Arotate%28%2D90deg%29%7D%2Evis%2Ddata%2Daxis%20%2Evis%2Dy%2Daxis%2Evis%2Dtitle%2Evis%2Dright%7Bbottom%3A0%3B%2Dwebkit%2Dtransform%2Dorigin%3Aright%20bottom%3B%2Dmoz%2Dtransform%2Dorigin%3Aright%20bottom%3B%2Dms%2Dtransform%2Dorigin%3Aright%20bottom%3B%2Do%2Dtransform%2Dorigin%3Aright%20bottom%3Btransform%2Dorigin%3Aright%20bottom%3B%2Dwebkit%2Dtransform%3Arotate%2890deg%29%3B%2Dmoz%2Dtransform%3Arotate%2890deg%29%3B%2Dms%2Dtransform%3Arotate%2890deg%29%3B%2Do%2Dtransform%3Arotate%2890deg%29%3Btransform%3Arotate%2890deg%29%7D%2Evis%2Dlegend%7Bbackground%2Dcolor%3Argba%28247%2C252%2C255%2C%2E65%29%3Bpadding%3A5px%3Bborder%3A1px%20solid%20%23b3b3b3%3Bbox%2Dshadow%3A2px%202px%2010px%20rgba%28154%2C154%2C154%2C%2E55%29%7D%2Evis%2Dlegend%2Dtext%7Bwhite%2Dspace%3Anowrap%3Bdisplay%3Ainline%2Dblock%7D%2Evis%2Dgraph%2Dgroup0%7Bfill%3A%234f81bd%3Bfill%2Dopacity%3A0%3Bstroke%2Dwidth%3A2px%3Bstroke%3A%234f81bd%7D%2Evis%2Dgraph%2Dgroup1%7Bfill%3A%23f79646%3Bfill%2Dopacity%3A0%3Bstroke%2Dwidth%3A2px%3Bstroke%3A%23f79646%7D%2Evis%2Dgraph%2Dgroup2%7Bfill%3A%238c51cf%3Bfill%2Dopacity%3A0%3Bstroke%2Dwidth%3A2px%3Bstroke%3A%238c51cf%7D%2Evis%2Dgraph%2Dgroup3%7Bfill%3A%2375c841%3Bfill%2Dopacity%3A0%3Bstroke%2Dwidth%3A2px%3Bstroke%3A%2375c841%7D%2Evis%2Dgraph%2Dgroup4%7Bfill%3A%23ff0100%3Bfill%2Dopacity%3A0%3Bstroke%2Dwidth%3A2px%3Bstroke%3A%23ff0100%7D%2Evis%2Dgraph%2Dgroup5%7Bfill%3A%2337d8e6%3Bfill%2Dopacity%3A0%3Bstroke%2Dwidth%3A2px%3Bstroke%3A%2337d8e6%7D%2Evis%2Dgraph%2Dgroup6%7Bfill%3A%23042662%3Bfill%2Dopacity%3A0%3Bstroke%2Dwidth%3A2px%3Bstroke%3A%23042662%7D%2Evis%2Dgraph%2Dgroup7%7Bfill%3A%2300ff26%3Bfill%2Dopacity%3A0%3Bstroke%2Dwidth%3A2px%3Bstroke%3A%2300ff26%7D%2Evis%2Dgraph%2Dgroup8%7Bfill%3A%23f0f%3Bfill%2Dopacity%3A0%3Bstroke%2Dwidth%3A2px%3Bstroke%3A%23f0f%7D%2Evis%2Dgraph%2Dgroup9%7Bfill%3A%238f3938%3Bfill%2Dopacity%3A0%3Bstroke%2Dwidth%3A2px%3Bstroke%3A%238f3938%7D%2Evis%2Dtimeline%20%2Evis%2Dfill%7Bfill%2Dopacity%3A%2E1%3Bstroke%3Anone%7D%2Evis%2Dtimeline%20%2Evis%2Dbar%7Bfill%2Dopacity%3A%2E5%3Bstroke%2Dwidth%3A1px%7D%2Evis%2Dtimeline%20%2Evis%2Dpoint%7Bstroke%2Dwidth%3A2px%3Bfill%2Dopacity%3A1%7D%2Evis%2Dtimeline%20%2Evis%2Dlegend%2Dbackground%7Bstroke%2Dwidth%3A1px%3Bfill%2Dopacity%3A%2E9%3Bfill%3A%23fff%3Bstroke%3A%23c2c2c2%7D%2Evis%2Dtimeline%20%2Evis%2Doutline%7Bstroke%2Dwidth%3A1px%3Bfill%2Dopacity%3A1%3Bfill%3A%23fff%3Bstroke%3A%23e5e5e5%7D%2Evis%2Dtimeline%20%2Evis%2Dicon%2Dfill%7Bfill%2Dopacity%3A%2E3%3Bstroke%3Anone%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dmanipulation%7Bborder%2Dwidth%3A0%3Bborder%2Dbottom%3A1px%3Bborder%2Dstyle%3Asolid%3Bborder%2Dcolor%3A%23d6d9d8%3Bbackground%3A%23fff%3Bbackground%3A%2Dmoz%2Dlinear%2Dgradient%28top%2C%23fff%200%2C%23fcfcfc%2048%25%2C%23fafafa%2050%25%2C%23fcfcfc%20100%25%29%3Bbackground%3A%2Dwebkit%2Dgradient%28linear%2Cleft%20top%2Cleft%20bottom%2Ccolor%2Dstop%280%2C%23fff%29%2Ccolor%2Dstop%2848%25%2C%23fcfcfc%29%2Ccolor%2Dstop%2850%25%2C%23fafafa%29%2Ccolor%2Dstop%28100%25%2C%23fcfcfc%29%29%3Bbackground%3A%2Dwebkit%2Dlinear%2Dgradient%28top%2C%23fff%200%2C%23fcfcfc%2048%25%2C%23fafafa%2050%25%2C%23fcfcfc%20100%25%29%3Bbackground%3A%2Do%2Dlinear%2Dgradient%28top%2C%23fff%200%2C%23fcfcfc%2048%25%2C%23fafafa%2050%25%2C%23fcfcfc%20100%25%29%3Bbackground%3A%2Dms%2Dlinear%2Dgradient%28top%2C%23fff%200%2C%23fcfcfc%2048%25%2C%23fafafa%2050%25%2C%23fcfcfc%20100%25%29%3Bbackground%3Alinear%2Dgradient%28to%20bottom%2C%23fff%200%2C%23fcfcfc%2048%25%2C%23fafafa%2050%25%2C%23fcfcfc%20100%25%29%3Bfilter%3Aprogid%3ADXImageTransform%2EMicrosoft%2Egradient%28%20startColorstr%3D%27%23ffffff%27%2C%20endColorstr%3D%27%23fcfcfc%27%2C%20GradientType%3D0%20%29%3Bposition%3Aabsolute%3Bleft%3A0%3Btop%3A0%3Bwidth%3A100%25%3Bheight%3A30px%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dedit%2Dmode%7Bposition%3Aabsolute%3Bleft%3A0%3Btop%3A15px%3Bheight%3A30px%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dclose%7Bposition%3Aabsolute%3Bright%3A0%3Btop%3A0%3Bwidth%3A30px%3Bheight%3A30px%3Bbackground%2Dposition%3A20px%203px%3Bbackground%2Drepeat%3Ano%2Drepeat%3Bbackground%2Dimage%3Adata%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAYAAADEUlfTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89%2BbN%2FrXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz%2FSMBAPh%2BPDwrIsAHvgABeNMLCADATZvAMByH%2Fw%2FqQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf%2BbTAICd%2BJl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA%2Fg88wAAKCRFRHgg%2FP9eM4Ors7ONo62Dl8t6r8G%2FyJiYuP%2B5c%2BrcEAAAOF0ftH%2BLC%2BzGoA7BoBt%2FqIl7gRoXgugdfeLZrIPQLUAoOnaV%2FNw%2BH48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl%2FAV%2F1s%2BX48%2FPf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H%2FLcL%2F%2Fwd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s%2BwM%2B3zUAsGo%2BAXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93%2F%2B8%2F%2FUegJQCAZkmScQAAXkQkLlTKsz%2FHCAAARKCBKrBBG%2FTBGCzABhzBBdzBC%2FxgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD%2FphCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8%2BQ8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8%2BxdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR%2BcQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI%2BksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG%2BQh8lsKnWJAcaT4U%2BIoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr%2Bh0uhHdlR5Ol9BX0svpR%2BiX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK%2BYTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI%2BpXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q%2FpH5Z%2FYkGWcNMw09DpFGgsV%2FjvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY%2FR27iz2qqaE5QzNKM1ezUvOUZj8H45hx%2BJx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4%2FOBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up%2B6Ynr5egJ5Mb6feeb3n%2Bhx9L%2F1U%2FW36p%2FVHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm%2Beb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw%2B6TvZN9un2N%2FT0HDYfZDqsdWh1%2Bc7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc%2BLpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26%2FuNu5p7ofcn8w0nymeWTNz0MPIQ%2BBR5dE%2FC5%2BVMGvfrH5PQ0%2BBZ7XnIy9jL5FXrdewt6V3qvdh7xc%2B9j5yn%2BM%2B4zw33jLeWV%2FMN8C3yLfLT8Nvnl%2BF30N%2FI%2F9k%2F3r%2F0QCngCUBZwOJgUGBWwL7%2BHp8Ib%2BOPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo%2Bqi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt%2F87fOH4p3iC%2BN7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi%2FRNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z%2Bpn5mZ2y6xlhbL%2BxW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a%2FzYnKOZarnivN7cyzytuQN5zvn%2F%2FtEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1%2B1dT1gvWd%2B1YfqGnRs%2BFYmKrhTbF5cVf9go3HjlG4dvyr%2BZ3JS0qavEuWTPZtJm6ebeLZ5bDpaql%2BaXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO%2FPLi8ZafJzs07P1SkVPRU%2BlQ27tLdtWHX%2BG7R7ht7vPY07NXbW7z3%2FT7JvttVAVVN1WbVZftJ%2B7P3P66Jqun4lvttXa1ObXHtxwPSA%2F0HIw6217nU1R3SPVRSj9Yr60cOxx%2B%2B%2Fp3vdy0NNg1VjZzG4iNwRHnk6fcJ3%2FceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w%2B0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb%2B%2B6EHTh0kX%2Fi%2Bc7vDvOXPK4dPKy2%2BUTV7hXmq86X23qdOo8%2FpPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb%2F1tWeOT3dvfN6b%2FfF9%2FXfFt1%2Bcif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v%2B3Njv3H9qwHeg89HcR%2FcGhYPP%2FpH1jw9DBY%2BZj8uGDYbrnjg%2BOTniP3L96fynQ89kzyaeF%2F6i%2FsuuFxYvfvjV69fO0ZjRoZfyl5O%2FbXyl%2FerA6xmv28bCxh6%2ByXgzMV70VvvtwXfcdx3vo98PT%2BR8IH8o%2F2j5sfVT0Kf7kxmTk%2F8EA5jz%2FGMzLdsAADvGaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu%2B7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI%2FPgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjUtYzAyMSA3OS4xNTQ5MTEsIDIwMTMvMTAvMjktMTE6NDc6MTYgICAgICAgICI%2BCiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI%2BCiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iCiAgICAgICAgICAgIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iPgogICAgICAgICA8eG1wOkNyZWF0b3JUb29sPkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgICAgPHhtcDpDcmVhdGVEYXRlPjIwMTQtMDItMTRUMTE6NTU6MzUrMDE6MDA8L3htcDpDcmVhdGVEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE0LTAyLTE0VDEyOjA1OjE3KzAxOjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8eG1wOk1vZGlmeURhdGU%2BMjAxNC0wMi0xNFQxMjowNToxNyswMTowMDwveG1wOk1vZGlmeURhdGU%2BCiAgICAgICAgIDx4bXBNTTpJbnN0YW5jZUlEPnhtcC5paWQ6NjU0YmM5YmQtMWI2Yi1jYjRhLTllOWQtNWY2MzgxNDVjZjk0PC94bXBNTTpJbnN0YW5jZUlEPgogICAgICAgICA8eG1wTU06RG9jdW1lbnRJRD54bXAuZGlkOjk4MmM2MGIwLWUzZjMtMDk0MC04MjU0LTFiZTliNWE0ZTE4MzwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjk4MmM2MGIwLWUzZjMtMDk0MC04MjU0LTFiZTliNWE0ZTE4MzwveG1wTU06T3JpZ2luYWxEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06SGlzdG9yeT4KICAgICAgICAgICAgPHJkZjpTZXE%2BCiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmNyZWF0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ%2BeG1wLmlpZDo5ODJjNjBiMC1lM2YzLTA5NDAtODI1NC0xYmU5YjVhNGUxODM8L3N0RXZ0Omluc3RhbmNlSUQ%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDItMTRUMTE6NTU6MzUrMDE6MDA8L3N0RXZ0OndoZW4%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ%2BCiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjIxODYxNmM2LTM1MWMtNDI0OS04YWFkLWJkZDQ2ZTczNWE0NDwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4%2BMjAxNC0wMi0xNFQxMTo1NTozNSswMTowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ%2BQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ%2BLzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk%2BCiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6NjU0YmM5YmQtMWI2Yi1jYjRhLTllOWQtNWY2MzgxNDVjZjk0PC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE0LTAyLTE0VDEyOjA1OjE3KzAxOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICA8L3htcE1NOkhpc3Rvcnk%2BCiAgICAgICAgIDxkYzpmb3JtYXQ%2BaW1hZ2UvcG5nPC9kYzpmb3JtYXQ%2BCiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU%2BCiAgICAgICAgIDxwaG90b3Nob3A6SUNDUHJvZmlsZT5zUkdCIElFQzYxOTY2LTIuMTwvcGhvdG9zaG9wOklDQ1Byb2ZpbGU%2BCiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24%2BCiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24%2BNzIwMDAwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjc8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24%2BNzwvZXhpZjpQaXhlbFlEaW1lbnNpb24%2BCiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY%2BCjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8%2BcZUZMwAAACBjSFJNAAB6JQAAgIMAAPn%2FAACA6QAAdTAAAOpgAAA6mAAAF2%2BSX8VGAAAA2ElEQVR42gDLADT%2FAS0tLUQFBQUVFxcXtPHx8fPl5eUNCAgITCkpKesEHx8fGgYGBjH%2B%2Fv4a%2BPj4qgQEBFU6OjodMTExzwQUFBSvEBAQEfX19SD19fVqNDQ0CElJSd%2F9%2Ff2vAwEBAfrn5%2BfkBwcHLRYWFgsXFxfz29vbo9LS0uwDDQ0NDfPz81orKysXIyMj%2BODg4Avh4eEa%2Ff391gMkJCRYPz8%2FKUhISOMCAgKh8fHxHRsbGx4UFBQQBDk5OeY7Ozv7CAgItPb29vMEBASaJSUlTQ0NDesDAEwpT0Ko8Ri2AAAAAElFTkSuQmCC%3Bcursor%3Apointer%3B%2Dwebkit%2Dtouch%2Dcallout%3Anone%3B%2Dwebkit%2Duser%2Dselect%3Anone%3B%2Dkhtml%2Duser%2Dselect%3Anone%3B%2Dmoz%2Duser%2Dselect%3Anone%3B%2Dms%2Duser%2Dselect%3Anone%3Buser%2Dselect%3Anone%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dclose%3Ahover%7Bopacity%3A%2E6%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dedit%2Dmode%20div%2Evis%2Dbutton%2Cdiv%2Evis%2Dnetwork%20div%2Evis%2Dmanipulation%20div%2Evis%2Dbutton%7Bposition%3Arelative%3Btop%3A%2D7px%3Bfont%2Dfamily%3Averdana%3Bfont%2Dsize%3A12px%3B%2Dmoz%2Dborder%2Dradius%3A15px%3Bborder%2Dradius%3A15px%3Bbackground%2Dposition%3A0%200%3Bheight%3A24px%3Bmargin%3A0%200%200%2010px%3Bvertical%2Dalign%3Amiddle%3Bcursor%3Apointer%3Bpadding%3A0%208px%3Buser%2Dselect%3Anone%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dedit%2Dmode%20div%2Evis%2Dbutton%2Cdiv%2Evis%2Dnetwork%20div%2Evis%2Dmanipulation%20div%2Evis%2Dbutton%2Cdiv%2Evis%2Dnetwork%20div%2Evis%2Dnavigation%20div%2Evis%2Dbutton%7Bdisplay%3Ainline%2Dblock%3Bbackground%2Drepeat%3Ano%2Drepeat%3B%2Dwebkit%2Dtouch%2Dcallout%3Anone%3B%2Dwebkit%2Duser%2Dselect%3Anone%3B%2Dkhtml%2Duser%2Dselect%3Anone%3B%2Dmoz%2Duser%2Dselect%3Anone%3B%2Dms%2Duser%2Dselect%3Anone%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dmanipulation%20div%2Evis%2Dbutton%3Ahover%7Bbox%2Dshadow%3A1px%201px%208px%20rgba%280%2C0%2C0%2C%2E2%29%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dmanipulation%20div%2Evis%2Dbutton%3Aactive%7Bbox%2Dshadow%3A1px%201px%208px%20rgba%280%2C0%2C0%2C%2E5%29%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dmanipulation%20div%2Evis%2Dbutton%2Evis%2Dback%7Bbackground%2Dimage%3Adata%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89%2BbN%2FrXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz%2FSMBAPh%2BPDwrIsAHvgABeNMLCADATZvAMByH%2Fw%2FqQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf%2BbTAICd%2BJl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA%2Fg88wAAKCRFRHgg%2FP9eM4Ors7ONo62Dl8t6r8G%2FyJiYuP%2B5c%2BrcEAAAOF0ftH%2BLC%2BzGoA7BoBt%2FqIl7gRoXgugdfeLZrIPQLUAoOnaV%2FNw%2BH48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl%2FAV%2F1s%2BX48%2FPf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H%2FLcL%2F%2Fwd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s%2BwM%2B3zUAsGo%2BAXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93%2F%2B8%2F%2FUegJQCAZkmScQAAXkQkLlTKsz%2FHCAAARKCBKrBBG%2FTBGCzABhzBBdzBC%2FxgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD%2FphCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8%2BQ8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8%2BxdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR%2BcQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI%2BksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG%2BQh8lsKnWJAcaT4U%2BIoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr%2Bh0uhHdlR5Ol9BX0svpR%2BiX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK%2BYTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI%2BpXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q%2FpH5Z%2FYkGWcNMw09DpFGgsV%2FjvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY%2FR27iz2qqaE5QzNKM1ezUvOUZj8H45hx%2BJx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4%2FOBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up%2B6Ynr5egJ5Mb6feeb3n%2Bhx9L%2F1U%2FW36p%2FVHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm%2Beb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw%2B6TvZN9un2N%2FT0HDYfZDqsdWh1%2Bc7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc%2BLpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26%2FuNu5p7ofcn8w0nymeWTNz0MPIQ%2BBR5dE%2FC5%2BVMGvfrH5PQ0%2BBZ7XnIy9jL5FXrdewt6V3qvdh7xc%2B9j5yn%2BM%2B4zw33jLeWV%2FMN8C3yLfLT8Nvnl%2BF30N%2FI%2F9k%2F3r%2F0QCngCUBZwOJgUGBWwL7%2BHp8Ib%2BOPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo%2Bqi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt%2F87fOH4p3iC%2BN7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi%2FRNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z%2Bpn5mZ2y6xlhbL%2BxW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a%2FzYnKOZarnivN7cyzytuQN5zvn%2F%2FtEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1%2B1dT1gvWd%2B1YfqGnRs%2BFYmKrhTbF5cVf9go3HjlG4dvyr%2BZ3JS0qavEuWTPZtJm6ebeLZ5bDpaql%2BaXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO%2FPLi8ZafJzs07P1SkVPRU%2BlQ27tLdtWHX%2BG7R7ht7vPY07NXbW7z3%2FT7JvttVAVVN1WbVZftJ%2B7P3P66Jqun4lvttXa1ObXHtxwPSA%2F0HIw6217nU1R3SPVRSj9Yr60cOxx%2B%2B%2Fp3vdy0NNg1VjZzG4iNwRHnk6fcJ3%2FceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w%2B0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb%2B%2B6EHTh0kX%2Fi%2Bc7vDvOXPK4dPKy2%2BUTV7hXmq86X23qdOo8%2FpPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb%2F1tWeOT3dvfN6b%2FfF9%2FXfFt1%2Bcif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v%2B3Njv3H9qwHeg89HcR%2FcGhYPP%2FpH1jw9DBY%2BZj8uGDYbrnjg%2BOTniP3L96fynQ89kzyaeF%2F6i%2FsuuFxYvfvjV69fO0ZjRoZfyl5O%2FbXyl%2FerA6xmv28bCxh6%2ByXgzMV70VvvtwXfcdx3vo98PT%2BR8IH8o%2F2j5sfVT0Kf7kxmTk%2F8EA5jz%2FGMzLdsAAEEOaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu%2B7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI%2FPgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjUtYzAyMSA3OS4xNTQ5MTEsIDIwMTMvMTAvMjktMTE6NDc6MTYgICAgICAgICI%2BCiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI%2BCiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w%2BCiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU%2BMjAxNC0wMi0wNFQxNTowMTowOSswMTowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTQtMDItMDRUMTU6MDE6MDkrMDE6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOmI2YjQwMjVkLTAxNjQtMzU0OC1hOTdlLTQ4ZmYxMWM3NTYzMzwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ%2BeG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ%2BCiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24%2BY3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgPC9yZGY6bGk%2BCiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6RUE2MEEyNEUxOTg0RTMxMUFEQUZFRkU2RUMzMzNFMDM8L3N0RXZ0Omluc3RhbmNlSUQ%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDEtMjNUMTk6MTg6MDcrMDE6MDA8L3N0RXZ0OndoZW4%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24%2Bc2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ%2BeG1wLmlpZDpmOWQ3OGY4ZC1lNzY0LTc1NDgtODZiNy1iNmQ1OGMzZDg2OTc8L3N0RXZ0Omluc3RhbmNlSUQ%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDItMDRUMTU6MDE6MDkrMDE6MDA8L3N0RXZ0OndoZW4%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ%2BCiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jb252ZXJ0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM%2BZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZzwvc3RFdnQ6cGFyYW1ldGVycz4KICAgICAgICAgICAgICAgPC9yZGY6bGk%2BCiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmRlcml2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM%2BY29udmVydGVkIGZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9wbmc8L3N0RXZ0OnBhcmFtZXRlcnM%2BCiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOmI2YjQwMjVkLTAxNjQtMzU0OC1hOTdlLTQ4ZmYxMWM3NTYzMzwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4%2BMjAxNC0wMi0wNFQxNTowMTowOSswMTowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ%2BQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ%2BLzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk%2BCiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8eG1wTU06RGVyaXZlZEZyb20gcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICA8c3RSZWY6aW5zdGFuY2VJRD54bXAuaWlkOmY5ZDc4ZjhkLWU3NjQtNzU0OC04NmI3LWI2ZDU4YzNkODY5Nzwvc3RSZWY6aW5zdGFuY2VJRD4KICAgICAgICAgICAgPHN0UmVmOmRvY3VtZW50SUQ%2BeG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwvc3RSZWY6ZG9jdW1lbnRJRD4KICAgICAgICAgICAgPHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ%2BCiAgICAgICAgIDwveG1wTU06RGVyaXZlZEZyb20%2BCiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU%2BCiAgICAgICAgIDxwaG90b3Nob3A6SUNDUHJvZmlsZT5zUkdCIElFQzYxOTY2LTIuMTwvcGhvdG9zaG9wOklDQ1Byb2ZpbGU%2BCiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24%2BCiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDA5MC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24%2BNzIwMDkwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24%2BCiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE%2BCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw%2FeHBhY2tldCBlbmQ9InciPz4jq1U%2FAAAAIGNIUk0AAHolAACAgwAA%2Bf8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAVTSURBVHjanFVfTFNnFP%2Bd77ve8qeVFbBrpcVgRrCRFikFByLxwSAaE32oRCHD6JMxxhhn8G2RxxH3MsOTbyYsmCAxPMmMMYtkIUYmK60OO0qAK23BFlNob0uh3x7WS5jLZPpLbm6%2Bk%2FP9zrm5v9855PF4UFhYCABgjIExBgAgIqRSqRIi6gDQRkQ1RGTB3wgR0e8AHgH4Sa%2FXR%2FEBiAiJRAJ04cIF5Ofng4g2n0gkUkxENwF0c843LzHGQEQQQkCLExEA9ALotVgsUQAQQmgNQhJCbF5kjCEUCl0moj4t5na7fTU1NUpVVVXUYrEkASAcDhe8efOmxOfzWScmJqoBdBNR99LS0hWz2dynNSSEAF28eBGFhYVgjCEcDn9HRD1EhIMHD3o9Hs9kWVlZAh9BKBQqGB4edr58%2BdKZ%2B6JbJpOpBwBWV1fB6%2BrqIMsyIpHIFcZYL2MMra2tY5cuXRrfuXNnBtvAYDBk3G63oqpqZm5uzgrgSDKZjBoMhueZTAbc5XIhFouVEtFTxhiOHTs2dv78eS8%2BEfv374%2BoqpqZnZ21cs5PJJPJPlmWkyynnBuMMTQ0NHi7uro%2BmVyDx%2BPxulwu71ZOlkqlSonoJhGhvb39s8k1nDx50ss5hyRJN9PpdKlERB2aWjSVaEilUvzBgwcORVEs5eXloXPnzk1sV8BkMiUdDofP7%2FdXZ7PZDilnIhw4cGBeS1pbW2P37t1zBwKBikQiUUREWFhYsHHO0d7evm0Ru90%2B%2F%2BrVq2rO%2BXGJiJxEhMrKyhgAjI6OWoeHh5tWVla%2B4JzDZrO9bW5unhwcHGzz%2B%2F32np4e%2BxaDbfoHAMxmc6ijo2O0oqIiJkkSNjY2HBIRmRljMJvNyWfPnln7%2B%2FtPMMZQXl6%2B0NbW9qK2tjYcj8floaEhqKpq%2BHCkbD3PzMwYBgYG0NXV9UuusFna2kEgELAQEQ4dOvSis7PzN41Ar9dnrl27NqCNkv%2FC3bt3zy4tLVmICJxzEBFJRBQmorLFxcWCqqqq0Pj4eO3Y2JhbUZTdra2tL2pra8OJRGLHnTt3zkqS9K%2BhuHU4EhHMZnMoGo0W5OIh7nK5jjLGKq1W69vDhw8rRqMxMjc3t2t5eXnX5ORklc%2FnM%2Bfl5SWnpqa%2B0uv1K%2Fn5%2BWs6nW5NluXNd15e3ppOp1uz2WyzZ86cGQ0Gg6ZAIFCZzWZ%2FlYjokRDiuN%2Fvt7W0tMw3NTUpbrd78P79%2B%2B5gMFgRiUTKHj58WMYYQ3V19etTp05tq6Lp6Wkb5xxCiEfc7XZPM8a6FxcXTfX19a%2F1en2Gcy5qamreNjY2%2FqGq6joRZe12%2B9Tp06e3JY%2FFYgWPHz8%2Bmhvr3%2FCWlpbk%2Bvp6PmOseWVlBS6XS9GSJUkSdrs93NDQ8Oe%2BffvC%2F8fJIyMjddFo9Esi6pVleVjT2m0A8Hq9zqGhIefnjoknT544A4GAM%2FeDbxMReFNTE0pKSpKqqsaI6Pj8%2FLxVVdWM3W6PfCr5xMTE1zllXS0uLn6aSqXAGxsbodPpoNfrn6uqCs75EUVRrJFIZMfevXsXdTrdxseIE4mEPDIyUu%2F3%2B%2Btynd8yGo29RIR0Og26fv06ioqKwBgD5xzv3r27zBjrIyJIkgSHwzFZWVmp7NmzJ1ZaWpoAgGg0WqgoSvHMzIw1GAw6tvjhitFo7NPW5fv370Hd3d0oKCgA53zTQMvLy%2BVCiKuSJH0rSdLmztZytIWv5RPRD0T0Y3Fx8dzWfby6ugopHo%2F%2Fw4mcc8iyPMc5v5FOp7%2FPZrOdQohWInIC2C2EgBBigYi8Qoifs9lsv06nWyIiaFxagXg8jr8GAGxuIe7LBeWhAAAAAElFTkSuQmCC%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dmanipulation%20div%2Evis%2Dbutton%2Evis%2Dnone%3Ahover%7Bbox%2Dshadow%3A1px%201px%208px%20transparent%3Bcursor%3Adefault%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dmanipulation%20div%2Evis%2Dbutton%2Evis%2Dnone%3Aactive%7Bbox%2Dshadow%3A1px%201px%208px%20transparent%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dmanipulation%20div%2Evis%2Dbutton%2Evis%2Dnone%7Bpadding%3A0%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dmanipulation%20div%2Enotification%7Bmargin%3A2px%3Bfont%2Dweight%3A700%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dmanipulation%20div%2Evis%2Dbutton%2Evis%2Dadd%7Bbackground%2Dimage%3Adata%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89%2BbN%2FrXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz%2FSMBAPh%2BPDwrIsAHvgABeNMLCADATZvAMByH%2Fw%2FqQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf%2BbTAICd%2BJl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA%2Fg88wAAKCRFRHgg%2FP9eM4Ors7ONo62Dl8t6r8G%2FyJiYuP%2B5c%2BrcEAAAOF0ftH%2BLC%2BzGoA7BoBt%2FqIl7gRoXgugdfeLZrIPQLUAoOnaV%2FNw%2BH48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl%2FAV%2F1s%2BX48%2FPf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H%2FLcL%2F%2Fwd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s%2BwM%2B3zUAsGo%2BAXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93%2F%2B8%2F%2FUegJQCAZkmScQAAXkQkLlTKsz%2FHCAAARKCBKrBBG%2FTBGCzABhzBBdzBC%2FxgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD%2FphCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8%2BQ8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8%2BxdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR%2BcQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI%2BksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG%2BQh8lsKnWJAcaT4U%2BIoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr%2Bh0uhHdlR5Ol9BX0svpR%2BiX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK%2BYTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI%2BpXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q%2FpH5Z%2FYkGWcNMw09DpFGgsV%2FjvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY%2FR27iz2qqaE5QzNKM1ezUvOUZj8H45hx%2BJx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4%2FOBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up%2B6Ynr5egJ5Mb6feeb3n%2Bhx9L%2F1U%2FW36p%2FVHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm%2Beb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw%2B6TvZN9un2N%2FT0HDYfZDqsdWh1%2Bc7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc%2BLpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26%2FuNu5p7ofcn8w0nymeWTNz0MPIQ%2BBR5dE%2FC5%2BVMGvfrH5PQ0%2BBZ7XnIy9jL5FXrdewt6V3qvdh7xc%2B9j5yn%2BM%2B4zw33jLeWV%2FMN8C3yLfLT8Nvnl%2BF30N%2FI%2F9k%2F3r%2F0QCngCUBZwOJgUGBWwL7%2BHp8Ib%2BOPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo%2Bqi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt%2F87fOH4p3iC%2BN7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi%2FRNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z%2Bpn5mZ2y6xlhbL%2BxW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a%2FzYnKOZarnivN7cyzytuQN5zvn%2F%2FtEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1%2B1dT1gvWd%2B1YfqGnRs%2BFYmKrhTbF5cVf9go3HjlG4dvyr%2BZ3JS0qavEuWTPZtJm6ebeLZ5bDpaql%2BaXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO%2FPLi8ZafJzs07P1SkVPRU%2BlQ27tLdtWHX%2BG7R7ht7vPY07NXbW7z3%2FT7JvttVAVVN1WbVZftJ%2B7P3P66Jqun4lvttXa1ObXHtxwPSA%2F0HIw6217nU1R3SPVRSj9Yr60cOxx%2B%2B%2Fp3vdy0NNg1VjZzG4iNwRHnk6fcJ3%2FceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w%2B0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb%2B%2B6EHTh0kX%2Fi%2Bc7vDvOXPK4dPKy2%2BUTV7hXmq86X23qdOo8%2FpPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb%2F1tWeOT3dvfN6b%2FfF9%2FXfFt1%2Bcif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v%2B3Njv3H9qwHeg89HcR%2FcGhYPP%2FpH1jw9DBY%2BZj8uGDYbrnjg%2BOTniP3L96fynQ89kzyaeF%2F6i%2FsuuFxYvfvjV69fO0ZjRoZfyl5O%2FbXyl%2FerA6xmv28bCxh6%2ByXgzMV70VvvtwXfcdx3vo98PT%2BR8IH8o%2F2j5sfVT0Kf7kxmTk%2F8EA5jz%2FGMzLdsAAEEOaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu%2B7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI%2FPgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjUtYzAyMSA3OS4xNTQ5MTEsIDIwMTMvMTAvMjktMTE6NDc6MTYgICAgICAgICI%2BCiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI%2BCiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w%2BCiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU%2BMjAxNC0wMi0wNFQxNDo0MDoyOSswMTowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTQtMDItMDRUMTQ6NDA6MjkrMDE6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjVkNWIwNmQwLTVmMjAtOGE0NC1hMzIwLWZmMTEzMzQwNDc0YjwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ%2BeG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ%2BCiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24%2BY3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgPC9yZGY6bGk%2BCiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6RUE2MEEyNEUxOTg0RTMxMUFEQUZFRkU2RUMzMzNFMDM8L3N0RXZ0Omluc3RhbmNlSUQ%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDEtMjNUMTk6MTg6MDcrMDE6MDA8L3N0RXZ0OndoZW4%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24%2Bc2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ%2BeG1wLmlpZDo2OWVmYWE1NS01ZTI5LTIzNGUtYTUzMy0xNDkxYjM1NDNmYmE8L3N0RXZ0Omluc3RhbmNlSUQ%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDItMDRUMTQ6NDA6MjkrMDE6MDA8L3N0RXZ0OndoZW4%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ%2BCiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jb252ZXJ0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM%2BZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZzwvc3RFdnQ6cGFyYW1ldGVycz4KICAgICAgICAgICAgICAgPC9yZGY6bGk%2BCiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmRlcml2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM%2BY29udmVydGVkIGZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9wbmc8L3N0RXZ0OnBhcmFtZXRlcnM%2BCiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjVkNWIwNmQwLTVmMjAtOGE0NC1hMzIwLWZmMTEzMzQwNDc0Yjwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4%2BMjAxNC0wMi0wNFQxNDo0MDoyOSswMTowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ%2BQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ%2BLzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk%2BCiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8eG1wTU06RGVyaXZlZEZyb20gcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICA8c3RSZWY6aW5zdGFuY2VJRD54bXAuaWlkOjY5ZWZhYTU1LTVlMjktMjM0ZS1hNTMzLTE0OTFiMzU0M2ZiYTwvc3RSZWY6aW5zdGFuY2VJRD4KICAgICAgICAgICAgPHN0UmVmOmRvY3VtZW50SUQ%2BeG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwvc3RSZWY6ZG9jdW1lbnRJRD4KICAgICAgICAgICAgPHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ%2BCiAgICAgICAgIDwveG1wTU06RGVyaXZlZEZyb20%2BCiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU%2BCiAgICAgICAgIDxwaG90b3Nob3A6SUNDUHJvZmlsZT5zUkdCIElFQzYxOTY2LTIuMTwvcGhvdG9zaG9wOklDQ1Byb2ZpbGU%2BCiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24%2BCiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDA5MC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24%2BNzIwMDkwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24%2BCiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE%2BCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw%2FeHBhY2tldCBlbmQ9InciPz5WKqp9AAAAIGNIUk0AAHolAACAgwAA%2Bf8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAYXSURBVHjafFZtUFTXGX7e9z27sveuMCwYV8ElrA7YSFYHtJUPkaaI0aRqG8wP00zUzljDINNSA%2F2ROtpO24SxnahlxjYd7SSjmUkymcxYlDhQPzHGisEVp8HwYWCVVVgEsrsuLnL74%2B5uqTF9Z%2B7cO%2Fd8PO95zvO851BlZSV0XQcAMDOYGQBARDhX3JRmMDYZwLPMWAzGHACYIgwS46oBNBNwtOL8CwE8EkSEUCgE2rJlC2w2G4go8Zwo%2FbMDgnoG6gxLfAAAYvPDMCCszKTAMIAGAhrWnf15AAAMwwARIRKJgDZv3gy73Q4iAjPjxIr9VVOMRhbAYKB8zvrO0llrfEsdKwLZek6YAPSFvtSu3GtLawu0ZJ6625SHGBQB1T88t6MxvopgMAjaunUrdF0HM%2BP4yv27DMYeJmB1RqW3Jnf3tQX2p0L4P9EXuqEd7PmDp%2BXuMU9sRbvXnnt1TxxACgoKYLVacbzsQDUJGkSATe6qi28uPtzusM6Kxie6NHLGUX3lxVUNX9StPHnn4wy3njuUYcu6n2pNi66avcEXnByP%2Fnv8aiaIyrqz2gO5A9%2B9FI1GIfn5%2BWhZdTAdjFMkwMvZOy7uWnTAOz3L4Yk71m3t69fdfTDoUGTBeHTUfiHQ6lo7Z2OXJvpDAChKe%2BaOCdKRKWxZ2%2B1qb3yyd3GYmRkQ7GQBVs99wfv6on3eR2k4PdTkDEbH7IuS8%2Fsvld%2F561PJS%2FpDk1%2Fbzwx94pze7xc5v%2FH%2BYPY6r5BAkdrJzODTK46lE6PeYEJt7u%2B8j%2BOZwCBiEAgAoNgKJoEQf6PvNvdrXgtZoNhSf7q0KZ3B2AQmVMze0Jmt54S%2FDcDCVig2NcvEUGxJAE4Pl%2BYOr0iv6BRSIPAmBeBZAmHlE2sH4p1uhrq1s0MnnEQMBsf8wRASAICQQCCITN1X7%2FsOuc0kgOVp3%2FfPs2WHv%2BcoG7gQOJUnLGsUCTxEjPzUohEA%2BNfIWUdtx0%2BefzA1kSSkIGyBAQNCKgHAEBAJ3u79U7kiAcWoem%2Fgb5Fd33nrH3kp%2BSMWtuAB%2BGllMJxMjCx9QRgA3uiqL5kwHiTlpxb3smlfMDGYGPP1hcMAkJvs8ScpfdJspdj%2BMK6Pf%2B5%2Bu29vyb4lR4%2BBGEziVESAkEpw6Av1OhUpHCz4qOXbzFWz4Ncdj%2Fv%2Fo08Lt92ODDgZDCEFJYoUGH4mzugP92puPTf0pD3H7wvfdFZdqSxnMtWjoGAAmG9fOLxjwesdjT2%2FXzIQ7ks3sycYMSEwGHNtWf5bkX5NkYCJBxUBXiGV0XHvosOt54Zey33j%2FK%2B8P33%2B%2BvjnbiGJbbLE%2BJ9SANAb6nJ2B79wcUwETAwQQ7fMjPzMvfP8ja87HUIKMOiaAqMZhrGmLdAy78eZrwwsTS0eObTs%2BIdtgVanxBUExqGbb5VzrIISGIoUXsmqbgEhJldCQWqRf27SvPAn%2Fo8XmgLhZsUkR4ll37mhk3n94Z4OlzY%2F7NLcYZfm7o1z2zT4vsvUNSXqprBCkmiTFbPX90%2Ffh8GIT2sf%2BzTPdDMf4dVnNg4z%2BE0ixsGeBs9jd5ViSgLHjCb%2FpeaR%2BMD3d4%2FZJg2llyuG2Vwy7QWAs8PNnn1f7vkGSGxAzE6mk%2Bkxkx%2Fp%2F4unffSCR0hAoL1EBCYiPNdWNcwkNQTCR7feWX6g%2B7f%2FA7I8rcw%2FU6UEe0Ndrhc%2FW7mtL9ztmqlSgstSS%2FzTJ28dalpOpkRryrwbhwBACgsLMWPGDOT4ll3qyeqAkJTdCF7P%2FCrUY%2FGkLL1rE%2B2hTbSH8%2B0Lb%2FWEuhzhyaA905blf9Vd%2F895WnZwLHrPevir%2FcvOB1oLYpTtLrm6oYGIMDExAaqtrUVKSgqYGSKCk0WHq5ikkWEWtNL0imv5qUW%2BRclLRjJsrhBAuH1%2FQL8R7HR4xy5nescuP23E6hOA6mLv%2Bsb4uTw6Ogqqq6uDpmkQkcStorX4XRcM1FjZ%2BkvFFjCJKU1WpkNJJUqIMtX1RyLeX3JtQ0JRhmGYZ%2FL27duRnJycuFGISOJ9pqh5lrB6iYgqGOxRrOaa54DcZmKvkJxk8JHC9rKh%2BKVhOsD4%2BDj%2BMwADIf8n5m4xGwAAAABJRU5ErkJggg%3D%3D%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dedit%2Dmode%20div%2Evis%2Dbutton%2Evis%2Dedit%2Cdiv%2Evis%2Dnetwork%20div%2Evis%2Dmanipulation%20div%2Evis%2Dbutton%2Evis%2Dedit%7Bbackground%2Dimage%3Adata%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89%2BbN%2FrXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz%2FSMBAPh%2BPDwrIsAHvgABeNMLCADATZvAMByH%2Fw%2FqQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf%2BbTAICd%2BJl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA%2Fg88wAAKCRFRHgg%2FP9eM4Ors7ONo62Dl8t6r8G%2FyJiYuP%2B5c%2BrcEAAAOF0ftH%2BLC%2BzGoA7BoBt%2FqIl7gRoXgugdfeLZrIPQLUAoOnaV%2FNw%2BH48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl%2FAV%2F1s%2BX48%2FPf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H%2FLcL%2F%2Fwd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s%2BwM%2B3zUAsGo%2BAXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93%2F%2B8%2F%2FUegJQCAZkmScQAAXkQkLlTKsz%2FHCAAARKCBKrBBG%2FTBGCzABhzBBdzBC%2FxgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD%2FphCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8%2BQ8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8%2BxdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR%2BcQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI%2BksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG%2BQh8lsKnWJAcaT4U%2BIoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr%2Bh0uhHdlR5Ol9BX0svpR%2BiX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK%2BYTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI%2BpXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q%2FpH5Z%2FYkGWcNMw09DpFGgsV%2FjvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY%2FR27iz2qqaE5QzNKM1ezUvOUZj8H45hx%2BJx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4%2FOBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up%2B6Ynr5egJ5Mb6feeb3n%2Bhx9L%2F1U%2FW36p%2FVHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm%2Beb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw%2B6TvZN9un2N%2FT0HDYfZDqsdWh1%2Bc7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc%2BLpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26%2FuNu5p7ofcn8w0nymeWTNz0MPIQ%2BBR5dE%2FC5%2BVMGvfrH5PQ0%2BBZ7XnIy9jL5FXrdewt6V3qvdh7xc%2B9j5yn%2BM%2B4zw33jLeWV%2FMN8C3yLfLT8Nvnl%2BF30N%2FI%2F9k%2F3r%2F0QCngCUBZwOJgUGBWwL7%2BHp8Ib%2BOPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo%2Bqi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt%2F87fOH4p3iC%2BN7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi%2FRNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z%2Bpn5mZ2y6xlhbL%2BxW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a%2FzYnKOZarnivN7cyzytuQN5zvn%2F%2FtEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1%2B1dT1gvWd%2B1YfqGnRs%2BFYmKrhTbF5cVf9go3HjlG4dvyr%2BZ3JS0qavEuWTPZtJm6ebeLZ5bDpaql%2BaXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO%2FPLi8ZafJzs07P1SkVPRU%2BlQ27tLdtWHX%2BG7R7ht7vPY07NXbW7z3%2FT7JvttVAVVN1WbVZftJ%2B7P3P66Jqun4lvttXa1ObXHtxwPSA%2F0HIw6217nU1R3SPVRSj9Yr60cOxx%2B%2B%2Fp3vdy0NNg1VjZzG4iNwRHnk6fcJ3%2FceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w%2B0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb%2B%2B6EHTh0kX%2Fi%2Bc7vDvOXPK4dPKy2%2BUTV7hXmq86X23qdOo8%2FpPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb%2F1tWeOT3dvfN6b%2FfF9%2FXfFt1%2Bcif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v%2B3Njv3H9qwHeg89HcR%2FcGhYPP%2FpH1jw9DBY%2BZj8uGDYbrnjg%2BOTniP3L96fynQ89kzyaeF%2F6i%2FsuuFxYvfvjV69fO0ZjRoZfyl5O%2FbXyl%2FerA6xmv28bCxh6%2ByXgzMV70VvvtwXfcdx3vo98PT%2BR8IH8o%2F2j5sfVT0Kf7kxmTk%2F8EA5jz%2FGMzLdsAAEEOaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu%2B7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI%2FPgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjUtYzAyMSA3OS4xNTQ5MTEsIDIwMTMvMTAvMjktMTE6NDc6MTYgICAgICAgICI%2BCiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI%2BCiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w%2BCiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU%2BMjAxNC0wMi0wNVQxNDoxMjoyNSswMTowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTQtMDItMDVUMTQ6MTI6MjUrMDE6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjY5OTM3ZGZjLTJjNzQtYTU0YS05OTIzLTQyMmZhNDNkMjljNDwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ%2BeG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ%2BCiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24%2BY3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgPC9yZGY6bGk%2BCiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6RUE2MEEyNEUxOTg0RTMxMUFEQUZFRkU2RUMzMzNFMDM8L3N0RXZ0Omluc3RhbmNlSUQ%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDEtMjNUMTk6MTg6MDcrMDE6MDA8L3N0RXZ0OndoZW4%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24%2Bc2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ%2BeG1wLmlpZDozOWNhNzE5ZC03YzNlLTUyNGEtYmY1NS03NGVmMmM1MzE0YTc8L3N0RXZ0Omluc3RhbmNlSUQ%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDItMDVUMTQ6MTI6MjUrMDE6MDA8L3N0RXZ0OndoZW4%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ%2BCiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jb252ZXJ0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM%2BZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZzwvc3RFdnQ6cGFyYW1ldGVycz4KICAgICAgICAgICAgICAgPC9yZGY6bGk%2BCiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmRlcml2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM%2BY29udmVydGVkIGZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9wbmc8L3N0RXZ0OnBhcmFtZXRlcnM%2BCiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjY5OTM3ZGZjLTJjNzQtYTU0YS05OTIzLTQyMmZhNDNkMjljNDwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4%2BMjAxNC0wMi0wNVQxNDoxMjoyNSswMTowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ%2BQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ%2BLzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk%2BCiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8eG1wTU06RGVyaXZlZEZyb20gcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICA8c3RSZWY6aW5zdGFuY2VJRD54bXAuaWlkOjM5Y2E3MTlkLTdjM2UtNTI0YS1iZjU1LTc0ZWYyYzUzMTRhNzwvc3RSZWY6aW5zdGFuY2VJRD4KICAgICAgICAgICAgPHN0UmVmOmRvY3VtZW50SUQ%2BeG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwvc3RSZWY6ZG9jdW1lbnRJRD4KICAgICAgICAgICAgPHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ%2BCiAgICAgICAgIDwveG1wTU06RGVyaXZlZEZyb20%2BCiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU%2BCiAgICAgICAgIDxwaG90b3Nob3A6SUNDUHJvZmlsZT5zUkdCIElFQzYxOTY2LTIuMTwvcGhvdG9zaG9wOklDQ1Byb2ZpbGU%2BCiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24%2BCiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDA5MC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24%2BNzIwMDkwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24%2BCiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE%2BCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw%2FeHBhY2tldCBlbmQ9InciPz4ykninAAAAIGNIUk0AAHolAACAgwAA%2Bf8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAYpSURBVHjafFZtTFvnFX7Oea%2BNudiY2Hwam4CBlgQwXdKREDKUoYg0jbRJ29RJ2VZ1mjRFUxSpA3VTfkzJfkQbS7spU6rtx5Z2UtppScjaHxvLuiatWi2jLEoMIUDCh23g2gbj7%2BtPuPvhOurawPl1dc99n%2Bc55z33fV46ceIEZFkGADAziAgAQERoe%2F9ZK4GPM%2FAcgbsIXAcABCgMvkfAqAa89eDoJyF8LogIqqqChoaGYDAYHr8kItS8uc8iIH6iAa9IkAo5EAQX8pqmgUVBCBggYFgDhv0%2FGAsBgKZpICJkMhnQ4OAgZFkGEYGZUXmp%2B0cS%2BCKBwWA0DVRPOg5Zl2q6zaHyJlnVAMQXVTkwHrUqH0Xsvn%2BtdQAAMQDgpPLS2MViFY8rkGUZzIzaS%2Ft%2FxqCzGggtz9e697zsnKhoLUtim4jOq%2FLE6x7X0nsh16dEZ5a%2FO3a2SCAOHjwInU6Hujd6ThJ4mCDQ%2Bb2G232v7v6vwarPbQn8MGlMr%2BX0kpE3Wr5Zt5hL5HPhqYSdQIfKJ%2ByhxDPKWC6Xg%2Bjt7UXD5b5KBt1kCHS85Ljd8%2FOn3NupfnhFaZj4rWff1B98B1R%2FhnUmKd36bdtCNl4g0en4edNE%2FcXwLq8qMTMIPAQwmo%2FWuHvObA8%2B9c58k%2FdKtD0TyZWXN5YGA7ej7epKxspM%2F%2F7SoNOdWc%2FJyq2wiwhDzPxT8cP0jys3VMM7OmL0%2F77zn4Ydui3b8uiK0jD7RrA77c9Wd57cefPpF%2B2T6bWsFPWkaiPTCWvTsZpHFU%2BXrS%2B8G3AR08F6X%2B1FJvBxQQzHQOWk2SmrW4FPX%2FU2LVwPuDZj%2BfJKl2khPpeyAqA9rzR%2FYqwuiWXX8taN%2FCabGkrVuq9YJlkQQDjOAJ5jAhz9Vt9W4N5%2FrNp8I%2BvtMV%2FaZm4zLnUNNt0urdYnF68HWoJj4Wo1mLGUNRr8LEgDgNqeCh8xQIKOsgC7iAjVe83rT9zQa8uNM28u70kspessu8q8zq%2FV3NcZpVzb9%2B0zmVhOvvvrhaMVzrJg0zeq7xMVCCwdpnWSGBqjUyJwLTFgbvxie3w31uoWR1Y74r60rdxZqrR8q85t2W2MGCp12bm%2FKC3hyaSTiMhxuGrKcahqpbjOaDOoEhOEoFqJQCCJvqA85I6bfTdDjQlf2lbxVNlS6wt19yy7jRHZZlDnrinNj%2F6sHMhnNw2Ogco7O79e5fm%2FxQywRBBCEAuwn4gQ96bkYj4Vyuq9N1Z3Bj4Od5bs0MXt%2FdZZ21ctiqFan174q985P%2BLfp%2BU1g7XDON%2F1ctP458WlVjLyJhOISZE0wM0S1QfuRC3lTjkJAKKEtNC9eIOhSh9xHLZOJRZTFuXDsEoStLkR%2F768ummsaJG9Pb9oe%2B9J%2BxaeSVokiQDSJphAo5uaBuWjiKP4QTqS1cUWU7ayesN66wu22frD1vmVW6GW6T8u9eVjGyZzs%2Bw78Nqu0a2mbvVu1KEJQAgeZRL0liQYyx%2BGOmKeQpu0rMYsAJPNEFGD2dLodLIy6c9Ys7G8yeSUl3tf2%2FX3rcBVJSOv34l3sCBogi7z1LH%2FrBHjl4IJ93%2FncQFAnjeImJD0Z8zuCwu9q3djDXqTlAKID5xv%2B9t2R8n8VcUFBljQ8Gyfe40BYBM4DwDLt8Kue79ZcFkbzfEdbUbv%2BoN4c9KTtsfm1MbYQqqh%2B2zrVZYKs%2F7Ef%2Bbyimt1POYiJhDhPBFBIiIEXhxfs7%2FdfYoIF%2BauBfYTE%2Fpebx%2FV8hqBP2ODvD34yvuh%2FWCAmU75Bx6sIgaI%2Fv5%2B6PV6JLqUsYr7dpDAoehs0h73pHTWrvKgThYbRSt9UmSjef3MpaUvBz4O72UmADgTOPJguGiZor%2B%2FHyUlJWBmJFz%2BD8xTtlUiOpbwpmrmrweeSXrT%2Bg11k4SBN3RGKUcAVCVdFhyP1nreDbY%2F%2FNPyEXUlU%2FPp4XYycGT6V0Ux2WwWdO7cOZSWlkII8diX7SPPNgDaKdbxoNAxwATBAEkEEgSWCEQAqPAMwqvMdCEwMO0tVqZpWsGTT58%2BDaPR%2BPhGIYQAAAgh0P7B3ioW%2FB0iGiCGiwXbCuOHFSJys6AbYFye2T%2BxWhT3WYJEIoH%2FDQBMw3kes8OJPgAAAABJRU5ErkJggg%3D%3D%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dedit%2Dmode%20div%2Evis%2Dbutton%2Evis%2Dedit%2Evis%2Dedit%2Dmode%7Bbackground%2Dcolor%3A%23fcfcfc%3Bborder%3A1px%20solid%20%23ccc%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dmanipulation%20div%2Evis%2Dbutton%2Evis%2Dconnect%7Bbackground%2Dimage%3Adata%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89%2BbN%2FrXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz%2FSMBAPh%2BPDwrIsAHvgABeNMLCADATZvAMByH%2Fw%2FqQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf%2BbTAICd%2BJl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA%2Fg88wAAKCRFRHgg%2FP9eM4Ors7ONo62Dl8t6r8G%2FyJiYuP%2B5c%2BrcEAAAOF0ftH%2BLC%2BzGoA7BoBt%2FqIl7gRoXgugdfeLZrIPQLUAoOnaV%2FNw%2BH48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl%2FAV%2F1s%2BX48%2FPf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H%2FLcL%2F%2Fwd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s%2BwM%2B3zUAsGo%2BAXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93%2F%2B8%2F%2FUegJQCAZkmScQAAXkQkLlTKsz%2FHCAAARKCBKrBBG%2FTBGCzABhzBBdzBC%2FxgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD%2FphCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8%2BQ8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8%2BxdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR%2BcQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI%2BksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG%2BQh8lsKnWJAcaT4U%2BIoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr%2Bh0uhHdlR5Ol9BX0svpR%2BiX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK%2BYTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI%2BpXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q%2FpH5Z%2FYkGWcNMw09DpFGgsV%2FjvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY%2FR27iz2qqaE5QzNKM1ezUvOUZj8H45hx%2BJx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4%2FOBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up%2B6Ynr5egJ5Mb6feeb3n%2Bhx9L%2F1U%2FW36p%2FVHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm%2Beb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw%2B6TvZN9un2N%2FT0HDYfZDqsdWh1%2Bc7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc%2BLpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26%2FuNu5p7ofcn8w0nymeWTNz0MPIQ%2BBR5dE%2FC5%2BVMGvfrH5PQ0%2BBZ7XnIy9jL5FXrdewt6V3qvdh7xc%2B9j5yn%2BM%2B4zw33jLeWV%2FMN8C3yLfLT8Nvnl%2BF30N%2FI%2F9k%2F3r%2F0QCngCUBZwOJgUGBWwL7%2BHp8Ib%2BOPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo%2Bqi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt%2F87fOH4p3iC%2BN7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi%2FRNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z%2Bpn5mZ2y6xlhbL%2BxW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a%2FzYnKOZarnivN7cyzytuQN5zvn%2F%2FtEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1%2B1dT1gvWd%2B1YfqGnRs%2BFYmKrhTbF5cVf9go3HjlG4dvyr%2BZ3JS0qavEuWTPZtJm6ebeLZ5bDpaql%2BaXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO%2FPLi8ZafJzs07P1SkVPRU%2BlQ27tLdtWHX%2BG7R7ht7vPY07NXbW7z3%2FT7JvttVAVVN1WbVZftJ%2B7P3P66Jqun4lvttXa1ObXHtxwPSA%2F0HIw6217nU1R3SPVRSj9Yr60cOxx%2B%2B%2Fp3vdy0NNg1VjZzG4iNwRHnk6fcJ3%2FceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w%2B0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb%2B%2B6EHTh0kX%2Fi%2Bc7vDvOXPK4dPKy2%2BUTV7hXmq86X23qdOo8%2FpPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb%2F1tWeOT3dvfN6b%2FfF9%2FXfFt1%2Bcif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v%2B3Njv3H9qwHeg89HcR%2FcGhYPP%2FpH1jw9DBY%2BZj8uGDYbrnjg%2BOTniP3L96fynQ89kzyaeF%2F6i%2FsuuFxYvfvjV69fO0ZjRoZfyl5O%2FbXyl%2FerA6xmv28bCxh6%2ByXgzMV70VvvtwXfcdx3vo98PT%2BR8IH8o%2F2j5sfVT0Kf7kxmTk%2F8EA5jz%2FGMzLdsAAEEOaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu%2B7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI%2FPgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjUtYzAyMSA3OS4xNTQ5MTEsIDIwMTMvMTAvMjktMTE6NDc6MTYgICAgICAgICI%2BCiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI%2BCiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w%2BCiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU%2BMjAxNC0wMi0wNFQxNDozODo1NyswMTowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTQtMDItMDRUMTQ6Mzg6NTcrMDE6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjlmYjUwMDU0LWE3ODEtMWQ0OC05ZTllLTU2ZWQ5YzhlYjdjNjwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ%2BeG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ%2BCiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24%2BY3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgPC9yZGY6bGk%2BCiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6RUE2MEEyNEUxOTg0RTMxMUFEQUZFRkU2RUMzMzNFMDM8L3N0RXZ0Omluc3RhbmNlSUQ%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDEtMjNUMTk6MTg6MDcrMDE6MDA8L3N0RXZ0OndoZW4%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24%2Bc2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ%2BeG1wLmlpZDo3ZWRhMjI0MC0yYTQxLTNlNDQtYWM2My1iNzNiYTE5OWI3Y2E8L3N0RXZ0Omluc3RhbmNlSUQ%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDItMDRUMTQ6Mzg6NTcrMDE6MDA8L3N0RXZ0OndoZW4%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ%2BCiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jb252ZXJ0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM%2BZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZzwvc3RFdnQ6cGFyYW1ldGVycz4KICAgICAgICAgICAgICAgPC9yZGY6bGk%2BCiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmRlcml2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM%2BY29udmVydGVkIGZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9wbmc8L3N0RXZ0OnBhcmFtZXRlcnM%2BCiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjlmYjUwMDU0LWE3ODEtMWQ0OC05ZTllLTU2ZWQ5YzhlYjdjNjwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4%2BMjAxNC0wMi0wNFQxNDozODo1NyswMTowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ%2BQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ%2BLzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk%2BCiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8eG1wTU06RGVyaXZlZEZyb20gcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICA8c3RSZWY6aW5zdGFuY2VJRD54bXAuaWlkOjdlZGEyMjQwLTJhNDEtM2U0NC1hYzYzLWI3M2JhMTk5YjdjYTwvc3RSZWY6aW5zdGFuY2VJRD4KICAgICAgICAgICAgPHN0UmVmOmRvY3VtZW50SUQ%2BeG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwvc3RSZWY6ZG9jdW1lbnRJRD4KICAgICAgICAgICAgPHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ%2BCiAgICAgICAgIDwveG1wTU06RGVyaXZlZEZyb20%2BCiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU%2BCiAgICAgICAgIDxwaG90b3Nob3A6SUNDUHJvZmlsZT5zUkdCIElFQzYxOTY2LTIuMTwvcGhvdG9zaG9wOklDQ1Byb2ZpbGU%2BCiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24%2BCiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDA5MC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24%2BNzIwMDkwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24%2BCiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE%2BCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw%2FeHBhY2tldCBlbmQ9InciPz4ubxs%2BAAAAIGNIUk0AAHolAACAgwAA%2Bf8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAUtSURBVHjajJZ%2FbNT1Gcdfz%2FP53PV6B4W7VltLqdAaplIOiMOoyxxJCSs%2FGv%2FyB4gzJroAosmmDklwkYWR0bQsdmkykoojTpcsWYLxD%2FlRZdMQkTHRtkLZRqG0tIVe7662vTu43n32x%2FVKZ%2Fjh89cn38%2FzvN7P5%2Fl88zwf2blzJz6fDwARQUSm1n8s31CM0%2FVAnbNmsUPuAsDpgEO%2BBg4C7%2F%2Fiyv5hvmMiQiqVQpqamvB6vVNwEeG1JZtCBrYi%2FMrkAwDNgjhwAlbzICBLA0rDb0%2B%2F839C6XQaaWxspLCw8Dp86cbNmqVFJQddE6KzdjZ9D89g%2BB6fSyCOcyn1nxil%2BO9xKg5HqWFSHGXLjrP7W%2FICqVQK2bNnDz6fDxFh65KNvxbHDhF4rJj2bXPo%2BIGfcW5h5xL4f99P%2BFCEMIAob75x9t0dAMlkElNXV4e1lteXbNqiQoMaeOFOjrdU868SD2luYyEP6dUh%2BsYmSHeOU6GO5Z8VLx5%2BNNZxIpPJ5AS2L3upROCoCvz8Lo7vnkf77cAHhpiz%2FzIL9vWz8L8p%2FNvupmM0Q7pjnAoLqz8tDrc8MnQqYVUVhVdF4LEg7b%2BrvDn8wDDlH0WoPpukLJImSBaMwjcJqmwWts2jPZLG%2F8kwYVFeVdXXZcFf4yVDc2cNKfBFmD9X%2B0ncCP58F48eG%2BFeo2CAUkvs4dl0V%2FuJvdXLiiV%2But%2B%2Bn7YLSfxPfMMG54ChzB3WIesVWB2i82bw1AR6fJR7C4VsfYiv6u%2Fk3A9nEgP4zXke8DiYHyAOMK%2BQxPIgnZ9GqSHr1itQJ8DK2fTerDQ%2BS%2FbHRXQJaHSCwNIZ2Xh%2B7%2BS3VAmwNMBA%2FtuPZtErgKquUmdMWIFlRURvdamRNEXGwIWrlP47pTMzLiunxghGMwTLvcTWlHAp77s4QNSrYMQtss6ZMgWqCm5cHoDHO1nbk6K8zEN8%2B3zatv2Hn1b59EqJZdxmYUERg9P9KwpIiAOTdWUWBXuLzB%2FvZG3P1Un4PNp2d1MbmyD45TWCxuCsQm0x56bHGHFYEZwxok7toAA9Sfw3hCcoL%2FNOwi9QO5wmWO1j4JEgZxTkodmcWRGkf3pcX0r8xoAaBixKu4U5%2FxwndM%2B0tpAvS6mP%2BPZK2nb1UBvPEKwKMLDvPj4ESGc55lGy303sdJKQdZB2rkMdctAB%2F4gzN%2B%2FQ2ENNd4LyUi%2FxN%2BbTtquX2thk5nk4wI3gAF%2BOMNcA1nFQDfK%2BBY5GqbkwWabTY5QZhXWlnNx1ntrY1Rz87fuvw29m%2FSn8J%2BPUGAFj5T19baA1IspuBZp7cx1x4SwG1cEf%2BlgRSROs8jGwb%2BHt4QB%2FGSSsAhYano39LWIBxNEIbP14hPDuiyS2VtJuHXQlKKvxM%2FjiXDq%2FD%2FxPlwifGMkJZB2NIoKpr69nxeiZxLHicFSFVWfGqBidIP3LSjrWltD94CyufF%2F4kQgPuVz2Lz93%2BdDRa9eu5QQ8Hg8%2FiXee%2BDy4CKMs7xqn4nwKz9IirhQqmVuB42m8ey%2Bx7LMoD6iAON782eChhqmRuXfvXgKBAKqKqtI0%2F8nNKrQI4BVYXkzHgzPpC88gWuHL%2FcaXrhLoGiN0apSKr0ZZRBZM7q2w5ZnLR1oAnHOMjY0hra2tFBQUYIyZmstvVT1Z6eDlAuEVq7merxmwueNPDXy9PvybjKP5mctHLk4%2FXTKZRJqbm%2FH7%2FVNw1VyEMYbW4FN3WNWnnchKoy5sHeVGBRX6VWi3ymFx7r11Ix8MTX%2Fy5C2RSPC%2FAQB61erowbpqSwAAAABJRU5ErkJggg%3D%3D%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dmanipulation%20div%2Evis%2Dbutton%2Evis%2Ddelete%7Bbackground%2Dimage%3Adata%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89%2BbN%2FrXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz%2FSMBAPh%2BPDwrIsAHvgABeNMLCADATZvAMByH%2Fw%2FqQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf%2BbTAICd%2BJl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA%2Fg88wAAKCRFRHgg%2FP9eM4Ors7ONo62Dl8t6r8G%2FyJiYuP%2B5c%2BrcEAAAOF0ftH%2BLC%2BzGoA7BoBt%2FqIl7gRoXgugdfeLZrIPQLUAoOnaV%2FNw%2BH48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl%2FAV%2F1s%2BX48%2FPf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H%2FLcL%2F%2Fwd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s%2BwM%2B3zUAsGo%2BAXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93%2F%2B8%2F%2FUegJQCAZkmScQAAXkQkLlTKsz%2FHCAAARKCBKrBBG%2FTBGCzABhzBBdzBC%2FxgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD%2FphCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8%2BQ8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8%2BxdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR%2BcQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI%2BksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG%2BQh8lsKnWJAcaT4U%2BIoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr%2Bh0uhHdlR5Ol9BX0svpR%2BiX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK%2BYTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI%2BpXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q%2FpH5Z%2FYkGWcNMw09DpFGgsV%2FjvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY%2FR27iz2qqaE5QzNKM1ezUvOUZj8H45hx%2BJx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4%2FOBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up%2B6Ynr5egJ5Mb6feeb3n%2Bhx9L%2F1U%2FW36p%2FVHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm%2Beb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw%2B6TvZN9un2N%2FT0HDYfZDqsdWh1%2Bc7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc%2BLpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26%2FuNu5p7ofcn8w0nymeWTNz0MPIQ%2BBR5dE%2FC5%2BVMGvfrH5PQ0%2BBZ7XnIy9jL5FXrdewt6V3qvdh7xc%2B9j5yn%2BM%2B4zw33jLeWV%2FMN8C3yLfLT8Nvnl%2BF30N%2FI%2F9k%2F3r%2F0QCngCUBZwOJgUGBWwL7%2BHp8Ib%2BOPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo%2Bqi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt%2F87fOH4p3iC%2BN7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi%2FRNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z%2Bpn5mZ2y6xlhbL%2BxW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a%2FzYnKOZarnivN7cyzytuQN5zvn%2F%2FtEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1%2B1dT1gvWd%2B1YfqGnRs%2BFYmKrhTbF5cVf9go3HjlG4dvyr%2BZ3JS0qavEuWTPZtJm6ebeLZ5bDpaql%2BaXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO%2FPLi8ZafJzs07P1SkVPRU%2BlQ27tLdtWHX%2BG7R7ht7vPY07NXbW7z3%2FT7JvttVAVVN1WbVZftJ%2B7P3P66Jqun4lvttXa1ObXHtxwPSA%2F0HIw6217nU1R3SPVRSj9Yr60cOxx%2B%2B%2Fp3vdy0NNg1VjZzG4iNwRHnk6fcJ3%2FceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w%2B0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb%2B%2B6EHTh0kX%2Fi%2Bc7vDvOXPK4dPKy2%2BUTV7hXmq86X23qdOo8%2FpPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb%2F1tWeOT3dvfN6b%2FfF9%2FXfFt1%2Bcif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v%2B3Njv3H9qwHeg89HcR%2FcGhYPP%2FpH1jw9DBY%2BZj8uGDYbrnjg%2BOTniP3L96fynQ89kzyaeF%2F6i%2FsuuFxYvfvjV69fO0ZjRoZfyl5O%2FbXyl%2FerA6xmv28bCxh6%2ByXgzMV70VvvtwXfcdx3vo98PT%2BR8IH8o%2F2j5sfVT0Kf7kxmTk%2F8EA5jz%2FGMzLdsAAEEOaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu%2B7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI%2FPgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjUtYzAyMSA3OS4xNTQ5MTEsIDIwMTMvMTAvMjktMTE6NDc6MTYgICAgICAgICI%2BCiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI%2BCiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w%2BCiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU%2BMjAxNC0wMi0wNFQxNDo0MTowNCswMTowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTQtMDItMDRUMTQ6NDE6MDQrMDE6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjc3NDkzYmUxLTEyZGItOTg0NC1iNDYyLTg2NGVmNGIzMzM3MTwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ%2BeG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ%2BCiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24%2BY3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE0LTAxLTIyVDE5OjI0OjUxKzAxOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgPC9yZGY6bGk%2BCiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6RUE2MEEyNEUxOTg0RTMxMUFEQUZFRkU2RUMzMzNFMDM8L3N0RXZ0Omluc3RhbmNlSUQ%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDEtMjNUMTk6MTg6MDcrMDE6MDA8L3N0RXZ0OndoZW4%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDUzYgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24%2Bc2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ%2BeG1wLmlpZDowNmE3NWYwMy04MDdhLWUzNGYtYjk1Zi1jZGU2MjM0Mzg4OGY8L3N0RXZ0Omluc3RhbmNlSUQ%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTQtMDItMDRUMTQ6NDE6MDQrMDE6MDA8L3N0RXZ0OndoZW4%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ%2BCiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ%2BCiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jb252ZXJ0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM%2BZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZzwvc3RFdnQ6cGFyYW1ldGVycz4KICAgICAgICAgICAgICAgPC9yZGY6bGk%2BCiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmRlcml2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnBhcmFtZXRlcnM%2BY29udmVydGVkIGZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9wbmc8L3N0RXZ0OnBhcmFtZXRlcnM%2BCiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjc3NDkzYmUxLTEyZGItOTg0NC1iNDYyLTg2NGVmNGIzMzM3MTwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4%2BMjAxNC0wMi0wNFQxNDo0MTowNCswMTowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ%2BQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ%2BLzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk%2BCiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8eG1wTU06RGVyaXZlZEZyb20gcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICA8c3RSZWY6aW5zdGFuY2VJRD54bXAuaWlkOjA2YTc1ZjAzLTgwN2EtZTM0Zi1iOTVmLWNkZTYyMzQzODg4Zjwvc3RSZWY6aW5zdGFuY2VJRD4KICAgICAgICAgICAgPHN0UmVmOmRvY3VtZW50SUQ%2BeG1wLmRpZDpFQTc2MkY5Njc0ODNFMzExOTQ4QkQxM0UyQkU3OTlBMTwvc3RSZWY6ZG9jdW1lbnRJRD4KICAgICAgICAgICAgPHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjczQjYyQUFEOTE4M0UzMTE5NDhCRDEzRTJCRTc5OUExPC9zdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ%2BCiAgICAgICAgIDwveG1wTU06RGVyaXZlZEZyb20%2BCiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU%2BCiAgICAgICAgIDxwaG90b3Nob3A6SUNDUHJvZmlsZT5zUkdCIElFQzYxOTY2LTIuMTwvcGhvdG9zaG9wOklDQ1Byb2ZpbGU%2BCiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24%2BCiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDA5MC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24%2BNzIwMDkwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjI0PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24%2BCiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE%2BCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw%2FeHBhY2tldCBlbmQ9InciPz4aYJzYAAAAIGNIUk0AAHolAACAgwAA%2Bf8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAYGSURBVHjalJZ7UJTnFcZ%2F73m%2F72PdJY1RbhoQp6lkXRAvmIYxdCUadLVOozPNtGObap1JsKipjiShbdoRbeKEiQHpQK3xj0xa03aamTbaTGyAYV1QGeqFi%2BJyiZFLAlmESBkWRmS3fyzslGkmnZ5%2Fv%2FM873Oe75zzvqqoqAibzQaAiKCUAkApRdHIK%2FNFsx2NR91nOSILADDoJyzNaM4xxbtvPHh0iC%2BJiYkJ1OHDh4mJiUEpFSXPv%2FziPC28TIiXDCOSrAClQDSEpsCwJPIhrEBRQpiSytXlQwDhcBilFPfu3UMVFxdjt9ujFTzfcLBADCoEEAFr1ZbrrNjch2vtEImPBgHob7fTcWE%2BbVXJNJ%2FNiFQlEGLvieXHKmYqGB8fRx05cgSbzYaIsPvywV8pKFaA7fGtLTzz61YWpo%2FxVTHQbufsq5lcez9zWuWhk5mvFwMEg0H0%2BvXrMU2Tn1wp3CtCiQ5DjGd3A%2Fm%2Fv8IDCZP8r4iNmyRrWx%2Fj%2F5qktykZpXKzAjVDVxPzGqemptDr1q1jX3NRnIJarcDKK2hgR2ULXRfncv7UYv7xpovhnhiW5Mz%2BkefeSKO6LJ1A1xzEuk%2FOjm4mRibpuZaMZW3OCtRUND60NmiICCIUShisx7a2sLMiQn4s77uEQgIabnqdfHIlgT1%2FqQeg8vs5dHhdCNB1wYn3RIiC995j26stjAbsNH%2BYiZJCESnS1Y%2FXxIXu8r4YIPv%2FVkVs3CTnTy2ms34xro1%2Bsp9po6sxlTu34ultmsPVvy6is86FCHgO%2BDDs49zpjufBpCG%2BseYOC9OHaTidieicb9ouVAhKtouAseI710ma7pLuqwmgYfHqAFt%2B6WdLoQ%2FLBl11Lm7VudAa8vb72PCin9TlAWIsGGhLACD%2BkSAZnusYBii1XQAPYWDllt6ov2lrBkDBR2%2B6Ofuak2%2F%2F3M%2BG%2FT4wAAPW7fPhKfRTVeqk9qQbFKRmDUTxS3N7QYGYmwzCkqklBGlPDEcTNv%2Bsg9tNCbTXuvBWujE0bHrZj9JE1B%2FwU1Pm5PwJN6YBS9a2kVvQEcWnrh5GTFD3lxkYkqRMgYQlwVldUvDnen73LHTUuqitdKM0eAr9AFQfd1J%2Fyo2aJn%2B2sn4Wdn5qEFODJskgBIjx5T0uCrQA08pnIjS9PERDjPnfOKXAMEBECUoGEIHBj%2B2zkt76UQ6dXheGAev3%2Bcg74Kf6uJPqcicbfuond7cPy4SOiy7%2BtD9nFvZurx00KOk3CNEC%2BmE%2BvjSPBc7IWqgqTaPT60IMcO%2FxsXGa3HfKjRgRdbl7%2FKDg0jtubje6aHj7c7J3dgLQ2zoPwwQ91SooOQdAW1VKVMHty0kA5Bb48BycJn%2FLjWFGbLv4thvvb53kFvjJ%2BXEdWkPfjQVR%2FCcNKYgGMc8JWt5Fa2j%2BMIPPuyI2pa4IoHSkt6vLIuRaQ9q32khzt4GCxtNu6k46GeiIR2lIfDQQsafPzq1LGRGL9Gk9d%2BvrwewvfHPQOoexQVjxdB%2Fauk%2FzmaUMdsfz6bVUtIalT7bxveP1ZHh6GPDPYeSzeD69kcpIfxymFWLNrka%2BljhBTWkWwz2JiJT84YHnz2iPx0P20PkmRF5i6HYiwZFJsn%2FYzdezbzE3cQibY5xV266z6RfXohakb%2BxB9CjanCD9qTbW7Grk4WV38VZm0l6dhQiEw9taHSuDqrS0FIfDwXM3X9mHMsvRAk%2FsauDpQy38P%2BGtzOTGB9mEpkD0C2dS8n8zOjqK9ng8WJZFU%2BJTjasGvaCNXPpvJBPoMlm0OoDNMfWVxONfWNSUPUZ7TUQ56tCZlPwSgMnJSVRpaSmxsbFE1raw82ZxAZZRQUiBYUKGp5UlOX2krBzmoUVjiIKhHge9rfPo%2BWcy3ZeXIYASgL1%2FX5RfMXMvj46OosrLy7HZbGitUUohIuzoem0RofALaOsghgWGjky0MiJTL8b0lOvI8hN1DKXKP0jd3TNTWDgcJhgMoo4ePYrD4Yi%2BKmaeLlprnrtXFo9h%2FAAlG1AqE8yFmBrC%2BjO0bgH9EVpO%2F1F2Dc5g%2F%2FOAsbEx%2Fj0Af%2BUSsQynL1UAAAAASUVORK5CYII%3D%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dedit%2Dmode%20div%2Evis%2Dlabel%2Cdiv%2Evis%2Dnetwork%20div%2Evis%2Dmanipulation%20div%2Evis%2Dlabel%7Bmargin%3A0%200%200%2023px%3Bline%2Dheight%3A25px%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dmanipulation%20div%2Evis%2Dseparator%2Dline%7Bdisplay%3Ainline%2Dblock%3Bwidth%3A1px%3Bheight%3A20px%3Bbackground%2Dcolor%3A%23bdbdbd%3Bmargin%3A5px%207px%200%2015px%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dnavigation%20div%2Evis%2Dbutton%7Bwidth%3A34px%3Bheight%3A34px%3B%2Dmoz%2Dborder%2Dradius%3A17px%3Bborder%2Dradius%3A17px%3Bposition%3Aabsolute%3Bbackground%2Dposition%3A2px%202px%3Bcursor%3Apointer%3Buser%2Dselect%3Anone%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dnavigation%20div%2Evis%2Dbutton%3Ahover%7Bbox%2Dshadow%3A0%200%203px%203px%20rgba%2856%2C207%2C21%2C%2E3%29%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dnavigation%20div%2Evis%2Dbutton%3Aactive%7Bbox%2Dshadow%3A0%200%201px%203px%20rgba%2856%2C207%2C21%2C%2E95%29%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dnavigation%20div%2Evis%2Dbutton%2Evis%2Dup%7Bbackground%2Dimage%3Adata%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89%2BbN%2FrXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz%2FSMBAPh%2BPDwrIsAHvgABeNMLCADATZvAMByH%2Fw%2FqQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf%2BbTAICd%2BJl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA%2Fg88wAAKCRFRHgg%2FP9eM4Ors7ONo62Dl8t6r8G%2FyJiYuP%2B5c%2BrcEAAAOF0ftH%2BLC%2BzGoA7BoBt%2FqIl7gRoXgugdfeLZrIPQLUAoOnaV%2FNw%2BH48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl%2FAV%2F1s%2BX48%2FPf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H%2FLcL%2F%2Fwd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s%2BwM%2B3zUAsGo%2BAXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93%2F%2B8%2F%2FUegJQCAZkmScQAAXkQkLlTKsz%2FHCAAARKCBKrBBG%2FTBGCzABhzBBdzBC%2FxgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD%2FphCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8%2BQ8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8%2BxdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR%2BcQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI%2BksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG%2BQh8lsKnWJAcaT4U%2BIoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr%2Bh0uhHdlR5Ol9BX0svpR%2BiX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK%2BYTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI%2BpXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q%2FpH5Z%2FYkGWcNMw09DpFGgsV%2FjvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY%2FR27iz2qqaE5QzNKM1ezUvOUZj8H45hx%2BJx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4%2FOBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up%2B6Ynr5egJ5Mb6feeb3n%2Bhx9L%2F1U%2FW36p%2FVHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm%2Beb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw%2B6TvZN9un2N%2FT0HDYfZDqsdWh1%2Bc7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc%2BLpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26%2FuNu5p7ofcn8w0nymeWTNz0MPIQ%2BBR5dE%2FC5%2BVMGvfrH5PQ0%2BBZ7XnIy9jL5FXrdewt6V3qvdh7xc%2B9j5yn%2BM%2B4zw33jLeWV%2FMN8C3yLfLT8Nvnl%2BF30N%2FI%2F9k%2F3r%2F0QCngCUBZwOJgUGBWwL7%2BHp8Ib%2BOPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo%2Bqi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt%2F87fOH4p3iC%2BN7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi%2FRNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z%2Bpn5mZ2y6xlhbL%2BxW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a%2FzYnKOZarnivN7cyzytuQN5zvn%2F%2FtEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1%2B1dT1gvWd%2B1YfqGnRs%2BFYmKrhTbF5cVf9go3HjlG4dvyr%2BZ3JS0qavEuWTPZtJm6ebeLZ5bDpaql%2BaXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO%2FPLi8ZafJzs07P1SkVPRU%2BlQ27tLdtWHX%2BG7R7ht7vPY07NXbW7z3%2FT7JvttVAVVN1WbVZftJ%2B7P3P66Jqun4lvttXa1ObXHtxwPSA%2F0HIw6217nU1R3SPVRSj9Yr60cOxx%2B%2B%2Fp3vdy0NNg1VjZzG4iNwRHnk6fcJ3%2FceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w%2B0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb%2B%2B6EHTh0kX%2Fi%2Bc7vDvOXPK4dPKy2%2BUTV7hXmq86X23qdOo8%2FpPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb%2F1tWeOT3dvfN6b%2FfF9%2FXfFt1%2Bcif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v%2B3Njv3H9qwHeg89HcR%2FcGhYPP%2FpH1jw9DBY%2BZj8uGDYbrnjg%2BOTniP3L96fynQ89kzyaeF%2F6i%2FsuuFxYvfvjV69fO0ZjRoZfyl5O%2FbXyl%2FerA6xmv28bCxh6%2ByXgzMV70VvvtwXfcdx3vo98PT%2BR8IH8o%2F2j5sfVT0Kf7kxmTk%2F8EA5jz%2FGMzLdsAAAAgY0hSTQAAeiUAAICDAAD5%2FwAAgOkAAHUwAADqYAAAOpgAABdvkl%2FFRgAABphJREFUeNqcV2twU9cR%2FnbPlVTHxpKRbNnBLyEbPyJisLEcPwgwUMKQtjNJAzNJZkgNNJOmJaZAaDKlxaXDTIBAcJtOOzSYKSkdiimhAdIMjyT4bYgBYxA2BgcUQPLrCiGDR4qt2x%2ByXTASFt1%2F957d7zt3z3d39xDCMQWUfgAz%2FRI%2FT4pSTAJpAGL8rECAXX7QFQGq9wOHOxYO1oCgjAdJj1wtB095Giv9TFuZAIWHAziATMPhTAwiHgUkYPXFJu92lMP%2F2MTpB1AKUCVEgNAcleUo1M%2B2F8TO6crSTncb1QleAOj2OTSX3Ge1p%2BVa42m5JrnzbnsCE8Ov%2BEHgpa0LPLvCJjZ%2FwhuIlN8wAcXG%2Be1LUn9hm238QU84p1Ld83nsXvuO7Lq%2BLzKYGAT6%2Fdn58m%2FHJTYf4O3EShkT8Irpzab1Uz9sGevT5%2BtWn%2Bj6NB4A5hp%2F5NSr43xjfd5rW5tT9e3OAhCBiCua5%2FWsDEls%2FhdvYklZSwDefmrT8eXmtzuDkb5YZ33p9ndylICAVjWxf39xw%2F5g5Luv%2F9H84ZWNcwNEypZT87rXjqyJB85UYDMJYN3U7UdLJ6%2F6JlgqV517teRqf9uTlug8e1zEk27HgD22o98WsTBh8fWxvjm6ApdONbGvse8LM5NUPOm1Cfabuz3nACAgxX0QEFTJAnjNvLJ%2BSepb14KRHnN%2BEv%2B1XJOhZs3Qu1mbG97J2NQgsXroa1dtxrGuf8cHi1mUtPTay0lv1DMJSCRVLtoX%2BFgGgDQNysBAcez89l9nbbsQSji7rlXkEhjPxb%2FQatHOcFu0M9zz419oFSRhj%2F3PuaHiyqasv1Con9NGxHAYUsoCxAqImbYSgCWmFbZQwdsur7N0eC4m6tT6%2FjUZ750Zeb82c%2BOZGLWh%2F2p%2FW%2BKfrmy0hIp%2FaVKpTSIJEqu2QgFx2iE8CwDp0RbH7Ljng%2F4yXr%2BXT3QdyhYsodS0slGr0g2OrEUK7eCrKW82SqzCVz3%2Fyfb6vRwM4xn9rN7JkRkOQRLmfJn2LBPxQjDBqp9lD7XbX7X8pKTP160zR2bdeiX5jYeU%2FnLSTztNkem3XL5eXbltRUkonBxdgZ2IIUmahUxERQSCVT%2BrK5hzQ89xQ6P8VaaK1f5VmRvqQ4G%2Blba%2Bnlnlb5brMhvlk7FBiaPzuwQEmEQhg5BOxMjWTncHc2501cQLkjDTsMCWpyuRQxFP0xXIJfp5FyVW4Zy7KajC06ItbiIGg6ZITBxDxIgbrr1jTSM0fibGIHz8O9sKK0GAibEua9spANh4aY2VmcEg%2BDEkiBgR%2FL2hYFgGtcErkQQAMVJgBxyy9hboZzv32v%2BKpr7qbEECTAIMAoaJa3qPTmNiiAAgJAjk6J5xhu6HDAIgQYGLmI29PocmMcI8MNYvT1ckfzD9H%2Fub5br4e4Me9WfOKqtyX6Ud2cwC449PRamifDm6Auc0rTXokci%2BXo1EAgBckiDuYGLjpTvntcGIA%2BSFcp6uUAaAI879VhWrRteYAqn%2Fedq758brXJ1327QMhgJcZjA3EBjNrgZjOG1PkAjyTGENMjZPq5ECQ0MDE9ERBqFZrk0OJ3i4x%2F7vyIjBxGERt3takgVJEAp9xq3f769WiPDNvSsJdT3HDOEASPelmoBRYT3Kzt5uMtwauJEgSOCpwrk1DIJCoNUMwj9v7MweP9XSQ8%2FhJPp496fZTAICvLqcyv2B7nRbrgCA03JN5h8ub7A8VqpB437xHvsOy3l3cyaB4L2uqxhti1WLMcSgZQCw7%2BbOooO3Pk4JBZIYYXISMV5sKH59UePM10GESRGpIf%2FbE92HU452HywSJIGIllctrhp6YAK5%2BfHds0lLtJFMXNwkV6fFqA29mROefqiMJj1h6um4a5vY%2F92dKGaBxIhU5zJTWW2cJmEgGOmeb3c8FxAfb9mdf2RzyGGv5MvU7QwuEySwKHFp%2Fc%2FM71zA%2F2F7b1RajnYdLAqMukMVu2YcfmDYE2MD7H%2B7%2FXlq6cRIJqm4zXM%2Bqd3TGjVBir43KSLlXjiELe5TsX%2B3%2FyW%2FST45PaAHbKmccWh12AP93JNZywj0kSABIobpiXRHjtZ6faout2tyZMadGLXBCxBcvl6NfaAz%2BtKdFmObpzWl2%2BtIIBACYy0t%2Fyj34M7HvsKUK%2BCGassvicX7alYDwwq%2BvykIEqPVa%2BQ9gdYk5%2BV%2BUE7lj3%2BFGbuBM%2FX5JUT8QwIVSSSZiTgmoFR2MfiqYFFPfjpkyrfWPopwxP47AP1pK1g9%2FdqeAAAAAElFTkSuQmCC%3Bbottom%3A50px%3Bleft%3A55px%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dnavigation%20div%2Evis%2Dbutton%2Evis%2Ddown%7Bbackground%2Dimage%3Adata%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89%2BbN%2FrXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz%2FSMBAPh%2BPDwrIsAHvgABeNMLCADATZvAMByH%2Fw%2FqQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf%2BbTAICd%2BJl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA%2Fg88wAAKCRFRHgg%2FP9eM4Ors7ONo62Dl8t6r8G%2FyJiYuP%2B5c%2BrcEAAAOF0ftH%2BLC%2BzGoA7BoBt%2FqIl7gRoXgugdfeLZrIPQLUAoOnaV%2FNw%2BH48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl%2FAV%2F1s%2BX48%2FPf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H%2FLcL%2F%2Fwd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s%2BwM%2B3zUAsGo%2BAXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93%2F%2B8%2F%2FUegJQCAZkmScQAAXkQkLlTKsz%2FHCAAARKCBKrBBG%2FTBGCzABhzBBdzBC%2FxgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD%2FphCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8%2BQ8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8%2BxdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR%2BcQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI%2BksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG%2BQh8lsKnWJAcaT4U%2BIoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr%2Bh0uhHdlR5Ol9BX0svpR%2BiX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK%2BYTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI%2BpXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q%2FpH5Z%2FYkGWcNMw09DpFGgsV%2FjvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY%2FR27iz2qqaE5QzNKM1ezUvOUZj8H45hx%2BJx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4%2FOBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up%2B6Ynr5egJ5Mb6feeb3n%2Bhx9L%2F1U%2FW36p%2FVHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm%2Beb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw%2B6TvZN9un2N%2FT0HDYfZDqsdWh1%2Bc7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc%2BLpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26%2FuNu5p7ofcn8w0nymeWTNz0MPIQ%2BBR5dE%2FC5%2BVMGvfrH5PQ0%2BBZ7XnIy9jL5FXrdewt6V3qvdh7xc%2B9j5yn%2BM%2B4zw33jLeWV%2FMN8C3yLfLT8Nvnl%2BF30N%2FI%2F9k%2F3r%2F0QCngCUBZwOJgUGBWwL7%2BHp8Ib%2BOPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo%2Bqi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt%2F87fOH4p3iC%2BN7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi%2FRNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z%2Bpn5mZ2y6xlhbL%2BxW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a%2FzYnKOZarnivN7cyzytuQN5zvn%2F%2FtEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1%2B1dT1gvWd%2B1YfqGnRs%2BFYmKrhTbF5cVf9go3HjlG4dvyr%2BZ3JS0qavEuWTPZtJm6ebeLZ5bDpaql%2BaXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO%2FPLi8ZafJzs07P1SkVPRU%2BlQ27tLdtWHX%2BG7R7ht7vPY07NXbW7z3%2FT7JvttVAVVN1WbVZftJ%2B7P3P66Jqun4lvttXa1ObXHtxwPSA%2F0HIw6217nU1R3SPVRSj9Yr60cOxx%2B%2B%2Fp3vdy0NNg1VjZzG4iNwRHnk6fcJ3%2FceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w%2B0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb%2B%2B6EHTh0kX%2Fi%2Bc7vDvOXPK4dPKy2%2BUTV7hXmq86X23qdOo8%2FpPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb%2F1tWeOT3dvfN6b%2FfF9%2FXfFt1%2Bcif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v%2B3Njv3H9qwHeg89HcR%2FcGhYPP%2FpH1jw9DBY%2BZj8uGDYbrnjg%2BOTniP3L96fynQ89kzyaeF%2F6i%2FsuuFxYvfvjV69fO0ZjRoZfyl5O%2FbXyl%2FerA6xmv28bCxh6%2ByXgzMV70VvvtwXfcdx3vo98PT%2BR8IH8o%2F2j5sfVT0Kf7kxmTk%2F8EA5jz%2FGMzLdsAAAAgY0hSTQAAeiUAAICDAAD5%2FwAAgOkAAHUwAADqYAAAOpgAABdvkl%2FFRgAABpdJREFUeNqcV21QlNcVfp5zX9ikoAvLEsAIIgsoHwpqWAQUNKLNaNv8iZ1JMkNG6%2FQj%2FdDUyCSTtCHpmEkwVk3TToZRMjXj5MOG2KidjIkxQYSAQUAtX6IgIN8su8KCoOzbH4sk4q5g77%2F33uee555z7rnneYmZDB2MKcJKlyYbqOsZVIgGEOgSHQoy4AKbFFjqAo5dWn%2FrNAh9OpO852oeJHYxtrmEu4WALhMbxG2ZE9uFAlImDRLY%2Ft%2Fy0b3Ig%2Bu%2BiWOKsAlgIZSb0OIf15kWtKo1NXh1d5xxiSPEN2wUAHrGOg11jirjWVtJyFnb6YgrzoYwocClu0DI5guPDb43Y2LLp%2FIaqf9JCGSErGvIifxd7aqQn%2FTOJCvFvZ8Hf9haEH%2Bm%2F6sFQgHBv1Sts%2F15WmJLkeyl6FuFwFPzny1%2FZdE7Nfg%2Fxhv1uUmH2w6kggQp%2Byqze7d5JbZ8Im%2BKpucSwI6EN7%2FcYtlxZarBCts3ptfrtq9odjaGKihE%2BsV0vRC3u8RqWmmbij149W%2BWd5p2rnET6bsqsntyb6%2BpO3KqkE8FvLxo74lNUX9s9uTJb8%2F9fG2L81KoogJFYfCm3b9usNq0MXxzw1RsUkDqQICPqf%2Fb%2Fq8sQi3j4WdmtV47OFgNAO6r%2BDEUFAtFAc9YtpXmRP6hxVsI24cvhyoqnFtrK6jM7isgBa3Dl0O94TeGb255MvzXpUIFjVrhxo%2FdzgoARBuwFQJkBK9reCnurxfvXX8CRW3yW1G749vT2Br7ysW0oNX1pKDTPG%2Brm1gHRbibAHLm%2F7522sKnQCZqFgCUaBCqaS%2FbEw9vqtWoQROf3dBBiT6KTACImZ3YueqhDdOWjDbFQ4IzIl4elNUX5begU1HD6lPRmULKeghhDcpqnUmZuD3%2BnkgTH6gZEE9ctlZSoGmG9UIynSCsQVndMyX%2BIZGiBoHMjHh2SreCglClaSBiSEG8cYnD24bv7CWms%2F3FocO3hnw13plTggAFb196NdlPM44tC0zrSg5ItXmyEz070UEKCMRqQgkkBQ9NvL2eSJ%2BrevoJTORSpoT6do4%2F7%2F7UShBFHQexM%2BHdfyUHWO8iN%2FuaRzX3%2FQjUSLlnqM72F4cCRIY5u9Zf%2BY%2BBAv4AvzpkQ7WAIBRujA%2F7Vg6cia9xlId6InafVEAAGnQMUCSkb6zTMPdBy8hU3JjrphIq%2BCrD%2BMvxeyumrr%2B4IH9y7o2GF5eDghuuGx4L2zbWZ9Dc0RoQRbkkFNRdP2%2F0BH7EtLJLKCjr%2Bzqh2l5u8haZ847vTBW24kRFQXKAtcsT5oqz3igQENIoECkjBJUDZSGewBlBj%2FammjLrdX1c%2Ft70ero34gMte9IByLLAjPrUwKweT5jawQshdIuGMiF5XEBU2koivBl9NeEfJeYHwuxtI81zPrn2z6ip60c6DkV1jLTOCTaE2HNjd5Z4s9MwWBOhqEHp%2FI9cWDtUrJNoHm4KO9P7hdnTBoMYXI8Gb6gVCg63FS53jg9O5tA57tSOdHywnCAygrJrfcTgUe5U2cvNHSPtYYoKCWlrTgsIneB2AfFR%2B4F4b6f9ZdTzF6P8Ytud407%2Fdy%2FnL7k9X9i8J9l5y%2BEf6RfbnjPvWa8N5suez%2BKFCgqyPY95Lnd3stv2AcBZ2%2BmFbze%2Blui1xc3dXCUUlPafXNx4%2FaKxcajWWNp%2FMklRw8%2FmPFntbd%2Bh1oLE847KhQQxejVg36QQqD0MPTzHv42Ux%2BuGasJNBnPfwllJd71kkX7RQ3WDNf7dox3BLcNNs6vt34bbbvYHJhlTGp6O%2BJVHb0%2F2HJtX1PH%2BaqECqG%2F5YN1nlXcokGvvO6vCc4x%2BQskotxVHB%2Fqa%2BxbOWuzw8NB3nuo%2BHt0z2hHsuGU3GrWAoZfi3jrxgHpw3BPpobaCH7vbqOw6mHI836vYW3Eqcq9AtioqbJy7ufQ3lhfu8sR%2Bs9%2B3vL8klACsQSu7AnxMY1MxH7YXJp7oPpLulrrj%2B9575Ni2aeVt1teWfEWfHQLCaspseHzOU7VWU%2BaM5G2NoyL4i%2B6j8XWDNQsmGsKu%2Fcv%2BnTtjQb%2Fmm7hfENyvqEAK5v8opjPJaL26KGBpd5TfguuBvuZRgBgY6zO0jlyZXXe9JqR%2B8MK8ntHOMHfHIkhu2b%2F0yIH7%2FoXJ0yFlxYnPUdRbvuILgO7%2By%2B91l6Ka6M%2BcnCf4fMSypXvymHf%2FvzBTD3CuNGUFKT8lmK5Rs5ASqKiBlAGBXFaiSuni0fkp1pJ7Ed4e%2FxsAqLk46EWsG1EAAAAASUVORK5CYII%3D%3Bbottom%3A10px%3Bleft%3A55px%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dnavigation%20div%2Evis%2Dbutton%2Evis%2Dleft%7Bbackground%2Dimage%3Adata%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89%2BbN%2FrXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz%2FSMBAPh%2BPDwrIsAHvgABeNMLCADATZvAMByH%2Fw%2FqQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf%2BbTAICd%2BJl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA%2Fg88wAAKCRFRHgg%2FP9eM4Ors7ONo62Dl8t6r8G%2FyJiYuP%2B5c%2BrcEAAAOF0ftH%2BLC%2BzGoA7BoBt%2FqIl7gRoXgugdfeLZrIPQLUAoOnaV%2FNw%2BH48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl%2FAV%2F1s%2BX48%2FPf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H%2FLcL%2F%2Fwd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s%2BwM%2B3zUAsGo%2BAXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93%2F%2B8%2F%2FUegJQCAZkmScQAAXkQkLlTKsz%2FHCAAARKCBKrBBG%2FTBGCzABhzBBdzBC%2FxgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD%2FphCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8%2BQ8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8%2BxdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR%2BcQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI%2BksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG%2BQh8lsKnWJAcaT4U%2BIoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr%2Bh0uhHdlR5Ol9BX0svpR%2BiX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK%2BYTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI%2BpXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q%2FpH5Z%2FYkGWcNMw09DpFGgsV%2FjvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY%2FR27iz2qqaE5QzNKM1ezUvOUZj8H45hx%2BJx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4%2FOBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up%2B6Ynr5egJ5Mb6feeb3n%2Bhx9L%2F1U%2FW36p%2FVHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm%2Beb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw%2B6TvZN9un2N%2FT0HDYfZDqsdWh1%2Bc7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc%2BLpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26%2FuNu5p7ofcn8w0nymeWTNz0MPIQ%2BBR5dE%2FC5%2BVMGvfrH5PQ0%2BBZ7XnIy9jL5FXrdewt6V3qvdh7xc%2B9j5yn%2BM%2B4zw33jLeWV%2FMN8C3yLfLT8Nvnl%2BF30N%2FI%2F9k%2F3r%2F0QCngCUBZwOJgUGBWwL7%2BHp8Ib%2BOPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo%2Bqi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt%2F87fOH4p3iC%2BN7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi%2FRNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z%2Bpn5mZ2y6xlhbL%2BxW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a%2FzYnKOZarnivN7cyzytuQN5zvn%2F%2FtEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1%2B1dT1gvWd%2B1YfqGnRs%2BFYmKrhTbF5cVf9go3HjlG4dvyr%2BZ3JS0qavEuWTPZtJm6ebeLZ5bDpaql%2BaXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO%2FPLi8ZafJzs07P1SkVPRU%2BlQ27tLdtWHX%2BG7R7ht7vPY07NXbW7z3%2FT7JvttVAVVN1WbVZftJ%2B7P3P66Jqun4lvttXa1ObXHtxwPSA%2F0HIw6217nU1R3SPVRSj9Yr60cOxx%2B%2B%2Fp3vdy0NNg1VjZzG4iNwRHnk6fcJ3%2FceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w%2B0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb%2B%2B6EHTh0kX%2Fi%2Bc7vDvOXPK4dPKy2%2BUTV7hXmq86X23qdOo8%2FpPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb%2F1tWeOT3dvfN6b%2FfF9%2FXfFt1%2Bcif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v%2B3Njv3H9qwHeg89HcR%2FcGhYPP%2FpH1jw9DBY%2BZj8uGDYbrnjg%2BOTniP3L96fynQ89kzyaeF%2F6i%2FsuuFxYvfvjV69fO0ZjRoZfyl5O%2FbXyl%2FerA6xmv28bCxh6%2ByXgzMV70VvvtwXfcdx3vo98PT%2BR8IH8o%2F2j5sfVT0Kf7kxmTk%2F8EA5jz%2FGMzLdsAAAAgY0hSTQAAeiUAAICDAAD5%2FwAAgOkAAHUwAADqYAAAOpgAABdvkl%2FFRgAABt5JREFUeNqsl2lUlOcVx%2F%2F3Pi9DZRsGBgYiS2RYBQKIjAhEJW4pNrXNMbZpWtTGNkttYmJMG5soSZckRk%2B0p%2BdYPYY0Gk0ihlhRj63GhVUgBhDD5oIOy8AAMwzD4lCYtx%2BGqCQKuNyP7%2FPc%2B3u2%2B7%2F3JUzEZFBYLh62S7yIZDmVBEIBqOwsQ4DNdtBFASq2A4cuZAwVgCCPF5LGHM0Chz%2BE1XamzUyAzCMO7IhMI%2B5MDCK%2BHpCANd%2BU2rYgC%2FY7BoflYgVA2RAOoNYtyjDTe45%2Bhk96e5QywaJR%2BNsAwDhocK61VCjLTYWaclNB0OW%2Ben8mhl22g8C%2Frn7U%2BuGEwdov%2BC0i%2BQ0mIFWzoD7zwVU1czQ%2F6pjIreR3HPX5VL9jalHXiQgmBoH%2BXLHAtH5csDaXtxDLLzIBv5jyfOmG2H9U4S7snbpX43KaPpgBIhDx1rPzOlbfPC5GQT%2Fnd1mS1zABa6PfPf5y5F%2FrcJeWpp7fPkly6f7KXBRCoOSATFfXll19x74HDsvFCghsJAG8HrvlvytCXm7EPVqc5wyzp5NX15muE1omKXXyMnd9yy5r5Q3wPghvJzrLAlimXV38%2B7D1DbhPFq1M6O4b6rPVWKsCBfHi5EWWv9TkQBYAEPpLvERMC9N8FtRvjt9dPl6wwo5jPvuas7WV5jNqEjz8wA%2BCBsaan%2Bw9x1hrrXJtuaZX97ooLfqPLCUEGRR%2BiOwAsF2X98Uc30W3fb02u41frVqeVmo6FUkkwCAwCWxJ2Ls%2F0TPFNBb8TNdp9WvnVz4OAKdmX2QOzcMsAAjziDGMBd3asCF6SXHyknJTfqQTK%2BzpvhnVKT5zawCgzFTgN94pJXvP7gxxjTAIkpB%2BMnSWRMQZYEDnPVt%2FK4ejbZ%2F77726Lb6h95tAAiPELaJ1bcTbRfGeM8xv1azWSeyEa0P9igk%2BNr1%2BoNFfkpwzJCJKIQA679ntN08yDXYo3qh%2BLuUrc0E4EcNL4dP7VNDzpU8FP3vpekoQQ5CEw4bPdEfa9%2BsAgEZUmkmAAAS5hLQ9p11XGO%2BpM8V5JLUfMeQARDMlEMKIGFOVCZYb0C7Fz0oeXmIZ6nZzYoV9od%2FjVS%2BGbahUOnn9b7T6sEOviUGyA8bMDlUa0W79wBW%2FbZf%2BlrY98cDBUI8YCxGDgHCJiVVEDN8R7QWAE8Z%2F%2B1mGut2i3eP1r0S%2BXRztkdBzq6NbF7WpbF3UprKxjvfHxbrfttla%2FQBArVDbJJIAQCURMRg8ugrKIAKBSNxzHtN3VdmxY0iQYSZmTeegwTlgknYAAB7RZBh2Nm7urbeeC1r19ROT52kWn3shfH2Fu1AO3RxjY%2F0fdac7%2FhPPJMDE11GC%2BHpBJmIEuAS3Oa6w01lybMbMgvgCE6O255zy24DeCr%2FBvckn9%2Bu8ZjXYIYvjxoMJy8oeXZrT9GHIqMWTwA2oI6cFMeDIcAiSEOyibXsmZG0hAFzuq1OyY6xBAnMJgdPOmks08zU%2FbbsB9x18P37PqS%2Fb8%2Bo%2Fa96ZcLm3PmBH46Z5x40HW1eFvl4Uq0w0MwiCBOb7%2FqTsd6GvVY537DXWas1Iw1AiNJnOgwJi%2BbXhAbE08OnvaXSIW0TvYw88eaF%2FuM%2FWNdju3m5r9TlhPBzVNNDoPGC%2F5tRma%2FGJ80xqjPPUjVuvP2narrMOWd1Jlv%2FE1fN782UiNPZf9C%2FqOKa%2BndOz2j%2Bcz046sn%2B6KrVOsODirpOxld0lUxmEBK%2FktvGgFd2l6taBZn9BAtEz5xYIvAn4%2F8rFKkgstAyZ6Yf%2BS67ezlkiSU73XXRV6xqh93TyssR4JF75efBvymLdE03jgT%2FWb5tutLWpGbTm7wHZxQQAT%2ByDuKLyHRIk4cnAZ4pfCF9%2FHvfR9uh3xBxtz00BANsVDylnac6wAICaHMiBmW5NRLy4trcq0MtZ3RnpHme5H9AvjYeCc1t3pzMJgOSVnyw4eHZUB9Kyu68iMFPpysSppab8UJVC3Rnp%2FpDlXqF7mnYsdKQbv7cr6fDGW%2FZczbt6jgUtV6kIlFxuyg%2FtH%2B6zJXmlGe8G%2BmlzdsyB1j3pTAwZ9q3%2FSspbc9tmDwD0H3UffXCFlyuTlFpnPRdYb612c5c8%2BidPCu6fCLDKUubzsf6fSaWm0wmO9hbvZU8fDR2zoZ97OuppAu0UJEDEmOISZohT6q7Gek5rD3GN6FEp1DaAYB7sdNYPXPao7anS1Fmrg402g7%2BjYhGIaOXOaQc%2BuONfmCwZXJIf8xKx2KRgxYgOS%2BCROuyoyQKCxIhkOr4T6JWgxGnvZ1HWnf%2FCfHcBXxcnpRHxYwRKkUjSErFKkAQiNjP4kmBRTHbKm5KkKxwL%2BK39fwDX1XGF8ct%2B%2BQAAAABJRU5ErkJggg%3D%3D%3Bbottom%3A10px%3Bleft%3A15px%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dnavigation%20div%2Evis%2Dbutton%2Evis%2Dright%7Bbackground%2Dimage%3Adata%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89%2BbN%2FrXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz%2FSMBAPh%2BPDwrIsAHvgABeNMLCADATZvAMByH%2Fw%2FqQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf%2BbTAICd%2BJl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA%2Fg88wAAKCRFRHgg%2FP9eM4Ors7ONo62Dl8t6r8G%2FyJiYuP%2B5c%2BrcEAAAOF0ftH%2BLC%2BzGoA7BoBt%2FqIl7gRoXgugdfeLZrIPQLUAoOnaV%2FNw%2BH48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl%2FAV%2F1s%2BX48%2FPf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H%2FLcL%2F%2Fwd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s%2BwM%2B3zUAsGo%2BAXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93%2F%2B8%2F%2FUegJQCAZkmScQAAXkQkLlTKsz%2FHCAAARKCBKrBBG%2FTBGCzABhzBBdzBC%2FxgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD%2FphCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8%2BQ8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8%2BxdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR%2BcQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI%2BksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG%2BQh8lsKnWJAcaT4U%2BIoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr%2Bh0uhHdlR5Ol9BX0svpR%2BiX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK%2BYTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI%2BpXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q%2FpH5Z%2FYkGWcNMw09DpFGgsV%2FjvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY%2FR27iz2qqaE5QzNKM1ezUvOUZj8H45hx%2BJx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4%2FOBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up%2B6Ynr5egJ5Mb6feeb3n%2Bhx9L%2F1U%2FW36p%2FVHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm%2Beb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw%2B6TvZN9un2N%2FT0HDYfZDqsdWh1%2Bc7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc%2BLpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26%2FuNu5p7ofcn8w0nymeWTNz0MPIQ%2BBR5dE%2FC5%2BVMGvfrH5PQ0%2BBZ7XnIy9jL5FXrdewt6V3qvdh7xc%2B9j5yn%2BM%2B4zw33jLeWV%2FMN8C3yLfLT8Nvnl%2BF30N%2FI%2F9k%2F3r%2F0QCngCUBZwOJgUGBWwL7%2BHp8Ib%2BOPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo%2Bqi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt%2F87fOH4p3iC%2BN7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi%2FRNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z%2Bpn5mZ2y6xlhbL%2BxW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a%2FzYnKOZarnivN7cyzytuQN5zvn%2F%2FtEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1%2B1dT1gvWd%2B1YfqGnRs%2BFYmKrhTbF5cVf9go3HjlG4dvyr%2BZ3JS0qavEuWTPZtJm6ebeLZ5bDpaql%2BaXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO%2FPLi8ZafJzs07P1SkVPRU%2BlQ27tLdtWHX%2BG7R7ht7vPY07NXbW7z3%2FT7JvttVAVVN1WbVZftJ%2B7P3P66Jqun4lvttXa1ObXHtxwPSA%2F0HIw6217nU1R3SPVRSj9Yr60cOxx%2B%2B%2Fp3vdy0NNg1VjZzG4iNwRHnk6fcJ3%2FceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w%2B0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb%2B%2B6EHTh0kX%2Fi%2Bc7vDvOXPK4dPKy2%2BUTV7hXmq86X23qdOo8%2FpPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb%2F1tWeOT3dvfN6b%2FfF9%2FXfFt1%2Bcif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v%2B3Njv3H9qwHeg89HcR%2FcGhYPP%2FpH1jw9DBY%2BZj8uGDYbrnjg%2BOTniP3L96fynQ89kzyaeF%2F6i%2FsuuFxYvfvjV69fO0ZjRoZfyl5O%2FbXyl%2FerA6xmv28bCxh6%2ByXgzMV70VvvtwXfcdx3vo98PT%2BR8IH8o%2F2j5sfVT0Kf7kxmTk%2F8EA5jz%2FGMzLdsAAAAgY0hSTQAAeiUAAICDAAD5%2FwAAgOkAAHUwAADqYAAAOpgAABdvkl%2FFRgAABs1JREFUeNqsl3tQlOcVxp9z3m%2BXygK7C4sLxkW5o4CAkYssFSkRjabjJEOSJm1IbZx2krapiZdeprW0NVVJ0pqMM0kYJQlqkoZImGioE1ItiCAgIsFwE4Es99vCslwChf36xy5EW1A0Pn9%2B73fO772e93kJC5EMCszFd20SbyFZNpJAAACtjWUI8KAN1CRAJTbg9LXNU%2BdBkG%2BXkm7Zmg4OWoUdNqZXmQCZHQFsz0yOcCYGEc8mJGDnl2UTh5AO2x2DA3OxDaAsCDvQ32VF11qP9aZYz6SeFeooi17pPQEAvZNdTnWWKnWFuVhfYT7v0zza4M3EsMk2EPgnNZusby8Y7P8x%2F5lI%2FgMTYNSnNKQt%2F0Xtev1DfQtZlaK%2BM54fmDJXXhg4G8zEINBfqlLMe28L9s%2FlQ8Tyr5iAJ32fK%2Ftj%2BOFq3IUO1O%2BJyGk7GgsiEPFrlQ%2F07bixXdwEPckHWZJ3MgG7Qw9%2B%2FmLIS%2FW4SyXoNvQskpyHLg1e8CNQ3NI0laoje7Tg%2F8CBudgGgQwSwO%2FDD322ze%2FFFnxLRWhiBzUK94GLA2f9mSTjfU%2B7mjqyrVe%2BAX8I4aGgShbA0%2F47Sn4ZuLcR90ih6qih0anRiVprtUEQb43bYtlXmwNZAEDAj%2FACMW1M8ExpeDXyWMVCEl4yF7vntR%2FzLeov8JJlWfZR%2BY3N92%2Bcx%2FreOmu1quNrk27EWW0xvWspJcigoNNkA4C3Yk59vH7xltvu3ktDxe7PX34ilQCQfeci1j2xfn94ZrGCneY8uxcHCnW%2Fvbr9EQD4d2ITc8AprAOAQLewroVAAaB8oMiLiRHvmVy7znNTjWCFrXKoJOSHFQ%2BkvnF9f%2Bjco07s91MFdwmSkHQuYB0T8WYwIcYj0bTQdRufGlFKJMFVaCb%2FGvZW6aGI4yeXOwd2mr%2Fu05zsyDY%2BW5X64Nm%2BfO85NpuJiCFJTpslIoonADEeiT2zIzIXuh%2Bo25PQNtbsNVMOBUn2g08MiSTHN3uZjNTEDr4dnX%2F6H%2B1H%2FXPasmKvW%2BsMGfW%2FMXzende4K3h%2FibvSYxIAItyie%2FK7cgCitQxCIBFjpTrKMgM%2BWPfrhLbxFi9iMQtlYjAJSCSBSYBAIPBNI3p86TPXj8bk56R4PVylFE626uFLQc9efiTVPDmgBIAAtzALEYNBQRITa4kYix21FwBax655CVagPLk7806Pj1qo%2F7MraF%2FFQ14%2FaMhszYhvGqn3KTef89rklWrSKXUTkn3mtJK9Bzf3XJA0e%2FPcrdgxIwSCDPmbZMQgABJkDBKzvn%2Byy2npIv9xAPB1Ceo2jTZ7Gc8afipIgEhAkACDwcSQQZBIIGnx5it7gg%2BU3wgcnbZKR1r%2BFnW%2Bv2DVtDwtXCXNSKz797oAwDzZ7ySRAIBBFsTXmBh1w1%2BoZ4J3h%2Bwv9lUFdbMDOrO%2B5IAqWIGZthuV13nC77nKRx8r7PssyibLIkoT1%2Fh65HsfzWyu5tF6NYNB4EYJzKUETqgcLNVv0D%2FcDQBrNAnm9%2BLOfTLfNB5u2hf5z%2B6TMexYji%2BtVdrM5leMbWOtSwQx%2FF1C2rcuebIqwSO568a4WmuN3mEYSiUi%2BpRl2l1pLvYBsKArUKVwnZRYgdHpMWVG4%2B%2FWXhwoDBXE7OmkHzJ6JNemLfv51bniGqzVPoIkyLbpfK7ZMFIkE6FlrMn7Ql%2BBbiHg%2BzXGbgLjylDpyosD58KZmKM0cfWHI9%2F%2FaD5o1VCZrnO83VuQQOja5PMCfwK8n3K2ChIbLVOD9KB36le3A%2Bu%2Fs2Q81C2yRavQmQNdVnamLnmq4nHD9jpB0rwm77jpjTW9E906Bu18fWlWCQHAox9CtGoXTwmS8IThZyXPB%2B29inuoE6bMsDM9ufEAMNHqJuU8ljMtAKA2B7IhzaWNiLfWjVQb3J10%2FSGuEZZ7Af1X7%2BlluZ3HkpgEQPL291M%2BqbzJgXQcG60ypKlVTGwsMxcFaJW6%2FhDXVZZvCz3RlrmRiQHwy9nRn2bM6bnas4cLfH6s1RIorsJcFDA2PToR7Z7QezfQD9qzwvI6TyTZC47ttXeiT%2B2c1%2BwBgOndoTPLt7mrmCRjvfULQ4O1xsVVchu7b9GysYUAqy3lnsdNb0aXmQuj7PYWL2etuRl6S0OfXLjiGQIdEY6K5esc2BWhjvkqXLO6x08VPKxV6iYAwuBkv5NpvNmtbrhaX2%2BtWdY70eVNINhtLW0%2Fsjrv6B0%2FYdJlcGlR2AvE4hUlKwHQ7BU5cz8LRx0HaPY7gXb53L%2F67%2BmUfudPmP%2FtwOWS6AQi%2Fj6B4iWS%2FIlYK%2ByGYJDB1wWLErLRKd%2FomOJbAWf03wEAyO9m%2B%2FTtS3AAAAAASUVORK5CYII%3D%3Bbottom%3A10px%3Bleft%3A95px%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dnavigation%20div%2Evis%2Dbutton%2Evis%2DzoomIn%7Bbackground%2Dimage%3Adata%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89%2BbN%2FrXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz%2FSMBAPh%2BPDwrIsAHvgABeNMLCADATZvAMByH%2Fw%2FqQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf%2BbTAICd%2BJl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA%2Fg88wAAKCRFRHgg%2FP9eM4Ors7ONo62Dl8t6r8G%2FyJiYuP%2B5c%2BrcEAAAOF0ftH%2BLC%2BzGoA7BoBt%2FqIl7gRoXgugdfeLZrIPQLUAoOnaV%2FNw%2BH48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl%2FAV%2F1s%2BX48%2FPf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H%2FLcL%2F%2Fwd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s%2BwM%2B3zUAsGo%2BAXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93%2F%2B8%2F%2FUegJQCAZkmScQAAXkQkLlTKsz%2FHCAAARKCBKrBBG%2FTBGCzABhzBBdzBC%2FxgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD%2FphCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8%2BQ8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8%2BxdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR%2BcQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI%2BksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG%2BQh8lsKnWJAcaT4U%2BIoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr%2Bh0uhHdlR5Ol9BX0svpR%2BiX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK%2BYTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI%2BpXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q%2FpH5Z%2FYkGWcNMw09DpFGgsV%2FjvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY%2FR27iz2qqaE5QzNKM1ezUvOUZj8H45hx%2BJx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4%2FOBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up%2B6Ynr5egJ5Mb6feeb3n%2Bhx9L%2F1U%2FW36p%2FVHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm%2Beb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw%2B6TvZN9un2N%2FT0HDYfZDqsdWh1%2Bc7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc%2BLpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26%2FuNu5p7ofcn8w0nymeWTNz0MPIQ%2BBR5dE%2FC5%2BVMGvfrH5PQ0%2BBZ7XnIy9jL5FXrdewt6V3qvdh7xc%2B9j5yn%2BM%2B4zw33jLeWV%2FMN8C3yLfLT8Nvnl%2BF30N%2FI%2F9k%2F3r%2F0QCngCUBZwOJgUGBWwL7%2BHp8Ib%2BOPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo%2Bqi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt%2F87fOH4p3iC%2BN7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi%2FRNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z%2Bpn5mZ2y6xlhbL%2BxW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a%2FzYnKOZarnivN7cyzytuQN5zvn%2F%2FtEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1%2B1dT1gvWd%2B1YfqGnRs%2BFYmKrhTbF5cVf9go3HjlG4dvyr%2BZ3JS0qavEuWTPZtJm6ebeLZ5bDpaql%2BaXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO%2FPLi8ZafJzs07P1SkVPRU%2BlQ27tLdtWHX%2BG7R7ht7vPY07NXbW7z3%2FT7JvttVAVVN1WbVZftJ%2B7P3P66Jqun4lvttXa1ObXHtxwPSA%2F0HIw6217nU1R3SPVRSj9Yr60cOxx%2B%2B%2Fp3vdy0NNg1VjZzG4iNwRHnk6fcJ3%2FceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w%2B0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb%2B%2B6EHTh0kX%2Fi%2Bc7vDvOXPK4dPKy2%2BUTV7hXmq86X23qdOo8%2FpPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb%2F1tWeOT3dvfN6b%2FfF9%2FXfFt1%2Bcif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v%2B3Njv3H9qwHeg89HcR%2FcGhYPP%2FpH1jw9DBY%2BZj8uGDYbrnjg%2BOTniP3L96fynQ89kzyaeF%2F6i%2FsuuFxYvfvjV69fO0ZjRoZfyl5O%2FbXyl%2FerA6xmv28bCxh6%2ByXgzMV70VvvtwXfcdx3vo98PT%2BR8IH8o%2F2j5sfVT0Kf7kxmTk%2F8EA5jz%2FGMzLdsAAAAgY0hSTQAAeiUAAICDAAD5%2FwAAgOkAAHUwAADqYAAAOpgAABdvkl%2FFRgAABiBJREFUeNqkV2tQlOcVfp7zvgvDRe66y8htXUBR1GoFI%2BBtFJvRtjPJBGeaH2a8DGmbttgSTWbSJEw6TWOsrbbpTIeJZGqaTipTa6LJZDTVUTYQdNAohoso6qLucnERN0Axcb%2F8%2BHaJUHDX9Pz6vnnPe57vXJ5zzkeEIwaYcwBL%2FVrW0TCKqZANINEvBhSk3w9eUmC9HzjcsfarOhBGKJN84GkVJHcetvqFu4SAIYELYlpm4LpQQMqoQQKVnzeO7EYV%2FA8NnHMAGwHWQJmAjtg895LkFa7FU1d258UvGLBGpI4AQM9dd2TrwNn4016n9bS3LqNzsD1VKPAbfhCyqflR31thAzv%2BLa%2BQxotCoNi6pn1D1s9aVli%2F3xtOVk72fjT1XVf17E9uHZspFBD8zdk13pdCAjsOyG6KUSEEnrT%2FtPHluW%2Bcw7eQ19q2z6%2Ft2rsYJEjZ07S6d%2BukwI5%2FyQ7RxnYC2DZnx8dbHNs6xxs85T2R9GprZcmVwYs2BYWsmBzP83m7nIVJS73jdfdd%2B7PjjUu%2FXWUCGTtPre7ZHjxTY3Kq8DoV8Ou5u49snPGrKxN58syZ9aVXBztsigoUBd%2BXt2NbfZ8llaVvah%2BvOz9hcX%2BCJenWp7eOOYS6ePpTU1w39vk%2BAwCzFPdDQbFGFPCUY2v9hqxfXJ0shNeHLtsUFc6UequbVvdVkwLX0GXbZPpl6Zuu%2Fij9x%2FVCBU1dU7bfdFYAIDsSFRCgeOqa9hfy%2FnDhwfwTKOrRd0U95n0iqch9%2BcKS5JVtpMCdkllhAhugCHcRwAb7z1tCEp8CCXAWAJRoCFXIYnti%2BsYWTQ0tll0wQMk%2BhGUAkBOX714xbV1IyuhxHhIMC%2FiR5OV9M2JmuhU1Vh7PXiakrIUQhcnLXeHQxPT4GyAtFqgwgAPF5iIFWkeu1SSLCKAweXn3%2FZR5rXV7SddQpy3YDoNems9qTI5hGCitm1MOAAx0aaFCerTd84zjBed3Egq9ADA%2FrqD7Q3ctQC4REDmkYHb8goGgsR2tz5V0DV%2BxUdQoqAQ81RybU4IgFWgACgpaLLCIBUo0bv63y%2FaXy6%2BWBHWz4%2FIHSIGAuVooiaRgWqD3AsDVoQ6bEgtOrfJUhwrf0WUtk%2Br8sL6wvHvk5ijVUiJSRrQZuURtfoGMuaCoRyfP%2FyMy0XykgAA0DPRTxNp31x2ZFuUYBgB7bK7HNdhpKz6WXq6oQCooKghMKhkgji77vBoA1jkXlAvVfRQjFMUcmxSkRWd6gpjeu32R2kxTvyhKh1DQeud8fFBh26zfOe0xuR4JgAbzywCoRSzfeDUKatJKUQK%2BCjKiHZ6nZ2xzBnU7B9vixTy7qCHSQEhJU3%2BDtdT6mAcAFiWUeP%2FxyPH3Jwrfo3XzysemRcEA8F5RY8h6aPE1WwMLQ4OQ%2FEBANHmdGWHlzZyxk3ayB0m771yGooYy%2BKE0l35x0iBxZehS6ie9R1PCMaDvCzWDXA4hZ283ptwcvp6qqDBnyao6AWEQrBQQ%2F7y%2Bd3YoA%2BNBTAaElo973p8tVFCQyipW%2Bc3pdNu7BwBOe%2Btm%2FeniK%2FkPFWowpMfvuKrzzw80zSKIkWsJe0bHYu163BNwMwDsv7G36ODNtzMnM5IWZfeQgscbisvLPl1aDhLTo7I8k%2Bn%2Fp%2Bdw5pGeg0WKGiS31K6vvTdmA7nx9uDZ9A3xMUIpbvSezE6MSOmbNWXewHhD6dH23o7BlqQvvrwTK6KQFpXl2WyvcE6LTB2eCPSdrurvmcUnO%2FcVfPD6pMteyfGs3QKpUFQoS9tU%2FxPH8xe%2BTdd693pN%2FpHug0Xmqntvz1uLDo9Z9v5nnrn%2BdvujrI1JMUJd3OY7n97ua46douOGpkdlDoUDeG7g1NS%2Fu%2F5a0Og9scCsB%2BysWXSoMuyFftWJvM0E31SBjmWPznHPjy%2B8NjdhYfeMmJl3EiNSRgCi%2F25fpGu4M671zjlrm685s2fEnUoQ5lrLLW8uPLj3oX9hqgxIw8n8X1LU7yMkItCHzREZrGQV6ONmy5TggHk247sL%2F1jFqof%2FhRn%2FAWfqC0pI%2BQHBIk3tICXRrFTpF8hlJaqefh6yFxQ6HwQYlK8HAKyt3WsWxl7fAAAAAElFTkSuQmCC%3Bbottom%3A10px%3Bright%3A15px%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dnavigation%20div%2Evis%2Dbutton%2Evis%2DzoomOut%7Bbackground%2Dimage%3Adata%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89%2BbN%2FrXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz%2FSMBAPh%2BPDwrIsAHvgABeNMLCADATZvAMByH%2Fw%2FqQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf%2BbTAICd%2BJl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA%2Fg88wAAKCRFRHgg%2FP9eM4Ors7ONo62Dl8t6r8G%2FyJiYuP%2B5c%2BrcEAAAOF0ftH%2BLC%2BzGoA7BoBt%2FqIl7gRoXgugdfeLZrIPQLUAoOnaV%2FNw%2BH48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl%2FAV%2F1s%2BX48%2FPf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H%2FLcL%2F%2Fwd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s%2BwM%2B3zUAsGo%2BAXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93%2F%2B8%2F%2FUegJQCAZkmScQAAXkQkLlTKsz%2FHCAAARKCBKrBBG%2FTBGCzABhzBBdzBC%2FxgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD%2FphCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8%2BQ8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8%2BxdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR%2BcQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI%2BksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG%2BQh8lsKnWJAcaT4U%2BIoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr%2Bh0uhHdlR5Ol9BX0svpR%2BiX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK%2BYTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI%2BpXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q%2FpH5Z%2FYkGWcNMw09DpFGgsV%2FjvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY%2FR27iz2qqaE5QzNKM1ezUvOUZj8H45hx%2BJx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4%2FOBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up%2B6Ynr5egJ5Mb6feeb3n%2Bhx9L%2F1U%2FW36p%2FVHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm%2Beb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw%2B6TvZN9un2N%2FT0HDYfZDqsdWh1%2Bc7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc%2BLpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26%2FuNu5p7ofcn8w0nymeWTNz0MPIQ%2BBR5dE%2FC5%2BVMGvfrH5PQ0%2BBZ7XnIy9jL5FXrdewt6V3qvdh7xc%2B9j5yn%2BM%2B4zw33jLeWV%2FMN8C3yLfLT8Nvnl%2BF30N%2FI%2F9k%2F3r%2F0QCngCUBZwOJgUGBWwL7%2BHp8Ib%2BOPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo%2Bqi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt%2F87fOH4p3iC%2BN7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi%2FRNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z%2Bpn5mZ2y6xlhbL%2BxW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a%2FzYnKOZarnivN7cyzytuQN5zvn%2F%2FtEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1%2B1dT1gvWd%2B1YfqGnRs%2BFYmKrhTbF5cVf9go3HjlG4dvyr%2BZ3JS0qavEuWTPZtJm6ebeLZ5bDpaql%2BaXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO%2FPLi8ZafJzs07P1SkVPRU%2BlQ27tLdtWHX%2BG7R7ht7vPY07NXbW7z3%2FT7JvttVAVVN1WbVZftJ%2B7P3P66Jqun4lvttXa1ObXHtxwPSA%2F0HIw6217nU1R3SPVRSj9Yr60cOxx%2B%2B%2Fp3vdy0NNg1VjZzG4iNwRHnk6fcJ3%2FceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w%2B0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb%2B%2B6EHTh0kX%2Fi%2Bc7vDvOXPK4dPKy2%2BUTV7hXmq86X23qdOo8%2FpPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb%2F1tWeOT3dvfN6b%2FfF9%2FXfFt1%2Bcif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v%2B3Njv3H9qwHeg89HcR%2FcGhYPP%2FpH1jw9DBY%2BZj8uGDYbrnjg%2BOTniP3L96fynQ89kzyaeF%2F6i%2FsuuFxYvfvjV69fO0ZjRoZfyl5O%2FbXyl%2FerA6xmv28bCxh6%2ByXgzMV70VvvtwXfcdx3vo98PT%2BR8IH8o%2F2j5sfVT0Kf7kxmTk%2F8EA5jz%2FGMzLdsAAAAgY0hSTQAAeiUAAICDAAD5%2FwAAgOkAAHUwAADqYAAAOpgAABdvkl%2FFRgAABV5JREFUeNq0l2tQVVUYht%2F3W%2FvACMr16IFRQDiAgChpgiikMqY1WjnN9KsfGOXYTOVgkvbDUsZuXrK0qZmGUSvNspjI8TZOmo6AGBoZYly8YB6Qw80DBwQ6jJ3dj30OZZmiwvtv77XW96y91l7v9y1iMNLBuCI84tZkIXU9gwqxAILdokNBOtzgJQWWuYEDFxfcLAGh3y0k79iaD4mfjOVu4WYhoItngBiR6RkuFJAyEJBA3m%2Flri3Ih%2FuewXFFyAG4A8oAWkcm2meEzrFNH53Vkhg4xWnxCXcBQGu%2F3bfGeTbwjKPUcsZRElnfUxcuFLh1Nwh5vurx7s8GDbZ%2BL%2BtI%2FU0hkGGZX5c9%2FpXqOZYn2gazK8Vth0fvsRUknbx%2BbIJQQPCts%2FMda%2B4KthbJFoqeKwSejX6pfO2kjytxH1pfuyqlsGH7dJAgZWvFo23L%2F9muboF%2BJxtE0%2FOEwMqJG46uSHinFvepTPO8lhGaX%2BfPHSdjCKaPy%2Fb3v7az58h%2FwHFFyIHCRirgjUlbfsiJWXEFD6iUoOkdQaaQ6z9dP2YVahljF4%2ByXdvZ%2Fevf4G%2BhQk2sEAUsti4vWxa35gKGSBMDp3T23OxxVXdXRijKovSFzrerC6ELAMT6IhcCZIyeX7c68YPzGGLlxq89PyM0q5YU2M1RuQAg0EERbiaA7Ohl1RgmPTM2p1qjBk1Mm6GDErsfswAgLiDZPmfMwrbhAqeHzm6P8Z9gV9SQdTx2lpCyAEKkhc62YZiVEjTdRgo0zXeBRnImAaSFzm7xdjjtOBGyvmZVZkNvfZjXDhU14%2BBToFEDKRAQpAJ0HRTjP6XHpYUKEX7RzS9bV5c%2BFJTmAICUgNSWQ%2FZCgJwhIOJIQVLgFKcXvKHm9cyGvithFDUAFQqECho1CBUIggYapAJ1QEFBExNMYoISDU1%2FNIR9cvndTG%2Fc2IBkp2fC8ZpQgknBGI%2F3AsDvvRfDlJhwem5zwYMs7VNlaUtbXE1h3mezj9mlGSsXrBkzkFsGKGoDmedBJLfLjxQQgAYdHRSxtPfbfceNsPYBQPTI%2BGZbT31YxrGIpYoKpIKigkAgFOggNBrbQBBCBaEM2L%2BiGGmTgnF%2BUc1epqO%2F3VejAoAOUZSLQkFN17lAb4eVCe%2BVRvvHN4sH6t1feqAmMUGoPHvvhdLzTjzfKoj0sza%2FGLOy1Bu3vqc20Pgl5YIGkVOEZFZ0nLLMszzdDADTgjIdX6Uf3zfUx6m6u8riKRhOCcmDAqLCURo53Oe4rrsyUlGD0nlIqubdKNZJXOm9FH6y7Yh5uKBnO8vNTX2N4YoKE2fMLREQOsE8AfFN4%2Fak4QIfbd2XJFRQkLx85ruN7NTp2AoAZxwlCR9dWJc81NDdtoLkc86KBIJwXQ3aOpCPqwuhR2SPbCBlUc2NyogQX3N7wqgU51BAf2w9EFXUtCtLqADqS76ev6%2Filgrk2q6esxHZgf5CySh3FMcG%2B5jbE0ZNdj4odHdDwWPGcZNNO1MPbrxtzdW4s%2BtI5HPBwQTTzziKY3v%2F7HGlhmS23g90T%2BOO5L1Nu7MMw3Fv%2FTx1f97%2FFnsAYPui8%2FD4nBB%2FoZZR230uoq67auQoLaB37Iio3sEAK52nR39p%2BzS13HFiilHeYtOOabdC71jQzz2R%2BALBbcrjWNF%2BcfaUwLSrk4KmtsT4T%2BgK9jG7AKKjv93X1lcfUNNVaantropqddnDCcIoa7lk29S92%2B%2F5CpOvQ04VJ79KUe%2F7iI%2FHh40U6c3PyuPjhmWKN8G8Fvnw1A%2FzmX%2FvV5h%2FT%2BCXstRMUp4kOFOjZiUlWBkFQYdALitRZXRzf3RqWumdgF79NQDBOa2V%2FiYSHAAAAABJRU5ErkJggg%3D%3D%3Bbottom%3A10px%3Bright%3A55px%7Ddiv%2Evis%2Dnetwork%20div%2Evis%2Dnavigation%20div%2Evis%2Dbutton%2Evis%2DzoomExtends%7Bbackground%2Dimage%3Adata%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89%2BbN%2FrXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz%2FSMBAPh%2BPDwrIsAHvgABeNMLCADATZvAMByH%2Fw%2FqQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf%2BbTAICd%2BJl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA%2Fg88wAAKCRFRHgg%2FP9eM4Ors7ONo62Dl8t6r8G%2FyJiYuP%2B5c%2BrcEAAAOF0ftH%2BLC%2BzGoA7BoBt%2FqIl7gRoXgugdfeLZrIPQLUAoOnaV%2FNw%2BH48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl%2FAV%2F1s%2BX48%2FPf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H%2FLcL%2F%2Fwd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s%2BwM%2B3zUAsGo%2BAXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93%2F%2B8%2F%2FUegJQCAZkmScQAAXkQkLlTKsz%2FHCAAARKCBKrBBG%2FTBGCzABhzBBdzBC%2FxgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD%2FphCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8%2BQ8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8%2BxdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR%2BcQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI%2BksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG%2BQh8lsKnWJAcaT4U%2BIoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr%2Bh0uhHdlR5Ol9BX0svpR%2BiX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK%2BYTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI%2BpXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q%2FpH5Z%2FYkGWcNMw09DpFGgsV%2FjvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY%2FR27iz2qqaE5QzNKM1ezUvOUZj8H45hx%2BJx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4%2FOBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up%2B6Ynr5egJ5Mb6feeb3n%2Bhx9L%2F1U%2FW36p%2FVHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm%2Beb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw%2B6TvZN9un2N%2FT0HDYfZDqsdWh1%2Bc7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc%2BLpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26%2FuNu5p7ofcn8w0nymeWTNz0MPIQ%2BBR5dE%2FC5%2BVMGvfrH5PQ0%2BBZ7XnIy9jL5FXrdewt6V3qvdh7xc%2B9j5yn%2BM%2B4zw33jLeWV%2FMN8C3yLfLT8Nvnl%2BF30N%2FI%2F9k%2F3r%2F0QCngCUBZwOJgUGBWwL7%2BHp8Ib%2BOPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo%2Bqi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt%2F87fOH4p3iC%2BN7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi%2FRNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z%2Bpn5mZ2y6xlhbL%2BxW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a%2FzYnKOZarnivN7cyzytuQN5zvn%2F%2FtEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1%2B1dT1gvWd%2B1YfqGnRs%2BFYmKrhTbF5cVf9go3HjlG4dvyr%2BZ3JS0qavEuWTPZtJm6ebeLZ5bDpaql%2BaXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO%2FPLi8ZafJzs07P1SkVPRU%2BlQ27tLdtWHX%2BG7R7ht7vPY07NXbW7z3%2FT7JvttVAVVN1WbVZftJ%2B7P3P66Jqun4lvttXa1ObXHtxwPSA%2F0HIw6217nU1R3SPVRSj9Yr60cOxx%2B%2B%2Fp3vdy0NNg1VjZzG4iNwRHnk6fcJ3%2FceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w%2B0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb%2B%2B6EHTh0kX%2Fi%2Bc7vDvOXPK4dPKy2%2BUTV7hXmq86X23qdOo8%2FpPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb%2F1tWeOT3dvfN6b%2FfF9%2FXfFt1%2Bcif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v%2B3Njv3H9qwHeg89HcR%2FcGhYPP%2FpH1jw9DBY%2BZj8uGDYbrnjg%2BOTniP3L96fynQ89kzyaeF%2F6i%2FsuuFxYvfvjV69fO0ZjRoZfyl5O%2FbXyl%2FerA6xmv28bCxh6%2ByXgzMV70VvvtwXfcdx3vo98PT%2BR8IH8o%2F2j5sfVT0Kf7kxmTk%2F8EA5jz%2FGMzLdsAAAAgY0hSTQAAeiUAAICDAAD5%2FwAAgOkAAHUwAADqYAAAOpgAABdvkl%2FFRgAABptJREFUeNqsl21QlNcVx%2F%2F%2Fcx9hIipuAJHasgHlRdw0xay7yK7smg6sb2DSdtqZduLUNENmOk1tQuM4U7UzTvshSRlFZzoNCWSSSTJp%2B6VNkLCAeQHBoCCgqNBE0wUqL%2BKuwIiiZZ9%2BeHa3aAS3Sf8zO8%2FL3nt%2B95x7z7n3YWlpKUQEJAEgch9%2BJola9xEC2ADBVgAOKqwCYAqKDgUJBIHPBWwFWQNdbyZFBwAC0GGIAHQSj3%2F8HHRdhzYbdDfwg4IjAsGvICgXAroYBiCEDkBBACBZoyST4gDwQqh7mQ4cEkhQD0EBIIggRMQAh2EiEvEYAGrdR3YSqIYCIEDaotVDeYnu%2FryEjSOr43PHl8WmTBPA6PRQ7IWJrvhT%2FubkU%2F7m1EvX%2B1KEUh7Ug%2BWkPEXgdUSkR%2Bxrd0NJ4qjr8AEI9pGAI7mo78mHfnF%2BY%2FK2K7iHUheuvJG6cOUNz%2FLvDwPobrpSl%2FRuf2VOy9UPs4RSTSANwH4Y449EVdnt9ojHIeghCHYLgR%2Bn%2F7zt4Np32tIWZU4hSpnjVk1t%2FcaPfOO3%2Ff%2B%2BMNH5TVJcisoEoo4ksgbsXwYfdR1%2BkQplQuCFNS82Pp%2F9%2B158RTkTC0ce0OKutQeOp5PME0qcUBqyBmwGOC8vz4AWVOyE4CUqYO%2FDh%2Bp3pj%2F%2FBb6mHllqCyxd8ODVT69%2BuFKoOYTSnzFg7SJpzHFNQYWiQrUIsCN9V%2BuOh375zz179pSGI1FSUuK12%2B2%2BaGDt7e3muro6T%2Fh57969lZdvDrT%2BZbA6n0B1nfPVN7e0PjMjIgIIdkEAR1JR329yDvaE0%2Bl%2FhQKA1Wr1bd682SsikUW7K%2BO3PesTNvaSAiXaLhGBvO86RFEoJ4Adac%2BeDxsgiZKSEm9NTY3n5MmT5mjBHR0d5vr6es%2BmTZu8SqnI%2Bx%2Bs%2BOl5jRo0auX1jtepQaEAADKWWIbcy7ZGUmb79u1eu93uI%2Bmtra31HLj5TGDs9rBJICCNn1GRCKGCUJAUuzzw6CfbTB6Px7t27VofAG%2FYXl6Ceyw9LmvIN3UxZUafKRACWyCELcHVP3vk4fDabDZf%2B2N%2FD9g%2BfsLEEFSooFGDogZNFkBRgSCsTcWm066jgRAU4et%2FF5u9nxRosmCLRmE%2BQdgSXCNzhW%2Fs9rDJ63wVJx77V%2BV8YS6UNaW8BdOcqzx%2B3Ujt0F8Bcr1GMIMU5CzJHZ%2Brg6IGCYV2PimoyIK6lzIWrxkPTVGmRoqJFCyLTZmeq4MB5f3BVADnbpcQkzStUQMAk0YKBPfzxlhA95NQQe43QBotBECAFFyZHo6dz6CKCizAPFPivzUWqxm2AqIgnwkFvZNn4uczGK3Hah7wpet98UZ85R8aKScIcXYEWpMLkx8fvleHpNjlAWtTsakQa0pVKGcJQqMGUqCHBvfdjp%2FgTP6xwFzg85PdyaH2J4SUowKiw3889e4KBACnT582W5uKTV2uusAdUFlgzBcFQoFGDT35HwW%2B82mhqaenxwwA4WtYfRNnUkMZUqsJpEkn8cXU5yktYw2JjsTCMQDwer0ekt6GhgZPUVGRd3fu7qjqdU9Mj7mlpcVD0tvS0uKxWCyVANB5rS3x8s3BFEUFgTTLtuZndQHLBMSfB6pyZtfqMDQ3NzfqTcJisficTqc3BI%2B8bxh9L8corarM3fnDoIT%2BrACAU%2F7m7MOfHbCEwQDQ2Njo6erqinqTOHfuXNjjiI23%2BystZ8c7smmkWgVJcN%2B%2BfRARfLDhlacEUqVEQ1nm77xPrHjSh%2F%2BDjo3WmN%2Fs%2F6OHEOgIPr2h63tVuq5Dud1ukETWoK3zorkzTiiONn%2FTKlNM4lj24m%2BPf13o2wOVHqGA5MsAXjKPrDaqnMvlQnjTzhy0Nlw0d5oI5p3yN62amrk%2Bve5B5%2BhXgb47WGX52%2BV3NgoFOvQKAGUkkTqcbZy5XC7XHYf4zEFr3aXU7jih5uidPPOtvsmzixZr8VMrHjBHddLsHj%2BZ9Fb%2Fn9a1%2BT%2FJDaXey0IpEzEKkHnU8Jj79%2B%2BPeEwSSimQRGP%2BGz8j5DVFBVKQtjBj6JGlNt%2FD8Y%2BOpMdlTphiEqcB4tqtsVjfjUtLLkx0J%2FdOnjWPTg%2BlEARIEHwaQJVQIYggACC%2Fqxi6rn8ZHL4XETSsf0MU1HOk%2FCFGYgAwskUqY5eBitRxzn7%2Fa0V1EEBwdqkN6jPI7y4xPmHmC5unbWdQRMqP2d86qANOksU6gvmArNQRNClqABnQgYuK0krI%2BwCOAyH3DK%2FvqOXhaf3PAO7mIRjDNV25AAAAAElFTkSuQmCC%3Bbottom%3A50px%3Bright%3A15px%7Ddiv%2Evis%2Dnetwork%2Dtooltip%7Bposition%3Aabsolute%3Bvisibility%3Ahidden%3Bpadding%3A5px%3Bwhite%2Dspace%3Anowrap%3Bfont%2Dfamily%3Averdana%3Bfont%2Dsize%3A14px%3Bfont%2Dcolor%3A%23000%3Bbackground%2Dcolor%3A%23f5f4ed%3B%2Dmoz%2Dborder%2Dradius%3A3px%3B%2Dwebkit%2Dborder%2Dradius%3A3px%3Bborder%2Dradius%3A3px%3Bborder%3A1px%20solid%20%23808074%3Bbox%2Dshadow%3A3px%203px%2010px%20rgba%280%2C0%2C0%2C%2E2%29%3Bpointer%2Devents%3Anone%7Ddiv%2Evis%2Dnetwork%2Dconfiguration%7Bposition%3Arelative%3Bdisplay%3Ablock%3Bfloat%3Aleft%3Bfont%2Dsize%3A12px%7Ddiv%2Evis%2Dnetwork%2Dconfiguration%2Dwrapper%7Bdisplay%3Ablock%3Bwidth%3A700px%7Ddiv%2Evis%2Dnetwork%2Dconfiguration%2Evis%2Doption%2Dcontainer%7Bdisplay%3Ablock%3Bwidth%3A495px%3Bbackground%2Dcolor%3A%23fff%3Bborder%3A2px%20solid%20%23f7f8fa%3Bborder%2Dradius%3A4px%3Bmargin%2Dtop%3A20px%3Bleft%3A10px%3Bpadding%2Dleft%3A5px%7Ddiv%2Evis%2Dnetwork%2Dconfiguration%2Ebutton%7Bdisplay%3Ablock%3Bwidth%3A495px%3Bheight%3A25px%3Bvertical%2Dalign%3Amiddle%3Bline%2Dheight%3A25px%3Bbackground%2Dcolor%3A%23f7f8fa%3Bborder%3A2px%20solid%20%23ceced0%3Bborder%2Dradius%3A4px%3Bmargin%2Dtop%3A20px%3Bleft%3A10px%3Bpadding%2Dleft%3A5px%3Bcursor%3Apointer%3Bmargin%2Dbottom%3A30px%7Ddiv%2Evis%2Dnetwork%2Dconfiguration%2Ebutton%2Ehover%7Bbackground%2Dcolor%3A%234588e6%3Bborder%3A2px%20solid%20%23214373%3Bcolor%3A%23fff%7Ddiv%2Evis%2Dnetwork%2Dconfiguration%2Eitem%7Bdisplay%3Ablock%3Bfloat%3Aleft%3Bwidth%3A495px%3Bheight%3A25px%3Bvertical%2Dalign%3Amiddle%3Bline%2Dheight%3A25px%7Ddiv%2Evis%2Dnetwork%2Dconfiguration%2Eitem%2Es2%7Bleft%3A10px%3Bbackground%2Dcolor%3A%23f7f8fa%3Bpadding%2Dleft%3A5px%3Bborder%2Dradius%3A3px%7Ddiv%2Evis%2Dnetwork%2Dconfiguration%2Eitem%2Es3%7Bleft%3A20px%3Bbackground%2Dcolor%3A%23e4e9f0%3Bpadding%2Dleft%3A5px%3Bborder%2Dradius%3A3px%7Ddiv%2Evis%2Dnetwork%2Dconfiguration%2Eitem%2Es4%7Bleft%3A30px%3Bbackground%2Dcolor%3A%23cfd8e6%3Bpadding%2Dleft%3A5px%3Bborder%2Dradius%3A3px%7Ddiv%2Evis%2Dnetwork%2Dconfiguration%2Eheader%7Bfont%2Dsize%3A18px%3Bfont%2Dweight%3A700%7Ddiv%2Evis%2Dnetwork%2Dconfiguration%2Elabel%7Bwidth%3A120px%3Bheight%3A25px%3Bline%2Dheight%3A25px%7Ddiv%2Evis%2Dnetwork%2Dconfiguration%2Elabel%2Es3%7Bwidth%3A110px%7Ddiv%2Evis%2Dnetwork%2Dconfiguration%2Elabel%2Es4%7Bwidth%3A100px%7Ddiv%2Evis%2Dnetwork%2Dconfiguration%2EcolorBlock%7Btop%3A1px%3Bwidth%3A30px%3Bheight%3A19px%3Bborder%3A1px%20solid%20%23444%3Bborder%2Dradius%3A2px%3Bpadding%3A0%3Bmargin%3A0%3Bcursor%3Apointer%7Dinput%2Evis%2Dnetwork%2Dconfiguration%2Echeckbox%7Bleft%3A%2D5px%7Dinput%2Evis%2Dnetwork%2Dconfiguration%2Erangeinput%7Bposition%3Arelative%3Btop%3A%2D5px%3Bwidth%3A60px%3Bheight%3A13px%3Bpadding%3A1px%3Bmargin%3A0%3Bpointer%2Devents%3Anone%7Dinput%2Evis%2Dnetwork%2Dconfiguration%2Erange%7B%2Dwebkit%2Dappearance%3Anone%3Bborder%3A0%20solid%20%23fff%3Bbackground%2Dcolor%3Atransparent%3Bwidth%3A300px%3Bheight%3A20px%7Dinput%2Evis%2Dnetwork%2Dconfiguration%2Erange%3A%3A%2Dwebkit%2Dslider%2Drunnable%2Dtrack%7Bwidth%3A300px%3Bheight%3A5px%3Bbackground%3A%23dedede%3Bbackground%3A%2Dmoz%2Dlinear%2Dgradient%28top%2C%23dedede%200%2C%23c8c8c8%2099%25%29%3Bbackground%3A%2Dwebkit%2Dgradient%28linear%2Cleft%20top%2Cleft%20bottom%2Ccolor%2Dstop%280%2C%23dedede%29%2Ccolor%2Dstop%2899%25%2C%23c8c8c8%29%29%3Bbackground%3A%2Dwebkit%2Dlinear%2Dgradient%28top%2C%23dedede%200%2C%23c8c8c8%2099%25%29%3Bbackground%3A%2Do%2Dlinear%2Dgradient%28top%2C%23dedede%200%2C%23c8c8c8%2099%25%29%3Bbackground%3A%2Dms%2Dlinear%2Dgradient%28top%2C%23dedede%200%2C%23c8c8c8%2099%25%29%3Bbackground%3Alinear%2Dgradient%28to%20bottom%2C%23dedede%200%2C%23c8c8c8%2099%25%29%3Bfilter%3Aprogid%3ADXImageTransform%2EMicrosoft%2Egradient%28%20startColorstr%3D%27%23dedede%27%2C%20endColorstr%3D%27%23c8c8c8%27%2C%20GradientType%3D0%20%29%3Bborder%3A1px%20solid%20%23999%3Bbox%2Dshadow%3A%23aaa%200%200%203px%200%3Bborder%2Dradius%3A3px%7Dinput%2Evis%2Dnetwork%2Dconfiguration%2Erange%3A%3A%2Dwebkit%2Dslider%2Dthumb%7B%2Dwebkit%2Dappearance%3Anone%3Bborder%3A1px%20solid%20%2314334b%3Bheight%3A17px%3Bwidth%3A17px%3Bborder%2Dradius%3A50%25%3Bbackground%3A%233876c2%3Bbackground%3A%2Dmoz%2Dlinear%2Dgradient%28top%2C%233876c2%200%2C%23385380%20100%25%29%3Bbackground%3A%2Dwebkit%2Dgradient%28linear%2Cleft%20top%2Cleft%20bottom%2Ccolor%2Dstop%280%2C%233876c2%29%2Ccolor%2Dstop%28100%25%2C%23385380%29%29%3Bbackground%3A%2Dwebkit%2Dlinear%2Dgradient%28top%2C%233876c2%200%2C%23385380%20100%25%29%3Bbackground%3A%2Do%2Dlinear%2Dgradient%28top%2C%233876c2%200%2C%23385380%20100%25%29%3Bbackground%3A%2Dms%2Dlinear%2Dgradient%28top%2C%233876c2%200%2C%23385380%20100%25%29%3Bbackground%3Alinear%2Dgradient%28to%20bottom%2C%233876c2%200%2C%23385380%20100%25%29%3Bfilter%3Aprogid%3ADXImageTransform%2EMicrosoft%2Egradient%28%20startColorstr%3D%27%233876c2%27%2C%20endColorstr%3D%27%23385380%27%2C%20GradientType%3D0%20%29%3Bbox%2Dshadow%3A%23111927%200%200%201px%200%3Bmargin%2Dtop%3A%2D7px%7Dinput%2Evis%2Dnetwork%2Dconfiguration%2Erange%3Afocus%7Boutline%3A0%7Dinput%2Evis%2Dnetwork%2Dconfiguration%2Erange%3Afocus%3A%3A%2Dwebkit%2Dslider%2Drunnable%2Dtrack%7Bbackground%3A%239d9d9d%3Bbackground%3A%2Dmoz%2Dlinear%2Dgradient%28top%2C%239d9d9d%200%2C%23c8c8c8%2099%25%29%3Bbackground%3A%2Dwebkit%2Dgradient%28linear%2Cleft%20top%2Cleft%20bottom%2Ccolor%2Dstop%280%2C%239d9d9d%29%2Ccolor%2Dstop%2899%25%2C%23c8c8c8%29%29%3Bbackground%3A%2Dwebkit%2Dlinear%2Dgradient%28top%2C%239d9d9d%200%2C%23c8c8c8%2099%25%29%3Bbackground%3A%2Do%2Dlinear%2Dgradient%28top%2C%239d9d9d%200%2C%23c8c8c8%2099%25%29%3Bbackground%3A%2Dms%2Dlinear%2Dgradient%28top%2C%239d9d9d%200%2C%23c8c8c8%2099%25%29%3Bbackground%3Alinear%2Dgradient%28to%20bottom%2C%239d9d9d%200%2C%23c8c8c8%2099%25%29%3Bfilter%3Aprogid%3ADXImageTransform%2EMicrosoft%2Egradient%28%20startColorstr%3D%27%239d9d9d%27%2C%20endColorstr%3D%27%23c8c8c8%27%2C%20GradientType%3D0%20%29%7Dinput%2Evis%2Dnetwork%2Dconfiguration%2Erange%3A%3A%2Dmoz%2Drange%2Dtrack%7Bwidth%3A300px%3Bheight%3A10px%3Bbackground%3A%23dedede%3Bbackground%3A%2Dmoz%2Dlinear%2Dgradient%28top%2C%23dedede%200%2C%23c8c8c8%2099%25%29%3Bbackground%3A%2Dwebkit%2Dgradient%28linear%2Cleft%20top%2Cleft%20bottom%2Ccolor%2Dstop%280%2C%23dedede%29%2Ccolor%2Dstop%2899%25%2C%23c8c8c8%29%29%3Bbackground%3A%2Dwebkit%2Dlinear%2Dgradient%28top%2C%23dedede%200%2C%23c8c8c8%2099%25%29%3Bbackground%3A%2Do%2Dlinear%2Dgradient%28top%2C%23dedede%200%2C%23c8c8c8%2099%25%29%3Bbackground%3A%2Dms%2Dlinear%2Dgradient%28top%2C%23dedede%200%2C%23c8c8c8%2099%25%29%3Bbackground%3Alinear%2Dgradient%28to%20bottom%2C%23dedede%200%2C%23c8c8c8%2099%25%29%3Bfilter%3Aprogid%3ADXImageTransform%2EMicrosoft%2Egradient%28%20startColorstr%3D%27%23dedede%27%2C%20endColorstr%3D%27%23c8c8c8%27%2C%20GradientType%3D0%20%29%3Bborder%3A1px%20solid%20%23999%3Bbox%2Dshadow%3A%23aaa%200%200%203px%200%3Bborder%2Dradius%3A3px%7Dinput%2Evis%2Dnetwork%2Dconfiguration%2Erange%3A%3A%2Dmoz%2Drange%2Dthumb%7Bborder%3Anone%3Bheight%3A16px%3Bwidth%3A16px%3Bborder%2Dradius%3A50%25%3Bbackground%3A%23385380%7Dinput%2Evis%2Dnetwork%2Dconfiguration%2Erange%3A%2Dmoz%2Dfocusring%7Boutline%3A%23fff%20solid%201px%3Boutline%2Doffset%3A%2D1px%7Dinput%2Evis%2Dnetwork%2Dconfiguration%2Erange%3A%3A%2Dms%2Dtrack%7Bwidth%3A300px%3Bheight%3A5px%3Bbackground%3A0%200%3Bborder%2Dcolor%3Atransparent%3Bborder%2Dwidth%3A6px%200%3Bcolor%3Atransparent%7Dinput%2Evis%2Dnetwork%2Dconfiguration%2Erange%3A%3A%2Dms%2Dfill%2Dlower%7Bbackground%3A%23777%3Bborder%2Dradius%3A10px%7Dinput%2Evis%2Dnetwork%2Dconfiguration%2Erange%3A%3A%2Dms%2Dfill%2Dupper%7Bbackground%3A%23ddd%3Bborder%2Dradius%3A10px%7Dinput%2Evis%2Dnetwork%2Dconfiguration%2Erange%3A%3A%2Dms%2Dthumb%7Bborder%3Anone%3Bheight%3A16px%3Bwidth%3A16px%3Bborder%2Dradius%3A50%25%3Bbackground%3A%23385380%7Dinput%2Evis%2Dnetwork%2Dconfiguration%2Erange%3Afocus%3A%3A%2Dms%2Dfill%2Dlower%7Bbackground%3A%23888%7Dinput%2Evis%2Dnetwork%2Dconfiguration%2Erange%3Afocus%3A%3A%2Dms%2Dfill%2Dupper%7Bbackground%3A%23ccc%7Ddiv%2Evis%2Dcolor%2Dpicker%7Bposition%3Aabsolute%3Bmargin%2Dtop%3A%2D140px%3Bmargin%2Dleft%3A30px%3Bwidth%3A293px%3Bheight%3A425px%3Bpadding%3A10px%3Bborder%2Dradius%3A15px%3Bbackground%2Dcolor%3A%23fff%3Bdisplay%3Anone%3Bbox%2Dshadow%3Argba%280%2C0%2C0%2C%2E5%29%200%200%2010px%200%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Darrow%7Bposition%3Aabsolute%3Btop%3A147px%3Bleft%3A5px%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Darrow%3Aafter%2Cdiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Darrow%3Abefore%7Bright%3A100%25%3Btop%3A50%25%3Bborder%3Asolid%20transparent%3Bcontent%3A%22%20%22%3Bheight%3A0%3Bwidth%3A0%3Bposition%3Aabsolute%3Bpointer%2Devents%3Anone%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Darrow%3Aafter%7Bborder%2Dcolor%3Argba%28255%2C255%2C255%2C0%29%3Bborder%2Dright%2Dcolor%3A%23fff%3Bborder%2Dwidth%3A30px%3Bmargin%2Dtop%3A%2D30px%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Dcolor%7Bposition%3Aabsolute%3Bwidth%3A289px%3Bheight%3A289px%3Bcursor%3Apointer%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Dbrightness%7Bposition%3Aabsolute%3Btop%3A313px%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Dopacity%7Bposition%3Aabsolute%3Btop%3A350px%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Dselector%7Bposition%3Aabsolute%3Btop%3A137px%3Bleft%3A137px%3Bwidth%3A15px%3Bheight%3A15px%3Bborder%2Dradius%3A15px%3Bborder%3A1px%20solid%20%23fff%3Bbackground%3A%234c4c4c%3Bbackground%3A%2Dmoz%2Dlinear%2Dgradient%28top%2C%234c4c4c%200%2C%23595959%2012%25%2C%23666%2025%25%2C%23474747%2039%25%2C%232c2c2c%2050%25%2C%23000%2051%25%2C%23111%2060%25%2C%232b2b2b%2076%25%2C%231c1c1c%2091%25%2C%23131313%20100%25%29%3Bbackground%3A%2Dwebkit%2Dgradient%28linear%2Cleft%20top%2Cleft%20bottom%2Ccolor%2Dstop%280%2C%234c4c4c%29%2Ccolor%2Dstop%2812%25%2C%23595959%29%2Ccolor%2Dstop%2825%25%2C%23666%29%2Ccolor%2Dstop%2839%25%2C%23474747%29%2Ccolor%2Dstop%2850%25%2C%232c2c2c%29%2Ccolor%2Dstop%2851%25%2C%23000%29%2Ccolor%2Dstop%2860%25%2C%23111%29%2Ccolor%2Dstop%2876%25%2C%232b2b2b%29%2Ccolor%2Dstop%2891%25%2C%231c1c1c%29%2Ccolor%2Dstop%28100%25%2C%23131313%29%29%3Bbackground%3A%2Dwebkit%2Dlinear%2Dgradient%28top%2C%234c4c4c%200%2C%23595959%2012%25%2C%23666%2025%25%2C%23474747%2039%25%2C%232c2c2c%2050%25%2C%23000%2051%25%2C%23111%2060%25%2C%232b2b2b%2076%25%2C%231c1c1c%2091%25%2C%23131313%20100%25%29%3Bbackground%3A%2Do%2Dlinear%2Dgradient%28top%2C%234c4c4c%200%2C%23595959%2012%25%2C%23666%2025%25%2C%23474747%2039%25%2C%232c2c2c%2050%25%2C%23000%2051%25%2C%23111%2060%25%2C%232b2b2b%2076%25%2C%231c1c1c%2091%25%2C%23131313%20100%25%29%3Bbackground%3A%2Dms%2Dlinear%2Dgradient%28top%2C%234c4c4c%200%2C%23595959%2012%25%2C%23666%2025%25%2C%23474747%2039%25%2C%232c2c2c%2050%25%2C%23000%2051%25%2C%23111%2060%25%2C%232b2b2b%2076%25%2C%231c1c1c%2091%25%2C%23131313%20100%25%29%3Bbackground%3Alinear%2Dgradient%28to%20bottom%2C%234c4c4c%200%2C%23595959%2012%25%2C%23666%2025%25%2C%23474747%2039%25%2C%232c2c2c%2050%25%2C%23000%2051%25%2C%23111%2060%25%2C%232b2b2b%2076%25%2C%231c1c1c%2091%25%2C%23131313%20100%25%29%3Bfilter%3Aprogid%3ADXImageTransform%2EMicrosoft%2Egradient%28%20startColorstr%3D%27%234c4c4c%27%2C%20endColorstr%3D%27%23131313%27%2C%20GradientType%3D0%20%29%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Dinitial%2Dcolor%2Cdiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Dnew%2Dcolor%7Bposition%3Aabsolute%3Bvertical%2Dalign%3Amiddle%3Bwidth%3A140px%3Bheight%3A20px%3Btop%3A380px%3Bfont%2Dsize%3A10px%3Bcolor%3Argba%280%2C0%2C0%2C%2E4%29%3Bline%2Dheight%3A20px%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Dnew%2Dcolor%7Bborder%3A1px%20solid%20rgba%280%2C0%2C0%2C%2E1%29%3Bborder%2Dradius%3A5px%3Bleft%3A159px%3Btext%2Dalign%3Aright%3Bpadding%2Dright%3A2px%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Dinitial%2Dcolor%7Bborder%3A1px%20solid%20rgba%280%2C0%2C0%2C%2E1%29%3Bborder%2Dradius%3A5px%3Bleft%3A10px%3Btext%2Dalign%3Aleft%3Bpadding%2Dleft%3A2px%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Dlabel%7Bposition%3Aabsolute%3Bwidth%3A300px%3Bleft%3A10px%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Dlabel%2Evis%2Dbrightness%7Btop%3A300px%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Dlabel%2Evis%2Dopacity%7Btop%3A338px%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Dbutton%7Bposition%3Aabsolute%3Bwidth%3A68px%3Bheight%3A25px%3Bborder%2Dradius%3A10px%3Bvertical%2Dalign%3Amiddle%3Btext%2Dalign%3Acenter%3Bline%2Dheight%3A25px%3Btop%3A410px%3Bborder%3A2px%20solid%20%23d9d9d9%3Bbackground%2Dcolor%3A%23f7f7f7%3Bcursor%3Apointer%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Dbutton%2Evis%2Dcancel%7Bleft%3A5px%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Dbutton%2Evis%2Dload%7Bleft%3A82px%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Dbutton%2Evis%2Dapply%7Bleft%3A159px%7Ddiv%2Evis%2Dcolor%2Dpicker%20div%2Evis%2Dbutton%2Evis%2Dsave%7Bleft%3A236px%7Ddiv%2Evis%2Dcolor%2Dpicker%20input%2Evis%2Drange%7Bwidth%3A290px%3Bheight%3A20px%7D" rel="stylesheet" />
<script src="data:application/x-javascript;base64,LyoqDQogKiB2aXMuanMNCiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hbG1lbmRlL3Zpcw0KICoNCiAqIEEgZHluYW1pYywgYnJvd3Nlci1iYXNlZCB2aXN1YWxpemF0aW9uIGxpYnJhcnkuDQogKg0KICogQHZlcnNpb24gNC40LjANCiAqIEBkYXRlICAgIDIwMTUtMDctMDMNCiAqDQogKiBAbGljZW5zZQ0KICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTQgQWxtZW5kZSBCLlYsIGh0dHA6Ly9hbG1lbmRlLmNvbQ0KICoNCiAqIFZpcy5qcyBpcyBkdWFsIGxpY2Vuc2VkIHVuZGVyIGJvdGgNCiAqDQogKiAqIFRoZSBBcGFjaGUgMi4wIExpY2Vuc2UNCiAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQogKg0KICogYW5kDQogKg0KICogKiBUaGUgTUlUIExpY2Vuc2UNCiAqICAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVA0KICoNCiAqIFZpcy5qcyBtYXkgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgZWl0aGVyIGxpY2Vuc2UuDQogKi8NCiJ1c2Ugc3RyaWN0IjshZnVuY3Rpb24odCxlKXsib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHMmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlP21vZHVsZS5leHBvcnRzPWUoKToiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShlKToib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHM/ZXhwb3J0cy52aXM9ZSgpOnQudmlzPWUoKX0odGhpcyxmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXtmdW5jdGlvbiBlKG8pe2lmKGlbb10pcmV0dXJuIGlbb10uZXhwb3J0czt2YXIgbj1pW29dPXtleHBvcnRzOnt9LGlkOm8sbG9hZGVkOiExfTtyZXR1cm4gdFtvXS5jYWxsKG4uZXhwb3J0cyxuLG4uZXhwb3J0cyxlKSxuLmxvYWRlZD0hMCxuLmV4cG9ydHN9dmFyIGk9e307cmV0dXJuIGUubT10LGUuYz1pLGUucD0iIixlKDApfShbZnVuY3Rpb24odCxlLGkpe2UudXRpbD1pKDcpLGUuRE9NdXRpbD1pKDEzKSxlLkRhdGFTZXQ9aSgxNCksZS5EYXRhVmlldz1pKDE2KSxlLlF1ZXVlPWkoMTUpLGUuR3JhcGgzZD1pKDE3KSxlLmdyYXBoM2Q9e0NhbWVyYTppKDIxKSxGaWx0ZXI6aSgyMiksUG9pbnQyZDppKDE4KSxQb2ludDNkOmkoMjApLFNsaWRlcjppKDIzKSxTdGVwTnVtYmVyOmkoMjQpfSxlLlRpbWVsaW5lPWkoMjUpLGUuR3JhcGgyZD1pKDQ5KSxlLnRpbWVsaW5lPXtEYXRlVXRpbDppKDMxKSxEYXRhU3RlcDppKDUyKSxSYW5nZTppKDI5KSxzdGFjazppKDM1KSxUaW1lU3RlcDppKDM3KSxjb21wb25lbnRzOntpdGVtczp7SXRlbTppKDIpLEJhY2tncm91bmRJdGVtOmkoNDApLEJveEl0ZW06aSgzOSksUG9pbnRJdGVtOmkoMSksUmFuZ2VJdGVtOmkoMzYpfSxDb21wb25lbnQ6aSgyNyksQ3VycmVudFRpbWU6aSgyNiksQ3VzdG9tVGltZTppKDQ0KSxEYXRhQXhpczppKDUxKSxHcmFwaEdyb3VwOmkoNTMpLEdyb3VwOmkoMzQpLEJhY2tncm91bmRHcm91cDppKDM4KSxJdGVtU2V0OmkoMzMpLExlZ2VuZDppKDU3KSxMaW5lR3JhcGg6aSg1MCksVGltZUF4aXM6aSg0MSl9fSxlLk5ldHdvcms9aSg1OSksZS5uZXR3b3JrPXtJbWFnZXM6aSgxMTIpLGRvdHBhcnNlcjppKDExMCksZ2VwaGlQYXJzZXI6aSgxMTEpLGFsbE9wdGlvbnM6aSgxMDgpfSxlLm5ldHdvcmsuY29udmVydERvdD1mdW5jdGlvbih0KXtyZXR1cm4gZS5uZXR3b3JrLmRvdHBhcnNlci5ET1RUb0dyYXBoKHQpfSxlLm5ldHdvcmsuY29udmVydEdlcGhpPWZ1bmN0aW9uKHQsaSl7cmV0dXJuIGUubmV0d29yay5nZXBoaVBhcnNlci5wYXJzZUdlcGhpKHQsaSl9LGUuR3JhcGg9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIkdyYXBoIGlzIHJlbmFtZWQgdG8gTmV0d29yay4gUGxlYXNlIGNyZWF0ZSBhIGdyYXBoIGFzIG5ldyB2aXMuTmV0d29yayguLi4pIil9LGUubW9tZW50PWkoOCksZS5oYW1tZXI9aSgzKSxlLkhhbW1lcj1pKDMpLGUua2V5Y2hhcm09aSg0Myl9LGZ1bmN0aW9uKHQsZSxpKXtmdW5jdGlvbiBvKHQsZSxpKXtpZih0aGlzLnByb3BzPXtkb3Q6e3RvcDowLHdpZHRoOjAsaGVpZ2h0OjB9LGNvbnRlbnQ6e2hlaWdodDowLG1hcmdpbkxlZnQ6MH19LHQmJnZvaWQgMD09dC5zdGFydCl0aHJvdyBuZXcgRXJyb3IoJ1Byb3BlcnR5ICJzdGFydCIgbWlzc2luZyBpbiBpdGVtICcrdCk7bi5jYWxsKHRoaXMsdCxlLGkpfXZhciBuPWkoMik7by5wcm90b3R5cGU9bmV3IG4obnVsbCxudWxsLG51bGwpLG8ucHJvdG90eXBlLmlzVmlzaWJsZT1mdW5jdGlvbih0KXt2YXIgZT0odC5lbmQtdC5zdGFydCkvNDtyZXR1cm4gdGhpcy5kYXRhLnN0YXJ0PnQuc3RhcnQtZSYmdGhpcy5kYXRhLnN0YXJ0PHQuZW5kK2V9LG8ucHJvdG90eXBlLnJlZHJhdz1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZG9tO2lmKHR8fCh0aGlzLmRvbT17fSx0PXRoaXMuZG9tLHQucG9pbnQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdC5jb250ZW50PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHQuY29udGVudC5jbGFzc05hbWU9InZpcy1pdGVtLWNvbnRlbnQiLHQucG9pbnQuYXBwZW5kQ2hpbGQodC5jb250ZW50KSx0LmRvdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0LnBvaW50LmFwcGVuZENoaWxkKHQuZG90KSx0LnBvaW50WyJ0aW1lbGluZS1pdGVtIl09dGhpcyx0aGlzLmRpcnR5PSEwKSwhdGhpcy5wYXJlbnQpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgcmVkcmF3IGl0ZW06IG5vIHBhcmVudCBhdHRhY2hlZCIpO2lmKCF0LnBvaW50LnBhcmVudE5vZGUpe3ZhciBlPXRoaXMucGFyZW50LmRvbS5mb3JlZ3JvdW5kO2lmKCFlKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHJlZHJhdyBpdGVtOiBwYXJlbnQgaGFzIG5vIGZvcmVncm91bmQgY29udGFpbmVyIGVsZW1lbnQiKTtlLmFwcGVuZENoaWxkKHQucG9pbnQpfWlmKHRoaXMuZGlzcGxheWVkPSEwLHRoaXMuZGlydHkpe3RoaXMuX3VwZGF0ZUNvbnRlbnRzKHRoaXMuZG9tLmNvbnRlbnQpLHRoaXMuX3VwZGF0ZVRpdGxlKHRoaXMuZG9tLnBvaW50KSx0aGlzLl91cGRhdGVEYXRhQXR0cmlidXRlcyh0aGlzLmRvbS5wb2ludCksdGhpcy5fdXBkYXRlU3R5bGUodGhpcy5kb20ucG9pbnQpO3ZhciBpPSh0aGlzLm9wdGlvbnMuZWRpdGFibGUudXBkYXRlVGltZXx8dGhpcy5vcHRpb25zLmVkaXRhYmxlLnVwZGF0ZUdyb3VwfHx0aGlzLmVkaXRhYmxlPT09ITApJiZ0aGlzLmVkaXRhYmxlIT09ITEsbz0odGhpcy5kYXRhLmNsYXNzTmFtZT8iICIrdGhpcy5kYXRhLmNsYXNzTmFtZToiIikrKHRoaXMuc2VsZWN0ZWQ/IiB2aXMtc2VsZWN0ZWQiOiIiKSsoaT8iIHZpcy1lZGl0YWJsZSI6IiB2aXMtcmVhZG9ubHkiKTt0LnBvaW50LmNsYXNzTmFtZT0idmlzLWl0ZW0gdmlzLXBvaW50IitvLHQuZG90LmNsYXNzTmFtZT0idmlzLWl0ZW0gdmlzLWRvdCIrbyx0aGlzLnByb3BzLmRvdC53aWR0aD10LmRvdC5vZmZzZXRXaWR0aCx0aGlzLnByb3BzLmRvdC5oZWlnaHQ9dC5kb3Qub2Zmc2V0SGVpZ2h0LHRoaXMucHJvcHMuY29udGVudC5oZWlnaHQ9dC5jb250ZW50Lm9mZnNldEhlaWdodCx0LmNvbnRlbnQuc3R5bGUubWFyZ2luTGVmdD0yKnRoaXMucHJvcHMuZG90LndpZHRoKyJweCIsdC5kb3Quc3R5bGUudG9wPSh0aGlzLmhlaWdodC10aGlzLnByb3BzLmRvdC5oZWlnaHQpLzIrInB4Iix0LmRvdC5zdHlsZS5sZWZ0PXRoaXMucHJvcHMuZG90LndpZHRoLzIrInB4Iix0aGlzLndpZHRoPXQucG9pbnQub2Zmc2V0V2lkdGgsdGhpcy5oZWlnaHQ9dC5wb2ludC5vZmZzZXRIZWlnaHQsdGhpcy5kaXJ0eT0hMX10aGlzLl9yZXBhaW50RGVsZXRlQnV0dG9uKHQucG9pbnQpfSxvLnByb3RvdHlwZS5zaG93PWZ1bmN0aW9uKCl7dGhpcy5kaXNwbGF5ZWR8fHRoaXMucmVkcmF3KCl9LG8ucHJvdG90eXBlLmhpZGU9ZnVuY3Rpb24oKXt0aGlzLmRpc3BsYXllZCYmKHRoaXMuZG9tLnBvaW50LnBhcmVudE5vZGUmJnRoaXMuZG9tLnBvaW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5kb20ucG9pbnQpLHRoaXMuZGlzcGxheWVkPSExKX0sby5wcm90b3R5cGUucmVwb3NpdGlvblg9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmNvbnZlcnNpb24udG9TY3JlZW4odGhpcy5kYXRhLnN0YXJ0KTt0aGlzLmxlZnQ9dC10aGlzLnByb3BzLmRvdC53aWR0aCx0aGlzLmRvbS5wb2ludC5zdHlsZS5sZWZ0PXRoaXMubGVmdCsicHgifSxvLnByb3RvdHlwZS5yZXBvc2l0aW9uWT1mdW5jdGlvbigpe3ZhciB0PXRoaXMub3B0aW9ucy5vcmllbnRhdGlvbi5pdGVtLGU9dGhpcy5kb20ucG9pbnQ7InRvcCI9PXQ/ZS5zdHlsZS50b3A9dGhpcy50b3ArInB4IjplLnN0eWxlLnRvcD10aGlzLnBhcmVudC5oZWlnaHQtdGhpcy50b3AtdGhpcy5oZWlnaHQrInB4In0sby5wcm90b3R5cGUuZ2V0V2lkdGhMZWZ0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJvcHMuZG90LndpZHRofSxvLnByb3RvdHlwZS5nZXRXaWR0aFJpZ2h0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud2lkdGgtdGhpcy5wcm9wcy5kb3Qud2lkdGh9LHQuZXhwb3J0cz1vfSxmdW5jdGlvbih0LGUsaSl7ZnVuY3Rpb24gbyh0LGUsaSl7dGhpcy5pZD1udWxsLHRoaXMucGFyZW50PW51bGwsdGhpcy5kYXRhPXQsdGhpcy5kb209bnVsbCx0aGlzLmNvbnZlcnNpb249ZXx8e30sdGhpcy5vcHRpb25zPWl8fHt9LHRoaXMuc2VsZWN0ZWQ9ITEsdGhpcy5kaXNwbGF5ZWQ9ITEsdGhpcy5kaXJ0eT0hMCx0aGlzLnRvcD1udWxsLHRoaXMubGVmdD1udWxsLHRoaXMud2lkdGg9bnVsbCx0aGlzLmhlaWdodD1udWxsLHRoaXMuZWRpdGFibGU9bnVsbCx0aGlzLmRhdGEmJnRoaXMuZGF0YS5oYXNPd25Qcm9wZXJ0eSgiZWRpdGFibGUiKSYmImJvb2xlYW4iPT10eXBlb2YgdGhpcy5kYXRhLmVkaXRhYmxlJiYodGhpcy5lZGl0YWJsZT10LmVkaXRhYmxlKX12YXIgbj1pKDMpLHM9aSg3KTtvLnByb3RvdHlwZS5zdGFjaz0hMCxvLnByb3RvdHlwZS5zZWxlY3Q9ZnVuY3Rpb24oKXt0aGlzLnNlbGVjdGVkPSEwLHRoaXMuZGlydHk9ITAsdGhpcy5kaXNwbGF5ZWQmJnRoaXMucmVkcmF3KCl9LG8ucHJvdG90eXBlLnVuc2VsZWN0PWZ1bmN0aW9uKCl7dGhpcy5zZWxlY3RlZD0hMSx0aGlzLmRpcnR5PSEwLHRoaXMuZGlzcGxheWVkJiZ0aGlzLnJlZHJhdygpfSxvLnByb3RvdHlwZS5zZXREYXRhPWZ1bmN0aW9uKHQpe3ZhciBlPXZvaWQgMCE9dC5ncm91cCYmdGhpcy5kYXRhLmdyb3VwIT10Lmdyb3VwO2UmJnRoaXMucGFyZW50Lml0ZW1TZXQuX21vdmVUb0dyb3VwKHRoaXMsdC5ncm91cCksdC5oYXNPd25Qcm9wZXJ0eSgiZWRpdGFibGUiKSYmImJvb2xlYW4iPT10eXBlb2YgdC5lZGl0YWJsZSYmKHRoaXMuZWRpdGFibGU9dC5lZGl0YWJsZSksdGhpcy5kYXRhPXQsdGhpcy5kaXJ0eT0hMCx0aGlzLmRpc3BsYXllZCYmdGhpcy5yZWRyYXcoKX0sby5wcm90b3R5cGUuc2V0UGFyZW50PWZ1bmN0aW9uKHQpe3RoaXMuZGlzcGxheWVkPyh0aGlzLmhpZGUoKSx0aGlzLnBhcmVudD10LHRoaXMucGFyZW50JiZ0aGlzLnNob3coKSk6dGhpcy5wYXJlbnQ9dH0sby5wcm90b3R5cGUuaXNWaXNpYmxlPWZ1bmN0aW9uKHQpe3JldHVybiExfSxvLnByb3RvdHlwZS5zaG93PWZ1bmN0aW9uKCl7cmV0dXJuITF9LG8ucHJvdG90eXBlLmhpZGU9ZnVuY3Rpb24oKXtyZXR1cm4hMX0sby5wcm90b3R5cGUucmVkcmF3PWZ1bmN0aW9uKCl7fSxvLnByb3RvdHlwZS5yZXBvc2l0aW9uWD1mdW5jdGlvbigpe30sby5wcm90b3R5cGUucmVwb3NpdGlvblk9ZnVuY3Rpb24oKXt9LG8ucHJvdG90eXBlLl9yZXBhaW50RGVsZXRlQnV0dG9uPWZ1bmN0aW9uKHQpe3ZhciBlPSh0aGlzLm9wdGlvbnMuZWRpdGFibGUucmVtb3ZlfHx0aGlzLmRhdGEuZWRpdGFibGU9PT0hMCkmJnRoaXMuZGF0YS5lZGl0YWJsZSE9PSExO2lmKHRoaXMuc2VsZWN0ZWQmJmUmJiF0aGlzLmRvbS5kZWxldGVCdXR0b24pe3ZhciBpPXRoaXMsbz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtvLmNsYXNzTmFtZT0idmlzLWRlbGV0ZSIsby50aXRsZT0iRGVsZXRlIHRoaXMgaXRlbSIsbmV3IG4obykub24oInRhcCIsZnVuY3Rpb24odCl7dC5zdG9wUHJvcGFnYXRpb24oKSxpLnBhcmVudC5yZW1vdmVGcm9tRGF0YVNldChpKX0pLHQuYXBwZW5kQ2hpbGQobyksdGhpcy5kb20uZGVsZXRlQnV0dG9uPW99ZWxzZSF0aGlzLnNlbGVjdGVkJiZ0aGlzLmRvbS5kZWxldGVCdXR0b24mJih0aGlzLmRvbS5kZWxldGVCdXR0b24ucGFyZW50Tm9kZSYmdGhpcy5kb20uZGVsZXRlQnV0dG9uLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5kb20uZGVsZXRlQnV0dG9uKSx0aGlzLmRvbS5kZWxldGVCdXR0b249bnVsbCl9LG8ucHJvdG90eXBlLl91cGRhdGVDb250ZW50cz1mdW5jdGlvbih0KXt2YXIgZTtpZih0aGlzLm9wdGlvbnMudGVtcGxhdGUpe3ZhciBpPXRoaXMucGFyZW50Lml0ZW1TZXQuaXRlbXNEYXRhLmdldCh0aGlzLmlkKTtlPXRoaXMub3B0aW9ucy50ZW1wbGF0ZShpKX1lbHNlIGU9dGhpcy5kYXRhLmNvbnRlbnQ7dmFyIG89dGhpcy5fY29udGVudFRvU3RyaW5nKHRoaXMuY29udGVudCkhPT10aGlzLl9jb250ZW50VG9TdHJpbmcoZSk7aWYobyl7aWYoZSBpbnN0YW5jZW9mIEVsZW1lbnQpdC5pbm5lckhUTUw9IiIsdC5hcHBlbmRDaGlsZChlKTtlbHNlIGlmKHZvaWQgMCE9ZSl0LmlubmVySFRNTD1lO2Vsc2UgaWYoImJhY2tncm91bmQiIT10aGlzLmRhdGEudHlwZXx8dm9pZCAwIT09dGhpcy5kYXRhLmNvbnRlbnQpdGhyb3cgbmV3IEVycm9yKCdQcm9wZXJ0eSAiY29udGVudCIgbWlzc2luZyBpbiBpdGVtICcrdGhpcy5pZCk7dGhpcy5jb250ZW50PWV9fSxvLnByb3RvdHlwZS5fdXBkYXRlVGl0bGU9ZnVuY3Rpb24odCl7bnVsbCE9dGhpcy5kYXRhLnRpdGxlP3QudGl0bGU9dGhpcy5kYXRhLnRpdGxlfHwiIjp0LnJlbW92ZUF0dHJpYnV0ZSgidmlzLXRpdGxlIil9LG8ucHJvdG90eXBlLl91cGRhdGVEYXRhQXR0cmlidXRlcz1mdW5jdGlvbih0KXtpZih0aGlzLm9wdGlvbnMuZGF0YUF0dHJpYnV0ZXMmJnRoaXMub3B0aW9ucy5kYXRhQXR0cmlidXRlcy5sZW5ndGg+MCl7dmFyIGU9W107aWYoQXJyYXkuaXNBcnJheSh0aGlzLm9wdGlvbnMuZGF0YUF0dHJpYnV0ZXMpKWU9dGhpcy5vcHRpb25zLmRhdGFBdHRyaWJ1dGVzO2Vsc2V7aWYoImFsbCIhPXRoaXMub3B0aW9ucy5kYXRhQXR0cmlidXRlcylyZXR1cm47ZT1PYmplY3Qua2V5cyh0aGlzLmRhdGEpfWZvcih2YXIgaT0wO2k8ZS5sZW5ndGg7aSsrKXt2YXIgbz1lW2ldLG49dGhpcy5kYXRhW29dO251bGwhPW4/dC5zZXRBdHRyaWJ1dGUoImRhdGEtIitvLG4pOnQucmVtb3ZlQXR0cmlidXRlKCJkYXRhLSIrbyl9fX0sby5wcm90b3R5cGUuX3VwZGF0ZVN0eWxlPWZ1bmN0aW9uKHQpe3RoaXMuc3R5bGUmJihzLnJlbW92ZUNzc1RleHQodCx0aGlzLnN0eWxlKSx0aGlzLnN0eWxlPW51bGwpLHRoaXMuZGF0YS5zdHlsZSYmKHMuYWRkQ3NzVGV4dCh0LHRoaXMuZGF0YS5zdHlsZSksdGhpcy5zdHlsZT10aGlzLmRhdGEuc3R5bGUpfSxvLnByb3RvdHlwZS5fY29udGVudFRvU3RyaW5nPWZ1bmN0aW9uKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdD90OnQmJiJvdXRlckhUTUwiaW4gdD90Lm91dGVySFRNTDp0fSxvLnByb3RvdHlwZS5nZXRXaWR0aExlZnQ9ZnVuY3Rpb24oKXtyZXR1cm4gMH0sby5wcm90b3R5cGUuZ2V0V2lkdGhSaWdodD1mdW5jdGlvbigpe3JldHVybiAwfSx0LmV4cG9ydHM9b30sZnVuY3Rpb24odCxlLGkpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93KXt2YXIgbz1pKDQpLG49d2luZG93LkhhbW1lcnx8aSg1KTt0LmV4cG9ydHM9byhuLHtwcmV2ZW50RGVmYXVsdDoibW91c2UifSl9ZWxzZSB0LmV4cG9ydHM9ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigiaGFtbWVyLmpzIGlzIG9ubHkgYXZhaWxhYmxlIGluIGEgYnJvd3Nlciwgbm90IGluIG5vZGUuanMuIil9fSxmdW5jdGlvbih0LGUsaSl7dmFyIG8sbixzOyFmdW5jdGlvbihpKXtuPVtdLG89aSxzPSJmdW5jdGlvbiI9PXR5cGVvZiBvP28uYXBwbHkoZSxuKTpvLCEodm9pZCAwIT09cyYmKHQuZXhwb3J0cz1zKSl9KGZ1bmN0aW9uKCl7dmFyIHQ9bnVsbDtyZXR1cm4gZnVuY3Rpb24gZShpLG8pe2Z1bmN0aW9uIG4odCl7cmV0dXJuIHQubWF0Y2goL1teIF0rL2cpfWZ1bmN0aW9uIHMoZSl7aWYoImhhbW1lci5pbnB1dCIhPT1lLnR5cGUpe2lmKGUuc3JjRXZlbnQuX2hhbmRsZWR8fChlLnNyY0V2ZW50Ll9oYW5kbGVkPXt9KSxlLnNyY0V2ZW50Ll9oYW5kbGVkW2UudHlwZV0pcmV0dXJuO2Uuc3JjRXZlbnQuX2hhbmRsZWRbZS50eXBlXT0hMH12YXIgaT0hMTtlLnN0b3BQcm9wYWdhdGlvbj1mdW5jdGlvbigpe2k9ITB9LGUuZmlyc3RUYXJnZXQ9dDtmb3IodmFyIG89dDtvJiYhaTspe3ZhciBuPW8uaGFtbWVyJiZvLmhhbW1lci5faGFuZGxlcnNbZS50eXBlXTtpZihuKWZvcih2YXIgcz0wO3M8bi5sZW5ndGgmJiFpO3MrKyluW3NdKGUpO289by5wYXJlbnROb2RlfX12YXIgcj1vfHx7cHJldmVudERlZmF1bHQ6ITF9O2lmKGkuTWFuYWdlcil7dmFyIGE9aSxoPWZ1bmN0aW9uKHQsaSl7dmFyIG89T2JqZWN0LmNyZWF0ZShyKTtyZXR1cm4gaSYmYS5leHRlbmQobyxpKSxlKG5ldyBhKHQsbyksbyl9O3JldHVybiBhLmV4dGVuZChoLGEpLGguTWFuYWdlcj1mdW5jdGlvbih0LGkpe3ZhciBvPU9iamVjdC5jcmVhdGUocik7cmV0dXJuIGkmJmEuZXh0ZW5kKG8saSksZShuZXcgYS5NYW5hZ2VyKHQsbyksbyl9LGh9dmFyIGQ9T2JqZWN0LmNyZWF0ZShpKSxsPWkuZWxlbWVudDtyZXR1cm4gbC5oYW1tZXI9ZCxpLm9uKCJoYW1tZXIuaW5wdXQiLGZ1bmN0aW9uKGUpeyhyLnByZXZlbnREZWZhdWx0PT09ITB8fHIucHJldmVudERlZmF1bHQ9PT1lLnBvaW50ZXJUeXBlKSYmZS5wcmV2ZW50RGVmYXVsdCgpLGUuaXNGaXJzdCYmKHQ9ZS50YXJnZXQpfSksZC5faGFuZGxlcnM9e30sZC5vbj1mdW5jdGlvbih0LGUpe3JldHVybiBuKHQpLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIG89ZC5faGFuZGxlcnNbdF07b3x8KGQuX2hhbmRsZXJzW3RdPW89W10saS5vbih0LHMpKSxvLnB1c2goZSl9KSxkfSxkLm9mZj1mdW5jdGlvbih0LGUpe3JldHVybiBuKHQpLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIG89ZC5faGFuZGxlcnNbdF07byYmKG89ZT9vLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gdCE9PWV9KTpbXSxvLmxlbmd0aD4wP2QuX2hhbmRsZXJzW3RdPW86KGkub2ZmKHQscyksZGVsZXRlIGQuX2hhbmRsZXJzW3RdKSl9KSxkfSxkLmVtaXQ9ZnVuY3Rpb24oZSxvKXt0PW8udGFyZ2V0LGkuZW1pdChlLG8pfSxkLmRlc3Ryb3k9ZnVuY3Rpb24oKXtkZWxldGUgaS5lbGVtZW50LmhhbW1lcixkLl9oYW5kbGVycz17fSxpLmRlc3Ryb3koKX0sZH19KX0sZnVuY3Rpb24odCxlLGkpe3ZhciBvOyFmdW5jdGlvbihuLHMscixhKXtmdW5jdGlvbiBoKHQsZSxpKXtyZXR1cm4gc2V0VGltZW91dChmKHQsaSksZSl9ZnVuY3Rpb24gZCh0LGUsaSl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/KGwodCxpW2VdLGkpLCEwKTohMX1mdW5jdGlvbiBsKHQsZSxpKXt2YXIgbztpZih0KWlmKHQuZm9yRWFjaCl0LmZvckVhY2goZSxpKTtlbHNlIGlmKHQubGVuZ3RoIT09YSlmb3Iobz0wO288dC5sZW5ndGg7KWUuY2FsbChpLHRbb10sbyx0KSxvKys7ZWxzZSBmb3IobyBpbiB0KXQuaGFzT3duUHJvcGVydHkobykmJmUuY2FsbChpLHRbb10sbyx0KX1mdW5jdGlvbiB1KHQsZSxpKXtmb3IodmFyIG89T2JqZWN0LmtleXMoZSksbj0wO248by5sZW5ndGg7KSghaXx8aSYmdFtvW25dXT09PWEpJiYodFtvW25dXT1lW29bbl1dKSxuKys7cmV0dXJuIHR9ZnVuY3Rpb24gYyh0LGUpe3JldHVybiB1KHQsZSwhMCl9ZnVuY3Rpb24gcCh0LGUsaSl7dmFyIG8sbj1lLnByb3RvdHlwZTtvPXQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobiksby5jb25zdHJ1Y3Rvcj10LG8uX3N1cGVyPW4saSYmdShvLGkpfWZ1bmN0aW9uIGYodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdC5hcHBseShlLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIG0odCxlKXtyZXR1cm4gdHlwZW9mIHQ9PWZ0P3QuYXBwbHkoZT9lWzBdfHxhOmEsZSk6dH1mdW5jdGlvbiB2KHQsZSl7cmV0dXJuIHQ9PT1hP2U6dH1mdW5jdGlvbiBnKHQsZSxpKXtsKF8oZSksZnVuY3Rpb24oZSl7dC5hZGRFdmVudExpc3RlbmVyKGUsaSwhMSl9KX1mdW5jdGlvbiB5KHQsZSxpKXtsKF8oZSksZnVuY3Rpb24oZSl7dC5yZW1vdmVFdmVudExpc3RlbmVyKGUsaSwhMSl9KX1mdW5jdGlvbiBiKHQsZSl7Zm9yKDt0Oyl7aWYodD09ZSlyZXR1cm4hMDt0PXQucGFyZW50Tm9kZX1yZXR1cm4hMX1mdW5jdGlvbiB3KHQsZSl7cmV0dXJuIHQuaW5kZXhPZihlKT4tMX1mdW5jdGlvbiBfKHQpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXHMrL2cpfWZ1bmN0aW9uIHgodCxlLGkpe2lmKHQuaW5kZXhPZiYmIWkpcmV0dXJuIHQuaW5kZXhPZihlKTtmb3IodmFyIG89MDtvPHQubGVuZ3RoOyl7aWYoaSYmdFtvXVtpXT09ZXx8IWkmJnRbb109PT1lKXJldHVybiBvO28rK31yZXR1cm4tMX1mdW5jdGlvbiBrKHQpe3JldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0LDApfWZ1bmN0aW9uIE0odCxlLGkpe2Zvcih2YXIgbz1bXSxuPVtdLHM9MDtzPHQubGVuZ3RoOyl7dmFyIHI9ZT90W3NdW2VdOnRbc107eChuLHIpPDAmJm8ucHVzaCh0W3NdKSxuW3NdPXIscysrfXJldHVybiBpJiYobz1lP28uc29ydChmdW5jdGlvbih0LGkpe3JldHVybiB0W2VdPmlbZV19KTpvLnNvcnQoKSksb31mdW5jdGlvbiBPKHQsZSl7Zm9yKHZhciBpLG8sbj1lWzBdLnRvVXBwZXJDYXNlKCkrZS5zbGljZSgxKSxzPTA7czxjdC5sZW5ndGg7KXtpZihpPWN0W3NdLG89aT9pK246ZSxvIGluIHQpcmV0dXJuIG87cysrfXJldHVybiBhfWZ1bmN0aW9uIEQoKXtyZXR1cm4geXQrK31mdW5jdGlvbiBDKHQpe3ZhciBlPXQub3duZXJEb2N1bWVudDtyZXR1cm4gZS5kZWZhdWx0Vmlld3x8ZS5wYXJlbnRXaW5kb3d9ZnVuY3Rpb24gVCh0LGUpe3ZhciBpPXRoaXM7dGhpcy5tYW5hZ2VyPXQsdGhpcy5jYWxsYmFjaz1lLHRoaXMuZWxlbWVudD10LmVsZW1lbnQsdGhpcy50YXJnZXQ9dC5vcHRpb25zLmlucHV0VGFyZ2V0LHRoaXMuZG9tSGFuZGxlcj1mdW5jdGlvbihlKXttKHQub3B0aW9ucy5lbmFibGUsW3RdKSYmaS5oYW5kbGVyKGUpfSx0aGlzLmluaXQoKX1mdW5jdGlvbiBFKHQpe3ZhciBlLGk9dC5vcHRpb25zLmlucHV0Q2xhc3M7cmV0dXJuIG5ldyhlPWk/aTpfdD9XOnh0P1Y6d3Q/WDpZKSh0LFMpfWZ1bmN0aW9uIFModCxlLGkpe3ZhciBvPWkucG9pbnRlcnMubGVuZ3RoLG49aS5jaGFuZ2VkUG9pbnRlcnMubGVuZ3RoLHM9ZSZUdCYmby1uPT09MCxyPWUmKFN0fFB0KSYmby1uPT09MDtpLmlzRmlyc3Q9ISFzLGkuaXNGaW5hbD0hIXIscyYmKHQuc2Vzc2lvbj17fSksaS5ldmVudFR5cGU9ZSxQKHQsaSksdC5lbWl0KCJoYW1tZXIuaW5wdXQiLGkpLHQucmVjb2duaXplKGkpLHQuc2Vzc2lvbi5wcmV2SW5wdXQ9aX1mdW5jdGlvbiBQKHQsZSl7dmFyIGk9dC5zZXNzaW9uLG89ZS5wb2ludGVycyxuPW8ubGVuZ3RoO2kuZmlyc3RJbnB1dHx8KGkuZmlyc3RJbnB1dD16KGUpKSxuPjEmJiFpLmZpcnN0TXVsdGlwbGU/aS5maXJzdE11bHRpcGxlPXooZSk6MT09PW4mJihpLmZpcnN0TXVsdGlwbGU9ITEpO3ZhciBzPWkuZmlyc3RJbnB1dCxyPWkuZmlyc3RNdWx0aXBsZSxhPXI/ci5jZW50ZXI6cy5jZW50ZXIsaD1lLmNlbnRlcj1BKG8pO2UudGltZVN0YW1wPWd0KCksZS5kZWx0YVRpbWU9ZS50aW1lU3RhbXAtcy50aW1lU3RhbXAsZS5hbmdsZT1SKGEsaCksZS5kaXN0YW5jZT1GKGEsaCksSShpLGUpLGUub2Zmc2V0RGlyZWN0aW9uPUIoZS5kZWx0YVgsZS5kZWx0YVkpLGUuc2NhbGU9cj9IKHIucG9pbnRlcnMsbyk6MSxlLnJvdGF0aW9uPXI/aihyLnBvaW50ZXJzLG8pOjAsTihpLGUpO3ZhciBkPXQuZWxlbWVudDtiKGUuc3JjRXZlbnQudGFyZ2V0LGQpJiYoZD1lLnNyY0V2ZW50LnRhcmdldCksZS50YXJnZXQ9ZH1mdW5jdGlvbiBJKHQsZSl7dmFyIGk9ZS5jZW50ZXIsbz10Lm9mZnNldERlbHRhfHx7fSxuPXQucHJldkRlbHRhfHx7fSxzPXQucHJldklucHV0fHx7fTsoZS5ldmVudFR5cGU9PT1UdHx8cy5ldmVudFR5cGU9PT1TdCkmJihuPXQucHJldkRlbHRhPXt4OnMuZGVsdGFYfHwwLHk6cy5kZWx0YVl8fDB9LG89dC5vZmZzZXREZWx0YT17eDppLngseTppLnl9KSxlLmRlbHRhWD1uLngrKGkueC1vLngpLGUuZGVsdGFZPW4ueSsoaS55LW8ueSl9ZnVuY3Rpb24gTih0LGUpe3ZhciBpLG8sbixzLHI9dC5sYXN0SW50ZXJ2YWx8fGUsaD1lLnRpbWVTdGFtcC1yLnRpbWVTdGFtcDtpZihlLmV2ZW50VHlwZSE9UHQmJihoPkN0fHxyLnZlbG9jaXR5PT09YSkpe3ZhciBkPXIuZGVsdGFYLWUuZGVsdGFYLGw9ci5kZWx0YVktZS5kZWx0YVksdT1MKGgsZCxsKTtvPXUueCxuPXUueSxpPXZ0KHUueCk+dnQodS55KT91Lng6dS55LHM9QihkLGwpLHQubGFzdEludGVydmFsPWV9ZWxzZSBpPXIudmVsb2NpdHksbz1yLnZlbG9jaXR5WCxuPXIudmVsb2NpdHlZLHM9ci5kaXJlY3Rpb247ZS52ZWxvY2l0eT1pLGUudmVsb2NpdHlYPW8sZS52ZWxvY2l0eVk9bixlLmRpcmVjdGlvbj1zfWZ1bmN0aW9uIHoodCl7Zm9yKHZhciBlPVtdLGk9MDtpPHQucG9pbnRlcnMubGVuZ3RoOyllW2ldPXtjbGllbnRYOm10KHQucG9pbnRlcnNbaV0uY2xpZW50WCksY2xpZW50WTptdCh0LnBvaW50ZXJzW2ldLmNsaWVudFkpfSxpKys7cmV0dXJue3RpbWVTdGFtcDpndCgpLHBvaW50ZXJzOmUsY2VudGVyOkEoZSksZGVsdGFYOnQuZGVsdGFYLGRlbHRhWTp0LmRlbHRhWX19ZnVuY3Rpb24gQSh0KXt2YXIgZT10Lmxlbmd0aDtpZigxPT09ZSlyZXR1cm57eDptdCh0WzBdLmNsaWVudFgpLHk6bXQodFswXS5jbGllbnRZKX07Zm9yKHZhciBpPTAsbz0wLG49MDtlPm47KWkrPXRbbl0uY2xpZW50WCxvKz10W25dLmNsaWVudFksbisrO3JldHVybnt4Om10KGkvZSkseTptdChvL2UpfX1mdW5jdGlvbiBMKHQsZSxpKXtyZXR1cm57eDplL3R8fDAseTppL3R8fDB9fWZ1bmN0aW9uIEIodCxlKXtyZXR1cm4gdD09PWU/SXQ6dnQodCk+PXZ0KGUpP3Q+MD9OdDp6dDplPjA/QXQ6THR9ZnVuY3Rpb24gRih0LGUsaSl7aXx8KGk9anQpO3ZhciBvPWVbaVswXV0tdFtpWzBdXSxuPWVbaVsxXV0tdFtpWzFdXTtyZXR1cm4gTWF0aC5zcXJ0KG8qbytuKm4pfWZ1bmN0aW9uIFIodCxlLGkpe2l8fChpPWp0KTt2YXIgbz1lW2lbMF1dLXRbaVswXV0sbj1lW2lbMV1dLXRbaVsxXV07cmV0dXJuIDE4MCpNYXRoLmF0YW4yKG4sbykvTWF0aC5QSX1mdW5jdGlvbiBqKHQsZSl7cmV0dXJuIFIoZVsxXSxlWzBdLEh0KS1SKHRbMV0sdFswXSxIdCl9ZnVuY3Rpb24gSCh0LGUpe3JldHVybiBGKGVbMF0sZVsxXSxIdCkvRih0WzBdLHRbMV0sSHQpfWZ1bmN0aW9uIFkoKXt0aGlzLmV2RWw9V3QsdGhpcy5ldldpbj1HdCx0aGlzLmFsbG93PSEwLHRoaXMucHJlc3NlZD0hMSxULmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBXKCl7dGhpcy5ldkVsPXF0LHRoaXMuZXZXaW49WHQsVC5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5zdG9yZT10aGlzLm1hbmFnZXIuc2Vzc2lvbi5wb2ludGVyRXZlbnRzPVtdfWZ1bmN0aW9uIEcoKXt0aGlzLmV2VGFyZ2V0PUp0LHRoaXMuZXZXaW49S3QsdGhpcy5zdGFydGVkPSExLFQuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIFUodCxlKXt2YXIgaT1rKHQudG91Y2hlcyksbz1rKHQuY2hhbmdlZFRvdWNoZXMpO3JldHVybiBlJihTdHxQdCkmJihpPU0oaS5jb25jYXQobyksImlkZW50aWZpZXIiLCEwKSksW2ksb119ZnVuY3Rpb24gVigpe3RoaXMuZXZUYXJnZXQ9JHQsdGhpcy50YXJnZXRJZHM9e30sVC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gcSh0LGUpe3ZhciBpPWsodC50b3VjaGVzKSxvPXRoaXMudGFyZ2V0SWRzO2lmKGUmKFR0fEV0KSYmMT09PWkubGVuZ3RoKXJldHVybiBvW2lbMF0uaWRlbnRpZmllcl09ITAsW2ksaV07dmFyIG4scyxyPWsodC5jaGFuZ2VkVG91Y2hlcyksYT1bXSxoPXRoaXMudGFyZ2V0O2lmKHM9aS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIGIodC50YXJnZXQsaCl9KSxlPT09VHQpZm9yKG49MDtuPHMubGVuZ3RoOylvW3Nbbl0uaWRlbnRpZmllcl09ITAsbisrO2ZvcihuPTA7bjxyLmxlbmd0aDspb1tyW25dLmlkZW50aWZpZXJdJiZhLnB1c2gocltuXSksZSYoU3R8UHQpJiZkZWxldGUgb1tyW25dLmlkZW50aWZpZXJdLG4rKztyZXR1cm4gYS5sZW5ndGg/W00ocy5jb25jYXQoYSksImlkZW50aWZpZXIiLCEwKSxhXTp2b2lkIDB9ZnVuY3Rpb24gWCgpe1QuYXBwbHkodGhpcyxhcmd1bWVudHMpO3ZhciB0PWYodGhpcy5oYW5kbGVyLHRoaXMpO3RoaXMudG91Y2g9bmV3IFYodGhpcy5tYW5hZ2VyLHQpLHRoaXMubW91c2U9bmV3IFkodGhpcy5tYW5hZ2VyLHQpfWZ1bmN0aW9uIFoodCxlKXt0aGlzLm1hbmFnZXI9dCx0aGlzLnNldChlKX1mdW5jdGlvbiBKKHQpe2lmKHcodCxzZSkpcmV0dXJuIHNlO3ZhciBlPXcodCxyZSksaT13KHQsYWUpO3JldHVybiBlJiZpP3JlKyIgIithZTplfHxpP2U/cmU6YWU6dyh0LG5lKT9uZTpvZX1mdW5jdGlvbiBLKHQpe3RoaXMuaWQ9RCgpLHRoaXMubWFuYWdlcj1udWxsLHRoaXMub3B0aW9ucz1jKHR8fHt9LHRoaXMuZGVmYXVsdHMpLHRoaXMub3B0aW9ucy5lbmFibGU9dih0aGlzLm9wdGlvbnMuZW5hYmxlLCEwKSx0aGlzLnN0YXRlPWhlLHRoaXMuc2ltdWx0YW5lb3VzPXt9LHRoaXMucmVxdWlyZUZhaWw9W119ZnVuY3Rpb24gUSh0KXtyZXR1cm4gdCZwZT8iY2FuY2VsIjp0JnVlPyJlbmQiOnQmbGU/Im1vdmUiOnQmZGU/InN0YXJ0IjoiIn1mdW5jdGlvbiAkKHQpe3JldHVybiB0PT1MdD8iZG93biI6dD09QXQ/InVwIjp0PT1OdD8ibGVmdCI6dD09enQ/InJpZ2h0IjoiIn1mdW5jdGlvbiB0dCh0LGUpe3ZhciBpPWUubWFuYWdlcjtyZXR1cm4gaT9pLmdldCh0KTp0fWZ1bmN0aW9uIGV0KCl7Sy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gaXQoKXtldC5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5wWD1udWxsLHRoaXMucFk9bnVsbH1mdW5jdGlvbiBvdCgpe2V0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBudCgpe0suYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMuX3RpbWVyPW51bGwsdGhpcy5faW5wdXQ9bnVsbH1mdW5jdGlvbiBzdCgpe2V0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBydCgpe2V0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBhdCgpe0suYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMucFRpbWU9ITEsdGhpcy5wQ2VudGVyPSExLHRoaXMuX3RpbWVyPW51bGwsdGhpcy5faW5wdXQ9bnVsbCx0aGlzLmNvdW50PTB9ZnVuY3Rpb24gaHQodCxlKXtyZXR1cm4gZT1lfHx7fSxlLnJlY29nbml6ZXJzPXYoZS5yZWNvZ25pemVycyxodC5kZWZhdWx0cy5wcmVzZXQpLG5ldyBkdCh0LGUpfWZ1bmN0aW9uIGR0KHQsZSl7ZT1lfHx7fSx0aGlzLm9wdGlvbnM9YyhlLGh0LmRlZmF1bHRzKSx0aGlzLm9wdGlvbnMuaW5wdXRUYXJnZXQ9dGhpcy5vcHRpb25zLmlucHV0VGFyZ2V0fHx0LHRoaXMuaGFuZGxlcnM9e30sdGhpcy5zZXNzaW9uPXt9LHRoaXMucmVjb2duaXplcnM9W10sdGhpcy5lbGVtZW50PXQsdGhpcy5pbnB1dD1FKHRoaXMpLHRoaXMudG91Y2hBY3Rpb249bmV3IFoodGhpcyx0aGlzLm9wdGlvbnMudG91Y2hBY3Rpb24pLGx0KHRoaXMsITApLGwoZS5yZWNvZ25pemVycyxmdW5jdGlvbih0KXt2YXIgZT10aGlzLmFkZChuZXcgdFswXSh0WzFdKSk7dFsyXSYmZS5yZWNvZ25pemVXaXRoKHRbMl0pLHRbM10mJmUucmVxdWlyZUZhaWx1cmUodFszXSl9LHRoaXMpfWZ1bmN0aW9uIGx0KHQsZSl7dmFyIGk9dC5lbGVtZW50O2wodC5vcHRpb25zLmNzc1Byb3BzLGZ1bmN0aW9uKHQsbyl7aS5zdHlsZVtPKGkuc3R5bGUsbyldPWU/dDoiIn0pfWZ1bmN0aW9uIHV0KHQsZSl7dmFyIGk9cy5jcmVhdGVFdmVudCgiRXZlbnQiKTtpLmluaXRFdmVudCh0LCEwLCEwKSxpLmdlc3R1cmU9ZSxlLnRhcmdldC5kaXNwYXRjaEV2ZW50KGkpfXZhciBjdD1bIiIsIndlYmtpdCIsIm1veiIsIk1TIiwibXMiLCJvIl0scHQ9cy5jcmVhdGVFbGVtZW50KCJkaXYiKSxmdD0iZnVuY3Rpb24iLG10PU1hdGgucm91bmQsdnQ9TWF0aC5hYnMsZ3Q9RGF0ZS5ub3cseXQ9MSxidD0vbW9iaWxlfHRhYmxldHxpcChhZHxob25lfG9kKXxhbmRyb2lkL2ksd3Q9Im9udG91Y2hzdGFydCJpbiBuLF90PU8obiwiUG9pbnRlckV2ZW50IikhPT1hLHh0PXd0JiZidC50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLGt0PSJ0b3VjaCIsTXQ9InBlbiIsT3Q9Im1vdXNlIixEdD0ia2luZWN0IixDdD0yNSxUdD0xLEV0PTIsU3Q9NCxQdD04LEl0PTEsTnQ9Mix6dD00LEF0PTgsTHQ9MTYsQnQ9TnR8enQsRnQ9QXR8THQsUnQ9QnR8RnQsanQ9WyJ4IiwieSJdLEh0PVsiY2xpZW50WCIsImNsaWVudFkiXTtULnByb3RvdHlwZT17aGFuZGxlcjpmdW5jdGlvbigpe30saW5pdDpmdW5jdGlvbigpe3RoaXMuZXZFbCYmZyh0aGlzLmVsZW1lbnQsdGhpcy5ldkVsLHRoaXMuZG9tSGFuZGxlciksdGhpcy5ldlRhcmdldCYmZyh0aGlzLnRhcmdldCx0aGlzLmV2VGFyZ2V0LHRoaXMuZG9tSGFuZGxlciksdGhpcy5ldldpbiYmZyhDKHRoaXMuZWxlbWVudCksdGhpcy5ldldpbix0aGlzLmRvbUhhbmRsZXIpfSxkZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5ldkVsJiZ5KHRoaXMuZWxlbWVudCx0aGlzLmV2RWwsdGhpcy5kb21IYW5kbGVyKSx0aGlzLmV2VGFyZ2V0JiZ5KHRoaXMudGFyZ2V0LHRoaXMuZXZUYXJnZXQsdGhpcy5kb21IYW5kbGVyKSx0aGlzLmV2V2luJiZ5KEModGhpcy5lbGVtZW50KSx0aGlzLmV2V2luLHRoaXMuZG9tSGFuZGxlcil9fTt2YXIgWXQ9e21vdXNlZG93bjpUdCxtb3VzZW1vdmU6RXQsbW91c2V1cDpTdH0sV3Q9Im1vdXNlZG93biIsR3Q9Im1vdXNlbW92ZSBtb3VzZXVwIjtwKFksVCx7aGFuZGxlcjpmdW5jdGlvbih0KXt2YXIgZT1ZdFt0LnR5cGVdO2UmVHQmJjA9PT10LmJ1dHRvbiYmKHRoaXMucHJlc3NlZD0hMCksZSZFdCYmMSE9PXQud2hpY2gmJihlPVN0KSx0aGlzLnByZXNzZWQmJnRoaXMuYWxsb3cmJihlJlN0JiYodGhpcy5wcmVzc2VkPSExKSx0aGlzLmNhbGxiYWNrKHRoaXMubWFuYWdlcixlLHtwb2ludGVyczpbdF0sY2hhbmdlZFBvaW50ZXJzOlt0XSxwb2ludGVyVHlwZTpPdCxzcmNFdmVudDp0fSkpfX0pO3ZhciBVdD17cG9pbnRlcmRvd246VHQscG9pbnRlcm1vdmU6RXQscG9pbnRlcnVwOlN0LHBvaW50ZXJjYW5jZWw6UHQscG9pbnRlcm91dDpQdH0sVnQ9ezI6a3QsMzpNdCw0Ok90LDU6RHR9LHF0PSJwb2ludGVyZG93biIsWHQ9InBvaW50ZXJtb3ZlIHBvaW50ZXJ1cCBwb2ludGVyY2FuY2VsIjtuLk1TUG9pbnRlckV2ZW50JiYocXQ9Ik1TUG9pbnRlckRvd24iLFh0PSJNU1BvaW50ZXJNb3ZlIE1TUG9pbnRlclVwIE1TUG9pbnRlckNhbmNlbCIpLHAoVyxULHtoYW5kbGVyOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuc3RvcmUsaT0hMSxvPXQudHlwZS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoIm1zIiwiIiksbj1VdFtvXSxzPVZ0W3QucG9pbnRlclR5cGVdfHx0LnBvaW50ZXJUeXBlLHI9cz09a3QsYT14KGUsdC5wb2ludGVySWQsInBvaW50ZXJJZCIpO24mVHQmJigwPT09dC5idXR0b258fHIpPzA+YSYmKGUucHVzaCh0KSxhPWUubGVuZ3RoLTEpOm4mKFN0fFB0KSYmKGk9ITApLDA+YXx8KGVbYV09dCx0aGlzLmNhbGxiYWNrKHRoaXMubWFuYWdlcixuLHtwb2ludGVyczplLGNoYW5nZWRQb2ludGVyczpbdF0scG9pbnRlclR5cGU6cyxzcmNFdmVudDp0fSksaSYmZS5zcGxpY2UoYSwxKSl9fSk7dmFyIFp0PXt0b3VjaHN0YXJ0OlR0LHRvdWNobW92ZTpFdCx0b3VjaGVuZDpTdCx0b3VjaGNhbmNlbDpQdH0sSnQ9InRvdWNoc3RhcnQiLEt0PSJ0b3VjaHN0YXJ0IHRvdWNobW92ZSB0b3VjaGVuZCB0b3VjaGNhbmNlbCI7cChHLFQse2hhbmRsZXI6ZnVuY3Rpb24odCl7dmFyIGU9WnRbdC50eXBlXTtpZihlPT09VHQmJih0aGlzLnN0YXJ0ZWQ9ITApLHRoaXMuc3RhcnRlZCl7dmFyIGk9VS5jYWxsKHRoaXMsdCxlKTtlJihTdHxQdCkmJmlbMF0ubGVuZ3RoLWlbMV0ubGVuZ3RoPT09MCYmKHRoaXMuc3RhcnRlZD0hMSksdGhpcy5jYWxsYmFjayh0aGlzLm1hbmFnZXIsZSx7cG9pbnRlcnM6aVswXSxjaGFuZ2VkUG9pbnRlcnM6aVsxXSxwb2ludGVyVHlwZTprdCxzcmNFdmVudDp0fSl9fX0pO3ZhciBRdD17dG91Y2hzdGFydDpUdCx0b3VjaG1vdmU6RXQsdG91Y2hlbmQ6U3QsdG91Y2hjYW5jZWw6UHR9LCR0PSJ0b3VjaHN0YXJ0IHRvdWNobW92ZSB0b3VjaGVuZCB0b3VjaGNhbmNlbCI7cChWLFQse2hhbmRsZXI6ZnVuY3Rpb24odCl7dmFyIGU9UXRbdC50eXBlXSxpPXEuY2FsbCh0aGlzLHQsZSk7aSYmdGhpcy5jYWxsYmFjayh0aGlzLm1hbmFnZXIsZSx7cG9pbnRlcnM6aVswXSxjaGFuZ2VkUG9pbnRlcnM6aVsxXSxwb2ludGVyVHlwZTprdCxzcmNFdmVudDp0fSl9fSkscChYLFQse2hhbmRsZXI6ZnVuY3Rpb24odCxlLGkpe3ZhciBvPWkucG9pbnRlclR5cGU9PWt0LG49aS5wb2ludGVyVHlwZT09T3Q7aWYobyl0aGlzLm1vdXNlLmFsbG93PSExO2Vsc2UgaWYobiYmIXRoaXMubW91c2UuYWxsb3cpcmV0dXJuO2UmKFN0fFB0KSYmKHRoaXMubW91c2UuYWxsb3c9ITApLHRoaXMuY2FsbGJhY2sodCxlLGkpfSxkZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy50b3VjaC5kZXN0cm95KCksdGhpcy5tb3VzZS5kZXN0cm95KCl9fSk7dmFyIHRlPU8ocHQuc3R5bGUsInRvdWNoQWN0aW9uIiksZWU9dGUhPT1hLGllPSJjb21wdXRlIixvZT0iYXV0byIsbmU9Im1hbmlwdWxhdGlvbiIsc2U9Im5vbmUiLHJlPSJwYW4teCIsYWU9InBhbi15IjtaLnByb3RvdHlwZT17c2V0OmZ1bmN0aW9uKHQpe3Q9PWllJiYodD10aGlzLmNvbXB1dGUoKSksZWUmJih0aGlzLm1hbmFnZXIuZWxlbWVudC5zdHlsZVt0ZV09dCksdGhpcy5hY3Rpb25zPXQudG9Mb3dlckNhc2UoKS50cmltKCl9LHVwZGF0ZTpmdW5jdGlvbigpe3RoaXMuc2V0KHRoaXMubWFuYWdlci5vcHRpb25zLnRvdWNoQWN0aW9uKX0sY29tcHV0ZTpmdW5jdGlvbigpe3ZhciB0PVtdO3JldHVybiBsKHRoaXMubWFuYWdlci5yZWNvZ25pemVycyxmdW5jdGlvbihlKXttKGUub3B0aW9ucy5lbmFibGUsW2VdKSYmKHQ9dC5jb25jYXQoZS5nZXRUb3VjaEFjdGlvbigpKSl9KSxKKHQuam9pbigiICIpKX0scHJldmVudERlZmF1bHRzOmZ1bmN0aW9uKHQpe2lmKCFlZSl7dmFyIGU9dC5zcmNFdmVudCxpPXQub2Zmc2V0RGlyZWN0aW9uO2lmKHRoaXMubWFuYWdlci5zZXNzaW9uLnByZXZlbnRlZClyZXR1cm4gdm9pZCBlLnByZXZlbnREZWZhdWx0KCk7dmFyIG89dGhpcy5hY3Rpb25zLG49dyhvLHNlKSxzPXcobyxhZSkscj13KG8scmUpO3JldHVybiBufHxzJiZpJkJ0fHxyJiZpJkZ0P3RoaXMucHJldmVudFNyYyhlKTp2b2lkIDB9fSxwcmV2ZW50U3JjOmZ1bmN0aW9uKHQpe3RoaXMubWFuYWdlci5zZXNzaW9uLnByZXZlbnRlZD0hMCx0LnByZXZlbnREZWZhdWx0KCl9fTt2YXIgaGU9MSxkZT0yLGxlPTQsdWU9OCxjZT11ZSxwZT0xNixmZT0zMjtLLnByb3RvdHlwZT17ZGVmYXVsdHM6e30sc2V0OmZ1bmN0aW9uKHQpe3JldHVybiB1KHRoaXMub3B0aW9ucyx0KSx0aGlzLm1hbmFnZXImJnRoaXMubWFuYWdlci50b3VjaEFjdGlvbi51cGRhdGUoKSx0aGlzfSxyZWNvZ25pemVXaXRoOmZ1bmN0aW9uKHQpe2lmKGQodCwicmVjb2duaXplV2l0aCIsdGhpcykpcmV0dXJuIHRoaXM7dmFyIGU9dGhpcy5zaW11bHRhbmVvdXM7cmV0dXJuIHQ9dHQodCx0aGlzKSxlW3QuaWRdfHwoZVt0LmlkXT10LHQucmVjb2duaXplV2l0aCh0aGlzKSksdGhpc30sZHJvcFJlY29nbml6ZVdpdGg6ZnVuY3Rpb24odCl7cmV0dXJuIGQodCwiZHJvcFJlY29nbml6ZVdpdGgiLHRoaXMpP3RoaXM6KHQ9dHQodCx0aGlzKSxkZWxldGUgdGhpcy5zaW11bHRhbmVvdXNbdC5pZF0sdGhpcyl9LHJlcXVpcmVGYWlsdXJlOmZ1bmN0aW9uKHQpe2lmKGQodCwicmVxdWlyZUZhaWx1cmUiLHRoaXMpKXJldHVybiB0aGlzO3ZhciBlPXRoaXMucmVxdWlyZUZhaWw7cmV0dXJuIHQ9dHQodCx0aGlzKSwtMT09PXgoZSx0KSYmKGUucHVzaCh0KSx0LnJlcXVpcmVGYWlsdXJlKHRoaXMpKSx0aGlzfSxkcm9wUmVxdWlyZUZhaWx1cmU6ZnVuY3Rpb24odCl7aWYoZCh0LCJkcm9wUmVxdWlyZUZhaWx1cmUiLHRoaXMpKXJldHVybiB0aGlzO3Q9dHQodCx0aGlzKTt2YXIgZT14KHRoaXMucmVxdWlyZUZhaWwsdCk7cmV0dXJuIGU+LTEmJnRoaXMucmVxdWlyZUZhaWwuc3BsaWNlKGUsMSksdGhpc30saGFzUmVxdWlyZUZhaWx1cmVzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVxdWlyZUZhaWwubGVuZ3RoPjB9LGNhblJlY29nbml6ZVdpdGg6ZnVuY3Rpb24odCl7cmV0dXJuISF0aGlzLnNpbXVsdGFuZW91c1t0LmlkXX0sZW1pdDpmdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUpe2kubWFuYWdlci5lbWl0KGkub3B0aW9ucy5ldmVudCsoZT9RKG8pOiIiKSx0KX12YXIgaT10aGlzLG89dGhpcy5zdGF0ZTt1ZT5vJiZlKCEwKSxlKCksbz49dWUmJmUoITApfSx0cnlFbWl0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNhbkVtaXQoKT90aGlzLmVtaXQodCk6dm9pZCh0aGlzLnN0YXRlPWZlKX0sY2FuRW1pdDpmdW5jdGlvbigpe2Zvcih2YXIgdD0wO3Q8dGhpcy5yZXF1aXJlRmFpbC5sZW5ndGg7KXtpZighKHRoaXMucmVxdWlyZUZhaWxbdF0uc3RhdGUmKGZlfGhlKSkpcmV0dXJuITE7dCsrfXJldHVybiEwfSxyZWNvZ25pemU6ZnVuY3Rpb24odCl7dmFyIGU9dSh7fSx0KTtyZXR1cm4gbSh0aGlzLm9wdGlvbnMuZW5hYmxlLFt0aGlzLGVdKT8odGhpcy5zdGF0ZSYoY2V8cGV8ZmUpJiYodGhpcy5zdGF0ZT1oZSksdGhpcy5zdGF0ZT10aGlzLnByb2Nlc3MoZSksdm9pZCh0aGlzLnN0YXRlJihkZXxsZXx1ZXxwZSkmJnRoaXMudHJ5RW1pdChlKSkpOih0aGlzLnJlc2V0KCksdm9pZCh0aGlzLnN0YXRlPWZlKSl9LHByb2Nlc3M6ZnVuY3Rpb24odCl7fSxnZXRUb3VjaEFjdGlvbjpmdW5jdGlvbigpe30scmVzZXQ6ZnVuY3Rpb24oKXt9fSxwKGV0LEsse2RlZmF1bHRzOntwb2ludGVyczoxfSxhdHRyVGVzdDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLm9wdGlvbnMucG9pbnRlcnM7cmV0dXJuIDA9PT1lfHx0LnBvaW50ZXJzLmxlbmd0aD09PWV9LHByb2Nlc3M6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5zdGF0ZSxpPXQuZXZlbnRUeXBlLG89ZSYoZGV8bGUpLG49dGhpcy5hdHRyVGVzdCh0KTtyZXR1cm4gbyYmKGkmUHR8fCFuKT9lfHBlOm98fG4/aSZTdD9lfHVlOmUmZGU/ZXxsZTpkZTpmZX19KSxwKGl0LGV0LHtkZWZhdWx0czp7ZXZlbnQ6InBhbiIsdGhyZXNob2xkOjEwLHBvaW50ZXJzOjEsZGlyZWN0aW9uOlJ0fSxnZXRUb3VjaEFjdGlvbjpmdW5jdGlvbigpe3ZhciB0PXRoaXMub3B0aW9ucy5kaXJlY3Rpb24sZT1bXTtyZXR1cm4gdCZCdCYmZS5wdXNoKGFlKSx0JkZ0JiZlLnB1c2gocmUpLGV9LGRpcmVjdGlvblRlc3Q6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5vcHRpb25zLGk9ITAsbz10LmRpc3RhbmNlLG49dC5kaXJlY3Rpb24scz10LmRlbHRhWCxyPXQuZGVsdGFZO3JldHVybiBuJmUuZGlyZWN0aW9ufHwoZS5kaXJlY3Rpb24mQnQ/KG49MD09PXM/SXQ6MD5zP050Onp0LGk9cyE9dGhpcy5wWCxvPU1hdGguYWJzKHQuZGVsdGFYKSk6KG49MD09PXI/SXQ6MD5yP0F0Okx0LGk9ciE9dGhpcy5wWSxvPU1hdGguYWJzKHQuZGVsdGFZKSkpLHQuZGlyZWN0aW9uPW4saSYmbz5lLnRocmVzaG9sZCYmbiZlLmRpcmVjdGlvbn0sYXR0clRlc3Q6ZnVuY3Rpb24odCl7cmV0dXJuIGV0LnByb3RvdHlwZS5hdHRyVGVzdC5jYWxsKHRoaXMsdCkmJih0aGlzLnN0YXRlJmRlfHwhKHRoaXMuc3RhdGUmZGUpJiZ0aGlzLmRpcmVjdGlvblRlc3QodCkpfSxlbWl0OmZ1bmN0aW9uKHQpe3RoaXMucFg9dC5kZWx0YVgsdGhpcy5wWT10LmRlbHRhWTt2YXIgZT0kKHQuZGlyZWN0aW9uKTtlJiZ0aGlzLm1hbmFnZXIuZW1pdCh0aGlzLm9wdGlvbnMuZXZlbnQrZSx0KSx0aGlzLl9zdXBlci5lbWl0LmNhbGwodGhpcyx0KX19KSxwKG90LGV0LHtkZWZhdWx0czp7ZXZlbnQ6InBpbmNoIix0aHJlc2hvbGQ6MCxwb2ludGVyczoyfSxnZXRUb3VjaEFjdGlvbjpmdW5jdGlvbigpe3JldHVybltzZV19LGF0dHJUZXN0OmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9zdXBlci5hdHRyVGVzdC5jYWxsKHRoaXMsdCkmJihNYXRoLmFicyh0LnNjYWxlLTEpPnRoaXMub3B0aW9ucy50aHJlc2hvbGR8fHRoaXMuc3RhdGUmZGUpfSxlbWl0OmZ1bmN0aW9uKHQpe2lmKHRoaXMuX3N1cGVyLmVtaXQuY2FsbCh0aGlzLHQpLDEhPT10LnNjYWxlKXt2YXIgZT10LnNjYWxlPDE/ImluIjoib3V0Ijt0aGlzLm1hbmFnZXIuZW1pdCh0aGlzLm9wdGlvbnMuZXZlbnQrZSx0KX19fSkscChudCxLLHtkZWZhdWx0czp7ZXZlbnQ6InByZXNzIixwb2ludGVyczoxLHRpbWU6NTAwLHRocmVzaG9sZDo1fSxnZXRUb3VjaEFjdGlvbjpmdW5jdGlvbigpe3JldHVybltvZV19LHByb2Nlc3M6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5vcHRpb25zLGk9dC5wb2ludGVycy5sZW5ndGg9PT1lLnBvaW50ZXJzLG89dC5kaXN0YW5jZTxlLnRocmVzaG9sZCxuPXQuZGVsdGFUaW1lPmUudGltZTtpZih0aGlzLl9pbnB1dD10LCFvfHwhaXx8dC5ldmVudFR5cGUmKFN0fFB0KSYmIW4pdGhpcy5yZXNldCgpO2Vsc2UgaWYodC5ldmVudFR5cGUmVHQpdGhpcy5yZXNldCgpLHRoaXMuX3RpbWVyPWgoZnVuY3Rpb24oKXt0aGlzLnN0YXRlPWNlLHRoaXMudHJ5RW1pdCgpfSxlLnRpbWUsdGhpcyk7ZWxzZSBpZih0LmV2ZW50VHlwZSZTdClyZXR1cm4gY2U7cmV0dXJuIGZlfSxyZXNldDpmdW5jdGlvbigpe2NsZWFyVGltZW91dCh0aGlzLl90aW1lcil9LGVtaXQ6ZnVuY3Rpb24odCl7dGhpcy5zdGF0ZT09PWNlJiYodCYmdC5ldmVudFR5cGUmU3Q/dGhpcy5tYW5hZ2VyLmVtaXQodGhpcy5vcHRpb25zLmV2ZW50KyJ1cCIsdCk6KHRoaXMuX2lucHV0LnRpbWVTdGFtcD1ndCgpLHRoaXMubWFuYWdlci5lbWl0KHRoaXMub3B0aW9ucy5ldmVudCx0aGlzLl9pbnB1dCkpKX19KSxwKHN0LGV0LHtkZWZhdWx0czp7ZXZlbnQ6InJvdGF0ZSIsdGhyZXNob2xkOjAscG9pbnRlcnM6Mn0sZ2V0VG91Y2hBY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm5bc2VdfSxhdHRyVGVzdDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fc3VwZXIuYXR0clRlc3QuY2FsbCh0aGlzLHQpJiYoTWF0aC5hYnModC5yb3RhdGlvbik+dGhpcy5vcHRpb25zLnRocmVzaG9sZHx8dGhpcy5zdGF0ZSZkZSl9fSkscChydCxldCx7ZGVmYXVsdHM6e2V2ZW50OiJzd2lwZSIsdGhyZXNob2xkOjEwLHZlbG9jaXR5Oi42NSxkaXJlY3Rpb246QnR8RnQscG9pbnRlcnM6MX0sZ2V0VG91Y2hBY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gaXQucHJvdG90eXBlLmdldFRvdWNoQWN0aW9uLmNhbGwodGhpcyl9LGF0dHJUZXN0OmZ1bmN0aW9uKHQpe3ZhciBlLGk9dGhpcy5vcHRpb25zLmRpcmVjdGlvbjtyZXR1cm4gaSYoQnR8RnQpP2U9dC52ZWxvY2l0eTppJkJ0P2U9dC52ZWxvY2l0eVg6aSZGdCYmKGU9dC52ZWxvY2l0eVkpLHRoaXMuX3N1cGVyLmF0dHJUZXN0LmNhbGwodGhpcyx0KSYmaSZ0LmRpcmVjdGlvbiYmdC5kaXN0YW5jZT50aGlzLm9wdGlvbnMudGhyZXNob2xkJiZ2dChlKT50aGlzLm9wdGlvbnMudmVsb2NpdHkmJnQuZXZlbnRUeXBlJlN0fSxlbWl0OmZ1bmN0aW9uKHQpe3ZhciBlPSQodC5kaXJlY3Rpb24pO2UmJnRoaXMubWFuYWdlci5lbWl0KHRoaXMub3B0aW9ucy5ldmVudCtlLHQpLHRoaXMubWFuYWdlci5lbWl0KHRoaXMub3B0aW9ucy5ldmVudCx0KX19KSxwKGF0LEsse2RlZmF1bHRzOntldmVudDoidGFwIixwb2ludGVyczoxLHRhcHM6MSxpbnRlcnZhbDozMDAsdGltZToyNTAsdGhyZXNob2xkOjIscG9zVGhyZXNob2xkOjEwfSxnZXRUb3VjaEFjdGlvbjpmdW5jdGlvbigpe3JldHVybltuZV19LHByb2Nlc3M6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5vcHRpb25zLGk9dC5wb2ludGVycy5sZW5ndGg9PT1lLnBvaW50ZXJzLG89dC5kaXN0YW5jZTxlLnRocmVzaG9sZCxuPXQuZGVsdGFUaW1lPGUudGltZTtpZih0aGlzLnJlc2V0KCksdC5ldmVudFR5cGUmVHQmJjA9PT10aGlzLmNvdW50KXJldHVybiB0aGlzLmZhaWxUaW1lb3V0KCk7aWYobyYmbiYmaSl7aWYodC5ldmVudFR5cGUhPVN0KXJldHVybiB0aGlzLmZhaWxUaW1lb3V0KCk7dmFyIHM9dGhpcy5wVGltZT90LnRpbWVTdGFtcC10aGlzLnBUaW1lPGUuaW50ZXJ2YWw6ITAscj0hdGhpcy5wQ2VudGVyfHxGKHRoaXMucENlbnRlcix0LmNlbnRlcik8ZS5wb3NUaHJlc2hvbGQ7dGhpcy5wVGltZT10LnRpbWVTdGFtcCx0aGlzLnBDZW50ZXI9dC5jZW50ZXIsciYmcz90aGlzLmNvdW50Kz0xOnRoaXMuY291bnQ9MSx0aGlzLl9pbnB1dD10O3ZhciBhPXRoaXMuY291bnQlZS50YXBzO2lmKDA9PT1hKXJldHVybiB0aGlzLmhhc1JlcXVpcmVGYWlsdXJlcygpPyh0aGlzLl90aW1lcj1oKGZ1bmN0aW9uKCl7dGhpcy5zdGF0ZT1jZSx0aGlzLnRyeUVtaXQoKX0sZS5pbnRlcnZhbCx0aGlzKSxkZSk6Y2V9cmV0dXJuIGZlfSxmYWlsVGltZW91dDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl90aW1lcj1oKGZ1bmN0aW9uKCl7dGhpcy5zdGF0ZT1mZX0sdGhpcy5vcHRpb25zLmludGVydmFsLHRoaXMpLGZlfSxyZXNldDpmdW5jdGlvbigpe2NsZWFyVGltZW91dCh0aGlzLl90aW1lcil9LGVtaXQ6ZnVuY3Rpb24oKXt0aGlzLnN0YXRlPT1jZSYmKHRoaXMuX2lucHV0LnRhcENvdW50PXRoaXMuY291bnQsdGhpcy5tYW5hZ2VyLmVtaXQodGhpcy5vcHRpb25zLmV2ZW50LHRoaXMuX2lucHV0KSl9fSksaHQuVkVSU0lPTj0iMi4wLjQiLGh0LmRlZmF1bHRzPXtkb21FdmVudHM6ITEsdG91Y2hBY3Rpb246aWUsZW5hYmxlOiEwLGlucHV0VGFyZ2V0Om51bGwsaW5wdXRDbGFzczpudWxsLHByZXNldDpbW3N0LHtlbmFibGU6ITF9XSxbb3Qse2VuYWJsZTohMX0sWyJyb3RhdGUiXV0sW3J0LHtkaXJlY3Rpb246QnR9XSxbaXQse2RpcmVjdGlvbjpCdH0sWyJzd2lwZSJdXSxbYXRdLFthdCx7ZXZlbnQ6ImRvdWJsZXRhcCIsdGFwczoyfSxbInRhcCJdXSxbbnRdXSxjc3NQcm9wczp7dXNlclNlbGVjdDoibm9uZSIsdG91Y2hTZWxlY3Q6Im5vbmUiLHRvdWNoQ2FsbG91dDoibm9uZSIsY29udGVudFpvb21pbmc6Im5vbmUiLHVzZXJEcmFnOiJub25lIix0YXBIaWdobGlnaHRDb2xvcjoicmdiYSgwLDAsMCwwKSJ9fTt2YXIgbWU9MSx2ZT0yO2R0LnByb3RvdHlwZT17c2V0OmZ1bmN0aW9uKHQpe3JldHVybiB1KHRoaXMub3B0aW9ucyx0KSx0LnRvdWNoQWN0aW9uJiZ0aGlzLnRvdWNoQWN0aW9uLnVwZGF0ZSgpLHQuaW5wdXRUYXJnZXQmJih0aGlzLmlucHV0LmRlc3Ryb3koKSx0aGlzLmlucHV0LnRhcmdldD10LmlucHV0VGFyZ2V0LHRoaXMuaW5wdXQuaW5pdCgpKSx0aGlzfSxzdG9wOmZ1bmN0aW9uKHQpe3RoaXMuc2Vzc2lvbi5zdG9wcGVkPXQ/dmU6bWV9LHJlY29nbml6ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnNlc3Npb247aWYoIWUuc3RvcHBlZCl7dGhpcy50b3VjaEFjdGlvbi5wcmV2ZW50RGVmYXVsdHModCk7dmFyIGksbz10aGlzLnJlY29nbml6ZXJzLG49ZS5jdXJSZWNvZ25pemVyOyghbnx8biYmbi5zdGF0ZSZjZSkmJihuPWUuY3VyUmVjb2duaXplcj1udWxsKTtmb3IodmFyIHM9MDtzPG8ubGVuZ3RoOylpPW9bc10sZS5zdG9wcGVkPT09dmV8fG4mJmkhPW4mJiFpLmNhblJlY29nbml6ZVdpdGgobik/aS5yZXNldCgpOmkucmVjb2duaXplKHQpLCFuJiZpLnN0YXRlJihkZXxsZXx1ZSkmJihuPWUuY3VyUmVjb2duaXplcj1pKSxzKyt9fSxnZXQ6ZnVuY3Rpb24odCl7aWYodCBpbnN0YW5jZW9mIEspcmV0dXJuIHQ7Zm9yKHZhciBlPXRoaXMucmVjb2duaXplcnMsaT0wO2k8ZS5sZW5ndGg7aSsrKWlmKGVbaV0ub3B0aW9ucy5ldmVudD09dClyZXR1cm4gZVtpXTtyZXR1cm4gbnVsbH0sYWRkOmZ1bmN0aW9uKHQpe2lmKGQodCwiYWRkIix0aGlzKSlyZXR1cm4gdGhpczt2YXIgZT10aGlzLmdldCh0Lm9wdGlvbnMuZXZlbnQpO3JldHVybiBlJiZ0aGlzLnJlbW92ZShlKSx0aGlzLnJlY29nbml6ZXJzLnB1c2godCksdC5tYW5hZ2VyPXRoaXMsdGhpcy50b3VjaEFjdGlvbi51cGRhdGUoKSx0fSxyZW1vdmU6ZnVuY3Rpb24odCl7aWYoZCh0LCJyZW1vdmUiLHRoaXMpKXJldHVybiB0aGlzO3ZhciBlPXRoaXMucmVjb2duaXplcnM7cmV0dXJuIHQ9dGhpcy5nZXQodCksZS5zcGxpY2UoeChlLHQpLDEpLHRoaXMudG91Y2hBY3Rpb24udXBkYXRlKCksdGhpc30sb246ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLmhhbmRsZXJzO3JldHVybiBsKF8odCksZnVuY3Rpb24odCl7aVt0XT1pW3RdfHxbXSxpW3RdLnB1c2goZSl9KSx0aGlzfSxvZmY6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLmhhbmRsZXJzO3JldHVybiBsKF8odCksZnVuY3Rpb24odCl7ZT9pW3RdLnNwbGljZSh4KGlbdF0sZSksMSk6ZGVsZXRlIGlbdF19KSx0aGlzfSxlbWl0OmZ1bmN0aW9uKHQsZSl7dGhpcy5vcHRpb25zLmRvbUV2ZW50cyYmdXQodCxlKTt2YXIgaT10aGlzLmhhbmRsZXJzW3RdJiZ0aGlzLmhhbmRsZXJzW3RdLnNsaWNlKCk7aWYoaSYmaS5sZW5ndGgpe2UudHlwZT10LGUucHJldmVudERlZmF1bHQ9ZnVuY3Rpb24oKXtlLnNyY0V2ZW50LnByZXZlbnREZWZhdWx0KCl9O2Zvcih2YXIgbz0wO288aS5sZW5ndGg7KWlbb10oZSksbysrfX0sZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuZWxlbWVudCYmbHQodGhpcywhMSksdGhpcy5oYW5kbGVycz17fSx0aGlzLnNlc3Npb249e30sdGhpcy5pbnB1dC5kZXN0cm95KCksdGhpcy5lbGVtZW50PW51bGx9fSx1KGh0LHtJTlBVVF9TVEFSVDpUdCxJTlBVVF9NT1ZFOkV0LElOUFVUX0VORDpTdCxJTlBVVF9DQU5DRUw6UHQsU1RBVEVfUE9TU0lCTEU6aGUsU1RBVEVfQkVHQU46ZGUsU1RBVEVfQ0hBTkdFRDpsZSxTVEFURV9FTkRFRDp1ZSxTVEFURV9SRUNPR05JWkVEOmNlLFNUQVRFX0NBTkNFTExFRDpwZSxTVEFURV9GQUlMRUQ6ZmUsRElSRUNUSU9OX05PTkU6SXQsRElSRUNUSU9OX0xFRlQ6TnQsRElSRUNUSU9OX1JJR0hUOnp0LERJUkVDVElPTl9VUDpBdCxESVJFQ1RJT05fRE9XTjpMdCxESVJFQ1RJT05fSE9SSVpPTlRBTDpCdCxESVJFQ1RJT05fVkVSVElDQUw6RnQsRElSRUNUSU9OX0FMTDpSdCxNYW5hZ2VyOmR0LElucHV0OlQsVG91Y2hBY3Rpb246WixUb3VjaElucHV0OlYsTW91c2VJbnB1dDpZLFBvaW50ZXJFdmVudElucHV0OlcsVG91Y2hNb3VzZUlucHV0OlgsU2luZ2xlVG91Y2hJbnB1dDpHLFJlY29nbml6ZXI6SyxBdHRyUmVjb2duaXplcjpldCxUYXA6YXQsUGFuOml0LFN3aXBlOnJ0LFBpbmNoOm90LFJvdGF0ZTpzdCxQcmVzczpudCxvbjpnLG9mZjp5LGVhY2g6bCxtZXJnZTpjLGV4dGVuZDp1LGluaGVyaXQ6cCxiaW5kRm46ZixwcmVmaXhlZDpPfSksImZ1bmN0aW9uIj09ZnQmJmkoNik/KG89ZnVuY3Rpb24oKXtyZXR1cm4gaHR9LmNhbGwoZSxpLGUsdCksIShvIT09YSYmKHQuZXhwb3J0cz1vKSkpOiJ1bmRlZmluZWQiIT10eXBlb2YgdCYmdC5leHBvcnRzP3QuZXhwb3J0cz1odDpuW3JdPWh0fSh3aW5kb3csZG9jdW1lbnQsIkhhbW1lciIpfSxmdW5jdGlvbih0LGUpeyhmdW5jdGlvbihlKXt0LmV4cG9ydHM9ZX0pLmNhbGwoZSx7fSl9LGZ1bmN0aW9uKHQsZSxpKXt2YXIgbz1pKDgpLG49aSgxMik7ZS5pc051bWJlcj1mdW5jdGlvbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIE51bWJlcnx8Im51bWJlciI9PXR5cGVvZiB0fSxlLnJlY3Vyc2l2ZURPTURlbGV0ZT1mdW5jdGlvbih0KXtpZih0KWZvcig7dC5oYXNDaGlsZE5vZGVzKCk9PT0hMDspZS5yZWN1cnNpdmVET01EZWxldGUodC5maXJzdENoaWxkKSx0LnJlbW92ZUNoaWxkKHQuZmlyc3RDaGlsZCl9LGUuZ2l2ZVJhbmdlPWZ1bmN0aW9uKHQsZSxpLG8pe2lmKGU9PXQpcmV0dXJuLjU7dmFyIG49MS8oZS10KTtyZXR1cm4gTWF0aC5tYXgoMCwoby10KSpuKX0sZS5pc1N0cmluZz1mdW5jdGlvbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIFN0cmluZ3x8InN0cmluZyI9PXR5cGVvZiB0fSxlLmlzRGF0ZT1mdW5jdGlvbih0KXtpZih0IGluc3RhbmNlb2YgRGF0ZSlyZXR1cm4hMDtpZihlLmlzU3RyaW5nKHQpKXt2YXIgaT1zLmV4ZWModCk7aWYoaSlyZXR1cm4hMDtpZighaXNOYU4oRGF0ZS5wYXJzZSh0KSkpcmV0dXJuITB9cmV0dXJuITF9LGUucmFuZG9tVVVJRD1mdW5jdGlvbigpe3JldHVybiBuLnY0KCl9LGUuYXNzaWduQWxsS2V5cz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgaSBpbiB0KXQuaGFzT3duUHJvcGVydHkoaSkmJiJvYmplY3QiIT10eXBlb2YgdFtpXSYmKHRbaV09ZSl9LGUuZmlsbElmRGVmaW5lZD1mdW5jdGlvbih0LGkpe3ZhciBvPXZvaWQgMD09PWFyZ3VtZW50c1syXT8hMTphcmd1bWVudHNbMl07Zm9yKHZhciBuIGluIHQpdm9pZCAwIT09aVtuXSYmKCJvYmplY3QiIT10eXBlb2YgaVtuXT92b2lkIDAhPT1pW25dJiZudWxsIT09aVtuXXx8dm9pZCAwPT09dFtuXXx8byE9PSEwP3Rbbl09aVtuXTpkZWxldGUgdFtuXToib2JqZWN0Ij09dHlwZW9mIHRbbl0mJmUuZmlsbElmRGVmaW5lZCh0W25dLGlbbl0sbykpfSxlLnByb3RvRXh0ZW5kPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpPTE7aTxhcmd1bWVudHMubGVuZ3RoO2krKyl7dmFyIG89YXJndW1lbnRzW2ldO2Zvcih2YXIgbiBpbiBvKXRbbl09b1tuXX1yZXR1cm4gdH0sZS5leHRlbmQ9ZnVuY3Rpb24odCxlKXtmb3IodmFyIGk9MTtpPGFyZ3VtZW50cy5sZW5ndGg7aSsrKXt2YXIgbz1hcmd1bWVudHNbaV07Zm9yKHZhciBuIGluIG8pby5oYXNPd25Qcm9wZXJ0eShuKSYmKHRbbl09b1tuXSl9cmV0dXJuIHR9LGUuc2VsZWN0aXZlRXh0ZW5kPWZ1bmN0aW9uKHQsZSxpKXtpZighQXJyYXkuaXNBcnJheSh0KSl0aHJvdyBuZXcgRXJyb3IoIkFycmF5IHdpdGggcHJvcGVydHkgbmFtZXMgZXhwZWN0ZWQgYXMgZmlyc3QgYXJndW1lbnQiKTtmb3IodmFyIG89MjtvPGFyZ3VtZW50cy5sZW5ndGg7bysrKWZvcih2YXIgbj1hcmd1bWVudHNbb10scz0wO3M8dC5sZW5ndGg7cysrKXt2YXIgcj10W3NdO24uaGFzT3duUHJvcGVydHkocikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxlLnNlbGVjdGl2ZURlZXBFeHRlbmQ9ZnVuY3Rpb24odCxpLG8pe3ZhciBuPXZvaWQgMD09PWFyZ3VtZW50c1szXT8hMTphcmd1bWVudHNbM107aWYoQXJyYXkuaXNBcnJheShvKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcnJheXMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgZGVlcEV4dGVuZCIpO2Zvcih2YXIgcz0yO3M8YXJndW1lbnRzLmxlbmd0aDtzKyspZm9yKHZhciByPWFyZ3VtZW50c1tzXSxhPTA7YTx0Lmxlbmd0aDthKyspe3ZhciBoPXRbYV07aWYoci5oYXNPd25Qcm9wZXJ0eShoKSlpZihvW2hdJiZvW2hdLmNvbnN0cnVjdG9yPT09T2JqZWN0KXZvaWQgMD09PWlbaF0mJihpW2hdPXt9KSxpW2hdLmNvbnN0cnVjdG9yPT09T2JqZWN0P2UuZGVlcEV4dGVuZChpW2hdLG9baF0sITEsbik6bnVsbD09PW9baF0mJnZvaWQgMCE9PWlbaF0mJm49PT0hMD9kZWxldGUgaVtoXTppW2hdPW9baF07ZWxzZXtpZihBcnJheS5pc0FycmF5KG9baF0pKXRocm93IG5ldyBUeXBlRXJyb3IoIkFycmF5cyBhcmUgbm90IHN1cHBvcnRlZCBieSBkZWVwRXh0ZW5kIik7aVtoXT1vW2hdfX1yZXR1cm4gaX0sZS5zZWxlY3RpdmVOb3REZWVwRXh0ZW5kPWZ1bmN0aW9uKHQsaSxvKXt2YXIgbj12b2lkIDA9PT1hcmd1bWVudHNbM10/ITE6YXJndW1lbnRzWzNdO2lmKEFycmF5LmlzQXJyYXkobykpdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJyYXlzIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IGRlZXBFeHRlbmQiKTtmb3IodmFyIHMgaW4gbylpZihvLmhhc093blByb3BlcnR5KHMpJiYtMT09dC5pbmRleE9mKHMpKWlmKG9bc10mJm9bc10uY29uc3RydWN0b3I9PT1PYmplY3Qpdm9pZCAwPT09aVtzXSYmKGlbc109e30pLGlbc10uY29uc3RydWN0b3I9PT1PYmplY3Q/ZS5kZWVwRXh0ZW5kKGlbc10sb1tzXSk6bnVsbD09PW9bc10mJnZvaWQgMCE9PWlbc10mJm49PT0hMD9kZWxldGUgaVtzXTppW3NdPW9bc107ZWxzZXtpZihBcnJheS5pc0FycmF5KG9bc10pKXRocm93IG5ldyBUeXBlRXJyb3IoIkFycmF5cyBhcmUgbm90IHN1cHBvcnRlZCBieSBkZWVwRXh0ZW5kIik7aVtzXT1vW3NdfXJldHVybiBpfSxlLmRlZXBFeHRlbmQ9ZnVuY3Rpb24odCxpLG8sbil7Zm9yKHZhciBzIGluIGkpaWYoaS5oYXNPd25Qcm9wZXJ0eShzKXx8bz09PSEwKWlmKGlbc10mJmlbc10uY29uc3RydWN0b3I9PT1PYmplY3Qpdm9pZCAwPT09dFtzXSYmKHRbc109e30pLHRbc10uY29uc3RydWN0b3I9PT1PYmplY3Q/ZS5kZWVwRXh0ZW5kKHRbc10saVtzXSxvKTpudWxsPT09aVtzXSYmdm9pZCAwIT09dFtzXSYmbj09PSEwP2RlbGV0ZSB0W3NdOnRbc109aVtzXTtlbHNlIGlmKEFycmF5LmlzQXJyYXkoaVtzXSkpe3Rbc109W107Zm9yKHZhciByPTA7cjxpW3NdLmxlbmd0aDtyKyspdFtzXS5wdXNoKGlbc11bcl0pfWVsc2UgdFtzXT1pW3NdO3JldHVybiB0fSxlLmVxdWFsQXJyYXk9ZnVuY3Rpb24odCxlKXtpZih0Lmxlbmd0aCE9ZS5sZW5ndGgpcmV0dXJuITE7Zm9yKHZhciBpPTAsbz10Lmxlbmd0aDtvPmk7aSsrKWlmKHRbaV0hPWVbaV0pcmV0dXJuITE7cmV0dXJuITB9LGUuY29udmVydD1mdW5jdGlvbih0LGkpe3ZhciBuO2lmKHZvaWQgMD09PXQpcmV0dXJuIHZvaWQgMDtpZihudWxsPT09dClyZXR1cm4gbnVsbDtpZighaSlyZXR1cm4gdDtpZigic3RyaW5nIiE9dHlwZW9mIGkmJiEoaSBpbnN0YW5jZW9mIFN0cmluZykpdGhyb3cgbmV3IEVycm9yKCJUeXBlIG11c3QgYmUgYSBzdHJpbmciKTtzd2l0Y2goaSl7Y2FzZSJib29sZWFuIjpjYXNlIkJvb2xlYW4iOnJldHVybiBCb29sZWFuKHQpO2Nhc2UibnVtYmVyIjpjYXNlIk51bWJlciI6cmV0dXJuIE51bWJlcih0LnZhbHVlT2YoKSk7Y2FzZSJzdHJpbmciOmNhc2UiU3RyaW5nIjpyZXR1cm4gU3RyaW5nKHQpO2Nhc2UiRGF0ZSI6aWYoZS5pc051bWJlcih0KSlyZXR1cm4gbmV3IERhdGUodCk7aWYodCBpbnN0YW5jZW9mIERhdGUpcmV0dXJuIG5ldyBEYXRlKHQudmFsdWVPZigpKTtpZihvLmlzTW9tZW50KHQpKXJldHVybiBuZXcgRGF0ZSh0LnZhbHVlT2YoKSk7aWYoZS5pc1N0cmluZyh0KSlyZXR1cm4gbj1zLmV4ZWModCksbj9uZXcgRGF0ZShOdW1iZXIoblsxXSkpOm8odCkudG9EYXRlKCk7dGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgY29udmVydCBvYmplY3Qgb2YgdHlwZSAiK2UuZ2V0VHlwZSh0KSsiIHRvIHR5cGUgRGF0ZSIpO2Nhc2UiTW9tZW50IjppZihlLmlzTnVtYmVyKHQpKXJldHVybiBvKHQpO2lmKHQgaW5zdGFuY2VvZiBEYXRlKXJldHVybiBvKHQudmFsdWVPZigpKTtpZihvLmlzTW9tZW50KHQpKXJldHVybiBvKHQpO2lmKGUuaXNTdHJpbmcodCkpcmV0dXJuIG49cy5leGVjKHQpLG8obj9OdW1iZXIoblsxXSk6dCk7dGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgY29udmVydCBvYmplY3Qgb2YgdHlwZSAiK2UuZ2V0VHlwZSh0KSsiIHRvIHR5cGUgRGF0ZSIpO2Nhc2UiSVNPRGF0ZSI6aWYoZS5pc051bWJlcih0KSlyZXR1cm4gbmV3IERhdGUodCk7aWYodCBpbnN0YW5jZW9mIERhdGUpcmV0dXJuIHQudG9JU09TdHJpbmcoKTtpZihvLmlzTW9tZW50KHQpKXJldHVybiB0LnRvRGF0ZSgpLnRvSVNPU3RyaW5nKCk7aWYoZS5pc1N0cmluZyh0KSlyZXR1cm4gbj1zLmV4ZWModCksbj9uZXcgRGF0ZShOdW1iZXIoblsxXSkpLnRvSVNPU3RyaW5nKCk6bmV3IERhdGUodCkudG9JU09TdHJpbmcoKTt0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBjb252ZXJ0IG9iamVjdCBvZiB0eXBlICIrZS5nZXRUeXBlKHQpKyIgdG8gdHlwZSBJU09EYXRlIik7Y2FzZSJBU1BEYXRlIjppZihlLmlzTnVtYmVyKHQpKXJldHVybiIvRGF0ZSgiK3QrIikvIjtpZih0IGluc3RhbmNlb2YgRGF0ZSlyZXR1cm4iL0RhdGUoIit0LnZhbHVlT2YoKSsiKS8iO2lmKGUuaXNTdHJpbmcodCkpe249cy5leGVjKHQpO3ZhciByO3JldHVybiByPW4/bmV3IERhdGUoTnVtYmVyKG5bMV0pKS52YWx1ZU9mKCk6bmV3IERhdGUodCkudmFsdWVPZigpLCIvRGF0ZSgiK3IrIikvIn10aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBjb252ZXJ0IG9iamVjdCBvZiB0eXBlICIrZS5nZXRUeXBlKHQpKyIgdG8gdHlwZSBBU1BEYXRlIik7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gdHlwZSAiJytpKyciJyl9fTt2YXIgcz0vXlwvP0RhdGVcKChcLT9cZCspL2k7ZS5nZXRUeXBlPWZ1bmN0aW9uKHQpe3ZhciBlPXR5cGVvZiB0O3JldHVybiJvYmplY3QiPT1lP251bGw9PT10PyJudWxsIjp0IGluc3RhbmNlb2YgQm9vbGVhbj8iQm9vbGVhbiI6dCBpbnN0YW5jZW9mIE51bWJlcj8iTnVtYmVyIjp0IGluc3RhbmNlb2YgU3RyaW5nPyJTdHJpbmciOkFycmF5LmlzQXJyYXkodCk/IkFycmF5Ijp0IGluc3RhbmNlb2YgRGF0ZT8iRGF0ZSI6Ik9iamVjdCI6Im51bWJlciI9PWU/Ik51bWJlciI6ImJvb2xlYW4iPT1lPyJCb29sZWFuIjoic3RyaW5nIj09ZT8iU3RyaW5nIjp2b2lkIDA9PT1lPyJ1bmRlZmluZWQiOmV9LGUuY29weUFuZEV4dGVuZEFycmF5PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpPVtdLG89MDtvPHQubGVuZ3RoO28rKylpLnB1c2godFtvXSk7DQpyZXR1cm4gaS5wdXNoKGUpLGl9LGUuY29weUFycmF5PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1bXSxpPTA7aTx0Lmxlbmd0aDtpKyspZS5wdXNoKHRbaV0pO3JldHVybiBlfSxlLmdldEFic29sdXRlTGVmdD1mdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0fSxlLmdldEFic29sdXRlVG9wPWZ1bmN0aW9uKHQpe3JldHVybiB0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcH0sZS5hZGRDbGFzc05hbWU9ZnVuY3Rpb24odCxlKXt2YXIgaT10LmNsYXNzTmFtZS5zcGxpdCgiICIpOy0xPT1pLmluZGV4T2YoZSkmJihpLnB1c2goZSksdC5jbGFzc05hbWU9aS5qb2luKCIgIikpfSxlLnJlbW92ZUNsYXNzTmFtZT1mdW5jdGlvbih0LGUpe3ZhciBpPXQuY2xhc3NOYW1lLnNwbGl0KCIgIiksbz1pLmluZGV4T2YoZSk7LTEhPW8mJihpLnNwbGljZShvLDEpLHQuY2xhc3NOYW1lPWkuam9pbigiICIpKX0sZS5mb3JFYWNoPWZ1bmN0aW9uKHQsZSl7dmFyIGksbztpZihBcnJheS5pc0FycmF5KHQpKWZvcihpPTAsbz10Lmxlbmd0aDtvPmk7aSsrKWUodFtpXSxpLHQpO2Vsc2UgZm9yKGkgaW4gdCl0Lmhhc093blByb3BlcnR5KGkpJiZlKHRbaV0saSx0KX0sZS50b0FycmF5PWZ1bmN0aW9uKHQpe3ZhciBlPVtdO2Zvcih2YXIgaSBpbiB0KXQuaGFzT3duUHJvcGVydHkoaSkmJmUucHVzaCh0W2ldKTtyZXR1cm4gZX0sZS51cGRhdGVQcm9wZXJ0eT1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRbZV0hPT1pPyh0W2VdPWksITApOiExfSxlLmFkZEV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24odCxlLGksbyl7dC5hZGRFdmVudExpc3RlbmVyPyh2b2lkIDA9PT1vJiYobz0hMSksIm1vdXNld2hlZWwiPT09ZSYmbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJGaXJlZm94Iik+PTAmJihlPSJET01Nb3VzZVNjcm9sbCIpLHQuYWRkRXZlbnRMaXN0ZW5lcihlLGksbykpOnQuYXR0YWNoRXZlbnQoIm9uIitlLGkpfSxlLnJlbW92ZUV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24odCxlLGksbyl7dC5yZW1vdmVFdmVudExpc3RlbmVyPyh2b2lkIDA9PT1vJiYobz0hMSksIm1vdXNld2hlZWwiPT09ZSYmbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJGaXJlZm94Iik+PTAmJihlPSJET01Nb3VzZVNjcm9sbCIpLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLGksbykpOnQuZGV0YWNoRXZlbnQoIm9uIitlLGkpfSxlLnByZXZlbnREZWZhdWx0PWZ1bmN0aW9uKHQpe3R8fCh0PXdpbmRvdy5ldmVudCksdC5wcmV2ZW50RGVmYXVsdD90LnByZXZlbnREZWZhdWx0KCk6dC5yZXR1cm5WYWx1ZT0hMX0sZS5nZXRUYXJnZXQ9ZnVuY3Rpb24odCl7dHx8KHQ9d2luZG93LmV2ZW50KTt2YXIgZTtyZXR1cm4gdC50YXJnZXQ/ZT10LnRhcmdldDp0LnNyY0VsZW1lbnQmJihlPXQuc3JjRWxlbWVudCksdm9pZCAwIT1lLm5vZGVUeXBlJiYzPT1lLm5vZGVUeXBlJiYoZT1lLnBhcmVudE5vZGUpLGV9LGUuaGFzUGFyZW50PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpPXQ7aTspe2lmKGk9PT1lKXJldHVybiEwO2k9aS5wYXJlbnROb2RlfXJldHVybiExfSxlLm9wdGlvbj17fSxlLm9wdGlvbi5hc0Jvb2xlYW49ZnVuY3Rpb24odCxlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdCYmKHQ9dCgpKSxudWxsIT10PzAhPXQ6ZXx8bnVsbH0sZS5vcHRpb24uYXNOdW1iZXI9ZnVuY3Rpb24odCxlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdCYmKHQ9dCgpKSxudWxsIT10P051bWJlcih0KXx8ZXx8bnVsbDplfHxudWxsfSxlLm9wdGlvbi5hc1N0cmluZz1mdW5jdGlvbih0LGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0JiYodD10KCkpLG51bGwhPXQ/U3RyaW5nKHQpOmV8fG51bGx9LGUub3B0aW9uLmFzU2l6ZT1mdW5jdGlvbih0LGkpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0JiYodD10KCkpLGUuaXNTdHJpbmcodCk/dDplLmlzTnVtYmVyKHQpP3QrInB4IjppfHxudWxsfSxlLm9wdGlvbi5hc0VsZW1lbnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdCYmKHQ9dCgpKSx0fHxlfHxudWxsfSxlLmhleFRvUkdCPWZ1bmN0aW9uKHQpe3ZhciBlPS9eIz8oW2EtZlxkXSkoW2EtZlxkXSkoW2EtZlxkXSkkL2k7dD10LnJlcGxhY2UoZSxmdW5jdGlvbih0LGUsaSxvKXtyZXR1cm4gZStlK2kraStvK299KTt2YXIgaT0vXiM/KFthLWZcZF17Mn0pKFthLWZcZF17Mn0pKFthLWZcZF17Mn0pJC9pLmV4ZWModCk7cmV0dXJuIGk/e3I6cGFyc2VJbnQoaVsxXSwxNiksZzpwYXJzZUludChpWzJdLDE2KSxiOnBhcnNlSW50KGlbM10sMTYpfTpudWxsfSxlLm92ZXJyaWRlT3BhY2l0eT1mdW5jdGlvbih0LGkpe2lmKC0xIT10LmluZGV4T2YoInJnYmEiKSlyZXR1cm4gdDtpZigtMSE9dC5pbmRleE9mKCJyZ2IiKSl7dmFyIG89dC5zdWJzdHIodC5pbmRleE9mKCIoIikrMSkucmVwbGFjZSgiKSIsIiIpLnNwbGl0KCIsIik7cmV0dXJuInJnYmEoIitvWzBdKyIsIitvWzFdKyIsIitvWzJdKyIsIitpKyIpIn12YXIgbz1lLmhleFRvUkdCKHQpO3JldHVybiBudWxsPT1vP3Q6InJnYmEoIitvLnIrIiwiK28uZysiLCIrby5iKyIsIitpKyIpIn0sZS5SR0JUb0hleD1mdW5jdGlvbih0LGUsaSl7cmV0dXJuIiMiKygoMTw8MjQpKyh0PDwxNikrKGU8PDgpK2kpLnRvU3RyaW5nKDE2KS5zbGljZSgxKX0sZS5wYXJzZUNvbG9yPWZ1bmN0aW9uKHQpe3ZhciBpO2lmKGUuaXNTdHJpbmcodCk9PT0hMCl7aWYoZS5pc1ZhbGlkUkdCKHQpPT09ITApe3ZhciBvPXQuc3Vic3RyKDQpLnN1YnN0cigwLHQubGVuZ3RoLTUpLnNwbGl0KCIsIikubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBwYXJzZUludCh0KX0pO3Q9ZS5SR0JUb0hleChvWzBdLG9bMV0sb1syXSl9aWYoZS5pc1ZhbGlkSGV4KHQpPT09ITApe3ZhciBuPWUuaGV4VG9IU1YodCkscz17aDpuLmgsczouOCpuLnMsdjpNYXRoLm1pbigxLDEuMDIqbi52KX0scj17aDpuLmgsczpNYXRoLm1pbigxLDEuMjUqbi5zKSx2Oi44Km4udn0sYT1lLkhTVlRvSGV4KHIuaCxyLnMsci52KSxoPWUuSFNWVG9IZXgocy5oLHMucyxzLnYpO2k9e2JhY2tncm91bmQ6dCxib3JkZXI6YSxoaWdobGlnaHQ6e2JhY2tncm91bmQ6aCxib3JkZXI6YX0saG92ZXI6e2JhY2tncm91bmQ6aCxib3JkZXI6YX19fWVsc2UgaT17YmFja2dyb3VuZDp0LGJvcmRlcjp0LGhpZ2hsaWdodDp7YmFja2dyb3VuZDp0LGJvcmRlcjp0fSxob3Zlcjp7YmFja2dyb3VuZDp0LGJvcmRlcjp0fX19ZWxzZSBpPXt9LGkuYmFja2dyb3VuZD10LmJhY2tncm91bmR8fHZvaWQgMCxpLmJvcmRlcj10LmJvcmRlcnx8dm9pZCAwLGUuaXNTdHJpbmcodC5oaWdobGlnaHQpP2kuaGlnaGxpZ2h0PXtib3JkZXI6dC5oaWdobGlnaHQsYmFja2dyb3VuZDp0LmhpZ2hsaWdodH06KGkuaGlnaGxpZ2h0PXt9LGkuaGlnaGxpZ2h0LmJhY2tncm91bmQ9dC5oaWdobGlnaHQmJnQuaGlnaGxpZ2h0LmJhY2tncm91bmR8fHZvaWQgMCxpLmhpZ2hsaWdodC5ib3JkZXI9dC5oaWdobGlnaHQmJnQuaGlnaGxpZ2h0LmJvcmRlcnx8dm9pZCAwKSxlLmlzU3RyaW5nKHQuaG92ZXIpP2kuaG92ZXI9e2JvcmRlcjp0LmhvdmVyLGJhY2tncm91bmQ6dC5ob3Zlcn06KGkuaG92ZXI9e30saS5ob3Zlci5iYWNrZ3JvdW5kPXQuaG92ZXImJnQuaG92ZXIuYmFja2dyb3VuZHx8dm9pZCAwLGkuaG92ZXIuYm9yZGVyPXQuaG92ZXImJnQuaG92ZXIuYm9yZGVyfHx2b2lkIDApO3JldHVybiBpfSxlLlJHQlRvSFNWPWZ1bmN0aW9uKHQsZSxpKXt0Lz0yNTUsZS89MjU1LGkvPTI1NTt2YXIgbz1NYXRoLm1pbih0LE1hdGgubWluKGUsaSkpLG49TWF0aC5tYXgodCxNYXRoLm1heChlLGkpKTtpZihvPT1uKXJldHVybntoOjAsczowLHY6b307dmFyIHM9dD09bz9lLWk6aT09bz90LWU6aS10LHI9dD09bz8zOmk9PW8/MTo1LGE9NjAqKHItcy8obi1vKSkvMzYwLGg9KG4tbykvbixkPW47cmV0dXJue2g6YSxzOmgsdjpkfX07dmFyIHI9e3NwbGl0OmZ1bmN0aW9uKHQpe3ZhciBlPXt9O3JldHVybiB0LnNwbGl0KCI7IikuZm9yRWFjaChmdW5jdGlvbih0KXtpZigiIiE9dC50cmltKCkpe3ZhciBpPXQuc3BsaXQoIjoiKSxvPWlbMF0udHJpbSgpLG49aVsxXS50cmltKCk7ZVtvXT1ufX0pLGV9LGpvaW46ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5rZXlzKHQpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZSsiOiAiK3RbZV19KS5qb2luKCI7ICIpfX07ZS5hZGRDc3NUZXh0PWZ1bmN0aW9uKHQsaSl7dmFyIG89ci5zcGxpdCh0LnN0eWxlLmNzc1RleHQpLG49ci5zcGxpdChpKSxzPWUuZXh0ZW5kKG8sbik7dC5zdHlsZS5jc3NUZXh0PXIuam9pbihzKX0sZS5yZW1vdmVDc3NUZXh0PWZ1bmN0aW9uKHQsZSl7dmFyIGk9ci5zcGxpdCh0LnN0eWxlLmNzc1RleHQpLG89ci5zcGxpdChlKTtmb3IodmFyIG4gaW4gbylvLmhhc093blByb3BlcnR5KG4pJiZkZWxldGUgaVtuXTt0LnN0eWxlLmNzc1RleHQ9ci5qb2luKGkpfSxlLkhTVlRvUkdCPWZ1bmN0aW9uKHQsZSxpKXt2YXIgbyxuLHMscj1NYXRoLmZsb29yKDYqdCksYT02KnQtcixoPWkqKDEtZSksZD1pKigxLWEqZSksbD1pKigxLSgxLWEpKmUpO3N3aXRjaChyJTYpe2Nhc2UgMDpvPWksbj1sLHM9aDticmVhaztjYXNlIDE6bz1kLG49aSxzPWg7YnJlYWs7Y2FzZSAyOm89aCxuPWkscz1sO2JyZWFrO2Nhc2UgMzpvPWgsbj1kLHM9aTticmVhaztjYXNlIDQ6bz1sLG49aCxzPWk7YnJlYWs7Y2FzZSA1Om89aSxuPWgscz1kfXJldHVybntyOk1hdGguZmxvb3IoMjU1Km8pLGc6TWF0aC5mbG9vcigyNTUqbiksYjpNYXRoLmZsb29yKDI1NSpzKX19LGUuSFNWVG9IZXg9ZnVuY3Rpb24odCxpLG8pe3ZhciBuPWUuSFNWVG9SR0IodCxpLG8pO3JldHVybiBlLlJHQlRvSGV4KG4ucixuLmcsbi5iKX0sZS5oZXhUb0hTVj1mdW5jdGlvbih0KXt2YXIgaT1lLmhleFRvUkdCKHQpO3JldHVybiBlLlJHQlRvSFNWKGkucixpLmcsaS5iKX0sZS5pc1ZhbGlkSGV4PWZ1bmN0aW9uKHQpe3ZhciBlPS8oXiNbMC05QS1GXXs2fSQpfCheI1swLTlBLUZdezN9JCkvaS50ZXN0KHQpO3JldHVybiBlfSxlLmlzVmFsaWRSR0I9ZnVuY3Rpb24odCl7dD10LnJlcGxhY2UoIiAiLCIiKTt2YXIgZT0vcmdiXCgoXGR7MSwzfSksKFxkezEsM30pLChcZHsxLDN9KVwpL2kudGVzdCh0KTtyZXR1cm4gZX0sZS5pc1ZhbGlkUkdCQT1mdW5jdGlvbih0KXt0PXQucmVwbGFjZSgiICIsIiIpO3ZhciBlPS9yZ2JhXCgoXGR7MSwzfSksKFxkezEsM30pLChcZHsxLDN9KSwoLnsxLDN9KVwpL2kudGVzdCh0KTtyZXR1cm4gZX0sZS5zZWxlY3RpdmVCcmlkZ2VPYmplY3Q9ZnVuY3Rpb24odCxpKXtpZigib2JqZWN0Ij09dHlwZW9mIGkpe2Zvcih2YXIgbz1PYmplY3QuY3JlYXRlKGkpLG49MDtuPHQubGVuZ3RoO24rKylpLmhhc093blByb3BlcnR5KHRbbl0pJiYib2JqZWN0Ij09dHlwZW9mIGlbdFtuXV0mJihvW3Rbbl1dPWUuYnJpZGdlT2JqZWN0KGlbdFtuXV0pKTtyZXR1cm4gb31yZXR1cm4gbnVsbH0sZS5icmlkZ2VPYmplY3Q9ZnVuY3Rpb24odCl7aWYoIm9iamVjdCI9PXR5cGVvZiB0KXt2YXIgaT1PYmplY3QuY3JlYXRlKHQpO2Zvcih2YXIgbyBpbiB0KXQuaGFzT3duUHJvcGVydHkobykmJiJvYmplY3QiPT10eXBlb2YgdFtvXSYmKGlbb109ZS5icmlkZ2VPYmplY3QodFtvXSkpO3JldHVybiBpfXJldHVybiBudWxsfSxlLm1lcmdlT3B0aW9ucz1mdW5jdGlvbih0LGUsaSl7dm9pZCAwPT09YXJndW1lbnRzWzNdPyExOmFyZ3VtZW50c1szXTtpZihudWxsPT09ZVtpXSl0W2ldPXZvaWQgMCxkZWxldGUgdFtpXTtlbHNlIGlmKHZvaWQgMCE9PWVbaV0paWYoImJvb2xlYW4iPT10eXBlb2YgZVtpXSl0W2ldLmVuYWJsZWQ9ZVtpXTtlbHNle3ZvaWQgMD09PWVbaV0uZW5hYmxlZCYmKHRbaV0uZW5hYmxlZD0hMCk7Zm9yKHZhciBvIGluIGVbaV0pZVtpXS5oYXNPd25Qcm9wZXJ0eShvKSYmKHRbaV1bb109ZVtpXVtvXSl9fSxlLmJpbmFyeVNlYXJjaEN1c3RvbT1mdW5jdGlvbih0LGUsaSxvKXtmb3IodmFyIG49MWU0LHM9MCxyPTAsYT10Lmxlbmd0aC0xO2E+PXImJm4+czspe3ZhciBoPU1hdGguZmxvb3IoKHIrYSkvMiksZD10W2hdLGw9dm9pZCAwPT09bz9kW2ldOmRbaV1bb10sdT1lKGwpO2lmKDA9PXUpcmV0dXJuIGg7LTE9PXU/cj1oKzE6YT1oLTEscysrfXJldHVybi0xfSxlLmJpbmFyeVNlYXJjaFZhbHVlPWZ1bmN0aW9uKHQsZSxpLG8pe2Zvcih2YXIgbixzLHIsYSxoPTFlNCxkPTAsbD0wLHU9dC5sZW5ndGgtMTt1Pj1sJiZoPmQ7KXtpZihhPU1hdGguZmxvb3IoLjUqKHUrbCkpLG49dFtNYXRoLm1heCgwLGEtMSldW2ldLHM9dFthXVtpXSxyPXRbTWF0aC5taW4odC5sZW5ndGgtMSxhKzEpXVtpXSxzPT1lKXJldHVybiBhO2lmKGU+biYmcz5lKXJldHVybiJiZWZvcmUiPT1vP01hdGgubWF4KDAsYS0xKTphO2lmKGU+cyYmcj5lKXJldHVybiJiZWZvcmUiPT1vP2E6TWF0aC5taW4odC5sZW5ndGgtMSxhKzEpO2U+cz9sPWErMTp1PWEtMSxkKyt9cmV0dXJuLTF9LGUuZWFzaW5nRnVuY3Rpb25zPXtsaW5lYXI6ZnVuY3Rpb24odCl7cmV0dXJuIHR9LGVhc2VJblF1YWQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQqdH0sZWFzZU91dFF1YWQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQqKDItdCl9LGVhc2VJbk91dFF1YWQ6ZnVuY3Rpb24odCl7cmV0dXJuLjU+dD8yKnQqdDotMSsoNC0yKnQpKnR9LGVhc2VJbkN1YmljOmZ1bmN0aW9uKHQpe3JldHVybiB0KnQqdH0sZWFzZU91dEN1YmljOmZ1bmN0aW9uKHQpe3JldHVybi0tdCp0KnQrMX0sZWFzZUluT3V0Q3ViaWM6ZnVuY3Rpb24odCl7cmV0dXJuLjU+dD80KnQqdCp0Oih0LTEpKigyKnQtMikqKDIqdC0yKSsxfSxlYXNlSW5RdWFydDpmdW5jdGlvbih0KXtyZXR1cm4gdCp0KnQqdH0sZWFzZU91dFF1YXJ0OmZ1bmN0aW9uKHQpe3JldHVybiAxLSAtLXQqdCp0KnR9LGVhc2VJbk91dFF1YXJ0OmZ1bmN0aW9uKHQpe3JldHVybi41PnQ/OCp0KnQqdCp0OjEtOCotLXQqdCp0KnR9LGVhc2VJblF1aW50OmZ1bmN0aW9uKHQpe3JldHVybiB0KnQqdCp0KnR9LGVhc2VPdXRRdWludDpmdW5jdGlvbih0KXtyZXR1cm4gMSstLXQqdCp0KnQqdH0sZWFzZUluT3V0UXVpbnQ6ZnVuY3Rpb24odCl7cmV0dXJuLjU+dD8xNip0KnQqdCp0KnQ6MSsxNiotLXQqdCp0KnQqdH19fSxmdW5jdGlvbih0LGUsaSl7dC5leHBvcnRzPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cubW9tZW50fHxpKDkpfSxmdW5jdGlvbih0LGUsaSl7KGZ1bmN0aW9uKHQpeyFmdW5jdGlvbihlLGkpe3QuZXhwb3J0cz1pKCl9KHRoaXMsZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7cmV0dXJuIFNpLmFwcGx5KG51bGwsYXJndW1lbnRzKX1mdW5jdGlvbiBpKHQpe1NpPXR9ZnVuY3Rpb24gbyh0KXtyZXR1cm4iW29iamVjdCBBcnJheV0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfWZ1bmN0aW9uIG4odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBEYXRlfHwiW29iamVjdCBEYXRlXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9ZnVuY3Rpb24gcyh0LGUpe3ZhciBpLG89W107Zm9yKGk9MDtpPHQubGVuZ3RoOysraSlvLnB1c2goZSh0W2ldLGkpKTtyZXR1cm4gb31mdW5jdGlvbiByKHQsZSl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGUpfWZ1bmN0aW9uIGEodCxlKXtmb3IodmFyIGkgaW4gZSlyKGUsaSkmJih0W2ldPWVbaV0pO3JldHVybiByKGUsInRvU3RyaW5nIikmJih0LnRvU3RyaW5nPWUudG9TdHJpbmcpLHIoZSwidmFsdWVPZiIpJiYodC52YWx1ZU9mPWUudmFsdWVPZiksdH1mdW5jdGlvbiBoKHQsZSxpLG8pe3JldHVybiBEdCh0LGUsaSxvLCEwKS51dGMoKX1mdW5jdGlvbiBkKCl7cmV0dXJue2VtcHR5OiExLHVudXNlZFRva2VuczpbXSx1bnVzZWRJbnB1dDpbXSxvdmVyZmxvdzotMixjaGFyc0xlZnRPdmVyOjAsbnVsbElucHV0OiExLGludmFsaWRNb250aDpudWxsLGludmFsaWRGb3JtYXQ6ITEsdXNlckludmFsaWRhdGVkOiExLGlzbzohMX19ZnVuY3Rpb24gbCh0KXtyZXR1cm4gbnVsbD09dC5fcGYmJih0Ll9wZj1kKCkpLHQuX3BmfWZ1bmN0aW9uIHUodCl7aWYobnVsbD09dC5faXNWYWxpZCl7dmFyIGU9bCh0KTt0Ll9pc1ZhbGlkPSFpc05hTih0Ll9kLmdldFRpbWUoKSkmJmUub3ZlcmZsb3c8MCYmIWUuZW1wdHkmJiFlLmludmFsaWRNb250aCYmIWUubnVsbElucHV0JiYhZS5pbnZhbGlkRm9ybWF0JiYhZS51c2VySW52YWxpZGF0ZWQsdC5fc3RyaWN0JiYodC5faXNWYWxpZD10Ll9pc1ZhbGlkJiYwPT09ZS5jaGFyc0xlZnRPdmVyJiYwPT09ZS51bnVzZWRUb2tlbnMubGVuZ3RoJiZ2b2lkIDA9PT1lLmJpZ0hvdXIpfXJldHVybiB0Ll9pc1ZhbGlkfWZ1bmN0aW9uIGModCl7dmFyIGU9aChOYU4pO3JldHVybiBudWxsIT10P2EobChlKSx0KTpsKGUpLnVzZXJJbnZhbGlkYXRlZD0hMCxlfWZ1bmN0aW9uIHAodCxlKXt2YXIgaSxvLG47aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBlLl9pc0FNb21lbnRPYmplY3QmJih0Ll9pc0FNb21lbnRPYmplY3Q9ZS5faXNBTW9tZW50T2JqZWN0KSwidW5kZWZpbmVkIiE9dHlwZW9mIGUuX2kmJih0Ll9pPWUuX2kpLCJ1bmRlZmluZWQiIT10eXBlb2YgZS5fZiYmKHQuX2Y9ZS5fZiksInVuZGVmaW5lZCIhPXR5cGVvZiBlLl9sJiYodC5fbD1lLl9sKSwidW5kZWZpbmVkIiE9dHlwZW9mIGUuX3N0cmljdCYmKHQuX3N0cmljdD1lLl9zdHJpY3QpLCJ1bmRlZmluZWQiIT10eXBlb2YgZS5fdHptJiYodC5fdHptPWUuX3R6bSksInVuZGVmaW5lZCIhPXR5cGVvZiBlLl9pc1VUQyYmKHQuX2lzVVRDPWUuX2lzVVRDKSwidW5kZWZpbmVkIiE9dHlwZW9mIGUuX29mZnNldCYmKHQuX29mZnNldD1lLl9vZmZzZXQpLCJ1bmRlZmluZWQiIT10eXBlb2YgZS5fcGYmJih0Ll9wZj1sKGUpKSwidW5kZWZpbmVkIiE9dHlwZW9mIGUuX2xvY2FsZSYmKHQuX2xvY2FsZT1lLl9sb2NhbGUpLElpLmxlbmd0aD4wKWZvcihpIGluIElpKW89SWlbaV0sbj1lW29dLCJ1bmRlZmluZWQiIT10eXBlb2YgbiYmKHRbb109bik7cmV0dXJuIHR9ZnVuY3Rpb24gZih0KXtwKHRoaXMsdCksdGhpcy5fZD1uZXcgRGF0ZSgrdC5fZCksTmk9PT0hMSYmKE5pPSEwLGUudXBkYXRlT2Zmc2V0KHRoaXMpLE5pPSExKX1mdW5jdGlvbiBtKHQpe3JldHVybiB0IGluc3RhbmNlb2YgZnx8bnVsbCE9dCYmbnVsbCE9dC5faXNBTW9tZW50T2JqZWN0fWZ1bmN0aW9uIHYodCl7dmFyIGU9K3QsaT0wO3JldHVybiAwIT09ZSYmaXNGaW5pdGUoZSkmJihpPWU+PTA/TWF0aC5mbG9vcihlKTpNYXRoLmNlaWwoZSkpLGl9ZnVuY3Rpb24gZyh0LGUsaSl7dmFyIG8sbj1NYXRoLm1pbih0Lmxlbmd0aCxlLmxlbmd0aCkscz1NYXRoLmFicyh0Lmxlbmd0aC1lLmxlbmd0aCkscj0wO2ZvcihvPTA7bj5vO28rKykoaSYmdFtvXSE9PWVbb118fCFpJiZ2KHRbb10pIT09dihlW29dKSkmJnIrKztyZXR1cm4gcitzfWZ1bmN0aW9uIHkoKXt9ZnVuY3Rpb24gYih0KXtyZXR1cm4gdD90LnRvTG93ZXJDYXNlKCkucmVwbGFjZSgiXyIsIi0iKTp0fWZ1bmN0aW9uIHcodCl7Zm9yKHZhciBlLGksbyxuLHM9MDtzPHQubGVuZ3RoOyl7Zm9yKG49Yih0W3NdKS5zcGxpdCgiLSIpLGU9bi5sZW5ndGgsaT1iKHRbcysxXSksaT1pP2kuc3BsaXQoIi0iKTpudWxsO2U+MDspe2lmKG89XyhuLnNsaWNlKDAsZSkuam9pbigiLSIpKSlyZXR1cm4gbztpZihpJiZpLmxlbmd0aD49ZSYmZyhuLGksITApPj1lLTEpYnJlYWs7ZS0tfXMrK31yZXR1cm4gbnVsbH1mdW5jdGlvbiBfKGUpe3ZhciBpPW51bGw7aWYoIXppW2VdJiYidW5kZWZpbmVkIiE9dHlwZW9mIHQmJnQmJnQuZXhwb3J0cyl0cnl7aT1QaS5fYWJiciwhZnVuY3Rpb24oKXt2YXIgdD1uZXcgRXJyb3IoJ0Nhbm5vdCBmaW5kIG1vZHVsZSAiLi9sb2NhbGUiJyk7dGhyb3cgdC5jb2RlPSJNT0RVTEVfTk9UX0ZPVU5EIix0fSgpLHgoaSl9Y2F0Y2gobyl7fXJldHVybiB6aVtlXX1mdW5jdGlvbiB4KHQsZSl7dmFyIGk7cmV0dXJuIHQmJihpPSJ1bmRlZmluZWQiPT10eXBlb2YgZT9NKHQpOmsodCxlKSxpJiYoUGk9aSkpLFBpLl9hYmJyfWZ1bmN0aW9uIGsodCxlKXtyZXR1cm4gbnVsbCE9PWU/KGUuYWJicj10LHppW3RdfHwoemlbdF09bmV3IHkpLHppW3RdLnNldChlKSx4KHQpLHppW3RdKTooZGVsZXRlIHppW3RdLG51bGwpfWZ1bmN0aW9uIE0odCl7dmFyIGU7aWYodCYmdC5fbG9jYWxlJiZ0Ll9sb2NhbGUuX2FiYnImJih0PXQuX2xvY2FsZS5fYWJiciksIXQpcmV0dXJuIFBpO2lmKCFvKHQpKXtpZihlPV8odCkpcmV0dXJuIGU7dD1bdF19cmV0dXJuIHcodCl9ZnVuY3Rpb24gTyh0LGUpe3ZhciBpPXQudG9Mb3dlckNhc2UoKTtBaVtpXT1BaVtpKyJzIl09QWlbZV09dH1mdW5jdGlvbiBEKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdD9BaVt0XXx8QWlbdC50b0xvd2VyQ2FzZSgpXTp2b2lkIDB9ZnVuY3Rpb24gQyh0KXt2YXIgZSxpLG89e307Zm9yKGkgaW4gdClyKHQsaSkmJihlPUQoaSksZSYmKG9bZV09dFtpXSkpO3JldHVybiBvfWZ1bmN0aW9uIFQodCxpKXtyZXR1cm4gZnVuY3Rpb24obyl7cmV0dXJuIG51bGwhPW8/KFModGhpcyx0LG8pLGUudXBkYXRlT2Zmc2V0KHRoaXMsaSksdGhpcyk6RSh0aGlzLHQpfX1mdW5jdGlvbiBFKHQsZSl7cmV0dXJuIHQuX2RbImdldCIrKHQuX2lzVVRDPyJVVEMiOiIiKStlXSgpfWZ1bmN0aW9uIFModCxlLGkpe3JldHVybiB0Ll9kWyJzZXQiKyh0Ll9pc1VUQz8iVVRDIjoiIikrZV0oaSl9ZnVuY3Rpb24gUCh0LGUpe3ZhciBpO2lmKCJvYmplY3QiPT10eXBlb2YgdClmb3IoaSBpbiB0KXRoaXMuc2V0KGksdFtpXSk7ZWxzZSBpZih0PUQodCksImZ1bmN0aW9uIj09dHlwZW9mIHRoaXNbdF0pcmV0dXJuIHRoaXNbdF0oZSk7cmV0dXJuIHRoaXN9ZnVuY3Rpb24gSSh0LGUsaSl7Zm9yKHZhciBvPSIiK01hdGguYWJzKHQpLG49dD49MDtvLmxlbmd0aDxlOylvPSIwIitvO3JldHVybihuP2k/IisiOiIiOiItIikrb31mdW5jdGlvbiBOKHQsZSxpLG8pe3ZhciBuPW87InN0cmluZyI9PXR5cGVvZiBvJiYobj1mdW5jdGlvbigpe3JldHVybiB0aGlzW29dKCl9KSx0JiYoUmlbdF09biksZSYmKFJpW2VbMF1dPWZ1bmN0aW9uKCl7cmV0dXJuIEkobi5hcHBseSh0aGlzLGFyZ3VtZW50cyksZVsxXSxlWzJdKX0pLGkmJihSaVtpXT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxvY2FsZURhdGEoKS5vcmRpbmFsKG4uYXBwbHkodGhpcyxhcmd1bWVudHMpLHQpfSl9ZnVuY3Rpb24geih0KXtyZXR1cm4gdC5tYXRjaCgvXFtbXHNcU10vKT90LnJlcGxhY2UoL15cW3xcXSQvZywiIik6dC5yZXBsYWNlKC9cXC9nLCIiKX1mdW5jdGlvbiBBKHQpe3ZhciBlLGksbz10Lm1hdGNoKExpKTtmb3IoZT0wLGk9by5sZW5ndGg7aT5lO2UrKylSaVtvW2VdXT9vW2VdPVJpW29bZV1dOm9bZV09eihvW2VdKTtyZXR1cm4gZnVuY3Rpb24obil7dmFyIHM9IiI7Zm9yKGU9MDtpPmU7ZSsrKXMrPW9bZV1pbnN0YW5jZW9mIEZ1bmN0aW9uP29bZV0uY2FsbChuLHQpOm9bZV07cmV0dXJuIHN9fWZ1bmN0aW9uIEwodCxlKXtyZXR1cm4gdC5pc1ZhbGlkKCk/KGU9QihlLHQubG9jYWxlRGF0YSgpKSxGaVtlXXx8KEZpW2VdPUEoZSkpLEZpW2VdKHQpKTp0LmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpfWZ1bmN0aW9uIEIodCxlKXtmdW5jdGlvbiBpKHQpe3JldHVybiBlLmxvbmdEYXRlRm9ybWF0KHQpfHx0fXZhciBvPTU7Zm9yKEJpLmxhc3RJbmRleD0wO28+PTAmJkJpLnRlc3QodCk7KXQ9dC5yZXBsYWNlKEJpLGkpLEJpLmxhc3RJbmRleD0wLG8tPTE7cmV0dXJuIHR9ZnVuY3Rpb24gRih0LGUsaSl7dG9bdF09ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmaT9pOmV9fWZ1bmN0aW9uIFIodCxlKXtyZXR1cm4gcih0byx0KT90b1t0XShlLl9zdHJpY3QsZS5fbG9jYWxlKTpuZXcgUmVnRXhwKGoodCkpfWZ1bmN0aW9uIGoodCl7cmV0dXJuIHQucmVwbGFjZSgiXFwiLCIiKS5yZXBsYWNlKC9cXChcWyl8XFwoXF0pfFxbKFteXF1cW10qKVxdfFxcKC4pL2csZnVuY3Rpb24odCxlLGksbyxuKXtyZXR1cm4gZXx8aXx8b3x8bn0pLnJlcGxhY2UoL1stXC9cXF4kKis/LigpfFtcXXt9XS9nLCJcXCQmIil9ZnVuY3Rpb24gSCh0LGUpe3ZhciBpLG89ZTtmb3IoInN0cmluZyI9PXR5cGVvZiB0JiYodD1bdF0pLCJudW1iZXIiPT10eXBlb2YgZSYmKG89ZnVuY3Rpb24odCxpKXtpW2VdPXYodCl9KSxpPTA7aTx0Lmxlbmd0aDtpKyspZW9bdFtpXV09b31mdW5jdGlvbiBZKHQsZSl7SCh0LGZ1bmN0aW9uKHQsaSxvLG4pe28uX3c9by5fd3x8e30sZSh0LG8uX3csbyxuKX0pfWZ1bmN0aW9uIFcodCxlLGkpe251bGwhPWUmJnIoZW8sdCkmJmVvW3RdKGUsaS5fYSxpLHQpfWZ1bmN0aW9uIEcodCxlKXtyZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEModCxlKzEsMCkpLmdldFVUQ0RhdGUoKX1mdW5jdGlvbiBVKHQpe3JldHVybiB0aGlzLl9tb250aHNbdC5tb250aCgpXX1mdW5jdGlvbiBWKHQpe3JldHVybiB0aGlzLl9tb250aHNTaG9ydFt0Lm1vbnRoKCldfWZ1bmN0aW9uIHEodCxlLGkpe3ZhciBvLG4scztmb3IodGhpcy5fbW9udGhzUGFyc2V8fCh0aGlzLl9tb250aHNQYXJzZT1bXSx0aGlzLl9sb25nTW9udGhzUGFyc2U9W10sdGhpcy5fc2hvcnRNb250aHNQYXJzZT1bXSksbz0wOzEyPm87bysrKXtpZihuPWgoWzJlMyxvXSksaSYmIXRoaXMuX2xvbmdNb250aHNQYXJzZVtvXSYmKHRoaXMuX2xvbmdNb250aHNQYXJzZVtvXT1uZXcgUmVnRXhwKCJeIit0aGlzLm1vbnRocyhuLCIiKS5yZXBsYWNlKCIuIiwiIikrIiQiLCJpIiksdGhpcy5fc2hvcnRNb250aHNQYXJzZVtvXT1uZXcgUmVnRXhwKCJeIit0aGlzLm1vbnRoc1Nob3J0KG4sIiIpLnJlcGxhY2UoIi4iLCIiKSsiJCIsImkiKSksaXx8dGhpcy5fbW9udGhzUGFyc2Vbb118fChzPSJeIit0aGlzLm1vbnRocyhuLCIiKSsifF4iK3RoaXMubW9udGhzU2hvcnQobiwiIiksdGhpcy5fbW9udGhzUGFyc2Vbb109bmV3IFJlZ0V4cChzLnJlcGxhY2UoIi4iLCIiKSwiaSIpKSxpJiYiTU1NTSI9PT1lJiZ0aGlzLl9sb25nTW9udGhzUGFyc2Vbb10udGVzdCh0KSlyZXR1cm4gbztpZihpJiYiTU1NIj09PWUmJnRoaXMuX3Nob3J0TW9udGhzUGFyc2Vbb10udGVzdCh0KSlyZXR1cm4gbztpZighaSYmdGhpcy5fbW9udGhzUGFyc2Vbb10udGVzdCh0KSlyZXR1cm4gb319ZnVuY3Rpb24gWCh0LGUpe3ZhciBpO3JldHVybiJzdHJpbmciPT10eXBlb2YgZSYmKGU9dC5sb2NhbGVEYXRhKCkubW9udGhzUGFyc2UoZSksIm51bWJlciIhPXR5cGVvZiBlKT90OihpPU1hdGgubWluKHQuZGF0ZSgpLEcodC55ZWFyKCksZSkpLHQuX2RbInNldCIrKHQuX2lzVVRDPyJVVEMiOiIiKSsiTW9udGgiXShlLGkpLHQpfWZ1bmN0aW9uIFoodCl7cmV0dXJuIG51bGwhPXQ/KFgodGhpcyx0KSxlLnVwZGF0ZU9mZnNldCh0aGlzLCEwKSx0aGlzKTpFKHRoaXMsIk1vbnRoIil9ZnVuY3Rpb24gSigpe3JldHVybiBHKHRoaXMueWVhcigpLHRoaXMubW9udGgoKSl9ZnVuY3Rpb24gSyh0KXt2YXIgZSxpPXQuX2E7cmV0dXJuIGkmJi0yPT09bCh0KS5vdmVyZmxvdyYmKGU9aVtvb108MHx8aVtvb10+MTE/b286aVtub108MXx8aVtub10+RyhpW2lvXSxpW29vXSk/bm86aVtzb108MHx8aVtzb10+MjR8fDI0PT09aVtzb10mJigwIT09aVtyb118fDAhPT1pW2FvXXx8MCE9PWlbaG9dKT9zbzppW3JvXTwwfHxpW3JvXT41OT9ybzppW2FvXTwwfHxpW2FvXT41OT9hbzppW2hvXTwwfHxpW2hvXT45OTk/aG86LTEsbCh0KS5fb3ZlcmZsb3dEYXlPZlllYXImJihpbz5lfHxlPm5vKSYmKGU9bm8pLGwodCkub3ZlcmZsb3c9ZSksdH1mdW5jdGlvbiBRKHQpe2Uuc3VwcHJlc3NEZXByZWNhdGlvbldhcm5pbmdzPT09ITEmJiJ1bmRlZmluZWQiIT10eXBlb2YgY29uc29sZSYmY29uc29sZS53YXJuJiZjb25zb2xlLndhcm4oIkRlcHJlY2F0aW9uIHdhcm5pbmc6ICIrdCl9ZnVuY3Rpb24gJCh0LGUpe3ZhciBpPSEwLG89dCsiXG4iKyhuZXcgRXJyb3IpLnN0YWNrO3JldHVybiBhKGZ1bmN0aW9uKCl7cmV0dXJuIGkmJihRKG8pLGk9ITEpLGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxlKX1mdW5jdGlvbiB0dCh0LGUpe2NvW3RdfHwoUShlKSxjb1t0XT0hMCl9ZnVuY3Rpb24gZXQodCl7dmFyIGUsaSxvPXQuX2ksbj1wby5leGVjKG8pO2lmKG4pe2ZvcihsKHQpLmlzbz0hMCxlPTAsaT1mby5sZW5ndGg7aT5lO2UrKylpZihmb1tlXVsxXS5leGVjKG8pKXt0Ll9mPWZvW2VdWzBdKyhuWzZdfHwiICIpO2JyZWFrfWZvcihlPTAsaT1tby5sZW5ndGg7aT5lO2UrKylpZihtb1tlXVsxXS5leGVjKG8pKXt0Ll9mKz1tb1tlXVswXTticmVha31vLm1hdGNoKEtpKSYmKHQuX2YrPSJaIiksd3QodCl9ZWxzZSB0Ll9pc1ZhbGlkPSExfWZ1bmN0aW9uIGl0KHQpe3ZhciBpPXZvLmV4ZWModC5faSk7cmV0dXJuIG51bGwhPT1pP3ZvaWQodC5fZD1uZXcgRGF0ZSgraVsxXSkpOihldCh0KSx2b2lkKHQuX2lzVmFsaWQ9PT0hMSYmKGRlbGV0ZSB0Ll9pc1ZhbGlkLGUuY3JlYXRlRnJvbUlucHV0RmFsbGJhY2sodCkpKSl9ZnVuY3Rpb24gb3QodCxlLGksbyxuLHMscil7dmFyIGE9bmV3IERhdGUodCxlLGksbyxuLHMscik7cmV0dXJuIDE5NzA+dCYmYS5zZXRGdWxsWWVhcih0KSxhfWZ1bmN0aW9uIG50KHQpe3ZhciBlPW5ldyBEYXRlKERhdGUuVVRDLmFwcGx5KG51bGwsYXJndW1lbnRzKSk7cmV0dXJuIDE5NzA+dCYmZS5zZXRVVENGdWxsWWVhcih0KSxlfWZ1bmN0aW9uIHN0KHQpe3JldHVybiBydCh0KT8zNjY6MzY1fWZ1bmN0aW9uIHJ0KHQpe3JldHVybiB0JTQ9PT0wJiZ0JTEwMCE9PTB8fHQlNDAwPT09MH1mdW5jdGlvbiBhdCgpe3JldHVybiBydCh0aGlzLnllYXIoKSl9ZnVuY3Rpb24gaHQodCxlLGkpe3ZhciBvLG49aS1lLHM9aS10LmRheSgpO3JldHVybiBzPm4mJihzLT03KSxuLTc+cyYmKHMrPTcpLG89Q3QodCkuYWRkKHMsImQiKSx7d2VlazpNYXRoLmNlaWwoby5kYXlPZlllYXIoKS83KSx5ZWFyOm8ueWVhcigpfX1mdW5jdGlvbiBkdCh0KXtyZXR1cm4gaHQodCx0aGlzLl93ZWVrLmRvdyx0aGlzLl93ZWVrLmRveSkud2Vla31mdW5jdGlvbiBsdCgpe3JldHVybiB0aGlzLl93ZWVrLmRvd31mdW5jdGlvbiB1dCgpe3JldHVybiB0aGlzLl93ZWVrLmRveX1mdW5jdGlvbiBjdCh0KXt2YXIgZT10aGlzLmxvY2FsZURhdGEoKS53ZWVrKHRoaXMpO3JldHVybiBudWxsPT10P2U6dGhpcy5hZGQoNyoodC1lKSwiZCIpfWZ1bmN0aW9uIHB0KHQpe3ZhciBlPWh0KHRoaXMsMSw0KS53ZWVrO3JldHVybiBudWxsPT10P2U6dGhpcy5hZGQoNyoodC1lKSwiZCIpfWZ1bmN0aW9uIGZ0KHQsZSxpLG8sbil7dmFyIHMscixhPW50KHQsMCwxKS5nZXRVVENEYXkoKTtyZXR1cm4gYT0wPT09YT83OmEsaT1udWxsIT1pP2k6bixzPW4tYSsoYT5vPzc6MCktKG4+YT83OjApLHI9NyooZS0xKSsoaS1uKStzKzEse3llYXI6cj4wP3Q6dC0xLGRheU9mWWVhcjpyPjA/cjpzdCh0LTEpK3J9fWZ1bmN0aW9uIG10KHQpe3ZhciBlPU1hdGgucm91bmQoKHRoaXMuY2xvbmUoKS5zdGFydE9mKCJkYXkiKS10aGlzLmNsb25lKCkuc3RhcnRPZigieWVhciIpKS84NjRlNSkrMTtyZXR1cm4gbnVsbD09dD9lOnRoaXMuYWRkKHQtZSwiZCIpfWZ1bmN0aW9uIHZ0KHQsZSxpKXtyZXR1cm4gbnVsbCE9dD90Om51bGwhPWU/ZTppfWZ1bmN0aW9uIGd0KHQpe3ZhciBlPW5ldyBEYXRlO3JldHVybiB0Ll91c2VVVEM/W2UuZ2V0VVRDRnVsbFllYXIoKSxlLmdldFVUQ01vbnRoKCksZS5nZXRVVENEYXRlKCldOltlLmdldEZ1bGxZZWFyKCksZS5nZXRNb250aCgpLGUuZ2V0RGF0ZSgpXX1mdW5jdGlvbiB5dCh0KXt2YXIgZSxpLG8sbixzPVtdO2lmKCF0Ll9kKXtmb3Iobz1ndCh0KSx0Ll93JiZudWxsPT10Ll9hW25vXSYmbnVsbD09dC5fYVtvb10mJmJ0KHQpLHQuX2RheU9mWWVhciYmKG49dnQodC5fYVtpb10sb1tpb10pLHQuX2RheU9mWWVhcj5zdChuKSYmKGwodCkuX292ZXJmbG93RGF5T2ZZZWFyPSEwKSxpPW50KG4sMCx0Ll9kYXlPZlllYXIpLHQuX2Fbb29dPWkuZ2V0VVRDTW9udGgoKSx0Ll9hW25vXT1pLmdldFVUQ0RhdGUoKSksZT0wOzM+ZSYmbnVsbD09dC5fYVtlXTsrK2UpdC5fYVtlXT1zW2VdPW9bZV07Zm9yKDs3PmU7ZSsrKXQuX2FbZV09c1tlXT1udWxsPT10Ll9hW2VdPzI9PT1lPzE6MDp0Ll9hW2VdOzI0PT09dC5fYVtzb10mJjA9PT10Ll9hW3JvXSYmMD09PXQuX2FbYW9dJiYwPT09dC5fYVtob10mJih0Ll9uZXh0RGF5PSEwLHQuX2Fbc29dPTApLHQuX2Q9KHQuX3VzZVVUQz9udDpvdCkuYXBwbHkobnVsbCxzKSxudWxsIT10Ll90em0mJnQuX2Quc2V0VVRDTWludXRlcyh0Ll9kLmdldFVUQ01pbnV0ZXMoKS10Ll90em0pLHQuX25leHREYXkmJih0Ll9hW3NvXT0yNCl9fWZ1bmN0aW9uIGJ0KHQpe3ZhciBlLGksbyxuLHMscixhO2U9dC5fdyxudWxsIT1lLkdHfHxudWxsIT1lLld8fG51bGwhPWUuRT8ocz0xLHI9NCxpPXZ0KGUuR0csdC5fYVtpb10saHQoQ3QoKSwxLDQpLnllYXIpLG89dnQoZS5XLDEpLG49dnQoZS5FLDEpKToocz10Ll9sb2NhbGUuX3dlZWsuZG93LHI9dC5fbG9jYWxlLl93ZWVrLmRveSxpPXZ0KGUuZ2csdC5fYVtpb10saHQoQ3QoKSxzLHIpLnllYXIpLG89dnQoZS53LDEpLG51bGwhPWUuZD8obj1lLmQscz5uJiYrK28pOm49bnVsbCE9ZS5lP2UuZStzOnMpLGE9ZnQoaSxvLG4scixzKSx0Ll9hW2lvXT1hLnllYXIsdC5fZGF5T2ZZZWFyPWEuZGF5T2ZZZWFyfWZ1bmN0aW9uIHd0KHQpe2lmKHQuX2Y9PT1lLklTT184NjAxKXJldHVybiB2b2lkIGV0KHQpO3QuX2E9W10sbCh0KS5lbXB0eT0hMDt2YXIgaSxvLG4scyxyLGE9IiIrdC5faSxoPWEubGVuZ3RoLGQ9MDtmb3Iobj1CKHQuX2YsdC5fbG9jYWxlKS5tYXRjaChMaSl8fFtdLGk9MDtpPG4ubGVuZ3RoO2krKylzPW5baV0sbz0oYS5tYXRjaChSKHMsdCkpfHxbXSlbMF0sbyYmKHI9YS5zdWJzdHIoMCxhLmluZGV4T2YobykpLHIubGVuZ3RoPjAmJmwodCkudW51c2VkSW5wdXQucHVzaChyKSxhPWEuc2xpY2UoYS5pbmRleE9mKG8pK28ubGVuZ3RoKSxkKz1vLmxlbmd0aCksUmlbc10/KG8/bCh0KS5lbXB0eT0hMTpsKHQpLnVudXNlZFRva2Vucy5wdXNoKHMpLFcocyxvLHQpKTp0Ll9zdHJpY3QmJiFvJiZsKHQpLnVudXNlZFRva2Vucy5wdXNoKHMpO2wodCkuY2hhcnNMZWZ0T3Zlcj1oLWQsYS5sZW5ndGg+MCYmbCh0KS51bnVzZWRJbnB1dC5wdXNoKGEpLGwodCkuYmlnSG91cj09PSEwJiZ0Ll9hW3NvXTw9MTImJnQuX2Fbc29dPjAmJihsKHQpLmJpZ0hvdXI9dm9pZCAwKSx0Ll9hW3NvXT1fdCh0Ll9sb2NhbGUsdC5fYVtzb10sdC5fbWVyaWRpZW0pLHl0KHQpLEsodCl9ZnVuY3Rpb24gX3QodCxlLGkpe3ZhciBvO3JldHVybiBudWxsPT1pP2U6bnVsbCE9dC5tZXJpZGllbUhvdXI/dC5tZXJpZGllbUhvdXIoZSxpKTpudWxsIT10LmlzUE0/KG89dC5pc1BNKGkpLG8mJjEyPmUmJihlKz0xMiksb3x8MTIhPT1lfHwoZT0wKSxlKTplfWZ1bmN0aW9uIHh0KHQpe3ZhciBlLGksbyxuLHM7aWYoMD09PXQuX2YubGVuZ3RoKXJldHVybiBsKHQpLmludmFsaWRGb3JtYXQ9ITAsdm9pZCh0Ll9kPW5ldyBEYXRlKE5hTikpO2ZvcihuPTA7bjx0Ll9mLmxlbmd0aDtuKyspcz0wLGU9cCh7fSx0KSxudWxsIT10Ll91c2VVVEMmJihlLl91c2VVVEM9dC5fdXNlVVRDKSxlLl9mPXQuX2Zbbl0sd3QoZSksdShlKSYmKHMrPWwoZSkuY2hhcnNMZWZ0T3ZlcixzKz0xMCpsKGUpLnVudXNlZFRva2Vucy5sZW5ndGgsbChlKS5zY29yZT1zLChudWxsPT1vfHxvPnMpJiYobz1zLGk9ZSkpO2EodCxpfHxlKX1mdW5jdGlvbiBrdCh0KXtpZighdC5fZCl7dmFyIGU9Qyh0Ll9pKTt0Ll9hPVtlLnllYXIsZS5tb250aCxlLmRheXx8ZS5kYXRlLGUuaG91cixlLm1pbnV0ZSxlLnNlY29uZCxlLm1pbGxpc2Vjb25kXSx5dCh0KX19ZnVuY3Rpb24gTXQodCl7dmFyIGUsaT10Ll9pLHM9dC5fZjtyZXR1cm4gdC5fbG9jYWxlPXQuX2xvY2FsZXx8TSh0Ll9sKSxudWxsPT09aXx8dm9pZCAwPT09cyYmIiI9PT1pP2Moe251bGxJbnB1dDohMH0pOigic3RyaW5nIj09dHlwZW9mIGkmJih0Ll9pPWk9dC5fbG9jYWxlLnByZXBhcnNlKGkpKSxtKGkpP25ldyBmKEsoaSkpOihvKHMpP3h0KHQpOnM/d3QodCk6bihpKT90Ll9kPWk6T3QodCksZT1uZXcgZihLKHQpKSxlLl9uZXh0RGF5JiYoZS5hZGQoMSwiZCIpLGUuX25leHREYXk9dm9pZCAwKSxlKSl9ZnVuY3Rpb24gT3QodCl7dmFyIGk9dC5faTt2b2lkIDA9PT1pP3QuX2Q9bmV3IERhdGU6bihpKT90Ll9kPW5ldyBEYXRlKCtpKToic3RyaW5nIj09dHlwZW9mIGk/aXQodCk6byhpKT8odC5fYT1zKGkuc2xpY2UoMCksZnVuY3Rpb24odCl7cmV0dXJuIHBhcnNlSW50KHQsMTApfSkseXQodCkpOiJvYmplY3QiPT10eXBlb2YgaT9rdCh0KToibnVtYmVyIj09dHlwZW9mIGk/dC5fZD1uZXcgRGF0ZShpKTplLmNyZWF0ZUZyb21JbnB1dEZhbGxiYWNrKHQpfWZ1bmN0aW9uIER0KHQsZSxpLG8sbil7dmFyIHM9e307cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgaSYmKG89aSxpPXZvaWQgMCkscy5faXNBTW9tZW50T2JqZWN0PSEwLHMuX3VzZVVUQz1zLl9pc1VUQz1uLHMuX2w9aSxzLl9pPXQscy5fZj1lLHMuX3N0cmljdD1vLE10KHMpfWZ1bmN0aW9uIEN0KHQsZSxpLG8pe3JldHVybiBEdCh0LGUsaSxvLCExKX1mdW5jdGlvbiBUdCh0LGUpe3ZhciBpLG47aWYoMT09PWUubGVuZ3RoJiZvKGVbMF0pJiYoZT1lWzBdKSwhZS5sZW5ndGgpcmV0dXJuIEN0KCk7Zm9yKGk9ZVswXSxuPTE7bjxlLmxlbmd0aDsrK24pZVtuXVt0XShpKSYmKGk9ZVtuXSk7cmV0dXJuIGl9ZnVuY3Rpb24gRXQoKXt2YXIgdD1bXS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKTtyZXR1cm4gVHQoImlzQmVmb3JlIix0KX1mdW5jdGlvbiBTdCgpe3ZhciB0PVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApO3JldHVybiBUdCgiaXNBZnRlciIsdCl9ZnVuY3Rpb24gUHQodCl7dmFyIGU9Qyh0KSxpPWUueWVhcnx8MCxvPWUucXVhcnRlcnx8MCxuPWUubW9udGh8fDAscz1lLndlZWt8fDAscj1lLmRheXx8MCxhPWUuaG91cnx8MCxoPWUubWludXRlfHwwLGQ9ZS5zZWNvbmR8fDAsbD1lLm1pbGxpc2Vjb25kfHwwO3RoaXMuX21pbGxpc2Vjb25kcz0rbCsxZTMqZCs2ZTQqaCszNmU1KmEsdGhpcy5fZGF5cz0rcis3KnMsdGhpcy5fbW9udGhzPStuKzMqbysxMippLHRoaXMuX2RhdGE9e30sdGhpcy5fbG9jYWxlPU0oKSx0aGlzLl9idWJibGUoKX1mdW5jdGlvbiBJdCh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIFB0fWZ1bmN0aW9uIE50KHQsZSl7Tih0LDAsMCxmdW5jdGlvbigpe3ZhciB0PXRoaXMudXRjT2Zmc2V0KCksaT0iKyI7cmV0dXJuIDA+dCYmKHQ9LXQsaT0iLSIpLGkrSSh+fih0LzYwKSwyKStlK0kofn50JTYwLDIpfSl9ZnVuY3Rpb24genQodCl7dmFyIGU9KHR8fCIiKS5tYXRjaChLaSl8fFtdLGk9ZVtlLmxlbmd0aC0xXXx8W10sbz0oaSsiIikubWF0Y2goX28pfHxbIi0iLDAsMF0sbj0rKDYwKm9bMV0pK3Yob1syXSk7cmV0dXJuIisiPT09b1swXT9uOi1ufWZ1bmN0aW9uIEF0KHQsaSl7dmFyIG8scztyZXR1cm4gaS5faXNVVEM/KG89aS5jbG9uZSgpLHM9KG0odCl8fG4odCk/K3Q6K0N0KHQpKS0rbyxvLl9kLnNldFRpbWUoK28uX2QrcyksZS51cGRhdGVPZmZzZXQobywhMSksbyk6Q3QodCkubG9jYWwoKX1mdW5jdGlvbiBMdCh0KXtyZXR1cm4gMTUqLU1hdGgucm91bmQodC5fZC5nZXRUaW1lem9uZU9mZnNldCgpLzE1KX1mdW5jdGlvbiBCdCh0LGkpe3ZhciBvLG49dGhpcy5fb2Zmc2V0fHwwO3JldHVybiBudWxsIT10Pygic3RyaW5nIj09dHlwZW9mIHQmJih0PXp0KHQpKSxNYXRoLmFicyh0KTwxNiYmKHQ9NjAqdCksIXRoaXMuX2lzVVRDJiZpJiYobz1MdCh0aGlzKSksdGhpcy5fb2Zmc2V0PXQsdGhpcy5faXNVVEM9ITAsbnVsbCE9byYmdGhpcy5hZGQobywibSIpLG4hPT10JiYoIWl8fHRoaXMuX2NoYW5nZUluUHJvZ3Jlc3M/JHQodGhpcyxYdCh0LW4sIm0iKSwxLCExKTp0aGlzLl9jaGFuZ2VJblByb2dyZXNzfHwodGhpcy5fY2hhbmdlSW5Qcm9ncmVzcz0hMCxlLnVwZGF0ZU9mZnNldCh0aGlzLCEwKSx0aGlzLl9jaGFuZ2VJblByb2dyZXNzPW51bGwpKSx0aGlzKTp0aGlzLl9pc1VUQz9uOkx0KHRoaXMpfWZ1bmN0aW9uIEZ0KHQsZSl7cmV0dXJuIG51bGwhPXQ/KCJzdHJpbmciIT10eXBlb2YgdCYmKHQ9LXQpLHRoaXMudXRjT2Zmc2V0KHQsZSksdGhpcyk6LXRoaXMudXRjT2Zmc2V0KCl9ZnVuY3Rpb24gUnQodCl7cmV0dXJuIHRoaXMudXRjT2Zmc2V0KDAsdCl9ZnVuY3Rpb24ganQodCl7cmV0dXJuIHRoaXMuX2lzVVRDJiYodGhpcy51dGNPZmZzZXQoMCx0KSx0aGlzLl9pc1VUQz0hMSx0JiZ0aGlzLnN1YnRyYWN0KEx0KHRoaXMpLCJtIikpLHRoaXN9ZnVuY3Rpb24gSHQoKXtyZXR1cm4gdGhpcy5fdHptP3RoaXMudXRjT2Zmc2V0KHRoaXMuX3R6bSk6InN0cmluZyI9PXR5cGVvZiB0aGlzLl9pJiZ0aGlzLnV0Y09mZnNldCh6dCh0aGlzLl9pKSksdGhpc31mdW5jdGlvbiBZdCh0KXtyZXR1cm4gdD10P0N0KHQpLnV0Y09mZnNldCgpOjAsKHRoaXMudXRjT2Zmc2V0KCktdCklNjA9PT0wfWZ1bmN0aW9uIFd0KCl7cmV0dXJuIHRoaXMudXRjT2Zmc2V0KCk+dGhpcy5jbG9uZSgpLm1vbnRoKDApLnV0Y09mZnNldCgpfHx0aGlzLnV0Y09mZnNldCgpPnRoaXMuY2xvbmUoKS5tb250aCg1KS51dGNPZmZzZXQoKX1mdW5jdGlvbiBHdCgpe2lmKHRoaXMuX2Epe3ZhciB0PXRoaXMuX2lzVVRDP2godGhpcy5fYSk6Q3QodGhpcy5fYSk7cmV0dXJuIHRoaXMuaXNWYWxpZCgpJiZnKHRoaXMuX2EsdC50b0FycmF5KCkpPjB9cmV0dXJuITF9ZnVuY3Rpb24gVXQoKXtyZXR1cm4hdGhpcy5faXNVVEN9ZnVuY3Rpb24gVnQoKXtyZXR1cm4gdGhpcy5faXNVVEN9ZnVuY3Rpb24gcXQoKXtyZXR1cm4gdGhpcy5faXNVVEMmJjA9PT10aGlzLl9vZmZzZXR9ZnVuY3Rpb24gWHQodCxlKXt2YXIgaSxvLG4scz10LGE9bnVsbDtyZXR1cm4gSXQodCk/cz17bXM6dC5fbWlsbGlzZWNvbmRzLGQ6dC5fZGF5cyxNOnQuX21vbnRoc306Im51bWJlciI9PXR5cGVvZiB0PyhzPXt9LGU/c1tlXT10OnMubWlsbGlzZWNvbmRzPXQpOihhPXhvLmV4ZWModCkpPyhpPSItIj09PWFbMV0/LTE6MSxzPXt5OjAsZDp2KGFbbm9dKSppLGg6dihhW3NvXSkqaSxtOnYoYVtyb10pKmksczp2KGFbYW9dKSppLG1zOnYoYVtob10pKml9KTooYT1rby5leGVjKHQpKT8oaT0iLSI9PT1hWzFdPy0xOjEscz17eTpadChhWzJdLGkpLE06WnQoYVszXSxpKSxkOlp0KGFbNF0saSksaDpadChhWzVdLGkpLG06WnQoYVs2XSxpKSxzOlp0KGFbN10saSksdzpadChhWzhdLGkpfSk6bnVsbD09cz9zPXt9OiJvYmplY3QiPT10eXBlb2YgcyYmKCJmcm9tImluIHN8fCJ0byJpbiBzKSYmKG49S3QoQ3Qocy5mcm9tKSxDdChzLnRvKSkscz17fSxzLm1zPW4ubWlsbGlzZWNvbmRzLHMuTT1uLm1vbnRocyksbz1uZXcgUHQocyksSXQodCkmJnIodCwiX2xvY2FsZSIpJiYoby5fbG9jYWxlPXQuX2xvY2FsZSksb31mdW5jdGlvbiBadCh0LGUpe3ZhciBpPXQmJnBhcnNlRmxvYXQodC5yZXBsYWNlKCIsIiwiLiIpKTtyZXR1cm4oaXNOYU4oaSk/MDppKSplfWZ1bmN0aW9uIEp0KHQsZSl7dmFyIGk9e21pbGxpc2Vjb25kczowLG1vbnRoczowfTtyZXR1cm4gaS5tb250aHM9ZS5tb250aCgpLXQubW9udGgoKSsxMiooZS55ZWFyKCktdC55ZWFyKCkpLHQuY2xvbmUoKS5hZGQoaS5tb250aHMsIk0iKS5pc0FmdGVyKGUpJiYtLWkubW9udGhzLGkubWlsbGlzZWNvbmRzPStlLSt0LmNsb25lKCkuYWRkKGkubW9udGhzLCJNIiksaX1mdW5jdGlvbiBLdCh0LGUpe3ZhciBpO3JldHVybiBlPUF0KGUsdCksdC5pc0JlZm9yZShlKT9pPUp0KHQsZSk6KGk9SnQoZSx0KSxpLm1pbGxpc2Vjb25kcz0taS5taWxsaXNlY29uZHMsaS5tb250aHM9LWkubW9udGhzKSxpfWZ1bmN0aW9uIFF0KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKGksbyl7dmFyIG4scztyZXR1cm4gbnVsbD09PW98fGlzTmFOKCtvKXx8KHR0KGUsIm1vbWVudCgpLiIrZSsiKHBlcmlvZCwgbnVtYmVyKSBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIG1vbWVudCgpLiIrZSsiKG51bWJlciwgcGVyaW9kKS4iKSxzPWksaT1vLG89cyksaT0ic3RyaW5nIj09dHlwZW9mIGk/K2k6aSxuPVh0KGksbyksJHQodGhpcyxuLHQpLHRoaXN9fWZ1bmN0aW9uICR0KHQsaSxvLG4pe3ZhciBzPWkuX21pbGxpc2Vjb25kcyxyPWkuX2RheXMsYT1pLl9tb250aHM7bj1udWxsPT1uPyEwOm4scyYmdC5fZC5zZXRUaW1lKCt0Ll9kK3MqbyksciYmUyh0LCJEYXRlIixFKHQsIkRhdGUiKStyKm8pLGEmJlgodCxFKHQsIk1vbnRoIikrYSpvKSxuJiZlLnVwZGF0ZU9mZnNldCh0LHJ8fGEpfWZ1bmN0aW9uIHRlKHQpe3ZhciBlPXR8fEN0KCksaT1BdChlLHRoaXMpLnN0YXJ0T2YoImRheSIpLG89dGhpcy5kaWZmKGksImRheXMiLCEwKSxuPS02Pm8/InNhbWVFbHNlIjotMT5vPyJsYXN0V2VlayI6MD5vPyJsYXN0RGF5IjoxPm8/InNhbWVEYXkiOjI+bz8ibmV4dERheSI6Nz5vPyJuZXh0V2VlayI6InNhbWVFbHNlIjtyZXR1cm4gdGhpcy5mb3JtYXQodGhpcy5sb2NhbGVEYXRhKCkuY2FsZW5kYXIobix0aGlzLEN0KGUpKSl9ZnVuY3Rpb24gZWUoKXtyZXR1cm4gbmV3IGYodGhpcyl9ZnVuY3Rpb24gaWUodCxlKXt2YXIgaTtyZXR1cm4gZT1EKCJ1bmRlZmluZWQiIT10eXBlb2YgZT9lOiJtaWxsaXNlY29uZCIpLCJtaWxsaXNlY29uZCI9PT1lPyh0PW0odCk/dDpDdCh0KSwrdGhpcz4rdCk6KGk9bSh0KT8rdDorQ3QodCksaTwrdGhpcy5jbG9uZSgpLnN0YXJ0T2YoZSkpfWZ1bmN0aW9uIG9lKHQsZSl7dmFyIGk7cmV0dXJuIGU9RCgidW5kZWZpbmVkIiE9dHlwZW9mIGU/ZToibWlsbGlzZWNvbmQiKSwibWlsbGlzZWNvbmQiPT09ZT8odD1tKHQpP3Q6Q3QodCksK3Q+K3RoaXMpOihpPW0odCk/K3Q6K0N0KHQpLCt0aGlzLmNsb25lKCkuZW5kT2YoZSk8aSl9ZnVuY3Rpb24gbmUodCxlLGkpe3JldHVybiB0aGlzLmlzQWZ0ZXIodCxpKSYmdGhpcy5pc0JlZm9yZShlLGkpfWZ1bmN0aW9uIHNlKHQsZSl7dmFyIGk7cmV0dXJuIGU9RChlfHwibWlsbGlzZWNvbmQiKSwibWlsbGlzZWNvbmQiPT09ZT8odD1tKHQpP3Q6Q3QodCksK3RoaXM9PT0rdCk6KGk9K0N0KHQpLCt0aGlzLmNsb25lKCkuc3RhcnRPZihlKTw9aSYmaTw9K3RoaXMuY2xvbmUoKS5lbmRPZihlKSl9ZnVuY3Rpb24gcmUodCl7cmV0dXJuIDA+dD9NYXRoLmNlaWwodCk6TWF0aC5mbG9vcih0KX1mdW5jdGlvbiBhZSh0LGUsaSl7dmFyIG8sbixzPUF0KHQsdGhpcykscj02ZTQqKHMudXRjT2Zmc2V0KCktdGhpcy51dGNPZmZzZXQoKSk7cmV0dXJuIGU9RChlKSwieWVhciI9PT1lfHwibW9udGgiPT09ZXx8InF1YXJ0ZXIiPT09ZT8obj1oZSh0aGlzLHMpLCJxdWFydGVyIj09PWU/bi89MzoieWVhciI9PT1lJiYobi89MTIpKToobz10aGlzLXMsbj0ic2Vjb25kIj09PWU/by8xZTM6Im1pbnV0ZSI9PT1lP28vNmU0OiJob3VyIj09PWU/by8zNmU1OiJkYXkiPT09ZT8oby1yKS84NjRlNToid2VlayI9PT1lPyhvLXIpLzYwNDhlNTpvKSxpP246cmUobil9ZnVuY3Rpb24gaGUodCxlKXt2YXIgaSxvLG49MTIqKGUueWVhcigpLXQueWVhcigpKSsoZS5tb250aCgpLXQubW9udGgoKSkscz10LmNsb25lKCkuYWRkKG4sIm1vbnRocyIpO3JldHVybiAwPmUtcz8oaT10LmNsb25lKCkuYWRkKG4tMSwibW9udGhzIiksbz0oZS1zKS8ocy1pKSk6KGk9dC5jbG9uZSgpLmFkZChuKzEsIm1vbnRocyIpLG89KGUtcykvKGktcykpLC0obitvKX1mdW5jdGlvbiBkZSgpe3JldHVybiB0aGlzLmNsb25lKCkubG9jYWxlKCJlbiIpLmZvcm1hdCgiZGRkIE1NTSBERCBZWVlZIEhIOm1tOnNzIFtHTVRdWloiKX1mdW5jdGlvbiBsZSgpe3ZhciB0PXRoaXMuY2xvbmUoKS51dGMoKTtyZXR1cm4gMDx0LnllYXIoKSYmdC55ZWFyKCk8PTk5OTk/ImZ1bmN0aW9uIj09dHlwZW9mIERhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nP3RoaXMudG9EYXRlKCkudG9JU09TdHJpbmcoKTpMKHQsIllZWVktTU0tRERbVF1ISDptbTpzcy5TU1NbWl0iKTpMKHQsIllZWVlZWS1NTS1ERFtUXUhIOm1tOnNzLlNTU1taXSIpfWZ1bmN0aW9uIHVlKHQpe3ZhciBpPUwodGhpcyx0fHxlLmRlZmF1bHRGb3JtYXQpO3JldHVybiB0aGlzLmxvY2FsZURhdGEoKS5wb3N0Zm9ybWF0KGkpfWZ1bmN0aW9uIGNlKHQsZSl7cmV0dXJuIHRoaXMuaXNWYWxpZCgpP1h0KHt0bzp0aGlzLGZyb206dH0pLmxvY2FsZSh0aGlzLmxvY2FsZSgpKS5odW1hbml6ZSghZSk6dGhpcy5sb2NhbGVEYXRhKCkuaW52YWxpZERhdGUoKX1mdW5jdGlvbiBwZSh0KXtyZXR1cm4gdGhpcy5mcm9tKEN0KCksdCl9ZnVuY3Rpb24gZmUodCxlKXtyZXR1cm4gdGhpcy5pc1ZhbGlkKCk/WHQoe2Zyb206dGhpcyx0bzp0fSkubG9jYWxlKHRoaXMubG9jYWxlKCkpLmh1bWFuaXplKCFlKTp0aGlzLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpfWZ1bmN0aW9uIG1lKHQpe3JldHVybiB0aGlzLnRvKEN0KCksdCl9ZnVuY3Rpb24gdmUodCl7dmFyIGU7cmV0dXJuIHZvaWQgMD09PXQ/dGhpcy5fbG9jYWxlLl9hYmJyOihlPU0odCksbnVsbCE9ZSYmKHRoaXMuX2xvY2FsZT1lKSx0aGlzKX1mdW5jdGlvbiBnZSgpe3JldHVybiB0aGlzLl9sb2NhbGV9ZnVuY3Rpb24geWUodCl7c3dpdGNoKHQ9RCh0KSl7Y2FzZSJ5ZWFyIjp0aGlzLm1vbnRoKDApO2Nhc2UicXVhcnRlciI6Y2FzZSJtb250aCI6dGhpcy5kYXRlKDEpO2Nhc2Uid2VlayI6Y2FzZSJpc29XZWVrIjpjYXNlImRheSI6dGhpcy5ob3VycygwKTtjYXNlImhvdXIiOnRoaXMubWludXRlcygwKTtjYXNlIm1pbnV0ZSI6dGhpcy5zZWNvbmRzKDApO2Nhc2Uic2Vjb25kIjp0aGlzLm1pbGxpc2Vjb25kcygwKX1yZXR1cm4id2VlayI9PT10JiZ0aGlzLndlZWtkYXkoMCksImlzb1dlZWsiPT09dCYmdGhpcy5pc29XZWVrZGF5KDEpLCJxdWFydGVyIj09PXQmJnRoaXMubW9udGgoMypNYXRoLmZsb29yKHRoaXMubW9udGgoKS8zKSksdGhpc31mdW5jdGlvbiBiZSh0KXtyZXR1cm4gdD1EKHQpLHZvaWQgMD09PXR8fCJtaWxsaXNlY29uZCI9PT10P3RoaXM6dGhpcy5zdGFydE9mKHQpLmFkZCgxLCJpc29XZWVrIj09PXQ/IndlZWsiOnQpLnN1YnRyYWN0KDEsIm1zIil9ZnVuY3Rpb24gd2UoKXtyZXR1cm4rdGhpcy5fZC02ZTQqKHRoaXMuX29mZnNldHx8MCl9ZnVuY3Rpb24gX2UoKXtyZXR1cm4gTWF0aC5mbG9vcigrdGhpcy8xZTMpfWZ1bmN0aW9uIHhlKCl7cmV0dXJuIHRoaXMuX29mZnNldD9uZXcgRGF0ZSgrdGhpcyk6dGhpcy5fZH1mdW5jdGlvbiBrZSgpe3ZhciB0PXRoaXM7cmV0dXJuW3QueWVhcigpLHQubW9udGgoKSx0LmRhdGUoKSx0LmhvdXIoKSx0Lm1pbnV0ZSgpLHQuc2Vjb25kKCksdC5taWxsaXNlY29uZCgpXX1mdW5jdGlvbiBNZSgpe3JldHVybiB1KHRoaXMpfWZ1bmN0aW9uIE9lKCl7cmV0dXJuIGEoe30sbCh0aGlzKSl9ZnVuY3Rpb24gRGUoKXtyZXR1cm4gbCh0aGlzKS5vdmVyZmxvd31mdW5jdGlvbiBDZSh0LGUpe04oMCxbdCx0Lmxlbmd0aF0sMCxlKX1mdW5jdGlvbiBUZSh0LGUsaSl7cmV0dXJuIGh0KEN0KFt0LDExLDMxK2UtaV0pLGUsaSkud2Vla31mdW5jdGlvbiBFZSh0KXt2YXIgZT1odCh0aGlzLHRoaXMubG9jYWxlRGF0YSgpLl93ZWVrLmRvdyx0aGlzLmxvY2FsZURhdGEoKS5fd2Vlay5kb3kpLnllYXI7cmV0dXJuIG51bGw9PXQ/ZTp0aGlzLmFkZCh0LWUsInkiKX1mdW5jdGlvbiBTZSh0KXt2YXIgZT1odCh0aGlzLDEsNCkueWVhcjtyZXR1cm4gbnVsbD09dD9lOnRoaXMuYWRkKHQtZSwieSIpfWZ1bmN0aW9uIFBlKCl7cmV0dXJuIFRlKHRoaXMueWVhcigpLDEsNCl9ZnVuY3Rpb24gSWUoKXt2YXIgdD10aGlzLmxvY2FsZURhdGEoKS5fd2VlaztyZXR1cm4gVGUodGhpcy55ZWFyKCksdC5kb3csdC5kb3kpfWZ1bmN0aW9uIE5lKHQpe3JldHVybiBudWxsPT10P01hdGguY2VpbCgodGhpcy5tb250aCgpKzEpLzMpOnRoaXMubW9udGgoMyoodC0xKSt0aGlzLm1vbnRoKCklMyl9ZnVuY3Rpb24gemUodCxlKXtpZigic3RyaW5nIj09dHlwZW9mIHQpaWYoaXNOYU4odCkpe2lmKHQ9ZS53ZWVrZGF5c1BhcnNlKHQpLCJudW1iZXIiIT10eXBlb2YgdClyZXR1cm4gbnVsbH1lbHNlIHQ9cGFyc2VJbnQodCwxMCk7cmV0dXJuIHR9ZnVuY3Rpb24gQWUodCl7cmV0dXJuIHRoaXMuX3dlZWtkYXlzW3QuZGF5KCldfWZ1bmN0aW9uIExlKHQpe3JldHVybiB0aGlzLl93ZWVrZGF5c1Nob3J0W3QuZGF5KCldfWZ1bmN0aW9uIEJlKHQpe3JldHVybiB0aGlzLl93ZWVrZGF5c01pblt0LmRheSgpXX1mdW5jdGlvbiBGZSh0KXt2YXIgZSxpLG87Zm9yKHRoaXMuX3dlZWtkYXlzUGFyc2V8fCh0aGlzLl93ZWVrZGF5c1BhcnNlPVtdKSxlPTA7Nz5lO2UrKylpZih0aGlzLl93ZWVrZGF5c1BhcnNlW2VdfHwoaT1DdChbMmUzLDFdKS5kYXkoZSksbz0iXiIrdGhpcy53ZWVrZGF5cyhpLCIiKSsifF4iK3RoaXMud2Vla2RheXNTaG9ydChpLCIiKSsifF4iK3RoaXMud2Vla2RheXNNaW4oaSwiIiksdGhpcy5fd2Vla2RheXNQYXJzZVtlXT1uZXcgUmVnRXhwKG8ucmVwbGFjZSgiLiIsIiIpLCJpIikpLHRoaXMuX3dlZWtkYXlzUGFyc2VbZV0udGVzdCh0KSlyZXR1cm4gZX1mdW5jdGlvbiBSZSh0KXt2YXIgZT10aGlzLl9pc1VUQz90aGlzLl9kLmdldFVUQ0RheSgpOnRoaXMuX2QuZ2V0RGF5KCk7cmV0dXJuIG51bGwhPXQ/KHQ9emUodCx0aGlzLmxvY2FsZURhdGEoKSksdGhpcy5hZGQodC1lLCJkIikpOmV9ZnVuY3Rpb24gamUodCl7dmFyIGU9KHRoaXMuZGF5KCkrNy10aGlzLmxvY2FsZURhdGEoKS5fd2Vlay5kb3cpJTc7cmV0dXJuIG51bGw9PXQ/ZTp0aGlzLmFkZCh0LWUsImQiKX1mdW5jdGlvbiBIZSh0KXtyZXR1cm4gbnVsbD09dD90aGlzLmRheSgpfHw3OnRoaXMuZGF5KHRoaXMuZGF5KCklNz90OnQtNyl9ZnVuY3Rpb24gWWUodCxlKXtOKHQsMCwwLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLm1lcmlkaWVtKHRoaXMuaG91cnMoKSx0aGlzLm1pbnV0ZXMoKSxlKX0pfWZ1bmN0aW9uIFdlKHQsZSl7cmV0dXJuIGUuX21lcmlkaWVtUGFyc2V9ZnVuY3Rpb24gR2UodCl7cmV0dXJuInAiPT09KHQrIiIpLnRvTG93ZXJDYXNlKCkuY2hhckF0KDApfWZ1bmN0aW9uIFVlKHQsZSxpKXtyZXR1cm4gdD4xMT9pPyJwbSI6IlBNIjppPyJhbSI6IkFNIn1mdW5jdGlvbiBWZSh0KXtOKDAsW3QsM10sMCwibWlsbGlzZWNvbmQiKX1mdW5jdGlvbiBxZSgpe3JldHVybiB0aGlzLl9pc1VUQz8iVVRDIjoiIn1mdW5jdGlvbiBYZSgpe3JldHVybiB0aGlzLl9pc1VUQz8iQ29vcmRpbmF0ZWQgVW5pdmVyc2FsIFRpbWUiOiIifWZ1bmN0aW9uIFplKHQpe3JldHVybiBDdCgxZTMqdCl9ZnVuY3Rpb24gSmUoKXtyZXR1cm4gQ3QuYXBwbHkobnVsbCxhcmd1bWVudHMpLnBhcnNlWm9uZSgpfWZ1bmN0aW9uIEtlKHQsZSxpKXt2YXIgbz10aGlzLl9jYWxlbmRhclt0XTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Ygbz9vLmNhbGwoZSxpKTpvfWZ1bmN0aW9uIFFlKHQpe3ZhciBlPXRoaXMuX2xvbmdEYXRlRm9ybWF0W3RdO3JldHVybiFlJiZ0aGlzLl9sb25nRGF0ZUZvcm1hdFt0LnRvVXBwZXJDYXNlKCldJiYoZT10aGlzLl9sb25nRGF0ZUZvcm1hdFt0LnRvVXBwZXJDYXNlKCldLnJlcGxhY2UoL01NTU18TU18RER8ZGRkZC9nLGZ1bmN0aW9uKHQpe3JldHVybiB0LnNsaWNlKDEpfSksdGhpcy5fbG9uZ0RhdGVGb3JtYXRbdF09ZSksZX1mdW5jdGlvbiAkZSgpe3JldHVybiB0aGlzLl9pbnZhbGlkRGF0ZX1mdW5jdGlvbiB0aSh0KXtyZXR1cm4gdGhpcy5fb3JkaW5hbC5yZXBsYWNlKCIlZCIsdCl9ZnVuY3Rpb24gZWkodCl7cmV0dXJuIHR9ZnVuY3Rpb24gaWkodCxlLGksbyl7dmFyIG49dGhpcy5fcmVsYXRpdmVUaW1lW2ldO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBuP24odCxlLGksbyk6bi5yZXBsYWNlKC8lZC9pLHQpfWZ1bmN0aW9uIG9pKHQsZSl7dmFyIGk9dGhpcy5fcmVsYXRpdmVUaW1lW3Q+MD8iZnV0dXJlIjoicGFzdCJdO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBpP2koZSk6aS5yZXBsYWNlKC8lcy9pLGUpfWZ1bmN0aW9uIG5pKHQpe3ZhciBlLGk7Zm9yKGkgaW4gdCllPXRbaV0sImZ1bmN0aW9uIj09dHlwZW9mIGU/dGhpc1tpXT1lOnRoaXNbIl8iK2ldPWU7dGhpcy5fb3JkaW5hbFBhcnNlTGVuaWVudD1uZXcgUmVnRXhwKHRoaXMuX29yZGluYWxQYXJzZS5zb3VyY2UrInwiKy9cZHsxLDJ9Ly5zb3VyY2UpfWZ1bmN0aW9uIHNpKHQsZSxpLG8pe3ZhciBuPU0oKSxzPWgoKS5zZXQobyxlKTtyZXR1cm4gbltpXShzLHQpfWZ1bmN0aW9uIHJpKHQsZSxpLG8sbil7aWYoIm51bWJlciI9PXR5cGVvZiB0JiYoZT10LHQ9dm9pZCAwKSx0PXR8fCIiLG51bGwhPWUpcmV0dXJuIHNpKHQsZSxpLG4pO3ZhciBzLHI9W107Zm9yKHM9MDtvPnM7cysrKXJbc109c2kodCxzLGksbik7cmV0dXJuIHJ9ZnVuY3Rpb24gYWkodCxlKXtyZXR1cm4gcmkodCxlLCJtb250aHMiLDEyLCJtb250aCIpfWZ1bmN0aW9uIGhpKHQsZSl7cmV0dXJuIHJpKHQsZSwibW9udGhzU2hvcnQiLDEyLCJtb250aCIpfWZ1bmN0aW9uIGRpKHQsZSl7cmV0dXJuIHJpKHQsZSwid2Vla2RheXMiLDcsImRheSIpfWZ1bmN0aW9uIGxpKHQsZSl7cmV0dXJuIHJpKHQsZSwid2Vla2RheXNTaG9ydCIsNywiZGF5Iil9ZnVuY3Rpb24gdWkodCxlKXtyZXR1cm4gcmkodCxlLCJ3ZWVrZGF5c01pbiIsNywiZGF5Iil9ZnVuY3Rpb24gY2koKXt2YXIgdD10aGlzLl9kYXRhO3JldHVybiB0aGlzLl9taWxsaXNlY29uZHM9VW8odGhpcy5fbWlsbGlzZWNvbmRzKSx0aGlzLl9kYXlzPVVvKHRoaXMuX2RheXMpLHRoaXMuX21vbnRocz1Vbyh0aGlzLl9tb250aHMpLHQubWlsbGlzZWNvbmRzPVVvKHQubWlsbGlzZWNvbmRzKSx0LnNlY29uZHM9VW8odC5zZWNvbmRzKSx0Lm1pbnV0ZXM9VW8odC5taW51dGVzKSx0LmhvdXJzPVVvKHQuaG91cnMpLHQubW9udGhzPVVvKHQubW9udGhzKSx0LnllYXJzPVVvKHQueWVhcnMpLHRoaXN9ZnVuY3Rpb24gcGkodCxlLGksbyl7dmFyIG49WHQoZSxpKTtyZXR1cm4gdC5fbWlsbGlzZWNvbmRzKz1vKm4uX21pbGxpc2Vjb25kcyx0Ll9kYXlzKz1vKm4uX2RheXMsdC5fbW9udGhzKz1vKm4uX21vbnRocyx0Ll9idWJibGUoKX1mdW5jdGlvbiBmaSh0LGUpe3JldHVybiBwaSh0aGlzLHQsZSwxKX1mdW5jdGlvbiBtaSh0LGUpe3JldHVybiBwaSh0aGlzLHQsZSwtMSl9ZnVuY3Rpb24gdmkoKXt2YXIgdCxlLGksbz10aGlzLl9taWxsaXNlY29uZHMsbj10aGlzLl9kYXlzLHM9dGhpcy5fbW9udGhzLHI9dGhpcy5fZGF0YSxhPTA7cmV0dXJuIHIubWlsbGlzZWNvbmRzPW8lMWUzLHQ9cmUoby8xZTMpLHIuc2Vjb25kcz10JTYwLGU9cmUodC82MCksci5taW51dGVzPWUlNjAsaT1yZShlLzYwKSxyLmhvdXJzPWklMjQsbis9cmUoaS8yNCksYT1yZShnaShuKSksbi09cmUoeWkoYSkpLHMrPXJlKG4vMzApLG4lPTMwLGErPXJlKHMvMTIpLHMlPTEyLHIuZGF5cz1uLHIubW9udGhzPXMsci55ZWFycz1hLHRoaXN9ZnVuY3Rpb24gZ2kodCl7cmV0dXJuIDQwMCp0LzE0NjA5N31mdW5jdGlvbiB5aSh0KXtyZXR1cm4gMTQ2MDk3KnQvNDAwfWZ1bmN0aW9uIGJpKHQpe3ZhciBlLGksbz10aGlzLl9taWxsaXNlY29uZHM7aWYodD1EKHQpLCJtb250aCI9PT10fHwieWVhciI9PT10KXJldHVybiBlPXRoaXMuX2RheXMrby84NjRlNSxpPXRoaXMuX21vbnRocysxMipnaShlKSwibW9udGgiPT09dD9pOmkvMTI7c3dpdGNoKGU9dGhpcy5fZGF5cytNYXRoLnJvdW5kKHlpKHRoaXMuX21vbnRocy8xMikpLHQpe2Nhc2Uid2VlayI6cmV0dXJuIGUvNytvLzYwNDhlNTtjYXNlImRheSI6cmV0dXJuIGUrby84NjRlNTtjYXNlImhvdXIiOnJldHVybiAyNCplK28vMzZlNTtjYXNlIm1pbnV0ZSI6cmV0dXJuIDE0NDAqZStvLzZlNDtjYXNlInNlY29uZCI6cmV0dXJuIDg2NDAwKmUrby8xZTM7Y2FzZSJtaWxsaXNlY29uZCI6cmV0dXJuIE1hdGguZmxvb3IoODY0ZTUqZSkrbztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5rbm93biB1bml0ICIrdCl9fWZ1bmN0aW9uIHdpKCl7cmV0dXJuIHRoaXMuX21pbGxpc2Vjb25kcys4NjRlNSp0aGlzLl9kYXlzK3RoaXMuX21vbnRocyUxMioyNTkyZTYrMzE1MzZlNip2KHRoaXMuX21vbnRocy8xMil9ZnVuY3Rpb24gX2kodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXModCl9fWZ1bmN0aW9uIHhpKHQpe3JldHVybiB0PUQodCksdGhpc1t0KyJzIl0oKX1mdW5jdGlvbiBraSh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZGF0YVt0XX19ZnVuY3Rpb24gTWkoKXtyZXR1cm4gcmUodGhpcy5kYXlzKCkvNyl9ZnVuY3Rpb24gT2kodCxlLGksbyxuKXtyZXR1cm4gbi5yZWxhdGl2ZVRpbWUoZXx8MSwhIWksdCxvKX1mdW5jdGlvbiBEaSh0LGUsaSl7dmFyIG89WHQodCkuYWJzKCksbj1obihvLmFzKCJzIikpLHM9aG4oby5hcygibSIpKSxyPWhuKG8uYXMoImgiKSksYT1obihvLmFzKCJkIikpLGg9aG4oby5hcygiTSIpKSxkPWhuKG8uYXMoInkiKSksbD1uPGRuLnMmJlsicyIsbl18fDE9PT1zJiZbIm0iXXx8czxkbi5tJiZbIm1tIixzXXx8MT09PXImJlsiaCJdfHxyPGRuLmgmJlsiaGgiLHJdfHwxPT09YSYmWyJkIl18fGE8ZG4uZCYmWyJkZCIsYV18fDE9PT1oJiZbIk0iXXx8aDxkbi5NJiZbIk1NIixoXXx8MT09PWQmJlsieSJdfHxbInl5IixkXTtyZXR1cm4gbFsyXT1lLGxbM109K3Q+MCxsWzRdPWksT2kuYXBwbHkobnVsbCxsKX1mdW5jdGlvbiBDaSh0LGUpe3JldHVybiB2b2lkIDA9PT1kblt0XT8hMTp2b2lkIDA9PT1lP2RuW3RdOihkblt0XT1lLCEwKX1mdW5jdGlvbiBUaSh0KXt2YXIgZT10aGlzLmxvY2FsZURhdGEoKSxpPURpKHRoaXMsIXQsZSk7cmV0dXJuIHQmJihpPWUucGFzdEZ1dHVyZSgrdGhpcyxpKSksZS5wb3N0Zm9ybWF0KGkpfWZ1bmN0aW9uIEVpKCl7dmFyIHQ9bG4odGhpcy55ZWFycygpKSxlPWxuKHRoaXMubW9udGhzKCkpLGk9bG4odGhpcy5kYXlzKCkpLG89bG4odGhpcy5ob3VycygpKSxuPWxuKHRoaXMubWludXRlcygpKSxzPWxuKHRoaXMuc2Vjb25kcygpK3RoaXMubWlsbGlzZWNvbmRzKCkvMWUzKSxyPXRoaXMuYXNTZWNvbmRzKCk7cmV0dXJuIHI/KDA+cj8iLSI6IiIpKyJQIisodD90KyJZIjoiIikrKGU/ZSsiTSI6IiIpKyhpP2krIkQiOiIiKSsob3x8bnx8cz8iVCI6IiIpKyhvP28rIkgiOiIiKSsobj9uKyJNIjoiIikrKHM/cysiUyI6IiIpOiJQMEQifXZhciBTaSxQaSxJaT1lLm1vbWVudFByb3BlcnRpZXM9W10sTmk9ITEsemk9e30sQWk9e30sTGk9LyhcW1teXFtdKlxdKXwoXFwpPyhNb3xNTT9NP00/fERvfERERG98REQ/RD9EP3xkZGQ/ZD98ZG8/fHdbb3x3XT98V1tvfFddP3xRfFlZWVlZWXxZWVlZWXxZWVlZfFlZfGdnKGdnZz8pP3xHRyhHR0c/KT98ZXxFfGF8QXxoaD98SEg/fG1tP3xzcz98U3sxLDR9fHh8WHx6ej98Wlo/fC4pL2csQmk9LyhcW1teXFtdKlxdKXwoXFwpPyhMVFN8TFR8TEw/TD9MP3xsezEsNH0pL2csRmk9e30sUmk9e30samk9L1xkLyxIaT0vXGRcZC8sWWk9L1xkezN9LyxXaT0vXGR7NH0vLEdpPS9bKy1dP1xkezZ9LyxVaT0vXGRcZD8vLFZpPS9cZHsxLDN9LyxxaT0vXGR7MSw0fS8sWGk9L1srLV0/XGR7MSw2fS8sWmk9L1xkKy8sSmk9L1srLV0/XGQrLyxLaT0vWnxbKy1dXGRcZDo/XGRcZC9naSxRaT0vWystXT9cZCsoXC5cZHsxLDN9KT8vLCRpPS9bMC05XSpbJ2Etelx1MDBBMC1cdTA1RkZcdTA3MDAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdK3xbXHUwNjAwLVx1MDZGRlwvXSsoXHMqP1tcdTA2MDAtXHUwNkZGXSspezEsMn0vaSx0bz17fSxlbz17fSxpbz0wLG9vPTEsbm89Mixzbz0zLHJvPTQsYW89NSxobz02O04oIk0iLFsiTU0iLDJdLCJNbyIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tb250aCgpKzF9KSxOKCJNTU0iLDAsMCxmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkubW9udGhzU2hvcnQodGhpcyx0KX0pLE4oIk1NTU0iLDAsMCxmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkubW9udGhzKHRoaXMsdCl9KSxPKCJtb250aCIsIk0iKSxGKCJNIixVaSksRigiTU0iLFVpLEhpKSxGKCJNTU0iLCRpKSxGKCJNTU1NIiwkaSksSChbIk0iLCJNTSJdLGZ1bmN0aW9uKHQsZSl7ZVtvb109dih0KS0xOw0KfSksSChbIk1NTSIsIk1NTU0iXSxmdW5jdGlvbih0LGUsaSxvKXt2YXIgbj1pLl9sb2NhbGUubW9udGhzUGFyc2UodCxvLGkuX3N0cmljdCk7bnVsbCE9bj9lW29vXT1uOmwoaSkuaW52YWxpZE1vbnRoPXR9KTt2YXIgbG89IkphbnVhcnlfRmVicnVhcnlfTWFyY2hfQXByaWxfTWF5X0p1bmVfSnVseV9BdWd1c3RfU2VwdGVtYmVyX09jdG9iZXJfTm92ZW1iZXJfRGVjZW1iZXIiLnNwbGl0KCJfIiksdW89Ikphbl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjIi5zcGxpdCgiXyIpLGNvPXt9O2Uuc3VwcHJlc3NEZXByZWNhdGlvbldhcm5pbmdzPSExO3ZhciBwbz0vXlxzKig/OlsrLV1cZHs2fXxcZHs0fSktKD86KFxkXGQtXGRcZCl8KFdcZFxkJCl8KFdcZFxkLVxkKXwoXGRcZFxkKSkoKFR8ICkoXGRcZCg6XGRcZCg6XGRcZChcLlxkKyk/KT8pPyk/KFtcK1wtXVxkXGQoPzo6P1xkXGQpP3xccypaKT8pPyQvLGZvPVtbIllZWVlZWS1NTS1ERCIsL1srLV1cZHs2fS1cZHsyfS1cZHsyfS9dLFsiWVlZWS1NTS1ERCIsL1xkezR9LVxkezJ9LVxkezJ9L10sWyJHR0dHLVtXXVdXLUUiLC9cZHs0fS1XXGR7Mn0tXGQvXSxbIkdHR0ctW1ddV1ciLC9cZHs0fS1XXGR7Mn0vXSxbIllZWVktREREIiwvXGR7NH0tXGR7M30vXV0sbW89W1siSEg6bW06c3MuU1NTUyIsLyhUfCApXGRcZDpcZFxkOlxkXGRcLlxkKy9dLFsiSEg6bW06c3MiLC8oVHwgKVxkXGQ6XGRcZDpcZFxkL10sWyJISDptbSIsLyhUfCApXGRcZDpcZFxkL10sWyJISCIsLyhUfCApXGRcZC9dXSx2bz0vXlwvP0RhdGVcKChcLT9cZCspL2k7ZS5jcmVhdGVGcm9tSW5wdXRGYWxsYmFjaz0kKCJtb21lbnQgY29uc3RydWN0aW9uIGZhbGxzIGJhY2sgdG8ganMgRGF0ZS4gVGhpcyBpcyBkaXNjb3VyYWdlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHVwY29taW5nIG1ham9yIHJlbGVhc2UuIFBsZWFzZSByZWZlciB0byBodHRwczovL2dpdGh1Yi5jb20vbW9tZW50L21vbWVudC9pc3N1ZXMvMTQwNyBmb3IgbW9yZSBpbmZvLiIsZnVuY3Rpb24odCl7dC5fZD1uZXcgRGF0ZSh0Ll9pKyh0Ll91c2VVVEM/IiBVVEMiOiIiKSl9KSxOKDAsWyJZWSIsMl0sMCxmdW5jdGlvbigpe3JldHVybiB0aGlzLnllYXIoKSUxMDB9KSxOKDAsWyJZWVlZIiw0XSwwLCJ5ZWFyIiksTigwLFsiWVlZWVkiLDVdLDAsInllYXIiKSxOKDAsWyJZWVlZWVkiLDYsITBdLDAsInllYXIiKSxPKCJ5ZWFyIiwieSIpLEYoIlkiLEppKSxGKCJZWSIsVWksSGkpLEYoIllZWVkiLHFpLFdpKSxGKCJZWVlZWSIsWGksR2kpLEYoIllZWVlZWSIsWGksR2kpLEgoWyJZWVlZIiwiWVlZWVkiLCJZWVlZWVkiXSxpbyksSCgiWVkiLGZ1bmN0aW9uKHQsaSl7aVtpb109ZS5wYXJzZVR3b0RpZ2l0WWVhcih0KX0pLGUucGFyc2VUd29EaWdpdFllYXI9ZnVuY3Rpb24odCl7cmV0dXJuIHYodCkrKHYodCk+Njg/MTkwMDoyZTMpfTt2YXIgZ289VCgiRnVsbFllYXIiLCExKTtOKCJ3IixbInd3IiwyXSwid28iLCJ3ZWVrIiksTigiVyIsWyJXVyIsMl0sIldvIiwiaXNvV2VlayIpLE8oIndlZWsiLCJ3IiksTygiaXNvV2VlayIsIlciKSxGKCJ3IixVaSksRigid3ciLFVpLEhpKSxGKCJXIixVaSksRigiV1ciLFVpLEhpKSxZKFsidyIsInd3IiwiVyIsIldXIl0sZnVuY3Rpb24odCxlLGksbyl7ZVtvLnN1YnN0cigwLDEpXT12KHQpfSk7dmFyIHlvPXtkb3c6MCxkb3k6Nn07TigiREREIixbIkREREQiLDNdLCJERERvIiwiZGF5T2ZZZWFyIiksTygiZGF5T2ZZZWFyIiwiREREIiksRigiREREIixWaSksRigiRERERCIsWWkpLEgoWyJEREQiLCJEREREIl0sZnVuY3Rpb24odCxlLGkpe2kuX2RheU9mWWVhcj12KHQpfSksZS5JU09fODYwMT1mdW5jdGlvbigpe307dmFyIGJvPSQoIm1vbWVudCgpLm1pbiBpcyBkZXByZWNhdGVkLCB1c2UgbW9tZW50Lm1pbiBpbnN0ZWFkLiBodHRwczovL2dpdGh1Yi5jb20vbW9tZW50L21vbWVudC9pc3N1ZXMvMTU0OCIsZnVuY3Rpb24oKXt2YXIgdD1DdC5hcHBseShudWxsLGFyZ3VtZW50cyk7cmV0dXJuIHRoaXM+dD90aGlzOnR9KSx3bz0kKCJtb21lbnQoKS5tYXggaXMgZGVwcmVjYXRlZCwgdXNlIG1vbWVudC5tYXggaW5zdGVhZC4gaHR0cHM6Ly9naXRodWIuY29tL21vbWVudC9tb21lbnQvaXNzdWVzLzE1NDgiLGZ1bmN0aW9uKCl7dmFyIHQ9Q3QuYXBwbHkobnVsbCxhcmd1bWVudHMpO3JldHVybiB0PnRoaXM/dGhpczp0fSk7TnQoIloiLCI6IiksTnQoIlpaIiwiIiksRigiWiIsS2kpLEYoIlpaIixLaSksSChbIloiLCJaWiJdLGZ1bmN0aW9uKHQsZSxpKXtpLl91c2VVVEM9ITAsaS5fdHptPXp0KHQpfSk7dmFyIF9vPS8oW1wrXC1dfFxkXGQpL2dpO2UudXBkYXRlT2Zmc2V0PWZ1bmN0aW9uKCl7fTt2YXIgeG89LyhcLSk/KD86KFxkKilcLik/KFxkKylcOihcZCspKD86XDooXGQrKVwuPyhcZHszfSk/KT8vLGtvPS9eKC0pP1AoPzooPzooWzAtOSwuXSopWSk/KD86KFswLTksLl0qKU0pPyg/OihbMC05LC5dKilEKT8oPzpUKD86KFswLTksLl0qKUgpPyg/OihbMC05LC5dKilNKT8oPzooWzAtOSwuXSopUyk/KT98KFswLTksLl0qKVcpJC87WHQuZm49UHQucHJvdG90eXBlO3ZhciBNbz1RdCgxLCJhZGQiKSxPbz1RdCgtMSwic3VidHJhY3QiKTtlLmRlZmF1bHRGb3JtYXQ9IllZWVktTU0tRERUSEg6bW06c3NaIjt2YXIgRG89JCgibW9tZW50KCkubGFuZygpIGlzIGRlcHJlY2F0ZWQuIEluc3RlYWQsIHVzZSBtb21lbnQoKS5sb2NhbGVEYXRhKCkgdG8gZ2V0IHRoZSBsYW5ndWFnZSBjb25maWd1cmF0aW9uLiBVc2UgbW9tZW50KCkubG9jYWxlKCkgdG8gY2hhbmdlIGxhbmd1YWdlcy4iLGZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10P3RoaXMubG9jYWxlRGF0YSgpOnRoaXMubG9jYWxlKHQpfSk7TigwLFsiZ2ciLDJdLDAsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53ZWVrWWVhcigpJTEwMH0pLE4oMCxbIkdHIiwyXSwwLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNvV2Vla1llYXIoKSUxMDB9KSxDZSgiZ2dnZyIsIndlZWtZZWFyIiksQ2UoImdnZ2dnIiwid2Vla1llYXIiKSxDZSgiR0dHRyIsImlzb1dlZWtZZWFyIiksQ2UoIkdHR0dHIiwiaXNvV2Vla1llYXIiKSxPKCJ3ZWVrWWVhciIsImdnIiksTygiaXNvV2Vla1llYXIiLCJHRyIpLEYoIkciLEppKSxGKCJnIixKaSksRigiR0ciLFVpLEhpKSxGKCJnZyIsVWksSGkpLEYoIkdHR0ciLHFpLFdpKSxGKCJnZ2dnIixxaSxXaSksRigiR0dHR0ciLFhpLEdpKSxGKCJnZ2dnZyIsWGksR2kpLFkoWyJnZ2dnIiwiZ2dnZ2ciLCJHR0dHIiwiR0dHR0ciXSxmdW5jdGlvbih0LGUsaSxvKXtlW28uc3Vic3RyKDAsMildPXYodCl9KSxZKFsiZ2ciLCJHRyJdLGZ1bmN0aW9uKHQsaSxvLG4pe2lbbl09ZS5wYXJzZVR3b0RpZ2l0WWVhcih0KX0pLE4oIlEiLDAsMCwicXVhcnRlciIpLE8oInF1YXJ0ZXIiLCJRIiksRigiUSIsamkpLEgoIlEiLGZ1bmN0aW9uKHQsZSl7ZVtvb109Myoodih0KS0xKX0pLE4oIkQiLFsiREQiLDJdLCJEbyIsImRhdGUiKSxPKCJkYXRlIiwiRCIpLEYoIkQiLFVpKSxGKCJERCIsVWksSGkpLEYoIkRvIixmdW5jdGlvbih0LGUpe3JldHVybiB0P2UuX29yZGluYWxQYXJzZTplLl9vcmRpbmFsUGFyc2VMZW5pZW50fSksSChbIkQiLCJERCJdLG5vKSxIKCJEbyIsZnVuY3Rpb24odCxlKXtlW25vXT12KHQubWF0Y2goVWkpWzBdLDEwKX0pO3ZhciBDbz1UKCJEYXRlIiwhMCk7TigiZCIsMCwiZG8iLCJkYXkiKSxOKCJkZCIsMCwwLGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmxvY2FsZURhdGEoKS53ZWVrZGF5c01pbih0aGlzLHQpfSksTigiZGRkIiwwLDAsZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLndlZWtkYXlzU2hvcnQodGhpcyx0KX0pLE4oImRkZGQiLDAsMCxmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkud2Vla2RheXModGhpcyx0KX0pLE4oImUiLDAsMCwid2Vla2RheSIpLE4oIkUiLDAsMCwiaXNvV2Vla2RheSIpLE8oImRheSIsImQiKSxPKCJ3ZWVrZGF5IiwiZSIpLE8oImlzb1dlZWtkYXkiLCJFIiksRigiZCIsVWkpLEYoImUiLFVpKSxGKCJFIixVaSksRigiZGQiLCRpKSxGKCJkZGQiLCRpKSxGKCJkZGRkIiwkaSksWShbImRkIiwiZGRkIiwiZGRkZCJdLGZ1bmN0aW9uKHQsZSxpKXt2YXIgbz1pLl9sb2NhbGUud2Vla2RheXNQYXJzZSh0KTtudWxsIT1vP2UuZD1vOmwoaSkuaW52YWxpZFdlZWtkYXk9dH0pLFkoWyJkIiwiZSIsIkUiXSxmdW5jdGlvbih0LGUsaSxvKXtlW29dPXYodCl9KTt2YXIgVG89IlN1bmRheV9Nb25kYXlfVHVlc2RheV9XZWRuZXNkYXlfVGh1cnNkYXlfRnJpZGF5X1NhdHVyZGF5Ii5zcGxpdCgiXyIpLEVvPSJTdW5fTW9uX1R1ZV9XZWRfVGh1X0ZyaV9TYXQiLnNwbGl0KCJfIiksU289IlN1X01vX1R1X1dlX1RoX0ZyX1NhIi5zcGxpdCgiXyIpO04oIkgiLFsiSEgiLDJdLDAsImhvdXIiKSxOKCJoIixbImhoIiwyXSwwLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaG91cnMoKSUxMnx8MTJ9KSxZZSgiYSIsITApLFllKCJBIiwhMSksTygiaG91ciIsImgiKSxGKCJhIixXZSksRigiQSIsV2UpLEYoIkgiLFVpKSxGKCJoIixVaSksRigiSEgiLFVpLEhpKSxGKCJoaCIsVWksSGkpLEgoWyJIIiwiSEgiXSxzbyksSChbImEiLCJBIl0sZnVuY3Rpb24odCxlLGkpe2kuX2lzUG09aS5fbG9jYWxlLmlzUE0odCksaS5fbWVyaWRpZW09dH0pLEgoWyJoIiwiaGgiXSxmdW5jdGlvbih0LGUsaSl7ZVtzb109dih0KSxsKGkpLmJpZ0hvdXI9ITB9KTt2YXIgUG89L1thcF1cLj9tP1wuPy9pLElvPVQoIkhvdXJzIiwhMCk7TigibSIsWyJtbSIsMl0sMCwibWludXRlIiksTygibWludXRlIiwibSIpLEYoIm0iLFVpKSxGKCJtbSIsVWksSGkpLEgoWyJtIiwibW0iXSxybyk7dmFyIE5vPVQoIk1pbnV0ZXMiLCExKTtOKCJzIixbInNzIiwyXSwwLCJzZWNvbmQiKSxPKCJzZWNvbmQiLCJzIiksRigicyIsVWkpLEYoInNzIixVaSxIaSksSChbInMiLCJzcyJdLGFvKTt2YXIgem89VCgiU2Vjb25kcyIsITEpO04oIlMiLDAsMCxmdW5jdGlvbigpe3JldHVybn5+KHRoaXMubWlsbGlzZWNvbmQoKS8xMDApfSksTigwLFsiU1MiLDJdLDAsZnVuY3Rpb24oKXtyZXR1cm5+fih0aGlzLm1pbGxpc2Vjb25kKCkvMTApfSksVmUoIlNTUyIpLFZlKCJTU1NTIiksTygibWlsbGlzZWNvbmQiLCJtcyIpLEYoIlMiLFZpLGppKSxGKCJTUyIsVmksSGkpLEYoIlNTUyIsVmksWWkpLEYoIlNTU1MiLFppKSxIKFsiUyIsIlNTIiwiU1NTIiwiU1NTUyJdLGZ1bmN0aW9uKHQsZSl7ZVtob109digxZTMqKCIwLiIrdCkpfSk7dmFyIEFvPVQoIk1pbGxpc2Vjb25kcyIsITEpO04oInoiLDAsMCwiem9uZUFiYnIiKSxOKCJ6eiIsMCwwLCJ6b25lTmFtZSIpO3ZhciBMbz1mLnByb3RvdHlwZTtMby5hZGQ9TW8sTG8uY2FsZW5kYXI9dGUsTG8uY2xvbmU9ZWUsTG8uZGlmZj1hZSxMby5lbmRPZj1iZSxMby5mb3JtYXQ9dWUsTG8uZnJvbT1jZSxMby5mcm9tTm93PXBlLExvLnRvPWZlLExvLnRvTm93PW1lLExvLmdldD1QLExvLmludmFsaWRBdD1EZSxMby5pc0FmdGVyPWllLExvLmlzQmVmb3JlPW9lLExvLmlzQmV0d2Vlbj1uZSxMby5pc1NhbWU9c2UsTG8uaXNWYWxpZD1NZSxMby5sYW5nPURvLExvLmxvY2FsZT12ZSxMby5sb2NhbGVEYXRhPWdlLExvLm1heD13byxMby5taW49Ym8sTG8ucGFyc2luZ0ZsYWdzPU9lLExvLnNldD1QLExvLnN0YXJ0T2Y9eWUsTG8uc3VidHJhY3Q9T28sTG8udG9BcnJheT1rZSxMby50b0RhdGU9eGUsTG8udG9JU09TdHJpbmc9bGUsTG8udG9KU09OPWxlLExvLnRvU3RyaW5nPWRlLExvLnVuaXg9X2UsTG8udmFsdWVPZj13ZSxMby55ZWFyPWdvLExvLmlzTGVhcFllYXI9YXQsTG8ud2Vla1llYXI9RWUsTG8uaXNvV2Vla1llYXI9U2UsTG8ucXVhcnRlcj1Mby5xdWFydGVycz1OZSxMby5tb250aD1aLExvLmRheXNJbk1vbnRoPUosTG8ud2Vlaz1Mby53ZWVrcz1jdCxMby5pc29XZWVrPUxvLmlzb1dlZWtzPXB0LExvLndlZWtzSW5ZZWFyPUllLExvLmlzb1dlZWtzSW5ZZWFyPVBlLExvLmRhdGU9Q28sTG8uZGF5PUxvLmRheXM9UmUsTG8ud2Vla2RheT1qZSxMby5pc29XZWVrZGF5PUhlLExvLmRheU9mWWVhcj1tdCxMby5ob3VyPUxvLmhvdXJzPUlvLExvLm1pbnV0ZT1Mby5taW51dGVzPU5vLExvLnNlY29uZD1Mby5zZWNvbmRzPXpvLExvLm1pbGxpc2Vjb25kPUxvLm1pbGxpc2Vjb25kcz1BbyxMby51dGNPZmZzZXQ9QnQsTG8udXRjPVJ0LExvLmxvY2FsPWp0LExvLnBhcnNlWm9uZT1IdCxMby5oYXNBbGlnbmVkSG91ck9mZnNldD1ZdCxMby5pc0RTVD1XdCxMby5pc0RTVFNoaWZ0ZWQ9R3QsTG8uaXNMb2NhbD1VdCxMby5pc1V0Y09mZnNldD1WdCxMby5pc1V0Yz1xdCxMby5pc1VUQz1xdCxMby56b25lQWJicj1xZSxMby56b25lTmFtZT1YZSxMby5kYXRlcz0kKCJkYXRlcyBhY2Nlc3NvciBpcyBkZXByZWNhdGVkLiBVc2UgZGF0ZSBpbnN0ZWFkLiIsQ28pLExvLm1vbnRocz0kKCJtb250aHMgYWNjZXNzb3IgaXMgZGVwcmVjYXRlZC4gVXNlIG1vbnRoIGluc3RlYWQiLFopLExvLnllYXJzPSQoInllYXJzIGFjY2Vzc29yIGlzIGRlcHJlY2F0ZWQuIFVzZSB5ZWFyIGluc3RlYWQiLGdvKSxMby56b25lPSQoIm1vbWVudCgpLnpvbmUgaXMgZGVwcmVjYXRlZCwgdXNlIG1vbWVudCgpLnV0Y09mZnNldCBpbnN0ZWFkLiBodHRwczovL2dpdGh1Yi5jb20vbW9tZW50L21vbWVudC9pc3N1ZXMvMTc3OSIsRnQpO3ZhciBCbz1MbyxGbz17c2FtZURheToiW1RvZGF5IGF0XSBMVCIsbmV4dERheToiW1RvbW9ycm93IGF0XSBMVCIsbmV4dFdlZWs6ImRkZGQgW2F0XSBMVCIsbGFzdERheToiW1llc3RlcmRheSBhdF0gTFQiLGxhc3RXZWVrOiJbTGFzdF0gZGRkZCBbYXRdIExUIixzYW1lRWxzZToiTCJ9LFJvPXtMVFM6Img6bW06c3MgQSIsTFQ6Img6bW0gQSIsTDoiTU0vREQvWVlZWSIsTEw6Ik1NTU0gRCwgWVlZWSIsTExMOiJNTU1NIEQsIFlZWVkgTFQiLExMTEw6ImRkZGQsIE1NTU0gRCwgWVlZWSBMVCJ9LGpvPSJJbnZhbGlkIGRhdGUiLEhvPSIlZCIsWW89L1xkezEsMn0vLFdvPXtmdXR1cmU6ImluICVzIixwYXN0OiIlcyBhZ28iLHM6ImEgZmV3IHNlY29uZHMiLG06ImEgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoiYW4gaG91ciIsaGg6IiVkIGhvdXJzIixkOiJhIGRheSIsZGQ6IiVkIGRheXMiLE06ImEgbW9udGgiLE1NOiIlZCBtb250aHMiLHk6ImEgeWVhciIseXk6IiVkIHllYXJzIn0sR289eS5wcm90b3R5cGU7R28uX2NhbGVuZGFyPUZvLEdvLmNhbGVuZGFyPUtlLEdvLl9sb25nRGF0ZUZvcm1hdD1SbyxHby5sb25nRGF0ZUZvcm1hdD1RZSxHby5faW52YWxpZERhdGU9am8sR28uaW52YWxpZERhdGU9JGUsR28uX29yZGluYWw9SG8sR28ub3JkaW5hbD10aSxHby5fb3JkaW5hbFBhcnNlPVlvLEdvLnByZXBhcnNlPWVpLEdvLnBvc3Rmb3JtYXQ9ZWksR28uX3JlbGF0aXZlVGltZT1XbyxHby5yZWxhdGl2ZVRpbWU9aWksR28ucGFzdEZ1dHVyZT1vaSxHby5zZXQ9bmksR28ubW9udGhzPVUsR28uX21vbnRocz1sbyxHby5tb250aHNTaG9ydD1WLEdvLl9tb250aHNTaG9ydD11byxHby5tb250aHNQYXJzZT1xLEdvLndlZWs9ZHQsR28uX3dlZWs9eW8sR28uZmlyc3REYXlPZlllYXI9dXQsR28uZmlyc3REYXlPZldlZWs9bHQsR28ud2Vla2RheXM9QWUsR28uX3dlZWtkYXlzPVRvLEdvLndlZWtkYXlzTWluPUJlLEdvLl93ZWVrZGF5c01pbj1TbyxHby53ZWVrZGF5c1Nob3J0PUxlLEdvLl93ZWVrZGF5c1Nob3J0PUVvLEdvLndlZWtkYXlzUGFyc2U9RmUsR28uaXNQTT1HZSxHby5fbWVyaWRpZW1QYXJzZT1QbyxHby5tZXJpZGllbT1VZSx4KCJlbiIse29yZGluYWxQYXJzZTovXGR7MSwyfSh0aHxzdHxuZHxyZCkvLG9yZGluYWw6ZnVuY3Rpb24odCl7dmFyIGU9dCUxMCxpPTE9PT12KHQlMTAwLzEwKT8idGgiOjE9PT1lPyJzdCI6Mj09PWU/Im5kIjozPT09ZT8icmQiOiJ0aCI7cmV0dXJuIHQraX19KSxlLmxhbmc9JCgibW9tZW50LmxhbmcgaXMgZGVwcmVjYXRlZC4gVXNlIG1vbWVudC5sb2NhbGUgaW5zdGVhZC4iLHgpLGUubGFuZ0RhdGE9JCgibW9tZW50LmxhbmdEYXRhIGlzIGRlcHJlY2F0ZWQuIFVzZSBtb21lbnQubG9jYWxlRGF0YSBpbnN0ZWFkLiIsTSk7dmFyIFVvPU1hdGguYWJzLFZvPV9pKCJtcyIpLHFvPV9pKCJzIiksWG89X2koIm0iKSxabz1faSgiaCIpLEpvPV9pKCJkIiksS289X2koInciKSxRbz1faSgiTSIpLCRvPV9pKCJ5IiksdG49a2koIm1pbGxpc2Vjb25kcyIpLGVuPWtpKCJzZWNvbmRzIiksb249a2koIm1pbnV0ZXMiKSxubj1raSgiaG91cnMiKSxzbj1raSgiZGF5cyIpLHJuPWtpKCJtb250aHMiKSxhbj1raSgieWVhcnMiKSxobj1NYXRoLnJvdW5kLGRuPXtzOjQ1LG06NDUsaDoyMixkOjI2LE06MTF9LGxuPU1hdGguYWJzLHVuPVB0LnByb3RvdHlwZTt1bi5hYnM9Y2ksdW4uYWRkPWZpLHVuLnN1YnRyYWN0PW1pLHVuLmFzPWJpLHVuLmFzTWlsbGlzZWNvbmRzPVZvLHVuLmFzU2Vjb25kcz1xbyx1bi5hc01pbnV0ZXM9WG8sdW4uYXNIb3Vycz1abyx1bi5hc0RheXM9Sm8sdW4uYXNXZWVrcz1Lbyx1bi5hc01vbnRocz1Rbyx1bi5hc1llYXJzPSRvLHVuLnZhbHVlT2Y9d2ksdW4uX2J1YmJsZT12aSx1bi5nZXQ9eGksdW4ubWlsbGlzZWNvbmRzPXRuLHVuLnNlY29uZHM9ZW4sdW4ubWludXRlcz1vbix1bi5ob3Vycz1ubix1bi5kYXlzPXNuLHVuLndlZWtzPU1pLHVuLm1vbnRocz1ybix1bi55ZWFycz1hbix1bi5odW1hbml6ZT1UaSx1bi50b0lTT1N0cmluZz1FaSx1bi50b1N0cmluZz1FaSx1bi50b0pTT049RWksdW4ubG9jYWxlPXZlLHVuLmxvY2FsZURhdGE9Z2UsdW4udG9Jc29TdHJpbmc9JCgidG9Jc29TdHJpbmcoKSBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIHRvSVNPU3RyaW5nKCkgaW5zdGVhZCAobm90aWNlIHRoZSBjYXBpdGFscykiLEVpKSx1bi5sYW5nPURvLE4oIlgiLDAsMCwidW5peCIpLE4oIngiLDAsMCwidmFsdWVPZiIpLEYoIngiLEppKSxGKCJYIixRaSksSCgiWCIsZnVuY3Rpb24odCxlLGkpe2kuX2Q9bmV3IERhdGUoMWUzKnBhcnNlRmxvYXQodCwxMCkpfSksSCgieCIsZnVuY3Rpb24odCxlLGkpe2kuX2Q9bmV3IERhdGUodih0KSl9KSxlLnZlcnNpb249IjIuMTAuMyIsaShDdCksZS5mbj1CbyxlLm1pbj1FdCxlLm1heD1TdCxlLnV0Yz1oLGUudW5peD1aZSxlLm1vbnRocz1haSxlLmlzRGF0ZT1uLGUubG9jYWxlPXgsZS5pbnZhbGlkPWMsZS5kdXJhdGlvbj1YdCxlLmlzTW9tZW50PW0sZS53ZWVrZGF5cz1kaSxlLnBhcnNlWm9uZT1KZSxlLmxvY2FsZURhdGE9TSxlLmlzRHVyYXRpb249SXQsZS5tb250aHNTaG9ydD1oaSxlLndlZWtkYXlzTWluPXVpLGUuZGVmaW5lTG9jYWxlPWssZS53ZWVrZGF5c1Nob3J0PWxpLGUubm9ybWFsaXplVW5pdHM9RCxlLnJlbGF0aXZlVGltZVRocmVzaG9sZD1DaTt2YXIgY249ZTtyZXR1cm4gY259KX0pLmNhbGwoZSxpKDEwKSh0KSl9LGZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiB0LndlYnBhY2tQb2x5ZmlsbHx8KHQuZGVwcmVjYXRlPWZ1bmN0aW9uKCl7fSx0LnBhdGhzPVtdLHQuY2hpbGRyZW49W10sdC53ZWJwYWNrUG9seWZpbGw9MSksdH19LGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gaSh0KXt0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBmaW5kIG1vZHVsZSAnIit0KyInLiIpfWkua2V5cz1mdW5jdGlvbigpe3JldHVybltdfSxpLnJlc29sdmU9aSx0LmV4cG9ydHM9aSxpLmlkPTExfSxmdW5jdGlvbih0LGUpeyhmdW5jdGlvbihlKXtmdW5jdGlvbiBpKHQsZSxpKXt2YXIgbz1lJiZpfHwwLG49MDtmb3IoZT1lfHxbXSx0LnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvWzAtOWEtZl17Mn0vZyxmdW5jdGlvbih0KXsxNj5uJiYoZVtvK24rK109dVt0XSl9KTsxNj5uOyllW28rbisrXT0wO3JldHVybiBlfWZ1bmN0aW9uIG8odCxlKXt2YXIgaT1lfHwwLG89bDtyZXR1cm4gb1t0W2krK11dK29bdFtpKytdXStvW3RbaSsrXV0rb1t0W2krK11dKyItIitvW3RbaSsrXV0rb1t0W2krK11dKyItIitvW3RbaSsrXV0rb1t0W2krK11dKyItIitvW3RbaSsrXV0rb1t0W2krK11dKyItIitvW3RbaSsrXV0rb1t0W2krK11dK29bdFtpKytdXStvW3RbaSsrXV0rb1t0W2krK11dK29bdFtpKytdXX1mdW5jdGlvbiBuKHQsZSxpKXt2YXIgbj1lJiZpfHwwLHM9ZXx8W107dD10fHx7fTt2YXIgcj12b2lkIDAhPT10LmNsb2Nrc2VxP3QuY2xvY2tzZXE6bSxhPXZvaWQgMCE9PXQubXNlY3M/dC5tc2VjczoobmV3IERhdGUpLmdldFRpbWUoKSxoPXZvaWQgMCE9PXQubnNlY3M/dC5uc2VjczpnKzEsZD1hLXYrKGgtZykvMWU0O2lmKDA+ZCYmdm9pZCAwPT09dC5jbG9ja3NlcSYmKHI9cisxJjE2MzgzKSwoMD5kfHxhPnYpJiZ2b2lkIDA9PT10Lm5zZWNzJiYoaD0wKSxoPj0xZTQpdGhyb3cgbmV3IEVycm9yKCJ1dWlkLnYxKCk6IENhbid0IGNyZWF0ZSBtb3JlIHRoYW4gMTBNIHV1aWRzL3NlYyIpO3Y9YSxnPWgsbT1yLGErPTEyMjE5MjkyOGU1O3ZhciBsPSgxZTQqKDI2ODQzNTQ1NSZhKStoKSU0Mjk0OTY3Mjk2O3NbbisrXT1sPj4+MjQmMjU1LHNbbisrXT1sPj4+MTYmMjU1LHNbbisrXT1sPj4+OCYyNTUsc1tuKytdPTI1NSZsO3ZhciB1PWEvNDI5NDk2NzI5NioxZTQmMjY4NDM1NDU1O3NbbisrXT11Pj4+OCYyNTUsc1tuKytdPTI1NSZ1LHNbbisrXT11Pj4+MjQmMTV8MTYsc1tuKytdPXU+Pj4xNiYyNTUsc1tuKytdPXI+Pj44fDEyOCxzW24rK109MjU1JnI7Zm9yKHZhciBjPXQubm9kZXx8ZixwPTA7Nj5wO3ArKylzW24rcF09Y1twXTtyZXR1cm4gZT9lOm8ocyl9ZnVuY3Rpb24gcyh0LGUsaSl7dmFyIG49ZSYmaXx8MDsic3RyaW5nIj09dHlwZW9mIHQmJihlPSJiaW5hcnkiPT10P25ldyBBcnJheSgxNik6bnVsbCx0PW51bGwpLHQ9dHx8e307dmFyIHM9dC5yYW5kb218fCh0LnJuZ3x8cikoKTtpZihzWzZdPTE1JnNbNl18NjQsc1s4XT02MyZzWzhdfDEyOCxlKWZvcih2YXIgYT0wOzE2PmE7YSsrKWVbbithXT1zW2FdO3JldHVybiBlfHxvKHMpfXZhciByLGE9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OiJ1bmRlZmluZWQiIT10eXBlb2YgZT9lOm51bGw7aWYoYSYmYS5jcnlwdG8mJmNyeXB0by5nZXRSYW5kb21WYWx1ZXMpe3ZhciBoPW5ldyBVaW50OEFycmF5KDE2KTtyPWZ1bmN0aW9uKCl7cmV0dXJuIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMoaCksaH19aWYoIXIpe3ZhciBkPW5ldyBBcnJheSgxNik7cj1mdW5jdGlvbigpe2Zvcih2YXIgdCxlPTA7MTY+ZTtlKyspMD09PSgzJmUpJiYodD00Mjk0OTY3Mjk2Kk1hdGgucmFuZG9tKCkpLGRbZV09dD4+PigoMyZlKTw8MykmMjU1O3JldHVybiBkfX1mb3IodmFyIGw9W10sdT17fSxjPTA7MjU2PmM7YysrKWxbY109KGMrMjU2KS50b1N0cmluZygxNikuc3Vic3RyKDEpLHVbbFtjXV09Yzt2YXIgcD1yKCksZj1bMXxwWzBdLHBbMV0scFsyXSxwWzNdLHBbNF0scFs1XV0sbT0xNjM4MyYocFs2XTw8OHxwWzddKSx2PTAsZz0wLHk9czt5LnYxPW4seS52ND1zLHkucGFyc2U9aSx5LnVucGFyc2U9byx0LmV4cG9ydHM9eX0pLmNhbGwoZSxmdW5jdGlvbigpe3JldHVybiB0aGlzfSgpKX0sZnVuY3Rpb24odCxlKXtlLnByZXBhcmVFbGVtZW50cz1mdW5jdGlvbih0KXtmb3IodmFyIGUgaW4gdCl0Lmhhc093blByb3BlcnR5KGUpJiYodFtlXS5yZWR1bmRhbnQ9dFtlXS51c2VkLHRbZV0udXNlZD1bXSl9LGUuY2xlYW51cEVsZW1lbnRzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZSBpbiB0KWlmKHQuaGFzT3duUHJvcGVydHkoZSkmJnRbZV0ucmVkdW5kYW50KXtmb3IodmFyIGk9MDtpPHRbZV0ucmVkdW5kYW50Lmxlbmd0aDtpKyspdFtlXS5yZWR1bmRhbnRbaV0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0W2VdLnJlZHVuZGFudFtpXSk7dFtlXS5yZWR1bmRhbnQ9W119fSxlLmdldFNWR0VsZW1lbnQ9ZnVuY3Rpb24odCxlLGkpe3ZhciBvO3JldHVybiBlLmhhc093blByb3BlcnR5KHQpP2VbdF0ucmVkdW5kYW50Lmxlbmd0aD4wPyhvPWVbdF0ucmVkdW5kYW50WzBdLGVbdF0ucmVkdW5kYW50LnNoaWZ0KCkpOihvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHQpLGkuYXBwZW5kQ2hpbGQobykpOihvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHQpLGVbdF09e3VzZWQ6W10scmVkdW5kYW50OltdfSxpLmFwcGVuZENoaWxkKG8pKSxlW3RdLnVzZWQucHVzaChvKSxvfSxlLmdldERPTUVsZW1lbnQ9ZnVuY3Rpb24odCxlLGksbyl7dmFyIG47cmV0dXJuIGUuaGFzT3duUHJvcGVydHkodCk/ZVt0XS5yZWR1bmRhbnQubGVuZ3RoPjA/KG49ZVt0XS5yZWR1bmRhbnRbMF0sZVt0XS5yZWR1bmRhbnQuc2hpZnQoKSk6KG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0KSx2b2lkIDAhPT1vP2kuaW5zZXJ0QmVmb3JlKG4sbyk6aS5hcHBlbmRDaGlsZChuKSk6KG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0KSxlW3RdPXt1c2VkOltdLHJlZHVuZGFudDpbXX0sdm9pZCAwIT09bz9pLmluc2VydEJlZm9yZShuLG8pOmkuYXBwZW5kQ2hpbGQobikpLGVbdF0udXNlZC5wdXNoKG4pLG59LGUuZHJhd1BvaW50PWZ1bmN0aW9uKHQsaSxvLG4scyxyKXt2YXIgYTtpZigiY2lyY2xlIj09by5zdHlsZT8oYT1lLmdldFNWR0VsZW1lbnQoImNpcmNsZSIsbixzKSxhLnNldEF0dHJpYnV0ZU5TKG51bGwsImN4Iix0KSxhLnNldEF0dHJpYnV0ZU5TKG51bGwsImN5IixpKSxhLnNldEF0dHJpYnV0ZU5TKG51bGwsInIiLC41Km8uc2l6ZSkpOihhPWUuZ2V0U1ZHRWxlbWVudCgicmVjdCIsbixzKSxhLnNldEF0dHJpYnV0ZU5TKG51bGwsIngiLHQtLjUqby5zaXplKSxhLnNldEF0dHJpYnV0ZU5TKG51bGwsInkiLGktLjUqby5zaXplKSxhLnNldEF0dHJpYnV0ZU5TKG51bGwsIndpZHRoIixvLnNpemUpLGEuc2V0QXR0cmlidXRlTlMobnVsbCwiaGVpZ2h0IixvLnNpemUpKSx2b2lkIDAhPT1vLnN0eWxlJiZhLnNldEF0dHJpYnV0ZU5TKG51bGwsInN0eWxlIixvLnN0eWxlKSxhLnNldEF0dHJpYnV0ZU5TKG51bGwsImNsYXNzIixvLmNsYXNzTmFtZSsiIHZpcy1wb2ludCIpLHIpe3ZhciBoPWUuZ2V0U1ZHRWxlbWVudCgidGV4dCIsbixzKTtyLnhPZmZzZXQmJih0Kz1yLnhPZmZzZXQpLHIueU9mZnNldCYmKGkrPXIueU9mZnNldCksci5jb250ZW50JiYoaC50ZXh0Q29udGVudD1yLmNvbnRlbnQpLHIuY2xhc3NOYW1lJiZoLnNldEF0dHJpYnV0ZU5TKG51bGwsImNsYXNzIixyLmNsYXNzTmFtZSsiIHZpcy1sYWJlbCIpLGguc2V0QXR0cmlidXRlTlMobnVsbCwieCIsdCksaC5zZXRBdHRyaWJ1dGVOUyhudWxsLCJ5IixpKX1yZXR1cm4gYX0sZS5kcmF3QmFyPWZ1bmN0aW9uKHQsaSxvLG4scyxyLGEsaCl7aWYoMCE9bil7MD5uJiYobio9LTEsaS09bik7dmFyIGQ9ZS5nZXRTVkdFbGVtZW50KCJyZWN0IixyLGEpO2Quc2V0QXR0cmlidXRlTlMobnVsbCwieCIsdC0uNSpvKSxkLnNldEF0dHJpYnV0ZU5TKG51bGwsInkiLGkpLGQuc2V0QXR0cmlidXRlTlMobnVsbCwid2lkdGgiLG8pLGQuc2V0QXR0cmlidXRlTlMobnVsbCwiaGVpZ2h0IixuKSxkLnNldEF0dHJpYnV0ZU5TKG51bGwsImNsYXNzIixzKSxoJiZkLnNldEF0dHJpYnV0ZU5TKG51bGwsInN0eWxlIixoKX19fSxmdW5jdGlvbih0LGUsaSl7ZnVuY3Rpb24gbyh0LGUpe2lmKHQmJiFBcnJheS5pc0FycmF5KHQpJiYoZT10LHQ9bnVsbCksdGhpcy5fb3B0aW9ucz1lfHx7fSx0aGlzLl9kYXRhPXt9LHRoaXMubGVuZ3RoPTAsdGhpcy5fZmllbGRJZD10aGlzLl9vcHRpb25zLmZpZWxkSWR8fCJpZCIsdGhpcy5fdHlwZT17fSx0aGlzLl9vcHRpb25zLnR5cGUpZm9yKHZhciBpIGluIHRoaXMuX29wdGlvbnMudHlwZSlpZih0aGlzLl9vcHRpb25zLnR5cGUuaGFzT3duUHJvcGVydHkoaSkpe3ZhciBvPXRoaXMuX29wdGlvbnMudHlwZVtpXTsiRGF0ZSI9PW98fCJJU09EYXRlIj09b3x8IkFTUERhdGUiPT1vP3RoaXMuX3R5cGVbaV09IkRhdGUiOnRoaXMuX3R5cGVbaV09b31pZih0aGlzLl9vcHRpb25zLmNvbnZlcnQpdGhyb3cgbmV3IEVycm9yKCdPcHRpb24gImNvbnZlcnQiIGlzIGRlcHJlY2F0ZWQuIFVzZSAidHlwZSIgaW5zdGVhZC4nKTt0aGlzLl9zdWJzY3JpYmVycz17fSx0JiZ0aGlzLmFkZCh0KSx0aGlzLnNldE9wdGlvbnMoZSl9dmFyIG49aSg3KSxzPWkoMTUpO28ucHJvdG90eXBlLnNldE9wdGlvbnM9ZnVuY3Rpb24odCl7dCYmdm9pZCAwIT09dC5xdWV1ZSYmKHQucXVldWU9PT0hMT90aGlzLl9xdWV1ZSYmKHRoaXMuX3F1ZXVlLmRlc3Ryb3koKSxkZWxldGUgdGhpcy5fcXVldWUpOih0aGlzLl9xdWV1ZXx8KHRoaXMuX3F1ZXVlPXMuZXh0ZW5kKHRoaXMse3JlcGxhY2U6WyJhZGQiLCJ1cGRhdGUiLCJyZW1vdmUiXX0pKSwib2JqZWN0Ij09dHlwZW9mIHQucXVldWUmJnRoaXMuX3F1ZXVlLnNldE9wdGlvbnModC5xdWV1ZSkpKX0sby5wcm90b3R5cGUub249ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLl9zdWJzY3JpYmVyc1t0XTtpfHwoaT1bXSx0aGlzLl9zdWJzY3JpYmVyc1t0XT1pKSxpLnB1c2goe2NhbGxiYWNrOmV9KX0sby5wcm90b3R5cGUuc3Vic2NyaWJlPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJEYXRhU2V0LnN1YnNjcmliZSBpcyBkZXByZWNhdGVkLiBVc2UgRGF0YVNldC5vbiBpbnN0ZWFkLiIpfSxvLnByb3RvdHlwZS5vZmY9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLl9zdWJzY3JpYmVyc1t0XTtpJiYodGhpcy5fc3Vic2NyaWJlcnNbdF09aS5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIHQuY2FsbGJhY2shPWV9KSl9LG8ucHJvdG90eXBlLnVuc3Vic2NyaWJlPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJEYXRhU2V0LnVuc3Vic2NyaWJlIGlzIGRlcHJlY2F0ZWQuIFVzZSBEYXRhU2V0Lm9mZiBpbnN0ZWFkLiIpfSxvLnByb3RvdHlwZS5fdHJpZ2dlcj1mdW5jdGlvbih0LGUsaSl7aWYoIioiPT10KXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHRyaWdnZXIgZXZlbnQgKiIpO3ZhciBvPVtdO3QgaW4gdGhpcy5fc3Vic2NyaWJlcnMmJihvPW8uY29uY2F0KHRoaXMuX3N1YnNjcmliZXJzW3RdKSksIioiaW4gdGhpcy5fc3Vic2NyaWJlcnMmJihvPW8uY29uY2F0KHRoaXMuX3N1YnNjcmliZXJzWyIqIl0pKTtmb3IodmFyIG49MDtuPG8ubGVuZ3RoO24rKyl7dmFyIHM9b1tuXTtzLmNhbGxiYWNrJiZzLmNhbGxiYWNrKHQsZSxpfHxudWxsKX19LG8ucHJvdG90eXBlLmFkZD1mdW5jdGlvbih0LGUpe3ZhciBpLG89W10sbj10aGlzO2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKHZhciBzPTAscj10Lmxlbmd0aDtyPnM7cysrKWk9bi5fYWRkSXRlbSh0W3NdKSxvLnB1c2goaSk7ZWxzZXtpZighKHQgaW5zdGFuY2VvZiBPYmplY3QpKXRocm93IG5ldyBFcnJvcigiVW5rbm93biBkYXRhVHlwZSIpO2k9bi5fYWRkSXRlbSh0KSxvLnB1c2goaSl9cmV0dXJuIG8ubGVuZ3RoJiZ0aGlzLl90cmlnZ2VyKCJhZGQiLHtpdGVtczpvfSxlKSxvfSxvLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24odCxlKXt2YXIgaT1bXSxvPVtdLG49W10scz10aGlzLHI9cy5fZmllbGRJZCxhPWZ1bmN0aW9uKHQpe3ZhciBlPXRbcl07cy5fZGF0YVtlXT8oZT1zLl91cGRhdGVJdGVtKHQpLG8ucHVzaChlKSxuLnB1c2godCkpOihlPXMuX2FkZEl0ZW0odCksaS5wdXNoKGUpKX07aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IodmFyIGg9MCxkPXQubGVuZ3RoO2Q+aDtoKyspYSh0W2hdKTtlbHNle2lmKCEodCBpbnN0YW5jZW9mIE9iamVjdCkpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIGRhdGFUeXBlIik7YSh0KX1yZXR1cm4gaS5sZW5ndGgmJnRoaXMuX3RyaWdnZXIoImFkZCIse2l0ZW1zOml9LGUpLG8ubGVuZ3RoJiZ0aGlzLl90cmlnZ2VyKCJ1cGRhdGUiLHtpdGVtczpvLGRhdGE6bn0sZSksaS5jb25jYXQobyl9LG8ucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgZSxpLG8scz10aGlzLHI9bi5nZXRUeXBlKGFyZ3VtZW50c1swXSk7IlN0cmluZyI9PXJ8fCJOdW1iZXIiPT1yPyhlPWFyZ3VtZW50c1swXSxvPWFyZ3VtZW50c1sxXSk6IkFycmF5Ij09cj8oaT1hcmd1bWVudHNbMF0sbz1hcmd1bWVudHNbMV0pOm89YXJndW1lbnRzWzBdO3ZhciBhO2lmKG8mJm8ucmV0dXJuVHlwZSl7dmFyIGg9WyJBcnJheSIsIk9iamVjdCJdO2E9LTE9PWguaW5kZXhPZihvLnJldHVyblR5cGUpPyJBcnJheSI6by5yZXR1cm5UeXBlfWVsc2UgYT0iQXJyYXkiO3ZhciBkLGwsdSxjLHA9byYmby50eXBlfHx0aGlzLl9vcHRpb25zLnR5cGUsZj1vJiZvLmZpbHRlcixtPVtdO2lmKHZvaWQgMCE9ZSlkPXMuX2dldEl0ZW0oZSxwKSxmJiYhZihkKSYmKGQ9bnVsbCk7ZWxzZSBpZih2b2lkIDAhPWkpZm9yKHU9MCxjPWkubGVuZ3RoO2M+dTt1KyspZD1zLl9nZXRJdGVtKGlbdV0scCksKCFmfHxmKGQpKSYmbS5wdXNoKGQpO2Vsc2UgZm9yKGwgaW4gdGhpcy5fZGF0YSl0aGlzLl9kYXRhLmhhc093blByb3BlcnR5KGwpJiYoZD1zLl9nZXRJdGVtKGwscCksKCFmfHxmKGQpKSYmbS5wdXNoKGQpKTtpZihvJiZvLm9yZGVyJiZ2b2lkIDA9PWUmJnRoaXMuX3NvcnQobSxvLm9yZGVyKSxvJiZvLmZpZWxkcyl7dmFyIHY9by5maWVsZHM7aWYodm9pZCAwIT1lKWQ9dGhpcy5fZmlsdGVyRmllbGRzKGQsdik7ZWxzZSBmb3IodT0wLGM9bS5sZW5ndGg7Yz51O3UrKyltW3VdPXRoaXMuX2ZpbHRlckZpZWxkcyhtW3VdLHYpfWlmKCJPYmplY3QiPT1hKXt2YXIgZz17fTtmb3IodT0wO3U8bS5sZW5ndGg7dSsrKWdbbVt1XS5pZF09bVt1XTtyZXR1cm4gZ31yZXR1cm4gdm9pZCAwIT1lP2Q6bX0sby5wcm90b3R5cGUuZ2V0SWRzPWZ1bmN0aW9uKHQpe3ZhciBlLGksbyxuLHMscj10aGlzLl9kYXRhLGE9dCYmdC5maWx0ZXIsaD10JiZ0Lm9yZGVyLGQ9dCYmdC50eXBlfHx0aGlzLl9vcHRpb25zLnR5cGUsbD1bXTtpZihhKWlmKGgpe3M9W107Zm9yKG8gaW4gcilyLmhhc093blByb3BlcnR5KG8pJiYobj10aGlzLl9nZXRJdGVtKG8sZCksYShuKSYmcy5wdXNoKG4pKTtmb3IodGhpcy5fc29ydChzLGgpLGU9MCxpPXMubGVuZ3RoO2k+ZTtlKyspbFtlXT1zW2VdW3RoaXMuX2ZpZWxkSWRdfWVsc2UgZm9yKG8gaW4gcilyLmhhc093blByb3BlcnR5KG8pJiYobj10aGlzLl9nZXRJdGVtKG8sZCksYShuKSYmbC5wdXNoKG5bdGhpcy5fZmllbGRJZF0pKTtlbHNlIGlmKGgpe3M9W107Zm9yKG8gaW4gcilyLmhhc093blByb3BlcnR5KG8pJiZzLnB1c2gocltvXSk7Zm9yKHRoaXMuX3NvcnQocyxoKSxlPTAsaT1zLmxlbmd0aDtpPmU7ZSsrKWxbZV09c1tlXVt0aGlzLl9maWVsZElkXX1lbHNlIGZvcihvIGluIHIpci5oYXNPd25Qcm9wZXJ0eShvKSYmKG49cltvXSxsLnB1c2goblt0aGlzLl9maWVsZElkXSkpO3JldHVybiBsfSxvLnByb3RvdHlwZS5nZXREYXRhU2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LG8ucHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rpb24odCxlKXt2YXIgaSxvLG49ZSYmZS5maWx0ZXIscz1lJiZlLnR5cGV8fHRoaXMuX29wdGlvbnMudHlwZSxyPXRoaXMuX2RhdGE7aWYoZSYmZS5vcmRlcilmb3IodmFyIGE9dGhpcy5nZXQoZSksaD0wLGQ9YS5sZW5ndGg7ZD5oO2grKylpPWFbaF0sbz1pW3RoaXMuX2ZpZWxkSWRdLHQoaSxvKTtlbHNlIGZvcihvIGluIHIpci5oYXNPd25Qcm9wZXJ0eShvKSYmKGk9dGhpcy5fZ2V0SXRlbShvLHMpLCghbnx8bihpKSkmJnQoaSxvKSl9LG8ucHJvdG90eXBlLm1hcD1mdW5jdGlvbih0LGUpe3ZhciBpLG89ZSYmZS5maWx0ZXIsbj1lJiZlLnR5cGV8fHRoaXMuX29wdGlvbnMudHlwZSxzPVtdLHI9dGhpcy5fZGF0YTtmb3IodmFyIGEgaW4gcilyLmhhc093blByb3BlcnR5KGEpJiYoaT10aGlzLl9nZXRJdGVtKGEsbiksKCFvfHxvKGkpKSYmcy5wdXNoKHQoaSxhKSkpO3JldHVybiBlJiZlLm9yZGVyJiZ0aGlzLl9zb3J0KHMsZS5vcmRlciksc30sby5wcm90b3R5cGUuX2ZpbHRlckZpZWxkcz1mdW5jdGlvbih0LGUpe2lmKCF0KXJldHVybiB0O3ZhciBpPXt9O2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKHZhciBvIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShvKSYmLTEhPWUuaW5kZXhPZihvKSYmKGlbb109dFtvXSk7ZWxzZSBmb3IodmFyIG8gaW4gdCl0Lmhhc093blByb3BlcnR5KG8pJiZlLmhhc093blByb3BlcnR5KG8pJiYoaVtlW29dXT10W29dKTtyZXR1cm4gaX0sby5wcm90b3R5cGUuX3NvcnQ9ZnVuY3Rpb24odCxlKXtpZihuLmlzU3RyaW5nKGUpKXt2YXIgaT1lO3Quc29ydChmdW5jdGlvbih0LGUpe3ZhciBvPXRbaV0sbj1lW2ldO3JldHVybiBvPm4/MTpuPm8/LTE6MH0pfWVsc2V7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiT3JkZXIgbXVzdCBiZSBhIGZ1bmN0aW9uIG9yIGEgc3RyaW5nIik7dC5zb3J0KGUpfX0sby5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKHQsZSl7dmFyIGksbyxuLHM9W107aWYoQXJyYXkuaXNBcnJheSh0KSlmb3IoaT0wLG89dC5sZW5ndGg7bz5pO2krKyluPXRoaXMuX3JlbW92ZSh0W2ldKSxudWxsIT1uJiZzLnB1c2gobik7ZWxzZSBuPXRoaXMuX3JlbW92ZSh0KSxudWxsIT1uJiZzLnB1c2gobik7cmV0dXJuIHMubGVuZ3RoJiZ0aGlzLl90cmlnZ2VyKCJyZW1vdmUiLHtpdGVtczpzfSxlKSxzfSxvLnByb3RvdHlwZS5fcmVtb3ZlPWZ1bmN0aW9uKHQpe2lmKG4uaXNOdW1iZXIodCl8fG4uaXNTdHJpbmcodCkpe2lmKHRoaXMuX2RhdGFbdF0pcmV0dXJuIGRlbGV0ZSB0aGlzLl9kYXRhW3RdLHRoaXMubGVuZ3RoLS0sdH1lbHNlIGlmKHQgaW5zdGFuY2VvZiBPYmplY3Qpe3ZhciBlPXRbdGhpcy5fZmllbGRJZF07aWYoZSYmdGhpcy5fZGF0YVtlXSlyZXR1cm4gZGVsZXRlIHRoaXMuX2RhdGFbZV0sdGhpcy5sZW5ndGgtLSxlfXJldHVybiBudWxsfSxvLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbih0KXt2YXIgZT1PYmplY3Qua2V5cyh0aGlzLl9kYXRhKTtyZXR1cm4gdGhpcy5fZGF0YT17fSx0aGlzLmxlbmd0aD0wLHRoaXMuX3RyaWdnZXIoInJlbW92ZSIse2l0ZW1zOmV9LHQpLGV9LG8ucHJvdG90eXBlLm1heD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9kYXRhLGk9bnVsbCxvPW51bGw7Zm9yKHZhciBuIGluIGUpaWYoZS5oYXNPd25Qcm9wZXJ0eShuKSl7dmFyIHM9ZVtuXSxyPXNbdF07bnVsbCE9ciYmKCFpfHxyPm8pJiYoaT1zLG89cil9cmV0dXJuIGl9LG8ucHJvdG90eXBlLm1pbj1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9kYXRhLGk9bnVsbCxvPW51bGw7Zm9yKHZhciBuIGluIGUpaWYoZS5oYXNPd25Qcm9wZXJ0eShuKSl7dmFyIHM9ZVtuXSxyPXNbdF07bnVsbCE9ciYmKCFpfHxvPnIpJiYoaT1zLG89cil9cmV0dXJuIGl9LG8ucHJvdG90eXBlLmRpc3RpbmN0PWZ1bmN0aW9uKHQpe3ZhciBlLGk9dGhpcy5fZGF0YSxvPVtdLHM9dGhpcy5fb3B0aW9ucy50eXBlJiZ0aGlzLl9vcHRpb25zLnR5cGVbdF18fG51bGwscj0wO2Zvcih2YXIgYSBpbiBpKWlmKGkuaGFzT3duUHJvcGVydHkoYSkpe3ZhciBoPWlbYV0sZD1oW3RdLGw9ITE7Zm9yKGU9MDtyPmU7ZSsrKWlmKG9bZV09PWQpe2w9ITA7YnJlYWt9bHx8dm9pZCAwPT09ZHx8KG9bcl09ZCxyKyspfWlmKHMpZm9yKGU9MDtlPG8ubGVuZ3RoO2UrKylvW2VdPW4uY29udmVydChvW2VdLHMpO3JldHVybiBvfSxvLnByb3RvdHlwZS5fYWRkSXRlbT1mdW5jdGlvbih0KXt2YXIgZT10W3RoaXMuX2ZpZWxkSWRdO2lmKHZvaWQgMCE9ZSl7aWYodGhpcy5fZGF0YVtlXSl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBhZGQgaXRlbTogaXRlbSB3aXRoIGlkICIrZSsiIGFscmVhZHkgZXhpc3RzIil9ZWxzZSBlPW4ucmFuZG9tVVVJRCgpLHRbdGhpcy5fZmllbGRJZF09ZTt2YXIgaT17fTtmb3IodmFyIG8gaW4gdClpZih0Lmhhc093blByb3BlcnR5KG8pKXt2YXIgcz10aGlzLl90eXBlW29dO2lbb109bi5jb252ZXJ0KHRbb10scyl9cmV0dXJuIHRoaXMuX2RhdGFbZV09aSx0aGlzLmxlbmd0aCsrLGV9LG8ucHJvdG90eXBlLl9nZXRJdGVtPWZ1bmN0aW9uKHQsZSl7dmFyIGksbyxzPXRoaXMuX2RhdGFbdF07aWYoIXMpcmV0dXJuIG51bGw7dmFyIHI9e307aWYoZSlmb3IoaSBpbiBzKXMuaGFzT3duUHJvcGVydHkoaSkmJihvPXNbaV0scltpXT1uLmNvbnZlcnQobyxlW2ldKSk7ZWxzZSBmb3IoaSBpbiBzKXMuaGFzT3duUHJvcGVydHkoaSkmJihvPXNbaV0scltpXT1vKTtyZXR1cm4gcn0sby5wcm90b3R5cGUuX3VwZGF0ZUl0ZW09ZnVuY3Rpb24odCl7dmFyIGU9dFt0aGlzLl9maWVsZElkXTtpZih2b2lkIDA9PWUpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgdXBkYXRlIGl0ZW06IGl0ZW0gaGFzIG5vIGlkIChpdGVtOiAiK0pTT04uc3RyaW5naWZ5KHQpKyIpIik7dmFyIGk9dGhpcy5fZGF0YVtlXTtpZighaSl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCB1cGRhdGUgaXRlbTogbm8gaXRlbSB3aXRoIGlkICIrZSsiIGZvdW5kIik7Zm9yKHZhciBvIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShvKSl7dmFyIHM9dGhpcy5fdHlwZVtvXTtpW29dPW4uY29udmVydCh0W29dLHMpfXJldHVybiBlfSx0LmV4cG9ydHM9b30sZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBpKHQpe3RoaXMuZGVsYXk9bnVsbCx0aGlzLm1heD0xLzAsdGhpcy5fcXVldWU9W10sdGhpcy5fdGltZW91dD1udWxsLHRoaXMuX2V4dGVuZGVkPW51bGwsdGhpcy5zZXRPcHRpb25zKHQpfWkucHJvdG90eXBlLnNldE9wdGlvbnM9ZnVuY3Rpb24odCl7dCYmInVuZGVmaW5lZCIhPXR5cGVvZiB0LmRlbGF5JiYodGhpcy5kZWxheT10LmRlbGF5KSx0JiYidW5kZWZpbmVkIiE9dHlwZW9mIHQubWF4JiYodGhpcy5tYXg9dC5tYXgpLHRoaXMuX2ZsdXNoSWZOZWVkZWQoKX0saS5leHRlbmQ9ZnVuY3Rpb24odCxlKXt2YXIgbz1uZXcgaShlKTtpZih2b2lkIDAhPT10LmZsdXNoKXRocm93IG5ldyBFcnJvcigiVGFyZ2V0IG9iamVjdCBhbHJlYWR5IGhhcyBhIHByb3BlcnR5IGZsdXNoIik7dC5mbHVzaD1mdW5jdGlvbigpe28uZmx1c2goKX07dmFyIG49W3tuYW1lOiJmbHVzaCIsb3JpZ2luYWw6dm9pZCAwfV07aWYoZSYmZS5yZXBsYWNlKWZvcih2YXIgcz0wO3M8ZS5yZXBsYWNlLmxlbmd0aDtzKyspe3ZhciByPWUucmVwbGFjZVtzXTtuLnB1c2goe25hbWU6cixvcmlnaW5hbDp0W3JdfSksby5yZXBsYWNlKHQscil9cmV0dXJuIG8uX2V4dGVuZGVkPXtvYmplY3Q6dCxtZXRob2RzOm59LG99LGkucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXtpZih0aGlzLmZsdXNoKCksdGhpcy5fZXh0ZW5kZWQpe2Zvcih2YXIgdD10aGlzLl9leHRlbmRlZC5vYmplY3QsZT10aGlzLl9leHRlbmRlZC5tZXRob2RzLGk9MDtpPGUubGVuZ3RoO2krKyl7dmFyIG89ZVtpXTtvLm9yaWdpbmFsP3Rbby5uYW1lXT1vLm9yaWdpbmFsOmRlbGV0ZSB0W28ubmFtZV19dGhpcy5fZXh0ZW5kZWQ9bnVsbH19LGkucHJvdG90eXBlLnJlcGxhY2U9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLG89dFtlXTtpZighbyl0aHJvdyBuZXcgRXJyb3IoIk1ldGhvZCAiK2UrIiB1bmRlZmluZWQiKTt0W2VdPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXRbZV09YXJndW1lbnRzW2VdO2kucXVldWUoe2FyZ3M6dCxmbjpvLGNvbnRleHQ6dGhpc30pfX0saS5wcm90b3R5cGUucXVldWU9ZnVuY3Rpb24odCl7ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dGhpcy5fcXVldWUucHVzaCh7Zm46dH0pOnRoaXMuX3F1ZXVlLnB1c2godCksdGhpcy5fZmx1c2hJZk5lZWRlZCgpfSxpLnByb3RvdHlwZS5fZmx1c2hJZk5lZWRlZD1mdW5jdGlvbigpe2lmKHRoaXMuX3F1ZXVlLmxlbmd0aD50aGlzLm1heCYmdGhpcy5mbHVzaCgpLGNsZWFyVGltZW91dCh0aGlzLl90aW1lb3V0KSx0aGlzLnF1ZXVlLmxlbmd0aD4wJiYibnVtYmVyIj09dHlwZW9mIHRoaXMuZGVsYXkpe3ZhciB0PXRoaXM7dGhpcy5fdGltZW91dD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dC5mbHVzaCgpfSx0aGlzLmRlbGF5KX19LGkucHJvdG90eXBlLmZsdXNoPWZ1bmN0aW9uKCl7Zm9yKDt0aGlzLl9xdWV1ZS5sZW5ndGg+MDspe3ZhciB0PXRoaXMuX3F1ZXVlLnNoaWZ0KCk7dC5mbi5hcHBseSh0LmNvbnRleHR8fHQuZm4sdC5hcmdzfHxbXSl9fSx0LmV4cG9ydHM9aX0sZnVuY3Rpb24odCxlLGkpe2Z1bmN0aW9uIG8odCxlKXt0aGlzLl9kYXRhPW51bGwsdGhpcy5faWRzPXt9LHRoaXMubGVuZ3RoPTAsdGhpcy5fb3B0aW9ucz1lfHx7fSx0aGlzLl9maWVsZElkPSJpZCIsdGhpcy5fc3Vic2NyaWJlcnM9e307dmFyIGk9dGhpczt0aGlzLmxpc3RlbmVyPWZ1bmN0aW9uKCl7aS5fb25FdmVudC5hcHBseShpLGFyZ3VtZW50cyl9LHRoaXMuc2V0RGF0YSh0KX12YXIgbj1pKDcpLHM9aSgxNCk7by5wcm90b3R5cGUuc2V0RGF0YT1mdW5jdGlvbih0KXt2YXIgZSxpLG87aWYodGhpcy5fZGF0YSl7dGhpcy5fZGF0YS5vZmYmJnRoaXMuX2RhdGEub2ZmKCIqIix0aGlzLmxpc3RlbmVyKSxlPVtdO2Zvcih2YXIgbiBpbiB0aGlzLl9pZHMpdGhpcy5faWRzLmhhc093blByb3BlcnR5KG4pJiZlLnB1c2gobik7dGhpcy5faWRzPXt9LHRoaXMubGVuZ3RoPTAsdGhpcy5fdHJpZ2dlcigicmVtb3ZlIix7aXRlbXM6ZX0pfWlmKHRoaXMuX2RhdGE9dCx0aGlzLl9kYXRhKXtmb3IodGhpcy5fZmllbGRJZD10aGlzLl9vcHRpb25zLmZpZWxkSWR8fHRoaXMuX2RhdGEmJnRoaXMuX2RhdGEub3B0aW9ucyYmdGhpcy5fZGF0YS5vcHRpb25zLmZpZWxkSWR8fCJpZCIsZT10aGlzLl9kYXRhLmdldElkcyh7ZmlsdGVyOnRoaXMuX29wdGlvbnMmJnRoaXMuX29wdGlvbnMuZmlsdGVyfSksaT0wLG89ZS5sZW5ndGg7bz5pO2krKyluPWVbaV0sdGhpcy5faWRzW25dPSEwO3RoaXMubGVuZ3RoPWUubGVuZ3RoLHRoaXMuX3RyaWdnZXIoImFkZCIse2l0ZW1zOmV9KSx0aGlzLl9kYXRhLm9uJiZ0aGlzLl9kYXRhLm9uKCIqIix0aGlzLmxpc3RlbmVyKX19LG8ucHJvdG90eXBlLnJlZnJlc2g9ZnVuY3Rpb24oKXtmb3IodmFyIHQsZT10aGlzLl9kYXRhLmdldElkcyh7ZmlsdGVyOnRoaXMuX29wdGlvbnMmJnRoaXMuX29wdGlvbnMuZmlsdGVyfSksaT17fSxvPVtdLG49W10scz0wO3M8ZS5sZW5ndGg7cysrKXQ9ZVtzXSxpW3RdPSEwLHRoaXMuX2lkc1t0XXx8KG8ucHVzaCh0KSx0aGlzLl9pZHNbdF09ITAsdGhpcy5sZW5ndGgrKyk7Zm9yKHQgaW4gdGhpcy5faWRzKXRoaXMuX2lkcy5oYXNPd25Qcm9wZXJ0eSh0KSYmKGlbdF18fChuLnB1c2godCksZGVsZXRlIHRoaXMuX2lkc1t0XSx0aGlzLmxlbmd0aC0tKSk7by5sZW5ndGgmJnRoaXMuX3RyaWdnZXIoImFkZCIse2l0ZW1zOm99KSxuLmxlbmd0aCYmdGhpcy5fdHJpZ2dlcigicmVtb3ZlIix7aXRlbXM6bn0pfSxvLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7dmFyIGUsaSxvLHM9dGhpcyxyPW4uZ2V0VHlwZShhcmd1bWVudHNbMF0pOyJTdHJpbmciPT1yfHwiTnVtYmVyIj09cnx8IkFycmF5Ij09cj8oZT1hcmd1bWVudHNbMF0saT1hcmd1bWVudHNbMV0sbz1hcmd1bWVudHNbMl0pOihpPWFyZ3VtZW50c1swXSxvPWFyZ3VtZW50c1sxXSk7dmFyIGE9bi5leHRlbmQoe30sdGhpcy5fb3B0aW9ucyxpKTt0aGlzLl9vcHRpb25zLmZpbHRlciYmaSYmaS5maWx0ZXImJihhLmZpbHRlcj1mdW5jdGlvbih0KXtyZXR1cm4gcy5fb3B0aW9ucy5maWx0ZXIodCkmJmkuZmlsdGVyKHQpfSk7dmFyIGg9W107cmV0dXJuIHZvaWQgMCE9ZSYmaC5wdXNoKGUpLGgucHVzaChhKSxoLnB1c2gobyksdGhpcy5fZGF0YSYmdGhpcy5fZGF0YS5nZXQuYXBwbHkodGhpcy5fZGF0YSxoKX0sby5wcm90b3R5cGUuZ2V0SWRzPWZ1bmN0aW9uKHQpe3ZhciBlO2lmKHRoaXMuX2RhdGEpe3ZhciBpLG89dGhpcy5fb3B0aW9ucy5maWx0ZXI7aT10JiZ0LmZpbHRlcj9vP2Z1bmN0aW9uKGUpe3JldHVybiBvKGUpJiZ0LmZpbHRlcihlKX06dC5maWx0ZXI6byxlPXRoaXMuX2RhdGEuZ2V0SWRzKHtmaWx0ZXI6aSxvcmRlcjp0JiZ0Lm9yZGVyfSl9ZWxzZSBlPVtdO3JldHVybiBlfSxvLnByb3RvdHlwZS5nZXREYXRhU2V0PWZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXM7dCBpbnN0YW5jZW9mIG87KXQ9dC5fZGF0YTtyZXR1cm4gdHx8bnVsbH0sby5wcm90b3R5cGUuX29uRXZlbnQ9ZnVuY3Rpb24odCxlLGkpe3ZhciBvLG4scyxyLGE9ZSYmZS5pdGVtcyxoPXRoaXMuX2RhdGEsZD1bXSxsPVtdLHU9W10sYz1bXTtpZihhJiZoKXtzd2l0Y2godCl7Y2FzZSJhZGQiOmZvcihvPTAsbj1hLmxlbmd0aDtuPm87bysrKXM9YVtvXSxyPXRoaXMuZ2V0KHMpLHImJih0aGlzLl9pZHNbc109ITAsbC5wdXNoKHMpKTticmVhaztjYXNlInVwZGF0ZSI6Zm9yKG89MCxuPWEubGVuZ3RoO24+bztvKyspcz1hW29dLHI9dGhpcy5nZXQocykscj90aGlzLl9pZHNbc10/KHUucHVzaChzKSxkLnB1c2goZS5kYXRhW29dKSk6KHRoaXMuX2lkc1tzXT0hMCxsLnB1c2gocykpOnRoaXMuX2lkc1tzXSYmKGRlbGV0ZSB0aGlzLl9pZHNbc10sYy5wdXNoKHMpKTticmVhaztjYXNlInJlbW92ZSI6Zm9yKG89MCxuPWEubGVuZ3RoO24+bztvKyspcz1hW29dLHRoaXMuX2lkc1tzXSYmKGRlbGV0ZSB0aGlzLl9pZHNbc10sYy5wdXNoKHMpKX10aGlzLmxlbmd0aCs9bC5sZW5ndGgtYy5sZW5ndGgsbC5sZW5ndGgmJnRoaXMuX3RyaWdnZXIoImFkZCIse2l0ZW1zOmx9LGkpLHUubGVuZ3RoJiZ0aGlzLl90cmlnZ2VyKCJ1cGRhdGUiLHtpdGVtczp1LGRhdGE6ZH0saSksYy5sZW5ndGgmJnRoaXMuX3RyaWdnZXIoInJlbW92ZSIse2l0ZW1zOmN9LGkpfX0sby5wcm90b3R5cGUub249cy5wcm90b3R5cGUub24sby5wcm90b3R5cGUub2ZmPXMucHJvdG90eXBlLm9mZixvLnByb3RvdHlwZS5fdHJpZ2dlcj1zLnByb3RvdHlwZS5fdHJpZ2dlcixvLnByb3RvdHlwZS5zdWJzY3JpYmU9by5wcm90b3R5cGUub24sby5wcm90b3R5cGUudW5zdWJzY3JpYmU9by5wcm90b3R5cGUub2ZmLHQuZXhwb3J0cz1vfSxmdW5jdGlvbih0LGUsaSl7ZnVuY3Rpb24gbyh0LGUsaSl7aWYoISh0aGlzIGluc3RhbmNlb2YgbykpdGhyb3cgbmV3IFN5bnRheEVycm9yKCJDb25zdHJ1Y3RvciBtdXN0IGJlIGNhbGxlZCB3aXRoIHRoZSBuZXcgb3BlcmF0b3IiKTt0aGlzLmNvbnRhaW5lckVsZW1lbnQ9dCx0aGlzLndpZHRoPSI0MDBweCIsdGhpcy5oZWlnaHQ9IjQwMHB4Iix0aGlzLm1hcmdpbj0xMCx0aGlzLmRlZmF1bHRYQ2VudGVyPSI1NSUiLHRoaXMuZGVmYXVsdFlDZW50ZXI9IjUwJSIsdGhpcy54TGFiZWw9IngiLHRoaXMueUxhYmVsPSJ5Iix0aGlzLnpMYWJlbD0ieiI7dmFyIG49ZnVuY3Rpb24odCl7cmV0dXJuIHR9O3RoaXMueFZhbHVlTGFiZWw9bix0aGlzLnlWYWx1ZUxhYmVsPW4sdGhpcy56VmFsdWVMYWJlbD1uLHRoaXMuZmlsdGVyTGFiZWw9InRpbWUiLHRoaXMubGVnZW5kTGFiZWw9InZhbHVlIix0aGlzLnN0eWxlPW8uU1RZTEUuRE9ULHRoaXMuc2hvd1BlcnNwZWN0aXZlPSEwLHRoaXMuc2hvd0dyaWQ9ITAsdGhpcy5rZWVwQXNwZWN0UmF0aW89ITAsdGhpcy5zaG93U2hhZG93PSExLHRoaXMuc2hvd0dyYXlCb3R0b209ITEsdGhpcy5zaG93VG9vbHRpcD0hMSx0aGlzLnZlcnRpY2FsUmF0aW89LjUsdGhpcy5hbmltYXRpb25JbnRlcnZhbD0xZTMsdGhpcy5hbmltYXRpb25QcmVsb2FkPSExLHRoaXMuY2FtZXJhPW5ldyBjLHRoaXMuY2FtZXJhLnNldEFybVJvdGF0aW9uKDEsLjUpLHRoaXMuY2FtZXJhLnNldEFybUxlbmd0aCgxLjcpLHRoaXMuZXllPW5ldyBsKDAsMCwtMSksdGhpcy5kYXRhVGFibGU9bnVsbCx0aGlzLmRhdGFQb2ludHM9bnVsbCx0aGlzLmNvbFg9dm9pZCAwLHRoaXMuY29sWT12b2lkIDAsdGhpcy5jb2xaPXZvaWQgMCx0aGlzLmNvbFZhbHVlPXZvaWQgMCx0aGlzLmNvbEZpbHRlcj12b2lkIDAsdGhpcy54TWluPTAsdGhpcy54U3RlcD12b2lkIDAsdGhpcy54TWF4PTEsdGhpcy55TWluPTAsdGhpcy55U3RlcD12b2lkIDAsdGhpcy55TWF4PTEsdGhpcy56TWluPTAsdGhpcy56U3RlcD12b2lkIDAsdGhpcy56TWF4PTEsdGhpcy52YWx1ZU1pbj0wLHRoaXMudmFsdWVNYXg9MSx0aGlzLnhCYXJXaWR0aD0xLHRoaXMueUJhcldpZHRoPTEsdGhpcy5heGlzQ29sb3I9IiM0RDRENEQiLHRoaXMuZ3JpZENvbG9yPSIjRDNEM0QzIix0aGlzLmRhdGFDb2xvcj17ZmlsbDoiIzdEQzFGRiIsc3Ryb2tlOiIjMzI2N0QyIixzdHJva2VXaWR0aDoxfSx0aGlzLmNyZWF0ZSgpLHRoaXMuc2V0T3B0aW9ucyhpKSxlJiZ0aGlzLnNldERhdGEoZSl9ZnVuY3Rpb24gbih0KXtyZXR1cm4iY2xpZW50WCJpbiB0P3QuY2xpZW50WDp0LnRhcmdldFRvdWNoZXNbMF0mJnQudGFyZ2V0VG91Y2hlc1swXS5jbGllbnRYfHwwfWZ1bmN0aW9uIHModCl7cmV0dXJuImNsaWVudFkiaW4gdD90LmNsaWVudFk6dC50YXJnZXRUb3VjaGVzWzBdJiZ0LnRhcmdldFRvdWNoZXNbMF0uY2xpZW50WXx8MH12YXIgcj1pKDE5KSxhPWkoMTQpLGg9aSgxNiksZD1pKDcpLGw9aSgyMCksdT1pKDE4KSxjPWkoMjEpLHA9aSgyMiksZj1pKDIzKSxtPWkoMjQpO3Ioby5wcm90b3R5cGUpLG8ucHJvdG90eXBlLl9zZXRTY2FsZT1mdW5jdGlvbigpe3RoaXMuc2NhbGU9bmV3IGwoMS8odGhpcy54TWF4LXRoaXMueE1pbiksMS8odGhpcy55TWF4LXRoaXMueU1pbiksMS8odGhpcy56TWF4LXRoaXMuek1pbikpLHRoaXMua2VlcEFzcGVjdFJhdGlvJiYodGhpcy5zY2FsZS54PHRoaXMuc2NhbGUueT90aGlzLnNjYWxlLnk9dGhpcy5zY2FsZS54OnRoaXMuc2NhbGUueD10aGlzLnNjYWxlLnkpLHRoaXMuc2NhbGUueio9dGhpcy52ZXJ0aWNhbFJhdGlvLHRoaXMuc2NhbGUudmFsdWU9MS8odGhpcy52YWx1ZU1heC10aGlzLnZhbHVlTWluKTt2YXIgdD0odGhpcy54TWF4K3RoaXMueE1pbikvMip0aGlzLnNjYWxlLngsZT0odGhpcy55TWF4K3RoaXMueU1pbikvMip0aGlzLnNjYWxlLnksaT0odGhpcy56TWF4K3RoaXMuek1pbikvMip0aGlzLnNjYWxlLno7dGhpcy5jYW1lcmEuc2V0QXJtTG9jYXRpb24odCxlLGkpfSxvLnByb3RvdHlwZS5fY29udmVydDNEdG8yRD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9jb252ZXJ0UG9pbnRUb1RyYW5zbGF0aW9uKHQpO3JldHVybiB0aGlzLl9jb252ZXJ0VHJhbnNsYXRpb25Ub1NjcmVlbihlKX0sby5wcm90b3R5cGUuX2NvbnZlcnRQb2ludFRvVHJhbnNsYXRpb249ZnVuY3Rpb24odCl7dmFyIGU9dC54KnRoaXMuc2NhbGUueCxpPXQueSp0aGlzLnNjYWxlLnksbz10LnoqdGhpcy5zY2FsZS56LG49dGhpcy5jYW1lcmEuZ2V0Q2FtZXJhTG9jYXRpb24oKS54LHM9dGhpcy5jYW1lcmEuZ2V0Q2FtZXJhTG9jYXRpb24oKS55LHI9dGhpcy5jYW1lcmEuZ2V0Q2FtZXJhTG9jYXRpb24oKS56LGE9TWF0aC5zaW4odGhpcy5jYW1lcmEuZ2V0Q2FtZXJhUm90YXRpb24oKS54KSxoPU1hdGguY29zKHRoaXMuY2FtZXJhLmdldENhbWVyYVJvdGF0aW9uKCkueCksZD1NYXRoLnNpbih0aGlzLmNhbWVyYS5nZXRDYW1lcmFSb3RhdGlvbigpLnkpLHU9TWF0aC5jb3ModGhpcy5jYW1lcmEuZ2V0Q2FtZXJhUm90YXRpb24oKS55KSxjPU1hdGguc2luKHRoaXMuY2FtZXJhLmdldENhbWVyYVJvdGF0aW9uKCkueikscD1NYXRoLmNvcyh0aGlzLmNhbWVyYS5nZXRDYW1lcmFSb3RhdGlvbigpLnopLGY9dSooYyooaS1zKStwKihlLW4pKS1kKihvLXIpLG09YSoodSooby1yKStkKihjKihpLXMpK3AqKGUtbikpKStoKihwKihpLXMpLWMqKGUtbikpLHY9aCoodSooby1yKStkKihjKihpLXMpK3AqKGUtbikpKS1hKihwKihpLXMpLWMqKGUtbikpO3JldHVybiBuZXcgbChmLG0sdil9LG8ucHJvdG90eXBlLl9jb252ZXJ0VHJhbnNsYXRpb25Ub1NjcmVlbj1mdW5jdGlvbih0KXt2YXIgZSxpLG89dGhpcy5leWUueCxuPXRoaXMuZXllLnkscz10aGlzLmV5ZS56LHI9dC54LGE9dC55LGg9dC56O3JldHVybiB0aGlzLnNob3dQZXJzcGVjdGl2ZT8oZT0oci1vKSoocy9oKSxpPShhLW4pKihzL2gpKTooZT1yKi0ocy90aGlzLmNhbWVyYS5nZXRBcm1MZW5ndGgoKSksaT1hKi0ocy90aGlzLmNhbWVyYS5nZXRBcm1MZW5ndGgoKSkpLG5ldyB1KHRoaXMueGNlbnRlcitlKnRoaXMuZnJhbWUuY2FudmFzLmNsaWVudFdpZHRoLHRoaXMueWNlbnRlci1pKnRoaXMuZnJhbWUuY2FudmFzLmNsaWVudFdpZHRoKX0sby5wcm90b3R5cGUuX3NldEJhY2tncm91bmRDb2xvcj1mdW5jdGlvbih0KXt2YXIgZT0id2hpdGUiLGk9ImdyYXkiLG89MTtpZigic3RyaW5nIj09dHlwZW9mIHQpZT10LGk9Im5vbmUiLG89MDtlbHNlIGlmKCJvYmplY3QiPT10eXBlb2YgdCl2b2lkIDAhPT10LmZpbGwmJihlPXQuZmlsbCksdm9pZCAwIT09dC5zdHJva2UmJihpPXQuc3Ryb2tlKSx2b2lkIDAhPT10LnN0cm9rZVdpZHRoJiYobz10LnN0cm9rZVdpZHRoKTtlbHNlIGlmKHZvaWQgMCE9PXQpdGhyb3ciVW5zdXBwb3J0ZWQgdHlwZSBvZiBiYWNrZ3JvdW5kQ29sb3IiO3RoaXMuZnJhbWUuc3R5bGUuYmFja2dyb3VuZENvbG9yPWUsdGhpcy5mcmFtZS5zdHlsZS5ib3JkZXJDb2xvcj1pLHRoaXMuZnJhbWUuc3R5bGUuYm9yZGVyV2lkdGg9bysicHgiLHRoaXMuZnJhbWUuc3R5bGUuYm9yZGVyU3R5bGU9InNvbGlkIn0sby5TVFlMRT17QkFSOjAsQkFSQ09MT1I6MSxCQVJTSVpFOjIsRE9UOjMsRE9UTElORTo0LERPVENPTE9SOjUsRE9UU0laRTo2LEdSSUQ6NyxMSU5FOjgsU1VSRkFDRTo5fSxvLnByb3RvdHlwZS5fZ2V0U3R5bGVOdW1iZXI9ZnVuY3Rpb24odCl7c3dpdGNoKHQpe2Nhc2UiZG90IjpyZXR1cm4gby5TVFlMRS5ET1Q7Y2FzZSJkb3QtbGluZSI6cmV0dXJuIG8uU1RZTEUuRE9UTElORTtjYXNlImRvdC1jb2xvciI6cmV0dXJuIG8uU1RZTEUuRE9UQ09MT1I7Y2FzZSJkb3Qtc2l6ZSI6cmV0dXJuIG8uU1RZTEUuRE9UU0laRTtjYXNlImxpbmUiOnJldHVybiBvLlNUWUxFLkxJTkU7Y2FzZSJncmlkIjpyZXR1cm4gby5TVFlMRS5HUklEO2Nhc2Uic3VyZmFjZSI6cmV0dXJuIG8uU1RZTEUuU1VSRkFDRTtjYXNlImJhciI6cmV0dXJuIG8uU1RZTEUuQkFSO2Nhc2UiYmFyLWNvbG9yIjpyZXR1cm4gby5TVFlMRS5CQVJDT0xPUjtjYXNlImJhci1zaXplIjpyZXR1cm4gby5TVFlMRS5CQVJTSVpFfXJldHVybi0xfSxvLnByb3RvdHlwZS5fZGV0ZXJtaW5lQ29sdW1uSW5kZXhlcz1mdW5jdGlvbih0LGUpe2lmKHRoaXMuc3R5bGU9PT1vLlNUWUxFLkRPVHx8dGhpcy5zdHlsZT09PW8uU1RZTEUuRE9UTElORXx8dGhpcy5zdHlsZT09PW8uU1RZTEUuTElORXx8dGhpcy5zdHlsZT09PW8uU1RZTEUuR1JJRHx8dGhpcy5zdHlsZT09PW8uU1RZTEUuU1VSRkFDRXx8dGhpcy5zdHlsZT09PW8uU1RZTEUuQkFSKXRoaXMuY29sWD0wLHRoaXMuY29sWT0xLHRoaXMuY29sWj0yLHRoaXMuY29sVmFsdWU9dm9pZCAwLHQuZ2V0TnVtYmVyT2ZDb2x1bW5zKCk+MyYmKHRoaXMuY29sRmlsdGVyPTMpO2Vsc2V7aWYodGhpcy5zdHlsZSE9PW8uU1RZTEUuRE9UQ09MT1ImJnRoaXMuc3R5bGUhPT1vLlNUWUxFLkRPVFNJWkUmJnRoaXMuc3R5bGUhPT1vLlNUWUxFLkJBUkNPTE9SJiZ0aGlzLnN0eWxlIT09by5TVFlMRS5CQVJTSVpFKXRocm93J1Vua25vd24gc3R5bGUgIicrdGhpcy5zdHlsZSsnIic7dGhpcy5jb2xYPTAsdGhpcy5jb2xZPTEsdGhpcy5jb2xaPTIsdGhpcy5jb2xWYWx1ZT0zLHQuZ2V0TnVtYmVyT2ZDb2x1bW5zKCk+NCYmKHRoaXMuY29sRmlsdGVyPTQpfX0sby5wcm90b3R5cGUuZ2V0TnVtYmVyT2ZSb3dzPWZ1bmN0aW9uKHQpe3JldHVybiB0Lmxlbmd0aH0sby5wcm90b3R5cGUuZ2V0TnVtYmVyT2ZDb2x1bW5zPWZ1bmN0aW9uKHQpe3ZhciBlPTA7Zm9yKHZhciBpIGluIHRbMF0pdFswXS5oYXNPd25Qcm9wZXJ0eShpKSYmZSsrO3JldHVybiBlfSxvLnByb3RvdHlwZS5nZXREaXN0aW5jdFZhbHVlcz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgaT1bXSxvPTA7bzx0Lmxlbmd0aDtvKyspLTE9PWkuaW5kZXhPZih0W29dW2VdKSYmaS5wdXNoKHRbb11bZV0pO3JldHVybiBpfSxvLnByb3RvdHlwZS5nZXRDb2x1bW5SYW5nZT1mdW5jdGlvbih0LGUpe2Zvcih2YXIgaT17bWluOnRbMF1bZV0sbWF4OnRbMF1bZV19LG89MDtvPHQubGVuZ3RoO28rKylpLm1pbj50W29dW2VdJiYoaS5taW49dFtvXVtlXSksaS5tYXg8dFtvXVtlXSYmKGkubWF4PXRbb11bZV0pO3JldHVybiBpfSxvLnByb3RvdHlwZS5fZGF0YUluaXRpYWxpemU9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzO2lmKHRoaXMuZGF0YVNldCYmdGhpcy5kYXRhU2V0Lm9mZigiKiIsdGhpcy5fb25DaGFuZ2UpLHZvaWQgMCE9PXQpe0FycmF5LmlzQXJyYXkodCkmJih0PW5ldyBhKHQpKTt2YXIgbjtpZighKHQgaW5zdGFuY2VvZiBhfHx0IGluc3RhbmNlb2YgaCkpdGhyb3cgbmV3IEVycm9yKCJBcnJheSwgRGF0YVNldCwgb3IgRGF0YVZpZXcgZXhwZWN0ZWQiKTtpZihuPXQuZ2V0KCksMCE9bi5sZW5ndGgpe3RoaXMuZGF0YVNldD10LHRoaXMuZGF0YVRhYmxlPW4sdGhpcy5fb25DaGFuZ2U9ZnVuY3Rpb24oKXtpLnNldERhdGEoaS5kYXRhU2V0KX0sdGhpcy5kYXRhU2V0Lm9uKCIqIix0aGlzLl9vbkNoYW5nZSksdGhpcy5jb2xYPSJ4Iix0aGlzLmNvbFk9InkiLHRoaXMuY29sWj0ieiIsdGhpcy5jb2xWYWx1ZT0ic3R5bGUiLHRoaXMuY29sRmlsdGVyPSJmaWx0ZXIiLG5bMF0uaGFzT3duUHJvcGVydHkoImZpbHRlciIpJiZ2b2lkIDA9PT10aGlzLmRhdGFGaWx0ZXImJih0aGlzLmRhdGFGaWx0ZXI9bmV3IHAodCx0aGlzLmNvbEZpbHRlcix0aGlzKSx0aGlzLmRhdGFGaWx0ZXIuc2V0T25Mb2FkQ2FsbGJhY2soZnVuY3Rpb24oKXtpLnJlZHJhdygpfSkpO3ZhciBzPXRoaXMuc3R5bGU9PW8uU1RZTEUuQkFSfHx0aGlzLnN0eWxlPT1vLlNUWUxFLkJBUkNPTE9SfHx0aGlzLnN0eWxlPT1vLlNUWUxFLkJBUlNJWkU7aWYocyl7aWYodm9pZCAwIT09dGhpcy5kZWZhdWx0WEJhcldpZHRoKXRoaXMueEJhcldpZHRoPXRoaXMuZGVmYXVsdFhCYXJXaWR0aDtlbHNle3ZhciByPXRoaXMuZ2V0RGlzdGluY3RWYWx1ZXMobix0aGlzLmNvbFgpO3RoaXMueEJhcldpZHRoPXJbMV0tclswXXx8MX1pZih2b2lkIDAhPT10aGlzLmRlZmF1bHRZQmFyV2lkdGgpdGhpcy55QmFyV2lkdGg9dGhpcy5kZWZhdWx0WUJhcldpZHRoO2Vsc2V7dmFyIGQ9dGhpcy5nZXREaXN0aW5jdFZhbHVlcyhuLHRoaXMuY29sWSk7dGhpcy55QmFyV2lkdGg9ZFsxXS1kWzBdfHwxfX12YXIgbD10aGlzLmdldENvbHVtblJhbmdlKG4sdGhpcy5jb2xYKTtzJiYobC5taW4tPXRoaXMueEJhcldpZHRoLzIsbC5tYXgrPXRoaXMueEJhcldpZHRoLzIpLHRoaXMueE1pbj12b2lkIDAhPT10aGlzLmRlZmF1bHRYTWluP3RoaXMuZGVmYXVsdFhNaW46bC5taW4sdGhpcy54TWF4PXZvaWQgMCE9PXRoaXMuZGVmYXVsdFhNYXg/dGhpcy5kZWZhdWx0WE1heDpsLm1heCx0aGlzLnhNYXg8PXRoaXMueE1pbiYmKHRoaXMueE1heD10aGlzLnhNaW4rMSksdGhpcy54U3RlcD12b2lkIDAhPT10aGlzLmRlZmF1bHRYU3RlcD90aGlzLmRlZmF1bHRYU3RlcDoodGhpcy54TWF4LXRoaXMueE1pbikvNTt2YXIgdT10aGlzLmdldENvbHVtblJhbmdlKG4sdGhpcy5jb2xZKTtzJiYodS5taW4tPXRoaXMueUJhcldpZHRoLzIsdS5tYXgrPXRoaXMueUJhcldpZHRoLzIpLHRoaXMueU1pbj12b2lkIDAhPT10aGlzLmRlZmF1bHRZTWluP3RoaXMuZGVmYXVsdFlNaW46dS5taW4sdGhpcy55TWF4PXZvaWQgMCE9PXRoaXMuZGVmYXVsdFlNYXg/dGhpcy5kZWZhdWx0WU1heDp1Lm1heCx0aGlzLnlNYXg8PXRoaXMueU1pbiYmKHRoaXMueU1heD10aGlzLnlNaW4rMSksdGhpcy55U3RlcD12b2lkIDAhPT10aGlzLmRlZmF1bHRZU3RlcD90aGlzLmRlZmF1bHRZU3RlcDoodGhpcy55TWF4LXRoaXMueU1pbikvNTt2YXIgYz10aGlzLmdldENvbHVtblJhbmdlKG4sdGhpcy5jb2xaKTtpZih0aGlzLnpNaW49dm9pZCAwIT09dGhpcy5kZWZhdWx0Wk1pbj90aGlzLmRlZmF1bHRaTWluOmMubWluLHRoaXMuek1heD12b2lkIDAhPT10aGlzLmRlZmF1bHRaTWF4P3RoaXMuZGVmYXVsdFpNYXg6Yy5tYXgsdGhpcy56TWF4PD10aGlzLnpNaW4mJih0aGlzLnpNYXg9dGhpcy56TWluKzEpLHRoaXMuelN0ZXA9dm9pZCAwIT09dGhpcy5kZWZhdWx0WlN0ZXA/dGhpcy5kZWZhdWx0WlN0ZXA6KHRoaXMuek1heC10aGlzLnpNaW4pLzUsdm9pZCAwIT09dGhpcy5jb2xWYWx1ZSl7dmFyIGY9dGhpcy5nZXRDb2x1bW5SYW5nZShuLHRoaXMuY29sVmFsdWUpO3RoaXMudmFsdWVNaW49dm9pZCAwIT09dGhpcy5kZWZhdWx0VmFsdWVNaW4/dGhpcy5kZWZhdWx0VmFsdWVNaW46Zi5taW4sDQp0aGlzLnZhbHVlTWF4PXZvaWQgMCE9PXRoaXMuZGVmYXVsdFZhbHVlTWF4P3RoaXMuZGVmYXVsdFZhbHVlTWF4OmYubWF4LHRoaXMudmFsdWVNYXg8PXRoaXMudmFsdWVNaW4mJih0aGlzLnZhbHVlTWF4PXRoaXMudmFsdWVNaW4rMSl9dGhpcy5fc2V0U2NhbGUoKX19fSxvLnByb3RvdHlwZS5fZ2V0RGF0YVBvaW50cz1mdW5jdGlvbih0KXt2YXIgZSxpLG4scyxyLGEsaD1bXTtpZih0aGlzLnN0eWxlPT09by5TVFlMRS5HUklEfHx0aGlzLnN0eWxlPT09by5TVFlMRS5TVVJGQUNFKXt2YXIgZD1bXSx1PVtdO2ZvcihuPTA7bjx0aGlzLmdldE51bWJlck9mUm93cyh0KTtuKyspZT10W25dW3RoaXMuY29sWF18fDAsaT10W25dW3RoaXMuY29sWV18fDAsLTE9PT1kLmluZGV4T2YoZSkmJmQucHVzaChlKSwtMT09PXUuaW5kZXhPZihpKSYmdS5wdXNoKGkpO3ZhciBjPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQtZX07ZC5zb3J0KGMpLHUuc29ydChjKTt2YXIgcD1bXTtmb3Iobj0wO248dC5sZW5ndGg7bisrKXtlPXRbbl1bdGhpcy5jb2xYXXx8MCxpPXRbbl1bdGhpcy5jb2xZXXx8MCxzPXRbbl1bdGhpcy5jb2xaXXx8MDt2YXIgZj1kLmluZGV4T2YoZSksbT11LmluZGV4T2YoaSk7dm9pZCAwPT09cFtmXSYmKHBbZl09W10pO3ZhciB2PW5ldyBsO3YueD1lLHYueT1pLHYuej1zLHI9e30sci5wb2ludD12LHIudHJhbnM9dm9pZCAwLHIuc2NyZWVuPXZvaWQgMCxyLmJvdHRvbT1uZXcgbChlLGksdGhpcy56TWluKSxwW2ZdW21dPXIsaC5wdXNoKHIpfWZvcihlPTA7ZTxwLmxlbmd0aDtlKyspZm9yKGk9MDtpPHBbZV0ubGVuZ3RoO2krKylwW2VdW2ldJiYocFtlXVtpXS5wb2ludFJpZ2h0PWU8cC5sZW5ndGgtMT9wW2UrMV1baV06dm9pZCAwLHBbZV1baV0ucG9pbnRUb3A9aTxwW2VdLmxlbmd0aC0xP3BbZV1baSsxXTp2b2lkIDAscFtlXVtpXS5wb2ludENyb3NzPWU8cC5sZW5ndGgtMSYmaTxwW2VdLmxlbmd0aC0xP3BbZSsxXVtpKzFdOnZvaWQgMCl9ZWxzZSBmb3Iobj0wO248dC5sZW5ndGg7bisrKWE9bmV3IGwsYS54PXRbbl1bdGhpcy5jb2xYXXx8MCxhLnk9dFtuXVt0aGlzLmNvbFldfHwwLGEuej10W25dW3RoaXMuY29sWl18fDAsdm9pZCAwIT09dGhpcy5jb2xWYWx1ZSYmKGEudmFsdWU9dFtuXVt0aGlzLmNvbFZhbHVlXXx8MCkscj17fSxyLnBvaW50PWEsci5ib3R0b209bmV3IGwoYS54LGEueSx0aGlzLnpNaW4pLHIudHJhbnM9dm9pZCAwLHIuc2NyZWVuPXZvaWQgMCxoLnB1c2gocik7cmV0dXJuIGh9LG8ucHJvdG90eXBlLmNyZWF0ZT1mdW5jdGlvbigpe2Zvcig7dGhpcy5jb250YWluZXJFbGVtZW50Lmhhc0NoaWxkTm9kZXMoKTspdGhpcy5jb250YWluZXJFbGVtZW50LnJlbW92ZUNoaWxkKHRoaXMuY29udGFpbmVyRWxlbWVudC5maXJzdENoaWxkKTt0aGlzLmZyYW1lPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuZnJhbWUuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIix0aGlzLmZyYW1lLnN0eWxlLm92ZXJmbG93PSJoaWRkZW4iLHRoaXMuZnJhbWUuY2FudmFzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLHRoaXMuZnJhbWUuY2FudmFzLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIsdGhpcy5mcmFtZS5hcHBlbmRDaGlsZCh0aGlzLmZyYW1lLmNhbnZhcyk7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiRElWIik7dC5zdHlsZS5jb2xvcj0icmVkIix0LnN0eWxlLmZvbnRXZWlnaHQ9ImJvbGQiLHQuc3R5bGUucGFkZGluZz0iMTBweCIsdC5pbm5lckhUTUw9IkVycm9yOiB5b3VyIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBIVE1MIGNhbnZhcyIsdGhpcy5mcmFtZS5jYW52YXMuYXBwZW5kQ2hpbGQodCksdGhpcy5mcmFtZS5maWx0ZXI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5mcmFtZS5maWx0ZXIuc3R5bGUucG9zaXRpb249ImFic29sdXRlIix0aGlzLmZyYW1lLmZpbHRlci5zdHlsZS5ib3R0b209IjBweCIsdGhpcy5mcmFtZS5maWx0ZXIuc3R5bGUubGVmdD0iMHB4Iix0aGlzLmZyYW1lLmZpbHRlci5zdHlsZS53aWR0aD0iMTAwJSIsdGhpcy5mcmFtZS5hcHBlbmRDaGlsZCh0aGlzLmZyYW1lLmZpbHRlcik7dmFyIGU9dGhpcyxpPWZ1bmN0aW9uKHQpe2UuX29uTW91c2VEb3duKHQpfSxvPWZ1bmN0aW9uKHQpe2UuX29uVG91Y2hTdGFydCh0KX0sbj1mdW5jdGlvbih0KXtlLl9vbldoZWVsKHQpfSxzPWZ1bmN0aW9uKHQpe2UuX29uVG9vbHRpcCh0KX07ZC5hZGRFdmVudExpc3RlbmVyKHRoaXMuZnJhbWUuY2FudmFzLCJrZXlkb3duIixvbmtleWRvd24pLGQuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLmZyYW1lLmNhbnZhcywibW91c2Vkb3duIixpKSxkLmFkZEV2ZW50TGlzdGVuZXIodGhpcy5mcmFtZS5jYW52YXMsInRvdWNoc3RhcnQiLG8pLGQuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLmZyYW1lLmNhbnZhcywibW91c2V3aGVlbCIsbiksZC5hZGRFdmVudExpc3RlbmVyKHRoaXMuZnJhbWUuY2FudmFzLCJtb3VzZW1vdmUiLHMpLHRoaXMuY29udGFpbmVyRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmZyYW1lKX0sby5wcm90b3R5cGUuc2V0U2l6ZT1mdW5jdGlvbih0LGUpe3RoaXMuZnJhbWUuc3R5bGUud2lkdGg9dCx0aGlzLmZyYW1lLnN0eWxlLmhlaWdodD1lLHRoaXMuX3Jlc2l6ZUNhbnZhcygpfSxvLnByb3RvdHlwZS5fcmVzaXplQ2FudmFzPWZ1bmN0aW9uKCl7dGhpcy5mcmFtZS5jYW52YXMuc3R5bGUud2lkdGg9IjEwMCUiLHRoaXMuZnJhbWUuY2FudmFzLnN0eWxlLmhlaWdodD0iMTAwJSIsdGhpcy5mcmFtZS5jYW52YXMud2lkdGg9dGhpcy5mcmFtZS5jYW52YXMuY2xpZW50V2lkdGgsdGhpcy5mcmFtZS5jYW52YXMuaGVpZ2h0PXRoaXMuZnJhbWUuY2FudmFzLmNsaWVudEhlaWdodCx0aGlzLmZyYW1lLmZpbHRlci5zdHlsZS53aWR0aD10aGlzLmZyYW1lLmNhbnZhcy5jbGllbnRXaWR0aC0yMCsicHgifSxvLnByb3RvdHlwZS5hbmltYXRpb25TdGFydD1mdW5jdGlvbigpe2lmKCF0aGlzLmZyYW1lLmZpbHRlcnx8IXRoaXMuZnJhbWUuZmlsdGVyLnNsaWRlcil0aHJvdyJObyBhbmltYXRpb24gYXZhaWxhYmxlIjt0aGlzLmZyYW1lLmZpbHRlci5zbGlkZXIucGxheSgpfSxvLnByb3RvdHlwZS5hbmltYXRpb25TdG9wPWZ1bmN0aW9uKCl7dGhpcy5mcmFtZS5maWx0ZXImJnRoaXMuZnJhbWUuZmlsdGVyLnNsaWRlciYmdGhpcy5mcmFtZS5maWx0ZXIuc2xpZGVyLnN0b3AoKX0sby5wcm90b3R5cGUuX3Jlc2l6ZUNlbnRlcj1mdW5jdGlvbigpeyIlIj09PXRoaXMuZGVmYXVsdFhDZW50ZXIuY2hhckF0KHRoaXMuZGVmYXVsdFhDZW50ZXIubGVuZ3RoLTEpP3RoaXMueGNlbnRlcj1wYXJzZUZsb2F0KHRoaXMuZGVmYXVsdFhDZW50ZXIpLzEwMCp0aGlzLmZyYW1lLmNhbnZhcy5jbGllbnRXaWR0aDp0aGlzLnhjZW50ZXI9cGFyc2VGbG9hdCh0aGlzLmRlZmF1bHRYQ2VudGVyKSwiJSI9PT10aGlzLmRlZmF1bHRZQ2VudGVyLmNoYXJBdCh0aGlzLmRlZmF1bHRZQ2VudGVyLmxlbmd0aC0xKT90aGlzLnljZW50ZXI9cGFyc2VGbG9hdCh0aGlzLmRlZmF1bHRZQ2VudGVyKS8xMDAqKHRoaXMuZnJhbWUuY2FudmFzLmNsaWVudEhlaWdodC10aGlzLmZyYW1lLmZpbHRlci5jbGllbnRIZWlnaHQpOnRoaXMueWNlbnRlcj1wYXJzZUZsb2F0KHRoaXMuZGVmYXVsdFlDZW50ZXIpfSxvLnByb3RvdHlwZS5zZXRDYW1lcmFQb3NpdGlvbj1mdW5jdGlvbih0KXt2b2lkIDAhPT10JiYodm9pZCAwIT09dC5ob3Jpem9udGFsJiZ2b2lkIDAhPT10LnZlcnRpY2FsJiZ0aGlzLmNhbWVyYS5zZXRBcm1Sb3RhdGlvbih0Lmhvcml6b250YWwsdC52ZXJ0aWNhbCksdm9pZCAwIT09dC5kaXN0YW5jZSYmdGhpcy5jYW1lcmEuc2V0QXJtTGVuZ3RoKHQuZGlzdGFuY2UpLHRoaXMucmVkcmF3KCkpfSxvLnByb3RvdHlwZS5nZXRDYW1lcmFQb3NpdGlvbj1mdW5jdGlvbigpe3ZhciB0PXRoaXMuY2FtZXJhLmdldEFybVJvdGF0aW9uKCk7cmV0dXJuIHQuZGlzdGFuY2U9dGhpcy5jYW1lcmEuZ2V0QXJtTGVuZ3RoKCksdH0sby5wcm90b3R5cGUuX3JlYWREYXRhPWZ1bmN0aW9uKHQpe3RoaXMuX2RhdGFJbml0aWFsaXplKHQsdGhpcy5zdHlsZSksdGhpcy5kYXRhRmlsdGVyP3RoaXMuZGF0YVBvaW50cz10aGlzLmRhdGFGaWx0ZXIuX2dldERhdGFQb2ludHMoKTp0aGlzLmRhdGFQb2ludHM9dGhpcy5fZ2V0RGF0YVBvaW50cyh0aGlzLmRhdGFUYWJsZSksdGhpcy5fcmVkcmF3RmlsdGVyKCl9LG8ucHJvdG90eXBlLnNldERhdGE9ZnVuY3Rpb24odCl7dGhpcy5fcmVhZERhdGEodCksdGhpcy5yZWRyYXcoKSx0aGlzLmFuaW1hdGlvbkF1dG9TdGFydCYmdGhpcy5kYXRhRmlsdGVyJiZ0aGlzLmFuaW1hdGlvblN0YXJ0KCl9LG8ucHJvdG90eXBlLnNldE9wdGlvbnM9ZnVuY3Rpb24odCl7dmFyIGU9dm9pZCAwO2lmKHRoaXMuYW5pbWF0aW9uU3RvcCgpLHZvaWQgMCE9PXQpe2lmKHZvaWQgMCE9PXQud2lkdGgmJih0aGlzLndpZHRoPXQud2lkdGgpLHZvaWQgMCE9PXQuaGVpZ2h0JiYodGhpcy5oZWlnaHQ9dC5oZWlnaHQpLHZvaWQgMCE9PXQueENlbnRlciYmKHRoaXMuZGVmYXVsdFhDZW50ZXI9dC54Q2VudGVyKSx2b2lkIDAhPT10LnlDZW50ZXImJih0aGlzLmRlZmF1bHRZQ2VudGVyPXQueUNlbnRlciksdm9pZCAwIT09dC5maWx0ZXJMYWJlbCYmKHRoaXMuZmlsdGVyTGFiZWw9dC5maWx0ZXJMYWJlbCksdm9pZCAwIT09dC5sZWdlbmRMYWJlbCYmKHRoaXMubGVnZW5kTGFiZWw9dC5sZWdlbmRMYWJlbCksdm9pZCAwIT09dC54TGFiZWwmJih0aGlzLnhMYWJlbD10LnhMYWJlbCksdm9pZCAwIT09dC55TGFiZWwmJih0aGlzLnlMYWJlbD10LnlMYWJlbCksdm9pZCAwIT09dC56TGFiZWwmJih0aGlzLnpMYWJlbD10LnpMYWJlbCksdm9pZCAwIT09dC54VmFsdWVMYWJlbCYmKHRoaXMueFZhbHVlTGFiZWw9dC54VmFsdWVMYWJlbCksdm9pZCAwIT09dC55VmFsdWVMYWJlbCYmKHRoaXMueVZhbHVlTGFiZWw9dC55VmFsdWVMYWJlbCksdm9pZCAwIT09dC56VmFsdWVMYWJlbCYmKHRoaXMuelZhbHVlTGFiZWw9dC56VmFsdWVMYWJlbCksdm9pZCAwIT09dC5zdHlsZSl7dmFyIGk9dGhpcy5fZ2V0U3R5bGVOdW1iZXIodC5zdHlsZSk7LTEhPT1pJiYodGhpcy5zdHlsZT1pKX12b2lkIDAhPT10LnNob3dHcmlkJiYodGhpcy5zaG93R3JpZD10LnNob3dHcmlkKSx2b2lkIDAhPT10LnNob3dQZXJzcGVjdGl2ZSYmKHRoaXMuc2hvd1BlcnNwZWN0aXZlPXQuc2hvd1BlcnNwZWN0aXZlKSx2b2lkIDAhPT10LnNob3dTaGFkb3cmJih0aGlzLnNob3dTaGFkb3c9dC5zaG93U2hhZG93KSx2b2lkIDAhPT10LnRvb2x0aXAmJih0aGlzLnNob3dUb29sdGlwPXQudG9vbHRpcCksdm9pZCAwIT09dC5zaG93QW5pbWF0aW9uQ29udHJvbHMmJih0aGlzLnNob3dBbmltYXRpb25Db250cm9scz10LnNob3dBbmltYXRpb25Db250cm9scyksdm9pZCAwIT09dC5rZWVwQXNwZWN0UmF0aW8mJih0aGlzLmtlZXBBc3BlY3RSYXRpbz10LmtlZXBBc3BlY3RSYXRpbyksdm9pZCAwIT09dC52ZXJ0aWNhbFJhdGlvJiYodGhpcy52ZXJ0aWNhbFJhdGlvPXQudmVydGljYWxSYXRpbyksdm9pZCAwIT09dC5hbmltYXRpb25JbnRlcnZhbCYmKHRoaXMuYW5pbWF0aW9uSW50ZXJ2YWw9dC5hbmltYXRpb25JbnRlcnZhbCksdm9pZCAwIT09dC5hbmltYXRpb25QcmVsb2FkJiYodGhpcy5hbmltYXRpb25QcmVsb2FkPXQuYW5pbWF0aW9uUHJlbG9hZCksdm9pZCAwIT09dC5hbmltYXRpb25BdXRvU3RhcnQmJih0aGlzLmFuaW1hdGlvbkF1dG9TdGFydD10LmFuaW1hdGlvbkF1dG9TdGFydCksdm9pZCAwIT09dC54QmFyV2lkdGgmJih0aGlzLmRlZmF1bHRYQmFyV2lkdGg9dC54QmFyV2lkdGgpLHZvaWQgMCE9PXQueUJhcldpZHRoJiYodGhpcy5kZWZhdWx0WUJhcldpZHRoPXQueUJhcldpZHRoKSx2b2lkIDAhPT10LnhNaW4mJih0aGlzLmRlZmF1bHRYTWluPXQueE1pbiksdm9pZCAwIT09dC54U3RlcCYmKHRoaXMuZGVmYXVsdFhTdGVwPXQueFN0ZXApLHZvaWQgMCE9PXQueE1heCYmKHRoaXMuZGVmYXVsdFhNYXg9dC54TWF4KSx2b2lkIDAhPT10LnlNaW4mJih0aGlzLmRlZmF1bHRZTWluPXQueU1pbiksdm9pZCAwIT09dC55U3RlcCYmKHRoaXMuZGVmYXVsdFlTdGVwPXQueVN0ZXApLHZvaWQgMCE9PXQueU1heCYmKHRoaXMuZGVmYXVsdFlNYXg9dC55TWF4KSx2b2lkIDAhPT10LnpNaW4mJih0aGlzLmRlZmF1bHRaTWluPXQuek1pbiksdm9pZCAwIT09dC56U3RlcCYmKHRoaXMuZGVmYXVsdFpTdGVwPXQuelN0ZXApLHZvaWQgMCE9PXQuek1heCYmKHRoaXMuZGVmYXVsdFpNYXg9dC56TWF4KSx2b2lkIDAhPT10LnZhbHVlTWluJiYodGhpcy5kZWZhdWx0VmFsdWVNaW49dC52YWx1ZU1pbiksdm9pZCAwIT09dC52YWx1ZU1heCYmKHRoaXMuZGVmYXVsdFZhbHVlTWF4PXQudmFsdWVNYXgpLHZvaWQgMCE9PXQuY2FtZXJhUG9zaXRpb24mJihlPXQuY2FtZXJhUG9zaXRpb24pLHZvaWQgMCE9PWUmJih0aGlzLmNhbWVyYS5zZXRBcm1Sb3RhdGlvbihlLmhvcml6b250YWwsZS52ZXJ0aWNhbCksdGhpcy5jYW1lcmEuc2V0QXJtTGVuZ3RoKGUuZGlzdGFuY2UpKSx2b2lkIDAhPT10LmF4aXNDb2xvciYmKHRoaXMuYXhpc0NvbG9yPXQuYXhpc0NvbG9yKSx2b2lkIDAhPT10LmdyaWRDb2xvciYmKHRoaXMuZ3JpZENvbG9yPXQuZ3JpZENvbG9yKSx0LmRhdGFDb2xvciYmKCJzdHJpbmciPT10eXBlb2YgdC5kYXRhQ29sb3I/KHRoaXMuZGF0YUNvbG9yLmZpbGw9dC5kYXRhQ29sb3IsdGhpcy5kYXRhQ29sb3Iuc3Ryb2tlPXQuZGF0YUNvbG9yKToodC5kYXRhQ29sb3IuZmlsbCYmKHRoaXMuZGF0YUNvbG9yLmZpbGw9dC5kYXRhQ29sb3IuZmlsbCksdC5kYXRhQ29sb3Iuc3Ryb2tlJiYodGhpcy5kYXRhQ29sb3Iuc3Ryb2tlPXQuZGF0YUNvbG9yLnN0cm9rZSksdm9pZCAwIT09dC5kYXRhQ29sb3Iuc3Ryb2tlV2lkdGgmJih0aGlzLmRhdGFDb2xvci5zdHJva2VXaWR0aD10LmRhdGFDb2xvci5zdHJva2VXaWR0aCkpKSx0aGlzLl9zZXRCYWNrZ3JvdW5kQ29sb3IodC5iYWNrZ3JvdW5kQ29sb3IpfXRoaXMuc2V0U2l6ZSh0aGlzLndpZHRoLHRoaXMuaGVpZ2h0KSx0aGlzLmRhdGFUYWJsZSYmdGhpcy5zZXREYXRhKHRoaXMuZGF0YVRhYmxlKSx0aGlzLmFuaW1hdGlvbkF1dG9TdGFydCYmdGhpcy5kYXRhRmlsdGVyJiZ0aGlzLmFuaW1hdGlvblN0YXJ0KCl9LG8ucHJvdG90eXBlLnJlZHJhdz1mdW5jdGlvbigpe2lmKHZvaWQgMD09PXRoaXMuZGF0YVBvaW50cyl0aHJvdyJFcnJvcjogZ3JhcGggZGF0YSBub3QgaW5pdGlhbGl6ZWQiO3RoaXMuX3Jlc2l6ZUNhbnZhcygpLHRoaXMuX3Jlc2l6ZUNlbnRlcigpLHRoaXMuX3JlZHJhd1NsaWRlcigpLHRoaXMuX3JlZHJhd0NsZWFyKCksdGhpcy5fcmVkcmF3QXhpcygpLHRoaXMuc3R5bGU9PT1vLlNUWUxFLkdSSUR8fHRoaXMuc3R5bGU9PT1vLlNUWUxFLlNVUkZBQ0U/dGhpcy5fcmVkcmF3RGF0YUdyaWQoKTp0aGlzLnN0eWxlPT09by5TVFlMRS5MSU5FP3RoaXMuX3JlZHJhd0RhdGFMaW5lKCk6dGhpcy5zdHlsZT09PW8uU1RZTEUuQkFSfHx0aGlzLnN0eWxlPT09by5TVFlMRS5CQVJDT0xPUnx8dGhpcy5zdHlsZT09PW8uU1RZTEUuQkFSU0laRT90aGlzLl9yZWRyYXdEYXRhQmFyKCk6dGhpcy5fcmVkcmF3RGF0YURvdCgpLHRoaXMuX3JlZHJhd0luZm8oKSx0aGlzLl9yZWRyYXdMZWdlbmQoKX0sby5wcm90b3R5cGUuX3JlZHJhd0NsZWFyPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5mcmFtZS5jYW52YXMsZT10LmdldENvbnRleHQoIjJkIik7ZS5jbGVhclJlY3QoMCwwLHQud2lkdGgsdC5oZWlnaHQpfSxvLnByb3RvdHlwZS5fcmVkcmF3TGVnZW5kPWZ1bmN0aW9uKCl7dmFyIHQ7aWYodGhpcy5zdHlsZT09PW8uU1RZTEUuRE9UQ09MT1J8fHRoaXMuc3R5bGU9PT1vLlNUWUxFLkRPVFNJWkUpe3ZhciBlLGksbj0uMDIqdGhpcy5mcmFtZS5jbGllbnRXaWR0aDt0aGlzLnN0eWxlPT09by5TVFlMRS5ET1RTSVpFPyhlPW4vMixpPW4vMisyKm4pOihlPTIwLGk9MjApO3ZhciBzPU1hdGgubWF4KC4yNSp0aGlzLmZyYW1lLmNsaWVudEhlaWdodCwxMDApLHI9dGhpcy5tYXJnaW4sYT10aGlzLmZyYW1lLmNsaWVudFdpZHRoLXRoaXMubWFyZ2luLGg9YS1pLGQ9citzfXZhciBsPXRoaXMuZnJhbWUuY2FudmFzLHU9bC5nZXRDb250ZXh0KCIyZCIpO2lmKHUubGluZVdpZHRoPTEsdS5mb250PSIxNHB4IGFyaWFsIix0aGlzLnN0eWxlPT09by5TVFlMRS5ET1RDT0xPUil7dmFyIGM9MCxwPXM7Zm9yKHQ9YztwPnQ7dCsrKXt2YXIgZj0odC1jKS8ocC1jKSx2PTI0MCpmLGc9dGhpcy5faHN2MnJnYih2LDEsMSk7dS5zdHJva2VTdHlsZT1nLHUuYmVnaW5QYXRoKCksdS5tb3ZlVG8oaCxyK3QpLHUubGluZVRvKGEscit0KSx1LnN0cm9rZSgpfXUuc3Ryb2tlU3R5bGU9dGhpcy5heGlzQ29sb3IsdS5zdHJva2VSZWN0KGgscixpLHMpfWlmKHRoaXMuc3R5bGU9PT1vLlNUWUxFLkRPVFNJWkUmJih1LnN0cm9rZVN0eWxlPXRoaXMuYXhpc0NvbG9yLHUuZmlsbFN0eWxlPXRoaXMuZGF0YUNvbG9yLmZpbGwsdS5iZWdpblBhdGgoKSx1Lm1vdmVUbyhoLHIpLHUubGluZVRvKGEsciksdS5saW5lVG8oYS1pK2UsZCksdS5saW5lVG8oaCxkKSx1LmNsb3NlUGF0aCgpLHUuZmlsbCgpLHUuc3Ryb2tlKCkpLHRoaXMuc3R5bGU9PT1vLlNUWUxFLkRPVENPTE9SfHx0aGlzLnN0eWxlPT09by5TVFlMRS5ET1RTSVpFKXt2YXIgeT01LGI9bmV3IG0odGhpcy52YWx1ZU1pbix0aGlzLnZhbHVlTWF4LCh0aGlzLnZhbHVlTWF4LXRoaXMudmFsdWVNaW4pLzUsITApO2ZvcihiLnN0YXJ0KCksYi5nZXRDdXJyZW50KCk8dGhpcy52YWx1ZU1pbiYmYi5uZXh0KCk7IWIuZW5kKCk7KXQ9ZC0oYi5nZXRDdXJyZW50KCktdGhpcy52YWx1ZU1pbikvKHRoaXMudmFsdWVNYXgtdGhpcy52YWx1ZU1pbikqcyx1LmJlZ2luUGF0aCgpLHUubW92ZVRvKGgteSx0KSx1LmxpbmVUbyhoLHQpLHUuc3Ryb2tlKCksdS50ZXh0QWxpZ249InJpZ2h0Iix1LnRleHRCYXNlbGluZT0ibWlkZGxlIix1LmZpbGxTdHlsZT10aGlzLmF4aXNDb2xvcix1LmZpbGxUZXh0KGIuZ2V0Q3VycmVudCgpLGgtMip5LHQpLGIubmV4dCgpO3UudGV4dEFsaWduPSJyaWdodCIsdS50ZXh0QmFzZWxpbmU9InRvcCI7dmFyIHc9dGhpcy5sZWdlbmRMYWJlbDt1LmZpbGxUZXh0KHcsYSxkK3RoaXMubWFyZ2luKX19LG8ucHJvdG90eXBlLl9yZWRyYXdGaWx0ZXI9ZnVuY3Rpb24oKXtpZih0aGlzLmZyYW1lLmZpbHRlci5pbm5lckhUTUw9IiIsdGhpcy5kYXRhRmlsdGVyKXt2YXIgdD17dmlzaWJsZTp0aGlzLnNob3dBbmltYXRpb25Db250cm9sc30sZT1uZXcgZih0aGlzLmZyYW1lLmZpbHRlcix0KTt0aGlzLmZyYW1lLmZpbHRlci5zbGlkZXI9ZSx0aGlzLmZyYW1lLmZpbHRlci5zdHlsZS5wYWRkaW5nPSIxMHB4IixlLnNldFZhbHVlcyh0aGlzLmRhdGFGaWx0ZXIudmFsdWVzKSxlLnNldFBsYXlJbnRlcnZhbCh0aGlzLmFuaW1hdGlvbkludGVydmFsKTt2YXIgaT10aGlzLG89ZnVuY3Rpb24oKXt2YXIgdD1lLmdldEluZGV4KCk7aS5kYXRhRmlsdGVyLnNlbGVjdFZhbHVlKHQpLGkuZGF0YVBvaW50cz1pLmRhdGFGaWx0ZXIuX2dldERhdGFQb2ludHMoKSxpLnJlZHJhdygpfTtlLnNldE9uQ2hhbmdlQ2FsbGJhY2sobyl9ZWxzZSB0aGlzLmZyYW1lLmZpbHRlci5zbGlkZXI9dm9pZCAwfSxvLnByb3RvdHlwZS5fcmVkcmF3U2xpZGVyPWZ1bmN0aW9uKCl7dm9pZCAwIT09dGhpcy5mcmFtZS5maWx0ZXIuc2xpZGVyJiZ0aGlzLmZyYW1lLmZpbHRlci5zbGlkZXIucmVkcmF3KCl9LG8ucHJvdG90eXBlLl9yZWRyYXdJbmZvPWZ1bmN0aW9uKCl7aWYodGhpcy5kYXRhRmlsdGVyKXt2YXIgdD10aGlzLmZyYW1lLmNhbnZhcyxlPXQuZ2V0Q29udGV4dCgiMmQiKTtlLmZvbnQ9IjE0cHggYXJpYWwiLGUubGluZVN0eWxlPSJncmF5IixlLmZpbGxTdHlsZT0iZ3JheSIsZS50ZXh0QWxpZ249ImxlZnQiLGUudGV4dEJhc2VsaW5lPSJ0b3AiO3ZhciBpPXRoaXMubWFyZ2luLG89dGhpcy5tYXJnaW47ZS5maWxsVGV4dCh0aGlzLmRhdGFGaWx0ZXIuZ2V0TGFiZWwoKSsiOiAiK3RoaXMuZGF0YUZpbHRlci5nZXRTZWxlY3RlZFZhbHVlKCksaSxvKX19LG8ucHJvdG90eXBlLl9yZWRyYXdBeGlzPWZ1bmN0aW9uKCl7dmFyIHQsZSxpLG8sbixzLHIsYSxoLGQsdSxjLHAsZj10aGlzLmZyYW1lLmNhbnZhcyx2PWYuZ2V0Q29udGV4dCgiMmQiKTt2LmZvbnQ9MjQvdGhpcy5jYW1lcmEuZ2V0QXJtTGVuZ3RoKCkrInB4IGFyaWFsIjt2YXIgZz0uMDI1L3RoaXMuc2NhbGUueCx5PS4wMjUvdGhpcy5zY2FsZS55LGI9NS90aGlzLmNhbWVyYS5nZXRBcm1MZW5ndGgoKSx3PXRoaXMuY2FtZXJhLmdldEFybVJvdGF0aW9uKCkuaG9yaXpvbnRhbDtmb3Iodi5saW5lV2lkdGg9MSxvPXZvaWQgMD09PXRoaXMuZGVmYXVsdFhTdGVwLGk9bmV3IG0odGhpcy54TWluLHRoaXMueE1heCx0aGlzLnhTdGVwLG8pLGkuc3RhcnQoKSxpLmdldEN1cnJlbnQoKTx0aGlzLnhNaW4mJmkubmV4dCgpOyFpLmVuZCgpOyl7dmFyIF89aS5nZXRDdXJyZW50KCk7dGhpcy5zaG93R3JpZD8odD10aGlzLl9jb252ZXJ0M0R0bzJEKG5ldyBsKF8sdGhpcy55TWluLHRoaXMuek1pbikpLGU9dGhpcy5fY29udmVydDNEdG8yRChuZXcgbChfLHRoaXMueU1heCx0aGlzLnpNaW4pKSx2LnN0cm9rZVN0eWxlPXRoaXMuZ3JpZENvbG9yLHYuYmVnaW5QYXRoKCksdi5tb3ZlVG8odC54LHQueSksdi5saW5lVG8oZS54LGUueSksdi5zdHJva2UoKSk6KHQ9dGhpcy5fY29udmVydDNEdG8yRChuZXcgbChfLHRoaXMueU1pbix0aGlzLnpNaW4pKSxlPXRoaXMuX2NvbnZlcnQzRHRvMkQobmV3IGwoXyx0aGlzLnlNaW4rZyx0aGlzLnpNaW4pKSx2LnN0cm9rZVN0eWxlPXRoaXMuYXhpc0NvbG9yLHYuYmVnaW5QYXRoKCksdi5tb3ZlVG8odC54LHQueSksdi5saW5lVG8oZS54LGUueSksdi5zdHJva2UoKSx0PXRoaXMuX2NvbnZlcnQzRHRvMkQobmV3IGwoXyx0aGlzLnlNYXgsdGhpcy56TWluKSksZT10aGlzLl9jb252ZXJ0M0R0bzJEKG5ldyBsKF8sdGhpcy55TWF4LWcsdGhpcy56TWluKSksdi5zdHJva2VTdHlsZT10aGlzLmF4aXNDb2xvcix2LmJlZ2luUGF0aCgpLHYubW92ZVRvKHQueCx0LnkpLHYubGluZVRvKGUueCxlLnkpLHYuc3Ryb2tlKCkpLHI9TWF0aC5jb3Modyk+MD90aGlzLnlNaW46dGhpcy55TWF4LG49dGhpcy5fY29udmVydDNEdG8yRChuZXcgbChfLHIsdGhpcy56TWluKSksTWF0aC5jb3MoMip3KT4wPyh2LnRleHRBbGlnbj0iY2VudGVyIix2LnRleHRCYXNlbGluZT0idG9wIixuLnkrPWIpOk1hdGguc2luKDIqdyk8MD8odi50ZXh0QWxpZ249InJpZ2h0Iix2LnRleHRCYXNlbGluZT0ibWlkZGxlIik6KHYudGV4dEFsaWduPSJsZWZ0Iix2LnRleHRCYXNlbGluZT0ibWlkZGxlIiksdi5maWxsU3R5bGU9dGhpcy5heGlzQ29sb3Isdi5maWxsVGV4dCgiICAiK3RoaXMueFZhbHVlTGFiZWwoaS5nZXRDdXJyZW50KCkpKyIgICIsbi54LG4ueSksaS5uZXh0KCl9Zm9yKHYubGluZVdpZHRoPTEsbz12b2lkIDA9PT10aGlzLmRlZmF1bHRZU3RlcCxpPW5ldyBtKHRoaXMueU1pbix0aGlzLnlNYXgsdGhpcy55U3RlcCxvKSxpLnN0YXJ0KCksaS5nZXRDdXJyZW50KCk8dGhpcy55TWluJiZpLm5leHQoKTshaS5lbmQoKTspdGhpcy5zaG93R3JpZD8odD10aGlzLl9jb252ZXJ0M0R0bzJEKG5ldyBsKHRoaXMueE1pbixpLmdldEN1cnJlbnQoKSx0aGlzLnpNaW4pKSxlPXRoaXMuX2NvbnZlcnQzRHRvMkQobmV3IGwodGhpcy54TWF4LGkuZ2V0Q3VycmVudCgpLHRoaXMuek1pbikpLHYuc3Ryb2tlU3R5bGU9dGhpcy5ncmlkQ29sb3Isdi5iZWdpblBhdGgoKSx2Lm1vdmVUbyh0LngsdC55KSx2LmxpbmVUbyhlLngsZS55KSx2LnN0cm9rZSgpKToodD10aGlzLl9jb252ZXJ0M0R0bzJEKG5ldyBsKHRoaXMueE1pbixpLmdldEN1cnJlbnQoKSx0aGlzLnpNaW4pKSxlPXRoaXMuX2NvbnZlcnQzRHRvMkQobmV3IGwodGhpcy54TWluK3ksaS5nZXRDdXJyZW50KCksdGhpcy56TWluKSksdi5zdHJva2VTdHlsZT10aGlzLmF4aXNDb2xvcix2LmJlZ2luUGF0aCgpLHYubW92ZVRvKHQueCx0LnkpLHYubGluZVRvKGUueCxlLnkpLHYuc3Ryb2tlKCksdD10aGlzLl9jb252ZXJ0M0R0bzJEKG5ldyBsKHRoaXMueE1heCxpLmdldEN1cnJlbnQoKSx0aGlzLnpNaW4pKSxlPXRoaXMuX2NvbnZlcnQzRHRvMkQobmV3IGwodGhpcy54TWF4LXksaS5nZXRDdXJyZW50KCksdGhpcy56TWluKSksdi5zdHJva2VTdHlsZT10aGlzLmF4aXNDb2xvcix2LmJlZ2luUGF0aCgpLHYubW92ZVRvKHQueCx0LnkpLHYubGluZVRvKGUueCxlLnkpLHYuc3Ryb2tlKCkpLHM9TWF0aC5zaW4odyk+MD90aGlzLnhNaW46dGhpcy54TWF4LG49dGhpcy5fY29udmVydDNEdG8yRChuZXcgbChzLGkuZ2V0Q3VycmVudCgpLHRoaXMuek1pbikpLE1hdGguY29zKDIqdyk8MD8odi50ZXh0QWxpZ249ImNlbnRlciIsdi50ZXh0QmFzZWxpbmU9InRvcCIsbi55Kz1iKTpNYXRoLnNpbigyKncpPjA/KHYudGV4dEFsaWduPSJyaWdodCIsdi50ZXh0QmFzZWxpbmU9Im1pZGRsZSIpOih2LnRleHRBbGlnbj0ibGVmdCIsdi50ZXh0QmFzZWxpbmU9Im1pZGRsZSIpLHYuZmlsbFN0eWxlPXRoaXMuYXhpc0NvbG9yLHYuZmlsbFRleHQoIiAgIit0aGlzLnlWYWx1ZUxhYmVsKGkuZ2V0Q3VycmVudCgpKSsiICAiLG4ueCxuLnkpLGkubmV4dCgpO2Zvcih2LmxpbmVXaWR0aD0xLG89dm9pZCAwPT09dGhpcy5kZWZhdWx0WlN0ZXAsaT1uZXcgbSh0aGlzLnpNaW4sdGhpcy56TWF4LHRoaXMuelN0ZXAsbyksaS5zdGFydCgpLGkuZ2V0Q3VycmVudCgpPHRoaXMuek1pbiYmaS5uZXh0KCkscz1NYXRoLmNvcyh3KT4wP3RoaXMueE1pbjp0aGlzLnhNYXgscj1NYXRoLnNpbih3KTwwP3RoaXMueU1pbjp0aGlzLnlNYXg7IWkuZW5kKCk7KXQ9dGhpcy5fY29udmVydDNEdG8yRChuZXcgbChzLHIsaS5nZXRDdXJyZW50KCkpKSx2LnN0cm9rZVN0eWxlPXRoaXMuYXhpc0NvbG9yLHYuYmVnaW5QYXRoKCksdi5tb3ZlVG8odC54LHQueSksdi5saW5lVG8odC54LWIsdC55KSx2LnN0cm9rZSgpLHYudGV4dEFsaWduPSJyaWdodCIsdi50ZXh0QmFzZWxpbmU9Im1pZGRsZSIsdi5maWxsU3R5bGU9dGhpcy5heGlzQ29sb3Isdi5maWxsVGV4dCh0aGlzLnpWYWx1ZUxhYmVsKGkuZ2V0Q3VycmVudCgpKSsiICIsdC54LTUsdC55KSxpLm5leHQoKTt2LmxpbmVXaWR0aD0xLHQ9dGhpcy5fY29udmVydDNEdG8yRChuZXcgbChzLHIsdGhpcy56TWluKSksZT10aGlzLl9jb252ZXJ0M0R0bzJEKG5ldyBsKHMscix0aGlzLnpNYXgpKSx2LnN0cm9rZVN0eWxlPXRoaXMuYXhpc0NvbG9yLHYuYmVnaW5QYXRoKCksdi5tb3ZlVG8odC54LHQueSksdi5saW5lVG8oZS54LGUueSksdi5zdHJva2UoKSx2LmxpbmVXaWR0aD0xLGM9dGhpcy5fY29udmVydDNEdG8yRChuZXcgbCh0aGlzLnhNaW4sdGhpcy55TWluLHRoaXMuek1pbikpLHA9dGhpcy5fY29udmVydDNEdG8yRChuZXcgbCh0aGlzLnhNYXgsdGhpcy55TWluLHRoaXMuek1pbikpLHYuc3Ryb2tlU3R5bGU9dGhpcy5heGlzQ29sb3Isdi5iZWdpblBhdGgoKSx2Lm1vdmVUbyhjLngsYy55KSx2LmxpbmVUbyhwLngscC55KSx2LnN0cm9rZSgpLGM9dGhpcy5fY29udmVydDNEdG8yRChuZXcgbCh0aGlzLnhNaW4sdGhpcy55TWF4LHRoaXMuek1pbikpLHA9dGhpcy5fY29udmVydDNEdG8yRChuZXcgbCh0aGlzLnhNYXgsdGhpcy55TWF4LHRoaXMuek1pbikpLHYuc3Ryb2tlU3R5bGU9dGhpcy5heGlzQ29sb3Isdi5iZWdpblBhdGgoKSx2Lm1vdmVUbyhjLngsYy55KSx2LmxpbmVUbyhwLngscC55KSx2LnN0cm9rZSgpLHYubGluZVdpZHRoPTEsdD10aGlzLl9jb252ZXJ0M0R0bzJEKG5ldyBsKHRoaXMueE1pbix0aGlzLnlNaW4sdGhpcy56TWluKSksZT10aGlzLl9jb252ZXJ0M0R0bzJEKG5ldyBsKHRoaXMueE1pbix0aGlzLnlNYXgsdGhpcy56TWluKSksdi5zdHJva2VTdHlsZT10aGlzLmF4aXNDb2xvcix2LmJlZ2luUGF0aCgpLHYubW92ZVRvKHQueCx0LnkpLHYubGluZVRvKGUueCxlLnkpLHYuc3Ryb2tlKCksdD10aGlzLl9jb252ZXJ0M0R0bzJEKG5ldyBsKHRoaXMueE1heCx0aGlzLnlNaW4sdGhpcy56TWluKSksZT10aGlzLl9jb252ZXJ0M0R0bzJEKG5ldyBsKHRoaXMueE1heCx0aGlzLnlNYXgsdGhpcy56TWluKSksdi5zdHJva2VTdHlsZT10aGlzLmF4aXNDb2xvcix2LmJlZ2luUGF0aCgpLHYubW92ZVRvKHQueCx0LnkpLHYubGluZVRvKGUueCxlLnkpLHYuc3Ryb2tlKCk7dmFyIHg9dGhpcy54TGFiZWw7eC5sZW5ndGg+MCYmKHU9LjEvdGhpcy5zY2FsZS55LHM9KHRoaXMueE1pbit0aGlzLnhNYXgpLzIscj1NYXRoLmNvcyh3KT4wP3RoaXMueU1pbi11OnRoaXMueU1heCt1LG49dGhpcy5fY29udmVydDNEdG8yRChuZXcgbChzLHIsdGhpcy56TWluKSksTWF0aC5jb3MoMip3KT4wPyh2LnRleHRBbGlnbj0iY2VudGVyIix2LnRleHRCYXNlbGluZT0idG9wIik6TWF0aC5zaW4oMip3KTwwPyh2LnRleHRBbGlnbj0icmlnaHQiLHYudGV4dEJhc2VsaW5lPSJtaWRkbGUiKToodi50ZXh0QWxpZ249ImxlZnQiLHYudGV4dEJhc2VsaW5lPSJtaWRkbGUiKSx2LmZpbGxTdHlsZT10aGlzLmF4aXNDb2xvcix2LmZpbGxUZXh0KHgsbi54LG4ueSkpO3ZhciBrPXRoaXMueUxhYmVsO2subGVuZ3RoPjAmJihkPS4xL3RoaXMuc2NhbGUueCxzPU1hdGguc2luKHcpPjA/dGhpcy54TWluLWQ6dGhpcy54TWF4K2Qscj0odGhpcy55TWluK3RoaXMueU1heCkvMixuPXRoaXMuX2NvbnZlcnQzRHRvMkQobmV3IGwocyxyLHRoaXMuek1pbikpLE1hdGguY29zKDIqdyk8MD8odi50ZXh0QWxpZ249ImNlbnRlciIsdi50ZXh0QmFzZWxpbmU9InRvcCIpOk1hdGguc2luKDIqdyk+MD8odi50ZXh0QWxpZ249InJpZ2h0Iix2LnRleHRCYXNlbGluZT0ibWlkZGxlIik6KHYudGV4dEFsaWduPSJsZWZ0Iix2LnRleHRCYXNlbGluZT0ibWlkZGxlIiksdi5maWxsU3R5bGU9dGhpcy5heGlzQ29sb3Isdi5maWxsVGV4dChrLG4ueCxuLnkpKTt2YXIgTT10aGlzLnpMYWJlbDtNLmxlbmd0aD4wJiYoaD0zMCxzPU1hdGguY29zKHcpPjA/dGhpcy54TWluOnRoaXMueE1heCxyPU1hdGguc2luKHcpPDA/dGhpcy55TWluOnRoaXMueU1heCxhPSh0aGlzLnpNaW4rdGhpcy56TWF4KS8yLG49dGhpcy5fY29udmVydDNEdG8yRChuZXcgbChzLHIsYSkpLHYudGV4dEFsaWduPSJyaWdodCIsdi50ZXh0QmFzZWxpbmU9Im1pZGRsZSIsdi5maWxsU3R5bGU9dGhpcy5heGlzQ29sb3Isdi5maWxsVGV4dChNLG4ueC1oLG4ueSkpfSxvLnByb3RvdHlwZS5faHN2MnJnYj1mdW5jdGlvbih0LGUsaSl7dmFyIG8sbixzLHIsYSxoO3N3aXRjaChyPWkqZSxhPU1hdGguZmxvb3IodC82MCksaD1yKigxLU1hdGguYWJzKHQvNjAlMi0xKSksYSl7Y2FzZSAwOm89cixuPWgscz0wO2JyZWFrO2Nhc2UgMTpvPWgsbj1yLHM9MDticmVhaztjYXNlIDI6bz0wLG49cixzPWg7YnJlYWs7Y2FzZSAzOm89MCxuPWgscz1yO2JyZWFrO2Nhc2UgNDpvPWgsbj0wLHM9cjticmVhaztjYXNlIDU6bz1yLG49MCxzPWg7YnJlYWs7ZGVmYXVsdDpvPTAsbj0wLHM9MH1yZXR1cm4iUkdCKCIrcGFyc2VJbnQoMjU1Km8pKyIsIitwYXJzZUludCgyNTUqbikrIiwiK3BhcnNlSW50KDI1NSpzKSsiKSJ9LG8ucHJvdG90eXBlLl9yZWRyYXdEYXRhR3JpZD1mdW5jdGlvbigpe3ZhciB0LGUsaSxuLHMscixhLGgsZCx1LGMscCxmPXRoaXMuZnJhbWUuY2FudmFzLG09Zi5nZXRDb250ZXh0KCIyZCIpO2lmKG0ubGluZUpvaW49InJvdW5kIixtLmxpbmVDYXA9InJvdW5kIiwhKHZvaWQgMD09PXRoaXMuZGF0YVBvaW50c3x8dGhpcy5kYXRhUG9pbnRzLmxlbmd0aDw9MCkpe2ZvcihzPTA7czx0aGlzLmRhdGFQb2ludHMubGVuZ3RoO3MrKyl7dmFyIHY9dGhpcy5fY29udmVydFBvaW50VG9UcmFuc2xhdGlvbih0aGlzLmRhdGFQb2ludHNbc10ucG9pbnQpLGc9dGhpcy5fY29udmVydFRyYW5zbGF0aW9uVG9TY3JlZW4odik7dGhpcy5kYXRhUG9pbnRzW3NdLnRyYW5zPXYsdGhpcy5kYXRhUG9pbnRzW3NdLnNjcmVlbj1nO3ZhciB5PXRoaXMuX2NvbnZlcnRQb2ludFRvVHJhbnNsYXRpb24odGhpcy5kYXRhUG9pbnRzW3NdLmJvdHRvbSk7dGhpcy5kYXRhUG9pbnRzW3NdLmRpc3Q9dGhpcy5zaG93UGVyc3BlY3RpdmU/eS5sZW5ndGgoKToteS56fXZhciBiPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZGlzdC10LmRpc3R9O2lmKHRoaXMuZGF0YVBvaW50cy5zb3J0KGIpLHRoaXMuc3R5bGU9PT1vLlNUWUxFLlNVUkZBQ0Upe2ZvcihzPTA7czx0aGlzLmRhdGFQb2ludHMubGVuZ3RoO3MrKylpZih0PXRoaXMuZGF0YVBvaW50c1tzXSxlPXRoaXMuZGF0YVBvaW50c1tzXS5wb2ludFJpZ2h0LGk9dGhpcy5kYXRhUG9pbnRzW3NdLnBvaW50VG9wLG49dGhpcy5kYXRhUG9pbnRzW3NdLnBvaW50Q3Jvc3Msdm9pZCAwIT09dCYmdm9pZCAwIT09ZSYmdm9pZCAwIT09aSYmdm9pZCAwIT09bil7aWYodGhpcy5zaG93R3JheUJvdHRvbXx8dGhpcy5zaG93U2hhZG93KXt2YXIgdz1sLnN1YnRyYWN0KG4udHJhbnMsdC50cmFucyksXz1sLnN1YnRyYWN0KGkudHJhbnMsZS50cmFucykseD1sLmNyb3NzUHJvZHVjdCh3LF8pLGs9eC5sZW5ndGgoKTtyPXguej4wfWVsc2Ugcj0hMDtyPyhwPSh0LnBvaW50LnorZS5wb2ludC56K2kucG9pbnQueituLnBvaW50LnopLzQsZD0yNDAqKDEtKHAtdGhpcy56TWluKSp0aGlzLnNjYWxlLnovdGhpcy52ZXJ0aWNhbFJhdGlvKSx1PTEsdGhpcy5zaG93U2hhZG93PyhjPU1hdGgubWluKDEreC54L2svMiwxKSxhPXRoaXMuX2hzdjJyZ2IoZCx1LGMpLGg9YSk6KGM9MSxhPXRoaXMuX2hzdjJyZ2IoZCx1LGMpLGg9dGhpcy5heGlzQ29sb3IpKTooYT0iZ3JheSIsaD10aGlzLmF4aXNDb2xvciksbS5saW5lV2lkdGg9dGhpcy5fZ2V0U3Ryb2tlV2lkdGgodCksbS5maWxsU3R5bGU9YSxtLnN0cm9rZVN0eWxlPWgsbS5iZWdpblBhdGgoKSxtLm1vdmVUbyh0LnNjcmVlbi54LHQuc2NyZWVuLnkpLG0ubGluZVRvKGUuc2NyZWVuLngsZS5zY3JlZW4ueSksbS5saW5lVG8obi5zY3JlZW4ueCxuLnNjcmVlbi55KSxtLmxpbmVUbyhpLnNjcmVlbi54LGkuc2NyZWVuLnkpLG0uY2xvc2VQYXRoKCksbS5maWxsKCksbS5zdHJva2UoKX19ZWxzZSBmb3Iocz0wO3M8dGhpcy5kYXRhUG9pbnRzLmxlbmd0aDtzKyspdD10aGlzLmRhdGFQb2ludHNbc10sZT10aGlzLmRhdGFQb2ludHNbc10ucG9pbnRSaWdodCxpPXRoaXMuZGF0YVBvaW50c1tzXS5wb2ludFRvcCx2b2lkIDAhPT10JiZ2b2lkIDAhPT1lJiYocD0odC5wb2ludC56K2UucG9pbnQueikvMixkPTI0MCooMS0ocC10aGlzLnpNaW4pKnRoaXMuc2NhbGUuei90aGlzLnZlcnRpY2FsUmF0aW8pLG0ubGluZVdpZHRoPTIqdGhpcy5fZ2V0U3Ryb2tlV2lkdGgodCksbS5zdHJva2VTdHlsZT10aGlzLl9oc3YycmdiKGQsMSwxKSxtLmJlZ2luUGF0aCgpLG0ubW92ZVRvKHQuc2NyZWVuLngsdC5zY3JlZW4ueSksbS5saW5lVG8oZS5zY3JlZW4ueCxlLnNjcmVlbi55KSxtLnN0cm9rZSgpKSx2b2lkIDAhPT10JiZ2b2lkIDAhPT1pJiYocD0odC5wb2ludC56K2kucG9pbnQueikvMixkPTI0MCooMS0ocC10aGlzLnpNaW4pKnRoaXMuc2NhbGUuei90aGlzLnZlcnRpY2FsUmF0aW8pLG0ubGluZVdpZHRoPTIqdGhpcy5fZ2V0U3Ryb2tlV2lkdGgodCksbS5zdHJva2VTdHlsZT10aGlzLl9oc3YycmdiKGQsMSwxKSxtLmJlZ2luUGF0aCgpLG0ubW92ZVRvKHQuc2NyZWVuLngsdC5zY3JlZW4ueSksbS5saW5lVG8oaS5zY3JlZW4ueCxpLnNjcmVlbi55KSxtLnN0cm9rZSgpKX19LG8ucHJvdG90eXBlLl9nZXRTdHJva2VXaWR0aD1mdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwIT09dD90aGlzLnNob3dQZXJzcGVjdGl2ZT8xLy10LnRyYW5zLnoqdGhpcy5kYXRhQ29sb3Iuc3Ryb2tlV2lkdGg6LSh0aGlzLmV5ZS56L3RoaXMuY2FtZXJhLmdldEFybUxlbmd0aCgpKSp0aGlzLmRhdGFDb2xvci5zdHJva2VXaWR0aDp0aGlzLmRhdGFDb2xvci5zdHJva2VXaWR0aH0sby5wcm90b3R5cGUuX3JlZHJhd0RhdGFEb3Q9ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMuZnJhbWUuY2FudmFzLGk9ZS5nZXRDb250ZXh0KCIyZCIpO2lmKCEodm9pZCAwPT09dGhpcy5kYXRhUG9pbnRzfHx0aGlzLmRhdGFQb2ludHMubGVuZ3RoPD0wKSl7Zm9yKHQ9MDt0PHRoaXMuZGF0YVBvaW50cy5sZW5ndGg7dCsrKXt2YXIgbj10aGlzLl9jb252ZXJ0UG9pbnRUb1RyYW5zbGF0aW9uKHRoaXMuZGF0YVBvaW50c1t0XS5wb2ludCkscz10aGlzLl9jb252ZXJ0VHJhbnNsYXRpb25Ub1NjcmVlbihuKTt0aGlzLmRhdGFQb2ludHNbdF0udHJhbnM9bix0aGlzLmRhdGFQb2ludHNbdF0uc2NyZWVuPXM7dmFyIHI9dGhpcy5fY29udmVydFBvaW50VG9UcmFuc2xhdGlvbih0aGlzLmRhdGFQb2ludHNbdF0uYm90dG9tKTt0aGlzLmRhdGFQb2ludHNbdF0uZGlzdD10aGlzLnNob3dQZXJzcGVjdGl2ZT9yLmxlbmd0aCgpOi1yLnp9dmFyIGE9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5kaXN0LXQuZGlzdH07dGhpcy5kYXRhUG9pbnRzLnNvcnQoYSk7dmFyIGg9LjAyKnRoaXMuZnJhbWUuY2xpZW50V2lkdGg7Zm9yKHQ9MDt0PHRoaXMuZGF0YVBvaW50cy5sZW5ndGg7dCsrKXt2YXIgZD10aGlzLmRhdGFQb2ludHNbdF07aWYodGhpcy5zdHlsZT09PW8uU1RZTEUuRE9UTElORSl7dmFyIGw9dGhpcy5fY29udmVydDNEdG8yRChkLmJvdHRvbSk7aS5saW5lV2lkdGg9MSxpLnN0cm9rZVN0eWxlPXRoaXMuZ3JpZENvbG9yLGkuYmVnaW5QYXRoKCksaS5tb3ZlVG8obC54LGwueSksaS5saW5lVG8oZC5zY3JlZW4ueCxkLnNjcmVlbi55KSxpLnN0cm9rZSgpfXZhciB1O3U9dGhpcy5zdHlsZT09PW8uU1RZTEUuRE9UU0laRT9oLzIrMipoKihkLnBvaW50LnZhbHVlLXRoaXMudmFsdWVNaW4pLyh0aGlzLnZhbHVlTWF4LXRoaXMudmFsdWVNaW4pOmg7dmFyIGM7Yz10aGlzLnNob3dQZXJzcGVjdGl2ZT91Ly1kLnRyYW5zLno6dSotKHRoaXMuZXllLnovdGhpcy5jYW1lcmEuZ2V0QXJtTGVuZ3RoKCkpLDA+YyYmKGM9MCk7dmFyIHAsZixtO3RoaXMuc3R5bGU9PT1vLlNUWUxFLkRPVENPTE9SPyhwPTI0MCooMS0oZC5wb2ludC52YWx1ZS10aGlzLnZhbHVlTWluKSp0aGlzLnNjYWxlLnZhbHVlKSxmPXRoaXMuX2hzdjJyZ2IocCwxLDEpLG09dGhpcy5faHN2MnJnYihwLDEsLjgpKTp0aGlzLnN0eWxlPT09by5TVFlMRS5ET1RTSVpFPyhmPXRoaXMuZGF0YUNvbG9yLmZpbGwsbT10aGlzLmRhdGFDb2xvci5zdHJva2UpOihwPTI0MCooMS0oZC5wb2ludC56LXRoaXMuek1pbikqdGhpcy5zY2FsZS56L3RoaXMudmVydGljYWxSYXRpbyksZj10aGlzLl9oc3YycmdiKHAsMSwxKSxtPXRoaXMuX2hzdjJyZ2IocCwxLC44KSksaS5saW5lV2lkdGg9dGhpcy5fZ2V0U3Ryb2tlV2lkdGgoZCksaS5zdHJva2VTdHlsZT1tLGkuZmlsbFN0eWxlPWYsaS5iZWdpblBhdGgoKSxpLmFyYyhkLnNjcmVlbi54LGQuc2NyZWVuLnksYywwLDIqTWF0aC5QSSwhMCksaS5maWxsKCksaS5zdHJva2UoKX19fSxvLnByb3RvdHlwZS5fcmVkcmF3RGF0YUJhcj1mdW5jdGlvbigpe3ZhciB0LGUsaSxuLHM9dGhpcy5mcmFtZS5jYW52YXMscj1zLmdldENvbnRleHQoIjJkIik7aWYoISh2b2lkIDA9PT10aGlzLmRhdGFQb2ludHN8fHRoaXMuZGF0YVBvaW50cy5sZW5ndGg8PTApKXtmb3IodD0wO3Q8dGhpcy5kYXRhUG9pbnRzLmxlbmd0aDt0Kyspe3ZhciBhPXRoaXMuX2NvbnZlcnRQb2ludFRvVHJhbnNsYXRpb24odGhpcy5kYXRhUG9pbnRzW3RdLnBvaW50KSxoPXRoaXMuX2NvbnZlcnRUcmFuc2xhdGlvblRvU2NyZWVuKGEpO3RoaXMuZGF0YVBvaW50c1t0XS50cmFucz1hLHRoaXMuZGF0YVBvaW50c1t0XS5zY3JlZW49aDt2YXIgZD10aGlzLl9jb252ZXJ0UG9pbnRUb1RyYW5zbGF0aW9uKHRoaXMuZGF0YVBvaW50c1t0XS5ib3R0b20pO3RoaXMuZGF0YVBvaW50c1t0XS5kaXN0PXRoaXMuc2hvd1BlcnNwZWN0aXZlP2QubGVuZ3RoKCk6LWQuen12YXIgdT1mdW5jdGlvbih0LGUpe3JldHVybiBlLmRpc3QtdC5kaXN0fTt0aGlzLmRhdGFQb2ludHMuc29ydCh1KSxyLmxpbmVKb2luPSJyb3VuZCIsci5saW5lQ2FwPSJyb3VuZCI7dmFyIGM9dGhpcy54QmFyV2lkdGgvMixwPXRoaXMueUJhcldpZHRoLzI7Zm9yKHQ9MDt0PHRoaXMuZGF0YVBvaW50cy5sZW5ndGg7dCsrKXt2YXIgZixtLHYsZz10aGlzLmRhdGFQb2ludHNbdF07dGhpcy5zdHlsZT09PW8uU1RZTEUuQkFSQ09MT1I/KGY9MjQwKigxLShnLnBvaW50LnZhbHVlLXRoaXMudmFsdWVNaW4pKnRoaXMuc2NhbGUudmFsdWUpLG09dGhpcy5faHN2MnJnYihmLDEsMSksdj10aGlzLl9oc3YycmdiKGYsMSwuOCkpOnRoaXMuc3R5bGU9PT1vLlNUWUxFLkJBUlNJWkU/KG09dGhpcy5kYXRhQ29sb3IuZmlsbCx2PXRoaXMuZGF0YUNvbG9yLnN0cm9rZSk6KGY9MjQwKigxLShnLnBvaW50LnotdGhpcy56TWluKSp0aGlzLnNjYWxlLnovdGhpcy52ZXJ0aWNhbFJhdGlvKSxtPXRoaXMuX2hzdjJyZ2IoZiwxLDEpLHY9dGhpcy5faHN2MnJnYihmLDEsLjgpKSx0aGlzLnN0eWxlPT09by5TVFlMRS5CQVJTSVpFJiYoYz10aGlzLnhCYXJXaWR0aC8yKigoZy5wb2ludC52YWx1ZS10aGlzLnZhbHVlTWluKS8odGhpcy52YWx1ZU1heC10aGlzLnZhbHVlTWluKSouOCsuMikscD10aGlzLnlCYXJXaWR0aC8yKigoZy5wb2ludC52YWx1ZS10aGlzLnZhbHVlTWluKS8odGhpcy52YWx1ZU1heC10aGlzLnZhbHVlTWluKSouOCsuMikpO3ZhciB5PXRoaXMsYj1nLnBvaW50LHc9W3twb2ludDpuZXcgbChiLngtYyxiLnktcCxiLnopfSx7cG9pbnQ6bmV3IGwoYi54K2MsYi55LXAsYi56KX0se3BvaW50Om5ldyBsKGIueCtjLGIueStwLGIueil9LHtwb2ludDpuZXcgbChiLngtYyxiLnkrcCxiLnopfV0sXz1be3BvaW50Om5ldyBsKGIueC1jLGIueS1wLHRoaXMuek1pbil9LHtwb2ludDpuZXcgbChiLngrYyxiLnktcCx0aGlzLnpNaW4pfSx7cG9pbnQ6bmV3IGwoYi54K2MsYi55K3AsdGhpcy56TWluKX0se3BvaW50Om5ldyBsKGIueC1jLGIueStwLHRoaXMuek1pbil9XTt3LmZvckVhY2goZnVuY3Rpb24odCl7dC5zY3JlZW49eS5fY29udmVydDNEdG8yRCh0LnBvaW50KX0pLF8uZm9yRWFjaChmdW5jdGlvbih0KXt0LnNjcmVlbj15Ll9jb252ZXJ0M0R0bzJEKHQucG9pbnQpfSk7dmFyIHg9W3tjb3JuZXJzOncsY2VudGVyOmwuYXZnKF9bMF0ucG9pbnQsX1syXS5wb2ludCl9LHtjb3JuZXJzOlt3WzBdLHdbMV0sX1sxXSxfWzBdXSxjZW50ZXI6bC5hdmcoX1sxXS5wb2ludCxfWzBdLnBvaW50KX0se2Nvcm5lcnM6W3dbMV0sd1syXSxfWzJdLF9bMV1dLGNlbnRlcjpsLmF2ZyhfWzJdLnBvaW50LF9bMV0ucG9pbnQpfSx7Y29ybmVyczpbd1syXSx3WzNdLF9bM10sX1syXV0sY2VudGVyOmwuYXZnKF9bM10ucG9pbnQsX1syXS5wb2ludCl9LHtjb3JuZXJzOlt3WzNdLHdbMF0sX1swXSxfWzNdXSxjZW50ZXI6bC5hdmcoX1swXS5wb2ludCxfWzNdLnBvaW50KX1dO2ZvcihnLnN1cmZhY2VzPXgsZT0wO2U8eC5sZW5ndGg7ZSsrKXtpPXhbZV07dmFyIGs9dGhpcy5fY29udmVydFBvaW50VG9UcmFuc2xhdGlvbihpLmNlbnRlcik7aS5kaXN0PXRoaXMuc2hvd1BlcnNwZWN0aXZlP2subGVuZ3RoKCk6LWsuen1mb3IoeC5zb3J0KGZ1bmN0aW9uKHQsZSl7dmFyIGk9ZS5kaXN0LXQuZGlzdDtyZXR1cm4gaT9pOnQuY29ybmVycz09PXc/MTplLmNvcm5lcnM9PT13Py0xOjB9KSxyLmxpbmVXaWR0aD10aGlzLl9nZXRTdHJva2VXaWR0aChnKSxyLnN0cm9rZVN0eWxlPXYsci5maWxsU3R5bGU9bSxlPTI7ZTx4Lmxlbmd0aDtlKyspaT14W2VdLG49aS5jb3JuZXJzLHIuYmVnaW5QYXRoKCksci5tb3ZlVG8oblszXS5zY3JlZW4ueCxuWzNdLnNjcmVlbi55KSxyLmxpbmVUbyhuWzBdLnNjcmVlbi54LG5bMF0uc2NyZWVuLnkpLHIubGluZVRvKG5bMV0uc2NyZWVuLngsblsxXS5zY3JlZW4ueSksci5saW5lVG8oblsyXS5zY3JlZW4ueCxuWzJdLnNjcmVlbi55KSxyLmxpbmVUbyhuWzNdLnNjcmVlbi54LG5bM10uc2NyZWVuLnkpLHIuZmlsbCgpLHIuc3Ryb2tlKCl9fX0sby5wcm90b3R5cGUuX3JlZHJhd0RhdGFMaW5lPWZ1bmN0aW9uKCl7dmFyIHQsZSxpPXRoaXMuZnJhbWUuY2FudmFzLG89aS5nZXRDb250ZXh0KCIyZCIpO2lmKCEodm9pZCAwPT09dGhpcy5kYXRhUG9pbnRzfHx0aGlzLmRhdGFQb2ludHMubGVuZ3RoPD0wKSl7Zm9yKGU9MDtlPHRoaXMuZGF0YVBvaW50cy5sZW5ndGg7ZSsrKXt2YXIgbj10aGlzLl9jb252ZXJ0UG9pbnRUb1RyYW5zbGF0aW9uKHRoaXMuZGF0YVBvaW50c1tlXS5wb2ludCkscz10aGlzLl9jb252ZXJ0VHJhbnNsYXRpb25Ub1NjcmVlbihuKTt0aGlzLmRhdGFQb2ludHNbZV0udHJhbnM9bix0aGlzLmRhdGFQb2ludHNbZV0uc2NyZWVuPXN9aWYodGhpcy5kYXRhUG9pbnRzLmxlbmd0aD4wKXtmb3IodD10aGlzLmRhdGFQb2ludHNbMF0sby5saW5lV2lkdGg9dGhpcy5fZ2V0U3Ryb2tlV2lkdGgodCksby5saW5lSm9pbj0icm91bmQiLG8ubGluZUNhcD0icm91bmQiLG8uc3Ryb2tlU3R5bGU9dGhpcy5kYXRhQ29sb3Iuc3Ryb2tlLG8uYmVnaW5QYXRoKCksby5tb3ZlVG8odC5zY3JlZW4ueCx0LnNjcmVlbi55KSxlPTE7ZTx0aGlzLmRhdGFQb2ludHMubGVuZ3RoO2UrKyl0PXRoaXMuZGF0YVBvaW50c1tlXSxvLmxpbmVUbyh0LnNjcmVlbi54LHQuc2NyZWVuLnkpO28uc3Ryb2tlKCl9fX0sby5wcm90b3R5cGUuX29uTW91c2VEb3duPWZ1bmN0aW9uKHQpe2lmKHQ9dHx8d2luZG93LmV2ZW50LHRoaXMubGVmdEJ1dHRvbkRvd24mJnRoaXMuX29uTW91c2VVcCh0KSx0aGlzLmxlZnRCdXR0b25Eb3duPXQud2hpY2g/MT09PXQud2hpY2g6MT09PXQuYnV0dG9uLHRoaXMubGVmdEJ1dHRvbkRvd258fHRoaXMudG91Y2hEb3duKXt0aGlzLnN0YXJ0TW91c2VYPW4odCksdGhpcy5zdGFydE1vdXNlWT1zKHQpLHRoaXMuc3RhcnRTdGFydD1uZXcgRGF0ZSh0aGlzLnN0YXJ0KSx0aGlzLnN0YXJ0RW5kPW5ldyBEYXRlKHRoaXMuZW5kKSx0aGlzLnN0YXJ0QXJtUm90YXRpb249dGhpcy5jYW1lcmEuZ2V0QXJtUm90YXRpb24oKSx0aGlzLmZyYW1lLnN0eWxlLmN1cnNvcj0ibW92ZSI7dmFyIGU9dGhpczt0aGlzLm9ubW91c2Vtb3ZlPWZ1bmN0aW9uKHQpe2UuX29uTW91c2VNb3ZlKHQpfSx0aGlzLm9ubW91c2V1cD1mdW5jdGlvbih0KXtlLl9vbk1vdXNlVXAodCl9LGQuYWRkRXZlbnRMaXN0ZW5lcihkb2N1bWVudCwibW91c2Vtb3ZlIixlLm9ubW91c2Vtb3ZlKSxkLmFkZEV2ZW50TGlzdGVuZXIoZG9jdW1lbnQsIm1vdXNldXAiLGUub25tb3VzZXVwKSxkLnByZXZlbnREZWZhdWx0KHQpfX0sby5wcm90b3R5cGUuX29uTW91c2VNb3ZlPWZ1bmN0aW9uKHQpe3Q9dHx8d2luZG93LmV2ZW50O3ZhciBlPXBhcnNlRmxvYXQobih0KSktdGhpcy5zdGFydE1vdXNlWCxpPXBhcnNlRmxvYXQocyh0KSktdGhpcy5zdGFydE1vdXNlWSxvPXRoaXMuc3RhcnRBcm1Sb3RhdGlvbi5ob3Jpem9udGFsK2UvMjAwLHI9dGhpcy5zdGFydEFybVJvdGF0aW9uLnZlcnRpY2FsK2kvMjAwLGE9NCxoPU1hdGguc2luKGEvMzYwKjIqTWF0aC5QSSk7TWF0aC5hYnMoTWF0aC5zaW4obykpPGgmJihvPU1hdGgucm91bmQoby9NYXRoLlBJKSpNYXRoLlBJLS4wMDEpLE1hdGguYWJzKE1hdGguY29zKG8pKTxoJiYobz0oTWF0aC5yb3VuZChvL01hdGguUEktLjUpKy41KSpNYXRoLlBJLS4wMDEpLE1hdGguYWJzKE1hdGguc2luKHIpKTxoJiYocj1NYXRoLnJvdW5kKHIvTWF0aC5QSSkqTWF0aC5QSSksTWF0aC5hYnMoTWF0aC5jb3MocikpPGgmJihyPShNYXRoLnJvdW5kKHIvTWF0aC5QSS0uNSkrLjUpKk1hdGguUEkpLHRoaXMuY2FtZXJhLnNldEFybVJvdGF0aW9uKG8sciksdGhpcy5yZWRyYXcoKTt2YXIgbD10aGlzLmdldENhbWVyYVBvc2l0aW9uKCk7dGhpcy5lbWl0KCJjYW1lcmFQb3NpdGlvbkNoYW5nZSIsbCksZC5wcmV2ZW50RGVmYXVsdCh0KX0sby5wcm90b3R5cGUuX29uTW91c2VVcD1mdW5jdGlvbih0KXt0aGlzLmZyYW1lLnN0eWxlLmN1cnNvcj0iYXV0byIsdGhpcy5sZWZ0QnV0dG9uRG93bj0hMSxkLnJlbW92ZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQsIm1vdXNlbW92ZSIsdGhpcy5vbm1vdXNlbW92ZSksZC5yZW1vdmVFdmVudExpc3RlbmVyKGRvY3VtZW50LCJtb3VzZXVwIix0aGlzLm9ubW91c2V1cCksZC5wcmV2ZW50RGVmYXVsdCh0KX0sby5wcm90b3R5cGUuX29uVG9vbHRpcD1mdW5jdGlvbih0KXt2YXIgZT0zMDAsaT10aGlzLmZyYW1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG89bih0KS1pLmxlZnQscj1zKHQpLWkudG9wO2lmKHRoaXMuc2hvd1Rvb2x0aXApe2lmKHRoaXMudG9vbHRpcFRpbWVvdXQmJmNsZWFyVGltZW91dCh0aGlzLnRvb2x0aXBUaW1lb3V0KSx0aGlzLmxlZnRCdXR0b25Eb3duKXJldHVybiB2b2lkIHRoaXMuX2hpZGVUb29sdGlwKCk7aWYodGhpcy50b29sdGlwJiZ0aGlzLnRvb2x0aXAuZGF0YVBvaW50KXt2YXIgYT10aGlzLl9kYXRhUG9pbnRGcm9tWFkobyxyKTthIT09dGhpcy50b29sdGlwLmRhdGFQb2ludCYmKGE/dGhpcy5fc2hvd1Rvb2x0aXAoYSk6dGhpcy5faGlkZVRvb2x0aXAoKSl9ZWxzZXt2YXIgaD10aGlzO3RoaXMudG9vbHRpcFRpbWVvdXQ9c2V0VGltZW91dChmdW5jdGlvbigpe2gudG9vbHRpcFRpbWVvdXQ9bnVsbDt2YXIgdD1oLl9kYXRhUG9pbnRGcm9tWFkobyxyKTt0JiZoLl9zaG93VG9vbHRpcCh0KX0sZSl9fX0sby5wcm90b3R5cGUuX29uVG91Y2hTdGFydD1mdW5jdGlvbih0KXt0aGlzLnRvdWNoRG93bj0hMDt2YXIgZT10aGlzO3RoaXMub250b3VjaG1vdmU9ZnVuY3Rpb24odCl7ZS5fb25Ub3VjaE1vdmUodCl9LHRoaXMub250b3VjaGVuZD1mdW5jdGlvbih0KXtlLl9vblRvdWNoRW5kKHQpfSxkLmFkZEV2ZW50TGlzdGVuZXIoZG9jdW1lbnQsInRvdWNobW92ZSIsZS5vbnRvdWNobW92ZSksZC5hZGRFdmVudExpc3RlbmVyKGRvY3VtZW50LCJ0b3VjaGVuZCIsZS5vbnRvdWNoZW5kKSx0aGlzLl9vbk1vdXNlRG93bih0KX0sby5wcm90b3R5cGUuX29uVG91Y2hNb3ZlPWZ1bmN0aW9uKHQpe3RoaXMuX29uTW91c2VNb3ZlKHQpfSxvLnByb3RvdHlwZS5fb25Ub3VjaEVuZD1mdW5jdGlvbih0KXt0aGlzLnRvdWNoRG93bj0hMSxkLnJlbW92ZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQsInRvdWNobW92ZSIsdGhpcy5vbnRvdWNobW92ZSksZC5yZW1vdmVFdmVudExpc3RlbmVyKGRvY3VtZW50LCJ0b3VjaGVuZCIsdGhpcy5vbnRvdWNoZW5kKSx0aGlzLl9vbk1vdXNlVXAodCl9LG8ucHJvdG90eXBlLl9vbldoZWVsPWZ1bmN0aW9uKHQpe3R8fCh0PXdpbmRvdy5ldmVudCk7dmFyIGU9MDtpZih0LndoZWVsRGVsdGE/ZT10LndoZWVsRGVsdGEvMTIwOnQuZGV0YWlsJiYoZT0tdC5kZXRhaWwvMyksZSl7dmFyIGk9dGhpcy5jYW1lcmEuZ2V0QXJtTGVuZ3RoKCksbz1pKigxLWUvMTApO3RoaXMuY2FtZXJhLnNldEFybUxlbmd0aChvKSx0aGlzLnJlZHJhdygpLHRoaXMuX2hpZGVUb29sdGlwKCl9dmFyIG49dGhpcy5nZXRDYW1lcmFQb3NpdGlvbigpO3RoaXMuZW1pdCgiY2FtZXJhUG9zaXRpb25DaGFuZ2UiLG4pLGQucHJldmVudERlZmF1bHQodCl9LG8ucHJvdG90eXBlLl9pbnNpZGVUcmlhbmdsZT1mdW5jdGlvbih0LGUpe2Z1bmN0aW9uIGkodCl7cmV0dXJuIHQ+MD8xOjA+dD8tMTowfXZhciBvPWVbMF0sbj1lWzFdLHM9ZVsyXSxyPWkoKG4ueC1vLngpKih0Lnktby55KS0obi55LW8ueSkqKHQueC1vLngpKSxhPWkoKHMueC1uLngpKih0Lnktbi55KS0ocy55LW4ueSkqKHQueC1uLngpKSxoPWkoKG8ueC1zLngpKih0Lnktcy55KS0oby55LXMueSkqKHQueC1zLngpKTtyZXR1cm4hKDAhPXImJjAhPWEmJnIhPWF8fDAhPWEmJjAhPWgmJmEhPWh8fDAhPXImJjAhPWgmJnIhPWgpfSxvLnByb3RvdHlwZS5fZGF0YVBvaW50RnJvbVhZPWZ1bmN0aW9uKHQsZSl7dmFyIGksbj0xMDAscz1udWxsLHI9bnVsbCxhPW51bGwsaD1uZXcgdSh0LGUpO2lmKHRoaXMuc3R5bGU9PT1vLlNUWUxFLkJBUnx8dGhpcy5zdHlsZT09PW8uU1RZTEUuQkFSQ09MT1J8fHRoaXMuc3R5bGU9PT1vLlNUWUxFLkJBUlNJWkUpZm9yKGk9dGhpcy5kYXRhUG9pbnRzLmxlbmd0aC0xO2k+PTA7aS0tKXtzPXRoaXMuZGF0YVBvaW50c1tpXTt2YXIgZD1zLnN1cmZhY2VzO2lmKGQpZm9yKHZhciBsPWQubGVuZ3RoLTE7bD49MDtsLS0pe3ZhciBjPWRbbF0scD1jLmNvcm5lcnMsZj1bcFswXS5zY3JlZW4scFsxXS5zY3JlZW4scFsyXS5zY3JlZW5dLG09W3BbMl0uc2NyZWVuLHBbM10uc2NyZWVuLHBbMF0uc2NyZWVuXTtpZih0aGlzLl9pbnNpZGVUcmlhbmdsZShoLGYpfHx0aGlzLl9pbnNpZGVUcmlhbmdsZShoLG0pKXJldHVybiBzfX1lbHNlIGZvcihpPTA7aTx0aGlzLmRhdGFQb2ludHMubGVuZ3RoO2krKyl7cz10aGlzLmRhdGFQb2ludHNbaV07dmFyIHY9cy5zY3JlZW47aWYodil7dmFyIGc9TWF0aC5hYnModC12LngpLHk9TWF0aC5hYnMoZS12LnkpLGI9TWF0aC5zcXJ0KGcqZyt5KnkpOyhudWxsPT09YXx8YT5iKSYmbj5iJiYoYT1iLHI9cyl9fXJldHVybiByfSxvLnByb3RvdHlwZS5fc2hvd1Rvb2x0aXA9ZnVuY3Rpb24odCl7dmFyIGUsaSxvO3RoaXMudG9vbHRpcD8oZT10aGlzLnRvb2x0aXAuZG9tLmNvbnRlbnQsaT10aGlzLnRvb2x0aXAuZG9tLmxpbmUsbz10aGlzLnRvb2x0aXAuZG9tLmRvdCk6KGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksZS5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLGUuc3R5bGUucGFkZGluZz0iMTBweCIsZS5zdHlsZS5ib3JkZXI9IjFweCBzb2xpZCAjNGQ0ZDRkIixlLnN0eWxlLmNvbG9yPSIjMWExYTFhIixlLnN0eWxlLmJhY2tncm91bmQ9InJnYmEoMjU1LDI1NSwyNTUsMC43KSIsZS5zdHlsZS5ib3JkZXJSYWRpdXM9IjJweCIsZS5zdHlsZS5ib3hTaGFkb3c9IjVweCA1cHggMTBweCByZ2JhKDEyOCwxMjgsMTI4LDAuNSkiLGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksaS5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLGkuc3R5bGUuaGVpZ2h0PSI0MHB4IixpLnN0eWxlLndpZHRoPSIwIixpLnN0eWxlLmJvcmRlckxlZnQ9IjFweCBzb2xpZCAjNGQ0ZDRkIixvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLG8uc3R5bGUucG9zaXRpb249ImFic29sdXRlIixvLnN0eWxlLmhlaWdodD0iMCIsby5zdHlsZS53aWR0aD0iMCIsby5zdHlsZS5ib3JkZXI9IjVweCBzb2xpZCAjNGQ0ZDRkIixvLnN0eWxlLmJvcmRlclJhZGl1cz0iNXB4Iix0aGlzLnRvb2x0aXA9e2RhdGFQb2ludDpudWxsLGRvbTp7Y29udGVudDplLGxpbmU6aSxkb3Q6b319KSx0aGlzLl9oaWRlVG9vbHRpcCgpLHRoaXMudG9vbHRpcC5kYXRhUG9pbnQ9dCwiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5zaG93VG9vbHRpcD9lLmlubmVySFRNTD10aGlzLnNob3dUb29sdGlwKHQucG9pbnQpOmUuaW5uZXJIVE1MPSI8dGFibGU+PHRyPjx0ZD54OjwvdGQ+PHRkPiIrdC5wb2ludC54KyI8L3RkPjwvdHI+PHRyPjx0ZD55OjwvdGQ+PHRkPiIrdC5wb2ludC55KyI8L3RkPjwvdHI+PHRyPjx0ZD56OjwvdGQ+PHRkPiIrdC5wb2ludC56KyI8L3RkPjwvdHI+PC90YWJsZT4iLGUuc3R5bGUubGVmdD0iMCIsZS5zdHlsZS50b3A9IjAiLHRoaXMuZnJhbWUuYXBwZW5kQ2hpbGQoZSksdGhpcy5mcmFtZS5hcHBlbmRDaGlsZChpKSx0aGlzLmZyYW1lLmFwcGVuZENoaWxkKG8pO3ZhciBuPWUub2Zmc2V0V2lkdGgscz1lLm9mZnNldEhlaWdodCxyPWkub2Zmc2V0SGVpZ2h0LGE9by5vZmZzZXRXaWR0aCxoPW8ub2Zmc2V0SGVpZ2h0LGQ9dC5zY3JlZW4ueC1uLzI7ZD1NYXRoLm1pbihNYXRoLm1heChkLDEwKSx0aGlzLmZyYW1lLmNsaWVudFdpZHRoLTEwLW4pLGkuc3R5bGUubGVmdD10LnNjcmVlbi54KyJweCIsaS5zdHlsZS50b3A9dC5zY3JlZW4ueS1yKyJweCIsZS5zdHlsZS5sZWZ0PWQrInB4IixlLnN0eWxlLnRvcD10LnNjcmVlbi55LXItcysicHgiLG8uc3R5bGUubGVmdD10LnNjcmVlbi54LWEvMisicHgiLG8uc3R5bGUudG9wPXQuc2NyZWVuLnktaC8yKyJweCJ9LG8ucHJvdG90eXBlLl9oaWRlVG9vbHRpcD1mdW5jdGlvbigpe2lmKHRoaXMudG9vbHRpcCl7dGhpcy50b29sdGlwLmRhdGFQb2ludD1udWxsO2Zvcih2YXIgdCBpbiB0aGlzLnRvb2x0aXAuZG9tKWlmKHRoaXMudG9vbHRpcC5kb20uaGFzT3duUHJvcGVydHkodCkpe3ZhciBlPXRoaXMudG9vbHRpcC5kb21bdF07ZSYmZS5wYXJlbnROb2RlJiZlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZSl9fX0sdC5leHBvcnRzPW99LGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gaSh0LGUpe3RoaXMueD12b2lkIDAhPT10P3Q6MCx0aGlzLnk9dm9pZCAwIT09ZT9lOjB9dC5leHBvcnRzPWl9LGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gaSh0KXtyZXR1cm4gdD9vKHQpOnZvaWQgMH1mdW5jdGlvbiBvKHQpe2Zvcih2YXIgZSBpbiBpLnByb3RvdHlwZSl0W2VdPWkucHJvdG90eXBlW2VdO3JldHVybiB0fXQuZXhwb3J0cz1pLGkucHJvdG90eXBlLm9uPWkucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fY2FsbGJhY2tzPXRoaXMuX2NhbGxiYWNrc3x8e30sKHRoaXMuX2NhbGxiYWNrc1t0XT10aGlzLl9jYWxsYmFja3NbdF18fFtdKS5wdXNoKGUpLHRoaXN9LGkucHJvdG90eXBlLm9uY2U9ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBpKCl7by5vZmYodCxpKSxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX12YXIgbz10aGlzO3JldHVybiB0aGlzLl9jYWxsYmFja3M9dGhpcy5fY2FsbGJhY2tzfHx7fSxpLmZuPWUsdGhpcy5vbih0LGkpLHRoaXN9LGkucHJvdG90eXBlLm9mZj1pLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lcj1pLnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnM9aS5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbih0LGUpe2lmKHRoaXMuX2NhbGxiYWNrcz10aGlzLl9jYWxsYmFja3N8fHt9LDA9PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHRoaXMuX2NhbGxiYWNrcz17fSx0aGlzO3ZhciBpPXRoaXMuX2NhbGxiYWNrc1t0XTtpZighaSlyZXR1cm4gdGhpcztpZigxPT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBkZWxldGUgdGhpcy5fY2FsbGJhY2tzW3RdLHRoaXM7Zm9yKHZhciBvLG49MDtuPGkubGVuZ3RoO24rKylpZihvPWlbbl0sbz09PWV8fG8uZm49PT1lKXtpLnNwbGljZShuLDEpO2JyZWFrfXJldHVybiB0aGlzfSxpLnByb3RvdHlwZS5lbWl0PWZ1bmN0aW9uKHQpe3RoaXMuX2NhbGxiYWNrcz10aGlzLl9jYWxsYmFja3N8fHt9O3ZhciBlPVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpLGk9dGhpcy5fY2FsbGJhY2tzW3RdO2lmKGkpe2k9aS5zbGljZSgwKTtmb3IodmFyIG89MCxuPWkubGVuZ3RoO24+bzsrK28paVtvXS5hcHBseSh0aGlzLGUpfXJldHVybiB0aGlzfSxpLnByb3RvdHlwZS5saXN0ZW5lcnM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2NhbGxiYWNrcz10aGlzLl9jYWxsYmFja3N8fHt9LHRoaXMuX2NhbGxiYWNrc1t0XXx8W119LGkucHJvdG90eXBlLmhhc0xpc3RlbmVycz1mdW5jdGlvbih0KXtyZXR1cm4hIXRoaXMubGlzdGVuZXJzKHQpLmxlbmd0aH19LGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gaSh0LGUsaSl7dGhpcy54PXZvaWQgMCE9PXQ/dDowLHRoaXMueT12b2lkIDAhPT1lP2U6MCx0aGlzLno9dm9pZCAwIT09aT9pOjB9aS5zdWJ0cmFjdD1mdW5jdGlvbih0LGUpe3ZhciBvPW5ldyBpO3JldHVybiBvLng9dC54LWUueCxvLnk9dC55LWUueSxvLno9dC56LWUueixvfSxpLmFkZD1mdW5jdGlvbih0LGUpe3ZhciBvPW5ldyBpO3JldHVybiBvLng9dC54K2UueCxvLnk9dC55K2UueSxvLno9dC56K2UueixvfSxpLmF2Zz1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcgaSgodC54K2UueCkvMiwodC55K2UueSkvMiwodC56K2UueikvMil9LGkuY3Jvc3NQcm9kdWN0PWZ1bmN0aW9uKHQsZSl7dmFyIG89bmV3IGk7cmV0dXJuIG8ueD10LnkqZS56LXQueiplLnksby55PXQueiplLngtdC54KmUueixvLno9dC54KmUueS10LnkqZS54LG99LGkucHJvdG90eXBlLmxlbmd0aD1mdW5jdGlvbigpe3JldHVybiBNYXRoLnNxcnQodGhpcy54KnRoaXMueCt0aGlzLnkqdGhpcy55K3RoaXMueip0aGlzLnopfSx0LmV4cG9ydHM9aX0sZnVuY3Rpb24odCxlLGkpe2Z1bmN0aW9uIG8oKXt0aGlzLmFybUxvY2F0aW9uPW5ldyBuLHRoaXMuYXJtUm90YXRpb249e30sdGhpcy5hcm1Sb3RhdGlvbi5ob3Jpem9udGFsPTAsdGhpcy5hcm1Sb3RhdGlvbi52ZXJ0aWNhbD0wLHRoaXMuYXJtTGVuZ3RoPTEuNyx0aGlzLmNhbWVyYUxvY2F0aW9uPW5ldyBuLHRoaXMuY2FtZXJhUm90YXRpb249bmV3IG4oLjUqTWF0aC5QSSwwLDApLHRoaXMuY2FsY3VsYXRlQ2FtZXJhT3JpZW50YXRpb24oKX12YXIgbj1pKDIwKTtvLnByb3RvdHlwZS5zZXRBcm1Mb2NhdGlvbj1mdW5jdGlvbih0LGUsaSl7dGhpcy5hcm1Mb2NhdGlvbi54PXQsdGhpcy5hcm1Mb2NhdGlvbi55PWUsdGhpcy5hcm1Mb2NhdGlvbi56PWksdGhpcy5jYWxjdWxhdGVDYW1lcmFPcmllbnRhdGlvbigpfSxvLnByb3RvdHlwZS5zZXRBcm1Sb3RhdGlvbj1mdW5jdGlvbih0LGUpe3ZvaWQgMCE9PXQmJih0aGlzLmFybVJvdGF0aW9uLmhvcml6b250YWw9dCksdm9pZCAwIT09ZSYmKHRoaXMuYXJtUm90YXRpb24udmVydGljYWw9ZSx0aGlzLmFybVJvdGF0aW9uLnZlcnRpY2FsPDAmJih0aGlzLmFybVJvdGF0aW9uLnZlcnRpY2FsPTApLHRoaXMuYXJtUm90YXRpb24udmVydGljYWw+LjUqTWF0aC5QSSYmKHRoaXMuYXJtUm90YXRpb24udmVydGljYWw9LjUqTWF0aC5QSSkpLCh2b2lkIDAhPT10fHx2b2lkIDAhPT1lKSYmdGhpcy5jYWxjdWxhdGVDYW1lcmFPcmllbnRhdGlvbigpfSxvLnByb3RvdHlwZS5nZXRBcm1Sb3RhdGlvbj1mdW5jdGlvbigpe3ZhciB0PXt9O3JldHVybiB0Lmhvcml6b250YWw9dGhpcy5hcm1Sb3RhdGlvbi5ob3Jpem9udGFsLHQudmVydGljYWw9dGhpcy5hcm1Sb3RhdGlvbi52ZXJ0aWNhbCx0fSxvLnByb3RvdHlwZS5zZXRBcm1MZW5ndGg9ZnVuY3Rpb24odCl7dm9pZCAwIT09dCYmKHRoaXMuYXJtTGVuZ3RoPXQsdGhpcy5hcm1MZW5ndGg8LjcxJiYodGhpcy5hcm1MZW5ndGg9LjcxKSx0aGlzLmFybUxlbmd0aD41JiYodGhpcy5hcm1MZW5ndGg9NSksdGhpcy5jYWxjdWxhdGVDYW1lcmFPcmllbnRhdGlvbigpKX0sby5wcm90b3R5cGUuZ2V0QXJtTGVuZ3RoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXJtTGVuZ3RofSxvLnByb3RvdHlwZS5nZXRDYW1lcmFMb2NhdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNhbWVyYUxvY2F0aW9ufSxvLnByb3RvdHlwZS5nZXRDYW1lcmFSb3RhdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNhbWVyYVJvdGF0aW9ufSxvLnByb3RvdHlwZS5jYWxjdWxhdGVDYW1lcmFPcmllbnRhdGlvbj1mdW5jdGlvbigpe3RoaXMuY2FtZXJhTG9jYXRpb24ueD10aGlzLmFybUxvY2F0aW9uLngtdGhpcy5hcm1MZW5ndGgqTWF0aC5zaW4odGhpcy5hcm1Sb3RhdGlvbi5ob3Jpem9udGFsKSpNYXRoLmNvcyh0aGlzLmFybVJvdGF0aW9uLnZlcnRpY2FsKSx0aGlzLmNhbWVyYUxvY2F0aW9uLnk9dGhpcy5hcm1Mb2NhdGlvbi55LXRoaXMuYXJtTGVuZ3RoKk1hdGguY29zKHRoaXMuYXJtUm90YXRpb24uaG9yaXpvbnRhbCkqTWF0aC5jb3ModGhpcy5hcm1Sb3RhdGlvbi52ZXJ0aWNhbCksdGhpcy5jYW1lcmFMb2NhdGlvbi56PXRoaXMuYXJtTG9jYXRpb24ueit0aGlzLmFybUxlbmd0aCpNYXRoLnNpbih0aGlzLmFybVJvdGF0aW9uLnZlcnRpY2FsKSx0aGlzLmNhbWVyYVJvdGF0aW9uLng9TWF0aC5QSS8yLXRoaXMuYXJtUm90YXRpb24udmVydGljYWwsdGhpcy5jYW1lcmFSb3RhdGlvbi55PTAsdGhpcy5jYW1lcmFSb3RhdGlvbi56PS10aGlzLmFybVJvdGF0aW9uLmhvcml6b250YWx9LHQuZXhwb3J0cz1vfSxmdW5jdGlvbih0LGUsaSl7ZnVuY3Rpb24gbyh0LGUsaSl7dGhpcy5kYXRhPXQsdGhpcy5jb2x1bW49ZSx0aGlzLmdyYXBoPWksdGhpcy5pbmRleD12b2lkIDAsdGhpcy52YWx1ZT12b2lkIDAsdGhpcy52YWx1ZXM9aS5nZXREaXN0aW5jdFZhbHVlcyh0LmdldCgpLHRoaXMuY29sdW1uKSx0aGlzLnZhbHVlcy5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ+ZT8xOmU+dD8tMTowOw0KfSksdGhpcy52YWx1ZXMubGVuZ3RoPjAmJnRoaXMuc2VsZWN0VmFsdWUoMCksdGhpcy5kYXRhUG9pbnRzPVtdLHRoaXMubG9hZGVkPSExLHRoaXMub25Mb2FkQ2FsbGJhY2s9dm9pZCAwLGkuYW5pbWF0aW9uUHJlbG9hZD8odGhpcy5sb2FkZWQ9ITEsdGhpcy5sb2FkSW5CYWNrZ3JvdW5kKCkpOnRoaXMubG9hZGVkPSEwfXZhciBuPWkoMTYpO28ucHJvdG90eXBlLmlzTG9hZGVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubG9hZGVkfSxvLnByb3RvdHlwZS5nZXRMb2FkZWRQcm9ncmVzcz1mdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLnZhbHVlcy5sZW5ndGgsZT0wO3RoaXMuZGF0YVBvaW50c1tlXTspZSsrO3JldHVybiBNYXRoLnJvdW5kKGUvdCoxMDApfSxvLnByb3RvdHlwZS5nZXRMYWJlbD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdyYXBoLmZpbHRlckxhYmVsfSxvLnByb3RvdHlwZS5nZXRDb2x1bW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb2x1bW59LG8ucHJvdG90eXBlLmdldFNlbGVjdGVkVmFsdWU9ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwPT09dGhpcy5pbmRleD92b2lkIDA6dGhpcy52YWx1ZXNbdGhpcy5pbmRleF19LG8ucHJvdG90eXBlLmdldFZhbHVlcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlc30sby5wcm90b3R5cGUuZ2V0VmFsdWU9ZnVuY3Rpb24odCl7aWYodD49dGhpcy52YWx1ZXMubGVuZ3RoKXRocm93IkVycm9yOiBpbmRleCBvdXQgb2YgcmFuZ2UiO3JldHVybiB0aGlzLnZhbHVlc1t0XX0sby5wcm90b3R5cGUuX2dldERhdGFQb2ludHM9ZnVuY3Rpb24odCl7aWYodm9pZCAwPT09dCYmKHQ9dGhpcy5pbmRleCksdm9pZCAwPT09dClyZXR1cm5bXTt2YXIgZTtpZih0aGlzLmRhdGFQb2ludHNbdF0pZT10aGlzLmRhdGFQb2ludHNbdF07ZWxzZXt2YXIgaT17fTtpLmNvbHVtbj10aGlzLmNvbHVtbixpLnZhbHVlPXRoaXMudmFsdWVzW3RdO3ZhciBvPW5ldyBuKHRoaXMuZGF0YSx7ZmlsdGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0W2kuY29sdW1uXT09aS52YWx1ZX19KS5nZXQoKTtlPXRoaXMuZ3JhcGguX2dldERhdGFQb2ludHMobyksdGhpcy5kYXRhUG9pbnRzW3RdPWV9cmV0dXJuIGV9LG8ucHJvdG90eXBlLnNldE9uTG9hZENhbGxiYWNrPWZ1bmN0aW9uKHQpe3RoaXMub25Mb2FkQ2FsbGJhY2s9dH0sby5wcm90b3R5cGUuc2VsZWN0VmFsdWU9ZnVuY3Rpb24odCl7aWYodD49dGhpcy52YWx1ZXMubGVuZ3RoKXRocm93IkVycm9yOiBpbmRleCBvdXQgb2YgcmFuZ2UiO3RoaXMuaW5kZXg9dCx0aGlzLnZhbHVlPXRoaXMudmFsdWVzW3RdfSxvLnByb3RvdHlwZS5sb2FkSW5CYWNrZ3JvdW5kPWZ1bmN0aW9uKHQpe3ZvaWQgMD09PXQmJih0PTApO3ZhciBlPXRoaXMuZ3JhcGguZnJhbWU7aWYodDx0aGlzLnZhbHVlcy5sZW5ndGgpe3RoaXMuX2dldERhdGFQb2ludHModCk7dm9pZCAwPT09ZS5wcm9ncmVzcyYmKGUucHJvZ3Jlc3M9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiRElWIiksZS5wcm9ncmVzcy5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLGUucHJvZ3Jlc3Muc3R5bGUuY29sb3I9ImdyYXkiLGUuYXBwZW5kQ2hpbGQoZS5wcm9ncmVzcykpO3ZhciBpPXRoaXMuZ2V0TG9hZGVkUHJvZ3Jlc3MoKTtlLnByb2dyZXNzLmlubmVySFRNTD0iTG9hZGluZyBhbmltYXRpb24uLi4gIitpKyIlIixlLnByb2dyZXNzLnN0eWxlLmJvdHRvbT0iNjBweCIsZS5wcm9ncmVzcy5zdHlsZS5sZWZ0PSIxMHB4Ijt2YXIgbz10aGlzO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtvLmxvYWRJbkJhY2tncm91bmQodCsxKX0sMTApLHRoaXMubG9hZGVkPSExfWVsc2UgdGhpcy5sb2FkZWQ9ITAsdm9pZCAwIT09ZS5wcm9ncmVzcyYmKGUucmVtb3ZlQ2hpbGQoZS5wcm9ncmVzcyksZS5wcm9ncmVzcz12b2lkIDApLHRoaXMub25Mb2FkQ2FsbGJhY2smJnRoaXMub25Mb2FkQ2FsbGJhY2soKX0sdC5leHBvcnRzPW99LGZ1bmN0aW9uKHQsZSxpKXtmdW5jdGlvbiBvKHQsZSl7aWYodm9pZCAwPT09dCl0aHJvdyJFcnJvcjogTm8gY29udGFpbmVyIGVsZW1lbnQgZGVmaW5lZCI7aWYodGhpcy5jb250YWluZXI9dCx0aGlzLnZpc2libGU9ZSYmdm9pZCAwIT1lLnZpc2libGU/ZS52aXNpYmxlOiEwLHRoaXMudmlzaWJsZSl7dGhpcy5mcmFtZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJESVYiKSx0aGlzLmZyYW1lLnN0eWxlLndpZHRoPSIxMDAlIix0aGlzLmZyYW1lLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIsdGhpcy5jb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5mcmFtZSksdGhpcy5mcmFtZS5wcmV2PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIklOUFVUIiksdGhpcy5mcmFtZS5wcmV2LnR5cGU9IkJVVFRPTiIsdGhpcy5mcmFtZS5wcmV2LnZhbHVlPSJQcmV2Iix0aGlzLmZyYW1lLmFwcGVuZENoaWxkKHRoaXMuZnJhbWUucHJldiksdGhpcy5mcmFtZS5wbGF5PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIklOUFVUIiksdGhpcy5mcmFtZS5wbGF5LnR5cGU9IkJVVFRPTiIsdGhpcy5mcmFtZS5wbGF5LnZhbHVlPSJQbGF5Iix0aGlzLmZyYW1lLmFwcGVuZENoaWxkKHRoaXMuZnJhbWUucGxheSksdGhpcy5mcmFtZS5uZXh0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIklOUFVUIiksdGhpcy5mcmFtZS5uZXh0LnR5cGU9IkJVVFRPTiIsdGhpcy5mcmFtZS5uZXh0LnZhbHVlPSJOZXh0Iix0aGlzLmZyYW1lLmFwcGVuZENoaWxkKHRoaXMuZnJhbWUubmV4dCksdGhpcy5mcmFtZS5iYXI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiSU5QVVQiKSx0aGlzLmZyYW1lLmJhci50eXBlPSJCVVRUT04iLHRoaXMuZnJhbWUuYmFyLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsdGhpcy5mcmFtZS5iYXIuc3R5bGUuYm9yZGVyPSIxcHggc29saWQgcmVkIix0aGlzLmZyYW1lLmJhci5zdHlsZS53aWR0aD0iMTAwcHgiLHRoaXMuZnJhbWUuYmFyLnN0eWxlLmhlaWdodD0iNnB4Iix0aGlzLmZyYW1lLmJhci5zdHlsZS5ib3JkZXJSYWRpdXM9IjJweCIsdGhpcy5mcmFtZS5iYXIuc3R5bGUuTW96Qm9yZGVyUmFkaXVzPSIycHgiLHRoaXMuZnJhbWUuYmFyLnN0eWxlLmJvcmRlcj0iMXB4IHNvbGlkICM3RjdGN0YiLHRoaXMuZnJhbWUuYmFyLnN0eWxlLmJhY2tncm91bmRDb2xvcj0iI0U1RTVFNSIsdGhpcy5mcmFtZS5hcHBlbmRDaGlsZCh0aGlzLmZyYW1lLmJhciksdGhpcy5mcmFtZS5zbGlkZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJJTlBVVCIpLHRoaXMuZnJhbWUuc2xpZGUudHlwZT0iQlVUVE9OIix0aGlzLmZyYW1lLnNsaWRlLnN0eWxlLm1hcmdpbj0iMHB4Iix0aGlzLmZyYW1lLnNsaWRlLnZhbHVlPSIgIix0aGlzLmZyYW1lLnNsaWRlLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIsdGhpcy5mcmFtZS5zbGlkZS5zdHlsZS5sZWZ0PSItMTAwcHgiLHRoaXMuZnJhbWUuYXBwZW5kQ2hpbGQodGhpcy5mcmFtZS5zbGlkZSk7dmFyIGk9dGhpczt0aGlzLmZyYW1lLnNsaWRlLm9ubW91c2Vkb3duPWZ1bmN0aW9uKHQpe2kuX29uTW91c2VEb3duKHQpfSx0aGlzLmZyYW1lLnByZXYub25jbGljaz1mdW5jdGlvbih0KXtpLnByZXYodCl9LHRoaXMuZnJhbWUucGxheS5vbmNsaWNrPWZ1bmN0aW9uKHQpe2kudG9nZ2xlUGxheSh0KX0sdGhpcy5mcmFtZS5uZXh0Lm9uY2xpY2s9ZnVuY3Rpb24odCl7aS5uZXh0KHQpfX10aGlzLm9uQ2hhbmdlQ2FsbGJhY2s9dm9pZCAwLHRoaXMudmFsdWVzPVtdLHRoaXMuaW5kZXg9dm9pZCAwLHRoaXMucGxheVRpbWVvdXQ9dm9pZCAwLHRoaXMucGxheUludGVydmFsPTFlMyx0aGlzLnBsYXlMb29wPSEwfXZhciBuPWkoNyk7by5wcm90b3R5cGUucHJldj1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZ2V0SW5kZXgoKTt0PjAmJih0LS0sdGhpcy5zZXRJbmRleCh0KSl9LG8ucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmdldEluZGV4KCk7dDx0aGlzLnZhbHVlcy5sZW5ndGgtMSYmKHQrKyx0aGlzLnNldEluZGV4KHQpKX0sby5wcm90b3R5cGUucGxheU5leHQ9ZnVuY3Rpb24oKXt2YXIgdD1uZXcgRGF0ZSxlPXRoaXMuZ2V0SW5kZXgoKTtlPHRoaXMudmFsdWVzLmxlbmd0aC0xPyhlKyssdGhpcy5zZXRJbmRleChlKSk6dGhpcy5wbGF5TG9vcCYmKGU9MCx0aGlzLnNldEluZGV4KGUpKTt2YXIgaT1uZXcgRGF0ZSxvPWktdCxuPU1hdGgubWF4KHRoaXMucGxheUludGVydmFsLW8sMCkscz10aGlzO3RoaXMucGxheVRpbWVvdXQ9c2V0VGltZW91dChmdW5jdGlvbigpe3MucGxheU5leHQoKX0sbil9LG8ucHJvdG90eXBlLnRvZ2dsZVBsYXk9ZnVuY3Rpb24oKXt2b2lkIDA9PT10aGlzLnBsYXlUaW1lb3V0P3RoaXMucGxheSgpOnRoaXMuc3RvcCgpfSxvLnByb3RvdHlwZS5wbGF5PWZ1bmN0aW9uKCl7dGhpcy5wbGF5VGltZW91dHx8KHRoaXMucGxheU5leHQoKSx0aGlzLmZyYW1lJiYodGhpcy5mcmFtZS5wbGF5LnZhbHVlPSJTdG9wIikpfSxvLnByb3RvdHlwZS5zdG9wPWZ1bmN0aW9uKCl7Y2xlYXJJbnRlcnZhbCh0aGlzLnBsYXlUaW1lb3V0KSx0aGlzLnBsYXlUaW1lb3V0PXZvaWQgMCx0aGlzLmZyYW1lJiYodGhpcy5mcmFtZS5wbGF5LnZhbHVlPSJQbGF5Iil9LG8ucHJvdG90eXBlLnNldE9uQ2hhbmdlQ2FsbGJhY2s9ZnVuY3Rpb24odCl7dGhpcy5vbkNoYW5nZUNhbGxiYWNrPXR9LG8ucHJvdG90eXBlLnNldFBsYXlJbnRlcnZhbD1mdW5jdGlvbih0KXt0aGlzLnBsYXlJbnRlcnZhbD10fSxvLnByb3RvdHlwZS5nZXRQbGF5SW50ZXJ2YWw9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucGxheUludGVydmFsfSxvLnByb3RvdHlwZS5zZXRQbGF5TG9vcD1mdW5jdGlvbih0KXt0aGlzLnBsYXlMb29wPXR9LG8ucHJvdG90eXBlLm9uQ2hhbmdlPWZ1bmN0aW9uKCl7dm9pZCAwIT09dGhpcy5vbkNoYW5nZUNhbGxiYWNrJiZ0aGlzLm9uQ2hhbmdlQ2FsbGJhY2soKX0sby5wcm90b3R5cGUucmVkcmF3PWZ1bmN0aW9uKCl7aWYodGhpcy5mcmFtZSl7dGhpcy5mcmFtZS5iYXIuc3R5bGUudG9wPXRoaXMuZnJhbWUuY2xpZW50SGVpZ2h0LzItdGhpcy5mcmFtZS5iYXIub2Zmc2V0SGVpZ2h0LzIrInB4Iix0aGlzLmZyYW1lLmJhci5zdHlsZS53aWR0aD10aGlzLmZyYW1lLmNsaWVudFdpZHRoLXRoaXMuZnJhbWUucHJldi5jbGllbnRXaWR0aC10aGlzLmZyYW1lLnBsYXkuY2xpZW50V2lkdGgtdGhpcy5mcmFtZS5uZXh0LmNsaWVudFdpZHRoLTMwKyJweCI7dmFyIHQ9dGhpcy5pbmRleFRvTGVmdCh0aGlzLmluZGV4KTt0aGlzLmZyYW1lLnNsaWRlLnN0eWxlLmxlZnQ9dCsicHgifX0sby5wcm90b3R5cGUuc2V0VmFsdWVzPWZ1bmN0aW9uKHQpe3RoaXMudmFsdWVzPXQsdGhpcy52YWx1ZXMubGVuZ3RoPjA/dGhpcy5zZXRJbmRleCgwKTp0aGlzLmluZGV4PXZvaWQgMH0sby5wcm90b3R5cGUuc2V0SW5kZXg9ZnVuY3Rpb24odCl7aWYoISh0PHRoaXMudmFsdWVzLmxlbmd0aCkpdGhyb3ciRXJyb3I6IGluZGV4IG91dCBvZiByYW5nZSI7dGhpcy5pbmRleD10LHRoaXMucmVkcmF3KCksdGhpcy5vbkNoYW5nZSgpfSxvLnByb3RvdHlwZS5nZXRJbmRleD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmluZGV4fSxvLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZXNbdGhpcy5pbmRleF19LG8ucHJvdG90eXBlLl9vbk1vdXNlRG93bj1mdW5jdGlvbih0KXt2YXIgZT10LndoaWNoPzE9PT10LndoaWNoOjE9PT10LmJ1dHRvbjtpZihlKXt0aGlzLnN0YXJ0Q2xpZW50WD10LmNsaWVudFgsdGhpcy5zdGFydFNsaWRlWD1wYXJzZUZsb2F0KHRoaXMuZnJhbWUuc2xpZGUuc3R5bGUubGVmdCksdGhpcy5mcmFtZS5zdHlsZS5jdXJzb3I9Im1vdmUiO3ZhciBpPXRoaXM7dGhpcy5vbm1vdXNlbW92ZT1mdW5jdGlvbih0KXtpLl9vbk1vdXNlTW92ZSh0KX0sdGhpcy5vbm1vdXNldXA9ZnVuY3Rpb24odCl7aS5fb25Nb3VzZVVwKHQpfSxuLmFkZEV2ZW50TGlzdGVuZXIoZG9jdW1lbnQsIm1vdXNlbW92ZSIsdGhpcy5vbm1vdXNlbW92ZSksbi5hZGRFdmVudExpc3RlbmVyKGRvY3VtZW50LCJtb3VzZXVwIix0aGlzLm9ubW91c2V1cCksbi5wcmV2ZW50RGVmYXVsdCh0KX19LG8ucHJvdG90eXBlLmxlZnRUb0luZGV4PWZ1bmN0aW9uKHQpe3ZhciBlPXBhcnNlRmxvYXQodGhpcy5mcmFtZS5iYXIuc3R5bGUud2lkdGgpLXRoaXMuZnJhbWUuc2xpZGUuY2xpZW50V2lkdGgtMTAsaT10LTMsbz1NYXRoLnJvdW5kKGkvZSoodGhpcy52YWx1ZXMubGVuZ3RoLTEpKTtyZXR1cm4gMD5vJiYobz0wKSxvPnRoaXMudmFsdWVzLmxlbmd0aC0xJiYobz10aGlzLnZhbHVlcy5sZW5ndGgtMSksb30sby5wcm90b3R5cGUuaW5kZXhUb0xlZnQ9ZnVuY3Rpb24odCl7dmFyIGU9cGFyc2VGbG9hdCh0aGlzLmZyYW1lLmJhci5zdHlsZS53aWR0aCktdGhpcy5mcmFtZS5zbGlkZS5jbGllbnRXaWR0aC0xMCxpPXQvKHRoaXMudmFsdWVzLmxlbmd0aC0xKSplLG89aSszO3JldHVybiBvfSxvLnByb3RvdHlwZS5fb25Nb3VzZU1vdmU9ZnVuY3Rpb24odCl7dmFyIGU9dC5jbGllbnRYLXRoaXMuc3RhcnRDbGllbnRYLGk9dGhpcy5zdGFydFNsaWRlWCtlLG89dGhpcy5sZWZ0VG9JbmRleChpKTt0aGlzLnNldEluZGV4KG8pLG4ucHJldmVudERlZmF1bHQoKX0sby5wcm90b3R5cGUuX29uTW91c2VVcD1mdW5jdGlvbih0KXt0aGlzLmZyYW1lLnN0eWxlLmN1cnNvcj0iYXV0byIsbi5yZW1vdmVFdmVudExpc3RlbmVyKGRvY3VtZW50LCJtb3VzZW1vdmUiLHRoaXMub25tb3VzZW1vdmUpLG4ucmVtb3ZlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCwibW91c2V1cCIsdGhpcy5vbm1vdXNldXApLG4ucHJldmVudERlZmF1bHQoKX0sdC5leHBvcnRzPW99LGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gaSh0LGUsaSxvKXt0aGlzLl9zdGFydD0wLHRoaXMuX2VuZD0wLHRoaXMuX3N0ZXA9MSx0aGlzLnByZXR0eVN0ZXA9ITAsdGhpcy5wcmVjaXNpb249NSx0aGlzLl9jdXJyZW50PTAsdGhpcy5zZXRSYW5nZSh0LGUsaSxvKX1pLnByb3RvdHlwZS5zZXRSYW5nZT1mdW5jdGlvbih0LGUsaSxvKXt0aGlzLl9zdGFydD10P3Q6MCx0aGlzLl9lbmQ9ZT9lOjAsdGhpcy5zZXRTdGVwKGksbyl9LGkucHJvdG90eXBlLnNldFN0ZXA9ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT10fHwwPj10fHwodm9pZCAwIT09ZSYmKHRoaXMucHJldHR5U3RlcD1lKSx0aGlzLnByZXR0eVN0ZXA9PT0hMD90aGlzLl9zdGVwPWkuY2FsY3VsYXRlUHJldHR5U3RlcCh0KTp0aGlzLl9zdGVwPXQpfSxpLmNhbGN1bGF0ZVByZXR0eVN0ZXA9ZnVuY3Rpb24odCl7dmFyIGU9ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgubG9nKHQpL01hdGguTE4xMH0saT1NYXRoLnBvdygxMCxNYXRoLnJvdW5kKGUodCkpKSxvPTIqTWF0aC5wb3coMTAsTWF0aC5yb3VuZChlKHQvMikpKSxuPTUqTWF0aC5wb3coMTAsTWF0aC5yb3VuZChlKHQvNSkpKSxzPWk7cmV0dXJuIE1hdGguYWJzKG8tdCk8PU1hdGguYWJzKHMtdCkmJihzPW8pLE1hdGguYWJzKG4tdCk8PU1hdGguYWJzKHMtdCkmJihzPW4pLDA+PXMmJihzPTEpLHN9LGkucHJvdG90eXBlLmdldEN1cnJlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gcGFyc2VGbG9hdCh0aGlzLl9jdXJyZW50LnRvUHJlY2lzaW9uKHRoaXMucHJlY2lzaW9uKSl9LGkucHJvdG90eXBlLmdldFN0ZXA9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RlcH0saS5wcm90b3R5cGUuc3RhcnQ9ZnVuY3Rpb24oKXt0aGlzLl9jdXJyZW50PXRoaXMuX3N0YXJ0LXRoaXMuX3N0YXJ0JXRoaXMuX3N0ZXB9LGkucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24oKXt0aGlzLl9jdXJyZW50Kz10aGlzLl9zdGVwfSxpLnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY3VycmVudD50aGlzLl9lbmR9LHQuZXhwb3J0cz1pfSxmdW5jdGlvbih0LGUsaSl7ZnVuY3Rpb24gbyh0LGUsaSxoKXtpZighKHRoaXMgaW5zdGFuY2VvZiBvKSl0aHJvdyBuZXcgU3ludGF4RXJyb3IoIkNvbnN0cnVjdG9yIG11c3QgYmUgY2FsbGVkIHdpdGggdGhlIG5ldyBvcGVyYXRvciIpO2lmKCEoQXJyYXkuaXNBcnJheShpKXx8aSBpbnN0YW5jZW9mIHN8fGkgaW5zdGFuY2VvZiByKSYmaSBpbnN0YW5jZW9mIE9iamVjdCl7dmFyIHU9aDtoPWksaT11fXZhciBwPXRoaXM7dGhpcy5kZWZhdWx0T3B0aW9ucz17c3RhcnQ6bnVsbCxlbmQ6bnVsbCxhdXRvUmVzaXplOiEwLG9yaWVudGF0aW9uOntheGlzOiJib3R0b20iLGl0ZW06ImJvdHRvbSJ9LHdpZHRoOm51bGwsaGVpZ2h0Om51bGwsbWF4SGVpZ2h0Om51bGwsbWluSGVpZ2h0Om51bGx9LHRoaXMub3B0aW9ucz1uLmRlZXBFeHRlbmQoe30sdGhpcy5kZWZhdWx0T3B0aW9ucyksdGhpcy5fY3JlYXRlKHQpLHRoaXMuY29tcG9uZW50cz1bXSx0aGlzLmJvZHk9e2RvbTp0aGlzLmRvbSxkb21Qcm9wczp0aGlzLnByb3BzLGVtaXR0ZXI6e29uOnRoaXMub24uYmluZCh0aGlzKSxvZmY6dGhpcy5vZmYuYmluZCh0aGlzKSxlbWl0OnRoaXMuZW1pdC5iaW5kKHRoaXMpfSxoaWRkZW5EYXRlczpbXSx1dGlsOntnZXRTY2FsZTpmdW5jdGlvbigpe3JldHVybiBwLnRpbWVBeGlzLnN0ZXAuc2NhbGV9LGdldFN0ZXA6ZnVuY3Rpb24oKXtyZXR1cm4gcC50aW1lQXhpcy5zdGVwLnN0ZXB9LHRvU2NyZWVuOnAuX3RvU2NyZWVuLmJpbmQocCksdG9HbG9iYWxTY3JlZW46cC5fdG9HbG9iYWxTY3JlZW4uYmluZChwKSx0b1RpbWU6cC5fdG9UaW1lLmJpbmQocCksdG9HbG9iYWxUaW1lOnAuX3RvR2xvYmFsVGltZS5iaW5kKHApfX0sdGhpcy5yYW5nZT1uZXcgYSh0aGlzLmJvZHkpLHRoaXMuY29tcG9uZW50cy5wdXNoKHRoaXMucmFuZ2UpLHRoaXMuYm9keS5yYW5nZT10aGlzLnJhbmdlLHRoaXMudGltZUF4aXM9bmV3IGQodGhpcy5ib2R5KSx0aGlzLnRpbWVBeGlzMj1udWxsLHRoaXMuY29tcG9uZW50cy5wdXNoKHRoaXMudGltZUF4aXMpLHRoaXMuY3VycmVudFRpbWU9bmV3IGwodGhpcy5ib2R5KSx0aGlzLmNvbXBvbmVudHMucHVzaCh0aGlzLmN1cnJlbnRUaW1lKSx0aGlzLml0ZW1TZXQ9bmV3IGModGhpcy5ib2R5KSx0aGlzLmNvbXBvbmVudHMucHVzaCh0aGlzLml0ZW1TZXQpLHRoaXMuaXRlbXNEYXRhPW51bGwsdGhpcy5ncm91cHNEYXRhPW51bGwsdGhpcy5vbigidGFwIixmdW5jdGlvbih0KXtwLmVtaXQoImNsaWNrIixwLmdldEV2ZW50UHJvcGVydGllcyh0KSl9KSx0aGlzLm9uKCJkb3VibGV0YXAiLGZ1bmN0aW9uKHQpe3AuZW1pdCgiZG91YmxlQ2xpY2siLHAuZ2V0RXZlbnRQcm9wZXJ0aWVzKHQpKX0pLHRoaXMuZG9tLnJvb3Qub25jb250ZXh0bWVudT1mdW5jdGlvbih0KXtwLmVtaXQoImNvbnRleHRtZW51IixwLmdldEV2ZW50UHJvcGVydGllcyh0KSl9LGgmJnRoaXMuc2V0T3B0aW9ucyhoKSxpJiZ0aGlzLnNldEdyb3VwcyhpKSxlP3RoaXMuc2V0SXRlbXMoZSk6dGhpcy5fcmVkcmF3KCl9dmFyIG49KGkoMTkpLGkoMyksaSg3KSkscz1pKDE0KSxyPWkoMTYpLGE9aSgyOSksaD1pKDMyKSxkPWkoNDEpLGw9aSgyNiksdT1pKDQ0KSxjPWkoMzMpLHA9aSg0NSksZj1pKDQ3KVsiZGVmYXVsdCJdLG09aSg0NykucHJpbnRTdHlsZSx2PWkoNDgpLmFsbE9wdGlvbnMsZz1pKDQ4KS5jb25maWd1cmVPcHRpb25zO28ucHJvdG90eXBlPW5ldyBoLG8ucHJvdG90eXBlLl9jcmVhdGVDb25maWd1cmF0b3I9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHAodGhpcyx0aGlzLmRvbS5jb250YWluZXIsZyl9LG8ucHJvdG90eXBlLnJlZHJhdz1mdW5jdGlvbigpe3RoaXMuaXRlbVNldCYmdGhpcy5pdGVtU2V0Lm1hcmtEaXJ0eSh7cmVmcmVzaEl0ZW1zOiEwfSksdGhpcy5fcmVkcmF3KCl9LG8ucHJvdG90eXBlLnNldE9wdGlvbnM9ZnVuY3Rpb24odCl7dmFyIGU9Zi52YWxpZGF0ZSh0LHYpO2lmKGU9PT0hMCYmY29uc29sZS5sb2coIiVjRXJyb3JzIGhhdmUgYmVlbiBmb3VuZCBpbiB0aGUgc3VwcGxpZWQgb3B0aW9ucyBvYmplY3QuIixtKSxoLnByb3RvdHlwZS5zZXRPcHRpb25zLmNhbGwodGhpcyx0KSwidHlwZSJpbiB0JiZ0LnR5cGUhPT10aGlzLm9wdGlvbnMudHlwZSl7dGhpcy5vcHRpb25zLnR5cGU9dC50eXBlO3ZhciBpPXRoaXMuaXRlbXNEYXRhO2lmKGkpe3ZhciBvPXRoaXMuZ2V0U2VsZWN0aW9uKCk7dGhpcy5zZXRJdGVtcyhudWxsKSx0aGlzLnNldEl0ZW1zKGkpLHRoaXMuc2V0U2VsZWN0aW9uKG8pfX19LG8ucHJvdG90eXBlLnNldEl0ZW1zPWZ1bmN0aW9uKHQpe3ZhciBlLGk9bnVsbD09dGhpcy5pdGVtc0RhdGE7aWYoZT10P3QgaW5zdGFuY2VvZiBzfHx0IGluc3RhbmNlb2Ygcj90Om5ldyBzKHQse3R5cGU6e3N0YXJ0OiJEYXRlIixlbmQ6IkRhdGUifX0pOm51bGwsdGhpcy5pdGVtc0RhdGE9ZSx0aGlzLml0ZW1TZXQmJnRoaXMuaXRlbVNldC5zZXRJdGVtcyhlKSxpKWlmKHZvaWQgMCE9dGhpcy5vcHRpb25zLnN0YXJ0fHx2b2lkIDAhPXRoaXMub3B0aW9ucy5lbmQpe2lmKHZvaWQgMD09dGhpcy5vcHRpb25zLnN0YXJ0fHx2b2lkIDA9PXRoaXMub3B0aW9ucy5lbmQpdmFyIG89dGhpcy5nZXRJdGVtUmFuZ2UoKTt2YXIgbj12b2lkIDAhPXRoaXMub3B0aW9ucy5zdGFydD90aGlzLm9wdGlvbnMuc3RhcnQ6by5taW4sYT12b2lkIDAhPXRoaXMub3B0aW9ucy5lbmQ/dGhpcy5vcHRpb25zLmVuZDpvLm1heDt0aGlzLnNldFdpbmRvdyhuLGEse2FuaW1hdGlvbjohMX0pfWVsc2UgdGhpcy5maXQoe2FuaW1hdGlvbjohMX0pfSxvLnByb3RvdHlwZS5zZXRHcm91cHM9ZnVuY3Rpb24odCl7dmFyIGU7ZT10P3QgaW5zdGFuY2VvZiBzfHx0IGluc3RhbmNlb2Ygcj90Om5ldyBzKHQpOm51bGwsdGhpcy5ncm91cHNEYXRhPWUsdGhpcy5pdGVtU2V0LnNldEdyb3VwcyhlKX0sby5wcm90b3R5cGUuc2V0RGF0YT1mdW5jdGlvbih0KXt0JiZ0Lmdyb3VwcyYmdGhpcy5zZXRHcm91cHModC5ncm91cHMpLHQmJnQuaXRlbXMmJnRoaXMuc2V0SXRlbXModC5pdGVtcyl9LG8ucHJvdG90eXBlLnNldFNlbGVjdGlvbj1mdW5jdGlvbih0LGUpe3RoaXMuaXRlbVNldCYmdGhpcy5pdGVtU2V0LnNldFNlbGVjdGlvbih0KSxlJiZlLmZvY3VzJiZ0aGlzLmZvY3VzKHQsZSl9LG8ucHJvdG90eXBlLmdldFNlbGVjdGlvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLml0ZW1TZXQmJnRoaXMuaXRlbVNldC5nZXRTZWxlY3Rpb24oKXx8W119LG8ucHJvdG90eXBlLmZvY3VzPWZ1bmN0aW9uKHQsZSl7aWYodGhpcy5pdGVtc0RhdGEmJnZvaWQgMCE9dCl7dmFyIGk9QXJyYXkuaXNBcnJheSh0KT90Olt0XSxvPXRoaXMuaXRlbXNEYXRhLmdldERhdGFTZXQoKS5nZXQoaSx7dHlwZTp7c3RhcnQ6IkRhdGUiLGVuZDoiRGF0ZSJ9fSksbj1udWxsLHM9bnVsbDtpZihvLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIGU9dC5zdGFydC52YWx1ZU9mKCksaT0iZW5kImluIHQ/dC5lbmQudmFsdWVPZigpOnQuc3RhcnQudmFsdWVPZigpOyhudWxsPT09bnx8bj5lKSYmKG49ZSksKG51bGw9PT1zfHxpPnMpJiYocz1pKX0pLG51bGwhPT1uJiZudWxsIT09cyl7dmFyIHI9KG4rcykvMixhPU1hdGgubWF4KHRoaXMucmFuZ2UuZW5kLXRoaXMucmFuZ2Uuc3RhcnQsMS4xKihzLW4pKSxoPWUmJnZvaWQgMCE9PWUuYW5pbWF0aW9uP2UuYW5pbWF0aW9uOiEwO3RoaXMucmFuZ2Uuc2V0UmFuZ2Uoci1hLzIscithLzIsaCl9fX0sby5wcm90b3R5cGUuZml0PWZ1bmN0aW9uKHQpe3ZhciBlPXQmJnZvaWQgMCE9PXQuYW5pbWF0aW9uP3QuYW5pbWF0aW9uOiEwLGk9dGhpcy5nZXRJdGVtUmFuZ2UoKTt0aGlzLnJhbmdlLnNldFJhbmdlKGkubWluLGkubWF4LGUpfSxvLnByb3RvdHlwZS5nZXRJdGVtUmFuZ2U9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy5nZXREYXRhUmFuZ2UoKSxpPWUubWluLG89ZS5tYXgscz1udWxsLHI9bnVsbDtpZihudWxsIT1pJiZudWxsIT1vKXt2YXIgYSxoLGQsbCx1OyFmdW5jdGlvbigpe3ZhciBlPWZ1bmN0aW9uKHQpe3JldHVybiBuLmNvbnZlcnQodC5kYXRhLnN0YXJ0LCJEYXRlIikudmFsdWVPZigpfSxjPWZ1bmN0aW9uKHQpe3ZhciBlPXZvaWQgMCE9dC5kYXRhLmVuZD90LmRhdGEuZW5kOnQuZGF0YS5zdGFydDtyZXR1cm4gbi5jb252ZXJ0KGUsIkRhdGUiKS52YWx1ZU9mKCl9O2E9by1pLDA+PWEmJihhPTEwKSxoPWEvdC5wcm9wcy5jZW50ZXIud2lkdGgsbi5mb3JFYWNoKHQuaXRlbVNldC5pdGVtcyxmdW5jdGlvbih0KXt0LnNob3coKTt2YXIgbj1lKHQpLGE9Yyh0KSxkPW5ldyBEYXRlKG4tKHQuZ2V0V2lkdGhMZWZ0KCkrMTApKmgpLGw9bmV3IERhdGUoYSsodC5nZXRXaWR0aFJpZ2h0KCkrMTApKmgpO2k+ZCYmKGk9ZCxzPXQpLGw+byYmKG89bCxyPXQpfS5iaW5kKHQpKSxzJiZyJiYoZD1zLmdldFdpZHRoTGVmdCgpKzEwLGw9ci5nZXRXaWR0aFJpZ2h0KCkrMTAsdT10LnByb3BzLmNlbnRlci53aWR0aC1kLWwsdT4wJiYoaT1lKHMpLWQqYS91LG89YyhyKStsKmEvdSkpfSgpfXJldHVybnttaW46bnVsbCE9aT9uZXcgRGF0ZShpKTpudWxsLG1heDpudWxsIT1vP25ldyBEYXRlKG8pOm51bGx9fSxvLnByb3RvdHlwZS5nZXREYXRhUmFuZ2U9ZnVuY3Rpb24oKXt2YXIgdD1udWxsLGU9bnVsbCxpPXRoaXMuaXRlbXNEYXRhJiZ0aGlzLml0ZW1zRGF0YS5nZXREYXRhU2V0KCk7cmV0dXJuIGkmJmkuZm9yRWFjaChmdW5jdGlvbihpKXt2YXIgbz1uLmNvbnZlcnQoaS5zdGFydCwiRGF0ZSIpLnZhbHVlT2YoKSxzPW4uY29udmVydCh2b2lkIDAhPWkuZW5kP2kuZW5kOmkuc3RhcnQsIkRhdGUiKS52YWx1ZU9mKCk7KG51bGw9PT10fHx0Pm8pJiYodD1vKSwobnVsbD09PWV8fHM+ZSkmJihlPW8pfSkse21pbjpudWxsIT10P25ldyBEYXRlKHQpOm51bGwsbWF4Om51bGwhPWU/bmV3IERhdGUoZSk6bnVsbH19LG8ucHJvdG90eXBlLmdldEV2ZW50UHJvcGVydGllcz1mdW5jdGlvbih0KXt2YXIgZT10LmNlbnRlcj90LmNlbnRlci54OnQuY2xpZW50WCxpPXQuY2VudGVyP3QuY2VudGVyLnk6dC5jbGllbnRZLG89ZS1uLmdldEFic29sdXRlTGVmdCh0aGlzLmRvbS5jZW50ZXJDb250YWluZXIpLHM9aS1uLmdldEFic29sdXRlVG9wKHRoaXMuZG9tLmNlbnRlckNvbnRhaW5lcikscj10aGlzLml0ZW1TZXQuaXRlbUZyb21UYXJnZXQodCksYT10aGlzLml0ZW1TZXQuZ3JvdXBGcm9tVGFyZ2V0KHQpLGg9dS5jdXN0b21UaW1lRnJvbVRhcmdldCh0KSxkPXRoaXMuaXRlbVNldC5vcHRpb25zLnNuYXB8fG51bGwsbD10aGlzLmJvZHkudXRpbC5nZXRTY2FsZSgpLGM9dGhpcy5ib2R5LnV0aWwuZ2V0U3RlcCgpLHA9dGhpcy5fdG9UaW1lKG8pLGY9ZD9kKHAsbCxjKTpwLG09bi5nZXRUYXJnZXQodCksdj1udWxsO3JldHVybiBudWxsIT1yP3Y9Iml0ZW0iOm51bGwhPWg/dj0iY3VzdG9tLXRpbWUiOm4uaGFzUGFyZW50KG0sdGhpcy50aW1lQXhpcy5kb20uZm9yZWdyb3VuZCk/dj0iYXhpcyI6dGhpcy50aW1lQXhpczImJm4uaGFzUGFyZW50KG0sdGhpcy50aW1lQXhpczIuZG9tLmZvcmVncm91bmQpP3Y9ImF4aXMiOm4uaGFzUGFyZW50KG0sdGhpcy5pdGVtU2V0LmRvbS5sYWJlbFNldCk/dj0iZ3JvdXAtbGFiZWwiOm4uaGFzUGFyZW50KG0sdGhpcy5jdXJyZW50VGltZS5iYXIpP3Y9ImN1cnJlbnQtdGltZSI6bi5oYXNQYXJlbnQobSx0aGlzLmRvbS5jZW50ZXIpJiYodj0iYmFja2dyb3VuZCIpLHtldmVudDp0LGl0ZW06cj9yLmlkOm51bGwsZ3JvdXA6YT9hLmdyb3VwSWQ6bnVsbCx3aGF0OnYscGFnZVg6dC5zcmNFdmVudD90LnNyY0V2ZW50LnBhZ2VYOnQucGFnZVgscGFnZVk6dC5zcmNFdmVudD90LnNyY0V2ZW50LnBhZ2VZOnQucGFnZVkseDpvLHk6cyx0aW1lOnAsc25hcHBlZFRpbWU6Zn19LHQuZXhwb3J0cz1vfSxmdW5jdGlvbih0LGUsaSl7ZnVuY3Rpb24gbyh0LGUpe3RoaXMuYm9keT10LHRoaXMuZGVmYXVsdE9wdGlvbnM9e3Nob3dDdXJyZW50VGltZTohMCxsb2NhbGVzOmEsbG9jYWxlOiJlbiJ9LHRoaXMub3B0aW9ucz1uLmV4dGVuZCh7fSx0aGlzLmRlZmF1bHRPcHRpb25zKSx0aGlzLm9mZnNldD0wLHRoaXMuX2NyZWF0ZSgpLHRoaXMuc2V0T3B0aW9ucyhlKX12YXIgbj1pKDcpLHM9aSgyNykscj1pKDgpLGE9aSgyOCk7by5wcm90b3R5cGU9bmV3IHMsby5wcm90b3R5cGUuX2NyZWF0ZT1mdW5jdGlvbigpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3QuY2xhc3NOYW1lPSJ2aXMtY3VycmVudC10aW1lIix0LnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsdC5zdHlsZS50b3A9IjBweCIsdC5zdHlsZS5oZWlnaHQ9IjEwMCUiLHRoaXMuYmFyPXR9LG8ucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMuc2hvd0N1cnJlbnRUaW1lPSExLHRoaXMucmVkcmF3KCksdGhpcy5ib2R5PW51bGx9LG8ucHJvdG90eXBlLnNldE9wdGlvbnM9ZnVuY3Rpb24odCl7dCYmbi5zZWxlY3RpdmVFeHRlbmQoWyJzaG93Q3VycmVudFRpbWUiLCJsb2NhbGUiLCJsb2NhbGVzIl0sdGhpcy5vcHRpb25zLHQpfSxvLnByb3RvdHlwZS5yZWRyYXc9ZnVuY3Rpb24oKXtpZih0aGlzLm9wdGlvbnMuc2hvd0N1cnJlbnRUaW1lKXt2YXIgdD10aGlzLmJvZHkuZG9tLmJhY2tncm91bmRWZXJ0aWNhbDt0aGlzLmJhci5wYXJlbnROb2RlIT10JiYodGhpcy5iYXIucGFyZW50Tm9kZSYmdGhpcy5iYXIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmJhciksdC5hcHBlbmRDaGlsZCh0aGlzLmJhciksdGhpcy5zdGFydCgpKTt2YXIgZT1uZXcgRGF0ZSgobmV3IERhdGUpLnZhbHVlT2YoKSt0aGlzLm9mZnNldCksaT10aGlzLmJvZHkudXRpbC50b1NjcmVlbihlKSxvPXRoaXMub3B0aW9ucy5sb2NhbGVzW3RoaXMub3B0aW9ucy5sb2NhbGVdO298fCh0aGlzLndhcm5lZHx8KGNvbnNvbGUubG9nKCJXQVJOSU5HOiBvcHRpb25zLmxvY2FsZXNbJyIrdGhpcy5vcHRpb25zLmxvY2FsZSsiJ10gbm90IGZvdW5kLiBTZWUgaHR0cDovL3Zpc2pzLm9yZy9kb2NzL3RpbWVsaW5lLmh0bWwjTG9jYWxpemF0aW9uIiksdGhpcy53YXJuZWQ9ITApLG89dGhpcy5vcHRpb25zLmxvY2FsZXMuZW4pO3ZhciBuPW8uY3VycmVudCsiICIrby50aW1lKyI6ICIrcihlKS5mb3JtYXQoImRkZGQsIE1NTU0gRG8gWVlZWSwgSDptbTpzcyIpO249bi5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStuLnN1YnN0cmluZygxKSx0aGlzLmJhci5zdHlsZS5sZWZ0PWkrInB4Iix0aGlzLmJhci50aXRsZT1ufWVsc2UgdGhpcy5iYXIucGFyZW50Tm9kZSYmdGhpcy5iYXIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmJhciksdGhpcy5zdG9wKCk7cmV0dXJuITF9LG8ucHJvdG90eXBlLnN0YXJ0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe2Uuc3RvcCgpO3ZhciBpPWUuYm9keS5yYW5nZS5jb252ZXJzaW9uKGUuYm9keS5kb21Qcm9wcy5jZW50ZXIud2lkdGgpLnNjYWxlLG89MS9pLzEwOzMwPm8mJihvPTMwKSxvPjFlMyYmKG89MWUzKSxlLnJlZHJhdygpLGUuY3VycmVudFRpbWVUaW1lcj1zZXRUaW1lb3V0KHQsbyl9dmFyIGU9dGhpczt0KCl9LG8ucHJvdG90eXBlLnN0b3A9ZnVuY3Rpb24oKXt2b2lkIDAhPT10aGlzLmN1cnJlbnRUaW1lVGltZXImJihjbGVhclRpbWVvdXQodGhpcy5jdXJyZW50VGltZVRpbWVyKSxkZWxldGUgdGhpcy5jdXJyZW50VGltZVRpbWVyKX0sby5wcm90b3R5cGUuc2V0Q3VycmVudFRpbWU9ZnVuY3Rpb24odCl7dmFyIGU9bi5jb252ZXJ0KHQsIkRhdGUiKS52YWx1ZU9mKCksaT0obmV3IERhdGUpLnZhbHVlT2YoKTt0aGlzLm9mZnNldD1lLWksdGhpcy5yZWRyYXcoKX0sby5wcm90b3R5cGUuZ2V0Q3VycmVudFRpbWU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IERhdGUoKG5ldyBEYXRlKS52YWx1ZU9mKCkrdGhpcy5vZmZzZXQpfSx0LmV4cG9ydHM9b30sZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBpKHQsZSl7dGhpcy5vcHRpb25zPW51bGwsdGhpcy5wcm9wcz1udWxsfWkucHJvdG90eXBlLnNldE9wdGlvbnM9ZnVuY3Rpb24odCl7dCYmdXRpbC5leHRlbmQodGhpcy5vcHRpb25zLHQpfSxpLnByb3RvdHlwZS5yZWRyYXc9ZnVuY3Rpb24oKXtyZXR1cm4hMX0saS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe30saS5wcm90b3R5cGUuX2lzUmVzaXplZD1mdW5jdGlvbigpe3ZhciB0PXRoaXMucHJvcHMuX3ByZXZpb3VzV2lkdGghPT10aGlzLnByb3BzLndpZHRofHx0aGlzLnByb3BzLl9wcmV2aW91c0hlaWdodCE9PXRoaXMucHJvcHMuaGVpZ2h0O3JldHVybiB0aGlzLnByb3BzLl9wcmV2aW91c1dpZHRoPXRoaXMucHJvcHMud2lkdGgsdGhpcy5wcm9wcy5fcHJldmlvdXNIZWlnaHQ9dGhpcy5wcm9wcy5oZWlnaHQsdH0sdC5leHBvcnRzPWl9LGZ1bmN0aW9uKHQsZSl7ZS5lbj17Y3VycmVudDoiY3VycmVudCIsdGltZToidGltZSJ9LGUuZW5fRU49ZS5lbixlLmVuX1VTPWUuZW4sZS5ubD17Y3VycmVudDoiaHVpZGlnZSIsdGltZToidGlqZCJ9LGUubmxfTkw9ZS5ubCxlLm5sX0JFPWUubmx9LGZ1bmN0aW9uKHQsZSxpKXtmdW5jdGlvbiBvKHQsZSl7dmFyIGk9YSgpLmhvdXJzKDApLm1pbnV0ZXMoMCkuc2Vjb25kcygwKS5taWxsaXNlY29uZHMoMCk7dGhpcy5zdGFydD1pLmNsb25lKCkuYWRkKC0zLCJkYXlzIikudmFsdWVPZigpLHRoaXMuZW5kPWkuY2xvbmUoKS5hZGQoNCwiZGF5cyIpLnZhbHVlT2YoKSx0aGlzLmJvZHk9dCx0aGlzLmRlbHRhRGlmZmVyZW5jZT0wLHRoaXMuc2NhbGVPZmZzZXQ9MCx0aGlzLnN0YXJ0VG9Gcm9udD0hMSx0aGlzLmVuZFRvRnJvbnQ9ITAsdGhpcy5kZWZhdWx0T3B0aW9ucz17c3RhcnQ6bnVsbCxlbmQ6bnVsbCxkaXJlY3Rpb246Imhvcml6b250YWwiLG1vdmVhYmxlOiEwLHpvb21hYmxlOiEwLG1pbjpudWxsLG1heDpudWxsLHpvb21NaW46MTAsem9vbU1heDozMTUzNmUxMH0sdGhpcy5vcHRpb25zPXIuZXh0ZW5kKHt9LHRoaXMuZGVmYXVsdE9wdGlvbnMpLHRoaXMucHJvcHM9e3RvdWNoOnt9fSx0aGlzLmFuaW1hdGlvblRpbWVyPW51bGwsdGhpcy5ib2R5LmVtaXR0ZXIub24oInBhbnN0YXJ0Iix0aGlzLl9vbkRyYWdTdGFydC5iaW5kKHRoaXMpKSx0aGlzLmJvZHkuZW1pdHRlci5vbigicGFubW92ZSIsdGhpcy5fb25EcmFnLmJpbmQodGhpcykpLHRoaXMuYm9keS5lbWl0dGVyLm9uKCJwYW5lbmQiLHRoaXMuX29uRHJhZ0VuZC5iaW5kKHRoaXMpKSx0aGlzLmJvZHkuZW1pdHRlci5vbigibW91c2V3aGVlbCIsdGhpcy5fb25Nb3VzZVdoZWVsLmJpbmQodGhpcykpLHRoaXMuYm9keS5lbWl0dGVyLm9uKCJ0b3VjaCIsdGhpcy5fb25Ub3VjaC5iaW5kKHRoaXMpKSx0aGlzLmJvZHkuZW1pdHRlci5vbigicGluY2giLHRoaXMuX29uUGluY2guYmluZCh0aGlzKSksdGhpcy5zZXRPcHRpb25zKGUpfWZ1bmN0aW9uIG4odCl7aWYoImhvcml6b250YWwiIT10JiYidmVydGljYWwiIT10KXRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZGlyZWN0aW9uICInK3QrJyIuIENob29zZSAiaG9yaXpvbnRhbCIgb3IgInZlcnRpY2FsIi4nKX1mdW5jdGlvbiBzKHQsZSl7cmV0dXJue3g6dC54LXIuZ2V0QWJzb2x1dGVMZWZ0KGUpLHk6dC55LXIuZ2V0QWJzb2x1dGVUb3AoZSl9fXZhciByPWkoNyksYT0oaSgzMCksaSg4KSksaD1pKDI3KSxkPWkoMzEpO28ucHJvdG90eXBlPW5ldyBoLG8ucHJvdG90eXBlLnNldE9wdGlvbnM9ZnVuY3Rpb24odCl7aWYodCl7dmFyIGU9WyJkaXJlY3Rpb24iLCJtaW4iLCJtYXgiLCJ6b29tTWluIiwiem9vbU1heCIsIm1vdmVhYmxlIiwiem9vbWFibGUiLCJhY3RpdmF0ZSIsImhpZGRlbkRhdGVzIl07ci5zZWxlY3RpdmVFeHRlbmQoZSx0aGlzLm9wdGlvbnMsdCksKCJzdGFydCJpbiB0fHwiZW5kImluIHQpJiZ0aGlzLnNldFJhbmdlKHQuc3RhcnQsdC5lbmQpfX0sby5wcm90b3R5cGUuc2V0UmFuZ2U9ZnVuY3Rpb24odCxlLGksbyl7byE9PSEwJiYobz0hMSk7dmFyIG49dm9pZCAwIT10P3IuY29udmVydCh0LCJEYXRlIikudmFsdWVPZigpOm51bGwscz12b2lkIDAhPWU/ci5jb252ZXJ0KGUsIkRhdGUiKS52YWx1ZU9mKCk6bnVsbDtpZih0aGlzLl9jYW5jZWxBbmltYXRpb24oKSxpKXt2YXIgYT10aGlzLGg9dGhpcy5zdGFydCxsPXRoaXMuZW5kLHU9Im9iamVjdCI9PXR5cGVvZiBpJiYiZHVyYXRpb24iaW4gaT9pLmR1cmF0aW9uOjUwMCxjPSJvYmplY3QiPT10eXBlb2YgaSYmImVhc2luZ0Z1bmN0aW9uImluIGk/aS5lYXNpbmdGdW5jdGlvbjoiZWFzZUluT3V0UXVhZCIscD1yLmVhc2luZ0Z1bmN0aW9uc1tjXTtpZighcCl0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gZWFzaW5nIGZ1bmN0aW9uICIrSlNPTi5zdHJpbmdpZnkoYykrIi4gQ2hvb3NlIGZyb206ICIrT2JqZWN0LmtleXMoci5lYXNpbmdGdW5jdGlvbnMpLmpvaW4oIiwgIikpO3ZhciBmPShuZXcgRGF0ZSkudmFsdWVPZigpLG09ITEsdj1mdW5jdGlvbiBiKCl7aWYoIWEucHJvcHMudG91Y2guZHJhZ2dpbmcpe3ZhciB0PShuZXcgRGF0ZSkudmFsdWVPZigpLGU9dC1mLGk9cChlL3UpLHI9ZT51LGM9cnx8bnVsbD09PW4/bjpoKyhuLWgpKmksdj1yfHxudWxsPT09cz9zOmwrKHMtbCkqaTtnPWEuX2FwcGx5UmFuZ2UoYyx2KSxkLnVwZGF0ZUhpZGRlbkRhdGVzKGEuYm9keSxhLm9wdGlvbnMuaGlkZGVuRGF0ZXMpLG09bXx8ZyxnJiZhLmJvZHkuZW1pdHRlci5lbWl0KCJyYW5nZWNoYW5nZSIse3N0YXJ0Om5ldyBEYXRlKGEuc3RhcnQpLGVuZDpuZXcgRGF0ZShhLmVuZCksYnlVc2VyOm99KSxyP20mJmEuYm9keS5lbWl0dGVyLmVtaXQoInJhbmdlY2hhbmdlZCIse3N0YXJ0Om5ldyBEYXRlKGEuc3RhcnQpLGVuZDpuZXcgRGF0ZShhLmVuZCksYnlVc2VyOm99KTphLmFuaW1hdGlvblRpbWVyPXNldFRpbWVvdXQoYiwyMCl9fTtyZXR1cm4gdigpfXZhciBnPXRoaXMuX2FwcGx5UmFuZ2UobixzKTtpZihkLnVwZGF0ZUhpZGRlbkRhdGVzKHRoaXMuYm9keSx0aGlzLm9wdGlvbnMuaGlkZGVuRGF0ZXMpLGcpe3ZhciB5PXtzdGFydDpuZXcgRGF0ZSh0aGlzLnN0YXJ0KSxlbmQ6bmV3IERhdGUodGhpcy5lbmQpLGJ5VXNlcjpvfTt0aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJyYW5nZWNoYW5nZSIseSksdGhpcy5ib2R5LmVtaXR0ZXIuZW1pdCgicmFuZ2VjaGFuZ2VkIix5KX19LG8ucHJvdG90eXBlLl9jYW5jZWxBbmltYXRpb249ZnVuY3Rpb24oKXt0aGlzLmFuaW1hdGlvblRpbWVyJiYoY2xlYXJUaW1lb3V0KHRoaXMuYW5pbWF0aW9uVGltZXIpLHRoaXMuYW5pbWF0aW9uVGltZXI9bnVsbCl9LG8ucHJvdG90eXBlLl9hcHBseVJhbmdlPWZ1bmN0aW9uKHQsZSl7dmFyIGksbz1udWxsIT10P3IuY29udmVydCh0LCJEYXRlIikudmFsdWVPZigpOnRoaXMuc3RhcnQsbj1udWxsIT1lP3IuY29udmVydChlLCJEYXRlIikudmFsdWVPZigpOnRoaXMuZW5kLHM9bnVsbCE9dGhpcy5vcHRpb25zLm1heD9yLmNvbnZlcnQodGhpcy5vcHRpb25zLm1heCwiRGF0ZSIpLnZhbHVlT2YoKTpudWxsLGE9bnVsbCE9dGhpcy5vcHRpb25zLm1pbj9yLmNvbnZlcnQodGhpcy5vcHRpb25zLm1pbiwiRGF0ZSIpLnZhbHVlT2YoKTpudWxsO2lmKGlzTmFOKG8pfHxudWxsPT09byl0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgc3RhcnQgIicrdCsnIicpO2lmKGlzTmFOKG4pfHxudWxsPT09bil0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZW5kICInK2UrJyInKTtpZihvPm4mJihuPW8pLG51bGwhPT1hJiZhPm8mJihpPWEtbyxvKz1pLG4rPWksbnVsbCE9cyYmbj5zJiYobj1zKSksbnVsbCE9PXMmJm4+cyYmKGk9bi1zLG8tPWksbi09aSxudWxsIT1hJiZhPm8mJihvPWEpKSxudWxsIT09dGhpcy5vcHRpb25zLnpvb21NaW4pe3ZhciBoPXBhcnNlRmxvYXQodGhpcy5vcHRpb25zLnpvb21NaW4pOzA+aCYmKGg9MCksaD5uLW8mJih0aGlzLmVuZC10aGlzLnN0YXJ0PT09aCYmbz50aGlzLnN0YXJ0JiZuPHRoaXMuZW5kPyhvPXRoaXMuc3RhcnQsbj10aGlzLmVuZCk6KGk9aC0obi1vKSxvLT1pLzIsbis9aS8yKSl9aWYobnVsbCE9PXRoaXMub3B0aW9ucy56b29tTWF4KXt2YXIgZD1wYXJzZUZsb2F0KHRoaXMub3B0aW9ucy56b29tTWF4KTswPmQmJihkPTApLG4tbz5kJiYodGhpcy5lbmQtdGhpcy5zdGFydD09PWQmJm88dGhpcy5zdGFydCYmbj50aGlzLmVuZD8obz10aGlzLnN0YXJ0LG49dGhpcy5lbmQpOihpPW4tby1kLG8rPWkvMixuLT1pLzIpKX12YXIgbD10aGlzLnN0YXJ0IT1vfHx0aGlzLmVuZCE9bjtyZXR1cm4gbz49dGhpcy5zdGFydCYmbzw9dGhpcy5lbmR8fG4+PXRoaXMuc3RhcnQmJm48PXRoaXMuZW5kfHx0aGlzLnN0YXJ0Pj1vJiZ0aGlzLnN0YXJ0PD1ufHx0aGlzLmVuZD49byYmdGhpcy5lbmQ8PW58fHRoaXMuYm9keS5lbWl0dGVyLmVtaXQoImNoZWNrUmFuZ2VkSXRlbXMiKSx0aGlzLnN0YXJ0PW8sdGhpcy5lbmQ9bixsfSxvLnByb3RvdHlwZS5nZXRSYW5nZT1mdW5jdGlvbigpe3JldHVybntzdGFydDp0aGlzLnN0YXJ0LGVuZDp0aGlzLmVuZH19LG8ucHJvdG90eXBlLmNvbnZlcnNpb249ZnVuY3Rpb24odCxlKXtyZXR1cm4gby5jb252ZXJzaW9uKHRoaXMuc3RhcnQsdGhpcy5lbmQsdCxlKX0sby5jb252ZXJzaW9uPWZ1bmN0aW9uKHQsZSxpLG8pe3JldHVybiB2b2lkIDA9PT1vJiYobz0wKSwwIT1pJiZlLXQhPTA/e29mZnNldDp0LHNjYWxlOmkvKGUtdC1vKX06e29mZnNldDowLHNjYWxlOjF9fSxvLnByb3RvdHlwZS5fb25EcmFnU3RhcnQ9ZnVuY3Rpb24odCl7dGhpcy5kZWx0YURpZmZlcmVuY2U9MCx0aGlzLnByZXZpb3VzRGVsdGE9MCx0aGlzLm9wdGlvbnMubW92ZWFibGUmJnRoaXMucHJvcHMudG91Y2guYWxsb3dEcmFnZ2luZyYmKHRoaXMucHJvcHMudG91Y2guc3RhcnQ9dGhpcy5zdGFydCx0aGlzLnByb3BzLnRvdWNoLmVuZD10aGlzLmVuZCx0aGlzLnByb3BzLnRvdWNoLmRyYWdnaW5nPSEwLHRoaXMuYm9keS5kb20ucm9vdCYmKHRoaXMuYm9keS5kb20ucm9vdC5zdHlsZS5jdXJzb3I9Im1vdmUiKSl9LG8ucHJvdG90eXBlLl9vbkRyYWc9ZnVuY3Rpb24odCl7aWYodGhpcy5vcHRpb25zLm1vdmVhYmxlJiZ0aGlzLnByb3BzLnRvdWNoLmFsbG93RHJhZ2dpbmcpe3ZhciBlPXRoaXMub3B0aW9ucy5kaXJlY3Rpb247bihlKTt2YXIgaT0iaG9yaXpvbnRhbCI9PWU/dC5kZWx0YVg6dC5kZWx0YVk7aS09dGhpcy5kZWx0YURpZmZlcmVuY2U7dmFyIG89dGhpcy5wcm9wcy50b3VjaC5lbmQtdGhpcy5wcm9wcy50b3VjaC5zdGFydCxzPWQuZ2V0SGlkZGVuRHVyYXRpb25CZXR3ZWVuKHRoaXMuYm9keS5oaWRkZW5EYXRlcyx0aGlzLnN0YXJ0LHRoaXMuZW5kKTtvLT1zO3ZhciByPSJob3Jpem9udGFsIj09ZT90aGlzLmJvZHkuZG9tUHJvcHMuY2VudGVyLndpZHRoOnRoaXMuYm9keS5kb21Qcm9wcy5jZW50ZXIuaGVpZ2h0LGE9LWkvcipvLGg9dGhpcy5wcm9wcy50b3VjaC5zdGFydCthLGw9dGhpcy5wcm9wcy50b3VjaC5lbmQrYSx1PWQuc25hcEF3YXlGcm9tSGlkZGVuKHRoaXMuYm9keS5oaWRkZW5EYXRlcyxoLHRoaXMucHJldmlvdXNEZWx0YS1pLCEwKSxjPWQuc25hcEF3YXlGcm9tSGlkZGVuKHRoaXMuYm9keS5oaWRkZW5EYXRlcyxsLHRoaXMucHJldmlvdXNEZWx0YS1pLCEwKTtpZih1IT1ofHxjIT1sKXJldHVybiB0aGlzLmRlbHRhRGlmZmVyZW5jZSs9aSx0aGlzLnByb3BzLnRvdWNoLnN0YXJ0PXUsdGhpcy5wcm9wcy50b3VjaC5lbmQ9Yyx2b2lkIHRoaXMuX29uRHJhZyh0KTt0aGlzLnByZXZpb3VzRGVsdGE9aSx0aGlzLl9hcHBseVJhbmdlKGgsbCksdGhpcy5ib2R5LmVtaXR0ZXIuZW1pdCgicmFuZ2VjaGFuZ2UiLHtzdGFydDpuZXcgRGF0ZSh0aGlzLnN0YXJ0KSxlbmQ6bmV3IERhdGUodGhpcy5lbmQpLGJ5VXNlcjohMH0pfX0sby5wcm90b3R5cGUuX29uRHJhZ0VuZD1mdW5jdGlvbih0KXt0aGlzLm9wdGlvbnMubW92ZWFibGUmJnRoaXMucHJvcHMudG91Y2guYWxsb3dEcmFnZ2luZyYmKHRoaXMucHJvcHMudG91Y2guZHJhZ2dpbmc9ITEsdGhpcy5ib2R5LmRvbS5yb290JiYodGhpcy5ib2R5LmRvbS5yb290LnN0eWxlLmN1cnNvcj0iYXV0byIpLHRoaXMuYm9keS5lbWl0dGVyLmVtaXQoInJhbmdlY2hhbmdlZCIse3N0YXJ0Om5ldyBEYXRlKHRoaXMuc3RhcnQpLGVuZDpuZXcgRGF0ZSh0aGlzLmVuZCksYnlVc2VyOiEwfSkpfSxvLnByb3RvdHlwZS5fb25Nb3VzZVdoZWVsPWZ1bmN0aW9uKHQpe2lmKHRoaXMub3B0aW9ucy56b29tYWJsZSYmdGhpcy5vcHRpb25zLm1vdmVhYmxlKXt2YXIgZT0wO2lmKHQud2hlZWxEZWx0YT9lPXQud2hlZWxEZWx0YS8xMjA6dC5kZXRhaWwmJihlPS10LmRldGFpbC8zKSxlKXt2YXIgaTtpPTA+ZT8xLWUvNToxLygxK2UvNSk7dmFyIG89cyh7eDp0LmNsaWVudFgseTp0LmNsaWVudFl9LHRoaXMuYm9keS5kb20uY2VudGVyKSxuPXRoaXMuX3BvaW50ZXJUb0RhdGUobyk7dGhpcy56b29tKGksbixlKX10LnByZXZlbnREZWZhdWx0KCl9fSxvLnByb3RvdHlwZS5fb25Ub3VjaD1mdW5jdGlvbih0KXt0aGlzLnByb3BzLnRvdWNoLnN0YXJ0PXRoaXMuc3RhcnQsdGhpcy5wcm9wcy50b3VjaC5lbmQ9dGhpcy5lbmQsdGhpcy5wcm9wcy50b3VjaC5hbGxvd0RyYWdnaW5nPSEwLHRoaXMucHJvcHMudG91Y2guY2VudGVyPW51bGwsdGhpcy5zY2FsZU9mZnNldD0wLHRoaXMuZGVsdGFEaWZmZXJlbmNlPTB9LG8ucHJvdG90eXBlLl9vblBpbmNoPWZ1bmN0aW9uKHQpe2lmKHRoaXMub3B0aW9ucy56b29tYWJsZSYmdGhpcy5vcHRpb25zLm1vdmVhYmxlKXt0aGlzLnByb3BzLnRvdWNoLmFsbG93RHJhZ2dpbmc9ITEsdGhpcy5wcm9wcy50b3VjaC5jZW50ZXJ8fCh0aGlzLnByb3BzLnRvdWNoLmNlbnRlcj1zKHQuY2VudGVyLHRoaXMuYm9keS5kb20uY2VudGVyKSk7dmFyIGU9MS8odC5zY2FsZSt0aGlzLnNjYWxlT2Zmc2V0KSxpPXRoaXMuX3BvaW50ZXJUb0RhdGUodGhpcy5wcm9wcy50b3VjaC5jZW50ZXIpLG89ZC5nZXRIaWRkZW5EdXJhdGlvbkJldHdlZW4odGhpcy5ib2R5LmhpZGRlbkRhdGVzLHRoaXMuc3RhcnQsdGhpcy5lbmQpLG49ZC5nZXRIaWRkZW5EdXJhdGlvbkJlZm9yZSh0aGlzLmJvZHkuaGlkZGVuRGF0ZXMsdGhpcyxpKSxyPW8tbixhPWktbisodGhpcy5wcm9wcy50b3VjaC5zdGFydC0oaS1uKSkqZSxoPWkrcisodGhpcy5wcm9wcy50b3VjaC5lbmQtKGkrcikpKmU7dGhpcy5zdGFydFRvRnJvbnQ9MD49MS1lLHRoaXMuZW5kVG9Gcm9udD0wPj1lLTE7dmFyIGw9ZC5zbmFwQXdheUZyb21IaWRkZW4odGhpcy5ib2R5LmhpZGRlbkRhdGVzLGEsMS1lLCEwKSx1PWQuc25hcEF3YXlGcm9tSGlkZGVuKHRoaXMuYm9keS5oaWRkZW5EYXRlcyxoLGUtMSwhMCk7KGwhPWF8fHUhPWgpJiYodGhpcy5wcm9wcy50b3VjaC5zdGFydD1sLHRoaXMucHJvcHMudG91Y2guZW5kPXUsdGhpcy5zY2FsZU9mZnNldD0xLXQuc2NhbGUsYT1sLGg9dSksdGhpcy5zZXRSYW5nZShhLGgsITEsITApLHRoaXMuc3RhcnRUb0Zyb250PSExLHRoaXMuZW5kVG9Gcm9udD0hMH19LG8ucHJvdG90eXBlLl9wb2ludGVyVG9EYXRlPWZ1bmN0aW9uKHQpe3ZhciBlLGk9dGhpcy5vcHRpb25zLmRpcmVjdGlvbjtpZihuKGkpLCJob3Jpem9udGFsIj09aSlyZXR1cm4gdGhpcy5ib2R5LnV0aWwudG9UaW1lKHQueCkudmFsdWVPZigpO3ZhciBvPXRoaXMuYm9keS5kb21Qcm9wcy5jZW50ZXIuaGVpZ2h0O3JldHVybiBlPXRoaXMuY29udmVyc2lvbihvKSx0LnkvZS5zY2FsZStlLm9mZnNldH0sby5wcm90b3R5cGUuem9vbT1mdW5jdGlvbih0LGUsaSl7bnVsbD09ZSYmKGU9KHRoaXMuc3RhcnQrdGhpcy5lbmQpLzIpO3ZhciBvPWQuZ2V0SGlkZGVuRHVyYXRpb25CZXR3ZWVuKHRoaXMuYm9keS5oaWRkZW5EYXRlcyx0aGlzLnN0YXJ0LHRoaXMuZW5kKSxuPWQuZ2V0SGlkZGVuRHVyYXRpb25CZWZvcmUodGhpcy5ib2R5LmhpZGRlbkRhdGVzLHRoaXMsZSkscz1vLW4scj1lLW4rKHRoaXMuc3RhcnQtKGUtbikpKnQsYT1lK3MrKHRoaXMuZW5kLShlK3MpKSp0O3RoaXMuc3RhcnRUb0Zyb250PWk+MD8hMTohMCx0aGlzLmVuZFRvRnJvbnQ9LWk+MD8hMTohMDt2YXIgaD1kLnNuYXBBd2F5RnJvbUhpZGRlbih0aGlzLmJvZHkuaGlkZGVuRGF0ZXMscixpLCEwKSxsPWQuc25hcEF3YXlGcm9tSGlkZGVuKHRoaXMuYm9keS5oaWRkZW5EYXRlcyxhLC1pLCEwKTsoaCE9cnx8bCE9YSkmJihyPWgsYT1sKSx0aGlzLnNldFJhbmdlKHIsYSwhMSwhMCksdGhpcy5zdGFydFRvRnJvbnQ9ITEsdGhpcy5lbmRUb0Zyb250PSEwfSxvLnByb3RvdHlwZS5tb3ZlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZW5kLXRoaXMuc3RhcnQsaT10aGlzLnN0YXJ0K2UqdCxvPXRoaXMuZW5kK2UqdDt0aGlzLnN0YXJ0PWksdGhpcy5lbmQ9b30sby5wcm90b3R5cGUubW92ZVRvPWZ1bmN0aW9uKHQpe3ZhciBlPSh0aGlzLnN0YXJ0K3RoaXMuZW5kKS8yLGk9ZS10LG89dGhpcy5zdGFydC1pLG49dGhpcy5lbmQtaTt0aGlzLnNldFJhbmdlKG8sbil9LHQuZXhwb3J0cz1vfSxmdW5jdGlvbih0LGUsaSl7aSgzKTtlLm9uVG91Y2g9ZnVuY3Rpb24odCxlKXtlLmlucHV0SGFuZGxlcj1mdW5jdGlvbih0KXt0LmlzRmlyc3QmJiFvJiYoZSh0KSxvPSEwLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtvPSExfSwwKSl9LHQub24oImhhbW1lci5pbnB1dCIsZS5pbnB1dEhhbmRsZXIpfTt2YXIgbz0hMTtlLm9uUmVsZWFzZT1mdW5jdGlvbih0LGUpe3JldHVybiBlLmlucHV0SGFuZGxlcj1mdW5jdGlvbih0KXt0LmlzRmluYWwmJiFuJiYoZSh0KSxuPSEwLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtuPSExfSwwKSl9LHQub24oImhhbW1lci5pbnB1dCIsZS5pbnB1dEhhbmRsZXIpfTt2YXIgbj0hMTtlLm9mZlRvdWNoPWZ1bmN0aW9uKHQsZSl7dC5vZmYoImhhbW1lci5pbnB1dCIsZS5pbnB1dEhhbmRsZXIpfSxlLm9mZlJlbGVhc2U9ZS5vZmZUb3VjaH0sZnVuY3Rpb24odCxlLGkpe3ZhciBvPWkoOCk7ZS5jb252ZXJ0SGlkZGVuT3B0aW9ucz1mdW5jdGlvbih0LGUpe2lmKHQuaGlkZGVuRGF0ZXM9W10sZSYmMT09QXJyYXkuaXNBcnJheShlKSl7Zm9yKHZhciBpPTA7aTxlLmxlbmd0aDtpKyspaWYodm9pZCAwPT09ZVtpXS5yZXBlYXQpe3ZhciBuPXt9O24uc3RhcnQ9byhlW2ldLnN0YXJ0KS50b0RhdGUoKS52YWx1ZU9mKCksbi5lbmQ9byhlW2ldLmVuZCkudG9EYXRlKCkudmFsdWVPZigpLHQuaGlkZGVuRGF0ZXMucHVzaChuKX10LmhpZGRlbkRhdGVzLnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5zdGFydC1lLnN0YXJ0fSl9fSxlLnVwZGF0ZUhpZGRlbkRhdGVzPWZ1bmN0aW9uKHQsaSl7aWYoaSYmdm9pZCAwIT09dC5kb21Qcm9wcy5jZW50ZXJDb250YWluZXIud2lkdGgpe2UuY29udmVydEhpZGRlbk9wdGlvbnModCxpKTtmb3IodmFyIG49byh0LnJhbmdlLnN0YXJ0KSxzPW8odC5yYW5nZS5lbmQpLHI9dC5yYW5nZS5lbmQtdC5yYW5nZS5zdGFydCxhPXIvdC5kb21Qcm9wcy5jZW50ZXJDb250YWluZXIud2lkdGgsaD0wO2g8aS5sZW5ndGg7aCsrKWlmKHZvaWQgMCE9PWlbaF0ucmVwZWF0KXt2YXIgZD1vKGlbaF0uc3RhcnQpLGw9byhpW2hdLmVuZCk7aWYoIkludmFsaWQgRGF0ZSI9PWQuX2QpdGhyb3cgbmV3IEVycm9yKCJTdXBwbGllZCBzdGFydCBkYXRlIGlzIG5vdCB2YWxpZDogIitpW2hdLnN0YXJ0KTtpZigiSW52YWxpZCBEYXRlIj09bC5fZCl0aHJvdyBuZXcgRXJyb3IoIlN1cHBsaWVkIGVuZCBkYXRlIGlzIG5vdCB2YWxpZDogIitpW2hdLmVuZCk7dmFyIHU9bC1kO2lmKHU+PTQqYSl7dmFyIGM9MCxwPXMuY2xvbmUoKTtzd2l0Y2goaVtoXS5yZXBlYXQpe2Nhc2UiZGFpbHkiOmQuZGF5KCkhPWwuZGF5KCkmJihjPTEpLGQuZGF5T2ZZZWFyKG4uZGF5T2ZZZWFyKCkpLGQueWVhcihuLnllYXIoKSksZC5zdWJ0cmFjdCg3LCJkYXlzIiksbC5kYXlPZlllYXIobi5kYXlPZlllYXIoKSksbC55ZWFyKG4ueWVhcigpKSxsLnN1YnRyYWN0KDctYywiZGF5cyIpLHAuYWRkKDEsIndlZWtzIik7YnJlYWs7Y2FzZSJ3ZWVrbHkiOnZhciBmPWwuZGlmZihkLCJkYXlzIiksbT1kLmRheSgpO2QuZGF0ZShuLmRhdGUoKSksZC5tb250aChuLm1vbnRoKCkpLGQueWVhcihuLnllYXIoKSksbD1kLmNsb25lKCksZC5kYXkobSksbC5kYXkobSksbC5hZGQoZiwiZGF5cyIpLGQuc3VidHJhY3QoMSwid2Vla3MiKSxsLnN1YnRyYWN0KDEsIndlZWtzIikscC5hZGQoMSwid2Vla3MiKTticmVhaztjYXNlIm1vbnRobHkiOmQubW9udGgoKSE9bC5tb250aCgpJiYoYz0xKSxkLm1vbnRoKG4ubW9udGgoKSksZC55ZWFyKG4ueWVhcigpKSxkLnN1YnRyYWN0KDEsIm1vbnRocyIpLGwubW9udGgobi5tb250aCgpKSxsLnllYXIobi55ZWFyKCkpLGwuc3VidHJhY3QoMSwibW9udGhzIiksbC5hZGQoYywibW9udGhzIikscC5hZGQoMSwibW9udGhzIik7YnJlYWs7Y2FzZSJ5ZWFybHkiOmQueWVhcigpIT1sLnllYXIoKSYmKGM9MSksZC55ZWFyKG4ueWVhcigpKSxkLnN1YnRyYWN0KDEsInllYXJzIiksbC55ZWFyKG4ueWVhcigpKSxsLnN1YnRyYWN0KDEsInllYXJzIiksbC5hZGQoYywieWVhcnMiKSxwLmFkZCgxLCJ5ZWFycyIpO2JyZWFrO2RlZmF1bHQ6cmV0dXJuIHZvaWQgY29uc29sZS5sb2coIldyb25nIHJlcGVhdCBmb3JtYXQsIGFsbG93ZWQgYXJlOiBkYWlseSwgd2Vla2x5LCBtb250aGx5LCB5ZWFybHkuIEdpdmVuOiIsaVtoXS5yZXBlYXQpfWZvcig7cD5kOylzd2l0Y2godC5oaWRkZW5EYXRlcy5wdXNoKHtzdGFydDpkLnZhbHVlT2YoKSxlbmQ6bC52YWx1ZU9mKCl9KSxpW2hdLnJlcGVhdCl7Y2FzZSJkYWlseSI6ZC5hZGQoMSwiZGF5cyIpLGwuYWRkKDEsImRheXMiKTticmVhaztjYXNlIndlZWtseSI6ZC5hZGQoMSwid2Vla3MiKSxsLmFkZCgxLCJ3ZWVrcyIpO2JyZWFrO2Nhc2UibW9udGhseSI6ZC5hZGQoMSwibW9udGhzIiksbC5hZGQoMSwibW9udGhzIik7YnJlYWs7Y2FzZSJ5ZWFybHkiOmQuYWRkKDEsInkiKSxsLmFkZCgxLCJ5Iik7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gdm9pZCBjb25zb2xlLmxvZygiV3JvbmcgcmVwZWF0IGZvcm1hdCwgYWxsb3dlZCBhcmU6IGRhaWx5LCB3ZWVrbHksIG1vbnRobHksIHllYXJseS4gR2l2ZW46IixpW2hdLnJlcGVhdCl9dC5oaWRkZW5EYXRlcy5wdXNoKHtzdGFydDpkLnZhbHVlT2YoKSxlbmQ6bC52YWx1ZU9mKCl9KX19ZS5yZW1vdmVEdXBsaWNhdGVzKHQpO3ZhciB2PWUuaXNIaWRkZW4odC5yYW5nZS5zdGFydCx0LmhpZGRlbkRhdGVzKSxnPWUuaXNIaWRkZW4odC5yYW5nZS5lbmQsdC5oaWRkZW5EYXRlcykseT10LnJhbmdlLnN0YXJ0LGI9dC5yYW5nZS5lbmQ7MT09di5oaWRkZW4mJih5PTE9PXQucmFuZ2Uuc3RhcnRUb0Zyb250P3Yuc3RhcnREYXRlLTE6di5lbmREYXRlKzEpLDE9PWcuaGlkZGVuJiYoYj0xPT10LnJhbmdlLmVuZFRvRnJvbnQ/Zy5zdGFydERhdGUtMTpnLmVuZERhdGUrMSksKDE9PXYuaGlkZGVufHwxPT1nLmhpZGRlbikmJnQucmFuZ2UuX2FwcGx5UmFuZ2UoeSxiKX19LGUucmVtb3ZlRHVwbGljYXRlcz1mdW5jdGlvbih0KXtmb3IodmFyIGU9dC5oaWRkZW5EYXRlcyxpPVtdLG89MDtvPGUubGVuZ3RoO28rKylmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKylvIT1uJiYxIT1lW25dLnJlbW92ZSYmMSE9ZVtvXS5yZW1vdmUmJihlW25dLnN0YXJ0Pj1lW29dLnN0YXJ0JiZlW25dLmVuZDw9ZVtvXS5lbmQ/ZVtuXS5yZW1vdmU9ITA6ZVtuXS5zdGFydD49ZVtvXS5zdGFydCYmZVtuXS5zdGFydDw9ZVtvXS5lbmQ/KGVbb10uZW5kPWVbbl0uZW5kLGVbbl0ucmVtb3ZlPSEwKTplW25dLmVuZD49ZVtvXS5zdGFydCYmZVtuXS5lbmQ8PWVbb10uZW5kJiYoZVtvXS5zdGFydD1lW25dLnN0YXJ0LGVbbl0ucmVtb3ZlPSEwKSk7Zm9yKHZhciBvPTA7bzxlLmxlbmd0aDtvKyspZVtvXS5yZW1vdmUhPT0hMCYmaS5wdXNoKGVbb10pO3QuaGlkZGVuRGF0ZXM9aSx0LmhpZGRlbkRhdGVzLnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5zdGFydC1lLnN0YXJ0fSl9LGUucHJpbnREYXRlcz1mdW5jdGlvbih0KXtmb3IodmFyIGU9MDtlPHQubGVuZ3RoO2UrKyljb25zb2xlLmxvZyhlLG5ldyBEYXRlKHRbZV0uc3RhcnQpLG5ldyBEYXRlKHRbZV0uZW5kKSx0W2VdLnN0YXJ0LHRbZV0uZW5kLHRbZV0ucmVtb3ZlKX0sZS5zdGVwT3ZlckhpZGRlbkRhdGVzPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpPSExLG49dC5jdXJyZW50LnZhbHVlT2YoKSxzPTA7czx0LmhpZGRlbkRhdGVzLmxlbmd0aDtzKyspe3ZhciByPXQuaGlkZGVuRGF0ZXNbc10uc3RhcnQsYT10LmhpZGRlbkRhdGVzW3NdLmVuZDtpZihuPj1yJiZhPm4pe2k9ITA7YnJlYWt9fWlmKDE9PWkmJm48dC5fZW5kLnZhbHVlT2YoKSYmbiE9ZSl7dmFyIGg9byhlKSxkPW8oYSk7aC55ZWFyKCkhPWQueWVhcigpP3Quc3dpdGNoZWRZZWFyPSEwOmgubW9udGgoKSE9ZC5tb250aCgpP3Quc3dpdGNoZWRNb250aD0hMDpoLmRheU9mWWVhcigpIT1kLmRheU9mWWVhcigpJiYodC5zd2l0Y2hlZERheT0hMCksdC5jdXJyZW50PWQudG9EYXRlKCl9fSxlLnRvU2NyZWVuPWZ1bmN0aW9uKHQsaSxvKXtpZigwPT10LmJvZHkuaGlkZGVuRGF0ZXMubGVuZ3RoKXt2YXIgbj10LnJhbmdlLmNvbnZlcnNpb24obyk7cmV0dXJuKGkudmFsdWVPZigpLW4ub2Zmc2V0KSpuLnNjYWxlfXZhciBzPWUuaXNIaWRkZW4oaSx0LmJvZHkuaGlkZGVuRGF0ZXMpOzE9PXMuaGlkZGVuJiYoaT1zLnN0YXJ0RGF0ZSk7dmFyIHI9ZS5nZXRIaWRkZW5EdXJhdGlvbkJldHdlZW4odC5ib2R5LmhpZGRlbkRhdGVzLHQucmFuZ2Uuc3RhcnQsdC5yYW5nZS5lbmQpO2k9ZS5jb3JyZWN0VGltZUZvckhpZGRlbih0LmJvZHkuaGlkZGVuRGF0ZXMsdC5yYW5nZSxpKTt2YXIgbj10LnJhbmdlLmNvbnZlcnNpb24obyxyKTtyZXR1cm4oaS52YWx1ZU9mKCktbi5vZmZzZXQpKm4uc2NhbGV9LGUudG9UaW1lPWZ1bmN0aW9uKHQsaSxvKXtpZigwPT10LmJvZHkuaGlkZGVuRGF0ZXMubGVuZ3RoKXt2YXIgbj10LnJhbmdlLmNvbnZlcnNpb24obyk7cmV0dXJuIG5ldyBEYXRlKGkvbi5zY2FsZStuLm9mZnNldCl9dmFyIHM9ZS5nZXRIaWRkZW5EdXJhdGlvbkJldHdlZW4odC5ib2R5LmhpZGRlbkRhdGVzLHQucmFuZ2Uuc3RhcnQsdC5yYW5nZS5lbmQpLHI9dC5yYW5nZS5lbmQtdC5yYW5nZS5zdGFydC1zLGE9cippL28saD1lLmdldEFjY3VtdWxhdGVkSGlkZGVuRHVyYXRpb24odC5ib2R5LmhpZGRlbkRhdGVzLHQucmFuZ2UsYSksZD1uZXcgRGF0ZShoK2ErdC5yYW5nZS5zdGFydCk7cmV0dXJuIGR9LGUuZ2V0SGlkZGVuRHVyYXRpb25CZXR3ZWVuPWZ1bmN0aW9uKHQsZSxpKXtmb3IodmFyIG89MCxuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBzPXRbbl0uc3RhcnQscj10W25dLmVuZDtzPj1lJiZpPnImJihvKz1yLXMpfXJldHVybiBvfSxlLmNvcnJlY3RUaW1lRm9ySGlkZGVuPWZ1bmN0aW9uKHQsaSxuKXtyZXR1cm4gbj1vKG4pLnRvRGF0ZSgpLnZhbHVlT2YoKSxuLT1lLmdldEhpZGRlbkR1cmF0aW9uQmVmb3JlKHQsaSxuKX0sZS5nZXRIaWRkZW5EdXJhdGlvbkJlZm9yZT1mdW5jdGlvbih0LGUsaSl7dmFyIG49MDtpPW8oaSkudG9EYXRlKCkudmFsdWVPZigpO2Zvcih2YXIgcz0wO3M8dC5sZW5ndGg7cysrKXt2YXIgcj10W3NdLnN0YXJ0LGE9dFtzXS5lbmQ7cj49ZS5zdGFydCYmYTxlLmVuZCYmaT49YSYmKG4rPWEtcil9cmV0dXJuIG59LGUuZ2V0QWNjdW11bGF0ZWRIaWRkZW5EdXJhdGlvbj1mdW5jdGlvbih0LGUsaSl7Zm9yKHZhciBvPTAsbj0wLHM9ZS5zdGFydCxyPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBhPXRbcl0uc3RhcnQsaD10W3JdLmVuZDtpZihhPj1lLnN0YXJ0JiZoPGUuZW5kKXtpZihuKz1hLXMscz1oLG4+PWkpYnJlYWs7bys9aC1hfX1yZXR1cm4gb30sZS5zbmFwQXdheUZyb21IaWRkZW49ZnVuY3Rpb24odCxpLG8sbil7dmFyIHM9ZS5pc0hpZGRlbihpLHQpO3JldHVybiAxPT1zLmhpZGRlbj8wPm8/MT09bj9zLnN0YXJ0RGF0ZS0ocy5lbmREYXRlLWkpLTE6cy5zdGFydERhdGUtMToxPT1uP3MuZW5kRGF0ZSsoaS1zLnN0YXJ0RGF0ZSkrMTpzLmVuZERhdGUrMTppfSxlLmlzSGlkZGVuPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpPTA7aTxlLmxlbmd0aDtpKyspe3ZhciBvPWVbaV0uc3RhcnQsbj1lW2ldLmVuZDtpZih0Pj1vJiZuPnQpcmV0dXJue2hpZGRlbjohMCxzdGFydERhdGU6byxlbmREYXRlOm59fXJldHVybntoaWRkZW46ITEsc3RhcnREYXRlOm8sZW5kRGF0ZTpufX19LGZ1bmN0aW9uKHQsZSxpKXtmdW5jdGlvbiBvKCl7fXZhciBuPWkoMTkpLHM9aSgzKSxyPWkoMzApLGE9aSg3KSxoPShpKDE0KSxpKDE2KSxpKDI5KSxpKDMzKSxpKDQxKSksZD1pKDQyKSxsPWkoMzEpLHU9aSg0NCk7bihvLnByb3RvdHlwZSksby5wcm90b3R5cGUuX2NyZWF0ZT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKHQpe2kuaXNBY3RpdmUoKSYmaS5lbWl0KCJtb3VzZXdoZWVsIix0KX10aGlzLmRvbT17fSx0aGlzLmRvbS5jb250YWluZXI9dCx0aGlzLmRvbS5yb290PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuZG9tLmJhY2tncm91bmQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5kb20uYmFja2dyb3VuZFZlcnRpY2FsPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuZG9tLmJhY2tncm91bmRIb3Jpem9udGFsPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuZG9tLmNlbnRlckNvbnRhaW5lcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLmRvbS5sZWZ0Q29udGFpbmVyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuZG9tLnJpZ2h0Q29udGFpbmVyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuZG9tLmNlbnRlcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLmRvbS5sZWZ0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuZG9tLnJpZ2h0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuZG9tLnRvcD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLmRvbS5ib3R0b209ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5kb20uc2hhZG93VG9wPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuZG9tLnNoYWRvd0JvdHRvbT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLmRvbS5zaGFkb3dUb3BMZWZ0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuZG9tLnNoYWRvd0JvdHRvbUxlZnQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5kb20uc2hhZG93VG9wUmlnaHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5kb20uc2hhZG93Qm90dG9tUmlnaHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5kb20ucm9vdC5jbGFzc05hbWU9InZpcy10aW1lbGluZSIsdGhpcy5kb20uYmFja2dyb3VuZC5jbGFzc05hbWU9InZpcy1wYW5lbCB2aXMtYmFja2dyb3VuZCIsdGhpcy5kb20uYmFja2dyb3VuZFZlcnRpY2FsLmNsYXNzTmFtZT0idmlzLXBhbmVsIHZpcy1iYWNrZ3JvdW5kIHZpcy12ZXJ0aWNhbCIsdGhpcy5kb20uYmFja2dyb3VuZEhvcml6b250YWwuY2xhc3NOYW1lPSJ2aXMtcGFuZWwgdmlzLWJhY2tncm91bmQgdmlzLWhvcml6b250YWwiLHRoaXMuZG9tLmNlbnRlckNvbnRhaW5lci5jbGFzc05hbWU9InZpcy1wYW5lbCB2aXMtY2VudGVyIix0aGlzLmRvbS5sZWZ0Q29udGFpbmVyLmNsYXNzTmFtZT0idmlzLXBhbmVsIHZpcy1sZWZ0Iix0aGlzLmRvbS5yaWdodENvbnRhaW5lci5jbGFzc05hbWU9InZpcy1wYW5lbCB2aXMtcmlnaHQiLHRoaXMuZG9tLnRvcC5jbGFzc05hbWU9InZpcy1wYW5lbCB2aXMtdG9wIix0aGlzLmRvbS5ib3R0b20uY2xhc3NOYW1lPSJ2aXMtcGFuZWwgdmlzLWJvdHRvbSIsdGhpcy5kb20ubGVmdC5jbGFzc05hbWU9InZpcy1jb250ZW50Iix0aGlzLmRvbS5jZW50ZXIuY2xhc3NOYW1lPSJ2aXMtY29udGVudCIsdGhpcy5kb20ucmlnaHQuY2xhc3NOYW1lPSJ2aXMtY29udGVudCIsdGhpcy5kb20uc2hhZG93VG9wLmNsYXNzTmFtZT0idmlzLXNoYWRvdyB2aXMtdG9wIix0aGlzLmRvbS5zaGFkb3dCb3R0b20uY2xhc3NOYW1lPSJ2aXMtc2hhZG93IHZpcy1ib3R0b20iLHRoaXMuZG9tLnNoYWRvd1RvcExlZnQuY2xhc3NOYW1lPSJ2aXMtc2hhZG93IHZpcy10b3AiLHRoaXMuZG9tLnNoYWRvd0JvdHRvbUxlZnQuY2xhc3NOYW1lPSJ2aXMtc2hhZG93IHZpcy1ib3R0b20iLHRoaXMuZG9tLnNoYWRvd1RvcFJpZ2h0LmNsYXNzTmFtZT0idmlzLXNoYWRvdyB2aXMtdG9wIix0aGlzLmRvbS5zaGFkb3dCb3R0b21SaWdodC5jbGFzc05hbWU9InZpcy1zaGFkb3cgdmlzLWJvdHRvbSIsdGhpcy5kb20ucm9vdC5hcHBlbmRDaGlsZCh0aGlzLmRvbS5iYWNrZ3JvdW5kKSwNCnRoaXMuZG9tLnJvb3QuYXBwZW5kQ2hpbGQodGhpcy5kb20uYmFja2dyb3VuZFZlcnRpY2FsKSx0aGlzLmRvbS5yb290LmFwcGVuZENoaWxkKHRoaXMuZG9tLmJhY2tncm91bmRIb3Jpem9udGFsKSx0aGlzLmRvbS5yb290LmFwcGVuZENoaWxkKHRoaXMuZG9tLmNlbnRlckNvbnRhaW5lciksdGhpcy5kb20ucm9vdC5hcHBlbmRDaGlsZCh0aGlzLmRvbS5sZWZ0Q29udGFpbmVyKSx0aGlzLmRvbS5yb290LmFwcGVuZENoaWxkKHRoaXMuZG9tLnJpZ2h0Q29udGFpbmVyKSx0aGlzLmRvbS5yb290LmFwcGVuZENoaWxkKHRoaXMuZG9tLnRvcCksdGhpcy5kb20ucm9vdC5hcHBlbmRDaGlsZCh0aGlzLmRvbS5ib3R0b20pLHRoaXMuZG9tLmNlbnRlckNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLmRvbS5jZW50ZXIpLHRoaXMuZG9tLmxlZnRDb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5kb20ubGVmdCksdGhpcy5kb20ucmlnaHRDb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5kb20ucmlnaHQpLHRoaXMuZG9tLmNlbnRlckNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLmRvbS5zaGFkb3dUb3ApLHRoaXMuZG9tLmNlbnRlckNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLmRvbS5zaGFkb3dCb3R0b20pLHRoaXMuZG9tLmxlZnRDb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5kb20uc2hhZG93VG9wTGVmdCksdGhpcy5kb20ubGVmdENvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLmRvbS5zaGFkb3dCb3R0b21MZWZ0KSx0aGlzLmRvbS5yaWdodENvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLmRvbS5zaGFkb3dUb3BSaWdodCksdGhpcy5kb20ucmlnaHRDb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5kb20uc2hhZG93Qm90dG9tUmlnaHQpLHRoaXMub24oInJhbmdlY2hhbmdlIix0aGlzLnJlZHJhdy5iaW5kKHRoaXMpKSx0aGlzLm9uKCJ0b3VjaCIsdGhpcy5fb25Ub3VjaC5iaW5kKHRoaXMpKSx0aGlzLm9uKCJwYW4iLHRoaXMuX29uRHJhZy5iaW5kKHRoaXMpKTt2YXIgaT10aGlzO3RoaXMub24oImNoYW5nZSIsZnVuY3Rpb24odCl7dCYmMT09dC5xdWV1ZT9pLl9yZWRyYXdUaW1lcnx8KGkuX3JlZHJhd1RpbWVyPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtpLl9yZWRyYXdUaW1lcj1udWxsLGkuX3JlZHJhdygpfSwwKSk6aS5fcmVkcmF3KCl9KSx0aGlzLmhhbW1lcj1uZXcgcyh0aGlzLmRvbS5yb290KSx0aGlzLmhhbW1lci5nZXQoInBpbmNoIikuc2V0KHtlbmFibGU6ITB9KSx0aGlzLmhhbW1lci5nZXQoInBhbiIpLnNldCh7dGhyZXNob2xkOjUsZGlyZWN0aW9uOjMwfSksdGhpcy5saXN0ZW5lcnM9e307dmFyIG89WyJ0YXAiLCJkb3VibGV0YXAiLCJwcmVzcyIsInBpbmNoIiwicGFuIiwicGFuc3RhcnQiLCJwYW5tb3ZlIiwicGFuZW5kIl07aWYoby5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBlPWZ1bmN0aW9uKGUpe2kuaXNBY3RpdmUoKSYmaS5lbWl0KHQsZSl9O2kuaGFtbWVyLm9uKHQsZSksaS5saXN0ZW5lcnNbdF09ZX0pLHIub25Ub3VjaCh0aGlzLmhhbW1lcixmdW5jdGlvbih0KXtpLmVtaXQoInRvdWNoIix0KX0uYmluZCh0aGlzKSksci5vblJlbGVhc2UodGhpcy5oYW1tZXIsZnVuY3Rpb24odCl7aS5lbWl0KCJyZWxlYXNlIix0KX0uYmluZCh0aGlzKSksdGhpcy5kb20ucm9vdC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXdoZWVsIixlKSx0aGlzLmRvbS5yb290LmFkZEV2ZW50TGlzdGVuZXIoIkRPTU1vdXNlU2Nyb2xsIixlKSx0aGlzLnByb3BzPXtyb290Ont9LGJhY2tncm91bmQ6e30sY2VudGVyQ29udGFpbmVyOnt9LGxlZnRDb250YWluZXI6e30scmlnaHRDb250YWluZXI6e30sY2VudGVyOnt9LGxlZnQ6e30scmlnaHQ6e30sdG9wOnt9LGJvdHRvbTp7fSxib3JkZXI6e30sc2Nyb2xsVG9wOjAsc2Nyb2xsVG9wTWluOjB9LHRoaXMuY3VzdG9tVGltZXM9W10sdGhpcy50b3VjaD17fSx0aGlzLnJlZHJhd0NvdW50PTAsIXQpdGhyb3cgbmV3IEVycm9yKCJObyBjb250YWluZXIgcHJvdmlkZWQiKTt0LmFwcGVuZENoaWxkKHRoaXMuZG9tLnJvb3QpfSxvLnByb3RvdHlwZS5zZXRPcHRpb25zPWZ1bmN0aW9uKHQpe2lmKHQpe3ZhciBlPVsid2lkdGgiLCJoZWlnaHQiLCJtaW5IZWlnaHQiLCJtYXhIZWlnaHQiLCJhdXRvUmVzaXplIiwic3RhcnQiLCJlbmQiLCJjbGlja1RvVXNlIiwiZGF0YUF0dHJpYnV0ZXMiLCJoaWRkZW5EYXRlcyJdO2lmKGEuc2VsZWN0aXZlRXh0ZW5kKGUsdGhpcy5vcHRpb25zLHQpLCJvcmllbnRhdGlvbiJpbiB0JiYoInN0cmluZyI9PXR5cGVvZiB0Lm9yaWVudGF0aW9uP3RoaXMub3B0aW9ucy5vcmllbnRhdGlvbj17aXRlbTp0Lm9yaWVudGF0aW9uLGF4aXM6dC5vcmllbnRhdGlvbn06Im9iamVjdCI9PXR5cGVvZiB0Lm9yaWVudGF0aW9uJiYoIml0ZW0iaW4gdC5vcmllbnRhdGlvbiYmKHRoaXMub3B0aW9ucy5vcmllbnRhdGlvbi5pdGVtPXQub3JpZW50YXRpb24uaXRlbSksImF4aXMiaW4gdC5vcmllbnRhdGlvbiYmKHRoaXMub3B0aW9ucy5vcmllbnRhdGlvbi5heGlzPXQub3JpZW50YXRpb24uYXhpcykpKSwiYm90aCI9PT10aGlzLm9wdGlvbnMub3JpZW50YXRpb24uYXhpcyl7aWYoIXRoaXMudGltZUF4aXMyKXt2YXIgaT10aGlzLnRpbWVBeGlzMj1uZXcgaCh0aGlzLmJvZHkpO2kuc2V0T3B0aW9ucz1mdW5jdGlvbih0KXt2YXIgZT10P2EuZXh0ZW5kKHt9LHQpOnt9O2Uub3JpZW50YXRpb249InRvcCIsaC5wcm90b3R5cGUuc2V0T3B0aW9ucy5jYWxsKGksZSl9LHRoaXMuY29tcG9uZW50cy5wdXNoKGkpfX1lbHNlIGlmKHRoaXMudGltZUF4aXMyKXt2YXIgbz10aGlzLmNvbXBvbmVudHMuaW5kZXhPZih0aGlzLnRpbWVBeGlzMik7LTEhPT1vJiZ0aGlzLmNvbXBvbmVudHMuc3BsaWNlKG8sMSksdGhpcy50aW1lQXhpczIuZGVzdHJveSgpLHRoaXMudGltZUF4aXMyPW51bGx9aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQuZHJhd1BvaW50cyYmKHQuZHJhd1BvaW50cz17b25SZW5kZXI6dC5kcmF3UG9pbnRzfSksImhpZGRlbkRhdGVzImluIHRoaXMub3B0aW9ucyYmbC5jb252ZXJ0SGlkZGVuT3B0aW9ucyh0aGlzLmJvZHksdGhpcy5vcHRpb25zLmhpZGRlbkRhdGVzKSwiY2xpY2tUb1VzZSJpbiB0JiYodC5jbGlja1RvVXNlP3RoaXMuYWN0aXZhdG9yfHwodGhpcy5hY3RpdmF0b3I9bmV3IGQodGhpcy5kb20ucm9vdCkpOnRoaXMuYWN0aXZhdG9yJiYodGhpcy5hY3RpdmF0b3IuZGVzdHJveSgpLGRlbGV0ZSB0aGlzLmFjdGl2YXRvcikpLCJzaG93Q3VzdG9tVGltZSJpbiB0KXRocm93IG5ldyBFcnJvcigiT3B0aW9uIGBzaG93Q3VzdG9tVGltZWAgaXMgZGVwcmVjYXRlZC4gQ3JlYXRlIGEgY3VzdG9tIHRpbWUgYmFyIHZpYSB0aW1lbGluZS5hZGRDdXN0b21UaW1lKHRpbWUgWywgaWRdKSIpO3RoaXMuX2luaXRBdXRvUmVzaXplKCl9aWYodGhpcy5jb21wb25lbnRzLmZvckVhY2goZnVuY3Rpb24oZSl7cmV0dXJuIGUuc2V0T3B0aW9ucyh0KX0pLCJjb25maWd1cmUiaW4gdCl7dGhpcy5jb25maWd1cmF0b3J8fCh0aGlzLmNvbmZpZ3VyYXRvcj10aGlzLl9jcmVhdGVDb25maWd1cmF0b3IoKSksdGhpcy5jb25maWd1cmF0b3Iuc2V0T3B0aW9ucyh0LmNvbmZpZ3VyZSk7dmFyIG49YS5kZWVwRXh0ZW5kKHt9LHRoaXMub3B0aW9ucyk7dGhpcy5jb21wb25lbnRzLmZvckVhY2goZnVuY3Rpb24odCl7YS5kZWVwRXh0ZW5kKG4sdC5vcHRpb25zKX0pLHRoaXMuY29uZmlndXJhdG9yLnNldE1vZHVsZU9wdGlvbnMoe2dsb2JhbDpufSl9dGhpcy5fcmVkcmF3KCl9LG8ucHJvdG90eXBlLmlzQWN0aXZlPWZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuYWN0aXZhdG9yfHx0aGlzLmFjdGl2YXRvci5hY3RpdmV9LG8ucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLnNldEl0ZW1zKG51bGwpLHRoaXMuc2V0R3JvdXBzKG51bGwpLHRoaXMub2ZmKCksdGhpcy5fc3RvcEF1dG9SZXNpemUoKSx0aGlzLmRvbS5yb290LnBhcmVudE5vZGUmJnRoaXMuZG9tLnJvb3QucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmRvbS5yb290KSx0aGlzLmRvbT1udWxsLHRoaXMuYWN0aXZhdG9yJiYodGhpcy5hY3RpdmF0b3IuZGVzdHJveSgpLGRlbGV0ZSB0aGlzLmFjdGl2YXRvcik7Zm9yKHZhciB0IGluIHRoaXMubGlzdGVuZXJzKXRoaXMubGlzdGVuZXJzLmhhc093blByb3BlcnR5KHQpJiZkZWxldGUgdGhpcy5saXN0ZW5lcnNbdF07dGhpcy5saXN0ZW5lcnM9bnVsbCx0aGlzLmhhbW1lcj1udWxsLHRoaXMuY29tcG9uZW50cy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmRlc3Ryb3koKX0pLHRoaXMuYm9keT1udWxsfSxvLnByb3RvdHlwZS5zZXRDdXN0b21UaW1lPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5jdXN0b21UaW1lcy5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIGU9PT10Lm9wdGlvbnMuaWR9KTtpZigwPT09aS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJObyBjdXN0b20gdGltZSBiYXIgZm91bmQgd2l0aCBpZCAiK0pTT04uc3RyaW5naWZ5KGUpKTtpLmxlbmd0aD4wJiZpWzBdLnNldEN1c3RvbVRpbWUodCl9LG8ucHJvdG90eXBlLmdldEN1c3RvbVRpbWU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5jdXN0b21UaW1lcy5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUub3B0aW9ucy5pZD09PXR9KTtpZigwPT09ZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJObyBjdXN0b20gdGltZSBiYXIgZm91bmQgd2l0aCBpZCAiK0pTT04uc3RyaW5naWZ5KHQpKTtyZXR1cm4gZVswXS5nZXRDdXN0b21UaW1lKCl9LG8ucHJvdG90eXBlLmFkZEN1c3RvbVRpbWU9ZnVuY3Rpb24odCxlKXt2YXIgaT12b2lkIDAhPT10P2EuY29udmVydCh0LCJEYXRlIikudmFsdWVPZigpOm5ldyBEYXRlLG89dGhpcy5jdXN0b21UaW1lcy5zb21lKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm9wdGlvbnMuaWQ9PT1lfSk7aWYobyl0aHJvdyBuZXcgRXJyb3IoIkEgY3VzdG9tIHRpbWUgd2l0aCBpZCAiK0pTT04uc3RyaW5naWZ5KGUpKyIgYWxyZWFkeSBleGlzdHMiKTt2YXIgbj1uZXcgdSh0aGlzLmJvZHkse3RpbWU6aSxpZDplfSk7cmV0dXJuIHRoaXMuY3VzdG9tVGltZXMucHVzaChuKSx0aGlzLmNvbXBvbmVudHMucHVzaChuKSx0aGlzLnJlZHJhdygpLGV9LG8ucHJvdG90eXBlLnJlbW92ZUN1c3RvbVRpbWU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5jdXN0b21UaW1lcy5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUub3B0aW9ucy5pZD09PXR9KTtpZigwPT09ZS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJObyBjdXN0b20gdGltZSBiYXIgZm91bmQgd2l0aCBpZCAiK0pTT04uc3RyaW5naWZ5KHQpKTtlLmZvckVhY2goZnVuY3Rpb24odCl7dGhpcy5jdXN0b21UaW1lcy5zcGxpY2UodGhpcy5jdXN0b21UaW1lcy5pbmRleE9mKHQpLDEpLHRoaXMuY29tcG9uZW50cy5zcGxpY2UodGhpcy5jb21wb25lbnRzLmluZGV4T2YodCksMSksdC5kZXN0cm95KCl9LmJpbmQodGhpcykpfSxvLnByb3RvdHlwZS5nZXRWaXNpYmxlSXRlbXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVtU2V0JiZ0aGlzLml0ZW1TZXQuZ2V0VmlzaWJsZUl0ZW1zKCl8fFtdfSxvLnByb3RvdHlwZS5maXQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nZXREYXRhUmFuZ2UoKTtpZihudWxsIT09ZS5taW58fG51bGwhPT1lLm1heCl7dmFyIGk9ZS5tYXgtZS5taW4sbz1uZXcgRGF0ZShlLm1pbi52YWx1ZU9mKCktLjAxKmkpLG49bmV3IERhdGUoZS5tYXgudmFsdWVPZigpKy4wMSppKSxzPXQmJnZvaWQgMCE9PXQuYW5pbWF0aW9uP3QuYW5pbWF0aW9uOiEwO3RoaXMucmFuZ2Uuc2V0UmFuZ2UobyxuLHMpfX0sby5wcm90b3R5cGUuZ2V0RGF0YVJhbmdlPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgaW52b2tlIGFic3RyYWN0IG1ldGhvZCBnZXREYXRhUmFuZ2UiKX0sby5wcm90b3R5cGUuc2V0V2luZG93PWZ1bmN0aW9uKHQsZSxpKXt2YXIgbztpZigxPT1hcmd1bWVudHMubGVuZ3RoKXt2YXIgbj1hcmd1bWVudHNbMF07bz12b2lkIDAhPT1uLmFuaW1hdGlvbj9uLmFuaW1hdGlvbjohMCx0aGlzLnJhbmdlLnNldFJhbmdlKG4uc3RhcnQsbi5lbmQsbyl9ZWxzZSBvPWkmJnZvaWQgMCE9PWkuYW5pbWF0aW9uP2kuYW5pbWF0aW9uOiEwLHRoaXMucmFuZ2Uuc2V0UmFuZ2UodCxlLG8pfSxvLnByb3RvdHlwZS5tb3ZlVG89ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLnJhbmdlLmVuZC10aGlzLnJhbmdlLnN0YXJ0LG89YS5jb252ZXJ0KHQsIkRhdGUiKS52YWx1ZU9mKCksbj1vLWkvMixzPW8raS8yLHI9ZSYmdm9pZCAwIT09ZS5hbmltYXRpb24/ZS5hbmltYXRpb246ITA7dGhpcy5yYW5nZS5zZXRSYW5nZShuLHMscil9LG8ucHJvdG90eXBlLmdldFdpbmRvdz1mdW5jdGlvbigpe3ZhciB0PXRoaXMucmFuZ2UuZ2V0UmFuZ2UoKTtyZXR1cm57c3RhcnQ6bmV3IERhdGUodC5zdGFydCksZW5kOm5ldyBEYXRlKHQuZW5kKX19LG8ucHJvdG90eXBlLnJlZHJhdz1mdW5jdGlvbigpe3RoaXMuX3JlZHJhdygpfSxvLnByb3RvdHlwZS5fcmVkcmF3PWZ1bmN0aW9uKCl7dmFyIHQ9ITEsZT10aGlzLm9wdGlvbnMsaT10aGlzLnByb3BzLG89dGhpcy5kb207aWYobyl7bC51cGRhdGVIaWRkZW5EYXRlcyh0aGlzLmJvZHksdGhpcy5vcHRpb25zLmhpZGRlbkRhdGVzKSwidG9wIj09ZS5vcmllbnRhdGlvbj8oYS5hZGRDbGFzc05hbWUoby5yb290LCJ2aXMtdG9wIiksYS5yZW1vdmVDbGFzc05hbWUoby5yb290LCJ2aXMtYm90dG9tIikpOihhLnJlbW92ZUNsYXNzTmFtZShvLnJvb3QsInZpcy10b3AiKSxhLmFkZENsYXNzTmFtZShvLnJvb3QsInZpcy1ib3R0b20iKSksby5yb290LnN0eWxlLm1heEhlaWdodD1hLm9wdGlvbi5hc1NpemUoZS5tYXhIZWlnaHQsIiIpLG8ucm9vdC5zdHlsZS5taW5IZWlnaHQ9YS5vcHRpb24uYXNTaXplKGUubWluSGVpZ2h0LCIiKSxvLnJvb3Quc3R5bGUud2lkdGg9YS5vcHRpb24uYXNTaXplKGUud2lkdGgsIiIpLGkuYm9yZGVyLmxlZnQ9KG8uY2VudGVyQ29udGFpbmVyLm9mZnNldFdpZHRoLW8uY2VudGVyQ29udGFpbmVyLmNsaWVudFdpZHRoKS8yLGkuYm9yZGVyLnJpZ2h0PWkuYm9yZGVyLmxlZnQsaS5ib3JkZXIudG9wPShvLmNlbnRlckNvbnRhaW5lci5vZmZzZXRIZWlnaHQtby5jZW50ZXJDb250YWluZXIuY2xpZW50SGVpZ2h0KS8yLGkuYm9yZGVyLmJvdHRvbT1pLmJvcmRlci50b3A7dmFyIG49by5yb290Lm9mZnNldEhlaWdodC1vLnJvb3QuY2xpZW50SGVpZ2h0LHM9by5yb290Lm9mZnNldFdpZHRoLW8ucm9vdC5jbGllbnRXaWR0aDswPT09by5jZW50ZXJDb250YWluZXIuY2xpZW50SGVpZ2h0JiYoaS5ib3JkZXIubGVmdD1pLmJvcmRlci50b3AsaS5ib3JkZXIucmlnaHQ9aS5ib3JkZXIubGVmdCksMD09PW8ucm9vdC5jbGllbnRIZWlnaHQmJihzPW4pLGkuY2VudGVyLmhlaWdodD1vLmNlbnRlci5vZmZzZXRIZWlnaHQsaS5sZWZ0LmhlaWdodD1vLmxlZnQub2Zmc2V0SGVpZ2h0LGkucmlnaHQuaGVpZ2h0PW8ucmlnaHQub2Zmc2V0SGVpZ2h0LGkudG9wLmhlaWdodD1vLnRvcC5jbGllbnRIZWlnaHR8fC1pLmJvcmRlci50b3AsaS5ib3R0b20uaGVpZ2h0PW8uYm90dG9tLmNsaWVudEhlaWdodHx8LWkuYm9yZGVyLmJvdHRvbTt2YXIgcj1NYXRoLm1heChpLmxlZnQuaGVpZ2h0LGkuY2VudGVyLmhlaWdodCxpLnJpZ2h0LmhlaWdodCksaD1pLnRvcC5oZWlnaHQrcitpLmJvdHRvbS5oZWlnaHQrbitpLmJvcmRlci50b3AraS5ib3JkZXIuYm90dG9tO28ucm9vdC5zdHlsZS5oZWlnaHQ9YS5vcHRpb24uYXNTaXplKGUuaGVpZ2h0LGgrInB4IiksaS5yb290LmhlaWdodD1vLnJvb3Qub2Zmc2V0SGVpZ2h0LGkuYmFja2dyb3VuZC5oZWlnaHQ9aS5yb290LmhlaWdodC1uO3ZhciBkPWkucm9vdC5oZWlnaHQtaS50b3AuaGVpZ2h0LWkuYm90dG9tLmhlaWdodC1uO2kuY2VudGVyQ29udGFpbmVyLmhlaWdodD1kLGkubGVmdENvbnRhaW5lci5oZWlnaHQ9ZCxpLnJpZ2h0Q29udGFpbmVyLmhlaWdodD1pLmxlZnRDb250YWluZXIuaGVpZ2h0LGkucm9vdC53aWR0aD1vLnJvb3Qub2Zmc2V0V2lkdGgsaS5iYWNrZ3JvdW5kLndpZHRoPWkucm9vdC53aWR0aC1zLGkubGVmdC53aWR0aD1vLmxlZnRDb250YWluZXIuY2xpZW50V2lkdGh8fC1pLmJvcmRlci5sZWZ0LGkubGVmdENvbnRhaW5lci53aWR0aD1pLmxlZnQud2lkdGgsaS5yaWdodC53aWR0aD1vLnJpZ2h0Q29udGFpbmVyLmNsaWVudFdpZHRofHwtaS5ib3JkZXIucmlnaHQsaS5yaWdodENvbnRhaW5lci53aWR0aD1pLnJpZ2h0LndpZHRoO3ZhciB1PWkucm9vdC53aWR0aC1pLmxlZnQud2lkdGgtaS5yaWdodC53aWR0aC1zO2kuY2VudGVyLndpZHRoPXUsaS5jZW50ZXJDb250YWluZXIud2lkdGg9dSxpLnRvcC53aWR0aD11LGkuYm90dG9tLndpZHRoPXUsby5iYWNrZ3JvdW5kLnN0eWxlLmhlaWdodD1pLmJhY2tncm91bmQuaGVpZ2h0KyJweCIsby5iYWNrZ3JvdW5kVmVydGljYWwuc3R5bGUuaGVpZ2h0PWkuYmFja2dyb3VuZC5oZWlnaHQrInB4IixvLmJhY2tncm91bmRIb3Jpem9udGFsLnN0eWxlLmhlaWdodD1pLmNlbnRlckNvbnRhaW5lci5oZWlnaHQrInB4IixvLmNlbnRlckNvbnRhaW5lci5zdHlsZS5oZWlnaHQ9aS5jZW50ZXJDb250YWluZXIuaGVpZ2h0KyJweCIsby5sZWZ0Q29udGFpbmVyLnN0eWxlLmhlaWdodD1pLmxlZnRDb250YWluZXIuaGVpZ2h0KyJweCIsby5yaWdodENvbnRhaW5lci5zdHlsZS5oZWlnaHQ9aS5yaWdodENvbnRhaW5lci5oZWlnaHQrInB4IixvLmJhY2tncm91bmQuc3R5bGUud2lkdGg9aS5iYWNrZ3JvdW5kLndpZHRoKyJweCIsby5iYWNrZ3JvdW5kVmVydGljYWwuc3R5bGUud2lkdGg9aS5jZW50ZXJDb250YWluZXIud2lkdGgrInB4IixvLmJhY2tncm91bmRIb3Jpem9udGFsLnN0eWxlLndpZHRoPWkuYmFja2dyb3VuZC53aWR0aCsicHgiLG8uY2VudGVyQ29udGFpbmVyLnN0eWxlLndpZHRoPWkuY2VudGVyLndpZHRoKyJweCIsby50b3Auc3R5bGUud2lkdGg9aS50b3Aud2lkdGgrInB4IixvLmJvdHRvbS5zdHlsZS53aWR0aD1pLmJvdHRvbS53aWR0aCsicHgiLG8uYmFja2dyb3VuZC5zdHlsZS5sZWZ0PSIwIixvLmJhY2tncm91bmQuc3R5bGUudG9wPSIwIixvLmJhY2tncm91bmRWZXJ0aWNhbC5zdHlsZS5sZWZ0PWkubGVmdC53aWR0aCtpLmJvcmRlci5sZWZ0KyJweCIsby5iYWNrZ3JvdW5kVmVydGljYWwuc3R5bGUudG9wPSIwIixvLmJhY2tncm91bmRIb3Jpem9udGFsLnN0eWxlLmxlZnQ9IjAiLG8uYmFja2dyb3VuZEhvcml6b250YWwuc3R5bGUudG9wPWkudG9wLmhlaWdodCsicHgiLG8uY2VudGVyQ29udGFpbmVyLnN0eWxlLmxlZnQ9aS5sZWZ0LndpZHRoKyJweCIsby5jZW50ZXJDb250YWluZXIuc3R5bGUudG9wPWkudG9wLmhlaWdodCsicHgiLG8ubGVmdENvbnRhaW5lci5zdHlsZS5sZWZ0PSIwIixvLmxlZnRDb250YWluZXIuc3R5bGUudG9wPWkudG9wLmhlaWdodCsicHgiLG8ucmlnaHRDb250YWluZXIuc3R5bGUubGVmdD1pLmxlZnQud2lkdGgraS5jZW50ZXIud2lkdGgrInB4IixvLnJpZ2h0Q29udGFpbmVyLnN0eWxlLnRvcD1pLnRvcC5oZWlnaHQrInB4IixvLnRvcC5zdHlsZS5sZWZ0PWkubGVmdC53aWR0aCsicHgiLG8udG9wLnN0eWxlLnRvcD0iMCIsby5ib3R0b20uc3R5bGUubGVmdD1pLmxlZnQud2lkdGgrInB4IixvLmJvdHRvbS5zdHlsZS50b3A9aS50b3AuaGVpZ2h0K2kuY2VudGVyQ29udGFpbmVyLmhlaWdodCsicHgiLHRoaXMuX3VwZGF0ZVNjcm9sbFRvcCgpO3ZhciBjPXRoaXMucHJvcHMuc2Nyb2xsVG9wOyJ0b3AiIT1lLm9yaWVudGF0aW9uLml0ZW0mJihjKz1NYXRoLm1heCh0aGlzLnByb3BzLmNlbnRlckNvbnRhaW5lci5oZWlnaHQtdGhpcy5wcm9wcy5jZW50ZXIuaGVpZ2h0LXRoaXMucHJvcHMuYm9yZGVyLnRvcC10aGlzLnByb3BzLmJvcmRlci5ib3R0b20sMCkpLG8uY2VudGVyLnN0eWxlLmxlZnQ9IjAiLG8uY2VudGVyLnN0eWxlLnRvcD1jKyJweCIsby5sZWZ0LnN0eWxlLmxlZnQ9IjAiLG8ubGVmdC5zdHlsZS50b3A9YysicHgiLG8ucmlnaHQuc3R5bGUubGVmdD0iMCIsby5yaWdodC5zdHlsZS50b3A9YysicHgiO3ZhciBwPTA9PXRoaXMucHJvcHMuc2Nyb2xsVG9wPyJoaWRkZW4iOiIiLGY9dGhpcy5wcm9wcy5zY3JvbGxUb3A9PXRoaXMucHJvcHMuc2Nyb2xsVG9wTWluPyJoaWRkZW4iOiIiO2lmKG8uc2hhZG93VG9wLnN0eWxlLnZpc2liaWxpdHk9cCxvLnNoYWRvd0JvdHRvbS5zdHlsZS52aXNpYmlsaXR5PWYsby5zaGFkb3dUb3BMZWZ0LnN0eWxlLnZpc2liaWxpdHk9cCxvLnNoYWRvd0JvdHRvbUxlZnQuc3R5bGUudmlzaWJpbGl0eT1mLG8uc2hhZG93VG9wUmlnaHQuc3R5bGUudmlzaWJpbGl0eT1wLG8uc2hhZG93Qm90dG9tUmlnaHQuc3R5bGUudmlzaWJpbGl0eT1mLHRoaXMuY29tcG9uZW50cy5mb3JFYWNoKGZ1bmN0aW9uKGUpe3Q9ZS5yZWRyYXcoKXx8dH0pLHQpe3ZhciBtPTM7dGhpcy5yZWRyYXdDb3VudDxtPyh0aGlzLnJlZHJhd0NvdW50KyssdGhpcy5fcmVkcmF3KCkpOmNvbnNvbGUubG9nKCJXQVJOSU5HOiBpbmZpbml0ZSBsb29wIGluIHJlZHJhdz8iKSx0aGlzLnJlZHJhd0NvdW50PTB9fX0sby5wcm90b3R5cGUucmVwYWludD1mdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiRnVuY3Rpb24gcmVwYWludCBpcyBkZXByZWNhdGVkLiBVc2UgcmVkcmF3IGluc3RlYWQuIil9LG8ucHJvdG90eXBlLnNldEN1cnJlbnRUaW1lPWZ1bmN0aW9uKHQpe2lmKCF0aGlzLmN1cnJlbnRUaW1lKXRocm93IG5ldyBFcnJvcigiT3B0aW9uIHNob3dDdXJyZW50VGltZSBtdXN0IGJlIHRydWUiKTt0aGlzLmN1cnJlbnRUaW1lLnNldEN1cnJlbnRUaW1lKHQpfSxvLnByb3RvdHlwZS5nZXRDdXJyZW50VGltZT1mdW5jdGlvbigpe2lmKCF0aGlzLmN1cnJlbnRUaW1lKXRocm93IG5ldyBFcnJvcigiT3B0aW9uIHNob3dDdXJyZW50VGltZSBtdXN0IGJlIHRydWUiKTtyZXR1cm4gdGhpcy5jdXJyZW50VGltZS5nZXRDdXJyZW50VGltZSgpfSxvLnByb3RvdHlwZS5fdG9UaW1lPWZ1bmN0aW9uKHQpe3JldHVybiBsLnRvVGltZSh0aGlzLHQsdGhpcy5wcm9wcy5jZW50ZXIud2lkdGgpfSxvLnByb3RvdHlwZS5fdG9HbG9iYWxUaW1lPWZ1bmN0aW9uKHQpe3JldHVybiBsLnRvVGltZSh0aGlzLHQsdGhpcy5wcm9wcy5yb290LndpZHRoKX0sby5wcm90b3R5cGUuX3RvU2NyZWVuPWZ1bmN0aW9uKHQpe3JldHVybiBsLnRvU2NyZWVuKHRoaXMsdCx0aGlzLnByb3BzLmNlbnRlci53aWR0aCl9LG8ucHJvdG90eXBlLl90b0dsb2JhbFNjcmVlbj1mdW5jdGlvbih0KXtyZXR1cm4gbC50b1NjcmVlbih0aGlzLHQsdGhpcy5wcm9wcy5yb290LndpZHRoKX0sby5wcm90b3R5cGUuX2luaXRBdXRvUmVzaXplPWZ1bmN0aW9uKCl7MT09dGhpcy5vcHRpb25zLmF1dG9SZXNpemU/dGhpcy5fc3RhcnRBdXRvUmVzaXplKCk6dGhpcy5fc3RvcEF1dG9SZXNpemUoKX0sby5wcm90b3R5cGUuX3N0YXJ0QXV0b1Jlc2l6ZT1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5fc3RvcEF1dG9SZXNpemUoKSx0aGlzLl9vblJlc2l6ZT1mdW5jdGlvbigpe3JldHVybiAxIT10Lm9wdGlvbnMuYXV0b1Jlc2l6ZT92b2lkIHQuX3N0b3BBdXRvUmVzaXplKCk6dm9pZCh0LmRvbS5yb290JiYodC5kb20ucm9vdC5vZmZzZXRXaWR0aCE9dC5wcm9wcy5sYXN0V2lkdGh8fHQuZG9tLnJvb3Qub2Zmc2V0SGVpZ2h0IT10LnByb3BzLmxhc3RIZWlnaHQpJiYodC5wcm9wcy5sYXN0V2lkdGg9dC5kb20ucm9vdC5vZmZzZXRXaWR0aCx0LnByb3BzLmxhc3RIZWlnaHQ9dC5kb20ucm9vdC5vZmZzZXRIZWlnaHQsdC5lbWl0KCJjaGFuZ2UiKSkpfSxhLmFkZEV2ZW50TGlzdGVuZXIod2luZG93LCJyZXNpemUiLHRoaXMuX29uUmVzaXplKSx0aGlzLndhdGNoVGltZXI9c2V0SW50ZXJ2YWwodGhpcy5fb25SZXNpemUsMWUzKX0sby5wcm90b3R5cGUuX3N0b3BBdXRvUmVzaXplPWZ1bmN0aW9uKCl7dGhpcy53YXRjaFRpbWVyJiYoY2xlYXJJbnRlcnZhbCh0aGlzLndhdGNoVGltZXIpLHRoaXMud2F0Y2hUaW1lcj12b2lkIDApLGEucmVtb3ZlRXZlbnRMaXN0ZW5lcih3aW5kb3csInJlc2l6ZSIsdGhpcy5fb25SZXNpemUpLHRoaXMuX29uUmVzaXplPW51bGx9LG8ucHJvdG90eXBlLl9vblRvdWNoPWZ1bmN0aW9uKHQpe3RoaXMudG91Y2guYWxsb3dEcmFnZ2luZz0hMCx0aGlzLnRvdWNoLmluaXRpYWxTY3JvbGxUb3A9dGhpcy5wcm9wcy5zY3JvbGxUb3B9LG8ucHJvdG90eXBlLl9vblBpbmNoPWZ1bmN0aW9uKHQpe3RoaXMudG91Y2guYWxsb3dEcmFnZ2luZz0hMX0sby5wcm90b3R5cGUuX29uRHJhZz1mdW5jdGlvbih0KXtpZih0aGlzLnRvdWNoLmFsbG93RHJhZ2dpbmcpe3ZhciBlPXQuZGVsdGFZLGk9dGhpcy5fZ2V0U2Nyb2xsVG9wKCksbz10aGlzLl9zZXRTY3JvbGxUb3AodGhpcy50b3VjaC5pbml0aWFsU2Nyb2xsVG9wK2UpO28hPWkmJih0aGlzLl9yZWRyYXcoKSx0aGlzLmVtaXQoInZlcnRpY2FsRHJhZyIpKX19LG8ucHJvdG90eXBlLl9zZXRTY3JvbGxUb3A9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucHJvcHMuc2Nyb2xsVG9wPXQsdGhpcy5fdXBkYXRlU2Nyb2xsVG9wKCksdGhpcy5wcm9wcy5zY3JvbGxUb3B9LG8ucHJvdG90eXBlLl91cGRhdGVTY3JvbGxUb3A9ZnVuY3Rpb24oKXt2YXIgdD1NYXRoLm1pbih0aGlzLnByb3BzLmNlbnRlckNvbnRhaW5lci5oZWlnaHQtdGhpcy5wcm9wcy5jZW50ZXIuaGVpZ2h0LDApO3JldHVybiB0IT10aGlzLnByb3BzLnNjcm9sbFRvcE1pbiYmKCJ0b3AiIT10aGlzLm9wdGlvbnMub3JpZW50YXRpb24uaXRlbSYmKHRoaXMucHJvcHMuc2Nyb2xsVG9wKz10LXRoaXMucHJvcHMuc2Nyb2xsVG9wTWluKSx0aGlzLnByb3BzLnNjcm9sbFRvcE1pbj10KSx0aGlzLnByb3BzLnNjcm9sbFRvcD4wJiYodGhpcy5wcm9wcy5zY3JvbGxUb3A9MCksdGhpcy5wcm9wcy5zY3JvbGxUb3A8dCYmKHRoaXMucHJvcHMuc2Nyb2xsVG9wPXQpLHRoaXMucHJvcHMuc2Nyb2xsVG9wfSxvLnByb3RvdHlwZS5fZ2V0U2Nyb2xsVG9wPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJvcHMuc2Nyb2xsVG9wfSxvLnByb3RvdHlwZS5fY3JlYXRlQ29uZmlndXJhdG9yPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgaW52b2tlIGFic3RyYWN0IG1ldGhvZCBfY3JlYXRlQ29uZmlndXJhdG9yIil9LHQuZXhwb3J0cz1vfSxmdW5jdGlvbih0LGUsaSl7ZnVuY3Rpb24gbyh0LGUpe3RoaXMuYm9keT10LHRoaXMuZGVmYXVsdE9wdGlvbnM9e3R5cGU6bnVsbCxvcmllbnRhdGlvbjp7aXRlbToiYm90dG9tIn0sYWxpZ246ImF1dG8iLHN0YWNrOiEwLGdyb3VwT3JkZXI6bnVsbCxzZWxlY3RhYmxlOiEwLG11bHRpc2VsZWN0OiExLGVkaXRhYmxlOnt1cGRhdGVUaW1lOiExLHVwZGF0ZUdyb3VwOiExLGFkZDohMSxyZW1vdmU6ITF9LHNuYXA6aC5zbmFwLG9uQWRkOmZ1bmN0aW9uKHQsZSl7ZSh0KX0sb25VcGRhdGU6ZnVuY3Rpb24odCxlKXtlKHQpfSxvbk1vdmU6ZnVuY3Rpb24odCxlKXtlKHQpfSxvblJlbW92ZTpmdW5jdGlvbih0LGUpe2UodCl9LG9uTW92aW5nOmZ1bmN0aW9uKHQsZSl7ZSh0KX0sbWFyZ2luOntpdGVtOntob3Jpem9udGFsOjEwLHZlcnRpY2FsOjEwfSxheGlzOjIwfX0sdGhpcy5vcHRpb25zPXMuZXh0ZW5kKHt9LHRoaXMuZGVmYXVsdE9wdGlvbnMpLHRoaXMuaXRlbU9wdGlvbnM9e3R5cGU6e3N0YXJ0OiJEYXRlIixlbmQ6IkRhdGUifX0sdGhpcy5jb252ZXJzaW9uPXt0b1NjcmVlbjp0LnV0aWwudG9TY3JlZW4sdG9UaW1lOnQudXRpbC50b1RpbWV9LHRoaXMuZG9tPXt9LHRoaXMucHJvcHM9e30sdGhpcy5oYW1tZXI9bnVsbDt2YXIgaT10aGlzO3RoaXMuaXRlbXNEYXRhPW51bGwsdGhpcy5ncm91cHNEYXRhPW51bGwsdGhpcy5pdGVtTGlzdGVuZXJzPXthZGQ6ZnVuY3Rpb24odCxlLG8pe2kuX29uQWRkKGUuaXRlbXMpfSx1cGRhdGU6ZnVuY3Rpb24odCxlLG8pe2kuX29uVXBkYXRlKGUuaXRlbXMpfSxyZW1vdmU6ZnVuY3Rpb24odCxlLG8pe2kuX29uUmVtb3ZlKGUuaXRlbXMpfX0sdGhpcy5ncm91cExpc3RlbmVycz17YWRkOmZ1bmN0aW9uKHQsZSxvKXtpLl9vbkFkZEdyb3VwcyhlLml0ZW1zKX0sdXBkYXRlOmZ1bmN0aW9uKHQsZSxvKXtpLl9vblVwZGF0ZUdyb3VwcyhlLml0ZW1zKX0scmVtb3ZlOmZ1bmN0aW9uKHQsZSxvKXtpLl9vblJlbW92ZUdyb3VwcyhlLml0ZW1zKX19LHRoaXMuaXRlbXM9e30sdGhpcy5ncm91cHM9e30sdGhpcy5ncm91cElkcz1bXSx0aGlzLnNlbGVjdGlvbj1bXSx0aGlzLnN0YWNrRGlydHk9ITAsdGhpcy50b3VjaFBhcmFtcz17fSx0aGlzLl9jcmVhdGUoKSx0aGlzLnNldE9wdGlvbnMoZSl9dmFyIG49aSgzKSxzPWkoNykscj1pKDE0KSxhPWkoMTYpLGg9aSgzNyksZD1pKDI3KSxsPWkoMzQpLHU9aSgzOCksYz1pKDM5KSxwPWkoMSksZj1pKDM2KSxtPWkoNDApLHY9Il9fdW5ncm91cGVkX18iLGc9Il9fYmFja2dyb3VuZF9fIjtvLnByb3RvdHlwZT1uZXcgZCxvLnR5cGVzPXtiYWNrZ3JvdW5kOm0sYm94OmMscmFuZ2U6Zixwb2ludDpwfSxvLnByb3RvdHlwZS5fY3JlYXRlPWZ1bmN0aW9uKCl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dC5jbGFzc05hbWU9InZpcy1pdGVtc2V0Iix0WyJ0aW1lbGluZS1pdGVtc2V0Il09dGhpcyx0aGlzLmRvbS5mcmFtZT10O3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2UuY2xhc3NOYW1lPSJ2aXMtYmFja2dyb3VuZCIsdC5hcHBlbmRDaGlsZChlKSx0aGlzLmRvbS5iYWNrZ3JvdW5kPWU7dmFyIGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7aS5jbGFzc05hbWU9InZpcy1mb3JlZ3JvdW5kIix0LmFwcGVuZENoaWxkKGkpLHRoaXMuZG9tLmZvcmVncm91bmQ9aTt2YXIgbz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtvLmNsYXNzTmFtZT0idmlzLWF4aXMiLHRoaXMuZG9tLmF4aXM9bzt2YXIgcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtzLmNsYXNzTmFtZT0idmlzLWxhYmVsc2V0Iix0aGlzLmRvbS5sYWJlbFNldD1zLHRoaXMuX3VwZGF0ZVVuZ3JvdXBlZCgpO3ZhciByPW5ldyB1KGcsbnVsbCx0aGlzKTtyLnNob3coKSx0aGlzLmdyb3Vwc1tnXT1yLHRoaXMuaGFtbWVyPW5ldyBuKHRoaXMuYm9keS5kb20uY2VudGVyQ29udGFpbmVyKSx0aGlzLmhhbW1lci5vbigiaGFtbWVyLmlucHV0IixmdW5jdGlvbih0KXt0LmlzRmlyc3QmJnRoaXMuX29uVG91Y2godCl9LmJpbmQodGhpcykpLHRoaXMuaGFtbWVyLm9uKCJwYW5zdGFydCIsdGhpcy5fb25EcmFnU3RhcnQuYmluZCh0aGlzKSksdGhpcy5oYW1tZXIub24oInBhbm1vdmUiLHRoaXMuX29uRHJhZy5iaW5kKHRoaXMpKSx0aGlzLmhhbW1lci5vbigicGFuZW5kIix0aGlzLl9vbkRyYWdFbmQuYmluZCh0aGlzKSksdGhpcy5oYW1tZXIuZ2V0KCJwYW4iKS5zZXQoe3RocmVzaG9sZDo1LGRpcmVjdGlvbjozMH0pLHRoaXMuaGFtbWVyLm9uKCJ0YXAiLHRoaXMuX29uU2VsZWN0SXRlbS5iaW5kKHRoaXMpKSx0aGlzLmhhbW1lci5vbigicHJlc3MiLHRoaXMuX29uTXVsdGlTZWxlY3RJdGVtLmJpbmQodGhpcykpLHRoaXMuaGFtbWVyLm9uKCJkb3VibGV0YXAiLHRoaXMuX29uQWRkSXRlbS5iaW5kKHRoaXMpKSx0aGlzLnNob3coKX0sby5wcm90b3R5cGUuc2V0T3B0aW9ucz1mdW5jdGlvbih0KXtpZih0KXt2YXIgZT1bInR5cGUiLCJhbGlnbiIsIm9yZGVyIiwic3RhY2siLCJzZWxlY3RhYmxlIiwibXVsdGlzZWxlY3QiLCJncm91cE9yZGVyIiwiZGF0YUF0dHJpYnV0ZXMiLCJ0ZW1wbGF0ZSIsImhpZGUiLCJzbmFwIl07cy5zZWxlY3RpdmVFeHRlbmQoZSx0aGlzLm9wdGlvbnMsdCksIm9yaWVudGF0aW9uImluIHQmJigic3RyaW5nIj09dHlwZW9mIHQub3JpZW50YXRpb24/dGhpcy5vcHRpb25zLm9yaWVudGF0aW9uLml0ZW09InRvcCI9PT10Lm9yaWVudGF0aW9uPyJ0b3AiOiJib3R0b20iOiJvYmplY3QiPT10eXBlb2YgdC5vcmllbnRhdGlvbiYmIml0ZW0iaW4gdC5vcmllbnRhdGlvbiYmKHRoaXMub3B0aW9ucy5vcmllbnRhdGlvbi5pdGVtPXQub3JpZW50YXRpb24uaXRlbSkpLCJtYXJnaW4iaW4gdCYmKCJudW1iZXIiPT10eXBlb2YgdC5tYXJnaW4/KHRoaXMub3B0aW9ucy5tYXJnaW4uYXhpcz10Lm1hcmdpbix0aGlzLm9wdGlvbnMubWFyZ2luLml0ZW0uaG9yaXpvbnRhbD10Lm1hcmdpbix0aGlzLm9wdGlvbnMubWFyZ2luLml0ZW0udmVydGljYWw9dC5tYXJnaW4pOiJvYmplY3QiPT10eXBlb2YgdC5tYXJnaW4mJihzLnNlbGVjdGl2ZUV4dGVuZChbImF4aXMiXSx0aGlzLm9wdGlvbnMubWFyZ2luLHQubWFyZ2luKSwiaXRlbSJpbiB0Lm1hcmdpbiYmKCJudW1iZXIiPT10eXBlb2YgdC5tYXJnaW4uaXRlbT8odGhpcy5vcHRpb25zLm1hcmdpbi5pdGVtLmhvcml6b250YWw9dC5tYXJnaW4uaXRlbSx0aGlzLm9wdGlvbnMubWFyZ2luLml0ZW0udmVydGljYWw9dC5tYXJnaW4uaXRlbSk6Im9iamVjdCI9PXR5cGVvZiB0Lm1hcmdpbi5pdGVtJiZzLnNlbGVjdGl2ZUV4dGVuZChbImhvcml6b250YWwiLCJ2ZXJ0aWNhbCJdLHRoaXMub3B0aW9ucy5tYXJnaW4uaXRlbSx0Lm1hcmdpbi5pdGVtKSkpKSwiZWRpdGFibGUiaW4gdCYmKCJib29sZWFuIj09dHlwZW9mIHQuZWRpdGFibGU/KHRoaXMub3B0aW9ucy5lZGl0YWJsZS51cGRhdGVUaW1lPXQuZWRpdGFibGUsdGhpcy5vcHRpb25zLmVkaXRhYmxlLnVwZGF0ZUdyb3VwPXQuZWRpdGFibGUsdGhpcy5vcHRpb25zLmVkaXRhYmxlLmFkZD10LmVkaXRhYmxlLHRoaXMub3B0aW9ucy5lZGl0YWJsZS5yZW1vdmU9dC5lZGl0YWJsZSk6Im9iamVjdCI9PXR5cGVvZiB0LmVkaXRhYmxlJiZzLnNlbGVjdGl2ZUV4dGVuZChbInVwZGF0ZVRpbWUiLCJ1cGRhdGVHcm91cCIsImFkZCIsInJlbW92ZSJdLHRoaXMub3B0aW9ucy5lZGl0YWJsZSx0LmVkaXRhYmxlKSk7dmFyIGk9ZnVuY3Rpb24oZSl7dmFyIGk9dFtlXTtpZihpKXtpZighKGkgaW5zdGFuY2VvZiBGdW5jdGlvbikpdGhyb3cgbmV3IEVycm9yKCJvcHRpb24gIitlKyIgbXVzdCBiZSBhIGZ1bmN0aW9uICIrZSsiKGl0ZW0sIGNhbGxiYWNrKSIpO3RoaXMub3B0aW9uc1tlXT1pfX0uYmluZCh0aGlzKTtbIm9uQWRkIiwib25VcGRhdGUiLCJvblJlbW92ZSIsIm9uTW92ZSIsIm9uTW92aW5nIl0uZm9yRWFjaChpKSx0aGlzLm1hcmtEaXJ0eSgpfX0sby5wcm90b3R5cGUubWFya0RpcnR5PWZ1bmN0aW9uKHQpe3RoaXMuZ3JvdXBJZHM9W10sdGhpcy5zdGFja0RpcnR5PSEwLHQmJnQucmVmcmVzaEl0ZW1zJiZzLmZvckVhY2godGhpcy5pdGVtcyxmdW5jdGlvbih0KXt0LmRpcnR5PSEwLHQuZGlzcGxheWVkJiZ0LnJlZHJhdygpfSl9LG8ucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLmhpZGUoKSx0aGlzLnNldEl0ZW1zKG51bGwpLHRoaXMuc2V0R3JvdXBzKG51bGwpLHRoaXMuaGFtbWVyPW51bGwsdGhpcy5ib2R5PW51bGwsdGhpcy5jb252ZXJzaW9uPW51bGx9LG8ucHJvdG90eXBlLmhpZGU9ZnVuY3Rpb24oKXt0aGlzLmRvbS5mcmFtZS5wYXJlbnROb2RlJiZ0aGlzLmRvbS5mcmFtZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuZG9tLmZyYW1lKSx0aGlzLmRvbS5heGlzLnBhcmVudE5vZGUmJnRoaXMuZG9tLmF4aXMucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmRvbS5heGlzKSx0aGlzLmRvbS5sYWJlbFNldC5wYXJlbnROb2RlJiZ0aGlzLmRvbS5sYWJlbFNldC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuZG9tLmxhYmVsU2V0KX0sby5wcm90b3R5cGUuc2hvdz1mdW5jdGlvbigpe3RoaXMuZG9tLmZyYW1lLnBhcmVudE5vZGV8fHRoaXMuYm9keS5kb20uY2VudGVyLmFwcGVuZENoaWxkKHRoaXMuZG9tLmZyYW1lKSx0aGlzLmRvbS5heGlzLnBhcmVudE5vZGV8fHRoaXMuYm9keS5kb20uYmFja2dyb3VuZFZlcnRpY2FsLmFwcGVuZENoaWxkKHRoaXMuZG9tLmF4aXMpLHRoaXMuZG9tLmxhYmVsU2V0LnBhcmVudE5vZGV8fHRoaXMuYm9keS5kb20ubGVmdC5hcHBlbmRDaGlsZCh0aGlzLmRvbS5sYWJlbFNldCl9LG8ucHJvdG90eXBlLnNldFNlbGVjdGlvbj1mdW5jdGlvbih0KXt2YXIgZSxpLG8sbjtmb3Iodm9pZCAwPT10JiYodD1bXSksQXJyYXkuaXNBcnJheSh0KXx8KHQ9W3RdKSxlPTAsaT10aGlzLnNlbGVjdGlvbi5sZW5ndGg7aT5lO2UrKylvPXRoaXMuc2VsZWN0aW9uW2VdLG49dGhpcy5pdGVtc1tvXSxuJiZuLnVuc2VsZWN0KCk7Zm9yKHRoaXMuc2VsZWN0aW9uPVtdLGU9MCxpPXQubGVuZ3RoO2k+ZTtlKyspbz10W2VdLG49dGhpcy5pdGVtc1tvXSxuJiYodGhpcy5zZWxlY3Rpb24ucHVzaChvKSxuLnNlbGVjdCgpKX0sby5wcm90b3R5cGUuZ2V0U2VsZWN0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2VsZWN0aW9uLmNvbmNhdChbXSl9LG8ucHJvdG90eXBlLmdldFZpc2libGVJdGVtcz1mdW5jdGlvbigpe3ZhciB0PXRoaXMuYm9keS5yYW5nZS5nZXRSYW5nZSgpLGU9dGhpcy5ib2R5LnV0aWwudG9TY3JlZW4odC5zdGFydCksaT10aGlzLmJvZHkudXRpbC50b1NjcmVlbih0LmVuZCksbz1bXTtmb3IodmFyIG4gaW4gdGhpcy5ncm91cHMpaWYodGhpcy5ncm91cHMuaGFzT3duUHJvcGVydHkobikpZm9yKHZhciBzPXRoaXMuZ3JvdXBzW25dLHI9cy52aXNpYmxlSXRlbXMsYT0wO2E8ci5sZW5ndGg7YSsrKXt2YXIgaD1yW2FdO2gubGVmdDxpJiZoLmxlZnQraC53aWR0aD5lJiZvLnB1c2goaC5pZCl9cmV0dXJuIG99LG8ucHJvdG90eXBlLl9kZXNlbGVjdD1mdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy5zZWxlY3Rpb24saT0wLG89ZS5sZW5ndGg7bz5pO2krKylpZihlW2ldPT10KXtlLnNwbGljZShpLDEpO2JyZWFrfX0sby5wcm90b3R5cGUucmVkcmF3PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zLm1hcmdpbixlPXRoaXMuYm9keS5yYW5nZSxpPXMub3B0aW9uLmFzU2l6ZSxvPXRoaXMub3B0aW9ucyxuPW8ub3JpZW50YXRpb24uaXRlbSxyPSExLGE9dGhpcy5kb20uZnJhbWU7dGhpcy5wcm9wcy50b3A9dGhpcy5ib2R5LmRvbVByb3BzLnRvcC5oZWlnaHQrdGhpcy5ib2R5LmRvbVByb3BzLmJvcmRlci50b3AsdGhpcy5wcm9wcy5sZWZ0PXRoaXMuYm9keS5kb21Qcm9wcy5sZWZ0LndpZHRoK3RoaXMuYm9keS5kb21Qcm9wcy5ib3JkZXIubGVmdCxhLmNsYXNzTmFtZT0idmlzLWl0ZW1zZXQiLHI9dGhpcy5fb3JkZXJHcm91cHMoKXx8cjt2YXIgaD1lLmVuZC1lLnN0YXJ0LGQ9aCE9dGhpcy5sYXN0VmlzaWJsZUludGVydmFsfHx0aGlzLnByb3BzLndpZHRoIT10aGlzLnByb3BzLmxhc3RXaWR0aDtkJiYodGhpcy5zdGFja0RpcnR5PSEwKSx0aGlzLmxhc3RWaXNpYmxlSW50ZXJ2YWw9aCx0aGlzLnByb3BzLmxhc3RXaWR0aD10aGlzLnByb3BzLndpZHRoO3ZhciBsPXRoaXMuc3RhY2tEaXJ0eSx1PXRoaXMuX2ZpcnN0R3JvdXAoKSxjPXtpdGVtOnQuaXRlbSxheGlzOnQuYXhpc30scD17aXRlbTp0Lml0ZW0sYXhpczp0Lml0ZW0udmVydGljYWwvMn0sZj0wLG09dC5heGlzK3QuaXRlbS52ZXJ0aWNhbDtyZXR1cm4gdGhpcy5ncm91cHNbZ10ucmVkcmF3KGUscCxsKSxzLmZvckVhY2godGhpcy5ncm91cHMsZnVuY3Rpb24odCl7dmFyIGk9dD09dT9jOnAsbz10LnJlZHJhdyhlLGksbCk7cj1vfHxyLGYrPXQuaGVpZ2h0fSksZj1NYXRoLm1heChmLG0pLHRoaXMuc3RhY2tEaXJ0eT0hMSxhLnN0eWxlLmhlaWdodD1pKGYpLHRoaXMucHJvcHMud2lkdGg9YS5vZmZzZXRXaWR0aCx0aGlzLnByb3BzLmhlaWdodD1mLHRoaXMuZG9tLmF4aXMuc3R5bGUudG9wPWkoInRvcCI9PW4/dGhpcy5ib2R5LmRvbVByb3BzLnRvcC5oZWlnaHQrdGhpcy5ib2R5LmRvbVByb3BzLmJvcmRlci50b3A6dGhpcy5ib2R5LmRvbVByb3BzLnRvcC5oZWlnaHQrdGhpcy5ib2R5LmRvbVByb3BzLmNlbnRlckNvbnRhaW5lci5oZWlnaHQpLHRoaXMuZG9tLmF4aXMuc3R5bGUubGVmdD0iMCIscj10aGlzLl9pc1Jlc2l6ZWQoKXx8cn0sby5wcm90b3R5cGUuX2ZpcnN0R3JvdXA9ZnVuY3Rpb24oKXt2YXIgdD0idG9wIj09dGhpcy5vcHRpb25zLm9yaWVudGF0aW9uLml0ZW0/MDp0aGlzLmdyb3VwSWRzLmxlbmd0aC0xLGU9dGhpcy5ncm91cElkc1t0XSxpPXRoaXMuZ3JvdXBzW2VdfHx0aGlzLmdyb3Vwc1t2XTtyZXR1cm4gaXx8bnVsbH0sby5wcm90b3R5cGUuX3VwZGF0ZVVuZ3JvdXBlZD1mdW5jdGlvbigpe3ZhciB0LGUsaT10aGlzLmdyb3Vwc1t2XTt0aGlzLmdyb3Vwc1tnXTtpZih0aGlzLmdyb3Vwc0RhdGEpe2lmKGkpe2kuaGlkZSgpLGRlbGV0ZSB0aGlzLmdyb3Vwc1t2XTtmb3IoZSBpbiB0aGlzLml0ZW1zKWlmKHRoaXMuaXRlbXMuaGFzT3duUHJvcGVydHkoZSkpe3Q9dGhpcy5pdGVtc1tlXSx0LnBhcmVudCYmdC5wYXJlbnQucmVtb3ZlKHQpO3ZhciBvPXRoaXMuX2dldEdyb3VwSWQodC5kYXRhKSxuPXRoaXMuZ3JvdXBzW29dO24mJm4uYWRkKHQpfHx0LmhpZGUoKX19fWVsc2UgaWYoIWkpe3ZhciBzPW51bGwscj1udWxsO2k9bmV3IGwocyxyLHRoaXMpLHRoaXMuZ3JvdXBzW3ZdPWk7Zm9yKGUgaW4gdGhpcy5pdGVtcyl0aGlzLml0ZW1zLmhhc093blByb3BlcnR5KGUpJiYodD10aGlzLml0ZW1zW2VdLGkuYWRkKHQpKTtpLnNob3coKX19LG8ucHJvdG90eXBlLmdldExhYmVsU2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tLmxhYmVsU2V0fSxvLnByb3RvdHlwZS5zZXRJdGVtcz1mdW5jdGlvbih0KXt2YXIgZSxpPXRoaXMsbz10aGlzLml0ZW1zRGF0YTtpZih0KXtpZighKHQgaW5zdGFuY2VvZiByfHx0IGluc3RhbmNlb2YgYSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiRGF0YSBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIERhdGFTZXQgb3IgRGF0YVZpZXciKTt0aGlzLml0ZW1zRGF0YT10fWVsc2UgdGhpcy5pdGVtc0RhdGE9bnVsbDtpZihvJiYocy5mb3JFYWNoKHRoaXMuaXRlbUxpc3RlbmVycyxmdW5jdGlvbih0LGUpe28ub2ZmKGUsdCl9KSxlPW8uZ2V0SWRzKCksdGhpcy5fb25SZW1vdmUoZSkpLHRoaXMuaXRlbXNEYXRhKXt2YXIgbj10aGlzLmlkO3MuZm9yRWFjaCh0aGlzLml0ZW1MaXN0ZW5lcnMsZnVuY3Rpb24odCxlKXtpLml0ZW1zRGF0YS5vbihlLHQsbil9KSxlPXRoaXMuaXRlbXNEYXRhLmdldElkcygpLHRoaXMuX29uQWRkKGUpLHRoaXMuX3VwZGF0ZVVuZ3JvdXBlZCgpfX0sby5wcm90b3R5cGUuZ2V0SXRlbXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVtc0RhdGF9LG8ucHJvdG90eXBlLnNldEdyb3Vwcz1mdW5jdGlvbih0KXt2YXIgZSxpPXRoaXM7aWYodGhpcy5ncm91cHNEYXRhJiYocy5mb3JFYWNoKHRoaXMuZ3JvdXBMaXN0ZW5lcnMsZnVuY3Rpb24odCxlKXtpLmdyb3Vwc0RhdGEub2ZmKGUsdCl9KSxlPXRoaXMuZ3JvdXBzRGF0YS5nZXRJZHMoKSx0aGlzLmdyb3Vwc0RhdGE9bnVsbCx0aGlzLl9vblJlbW92ZUdyb3VwcyhlKSksdCl7aWYoISh0IGluc3RhbmNlb2Ygcnx8dCBpbnN0YW5jZW9mIGEpKXRocm93IG5ldyBUeXBlRXJyb3IoIkRhdGEgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBEYXRhU2V0IG9yIERhdGFWaWV3Iik7dGhpcy5ncm91cHNEYXRhPXR9ZWxzZSB0aGlzLmdyb3Vwc0RhdGE9bnVsbDtpZih0aGlzLmdyb3Vwc0RhdGEpe3ZhciBvPXRoaXMuaWQ7cy5mb3JFYWNoKHRoaXMuZ3JvdXBMaXN0ZW5lcnMsZnVuY3Rpb24odCxlKXtpLmdyb3Vwc0RhdGEub24oZSx0LG8pfSksZT10aGlzLmdyb3Vwc0RhdGEuZ2V0SWRzKCksdGhpcy5fb25BZGRHcm91cHMoZSl9dGhpcy5fdXBkYXRlVW5ncm91cGVkKCksdGhpcy5fb3JkZXIoKSx0aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJjaGFuZ2UiLHtxdWV1ZTohMH0pfSxvLnByb3RvdHlwZS5nZXRHcm91cHM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ncm91cHNEYXRhfSxvLnByb3RvdHlwZS5yZW1vdmVJdGVtPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaXRlbXNEYXRhLmdldCh0KSxpPXRoaXMuaXRlbXNEYXRhLmdldERhdGFTZXQoKTtlJiZ0aGlzLm9wdGlvbnMub25SZW1vdmUoZSxmdW5jdGlvbihlKXtlJiZpLnJlbW92ZSh0KX0pfSxvLnByb3RvdHlwZS5fZ2V0VHlwZT1mdW5jdGlvbih0KXtyZXR1cm4gdC50eXBlfHx0aGlzLm9wdGlvbnMudHlwZXx8KHQuZW5kPyJyYW5nZSI6ImJveCIpfSxvLnByb3RvdHlwZS5fZ2V0R3JvdXBJZD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9nZXRUeXBlKHQpO3JldHVybiJiYWNrZ3JvdW5kIj09ZSYmdm9pZCAwPT10Lmdyb3VwP2c6dGhpcy5ncm91cHNEYXRhP3QuZ3JvdXA6dn0sby5wcm90b3R5cGUuX29uVXBkYXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dC5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBpLG49ZS5pdGVtc0RhdGEuZ2V0KHQsZS5pdGVtT3B0aW9ucykscz1lLml0ZW1zW3RdLHI9ZS5fZ2V0VHlwZShuKSxhPW8udHlwZXNbcl07aWYocyYmKGEmJnMgaW5zdGFuY2VvZiBhP2UuX3VwZGF0ZUl0ZW0ocyxuKTooaT1zLnNlbGVjdGVkLGUuX3JlbW92ZUl0ZW0ocykscz1udWxsKSksIXMpe2lmKCFhKXRocm93InJhbmdlb3ZlcmZsb3ciPT1yP25ldyBUeXBlRXJyb3IoJ0l0ZW0gdHlwZSAicmFuZ2VvdmVyZmxvdyIgaXMgZGVwcmVjYXRlZC4gVXNlIGNzcyBzdHlsaW5nIGluc3RlYWQ6IC52aXMtaXRlbS52aXMtcmFuZ2UgLnZpcy1pdGVtLWNvbnRlbnQge292ZXJmbG93OiB2aXNpYmxlO30nKTpuZXcgVHlwZUVycm9yKCdVbmtub3duIGl0ZW0gdHlwZSAiJytyKyciJyk7cz1uZXcgYShuLGUuY29udmVyc2lvbixlLm9wdGlvbnMpLHMuaWQ9dCxlLl9hZGRJdGVtKHMpLGkmJih0aGlzLnNlbGVjdGlvbi5wdXNoKHQpLHMuc2VsZWN0KCkpfX0uYmluZCh0aGlzKSksdGhpcy5fb3JkZXIoKSx0aGlzLnN0YWNrRGlydHk9ITAsdGhpcy5ib2R5LmVtaXR0ZXIuZW1pdCgiY2hhbmdlIix7cXVldWU6ITB9KX0sby5wcm90b3R5cGUuX29uQWRkPW8ucHJvdG90eXBlLl9vblVwZGF0ZSxvLnByb3RvdHlwZS5fb25SZW1vdmU9ZnVuY3Rpb24odCl7dmFyIGU9MCxpPXRoaXM7dC5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBvPWkuaXRlbXNbdF07byYmKGUrKyxpLl9yZW1vdmVJdGVtKG8pKX0pLGUmJih0aGlzLl9vcmRlcigpLHRoaXMuc3RhY2tEaXJ0eT0hMCx0aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJjaGFuZ2UiLHtxdWV1ZTohMH0pKX0sby5wcm90b3R5cGUuX29yZGVyPWZ1bmN0aW9uKCl7cy5mb3JFYWNoKHRoaXMuZ3JvdXBzLGZ1bmN0aW9uKHQpe3Qub3JkZXIoKX0pfSxvLnByb3RvdHlwZS5fb25VcGRhdGVHcm91cHM9ZnVuY3Rpb24odCl7dGhpcy5fb25BZGRHcm91cHModCl9LG8ucHJvdG90eXBlLl9vbkFkZEdyb3Vwcz1mdW5jdGlvbih0KXt2YXIgZT10aGlzO3QuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgaT1lLmdyb3Vwc0RhdGEuZ2V0KHQpLG89ZS5ncm91cHNbdF07aWYobylvLnNldERhdGEoaSk7ZWxzZXtpZih0PT12fHx0PT1nKXRocm93IG5ldyBFcnJvcigiSWxsZWdhbCBncm91cCBpZC4gIit0KyIgaXMgYSByZXNlcnZlZCBpZC4iKTt2YXIgbj1PYmplY3QuY3JlYXRlKGUub3B0aW9ucyk7cy5leHRlbmQobix7aGVpZ2h0Om51bGx9KSxvPW5ldyBsKHQsaSxlKSxlLmdyb3Vwc1t0XT1vO2Zvcih2YXIgciBpbiBlLml0ZW1zKWlmKGUuaXRlbXMuaGFzT3duUHJvcGVydHkocikpe3ZhciBhPWUuaXRlbXNbcl07YS5kYXRhLmdyb3VwPT10JiZvLmFkZChhKX1vLm9yZGVyKCksby5zaG93KCl9fSksdGhpcy5ib2R5LmVtaXR0ZXIuZW1pdCgiY2hhbmdlIix7cXVldWU6ITB9KX0sby5wcm90b3R5cGUuX29uUmVtb3ZlR3JvdXBzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZ3JvdXBzO3QuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgaT1lW3RdO2kmJihpLmhpZGUoKSxkZWxldGUgZVt0XSl9KSx0aGlzLm1hcmtEaXJ0eSgpLHRoaXMuYm9keS5lbWl0dGVyLmVtaXQoImNoYW5nZSIse3F1ZXVlOiEwfSl9LG8ucHJvdG90eXBlLl9vcmRlckdyb3Vwcz1mdW5jdGlvbigpe2lmKHRoaXMuZ3JvdXBzRGF0YSl7dmFyIHQ9dGhpcy5ncm91cHNEYXRhLmdldElkcyh7b3JkZXI6dGhpcy5vcHRpb25zLmdyb3VwT3JkZXJ9KSxlPSFzLmVxdWFsQXJyYXkodCx0aGlzLmdyb3VwSWRzKTtpZihlKXt2YXIgaT10aGlzLmdyb3Vwczt0LmZvckVhY2goZnVuY3Rpb24odCl7aVt0XS5oaWRlKCl9KSx0LmZvckVhY2goZnVuY3Rpb24odCl7aVt0XS5zaG93KCl9KSx0aGlzLmdyb3VwSWRzPXR9cmV0dXJuIGV9cmV0dXJuITF9LG8ucHJvdG90eXBlLl9hZGRJdGVtPWZ1bmN0aW9uKHQpe3RoaXMuaXRlbXNbdC5pZF09dDt2YXIgZT10aGlzLl9nZXRHcm91cElkKHQuZGF0YSksaT10aGlzLmdyb3Vwc1tlXTtpJiZpLmFkZCh0KX0sby5wcm90b3R5cGUuX3VwZGF0ZUl0ZW09ZnVuY3Rpb24odCxlKXt2YXIgaT10LmRhdGEuZ3JvdXAsbz10LmRhdGEuc3ViZ3JvdXA7aWYodC5zZXREYXRhKGUpLGkhPXQuZGF0YS5ncm91cHx8byE9dC5kYXRhLnN1Ymdyb3VwKXt2YXIgbj10aGlzLmdyb3Vwc1tpXTtuJiZuLnJlbW92ZSh0KTt2YXIgcz10aGlzLl9nZXRHcm91cElkKHQuZGF0YSkscj10aGlzLmdyb3Vwc1tzXTtyJiZyLmFkZCh0KX19LG8ucHJvdG90eXBlLl9yZW1vdmVJdGVtPWZ1bmN0aW9uKHQpe3QuaGlkZSgpLGRlbGV0ZSB0aGlzLml0ZW1zW3QuaWRdO3ZhciBlPXRoaXMuc2VsZWN0aW9uLmluZGV4T2YodC5pZCk7LTEhPWUmJnRoaXMuc2VsZWN0aW9uLnNwbGljZShlLDEpLHQucGFyZW50JiZ0LnBhcmVudC5yZW1vdmUodCl9LG8ucHJvdG90eXBlLl9jb25zdHJ1Y3RCeUVuZEFycmF5PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1bXSxpPTA7aTx0Lmxlbmd0aDtpKyspdFtpXWluc3RhbmNlb2YgZiYmZS5wdXNoKHRbaV0pO3JldHVybiBlfSxvLnByb3RvdHlwZS5fb25Ub3VjaD1mdW5jdGlvbih0KXt0aGlzLnRvdWNoUGFyYW1zLml0ZW09dGhpcy5pdGVtRnJvbVRhcmdldCh0KSx0aGlzLnRvdWNoUGFyYW1zLmRyYWdMZWZ0SXRlbT10LnRhcmdldC5kcmFnTGVmdEl0ZW18fCExLHRoaXMudG91Y2hQYXJhbXMuZHJhZ1JpZ2h0SXRlbT10LnRhcmdldC5kcmFnUmlnaHRJdGVtfHwhMSx0aGlzLnRvdWNoUGFyYW1zLml0ZW1Qcm9wcz1udWxsfSxvLnByb3RvdHlwZS5fb25EcmFnU3RhcnQ9ZnVuY3Rpb24odCl7dmFyIGUsaT10aGlzLnRvdWNoUGFyYW1zLml0ZW18fG51bGwsbz10aGlzO2lmKGkmJmkuc2VsZWN0ZWQpe2lmKCF0aGlzLm9wdGlvbnMuZWRpdGFibGUudXBkYXRlVGltZSYmIXRoaXMub3B0aW9ucy5lZGl0YWJsZS51cGRhdGVHcm91cCYmIWkuZWRpdGFibGUpcmV0dXJuO2lmKGkuZWRpdGFibGU9PT0hMSlyZXR1cm47dmFyIG49dGhpcy50b3VjaFBhcmFtcy5kcmFnTGVmdEl0ZW0scj10aGlzLnRvdWNoUGFyYW1zLmRyYWdSaWdodEl0ZW07bj8oZT17aXRlbTpuLGluaXRpYWxYOnQuY2VudGVyLngsZHJhZ0xlZnQ6ITAsZGF0YTpzLmV4dGVuZCh7fSxpLmRhdGEpfSx0aGlzLnRvdWNoUGFyYW1zLml0ZW1Qcm9wcz1bZV0pOnI/KGU9e2l0ZW06cixpbml0aWFsWDp0LmNlbnRlci54LGRyYWdSaWdodDohMCxkYXRhOnMuZXh0ZW5kKHt9LGkuZGF0YSl9LHRoaXMudG91Y2hQYXJhbXMuaXRlbVByb3BzPVtlXSk6dGhpcy50b3VjaFBhcmFtcy5pdGVtUHJvcHM9dGhpcy5nZXRTZWxlY3Rpb24oKS5tYXAoZnVuY3Rpb24oZSl7dmFyIGk9by5pdGVtc1tlXSxuPXtpdGVtOmksaW5pdGlhbFg6dC5jZW50ZXIueCxkYXRhOnMuZXh0ZW5kKHt9LGkuZGF0YSl9O3JldHVybiBufSksdC5zdG9wUHJvcGFnYXRpb24oKX1lbHNlIHRoaXMub3B0aW9ucy5lZGl0YWJsZS5hZGQmJih0LnNyY0V2ZW50LmN0cmxLZXl8fHQuc3JjRXZlbnQubWV0YUtleSkmJnRoaXMuX29uRHJhZ1N0YXJ0QWRkSXRlbSh0KX0sby5wcm90b3R5cGUuX29uRHJhZ1N0YXJ0QWRkSXRlbT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLm9wdGlvbnMuc25hcHx8bnVsbCxpPXMuZ2V0QWJzb2x1dGVMZWZ0KHRoaXMuZG9tLmZyYW1lKSxvPXQuY2VudGVyLngtaS0xMCxuPXRoaXMuYm9keS51dGlsLnRvVGltZShvKSxyPXRoaXMuYm9keS51dGlsLmdldFNjYWxlKCksYT10aGlzLmJvZHkudXRpbC5nZXRTdGVwKCksaD1lP2UobixyLGEpOmgsZD1oLGw9e3R5cGU6InJhbmdlIixzdGFydDpoLGVuZDpkLGNvbnRlbnQ6Im5ldyBpdGVtIn0sdT1zLnJhbmRvbVVVSUQoKTtsW3RoaXMuaXRlbXNEYXRhLl9maWVsZElkXT11O3ZhciBjPXRoaXMuZ3JvdXBGcm9tVGFyZ2V0KHQpO2MmJihsLmdyb3VwPWMuZ3JvdXBJZCk7dmFyIHA9bmV3IGYobCx0aGlzLmNvbnZlcnNpb24sdGhpcy5vcHRpb25zKTtwLmlkPXUscC5kYXRhPWwsdGhpcy5fYWRkSXRlbShwKTt2YXIgbT17aXRlbTpwLGRyYWdSaWdodDohMCxpbml0aWFsWDp0LmNlbnRlci54LGRhdGE6cy5leHRlbmQoe30sbCl9O3RoaXMudG91Y2hQYXJhbXMuaXRlbVByb3BzPVttXSx0LnN0b3BQcm9wYWdhdGlvbigpfSxvLnByb3RvdHlwZS5fb25EcmFnPWZ1bmN0aW9uKHQpe2lmKHRoaXMudG91Y2hQYXJhbXMuaXRlbVByb3BzKXt0LnN0b3BQcm9wYWdhdGlvbigpO3ZhciBlPXRoaXMsaT10aGlzLm9wdGlvbnMuc25hcHx8bnVsbCxvPXRoaXMuYm9keS5kb20ucm9vdC5vZmZzZXRMZWZ0K3RoaXMuYm9keS5kb21Qcm9wcy5sZWZ0LndpZHRoLG49dGhpcy5ib2R5LnV0aWwuZ2V0U2NhbGUoKSxyPXRoaXMuYm9keS51dGlsLmdldFN0ZXAoKTt0aGlzLnRvdWNoUGFyYW1zLml0ZW1Qcm9wcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBoPWUuYm9keS51dGlsLnRvVGltZSh0LmNlbnRlci54LW8pLGQ9ZS5ib2R5LnV0aWwudG9UaW1lKGEuaW5pdGlhbFgtbyksbD1oLWQsdT1zLmV4dGVuZCh7fSxhLml0ZW0uZGF0YSk7aWYoYS5pdGVtLmVkaXRhYmxlIT09ITEpe3ZhciBjPWUub3B0aW9ucy5lZGl0YWJsZS51cGRhdGVUaW1lfHxhLml0ZW0uZWRpdGFibGU9PT0hMDtpZihjKWlmKGEuZHJhZ0xlZnQpe2lmKHZvaWQgMCE9dS5zdGFydCl7dmFyIHA9cy5jb252ZXJ0KGEuZGF0YS5zdGFydCwiRGF0ZSIpLGY9bmV3IERhdGUocC52YWx1ZU9mKCkrbCk7dS5zdGFydD1pP2koZixuLHIpOmZ9fWVsc2UgaWYoYS5kcmFnUmlnaHQpe2lmKHZvaWQgMCE9dS5lbmQpe3ZhciBtPXMuY29udmVydChhLmRhdGEuZW5kLCJEYXRlIiksdj1uZXcgRGF0ZShtLnZhbHVlT2YoKStsKTt1LmVuZD1pP2kodixuLHIpOnZ9fWVsc2UgaWYodm9pZCAwIT11LnN0YXJ0KXt2YXIgcD1zLmNvbnZlcnQoYS5kYXRhLnN0YXJ0LCJEYXRlIikudmFsdWVPZigpLGY9bmV3IERhdGUocCtsKTtpZih2b2lkIDAhPXUuZW5kKXt2YXIgbT1zLmNvbnZlcnQoYS5kYXRhLmVuZCwiRGF0ZSIpLGc9bS52YWx1ZU9mKCktcC52YWx1ZU9mKCk7dS5zdGFydD1pP2koZixuLHIpOmYsdS5lbmQ9bmV3IERhdGUodS5zdGFydC52YWx1ZU9mKCkrZyl9ZWxzZSB1LnN0YXJ0PWk/aShmLG4scik6Zn12YXIgeT1lLm9wdGlvbnMuZWRpdGFibGUudXBkYXRlR3JvdXB8fGEuaXRlbS5lZGl0YWJsZT09PSEwO2lmKHkmJiFhLmRyYWdMZWZ0JiYhYS5kcmFnUmlnaHQmJnZvaWQgMCE9dS5ncm91cCl7dmFyIGI9ZS5ncm91cEZyb21UYXJnZXQodCk7YiYmKHUuZ3JvdXA9Yi5ncm91cElkKX1lLm9wdGlvbnMub25Nb3ZpbmcodSxmdW5jdGlvbih0KXt0JiZhLml0ZW0uc2V0RGF0YSh0KX0pfX0pLHRoaXMuc3RhY2tEaXJ0eT0hMCx0aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJjaGFuZ2UiKX19LG8ucHJvdG90eXBlLl9tb3ZlVG9Hcm91cD1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuZ3JvdXBzW2VdO2lmKGkmJmkuZ3JvdXBJZCE9dC5kYXRhLmdyb3VwKXt2YXIgbz10LnBhcmVudDtvLnJlbW92ZSh0KSxvLm9yZGVyKCksaS5hZGQodCksaS5vcmRlcigpLHQuZGF0YS5ncm91cD1pLmdyb3VwSWR9fSxvLnByb3RvdHlwZS5fb25EcmFnRW5kPWZ1bmN0aW9uKHQpe2lmKHRoaXMudG91Y2hQYXJhbXMuaXRlbVByb3BzKXt0LnN0b3BQcm9wYWdhdGlvbigpO3ZhciBlPVtdLGk9dGhpcyxvPXRoaXMuaXRlbXNEYXRhLmdldERhdGFTZXQoKSxuPXRoaXMudG91Y2hQYXJhbXMuaXRlbVByb3BzO3RoaXMudG91Y2hQYXJhbXMuaXRlbVByb3BzPW51bGwsbi5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBuPXQuaXRlbS5pZCxyPW51bGwhPWkuaXRlbXNEYXRhLmdldChuLGkuaXRlbU9wdGlvbnMpO2lmKHIpe3ZhciBhPXMuZXh0ZW5kKHt9LHQuaXRlbS5kYXRhKTtpLm9wdGlvbnMub25Nb3ZlKGEsZnVuY3Rpb24ocyl7cz8oc1tvLl9maWVsZElkXT1uLGUucHVzaChzKSk6KHQuaXRlbS5zZXREYXRhKHQuZGF0YSksaS5zdGFja0RpcnR5PSEwLGkuYm9keS5lbWl0dGVyLmVtaXQoImNoYW5nZSIpKX0pfWVsc2UgaS5vcHRpb25zLm9uQWRkKHQuaXRlbS5kYXRhLGZ1bmN0aW9uKGUpe2kuX3JlbW92ZUl0ZW0odC5pdGVtKSxlJiZpLml0ZW1zRGF0YS5nZXREYXRhU2V0KCkuYWRkKGUpLGkuc3RhY2tEaXJ0eT0hMCxpLmJvZHkuZW1pdHRlci5lbWl0KCJjaGFuZ2UiKX0pfSksZS5sZW5ndGgmJm8udXBkYXRlKGUpfX0sby5wcm90b3R5cGUuX29uU2VsZWN0SXRlbT1mdW5jdGlvbih0KXtpZih0aGlzLm9wdGlvbnMuc2VsZWN0YWJsZSl7dmFyIGU9dC5zcmNFdmVudCYmKHQuc3JjRXZlbnQuY3RybEtleXx8dC5zcmNFdmVudC5tZXRhS2V5KSxpPXQuc3JjRXZlbnQmJnQuc3JjRXZlbnQuc2hpZnRLZXk7aWYoZXx8aSlyZXR1cm4gdm9pZCB0aGlzLl9vbk11bHRpU2VsZWN0SXRlbSh0KTt2YXIgbz10aGlzLmdldFNlbGVjdGlvbigpLG49dGhpcy5pdGVtRnJvbVRhcmdldCh0KSxzPW4/W24uaWRdOltdO3RoaXMuc2V0U2VsZWN0aW9uKHMpO3ZhciByPXRoaXMuZ2V0U2VsZWN0aW9uKCk7KHIubGVuZ3RoPjB8fG8ubGVuZ3RoPjApJiZ0aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJzZWxlY3QiLHtpdGVtczpyLGV2ZW50OnR9KX19LG8ucHJvdG90eXBlLl9vbkFkZEl0ZW09ZnVuY3Rpb24odCl7aWYodGhpcy5vcHRpb25zLnNlbGVjdGFibGUmJnRoaXMub3B0aW9ucy5lZGl0YWJsZS5hZGQpe3ZhciBlPXRoaXMsaT10aGlzLm9wdGlvbnMuc25hcHx8bnVsbCxvPXRoaXMuaXRlbUZyb21UYXJnZXQodCk7aWYodC5zdG9wUHJvcGFnYXRpb24oKSxvKXt2YXIgbj1lLml0ZW1zRGF0YS5nZXQoby5pZCk7dGhpcy5vcHRpb25zLm9uVXBkYXRlKG4sZnVuY3Rpb24odCl7dCYmZS5pdGVtc0RhdGEuZ2V0RGF0YVNldCgpLnVwZGF0ZSh0KX0pfWVsc2V7dmFyIHI9cy5nZXRBYnNvbHV0ZUxlZnQodGhpcy5kb20uZnJhbWUpLGE9dC5jZW50ZXIueC1yLGg9dGhpcy5ib2R5LnV0aWwudG9UaW1lKGEpLGQ9dGhpcy5ib2R5LnV0aWwuZ2V0U2NhbGUoKSxsPXRoaXMuYm9keS51dGlsLmdldFN0ZXAoKSx1PXtzdGFydDppP2koaCxkLGwpOmgsY29udGVudDoibmV3IGl0ZW0ifTtpZigicmFuZ2UiPT09dGhpcy5vcHRpb25zLnR5cGUpe3ZhciBjPXRoaXMuYm9keS51dGlsLnRvVGltZShhK3RoaXMucHJvcHMud2lkdGgvNSk7dS5lbmQ9aT9pKGMsZCxsKTpjfXVbdGhpcy5pdGVtc0RhdGEuX2ZpZWxkSWRdPXMucmFuZG9tVVVJRCgpO3ZhciBwPXRoaXMuZ3JvdXBGcm9tVGFyZ2V0KHQpO3AmJih1Lmdyb3VwPXAuZ3JvdXBJZCksdGhpcy5vcHRpb25zLm9uQWRkKHUsZnVuY3Rpb24odCl7dCYmZS5pdGVtc0RhdGEuZ2V0RGF0YVNldCgpLmFkZCh0KX0pfX19LG8ucHJvdG90eXBlLl9vbk11bHRpU2VsZWN0SXRlbT1mdW5jdGlvbih0KXtpZih0aGlzLm9wdGlvbnMuc2VsZWN0YWJsZSl7dmFyIGU9dGhpcy5pdGVtRnJvbVRhcmdldCh0KTtpZihlKXt2YXIgaT10aGlzLm9wdGlvbnMubXVsdGlzZWxlY3Q/dGhpcy5nZXRTZWxlY3Rpb24oKTpbXSxuPXQuc3JjRXZlbnQmJnQuc3JjRXZlbnQuc2hpZnRLZXl8fCExO2lmKG4mJnRoaXMub3B0aW9ucy5tdWx0aXNlbGVjdCl7aS5wdXNoKGUuaWQpO3ZhciBzPW8uX2dldEl0ZW1SYW5nZSh0aGlzLml0ZW1zRGF0YS5nZXQoaSx0aGlzLml0ZW1PcHRpb25zKSk7aT1bXTtmb3IodmFyIHIgaW4gdGhpcy5pdGVtcylpZih0aGlzLml0ZW1zLmhhc093blByb3BlcnR5KHIpKXt2YXIgYT10aGlzLml0ZW1zW3JdLGg9YS5kYXRhLnN0YXJ0LGQ9dm9pZCAwIT09YS5kYXRhLmVuZD9hLmRhdGEuZW5kOmg7aD49cy5taW4mJmQ8PXMubWF4JiYhKGEgaW5zdGFuY2VvZiBtKSYmaS5wdXNoKGEuaWQpfX1lbHNle3ZhciBsPWkuaW5kZXhPZihlLmlkKTstMT09bD9pLnB1c2goZS5pZCk6aS5zcGxpY2UobCwxKX10aGlzLnNldFNlbGVjdGlvbihpKSx0aGlzLmJvZHkuZW1pdHRlci5lbWl0KCJzZWxlY3QiLHtpdGVtczp0aGlzLmdldFNlbGVjdGlvbigpLGV2ZW50OnR9KX19fSxvLl9nZXRJdGVtUmFuZ2U9ZnVuY3Rpb24odCl7dmFyIGU9bnVsbCxpPW51bGw7cmV0dXJuIHQuZm9yRWFjaChmdW5jdGlvbih0KXsobnVsbD09aXx8dC5zdGFydDxpKSYmKGk9dC5zdGFydCksdm9pZCAwIT10LmVuZD8obnVsbD09ZXx8dC5lbmQ+ZSkmJihlPXQuZW5kKToobnVsbD09ZXx8dC5zdGFydD5lKSYmKGU9dC5zdGFydCl9KSx7bWluOmksbWF4OmV9fSxvLnByb3RvdHlwZS5pdGVtRnJvbVRhcmdldD1mdW5jdGlvbih0KXtmb3IodmFyIGU9dC50YXJnZXQ7ZTspe2lmKGUuaGFzT3duUHJvcGVydHkoInRpbWVsaW5lLWl0ZW0iKSlyZXR1cm4gZVsidGltZWxpbmUtaXRlbSJdO2U9ZS5wYXJlbnROb2RlfXJldHVybiBudWxsfSxvLnByb3RvdHlwZS5ncm91cEZyb21UYXJnZXQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQuY2VudGVyP3QuY2VudGVyLnk6dC5jbGllbnRZLGk9MDtpPHRoaXMuZ3JvdXBJZHMubGVuZ3RoO2krKyl7dmFyIG89dGhpcy5ncm91cElkc1tpXSxuPXRoaXMuZ3JvdXBzW29dLHI9bi5kb20uZm9yZWdyb3VuZCxhPXMuZ2V0QWJzb2x1dGVUb3Aocik7aWYoZT5hJiZlPGErci5vZmZzZXRIZWlnaHQpcmV0dXJuIG47aWYoInRvcCI9PT10aGlzLm9wdGlvbnMub3JpZW50YXRpb24uaXRlbSl7aWYoaT09PXRoaXMuZ3JvdXBJZHMubGVuZ3RoLTEmJmU+YSlyZXR1cm4gbn1lbHNlIGlmKDA9PT1pJiZlPGErci5vZmZzZXQpcmV0dXJuIG59cmV0dXJuIG51bGx9LG8uaXRlbVNldEZyb21UYXJnZXQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQudGFyZ2V0O2U7KXtpZihlLmhhc093blByb3BlcnR5KCJ0aW1lbGluZS1pdGVtc2V0IikpcmV0dXJuIGVbInRpbWVsaW5lLWl0ZW1zZXQiXTtlPWUucGFyZW50Tm9kZX1yZXR1cm4gbnVsbH0sdC5leHBvcnRzPW99LGZ1bmN0aW9uKHQsZSxpKXtmdW5jdGlvbiBvKHQsZSxpKXt0aGlzLmdyb3VwSWQ9dCx0aGlzLnN1Ymdyb3Vwcz17fSx0aGlzLnN1Ymdyb3VwSW5kZXg9MCx0aGlzLnN1Ymdyb3VwT3JkZXJlcj1lJiZlLnN1Ymdyb3VwT3JkZXIsdGhpcy5pdGVtU2V0PWksdGhpcy5kb209e30sdGhpcy5wcm9wcz17bGFiZWw6e3dpZHRoOjAsaGVpZ2h0OjB9fSx0aGlzLmNsYXNzTmFtZT1udWxsLHRoaXMuaXRlbXM9e30sdGhpcy52aXNpYmxlSXRlbXM9W10sdGhpcy5vcmRlcmVkSXRlbXM9e2J5U3RhcnQ6W10sYnlFbmQ6W119LHRoaXMuY2hlY2tSYW5nZWRJdGVtcz0hMTt2YXIgbz10aGlzO3RoaXMuaXRlbVNldC5ib2R5LmVtaXR0ZXIub24oImNoZWNrUmFuZ2VkSXRlbXMiLGZ1bmN0aW9uKCl7by5jaGVja1JhbmdlZEl0ZW1zPSEwfSksdGhpcy5fY3JlYXRlKCksdGhpcy5zZXREYXRhKGUpfXZhciBuPWkoNykscz1pKDM1KTtpKDM2KTtvLnByb3RvdHlwZS5fY3JlYXRlPWZ1bmN0aW9uKCl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dC5jbGFzc05hbWU9InZpcy1sYWJlbCIsdGhpcy5kb20ubGFiZWw9dDt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtlLmNsYXNzTmFtZT0idmlzLWlubmVyIix0LmFwcGVuZENoaWxkKGUpLHRoaXMuZG9tLmlubmVyPWU7dmFyIGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7aS5jbGFzc05hbWU9InZpcy1ncm91cCIsaVsidGltZWxpbmUtZ3JvdXAiXT10aGlzLHRoaXMuZG9tLmZvcmVncm91bmQ9aSx0aGlzLmRvbS5iYWNrZ3JvdW5kPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuZG9tLmJhY2tncm91bmQuY2xhc3NOYW1lPSJ2aXMtZ3JvdXAiLHRoaXMuZG9tLmF4aXM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5kb20uYXhpcy5jbGFzc05hbWU9InZpcy1ncm91cCIsdGhpcy5kb20ubWFya2VyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuZG9tLm1hcmtlci5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iLHRoaXMuZG9tLm1hcmtlci5pbm5lckhUTUw9Ij8iLHRoaXMuZG9tLmJhY2tncm91bmQuYXBwZW5kQ2hpbGQodGhpcy5kb20ubWFya2VyKTsNCn0sby5wcm90b3R5cGUuc2V0RGF0YT1mdW5jdGlvbih0KXt2YXIgZT10JiZ0LmNvbnRlbnQ7ZSBpbnN0YW5jZW9mIEVsZW1lbnQ/dGhpcy5kb20uaW5uZXIuYXBwZW5kQ2hpbGQoZSk6dm9pZCAwIT09ZSYmbnVsbCE9PWU/dGhpcy5kb20uaW5uZXIuaW5uZXJIVE1MPWU6dGhpcy5kb20uaW5uZXIuaW5uZXJIVE1MPXRoaXMuZ3JvdXBJZHx8IiIsdGhpcy5kb20ubGFiZWwudGl0bGU9dCYmdC50aXRsZXx8IiIsdGhpcy5kb20uaW5uZXIuZmlyc3RDaGlsZD9uLnJlbW92ZUNsYXNzTmFtZSh0aGlzLmRvbS5pbm5lciwidmlzLWhpZGRlbiIpOm4uYWRkQ2xhc3NOYW1lKHRoaXMuZG9tLmlubmVyLCJ2aXMtaGlkZGVuIik7dmFyIGk9dCYmdC5jbGFzc05hbWV8fG51bGw7aSE9dGhpcy5jbGFzc05hbWUmJih0aGlzLmNsYXNzTmFtZSYmKG4ucmVtb3ZlQ2xhc3NOYW1lKHRoaXMuZG9tLmxhYmVsLHRoaXMuY2xhc3NOYW1lKSxuLnJlbW92ZUNsYXNzTmFtZSh0aGlzLmRvbS5mb3JlZ3JvdW5kLHRoaXMuY2xhc3NOYW1lKSxuLnJlbW92ZUNsYXNzTmFtZSh0aGlzLmRvbS5iYWNrZ3JvdW5kLHRoaXMuY2xhc3NOYW1lKSxuLnJlbW92ZUNsYXNzTmFtZSh0aGlzLmRvbS5heGlzLHRoaXMuY2xhc3NOYW1lKSksbi5hZGRDbGFzc05hbWUodGhpcy5kb20ubGFiZWwsaSksbi5hZGRDbGFzc05hbWUodGhpcy5kb20uZm9yZWdyb3VuZCxpKSxuLmFkZENsYXNzTmFtZSh0aGlzLmRvbS5iYWNrZ3JvdW5kLGkpLG4uYWRkQ2xhc3NOYW1lKHRoaXMuZG9tLmF4aXMsaSksdGhpcy5jbGFzc05hbWU9aSksdGhpcy5zdHlsZSYmKG4ucmVtb3ZlQ3NzVGV4dCh0aGlzLmRvbS5sYWJlbCwidmlzLSIrdGhpcy5zdHlsZSksdGhpcy5zdHlsZT1udWxsKSx0JiZ0LnN0eWxlJiYobi5hZGRDc3NUZXh0KHRoaXMuZG9tLmxhYmVsLCJ2aXMtIit0LnN0eWxlKSx0aGlzLnN0eWxlPXQuc3R5bGUpfSxvLnByb3RvdHlwZS5nZXRMYWJlbFdpZHRoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJvcHMubGFiZWwud2lkdGh9LG8ucHJvdG90eXBlLnJlZHJhdz1mdW5jdGlvbih0LGUsaSl7dmFyIG89ITEscj10aGlzLmRvbS5tYXJrZXIuY2xpZW50SGVpZ2h0O2lmKHIhPXRoaXMubGFzdE1hcmtlckhlaWdodCYmKHRoaXMubGFzdE1hcmtlckhlaWdodD1yLG4uZm9yRWFjaCh0aGlzLml0ZW1zLGZ1bmN0aW9uKHQpe3QuZGlydHk9ITAsdC5kaXNwbGF5ZWQmJnQucmVkcmF3KCl9KSxpPSEwKSwiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5pdGVtU2V0Lm9wdGlvbnMub3JkZXIpe2lmKGkpe3ZhciBhPXRoaXMsaD0hMTtuLmZvckVhY2godGhpcy5pdGVtcyxmdW5jdGlvbih0KXt0LmRpc3BsYXllZHx8KHQucmVkcmF3KCksYS52aXNpYmxlSXRlbXMucHVzaCh0KSksdC5yZXBvc2l0aW9uWChoKX0pO3ZhciBkPXRoaXMub3JkZXJlZEl0ZW1zLmJ5U3RhcnQuc2xpY2UoKS5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGEuaXRlbVNldC5vcHRpb25zLm9yZGVyKHQuZGF0YSxlLmRhdGEpfSk7cy5zdGFjayhkLGUsITApfXRoaXMudmlzaWJsZUl0ZW1zPXRoaXMuX3VwZGF0ZVZpc2libGVJdGVtcyh0aGlzLm9yZGVyZWRJdGVtcyx0aGlzLnZpc2libGVJdGVtcyx0KX1lbHNlIHRoaXMudmlzaWJsZUl0ZW1zPXRoaXMuX3VwZGF0ZVZpc2libGVJdGVtcyh0aGlzLm9yZGVyZWRJdGVtcyx0aGlzLnZpc2libGVJdGVtcyx0KSx0aGlzLml0ZW1TZXQub3B0aW9ucy5zdGFjaz9zLnN0YWNrKHRoaXMudmlzaWJsZUl0ZW1zLGUsaSk6cy5ub3N0YWNrKHRoaXMudmlzaWJsZUl0ZW1zLGUsdGhpcy5zdWJncm91cHMpO3ZhciBsPXRoaXMuX2NhbGN1bGF0ZUhlaWdodChlKSx1PXRoaXMuZG9tLmZvcmVncm91bmQ7dGhpcy50b3A9dS5vZmZzZXRUb3AsdGhpcy5sZWZ0PXUub2Zmc2V0TGVmdCx0aGlzLndpZHRoPXUub2Zmc2V0V2lkdGgsbz1uLnVwZGF0ZVByb3BlcnR5KHRoaXMsImhlaWdodCIsbCl8fG8sbz1uLnVwZGF0ZVByb3BlcnR5KHRoaXMucHJvcHMubGFiZWwsIndpZHRoIix0aGlzLmRvbS5pbm5lci5jbGllbnRXaWR0aCl8fG8sbz1uLnVwZGF0ZVByb3BlcnR5KHRoaXMucHJvcHMubGFiZWwsImhlaWdodCIsdGhpcy5kb20uaW5uZXIuY2xpZW50SGVpZ2h0KXx8byx0aGlzLmRvbS5iYWNrZ3JvdW5kLnN0eWxlLmhlaWdodD1sKyJweCIsdGhpcy5kb20uZm9yZWdyb3VuZC5zdHlsZS5oZWlnaHQ9bCsicHgiLHRoaXMuZG9tLmxhYmVsLnN0eWxlLmhlaWdodD1sKyJweCI7Zm9yKHZhciBjPTAscD10aGlzLnZpc2libGVJdGVtcy5sZW5ndGg7cD5jO2MrKyl7dmFyIGY9dGhpcy52aXNpYmxlSXRlbXNbY107Zi5yZXBvc2l0aW9uWShlKX1yZXR1cm4gb30sby5wcm90b3R5cGUuX2NhbGN1bGF0ZUhlaWdodD1mdW5jdGlvbih0KXt2YXIgZSxpPXRoaXMudmlzaWJsZUl0ZW1zO3RoaXMucmVzZXRTdWJncm91cHMoKTt2YXIgbz10aGlzO2lmKGkubGVuZ3RoPjApe3ZhciBzPWlbMF0udG9wLHI9aVswXS50b3AraVswXS5oZWlnaHQ7aWYobi5mb3JFYWNoKGksZnVuY3Rpb24odCl7cz1NYXRoLm1pbihzLHQudG9wKSxyPU1hdGgubWF4KHIsdC50b3ArdC5oZWlnaHQpLHZvaWQgMCE9PXQuZGF0YS5zdWJncm91cCYmKG8uc3ViZ3JvdXBzW3QuZGF0YS5zdWJncm91cF0uaGVpZ2h0PU1hdGgubWF4KG8uc3ViZ3JvdXBzW3QuZGF0YS5zdWJncm91cF0uaGVpZ2h0LHQuaGVpZ2h0KSxvLnN1Ymdyb3Vwc1t0LmRhdGEuc3ViZ3JvdXBdLnZpc2libGU9ITApfSkscz50LmF4aXMpe3ZhciBhPXMtdC5heGlzO3ItPWEsbi5mb3JFYWNoKGksZnVuY3Rpb24odCl7dC50b3AtPWF9KX1lPXIrdC5pdGVtLnZlcnRpY2FsLzJ9ZWxzZSBlPTA7cmV0dXJuIGU9TWF0aC5tYXgoZSx0aGlzLnByb3BzLmxhYmVsLmhlaWdodCl9LG8ucHJvdG90eXBlLnNob3c9ZnVuY3Rpb24oKXt0aGlzLmRvbS5sYWJlbC5wYXJlbnROb2RlfHx0aGlzLml0ZW1TZXQuZG9tLmxhYmVsU2V0LmFwcGVuZENoaWxkKHRoaXMuZG9tLmxhYmVsKSx0aGlzLmRvbS5mb3JlZ3JvdW5kLnBhcmVudE5vZGV8fHRoaXMuaXRlbVNldC5kb20uZm9yZWdyb3VuZC5hcHBlbmRDaGlsZCh0aGlzLmRvbS5mb3JlZ3JvdW5kKSx0aGlzLmRvbS5iYWNrZ3JvdW5kLnBhcmVudE5vZGV8fHRoaXMuaXRlbVNldC5kb20uYmFja2dyb3VuZC5hcHBlbmRDaGlsZCh0aGlzLmRvbS5iYWNrZ3JvdW5kKSx0aGlzLmRvbS5heGlzLnBhcmVudE5vZGV8fHRoaXMuaXRlbVNldC5kb20uYXhpcy5hcHBlbmRDaGlsZCh0aGlzLmRvbS5heGlzKX0sby5wcm90b3R5cGUuaGlkZT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZG9tLmxhYmVsO3QucGFyZW50Tm9kZSYmdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpO3ZhciBlPXRoaXMuZG9tLmZvcmVncm91bmQ7ZS5wYXJlbnROb2RlJiZlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZSk7dmFyIGk9dGhpcy5kb20uYmFja2dyb3VuZDtpLnBhcmVudE5vZGUmJmkucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChpKTt2YXIgbz10aGlzLmRvbS5heGlzO28ucGFyZW50Tm9kZSYmby5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG8pfSxvLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24odCl7aWYodGhpcy5pdGVtc1t0LmlkXT10LHQuc2V0UGFyZW50KHRoaXMpLHZvaWQgMCE9PXQuZGF0YS5zdWJncm91cCYmKHZvaWQgMD09PXRoaXMuc3ViZ3JvdXBzW3QuZGF0YS5zdWJncm91cF0mJih0aGlzLnN1Ymdyb3Vwc1t0LmRhdGEuc3ViZ3JvdXBdPXtoZWlnaHQ6MCx2aXNpYmxlOiExLGluZGV4OnRoaXMuc3ViZ3JvdXBJbmRleCxpdGVtczpbXX0sdGhpcy5zdWJncm91cEluZGV4KyspLHRoaXMuc3ViZ3JvdXBzW3QuZGF0YS5zdWJncm91cF0uaXRlbXMucHVzaCh0KSksdGhpcy5vcmRlclN1Ymdyb3VwcygpLC0xPT10aGlzLnZpc2libGVJdGVtcy5pbmRleE9mKHQpKXt2YXIgZT10aGlzLml0ZW1TZXQuYm9keS5yYW5nZTt0aGlzLl9jaGVja0lmVmlzaWJsZSh0LHRoaXMudmlzaWJsZUl0ZW1zLGUpfX0sby5wcm90b3R5cGUub3JkZXJTdWJncm91cHM9ZnVuY3Rpb24oKXtpZih2b2lkIDAhPT10aGlzLnN1Ymdyb3VwT3JkZXJlcil7dmFyIHQ9W107aWYoInN0cmluZyI9PXR5cGVvZiB0aGlzLnN1Ymdyb3VwT3JkZXJlcil7Zm9yKHZhciBlIGluIHRoaXMuc3ViZ3JvdXBzKXQucHVzaCh7c3ViZ3JvdXA6ZSxzb3J0RmllbGQ6dGhpcy5zdWJncm91cHNbZV0uaXRlbXNbMF0uZGF0YVt0aGlzLnN1Ymdyb3VwT3JkZXJlcl19KTt0LnNvcnQoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5zb3J0RmllbGQtZS5zb3J0RmllbGR9KX1lbHNlIGlmKCJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLnN1Ymdyb3VwT3JkZXJlcil7Zm9yKHZhciBlIGluIHRoaXMuc3ViZ3JvdXBzKXQucHVzaCh0aGlzLnN1Ymdyb3Vwc1tlXS5pdGVtc1swXS5kYXRhKTt0LnNvcnQodGhpcy5zdWJncm91cE9yZGVyZXIpfWlmKHQubGVuZ3RoPjApZm9yKHZhciBpPTA7aTx0Lmxlbmd0aDtpKyspdGhpcy5zdWJncm91cHNbdFtpXS5zdWJncm91cF0uaW5kZXg9aX19LG8ucHJvdG90eXBlLnJlc2V0U3ViZ3JvdXBzPWZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHRoaXMuc3ViZ3JvdXBzKXRoaXMuc3ViZ3JvdXBzLmhhc093blByb3BlcnR5KHQpJiYodGhpcy5zdWJncm91cHNbdF0udmlzaWJsZT0hMSl9LG8ucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbih0KXtkZWxldGUgdGhpcy5pdGVtc1t0LmlkXSx0LnNldFBhcmVudChudWxsKTt2YXIgZT10aGlzLnZpc2libGVJdGVtcy5pbmRleE9mKHQpO2lmKC0xIT1lJiZ0aGlzLnZpc2libGVJdGVtcy5zcGxpY2UoZSwxKSx2b2lkIDAhPT10LmRhdGEuc3ViZ3JvdXApe3ZhciBpPXRoaXMuc3ViZ3JvdXBzW3QuZGF0YS5zdWJncm91cF07aWYoaSl7dmFyIG89aS5pdGVtcy5pbmRleE9mKHQpO2kuaXRlbXMuc3BsaWNlKG8sMSl9fX0sby5wcm90b3R5cGUucmVtb3ZlRnJvbURhdGFTZXQ9ZnVuY3Rpb24odCl7dGhpcy5pdGVtU2V0LnJlbW92ZUl0ZW0odC5pZCl9LG8ucHJvdG90eXBlLm9yZGVyPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PW4udG9BcnJheSh0aGlzLml0ZW1zKSxlPVtdLGk9W10sbz0wO288dC5sZW5ndGg7bysrKXZvaWQgMCE9PXRbb10uZGF0YS5lbmQmJmkucHVzaCh0W29dKSxlLnB1c2godFtvXSk7dGhpcy5vcmRlcmVkSXRlbXM9e2J5U3RhcnQ6ZSxieUVuZDppfSxzLm9yZGVyQnlTdGFydCh0aGlzLm9yZGVyZWRJdGVtcy5ieVN0YXJ0KSxzLm9yZGVyQnlFbmQodGhpcy5vcmRlcmVkSXRlbXMuYnlFbmQpfSxvLnByb3RvdHlwZS5fdXBkYXRlVmlzaWJsZUl0ZW1zPWZ1bmN0aW9uKHQsZSxpKXt2YXIgbyxzLHI9W10sYT17fSxoPShpLmVuZC1pLnN0YXJ0KS80LGQ9aS5zdGFydC1oLGw9aS5lbmQraCx1PWZ1bmN0aW9uKHQpe3JldHVybiBkPnQ/LTE6bD49dD8wOjF9O2lmKGUubGVuZ3RoPjApZm9yKHM9MDtzPGUubGVuZ3RoO3MrKyl0aGlzLl9jaGVja0lmVmlzaWJsZVdpdGhSZWZlcmVuY2UoZVtzXSxyLGEsaSk7dmFyIGM9bi5iaW5hcnlTZWFyY2hDdXN0b20odC5ieVN0YXJ0LHUsImRhdGEiLCJzdGFydCIpO2lmKHRoaXMuX3RyYWNlVmlzaWJsZShjLHQuYnlTdGFydCxyLGEsZnVuY3Rpb24odCl7cmV0dXJuIHQuZGF0YS5zdGFydDxkfHx0LmRhdGEuc3RhcnQ+bH0pLDE9PXRoaXMuY2hlY2tSYW5nZWRJdGVtcylmb3IodGhpcy5jaGVja1JhbmdlZEl0ZW1zPSExLHM9MDtzPHQuYnlFbmQubGVuZ3RoO3MrKyl0aGlzLl9jaGVja0lmVmlzaWJsZVdpdGhSZWZlcmVuY2UodC5ieUVuZFtzXSxyLGEsaSk7ZWxzZXt2YXIgcD1uLmJpbmFyeVNlYXJjaEN1c3RvbSh0LmJ5RW5kLHUsImRhdGEiLCJlbmQiKTt0aGlzLl90cmFjZVZpc2libGUocCx0LmJ5RW5kLHIsYSxmdW5jdGlvbih0KXtyZXR1cm4gdC5kYXRhLmVuZDxkfHx0LmRhdGEuZW5kPmx9KX1mb3Iocz0wO3M8ci5sZW5ndGg7cysrKW89cltzXSxvLmRpc3BsYXllZHx8by5zaG93KCksby5yZXBvc2l0aW9uWCgpO3JldHVybiByfSxvLnByb3RvdHlwZS5fdHJhY2VWaXNpYmxlPWZ1bmN0aW9uKHQsZSxpLG8sbil7dmFyIHMscjtpZigtMSE9dCl7Zm9yKHI9dDtyPj0wJiYocz1lW3JdLCFuKHMpKTtyLS0pdm9pZCAwPT09b1tzLmlkXSYmKG9bcy5pZF09ITAsaS5wdXNoKHMpKTtmb3Iocj10KzE7cjxlLmxlbmd0aCYmKHM9ZVtyXSwhbihzKSk7cisrKXZvaWQgMD09PW9bcy5pZF0mJihvW3MuaWRdPSEwLGkucHVzaChzKSl9fSxvLnByb3RvdHlwZS5fY2hlY2tJZlZpc2libGU9ZnVuY3Rpb24odCxlLGkpe3QuaXNWaXNpYmxlKGkpPyh0LmRpc3BsYXllZHx8dC5zaG93KCksdC5yZXBvc2l0aW9uWCgpLGUucHVzaCh0KSk6dC5kaXNwbGF5ZWQmJnQuaGlkZSgpfSxvLnByb3RvdHlwZS5fY2hlY2tJZlZpc2libGVXaXRoUmVmZXJlbmNlPWZ1bmN0aW9uKHQsZSxpLG8pe3QuaXNWaXNpYmxlKG8pP3ZvaWQgMD09PWlbdC5pZF0mJihpW3QuaWRdPSEwLGUucHVzaCh0KSk6dC5kaXNwbGF5ZWQmJnQuaGlkZSgpfSx0LmV4cG9ydHM9b30sZnVuY3Rpb24odCxlKXt2YXIgaT0uMDAxO2Uub3JkZXJCeVN0YXJ0PWZ1bmN0aW9uKHQpe3Quc29ydChmdW5jdGlvbih0LGUpe3JldHVybiB0LmRhdGEuc3RhcnQtZS5kYXRhLnN0YXJ0fSl9LGUub3JkZXJCeUVuZD1mdW5jdGlvbih0KXt0LnNvcnQoZnVuY3Rpb24odCxlKXt2YXIgaT0iZW5kImluIHQuZGF0YT90LmRhdGEuZW5kOnQuZGF0YS5zdGFydCxvPSJlbmQiaW4gZS5kYXRhP2UuZGF0YS5lbmQ6ZS5kYXRhLnN0YXJ0O3JldHVybiBpLW99KX0sZS5zdGFjaz1mdW5jdGlvbih0LGksbyl7dmFyIG4scztpZihvKWZvcihuPTAscz10Lmxlbmd0aDtzPm47bisrKXRbbl0udG9wPW51bGw7Zm9yKG49MCxzPXQubGVuZ3RoO3M+bjtuKyspe3ZhciByPXRbbl07aWYoci5zdGFjayYmbnVsbD09PXIudG9wKXtyLnRvcD1pLmF4aXM7ZG97Zm9yKHZhciBhPW51bGwsaD0wLGQ9dC5sZW5ndGg7ZD5oO2grKyl7dmFyIGw9dFtoXTtpZihudWxsIT09bC50b3AmJmwhPT1yJiZsLnN0YWNrJiZlLmNvbGxpc2lvbihyLGwsaS5pdGVtKSl7YT1sO2JyZWFrfX1udWxsIT1hJiYoci50b3A9YS50b3ArYS5oZWlnaHQraS5pdGVtLnZlcnRpY2FsKX13aGlsZShhKX19fSxlLm5vc3RhY2s9ZnVuY3Rpb24odCxlLGkpe3ZhciBvLG4scztmb3Iobz0wLG49dC5sZW5ndGg7bj5vO28rKylpZih2b2lkIDAhPT10W29dLmRhdGEuc3ViZ3JvdXApe3M9ZS5heGlzO2Zvcih2YXIgciBpbiBpKWkuaGFzT3duUHJvcGVydHkocikmJjE9PWlbcl0udmlzaWJsZSYmaVtyXS5pbmRleDxpW3Rbb10uZGF0YS5zdWJncm91cF0uaW5kZXgmJihzKz1pW3JdLmhlaWdodCtlLml0ZW0udmVydGljYWwpO3Rbb10udG9wPXN9ZWxzZSB0W29dLnRvcD1lLmF4aXN9LGUuY29sbGlzaW9uPWZ1bmN0aW9uKHQsZSxvKXtyZXR1cm4gdC5sZWZ0LW8uaG9yaXpvbnRhbCtpPGUubGVmdCtlLndpZHRoJiZ0LmxlZnQrdC53aWR0aCtvLmhvcml6b250YWwtaT5lLmxlZnQmJnQudG9wLW8udmVydGljYWwraTxlLnRvcCtlLmhlaWdodCYmdC50b3ArdC5oZWlnaHQrby52ZXJ0aWNhbC1pPmUudG9wfX0sZnVuY3Rpb24odCxlLGkpe2Z1bmN0aW9uIG8odCxlLGkpe2lmKHRoaXMucHJvcHM9e2NvbnRlbnQ6e3dpZHRoOjB9fSx0aGlzLm92ZXJmbG93PSExLHQpe2lmKHZvaWQgMD09dC5zdGFydCl0aHJvdyBuZXcgRXJyb3IoJ1Byb3BlcnR5ICJzdGFydCIgbWlzc2luZyBpbiBpdGVtICcrdC5pZCk7aWYodm9pZCAwPT10LmVuZCl0aHJvdyBuZXcgRXJyb3IoJ1Byb3BlcnR5ICJlbmQiIG1pc3NpbmcgaW4gaXRlbSAnK3QuaWQpfW4uY2FsbCh0aGlzLHQsZSxpKX12YXIgbj0oaSgzKSxpKDIpKTtvLnByb3RvdHlwZT1uZXcgbihudWxsLG51bGwsbnVsbCksby5wcm90b3R5cGUuYmFzZUNsYXNzTmFtZT0idmlzLWl0ZW0gdmlzLXJhbmdlIixvLnByb3RvdHlwZS5pc1Zpc2libGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGF0YS5zdGFydDx0LmVuZCYmdGhpcy5kYXRhLmVuZD50LnN0YXJ0fSxvLnByb3RvdHlwZS5yZWRyYXc9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmRvbTtpZih0fHwodGhpcy5kb209e30sdD10aGlzLmRvbSx0LmJveD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0LmZyYW1lPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHQuZnJhbWUuY2xhc3NOYW1lPSJ2aXMtaXRlbS1vdmVyZmxvdyIsdC5ib3guYXBwZW5kQ2hpbGQodC5mcmFtZSksdC5jb250ZW50PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHQuY29udGVudC5jbGFzc05hbWU9InZpcy1pdGVtLWNvbnRlbnQiLHQuZnJhbWUuYXBwZW5kQ2hpbGQodC5jb250ZW50KSx0LmJveFsidGltZWxpbmUtaXRlbSJdPXRoaXMsdGhpcy5kaXJ0eT0hMCksIXRoaXMucGFyZW50KXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHJlZHJhdyBpdGVtOiBubyBwYXJlbnQgYXR0YWNoZWQiKTtpZighdC5ib3gucGFyZW50Tm9kZSl7dmFyIGU9dGhpcy5wYXJlbnQuZG9tLmZvcmVncm91bmQ7aWYoIWUpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgcmVkcmF3IGl0ZW06IHBhcmVudCBoYXMgbm8gZm9yZWdyb3VuZCBjb250YWluZXIgZWxlbWVudCIpO2UuYXBwZW5kQ2hpbGQodC5ib3gpfWlmKHRoaXMuZGlzcGxheWVkPSEwLHRoaXMuZGlydHkpe3RoaXMuX3VwZGF0ZUNvbnRlbnRzKHRoaXMuZG9tLmNvbnRlbnQpLHRoaXMuX3VwZGF0ZVRpdGxlKHRoaXMuZG9tLmJveCksdGhpcy5fdXBkYXRlRGF0YUF0dHJpYnV0ZXModGhpcy5kb20uYm94KSx0aGlzLl91cGRhdGVTdHlsZSh0aGlzLmRvbS5ib3gpO3ZhciBpPSh0aGlzLm9wdGlvbnMuZWRpdGFibGUudXBkYXRlVGltZXx8dGhpcy5vcHRpb25zLmVkaXRhYmxlLnVwZGF0ZUdyb3VwfHx0aGlzLmVkaXRhYmxlPT09ITApJiZ0aGlzLmVkaXRhYmxlIT09ITEsbz0odGhpcy5kYXRhLmNsYXNzTmFtZT8iICIrdGhpcy5kYXRhLmNsYXNzTmFtZToiIikrKHRoaXMuc2VsZWN0ZWQ/IiB2aXMtc2VsZWN0ZWQiOiIiKSsoaT8iIHZpcy1lZGl0YWJsZSI6IiB2aXMtcmVhZG9ubHkiKTt0LmJveC5jbGFzc05hbWU9dGhpcy5iYXNlQ2xhc3NOYW1lK28sdGhpcy5vdmVyZmxvdz0iaGlkZGVuIiE9PXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQuZnJhbWUpLm92ZXJmbG93LHRoaXMuZG9tLmNvbnRlbnQuc3R5bGUubWF4V2lkdGg9Im5vbmUiLHRoaXMucHJvcHMuY29udGVudC53aWR0aD10aGlzLmRvbS5jb250ZW50Lm9mZnNldFdpZHRoLHRoaXMuaGVpZ2h0PXRoaXMuZG9tLmJveC5vZmZzZXRIZWlnaHQsdGhpcy5kb20uY29udGVudC5zdHlsZS5tYXhXaWR0aD0iIix0aGlzLmRpcnR5PSExfXRoaXMuX3JlcGFpbnREZWxldGVCdXR0b24odC5ib3gpLHRoaXMuX3JlcGFpbnREcmFnTGVmdCgpLHRoaXMuX3JlcGFpbnREcmFnUmlnaHQoKX0sby5wcm90b3R5cGUuc2hvdz1mdW5jdGlvbigpe3RoaXMuZGlzcGxheWVkfHx0aGlzLnJlZHJhdygpfSxvLnByb3RvdHlwZS5oaWRlPWZ1bmN0aW9uKCl7aWYodGhpcy5kaXNwbGF5ZWQpe3ZhciB0PXRoaXMuZG9tLmJveDt0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KSx0aGlzLmRpc3BsYXllZD0hMX19LG8ucHJvdG90eXBlLnJlcG9zaXRpb25YPWZ1bmN0aW9uKHQpe3ZhciBlLGksbz10aGlzLnBhcmVudC53aWR0aCxuPXRoaXMuY29udmVyc2lvbi50b1NjcmVlbih0aGlzLmRhdGEuc3RhcnQpLHM9dGhpcy5jb252ZXJzaW9uLnRvU2NyZWVuKHRoaXMuZGF0YS5lbmQpOyh2b2lkIDA9PT10fHx0PT09ITApJiYoLW8+biYmKG49LW8pLHM+MipvJiYocz0yKm8pKTt2YXIgcj1NYXRoLm1heChzLW4sMSk7c3dpdGNoKHRoaXMub3ZlcmZsb3c/KHRoaXMubGVmdD1uLHRoaXMud2lkdGg9cit0aGlzLnByb3BzLmNvbnRlbnQud2lkdGgsaT10aGlzLnByb3BzLmNvbnRlbnQud2lkdGgpOih0aGlzLmxlZnQ9bix0aGlzLndpZHRoPXIsaT1NYXRoLm1pbihzLW4sdGhpcy5wcm9wcy5jb250ZW50LndpZHRoKSksdGhpcy5kb20uYm94LnN0eWxlLmxlZnQ9dGhpcy5sZWZ0KyJweCIsdGhpcy5kb20uYm94LnN0eWxlLndpZHRoPXIrInB4Iix0aGlzLm9wdGlvbnMuYWxpZ24pe2Nhc2UibGVmdCI6dGhpcy5kb20uY29udGVudC5zdHlsZS5sZWZ0PSIwIjticmVhaztjYXNlInJpZ2h0Ijp0aGlzLmRvbS5jb250ZW50LnN0eWxlLmxlZnQ9TWF0aC5tYXgoci1pLDApKyJweCI7YnJlYWs7Y2FzZSJjZW50ZXIiOnRoaXMuZG9tLmNvbnRlbnQuc3R5bGUubGVmdD1NYXRoLm1heCgoci1pKS8yLDApKyJweCI7YnJlYWs7ZGVmYXVsdDplPXRoaXMub3ZlcmZsb3c/cz4wP01hdGgubWF4KC1uLDApOi1pOjA+bj8tbjowLHRoaXMuZG9tLmNvbnRlbnQuc3R5bGUubGVmdD1lKyJweCJ9fSxvLnByb3RvdHlwZS5yZXBvc2l0aW9uWT1mdW5jdGlvbigpe3ZhciB0PXRoaXMub3B0aW9ucy5vcmllbnRhdGlvbi5pdGVtLGU9dGhpcy5kb20uYm94OyJ0b3AiPT10P2Uuc3R5bGUudG9wPXRoaXMudG9wKyJweCI6ZS5zdHlsZS50b3A9dGhpcy5wYXJlbnQuaGVpZ2h0LXRoaXMudG9wLXRoaXMuaGVpZ2h0KyJweCJ9LG8ucHJvdG90eXBlLl9yZXBhaW50RHJhZ0xlZnQ9ZnVuY3Rpb24oKXtpZih0aGlzLnNlbGVjdGVkJiZ0aGlzLm9wdGlvbnMuZWRpdGFibGUudXBkYXRlVGltZSYmIXRoaXMuZG9tLmRyYWdMZWZ0KXt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt0LmNsYXNzTmFtZT0idmlzLWRyYWctbGVmdCIsdC5kcmFnTGVmdEl0ZW09dGhpcyx0aGlzLmRvbS5ib3guYXBwZW5kQ2hpbGQodCksdGhpcy5kb20uZHJhZ0xlZnQ9dH1lbHNlIXRoaXMuc2VsZWN0ZWQmJnRoaXMuZG9tLmRyYWdMZWZ0JiYodGhpcy5kb20uZHJhZ0xlZnQucGFyZW50Tm9kZSYmdGhpcy5kb20uZHJhZ0xlZnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmRvbS5kcmFnTGVmdCksdGhpcy5kb20uZHJhZ0xlZnQ9bnVsbCl9LG8ucHJvdG90eXBlLl9yZXBhaW50RHJhZ1JpZ2h0PWZ1bmN0aW9uKCl7aWYodGhpcy5zZWxlY3RlZCYmdGhpcy5vcHRpb25zLmVkaXRhYmxlLnVwZGF0ZVRpbWUmJiF0aGlzLmRvbS5kcmFnUmlnaHQpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3QuY2xhc3NOYW1lPSJ2aXMtZHJhZy1yaWdodCIsdC5kcmFnUmlnaHRJdGVtPXRoaXMsdGhpcy5kb20uYm94LmFwcGVuZENoaWxkKHQpLHRoaXMuZG9tLmRyYWdSaWdodD10fWVsc2UhdGhpcy5zZWxlY3RlZCYmdGhpcy5kb20uZHJhZ1JpZ2h0JiYodGhpcy5kb20uZHJhZ1JpZ2h0LnBhcmVudE5vZGUmJnRoaXMuZG9tLmRyYWdSaWdodC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuZG9tLmRyYWdSaWdodCksdGhpcy5kb20uZHJhZ1JpZ2h0PW51bGwpfSx0LmV4cG9ydHM9b30sZnVuY3Rpb24odCxlLGkpe2Z1bmN0aW9uIG8odCxlLGksbil7dGhpcy5jdXJyZW50PW5ldyBEYXRlLHRoaXMuX3N0YXJ0PW5ldyBEYXRlLHRoaXMuX2VuZD1uZXcgRGF0ZSx0aGlzLmF1dG9TY2FsZT0hMCx0aGlzLnNjYWxlPSJkYXkiLHRoaXMuc3RlcD0xLHRoaXMuc2V0UmFuZ2UodCxlLGkpLHRoaXMuc3dpdGNoZWREYXk9ITEsdGhpcy5zd2l0Y2hlZE1vbnRoPSExLHRoaXMuc3dpdGNoZWRZZWFyPSExLHRoaXMuaGlkZGVuRGF0ZXM9bix2b2lkIDA9PT1uJiYodGhpcy5oaWRkZW5EYXRlcz1bXSksdGhpcy5mb3JtYXQ9by5GT1JNQVR9dmFyIG49aSg4KSxzPWkoMzEpLHI9aSg3KTtvLkZPUk1BVD17bWlub3JMYWJlbHM6e21pbGxpc2Vjb25kOiJTU1MiLHNlY29uZDoicyIsbWludXRlOiJISDptbSIsaG91cjoiSEg6bW0iLHdlZWtkYXk6ImRkZCBEIixkYXk6IkQiLG1vbnRoOiJNTU0iLHllYXI6IllZWVkifSxtYWpvckxhYmVsczp7bWlsbGlzZWNvbmQ6IkhIOm1tOnNzIixzZWNvbmQ6IkQgTU1NTSBISDptbSIsbWludXRlOiJkZGQgRCBNTU1NIixob3VyOiJkZGQgRCBNTU1NIix3ZWVrZGF5OiJNTU1NIFlZWVkiLGRheToiTU1NTSBZWVlZIixtb250aDoiWVlZWSIseWVhcjoiIn19LG8ucHJvdG90eXBlLnNldEZvcm1hdD1mdW5jdGlvbih0KXt2YXIgZT1yLmRlZXBFeHRlbmQoe30sby5GT1JNQVQpO3RoaXMuZm9ybWF0PXIuZGVlcEV4dGVuZChlLHQpfSxvLnByb3RvdHlwZS5zZXRSYW5nZT1mdW5jdGlvbih0LGUsaSl7aWYoISh0IGluc3RhbmNlb2YgRGF0ZSYmZSBpbnN0YW5jZW9mIERhdGUpKXRocm93Ik5vIGxlZ2FsIHN0YXJ0IG9yIGVuZCBkYXRlIGluIG1ldGhvZCBzZXRSYW5nZSI7dGhpcy5fc3RhcnQ9dm9pZCAwIT10P25ldyBEYXRlKHQudmFsdWVPZigpKTpuZXcgRGF0ZSx0aGlzLl9lbmQ9dm9pZCAwIT1lP25ldyBEYXRlKGUudmFsdWVPZigpKTpuZXcgRGF0ZSx0aGlzLmF1dG9TY2FsZSYmdGhpcy5zZXRNaW5pbXVtU3RlcChpKX0sby5wcm90b3R5cGUuZmlyc3Q9ZnVuY3Rpb24oKXt0aGlzLmN1cnJlbnQ9bmV3IERhdGUodGhpcy5fc3RhcnQudmFsdWVPZigpKSx0aGlzLnJvdW5kVG9NaW5vcigpfSxvLnByb3RvdHlwZS5yb3VuZFRvTWlub3I9ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5zY2FsZSl7Y2FzZSJ5ZWFyIjp0aGlzLmN1cnJlbnQuc2V0RnVsbFllYXIodGhpcy5zdGVwKk1hdGguZmxvb3IodGhpcy5jdXJyZW50LmdldEZ1bGxZZWFyKCkvdGhpcy5zdGVwKSksdGhpcy5jdXJyZW50LnNldE1vbnRoKDApO2Nhc2UibW9udGgiOnRoaXMuY3VycmVudC5zZXREYXRlKDEpO2Nhc2UiZGF5IjpjYXNlIndlZWtkYXkiOnRoaXMuY3VycmVudC5zZXRIb3VycygwKTtjYXNlImhvdXIiOnRoaXMuY3VycmVudC5zZXRNaW51dGVzKDApO2Nhc2UibWludXRlIjp0aGlzLmN1cnJlbnQuc2V0U2Vjb25kcygwKTtjYXNlInNlY29uZCI6dGhpcy5jdXJyZW50LnNldE1pbGxpc2Vjb25kcygwKX1pZigxIT10aGlzLnN0ZXApc3dpdGNoKHRoaXMuc2NhbGUpe2Nhc2UibWlsbGlzZWNvbmQiOnRoaXMuY3VycmVudC5zZXRNaWxsaXNlY29uZHModGhpcy5jdXJyZW50LmdldE1pbGxpc2Vjb25kcygpLXRoaXMuY3VycmVudC5nZXRNaWxsaXNlY29uZHMoKSV0aGlzLnN0ZXApO2JyZWFrO2Nhc2Uic2Vjb25kIjp0aGlzLmN1cnJlbnQuc2V0U2Vjb25kcyh0aGlzLmN1cnJlbnQuZ2V0U2Vjb25kcygpLXRoaXMuY3VycmVudC5nZXRTZWNvbmRzKCkldGhpcy5zdGVwKTticmVhaztjYXNlIm1pbnV0ZSI6dGhpcy5jdXJyZW50LnNldE1pbnV0ZXModGhpcy5jdXJyZW50LmdldE1pbnV0ZXMoKS10aGlzLmN1cnJlbnQuZ2V0TWludXRlcygpJXRoaXMuc3RlcCk7YnJlYWs7Y2FzZSJob3VyIjp0aGlzLmN1cnJlbnQuc2V0SG91cnModGhpcy5jdXJyZW50LmdldEhvdXJzKCktdGhpcy5jdXJyZW50LmdldEhvdXJzKCkldGhpcy5zdGVwKTticmVhaztjYXNlIndlZWtkYXkiOmNhc2UiZGF5Ijp0aGlzLmN1cnJlbnQuc2V0RGF0ZSh0aGlzLmN1cnJlbnQuZ2V0RGF0ZSgpLTEtKHRoaXMuY3VycmVudC5nZXREYXRlKCktMSkldGhpcy5zdGVwKzEpO2JyZWFrO2Nhc2UibW9udGgiOnRoaXMuY3VycmVudC5zZXRNb250aCh0aGlzLmN1cnJlbnQuZ2V0TW9udGgoKS10aGlzLmN1cnJlbnQuZ2V0TW9udGgoKSV0aGlzLnN0ZXApO2JyZWFrO2Nhc2UieWVhciI6dGhpcy5jdXJyZW50LnNldEZ1bGxZZWFyKHRoaXMuY3VycmVudC5nZXRGdWxsWWVhcigpLXRoaXMuY3VycmVudC5nZXRGdWxsWWVhcigpJXRoaXMuc3RlcCl9fSxvLnByb3RvdHlwZS5oYXNOZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY3VycmVudC52YWx1ZU9mKCk8PXRoaXMuX2VuZC52YWx1ZU9mKCl9LG8ucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmN1cnJlbnQudmFsdWVPZigpO2lmKHRoaXMuY3VycmVudC5nZXRNb250aCgpPDYpc3dpdGNoKHRoaXMuc2NhbGUpe2Nhc2UibWlsbGlzZWNvbmQiOnRoaXMuY3VycmVudD1uZXcgRGF0ZSh0aGlzLmN1cnJlbnQudmFsdWVPZigpK3RoaXMuc3RlcCk7YnJlYWs7Y2FzZSJzZWNvbmQiOnRoaXMuY3VycmVudD1uZXcgRGF0ZSh0aGlzLmN1cnJlbnQudmFsdWVPZigpKzFlMyp0aGlzLnN0ZXApO2JyZWFrO2Nhc2UibWludXRlIjp0aGlzLmN1cnJlbnQ9bmV3IERhdGUodGhpcy5jdXJyZW50LnZhbHVlT2YoKSsxZTMqdGhpcy5zdGVwKjYwKTticmVhaztjYXNlImhvdXIiOnRoaXMuY3VycmVudD1uZXcgRGF0ZSh0aGlzLmN1cnJlbnQudmFsdWVPZigpKzFlMyp0aGlzLnN0ZXAqNjAqNjApO3ZhciBlPXRoaXMuY3VycmVudC5nZXRIb3VycygpO3RoaXMuY3VycmVudC5zZXRIb3VycyhlLWUldGhpcy5zdGVwKTticmVhaztjYXNlIndlZWtkYXkiOmNhc2UiZGF5Ijp0aGlzLmN1cnJlbnQuc2V0RGF0ZSh0aGlzLmN1cnJlbnQuZ2V0RGF0ZSgpK3RoaXMuc3RlcCk7YnJlYWs7Y2FzZSJtb250aCI6dGhpcy5jdXJyZW50LnNldE1vbnRoKHRoaXMuY3VycmVudC5nZXRNb250aCgpK3RoaXMuc3RlcCk7YnJlYWs7Y2FzZSJ5ZWFyIjp0aGlzLmN1cnJlbnQuc2V0RnVsbFllYXIodGhpcy5jdXJyZW50LmdldEZ1bGxZZWFyKCkrdGhpcy5zdGVwKX1lbHNlIHN3aXRjaCh0aGlzLnNjYWxlKXtjYXNlIm1pbGxpc2Vjb25kIjp0aGlzLmN1cnJlbnQ9bmV3IERhdGUodGhpcy5jdXJyZW50LnZhbHVlT2YoKSt0aGlzLnN0ZXApO2JyZWFrO2Nhc2Uic2Vjb25kIjp0aGlzLmN1cnJlbnQuc2V0U2Vjb25kcyh0aGlzLmN1cnJlbnQuZ2V0U2Vjb25kcygpK3RoaXMuc3RlcCk7YnJlYWs7Y2FzZSJtaW51dGUiOnRoaXMuY3VycmVudC5zZXRNaW51dGVzKHRoaXMuY3VycmVudC5nZXRNaW51dGVzKCkrdGhpcy5zdGVwKTticmVhaztjYXNlImhvdXIiOnRoaXMuY3VycmVudC5zZXRIb3Vycyh0aGlzLmN1cnJlbnQuZ2V0SG91cnMoKSt0aGlzLnN0ZXApO2JyZWFrO2Nhc2Uid2Vla2RheSI6Y2FzZSJkYXkiOnRoaXMuY3VycmVudC5zZXREYXRlKHRoaXMuY3VycmVudC5nZXREYXRlKCkrdGhpcy5zdGVwKTticmVhaztjYXNlIm1vbnRoIjp0aGlzLmN1cnJlbnQuc2V0TW9udGgodGhpcy5jdXJyZW50LmdldE1vbnRoKCkrdGhpcy5zdGVwKTticmVhaztjYXNlInllYXIiOnRoaXMuY3VycmVudC5zZXRGdWxsWWVhcih0aGlzLmN1cnJlbnQuZ2V0RnVsbFllYXIoKSt0aGlzLnN0ZXApfWlmKDEhPXRoaXMuc3RlcClzd2l0Y2godGhpcy5zY2FsZSl7Y2FzZSJtaWxsaXNlY29uZCI6dGhpcy5jdXJyZW50LmdldE1pbGxpc2Vjb25kcygpPHRoaXMuc3RlcCYmdGhpcy5jdXJyZW50LnNldE1pbGxpc2Vjb25kcygwKTticmVhaztjYXNlInNlY29uZCI6dGhpcy5jdXJyZW50LmdldFNlY29uZHMoKTx0aGlzLnN0ZXAmJnRoaXMuY3VycmVudC5zZXRTZWNvbmRzKDApO2JyZWFrO2Nhc2UibWludXRlIjp0aGlzLmN1cnJlbnQuZ2V0TWludXRlcygpPHRoaXMuc3RlcCYmdGhpcy5jdXJyZW50LnNldE1pbnV0ZXMoMCk7YnJlYWs7Y2FzZSJob3VyIjp0aGlzLmN1cnJlbnQuZ2V0SG91cnMoKTx0aGlzLnN0ZXAmJnRoaXMuY3VycmVudC5zZXRIb3VycygwKTticmVhaztjYXNlIndlZWtkYXkiOmNhc2UiZGF5Ijp0aGlzLmN1cnJlbnQuZ2V0RGF0ZSgpPHRoaXMuc3RlcCsxJiZ0aGlzLmN1cnJlbnQuc2V0RGF0ZSgxKTticmVhaztjYXNlIm1vbnRoIjp0aGlzLmN1cnJlbnQuZ2V0TW9udGgoKTx0aGlzLnN0ZXAmJnRoaXMuY3VycmVudC5zZXRNb250aCgwKTticmVhaztjYXNlInllYXIiOn10aGlzLmN1cnJlbnQudmFsdWVPZigpPT10JiYodGhpcy5jdXJyZW50PW5ldyBEYXRlKHRoaXMuX2VuZC52YWx1ZU9mKCkpKSxzLnN0ZXBPdmVySGlkZGVuRGF0ZXModGhpcyx0KX0sby5wcm90b3R5cGUuZ2V0Q3VycmVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmN1cnJlbnR9LG8ucHJvdG90eXBlLnNldFNjYWxlPWZ1bmN0aW9uKHQpe3QmJiJzdHJpbmciPT10eXBlb2YgdC5zY2FsZSYmKHRoaXMuc2NhbGU9dC5zY2FsZSx0aGlzLnN0ZXA9dC5zdGVwPjA/dC5zdGVwOjEsdGhpcy5hdXRvU2NhbGU9ITEpfSxvLnByb3RvdHlwZS5zZXRBdXRvU2NhbGU9ZnVuY3Rpb24odCl7dGhpcy5hdXRvU2NhbGU9dH0sby5wcm90b3R5cGUuc2V0TWluaW11bVN0ZXA9ZnVuY3Rpb24odCl7aWYodm9pZCAwIT10KXt2YXIgZT0zMTEwNGU2LGk9MjU5MmU2LG89ODY0ZTUsbj0zNmU1LHM9NmU0LHI9MWUzLGE9MTsxZTMqZT50JiYodGhpcy5zY2FsZT0ieWVhciIsdGhpcy5zdGVwPTFlMyksNTAwKmU+dCYmKHRoaXMuc2NhbGU9InllYXIiLHRoaXMuc3RlcD01MDApLDEwMCplPnQmJih0aGlzLnNjYWxlPSJ5ZWFyIix0aGlzLnN0ZXA9MTAwKSw1MCplPnQmJih0aGlzLnNjYWxlPSJ5ZWFyIix0aGlzLnN0ZXA9NTApLDEwKmU+dCYmKHRoaXMuc2NhbGU9InllYXIiLHRoaXMuc3RlcD0xMCksNSplPnQmJih0aGlzLnNjYWxlPSJ5ZWFyIix0aGlzLnN0ZXA9NSksZT50JiYodGhpcy5zY2FsZT0ieWVhciIsdGhpcy5zdGVwPTEpLDMqaT50JiYodGhpcy5zY2FsZT0ibW9udGgiLHRoaXMuc3RlcD0zKSxpPnQmJih0aGlzLnNjYWxlPSJtb250aCIsdGhpcy5zdGVwPTEpLDUqbz50JiYodGhpcy5zY2FsZT0iZGF5Iix0aGlzLnN0ZXA9NSksMipvPnQmJih0aGlzLnNjYWxlPSJkYXkiLHRoaXMuc3RlcD0yKSxvPnQmJih0aGlzLnNjYWxlPSJkYXkiLHRoaXMuc3RlcD0xKSxvLzI+dCYmKHRoaXMuc2NhbGU9IndlZWtkYXkiLHRoaXMuc3RlcD0xKSw0Km4+dCYmKHRoaXMuc2NhbGU9ImhvdXIiLHRoaXMuc3RlcD00KSxuPnQmJih0aGlzLnNjYWxlPSJob3VyIix0aGlzLnN0ZXA9MSksMTUqcz50JiYodGhpcy5zY2FsZT0ibWludXRlIix0aGlzLnN0ZXA9MTUpLDEwKnM+dCYmKHRoaXMuc2NhbGU9Im1pbnV0ZSIsdGhpcy5zdGVwPTEwKSw1KnM+dCYmKHRoaXMuc2NhbGU9Im1pbnV0ZSIsdGhpcy5zdGVwPTUpLHM+dCYmKHRoaXMuc2NhbGU9Im1pbnV0ZSIsdGhpcy5zdGVwPTEpLDE1KnI+dCYmKHRoaXMuc2NhbGU9InNlY29uZCIsdGhpcy5zdGVwPTE1KSwxMCpyPnQmJih0aGlzLnNjYWxlPSJzZWNvbmQiLHRoaXMuc3RlcD0xMCksNSpyPnQmJih0aGlzLnNjYWxlPSJzZWNvbmQiLHRoaXMuc3RlcD01KSxyPnQmJih0aGlzLnNjYWxlPSJzZWNvbmQiLHRoaXMuc3RlcD0xKSwyMDAqYT50JiYodGhpcy5zY2FsZT0ibWlsbGlzZWNvbmQiLHRoaXMuc3RlcD0yMDApLDEwMCphPnQmJih0aGlzLnNjYWxlPSJtaWxsaXNlY29uZCIsdGhpcy5zdGVwPTEwMCksNTAqYT50JiYodGhpcy5zY2FsZT0ibWlsbGlzZWNvbmQiLHRoaXMuc3RlcD01MCksMTAqYT50JiYodGhpcy5zY2FsZT0ibWlsbGlzZWNvbmQiLHRoaXMuc3RlcD0xMCksNSphPnQmJih0aGlzLnNjYWxlPSJtaWxsaXNlY29uZCIsdGhpcy5zdGVwPTUpLGE+dCYmKHRoaXMuc2NhbGU9Im1pbGxpc2Vjb25kIix0aGlzLnN0ZXA9MSl9fSxvLnNuYXA9ZnVuY3Rpb24odCxlLGkpe3ZhciBvPW5ldyBEYXRlKHQudmFsdWVPZigpKTtpZigieWVhciI9PWUpe3ZhciBuPW8uZ2V0RnVsbFllYXIoKStNYXRoLnJvdW5kKG8uZ2V0TW9udGgoKS8xMik7by5zZXRGdWxsWWVhcihNYXRoLnJvdW5kKG4vaSkqaSksby5zZXRNb250aCgwKSxvLnNldERhdGUoMCksby5zZXRIb3VycygwKSxvLnNldE1pbnV0ZXMoMCksby5zZXRTZWNvbmRzKDApLG8uc2V0TWlsbGlzZWNvbmRzKDApfWVsc2UgaWYoIm1vbnRoIj09ZSlvLmdldERhdGUoKT4xNT8oby5zZXREYXRlKDEpLG8uc2V0TW9udGgoby5nZXRNb250aCgpKzEpKTpvLnNldERhdGUoMSksby5zZXRIb3VycygwKSxvLnNldE1pbnV0ZXMoMCksby5zZXRTZWNvbmRzKDApLG8uc2V0TWlsbGlzZWNvbmRzKDApO2Vsc2UgaWYoImRheSI9PWUpe3N3aXRjaChpKXtjYXNlIDU6Y2FzZSAyOm8uc2V0SG91cnMoMjQqTWF0aC5yb3VuZChvLmdldEhvdXJzKCkvMjQpKTticmVhaztkZWZhdWx0Om8uc2V0SG91cnMoMTIqTWF0aC5yb3VuZChvLmdldEhvdXJzKCkvMTIpKX1vLnNldE1pbnV0ZXMoMCksby5zZXRTZWNvbmRzKDApLG8uc2V0TWlsbGlzZWNvbmRzKDApfWVsc2UgaWYoIndlZWtkYXkiPT1lKXtzd2l0Y2goaSl7Y2FzZSA1OmNhc2UgMjpvLnNldEhvdXJzKDEyKk1hdGgucm91bmQoby5nZXRIb3VycygpLzEyKSk7YnJlYWs7ZGVmYXVsdDpvLnNldEhvdXJzKDYqTWF0aC5yb3VuZChvLmdldEhvdXJzKCkvNikpfW8uc2V0TWludXRlcygwKSxvLnNldFNlY29uZHMoMCksby5zZXRNaWxsaXNlY29uZHMoMCl9ZWxzZSBpZigiaG91ciI9PWUpe3N3aXRjaChpKXtjYXNlIDQ6by5zZXRNaW51dGVzKDYwKk1hdGgucm91bmQoby5nZXRNaW51dGVzKCkvNjApKTticmVhaztkZWZhdWx0Om8uc2V0TWludXRlcygzMCpNYXRoLnJvdW5kKG8uZ2V0TWludXRlcygpLzMwKSl9by5zZXRTZWNvbmRzKDApLG8uc2V0TWlsbGlzZWNvbmRzKDApfWVsc2UgaWYoIm1pbnV0ZSI9PWUpe3N3aXRjaChpKXtjYXNlIDE1OmNhc2UgMTA6by5zZXRNaW51dGVzKDUqTWF0aC5yb3VuZChvLmdldE1pbnV0ZXMoKS81KSksby5zZXRTZWNvbmRzKDApO2JyZWFrO2Nhc2UgNTpvLnNldFNlY29uZHMoNjAqTWF0aC5yb3VuZChvLmdldFNlY29uZHMoKS82MCkpO2JyZWFrO2RlZmF1bHQ6by5zZXRTZWNvbmRzKDMwKk1hdGgucm91bmQoby5nZXRTZWNvbmRzKCkvMzApKX1vLnNldE1pbGxpc2Vjb25kcygwKX1lbHNlIGlmKCJzZWNvbmQiPT1lKXN3aXRjaChpKXtjYXNlIDE1OmNhc2UgMTA6by5zZXRTZWNvbmRzKDUqTWF0aC5yb3VuZChvLmdldFNlY29uZHMoKS81KSksby5zZXRNaWxsaXNlY29uZHMoMCk7YnJlYWs7Y2FzZSA1Om8uc2V0TWlsbGlzZWNvbmRzKDFlMypNYXRoLnJvdW5kKG8uZ2V0TWlsbGlzZWNvbmRzKCkvMWUzKSk7YnJlYWs7ZGVmYXVsdDpvLnNldE1pbGxpc2Vjb25kcyg1MDAqTWF0aC5yb3VuZChvLmdldE1pbGxpc2Vjb25kcygpLzUwMCkpfWVsc2UgaWYoIm1pbGxpc2Vjb25kIj09ZSl7dmFyIHM9aT41P2kvMjoxO28uc2V0TWlsbGlzZWNvbmRzKE1hdGgucm91bmQoby5nZXRNaWxsaXNlY29uZHMoKS9zKSpzKX1yZXR1cm4gb30sby5wcm90b3R5cGUuaXNNYWpvcj1mdW5jdGlvbigpe2lmKDE9PXRoaXMuc3dpdGNoZWRZZWFyKXN3aXRjaCh0aGlzLnN3aXRjaGVkWWVhcj0hMSx0aGlzLnNjYWxlKXtjYXNlInllYXIiOmNhc2UibW9udGgiOmNhc2Uid2Vla2RheSI6Y2FzZSJkYXkiOmNhc2UiaG91ciI6Y2FzZSJtaW51dGUiOmNhc2Uic2Vjb25kIjpjYXNlIm1pbGxpc2Vjb25kIjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfWVsc2UgaWYoMT09dGhpcy5zd2l0Y2hlZE1vbnRoKXN3aXRjaCh0aGlzLnN3aXRjaGVkTW9udGg9ITEsdGhpcy5zY2FsZSl7Y2FzZSJ3ZWVrZGF5IjpjYXNlImRheSI6Y2FzZSJob3VyIjpjYXNlIm1pbnV0ZSI6Y2FzZSJzZWNvbmQiOmNhc2UibWlsbGlzZWNvbmQiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9ZWxzZSBpZigxPT10aGlzLnN3aXRjaGVkRGF5KXN3aXRjaCh0aGlzLnN3aXRjaGVkRGF5PSExLHRoaXMuc2NhbGUpe2Nhc2UibWlsbGlzZWNvbmQiOmNhc2Uic2Vjb25kIjpjYXNlIm1pbnV0ZSI6Y2FzZSJob3VyIjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfXN3aXRjaCh0aGlzLnNjYWxlKXtjYXNlIm1pbGxpc2Vjb25kIjpyZXR1cm4gMD09dGhpcy5jdXJyZW50LmdldE1pbGxpc2Vjb25kcygpO2Nhc2Uic2Vjb25kIjpyZXR1cm4gMD09dGhpcy5jdXJyZW50LmdldFNlY29uZHMoKTtjYXNlIm1pbnV0ZSI6cmV0dXJuIDA9PXRoaXMuY3VycmVudC5nZXRIb3VycygpJiYwPT10aGlzLmN1cnJlbnQuZ2V0TWludXRlcygpO2Nhc2UiaG91ciI6cmV0dXJuIDA9PXRoaXMuY3VycmVudC5nZXRIb3VycygpO2Nhc2Uid2Vla2RheSI6Y2FzZSJkYXkiOnJldHVybiAxPT10aGlzLmN1cnJlbnQuZ2V0RGF0ZSgpO2Nhc2UibW9udGgiOnJldHVybiAwPT10aGlzLmN1cnJlbnQuZ2V0TW9udGgoKTtjYXNlInllYXIiOnJldHVybiExO2RlZmF1bHQ6cmV0dXJuITF9fSxvLnByb3RvdHlwZS5nZXRMYWJlbE1pbm9yPWZ1bmN0aW9uKHQpe3ZvaWQgMD09dCYmKHQ9dGhpcy5jdXJyZW50KTt2YXIgZT10aGlzLmZvcm1hdC5taW5vckxhYmVsc1t0aGlzLnNjYWxlXTtyZXR1cm4gZSYmZS5sZW5ndGg+MD9uKHQpLmZvcm1hdChlKToiIn0sby5wcm90b3R5cGUuZ2V0TGFiZWxNYWpvcj1mdW5jdGlvbih0KXt2b2lkIDA9PXQmJih0PXRoaXMuY3VycmVudCk7dmFyIGU9dGhpcy5mb3JtYXQubWFqb3JMYWJlbHNbdGhpcy5zY2FsZV07cmV0dXJuIGUmJmUubGVuZ3RoPjA/bih0KS5mb3JtYXQoZSk6IiJ9LG8ucHJvdG90eXBlLmdldENsYXNzTmFtZT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7cmV0dXJuIHQvaCUyPT0wPyIgdmlzLWV2ZW4iOiIgdmlzLW9kZCJ9ZnVuY3Rpb24gZSh0KXtyZXR1cm4gdC5pc1NhbWUobmV3IERhdGUsImRheSIpPyIgdmlzLXRvZGF5Ijp0LmlzU2FtZShuKCkuYWRkKDEsImRheSIpLCJkYXkiKT8iIHZpcy10b21vcnJvdyI6dC5pc1NhbWUobigpLmFkZCgtMSwiZGF5IiksImRheSIpPyIgdmlzLXllc3RlcmRheSI6IiJ9ZnVuY3Rpb24gaSh0KXtyZXR1cm4gdC5pc1NhbWUobmV3IERhdGUsIndlZWsiKT8iIHZpcy1jdXJyZW50LXdlZWsiOiIifWZ1bmN0aW9uIG8odCl7cmV0dXJuIHQuaXNTYW1lKG5ldyBEYXRlLCJtb250aCIpPyIgdmlzLWN1cnJlbnQtbW9udGgiOiIifWZ1bmN0aW9uIHModCl7cmV0dXJuIHQuaXNTYW1lKG5ldyBEYXRlLCJ5ZWFyIik/IiB2aXMtY3VycmVudC15ZWFyIjoiIn12YXIgcj1uKHRoaXMuY3VycmVudCksYT1yLmxvY2FsZT9yLmxvY2FsZSgiZW4iKTpyLmxhbmcoImVuIiksaD10aGlzLnN0ZXA7c3dpdGNoKHRoaXMuc2NhbGUpe2Nhc2UibWlsbGlzZWNvbmQiOnJldHVybiB0KGEubWlsbGlzZWNvbmRzKCkpLnRyaW0oKTtjYXNlInNlY29uZCI6cmV0dXJuIHQoYS5zZWNvbmRzKCkpLnRyaW0oKTtjYXNlIm1pbnV0ZSI6cmV0dXJuIHQoYS5taW51dGVzKCkpLnRyaW0oKTtjYXNlImhvdXIiOnZhciBkPWEuaG91cnMoKTtyZXR1cm4gND09dGhpcy5zdGVwJiYoZD1kKyItaCIrKGQrNCkpLCJ2aXMtaCIrZCtlKGEpK3QoYS5ob3VycygpKTtjYXNlIndlZWtkYXkiOnJldHVybiJ2aXMtIithLmZvcm1hdCgiZGRkZCIpLnRvTG93ZXJDYXNlKCkrZShhKStpKGEpK3QoYS5kYXRlKCkpO2Nhc2UiZGF5Ijp2YXIgbD1hLmRhdGUoKSx1PWEuZm9ybWF0KCJNTU1NIikudG9Mb3dlckNhc2UoKTtyZXR1cm4idmlzLWRheSIrbCsiIHZpcy0iK3UrbyhhKSt0KGwtMSk7Y2FzZSJtb250aCI6cmV0dXJuInZpcy0iK2EuZm9ybWF0KCJNTU1NIikudG9Mb3dlckNhc2UoKStvKGEpK3QoYS5tb250aCgpKTtjYXNlInllYXIiOnZhciBjPWEueWVhcigpO3JldHVybiJ2aXMteWVhciIrYytzKGEpK3QoYyk7ZGVmYXVsdDpyZXR1cm4iIn19LHQuZXhwb3J0cz1vfSxmdW5jdGlvbih0LGUsaSl7ZnVuY3Rpb24gbyh0LGUsaSl7bi5jYWxsKHRoaXMsdCxlLGkpLHRoaXMud2lkdGg9MCx0aGlzLmhlaWdodD0wLHRoaXMudG9wPTAsdGhpcy5sZWZ0PTB9dmFyIG49KGkoNyksaSgzNCkpO28ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobi5wcm90b3R5cGUpLG8ucHJvdG90eXBlLnJlZHJhdz1mdW5jdGlvbih0LGUsaSl7dmFyIG89ITE7dGhpcy52aXNpYmxlSXRlbXM9dGhpcy5fdXBkYXRlVmlzaWJsZUl0ZW1zKHRoaXMub3JkZXJlZEl0ZW1zLHRoaXMudmlzaWJsZUl0ZW1zLHQpLHRoaXMud2lkdGg9dGhpcy5kb20uYmFja2dyb3VuZC5vZmZzZXRXaWR0aCx0aGlzLmRvbS5iYWNrZ3JvdW5kLnN0eWxlLmhlaWdodD0iMCI7Zm9yKHZhciBuPTAscz10aGlzLnZpc2libGVJdGVtcy5sZW5ndGg7cz5uO24rKyl7dmFyIHI9dGhpcy52aXNpYmxlSXRlbXNbbl07ci5yZXBvc2l0aW9uWShlKX1yZXR1cm4gb30sby5wcm90b3R5cGUuc2hvdz1mdW5jdGlvbigpe3RoaXMuZG9tLmJhY2tncm91bmQucGFyZW50Tm9kZXx8dGhpcy5pdGVtU2V0LmRvbS5iYWNrZ3JvdW5kLmFwcGVuZENoaWxkKHRoaXMuZG9tLmJhY2tncm91bmQpfSx0LmV4cG9ydHM9b30sZnVuY3Rpb24odCxlLGkpe2Z1bmN0aW9uIG8odCxlLGkpe2lmKHRoaXMucHJvcHM9e2RvdDp7d2lkdGg6MCxoZWlnaHQ6MH0sbGluZTp7d2lkdGg6MCxoZWlnaHQ6MH19LHQmJnZvaWQgMD09dC5zdGFydCl0aHJvdyBuZXcgRXJyb3IoJ1Byb3BlcnR5ICJzdGFydCIgbWlzc2luZyBpbiBpdGVtICcrdCk7bi5jYWxsKHRoaXMsdCxlLGkpfXZhciBuPWkoMik7aSg3KTtvLnByb3RvdHlwZT1uZXcgbihudWxsLG51bGwsbnVsbCksby5wcm90b3R5cGUuaXNWaXNpYmxlPWZ1bmN0aW9uKHQpe3ZhciBlPSh0LmVuZC10LnN0YXJ0KS80O3JldHVybiB0aGlzLmRhdGEuc3RhcnQ+dC5zdGFydC1lJiZ0aGlzLmRhdGEuc3RhcnQ8dC5lbmQrZX0sby5wcm90b3R5cGUucmVkcmF3PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5kb207aWYodHx8KHRoaXMuZG9tPXt9LHQ9dGhpcy5kb20sdC5ib3g9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiRElWIiksdC5jb250ZW50PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpLHQuY29udGVudC5jbGFzc05hbWU9InZpcy1pdGVtLWNvbnRlbnQiLHQuYm94LmFwcGVuZENoaWxkKHQuY29udGVudCksdC5saW5lPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpLHQubGluZS5jbGFzc05hbWU9InZpcy1saW5lIix0LmRvdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJESVYiKSx0LmRvdC5jbGFzc05hbWU9InZpcy1kb3QiLHQuYm94WyJ0aW1lbGluZS1pdGVtIl09dGhpcyx0aGlzLmRpcnR5PSEwKSwhdGhpcy5wYXJlbnQpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgcmVkcmF3IGl0ZW06IG5vIHBhcmVudCBhdHRhY2hlZCIpO2lmKCF0LmJveC5wYXJlbnROb2RlKXt2YXIgZT10aGlzLnBhcmVudC5kb20uZm9yZWdyb3VuZDtpZighZSl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCByZWRyYXcgaXRlbTogcGFyZW50IGhhcyBubyBmb3JlZ3JvdW5kIGNvbnRhaW5lciBlbGVtZW50Iik7ZS5hcHBlbmRDaGlsZCh0LmJveCl9aWYoIXQubGluZS5wYXJlbnROb2RlKXt2YXIgaT10aGlzLnBhcmVudC5kb20uYmFja2dyb3VuZDtpZighaSl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCByZWRyYXcgaXRlbTogcGFyZW50IGhhcyBubyBiYWNrZ3JvdW5kIGNvbnRhaW5lciBlbGVtZW50Iik7aS5hcHBlbmRDaGlsZCh0LmxpbmUpfWlmKCF0LmRvdC5wYXJlbnROb2RlKXt2YXIgbz10aGlzLnBhcmVudC5kb20uYXhpcztpZighaSl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCByZWRyYXcgaXRlbTogcGFyZW50IGhhcyBubyBheGlzIGNvbnRhaW5lciBlbGVtZW50Iik7by5hcHBlbmRDaGlsZCh0LmRvdCl9aWYodGhpcy5kaXNwbGF5ZWQ9ITAsdGhpcy5kaXJ0eSl7dGhpcy5fdXBkYXRlQ29udGVudHModGhpcy5kb20uY29udGVudCksdGhpcy5fdXBkYXRlVGl0bGUodGhpcy5kb20uYm94KSx0aGlzLl91cGRhdGVEYXRhQXR0cmlidXRlcyh0aGlzLmRvbS5ib3gpLHRoaXMuX3VwZGF0ZVN0eWxlKHRoaXMuZG9tLmJveCk7dmFyIG49KHRoaXMub3B0aW9ucy5lZGl0YWJsZS51cGRhdGVUaW1lfHx0aGlzLm9wdGlvbnMuZWRpdGFibGUudXBkYXRlR3JvdXB8fHRoaXMuZWRpdGFibGU9PT0hMCkmJnRoaXMuZWRpdGFibGUhPT0hMSxzPSh0aGlzLmRhdGEuY2xhc3NOYW1lPyIgIit0aGlzLmRhdGEuY2xhc3NOYW1lOiIiKSsodGhpcy5zZWxlY3RlZD8iIHZpcy1zZWxlY3RlZCI6IiIpKyhuPyIgdmlzLWVkaXRhYmxlIjoiIHZpcy1yZWFkb25seSIpO3QuYm94LmNsYXNzTmFtZT0idmlzLWl0ZW0gdmlzLWJveCIrcyx0LmxpbmUuY2xhc3NOYW1lPSJ2aXMtaXRlbSB2aXMtbGluZSIrcyx0LmRvdC5jbGFzc05hbWU9InZpcy1pdGVtIHZpcy1kb3QiK3MsdGhpcy5wcm9wcy5kb3QuaGVpZ2h0PXQuZG90Lm9mZnNldEhlaWdodCx0aGlzLnByb3BzLmRvdC53aWR0aD10LmRvdC5vZmZzZXRXaWR0aCx0aGlzLnByb3BzLmxpbmUud2lkdGg9dC5saW5lLm9mZnNldFdpZHRoLHRoaXMud2lkdGg9dC5ib3gub2Zmc2V0V2lkdGgsdGhpcy5oZWlnaHQ9dC5ib3gub2Zmc2V0SGVpZ2h0LHRoaXMuZGlydHk9ITF9dGhpcy5fcmVwYWludERlbGV0ZUJ1dHRvbih0LmJveCl9LG8ucHJvdG90eXBlLnNob3c9ZnVuY3Rpb24oKXt0aGlzLmRpc3BsYXllZHx8dGhpcy5yZWRyYXcoKX0sby5wcm90b3R5cGUuaGlkZT1mdW5jdGlvbigpe2lmKHRoaXMuZGlzcGxheWVkKXt2YXIgdD10aGlzLmRvbTt0LmJveC5wYXJlbnROb2RlJiZ0LmJveC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQuYm94KSx0LmxpbmUucGFyZW50Tm9kZSYmdC5saW5lLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodC5saW5lKSx0LmRvdC5wYXJlbnROb2RlJiZ0LmRvdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQuZG90KSx0aGlzLmRpc3BsYXllZD0hMX19LG8ucHJvdG90eXBlLnJlcG9zaXRpb25YPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5jb252ZXJzaW9uLnRvU2NyZWVuKHRoaXMuZGF0YS5zdGFydCksZT10aGlzLm9wdGlvbnMuYWxpZ247InJpZ2h0Ij09ZT90aGlzLmxlZnQ9dC10aGlzLndpZHRoOiJsZWZ0Ij09ZT90aGlzLmxlZnQ9dDp0aGlzLmxlZnQ9dC10aGlzLndpZHRoLzIsdGhpcy5kb20uYm94LnN0eWxlLmxlZnQ9dGhpcy5sZWZ0KyJweCIsdGhpcy5kb20ubGluZS5zdHlsZS5sZWZ0PXQtdGhpcy5wcm9wcy5saW5lLndpZHRoLzIrInB4Iix0aGlzLmRvbS5kb3Quc3R5bGUubGVmdD10LXRoaXMucHJvcHMuZG90LndpZHRoLzIrInB4In0sby5wcm90b3R5cGUucmVwb3NpdGlvblk9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdGlvbnMub3JpZW50YXRpb24uaXRlbSxlPXRoaXMuZG9tLmJveCxpPXRoaXMuZG9tLmxpbmUsbz10aGlzLmRvbS5kb3Q7aWYoInRvcCI9PXQpZS5zdHlsZS50b3A9KHRoaXMudG9wfHwwKSsicHgiLGkuc3R5bGUudG9wPSIwIixpLnN0eWxlLmhlaWdodD10aGlzLnBhcmVudC50b3ArdGhpcy50b3ArMSsicHgiLGkuc3R5bGUuYm90dG9tPSIiO2Vsc2V7dmFyIG49dGhpcy5wYXJlbnQuaXRlbVNldC5wcm9wcy5oZWlnaHQscz1uLXRoaXMucGFyZW50LnRvcC10aGlzLnBhcmVudC5oZWlnaHQrdGhpcy50b3A7ZS5zdHlsZS50b3A9KHRoaXMucGFyZW50LmhlaWdodC10aGlzLnRvcC10aGlzLmhlaWdodHx8MCkrInB4IixpLnN0eWxlLnRvcD1uLXMrInB4IixpLnN0eWxlLmJvdHRvbT0iMCJ9by5zdHlsZS50b3A9LXRoaXMucHJvcHMuZG90LmhlaWdodC8yKyJweCJ9LG8ucHJvdG90eXBlLmdldFdpZHRoTGVmdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLndpZHRoLzJ9LG8ucHJvdG90eXBlLmdldFdpZHRoUmlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53aWR0aC8yfSx0LmV4cG9ydHM9b30sZnVuY3Rpb24odCxlLGkpe2Z1bmN0aW9uIG8odCxlLGkpe2lmKHRoaXMucHJvcHM9e2NvbnRlbnQ6e3dpZHRoOjB9fSx0aGlzLm92ZXJmbG93PSExLHQpe2lmKHZvaWQgMD09dC5zdGFydCl0aHJvdyBuZXcgRXJyb3IoJ1Byb3BlcnR5ICJzdGFydCIgbWlzc2luZyBpbiBpdGVtICcrdC5pZCk7aWYodm9pZCAwPT10LmVuZCl0aHJvdyBuZXcgRXJyb3IoJ1Byb3BlcnR5ICJlbmQiIG1pc3NpbmcgaW4gaXRlbSAnK3QuaWQpfW4uY2FsbCh0aGlzLHQsZSxpKX12YXIgbj0oaSgzKSxpKDIpKSxzPWkoMzgpLHI9aSgzNik7by5wcm90b3R5cGU9bmV3IG4obnVsbCxudWxsLG51bGwpLG8ucHJvdG90eXBlLmJhc2VDbGFzc05hbWU9InZpcy1pdGVtIHZpcy1iYWNrZ3JvdW5kIixvLnByb3RvdHlwZS5zdGFjaz0hMSxvLnByb3RvdHlwZS5pc1Zpc2libGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZGF0YS5zdGFydDx0LmVuZCYmdGhpcy5kYXRhLmVuZD50LnN0YXJ0fSxvLnByb3RvdHlwZS5yZWRyYXc9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmRvbTtpZih0fHwodGhpcy5kb209e30sdD10aGlzLmRvbSx0LmJveD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0LmZyYW1lPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHQuZnJhbWUuY2xhc3NOYW1lPSJ2aXMtaXRlbS1vdmVyZmxvdyIsdC5ib3guYXBwZW5kQ2hpbGQodC5mcmFtZSksdC5jb250ZW50PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHQuY29udGVudC5jbGFzc05hbWU9InZpcy1pdGVtLWNvbnRlbnQiLHQuZnJhbWUuYXBwZW5kQ2hpbGQodC5jb250ZW50KSx0aGlzLmRpcnR5PSEwKSwhdGhpcy5wYXJlbnQpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgcmVkcmF3IGl0ZW06IG5vIHBhcmVudCBhdHRhY2hlZCIpO2lmKCF0LmJveC5wYXJlbnROb2RlKXt2YXIgZT10aGlzLnBhcmVudC5kb20uYmFja2dyb3VuZDtpZighZSl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCByZWRyYXcgaXRlbTogcGFyZW50IGhhcyBubyBiYWNrZ3JvdW5kIGNvbnRhaW5lciBlbGVtZW50Iik7ZS5hcHBlbmRDaGlsZCh0LmJveCl9aWYodGhpcy5kaXNwbGF5ZWQ9ITAsdGhpcy5kaXJ0eSl7dGhpcy5fdXBkYXRlQ29udGVudHModGhpcy5kb20uY29udGVudCksdGhpcy5fdXBkYXRlVGl0bGUodGhpcy5kb20uY29udGVudCksdGhpcy5fdXBkYXRlRGF0YUF0dHJpYnV0ZXModGhpcy5kb20uY29udGVudCksdGhpcy5fdXBkYXRlU3R5bGUodGhpcy5kb20uYm94KTt2YXIgaT0odGhpcy5kYXRhLmNsYXNzTmFtZT8iICIrdGhpcy5kYXRhLmNsYXNzTmFtZToiIikrKHRoaXMuc2VsZWN0ZWQ/IiB2aXMtc2VsZWN0ZWQiOiIiKTt0LmJveC5jbGFzc05hbWU9dGhpcy5iYXNlQ2xhc3NOYW1lK2ksdGhpcy5vdmVyZmxvdz0iaGlkZGVuIiE9PXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQuY29udGVudCkub3ZlcmZsb3csdGhpcy5wcm9wcy5jb250ZW50LndpZHRoPXRoaXMuZG9tLmNvbnRlbnQub2Zmc2V0V2lkdGgsdGhpcy5oZWlnaHQ9MCx0aGlzLmRpcnR5PSExfX0sby5wcm90b3R5cGUuc2hvdz1yLnByb3RvdHlwZS5zaG93LG8ucHJvdG90eXBlLmhpZGU9ci5wcm90b3R5cGUuaGlkZSxvLnByb3RvdHlwZS5yZXBvc2l0aW9uWD1yLnByb3RvdHlwZS5yZXBvc2l0aW9uWCxvLnByb3RvdHlwZS5yZXBvc2l0aW9uWT1mdW5jdGlvbih0KXt2YXIgZT0idG9wIj09PXRoaXMub3B0aW9ucy5vcmllbnRhdGlvbi5pdGVtO3RoaXMuZG9tLmNvbnRlbnQuc3R5bGUudG9wPWU/IiI6IjAiLHRoaXMuZG9tLmNvbnRlbnQuc3R5bGUuYm90dG9tPWU/IjAiOiIiO3ZhciBpO2lmKHZvaWQgMCE9PXRoaXMuZGF0YS5zdWJncm91cCl7dmFyIG89dGhpcy5kYXRhLnN1Ymdyb3VwLG49dGhpcy5wYXJlbnQuc3ViZ3JvdXBzLHI9bltvXS5pbmRleDtpZigxPT1lKXtpPXRoaXMucGFyZW50LnN1Ymdyb3Vwc1tvXS5oZWlnaHQrdC5pdGVtLnZlcnRpY2FsLGkrPTA9PXI/dC5heGlzLS41KnQuaXRlbS52ZXJ0aWNhbDowO3ZhciBhPXRoaXMucGFyZW50LnRvcDtmb3IodmFyIGggaW4gbiluLmhhc093blByb3BlcnR5KGgpJiYxPT1uW2hdLnZpc2libGUmJm5baF0uaW5kZXg8ciYmKGErPW5baF0uaGVpZ2h0K3QuaXRlbS52ZXJ0aWNhbCk7YSs9MCE9cj90LmF4aXMtLjUqdC5pdGVtLnZlcnRpY2FsOjAsdGhpcy5kb20uYm94LnN0eWxlLnRvcD1hKyJweCIsdGhpcy5kb20uYm94LnN0eWxlLmJvdHRvbT0iIn1lbHNle3ZhciBhPXRoaXMucGFyZW50LnRvcCxkPTA7Zm9yKHZhciBoIGluIG4paWYobi5oYXNPd25Qcm9wZXJ0eShoKSYmMT09bltoXS52aXNpYmxlKXt2YXIgbD1uW2hdLmhlaWdodCt0Lml0ZW0udmVydGljYWw7ZCs9bCxuW2hdLmluZGV4PnImJihhKz1sKX1pPXRoaXMucGFyZW50LnN1Ymdyb3Vwc1tvXS5oZWlnaHQrdC5pdGVtLnZlcnRpY2FsLHRoaXMuZG9tLmJveC5zdHlsZS50b3A9dGhpcy5wYXJlbnQuaGVpZ2h0LWQrYSsicHgiLHRoaXMuZG9tLmJveC5zdHlsZS5ib3R0b209IiJ9fWVsc2UgdGhpcy5wYXJlbnQgaW5zdGFuY2VvZiBzPyhpPU1hdGgubWF4KHRoaXMucGFyZW50LmhlaWdodCx0aGlzLnBhcmVudC5pdGVtU2V0LmJvZHkuZG9tUHJvcHMuY2VudGVyLmhlaWdodCx0aGlzLnBhcmVudC5pdGVtU2V0LmJvZHkuZG9tUHJvcHMuY2VudGVyQ29udGFpbmVyLmhlaWdodCksdGhpcy5kb20uYm94LnN0eWxlLnRvcD1lPyIwIjoiIix0aGlzLmRvbS5ib3guc3R5bGUuYm90dG9tPWU/IiI6IjAiKTooaT10aGlzLnBhcmVudC5oZWlnaHQsdGhpcy5kb20uYm94LnN0eWxlLnRvcD10aGlzLnBhcmVudC50b3ArInB4Iix0aGlzLmRvbS5ib3guc3R5bGUuYm90dG9tPSIiKTt0aGlzLmRvbS5ib3guc3R5bGUuaGVpZ2h0PWkrInB4In0sdC5leHBvcnRzPW99LGZ1bmN0aW9uKHQsZSxpKXtmdW5jdGlvbiBvKHQsZSl7dGhpcy5kb209e2ZvcmVncm91bmQ6bnVsbCxsaW5lczpbXSxtYWpvclRleHRzOltdLG1pbm9yVGV4dHM6W10scmVkdW5kYW50OntsaW5lczpbXSxtYWpvclRleHRzOltdLG1pbm9yVGV4dHM6W119fSx0aGlzLnByb3BzPXtyYW5nZTp7c3RhcnQ6MCxlbmQ6MCxtaW5pbXVtU3RlcDowfSxsaW5lVG9wOjB9LHRoaXMuZGVmYXVsdE9wdGlvbnM9e29yaWVudGF0aW9uOntheGlzOiJib3R0b20ifSxzaG93TWlub3JMYWJlbHM6ITAsc2hvd01ham9yTGFiZWxzOiEwLGZvcm1hdDpyLkZPUk1BVCx0aW1lQXhpczpudWxsfSx0aGlzLm9wdGlvbnM9bi5leHRlbmQoe30sdGhpcy5kZWZhdWx0T3B0aW9ucyksdGhpcy5ib2R5PXQsdGhpcy5fY3JlYXRlKCksdGhpcy5zZXRPcHRpb25zKGUpfXZhciBuPWkoNykscz1pKDI3KSxyPWkoMzcpLGE9aSgzMSksaD1pKDgpO28ucHJvdG90eXBlPW5ldyBzLG8ucHJvdG90eXBlLnNldE9wdGlvbnM9ZnVuY3Rpb24odCl7dCYmKG4uc2VsZWN0aXZlRXh0ZW5kKFsic2hvd01pbm9yTGFiZWxzIiwic2hvd01ham9yTGFiZWxzIiwiaGlkZGVuRGF0ZXMiLCJ0aW1lQXhpcyJdLHRoaXMub3B0aW9ucyx0KSxuLnNlbGVjdGl2ZURlZXBFeHRlbmQoWyJmb3JtYXQiXSx0aGlzLm9wdGlvbnMsdCksIm9yaWVudGF0aW9uImluIHQmJigic3RyaW5nIj09dHlwZW9mIHQub3JpZW50YXRpb24/dGhpcy5vcHRpb25zLm9yaWVudGF0aW9uLmF4aXM9dC5vcmllbnRhdGlvbjoib2JqZWN0Ij09dHlwZW9mIHQub3JpZW50YXRpb24mJiJheGlzImluIHQub3JpZW50YXRpb24mJih0aGlzLm9wdGlvbnMub3JpZW50YXRpb24uYXhpcz10Lm9yaWVudGF0aW9uLmF4aXMpKSwibG9jYWxlImluIHQmJigiZnVuY3Rpb24iPT10eXBlb2YgaC5sb2NhbGU/aC5sb2NhbGUodC5sb2NhbGUpOmgubGFuZyh0LmxvY2FsZSkpKX0sby5wcm90b3R5cGUuX2NyZWF0ZT1mdW5jdGlvbigpe3RoaXMuZG9tLmZvcmVncm91bmQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5kb20uYmFja2dyb3VuZD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLmRvbS5mb3JlZ3JvdW5kLmNsYXNzTmFtZT0idmlzLXRpbWUtYXhpcyB2aXMtZm9yZWdyb3VuZCIsdGhpcy5kb20uYmFja2dyb3VuZC5jbGFzc05hbWU9InZpcy10aW1lLWF4aXMgdmlzLWJhY2tncm91bmQifSxvLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5kb20uZm9yZWdyb3VuZC5wYXJlbnROb2RlJiZ0aGlzLmRvbS5mb3JlZ3JvdW5kLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5kb20uZm9yZWdyb3VuZCksdGhpcy5kb20uYmFja2dyb3VuZC5wYXJlbnROb2RlJiZ0aGlzLmRvbS5iYWNrZ3JvdW5kLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5kb20uYmFja2dyb3VuZCksdGhpcy5ib2R5PW51bGx9LG8ucHJvdG90eXBlLnJlZHJhdz1mdW5jdGlvbigpe3ZhciB0PXRoaXMucHJvcHMsZT10aGlzLmRvbS5mb3JlZ3JvdW5kLGk9dGhpcy5kb20uYmFja2dyb3VuZCxvPSJ0b3AiPT10aGlzLm9wdGlvbnMub3JpZW50YXRpb24uYXhpcz90aGlzLmJvZHkuZG9tLnRvcDp0aGlzLmJvZHkuZG9tLmJvdHRvbSxuPWUucGFyZW50Tm9kZSE9PW87dGhpcy5fY2FsY3VsYXRlQ2hhclNpemUoKTt2YXIgcz10aGlzLm9wdGlvbnMuc2hvd01pbm9yTGFiZWxzJiYibm9uZSIhPT10aGlzLm9wdGlvbnMub3JpZW50YXRpb24uYXhpcyxyPXRoaXMub3B0aW9ucy5zaG93TWFqb3JMYWJlbHMmJiJub25lIiE9PXRoaXMub3B0aW9ucy5vcmllbnRhdGlvbi5heGlzO3QubWlub3JMYWJlbEhlaWdodD1zP3QubWlub3JDaGFySGVpZ2h0OjAsdC5tYWpvckxhYmVsSGVpZ2h0PXI/dC5tYWpvckNoYXJIZWlnaHQ6MCx0LmhlaWdodD10Lm1pbm9yTGFiZWxIZWlnaHQrdC5tYWpvckxhYmVsSGVpZ2h0LHQud2lkdGg9ZS5vZmZzZXRXaWR0aCx0Lm1pbm9yTGluZUhlaWdodD10aGlzLmJvZHkuZG9tUHJvcHMucm9vdC5oZWlnaHQtdC5tYWpvckxhYmVsSGVpZ2h0LSgidG9wIj09dGhpcy5vcHRpb25zLm9yaWVudGF0aW9uLmF4aXM/dGhpcy5ib2R5LmRvbVByb3BzLmJvdHRvbS5oZWlnaHQ6dGhpcy5ib2R5LmRvbVByb3BzLnRvcC5oZWlnaHQpLHQubWlub3JMaW5lV2lkdGg9MSx0Lm1ham9yTGluZUhlaWdodD10Lm1pbm9yTGluZUhlaWdodCt0Lm1ham9yTGFiZWxIZWlnaHQsdC5tYWpvckxpbmVXaWR0aD0xO3ZhciBhPWUubmV4dFNpYmxpbmcsaD1pLm5leHRTaWJsaW5nO3JldHVybiBlLnBhcmVudE5vZGUmJmUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKSxpLnBhcmVudE5vZGUmJmkucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChpKSxlLnN0eWxlLmhlaWdodD10aGlzLnByb3BzLmhlaWdodCsicHgiLHRoaXMuX3JlcGFpbnRMYWJlbHMoKSxhP28uaW5zZXJ0QmVmb3JlKGUsYSk6by5hcHBlbmRDaGlsZChlKSxoP3RoaXMuYm9keS5kb20uYmFja2dyb3VuZFZlcnRpY2FsLmluc2VydEJlZm9yZShpLGgpOnRoaXMuYm9keS5kb20uYmFja2dyb3VuZFZlcnRpY2FsLmFwcGVuZENoaWxkKGkpLHRoaXMuX2lzUmVzaXplZCgpfHxufSxvLnByb3RvdHlwZS5fcmVwYWludExhYmVscz1mdW5jdGlvbigpe3ZhciB0PXRoaXMub3B0aW9ucy5vcmllbnRhdGlvbi5heGlzLGU9bi5jb252ZXJ0KHRoaXMuYm9keS5yYW5nZS5zdGFydCwiTnVtYmVyIiksaT1uLmNvbnZlcnQodGhpcy5ib2R5LnJhbmdlLmVuZCwiTnVtYmVyIiksbz10aGlzLmJvZHkudXRpbC50b1RpbWUoNyoodGhpcy5wcm9wcy5taW5vckNoYXJXaWR0aHx8MTApKS52YWx1ZU9mKCkscz1vLWEuZ2V0SGlkZGVuRHVyYXRpb25CZWZvcmUodGhpcy5ib2R5LmhpZGRlbkRhdGVzLHRoaXMuYm9keS5yYW5nZSxvKTtzLT10aGlzLmJvZHkudXRpbC50b1RpbWUoMCkudmFsdWVPZigpO3ZhciBoPW5ldyByKG5ldyBEYXRlKGUpLG5ldyBEYXRlKGkpLHMsdGhpcy5ib2R5LmhpZGRlbkRhdGVzKTt0aGlzLm9wdGlvbnMuZm9ybWF0JiZoLnNldEZvcm1hdCh0aGlzLm9wdGlvbnMuZm9ybWF0KSx0aGlzLm9wdGlvbnMudGltZUF4aXMmJmguc2V0U2NhbGUodGhpcy5vcHRpb25zLnRpbWVBeGlzKSx0aGlzLnN0ZXA9aDt2YXIgZD10aGlzLmRvbTtkLnJlZHVuZGFudC5saW5lcz1kLmxpbmVzLGQucmVkdW5kYW50Lm1ham9yVGV4dHM9ZC5tYWpvclRleHRzLGQucmVkdW5kYW50Lm1pbm9yVGV4dHM9ZC5taW5vclRleHRzLGQubGluZXM9W10sZC5tYWpvclRleHRzPVtdLGQubWlub3JUZXh0cz1bXTt2YXIgbCx1LGMscCxmPTAsbT0wLHY9MCxnPXZvaWQgMCx5PTA7Zm9yKGguZmlyc3QoKTtoLmhhc05leHQoKSYmMWUzPnk7KXkrKyxsPWguZ2V0Q3VycmVudCgpLHU9aC5pc01ham9yKCkscD1oLmdldENsYXNzTmFtZSgpLG09ZixmPXRoaXMuYm9keS51dGlsLnRvU2NyZWVuKGwpLHY9Zi1tLGMmJihjLnN0eWxlLndpZHRoPXYrInB4IiksdGhpcy5vcHRpb25zLnNob3dNaW5vckxhYmVscyYmdGhpcy5fcmVwYWludE1pbm9yVGV4dChmLGguZ2V0TGFiZWxNaW5vcigpLHQscCksdSYmdGhpcy5vcHRpb25zLnNob3dNYWpvckxhYmVscz8oZj4wJiYodm9pZCAwPT1nJiYoZz1mKSx0aGlzLl9yZXBhaW50TWFqb3JUZXh0KGYsaC5nZXRMYWJlbE1ham9yKCksdCxwKSksYz10aGlzLl9yZXBhaW50TWFqb3JMaW5lKGYsdCxwKSk6Yz10aGlzLl9yZXBhaW50TWlub3JMaW5lKGYsdCxwKSxoLm5leHQoKTtpZih0aGlzLm9wdGlvbnMuc2hvd01ham9yTGFiZWxzKXt2YXIgYj10aGlzLmJvZHkudXRpbC50b1RpbWUoMCksdz1oLmdldExhYmVsTWFqb3IoYiksXz13Lmxlbmd0aCoodGhpcy5wcm9wcy5tYWpvckNoYXJXaWR0aHx8MTApKzEwOyh2b2lkIDA9PWd8fGc+XykmJnRoaXMuX3JlcGFpbnRNYWpvclRleHQoMCx3LHQscCl9bi5mb3JFYWNoKHRoaXMuZG9tLnJlZHVuZGFudCxmdW5jdGlvbih0KXtmb3IoO3QubGVuZ3RoOyl7dmFyIGU9dC5wb3AoKTtlJiZlLnBhcmVudE5vZGUmJmUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKX19KX0sby5wcm90b3R5cGUuX3JlcGFpbnRNaW5vclRleHQ9ZnVuY3Rpb24odCxlLGksbyl7dmFyIG49dGhpcy5kb20ucmVkdW5kYW50Lm1pbm9yVGV4dHMuc2hpZnQoKTtpZighbil7dmFyIHM9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiIpO249ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iiksbi5hcHBlbmRDaGlsZChzKSx0aGlzLmRvbS5mb3JlZ3JvdW5kLmFwcGVuZENoaWxkKG4pfXRoaXMuZG9tLm1pbm9yVGV4dHMucHVzaChuKSwNCm4uY2hpbGROb2Rlc1swXS5ub2RlVmFsdWU9ZSxuLnN0eWxlLnRvcD0idG9wIj09aT90aGlzLnByb3BzLm1ham9yTGFiZWxIZWlnaHQrInB4IjoiMCIsbi5zdHlsZS5sZWZ0PXQrInB4IixuLmNsYXNzTmFtZT0idmlzLXRleHQgdmlzLW1pbm9yICIrb30sby5wcm90b3R5cGUuX3JlcGFpbnRNYWpvclRleHQ9ZnVuY3Rpb24odCxlLGksbyl7dmFyIG49dGhpcy5kb20ucmVkdW5kYW50Lm1ham9yVGV4dHMuc2hpZnQoKTtpZighbil7dmFyIHM9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZSk7bj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxuLmFwcGVuZENoaWxkKHMpLHRoaXMuZG9tLmZvcmVncm91bmQuYXBwZW5kQ2hpbGQobil9dGhpcy5kb20ubWFqb3JUZXh0cy5wdXNoKG4pLG4uY2hpbGROb2Rlc1swXS5ub2RlVmFsdWU9ZSxuLmNsYXNzTmFtZT0idmlzLXRleHQgdmlzLW1ham9yICIrbyxuLnN0eWxlLnRvcD0idG9wIj09aT8iMCI6dGhpcy5wcm9wcy5taW5vckxhYmVsSGVpZ2h0KyJweCIsbi5zdHlsZS5sZWZ0PXQrInB4In0sby5wcm90b3R5cGUuX3JlcGFpbnRNaW5vckxpbmU9ZnVuY3Rpb24odCxlLGkpe3ZhciBvPXRoaXMuZG9tLnJlZHVuZGFudC5saW5lcy5zaGlmdCgpO298fChvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuZG9tLmJhY2tncm91bmQuYXBwZW5kQ2hpbGQobykpLHRoaXMuZG9tLmxpbmVzLnB1c2gobyk7dmFyIG49dGhpcy5wcm9wcztyZXR1cm4idG9wIj09ZT9vLnN0eWxlLnRvcD1uLm1ham9yTGFiZWxIZWlnaHQrInB4IjpvLnN0eWxlLnRvcD10aGlzLmJvZHkuZG9tUHJvcHMudG9wLmhlaWdodCsicHgiLG8uc3R5bGUuaGVpZ2h0PW4ubWlub3JMaW5lSGVpZ2h0KyJweCIsby5zdHlsZS5sZWZ0PXQtbi5taW5vckxpbmVXaWR0aC8yKyJweCIsby5jbGFzc05hbWU9InZpcy1ncmlkIHZpcy12ZXJ0aWNhbCB2aXMtbWlub3IgIitpLG99LG8ucHJvdG90eXBlLl9yZXBhaW50TWFqb3JMaW5lPWZ1bmN0aW9uKHQsZSxpKXt2YXIgbz10aGlzLmRvbS5yZWR1bmRhbnQubGluZXMuc2hpZnQoKTtvfHwobz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLmRvbS5iYWNrZ3JvdW5kLmFwcGVuZENoaWxkKG8pKSx0aGlzLmRvbS5saW5lcy5wdXNoKG8pO3ZhciBuPXRoaXMucHJvcHM7cmV0dXJuInRvcCI9PWU/by5zdHlsZS50b3A9IjAiOm8uc3R5bGUudG9wPXRoaXMuYm9keS5kb21Qcm9wcy50b3AuaGVpZ2h0KyJweCIsby5zdHlsZS5sZWZ0PXQtbi5tYWpvckxpbmVXaWR0aC8yKyJweCIsby5zdHlsZS5oZWlnaHQ9bi5tYWpvckxpbmVIZWlnaHQrInB4IixvLmNsYXNzTmFtZT0idmlzLWdyaWQgdmlzLXZlcnRpY2FsIHZpcy1tYWpvciAiK2ksb30sby5wcm90b3R5cGUuX2NhbGN1bGF0ZUNoYXJTaXplPWZ1bmN0aW9uKCl7dGhpcy5kb20ubWVhc3VyZUNoYXJNaW5vcnx8KHRoaXMuZG9tLm1lYXN1cmVDaGFyTWlub3I9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiRElWIiksdGhpcy5kb20ubWVhc3VyZUNoYXJNaW5vci5jbGFzc05hbWU9InZpcy10ZXh0IHZpcy1taW5vciB2aXMtbWVhc3VyZSIsdGhpcy5kb20ubWVhc3VyZUNoYXJNaW5vci5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLHRoaXMuZG9tLm1lYXN1cmVDaGFyTWlub3IuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIjAiKSksdGhpcy5kb20uZm9yZWdyb3VuZC5hcHBlbmRDaGlsZCh0aGlzLmRvbS5tZWFzdXJlQ2hhck1pbm9yKSksdGhpcy5wcm9wcy5taW5vckNoYXJIZWlnaHQ9dGhpcy5kb20ubWVhc3VyZUNoYXJNaW5vci5jbGllbnRIZWlnaHQsdGhpcy5wcm9wcy5taW5vckNoYXJXaWR0aD10aGlzLmRvbS5tZWFzdXJlQ2hhck1pbm9yLmNsaWVudFdpZHRoLHRoaXMuZG9tLm1lYXN1cmVDaGFyTWFqb3J8fCh0aGlzLmRvbS5tZWFzdXJlQ2hhck1ham9yPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpLHRoaXMuZG9tLm1lYXN1cmVDaGFyTWFqb3IuY2xhc3NOYW1lPSJ2aXMtdGV4dCB2aXMtbWFqb3IgdmlzLW1lYXN1cmUiLHRoaXMuZG9tLm1lYXN1cmVDaGFyTWFqb3Iuc3R5bGUucG9zaXRpb249ImFic29sdXRlIix0aGlzLmRvbS5tZWFzdXJlQ2hhck1ham9yLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIwIikpLHRoaXMuZG9tLmZvcmVncm91bmQuYXBwZW5kQ2hpbGQodGhpcy5kb20ubWVhc3VyZUNoYXJNYWpvcikpLHRoaXMucHJvcHMubWFqb3JDaGFySGVpZ2h0PXRoaXMuZG9tLm1lYXN1cmVDaGFyTWFqb3IuY2xpZW50SGVpZ2h0LHRoaXMucHJvcHMubWFqb3JDaGFyV2lkdGg9dGhpcy5kb20ubWVhc3VyZUNoYXJNYWpvci5jbGllbnRXaWR0aH0sdC5leHBvcnRzPW99LGZ1bmN0aW9uKHQsZSxpKXtmdW5jdGlvbiBvKHQpe3RoaXMuYWN0aXZlPSExLHRoaXMuZG9tPXtjb250YWluZXI6dH0sdGhpcy5kb20ub3ZlcmxheT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLmRvbS5vdmVybGF5LmNsYXNzTmFtZT0idmlzLW92ZXJsYXkiLHRoaXMuZG9tLmNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLmRvbS5vdmVybGF5KSx0aGlzLmhhbW1lcj1hKHRoaXMuZG9tLm92ZXJsYXkpLHRoaXMuaGFtbWVyLm9uKCJ0YXAiLHRoaXMuX29uVGFwT3ZlcmxheS5iaW5kKHRoaXMpKTt2YXIgZT10aGlzLGk9WyJ0YXAiLCJkb3VibGV0YXAiLCJwcmVzcyIsInBpbmNoIiwicGFuIiwicGFuc3RhcnQiLCJwYW5tb3ZlIiwicGFuZW5kIl07aS5mb3JFYWNoKGZ1bmN0aW9uKHQpe2UuaGFtbWVyLm9uKHQsZnVuY3Rpb24odCl7dC5zdG9wUHJvcGFnYXRpb24oKX0pfSksZG9jdW1lbnQmJmRvY3VtZW50LmJvZHkmJih0aGlzLm9uQ2xpY2s9ZnVuY3Rpb24oaSl7bihpLnRhcmdldCx0KXx8ZS5kZWFjdGl2YXRlKCl9LGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLHRoaXMub25DbGljaykpLHZvaWQgMCE9PXRoaXMua2V5Y2hhcm0mJnRoaXMua2V5Y2hhcm0uZGVzdHJveSgpLHRoaXMua2V5Y2hhcm09cygpLHRoaXMuZXNjTGlzdGVuZXI9dGhpcy5kZWFjdGl2YXRlLmJpbmQodGhpcyl9ZnVuY3Rpb24gbih0LGUpe2Zvcig7dDspe2lmKHQ9PT1lKXJldHVybiEwO3Q9dC5wYXJlbnROb2RlfXJldHVybiExfXZhciBzPWkoNDMpLHI9aSgxOSksYT1pKDMpLGg9aSg3KTtyKG8ucHJvdG90eXBlKSxvLmN1cnJlbnQ9bnVsbCxvLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5kZWFjdGl2YXRlKCksdGhpcy5kb20ub3ZlcmxheS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuZG9tLm92ZXJsYXkpLHRoaXMub25DbGljayYmZG9jdW1lbnQuYm9keS5yZW1vdmVFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5vbkNsaWNrKSx0aGlzLmhhbW1lci5kZXN0cm95KCksdGhpcy5oYW1tZXI9bnVsbH0sby5wcm90b3R5cGUuYWN0aXZhdGU9ZnVuY3Rpb24oKXtvLmN1cnJlbnQmJm8uY3VycmVudC5kZWFjdGl2YXRlKCksby5jdXJyZW50PXRoaXMsdGhpcy5hY3RpdmU9ITAsdGhpcy5kb20ub3ZlcmxheS5zdHlsZS5kaXNwbGF5PSJub25lIixoLmFkZENsYXNzTmFtZSh0aGlzLmRvbS5jb250YWluZXIsInZpcy1hY3RpdmUiKSx0aGlzLmVtaXQoImNoYW5nZSIpLHRoaXMuZW1pdCgiYWN0aXZhdGUiKSx0aGlzLmtleWNoYXJtLmJpbmQoImVzYyIsdGhpcy5lc2NMaXN0ZW5lcil9LG8ucHJvdG90eXBlLmRlYWN0aXZhdGU9ZnVuY3Rpb24oKXt0aGlzLmFjdGl2ZT0hMSx0aGlzLmRvbS5vdmVybGF5LnN0eWxlLmRpc3BsYXk9IiIsaC5yZW1vdmVDbGFzc05hbWUodGhpcy5kb20uY29udGFpbmVyLCJ2aXMtYWN0aXZlIiksdGhpcy5rZXljaGFybS51bmJpbmQoImVzYyIsdGhpcy5lc2NMaXN0ZW5lciksdGhpcy5lbWl0KCJjaGFuZ2UiKSx0aGlzLmVtaXQoImRlYWN0aXZhdGUiKX0sby5wcm90b3R5cGUuX29uVGFwT3ZlcmxheT1mdW5jdGlvbih0KXt0aGlzLmFjdGl2YXRlKCksdC5zdG9wUHJvcGFnYXRpb24oKX0sdC5leHBvcnRzPW99LGZ1bmN0aW9uKHQsZSxpKXt2YXIgbyxuLHM7IWZ1bmN0aW9uKGkscil7bj1bXSxvPXIscz0iZnVuY3Rpb24iPT10eXBlb2Ygbz9vLmFwcGx5KGUsbik6bywhKHZvaWQgMCE9PXMmJih0LmV4cG9ydHM9cykpfSh0aGlzLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt2YXIgZSxpPXQmJnQucHJldmVudERlZmF1bHR8fCExLG89dCYmdC5jb250YWluZXJ8fHdpbmRvdyxuPXt9LHM9e2tleWRvd246e30sa2V5dXA6e319LHI9e307Zm9yKGU9OTc7MTIyPj1lO2UrKylyW1N0cmluZy5mcm9tQ2hhckNvZGUoZSldPXtjb2RlOjY1KyhlLTk3KSxzaGlmdDohMX07Zm9yKGU9NjU7OTA+PWU7ZSsrKXJbU3RyaW5nLmZyb21DaGFyQ29kZShlKV09e2NvZGU6ZSxzaGlmdDohMH07Zm9yKGU9MDs5Pj1lO2UrKylyWyIiK2VdPXtjb2RlOjQ4K2Usc2hpZnQ6ITF9O2ZvcihlPTE7MTI+PWU7ZSsrKXJbIkYiK2VdPXtjb2RlOjExMStlLHNoaWZ0OiExfTtmb3IoZT0wOzk+PWU7ZSsrKXJbIm51bSIrZV09e2NvZGU6OTYrZSxzaGlmdDohMX07clsibnVtKiJdPXtjb2RlOjEwNixzaGlmdDohMX0sclsibnVtKyJdPXtjb2RlOjEwNyxzaGlmdDohMX0sclsibnVtLSJdPXtjb2RlOjEwOSxzaGlmdDohMX0sclsibnVtLyJdPXtjb2RlOjExMSxzaGlmdDohMX0sclsibnVtLiJdPXtjb2RlOjExMCxzaGlmdDohMX0sci5sZWZ0PXtjb2RlOjM3LHNoaWZ0OiExfSxyLnVwPXtjb2RlOjM4LHNoaWZ0OiExfSxyLnJpZ2h0PXtjb2RlOjM5LHNoaWZ0OiExfSxyLmRvd249e2NvZGU6NDAsc2hpZnQ6ITF9LHIuc3BhY2U9e2NvZGU6MzIsc2hpZnQ6ITF9LHIuZW50ZXI9e2NvZGU6MTMsc2hpZnQ6ITF9LHIuc2hpZnQ9e2NvZGU6MTYsc2hpZnQ6dm9pZCAwfSxyLmVzYz17Y29kZToyNyxzaGlmdDohMX0sci5iYWNrc3BhY2U9e2NvZGU6OCxzaGlmdDohMX0sci50YWI9e2NvZGU6OSxzaGlmdDohMX0sci5jdHJsPXtjb2RlOjE3LHNoaWZ0OiExfSxyLmFsdD17Y29kZToxOCxzaGlmdDohMX0sclsiZGVsZXRlIl09e2NvZGU6NDYsc2hpZnQ6ITF9LHIucGFnZXVwPXtjb2RlOjMzLHNoaWZ0OiExfSxyLnBhZ2Vkb3duPXtjb2RlOjM0LHNoaWZ0OiExfSxyWyI9Il09e2NvZGU6MTg3LHNoaWZ0OiExfSxyWyItIl09e2NvZGU6MTg5LHNoaWZ0OiExfSxyWyJdIl09e2NvZGU6MjIxLHNoaWZ0OiExfSxyWyJbIl09e2NvZGU6MjE5LHNoaWZ0OiExfTt2YXIgYT1mdW5jdGlvbih0KXtkKHQsImtleWRvd24iKX0saD1mdW5jdGlvbih0KXtkKHQsImtleXVwIil9LGQ9ZnVuY3Rpb24odCxlKXtpZih2b2lkIDAhPT1zW2VdW3Qua2V5Q29kZV0pe2Zvcih2YXIgbz1zW2VdW3Qua2V5Q29kZV0sbj0wO248by5sZW5ndGg7bisrKXZvaWQgMD09PW9bbl0uc2hpZnQ/b1tuXS5mbih0KToxPT1vW25dLnNoaWZ0JiYxPT10LnNoaWZ0S2V5P29bbl0uZm4odCk6MD09b1tuXS5zaGlmdCYmMD09dC5zaGlmdEtleSYmb1tuXS5mbih0KTsxPT1pJiZ0LnByZXZlbnREZWZhdWx0KCl9fTtyZXR1cm4gbi5iaW5kPWZ1bmN0aW9uKHQsZSxpKXtpZih2b2lkIDA9PT1pJiYoaT0ia2V5ZG93biIpLHZvaWQgMD09PXJbdF0pdGhyb3cgbmV3IEVycm9yKCJ1bnN1cHBvcnRlZCBrZXk6ICIrdCk7dm9pZCAwPT09c1tpXVtyW3RdLmNvZGVdJiYoc1tpXVtyW3RdLmNvZGVdPVtdKSxzW2ldW3JbdF0uY29kZV0ucHVzaCh7Zm46ZSxzaGlmdDpyW3RdLnNoaWZ0fSl9LG4uYmluZEFsbD1mdW5jdGlvbih0LGUpe3ZvaWQgMD09PWUmJihlPSJrZXlkb3duIik7Zm9yKHZhciBpIGluIHIpci5oYXNPd25Qcm9wZXJ0eShpKSYmbi5iaW5kKGksdCxlKX0sbi5nZXRLZXk9ZnVuY3Rpb24odCl7Zm9yKHZhciBlIGluIHIpaWYoci5oYXNPd25Qcm9wZXJ0eShlKSl7aWYoMT09dC5zaGlmdEtleSYmMT09cltlXS5zaGlmdCYmdC5rZXlDb2RlPT1yW2VdLmNvZGUpcmV0dXJuIGU7aWYoMD09dC5zaGlmdEtleSYmMD09cltlXS5zaGlmdCYmdC5rZXlDb2RlPT1yW2VdLmNvZGUpcmV0dXJuIGU7aWYodC5rZXlDb2RlPT1yW2VdLmNvZGUmJiJzaGlmdCI9PWUpcmV0dXJuIGV9cmV0dXJuInVua25vd24ga2V5LCBjdXJyZW50bHkgbm90IHN1cHBvcnRlZCJ9LG4udW5iaW5kPWZ1bmN0aW9uKHQsZSxpKXtpZih2b2lkIDA9PT1pJiYoaT0ia2V5ZG93biIpLHZvaWQgMD09PXJbdF0pdGhyb3cgbmV3IEVycm9yKCJ1bnN1cHBvcnRlZCBrZXk6ICIrdCk7aWYodm9pZCAwIT09ZSl7dmFyIG89W10sbj1zW2ldW3JbdF0uY29kZV07aWYodm9pZCAwIT09bilmb3IodmFyIGE9MDthPG4ubGVuZ3RoO2ErKykoblthXS5mbiE9ZXx8blthXS5zaGlmdCE9clt0XS5zaGlmdCkmJm8ucHVzaChzW2ldW3JbdF0uY29kZV1bYV0pO3NbaV1bclt0XS5jb2RlXT1vfWVsc2Ugc1tpXVtyW3RdLmNvZGVdPVtdfSxuLnJlc2V0PWZ1bmN0aW9uKCl7cz17a2V5ZG93bjp7fSxrZXl1cDp7fX19LG4uZGVzdHJveT1mdW5jdGlvbigpe3M9e2tleWRvd246e30sa2V5dXA6e319LG8ucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsYSwhMCksby5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXl1cCIsaCwhMCl9LG8uYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsYSwhMCksby5hZGRFdmVudExpc3RlbmVyKCJrZXl1cCIsaCwhMCksbn1yZXR1cm4gdH0pfSxmdW5jdGlvbih0LGUsaSl7ZnVuY3Rpb24gbyh0LGUpe3RoaXMuYm9keT10LHRoaXMuZGVmYXVsdE9wdGlvbnM9e2xvY2FsZXM6aCxsb2NhbGU6ImVuIixpZDp2b2lkIDB9LHRoaXMub3B0aW9ucz1zLmV4dGVuZCh7fSx0aGlzLmRlZmF1bHRPcHRpb25zKSxlJiZlLnRpbWU/dGhpcy5jdXN0b21UaW1lPWUudGltZTp0aGlzLmN1c3RvbVRpbWU9bmV3IERhdGUsdGhpcy5ldmVudFBhcmFtcz17fSx0aGlzLnNldE9wdGlvbnMoZSksdGhpcy5fY3JlYXRlKCl9dmFyIG49aSgzKSxzPWkoNykscj1pKDI3KSxhPWkoOCksaD1pKDI4KTtvLnByb3RvdHlwZT1uZXcgcixvLnByb3RvdHlwZS5zZXRPcHRpb25zPWZ1bmN0aW9uKHQpe3QmJnMuc2VsZWN0aXZlRXh0ZW5kKFsibG9jYWxlIiwibG9jYWxlcyIsImlkIl0sdGhpcy5vcHRpb25zLHQpfSxvLnByb3RvdHlwZS5fY3JlYXRlPWZ1bmN0aW9uKCl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dFsiY3VzdG9tLXRpbWUiXT10aGlzLHQuY2xhc3NOYW1lPSJ2aXMtY3VzdG9tLXRpbWUgIisodGhpcy5vcHRpb25zLmlkfHwiIiksdC5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLHQuc3R5bGUudG9wPSIwcHgiLHQuc3R5bGUuaGVpZ2h0PSIxMDAlIix0aGlzLmJhcj10O3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2Uuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIixlLnN0eWxlLnRvcD0iMHB4IixlLnN0eWxlLmxlZnQ9Ii0xMHB4IixlLnN0eWxlLmhlaWdodD0iMTAwJSIsZS5zdHlsZS53aWR0aD0iMjBweCIsdC5hcHBlbmRDaGlsZChlKSx0aGlzLmhhbW1lcj1uZXcgbihlKSx0aGlzLmhhbW1lci5vbigicGFuc3RhcnQiLHRoaXMuX29uRHJhZ1N0YXJ0LmJpbmQodGhpcykpLHRoaXMuaGFtbWVyLm9uKCJwYW5tb3ZlIix0aGlzLl9vbkRyYWcuYmluZCh0aGlzKSksdGhpcy5oYW1tZXIub24oInBhbmVuZCIsdGhpcy5fb25EcmFnRW5kLmJpbmQodGhpcykpLHRoaXMuaGFtbWVyLmdldCgicGFuIikuc2V0KHt0aHJlc2hvbGQ6NSxkaXJlY3Rpb246MzB9KX0sby5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMuaGlkZSgpLHRoaXMuaGFtbWVyLmRlc3Ryb3koKSx0aGlzLmhhbW1lcj1udWxsLHRoaXMuYm9keT1udWxsfSxvLnByb3RvdHlwZS5yZWRyYXc9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmJvZHkuZG9tLmJhY2tncm91bmRWZXJ0aWNhbDt0aGlzLmJhci5wYXJlbnROb2RlIT10JiYodGhpcy5iYXIucGFyZW50Tm9kZSYmdGhpcy5iYXIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmJhciksdC5hcHBlbmRDaGlsZCh0aGlzLmJhcikpO3ZhciBlPXRoaXMuYm9keS51dGlsLnRvU2NyZWVuKHRoaXMuY3VzdG9tVGltZSksaT10aGlzLm9wdGlvbnMubG9jYWxlc1t0aGlzLm9wdGlvbnMubG9jYWxlXTtpfHwodGhpcy53YXJuZWR8fChjb25zb2xlLmxvZygiV0FSTklORzogb3B0aW9ucy5sb2NhbGVzWyciK3RoaXMub3B0aW9ucy5sb2NhbGUrIiddIG5vdCBmb3VuZC4gU2VlIGh0dHA6Ly92aXNqcy5vcmcvZG9jcy90aW1lbGluZS5odG1sI0xvY2FsaXphdGlvbiIpLHRoaXMud2FybmVkPSEwKSxpPXRoaXMub3B0aW9ucy5sb2NhbGVzLmVuKTt2YXIgbz1pLnRpbWUrIjogIithKHRoaXMuY3VzdG9tVGltZSkuZm9ybWF0KCJkZGRkLCBNTU1NIERvIFlZWVksIEg6bW06c3MiKTtyZXR1cm4gbz1vLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK28uc3Vic3RyaW5nKDEpLHRoaXMuYmFyLnN0eWxlLmxlZnQ9ZSsicHgiLHRoaXMuYmFyLnRpdGxlPW8sITF9LG8ucHJvdG90eXBlLmhpZGU9ZnVuY3Rpb24oKXt0aGlzLmJhci5wYXJlbnROb2RlJiZ0aGlzLmJhci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuYmFyKX0sby5wcm90b3R5cGUuc2V0Q3VzdG9tVGltZT1mdW5jdGlvbih0KXt0aGlzLmN1c3RvbVRpbWU9cy5jb252ZXJ0KHQsIkRhdGUiKSx0aGlzLnJlZHJhdygpfSxvLnByb3RvdHlwZS5nZXRDdXN0b21UaW1lPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBEYXRlKHRoaXMuY3VzdG9tVGltZS52YWx1ZU9mKCkpfSxvLnByb3RvdHlwZS5fb25EcmFnU3RhcnQ9ZnVuY3Rpb24odCl7dGhpcy5ldmVudFBhcmFtcy5kcmFnZ2luZz0hMCx0aGlzLmV2ZW50UGFyYW1zLmN1c3RvbVRpbWU9dGhpcy5jdXN0b21UaW1lLHQuc3RvcFByb3BhZ2F0aW9uKCl9LG8ucHJvdG90eXBlLl9vbkRyYWc9ZnVuY3Rpb24odCl7aWYodGhpcy5ldmVudFBhcmFtcy5kcmFnZ2luZyl7dmFyIGU9dGhpcy5ib2R5LnV0aWwudG9TY3JlZW4odGhpcy5ldmVudFBhcmFtcy5jdXN0b21UaW1lKSt0LmRlbHRhWCxpPXRoaXMuYm9keS51dGlsLnRvVGltZShlKTt0aGlzLnNldEN1c3RvbVRpbWUoaSksdGhpcy5ib2R5LmVtaXR0ZXIuZW1pdCgidGltZWNoYW5nZSIse2lkOnRoaXMub3B0aW9ucy5pZCx0aW1lOm5ldyBEYXRlKHRoaXMuY3VzdG9tVGltZS52YWx1ZU9mKCkpfSksdC5zdG9wUHJvcGFnYXRpb24oKX19LG8ucHJvdG90eXBlLl9vbkRyYWdFbmQ9ZnVuY3Rpb24odCl7dGhpcy5ldmVudFBhcmFtcy5kcmFnZ2luZyYmKHRoaXMuYm9keS5lbWl0dGVyLmVtaXQoInRpbWVjaGFuZ2VkIix7aWQ6dGhpcy5vcHRpb25zLmlkLHRpbWU6bmV3IERhdGUodGhpcy5jdXN0b21UaW1lLnZhbHVlT2YoKSl9KSx0LnN0b3BQcm9wYWdhdGlvbigpKX0sby5jdXN0b21UaW1lRnJvbVRhcmdldD1mdW5jdGlvbih0KXtmb3IodmFyIGU9dC50YXJnZXQ7ZTspe2lmKGUuaGFzT3duUHJvcGVydHkoImN1c3RvbS10aW1lIikpcmV0dXJuIGVbImN1c3RvbS10aW1lIl07ZT1lLnBhcmVudE5vZGV9cmV0dXJuIG51bGx9LHQuZXhwb3J0cz1vfSxmdW5jdGlvbih0LGUsaSl7ZnVuY3Rpb24gbyh0KXtyZXR1cm4gdCYmdC5fX2VzTW9kdWxlP3Q6eyJkZWZhdWx0Ijp0fX1mdW5jdGlvbiBuKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe2Zvcih2YXIgaT0wO2k8ZS5sZW5ndGg7aSsrKXt2YXIgbz1lW2ldO28uZW51bWVyYWJsZT1vLmVudW1lcmFibGV8fCExLG8uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBvJiYoby53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsby5rZXksbyl9fXJldHVybiBmdW5jdGlvbihlLGksbyl7cmV0dXJuIGkmJnQoZS5wcm90b3R5cGUsaSksbyYmdChlLG8pLGV9fSgpLHI9aSg0NiksYT1vKHIpLGg9aSg3KSxkPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLGksbyl7dmFyIHM9dm9pZCAwPT09YXJndW1lbnRzWzNdPzE6YXJndW1lbnRzWzNdO24odGhpcyx0KSx0aGlzLnBhcmVudD1lLHRoaXMuY2hhbmdlZE9wdGlvbnM9W10sdGhpcy5jb250YWluZXI9aSx0aGlzLmFsbG93Q3JlYXRpb249ITEsdGhpcy5vcHRpb25zPXt9LHRoaXMuZGVmYXVsdE9wdGlvbnM9e2VuYWJsZWQ6ITEsZmlsdGVyOiEwLGNvbnRhaW5lcjp2b2lkIDAsc2hvd0J1dHRvbjohMH0saC5leHRlbmQodGhpcy5vcHRpb25zLHRoaXMuZGVmYXVsdE9wdGlvbnMpLHRoaXMuY29uZmlndXJlT3B0aW9ucz1vLHRoaXMubW9kdWxlT3B0aW9ucz17fSx0aGlzLmRvbUVsZW1lbnRzPVtdLHRoaXMuY29sb3JQaWNrZXI9bmV3IGFbImRlZmF1bHQiXShzKSx0aGlzLndyYXBwZXI9dm9pZCAwfXJldHVybiBzKHQsW3trZXk6InNldE9wdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKHZvaWQgMCE9PXQpe3ZhciBlPSEwOyJzdHJpbmciPT10eXBlb2YgdD90aGlzLm9wdGlvbnMuZmlsdGVyPXQ6dCBpbnN0YW5jZW9mIEFycmF5P3RoaXMub3B0aW9ucy5maWx0ZXI9dC5qb2luKCk6Im9iamVjdCI9PXR5cGVvZiB0Pyh2b2lkIDAhPT10LmNvbnRhaW5lciYmKHRoaXMub3B0aW9ucy5jb250YWluZXI9dC5jb250YWluZXIpLHZvaWQgMCE9PXQuZmlsdGVyJiYodGhpcy5vcHRpb25zLmZpbHRlcj10LmZpbHRlciksdm9pZCAwIT09dC5zaG93QnV0dG9uJiYodGhpcy5vcHRpb25zLnNob3dCdXR0b249dC5zaG93QnV0dG9uKSx2b2lkIDAhPT10LmVuYWJsZWQmJihlPXQuZW5hYmxlZCkpOiJib29sZWFuIj09dHlwZW9mIHQ/KHRoaXMub3B0aW9ucy5maWx0ZXI9ITAsZT10KToiZnVuY3Rpb24iPT10eXBlb2YgdCYmKHRoaXMub3B0aW9ucy5maWx0ZXI9dCxlPSEwKSx0aGlzLm9wdGlvbnMuZmlsdGVyPT09ITEmJihlPSExKSx0aGlzLm9wdGlvbnMuZW5hYmxlZD1lfXRoaXMuX2NsZWFuKCl9fSx7a2V5OiJzZXRNb2R1bGVPcHRpb25zIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLm1vZHVsZU9wdGlvbnM9dCx0aGlzLm9wdGlvbnMuZW5hYmxlZD09PSEwJiYodGhpcy5fY2xlYW4oKSx2b2lkIDAhPT10aGlzLm9wdGlvbnMuY29udGFpbmVyJiYodGhpcy5jb250YWluZXI9dGhpcy5vcHRpb25zLmNvbnRhaW5lciksdGhpcy5fY3JlYXRlKCkpfX0se2tleToiX2NyZWF0ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuX2NsZWFuKCksdGhpcy5jaGFuZ2VkT3B0aW9ucz1bXTt2YXIgZT10aGlzLm9wdGlvbnMuZmlsdGVyLGk9MCxvPSExO2Zvcih2YXIgbiBpbiB0aGlzLmNvbmZpZ3VyZU9wdGlvbnMpdGhpcy5jb25maWd1cmVPcHRpb25zLmhhc093blByb3BlcnR5KG4pJiYodGhpcy5hbGxvd0NyZWF0aW9uPSExLG89ITEsImZ1bmN0aW9uIj09dHlwZW9mIGU/KG89ZShuLFtdKSxvPW98fHRoaXMuX2hhbmRsZU9iamVjdCh0aGlzLmNvbmZpZ3VyZU9wdGlvbnNbbl0sW25dLCEwKSk6KGU9PT0hMHx8LTEhPT1lLmluZGV4T2YobikpJiYobz0hMCksbyE9PSExJiYodGhpcy5hbGxvd0NyZWF0aW9uPSEwLGk+MCYmdGhpcy5fbWFrZUl0ZW0oW10pLHRoaXMuX21ha2VIZWFkZXIobiksdGhpcy5faGFuZGxlT2JqZWN0KHRoaXMuY29uZmlndXJlT3B0aW9uc1tuXSxbbl0pKSxpKyspO3RoaXMub3B0aW9ucy5zaG93QnV0dG9uPT09ITAmJiFmdW5jdGlvbigpe3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2UuY2xhc3NOYW1lPSJ2aXMtbmV0d29yay1jb25maWd1cmF0aW9uIGJ1dHRvbiIsZS5pbm5lckhUTUw9ImdlbmVyYXRlIG9wdGlvbnMiLGUub25jbGljaz1mdW5jdGlvbigpe3QuX3ByaW50T3B0aW9ucygpfSxlLm9ubW91c2VvdmVyPWZ1bmN0aW9uKCl7ZS5jbGFzc05hbWU9InZpcy1uZXR3b3JrLWNvbmZpZ3VyYXRpb24gYnV0dG9uIGhvdmVyIn0sZS5vbm1vdXNlb3V0PWZ1bmN0aW9uKCl7ZS5jbGFzc05hbWU9InZpcy1uZXR3b3JrLWNvbmZpZ3VyYXRpb24gYnV0dG9uIn0sdC5vcHRpb25zQ29udGFpbmVyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHQub3B0aW9uc0NvbnRhaW5lci5jbGFzc05hbWU9InZpcy1uZXR3b3JrLWNvbmZpZ3VyYXRpb24gdmlzLW9wdGlvbi1jb250YWluZXIiLHQuZG9tRWxlbWVudHMucHVzaCh0Lm9wdGlvbnNDb250YWluZXIpLHQuZG9tRWxlbWVudHMucHVzaChlKX0oKSx0aGlzLl9wdXNoKCksdGhpcy5jb2xvclBpY2tlci5pbnNlcnRUbyh0aGlzLmNvbnRhaW5lcil9fSx7a2V5OiJfcHVzaCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLndyYXBwZXI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy53cmFwcGVyLmNsYXNzTmFtZT0idmlzLW5ldHdvcmstY29uZmlndXJhdGlvbi13cmFwcGVyIix0aGlzLmNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLndyYXBwZXIpO2Zvcih2YXIgdD0wO3Q8dGhpcy5kb21FbGVtZW50cy5sZW5ndGg7dCsrKXRoaXMud3JhcHBlci5hcHBlbmRDaGlsZCh0aGlzLmRvbUVsZW1lbnRzW3RdKX19LHtrZXk6Il9jbGVhbiIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PHRoaXMuZG9tRWxlbWVudHMubGVuZ3RoO3QrKyl0aGlzLndyYXBwZXIucmVtb3ZlQ2hpbGQodGhpcy5kb21FbGVtZW50c1t0XSk7dm9pZCAwIT09dGhpcy53cmFwcGVyJiYodGhpcy5jb250YWluZXIucmVtb3ZlQ2hpbGQodGhpcy53cmFwcGVyKSx0aGlzLndyYXBwZXI9dm9pZCAwKSx0aGlzLmRvbUVsZW1lbnRzPVtdfX0se2tleToiX2dldFZhbHVlIix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy5tb2R1bGVPcHRpb25zLGk9MDtpPHQubGVuZ3RoO2krKyl7aWYodm9pZCAwPT09ZVt0W2ldXSl7ZT12b2lkIDA7YnJlYWt9ZT1lW3RbaV1dfXJldHVybiBlfX0se2tleToiX21ha2VJdGVtIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMsaT10aGlzO2lmKHRoaXMuYWxsb3dDcmVhdGlvbj09PSEwKXt2YXIgbyxuLHM7IWZ1bmN0aW9uKCl7dmFyIHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Zm9yKHIuY2xhc3NOYW1lPSJ2aXMtbmV0d29yay1jb25maWd1cmF0aW9uIGl0ZW0gcyIrdC5sZW5ndGgsbz1lLmxlbmd0aCxuPUFycmF5KG8+MT9vLTE6MCkscz0xO28+cztzKyspbltzLTFdPWVbc107bi5mb3JFYWNoKGZ1bmN0aW9uKHQpe3IuYXBwZW5kQ2hpbGQodCl9KSxpLmRvbUVsZW1lbnRzLnB1c2gocil9KCl9fX0se2tleToiX21ha2VIZWFkZXIiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2UuY2xhc3NOYW1lPSJ2aXMtbmV0d29yay1jb25maWd1cmF0aW9uIGhlYWRlciIsZS5pbm5lckhUTUw9dCx0aGlzLl9tYWtlSXRlbShbXSxlKX19LHtrZXk6Il9tYWtlTGFiZWwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dm9pZCAwPT09YXJndW1lbnRzWzJdPyExOmFyZ3VtZW50c1syXSxvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBvLmNsYXNzTmFtZT0idmlzLW5ldHdvcmstY29uZmlndXJhdGlvbiBsYWJlbCBzIitlLmxlbmd0aCxpPT09ITA/by5pbm5lckhUTUw9IjxpPjxiPiIrdCsiOjwvYj48L2k+IjpvLmlubmVySFRNTD10KyI6IixvfX0se2tleToiX21ha2VEcm9wZG93biIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpe3ZhciBvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpO28uY2xhc3NOYW1lPSJ2aXMtbmV0d29yay1jb25maWd1cmF0aW9uIHNlbGVjdCI7dmFyIG49MDt2b2lkIDAhPT1lJiYtMSE9PXQuaW5kZXhPZihlKSYmKG49dC5pbmRleE9mKGUpKTtmb3IodmFyIHM9MDtzPHQubGVuZ3RoO3MrKyl7dmFyIHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIik7ci52YWx1ZT10W3NdLHM9PT1uJiYoci5zZWxlY3RlZD0ic2VsZWN0ZWQiKSxyLmlubmVySFRNTD10W3NdLG8uYXBwZW5kQ2hpbGQocil9dmFyIGE9dGhpcztvLm9uY2hhbmdlPWZ1bmN0aW9uKCl7YS5fdXBkYXRlKHRoaXMudmFsdWUsaSl9O3ZhciBoPXRoaXMuX21ha2VMYWJlbChpW2kubGVuZ3RoLTFdLGkpO3RoaXMuX21ha2VJdGVtKGksaCxvKX19LHtrZXk6Il9tYWtlUmFuZ2UiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbz10WzBdLG49dFsxXSxzPXRbMl0scj10WzNdLGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTthLmNsYXNzTmFtZT0idmlzLW5ldHdvcmstY29uZmlndXJhdGlvbiByYW5nZSI7dHJ5e2EudHlwZT0icmFuZ2UiLGEubWluPW4sYS5tYXg9c31jYXRjaChoKXt9YS5zdGVwPXIsdm9pZCAwIT09ZT8oMD5lJiZuPjIqZT9hLm1pbj0yKmU6bj4uMSplJiYoYS5taW49ZS8xMCksMiplPnMmJjEhPT1zJiYoYS5tYXg9MiplKSxhLnZhbHVlPWUpOmEudmFsdWU9bzt2YXIgZD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO2QuY2xhc3NOYW1lPSJ2aXMtbmV0d29yay1jb25maWd1cmF0aW9uIHJhbmdlaW5wdXQiLGQudmFsdWU9YS52YWx1ZTt2YXIgbD10aGlzO2Eub25jaGFuZ2U9ZnVuY3Rpb24oKXtkLnZhbHVlPXRoaXMudmFsdWUsbC5fdXBkYXRlKE51bWJlcih0aGlzLnZhbHVlKSxpKX0sYS5vbmlucHV0PWZ1bmN0aW9uKCl7ZC52YWx1ZT10aGlzLnZhbHVlfTt2YXIgdT10aGlzLl9tYWtlTGFiZWwoaVtpLmxlbmd0aC0xXSxpKTt0aGlzLl9tYWtlSXRlbShpLHUsYSxkKX19LHtrZXk6Il9tYWtlQ2hlY2tib3giLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO28udHlwZT0iY2hlY2tib3giLG8uY2xhc3NOYW1lPSJ2aXMtbmV0d29yay1jb25maWd1cmF0aW9uIGNoZWNrYm94IixvLmNoZWNrZWQ9dCx2b2lkIDAhPT1lJiYoby5jaGVja2VkPWUsZSE9PXQmJigib2JqZWN0Ij09dHlwZW9mIHQ/ZSE9PXQuZW5hYmxlZCYmdGhpcy5jaGFuZ2VkT3B0aW9ucy5wdXNoKHtwYXRoOmksdmFsdWU6ZX0pOnRoaXMuY2hhbmdlZE9wdGlvbnMucHVzaCh7cGF0aDppLHZhbHVlOmV9KSkpO3ZhciBuPXRoaXM7by5vbmNoYW5nZT1mdW5jdGlvbigpe24uX3VwZGF0ZSh0aGlzLmNoZWNrZWQsaSl9O3ZhciBzPXRoaXMuX21ha2VMYWJlbChpW2kubGVuZ3RoLTFdLGkpO3RoaXMuX21ha2VJdGVtKGkscyxvKX19LHtrZXk6Il9tYWtlVGV4dElucHV0Iix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIG89ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTtvLnR5cGU9InRleHQiLG8uY2xhc3NOYW1lPSJ2aXMtbmV0d29yay1jb25maWd1cmF0aW9uIHRleHQiLG8udmFsdWU9ZSxlIT09dCYmdGhpcy5jaGFuZ2VkT3B0aW9ucy5wdXNoKHtwYXRoOmksdmFsdWU6ZX0pO3ZhciBuPXRoaXM7by5vbmNoYW5nZT1mdW5jdGlvbigpe24uX3VwZGF0ZSh0aGlzLnZhbHVlLGkpfTt2YXIgcz10aGlzLl9tYWtlTGFiZWwoaVtpLmxlbmd0aC0xXSxpKTt0aGlzLl9tYWtlSXRlbShpLHMsbyl9fSx7a2V5OiJfbWFrZUNvbG9yRmllbGQiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbz10aGlzLG49dFsxXSxzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2U9dm9pZCAwPT09ZT9uOmUsIm5vbmUiIT09ZT8ocy5jbGFzc05hbWU9InZpcy1uZXR3b3JrLWNvbmZpZ3VyYXRpb24gY29sb3JCbG9jayIscy5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9ZSk6cy5jbGFzc05hbWU9InZpcy1uZXR3b3JrLWNvbmZpZ3VyYXRpb24gY29sb3JCbG9jayBub25lIixlPXZvaWQgMD09PWU/bjplLHMub25jbGljaz1mdW5jdGlvbigpe28uX3Nob3dDb2xvclBpY2tlcihlLHMsaSl9O3ZhciByPXRoaXMuX21ha2VMYWJlbChpW2kubGVuZ3RoLTFdLGkpO3RoaXMuX21ha2VJdGVtKGkscixzKX19LHtrZXk6Il9zaG93Q29sb3JQaWNrZXIiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbz10aGlzLG49ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxzPWRvY3VtZW50LmJvZHkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscj1uLmxlZnQrbi53aWR0aCs1LGE9bi50b3Atcy50b3ArLjUqbi5oZWlnaHQ7dGhpcy5jb2xvclBpY2tlci5zaG93KHIsYSksdGhpcy5jb2xvclBpY2tlci5zZXRDb2xvcih0KSx0aGlzLmNvbG9yUGlja2VyLnNldENhbGxiYWNrKGZ1bmN0aW9uKHQpe3ZhciBuPSJyZ2JhKCIrdC5yKyIsIit0LmcrIiwiK3QuYisiLCIrdC5hKyIpIjtlLnN0eWxlLmJhY2tncm91bmRDb2xvcj1uLG8uX3VwZGF0ZShuLGkpfSl9fSx7a2V5OiJfaGFuZGxlT2JqZWN0Iix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT12b2lkIDA9PT1hcmd1bWVudHNbMV0/W106YXJndW1lbnRzWzFdLGk9dm9pZCAwPT09YXJndW1lbnRzWzJdPyExOmFyZ3VtZW50c1syXSxvPSExLG49dGhpcy5vcHRpb25zLmZpbHRlcixzPSExO2Zvcih2YXIgciBpbiB0KWlmKHQuaGFzT3duUHJvcGVydHkocikpe289ITA7dmFyIGE9dFtyXSxkPWguY29weUFuZEV4dGVuZEFycmF5KGUscik7aWYoImZ1bmN0aW9uIj09dHlwZW9mIG4mJihvPW4ocixlKSxvPT09ITEmJiEoYSBpbnN0YW5jZW9mIEFycmF5KSYmInN0cmluZyIhPXR5cGVvZiBhJiYiYm9vbGVhbiIhPXR5cGVvZiBhJiZhIGluc3RhbmNlb2YgT2JqZWN0JiYodGhpcy5hbGxvd0NyZWF0aW9uPSExLG89dGhpcy5faGFuZGxlT2JqZWN0KGEsZCwhMCksdGhpcy5hbGxvd0NyZWF0aW9uPWk9PT0hMSkpLG8hPT0hMSl7cz0hMDt2YXIgbD10aGlzLl9nZXRWYWx1ZShkKTtpZihhIGluc3RhbmNlb2YgQXJyYXkpdGhpcy5faGFuZGxlQXJyYXkoYSxsLGQpO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBhKXRoaXMuX21ha2VUZXh0SW5wdXQoYSxsLGQpO2Vsc2UgaWYoImJvb2xlYW4iPT10eXBlb2YgYSl0aGlzLl9tYWtlQ2hlY2tib3goYSxsLGQpO2Vsc2UgaWYoYSBpbnN0YW5jZW9mIE9iamVjdCl7dmFyIHU9ITA7aWYoLTEhPT1lLmluZGV4T2YoInBoeXNpY3MiKSYmdGhpcy5tb2R1bGVPcHRpb25zLnBoeXNpY3Muc29sdmVyIT09ciYmKHU9ITEpLHU9PT0hMClpZih2b2lkIDAhPT1hLmVuYWJsZWQpe3ZhciBjPWguY29weUFuZEV4dGVuZEFycmF5KGQsImVuYWJsZWQiKSxwPXRoaXMuX2dldFZhbHVlKGMpO2lmKHA9PT0hMCl7dmFyIGY9dGhpcy5fbWFrZUxhYmVsKHIsZCwhMCk7dGhpcy5fbWFrZUl0ZW0oZCxmKSxzPXRoaXMuX2hhbmRsZU9iamVjdChhLGQpfHxzfWVsc2UgdGhpcy5fbWFrZUNoZWNrYm94KGEscCxkKX1lbHNle3ZhciBmPXRoaXMuX21ha2VMYWJlbChyLGQsITApO3RoaXMuX21ha2VJdGVtKGQsZikscz10aGlzLl9oYW5kbGVPYmplY3QoYSxkKXx8c319ZWxzZSBjb25zb2xlLmVycm9yKCJkb250IGtub3cgaG93IHRvIGhhbmRsZSIsYSxyLGQpfX1yZXR1cm4gc319LHtrZXk6Il9oYW5kbGVBcnJheSIsdmFsdWU6ZnVuY3Rpb24odCxlLGkpeyJzdHJpbmciPT10eXBlb2YgdFswXSYmImNvbG9yIj09PXRbMF0/KHRoaXMuX21ha2VDb2xvckZpZWxkKHQsZSxpKSx0WzFdIT09ZSYmdGhpcy5jaGFuZ2VkT3B0aW9ucy5wdXNoKHtwYXRoOmksdmFsdWU6ZX0pKToic3RyaW5nIj09dHlwZW9mIHRbMF0/KHRoaXMuX21ha2VEcm9wZG93bih0LGUsaSksdFswXSE9PWUmJnRoaXMuY2hhbmdlZE9wdGlvbnMucHVzaCh7cGF0aDppLHZhbHVlOmV9KSk6Im51bWJlciI9PXR5cGVvZiB0WzBdJiYodGhpcy5fbWFrZVJhbmdlKHQsZSxpKSx0WzBdIT09ZSYmdGhpcy5jaGFuZ2VkT3B0aW9ucy5wdXNoKHtwYXRoOmksdmFsdWU6TnVtYmVyKGUpfSkpfX0se2tleToiX3VwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLl9jb25zdHJ1Y3RPcHRpb25zKHQsZSk7dGhpcy5wYXJlbnQuc2V0T3B0aW9ucyhpKX19LHtrZXk6Il9jb25zdHJ1Y3RPcHRpb25zIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpPXZvaWQgMD09PWFyZ3VtZW50c1syXT97fTphcmd1bWVudHNbMl0sbz1pO3Q9InRydWUiPT09dD8hMDp0LHQ9ImZhbHNlIj09PXQ/ITE6dDtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKykiZ2xvYmFsIiE9PWVbbl0mJih2b2lkIDA9PT1vW2Vbbl1dJiYob1tlW25dXT17fSksbiE9PWUubGVuZ3RoLTE/bz1vW2Vbbl1dOm9bZVtuXV09dCk7cmV0dXJuIGl9fSx7a2V5OiJfcHJpbnRPcHRpb25zIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZ2V0T3B0aW9ucygpO3RoaXMub3B0aW9uc0NvbnRhaW5lci5pbm5lckhUTUw9IjxwcmU+dmFyIG9wdGlvbnMgPSAiK0pTT04uc3RyaW5naWZ5KHQsbnVsbCwyKSsiPC9wcmU+In19LHtrZXk6ImdldE9wdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXt9LGU9MDtlPHRoaXMuY2hhbmdlZE9wdGlvbnMubGVuZ3RoO2UrKyl0aGlzLl9jb25zdHJ1Y3RPcHRpb25zKHRoaXMuY2hhbmdlZE9wdGlvbnNbZV0udmFsdWUsdGhpcy5jaGFuZ2VkT3B0aW9uc1tlXS5wYXRoLHQpO3JldHVybiB0fX1dKSx0fSgpO2VbImRlZmF1bHQiXT1kLHQuZXhwb3J0cz1lWyJkZWZhdWx0Il19LGZ1bmN0aW9uKHQsZSxpKXtmdW5jdGlvbiBvKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe2Zvcih2YXIgaT0wO2k8ZS5sZW5ndGg7aSsrKXt2YXIgbz1lW2ldO28uZW51bWVyYWJsZT1vLmVudW1lcmFibGV8fCExLG8uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBvJiYoby53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsby5rZXksbyl9fXJldHVybiBmdW5jdGlvbihlLGksbyl7cmV0dXJuIGkmJnQoZS5wcm90b3R5cGUsaSksbyYmdChlLG8pLGV9fSgpLHM9aSgzKSxyPWkoMzApLGE9aSg3KSxoPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3ZhciBlPXZvaWQgMD09PWFyZ3VtZW50c1swXT8xOmFyZ3VtZW50c1swXTtvKHRoaXMsdCksdGhpcy5waXhlbFJhdGlvPWUsdGhpcy5nZW5lcmF0ZWQ9ITEsdGhpcy5jZW50ZXJDb29yZGluYXRlcz17eDoxNDQuNSx5OjE0NC41fSx0aGlzLnI9Mjg5Ki40OSx0aGlzLmNvbG9yPXtyOjI1NSxnOjI1NSxiOjI1NSxhOjF9LHRoaXMuaHVlQ2lyY2xlPXZvaWQgMCx0aGlzLmluaXRpYWxDb2xvcj17cjoyNTUsZzoyNTUsYjoyNTUsYToxfSx0aGlzLnByZXZpb3VzQ29sb3I9dm9pZCAwLHRoaXMuYXBwbGllZD0hMSx0aGlzLnVwZGF0ZUNhbGxiYWNrPWZ1bmN0aW9uKCl7fSx0aGlzLl9jcmVhdGUoKX1yZXR1cm4gbih0LFt7a2V5OiJpbnNlcnRUbyIsdmFsdWU6ZnVuY3Rpb24odCl7dm9pZCAwIT09dGhpcy5oYW1tZXImJih0aGlzLmhhbW1lci5kZXN0cm95KCksdGhpcy5oYW1tZXI9dm9pZCAwKSx0aGlzLmNvbnRhaW5lcj10LHRoaXMuY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuZnJhbWUpLHRoaXMuX2JpbmRIYW1tZXIoKSx0aGlzLl9zZXRTaXplKCl9fSx7a2V5OiJzZXRDYWxsYmFjayIsdmFsdWU6ZnVuY3Rpb24odCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKCJGdW5jdGlvbiBhdHRlbXB0ZWQgdG8gc2V0IGFzIGNvbG9yUGlja2VyIGNhbGxiYWNrIGlzIG5vdCBhIGZ1bmN0aW9uLiIpO3RoaXMudXBkYXRlQ2FsbGJhY2s9dH19LHtrZXk6Il9pc0NvbG9yU3RyaW5nIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT17YmxhY2s6IiMwMDAwMDAiLG5hdnk6IiMwMDAwODAiLGRhcmtibHVlOiIjMDAwMDhCIixtZWRpdW1ibHVlOiIjMDAwMENEIixibHVlOiIjMDAwMEZGIixkYXJrZ3JlZW46IiMwMDY0MDAiLGdyZWVuOiIjMDA4MDAwIix0ZWFsOiIjMDA4MDgwIixkYXJrY3lhbjoiIzAwOEI4QiIsZGVlcHNreWJsdWU6IiMwMEJGRkYiLGRhcmt0dXJxdW9pc2U6IiMwMENFRDEiLG1lZGl1bXNwcmluZ2dyZWVuOiIjMDBGQTlBIixsaW1lOiIjMDBGRjAwIixzcHJpbmdncmVlbjoiIzAwRkY3RiIsYXF1YToiIzAwRkZGRiIsY3lhbjoiIzAwRkZGRiIsbWlkbmlnaHRibHVlOiIjMTkxOTcwIixkb2RnZXJibHVlOiIjMUU5MEZGIixsaWdodHNlYWdyZWVuOiIjMjBCMkFBIixmb3Jlc3RncmVlbjoiIzIyOEIyMiIsc2VhZ3JlZW46IiMyRThCNTciLGRhcmtzbGF0ZWdyYXk6IiMyRjRGNEYiLGxpbWVncmVlbjoiIzMyQ0QzMiIsbWVkaXVtc2VhZ3JlZW46IiMzQ0IzNzEiLHR1cnF1b2lzZToiIzQwRTBEMCIscm95YWxibHVlOiIjNDE2OUUxIixzdGVlbGJsdWU6IiM0NjgyQjQiLGRhcmtzbGF0ZWJsdWU6IiM0ODNEOEIiLG1lZGl1bXR1cnF1b2lzZToiIzQ4RDFDQyIsaW5kaWdvOiIjNEIwMDgyIixkYXJrb2xpdmVncmVlbjoiIzU1NkIyRiIsY2FkZXRibHVlOiIjNUY5RUEwIixjb3JuZmxvd2VyYmx1ZToiIzY0OTVFRCIsbWVkaXVtYXF1YW1hcmluZToiIzY2Q0RBQSIsZGltZ3JheToiIzY5Njk2OSIsc2xhdGVibHVlOiIjNkE1QUNEIixvbGl2ZWRyYWI6IiM2QjhFMjMiLHNsYXRlZ3JheToiIzcwODA5MCIsbGlnaHRzbGF0ZWdyYXk6IiM3Nzg4OTkiLG1lZGl1bXNsYXRlYmx1ZToiIzdCNjhFRSIsbGF3bmdyZWVuOiIjN0NGQzAwIixjaGFydHJldXNlOiIjN0ZGRjAwIixhcXVhbWFyaW5lOiIjN0ZGRkQ0IixtYXJvb246IiM4MDAwMDAiLHB1cnBsZToiIzgwMDA4MCIsb2xpdmU6IiM4MDgwMDAiLGdyYXk6IiM4MDgwODAiLHNreWJsdWU6IiM4N0NFRUIiLGxpZ2h0c2t5Ymx1ZToiIzg3Q0VGQSIsYmx1ZXZpb2xldDoiIzhBMkJFMiIsZGFya3JlZDoiIzhCMDAwMCIsZGFya21hZ2VudGE6IiM4QjAwOEIiLHNhZGRsZWJyb3duOiIjOEI0NTEzIixkYXJrc2VhZ3JlZW46IiM4RkJDOEYiLGxpZ2h0Z3JlZW46IiM5MEVFOTAiLG1lZGl1bXB1cnBsZToiIzkzNzBEOCIsZGFya3Zpb2xldDoiIzk0MDBEMyIscGFsZWdyZWVuOiIjOThGQjk4IixkYXJrb3JjaGlkOiIjOTkzMkNDIix5ZWxsb3dncmVlbjoiIzlBQ0QzMiIsc2llbm5hOiIjQTA1MjJEIixicm93bjoiI0E1MkEyQSIsZGFya2dyYXk6IiNBOUE5QTkiLGxpZ2h0Ymx1ZToiI0FERDhFNiIsZ3JlZW55ZWxsb3c6IiNBREZGMkYiLHBhbGV0dXJxdW9pc2U6IiNBRkVFRUUiLGxpZ2h0c3RlZWxibHVlOiIjQjBDNERFIixwb3dkZXJibHVlOiIjQjBFMEU2IixmaXJlYnJpY2s6IiNCMjIyMjIiLGRhcmtnb2xkZW5yb2Q6IiNCODg2MEIiLG1lZGl1bW9yY2hpZDoiI0JBNTVEMyIscm9zeWJyb3duOiIjQkM4RjhGIixkYXJra2hha2k6IiNCREI3NkIiLHNpbHZlcjoiI0MwQzBDMCIsbWVkaXVtdmlvbGV0cmVkOiIjQzcxNTg1IixpbmRpYW5yZWQ6IiNDRDVDNUMiLHBlcnU6IiNDRDg1M0YiLGNob2NvbGF0ZToiI0QyNjkxRSIsdGFuOiIjRDJCNDhDIixsaWdodGdyZXk6IiNEM0QzRDMiLHBhbGV2aW9sZXRyZWQ6IiNEODcwOTMiLHRoaXN0bGU6IiNEOEJGRDgiLG9yY2hpZDoiI0RBNzBENiIsZ29sZGVucm9kOiIjREFBNTIwIixjcmltc29uOiIjREMxNDNDIixnYWluc2Jvcm86IiNEQ0RDREMiLHBsdW06IiNEREEwREQiLGJ1cmx5d29vZDoiI0RFQjg4NyIsbGlnaHRjeWFuOiIjRTBGRkZGIixsYXZlbmRlcjoiI0U2RTZGQSIsZGFya3NhbG1vbjoiI0U5OTY3QSIsdmlvbGV0OiIjRUU4MkVFIixwYWxlZ29sZGVucm9kOiIjRUVFOEFBIixsaWdodGNvcmFsOiIjRjA4MDgwIixraGFraToiI0YwRTY4QyIsYWxpY2VibHVlOiIjRjBGOEZGIixob25leWRldzoiI0YwRkZGMCIsYXp1cmU6IiNGMEZGRkYiLHNhbmR5YnJvd246IiNGNEE0NjAiLHdoZWF0OiIjRjVERUIzIixiZWlnZToiI0Y1RjVEQyIsd2hpdGVzbW9rZToiI0Y1RjVGNSIsbWludGNyZWFtOiIjRjVGRkZBIixnaG9zdHdoaXRlOiIjRjhGOEZGIixzYWxtb246IiNGQTgwNzIiLGFudGlxdWV3aGl0ZToiI0ZBRUJENyIsbGluZW46IiNGQUYwRTYiLGxpZ2h0Z29sZGVucm9keWVsbG93OiIjRkFGQUQyIixvbGRsYWNlOiIjRkRGNUU2IixyZWQ6IiNGRjAwMDAiLGZ1Y2hzaWE6IiNGRjAwRkYiLG1hZ2VudGE6IiNGRjAwRkYiLGRlZXBwaW5rOiIjRkYxNDkzIixvcmFuZ2VyZWQ6IiNGRjQ1MDAiLHRvbWF0bzoiI0ZGNjM0NyIsaG90cGluazoiI0ZGNjlCNCIsY29yYWw6IiNGRjdGNTAiLGRhcmtvcmFuZ2U6IiNGRjhDMDAiLGxpZ2h0c2FsbW9uOiIjRkZBMDdBIixvcmFuZ2U6IiNGRkE1MDAiLGxpZ2h0cGluazoiI0ZGQjZDMSIscGluazoiI0ZGQzBDQiIsZ29sZDoiI0ZGRDcwMCIscGVhY2hwdWZmOiIjRkZEQUI5IixuYXZham93aGl0ZToiI0ZGREVBRCIsbW9jY2FzaW46IiNGRkU0QjUiLGJpc3F1ZToiI0ZGRTRDNCIsbWlzdHlyb3NlOiIjRkZFNEUxIixibGFuY2hlZGFsbW9uZDoiI0ZGRUJDRCIscGFwYXlhd2hpcDoiI0ZGRUZENSIsbGF2ZW5kZXJibHVzaDoiI0ZGRjBGNSIsc2Vhc2hlbGw6IiNGRkY1RUUiLGNvcm5zaWxrOiIjRkZGOERDIixsZW1vbmNoaWZmb246IiNGRkZBQ0QiLGZsb3JhbHdoaXRlOiIjRkZGQUYwIixzbm93OiIjRkZGQUZBIix5ZWxsb3c6IiNGRkZGMDAiLGxpZ2h0eWVsbG93OiIjRkZGRkUwIixpdm9yeToiI0ZGRkZGMCIsd2hpdGU6IiNGRkZGRkYifTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/ZVt0XTp2b2lkIDB9fSx7a2V5OiJzZXRDb2xvciIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dm9pZCAwPT09YXJndW1lbnRzWzFdPyEwOmFyZ3VtZW50c1sxXTtpZigibm9uZSIhPT10KXt2YXIgaT12b2lkIDAsbz10aGlzLl9pc0NvbG9yU3RyaW5nKHQpO2lmKHZvaWQgMCE9PW8mJih0PW8pLGEuaXNTdHJpbmcodCk9PT0hMCl7aWYoYS5pc1ZhbGlkUkdCKHQpPT09ITApe3ZhciBuPXQuc3Vic3RyKDQpLnN1YnN0cigwLHQubGVuZ3RoLTUpLnNwbGl0KCIsIik7aT17cjpuWzBdLGc6blsxXSxiOm5bMl0sYToxfX1lbHNlIGlmKGEuaXNWYWxpZFJHQkEodCk9PT0hMCl7dmFyIG49dC5zdWJzdHIoNSkuc3Vic3RyKDAsdC5sZW5ndGgtNikuc3BsaXQoIiwiKTtpPXtyOm5bMF0sZzpuWzFdLGI6blsyXSxhOm5bM119fWVsc2UgaWYoYS5pc1ZhbGlkSGV4KHQpPT09ITApe3ZhciBzPWEuaGV4VG9SR0IodCk7aT17cjpzLnIsZzpzLmcsYjpzLmIsYToxfX19ZWxzZSBpZih0IGluc3RhbmNlb2YgT2JqZWN0JiZ2b2lkIDAhPT10LnImJnZvaWQgMCE9PXQuZyYmdm9pZCAwIT09dC5iKXt2YXIgcj12b2lkIDAhPT10LmE/dC5hOiIxLjAiO2k9e3I6dC5yLGc6dC5nLGI6dC5iLGE6cn19aWYodm9pZCAwPT09aSl0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gY29sb3IgcGFzc2VkIHRvIHRoZSBjb2xvclBpY2tlci4gU3VwcG9ydGVkIGFyZSBzdHJpbmdzOiByZ2IsIGhleCwgcmdiYS4gT2JqZWN0OiByZ2IgKHtyOnIsZzpnLGI6YixbYTphXX0pLiBTdXBwbGllZDogIitKU09OLnN0cmluZ2lmeSh0KSk7dGhpcy5fc2V0Q29sb3IoaSxlKX19fSx7a2V5OiJzaG93Iix2YWx1ZTpmdW5jdGlvbih0LGUpe3RoaXMuYXBwbGllZD0hMSx0aGlzLmZyYW1lLnN0eWxlLmRpc3BsYXk9ImJsb2NrIix0aGlzLmZyYW1lLnN0eWxlLnRvcD1lKyJweCIsdGhpcy5mcmFtZS5zdHlsZS5sZWZ0PXQrInB4Iix0aGlzLl9nZW5lcmF0ZUh1ZUNpcmNsZSgpfX0se2tleToiX2hpZGUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dm9pZCAwPT09YXJndW1lbnRzWzBdPyEwOmFyZ3VtZW50c1swXTt0PT09ITAmJih0aGlzLnByZXZpb3VzQ29sb3I9YS5leHRlbmQoe30sdGhpcy5jb2xvcikpLHRoaXMuYXBwbGllZD09PSEwJiZ0aGlzLnVwZGF0ZUNhbGxiYWNrKHRoaXMuaW5pdGlhbENvbG9yKSx0aGlzLmZyYW1lLnN0eWxlLmRpc3BsYXk9Im5vbmUifX0se2tleToiX3NhdmUiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy51cGRhdGVDYWxsYmFjayh0aGlzLmNvbG9yKSx0aGlzLmFwcGxpZWQ9ITEsdGhpcy5faGlkZSgpfX0se2tleToiX2FwcGx5Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuYXBwbGllZD0hMCx0aGlzLnVwZGF0ZUNhbGxiYWNrKHRoaXMuY29sb3IpLHRoaXMuX3VwZGF0ZVBpY2tlcih0aGlzLmNvbG9yKX19LHtrZXk6Il9sb2FkTGFzdCIsdmFsdWU6ZnVuY3Rpb24oKXt2b2lkIDAhPT10aGlzLnByZXZpb3VzQ29sb3I/dGhpcy5zZXRDb2xvcih0aGlzLnByZXZpb3VzQ29sb3IsITEpOmFsZXJ0KCJUaGVyZSBpcyBubyBsYXN0IGNvbG9yIHRvIGxvYWQuLi4iKX19LHtrZXk6Il9zZXRDb2xvciIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dm9pZCAwPT09YXJndW1lbnRzWzFdPyEwOmFyZ3VtZW50c1sxXTtlPT09ITAmJih0aGlzLmluaXRpYWxDb2xvcj1hLmV4dGVuZCh7fSx0KSksdGhpcy5jb2xvcj10O3ZhciBpPWEuUkdCVG9IU1YodC5yLHQuZyx0LmIpLG89MipNYXRoLlBJLG49dGhpcy5yKmkucyxzPXRoaXMuY2VudGVyQ29vcmRpbmF0ZXMueCtuKk1hdGguc2luKG8qaS5oKSxyPXRoaXMuY2VudGVyQ29vcmRpbmF0ZXMueStuKk1hdGguY29zKG8qaS5oKTt0aGlzLmNvbG9yUGlja2VyU2VsZWN0b3Iuc3R5bGUubGVmdD1zLS41KnRoaXMuY29sb3JQaWNrZXJTZWxlY3Rvci5jbGllbnRXaWR0aCsicHgiLHRoaXMuY29sb3JQaWNrZXJTZWxlY3Rvci5zdHlsZS50b3A9ci0uNSp0aGlzLmNvbG9yUGlja2VyU2VsZWN0b3IuY2xpZW50SGVpZ2h0KyJweCIsdGhpcy5fdXBkYXRlUGlja2VyKHQpfX0se2tleToiX3NldE9wYWNpdHkiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuY29sb3IuYT10LzEwMCx0aGlzLl91cGRhdGVQaWNrZXIodGhpcy5jb2xvcil9fSx7a2V5OiJfc2V0QnJpZ2h0bmVzcyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9YS5SR0JUb0hTVih0aGlzLmNvbG9yLnIsdGhpcy5jb2xvci5nLHRoaXMuY29sb3IuYik7ZS52PXQvMTAwO3ZhciBpPWEuSFNWVG9SR0IoZS5oLGUucyxlLnYpO2kuYT10aGlzLmNvbG9yLmEsdGhpcy5jb2xvcj1pLHRoaXMuX3VwZGF0ZVBpY2tlcigpfX0se2tleToiX3VwZGF0ZVBpY2tlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD12b2lkIDA9PT1hcmd1bWVudHNbMF0/dGhpcy5jb2xvcjphcmd1bWVudHNbMF0sZT1hLlJHQlRvSFNWKHQucix0LmcsdC5iKSxpPXRoaXMuY29sb3JQaWNrZXJDYW52YXMuZ2V0Q29udGV4dCgiMmQiKTt2b2lkIDA9PT10aGlzLnBpeGVsUmF0aW9uJiYodGhpcy5waXhlbFJhdGlvPSh3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpb3x8MSkvKGkud2Via2l0QmFja2luZ1N0b3JlUGl4ZWxSYXRpb3x8aS5tb3pCYWNraW5nU3RvcmVQaXhlbFJhdGlvfHxpLm1zQmFja2luZ1N0b3JlUGl4ZWxSYXRpb3x8aS5vQmFja2luZ1N0b3JlUGl4ZWxSYXRpb3x8aS5iYWNraW5nU3RvcmVQaXhlbFJhdGlvfHwxKSksaS5zZXRUcmFuc2Zvcm0odGhpcy5waXhlbFJhdGlvLDAsMCx0aGlzLnBpeGVsUmF0aW8sMCwwKTt2YXIgbz10aGlzLmNvbG9yUGlja2VyQ2FudmFzLmNsaWVudFdpZHRoLG49dGhpcy5jb2xvclBpY2tlckNhbnZhcy5jbGllbnRIZWlnaHQ7aS5jbGVhclJlY3QoMCwwLG8sbiksaS5wdXRJbWFnZURhdGEodGhpcy5odWVDaXJjbGUsMCwwKSxpLmZpbGxTdHlsZT0icmdiYSgwLDAsMCwiKygxLWUudikrIikiLGkuY2lyY2xlKHRoaXMuY2VudGVyQ29vcmRpbmF0ZXMueCx0aGlzLmNlbnRlckNvb3JkaW5hdGVzLnksdGhpcy5yKSxpLmZpbGwoKSx0aGlzLmJyaWdodG5lc3NSYW5nZS52YWx1ZT0xMDAqZS52LHRoaXMub3BhY2l0eVJhbmdlLnZhbHVlPTEwMCp0LmEsdGhpcy5pbml0aWFsQ29sb3JEaXYuc3R5bGUuYmFja2dyb3VuZENvbG9yPSJyZ2JhKCIrdGhpcy5pbml0aWFsQ29sb3IucisiLCIrdGhpcy5pbml0aWFsQ29sb3IuZysiLCIrdGhpcy5pbml0aWFsQ29sb3IuYisiLCIrdGhpcy5pbml0aWFsQ29sb3IuYSsiKSIsdGhpcy5uZXdDb2xvckRpdi5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9InJnYmEoIit0aGlzLmNvbG9yLnIrIiwiK3RoaXMuY29sb3IuZysiLCIrdGhpcy5jb2xvci5iKyIsIit0aGlzLmNvbG9yLmErIikifX0se2tleToiX3NldFNpemUiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5jb2xvclBpY2tlckNhbnZhcy5zdHlsZS53aWR0aD0iMTAwJSIsdGhpcy5jb2xvclBpY2tlckNhbnZhcy5zdHlsZS5oZWlnaHQ9IjEwMCUiLHRoaXMuY29sb3JQaWNrZXJDYW52YXMud2lkdGg9Mjg5KnRoaXMucGl4ZWxSYXRpbyx0aGlzLmNvbG9yUGlja2VyQ2FudmFzLmhlaWdodD0yODkqdGhpcy5waXhlbFJhdGlvfX0se2tleToiX2NyZWF0ZSIsdmFsdWU6ZnVuY3Rpb24oKXtpZih0aGlzLmZyYW1lPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuZnJhbWUuY2xhc3NOYW1lPSJ2aXMtY29sb3ItcGlja2VyIix0aGlzLmNvbG9yUGlja2VyRGl2PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuY29sb3JQaWNrZXJTZWxlY3Rvcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLmNvbG9yUGlja2VyU2VsZWN0b3IuY2xhc3NOYW1lPSJ2aXMtc2VsZWN0b3IiLHRoaXMuY29sb3JQaWNrZXJEaXYuYXBwZW5kQ2hpbGQodGhpcy5jb2xvclBpY2tlclNlbGVjdG9yKSx0aGlzLmNvbG9yUGlja2VyQ2FudmFzPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLHRoaXMuY29sb3JQaWNrZXJEaXYuYXBwZW5kQ2hpbGQodGhpcy5jb2xvclBpY2tlckNhbnZhcyksdGhpcy5jb2xvclBpY2tlckNhbnZhcy5nZXRDb250ZXh0KXt2YXIgdD10aGlzLmNvbG9yUGlja2VyQ2FudmFzLmdldENvbnRleHQoIjJkIik7dGhpcy5waXhlbFJhdGlvPSh3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpb3x8MSkvKHQud2Via2l0QmFja2luZ1N0b3JlUGl4ZWxSYXRpb3x8dC5tb3pCYWNraW5nU3RvcmVQaXhlbFJhdGlvfHx0Lm1zQmFja2luZ1N0b3JlUGl4ZWxSYXRpb3x8dC5vQmFja2luZ1N0b3JlUGl4ZWxSYXRpb3x8dC5iYWNraW5nU3RvcmVQaXhlbFJhdGlvfHwxKSx0aGlzLmNvbG9yUGlja2VyQ2FudmFzLmdldENvbnRleHQoIjJkIikuc2V0VHJhbnNmb3JtKHRoaXMucGl4ZWxSYXRpbywwLDAsdGhpcy5waXhlbFJhdGlvLDAsMCl9ZWxzZXt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJESVYiKTtlLnN0eWxlLmNvbG9yPSJyZWQiLGUuc3R5bGUuZm9udFdlaWdodD0iYm9sZCIsZS5zdHlsZS5wYWRkaW5nPSIxMHB4IixlLmlubmVySFRNTD0iRXJyb3I6IHlvdXIgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IEhUTUwgY2FudmFzIix0aGlzLmNvbG9yUGlja2VyQ2FudmFzLmFwcGVuZENoaWxkKGUpfXRoaXMuY29sb3JQaWNrZXJEaXYuY2xhc3NOYW1lPSJ2aXMtY29sb3IiLHRoaXMub3BhY2l0eURpdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLm9wYWNpdHlEaXYuY2xhc3NOYW1lPSJ2aXMtb3BhY2l0eSIsdGhpcy5icmlnaHRuZXNzRGl2PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuYnJpZ2h0bmVzc0Rpdi5jbGFzc05hbWU9InZpcy1icmlnaHRuZXNzIix0aGlzLmFycm93RGl2PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuYXJyb3dEaXYuY2xhc3NOYW1lPSJ2aXMtYXJyb3ciLHRoaXMub3BhY2l0eVJhbmdlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7dHJ5e3RoaXMub3BhY2l0eVJhbmdlLnR5cGU9InJhbmdlIix0aGlzLm9wYWNpdHlSYW5nZS5taW49IjAiLHRoaXMub3BhY2l0eVJhbmdlLm1heD0iMTAwIn1jYXRjaChpKXt9dGhpcy5vcGFjaXR5UmFuZ2UudmFsdWU9IjEwMCIsdGhpcy5vcGFjaXR5UmFuZ2UuY2xhc3NOYW1lPSJ2aXMtcmFuZ2UiLHRoaXMuYnJpZ2h0bmVzc1JhbmdlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7dHJ5e3RoaXMuYnJpZ2h0bmVzc1JhbmdlLnR5cGU9InJhbmdlIix0aGlzLmJyaWdodG5lc3NSYW5nZS5taW49IjAiLHRoaXMuYnJpZ2h0bmVzc1JhbmdlLm1heD0iMTAwIn1jYXRjaChpKXt9dGhpcy5icmlnaHRuZXNzUmFuZ2UudmFsdWU9IjEwMCIsdGhpcy5icmlnaHRuZXNzUmFuZ2UuY2xhc3NOYW1lPSJ2aXMtcmFuZ2UiLHRoaXMub3BhY2l0eURpdi5hcHBlbmRDaGlsZCh0aGlzLm9wYWNpdHlSYW5nZSksdGhpcy5icmlnaHRuZXNzRGl2LmFwcGVuZENoaWxkKHRoaXMuYnJpZ2h0bmVzc1JhbmdlKTt2YXIgbz10aGlzO3RoaXMub3BhY2l0eVJhbmdlLm9uY2hhbmdlPWZ1bmN0aW9uKCl7by5fc2V0T3BhY2l0eSh0aGlzLnZhbHVlKX0sdGhpcy5vcGFjaXR5UmFuZ2Uub25pbnB1dD1mdW5jdGlvbigpe28uX3NldE9wYWNpdHkodGhpcy52YWx1ZSl9LHRoaXMuYnJpZ2h0bmVzc1JhbmdlLm9uY2hhbmdlPWZ1bmN0aW9uKCl7by5fc2V0QnJpZ2h0bmVzcyh0aGlzLnZhbHVlKX0sdGhpcy5icmlnaHRuZXNzUmFuZ2Uub25pbnB1dD1mdW5jdGlvbigpe28uX3NldEJyaWdodG5lc3ModGhpcy52YWx1ZSl9LHRoaXMuYnJpZ2h0bmVzc0xhYmVsPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMuYnJpZ2h0bmVzc0xhYmVsLmNsYXNzTmFtZT0idmlzLWxhYmVsIHZpcy1icmlnaHRuZXNzIix0aGlzLmJyaWdodG5lc3NMYWJlbC5pbm5lckhUTUw9ImJyaWdodG5lc3M6Iix0aGlzLm9wYWNpdHlMYWJlbD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLm9wYWNpdHlMYWJlbC5jbGFzc05hbWU9InZpcy1sYWJlbCB2aXMtb3BhY2l0eSIsdGhpcy5vcGFjaXR5TGFiZWwuaW5uZXJIVE1MPSJvcGFjaXR5OiIsdGhpcy5uZXdDb2xvckRpdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLm5ld0NvbG9yRGl2LmNsYXNzTmFtZT0idmlzLW5ldy1jb2xvciIsdGhpcy5uZXdDb2xvckRpdi5pbm5lckhUTUw9Im5ldyIsdGhpcy5pbml0aWFsQ29sb3JEaXY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5pbml0aWFsQ29sb3JEaXYuY2xhc3NOYW1lPSJ2aXMtaW5pdGlhbC1jb2xvciIsdGhpcy5pbml0aWFsQ29sb3JEaXYuaW5uZXJIVE1MPSJpbml0aWFsIix0aGlzLmNhbmNlbEJ1dHRvbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLmNhbmNlbEJ1dHRvbi5jbGFzc05hbWU9InZpcy1idXR0b24gdmlzLWNhbmNlbCIsdGhpcy5jYW5jZWxCdXR0b24uaW5uZXJIVE1MPSJjYW5jZWwiLHRoaXMuY2FuY2VsQnV0dG9uLm9uY2xpY2s9dGhpcy5faGlkZS5iaW5kKHRoaXMsITEpLHRoaXMuYXBwbHlCdXR0b249ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5hcHBseUJ1dHRvbi5jbGFzc05hbWU9InZpcy1idXR0b24gdmlzLWFwcGx5Iix0aGlzLmFwcGx5QnV0dG9uLmlubmVySFRNTD0iYXBwbHkiLHRoaXMuYXBwbHlCdXR0b24ub25jbGljaz10aGlzLl9hcHBseS5iaW5kKHRoaXMpLHRoaXMuc2F2ZUJ1dHRvbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLnNhdmVCdXR0b24uY2xhc3NOYW1lPSJ2aXMtYnV0dG9uIHZpcy1zYXZlIix0aGlzLnNhdmVCdXR0b24uaW5uZXJIVE1MPSJzYXZlIix0aGlzLnNhdmVCdXR0b24ub25jbGljaz10aGlzLl9zYXZlLmJpbmQodGhpcyksdGhpcy5sb2FkQnV0dG9uPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHRoaXMubG9hZEJ1dHRvbi5jbGFzc05hbWU9InZpcy1idXR0b24gdmlzLWxvYWQiLHRoaXMubG9hZEJ1dHRvbi5pbm5lckhUTUw9ImxvYWQgbGFzdCIsdGhpcy5sb2FkQnV0dG9uLm9uY2xpY2s9dGhpcy5fbG9hZExhc3QuYmluZCh0aGlzKSx0aGlzLmZyYW1lLmFwcGVuZENoaWxkKHRoaXMuY29sb3JQaWNrZXJEaXYpLHRoaXMuZnJhbWUuYXBwZW5kQ2hpbGQodGhpcy5hcnJvd0RpdiksdGhpcy5mcmFtZS5hcHBlbmRDaGlsZCh0aGlzLmJyaWdodG5lc3NMYWJlbCksdGhpcy5mcmFtZS5hcHBlbmRDaGlsZCh0aGlzLmJyaWdodG5lc3NEaXYpLHRoaXMuZnJhbWUuYXBwZW5kQ2hpbGQodGhpcy5vcGFjaXR5TGFiZWwpLHRoaXMuZnJhbWUuYXBwZW5kQ2hpbGQodGhpcy5vcGFjaXR5RGl2KSx0aGlzLmZyYW1lLmFwcGVuZENoaWxkKHRoaXMubmV3Q29sb3JEaXYpLHRoaXMuZnJhbWUuYXBwZW5kQ2hpbGQodGhpcy5pbml0aWFsQ29sb3JEaXYpLHRoaXMuZnJhbWUuYXBwZW5kQ2hpbGQodGhpcy5jYW5jZWxCdXR0b24pLHRoaXMuZnJhbWUuYXBwZW5kQ2hpbGQodGhpcy5hcHBseUJ1dHRvbiksdGhpcy5mcmFtZS5hcHBlbmRDaGlsZCh0aGlzLnNhdmVCdXR0b24pLHRoaXMuZnJhbWUuYXBwZW5kQ2hpbGQodGhpcy5sb2FkQnV0dG9uKX19LHtrZXk6Il9iaW5kSGFtbWVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5kcmFnPXt9LHRoaXMucGluY2g9e30sdGhpcy5oYW1tZXI9bmV3IHModGhpcy5jb2xvclBpY2tlckNhbnZhcyksdGhpcy5oYW1tZXIuZ2V0KCJwaW5jaCIpLnNldCh7ZW5hYmxlOiEwfSksci5vblRvdWNoKHRoaXMuaGFtbWVyLGZ1bmN0aW9uKGUpe3QuX21vdmVTZWxlY3RvcihlKX0pLHRoaXMuaGFtbWVyLm9uKCJ0YXAiLGZ1bmN0aW9uKGUpe3QuX21vdmVTZWxlY3RvcihlKX0pLHRoaXMuaGFtbWVyLm9uKCJwYW5zdGFydCIsZnVuY3Rpb24oZSl7dC5fbW92ZVNlbGVjdG9yKGUpfSksdGhpcy5oYW1tZXIub24oInBhbm1vdmUiLGZ1bmN0aW9uKGUpe3QuX21vdmVTZWxlY3RvcihlKX0pLHRoaXMuaGFtbWVyLm9uKCJwYW5lbmQiLGZ1bmN0aW9uKGUpe3QuX21vdmVTZWxlY3RvcihlKX0pfX0se2tleToiX2dlbmVyYXRlSHVlQ2lyY2xlIix2YWx1ZTpmdW5jdGlvbigpe2lmKHRoaXMuZ2VuZXJhdGVkPT09ITEpe3ZhciB0PXRoaXMuY29sb3JQaWNrZXJDYW52YXMuZ2V0Q29udGV4dCgiMmQiKTt2b2lkIDA9PT10aGlzLnBpeGVsUmF0aW9uJiYodGhpcy5waXhlbFJhdGlvPSh3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpb3x8MSkvKHQud2Via2l0QmFja2luZ1N0b3JlUGl4ZWxSYXRpb3x8dC5tb3pCYWNraW5nU3RvcmVQaXhlbFJhdGlvfHx0Lm1zQmFja2luZ1N0b3JlUGl4ZWxSYXRpb3x8dC5vQmFja2luZ1N0b3JlUGl4ZWxSYXRpb3x8dC5iYWNraW5nU3RvcmVQaXhlbFJhdGlvfHwxKSksdC5zZXRUcmFuc2Zvcm0odGhpcy5waXhlbFJhdGlvLDAsMCx0aGlzLnBpeGVsUmF0aW8sMCwwKTt2YXIgZT10aGlzLmNvbG9yUGlja2VyQ2FudmFzLmNsaWVudFdpZHRoLGk9dGhpcy5jb2xvclBpY2tlckNhbnZhcy5jbGllbnRIZWlnaHQ7dC5jbGVhclJlY3QoMCwwLGUsaSk7dmFyIG89dm9pZCAwLG49dm9pZCAwLHM9dm9pZCAwLHI9dm9pZCAwO3RoaXMuY2VudGVyQ29vcmRpbmF0ZXM9e3g6LjUqZSx5Oi41Kml9LHRoaXMucj0uNDkqZTt2YXIgaD0yKk1hdGguUEkvMzYwLGQ9MS8zNjAsbD0xL3RoaXMucix1PXZvaWQgMDtmb3Iocz0wOzM2MD5zO3MrKylmb3Iocj0wO3I8dGhpcy5yO3IrKylvPXRoaXMuY2VudGVyQ29vcmRpbmF0ZXMueCtyKk1hdGguc2luKGgqcyksbj10aGlzLmNlbnRlckNvb3JkaW5hdGVzLnkrcipNYXRoLmNvcyhoKnMpLHU9YS5IU1ZUb1JHQihzKmQscipsLDEpLHQuZmlsbFN0eWxlPSJyZ2IoIit1LnIrIiwiK3UuZysiLCIrdS5iKyIpIix0LmZpbGxSZWN0KG8tLjUsbi0uNSwyLDIpO3Quc3Ryb2tlU3R5bGU9InJnYmEoMCwwLDAsMSkiLHQuY2lyY2xlKHRoaXMuY2VudGVyQ29vcmRpbmF0ZXMueCx0aGlzLmNlbnRlckNvb3JkaW5hdGVzLnksdGhpcy5yKSx0LnN0cm9rZSgpLHRoaXMuaHVlQ2lyY2xlPXQuZ2V0SW1hZ2VEYXRhKDAsMCxlLGkpfXRoaXMuZ2VuZXJhdGVkPSEwfX0se2tleToiX21vdmVTZWxlY3RvciIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5jb2xvclBpY2tlckRpdi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxpPXQuY2VudGVyLngtZS5sZWZ0LG89dC5jZW50ZXIueS1lLnRvcCxuPS41KnRoaXMuY29sb3JQaWNrZXJEaXYuY2xpZW50SGVpZ2h0LHM9LjUqdGhpcy5jb2xvclBpY2tlckRpdi5jbGllbnRXaWR0aCxyPWktcyxoPW8tbixkPU1hdGguYXRhbjIocixoKSxsPS45OCpNYXRoLm1pbihNYXRoLnNxcnQocipyK2gqaCkscyksdT1NYXRoLmNvcyhkKSpsK24sYz1NYXRoLnNpbihkKSpsK3M7dGhpcy5jb2xvclBpY2tlclNlbGVjdG9yLnN0eWxlLnRvcD11LS41KnRoaXMuY29sb3JQaWNrZXJTZWxlY3Rvci5jbGllbnRIZWlnaHQrInB4Iix0aGlzLmNvbG9yUGlja2VyU2VsZWN0b3Iuc3R5bGUubGVmdD1jLS41KnRoaXMuY29sb3JQaWNrZXJTZWxlY3Rvci5jbGllbnRXaWR0aCsicHgiO3ZhciBwPWQvKDIqTWF0aC5QSSk7cD0wPnA/cCsxOnA7dmFyIGY9bC90aGlzLnIsbT1hLlJHQlRvSFNWKHRoaXMuY29sb3Iucix0aGlzLmNvbG9yLmcsdGhpcy5jb2xvci5iKTttLmg9cCxtLnM9Zjt2YXIgdj1hLkhTVlRvUkdCKG0uaCxtLnMsbS52KTt2LmE9dGhpcy5jb2xvci5hLHRoaXMuY29sb3I9dix0aGlzLmluaXRpYWxDb2xvckRpdi5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9InJnYmEoIit0aGlzLmluaXRpYWxDb2xvci5yKyIsIit0aGlzLmluaXRpYWxDb2xvci5nKyIsIit0aGlzLmluaXRpYWxDb2xvci5iKyIsIit0aGlzLmluaXRpYWxDb2xvci5hKyIpIix0aGlzLm5ld0NvbG9yRGl2LnN0eWxlLmJhY2tncm91bmRDb2xvcj0icmdiYSgiK3RoaXMuY29sb3IucisiLCIrdGhpcy5jb2xvci5nKyIsIit0aGlzLmNvbG9yLmIrIiwiK3RoaXMuY29sb3IuYSsiKSI7DQp9fV0pLHR9KCk7ZVsiZGVmYXVsdCJdPWgsdC5leHBvcnRzPWVbImRlZmF1bHQiXX0sZnVuY3Rpb24odCxlLGkpe2Z1bmN0aW9uIG8odCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7Zm9yKHZhciBpPTA7aTxlLmxlbmd0aDtpKyspe3ZhciBvPWVbaV07by5lbnVtZXJhYmxlPW8uZW51bWVyYWJsZXx8ITEsby5jb25maWd1cmFibGU9ITAsInZhbHVlImluIG8mJihvLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxvLmtleSxvKX19cmV0dXJuIGZ1bmN0aW9uKGUsaSxvKXtyZXR1cm4gaSYmdChlLnByb3RvdHlwZSxpKSxvJiZ0KGUsbyksZX19KCkscz1pKDcpLHI9ITEsYT12b2lkIDAsaD0iYmFja2dyb3VuZDogI0ZGZWVlZTsgY29sb3I6ICNkZDAwMDAiLGQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7byh0aGlzLHQpfXJldHVybiBuKHQsbnVsbCxbe2tleToidmFsaWRhdGUiLHZhbHVlOmZ1bmN0aW9uKGUsaSxvKXtyPSExLGE9aTt2YXIgbj1pO3JldHVybiB2b2lkIDAhPT1vJiYobj1pW29dKSx0LnBhcnNlKGUsbixbXSkscn19LHtrZXk6InBhcnNlIix2YWx1ZTpmdW5jdGlvbihlLGksbyl7Zm9yKHZhciBuIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShuKSYmdC5jaGVjayhuLGUsaSxvKX19LHtrZXk6ImNoZWNrIix2YWx1ZTpmdW5jdGlvbihlLGksbyxuKXt2b2lkIDA9PT1vW2VdJiZ2b2lkIDA9PT1vLl9fYW55X18/dC5nZXRTdWdnZXN0aW9uKGUsbyxuKTp2b2lkIDA9PT1vW2VdJiZ2b2lkIDAhPT1vLl9fYW55X18/Im9iamVjdCI9PT10LmdldFR5cGUoaVtlXSkmJnZvaWQgMCE9PW8uX19hbnlfXy5fX3R5cGVfXz90LmNoZWNrRmllbGRzKGUsaSxvLCJfX2FueV9fIixvLl9fYW55X18uX190eXBlX18sbik6dC5jaGVja0ZpZWxkcyhlLGksbywiX19hbnlfXyIsby5fX2FueV9fLG4pOnZvaWQgMCE9PW9bZV0uX190eXBlX18/dC5jaGVja0ZpZWxkcyhlLGksbyxlLG9bZV0uX190eXBlX18sbik6dC5jaGVja0ZpZWxkcyhlLGksbyxlLG9bZV0sbil9fSx7a2V5OiJjaGVja0ZpZWxkcyIsdmFsdWU6ZnVuY3Rpb24oZSxpLG8sbixhLGQpe3ZhciBsPXQuZ2V0VHlwZShpW2VdKSx1PWFbbF07dm9pZCAwIT09dT8iYXJyYXkiPT09dC5nZXRUeXBlKHUpJiYtMT09PXUuaW5kZXhPZihpW2VdKT8oY29uc29sZS5sb2coJyVjSW52YWxpZCBvcHRpb24gZGV0ZWN0ZWQgaW4gIicrZSsnIi4gQWxsb3dlZCB2YWx1ZXMgYXJlOicrdC5wcmludCh1KSsnIG5vdCAiJytpW2VdKyciLiAnK3QucHJpbnRMb2NhdGlvbihkLGUpLGgpLHI9ITApOiJvYmplY3QiPT09bCYmIl9fYW55X18iIT09biYmKGQ9cy5jb3B5QW5kRXh0ZW5kQXJyYXkoZCxlKSx0LnBhcnNlKGlbZV0sb1tuXSxkKSk6dm9pZCAwPT09YS5hbnkmJihjb25zb2xlLmxvZygnJWNJbnZhbGlkIHR5cGUgcmVjZWl2ZWQgZm9yICInK2UrJyIuIEV4cGVjdGVkOiAnK3QucHJpbnQoT2JqZWN0LmtleXMoYSkpKyIuIFJlY2VpdmVkIFsiK2wrJ10gIicraVtlXSsnIicrdC5wcmludExvY2F0aW9uKGQsZSksaCkscj0hMCl9fSx7a2V5OiJnZXRUeXBlIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10eXBlb2YgdDtyZXR1cm4ib2JqZWN0Ij09PWU/bnVsbD09PXQ/Im51bGwiOnQgaW5zdGFuY2VvZiBCb29sZWFuPyJib29sZWFuIjp0IGluc3RhbmNlb2YgTnVtYmVyPyJudW1iZXIiOnQgaW5zdGFuY2VvZiBTdHJpbmc/InN0cmluZyI6QXJyYXkuaXNBcnJheSh0KT8iYXJyYXkiOnQgaW5zdGFuY2VvZiBEYXRlPyJkYXRlIjp2b2lkIDAhPT10Lm5vZGVUeXBlPyJkb20iOnQuX2lzQU1vbWVudE9iamVjdD09PSEwPyJtb21lbnQiOiJvYmplY3QiOiJudW1iZXIiPT09ZT8ibnVtYmVyIjoiYm9vbGVhbiI9PT1lPyJib29sZWFuIjoic3RyaW5nIj09PWU/InN0cmluZyI6dm9pZCAwPT09ZT8idW5kZWZpbmVkIjplfX0se2tleToiZ2V0U3VnZ2VzdGlvbiIsdmFsdWU6ZnVuY3Rpb24oZSxpLG8pe3ZhciBuPXQuZmluZEluT3B0aW9ucyhlLGksbywhMSkscz10LmZpbmRJbk9wdGlvbnMoZSxhLFtdLCEwKSxkPTgsbD00O3ZvaWQgMCE9PW4uaW5kZXhNYXRjaD9jb25zb2xlLmxvZygnJWNVbmtub3duIG9wdGlvbiBkZXRlY3RlZDogIicrZSsnIiBpbiAnK3QucHJpbnRMb2NhdGlvbihuLnBhdGgsZSwiIikrJ1BlcmhhcHMgaXQgd2FzIGluY29tcGxldGU/IERpZCB5b3UgbWVhbjogIicrbi5pbmRleE1hdGNoKyciP1xuXG4nLGgpOnMuZGlzdGFuY2U8PWwmJm4uZGlzdGFuY2U+cy5kaXN0YW5jZT9jb25zb2xlLmxvZygnJWNVbmtub3duIG9wdGlvbiBkZXRlY3RlZDogIicrZSsnIiBpbiAnK3QucHJpbnRMb2NhdGlvbihuLnBhdGgsZSwiIikrIlBlcmhhcHMgaXQgd2FzIG1pc3BsYWNlZD8gTWF0Y2hpbmcgb3B0aW9uIGZvdW5kIGF0OiAiK3QucHJpbnRMb2NhdGlvbihzLnBhdGgscy5jbG9zZXN0TWF0Y2gsIiIpLGgpOm4uZGlzdGFuY2U8PWQ/Y29uc29sZS5sb2coJyVjVW5rbm93biBvcHRpb24gZGV0ZWN0ZWQ6ICInK2UrJyIuIERpZCB5b3UgbWVhbiAiJytuLmNsb3Nlc3RNYXRjaCsnIj8nK3QucHJpbnRMb2NhdGlvbihuLnBhdGgsZSksaCk6Y29uc29sZS5sb2coJyVjVW5rbm93biBvcHRpb24gZGV0ZWN0ZWQ6ICInK2UrJyIuIERpZCB5b3UgbWVhbiBvbmUgb2YgdGhlc2U6ICcrdC5wcmludChPYmplY3Qua2V5cyhpKSkrdC5wcmludExvY2F0aW9uKG8sZSksaCkscj0hMH19LHtrZXk6ImZpbmRJbk9wdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKGUsaSxvKXt2YXIgbj12b2lkIDA9PT1hcmd1bWVudHNbM10/ITE6YXJndW1lbnRzWzNdLHI9MWU5LGE9IiIsaD1bXSxkPWUudG9Mb3dlckNhc2UoKSxsPXZvaWQgMDtmb3IodmFyIHUgaW4gaSl7dmFyIGM9dm9pZCAwO2lmKHZvaWQgMCE9PWlbdV0uX190eXBlX18mJm49PT0hMCl7dmFyIHA9dC5maW5kSW5PcHRpb25zKGUsaVt1XSxzLmNvcHlBbmRFeHRlbmRBcnJheShvLHUpKTtyPnAuZGlzdGFuY2UmJihhPXAuY2xvc2VzdE1hdGNoLGg9cC5wYXRoLHI9cC5kaXN0YW5jZSxsPXAuaW5kZXhNYXRjaCl9ZWxzZS0xIT09dS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoZCkmJihsPXUpLGM9dC5sZXZlbnNodGVpbkRpc3RhbmNlKGUsdSkscj5jJiYoYT11LGg9cy5jb3B5QXJyYXkobykscj1jKX1yZXR1cm57Y2xvc2VzdE1hdGNoOmEscGF0aDpoLGRpc3RhbmNlOnIsaW5kZXhNYXRjaDpsfX19LHtrZXk6InByaW50TG9jYXRpb24iLHZhbHVlOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpPXZvaWQgMD09PWFyZ3VtZW50c1syXT8iUHJvYmxlbSB2YWx1ZSBmb3VuZCBhdDogXG4iOmFyZ3VtZW50c1syXSxvPSJcblxuIitpKyJvcHRpb25zID0ge1xuIixuPTA7bjx0Lmxlbmd0aDtuKyspe2Zvcih2YXIgcz0wO24rMT5zO3MrKylvKz0iICAiO28rPXRbbl0rIjoge1xuIn1mb3IodmFyIHM9MDtzPHQubGVuZ3RoKzE7cysrKW8rPSIgICI7bys9ZSsiXG4iO2Zvcih2YXIgbj0wO248dC5sZW5ndGgrMTtuKyspe2Zvcih2YXIgcz0wO3M8dC5sZW5ndGgtbjtzKyspbys9IiAgIjtvKz0ifVxuIn1yZXR1cm4gbysiXG5cbiJ9fSx7a2V5OiJwcmludCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHQpLnJlcGxhY2UoLyhcIil8KFxbKXwoXF0pfCgsIl9fdHlwZV9fIikvZywiIikucmVwbGFjZSgvKFwsKS9nLCIsICIpfX0se2tleToibGV2ZW5zaHRlaW5EaXN0YW5jZSIsdmFsdWU6ZnVuY3Rpb24odCxlKXtpZigwPT09dC5sZW5ndGgpcmV0dXJuIGUubGVuZ3RoO2lmKDA9PT1lLmxlbmd0aClyZXR1cm4gdC5sZW5ndGg7dmFyIGksbz1bXTtmb3IoaT0wO2k8PWUubGVuZ3RoO2krKylvW2ldPVtpXTt2YXIgbjtmb3Iobj0wO248PXQubGVuZ3RoO24rKylvWzBdW25dPW47Zm9yKGk9MTtpPD1lLmxlbmd0aDtpKyspZm9yKG49MTtuPD10Lmxlbmd0aDtuKyspZS5jaGFyQXQoaS0xKT09dC5jaGFyQXQobi0xKT9vW2ldW25dPW9baS0xXVtuLTFdOm9baV1bbl09TWF0aC5taW4ob1tpLTFdW24tMV0rMSxNYXRoLm1pbihvW2ldW24tMV0rMSxvW2ktMV1bbl0rMSkpO3JldHVybiBvW2UubGVuZ3RoXVt0Lmxlbmd0aF19fV0pLHR9KCk7ZVsiZGVmYXVsdCJdPWQsZS5wcmludFN0eWxlPWh9LGZ1bmN0aW9uKHQsZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBpPSJzdHJpbmciLG89ImJvb2xlYW4iLG49Im51bWJlciIscz0iYXJyYXkiLHI9ImRhdGUiLGE9Im9iamVjdCIsaD0iZG9tIixkPSJtb21lbnQiLGw9ImFueSIsdT17Y29uZmlndXJlOntlbmFibGVkOnsiYm9vbGVhbiI6b30sZmlsdGVyOnsiYm9vbGVhbiI6bywiZnVuY3Rpb24iOiJmdW5jdGlvbiJ9LGNvbnRhaW5lcjp7ZG9tOmh9LF9fdHlwZV9fOntvYmplY3Q6YSwiYm9vbGVhbiI6bywiZnVuY3Rpb24iOiJmdW5jdGlvbiJ9fSxhbGlnbjp7c3RyaW5nOml9LGF1dG9SZXNpemU6eyJib29sZWFuIjpvfSxjbGlja1RvVXNlOnsiYm9vbGVhbiI6b30sZGF0YUF0dHJpYnV0ZXM6e3N0cmluZzppLGFycmF5OnN9LGVkaXRhYmxlOnthZGQ6eyJib29sZWFuIjpvLHVuZGVmaW5lZDoidW5kZWZpbmVkIn0scmVtb3ZlOnsiYm9vbGVhbiI6byx1bmRlZmluZWQ6InVuZGVmaW5lZCJ9LHVwZGF0ZUdyb3VwOnsiYm9vbGVhbiI6byx1bmRlZmluZWQ6InVuZGVmaW5lZCJ9LHVwZGF0ZVRpbWU6eyJib29sZWFuIjpvLHVuZGVmaW5lZDoidW5kZWZpbmVkIn0sX190eXBlX186eyJib29sZWFuIjpvLG9iamVjdDphfX0sZW5kOntudW1iZXI6bixkYXRlOnIsc3RyaW5nOmksbW9tZW50OmR9LGZvcm1hdDp7bWlub3JMYWJlbHM6e21pbGxpc2Vjb25kOntzdHJpbmc6aSx1bmRlZmluZWQ6InVuZGVmaW5lZCJ9LHNlY29uZDp7c3RyaW5nOmksdW5kZWZpbmVkOiJ1bmRlZmluZWQifSxtaW51dGU6e3N0cmluZzppLHVuZGVmaW5lZDoidW5kZWZpbmVkIn0saG91cjp7c3RyaW5nOmksdW5kZWZpbmVkOiJ1bmRlZmluZWQifSx3ZWVrZGF5OntzdHJpbmc6aSx1bmRlZmluZWQ6InVuZGVmaW5lZCJ9LGRheTp7c3RyaW5nOmksdW5kZWZpbmVkOiJ1bmRlZmluZWQifSxtb250aDp7c3RyaW5nOmksdW5kZWZpbmVkOiJ1bmRlZmluZWQifSx5ZWFyOntzdHJpbmc6aSx1bmRlZmluZWQ6InVuZGVmaW5lZCJ9LF9fdHlwZV9fOntvYmplY3Q6YX19LG1ham9yTGFiZWxzOnttaWxsaXNlY29uZDp7c3RyaW5nOmksdW5kZWZpbmVkOiJ1bmRlZmluZWQifSxzZWNvbmQ6e3N0cmluZzppLHVuZGVmaW5lZDoidW5kZWZpbmVkIn0sbWludXRlOntzdHJpbmc6aSx1bmRlZmluZWQ6InVuZGVmaW5lZCJ9LGhvdXI6e3N0cmluZzppLHVuZGVmaW5lZDoidW5kZWZpbmVkIn0sd2Vla2RheTp7c3RyaW5nOmksdW5kZWZpbmVkOiJ1bmRlZmluZWQifSxkYXk6e3N0cmluZzppLHVuZGVmaW5lZDoidW5kZWZpbmVkIn0sbW9udGg6e3N0cmluZzppLHVuZGVmaW5lZDoidW5kZWZpbmVkIn0seWVhcjp7c3RyaW5nOmksdW5kZWZpbmVkOiJ1bmRlZmluZWQifSxfX3R5cGVfXzp7b2JqZWN0OmF9fSxfX3R5cGVfXzp7b2JqZWN0OmF9fSxncm91cE9yZGVyOntzdHJpbmc6aSwiZnVuY3Rpb24iOiJmdW5jdGlvbiJ9LGhlaWdodDp7c3RyaW5nOmksbnVtYmVyOm59LGhpZGRlbkRhdGVzOntvYmplY3Q6YSxhcnJheTpzfSxsb2NhbGU6e3N0cmluZzppfSxsb2NhbGVzOntfX2FueV9fOnthbnk6bH0sX190eXBlX186e29iamVjdDphfX0sbWFyZ2luOntheGlzOntudW1iZXI6bn0saXRlbTp7aG9yaXpvbnRhbDp7bnVtYmVyOm4sdW5kZWZpbmVkOiJ1bmRlZmluZWQifSx2ZXJ0aWNhbDp7bnVtYmVyOm4sdW5kZWZpbmVkOiJ1bmRlZmluZWQifSxfX3R5cGVfXzp7b2JqZWN0OmEsbnVtYmVyOm59fSxfX3R5cGVfXzp7b2JqZWN0OmEsbnVtYmVyOm59fSxtYXg6e2RhdGU6cixudW1iZXI6bixzdHJpbmc6aSxtb21lbnQ6ZH0sbWF4SGVpZ2h0OntudW1iZXI6bixzdHJpbmc6aX0sbWluOntkYXRlOnIsbnVtYmVyOm4sc3RyaW5nOmksbW9tZW50OmR9LG1pbkhlaWdodDp7bnVtYmVyOm4sc3RyaW5nOml9LG1vdmVhYmxlOnsiYm9vbGVhbiI6b30sbXVsdGlzZWxlY3Q6eyJib29sZWFuIjpvfSxvbkFkZDp7ImZ1bmN0aW9uIjoiZnVuY3Rpb24ifSxvblVwZGF0ZTp7ImZ1bmN0aW9uIjoiZnVuY3Rpb24ifSxvbk1vdmU6eyJmdW5jdGlvbiI6ImZ1bmN0aW9uIn0sb25Nb3Zpbm
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment