{"id":29844,"date":"2021-12-02T14:59:01","date_gmt":"2021-12-02T20:59:01","guid":{"rendered":"https:\/\/law.marquette.edu\/facultyblog\/?p=29844"},"modified":"2021-12-02T15:16:01","modified_gmt":"2021-12-02T21:16:01","slug":"county-level-cdc-and-dhs-vaccination-statistics-for-wisconsin-vary-in-important-ways","status":"publish","type":"post","link":"https:\/\/law.marquette.edu\/facultyblog\/2021\/12\/county-level-cdc-and-dhs-vaccination-statistics-for-wisconsin-vary-in-important-ways\/","title":{"rendered":"County-level CDC and DHS vaccination statistics for Wisconsin vary in important ways"},"content":{"rendered":"<p><script src=\"data:application\/javascript;base64,Ly8gUGFuZG9jIDIuOSBhZGRzIGF0dHJpYnV0ZXMgb24gYm90aCBoZWFkZXIgYW5kIGRpdi4gV2UgcmVtb3ZlIHRoZSBmb3JtZXIgKHRvCi8vIGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgYmVoYXZpb3Igb2YgUGFuZG9jIDwgMi44KS4KZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZ1bmN0aW9uKGUpIHsKICB2YXIgaHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJkaXYuc2VjdGlvbltjbGFzcyo9J2xldmVsJ10gPiA6Zmlyc3QtY2hpbGQiKTsKICB2YXIgaSwgaCwgYTsKICBmb3IgKGkgPSAwOyBpIDwgaHMubGVuZ3RoOyBpKyspIHsKICAgIGggPSBoc1tpXTsKICAgIGlmICghL15oWzEtNl0kL2kudGVzdChoLnRhZ05hbWUpKSBjb250aW51ZTsgIC8vIGl0IHNob3VsZCBiZSBhIGhlYWRlciBoMS1oNgogICAgYSA9IGguYXR0cmlidXRlczsKICAgIHdoaWxlIChhLmxlbmd0aCA+IDApIGgucmVtb3ZlQXR0cmlidXRlKGFbMF0ubmFtZSk7CiAgfQp9KTsK\"><\/script><br \/>\n<script src=\"data:application\/javascript;base64,LyohIGpRdWVyeSB2MS4xMS4zIHwgKGMpIDIwMDUsIDIwMTUgalF1ZXJ5IEZvdW5kYXRpb24sIEluYy4gfCBqcXVlcnkub3JnL2xpY2Vuc2UgKi8KIWZ1bmN0aW9uKGEsYil7Im9iamVjdCI9PXR5cGVvZiBtb2R1bGUmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlLmV4cG9ydHM\/bW9kdWxlLmV4cG9ydHM9YS5kb2N1bWVudD9iKGEsITApOmZ1bmN0aW9uKGEpe2lmKCFhLmRvY3VtZW50KXRocm93IG5ldyBFcnJvcigialF1ZXJ5IHJlcXVpcmVzIGEgd2luZG93IHdpdGggYSBkb2N1bWVudCIpO3JldHVybiBiKGEpfTpiKGEpfSgidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6dGhpcyxmdW5jdGlvbihhLGIpe3ZhciBjPVtdLGQ9Yy5zbGljZSxlPWMuY29uY2F0LGY9Yy5wdXNoLGc9Yy5pbmRleE9mLGg9e30saT1oLnRvU3RyaW5nLGo9aC5oYXNPd25Qcm9wZXJ0eSxrPXt9LGw9IjEuMTEuMyIsbT1mdW5jdGlvbihhLGIpe3JldHVybiBuZXcgbS5mbi5pbml0KGEsYil9LG49L15bXHNcdUZFRkZceEEwXSt8W1xzXHVGRUZGXHhBMF0rJC9nLG89L14tbXMtLyxwPS8tKFtcZGEtel0pL2dpLHE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYi50b1VwcGVyQ2FzZSgpfTttLmZuPW0ucHJvdG90eXBlPXtqcXVlcnk6bCxjb25zdHJ1Y3RvcjptLHNlbGVjdG9yOiIiLGxlbmd0aDowLHRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gZC5jYWxsKHRoaXMpfSxnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPWE\/MD5hP3RoaXNbYSt0aGlzLmxlbmd0aF06dGhpc1thXTpkLmNhbGwodGhpcyl9LHB1c2hTdGFjazpmdW5jdGlvbihhKXt2YXIgYj1tLm1lcmdlKHRoaXMuY29uc3RydWN0b3IoKSxhKTtyZXR1cm4gYi5wcmV2T2JqZWN0PXRoaXMsYi5jb250ZXh0PXRoaXMuY29udGV4dCxifSxlYWNoOmZ1bmN0aW9uKGEsYil7cmV0dXJuIG0uZWFjaCh0aGlzLGEsYil9LG1hcDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2sobS5tYXAodGhpcyxmdW5jdGlvbihiLGMpe3JldHVybiBhLmNhbGwoYixjLGIpfSkpfSxzbGljZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1c2hTdGFjayhkLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9LGZpcnN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoMCl9LGxhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgtMSl9LGVxOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMubGVuZ3RoLGM9K2ErKDA+YT9iOjApO3JldHVybiB0aGlzLnB1c2hTdGFjayhjPj0wJiZiPmM\/W3RoaXNbY11dOltdKX0sZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJldk9iamVjdHx8dGhpcy5jb25zdHJ1Y3RvcihudWxsKX0scHVzaDpmLHNvcnQ6Yy5zb3J0LHNwbGljZTpjLnNwbGljZX0sbS5leHRlbmQ9bS5mbi5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgYSxiLGMsZCxlLGYsZz1hcmd1bWVudHNbMF18fHt9LGg9MSxpPWFyZ3VtZW50cy5sZW5ndGgsaj0hMTtmb3IoImJvb2xlYW4iPT10eXBlb2YgZyYmKGo9ZyxnPWFyZ3VtZW50c1toXXx8e30saCsrKSwib2JqZWN0Ij09dHlwZW9mIGd8fG0uaXNGdW5jdGlvbihnKXx8KGc9e30pLGg9PT1pJiYoZz10aGlzLGgtLSk7aT5oO2grKylpZihudWxsIT0oZT1hcmd1bWVudHNbaF0pKWZvcihkIGluIGUpYT1nW2RdLGM9ZVtkXSxnIT09YyYmKGomJmMmJihtLmlzUGxhaW5PYmplY3QoYyl8fChiPW0uaXNBcnJheShjKSkpPyhiPyhiPSExLGY9YSYmbS5pc0FycmF5KGEpP2E6W10pOmY9YSYmbS5pc1BsYWluT2JqZWN0KGEpP2E6e30sZ1tkXT1tLmV4dGVuZChqLGYsYykpOnZvaWQgMCE9PWMmJihnW2RdPWMpKTtyZXR1cm4gZ30sbS5leHRlbmQoe2V4cGFuZG86ImpRdWVyeSIrKGwrTWF0aC5yYW5kb20oKSkucmVwbGFjZSgvXEQvZywiIiksaXNSZWFkeTohMCxlcnJvcjpmdW5jdGlvbihhKXt0aHJvdyBuZXcgRXJyb3IoYSl9LG5vb3A6ZnVuY3Rpb24oKXt9LGlzRnVuY3Rpb246ZnVuY3Rpb24oYSl7cmV0dXJuImZ1bmN0aW9uIj09PW0udHlwZShhKX0saXNBcnJheTpBcnJheS5pc0FycmF5fHxmdW5jdGlvbihhKXtyZXR1cm4iYXJyYXkiPT09bS50eXBlKGEpfSxpc1dpbmRvdzpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbCE9YSYmYT09YS53aW5kb3d9LGlzTnVtZXJpYzpmdW5jdGlvbihhKXtyZXR1cm4hbS5pc0FycmF5KGEpJiZhLXBhcnNlRmxvYXQoYSkrMT49MH0saXNFbXB0eU9iamVjdDpmdW5jdGlvbihhKXt2YXIgYjtmb3IoYiBpbiBhKXJldHVybiExO3JldHVybiEwfSxpc1BsYWluT2JqZWN0OmZ1bmN0aW9uKGEpe3ZhciBiO2lmKCFhfHwib2JqZWN0IiE9PW0udHlwZShhKXx8YS5ub2RlVHlwZXx8bS5pc1dpbmRvdyhhKSlyZXR1cm4hMTt0cnl7aWYoYS5jb25zdHJ1Y3RvciYmIWouY2FsbChhLCJjb25zdHJ1Y3RvciIpJiYhai5jYWxsKGEuY29uc3RydWN0b3IucHJvdG90eXBlLCJpc1Byb3RvdHlwZU9mIikpcmV0dXJuITF9Y2F0Y2goYyl7cmV0dXJuITF9aWYoay5vd25MYXN0KWZvcihiIGluIGEpcmV0dXJuIGouY2FsbChhLGIpO2ZvcihiIGluIGEpO3JldHVybiB2b2lkIDA9PT1ifHxqLmNhbGwoYSxiKX0sdHlwZTpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YT9hKyIiOiJvYmplY3QiPT10eXBlb2YgYXx8ImZ1bmN0aW9uIj09dHlwZW9mIGE\/aFtpLmNhbGwoYSldfHwib2JqZWN0Ijp0eXBlb2YgYX0sZ2xvYmFsRXZhbDpmdW5jdGlvbihiKXtiJiZtLnRyaW0oYikmJihhLmV4ZWNTY3JpcHR8fGZ1bmN0aW9uKGIpe2EuZXZhbC5jYWxsKGEsYil9KShiKX0sY2FtZWxDYXNlOmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UobywibXMtIikucmVwbGFjZShwLHEpfSxub2RlTmFtZTpmdW5jdGlvbihhLGIpe3JldHVybiBhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1iLnRvTG93ZXJDYXNlKCl9LGVhY2g6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGU9MCxmPWEubGVuZ3RoLGc9cihhKTtpZihjKXtpZihnKXtmb3IoO2Y+ZTtlKyspaWYoZD1iLmFwcGx5KGFbZV0sYyksZD09PSExKWJyZWFrfWVsc2UgZm9yKGUgaW4gYSlpZihkPWIuYXBwbHkoYVtlXSxjKSxkPT09ITEpYnJlYWt9ZWxzZSBpZihnKXtmb3IoO2Y+ZTtlKyspaWYoZD1iLmNhbGwoYVtlXSxlLGFbZV0pLGQ9PT0hMSlicmVha31lbHNlIGZvcihlIGluIGEpaWYoZD1iLmNhbGwoYVtlXSxlLGFbZV0pLGQ9PT0hMSlicmVhaztyZXR1cm4gYX0sdHJpbTpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YT8iIjooYSsiIikucmVwbGFjZShuLCIiKX0sbWFrZUFycmF5OmZ1bmN0aW9uKGEsYil7dmFyIGM9Ynx8W107cmV0dXJuIG51bGwhPWEmJihyKE9iamVjdChhKSk\/bS5tZXJnZShjLCJzdHJpbmciPT10eXBlb2YgYT9bYV06YSk6Zi5jYWxsKGMsYSkpLGN9LGluQXJyYXk6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkO2lmKGIpe2lmKGcpcmV0dXJuIGcuY2FsbChiLGEsYyk7Zm9yKGQ9Yi5sZW5ndGgsYz1jPzA+Yz9NYXRoLm1heCgwLGQrYyk6YzowO2Q+YztjKyspaWYoYyBpbiBiJiZiW2NdPT09YSlyZXR1cm4gY31yZXR1cm4tMX0sbWVyZ2U6ZnVuY3Rpb24oYSxiKXt2YXIgYz0rYi5sZW5ndGgsZD0wLGU9YS5sZW5ndGg7d2hpbGUoYz5kKWFbZSsrXT1iW2QrK107aWYoYyE9PWMpd2hpbGUodm9pZCAwIT09YltkXSlhW2UrK109YltkKytdO3JldHVybiBhLmxlbmd0aD1lLGF9LGdyZXA6ZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZCxlPVtdLGY9MCxnPWEubGVuZ3RoLGg9IWM7Zz5mO2YrKylkPSFiKGFbZl0sZiksZCE9PWgmJmUucHVzaChhW2ZdKTtyZXR1cm4gZX0sbWFwOmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxmPTAsZz1hLmxlbmd0aCxoPXIoYSksaT1bXTtpZihoKWZvcig7Zz5mO2YrKylkPWIoYVtmXSxmLGMpLG51bGwhPWQmJmkucHVzaChkKTtlbHNlIGZvcihmIGluIGEpZD1iKGFbZl0sZixjKSxudWxsIT1kJiZpLnB1c2goZCk7cmV0dXJuIGUuYXBwbHkoW10saSl9LGd1aWQ6MSxwcm94eTpmdW5jdGlvbihhLGIpe3ZhciBjLGUsZjtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGImJihmPWFbYl0sYj1hLGE9ZiksbS5pc0Z1bmN0aW9uKGEpPyhjPWQuY2FsbChhcmd1bWVudHMsMiksZT1mdW5jdGlvbigpe3JldHVybiBhLmFwcGx5KGJ8fHRoaXMsYy5jb25jYXQoZC5jYWxsKGFyZ3VtZW50cykpKX0sZS5ndWlkPWEuZ3VpZD1hLmd1aWR8fG0uZ3VpZCsrLGUpOnZvaWQgMH0sbm93OmZ1bmN0aW9uKCl7cmV0dXJuK25ldyBEYXRlfSxzdXBwb3J0Omt9KSxtLmVhY2goIkJvb2xlYW4gTnVtYmVyIFN0cmluZyBGdW5jdGlvbiBBcnJheSBEYXRlIFJlZ0V4cCBPYmplY3QgRXJyb3IiLnNwbGl0KCIgIiksZnVuY3Rpb24oYSxiKXtoWyJbb2JqZWN0ICIrYisiXSJdPWIudG9Mb3dlckNhc2UoKX0pO2Z1bmN0aW9uIHIoYSl7dmFyIGI9Imxlbmd0aCJpbiBhJiZhLmxlbmd0aCxjPW0udHlwZShhKTtyZXR1cm4iZnVuY3Rpb24iPT09Y3x8bS5pc1dpbmRvdyhhKT8hMToxPT09YS5ub2RlVHlwZSYmYj8hMDoiYXJyYXkiPT09Y3x8MD09PWJ8fCJudW1iZXIiPT10eXBlb2YgYiYmYj4wJiZiLTEgaW4gYX12YXIgcz1mdW5jdGlvbihhKXt2YXIgYixjLGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyLHMsdCx1PSJzaXp6bGUiKzEqbmV3IERhdGUsdj1hLmRvY3VtZW50LHc9MCx4PTAseT1oYSgpLHo9aGEoKSxBPWhhKCksQj1mdW5jdGlvbihhLGIpe3JldHVybiBhPT09YiYmKGw9ITApLDB9LEM9MTw8MzEsRD17fS5oYXNPd25Qcm9wZXJ0eSxFPVtdLEY9RS5wb3AsRz1FLnB1c2gsSD1FLnB1c2gsST1FLnNsaWNlLEo9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MCxkPWEubGVuZ3RoO2Q+YztjKyspaWYoYVtjXT09PWIpcmV0dXJuIGM7cmV0dXJuLTF9LEs9ImNoZWNrZWR8c2VsZWN0ZWR8YXN5bmN8YXV0b2ZvY3VzfGF1dG9wbGF5fGNvbnRyb2xzfGRlZmVyfGRpc2FibGVkfGhpZGRlbnxpc21hcHxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkIixMPSJbXFx4MjBcXHRcXHJcXG5cXGZdIixNPSIoPzpcXFxcLnxbXFx3LV18W15cXHgwMC1cXHhhMF0pKyIsTj1NLnJlcGxhY2UoInciLCJ3IyIpLE89IlxcWyIrTCsiKigiK00rIikoPzoiK0wrIiooWypeJHwhfl0\/PSkiK0wrIiooPzonKCg\/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcInwoIitOKyIpKXwpIitMKyIqXFxdIixQPSI6KCIrTSsiKSg\/OlxcKCgoJygoPzpcXFxcLnxbXlxcXFwnXSkqKSd8XCIoKD86XFxcXC58W15cXFxcXCJdKSopXCIpfCgoPzpcXFxcLnxbXlxcXFwoKVtcXF1dfCIrTysiKSopfC4qKVxcKXwpIixRPW5ldyBSZWdFeHAoTCsiKyIsImciKSxSPW5ldyBSZWdFeHAoIl4iK0wrIit8KCg\/Ol58W15cXFxcXSkoPzpcXFxcLikqKSIrTCsiKyQiLCJnIiksUz1uZXcgUmVnRXhwKCJeIitMKyIqLCIrTCsiKiIpLFQ9bmV3IFJlZ0V4cCgiXiIrTCsiKihbPit+XXwiK0wrIikiK0wrIioiKSxVPW5ldyBSZWdFeHAoIj0iK0wrIiooW15cXF0nXCJdKj8pIitMKyIqXFxdIiwiZyIpLFY9bmV3IFJlZ0V4cChQKSxXPW5ldyBSZWdFeHAoIl4iK04rIiQiKSxYPXtJRDpuZXcgUmVnRXhwKCJeIygiK00rIikiKSxDTEFTUzpuZXcgUmVnRXhwKCJeXFwuKCIrTSsiKSIpLFRBRzpuZXcgUmVnRXhwKCJeKCIrTS5yZXBsYWNlKCJ3IiwidyoiKSsiKSIpLEFUVFI6bmV3IFJlZ0V4cCgiXiIrTyksUFNFVURPOm5ldyBSZWdFeHAoIl4iK1ApLENISUxEOm5ldyBSZWdFeHAoIl46KG9ubHl8Zmlyc3R8bGFzdHxudGh8bnRoLWxhc3QpLShjaGlsZHxvZi10eXBlKSg\/OlxcKCIrTCsiKihldmVufG9kZHwoKFsrLV18KShcXGQqKW58KSIrTCsiKig\/OihbKy1dfCkiK0wrIiooXFxkKyl8KSkiK0wrIipcXCl8KSIsImkiKSxib29sOm5ldyBSZWdFeHAoIl4oPzoiK0srIikkIiwiaSIpLG5lZWRzQ29udGV4dDpuZXcgUmVnRXhwKCJeIitMKyIqWz4rfl18OihldmVufG9kZHxlcXxndHxsdHxudGh8Zmlyc3R8bGFzdCkoPzpcXCgiK0wrIiooKD86LVxcZCk\/XFxkKikiK0wrIipcXCl8KSg\/PVteLV18JCkiLCJpIil9LFk9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSxaPS9eaFxkJC9pLCQ9L15bXntdK1x7XHMqXFtuYXRpdmUgXHcvLF89L14oPzojKFtcdy1dKyl8KFx3Kyl8XC4oW1x3LV0rKSkkLyxhYT0vWyt+XS8sYmE9Lyd8XFwvZyxjYT1uZXcgUmVnRXhwKCJcXFxcKFtcXGRhLWZdezEsNn0iK0wrIj98KCIrTCsiKXwuKSIsImlnIiksZGE9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPSIweCIrYi02NTUzNjtyZXR1cm4gZCE9PWR8fGM\/YjowPmQ\/U3RyaW5nLmZyb21DaGFyQ29kZShkKzY1NTM2KTpTdHJpbmcuZnJvbUNoYXJDb2RlKGQ+PjEwfDU1Mjk2LDEwMjMmZHw1NjMyMCl9LGVhPWZ1bmN0aW9uKCl7bSgpfTt0cnl7SC5hcHBseShFPUkuY2FsbCh2LmNoaWxkTm9kZXMpLHYuY2hpbGROb2RlcyksRVt2LmNoaWxkTm9kZXMubGVuZ3RoXS5ub2RlVHlwZX1jYXRjaChmYSl7SD17YXBwbHk6RS5sZW5ndGg\/ZnVuY3Rpb24oYSxiKXtHLmFwcGx5KGEsSS5jYWxsKGIpKX06ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmxlbmd0aCxkPTA7d2hpbGUoYVtjKytdPWJbZCsrXSk7YS5sZW5ndGg9Yy0xfX19ZnVuY3Rpb24gZ2EoYSxiLGQsZSl7dmFyIGYsaCxqLGssbCxvLHIscyx3LHg7aWYoKGI\/Yi5vd25lckRvY3VtZW50fHxiOnYpIT09biYmbShiKSxiPWJ8fG4sZD1kfHxbXSxrPWIubm9kZVR5cGUsInN0cmluZyIhPXR5cGVvZiBhfHwhYXx8MSE9PWsmJjkhPT1rJiYxMSE9PWspcmV0dXJuIGQ7aWYoIWUmJnApe2lmKDExIT09ayYmKGY9Xy5leGVjKGEpKSlpZihqPWZbMV0pe2lmKDk9PT1rKXtpZihoPWIuZ2V0RWxlbWVudEJ5SWQoaiksIWh8fCFoLnBhcmVudE5vZGUpcmV0dXJuIGQ7aWYoaC5pZD09PWopcmV0dXJuIGQucHVzaChoKSxkfWVsc2UgaWYoYi5vd25lckRvY3VtZW50JiYoaD1iLm93bmVyRG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaikpJiZ0KGIsaCkmJmguaWQ9PT1qKXJldHVybiBkLnB1c2goaCksZH1lbHNle2lmKGZbMl0pcmV0dXJuIEguYXBwbHkoZCxiLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpKSxkO2lmKChqPWZbM10pJiZjLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpcmV0dXJuIEguYXBwbHkoZCxiLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoaikpLGR9aWYoYy5xc2EmJighcXx8IXEudGVzdChhKSkpe2lmKHM9cj11LHc9Yix4PTEhPT1rJiZhLDE9PT1rJiYib2JqZWN0IiE9PWIubm9kZU5hbWUudG9Mb3dlckNhc2UoKSl7bz1nKGEpLChyPWIuZ2V0QXR0cmlidXRlKCJpZCIpKT9zPXIucmVwbGFjZShiYSwiXFwkJiIpOmIuc2V0QXR0cmlidXRlKCJpZCIscykscz0iW2lkPSciK3MrIiddICIsbD1vLmxlbmd0aDt3aGlsZShsLS0pb1tsXT1zK3JhKG9bbF0pO3c9YWEudGVzdChhKSYmcGEoYi5wYXJlbnROb2RlKXx8Yix4PW8uam9pbigiLCIpfWlmKHgpdHJ5e3JldHVybiBILmFwcGx5KGQsdy5xdWVyeVNlbGVjdG9yQWxsKHgpKSxkfWNhdGNoKHkpe31maW5hbGx5e3J8fGIucmVtb3ZlQXR0cmlidXRlKCJpZCIpfX19cmV0dXJuIGkoYS5yZXBsYWNlKFIsIiQxIiksYixkLGUpfWZ1bmN0aW9uIGhhKCl7dmFyIGE9W107ZnVuY3Rpb24gYihjLGUpe3JldHVybiBhLnB1c2goYysiICIpPmQuY2FjaGVMZW5ndGgmJmRlbGV0ZSBiW2Euc2hpZnQoKV0sYltjKyIgIl09ZX1yZXR1cm4gYn1mdW5jdGlvbiBpYShhKXtyZXR1cm4gYVt1XT0hMCxhfWZ1bmN0aW9uIGphKGEpe3ZhciBiPW4uY3JlYXRlRWxlbWVudCgiZGl2Iik7dHJ5e3JldHVybiEhYShiKX1jYXRjaChjKXtyZXR1cm4hMX1maW5hbGx5e2IucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGIpLGI9bnVsbH19ZnVuY3Rpb24ga2EoYSxiKXt2YXIgYz1hLnNwbGl0KCJ8IiksZT1hLmxlbmd0aDt3aGlsZShlLS0pZC5hdHRySGFuZGxlW2NbZV1dPWJ9ZnVuY3Rpb24gbGEoYSxiKXt2YXIgYz1iJiZhLGQ9YyYmMT09PWEubm9kZVR5cGUmJjE9PT1iLm5vZGVUeXBlJiYofmIuc291cmNlSW5kZXh8fEMpLSh+YS5zb3VyY2VJbmRleHx8Qyk7aWYoZClyZXR1cm4gZDtpZihjKXdoaWxlKGM9Yy5uZXh0U2libGluZylpZihjPT09YilyZXR1cm4tMTtyZXR1cm4gYT8xOi0xfWZ1bmN0aW9uIG1hKGEpe3JldHVybiBmdW5jdGlvbihiKXt2YXIgYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PWMmJmIudHlwZT09PWF9fWZ1bmN0aW9uIG5hKGEpe3JldHVybiBmdW5jdGlvbihiKXt2YXIgYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuKCJpbnB1dCI9PT1jfHwiYnV0dG9uIj09PWMpJiZiLnR5cGU9PT1hfX1mdW5jdGlvbiBvYShhKXtyZXR1cm4gaWEoZnVuY3Rpb24oYil7cmV0dXJuIGI9K2IsaWEoZnVuY3Rpb24oYyxkKXt2YXIgZSxmPWEoW10sYy5sZW5ndGgsYiksZz1mLmxlbmd0aDt3aGlsZShnLS0pY1tlPWZbZ11dJiYoY1tlXT0hKGRbZV09Y1tlXSkpfSl9KX1mdW5jdGlvbiBwYShhKXtyZXR1cm4gYSYmInVuZGVmaW5lZCIhPXR5cGVvZiBhLmdldEVsZW1lbnRzQnlUYWdOYW1lJiZhfWM9Z2Euc3VwcG9ydD17fSxmPWdhLmlzWE1MPWZ1bmN0aW9uKGEpe3ZhciBiPWEmJihhLm93bmVyRG9jdW1lbnR8fGEpLmRvY3VtZW50RWxlbWVudDtyZXR1cm4gYj8iSFRNTCIhPT1iLm5vZGVOYW1lOiExfSxtPWdhLnNldERvY3VtZW50PWZ1bmN0aW9uKGEpe3ZhciBiLGUsZz1hP2Eub3duZXJEb2N1bWVudHx8YTp2O3JldHVybiBnIT09biYmOT09PWcubm9kZVR5cGUmJmcuZG9jdW1lbnRFbGVtZW50PyhuPWcsbz1nLmRvY3VtZW50RWxlbWVudCxlPWcuZGVmYXVsdFZpZXcsZSYmZSE9PWUudG9wJiYoZS5hZGRFdmVudExpc3RlbmVyP2UuYWRkRXZlbnRMaXN0ZW5lcigidW5sb2FkIixlYSwhMSk6ZS5hdHRhY2hFdmVudCYmZS5hdHRhY2hFdmVudCgib251bmxvYWQiLGVhKSkscD0hZihnKSxjLmF0dHJpYnV0ZXM9amEoZnVuY3Rpb24oYSl7cmV0dXJuIGEuY2xhc3NOYW1lPSJpIiwhYS5nZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIpfSksYy5nZXRFbGVtZW50c0J5VGFnTmFtZT1qYShmdW5jdGlvbihhKXtyZXR1cm4gYS5hcHBlbmRDaGlsZChnLmNyZWF0ZUNvbW1lbnQoIiIpKSwhYS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aH0pLGMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZT0kLnRlc3QoZy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKSxjLmdldEJ5SWQ9amEoZnVuY3Rpb24oYSl7cmV0dXJuIG8uYXBwZW5kQ2hpbGQoYSkuaWQ9dSwhZy5nZXRFbGVtZW50c0J5TmFtZXx8IWcuZ2V0RWxlbWVudHNCeU5hbWUodSkubGVuZ3RofSksYy5nZXRCeUlkPyhkLmZpbmQuSUQ9ZnVuY3Rpb24oYSxiKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGIuZ2V0RWxlbWVudEJ5SWQmJnApe3ZhciBjPWIuZ2V0RWxlbWVudEJ5SWQoYSk7cmV0dXJuIGMmJmMucGFyZW50Tm9kZT9bY106W119fSxkLmZpbHRlci5JRD1mdW5jdGlvbihhKXt2YXIgYj1hLnJlcGxhY2UoY2EsZGEpO3JldHVybiBmdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUoImlkIik9PT1ifX0pOihkZWxldGUgZC5maW5kLklELGQuZmlsdGVyLklEPWZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShjYSxkYSk7cmV0dXJuIGZ1bmN0aW9uKGEpe3ZhciBjPSJ1bmRlZmluZWQiIT10eXBlb2YgYS5nZXRBdHRyaWJ1dGVOb2RlJiZhLmdldEF0dHJpYnV0ZU5vZGUoImlkIik7cmV0dXJuIGMmJmMudmFsdWU9PT1ifX0pLGQuZmluZC5UQUc9Yy5nZXRFbGVtZW50c0J5VGFnTmFtZT9mdW5jdGlvbihhLGIpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgYi5nZXRFbGVtZW50c0J5VGFnTmFtZT9iLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpOmMucXNhP2IucXVlcnlTZWxlY3RvckFsbChhKTp2b2lkIDB9OmZ1bmN0aW9uKGEsYil7dmFyIGMsZD1bXSxlPTAsZj1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpO2lmKCIqIj09PWEpe3doaWxlKGM9ZltlKytdKTE9PT1jLm5vZGVUeXBlJiZkLnB1c2goYyk7cmV0dXJuIGR9cmV0dXJuIGZ9LGQuZmluZC5DTEFTUz1jLmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJmZ1bmN0aW9uKGEsYil7cmV0dXJuIHA\/Yi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGEpOnZvaWQgMH0scj1bXSxxPVtdLChjLnFzYT0kLnRlc3QoZy5xdWVyeVNlbGVjdG9yQWxsKSkmJihqYShmdW5jdGlvbihhKXtvLmFwcGVuZENoaWxkKGEpLmlubmVySFRNTD0iPGEgaWQ9JyIrdSsiJz48L2E+PHNlbGVjdCBpZD0nIit1KyItXGZdJyBtc2FsbG93Y2FwdHVyZT0nJz48b3B0aW9uIHNlbGVjdGVkPScnPjwvb3B0aW9uPjwvc2VsZWN0PiIsYS5xdWVyeVNlbGVjdG9yQWxsKCJbbXNhbGxvd2NhcHR1cmVePScnXSIpLmxlbmd0aCYmcS5wdXNoKCJbKl4kXT0iK0wrIiooPzonJ3xcIlwiKSIpLGEucXVlcnlTZWxlY3RvckFsbCgiW3NlbGVjdGVkXSIpLmxlbmd0aHx8cS5wdXNoKCJcXFsiK0wrIiooPzp2YWx1ZXwiK0srIikiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIltpZH49Iit1KyItXSIpLmxlbmd0aHx8cS5wdXNoKCJ+PSIpLGEucXVlcnlTZWxlY3RvckFsbCgiOmNoZWNrZWQiKS5sZW5ndGh8fHEucHVzaCgiOmNoZWNrZWQiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoImEjIit1KyIrKiIpLmxlbmd0aHx8cS5wdXNoKCIuIy4rWyt+XSIpfSksamEoZnVuY3Rpb24oYSl7dmFyIGI9Zy5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO2Iuc2V0QXR0cmlidXRlKCJ0eXBlIiwiaGlkZGVuIiksYS5hcHBlbmRDaGlsZChiKS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCJEIiksYS5xdWVyeVNlbGVjdG9yQWxsKCJbbmFtZT1kXSIpLmxlbmd0aCYmcS5wdXNoKCJuYW1lIitMKyIqWypeJHwhfl0\/PSIpLGEucXVlcnlTZWxlY3RvckFsbCgiOmVuYWJsZWQiKS5sZW5ndGh8fHEucHVzaCgiOmVuYWJsZWQiLCI6ZGlzYWJsZWQiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIiosOngiKSxxLnB1c2goIiwuKjoiKX0pKSwoYy5tYXRjaGVzU2VsZWN0b3I9JC50ZXN0KHM9by5tYXRjaGVzfHxvLndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8by5tb3pNYXRjaGVzU2VsZWN0b3J8fG8ub01hdGNoZXNTZWxlY3Rvcnx8by5tc01hdGNoZXNTZWxlY3RvcikpJiZqYShmdW5jdGlvbihhKXtjLmRpc2Nvbm5lY3RlZE1hdGNoPXMuY2FsbChhLCJkaXYiKSxzLmNhbGwoYSwiW3MhPScnXTp4Iiksci5wdXNoKCIhPSIsUCl9KSxxPXEubGVuZ3RoJiZuZXcgUmVnRXhwKHEuam9pbigifCIpKSxyPXIubGVuZ3RoJiZuZXcgUmVnRXhwKHIuam9pbigifCIpKSxiPSQudGVzdChvLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKSx0PWJ8fCQudGVzdChvLmNvbnRhaW5zKT9mdW5jdGlvbihhLGIpe3ZhciBjPTk9PT1hLm5vZGVUeXBlP2EuZG9jdW1lbnRFbGVtZW50OmEsZD1iJiZiLnBhcmVudE5vZGU7cmV0dXJuIGE9PT1kfHwhKCFkfHwxIT09ZC5ub2RlVHlwZXx8IShjLmNvbnRhaW5zP2MuY29udGFpbnMoZCk6YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiYmMTYmYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihkKSkpfTpmdW5jdGlvbihhLGIpe2lmKGIpd2hpbGUoYj1iLnBhcmVudE5vZGUpaWYoYj09PWEpcmV0dXJuITA7cmV0dXJuITF9LEI9Yj9mdW5jdGlvbihhLGIpe2lmKGE9PT1iKXJldHVybiBsPSEwLDA7dmFyIGQ9IWEuY29tcGFyZURvY3VtZW50UG9zaXRpb24tIWIuY29tcGFyZURvY3VtZW50UG9zaXRpb247cmV0dXJuIGQ\/ZDooZD0oYS5vd25lckRvY3VtZW50fHxhKT09PShiLm93bmVyRG9jdW1lbnR8fGIpP2EuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYik6MSwxJmR8fCFjLnNvcnREZXRhY2hlZCYmYi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihhKT09PWQ\/YT09PWd8fGEub3duZXJEb2N1bWVudD09PXYmJnQodixhKT8tMTpiPT09Z3x8Yi5vd25lckRvY3VtZW50PT09diYmdCh2LGIpPzE6az9KKGssYSktSihrLGIpOjA6NCZkPy0xOjEpfTpmdW5jdGlvbihhLGIpe2lmKGE9PT1iKXJldHVybiBsPSEwLDA7dmFyIGMsZD0wLGU9YS5wYXJlbnROb2RlLGY9Yi5wYXJlbnROb2RlLGg9W2FdLGk9W2JdO2lmKCFlfHwhZilyZXR1cm4gYT09PWc\/LTE6Yj09PWc\/MTplPy0xOmY\/MTprP0ooayxhKS1KKGssYik6MDtpZihlPT09ZilyZXR1cm4gbGEoYSxiKTtjPWE7d2hpbGUoYz1jLnBhcmVudE5vZGUpaC51bnNoaWZ0KGMpO2M9Yjt3aGlsZShjPWMucGFyZW50Tm9kZSlpLnVuc2hpZnQoYyk7d2hpbGUoaFtkXT09PWlbZF0pZCsrO3JldHVybiBkP2xhKGhbZF0saVtkXSk6aFtkXT09PXY\/LTE6aVtkXT09PXY\/MTowfSxnKTpufSxnYS5tYXRjaGVzPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGdhKGEsbnVsbCxudWxsLGIpfSxnYS5tYXRjaGVzU2VsZWN0b3I9ZnVuY3Rpb24oYSxiKXtpZigoYS5vd25lckRvY3VtZW50fHxhKSE9PW4mJm0oYSksYj1iLnJlcGxhY2UoVSwiPSckMSddIiksISghYy5tYXRjaGVzU2VsZWN0b3J8fCFwfHxyJiZyLnRlc3QoYil8fHEmJnEudGVzdChiKSkpdHJ5e3ZhciBkPXMuY2FsbChhLGIpO2lmKGR8fGMuZGlzY29ubmVjdGVkTWF0Y2h8fGEuZG9jdW1lbnQmJjExIT09YS5kb2N1bWVudC5ub2RlVHlwZSlyZXR1cm4gZH1jYXRjaChlKXt9cmV0dXJuIGdhKGIsbixudWxsLFthXSkubGVuZ3RoPjB9LGdhLmNvbnRhaW5zPWZ1bmN0aW9uKGEsYil7cmV0dXJuKGEub3duZXJEb2N1bWVudHx8YSkhPT1uJiZtKGEpLHQoYSxiKX0sZ2EuYXR0cj1mdW5jdGlvbihhLGIpeyhhLm93bmVyRG9jdW1lbnR8fGEpIT09biYmbShhKTt2YXIgZT1kLmF0dHJIYW5kbGVbYi50b0xvd2VyQ2FzZSgpXSxmPWUmJkQuY2FsbChkLmF0dHJIYW5kbGUsYi50b0xvd2VyQ2FzZSgpKT9lKGEsYiwhcCk6dm9pZCAwO3JldHVybiB2b2lkIDAhPT1mP2Y6Yy5hdHRyaWJ1dGVzfHwhcD9hLmdldEF0dHJpYnV0ZShiKTooZj1hLmdldEF0dHJpYnV0ZU5vZGUoYikpJiZmLnNwZWNpZmllZD9mLnZhbHVlOm51bGx9LGdhLmVycm9yPWZ1bmN0aW9uKGEpe3Rocm93IG5ldyBFcnJvcigiU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIithKX0sZ2EudW5pcXVlU29ydD1mdW5jdGlvbihhKXt2YXIgYixkPVtdLGU9MCxmPTA7aWYobD0hYy5kZXRlY3REdXBsaWNhdGVzLGs9IWMuc29ydFN0YWJsZSYmYS5zbGljZSgwKSxhLnNvcnQoQiksbCl7d2hpbGUoYj1hW2YrK10pYj09PWFbZl0mJihlPWQucHVzaChmKSk7d2hpbGUoZS0tKWEuc3BsaWNlKGRbZV0sMSl9cmV0dXJuIGs9bnVsbCxhfSxlPWdhLmdldFRleHQ9ZnVuY3Rpb24oYSl7dmFyIGIsYz0iIixkPTAsZj1hLm5vZGVUeXBlO2lmKGYpe2lmKDE9PT1mfHw5PT09Znx8MTE9PT1mKXtpZigic3RyaW5nIj09dHlwZW9mIGEudGV4dENvbnRlbnQpcmV0dXJuIGEudGV4dENvbnRlbnQ7Zm9yKGE9YS5maXJzdENoaWxkO2E7YT1hLm5leHRTaWJsaW5nKWMrPWUoYSl9ZWxzZSBpZigzPT09Znx8ND09PWYpcmV0dXJuIGEubm9kZVZhbHVlfWVsc2Ugd2hpbGUoYj1hW2QrK10pYys9ZShiKTtyZXR1cm4gY30sZD1nYS5zZWxlY3RvcnM9e2NhY2hlTGVuZ3RoOjUwLGNyZWF0ZVBzZXVkbzppYSxtYXRjaDpYLGF0dHJIYW5kbGU6e30sZmluZDp7fSxyZWxhdGl2ZTp7Ij4iOntkaXI6InBhcmVudE5vZGUiLGZpcnN0OiEwfSwiICI6e2RpcjoicGFyZW50Tm9kZSJ9LCIrIjp7ZGlyOiJwcmV2aW91c1NpYmxpbmciLGZpcnN0OiEwfSwifiI6e2RpcjoicHJldmlvdXNTaWJsaW5nIn19LHByZUZpbHRlcjp7QVRUUjpmdW5jdGlvbihhKXtyZXR1cm4gYVsxXT1hWzFdLnJlcGxhY2UoY2EsZGEpLGFbM109KGFbM118fGFbNF18fGFbNV18fCIiKS5yZXBsYWNlKGNhLGRhKSwifj0iPT09YVsyXSYmKGFbM109IiAiK2FbM10rIiAiKSxhLnNsaWNlKDAsNCl9LENISUxEOmZ1bmN0aW9uKGEpe3JldHVybiBhWzFdPWFbMV0udG9Mb3dlckNhc2UoKSwibnRoIj09PWFbMV0uc2xpY2UoMCwzKT8oYVszXXx8Z2EuZXJyb3IoYVswXSksYVs0XT0rKGFbNF0\/YVs1XSsoYVs2XXx8MSk6MiooImV2ZW4iPT09YVszXXx8Im9kZCI9PT1hWzNdKSksYVs1XT0rKGFbN10rYVs4XXx8Im9kZCI9PT1hWzNdKSk6YVszXSYmZ2EuZXJyb3IoYVswXSksYX0sUFNFVURPOmZ1bmN0aW9uKGEpe3ZhciBiLGM9IWFbNl0mJmFbMl07cmV0dXJuIFguQ0hJTEQudGVzdChhWzBdKT9udWxsOihhWzNdP2FbMl09YVs0XXx8YVs1XXx8IiI6YyYmVi50ZXN0KGMpJiYoYj1nKGMsITApKSYmKGI9Yy5pbmRleE9mKCIpIixjLmxlbmd0aC1iKS1jLmxlbmd0aCkmJihhWzBdPWFbMF0uc2xpY2UoMCxiKSxhWzJdPWMuc2xpY2UoMCxiKSksYS5zbGljZSgwLDMpKX19LGZpbHRlcjp7VEFHOmZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShjYSxkYSkudG9Mb3dlckNhc2UoKTtyZXR1cm4iKiI9PT1hP2Z1bmN0aW9uKCl7cmV0dXJuITB9OmZ1bmN0aW9uKGEpe3JldHVybiBhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1ifX0sQ0xBU1M6ZnVuY3Rpb24oYSl7dmFyIGI9eVthKyIgIl07cmV0dXJuIGJ8fChiPW5ldyBSZWdFeHAoIihefCIrTCsiKSIrYSsiKCIrTCsifCQpIikpJiZ5KGEsZnVuY3Rpb24oYSl7cmV0dXJuIGIudGVzdCgic3RyaW5nIj09dHlwZW9mIGEuY2xhc3NOYW1lJiZhLmNsYXNzTmFtZXx8InVuZGVmaW5lZCIhPXR5cGVvZiBhLmdldEF0dHJpYnV0ZSYmYS5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiKX0pfSxBVFRSOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZnVuY3Rpb24oZCl7dmFyIGU9Z2EuYXR0cihkLGEpO3JldHVybiBudWxsPT1lPyIhPSI9PT1iOmI\/KGUrPSIiLCI9Ij09PWI\/ZT09PWM6IiE9Ij09PWI\/ZSE9PWM6Il49Ij09PWI\/YyYmMD09PWUuaW5kZXhPZihjKToiKj0iPT09Yj9jJiZlLmluZGV4T2YoYyk+LTE6IiQ9Ij09PWI\/YyYmZS5zbGljZSgtYy5sZW5ndGgpPT09Yzoifj0iPT09Yj8oIiAiK2UucmVwbGFjZShRLCIgIikrIiAiKS5pbmRleE9mKGMpPi0xOiJ8PSI9PT1iP2U9PT1jfHxlLnNsaWNlKDAsYy5sZW5ndGgrMSk9PT1jKyItIjohMSk6ITB9fSxDSElMRDpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPSJudGgiIT09YS5zbGljZSgwLDMpLGc9Imxhc3QiIT09YS5zbGljZSgtNCksaD0ib2YtdHlwZSI9PT1iO3JldHVybiAxPT09ZCYmMD09PWU\/ZnVuY3Rpb24oYSl7cmV0dXJuISFhLnBhcmVudE5vZGV9OmZ1bmN0aW9uKGIsYyxpKXt2YXIgaixrLGwsbSxuLG8scD1mIT09Zz8ibmV4dFNpYmxpbmciOiJwcmV2aW91c1NpYmxpbmciLHE9Yi5wYXJlbnROb2RlLHI9aCYmYi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLHM9IWkmJiFoO2lmKHEpe2lmKGYpe3doaWxlKHApe2w9Yjt3aGlsZShsPWxbcF0paWYoaD9sLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1yOjE9PT1sLm5vZGVUeXBlKXJldHVybiExO289cD0ib25seSI9PT1hJiYhbyYmIm5leHRTaWJsaW5nIn1yZXR1cm4hMH1pZihvPVtnP3EuZmlyc3RDaGlsZDpxLmxhc3RDaGlsZF0sZyYmcyl7az1xW3VdfHwocVt1XT17fSksaj1rW2FdfHxbXSxuPWpbMF09PT13JiZqWzFdLG09alswXT09PXcmJmpbMl0sbD1uJiZxLmNoaWxkTm9kZXNbbl07d2hpbGUobD0rK24mJmwmJmxbcF18fChtPW49MCl8fG8ucG9wKCkpaWYoMT09PWwubm9kZVR5cGUmJisrbSYmbD09PWIpe2tbYV09W3csbixtXTticmVha319ZWxzZSBpZihzJiYoaj0oYlt1XXx8KGJbdV09e30pKVthXSkmJmpbMF09PT13KW09alsxXTtlbHNlIHdoaWxlKGw9KytuJiZsJiZsW3BdfHwobT1uPTApfHxvLnBvcCgpKWlmKChoP2wubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXI6MT09PWwubm9kZVR5cGUpJiYrK20mJihzJiYoKGxbdV18fChsW3VdPXt9KSlbYV09W3csbV0pLGw9PT1iKSlicmVhaztyZXR1cm4gbS09ZSxtPT09ZHx8bSVkPT09MCYmbS9kPj0wfX19LFBTRVVETzpmdW5jdGlvbihhLGIpe3ZhciBjLGU9ZC5wc2V1ZG9zW2FdfHxkLnNldEZpbHRlcnNbYS50b0xvd2VyQ2FzZSgpXXx8Z2EuZXJyb3IoInVuc3VwcG9ydGVkIHBzZXVkbzogIithKTtyZXR1cm4gZVt1XT9lKGIpOmUubGVuZ3RoPjE\/KGM9W2EsYSwiIixiXSxkLnNldEZpbHRlcnMuaGFzT3duUHJvcGVydHkoYS50b0xvd2VyQ2FzZSgpKT9pYShmdW5jdGlvbihhLGMpe3ZhciBkLGY9ZShhLGIpLGc9Zi5sZW5ndGg7d2hpbGUoZy0tKWQ9SihhLGZbZ10pLGFbZF09IShjW2RdPWZbZ10pfSk6ZnVuY3Rpb24oYSl7cmV0dXJuIGUoYSwwLGMpfSk6ZX19LHBzZXVkb3M6e25vdDppYShmdW5jdGlvbihhKXt2YXIgYj1bXSxjPVtdLGQ9aChhLnJlcGxhY2UoUiwiJDEiKSk7cmV0dXJuIGRbdV0\/aWEoZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGYsZz1kKGEsbnVsbCxlLFtdKSxoPWEubGVuZ3RoO3doaWxlKGgtLSkoZj1nW2hdKSYmKGFbaF09IShiW2hdPWYpKX0pOmZ1bmN0aW9uKGEsZSxmKXtyZXR1cm4gYlswXT1hLGQoYixudWxsLGYsYyksYlswXT1udWxsLCFjLnBvcCgpfX0pLGhhczppYShmdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oYil7cmV0dXJuIGdhKGEsYikubGVuZ3RoPjB9fSksY29udGFpbnM6aWEoZnVuY3Rpb24oYSl7cmV0dXJuIGE9YS5yZXBsYWNlKGNhLGRhKSxmdW5jdGlvbihiKXtyZXR1cm4oYi50ZXh0Q29udGVudHx8Yi5pbm5lclRleHR8fGUoYikpLmluZGV4T2YoYSk+LTF9fSksbGFuZzppYShmdW5jdGlvbihhKXtyZXR1cm4gVy50ZXN0KGF8fCIiKXx8Z2EuZXJyb3IoInVuc3VwcG9ydGVkIGxhbmc6ICIrYSksYT1hLnJlcGxhY2UoY2EsZGEpLnRvTG93ZXJDYXNlKCksZnVuY3Rpb24oYil7dmFyIGM7ZG8gaWYoYz1wP2IubGFuZzpiLmdldEF0dHJpYnV0ZSgieG1sOmxhbmciKXx8Yi5nZXRBdHRyaWJ1dGUoImxhbmciKSlyZXR1cm4gYz1jLnRvTG93ZXJDYXNlKCksYz09PWF8fDA9PT1jLmluZGV4T2YoYSsiLSIpO3doaWxlKChiPWIucGFyZW50Tm9kZSkmJjE9PT1iLm5vZGVUeXBlKTtyZXR1cm4hMX19KSx0YXJnZXQ6ZnVuY3Rpb24oYil7dmFyIGM9YS5sb2NhdGlvbiYmYS5sb2NhdGlvbi5oYXNoO3JldHVybiBjJiZjLnNsaWNlKDEpPT09Yi5pZH0scm9vdDpmdW5jdGlvbihhKXtyZXR1cm4gYT09PW99LGZvY3VzOmZ1bmN0aW9uKGEpe3JldHVybiBhPT09bi5hY3RpdmVFbGVtZW50JiYoIW4uaGFzRm9jdXN8fG4uaGFzRm9jdXMoKSkmJiEhKGEudHlwZXx8YS5ocmVmfHx+YS50YWJJbmRleCl9LGVuYWJsZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZGlzYWJsZWQ9PT0hMX0sZGlzYWJsZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZGlzYWJsZWQ9PT0hMH0sY2hlY2tlZDpmdW5jdGlvbihhKXt2YXIgYj1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PWImJiEhYS5jaGVja2VkfHwib3B0aW9uIj09PWImJiEhYS5zZWxlY3RlZH0sc2VsZWN0ZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucGFyZW50Tm9kZSYmYS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgsYS5zZWxlY3RlZD09PSEwfSxlbXB0eTpmdW5jdGlvbihhKXtmb3IoYT1hLmZpcnN0Q2hpbGQ7YTthPWEubmV4dFNpYmxpbmcpaWYoYS5ub2RlVHlwZTw2KXJldHVybiExO3JldHVybiEwfSxwYXJlbnQ6ZnVuY3Rpb24oYSl7cmV0dXJuIWQucHNldWRvcy5lbXB0eShhKX0saGVhZGVyOmZ1bmN0aW9uKGEpe3JldHVybiBaLnRlc3QoYS5ub2RlTmFtZSl9LGlucHV0OmZ1bmN0aW9uKGEpe3JldHVybiBZLnRlc3QoYS5ub2RlTmFtZSl9LGJ1dHRvbjpmdW5jdGlvbihhKXt2YXIgYj1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PWImJiJidXR0b24iPT09YS50eXBlfHwiYnV0dG9uIj09PWJ9LHRleHQ6ZnVuY3Rpb24oYSl7dmFyIGI7cmV0dXJuImlucHV0Ij09PWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmInRleHQiPT09YS50eXBlJiYobnVsbD09KGI9YS5nZXRBdHRyaWJ1dGUoInR5cGUiKSl8fCJ0ZXh0Ij09PWIudG9Mb3dlckNhc2UoKSl9LGZpcnN0Om9hKGZ1bmN0aW9uKCl7cmV0dXJuWzBdfSksbGFzdDpvYShmdW5jdGlvbihhLGIpe3JldHVybltiLTFdfSksZXE6b2EoZnVuY3Rpb24oYSxiLGMpe3JldHVyblswPmM\/YytiOmNdfSksZXZlbjpvYShmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0wO2I+YztjKz0yKWEucHVzaChjKTtyZXR1cm4gYX0pLG9kZDpvYShmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0xO2I+YztjKz0yKWEucHVzaChjKTtyZXR1cm4gYX0pLGx0Om9hKGZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQ9MD5jP2MrYjpjOy0tZD49MDspYS5wdXNoKGQpO3JldHVybiBhfSksZ3Q6b2EoZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZD0wPmM\/YytiOmM7KytkPGI7KWEucHVzaChkKTtyZXR1cm4gYX0pfX0sZC5wc2V1ZG9zLm50aD1kLnBzZXVkb3MuZXE7Zm9yKGIgaW57cmFkaW86ITAsY2hlY2tib3g6ITAsZmlsZTohMCxwYXNzd29yZDohMCxpbWFnZTohMH0pZC5wc2V1ZG9zW2JdPW1hKGIpO2ZvcihiIGlue3N1Ym1pdDohMCxyZXNldDohMH0pZC5wc2V1ZG9zW2JdPW5hKGIpO2Z1bmN0aW9uIHFhKCl7fXFhLnByb3RvdHlwZT1kLmZpbHRlcnM9ZC5wc2V1ZG9zLGQuc2V0RmlsdGVycz1uZXcgcWEsZz1nYS50b2tlbml6ZT1mdW5jdGlvbihhLGIpe3ZhciBjLGUsZixnLGgsaSxqLGs9elthKyIgIl07aWYoaylyZXR1cm4gYj8wOmsuc2xpY2UoMCk7aD1hLGk9W10saj1kLnByZUZpbHRlcjt3aGlsZShoKXsoIWN8fChlPVMuZXhlYyhoKSkpJiYoZSYmKGg9aC5zbGljZShlWzBdLmxlbmd0aCl8fGgpLGkucHVzaChmPVtdKSksYz0hMSwoZT1ULmV4ZWMoaCkpJiYoYz1lLnNoaWZ0KCksZi5wdXNoKHt2YWx1ZTpjLHR5cGU6ZVswXS5yZXBsYWNlKFIsIiAiKX0pLGg9aC5zbGljZShjLmxlbmd0aCkpO2ZvcihnIGluIGQuZmlsdGVyKSEoZT1YW2ddLmV4ZWMoaCkpfHxqW2ddJiYhKGU9altnXShlKSl8fChjPWUuc2hpZnQoKSxmLnB1c2goe3ZhbHVlOmMsdHlwZTpnLG1hdGNoZXM6ZX0pLGg9aC5zbGljZShjLmxlbmd0aCkpO2lmKCFjKWJyZWFrfXJldHVybiBiP2gubGVuZ3RoOmg\/Z2EuZXJyb3IoYSk6eihhLGkpLnNsaWNlKDApfTtmdW5jdGlvbiByYShhKXtmb3IodmFyIGI9MCxjPWEubGVuZ3RoLGQ9IiI7Yz5iO2IrKylkKz1hW2JdLnZhbHVlO3JldHVybiBkfWZ1bmN0aW9uIHNhKGEsYixjKXt2YXIgZD1iLmRpcixlPWMmJiJwYXJlbnROb2RlIj09PWQsZj14Kys7cmV0dXJuIGIuZmlyc3Q\/ZnVuY3Rpb24oYixjLGYpe3doaWxlKGI9YltkXSlpZigxPT09Yi5ub2RlVHlwZXx8ZSlyZXR1cm4gYShiLGMsZil9OmZ1bmN0aW9uKGIsYyxnKXt2YXIgaCxpLGo9W3csZl07aWYoZyl7d2hpbGUoYj1iW2RdKWlmKCgxPT09Yi5ub2RlVHlwZXx8ZSkmJmEoYixjLGcpKXJldHVybiEwfWVsc2Ugd2hpbGUoYj1iW2RdKWlmKDE9PT1iLm5vZGVUeXBlfHxlKXtpZihpPWJbdV18fChiW3VdPXt9KSwoaD1pW2RdKSYmaFswXT09PXcmJmhbMV09PT1mKXJldHVybiBqWzJdPWhbMl07aWYoaVtkXT1qLGpbMl09YShiLGMsZykpcmV0dXJuITB9fX1mdW5jdGlvbiB0YShhKXtyZXR1cm4gYS5sZW5ndGg+MT9mdW5jdGlvbihiLGMsZCl7dmFyIGU9YS5sZW5ndGg7d2hpbGUoZS0tKWlmKCFhW2VdKGIsYyxkKSlyZXR1cm4hMTtyZXR1cm4hMH06YVswXX1mdW5jdGlvbiB1YShhLGIsYyl7Zm9yKHZhciBkPTAsZT1iLmxlbmd0aDtlPmQ7ZCsrKWdhKGEsYltkXSxjKTtyZXR1cm4gY31mdW5jdGlvbiB2YShhLGIsYyxkLGUpe2Zvcih2YXIgZixnPVtdLGg9MCxpPWEubGVuZ3RoLGo9bnVsbCE9YjtpPmg7aCsrKShmPWFbaF0pJiYoIWN8fGMoZixkLGUpKSYmKGcucHVzaChmKSxqJiZiLnB1c2goaCkpO3JldHVybiBnfWZ1bmN0aW9uIHdhKGEsYixjLGQsZSxmKXtyZXR1cm4gZCYmIWRbdV0mJihkPXdhKGQpKSxlJiYhZVt1XSYmKGU9d2EoZSxmKSksaWEoZnVuY3Rpb24oZixnLGgsaSl7dmFyIGosayxsLG09W10sbj1bXSxvPWcubGVuZ3RoLHA9Znx8dWEoYnx8IioiLGgubm9kZVR5cGU\/W2hdOmgsW10pLHE9IWF8fCFmJiZiP3A6dmEocCxtLGEsaCxpKSxyPWM\/ZXx8KGY\/YTpvfHxkKT9bXTpnOnE7aWYoYyYmYyhxLHIsaCxpKSxkKXtqPXZhKHIsbiksZChqLFtdLGgsaSksaz1qLmxlbmd0aDt3aGlsZShrLS0pKGw9altrXSkmJihyW25ba11dPSEocVtuW2tdXT1sKSl9aWYoZil7aWYoZXx8YSl7aWYoZSl7aj1bXSxrPXIubGVuZ3RoO3doaWxlKGstLSkobD1yW2tdKSYmai5wdXNoKHFba109bCk7ZShudWxsLHI9W10saixpKX1rPXIubGVuZ3RoO3doaWxlKGstLSkobD1yW2tdKSYmKGo9ZT9KKGYsbCk6bVtrXSk+LTEmJihmW2pdPSEoZ1tqXT1sKSl9fWVsc2Ugcj12YShyPT09Zz9yLnNwbGljZShvLHIubGVuZ3RoKTpyKSxlP2UobnVsbCxnLHIsaSk6SC5hcHBseShnLHIpfSl9ZnVuY3Rpb24geGEoYSl7Zm9yKHZhciBiLGMsZSxmPWEubGVuZ3RoLGc9ZC5yZWxhdGl2ZVthWzBdLnR5cGVdLGg9Z3x8ZC5yZWxhdGl2ZVsiICJdLGk9Zz8xOjAsaz1zYShmdW5jdGlvbihhKXtyZXR1cm4gYT09PWJ9LGgsITApLGw9c2EoZnVuY3Rpb24oYSl7cmV0dXJuIEooYixhKT4tMX0saCwhMCksbT1bZnVuY3Rpb24oYSxjLGQpe3ZhciBlPSFnJiYoZHx8YyE9PWopfHwoKGI9Yykubm9kZVR5cGU\/ayhhLGMsZCk6bChhLGMsZCkpO3JldHVybiBiPW51bGwsZX1dO2Y+aTtpKyspaWYoYz1kLnJlbGF0aXZlW2FbaV0udHlwZV0pbT1bc2EodGEobSksYyldO2Vsc2V7aWYoYz1kLmZpbHRlclthW2ldLnR5cGVdLmFwcGx5KG51bGwsYVtpXS5tYXRjaGVzKSxjW3VdKXtmb3IoZT0rK2k7Zj5lO2UrKylpZihkLnJlbGF0aXZlW2FbZV0udHlwZV0pYnJlYWs7cmV0dXJuIHdhKGk+MSYmdGEobSksaT4xJiZyYShhLnNsaWNlKDAsaS0xKS5jb25jYXQoe3ZhbHVlOiIgIj09PWFbaS0yXS50eXBlPyIqIjoiIn0pKS5yZXBsYWNlKFIsIiQxIiksYyxlPmkmJnhhKGEuc2xpY2UoaSxlKSksZj5lJiZ4YShhPWEuc2xpY2UoZSkpLGY+ZSYmcmEoYSkpfW0ucHVzaChjKX1yZXR1cm4gdGEobSl9ZnVuY3Rpb24geWEoYSxiKXt2YXIgYz1iLmxlbmd0aD4wLGU9YS5sZW5ndGg+MCxmPWZ1bmN0aW9uKGYsZyxoLGksayl7dmFyIGwsbSxvLHA9MCxxPSIwIixyPWYmJltdLHM9W10sdD1qLHU9Znx8ZSYmZC5maW5kLlRBRygiKiIsayksdj13Kz1udWxsPT10PzE6TWF0aC5yYW5kb20oKXx8LjEseD11Lmxlbmd0aDtmb3IoayYmKGo9ZyE9PW4mJmcpO3EhPT14JiZudWxsIT0obD11W3FdKTtxKyspe2lmKGUmJmwpe209MDt3aGlsZShvPWFbbSsrXSlpZihvKGwsZyxoKSl7aS5wdXNoKGwpO2JyZWFrfWsmJih3PXYpfWMmJigobD0hbyYmbCkmJnAtLSxmJiZyLnB1c2gobCkpfWlmKHArPXEsYyYmcSE9PXApe209MDt3aGlsZShvPWJbbSsrXSlvKHIscyxnLGgpO2lmKGYpe2lmKHA+MCl3aGlsZShxLS0pcltxXXx8c1txXXx8KHNbcV09Ri5jYWxsKGkpKTtzPXZhKHMpfUguYXBwbHkoaSxzKSxrJiYhZiYmcy5sZW5ndGg+MCYmcCtiLmxlbmd0aD4xJiZnYS51bmlxdWVTb3J0KGkpfXJldHVybiBrJiYodz12LGo9dCkscn07cmV0dXJuIGM\/aWEoZik6Zn1yZXR1cm4gaD1nYS5jb21waWxlPWZ1bmN0aW9uKGEsYil7dmFyIGMsZD1bXSxlPVtdLGY9QVthKyIgIl07aWYoIWYpe2J8fChiPWcoYSkpLGM9Yi5sZW5ndGg7d2hpbGUoYy0tKWY9eGEoYltjXSksZlt1XT9kLnB1c2goZik6ZS5wdXNoKGYpO2Y9QShhLHlhKGUsZCkpLGYuc2VsZWN0b3I9YX1yZXR1cm4gZn0saT1nYS5zZWxlY3Q9ZnVuY3Rpb24oYSxiLGUsZil7dmFyIGksaixrLGwsbSxuPSJmdW5jdGlvbiI9PXR5cGVvZiBhJiZhLG89IWYmJmcoYT1uLnNlbGVjdG9yfHxhKTtpZihlPWV8fFtdLDE9PT1vLmxlbmd0aCl7aWYoaj1vWzBdPW9bMF0uc2xpY2UoMCksai5sZW5ndGg+MiYmIklEIj09PShrPWpbMF0pLnR5cGUmJmMuZ2V0QnlJZCYmOT09PWIubm9kZVR5cGUmJnAmJmQucmVsYXRpdmVbalsxXS50eXBlXSl7aWYoYj0oZC5maW5kLklEKGsubWF0Y2hlc1swXS5yZXBsYWNlKGNhLGRhKSxiKXx8W10pWzBdLCFiKXJldHVybiBlO24mJihiPWIucGFyZW50Tm9kZSksYT1hLnNsaWNlKGouc2hpZnQoKS52YWx1ZS5sZW5ndGgpfWk9WC5uZWVkc0NvbnRleHQudGVzdChhKT8wOmoubGVuZ3RoO3doaWxlKGktLSl7aWYoaz1qW2ldLGQucmVsYXRpdmVbbD1rLnR5cGVdKWJyZWFrO2lmKChtPWQuZmluZFtsXSkmJihmPW0oay5tYXRjaGVzWzBdLnJlcGxhY2UoY2EsZGEpLGFhLnRlc3QoalswXS50eXBlKSYmcGEoYi5wYXJlbnROb2RlKXx8YikpKXtpZihqLnNwbGljZShpLDEpLGE9Zi5sZW5ndGgmJnJhKGopLCFhKXJldHVybiBILmFwcGx5KGUsZiksZTticmVha319fXJldHVybihufHxoKGEsbykpKGYsYiwhcCxlLGFhLnRlc3QoYSkmJnBhKGIucGFyZW50Tm9kZSl8fGIpLGV9LGMuc29ydFN0YWJsZT11LnNwbGl0KCIiKS5zb3J0KEIpLmpvaW4oIiIpPT09dSxjLmRldGVjdER1cGxpY2F0ZXM9ISFsLG0oKSxjLnNvcnREZXRhY2hlZD1qYShmdW5jdGlvbihhKXtyZXR1cm4gMSZhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKG4uY3JlYXRlRWxlbWVudCgiZGl2IikpfSksamEoZnVuY3Rpb24oYSl7cmV0dXJuIGEuaW5uZXJIVE1MPSI8YSBocmVmPScjJz48L2E+IiwiIyI9PT1hLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJocmVmIil9KXx8a2EoInR5cGV8aHJlZnxoZWlnaHR8d2lkdGgiLGZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYz92b2lkIDA6YS5nZXRBdHRyaWJ1dGUoYiwidHlwZSI9PT1iLnRvTG93ZXJDYXNlKCk\/MToyKX0pLGMuYXR0cmlidXRlcyYmamEoZnVuY3Rpb24oYSl7cmV0dXJuIGEuaW5uZXJIVE1MPSI8aW5wdXQvPiIsYS5maXJzdENoaWxkLnNldEF0dHJpYnV0ZSgidmFsdWUiLCIiKSwiIj09PWEuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoInZhbHVlIil9KXx8a2EoInZhbHVlIixmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGN8fCJpbnB1dCIhPT1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk\/dm9pZCAwOmEuZGVmYXVsdFZhbHVlfSksamEoZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWEuZ2V0QXR0cmlidXRlKCJkaXNhYmxlZCIpfSl8fGthKEssZnVuY3Rpb24oYSxiLGMpe3ZhciBkO3JldHVybiBjP3ZvaWQgMDphW2JdPT09ITA\/Yi50b0xvd2VyQ2FzZSgpOihkPWEuZ2V0QXR0cmlidXRlTm9kZShiKSkmJmQuc3BlY2lmaWVkP2QudmFsdWU6bnVsbH0pLGdhfShhKTttLmZpbmQ9cyxtLmV4cHI9cy5zZWxlY3RvcnMsbS5leHByWyI6Il09bS5leHByLnBzZXVkb3MsbS51bmlxdWU9cy51bmlxdWVTb3J0LG0udGV4dD1zLmdldFRleHQsbS5pc1hNTERvYz1zLmlzWE1MLG0uY29udGFpbnM9cy5jb250YWluczt2YXIgdD1tLmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LHU9L148KFx3KylccypcLz8+KD86PFwvXDE+fCkkLyx2PS9eLlteOiNcW1wuLF0qJC87ZnVuY3Rpb24gdyhhLGIsYyl7aWYobS5pc0Z1bmN0aW9uKGIpKXJldHVybiBtLmdyZXAoYSxmdW5jdGlvbihhLGQpe3JldHVybiEhYi5jYWxsKGEsZCxhKSE9PWN9KTtpZihiLm5vZGVUeXBlKXJldHVybiBtLmdyZXAoYSxmdW5jdGlvbihhKXtyZXR1cm4gYT09PWIhPT1jfSk7aWYoInN0cmluZyI9PXR5cGVvZiBiKXtpZih2LnRlc3QoYikpcmV0dXJuIG0uZmlsdGVyKGIsYSxjKTtiPW0uZmlsdGVyKGIsYSl9cmV0dXJuIG0uZ3JlcChhLGZ1bmN0aW9uKGEpe3JldHVybiBtLmluQXJyYXkoYSxiKT49MCE9PWN9KX1tLmZpbHRlcj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YlswXTtyZXR1cm4gYyYmKGE9Ijpub3QoIithKyIpIiksMT09PWIubGVuZ3RoJiYxPT09ZC5ub2RlVHlwZT9tLmZpbmQubWF0Y2hlc1NlbGVjdG9yKGQsYSk\/W2RdOltdOm0uZmluZC5tYXRjaGVzKGEsbS5ncmVwKGIsZnVuY3Rpb24oYSl7cmV0dXJuIDE9PT1hLm5vZGVUeXBlfSkpfSxtLmZuLmV4dGVuZCh7ZmluZDpmdW5jdGlvbihhKXt2YXIgYixjPVtdLGQ9dGhpcyxlPWQubGVuZ3RoO2lmKCJzdHJpbmciIT10eXBlb2YgYSlyZXR1cm4gdGhpcy5wdXNoU3RhY2sobShhKS5maWx0ZXIoZnVuY3Rpb24oKXtmb3IoYj0wO2U+YjtiKyspaWYobS5jb250YWlucyhkW2JdLHRoaXMpKXJldHVybiEwfSkpO2ZvcihiPTA7ZT5iO2IrKyltLmZpbmQoYSxkW2JdLGMpO3JldHVybiBjPXRoaXMucHVzaFN0YWNrKGU+MT9tLnVuaXF1ZShjKTpjKSxjLnNlbGVjdG9yPXRoaXMuc2VsZWN0b3I\/dGhpcy5zZWxlY3RvcisiICIrYTphLGN9LGZpbHRlcjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2sodyh0aGlzLGF8fFtdLCExKSl9LG5vdDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2sodyh0aGlzLGF8fFtdLCEwKSl9LGlzOmZ1bmN0aW9uKGEpe3JldHVybiEhdyh0aGlzLCJzdHJpbmciPT10eXBlb2YgYSYmdC50ZXN0KGEpP20oYSk6YXx8W10sITEpLmxlbmd0aH19KTt2YXIgeCx5PWEuZG9jdW1lbnQsej0vXig\/OlxzKig8W1x3XFddKz4pW14+XSp8IyhbXHctXSopKSQvLEE9bS5mbi5pbml0PWZ1bmN0aW9uKGEsYil7dmFyIGMsZDtpZighYSlyZXR1cm4gdGhpcztpZigic3RyaW5nIj09dHlwZW9mIGEpe2lmKGM9IjwiPT09YS5jaGFyQXQoMCkmJiI+Ij09PWEuY2hhckF0KGEubGVuZ3RoLTEpJiZhLmxlbmd0aD49Mz9bbnVsbCxhLG51bGxdOnouZXhlYyhhKSwhY3x8IWNbMV0mJmIpcmV0dXJuIWJ8fGIuanF1ZXJ5PyhifHx4KS5maW5kKGEpOnRoaXMuY29uc3RydWN0b3IoYikuZmluZChhKTtpZihjWzFdKXtpZihiPWIgaW5zdGFuY2VvZiBtP2JbMF06YixtLm1lcmdlKHRoaXMsbS5wYXJzZUhUTUwoY1sxXSxiJiZiLm5vZGVUeXBlP2Iub3duZXJEb2N1bWVudHx8Yjp5LCEwKSksdS50ZXN0KGNbMV0pJiZtLmlzUGxhaW5PYmplY3QoYikpZm9yKGMgaW4gYiltLmlzRnVuY3Rpb24odGhpc1tjXSk\/dGhpc1tjXShiW2NdKTp0aGlzLmF0dHIoYyxiW2NdKTtyZXR1cm4gdGhpc31pZihkPXkuZ2V0RWxlbWVudEJ5SWQoY1syXSksZCYmZC5wYXJlbnROb2RlKXtpZihkLmlkIT09Y1syXSlyZXR1cm4geC5maW5kKGEpO3RoaXMubGVuZ3RoPTEsdGhpc1swXT1kfXJldHVybiB0aGlzLmNvbnRleHQ9eSx0aGlzLnNlbGVjdG9yPWEsdGhpc31yZXR1cm4gYS5ub2RlVHlwZT8odGhpcy5jb250ZXh0PXRoaXNbMF09YSx0aGlzLmxlbmd0aD0xLHRoaXMpOm0uaXNGdW5jdGlvbihhKT8idW5kZWZpbmVkIiE9dHlwZW9mIHgucmVhZHk\/eC5yZWFkeShhKTphKG0pOih2b2lkIDAhPT1hLnNlbGVjdG9yJiYodGhpcy5zZWxlY3Rvcj1hLnNlbGVjdG9yLHRoaXMuY29udGV4dD1hLmNvbnRleHQpLG0ubWFrZUFycmF5KGEsdGhpcykpfTtBLnByb3RvdHlwZT1tLmZuLHg9bSh5KTt2YXIgQj0vXig\/OnBhcmVudHN8cHJldig\/OlVudGlsfEFsbCkpLyxDPXtjaGlsZHJlbjohMCxjb250ZW50czohMCxuZXh0OiEwLHByZXY6ITB9O20uZXh0ZW5kKHtkaXI6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPVtdLGU9YVtiXTt3aGlsZShlJiY5IT09ZS5ub2RlVHlwZSYmKHZvaWQgMD09PWN8fDEhPT1lLm5vZGVUeXBlfHwhbShlKS5pcyhjKSkpMT09PWUubm9kZVR5cGUmJmQucHVzaChlKSxlPWVbYl07cmV0dXJuIGR9LHNpYmxpbmc6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9W107YTthPWEubmV4dFNpYmxpbmcpMT09PWEubm9kZVR5cGUmJmEhPT1iJiZjLnB1c2goYSk7cmV0dXJuIGN9fSksbS5mbi5leHRlbmQoe2hhczpmdW5jdGlvbihhKXt2YXIgYixjPW0oYSx0aGlzKSxkPWMubGVuZ3RoO3JldHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbigpe2ZvcihiPTA7ZD5iO2IrKylpZihtLmNvbnRhaW5zKHRoaXMsY1tiXSkpcmV0dXJuITB9KX0sY2xvc2VzdDpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYyxkPTAsZT10aGlzLmxlbmd0aCxmPVtdLGc9dC50ZXN0KGEpfHwic3RyaW5nIiE9dHlwZW9mIGE\/bShhLGJ8fHRoaXMuY29udGV4dCk6MDtlPmQ7ZCsrKWZvcihjPXRoaXNbZF07YyYmYyE9PWI7Yz1jLnBhcmVudE5vZGUpaWYoYy5ub2RlVHlwZTwxMSYmKGc\/Zy5pbmRleChjKT4tMToxPT09Yy5ub2RlVHlwZSYmbS5maW5kLm1hdGNoZXNTZWxlY3RvcihjLGEpKSl7Zi5wdXNoKGMpO2JyZWFrfXJldHVybiB0aGlzLnB1c2hTdGFjayhmLmxlbmd0aD4xP20udW5pcXVlKGYpOmYpfSxpbmRleDpmdW5jdGlvbihhKXtyZXR1cm4gYT8ic3RyaW5nIj09dHlwZW9mIGE\/bS5pbkFycmF5KHRoaXNbMF0sbShhKSk6bS5pbkFycmF5KGEuanF1ZXJ5P2FbMF06YSx0aGlzKTp0aGlzWzBdJiZ0aGlzWzBdLnBhcmVudE5vZGU\/dGhpcy5maXJzdCgpLnByZXZBbGwoKS5sZW5ndGg6LTF9LGFkZDpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLnB1c2hTdGFjayhtLnVuaXF1ZShtLm1lcmdlKHRoaXMuZ2V0KCksbShhLGIpKSkpfSxhZGRCYWNrOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmFkZChudWxsPT1hP3RoaXMucHJldk9iamVjdDp0aGlzLnByZXZPYmplY3QuZmlsdGVyKGEpKX19KTtmdW5jdGlvbiBEKGEsYil7ZG8gYT1hW2JdO3doaWxlKGEmJjEhPT1hLm5vZGVUeXBlKTtyZXR1cm4gYX1tLmVhY2goe3BhcmVudDpmdW5jdGlvbihhKXt2YXIgYj1hLnBhcmVudE5vZGU7cmV0dXJuIGImJjExIT09Yi5ub2RlVHlwZT9iOm51bGx9LHBhcmVudHM6ZnVuY3Rpb24oYSl7cmV0dXJuIG0uZGlyKGEsInBhcmVudE5vZGUiKX0scGFyZW50c1VudGlsOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbS5kaXIoYSwicGFyZW50Tm9kZSIsYyl9LG5leHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIEQoYSwibmV4dFNpYmxpbmciKX0scHJldjpmdW5jdGlvbihhKXtyZXR1cm4gRChhLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dEFsbDpmdW5jdGlvbihhKXtyZXR1cm4gbS5kaXIoYSwibmV4dFNpYmxpbmciKX0scHJldkFsbDpmdW5jdGlvbihhKXtyZXR1cm4gbS5kaXIoYSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIG0uZGlyKGEsIm5leHRTaWJsaW5nIixjKX0scHJldlVudGlsOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbS5kaXIoYSwicHJldmlvdXNTaWJsaW5nIixjKX0sc2libGluZ3M6ZnVuY3Rpb24oYSl7cmV0dXJuIG0uc2libGluZygoYS5wYXJlbnROb2RlfHx7fSkuZmlyc3RDaGlsZCxhKX0sY2hpbGRyZW46ZnVuY3Rpb24oYSl7cmV0dXJuIG0uc2libGluZyhhLmZpcnN0Q2hpbGQpfSxjb250ZW50czpmdW5jdGlvbihhKXtyZXR1cm4gbS5ub2RlTmFtZShhLCJpZnJhbWUiKT9hLmNvbnRlbnREb2N1bWVudHx8YS5jb250ZW50V2luZG93LmRvY3VtZW50Om0ubWVyZ2UoW10sYS5jaGlsZE5vZGVzKX19LGZ1bmN0aW9uKGEsYil7bS5mblthXT1mdW5jdGlvbihjLGQpe3ZhciBlPW0ubWFwKHRoaXMsYixjKTtyZXR1cm4iVW50aWwiIT09YS5zbGljZSgtNSkmJihkPWMpLGQmJiJzdHJpbmciPT10eXBlb2YgZCYmKGU9bS5maWx0ZXIoZCxlKSksdGhpcy5sZW5ndGg+MSYmKENbYV18fChlPW0udW5pcXVlKGUpKSxCLnRlc3QoYSkmJihlPWUucmV2ZXJzZSgpKSksdGhpcy5wdXNoU3RhY2soZSl9fSk7dmFyIEU9L1xTKy9nLEY9e307ZnVuY3Rpb24gRyhhKXt2YXIgYj1GW2FdPXt9O3JldHVybiBtLmVhY2goYS5tYXRjaChFKXx8W10sZnVuY3Rpb24oYSxjKXtiW2NdPSEwfSksYn1tLkNhbGxiYWNrcz1mdW5jdGlvbihhKXthPSJzdHJpbmciPT10eXBlb2YgYT9GW2FdfHxHKGEpOm0uZXh0ZW5kKHt9LGEpO3ZhciBiLGMsZCxlLGYsZyxoPVtdLGk9IWEub25jZSYmW10saj1mdW5jdGlvbihsKXtmb3IoYz1hLm1lbW9yeSYmbCxkPSEwLGY9Z3x8MCxnPTAsZT1oLmxlbmd0aCxiPSEwO2gmJmU+ZjtmKyspaWYoaFtmXS5hcHBseShsWzBdLGxbMV0pPT09ITEmJmEuc3RvcE9uRmFsc2Upe2M9ITE7YnJlYWt9Yj0hMSxoJiYoaT9pLmxlbmd0aCYmaihpLnNoaWZ0KCkpOmM\/aD1bXTprLmRpc2FibGUoKSl9LGs9e2FkZDpmdW5jdGlvbigpe2lmKGgpe3ZhciBkPWgubGVuZ3RoOyFmdW5jdGlvbiBmKGIpe20uZWFjaChiLGZ1bmN0aW9uKGIsYyl7dmFyIGQ9bS50eXBlKGMpOyJmdW5jdGlvbiI9PT1kP2EudW5pcXVlJiZrLmhhcyhjKXx8aC5wdXNoKGMpOmMmJmMubGVuZ3RoJiYic3RyaW5nIiE9PWQmJmYoYyl9KX0oYXJndW1lbnRzKSxiP2U9aC5sZW5ndGg6YyYmKGc9ZCxqKGMpKX1yZXR1cm4gdGhpc30scmVtb3ZlOmZ1bmN0aW9uKCl7cmV0dXJuIGgmJm0uZWFjaChhcmd1bWVudHMsZnVuY3Rpb24oYSxjKXt2YXIgZDt3aGlsZSgoZD1tLmluQXJyYXkoYyxoLGQpKT4tMSloLnNwbGljZShkLDEpLGImJihlPj1kJiZlLS0sZj49ZCYmZi0tKX0pLHRoaXN9LGhhczpmdW5jdGlvbihhKXtyZXR1cm4gYT9tLmluQXJyYXkoYSxoKT4tMTohKCFofHwhaC5sZW5ndGgpfSxlbXB0eTpmdW5jdGlvbigpe3JldHVybiBoPVtdLGU9MCx0aGlzfSxkaXNhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGg9aT1jPXZvaWQgMCx0aGlzfSxkaXNhYmxlZDpmdW5jdGlvbigpe3JldHVybiFofSxsb2NrOmZ1bmN0aW9uKCl7cmV0dXJuIGk9dm9pZCAwLGN8fGsuZGlzYWJsZSgpLHRoaXN9LGxvY2tlZDpmdW5jdGlvbigpe3JldHVybiFpfSxmaXJlV2l0aDpmdW5jdGlvbihhLGMpe3JldHVybiFofHxkJiYhaXx8KGM9Y3x8W10sYz1bYSxjLnNsaWNlP2Muc2xpY2UoKTpjXSxiP2kucHVzaChjKTpqKGMpKSx0aGlzfSxmaXJlOmZ1bmN0aW9uKCl7cmV0dXJuIGsuZmlyZVdpdGgodGhpcyxhcmd1bWVudHMpLHRoaXN9LGZpcmVkOmZ1bmN0aW9uKCl7cmV0dXJuISFkfX07cmV0dXJuIGt9LG0uZXh0ZW5kKHtEZWZlcnJlZDpmdW5jdGlvbihhKXt2YXIgYj1bWyJyZXNvbHZlIiwiZG9uZSIsbS5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksInJlc29sdmVkIl0sWyJyZWplY3QiLCJmYWlsIixtLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwicmVqZWN0ZWQiXSxbIm5vdGlmeSIsInByb2dyZXNzIixtLkNhbGxiYWNrcygibWVtb3J5IildXSxjPSJwZW5kaW5nIixkPXtzdGF0ZTpmdW5jdGlvbigpe3JldHVybiBjfSxhbHdheXM6ZnVuY3Rpb24oKXtyZXR1cm4gZS5kb25lKGFyZ3VtZW50cykuZmFpbChhcmd1bWVudHMpLHRoaXN9LHRoZW46ZnVuY3Rpb24oKXt2YXIgYT1hcmd1bWVudHM7cmV0dXJuIG0uRGVmZXJyZWQoZnVuY3Rpb24oYyl7bS5lYWNoKGIsZnVuY3Rpb24oYixmKXt2YXIgZz1tLmlzRnVuY3Rpb24oYVtiXSkmJmFbYl07ZVtmWzFdXShmdW5jdGlvbigpe3ZhciBhPWcmJmcuYXBwbHkodGhpcyxhcmd1bWVudHMpO2EmJm0uaXNGdW5jdGlvbihhLnByb21pc2UpP2EucHJvbWlzZSgpLmRvbmUoYy5yZXNvbHZlKS5mYWlsKGMucmVqZWN0KS5wcm9ncmVzcyhjLm5vdGlmeSk6Y1tmWzBdKyJXaXRoIl0odGhpcz09PWQ\/Yy5wcm9taXNlKCk6dGhpcyxnP1thXTphcmd1bWVudHMpfSl9KSxhPW51bGx9KS5wcm9taXNlKCl9LHByb21pc2U6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPWE\/bS5leHRlbmQoYSxkKTpkfX0sZT17fTtyZXR1cm4gZC5waXBlPWQudGhlbixtLmVhY2goYixmdW5jdGlvbihhLGYpe3ZhciBnPWZbMl0saD1mWzNdO2RbZlsxXV09Zy5hZGQsaCYmZy5hZGQoZnVuY3Rpb24oKXtjPWh9LGJbMV5hXVsyXS5kaXNhYmxlLGJbMl1bMl0ubG9jayksZVtmWzBdXT1mdW5jdGlvbigpe3JldHVybiBlW2ZbMF0rIldpdGgiXSh0aGlzPT09ZT9kOnRoaXMsYXJndW1lbnRzKSx0aGlzfSxlW2ZbMF0rIldpdGgiXT1nLmZpcmVXaXRofSksZC5wcm9taXNlKGUpLGEmJmEuY2FsbChlLGUpLGV9LHdoZW46ZnVuY3Rpb24oYSl7dmFyIGI9MCxjPWQuY2FsbChhcmd1bWVudHMpLGU9Yy5sZW5ndGgsZj0xIT09ZXx8YSYmbS5pc0Z1bmN0aW9uKGEucHJvbWlzZSk\/ZTowLGc9MT09PWY\/YTptLkRlZmVycmVkKCksaD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIGZ1bmN0aW9uKGUpe2JbYV09dGhpcyxjW2FdPWFyZ3VtZW50cy5sZW5ndGg+MT9kLmNhbGwoYXJndW1lbnRzKTplLGM9PT1pP2cubm90aWZ5V2l0aChiLGMpOi0tZnx8Zy5yZXNvbHZlV2l0aChiLGMpfX0saSxqLGs7aWYoZT4xKWZvcihpPW5ldyBBcnJheShlKSxqPW5ldyBBcnJheShlKSxrPW5ldyBBcnJheShlKTtlPmI7YisrKWNbYl0mJm0uaXNGdW5jdGlvbihjW2JdLnByb21pc2UpP2NbYl0ucHJvbWlzZSgpLmRvbmUoaChiLGssYykpLmZhaWwoZy5yZWplY3QpLnByb2dyZXNzKGgoYixqLGkpKTotLWY7cmV0dXJuIGZ8fGcucmVzb2x2ZVdpdGgoayxjKSxnLnByb21pc2UoKX19KTt2YXIgSDttLmZuLnJlYWR5PWZ1bmN0aW9uKGEpe3JldHVybiBtLnJlYWR5LnByb21pc2UoKS5kb25lKGEpLHRoaXN9LG0uZXh0ZW5kKHtpc1JlYWR5OiExLHJlYWR5V2FpdDoxLGhvbGRSZWFkeTpmdW5jdGlvbihhKXthP20ucmVhZHlXYWl0Kys6bS5yZWFkeSghMCl9LHJlYWR5OmZ1bmN0aW9uKGEpe2lmKGE9PT0hMD8hLS1tLnJlYWR5V2FpdDohbS5pc1JlYWR5KXtpZigheS5ib2R5KXJldHVybiBzZXRUaW1lb3V0KG0ucmVhZHkpO20uaXNSZWFkeT0hMCxhIT09ITAmJi0tbS5yZWFkeVdhaXQ+MHx8KEgucmVzb2x2ZVdpdGgoeSxbbV0pLG0uZm4udHJpZ2dlckhhbmRsZXImJihtKHkpLnRyaWdnZXJIYW5kbGVyKCJyZWFkeSIpLG0oeSkub2ZmKCJyZWFkeSIpKSl9fX0pO2Z1bmN0aW9uIEkoKXt5LmFkZEV2ZW50TGlzdGVuZXI\/KHkucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsSiwhMSksYS5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIixKLCExKSk6KHkuZGV0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsSiksYS5kZXRhY2hFdmVudCgib25sb2FkIixKKSl9ZnVuY3Rpb24gSigpeyh5LmFkZEV2ZW50TGlzdGVuZXJ8fCJsb2FkIj09PWV2ZW50LnR5cGV8fCJjb21wbGV0ZSI9PT15LnJlYWR5U3RhdGUpJiYoSSgpLG0ucmVhZHkoKSl9bS5yZWFkeS5wcm9taXNlPWZ1bmN0aW9uKGIpe2lmKCFIKWlmKEg9bS5EZWZlcnJlZCgpLCJjb21wbGV0ZSI9PT15LnJlYWR5U3RhdGUpc2V0VGltZW91dChtLnJlYWR5KTtlbHNlIGlmKHkuYWRkRXZlbnRMaXN0ZW5lcil5LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLEosITEpLGEuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsSiwhMSk7ZWxzZXt5LmF0dGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLEopLGEuYXR0YWNoRXZlbnQoIm9ubG9hZCIsSik7dmFyIGM9ITE7dHJ5e2M9bnVsbD09YS5mcmFtZUVsZW1lbnQmJnkuZG9jdW1lbnRFbGVtZW50fWNhdGNoKGQpe31jJiZjLmRvU2Nyb2xsJiYhZnVuY3Rpb24gZSgpe2lmKCFtLmlzUmVhZHkpe3RyeXtjLmRvU2Nyb2xsKCJsZWZ0Iil9Y2F0Y2goYSl7cmV0dXJuIHNldFRpbWVvdXQoZSw1MCl9SSgpLG0ucmVhZHkoKX19KCl9cmV0dXJuIEgucHJvbWlzZShiKX07dmFyIEs9InVuZGVmaW5lZCIsTDtmb3IoTCBpbiBtKGspKWJyZWFrO2sub3duTGFzdD0iMCIhPT1MLGsuaW5saW5lQmxvY2tOZWVkc0xheW91dD0hMSxtKGZ1bmN0aW9uKCl7dmFyIGEsYixjLGQ7Yz15LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0sYyYmYy5zdHlsZSYmKGI9eS5jcmVhdGVFbGVtZW50KCJkaXYiKSxkPXkuY3JlYXRlRWxlbWVudCgiZGl2IiksZC5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXI6MDt3aWR0aDowO2hlaWdodDowO3RvcDowO2xlZnQ6LTk5OTlweCIsYy5hcHBlbmRDaGlsZChkKS5hcHBlbmRDaGlsZChiKSx0eXBlb2YgYi5zdHlsZS56b29tIT09SyYmKGIuc3R5bGUuY3NzVGV4dD0iZGlzcGxheTppbmxpbmU7bWFyZ2luOjA7Ym9yZGVyOjA7cGFkZGluZzoxcHg7d2lkdGg6MXB4O3pvb206MSIsay5pbmxpbmVCbG9ja05lZWRzTGF5b3V0PWE9Mz09PWIub2Zmc2V0V2lkdGgsYSYmKGMuc3R5bGUuem9vbT0xKSksYy5yZW1vdmVDaGlsZChkKSl9KSxmdW5jdGlvbigpe3ZhciBhPXkuY3JlYXRlRWxlbWVudCgiZGl2Iik7aWYobnVsbD09ay5kZWxldGVFeHBhbmRvKXtrLmRlbGV0ZUV4cGFuZG89ITA7dHJ5e2RlbGV0ZSBhLnRlc3R9Y2F0Y2goYil7ay5kZWxldGVFeHBhbmRvPSExfX1hPW51bGx9KCksbS5hY2NlcHREYXRhPWZ1bmN0aW9uKGEpe3ZhciBiPW0ubm9EYXRhWyhhLm5vZGVOYW1lKyIgIikudG9Mb3dlckNhc2UoKV0sYz0rYS5ub2RlVHlwZXx8MTtyZXR1cm4gMSE9PWMmJjkhPT1jPyExOiFifHxiIT09ITAmJmEuZ2V0QXR0cmlidXRlKCJjbGFzc2lkIik9PT1ifTt2YXIgTT0vXig\/Olx7W1x3XFddKlx9fFxbW1x3XFddKlxdKSQvLE49LyhbQS1aXSkvZztmdW5jdGlvbiBPKGEsYixjKXtpZih2b2lkIDA9PT1jJiYxPT09YS5ub2RlVHlwZSl7dmFyIGQ9ImRhdGEtIitiLnJlcGxhY2UoTiwiLSQxIikudG9Mb3dlckNhc2UoKTtpZihjPWEuZ2V0QXR0cmlidXRlKGQpLCJzdHJpbmciPT10eXBlb2YgYyl7dHJ5e2M9InRydWUiPT09Yz8hMDoiZmFsc2UiPT09Yz8hMToibnVsbCI9PT1jP251bGw6K2MrIiI9PT1jPytjOk0udGVzdChjKT9tLnBhcnNlSlNPTihjKTpjfWNhdGNoKGUpe31tLmRhdGEoYSxiLGMpfWVsc2UgYz12b2lkIDB9cmV0dXJuIGN9ZnVuY3Rpb24gUChhKXt2YXIgYjtmb3IoYiBpbiBhKWlmKCgiZGF0YSIhPT1ifHwhbS5pc0VtcHR5T2JqZWN0KGFbYl0pKSYmInRvSlNPTiIhPT1iKXJldHVybiExOwoKcmV0dXJuITB9ZnVuY3Rpb24gUShhLGIsZCxlKXtpZihtLmFjY2VwdERhdGEoYSkpe3ZhciBmLGcsaD1tLmV4cGFuZG8saT1hLm5vZGVUeXBlLGo9aT9tLmNhY2hlOmEsaz1pP2FbaF06YVtoXSYmaDtpZihrJiZqW2tdJiYoZXx8altrXS5kYXRhKXx8dm9pZCAwIT09ZHx8InN0cmluZyIhPXR5cGVvZiBiKXJldHVybiBrfHwoaz1pP2FbaF09Yy5wb3AoKXx8bS5ndWlkKys6aCksaltrXXx8KGpba109aT97fTp7dG9KU09OOm0ubm9vcH0pLCgib2JqZWN0Ij09dHlwZW9mIGJ8fCJmdW5jdGlvbiI9PXR5cGVvZiBiKSYmKGU\/altrXT1tLmV4dGVuZChqW2tdLGIpOmpba10uZGF0YT1tLmV4dGVuZChqW2tdLmRhdGEsYikpLGc9altrXSxlfHwoZy5kYXRhfHwoZy5kYXRhPXt9KSxnPWcuZGF0YSksdm9pZCAwIT09ZCYmKGdbbS5jYW1lbENhc2UoYildPWQpLCJzdHJpbmciPT10eXBlb2YgYj8oZj1nW2JdLG51bGw9PWYmJihmPWdbbS5jYW1lbENhc2UoYildKSk6Zj1nLGZ9fWZ1bmN0aW9uIFIoYSxiLGMpe2lmKG0uYWNjZXB0RGF0YShhKSl7dmFyIGQsZSxmPWEubm9kZVR5cGUsZz1mP20uY2FjaGU6YSxoPWY\/YVttLmV4cGFuZG9dOm0uZXhwYW5kbztpZihnW2hdKXtpZihiJiYoZD1jP2dbaF06Z1toXS5kYXRhKSl7bS5pc0FycmF5KGIpP2I9Yi5jb25jYXQobS5tYXAoYixtLmNhbWVsQ2FzZSkpOmIgaW4gZD9iPVtiXTooYj1tLmNhbWVsQ2FzZShiKSxiPWIgaW4gZD9bYl06Yi5zcGxpdCgiICIpKSxlPWIubGVuZ3RoO3doaWxlKGUtLSlkZWxldGUgZFtiW2VdXTtpZihjPyFQKGQpOiFtLmlzRW1wdHlPYmplY3QoZCkpcmV0dXJufShjfHwoZGVsZXRlIGdbaF0uZGF0YSxQKGdbaF0pKSkmJihmP20uY2xlYW5EYXRhKFthXSwhMCk6ay5kZWxldGVFeHBhbmRvfHxnIT1nLndpbmRvdz9kZWxldGUgZ1toXTpnW2hdPW51bGwpfX19bS5leHRlbmQoe2NhY2hlOnt9LG5vRGF0YTp7ImFwcGxldCAiOiEwLCJlbWJlZCAiOiEwLCJvYmplY3QgIjoiY2xzaWQ6RDI3Q0RCNkUtQUU2RC0xMWNmLTk2QjgtNDQ0NTUzNTQwMDAwIn0saGFzRGF0YTpmdW5jdGlvbihhKXtyZXR1cm4gYT1hLm5vZGVUeXBlP20uY2FjaGVbYVttLmV4cGFuZG9dXTphW20uZXhwYW5kb10sISFhJiYhUChhKX0sZGF0YTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIFEoYSxiLGMpfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEsYil7cmV0dXJuIFIoYSxiKX0sX2RhdGE6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBRKGEsYixjLCEwKX0sX3JlbW92ZURhdGE6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gUihhLGIsITApfX0pLG0uZm4uZXh0ZW5kKHtkYXRhOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGY9dGhpc1swXSxnPWYmJmYuYXR0cmlidXRlcztpZih2b2lkIDA9PT1hKXtpZih0aGlzLmxlbmd0aCYmKGU9bS5kYXRhKGYpLDE9PT1mLm5vZGVUeXBlJiYhbS5fZGF0YShmLCJwYXJzZWRBdHRycyIpKSl7Yz1nLmxlbmd0aDt3aGlsZShjLS0pZ1tjXSYmKGQ9Z1tjXS5uYW1lLDA9PT1kLmluZGV4T2YoImRhdGEtIikmJihkPW0uY2FtZWxDYXNlKGQuc2xpY2UoNSkpLE8oZixkLGVbZF0pKSk7bS5fZGF0YShmLCJwYXJzZWRBdHRycyIsITApfXJldHVybiBlfXJldHVybiJvYmplY3QiPT10eXBlb2YgYT90aGlzLmVhY2goZnVuY3Rpb24oKXttLmRhdGEodGhpcyxhKX0pOmFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goZnVuY3Rpb24oKXttLmRhdGEodGhpcyxhLGIpfSk6Zj9PKGYsYSxtLmRhdGEoZixhKSk6dm9pZCAwfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXttLnJlbW92ZURhdGEodGhpcyxhKX0pfX0pLG0uZXh0ZW5kKHtxdWV1ZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ7cmV0dXJuIGE\/KGI9KGJ8fCJmeCIpKyJxdWV1ZSIsZD1tLl9kYXRhKGEsYiksYyYmKCFkfHxtLmlzQXJyYXkoYyk\/ZD1tLl9kYXRhKGEsYixtLm1ha2VBcnJheShjKSk6ZC5wdXNoKGMpKSxkfHxbXSk6dm9pZCAwfSxkZXF1ZXVlOmZ1bmN0aW9uKGEsYil7Yj1ifHwiZngiO3ZhciBjPW0ucXVldWUoYSxiKSxkPWMubGVuZ3RoLGU9Yy5zaGlmdCgpLGY9bS5fcXVldWVIb29rcyhhLGIpLGc9ZnVuY3Rpb24oKXttLmRlcXVldWUoYSxiKX07ImlucHJvZ3Jlc3MiPT09ZSYmKGU9Yy5zaGlmdCgpLGQtLSksZSYmKCJmeCI9PT1iJiZjLnVuc2hpZnQoImlucHJvZ3Jlc3MiKSxkZWxldGUgZi5zdG9wLGUuY2FsbChhLGcsZikpLCFkJiZmJiZmLmVtcHR5LmZpcmUoKX0sX3F1ZXVlSG9va3M6ZnVuY3Rpb24oYSxiKXt2YXIgYz1iKyJxdWV1ZUhvb2tzIjtyZXR1cm4gbS5fZGF0YShhLGMpfHxtLl9kYXRhKGEsYyx7ZW1wdHk6bS5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IikuYWRkKGZ1bmN0aW9uKCl7bS5fcmVtb3ZlRGF0YShhLGIrInF1ZXVlIiksbS5fcmVtb3ZlRGF0YShhLGMpfSl9KX19KSxtLmZuLmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24oYSxiKXt2YXIgYz0yO3JldHVybiJzdHJpbmciIT10eXBlb2YgYSYmKGI9YSxhPSJmeCIsYy0tKSxhcmd1bWVudHMubGVuZ3RoPGM\/bS5xdWV1ZSh0aGlzWzBdLGEpOnZvaWQgMD09PWI\/dGhpczp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYz1tLnF1ZXVlKHRoaXMsYSxiKTttLl9xdWV1ZUhvb2tzKHRoaXMsYSksImZ4Ij09PWEmJiJpbnByb2dyZXNzIiE9PWNbMF0mJm0uZGVxdWV1ZSh0aGlzLGEpfSl9LGRlcXVldWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe20uZGVxdWV1ZSh0aGlzLGEpfSl9LGNsZWFyUXVldWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucXVldWUoYXx8ImZ4IixbXSl9LHByb21pc2U6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPTEsZT1tLkRlZmVycmVkKCksZj10aGlzLGc9dGhpcy5sZW5ndGgsaD1mdW5jdGlvbigpey0tZHx8ZS5yZXNvbHZlV2l0aChmLFtmXSl9OyJzdHJpbmciIT10eXBlb2YgYSYmKGI9YSxhPXZvaWQgMCksYT1hfHwiZngiO3doaWxlKGctLSljPW0uX2RhdGEoZltnXSxhKyJxdWV1ZUhvb2tzIiksYyYmYy5lbXB0eSYmKGQrKyxjLmVtcHR5LmFkZChoKSk7cmV0dXJuIGgoKSxlLnByb21pc2UoYil9fSk7dmFyIFM9L1srLV0\/KD86XGQqXC58KVxkKyg\/OltlRV1bKy1dP1xkK3wpLy5zb3VyY2UsVD1bIlRvcCIsIlJpZ2h0IiwiQm90dG9tIiwiTGVmdCJdLFU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT1ifHxhLCJub25lIj09PW0uY3NzKGEsImRpc3BsYXkiKXx8IW0uY29udGFpbnMoYS5vd25lckRvY3VtZW50LGEpfSxWPW0uYWNjZXNzPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe3ZhciBoPTAsaT1hLmxlbmd0aCxqPW51bGw9PWM7aWYoIm9iamVjdCI9PT1tLnR5cGUoYykpe2U9ITA7Zm9yKGggaW4gYyltLmFjY2VzcyhhLGIsaCxjW2hdLCEwLGYsZyl9ZWxzZSBpZih2b2lkIDAhPT1kJiYoZT0hMCxtLmlzRnVuY3Rpb24oZCl8fChnPSEwKSxqJiYoZz8oYi5jYWxsKGEsZCksYj1udWxsKTooaj1iLGI9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBqLmNhbGwobShhKSxjKX0pKSxiKSlmb3IoO2k+aDtoKyspYihhW2hdLGMsZz9kOmQuY2FsbChhW2hdLGgsYihhW2hdLGMpKSk7cmV0dXJuIGU\/YTpqP2IuY2FsbChhKTppP2IoYVswXSxjKTpmfSxXPS9eKD86Y2hlY2tib3h8cmFkaW8pJC9pOyFmdW5jdGlvbigpe3ZhciBhPXkuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSxiPXkuY3JlYXRlRWxlbWVudCgiZGl2IiksYz15LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtpZihiLmlubmVySFRNTD0iICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0nL2EnPmE8L2E+PGlucHV0IHR5cGU9J2NoZWNrYm94Jy8+IixrLmxlYWRpbmdXaGl0ZXNwYWNlPTM9PT1iLmZpcnN0Q2hpbGQubm9kZVR5cGUsay50Ym9keT0hYi5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKS5sZW5ndGgsay5odG1sU2VyaWFsaXplPSEhYi5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpLmxlbmd0aCxrLmh0bWw1Q2xvbmU9Ijw6bmF2PjwvOm5hdj4iIT09eS5jcmVhdGVFbGVtZW50KCJuYXYiKS5jbG9uZU5vZGUoITApLm91dGVySFRNTCxhLnR5cGU9ImNoZWNrYm94IixhLmNoZWNrZWQ9ITAsYy5hcHBlbmRDaGlsZChhKSxrLmFwcGVuZENoZWNrZWQ9YS5jaGVja2VkLGIuaW5uZXJIVE1MPSI8dGV4dGFyZWE+eDwvdGV4dGFyZWE+IixrLm5vQ2xvbmVDaGVja2VkPSEhYi5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5kZWZhdWx0VmFsdWUsYy5hcHBlbmRDaGlsZChiKSxiLmlubmVySFRNTD0iPGlucHV0IHR5cGU9J3JhZGlvJyBjaGVja2VkPSdjaGVja2VkJyBuYW1lPSd0Jy8+IixrLmNoZWNrQ2xvbmU9Yi5jbG9uZU5vZGUoITApLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmNoZWNrZWQsay5ub0Nsb25lRXZlbnQ9ITAsYi5hdHRhY2hFdmVudCYmKGIuYXR0YWNoRXZlbnQoIm9uY2xpY2siLGZ1bmN0aW9uKCl7ay5ub0Nsb25lRXZlbnQ9ITF9KSxiLmNsb25lTm9kZSghMCkuY2xpY2soKSksbnVsbD09ay5kZWxldGVFeHBhbmRvKXtrLmRlbGV0ZUV4cGFuZG89ITA7dHJ5e2RlbGV0ZSBiLnRlc3R9Y2F0Y2goZCl7ay5kZWxldGVFeHBhbmRvPSExfX19KCksZnVuY3Rpb24oKXt2YXIgYixjLGQ9eS5jcmVhdGVFbGVtZW50KCJkaXYiKTtmb3IoYiBpbntzdWJtaXQ6ITAsY2hhbmdlOiEwLGZvY3VzaW46ITB9KWM9Im9uIitiLChrW2IrIkJ1YmJsZXMiXT1jIGluIGEpfHwoZC5zZXRBdHRyaWJ1dGUoYywidCIpLGtbYisiQnViYmxlcyJdPWQuYXR0cmlidXRlc1tjXS5leHBhbmRvPT09ITEpO2Q9bnVsbH0oKTt2YXIgWD0vXig\/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYSkkL2ksWT0vXmtleS8sWj0vXig\/Om1vdXNlfHBvaW50ZXJ8Y29udGV4dG1lbnUpfGNsaWNrLywkPS9eKD86Zm9jdXNpbmZvY3VzfGZvY3Vzb3V0Ymx1cikkLyxfPS9eKFteLl0qKSg\/OlwuKC4rKXwpJC87ZnVuY3Rpb24gYWEoKXtyZXR1cm4hMH1mdW5jdGlvbiBiYSgpe3JldHVybiExfWZ1bmN0aW9uIGNhKCl7dHJ5e3JldHVybiB5LmFjdGl2ZUVsZW1lbnR9Y2F0Y2goYSl7fX1tLmV2ZW50PXtnbG9iYWw6e30sYWRkOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGYsZyxoLGksaixrLGwsbixvLHAscSxyPW0uX2RhdGEoYSk7aWYocil7Yy5oYW5kbGVyJiYoaT1jLGM9aS5oYW5kbGVyLGU9aS5zZWxlY3RvciksYy5ndWlkfHwoYy5ndWlkPW0uZ3VpZCsrKSwoZz1yLmV2ZW50cyl8fChnPXIuZXZlbnRzPXt9KSwoaz1yLmhhbmRsZSl8fChrPXIuaGFuZGxlPWZ1bmN0aW9uKGEpe3JldHVybiB0eXBlb2YgbT09PUt8fGEmJm0uZXZlbnQudHJpZ2dlcmVkPT09YS50eXBlP3ZvaWQgMDptLmV2ZW50LmRpc3BhdGNoLmFwcGx5KGsuZWxlbSxhcmd1bWVudHMpfSxrLmVsZW09YSksYj0oYnx8IiIpLm1hdGNoKEUpfHxbIiJdLGg9Yi5sZW5ndGg7d2hpbGUoaC0tKWY9Xy5leGVjKGJbaF0pfHxbXSxvPXE9ZlsxXSxwPShmWzJdfHwiIikuc3BsaXQoIi4iKS5zb3J0KCksbyYmKGo9bS5ldmVudC5zcGVjaWFsW29dfHx7fSxvPShlP2ouZGVsZWdhdGVUeXBlOmouYmluZFR5cGUpfHxvLGo9bS5ldmVudC5zcGVjaWFsW29dfHx7fSxsPW0uZXh0ZW5kKHt0eXBlOm8sb3JpZ1R5cGU6cSxkYXRhOmQsaGFuZGxlcjpjLGd1aWQ6Yy5ndWlkLHNlbGVjdG9yOmUsbmVlZHNDb250ZXh0OmUmJm0uZXhwci5tYXRjaC5uZWVkc0NvbnRleHQudGVzdChlKSxuYW1lc3BhY2U6cC5qb2luKCIuIil9LGkpLChuPWdbb10pfHwobj1nW29dPVtdLG4uZGVsZWdhdGVDb3VudD0wLGouc2V0dXAmJmouc2V0dXAuY2FsbChhLGQscCxrKSE9PSExfHwoYS5hZGRFdmVudExpc3RlbmVyP2EuYWRkRXZlbnRMaXN0ZW5lcihvLGssITEpOmEuYXR0YWNoRXZlbnQmJmEuYXR0YWNoRXZlbnQoIm9uIitvLGspKSksai5hZGQmJihqLmFkZC5jYWxsKGEsbCksbC5oYW5kbGVyLmd1aWR8fChsLmhhbmRsZXIuZ3VpZD1jLmd1aWQpKSxlP24uc3BsaWNlKG4uZGVsZWdhdGVDb3VudCsrLDAsbCk6bi5wdXNoKGwpLG0uZXZlbnQuZ2xvYmFsW29dPSEwKTthPW51bGx9fSxyZW1vdmU6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZixnLGgsaSxqLGssbCxuLG8scCxxLHI9bS5oYXNEYXRhKGEpJiZtLl9kYXRhKGEpO2lmKHImJihrPXIuZXZlbnRzKSl7Yj0oYnx8IiIpLm1hdGNoKEUpfHxbIiJdLGo9Yi5sZW5ndGg7d2hpbGUoai0tKWlmKGg9Xy5leGVjKGJbal0pfHxbXSxvPXE9aFsxXSxwPShoWzJdfHwiIikuc3BsaXQoIi4iKS5zb3J0KCksbyl7bD1tLmV2ZW50LnNwZWNpYWxbb118fHt9LG89KGQ\/bC5kZWxlZ2F0ZVR5cGU6bC5iaW5kVHlwZSl8fG8sbj1rW29dfHxbXSxoPWhbMl0mJm5ldyBSZWdFeHAoIihefFxcLikiK3Auam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIiksaT1mPW4ubGVuZ3RoO3doaWxlKGYtLSlnPW5bZl0sIWUmJnEhPT1nLm9yaWdUeXBlfHxjJiZjLmd1aWQhPT1nLmd1aWR8fGgmJiFoLnRlc3QoZy5uYW1lc3BhY2UpfHxkJiZkIT09Zy5zZWxlY3RvciYmKCIqKiIhPT1kfHwhZy5zZWxlY3Rvcil8fChuLnNwbGljZShmLDEpLGcuc2VsZWN0b3ImJm4uZGVsZWdhdGVDb3VudC0tLGwucmVtb3ZlJiZsLnJlbW92ZS5jYWxsKGEsZykpO2kmJiFuLmxlbmd0aCYmKGwudGVhcmRvd24mJmwudGVhcmRvd24uY2FsbChhLHAsci5oYW5kbGUpIT09ITF8fG0ucmVtb3ZlRXZlbnQoYSxvLHIuaGFuZGxlKSxkZWxldGUga1tvXSl9ZWxzZSBmb3IobyBpbiBrKW0uZXZlbnQucmVtb3ZlKGEsbytiW2pdLGMsZCwhMCk7bS5pc0VtcHR5T2JqZWN0KGspJiYoZGVsZXRlIHIuaGFuZGxlLG0uX3JlbW92ZURhdGEoYSwiZXZlbnRzIikpfX0sdHJpZ2dlcjpmdW5jdGlvbihiLGMsZCxlKXt2YXIgZixnLGgsaSxrLGwsbixvPVtkfHx5XSxwPWouY2FsbChiLCJ0eXBlIik\/Yi50eXBlOmIscT1qLmNhbGwoYiwibmFtZXNwYWNlIik\/Yi5uYW1lc3BhY2Uuc3BsaXQoIi4iKTpbXTtpZihoPWw9ZD1kfHx5LDMhPT1kLm5vZGVUeXBlJiY4IT09ZC5ub2RlVHlwZSYmISQudGVzdChwK20uZXZlbnQudHJpZ2dlcmVkKSYmKHAuaW5kZXhPZigiLiIpPj0wJiYocT1wLnNwbGl0KCIuIikscD1xLnNoaWZ0KCkscS5zb3J0KCkpLGc9cC5pbmRleE9mKCI6Iik8MCYmIm9uIitwLGI9YlttLmV4cGFuZG9dP2I6bmV3IG0uRXZlbnQocCwib2JqZWN0Ij09dHlwZW9mIGImJmIpLGIuaXNUcmlnZ2VyPWU\/MjozLGIubmFtZXNwYWNlPXEuam9pbigiLiIpLGIubmFtZXNwYWNlX3JlPWIubmFtZXNwYWNlP25ldyBSZWdFeHAoIihefFxcLikiK3Euam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIik6bnVsbCxiLnJlc3VsdD12b2lkIDAsYi50YXJnZXR8fChiLnRhcmdldD1kKSxjPW51bGw9PWM\/W2JdOm0ubWFrZUFycmF5KGMsW2JdKSxrPW0uZXZlbnQuc3BlY2lhbFtwXXx8e30sZXx8IWsudHJpZ2dlcnx8ay50cmlnZ2VyLmFwcGx5KGQsYykhPT0hMSkpe2lmKCFlJiYhay5ub0J1YmJsZSYmIW0uaXNXaW5kb3coZCkpe2ZvcihpPWsuZGVsZWdhdGVUeXBlfHxwLCQudGVzdChpK3ApfHwoaD1oLnBhcmVudE5vZGUpO2g7aD1oLnBhcmVudE5vZGUpby5wdXNoKGgpLGw9aDtsPT09KGQub3duZXJEb2N1bWVudHx8eSkmJm8ucHVzaChsLmRlZmF1bHRWaWV3fHxsLnBhcmVudFdpbmRvd3x8YSl9bj0wO3doaWxlKChoPW9bbisrXSkmJiFiLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpYi50eXBlPW4+MT9pOmsuYmluZFR5cGV8fHAsZj0obS5fZGF0YShoLCJldmVudHMiKXx8e30pW2IudHlwZV0mJm0uX2RhdGEoaCwiaGFuZGxlIiksZiYmZi5hcHBseShoLGMpLGY9ZyYmaFtnXSxmJiZmLmFwcGx5JiZtLmFjY2VwdERhdGEoaCkmJihiLnJlc3VsdD1mLmFwcGx5KGgsYyksYi5yZXN1bHQ9PT0hMSYmYi5wcmV2ZW50RGVmYXVsdCgpKTtpZihiLnR5cGU9cCwhZSYmIWIuaXNEZWZhdWx0UHJldmVudGVkKCkmJighay5fZGVmYXVsdHx8ay5fZGVmYXVsdC5hcHBseShvLnBvcCgpLGMpPT09ITEpJiZtLmFjY2VwdERhdGEoZCkmJmcmJmRbcF0mJiFtLmlzV2luZG93KGQpKXtsPWRbZ10sbCYmKGRbZ109bnVsbCksbS5ldmVudC50cmlnZ2VyZWQ9cDt0cnl7ZFtwXSgpfWNhdGNoKHIpe31tLmV2ZW50LnRyaWdnZXJlZD12b2lkIDAsbCYmKGRbZ109bCl9cmV0dXJuIGIucmVzdWx0fX0sZGlzcGF0Y2g6ZnVuY3Rpb24oYSl7YT1tLmV2ZW50LmZpeChhKTt2YXIgYixjLGUsZixnLGg9W10saT1kLmNhbGwoYXJndW1lbnRzKSxqPShtLl9kYXRhKHRoaXMsImV2ZW50cyIpfHx7fSlbYS50eXBlXXx8W10saz1tLmV2ZW50LnNwZWNpYWxbYS50eXBlXXx8e307aWYoaVswXT1hLGEuZGVsZWdhdGVUYXJnZXQ9dGhpcywhay5wcmVEaXNwYXRjaHx8ay5wcmVEaXNwYXRjaC5jYWxsKHRoaXMsYSkhPT0hMSl7aD1tLmV2ZW50LmhhbmRsZXJzLmNhbGwodGhpcyxhLGopLGI9MDt3aGlsZSgoZj1oW2IrK10pJiYhYS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKXthLmN1cnJlbnRUYXJnZXQ9Zi5lbGVtLGc9MDt3aGlsZSgoZT1mLmhhbmRsZXJzW2crK10pJiYhYS5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpKSghYS5uYW1lc3BhY2VfcmV8fGEubmFtZXNwYWNlX3JlLnRlc3QoZS5uYW1lc3BhY2UpKSYmKGEuaGFuZGxlT2JqPWUsYS5kYXRhPWUuZGF0YSxjPSgobS5ldmVudC5zcGVjaWFsW2Uub3JpZ1R5cGVdfHx7fSkuaGFuZGxlfHxlLmhhbmRsZXIpLmFwcGx5KGYuZWxlbSxpKSx2b2lkIDAhPT1jJiYoYS5yZXN1bHQ9Yyk9PT0hMSYmKGEucHJldmVudERlZmF1bHQoKSxhLnN0b3BQcm9wYWdhdGlvbigpKSl9cmV0dXJuIGsucG9zdERpc3BhdGNoJiZrLnBvc3REaXNwYXRjaC5jYWxsKHRoaXMsYSksYS5yZXN1bHR9fSxoYW5kbGVyczpmdW5jdGlvbihhLGIpe3ZhciBjLGQsZSxmLGc9W10saD1iLmRlbGVnYXRlQ291bnQsaT1hLnRhcmdldDtpZihoJiZpLm5vZGVUeXBlJiYoIWEuYnV0dG9ufHwiY2xpY2siIT09YS50eXBlKSlmb3IoO2khPXRoaXM7aT1pLnBhcmVudE5vZGV8fHRoaXMpaWYoMT09PWkubm9kZVR5cGUmJihpLmRpc2FibGVkIT09ITB8fCJjbGljayIhPT1hLnR5cGUpKXtmb3IoZT1bXSxmPTA7aD5mO2YrKylkPWJbZl0sYz1kLnNlbGVjdG9yKyIgIix2b2lkIDA9PT1lW2NdJiYoZVtjXT1kLm5lZWRzQ29udGV4dD9tKGMsdGhpcykuaW5kZXgoaSk+PTA6bS5maW5kKGMsdGhpcyxudWxsLFtpXSkubGVuZ3RoKSxlW2NdJiZlLnB1c2goZCk7ZS5sZW5ndGgmJmcucHVzaCh7ZWxlbTppLGhhbmRsZXJzOmV9KX1yZXR1cm4gaDxiLmxlbmd0aCYmZy5wdXNoKHtlbGVtOnRoaXMsaGFuZGxlcnM6Yi5zbGljZShoKX0pLGd9LGZpeDpmdW5jdGlvbihhKXtpZihhW20uZXhwYW5kb10pcmV0dXJuIGE7dmFyIGIsYyxkLGU9YS50eXBlLGY9YSxnPXRoaXMuZml4SG9va3NbZV07Z3x8KHRoaXMuZml4SG9va3NbZV09Zz1aLnRlc3QoZSk\/dGhpcy5tb3VzZUhvb2tzOlkudGVzdChlKT90aGlzLmtleUhvb2tzOnt9KSxkPWcucHJvcHM\/dGhpcy5wcm9wcy5jb25jYXQoZy5wcm9wcyk6dGhpcy5wcm9wcyxhPW5ldyBtLkV2ZW50KGYpLGI9ZC5sZW5ndGg7d2hpbGUoYi0tKWM9ZFtiXSxhW2NdPWZbY107cmV0dXJuIGEudGFyZ2V0fHwoYS50YXJnZXQ9Zi5zcmNFbGVtZW50fHx5KSwzPT09YS50YXJnZXQubm9kZVR5cGUmJihhLnRhcmdldD1hLnRhcmdldC5wYXJlbnROb2RlKSxhLm1ldGFLZXk9ISFhLm1ldGFLZXksZy5maWx0ZXI\/Zy5maWx0ZXIoYSxmKTphfSxwcm9wczoiYWx0S2V5IGJ1YmJsZXMgY2FuY2VsYWJsZSBjdHJsS2V5IGN1cnJlbnRUYXJnZXQgZXZlbnRQaGFzZSBtZXRhS2V5IHJlbGF0ZWRUYXJnZXQgc2hpZnRLZXkgdGFyZ2V0IHRpbWVTdGFtcCB2aWV3IHdoaWNoIi5zcGxpdCgiICIpLGZpeEhvb2tzOnt9LGtleUhvb2tzOntwcm9wczoiY2hhciBjaGFyQ29kZSBrZXkga2V5Q29kZSIuc3BsaXQoIiAiKSxmaWx0ZXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbnVsbD09YS53aGljaCYmKGEud2hpY2g9bnVsbCE9Yi5jaGFyQ29kZT9iLmNoYXJDb2RlOmIua2V5Q29kZSksYX19LG1vdXNlSG9va3M6e3Byb3BzOiJidXR0b24gYnV0dG9ucyBjbGllbnRYIGNsaWVudFkgZnJvbUVsZW1lbnQgb2Zmc2V0WCBvZmZzZXRZIHBhZ2VYIHBhZ2VZIHNjcmVlblggc2NyZWVuWSB0b0VsZW1lbnQiLnNwbGl0KCIgIiksZmlsdGVyOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGY9Yi5idXR0b24sZz1iLmZyb21FbGVtZW50O3JldHVybiBudWxsPT1hLnBhZ2VYJiZudWxsIT1iLmNsaWVudFgmJihkPWEudGFyZ2V0Lm93bmVyRG9jdW1lbnR8fHksZT1kLmRvY3VtZW50RWxlbWVudCxjPWQuYm9keSxhLnBhZ2VYPWIuY2xpZW50WCsoZSYmZS5zY3JvbGxMZWZ0fHxjJiZjLnNjcm9sbExlZnR8fDApLShlJiZlLmNsaWVudExlZnR8fGMmJmMuY2xpZW50TGVmdHx8MCksYS5wYWdlWT1iLmNsaWVudFkrKGUmJmUuc2Nyb2xsVG9wfHxjJiZjLnNjcm9sbFRvcHx8MCktKGUmJmUuY2xpZW50VG9wfHxjJiZjLmNsaWVudFRvcHx8MCkpLCFhLnJlbGF0ZWRUYXJnZXQmJmcmJihhLnJlbGF0ZWRUYXJnZXQ9Zz09PWEudGFyZ2V0P2IudG9FbGVtZW50OmcpLGEud2hpY2h8fHZvaWQgMD09PWZ8fChhLndoaWNoPTEmZj8xOjImZj8zOjQmZj8yOjApLGF9fSxzcGVjaWFsOntsb2FkOntub0J1YmJsZTohMH0sZm9jdXM6e3RyaWdnZXI6ZnVuY3Rpb24oKXtpZih0aGlzIT09Y2EoKSYmdGhpcy5mb2N1cyl0cnl7cmV0dXJuIHRoaXMuZm9jdXMoKSwhMX1jYXRjaChhKXt9fSxkZWxlZ2F0ZVR5cGU6ImZvY3VzaW4ifSxibHVyOnt0cmlnZ2VyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXM9PT1jYSgpJiZ0aGlzLmJsdXI\/KHRoaXMuYmx1cigpLCExKTp2b2lkIDB9LGRlbGVnYXRlVHlwZToiZm9jdXNvdXQifSxjbGljazp7dHJpZ2dlcjpmdW5jdGlvbigpe3JldHVybiBtLm5vZGVOYW1lKHRoaXMsImlucHV0IikmJiJjaGVja2JveCI9PT10aGlzLnR5cGUmJnRoaXMuY2xpY2s\/KHRoaXMuY2xpY2soKSwhMSk6dm9pZCAwfSxfZGVmYXVsdDpmdW5jdGlvbihhKXtyZXR1cm4gbS5ub2RlTmFtZShhLnRhcmdldCwiYSIpfX0sYmVmb3JldW5sb2FkOntwb3N0RGlzcGF0Y2g6ZnVuY3Rpb24oYSl7dm9pZCAwIT09YS5yZXN1bHQmJmEub3JpZ2luYWxFdmVudCYmKGEub3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZT1hLnJlc3VsdCl9fX0sc2ltdWxhdGU6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9bS5leHRlbmQobmV3IG0uRXZlbnQsYyx7dHlwZTphLGlzU2ltdWxhdGVkOiEwLG9yaWdpbmFsRXZlbnQ6e319KTtkP20uZXZlbnQudHJpZ2dlcihlLG51bGwsYik6bS5ldmVudC5kaXNwYXRjaC5jYWxsKGIsZSksZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmYy5wcmV2ZW50RGVmYXVsdCgpfX0sbS5yZW1vdmVFdmVudD15LnJlbW92ZUV2ZW50TGlzdGVuZXI\/ZnVuY3Rpb24oYSxiLGMpe2EucmVtb3ZlRXZlbnRMaXN0ZW5lciYmYS5yZW1vdmVFdmVudExpc3RlbmVyKGIsYywhMSl9OmZ1bmN0aW9uKGEsYixjKXt2YXIgZD0ib24iK2I7YS5kZXRhY2hFdmVudCYmKHR5cGVvZiBhW2RdPT09SyYmKGFbZF09bnVsbCksYS5kZXRhY2hFdmVudChkLGMpKX0sbS5FdmVudD1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgbS5FdmVudD8oYSYmYS50eXBlPyh0aGlzLm9yaWdpbmFsRXZlbnQ9YSx0aGlzLnR5cGU9YS50eXBlLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWEuZGVmYXVsdFByZXZlbnRlZHx8dm9pZCAwPT09YS5kZWZhdWx0UHJldmVudGVkJiZhLnJldHVyblZhbHVlPT09ITE\/YWE6YmEpOnRoaXMudHlwZT1hLGImJm0uZXh0ZW5kKHRoaXMsYiksdGhpcy50aW1lU3RhbXA9YSYmYS50aW1lU3RhbXB8fG0ubm93KCksdm9pZCh0aGlzW20uZXhwYW5kb109ITApKTpuZXcgbS5FdmVudChhLGIpfSxtLkV2ZW50LnByb3RvdHlwZT17aXNEZWZhdWx0UHJldmVudGVkOmJhLGlzUHJvcGFnYXRpb25TdG9wcGVkOmJhLGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOmJhLHByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPWFhLGEmJihhLnByZXZlbnREZWZhdWx0P2EucHJldmVudERlZmF1bHQoKTphLnJldHVyblZhbHVlPSExKX0sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9YWEsYSYmKGEuc3RvcFByb3BhZ2F0aW9uJiZhLnN0b3BQcm9wYWdhdGlvbigpLGEuY2FuY2VsQnViYmxlPSEwKX0sc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9YWEsYSYmYS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24mJmEuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksdGhpcy5zdG9wUHJvcGFnYXRpb24oKX19LG0uZWFjaCh7bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCIscG9pbnRlcmVudGVyOiJwb2ludGVyb3ZlciIscG9pbnRlcmxlYXZlOiJwb2ludGVyb3V0In0sZnVuY3Rpb24oYSxiKXttLmV2ZW50LnNwZWNpYWxbYV09e2RlbGVnYXRlVHlwZTpiLGJpbmRUeXBlOmIsaGFuZGxlOmZ1bmN0aW9uKGEpe3ZhciBjLGQ9dGhpcyxlPWEucmVsYXRlZFRhcmdldCxmPWEuaGFuZGxlT2JqO3JldHVybighZXx8ZSE9PWQmJiFtLmNvbnRhaW5zKGQsZSkpJiYoYS50eXBlPWYub3JpZ1R5cGUsYz1mLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpLGEudHlwZT1iKSxjfX19KSxrLnN1Ym1pdEJ1YmJsZXN8fChtLmV2ZW50LnNwZWNpYWwuc3VibWl0PXtzZXR1cDpmdW5jdGlvbigpe3JldHVybiBtLm5vZGVOYW1lKHRoaXMsImZvcm0iKT8hMTp2b2lkIG0uZXZlbnQuYWRkKHRoaXMsImNsaWNrLl9zdWJtaXQga2V5cHJlc3MuX3N1Ym1pdCIsZnVuY3Rpb24oYSl7dmFyIGI9YS50YXJnZXQsYz1tLm5vZGVOYW1lKGIsImlucHV0Iil8fG0ubm9kZU5hbWUoYiwiYnV0dG9uIik\/Yi5mb3JtOnZvaWQgMDtjJiYhbS5fZGF0YShjLCJzdWJtaXRCdWJibGVzIikmJihtLmV2ZW50LmFkZChjLCJzdWJtaXQuX3N1Ym1pdCIsZnVuY3Rpb24oYSl7YS5fc3VibWl0X2J1YmJsZT0hMH0pLG0uX2RhdGEoYywic3VibWl0QnViYmxlcyIsITApKX0pfSxwb3N0RGlzcGF0Y2g6ZnVuY3Rpb24oYSl7YS5fc3VibWl0X2J1YmJsZSYmKGRlbGV0ZSBhLl9zdWJtaXRfYnViYmxlLHRoaXMucGFyZW50Tm9kZSYmIWEuaXNUcmlnZ2VyJiZtLmV2ZW50LnNpbXVsYXRlKCJzdWJtaXQiLHRoaXMucGFyZW50Tm9kZSxhLCEwKSl9LHRlYXJkb3duOmZ1bmN0aW9uKCl7cmV0dXJuIG0ubm9kZU5hbWUodGhpcywiZm9ybSIpPyExOnZvaWQgbS5ldmVudC5yZW1vdmUodGhpcywiLl9zdWJtaXQiKX19KSxrLmNoYW5nZUJ1YmJsZXN8fChtLmV2ZW50LnNwZWNpYWwuY2hhbmdlPXtzZXR1cDpmdW5jdGlvbigpe3JldHVybiBYLnRlc3QodGhpcy5ub2RlTmFtZSk\/KCgiY2hlY2tib3giPT09dGhpcy50eXBlfHwicmFkaW8iPT09dGhpcy50eXBlKSYmKG0uZXZlbnQuYWRkKHRoaXMsInByb3BlcnR5Y2hhbmdlLl9jaGFuZ2UiLGZ1bmN0aW9uKGEpeyJjaGVja2VkIj09PWEub3JpZ2luYWxFdmVudC5wcm9wZXJ0eU5hbWUmJih0aGlzLl9qdXN0X2NoYW5nZWQ9ITApfSksbS5ldmVudC5hZGQodGhpcywiY2xpY2suX2NoYW5nZSIsZnVuY3Rpb24oYSl7dGhpcy5fanVzdF9jaGFuZ2VkJiYhYS5pc1RyaWdnZXImJih0aGlzLl9qdXN0X2NoYW5nZWQ9ITEpLG0uZXZlbnQuc2ltdWxhdGUoImNoYW5nZSIsdGhpcyxhLCEwKX0pKSwhMSk6dm9pZCBtLmV2ZW50LmFkZCh0aGlzLCJiZWZvcmVhY3RpdmF0ZS5fY2hhbmdlIixmdW5jdGlvbihhKXt2YXIgYj1hLnRhcmdldDtYLnRlc3QoYi5ub2RlTmFtZSkmJiFtLl9kYXRhKGIsImNoYW5nZUJ1YmJsZXMiKSYmKG0uZXZlbnQuYWRkKGIsImNoYW5nZS5fY2hhbmdlIixmdW5jdGlvbihhKXshdGhpcy5wYXJlbnROb2RlfHxhLmlzU2ltdWxhdGVkfHxhLmlzVHJpZ2dlcnx8bS5ldmVudC5zaW11bGF0ZSgiY2hhbmdlIix0aGlzLnBhcmVudE5vZGUsYSwhMCl9KSxtLl9kYXRhKGIsImNoYW5nZUJ1YmJsZXMiLCEwKSl9KX0saGFuZGxlOmZ1bmN0aW9uKGEpe3ZhciBiPWEudGFyZ2V0O3JldHVybiB0aGlzIT09Ynx8YS5pc1NpbXVsYXRlZHx8YS5pc1RyaWdnZXJ8fCJyYWRpbyIhPT1iLnR5cGUmJiJjaGVja2JveCIhPT1iLnR5cGU\/YS5oYW5kbGVPYmouaGFuZGxlci5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dm9pZCAwfSx0ZWFyZG93bjpmdW5jdGlvbigpe3JldHVybiBtLmV2ZW50LnJlbW92ZSh0aGlzLCIuX2NoYW5nZSIpLCFYLnRlc3QodGhpcy5ub2RlTmFtZSl9fSksay5mb2N1c2luQnViYmxlc3x8bS5lYWNoKHtmb2N1czoiZm9jdXNpbiIsYmx1cjoiZm9jdXNvdXQifSxmdW5jdGlvbihhLGIpe3ZhciBjPWZ1bmN0aW9uKGEpe20uZXZlbnQuc2ltdWxhdGUoYixhLnRhcmdldCxtLmV2ZW50LmZpeChhKSwhMCl9O20uZXZlbnQuc3BlY2lhbFtiXT17c2V0dXA6ZnVuY3Rpb24oKXt2YXIgZD10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMsZT1tLl9kYXRhKGQsYik7ZXx8ZC5hZGRFdmVudExpc3RlbmVyKGEsYywhMCksbS5fZGF0YShkLGIsKGV8fDApKzEpfSx0ZWFyZG93bjpmdW5jdGlvbigpe3ZhciBkPXRoaXMub3duZXJEb2N1bWVudHx8dGhpcyxlPW0uX2RhdGEoZCxiKS0xO2U\/bS5fZGF0YShkLGIsZSk6KGQucmVtb3ZlRXZlbnRMaXN0ZW5lcihhLGMsITApLG0uX3JlbW92ZURhdGEoZCxiKSl9fX0pLG0uZm4uZXh0ZW5kKHtvbjpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmLGc7aWYoIm9iamVjdCI9PXR5cGVvZiBhKXsic3RyaW5nIiE9dHlwZW9mIGImJihjPWN8fGIsYj12b2lkIDApO2ZvcihmIGluIGEpdGhpcy5vbihmLGIsYyxhW2ZdLGUpO3JldHVybiB0aGlzfWlmKG51bGw9PWMmJm51bGw9PWQ\/KGQ9YixjPWI9dm9pZCAwKTpudWxsPT1kJiYoInN0cmluZyI9PXR5cGVvZiBiPyhkPWMsYz12b2lkIDApOihkPWMsYz1iLGI9dm9pZCAwKSksZD09PSExKWQ9YmE7ZWxzZSBpZighZClyZXR1cm4gdGhpcztyZXR1cm4gMT09PWUmJihnPWQsZD1mdW5jdGlvbihhKXtyZXR1cm4gbSgpLm9mZihhKSxnLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZC5ndWlkPWcuZ3VpZHx8KGcuZ3VpZD1tLmd1aWQrKykpLHRoaXMuZWFjaChmdW5jdGlvbigpe20uZXZlbnQuYWRkKHRoaXMsYSxkLGMsYil9KX0sb25lOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLm9uKGEsYixjLGQsMSl9LG9mZjpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZTtpZihhJiZhLnByZXZlbnREZWZhdWx0JiZhLmhhbmRsZU9iailyZXR1cm4gZD1hLmhhbmRsZU9iaixtKGEuZGVsZWdhdGVUYXJnZXQpLm9mZihkLm5hbWVzcGFjZT9kLm9yaWdUeXBlKyIuIitkLm5hbWVzcGFjZTpkLm9yaWdUeXBlLGQuc2VsZWN0b3IsZC5oYW5kbGVyKSx0aGlzO2lmKCJvYmplY3QiPT10eXBlb2YgYSl7Zm9yKGUgaW4gYSl0aGlzLm9mZihlLGIsYVtlXSk7cmV0dXJuIHRoaXN9cmV0dXJuKGI9PT0hMXx8ImZ1bmN0aW9uIj09dHlwZW9mIGIpJiYoYz1iLGI9dm9pZCAwKSxjPT09ITEmJihjPWJhKSx0aGlzLmVhY2goZnVuY3Rpb24oKXttLmV2ZW50LnJlbW92ZSh0aGlzLGEsYyxiKX0pfSx0cmlnZ2VyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe20uZXZlbnQudHJpZ2dlcihhLGIsdGhpcyl9KX0sdHJpZ2dlckhhbmRsZXI6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzWzBdO3JldHVybiBjP20uZXZlbnQudHJpZ2dlcihhLGIsYywhMCk6dm9pZCAwfX0pO2Z1bmN0aW9uIGRhKGEpe3ZhciBiPWVhLnNwbGl0KCJ8IiksYz1hLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtpZihjLmNyZWF0ZUVsZW1lbnQpd2hpbGUoYi5sZW5ndGgpYy5jcmVhdGVFbGVtZW50KGIucG9wKCkpO3JldHVybiBjfXZhciBlYT0iYWJicnxhcnRpY2xlfGFzaWRlfGF1ZGlvfGJkaXxjYW52YXN8ZGF0YXxkYXRhbGlzdHxkZXRhaWxzfGZpZ2NhcHRpb258ZmlndXJlfGZvb3RlcnxoZWFkZXJ8aGdyb3VwfG1hcmt8bWV0ZXJ8bmF2fG91dHB1dHxwcm9ncmVzc3xzZWN0aW9ufHN1bW1hcnl8dGltZXx2aWRlbyIsZmE9LyBqUXVlcnlcZCs9Iig\/Om51bGx8XGQrKSIvZyxnYT1uZXcgUmVnRXhwKCI8KD86IitlYSsiKVtcXHMvPl0iLCJpIiksaGE9L15ccysvLGlhPS88KD8hYXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFtcdzpdKylbXj5dKilcLz4vZ2ksamE9LzwoW1x3Ol0rKS8sa2E9Lzx0Ym9keS9pLGxhPS88fCYjP1x3KzsvLG1hPS88KD86c2NyaXB0fHN0eWxlfGxpbmspL2ksbmE9L2NoZWNrZWRccyooPzpbXj1dfD1ccyouY2hlY2tlZC4pL2ksb2E9L14kfFwvKD86amF2YXxlY21hKXNjcmlwdC9pLHBhPS9edHJ1ZVwvKC4qKS8scWE9L15ccyo8ISg\/OlxbQ0RBVEFcW3wtLSl8KD86XF1cXXwtLSk+XHMqJC9nLHJhPXtvcHRpb246WzEsIjxzZWxlY3QgbXVsdGlwbGU9J211bHRpcGxlJz4iLCI8L3NlbGVjdD4iXSxsZWdlbmQ6WzEsIjxmaWVsZHNldD4iLCI8L2ZpZWxkc2V0PiJdLGFyZWE6WzEsIjxtYXA+IiwiPC9tYXA+Il0scGFyYW06WzEsIjxvYmplY3Q+IiwiPC9vYmplY3Q+Il0sdGhlYWQ6WzEsIjx0YWJsZT4iLCI8L3RhYmxlPiJdLHRyOlsyLCI8dGFibGU+PHRib2R5PiIsIjwvdGJvZHk+PC90YWJsZT4iXSxjb2w6WzIsIjx0YWJsZT48dGJvZHk+PC90Ym9keT48Y29sZ3JvdXA+IiwiPC9jb2xncm91cD48L3RhYmxlPiJdLHRkOlszLCI8dGFibGU+PHRib2R5Pjx0cj4iLCI8L3RyPjwvdGJvZHk+PC90YWJsZT4iXSxfZGVmYXVsdDprLmh0bWxTZXJpYWxpemU\/WzAsIiIsIiJdOlsxLCJYPGRpdj4iLCI8L2Rpdj4iXX0sc2E9ZGEoeSksdGE9c2EuYXBwZW5kQ2hpbGQoeS5jcmVhdGVFbGVtZW50KCJkaXYiKSk7cmEub3B0Z3JvdXA9cmEub3B0aW9uLHJhLnRib2R5PXJhLnRmb290PXJhLmNvbGdyb3VwPXJhLmNhcHRpb249cmEudGhlYWQscmEudGg9cmEudGQ7ZnVuY3Rpb24gdWEoYSxiKXt2YXIgYyxkLGU9MCxmPXR5cGVvZiBhLmdldEVsZW1lbnRzQnlUYWdOYW1lIT09Sz9hLmdldEVsZW1lbnRzQnlUYWdOYW1lKGJ8fCIqIik6dHlwZW9mIGEucXVlcnlTZWxlY3RvckFsbCE9PUs\/YS5xdWVyeVNlbGVjdG9yQWxsKGJ8fCIqIik6dm9pZCAwO2lmKCFmKWZvcihmPVtdLGM9YS5jaGlsZE5vZGVzfHxhO251bGwhPShkPWNbZV0pO2UrKykhYnx8bS5ub2RlTmFtZShkLGIpP2YucHVzaChkKTptLm1lcmdlKGYsdWEoZCxiKSk7cmV0dXJuIHZvaWQgMD09PWJ8fGImJm0ubm9kZU5hbWUoYSxiKT9tLm1lcmdlKFthXSxmKTpmfWZ1bmN0aW9uIHZhKGEpe1cudGVzdChhLnR5cGUpJiYoYS5kZWZhdWx0Q2hlY2tlZD1hLmNoZWNrZWQpfWZ1bmN0aW9uIHdhKGEsYil7cmV0dXJuIG0ubm9kZU5hbWUoYSwidGFibGUiKSYmbS5ub2RlTmFtZSgxMSE9PWIubm9kZVR5cGU\/YjpiLmZpcnN0Q2hpbGQsInRyIik\/YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKVswXXx8YS5hcHBlbmRDaGlsZChhLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGJvZHkiKSk6YX1mdW5jdGlvbiB4YShhKXtyZXR1cm4gYS50eXBlPShudWxsIT09bS5maW5kLmF0dHIoYSwidHlwZSIpKSsiLyIrYS50eXBlLGF9ZnVuY3Rpb24geWEoYSl7dmFyIGI9cGEuZXhlYyhhLnR5cGUpO3JldHVybiBiP2EudHlwZT1iWzFdOmEucmVtb3ZlQXR0cmlidXRlKCJ0eXBlIiksYX1mdW5jdGlvbiB6YShhLGIpe2Zvcih2YXIgYyxkPTA7bnVsbCE9KGM9YVtkXSk7ZCsrKW0uX2RhdGEoYywiZ2xvYmFsRXZhbCIsIWJ8fG0uX2RhdGEoYltkXSwiZ2xvYmFsRXZhbCIpKX1mdW5jdGlvbiBBYShhLGIpe2lmKDE9PT1iLm5vZGVUeXBlJiZtLmhhc0RhdGEoYSkpe3ZhciBjLGQsZSxmPW0uX2RhdGEoYSksZz1tLl9kYXRhKGIsZiksaD1mLmV2ZW50cztpZihoKXtkZWxldGUgZy5oYW5kbGUsZy5ldmVudHM9e307Zm9yKGMgaW4gaClmb3IoZD0wLGU9aFtjXS5sZW5ndGg7ZT5kO2QrKyltLmV2ZW50LmFkZChiLGMsaFtjXVtkXSl9Zy5kYXRhJiYoZy5kYXRhPW0uZXh0ZW5kKHt9LGcuZGF0YSkpfX1mdW5jdGlvbiBCYShhLGIpe3ZhciBjLGQsZTtpZigxPT09Yi5ub2RlVHlwZSl7aWYoYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksIWsubm9DbG9uZUV2ZW50JiZiW20uZXhwYW5kb10pe2U9bS5fZGF0YShiKTtmb3IoZCBpbiBlLmV2ZW50cyltLnJlbW92ZUV2ZW50KGIsZCxlLmhhbmRsZSk7Yi5yZW1vdmVBdHRyaWJ1dGUobS5leHBhbmRvKX0ic2NyaXB0Ij09PWMmJmIudGV4dCE9PWEudGV4dD8oeGEoYikudGV4dD1hLnRleHQseWEoYikpOiJvYmplY3QiPT09Yz8oYi5wYXJlbnROb2RlJiYoYi5vdXRlckhUTUw9YS5vdXRlckhUTUwpLGsuaHRtbDVDbG9uZSYmYS5pbm5lckhUTUwmJiFtLnRyaW0oYi5pbm5lckhUTUwpJiYoYi5pbm5lckhUTUw9YS5pbm5lckhUTUwpKToiaW5wdXQiPT09YyYmVy50ZXN0KGEudHlwZSk\/KGIuZGVmYXVsdENoZWNrZWQ9Yi5jaGVja2VkPWEuY2hlY2tlZCxiLnZhbHVlIT09YS52YWx1ZSYmKGIudmFsdWU9YS52YWx1ZSkpOiJvcHRpb24iPT09Yz9iLmRlZmF1bHRTZWxlY3RlZD1iLnNlbGVjdGVkPWEuZGVmYXVsdFNlbGVjdGVkOigiaW5wdXQiPT09Y3x8InRleHRhcmVhIj09PWMpJiYoYi5kZWZhdWx0VmFsdWU9YS5kZWZhdWx0VmFsdWUpfX1tLmV4dGVuZCh7Y2xvbmU6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnLGgsaT1tLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudCxhKTtpZihrLmh0bWw1Q2xvbmV8fG0uaXNYTUxEb2MoYSl8fCFnYS50ZXN0KCI8IithLm5vZGVOYW1lKyI+Iik\/Zj1hLmNsb25lTm9kZSghMCk6KHRhLmlubmVySFRNTD1hLm91dGVySFRNTCx0YS5yZW1vdmVDaGlsZChmPXRhLmZpcnN0Q2hpbGQpKSwhKGsubm9DbG9uZUV2ZW50JiZrLm5vQ2xvbmVDaGVja2VkfHwxIT09YS5ub2RlVHlwZSYmMTEhPT1hLm5vZGVUeXBlfHxtLmlzWE1MRG9jKGEpKSlmb3IoZD11YShmKSxoPXVhKGEpLGc9MDtudWxsIT0oZT1oW2ddKTsrK2cpZFtnXSYmQmEoZSxkW2ddKTtpZihiKWlmKGMpZm9yKGg9aHx8dWEoYSksZD1kfHx1YShmKSxnPTA7bnVsbCE9KGU9aFtnXSk7ZysrKUFhKGUsZFtnXSk7ZWxzZSBBYShhLGYpO3JldHVybiBkPXVhKGYsInNjcmlwdCIpLGQubGVuZ3RoPjAmJnphKGQsIWkmJnVhKGEsInNjcmlwdCIpKSxkPWg9ZT1udWxsLGZ9LGJ1aWxkRnJhZ21lbnQ6ZnVuY3Rpb24oYSxiLGMsZCl7Zm9yKHZhciBlLGYsZyxoLGksaixsLG49YS5sZW5ndGgsbz1kYShiKSxwPVtdLHE9MDtuPnE7cSsrKWlmKGY9YVtxXSxmfHwwPT09ZilpZigib2JqZWN0Ij09PW0udHlwZShmKSltLm1lcmdlKHAsZi5ub2RlVHlwZT9bZl06Zik7ZWxzZSBpZihsYS50ZXN0KGYpKXtoPWh8fG8uYXBwZW5kQ2hpbGQoYi5jcmVhdGVFbGVtZW50KCJkaXYiKSksaT0oamEuZXhlYyhmKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKSxsPXJhW2ldfHxyYS5fZGVmYXVsdCxoLmlubmVySFRNTD1sWzFdK2YucmVwbGFjZShpYSwiPCQxPjwvJDI+IikrbFsyXSxlPWxbMF07d2hpbGUoZS0tKWg9aC5sYXN0Q2hpbGQ7aWYoIWsubGVhZGluZ1doaXRlc3BhY2UmJmhhLnRlc3QoZikmJnAucHVzaChiLmNyZWF0ZVRleHROb2RlKGhhLmV4ZWMoZilbMF0pKSwhay50Ym9keSl7Zj0idGFibGUiIT09aXx8a2EudGVzdChmKT8iPHRhYmxlPiIhPT1sWzFdfHxrYS50ZXN0KGYpPzA6aDpoLmZpcnN0Q2hpbGQsZT1mJiZmLmNoaWxkTm9kZXMubGVuZ3RoO3doaWxlKGUtLSltLm5vZGVOYW1lKGo9Zi5jaGlsZE5vZGVzW2VdLCJ0Ym9keSIpJiYhai5jaGlsZE5vZGVzLmxlbmd0aCYmZi5yZW1vdmVDaGlsZChqKX1tLm1lcmdlKHAsaC5jaGlsZE5vZGVzKSxoLnRleHRDb250ZW50PSIiO3doaWxlKGguZmlyc3RDaGlsZCloLnJlbW92ZUNoaWxkKGguZmlyc3RDaGlsZCk7aD1vLmxhc3RDaGlsZH1lbHNlIHAucHVzaChiLmNyZWF0ZVRleHROb2RlKGYpKTtoJiZvLnJlbW92ZUNoaWxkKGgpLGsuYXBwZW5kQ2hlY2tlZHx8bS5ncmVwKHVhKHAsImlucHV0IiksdmEpLHE9MDt3aGlsZShmPXBbcSsrXSlpZigoIWR8fC0xPT09bS5pbkFycmF5KGYsZCkpJiYoZz1tLmNvbnRhaW5zKGYub3duZXJEb2N1bWVudCxmKSxoPXVhKG8uYXBwZW5kQ2hpbGQoZiksInNjcmlwdCIpLGcmJnphKGgpLGMpKXtlPTA7d2hpbGUoZj1oW2UrK10pb2EudGVzdChmLnR5cGV8fCIiKSYmYy5wdXNoKGYpfXJldHVybiBoPW51bGwsb30sY2xlYW5EYXRhOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBkLGUsZixnLGg9MCxpPW0uZXhwYW5kbyxqPW0uY2FjaGUsbD1rLmRlbGV0ZUV4cGFuZG8sbj1tLmV2ZW50LnNwZWNpYWw7bnVsbCE9KGQ9YVtoXSk7aCsrKWlmKChifHxtLmFjY2VwdERhdGEoZCkpJiYoZj1kW2ldLGc9ZiYmaltmXSkpe2lmKGcuZXZlbnRzKWZvcihlIGluIGcuZXZlbnRzKW5bZV0\/bS5ldmVudC5yZW1vdmUoZCxlKTptLnJlbW92ZUV2ZW50KGQsZSxnLmhhbmRsZSk7altmXSYmKGRlbGV0ZSBqW2ZdLGw\/ZGVsZXRlIGRbaV06dHlwZW9mIGQucmVtb3ZlQXR0cmlidXRlIT09Sz9kLnJlbW92ZUF0dHJpYnV0ZShpKTpkW2ldPW51bGwsYy5wdXNoKGYpKX19fSksbS5mbi5leHRlbmQoe3RleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIFYodGhpcyxmdW5jdGlvbihhKXtyZXR1cm4gdm9pZCAwPT09YT9tLnRleHQodGhpcyk6dGhpcy5lbXB0eSgpLmFwcGVuZCgodGhpc1swXSYmdGhpc1swXS5vd25lckRvY3VtZW50fHx5KS5jcmVhdGVUZXh0Tm9kZShhKSl9LG51bGwsYSxhcmd1bWVudHMubGVuZ3RoKX0sYXBwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZ1bmN0aW9uKGEpe2lmKDE9PT10aGlzLm5vZGVUeXBlfHwxMT09PXRoaXMubm9kZVR5cGV8fDk9PT10aGlzLm5vZGVUeXBlKXt2YXIgYj13YSh0aGlzLGEpO2IuYXBwZW5kQ2hpbGQoYSl9fSl9LHByZXBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYSl7aWYoMT09PXRoaXMubm9kZVR5cGV8fDExPT09dGhpcy5ub2RlVHlwZXx8OT09PXRoaXMubm9kZVR5cGUpe3ZhciBiPXdhKHRoaXMsYSk7Yi5pbnNlcnRCZWZvcmUoYSxiLmZpcnN0Q2hpbGQpfX0pfSxiZWZvcmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcyl9KX0sYWZ0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcy5uZXh0U2libGluZyl9KX0scmVtb3ZlOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjLGQ9YT9tLmZpbHRlcihhLHRoaXMpOnRoaXMsZT0wO251bGwhPShjPWRbZV0pO2UrKylifHwxIT09Yy5ub2RlVHlwZXx8bS5jbGVhbkRhdGEodWEoYykpLGMucGFyZW50Tm9kZSYmKGImJm0uY29udGFpbnMoYy5vd25lckRvY3VtZW50LGMpJiZ6YSh1YShjLCJzY3JpcHQiKSksYy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGMpKTtyZXR1cm4gdGhpc30sZW1wdHk6ZnVuY3Rpb24oKXtmb3IodmFyIGEsYj0wO251bGwhPShhPXRoaXNbYl0pO2IrKyl7MT09PWEubm9kZVR5cGUmJm0uY2xlYW5EYXRhKHVhKGEsITEpKTt3aGlsZShhLmZpcnN0Q2hpbGQpYS5yZW1vdmVDaGlsZChhLmZpcnN0Q2hpbGQpO2Eub3B0aW9ucyYmbS5ub2RlTmFtZShhLCJzZWxlY3QiKSYmKGEub3B0aW9ucy5sZW5ndGg9MCl9cmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9bnVsbD09YT8hMTphLGI9bnVsbD09Yj9hOmIsdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gbS5jbG9uZSh0aGlzLGEsYil9KX0saHRtbDpmdW5jdGlvbihhKXtyZXR1cm4gVih0aGlzLGZ1bmN0aW9uKGEpe3ZhciBiPXRoaXNbMF18fHt9LGM9MCxkPXRoaXMubGVuZ3RoO2lmKHZvaWQgMD09PWEpcmV0dXJuIDE9PT1iLm5vZGVUeXBlP2IuaW5uZXJIVE1MLnJlcGxhY2UoZmEsIiIpOnZvaWQgMDtpZighKCJzdHJpbmciIT10eXBlb2YgYXx8bWEudGVzdChhKXx8IWsuaHRtbFNlcmlhbGl6ZSYmZ2EudGVzdChhKXx8IWsubGVhZGluZ1doaXRlc3BhY2UmJmhhLnRlc3QoYSl8fHJhWyhqYS5leGVjKGEpfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpXSkpe2E9YS5yZXBsYWNlKGlhLCI8JDE+PC8kMj4iKTt0cnl7Zm9yKDtkPmM7YysrKWI9dGhpc1tjXXx8e30sMT09PWIubm9kZVR5cGUmJihtLmNsZWFuRGF0YSh1YShiLCExKSksYi5pbm5lckhUTUw9YSk7Yj0wfWNhdGNoKGUpe319YiYmdGhpcy5lbXB0eSgpLmFwcGVuZChhKX0sbnVsbCxhLGFyZ3VtZW50cy5sZW5ndGgpfSxyZXBsYWNlV2l0aDpmdW5jdGlvbigpe3ZhciBhPWFyZ3VtZW50c1swXTtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYil7YT10aGlzLnBhcmVudE5vZGUsbS5jbGVhbkRhdGEodWEodGhpcykpLGEmJmEucmVwbGFjZUNoaWxkKGIsdGhpcyl9KSxhJiYoYS5sZW5ndGh8fGEubm9kZVR5cGUpP3RoaXM6dGhpcy5yZW1vdmUoKX0sZGV0YWNoOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnJlbW92ZShhLCEwKX0sZG9tTWFuaXA6ZnVuY3Rpb24oYSxiKXthPWUuYXBwbHkoW10sYSk7dmFyIGMsZCxmLGcsaCxpLGo9MCxsPXRoaXMubGVuZ3RoLG49dGhpcyxvPWwtMSxwPWFbMF0scT1tLmlzRnVuY3Rpb24ocCk7aWYocXx8bD4xJiYic3RyaW5nIj09dHlwZW9mIHAmJiFrLmNoZWNrQ2xvbmUmJm5hLnRlc3QocCkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihjKXt2YXIgZD1uLmVxKGMpO3EmJihhWzBdPXAuY2FsbCh0aGlzLGMsZC5odG1sKCkpKSxkLmRvbU1hbmlwKGEsYil9KTtpZihsJiYoaT1tLmJ1aWxkRnJhZ21lbnQoYSx0aGlzWzBdLm93bmVyRG9jdW1lbnQsITEsdGhpcyksYz1pLmZpcnN0Q2hpbGQsMT09PWkuY2hpbGROb2Rlcy5sZW5ndGgmJihpPWMpLGMpKXtmb3IoZz1tLm1hcCh1YShpLCJzY3JpcHQiKSx4YSksZj1nLmxlbmd0aDtsPmo7aisrKWQ9aSxqIT09byYmKGQ9bS5jbG9uZShkLCEwLCEwKSxmJiZtLm1lcmdlKGcsdWEoZCwic2NyaXB0IikpKSxiLmNhbGwodGhpc1tqXSxkLGopO2lmKGYpZm9yKGg9Z1tnLmxlbmd0aC0xXS5vd25lckRvY3VtZW50LG0ubWFwKGcseWEpLGo9MDtmPmo7aisrKWQ9Z1tqXSxvYS50ZXN0KGQudHlwZXx8IiIpJiYhbS5fZGF0YShkLCJnbG9iYWxFdmFsIikmJm0uY29udGFpbnMoaCxkKSYmKGQuc3JjP20uX2V2YWxVcmwmJm0uX2V2YWxVcmwoZC5zcmMpOm0uZ2xvYmFsRXZhbCgoZC50ZXh0fHxkLnRleHRDb250ZW50fHxkLmlubmVySFRNTHx8IiIpLnJlcGxhY2UocWEsIiIpKSk7aT1jPW51bGx9cmV0dXJuIHRoaXN9fSksbS5lYWNoKHthcHBlbmRUbzoiYXBwZW5kIixwcmVwZW5kVG86InByZXBlbmQiLGluc2VydEJlZm9yZToiYmVmb3JlIixpbnNlcnRBZnRlcjoiYWZ0ZXIiLHJlcGxhY2VBbGw6InJlcGxhY2VXaXRoIn0sZnVuY3Rpb24oYSxiKXttLmZuW2FdPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYyxkPTAsZT1bXSxnPW0oYSksaD1nLmxlbmd0aC0xO2g+PWQ7ZCsrKWM9ZD09PWg\/dGhpczp0aGlzLmNsb25lKCEwKSxtKGdbZF0pW2JdKGMpLGYuYXBwbHkoZSxjLmdldCgpKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZSl9fSk7dmFyIENhLERhPXt9O2Z1bmN0aW9uIEVhKGIsYyl7dmFyIGQsZT1tKGMuY3JlYXRlRWxlbWVudChiKSkuYXBwZW5kVG8oYy5ib2R5KSxmPWEuZ2V0RGVmYXVsdENvbXB1dGVkU3R5bGUmJihkPWEuZ2V0RGVmYXVsdENvbXB1dGVkU3R5bGUoZVswXSkpP2QuZGlzcGxheTptLmNzcyhlWzBdLCJkaXNwbGF5Iik7cmV0dXJuIGUuZGV0YWNoKCksZn1mdW5jdGlvbiBGYShhKXt2YXIgYj15LGM9RGFbYV07cmV0dXJuIGN8fChjPUVhKGEsYiksIm5vbmUiIT09YyYmY3x8KENhPShDYXx8bSgiPGlmcmFtZSBmcmFtZWJvcmRlcj0nMCcgd2lkdGg9JzAnIGhlaWdodD0nMCcvPiIpKS5hcHBlbmRUbyhiLmRvY3VtZW50RWxlbWVudCksYj0oQ2FbMF0uY29udGVudFdpbmRvd3x8Q2FbMF0uY29udGVudERvY3VtZW50KS5kb2N1bWVudCxiLndyaXRlKCksYi5jbG9zZSgpLGM9RWEoYSxiKSxDYS5kZXRhY2goKSksRGFbYV09YyksY30hZnVuY3Rpb24oKXt2YXIgYTtrLnNocmlua1dyYXBCbG9ja3M9ZnVuY3Rpb24oKXtpZihudWxsIT1hKXJldHVybiBhO2E9ITE7dmFyIGIsYyxkO3JldHVybiBjPXkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSxjJiZjLnN0eWxlPyhiPXkuY3JlYXRlRWxlbWVudCgiZGl2IiksZD15LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGQuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyOjA7d2lkdGg6MDtoZWlnaHQ6MDt0b3A6MDtsZWZ0Oi05OTk5cHgiLGMuYXBwZW5kQ2hpbGQoZCkuYXBwZW5kQ2hpbGQoYiksdHlwZW9mIGIuc3R5bGUuem9vbSE9PUsmJihiLnN0eWxlLmNzc1RleHQ9Ii13ZWJraXQtYm94LXNpemluZzpjb250ZW50LWJveDstbW96LWJveC1zaXppbmc6Y29udGVudC1ib3g7Ym94LXNpemluZzpjb250ZW50LWJveDtkaXNwbGF5OmJsb2NrO21hcmdpbjowO2JvcmRlcjowO3BhZGRpbmc6MXB4O3dpZHRoOjFweDt6b29tOjEiLGIuYXBwZW5kQ2hpbGQoeS5jcmVhdGVFbGVtZW50KCJkaXYiKSkuc3R5bGUud2lkdGg9IjVweCIsYT0zIT09Yi5vZmZzZXRXaWR0aCksYy5yZW1vdmVDaGlsZChkKSxhKTp2b2lkIDB9fSgpO3ZhciBHYT0vXm1hcmdpbi8sSGE9bmV3IFJlZ0V4cCgiXigiK1MrIikoPyFweClbYS16JV0rJCIsImkiKSxJYSxKYSxLYT0vXih0b3B8cmlnaHR8Ym90dG9tfGxlZnQpJC87YS5nZXRDb21wdXRlZFN0eWxlPyhJYT1mdW5jdGlvbihiKXtyZXR1cm4gYi5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3Lm9wZW5lcj9iLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShiLG51bGwpOmEuZ2V0Q29tcHV0ZWRTdHlsZShiLG51bGwpfSxKYT1mdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmLGcsaD1hLnN0eWxlO3JldHVybiBjPWN8fElhKGEpLGc9Yz9jLmdldFByb3BlcnR5VmFsdWUoYil8fGNbYl06dm9pZCAwLGMmJigiIiE9PWd8fG0uY29udGFpbnMoYS5vd25lckRvY3VtZW50LGEpfHwoZz1tLnN0eWxlKGEsYikpLEhhLnRlc3QoZykmJkdhLnRlc3QoYikmJihkPWgud2lkdGgsZT1oLm1pbldpZHRoLGY9aC5tYXhXaWR0aCxoLm1pbldpZHRoPWgubWF4V2lkdGg9aC53aWR0aD1nLGc9Yy53aWR0aCxoLndpZHRoPWQsaC5taW5XaWR0aD1lLGgubWF4V2lkdGg9ZikpLHZvaWQgMD09PWc\/ZzpnKyIifSk6eS5kb2N1bWVudEVsZW1lbnQuY3VycmVudFN0eWxlJiYoSWE9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuY3VycmVudFN0eWxlfSxKYT1mdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmLGcsaD1hLnN0eWxlO3JldHVybiBjPWN8fElhKGEpLGc9Yz9jW2JdOnZvaWQgMCxudWxsPT1nJiZoJiZoW2JdJiYoZz1oW2JdKSxIYS50ZXN0KGcpJiYhS2EudGVzdChiKSYmKGQ9aC5sZWZ0LGU9YS5ydW50aW1lU3R5bGUsZj1lJiZlLmxlZnQsZiYmKGUubGVmdD1hLmN1cnJlbnRTdHlsZS5sZWZ0KSxoLmxlZnQ9ImZvbnRTaXplIj09PWI\/IjFlbSI6ZyxnPWgucGl4ZWxMZWZ0KyJweCIsaC5sZWZ0PWQsZiYmKGUubGVmdD1mKSksdm9pZCAwPT09Zz9nOmcrIiJ8fCJhdXRvIn0pO2Z1bmN0aW9uIExhKGEsYil7cmV0dXJue2dldDpmdW5jdGlvbigpe3ZhciBjPWEoKTtpZihudWxsIT1jKXJldHVybiBjP3ZvaWQgZGVsZXRlIHRoaXMuZ2V0Oih0aGlzLmdldD1iKS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fX0hZnVuY3Rpb24oKXt2YXIgYixjLGQsZSxmLGcsaDtpZihiPXkuY3JlYXRlRWxlbWVudCgiZGl2IiksYi5pbm5lckhUTUw9IiAgPGxpbmsvPjx0YWJsZT48L3RhYmxlPjxhIGhyZWY9Jy9hJz5hPC9hPjxpbnB1dCB0eXBlPSdjaGVja2JveCcvPiIsZD1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhIilbMF0sYz1kJiZkLnN0eWxlKXtjLmNzc1RleHQ9ImZsb2F0OmxlZnQ7b3BhY2l0eTouNSIsay5vcGFjaXR5PSIwLjUiPT09Yy5vcGFjaXR5LGsuY3NzRmxvYXQ9ISFjLmNzc0Zsb2F0LGIuc3R5bGUuYmFja2dyb3VuZENsaXA9ImNvbnRlbnQtYm94IixiLmNsb25lTm9kZSghMCkuc3R5bGUuYmFja2dyb3VuZENsaXA9IiIsay5jbGVhckNsb25lU3R5bGU9ImNvbnRlbnQtYm94Ij09PWIuc3R5bGUuYmFja2dyb3VuZENsaXAsay5ib3hTaXppbmc9IiI9PT1jLmJveFNpemluZ3x8IiI9PT1jLk1vekJveFNpemluZ3x8IiI9PT1jLldlYmtpdEJveFNpemluZyxtLmV4dGVuZChrLHtyZWxpYWJsZUhpZGRlbk9mZnNldHM6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09ZyYmaSgpLGd9LGJveFNpemluZ1JlbGlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PWYmJmkoKSxmfSxwaXhlbFBvc2l0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PWUmJmkoKSxlfSxyZWxpYWJsZU1hcmdpblJpZ2h0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PWgmJmkoKSxofX0pO2Z1bmN0aW9uIGkoKXt2YXIgYixjLGQsaTtjPXkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSxjJiZjLnN0eWxlJiYoYj15LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGQ9eS5jcmVhdGVFbGVtZW50KCJkaXYiKSxkLnN0eWxlLmNzc1RleHQ9InBvc2l0aW9uOmFic29sdXRlO2JvcmRlcjowO3dpZHRoOjA7aGVpZ2h0OjA7dG9wOjA7bGVmdDotOTk5OXB4IixjLmFwcGVuZENoaWxkKGQpLmFwcGVuZENoaWxkKGIpLGIuc3R5bGUuY3NzVGV4dD0iLXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym94LXNpemluZzpib3JkZXItYm94O2Rpc3BsYXk6YmxvY2s7bWFyZ2luLXRvcDoxJTt0b3A6MSU7Ym9yZGVyOjFweDtwYWRkaW5nOjFweDt3aWR0aDo0cHg7cG9zaXRpb246YWJzb2x1dGUiLGU9Zj0hMSxoPSEwLGEuZ2V0Q29tcHV0ZWRTdHlsZSYmKGU9IjElIiE9PShhLmdldENvbXB1dGVkU3R5bGUoYixudWxsKXx8e30pLnRvcCxmPSI0cHgiPT09KGEuZ2V0Q29tcHV0ZWRTdHlsZShiLG51bGwpfHx7d2lkdGg6IjRweCJ9KS53aWR0aCxpPWIuYXBwZW5kQ2hpbGQoeS5jcmVhdGVFbGVtZW50KCJkaXYiKSksaS5zdHlsZS5jc3NUZXh0PWIuc3R5bGUuY3NzVGV4dD0iLXdlYmtpdC1ib3gtc2l6aW5nOmNvbnRlbnQtYm94Oy1tb3otYm94LXNpemluZzpjb250ZW50LWJveDtib3gtc2l6aW5nOmNvbnRlbnQtYm94O2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjA7Ym9yZGVyOjA7cGFkZGluZzowIixpLnN0eWxlLm1hcmdpblJpZ2h0PWkuc3R5bGUud2lkdGg9IjAiLGIuc3R5bGUud2lkdGg9IjFweCIsaD0hcGFyc2VGbG9hdCgoYS5nZXRDb21wdXRlZFN0eWxlKGksbnVsbCl8fHt9KS5tYXJnaW5SaWdodCksYi5yZW1vdmVDaGlsZChpKSksYi5pbm5lckhUTUw9Ijx0YWJsZT48dHI+PHRkPjwvdGQ+PHRkPnQ8L3RkPjwvdHI+PC90YWJsZT4iLGk9Yi5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGQiKSxpWzBdLnN0eWxlLmNzc1RleHQ9Im1hcmdpbjowO2JvcmRlcjowO3BhZGRpbmc6MDtkaXNwbGF5Om5vbmUiLGc9MD09PWlbMF0ub2Zmc2V0SGVpZ2h0LGcmJihpWzBdLnN0eWxlLmRpc3BsYXk9IiIsaVsxXS5zdHlsZS5kaXNwbGF5PSJub25lIixnPTA9PT1pWzBdLm9mZnNldEhlaWdodCksYy5yZW1vdmVDaGlsZChkKSl9fX0oKSxtLnN3YXA9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGUsZixnPXt9O2ZvcihmIGluIGIpZ1tmXT1hLnN0eWxlW2ZdLGEuc3R5bGVbZl09YltmXTtlPWMuYXBwbHkoYSxkfHxbXSk7Zm9yKGYgaW4gYilhLnN0eWxlW2ZdPWdbZl07cmV0dXJuIGV9O3ZhciBNYT0vYWxwaGFcKFteKV0qXCkvaSxOYT0vb3BhY2l0eVxzKj1ccyooW14pXSopLyxPYT0vXihub25lfHRhYmxlKD8hLWNbZWFdKS4rKS8sUGE9bmV3IFJlZ0V4cCgiXigiK1MrIikoLiopJCIsImkiKSxRYT1uZXcgUmVnRXhwKCJeKFsrLV0pPSgiK1MrIikiLCJpIiksUmE9e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdmlzaWJpbGl0eToiaGlkZGVuIixkaXNwbGF5OiJibG9jayJ9LFNhPXtsZXR0ZXJTcGFjaW5nOiIwIixmb250V2VpZ2h0OiI0MDAifSxUYT1bIldlYmtpdCIsIk8iLCJNb3oiLCJtcyJdO2Z1bmN0aW9uIFVhKGEsYil7aWYoYiBpbiBhKXJldHVybiBiO3ZhciBjPWIuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrYi5zbGljZSgxKSxkPWIsZT1UYS5sZW5ndGg7d2hpbGUoZS0tKWlmKGI9VGFbZV0rYyxiIGluIGEpcmV0dXJuIGI7cmV0dXJuIGR9ZnVuY3Rpb24gVmEoYSxiKXtmb3IodmFyIGMsZCxlLGY9W10sZz0wLGg9YS5sZW5ndGg7aD5nO2crKylkPWFbZ10sZC5zdHlsZSYmKGZbZ109bS5fZGF0YShkLCJvbGRkaXNwbGF5IiksYz1kLnN0eWxlLmRpc3BsYXksYj8oZltnXXx8Im5vbmUiIT09Y3x8KGQuc3R5bGUuZGlzcGxheT0iIiksIiI9PT1kLnN0eWxlLmRpc3BsYXkmJlUoZCkmJihmW2ddPW0uX2RhdGEoZCwib2xkZGlzcGxheSIsRmEoZC5ub2RlTmFtZSkpKSk6KGU9VShkKSwoYyYmIm5vbmUiIT09Y3x8IWUpJiZtLl9kYXRhKGQsIm9sZGRpc3BsYXkiLGU\/YzptLmNzcyhkLCJkaXNwbGF5IikpKSk7Zm9yKGc9MDtoPmc7ZysrKWQ9YVtnXSxkLnN0eWxlJiYoYiYmIm5vbmUiIT09ZC5zdHlsZS5kaXNwbGF5JiYiIiE9PWQuc3R5bGUuZGlzcGxheXx8KGQuc3R5bGUuZGlzcGxheT1iP2ZbZ118fCIiOiJub25lIikpO3JldHVybiBhfWZ1bmN0aW9uIFdhKGEsYixjKXt2YXIgZD1QYS5leGVjKGIpO3JldHVybiBkP01hdGgubWF4KDAsZFsxXS0oY3x8MCkpKyhkWzJdfHwicHgiKTpifWZ1bmN0aW9uIFhhKGEsYixjLGQsZSl7Zm9yKHZhciBmPWM9PT0oZD8iYm9yZGVyIjoiY29udGVudCIpPzQ6IndpZHRoIj09PWI\/MTowLGc9MDs0PmY7Zis9MikibWFyZ2luIj09PWMmJihnKz1tLmNzcyhhLGMrVFtmXSwhMCxlKSksZD8oImNvbnRlbnQiPT09YyYmKGctPW0uY3NzKGEsInBhZGRpbmciK1RbZl0sITAsZSkpLCJtYXJnaW4iIT09YyYmKGctPW0uY3NzKGEsImJvcmRlciIrVFtmXSsiV2lkdGgiLCEwLGUpKSk6KGcrPW0uY3NzKGEsInBhZGRpbmciK1RbZl0sITAsZSksInBhZGRpbmciIT09YyYmKGcrPW0uY3NzKGEsImJvcmRlciIrVFtmXSsiV2lkdGgiLCEwLGUpKSk7cmV0dXJuIGd9ZnVuY3Rpb24gWWEoYSxiLGMpe3ZhciBkPSEwLGU9IndpZHRoIj09PWI\/YS5vZmZzZXRXaWR0aDphLm9mZnNldEhlaWdodCxmPUlhKGEpLGc9ay5ib3hTaXppbmcmJiJib3JkZXItYm94Ij09PW0uY3NzKGEsImJveFNpemluZyIsITEsZik7aWYoMD49ZXx8bnVsbD09ZSl7aWYoZT1KYShhLGIsZiksKDA+ZXx8bnVsbD09ZSkmJihlPWEuc3R5bGVbYl0pLEhhLnRlc3QoZSkpcmV0dXJuIGU7ZD1nJiYoay5ib3hTaXppbmdSZWxpYWJsZSgpfHxlPT09YS5zdHlsZVtiXSksZT1wYXJzZUZsb2F0KGUpfHwwfXJldHVybiBlK1hhKGEsYixjfHwoZz8iYm9yZGVyIjoiY29udGVudCIpLGQsZikrInB4In1tLmV4dGVuZCh7Y3NzSG9va3M6e29wYWNpdHk6e2dldDpmdW5jdGlvbihhLGIpe2lmKGIpe3ZhciBjPUphKGEsIm9wYWNpdHkiKTtyZXR1cm4iIj09PWM\/IjEiOmN9fX19LGNzc051bWJlcjp7Y29sdW1uQ291bnQ6ITAsZmlsbE9wYWNpdHk6ITAsZmxleEdyb3c6ITAsZmxleFNocmluazohMCxmb250V2VpZ2h0OiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcmRlcjohMCxvcnBoYW5zOiEwLHdpZG93czohMCx6SW5kZXg6ITAsem9vbTohMH0sY3NzUHJvcHM6eyJmbG9hdCI6ay5jc3NGbG9hdD8iY3NzRmxvYXQiOiJzdHlsZUZsb2F0In0sc3R5bGU6ZnVuY3Rpb24oYSxiLGMsZCl7aWYoYSYmMyE9PWEubm9kZVR5cGUmJjghPT1hLm5vZGVUeXBlJiZhLnN0eWxlKXt2YXIgZSxmLGcsaD1tLmNhbWVsQ2FzZShiKSxpPWEuc3R5bGU7aWYoYj1tLmNzc1Byb3BzW2hdfHwobS5jc3NQcm9wc1toXT1VYShpLGgpKSxnPW0uY3NzSG9va3NbYl18fG0uY3NzSG9va3NbaF0sdm9pZCAwPT09YylyZXR1cm4gZyYmImdldCJpbiBnJiZ2b2lkIDAhPT0oZT1nLmdldChhLCExLGQpKT9lOmlbYl07aWYoZj10eXBlb2YgYywic3RyaW5nIj09PWYmJihlPVFhLmV4ZWMoYykpJiYoYz0oZVsxXSsxKSplWzJdK3BhcnNlRmxvYXQobS5jc3MoYSxiKSksZj0ibnVtYmVyIiksbnVsbCE9YyYmYz09PWMmJigibnVtYmVyIiE9PWZ8fG0uY3NzTnVtYmVyW2hdfHwoYys9InB4Iiksay5jbGVhckNsb25lU3R5bGV8fCIiIT09Y3x8MCE9PWIuaW5kZXhPZigiYmFja2dyb3VuZCIpfHwoaVtiXT0iaW5oZXJpdCIpLCEoZyYmInNldCJpbiBnJiZ2b2lkIDA9PT0oYz1nLnNldChhLGMsZCkpKSkpdHJ5e2lbYl09Y31jYXRjaChqKXt9fX0sY3NzOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlLGYsZyxoPW0uY2FtZWxDYXNlKGIpO3JldHVybiBiPW0uY3NzUHJvcHNbaF18fChtLmNzc1Byb3BzW2hdPVVhKGEuc3R5bGUsaCkpLGc9bS5jc3NIb29rc1tiXXx8bS5jc3NIb29rc1toXSxnJiYiZ2V0ImluIGcmJihmPWcuZ2V0KGEsITAsYykpLHZvaWQgMD09PWYmJihmPUphKGEsYixkKSksIm5vcm1hbCI9PT1mJiZiIGluIFNhJiYoZj1TYVtiXSksIiI9PT1jfHxjPyhlPXBhcnNlRmxvYXQoZiksYz09PSEwfHxtLmlzTnVtZXJpYyhlKT9lfHwwOmYpOmZ9fSksbS5lYWNoKFsiaGVpZ2h0Iiwid2lkdGgiXSxmdW5jdGlvbihhLGIpe20uY3NzSG9va3NbYl09e2dldDpmdW5jdGlvbihhLGMsZCl7cmV0dXJuIGM\/T2EudGVzdChtLmNzcyhhLCJkaXNwbGF5IikpJiYwPT09YS5vZmZzZXRXaWR0aD9tLnN3YXAoYSxSYSxmdW5jdGlvbigpe3JldHVybiBZYShhLGIsZCl9KTpZYShhLGIsZCk6dm9pZCAwfSxzZXQ6ZnVuY3Rpb24oYSxjLGQpe3ZhciBlPWQmJklhKGEpO3JldHVybiBXYShhLGMsZD9YYShhLGIsZCxrLmJveFNpemluZyYmImJvcmRlci1ib3giPT09bS5jc3MoYSwiYm94U2l6aW5nIiwhMSxlKSxlKTowKX19fSksay5vcGFjaXR5fHwobS5jc3NIb29rcy5vcGFjaXR5PXtnZXQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gTmEudGVzdCgoYiYmYS5jdXJyZW50U3R5bGU\/YS5jdXJyZW50U3R5bGUuZmlsdGVyOmEuc3R5bGUuZmlsdGVyKXx8IiIpPy4wMSpwYXJzZUZsb2F0KFJlZ0V4cC4kMSkrIiI6Yj8iMSI6IiJ9LHNldDpmdW5jdGlvbihhLGIpe3ZhciBjPWEuc3R5bGUsZD1hLmN1cnJlbnRTdHlsZSxlPW0uaXNOdW1lcmljKGIpPyJhbHBoYShvcGFjaXR5PSIrMTAwKmIrIikiOiIiLGY9ZCYmZC5maWx0ZXJ8fGMuZmlsdGVyfHwiIjtjLnpvb209MSwoYj49MXx8IiI9PT1iKSYmIiI9PT1tLnRyaW0oZi5yZXBsYWNlKE1hLCIiKSkmJmMucmVtb3ZlQXR0cmlidXRlJiYoYy5yZW1vdmVBdHRyaWJ1dGUoImZpbHRlciIpLCIiPT09Ynx8ZCYmIWQuZmlsdGVyKXx8KGMuZmlsdGVyPU1hLnRlc3QoZik\/Zi5yZXBsYWNlKE1hLGUpOmYrIiAiK2UpfX0pLG0uY3NzSG9va3MubWFyZ2luUmlnaHQ9TGEoay5yZWxpYWJsZU1hcmdpblJpZ2h0LGZ1bmN0aW9uKGEsYil7cmV0dXJuIGI\/bS5zd2FwKGEse2Rpc3BsYXk6ImlubGluZS1ibG9jayJ9LEphLFthLCJtYXJnaW5SaWdodCJdKTp2b2lkIDB9KSxtLmVhY2goe21hcmdpbjoiIixwYWRkaW5nOiIiLGJvcmRlcjoiV2lkdGgifSxmdW5jdGlvbihhLGIpe20uY3NzSG9va3NbYStiXT17ZXhwYW5kOmZ1bmN0aW9uKGMpe2Zvcih2YXIgZD0wLGU9e30sZj0ic3RyaW5nIj09dHlwZW9mIGM\/Yy5zcGxpdCgiICIpOltjXTs0PmQ7ZCsrKWVbYStUW2RdK2JdPWZbZF18fGZbZC0yXXx8ZlswXTtyZXR1cm4gZX19LEdhLnRlc3QoYSl8fChtLmNzc0hvb2tzW2ErYl0uc2V0PVdhKX0pLG0uZm4uZXh0ZW5kKHtjc3M6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVih0aGlzLGZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGY9e30sZz0wO2lmKG0uaXNBcnJheShiKSl7Zm9yKGQ9SWEoYSksZT1iLmxlbmd0aDtlPmc7ZysrKWZbYltnXV09bS5jc3MoYSxiW2ddLCExLGQpO3JldHVybiBmfXJldHVybiB2b2lkIDAhPT1jP20uc3R5bGUoYSxiLGMpOm0uY3NzKGEsYil9LGEsYixhcmd1bWVudHMubGVuZ3RoPjEpfSxzaG93OmZ1bmN0aW9uKCl7cmV0dXJuIFZhKHRoaXMsITApfSxoaWRlOmZ1bmN0aW9uKCl7cmV0dXJuIFZhKHRoaXMpfSx0b2dnbGU6ZnVuY3Rpb24oYSl7cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgYT9hP3RoaXMuc2hvdygpOnRoaXMuaGlkZSgpOnRoaXMuZWFjaChmdW5jdGlvbigpe1UodGhpcyk\/bSh0aGlzKS5zaG93KCk6bSh0aGlzKS5oaWRlKCl9KX19KTtmdW5jdGlvbiBaYShhLGIsYyxkLGUpewpyZXR1cm4gbmV3IFphLnByb3RvdHlwZS5pbml0KGEsYixjLGQsZSl9bS5Ud2Vlbj1aYSxaYS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlphLGluaXQ6ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3RoaXMuZWxlbT1hLHRoaXMucHJvcD1jLHRoaXMuZWFzaW5nPWV8fCJzd2luZyIsdGhpcy5vcHRpb25zPWIsdGhpcy5zdGFydD10aGlzLm5vdz10aGlzLmN1cigpLHRoaXMuZW5kPWQsdGhpcy51bml0PWZ8fChtLmNzc051bWJlcltjXT8iIjoicHgiKX0sY3VyOmZ1bmN0aW9uKCl7dmFyIGE9WmEucHJvcEhvb2tzW3RoaXMucHJvcF07cmV0dXJuIGEmJmEuZ2V0P2EuZ2V0KHRoaXMpOlphLnByb3BIb29rcy5fZGVmYXVsdC5nZXQodGhpcyl9LHJ1bjpmdW5jdGlvbihhKXt2YXIgYixjPVphLnByb3BIb29rc1t0aGlzLnByb3BdO3JldHVybiB0aGlzLm9wdGlvbnMuZHVyYXRpb24\/dGhpcy5wb3M9Yj1tLmVhc2luZ1t0aGlzLmVhc2luZ10oYSx0aGlzLm9wdGlvbnMuZHVyYXRpb24qYSwwLDEsdGhpcy5vcHRpb25zLmR1cmF0aW9uKTp0aGlzLnBvcz1iPWEsdGhpcy5ub3c9KHRoaXMuZW5kLXRoaXMuc3RhcnQpKmIrdGhpcy5zdGFydCx0aGlzLm9wdGlvbnMuc3RlcCYmdGhpcy5vcHRpb25zLnN0ZXAuY2FsbCh0aGlzLmVsZW0sdGhpcy5ub3csdGhpcyksYyYmYy5zZXQ\/Yy5zZXQodGhpcyk6WmEucHJvcEhvb2tzLl9kZWZhdWx0LnNldCh0aGlzKSx0aGlzfX0sWmEucHJvdG90eXBlLmluaXQucHJvdG90eXBlPVphLnByb3RvdHlwZSxaYS5wcm9wSG9va3M9e19kZWZhdWx0OntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI7cmV0dXJuIG51bGw9PWEuZWxlbVthLnByb3BdfHxhLmVsZW0uc3R5bGUmJm51bGwhPWEuZWxlbS5zdHlsZVthLnByb3BdPyhiPW0uY3NzKGEuZWxlbSxhLnByb3AsIiIpLGImJiJhdXRvIiE9PWI\/YjowKTphLmVsZW1bYS5wcm9wXX0sc2V0OmZ1bmN0aW9uKGEpe20uZnguc3RlcFthLnByb3BdP20uZnguc3RlcFthLnByb3BdKGEpOmEuZWxlbS5zdHlsZSYmKG51bGwhPWEuZWxlbS5zdHlsZVttLmNzc1Byb3BzW2EucHJvcF1dfHxtLmNzc0hvb2tzW2EucHJvcF0pP20uc3R5bGUoYS5lbGVtLGEucHJvcCxhLm5vdythLnVuaXQpOmEuZWxlbVthLnByb3BdPWEubm93fX19LFphLnByb3BIb29rcy5zY3JvbGxUb3A9WmEucHJvcEhvb2tzLnNjcm9sbExlZnQ9e3NldDpmdW5jdGlvbihhKXthLmVsZW0ubm9kZVR5cGUmJmEuZWxlbS5wYXJlbnROb2RlJiYoYS5lbGVtW2EucHJvcF09YS5ub3cpfX0sbS5lYXNpbmc9e2xpbmVhcjpmdW5jdGlvbihhKXtyZXR1cm4gYX0sc3dpbmc6ZnVuY3Rpb24oYSl7cmV0dXJuLjUtTWF0aC5jb3MoYSpNYXRoLlBJKS8yfX0sbS5meD1aYS5wcm90b3R5cGUuaW5pdCxtLmZ4LnN0ZXA9e307dmFyICRhLF9hLGFiPS9eKD86dG9nZ2xlfHNob3d8aGlkZSkkLyxiYj1uZXcgUmVnRXhwKCJeKD86KFsrLV0pPXwpKCIrUysiKShbYS16JV0qKSQiLCJpIiksY2I9L3F1ZXVlSG9va3MkLyxkYj1baWJdLGViPXsiKiI6W2Z1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5jcmVhdGVUd2VlbihhLGIpLGQ9Yy5jdXIoKSxlPWJiLmV4ZWMoYiksZj1lJiZlWzNdfHwobS5jc3NOdW1iZXJbYV0\/IiI6InB4IiksZz0obS5jc3NOdW1iZXJbYV18fCJweCIhPT1mJiYrZCkmJmJiLmV4ZWMobS5jc3MoYy5lbGVtLGEpKSxoPTEsaT0yMDtpZihnJiZnWzNdIT09Zil7Zj1mfHxnWzNdLGU9ZXx8W10sZz0rZHx8MTtkbyBoPWh8fCIuNSIsZy89aCxtLnN0eWxlKGMuZWxlbSxhLGcrZik7d2hpbGUoaCE9PShoPWMuY3VyKCkvZCkmJjEhPT1oJiYtLWkpfXJldHVybiBlJiYoZz1jLnN0YXJ0PStnfHwrZHx8MCxjLnVuaXQ9ZixjLmVuZD1lWzFdP2crKGVbMV0rMSkqZVsyXTorZVsyXSksY31dfTtmdW5jdGlvbiBmYigpe3JldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7JGE9dm9pZCAwfSksJGE9bS5ub3coKX1mdW5jdGlvbiBnYihhLGIpe3ZhciBjLGQ9e2hlaWdodDphfSxlPTA7Zm9yKGI9Yj8xOjA7ND5lO2UrPTItYiljPVRbZV0sZFsibWFyZ2luIitjXT1kWyJwYWRkaW5nIitjXT1hO3JldHVybiBiJiYoZC5vcGFjaXR5PWQud2lkdGg9YSksZH1mdW5jdGlvbiBoYihhLGIsYyl7Zm9yKHZhciBkLGU9KGViW2JdfHxbXSkuY29uY2F0KGViWyIqIl0pLGY9MCxnPWUubGVuZ3RoO2c+ZjtmKyspaWYoZD1lW2ZdLmNhbGwoYyxiLGEpKXJldHVybiBkfWZ1bmN0aW9uIGliKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixsLG49dGhpcyxvPXt9LHA9YS5zdHlsZSxxPWEubm9kZVR5cGUmJlUoYSkscj1tLl9kYXRhKGEsImZ4c2hvdyIpO2MucXVldWV8fChoPW0uX3F1ZXVlSG9va3MoYSwiZngiKSxudWxsPT1oLnVucXVldWVkJiYoaC51bnF1ZXVlZD0wLGk9aC5lbXB0eS5maXJlLGguZW1wdHkuZmlyZT1mdW5jdGlvbigpe2gudW5xdWV1ZWR8fGkoKX0pLGgudW5xdWV1ZWQrKyxuLmFsd2F5cyhmdW5jdGlvbigpe24uYWx3YXlzKGZ1bmN0aW9uKCl7aC51bnF1ZXVlZC0tLG0ucXVldWUoYSwiZngiKS5sZW5ndGh8fGguZW1wdHkuZmlyZSgpfSl9KSksMT09PWEubm9kZVR5cGUmJigiaGVpZ2h0ImluIGJ8fCJ3aWR0aCJpbiBiKSYmKGMub3ZlcmZsb3c9W3Aub3ZlcmZsb3cscC5vdmVyZmxvd1gscC5vdmVyZmxvd1ldLGo9bS5jc3MoYSwiZGlzcGxheSIpLGw9Im5vbmUiPT09aj9tLl9kYXRhKGEsIm9sZGRpc3BsYXkiKXx8RmEoYS5ub2RlTmFtZSk6aiwiaW5saW5lIj09PWwmJiJub25lIj09PW0uY3NzKGEsImZsb2F0IikmJihrLmlubGluZUJsb2NrTmVlZHNMYXlvdXQmJiJpbmxpbmUiIT09RmEoYS5ub2RlTmFtZSk\/cC56b29tPTE6cC5kaXNwbGF5PSJpbmxpbmUtYmxvY2siKSksYy5vdmVyZmxvdyYmKHAub3ZlcmZsb3c9ImhpZGRlbiIsay5zaHJpbmtXcmFwQmxvY2tzKCl8fG4uYWx3YXlzKGZ1bmN0aW9uKCl7cC5vdmVyZmxvdz1jLm92ZXJmbG93WzBdLHAub3ZlcmZsb3dYPWMub3ZlcmZsb3dbMV0scC5vdmVyZmxvd1k9Yy5vdmVyZmxvd1syXX0pKTtmb3IoZCBpbiBiKWlmKGU9YltkXSxhYi5leGVjKGUpKXtpZihkZWxldGUgYltkXSxmPWZ8fCJ0b2dnbGUiPT09ZSxlPT09KHE\/ImhpZGUiOiJzaG93Iikpe2lmKCJzaG93IiE9PWV8fCFyfHx2b2lkIDA9PT1yW2RdKWNvbnRpbnVlO3E9ITB9b1tkXT1yJiZyW2RdfHxtLnN0eWxlKGEsZCl9ZWxzZSBqPXZvaWQgMDtpZihtLmlzRW1wdHlPYmplY3QobykpImlubGluZSI9PT0oIm5vbmUiPT09aj9GYShhLm5vZGVOYW1lKTpqKSYmKHAuZGlzcGxheT1qKTtlbHNle3I\/ImhpZGRlbiJpbiByJiYocT1yLmhpZGRlbik6cj1tLl9kYXRhKGEsImZ4c2hvdyIse30pLGYmJihyLmhpZGRlbj0hcSkscT9tKGEpLnNob3coKTpuLmRvbmUoZnVuY3Rpb24oKXttKGEpLmhpZGUoKX0pLG4uZG9uZShmdW5jdGlvbigpe3ZhciBiO20uX3JlbW92ZURhdGEoYSwiZnhzaG93Iik7Zm9yKGIgaW4gbyltLnN0eWxlKGEsYixvW2JdKX0pO2ZvcihkIGluIG8pZz1oYihxP3JbZF06MCxkLG4pLGQgaW4gcnx8KHJbZF09Zy5zdGFydCxxJiYoZy5lbmQ9Zy5zdGFydCxnLnN0YXJ0PSJ3aWR0aCI9PT1kfHwiaGVpZ2h0Ij09PWQ\/MTowKSl9fWZ1bmN0aW9uIGpiKGEsYil7dmFyIGMsZCxlLGYsZztmb3IoYyBpbiBhKWlmKGQ9bS5jYW1lbENhc2UoYyksZT1iW2RdLGY9YVtjXSxtLmlzQXJyYXkoZikmJihlPWZbMV0sZj1hW2NdPWZbMF0pLGMhPT1kJiYoYVtkXT1mLGRlbGV0ZSBhW2NdKSxnPW0uY3NzSG9va3NbZF0sZyYmImV4cGFuZCJpbiBnKXtmPWcuZXhwYW5kKGYpLGRlbGV0ZSBhW2RdO2ZvcihjIGluIGYpYyBpbiBhfHwoYVtjXT1mW2NdLGJbY109ZSl9ZWxzZSBiW2RdPWV9ZnVuY3Rpb24ga2IoYSxiLGMpe3ZhciBkLGUsZj0wLGc9ZGIubGVuZ3RoLGg9bS5EZWZlcnJlZCgpLmFsd2F5cyhmdW5jdGlvbigpe2RlbGV0ZSBpLmVsZW19KSxpPWZ1bmN0aW9uKCl7aWYoZSlyZXR1cm4hMTtmb3IodmFyIGI9JGF8fGZiKCksYz1NYXRoLm1heCgwLGouc3RhcnRUaW1lK2ouZHVyYXRpb24tYiksZD1jL2ouZHVyYXRpb258fDAsZj0xLWQsZz0wLGk9ai50d2VlbnMubGVuZ3RoO2k+ZztnKyspai50d2VlbnNbZ10ucnVuKGYpO3JldHVybiBoLm5vdGlmeVdpdGgoYSxbaixmLGNdKSwxPmYmJmk\/YzooaC5yZXNvbHZlV2l0aChhLFtqXSksITEpfSxqPWgucHJvbWlzZSh7ZWxlbTphLHByb3BzOm0uZXh0ZW5kKHt9LGIpLG9wdHM6bS5leHRlbmQoITAse3NwZWNpYWxFYXNpbmc6e319LGMpLG9yaWdpbmFsUHJvcGVydGllczpiLG9yaWdpbmFsT3B0aW9uczpjLHN0YXJ0VGltZTokYXx8ZmIoKSxkdXJhdGlvbjpjLmR1cmF0aW9uLHR3ZWVuczpbXSxjcmVhdGVUd2VlbjpmdW5jdGlvbihiLGMpe3ZhciBkPW0uVHdlZW4oYSxqLm9wdHMsYixjLGoub3B0cy5zcGVjaWFsRWFzaW5nW2JdfHxqLm9wdHMuZWFzaW5nKTtyZXR1cm4gai50d2VlbnMucHVzaChkKSxkfSxzdG9wOmZ1bmN0aW9uKGIpe3ZhciBjPTAsZD1iP2oudHdlZW5zLmxlbmd0aDowO2lmKGUpcmV0dXJuIHRoaXM7Zm9yKGU9ITA7ZD5jO2MrKylqLnR3ZWVuc1tjXS5ydW4oMSk7cmV0dXJuIGI\/aC5yZXNvbHZlV2l0aChhLFtqLGJdKTpoLnJlamVjdFdpdGgoYSxbaixiXSksdGhpc319KSxrPWoucHJvcHM7Zm9yKGpiKGssai5vcHRzLnNwZWNpYWxFYXNpbmcpO2c+ZjtmKyspaWYoZD1kYltmXS5jYWxsKGosYSxrLGoub3B0cykpcmV0dXJuIGQ7cmV0dXJuIG0ubWFwKGssaGIsaiksbS5pc0Z1bmN0aW9uKGoub3B0cy5zdGFydCkmJmoub3B0cy5zdGFydC5jYWxsKGEsaiksbS5meC50aW1lcihtLmV4dGVuZChpLHtlbGVtOmEsYW5pbTpqLHF1ZXVlOmoub3B0cy5xdWV1ZX0pKSxqLnByb2dyZXNzKGoub3B0cy5wcm9ncmVzcykuZG9uZShqLm9wdHMuZG9uZSxqLm9wdHMuY29tcGxldGUpLmZhaWwoai5vcHRzLmZhaWwpLmFsd2F5cyhqLm9wdHMuYWx3YXlzKX1tLkFuaW1hdGlvbj1tLmV4dGVuZChrYix7dHdlZW5lcjpmdW5jdGlvbihhLGIpe20uaXNGdW5jdGlvbihhKT8oYj1hLGE9WyIqIl0pOmE9YS5zcGxpdCgiICIpO2Zvcih2YXIgYyxkPTAsZT1hLmxlbmd0aDtlPmQ7ZCsrKWM9YVtkXSxlYltjXT1lYltjXXx8W10sZWJbY10udW5zaGlmdChiKX0scHJlZmlsdGVyOmZ1bmN0aW9uKGEsYil7Yj9kYi51bnNoaWZ0KGEpOmRiLnB1c2goYSl9fSksbS5zcGVlZD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSYmIm9iamVjdCI9PXR5cGVvZiBhP20uZXh0ZW5kKHt9LGEpOntjb21wbGV0ZTpjfHwhYyYmYnx8bS5pc0Z1bmN0aW9uKGEpJiZhLGR1cmF0aW9uOmEsZWFzaW5nOmMmJmJ8fGImJiFtLmlzRnVuY3Rpb24oYikmJmJ9O3JldHVybiBkLmR1cmF0aW9uPW0uZngub2ZmPzA6Im51bWJlciI9PXR5cGVvZiBkLmR1cmF0aW9uP2QuZHVyYXRpb246ZC5kdXJhdGlvbiBpbiBtLmZ4LnNwZWVkcz9tLmZ4LnNwZWVkc1tkLmR1cmF0aW9uXTptLmZ4LnNwZWVkcy5fZGVmYXVsdCwobnVsbD09ZC5xdWV1ZXx8ZC5xdWV1ZT09PSEwKSYmKGQucXVldWU9ImZ4IiksZC5vbGQ9ZC5jb21wbGV0ZSxkLmNvbXBsZXRlPWZ1bmN0aW9uKCl7bS5pc0Z1bmN0aW9uKGQub2xkKSYmZC5vbGQuY2FsbCh0aGlzKSxkLnF1ZXVlJiZtLmRlcXVldWUodGhpcyxkLnF1ZXVlKX0sZH0sbS5mbi5leHRlbmQoe2ZhZGVUbzpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gdGhpcy5maWx0ZXIoVSkuY3NzKCJvcGFjaXR5IiwwKS5zaG93KCkuZW5kKCkuYW5pbWF0ZSh7b3BhY2l0eTpifSxhLGMsZCl9LGFuaW1hdGU6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9bS5pc0VtcHR5T2JqZWN0KGEpLGY9bS5zcGVlZChiLGMsZCksZz1mdW5jdGlvbigpe3ZhciBiPWtiKHRoaXMsbS5leHRlbmQoe30sYSksZik7KGV8fG0uX2RhdGEodGhpcywiZmluaXNoIikpJiZiLnN0b3AoITApfTtyZXR1cm4gZy5maW5pc2g9ZyxlfHxmLnF1ZXVlPT09ITE\/dGhpcy5lYWNoKGcpOnRoaXMucXVldWUoZi5xdWV1ZSxnKX0sc3RvcDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5zdG9wO2RlbGV0ZSBhLnN0b3AsYihjKX07cmV0dXJuInN0cmluZyIhPXR5cGVvZiBhJiYoYz1iLGI9YSxhPXZvaWQgMCksYiYmYSE9PSExJiZ0aGlzLnF1ZXVlKGF8fCJmeCIsW10pLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPSEwLGU9bnVsbCE9YSYmYSsicXVldWVIb29rcyIsZj1tLnRpbWVycyxnPW0uX2RhdGEodGhpcyk7aWYoZSlnW2VdJiZnW2VdLnN0b3AmJmQoZ1tlXSk7ZWxzZSBmb3IoZSBpbiBnKWdbZV0mJmdbZV0uc3RvcCYmY2IudGVzdChlKSYmZChnW2VdKTtmb3IoZT1mLmxlbmd0aDtlLS07KWZbZV0uZWxlbSE9PXRoaXN8fG51bGwhPWEmJmZbZV0ucXVldWUhPT1hfHwoZltlXS5hbmltLnN0b3AoYyksYj0hMSxmLnNwbGljZShlLDEpKTsoYnx8IWMpJiZtLmRlcXVldWUodGhpcyxhKX0pfSxmaW5pc2g6ZnVuY3Rpb24oYSl7cmV0dXJuIGEhPT0hMSYmKGE9YXx8ImZ4IiksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGIsYz1tLl9kYXRhKHRoaXMpLGQ9Y1thKyJxdWV1ZSJdLGU9Y1thKyJxdWV1ZUhvb2tzIl0sZj1tLnRpbWVycyxnPWQ\/ZC5sZW5ndGg6MDtmb3IoYy5maW5pc2g9ITAsbS5xdWV1ZSh0aGlzLGEsW10pLGUmJmUuc3RvcCYmZS5zdG9wLmNhbGwodGhpcywhMCksYj1mLmxlbmd0aDtiLS07KWZbYl0uZWxlbT09PXRoaXMmJmZbYl0ucXVldWU9PT1hJiYoZltiXS5hbmltLnN0b3AoITApLGYuc3BsaWNlKGIsMSkpO2ZvcihiPTA7Zz5iO2IrKylkW2JdJiZkW2JdLmZpbmlzaCYmZFtiXS5maW5pc2guY2FsbCh0aGlzKTtkZWxldGUgYy5maW5pc2h9KX19KSxtLmVhY2goWyJ0b2dnbGUiLCJzaG93IiwiaGlkZSJdLGZ1bmN0aW9uKGEsYil7dmFyIGM9bS5mbltiXTttLmZuW2JdPWZ1bmN0aW9uKGEsZCxlKXtyZXR1cm4gbnVsbD09YXx8ImJvb2xlYW4iPT10eXBlb2YgYT9jLmFwcGx5KHRoaXMsYXJndW1lbnRzKTp0aGlzLmFuaW1hdGUoZ2IoYiwhMCksYSxkLGUpfX0pLG0uZWFjaCh7c2xpZGVEb3duOmdiKCJzaG93Iiksc2xpZGVVcDpnYigiaGlkZSIpLHNsaWRlVG9nZ2xlOmdiKCJ0b2dnbGUiKSxmYWRlSW46e29wYWNpdHk6InNob3cifSxmYWRlT3V0OntvcGFjaXR5OiJoaWRlIn0sZmFkZVRvZ2dsZTp7b3BhY2l0eToidG9nZ2xlIn19LGZ1bmN0aW9uKGEsYil7bS5mblthXT1mdW5jdGlvbihhLGMsZCl7cmV0dXJuIHRoaXMuYW5pbWF0ZShiLGEsYyxkKX19KSxtLnRpbWVycz1bXSxtLmZ4LnRpY2s9ZnVuY3Rpb24oKXt2YXIgYSxiPW0udGltZXJzLGM9MDtmb3IoJGE9bS5ub3coKTtjPGIubGVuZ3RoO2MrKylhPWJbY10sYSgpfHxiW2NdIT09YXx8Yi5zcGxpY2UoYy0tLDEpO2IubGVuZ3RofHxtLmZ4LnN0b3AoKSwkYT12b2lkIDB9LG0uZngudGltZXI9ZnVuY3Rpb24oYSl7bS50aW1lcnMucHVzaChhKSxhKCk\/bS5meC5zdGFydCgpOm0udGltZXJzLnBvcCgpfSxtLmZ4LmludGVydmFsPTEzLG0uZnguc3RhcnQ9ZnVuY3Rpb24oKXtfYXx8KF9hPXNldEludGVydmFsKG0uZngudGljayxtLmZ4LmludGVydmFsKSl9LG0uZnguc3RvcD1mdW5jdGlvbigpe2NsZWFySW50ZXJ2YWwoX2EpLF9hPW51bGx9LG0uZnguc3BlZWRzPXtzbG93OjYwMCxmYXN0OjIwMCxfZGVmYXVsdDo0MDB9LG0uZm4uZGVsYXk9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT1tLmZ4P20uZnguc3BlZWRzW2FdfHxhOmEsYj1ifHwiZngiLHRoaXMucXVldWUoYixmdW5jdGlvbihiLGMpe3ZhciBkPXNldFRpbWVvdXQoYixhKTtjLnN0b3A9ZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQoZCl9fSl9LGZ1bmN0aW9uKCl7dmFyIGEsYixjLGQsZTtiPXkuY3JlYXRlRWxlbWVudCgiZGl2IiksYi5zZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIsInQiKSxiLmlubmVySFRNTD0iICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0nL2EnPmE8L2E+PGlucHV0IHR5cGU9J2NoZWNrYm94Jy8+IixkPWIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXSxjPXkuY3JlYXRlRWxlbWVudCgic2VsZWN0IiksZT1jLmFwcGVuZENoaWxkKHkuY3JlYXRlRWxlbWVudCgib3B0aW9uIikpLGE9Yi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKVswXSxkLnN0eWxlLmNzc1RleHQ9InRvcDoxcHgiLGsuZ2V0U2V0QXR0cmlidXRlPSJ0IiE9PWIuY2xhc3NOYW1lLGsuc3R5bGU9L3RvcC8udGVzdChkLmdldEF0dHJpYnV0ZSgic3R5bGUiKSksay5ocmVmTm9ybWFsaXplZD0iL2EiPT09ZC5nZXRBdHRyaWJ1dGUoImhyZWYiKSxrLmNoZWNrT249ISFhLnZhbHVlLGsub3B0U2VsZWN0ZWQ9ZS5zZWxlY3RlZCxrLmVuY3R5cGU9ISF5LmNyZWF0ZUVsZW1lbnQoImZvcm0iKS5lbmN0eXBlLGMuZGlzYWJsZWQ9ITAsay5vcHREaXNhYmxlZD0hZS5kaXNhYmxlZCxhPXkuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSxhLnNldEF0dHJpYnV0ZSgidmFsdWUiLCIiKSxrLmlucHV0PSIiPT09YS5nZXRBdHRyaWJ1dGUoInZhbHVlIiksYS52YWx1ZT0idCIsYS5zZXRBdHRyaWJ1dGUoInR5cGUiLCJyYWRpbyIpLGsucmFkaW9WYWx1ZT0idCI9PT1hLnZhbHVlfSgpO3ZhciBsYj0vXHIvZzttLmZuLmV4dGVuZCh7dmFsOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlPXRoaXNbMF07e2lmKGFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9bS5pc0Z1bmN0aW9uKGEpLHRoaXMuZWFjaChmdW5jdGlvbihjKXt2YXIgZTsxPT09dGhpcy5ub2RlVHlwZSYmKGU9ZD9hLmNhbGwodGhpcyxjLG0odGhpcykudmFsKCkpOmEsbnVsbD09ZT9lPSIiOiJudW1iZXIiPT10eXBlb2YgZT9lKz0iIjptLmlzQXJyYXkoZSkmJihlPW0ubWFwKGUsZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE\/IiI6YSsiIn0pKSxiPW0udmFsSG9va3NbdGhpcy50eXBlXXx8bS52YWxIb29rc1t0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldLGImJiJzZXQiaW4gYiYmdm9pZCAwIT09Yi5zZXQodGhpcyxlLCJ2YWx1ZSIpfHwodGhpcy52YWx1ZT1lKSl9KTtpZihlKXJldHVybiBiPW0udmFsSG9va3NbZS50eXBlXXx8bS52YWxIb29rc1tlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldLGImJiJnZXQiaW4gYiYmdm9pZCAwIT09KGM9Yi5nZXQoZSwidmFsdWUiKSk\/YzooYz1lLnZhbHVlLCJzdHJpbmciPT10eXBlb2YgYz9jLnJlcGxhY2UobGIsIiIpOm51bGw9PWM\/IiI6Yyl9fX0pLG0uZXh0ZW5kKHt2YWxIb29rczp7b3B0aW9uOntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9bS5maW5kLmF0dHIoYSwidmFsdWUiKTtyZXR1cm4gbnVsbCE9Yj9iOm0udHJpbShtLnRleHQoYSkpfX0sc2VsZWN0OntnZXQ6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiLGMsZD1hLm9wdGlvbnMsZT1hLnNlbGVjdGVkSW5kZXgsZj0ic2VsZWN0LW9uZSI9PT1hLnR5cGV8fDA+ZSxnPWY\/bnVsbDpbXSxoPWY\/ZSsxOmQubGVuZ3RoLGk9MD5lP2g6Zj9lOjA7aD5pO2krKylpZihjPWRbaV0sISghYy5zZWxlY3RlZCYmaSE9PWV8fChrLm9wdERpc2FibGVkP2MuZGlzYWJsZWQ6bnVsbCE9PWMuZ2V0QXR0cmlidXRlKCJkaXNhYmxlZCIpKXx8Yy5wYXJlbnROb2RlLmRpc2FibGVkJiZtLm5vZGVOYW1lKGMucGFyZW50Tm9kZSwib3B0Z3JvdXAiKSkpe2lmKGI9bShjKS52YWwoKSxmKXJldHVybiBiO2cucHVzaChiKX1yZXR1cm4gZ30sc2V0OmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlPWEub3B0aW9ucyxmPW0ubWFrZUFycmF5KGIpLGc9ZS5sZW5ndGg7d2hpbGUoZy0tKWlmKGQ9ZVtnXSxtLmluQXJyYXkobS52YWxIb29rcy5vcHRpb24uZ2V0KGQpLGYpPj0wKXRyeXtkLnNlbGVjdGVkPWM9ITB9Y2F0Y2goaCl7ZC5zY3JvbGxIZWlnaHR9ZWxzZSBkLnNlbGVjdGVkPSExO3JldHVybiBjfHwoYS5zZWxlY3RlZEluZGV4PS0xKSxlfX19fSksbS5lYWNoKFsicmFkaW8iLCJjaGVja2JveCJdLGZ1bmN0aW9uKCl7bS52YWxIb29rc1t0aGlzXT17c2V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIG0uaXNBcnJheShiKT9hLmNoZWNrZWQ9bS5pbkFycmF5KG0oYSkudmFsKCksYik+PTA6dm9pZCAwfX0say5jaGVja09ufHwobS52YWxIb29rc1t0aGlzXS5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PT1hLmdldEF0dHJpYnV0ZSgidmFsdWUiKT8ib24iOmEudmFsdWV9KX0pO3ZhciBtYixuYixvYj1tLmV4cHIuYXR0ckhhbmRsZSxwYj0vXig\/OmNoZWNrZWR8c2VsZWN0ZWQpJC9pLHFiPWsuZ2V0U2V0QXR0cmlidXRlLHJiPWsuaW5wdXQ7bS5mbi5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVih0aGlzLG0uYXR0cixhLGIsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7bS5yZW1vdmVBdHRyKHRoaXMsYSl9KX19KSxtLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmPWEubm9kZVR5cGU7aWYoYSYmMyE9PWYmJjghPT1mJiYyIT09ZilyZXR1cm4gdHlwZW9mIGEuZ2V0QXR0cmlidXRlPT09Sz9tLnByb3AoYSxiLGMpOigxPT09ZiYmbS5pc1hNTERvYyhhKXx8KGI9Yi50b0xvd2VyQ2FzZSgpLGQ9bS5hdHRySG9va3NbYl18fChtLmV4cHIubWF0Y2guYm9vbC50ZXN0KGIpP25iOm1iKSksdm9pZCAwPT09Yz9kJiYiZ2V0ImluIGQmJm51bGwhPT0oZT1kLmdldChhLGIpKT9lOihlPW0uZmluZC5hdHRyKGEsYiksbnVsbD09ZT92b2lkIDA6ZSk6bnVsbCE9PWM\/ZCYmInNldCJpbiBkJiZ2b2lkIDAhPT0oZT1kLnNldChhLGMsYikpP2U6KGEuc2V0QXR0cmlidXRlKGIsYysiIiksYyk6dm9pZCBtLnJlbW92ZUF0dHIoYSxiKSl9LHJlbW92ZUF0dHI6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGU9MCxmPWImJmIubWF0Y2goRSk7aWYoZiYmMT09PWEubm9kZVR5cGUpd2hpbGUoYz1mW2UrK10pZD1tLnByb3BGaXhbY118fGMsbS5leHByLm1hdGNoLmJvb2wudGVzdChjKT9yYiYmcWJ8fCFwYi50ZXN0KGMpP2FbZF09ITE6YVttLmNhbWVsQ2FzZSgiZGVmYXVsdC0iK2MpXT1hW2RdPSExOm0uYXR0cihhLGMsIiIpLGEucmVtb3ZlQXR0cmlidXRlKHFiP2M6ZCl9LGF0dHJIb29rczp7dHlwZTp7c2V0OmZ1bmN0aW9uKGEsYil7aWYoIWsucmFkaW9WYWx1ZSYmInJhZGlvIj09PWImJm0ubm9kZU5hbWUoYSwiaW5wdXQiKSl7dmFyIGM9YS52YWx1ZTtyZXR1cm4gYS5zZXRBdHRyaWJ1dGUoInR5cGUiLGIpLGMmJihhLnZhbHVlPWMpLGJ9fX19fSksbmI9e3NldDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGI9PT0hMT9tLnJlbW92ZUF0dHIoYSxjKTpyYiYmcWJ8fCFwYi50ZXN0KGMpP2Euc2V0QXR0cmlidXRlKCFxYiYmbS5wcm9wRml4W2NdfHxjLGMpOmFbbS5jYW1lbENhc2UoImRlZmF1bHQtIitjKV09YVtjXT0hMCxjfX0sbS5lYWNoKG0uZXhwci5tYXRjaC5ib29sLnNvdXJjZS5tYXRjaCgvXHcrL2cpLGZ1bmN0aW9uKGEsYil7dmFyIGM9b2JbYl18fG0uZmluZC5hdHRyO29iW2JdPXJiJiZxYnx8IXBiLnRlc3QoYik\/ZnVuY3Rpb24oYSxiLGQpe3ZhciBlLGY7cmV0dXJuIGR8fChmPW9iW2JdLG9iW2JdPWUsZT1udWxsIT1jKGEsYixkKT9iLnRvTG93ZXJDYXNlKCk6bnVsbCxvYltiXT1mKSxlfTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGM\/dm9pZCAwOmFbbS5jYW1lbENhc2UoImRlZmF1bHQtIitiKV0\/Yi50b0xvd2VyQ2FzZSgpOm51bGx9fSkscmImJnFifHwobS5hdHRySG9va3MudmFsdWU9e3NldDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIG0ubm9kZU5hbWUoYSwiaW5wdXQiKT92b2lkKGEuZGVmYXVsdFZhbHVlPWIpOm1iJiZtYi5zZXQoYSxiLGMpfX0pLHFifHwobWI9e3NldDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YS5nZXRBdHRyaWJ1dGVOb2RlKGMpO3JldHVybiBkfHxhLnNldEF0dHJpYnV0ZU5vZGUoZD1hLm93bmVyRG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlKGMpKSxkLnZhbHVlPWIrPSIiLCJ2YWx1ZSI9PT1jfHxiPT09YS5nZXRBdHRyaWJ1dGUoYyk\/Yjp2b2lkIDB9fSxvYi5pZD1vYi5uYW1lPW9iLmNvb3Jkcz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ7cmV0dXJuIGM\/dm9pZCAwOihkPWEuZ2V0QXR0cmlidXRlTm9kZShiKSkmJiIiIT09ZC52YWx1ZT9kLnZhbHVlOm51bGx9LG0udmFsSG9va3MuYnV0dG9uPXtnZXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmdldEF0dHJpYnV0ZU5vZGUoYik7cmV0dXJuIGMmJmMuc3BlY2lmaWVkP2MudmFsdWU6dm9pZCAwfSxzZXQ6bWIuc2V0fSxtLmF0dHJIb29rcy5jb250ZW50ZWRpdGFibGU9e3NldDpmdW5jdGlvbihhLGIsYyl7bWIuc2V0KGEsIiI9PT1iPyExOmIsYyl9fSxtLmVhY2goWyJ3aWR0aCIsImhlaWdodCJdLGZ1bmN0aW9uKGEsYil7bS5hdHRySG9va3NbYl09e3NldDpmdW5jdGlvbihhLGMpe3JldHVybiIiPT09Yz8oYS5zZXRBdHRyaWJ1dGUoYiwiYXV0byIpLGMpOnZvaWQgMH19fSkpLGsuc3R5bGV8fChtLmF0dHJIb29rcy5zdHlsZT17Z2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhLnN0eWxlLmNzc1RleHR8fHZvaWQgMH0sc2V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuc3R5bGUuY3NzVGV4dD1iKyIifX0pO3ZhciBzYj0vXig\/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b258b2JqZWN0KSQvaSx0Yj0vXig\/OmF8YXJlYSkkL2k7bS5mbi5leHRlbmQoe3Byb3A6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVih0aGlzLG0ucHJvcCxhLGIsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlUHJvcDpmdW5jdGlvbihhKXtyZXR1cm4gYT1tLnByb3BGaXhbYV18fGEsdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dHJ5e3RoaXNbYV09dm9pZCAwLGRlbGV0ZSB0aGlzW2FdfWNhdGNoKGIpe319KX19KSxtLmV4dGVuZCh7cHJvcEZpeDp7ImZvciI6Imh0bWxGb3IiLCJjbGFzcyI6ImNsYXNzTmFtZSJ9LHByb3A6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnPWEubm9kZVR5cGU7aWYoYSYmMyE9PWcmJjghPT1nJiYyIT09ZylyZXR1cm4gZj0xIT09Z3x8IW0uaXNYTUxEb2MoYSksZiYmKGI9bS5wcm9wRml4W2JdfHxiLGU9bS5wcm9wSG9va3NbYl0pLHZvaWQgMCE9PWM\/ZSYmInNldCJpbiBlJiZ2b2lkIDAhPT0oZD1lLnNldChhLGMsYikpP2Q6YVtiXT1jOmUmJiJnZXQiaW4gZSYmbnVsbCE9PShkPWUuZ2V0KGEsYikpP2Q6YVtiXX0scHJvcEhvb2tzOnt0YWJJbmRleDp7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiPW0uZmluZC5hdHRyKGEsInRhYmluZGV4Iik7cmV0dXJuIGI\/cGFyc2VJbnQoYiwxMCk6c2IudGVzdChhLm5vZGVOYW1lKXx8dGIudGVzdChhLm5vZGVOYW1lKSYmYS5ocmVmPzA6LTF9fX19KSxrLmhyZWZOb3JtYWxpemVkfHxtLmVhY2goWyJocmVmIiwic3JjIl0sZnVuY3Rpb24oYSxiKXttLnByb3BIb29rc1tiXT17Z2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZShiLDQpfX19KSxrLm9wdFNlbGVjdGVkfHwobS5wcm9wSG9va3Muc2VsZWN0ZWQ9e2dldDpmdW5jdGlvbihhKXt2YXIgYj1hLnBhcmVudE5vZGU7cmV0dXJuIGImJihiLnNlbGVjdGVkSW5kZXgsYi5wYXJlbnROb2RlJiZiLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCksbnVsbH19KSxtLmVhY2goWyJ0YWJJbmRleCIsInJlYWRPbmx5IiwibWF4TGVuZ3RoIiwiY2VsbFNwYWNpbmciLCJjZWxsUGFkZGluZyIsInJvd1NwYW4iLCJjb2xTcGFuIiwidXNlTWFwIiwiZnJhbWVCb3JkZXIiLCJjb250ZW50RWRpdGFibGUiXSxmdW5jdGlvbigpe20ucHJvcEZpeFt0aGlzLnRvTG93ZXJDYXNlKCldPXRoaXN9KSxrLmVuY3R5cGV8fChtLnByb3BGaXguZW5jdHlwZT0iZW5jb2RpbmciKTt2YXIgdWI9L1tcdFxyXG5cZl0vZzttLmZuLmV4dGVuZCh7YWRkQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGg9MCxpPXRoaXMubGVuZ3RoLGo9InN0cmluZyI9PXR5cGVvZiBhJiZhO2lmKG0uaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe20odGhpcykuYWRkQ2xhc3MoYS5jYWxsKHRoaXMsYix0aGlzLmNsYXNzTmFtZSkpfSk7aWYoailmb3IoYj0oYXx8IiIpLm1hdGNoKEUpfHxbXTtpPmg7aCsrKWlmKGM9dGhpc1toXSxkPTE9PT1jLm5vZGVUeXBlJiYoYy5jbGFzc05hbWU\/KCIgIitjLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UodWIsIiAiKToiICIpKXtmPTA7d2hpbGUoZT1iW2YrK10pZC5pbmRleE9mKCIgIitlKyIgIik8MCYmKGQrPWUrIiAiKTtnPW0udHJpbShkKSxjLmNsYXNzTmFtZSE9PWcmJihjLmNsYXNzTmFtZT1nKX1yZXR1cm4gdGhpc30scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGg9MCxpPXRoaXMubGVuZ3RoLGo9MD09PWFyZ3VtZW50cy5sZW5ndGh8fCJzdHJpbmciPT10eXBlb2YgYSYmYTtpZihtLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXttKHRoaXMpLnJlbW92ZUNsYXNzKGEuY2FsbCh0aGlzLGIsdGhpcy5jbGFzc05hbWUpKX0pO2lmKGopZm9yKGI9KGF8fCIiKS5tYXRjaChFKXx8W107aT5oO2grKylpZihjPXRoaXNbaF0sZD0xPT09Yy5ub2RlVHlwZSYmKGMuY2xhc3NOYW1lPygiICIrYy5jbGFzc05hbWUrIiAiKS5yZXBsYWNlKHViLCIgIik6IiIpKXtmPTA7d2hpbGUoZT1iW2YrK10pd2hpbGUoZC5pbmRleE9mKCIgIitlKyIgIik+PTApZD1kLnJlcGxhY2UoIiAiK2UrIiAiLCIgIik7Zz1hP20udHJpbShkKToiIixjLmNsYXNzTmFtZSE9PWcmJihjLmNsYXNzTmFtZT1nKX1yZXR1cm4gdGhpc30sdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24oYSxiKXt2YXIgYz10eXBlb2YgYTtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBiJiYic3RyaW5nIj09PWM\/Yj90aGlzLmFkZENsYXNzKGEpOnRoaXMucmVtb3ZlQ2xhc3MoYSk6dGhpcy5lYWNoKG0uaXNGdW5jdGlvbihhKT9mdW5jdGlvbihjKXttKHRoaXMpLnRvZ2dsZUNsYXNzKGEuY2FsbCh0aGlzLGMsdGhpcy5jbGFzc05hbWUsYiksYil9OmZ1bmN0aW9uKCl7aWYoInN0cmluZyI9PT1jKXt2YXIgYixkPTAsZT1tKHRoaXMpLGY9YS5tYXRjaChFKXx8W107d2hpbGUoYj1mW2QrK10pZS5oYXNDbGFzcyhiKT9lLnJlbW92ZUNsYXNzKGIpOmUuYWRkQ2xhc3MoYil9ZWxzZShjPT09S3x8ImJvb2xlYW4iPT09YykmJih0aGlzLmNsYXNzTmFtZSYmbS5fZGF0YSh0aGlzLCJfX2NsYXNzTmFtZV9fIix0aGlzLmNsYXNzTmFtZSksdGhpcy5jbGFzc05hbWU9dGhpcy5jbGFzc05hbWV8fGE9PT0hMT8iIjptLl9kYXRhKHRoaXMsIl9fY2xhc3NOYW1lX18iKXx8IiIpfSl9LGhhc0NsYXNzOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0iICIrYSsiICIsYz0wLGQ9dGhpcy5sZW5ndGg7ZD5jO2MrKylpZigxPT09dGhpc1tjXS5ub2RlVHlwZSYmKCIgIit0aGlzW2NdLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UodWIsIiAiKS5pbmRleE9mKGIpPj0wKXJldHVybiEwO3JldHVybiExfX0pLG0uZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IGxvYWQgcmVzaXplIHNjcm9sbCB1bmxvYWQgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBlcnJvciBjb250ZXh0bWVudSIuc3BsaXQoIiAiKSxmdW5jdGlvbihhLGIpe20uZm5bYl09ZnVuY3Rpb24oYSxjKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4wP3RoaXMub24oYixudWxsLGEsYyk6dGhpcy50cmlnZ2VyKGIpfX0pLG0uZm4uZXh0ZW5kKHtob3ZlcjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm1vdXNlZW50ZXIoYSkubW91c2VsZWF2ZShifHxhKX0sYmluZDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMub24oYSxudWxsLGIsYyl9LHVuYmluZDpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm9mZihhLG51bGwsYil9LGRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLm9uKGIsYSxjLGQpfSx1bmRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg\/dGhpcy5vZmYoYSwiKioiKTp0aGlzLm9mZihiLGF8fCIqKiIsYyl9fSk7dmFyIHZiPW0ubm93KCksd2I9L1w\/Lyx4Yj0vKCwpfChcW3x7KXwofXxdKXwiKD86W14iXFxcclxuXXxcXFsiXFxcL2JmbnJ0XXxcXHVbXGRhLWZBLUZdezR9KSoiXHMqOj98dHJ1ZXxmYWxzZXxudWxsfC0\/KD8hMFxkKVxkKyg\/OlwuXGQrfCkoPzpbZUVdWystXT9cZCt8KS9nO20ucGFyc2VKU09OPWZ1bmN0aW9uKGIpe2lmKGEuSlNPTiYmYS5KU09OLnBhcnNlKXJldHVybiBhLkpTT04ucGFyc2UoYisiIik7dmFyIGMsZD1udWxsLGU9bS50cmltKGIrIiIpO3JldHVybiBlJiYhbS50cmltKGUucmVwbGFjZSh4YixmdW5jdGlvbihhLGIsZSxmKXtyZXR1cm4gYyYmYiYmKGQ9MCksMD09PWQ\/YTooYz1lfHxiLGQrPSFmLSFlLCIiKX0pKT9GdW5jdGlvbigicmV0dXJuICIrZSkoKTptLmVycm9yKCJJbnZhbGlkIEpTT046ICIrYil9LG0ucGFyc2VYTUw9ZnVuY3Rpb24oYil7dmFyIGMsZDtpZighYnx8InN0cmluZyIhPXR5cGVvZiBiKXJldHVybiBudWxsO3RyeXthLkRPTVBhcnNlcj8oZD1uZXcgRE9NUGFyc2VyLGM9ZC5wYXJzZUZyb21TdHJpbmcoYiwidGV4dC94bWwiKSk6KGM9bmV3IEFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxET00iKSxjLmFzeW5jPSJmYWxzZSIsYy5sb2FkWE1MKGIpKX1jYXRjaChlKXtjPXZvaWQgMH1yZXR1cm4gYyYmYy5kb2N1bWVudEVsZW1lbnQmJiFjLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwYXJzZXJlcnJvciIpLmxlbmd0aHx8bS5lcnJvcigiSW52YWxpZCBYTUw6ICIrYiksY307dmFyIHliLHpiLEFiPS8jLiokLyxCYj0vKFs\/Jl0pXz1bXiZdKi8sQ2I9L14oLio\/KTpbIFx0XSooW15cclxuXSopXHI\/JC9nbSxEYj0vXig\/OmFib3V0fGFwcHxhcHAtc3RvcmFnZXwuKy1leHRlbnNpb258ZmlsZXxyZXN8d2lkZ2V0KTokLyxFYj0vXig\/OkdFVHxIRUFEKSQvLEZiPS9eXC9cLy8sR2I9L14oW1x3ListXSs6KSg\/OlwvXC8oPzpbXlwvPyNdKkB8KShbXlwvPyM6XSopKD86OihcZCspfCl8KS8sSGI9e30sSWI9e30sSmI9IiovIi5jb25jYXQoIioiKTt0cnl7emI9bG9jYXRpb24uaHJlZn1jYXRjaChLYil7emI9eS5jcmVhdGVFbGVtZW50KCJhIiksemIuaHJlZj0iIix6Yj16Yi5ocmVmfXliPUdiLmV4ZWMoemIudG9Mb3dlckNhc2UoKSl8fFtdO2Z1bmN0aW9uIExiKGEpe3JldHVybiBmdW5jdGlvbihiLGMpeyJzdHJpbmciIT10eXBlb2YgYiYmKGM9YixiPSIqIik7dmFyIGQsZT0wLGY9Yi50b0xvd2VyQ2FzZSgpLm1hdGNoKEUpfHxbXTtpZihtLmlzRnVuY3Rpb24oYykpd2hpbGUoZD1mW2UrK10pIisiPT09ZC5jaGFyQXQoMCk\/KGQ9ZC5zbGljZSgxKXx8IioiLChhW2RdPWFbZF18fFtdKS51bnNoaWZ0KGMpKTooYVtkXT1hW2RdfHxbXSkucHVzaChjKX19ZnVuY3Rpb24gTWIoYSxiLGMsZCl7dmFyIGU9e30sZj1hPT09SWI7ZnVuY3Rpb24gZyhoKXt2YXIgaTtyZXR1cm4gZVtoXT0hMCxtLmVhY2goYVtoXXx8W10sZnVuY3Rpb24oYSxoKXt2YXIgaj1oKGIsYyxkKTtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGp8fGZ8fGVbal0\/Zj8hKGk9aik6dm9pZCAwOihiLmRhdGFUeXBlcy51bnNoaWZ0KGopLGcoaiksITEpfSksaX1yZXR1cm4gZyhiLmRhdGFUeXBlc1swXSl8fCFlWyIqIl0mJmcoIioiKX1mdW5jdGlvbiBOYihhLGIpe3ZhciBjLGQsZT1tLmFqYXhTZXR0aW5ncy5mbGF0T3B0aW9uc3x8e307Zm9yKGQgaW4gYil2b2lkIDAhPT1iW2RdJiYoKGVbZF0\/YTpjfHwoYz17fSkpW2RdPWJbZF0pO3JldHVybiBjJiZtLmV4dGVuZCghMCxhLGMpLGF9ZnVuY3Rpb24gT2IoYSxiLGMpe3ZhciBkLGUsZixnLGg9YS5jb250ZW50cyxpPWEuZGF0YVR5cGVzO3doaWxlKCIqIj09PWlbMF0paS5zaGlmdCgpLHZvaWQgMD09PWUmJihlPWEubWltZVR5cGV8fGIuZ2V0UmVzcG9uc2VIZWFkZXIoIkNvbnRlbnQtVHlwZSIpKTtpZihlKWZvcihnIGluIGgpaWYoaFtnXSYmaFtnXS50ZXN0KGUpKXtpLnVuc2hpZnQoZyk7YnJlYWt9aWYoaVswXWluIGMpZj1pWzBdO2Vsc2V7Zm9yKGcgaW4gYyl7aWYoIWlbMF18fGEuY29udmVydGVyc1tnKyIgIitpWzBdXSl7Zj1nO2JyZWFrfWR8fChkPWcpfWY9Znx8ZH1yZXR1cm4gZj8oZiE9PWlbMF0mJmkudW5zaGlmdChmKSxjW2ZdKTp2b2lkIDB9ZnVuY3Rpb24gUGIoYSxiLGMsZCl7dmFyIGUsZixnLGgsaSxqPXt9LGs9YS5kYXRhVHlwZXMuc2xpY2UoKTtpZihrWzFdKWZvcihnIGluIGEuY29udmVydGVycylqW2cudG9Mb3dlckNhc2UoKV09YS5jb252ZXJ0ZXJzW2ddO2Y9ay5zaGlmdCgpO3doaWxlKGYpaWYoYS5yZXNwb25zZUZpZWxkc1tmXSYmKGNbYS5yZXNwb25zZUZpZWxkc1tmXV09YiksIWkmJmQmJmEuZGF0YUZpbHRlciYmKGI9YS5kYXRhRmlsdGVyKGIsYS5kYXRhVHlwZSkpLGk9ZixmPWsuc2hpZnQoKSlpZigiKiI9PT1mKWY9aTtlbHNlIGlmKCIqIiE9PWkmJmkhPT1mKXtpZihnPWpbaSsiICIrZl18fGpbIiogIitmXSwhZylmb3IoZSBpbiBqKWlmKGg9ZS5zcGxpdCgiICIpLGhbMV09PT1mJiYoZz1qW2krIiAiK2hbMF1dfHxqWyIqICIraFswXV0pKXtnPT09ITA\/Zz1qW2VdOmpbZV0hPT0hMCYmKGY9aFswXSxrLnVuc2hpZnQoaFsxXSkpO2JyZWFrfWlmKGchPT0hMClpZihnJiZhWyJ0aHJvd3MiXSliPWcoYik7ZWxzZSB0cnl7Yj1nKGIpfWNhdGNoKGwpe3JldHVybntzdGF0ZToicGFyc2VyZXJyb3IiLGVycm9yOmc\/bDoiTm8gY29udmVyc2lvbiBmcm9tICIraSsiIHRvICIrZn19fXJldHVybntzdGF0ZToic3VjY2VzcyIsZGF0YTpifX1tLmV4dGVuZCh7YWN0aXZlOjAsbGFzdE1vZGlmaWVkOnt9LGV0YWc6e30sYWpheFNldHRpbmdzOnt1cmw6emIsdHlwZToiR0VUIixpc0xvY2FsOkRiLnRlc3QoeWJbMV0pLGdsb2JhbDohMCxwcm9jZXNzRGF0YTohMCxhc3luYzohMCxjb250ZW50VHlwZToiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04IixhY2NlcHRzOnsiKiI6SmIsdGV4dDoidGV4dC9wbGFpbiIsaHRtbDoidGV4dC9odG1sIix4bWw6ImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWwiLGpzb246ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdCJ9LGNvbnRlbnRzOnt4bWw6L3htbC8saHRtbDovaHRtbC8sanNvbjovanNvbi99LHJlc3BvbnNlRmllbGRzOnt4bWw6InJlc3BvbnNlWE1MIix0ZXh0OiJyZXNwb25zZVRleHQiLGpzb246InJlc3BvbnNlSlNPTiJ9LGNvbnZlcnRlcnM6eyIqIHRleHQiOlN0cmluZywidGV4dCBodG1sIjohMCwidGV4dCBqc29uIjptLnBhcnNlSlNPTiwidGV4dCB4bWwiOm0ucGFyc2VYTUx9LGZsYXRPcHRpb25zOnt1cmw6ITAsY29udGV4dDohMH19LGFqYXhTZXR1cDpmdW5jdGlvbihhLGIpe3JldHVybiBiP05iKE5iKGEsbS5hamF4U2V0dGluZ3MpLGIpOk5iKG0uYWpheFNldHRpbmdzLGEpfSxhamF4UHJlZmlsdGVyOkxiKEhiKSxhamF4VHJhbnNwb3J0OkxiKEliKSxhamF4OmZ1bmN0aW9uKGEsYil7Im9iamVjdCI9PXR5cGVvZiBhJiYoYj1hLGE9dm9pZCAwKSxiPWJ8fHt9O3ZhciBjLGQsZSxmLGcsaCxpLGosaz1tLmFqYXhTZXR1cCh7fSxiKSxsPWsuY29udGV4dHx8ayxuPWsuY29udGV4dCYmKGwubm9kZVR5cGV8fGwuanF1ZXJ5KT9tKGwpOm0uZXZlbnQsbz1tLkRlZmVycmVkKCkscD1tLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxxPWsuc3RhdHVzQ29kZXx8e30scj17fSxzPXt9LHQ9MCx1PSJjYW5jZWxlZCIsdj17cmVhZHlTdGF0ZTowLGdldFJlc3BvbnNlSGVhZGVyOmZ1bmN0aW9uKGEpe3ZhciBiO2lmKDI9PT10KXtpZighail7aj17fTt3aGlsZShiPUNiLmV4ZWMoZikpaltiWzFdLnRvTG93ZXJDYXNlKCldPWJbMl19Yj1qW2EudG9Mb3dlckNhc2UoKV19cmV0dXJuIG51bGw9PWI\/bnVsbDpifSxnZXRBbGxSZXNwb25zZUhlYWRlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXQ\/ZjpudWxsfSxzZXRSZXF1ZXN0SGVhZGVyOmZ1bmN0aW9uKGEsYil7dmFyIGM9YS50b0xvd2VyQ2FzZSgpO3JldHVybiB0fHwoYT1zW2NdPXNbY118fGEsclthXT1iKSx0aGlzfSxvdmVycmlkZU1pbWVUeXBlOmZ1bmN0aW9uKGEpe3JldHVybiB0fHwoay5taW1lVHlwZT1hKSx0aGlzfSxzdGF0dXNDb2RlOmZ1bmN0aW9uKGEpe3ZhciBiO2lmKGEpaWYoMj50KWZvcihiIGluIGEpcVtiXT1bcVtiXSxhW2JdXTtlbHNlIHYuYWx3YXlzKGFbdi5zdGF0dXNdKTtyZXR1cm4gdGhpc30sYWJvcnQ6ZnVuY3Rpb24oYSl7dmFyIGI9YXx8dTtyZXR1cm4gaSYmaS5hYm9ydChiKSx4KDAsYiksdGhpc319O2lmKG8ucHJvbWlzZSh2KS5jb21wbGV0ZT1wLmFkZCx2LnN1Y2Nlc3M9di5kb25lLHYuZXJyb3I9di5mYWlsLGsudXJsPSgoYXx8ay51cmx8fHpiKSsiIikucmVwbGFjZShBYiwiIikucmVwbGFjZShGYix5YlsxXSsiLy8iKSxrLnR5cGU9Yi5tZXRob2R8fGIudHlwZXx8ay5tZXRob2R8fGsudHlwZSxrLmRhdGFUeXBlcz1tLnRyaW0oay5kYXRhVHlwZXx8IioiKS50b0xvd2VyQ2FzZSgpLm1hdGNoKEUpfHxbIiJdLG51bGw9PWsuY3Jvc3NEb21haW4mJihjPUdiLmV4ZWMoay51cmwudG9Mb3dlckNhc2UoKSksay5jcm9zc0RvbWFpbj0hKCFjfHxjWzFdPT09eWJbMV0mJmNbMl09PT15YlsyXSYmKGNbM118fCgiaHR0cDoiPT09Y1sxXT8iODAiOiI0NDMiKSk9PT0oeWJbM118fCgiaHR0cDoiPT09eWJbMV0\/IjgwIjoiNDQzIikpKSksay5kYXRhJiZrLnByb2Nlc3NEYXRhJiYic3RyaW5nIiE9dHlwZW9mIGsuZGF0YSYmKGsuZGF0YT1tLnBhcmFtKGsuZGF0YSxrLnRyYWRpdGlvbmFsKSksTWIoSGIsayxiLHYpLDI9PT10KXJldHVybiB2O2g9bS5ldmVudCYmay5nbG9iYWwsaCYmMD09PW0uYWN0aXZlKysmJm0uZXZlbnQudHJpZ2dlcigiYWpheFN0YXJ0Iiksay50eXBlPWsudHlwZS50b1VwcGVyQ2FzZSgpLGsuaGFzQ29udGVudD0hRWIudGVzdChrLnR5cGUpLGU9ay51cmwsay5oYXNDb250ZW50fHwoay5kYXRhJiYoZT1rLnVybCs9KHdiLnRlc3QoZSk\/IiYiOiI\/Iikray5kYXRhLGRlbGV0ZSBrLmRhdGEpLGsuY2FjaGU9PT0hMSYmKGsudXJsPUJiLnRlc3QoZSk\/ZS5yZXBsYWNlKEJiLCIkMV89Iit2YisrKTplKyh3Yi50ZXN0KGUpPyImIjoiPyIpKyJfPSIrdmIrKykpLGsuaWZNb2RpZmllZCYmKG0ubGFzdE1vZGlmaWVkW2VdJiZ2LnNldFJlcXVlc3RIZWFkZXIoIklmLU1vZGlmaWVkLVNpbmNlIixtLmxhc3RNb2RpZmllZFtlXSksbS5ldGFnW2VdJiZ2LnNldFJlcXVlc3RIZWFkZXIoIklmLU5vbmUtTWF0Y2giLG0uZXRhZ1tlXSkpLChrLmRhdGEmJmsuaGFzQ29udGVudCYmay5jb250ZW50VHlwZSE9PSExfHxiLmNvbnRlbnRUeXBlKSYmdi5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLGsuY29udGVudFR5cGUpLHYuc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0IixrLmRhdGFUeXBlc1swXSYmay5hY2NlcHRzW2suZGF0YVR5cGVzWzBdXT9rLmFjY2VwdHNbay5kYXRhVHlwZXNbMF1dKygiKiIhPT1rLmRhdGFUeXBlc1swXT8iLCAiK0piKyI7IHE9MC4wMSI6IiIpOmsuYWNjZXB0c1siKiJdKTtmb3IoZCBpbiBrLmhlYWRlcnMpdi5zZXRSZXF1ZXN0SGVhZGVyKGQsay5oZWFkZXJzW2RdKTtpZihrLmJlZm9yZVNlbmQmJihrLmJlZm9yZVNlbmQuY2FsbChsLHYsayk9PT0hMXx8Mj09PXQpKXJldHVybiB2LmFib3J0KCk7dT0iYWJvcnQiO2ZvcihkIGlue3N1Y2Nlc3M6MSxlcnJvcjoxLGNvbXBsZXRlOjF9KXZbZF0oa1tkXSk7aWYoaT1NYihJYixrLGIsdikpe3YucmVhZHlTdGF0ZT0xLGgmJm4udHJpZ2dlcigiYWpheFNlbmQiLFt2LGtdKSxrLmFzeW5jJiZrLnRpbWVvdXQ+MCYmKGc9c2V0VGltZW91dChmdW5jdGlvbigpe3YuYWJvcnQoInRpbWVvdXQiKX0say50aW1lb3V0KSk7dHJ5e3Q9MSxpLnNlbmQocix4KX1jYXRjaCh3KXtpZighKDI+dCkpdGhyb3cgdzt4KC0xLHcpfX1lbHNlIHgoLTEsIk5vIFRyYW5zcG9ydCIpO2Z1bmN0aW9uIHgoYSxiLGMsZCl7dmFyIGoscixzLHUsdyx4PWI7MiE9PXQmJih0PTIsZyYmY2xlYXJUaW1lb3V0KGcpLGk9dm9pZCAwLGY9ZHx8IiIsdi5yZWFkeVN0YXRlPWE+MD80OjAsaj1hPj0yMDAmJjMwMD5hfHwzMDQ9PT1hLGMmJih1PU9iKGssdixjKSksdT1QYihrLHUsdixqKSxqPyhrLmlmTW9kaWZpZWQmJih3PXYuZ2V0UmVzcG9uc2VIZWFkZXIoIkxhc3QtTW9kaWZpZWQiKSx3JiYobS5sYXN0TW9kaWZpZWRbZV09dyksdz12LmdldFJlc3BvbnNlSGVhZGVyKCJldGFnIiksdyYmKG0uZXRhZ1tlXT13KSksMjA0PT09YXx8IkhFQUQiPT09ay50eXBlP3g9Im5vY29udGVudCI6MzA0PT09YT94PSJub3Rtb2RpZmllZCI6KHg9dS5zdGF0ZSxyPXUuZGF0YSxzPXUuZXJyb3Isaj0hcykpOihzPXgsKGF8fCF4KSYmKHg9ImVycm9yIiwwPmEmJihhPTApKSksdi5zdGF0dXM9YSx2LnN0YXR1c1RleHQ9KGJ8fHgpKyIiLGo\/by5yZXNvbHZlV2l0aChsLFtyLHgsdl0pOm8ucmVqZWN0V2l0aChsLFt2LHgsc10pLHYuc3RhdHVzQ29kZShxKSxxPXZvaWQgMCxoJiZuLnRyaWdnZXIoaj8iYWpheFN1Y2Nlc3MiOiJhamF4RXJyb3IiLFt2LGssaj9yOnNdKSxwLmZpcmVXaXRoKGwsW3YseF0pLGgmJihuLnRyaWdnZXIoImFqYXhDb21wbGV0ZSIsW3Ysa10pLC0tbS5hY3RpdmV8fG0uZXZlbnQudHJpZ2dlcigiYWpheFN0b3AiKSkpfXJldHVybiB2fSxnZXRKU09OOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbS5nZXQoYSxiLGMsImpzb24iKX0sZ2V0U2NyaXB0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIG0uZ2V0KGEsdm9pZCAwLGIsInNjcmlwdCIpfX0pLG0uZWFjaChbImdldCIsInBvc3QiXSxmdW5jdGlvbihhLGIpe21bYl09ZnVuY3Rpb24oYSxjLGQsZSl7cmV0dXJuIG0uaXNGdW5jdGlvbihjKSYmKGU9ZXx8ZCxkPWMsYz12b2lkIDApLG0uYWpheCh7dXJsOmEsdHlwZTpiLGRhdGFUeXBlOmUsZGF0YTpjLHN1Y2Nlc3M6ZH0pfX0pLG0uX2V2YWxVcmw9ZnVuY3Rpb24oYSl7cmV0dXJuIG0uYWpheCh7dXJsOmEsdHlwZToiR0VUIixkYXRhVHlwZToic2NyaXB0Iixhc3luYzohMSxnbG9iYWw6ITEsInRocm93cyI6ITB9KX0sbS5mbi5leHRlbmQoe3dyYXBBbGw6ZnVuY3Rpb24oYSl7aWYobS5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7bSh0aGlzKS53cmFwQWxsKGEuY2FsbCh0aGlzLGIpKX0pO2lmKHRoaXNbMF0pe3ZhciBiPW0oYSx0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmVxKDApLmNsb25lKCEwKTt0aGlzWzBdLnBhcmVudE5vZGUmJmIuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pLGIubWFwKGZ1bmN0aW9uKCl7dmFyIGE9dGhpczt3aGlsZShhLmZpcnN0Q2hpbGQmJjE9PT1hLmZpcnN0Q2hpbGQubm9kZVR5cGUpYT1hLmZpcnN0Q2hpbGQ7cmV0dXJuIGF9KS5hcHBlbmQodGhpcyl9cmV0dXJuIHRoaXN9LHdyYXBJbm5lcjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKG0uaXNGdW5jdGlvbihhKT9mdW5jdGlvbihiKXttKHRoaXMpLndyYXBJbm5lcihhLmNhbGwodGhpcyxiKSl9OmZ1bmN0aW9uKCl7dmFyIGI9bSh0aGlzKSxjPWIuY29udGVudHMoKTtjLmxlbmd0aD9jLndyYXBBbGwoYSk6Yi5hcHBlbmQoYSl9KX0sd3JhcDpmdW5jdGlvbihhKXt2YXIgYj1tLmlzRnVuY3Rpb24oYSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihjKXttKHRoaXMpLndyYXBBbGwoYj9hLmNhbGwodGhpcyxjKTphKX0pfSx1bndyYXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQoKS5lYWNoKGZ1bmN0aW9uKCl7bS5ub2RlTmFtZSh0aGlzLCJib2R5Iil8fG0odGhpcykucmVwbGFjZVdpdGgodGhpcy5jaGlsZE5vZGVzKX0pLmVuZCgpfX0pLG0uZXhwci5maWx0ZXJzLmhpZGRlbj1mdW5jdGlvbihhKXtyZXR1cm4gYS5vZmZzZXRXaWR0aDw9MCYmYS5vZmZzZXRIZWlnaHQ8PTB8fCFrLnJlbGlhYmxlSGlkZGVuT2Zmc2V0cygpJiYibm9uZSI9PT0oYS5zdHlsZSYmYS5zdHlsZS5kaXNwbGF5fHxtLmNzcyhhLCJkaXNwbGF5IikpfSxtLmV4cHIuZmlsdGVycy52aXNpYmxlPWZ1bmN0aW9uKGEpe3JldHVybiFtLmV4cHIuZmlsdGVycy5oaWRkZW4oYSl9O3ZhciBRYj0vJTIwL2csUmI9L1xbXF0kLyxTYj0vXHI\/XG4vZyxUYj0vXig\/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVzZXR8ZmlsZSkkL2ksVWI9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8a2V5Z2VuKS9pO2Z1bmN0aW9uIFZiKGEsYixjLGQpe3ZhciBlO2lmKG0uaXNBcnJheShiKSltLmVhY2goYixmdW5jdGlvbihiLGUpe2N8fFJiLnRlc3QoYSk\/ZChhLGUpOlZiKGErIlsiKygib2JqZWN0Ij09dHlwZW9mIGU\/YjoiIikrIl0iLGUsYyxkKX0pO2Vsc2UgaWYoY3x8Im9iamVjdCIhPT1tLnR5cGUoYikpZChhLGIpO2Vsc2UgZm9yKGUgaW4gYilWYihhKyJbIitlKyJdIixiW2VdLGMsZCl9bS5wYXJhbT1mdW5jdGlvbihhLGIpe3ZhciBjLGQ9W10sZT1mdW5jdGlvbihhLGIpe2I9bS5pc0Z1bmN0aW9uKGIpP2IoKTpudWxsPT1iPyIiOmIsZFtkLmxlbmd0aF09ZW5jb2RlVVJJQ29tcG9uZW50KGEpKyI9IitlbmNvZGVVUklDb21wb25lbnQoYil9O2lmKHZvaWQgMD09PWImJihiPW0uYWpheFNldHRpbmdzJiZtLmFqYXhTZXR0aW5ncy50cmFkaXRpb25hbCksbS5pc0FycmF5KGEpfHxhLmpxdWVyeSYmIW0uaXNQbGFpbk9iamVjdChhKSltLmVhY2goYSxmdW5jdGlvbigpe2UodGhpcy5uYW1lLHRoaXMudmFsdWUpfSk7ZWxzZSBmb3IoYyBpbiBhKVZiKGMsYVtjXSxiLGUpO3JldHVybiBkLmpvaW4oIiYiKS5yZXBsYWNlKFFiLCIrIil9LG0uZm4uZXh0ZW5kKHtzZXJpYWxpemU6ZnVuY3Rpb24oKXtyZXR1cm4gbS5wYXJhbSh0aGlzLnNlcmlhbGl6ZUFycmF5KCkpfSxzZXJpYWxpemVBcnJheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBhPW0ucHJvcCh0aGlzLCJlbGVtZW50cyIpO3JldHVybiBhP20ubWFrZUFycmF5KGEpOnRoaXN9KS5maWx0ZXIoZnVuY3Rpb24oKXt2YXIgYT10aGlzLnR5cGU7cmV0dXJuIHRoaXMubmFtZSYmIW0odGhpcykuaXMoIjpkaXNhYmxlZCIpJiZVYi50ZXN0KHRoaXMubm9kZU5hbWUpJiYhVGIudGVzdChhKSYmKHRoaXMuY2hlY2tlZHx8IVcudGVzdChhKSl9KS5tYXAoZnVuY3Rpb24oYSxiKXt2YXIgYz1tKHRoaXMpLnZhbCgpO3JldHVybiBudWxsPT1jP251bGw6bS5pc0FycmF5KGMpP20ubWFwKGMsZnVuY3Rpb24oYSl7cmV0dXJue25hbWU6Yi5uYW1lLHZhbHVlOmEucmVwbGFjZShTYiwiXHJcbiIpfX0pOntuYW1lOmIubmFtZSx2YWx1ZTpjLnJlcGxhY2UoU2IsIlxyXG4iKX19KS5nZXQoKX19KSxtLmFqYXhTZXR0aW5ncy54aHI9dm9pZCAwIT09YS5BY3RpdmVYT2JqZWN0P2Z1bmN0aW9uKCl7cmV0dXJuIXRoaXMuaXNMb2NhbCYmL14oZ2V0fHBvc3R8aGVhZHxwdXR8ZGVsZXRlfG9wdGlvbnMpJC9pLnRlc3QodGhpcy50eXBlKSYmWmIoKXx8JGIoKX06WmI7dmFyIFdiPTAsWGI9e30sWWI9bS5hamF4U2V0dGluZ3MueGhyKCk7YS5hdHRhY2hFdmVudCYmYS5hdHRhY2hFdmVudCgib251bmxvYWQiLGZ1bmN0aW9uKCl7Zm9yKHZhciBhIGluIFhiKVhiW2FdKHZvaWQgMCwhMCl9KSxrLmNvcnM9ISFZYiYmIndpdGhDcmVkZW50aWFscyJpbiBZYixZYj1rLmFqYXg9ISFZYixZYiYmbS5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKGEpe2lmKCFhLmNyb3NzRG9tYWlufHxrLmNvcnMpe3ZhciBiO3JldHVybntzZW5kOmZ1bmN0aW9uKGMsZCl7dmFyIGUsZj1hLnhocigpLGc9KytXYjtpZihmLm9wZW4oYS50eXBlLGEudXJsLGEuYXN5bmMsYS51c2VybmFtZSxhLnBhc3N3b3JkKSxhLnhockZpZWxkcylmb3IoZSBpbiBhLnhockZpZWxkcylmW2VdPWEueGhyRmllbGRzW2VdO2EubWltZVR5cGUmJmYub3ZlcnJpZGVNaW1lVHlwZSYmZi5vdmVycmlkZU1pbWVUeXBlKGEubWltZVR5cGUpLGEuY3Jvc3NEb21haW58fGNbIlgtUmVxdWVzdGVkLVdpdGgiXXx8KGNbIlgtUmVxdWVzdGVkLVdpdGgiXT0iWE1MSHR0cFJlcXVlc3QiKTtmb3IoZSBpbiBjKXZvaWQgMCE9PWNbZV0mJmYuc2V0UmVxdWVzdEhlYWRlcihlLGNbZV0rIiIpO2Yuc2VuZChhLmhhc0NvbnRlbnQmJmEuZGF0YXx8bnVsbCksYj1mdW5jdGlvbihjLGUpe3ZhciBoLGksajtpZihiJiYoZXx8ND09PWYucmVhZHlTdGF0ZSkpaWYoZGVsZXRlIFhiW2ddLGI9dm9pZCAwLGYub25yZWFkeXN0YXRlY2hhbmdlPW0ubm9vcCxlKTQhPT1mLnJlYWR5U3RhdGUmJmYuYWJvcnQoKTtlbHNle2o9e30saD1mLnN0YXR1cywic3RyaW5nIj09dHlwZW9mIGYucmVzcG9uc2VUZXh0JiYoai50ZXh0PWYucmVzcG9uc2VUZXh0KTt0cnl7aT1mLnN0YXR1c1RleHR9Y2F0Y2goayl7aT0iIn1ofHwhYS5pc0xvY2FsfHxhLmNyb3NzRG9tYWluPzEyMjM9PT1oJiYoaD0yMDQpOmg9ai50ZXh0PzIwMDo0MDR9aiYmZChoLGksaixmLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKX0sYS5hc3luYz80PT09Zi5yZWFkeVN0YXRlP3NldFRpbWVvdXQoYik6Zi5vbnJlYWR5c3RhdGVjaGFuZ2U9WGJbZ109YjpiKCl9LGFib3J0OmZ1bmN0aW9uKCl7YiYmYih2b2lkIDAsITApfX19fSk7ZnVuY3Rpb24gWmIoKXt0cnl7cmV0dXJuIG5ldyBhLlhNTEh0dHBSZXF1ZXN0fWNhdGNoKGIpe319ZnVuY3Rpb24gJGIoKXt0cnl7cmV0dXJuIG5ldyBhLkFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIil9Y2F0Y2goYil7fX1tLmFqYXhTZXR1cCh7YWNjZXB0czp7c2NyaXB0OiJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdCJ9LGNvbnRlbnRzOntzY3JpcHQ6Lyg\/OmphdmF8ZWNtYSlzY3JpcHQvfSxjb252ZXJ0ZXJzOnsidGV4dCBzY3JpcHQiOmZ1bmN0aW9uKGEpe3JldHVybiBtLmdsb2JhbEV2YWwoYSksYX19fSksbS5hamF4UHJlZmlsdGVyKCJzY3JpcHQiLGZ1bmN0aW9uKGEpe3ZvaWQgMD09PWEuY2FjaGUmJihhLmNhY2hlPSExKSxhLmNyb3NzRG9tYWluJiYoYS50eXBlPSJHRVQiLGEuZ2xvYmFsPSExKX0pLG0uYWpheFRyYW5zcG9ydCgic2NyaXB0IixmdW5jdGlvbihhKXtpZihhLmNyb3NzRG9tYWluKXt2YXIgYixjPXkuaGVhZHx8bSgiaGVhZCIpWzBdfHx5LmRvY3VtZW50RWxlbWVudDtyZXR1cm57c2VuZDpmdW5jdGlvbihkLGUpe2I9eS5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSxiLmFzeW5jPSEwLGEuc2NyaXB0Q2hhcnNldCYmKGIuY2hhcnNldD1hLnNjcmlwdENoYXJzZXQpLGIuc3JjPWEudXJsLGIub25sb2FkPWIub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKGEsYyl7KGN8fCFiLnJlYWR5U3RhdGV8fC9sb2FkZWR8Y29tcGxldGUvLnRlc3QoYi5yZWFkeVN0YXRlKSkmJihiLm9ubG9hZD1iLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLGIucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGIpLGI9bnVsbCxjfHxlKDIwMCwic3VjY2VzcyIpKX0sYy5pbnNlcnRCZWZvcmUoYixjLmZpcnN0Q2hpbGQpfSxhYm9ydDpmdW5jdGlvbigpe2ImJmIub25sb2FkKHZvaWQgMCwhMCl9fX19KTt2YXIgX2I9W10sYWM9Lyg9KVw\/KD89JnwkKXxcP1w\/LzttLmFqYXhTZXR1cCh7anNvbnA6ImNhbGxiYWNrIixqc29ucENhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIGE9X2IucG9wKCl8fG0uZXhwYW5kbysiXyIrdmIrKztyZXR1cm4gdGhpc1thXT0hMCxhfX0pLG0uYWpheFByZWZpbHRlcigianNvbiBqc29ucCIsZnVuY3Rpb24oYixjLGQpe3ZhciBlLGYsZyxoPWIuanNvbnAhPT0hMSYmKGFjLnRlc3QoYi51cmwpPyJ1cmwiOiJzdHJpbmciPT10eXBlb2YgYi5kYXRhJiYhKGIuY29udGVudFR5cGV8fCIiKS5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSYmYWMudGVzdChiLmRhdGEpJiYiZGF0YSIpO3JldHVybiBofHwianNvbnAiPT09Yi5kYXRhVHlwZXNbMF0\/KGU9Yi5qc29ucENhbGxiYWNrPW0uaXNGdW5jdGlvbihiLmpzb25wQ2FsbGJhY2spP2IuanNvbnBDYWxsYmFjaygpOmIuanNvbnBDYWxsYmFjayxoP2JbaF09YltoXS5yZXBsYWNlKGFjLCIkMSIrZSk6Yi5qc29ucCE9PSExJiYoYi51cmwrPSh3Yi50ZXN0KGIudXJsKT8iJiI6Ij8iKStiLmpzb25wKyI9IitlKSxiLmNvbnZlcnRlcnNbInNjcmlwdCBqc29uIl09ZnVuY3Rpb24oKXtyZXR1cm4gZ3x8bS5lcnJvcihlKyIgd2FzIG5vdCBjYWxsZWQiKSxnWzBdfSxiLmRhdGFUeXBlc1swXT0ianNvbiIsZj1hW2VdLGFbZV09ZnVuY3Rpb24oKXtnPWFyZ3VtZW50c30sZC5hbHdheXMoZnVuY3Rpb24oKXthW2VdPWYsYltlXSYmKGIuanNvbnBDYWxsYmFjaz1jLmpzb25wQ2FsbGJhY2ssX2IucHVzaChlKSksZyYmbS5pc0Z1bmN0aW9uKGYpJiZmKGdbMF0pLGc9Zj12b2lkIDB9KSwic2NyaXB0Iik6dm9pZCAwfSksbS5wYXJzZUhUTUw9ZnVuY3Rpb24oYSxiLGMpe2lmKCFhfHwic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIG51bGw7ImJvb2xlYW4iPT10eXBlb2YgYiYmKGM9YixiPSExKSxiPWJ8fHk7dmFyIGQ9dS5leGVjKGEpLGU9IWMmJltdO3JldHVybiBkP1tiLmNyZWF0ZUVsZW1lbnQoZFsxXSldOihkPW0uYnVpbGRGcmFnbWVudChbYV0sYixlKSxlJiZlLmxlbmd0aCYmbShlKS5yZW1vdmUoKSxtLm1lcmdlKFtdLGQuY2hpbGROb2RlcykpfTt2YXIgYmM9bS5mbi5sb2FkO20uZm4ubG9hZD1mdW5jdGlvbihhLGIsYyl7aWYoInN0cmluZyIhPXR5cGVvZiBhJiZiYylyZXR1cm4gYmMuYXBwbHkodGhpcyxhcmd1bWVudHMpO3ZhciBkLGUsZixnPXRoaXMsaD1hLmluZGV4T2YoIiAiKTtyZXR1cm4gaD49MCYmKGQ9bS50cmltKGEuc2xpY2UoaCxhLmxlbmd0aCkpLGE9YS5zbGljZSgwLGgpKSxtLmlzRnVuY3Rpb24oYik\/KGM9YixiPXZvaWQgMCk6YiYmIm9iamVjdCI9PXR5cGVvZiBiJiYoZj0iUE9TVCIpLGcubGVuZ3RoPjAmJm0uYWpheCh7dXJsOmEsdHlwZTpmLGRhdGFUeXBlOiJodG1sIixkYXRhOmJ9KS5kb25lKGZ1bmN0aW9uKGEpe2U9YXJndW1lbnRzLGcuaHRtbChkP20oIjxkaXY+IikuYXBwZW5kKG0ucGFyc2VIVE1MKGEpKS5maW5kKGQpOmEpfSkuY29tcGxldGUoYyYmZnVuY3Rpb24oYSxiKXtnLmVhY2goYyxlfHxbYS5yZXNwb25zZVRleHQsYixhXSl9KSx0aGlzfSxtLmVhY2goWyJhamF4U3RhcnQiLCJhamF4U3RvcCIsImFqYXhDb21wbGV0ZSIsImFqYXhFcnJvciIsImFqYXhTdWNjZXNzIiwiYWpheFNlbmQiXSxmdW5jdGlvbihhLGIpe20uZm5bYl09ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMub24oYixhKX19KSxtLmV4cHIuZmlsdGVycy5hbmltYXRlZD1mdW5jdGlvbihhKXtyZXR1cm4gbS5ncmVwKG0udGltZXJzLGZ1bmN0aW9uKGIpe3JldHVybiBhPT09Yi5lbGVtfSkubGVuZ3RofTt2YXIgY2M9YS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7ZnVuY3Rpb24gZGMoYSl7cmV0dXJuIG0uaXNXaW5kb3coYSk\/YTo5PT09YS5ub2RlVHlwZT9hLmRlZmF1bHRWaWV3fHxhLnBhcmVudFdpbmRvdzohMX1tLm9mZnNldD17c2V0T2Zmc2V0OmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrPW0uY3NzKGEsInBvc2l0aW9uIiksbD1tKGEpLG49e307InN0YXRpYyI9PT1rJiYoYS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiKSxoPWwub2Zmc2V0KCksZj1tLmNzcyhhLCJ0b3AiKSxpPW0uY3NzKGEsImxlZnQiKSxqPSgiYWJzb2x1dGUiPT09a3x8ImZpeGVkIj09PWspJiZtLmluQXJyYXkoImF1dG8iLFtmLGldKT4tMSxqPyhkPWwucG9zaXRpb24oKSxnPWQudG9wLGU9ZC5sZWZ0KTooZz1wYXJzZUZsb2F0KGYpfHwwLGU9cGFyc2VGbG9hdChpKXx8MCksbS5pc0Z1bmN0aW9uKGIpJiYoYj1iLmNhbGwoYSxjLGgpKSxudWxsIT1iLnRvcCYmKG4udG9wPWIudG9wLWgudG9wK2cpLG51bGwhPWIubGVmdCYmKG4ubGVmdD1iLmxlZnQtaC5sZWZ0K2UpLCJ1c2luZyJpbiBiP2IudXNpbmcuY2FsbChhLG4pOmwuY3NzKG4pfX0sbS5mbi5leHRlbmQoe29mZnNldDpmdW5jdGlvbihhKXtpZihhcmd1bWVudHMubGVuZ3RoKXJldHVybiB2b2lkIDA9PT1hP3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKGIpe20ub2Zmc2V0LnNldE9mZnNldCh0aGlzLGEsYil9KTt2YXIgYixjLGQ9e3RvcDowLGxlZnQ6MH0sZT10aGlzWzBdLGY9ZSYmZS5vd25lckRvY3VtZW50O2lmKGYpcmV0dXJuIGI9Zi5kb2N1bWVudEVsZW1lbnQsbS5jb250YWlucyhiLGUpPyh0eXBlb2YgZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QhPT1LJiYoZD1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKSxjPWRjKGYpLHt0b3A6ZC50b3ArKGMucGFnZVlPZmZzZXR8fGIuc2Nyb2xsVG9wKS0oYi5jbGllbnRUb3B8fDApLGxlZnQ6ZC5sZWZ0KyhjLnBhZ2VYT2Zmc2V0fHxiLnNjcm9sbExlZnQpLShiLmNsaWVudExlZnR8fDApfSk6ZH0scG9zaXRpb246ZnVuY3Rpb24oKXtpZih0aGlzWzBdKXt2YXIgYSxiLGM9e3RvcDowLGxlZnQ6MH0sZD10aGlzWzBdO3JldHVybiJmaXhlZCI9PT1tLmNzcyhkLCJwb3NpdGlvbiIpP2I9ZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTooYT10aGlzLm9mZnNldFBhcmVudCgpLGI9dGhpcy5vZmZzZXQoKSxtLm5vZGVOYW1lKGFbMF0sImh0bWwiKXx8KGM9YS5vZmZzZXQoKSksYy50b3ArPW0uY3NzKGFbMF0sImJvcmRlclRvcFdpZHRoIiwhMCksYy5sZWZ0Kz1tLmNzcyhhWzBdLCJib3JkZXJMZWZ0V2lkdGgiLCEwKSkse3RvcDpiLnRvcC1jLnRvcC1tLmNzcyhkLCJtYXJnaW5Ub3AiLCEwKSxsZWZ0OmIubGVmdC1jLmxlZnQtbS5jc3MoZCwibWFyZ2luTGVmdCIsITApfX19LG9mZnNldFBhcmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBhPXRoaXMub2Zmc2V0UGFyZW50fHxjYzt3aGlsZShhJiYhbS5ub2RlTmFtZShhLCJodG1sIikmJiJzdGF0aWMiPT09bS5jc3MoYSwicG9zaXRpb24iKSlhPWEub2Zmc2V0UGFyZW50O3JldHVybiBhfHxjY30pfX0pLG0uZWFjaCh7c2Nyb2xsTGVmdDoicGFnZVhPZmZzZXQiLHNjcm9sbFRvcDoicGFnZVlPZmZzZXQifSxmdW5jdGlvbihhLGIpe3ZhciBjPS9ZLy50ZXN0KGIpO20uZm5bYV09ZnVuY3Rpb24oZCl7cmV0dXJuIFYodGhpcyxmdW5jdGlvbihhLGQsZSl7dmFyIGY9ZGMoYSk7cmV0dXJuIHZvaWQgMD09PWU\/Zj9iIGluIGY\/ZltiXTpmLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFtkXTphW2RdOnZvaWQoZj9mLnNjcm9sbFRvKGM\/bShmKS5zY3JvbGxMZWZ0KCk6ZSxjP2U6bShmKS5zY3JvbGxUb3AoKSk6YVtkXT1lKX0sYSxkLGFyZ3VtZW50cy5sZW5ndGgsbnVsbCl9fSksbS5lYWNoKFsidG9wIiwibGVmdCJdLGZ1bmN0aW9uKGEsYil7bS5jc3NIb29rc1tiXT1MYShrLnBpeGVsUG9zaXRpb24sZnVuY3Rpb24oYSxjKXtyZXR1cm4gYz8oYz1KYShhLGIpLEhhLnRlc3QoYyk\/bShhKS5wb3NpdGlvbigpW2JdKyJweCI6Yyk6dm9pZCAwfSl9KSxtLmVhY2goe0hlaWdodDoiaGVpZ2h0IixXaWR0aDoid2lkdGgifSxmdW5jdGlvbihhLGIpe20uZWFjaCh7cGFkZGluZzoiaW5uZXIiK2EsY29udGVudDpiLCIiOiJvdXRlciIrYX0sZnVuY3Rpb24oYyxkKXttLmZuW2RdPWZ1bmN0aW9uKGQsZSl7dmFyIGY9YXJndW1lbnRzLmxlbmd0aCYmKGN8fCJib29sZWFuIiE9dHlwZW9mIGQpLGc9Y3x8KGQ9PT0hMHx8ZT09PSEwPyJtYXJnaW4iOiJib3JkZXIiKTtyZXR1cm4gVih0aGlzLGZ1bmN0aW9uKGIsYyxkKXt2YXIgZTtyZXR1cm4gbS5pc1dpbmRvdyhiKT9iLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsiY2xpZW50IithXTo5PT09Yi5ub2RlVHlwZT8oZT1iLmRvY3VtZW50RWxlbWVudCxNYXRoLm1heChiLmJvZHlbInNjcm9sbCIrYV0sZVsic2Nyb2xsIithXSxiLmJvZHlbIm9mZnNldCIrYV0sZVsib2Zmc2V0IithXSxlWyJjbGllbnQiK2FdKSk6dm9pZCAwPT09ZD9tLmNzcyhiLGMsZyk6bS5zdHlsZShiLGMsZCxnKX0sYixmP2Q6dm9pZCAwLGYsbnVsbCl9fSl9KSxtLmZuLnNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sZW5ndGh9LG0uZm4uYW5kU2VsZj1tLmZuLmFkZEJhY2ssImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZCYmZGVmaW5lKCJqcXVlcnkiLFtdLGZ1bmN0aW9uKCl7cmV0dXJuIG19KTt2YXIgZWM9YS5qUXVlcnksZmM9YS4kO3JldHVybiBtLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oYil7cmV0dXJuIGEuJD09PW0mJihhLiQ9ZmMpLGImJmEualF1ZXJ5PT09bSYmKGEualF1ZXJ5PWVjKSxtfSx0eXBlb2YgYj09PUsmJihhLmpRdWVyeT1hLiQ9bSksbX0pOwo=\"><\/script><\/p>\n<p><script src=\"data:application\/javascript;base64,LyohCiAqIEJvb3RzdHJhcCB2My4zLjUgKGh0dHA6Ly9nZXRib290c3RyYXAuY29tKQogKiBDb3B5cmlnaHQgMjAxMS0yMDE1IFR3aXR0ZXIsIEluYy4KICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlCiAqLwppZigidW5kZWZpbmVkIj09dHlwZW9mIGpRdWVyeSl0aHJvdyBuZXcgRXJyb3IoIkJvb3RzdHJhcCdzIEphdmFTY3JpcHQgcmVxdWlyZXMgalF1ZXJ5Iik7K2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1hLmZuLmpxdWVyeS5zcGxpdCgiICIpWzBdLnNwbGl0KCIuIik7aWYoYlswXTwyJiZiWzFdPDl8fDE9PWJbMF0mJjk9PWJbMV0mJmJbMl08MSl0aHJvdyBuZXcgRXJyb3IoIkJvb3RzdHJhcCdzIEphdmFTY3JpcHQgcmVxdWlyZXMgalF1ZXJ5IHZlcnNpb24gMS45LjEgb3IgaGlnaGVyIil9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKCl7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYm9vdHN0cmFwIiksYj17V2Via2l0VHJhbnNpdGlvbjoid2Via2l0VHJhbnNpdGlvbkVuZCIsTW96VHJhbnNpdGlvbjoidHJhbnNpdGlvbmVuZCIsT1RyYW5zaXRpb246Im9UcmFuc2l0aW9uRW5kIG90cmFuc2l0aW9uZW5kIix0cmFuc2l0aW9uOiJ0cmFuc2l0aW9uZW5kIn07Zm9yKHZhciBjIGluIGIpaWYodm9pZCAwIT09YS5zdHlsZVtjXSlyZXR1cm57ZW5kOmJbY119O3JldHVybiExfWEuZm4uZW11bGF0ZVRyYW5zaXRpb25FbmQ9ZnVuY3Rpb24oYil7dmFyIGM9ITEsZD10aGlzO2EodGhpcykub25lKCJic1RyYW5zaXRpb25FbmQiLGZ1bmN0aW9uKCl7Yz0hMH0pO3ZhciBlPWZ1bmN0aW9uKCl7Y3x8YShkKS50cmlnZ2VyKGEuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCl9O3JldHVybiBzZXRUaW1lb3V0KGUsYiksdGhpc30sYShmdW5jdGlvbigpe2Euc3VwcG9ydC50cmFuc2l0aW9uPWIoKSxhLnN1cHBvcnQudHJhbnNpdGlvbiYmKGEuZXZlbnQuc3BlY2lhbC5ic1RyYW5zaXRpb25FbmQ9e2JpbmRUeXBlOmEuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCxkZWxlZ2F0ZVR5cGU6YS5zdXBwb3J0LnRyYW5zaXRpb24uZW5kLGhhbmRsZTpmdW5jdGlvbihiKXtyZXR1cm4gYShiLnRhcmdldCkuaXModGhpcyk\/Yi5oYW5kbGVPYmouaGFuZGxlci5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dm9pZCAwfX0pfSl9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYz1hKHRoaXMpLGU9Yy5kYXRhKCJicy5hbGVydCIpO2V8fGMuZGF0YSgiYnMuYWxlcnQiLGU9bmV3IGQodGhpcykpLCJzdHJpbmciPT10eXBlb2YgYiYmZVtiXS5jYWxsKGMpfSl9dmFyIGM9J1tkYXRhLWRpc21pc3M9ImFsZXJ0Il0nLGQ9ZnVuY3Rpb24oYil7YShiKS5vbigiY2xpY2siLGMsdGhpcy5jbG9zZSl9O2QuVkVSU0lPTj0iMy4zLjUiLGQuVFJBTlNJVElPTl9EVVJBVElPTj0xNTAsZC5wcm90b3R5cGUuY2xvc2U9ZnVuY3Rpb24oYil7ZnVuY3Rpb24gYygpe2cuZGV0YWNoKCkudHJpZ2dlcigiY2xvc2VkLmJzLmFsZXJ0IikucmVtb3ZlKCl9dmFyIGU9YSh0aGlzKSxmPWUuYXR0cigiZGF0YS10YXJnZXQiKTtmfHwoZj1lLmF0dHIoImhyZWYiKSxmPWYmJmYucmVwbGFjZSgvLiooPz0jW15cc10qJCkvLCIiKSk7dmFyIGc9YShmKTtiJiZiLnByZXZlbnREZWZhdWx0KCksZy5sZW5ndGh8fChnPWUuY2xvc2VzdCgiLmFsZXJ0IikpLGcudHJpZ2dlcihiPWEuRXZlbnQoImNsb3NlLmJzLmFsZXJ0IikpLGIuaXNEZWZhdWx0UHJldmVudGVkKCl8fChnLnJlbW92ZUNsYXNzKCJpbiIpLGEuc3VwcG9ydC50cmFuc2l0aW9uJiZnLmhhc0NsYXNzKCJmYWRlIik\/Zy5vbmUoImJzVHJhbnNpdGlvbkVuZCIsYykuZW11bGF0ZVRyYW5zaXRpb25FbmQoZC5UUkFOU0lUSU9OX0RVUkFUSU9OKTpjKCkpfTt2YXIgZT1hLmZuLmFsZXJ0O2EuZm4uYWxlcnQ9YixhLmZuLmFsZXJ0LkNvbnN0cnVjdG9yPWQsYS5mbi5hbGVydC5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGEuZm4uYWxlcnQ9ZSx0aGlzfSxhKGRvY3VtZW50KS5vbigiY2xpY2suYnMuYWxlcnQuZGF0YS1hcGkiLGMsZC5wcm90b3R5cGUuY2xvc2UpfShqUXVlcnkpLCtmdW5jdGlvbihhKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYihiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGQ9YSh0aGlzKSxlPWQuZGF0YSgiYnMuYnV0dG9uIiksZj0ib2JqZWN0Ij09dHlwZW9mIGImJmI7ZXx8ZC5kYXRhKCJicy5idXR0b24iLGU9bmV3IGModGhpcyxmKSksInRvZ2dsZSI9PWI\/ZS50b2dnbGUoKTpiJiZlLnNldFN0YXRlKGIpfSl9dmFyIGM9ZnVuY3Rpb24oYixkKXt0aGlzLiRlbGVtZW50PWEoYiksdGhpcy5vcHRpb25zPWEuZXh0ZW5kKHt9LGMuREVGQVVMVFMsZCksdGhpcy5pc0xvYWRpbmc9ITF9O2MuVkVSU0lPTj0iMy4zLjUiLGMuREVGQVVMVFM9e2xvYWRpbmdUZXh0OiJsb2FkaW5nLi4uIn0sYy5wcm90b3R5cGUuc2V0U3RhdGU9ZnVuY3Rpb24oYil7dmFyIGM9ImRpc2FibGVkIixkPXRoaXMuJGVsZW1lbnQsZT1kLmlzKCJpbnB1dCIpPyJ2YWwiOiJodG1sIixmPWQuZGF0YSgpO2IrPSJUZXh0IixudWxsPT1mLnJlc2V0VGV4dCYmZC5kYXRhKCJyZXNldFRleHQiLGRbZV0oKSksc2V0VGltZW91dChhLnByb3h5KGZ1bmN0aW9uKCl7ZFtlXShudWxsPT1mW2JdP3RoaXMub3B0aW9uc1tiXTpmW2JdKSwibG9hZGluZ1RleHQiPT1iPyh0aGlzLmlzTG9hZGluZz0hMCxkLmFkZENsYXNzKGMpLmF0dHIoYyxjKSk6dGhpcy5pc0xvYWRpbmcmJih0aGlzLmlzTG9hZGluZz0hMSxkLnJlbW92ZUNsYXNzKGMpLnJlbW92ZUF0dHIoYykpfSx0aGlzKSwwKX0sYy5wcm90b3R5cGUudG9nZ2xlPWZ1bmN0aW9uKCl7dmFyIGE9ITAsYj10aGlzLiRlbGVtZW50LmNsb3Nlc3QoJ1tkYXRhLXRvZ2dsZT0iYnV0dG9ucyJdJyk7aWYoYi5sZW5ndGgpe3ZhciBjPXRoaXMuJGVsZW1lbnQuZmluZCgiaW5wdXQiKTsicmFkaW8iPT1jLnByb3AoInR5cGUiKT8oYy5wcm9wKCJjaGVja2VkIikmJihhPSExKSxiLmZpbmQoIi5hY3RpdmUiKS5yZW1vdmVDbGFzcygiYWN0aXZlIiksdGhpcy4kZWxlbWVudC5hZGRDbGFzcygiYWN0aXZlIikpOiJjaGVja2JveCI9PWMucHJvcCgidHlwZSIpJiYoYy5wcm9wKCJjaGVja2VkIikhPT10aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJhY3RpdmUiKSYmKGE9ITEpLHRoaXMuJGVsZW1lbnQudG9nZ2xlQ2xhc3MoImFjdGl2ZSIpKSxjLnByb3AoImNoZWNrZWQiLHRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoImFjdGl2ZSIpKSxhJiZjLnRyaWdnZXIoImNoYW5nZSIpfWVsc2UgdGhpcy4kZWxlbWVudC5hdHRyKCJhcmlhLXByZXNzZWQiLCF0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJhY3RpdmUiKSksdGhpcy4kZWxlbWVudC50b2dnbGVDbGFzcygiYWN0aXZlIil9O3ZhciBkPWEuZm4uYnV0dG9uO2EuZm4uYnV0dG9uPWIsYS5mbi5idXR0b24uQ29uc3RydWN0b3I9YyxhLmZuLmJ1dHRvbi5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGEuZm4uYnV0dG9uPWQsdGhpc30sYShkb2N1bWVudCkub24oImNsaWNrLmJzLmJ1dHRvbi5kYXRhLWFwaSIsJ1tkYXRhLXRvZ2dsZV49ImJ1dHRvbiJdJyxmdW5jdGlvbihjKXt2YXIgZD1hKGMudGFyZ2V0KTtkLmhhc0NsYXNzKCJidG4iKXx8KGQ9ZC5jbG9zZXN0KCIuYnRuIikpLGIuY2FsbChkLCJ0b2dnbGUiKSxhKGMudGFyZ2V0KS5pcygnaW5wdXRbdHlwZT0icmFkaW8iXScpfHxhKGMudGFyZ2V0KS5pcygnaW5wdXRbdHlwZT0iY2hlY2tib3giXScpfHxjLnByZXZlbnREZWZhdWx0KCl9KS5vbigiZm9jdXMuYnMuYnV0dG9uLmRhdGEtYXBpIGJsdXIuYnMuYnV0dG9uLmRhdGEtYXBpIiwnW2RhdGEtdG9nZ2xlXj0iYnV0dG9uIl0nLGZ1bmN0aW9uKGIpe2EoYi50YXJnZXQpLmNsb3Nlc3QoIi5idG4iKS50b2dnbGVDbGFzcygiZm9jdXMiLC9eZm9jdXMoaW4pPyQvLnRlc3QoYi50eXBlKSl9KX0oalF1ZXJ5KSwrZnVuY3Rpb24oYSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGIoYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1kLmRhdGEoImJzLmNhcm91c2VsIiksZj1hLmV4dGVuZCh7fSxjLkRFRkFVTFRTLGQuZGF0YSgpLCJvYmplY3QiPT10eXBlb2YgYiYmYiksZz0ic3RyaW5nIj09dHlwZW9mIGI\/YjpmLnNsaWRlO2V8fGQuZGF0YSgiYnMuY2Fyb3VzZWwiLGU9bmV3IGModGhpcyxmKSksIm51bWJlciI9PXR5cGVvZiBiP2UudG8oYik6Zz9lW2ddKCk6Zi5pbnRlcnZhbCYmZS5wYXVzZSgpLmN5Y2xlKCl9KX12YXIgYz1mdW5jdGlvbihiLGMpe3RoaXMuJGVsZW1lbnQ9YShiKSx0aGlzLiRpbmRpY2F0b3JzPXRoaXMuJGVsZW1lbnQuZmluZCgiLmNhcm91c2VsLWluZGljYXRvcnMiKSx0aGlzLm9wdGlvbnM9Yyx0aGlzLnBhdXNlZD1udWxsLHRoaXMuc2xpZGluZz1udWxsLHRoaXMuaW50ZXJ2YWw9bnVsbCx0aGlzLiRhY3RpdmU9bnVsbCx0aGlzLiRpdGVtcz1udWxsLHRoaXMub3B0aW9ucy5rZXlib2FyZCYmdGhpcy4kZWxlbWVudC5vbigia2V5ZG93bi5icy5jYXJvdXNlbCIsYS5wcm94eSh0aGlzLmtleWRvd24sdGhpcykpLCJob3ZlciI9PXRoaXMub3B0aW9ucy5wYXVzZSYmISgib250b3VjaHN0YXJ0ImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkmJnRoaXMuJGVsZW1lbnQub24oIm1vdXNlZW50ZXIuYnMuY2Fyb3VzZWwiLGEucHJveHkodGhpcy5wYXVzZSx0aGlzKSkub24oIm1vdXNlbGVhdmUuYnMuY2Fyb3VzZWwiLGEucHJveHkodGhpcy5jeWNsZSx0aGlzKSl9O2MuVkVSU0lPTj0iMy4zLjUiLGMuVFJBTlNJVElPTl9EVVJBVElPTj02MDAsYy5ERUZBVUxUUz17aW50ZXJ2YWw6NWUzLHBhdXNlOiJob3ZlciIsd3JhcDohMCxrZXlib2FyZDohMH0sYy5wcm90b3R5cGUua2V5ZG93bj1mdW5jdGlvbihhKXtpZighL2lucHV0fHRleHRhcmVhL2kudGVzdChhLnRhcmdldC50YWdOYW1lKSl7c3dpdGNoKGEud2hpY2gpe2Nhc2UgMzc6dGhpcy5wcmV2KCk7YnJlYWs7Y2FzZSAzOTp0aGlzLm5leHQoKTticmVhaztkZWZhdWx0OnJldHVybn1hLnByZXZlbnREZWZhdWx0KCl9fSxjLnByb3RvdHlwZS5jeWNsZT1mdW5jdGlvbihiKXtyZXR1cm4gYnx8KHRoaXMucGF1c2VkPSExKSx0aGlzLmludGVydmFsJiZjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWwpLHRoaXMub3B0aW9ucy5pbnRlcnZhbCYmIXRoaXMucGF1c2VkJiYodGhpcy5pbnRlcnZhbD1zZXRJbnRlcnZhbChhLnByb3h5KHRoaXMubmV4dCx0aGlzKSx0aGlzLm9wdGlvbnMuaW50ZXJ2YWwpKSx0aGlzfSxjLnByb3RvdHlwZS5nZXRJdGVtSW5kZXg9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuJGl0ZW1zPWEucGFyZW50KCkuY2hpbGRyZW4oIi5pdGVtIiksdGhpcy4kaXRlbXMuaW5kZXgoYXx8dGhpcy4kYWN0aXZlKX0sYy5wcm90b3R5cGUuZ2V0SXRlbUZvckRpcmVjdGlvbj1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuZ2V0SXRlbUluZGV4KGIpLGQ9InByZXYiPT1hJiYwPT09Y3x8Im5leHQiPT1hJiZjPT10aGlzLiRpdGVtcy5sZW5ndGgtMTtpZihkJiYhdGhpcy5vcHRpb25zLndyYXApcmV0dXJuIGI7dmFyIGU9InByZXYiPT1hPy0xOjEsZj0oYytlKSV0aGlzLiRpdGVtcy5sZW5ndGg7cmV0dXJuIHRoaXMuJGl0ZW1zLmVxKGYpfSxjLnByb3RvdHlwZS50bz1mdW5jdGlvbihhKXt2YXIgYj10aGlzLGM9dGhpcy5nZXRJdGVtSW5kZXgodGhpcy4kYWN0aXZlPXRoaXMuJGVsZW1lbnQuZmluZCgiLml0ZW0uYWN0aXZlIikpO3JldHVybiBhPnRoaXMuJGl0ZW1zLmxlbmd0aC0xfHwwPmE\/dm9pZCAwOnRoaXMuc2xpZGluZz90aGlzLiRlbGVtZW50Lm9uZSgic2xpZC5icy5jYXJvdXNlbCIsZnVuY3Rpb24oKXtiLnRvKGEpfSk6Yz09YT90aGlzLnBhdXNlKCkuY3ljbGUoKTp0aGlzLnNsaWRlKGE+Yz8ibmV4dCI6InByZXYiLHRoaXMuJGl0ZW1zLmVxKGEpKX0sYy5wcm90b3R5cGUucGF1c2U9ZnVuY3Rpb24oYil7cmV0dXJuIGJ8fCh0aGlzLnBhdXNlZD0hMCksdGhpcy4kZWxlbWVudC5maW5kKCIubmV4dCwgLnByZXYiKS5sZW5ndGgmJmEuc3VwcG9ydC50cmFuc2l0aW9uJiYodGhpcy4kZWxlbWVudC50cmlnZ2VyKGEuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCksdGhpcy5jeWNsZSghMCkpLHRoaXMuaW50ZXJ2YWw9Y2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsKSx0aGlzfSxjLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2xpZGluZz92b2lkIDA6dGhpcy5zbGlkZSgibmV4dCIpfSxjLnByb3RvdHlwZS5wcmV2PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2xpZGluZz92b2lkIDA6dGhpcy5zbGlkZSgicHJldiIpfSxjLnByb3RvdHlwZS5zbGlkZT1mdW5jdGlvbihiLGQpe3ZhciBlPXRoaXMuJGVsZW1lbnQuZmluZCgiLml0ZW0uYWN0aXZlIiksZj1kfHx0aGlzLmdldEl0ZW1Gb3JEaXJlY3Rpb24oYixlKSxnPXRoaXMuaW50ZXJ2YWwsaD0ibmV4dCI9PWI\/ImxlZnQiOiJyaWdodCIsaT10aGlzO2lmKGYuaGFzQ2xhc3MoImFjdGl2ZSIpKXJldHVybiB0aGlzLnNsaWRpbmc9ITE7dmFyIGo9ZlswXSxrPWEuRXZlbnQoInNsaWRlLmJzLmNhcm91c2VsIix7cmVsYXRlZFRhcmdldDpqLGRpcmVjdGlvbjpofSk7aWYodGhpcy4kZWxlbWVudC50cmlnZ2VyKGspLCFrLmlzRGVmYXVsdFByZXZlbnRlZCgpKXtpZih0aGlzLnNsaWRpbmc9ITAsZyYmdGhpcy5wYXVzZSgpLHRoaXMuJGluZGljYXRvcnMubGVuZ3RoKXt0aGlzLiRpbmRpY2F0b3JzLmZpbmQoIi5hY3RpdmUiKS5yZW1vdmVDbGFzcygiYWN0aXZlIik7dmFyIGw9YSh0aGlzLiRpbmRpY2F0b3JzLmNoaWxkcmVuKClbdGhpcy5nZXRJdGVtSW5kZXgoZildKTtsJiZsLmFkZENsYXNzKCJhY3RpdmUiKX12YXIgbT1hLkV2ZW50KCJzbGlkLmJzLmNhcm91c2VsIix7cmVsYXRlZFRhcmdldDpqLGRpcmVjdGlvbjpofSk7cmV0dXJuIGEuc3VwcG9ydC50cmFuc2l0aW9uJiZ0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJzbGlkZSIpPyhmLmFkZENsYXNzKGIpLGZbMF0ub2Zmc2V0V2lkdGgsZS5hZGRDbGFzcyhoKSxmLmFkZENsYXNzKGgpLGUub25lKCJic1RyYW5zaXRpb25FbmQiLGZ1bmN0aW9uKCl7Zi5yZW1vdmVDbGFzcyhbYixoXS5qb2luKCIgIikpLmFkZENsYXNzKCJhY3RpdmUiKSxlLnJlbW92ZUNsYXNzKFsiYWN0aXZlIixoXS5qb2luKCIgIikpLGkuc2xpZGluZz0hMSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aS4kZWxlbWVudC50cmlnZ2VyKG0pfSwwKX0pLmVtdWxhdGVUcmFuc2l0aW9uRW5kKGMuVFJBTlNJVElPTl9EVVJBVElPTikpOihlLnJlbW92ZUNsYXNzKCJhY3RpdmUiKSxmLmFkZENsYXNzKCJhY3RpdmUiKSx0aGlzLnNsaWRpbmc9ITEsdGhpcy4kZWxlbWVudC50cmlnZ2VyKG0pKSxnJiZ0aGlzLmN5Y2xlKCksdGhpc319O3ZhciBkPWEuZm4uY2Fyb3VzZWw7YS5mbi5jYXJvdXNlbD1iLGEuZm4uY2Fyb3VzZWwuQ29uc3RydWN0b3I9YyxhLmZuLmNhcm91c2VsLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gYS5mbi5jYXJvdXNlbD1kLHRoaXN9O3ZhciBlPWZ1bmN0aW9uKGMpe3ZhciBkLGU9YSh0aGlzKSxmPWEoZS5hdHRyKCJkYXRhLXRhcmdldCIpfHwoZD1lLmF0dHIoImhyZWYiKSkmJmQucmVwbGFjZSgvLiooPz0jW15cc10rJCkvLCIiKSk7aWYoZi5oYXNDbGFzcygiY2Fyb3VzZWwiKSl7dmFyIGc9YS5leHRlbmQoe30sZi5kYXRhKCksZS5kYXRhKCkpLGg9ZS5hdHRyKCJkYXRhLXNsaWRlLXRvIik7aCYmKGcuaW50ZXJ2YWw9ITEpLGIuY2FsbChmLGcpLGgmJmYuZGF0YSgiYnMuY2Fyb3VzZWwiKS50byhoKSxjLnByZXZlbnREZWZhdWx0KCl9fTthKGRvY3VtZW50KS5vbigiY2xpY2suYnMuY2Fyb3VzZWwuZGF0YS1hcGkiLCJbZGF0YS1zbGlkZV0iLGUpLm9uKCJjbGljay5icy5jYXJvdXNlbC5kYXRhLWFwaSIsIltkYXRhLXNsaWRlLXRvXSIsZSksYSh3aW5kb3cpLm9uKCJsb2FkIixmdW5jdGlvbigpe2EoJ1tkYXRhLXJpZGU9ImNhcm91c2VsIl0nKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGM9YSh0aGlzKTtiLmNhbGwoYyxjLmRhdGEoKSl9KX0pfShqUXVlcnkpLCtmdW5jdGlvbihhKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYihiKXt2YXIgYyxkPWIuYXR0cigiZGF0YS10YXJnZXQiKXx8KGM9Yi5hdHRyKCJocmVmIikpJiZjLnJlcGxhY2UoLy4qKD89I1teXHNdKyQpLywiIik7cmV0dXJuIGEoZCl9ZnVuY3Rpb24gYyhiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGM9YSh0aGlzKSxlPWMuZGF0YSgiYnMuY29sbGFwc2UiKSxmPWEuZXh0ZW5kKHt9LGQuREVGQVVMVFMsYy5kYXRhKCksIm9iamVjdCI9PXR5cGVvZiBiJiZiKTshZSYmZi50b2dnbGUmJi9zaG93fGhpZGUvLnRlc3QoYikmJihmLnRvZ2dsZT0hMSksZXx8Yy5kYXRhKCJicy5jb2xsYXBzZSIsZT1uZXcgZCh0aGlzLGYpKSwic3RyaW5nIj09dHlwZW9mIGImJmVbYl0oKX0pfXZhciBkPWZ1bmN0aW9uKGIsYyl7dGhpcy4kZWxlbWVudD1hKGIpLHRoaXMub3B0aW9ucz1hLmV4dGVuZCh7fSxkLkRFRkFVTFRTLGMpLHRoaXMuJHRyaWdnZXI9YSgnW2RhdGEtdG9nZ2xlPSJjb2xsYXBzZSJdW2hyZWY9IiMnK2IuaWQrJyJdLFtkYXRhLXRvZ2dsZT0iY29sbGFwc2UiXVtkYXRhLXRhcmdldD0iIycrYi5pZCsnIl0nKSx0aGlzLnRyYW5zaXRpb25pbmc9bnVsbCx0aGlzLm9wdGlvbnMucGFyZW50P3RoaXMuJHBhcmVudD10aGlzLmdldFBhcmVudCgpOnRoaXMuYWRkQXJpYUFuZENvbGxhcHNlZENsYXNzKHRoaXMuJGVsZW1lbnQsdGhpcy4kdHJpZ2dlciksdGhpcy5vcHRpb25zLnRvZ2dsZSYmdGhpcy50b2dnbGUoKX07ZC5WRVJTSU9OPSIzLjMuNSIsZC5UUkFOU0lUSU9OX0RVUkFUSU9OPTM1MCxkLkRFRkFVTFRTPXt0b2dnbGU6ITB9LGQucHJvdG90eXBlLmRpbWVuc2lvbj1mdW5jdGlvbigpe3ZhciBhPXRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoIndpZHRoIik7cmV0dXJuIGE\/IndpZHRoIjoiaGVpZ2h0In0sZC5wcm90b3R5cGUuc2hvdz1mdW5jdGlvbigpe2lmKCF0aGlzLnRyYW5zaXRpb25pbmcmJiF0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJpbiIpKXt2YXIgYixlPXRoaXMuJHBhcmVudCYmdGhpcy4kcGFyZW50LmNoaWxkcmVuKCIucGFuZWwiKS5jaGlsZHJlbigiLmluLCAuY29sbGFwc2luZyIpO2lmKCEoZSYmZS5sZW5ndGgmJihiPWUuZGF0YSgiYnMuY29sbGFwc2UiKSxiJiZiLnRyYW5zaXRpb25pbmcpKSl7dmFyIGY9YS5FdmVudCgic2hvdy5icy5jb2xsYXBzZSIpO2lmKHRoaXMuJGVsZW1lbnQudHJpZ2dlcihmKSwhZi5pc0RlZmF1bHRQcmV2ZW50ZWQoKSl7ZSYmZS5sZW5ndGgmJihjLmNhbGwoZSwiaGlkZSIpLGJ8fGUuZGF0YSgiYnMuY29sbGFwc2UiLG51bGwpKTt2YXIgZz10aGlzLmRpbWVuc2lvbigpO3RoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoImNvbGxhcHNlIikuYWRkQ2xhc3MoImNvbGxhcHNpbmciKVtnXSgwKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwhMCksdGhpcy4kdHJpZ2dlci5yZW1vdmVDbGFzcygiY29sbGFwc2VkIikuYXR0cigiYXJpYS1leHBhbmRlZCIsITApLHRoaXMudHJhbnNpdGlvbmluZz0xO3ZhciBoPWZ1bmN0aW9uKCl7dGhpcy4kZWxlbWVudC5yZW1vdmVDbGFzcygiY29sbGFwc2luZyIpLmFkZENsYXNzKCJjb2xsYXBzZSBpbiIpW2ddKCIiKSx0aGlzLnRyYW5zaXRpb25pbmc9MCx0aGlzLiRlbGVtZW50LnRyaWdnZXIoInNob3duLmJzLmNvbGxhcHNlIil9O2lmKCFhLnN1cHBvcnQudHJhbnNpdGlvbilyZXR1cm4gaC5jYWxsKHRoaXMpO3ZhciBpPWEuY2FtZWxDYXNlKFsic2Nyb2xsIixnXS5qb2luKCItIikpO3RoaXMuJGVsZW1lbnQub25lKCJic1RyYW5zaXRpb25FbmQiLGEucHJveHkoaCx0aGlzKSkuZW11bGF0ZVRyYW5zaXRpb25FbmQoZC5UUkFOU0lUSU9OX0RVUkFUSU9OKVtnXSh0aGlzLiRlbGVtZW50WzBdW2ldKX19fX0sZC5wcm90b3R5cGUuaGlkZT1mdW5jdGlvbigpe2lmKCF0aGlzLnRyYW5zaXRpb25pbmcmJnRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoImluIikpe3ZhciBiPWEuRXZlbnQoImhpZGUuYnMuY29sbGFwc2UiKTtpZih0aGlzLiRlbGVtZW50LnRyaWdnZXIoYiksIWIuaXNEZWZhdWx0UHJldmVudGVkKCkpe3ZhciBjPXRoaXMuZGltZW5zaW9uKCk7dGhpcy4kZWxlbWVudFtjXSh0aGlzLiRlbGVtZW50W2NdKCkpWzBdLm9mZnNldEhlaWdodCx0aGlzLiRlbGVtZW50LmFkZENsYXNzKCJjb2xsYXBzaW5nIikucmVtb3ZlQ2xhc3MoImNvbGxhcHNlIGluIikuYXR0cigiYXJpYS1leHBhbmRlZCIsITEpLHRoaXMuJHRyaWdnZXIuYWRkQ2xhc3MoImNvbGxhcHNlZCIpLmF0dHIoImFyaWEtZXhwYW5kZWQiLCExKSx0aGlzLnRyYW5zaXRpb25pbmc9MTt2YXIgZT1mdW5jdGlvbigpe3RoaXMudHJhbnNpdGlvbmluZz0wLHRoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoImNvbGxhcHNpbmciKS5hZGRDbGFzcygiY29sbGFwc2UiKS50cmlnZ2VyKCJoaWRkZW4uYnMuY29sbGFwc2UiKX07cmV0dXJuIGEuc3VwcG9ydC50cmFuc2l0aW9uP3ZvaWQgdGhpcy4kZWxlbWVudFtjXSgwKS5vbmUoImJzVHJhbnNpdGlvbkVuZCIsYS5wcm94eShlLHRoaXMpKS5lbXVsYXRlVHJhbnNpdGlvbkVuZChkLlRSQU5TSVRJT05fRFVSQVRJT04pOmUuY2FsbCh0aGlzKX19fSxkLnByb3RvdHlwZS50b2dnbGU9ZnVuY3Rpb24oKXt0aGlzW3RoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoImluIik\/ImhpZGUiOiJzaG93Il0oKX0sZC5wcm90b3R5cGUuZ2V0UGFyZW50PWZ1bmN0aW9uKCl7cmV0dXJuIGEodGhpcy5vcHRpb25zLnBhcmVudCkuZmluZCgnW2RhdGEtdG9nZ2xlPSJjb2xsYXBzZSJdW2RhdGEtcGFyZW50PSInK3RoaXMub3B0aW9ucy5wYXJlbnQrJyJdJykuZWFjaChhLnByb3h5KGZ1bmN0aW9uKGMsZCl7dmFyIGU9YShkKTt0aGlzLmFkZEFyaWFBbmRDb2xsYXBzZWRDbGFzcyhiKGUpLGUpfSx0aGlzKSkuZW5kKCl9LGQucHJvdG90eXBlLmFkZEFyaWFBbmRDb2xsYXBzZWRDbGFzcz1mdW5jdGlvbihhLGIpe3ZhciBjPWEuaGFzQ2xhc3MoImluIik7YS5hdHRyKCJhcmlhLWV4cGFuZGVkIixjKSxiLnRvZ2dsZUNsYXNzKCJjb2xsYXBzZWQiLCFjKS5hdHRyKCJhcmlhLWV4cGFuZGVkIixjKX07dmFyIGU9YS5mbi5jb2xsYXBzZTthLmZuLmNvbGxhcHNlPWMsYS5mbi5jb2xsYXBzZS5Db25zdHJ1Y3Rvcj1kLGEuZm4uY29sbGFwc2Uubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLmNvbGxhcHNlPWUsdGhpc30sYShkb2N1bWVudCkub24oImNsaWNrLmJzLmNvbGxhcHNlLmRhdGEtYXBpIiwnW2RhdGEtdG9nZ2xlPSJjb2xsYXBzZSJdJyxmdW5jdGlvbihkKXt2YXIgZT1hKHRoaXMpO2UuYXR0cigiZGF0YS10YXJnZXQiKXx8ZC5wcmV2ZW50RGVmYXVsdCgpO3ZhciBmPWIoZSksZz1mLmRhdGEoImJzLmNvbGxhcHNlIiksaD1nPyJ0b2dnbGUiOmUuZGF0YSgpO2MuY2FsbChmLGgpfSl9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGIpe3ZhciBjPWIuYXR0cigiZGF0YS10YXJnZXQiKTtjfHwoYz1iLmF0dHIoImhyZWYiKSxjPWMmJi8jW0EtWmEtel0vLnRlc3QoYykmJmMucmVwbGFjZSgvLiooPz0jW15cc10qJCkvLCIiKSk7dmFyIGQ9YyYmYShjKTtyZXR1cm4gZCYmZC5sZW5ndGg\/ZDpiLnBhcmVudCgpfWZ1bmN0aW9uIGMoYyl7YyYmMz09PWMud2hpY2h8fChhKGUpLnJlbW92ZSgpLGEoZikuZWFjaChmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1iKGQpLGY9e3JlbGF0ZWRUYXJnZXQ6dGhpc307ZS5oYXNDbGFzcygib3BlbiIpJiYoYyYmImNsaWNrIj09Yy50eXBlJiYvaW5wdXR8dGV4dGFyZWEvaS50ZXN0KGMudGFyZ2V0LnRhZ05hbWUpJiZhLmNvbnRhaW5zKGVbMF0sYy50YXJnZXQpfHwoZS50cmlnZ2VyKGM9YS5FdmVudCgiaGlkZS5icy5kcm9wZG93biIsZikpLGMuaXNEZWZhdWx0UHJldmVudGVkKCl8fChkLmF0dHIoImFyaWEtZXhwYW5kZWQiLCJmYWxzZSIpLGUucmVtb3ZlQ2xhc3MoIm9wZW4iKS50cmlnZ2VyKCJoaWRkZW4uYnMuZHJvcGRvd24iLGYpKSkpfSkpfWZ1bmN0aW9uIGQoYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBjPWEodGhpcyksZD1jLmRhdGEoImJzLmRyb3Bkb3duIik7ZHx8Yy5kYXRhKCJicy5kcm9wZG93biIsZD1uZXcgZyh0aGlzKSksInN0cmluZyI9PXR5cGVvZiBiJiZkW2JdLmNhbGwoYyl9KX12YXIgZT0iLmRyb3Bkb3duLWJhY2tkcm9wIixmPSdbZGF0YS10b2dnbGU9ImRyb3Bkb3duIl0nLGc9ZnVuY3Rpb24oYil7YShiKS5vbigiY2xpY2suYnMuZHJvcGRvd24iLHRoaXMudG9nZ2xlKX07Zy5WRVJTSU9OPSIzLjMuNSIsZy5wcm90b3R5cGUudG9nZ2xlPWZ1bmN0aW9uKGQpe3ZhciBlPWEodGhpcyk7aWYoIWUuaXMoIi5kaXNhYmxlZCwgOmRpc2FibGVkIikpe3ZhciBmPWIoZSksZz1mLmhhc0NsYXNzKCJvcGVuIik7aWYoYygpLCFnKXsib250b3VjaHN0YXJ0ImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCYmIWYuY2xvc2VzdCgiLm5hdmJhci1uYXYiKS5sZW5ndGgmJmEoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLmFkZENsYXNzKCJkcm9wZG93bi1iYWNrZHJvcCIpLmluc2VydEFmdGVyKGEodGhpcykpLm9uKCJjbGljayIsYyk7dmFyIGg9e3JlbGF0ZWRUYXJnZXQ6dGhpc307aWYoZi50cmlnZ2VyKGQ9YS5FdmVudCgic2hvdy5icy5kcm9wZG93biIsaCkpLGQuaXNEZWZhdWx0UHJldmVudGVkKCkpcmV0dXJuO2UudHJpZ2dlcigiZm9jdXMiKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwidHJ1ZSIpLGYudG9nZ2xlQ2xhc3MoIm9wZW4iKS50cmlnZ2VyKCJzaG93bi5icy5kcm9wZG93biIsaCl9cmV0dXJuITF9fSxnLnByb3RvdHlwZS5rZXlkb3duPWZ1bmN0aW9uKGMpe2lmKC8oMzh8NDB8Mjd8MzIpLy50ZXN0KGMud2hpY2gpJiYhL2lucHV0fHRleHRhcmVhL2kudGVzdChjLnRhcmdldC50YWdOYW1lKSl7dmFyIGQ9YSh0aGlzKTtpZihjLnByZXZlbnREZWZhdWx0KCksYy5zdG9wUHJvcGFnYXRpb24oKSwhZC5pcygiLmRpc2FibGVkLCA6ZGlzYWJsZWQiKSl7dmFyIGU9YihkKSxnPWUuaGFzQ2xhc3MoIm9wZW4iKTtpZighZyYmMjchPWMud2hpY2h8fGcmJjI3PT1jLndoaWNoKXJldHVybiAyNz09Yy53aGljaCYmZS5maW5kKGYpLnRyaWdnZXIoImZvY3VzIiksZC50cmlnZ2VyKCJjbGljayIpO3ZhciBoPSIgbGk6bm90KC5kaXNhYmxlZCk6dmlzaWJsZSBhIixpPWUuZmluZCgiLmRyb3Bkb3duLW1lbnUiK2gpO2lmKGkubGVuZ3RoKXt2YXIgaj1pLmluZGV4KGMudGFyZ2V0KTszOD09Yy53aGljaCYmaj4wJiZqLS0sNDA9PWMud2hpY2gmJmo8aS5sZW5ndGgtMSYmaisrLH5qfHwoaj0wKSxpLmVxKGopLnRyaWdnZXIoImZvY3VzIil9fX19O3ZhciBoPWEuZm4uZHJvcGRvd247YS5mbi5kcm9wZG93bj1kLGEuZm4uZHJvcGRvd24uQ29uc3RydWN0b3I9ZyxhLmZuLmRyb3Bkb3duLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gYS5mbi5kcm9wZG93bj1oLHRoaXN9LGEoZG9jdW1lbnQpLm9uKCJjbGljay5icy5kcm9wZG93bi5kYXRhLWFwaSIsYykub24oImNsaWNrLmJzLmRyb3Bkb3duLmRhdGEtYXBpIiwiLmRyb3Bkb3duIGZvcm0iLGZ1bmN0aW9uKGEpe2Euc3RvcFByb3BhZ2F0aW9uKCl9KS5vbigiY2xpY2suYnMuZHJvcGRvd24uZGF0YS1hcGkiLGYsZy5wcm90b3R5cGUudG9nZ2xlKS5vbigia2V5ZG93bi5icy5kcm9wZG93bi5kYXRhLWFwaSIsZixnLnByb3RvdHlwZS5rZXlkb3duKS5vbigia2V5ZG93bi5icy5kcm9wZG93bi5kYXRhLWFwaSIsIi5kcm9wZG93bi1tZW51IixnLnByb3RvdHlwZS5rZXlkb3duKX0oalF1ZXJ5KSwrZnVuY3Rpb24oYSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGIoYixkKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9YSh0aGlzKSxmPWUuZGF0YSgiYnMubW9kYWwiKSxnPWEuZXh0ZW5kKHt9LGMuREVGQVVMVFMsZS5kYXRhKCksIm9iamVjdCI9PXR5cGVvZiBiJiZiKTtmfHxlLmRhdGEoImJzLm1vZGFsIixmPW5ldyBjKHRoaXMsZykpLCJzdHJpbmciPT10eXBlb2YgYj9mW2JdKGQpOmcuc2hvdyYmZi5zaG93KGQpfSl9dmFyIGM9ZnVuY3Rpb24oYixjKXt0aGlzLm9wdGlvbnM9Yyx0aGlzLiRib2R5PWEoZG9jdW1lbnQuYm9keSksdGhpcy4kZWxlbWVudD1hKGIpLHRoaXMuJGRpYWxvZz10aGlzLiRlbGVtZW50LmZpbmQoIi5tb2RhbC1kaWFsb2ciKSx0aGlzLiRiYWNrZHJvcD1udWxsLHRoaXMuaXNTaG93bj1udWxsLHRoaXMub3JpZ2luYWxCb2R5UGFkPW51bGwsdGhpcy5zY3JvbGxiYXJXaWR0aD0wLHRoaXMuaWdub3JlQmFja2Ryb3BDbGljaz0hMSx0aGlzLm9wdGlvbnMucmVtb3RlJiZ0aGlzLiRlbGVtZW50LmZpbmQoIi5tb2RhbC1jb250ZW50IikubG9hZCh0aGlzLm9wdGlvbnMucmVtb3RlLGEucHJveHkoZnVuY3Rpb24oKXt0aGlzLiRlbGVtZW50LnRyaWdnZXIoImxvYWRlZC5icy5tb2RhbCIpfSx0aGlzKSl9O2MuVkVSU0lPTj0iMy4zLjUiLGMuVFJBTlNJVElPTl9EVVJBVElPTj0zMDAsYy5CQUNLRFJPUF9UUkFOU0lUSU9OX0RVUkFUSU9OPTE1MCxjLkRFRkFVTFRTPXtiYWNrZHJvcDohMCxrZXlib2FyZDohMCxzaG93OiEwfSxjLnByb3RvdHlwZS50b2dnbGU9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuaXNTaG93bj90aGlzLmhpZGUoKTp0aGlzLnNob3coYSl9LGMucHJvdG90eXBlLnNob3c9ZnVuY3Rpb24oYil7dmFyIGQ9dGhpcyxlPWEuRXZlbnQoInNob3cuYnMubW9kYWwiLHtyZWxhdGVkVGFyZ2V0OmJ9KTt0aGlzLiRlbGVtZW50LnRyaWdnZXIoZSksdGhpcy5pc1Nob3dufHxlLmlzRGVmYXVsdFByZXZlbnRlZCgpfHwodGhpcy5pc1Nob3duPSEwLHRoaXMuY2hlY2tTY3JvbGxiYXIoKSx0aGlzLnNldFNjcm9sbGJhcigpLHRoaXMuJGJvZHkuYWRkQ2xhc3MoIm1vZGFsLW9wZW4iKSx0aGlzLmVzY2FwZSgpLHRoaXMucmVzaXplKCksdGhpcy4kZWxlbWVudC5vbigiY2xpY2suZGlzbWlzcy5icy5tb2RhbCIsJ1tkYXRhLWRpc21pc3M9Im1vZGFsIl0nLGEucHJveHkodGhpcy5oaWRlLHRoaXMpKSx0aGlzLiRkaWFsb2cub24oIm1vdXNlZG93bi5kaXNtaXNzLmJzLm1vZGFsIixmdW5jdGlvbigpe2QuJGVsZW1lbnQub25lKCJtb3VzZXVwLmRpc21pc3MuYnMubW9kYWwiLGZ1bmN0aW9uKGIpe2EoYi50YXJnZXQpLmlzKGQuJGVsZW1lbnQpJiYoZC5pZ25vcmVCYWNrZHJvcENsaWNrPSEwKX0pfSksdGhpcy5iYWNrZHJvcChmdW5jdGlvbigpe3ZhciBlPWEuc3VwcG9ydC50cmFuc2l0aW9uJiZkLiRlbGVtZW50Lmhhc0NsYXNzKCJmYWRlIik7ZC4kZWxlbWVudC5wYXJlbnQoKS5sZW5ndGh8fGQuJGVsZW1lbnQuYXBwZW5kVG8oZC4kYm9keSksZC4kZWxlbWVudC5zaG93KCkuc2Nyb2xsVG9wKDApLGQuYWRqdXN0RGlhbG9nKCksZSYmZC4kZWxlbWVudFswXS5vZmZzZXRXaWR0aCxkLiRlbGVtZW50LmFkZENsYXNzKCJpbiIpLGQuZW5mb3JjZUZvY3VzKCk7dmFyIGY9YS5FdmVudCgic2hvd24uYnMubW9kYWwiLHtyZWxhdGVkVGFyZ2V0OmJ9KTtlP2QuJGRpYWxvZy5vbmUoImJzVHJhbnNpdGlvbkVuZCIsZnVuY3Rpb24oKXtkLiRlbGVtZW50LnRyaWdnZXIoImZvY3VzIikudHJpZ2dlcihmKX0pLmVtdWxhdGVUcmFuc2l0aW9uRW5kKGMuVFJBTlNJVElPTl9EVVJBVElPTik6ZC4kZWxlbWVudC50cmlnZ2VyKCJmb2N1cyIpLnRyaWdnZXIoZil9KSl9LGMucHJvdG90eXBlLmhpZGU9ZnVuY3Rpb24oYil7YiYmYi5wcmV2ZW50RGVmYXVsdCgpLGI9YS5FdmVudCgiaGlkZS5icy5tb2RhbCIpLHRoaXMuJGVsZW1lbnQudHJpZ2dlcihiKSx0aGlzLmlzU2hvd24mJiFiLmlzRGVmYXVsdFByZXZlbnRlZCgpJiYodGhpcy5pc1Nob3duPSExLHRoaXMuZXNjYXBlKCksdGhpcy5yZXNpemUoKSxhKGRvY3VtZW50KS5vZmYoImZvY3VzaW4uYnMubW9kYWwiKSx0aGlzLiRlbGVtZW50LnJlbW92ZUNsYXNzKCJpbiIpLm9mZigiY2xpY2suZGlzbWlzcy5icy5tb2RhbCIpLm9mZigibW91c2V1cC5kaXNtaXNzLmJzLm1vZGFsIiksdGhpcy4kZGlhbG9nLm9mZigibW91c2Vkb3duLmRpc21pc3MuYnMubW9kYWwiKSxhLnN1cHBvcnQudHJhbnNpdGlvbiYmdGhpcy4kZWxlbWVudC5oYXNDbGFzcygiZmFkZSIpP3RoaXMuJGVsZW1lbnQub25lKCJic1RyYW5zaXRpb25FbmQiLGEucHJveHkodGhpcy5oaWRlTW9kYWwsdGhpcykpLmVtdWxhdGVUcmFuc2l0aW9uRW5kKGMuVFJBTlNJVElPTl9EVVJBVElPTik6dGhpcy5oaWRlTW9kYWwoKSl9LGMucHJvdG90eXBlLmVuZm9yY2VGb2N1cz1mdW5jdGlvbigpe2EoZG9jdW1lbnQpLm9mZigiZm9jdXNpbi5icy5tb2RhbCIpLm9uKCJmb2N1c2luLmJzLm1vZGFsIixhLnByb3h5KGZ1bmN0aW9uKGEpe3RoaXMuJGVsZW1lbnRbMF09PT1hLnRhcmdldHx8dGhpcy4kZWxlbWVudC5oYXMoYS50YXJnZXQpLmxlbmd0aHx8dGhpcy4kZWxlbWVudC50cmlnZ2VyKCJmb2N1cyIpfSx0aGlzKSl9LGMucHJvdG90eXBlLmVzY2FwZT1mdW5jdGlvbigpe3RoaXMuaXNTaG93biYmdGhpcy5vcHRpb25zLmtleWJvYXJkP3RoaXMuJGVsZW1lbnQub24oImtleWRvd24uZGlzbWlzcy5icy5tb2RhbCIsYS5wcm94eShmdW5jdGlvbihhKXsyNz09YS53aGljaCYmdGhpcy5oaWRlKCl9LHRoaXMpKTp0aGlzLmlzU2hvd258fHRoaXMuJGVsZW1lbnQub2ZmKCJrZXlkb3duLmRpc21pc3MuYnMubW9kYWwiKX0sYy5wcm90b3R5cGUucmVzaXplPWZ1bmN0aW9uKCl7dGhpcy5pc1Nob3duP2Eod2luZG93KS5vbigicmVzaXplLmJzLm1vZGFsIixhLnByb3h5KHRoaXMuaGFuZGxlVXBkYXRlLHRoaXMpKTphKHdpbmRvdykub2ZmKCJyZXNpemUuYnMubW9kYWwiKX0sYy5wcm90b3R5cGUuaGlkZU1vZGFsPWZ1bmN0aW9uKCl7dmFyIGE9dGhpczt0aGlzLiRlbGVtZW50LmhpZGUoKSx0aGlzLmJhY2tkcm9wKGZ1bmN0aW9uKCl7YS4kYm9keS5yZW1vdmVDbGFzcygibW9kYWwtb3BlbiIpLGEucmVzZXRBZGp1c3RtZW50cygpLGEucmVzZXRTY3JvbGxiYXIoKSxhLiRlbGVtZW50LnRyaWdnZXIoImhpZGRlbi5icy5tb2RhbCIpfSl9LGMucHJvdG90eXBlLnJlbW92ZUJhY2tkcm9wPWZ1bmN0aW9uKCl7dGhpcy4kYmFja2Ryb3AmJnRoaXMuJGJhY2tkcm9wLnJlbW92ZSgpLHRoaXMuJGJhY2tkcm9wPW51bGx9LGMucHJvdG90eXBlLmJhY2tkcm9wPWZ1bmN0aW9uKGIpe3ZhciBkPXRoaXMsZT10aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJmYWRlIik\/ImZhZGUiOiIiO2lmKHRoaXMuaXNTaG93biYmdGhpcy5vcHRpb25zLmJhY2tkcm9wKXt2YXIgZj1hLnN1cHBvcnQudHJhbnNpdGlvbiYmZTtpZih0aGlzLiRiYWNrZHJvcD1hKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKS5hZGRDbGFzcygibW9kYWwtYmFja2Ryb3AgIitlKS5hcHBlbmRUbyh0aGlzLiRib2R5KSx0aGlzLiRlbGVtZW50Lm9uKCJjbGljay5kaXNtaXNzLmJzLm1vZGFsIixhLnByb3h5KGZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmlnbm9yZUJhY2tkcm9wQ2xpY2s\/dm9pZCh0aGlzLmlnbm9yZUJhY2tkcm9wQ2xpY2s9ITEpOnZvaWQoYS50YXJnZXQ9PT1hLmN1cnJlbnRUYXJnZXQmJigic3RhdGljIj09dGhpcy5vcHRpb25zLmJhY2tkcm9wP3RoaXMuJGVsZW1lbnRbMF0uZm9jdXMoKTp0aGlzLmhpZGUoKSkpfSx0aGlzKSksZiYmdGhpcy4kYmFja2Ryb3BbMF0ub2Zmc2V0V2lkdGgsdGhpcy4kYmFja2Ryb3AuYWRkQ2xhc3MoImluIiksIWIpcmV0dXJuO2Y\/dGhpcy4kYmFja2Ryb3Aub25lKCJic1RyYW5zaXRpb25FbmQiLGIpLmVtdWxhdGVUcmFuc2l0aW9uRW5kKGMuQkFDS0RST1BfVFJBTlNJVElPTl9EVVJBVElPTik6YigpfWVsc2UgaWYoIXRoaXMuaXNTaG93biYmdGhpcy4kYmFja2Ryb3Ape3RoaXMuJGJhY2tkcm9wLnJlbW92ZUNsYXNzKCJpbiIpO3ZhciBnPWZ1bmN0aW9uKCl7ZC5yZW1vdmVCYWNrZHJvcCgpLGImJmIoKX07YS5zdXBwb3J0LnRyYW5zaXRpb24mJnRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoImZhZGUiKT90aGlzLiRiYWNrZHJvcC5vbmUoImJzVHJhbnNpdGlvbkVuZCIsZykuZW11bGF0ZVRyYW5zaXRpb25FbmQoYy5CQUNLRFJPUF9UUkFOU0lUSU9OX0RVUkFUSU9OKTpnKCl9ZWxzZSBiJiZiKCl9LGMucHJvdG90eXBlLmhhbmRsZVVwZGF0ZT1mdW5jdGlvbigpe3RoaXMuYWRqdXN0RGlhbG9nKCl9LGMucHJvdG90eXBlLmFkanVzdERpYWxvZz1mdW5jdGlvbigpe3ZhciBhPXRoaXMuJGVsZW1lbnRbMF0uc2Nyb2xsSGVpZ2h0PmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQ7dGhpcy4kZWxlbWVudC5jc3Moe3BhZGRpbmdMZWZ0OiF0aGlzLmJvZHlJc092ZXJmbG93aW5nJiZhP3RoaXMuc2Nyb2xsYmFyV2lkdGg6IiIscGFkZGluZ1JpZ2h0OnRoaXMuYm9keUlzT3ZlcmZsb3dpbmcmJiFhP3RoaXMuc2Nyb2xsYmFyV2lkdGg6IiJ9KX0sYy5wcm90b3R5cGUucmVzZXRBZGp1c3RtZW50cz1mdW5jdGlvbigpe3RoaXMuJGVsZW1lbnQuY3NzKHtwYWRkaW5nTGVmdDoiIixwYWRkaW5nUmlnaHQ6IiJ9KX0sYy5wcm90b3R5cGUuY2hlY2tTY3JvbGxiYXI9ZnVuY3Rpb24oKXt2YXIgYT13aW5kb3cuaW5uZXJXaWR0aDtpZighYSl7dmFyIGI9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2E9Yi5yaWdodC1NYXRoLmFicyhiLmxlZnQpfXRoaXMuYm9keUlzT3ZlcmZsb3dpbmc9ZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aDxhLHRoaXMuc2Nyb2xsYmFyV2lkdGg9dGhpcy5tZWFzdXJlU2Nyb2xsYmFyKCl9LGMucHJvdG90eXBlLnNldFNjcm9sbGJhcj1mdW5jdGlvbigpe3ZhciBhPXBhcnNlSW50KHRoaXMuJGJvZHkuY3NzKCJwYWRkaW5nLXJpZ2h0Iil8fDAsMTApO3RoaXMub3JpZ2luYWxCb2R5UGFkPWRvY3VtZW50LmJvZHkuc3R5bGUucGFkZGluZ1JpZ2h0fHwiIix0aGlzLmJvZHlJc092ZXJmbG93aW5nJiZ0aGlzLiRib2R5LmNzcygicGFkZGluZy1yaWdodCIsYSt0aGlzLnNjcm9sbGJhcldpZHRoKX0sYy5wcm90b3R5cGUucmVzZXRTY3JvbGxiYXI9ZnVuY3Rpb24oKXt0aGlzLiRib2R5LmNzcygicGFkZGluZy1yaWdodCIsdGhpcy5vcmlnaW5hbEJvZHlQYWQpfSxjLnByb3RvdHlwZS5tZWFzdXJlU2Nyb2xsYmFyPWZ1bmN0aW9uKCl7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7YS5jbGFzc05hbWU9Im1vZGFsLXNjcm9sbGJhci1tZWFzdXJlIix0aGlzLiRib2R5LmFwcGVuZChhKTt2YXIgYj1hLm9mZnNldFdpZHRoLWEuY2xpZW50V2lkdGg7cmV0dXJuIHRoaXMuJGJvZHlbMF0ucmVtb3ZlQ2hpbGQoYSksYn07dmFyIGQ9YS5mbi5tb2RhbDthLmZuLm1vZGFsPWIsYS5mbi5tb2RhbC5Db25zdHJ1Y3Rvcj1jLGEuZm4ubW9kYWwubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLm1vZGFsPWQsdGhpc30sYShkb2N1bWVudCkub24oImNsaWNrLmJzLm1vZGFsLmRhdGEtYXBpIiwnW2RhdGEtdG9nZ2xlPSJtb2RhbCJdJyxmdW5jdGlvbihjKXt2YXIgZD1hKHRoaXMpLGU9ZC5hdHRyKCJocmVmIiksZj1hKGQuYXR0cigiZGF0YS10YXJnZXQiKXx8ZSYmZS5yZXBsYWNlKC8uKig\/PSNbXlxzXSskKS8sIiIpKSxnPWYuZGF0YSgiYnMubW9kYWwiKT8idG9nZ2xlIjphLmV4dGVuZCh7cmVtb3RlOiEvIy8udGVzdChlKSYmZX0sZi5kYXRhKCksZC5kYXRhKCkpO2QuaXMoImEiKSYmYy5wcmV2ZW50RGVmYXVsdCgpLGYub25lKCJzaG93LmJzLm1vZGFsIixmdW5jdGlvbihhKXthLmlzRGVmYXVsdFByZXZlbnRlZCgpfHxmLm9uZSgiaGlkZGVuLmJzLm1vZGFsIixmdW5jdGlvbigpe2QuaXMoIjp2aXNpYmxlIikmJmQudHJpZ2dlcigiZm9jdXMiKX0pfSksYi5jYWxsKGYsZyx0aGlzKX0pfShqUXVlcnkpLCtmdW5jdGlvbihhKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYihiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGQ9YSh0aGlzKSxlPWQuZGF0YSgiYnMudG9vbHRpcCIpLGY9Im9iamVjdCI9PXR5cGVvZiBiJiZiOyhlfHwhL2Rlc3Ryb3l8aGlkZS8udGVzdChiKSkmJihlfHxkLmRhdGEoImJzLnRvb2x0aXAiLGU9bmV3IGModGhpcyxmKSksInN0cmluZyI9PXR5cGVvZiBiJiZlW2JdKCkpfSl9dmFyIGM9ZnVuY3Rpb24oYSxiKXt0aGlzLnR5cGU9bnVsbCx0aGlzLm9wdGlvbnM9bnVsbCx0aGlzLmVuYWJsZWQ9bnVsbCx0aGlzLnRpbWVvdXQ9bnVsbCx0aGlzLmhvdmVyU3RhdGU9bnVsbCx0aGlzLiRlbGVtZW50PW51bGwsdGhpcy5pblN0YXRlPW51bGwsdGhpcy5pbml0KCJ0b29sdGlwIixhLGIpfTtjLlZFUlNJT049IjMuMy41IixjLlRSQU5TSVRJT05fRFVSQVRJT049MTUwLGMuREVGQVVMVFM9e2FuaW1hdGlvbjohMCxwbGFjZW1lbnQ6InRvcCIsc2VsZWN0b3I6ITEsdGVtcGxhdGU6JzxkaXYgY2xhc3M9InRvb2x0aXAiIHJvbGU9InRvb2x0aXAiPjxkaXYgY2xhc3M9InRvb2x0aXAtYXJyb3ciPjwvZGl2PjxkaXYgY2xhc3M9InRvb2x0aXAtaW5uZXIiPjwvZGl2PjwvZGl2PicsdHJpZ2dlcjoiaG92ZXIgZm9jdXMiLHRpdGxlOiIiLGRlbGF5OjAsaHRtbDohMSxjb250YWluZXI6ITEsdmlld3BvcnQ6e3NlbGVjdG9yOiJib2R5IixwYWRkaW5nOjB9fSxjLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGIsYyxkKXtpZih0aGlzLmVuYWJsZWQ9ITAsdGhpcy50eXBlPWIsdGhpcy4kZWxlbWVudD1hKGMpLHRoaXMub3B0aW9ucz10aGlzLmdldE9wdGlvbnMoZCksdGhpcy4kdmlld3BvcnQ9dGhpcy5vcHRpb25zLnZpZXdwb3J0JiZhKGEuaXNGdW5jdGlvbih0aGlzLm9wdGlvbnMudmlld3BvcnQpP3RoaXMub3B0aW9ucy52aWV3cG9ydC5jYWxsKHRoaXMsdGhpcy4kZWxlbWVudCk6dGhpcy5vcHRpb25zLnZpZXdwb3J0LnNlbGVjdG9yfHx0aGlzLm9wdGlvbnMudmlld3BvcnQpLHRoaXMuaW5TdGF0ZT17Y2xpY2s6ITEsaG92ZXI6ITEsZm9jdXM6ITF9LHRoaXMuJGVsZW1lbnRbMF1pbnN0YW5jZW9mIGRvY3VtZW50LmNvbnN0cnVjdG9yJiYhdGhpcy5vcHRpb25zLnNlbGVjdG9yKXRocm93IG5ldyBFcnJvcigiYHNlbGVjdG9yYCBvcHRpb24gbXVzdCBiZSBzcGVjaWZpZWQgd2hlbiBpbml0aWFsaXppbmcgIit0aGlzLnR5cGUrIiBvbiB0aGUgd2luZG93LmRvY3VtZW50IG9iamVjdCEiKTtmb3IodmFyIGU9dGhpcy5vcHRpb25zLnRyaWdnZXIuc3BsaXQoIiAiKSxmPWUubGVuZ3RoO2YtLTspe3ZhciBnPWVbZl07aWYoImNsaWNrIj09Zyl0aGlzLiRlbGVtZW50Lm9uKCJjbGljay4iK3RoaXMudHlwZSx0aGlzLm9wdGlvbnMuc2VsZWN0b3IsYS5wcm94eSh0aGlzLnRvZ2dsZSx0aGlzKSk7ZWxzZSBpZigibWFudWFsIiE9Zyl7dmFyIGg9ImhvdmVyIj09Zz8ibW91c2VlbnRlciI6ImZvY3VzaW4iLGk9ImhvdmVyIj09Zz8ibW91c2VsZWF2ZSI6ImZvY3Vzb3V0Ijt0aGlzLiRlbGVtZW50Lm9uKGgrIi4iK3RoaXMudHlwZSx0aGlzLm9wdGlvbnMuc2VsZWN0b3IsYS5wcm94eSh0aGlzLmVudGVyLHRoaXMpKSx0aGlzLiRlbGVtZW50Lm9uKGkrIi4iK3RoaXMudHlwZSx0aGlzLm9wdGlvbnMuc2VsZWN0b3IsYS5wcm94eSh0aGlzLmxlYXZlLHRoaXMpKX19dGhpcy5vcHRpb25zLnNlbGVjdG9yP3RoaXMuX29wdGlvbnM9YS5leHRlbmQoe30sdGhpcy5vcHRpb25zLHt0cmlnZ2VyOiJtYW51YWwiLHNlbGVjdG9yOiIifSk6dGhpcy5maXhUaXRsZSgpfSxjLnByb3RvdHlwZS5nZXREZWZhdWx0cz1mdW5jdGlvbigpe3JldHVybiBjLkRFRkFVTFRTfSxjLnByb3RvdHlwZS5nZXRPcHRpb25zPWZ1bmN0aW9uKGIpe3JldHVybiBiPWEuZXh0ZW5kKHt9LHRoaXMuZ2V0RGVmYXVsdHMoKSx0aGlzLiRlbGVtZW50LmRhdGEoKSxiKSxiLmRlbGF5JiYibnVtYmVyIj09dHlwZW9mIGIuZGVsYXkmJihiLmRlbGF5PXtzaG93OmIuZGVsYXksaGlkZTpiLmRlbGF5fSksYn0sYy5wcm90b3R5cGUuZ2V0RGVsZWdhdGVPcHRpb25zPWZ1bmN0aW9uKCl7dmFyIGI9e30sYz10aGlzLmdldERlZmF1bHRzKCk7cmV0dXJuIHRoaXMuX29wdGlvbnMmJmEuZWFjaCh0aGlzLl9vcHRpb25zLGZ1bmN0aW9uKGEsZCl7Y1thXSE9ZCYmKGJbYV09ZCl9KSxifSxjLnByb3RvdHlwZS5lbnRlcj1mdW5jdGlvbihiKXt2YXIgYz1iIGluc3RhbmNlb2YgdGhpcy5jb25zdHJ1Y3Rvcj9iOmEoYi5jdXJyZW50VGFyZ2V0KS5kYXRhKCJicy4iK3RoaXMudHlwZSk7cmV0dXJuIGN8fChjPW5ldyB0aGlzLmNvbnN0cnVjdG9yKGIuY3VycmVudFRhcmdldCx0aGlzLmdldERlbGVnYXRlT3B0aW9ucygpKSxhKGIuY3VycmVudFRhcmdldCkuZGF0YSgiYnMuIit0aGlzLnR5cGUsYykpLGIgaW5zdGFuY2VvZiBhLkV2ZW50JiYoYy5pblN0YXRlWyJmb2N1c2luIj09Yi50eXBlPyJmb2N1cyI6ImhvdmVyIl09ITApLGMudGlwKCkuaGFzQ2xhc3MoImluIil8fCJpbiI9PWMuaG92ZXJTdGF0ZT92b2lkKGMuaG92ZXJTdGF0ZT0iaW4iKTooY2xlYXJUaW1lb3V0KGMudGltZW91dCksYy5ob3ZlclN0YXRlPSJpbiIsYy5vcHRpb25zLmRlbGF5JiZjLm9wdGlvbnMuZGVsYXkuc2hvdz92b2lkKGMudGltZW91dD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ImluIj09Yy5ob3ZlclN0YXRlJiZjLnNob3coKX0sYy5vcHRpb25zLmRlbGF5LnNob3cpKTpjLnNob3coKSl9LGMucHJvdG90eXBlLmlzSW5TdGF0ZVRydWU9ZnVuY3Rpb24oKXtmb3IodmFyIGEgaW4gdGhpcy5pblN0YXRlKWlmKHRoaXMuaW5TdGF0ZVthXSlyZXR1cm4hMDtyZXR1cm4hMX0sYy5wcm90b3R5cGUubGVhdmU9ZnVuY3Rpb24oYil7dmFyIGM9YiBpbnN0YW5jZW9mIHRoaXMuY29uc3RydWN0b3I\/YjphKGIuY3VycmVudFRhcmdldCkuZGF0YSgiYnMuIit0aGlzLnR5cGUpO3JldHVybiBjfHwoYz1uZXcgdGhpcy5jb25zdHJ1Y3RvcihiLmN1cnJlbnRUYXJnZXQsdGhpcy5nZXREZWxlZ2F0ZU9wdGlvbnMoKSksYShiLmN1cnJlbnRUYXJnZXQpLmRhdGEoImJzLiIrdGhpcy50eXBlLGMpKSxiIGluc3RhbmNlb2YgYS5FdmVudCYmKGMuaW5TdGF0ZVsiZm9jdXNvdXQiPT1iLnR5cGU\/ImZvY3VzIjoiaG92ZXIiXT0hMSksYy5pc0luU3RhdGVUcnVlKCk\/dm9pZCAwOihjbGVhclRpbWVvdXQoYy50aW1lb3V0KSxjLmhvdmVyU3RhdGU9Im91dCIsYy5vcHRpb25zLmRlbGF5JiZjLm9wdGlvbnMuZGVsYXkuaGlkZT92b2lkKGMudGltZW91dD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Im91dCI9PWMuaG92ZXJTdGF0ZSYmYy5oaWRlKCl9LGMub3B0aW9ucy5kZWxheS5oaWRlKSk6Yy5oaWRlKCkpfSxjLnByb3RvdHlwZS5zaG93PWZ1bmN0aW9uKCl7dmFyIGI9YS5FdmVudCgic2hvdy5icy4iK3RoaXMudHlwZSk7aWYodGhpcy5oYXNDb250ZW50KCkmJnRoaXMuZW5hYmxlZCl7dGhpcy4kZWxlbWVudC50cmlnZ2VyKGIpO3ZhciBkPWEuY29udGFpbnModGhpcy4kZWxlbWVudFswXS5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCx0aGlzLiRlbGVtZW50WzBdKTtpZihiLmlzRGVmYXVsdFByZXZlbnRlZCgpfHwhZClyZXR1cm47dmFyIGU9dGhpcyxmPXRoaXMudGlwKCksZz10aGlzLmdldFVJRCh0aGlzLnR5cGUpO3RoaXMuc2V0Q29udGVudCgpLGYuYXR0cigiaWQiLGcpLHRoaXMuJGVsZW1lbnQuYXR0cigiYXJpYS1kZXNjcmliZWRieSIsZyksdGhpcy5vcHRpb25zLmFuaW1hdGlvbiYmZi5hZGRDbGFzcygiZmFkZSIpO3ZhciBoPSJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLm9wdGlvbnMucGxhY2VtZW50P3RoaXMub3B0aW9ucy5wbGFjZW1lbnQuY2FsbCh0aGlzLGZbMF0sdGhpcy4kZWxlbWVudFswXSk6dGhpcy5vcHRpb25zLnBsYWNlbWVudCxpPS9ccz9hdXRvP1xzPy9pLGo9aS50ZXN0KGgpO2omJihoPWgucmVwbGFjZShpLCIiKXx8InRvcCIpLGYuZGV0YWNoKCkuY3NzKHt0b3A6MCxsZWZ0OjAsZGlzcGxheToiYmxvY2sifSkuYWRkQ2xhc3MoaCkuZGF0YSgiYnMuIit0aGlzLnR5cGUsdGhpcyksdGhpcy5vcHRpb25zLmNvbnRhaW5lcj9mLmFwcGVuZFRvKHRoaXMub3B0aW9ucy5jb250YWluZXIpOmYuaW5zZXJ0QWZ0ZXIodGhpcy4kZWxlbWVudCksdGhpcy4kZWxlbWVudC50cmlnZ2VyKCJpbnNlcnRlZC5icy4iK3RoaXMudHlwZSk7dmFyIGs9dGhpcy5nZXRQb3NpdGlvbigpLGw9ZlswXS5vZmZzZXRXaWR0aCxtPWZbMF0ub2Zmc2V0SGVpZ2h0O2lmKGope3ZhciBuPWgsbz10aGlzLmdldFBvc2l0aW9uKHRoaXMuJHZpZXdwb3J0KTtoPSJib3R0b20iPT1oJiZrLmJvdHRvbSttPm8uYm90dG9tPyJ0b3AiOiJ0b3AiPT1oJiZrLnRvcC1tPG8udG9wPyJib3R0b20iOiJyaWdodCI9PWgmJmsucmlnaHQrbD5vLndpZHRoPyJsZWZ0IjoibGVmdCI9PWgmJmsubGVmdC1sPG8ubGVmdD8icmlnaHQiOmgsZi5yZW1vdmVDbGFzcyhuKS5hZGRDbGFzcyhoKX12YXIgcD10aGlzLmdldENhbGN1bGF0ZWRPZmZzZXQoaCxrLGwsbSk7dGhpcy5hcHBseVBsYWNlbWVudChwLGgpO3ZhciBxPWZ1bmN0aW9uKCl7dmFyIGE9ZS5ob3ZlclN0YXRlO2UuJGVsZW1lbnQudHJpZ2dlcigic2hvd24uYnMuIitlLnR5cGUpLGUuaG92ZXJTdGF0ZT1udWxsLCJvdXQiPT1hJiZlLmxlYXZlKGUpfTthLnN1cHBvcnQudHJhbnNpdGlvbiYmdGhpcy4kdGlwLmhhc0NsYXNzKCJmYWRlIik\/Zi5vbmUoImJzVHJhbnNpdGlvbkVuZCIscSkuZW11bGF0ZVRyYW5zaXRpb25FbmQoYy5UUkFOU0lUSU9OX0RVUkFUSU9OKTpxKCl9fSxjLnByb3RvdHlwZS5hcHBseVBsYWNlbWVudD1mdW5jdGlvbihiLGMpe3ZhciBkPXRoaXMudGlwKCksZT1kWzBdLm9mZnNldFdpZHRoLGY9ZFswXS5vZmZzZXRIZWlnaHQsZz1wYXJzZUludChkLmNzcygibWFyZ2luLXRvcCIpLDEwKSxoPXBhcnNlSW50KGQuY3NzKCJtYXJnaW4tbGVmdCIpLDEwKTtpc05hTihnKSYmKGc9MCksaXNOYU4oaCkmJihoPTApLGIudG9wKz1nLGIubGVmdCs9aCxhLm9mZnNldC5zZXRPZmZzZXQoZFswXSxhLmV4dGVuZCh7dXNpbmc6ZnVuY3Rpb24oYSl7ZC5jc3Moe3RvcDpNYXRoLnJvdW5kKGEudG9wKSxsZWZ0Ok1hdGgucm91bmQoYS5sZWZ0KX0pfX0sYiksMCksZC5hZGRDbGFzcygiaW4iKTt2YXIgaT1kWzBdLm9mZnNldFdpZHRoLGo9ZFswXS5vZmZzZXRIZWlnaHQ7InRvcCI9PWMmJmohPWYmJihiLnRvcD1iLnRvcCtmLWopO3ZhciBrPXRoaXMuZ2V0Vmlld3BvcnRBZGp1c3RlZERlbHRhKGMsYixpLGopO2subGVmdD9iLmxlZnQrPWsubGVmdDpiLnRvcCs9ay50b3A7dmFyIGw9L3RvcHxib3R0b20vLnRlc3QoYyksbT1sPzIqay5sZWZ0LWUraToyKmsudG9wLWYraixuPWw\/Im9mZnNldFdpZHRoIjoib2Zmc2V0SGVpZ2h0IjtkLm9mZnNldChiKSx0aGlzLnJlcGxhY2VBcnJvdyhtLGRbMF1bbl0sbCl9LGMucHJvdG90eXBlLnJlcGxhY2VBcnJvdz1mdW5jdGlvbihhLGIsYyl7dGhpcy5hcnJvdygpLmNzcyhjPyJsZWZ0IjoidG9wIiw1MCooMS1hL2IpKyIlIikuY3NzKGM\/InRvcCI6ImxlZnQiLCIiKX0sYy5wcm90b3R5cGUuc2V0Q29udGVudD1mdW5jdGlvbigpe3ZhciBhPXRoaXMudGlwKCksYj10aGlzLmdldFRpdGxlKCk7YS5maW5kKCIudG9vbHRpcC1pbm5lciIpW3RoaXMub3B0aW9ucy5odG1sPyJodG1sIjoidGV4dCJdKGIpLGEucmVtb3ZlQ2xhc3MoImZhZGUgaW4gdG9wIGJvdHRvbSBsZWZ0IHJpZ2h0Iil9LGMucHJvdG90eXBlLmhpZGU9ZnVuY3Rpb24oYil7ZnVuY3Rpb24gZCgpeyJpbiIhPWUuaG92ZXJTdGF0ZSYmZi5kZXRhY2goKSxlLiRlbGVtZW50LnJlbW92ZUF0dHIoImFyaWEtZGVzY3JpYmVkYnkiKS50cmlnZ2VyKCJoaWRkZW4uYnMuIitlLnR5cGUpLGImJmIoKX12YXIgZT10aGlzLGY9YSh0aGlzLiR0aXApLGc9YS5FdmVudCgiaGlkZS5icy4iK3RoaXMudHlwZSk7cmV0dXJuIHRoaXMuJGVsZW1lbnQudHJpZ2dlcihnKSxnLmlzRGVmYXVsdFByZXZlbnRlZCgpP3ZvaWQgMDooZi5yZW1vdmVDbGFzcygiaW4iKSxhLnN1cHBvcnQudHJhbnNpdGlvbiYmZi5oYXNDbGFzcygiZmFkZSIpP2Yub25lKCJic1RyYW5zaXRpb25FbmQiLGQpLmVtdWxhdGVUcmFuc2l0aW9uRW5kKGMuVFJBTlNJVElPTl9EVVJBVElPTik6ZCgpLHRoaXMuaG92ZXJTdGF0ZT1udWxsLHRoaXMpfSxjLnByb3RvdHlwZS5maXhUaXRsZT1mdW5jdGlvbigpe3ZhciBhPXRoaXMuJGVsZW1lbnQ7KGEuYXR0cigidGl0bGUiKXx8InN0cmluZyIhPXR5cGVvZiBhLmF0dHIoImRhdGEtb3JpZ2luYWwtdGl0bGUiKSkmJmEuYXR0cigiZGF0YS1vcmlnaW5hbC10aXRsZSIsYS5hdHRyKCJ0aXRsZSIpfHwiIikuYXR0cigidGl0bGUiLCIiKX0sYy5wcm90b3R5cGUuaGFzQ29udGVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFRpdGxlKCl9LGMucHJvdG90eXBlLmdldFBvc2l0aW9uPWZ1bmN0aW9uKGIpe2I9Ynx8dGhpcy4kZWxlbWVudDt2YXIgYz1iWzBdLGQ9IkJPRFkiPT1jLnRhZ05hbWUsZT1jLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO251bGw9PWUud2lkdGgmJihlPWEuZXh0ZW5kKHt9LGUse3dpZHRoOmUucmlnaHQtZS5sZWZ0LGhlaWdodDplLmJvdHRvbS1lLnRvcH0pKTt2YXIgZj1kP3t0b3A6MCxsZWZ0OjB9OmIub2Zmc2V0KCksZz17c2Nyb2xsOmQ\/ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcHx8ZG9jdW1lbnQuYm9keS5zY3JvbGxUb3A6Yi5zY3JvbGxUb3AoKX0saD1kP3t3aWR0aDphKHdpbmRvdykud2lkdGgoKSxoZWlnaHQ6YSh3aW5kb3cpLmhlaWdodCgpfTpudWxsO3JldHVybiBhLmV4dGVuZCh7fSxlLGcsaCxmKX0sYy5wcm90b3R5cGUuZ2V0Q2FsY3VsYXRlZE9mZnNldD1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4iYm90dG9tIj09YT97dG9wOmIudG9wK2IuaGVpZ2h0LGxlZnQ6Yi5sZWZ0K2Iud2lkdGgvMi1jLzJ9OiJ0b3AiPT1hP3t0b3A6Yi50b3AtZCxsZWZ0OmIubGVmdCtiLndpZHRoLzItYy8yfToibGVmdCI9PWE\/e3RvcDpiLnRvcCtiLmhlaWdodC8yLWQvMixsZWZ0OmIubGVmdC1jfTp7dG9wOmIudG9wK2IuaGVpZ2h0LzItZC8yLGxlZnQ6Yi5sZWZ0K2Iud2lkdGh9fSxjLnByb3RvdHlwZS5nZXRWaWV3cG9ydEFkanVzdGVkRGVsdGE9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9e3RvcDowLGxlZnQ6MH07aWYoIXRoaXMuJHZpZXdwb3J0KXJldHVybiBlO3ZhciBmPXRoaXMub3B0aW9ucy52aWV3cG9ydCYmdGhpcy5vcHRpb25zLnZpZXdwb3J0LnBhZGRpbmd8fDAsZz10aGlzLmdldFBvc2l0aW9uKHRoaXMuJHZpZXdwb3J0KTtpZigvcmlnaHR8bGVmdC8udGVzdChhKSl7dmFyIGg9Yi50b3AtZi1nLnNjcm9sbCxpPWIudG9wK2YtZy5zY3JvbGwrZDtoPGcudG9wP2UudG9wPWcudG9wLWg6aT5nLnRvcCtnLmhlaWdodCYmKGUudG9wPWcudG9wK2cuaGVpZ2h0LWkpfWVsc2V7dmFyIGo9Yi5sZWZ0LWYsaz1iLmxlZnQrZitjO2o8Zy5sZWZ0P2UubGVmdD1nLmxlZnQtajprPmcucmlnaHQmJihlLmxlZnQ9Zy5sZWZ0K2cud2lkdGgtayl9cmV0dXJuIGV9LGMucHJvdG90eXBlLmdldFRpdGxlPWZ1bmN0aW9uKCl7dmFyIGEsYj10aGlzLiRlbGVtZW50LGM9dGhpcy5vcHRpb25zO3JldHVybiBhPWIuYXR0cigiZGF0YS1vcmlnaW5hbC10aXRsZSIpfHwoImZ1bmN0aW9uIj09dHlwZW9mIGMudGl0bGU\/Yy50aXRsZS5jYWxsKGJbMF0pOmMudGl0bGUpfSxjLnByb3RvdHlwZS5nZXRVSUQ9ZnVuY3Rpb24oYSl7ZG8gYSs9fn4oMWU2Kk1hdGgucmFuZG9tKCkpO3doaWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGEpKTtyZXR1cm4gYX0sYy5wcm90b3R5cGUudGlwPWZ1bmN0aW9uKCl7aWYoIXRoaXMuJHRpcCYmKHRoaXMuJHRpcD1hKHRoaXMub3B0aW9ucy50ZW1wbGF0ZSksMSE9dGhpcy4kdGlwLmxlbmd0aCkpdGhyb3cgbmV3IEVycm9yKHRoaXMudHlwZSsiIGB0ZW1wbGF0ZWAgb3B0aW9uIG11c3QgY29uc2lzdCBvZiBleGFjdGx5IDEgdG9wLWxldmVsIGVsZW1lbnQhIik7cmV0dXJuIHRoaXMuJHRpcH0sYy5wcm90b3R5cGUuYXJyb3c9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kYXJyb3c9dGhpcy4kYXJyb3d8fHRoaXMudGlwKCkuZmluZCgiLnRvb2x0aXAtYXJyb3ciKX0sYy5wcm90b3R5cGUuZW5hYmxlPWZ1bmN0aW9uKCl7dGhpcy5lbmFibGVkPSEwfSxjLnByb3RvdHlwZS5kaXNhYmxlPWZ1bmN0aW9uKCl7dGhpcy5lbmFibGVkPSExfSxjLnByb3RvdHlwZS50b2dnbGVFbmFibGVkPWZ1bmN0aW9uKCl7dGhpcy5lbmFibGVkPSF0aGlzLmVuYWJsZWR9LGMucHJvdG90eXBlLnRvZ2dsZT1mdW5jdGlvbihiKXt2YXIgYz10aGlzO2ImJihjPWEoYi5jdXJyZW50VGFyZ2V0KS5kYXRhKCJicy4iK3RoaXMudHlwZSksY3x8KGM9bmV3IHRoaXMuY29uc3RydWN0b3IoYi5jdXJyZW50VGFyZ2V0LHRoaXMuZ2V0RGVsZWdhdGVPcHRpb25zKCkpLGEoYi5jdXJyZW50VGFyZ2V0KS5kYXRhKCJicy4iK3RoaXMudHlwZSxjKSkpLGI\/KGMuaW5TdGF0ZS5jbGljaz0hYy5pblN0YXRlLmNsaWNrLGMuaXNJblN0YXRlVHJ1ZSgpP2MuZW50ZXIoYyk6Yy5sZWF2ZShjKSk6Yy50aXAoKS5oYXNDbGFzcygiaW4iKT9jLmxlYXZlKGMpOmMuZW50ZXIoYyl9LGMucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO2NsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQpLHRoaXMuaGlkZShmdW5jdGlvbigpe2EuJGVsZW1lbnQub2ZmKCIuIithLnR5cGUpLnJlbW92ZURhdGEoImJzLiIrYS50eXBlKSxhLiR0aXAmJmEuJHRpcC5kZXRhY2goKSxhLiR0aXA9bnVsbCxhLiRhcnJvdz1udWxsLGEuJHZpZXdwb3J0PW51bGx9KX07dmFyIGQ9YS5mbi50b29sdGlwO2EuZm4udG9vbHRpcD1iLGEuZm4udG9vbHRpcC5Db25zdHJ1Y3Rvcj1jLGEuZm4udG9vbHRpcC5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGEuZm4udG9vbHRpcD1kLHRoaXN9fShqUXVlcnkpLCtmdW5jdGlvbihhKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYihiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGQ9YSh0aGlzKSxlPWQuZGF0YSgiYnMucG9wb3ZlciIpLGY9Im9iamVjdCI9PXR5cGVvZiBiJiZiOyhlfHwhL2Rlc3Ryb3l8aGlkZS8udGVzdChiKSkmJihlfHxkLmRhdGEoImJzLnBvcG92ZXIiLGU9bmV3IGModGhpcyxmKSksInN0cmluZyI9PXR5cGVvZiBiJiZlW2JdKCkpfSl9dmFyIGM9ZnVuY3Rpb24oYSxiKXt0aGlzLmluaXQoInBvcG92ZXIiLGEsYil9O2lmKCFhLmZuLnRvb2x0aXApdGhyb3cgbmV3IEVycm9yKCJQb3BvdmVyIHJlcXVpcmVzIHRvb2x0aXAuanMiKTtjLlZFUlNJT049IjMuMy41IixjLkRFRkFVTFRTPWEuZXh0ZW5kKHt9LGEuZm4udG9vbHRpcC5Db25zdHJ1Y3Rvci5ERUZBVUxUUyx7cGxhY2VtZW50OiJyaWdodCIsdHJpZ2dlcjoiY2xpY2siLGNvbnRlbnQ6IiIsdGVtcGxhdGU6JzxkaXYgY2xhc3M9InBvcG92ZXIiIHJvbGU9InRvb2x0aXAiPjxkaXYgY2xhc3M9ImFycm93Ij48L2Rpdj48aDMgY2xhc3M9InBvcG92ZXItdGl0bGUiPjwvaDM+PGRpdiBjbGFzcz0icG9wb3Zlci1jb250ZW50Ij48L2Rpdj48L2Rpdj4nfSksYy5wcm90b3R5cGU9YS5leHRlbmQoe30sYS5mbi50b29sdGlwLkNvbnN0cnVjdG9yLnByb3RvdHlwZSksYy5wcm90b3R5cGUuY29uc3RydWN0b3I9YyxjLnByb3RvdHlwZS5nZXREZWZhdWx0cz1mdW5jdGlvbigpe3JldHVybiBjLkRFRkFVTFRTfSxjLnByb3RvdHlwZS5zZXRDb250ZW50PWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy50aXAoKSxiPXRoaXMuZ2V0VGl0bGUoKSxjPXRoaXMuZ2V0Q29udGVudCgpO2EuZmluZCgiLnBvcG92ZXItdGl0bGUiKVt0aGlzLm9wdGlvbnMuaHRtbD8iaHRtbCI6InRleHQiXShiKSxhLmZpbmQoIi5wb3BvdmVyLWNvbnRlbnQiKS5jaGlsZHJlbigpLmRldGFjaCgpLmVuZCgpW3RoaXMub3B0aW9ucy5odG1sPyJzdHJpbmciPT10eXBlb2YgYz8iaHRtbCI6ImFwcGVuZCI6InRleHQiXShjKSxhLnJlbW92ZUNsYXNzKCJmYWRlIHRvcCBib3R0b20gbGVmdCByaWdodCBpbiIpLGEuZmluZCgiLnBvcG92ZXItdGl0bGUiKS5odG1sKCl8fGEuZmluZCgiLnBvcG92ZXItdGl0bGUiKS5oaWRlKCl9LGMucHJvdG90eXBlLmhhc0NvbnRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRUaXRsZSgpfHx0aGlzLmdldENvbnRlbnQoKX0sYy5wcm90b3R5cGUuZ2V0Q29udGVudD1mdW5jdGlvbigpe3ZhciBhPXRoaXMuJGVsZW1lbnQsYj10aGlzLm9wdGlvbnM7cmV0dXJuIGEuYXR0cigiZGF0YS1jb250ZW50Iil8fCgiZnVuY3Rpb24iPT10eXBlb2YgYi5jb250ZW50P2IuY29udGVudC5jYWxsKGFbMF0pOmIuY29udGVudCl9LGMucHJvdG90eXBlLmFycm93PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGFycm93PXRoaXMuJGFycm93fHx0aGlzLnRpcCgpLmZpbmQoIi5hcnJvdyIpfTt2YXIgZD1hLmZuLnBvcG92ZXI7YS5mbi5wb3BvdmVyPWIsYS5mbi5wb3BvdmVyLkNvbnN0cnVjdG9yPWMsYS5mbi5wb3BvdmVyLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gYS5mbi5wb3BvdmVyPWQsdGhpc319KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGMsZCl7dGhpcy4kYm9keT1hKGRvY3VtZW50LmJvZHkpLHRoaXMuJHNjcm9sbEVsZW1lbnQ9YShhKGMpLmlzKGRvY3VtZW50LmJvZHkpP3dpbmRvdzpjKSx0aGlzLm9wdGlvbnM9YS5leHRlbmQoe30sYi5ERUZBVUxUUyxkKSx0aGlzLnNlbGVjdG9yPSh0aGlzLm9wdGlvbnMudGFyZ2V0fHwiIikrIiAubmF2IGxpID4gYSIsdGhpcy5vZmZzZXRzPVtdLHRoaXMudGFyZ2V0cz1bXSx0aGlzLmFjdGl2ZVRhcmdldD1udWxsLHRoaXMuc2Nyb2xsSGVpZ2h0PTAsdGhpcy4kc2Nyb2xsRWxlbWVudC5vbigic2Nyb2xsLmJzLnNjcm9sbHNweSIsYS5wcm94eSh0aGlzLnByb2Nlc3MsdGhpcykpLHRoaXMucmVmcmVzaCgpLHRoaXMucHJvY2VzcygpfWZ1bmN0aW9uIGMoYyl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1kLmRhdGEoImJzLnNjcm9sbHNweSIpLGY9Im9iamVjdCI9PXR5cGVvZiBjJiZjO2V8fGQuZGF0YSgiYnMuc2Nyb2xsc3B5IixlPW5ldyBiKHRoaXMsZikpLCJzdHJpbmciPT10eXBlb2YgYyYmZVtjXSgpfSl9Yi5WRVJTSU9OPSIzLjMuNSIsYi5ERUZBVUxUUz17b2Zmc2V0OjEwfSxiLnByb3RvdHlwZS5nZXRTY3JvbGxIZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kc2Nyb2xsRWxlbWVudFswXS5zY3JvbGxIZWlnaHR8fE1hdGgubWF4KHRoaXMuJGJvZHlbMF0uc2Nyb2xsSGVpZ2h0LGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHQpfSxiLnByb3RvdHlwZS5yZWZyZXNoPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcyxjPSJvZmZzZXQiLGQ9MDt0aGlzLm9mZnNldHM9W10sdGhpcy50YXJnZXRzPVtdLHRoaXMuc2Nyb2xsSGVpZ2h0PXRoaXMuZ2V0U2Nyb2xsSGVpZ2h0KCksYS5pc1dpbmRvdyh0aGlzLiRzY3JvbGxFbGVtZW50WzBdKXx8KGM9InBvc2l0aW9uIixkPXRoaXMuJHNjcm9sbEVsZW1lbnQuc2Nyb2xsVG9wKCkpLHRoaXMuJGJvZHkuZmluZCh0aGlzLnNlbGVjdG9yKS5tYXAoZnVuY3Rpb24oKXt2YXIgYj1hKHRoaXMpLGU9Yi5kYXRhKCJ0YXJnZXQiKXx8Yi5hdHRyKCJocmVmIiksZj0vXiMuLy50ZXN0KGUpJiZhKGUpO3JldHVybiBmJiZmLmxlbmd0aCYmZi5pcygiOnZpc2libGUiKSYmW1tmW2NdKCkudG9wK2QsZV1dfHxudWxsfSkuc29ydChmdW5jdGlvbihhLGIpe3JldHVybiBhWzBdLWJbMF19KS5lYWNoKGZ1bmN0aW9uKCl7Yi5vZmZzZXRzLnB1c2godGhpc1swXSksYi50YXJnZXRzLnB1c2godGhpc1sxXSl9KX0sYi5wcm90b3R5cGUucHJvY2Vzcz1mdW5jdGlvbigpe3ZhciBhLGI9dGhpcy4kc2Nyb2xsRWxlbWVudC5zY3JvbGxUb3AoKSt0aGlzLm9wdGlvbnMub2Zmc2V0LGM9dGhpcy5nZXRTY3JvbGxIZWlnaHQoKSxkPXRoaXMub3B0aW9ucy5vZmZzZXQrYy10aGlzLiRzY3JvbGxFbGVtZW50LmhlaWdodCgpLGU9dGhpcy5vZmZzZXRzLGY9dGhpcy50YXJnZXRzLGc9dGhpcy5hY3RpdmVUYXJnZXQ7aWYodGhpcy5zY3JvbGxIZWlnaHQhPWMmJnRoaXMucmVmcmVzaCgpLGI+PWQpcmV0dXJuIGchPShhPWZbZi5sZW5ndGgtMV0pJiZ0aGlzLmFjdGl2YXRlKGEpO2lmKGcmJmI8ZVswXSlyZXR1cm4gdGhpcy5hY3RpdmVUYXJnZXQ9bnVsbCx0aGlzLmNsZWFyKCk7Zm9yKGE9ZS5sZW5ndGg7YS0tOylnIT1mW2FdJiZiPj1lW2FdJiYodm9pZCAwPT09ZVthKzFdfHxiPGVbYSsxXSkmJnRoaXMuYWN0aXZhdGUoZlthXSl9LGIucHJvdG90eXBlLmFjdGl2YXRlPWZ1bmN0aW9uKGIpe3RoaXMuYWN0aXZlVGFyZ2V0PWIsdGhpcy5jbGVhcigpO3ZhciBjPXRoaXMuc2VsZWN0b3IrJ1tkYXRhLXRhcmdldD0iJytiKyciXSwnK3RoaXMuc2VsZWN0b3IrJ1tocmVmPSInK2IrJyJdJyxkPWEoYykucGFyZW50cygibGkiKS5hZGRDbGFzcygiYWN0aXZlIik7ZC5wYXJlbnQoIi5kcm9wZG93bi1tZW51IikubGVuZ3RoJiYoZD1kLmNsb3Nlc3QoImxpLmRyb3Bkb3duIikuYWRkQ2xhc3MoImFjdGl2ZSIpKSwKZC50cmlnZ2VyKCJhY3RpdmF0ZS5icy5zY3JvbGxzcHkiKX0sYi5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXthKHRoaXMuc2VsZWN0b3IpLnBhcmVudHNVbnRpbCh0aGlzLm9wdGlvbnMudGFyZ2V0LCIuYWN0aXZlIikucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpfTt2YXIgZD1hLmZuLnNjcm9sbHNweTthLmZuLnNjcm9sbHNweT1jLGEuZm4uc2Nyb2xsc3B5LkNvbnN0cnVjdG9yPWIsYS5mbi5zY3JvbGxzcHkubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLnNjcm9sbHNweT1kLHRoaXN9LGEod2luZG93KS5vbigibG9hZC5icy5zY3JvbGxzcHkuZGF0YS1hcGkiLGZ1bmN0aW9uKCl7YSgnW2RhdGEtc3B5PSJzY3JvbGwiXScpLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1hKHRoaXMpO2MuY2FsbChiLGIuZGF0YSgpKX0pfSl9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZD1hKHRoaXMpLGU9ZC5kYXRhKCJicy50YWIiKTtlfHxkLmRhdGEoImJzLnRhYiIsZT1uZXcgYyh0aGlzKSksInN0cmluZyI9PXR5cGVvZiBiJiZlW2JdKCl9KX12YXIgYz1mdW5jdGlvbihiKXt0aGlzLmVsZW1lbnQ9YShiKX07Yy5WRVJTSU9OPSIzLjMuNSIsYy5UUkFOU0lUSU9OX0RVUkFUSU9OPTE1MCxjLnByb3RvdHlwZS5zaG93PWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5lbGVtZW50LGM9Yi5jbG9zZXN0KCJ1bDpub3QoLmRyb3Bkb3duLW1lbnUpIiksZD1iLmRhdGEoInRhcmdldCIpO2lmKGR8fChkPWIuYXR0cigiaHJlZiIpLGQ9ZCYmZC5yZXBsYWNlKC8uKig\/PSNbXlxzXSokKS8sIiIpKSwhYi5wYXJlbnQoImxpIikuaGFzQ2xhc3MoImFjdGl2ZSIpKXt2YXIgZT1jLmZpbmQoIi5hY3RpdmU6bGFzdCBhIiksZj1hLkV2ZW50KCJoaWRlLmJzLnRhYiIse3JlbGF0ZWRUYXJnZXQ6YlswXX0pLGc9YS5FdmVudCgic2hvdy5icy50YWIiLHtyZWxhdGVkVGFyZ2V0OmVbMF19KTtpZihlLnRyaWdnZXIoZiksYi50cmlnZ2VyKGcpLCFnLmlzRGVmYXVsdFByZXZlbnRlZCgpJiYhZi5pc0RlZmF1bHRQcmV2ZW50ZWQoKSl7dmFyIGg9YShkKTt0aGlzLmFjdGl2YXRlKGIuY2xvc2VzdCgibGkiKSxjKSx0aGlzLmFjdGl2YXRlKGgsaC5wYXJlbnQoKSxmdW5jdGlvbigpe2UudHJpZ2dlcih7dHlwZToiaGlkZGVuLmJzLnRhYiIscmVsYXRlZFRhcmdldDpiWzBdfSksYi50cmlnZ2VyKHt0eXBlOiJzaG93bi5icy50YWIiLHJlbGF0ZWRUYXJnZXQ6ZVswXX0pfSl9fX0sYy5wcm90b3R5cGUuYWN0aXZhdGU9ZnVuY3Rpb24oYixkLGUpe2Z1bmN0aW9uIGYoKXtnLnJlbW92ZUNsYXNzKCJhY3RpdmUiKS5maW5kKCI+IC5kcm9wZG93bi1tZW51ID4gLmFjdGl2ZSIpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKS5lbmQoKS5maW5kKCdbZGF0YS10b2dnbGU9InRhYiJdJykuYXR0cigiYXJpYS1leHBhbmRlZCIsITEpLGIuYWRkQ2xhc3MoImFjdGl2ZSIpLmZpbmQoJ1tkYXRhLXRvZ2dsZT0idGFiIl0nKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwhMCksaD8oYlswXS5vZmZzZXRXaWR0aCxiLmFkZENsYXNzKCJpbiIpKTpiLnJlbW92ZUNsYXNzKCJmYWRlIiksYi5wYXJlbnQoIi5kcm9wZG93bi1tZW51IikubGVuZ3RoJiZiLmNsb3Nlc3QoImxpLmRyb3Bkb3duIikuYWRkQ2xhc3MoImFjdGl2ZSIpLmVuZCgpLmZpbmQoJ1tkYXRhLXRvZ2dsZT0idGFiIl0nKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwhMCksZSYmZSgpfXZhciBnPWQuZmluZCgiPiAuYWN0aXZlIiksaD1lJiZhLnN1cHBvcnQudHJhbnNpdGlvbiYmKGcubGVuZ3RoJiZnLmhhc0NsYXNzKCJmYWRlIil8fCEhZC5maW5kKCI+IC5mYWRlIikubGVuZ3RoKTtnLmxlbmd0aCYmaD9nLm9uZSgiYnNUcmFuc2l0aW9uRW5kIixmKS5lbXVsYXRlVHJhbnNpdGlvbkVuZChjLlRSQU5TSVRJT05fRFVSQVRJT04pOmYoKSxnLnJlbW92ZUNsYXNzKCJpbiIpfTt2YXIgZD1hLmZuLnRhYjthLmZuLnRhYj1iLGEuZm4udGFiLkNvbnN0cnVjdG9yPWMsYS5mbi50YWIubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLnRhYj1kLHRoaXN9O3ZhciBlPWZ1bmN0aW9uKGMpe2MucHJldmVudERlZmF1bHQoKSxiLmNhbGwoYSh0aGlzKSwic2hvdyIpfTthKGRvY3VtZW50KS5vbigiY2xpY2suYnMudGFiLmRhdGEtYXBpIiwnW2RhdGEtdG9nZ2xlPSJ0YWIiXScsZSkub24oImNsaWNrLmJzLnRhYi5kYXRhLWFwaSIsJ1tkYXRhLXRvZ2dsZT0icGlsbCJdJyxlKX0oalF1ZXJ5KSwrZnVuY3Rpb24oYSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGIoYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1kLmRhdGEoImJzLmFmZml4IiksZj0ib2JqZWN0Ij09dHlwZW9mIGImJmI7ZXx8ZC5kYXRhKCJicy5hZmZpeCIsZT1uZXcgYyh0aGlzLGYpKSwic3RyaW5nIj09dHlwZW9mIGImJmVbYl0oKX0pfXZhciBjPWZ1bmN0aW9uKGIsZCl7dGhpcy5vcHRpb25zPWEuZXh0ZW5kKHt9LGMuREVGQVVMVFMsZCksdGhpcy4kdGFyZ2V0PWEodGhpcy5vcHRpb25zLnRhcmdldCkub24oInNjcm9sbC5icy5hZmZpeC5kYXRhLWFwaSIsYS5wcm94eSh0aGlzLmNoZWNrUG9zaXRpb24sdGhpcykpLm9uKCJjbGljay5icy5hZmZpeC5kYXRhLWFwaSIsYS5wcm94eSh0aGlzLmNoZWNrUG9zaXRpb25XaXRoRXZlbnRMb29wLHRoaXMpKSx0aGlzLiRlbGVtZW50PWEoYiksdGhpcy5hZmZpeGVkPW51bGwsdGhpcy51bnBpbj1udWxsLHRoaXMucGlubmVkT2Zmc2V0PW51bGwsdGhpcy5jaGVja1Bvc2l0aW9uKCl9O2MuVkVSU0lPTj0iMy4zLjUiLGMuUkVTRVQ9ImFmZml4IGFmZml4LXRvcCBhZmZpeC1ib3R0b20iLGMuREVGQVVMVFM9e29mZnNldDowLHRhcmdldDp3aW5kb3d9LGMucHJvdG90eXBlLmdldFN0YXRlPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPXRoaXMuJHRhcmdldC5zY3JvbGxUb3AoKSxmPXRoaXMuJGVsZW1lbnQub2Zmc2V0KCksZz10aGlzLiR0YXJnZXQuaGVpZ2h0KCk7aWYobnVsbCE9YyYmInRvcCI9PXRoaXMuYWZmaXhlZClyZXR1cm4gYz5lPyJ0b3AiOiExO2lmKCJib3R0b20iPT10aGlzLmFmZml4ZWQpcmV0dXJuIG51bGwhPWM\/ZSt0aGlzLnVucGluPD1mLnRvcD8hMToiYm90dG9tIjphLWQ+PWUrZz8hMToiYm90dG9tIjt2YXIgaD1udWxsPT10aGlzLmFmZml4ZWQsaT1oP2U6Zi50b3Asaj1oP2c6YjtyZXR1cm4gbnVsbCE9YyYmYz49ZT8idG9wIjpudWxsIT1kJiZpK2o+PWEtZD8iYm90dG9tIjohMX0sYy5wcm90b3R5cGUuZ2V0UGlubmVkT2Zmc2V0PWZ1bmN0aW9uKCl7aWYodGhpcy5waW5uZWRPZmZzZXQpcmV0dXJuIHRoaXMucGlubmVkT2Zmc2V0O3RoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoYy5SRVNFVCkuYWRkQ2xhc3MoImFmZml4Iik7dmFyIGE9dGhpcy4kdGFyZ2V0LnNjcm9sbFRvcCgpLGI9dGhpcy4kZWxlbWVudC5vZmZzZXQoKTtyZXR1cm4gdGhpcy5waW5uZWRPZmZzZXQ9Yi50b3AtYX0sYy5wcm90b3R5cGUuY2hlY2tQb3NpdGlvbldpdGhFdmVudExvb3A9ZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGEucHJveHkodGhpcy5jaGVja1Bvc2l0aW9uLHRoaXMpLDEpfSxjLnByb3RvdHlwZS5jaGVja1Bvc2l0aW9uPWZ1bmN0aW9uKCl7aWYodGhpcy4kZWxlbWVudC5pcygiOnZpc2libGUiKSl7dmFyIGI9dGhpcy4kZWxlbWVudC5oZWlnaHQoKSxkPXRoaXMub3B0aW9ucy5vZmZzZXQsZT1kLnRvcCxmPWQuYm90dG9tLGc9TWF0aC5tYXgoYShkb2N1bWVudCkuaGVpZ2h0KCksYShkb2N1bWVudC5ib2R5KS5oZWlnaHQoKSk7Im9iamVjdCIhPXR5cGVvZiBkJiYoZj1lPWQpLCJmdW5jdGlvbiI9PXR5cGVvZiBlJiYoZT1kLnRvcCh0aGlzLiRlbGVtZW50KSksImZ1bmN0aW9uIj09dHlwZW9mIGYmJihmPWQuYm90dG9tKHRoaXMuJGVsZW1lbnQpKTt2YXIgaD10aGlzLmdldFN0YXRlKGcsYixlLGYpO2lmKHRoaXMuYWZmaXhlZCE9aCl7bnVsbCE9dGhpcy51bnBpbiYmdGhpcy4kZWxlbWVudC5jc3MoInRvcCIsIiIpO3ZhciBpPSJhZmZpeCIrKGg\/Ii0iK2g6IiIpLGo9YS5FdmVudChpKyIuYnMuYWZmaXgiKTtpZih0aGlzLiRlbGVtZW50LnRyaWdnZXIoaiksai5pc0RlZmF1bHRQcmV2ZW50ZWQoKSlyZXR1cm47dGhpcy5hZmZpeGVkPWgsdGhpcy51bnBpbj0iYm90dG9tIj09aD90aGlzLmdldFBpbm5lZE9mZnNldCgpOm51bGwsdGhpcy4kZWxlbWVudC5yZW1vdmVDbGFzcyhjLlJFU0VUKS5hZGRDbGFzcyhpKS50cmlnZ2VyKGkucmVwbGFjZSgiYWZmaXgiLCJhZmZpeGVkIikrIi5icy5hZmZpeCIpfSJib3R0b20iPT1oJiZ0aGlzLiRlbGVtZW50Lm9mZnNldCh7dG9wOmctYi1mfSl9fTt2YXIgZD1hLmZuLmFmZml4O2EuZm4uYWZmaXg9YixhLmZuLmFmZml4LkNvbnN0cnVjdG9yPWMsYS5mbi5hZmZpeC5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGEuZm4uYWZmaXg9ZCx0aGlzfSxhKHdpbmRvdykub24oImxvYWQiLGZ1bmN0aW9uKCl7YSgnW2RhdGEtc3B5PSJhZmZpeCJdJykuZWFjaChmdW5jdGlvbigpe3ZhciBjPWEodGhpcyksZD1jLmRhdGEoKTtkLm9mZnNldD1kLm9mZnNldHx8e30sbnVsbCE9ZC5vZmZzZXRCb3R0b20mJihkLm9mZnNldC5ib3R0b209ZC5vZmZzZXRCb3R0b20pLG51bGwhPWQub2Zmc2V0VG9wJiYoZC5vZmZzZXQudG9wPWQub2Zmc2V0VG9wKSxiLmNhbGwoYyxkKX0pfSl9KGpRdWVyeSk7\"><\/script><br \/>\n<script src=\"data:application\/javascript;base64,LyoqCiogQHByZXNlcnZlIEhUTUw1IFNoaXYgMy43LjIgfCBAYWZhcmthcyBAamRhbHRvbiBAam9uX25lYWwgQHJlbSB8IE1JVC9HUEwyIExpY2Vuc2VkCiovCi8vIE9ubHkgcnVuIHRoaXMgY29kZSBpbiBJRSA4CmlmICghIXdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKCJNU0lFIDgiKSkgewohZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEsYil7dmFyIGM9YS5jcmVhdGVFbGVtZW50KCJwIiksZD1hLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF18fGEuZG9jdW1lbnRFbGVtZW50O3JldHVybiBjLmlubmVySFRNTD0ieDxzdHlsZT4iK2IrIjwvc3R5bGU+IixkLmluc2VydEJlZm9yZShjLmxhc3RDaGlsZCxkLmZpcnN0Q2hpbGQpfWZ1bmN0aW9uIGQoKXt2YXIgYT10LmVsZW1lbnRzO3JldHVybiJzdHJpbmciPT10eXBlb2YgYT9hLnNwbGl0KCIgIik6YX1mdW5jdGlvbiBlKGEsYil7dmFyIGM9dC5lbGVtZW50czsic3RyaW5nIiE9dHlwZW9mIGMmJihjPWMuam9pbigiICIpKSwic3RyaW5nIiE9dHlwZW9mIGEmJihhPWEuam9pbigiICIpKSx0LmVsZW1lbnRzPWMrIiAiK2EsaihiKX1mdW5jdGlvbiBmKGEpe3ZhciBiPXNbYVtxXV07cmV0dXJuIGJ8fChiPXt9LHIrKyxhW3FdPXIsc1tyXT1iKSxifWZ1bmN0aW9uIGcoYSxjLGQpe2lmKGN8fChjPWIpLGwpcmV0dXJuIGMuY3JlYXRlRWxlbWVudChhKTtkfHwoZD1mKGMpKTt2YXIgZTtyZXR1cm4gZT1kLmNhY2hlW2FdP2QuY2FjaGVbYV0uY2xvbmVOb2RlKCk6cC50ZXN0KGEpPyhkLmNhY2hlW2FdPWQuY3JlYXRlRWxlbShhKSkuY2xvbmVOb2RlKCk6ZC5jcmVhdGVFbGVtKGEpLCFlLmNhbkhhdmVDaGlsZHJlbnx8by50ZXN0KGEpfHxlLnRhZ1Vybj9lOmQuZnJhZy5hcHBlbmRDaGlsZChlKX1mdW5jdGlvbiBoKGEsYyl7aWYoYXx8KGE9YiksbClyZXR1cm4gYS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7Yz1jfHxmKGEpO2Zvcih2YXIgZT1jLmZyYWcuY2xvbmVOb2RlKCksZz0wLGg9ZCgpLGk9aC5sZW5ndGg7aT5nO2crKyllLmNyZWF0ZUVsZW1lbnQoaFtnXSk7cmV0dXJuIGV9ZnVuY3Rpb24gaShhLGIpe2IuY2FjaGV8fChiLmNhY2hlPXt9LGIuY3JlYXRlRWxlbT1hLmNyZWF0ZUVsZW1lbnQsYi5jcmVhdGVGcmFnPWEuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCxiLmZyYWc9Yi5jcmVhdGVGcmFnKCkpLGEuY3JlYXRlRWxlbWVudD1mdW5jdGlvbihjKXtyZXR1cm4gdC5zaGl2TWV0aG9kcz9nKGMsYSxiKTpiLmNyZWF0ZUVsZW0oYyl9LGEuY3JlYXRlRG9jdW1lbnRGcmFnbWVudD1GdW5jdGlvbigiaCxmIiwicmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49Zi5jbG9uZU5vZGUoKSxjPW4uY3JlYXRlRWxlbWVudDtoLnNoaXZNZXRob2RzJiYoIitkKCkuam9pbigpLnJlcGxhY2UoL1tcd1wtOl0rL2csZnVuY3Rpb24oYSl7cmV0dXJuIGIuY3JlYXRlRWxlbShhKSxiLmZyYWcuY3JlYXRlRWxlbWVudChhKSwnYygiJythKyciKSd9KSsiKTtyZXR1cm4gbn0iKSh0LGIuZnJhZyl9ZnVuY3Rpb24gaihhKXthfHwoYT1iKTt2YXIgZD1mKGEpO3JldHVybiF0LnNoaXZDU1N8fGt8fGQuaGFzQ1NTfHwoZC5oYXNDU1M9ISFjKGEsImFydGljbGUsYXNpZGUsZGlhbG9nLGZpZ2NhcHRpb24sZmlndXJlLGZvb3RlcixoZWFkZXIsaGdyb3VwLG1haW4sbmF2LHNlY3Rpb257ZGlzcGxheTpibG9ja31tYXJre2JhY2tncm91bmQ6I0ZGMDtjb2xvcjojMDAwfXRlbXBsYXRle2Rpc3BsYXk6bm9uZX0iKSksbHx8aShhLGQpLGF9dmFyIGssbCxtPSIzLjcuMiIsbj1hLmh0bWw1fHx7fSxvPS9ePHxeKD86YnV0dG9ufG1hcHxzZWxlY3R8dGV4dGFyZWF8b2JqZWN0fGlmcmFtZXxvcHRpb258b3B0Z3JvdXApJC9pLHA9L14oPzphfGJ8Y29kZXxkaXZ8ZmllbGRzZXR8aDF8aDJ8aDN8aDR8aDV8aDZ8aXxsYWJlbHxsaXxvbHxwfHF8c3BhbnxzdHJvbmd8c3R5bGV8dGFibGV8dGJvZHl8dGR8dGh8dHJ8dWwpJC9pLHE9Il9odG1sNXNoaXYiLHI9MCxzPXt9OyFmdW5jdGlvbigpe3RyeXt2YXIgYT1iLmNyZWF0ZUVsZW1lbnQoImEiKTthLmlubmVySFRNTD0iPHh5ej48L3h5ej4iLGs9ImhpZGRlbiJpbiBhLGw9MT09YS5jaGlsZE5vZGVzLmxlbmd0aHx8ZnVuY3Rpb24oKXtiLmNyZWF0ZUVsZW1lbnQoImEiKTt2YXIgYT1iLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIGEuY2xvbmVOb2RlfHwidW5kZWZpbmVkIj09dHlwZW9mIGEuY3JlYXRlRG9jdW1lbnRGcmFnbWVudHx8InVuZGVmaW5lZCI9PXR5cGVvZiBhLmNyZWF0ZUVsZW1lbnR9KCl9Y2F0Y2goYyl7az0hMCxsPSEwfX0oKTt2YXIgdD17ZWxlbWVudHM6bi5lbGVtZW50c3x8ImFiYnIgYXJ0aWNsZSBhc2lkZSBhdWRpbyBiZGkgY2FudmFzIGRhdGEgZGF0YWxpc3QgZGV0YWlscyBkaWFsb2cgZmlnY2FwdGlvbiBmaWd1cmUgZm9vdGVyIGhlYWRlciBoZ3JvdXAgbWFpbiBtYXJrIG1ldGVyIG5hdiBvdXRwdXQgcGljdHVyZSBwcm9ncmVzcyBzZWN0aW9uIHN1bW1hcnkgdGVtcGxhdGUgdGltZSB2aWRlbyIsdmVyc2lvbjptLHNoaXZDU1M6bi5zaGl2Q1NTIT09ITEsc3VwcG9ydHNVbmtub3duRWxlbWVudHM6bCxzaGl2TWV0aG9kczpuLnNoaXZNZXRob2RzIT09ITEsdHlwZToiZGVmYXVsdCIsc2hpdkRvY3VtZW50OmosY3JlYXRlRWxlbWVudDpnLGNyZWF0ZURvY3VtZW50RnJhZ21lbnQ6aCxhZGRFbGVtZW50czplfTthLmh0bWw1PXQsaihiKX0odGhpcyxkb2N1bWVudCk7Cn07Cg==\"><\/script><br \/>\n<script src=\"data:application\/javascript;base64,LyohIFJlc3BvbmQuanMgdjEuNC4yOiBtaW4vbWF4LXdpZHRoIG1lZGlhIHF1ZXJ5IHBvbHlmaWxsICogQ29weXJpZ2h0IDIwMTMgU2NvdHQgSmVobAogKiBMaWNlbnNlZCB1bmRlciBodHRwczovL2dpdGh1Yi5jb20vc2NvdHRqZWhsL1Jlc3BvbmQvYmxvYi9tYXN0ZXIvTElDRU5TRS1NSVQKICogICovCgovLyBPbmx5IHJ1biB0aGlzIGNvZGUgaW4gSUUgOAppZiAoISF3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgiTVNJRSA4IikpIHsKIWZ1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjthLm1hdGNoTWVkaWE9YS5tYXRjaE1lZGlhfHxmdW5jdGlvbihhKXt2YXIgYixjPWEuZG9jdW1lbnRFbGVtZW50LGQ9Yy5maXJzdEVsZW1lbnRDaGlsZHx8Yy5maXJzdENoaWxkLGU9YS5jcmVhdGVFbGVtZW50KCJib2R5IiksZj1hLmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBmLmlkPSJtcS10ZXN0LTEiLGYuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7dG9wOi0xMDBlbSIsZS5zdHlsZS5iYWNrZ3JvdW5kPSJub25lIixlLmFwcGVuZENoaWxkKGYpLGZ1bmN0aW9uKGEpe3JldHVybiBmLmlubmVySFRNTD0nJnNoeTs8c3R5bGUgbWVkaWE9IicrYSsnIj4gI21xLXRlc3QtMSB7IHdpZHRoOiA0MnB4OyB9PC9zdHlsZT4nLGMuaW5zZXJ0QmVmb3JlKGUsZCksYj00Mj09PWYub2Zmc2V0V2lkdGgsYy5yZW1vdmVDaGlsZChlKSx7bWF0Y2hlczpiLG1lZGlhOmF9fX0oYS5kb2N1bWVudCl9KHRoaXMpLGZ1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKCl7dSghMCl9dmFyIGM9e307YS5yZXNwb25kPWMsYy51cGRhdGU9ZnVuY3Rpb24oKXt9O3ZhciBkPVtdLGU9ZnVuY3Rpb24oKXt2YXIgYj0hMTt0cnl7Yj1uZXcgYS5YTUxIdHRwUmVxdWVzdH1jYXRjaChjKXtiPW5ldyBhLkFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIil9cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGJ9fSgpLGY9ZnVuY3Rpb24oYSxiKXt2YXIgYz1lKCk7YyYmKGMub3BlbigiR0VUIixhLCEwKSxjLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpezQhPT1jLnJlYWR5U3RhdGV8fDIwMCE9PWMuc3RhdHVzJiYzMDQhPT1jLnN0YXR1c3x8YihjLnJlc3BvbnNlVGV4dCl9LDQhPT1jLnJlYWR5U3RhdGUmJmMuc2VuZChudWxsKSl9O2lmKGMuYWpheD1mLGMucXVldWU9ZCxjLnJlZ2V4PXttZWRpYTovQG1lZGlhW15ce10rXHsoW15ce1x9XSpce1teXH1ce10qXH0pKy9naSxrZXlmcmFtZXM6L0AoPzpcLSg\/Om98bW96fHdlYmtpdClcLSk\/a2V5ZnJhbWVzW15ce10rXHsoPzpbXlx7XH1dKlx7W15cfVx7XSpcfSkrW15cfV0qXH0vZ2ksdXJsczovKHVybFwoKVsnIl0\/KFteXC9cKSciXVteOlwpJyJdKylbJyJdPyhcKSkvZyxmaW5kU3R5bGVzOi9AbWVkaWEgKihbXlx7XSspXHsoW1xTXHNdKz8pJC8sb25seTovKG9ubHlccyspPyhbYS16QS1aXSspXHM\/LyxtaW53Oi9cKFtcc10qbWluXC13aWR0aFxzKjpbXHNdKihbXHNdKlswLTlcLl0rKShweHxlbSlbXHNdKlwpLyxtYXh3Oi9cKFtcc10qbWF4XC13aWR0aFxzKjpbXHNdKihbXHNdKlswLTlcLl0rKShweHxlbSlbXHNdKlwpL30sYy5tZWRpYVF1ZXJpZXNTdXBwb3J0ZWQ9YS5tYXRjaE1lZGlhJiZudWxsIT09YS5tYXRjaE1lZGlhKCJvbmx5IGFsbCIpJiZhLm1hdGNoTWVkaWEoIm9ubHkgYWxsIikubWF0Y2hlcywhYy5tZWRpYVF1ZXJpZXNTdXBwb3J0ZWQpe3ZhciBnLGgsaSxqPWEuZG9jdW1lbnQsaz1qLmRvY3VtZW50RWxlbWVudCxsPVtdLG09W10sbj1bXSxvPXt9LHA9MzAscT1qLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF18fGsscj1qLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJiYXNlIilbMF0scz1xLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIiksdD1mdW5jdGlvbigpe3ZhciBhLGI9ai5jcmVhdGVFbGVtZW50KCJkaXYiKSxjPWouYm9keSxkPWsuc3R5bGUuZm9udFNpemUsZT1jJiZjLnN0eWxlLmZvbnRTaXplLGY9ITE7cmV0dXJuIGIuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7Zm9udC1zaXplOjFlbTt3aWR0aDoxZW0iLGN8fChjPWY9ai5jcmVhdGVFbGVtZW50KCJib2R5IiksYy5zdHlsZS5iYWNrZ3JvdW5kPSJub25lIiksay5zdHlsZS5mb250U2l6ZT0iMTAwJSIsYy5zdHlsZS5mb250U2l6ZT0iMTAwJSIsYy5hcHBlbmRDaGlsZChiKSxmJiZrLmluc2VydEJlZm9yZShjLGsuZmlyc3RDaGlsZCksYT1iLm9mZnNldFdpZHRoLGY\/ay5yZW1vdmVDaGlsZChjKTpjLnJlbW92ZUNoaWxkKGIpLGsuc3R5bGUuZm9udFNpemU9ZCxlJiYoYy5zdHlsZS5mb250U2l6ZT1lKSxhPWk9cGFyc2VGbG9hdChhKX0sdT1mdW5jdGlvbihiKXt2YXIgYz0iY2xpZW50V2lkdGgiLGQ9a1tjXSxlPSJDU1MxQ29tcGF0Ij09PWouY29tcGF0TW9kZSYmZHx8ai5ib2R5W2NdfHxkLGY9e30sbz1zW3MubGVuZ3RoLTFdLHI9KG5ldyBEYXRlKS5nZXRUaW1lKCk7aWYoYiYmZyYmcD5yLWcpcmV0dXJuIGEuY2xlYXJUaW1lb3V0KGgpLGg9YS5zZXRUaW1lb3V0KHUscCksdm9pZCAwO2c9cjtmb3IodmFyIHYgaW4gbClpZihsLmhhc093blByb3BlcnR5KHYpKXt2YXIgdz1sW3ZdLHg9dy5taW53LHk9dy5tYXh3LHo9bnVsbD09PXgsQT1udWxsPT09eSxCPSJlbSI7eCYmKHg9cGFyc2VGbG9hdCh4KSooeC5pbmRleE9mKEIpPi0xP2l8fHQoKToxKSkseSYmKHk9cGFyc2VGbG9hdCh5KSooeS5pbmRleE9mKEIpPi0xP2l8fHQoKToxKSksdy5oYXNxdWVyeSYmKHomJkF8fCEoenx8ZT49eCl8fCEoQXx8eT49ZSkpfHwoZlt3Lm1lZGlhXXx8KGZbdy5tZWRpYV09W10pLGZbdy5tZWRpYV0ucHVzaChtW3cucnVsZXNdKSl9Zm9yKHZhciBDIGluIG4pbi5oYXNPd25Qcm9wZXJ0eShDKSYmbltDXSYmbltDXS5wYXJlbnROb2RlPT09cSYmcS5yZW1vdmVDaGlsZChuW0NdKTtuLmxlbmd0aD0wO2Zvcih2YXIgRCBpbiBmKWlmKGYuaGFzT3duUHJvcGVydHkoRCkpe3ZhciBFPWouY3JlYXRlRWxlbWVudCgic3R5bGUiKSxGPWZbRF0uam9pbigiXG4iKTtFLnR5cGU9InRleHQvY3NzIixFLm1lZGlhPUQscS5pbnNlcnRCZWZvcmUoRSxvLm5leHRTaWJsaW5nKSxFLnN0eWxlU2hlZXQ\/RS5zdHlsZVNoZWV0LmNzc1RleHQ9RjpFLmFwcGVuZENoaWxkKGouY3JlYXRlVGV4dE5vZGUoRikpLG4ucHVzaChFKX19LHY9ZnVuY3Rpb24oYSxiLGQpe3ZhciBlPWEucmVwbGFjZShjLnJlZ2V4LmtleWZyYW1lcywiIikubWF0Y2goYy5yZWdleC5tZWRpYSksZj1lJiZlLmxlbmd0aHx8MDtiPWIuc3Vic3RyaW5nKDAsYi5sYXN0SW5kZXhPZigiLyIpKTt2YXIgZz1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKGMucmVnZXgudXJscywiJDEiK2IrIiQyJDMiKX0saD0hZiYmZDtiLmxlbmd0aCYmKGIrPSIvIiksaCYmKGY9MSk7Zm9yKHZhciBpPTA7Zj5pO2krKyl7dmFyIGosayxuLG87aD8oaj1kLG0ucHVzaChnKGEpKSk6KGo9ZVtpXS5tYXRjaChjLnJlZ2V4LmZpbmRTdHlsZXMpJiZSZWdFeHAuJDEsbS5wdXNoKFJlZ0V4cC4kMiYmZyhSZWdFeHAuJDIpKSksbj1qLnNwbGl0KCIsIiksbz1uLmxlbmd0aDtmb3IodmFyIHA9MDtvPnA7cCsrKWs9bltwXSxsLnB1c2goe21lZGlhOmsuc3BsaXQoIigiKVswXS5tYXRjaChjLnJlZ2V4Lm9ubHkpJiZSZWdFeHAuJDJ8fCJhbGwiLHJ1bGVzOm0ubGVuZ3RoLTEsaGFzcXVlcnk6ay5pbmRleE9mKCIoIik+LTEsbWludzprLm1hdGNoKGMucmVnZXgubWludykmJnBhcnNlRmxvYXQoUmVnRXhwLiQxKSsoUmVnRXhwLiQyfHwiIiksbWF4dzprLm1hdGNoKGMucmVnZXgubWF4dykmJnBhcnNlRmxvYXQoUmVnRXhwLiQxKSsoUmVnRXhwLiQyfHwiIil9KX11KCl9LHc9ZnVuY3Rpb24oKXtpZihkLmxlbmd0aCl7dmFyIGI9ZC5zaGlmdCgpO2YoYi5ocmVmLGZ1bmN0aW9uKGMpe3YoYyxiLmhyZWYsYi5tZWRpYSksb1tiLmhyZWZdPSEwLGEuc2V0VGltZW91dChmdW5jdGlvbigpe3coKX0sMCl9KX19LHg9ZnVuY3Rpb24oKXtmb3IodmFyIGI9MDtiPHMubGVuZ3RoO2IrKyl7dmFyIGM9c1tiXSxlPWMuaHJlZixmPWMubWVkaWEsZz1jLnJlbCYmInN0eWxlc2hlZXQiPT09Yy5yZWwudG9Mb3dlckNhc2UoKTtlJiZnJiYhb1tlXSYmKGMuc3R5bGVTaGVldCYmYy5zdHlsZVNoZWV0LnJhd0Nzc1RleHQ\/KHYoYy5zdHlsZVNoZWV0LnJhd0Nzc1RleHQsZSxmKSxvW2VdPSEwKTooIS9eKFthLXpBLVo6XSpcL1wvKS8udGVzdChlKSYmIXJ8fGUucmVwbGFjZShSZWdFeHAuJDEsIiIpLnNwbGl0KCIvIilbMF09PT1hLmxvY2F0aW9uLmhvc3QpJiYoIi8vIj09PWUuc3Vic3RyaW5nKDAsMikmJihlPWEubG9jYXRpb24ucHJvdG9jb2wrZSksZC5wdXNoKHtocmVmOmUsbWVkaWE6Zn0pKSl9dygpfTt4KCksYy51cGRhdGU9eCxjLmdldEVtVmFsdWU9dCxhLmFkZEV2ZW50TGlzdGVuZXI\/YS5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLGIsITEpOmEuYXR0YWNoRXZlbnQmJmEuYXR0YWNoRXZlbnQoIm9ucmVzaXplIixiKX19KHRoaXMpOwp9Owo=\"><\/script><\/p>\n<style>h1 {font-size: 34px;}<br \/>\n       h1.title {font-size: 38px;}<br \/>\n       h2 {font-size: 30px;}<br \/>\n       h3 {font-size: 24px;}<br \/>\n       h4 {font-size: 18px;}<br \/>\n       h5 {font-size: 16px;}<br \/>\n       h6 {font-size: 12px;}<br \/>\n       code {color: inherit; background-color: rgba(0, 0, 0, 0.04);}<br \/>\n       pre:not([class]) { background-color: white }<\/style>\n<p><script src=\"data:application\/javascript;base64,CgovKioKICogalF1ZXJ5IFBsdWdpbjogU3RpY2t5IFRhYnMKICoKICogQGF1dGhvciBBaWRhbiBMaXN0ZXIgPGFpZGFuQHBocC5uZXQ+CiAqIGFkYXB0ZWQgYnkgUnViZW4gQXJzbGFuIHRvIGFjdGl2YXRlIHBhcmVudCB0YWJzIHRvbwogKiBodHRwOi8vd3d3LmFpZGFubGlzdGVyLmNvbS8yMDE0LzAzL3BlcnNpc3RpbmctdGhlLXRhYi1zdGF0ZS1pbi1ib290c3RyYXAvCiAqLwooZnVuY3Rpb24oJCkgewogICJ1c2Ugc3RyaWN0IjsKICAkLmZuLnJtYXJrZG93blN0aWNreVRhYnMgPSBmdW5jdGlvbigpIHsKICAgIHZhciBjb250ZXh0ID0gdGhpczsKICAgIC8vIFNob3cgdGhlIHRhYiBjb3JyZXNwb25kaW5nIHdpdGggdGhlIGhhc2ggaW4gdGhlIFVSTCwgb3IgdGhlIGZpcnN0IHRhYgogICAgdmFyIHNob3dTdHVmZkZyb21IYXNoID0gZnVuY3Rpb24oKSB7CiAgICAgIHZhciBoYXNoID0gd2luZG93LmxvY2F0aW9uLmhhc2g7CiAgICAgIHZhciBzZWxlY3RvciA9IGhhc2ggPyAnYVtocmVmPSInICsgaGFzaCArICciXScgOiAnbGkuYWN0aXZlID4gYSc7CiAgICAgIHZhciAkc2VsZWN0b3IgPSAkKHNlbGVjdG9yLCBjb250ZXh0KTsKICAgICAgaWYoJHNlbGVjdG9yLmRhdGEoJ3RvZ2dsZScpID09PSAidGFiIikgewogICAgICAgICRzZWxlY3Rvci50YWIoJ3Nob3cnKTsKICAgICAgICAvLyB3YWxrIHVwIHRoZSBhbmNlc3RvcnMgb2YgdGhpcyBlbGVtZW50LCBzaG93IGFueSBoaWRkZW4gdGFicwogICAgICAgICRzZWxlY3Rvci5wYXJlbnRzKCcuc2VjdGlvbi50YWJzZXQnKS5lYWNoKGZ1bmN0aW9uKGksIGVsbSkgewogICAgICAgICAgdmFyIGxpbmsgPSAkKCdhW2hyZWY9IiMnICsgJChlbG0pLmF0dHIoJ2lkJykgKyAnIl0nKTsKICAgICAgICAgIGlmKGxpbmsuZGF0YSgndG9nZ2xlJykgPT09ICJ0YWIiKSB7CiAgICAgICAgICAgIGxpbmsudGFiKCJzaG93Iik7CiAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgIH0KICAgIH07CgoKICAgIC8vIFNldCB0aGUgY29ycmVjdCB0YWIgd2hlbiB0aGUgcGFnZSBsb2FkcwogICAgc2hvd1N0dWZmRnJvbUhhc2goY29udGV4dCk7CgogICAgLy8gU2V0IHRoZSBjb3JyZWN0IHRhYiB3aGVuIGEgdXNlciB1c2VzIHRoZWlyIGJhY2svZm9yd2FyZCBidXR0b24KICAgICQod2luZG93KS5vbignaGFzaGNoYW5nZScsIGZ1bmN0aW9uKCkgewogICAgICBzaG93U3R1ZmZGcm9tSGFzaChjb250ZXh0KTsKICAgIH0pOwoKICAgIC8vIENoYW5nZSB0aGUgVVJMIHdoZW4gdGFicyBhcmUgY2xpY2tlZAogICAgJCgnYScsIGNvbnRleHQpLm9uKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgaGlzdG9yeS5wdXNoU3RhdGUobnVsbCwgbnVsbCwgdGhpcy5ocmVmKTsKICAgICAgc2hvd1N0dWZmRnJvbUhhc2goY29udGV4dCk7CiAgICB9KTsKCiAgICByZXR1cm4gdGhpczsKICB9Owp9KGpRdWVyeSkpOwoKd2luZG93LmJ1aWxkVGFic2V0cyA9IGZ1bmN0aW9uKHRvY0lEKSB7CgogIC8vIGJ1aWxkIGEgdGFic2V0IGZyb20gYSBzZWN0aW9uIGRpdiB3aXRoIHRoZSAudGFic2V0IGNsYXNzCiAgZnVuY3Rpb24gYnVpbGRUYWJzZXQodGFic2V0KSB7CgogICAgLy8gY2hlY2sgZm9yIGZhZGUgYW5kIHBpbGxzIG9wdGlvbnMKICAgIHZhciBmYWRlID0gdGFic2V0Lmhhc0NsYXNzKCJ0YWJzZXQtZmFkZSIpOwogICAgdmFyIHBpbGxzID0gdGFic2V0Lmhhc0NsYXNzKCJ0YWJzZXQtcGlsbHMiKTsKICAgIHZhciBuYXZDbGFzcyA9IHBpbGxzID8gIm5hdi1waWxscyIgOiAibmF2LXRhYnMiOwoKICAgIC8vIGRldGVybWluZSB0aGUgaGVhZGluZyBsZXZlbCBvZiB0aGUgdGFic2V0IGFuZCB0YWJzCiAgICB2YXIgbWF0Y2ggPSB0YWJzZXQuYXR0cignY2xhc3MnKS5tYXRjaCgvbGV2ZWwoXGQpIC8pOwogICAgaWYgKG1hdGNoID09PSBudWxsKQogICAgICByZXR1cm47CiAgICB2YXIgdGFic2V0TGV2ZWwgPSBOdW1iZXIobWF0Y2hbMV0pOwogICAgdmFyIHRhYkxldmVsID0gdGFic2V0TGV2ZWwgKyAxOwoKICAgIC8vIGZpbmQgYWxsIHN1YmhlYWRpbmdzIGltbWVkaWF0ZWx5IGJlbG93CiAgICB2YXIgdGFicyA9IHRhYnNldC5maW5kKCJkaXYuc2VjdGlvbi5sZXZlbCIgKyB0YWJMZXZlbCk7CiAgICBpZiAoIXRhYnMubGVuZ3RoKQogICAgICByZXR1cm47CgogICAgLy8gY3JlYXRlIHRhYmxpc3QgYW5kIHRhYi1jb250ZW50IGVsZW1lbnRzCiAgICB2YXIgdGFiTGlzdCA9ICQoJzx1bCBjbGFzcz0ibmF2ICcgKyBuYXZDbGFzcyArICciIHJvbGU9InRhYmxpc3QiPjwvdWw+Jyk7CiAgICAkKHRhYnNbMF0pLmJlZm9yZSh0YWJMaXN0KTsKICAgIHZhciB0YWJDb250ZW50ID0gJCgnPGRpdiBjbGFzcz0idGFiLWNvbnRlbnQiPjwvZGl2PicpOwogICAgJCh0YWJzWzBdKS5iZWZvcmUodGFiQ29udGVudCk7CgogICAgLy8gYnVpbGQgdGhlIHRhYnNldAogICAgdmFyIGFjdGl2ZVRhYiA9IDA7CiAgICB0YWJzLmVhY2goZnVuY3Rpb24oaSkgewoKICAgICAgLy8gZ2V0IHRoZSB0YWIgZGl2CiAgICAgIHZhciB0YWIgPSAkKHRhYnNbaV0pOwoKICAgICAgLy8gZ2V0IHRoZSBpZCB0aGVuIHNhbml0aXplIGl0IGZvciB1c2Ugd2l0aCBib290c3RyYXAgdGFicwogICAgICB2YXIgaWQgPSB0YWIuYXR0cignaWQnKTsKCiAgICAgIC8vIHNlZSBpZiB0aGlzIGlzIG1hcmtlZCBhcyB0aGUgYWN0aXZlIHRhYgogICAgICBpZiAodGFiLmhhc0NsYXNzKCdhY3RpdmUnKSkKICAgICAgICBhY3RpdmVUYWIgPSBpOwoKICAgICAgLy8gcmVtb3ZlIGFueSB0YWJsZSBvZiBjb250ZW50cyBlbnRyaWVzIGFzc29jaWF0ZWQgd2l0aAogICAgICAvLyB0aGlzIElEIChzaW5jZSB3ZSdsbCBiZSByZW1vdmluZyB0aGUgaGVhZGluZyBlbGVtZW50KQogICAgICAkKCJkaXYjIiArIHRvY0lEICsgIiBsaSBhW2hyZWY9JyMiICsgaWQgKyAiJ10iKS5wYXJlbnQoKS5yZW1vdmUoKTsKCiAgICAgIC8vIHNhbml0aXplIHRoZSBpZCBmb3IgdXNlIHdpdGggYm9vdHN0cmFwIHRhYnMKICAgICAgaWQgPSBpZC5yZXBsYWNlKC9bLlwvPyYhIzw+XS9nLCAnJykucmVwbGFjZSgvXHMvZywgJ18nKTsKICAgICAgdGFiLmF0dHIoJ2lkJywgaWQpOwoKICAgICAgLy8gZ2V0IHRoZSBoZWFkaW5nIGVsZW1lbnQgd2l0aGluIGl0LCBncmFiIGl0J3MgdGV4dCwgdGhlbiByZW1vdmUgaXQKICAgICAgdmFyIGhlYWRpbmcgPSB0YWIuZmluZCgnaCcgKyB0YWJMZXZlbCArICc6Zmlyc3QnKTsKICAgICAgdmFyIGhlYWRpbmdUZXh0ID0gaGVhZGluZy5odG1sKCk7CiAgICAgIGhlYWRpbmcucmVtb3ZlKCk7CgogICAgICAvLyBidWlsZCBhbmQgYXBwZW5kIHRoZSB0YWIgbGlzdCBpdGVtCiAgICAgIHZhciBhID0gJCgnPGEgcm9sZT0idGFiIiBkYXRhLXRvZ2dsZT0idGFiIj4nICsgaGVhZGluZ1RleHQgKyAnPC9hPicpOwogICAgICBhLmF0dHIoJ2hyZWYnLCAnIycgKyBpZCk7CiAgICAgIGEuYXR0cignYXJpYS1jb250cm9scycsIGlkKTsKICAgICAgdmFyIGxpID0gJCgnPGxpIHJvbGU9InByZXNlbnRhdGlvbiI+PC9saT4nKTsKICAgICAgbGkuYXBwZW5kKGEpOwogICAgICB0YWJMaXN0LmFwcGVuZChsaSk7CgogICAgICAvLyBzZXQgaXQncyBhdHRyaWJ1dGVzCiAgICAgIHRhYi5hdHRyKCdyb2xlJywgJ3RhYnBhbmVsJyk7CiAgICAgIHRhYi5hZGRDbGFzcygndGFiLXBhbmUnKTsKICAgICAgdGFiLmFkZENsYXNzKCd0YWJiZWQtcGFuZScpOwogICAgICBpZiAoZmFkZSkKICAgICAgICB0YWIuYWRkQ2xhc3MoJ2ZhZGUnKTsKCiAgICAgIC8vIG1vdmUgaXQgaW50byB0aGUgdGFiIGNvbnRlbnQgZGl2CiAgICAgIHRhYi5kZXRhY2goKS5hcHBlbmRUbyh0YWJDb250ZW50KTsKICAgIH0pOwoKICAgIC8vIHNldCBhY3RpdmUgdGFiCiAgICAkKHRhYkxpc3QuY2hpbGRyZW4oJ2xpJylbYWN0aXZlVGFiXSkuYWRkQ2xhc3MoJ2FjdGl2ZScpOwogICAgdmFyIGFjdGl2ZSA9ICQodGFiQ29udGVudC5jaGlsZHJlbignZGl2LnNlY3Rpb24nKVthY3RpdmVUYWJdKTsKICAgIGFjdGl2ZS5hZGRDbGFzcygnYWN0aXZlJyk7CiAgICBpZiAoZmFkZSkKICAgICAgYWN0aXZlLmFkZENsYXNzKCdpbicpOwoKICAgIGlmICh0YWJzZXQuaGFzQ2xhc3MoInRhYnNldC1zdGlja3kiKSkKICAgICAgdGFic2V0LnJtYXJrZG93blN0aWNreVRhYnMoKTsKICB9CgogIC8vIGNvbnZlcnQgc2VjdGlvbiBkaXZzIHdpdGggdGhlIC50YWJzZXQgY2xhc3MgdG8gdGFic2V0cwogIHZhciB0YWJzZXRzID0gJCgiZGl2LnNlY3Rpb24udGFic2V0Iik7CiAgdGFic2V0cy5lYWNoKGZ1bmN0aW9uKGkpIHsKICAgIGJ1aWxkVGFic2V0KCQodGFic2V0c1tpXSkpOwogIH0pOwp9OwoK\"><\/script><br \/>\n<script src=\"data:application\/javascript;base64,LyohIGhpZ2hsaWdodC5qcyB2OS4xMi4wIHwgQlNEMyBMaWNlbnNlIHwgZ2l0LmlvL2hsanNsaWNlbnNlICovCiFmdW5jdGlvbihlKXt2YXIgbj0ib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmd2luZG93fHwib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGY7InVuZGVmaW5lZCIhPXR5cGVvZiBleHBvcnRzP2UoZXhwb3J0cyk6biYmKG4uaGxqcz1lKHt9KSwiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kJiZkZWZpbmUoW10sZnVuY3Rpb24oKXtyZXR1cm4gbi5obGpzfSkpfShmdW5jdGlvbihlKXtmdW5jdGlvbiBuKGUpe3JldHVybiBlLnJlcGxhY2UoLyYvZywiJmFtcDsiKS5yZXBsYWNlKC88L2csIiZsdDsiKS5yZXBsYWNlKC8+L2csIiZndDsiKX1mdW5jdGlvbiB0KGUpe3JldHVybiBlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCl9ZnVuY3Rpb24gcihlLG4pe3ZhciB0PWUmJmUuZXhlYyhuKTtyZXR1cm4gdCYmMD09PXQuaW5kZXh9ZnVuY3Rpb24gYShlKXtyZXR1cm4gay50ZXN0KGUpfWZ1bmN0aW9uIGkoZSl7dmFyIG4sdCxyLGksbz1lLmNsYXNzTmFtZSsiICI7aWYobys9ZS5wYXJlbnROb2RlP2UucGFyZW50Tm9kZS5jbGFzc05hbWU6IiIsdD1CLmV4ZWMobykpcmV0dXJuIHcodFsxXSk\/dFsxXToibm8taGlnaGxpZ2h0Ijtmb3Iobz1vLnNwbGl0KC9ccysvKSxuPTAscj1vLmxlbmd0aDtyPm47bisrKWlmKGk9b1tuXSxhKGkpfHx3KGkpKXJldHVybiBpfWZ1bmN0aW9uIG8oZSl7dmFyIG4sdD17fSxyPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKTtmb3IobiBpbiBlKXRbbl09ZVtuXTtyZXR1cm4gci5mb3JFYWNoKGZ1bmN0aW9uKGUpe2ZvcihuIGluIGUpdFtuXT1lW25dfSksdH1mdW5jdGlvbiB1KGUpe3ZhciBuPVtdO3JldHVybiBmdW5jdGlvbiByKGUsYSl7Zm9yKHZhciBpPWUuZmlyc3RDaGlsZDtpO2k9aS5uZXh0U2libGluZykzPT09aS5ub2RlVHlwZT9hKz1pLm5vZGVWYWx1ZS5sZW5ndGg6MT09PWkubm9kZVR5cGUmJihuLnB1c2goe2V2ZW50OiJzdGFydCIsb2Zmc2V0OmEsbm9kZTppfSksYT1yKGksYSksdChpKS5tYXRjaCgvYnJ8aHJ8aW1nfGlucHV0Lyl8fG4ucHVzaCh7ZXZlbnQ6InN0b3AiLG9mZnNldDphLG5vZGU6aX0pKTtyZXR1cm4gYX0oZSwwKSxufWZ1bmN0aW9uIGMoZSxyLGEpe2Z1bmN0aW9uIGkoKXtyZXR1cm4gZS5sZW5ndGgmJnIubGVuZ3RoP2VbMF0ub2Zmc2V0IT09clswXS5vZmZzZXQ\/ZVswXS5vZmZzZXQ8clswXS5vZmZzZXQ\/ZTpyOiJzdGFydCI9PT1yWzBdLmV2ZW50P2U6cjplLmxlbmd0aD9lOnJ9ZnVuY3Rpb24gbyhlKXtmdW5jdGlvbiByKGUpe3JldHVybiIgIitlLm5vZGVOYW1lKyc9IicrbihlLnZhbHVlKS5yZXBsYWNlKCciJywiJnF1b3Q7IikrJyInfXMrPSI8Iit0KGUpK0UubWFwLmNhbGwoZS5hdHRyaWJ1dGVzLHIpLmpvaW4oIiIpKyI+In1mdW5jdGlvbiB1KGUpe3MrPSI8LyIrdChlKSsiPiJ9ZnVuY3Rpb24gYyhlKXsoInN0YXJ0Ij09PWUuZXZlbnQ\/bzp1KShlLm5vZGUpfWZvcih2YXIgbD0wLHM9IiIsZj1bXTtlLmxlbmd0aHx8ci5sZW5ndGg7KXt2YXIgZz1pKCk7aWYocys9bihhLnN1YnN0cmluZyhsLGdbMF0ub2Zmc2V0KSksbD1nWzBdLm9mZnNldCxnPT09ZSl7Zi5yZXZlcnNlKCkuZm9yRWFjaCh1KTtkbyBjKGcuc3BsaWNlKDAsMSlbMF0pLGc9aSgpO3doaWxlKGc9PT1lJiZnLmxlbmd0aCYmZ1swXS5vZmZzZXQ9PT1sKTtmLnJldmVyc2UoKS5mb3JFYWNoKG8pfWVsc2Uic3RhcnQiPT09Z1swXS5ldmVudD9mLnB1c2goZ1swXS5ub2RlKTpmLnBvcCgpLGMoZy5zcGxpY2UoMCwxKVswXSl9cmV0dXJuIHMrbihhLnN1YnN0cihsKSl9ZnVuY3Rpb24gbChlKXtyZXR1cm4gZS52JiYhZS5jYWNoZWRfdmFyaWFudHMmJihlLmNhY2hlZF92YXJpYW50cz1lLnYubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBvKGUse3Y6bnVsbH0sbil9KSksZS5jYWNoZWRfdmFyaWFudHN8fGUuZVcmJltvKGUpXXx8W2VdfWZ1bmN0aW9uIHMoZSl7ZnVuY3Rpb24gbihlKXtyZXR1cm4gZSYmZS5zb3VyY2V8fGV9ZnVuY3Rpb24gdCh0LHIpe3JldHVybiBuZXcgUmVnRXhwKG4odCksIm0iKyhlLmNJPyJpIjoiIikrKHI\/ImciOiIiKSl9ZnVuY3Rpb24gcihhLGkpe2lmKCFhLmNvbXBpbGVkKXtpZihhLmNvbXBpbGVkPSEwLGEuaz1hLmt8fGEuYkssYS5rKXt2YXIgbz17fSx1PWZ1bmN0aW9uKG4sdCl7ZS5jSSYmKHQ9dC50b0xvd2VyQ2FzZSgpKSx0LnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD1lLnNwbGl0KCJ8Iik7b1t0WzBdXT1bbix0WzFdP051bWJlcih0WzFdKToxXX0pfTsic3RyaW5nIj09dHlwZW9mIGEuaz91KCJrZXl3b3JkIixhLmspOngoYS5rKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3UoZSxhLmtbZV0pfSksYS5rPW99YS5sUj10KGEubHx8L1x3Ky8sITApLGkmJihhLmJLJiYoYS5iPSJcXGIoIithLmJLLnNwbGl0KCIgIikuam9pbigifCIpKyIpXFxiIiksYS5ifHwoYS5iPS9cQnxcYi8pLGEuYlI9dChhLmIpLGEuZXx8YS5lV3x8KGEuZT0vXEJ8XGIvKSxhLmUmJihhLmVSPXQoYS5lKSksYS50RT1uKGEuZSl8fCIiLGEuZVcmJmkudEUmJihhLnRFKz0oYS5lPyJ8IjoiIikraS50RSkpLGEuaSYmKGEuaVI9dChhLmkpKSxudWxsPT1hLnImJihhLnI9MSksYS5jfHwoYS5jPVtdKSxhLmM9QXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSxhLmMubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBsKCJzZWxmIj09PWU\/YTplKX0pKSxhLmMuZm9yRWFjaChmdW5jdGlvbihlKXtyKGUsYSl9KSxhLnN0YXJ0cyYmcihhLnN0YXJ0cyxpKTt2YXIgYz1hLmMubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLmJLPyJcXC4\/KCIrZS5iKyIpXFwuPyI6ZS5ifSkuY29uY2F0KFthLnRFLGEuaV0pLm1hcChuKS5maWx0ZXIoQm9vbGVhbik7YS50PWMubGVuZ3RoP3QoYy5qb2luKCJ8IiksITApOntleGVjOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9fX19cihlKX1mdW5jdGlvbiBmKGUsdCxhLGkpe2Z1bmN0aW9uIG8oZSxuKXt2YXIgdCxhO2Zvcih0PTAsYT1uLmMubGVuZ3RoO2E+dDt0KyspaWYocihuLmNbdF0uYlIsZSkpcmV0dXJuIG4uY1t0XX1mdW5jdGlvbiB1KGUsbil7aWYocihlLmVSLG4pKXtmb3IoO2UuZW5kc1BhcmVudCYmZS5wYXJlbnQ7KWU9ZS5wYXJlbnQ7cmV0dXJuIGV9cmV0dXJuIGUuZVc\/dShlLnBhcmVudCxuKTp2b2lkIDB9ZnVuY3Rpb24gYyhlLG4pe3JldHVybiFhJiZyKG4uaVIsZSl9ZnVuY3Rpb24gbChlLG4pe3ZhciB0PU4uY0k\/blswXS50b0xvd2VyQ2FzZSgpOm5bMF07cmV0dXJuIGUuay5oYXNPd25Qcm9wZXJ0eSh0KSYmZS5rW3RdfWZ1bmN0aW9uIHAoZSxuLHQscil7dmFyIGE9cj8iIjpJLmNsYXNzUHJlZml4LGk9JzxzcGFuIGNsYXNzPSInK2Esbz10PyIiOkM7cmV0dXJuIGkrPWUrJyI+JyxpK24rb31mdW5jdGlvbiBoKCl7dmFyIGUsdCxyLGE7aWYoIUUuaylyZXR1cm4gbihrKTtmb3IoYT0iIix0PTAsRS5sUi5sYXN0SW5kZXg9MCxyPUUubFIuZXhlYyhrKTtyOylhKz1uKGsuc3Vic3RyaW5nKHQsci5pbmRleCkpLGU9bChFLHIpLGU\/KEIrPWVbMV0sYSs9cChlWzBdLG4oclswXSkpKTphKz1uKHJbMF0pLHQ9RS5sUi5sYXN0SW5kZXgscj1FLmxSLmV4ZWMoayk7cmV0dXJuIGErbihrLnN1YnN0cih0KSl9ZnVuY3Rpb24gZCgpe3ZhciBlPSJzdHJpbmciPT10eXBlb2YgRS5zTDtpZihlJiYheVtFLnNMXSlyZXR1cm4gbihrKTt2YXIgdD1lP2YoRS5zTCxrLCEwLHhbRS5zTF0pOmcoayxFLnNMLmxlbmd0aD9FLnNMOnZvaWQgMCk7cmV0dXJuIEUucj4wJiYoQis9dC5yKSxlJiYoeFtFLnNMXT10LnRvcCkscCh0Lmxhbmd1YWdlLHQudmFsdWUsITEsITApfWZ1bmN0aW9uIGIoKXtMKz1udWxsIT1FLnNMP2QoKTpoKCksaz0iIn1mdW5jdGlvbiB2KGUpe0wrPWUuY04\/cChlLmNOLCIiLCEwKToiIixFPU9iamVjdC5jcmVhdGUoZSx7cGFyZW50Ont2YWx1ZTpFfX0pfWZ1bmN0aW9uIG0oZSxuKXtpZihrKz1lLG51bGw9PW4pcmV0dXJuIGIoKSwwO3ZhciB0PW8obixFKTtpZih0KXJldHVybiB0LnNraXA\/ays9bjoodC5lQiYmKGsrPW4pLGIoKSx0LnJCfHx0LmVCfHwoaz1uKSksdih0LG4pLHQuckI\/MDpuLmxlbmd0aDt2YXIgcj11KEUsbik7aWYocil7dmFyIGE9RTthLnNraXA\/ays9bjooYS5yRXx8YS5lRXx8KGsrPW4pLGIoKSxhLmVFJiYoaz1uKSk7ZG8gRS5jTiYmKEwrPUMpLEUuc2tpcHx8KEIrPUUuciksRT1FLnBhcmVudDt3aGlsZShFIT09ci5wYXJlbnQpO3JldHVybiByLnN0YXJ0cyYmdihyLnN0YXJ0cywiIiksYS5yRT8wOm4ubGVuZ3RofWlmKGMobixFKSl0aHJvdyBuZXcgRXJyb3IoJ0lsbGVnYWwgbGV4ZW1lICInK24rJyIgZm9yIG1vZGUgIicrKEUuY058fCI8dW5uYW1lZD4iKSsnIicpO3JldHVybiBrKz1uLG4ubGVuZ3RofHwxfXZhciBOPXcoZSk7aWYoIU4pdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGxhbmd1YWdlOiAiJytlKyciJyk7cyhOKTt2YXIgUixFPWl8fE4seD17fSxMPSIiO2ZvcihSPUU7UiE9PU47Uj1SLnBhcmVudClSLmNOJiYoTD1wKFIuY04sIiIsITApK0wpO3ZhciBrPSIiLEI9MDt0cnl7Zm9yKHZhciBNLGosTz0wOzspe2lmKEUudC5sYXN0SW5kZXg9TyxNPUUudC5leGVjKHQpLCFNKWJyZWFrO2o9bSh0LnN1YnN0cmluZyhPLE0uaW5kZXgpLE1bMF0pLE89TS5pbmRleCtqfWZvcihtKHQuc3Vic3RyKE8pKSxSPUU7Ui5wYXJlbnQ7Uj1SLnBhcmVudClSLmNOJiYoTCs9Qyk7cmV0dXJue3I6Qix2YWx1ZTpMLGxhbmd1YWdlOmUsdG9wOkV9fWNhdGNoKFQpe2lmKFQubWVzc2FnZSYmLTEhPT1ULm1lc3NhZ2UuaW5kZXhPZigiSWxsZWdhbCIpKXJldHVybntyOjAsdmFsdWU6bih0KX07dGhyb3cgVH19ZnVuY3Rpb24gZyhlLHQpe3Q9dHx8SS5sYW5ndWFnZXN8fHgoeSk7dmFyIHI9e3I6MCx2YWx1ZTpuKGUpfSxhPXI7cmV0dXJuIHQuZmlsdGVyKHcpLmZvckVhY2goZnVuY3Rpb24obil7dmFyIHQ9ZihuLGUsITEpO3QubGFuZ3VhZ2U9bix0LnI+YS5yJiYoYT10KSx0LnI+ci5yJiYoYT1yLHI9dCl9KSxhLmxhbmd1YWdlJiYoci5zZWNvbmRfYmVzdD1hKSxyfWZ1bmN0aW9uIHAoZSl7cmV0dXJuIEkudGFiUmVwbGFjZXx8SS51c2VCUj9lLnJlcGxhY2UoTSxmdW5jdGlvbihlLG4pe3JldHVybiBJLnVzZUJSJiYiXG4iPT09ZT8iPGJyPiI6SS50YWJSZXBsYWNlP24ucmVwbGFjZSgvXHQvZyxJLnRhYlJlcGxhY2UpOiIifSk6ZX1mdW5jdGlvbiBoKGUsbix0KXt2YXIgcj1uP0xbbl06dCxhPVtlLnRyaW0oKV07cmV0dXJuIGUubWF0Y2goL1xiaGxqc1xiLyl8fGEucHVzaCgiaGxqcyIpLC0xPT09ZS5pbmRleE9mKHIpJiZhLnB1c2gociksYS5qb2luKCIgIikudHJpbSgpfWZ1bmN0aW9uIGQoZSl7dmFyIG4sdCxyLG8sbCxzPWkoZSk7YShzKXx8KEkudXNlQlI\/KG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwiZGl2Iiksbi5pbm5lckhUTUw9ZS5pbm5lckhUTUwucmVwbGFjZSgvXG4vZywiIikucmVwbGFjZSgvPGJyWyBcL10qPi9nLCJcbiIpKTpuPWUsbD1uLnRleHRDb250ZW50LHI9cz9mKHMsbCwhMCk6ZyhsKSx0PXUobiksdC5sZW5ndGgmJihvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsImRpdiIpLG8uaW5uZXJIVE1MPXIudmFsdWUsci52YWx1ZT1jKHQsdShvKSxsKSksci52YWx1ZT1wKHIudmFsdWUpLGUuaW5uZXJIVE1MPXIudmFsdWUsZS5jbGFzc05hbWU9aChlLmNsYXNzTmFtZSxzLHIubGFuZ3VhZ2UpLGUucmVzdWx0PXtsYW5ndWFnZTpyLmxhbmd1YWdlLHJlOnIucn0sci5zZWNvbmRfYmVzdCYmKGUuc2Vjb25kX2Jlc3Q9e2xhbmd1YWdlOnIuc2Vjb25kX2Jlc3QubGFuZ3VhZ2UscmU6ci5zZWNvbmRfYmVzdC5yfSkpfWZ1bmN0aW9uIGIoZSl7ST1vKEksZSl9ZnVuY3Rpb24gdigpe2lmKCF2LmNhbGxlZCl7di5jYWxsZWQ9ITA7dmFyIGU9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgicHJlIGNvZGUiKTtFLmZvckVhY2guY2FsbChlLGQpfX1mdW5jdGlvbiBtKCl7YWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsdiwhMSksYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsdiwhMSl9ZnVuY3Rpb24gTihuLHQpe3ZhciByPXlbbl09dChlKTtyLmFsaWFzZXMmJnIuYWxpYXNlcy5mb3JFYWNoKGZ1bmN0aW9uKGUpe0xbZV09bn0pfWZ1bmN0aW9uIFIoKXtyZXR1cm4geCh5KX1mdW5jdGlvbiB3KGUpe3JldHVybiBlPShlfHwiIikudG9Mb3dlckNhc2UoKSx5W2VdfHx5W0xbZV1dfXZhciBFPVtdLHg9T2JqZWN0LmtleXMseT17fSxMPXt9LGs9L14obm8tP2hpZ2hsaWdodHxwbGFpbnx0ZXh0KSQvaSxCPS9cYmxhbmcoPzp1YWdlKT8tKFtcdy1dKylcYi9pLE09LygoXig8W14+XSs+fFx0fCkrfCg\/OlxuKSkpL2dtLEM9Ijwvc3Bhbj4iLEk9e2NsYXNzUHJlZml4OiJobGpzLSIsdGFiUmVwbGFjZTpudWxsLHVzZUJSOiExLGxhbmd1YWdlczp2b2lkIDB9O3JldHVybiBlLmhpZ2hsaWdodD1mLGUuaGlnaGxpZ2h0QXV0bz1nLGUuZml4TWFya3VwPXAsZS5oaWdobGlnaHRCbG9jaz1kLGUuY29uZmlndXJlPWIsZS5pbml0SGlnaGxpZ2h0aW5nPXYsZS5pbml0SGlnaGxpZ2h0aW5nT25Mb2FkPW0sZS5yZWdpc3Rlckxhbmd1YWdlPU4sZS5saXN0TGFuZ3VhZ2VzPVIsZS5nZXRMYW5ndWFnZT13LGUuaW5oZXJpdD1vLGUuSVI9IlthLXpBLVpdXFx3KiIsZS5VSVI9IlthLXpBLVpfXVxcdyoiLGUuTlI9IlxcYlxcZCsoXFwuXFxkKyk\/IixlLkNOUj0iKC0\/KShcXGIwW3hYXVthLWZBLUYwLTldK3woXFxiXFxkKyhcXC5cXGQqKT98XFwuXFxkKykoW2VFXVstK10\/XFxkKyk\/KSIsZS5CTlI9IlxcYigwYlswMV0rKSIsZS5SU1I9IiF8IT18IT09fCV8JT18JnwmJnwmPXxcXCp8XFwqPXxcXCt8XFwrPXwsfC18LT18Lz18L3w6fDt8PDx8PDw9fDw9fDx8PT09fD09fD18Pj4+PXw+Pj18Pj18Pj4+fD4+fD58XFw\/fFxcW3xcXHt8XFwofFxcXnxcXF49fFxcfHxcXHw9fFxcfFxcfHx+IixlLkJFPXtiOiJcXFxcW1xcc1xcU10iLHI6MH0sZS5BU009e2NOOiJzdHJpbmciLGI6IiciLGU6IiciLGk6IlxcbiIsYzpbZS5CRV19LGUuUVNNPXtjTjoic3RyaW5nIixiOiciJyxlOiciJyxpOiJcXG4iLGM6W2UuQkVdfSxlLlBXTT17YjovXGIoYXxhbnx0aGV8YXJlfEknbXxpc24ndHxkb24ndHxkb2Vzbid0fHdvbid0fGJ1dHxqdXN0fHNob3VsZHxwcmV0dHl8c2ltcGx5fGVub3VnaHxnb25uYXxnb2luZ3x3dGZ8c298c3VjaHx3aWxsfHlvdXx5b3VyfHRoZXl8bGlrZXxtb3JlKVxiL30sZS5DPWZ1bmN0aW9uKG4sdCxyKXt2YXIgYT1lLmluaGVyaXQoe2NOOiJjb21tZW50IixiOm4sZTp0LGM6W119LHJ8fHt9KTtyZXR1cm4gYS5jLnB1c2goZS5QV00pLGEuYy5wdXNoKHtjTjoiZG9jdGFnIixiOiIoPzpUT0RPfEZJWE1FfE5PVEV8QlVHfFhYWCk6IixyOjB9KSxhfSxlLkNMQ009ZS5DKCIvLyIsIiQiKSxlLkNCQ009ZS5DKCIvXFwqIiwiXFwqLyIpLGUuSENNPWUuQygiIyIsIiQiKSxlLk5NPXtjTjoibnVtYmVyIixiOmUuTlIscjowfSxlLkNOTT17Y046Im51bWJlciIsYjplLkNOUixyOjB9LGUuQk5NPXtjTjoibnVtYmVyIixiOmUuQk5SLHI6MH0sZS5DU1NOTT17Y046Im51bWJlciIsYjplLk5SKyIoJXxlbXxleHxjaHxyZW18dnd8dmh8dm1pbnx2bWF4fGNtfG1tfGlufHB0fHBjfHB4fGRlZ3xncmFkfHJhZHx0dXJufHN8bXN8SHp8a0h6fGRwaXxkcGNtfGRwcHgpPyIscjowfSxlLlJNPXtjTjoicmVnZXhwIixiOi9cLy8sZTovXC9bZ2ltdXldKi8saTovXG4vLGM6W2UuQkUse2I6L1xbLyxlOi9cXS8scjowLGM6W2UuQkVdfV19LGUuVE09e2NOOiJ0aXRsZSIsYjplLklSLHI6MH0sZS5VVE09e2NOOiJ0aXRsZSIsYjplLlVJUixyOjB9LGUuTUVUSE9EX0dVQVJEPXtiOiJcXC5cXHMqIitlLlVJUixyOjB9LGV9KTtobGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoInNxbCIsZnVuY3Rpb24oZSl7dmFyIHQ9ZS5DKCItLSIsIiQiKTtyZXR1cm57Y0k6ITAsaTovWzw+e30qI10vLGM6W3tiSzoiYmVnaW4gZW5kIHN0YXJ0IGNvbW1pdCByb2xsYmFjayBzYXZlcG9pbnQgbG9jayBhbHRlciBjcmVhdGUgZHJvcCByZW5hbWUgY2FsbCBkZWxldGUgZG8gaGFuZGxlciBpbnNlcnQgbG9hZCByZXBsYWNlIHNlbGVjdCB0cnVuY2F0ZSB1cGRhdGUgc2V0IHNob3cgcHJhZ21hIGdyYW50IG1lcmdlIGRlc2NyaWJlIHVzZSBleHBsYWluIGhlbHAgZGVjbGFyZSBwcmVwYXJlIGV4ZWN1dGUgZGVhbGxvY2F0ZSByZWxlYXNlIHVubG9jayBwdXJnZSByZXNldCBjaGFuZ2Ugc3RvcCBhbmFseXplIGNhY2hlIGZsdXNoIG9wdGltaXplIHJlcGFpciBraWxsIGluc3RhbGwgdW5pbnN0YWxsIGNoZWNrc3VtIHJlc3RvcmUgY2hlY2sgYmFja3VwIHJldm9rZSBjb21tZW50IixlOi87LyxlVzohMCxsOi9bXHdcLl0rLyxrOntrZXl3b3JkOiJhYm9ydCBhYnMgYWJzb2x1dGUgYWNjIGFjY2UgYWNjZXAgYWNjZXB0IGFjY2VzcyBhY2Nlc3NlZCBhY2Nlc3NpYmxlIGFjY291bnQgYWNvcyBhY3Rpb24gYWN0aXZhdGUgYWRkIGFkZHRpbWUgYWRtaW4gYWRtaW5pc3RlciBhZHZhbmNlZCBhZHZpc2UgYWVzX2RlY3J5cHQgYWVzX2VuY3J5cHQgYWZ0ZXIgYWdlbnQgYWdncmVnYXRlIGFsaSBhbGlhIGFsaWFzIGFsbG9jYXRlIGFsbG93IGFsdGVyIGFsd2F5cyBhbmFseXplIGFuY2lsbGFyeSBhbmQgYW55IGFueWRhdGEgYW55ZGF0YXNldCBhbnlzY2hlbWEgYW55dHlwZSBhcHBseSBhcmNoaXZlIGFyY2hpdmVkIGFyY2hpdmVsb2cgYXJlIGFzIGFzYyBhc2NpaSBhc2luIGFzc2VtYmx5IGFzc2VydGlvbiBhc3NvY2lhdGUgYXN5bmNocm9ub3VzIGF0IGF0YW4gYXRuMiBhdHRyIGF0dHJpIGF0dHJpYiBhdHRyaWJ1IGF0dHJpYnV0IGF0dHJpYnV0ZSBhdHRyaWJ1dGVzIGF1ZGl0IGF1dGhlbnRpY2F0ZWQgYXV0aGVudGljYXRpb24gYXV0aGlkIGF1dGhvcnMgYXV0byBhdXRvYWxsb2NhdGUgYXV0b2RibGluayBhdXRvZXh0ZW5kIGF1dG9tYXRpYyBhdmFpbGFiaWxpdHkgYXZnIGJhY2t1cCBiYWRmaWxlIGJhc2ljZmlsZSBiZWZvcmUgYmVnaW4gYmVnaW5uaW5nIGJlbmNobWFyayBiZXR3ZWVuIGJmaWxlIGJmaWxlX2Jhc2UgYmlnIGJpZ2ZpbGUgYmluIGJpbmFyeV9kb3VibGUgYmluYXJ5X2Zsb2F0IGJpbmxvZyBiaXRfYW5kIGJpdF9jb3VudCBiaXRfbGVuZ3RoIGJpdF9vciBiaXRfeG9yIGJpdG1hcCBibG9iX2Jhc2UgYmxvY2sgYmxvY2tzaXplIGJvZHkgYm90aCBib3VuZCBidWZmZXJfY2FjaGUgYnVmZmVyX3Bvb2wgYnVpbGQgYnVsayBieSBieXRlIGJ5dGVvcmRlcm1hcmsgYnl0ZXMgY2FjaGUgY2FjaGluZyBjYWxsIGNhbGxpbmcgY2FuY2VsIGNhcGFjaXR5IGNhc2NhZGUgY2FzY2FkZWQgY2FzZSBjYXN0IGNhdGFsb2cgY2F0ZWdvcnkgY2VpbCBjZWlsaW5nIGNoYWluIGNoYW5nZSBjaGFuZ2VkIGNoYXJfYmFzZSBjaGFyX2xlbmd0aCBjaGFyYWN0ZXJfbGVuZ3RoIGNoYXJhY3RlcnMgY2hhcmFjdGVyc2V0IGNoYXJpbmRleCBjaGFyc2V0IGNoYXJzZXRmb3JtIGNoYXJzZXRpZCBjaGVjayBjaGVja3N1bSBjaGVja3N1bV9hZ2cgY2hpbGQgY2hvb3NlIGNociBjaHVuayBjbGFzcyBjbGVhbnVwIGNsZWFyIGNsaWVudCBjbG9iIGNsb2JfYmFzZSBjbG9uZSBjbG9zZSBjbHVzdGVyX2lkIGNsdXN0ZXJfcHJvYmFiaWxpdHkgY2x1c3Rlcl9zZXQgY2x1c3RlcmluZyBjb2FsZXNjZSBjb2VyY2liaWxpdHkgY29sIGNvbGxhdGUgY29sbGF0aW9uIGNvbGxlY3QgY29sdSBjb2x1bSBjb2x1bW4gY29sdW1uX3ZhbHVlIGNvbHVtbnMgY29sdW1uc191cGRhdGVkIGNvbW1lbnQgY29tbWl0IGNvbXBhY3QgY29tcGF0aWJpbGl0eSBjb21waWxlZCBjb21wbGV0ZSBjb21wb3NpdGVfbGltaXQgY29tcG91bmQgY29tcHJlc3MgY29tcHV0ZSBjb25jYXQgY29uY2F0X3dzIGNvbmN1cnJlbnQgY29uZmlybSBjb25uIGNvbm5lYyBjb25uZWN0IGNvbm5lY3RfYnlfaXNjeWNsZSBjb25uZWN0X2J5X2lzbGVhZiBjb25uZWN0X2J5X3Jvb3QgY29ubmVjdF90aW1lIGNvbm5lY3Rpb24gY29uc2lkZXIgY29uc2lzdGVudCBjb25zdGFudCBjb25zdHJhaW50IGNvbnN0cmFpbnRzIGNvbnN0cnVjdG9yIGNvbnRhaW5lciBjb250ZW50IGNvbnRlbnRzIGNvbnRleHQgY29udHJpYnV0b3JzIGNvbnRyb2xmaWxlIGNvbnYgY29udmVydCBjb252ZXJ0X3R6IGNvcnIgY29ycl9rIGNvcnJfcyBjb3JyZXNwb25kaW5nIGNvcnJ1cHRpb24gY29zIGNvc3QgY291bnQgY291bnRfYmlnIGNvdW50ZWQgY292YXJfcG9wIGNvdmFyX3NhbXAgY3B1X3Blcl9jYWxsIGNwdV9wZXJfc2Vzc2lvbiBjcmMzMiBjcmVhdGUgY3JlYXRpb24gY3JpdGljYWwgY3Jvc3MgY3ViZSBjdW1lX2Rpc3QgY3VyZGF0ZSBjdXJyZW50IGN1cnJlbnRfZGF0ZSBjdXJyZW50X3RpbWUgY3VycmVudF90aW1lc3RhbXAgY3VycmVudF91c2VyIGN1cnNvciBjdXJ0aW1lIGN1c3RvbWRhdHVtIGN5Y2xlIGRhdGEgZGF0YWJhc2UgZGF0YWJhc2VzIGRhdGFmaWxlIGRhdGFmaWxlcyBkYXRhbGVuZ3RoIGRhdGVfYWRkIGRhdGVfY2FjaGUgZGF0ZV9mb3JtYXQgZGF0ZV9zdWIgZGF0ZWFkZCBkYXRlZGlmZiBkYXRlZnJvbXBhcnRzIGRhdGVuYW1lIGRhdGVwYXJ0IGRhdGV0aW1lMmZyb21wYXJ0cyBkYXkgZGF5X3RvX3NlY29uZCBkYXluYW1lIGRheW9mbW9udGggZGF5b2Z3ZWVrIGRheW9meWVhciBkYXlzIGRiX3JvbGVfY2hhbmdlIGRidGltZXpvbmUgZGRsIGRlYWxsb2NhdGUgZGVjbGFyZSBkZWNvZGUgZGVjb21wb3NlIGRlY3JlbWVudCBkZWNyeXB0IGRlZHVwbGljYXRlIGRlZiBkZWZhIGRlZmF1IGRlZmF1bCBkZWZhdWx0IGRlZmF1bHRzIGRlZmVycmVkIGRlZmkgZGVmaW4gZGVmaW5lIGRlZ3JlZXMgZGVsYXllZCBkZWxlZ2F0ZSBkZWxldGUgZGVsZXRlX2FsbCBkZWxpbWl0ZWQgZGVtYW5kIGRlbnNlX3JhbmsgZGVwdGggZGVxdWV1ZSBkZXNfZGVjcnlwdCBkZXNfZW5jcnlwdCBkZXNfa2V5X2ZpbGUgZGVzYyBkZXNjciBkZXNjcmkgZGVzY3JpYiBkZXNjcmliZSBkZXNjcmlwdG9yIGRldGVybWluaXN0aWMgZGlhZ25vc3RpY3MgZGlmZmVyZW5jZSBkaW1lbnNpb24gZGlyZWN0X2xvYWQgZGlyZWN0b3J5IGRpc2FibGUgZGlzYWJsZV9hbGwgZGlzYWxsb3cgZGlzYXNzb2NpYXRlIGRpc2NhcmRmaWxlIGRpc2Nvbm5lY3QgZGlza2dyb3VwIGRpc3RpbmN0IGRpc3RpbmN0cm93IGRpc3RyaWJ1dGUgZGlzdHJpYnV0ZWQgZGl2IGRvIGRvY3VtZW50IGRvbWFpbiBkb3RuZXQgZG91YmxlIGRvd25ncmFkZSBkcm9wIGR1bXBmaWxlIGR1cGxpY2F0ZSBkdXJhdGlvbiBlYWNoIGVkaXRpb24gZWRpdGlvbmFibGUgZWRpdGlvbnMgZWxlbWVudCBlbGxpcHNpcyBlbHNlIGVsc2lmIGVsdCBlbXB0eSBlbmFibGUgZW5hYmxlX2FsbCBlbmNsb3NlZCBlbmNvZGUgZW5jb2RpbmcgZW5jcnlwdCBlbmQgZW5kLWV4ZWMgZW5kaWFuIGVuZm9yY2VkIGVuZ2luZSBlbmdpbmVzIGVucXVldWUgZW50ZXJwcmlzZSBlbnRpdHllc2NhcGluZyBlb21vbnRoIGVycm9yIGVycm9ycyBlc2NhcGVkIGV2YWxuYW1lIGV2YWx1YXRlIGV2ZW50IGV2ZW50ZGF0YSBldmVudHMgZXhjZXB0IGV4Y2VwdGlvbiBleGNlcHRpb25zIGV4Y2hhbmdlIGV4Y2x1ZGUgZXhjbHVkaW5nIGV4ZWN1IGV4ZWN1dCBleGVjdXRlIGV4ZW1wdCBleGlzdHMgZXhpdCBleHAgZXhwaXJlIGV4cGxhaW4gZXhwb3J0IGV4cG9ydF9zZXQgZXh0ZW5kZWQgZXh0ZW50IGV4dGVybmFsIGV4dGVybmFsXzEgZXh0ZXJuYWxfMiBleHRlcm5hbGx5IGV4dHJhY3QgZmFpbGVkIGZhaWxlZF9sb2dpbl9hdHRlbXB0cyBmYWlsb3ZlciBmYWlsdXJlIGZhciBmYXN0IGZlYXR1cmVfc2V0IGZlYXR1cmVfdmFsdWUgZmV0Y2ggZmllbGQgZmllbGRzIGZpbGUgZmlsZV9uYW1lX2NvbnZlcnQgZmlsZXN5c3RlbV9saWtlX2xvZ2dpbmcgZmluYWwgZmluaXNoIGZpcnN0IGZpcnN0X3ZhbHVlIGZpeGVkIGZsYXNoX2NhY2hlIGZsYXNoYmFjayBmbG9vciBmbHVzaCBmb2xsb3dpbmcgZm9sbG93cyBmb3IgZm9yYWxsIGZvcmNlIGZvcm0gZm9ybWEgZm9ybWF0IGZvdW5kIGZvdW5kX3Jvd3MgZnJlZWxpc3QgZnJlZWxpc3RzIGZyZWVwb29scyBmcmVzaCBmcm9tIGZyb21fYmFzZTY0IGZyb21fZGF5cyBmdHAgZnVsbCBmdW5jdGlvbiBnZW5lcmFsIGdlbmVyYXRlZCBnZXQgZ2V0X2Zvcm1hdCBnZXRfbG9jayBnZXRkYXRlIGdldHV0Y2RhdGUgZ2xvYmFsIGdsb2JhbF9uYW1lIGdsb2JhbGx5IGdvIGdvdG8gZ3JhbnQgZ3JhbnRzIGdyZWF0ZXN0IGdyb3VwIGdyb3VwX2NvbmNhdCBncm91cF9pZCBncm91cGluZyBncm91cGluZ19pZCBncm91cHMgZ3RpZF9zdWJ0cmFjdCBndWFyYW50ZWUgZ3VhcmQgaGFuZGxlciBoYXNoIGhhc2hrZXlzIGhhdmluZyBoZWEgaGVhZCBoZWFkaSBoZWFkaW4gaGVhZGluZyBoZWFwIGhlbHAgaGV4IGhpZXJhcmNoeSBoaWdoIGhpZ2hfcHJpb3JpdHkgaG9zdHMgaG91ciBodHRwIGlkIGlkZW50X2N1cnJlbnQgaWRlbnRfaW5jciBpZGVudF9zZWVkIGlkZW50aWZpZWQgaWRlbnRpdHkgaWRsZV90aW1lIGlmIGlmbnVsbCBpZ25vcmUgaWlmIGlsaWtlIGlsbSBpbW1lZGlhdGUgaW1wb3J0IGluIGluY2x1ZGUgaW5jbHVkaW5nIGluY3JlbWVudCBpbmRleCBpbmRleGVzIGluZGV4aW5nIGluZGV4dHlwZSBpbmRpY2F0b3IgaW5kaWNlcyBpbmV0Nl9hdG9uIGluZXQ2X250b2EgaW5ldF9hdG9uIGluZXRfbnRvYSBpbmZpbGUgaW5pdGlhbCBpbml0aWFsaXplZCBpbml0aWFsbHkgaW5pdHJhbnMgaW5tZW1vcnkgaW5uZXIgaW5ub2RiIGlucHV0IGluc2VydCBpbnN0YWxsIGluc3RhbmNlIGluc3RhbnRpYWJsZSBpbnN0ciBpbnRlcmZhY2UgaW50ZXJsZWF2ZWQgaW50ZXJzZWN0IGludG8gaW52YWxpZGF0ZSBpbnZpc2libGUgaXMgaXNfZnJlZV9sb2NrIGlzX2lwdjQgaXNfaXB2NF9jb21wYXQgaXNfbm90IGlzX25vdF9udWxsIGlzX3VzZWRfbG9jayBpc2RhdGUgaXNudWxsIGlzb2xhdGlvbiBpdGVyYXRlIGphdmEgam9pbiBqc29uIGpzb25fZXhpc3RzIGtlZXAga2VlcF9kdXBsaWNhdGVzIGtleSBrZXlzIGtpbGwgbGFuZ3VhZ2UgbGFyZ2UgbGFzdCBsYXN0X2RheSBsYXN0X2luc2VydF9pZCBsYXN0X3ZhbHVlIGxheCBsY2FzZSBsZWFkIGxlYWRpbmcgbGVhc3QgbGVhdmVzIGxlZnQgbGVuIGxlbmdodCBsZW5ndGggbGVzcyBsZXZlbCBsZXZlbHMgbGlicmFyeSBsaWtlIGxpa2UyIGxpa2U0IGxpa2VjIGxpbWl0IGxpbmVzIGxpbmsgbGlzdCBsaXN0YWdnIGxpdHRsZSBsbiBsb2FkIGxvYWRfZmlsZSBsb2IgbG9icyBsb2NhbCBsb2NhbHRpbWUgbG9jYWx0aW1lc3RhbXAgbG9jYXRlIGxvY2F0b3IgbG9jayBsb2NrZWQgbG9nIGxvZzEwIGxvZzIgbG9nZmlsZSBsb2dmaWxlcyBsb2dnaW5nIGxvZ2ljYWwgbG9naWNhbF9yZWFkc19wZXJfY2FsbCBsb2dvZmYgbG9nb24gbG9ncyBsb25nIGxvb3AgbG93IGxvd19wcmlvcml0eSBsb3dlciBscGFkIGxydHJpbSBsdHJpbSBtYWluIG1ha2Vfc2V0IG1ha2VkYXRlIG1ha2V0aW1lIG1hbmFnZWQgbWFuYWdlbWVudCBtYW51YWwgbWFwIG1hcHBpbmcgbWFzayBtYXN0ZXIgbWFzdGVyX3Bvc193YWl0IG1hdGNoIG1hdGNoZWQgbWF0ZXJpYWxpemVkIG1heCBtYXhleHRlbnRzIG1heGltaXplIG1heGluc3RhbmNlcyBtYXhsZW4gbWF4bG9nZmlsZXMgbWF4bG9naGlzdG9yeSBtYXhsb2dtZW1iZXJzIG1heHNpemUgbWF4dHJhbnMgbWQ1IG1lYXN1cmVzIG1lZGlhbiBtZWRpdW0gbWVtYmVyIG1lbWNvbXByZXNzIG1lbW9yeSBtZXJnZSBtaWNyb3NlY29uZCBtaWQgbWlncmF0aW9uIG1pbiBtaW5leHRlbnRzIG1pbmltdW0gbWluaW5nIG1pbnVzIG1pbnV0ZSBtaW52YWx1ZSBtaXNzaW5nIG1vZCBtb2RlIG1vZGVsIG1vZGlmaWNhdGlvbiBtb2RpZnkgbW9kdWxlIG1vbml0b3JpbmcgbW9udGggbW9udGhzIG1vdW50IG1vdmUgbW92ZW1lbnQgbXVsdGlzZXQgbXV0ZXggbmFtZSBuYW1lX2NvbnN0IG5hbWVzIG5hbiBuYXRpb25hbCBuYXRpdmUgbmF0dXJhbCBuYXYgbmNoYXIgbmNsb2IgbmVzdGVkIG5ldmVyIG5ldyBuZXdsaW5lIG5leHQgbmV4dHZhbCBubyBub193cml0ZV90b19iaW5sb2cgbm9hcmNoaXZlbG9nIG5vYXVkaXQgbm9iYWRmaWxlIG5vY2hlY2sgbm9jb21wcmVzcyBub2NvcHkgbm9jeWNsZSBub2RlbGF5IG5vZGlzY2FyZGZpbGUgbm9lbnRpdHllc2NhcGluZyBub2d1YXJhbnRlZSBub2tlZXAgbm9sb2dmaWxlIG5vbWFwcGluZyBub21heHZhbHVlIG5vbWluaW1pemUgbm9taW52YWx1ZSBub21vbml0b3Jpbmcgbm9uZSBub25lZGl0aW9uYWJsZSBub25zY2hlbWEgbm9vcmRlciBub3ByIG5vcHJvIG5vcHJvbSBub3Byb21wIG5vcHJvbXB0IG5vcmVseSBub3Jlc2V0bG9ncyBub3JldmVyc2Ugbm9ybWFsIG5vcm93ZGVwZW5kZW5jaWVzIG5vc2NoZW1hY2hlY2sgbm9zd2l0Y2ggbm90IG5vdGhpbmcgbm90aWNlIG5vdHJpbSBub3ZhbGlkYXRlIG5vdyBub3dhaXQgbnRoX3ZhbHVlIG51bGxpZiBudWxscyBudW0gbnVtYiBudW1iZSBudmFyY2hhciBudmFyY2hhcjIgb2JqZWN0IG9jaWNvbGwgb2NpZGF0ZSBvY2lkYXRldGltZSBvY2lkdXJhdGlvbiBvY2lpbnRlcnZhbCBvY2lsb2Jsb2NhdG9yIG9jaW51bWJlciBvY2lyZWYgb2NpcmVmY3Vyc29yIG9jaXJvd2lkIG9jaXN0cmluZyBvY2l0eXBlIG9jdCBvY3RldF9sZW5ndGggb2Ygb2ZmIG9mZmxpbmUgb2Zmc2V0IG9pZCBvaWRpbmRleCBvbGQgb24gb25saW5lIG9ubHkgb3BhcXVlIG9wZW4gb3BlcmF0aW9ucyBvcGVyYXRvciBvcHRpbWFsIG9wdGltaXplIG9wdGlvbiBvcHRpb25hbGx5IG9yIG9yYWNsZSBvcmFjbGVfZGF0ZSBvcmFkYXRhIG9yZCBvcmRhdWRpbyBvcmRkaWNvbSBvcmRkb2Mgb3JkZXIgb3JkaW1hZ2Ugb3JkaW5hbGl0eSBvcmR2aWRlbyBvcmdhbml6YXRpb24gb3JsYW55IG9ybHZhcnkgb3V0IG91dGVyIG91dGZpbGUgb3V0bGluZSBvdXRwdXQgb3ZlciBvdmVyZmxvdyBvdmVycmlkaW5nIHBhY2thZ2UgcGFkIHBhcmFsbGVsIHBhcmFsbGVsX2VuYWJsZSBwYXJhbWV0ZXJzIHBhcmVudCBwYXJzZSBwYXJ0aWFsIHBhcnRpdGlvbiBwYXJ0aXRpb25zIHBhc2NhbCBwYXNzaW5nIHBhc3N3b3JkIHBhc3N3b3JkX2dyYWNlX3RpbWUgcGFzc3dvcmRfbG9ja190aW1lIHBhc3N3b3JkX3JldXNlX21heCBwYXNzd29yZF9yZXVzZV90aW1lIHBhc3N3b3JkX3ZlcmlmeV9mdW5jdGlvbiBwYXRjaCBwYXRoIHBhdGluZGV4IHBjdGluY3JlYXNlIHBjdHRocmVzaG9sZCBwY3R1c2VkIHBjdHZlcnNpb24gcGVyY2VudCBwZXJjZW50X3JhbmsgcGVyY2VudGlsZV9jb250IHBlcmNlbnRpbGVfZGlzYyBwZXJmb3JtYW5jZSBwZXJpb2QgcGVyaW9kX2FkZCBwZXJpb2RfZGlmZiBwZXJtYW5lbnQgcGh5c2ljYWwgcGkgcGlwZSBwaXBlbGluZWQgcGl2b3QgcGx1Z2dhYmxlIHBsdWdpbiBwb2xpY3kgcG9zaXRpb24gcG9zdF90cmFuc2FjdGlvbiBwb3cgcG93ZXIgcHJhZ21hIHByZWJ1aWx0IHByZWNlZGVzIHByZWNlZGluZyBwcmVjaXNpb24gcHJlZGljdGlvbiBwcmVkaWN0aW9uX2Nvc3QgcHJlZGljdGlvbl9kZXRhaWxzIHByZWRpY3Rpb25fcHJvYmFiaWxpdHkgcHJlZGljdGlvbl9zZXQgcHJlcGFyZSBwcmVzZW50IHByZXNlcnZlIHByaW9yIHByaW9yaXR5IHByaXZhdGUgcHJpdmF0ZV9zZ2EgcHJpdmlsZWdlcyBwcm9jZWR1cmFsIHByb2NlZHVyZSBwcm9jZWR1cmVfYW5hbHl6ZSBwcm9jZXNzbGlzdCBwcm9maWxlcyBwcm9qZWN0IHByb21wdCBwcm90ZWN0aW9uIHB1YmxpYyBwdWJsaXNoaW5nc2VydmVybmFtZSBwdXJnZSBxdWFydGVyIHF1ZXJ5IHF1aWNrIHF1aWVzY2UgcXVvdGEgcXVvdGVuYW1lIHJhZGlhbnMgcmFpc2UgcmFuZCByYW5nZSByYW5rIHJhdyByZWFkIHJlYWRzIHJlYWRzaXplIHJlYnVpbGQgcmVjb3JkIHJlY29yZHMgcmVjb3ZlciByZWNvdmVyeSByZWN1cnNpdmUgcmVjeWNsZSByZWRvIHJlZHVjZWQgcmVmIHJlZmVyZW5jZSByZWZlcmVuY2VkIHJlZmVyZW5jZXMgcmVmZXJlbmNpbmcgcmVmcmVzaCByZWdleHBfbGlrZSByZWdpc3RlciByZWdyX2F2Z3ggcmVncl9hdmd5IHJlZ3JfY291bnQgcmVncl9pbnRlcmNlcHQgcmVncl9yMiByZWdyX3Nsb3BlIHJlZ3Jfc3h4IHJlZ3Jfc3h5IHJlamVjdCByZWtleSByZWxhdGlvbmFsIHJlbGF0aXZlIHJlbGF5bG9nIHJlbGVhc2UgcmVsZWFzZV9sb2NrIHJlbGllc19vbiByZWxvY2F0ZSByZWx5IHJlbSByZW1haW5kZXIgcmVuYW1lIHJlcGFpciByZXBlYXQgcmVwbGFjZSByZXBsaWNhdGUgcmVwbGljYXRpb24gcmVxdWlyZWQgcmVzZXQgcmVzZXRsb2dzIHJlc2l6ZSByZXNvdXJjZSByZXNwZWN0IHJlc3RvcmUgcmVzdHJpY3RlZCByZXN1bHQgcmVzdWx0X2NhY2hlIHJlc3VtYWJsZSByZXN1bWUgcmV0ZW50aW9uIHJldHVybiByZXR1cm5pbmcgcmV0dXJucyByZXVzZSByZXZlcnNlIHJldm9rZSByaWdodCBybGlrZSByb2xlIHJvbGVzIHJvbGxiYWNrIHJvbGxpbmcgcm9sbHVwIHJvdW5kIHJvdyByb3dfY291bnQgcm93ZGVwZW5kZW5jaWVzIHJvd2lkIHJvd251bSByb3dzIHJ0cmltIHJ1bGVzIHNhZmUgc2FsdCBzYW1wbGUgc2F2ZSBzYXZlcG9pbnQgc2IxIHNiMiBzYjQgc2NhbiBzY2hlbWEgc2NoZW1hY2hlY2sgc2NuIHNjb3BlIHNjcm9sbCBzZG9fZ2VvcmFzdGVyIHNkb190b3BvX2dlb21ldHJ5IHNlYXJjaCBzZWNfdG9fdGltZSBzZWNvbmQgc2VjdGlvbiBzZWN1cmVmaWxlIHNlY3VyaXR5IHNlZWQgc2VnbWVudCBzZWxlY3Qgc2VsZiBzZXF1ZW5jZSBzZXF1ZW50aWFsIHNlcmlhbGl6YWJsZSBzZXJ2ZXIgc2VydmVyZXJyb3Igc2Vzc2lvbiBzZXNzaW9uX3VzZXIgc2Vzc2lvbnNfcGVyX3VzZXIgc2V0IHNldHMgc2V0dGluZ3Mgc2hhIHNoYTEgc2hhMiBzaGFyZSBzaGFyZWQgc2hhcmVkX3Bvb2wgc2hvcnQgc2hvdyBzaHJpbmsgc2h1dGRvd24gc2lfYXZlcmFnZWNvbG9yIHNpX2NvbG9yaGlzdG9ncmFtIHNpX2ZlYXR1cmVsaXN0IHNpX3Bvc2l0aW9uYWxjb2xvciBzaV9zdGlsbGltYWdlIHNpX3RleHR1cmUgc2libGluZ3Mgc2lkIHNpZ24gc2luIHNpemUgc2l6ZV90IHNpemVzIHNraXAgc2xhdmUgc2xlZXAgc21hbGxkYXRldGltZWZyb21wYXJ0cyBzbWFsbGZpbGUgc25hcHNob3Qgc29tZSBzb25hbWUgc29ydCBzb3VuZGV4IHNvdXJjZSBzcGFjZSBzcGFyc2Ugc3BmaWxlIHNwbGl0IHNxbCBzcWxfYmlnX3Jlc3VsdCBzcWxfYnVmZmVyX3Jlc3VsdCBzcWxfY2FjaGUgc3FsX2NhbGNfZm91bmRfcm93cyBzcWxfc21hbGxfcmVzdWx0IHNxbF92YXJpYW50X3Byb3BlcnR5IHNxbGNvZGUgc3FsZGF0YSBzcWxlcnJvciBzcWxuYW1lIHNxbHN0YXRlIHNxcnQgc3F1YXJlIHN0YW5kYWxvbmUgc3RhbmRieSBzdGFydCBzdGFydGluZyBzdGFydHVwIHN0YXRlbWVudCBzdGF0aWMgc3RhdGlzdGljcyBzdGF0c19iaW5vbWlhbF90ZXN0IHN0YXRzX2Nyb3NzdGFiIHN0YXRzX2tzX3Rlc3Qgc3RhdHNfbW9kZSBzdGF0c19td190ZXN0IHN0YXRzX29uZV93YXlfYW5vdmEgc3RhdHNfdF90ZXN0XyBzdGF0c190X3Rlc3RfaW5kZXAgc3RhdHNfdF90ZXN0X29uZSBzdGF0c190X3Rlc3RfcGFpcmVkIHN0YXRzX3dzcl90ZXN0IHN0YXR1cyBzdGQgc3RkZGV2IHN0ZGRldl9wb3Agc3RkZGV2X3NhbXAgc3RkZXYgc3RvcCBzdG9yYWdlIHN0b3JlIHN0b3JlZCBzdHIgc3RyX3RvX2RhdGUgc3RyYWlnaHRfam9pbiBzdHJjbXAgc3RyaWN0IHN0cmluZyBzdHJ1Y3Qgc3R1ZmYgc3R5bGUgc3ViZGF0ZSBzdWJwYXJ0aXRpb24gc3VicGFydGl0aW9ucyBzdWJzdGl0dXRhYmxlIHN1YnN0ciBzdWJzdHJpbmcgc3VidGltZSBzdWJ0cmluZ19pbmRleCBzdWJ0eXBlIHN1Y2Nlc3Mgc3VtIHN1c3BlbmQgc3dpdGNoIHN3aXRjaG9mZnNldCBzd2l0Y2hvdmVyIHN5bmMgc3luY2hyb25vdXMgc3lub255bSBzeXMgc3lzX3htbGFnZyBzeXNhc20gc3lzYXV4IHN5c2RhdGUgc3lzZGF0ZXRpbWVvZmZzZXQgc3lzZGJhIHN5c29wZXIgc3lzdGVtIHN5c3RlbV91c2VyIHN5c3V0Y2RhdGV0aW1lIHRhYmxlIHRhYmxlcyB0YWJsZXNwYWNlIHRhbiB0ZG8gdGVtcGxhdGUgdGVtcG9yYXJ5IHRlcm1pbmF0ZWQgdGVydGlhcnlfd2VpZ2h0cyB0ZXN0IHRoYW4gdGhlbiB0aHJlYWQgdGhyb3VnaCB0aWVyIHRpZXMgdGltZSB0aW1lX2Zvcm1hdCB0aW1lX3pvbmUgdGltZWRpZmYgdGltZWZyb21wYXJ0cyB0aW1lb3V0IHRpbWVzdGFtcCB0aW1lc3RhbXBhZGQgdGltZXN0YW1wZGlmZiB0aW1lem9uZV9hYmJyIHRpbWV6b25lX21pbnV0ZSB0aW1lem9uZV9yZWdpb24gdG8gdG9fYmFzZTY0IHRvX2RhdGUgdG9fZGF5cyB0b19zZWNvbmRzIHRvZGF0ZXRpbWVvZmZzZXQgdHJhY2UgdHJhY2tpbmcgdHJhbnNhY3Rpb24gdHJhbnNhY3Rpb25hbCB0cmFuc2xhdGUgdHJhbnNsYXRpb24gdHJlYXQgdHJpZ2dlciB0cmlnZ2VyX25lc3RsZXZlbCB0cmlnZ2VycyB0cmltIHRydW5jYXRlIHRyeV9jYXN0IHRyeV9jb252ZXJ0IHRyeV9wYXJzZSB0eXBlIHViMSB1YjIgdWI0IHVjYXNlIHVuYXJjaGl2ZWQgdW5ib3VuZGVkIHVuY29tcHJlc3MgdW5kZXIgdW5kbyB1bmhleCB1bmljb2RlIHVuaWZvcm0gdW5pbnN0YWxsIHVuaW9uIHVuaXF1ZSB1bml4X3RpbWVzdGFtcCB1bmtub3duIHVubGltaXRlZCB1bmxvY2sgdW5waXZvdCB1bnJlY292ZXJhYmxlIHVuc2FmZSB1bnNpZ25lZCB1bnRpbCB1bnRydXN0ZWQgdW51c2FibGUgdW51c2VkIHVwZGF0ZSB1cGRhdGVkIHVwZ3JhZGUgdXBwZWQgdXBwZXIgdXBzZXJ0IHVybCB1cm93aWQgdXNhYmxlIHVzYWdlIHVzZSB1c2Vfc3RvcmVkX291dGxpbmVzIHVzZXIgdXNlcl9kYXRhIHVzZXJfcmVzb3VyY2VzIHVzZXJzIHVzaW5nIHV0Y19kYXRlIHV0Y190aW1lc3RhbXAgdXVpZCB1dWlkX3Nob3J0IHZhbGlkYXRlIHZhbGlkYXRlX3Bhc3N3b3JkX3N0cmVuZ3RoIHZhbGlkYXRpb24gdmFsaXN0IHZhbHVlIHZhbHVlcyB2YXIgdmFyX3NhbXAgdmFyY2hhcmMgdmFyaSB2YXJpYSB2YXJpYWIgdmFyaWFibCB2YXJpYWJsZSB2YXJpYWJsZXMgdmFyaWFuY2UgdmFycCB2YXJyYXcgdmFycmF3YyB2YXJyYXkgdmVyaWZ5IHZlcnNpb24gdmVyc2lvbnMgdmlldyB2aXJ0dWFsIHZpc2libGUgdm9pZCB3YWl0IHdhbGxldCB3YXJuaW5nIHdhcm5pbmdzIHdlZWsgd2Vla2RheSB3ZWVrb2Z5ZWFyIHdlbGxmb3JtZWQgd2hlbiB3aGVuZSB3aGVuZXYgd2hlbmV2ZSB3aGVuZXZlciB3aGVyZSB3aGlsZSB3aGl0ZXNwYWNlIHdpdGggd2l0aGluIHdpdGhvdXQgd29yayB3cmFwcGVkIHhkYiB4bWwgeG1sYWdnIHhtbGF0dHJpYnV0ZXMgeG1sY2FzdCB4bWxjb2xhdHR2YWwgeG1sZWxlbWVudCB4bWxleGlzdHMgeG1sZm9yZXN0IHhtbGluZGV4IHhtbG5hbWVzcGFjZXMgeG1scGkgeG1scXVlcnkgeG1scm9vdCB4bWxzY2hlbWEgeG1sc2VyaWFsaXplIHhtbHRhYmxlIHhtbHR5cGUgeG9yIHllYXIgeWVhcl90b19tb250aCB5ZWFycyB5ZWFyd2VlayIsbGl0ZXJhbDoidHJ1ZSBmYWxzZSBudWxsIixidWlsdF9pbjoiYXJyYXkgYmlnaW50IGJpbmFyeSBiaXQgYmxvYiBib29sZWFuIGNoYXIgY2hhcmFjdGVyIGRhdGUgZGVjIGRlY2ltYWwgZmxvYXQgaW50IGludDggaW50ZWdlciBpbnRlcnZhbCBudW1iZXIgbnVtZXJpYyByZWFsIHJlY29yZCBzZXJpYWwgc2VyaWFsOCBzbWFsbGludCB0ZXh0IHZhcmNoYXIgdmFyeWluZyB2b2lkIn0sYzpbe2NOOiJzdHJpbmciLGI6IiciLGU6IiciLGM6W2UuQkUse2I6IicnIn1dfSx7Y046InN0cmluZyIsYjonIicsZTonIicsYzpbZS5CRSx7YjonIiInfV19LHtjTjoic3RyaW5nIixiOiJgIixlOiJgIixjOltlLkJFXX0sZS5DTk0sZS5DQkNNLHRdfSxlLkNCQ00sdF19fSk7aGxqcy5yZWdpc3Rlckxhbmd1YWdlKCJyIixmdW5jdGlvbihlKXt2YXIgcj0iKFthLXpBLVpdfFxcLlthLXpBLVouXSlbYS16QS1aMC05Ll9dKiI7cmV0dXJue2M6W2UuSENNLHtiOnIsbDpyLGs6e2tleXdvcmQ6ImZ1bmN0aW9uIGlmIGluIGJyZWFrIG5leHQgcmVwZWF0IGVsc2UgZm9yIHJldHVybiBzd2l0Y2ggd2hpbGUgdHJ5IHRyeUNhdGNoIHN0b3Agd2FybmluZyByZXF1aXJlIGxpYnJhcnkgYXR0YWNoIGRldGFjaCBzb3VyY2Ugc2V0TWV0aG9kIHNldEdlbmVyaWMgc2V0R3JvdXBHZW5lcmljIHNldENsYXNzIC4uLiIsbGl0ZXJhbDoiTlVMTCBOQSBUUlVFIEZBTFNFIFQgRiBJbmYgTmFOIE5BX2ludGVnZXJffDEwIE5BX3JlYWxffDEwIE5BX2NoYXJhY3Rlcl98MTAgTkFfY29tcGxleF98MTAifSxyOjB9LHtjTjoibnVtYmVyIixiOiIwW3hYXVswLTlhLWZBLUZdK1tMaV0\/XFxiIixyOjB9LHtjTjoibnVtYmVyIixiOiJcXGQrKD86W2VFXVsrXFwtXT9cXGQqKT9MXFxiIixyOjB9LHtjTjoibnVtYmVyIixiOiJcXGQrXFwuKD8hXFxkKSg\/OmlcXGIpPyIscjowfSx7Y046Im51bWJlciIsYjoiXFxkKyg\/OlxcLlxcZCopPyg\/OltlRV1bK1xcLV0\/XFxkKik\/aT9cXGIiLHI6MH0se2NOOiJudW1iZXIiLGI6IlxcLlxcZCsoPzpbZUVdWytcXC1dP1xcZCopP2k\/XFxiIixyOjB9LHtiOiJgIixlOiJgIixyOjB9LHtjTjoic3RyaW5nIixjOltlLkJFXSx2Olt7YjonIicsZTonIid9LHtiOiInIixlOiInIn1dfV19fSk7aGxqcy5yZWdpc3Rlckxhbmd1YWdlKCJwZXJsIixmdW5jdGlvbihlKXt2YXIgdD0iZ2V0cHdlbnQgZ2V0c2VydmVudCBxdW90ZW1ldGEgbXNncmN2IHNjYWxhciBraWxsIGRibWNsb3NlIHVuZGVmIGxjIG1hIHN5c3dyaXRlIHRyIHNlbmQgdW1hc2sgc3lzb3BlbiBzaG13cml0ZSB2ZWMgcXggdXRpbWUgbG9jYWwgb2N0IHNlbWN0bCBsb2NhbHRpbWUgcmVhZHBpcGUgZG8gcmV0dXJuIGZvcm1hdCByZWFkIHNwcmludGYgZGJtb3BlbiBwb3AgZ2V0cGdycCBub3QgZ2V0cHduYW0gcmV3aW5kZGlyIHFxZmlsZW5vIHF3IGVuZHByb3RvZW50IHdhaXQgc2V0aG9zdGVudCBibGVzcyBzfDAgb3BlbmRpciBjb250aW51ZSBlYWNoIHNsZWVwIGVuZGdyZW50IHNodXRkb3duIGR1bXAgY2hvbXAgY29ubmVjdCBnZXRzb2NrbmFtZSBkaWUgc29ja2V0cGFpciBjbG9zZSBmbG9jayBleGlzdHMgaW5kZXggc2htZ2V0c3ViIGZvciBlbmRwd2VudCByZWRvIGxzdGF0IG1zZ2N0bCBzZXRwZ3JwIGFicyBleGl0IHNlbGVjdCBwcmludCByZWYgZ2V0aG9zdGJ5YWRkciB1bnNoaWZ0IGZjbnRsIHN5c2NhbGwgZ290byBnZXRuZXRieWFkZHIgam9pbiBnbXRpbWUgc3ltbGluayBzZW1nZXQgc3BsaWNlIHh8MCBnZXRwZWVybmFtZSByZWN2IGxvZyBzZXRzb2Nrb3B0IGNvcyBsYXN0IHJldmVyc2UgZ2V0aG9zdGJ5bmFtZSBnZXRncm5hbSBzdHVkeSBmb3JtbGluZSBlbmRob3N0ZW50IHRpbWVzIGNob3AgbGVuZ3RoIGdldGhvc3RlbnQgZ2V0bmV0ZW50IHBhY2sgZ2V0cHJvdG9lbnQgZ2V0c2VydmJ5bmFtZSByYW5kIG1rZGlyIHBvcyBjaG1vZCB5fDAgc3Vic3RyIGVuZG5ldGVudCBwcmludGYgbmV4dCBvcGVuIG1zZ3NuZCByZWFkZGlyIHVzZSB1bmxpbmsgZ2V0c29ja29wdCBnZXRwcmlvcml0eSByaW5kZXggd2FudGFycmF5IGhleCBzeXN0ZW0gZ2V0c2VydmJ5cG9ydCBlbmRzZXJ2ZW50IGludCBjaHIgdW50aWUgcm1kaXIgcHJvdG90eXBlIHRlbGwgbGlzdGVuIGZvcmsgc2htcmVhZCB1Y2ZpcnN0IHNldHByb3RvZW50IGVsc2Ugc3lzc2VlayBsaW5rIGdldGdyZ2lkIHNobWN0bCB3YWl0cGlkIHVucGFjayBnZXRuZXRieW5hbWUgcmVzZXQgY2hkaXIgZ3JlcCBzcGxpdCByZXF1aXJlIGNhbGxlciBsY2ZpcnN0IHVudGlsIHdhcm4gd2hpbGUgdmFsdWVzIHNoaWZ0IHRlbGxkaXIgZ2V0cHd1aWQgbXkgZ2V0cHJvdG9ieW51bWJlciBkZWxldGUgYW5kIHNvcnQgdWMgZGVmaW5lZCBzcmFuZCBhY2NlcHQgcGFja2FnZSBzZWVrZGlyIGdldHByb3RvYnluYW1lIHNlbW9wIG91ciByZW5hbWUgc2VlayBpZiBxfDAgY2hyb290IHN5c3JlYWQgc2V0cHdlbnQgbm8gY3J5cHQgZ2V0YyBjaG93biBzcXJ0IHdyaXRlIHNldG5ldGVudCBzZXRwcmlvcml0eSBmb3JlYWNoIHRpZSBzaW4gbXNnZ2V0IG1hcCBzdGF0IGdldGxvZ2luIHVubGVzcyBlbHNpZiB0cnVuY2F0ZSBleGVjIGtleXMgZ2xvYiB0aWVkIGNsb3NlZGlyaW9jdGwgc29ja2V0IHJlYWRsaW5rIGV2YWwgeG9yIHJlYWRsaW5lIGJpbm1vZGUgc2V0c2VydmVudCBlb2Ygb3JkIGJpbmQgYWxhcm0gcGlwZSBhdGFuMiBnZXRncmVudCBleHAgdGltZSBwdXNoIHNldGdyZW50IGd0IGx0IG9yIG5lIG18MCBicmVhayBnaXZlbiBzYXkgc3RhdGUgd2hlbiIscj17Y046InN1YnN0IixiOiJbJEBdXFx7IixlOiJcXH0iLGs6dH0scz17YjoiLT57IixlOiJ9In0sbj17djpbe2I6L1wkXGQvfSx7YjovW1wkJUBdKFxeXHdcYnwjXHcrKDo6XHcrKSp8e1x3K318XHcrKDo6XHcqKSopL30se2I6L1tcJCVAXVteXHNcd3tdLyxyOjB9XX0saT1bZS5CRSxyLG5dLG89W24sZS5IQ00sZS5DKCJeXFw9XFx3IiwiXFw9Y3V0Iix7ZVc6ITB9KSxzLHtjTjoic3RyaW5nIixjOmksdjpbe2I6InFbcXd4cl0\/XFxzKlxcKCIsZToiXFwpIixyOjV9LHtiOiJxW3F3eHJdP1xccypcXFsiLGU6IlxcXSIscjo1fSx7YjoicVtxd3hyXT9cXHMqXFx7IixlOiJcXH0iLHI6NX0se2I6InFbcXd4cl0\/XFxzKlxcfCIsZToiXFx8IixyOjV9LHtiOiJxW3F3eHJdP1xccypcXDwiLGU6IlxcPiIscjo1fSx7YjoicXdcXHMrcSIsZToicSIscjo1fSx7YjoiJyIsZToiJyIsYzpbZS5CRV19LHtiOiciJyxlOiciJ30se2I6ImAiLGU6ImAiLGM6W2UuQkVdfSx7Yjoie1xcdyt9IixjOltdLHI6MH0se2I6Ii0\/XFx3K1xccypcXD1cXD4iLGM6W10scjowfV19LHtjTjoibnVtYmVyIixiOiIoXFxiMFswLTdfXSspfChcXGIweFswLTlhLWZBLUZfXSspfChcXGJbMS05XVswLTlfXSooXFwuWzAtOV9dKyk\/KXxbMF9dXFxiIixyOjB9LHtiOiIoXFwvXFwvfCIrZS5SU1IrInxcXGIoc3BsaXR8cmV0dXJufHByaW50fHJldmVyc2V8Z3JlcClcXGIpXFxzKiIsazoic3BsaXQgcmV0dXJuIHByaW50IHJldmVyc2UgZ3JlcCIscjowLGM6W2UuSENNLHtjTjoicmVnZXhwIixiOiIoc3x0cnx5KS8oXFxcXC58W14vXSkqLyhcXFxcLnxbXi9dKSovW2Etel0qIixyOjEwfSx7Y046InJlZ2V4cCIsYjoiKG18cXIpPy8iLGU6Ii9bYS16XSoiLGM6W2UuQkVdLHI6MH1dfSx7Y046ImZ1bmN0aW9uIixiSzoic3ViIixlOiIoXFxzKlxcKC4qP1xcKSk\/Wzt7XSIsZUU6ITAscjo1LGM6W2UuVE1dfSx7YjoiLVxcd1xcYiIscjowfSx7YjoiXl9fREFUQV9fJCIsZToiXl9fRU5EX18kIixzTDoibW9qb2xpY2lvdXMiLGM6W3tiOiJeQEAuKiIsZToiJCIsY046ImNvbW1lbnQifV19XTtyZXR1cm4gci5jPW8scy5jPW8se2FsaWFzZXM6WyJwbCIsInBtIl0sbDovW1x3XC5dKy8sazp0LGM6b319KTtobGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoImluaSIsZnVuY3Rpb24oZSl7dmFyIGI9e2NOOiJzdHJpbmciLGM6W2UuQkVdLHY6W3tiOiInJyciLGU6IicnJyIscjoxMH0se2I6JyIiIicsZTonIiIiJyxyOjEwfSx7YjonIicsZTonIid9LHtiOiInIixlOiInIn1dfTtyZXR1cm57YWxpYXNlczpbInRvbWwiXSxjSTohMCxpOi9cUy8sYzpbZS5DKCI7IiwiJCIpLGUuSENNLHtjTjoic2VjdGlvbiIsYjovXlxzKlxbKy8sZTovXF0rL30se2I6L15bYS16MC05XFtcXV8tXStccyo9XHMqLyxlOiIkIixyQjohMCxjOlt7Y046ImF0dHIiLGI6L1thLXowLTlcW1xdXy1dKy99LHtiOi89LyxlVzohMCxyOjAsYzpbe2NOOiJsaXRlcmFsIixiOi9cYm9ufG9mZnx0cnVlfGZhbHNlfHllc3xub1xiL30se2NOOiJ2YXJpYWJsZSIsdjpbe2I6L1wkW1x3XGQiXVtcd1xkX10qL30se2I6L1wkXHsoLio\/KX0vfV19LGIse2NOOiJudW1iZXIiLGI6LyhbXCtcLV0rKT9bXGRdK19bXGRfXSsvfSxlLk5NXX1dfV19fSk7aGxqcy5yZWdpc3Rlckxhbmd1YWdlKCJkaWZmIixmdW5jdGlvbihlKXtyZXR1cm57YWxpYXNlczpbInBhdGNoIl0sYzpbe2NOOiJtZXRhIixyOjEwLHY6W3tiOi9eQEAgK1wtXGQrLFxkKyArXCtcZCssXGQrICtAQCQvfSx7YjovXlwqXCpcKiArXGQrLFxkKyArXCpcKlwqXCokL30se2I6L15cLVwtXC0gK1xkKyxcZCsgK1wtXC1cLVwtJC99XX0se2NOOiJjb21tZW50Iix2Olt7YjovSW5kZXg6IC8sZTovJC99LHtiOi89ezMsfS8sZTovJC99LHtiOi9eXC17M30vLGU6LyQvfSx7YjovXlwqezN9IC8sZTovJC99LHtiOi9eXCt7M30vLGU6LyQvfSx7YjovXCp7NX0vLGU6L1wqezV9JC99XX0se2NOOiJhZGRpdGlvbiIsYjoiXlxcKyIsZToiJCJ9LHtjTjoiZGVsZXRpb24iLGI6Il5cXC0iLGU6IiQifSx7Y046ImFkZGl0aW9uIixiOiJeXFwhIixlOiIkIn1dfX0pO2hsanMucmVnaXN0ZXJMYW5ndWFnZSgiZ28iLGZ1bmN0aW9uKGUpe3ZhciB0PXtrZXl3b3JkOiJicmVhayBkZWZhdWx0IGZ1bmMgaW50ZXJmYWNlIHNlbGVjdCBjYXNlIG1hcCBzdHJ1Y3QgY2hhbiBlbHNlIGdvdG8gcGFja2FnZSBzd2l0Y2ggY29uc3QgZmFsbHRocm91Z2ggaWYgcmFuZ2UgdHlwZSBjb250aW51ZSBmb3IgaW1wb3J0IHJldHVybiB2YXIgZ28gZGVmZXIgYm9vbCBieXRlIGNvbXBsZXg2NCBjb21wbGV4MTI4IGZsb2F0MzIgZmxvYXQ2NCBpbnQ4IGludDE2IGludDMyIGludDY0IHN0cmluZyB1aW50OCB1aW50MTYgdWludDMyIHVpbnQ2NCBpbnQgdWludCB1aW50cHRyIHJ1bmUiLGxpdGVyYWw6InRydWUgZmFsc2UgaW90YSBuaWwiLGJ1aWx0X2luOiJhcHBlbmQgY2FwIGNsb3NlIGNvbXBsZXggY29weSBpbWFnIGxlbiBtYWtlIG5ldyBwYW5pYyBwcmludCBwcmludGxuIHJlYWwgcmVjb3ZlciBkZWxldGUifTtyZXR1cm57YWxpYXNlczpbImdvbGFuZyJdLGs6dCxpOiI8LyIsYzpbZS5DTENNLGUuQ0JDTSx7Y046InN0cmluZyIsdjpbZS5RU00se2I6IiciLGU6IlteXFxcXF0nIn0se2I6ImAiLGU6ImAifV19LHtjTjoibnVtYmVyIix2Olt7YjplLkNOUisiW2RmbHNpXSIscjoxfSxlLkNOTV19LHtiOi86PS99LHtjTjoiZnVuY3Rpb24iLGJLOiJmdW5jIixlOi9ccypcey8sZUU6ITAsYzpbZS5UTSx7Y046InBhcmFtcyIsYjovXCgvLGU6L1wpLyxrOnQsaTovWyInXS99XX1dfX0pO2hsanMucmVnaXN0ZXJMYW5ndWFnZSgiYmFzaCIsZnVuY3Rpb24oZSl7dmFyIHQ9e2NOOiJ2YXJpYWJsZSIsdjpbe2I6L1wkW1x3XGQjQF1bXHdcZF9dKi99LHtiOi9cJFx7KC4qPyl9L31dfSxzPXtjTjoic3RyaW5nIixiOi8iLyxlOi8iLyxjOltlLkJFLHQse2NOOiJ2YXJpYWJsZSIsYjovXCRcKC8sZTovXCkvLGM6W2UuQkVdfV19LGE9e2NOOiJzdHJpbmciLGI6LycvLGU6LycvfTtyZXR1cm57YWxpYXNlczpbInNoIiwienNoIl0sbDovXGItP1thLXpcLl9dK1xiLyxrOntrZXl3b3JkOiJpZiB0aGVuIGVsc2UgZWxpZiBmaSBmb3Igd2hpbGUgaW4gZG8gZG9uZSBjYXNlIGVzYWMgZnVuY3Rpb24iLGxpdGVyYWw6InRydWUgZmFsc2UiLGJ1aWx0X2luOiJicmVhayBjZCBjb250aW51ZSBldmFsIGV4ZWMgZXhpdCBleHBvcnQgZ2V0b3B0cyBoYXNoIHB3ZCByZWFkb25seSByZXR1cm4gc2hpZnQgdGVzdCB0aW1lcyB0cmFwIHVtYXNrIHVuc2V0IGFsaWFzIGJpbmQgYnVpbHRpbiBjYWxsZXIgY29tbWFuZCBkZWNsYXJlIGVjaG8gZW5hYmxlIGhlbHAgbGV0IGxvY2FsIGxvZ291dCBtYXBmaWxlIHByaW50ZiByZWFkIHJlYWRhcnJheSBzb3VyY2UgdHlwZSB0eXBlc2V0IHVsaW1pdCB1bmFsaWFzIHNldCBzaG9wdCBhdXRvbG9hZCBiZyBiaW5ka2V5IGJ5ZSBjYXAgY2hkaXIgY2xvbmUgY29tcGFyZ3VtZW50cyBjb21wY2FsbCBjb21wY3RsIGNvbXBkZXNjcmliZSBjb21wZmlsZXMgY29tcGdyb3VwcyBjb21wcXVvdGUgY29tcHRhZ3MgY29tcHRyeSBjb21wdmFsdWVzIGRpcnMgZGlzYWJsZSBkaXNvd24gZWNob3RjIGVjaG90aSBlbXVsYXRlIGZjIGZnIGZsb2F0IGZ1bmN0aW9ucyBnZXRjYXAgZ2V0bG4gaGlzdG9yeSBpbnRlZ2VyIGpvYnMga2lsbCBsaW1pdCBsb2cgbm9nbG9iIHBvcGQgcHJpbnQgcHVzaGQgcHVzaGxuIHJlaGFzaCBzY2hlZCBzZXRjYXAgc2V0b3B0IHN0YXQgc3VzcGVuZCB0dHljdGwgdW5mdW5jdGlvbiB1bmhhc2ggdW5saW1pdCB1bnNldG9wdCB2YXJlZCB3YWl0IHdoZW5jZSB3aGVyZSB3aGljaCB6Y29tcGlsZSB6Zm9ybWF0IHpmdHAgemxlIHptb2Rsb2FkIHpwYXJzZW9wdHMgenByb2YgenB0eSB6cmVnZXhwYXJzZSB6c29ja2V0IHpzdHlsZSB6dGNwIixfOiItbmUgLWVxIC1sdCAtZ3QgLWYgLWQgLWUgLXMgLWwgLWEifSxjOlt7Y046Im1ldGEiLGI6L14jIVteXG5dK3NoXHMqJC8scjoxMH0se2NOOiJmdW5jdGlvbiIsYjovXHdbXHdcZF9dKlxzKlwoXHMqXClccypcey8sckI6ITAsYzpbZS5pbmhlcml0KGUuVE0se2I6L1x3W1x3XGRfXSovfSldLHI6MH0sZS5IQ00scyxhLHRdfX0pO2hsanMucmVnaXN0ZXJMYW5ndWFnZSgicHl0aG9uIixmdW5jdGlvbihlKXt2YXIgcj17a2V5d29yZDoiYW5kIGVsaWYgaXMgZ2xvYmFsIGFzIGluIGlmIGZyb20gcmFpc2UgZm9yIGV4Y2VwdCBmaW5hbGx5IHByaW50IGltcG9ydCBwYXNzIHJldHVybiBleGVjIGVsc2UgYnJlYWsgbm90IHdpdGggY2xhc3MgYXNzZXJ0IHlpZWxkIHRyeSB3aGlsZSBjb250aW51ZSBkZWwgb3IgZGVmIGxhbWJkYSBhc3luYyBhd2FpdCBub25sb2NhbHwxMCBOb25lIFRydWUgRmFsc2UiLGJ1aWx0X2luOiJFbGxpcHNpcyBOb3RJbXBsZW1lbnRlZCJ9LGI9e2NOOiJtZXRhIixiOi9eKD4+PnxcLlwuXC4pIC99LGM9e2NOOiJzdWJzdCIsYjovXHsvLGU6L1x9LyxrOnIsaTovIy99LGE9e2NOOiJzdHJpbmciLGM6W2UuQkVdLHY6W3tiOi8odXxiKT9yPycnJy8sZTovJycnLyxjOltiXSxyOjEwfSx7YjovKHV8Yik\/cj8iIiIvLGU6LyIiIi8sYzpbYl0scjoxMH0se2I6LyhmcnxyZnxmKScnJy8sZTovJycnLyxjOltiLGNdfSx7YjovKGZyfHJmfGYpIiIiLyxlOi8iIiIvLGM6W2IsY119LHtiOi8odXxyfHVyKScvLGU6LycvLHI6MTB9LHtiOi8odXxyfHVyKSIvLGU6LyIvLHI6MTB9LHtiOi8oYnxiciknLyxlOi8nL30se2I6LyhifGJyKSIvLGU6LyIvfSx7YjovKGZyfHJmfGYpJy8sZTovJy8sYzpbY119LHtiOi8oZnJ8cmZ8ZikiLyxlOi8iLyxjOltjXX0sZS5BU00sZS5RU01dfSxzPXtjTjoibnVtYmVyIixyOjAsdjpbe2I6ZS5CTlIrIltsTGpKXT8ifSx7YjoiXFxiKDBvWzAtN10rKVtsTGpKXT8ifSx7YjplLkNOUisiW2xMakpdPyJ9XX0saT17Y046InBhcmFtcyIsYjovXCgvLGU6L1wpLyxjOlsic2VsZiIsYixzLGFdfTtyZXR1cm4gYy5jPVthLHMsYl0se2FsaWFzZXM6WyJweSIsImd5cCJdLGs6cixpOi8oPFwvfC0+fFw\/KXw9Pi8sYzpbYixzLGEsZS5IQ00se3Y6W3tjTjoiZnVuY3Rpb24iLGJLOiJkZWYifSx7Y046ImNsYXNzIixiSzoiY2xhc3MifV0sZTovOi8saTovWyR7PTtcbixdLyxjOltlLlVUTSxpLHtiOi8tPi8sZVc6ITAsazoiTm9uZSJ9XX0se2NOOiJtZXRhIixiOi9eW1x0IF0qQC8sZTovJC99LHtiOi9cYihwcmludHxleGVjKVwoL31dfX0pO2hsanMucmVnaXN0ZXJMYW5ndWFnZSgianVsaWEiLGZ1bmN0aW9uKGUpe3ZhciByPXtrZXl3b3JkOiJpbiBpc2Egd2hlcmUgYmFyZW1vZHVsZSBiZWdpbiBicmVhayBjYXRjaCBjY2FsbCBjb25zdCBjb250aW51ZSBkbyBlbHNlIGVsc2VpZiBlbmQgZXhwb3J0IGZhbHNlIGZpbmFsbHkgZm9yIGZ1bmN0aW9uIGdsb2JhbCBpZiBpbXBvcnQgaW1wb3J0YWxsIGxldCBsb2NhbCBtYWNybyBtb2R1bGUgcXVvdGUgcmV0dXJuIHRydWUgdHJ5IHVzaW5nIHdoaWxlIHR5cGUgaW1tdXRhYmxlIGFic3RyYWN0IGJpdHN0eXBlIHR5cGVhbGlhcyAiLGxpdGVyYWw6InRydWUgZmFsc2UgQVJHUyBDX05VTEwgRGV2TnVsbCBFTkRJQU5fQk9NIEVOViBJIEluZiBJbmYxNiBJbmYzMiBJbmY2NCBJbnNlcnRpb25Tb3J0IEpVTElBX0hPTUUgTE9BRF9QQVRIIE1lcmdlU29ydCBOYU4gTmFOMTYgTmFOMzIgTmFONjQgUFJPR1JBTV9GSUxFIFF1aWNrU29ydCBSb3VuZERvd24gUm91bmRGcm9tWmVybyBSb3VuZE5lYXJlc3QgUm91bmROZWFyZXN0VGllc0F3YXkgUm91bmROZWFyZXN0VGllc1VwIFJvdW5kVG9aZXJvIFJvdW5kVXAgU1RERVJSIFNURElOIFNURE9VVCBWRVJTSU9OIGNhdGFsYW4gZXwwIGV1fDAgZXVsZXJnYW1tYSBnb2xkZW4gaW0gbm90aGluZyBwaSDOsyDPgCDPhiAiLGJ1aWx0X2luOiJBTlkgQWJzdHJhY3RBcnJheSBBYnN0cmFjdENoYW5uZWwgQWJzdHJhY3RGbG9hdCBBYnN0cmFjdE1hdHJpeCBBYnN0cmFjdFJORyBBYnN0cmFjdFNlcmlhbGl6ZXIgQWJzdHJhY3RTZXQgQWJzdHJhY3RTcGFyc2VBcnJheSBBYnN0cmFjdFNwYXJzZU1hdHJpeCBBYnN0cmFjdFNwYXJzZVZlY3RvciBBYnN0cmFjdFN0cmluZyBBYnN0cmFjdFVuaXRSYW5nZSBBYnN0cmFjdFZlY09yTWF0IEFic3RyYWN0VmVjdG9yIEFueSBBcmd1bWVudEVycm9yIEFycmF5IEFzc2VydGlvbkVycm9yIEFzc29jaWF0aXZlIEJhc2U2NERlY29kZVBpcGUgQmFzZTY0RW5jb2RlUGlwZSBCaWRpYWdvbmFsIEJpZ0Zsb2F0IEJpZ0ludCBCaXRBcnJheSBCaXRNYXRyaXggQml0VmVjdG9yIEJvb2wgQm91bmRzRXJyb3IgQnVmZmVyU3RyZWFtIENhY2hpbmdQb29sIENhcHR1cmVkRXhjZXB0aW9uIENhcnRlc2lhbkluZGV4IENhcnRlc2lhblJhbmdlIENjaGFyIENkb3VibGUgQ2Zsb2F0IENoYW5uZWwgQ2hhciBDaW50IENpbnRtYXhfdCBDbG9uZyBDbG9uZ2xvbmcgQ2x1c3Rlck1hbmFnZXIgQ21kIENvZGVJbmZvIENvbG9uIENvbXBsZXggQ29tcGxleDEyOCBDb21wbGV4MzIgQ29tcGxleDY0IENvbXBvc2l0ZUV4Y2VwdGlvbiBDb25kaXRpb24gQ29uakFycmF5IENvbmpNYXRyaXggQ29ualZlY3RvciBDcHRyZGlmZl90IENzaG9ydCBDc2l6ZV90IENzc2l6ZV90IENzdHJpbmcgQ3VjaGFyIEN1aW50IEN1aW50bWF4X3QgQ3Vsb25nIEN1bG9uZ2xvbmcgQ3VzaG9ydCBDd2NoYXJfdCBDd3N0cmluZyBEYXRhVHlwZSBEYXRlIERhdGVGb3JtYXQgRGF0ZVRpbWUgRGVuc2VBcnJheSBEZW5zZU1hdHJpeCBEZW5zZVZlY09yTWF0IERlbnNlVmVjdG9yIERpYWdvbmFsIERpY3QgRGltZW5zaW9uTWlzbWF0Y2ggRGltcyBEaXJlY3RJbmRleFN0cmluZyBEaXNwbGF5IERpdmlkZUVycm9yIERvbWFpbkVycm9yIEVPRkVycm9yIEVhY2hMaW5lIEVudW0gRW51bWVyYXRlIEVycm9yRXhjZXB0aW9uIEV4Y2VwdGlvbiBFeHBvbmVudGlhbEJhY2tPZmYgRXhwciBGYWN0b3JpemF0aW9uIEZpbGVNb25pdG9yIEZsb2F0MTYgRmxvYXQzMiBGbG9hdDY0IEZ1bmN0aW9uIEZ1dHVyZSBHbG9iYWxSZWYgR290b05vZGUgSFRNTCBIZXJtaXRpYW4gSU8gSU9CdWZmZXIgSU9Db250ZXh0IElPU3RyZWFtIElQQWRkciBJUHY0IElQdjYgSW5kZXhDYXJ0ZXNpYW4gSW5kZXhMaW5lYXIgSW5kZXhTdHlsZSBJbmV4YWN0RXJyb3IgSW5pdEVycm9yIEludCBJbnQxMjggSW50MTYgSW50MzIgSW50NjQgSW50OCBJbnRTZXQgSW50ZWdlciBJbnRlcnJ1cHRFeGNlcHRpb24gSW52YWxpZFN0YXRlRXhjZXB0aW9uIElycmF0aW9uYWwgS2V5RXJyb3IgTGFiZWxOb2RlIExpblNwYWNlIExpbmVOdW1iZXJOb2RlIExvYWRFcnJvciBMb3dlclRyaWFuZ3VsYXIgTUlNRSBNYXRyaXggTWVyc2VubmVUd2lzdGVyIE1ldGhvZCBNZXRob2RFcnJvciBNZXRob2RUYWJsZSBNb2R1bGUgTlR1cGxlIE5ld3Zhck5vZGUgTnVsbEV4Y2VwdGlvbiBOdWxsYWJsZSBOdW1iZXIgT2JqZWN0SWREaWN0IE9yZGluYWxSYW5nZSBPdXRPZk1lbW9yeUVycm9yIE92ZXJmbG93RXJyb3IgUGFpciBQYXJzZUVycm9yIFBhcnRpYWxRdWlja1NvcnQgUGVybXV0ZWREaW1zQXJyYXkgUGlwZSBQb2xsaW5nRmlsZVdhdGNoZXIgUHJvY2Vzc0V4aXRlZEV4Y2VwdGlvbiBQdHIgUXVvdGVOb2RlIFJhbmRvbURldmljZSBSYW5nZSBSYW5nZUluZGV4IFJhdGlvbmFsIFJhd0ZEIFJlYWRPbmx5TWVtb3J5RXJyb3IgUmVhbCBSZWVudHJhbnRMb2NrIFJlZiBSZWdleCBSZWdleE1hdGNoIFJlbW90ZUNoYW5uZWwgUmVtb3RlRXhjZXB0aW9uIFJldlN0cmluZyBSb3VuZGluZ01vZGUgUm93VmVjdG9yIFNTQVZhbHVlIFNlZ21lbnRhdGlvbkZhdWx0IFNlcmlhbGl6YXRpb25TdGF0ZSBTZXQgU2hhcmVkQXJyYXkgU2hhcmVkTWF0cml4IFNoYXJlZFZlY3RvciBTaWduZWQgU2ltcGxlVmVjdG9yIFNsb3QgU2xvdE51bWJlciBTcGFyc2VNYXRyaXhDU0MgU3BhcnNlVmVjdG9yIFN0YWNrRnJhbWUgU3RhY2tPdmVyZmxvd0Vycm9yIFN0YWNrVHJhY2UgU3RlcFJhbmdlIFN0ZXBSYW5nZUxlbiBTdHJpZGVkQXJyYXkgU3RyaWRlZE1hdHJpeCBTdHJpZGVkVmVjT3JNYXQgU3RyaWRlZFZlY3RvciBTdHJpbmcgU3ViQXJyYXkgU3ViU3RyaW5nIFN5bVRyaWRpYWdvbmFsIFN5bWJvbCBTeW1tZXRyaWMgU3lzdGVtRXJyb3IgVENQU29ja2V0IFRhc2sgVGV4dCBUZXh0RGlzcGxheSBUaW1lciBUcmlkaWFnb25hbCBUdXBsZSBUeXBlIFR5cGVFcnJvciBUeXBlTWFwRW50cnkgVHlwZU1hcExldmVsIFR5cGVOYW1lIFR5cGVWYXIgVHlwZWRTbG90IFVEUFNvY2tldCBVSW50IFVJbnQxMjggVUludDE2IFVJbnQzMiBVSW50NjQgVUludDggVW5kZWZSZWZFcnJvciBVbmRlZlZhckVycm9yIFVuaWNvZGVFcnJvciBVbmlmb3JtU2NhbGluZyBVbmlvbiBVbmlvbkFsbCBVbml0UmFuZ2UgVW5zaWduZWQgVXBwZXJUcmlhbmd1bGFyIFZhbCBWYXJhcmcgVmVjRWxlbWVudCBWZWNPck1hdCBWZWN0b3IgVmVyc2lvbk51bWJlciBWb2lkIFdlYWtLZXlEaWN0IFdlYWtSZWYgV29ya2VyQ29uZmlnIFdvcmtlclBvb2wgIn0sdD0iW0EtWmEtel9cXHUwMEExLVxcdUZGRkZdW0EtWmEtel8wLTlcXHUwMEExLVxcdUZGRkZdKiIsYT17bDp0LGs6cixpOi88XC8vfSxuPXtjTjoibnVtYmVyIixiOi8oXGIweFtcZF9dKihcLltcZF9dKik\/fDB4XC5cZFtcZF9dKilwWy0rXT9cZCt8XGIwW2JveF1bYS1mQS1GMC05XVthLWZBLUYwLTlfXSp8KFxiXGRbXGRfXSooXC5bXGRfXSopP3xcLlxkW1xkX10qKShbZUVmRl1bLStdP1xkKyk\/LyxyOjB9LG89e2NOOiJzdHJpbmciLGI6LycoLnxcXFt4WHVVXVthLXpBLVowLTldKyknL30saT17Y046InN1YnN0IixiOi9cJFwoLyxlOi9cKS8sazpyfSxsPXtjTjoidmFyaWFibGUiLGI6IlxcJCIrdH0sYz17Y046InN0cmluZyIsYzpbZS5CRSxpLGxdLHY6W3tiOi9cdyoiIiIvLGU6LyIiIlx3Ki8scjoxMH0se2I6L1x3KiIvLGU6LyJcdyovfV19LHM9e2NOOiJzdHJpbmciLGM6W2UuQkUsaSxsXSxiOiJgIixlOiJgIn0sZD17Y046Im1ldGEiLGI6IkAiK3R9LHU9e2NOOiJjb21tZW50Iix2Olt7YjoiIz0iLGU6Ij0jIixyOjEwfSx7YjoiIyIsZToiJCJ9XX07cmV0dXJuIGEuYz1bbixvLGMscyxkLHUsZS5IQ00se2NOOiJrZXl3b3JkIixiOiJcXGIoKChhYnN0cmFjdHxwcmltaXRpdmUpXFxzKyl0eXBlfChtdXRhYmxlXFxzKyk\/c3RydWN0KVxcYiJ9LHtiOi88Oi99XSxpLmM9YS5jLGF9KTtobGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoImNvZmZlZXNjcmlwdCIsZnVuY3Rpb24oZSl7dmFyIGM9e2tleXdvcmQ6ImluIGlmIGZvciB3aGlsZSBmaW5hbGx5IG5ldyBkbyByZXR1cm4gZWxzZSBicmVhayBjYXRjaCBpbnN0YW5jZW9mIHRocm93IHRyeSB0aGlzIHN3aXRjaCBjb250aW51ZSB0eXBlb2YgZGVsZXRlIGRlYnVnZ2VyIHN1cGVyIHlpZWxkIGltcG9ydCBleHBvcnQgZnJvbSBhcyBkZWZhdWx0IGF3YWl0IHRoZW4gdW5sZXNzIHVudGlsIGxvb3Agb2YgYnkgd2hlbiBhbmQgb3IgaXMgaXNudCBub3QiLGxpdGVyYWw6InRydWUgZmFsc2UgbnVsbCB1bmRlZmluZWQgeWVzIG5vIG9uIG9mZiIsYnVpbHRfaW46Im5wbSByZXF1aXJlIGNvbnNvbGUgcHJpbnQgbW9kdWxlIGdsb2JhbCB3aW5kb3cgZG9jdW1lbnQifSxuPSJbQS1aYS16JF9dWzAtOUEtWmEteiRfXSoiLHI9e2NOOiJzdWJzdCIsYjovI1x7LyxlOi99LyxrOmN9LGk9W2UuQk5NLGUuaW5oZXJpdChlLkNOTSx7c3RhcnRzOntlOiIoXFxzKi8pPyIscjowfX0pLHtjTjoic3RyaW5nIix2Olt7YjovJycnLyxlOi8nJycvLGM6W2UuQkVdfSx7YjovJy8sZTovJy8sYzpbZS5CRV19LHtiOi8iIiIvLGU6LyIiIi8sYzpbZS5CRSxyXX0se2I6LyIvLGU6LyIvLGM6W2UuQkUscl19XX0se2NOOiJyZWdleHAiLHY6W3tiOiIvLy8iLGU6Ii8vLyIsYzpbcixlLkhDTV19LHtiOiIvL1tnaW1dKiIscjowfSx7YjovXC8oPyFbICpdKShcXFwvfC4pKj9cL1tnaW1dKig\/PVxXfCQpL31dfSx7YjoiQCIrbn0se3NMOiJqYXZhc2NyaXB0IixlQjohMCxlRTohMCx2Olt7YjoiYGBgIixlOiJgYGAifSx7YjoiYCIsZToiYCJ9XX1dO3IuYz1pO3ZhciBzPWUuaW5oZXJpdChlLlRNLHtiOm59KSx0PSIoXFwoLipcXCkpP1xccypcXEJbLT1dPiIsbz17Y046InBhcmFtcyIsYjoiXFwoW15cXChdIixyQjohMCxjOlt7YjovXCgvLGU6L1wpLyxrOmMsYzpbInNlbGYiXS5jb25jYXQoaSl9XX07cmV0dXJue2FsaWFzZXM6WyJjb2ZmZWUiLCJjc29uIiwiaWNlZCJdLGs6YyxpOi9cL1wqLyxjOmkuY29uY2F0KFtlLkMoIiMjIyIsIiMjIyIpLGUuSENNLHtjTjoiZnVuY3Rpb24iLGI6Il5cXHMqIituKyJcXHMqPVxccyoiK3QsZToiWy09XT4iLHJCOiEwLGM6W3Msb119LHtiOi9bOlwoLD1dXHMqLyxyOjAsYzpbe2NOOiJmdW5jdGlvbiIsYjp0LGU6IlstPV0+IixyQjohMCxjOltvXX1dfSx7Y046ImNsYXNzIixiSzoiY2xhc3MiLGU6IiQiLGk6L1s6PSJcW1xdXS8sYzpbe2JLOiJleHRlbmRzIixlVzohMCxpOi9bOj0iXFtcXV0vLGM6W3NdfSxzXX0se2I6bisiOiIsZToiOiIsckI6ITAsckU6ITAscjowfV0pfX0pO2hsanMucmVnaXN0ZXJMYW5ndWFnZSgiY3BwIixmdW5jdGlvbih0KXt2YXIgZT17Y046ImtleXdvcmQiLGI6IlxcYlthLXpcXGRfXSpfdFxcYiJ9LHI9e2NOOiJzdHJpbmciLHY6W3tiOicodTg\/fFUpP0w\/IicsZTonIicsaToiXFxuIixjOlt0LkJFXX0se2I6Jyh1OD98VSk\/UiInLGU6JyInLGM6W3QuQkVdfSx7YjoiJ1xcXFw\/LiIsZToiJyIsaToiLiJ9XX0scz17Y046Im51bWJlciIsdjpbe2I6IlxcYigwYlswMSddKykifSx7YjoiKC0\/KVxcYihbXFxkJ10rKFxcLltcXGQnXSopP3xcXC5bXFxkJ10rKSh1fFV8bHxMfHVsfFVMfGZ8RnxifEIpIn0se2I6IigtPykoXFxiMFt4WF1bYS1mQS1GMC05J10rfChcXGJbXFxkJ10rKFxcLltcXGQnXSopP3xcXC5bXFxkJ10rKShbZUVdWy0rXT9bXFxkJ10rKT8pIn1dLHI6MH0saT17Y046Im1ldGEiLGI6LyNccypbYS16XStcYi8sZTovJC8sazp7Im1ldGEta2V5d29yZCI6ImlmIGVsc2UgZWxpZiBlbmRpZiBkZWZpbmUgdW5kZWYgd2FybmluZyBlcnJvciBsaW5lIHByYWdtYSBpZmRlZiBpZm5kZWYgaW5jbHVkZSJ9LGM6W3tiOi9cXFxuLyxyOjB9LHQuaW5oZXJpdChyLHtjTjoibWV0YS1zdHJpbmcifSkse2NOOiJtZXRhLXN0cmluZyIsYjovPFteXG4+XSo+LyxlOi8kLyxpOiJcXG4ifSx0LkNMQ00sdC5DQkNNXX0sYT10LklSKyJcXHMqXFwoIixjPXtrZXl3b3JkOiJpbnQgZmxvYXQgd2hpbGUgcHJpdmF0ZSBjaGFyIGNhdGNoIGltcG9ydCBtb2R1bGUgZXhwb3J0IHZpcnR1YWwgb3BlcmF0b3Igc2l6ZW9mIGR5bmFtaWNfY2FzdHwxMCB0eXBlZGVmIGNvbnN0X2Nhc3R8MTAgY29uc3QgZm9yIHN0YXRpY19jYXN0fDEwIHVuaW9uIG5hbWVzcGFjZSB1bnNpZ25lZCBsb25nIHZvbGF0aWxlIHN0YXRpYyBwcm90ZWN0ZWQgYm9vbCB0ZW1wbGF0ZSBtdXRhYmxlIGlmIHB1YmxpYyBmcmllbmQgZG8gZ290byBhdXRvIHZvaWQgZW51bSBlbHNlIGJyZWFrIGV4dGVybiB1c2luZyBhc20gY2FzZSB0eXBlaWQgc2hvcnQgcmVpbnRlcnByZXRfY2FzdHwxMCBkZWZhdWx0IGRvdWJsZSByZWdpc3RlciBleHBsaWNpdCBzaWduZWQgdHlwZW5hbWUgdHJ5IHRoaXMgc3dpdGNoIGNvbnRpbnVlIGlubGluZSBkZWxldGUgYWxpZ25vZiBjb25zdGV4cHIgZGVjbHR5cGUgbm9leGNlcHQgc3RhdGljX2Fzc2VydCB0aHJlYWRfbG9jYWwgcmVzdHJpY3QgX0Jvb2wgY29tcGxleCBfQ29tcGxleCBfSW1hZ2luYXJ5IGF0b21pY19ib29sIGF0b21pY19jaGFyIGF0b21pY19zY2hhciBhdG9taWNfdWNoYXIgYXRvbWljX3Nob3J0IGF0b21pY191c2hvcnQgYXRvbWljX2ludCBhdG9taWNfdWludCBhdG9taWNfbG9uZyBhdG9taWNfdWxvbmcgYXRvbWljX2xsb25nIGF0b21pY191bGxvbmcgbmV3IHRocm93IHJldHVybiBhbmQgb3Igbm90IixidWlsdF9pbjoic3RkIHN0cmluZyBjaW4gY291dCBjZXJyIGNsb2cgc3RkaW4gc3Rkb3V0IHN0ZGVyciBzdHJpbmdzdHJlYW0gaXN0cmluZ3N0cmVhbSBvc3RyaW5nc3RyZWFtIGF1dG9fcHRyIGRlcXVlIGxpc3QgcXVldWUgc3RhY2sgdmVjdG9yIG1hcCBzZXQgYml0c2V0IG11bHRpc2V0IG11bHRpbWFwIHVub3JkZXJlZF9zZXQgdW5vcmRlcmVkX21hcCB1bm9yZGVyZWRfbXVsdGlzZXQgdW5vcmRlcmVkX211bHRpbWFwIGFycmF5IHNoYXJlZF9wdHIgYWJvcnQgYWJzIGFjb3MgYXNpbiBhdGFuMiBhdGFuIGNhbGxvYyBjZWlsIGNvc2ggY29zIGV4aXQgZXhwIGZhYnMgZmxvb3IgZm1vZCBmcHJpbnRmIGZwdXRzIGZyZWUgZnJleHAgZnNjYW5mIGlzYWxudW0gaXNhbHBoYSBpc2NudHJsIGlzZGlnaXQgaXNncmFwaCBpc2xvd2VyIGlzcHJpbnQgaXNwdW5jdCBpc3NwYWNlIGlzdXBwZXIgaXN4ZGlnaXQgdG9sb3dlciB0b3VwcGVyIGxhYnMgbGRleHAgbG9nMTAgbG9nIG1hbGxvYyByZWFsbG9jIG1lbWNociBtZW1jbXAgbWVtY3B5IG1lbXNldCBtb2RmIHBvdyBwcmludGYgcHV0Y2hhciBwdXRzIHNjYW5mIHNpbmggc2luIHNucHJpbnRmIHNwcmludGYgc3FydCBzc2NhbmYgc3RyY2F0IHN0cmNociBzdHJjbXAgc3RyY3B5IHN0cmNzcG4gc3RybGVuIHN0cm5jYXQgc3RybmNtcCBzdHJuY3B5IHN0cnBicmsgc3RycmNociBzdHJzcG4gc3Ryc3RyIHRhbmggdGFuIHZmcHJpbnRmIHZwcmludGYgdnNwcmludGYgZW5kbCBpbml0aWFsaXplcl9saXN0IHVuaXF1ZV9wdHIiLGxpdGVyYWw6InRydWUgZmFsc2UgbnVsbHB0ciBOVUxMIn0sbj1bZSx0LkNMQ00sdC5DQkNNLHMscl07cmV0dXJue2FsaWFzZXM6WyJjIiwiY2MiLCJoIiwiYysrIiwiaCsrIiwiaHBwIl0sazpjLGk6IjwvIixjOm4uY29uY2F0KFtpLHtiOiJcXGIoZGVxdWV8bGlzdHxxdWV1ZXxzdGFja3x2ZWN0b3J8bWFwfHNldHxiaXRzZXR8bXVsdGlzZXR8bXVsdGltYXB8dW5vcmRlcmVkX21hcHx1bm9yZGVyZWRfc2V0fHVub3JkZXJlZF9tdWx0aXNldHx1bm9yZGVyZWRfbXVsdGltYXB8YXJyYXkpXFxzKjwiLGU6Ij4iLGs6YyxjOlsic2VsZiIsZV19LHtiOnQuSVIrIjo6IixrOmN9LHt2Olt7YjovPS8sZTovOy99LHtiOi9cKC8sZTovXCkvfSx7Yks6Im5ldyB0aHJvdyByZXR1cm4gZWxzZSIsZTovOy99XSxrOmMsYzpuLmNvbmNhdChbe2I6L1woLyxlOi9cKS8sazpjLGM6bi5jb25jYXQoWyJzZWxmIl0pLHI6MH1dKSxyOjB9LHtjTjoiZnVuY3Rpb24iLGI6IigiK3QuSVIrIltcXComXFxzXSspKyIrYSxyQjohMCxlOi9bezs9XS8sZUU6ITAsazpjLGk6L1teXHdcc1wqJl0vLGM6W3tiOmEsckI6ITAsYzpbdC5UTV0scjowfSx7Y046InBhcmFtcyIsYjovXCgvLGU6L1wpLyxrOmMscjowLGM6W3QuQ0xDTSx0LkNCQ00scixzLGVdfSx0LkNMQ00sdC5DQkNNLGldfSx7Y046ImNsYXNzIixiSzoiY2xhc3Mgc3RydWN0IixlOi9bezs6XS8sYzpbe2I6LzwvLGU6Lz4vLGM6WyJzZWxmIl19LHQuVE1dfV0pLGV4cG9ydHM6e3ByZXByb2Nlc3NvcjppLHN0cmluZ3M6cixrOmN9fX0pO2hsanMucmVnaXN0ZXJMYW5ndWFnZSgicnVieSIsZnVuY3Rpb24oZSl7dmFyIGI9IlthLXpBLVpfXVxcdypbIT89XT98Wy0rfl1cXEB8PDx8Pj58PX58PT09P3w8PT58Wzw+XT0\/fFxcKlxcKnxbLS8rJV4mKn5gfF18XFxbXFxdPT8iLHI9e2tleXdvcmQ6ImFuZCB0aGVuIGRlZmluZWQgbW9kdWxlIGluIHJldHVybiByZWRvIGlmIEJFR0lOIHJldHJ5IGVuZCBmb3Igc2VsZiB3aGVuIG5leHQgdW50aWwgZG8gYmVnaW4gdW5sZXNzIEVORCByZXNjdWUgZWxzZSBicmVhayB1bmRlZiBub3Qgc3VwZXIgY2xhc3MgY2FzZSByZXF1aXJlIHlpZWxkIGFsaWFzIHdoaWxlIGVuc3VyZSBlbHNpZiBvciBpbmNsdWRlIGF0dHJfcmVhZGVyIGF0dHJfd3JpdGVyIGF0dHJfYWNjZXNzb3IiLGxpdGVyYWw6InRydWUgZmFsc2UgbmlsIn0sYz17Y046ImRvY3RhZyIsYjoiQFtBLVphLXpdKyJ9LGE9e2I6IiM8IixlOiI+In0scz1bZS5DKCIjIiwiJCIse2M6W2NdfSksZS5DKCJeXFw9YmVnaW4iLCJeXFw9ZW5kIix7YzpbY10scjoxMH0pLGUuQygiXl9fRU5EX18iLCJcXG4kIildLG49e2NOOiJzdWJzdCIsYjoiI1xceyIsZToifSIsazpyfSx0PXtjTjoic3RyaW5nIixjOltlLkJFLG5dLHY6W3tiOi8nLyxlOi8nL30se2I6LyIvLGU6LyIvfSx7YjovYC8sZTovYC99LHtiOiIlW3FRd1d4XT9cXCgiLGU6IlxcKSJ9LHtiOiIlW3FRd1d4XT9cXFsiLGU6IlxcXSJ9LHtiOiIlW3FRd1d4XT97IixlOiJ9In0se2I6IiVbcVF3V3hdPzwiLGU6Ij4ifSx7YjoiJVtxUXdXeF0\/LyIsZToiLyJ9LHtiOiIlW3FRd1d4XT8lIixlOiIlIn0se2I6IiVbcVF3V3hdPy0iLGU6Ii0ifSx7YjoiJVtxUXdXeF0\/XFx8IixlOiJcXHwifSx7YjovXEJcPyhcXFxkezEsM318XFx4W0EtRmEtZjAtOV17MSwyfXxcXHVbQS1GYS1mMC05XXs0fXxcXD9cUylcYi99LHtiOi88PCgtPylcdyskLyxlOi9eXHMqXHcrJC99XX0saT17Y046InBhcmFtcyIsYjoiXFwoIixlOiJcXCkiLGVuZHNQYXJlbnQ6ITAsazpyfSxkPVt0LGEse2NOOiJjbGFzcyIsYks6ImNsYXNzIG1vZHVsZSIsZToiJHw7IixpOi89LyxjOltlLmluaGVyaXQoZS5UTSx7YjoiW0EtWmEtel9dXFx3Kig6OlxcdyspKihcXD98XFwhKT8ifSkse2I6IjxcXHMqIixjOlt7YjoiKCIrZS5JUisiOjopPyIrZS5JUn1dfV0uY29uY2F0KHMpfSx7Y046ImZ1bmN0aW9uIixiSzoiZGVmIixlOiIkfDsiLGM6W2UuaW5oZXJpdChlLlRNLHtiOmJ9KSxpXS5jb25jYXQocyl9LHtiOmUuSVIrIjo6In0se2NOOiJzeW1ib2wiLGI6ZS5VSVIrIihcXCF8XFw\/KT86IixyOjB9LHtjTjoic3ltYm9sIixiOiI6KD8hXFxzKSIsYzpbdCx7YjpifV0scjowfSx7Y046Im51bWJlciIsYjoiKFxcYjBbMC03X10rKXwoXFxiMHhbMC05YS1mQS1GX10rKXwoXFxiWzEtOV1bMC05X10qKFxcLlswLTlfXSspPyl8WzBfXVxcYiIscjowfSx7YjoiKFxcJFxcVyl8KChcXCR8XFxAXFxAPykoXFx3KykpIn0se2NOOiJwYXJhbXMiLGI6L1x8LyxlOi9cfC8sazpyfSx7YjoiKCIrZS5SU1IrInx1bmxlc3MpXFxzKiIsazoidW5sZXNzIixjOlthLHtjTjoicmVnZXhwIixjOltlLkJFLG5dLGk6L1xuLyx2Olt7YjoiLyIsZToiL1thLXpdKiJ9LHtiOiIlcnsiLGU6In1bYS16XSoifSx7YjoiJXJcXCgiLGU6IlxcKVthLXpdKiJ9LHtiOiIlciEiLGU6IiFbYS16XSoifSx7YjoiJXJcXFsiLGU6IlxcXVthLXpdKiJ9XX1dLmNvbmNhdChzKSxyOjB9XS5jb25jYXQocyk7bi5jPWQsaS5jPWQ7dmFyIGw9Ils+P10+IixvPSJbXFx3I10rXFwoXFx3K1xcKTpcXGQrOlxcZCs+Iix1PSIoXFx3Ky0pP1xcZCtcXC5cXGQrXFwuXFxkKHBcXGQrKT9bXj5dKz4iLHc9W3tiOi9eXHMqPT4vLHN0YXJ0czp7ZToiJCIsYzpkfX0se2NOOiJtZXRhIixiOiJeKCIrbCsifCIrbysifCIrdSsiKSIsc3RhcnRzOntlOiIkIixjOmR9fV07cmV0dXJue2FsaWFzZXM6WyJyYiIsImdlbXNwZWMiLCJwb2RzcGVjIiwidGhvciIsImlyYiJdLGs6cixpOi9cL1wqLyxjOnMuY29uY2F0KHcpLmNvbmNhdChkKX19KTtobGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoInlhbWwiLGZ1bmN0aW9uKGUpe3ZhciBiPSJ0cnVlIGZhbHNlIHllcyBubyBudWxsIixhPSJeWyBcXC1dKiIscj0iW2EtekEtWl9dW1xcd1xcLV0qIix0PXtjTjoiYXR0ciIsdjpbe2I6YStyKyI6In0se2I6YSsnIicrcisnIjonfSx7YjphKyInIityKyInOiJ9XX0sYz17Y046InRlbXBsYXRlLXZhcmlhYmxlIix2Olt7Yjoie3siLGU6In19In0se2I6IiV7IixlOiJ9In1dfSxsPXtjTjoic3RyaW5nIixyOjAsdjpbe2I6LycvLGU6LycvfSx7YjovIi8sZTovIi99LHtiOi9cUysvfV0sYzpbZS5CRSxjXX07cmV0dXJue2NJOiEwLGFsaWFzZXM6WyJ5bWwiLCJZQU1MIiwieWFtbCJdLGM6W3Qse2NOOiJtZXRhIixiOiJeLS0tcyokIixyOjEwfSx7Y046InN0cmluZyIsYjoiW1xcfD5dICokIixyRTohMCxjOmwuYyxlOnQudlswXS5ifSx7YjoiPCVbJT0tXT8iLGU6IlslLV0\/JT4iLHNMOiJydWJ5IixlQjohMCxlRTohMCxyOjB9LHtjTjoidHlwZSIsYjoiISEiK2UuVUlSfSx7Y046Im1ldGEiLGI6IiYiK2UuVUlSKyIkIn0se2NOOiJtZXRhIixiOiJcXCoiK2UuVUlSKyIkIn0se2NOOiJidWxsZXQiLGI6Il4gKi0iLHI6MH0sZS5IQ00se2JLOmIsazp7bGl0ZXJhbDpifX0sZS5DTk0sbF19fSk7aGxqcy5yZWdpc3Rlckxhbmd1YWdlKCJjc3MiLGZ1bmN0aW9uKGUpe3ZhciBjPSJbYS16QS1aLV1bYS16QS1aMC05Xy1dKiIsdD17YjovW0EtWlxfXC5cLV0rXHMqOi8sckI6ITAsZToiOyIsZVc6ITAsYzpbe2NOOiJhdHRyaWJ1dGUiLGI6L1xTLyxlOiI6IixlRTohMCxzdGFydHM6e2VXOiEwLGVFOiEwLGM6W3tiOi9bXHctXStcKC8sckI6ITAsYzpbe2NOOiJidWlsdF9pbiIsYjovW1x3LV0rL30se2I6L1woLyxlOi9cKS8sYzpbZS5BU00sZS5RU01dfV19LGUuQ1NTTk0sZS5RU00sZS5BU00sZS5DQkNNLHtjTjoibnVtYmVyIixiOiIjWzAtOUEtRmEtZl0rIn0se2NOOiJtZXRhIixiOiIhaW1wb3J0YW50In1dfX1dfTtyZXR1cm57Y0k6ITAsaTovWz1cL3wnXCRdLyxjOltlLkNCQ00se2NOOiJzZWxlY3Rvci1pZCIsYjovI1tBLVphLXowLTlfLV0rL30se2NOOiJzZWxlY3Rvci1jbGFzcyIsYjovXC5bQS1aYS16MC05Xy1dKy99LHtjTjoic2VsZWN0b3ItYXR0ciIsYjovXFsvLGU6L1xdLyxpOiIkIn0se2NOOiJzZWxlY3Rvci1wc2V1ZG8iLGI6LzooOik\/W2EtekEtWjAtOVxfXC1cK1woXCkiJy5dKy99LHtiOiJAKGZvbnQtZmFjZXxwYWdlKSIsbDoiW2Etei1dKyIsazoiZm9udC1mYWNlIHBhZ2UifSx7YjoiQCIsZToiW3s7XSIsaTovOi8sYzpbe2NOOiJrZXl3b3JkIixiOi9cdysvfSx7YjovXHMvLGVXOiEwLGVFOiEwLHI6MCxjOltlLkFTTSxlLlFTTSxlLkNTU05NXX1dfSx7Y046InNlbGVjdG9yLXRhZyIsYjpjLHI6MH0se2I6InsiLGU6In0iLGk6L1xTLyxjOltlLkNCQ00sdF19XX19KTtobGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoImZvcnRyYW4iLGZ1bmN0aW9uKGUpe3ZhciB0PXtjTjoicGFyYW1zIixiOiJcXCgiLGU6IlxcKSJ9LG49e2xpdGVyYWw6Ii5GYWxzZS4gLlRydWUuIixrZXl3b3JkOiJraW5kIGRvIHdoaWxlIHByaXZhdGUgY2FsbCBpbnRyaW5zaWMgd2hlcmUgZWxzZXdoZXJlIHR5cGUgZW5kdHlwZSBlbmRtb2R1bGUgZW5kc2VsZWN0IGVuZGludGVyZmFjZSBlbmQgZW5kZG8gZW5kaWYgaWYgZm9yYWxsIGVuZGZvcmFsbCBvbmx5IGNvbnRhaW5zIGRlZmF1bHQgcmV0dXJuIHN0b3AgdGhlbiBwdWJsaWMgc3Vicm91dGluZXwxMCBmdW5jdGlvbiBwcm9ncmFtIC5hbmQuIC5vci4gLm5vdC4gLmxlLiAuZXEuIC5nZS4gLmd0LiAubHQuIGdvdG8gc2F2ZSBlbHNlIHVzZSBtb2R1bGUgc2VsZWN0IGNhc2UgYWNjZXNzIGJsYW5rIGRpcmVjdCBleGlzdCBmaWxlIGZtdCBmb3JtIGZvcm1hdHRlZCBpb3N0YXQgbmFtZSBuYW1lZCBuZXh0cmVjIG51bWJlciBvcGVuZWQgcmVjIHJlY2wgc2VxdWVudGlhbCBzdGF0dXMgdW5mb3JtYXR0ZWQgdW5pdCBjb250aW51ZSBmb3JtYXQgcGF1c2UgY3ljbGUgZXhpdCBjX251bGxfY2hhciBjX2FsZXJ0IGNfYmFja3NwYWNlIGNfZm9ybV9mZWVkIGZsdXNoIHdhaXQgZGVjaW1hbCByb3VuZCBpb21zZyBzeW5jaHJvbm91cyBub3Bhc3Mgbm9uX292ZXJyaWRhYmxlIHBhc3MgcHJvdGVjdGVkIHZvbGF0aWxlIGFic3RyYWN0IGV4dGVuZHMgaW1wb3J0IG5vbl9pbnRyaW5zaWMgdmFsdWUgZGVmZXJyZWQgZ2VuZXJpYyBmaW5hbCBlbnVtZXJhdG9yIGNsYXNzIGFzc29jaWF0ZSBiaW5kIGVudW0gY19pbnQgY19zaG9ydCBjX2xvbmcgY19sb25nX2xvbmcgY19zaWduZWRfY2hhciBjX3NpemVfdCBjX2ludDhfdCBjX2ludDE2X3QgY19pbnQzMl90IGNfaW50NjRfdCBjX2ludF9sZWFzdDhfdCBjX2ludF9sZWFzdDE2X3QgY19pbnRfbGVhc3QzMl90IGNfaW50X2xlYXN0NjRfdCBjX2ludF9mYXN0OF90IGNfaW50X2Zhc3QxNl90IGNfaW50X2Zhc3QzMl90IGNfaW50X2Zhc3Q2NF90IGNfaW50bWF4X3QgQ19pbnRwdHJfdCBjX2Zsb2F0IGNfZG91YmxlIGNfbG9uZ19kb3VibGUgY19mbG9hdF9jb21wbGV4IGNfZG91YmxlX2NvbXBsZXggY19sb25nX2RvdWJsZV9jb21wbGV4IGNfYm9vbCBjX2NoYXIgY19udWxsX3B0ciBjX251bGxfZnVucHRyIGNfbmV3X2xpbmUgY19jYXJyaWFnZV9yZXR1cm4gY19ob3Jpem9udGFsX3RhYiBjX3ZlcnRpY2FsX3RhYiBpc29fY19iaW5kaW5nIGNfbG9jIGNfZnVubG9jIGNfYXNzb2NpYXRlZCAgY19mX3BvaW50ZXIgY19wdHIgY19mdW5wdHIgaXNvX2ZvcnRyYW5fZW52IGNoYXJhY3Rlcl9zdG9yYWdlX3NpemUgZXJyb3JfdW5pdCBmaWxlX3N0b3JhZ2Vfc2l6ZSBpbnB1dF91bml0IGlvc3RhdF9lbmQgaW9zdGF0X2VvciBudW1lcmljX3N0b3JhZ2Vfc2l6ZSBvdXRwdXRfdW5pdCBjX2ZfcHJvY3BvaW50ZXIgaWVlZV9hcml0aG1ldGljIGllZWVfc3VwcG9ydF91bmRlcmZsb3dfY29udHJvbCBpZWVlX2dldF91bmRlcmZsb3dfbW9kZSBpZWVlX3NldF91bmRlcmZsb3dfbW9kZSBuZXd1bml0IGNvbnRpZ3VvdXMgcmVjdXJzaXZlIHBhZCBwb3NpdGlvbiBhY3Rpb24gZGVsaW0gcmVhZHdyaXRlIGVvciBhZHZhbmNlIG5tbCBpbnRlcmZhY2UgcHJvY2VkdXJlIG5hbWVsaXN0IGluY2x1ZGUgc2VxdWVuY2UgZWxlbWVudGFsIHB1cmUgaW50ZWdlciByZWFsIGNoYXJhY3RlciBjb21wbGV4IGxvZ2ljYWwgZGltZW5zaW9uIGFsbG9jYXRhYmxlfDEwIHBhcmFtZXRlciBleHRlcm5hbCBpbXBsaWNpdHwxMCBub25lIGRvdWJsZSBwcmVjaXNpb24gYXNzaWduIGludGVudCBvcHRpb25hbCBwb2ludGVyIHRhcmdldCBpbiBvdXQgY29tbW9uIGVxdWl2YWxlbmNlIGRhdGEiLGJ1aWx0X2luOiJhbG9nIGFsb2cxMCBhbWF4MCBhbWF4MSBhbWluMCBhbWluMSBhbW9kIGNhYnMgY2NvcyBjZXhwIGNsb2cgY3NpbiBjc3FydCBkYWJzIGRhY29zIGRhc2luIGRhdGFuIGRhdGFuMiBkY29zIGRjb3NoIGRkaW0gZGV4cCBkaW50IGRsb2cgZGxvZzEwIGRtYXgxIGRtaW4xIGRtb2QgZG5pbnQgZHNpZ24gZHNpbiBkc2luaCBkc3FydCBkdGFuIGR0YW5oIGZsb2F0IGlhYnMgaWRpbSBpZGludCBpZG5pbnQgaWZpeCBpc2lnbiBtYXgwIG1heDEgbWluMCBtaW4xIHNuZ2wgYWxnYW1hIGNkYWJzIGNkY29zIGNkZXhwIGNkbG9nIGNkc2luIGNkc3FydCBjcWFicyBjcWNvcyBjcWV4cCBjcWxvZyBjcXNpbiBjcXNxcnQgZGNtcGx4IGRjb25qZyBkZXJmIGRlcmZjIGRmbG9hdCBkZ2FtbWEgZGltYWcgZGxnYW1hIGlxaW50IHFhYnMgcWFjb3MgcWFzaW4gcWF0YW4gcWF0YW4yIHFjbXBseCBxY29uamcgcWNvcyBxY29zaCBxZGltIHFlcmYgcWVyZmMgcWV4cCBxZ2FtbWEgcWltYWcgcWxnYW1hIHFsb2cgcWxvZzEwIHFtYXgxIHFtaW4xIHFtb2QgcW5pbnQgcXNpZ24gcXNpbiBxc2luaCBxc3FydCBxdGFuIHF0YW5oIGFicyBhY29zIGFpbWFnIGFpbnQgYW5pbnQgYXNpbiBhdGFuIGF0YW4yIGNoYXIgY21wbHggY29uamcgY29zIGNvc2ggZXhwIGljaGFyIGluZGV4IGludCBsb2cgbG9nMTAgbWF4IG1pbiBuaW50IHNpZ24gc2luIHNpbmggc3FydCB0YW4gdGFuaCBwcmludCB3cml0ZSBkaW0gbGdlIGxndCBsbGUgbGx0IG1vZCBudWxsaWZ5IGFsbG9jYXRlIGRlYWxsb2NhdGUgYWRqdXN0bCBhZGp1c3RyIGFsbCBhbGxvY2F0ZWQgYW55IGFzc29jaWF0ZWQgYml0X3NpemUgYnRlc3QgY2VpbGluZyBjb3VudCBjc2hpZnQgZGF0ZV9hbmRfdGltZSBkaWdpdHMgZG90X3Byb2R1Y3QgZW9zaGlmdCBlcHNpbG9uIGV4cG9uZW50IGZsb29yIGZyYWN0aW9uIGh1Z2UgaWFuZCBpYmNsciBpYml0cyBpYnNldCBpZW9yIGlvciBpc2hmdCBpc2hmdGMgbGJvdW5kIGxlbl90cmltIG1hdG11bCBtYXhleHBvbmVudCBtYXhsb2MgbWF4dmFsIG1lcmdlIG1pbmV4cG9uZW50IG1pbmxvYyBtaW52YWwgbW9kdWxvIG12Yml0cyBuZWFyZXN0IHBhY2sgcHJlc2VudCBwcm9kdWN0IHJhZGl4IHJhbmRvbV9udW1iZXIgcmFuZG9tX3NlZWQgcmFuZ2UgcmVwZWF0IHJlc2hhcGUgcnJzcGFjaW5nIHNjYWxlIHNjYW4gc2VsZWN0ZWRfaW50X2tpbmQgc2VsZWN0ZWRfcmVhbF9raW5kIHNldF9leHBvbmVudCBzaGFwZSBzaXplIHNwYWNpbmcgc3ByZWFkIHN1bSBzeXN0ZW1fY2xvY2sgdGlueSB0cmFuc3Bvc2UgdHJpbSB1Ym91bmQgdW5wYWNrIHZlcmlmeSBhY2hhciBpYWNoYXIgdHJhbnNmZXIgZGJsZSBlbnRyeSBkcHJvZCBjcHVfdGltZSBjb21tYW5kX2FyZ3VtZW50X2NvdW50IGdldF9jb21tYW5kIGdldF9jb21tYW5kX2FyZ3VtZW50IGdldF9lbnZpcm9ubWVudF92YXJpYWJsZSBpc19pb3N0YXRfZW5kIGllZWVfYXJpdGhtZXRpYyBpZWVlX3N1cHBvcnRfdW5kZXJmbG93X2NvbnRyb2wgaWVlZV9nZXRfdW5kZXJmbG93X21vZGUgaWVlZV9zZXRfdW5kZXJmbG93X21vZGUgaXNfaW9zdGF0X2VvciBtb3ZlX2FsbG9jIG5ld19saW5lIHNlbGVjdGVkX2NoYXJfa2luZCBzYW1lX3R5cGVfYXMgZXh0ZW5kc190eXBlX29mYWNvc2ggYXNpbmggYXRhbmggYmVzc2VsX2owIGJlc3NlbF9qMSBiZXNzZWxfam4gYmVzc2VsX3kwIGJlc3NlbF95MSBiZXNzZWxfeW4gZXJmIGVyZmMgZXJmY19zY2FsZWQgZ2FtbWEgbG9nX2dhbW1hIGh5cG90IG5vcm0yIGF0b21pY19kZWZpbmUgYXRvbWljX3JlZiBleGVjdXRlX2NvbW1hbmRfbGluZSBsZWFkeiB0cmFpbHogc3RvcmFnZV9zaXplIG1lcmdlX2JpdHMgYmdlIGJndCBibGUgYmx0IGRzaGlmdGwgZHNoaWZ0ciBmaW5kbG9jIGlhbGwgaWFueSBpcGFyaXR5IGltYWdlX2luZGV4IGxjb2JvdW5kIHVjb2JvdW5kIG1hc2tsIG1hc2tyIG51bV9pbWFnZXMgcGFyaXR5IHBvcGNudCBwb3BwYXIgc2hpZnRhIHNoaWZ0bCBzaGlmdHIgdGhpc19pbWFnZSJ9O3JldHVybntjSTohMCxhbGlhc2VzOlsiZjkwIiwiZjk1Il0sazpuLGk6L1wvXCovLGM6W2UuaW5oZXJpdChlLkFTTSx7Y046InN0cmluZyIscjowfSksZS5pbmhlcml0KGUuUVNNLHtjTjoic3RyaW5nIixyOjB9KSx7Y046ImZ1bmN0aW9uIixiSzoic3Vicm91dGluZSBmdW5jdGlvbiBwcm9ncmFtIixpOiJbJHs9XFxuXSIsYzpbZS5VVE0sdF19LGUuQygiISIsIiQiLHtyOjB9KSx7Y046Im51bWJlciIsYjoiKD89XFxifFxcK3xcXC18XFwuKSg\/PVxcLlxcZHxcXGQpKD86XFxkKyk\/KD86XFwuP1xcZCopKD86W2RlXVsrLV0\/XFxkKyk\/XFxiXFwuPyIscjowfV19fSk7aGxqcy5yZWdpc3Rlckxhbmd1YWdlKCJhd2siLGZ1bmN0aW9uKGUpe3ZhciByPXtjTjoidmFyaWFibGUiLHY6W3tiOi9cJFtcd1xkI0BdW1x3XGRfXSovfSx7YjovXCRceyguKj8pfS99XX0sYj0iQkVHSU4gRU5EIGlmIGVsc2Ugd2hpbGUgZG8gZm9yIGluIGJyZWFrIGNvbnRpbnVlIGRlbGV0ZSBuZXh0IG5leHRmaWxlIGZ1bmN0aW9uIGZ1bmMgZXhpdHwxMCIsbj17Y046InN0cmluZyIsYzpbZS5CRV0sdjpbe2I6Lyh1fGIpP3I\/JycnLyxlOi8nJycvLHI6MTB9LHtiOi8odXxiKT9yPyIiIi8sZTovIiIiLyxyOjEwfSx7YjovKHV8cnx1ciknLyxlOi8nLyxyOjEwfSx7YjovKHV8cnx1cikiLyxlOi8iLyxyOjEwfSx7YjovKGJ8YnIpJy8sZTovJy99LHtiOi8oYnxicikiLyxlOi8iL30sZS5BU00sZS5RU01dfTtyZXR1cm57azp7a2V5d29yZDpifSxjOltyLG4sZS5STSxlLkhDTSxlLk5NXX19KTtobGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoIm1ha2VmaWxlIixmdW5jdGlvbihlKXt2YXIgaT17Y046InZhcmlhYmxlIix2Olt7YjoiXFwkXFwoIitlLlVJUisiXFwpIixjOltlLkJFXX0se2I6L1wkW0AlPD9cXlwrXCpdL31dfSxyPXtjTjoic3RyaW5nIixiOi8iLyxlOi8iLyxjOltlLkJFLGldfSxhPXtjTjoidmFyaWFibGUiLGI6L1wkXChbXHctXStccy8sZTovXCkvLGs6e2J1aWx0X2luOiJzdWJzdCBwYXRzdWJzdCBzdHJpcCBmaW5kc3RyaW5nIGZpbHRlciBmaWx0ZXItb3V0IHNvcnQgd29yZCB3b3JkbGlzdCBmaXJzdHdvcmQgbGFzdHdvcmQgZGlyIG5vdGRpciBzdWZmaXggYmFzZW5hbWUgYWRkc3VmZml4IGFkZHByZWZpeCBqb2luIHdpbGRjYXJkIHJlYWxwYXRoIGFic3BhdGggZXJyb3Igd2FybmluZyBzaGVsbCBvcmlnaW4gZmxhdm9yIGZvcmVhY2ggaWYgb3IgYW5kIGNhbGwgZXZhbCBmaWxlIHZhbHVlIn0sYzpbaV19LG49e2I6Il4iK2UuVUlSKyJcXHMqWzorP10\/PSIsaToiXFxuIixyQjohMCxjOlt7YjoiXiIrZS5VSVIsZToiWzorP10\/PSIsZUU6ITB9XX0sdD17Y046Im1ldGEiLGI6L15cLlBIT05ZOi8sZTovJC8sazp7Im1ldGEta2V5d29yZCI6Ii5QSE9OWSJ9LGw6L1tcLlx3XSsvfSxsPXtjTjoic2VjdGlvbiIsYjovXlteXHNdKzovLGU6LyQvLGM6W2ldfTtyZXR1cm57YWxpYXNlczpbIm1rIiwibWFrIl0sazoiZGVmaW5lIGVuZGVmIHVuZGVmaW5lIGlmZGVmIGlmbmRlZiBpZmVxIGlmbmVxIGVsc2UgZW5kaWYgaW5jbHVkZSAtaW5jbHVkZSBzaW5jbHVkZSBvdmVycmlkZSBleHBvcnQgdW5leHBvcnQgcHJpdmF0ZSB2cGF0aCIsbDovW1x3LV0rLyxjOltlLkhDTSxpLHIsYSxuLHQsbF19fSk7aGxqcy5yZWdpc3Rlckxhbmd1YWdlKCJqYXZhIixmdW5jdGlvbihlKXt2YXIgYT0iW8OALcq4YS16QS1aXyRdW8OALcq4YS16QS1aXyQwLTldKiIsdD1hKyIoPCIrYSsiKFxccyosXFxzKiIrYSsiKSo+KT8iLHI9ImZhbHNlIHN5bmNocm9uaXplZCBpbnQgYWJzdHJhY3QgZmxvYXQgcHJpdmF0ZSBjaGFyIGJvb2xlYW4gc3RhdGljIG51bGwgaWYgY29uc3QgZm9yIHRydWUgd2hpbGUgbG9uZyBzdHJpY3RmcCBmaW5hbGx5IHByb3RlY3RlZCBpbXBvcnQgbmF0aXZlIGZpbmFsIHZvaWQgZW51bSBlbHNlIGJyZWFrIHRyYW5zaWVudCBjYXRjaCBpbnN0YW5jZW9mIGJ5dGUgc3VwZXIgdm9sYXRpbGUgY2FzZSBhc3NlcnQgc2hvcnQgcGFja2FnZSBkZWZhdWx0IGRvdWJsZSBwdWJsaWMgdHJ5IHRoaXMgc3dpdGNoIGNvbnRpbnVlIHRocm93cyBwcm90ZWN0ZWQgcHVibGljIHByaXZhdGUgbW9kdWxlIHJlcXVpcmVzIGV4cG9ydHMgZG8iLHM9IlxcYigwW2JCXShbMDFdK1swMV9dK1swMV0rfFswMV0rKXwwW3hYXShbYS1mQS1GMC05XStbYS1mQS1GMC05X10rW2EtZkEtRjAtOV0rfFthLWZBLUYwLTldKyl8KChbXFxkXStbXFxkX10rW1xcZF0rfFtcXGRdKykoXFwuKFtcXGRdK1tcXGRfXStbXFxkXSt8W1xcZF0rKSk\/fFxcLihbXFxkXStbXFxkX10rW1xcZF0rfFtcXGRdKykpKFtlRV1bLStdP1xcZCspPylbbExmRl0\/IixjPXtjTjoibnVtYmVyIixiOnMscjowfTtyZXR1cm57YWxpYXNlczpbImpzcCJdLGs6cixpOi88XC98Iy8sYzpbZS5DKCIvXFwqXFwqIiwiXFwqLyIse3I6MCxjOlt7YjovXHcrQC8scjowfSx7Y046ImRvY3RhZyIsYjoiQFtBLVphLXpdKyJ9XX0pLGUuQ0xDTSxlLkNCQ00sZS5BU00sZS5RU00se2NOOiJjbGFzcyIsYks6ImNsYXNzIGludGVyZmFjZSIsZTovW3s7PV0vLGVFOiEwLGs6ImNsYXNzIGludGVyZmFjZSIsaTovWzoiXFtcXV0vLGM6W3tiSzoiZXh0ZW5kcyBpbXBsZW1lbnRzIn0sZS5VVE1dfSx7Yks6Im5ldyB0aHJvdyByZXR1cm4gZWxzZSIscjowfSx7Y046ImZ1bmN0aW9uIixiOiIoIit0KyJcXHMrKSsiK2UuVUlSKyJcXHMqXFwoIixyQjohMCxlOi9bezs9XS8sZUU6ITAsazpyLGM6W3tiOmUuVUlSKyJcXHMqXFwoIixyQjohMCxyOjAsYzpbZS5VVE1dfSx7Y046InBhcmFtcyIsYjovXCgvLGU6L1wpLyxrOnIscjowLGM6W2UuQVNNLGUuUVNNLGUuQ05NLGUuQ0JDTV19LGUuQ0xDTSxlLkNCQ01dfSxjLHtjTjoibWV0YSIsYjoiQFtBLVphLXpdKyJ9XX19KTtobGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoInN0YW4iLGZ1bmN0aW9uKGUpe3JldHVybntjOltlLkhDTSxlLkNMQ00sZS5DQkNNLHtiOmUuVUlSLGw6ZS5VSVIsazp7bmFtZToiZm9yIGluIHdoaWxlIHJlcGVhdCB1bnRpbCBpZiB0aGVuIGVsc2UiLHN5bWJvbDoiYmVybm91bGxpIGJlcm5vdWxsaV9sb2dpdCBiaW5vbWlhbCBiaW5vbWlhbF9sb2dpdCBiZXRhX2Jpbm9taWFsIGh5cGVyZ2VvbWV0cmljIGNhdGVnb3JpY2FsIGNhdGVnb3JpY2FsX2xvZ2l0IG9yZGVyZWRfbG9naXN0aWMgbmVnX2Jpbm9taWFsIG5lZ19iaW5vbWlhbF8yIG5lZ19iaW5vbWlhbF8yX2xvZyBwb2lzc29uIHBvaXNzb25fbG9nIG11bHRpbm9taWFsIG5vcm1hbCBleHBfbW9kX25vcm1hbCBza2V3X25vcm1hbCBzdHVkZW50X3QgY2F1Y2h5IGRvdWJsZV9leHBvbmVudGlhbCBsb2dpc3RpYyBndW1iZWwgbG9nbm9ybWFsIGNoaV9zcXVhcmUgaW52X2NoaV9zcXVhcmUgc2NhbGVkX2ludl9jaGlfc3F1YXJlIGV4cG9uZW50aWFsIGludl9nYW1tYSB3ZWlidWxsIGZyZWNoZXQgcmF5bGVpZ2ggd2llbmVyIHBhcmV0byBwYXJldG9fdHlwZV8yIHZvbl9taXNlcyB1bmlmb3JtIG11bHRpX25vcm1hbCBtdWx0aV9ub3JtYWxfcHJlYyBtdWx0aV9ub3JtYWxfY2hvbGVza3kgbXVsdGlfZ3AgbXVsdGlfZ3BfY2hvbGVza3kgbXVsdGlfc3R1ZGVudF90IGdhdXNzaWFuX2RsbV9vYnMgZGlyaWNobGV0IGxral9jb3JyIGxral9jb3JyX2Nob2xlc2t5IHdpc2hhcnQgaW52X3dpc2hhcnQiLCJzZWxlY3Rvci10YWciOiJpbnQgcmVhbCB2ZWN0b3Igc2ltcGxleCB1bml0X3ZlY3RvciBvcmRlcmVkIHBvc2l0aXZlX29yZGVyZWQgcm93X3ZlY3RvciBtYXRyaXggY2hvbGVza3lfZmFjdG9yX2NvcnIgY2hvbGVza3lfZmFjdG9yX2NvdiBjb3JyX21hdHJpeCBjb3ZfbWF0cml4Iix0aXRsZToiZnVuY3Rpb25zIG1vZGVsIGRhdGEgcGFyYW1ldGVycyBxdWFudGl0aWVzIHRyYW5zZm9ybWVkIGdlbmVyYXRlZCIsbGl0ZXJhbDoidHJ1ZSBmYWxzZSJ9LHI6MH0se2NOOiJudW1iZXIiLGI6IjBbeFhdWzAtOWEtZkEtRl0rW0xpXT9cXGIiLHI6MH0se2NOOiJudW1iZXIiLGI6IjBbeFhdWzAtOWEtZkEtRl0rW0xpXT9cXGIiLHI6MH0se2NOOiJudW1iZXIiLGI6IlxcZCsoPzpbZUVdWytcXC1dP1xcZCopP0xcXGIiLHI6MH0se2NOOiJudW1iZXIiLGI6IlxcZCtcXC4oPyFcXGQpKD86aVxcYik\/IixyOjB9LHtjTjoibnVtYmVyIixiOiJcXGQrKD86XFwuXFxkKik\/KD86W2VFXVsrXFwtXT9cXGQqKT9pP1xcYiIscjowfSx7Y046Im51bWJlciIsYjoiXFwuXFxkKyg\/OltlRV1bK1xcLV0\/XFxkKik\/aT9cXGIiLHI6MH1dfX0pO2hsanMucmVnaXN0ZXJMYW5ndWFnZSgiamF2YXNjcmlwdCIsZnVuY3Rpb24oZSl7dmFyIHI9IltBLVphLXokX11bMC05QS1aYS16JF9dKiIsdD17a2V5d29yZDoiaW4gb2YgaWYgZm9yIHdoaWxlIGZpbmFsbHkgdmFyIG5ldyBmdW5jdGlvbiBkbyByZXR1cm4gdm9pZCBlbHNlIGJyZWFrIGNhdGNoIGluc3RhbmNlb2Ygd2l0aCB0aHJvdyBjYXNlIGRlZmF1bHQgdHJ5IHRoaXMgc3dpdGNoIGNvbnRpbnVlIHR5cGVvZiBkZWxldGUgbGV0IHlpZWxkIGNvbnN0IGV4cG9ydCBzdXBlciBkZWJ1Z2dlciBhcyBhc3luYyBhd2FpdCBzdGF0aWMgaW1wb3J0IGZyb20gYXMiLGxpdGVyYWw6InRydWUgZmFsc2UgbnVsbCB1bmRlZmluZWQgTmFOIEluZmluaXR5IixidWlsdF9pbjoiZXZhbCBpc0Zpbml0ZSBpc05hTiBwYXJzZUZsb2F0IHBhcnNlSW50IGRlY29kZVVSSSBkZWNvZGVVUklDb21wb25lbnQgZW5jb2RlVVJJIGVuY29kZVVSSUNvbXBvbmVudCBlc2NhcGUgdW5lc2NhcGUgT2JqZWN0IEZ1bmN0aW9uIEJvb2xlYW4gRXJyb3IgRXZhbEVycm9yIEludGVybmFsRXJyb3IgUmFuZ2VFcnJvciBSZWZlcmVuY2VFcnJvciBTdG9wSXRlcmF0aW9uIFN5bnRheEVycm9yIFR5cGVFcnJvciBVUklFcnJvciBOdW1iZXIgTWF0aCBEYXRlIFN0cmluZyBSZWdFeHAgQXJyYXkgRmxvYXQzMkFycmF5IEZsb2F0NjRBcnJheSBJbnQxNkFycmF5IEludDMyQXJyYXkgSW50OEFycmF5IFVpbnQxNkFycmF5IFVpbnQzMkFycmF5IFVpbnQ4QXJyYXkgVWludDhDbGFtcGVkQXJyYXkgQXJyYXlCdWZmZXIgRGF0YVZpZXcgSlNPTiBJbnRsIGFyZ3VtZW50cyByZXF1aXJlIG1vZHVsZSBjb25zb2xlIHdpbmRvdyBkb2N1bWVudCBTeW1ib2wgU2V0IE1hcCBXZWFrU2V0IFdlYWtNYXAgUHJveHkgUmVmbGVjdCBQcm9taXNlIn0sYT17Y046Im51bWJlciIsdjpbe2I6IlxcYigwW2JCXVswMV0rKSJ9LHtiOiJcXGIoMFtvT11bMC03XSspIn0se2I6ZS5DTlJ9XSxyOjB9LG49e2NOOiJzdWJzdCIsYjoiXFwkXFx7IixlOiJcXH0iLGs6dCxjOltdfSxjPXtjTjoic3RyaW5nIixiOiJgIixlOiJgIixjOltlLkJFLG5dfTtuLmM9W2UuQVNNLGUuUVNNLGMsYSxlLlJNXTt2YXIgcz1uLmMuY29uY2F0KFtlLkNCQ00sZS5DTENNXSk7cmV0dXJue2FsaWFzZXM6WyJqcyIsImpzeCJdLGs6dCxjOlt7Y046Im1ldGEiLHI6MTAsYjovXlxzKlsnIl11c2UgKHN0cmljdHxhc20pWyciXS99LHtjTjoibWV0YSIsYjovXiMhLyxlOi8kL30sZS5BU00sZS5RU00sYyxlLkNMQ00sZS5DQkNNLGEse2I6L1t7LF1ccyovLHI6MCxjOlt7YjpyKyJcXHMqOiIsckI6ITAscjowLGM6W3tjTjoiYXR0ciIsYjpyLHI6MH1dfV19LHtiOiIoIitlLlJTUisifFxcYihjYXNlfHJldHVybnx0aHJvdylcXGIpXFxzKiIsazoicmV0dXJuIHRocm93IGNhc2UiLGM6W2UuQ0xDTSxlLkNCQ00sZS5STSx7Y046ImZ1bmN0aW9uIixiOiIoXFwoLio\/XFwpfCIrcisiKVxccyo9PiIsckI6ITAsZToiXFxzKj0+IixjOlt7Y046InBhcmFtcyIsdjpbe2I6cn0se2I6L1woXHMqXCkvfSx7YjovXCgvLGU6L1wpLyxlQjohMCxlRTohMCxrOnQsYzpzfV19XX0se2I6LzwvLGU6LyhcL1x3K3xcdytcLyk+LyxzTDoieG1sIixjOlt7YjovPFx3K1xzKlwvPi8sc2tpcDohMH0se2I6LzxcdysvLGU6LyhcL1x3K3xcdytcLyk+Lyxza2lwOiEwLGM6W3tiOi88XHcrXHMqXC8+Lyxza2lwOiEwfSwic2VsZiJdfV19XSxyOjB9LHtjTjoiZnVuY3Rpb24iLGJLOiJmdW5jdGlvbiIsZTovXHsvLGVFOiEwLGM6W2UuaW5oZXJpdChlLlRNLHtiOnJ9KSx7Y046InBhcmFtcyIsYjovXCgvLGU6L1wpLyxlQjohMCxlRTohMCxjOnN9XSxpOi9cW3wlL30se2I6L1wkWyguXS99LGUuTUVUSE9EX0dVQVJELHtjTjoiY2xhc3MiLGJLOiJjbGFzcyIsZTovW3s7PV0vLGVFOiEwLGk6L1s6IlxbXF1dLyxjOlt7Yks6ImV4dGVuZHMifSxlLlVUTV19LHtiSzoiY29uc3RydWN0b3IiLGU6L1x7LyxlRTohMH1dLGk6LyMoPyEhKS99fSk7aGxqcy5yZWdpc3Rlckxhbmd1YWdlKCJ0ZXgiLGZ1bmN0aW9uKGMpe3ZhciBlPXtjTjoidGFnIixiOi9cXC8scjowLGM6W3tjTjoibmFtZSIsdjpbe2I6L1thLXpBLVrQsC3Rj9CQLdGPXStbKl0\/L30se2I6L1teYS16QS1a0LAt0Y\/QkC3RjzAtOV0vfV0sc3RhcnRzOntlVzohMCxyOjAsYzpbe2NOOiJzdHJpbmciLHY6W3tiOi9cWy8sZTovXF0vfSx7YjovXHsvLGU6L1x9L31dfSx7YjovXHMqPVxzKi8sZVc6ITAscjowLGM6W3tjTjoibnVtYmVyIixiOi8tP1xkKlwuP1xkKyhwdHxwY3xtbXxjbXxpbnxkZHxjY3xleHxlbSk\/L31dfV19fV19O3JldHVybntjOltlLHtjTjoiZm9ybXVsYSIsYzpbZV0scjowLHY6W3tiOi9cJFwkLyxlOi9cJFwkL30se2I6L1wkLyxlOi9cJC99XX0sYy5DKCIlIiwiJCIse3I6MH0pXX19KTtobGpzLnJlZ2lzdGVyTGFuZ3VhZ2UoInhtbCIsZnVuY3Rpb24ocyl7dmFyIGU9IltBLVphLXowLTlcXC5fOi1dKyIsdD17ZVc6ITAsaTovPC8scjowLGM6W3tjTjoiYXR0ciIsYjplLHI6MH0se2I6Lz1ccyovLHI6MCxjOlt7Y046InN0cmluZyIsZW5kc1BhcmVudDohMCx2Olt7YjovIi8sZTovIi99LHtiOi8nLyxlOi8nL30se2I6L1teXHMiJz08PmBdKy99XX1dfV19O3JldHVybnthbGlhc2VzOlsiaHRtbCIsInhodG1sIiwicnNzIiwiYXRvbSIsInhqYiIsInhzZCIsInhzbCIsInBsaXN0Il0sY0k6ITAsYzpbe2NOOiJtZXRhIixiOiI8IURPQ1RZUEUiLGU6Ij4iLHI6MTAsYzpbe2I6IlxcWyIsZToiXFxdIn1dfSxzLkMoIjwhLS0iLCItLT4iLHtyOjEwfSkse2I6IjxcXCFcXFtDREFUQVxcWyIsZToiXFxdXFxdPiIscjoxMH0se2I6LzxcPyhwaHApPy8sZTovXD8+LyxzTDoicGhwIixjOlt7YjoiL1xcKiIsZToiXFwqLyIsc2tpcDohMH1dfSx7Y046InRhZyIsYjoiPHN0eWxlKD89XFxzfD58JCkiLGU6Ij4iLGs6e25hbWU6InN0eWxlIn0sYzpbdF0sc3RhcnRzOntlOiI8L3N0eWxlPiIsckU6ITAsc0w6WyJjc3MiLCJ4bWwiXX19LHtjTjoidGFnIixiOiI8c2NyaXB0KD89XFxzfD58JCkiLGU6Ij4iLGs6e25hbWU6InNjcmlwdCJ9LGM6W3RdLHN0YXJ0czp7ZToiPC9zY3JpcHQ+IixyRTohMCxzTDpbImFjdGlvbnNjcmlwdCIsImphdmFzY3JpcHQiLCJoYW5kbGViYXJzIiwieG1sIl19fSx7Y046Im1ldGEiLHY6W3tiOi88XD94bWwvLGU6L1w\/Pi8scjoxMH0se2I6LzxcP1x3Ky8sZTovXD8+L31dfSx7Y046InRhZyIsYjoiPC8\/IixlOiIvPz4iLGM6W3tjTjoibmFtZSIsYjovW15cLz48XHNdKy8scjowfSx0XX1dfX0pO2hsanMucmVnaXN0ZXJMYW5ndWFnZSgibWFya2Rvd24iLGZ1bmN0aW9uKGUpe3JldHVybnthbGlhc2VzOlsibWQiLCJta2Rvd24iLCJta2QiXSxjOlt7Y046InNlY3Rpb24iLHY6W3tiOiJeI3sxLDZ9IixlOiIkIn0se2I6Il4uKz9cXG5bPS1dezIsfSQifV19LHtiOiI8IixlOiI+IixzTDoieG1sIixyOjB9LHtjTjoiYnVsbGV0IixiOiJeKFsqKy1dfChcXGQrXFwuKSlcXHMrIn0se2NOOiJzdHJvbmciLGI6IlsqX117Mn0uKz9bKl9dezJ9In0se2NOOiJlbXBoYXNpcyIsdjpbe2I6IlxcKi4rP1xcKiJ9LHtiOiJfLis\/XyIscjowfV19LHtjTjoicXVvdGUiLGI6Il4+XFxzKyIsZToiJCJ9LHtjTjoiY29kZSIsdjpbe2I6Il5gYGB3KnMqJCIsZToiXmBgYHMqJCJ9LHtiOiJgLis\/YCJ9LHtiOiJeKCB7NH18CSkiLGU6IiQiLHI6MH1dfSx7YjoiXlstXFwqXXszLH0iLGU6IiQifSx7YjoiXFxbLis\/XFxdW1xcKFxcW10uKj9bXFwpXFxdXSIsckI6ITAsYzpbe2NOOiJzdHJpbmciLGI6IlxcWyIsZToiXFxdIixlQjohMCxyRTohMCxyOjB9LHtjTjoibGluayIsYjoiXFxdXFwoIixlOiJcXCkiLGVCOiEwLGVFOiEwfSx7Y046InN5bWJvbCIsYjoiXFxdXFxbIixlOiJcXF0iLGVCOiEwLGVFOiEwfV0scjoxMH0se2I6L15cW1teXG5dK1xdOi8sckI6ITAsYzpbe2NOOiJzeW1ib2wiLGI6L1xbLyxlOi9cXS8sZUI6ITAsZUU6ITB9LHtjTjoibGluayIsYjovOlxzKi8sZTovJC8sZUI6ITB9XX1dfX0pO2hsanMucmVnaXN0ZXJMYW5ndWFnZSgianNvbiIsZnVuY3Rpb24oZSl7dmFyIGk9e2xpdGVyYWw6InRydWUgZmFsc2UgbnVsbCJ9LG49W2UuUVNNLGUuQ05NXSxyPXtlOiIsIixlVzohMCxlRTohMCxjOm4sazppfSx0PXtiOiJ7IixlOiJ9IixjOlt7Y046ImF0dHIiLGI6LyIvLGU6LyIvLGM6W2UuQkVdLGk6IlxcbiJ9LGUuaW5oZXJpdChyLHtiOi86L30pXSxpOiJcXFMifSxjPXtiOiJcXFsiLGU6IlxcXSIsYzpbZS5pbmhlcml0KHIpXSxpOiJcXFMifTtyZXR1cm4gbi5zcGxpY2Uobi5sZW5ndGgsMCx0LGMpLHtjOm4sazppLGk6IlxcUyJ9fSk7\"><\/script><br \/>\n<script src=\"data:application\/javascript;base64,LyoqDQogKiBjb3JlLWpzIDIuNi4xMQ0KICogaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMNCiAqIExpY2Vuc2U6IGh0dHA6Ly9yb2NrLm1pdC1saWNlbnNlLm9yZw0KICogwqkgMjAxOSBEZW5pcyBQdXNoa2FyZXYNCiAqLw0KIWZ1bmN0aW9uKGUsaSxKdCl7InVzZSBzdHJpY3QiOyFmdW5jdGlvbihyKXt2YXIgZT17fTtmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKHQpe2lmKGVbdF0pcmV0dXJuIGVbdF0uZXhwb3J0czt2YXIgbj1lW3RdPXtpOnQsbDohMSxleHBvcnRzOnt9fTtyZXR1cm4gclt0XS5jYWxsKG4uZXhwb3J0cyxuLG4uZXhwb3J0cyxfX3dlYnBhY2tfcmVxdWlyZV9fKSxuLmw9ITAsbi5leHBvcnRzfV9fd2VicGFja19yZXF1aXJlX18ubT1yLF9fd2VicGFja19yZXF1aXJlX18uYz1lLF9fd2VicGFja19yZXF1aXJlX18uZD1mdW5jdGlvbih0LG4scil7X193ZWJwYWNrX3JlcXVpcmVfXy5vKHQsbil8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4se2NvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLGdldDpyfSl9LF9fd2VicGFja19yZXF1aXJlX18ubj1mdW5jdGlvbih0KXt2YXIgbj10JiZ0Ll9fZXNNb2R1bGU\/ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpe3JldHVybiB0WyJkZWZhdWx0Il19OmZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKXtyZXR1cm4gdH07cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18uZChuLCJhIixuKSxufSxfX3dlYnBhY2tfcmVxdWlyZV9fLm89ZnVuY3Rpb24odCxuKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsbil9LF9fd2VicGFja19yZXF1aXJlX18ucD0iIixfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucz0xMjkpfShbZnVuY3Rpb24odCxuLHIpe3ZhciB2PXIoMiksZz1yKDI2KSx5PXIoMTEpLGQ9cigxMiksYj1yKDE4KSxTPSJwcm90b3R5cGUiLF89ZnVuY3Rpb24odCxuLHIpe3ZhciBlLGksbyx1LGM9dCZfLkYsYT10Jl8uRyxmPXQmXy5QLHM9dCZfLkIsbD1hP3Y6dCZfLlM\/dltuXXx8KHZbbl09e30pOih2W25dfHx7fSlbU10saD1hP2c6Z1tuXXx8KGdbbl09e30pLHA9aFtTXXx8KGhbU109e30pO2ZvcihlIGluIGEmJihyPW4pLHIpbz0oKGk9IWMmJmwmJmxbZV0hPT1KdCk\/bDpyKVtlXSx1PXMmJmk\/YihvLHYpOmYmJiJmdW5jdGlvbiI9PXR5cGVvZiBvP2IoRnVuY3Rpb24uY2FsbCxvKTpvLGwmJmQobCxlLG8sdCZfLlUpLGhbZV0hPW8mJnkoaCxlLHUpLGYmJnBbZV0hPW8mJihwW2VdPW8pfTt2LmNvcmU9ZyxfLkY9MSxfLkc9MixfLlM9NCxfLlA9OCxfLkI9MTYsXy5XPTMyLF8uVT02NCxfLlI9MTI4LHQuZXhwb3J0cz1ffSxmdW5jdGlvbih0LG4scil7dmFyIGU9cig0KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYoIWUodCkpdGhyb3cgVHlwZUVycm9yKHQrIiBpcyBub3QgYW4gb2JqZWN0ISIpO3JldHVybiB0fX0sZnVuY3Rpb24odCxuKXt2YXIgcj10LmV4cG9ydHM9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJndpbmRvdy5NYXRoPT1NYXRoP3dpbmRvdzoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGYmJnNlbGYuTWF0aD09TWF0aD9zZWxmOkZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCk7Im51bWJlciI9PXR5cGVvZiBpJiYoaT1yKX0sZnVuY3Rpb24odCxuKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dHJ5e3JldHVybiEhdCgpfWNhdGNoKG4pe3JldHVybiEwfX19LGZ1bmN0aW9uKHQsbil7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiJvYmplY3QiPT10eXBlb2YgdD9udWxsIT09dDoiZnVuY3Rpb24iPT10eXBlb2YgdH19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDQ3KSgid2tzIiksaT1yKDMzKSxvPXIoMikuU3ltYm9sLHU9ImZ1bmN0aW9uIj09dHlwZW9mIG87KHQuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gZVt0XXx8KGVbdF09dSYmb1t0XXx8KHU\/bzppKSgiU3ltYm9sLiIrdCkpfSkuc3RvcmU9ZX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMjApLGk9TWF0aC5taW47dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiAwPHQ\/aShlKHQpLDkwMDcxOTkyNTQ3NDA5OTEpOjB9fSxmdW5jdGlvbih0LG4scil7dC5leHBvcnRzPSFyKDMpKGZ1bmN0aW9uKCl7cmV0dXJuIDchPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwiYSIse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pLmF9KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBpPXIoMSksbz1yKDkzKSx1PXIoMjIpLGM9T2JqZWN0LmRlZmluZVByb3BlcnR5O24uZj1yKDcpP09iamVjdC5kZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eSh0LG4scil7aWYoaSh0KSxuPXUobiwhMCksaShyKSxvKXRyeXtyZXR1cm4gYyh0LG4scil9Y2F0Y2goZSl7fWlmKCJnZXQiaW4gcnx8InNldCJpbiByKXRocm93IFR5cGVFcnJvcigiQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQhIik7cmV0dXJuInZhbHVlImluIHImJih0W25dPXIudmFsdWUpLHR9fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigyMyk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QoZSh0KSl9fSxmdW5jdGlvbih0LG4pe3QuZXhwb3J0cz1mdW5jdGlvbih0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBUeXBlRXJyb3IodCsiIGlzIG5vdCBhIGZ1bmN0aW9uISIpO3JldHVybiB0fX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoOCksaT1yKDMyKTt0LmV4cG9ydHM9cig3KT9mdW5jdGlvbih0LG4scil7cmV0dXJuIGUuZih0LG4saSgxLHIpKX06ZnVuY3Rpb24odCxuLHIpe3JldHVybiB0W25dPXIsdH19LGZ1bmN0aW9uKHQsbixyKXt2YXIgbz1yKDIpLHU9cigxMSksYz1yKDE0KSxhPXIoMzMpKCJzcmMiKSxlPXIoMTMxKSxpPSJ0b1N0cmluZyIsZj0oIiIrZSkuc3BsaXQoaSk7cigyNikuaW5zcGVjdFNvdXJjZT1mdW5jdGlvbih0KXtyZXR1cm4gZS5jYWxsKHQpfSwodC5leHBvcnRzPWZ1bmN0aW9uKHQsbixyLGUpe3ZhciBpPSJmdW5jdGlvbiI9PXR5cGVvZiByO2kmJihjKHIsIm5hbWUiKXx8dShyLCJuYW1lIixuKSksdFtuXSE9PXImJihpJiYoYyhyLGEpfHx1KHIsYSx0W25dPyIiK3Rbbl06Zi5qb2luKFN0cmluZyhuKSkpKSx0PT09bz90W25dPXI6ZT90W25dP3Rbbl09cjp1KHQsbixyKTooZGVsZXRlIHRbbl0sdSh0LG4scikpKX0pKEZ1bmN0aW9uLnByb3RvdHlwZSxpLGZ1bmN0aW9uIHRvU3RyaW5nKCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMmJnRoaXNbYV18fGUuY2FsbCh0aGlzKX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxpPXIoMyksdT1yKDIzKSxjPS8iL2csbz1mdW5jdGlvbih0LG4scixlKXt2YXIgaT1TdHJpbmcodSh0KSksbz0iPCIrbjtyZXR1cm4iIiE9PXImJihvKz0iICIrcisnPSInK1N0cmluZyhlKS5yZXBsYWNlKGMsIiZxdW90OyIpKyciJyksbysiPiIraSsiPC8iK24rIj4ifTt0LmV4cG9ydHM9ZnVuY3Rpb24obix0KXt2YXIgcj17fTtyW25dPXQobyksZShlLlArZS5GKmkoZnVuY3Rpb24oKXt2YXIgdD0iIltuXSgnIicpO3JldHVybiB0IT09dC50b0xvd2VyQ2FzZSgpfHwzPHQuc3BsaXQoJyInKS5sZW5ndGh9KSwiU3RyaW5nIixyKX19LGZ1bmN0aW9uKHQsbil7dmFyIHI9e30uaGFzT3duUHJvcGVydHk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbil7cmV0dXJuIHIuY2FsbCh0LG4pfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoNDgpLGk9cigyMyk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBlKGkodCkpfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoNDkpLGk9cigzMiksbz1yKDE1KSx1PXIoMjIpLGM9cigxNCksYT1yKDkzKSxmPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7bi5mPXIoNyk\/ZjpmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKXtpZih0PW8odCksbj11KG4sITApLGEpdHJ5e3JldHVybiBmKHQsbil9Y2F0Y2gocil7fWlmKGModCxuKSlyZXR1cm4gaSghZS5mLmNhbGwodCxuKSx0W25dKX19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDE0KSxpPXIoOSksbz1yKDY4KSgiSUVfUFJPVE8iKSx1PU9iamVjdC5wcm90b3R5cGU7dC5leHBvcnRzPU9iamVjdC5nZXRQcm90b3R5cGVPZnx8ZnVuY3Rpb24odCl7cmV0dXJuIHQ9aSh0KSxlKHQsbyk\/dFtvXToiZnVuY3Rpb24iPT10eXBlb2YgdC5jb25zdHJ1Y3RvciYmdCBpbnN0YW5jZW9mIHQuY29uc3RydWN0b3I\/dC5jb25zdHJ1Y3Rvci5wcm90b3R5cGU6dCBpbnN0YW5jZW9mIE9iamVjdD91Om51bGx9fSxmdW5jdGlvbih0LG4scil7dmFyIG89cigxMCk7dC5leHBvcnRzPWZ1bmN0aW9uKGUsaSx0KXtpZihvKGUpLGk9PT1KdClyZXR1cm4gZTtzd2l0Y2godCl7Y2FzZSAxOnJldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5jYWxsKGksdCl9O2Nhc2UgMjpyZXR1cm4gZnVuY3Rpb24odCxuKXtyZXR1cm4gZS5jYWxsKGksdCxuKX07Y2FzZSAzOnJldHVybiBmdW5jdGlvbih0LG4scil7cmV0dXJuIGUuY2FsbChpLHQsbixyKX19cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGUuYXBwbHkoaSxhcmd1bWVudHMpfX19LGZ1bmN0aW9uKHQsbil7dmFyIHI9e30udG9TdHJpbmc7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiByLmNhbGwodCkuc2xpY2UoOCwtMSl9fSxmdW5jdGlvbih0LG4pe3ZhciByPU1hdGguY2VpbCxlPU1hdGguZmxvb3I7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBpc05hTih0PSt0KT8wOigwPHQ\/ZTpyKSh0KX19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDMpO3QuZXhwb3J0cz1mdW5jdGlvbih0LG4pe3JldHVybiEhdCYmZShmdW5jdGlvbigpe24\/dC5jYWxsKG51bGwsZnVuY3Rpb24oKXt9LDEpOnQuY2FsbChudWxsKX0pfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBpPXIoNCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbil7aWYoIWkodCkpcmV0dXJuIHQ7dmFyIHIsZTtpZihuJiYiZnVuY3Rpb24iPT10eXBlb2Yocj10LnRvU3RyaW5nKSYmIWkoZT1yLmNhbGwodCkpKXJldHVybiBlO2lmKCJmdW5jdGlvbiI9PXR5cGVvZihyPXQudmFsdWVPZikmJiFpKGU9ci5jYWxsKHQpKSlyZXR1cm4gZTtpZighbiYmImZ1bmN0aW9uIj09dHlwZW9mKHI9dC50b1N0cmluZykmJiFpKGU9ci5jYWxsKHQpKSlyZXR1cm4gZTt0aHJvdyBUeXBlRXJyb3IoIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZSIpfX0sZnVuY3Rpb24odCxuKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYodD09SnQpdGhyb3cgVHlwZUVycm9yKCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAgIit0KTtyZXR1cm4gdH19LGZ1bmN0aW9uKHQsbixyKXt2YXIgaT1yKDApLG89cigyNiksdT1yKDMpO3QuZXhwb3J0cz1mdW5jdGlvbih0LG4pe3ZhciByPShvLk9iamVjdHx8e30pW3RdfHxPYmplY3RbdF0sZT17fTtlW3RdPW4ociksaShpLlMraS5GKnUoZnVuY3Rpb24oKXtyKDEpfSksIk9iamVjdCIsZSl9fSxmdW5jdGlvbih0LG4scil7dmFyIFM9cigxOCksXz1yKDQ4KSx4PXIoOSksbT1yKDYpLGU9cig4NCk7dC5leHBvcnRzPWZ1bmN0aW9uKGwsdCl7dmFyIGg9MT09bCxwPTI9PWwsdj0zPT1sLGc9ND09bCx5PTY9PWwsZD01PT1sfHx5LGI9dHx8ZTtyZXR1cm4gZnVuY3Rpb24odCxuLHIpe2Zvcih2YXIgZSxpLG89eCh0KSx1PV8obyksYz1TKG4sciwzKSxhPW0odS5sZW5ndGgpLGY9MCxzPWg\/Yih0LGEpOnA\/Yih0LDApOkp0O2Y8YTtmKyspaWYoKGR8fGYgaW4gdSkmJihpPWMoZT11W2ZdLGYsbyksbCkpaWYoaClzW2ZdPWk7ZWxzZSBpZihpKXN3aXRjaChsKXtjYXNlIDM6cmV0dXJuITA7Y2FzZSA1OnJldHVybiBlO2Nhc2UgNjpyZXR1cm4gZjtjYXNlIDI6cy5wdXNoKGUpfWVsc2UgaWYoZylyZXR1cm4hMTtyZXR1cm4geT8tMTp2fHxnP2c6c319fSxmdW5jdGlvbih0LG4pe3ZhciByPXQuZXhwb3J0cz17dmVyc2lvbjoiMi42LjExIn07Im51bWJlciI9PXR5cGVvZiBlJiYoZT1yKX0sZnVuY3Rpb24odCxuLHIpe2lmKHIoNykpe3ZhciB5PXIoMjkpLGQ9cigyKSxiPXIoMyksUz1yKDApLF89cig2MiksZT1yKDkyKSxoPXIoMTgpLHg9cigzOSksaT1yKDMyKSxtPXIoMTEpLG89cig0MSksdT1yKDIwKSx3PXIoNiksRT1yKDEyMiksYz1yKDM1KSxhPXIoMjIpLGY9cigxNCksTz1yKDQ0KSxNPXIoNCkscD1yKDkpLHY9cig4MSksST1yKDM2KSxQPXIoMTcpLEY9cigzNykuZixnPXIoODMpLHM9cigzMyksbD1yKDUpLEE9cigyNSksaz1yKDUyKSxOPXIoNTEpLGo9cig4NiksUj1yKDQ2KSxUPXIoNTcpLEw9cigzOCksRD1yKDg1KSxDPXIoMTEwKSxVPXIoOCksVz1yKDE2KSxHPVUuZixWPVcuZixCPWQuUmFuZ2VFcnJvcix6PWQuVHlwZUVycm9yLHE9ZC5VaW50OEFycmF5LEs9IkFycmF5QnVmZmVyIixKPSJTaGFyZWQiK0ssWT0iQllURVNfUEVSX0VMRU1FTlQiLCQ9InByb3RvdHlwZSIsWD1BcnJheVskXSxIPWUuQXJyYXlCdWZmZXIsWj1lLkRhdGFWaWV3LFE9QSgwKSx0dD1BKDIpLG50PUEoMykscnQ9QSg0KSxldD1BKDUpLGl0PUEoNiksb3Q9ayghMCksdXQ9ayghMSksY3Q9ai52YWx1ZXMsYXQ9ai5rZXlzLGZ0PWouZW50cmllcyxzdD1YLmxhc3RJbmRleE9mLGx0PVgucmVkdWNlLGh0PVgucmVkdWNlUmlnaHQscHQ9WC5qb2luLHZ0PVguc29ydCxndD1YLnNsaWNlLHl0PVgudG9TdHJpbmcsZHQ9WC50b0xvY2FsZVN0cmluZyxidD1sKCJpdGVyYXRvciIpLFN0PWwoInRvU3RyaW5nVGFnIiksX3Q9cygidHlwZWRfY29uc3RydWN0b3IiKSx4dD1zKCJkZWZfY29uc3RydWN0b3IiKSxtdD1fLkNPTlNUUix3dD1fLlRZUEVELEV0PV8uVklFVyxPdD0iV3JvbmcgbGVuZ3RoISIsTXQ9QSgxLGZ1bmN0aW9uKHQsbil7cmV0dXJuIGt0KE4odCx0W3h0XSksbil9KSxJdD1iKGZ1bmN0aW9uKCl7cmV0dXJuIDE9PT1uZXcgcShuZXcgVWludDE2QXJyYXkoWzFdKS5idWZmZXIpWzBdfSksUHQ9ISFxJiYhIXFbJF0uc2V0JiZiKGZ1bmN0aW9uKCl7bmV3IHEoMSkuc2V0KHt9KX0pLEZ0PWZ1bmN0aW9uKHQsbil7dmFyIHI9dSh0KTtpZihyPDB8fHIlbil0aHJvdyBCKCJXcm9uZyBvZmZzZXQhIik7cmV0dXJuIHJ9LEF0PWZ1bmN0aW9uKHQpe2lmKE0odCkmJnd0IGluIHQpcmV0dXJuIHQ7dGhyb3cgeih0KyIgaXMgbm90IGEgdHlwZWQgYXJyYXkhIil9LGt0PWZ1bmN0aW9uKHQsbil7aWYoIShNKHQpJiZfdCBpbiB0KSl0aHJvdyB6KCJJdCBpcyBub3QgYSB0eXBlZCBhcnJheSBjb25zdHJ1Y3RvciEiKTtyZXR1cm4gbmV3IHQobil9LE50PWZ1bmN0aW9uKHQsbil7cmV0dXJuIGp0KE4odCx0W3h0XSksbil9LGp0PWZ1bmN0aW9uKHQsbil7Zm9yKHZhciByPTAsZT1uLmxlbmd0aCxpPWt0KHQsZSk7cjxlOylpW3JdPW5bcisrXTtyZXR1cm4gaX0sUnQ9ZnVuY3Rpb24odCxuLHIpe0codCxuLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZFtyXX19KX0sVHQ9ZnVuY3Rpb24gZnJvbSh0KXt2YXIgbixyLGUsaSxvLHUsYz1wKHQpLGE9YXJndW1lbnRzLmxlbmd0aCxmPTE8YT9hcmd1bWVudHNbMV06SnQscz1mIT09SnQsbD1nKGMpO2lmKGwhPUp0JiYhdihsKSl7Zm9yKHU9bC5jYWxsKGMpLGU9W10sbj0wOyEobz11Lm5leHQoKSkuZG9uZTtuKyspZS5wdXNoKG8udmFsdWUpO2M9ZX1mb3IocyYmMjxhJiYoZj1oKGYsYXJndW1lbnRzWzJdLDIpKSxuPTAscj13KGMubGVuZ3RoKSxpPWt0KHRoaXMscik7bjxyO24rKylpW25dPXM\/ZihjW25dLG4pOmNbbl07cmV0dXJuIGl9LEx0PWZ1bmN0aW9uIG9mKCl7Zm9yKHZhciB0PTAsbj1hcmd1bWVudHMubGVuZ3RoLHI9a3QodGhpcyxuKTt0PG47KXJbdF09YXJndW1lbnRzW3QrK107cmV0dXJuIHJ9LER0PSEhcSYmYihmdW5jdGlvbigpe2R0LmNhbGwobmV3IHEoMSkpfSksQ3Q9ZnVuY3Rpb24gdG9Mb2NhbGVTdHJpbmcoKXtyZXR1cm4gZHQuYXBwbHkoRHQ\/Z3QuY2FsbChBdCh0aGlzKSk6QXQodGhpcyksYXJndW1lbnRzKX0sVXQ9e2NvcHlXaXRoaW46ZnVuY3Rpb24gY29weVdpdGhpbih0LG4pe3JldHVybiBDLmNhbGwoQXQodGhpcyksdCxuLDI8YXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbMl06SnQpfSxldmVyeTpmdW5jdGlvbiBldmVyeSh0KXtyZXR1cm4gcnQoQXQodGhpcyksdCwxPGFyZ3VtZW50cy5sZW5ndGg\/YXJndW1lbnRzWzFdOkp0KX0sZmlsbDpmdW5jdGlvbiBmaWxsKHQpe3JldHVybiBELmFwcGx5KEF0KHRoaXMpLGFyZ3VtZW50cyl9LGZpbHRlcjpmdW5jdGlvbiBmaWx0ZXIodCl7cmV0dXJuIE50KHRoaXMsdHQoQXQodGhpcyksdCwxPGFyZ3VtZW50cy5sZW5ndGg\/YXJndW1lbnRzWzFdOkp0KSl9LGZpbmQ6ZnVuY3Rpb24gZmluZCh0KXtyZXR1cm4gZXQoQXQodGhpcyksdCwxPGFyZ3VtZW50cy5sZW5ndGg\/YXJndW1lbnRzWzFdOkp0KX0sZmluZEluZGV4OmZ1bmN0aW9uIGZpbmRJbmRleCh0KXtyZXR1cm4gaXQoQXQodGhpcyksdCwxPGFyZ3VtZW50cy5sZW5ndGg\/YXJndW1lbnRzWzFdOkp0KX0sZm9yRWFjaDpmdW5jdGlvbiBmb3JFYWNoKHQpe1EoQXQodGhpcyksdCwxPGFyZ3VtZW50cy5sZW5ndGg\/YXJndW1lbnRzWzFdOkp0KX0saW5kZXhPZjpmdW5jdGlvbiBpbmRleE9mKHQpe3JldHVybiB1dChBdCh0aGlzKSx0LDE8YXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbMV06SnQpfSxpbmNsdWRlczpmdW5jdGlvbiBpbmNsdWRlcyh0KXtyZXR1cm4gb3QoQXQodGhpcyksdCwxPGFyZ3VtZW50cy5sZW5ndGg\/YXJndW1lbnRzWzFdOkp0KX0sam9pbjpmdW5jdGlvbiBqb2luKHQpe3JldHVybiBwdC5hcHBseShBdCh0aGlzKSxhcmd1bWVudHMpfSxsYXN0SW5kZXhPZjpmdW5jdGlvbiBsYXN0SW5kZXhPZih0KXtyZXR1cm4gc3QuYXBwbHkoQXQodGhpcyksYXJndW1lbnRzKX0sbWFwOmZ1bmN0aW9uIG1hcCh0KXtyZXR1cm4gTXQoQXQodGhpcyksdCwxPGFyZ3VtZW50cy5sZW5ndGg\/YXJndW1lbnRzWzFdOkp0KX0scmVkdWNlOmZ1bmN0aW9uIHJlZHVjZSh0KXtyZXR1cm4gbHQuYXBwbHkoQXQodGhpcyksYXJndW1lbnRzKX0scmVkdWNlUmlnaHQ6ZnVuY3Rpb24gcmVkdWNlUmlnaHQodCl7cmV0dXJuIGh0LmFwcGx5KEF0KHRoaXMpLGFyZ3VtZW50cyl9LHJldmVyc2U6ZnVuY3Rpb24gcmV2ZXJzZSgpe2Zvcih2YXIgdCxuPXRoaXMscj1BdChuKS5sZW5ndGgsZT1NYXRoLmZsb29yKHIvMiksaT0wO2k8ZTspdD1uW2ldLG5baSsrXT1uWy0tcl0sbltyXT10O3JldHVybiBufSxzb21lOmZ1bmN0aW9uIHNvbWUodCl7cmV0dXJuIG50KEF0KHRoaXMpLHQsMTxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1sxXTpKdCl9LHNvcnQ6ZnVuY3Rpb24gc29ydCh0KXtyZXR1cm4gdnQuY2FsbChBdCh0aGlzKSx0KX0sc3ViYXJyYXk6ZnVuY3Rpb24gc3ViYXJyYXkodCxuKXt2YXIgcj1BdCh0aGlzKSxlPXIubGVuZ3RoLGk9Yyh0LGUpO3JldHVybiBuZXcoTihyLHJbeHRdKSkoci5idWZmZXIsci5ieXRlT2Zmc2V0K2kqci5CWVRFU19QRVJfRUxFTUVOVCx3KChuPT09SnQ\/ZTpjKG4sZSkpLWkpKX19LFd0PWZ1bmN0aW9uIHNsaWNlKHQsbil7cmV0dXJuIE50KHRoaXMsZ3QuY2FsbChBdCh0aGlzKSx0LG4pKX0sR3Q9ZnVuY3Rpb24gc2V0KHQpe0F0KHRoaXMpO3ZhciBuPUZ0KGFyZ3VtZW50c1sxXSwxKSxyPXRoaXMubGVuZ3RoLGU9cCh0KSxpPXcoZS5sZW5ndGgpLG89MDtpZihyPGkrbil0aHJvdyBCKE90KTtmb3IoO288aTspdGhpc1tuK29dPWVbbysrXX0sVnQ9e2VudHJpZXM6ZnVuY3Rpb24gZW50cmllcygpe3JldHVybiBmdC5jYWxsKEF0KHRoaXMpKX0sa2V5czpmdW5jdGlvbiBrZXlzKCl7cmV0dXJuIGF0LmNhbGwoQXQodGhpcykpfSx2YWx1ZXM6ZnVuY3Rpb24gdmFsdWVzKCl7cmV0dXJuIGN0LmNhbGwoQXQodGhpcykpfX0sQnQ9ZnVuY3Rpb24odCxuKXtyZXR1cm4gTSh0KSYmdFt3dF0mJiJzeW1ib2wiIT10eXBlb2YgbiYmbiBpbiB0JiZTdHJpbmcoK24pPT1TdHJpbmcobil9LHp0PWZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pe3JldHVybiBCdCh0LG49YShuLCEwKSk\/aSgyLHRbbl0pOlYodCxuKX0scXQ9ZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkodCxuLHIpe3JldHVybiEoQnQodCxuPWEobiwhMCkpJiZNKHIpJiZmKHIsInZhbHVlIikpfHxmKHIsImdldCIpfHxmKHIsInNldCIpfHxyLmNvbmZpZ3VyYWJsZXx8ZihyLCJ3cml0YWJsZSIpJiYhci53cml0YWJsZXx8ZihyLCJlbnVtZXJhYmxlIikmJiFyLmVudW1lcmFibGU\/Ryh0LG4scik6KHRbbl09ci52YWx1ZSx0KX07bXR8fChXLmY9enQsVS5mPXF0KSxTKFMuUytTLkYqIW10LCJPYmplY3QiLHtnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6enQsZGVmaW5lUHJvcGVydHk6cXR9KSxiKGZ1bmN0aW9uKCl7eXQuY2FsbCh7fSl9KSYmKHl0PWR0PWZ1bmN0aW9uIHRvU3RyaW5nKCl7cmV0dXJuIHB0LmNhbGwodGhpcyl9KTt2YXIgS3Q9byh7fSxVdCk7byhLdCxWdCksbShLdCxidCxWdC52YWx1ZXMpLG8oS3Qse3NsaWNlOld0LHNldDpHdCxjb25zdHJ1Y3RvcjpmdW5jdGlvbigpe30sdG9TdHJpbmc6eXQsdG9Mb2NhbGVTdHJpbmc6Q3R9KSxSdChLdCwiYnVmZmVyIiwiYiIpLFJ0KEt0LCJieXRlT2Zmc2V0IiwibyIpLFJ0KEt0LCJieXRlTGVuZ3RoIiwibCIpLFJ0KEt0LCJsZW5ndGgiLCJlIiksRyhLdCxTdCx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbd3RdfX0pLHQuZXhwb3J0cz1mdW5jdGlvbih0LGwsbixvKXt2YXIgaD10Kygobz0hIW8pPyJDbGFtcGVkIjoiIikrIkFycmF5IixyPSJnZXQiK3QsdT0ic2V0Iit0LHA9ZFtoXSxjPXB8fHt9LGU9cCYmUChwKSxpPXt9LGE9cCYmcFskXSx2PWZ1bmN0aW9uKHQsaSl7Ryh0LGkse2dldDpmdW5jdGlvbigpe3JldHVybih0PXRoaXMuX2QpLnZbcl0oaSpsK3QubyxJdCk7dmFyIHR9LHNldDpmdW5jdGlvbih0KXtyZXR1cm4gbj1pLHI9dCxlPXRoaXMuX2QsbyYmKHI9KHI9TWF0aC5yb3VuZChyKSk8MD8wOjI1NTxyPzI1NToyNTUmciksdm9pZCBlLnZbdV0obipsK2UubyxyLEl0KTt2YXIgbixyLGV9LGVudW1lcmFibGU6ITB9KX07IXB8fCFfLkFCVj8ocD1uKGZ1bmN0aW9uKHQsbixyLGUpe3godCxwLGgsIl9kIik7dmFyIGksbyx1LGMsYT0wLGY9MDtpZihNKG4pKXtpZighKG4gaW5zdGFuY2VvZiBIfHwoYz1PKG4pKT09S3x8Yz09SikpcmV0dXJuIHd0IGluIG4\/anQocCxuKTpUdC5jYWxsKHAsbik7aT1uLGY9RnQocixsKTt2YXIgcz1uLmJ5dGVMZW5ndGg7aWYoZT09PUp0KXtpZihzJWwpdGhyb3cgQihPdCk7aWYoKG89cy1mKTwwKXRocm93IEIoT3QpfWVsc2UgaWYoczwobz13KGUpKmwpK2YpdGhyb3cgQihPdCk7dT1vL2x9ZWxzZSB1PUUobiksaT1uZXcgSChvPXUqbCk7Zm9yKG0odCwiX2QiLHtiOmksbzpmLGw6byxlOnUsdjpuZXcgWihpKX0pO2E8dTspdih0LGErKyl9KSxhPXBbJF09SShLdCksbShhLCJjb25zdHJ1Y3RvciIscCkpOmIoZnVuY3Rpb24oKXtwKDEpfSkmJmIoZnVuY3Rpb24oKXtuZXcgcCgtMSl9KSYmVChmdW5jdGlvbih0KXtuZXcgcCxuZXcgcChudWxsKSxuZXcgcCgxLjUpLG5ldyBwKHQpfSwhMCl8fChwPW4oZnVuY3Rpb24odCxuLHIsZSl7dmFyIGk7cmV0dXJuIHgodCxwLGgpLE0obik\/biBpbnN0YW5jZW9mIEh8fChpPU8obikpPT1LfHxpPT1KP2UhPT1KdD9uZXcgYyhuLEZ0KHIsbCksZSk6ciE9PUp0P25ldyBjKG4sRnQocixsKSk6bmV3IGMobik6d3QgaW4gbj9qdChwLG4pOlR0LmNhbGwocCxuKTpuZXcgYyhFKG4pKX0pLFEoZSE9PUZ1bmN0aW9uLnByb3RvdHlwZT9GKGMpLmNvbmNhdChGKGUpKTpGKGMpLGZ1bmN0aW9uKHQpe3QgaW4gcHx8bShwLHQsY1t0XSl9KSxwWyRdPWEseXx8KGEuY29uc3RydWN0b3I9cCkpO3ZhciBmPWFbYnRdLHM9ISFmJiYoInZhbHVlcyI9PWYubmFtZXx8Zi5uYW1lPT1KdCksZz1WdC52YWx1ZXM7bShwLF90LCEwKSxtKGEsd3QsaCksbShhLEV0LCEwKSxtKGEseHQscCksKG8\/bmV3IHAoMSlbU3RdPT1oOlN0IGluIGEpfHxHKGEsU3Qse2dldDpmdW5jdGlvbigpe3JldHVybiBofX0pLFMoUy5HK1MuVytTLkYqKChpW2hdPXApIT1jKSxpKSxTKFMuUyxoLHtCWVRFU19QRVJfRUxFTUVOVDpsfSksUyhTLlMrUy5GKmIoZnVuY3Rpb24oKXtjLm9mLmNhbGwocCwxKX0pLGgse2Zyb206VHQsb2Y6THR9KSxZIGluIGF8fG0oYSxZLGwpLFMoUy5QLGgsVXQpLEwoaCksUyhTLlArUy5GKlB0LGgse3NldDpHdH0pLFMoUy5QK1MuRiohcyxoLFZ0KSx5fHxhLnRvU3RyaW5nPT15dHx8KGEudG9TdHJpbmc9eXQpLFMoUy5QK1MuRipiKGZ1bmN0aW9uKCl7bmV3IHAoMSkuc2xpY2UoKX0pLGgse3NsaWNlOld0fSksUyhTLlArUy5GKihiKGZ1bmN0aW9uKCl7cmV0dXJuWzEsMl0udG9Mb2NhbGVTdHJpbmcoKSE9bmV3IHAoWzEsMl0pLnRvTG9jYWxlU3RyaW5nKCl9KXx8IWIoZnVuY3Rpb24oKXthLnRvTG9jYWxlU3RyaW5nLmNhbGwoWzEsMl0pfSkpLGgse3RvTG9jYWxlU3RyaW5nOkN0fSksUltoXT1zP2Y6Zyx5fHxzfHxtKGEsYnQsZyl9fWVsc2UgdC5leHBvcnRzPWZ1bmN0aW9uKCl7fX0sZnVuY3Rpb24odCxuLHIpe3ZhciBvPXIoMTE2KSxlPXIoMCksaT1yKDQ3KSgibWV0YWRhdGEiKSx1PWkuc3RvcmV8fChpLnN0b3JlPW5ldyhyKDExOSkpKSxjPWZ1bmN0aW9uKHQsbixyKXt2YXIgZT11LmdldCh0KTtpZighZSl7aWYoIXIpcmV0dXJuIEp0O3Uuc2V0KHQsZT1uZXcgbyl9dmFyIGk9ZS5nZXQobik7aWYoIWkpe2lmKCFyKXJldHVybiBKdDtlLnNldChuLGk9bmV3IG8pfXJldHVybiBpfTt0LmV4cG9ydHM9e3N0b3JlOnUsbWFwOmMsaGFzOmZ1bmN0aW9uKHQsbixyKXt2YXIgZT1jKG4sciwhMSk7cmV0dXJuIGUhPT1KdCYmZS5oYXModCl9LGdldDpmdW5jdGlvbih0LG4scil7dmFyIGU9YyhuLHIsITEpO3JldHVybiBlPT09SnQ\/SnQ6ZS5nZXQodCl9LHNldDpmdW5jdGlvbih0LG4scixlKXtjKHIsZSwhMCkuc2V0KHQsbil9LGtleXM6ZnVuY3Rpb24odCxuKXt2YXIgcj1jKHQsbiwhMSksZT1bXTtyZXR1cm4gciYmci5mb3JFYWNoKGZ1bmN0aW9uKHQsbil7ZS5wdXNoKG4pfSksZX0sa2V5OmZ1bmN0aW9uKHQpe3JldHVybiB0PT09SnR8fCJzeW1ib2wiPT10eXBlb2YgdD90OlN0cmluZyh0KX0sZXhwOmZ1bmN0aW9uKHQpe2UoZS5TLCJSZWZsZWN0Iix0KX19fSxmdW5jdGlvbih0LG4pe3QuZXhwb3J0cz0hMX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMzMpKCJtZXRhIiksaT1yKDQpLG89cigxNCksdT1yKDgpLmYsYz0wLGE9T2JqZWN0LmlzRXh0ZW5zaWJsZXx8ZnVuY3Rpb24oKXtyZXR1cm4hMH0sZj0hcigzKShmdW5jdGlvbigpe3JldHVybiBhKE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyh7fSkpfSkscz1mdW5jdGlvbih0KXt1KHQsZSx7dmFsdWU6e2k6Ik8iKyArK2Msdzp7fX19KX0sbD10LmV4cG9ydHM9e0tFWTplLE5FRUQ6ITEsZmFzdEtleTpmdW5jdGlvbih0LG4pe2lmKCFpKHQpKXJldHVybiJzeW1ib2wiPT10eXBlb2YgdD90Oigic3RyaW5nIj09dHlwZW9mIHQ\/IlMiOiJQIikrdDtpZighbyh0LGUpKXtpZighYSh0KSlyZXR1cm4iRiI7aWYoIW4pcmV0dXJuIkUiO3ModCl9cmV0dXJuIHRbZV0uaX0sZ2V0V2VhazpmdW5jdGlvbih0LG4pe2lmKCFvKHQsZSkpe2lmKCFhKHQpKXJldHVybiEwO2lmKCFuKXJldHVybiExO3ModCl9cmV0dXJuIHRbZV0ud30sb25GcmVlemU6ZnVuY3Rpb24odCl7cmV0dXJuIGYmJmwuTkVFRCYmYSh0KSYmIW8odCxlKSYmcyh0KSx0fX19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDUpKCJ1bnNjb3BhYmxlcyIpLGk9QXJyYXkucHJvdG90eXBlO2lbZV09PUp0JiZyKDExKShpLGUse30pLHQuZXhwb3J0cz1mdW5jdGlvbih0KXtpW2VdW3RdPSEwfX0sZnVuY3Rpb24odCxuKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCxuKXtyZXR1cm57ZW51bWVyYWJsZTohKDEmdCksY29uZmlndXJhYmxlOiEoMiZ0KSx3cml0YWJsZTohKDQmdCksdmFsdWU6bn19fSxmdW5jdGlvbih0LG4pe3ZhciByPTAsZT1NYXRoLnJhbmRvbSgpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4iU3ltYm9sKCIuY29uY2F0KHQ9PT1KdD8iIjp0LCIpXyIsKCsrcitlKS50b1N0cmluZygzNikpfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoOTUpLGk9cig2OSk7dC5leHBvcnRzPU9iamVjdC5rZXlzfHxmdW5jdGlvbiBrZXlzKHQpe3JldHVybiBlKHQsaSl9fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigyMCksaT1NYXRoLm1heCxvPU1hdGgubWluO3QuZXhwb3J0cz1mdW5jdGlvbih0LG4pe3JldHVybih0PWUodCkpPDA\/aSh0K24sMCk6byh0LG4pfX0sZnVuY3Rpb24odCxuLGUpe3ZhciBpPWUoMSksbz1lKDk2KSx1PWUoNjkpLGM9ZSg2OCkoIklFX1BST1RPIiksYT1mdW5jdGlvbigpe30sZj0icHJvdG90eXBlIixzPWZ1bmN0aW9uKCl7dmFyIHQsbj1lKDY2KSgiaWZyYW1lIikscj11Lmxlbmd0aDtmb3Iobi5zdHlsZS5kaXNwbGF5PSJub25lIixlKDcwKS5hcHBlbmRDaGlsZChuKSxuLnNyYz0iamF2YXNjcmlwdDoiLCh0PW4uY29udGVudFdpbmRvdy5kb2N1bWVudCkub3BlbigpLHQud3JpdGUoIjxzY3JpcHQ+ZG9jdW1lbnQuRj1PYmplY3Q8XC9zY3JpcHQ+IiksdC5jbG9zZSgpLHM9dC5GO3ItLTspZGVsZXRlIHNbZl1bdVtyXV07cmV0dXJuIHMoKX07dC5leHBvcnRzPU9iamVjdC5jcmVhdGV8fGZ1bmN0aW9uIGNyZWF0ZSh0LG4pe3ZhciByO3JldHVybiBudWxsIT09dD8oYVtmXT1pKHQpLHI9bmV3IGEsYVtmXT1udWxsLHJbY109dCk6cj1zKCksbj09PUp0P3I6byhyLG4pfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoOTUpLGk9cig2OSkuY29uY2F0KCJsZW5ndGgiLCJwcm90b3R5cGUiKTtuLmY9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXN8fGZ1bmN0aW9uIGdldE93blByb3BlcnR5TmFtZXModCl7cmV0dXJuIGUodCxpKX19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDIpLGk9cig4KSxvPXIoNyksdT1yKDUpKCJzcGVjaWVzIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBuPWVbdF07byYmbiYmIW5bdV0mJmkuZihuLHUse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc319KX19LGZ1bmN0aW9uKHQsbil7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbixyLGUpe2lmKCEodCBpbnN0YW5jZW9mIG4pfHxlIT09SnQmJmUgaW4gdCl0aHJvdyBUeXBlRXJyb3IocisiOiBpbmNvcnJlY3QgaW52b2NhdGlvbiEiKTtyZXR1cm4gdH19LGZ1bmN0aW9uKHQsbixyKXt2YXIgaD1yKDE4KSxwPXIoMTA4KSx2PXIoODEpLGc9cigxKSx5PXIoNiksZD1yKDgzKSxiPXt9LFM9e307KG49dC5leHBvcnRzPWZ1bmN0aW9uKHQsbixyLGUsaSl7dmFyIG8sdSxjLGEsZj1pP2Z1bmN0aW9uKCl7cmV0dXJuIHR9OmQodCkscz1oKHIsZSxuPzI6MSksbD0wO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBmKXRocm93IFR5cGVFcnJvcih0KyIgaXMgbm90IGl0ZXJhYmxlISIpO2lmKHYoZikpe2ZvcihvPXkodC5sZW5ndGgpO2w8bztsKyspaWYoKGE9bj9zKGcodT10W2xdKVswXSx1WzFdKTpzKHRbbF0pKT09PWJ8fGE9PT1TKXJldHVybiBhfWVsc2UgZm9yKGM9Zi5jYWxsKHQpOyEodT1jLm5leHQoKSkuZG9uZTspaWYoKGE9cChjLHMsdS52YWx1ZSxuKSk9PT1ifHxhPT09UylyZXR1cm4gYX0pLkJSRUFLPWIsbi5SRVRVUk49U30sZnVuY3Rpb24odCxuLHIpe3ZhciBpPXIoMTIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LG4scil7Zm9yKHZhciBlIGluIG4paSh0LGUsbltlXSxyKTtyZXR1cm4gdH19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDQpO3QuZXhwb3J0cz1mdW5jdGlvbih0LG4pe2lmKCFlKHQpfHx0Ll90IT09bil0aHJvdyBUeXBlRXJyb3IoIkluY29tcGF0aWJsZSByZWNlaXZlciwgIituKyIgcmVxdWlyZWQhIik7cmV0dXJuIHR9fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cig4KS5mLGk9cigxNCksbz1yKDUpKCJ0b1N0cmluZ1RhZyIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LG4scil7dCYmIWkodD1yP3Q6dC5wcm90b3R5cGUsbykmJmUodCxvLHtjb25maWd1cmFibGU6ITAsdmFsdWU6bn0pfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBpPXIoMTkpLG89cig1KSgidG9TdHJpbmdUYWciKSx1PSJBcmd1bWVudHMiPT1pKGZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50c30oKSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBuLHIsZTtyZXR1cm4gdD09PUp0PyJVbmRlZmluZWQiOm51bGw9PT10PyJOdWxsIjoic3RyaW5nIj09dHlwZW9mKHI9ZnVuY3Rpb24odCxuKXt0cnl7cmV0dXJuIHRbbl19Y2F0Y2gocil7fX0obj1PYmplY3QodCksbykpP3I6dT9pKG4pOiJPYmplY3QiPT0oZT1pKG4pKSYmImZ1bmN0aW9uIj09dHlwZW9mIG4uY2FsbGVlPyJBcmd1bWVudHMiOmV9fSxmdW5jdGlvbih0LG4scil7dmFyIHU9cigwKSxlPXIoMjMpLGM9cigzKSxhPXIoNzMpLGk9IlsiK2ErIl0iLG89UmVnRXhwKCJeIitpK2krIioiKSxmPVJlZ0V4cChpK2krIiokIikscz1mdW5jdGlvbih0LG4scil7dmFyIGU9e30saT1jKGZ1bmN0aW9uKCl7cmV0dXJuISFhW3RdKCl8fCLigIvChSIhPSLigIvChSJbdF0oKX0pLG89ZVt0XT1pP24obCk6YVt0XTtyJiYoZVtyXT1vKSx1KHUuUCt1LkYqaSwiU3RyaW5nIixlKX0sbD1zLnRyaW09ZnVuY3Rpb24odCxuKXtyZXR1cm4gdD1TdHJpbmcoZSh0KSksMSZuJiYodD10LnJlcGxhY2UobywiIikpLDImbiYmKHQ9dC5yZXBsYWNlKGYsIiIpKSx0fTt0LmV4cG9ydHM9c30sZnVuY3Rpb24odCxuKXt0LmV4cG9ydHM9e319LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDI2KSxpPXIoMiksbz0iX19jb3JlLWpzX3NoYXJlZF9fIix1PWlbb118fChpW29dPXt9KTsodC5leHBvcnRzPWZ1bmN0aW9uKHQsbil7cmV0dXJuIHVbdF18fCh1W3RdPW4hPT1KdD9uOnt9KX0pKCJ2ZXJzaW9ucyIsW10pLnB1c2goe3ZlcnNpb246ZS52ZXJzaW9uLG1vZGU6cigyOSk\/InB1cmUiOiJnbG9iYWwiLGNvcHlyaWdodDoiwqkgMjAxOSBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KSJ9KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMTkpO3QuZXhwb3J0cz1PYmplY3QoInoiKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKT9PYmplY3Q6ZnVuY3Rpb24odCl7cmV0dXJuIlN0cmluZyI9PWUodCk\/dC5zcGxpdCgiIik6T2JqZWN0KHQpfX0sZnVuY3Rpb24odCxuKXtuLmY9e30ucHJvcGVydHlJc0VudW1lcmFibGV9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDEpO3QuZXhwb3J0cz1mdW5jdGlvbigpe3ZhciB0PWUodGhpcyksbj0iIjtyZXR1cm4gdC5nbG9iYWwmJihuKz0iZyIpLHQuaWdub3JlQ2FzZSYmKG4rPSJpIiksdC5tdWx0aWxpbmUmJihuKz0ibSIpLHQudW5pY29kZSYmKG4rPSJ1IiksdC5zdGlja3kmJihuKz0ieSIpLG59fSxmdW5jdGlvbih0LG4scil7dmFyIGk9cigxKSxvPXIoMTApLHU9cig1KSgic3BlY2llcyIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LG4pe3ZhciByLGU9aSh0KS5jb25zdHJ1Y3RvcjtyZXR1cm4gZT09PUp0fHwocj1pKGUpW3VdKT09SnQ\/bjpvKHIpfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBhPXIoMTUpLGY9cig2KSxzPXIoMzUpO3QuZXhwb3J0cz1mdW5jdGlvbihjKXtyZXR1cm4gZnVuY3Rpb24odCxuLHIpe3ZhciBlLGk9YSh0KSxvPWYoaS5sZW5ndGgpLHU9cyhyLG8pO2lmKGMmJm4hPW4pe2Zvcig7dTxvOylpZigoZT1pW3UrK10pIT1lKXJldHVybiEwfWVsc2UgZm9yKDt1PG87dSsrKWlmKChjfHx1IGluIGkpJiZpW3VdPT09bilyZXR1cm4gY3x8dXx8MDtyZXR1cm4hYyYmLTF9fX0sZnVuY3Rpb24odCxuKXtuLmY9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9sc30sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMTkpO3QuZXhwb3J0cz1BcnJheS5pc0FycmF5fHxmdW5jdGlvbiBpc0FycmF5KHQpe3JldHVybiJBcnJheSI9PWUodCl9fSxmdW5jdGlvbih0LG4scil7dmFyIGE9cigyMCksZj1yKDIzKTt0LmV4cG9ydHM9ZnVuY3Rpb24oYyl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7dmFyIHIsZSxpPVN0cmluZyhmKHQpKSxvPWEobiksdT1pLmxlbmd0aDtyZXR1cm4gbzwwfHx1PD1vP2M\/IiI6SnQ6KHI9aS5jaGFyQ29kZUF0KG8pKTw1NTI5Nnx8NTYzMTk8cnx8bysxPT09dXx8KGU9aS5jaGFyQ29kZUF0KG8rMSkpPDU2MzIwfHw1NzM0MzxlP2M\/aS5jaGFyQXQobyk6cjpjP2kuc2xpY2UobyxvKzIpOmUtNTYzMjArKHItNTUyOTY8PDEwKSs2NTUzNn19fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cig0KSxpPXIoMTkpLG89cig1KSgibWF0Y2giKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIG47cmV0dXJuIGUodCkmJigobj10W29dKSE9PUp0PyEhbjoiUmVnRXhwIj09aSh0KSl9fSxmdW5jdGlvbih0LG4scil7dmFyIG89cig1KSgiaXRlcmF0b3IiKSx1PSExO3RyeXt2YXIgZT1bN11bb10oKTtlWyJyZXR1cm4iXT1mdW5jdGlvbigpe3U9ITB9LEFycmF5LmZyb20oZSxmdW5jdGlvbigpe3Rocm93IDJ9KX1jYXRjaChjKXt9dC5leHBvcnRzPWZ1bmN0aW9uKHQsbil7aWYoIW4mJiF1KXJldHVybiExO3ZhciByPSExO3RyeXt2YXIgZT1bN10saT1lW29dKCk7aS5uZXh0PWZ1bmN0aW9uKCl7cmV0dXJue2RvbmU6cj0hMH19LGVbb109ZnVuY3Rpb24oKXtyZXR1cm4gaX0sdChlKX1jYXRjaChjKXt9cmV0dXJuIHJ9fSxmdW5jdGlvbih0LG4scil7dmFyIGk9cig0NCksbz1SZWdFeHAucHJvdG90eXBlLmV4ZWM7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbil7dmFyIHI9dC5leGVjO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiByKXt2YXIgZT1yLmNhbGwodCxuKTtpZigib2JqZWN0IiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiUmVnRXhwIGV4ZWMgbWV0aG9kIHJldHVybmVkIHNvbWV0aGluZyBvdGhlciB0aGFuIGFuIE9iamVjdCBvciBudWxsIik7cmV0dXJuIGV9aWYoIlJlZ0V4cCIhPT1pKHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIlJlZ0V4cCNleGVjIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgcmVjZWl2ZXIiKTtyZXR1cm4gby5jYWxsKHQsbil9fSxmdW5jdGlvbih0LG4scil7cigxMTIpO3ZhciBmPXIoMTIpLHM9cigxMSksbD1yKDMpLGg9cigyMykscD1yKDUpLHY9cig4NyksZz1wKCJzcGVjaWVzIikseT0hbChmdW5jdGlvbigpe3ZhciB0PS8uLztyZXR1cm4gdC5leGVjPWZ1bmN0aW9uKCl7dmFyIHQ9W107cmV0dXJuIHQuZ3JvdXBzPXthOiI3In0sdH0sIjciIT09IiIucmVwbGFjZSh0LCIkPGE+Iil9KSxkPWZ1bmN0aW9uKCl7dmFyIHQ9Lyg\/OikvLG49dC5leGVjO3QuZXhlYz1mdW5jdGlvbigpe3JldHVybiBuLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07dmFyIHI9ImFiIi5zcGxpdCh0KTtyZXR1cm4gMj09PXIubGVuZ3RoJiYiYSI9PT1yWzBdJiYiYiI9PT1yWzFdfSgpO3QuZXhwb3J0cz1mdW5jdGlvbihyLHQsbil7dmFyIGU9cChyKSxvPSFsKGZ1bmN0aW9uKCl7dmFyIHQ9e307cmV0dXJuIHRbZV09ZnVuY3Rpb24oKXtyZXR1cm4gN30sNyE9IiJbcl0odCl9KSxpPW8\/IWwoZnVuY3Rpb24oKXt2YXIgdD0hMSxuPS9hLztyZXR1cm4gbi5leGVjPWZ1bmN0aW9uKCl7cmV0dXJuIHQ9ITAsbnVsbH0sInNwbGl0Ij09PXImJihuLmNvbnN0cnVjdG9yPXt9LG4uY29uc3RydWN0b3JbZ109ZnVuY3Rpb24oKXtyZXR1cm4gbn0pLG5bZV0oIiIpLCF0fSk6SnQ7aWYoIW98fCFpfHwicmVwbGFjZSI9PT1yJiYheXx8InNwbGl0Ij09PXImJiFkKXt2YXIgdT0vLi9bZV0sYz1uKGgsZSwiIltyXSxmdW5jdGlvbiBtYXliZUNhbGxOYXRpdmUodCxuLHIsZSxpKXtyZXR1cm4gbi5leGVjPT09dj9vJiYhaT97ZG9uZTohMCx2YWx1ZTp1LmNhbGwobixyLGUpfTp7ZG9uZTohMCx2YWx1ZTp0LmNhbGwocixuLGUpfTp7ZG9uZTohMX19KSxhPWNbMV07ZihTdHJpbmcucHJvdG90eXBlLHIsY1swXSkscyhSZWdFeHAucHJvdG90eXBlLGUsMj09dD9mdW5jdGlvbih0LG4pe3JldHVybiBhLmNhbGwodCx0aGlzLG4pfTpmdW5jdGlvbih0KXtyZXR1cm4gYS5jYWxsKHQsdGhpcyl9KX19fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigyKS5uYXZpZ2F0b3I7dC5leHBvcnRzPWUmJmUudXNlckFnZW50fHwiIn0sZnVuY3Rpb24odCxuLHIpe3ZhciBkPXIoMiksYj1yKDApLFM9cigxMiksXz1yKDQxKSx4PXIoMzApLG09cig0MCksdz1yKDM5KSxFPXIoNCksTz1yKDMpLE09cig1NyksST1yKDQzKSxQPXIoNzIpO3QuZXhwb3J0cz1mdW5jdGlvbihlLHQsbixyLGksbyl7dmFyIHU9ZFtlXSxjPXUsYT1pPyJzZXQiOiJhZGQiLGY9YyYmYy5wcm90b3R5cGUscz17fSxsPWZ1bmN0aW9uKHQpe3ZhciByPWZbdF07UyhmLHQsImRlbGV0ZSI9PXQ\/ZnVuY3Rpb24odCl7cmV0dXJuIShvJiYhRSh0KSkmJnIuY2FsbCh0aGlzLDA9PT10PzA6dCl9OiJoYXMiPT10P2Z1bmN0aW9uIGhhcyh0KXtyZXR1cm4hKG8mJiFFKHQpKSYmci5jYWxsKHRoaXMsMD09PXQ\/MDp0KX06ImdldCI9PXQ\/ZnVuY3Rpb24gZ2V0KHQpe3JldHVybiBvJiYhRSh0KT9KdDpyLmNhbGwodGhpcywwPT09dD8wOnQpfToiYWRkIj09dD9mdW5jdGlvbiBhZGQodCl7cmV0dXJuIHIuY2FsbCh0aGlzLDA9PT10PzA6dCksdGhpc306ZnVuY3Rpb24gc2V0KHQsbil7cmV0dXJuIHIuY2FsbCh0aGlzLDA9PT10PzA6dCxuKSx0aGlzfSl9O2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBjJiYob3x8Zi5mb3JFYWNoJiYhTyhmdW5jdGlvbigpeyhuZXcgYykuZW50cmllcygpLm5leHQoKX0pKSl7dmFyIGg9bmV3IGMscD1oW2FdKG8\/e306LTAsMSkhPWgsdj1PKGZ1bmN0aW9uKCl7aC5oYXMoMSl9KSxnPU0oZnVuY3Rpb24odCl7bmV3IGModCl9KSx5PSFvJiZPKGZ1bmN0aW9uKCl7Zm9yKHZhciB0PW5ldyBjLG49NTtuLS07KXRbYV0obixuKTtyZXR1cm4hdC5oYXMoLTApfSk7Z3x8KCgoYz10KGZ1bmN0aW9uKHQsbil7dyh0LGMsZSk7dmFyIHI9UChuZXcgdSx0LGMpO3JldHVybiBuIT1KdCYmbShuLGksclthXSxyKSxyfSkpLnByb3RvdHlwZT1mKS5jb25zdHJ1Y3Rvcj1jKSwodnx8eSkmJihsKCJkZWxldGUiKSxsKCJoYXMiKSxpJiZsKCJnZXQiKSksKHl8fHApJiZsKGEpLG8mJmYuY2xlYXImJmRlbGV0ZSBmLmNsZWFyfWVsc2UgYz1yLmdldENvbnN0cnVjdG9yKHQsZSxpLGEpLF8oYy5wcm90b3R5cGUsbikseC5ORUVEPSEwO3JldHVybiBJKGMsZSksYihiLkcrYi5XK2IuRiooKHNbZV09YykhPXUpLHMpLG98fHIuc2V0U3Ryb25nKGMsZSxpKSxjfX0sZnVuY3Rpb24odCxuLHIpe2Zvcih2YXIgZSxpPXIoMiksbz1yKDExKSx1PXIoMzMpLGM9dSgidHlwZWRfYXJyYXkiKSxhPXUoInZpZXciKSxmPSEoIWkuQXJyYXlCdWZmZXJ8fCFpLkRhdGFWaWV3KSxzPWYsbD0wLGg9IkludDhBcnJheSxVaW50OEFycmF5LFVpbnQ4Q2xhbXBlZEFycmF5LEludDE2QXJyYXksVWludDE2QXJyYXksSW50MzJBcnJheSxVaW50MzJBcnJheSxGbG9hdDMyQXJyYXksRmxvYXQ2NEFycmF5Ii5zcGxpdCgiLCIpO2w8OTspKGU9aVtoW2wrK11dKT8obyhlLnByb3RvdHlwZSxjLCEwKSxvKGUucHJvdG90eXBlLGEsITApKTpzPSExO3QuZXhwb3J0cz17QUJWOmYsQ09OU1RSOnMsVFlQRUQ6YyxWSUVXOmF9fSxmdW5jdGlvbih0LG4scil7dC5leHBvcnRzPXIoMjkpfHwhcigzKShmdW5jdGlvbigpe3ZhciB0PU1hdGgucmFuZG9tKCk7X19kZWZpbmVTZXR0ZXJfXy5jYWxsKG51bGwsdCxmdW5jdGlvbigpe30pLGRlbGV0ZSByKDIpW3RdfSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtlKGUuUyx0LHtvZjpmdW5jdGlvbiBvZigpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KHQpO3QtLTspblt0XT1hcmd1bWVudHNbdF07cmV0dXJuIG5ldyB0aGlzKG4pfX0pfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksdT1yKDEwKSxjPXIoMTgpLGE9cig0MCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2UoZS5TLHQse2Zyb206ZnVuY3Rpb24gZnJvbSh0KXt2YXIgbixyLGUsaSxvPWFyZ3VtZW50c1sxXTtyZXR1cm4gdSh0aGlzKSwobj1vIT09SnQpJiZ1KG8pLHQ9PUp0P25ldyB0aGlzOihyPVtdLG4\/KGU9MCxpPWMobyxhcmd1bWVudHNbMl0sMiksYSh0LCExLGZ1bmN0aW9uKHQpe3IucHVzaChpKHQsZSsrKSl9KSk6YSh0LCExLHIucHVzaCxyKSxuZXcgdGhpcyhyKSl9fSl9fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cig0KSxpPXIoMikuZG9jdW1lbnQsbz1lKGkpJiZlKGkuY3JlYXRlRWxlbWVudCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBvP2kuY3JlYXRlRWxlbWVudCh0KTp7fX19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDIpLGk9cigyNiksbz1yKDI5KSx1PXIoOTQpLGM9cig4KS5mO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgbj1pLlN5bWJvbHx8KGkuU3ltYm9sPW8\/e306ZS5TeW1ib2x8fHt9KTsiXyI9PXQuY2hhckF0KDApfHx0IGluIG58fGMobix0LHt2YWx1ZTp1LmYodCl9KX19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDQ3KSgia2V5cyIpLGk9cigzMyk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBlW3RdfHwoZVt0XT1pKHQpKX19LGZ1bmN0aW9uKHQsbil7dC5leHBvcnRzPSJjb25zdHJ1Y3RvcixoYXNPd25Qcm9wZXJ0eSxpc1Byb3RvdHlwZU9mLHByb3BlcnR5SXNFbnVtZXJhYmxlLHRvTG9jYWxlU3RyaW5nLHRvU3RyaW5nLHZhbHVlT2YiLnNwbGl0KCIsIil9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDIpLmRvY3VtZW50O3QuZXhwb3J0cz1lJiZlLmRvY3VtZW50RWxlbWVudH0sZnVuY3Rpb24odCxuLGkpe3ZhciByPWkoNCksZT1pKDEpLG89ZnVuY3Rpb24odCxuKXtpZihlKHQpLCFyKG4pJiZudWxsIT09bil0aHJvdyBUeXBlRXJyb3IobisiOiBjYW4ndCBzZXQgYXMgcHJvdG90eXBlISIpfTt0LmV4cG9ydHM9e3NldDpPYmplY3Quc2V0UHJvdG90eXBlT2Z8fCgiX19wcm90b19fImlue30\/ZnVuY3Rpb24odCxyLGUpe3RyeXsoZT1pKDE4KShGdW5jdGlvbi5jYWxsLGkoMTYpLmYoT2JqZWN0LnByb3RvdHlwZSwiX19wcm90b19fIikuc2V0LDIpKSh0LFtdKSxyPSEodCBpbnN0YW5jZW9mIEFycmF5KX1jYXRjaChuKXtyPSEwfXJldHVybiBmdW5jdGlvbiBzZXRQcm90b3R5cGVPZih0LG4pe3JldHVybiBvKHQsbikscj90Ll9fcHJvdG9fXz1uOmUodCxuKSx0fX0oe30sITEpOkp0KSxjaGVjazpvfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBvPXIoNCksdT1yKDcxKS5zZXQ7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbixyKXt2YXIgZSxpPW4uY29uc3RydWN0b3I7cmV0dXJuIGkhPT1yJiYiZnVuY3Rpb24iPT10eXBlb2YgaSYmKGU9aS5wcm90b3R5cGUpIT09ci5wcm90b3R5cGUmJm8oZSkmJnUmJnUodCxlKSx0fX0sZnVuY3Rpb24odCxuKXt0LmV4cG9ydHM9Ilx0XG5ceDBCXGZcciDCoOGagOGgjuKAgOKAgeKAguKAg+KAhOKAheKAhuKAh+KAiOKAieKAiuKAr+KBn+OAgFx1MjAyOFx1MjAyOVx1ZmVmZiJ9LGZ1bmN0aW9uKHQsbixyKXt2YXIgaT1yKDIwKSxvPXIoMjMpO3QuZXhwb3J0cz1mdW5jdGlvbiByZXBlYXQodCl7dmFyIG49U3RyaW5nKG8odGhpcykpLHI9IiIsZT1pKHQpO2lmKGU8MHx8ZT09SW5maW5pdHkpdGhyb3cgUmFuZ2VFcnJvcigiQ291bnQgY2FuJ3QgYmUgbmVnYXRpdmUiKTtmb3IoOzA8ZTsoZT4+Pj0xKSYmKG4rPW4pKTEmZSYmKHIrPW4pO3JldHVybiByfX0sZnVuY3Rpb24odCxuKXt0LmV4cG9ydHM9TWF0aC5zaWdufHxmdW5jdGlvbiBzaWduKHQpe3JldHVybiAwPT0odD0rdCl8fHQhPXQ\/dDp0PDA\/LTE6MX19LGZ1bmN0aW9uKHQsbil7dmFyIHI9TWF0aC5leHBtMTt0LmV4cG9ydHM9IXJ8fDIyMDI1LjQ2NTc5NDgwNjcxODxyKDEwKXx8cigxMCk8MjIwMjUuNDY1Nzk0ODA2NzE4fHwtMmUtMTchPXIoLTJlLTE3KT9mdW5jdGlvbiBleHBtMSh0KXtyZXR1cm4gMD09KHQ9K3QpP3Q6LTFlLTY8dCYmdDwxZS02P3QrdCp0LzI6TWF0aC5leHAodCktMX06cn0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoNTYpLGk9cigyMyk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbixyKXtpZihlKG4pKXRocm93IFR5cGVFcnJvcigiU3RyaW5nIyIrcisiIGRvZXNuJ3QgYWNjZXB0IHJlZ2V4ISIpO3JldHVybiBTdHJpbmcoaSh0KSl9fSxmdW5jdGlvbih0LG4scil7dmFyIGk9cig1KSgibWF0Y2giKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIG49Ly4vO3RyeXsiLy4vIlt0XShuKX1jYXRjaChyKXt0cnl7cmV0dXJuIG5baV09ITEsISIvLi8iW3RdKG4pfWNhdGNoKGUpe319cmV0dXJuITB9fSxmdW5jdGlvbih0LG4scil7dmFyIFM9cigyOSksXz1yKDApLHg9cigxMiksbT1yKDExKSx3PXIoNDYpLEU9cig4MCksTz1yKDQzKSxNPXIoMTcpLEk9cig1KSgiaXRlcmF0b3IiKSxQPSEoW10ua2V5cyYmIm5leHQiaW5bXS5rZXlzKCkpLEY9InZhbHVlcyIsQT1mdW5jdGlvbigpe3JldHVybiB0aGlzfTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxuLHIsZSxpLG8sdSl7RShyLG4sZSk7dmFyIGMsYSxmLHM9ZnVuY3Rpb24odCl7aWYoIVAmJnQgaW4gdilyZXR1cm4gdlt0XTtzd2l0Y2godCl7Y2FzZSJrZXlzIjpyZXR1cm4gZnVuY3Rpb24ga2V5cygpe3JldHVybiBuZXcgcih0aGlzLHQpfTtjYXNlIEY6cmV0dXJuIGZ1bmN0aW9uIHZhbHVlcygpe3JldHVybiBuZXcgcih0aGlzLHQpfX1yZXR1cm4gZnVuY3Rpb24gZW50cmllcygpe3JldHVybiBuZXcgcih0aGlzLHQpfX0sbD1uKyIgSXRlcmF0b3IiLGg9aT09RixwPSExLHY9dC5wcm90b3R5cGUsZz12W0ldfHx2WyJAQGl0ZXJhdG9yIl18fGkmJnZbaV0seT1nfHxzKGkpLGQ9aT9oP3MoImVudHJpZXMiKTp5Okp0LGI9IkFycmF5Ij09biYmdi5lbnRyaWVzfHxnO2lmKGImJihmPU0oYi5jYWxsKG5ldyB0KSkpIT09T2JqZWN0LnByb3RvdHlwZSYmZi5uZXh0JiYoTyhmLGwsITApLFN8fCJmdW5jdGlvbiI9PXR5cGVvZiBmW0ldfHxtKGYsSSxBKSksaCYmZyYmZy5uYW1lIT09RiYmKHA9ITAseT1mdW5jdGlvbiB2YWx1ZXMoKXtyZXR1cm4gZy5jYWxsKHRoaXMpfSksUyYmIXV8fCFQJiYhcCYmdltJXXx8bSh2LEkseSksd1tuXT15LHdbbF09QSxpKWlmKGM9e3ZhbHVlczpoP3k6cyhGKSxrZXlzOm8\/eTpzKCJrZXlzIiksZW50cmllczpkfSx1KWZvcihhIGluIGMpYSBpbiB2fHx4KHYsYSxjW2FdKTtlbHNlIF8oXy5QK18uRiooUHx8cCksbixjKTtyZXR1cm4gY319LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDM2KSxpPXIoMzIpLG89cig0MyksdT17fTtyKDExKSh1LHIoNSkoIml0ZXJhdG9yIiksZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLHQuZXhwb3J0cz1mdW5jdGlvbih0LG4scil7dC5wcm90b3R5cGU9ZSh1LHtuZXh0OmkoMSxyKX0pLG8odCxuKyIgSXRlcmF0b3IiKX19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDQ2KSxpPXIoNSkoIml0ZXJhdG9yIiksbz1BcnJheS5wcm90b3R5cGU7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiB0IT09SnQmJihlLkFycmF5PT09dHx8b1tpXT09PXQpfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoOCksaT1yKDMyKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxuLHIpe24gaW4gdD9lLmYodCxuLGkoMCxyKSk6dFtuXT1yfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoNDQpLGk9cig1KSgiaXRlcmF0b3IiKSxvPXIoNDYpO3QuZXhwb3J0cz1yKDI2KS5nZXRJdGVyYXRvck1ldGhvZD1mdW5jdGlvbih0KXtpZih0IT1KdClyZXR1cm4gdFtpXXx8dFsiQEBpdGVyYXRvciJdfHxvW2UodCldfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMjEzKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxuKXtyZXR1cm4gbmV3KGUodCkpKG4pfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBjPXIoOSksYT1yKDM1KSxmPXIoNik7dC5leHBvcnRzPWZ1bmN0aW9uIGZpbGwodCl7Zm9yKHZhciBuPWModGhpcykscj1mKG4ubGVuZ3RoKSxlPWFyZ3VtZW50cy5sZW5ndGgsaT1hKDE8ZT9hcmd1bWVudHNbMV06SnQsciksbz0yPGU\/YXJndW1lbnRzWzJdOkp0LHU9bz09PUp0P3I6YShvLHIpO2k8dTspbltpKytdPXQ7cmV0dXJuIG59fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigzMSksaT1yKDExMSksbz1yKDQ2KSx1PXIoMTUpO3QuZXhwb3J0cz1yKDc5KShBcnJheSwiQXJyYXkiLGZ1bmN0aW9uKHQsbil7dGhpcy5fdD11KHQpLHRoaXMuX2k9MCx0aGlzLl9rPW59LGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fdCxuPXRoaXMuX2sscj10aGlzLl9pKys7cmV0dXJuIXR8fHQubGVuZ3RoPD1yPyh0aGlzLl90PUp0LGkoMSkpOmkoMCwia2V5cyI9PW4\/cjoidmFsdWVzIj09bj90W3JdOltyLHRbcl1dKX0sInZhbHVlcyIpLG8uQXJndW1lbnRzPW8uQXJyYXksZSgia2V5cyIpLGUoInZhbHVlcyIpLGUoImVudHJpZXMiKX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlLGksdT1yKDUwKSxjPVJlZ0V4cC5wcm90b3R5cGUuZXhlYyxhPVN0cmluZy5wcm90b3R5cGUucmVwbGFjZSxvPWMsZj0ibGFzdEluZGV4IixzPShpPS9iKi9nLGMuY2FsbChlPS9hLywiYSIpLGMuY2FsbChpLCJhIiksMCE9PWVbZl18fDAhPT1pW2ZdKSxsPS8oKT8\/Ly5leGVjKCIiKVsxXSE9PUp0OyhzfHxsKSYmKG89ZnVuY3Rpb24gZXhlYyh0KXt2YXIgbixyLGUsaSxvPXRoaXM7cmV0dXJuIGwmJihyPW5ldyBSZWdFeHAoIl4iK28uc291cmNlKyIkKD8hXFxzKSIsdS5jYWxsKG8pKSkscyYmKG49b1tmXSksZT1jLmNhbGwobyx0KSxzJiZlJiYob1tmXT1vLmdsb2JhbD9lLmluZGV4K2VbMF0ubGVuZ3RoOm4pLGwmJmUmJjE8ZS5sZW5ndGgmJmEuY2FsbChlWzBdLHIsZnVuY3Rpb24oKXtmb3IoaT0xO2k8YXJndW1lbnRzLmxlbmd0aC0yO2krKylhcmd1bWVudHNbaV09PT1KdCYmKGVbaV09SnQpfSksZX0pLHQuZXhwb3J0cz1vfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cig1NSkoITApO3QuZXhwb3J0cz1mdW5jdGlvbih0LG4scil7cmV0dXJuIG4rKHI\/ZSh0LG4pLmxlbmd0aDoxKX19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZSxpLG8sdT1yKDE4KSxjPXIoMTAxKSxhPXIoNzApLGY9cig2Nikscz1yKDIpLGw9cy5wcm9jZXNzLGg9cy5zZXRJbW1lZGlhdGUscD1zLmNsZWFySW1tZWRpYXRlLHY9cy5NZXNzYWdlQ2hhbm5lbCxnPXMuRGlzcGF0Y2gseT0wLGQ9e30sYj0ib25yZWFkeXN0YXRlY2hhbmdlIixTPWZ1bmN0aW9uKCl7dmFyIHQ9K3RoaXM7aWYoZC5oYXNPd25Qcm9wZXJ0eSh0KSl7dmFyIG49ZFt0XTtkZWxldGUgZFt0XSxuKCl9fSxfPWZ1bmN0aW9uKHQpe1MuY2FsbCh0LmRhdGEpfTtoJiZwfHwoaD1mdW5jdGlvbiBzZXRJbW1lZGlhdGUodCl7Zm9yKHZhciBuPVtdLHI9MTtyPGFyZ3VtZW50cy5sZW5ndGg7KW4ucHVzaChhcmd1bWVudHNbcisrXSk7cmV0dXJuIGRbKyt5XT1mdW5jdGlvbigpe2MoImZ1bmN0aW9uIj09dHlwZW9mIHQ\/dDpGdW5jdGlvbih0KSxuKX0sZSh5KSx5fSxwPWZ1bmN0aW9uIGNsZWFySW1tZWRpYXRlKHQpe2RlbGV0ZSBkW3RdfSwicHJvY2VzcyI9PXIoMTkpKGwpP2U9ZnVuY3Rpb24odCl7bC5uZXh0VGljayh1KFMsdCwxKSl9OmcmJmcubm93P2U9ZnVuY3Rpb24odCl7Zy5ub3codShTLHQsMSkpfTp2PyhvPShpPW5ldyB2KS5wb3J0MixpLnBvcnQxLm9ubWVzc2FnZT1fLGU9dShvLnBvc3RNZXNzYWdlLG8sMSkpOnMuYWRkRXZlbnRMaXN0ZW5lciYmImZ1bmN0aW9uIj09dHlwZW9mIHBvc3RNZXNzYWdlJiYhcy5pbXBvcnRTY3JpcHRzPyhlPWZ1bmN0aW9uKHQpe3MucG9zdE1lc3NhZ2UodCsiIiwiKiIpfSxzLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLF8sITEpKTplPWIgaW4gZigic2NyaXB0Iik\/ZnVuY3Rpb24odCl7YS5hcHBlbmRDaGlsZChmKCJzY3JpcHQiKSlbYl09ZnVuY3Rpb24oKXthLnJlbW92ZUNoaWxkKHRoaXMpLFMuY2FsbCh0KX19OmZ1bmN0aW9uKHQpe3NldFRpbWVvdXQodShTLHQsMSksMCl9KSx0LmV4cG9ydHM9e3NldDpoLGNsZWFyOnB9fSxmdW5jdGlvbih0LG4scil7dmFyIGM9cigyKSxhPXIoODkpLnNldCxmPWMuTXV0YXRpb25PYnNlcnZlcnx8Yy5XZWJLaXRNdXRhdGlvbk9ic2VydmVyLHM9Yy5wcm9jZXNzLGw9Yy5Qcm9taXNlLGg9InByb2Nlc3MiPT1yKDE5KShzKTt0LmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgZSxpLG8sdD1mdW5jdGlvbigpe3ZhciB0LG47Zm9yKGgmJih0PXMuZG9tYWluKSYmdC5leGl0KCk7ZTspe249ZS5mbixlPWUubmV4dDt0cnl7bigpfWNhdGNoKHIpe3Rocm93IGU\/bygpOmk9SnQscn19aT1KdCx0JiZ0LmVudGVyKCl9O2lmKGgpbz1mdW5jdGlvbigpe3MubmV4dFRpY2sodCl9O2Vsc2UgaWYoIWZ8fGMubmF2aWdhdG9yJiZjLm5hdmlnYXRvci5zdGFuZGFsb25lKWlmKGwmJmwucmVzb2x2ZSl7dmFyIG49bC5yZXNvbHZlKEp0KTtvPWZ1bmN0aW9uKCl7bi50aGVuKHQpfX1lbHNlIG89ZnVuY3Rpb24oKXthLmNhbGwoYyx0KX07ZWxzZXt2YXIgcj0hMCx1PWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIiKTtuZXcgZih0KS5vYnNlcnZlKHUse2NoYXJhY3RlckRhdGE6ITB9KSxvPWZ1bmN0aW9uKCl7dS5kYXRhPXI9IXJ9fXJldHVybiBmdW5jdGlvbih0KXt2YXIgbj17Zm46dCxuZXh0Okp0fTtpJiYoaS5uZXh0PW4pLGV8fChlPW4sbygpKSxpPW59fX0sZnVuY3Rpb24odCxuLHIpe3ZhciBpPXIoMTApO2Z1bmN0aW9uIFByb21pc2VDYXBhYmlsaXR5KHQpe3ZhciByLGU7dGhpcy5wcm9taXNlPW5ldyB0KGZ1bmN0aW9uKHQsbil7aWYociE9PUp0fHxlIT09SnQpdGhyb3cgVHlwZUVycm9yKCJCYWQgUHJvbWlzZSBjb25zdHJ1Y3RvciIpO3I9dCxlPW59KSx0aGlzLnJlc29sdmU9aShyKSx0aGlzLnJlamVjdD1pKGUpfXQuZXhwb3J0cy5mPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgUHJvbWlzZUNhcGFiaWxpdHkodCl9fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigyKSxpPXIoNyksbz1yKDI5KSx1PXIoNjIpLGM9cigxMSksYT1yKDQxKSxmPXIoMykscz1yKDM5KSxsPXIoMjApLGg9cig2KSxwPXIoMTIyKSx2PXIoMzcpLmYsZz1yKDgpLmYseT1yKDg1KSxkPXIoNDMpLGI9IkFycmF5QnVmZmVyIixTPSJEYXRhVmlldyIsXz0icHJvdG90eXBlIix4PSJXcm9uZyBpbmRleCEiLG09ZVtiXSx3PWVbU10sRT1lLk1hdGgsTz1lLlJhbmdlRXJyb3IsTT1lLkluZmluaXR5LEk9bSxQPUUuYWJzLEY9RS5wb3csQT1FLmZsb29yLGs9RS5sb2csTj1FLkxOMixqPSJieXRlTGVuZ3RoIixSPSJieXRlT2Zmc2V0IixUPWk\/Il9iIjoiYnVmZmVyIixMPWk\/Il9sIjpqLEQ9aT8iX28iOlI7ZnVuY3Rpb24gcGFja0lFRUU3NTQodCxuLHIpe3ZhciBlLGksbyx1PW5ldyBBcnJheShyKSxjPTgqci1uLTEsYT0oMTw8YyktMSxmPWE+PjEscz0yMz09PW4\/RigyLC0yNCktRigyLC03Nyk6MCxsPTAsaD10PDB8fDA9PT10JiYxL3Q8MD8xOjA7Zm9yKCh0PVAodCkpIT10fHx0PT09TT8oaT10IT10PzE6MCxlPWEpOihlPUEoayh0KS9OKSx0KihvPUYoMiwtZSkpPDEmJihlLS0sbyo9MiksMjw9KHQrPTE8PWUrZj9zL286cypGKDIsMS1mKSkqbyYmKGUrKyxvLz0yKSxhPD1lK2Y\/KGk9MCxlPWEpOjE8PWUrZj8oaT0odCpvLTEpKkYoMixuKSxlKz1mKTooaT10KkYoMixmLTEpKkYoMixuKSxlPTApKTs4PD1uO3VbbCsrXT0yNTUmaSxpLz0yNTYsbi09OCk7Zm9yKGU9ZTw8bnxpLGMrPW47MDxjO3VbbCsrXT0yNTUmZSxlLz0yNTYsYy09OCk7cmV0dXJuIHVbLS1sXXw9MTI4KmgsdX1mdW5jdGlvbiB1bnBhY2tJRUVFNzU0KHQsbixyKXt2YXIgZSxpPTgqci1uLTEsbz0oMTw8aSktMSx1PW8+PjEsYz1pLTcsYT1yLTEsZj10W2EtLV0scz0xMjcmZjtmb3IoZj4+PTc7MDxjO3M9MjU2KnMrdFthXSxhLS0sYy09OCk7Zm9yKGU9cyYoMTw8LWMpLTEscz4+PS1jLGMrPW47MDxjO2U9MjU2KmUrdFthXSxhLS0sYy09OCk7aWYoMD09PXMpcz0xLXU7ZWxzZXtpZihzPT09bylyZXR1cm4gZT9OYU46Zj8tTTpNO2UrPUYoMixuKSxzLT11fXJldHVybihmPy0xOjEpKmUqRigyLHMtbil9ZnVuY3Rpb24gdW5wYWNrSTMyKHQpe3JldHVybiB0WzNdPDwyNHx0WzJdPDwxNnx0WzFdPDw4fHRbMF19ZnVuY3Rpb24gcGFja0k4KHQpe3JldHVyblsyNTUmdF19ZnVuY3Rpb24gcGFja0kxNih0KXtyZXR1cm5bMjU1JnQsdD4+OCYyNTVdfWZ1bmN0aW9uIHBhY2tJMzIodCl7cmV0dXJuWzI1NSZ0LHQ+PjgmMjU1LHQ+PjE2JjI1NSx0Pj4yNCYyNTVdfWZ1bmN0aW9uIHBhY2tGNjQodCl7cmV0dXJuIHBhY2tJRUVFNzU0KHQsNTIsOCl9ZnVuY3Rpb24gcGFja0YzMih0KXtyZXR1cm4gcGFja0lFRUU3NTQodCwyMyw0KX1mdW5jdGlvbiBhZGRHZXR0ZXIodCxuLHIpe2codFtfXSxuLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1tyXX19KX1mdW5jdGlvbiBnZXQodCxuLHIsZSl7dmFyIGk9cCgrcik7aWYodFtMXTxpK24pdGhyb3cgTyh4KTt2YXIgbz1pK3RbRF0sdT10W1RdLl9iLnNsaWNlKG8sbytuKTtyZXR1cm4gZT91OnUucmV2ZXJzZSgpfWZ1bmN0aW9uIHNldCh0LG4scixlLGksbyl7dmFyIHU9cCgrcik7aWYodFtMXTx1K24pdGhyb3cgTyh4KTtmb3IodmFyIGM9dFtUXS5fYixhPXUrdFtEXSxmPWUoK2kpLHM9MDtzPG47cysrKWNbYStzXT1mW28\/czpuLXMtMV19aWYodS5BQlYpe2lmKCFmKGZ1bmN0aW9uKCl7bSgxKX0pfHwhZihmdW5jdGlvbigpe25ldyBtKC0xKX0pfHxmKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBtLG5ldyBtKDEuNSksbmV3IG0oTmFOKSxtLm5hbWUhPWJ9KSl7Zm9yKHZhciBDLFU9KG09ZnVuY3Rpb24gQXJyYXlCdWZmZXIodCl7cmV0dXJuIHModGhpcyxtKSxuZXcgSShwKHQpKX0pW19dPUlbX10sVz12KEkpLEc9MDtHPFcubGVuZ3RoOykoQz1XW0crK10paW4gbXx8YyhtLEMsSVtDXSk7b3x8KFUuY29uc3RydWN0b3I9bSl9dmFyIFY9bmV3IHcobmV3IG0oMikpLEI9d1tfXS5zZXRJbnQ4O1Yuc2V0SW50OCgwLDIxNDc0ODM2NDgpLFYuc2V0SW50OCgxLDIxNDc0ODM2NDkpLCFWLmdldEludDgoMCkmJlYuZ2V0SW50OCgxKXx8YSh3W19dLHtzZXRJbnQ4OmZ1bmN0aW9uIHNldEludDgodCxuKXtCLmNhbGwodGhpcyx0LG48PDI0Pj4yNCl9LHNldFVpbnQ4OmZ1bmN0aW9uIHNldFVpbnQ4KHQsbil7Qi5jYWxsKHRoaXMsdCxuPDwyND4+MjQpfX0sITApfWVsc2UgbT1mdW5jdGlvbiBBcnJheUJ1ZmZlcih0KXtzKHRoaXMsbSxiKTt2YXIgbj1wKHQpO3RoaXMuX2I9eS5jYWxsKG5ldyBBcnJheShuKSwwKSx0aGlzW0xdPW59LHc9ZnVuY3Rpb24gRGF0YVZpZXcodCxuLHIpe3ModGhpcyx3LFMpLHModCxtLFMpO3ZhciBlPXRbTF0saT1sKG4pO2lmKGk8MHx8ZTxpKXRocm93IE8oIldyb25nIG9mZnNldCEiKTtpZihlPGkrKHI9cj09PUp0P2UtaTpoKHIpKSl0aHJvdyBPKCJXcm9uZyBsZW5ndGghIik7dGhpc1tUXT10LHRoaXNbRF09aSx0aGlzW0xdPXJ9LGkmJihhZGRHZXR0ZXIobSxqLCJfbCIpLGFkZEdldHRlcih3LCJidWZmZXIiLCJfYiIpLGFkZEdldHRlcih3LGosIl9sIiksYWRkR2V0dGVyKHcsUiwiX28iKSksYSh3W19dLHtnZXRJbnQ4OmZ1bmN0aW9uIGdldEludDgodCl7cmV0dXJuIGdldCh0aGlzLDEsdClbMF08PDI0Pj4yNH0sZ2V0VWludDg6ZnVuY3Rpb24gZ2V0VWludDgodCl7cmV0dXJuIGdldCh0aGlzLDEsdClbMF19LGdldEludDE2OmZ1bmN0aW9uIGdldEludDE2KHQpe3ZhciBuPWdldCh0aGlzLDIsdCxhcmd1bWVudHNbMV0pO3JldHVybihuWzFdPDw4fG5bMF0pPDwxNj4+MTZ9LGdldFVpbnQxNjpmdW5jdGlvbiBnZXRVaW50MTYodCl7dmFyIG49Z2V0KHRoaXMsMix0LGFyZ3VtZW50c1sxXSk7cmV0dXJuIG5bMV08PDh8blswXX0sZ2V0SW50MzI6ZnVuY3Rpb24gZ2V0SW50MzIodCl7cmV0dXJuIHVucGFja0kzMihnZXQodGhpcyw0LHQsYXJndW1lbnRzWzFdKSl9LGdldFVpbnQzMjpmdW5jdGlvbiBnZXRVaW50MzIodCl7cmV0dXJuIHVucGFja0kzMihnZXQodGhpcyw0LHQsYXJndW1lbnRzWzFdKSk+Pj4wfSxnZXRGbG9hdDMyOmZ1bmN0aW9uIGdldEZsb2F0MzIodCl7cmV0dXJuIHVucGFja0lFRUU3NTQoZ2V0KHRoaXMsNCx0LGFyZ3VtZW50c1sxXSksMjMsNCl9LGdldEZsb2F0NjQ6ZnVuY3Rpb24gZ2V0RmxvYXQ2NCh0KXtyZXR1cm4gdW5wYWNrSUVFRTc1NChnZXQodGhpcyw4LHQsYXJndW1lbnRzWzFdKSw1Miw4KX0sc2V0SW50ODpmdW5jdGlvbiBzZXRJbnQ4KHQsbil7c2V0KHRoaXMsMSx0LHBhY2tJOCxuKX0sc2V0VWludDg6ZnVuY3Rpb24gc2V0VWludDgodCxuKXtzZXQodGhpcywxLHQscGFja0k4LG4pfSxzZXRJbnQxNjpmdW5jdGlvbiBzZXRJbnQxNih0LG4pe3NldCh0aGlzLDIsdCxwYWNrSTE2LG4sYXJndW1lbnRzWzJdKX0sc2V0VWludDE2OmZ1bmN0aW9uIHNldFVpbnQxNih0LG4pe3NldCh0aGlzLDIsdCxwYWNrSTE2LG4sYXJndW1lbnRzWzJdKX0sc2V0SW50MzI6ZnVuY3Rpb24gc2V0SW50MzIodCxuKXtzZXQodGhpcyw0LHQscGFja0kzMixuLGFyZ3VtZW50c1syXSl9LHNldFVpbnQzMjpmdW5jdGlvbiBzZXRVaW50MzIodCxuKXtzZXQodGhpcyw0LHQscGFja0kzMixuLGFyZ3VtZW50c1syXSl9LHNldEZsb2F0MzI6ZnVuY3Rpb24gc2V0RmxvYXQzMih0LG4pe3NldCh0aGlzLDQsdCxwYWNrRjMyLG4sYXJndW1lbnRzWzJdKX0sDQpzZXRGbG9hdDY0OmZ1bmN0aW9uIHNldEZsb2F0NjQodCxuKXtzZXQodGhpcyw4LHQscGFja0Y2NCxuLGFyZ3VtZW50c1syXSl9fSk7ZChtLGIpLGQodyxTKSxjKHdbX10sdS5WSUVXLCEwKSxuW2JdPW0sbltTXT13fSxmdW5jdGlvbih0LG4scil7dC5leHBvcnRzPSFyKDcpJiYhcigzKShmdW5jdGlvbigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5lUHJvcGVydHkocig2NikoImRpdiIpLCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pfSxmdW5jdGlvbih0LG4scil7bi5mPXIoNSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgdT1yKDE0KSxjPXIoMTUpLGE9cig1MikoITEpLGY9cig2OCkoIklFX1BST1RPIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbil7dmFyIHIsZT1jKHQpLGk9MCxvPVtdO2ZvcihyIGluIGUpciE9ZiYmdShlLHIpJiZvLnB1c2gocik7Zm9yKDtpPG4ubGVuZ3RoOyl1KGUscj1uW2krK10pJiYofmEobyxyKXx8by5wdXNoKHIpKTtyZXR1cm4gb319LGZ1bmN0aW9uKHQsbixyKXt2YXIgdT1yKDgpLGM9cigxKSxhPXIoMzQpO3QuZXhwb3J0cz1yKDcpP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzOmZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModCxuKXtjKHQpO2Zvcih2YXIgcixlPWEobiksaT1lLmxlbmd0aCxvPTA7bzxpOyl1LmYodCxyPWVbbysrXSxuW3JdKTtyZXR1cm4gdH19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDE1KSxpPXIoMzcpLmYsbz17fS50b1N0cmluZyx1PSJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cmJk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzP09iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHdpbmRvdyk6W107dC5leHBvcnRzLmY9ZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyh0KXtyZXR1cm4gdSYmIltvYmplY3QgV2luZG93XSI9PW8uY2FsbCh0KT9mdW5jdGlvbih0KXt0cnl7cmV0dXJuIGkodCl9Y2F0Y2gobil7cmV0dXJuIHUuc2xpY2UoKX19KHQpOmkoZSh0KSl9fSxmdW5jdGlvbih0LG4scil7dmFyIGg9cig3KSxwPXIoMzQpLHY9cig1MyksZz1yKDQ5KSx5PXIoOSksZD1yKDQ4KSxpPU9iamVjdC5hc3NpZ247dC5leHBvcnRzPSFpfHxyKDMpKGZ1bmN0aW9uKCl7dmFyIHQ9e30sbj17fSxyPVN5bWJvbCgpLGU9ImFiY2RlZmdoaWprbG1ub3BxcnN0IjtyZXR1cm4gdFtyXT03LGUuc3BsaXQoIiIpLmZvckVhY2goZnVuY3Rpb24odCl7blt0XT10fSksNyE9aSh7fSx0KVtyXXx8T2JqZWN0LmtleXMoaSh7fSxuKSkuam9pbigiIikhPWV9KT9mdW5jdGlvbiBhc3NpZ24odCxuKXtmb3IodmFyIHI9eSh0KSxlPWFyZ3VtZW50cy5sZW5ndGgsaT0xLG89di5mLHU9Zy5mO2k8ZTspZm9yKHZhciBjLGE9ZChhcmd1bWVudHNbaSsrXSksZj1vP3AoYSkuY29uY2F0KG8oYSkpOnAoYSkscz1mLmxlbmd0aCxsPTA7bDxzOyljPWZbbCsrXSxoJiYhdS5jYWxsKGEsYyl8fChyW2NdPWFbY10pO3JldHVybiByfTppfSxmdW5jdGlvbih0LG4pe3QuZXhwb3J0cz1PYmplY3QuaXN8fGZ1bmN0aW9uIGlzKHQsbil7cmV0dXJuIHQ9PT1uPzAhPT10fHwxL3Q9PTEvbjp0IT10JiZuIT1ufX0sZnVuY3Rpb24odCxuLHIpe3ZhciBvPXIoMTApLHU9cig0KSxjPXIoMTAxKSxhPVtdLnNsaWNlLGY9e307dC5leHBvcnRzPUZ1bmN0aW9uLmJpbmR8fGZ1bmN0aW9uIGJpbmQobil7dmFyIHI9byh0aGlzKSxlPWEuY2FsbChhcmd1bWVudHMsMSksaT1mdW5jdGlvbigpe3ZhciB0PWUuY29uY2F0KGEuY2FsbChhcmd1bWVudHMpKTtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIGk\/ZnVuY3Rpb24odCxuLHIpe2lmKCEobiBpbiBmKSl7Zm9yKHZhciBlPVtdLGk9MDtpPG47aSsrKWVbaV09ImFbIitpKyJdIjtmW25dPUZ1bmN0aW9uKCJGLGEiLCJyZXR1cm4gbmV3IEYoIitlLmpvaW4oIiwiKSsiKSIpfXJldHVybiBmW25dKHQscil9KHIsdC5sZW5ndGgsdCk6YyhyLHQsbil9O3JldHVybiB1KHIucHJvdG90eXBlKSYmKGkucHJvdG90eXBlPXIucHJvdG90eXBlKSxpfX0sZnVuY3Rpb24odCxuKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCxuLHIpe3ZhciBlPXI9PT1KdDtzd2l0Y2gobi5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gZT90KCk6dC5jYWxsKHIpO2Nhc2UgMTpyZXR1cm4gZT90KG5bMF0pOnQuY2FsbChyLG5bMF0pO2Nhc2UgMjpyZXR1cm4gZT90KG5bMF0sblsxXSk6dC5jYWxsKHIsblswXSxuWzFdKTtjYXNlIDM6cmV0dXJuIGU\/dChuWzBdLG5bMV0sblsyXSk6dC5jYWxsKHIsblswXSxuWzFdLG5bMl0pO2Nhc2UgNDpyZXR1cm4gZT90KG5bMF0sblsxXSxuWzJdLG5bM10pOnQuY2FsbChyLG5bMF0sblsxXSxuWzJdLG5bM10pfXJldHVybiB0LmFwcGx5KHIsbil9fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigxOSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbil7aWYoIm51bWJlciIhPXR5cGVvZiB0JiYiTnVtYmVyIiE9ZSh0KSl0aHJvdyBUeXBlRXJyb3Iobik7cmV0dXJuK3R9fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cig0KSxpPU1hdGguZmxvb3I7dC5leHBvcnRzPWZ1bmN0aW9uIGlzSW50ZWdlcih0KXtyZXR1cm4hZSh0KSYmaXNGaW5pdGUodCkmJmkodCk9PT10fX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMikucGFyc2VGbG9hdCxpPXIoNDUpLnRyaW07dC5leHBvcnRzPTEvZShyKDczKSsiLTAiKSE9LUluZmluaXR5P2Z1bmN0aW9uIHBhcnNlRmxvYXQodCl7dmFyIG49aShTdHJpbmcodCksMykscj1lKG4pO3JldHVybiAwPT09ciYmIi0iPT1uLmNoYXJBdCgwKT8tMDpyfTplfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigyKS5wYXJzZUludCxpPXIoNDUpLnRyaW0sbz1yKDczKSx1PS9eWy0rXT8wW3hYXS87dC5leHBvcnRzPTghPT1lKG8rIjA4Iil8fDIyIT09ZShvKyIweDE2Iik\/ZnVuY3Rpb24gcGFyc2VJbnQodCxuKXt2YXIgcj1pKFN0cmluZyh0KSwzKTtyZXR1cm4gZShyLG4+Pj4wfHwodS50ZXN0KHIpPzE2OjEwKSl9OmV9LGZ1bmN0aW9uKHQsbil7dC5leHBvcnRzPU1hdGgubG9nMXB8fGZ1bmN0aW9uIGxvZzFwKHQpe3JldHVybi0xZS04PCh0PSt0KSYmdDwxZS04P3QtdCp0LzI6TWF0aC5sb2coMSt0KX19LGZ1bmN0aW9uKHQsbixyKXt2YXIgbz1yKDc1KSxlPU1hdGgucG93LHU9ZSgyLC01MiksYz1lKDIsLTIzKSxhPWUoMiwxMjcpKigyLWMpLGY9ZSgyLC0xMjYpO3QuZXhwb3J0cz1NYXRoLmZyb3VuZHx8ZnVuY3Rpb24gZnJvdW5kKHQpe3ZhciBuLHIsZT1NYXRoLmFicyh0KSxpPW8odCk7cmV0dXJuIGU8Zj9pKihlL2YvYysxL3UtMS91KSpmKmM6YTwocj0obj0oMStjL3UpKmUpLShuLWUpKXx8ciE9cj9pKkluZmluaXR5Omkqcn19LGZ1bmN0aW9uKHQsbixyKXt2YXIgdT1yKDEpO3QuZXhwb3J0cz1mdW5jdGlvbih0LG4scixlKXt0cnl7cmV0dXJuIGU\/bih1KHIpWzBdLHJbMV0pOm4ocil9Y2F0Y2gobyl7dmFyIGk9dFsicmV0dXJuIl07dGhyb3cgaSE9PUp0JiZ1KGkuY2FsbCh0KSksb319fSxmdW5jdGlvbih0LG4scil7dmFyIHM9cigxMCksbD1yKDkpLGg9cig0OCkscD1yKDYpO3QuZXhwb3J0cz1mdW5jdGlvbih0LG4scixlLGkpe3Mobik7dmFyIG89bCh0KSx1PWgobyksYz1wKG8ubGVuZ3RoKSxhPWk\/Yy0xOjAsZj1pPy0xOjE7aWYocjwyKWZvcig7Oyl7aWYoYSBpbiB1KXtlPXVbYV0sYSs9ZjticmVha31pZihhKz1mLGk\/YTwwOmM8PWEpdGhyb3cgVHlwZUVycm9yKCJSZWR1Y2Ugb2YgZW1wdHkgYXJyYXkgd2l0aCBubyBpbml0aWFsIHZhbHVlIil9Zm9yKDtpPzA8PWE6YTxjO2ErPWYpYSBpbiB1JiYoZT1uKGUsdVthXSxhLG8pKTtyZXR1cm4gZX19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZj1yKDkpLHM9cigzNSksbD1yKDYpO3QuZXhwb3J0cz1bXS5jb3B5V2l0aGlufHxmdW5jdGlvbiBjb3B5V2l0aGluKHQsbil7dmFyIHI9Zih0aGlzKSxlPWwoci5sZW5ndGgpLGk9cyh0LGUpLG89cyhuLGUpLHU9Mjxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1syXTpKdCxjPU1hdGgubWluKCh1PT09SnQ\/ZTpzKHUsZSkpLW8sZS1pKSxhPTE7Zm9yKG88aSYmaTxvK2MmJihhPS0xLG8rPWMtMSxpKz1jLTEpOzA8Yy0tOylvIGluIHI\/cltpXT1yW29dOmRlbGV0ZSByW2ldLGkrPWEsbys9YTtyZXR1cm4gcn19LGZ1bmN0aW9uKHQsbil7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbil7cmV0dXJue3ZhbHVlOm4sZG9uZTohIXR9fX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoODcpO3IoMCkoe3RhcmdldDoiUmVnRXhwIixwcm90bzohMCxmb3JjZWQ6ZSE9PS8uLy5leGVjfSx7ZXhlYzplfSl9LGZ1bmN0aW9uKHQsbixyKXtyKDcpJiYiZyIhPS8uL2cuZmxhZ3MmJnIoOCkuZihSZWdFeHAucHJvdG90eXBlLCJmbGFncyIse2NvbmZpZ3VyYWJsZTohMCxnZXQ6cig1MCl9KX0sZnVuY3Rpb24odCxuKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dHJ5e3JldHVybntlOiExLHY6dCgpfX1jYXRjaChuKXtyZXR1cm57ZTohMCx2Om59fX19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDEpLGk9cig0KSxvPXIoOTEpO3QuZXhwb3J0cz1mdW5jdGlvbih0LG4pe2lmKGUodCksaShuKSYmbi5jb25zdHJ1Y3Rvcj09PXQpcmV0dXJuIG47dmFyIHI9by5mKHQpO3JldHVybigwLHIucmVzb2x2ZSkobiksci5wcm9taXNlfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMTE3KSxpPXIoNDIpO3QuZXhwb3J0cz1yKDYxKSgiTWFwIixmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24gTWFwKCl7cmV0dXJuIHQodGhpcywwPGFyZ3VtZW50cy5sZW5ndGg\/YXJndW1lbnRzWzBdOkp0KX19LHtnZXQ6ZnVuY3Rpb24gZ2V0KHQpe3ZhciBuPWUuZ2V0RW50cnkoaSh0aGlzLCJNYXAiKSx0KTtyZXR1cm4gbiYmbi52fSxzZXQ6ZnVuY3Rpb24gc2V0KHQsbil7cmV0dXJuIGUuZGVmKGkodGhpcywiTWFwIiksMD09PXQ\/MDp0LG4pfX0sZSwhMCl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgdT1yKDgpLmYsYz1yKDM2KSxhPXIoNDEpLGY9cigxOCkscz1yKDM5KSxsPXIoNDApLGU9cig3OSksaT1yKDExMSksbz1yKDM4KSxoPXIoNykscD1yKDMwKS5mYXN0S2V5LHY9cig0MiksZz1oPyJfcyI6InNpemUiLHk9ZnVuY3Rpb24odCxuKXt2YXIgcixlPXAobik7aWYoIkYiIT09ZSlyZXR1cm4gdC5faVtlXTtmb3Iocj10Ll9mO3I7cj1yLm4paWYoci5rPT1uKXJldHVybiByfTt0LmV4cG9ydHM9e2dldENvbnN0cnVjdG9yOmZ1bmN0aW9uKHQsbyxyLGUpe3ZhciBpPXQoZnVuY3Rpb24odCxuKXtzKHQsaSxvLCJfaSIpLHQuX3Q9byx0Ll9pPWMobnVsbCksdC5fZj1KdCx0Ll9sPUp0LHRbZ109MCxuIT1KdCYmbChuLHIsdFtlXSx0KX0pO3JldHVybiBhKGkucHJvdG90eXBlLHtjbGVhcjpmdW5jdGlvbiBjbGVhcigpe2Zvcih2YXIgdD12KHRoaXMsbyksbj10Ll9pLHI9dC5fZjtyO3I9ci5uKXIucj0hMCxyLnAmJihyLnA9ci5wLm49SnQpLGRlbGV0ZSBuW3IuaV07dC5fZj10Ll9sPUp0LHRbZ109MH0sImRlbGV0ZSI6ZnVuY3Rpb24odCl7dmFyIG49dih0aGlzLG8pLHI9eShuLHQpO2lmKHIpe3ZhciBlPXIubixpPXIucDtkZWxldGUgbi5faVtyLmldLHIucj0hMCxpJiYoaS5uPWUpLGUmJihlLnA9aSksbi5fZj09ciYmKG4uX2Y9ZSksbi5fbD09ciYmKG4uX2w9aSksbltnXS0tfXJldHVybiEhcn0sZm9yRWFjaDpmdW5jdGlvbiBmb3JFYWNoKHQpe3YodGhpcyxvKTtmb3IodmFyIG4scj1mKHQsMTxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1sxXTpKdCwzKTtuPW4\/bi5uOnRoaXMuX2Y7KWZvcihyKG4udixuLmssdGhpcyk7biYmbi5yOyluPW4ucH0saGFzOmZ1bmN0aW9uIGhhcyh0KXtyZXR1cm4hIXkodih0aGlzLG8pLHQpfX0pLGgmJnUoaS5wcm90b3R5cGUsInNpemUiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdih0aGlzLG8pW2ddfX0pLGl9LGRlZjpmdW5jdGlvbih0LG4scil7dmFyIGUsaSxvPXkodCxuKTtyZXR1cm4gbz9vLnY9cjoodC5fbD1vPXtpOmk9cChuLCEwKSxrOm4sdjpyLHA6ZT10Ll9sLG46SnQscjohMX0sdC5fZnx8KHQuX2Y9byksZSYmKGUubj1vKSx0W2ddKyssIkYiIT09aSYmKHQuX2lbaV09bykpLHR9LGdldEVudHJ5Onksc2V0U3Ryb25nOmZ1bmN0aW9uKHQscixuKXtlKHQscixmdW5jdGlvbih0LG4pe3RoaXMuX3Q9dih0LHIpLHRoaXMuX2s9bix0aGlzLl9sPUp0fSxmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLG49dC5fayxyPXQuX2w7ciYmci5yOylyPXIucDtyZXR1cm4gdC5fdCYmKHQuX2w9cj1yP3Iubjp0Ll90Ll9mKT9pKDAsImtleXMiPT1uP3IuazoidmFsdWVzIj09bj9yLnY6W3IuayxyLnZdKToodC5fdD1KdCxpKDEpKX0sbj8iZW50cmllcyI6InZhbHVlcyIsIW4sITApLG8ocil9fX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMTE3KSxpPXIoNDIpO3QuZXhwb3J0cz1yKDYxKSgiU2V0IixmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24gU2V0KCl7cmV0dXJuIHQodGhpcywwPGFyZ3VtZW50cy5sZW5ndGg\/YXJndW1lbnRzWzBdOkp0KX19LHthZGQ6ZnVuY3Rpb24gYWRkKHQpe3JldHVybiBlLmRlZihpKHRoaXMsIlNldCIpLHQ9MD09PXQ\/MDp0LHQpfX0sZSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgbyxlPXIoMiksaT1yKDI1KSgwKSx1PXIoMTIpLGM9cigzMCksYT1yKDk4KSxmPXIoMTIwKSxzPXIoNCksbD1yKDQyKSxoPXIoNDIpLHA9IWUuQWN0aXZlWE9iamVjdCYmIkFjdGl2ZVhPYmplY3QiaW4gZSx2PSJXZWFrTWFwIixnPWMuZ2V0V2Vhayx5PU9iamVjdC5pc0V4dGVuc2libGUsZD1mLnVmc3RvcmUsYj1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24gV2Vha01hcCgpe3JldHVybiB0KHRoaXMsMDxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1swXTpKdCl9fSxTPXtnZXQ6ZnVuY3Rpb24gZ2V0KHQpe2lmKHModCkpe3ZhciBuPWcodCk7cmV0dXJuITA9PT1uP2QobCh0aGlzLHYpKS5nZXQodCk6bj9uW3RoaXMuX2ldOkp0fX0sc2V0OmZ1bmN0aW9uIHNldCh0LG4pe3JldHVybiBmLmRlZihsKHRoaXMsdiksdCxuKX19LF89dC5leHBvcnRzPXIoNjEpKHYsYixTLGYsITAsITApO2gmJnAmJihhKChvPWYuZ2V0Q29uc3RydWN0b3IoYix2KSkucHJvdG90eXBlLFMpLGMuTkVFRD0hMCxpKFsiZGVsZXRlIiwiaGFzIiwiZ2V0Iiwic2V0Il0sZnVuY3Rpb24oZSl7dmFyIHQ9Xy5wcm90b3R5cGUsaT10W2VdO3UodCxlLGZ1bmN0aW9uKHQsbil7aWYocyh0KSYmIXkodCkpe3RoaXMuX2Z8fCh0aGlzLl9mPW5ldyBvKTt2YXIgcj10aGlzLl9mW2VdKHQsbik7cmV0dXJuInNldCI9PWU\/dGhpczpyfXJldHVybiBpLmNhbGwodGhpcyx0LG4pfSl9KSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgdT1yKDQxKSxjPXIoMzApLmdldFdlYWssaT1yKDEpLGE9cig0KSxmPXIoMzkpLHM9cig0MCksZT1yKDI1KSxsPXIoMTQpLGg9cig0Miksbz1lKDUpLHA9ZSg2KSx2PTAsZz1mdW5jdGlvbih0KXtyZXR1cm4gdC5fbHx8KHQuX2w9bmV3IHkpfSx5PWZ1bmN0aW9uKCl7dGhpcy5hPVtdfSxkPWZ1bmN0aW9uKHQsbil7cmV0dXJuIG8odC5hLGZ1bmN0aW9uKHQpe3JldHVybiB0WzBdPT09bn0pfTt5LnByb3RvdHlwZT17Z2V0OmZ1bmN0aW9uKHQpe3ZhciBuPWQodGhpcyx0KTtpZihuKXJldHVybiBuWzFdfSxoYXM6ZnVuY3Rpb24odCl7cmV0dXJuISFkKHRoaXMsdCl9LHNldDpmdW5jdGlvbih0LG4pe3ZhciByPWQodGhpcyx0KTtyP3JbMV09bjp0aGlzLmEucHVzaChbdCxuXSl9LCJkZWxldGUiOmZ1bmN0aW9uKG4pe3ZhciB0PXAodGhpcy5hLGZ1bmN0aW9uKHQpe3JldHVybiB0WzBdPT09bn0pO3JldHVybn50JiZ0aGlzLmEuc3BsaWNlKHQsMSksISF+dH19LHQuZXhwb3J0cz17Z2V0Q29uc3RydWN0b3I6ZnVuY3Rpb24odCxyLGUsaSl7dmFyIG89dChmdW5jdGlvbih0LG4pe2YodCxvLHIsIl9pIiksdC5fdD1yLHQuX2k9disrLG4hPSh0Ll9sPUp0KSYmcyhuLGUsdFtpXSx0KX0pO3JldHVybiB1KG8ucHJvdG90eXBlLHsiZGVsZXRlIjpmdW5jdGlvbih0KXtpZighYSh0KSlyZXR1cm4hMTt2YXIgbj1jKHQpO3JldHVybiEwPT09bj9nKGgodGhpcyxyKSlbImRlbGV0ZSJdKHQpOm4mJmwobix0aGlzLl9pKSYmZGVsZXRlIG5bdGhpcy5faV19LGhhczpmdW5jdGlvbiBoYXModCl7aWYoIWEodCkpcmV0dXJuITE7dmFyIG49Yyh0KTtyZXR1cm4hMD09PW4\/ZyhoKHRoaXMscikpLmhhcyh0KTpuJiZsKG4sdGhpcy5faSl9fSksb30sZGVmOmZ1bmN0aW9uKHQsbixyKXt2YXIgZT1jKGkobiksITApO3JldHVybiEwPT09ZT9nKHQpLnNldChuLHIpOmVbdC5faV09cix0fSx1ZnN0b3JlOmd9fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigzNyksaT1yKDUzKSxvPXIoMSksdT1yKDIpLlJlZmxlY3Q7dC5leHBvcnRzPXUmJnUub3duS2V5c3x8ZnVuY3Rpb24gb3duS2V5cyh0KXt2YXIgbj1lLmYobyh0KSkscj1pLmY7cmV0dXJuIHI\/bi5jb25jYXQocih0KSk6bn19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDIwKSxpPXIoNik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKHQ9PT1KdClyZXR1cm4gMDt2YXIgbj1lKHQpLHI9aShuKTtpZihuIT09cil0aHJvdyBSYW5nZUVycm9yKCJXcm9uZyBsZW5ndGghIik7cmV0dXJuIHJ9fSxmdW5jdGlvbih0LG4scil7dmFyIHA9cig1NCksdj1yKDQpLGc9cig2KSx5PXIoMTgpLGQ9cig1KSgiaXNDb25jYXRTcHJlYWRhYmxlIik7dC5leHBvcnRzPWZ1bmN0aW9uIGZsYXR0ZW5JbnRvQXJyYXkodCxuLHIsZSxpLG8sdSxjKXtmb3IodmFyIGEsZixzPWksbD0wLGg9ISF1JiZ5KHUsYywzKTtsPGU7KXtpZihsIGluIHIpe2lmKGE9aD9oKHJbbF0sbCxuKTpyW2xdLGY9ITEsdihhKSYmKGY9KGY9YVtkXSkhPT1KdD8hIWY6cChhKSksZiYmMDxvKXM9ZmxhdHRlbkludG9BcnJheSh0LG4sYSxnKGEubGVuZ3RoKSxzLG8tMSktMTtlbHNle2lmKDkwMDcxOTkyNTQ3NDA5OTE8PXMpdGhyb3cgVHlwZUVycm9yKCk7dFtzXT1hfXMrK31sKyt9cmV0dXJuIHN9fSxmdW5jdGlvbih0LG4scil7dmFyIHM9cig2KSxsPXIoNzQpLGg9cigyMyk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbixyLGUpe3ZhciBpPVN0cmluZyhoKHQpKSxvPWkubGVuZ3RoLHU9cj09PUp0PyIgIjpTdHJpbmcociksYz1zKG4pO2lmKGM8PW98fCIiPT11KXJldHVybiBpO3ZhciBhPWMtbyxmPWwuY2FsbCh1LE1hdGguY2VpbChhL3UubGVuZ3RoKSk7cmV0dXJuIGE8Zi5sZW5ndGgmJihmPWYuc2xpY2UoMCxhKSksZT9mK2k6aStmfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBhPXIoNyksZj1yKDM0KSxzPXIoMTUpLGw9cig0OSkuZjt0LmV4cG9ydHM9ZnVuY3Rpb24oYyl7cmV0dXJuIGZ1bmN0aW9uKHQpe2Zvcih2YXIgbixyPXModCksZT1mKHIpLGk9ZS5sZW5ndGgsbz0wLHU9W107bzxpOyluPWVbbysrXSxhJiYhbC5jYWxsKHIsbil8fHUucHVzaChjP1tuLHJbbl1dOnJbbl0pO3JldHVybiB1fX19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDQ0KSxpPXIoMTI3KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uIHRvSlNPTigpe2lmKGUodGhpcykhPXQpdGhyb3cgVHlwZUVycm9yKHQrIiN0b0pTT04gaXNuJ3QgZ2VuZXJpYyIpO3JldHVybiBpKHRoaXMpfX19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDQwKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxuKXt2YXIgcj1bXTtyZXR1cm4gZSh0LCExLHIucHVzaCxyLG4pLHJ9fSxmdW5jdGlvbih0LG4pe3QuZXhwb3J0cz1NYXRoLnNjYWxlfHxmdW5jdGlvbiBzY2FsZSh0LG4scixlLGkpe3JldHVybiAwPT09YXJndW1lbnRzLmxlbmd0aHx8dCE9dHx8biE9bnx8ciE9cnx8ZSE9ZXx8aSE9aT9OYU46dD09PUluZmluaXR5fHx0PT09LUluZmluaXR5P3Q6KHQtbikqKGktZSkvKHItbikrZX19LGZ1bmN0aW9uKHQsbixyKXtyKDEzMCkscigxMzMpLHIoMTM0KSxyKDEzNSkscigxMzYpLHIoMTM3KSxyKDEzOCkscigxMzkpLHIoMTQwKSxyKDE0MSkscigxNDIpLHIoMTQzKSxyKDE0NCkscigxNDUpLHIoMTQ2KSxyKDE0NykscigxNDgpLHIoMTQ5KSxyKDE1MCkscigxNTEpLHIoMTUyKSxyKDE1MykscigxNTQpLHIoMTU1KSxyKDE1NikscigxNTcpLHIoMTU4KSxyKDE1OSkscigxNjApLHIoMTYxKSxyKDE2MikscigxNjMpLHIoMTY0KSxyKDE2NSkscigxNjYpLHIoMTY3KSxyKDE2OCkscigxNjkpLHIoMTcwKSxyKDE3MSkscigxNzIpLHIoMTczKSxyKDE3NCkscigxNzUpLHIoMTc2KSxyKDE3NykscigxNzgpLHIoMTc5KSxyKDE4MCkscigxODEpLHIoMTgyKSxyKDE4MykscigxODQpLHIoMTg1KSxyKDE4NikscigxODcpLHIoMTg4KSxyKDE4OSkscigxOTApLHIoMTkxKSxyKDE5MikscigxOTMpLHIoMTk0KSxyKDE5NSkscigxOTYpLHIoMTk3KSxyKDE5OCkscigxOTkpLHIoMjAwKSxyKDIwMSkscigyMDIpLHIoMjAzKSxyKDIwNCkscigyMDUpLHIoMjA2KSxyKDIwNykscigyMDgpLHIoMjA5KSxyKDIxMCkscigyMTEpLHIoMjEyKSxyKDIxNCkscigyMTUpLHIoMjE2KSxyKDIxNykscigyMTgpLHIoMjE5KSxyKDIyMCkscigyMjEpLHIoMjIyKSxyKDIyMykscigyMjQpLHIoMjI1KSxyKDg2KSxyKDIyNikscigyMjcpLHIoMTEyKSxyKDIyOCkscigxMTMpLHIoMjI5KSxyKDIzMCkscigyMzEpLHIoMjMyKSxyKDIzMykscigxMTYpLHIoMTE4KSxyKDExOSkscigyMzQpLHIoMjM1KSxyKDIzNikscigyMzcpLHIoMjM4KSxyKDIzOSkscigyNDApLHIoMjQxKSxyKDI0MikscigyNDMpLHIoMjQ0KSxyKDI0NSkscigyNDYpLHIoMjQ3KSxyKDI0OCkscigyNDkpLHIoMjUwKSxyKDI1MSkscigyNTMpLHIoMjU0KSxyKDI1NikscigyNTcpLHIoMjU4KSxyKDI1OSkscigyNjApLHIoMjYxKSxyKDI2MikscigyNjMpLHIoMjY0KSxyKDI2NSkscigyNjYpLHIoMjY3KSxyKDI2OCkscigyNjkpLHIoMjcwKSxyKDI3MSkscigyNzIpLHIoMjczKSxyKDI3NCkscigyNzUpLHIoMjc2KSxyKDI3NykscigyNzgpLHIoMjc5KSxyKDI4MCkscigyODEpLHIoMjgyKSxyKDI4MykscigyODQpLHIoMjg1KSxyKDI4NikscigyODcpLHIoMjg4KSxyKDI4OSkscigyOTApLHIoMjkxKSxyKDI5MikscigyOTMpLHIoMjk0KSxyKDI5NSkscigyOTYpLHIoMjk3KSxyKDI5OCkscigyOTkpLHIoMzAwKSxyKDMwMSkscigzMDIpLHIoMzAzKSxyKDMwNCkscigzMDUpLHIoMzA2KSxyKDMwNykscigzMDgpLHIoMzA5KSxyKDMxMCkscigzMTEpLHIoMzEyKSxyKDMxMykscigzMTQpLHIoMzE1KSxyKDMxNikscigzMTcpLHIoMzE4KSxyKDMxOSkscigzMjApLHIoMzIxKSxyKDMyMikscigzMjMpLHIoMzI0KSx0LmV4cG9ydHM9cigzMjUpfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigyKSx1PXIoMTQpLGk9cig3KSxvPXIoMCksYz1yKDEyKSxhPXIoMzApLktFWSxmPXIoMykscz1yKDQ3KSxsPXIoNDMpLGg9cigzMykscD1yKDUpLHY9cig5NCksZz1yKDY3KSx5PXIoMTMyKSxkPXIoNTQpLGI9cigxKSxTPXIoNCksXz1yKDkpLHg9cigxNSksbT1yKDIyKSx3PXIoMzIpLEU9cigzNiksTz1yKDk3KSxNPXIoMTYpLEk9cig1MyksUD1yKDgpLEY9cigzNCksQT1NLmYsaz1QLmYsTj1PLmYsaj1lLlN5bWJvbCxSPWUuSlNPTixUPVImJlIuc3RyaW5naWZ5LEw9InByb3RvdHlwZSIsRD1wKCJfaGlkZGVuIiksQz1wKCJ0b1ByaW1pdGl2ZSIpLFU9e30ucHJvcGVydHlJc0VudW1lcmFibGUsVz1zKCJzeW1ib2wtcmVnaXN0cnkiKSxHPXMoInN5bWJvbHMiKSxWPXMoIm9wLXN5bWJvbHMiKSxCPU9iamVjdFtMXSx6PSJmdW5jdGlvbiI9PXR5cGVvZiBqJiYhIUkuZixxPWUuUU9iamVjdCxLPSFxfHwhcVtMXXx8IXFbTF0uZmluZENoaWxkLEo9aSYmZihmdW5jdGlvbigpe3JldHVybiA3IT1FKGsoe30sImEiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gayh0aGlzLCJhIix7dmFsdWU6N30pLmF9fSkpLmF9KT9mdW5jdGlvbih0LG4scil7dmFyIGU9QShCLG4pO2UmJmRlbGV0ZSBCW25dLGsodCxuLHIpLGUmJnQhPT1CJiZrKEIsbixlKX06ayxZPWZ1bmN0aW9uKHQpe3ZhciBuPUdbdF09RShqW0xdKTtyZXR1cm4gbi5faz10LG59LCQ9eiYmInN5bWJvbCI9PXR5cGVvZiBqLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBqfSxYPWZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KHQsbixyKXtyZXR1cm4gdD09PUImJlgoVixuLHIpLGIodCksbj1tKG4sITApLGIociksdShHLG4pPyhyLmVudW1lcmFibGU\/KHUodCxEKSYmdFtEXVtuXSYmKHRbRF1bbl09ITEpLHI9RShyLHtlbnVtZXJhYmxlOncoMCwhMSl9KSk6KHUodCxEKXx8ayh0LEQsdygxLHt9KSksdFtEXVtuXT0hMCksSih0LG4scikpOmsodCxuLHIpfSxIPWZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModCxuKXtiKHQpO2Zvcih2YXIgcixlPXkobj14KG4pKSxpPTAsbz1lLmxlbmd0aDtpPG87KVgodCxyPWVbaSsrXSxuW3JdKTtyZXR1cm4gdH0sWj1mdW5jdGlvbiBwcm9wZXJ0eUlzRW51bWVyYWJsZSh0KXt2YXIgbj1VLmNhbGwodGhpcyx0PW0odCwhMCkpO3JldHVybiEodGhpcz09PUImJnUoRyx0KSYmIXUoVix0KSkmJighKG58fCF1KHRoaXMsdCl8fCF1KEcsdCl8fHUodGhpcyxEKSYmdGhpc1tEXVt0XSl8fG4pfSxRPWZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pe2lmKHQ9eCh0KSxuPW0obiwhMCksdCE9PUJ8fCF1KEcsbil8fHUoVixuKSl7dmFyIHI9QSh0LG4pO3JldHVybiFyfHwhdShHLG4pfHx1KHQsRCkmJnRbRF1bbl18fChyLmVudW1lcmFibGU9ITApLHJ9fSx0dD1mdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKHQpe2Zvcih2YXIgbixyPU4oeCh0KSksZT1bXSxpPTA7aTxyLmxlbmd0aDspdShHLG49cltpKytdKXx8bj09RHx8bj09YXx8ZS5wdXNoKG4pO3JldHVybiBlfSxudD1mdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eVN5bWJvbHModCl7Zm9yKHZhciBuLHI9dD09PUIsZT1OKHI\/Vjp4KHQpKSxpPVtdLG89MDtvPGUubGVuZ3RoOykhdShHLG49ZVtvKytdKXx8ciYmIXUoQixuKXx8aS5wdXNoKEdbbl0pO3JldHVybiBpfTt6fHwoYygoaj1mdW5jdGlvbiBTeW1ib2woKXtpZih0aGlzIGluc3RhbmNlb2Ygail0aHJvdyBUeXBlRXJyb3IoIlN5bWJvbCBpcyBub3QgYSBjb25zdHJ1Y3RvciEiKTt2YXIgbj1oKDA8YXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbMF06SnQpLHI9ZnVuY3Rpb24odCl7dGhpcz09PUImJnIuY2FsbChWLHQpLHUodGhpcyxEKSYmdSh0aGlzW0RdLG4pJiYodGhpc1tEXVtuXT0hMSksSih0aGlzLG4sdygxLHQpKX07cmV0dXJuIGkmJksmJkooQixuLHtjb25maWd1cmFibGU6ITAsc2V0OnJ9KSxZKG4pfSlbTF0sInRvU3RyaW5nIixmdW5jdGlvbiB0b1N0cmluZygpe3JldHVybiB0aGlzLl9rfSksTS5mPVEsUC5mPVgscigzNykuZj1PLmY9dHQscig0OSkuZj1aLEkuZj1udCxpJiYhcigyOSkmJmMoQiwicHJvcGVydHlJc0VudW1lcmFibGUiLFosITApLHYuZj1mdW5jdGlvbih0KXtyZXR1cm4gWShwKHQpKX0pLG8oby5HK28uVytvLkYqIXose1N5bWJvbDpqfSk7Zm9yKHZhciBydD0iaGFzSW5zdGFuY2UsaXNDb25jYXRTcHJlYWRhYmxlLGl0ZXJhdG9yLG1hdGNoLHJlcGxhY2Usc2VhcmNoLHNwZWNpZXMsc3BsaXQsdG9QcmltaXRpdmUsdG9TdHJpbmdUYWcsdW5zY29wYWJsZXMiLnNwbGl0KCIsIiksZXQ9MDtldDxydC5sZW5ndGg7KXAocnRbZXQrK10pO2Zvcih2YXIgaXQ9RihwLnN0b3JlKSxvdD0wO290PGl0Lmxlbmd0aDspZyhpdFtvdCsrXSk7byhvLlMrby5GKiF6LCJTeW1ib2wiLHsiZm9yIjpmdW5jdGlvbih0KXtyZXR1cm4gdShXLHQrPSIiKT9XW3RdOldbdF09aih0KX0sa2V5Rm9yOmZ1bmN0aW9uIGtleUZvcih0KXtpZighJCh0KSl0aHJvdyBUeXBlRXJyb3IodCsiIGlzIG5vdCBhIHN5bWJvbCEiKTtmb3IodmFyIG4gaW4gVylpZihXW25dPT09dClyZXR1cm4gbn0sdXNlU2V0dGVyOmZ1bmN0aW9uKCl7Sz0hMH0sdXNlU2ltcGxlOmZ1bmN0aW9uKCl7Sz0hMX19KSxvKG8uUytvLkYqIXosIk9iamVjdCIse2NyZWF0ZTpmdW5jdGlvbiBjcmVhdGUodCxuKXtyZXR1cm4gbj09PUp0P0UodCk6SChFKHQpLG4pfSxkZWZpbmVQcm9wZXJ0eTpYLGRlZmluZVByb3BlcnRpZXM6SCxnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6USxnZXRPd25Qcm9wZXJ0eU5hbWVzOnR0LGdldE93blByb3BlcnR5U3ltYm9sczpudH0pO3ZhciB1dD1mKGZ1bmN0aW9uKCl7SS5mKDEpfSk7byhvLlMrby5GKnV0LCJPYmplY3QiLHtnZXRPd25Qcm9wZXJ0eVN5bWJvbHM6ZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpe3JldHVybiBJLmYoXyh0KSl9fSksUiYmbyhvLlMrby5GKighenx8ZihmdW5jdGlvbigpe3ZhciB0PWooKTtyZXR1cm4iW251bGxdIiE9VChbdF0pfHwie30iIT1UKHthOnR9KXx8Int9IiE9VChPYmplY3QodCkpfSkpLCJKU09OIix7c3RyaW5naWZ5OmZ1bmN0aW9uIHN0cmluZ2lmeSh0KXtmb3IodmFyIG4scixlPVt0XSxpPTE7aTxhcmd1bWVudHMubGVuZ3RoOyllLnB1c2goYXJndW1lbnRzW2krK10pO2lmKHI9bj1lWzFdLChTKG4pfHx0IT09SnQpJiYhJCh0KSlyZXR1cm4gZChuKXx8KG49ZnVuY3Rpb24odCxuKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgciYmKG49ci5jYWxsKHRoaXMsdCxuKSksISQobikpcmV0dXJuIG59KSxlWzFdPW4sVC5hcHBseShSLGUpfX0pLGpbTF1bQ118fHIoMTEpKGpbTF0sQyxqW0xdLnZhbHVlT2YpLGwoaiwiU3ltYm9sIiksbChNYXRoLCJNYXRoIiwhMCksbChlLkpTT04sIkpTT04iLCEwKX0sZnVuY3Rpb24odCxuLHIpe3QuZXhwb3J0cz1yKDQ3KSgibmF0aXZlLWZ1bmN0aW9uLXRvLXN0cmluZyIsRnVuY3Rpb24udG9TdHJpbmcpfSxmdW5jdGlvbih0LG4scil7dmFyIGM9cigzNCksYT1yKDUzKSxmPXIoNDkpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgbj1jKHQpLHI9YS5mO2lmKHIpZm9yKHZhciBlLGk9cih0KSxvPWYuZix1PTA7dTxpLmxlbmd0aDspby5jYWxsKHQsZT1pW3UrK10pJiZuLnB1c2goZSk7cmV0dXJuIG59fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKTtlKGUuUytlLkYqIXIoNyksIk9iamVjdCIse2RlZmluZVByb3BlcnR5OnIoOCkuZn0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKTtlKGUuUytlLkYqIXIoNyksIk9iamVjdCIse2RlZmluZVByb3BlcnRpZXM6cig5Nil9KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMTUpLGk9cigxNikuZjtyKDI0KSgiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIixmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKXtyZXR1cm4gaShlKHQpLG4pfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKTtlKGUuUywiT2JqZWN0Iix7Y3JlYXRlOnIoMzYpfSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDkpLGk9cigxNyk7cigyNCkoImdldFByb3RvdHlwZU9mIixmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBnZXRQcm90b3R5cGVPZih0KXtyZXR1cm4gaShlKHQpKX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoOSksaT1yKDM0KTtyKDI0KSgia2V5cyIsZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24ga2V5cyh0KXtyZXR1cm4gaShlKHQpKX19KX0sZnVuY3Rpb24odCxuLHIpe3IoMjQpKCJnZXRPd25Qcm9wZXJ0eU5hbWVzIixmdW5jdGlvbigpe3JldHVybiByKDk3KS5mfSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDQpLGk9cigzMCkub25GcmVlemU7cigyNCkoImZyZWV6ZSIsZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uIGZyZWV6ZSh0KXtyZXR1cm4gbiYmZSh0KT9uKGkodCkpOnR9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDQpLGk9cigzMCkub25GcmVlemU7cigyNCkoInNlYWwiLGZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbiBzZWFsKHQpe3JldHVybiBuJiZlKHQpP24oaSh0KSk6dH19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoNCksaT1yKDMwKS5vbkZyZWV6ZTtyKDI0KSgicHJldmVudEV4dGVuc2lvbnMiLGZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbiBwcmV2ZW50RXh0ZW5zaW9ucyh0KXtyZXR1cm4gbiYmZSh0KT9uKGkodCkpOnR9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDQpO3IoMjQpKCJpc0Zyb3plbiIsZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uIGlzRnJvemVuKHQpe3JldHVybiFlKHQpfHwhIW4mJm4odCl9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDQpO3IoMjQpKCJpc1NlYWxlZCIsZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uIGlzU2VhbGVkKHQpe3JldHVybiFlKHQpfHwhIW4mJm4odCl9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDQpO3IoMjQpKCJpc0V4dGVuc2libGUiLGZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbiBpc0V4dGVuc2libGUodCl7cmV0dXJuISFlKHQpJiYoIW58fG4odCkpfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKTtlKGUuUytlLkYsIk9iamVjdCIse2Fzc2lnbjpyKDk4KX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKTtlKGUuUywiT2JqZWN0Iix7aXM6cig5OSl9KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCk7ZShlLlMsIk9iamVjdCIse3NldFByb3RvdHlwZU9mOnIoNzEpLnNldH0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cig0NCksaT17fTtpW3IoNSkoInRvU3RyaW5nVGFnIildPSJ6IixpKyIiIT0iW29iamVjdCB6XSImJnIoMTIpKE9iamVjdC5wcm90b3R5cGUsInRvU3RyaW5nIixmdW5jdGlvbiB0b1N0cmluZygpe3JldHVybiJbb2JqZWN0ICIrZSh0aGlzKSsiXSJ9LCEwKX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCk7ZShlLlAsIkZ1bmN0aW9uIix7YmluZDpyKDEwMCl9KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoOCkuZixpPUZ1bmN0aW9uLnByb3RvdHlwZSxvPS9eXHMqZnVuY3Rpb24gKFteIChdKikvOyJuYW1lImluIGl8fHIoNykmJmUoaSwibmFtZSIse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXt0cnl7cmV0dXJuKCIiK3RoaXMpLm1hdGNoKG8pWzFdfWNhdGNoKHQpe3JldHVybiIifX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoNCksaT1yKDE3KSxvPXIoNSkoImhhc0luc3RhbmNlIiksdT1GdW5jdGlvbi5wcm90b3R5cGU7byBpbiB1fHxyKDgpLmYodSxvLHt2YWx1ZTpmdW5jdGlvbih0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdGhpc3x8IWUodCkpcmV0dXJuITE7aWYoIWUodGhpcy5wcm90b3R5cGUpKXJldHVybiB0IGluc3RhbmNlb2YgdGhpcztmb3IoO3Q9aSh0KTspaWYodGhpcy5wcm90b3R5cGU9PT10KXJldHVybiEwO3JldHVybiExfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigyKSxpPXIoMTQpLG89cigxOSksdT1yKDcyKSxzPXIoMjIpLGM9cigzKSxhPXIoMzcpLmYsZj1yKDE2KS5mLGw9cig4KS5mLGg9cig0NSkudHJpbSxwPSJOdW1iZXIiLHY9ZVtwXSxnPXYseT12LnByb3RvdHlwZSxkPW8ocigzNikoeSkpPT1wLGI9InRyaW0iaW4gU3RyaW5nLnByb3RvdHlwZSxTPWZ1bmN0aW9uKHQpe3ZhciBuPXModCwhMSk7aWYoInN0cmluZyI9PXR5cGVvZiBuJiYyPG4ubGVuZ3RoKXt2YXIgcixlLGksbz0obj1iP24udHJpbSgpOmgobiwzKSkuY2hhckNvZGVBdCgwKTtpZig0Mz09PW98fDQ1PT09byl7aWYoODg9PT0ocj1uLmNoYXJDb2RlQXQoMikpfHwxMjA9PT1yKXJldHVybiBOYU59ZWxzZSBpZig0OD09PW8pe3N3aXRjaChuLmNoYXJDb2RlQXQoMSkpe2Nhc2UgNjY6Y2FzZSA5ODplPTIsaT00OTticmVhaztjYXNlIDc5OmNhc2UgMTExOmU9OCxpPTU1O2JyZWFrO2RlZmF1bHQ6cmV0dXJuK259Zm9yKHZhciB1LGM9bi5zbGljZSgyKSxhPTAsZj1jLmxlbmd0aDthPGY7YSsrKWlmKCh1PWMuY2hhckNvZGVBdChhKSk8NDh8fGk8dSlyZXR1cm4gTmFOO3JldHVybiBwYXJzZUludChjLGUpfX1yZXR1cm4rbn07aWYoIXYoIiAwbzEiKXx8IXYoIjBiMSIpfHx2KCIrMHgxIikpe3Y9ZnVuY3Rpb24gTnVtYmVyKHQpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg8MT8wOnQscj10aGlzO3JldHVybiByIGluc3RhbmNlb2YgdiYmKGQ\/YyhmdW5jdGlvbigpe3kudmFsdWVPZi5jYWxsKHIpfSk6byhyKSE9cCk\/dShuZXcgZyhTKG4pKSxyLHYpOlMobil9O2Zvcih2YXIgXyx4PXIoNyk\/YShnKToiTUFYX1ZBTFVFLE1JTl9WQUxVRSxOYU4sTkVHQVRJVkVfSU5GSU5JVFksUE9TSVRJVkVfSU5GSU5JVFksRVBTSUxPTixpc0Zpbml0ZSxpc0ludGVnZXIsaXNOYU4saXNTYWZlSW50ZWdlcixNQVhfU0FGRV9JTlRFR0VSLE1JTl9TQUZFX0lOVEVHRVIscGFyc2VGbG9hdCxwYXJzZUludCxpc0ludGVnZXIiLnNwbGl0KCIsIiksbT0wO208eC5sZW5ndGg7bSsrKWkoZyxfPXhbbV0pJiYhaSh2LF8pJiZsKHYsXyxmKGcsXykpOyh2LnByb3RvdHlwZT15KS5jb25zdHJ1Y3Rvcj12LHIoMTIpKGUscCx2KX19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApLGY9cigyMCkscz1yKDEwMiksbD1yKDc0KSxpPTEuLnRvRml4ZWQsbz1NYXRoLmZsb29yLHU9WzAsMCwwLDAsMCwwXSxoPSJOdW1iZXIudG9GaXhlZDogaW5jb3JyZWN0IGludm9jYXRpb24hIixwPWZ1bmN0aW9uKHQsbil7Zm9yKHZhciByPS0xLGU9bjsrK3I8NjspdVtyXT0oZSs9dCp1W3JdKSUxZTcsZT1vKGUvMWU3KX0sdj1mdW5jdGlvbih0KXtmb3IodmFyIG49NixyPTA7MDw9LS1uOyl1W25dPW8oKHIrPXVbbl0pL3QpLHI9ciV0KjFlN30sZz1mdW5jdGlvbigpe2Zvcih2YXIgdD02LG49IiI7MDw9LS10OylpZigiIiE9PW58fDA9PT10fHwwIT09dVt0XSl7dmFyIHI9U3RyaW5nKHVbdF0pO249IiI9PT1uP3I6bitsLmNhbGwoIjAiLDctci5sZW5ndGgpK3J9cmV0dXJuIG59LHk9ZnVuY3Rpb24odCxuLHIpe3JldHVybiAwPT09bj9yOm4lMj09MT95KHQsbi0xLHIqdCk6eSh0KnQsbi8yLHIpfTtlKGUuUCtlLkYqKCEhaSYmKCIwLjAwMCIhPT04ZS01LnRvRml4ZWQoMyl8fCIxIiE9PS45LnRvRml4ZWQoMCl8fCIxLjI1IiE9PTEuMjU1LnRvRml4ZWQoMil8fCIxMDAwMDAwMDAwMDAwMDAwMTI4IiE9PSgweGRlMGI2YjNhNzY0MDA4MCkudG9GaXhlZCgwKSl8fCFyKDMpKGZ1bmN0aW9uKCl7aS5jYWxsKHt9KX0pKSwiTnVtYmVyIix7dG9GaXhlZDpmdW5jdGlvbiB0b0ZpeGVkKHQpe3ZhciBuLHIsZSxpLG89cyh0aGlzLGgpLHU9Zih0KSxjPSIiLGE9IjAiO2lmKHU8MHx8MjA8dSl0aHJvdyBSYW5nZUVycm9yKGgpO2lmKG8hPW8pcmV0dXJuIk5hTiI7aWYobzw9LTFlMjF8fDFlMjE8PW8pcmV0dXJuIFN0cmluZyhvKTtpZihvPDAmJihjPSItIixvPS1vKSwxZS0yMTxvKWlmKHI9KG49ZnVuY3Rpb24odCl7Zm9yKHZhciBuPTAscj10OzQwOTY8PXI7KW4rPTEyLHIvPTQwOTY7Zm9yKDsyPD1yOyluKz0xLHIvPTI7cmV0dXJuIG59KG8qeSgyLDY5LDEpKS02OSk8MD9vKnkoMiwtbiwxKTpvL3koMixuLDEpLHIqPTQ1MDM1OTk2MjczNzA0OTYsMDwobj01Mi1uKSl7Zm9yKHAoMCxyKSxlPXU7Nzw9ZTspcCgxZTcsMCksZS09Nztmb3IocCh5KDEwLGUsMSksMCksZT1uLTE7MjM8PWU7KXYoMTw8MjMpLGUtPTIzO3YoMTw8ZSkscCgxLDEpLHYoMiksYT1nKCl9ZWxzZSBwKDAscikscCgxPDwtbiwwKSxhPWcoKStsLmNhbGwoIjAiLHUpO3JldHVybiBhPTA8dT9jKygoaT1hLmxlbmd0aCk8PXU\/IjAuIitsLmNhbGwoIjAiLHUtaSkrYTphLnNsaWNlKDAsaS11KSsiLiIrYS5zbGljZShpLXUpKTpjK2F9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApLGk9cigzKSxvPXIoMTAyKSx1PTEuLnRvUHJlY2lzaW9uO2UoZS5QK2UuRiooaShmdW5jdGlvbigpe3JldHVybiIxIiE9PXUuY2FsbCgxLEp0KX0pfHwhaShmdW5jdGlvbigpe3UuY2FsbCh7fSl9KSksIk51bWJlciIse3RvUHJlY2lzaW9uOmZ1bmN0aW9uIHRvUHJlY2lzaW9uKHQpe3ZhciBuPW8odGhpcywiTnVtYmVyI3RvUHJlY2lzaW9uOiBpbmNvcnJlY3QgaW52b2NhdGlvbiEiKTtyZXR1cm4gdD09PUp0P3UuY2FsbChuKTp1LmNhbGwobix0KX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCk7ZShlLlMsIk51bWJlciIse0VQU0lMT046TWF0aC5wb3coMiwtNTIpfSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApLGk9cigyKS5pc0Zpbml0ZTtlKGUuUywiTnVtYmVyIix7aXNGaW5pdGU6ZnVuY3Rpb24gaXNGaW5pdGUodCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiZpKHQpfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKTtlKGUuUywiTnVtYmVyIix7aXNJbnRlZ2VyOnIoMTAzKX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKTtlKGUuUywiTnVtYmVyIix7aXNOYU46ZnVuY3Rpb24gaXNOYU4odCl7cmV0dXJuIHQhPXR9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApLGk9cigxMDMpLG89TWF0aC5hYnM7ZShlLlMsIk51bWJlciIse2lzU2FmZUludGVnZXI6ZnVuY3Rpb24gaXNTYWZlSW50ZWdlcih0KXtyZXR1cm4gaSh0KSYmbyh0KTw9OTAwNzE5OTI1NDc0MDk5MX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCk7ZShlLlMsIk51bWJlciIse01BWF9TQUZFX0lOVEVHRVI6OTAwNzE5OTI1NDc0MDk5MX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKTtlKGUuUywiTnVtYmVyIix7TUlOX1NBRkVfSU5URUdFUjotOTAwNzE5OTI1NDc0MDk5MX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxpPXIoMTA0KTtlKGUuUytlLkYqKE51bWJlci5wYXJzZUZsb2F0IT1pKSwiTnVtYmVyIix7cGFyc2VGbG9hdDppfSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApLGk9cigxMDUpO2UoZS5TK2UuRiooTnVtYmVyLnBhcnNlSW50IT1pKSwiTnVtYmVyIix7cGFyc2VJbnQ6aX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxpPXIoMTA1KTtlKGUuRytlLkYqKHBhcnNlSW50IT1pKSx7cGFyc2VJbnQ6aX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxpPXIoMTA0KTtlKGUuRytlLkYqKHBhcnNlRmxvYXQhPWkpLHtwYXJzZUZsb2F0Oml9KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDEwNiksbz1NYXRoLnNxcnQsdT1NYXRoLmFjb3NoO2UoZS5TK2UuRiohKHUmJjcxMD09TWF0aC5mbG9vcih1KE51bWJlci5NQVhfVkFMVUUpKSYmdShJbmZpbml0eSk9PUluZmluaXR5KSwiTWF0aCIse2Fjb3NoOmZ1bmN0aW9uIGFjb3NoKHQpe3JldHVybih0PSt0KTwxP05hTjo5NDkwNjI2NS42MjQyNTE1Njx0P01hdGgubG9nKHQpK01hdGguTE4yOmkodC0xK28odC0xKSpvKHQrMSkpfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxpPU1hdGguYXNpbmg7ZShlLlMrZS5GKiEoaSYmMDwxL2koMCkpLCJNYXRoIix7YXNpbmg6ZnVuY3Rpb24gYXNpbmgodCl7cmV0dXJuIGlzRmluaXRlKHQ9K3QpJiYwIT10P3Q8MD8tYXNpbmgoLXQpOk1hdGgubG9nKHQrTWF0aC5zcXJ0KHQqdCsxKSk6dH19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1NYXRoLmF0YW5oO2UoZS5TK2UuRiohKGkmJjEvaSgtMCk8MCksIk1hdGgiLHthdGFuaDpmdW5jdGlvbiBhdGFuaCh0KXtyZXR1cm4gMD09KHQ9K3QpP3Q6TWF0aC5sb2coKDErdCkvKDEtdCkpLzJ9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApLGk9cig3NSk7ZShlLlMsIk1hdGgiLHtjYnJ0OmZ1bmN0aW9uIGNicnQodCl7cmV0dXJuIGkodD0rdCkqTWF0aC5wb3coTWF0aC5hYnModCksMS8zKX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCk7ZShlLlMsIk1hdGgiLHtjbHozMjpmdW5jdGlvbiBjbHozMih0KXtyZXR1cm4odD4+Pj0wKT8zMS1NYXRoLmZsb29yKE1hdGgubG9nKHQrLjUpKk1hdGguTE9HMkUpOjMyfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxpPU1hdGguZXhwO2UoZS5TLCJNYXRoIix7Y29zaDpmdW5jdGlvbiBjb3NoKHQpe3JldHVybihpKHQ9K3QpK2koLXQpKS8yfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxpPXIoNzYpO2UoZS5TK2UuRiooaSE9TWF0aC5leHBtMSksIk1hdGgiLHtleHBtMTppfSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApO2UoZS5TLCJNYXRoIix7ZnJvdW5kOnIoMTA3KX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxhPU1hdGguYWJzO2UoZS5TLCJNYXRoIix7aHlwb3Q6ZnVuY3Rpb24gaHlwb3QodCxuKXtmb3IodmFyIHIsZSxpPTAsbz0wLHU9YXJndW1lbnRzLmxlbmd0aCxjPTA7bzx1OyljPChyPWEoYXJndW1lbnRzW28rK10pKT8oaT1pKihlPWMvcikqZSsxLGM9cik6aSs9MDxyPyhlPXIvYykqZTpyO3JldHVybiBjPT09SW5maW5pdHk\/SW5maW5pdHk6YypNYXRoLnNxcnQoaSl9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApLGk9TWF0aC5pbXVsO2UoZS5TK2UuRipyKDMpKGZ1bmN0aW9uKCl7cmV0dXJuLTUhPWkoNDI5NDk2NzI5NSw1KXx8MiE9aS5sZW5ndGh9KSwiTWF0aCIse2ltdWw6ZnVuY3Rpb24gaW11bCh0LG4pe3ZhciByPTY1NTM1LGU9K3QsaT0rbixvPXImZSx1PXImaTtyZXR1cm4gMHxvKnUrKChyJmU+Pj4xNikqdStvKihyJmk+Pj4xNik8PDE2Pj4+MCl9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApO2UoZS5TLCJNYXRoIix7bG9nMTA6ZnVuY3Rpb24gbG9nMTAodCl7cmV0dXJuIE1hdGgubG9nKHQpKk1hdGguTE9HMTBFfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKTtlKGUuUywiTWF0aCIse2xvZzFwOnIoMTA2KX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKTtlKGUuUywiTWF0aCIse2xvZzI6ZnVuY3Rpb24gbG9nMih0KXtyZXR1cm4gTWF0aC5sb2codCkvTWF0aC5MTjJ9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApO2UoZS5TLCJNYXRoIix7c2lnbjpyKDc1KX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxpPXIoNzYpLG89TWF0aC5leHA7ZShlLlMrZS5GKnIoMykoZnVuY3Rpb24oKXtyZXR1cm4tMmUtMTchPSFNYXRoLnNpbmgoLTJlLTE3KX0pLCJNYXRoIix7c2luaDpmdW5jdGlvbiBzaW5oKHQpe3JldHVybiBNYXRoLmFicyh0PSt0KTwxPyhpKHQpLWkoLXQpKS8yOihvKHQtMSktbygtdC0xKSkqKE1hdGguRS8yKX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDc2KSxvPU1hdGguZXhwO2UoZS5TLCJNYXRoIix7dGFuaDpmdW5jdGlvbiB0YW5oKHQpe3ZhciBuPWkodD0rdCkscj1pKC10KTtyZXR1cm4gbj09SW5maW5pdHk\/MTpyPT1JbmZpbml0eT8tMToobi1yKS8obyh0KStvKC10KSl9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApO2UoZS5TLCJNYXRoIix7dHJ1bmM6ZnVuY3Rpb24gdHJ1bmModCl7cmV0dXJuKDA8dD9NYXRoLmZsb29yOk1hdGguY2VpbCkodCl9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApLG89cigzNSksdT1TdHJpbmcuZnJvbUNoYXJDb2RlLGk9U3RyaW5nLmZyb21Db2RlUG9pbnQ7ZShlLlMrZS5GKighIWkmJjEhPWkubGVuZ3RoKSwiU3RyaW5nIix7ZnJvbUNvZGVQb2ludDpmdW5jdGlvbiBmcm9tQ29kZVBvaW50KHQpe2Zvcih2YXIgbixyPVtdLGU9YXJndW1lbnRzLmxlbmd0aCxpPTA7aTxlOyl7aWYobj0rYXJndW1lbnRzW2krK10sbyhuLDExMTQxMTEpIT09bil0aHJvdyBSYW5nZUVycm9yKG4rIiBpcyBub3QgYSB2YWxpZCBjb2RlIHBvaW50Iik7ci5wdXNoKG48NjU1MzY\/dShuKTp1KDU1Mjk2Kygobi09NjU1MzYpPj4xMCksbiUxMDI0KzU2MzIwKSl9cmV0dXJuIHIuam9pbigiIil9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApLHU9cigxNSksYz1yKDYpO2UoZS5TLCJTdHJpbmciLHtyYXc6ZnVuY3Rpb24gcmF3KHQpe2Zvcih2YXIgbj11KHQucmF3KSxyPWMobi5sZW5ndGgpLGU9YXJndW1lbnRzLmxlbmd0aCxpPVtdLG89MDtvPHI7KWkucHVzaChTdHJpbmcobltvKytdKSksbzxlJiZpLnB1c2goU3RyaW5nKGFyZ3VtZW50c1tvXSkpO3JldHVybiBpLmpvaW4oIiIpfX0pfSxmdW5jdGlvbih0LG4scil7cig0NSkoInRyaW0iLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbiB0cmltKCl7cmV0dXJuIHQodGhpcywzKX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDU1KSghMSk7ZShlLlAsIlN0cmluZyIse2NvZGVQb2ludEF0OmZ1bmN0aW9uIGNvZGVQb2ludEF0KHQpe3JldHVybiBpKHRoaXMsdCl9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApLHU9cig2KSxjPXIoNzcpLGE9ImVuZHNXaXRoIixmPSIiW2FdO2UoZS5QK2UuRipyKDc4KShhKSwiU3RyaW5nIix7ZW5kc1dpdGg6ZnVuY3Rpb24gZW5kc1dpdGgodCl7dmFyIG49Yyh0aGlzLHQsYSkscj0xPGFyZ3VtZW50cy5sZW5ndGg\/YXJndW1lbnRzWzFdOkp0LGU9dShuLmxlbmd0aCksaT1yPT09SnQ\/ZTpNYXRoLm1pbih1KHIpLGUpLG89U3RyaW5nKHQpO3JldHVybiBmP2YuY2FsbChuLG8saSk6bi5zbGljZShpLW8ubGVuZ3RoLGkpPT09b319KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDc3KSxvPSJpbmNsdWRlcyI7ZShlLlArZS5GKnIoNzgpKG8pLCJTdHJpbmciLHtpbmNsdWRlczpmdW5jdGlvbiBpbmNsdWRlcyh0KXtyZXR1cm4hIX5pKHRoaXMsdCxvKS5pbmRleE9mKHQsMTxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1sxXTpKdCl9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApO2UoZS5QLCJTdHJpbmciLHtyZXBlYXQ6cig3NCl9KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDYpLG89cig3NyksdT0ic3RhcnRzV2l0aCIsYz0iIlt1XTtlKGUuUCtlLkYqcig3OCkodSksIlN0cmluZyIse3N0YXJ0c1dpdGg6ZnVuY3Rpb24gc3RhcnRzV2l0aCh0KXt2YXIgbj1vKHRoaXMsdCx1KSxyPWkoTWF0aC5taW4oMTxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1sxXTpKdCxuLmxlbmd0aCkpLGU9U3RyaW5nKHQpO3JldHVybiBjP2MuY2FsbChuLGUscik6bi5zbGljZShyLHIrZS5sZW5ndGgpPT09ZX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoNTUpKCEwKTtyKDc5KShTdHJpbmcsIlN0cmluZyIsZnVuY3Rpb24odCl7dGhpcy5fdD1TdHJpbmcodCksdGhpcy5faT0wfSxmdW5jdGlvbigpe3ZhciB0LG49dGhpcy5fdCxyPXRoaXMuX2k7cmV0dXJuIG4ubGVuZ3RoPD1yP3t2YWx1ZTpKdCxkb25lOiEwfToodD1lKG4sciksdGhpcy5faSs9dC5sZW5ndGgse3ZhbHVlOnQsZG9uZTohMX0pfSl9LGZ1bmN0aW9uKHQsbixyKXtyKDEzKSgiYW5jaG9yIixmdW5jdGlvbihuKXtyZXR1cm4gZnVuY3Rpb24gYW5jaG9yKHQpe3JldHVybiBuKHRoaXMsImEiLCJuYW1lIix0KX19KX0sZnVuY3Rpb24odCxuLHIpe3IoMTMpKCJiaWciLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbiBiaWcoKXtyZXR1cm4gdCh0aGlzLCJiaWciLCIiLCIiKX19KX0sZnVuY3Rpb24odCxuLHIpe3IoMTMpKCJibGluayIsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uIGJsaW5rKCl7cmV0dXJuIHQodGhpcywiYmxpbmsiLCIiLCIiKX19KX0sZnVuY3Rpb24odCxuLHIpe3IoMTMpKCJib2xkIixmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24gYm9sZCgpe3JldHVybiB0KHRoaXMsImIiLCIiLCIiKX19KX0sZnVuY3Rpb24odCxuLHIpe3IoMTMpKCJmaXhlZCIsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uIGZpeGVkKCl7cmV0dXJuIHQodGhpcywidHQiLCIiLCIiKX19KX0sZnVuY3Rpb24odCxuLHIpe3IoMTMpKCJmb250Y29sb3IiLGZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbiBmb250Y29sb3IodCl7cmV0dXJuIG4odGhpcywiZm9udCIsImNvbG9yIix0KX19KX0sZnVuY3Rpb24odCxuLHIpe3IoMTMpKCJmb250c2l6ZSIsZnVuY3Rpb24obil7cmV0dXJuIGZ1bmN0aW9uIGZvbnRzaXplKHQpe3JldHVybiBuKHRoaXMsImZvbnQiLCJzaXplIix0KX19KX0sZnVuY3Rpb24odCxuLHIpe3IoMTMpKCJpdGFsaWNzIixmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24gaXRhbGljcygpe3JldHVybiB0KHRoaXMsImkiLCIiLCIiKX19KX0sZnVuY3Rpb24odCxuLHIpe3IoMTMpKCJsaW5rIixmdW5jdGlvbihuKXtyZXR1cm4gZnVuY3Rpb24gbGluayh0KXtyZXR1cm4gbih0aGlzLCJhIiwiaHJlZiIsdCl9fSl9LGZ1bmN0aW9uKHQsbixyKXtyKDEzKSgic21hbGwiLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbiBzbWFsbCgpe3JldHVybiB0KHRoaXMsInNtYWxsIiwiIiwiIil9fSl9LGZ1bmN0aW9uKHQsbixyKXtyKDEzKSgic3RyaWtlIixmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24gc3RyaWtlKCl7cmV0dXJuIHQodGhpcywic3RyaWtlIiwiIiwiIil9fSl9LGZ1bmN0aW9uKHQsbixyKXtyKDEzKSgic3ViIixmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24gc3ViKCl7cmV0dXJuIHQodGhpcywic3ViIiwiIiwiIil9fSl9LGZ1bmN0aW9uKHQsbixyKXtyKDEzKSgic3VwIixmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24gc3VwKCl7cmV0dXJuIHQodGhpcywic3VwIiwiIiwiIil9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApO2UoZS5TLCJBcnJheSIse2lzQXJyYXk6cig1NCl9KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBoPXIoMTgpLGU9cigwKSxwPXIoOSksdj1yKDEwOCksZz1yKDgxKSx5PXIoNiksZD1yKDgyKSxiPXIoODMpO2UoZS5TK2UuRiohcig1NykoZnVuY3Rpb24odCl7QXJyYXkuZnJvbSh0KX0pLCJBcnJheSIse2Zyb206ZnVuY3Rpb24gZnJvbSh0KXt2YXIgbixyLGUsaSxvPXAodCksdT0iZnVuY3Rpb24iPT10eXBlb2YgdGhpcz90aGlzOkFycmF5LGM9YXJndW1lbnRzLmxlbmd0aCxhPTE8Yz9hcmd1bWVudHNbMV06SnQsZj1hIT09SnQscz0wLGw9YihvKTtpZihmJiYoYT1oKGEsMjxjP2FyZ3VtZW50c1syXTpKdCwyKSksbD09SnR8fHU9PUFycmF5JiZnKGwpKWZvcihyPW5ldyB1KG49eShvLmxlbmd0aCkpO3M8bjtzKyspZChyLHMsZj9hKG9bc10scyk6b1tzXSk7ZWxzZSBmb3IoaT1sLmNhbGwobykscj1uZXcgdTshKGU9aS5uZXh0KCkpLmRvbmU7cysrKWQocixzLGY\/dihpLGEsW2UudmFsdWUsc10sITApOmUudmFsdWUpO3JldHVybiByLmxlbmd0aD1zLHJ9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApLGk9cig4Mik7ZShlLlMrZS5GKnIoMykoZnVuY3Rpb24oKXtmdW5jdGlvbiBGKCl7fXJldHVybiEoQXJyYXkub2YuY2FsbChGKWluc3RhbmNlb2YgRil9KSwiQXJyYXkiLHtvZjpmdW5jdGlvbiBvZigpe2Zvcih2YXIgdD0wLG49YXJndW1lbnRzLmxlbmd0aCxyPW5ldygiZnVuY3Rpb24iPT10eXBlb2YgdGhpcz90aGlzOkFycmF5KShuKTt0PG47KWkocix0LGFyZ3VtZW50c1t0KytdKTtyZXR1cm4gci5sZW5ndGg9bixyfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxpPXIoMTUpLG89W10uam9pbjtlKGUuUCtlLkYqKHIoNDgpIT1PYmplY3R8fCFyKDIxKShvKSksIkFycmF5Iix7am9pbjpmdW5jdGlvbiBqb2luKHQpe3JldHVybiBvLmNhbGwoaSh0aGlzKSx0PT09SnQ\/IiwiOnQpfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxpPXIoNzApLGY9cigxOSkscz1yKDM1KSxsPXIoNiksaD1bXS5zbGljZTtlKGUuUCtlLkYqcigzKShmdW5jdGlvbigpe2kmJmguY2FsbChpKX0pLCJBcnJheSIse3NsaWNlOmZ1bmN0aW9uIHNsaWNlKHQsbil7dmFyIHI9bCh0aGlzLmxlbmd0aCksZT1mKHRoaXMpO2lmKG49bj09PUp0P3I6biwiQXJyYXkiPT1lKXJldHVybiBoLmNhbGwodGhpcyx0LG4pO2Zvcih2YXIgaT1zKHQsciksbz1zKG4sciksdT1sKG8taSksYz1uZXcgQXJyYXkodSksYT0wO2E8dTthKyspY1thXT0iU3RyaW5nIj09ZT90aGlzLmNoYXJBdChpK2EpOnRoaXNbaSthXTtyZXR1cm4gY319KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDEwKSxvPXIoOSksdT1yKDMpLGM9W10uc29ydCxhPVsxLDIsM107ZShlLlArZS5GKih1KGZ1bmN0aW9uKCl7YS5zb3J0KEp0KX0pfHwhdShmdW5jdGlvbigpe2Euc29ydChudWxsKX0pfHwhcigyMSkoYykpLCJBcnJheSIse3NvcnQ6ZnVuY3Rpb24gc29ydCh0KXtyZXR1cm4gdD09PUp0P2MuY2FsbChvKHRoaXMpKTpjLmNhbGwobyh0aGlzKSxpKHQpKX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDI1KSgwKSxvPXIoMjEpKFtdLmZvckVhY2gsITApO2UoZS5QK2UuRiohbywiQXJyYXkiLHtmb3JFYWNoOmZ1bmN0aW9uIGZvckVhY2godCl7cmV0dXJuIGkodGhpcyx0LGFyZ3VtZW50c1sxXSl9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDQpLGk9cig1NCksbz1yKDUpKCJzcGVjaWVzIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBuO3JldHVybiBpKHQpJiYoImZ1bmN0aW9uIiE9dHlwZW9mKG49dC5jb25zdHJ1Y3Rvcil8fG4hPT1BcnJheSYmIWkobi5wcm90b3R5cGUpfHwobj1KdCksZShuKSYmbnVsbD09PShuPW5bb10pJiYobj1KdCkpLG49PT1KdD9BcnJheTpufX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDI1KSgxKTtlKGUuUCtlLkYqIXIoMjEpKFtdLm1hcCwhMCksIkFycmF5Iix7bWFwOmZ1bmN0aW9uIG1hcCh0KXtyZXR1cm4gaSh0aGlzLHQsYXJndW1lbnRzWzFdKX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDI1KSgyKTtlKGUuUCtlLkYqIXIoMjEpKFtdLmZpbHRlciwhMCksIkFycmF5Iix7ZmlsdGVyOmZ1bmN0aW9uIGZpbHRlcih0KXtyZXR1cm4gaSh0aGlzLHQsYXJndW1lbnRzWzFdKX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDI1KSgzKTtlKGUuUCtlLkYqIXIoMjEpKFtdLnNvbWUsITApLCJBcnJheSIse3NvbWU6ZnVuY3Rpb24gc29tZSh0KXtyZXR1cm4gaSh0aGlzLHQsYXJndW1lbnRzWzFdKX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDI1KSg0KTtlKGUuUCtlLkYqIXIoMjEpKFtdLmV2ZXJ5LCEwKSwiQXJyYXkiLHtldmVyeTpmdW5jdGlvbiBldmVyeSh0KXtyZXR1cm4gaSh0aGlzLHQsYXJndW1lbnRzWzFdKX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDEwOSk7ZShlLlArZS5GKiFyKDIxKShbXS5yZWR1Y2UsITApLCJBcnJheSIse3JlZHVjZTpmdW5jdGlvbiByZWR1Y2UodCl7cmV0dXJuIGkodGhpcyx0LGFyZ3VtZW50cy5sZW5ndGgsYXJndW1lbnRzWzFdLCExKX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDEwOSk7ZShlLlArZS5GKiFyKDIxKShbXS5yZWR1Y2VSaWdodCwhMCksIkFycmF5Iix7cmVkdWNlUmlnaHQ6ZnVuY3Rpb24gcmVkdWNlUmlnaHQodCl7cmV0dXJuIGkodGhpcyx0LGFyZ3VtZW50cy5sZW5ndGgsYXJndW1lbnRzWzFdLCEwKX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDUyKSghMSksbz1bXS5pbmRleE9mLHU9ISFvJiYxL1sxXS5pbmRleE9mKDEsLTApPDA7ZShlLlArZS5GKih1fHwhcigyMSkobykpLCJBcnJheSIse2luZGV4T2Y6ZnVuY3Rpb24gaW5kZXhPZih0KXtyZXR1cm4gdT9vLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8MDppKHRoaXMsdCxhcmd1bWVudHNbMV0pfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxpPXIoMTUpLG89cigyMCksdT1yKDYpLGM9W10ubGFzdEluZGV4T2YsYT0hIWMmJjEvWzFdLmxhc3RJbmRleE9mKDEsLTApPDA7ZShlLlArZS5GKihhfHwhcigyMSkoYykpLCJBcnJheSIse2xhc3RJbmRleE9mOmZ1bmN0aW9uIGxhc3RJbmRleE9mKHQpe2lmKGEpcmV0dXJuIGMuYXBwbHkodGhpcyxhcmd1bWVudHMpfHwwO3ZhciBuPWkodGhpcykscj11KG4ubGVuZ3RoKSxlPXItMTtmb3IoMTxhcmd1bWVudHMubGVuZ3RoJiYoZT1NYXRoLm1pbihlLG8oYXJndW1lbnRzWzFdKSkpLGU8MCYmKGU9citlKTswPD1lO2UtLSlpZihlIGluIG4mJm5bZV09PT10KXJldHVybiBlfHwwO3JldHVybi0xfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKTtlKGUuUCwiQXJyYXkiLHtjb3B5V2l0aGluOnIoMTEwKX0pLHIoMzEpKCJjb3B5V2l0aGluIil9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApO2UoZS5QLCJBcnJheSIse2ZpbGw6cig4NSl9KSxyKDMxKSgiZmlsbCIpfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxpPXIoMjUpKDUpLG89ImZpbmQiLHU9ITA7byBpbltdJiZBcnJheSgxKVtvXShmdW5jdGlvbigpe3U9ITF9KSxlKGUuUCtlLkYqdSwiQXJyYXkiLHtmaW5kOmZ1bmN0aW9uIGZpbmQodCl7cmV0dXJuIGkodGhpcyx0LDE8YXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbMV06SnQpfX0pLHIoMzEpKG8pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxpPXIoMjUpKDYpLG89ImZpbmRJbmRleCIsdT0hMDtvIGluW10mJkFycmF5KDEpW29dKGZ1bmN0aW9uKCl7dT0hMX0pLGUoZS5QK2UuRip1LCJBcnJheSIse2ZpbmRJbmRleDpmdW5jdGlvbiBmaW5kSW5kZXgodCl7cmV0dXJuIGkodGhpcyx0LDE8YXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbMV06SnQpfX0pLHIoMzEpKG8pfSxmdW5jdGlvbih0LG4scil7cigzOCkoIkFycmF5Iil9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDIpLG89cig3MiksaT1yKDgpLmYsdT1yKDM3KS5mLGM9cig1NiksYT1yKDUwKSxmPWUuUmVnRXhwLHM9ZixsPWYucHJvdG90eXBlLGg9L2EvZyxwPS9hL2csdj1uZXcgZihoKSE9PWg7aWYocig3KSYmKCF2fHxyKDMpKGZ1bmN0aW9uKCl7cmV0dXJuIHBbcig1KSgibWF0Y2giKV09ITEsZihoKSE9aHx8ZihwKT09cHx8Ii9hL2kiIT1mKGgsImkiKX0pKSl7Zj1mdW5jdGlvbiBSZWdFeHAodCxuKXt2YXIgcj10aGlzIGluc3RhbmNlb2YgZixlPWModCksaT1uPT09SnQ7cmV0dXJuIXImJmUmJnQuY29uc3RydWN0b3I9PT1mJiZpP3Q6byh2P25ldyBzKGUmJiFpP3Quc291cmNlOnQsbik6cygoZT10IGluc3RhbmNlb2YgZik\/dC5zb3VyY2U6dCxlJiZpP2EuY2FsbCh0KTpuKSxyP3RoaXM6bCxmKX07Zm9yKHZhciBnPWZ1bmN0aW9uKG4pe24gaW4gZnx8aShmLG4se2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gc1tuXX0sc2V0OmZ1bmN0aW9uKHQpe3Nbbl09dH19KX0seT11KHMpLGQ9MDtkPHkubGVuZ3RoOylnKHlbZCsrXSk7KGwuY29uc3RydWN0b3I9ZikucHJvdG90eXBlPWwscigxMikoZSwiUmVnRXhwIixmKX1yKDM4KSgiUmVnRXhwIil9LGZ1bmN0aW9uKHQsbixyKXtyKDExMyk7dmFyIGU9cigxKSxpPXIoNTApLG89cig3KSx1PSJ0b1N0cmluZyIsYz0vLi9bdV0sYT1mdW5jdGlvbih0KXtyKDEyKShSZWdFeHAucHJvdG90eXBlLHUsdCwhMCl9O3IoMykoZnVuY3Rpb24oKXtyZXR1cm4iL2EvYiIhPWMuY2FsbCh7c291cmNlOiJhIixmbGFnczoiYiJ9KX0pP2EoZnVuY3Rpb24gdG9TdHJpbmcoKXt2YXIgdD1lKHRoaXMpO3JldHVybiIvIi5jb25jYXQodC5zb3VyY2UsIi8iLCJmbGFncyJpbiB0P3QuZmxhZ3M6IW8mJnQgaW5zdGFuY2VvZiBSZWdFeHA\/aS5jYWxsKHQpOkp0KX0pOmMubmFtZSE9dSYmYShmdW5jdGlvbiB0b1N0cmluZygpe3JldHVybiBjLmNhbGwodGhpcyl9KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBsPXIoMSksaD1yKDYpLHA9cig4OCksdj1yKDU4KTtyKDU5KSgibWF0Y2giLDEsZnVuY3Rpb24oZSxpLGYscyl7cmV0dXJuW2Z1bmN0aW9uIG1hdGNoKHQpe3ZhciBuPWUodGhpcykscj10PT1KdD9KdDp0W2ldO3JldHVybiByIT09SnQ\/ci5jYWxsKHQsbik6bmV3IFJlZ0V4cCh0KVtpXShTdHJpbmcobikpfSxmdW5jdGlvbih0KXt2YXIgbj1zKGYsdCx0aGlzKTtpZihuLmRvbmUpcmV0dXJuIG4udmFsdWU7dmFyIHI9bCh0KSxlPVN0cmluZyh0aGlzKTtpZighci5nbG9iYWwpcmV0dXJuIHYocixlKTtmb3IodmFyIGksbz1yLnVuaWNvZGUsdT1bXSxjPXIubGFzdEluZGV4PTA7bnVsbCE9PShpPXYocixlKSk7KXt2YXIgYT1TdHJpbmcoaVswXSk7IiI9PT0odVtjXT1hKSYmKHIubGFzdEluZGV4PXAoZSxoKHIubGFzdEluZGV4KSxvKSksYysrfXJldHVybiAwPT09Yz9udWxsOnV9XX0pfSxmdW5jdGlvbih0LG4scil7dmFyIHc9cigxKSxlPXIoOSksRT1yKDYpLE89cigyMCksTT1yKDg4KSxJPXIoNTgpLFA9TWF0aC5tYXgsRj1NYXRoLm1pbixoPU1hdGguZmxvb3IscD0vXCQoWyQmYCddfFxkXGQ\/fDxbXj5dKj4pL2csdj0vXCQoWyQmYCddfFxkXGQ\/KS9nO3IoNTkpKCJyZXBsYWNlIiwyLGZ1bmN0aW9uKGksbyx4LG0pe3JldHVybltmdW5jdGlvbiByZXBsYWNlKHQsbil7dmFyIHI9aSh0aGlzKSxlPXQ9PUp0P0p0OnRbb107cmV0dXJuIGUhPT1KdD9lLmNhbGwodCxyLG4pOnguY2FsbChTdHJpbmcociksdCxuKX0sZnVuY3Rpb24odCxuKXt2YXIgcj1tKHgsdCx0aGlzLG4pO2lmKHIuZG9uZSlyZXR1cm4gci52YWx1ZTt2YXIgZT13KHQpLGk9U3RyaW5nKHRoaXMpLG89ImZ1bmN0aW9uIj09dHlwZW9mIG47b3x8KG49U3RyaW5nKG4pKTt2YXIgdT1lLmdsb2JhbDtpZih1KXt2YXIgYz1lLnVuaWNvZGU7ZS5sYXN0SW5kZXg9MH1mb3IodmFyIGE9W107Oyl7dmFyIGY9SShlLGkpO2lmKA0KbnVsbD09PWYpYnJlYWs7aWYoYS5wdXNoKGYpLCF1KWJyZWFrOyIiPT09U3RyaW5nKGZbMF0pJiYoZS5sYXN0SW5kZXg9TShpLEUoZS5sYXN0SW5kZXgpLGMpKX1mb3IodmFyIHMsbD0iIixoPTAscD0wO3A8YS5sZW5ndGg7cCsrKXtmPWFbcF07Zm9yKHZhciB2PVN0cmluZyhmWzBdKSxnPVAoRihPKGYuaW5kZXgpLGkubGVuZ3RoKSwwKSx5PVtdLGQ9MTtkPGYubGVuZ3RoO2QrKyl5LnB1c2goKHM9ZltkXSk9PT1KdD9zOlN0cmluZyhzKSk7dmFyIGI9Zi5ncm91cHM7aWYobyl7dmFyIFM9W3ZdLmNvbmNhdCh5LGcsaSk7YiE9PUp0JiZTLnB1c2goYik7dmFyIF89U3RyaW5nKG4uYXBwbHkoSnQsUykpfWVsc2UgXz1nZXRTdWJzdGl0dXRpb24odixpLGcseSxiLG4pO2g8PWcmJihsKz1pLnNsaWNlKGgsZykrXyxoPWcrdi5sZW5ndGgpfXJldHVybiBsK2kuc2xpY2UoaCl9XTtmdW5jdGlvbiBnZXRTdWJzdGl0dXRpb24obyx1LGMsYSxmLHQpe3ZhciBzPWMrby5sZW5ndGgsbD1hLmxlbmd0aCxuPXY7cmV0dXJuIGYhPT1KdCYmKGY9ZShmKSxuPXApLHguY2FsbCh0LG4sZnVuY3Rpb24odCxuKXt2YXIgcjtzd2l0Y2gobi5jaGFyQXQoMCkpe2Nhc2UiJCI6cmV0dXJuIiQiO2Nhc2UiJiI6cmV0dXJuIG87Y2FzZSJgIjpyZXR1cm4gdS5zbGljZSgwLGMpO2Nhc2UiJyI6cmV0dXJuIHUuc2xpY2Uocyk7Y2FzZSI8IjpyPWZbbi5zbGljZSgxLC0xKV07YnJlYWs7ZGVmYXVsdDp2YXIgZT0rbjtpZigwPT09ZSlyZXR1cm4gdDtpZihsPGUpe3ZhciBpPWgoZS8xMCk7cmV0dXJuIDA9PT1pP3Q6aTw9bD9hW2ktMV09PT1KdD9uLmNoYXJBdCgxKTphW2ktMV0rbi5jaGFyQXQoMSk6dH1yPWFbZS0xXX1yZXR1cm4gcj09PUp0PyIiOnJ9KX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBhPXIoMSksZj1yKDk5KSxzPXIoNTgpO3IoNTkpKCJzZWFyY2giLDEsZnVuY3Rpb24oZSxpLHUsYyl7cmV0dXJuW2Z1bmN0aW9uIHNlYXJjaCh0KXt2YXIgbj1lKHRoaXMpLHI9dD09SnQ\/SnQ6dFtpXTtyZXR1cm4gciE9PUp0P3IuY2FsbCh0LG4pOm5ldyBSZWdFeHAodClbaV0oU3RyaW5nKG4pKX0sZnVuY3Rpb24odCl7dmFyIG49Yyh1LHQsdGhpcyk7aWYobi5kb25lKXJldHVybiBuLnZhbHVlO3ZhciByPWEodCksZT1TdHJpbmcodGhpcyksaT1yLmxhc3RJbmRleDtmKGksMCl8fChyLmxhc3RJbmRleD0wKTt2YXIgbz1zKHIsZSk7cmV0dXJuIGYoci5sYXN0SW5kZXgsaSl8fChyLmxhc3RJbmRleD1pKSxudWxsPT09bz8tMTpvLmluZGV4fV19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBzPXIoNTYpLGI9cigxKSxTPXIoNTEpLF89cig4OCkseD1yKDYpLG09cig1OCksbD1yKDg3KSxlPXIoMyksdz1NYXRoLm1pbixoPVtdLnB1c2gsdT0ic3BsaXQiLHA9Imxlbmd0aCIsdj0ibGFzdEluZGV4IixFPTQyOTQ5NjcyOTUsTz0hZShmdW5jdGlvbigpe1JlZ0V4cChFLCJ5Iil9KTtyKDU5KSgic3BsaXQiLDIsZnVuY3Rpb24oaSxvLGcseSl7dmFyIGQ7cmV0dXJuIGQ9ImMiPT0iYWJiYyJbdV0oLyhiKSovKVsxXXx8NCE9InRlc3QiW3VdKC8oPzopLywtMSlbcF18fDIhPSJhYiJbdV0oLyg\/OmFiKSovKVtwXXx8NCE9Ii4iW3VdKC8oLj8pKC4\/KS8pW3BdfHwxPCIuIlt1XSgvKCkoKS8pW3BdfHwiIlt1XSgvLj8vKVtwXT9mdW5jdGlvbih0LG4pe3ZhciByPVN0cmluZyh0aGlzKTtpZih0PT09SnQmJjA9PT1uKXJldHVybltdO2lmKCFzKHQpKXJldHVybiBnLmNhbGwocix0LG4pO2Zvcih2YXIgZSxpLG8sdT1bXSxjPTAsYT1uPT09SnQ\/RTpuPj4+MCxmPW5ldyBSZWdFeHAodC5zb3VyY2UsKHQuaWdub3JlQ2FzZT8iaSI6IiIpKyh0Lm11bHRpbGluZT8ibSI6IiIpKyh0LnVuaWNvZGU\/InUiOiIiKSsodC5zdGlja3k\/InkiOiIiKSsiZyIpOyhlPWwuY2FsbChmLHIpKSYmIShjPChpPWZbdl0pJiYodS5wdXNoKHIuc2xpY2UoYyxlLmluZGV4KSksMTxlW3BdJiZlLmluZGV4PHJbcF0mJmguYXBwbHkodSxlLnNsaWNlKDEpKSxvPWVbMF1bcF0sYz1pLGE8PXVbcF0pKTspZlt2XT09PWUuaW5kZXgmJmZbdl0rKztyZXR1cm4gYz09PXJbcF0\/IW8mJmYudGVzdCgiIil8fHUucHVzaCgiIik6dS5wdXNoKHIuc2xpY2UoYykpLGE8dVtwXT91LnNsaWNlKDAsYSk6dX06IjAiW3VdKEp0LDApW3BdP2Z1bmN0aW9uKHQsbil7cmV0dXJuIHQ9PT1KdCYmMD09PW4\/W106Zy5jYWxsKHRoaXMsdCxuKX06ZyxbZnVuY3Rpb24gc3BsaXQodCxuKXt2YXIgcj1pKHRoaXMpLGU9dD09SnQ\/SnQ6dFtvXTtyZXR1cm4gZSE9PUp0P2UuY2FsbCh0LHIsbik6ZC5jYWxsKFN0cmluZyhyKSx0LG4pfSxmdW5jdGlvbih0LG4pe3ZhciByPXkoZCx0LHRoaXMsbixkIT09Zyk7aWYoci5kb25lKXJldHVybiByLnZhbHVlO3ZhciBlPWIodCksaT1TdHJpbmcodGhpcyksbz1TKGUsUmVnRXhwKSx1PWUudW5pY29kZSxjPW5ldyBvKE8\/ZToiXig\/OiIrZS5zb3VyY2UrIikiLChlLmlnbm9yZUNhc2U\/ImkiOiIiKSsoZS5tdWx0aWxpbmU\/Im0iOiIiKSsoZS51bmljb2RlPyJ1IjoiIikrKE8\/InkiOiJnIikpLGE9bj09PUp0P0U6bj4+PjA7aWYoMD09PWEpcmV0dXJuW107aWYoMD09PWkubGVuZ3RoKXJldHVybiBudWxsPT09bShjLGkpP1tpXTpbXTtmb3IodmFyIGY9MCxzPTAsbD1bXTtzPGkubGVuZ3RoOyl7Yy5sYXN0SW5kZXg9Tz9zOjA7dmFyIGgscD1tKGMsTz9pOmkuc2xpY2UocykpO2lmKG51bGw9PT1wfHwoaD13KHgoYy5sYXN0SW5kZXgrKE8\/MDpzKSksaS5sZW5ndGgpKT09PWYpcz1fKGkscyx1KTtlbHNle2lmKGwucHVzaChpLnNsaWNlKGYscykpLGwubGVuZ3RoPT09YSlyZXR1cm4gbDtmb3IodmFyIHY9MTt2PD1wLmxlbmd0aC0xO3YrKylpZihsLnB1c2gocFt2XSksbC5sZW5ndGg9PT1hKXJldHVybiBsO3M9Zj1ofX1yZXR1cm4gbC5wdXNoKGkuc2xpY2UoZikpLGx9XX0pfSxmdW5jdGlvbih0LG4sZSl7dmFyIHIsaSxvLHUsYz1lKDI5KSxhPWUoMiksZj1lKDE4KSxzPWUoNDQpLGw9ZSgwKSxoPWUoNCkscD1lKDEwKSx2PWUoMzkpLGc9ZSg0MCkseT1lKDUxKSxkPWUoODkpLnNldCxiPWUoOTApKCksUz1lKDkxKSxfPWUoMTE0KSx4PWUoNjApLG09ZSgxMTUpLHc9IlByb21pc2UiLEU9YS5UeXBlRXJyb3IsTz1hLnByb2Nlc3MsTT1PJiZPLnZlcnNpb25zLEk9TSYmTS52OHx8IiIsUD1hW3ddLEY9InByb2Nlc3MiPT1zKE8pLEE9ZnVuY3Rpb24oKXt9LGs9aT1TLmYsTj0hIWZ1bmN0aW9uKCl7dHJ5e3ZhciB0PVAucmVzb2x2ZSgxKSxuPSh0LmNvbnN0cnVjdG9yPXt9KVtlKDUpKCJzcGVjaWVzIildPWZ1bmN0aW9uKHQpe3QoQSxBKX07cmV0dXJuKEZ8fCJmdW5jdGlvbiI9PXR5cGVvZiBQcm9taXNlUmVqZWN0aW9uRXZlbnQpJiZ0LnRoZW4oQSlpbnN0YW5jZW9mIG4mJjAhPT1JLmluZGV4T2YoIjYuNiIpJiYtMT09PXguaW5kZXhPZigiQ2hyb21lLzY2Iil9Y2F0Y2gocil7fX0oKSxqPWZ1bmN0aW9uKHQpe3ZhciBuO3JldHVybiEoIWgodCl8fCJmdW5jdGlvbiIhPXR5cGVvZihuPXQudGhlbikpJiZufSxSPWZ1bmN0aW9uKGwscil7aWYoIWwuX24pe2wuX249ITA7dmFyIGU9bC5fYztiKGZ1bmN0aW9uKCl7Zm9yKHZhciBmPWwuX3Yscz0xPT1sLl9zLHQ9MCxuPWZ1bmN0aW9uKHQpe3ZhciBuLHIsZSxpPXM\/dC5vazp0LmZhaWwsbz10LnJlc29sdmUsdT10LnJlamVjdCxjPXQuZG9tYWluO3RyeXtpPyhzfHwoMj09bC5faCYmRChsKSxsLl9oPTEpLCEwPT09aT9uPWY6KGMmJmMuZW50ZXIoKSxuPWkoZiksYyYmKGMuZXhpdCgpLGU9ITApKSxuPT09dC5wcm9taXNlP3UoRSgiUHJvbWlzZS1jaGFpbiBjeWNsZSIpKToocj1qKG4pKT9yLmNhbGwobixvLHUpOm8obikpOnUoZil9Y2F0Y2goYSl7YyYmIWUmJmMuZXhpdCgpLHUoYSl9fTt0PGUubGVuZ3RoOyluKGVbdCsrXSk7bC5fYz1bXSxsLl9uPSExLHImJiFsLl9oJiZUKGwpfSl9fSxUPWZ1bmN0aW9uKG8pe2QuY2FsbChhLGZ1bmN0aW9uKCl7dmFyIHQsbixyLGU9by5fdixpPUwobyk7aWYoaSYmKHQ9XyhmdW5jdGlvbigpe0Y\/Ty5lbWl0KCJ1bmhhbmRsZWRSZWplY3Rpb24iLGUsbyk6KG49YS5vbnVuaGFuZGxlZHJlamVjdGlvbik\/bih7cHJvbWlzZTpvLHJlYXNvbjplfSk6KHI9YS5jb25zb2xlKSYmci5lcnJvciYmci5lcnJvcigiVW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uIixlKX0pLG8uX2g9Rnx8TChvKT8yOjEpLG8uX2E9SnQsaSYmdC5lKXRocm93IHQudn0pfSxMPWZ1bmN0aW9uKHQpe3JldHVybiAxIT09dC5faCYmMD09PSh0Ll9hfHx0Ll9jKS5sZW5ndGh9LEQ9ZnVuY3Rpb24obil7ZC5jYWxsKGEsZnVuY3Rpb24oKXt2YXIgdDtGP08uZW1pdCgicmVqZWN0aW9uSGFuZGxlZCIsbik6KHQ9YS5vbnJlamVjdGlvbmhhbmRsZWQpJiZ0KHtwcm9taXNlOm4scmVhc29uOm4uX3Z9KX0pfSxDPWZ1bmN0aW9uKHQpe3ZhciBuPXRoaXM7bi5fZHx8KG4uX2Q9ITAsKG49bi5fd3x8bikuX3Y9dCxuLl9zPTIsbi5fYXx8KG4uX2E9bi5fYy5zbGljZSgpKSxSKG4sITApKX0sVT1mdW5jdGlvbihyKXt2YXIgZSxpPXRoaXM7aWYoIWkuX2Qpe2kuX2Q9ITAsaT1pLl93fHxpO3RyeXtpZihpPT09cil0aHJvdyBFKCJQcm9taXNlIGNhbid0IGJlIHJlc29sdmVkIGl0c2VsZiIpOyhlPWoocikpP2IoZnVuY3Rpb24oKXt2YXIgdD17X3c6aSxfZDohMX07dHJ5e2UuY2FsbChyLGYoVSx0LDEpLGYoQyx0LDEpKX1jYXRjaChuKXtDLmNhbGwodCxuKX19KTooaS5fdj1yLGkuX3M9MSxSKGksITEpKX1jYXRjaCh0KXtDLmNhbGwoe193OmksX2Q6ITF9LHQpfX19O058fChQPWZ1bmN0aW9uIFByb21pc2UodCl7dih0aGlzLFAsdywiX2giKSxwKHQpLHIuY2FsbCh0aGlzKTt0cnl7dChmKFUsdGhpcywxKSxmKEMsdGhpcywxKSl9Y2F0Y2gobil7Qy5jYWxsKHRoaXMsbil9fSwocj1mdW5jdGlvbiBQcm9taXNlKHQpe3RoaXMuX2M9W10sdGhpcy5fYT1KdCx0aGlzLl9zPTAsdGhpcy5fZD0hMSx0aGlzLl92PUp0LHRoaXMuX2g9MCx0aGlzLl9uPSExfSkucHJvdG90eXBlPWUoNDEpKFAucHJvdG90eXBlLHt0aGVuOmZ1bmN0aW9uIHRoZW4odCxuKXt2YXIgcj1rKHkodGhpcyxQKSk7cmV0dXJuIHIub2s9ImZ1bmN0aW9uIiE9dHlwZW9mIHR8fHQsci5mYWlsPSJmdW5jdGlvbiI9PXR5cGVvZiBuJiZuLHIuZG9tYWluPUY\/Ty5kb21haW46SnQsdGhpcy5fYy5wdXNoKHIpLHRoaXMuX2EmJnRoaXMuX2EucHVzaChyKSx0aGlzLl9zJiZSKHRoaXMsITEpLHIucHJvbWlzZX0sImNhdGNoIjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy50aGVuKEp0LHQpfX0pLG89ZnVuY3Rpb24oKXt2YXIgdD1uZXcgcjt0aGlzLnByb21pc2U9dCx0aGlzLnJlc29sdmU9ZihVLHQsMSksdGhpcy5yZWplY3Q9ZihDLHQsMSl9LFMuZj1rPWZ1bmN0aW9uKHQpe3JldHVybiB0PT09UHx8dD09PXU\/bmV3IG8odCk6aSh0KX0pLGwobC5HK2wuVytsLkYqIU4se1Byb21pc2U6UH0pLGUoNDMpKFAsdyksZSgzOCkodyksdT1lKDI2KVt3XSxsKGwuUytsLkYqIU4sdyx7cmVqZWN0OmZ1bmN0aW9uIHJlamVjdCh0KXt2YXIgbj1rKHRoaXMpO3JldHVybigwLG4ucmVqZWN0KSh0KSxuLnByb21pc2V9fSksbChsLlMrbC5GKihjfHwhTiksdyx7cmVzb2x2ZTpmdW5jdGlvbiByZXNvbHZlKHQpe3JldHVybiBtKGMmJnRoaXM9PT11P1A6dGhpcyx0KX19KSxsKGwuUytsLkYqIShOJiZlKDU3KShmdW5jdGlvbih0KXtQLmFsbCh0KVsiY2F0Y2giXShBKX0pKSx3LHthbGw6ZnVuY3Rpb24gYWxsKHQpe3ZhciB1PXRoaXMsbj1rKHUpLGM9bi5yZXNvbHZlLGE9bi5yZWplY3Qscj1fKGZ1bmN0aW9uKCl7dmFyIGU9W10saT0wLG89MTtnKHQsITEsZnVuY3Rpb24odCl7dmFyIG49aSsrLHI9ITE7ZS5wdXNoKEp0KSxvKyssdS5yZXNvbHZlKHQpLnRoZW4oZnVuY3Rpb24odCl7cnx8KHI9ITAsZVtuXT10LC0tb3x8YyhlKSl9LGEpfSksLS1vfHxjKGUpfSk7cmV0dXJuIHIuZSYmYShyLnYpLG4ucHJvbWlzZX0scmFjZTpmdW5jdGlvbiByYWNlKHQpe3ZhciBuPXRoaXMscj1rKG4pLGU9ci5yZWplY3QsaT1fKGZ1bmN0aW9uKCl7Zyh0LCExLGZ1bmN0aW9uKHQpe24ucmVzb2x2ZSh0KS50aGVuKHIucmVzb2x2ZSxlKX0pfSk7cmV0dXJuIGkuZSYmZShpLnYpLHIucHJvbWlzZX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMTIwKSxpPXIoNDIpLG89IldlYWtTZXQiO3IoNjEpKG8sZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uIFdlYWtTZXQoKXtyZXR1cm4gdCh0aGlzLDA8YXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbMF06SnQpfX0se2FkZDpmdW5jdGlvbiBhZGQodCl7cmV0dXJuIGUuZGVmKGkodGhpcyxvKSx0LCEwKX19LGUsITEsITApfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxvPXIoMTApLHU9cigxKSxjPShyKDIpLlJlZmxlY3R8fHt9KS5hcHBseSxhPUZ1bmN0aW9uLmFwcGx5O2UoZS5TK2UuRiohcigzKShmdW5jdGlvbigpe2MoZnVuY3Rpb24oKXt9KX0pLCJSZWZsZWN0Iix7YXBwbHk6ZnVuY3Rpb24gYXBwbHkodCxuLHIpe3ZhciBlPW8odCksaT11KHIpO3JldHVybiBjP2MoZSxuLGkpOmEuY2FsbChlLG4saSl9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApLGM9cigzNiksYT1yKDEwKSxmPXIoMSkscz1yKDQpLGk9cigzKSxsPXIoMTAwKSxoPShyKDIpLlJlZmxlY3R8fHt9KS5jb25zdHJ1Y3QscD1pKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gRigpe31yZXR1cm4hKGgoZnVuY3Rpb24oKXt9LFtdLEYpaW5zdGFuY2VvZiBGKX0pLHY9IWkoZnVuY3Rpb24oKXtoKGZ1bmN0aW9uKCl7fSl9KTtlKGUuUytlLkYqKHB8fHYpLCJSZWZsZWN0Iix7Y29uc3RydWN0OmZ1bmN0aW9uIGNvbnN0cnVjdCh0LG4pe2EodCksZihuKTt2YXIgcj1hcmd1bWVudHMubGVuZ3RoPDM\/dDphKGFyZ3VtZW50c1syXSk7aWYodiYmIXApcmV0dXJuIGgodCxuLHIpO2lmKHQ9PXIpe3N3aXRjaChuLmxlbmd0aCl7Y2FzZSAwOnJldHVybiBuZXcgdDtjYXNlIDE6cmV0dXJuIG5ldyB0KG5bMF0pO2Nhc2UgMjpyZXR1cm4gbmV3IHQoblswXSxuWzFdKTtjYXNlIDM6cmV0dXJuIG5ldyB0KG5bMF0sblsxXSxuWzJdKTtjYXNlIDQ6cmV0dXJuIG5ldyB0KG5bMF0sblsxXSxuWzJdLG5bM10pfXZhciBlPVtudWxsXTtyZXR1cm4gZS5wdXNoLmFwcGx5KGUsbiksbmV3KGwuYXBwbHkodCxlKSl9dmFyIGk9ci5wcm90b3R5cGUsbz1jKHMoaSk\/aTpPYmplY3QucHJvdG90eXBlKSx1PUZ1bmN0aW9uLmFwcGx5LmNhbGwodCxvLG4pO3JldHVybiBzKHUpP3U6b319KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBpPXIoOCksZT1yKDApLG89cigxKSx1PXIoMjIpO2UoZS5TK2UuRipyKDMpKGZ1bmN0aW9uKCl7UmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShpLmYoe30sMSx7dmFsdWU6MX0pLDEse3ZhbHVlOjJ9KX0pLCJSZWZsZWN0Iix7ZGVmaW5lUHJvcGVydHk6ZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkodCxuLHIpe28odCksbj11KG4sITApLG8ocik7dHJ5e3JldHVybiBpLmYodCxuLHIpLCEwfWNhdGNoKGUpe3JldHVybiExfX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDE2KS5mLG89cigxKTtlKGUuUywiUmVmbGVjdCIse2RlbGV0ZVByb3BlcnR5OmZ1bmN0aW9uIGRlbGV0ZVByb3BlcnR5KHQsbil7dmFyIHI9aShvKHQpLG4pO3JldHVybiEociYmIXIuY29uZmlndXJhYmxlKSYmZGVsZXRlIHRbbl19fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApLGk9cigxKSxvPWZ1bmN0aW9uKHQpe3RoaXMuX3Q9aSh0KSx0aGlzLl9pPTA7dmFyIG4scj10aGlzLl9rPVtdO2ZvcihuIGluIHQpci5wdXNoKG4pfTtyKDgwKShvLCJPYmplY3QiLGZ1bmN0aW9uKCl7dmFyIHQsbj10aGlzLl9rO2Rve2lmKG4ubGVuZ3RoPD10aGlzLl9pKXJldHVybnt2YWx1ZTpKdCxkb25lOiEwfX13aGlsZSghKCh0PW5bdGhpcy5faSsrXSlpbiB0aGlzLl90KSk7cmV0dXJue3ZhbHVlOnQsZG9uZTohMX19KSxlKGUuUywiUmVmbGVjdCIse2VudW1lcmF0ZTpmdW5jdGlvbiBlbnVtZXJhdGUodCl7cmV0dXJuIG5ldyBvKHQpfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIG89cigxNiksdT1yKDE3KSxjPXIoMTQpLGU9cigwKSxhPXIoNCksZj1yKDEpO2UoZS5TLCJSZWZsZWN0Iix7Z2V0OmZ1bmN0aW9uIGdldCh0LG4pe3ZhciByLGUsaT1hcmd1bWVudHMubGVuZ3RoPDM\/dDphcmd1bWVudHNbMl07cmV0dXJuIGYodCk9PT1pP3Rbbl06KHI9by5mKHQsbikpP2MociwidmFsdWUiKT9yLnZhbHVlOnIuZ2V0IT09SnQ\/ci5nZXQuY2FsbChpKTpKdDphKGU9dSh0KSk\/Z2V0KGUsbixpKTp2b2lkIDB9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDE2KSxpPXIoMCksbz1yKDEpO2koaS5TLCJSZWZsZWN0Iix7Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOmZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pe3JldHVybiBlLmYobyh0KSxuKX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDE3KSxvPXIoMSk7ZShlLlMsIlJlZmxlY3QiLHtnZXRQcm90b3R5cGVPZjpmdW5jdGlvbiBnZXRQcm90b3R5cGVPZih0KXtyZXR1cm4gaShvKHQpKX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCk7ZShlLlMsIlJlZmxlY3QiLHtoYXM6ZnVuY3Rpb24gaGFzKHQsbil7cmV0dXJuIG4gaW4gdH19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDEpLG89T2JqZWN0LmlzRXh0ZW5zaWJsZTtlKGUuUywiUmVmbGVjdCIse2lzRXh0ZW5zaWJsZTpmdW5jdGlvbiBpc0V4dGVuc2libGUodCl7cmV0dXJuIGkodCksIW98fG8odCl9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApO2UoZS5TLCJSZWZsZWN0Iix7b3duS2V5czpyKDEyMSl9KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDEpLG89T2JqZWN0LnByZXZlbnRFeHRlbnNpb25zO2UoZS5TLCJSZWZsZWN0Iix7cHJldmVudEV4dGVuc2lvbnM6ZnVuY3Rpb24gcHJldmVudEV4dGVuc2lvbnModCl7aSh0KTt0cnl7cmV0dXJuIG8mJm8odCksITB9Y2F0Y2gobil7cmV0dXJuITF9fX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGM9cig4KSxhPXIoMTYpLGY9cigxNykscz1yKDE0KSxlPXIoMCksbD1yKDMyKSxoPXIoMSkscD1yKDQpO2UoZS5TLCJSZWZsZWN0Iix7c2V0OmZ1bmN0aW9uIHNldCh0LG4scil7dmFyIGUsaSxvPWFyZ3VtZW50cy5sZW5ndGg8ND90OmFyZ3VtZW50c1szXSx1PWEuZihoKHQpLG4pO2lmKCF1KXtpZihwKGk9Zih0KSkpcmV0dXJuIHNldChpLG4scixvKTt1PWwoMCl9aWYocyh1LCJ2YWx1ZSIpKXtpZighMT09PXUud3JpdGFibGV8fCFwKG8pKXJldHVybiExO2lmKGU9YS5mKG8sbikpe2lmKGUuZ2V0fHxlLnNldHx8ITE9PT1lLndyaXRhYmxlKXJldHVybiExO2UudmFsdWU9cixjLmYobyxuLGUpfWVsc2UgYy5mKG8sbixsKDAscikpO3JldHVybiEwfXJldHVybiB1LnNldCE9PUp0JiYodS5zZXQuY2FsbChvLHIpLCEwKX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDcxKTtpJiZlKGUuUywiUmVmbGVjdCIse3NldFByb3RvdHlwZU9mOmZ1bmN0aW9uIHNldFByb3RvdHlwZU9mKHQsbil7aS5jaGVjayh0LG4pO3RyeXtyZXR1cm4gaS5zZXQodCxuKSwhMH1jYXRjaChyKXtyZXR1cm4hMX19fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApO2UoZS5TLCJEYXRlIix7bm93OmZ1bmN0aW9uKCl7cmV0dXJuKG5ldyBEYXRlKS5nZXRUaW1lKCl9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApLGk9cig5KSxvPXIoMjIpO2UoZS5QK2UuRipyKDMpKGZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPT1uZXcgRGF0ZShOYU4pLnRvSlNPTigpfHwxIT09RGF0ZS5wcm90b3R5cGUudG9KU09OLmNhbGwoe3RvSVNPU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIDF9fSl9KSwiRGF0ZSIse3RvSlNPTjpmdW5jdGlvbiB0b0pTT04odCl7dmFyIG49aSh0aGlzKSxyPW8obik7cmV0dXJuIm51bWJlciIhPXR5cGVvZiByfHxpc0Zpbml0ZShyKT9uLnRvSVNPU3RyaW5nKCk6bnVsbH19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDI1Mik7ZShlLlArZS5GKihEYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZyE9PWkpLCJEYXRlIix7dG9JU09TdHJpbmc6aX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigzKSxpPURhdGUucHJvdG90eXBlLmdldFRpbWUsbz1EYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZyx1PWZ1bmN0aW9uKHQpe3JldHVybiA5PHQ\/dDoiMCIrdH07dC5leHBvcnRzPWUoZnVuY3Rpb24oKXtyZXR1cm4iMDM4NS0wNy0yNVQwNzowNjozOS45OTlaIiE9by5jYWxsKG5ldyBEYXRlKC01ZTEzLTEpKX0pfHwhZShmdW5jdGlvbigpe28uY2FsbChuZXcgRGF0ZShOYU4pKX0pP2Z1bmN0aW9uIHRvSVNPU3RyaW5nKCl7aWYoIWlzRmluaXRlKGkuY2FsbCh0aGlzKSkpdGhyb3cgUmFuZ2VFcnJvcigiSW52YWxpZCB0aW1lIHZhbHVlIik7dmFyIHQ9dGhpcyxuPXQuZ2V0VVRDRnVsbFllYXIoKSxyPXQuZ2V0VVRDTWlsbGlzZWNvbmRzKCksZT1uPDA\/Ii0iOjk5OTk8bj8iKyI6IiI7cmV0dXJuIGUrKCIwMDAwMCIrTWF0aC5hYnMobikpLnNsaWNlKGU\/LTY6LTQpKyItIit1KHQuZ2V0VVRDTW9udGgoKSsxKSsiLSIrdSh0LmdldFVUQ0RhdGUoKSkrIlQiK3UodC5nZXRVVENIb3VycygpKSsiOiIrdSh0LmdldFVUQ01pbnV0ZXMoKSkrIjoiK3UodC5nZXRVVENTZWNvbmRzKCkpKyIuIisoOTk8cj9yOiIwIit1KHIpKSsiWiJ9Om99LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1EYXRlLnByb3RvdHlwZSxpPSJJbnZhbGlkIERhdGUiLG89InRvU3RyaW5nIix1PWVbb10sYz1lLmdldFRpbWU7bmV3IERhdGUoTmFOKSsiIiE9aSYmcigxMikoZSxvLGZ1bmN0aW9uIHRvU3RyaW5nKCl7dmFyIHQ9Yy5jYWxsKHRoaXMpO3JldHVybiB0PT10P3UuY2FsbCh0aGlzKTppfSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDUpKCJ0b1ByaW1pdGl2ZSIpLGk9RGF0ZS5wcm90b3R5cGU7ZSBpbiBpfHxyKDExKShpLGUscigyNTUpKX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMSksaT1yKDIyKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYoInN0cmluZyIhPT10JiYibnVtYmVyIiE9PXQmJiJkZWZhdWx0IiE9PXQpdGhyb3cgVHlwZUVycm9yKCJJbmNvcnJlY3QgaGludCIpO3JldHVybiBpKGUodGhpcyksIm51bWJlciIhPXQpfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDYyKSxvPXIoOTIpLGY9cigxKSxzPXIoMzUpLGw9cig2KSx1PXIoNCksYz1yKDIpLkFycmF5QnVmZmVyLGg9cig1MSkscD1vLkFycmF5QnVmZmVyLHY9by5EYXRhVmlldyxhPWkuQUJWJiZjLmlzVmlldyxnPXAucHJvdG90eXBlLnNsaWNlLHk9aS5WSUVXLGQ9IkFycmF5QnVmZmVyIjtlKGUuRytlLlcrZS5GKihjIT09cCkse0FycmF5QnVmZmVyOnB9KSxlKGUuUytlLkYqIWkuQ09OU1RSLGQse2lzVmlldzpmdW5jdGlvbiBpc1ZpZXcodCl7cmV0dXJuIGEmJmEodCl8fHUodCkmJnkgaW4gdH19KSxlKGUuUCtlLlUrZS5GKnIoMykoZnVuY3Rpb24oKXtyZXR1cm4hbmV3IHAoMikuc2xpY2UoMSxKdCkuYnl0ZUxlbmd0aH0pLGQse3NsaWNlOmZ1bmN0aW9uIHNsaWNlKHQsbil7aWYoZyE9PUp0JiZuPT09SnQpcmV0dXJuIGcuY2FsbChmKHRoaXMpLHQpO2Zvcih2YXIgcj1mKHRoaXMpLmJ5dGVMZW5ndGgsZT1zKHQsciksaT1zKG49PT1KdD9yOm4sciksbz1uZXcoaCh0aGlzLHApKShsKGktZSkpLHU9bmV3IHYodGhpcyksYz1uZXcgdihvKSxhPTA7ZTxpOyljLnNldFVpbnQ4KGErKyx1LmdldFVpbnQ4KGUrKykpO3JldHVybiBvfX0pLHIoMzgpKGQpfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKTtlKGUuRytlLlcrZS5GKiFyKDYyKS5BQlYse0RhdGFWaWV3OnIoOTIpLkRhdGFWaWV3fSl9LGZ1bmN0aW9uKHQsbixyKXtyKDI3KSgiSW50OCIsMSxmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24gSW50OEFycmF5KHQsbixyKXtyZXR1cm4gZSh0aGlzLHQsbixyKX19KX0sZnVuY3Rpb24odCxuLHIpe3IoMjcpKCJVaW50OCIsMSxmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24gVWludDhBcnJheSh0LG4scil7cmV0dXJuIGUodGhpcyx0LG4scil9fSl9LGZ1bmN0aW9uKHQsbixyKXtyKDI3KSgiVWludDgiLDEsZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uIFVpbnQ4Q2xhbXBlZEFycmF5KHQsbixyKXtyZXR1cm4gZSh0aGlzLHQsbixyKX19LCEwKX0sZnVuY3Rpb24odCxuLHIpe3IoMjcpKCJJbnQxNiIsMixmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24gSW50MTZBcnJheSh0LG4scil7cmV0dXJuIGUodGhpcyx0LG4scil9fSl9LGZ1bmN0aW9uKHQsbixyKXtyKDI3KSgiVWludDE2IiwyLGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbiBVaW50MTZBcnJheSh0LG4scil7cmV0dXJuIGUodGhpcyx0LG4scil9fSl9LGZ1bmN0aW9uKHQsbixyKXtyKDI3KSgiSW50MzIiLDQsZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uIEludDMyQXJyYXkodCxuLHIpe3JldHVybiBlKHRoaXMsdCxuLHIpfX0pfSxmdW5jdGlvbih0LG4scil7cigyNykoIlVpbnQzMiIsNCxmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24gVWludDMyQXJyYXkodCxuLHIpe3JldHVybiBlKHRoaXMsdCxuLHIpfX0pfSxmdW5jdGlvbih0LG4scil7cigyNykoIkZsb2F0MzIiLDQsZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uIEZsb2F0MzJBcnJheSh0LG4scil7cmV0dXJuIGUodGhpcyx0LG4scil9fSl9LGZ1bmN0aW9uKHQsbixyKXtyKDI3KSgiRmxvYXQ2NCIsOCxmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24gRmxvYXQ2NEFycmF5KHQsbixyKXtyZXR1cm4gZSh0aGlzLHQsbixyKX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDUyKSghMCk7ZShlLlAsIkFycmF5Iix7aW5jbHVkZXM6ZnVuY3Rpb24gaW5jbHVkZXModCl7cmV0dXJuIGkodGhpcyx0LDE8YXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbMV06SnQpfX0pLHIoMzEpKCJpbmNsdWRlcyIpfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxpPXIoMTIzKSxvPXIoOSksdT1yKDYpLGM9cigxMCksYT1yKDg0KTtlKGUuUCwiQXJyYXkiLHtmbGF0TWFwOmZ1bmN0aW9uIGZsYXRNYXAodCl7dmFyIG4scixlPW8odGhpcyk7cmV0dXJuIGModCksbj11KGUubGVuZ3RoKSxyPWEoZSwwKSxpKHIsZSxlLG4sMCwxLHQsYXJndW1lbnRzWzFdKSxyfX0pLHIoMzEpKCJmbGF0TWFwIil9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApLGk9cigxMjMpLG89cig5KSx1PXIoNiksYz1yKDIwKSxhPXIoODQpO2UoZS5QLCJBcnJheSIse2ZsYXR0ZW46ZnVuY3Rpb24gZmxhdHRlbigpe3ZhciB0PWFyZ3VtZW50c1swXSxuPW8odGhpcykscj11KG4ubGVuZ3RoKSxlPWEobiwwKTtyZXR1cm4gaShlLG4sbixyLDAsdD09PUp0PzE6Yyh0KSksZX19KSxyKDMxKSgiZmxhdHRlbiIpfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxpPXIoNTUpKCEwKTtlKGUuUCwiU3RyaW5nIix7YXQ6ZnVuY3Rpb24gYXQodCl7cmV0dXJuIGkodGhpcyx0KX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDEyNCksbz1yKDYwKSx1PS9WZXJzaW9uXC8xMFwuXGQrKFwuXGQrKT8oIE1vYmlsZVwvXHcrKT8gU2FmYXJpXC8vLnRlc3Qobyk7ZShlLlArZS5GKnUsIlN0cmluZyIse3BhZFN0YXJ0OmZ1bmN0aW9uIHBhZFN0YXJ0KHQpe3JldHVybiBpKHRoaXMsdCwxPGFyZ3VtZW50cy5sZW5ndGg\/YXJndW1lbnRzWzFdOkp0LCEwKX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDEyNCksbz1yKDYwKSx1PS9WZXJzaW9uXC8xMFwuXGQrKFwuXGQrKT8oIE1vYmlsZVwvXHcrKT8gU2FmYXJpXC8vLnRlc3Qobyk7ZShlLlArZS5GKnUsIlN0cmluZyIse3BhZEVuZDpmdW5jdGlvbiBwYWRFbmQodCl7cmV0dXJuIGkodGhpcyx0LDE8YXJndW1lbnRzLmxlbmd0aD9hcmd1bWVudHNbMV06SnQsITEpfX0pfSxmdW5jdGlvbih0LG4scil7cig0NSkoInRyaW1MZWZ0IixmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24gdHJpbUxlZnQoKXtyZXR1cm4gdCh0aGlzLDEpfX0sInRyaW1TdGFydCIpfSxmdW5jdGlvbih0LG4scil7cig0NSkoInRyaW1SaWdodCIsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uIHRyaW1SaWdodCgpe3JldHVybiB0KHRoaXMsMil9fSwidHJpbUVuZCIpfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxpPXIoMjMpLG89cig2KSx1PXIoNTYpLGM9cig1MCksYT1SZWdFeHAucHJvdG90eXBlLGY9ZnVuY3Rpb24odCxuKXt0aGlzLl9yPXQsdGhpcy5fcz1ufTtyKDgwKShmLCJSZWdFeHAgU3RyaW5nIixmdW5jdGlvbiBuZXh0KCl7dmFyIHQ9dGhpcy5fci5leGVjKHRoaXMuX3MpO3JldHVybnt2YWx1ZTp0LGRvbmU6bnVsbD09PXR9fSksZShlLlAsIlN0cmluZyIse21hdGNoQWxsOmZ1bmN0aW9uIG1hdGNoQWxsKHQpe2lmKGkodGhpcyksIXUodCkpdGhyb3cgVHlwZUVycm9yKHQrIiBpcyBub3QgYSByZWdleHAhIik7dmFyIG49U3RyaW5nKHRoaXMpLHI9ImZsYWdzImluIGE\/U3RyaW5nKHQuZmxhZ3MpOmMuY2FsbCh0KSxlPW5ldyBSZWdFeHAodC5zb3VyY2UsfnIuaW5kZXhPZigiZyIpP3I6ImciK3IpO3JldHVybiBlLmxhc3RJbmRleD1vKHQubGFzdEluZGV4KSxuZXcgZihlLG4pfX0pfSxmdW5jdGlvbih0LG4scil7cig2NykoImFzeW5jSXRlcmF0b3IiKX0sZnVuY3Rpb24odCxuLHIpe3IoNjcpKCJvYnNlcnZhYmxlIil9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApLGE9cigxMjEpLGY9cigxNSkscz1yKDE2KSxsPXIoODIpO2UoZS5TLCJPYmplY3QiLHtnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzOmZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCl7Zm9yKHZhciBuLHIsZT1mKHQpLGk9cy5mLG89YShlKSx1PXt9LGM9MDtjPG8ubGVuZ3RoOykocj1pKGUsbj1vW2MrK10pKSE9PUp0JiZsKHUsbixyKTtyZXR1cm4gdX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDEyNSkoITEpO2UoZS5TLCJPYmplY3QiLHt2YWx1ZXM6ZnVuY3Rpb24gdmFsdWVzKHQpe3JldHVybiBpKHQpfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxpPXIoMTI1KSghMCk7ZShlLlMsIk9iamVjdCIse2VudHJpZXM6ZnVuY3Rpb24gZW50cmllcyh0KXtyZXR1cm4gaSh0KX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDkpLG89cigxMCksdT1yKDgpO3IoNykmJmUoZS5QK3IoNjMpLCJPYmplY3QiLHtfX2RlZmluZUdldHRlcl9fOmZ1bmN0aW9uIF9fZGVmaW5lR2V0dGVyX18odCxuKXt1LmYoaSh0aGlzKSx0LHtnZXQ6byhuKSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxpPXIoOSksbz1yKDEwKSx1PXIoOCk7cig3KSYmZShlLlArcig2MyksIk9iamVjdCIse19fZGVmaW5lU2V0dGVyX186ZnVuY3Rpb24gX19kZWZpbmVTZXR0ZXJfXyh0LG4pe3UuZihpKHRoaXMpLHQse3NldDpvKG4pLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSl9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApLGk9cig5KSxvPXIoMjIpLHU9cigxNyksYz1yKDE2KS5mO3IoNykmJmUoZS5QK3IoNjMpLCJPYmplY3QiLHtfX2xvb2t1cEdldHRlcl9fOmZ1bmN0aW9uIF9fbG9va3VwR2V0dGVyX18odCl7dmFyIG4scj1pKHRoaXMpLGU9byh0LCEwKTtkb3tpZihuPWMocixlKSlyZXR1cm4gbi5nZXR9d2hpbGUocj11KHIpKX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDkpLG89cigyMiksdT1yKDE3KSxjPXIoMTYpLmY7cig3KSYmZShlLlArcig2MyksIk9iamVjdCIse19fbG9va3VwU2V0dGVyX186ZnVuY3Rpb24gX19sb29rdXBTZXR0ZXJfXyh0KXt2YXIgbixyPWkodGhpcyksZT1vKHQsITApO2Rve2lmKG49YyhyLGUpKXJldHVybiBuLnNldH13aGlsZShyPXUocikpfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKTtlKGUuUCtlLlIsIk1hcCIse3RvSlNPTjpyKDEyNikoIk1hcCIpfSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApO2UoZS5QK2UuUiwiU2V0Iix7dG9KU09OOnIoMTI2KSgiU2V0Iil9KX0sZnVuY3Rpb24odCxuLHIpe3IoNjQpKCJNYXAiKX0sZnVuY3Rpb24odCxuLHIpe3IoNjQpKCJTZXQiKX0sZnVuY3Rpb24odCxuLHIpe3IoNjQpKCJXZWFrTWFwIil9LGZ1bmN0aW9uKHQsbixyKXtyKDY0KSgiV2Vha1NldCIpfSxmdW5jdGlvbih0LG4scil7cig2NSkoIk1hcCIpfSxmdW5jdGlvbih0LG4scil7cig2NSkoIlNldCIpfSxmdW5jdGlvbih0LG4scil7cig2NSkoIldlYWtNYXAiKX0sZnVuY3Rpb24odCxuLHIpe3IoNjUpKCJXZWFrU2V0Iil9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApO2UoZS5HLHtnbG9iYWw6cigyKX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKTtlKGUuUywiU3lzdGVtIix7Z2xvYmFsOnIoMil9KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDE5KTtlKGUuUywiRXJyb3IiLHtpc0Vycm9yOmZ1bmN0aW9uIGlzRXJyb3IodCl7cmV0dXJuIkVycm9yIj09PWkodCl9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApO2UoZS5TLCJNYXRoIix7Y2xhbXA6ZnVuY3Rpb24gY2xhbXAodCxuLHIpe3JldHVybiBNYXRoLm1pbihyLE1hdGgubWF4KG4sdCkpfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKTtlKGUuUywiTWF0aCIse0RFR19QRVJfUkFEOk1hdGguUEkvMTgwfSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApLGk9MTgwL01hdGguUEk7ZShlLlMsIk1hdGgiLHtkZWdyZWVzOmZ1bmN0aW9uIGRlZ3JlZXModCl7cmV0dXJuIHQqaX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksbz1yKDEyOCksdT1yKDEwNyk7ZShlLlMsIk1hdGgiLHtmc2NhbGU6ZnVuY3Rpb24gZnNjYWxlKHQsbixyLGUsaSl7cmV0dXJuIHUobyh0LG4scixlLGkpKX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCk7ZShlLlMsIk1hdGgiLHtpYWRkaDpmdW5jdGlvbiBpYWRkaCh0LG4scixlKXt2YXIgaT10Pj4+MCxvPXI+Pj4wO3JldHVybihuPj4+MCkrKGU+Pj4wKSsoKGkmb3woaXxvKSZ+KGkrbz4+PjApKT4+PjMxKXwwfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKTtlKGUuUywiTWF0aCIse2lzdWJoOmZ1bmN0aW9uIGlzdWJoKHQsbixyLGUpe3ZhciBpPXQ+Pj4wLG89cj4+PjA7cmV0dXJuKG4+Pj4wKS0oZT4+PjApLSgofmkmb3x+KGlebykmaS1vPj4+MCk+Pj4zMSl8MH19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCk7ZShlLlMsIk1hdGgiLHtpbXVsaDpmdW5jdGlvbiBpbXVsaCh0LG4pe3ZhciByPSt0LGU9K24saT02NTUzNSZyLG89NjU1MzUmZSx1PXI+PjE2LGM9ZT4+MTYsYT0odSpvPj4+MCkrKGkqbz4+PjE2KTtyZXR1cm4gdSpjKyhhPj4xNikrKChpKmM+Pj4wKSsoNjU1MzUmYSk+PjE2KX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCk7ZShlLlMsIk1hdGgiLHtSQURfUEVSX0RFRzoxODAvTWF0aC5QSX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxpPU1hdGguUEkvMTgwO2UoZS5TLCJNYXRoIix7cmFkaWFuczpmdW5jdGlvbiByYWRpYW5zKHQpe3JldHVybiB0Kml9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApO2UoZS5TLCJNYXRoIix7c2NhbGU6cigxMjgpfSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApO2UoZS5TLCJNYXRoIix7dW11bGg6ZnVuY3Rpb24gdW11bGgodCxuKXt2YXIgcj0rdCxlPStuLGk9NjU1MzUmcixvPTY1NTM1JmUsdT1yPj4+MTYsYz1lPj4+MTYsYT0odSpvPj4+MCkrKGkqbz4+PjE2KTtyZXR1cm4gdSpjKyhhPj4+MTYpKygoaSpjPj4+MCkrKDY1NTM1JmEpPj4+MTYpfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKTtlKGUuUywiTWF0aCIse3NpZ25iaXQ6ZnVuY3Rpb24gc2lnbmJpdCh0KXtyZXR1cm4odD0rdCkhPXQ\/dDowPT10PzEvdD09SW5maW5pdHk6MDx0fX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxpPXIoMjYpLG89cigyKSx1PXIoNTEpLGM9cigxMTUpO2UoZS5QK2UuUiwiUHJvbWlzZSIseyJmaW5hbGx5IjpmdW5jdGlvbihuKXt2YXIgcj11KHRoaXMsaS5Qcm9taXNlfHxvLlByb21pc2UpLHQ9ImZ1bmN0aW9uIj09dHlwZW9mIG47cmV0dXJuIHRoaXMudGhlbih0P2Z1bmN0aW9uKHQpe3JldHVybiBjKHIsbigpKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIHR9KX06bix0P2Z1bmN0aW9uKHQpe3JldHVybiBjKHIsbigpKS50aGVuKGZ1bmN0aW9uKCl7dGhyb3cgdH0pfTpuKX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksaT1yKDkxKSxvPXIoMTE0KTtlKGUuUywiUHJvbWlzZSIseyJ0cnkiOmZ1bmN0aW9uKHQpe3ZhciBuPWkuZih0aGlzKSxyPW8odCk7cmV0dXJuKHIuZT9uLnJlamVjdDpuLnJlc29sdmUpKHIudiksbi5wcm9taXNlfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigyOCksaT1yKDEpLG89ZS5rZXksdT1lLnNldDtlLmV4cCh7ZGVmaW5lTWV0YWRhdGE6ZnVuY3Rpb24gZGVmaW5lTWV0YWRhdGEodCxuLHIsZSl7dSh0LG4saShyKSxvKGUpKX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMjgpLG89cigxKSx1PWUua2V5LGM9ZS5tYXAsYT1lLnN0b3JlO2UuZXhwKHtkZWxldGVNZXRhZGF0YTpmdW5jdGlvbiBkZWxldGVNZXRhZGF0YSh0LG4pe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg8Mz9KdDp1KGFyZ3VtZW50c1syXSksZT1jKG8obiksciwhMSk7aWYoZT09PUp0fHwhZVsiZGVsZXRlIl0odCkpcmV0dXJuITE7aWYoZS5zaXplKXJldHVybiEwO3ZhciBpPWEuZ2V0KG4pO3JldHVybiBpWyJkZWxldGUiXShyKSwhIWkuc2l6ZXx8YVsiZGVsZXRlIl0obil9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDI4KSxpPXIoMSksbz1yKDE3KSx1PWUuaGFzLGM9ZS5nZXQsYT1lLmtleSxmPWZ1bmN0aW9uKHQsbixyKXtpZih1KHQsbixyKSlyZXR1cm4gYyh0LG4scik7dmFyIGU9byhuKTtyZXR1cm4gbnVsbCE9PWU\/Zih0LGUscik6SnR9O2UuZXhwKHtnZXRNZXRhZGF0YTpmdW5jdGlvbiBnZXRNZXRhZGF0YSh0LG4pe3JldHVybiBmKHQsaShuKSxhcmd1bWVudHMubGVuZ3RoPDM\/SnQ6YShhcmd1bWVudHNbMl0pKX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBvPXIoMTE4KSx1PXIoMTI3KSxlPXIoMjgpLGk9cigxKSxjPXIoMTcpLGE9ZS5rZXlzLGY9ZS5rZXkscz1mdW5jdGlvbih0LG4pe3ZhciByPWEodCxuKSxlPWModCk7aWYobnVsbD09PWUpcmV0dXJuIHI7dmFyIGk9cyhlLG4pO3JldHVybiBpLmxlbmd0aD9yLmxlbmd0aD91KG5ldyBvKHIuY29uY2F0KGkpKSk6aTpyfTtlLmV4cCh7Z2V0TWV0YWRhdGFLZXlzOmZ1bmN0aW9uIGdldE1ldGFkYXRhS2V5cyh0KXtyZXR1cm4gcyhpKHQpLGFyZ3VtZW50cy5sZW5ndGg8Mj9KdDpmKGFyZ3VtZW50c1sxXSkpfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigyOCksaT1yKDEpLG89ZS5nZXQsdT1lLmtleTtlLmV4cCh7Z2V0T3duTWV0YWRhdGE6ZnVuY3Rpb24gZ2V0T3duTWV0YWRhdGEodCxuKXtyZXR1cm4gbyh0LGkobiksYXJndW1lbnRzLmxlbmd0aDwzP0p0OnUoYXJndW1lbnRzWzJdKSl9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDI4KSxpPXIoMSksbz1lLmtleXMsdT1lLmtleTtlLmV4cCh7Z2V0T3duTWV0YWRhdGFLZXlzOmZ1bmN0aW9uIGdldE93bk1ldGFkYXRhS2V5cyh0KXtyZXR1cm4gbyhpKHQpLGFyZ3VtZW50cy5sZW5ndGg8Mj9KdDp1KGFyZ3VtZW50c1sxXSkpfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigyOCksaT1yKDEpLG89cigxNyksdT1lLmhhcyxjPWUua2V5LGE9ZnVuY3Rpb24odCxuLHIpe2lmKHUodCxuLHIpKXJldHVybiEwO3ZhciBlPW8obik7cmV0dXJuIG51bGwhPT1lJiZhKHQsZSxyKX07ZS5leHAoe2hhc01ldGFkYXRhOmZ1bmN0aW9uIGhhc01ldGFkYXRhKHQsbil7cmV0dXJuIGEodCxpKG4pLGFyZ3VtZW50cy5sZW5ndGg8Mz9KdDpjKGFyZ3VtZW50c1syXSkpfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigyOCksaT1yKDEpLG89ZS5oYXMsdT1lLmtleTtlLmV4cCh7aGFzT3duTWV0YWRhdGE6ZnVuY3Rpb24gaGFzT3duTWV0YWRhdGEodCxuKXtyZXR1cm4gbyh0LGkobiksYXJndW1lbnRzLmxlbmd0aDwzP0p0OnUoYXJndW1lbnRzWzJdKSl9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDI4KSxpPXIoMSksbz1yKDEwKSx1PWUua2V5LGM9ZS5zZXQ7ZS5leHAoe21ldGFkYXRhOmZ1bmN0aW9uIG1ldGFkYXRhKHIsZSl7cmV0dXJuIGZ1bmN0aW9uIGRlY29yYXRvcih0LG4pe2MocixlLChuIT09SnQ\/aTpvKSh0KSx1KG4pKX19fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApLGk9cig5MCkoKSxvPXIoMikucHJvY2Vzcyx1PSJwcm9jZXNzIj09cigxOSkobyk7ZShlLkcse2FzYXA6ZnVuY3Rpb24gYXNhcCh0KXt2YXIgbj11JiZvLmRvbWFpbjtpKG4\/bi5iaW5kKHQpOnQpfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxvPXIoMiksdT1yKDI2KSxpPXIoOTApKCksYz1yKDUpKCJvYnNlcnZhYmxlIiksYT1yKDEwKSxmPXIoMSkscz1yKDM5KSxsPXIoNDEpLGg9cigxMSkscD1yKDQwKSx2PXAuUkVUVVJOLGc9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ\/SnQ6YSh0KX0seT1mdW5jdGlvbih0KXt2YXIgbj10Ll9jO24mJih0Ll9jPUp0LG4oKSl9LGQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQuX289PT1KdH0sYj1mdW5jdGlvbih0KXtkKHQpfHwodC5fbz1KdCx5KHQpKX0sUz1mdW5jdGlvbih0LG4pe2YodCksdGhpcy5fYz1KdCx0aGlzLl9vPXQsdD1uZXcgXyh0aGlzKTt0cnl7dmFyIHI9bih0KSxlPXI7bnVsbCE9ciYmKCJmdW5jdGlvbiI9PXR5cGVvZiByLnVuc3Vic2NyaWJlP3I9ZnVuY3Rpb24oKXtlLnVuc3Vic2NyaWJlKCl9OmEociksdGhpcy5fYz1yKX1jYXRjaChpKXtyZXR1cm4gdm9pZCB0LmVycm9yKGkpfWQodGhpcykmJnkodGhpcyl9O1MucHJvdG90eXBlPWwoe30se3Vuc3Vic2NyaWJlOmZ1bmN0aW9uIHVuc3Vic2NyaWJlKCl7Yih0aGlzKX19KTt2YXIgXz1mdW5jdGlvbih0KXt0aGlzLl9zPXR9O18ucHJvdG90eXBlPWwoe30se25leHQ6ZnVuY3Rpb24gbmV4dCh0KXt2YXIgbj10aGlzLl9zO2lmKCFkKG4pKXt2YXIgcj1uLl9vO3RyeXt2YXIgZT1nKHIubmV4dCk7aWYoZSlyZXR1cm4gZS5jYWxsKHIsdCl9Y2F0Y2goaSl7dHJ5e2Iobil9ZmluYWxseXt0aHJvdyBpfX19fSxlcnJvcjpmdW5jdGlvbiBlcnJvcih0KXt2YXIgbj10aGlzLl9zO2lmKGQobikpdGhyb3cgdDt2YXIgcj1uLl9vO24uX289SnQ7dHJ5e3ZhciBlPWcoci5lcnJvcik7aWYoIWUpdGhyb3cgdDt0PWUuY2FsbChyLHQpfWNhdGNoKGkpe3RyeXt5KG4pfWZpbmFsbHl7dGhyb3cgaX19cmV0dXJuIHkobiksdH0sY29tcGxldGU6ZnVuY3Rpb24gY29tcGxldGUodCl7dmFyIG49dGhpcy5fcztpZighZChuKSl7dmFyIHI9bi5fbztuLl9vPUp0O3RyeXt2YXIgZT1nKHIuY29tcGxldGUpO3Q9ZT9lLmNhbGwocix0KTpKdH1jYXRjaChpKXt0cnl7eShuKX1maW5hbGx5e3Rocm93IGl9fXJldHVybiB5KG4pLHR9fX0pO3ZhciB4PWZ1bmN0aW9uIE9ic2VydmFibGUodCl7cyh0aGlzLHgsIk9ic2VydmFibGUiLCJfZiIpLl9mPWEodCl9O2woeC5wcm90b3R5cGUse3N1YnNjcmliZTpmdW5jdGlvbiBzdWJzY3JpYmUodCl7cmV0dXJuIG5ldyBTKHQsdGhpcy5fZil9LGZvckVhY2g6ZnVuY3Rpb24gZm9yRWFjaChpKXt2YXIgbj10aGlzO3JldHVybiBuZXcodS5Qcm9taXNlfHxvLlByb21pc2UpKGZ1bmN0aW9uKHQscil7YShpKTt2YXIgZT1uLnN1YnNjcmliZSh7bmV4dDpmdW5jdGlvbih0KXt0cnl7cmV0dXJuIGkodCl9Y2F0Y2gobil7cihuKSxlLnVuc3Vic2NyaWJlKCl9fSxlcnJvcjpyLGNvbXBsZXRlOnR9KX0pfX0pLGwoeCx7ZnJvbTpmdW5jdGlvbiBmcm9tKGUpe3ZhciB0PSJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzP3RoaXM6eCxuPWcoZihlKVtjXSk7aWYobil7dmFyIHI9ZihuLmNhbGwoZSkpO3JldHVybiByLmNvbnN0cnVjdG9yPT09dD9yOm5ldyB0KGZ1bmN0aW9uKHQpe3JldHVybiByLnN1YnNjcmliZSh0KX0pfXJldHVybiBuZXcgdChmdW5jdGlvbihuKXt2YXIgcj0hMTtyZXR1cm4gaShmdW5jdGlvbigpe2lmKCFyKXt0cnl7aWYocChlLCExLGZ1bmN0aW9uKHQpe2lmKG4ubmV4dCh0KSxyKXJldHVybiB2fSk9PT12KXJldHVybn1jYXRjaCh0KXtpZihyKXRocm93IHQ7cmV0dXJuIHZvaWQgbi5lcnJvcih0KX1uLmNvbXBsZXRlKCl9fSksZnVuY3Rpb24oKXtyPSEwfX0pfSxvZjpmdW5jdGlvbiBvZigpe2Zvcih2YXIgdD0wLG49YXJndW1lbnRzLmxlbmd0aCxlPW5ldyBBcnJheShuKTt0PG47KWVbdF09YXJndW1lbnRzW3QrK107cmV0dXJuIG5ldygiZnVuY3Rpb24iPT10eXBlb2YgdGhpcz90aGlzOngpKGZ1bmN0aW9uKG4pe3ZhciByPSExO3JldHVybiBpKGZ1bmN0aW9uKCl7aWYoIXIpe2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7Kyt0KWlmKG4ubmV4dChlW3RdKSxyKXJldHVybjtuLmNvbXBsZXRlKCl9fSksZnVuY3Rpb24oKXtyPSEwfX0pfX0pLGgoeC5wcm90b3R5cGUsYyxmdW5jdGlvbigpe3JldHVybiB0aGlzfSksZShlLkcse09ic2VydmFibGU6eH0pLHIoMzgpKCJPYnNlcnZhYmxlIil9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApLGk9cig4OSk7ZShlLkcrZS5CLHtzZXRJbW1lZGlhdGU6aS5zZXQsY2xlYXJJbW1lZGlhdGU6aS5jbGVhcn0pfSxmdW5jdGlvbih0LG4scil7Zm9yKHZhciBlPXIoODYpLGk9cigzNCksbz1yKDEyKSx1PXIoMiksYz1yKDExKSxhPXIoNDYpLGY9cig1KSxzPWYoIml0ZXJhdG9yIiksbD1mKCJ0b1N0cmluZ1RhZyIpLGg9YS5BcnJheSxwPXtDU1NSdWxlTGlzdDohMCxDU1NTdHlsZURlY2xhcmF0aW9uOiExLENTU1ZhbHVlTGlzdDohMSxDbGllbnRSZWN0TGlzdDohMSxET01SZWN0TGlzdDohMSxET01TdHJpbmdMaXN0OiExLERPTVRva2VuTGlzdDohMCxEYXRhVHJhbnNmZXJJdGVtTGlzdDohMSxGaWxlTGlzdDohMSxIVE1MQWxsQ29sbGVjdGlvbjohMSxIVE1MQ29sbGVjdGlvbjohMSxIVE1MRm9ybUVsZW1lbnQ6ITEsSFRNTFNlbGVjdEVsZW1lbnQ6ITEsTWVkaWFMaXN0OiEwLE1pbWVUeXBlQXJyYXk6ITEsTmFtZWROb2RlTWFwOiExLE5vZGVMaXN0OiEwLFBhaW50UmVxdWVzdExpc3Q6ITEsUGx1Z2luOiExLFBsdWdpbkFycmF5OiExLFNWR0xlbmd0aExpc3Q6ITEsU1ZHTnVtYmVyTGlzdDohMSxTVkdQYXRoU2VnTGlzdDohMSxTVkdQb2ludExpc3Q6ITEsU1ZHU3RyaW5nTGlzdDohMSxTVkdUcmFuc2Zvcm1MaXN0OiExLFNvdXJjZUJ1ZmZlckxpc3Q6ITEsU3R5bGVTaGVldExpc3Q6ITAsVGV4dFRyYWNrQ3VlTGlzdDohMSxUZXh0VHJhY2tMaXN0OiExLFRvdWNoTGlzdDohMX0sdj1pKHApLGc9MDtnPHYubGVuZ3RoO2crKyl7dmFyIHksZD12W2ddLGI9cFtkXSxTPXVbZF0sXz1TJiZTLnByb3RvdHlwZTtpZihfJiYoX1tzXXx8YyhfLHMsaCksX1tsXXx8YyhfLGwsZCksYVtkXT1oLGIpKWZvcih5IGluIGUpX1t5XXx8byhfLHksZVt5XSwhMCl9fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigyKSxpPXIoMCksbz1yKDYwKSx1PVtdLnNsaWNlLGM9L01TSUUgLlwuLy50ZXN0KG8pLGE9ZnVuY3Rpb24oaSl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7dmFyIHI9Mjxhcmd1bWVudHMubGVuZ3RoLGU9ISFyJiZ1LmNhbGwoYXJndW1lbnRzLDIpO3JldHVybiBpKHI\/ZnVuY3Rpb24oKXsoImZ1bmN0aW9uIj09dHlwZW9mIHQ\/dDpGdW5jdGlvbih0KSkuYXBwbHkodGhpcyxlKX06dCxuKX19O2koaS5HK2kuQitpLkYqYyx7c2V0VGltZW91dDphKGUuc2V0VGltZW91dCksc2V0SW50ZXJ2YWw6YShlLnNldEludGVydmFsKX0pfV0pLCJ1bmRlZmluZWQiIT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz1lOiJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ\/ZGVmaW5lKGZ1bmN0aW9uKCl7cmV0dXJuIGV9KTppLmNvcmU9ZX0oMSwxKTsNCi8vIyBzb3VyY2VNYXBwaW5nVVJMPXNoaW0ubWluLmpzLm1hcA==\"><\/script><br \/>\n<script src=\"data:application\/javascript;base64,LyoqIEBsaWNlbnNlIFJlYWN0IHYxNy4wLjANCiAqIHJlYWN0LnByb2R1Y3Rpb24ubWluLmpzDQogKg0KICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuDQogKg0KICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlDQogKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuDQogKi8NCihmdW5jdGlvbigpeyd1c2Ugc3RyaWN0JzsoZnVuY3Rpb24oYyx4KXsib2JqZWN0Ij09PXR5cGVvZiBleHBvcnRzJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBtb2R1bGU\/eChleHBvcnRzKToiZnVuY3Rpb24iPT09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoWyJleHBvcnRzIl0seCk6KGM9Y3x8c2VsZix4KGMuUmVhY3Q9e30pKX0pKHRoaXMsZnVuY3Rpb24oYyl7ZnVuY3Rpb24geChhKXtpZihudWxsPT09YXx8Im9iamVjdCIhPT10eXBlb2YgYSlyZXR1cm4gbnVsbDthPVkmJmFbWV18fGFbIkBAaXRlcmF0b3IiXTtyZXR1cm4iZnVuY3Rpb24iPT09dHlwZW9mIGE\/YTpudWxsfWZ1bmN0aW9uIHkoYSl7Zm9yKHZhciBiPSJodHRwczovL3JlYWN0anMub3JnL2RvY3MvZXJyb3ItZGVjb2Rlci5odG1sP2ludmFyaWFudD0iK2EsZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspYis9IiZhcmdzW109IitlbmNvZGVVUklDb21wb25lbnQoYXJndW1lbnRzW2VdKTtyZXR1cm4iTWluaWZpZWQgUmVhY3QgZXJyb3IgIyIrDQphKyI7IHZpc2l0ICIrYisiIGZvciB0aGUgZnVsbCBtZXNzYWdlIG9yIHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgZnVsbCBlcnJvcnMgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy4ifWZ1bmN0aW9uIHYoYSxiLGUpe3RoaXMucHJvcHM9YTt0aGlzLmNvbnRleHQ9Yjt0aGlzLnJlZnM9Wjt0aGlzLnVwZGF0ZXI9ZXx8YWF9ZnVuY3Rpb24gYmEoKXt9ZnVuY3Rpb24gSyhhLGIsZSl7dGhpcy5wcm9wcz1hO3RoaXMuY29udGV4dD1iO3RoaXMucmVmcz1aO3RoaXMudXBkYXRlcj1lfHxhYX1mdW5jdGlvbiBjYShhLGIsZSl7dmFyIGwsZj17fSxjPW51bGwsZGE9bnVsbDtpZihudWxsIT1iKWZvcihsIGluIHZvaWQgMCE9PWIucmVmJiYoZGE9Yi5yZWYpLHZvaWQgMCE9PWIua2V5JiYoYz0iIitiLmtleSksYillYS5jYWxsKGIsbCkmJiFmYS5oYXNPd25Qcm9wZXJ0eShsKSYmKGZbbF09YltsXSk7dmFyIGs9YXJndW1lbnRzLmxlbmd0aC0yO2lmKDE9PT0NCmspZi5jaGlsZHJlbj1lO2Vsc2UgaWYoMTxrKXtmb3IodmFyIGg9QXJyYXkoayksZD0wO2Q8aztkKyspaFtkXT1hcmd1bWVudHNbZCsyXTtmLmNoaWxkcmVuPWh9aWYoYSYmYS5kZWZhdWx0UHJvcHMpZm9yKGwgaW4gaz1hLmRlZmF1bHRQcm9wcyxrKXZvaWQgMD09PWZbbF0mJihmW2xdPWtbbF0pO3JldHVybnskJHR5cGVvZjp3LHR5cGU6YSxrZXk6YyxyZWY6ZGEscHJvcHM6Zixfb3duZXI6TC5jdXJyZW50fX1mdW5jdGlvbiB2YShhLGIpe3JldHVybnskJHR5cGVvZjp3LHR5cGU6YS50eXBlLGtleTpiLHJlZjphLnJlZixwcm9wczphLnByb3BzLF9vd25lcjphLl9vd25lcn19ZnVuY3Rpb24gTShhKXtyZXR1cm4ib2JqZWN0Ij09PXR5cGVvZiBhJiZudWxsIT09YSYmYS4kJHR5cGVvZj09PXd9ZnVuY3Rpb24gd2EoYSl7dmFyIGI9eyI9IjoiPTAiLCI6IjoiPTIifTtyZXR1cm4iJCIrYS5yZXBsYWNlKC9bPTpdL2csZnVuY3Rpb24oYSl7cmV0dXJuIGJbYV19KX1mdW5jdGlvbiBOKGEsYil7cmV0dXJuIm9iamVjdCI9PT0NCnR5cGVvZiBhJiZudWxsIT09YSYmbnVsbCE9YS5rZXk\/d2EoIiIrYS5rZXkpOmIudG9TdHJpbmcoMzYpfWZ1bmN0aW9uIEMoYSxiLGUsbCxmKXt2YXIgYz10eXBlb2YgYTtpZigidW5kZWZpbmVkIj09PWN8fCJib29sZWFuIj09PWMpYT1udWxsO3ZhciBkPSExO2lmKG51bGw9PT1hKWQ9ITA7ZWxzZSBzd2l0Y2goYyl7Y2FzZSAic3RyaW5nIjpjYXNlICJudW1iZXIiOmQ9ITA7YnJlYWs7Y2FzZSAib2JqZWN0Ijpzd2l0Y2goYS4kJHR5cGVvZil7Y2FzZSB3OmNhc2UgaGE6ZD0hMH19aWYoZClyZXR1cm4gZD1hLGY9ZihkKSxhPSIiPT09bD8iLiIrTihkLDApOmwsQXJyYXkuaXNBcnJheShmKT8oZT0iIixudWxsIT1hJiYoZT1hLnJlcGxhY2UoaWEsIiQmLyIpKyIvIiksQyhmLGIsZSwiIixmdW5jdGlvbihhKXtyZXR1cm4gYX0pKTpudWxsIT1mJiYoTShmKSYmKGY9dmEoZixlKyghZi5rZXl8fGQmJmQua2V5PT09Zi5rZXk\/IiI6KCIiK2Yua2V5KS5yZXBsYWNlKGlhLCIkJi8iKSsiLyIpKw0KYSkpLGIucHVzaChmKSksMTtkPTA7bD0iIj09PWw\/Ii4iOmwrIjoiO2lmKEFycmF5LmlzQXJyYXkoYSkpZm9yKHZhciBrPTA7azxhLmxlbmd0aDtrKyspe2M9YVtrXTt2YXIgaD1sK04oYyxrKTtkKz1DKGMsYixlLGgsZil9ZWxzZSBpZihoPXgoYSksImZ1bmN0aW9uIj09PXR5cGVvZiBoKWZvcihhPWguY2FsbChhKSxrPTA7IShjPWEubmV4dCgpKS5kb25lOyljPWMudmFsdWUsaD1sK04oYyxrKyspLGQrPUMoYyxiLGUsaCxmKTtlbHNlIGlmKCJvYmplY3QiPT09Yyl0aHJvdyBiPSIiK2EsRXJyb3IoeSgzMSwiW29iamVjdCBPYmplY3RdIj09PWI\/Im9iamVjdCB3aXRoIGtleXMgeyIrT2JqZWN0LmtleXMoYSkuam9pbigiLCAiKSsifSI6YikpO3JldHVybiBkfWZ1bmN0aW9uIEQoYSxiLGUpe2lmKG51bGw9PWEpcmV0dXJuIGE7dmFyIGw9W10sYz0wO0MoYSxsLCIiLCIiLGZ1bmN0aW9uKGEpe3JldHVybiBiLmNhbGwoZSxhLGMrKyl9KTtyZXR1cm4gbH1mdW5jdGlvbiB4YShhKXtpZigtMT09PQ0KYS5fc3RhdHVzKXt2YXIgYj1hLl9yZXN1bHQ7Yj1iKCk7YS5fc3RhdHVzPTA7YS5fcmVzdWx0PWI7Yi50aGVuKGZ1bmN0aW9uKGIpezA9PT1hLl9zdGF0dXMmJihiPWIuZGVmYXVsdCxhLl9zdGF0dXM9MSxhLl9yZXN1bHQ9Yil9LGZ1bmN0aW9uKGIpezA9PT1hLl9zdGF0dXMmJihhLl9zdGF0dXM9MixhLl9yZXN1bHQ9Yil9KX1pZigxPT09YS5fc3RhdHVzKXJldHVybiBhLl9yZXN1bHQ7dGhyb3cgYS5fcmVzdWx0O31mdW5jdGlvbiBuKCl7dmFyIGE9amEuY3VycmVudDtpZihudWxsPT09YSl0aHJvdyBFcnJvcih5KDMyMSkpO3JldHVybiBhfWZ1bmN0aW9uIE8oYSxiKXt2YXIgZT1hLmxlbmd0aDthLnB1c2goYik7YTpmb3IoOzspe3ZhciBjPWUtMT4+PjEsZj1hW2NdO2lmKHZvaWQgMCE9PWYmJjA8RShmLGIpKWFbY109YixhW2VdPWYsZT1jO2Vsc2UgYnJlYWsgYX19ZnVuY3Rpb24gcChhKXthPWFbMF07cmV0dXJuIHZvaWQgMD09PWE\/bnVsbDphfWZ1bmN0aW9uIEYoYSl7dmFyIGI9DQphWzBdO2lmKHZvaWQgMCE9PWIpe3ZhciBlPWEucG9wKCk7aWYoZSE9PWIpe2FbMF09ZTthOmZvcih2YXIgYz0wLGY9YS5sZW5ndGg7YzxmOyl7dmFyIGQ9MiooYysxKS0xLGc9YVtkXSxrPWQrMSxoPWFba107aWYodm9pZCAwIT09ZyYmMD5FKGcsZSkpdm9pZCAwIT09aCYmMD5FKGgsZyk\/KGFbY109aCxhW2tdPWUsYz1rKTooYVtjXT1nLGFbZF09ZSxjPWQpO2Vsc2UgaWYodm9pZCAwIT09aCYmMD5FKGgsZSkpYVtjXT1oLGFba109ZSxjPWs7ZWxzZSBicmVhayBhfX1yZXR1cm4gYn1yZXR1cm4gbnVsbH1mdW5jdGlvbiBFKGEsYil7dmFyIGU9YS5zb3J0SW5kZXgtYi5zb3J0SW5kZXg7cmV0dXJuIDAhPT1lP2U6YS5pZC1iLmlkfWZ1bmN0aW9uIFAoYSl7Zm9yKHZhciBiPXAocik7bnVsbCE9PWI7KXtpZihudWxsPT09Yi5jYWxsYmFjaylGKHIpO2Vsc2UgaWYoYi5zdGFydFRpbWU8PWEpRihyKSxiLnNvcnRJbmRleD1iLmV4cGlyYXRpb25UaW1lLE8ocSxiKTtlbHNlIGJyZWFrO2I9cChyKX19DQpmdW5jdGlvbiBRKGEpe3o9ITE7UChhKTtpZighdSlpZihudWxsIT09cChxKSl1PSEwLEEoUik7ZWxzZXt2YXIgYj1wKHIpO251bGwhPT1iJiZHKFEsYi5zdGFydFRpbWUtYSl9fWZ1bmN0aW9uIFIoYSxiKXt1PSExO3omJih6PSExLFMoKSk7SD0hMDt2YXIgZT1nO3RyeXtQKGIpO2ZvcihtPXAocSk7bnVsbCE9PW0mJighKG0uZXhwaXJhdGlvblRpbWU+Yil8fGEmJiFUKCkpOyl7dmFyIGM9bS5jYWxsYmFjaztpZigiZnVuY3Rpb24iPT09dHlwZW9mIGMpe20uY2FsbGJhY2s9bnVsbDtnPW0ucHJpb3JpdHlMZXZlbDt2YXIgZj1jKG0uZXhwaXJhdGlvblRpbWU8PWIpO2I9dCgpOyJmdW5jdGlvbiI9PT10eXBlb2YgZj9tLmNhbGxiYWNrPWY6bT09PXAocSkmJkYocSk7UChiKX1lbHNlIEYocSk7bT1wKHEpfWlmKG51bGwhPT1tKXZhciBkPSEwO2Vsc2V7dmFyIG49cChyKTtudWxsIT09biYmRyhRLG4uc3RhcnRUaW1lLWIpO2Q9ITF9cmV0dXJuIGR9ZmluYWxseXttPW51bGwsZz1lLEg9ITF9fQ0KdmFyIHc9NjAxMDMsaGE9NjAxMDY7Yy5GcmFnbWVudD02MDEwNztjLlN0cmljdE1vZGU9NjAxMDg7Yy5Qcm9maWxlcj02MDExNDt2YXIga2E9NjAxMDksbGE9NjAxMTAsbWE9NjAxMTI7Yy5TdXNwZW5zZT02MDExMzt2YXIgbmE9NjAxMTUsb2E9NjAxMTY7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5mb3Ipe3ZhciBkPVN5bWJvbC5mb3I7dz1kKCJyZWFjdC5lbGVtZW50Iik7aGE9ZCgicmVhY3QucG9ydGFsIik7Yy5GcmFnbWVudD1kKCJyZWFjdC5mcmFnbWVudCIpO2MuU3RyaWN0TW9kZT1kKCJyZWFjdC5zdHJpY3RfbW9kZSIpO2MuUHJvZmlsZXI9ZCgicmVhY3QucHJvZmlsZXIiKTtrYT1kKCJyZWFjdC5wcm92aWRlciIpO2xhPWQoInJlYWN0LmNvbnRleHQiKTttYT1kKCJyZWFjdC5mb3J3YXJkX3JlZiIpO2MuU3VzcGVuc2U9ZCgicmVhY3Quc3VzcGVuc2UiKTtuYT1kKCJyZWFjdC5tZW1vIik7b2E9ZCgicmVhY3QubGF6eSIpfXZhciBZPSJmdW5jdGlvbiI9PT0NCnR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvcix5YT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LFU9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oYSxiKXtpZihudWxsPT1hKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdC5hc3NpZ24gdGFyZ2V0IGNhbm5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpO2Zvcih2YXIgZT1PYmplY3QoYSksYz0xO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspe3ZhciBkPWFyZ3VtZW50c1tjXTtpZihudWxsIT1kKXt2YXIgZz12b2lkIDA7ZD1PYmplY3QoZCk7Zm9yKGcgaW4gZCl5YS5jYWxsKGQsZykmJihlW2ddPWRbZ10pfX1yZXR1cm4gZX0sYWE9e2lzTW91bnRlZDpmdW5jdGlvbihhKXtyZXR1cm4hMX0sZW5xdWV1ZUZvcmNlVXBkYXRlOmZ1bmN0aW9uKGEsYixjKXt9LGVucXVldWVSZXBsYWNlU3RhdGU6ZnVuY3Rpb24oYSxiLGMsZCl7fSxlbnF1ZXVlU2V0U3RhdGU6ZnVuY3Rpb24oYSxiLGMsZCl7fX0sWj17fTt2LnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50PQ0Ke307di5wcm90b3R5cGUuc2V0U3RhdGU9ZnVuY3Rpb24oYSxiKXtpZigib2JqZWN0IiE9PXR5cGVvZiBhJiYiZnVuY3Rpb24iIT09dHlwZW9mIGEmJm51bGwhPWEpdGhyb3cgRXJyb3IoeSg4NSkpO3RoaXMudXBkYXRlci5lbnF1ZXVlU2V0U3RhdGUodGhpcyxhLGIsInNldFN0YXRlIil9O3YucHJvdG90eXBlLmZvcmNlVXBkYXRlPWZ1bmN0aW9uKGEpe3RoaXMudXBkYXRlci5lbnF1ZXVlRm9yY2VVcGRhdGUodGhpcyxhLCJmb3JjZVVwZGF0ZSIpfTtiYS5wcm90b3R5cGU9di5wcm90b3R5cGU7ZD1LLnByb3RvdHlwZT1uZXcgYmE7ZC5jb25zdHJ1Y3Rvcj1LO1UoZCx2LnByb3RvdHlwZSk7ZC5pc1B1cmVSZWFjdENvbXBvbmVudD0hMDt2YXIgTD17Y3VycmVudDpudWxsfSxlYT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LGZhPXtrZXk6ITAscmVmOiEwLF9fc2VsZjohMCxfX3NvdXJjZTohMH0saWE9L1wvKy9nLGphPXtjdXJyZW50Om51bGx9LFY7aWYoIm9iamVjdCI9PT10eXBlb2YgcGVyZm9ybWFuY2UmJg0KImZ1bmN0aW9uIj09PXR5cGVvZiBwZXJmb3JtYW5jZS5ub3cpe3ZhciB6YT1wZXJmb3JtYW5jZTt2YXIgdD1mdW5jdGlvbigpe3JldHVybiB6YS5ub3coKX19ZWxzZXt2YXIgcGE9RGF0ZSxBYT1wYS5ub3coKTt0PWZ1bmN0aW9uKCl7cmV0dXJuIHBhLm5vdygpLUFhfX1pZigidW5kZWZpbmVkIj09PXR5cGVvZiB3aW5kb3d8fCJmdW5jdGlvbiIhPT10eXBlb2YgTWVzc2FnZUNoYW5uZWwpe3ZhciBCPW51bGwscWE9bnVsbCxyYT1mdW5jdGlvbigpe2lmKG51bGwhPT1CKXRyeXt2YXIgYT10KCk7QighMCxhKTtCPW51bGx9Y2F0Y2goYil7dGhyb3cgc2V0VGltZW91dChyYSwwKSxiO319O3ZhciBBPWZ1bmN0aW9uKGEpe251bGwhPT1CP3NldFRpbWVvdXQoQSwwLGEpOihCPWEsc2V0VGltZW91dChyYSwwKSl9O3ZhciBHPWZ1bmN0aW9uKGEsYil7cWE9c2V0VGltZW91dChhLGIpfTt2YXIgUz1mdW5jdGlvbigpe2NsZWFyVGltZW91dChxYSl9O3ZhciBUPWZ1bmN0aW9uKCl7cmV0dXJuITF9Ow0KZD1WPWZ1bmN0aW9uKCl7fX1lbHNle3ZhciBCYT13aW5kb3cuc2V0VGltZW91dCxDYT13aW5kb3cuY2xlYXJUaW1lb3V0OyJ1bmRlZmluZWQiIT09dHlwZW9mIGNvbnNvbGUmJihkPXdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSwiZnVuY3Rpb24iIT09dHlwZW9mIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUmJmNvbnNvbGUuZXJyb3IoIlRoaXMgYnJvd3NlciBkb2Vzbid0IHN1cHBvcnQgcmVxdWVzdEFuaW1hdGlvbkZyYW1lLiBNYWtlIHN1cmUgdGhhdCB5b3UgbG9hZCBhIHBvbHlmaWxsIGluIG9sZGVyIGJyb3dzZXJzLiBodHRwczovL3JlYWN0anMub3JnL2xpbmsvcmVhY3QtcG9seWZpbGxzIiksImZ1bmN0aW9uIiE9PXR5cGVvZiBkJiZjb25zb2xlLmVycm9yKCJUaGlzIGJyb3dzZXIgZG9lc24ndCBzdXBwb3J0IGNhbmNlbEFuaW1hdGlvbkZyYW1lLiBNYWtlIHN1cmUgdGhhdCB5b3UgbG9hZCBhIHBvbHlmaWxsIGluIG9sZGVyIGJyb3dzZXJzLiBodHRwczovL3JlYWN0anMub3JnL2xpbmsvcmVhY3QtcG9seWZpbGxzIikpOw0KdmFyIEk9ITEsSj1udWxsLFc9LTEsc2E9NSx0YT0wO1Q9ZnVuY3Rpb24oKXtyZXR1cm4gdCgpPj10YX07ZD1mdW5jdGlvbigpe307Vj1mdW5jdGlvbihhKXswPmF8fDEyNTxhP2NvbnNvbGUuZXJyb3IoImZvcmNlRnJhbWVSYXRlIHRha2VzIGEgcG9zaXRpdmUgaW50IGJldHdlZW4gMCBhbmQgMTI1LCBmb3JjaW5nIGZyYW1lIHJhdGVzIGhpZ2hlciB0aGFuIDEyNSBmcHMgaXMgbm90IHN1cHBvcnRlZCIpOnNhPTA8YT9NYXRoLmZsb29yKDFFMy9hKTo1fTt2YXIgdWE9bmV3IE1lc3NhZ2VDaGFubmVsLFg9dWEucG9ydDI7dWEucG9ydDEub25tZXNzYWdlPWZ1bmN0aW9uKCl7aWYobnVsbCE9PUope3ZhciBhPXQoKTt0YT1hK3NhO3RyeXtKKCEwLGEpP1gucG9zdE1lc3NhZ2UobnVsbCk6KEk9ITEsSj1udWxsKX1jYXRjaChiKXt0aHJvdyBYLnBvc3RNZXNzYWdlKG51bGwpLGI7fX1lbHNlIEk9ITF9O0E9ZnVuY3Rpb24oYSl7Sj1hO0l8fChJPSEwLFgucG9zdE1lc3NhZ2UobnVsbCkpfTtHPQ0KZnVuY3Rpb24oYSxiKXtXPUJhKGZ1bmN0aW9uKCl7YSh0KCkpfSxiKX07Uz1mdW5jdGlvbigpe0NhKFcpO1c9LTF9fXZhciBxPVtdLHI9W10sRGE9MSxtPW51bGwsZz0zLEg9ITEsdT0hMSx6PSExLEVhPTA7ZD17UmVhY3RDdXJyZW50RGlzcGF0Y2hlcjpqYSxSZWFjdEN1cnJlbnRPd25lcjpMLElzU29tZVJlbmRlcmVyQWN0aW5nOntjdXJyZW50OiExfSxSZWFjdEN1cnJlbnRCYXRjaENvbmZpZzp7dHJhbnNpdGlvbjowfSxhc3NpZ246VSxTY2hlZHVsZXI6e19fcHJvdG9fXzpudWxsLHVuc3RhYmxlX0ltbWVkaWF0ZVByaW9yaXR5OjEsdW5zdGFibGVfVXNlckJsb2NraW5nUHJpb3JpdHk6Mix1bnN0YWJsZV9Ob3JtYWxQcmlvcml0eTozLHVuc3RhYmxlX0lkbGVQcmlvcml0eTo1LHVuc3RhYmxlX0xvd1ByaW9yaXR5OjQsdW5zdGFibGVfcnVuV2l0aFByaW9yaXR5OmZ1bmN0aW9uKGEsYil7c3dpdGNoKGEpe2Nhc2UgMTpjYXNlIDI6Y2FzZSAzOmNhc2UgNDpjYXNlIDU6YnJlYWs7ZGVmYXVsdDphPQ0KM312YXIgYz1nO2c9YTt0cnl7cmV0dXJuIGIoKX1maW5hbGx5e2c9Y319LHVuc3RhYmxlX25leHQ6ZnVuY3Rpb24oYSl7c3dpdGNoKGcpe2Nhc2UgMTpjYXNlIDI6Y2FzZSAzOnZhciBiPTM7YnJlYWs7ZGVmYXVsdDpiPWd9dmFyIGM9ZztnPWI7dHJ5e3JldHVybiBhKCl9ZmluYWxseXtnPWN9fSx1bnN0YWJsZV9zY2hlZHVsZUNhbGxiYWNrOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD10KCk7Im9iamVjdCI9PT10eXBlb2YgYyYmbnVsbCE9PWM\/KGM9Yy5kZWxheSxjPSJudW1iZXIiPT09dHlwZW9mIGMmJjA8Yz9kK2M6ZCk6Yz1kO3N3aXRjaChhKXtjYXNlIDE6dmFyIGU9LTE7YnJlYWs7Y2FzZSAyOmU9MjUwO2JyZWFrO2Nhc2UgNTplPTEwNzM3NDE4MjM7YnJlYWs7Y2FzZSA0OmU9MUU0O2JyZWFrO2RlZmF1bHQ6ZT01RTN9ZT1jK2U7YT17aWQ6RGErKyxjYWxsYmFjazpiLHByaW9yaXR5TGV2ZWw6YSxzdGFydFRpbWU6YyxleHBpcmF0aW9uVGltZTplLHNvcnRJbmRleDotMX07Yz5kPyhhLnNvcnRJbmRleD0NCmMsTyhyLGEpLG51bGw9PT1wKHEpJiZhPT09cChyKSYmKHo\/UygpOno9ITAsRyhRLGMtZCkpKTooYS5zb3J0SW5kZXg9ZSxPKHEsYSksdXx8SHx8KHU9ITAsQShSKSkpO3JldHVybiBhfSx1bnN0YWJsZV9jYW5jZWxDYWxsYmFjazpmdW5jdGlvbihhKXthLmNhbGxiYWNrPW51bGx9LHVuc3RhYmxlX3dyYXBDYWxsYmFjazpmdW5jdGlvbihhKXt2YXIgYj1nO3JldHVybiBmdW5jdGlvbigpe3ZhciBjPWc7Zz1iO3RyeXtyZXR1cm4gYS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZmluYWxseXtnPWN9fX0sdW5zdGFibGVfZ2V0Q3VycmVudFByaW9yaXR5TGV2ZWw6ZnVuY3Rpb24oKXtyZXR1cm4gZ30sZ2V0IHVuc3RhYmxlX3Nob3VsZFlpZWxkKCl7cmV0dXJuIFR9LHVuc3RhYmxlX3JlcXVlc3RQYWludDpkLHVuc3RhYmxlX2NvbnRpbnVlRXhlY3V0aW9uOmZ1bmN0aW9uKCl7dXx8SHx8KHU9ITAsQShSKSl9LHVuc3RhYmxlX3BhdXNlRXhlY3V0aW9uOmZ1bmN0aW9uKCl7fSx1bnN0YWJsZV9nZXRGaXJzdENhbGxiYWNrTm9kZTpmdW5jdGlvbigpe3JldHVybiBwKHEpfSwNCmdldCB1bnN0YWJsZV9ub3coKXtyZXR1cm4gdH0sZ2V0IHVuc3RhYmxlX2ZvcmNlRnJhbWVSYXRlKCl7cmV0dXJuIFZ9LHVuc3RhYmxlX1Byb2ZpbGluZzpudWxsfSxTY2hlZHVsZXJUcmFjaW5nOntfX3Byb3RvX186bnVsbCxfX2ludGVyYWN0aW9uc1JlZjpudWxsLF9fc3Vic2NyaWJlclJlZjpudWxsLHVuc3RhYmxlX2NsZWFyOmZ1bmN0aW9uKGEpe3JldHVybiBhKCl9LHVuc3RhYmxlX2dldEN1cnJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sdW5zdGFibGVfZ2V0VGhyZWFkSUQ6ZnVuY3Rpb24oKXtyZXR1cm4rK0VhfSx1bnN0YWJsZV90cmFjZTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGMoKX0sdW5zdGFibGVfd3JhcDpmdW5jdGlvbihhKXtyZXR1cm4gYX0sdW5zdGFibGVfc3Vic2NyaWJlOmZ1bmN0aW9uKGEpe30sdW5zdGFibGVfdW5zdWJzY3JpYmU6ZnVuY3Rpb24oYSl7fX19O2MuQ2hpbGRyZW49e21hcDpELGZvckVhY2g6ZnVuY3Rpb24oYSxiLGMpe0QoYSxmdW5jdGlvbigpe2IuYXBwbHkodGhpcywNCmFyZ3VtZW50cyl9LGMpfSxjb3VudDpmdW5jdGlvbihhKXt2YXIgYj0wO0QoYSxmdW5jdGlvbigpe2IrK30pO3JldHVybiBifSx0b0FycmF5OmZ1bmN0aW9uKGEpe3JldHVybiBEKGEsZnVuY3Rpb24oYSl7cmV0dXJuIGF9KXx8W119LG9ubHk6ZnVuY3Rpb24oYSl7aWYoIU0oYSkpdGhyb3cgRXJyb3IoeSgxNDMpKTtyZXR1cm4gYX19O2MuQ29tcG9uZW50PXY7Yy5QdXJlQ29tcG9uZW50PUs7Yy5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRD1kO2MuY2xvbmVFbGVtZW50PWZ1bmN0aW9uKGEsYixjKXtpZihudWxsPT09YXx8dm9pZCAwPT09YSl0aHJvdyBFcnJvcih5KDI2NyxhKSk7dmFyIGQ9VSh7fSxhLnByb3BzKSxlPWEua2V5LGc9YS5yZWYsbj1hLl9vd25lcjtpZihudWxsIT1iKXt2b2lkIDAhPT1iLnJlZiYmKGc9Yi5yZWYsbj1MLmN1cnJlbnQpO3ZvaWQgMCE9PWIua2V5JiYoZT0iIitiLmtleSk7aWYoYS50eXBlJiZhLnR5cGUuZGVmYXVsdFByb3BzKXZhciBrPQ0KYS50eXBlLmRlZmF1bHRQcm9wcztmb3IoaCBpbiBiKWVhLmNhbGwoYixoKSYmIWZhLmhhc093blByb3BlcnR5KGgpJiYoZFtoXT12b2lkIDA9PT1iW2hdJiZ2b2lkIDAhPT1rP2tbaF06YltoXSl9dmFyIGg9YXJndW1lbnRzLmxlbmd0aC0yO2lmKDE9PT1oKWQuY2hpbGRyZW49YztlbHNlIGlmKDE8aCl7az1BcnJheShoKTtmb3IodmFyIG09MDttPGg7bSsrKWtbbV09YXJndW1lbnRzW20rMl07ZC5jaGlsZHJlbj1rfXJldHVybnskJHR5cGVvZjp3LHR5cGU6YS50eXBlLGtleTplLHJlZjpnLHByb3BzOmQsX293bmVyOm59fTtjLmNyZWF0ZUNvbnRleHQ9ZnVuY3Rpb24oYSxiKXt2b2lkIDA9PT1iJiYoYj1udWxsKTthPXskJHR5cGVvZjpsYSxfY2FsY3VsYXRlQ2hhbmdlZEJpdHM6YixfY3VycmVudFZhbHVlOmEsX2N1cnJlbnRWYWx1ZTI6YSxfdGhyZWFkQ291bnQ6MCxQcm92aWRlcjpudWxsLENvbnN1bWVyOm51bGx9O2EuUHJvdmlkZXI9eyQkdHlwZW9mOmthLF9jb250ZXh0OmF9O3JldHVybiBhLkNvbnN1bWVyPQ0KYX07Yy5jcmVhdGVFbGVtZW50PWNhO2MuY3JlYXRlRmFjdG9yeT1mdW5jdGlvbihhKXt2YXIgYj1jYS5iaW5kKG51bGwsYSk7Yi50eXBlPWE7cmV0dXJuIGJ9O2MuY3JlYXRlUmVmPWZ1bmN0aW9uKCl7cmV0dXJue2N1cnJlbnQ6bnVsbH19O2MuZm9yd2FyZFJlZj1mdW5jdGlvbihhKXtyZXR1cm57JCR0eXBlb2Y6bWEscmVuZGVyOmF9fTtjLmlzVmFsaWRFbGVtZW50PU07Yy5sYXp5PWZ1bmN0aW9uKGEpe3JldHVybnskJHR5cGVvZjpvYSxfcGF5bG9hZDp7X3N0YXR1czotMSxfcmVzdWx0OmF9LF9pbml0OnhhfX07Yy5tZW1vPWZ1bmN0aW9uKGEsYil7cmV0dXJueyQkdHlwZW9mOm5hLHR5cGU6YSxjb21wYXJlOnZvaWQgMD09PWI\/bnVsbDpifX07Yy51c2VDYWxsYmFjaz1mdW5jdGlvbihhLGIpe3JldHVybiBuKCkudXNlQ2FsbGJhY2soYSxiKX07Yy51c2VDb250ZXh0PWZ1bmN0aW9uKGEsYil7cmV0dXJuIG4oKS51c2VDb250ZXh0KGEsYil9O2MudXNlRGVidWdWYWx1ZT1mdW5jdGlvbihhLA0KYil7fTtjLnVzZUVmZmVjdD1mdW5jdGlvbihhLGIpe3JldHVybiBuKCkudXNlRWZmZWN0KGEsYil9O2MudXNlSW1wZXJhdGl2ZUhhbmRsZT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIG4oKS51c2VJbXBlcmF0aXZlSGFuZGxlKGEsYixjKX07Yy51c2VMYXlvdXRFZmZlY3Q9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbigpLnVzZUxheW91dEVmZmVjdChhLGIpfTtjLnVzZU1lbW89ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbigpLnVzZU1lbW8oYSxiKX07Yy51c2VSZWR1Y2VyPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbigpLnVzZVJlZHVjZXIoYSxiLGMpfTtjLnVzZVJlZj1mdW5jdGlvbihhKXtyZXR1cm4gbigpLnVzZVJlZihhKX07Yy51c2VTdGF0ZT1mdW5jdGlvbihhKXtyZXR1cm4gbigpLnVzZVN0YXRlKGEpfTtjLnZlcnNpb249IjE3LjAuMCJ9KTsNCn0pKCk7DQo=\"><\/script><br \/>\n<script src=\"data:application\/javascript;base64,LyoqIEBsaWNlbnNlIFJlYWN0IHYxNy4wLjANCiAqIHJlYWN0LWRvbS5wcm9kdWN0aW9uLm1pbi5qcw0KICoNCiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLg0KICoNCiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZQ0KICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLg0KICovDQooZnVuY3Rpb24oKXsvKg0KIE1vZGVybml6ciAzLjAuMHByZSAoQ3VzdG9tIEJ1aWxkKSB8IE1JVA0KKi8NCid1c2Ugc3RyaWN0JzsoZnVuY3Rpb24oTSxoYSl7Im9iamVjdCI9PT10eXBlb2YgZXhwb3J0cyYmInVuZGVmaW5lZCIhPT10eXBlb2YgbW9kdWxlP2hhKGV4cG9ydHMscmVxdWlyZSgicmVhY3QiKSk6ImZ1bmN0aW9uIj09PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ\/ZGVmaW5lKFsiZXhwb3J0cyIsInJlYWN0Il0saGEpOihNPU18fHNlbGYsaGEoTS5SZWFjdERPTT17fSxNLlJlYWN0KSl9KSh0aGlzLGZ1bmN0aW9uKE0saGEpe2Z1bmN0aW9uIG0oYSl7Zm9yKHZhciBiPSJodHRwczovL3JlYWN0anMub3JnL2RvY3MvZXJyb3ItZGVjb2Rlci5odG1sP2ludmFyaWFudD0iK2EsYz0xO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspYis9IiZhcmdzW109IitlbmNvZGVVUklDb21wb25lbnQoYXJndW1lbnRzW2NdKTtyZXR1cm4iTWluaWZpZWQgUmVhY3QgZXJyb3IgIyIrYSsiOyB2aXNpdCAiK2IrIiBmb3IgdGhlIGZ1bGwgbWVzc2FnZSBvciB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgZm9yIGZ1bGwgZXJyb3JzIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuIn0NCmZ1bmN0aW9uIFRhKGEsYil7Z2IoYSxiKTtnYihhKyJDYXB0dXJlIixiKX1mdW5jdGlvbiBnYihhLGIpe0liW2FdPWI7Zm9yKGE9MDthPGIubGVuZ3RoO2ErKyl5Zi5hZGQoYlthXSl9ZnVuY3Rpb24ga2koYSl7aWYoemYuY2FsbChBZixhKSlyZXR1cm4hMDtpZih6Zi5jYWxsKEJmLGEpKXJldHVybiExO2lmKGxpLnRlc3QoYSkpcmV0dXJuIEFmW2FdPSEwO0JmW2FdPSEwO3JldHVybiExfWZ1bmN0aW9uIG1pKGEsYixjLGQpe2lmKG51bGwhPT1jJiYwPT09Yy50eXBlKXJldHVybiExO3N3aXRjaCh0eXBlb2YgYil7Y2FzZSAiZnVuY3Rpb24iOmNhc2UgInN5bWJvbCI6cmV0dXJuITA7Y2FzZSAiYm9vbGVhbiI6aWYoZClyZXR1cm4hMTtpZihudWxsIT09YylyZXR1cm4hYy5hY2NlcHRzQm9vbGVhbnM7YT1hLnRvTG93ZXJDYXNlKCkuc2xpY2UoMCw1KTtyZXR1cm4iZGF0YS0iIT09YSYmImFyaWEtIiE9PWE7ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24gbmkoYSxiLGMsZCl7aWYobnVsbD09PQ0KYnx8InVuZGVmaW5lZCI9PT10eXBlb2YgYnx8bWkoYSxiLGMsZCkpcmV0dXJuITA7aWYoZClyZXR1cm4hMTtpZihudWxsIT09Yylzd2l0Y2goYy50eXBlKXtjYXNlIDM6cmV0dXJuIWI7Y2FzZSA0OnJldHVybiExPT09YjtjYXNlIDU6cmV0dXJuIGlzTmFOKGIpO2Nhc2UgNjpyZXR1cm4gaXNOYU4oYil8fDE+Yn1yZXR1cm4hMX1mdW5jdGlvbiBRKGEsYixjLGQsZSxmLGcpe3RoaXMuYWNjZXB0c0Jvb2xlYW5zPTI9PT1ifHwzPT09Ynx8ND09PWI7dGhpcy5hdHRyaWJ1dGVOYW1lPWQ7dGhpcy5hdHRyaWJ1dGVOYW1lc3BhY2U9ZTt0aGlzLm11c3RVc2VQcm9wZXJ0eT1jO3RoaXMucHJvcGVydHlOYW1lPWE7dGhpcy50eXBlPWI7dGhpcy5zYW5pdGl6ZVVSTD1mO3RoaXMucmVtb3ZlRW1wdHlTdHJpbmc9Z31mdW5jdGlvbiBFZChhLGIsYyxkKXt2YXIgZT1JLmhhc093blByb3BlcnR5KGIpP0lbYl06bnVsbDt2YXIgZj1udWxsIT09ZT8wPT09ZS50eXBlOmQ\/ITE6ISgyPGIubGVuZ3RoKXx8DQoibyIhPT1iWzBdJiYiTyIhPT1iWzBdfHwibiIhPT1iWzFdJiYiTiIhPT1iWzFdPyExOiEwO2Z8fChuaShiLGMsZSxkKSYmKGM9bnVsbCksZHx8bnVsbD09PWU\/a2koYikmJihudWxsPT09Yz9hLnJlbW92ZUF0dHJpYnV0ZShiKTphLnNldEF0dHJpYnV0ZShiLCIiK2MpKTplLm11c3RVc2VQcm9wZXJ0eT9hW2UucHJvcGVydHlOYW1lXT1udWxsPT09Yz8zPT09ZS50eXBlPyExOiIiOmM6KGI9ZS5hdHRyaWJ1dGVOYW1lLGQ9ZS5hdHRyaWJ1dGVOYW1lc3BhY2UsbnVsbD09PWM\/YS5yZW1vdmVBdHRyaWJ1dGUoYik6KGU9ZS50eXBlLGM9Mz09PWV8fDQ9PT1lJiYhMD09PWM\/IiI6IiIrYyxkP2Euc2V0QXR0cmlidXRlTlMoZCxiLGMpOmEuc2V0QXR0cmlidXRlKGIsYykpKSl9ZnVuY3Rpb24gSmIoYSl7aWYobnVsbD09PWF8fCJvYmplY3QiIT09dHlwZW9mIGEpcmV0dXJuIG51bGw7YT1DZiYmYVtDZl18fGFbIkBAaXRlcmF0b3IiXTtyZXR1cm4iZnVuY3Rpb24iPT09dHlwZW9mIGE\/YTpudWxsfQ0KZnVuY3Rpb24gS2IoYSxiLGMpe2lmKHZvaWQgMD09PUZkKXRyeXt0aHJvdyBFcnJvcigpO31jYXRjaChkKXtGZD0oYj1kLnN0YWNrLnRyaW0oKS5tYXRjaCgvXG4oICooYXQgKT8pLykpJiZiWzFdfHwiIn1yZXR1cm4iXG4iK0ZkK2F9ZnVuY3Rpb24gQmMoYSxiKXtpZighYXx8R2QpcmV0dXJuIiI7R2Q9ITA7dmFyIGM9RXJyb3IucHJlcGFyZVN0YWNrVHJhY2U7RXJyb3IucHJlcGFyZVN0YWNrVHJhY2U9dm9pZCAwO3RyeXtpZihiKWlmKGI9ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigpO30sT2JqZWN0LmRlZmluZVByb3BlcnR5KGIucHJvdG90eXBlLCJwcm9wcyIse3NldDpmdW5jdGlvbigpe3Rocm93IEVycm9yKCk7fX0pLCJvYmplY3QiPT09dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QuY29uc3RydWN0KXt0cnl7UmVmbGVjdC5jb25zdHJ1Y3QoYixbXSl9Y2F0Y2goayl7dmFyIGQ9a31SZWZsZWN0LmNvbnN0cnVjdChhLFtdLGIpfWVsc2V7dHJ5e2IuY2FsbCgpfWNhdGNoKGspe2Q9a31hLmNhbGwoYi5wcm90b3R5cGUpfWVsc2V7dHJ5e3Rocm93IEVycm9yKCk7DQp9Y2F0Y2goayl7ZD1rfWEoKX19Y2F0Y2goayl7aWYoayYmZCYmInN0cmluZyI9PT10eXBlb2Ygay5zdGFjayl7Zm9yKHZhciBlPWsuc3RhY2suc3BsaXQoIlxuIiksZj1kLnN0YWNrLnNwbGl0KCJcbiIpLGc9ZS5sZW5ndGgtMSxoPWYubGVuZ3RoLTE7MTw9ZyYmMDw9aCYmZVtnXSE9PWZbaF07KWgtLTtmb3IoOzE8PWcmJjA8PWg7Zy0tLGgtLSlpZihlW2ddIT09ZltoXSl7aWYoMSE9PWd8fDEhPT1oKXtkbyBpZihnLS0saC0tLDA+aHx8ZVtnXSE9PWZbaF0pcmV0dXJuIlxuIitlW2ddLnJlcGxhY2UoIiBhdCBuZXcgIiwiIGF0ICIpO3doaWxlKDE8PWcmJjA8PWgpfWJyZWFrfX19ZmluYWxseXtHZD0hMSxFcnJvci5wcmVwYXJlU3RhY2tUcmFjZT1jfXJldHVybihhPWE\/YS5kaXNwbGF5TmFtZXx8YS5uYW1lOiIiKT9LYihhKToiIn1mdW5jdGlvbiBvaShhKXtzd2l0Y2goYS50YWcpe2Nhc2UgNTpyZXR1cm4gS2IoYS50eXBlKTtjYXNlIDE2OnJldHVybiBLYigiTGF6eSIpO2Nhc2UgMTM6cmV0dXJuIEtiKCJTdXNwZW5zZSIpOw0KY2FzZSAxOTpyZXR1cm4gS2IoIlN1c3BlbnNlTGlzdCIpO2Nhc2UgMDpjYXNlIDI6Y2FzZSAxNTpyZXR1cm4gYT1CYyhhLnR5cGUsITEpLGE7Y2FzZSAxMTpyZXR1cm4gYT1CYyhhLnR5cGUucmVuZGVyLCExKSxhO2Nhc2UgMjI6cmV0dXJuIGE9QmMoYS50eXBlLl9yZW5kZXIsITEpLGE7Y2FzZSAxOnJldHVybiBhPUJjKGEudHlwZSwhMCksYTtkZWZhdWx0OnJldHVybiIifX1mdW5jdGlvbiBoYihhKXtpZihudWxsPT1hKXJldHVybiBudWxsO2lmKCJmdW5jdGlvbiI9PT10eXBlb2YgYSlyZXR1cm4gYS5kaXNwbGF5TmFtZXx8YS5uYW1lfHxudWxsO2lmKCJzdHJpbmciPT09dHlwZW9mIGEpcmV0dXJuIGE7c3dpdGNoKGEpe2Nhc2Ugd2E6cmV0dXJuIkZyYWdtZW50IjtjYXNlIFVhOnJldHVybiJQb3J0YWwiO2Nhc2UgTGI6cmV0dXJuIlByb2ZpbGVyIjtjYXNlIEhkOnJldHVybiJTdHJpY3RNb2RlIjtjYXNlIE1iOnJldHVybiJTdXNwZW5zZSI7Y2FzZSBDYzpyZXR1cm4iU3VzcGVuc2VMaXN0In1pZigib2JqZWN0Ij09PQ0KdHlwZW9mIGEpc3dpdGNoKGEuJCR0eXBlb2Ype2Nhc2UgSWQ6cmV0dXJuKGEuZGlzcGxheU5hbWV8fCJDb250ZXh0IikrIi5Db25zdW1lciI7Y2FzZSBKZDpyZXR1cm4oYS5fY29udGV4dC5kaXNwbGF5TmFtZXx8IkNvbnRleHQiKSsiLlByb3ZpZGVyIjtjYXNlIERjOnZhciBiPWEucmVuZGVyO2I9Yi5kaXNwbGF5TmFtZXx8Yi5uYW1lfHwiIjtyZXR1cm4gYS5kaXNwbGF5TmFtZXx8KCIiIT09Yj8iRm9yd2FyZFJlZigiK2IrIikiOiJGb3J3YXJkUmVmIik7Y2FzZSBFYzpyZXR1cm4gaGIoYS50eXBlKTtjYXNlIEtkOnJldHVybiBoYihhLl9yZW5kZXIpO2Nhc2UgTGQ6Yj1hLl9wYXlsb2FkO2E9YS5faW5pdDt0cnl7cmV0dXJuIGhiKGEoYikpfWNhdGNoKGMpe319cmV0dXJuIG51bGx9ZnVuY3Rpb24geGEoYSl7c3dpdGNoKHR5cGVvZiBhKXtjYXNlICJib29sZWFuIjpjYXNlICJudW1iZXIiOmNhc2UgIm9iamVjdCI6Y2FzZSAic3RyaW5nIjpjYXNlICJ1bmRlZmluZWQiOnJldHVybiBhOw0KZGVmYXVsdDpyZXR1cm4iIn19ZnVuY3Rpb24gRGYoYSl7dmFyIGI9YS50eXBlO3JldHVybihhPWEubm9kZU5hbWUpJiYiaW5wdXQiPT09YS50b0xvd2VyQ2FzZSgpJiYoImNoZWNrYm94Ij09PWJ8fCJyYWRpbyI9PT1iKX1mdW5jdGlvbiBwaShhKXt2YXIgYj1EZihhKT8iY2hlY2tlZCI6InZhbHVlIixjPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsYiksZD0iIithW2JdO2lmKCFhLmhhc093blByb3BlcnR5KGIpJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBjJiYiZnVuY3Rpb24iPT09dHlwZW9mIGMuZ2V0JiYiZnVuY3Rpb24iPT09dHlwZW9mIGMuc2V0KXt2YXIgZT1jLmdldCxmPWMuc2V0O09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLGIse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZS5jYWxsKHRoaXMpfSxzZXQ6ZnVuY3Rpb24oYSl7ZD0iIithO2YuY2FsbCh0aGlzLGEpfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLA0KYix7ZW51bWVyYWJsZTpjLmVudW1lcmFibGV9KTtyZXR1cm57Z2V0VmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gZH0sc2V0VmFsdWU6ZnVuY3Rpb24oYSl7ZD0iIithfSxzdG9wVHJhY2tpbmc6ZnVuY3Rpb24oKXthLl92YWx1ZVRyYWNrZXI9bnVsbDtkZWxldGUgYVtiXX19fX1mdW5jdGlvbiBGYyhhKXthLl92YWx1ZVRyYWNrZXJ8fChhLl92YWx1ZVRyYWNrZXI9cGkoYSkpfWZ1bmN0aW9uIEVmKGEpe2lmKCFhKXJldHVybiExO3ZhciBiPWEuX3ZhbHVlVHJhY2tlcjtpZighYilyZXR1cm4hMDt2YXIgYz1iLmdldFZhbHVlKCk7dmFyIGQ9IiI7YSYmKGQ9RGYoYSk\/YS5jaGVja2VkPyJ0cnVlIjoiZmFsc2UiOmEudmFsdWUpO2E9ZDtyZXR1cm4gYSE9PWM\/KGIuc2V0VmFsdWUoYSksITApOiExfWZ1bmN0aW9uIEdjKGEpe2E9YXx8KCJ1bmRlZmluZWQiIT09dHlwZW9mIGRvY3VtZW50P2RvY3VtZW50OnZvaWQgMCk7aWYoInVuZGVmaW5lZCI9PT10eXBlb2YgYSlyZXR1cm4gbnVsbDt0cnl7cmV0dXJuIGEuYWN0aXZlRWxlbWVudHx8DQphLmJvZHl9Y2F0Y2goYil7cmV0dXJuIGEuYm9keX19ZnVuY3Rpb24gTWQoYSxiKXt2YXIgYz1iLmNoZWNrZWQ7cmV0dXJuIEIoe30sYix7ZGVmYXVsdENoZWNrZWQ6dm9pZCAwLGRlZmF1bHRWYWx1ZTp2b2lkIDAsdmFsdWU6dm9pZCAwLGNoZWNrZWQ6bnVsbCE9Yz9jOmEuX3dyYXBwZXJTdGF0ZS5pbml0aWFsQ2hlY2tlZH0pfWZ1bmN0aW9uIEZmKGEsYil7dmFyIGM9bnVsbD09Yi5kZWZhdWx0VmFsdWU\/IiI6Yi5kZWZhdWx0VmFsdWUsZD1udWxsIT1iLmNoZWNrZWQ\/Yi5jaGVja2VkOmIuZGVmYXVsdENoZWNrZWQ7Yz14YShudWxsIT1iLnZhbHVlP2IudmFsdWU6Yyk7YS5fd3JhcHBlclN0YXRlPXtpbml0aWFsQ2hlY2tlZDpkLGluaXRpYWxWYWx1ZTpjLGNvbnRyb2xsZWQ6ImNoZWNrYm94Ij09PWIudHlwZXx8InJhZGlvIj09PWIudHlwZT9udWxsIT1iLmNoZWNrZWQ6bnVsbCE9Yi52YWx1ZX19ZnVuY3Rpb24gR2YoYSxiKXtiPWIuY2hlY2tlZDtudWxsIT1iJiZFZChhLCJjaGVja2VkIiwNCmIsITEpfWZ1bmN0aW9uIE5kKGEsYil7R2YoYSxiKTt2YXIgYz14YShiLnZhbHVlKSxkPWIudHlwZTtpZihudWxsIT1jKWlmKCJudW1iZXIiPT09ZCl7aWYoMD09PWMmJiIiPT09YS52YWx1ZXx8YS52YWx1ZSE9YylhLnZhbHVlPSIiK2N9ZWxzZSBhLnZhbHVlIT09IiIrYyYmKGEudmFsdWU9IiIrYyk7ZWxzZSBpZigic3VibWl0Ij09PWR8fCJyZXNldCI9PT1kKXthLnJlbW92ZUF0dHJpYnV0ZSgidmFsdWUiKTtyZXR1cm59Yi5oYXNPd25Qcm9wZXJ0eSgidmFsdWUiKT9PZChhLGIudHlwZSxjKTpiLmhhc093blByb3BlcnR5KCJkZWZhdWx0VmFsdWUiKSYmT2QoYSxiLnR5cGUseGEoYi5kZWZhdWx0VmFsdWUpKTtudWxsPT1iLmNoZWNrZWQmJm51bGwhPWIuZGVmYXVsdENoZWNrZWQmJihhLmRlZmF1bHRDaGVja2VkPSEhYi5kZWZhdWx0Q2hlY2tlZCl9ZnVuY3Rpb24gSGYoYSxiLGMpe2lmKGIuaGFzT3duUHJvcGVydHkoInZhbHVlIil8fGIuaGFzT3duUHJvcGVydHkoImRlZmF1bHRWYWx1ZSIpKXt2YXIgZD0NCmIudHlwZTtpZighKCJzdWJtaXQiIT09ZCYmInJlc2V0IiE9PWR8fHZvaWQgMCE9PWIudmFsdWUmJm51bGwhPT1iLnZhbHVlKSlyZXR1cm47Yj0iIithLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlO2N8fGI9PT1hLnZhbHVlfHwoYS52YWx1ZT1iKTthLmRlZmF1bHRWYWx1ZT1ifWM9YS5uYW1lOyIiIT09YyYmKGEubmFtZT0iIik7YS5kZWZhdWx0Q2hlY2tlZD0hIWEuX3dyYXBwZXJTdGF0ZS5pbml0aWFsQ2hlY2tlZDsiIiE9PWMmJihhLm5hbWU9Yyl9ZnVuY3Rpb24gT2QoYSxiLGMpe2lmKCJudW1iZXIiIT09Ynx8R2MoYS5vd25lckRvY3VtZW50KSE9PWEpbnVsbD09Yz9hLmRlZmF1bHRWYWx1ZT0iIithLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlOmEuZGVmYXVsdFZhbHVlIT09IiIrYyYmKGEuZGVmYXVsdFZhbHVlPSIiK2MpfWZ1bmN0aW9uIHFpKGEpe3ZhciBiPSIiO2hhLkNoaWxkcmVuLmZvckVhY2goYSxmdW5jdGlvbihhKXtudWxsIT1hJiYoYis9YSl9KTtyZXR1cm4gYn0NCmZ1bmN0aW9uIFBkKGEsYil7YT1CKHtjaGlsZHJlbjp2b2lkIDB9LGIpO2lmKGI9cWkoYi5jaGlsZHJlbikpYS5jaGlsZHJlbj1iO3JldHVybiBhfWZ1bmN0aW9uIGliKGEsYixjLGQpe2E9YS5vcHRpb25zO2lmKGIpe2I9e307Zm9yKHZhciBlPTA7ZTxjLmxlbmd0aDtlKyspYlsiJCIrY1tlXV09ITA7Zm9yKGM9MDtjPGEubGVuZ3RoO2MrKyllPWIuaGFzT3duUHJvcGVydHkoIiQiK2FbY10udmFsdWUpLGFbY10uc2VsZWN0ZWQhPT1lJiYoYVtjXS5zZWxlY3RlZD1lKSxlJiZkJiYoYVtjXS5kZWZhdWx0U2VsZWN0ZWQ9ITApfWVsc2V7Yz0iIit4YShjKTtiPW51bGw7Zm9yKGU9MDtlPGEubGVuZ3RoO2UrKyl7aWYoYVtlXS52YWx1ZT09PWMpe2FbZV0uc2VsZWN0ZWQ9ITA7ZCYmKGFbZV0uZGVmYXVsdFNlbGVjdGVkPSEwKTtyZXR1cm59bnVsbCE9PWJ8fGFbZV0uZGlzYWJsZWR8fChiPWFbZV0pfW51bGwhPT1iJiYoYi5zZWxlY3RlZD0hMCl9fWZ1bmN0aW9uIFFkKGEsYil7aWYobnVsbCE9DQpiLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKXRocm93IEVycm9yKG0oOTEpKTtyZXR1cm4gQih7fSxiLHt2YWx1ZTp2b2lkIDAsZGVmYXVsdFZhbHVlOnZvaWQgMCxjaGlsZHJlbjoiIithLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlfSl9ZnVuY3Rpb24gSWYoYSxiKXt2YXIgYz1iLnZhbHVlO2lmKG51bGw9PWMpe2M9Yi5jaGlsZHJlbjtiPWIuZGVmYXVsdFZhbHVlO2lmKG51bGwhPWMpe2lmKG51bGwhPWIpdGhyb3cgRXJyb3IobSg5MikpO2lmKEFycmF5LmlzQXJyYXkoYykpe2lmKCEoMT49Yy5sZW5ndGgpKXRocm93IEVycm9yKG0oOTMpKTtjPWNbMF19Yj1jfW51bGw9PWImJihiPSIiKTtjPWJ9YS5fd3JhcHBlclN0YXRlPXtpbml0aWFsVmFsdWU6eGEoYyl9fWZ1bmN0aW9uIEpmKGEsYil7dmFyIGM9eGEoYi52YWx1ZSksZD14YShiLmRlZmF1bHRWYWx1ZSk7bnVsbCE9YyYmKGM9IiIrYyxjIT09YS52YWx1ZSYmKGEudmFsdWU9YyksbnVsbD09Yi5kZWZhdWx0VmFsdWUmJmEuZGVmYXVsdFZhbHVlIT09DQpjJiYoYS5kZWZhdWx0VmFsdWU9YykpO251bGwhPWQmJihhLmRlZmF1bHRWYWx1ZT0iIitkKX1mdW5jdGlvbiBLZihhLGIpe2I9YS50ZXh0Q29udGVudDtiPT09YS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZSYmIiIhPT1iJiZudWxsIT09YiYmKGEudmFsdWU9Yil9ZnVuY3Rpb24gTGYoYSl7c3dpdGNoKGEpe2Nhc2UgInN2ZyI6cmV0dXJuImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIjtjYXNlICJtYXRoIjpyZXR1cm4iaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCI7ZGVmYXVsdDpyZXR1cm4iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCJ9fWZ1bmN0aW9uIFJkKGEsYil7cmV0dXJuIG51bGw9PWF8fCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj09PWE\/TGYoYik6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj09PWEmJiJmb3JlaWduT2JqZWN0Ij09PWI\/Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiOmF9ZnVuY3Rpb24gTWYoYSxiLGMpe3JldHVybiBudWxsPT0NCmJ8fCJib29sZWFuIj09PXR5cGVvZiBifHwiIj09PWI\/IiI6Y3x8Im51bWJlciIhPT10eXBlb2YgYnx8MD09PWJ8fE5iLmhhc093blByb3BlcnR5KGEpJiZOYlthXT8oIiIrYikudHJpbSgpOmIrInB4In1mdW5jdGlvbiBOZihhLGIpe2E9YS5zdHlsZTtmb3IodmFyIGMgaW4gYilpZihiLmhhc093blByb3BlcnR5KGMpKXt2YXIgZD0wPT09Yy5pbmRleE9mKCItLSIpLGU9TWYoYyxiW2NdLGQpOyJmbG9hdCI9PT1jJiYoYz0iY3NzRmxvYXQiKTtkP2Euc2V0UHJvcGVydHkoYyxlKTphW2NdPWV9fWZ1bmN0aW9uIFNkKGEsYil7aWYoYil7aWYocmlbYV0mJihudWxsIT1iLmNoaWxkcmVufHxudWxsIT1iLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKSl0aHJvdyBFcnJvcihtKDEzNyxhKSk7aWYobnVsbCE9Yi5kYW5nZXJvdXNseVNldElubmVySFRNTCl7aWYobnVsbCE9Yi5jaGlsZHJlbil0aHJvdyBFcnJvcihtKDYwKSk7aWYoISgib2JqZWN0Ij09PXR5cGVvZiBiLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MJiYNCiJfX2h0bWwiaW4gYi5kYW5nZXJvdXNseVNldElubmVySFRNTCkpdGhyb3cgRXJyb3IobSg2MSkpO31pZihudWxsIT1iLnN0eWxlJiYib2JqZWN0IiE9PXR5cGVvZiBiLnN0eWxlKXRocm93IEVycm9yKG0oNjIpKTt9fWZ1bmN0aW9uIFRkKGEsYil7aWYoLTE9PT1hLmluZGV4T2YoIi0iKSlyZXR1cm4ic3RyaW5nIj09PXR5cGVvZiBiLmlzO3N3aXRjaChhKXtjYXNlICJhbm5vdGF0aW9uLXhtbCI6Y2FzZSAiY29sb3ItcHJvZmlsZSI6Y2FzZSAiZm9udC1mYWNlIjpjYXNlICJmb250LWZhY2Utc3JjIjpjYXNlICJmb250LWZhY2UtdXJpIjpjYXNlICJmb250LWZhY2UtZm9ybWF0IjpjYXNlICJmb250LWZhY2UtbmFtZSI6Y2FzZSAibWlzc2luZy1nbHlwaCI6cmV0dXJuITE7ZGVmYXVsdDpyZXR1cm4hMH19ZnVuY3Rpb24gVWQoYSl7YT1hLnRhcmdldHx8YS5zcmNFbGVtZW50fHx3aW5kb3c7YS5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCYmKGE9YS5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCk7DQpyZXR1cm4gMz09PWEubm9kZVR5cGU\/YS5wYXJlbnROb2RlOmF9ZnVuY3Rpb24gT2YoYSl7aWYoYT1PYihhKSl7aWYoImZ1bmN0aW9uIiE9PXR5cGVvZiBWZCl0aHJvdyBFcnJvcihtKDI4MCkpO3ZhciBiPWEuc3RhdGVOb2RlO2ImJihiPUhjKGIpLFZkKGEuc3RhdGVOb2RlLGEudHlwZSxiKSl9fWZ1bmN0aW9uIFBmKGEpe2piP2tiP2tiLnB1c2goYSk6a2I9W2FdOmpiPWF9ZnVuY3Rpb24gUWYoKXtpZihqYil7dmFyIGE9amIsYj1rYjtrYj1qYj1udWxsO09mKGEpO2lmKGIpZm9yKGE9MDthPGIubGVuZ3RoO2ErKylPZihiW2FdKX19ZnVuY3Rpb24gV2QoKXtpZihudWxsIT09amJ8fG51bGwhPT1rYilYZCgpLFFmKCl9ZnVuY3Rpb24gc2koYSxiLGMpe2lmKFlkKXJldHVybiBhKGIsYyk7WWQ9ITA7dHJ5e3JldHVybiBSZihhLGIsYyl9ZmluYWxseXtZZD0hMSxXZCgpfX1mdW5jdGlvbiBQYihhLGIpe3ZhciBjPWEuc3RhdGVOb2RlO2lmKG51bGw9PT1jKXJldHVybiBudWxsO3ZhciBkPUhjKGMpOw0KaWYobnVsbD09PWQpcmV0dXJuIG51bGw7Yz1kW2JdO2E6c3dpdGNoKGIpe2Nhc2UgIm9uQ2xpY2siOmNhc2UgIm9uQ2xpY2tDYXB0dXJlIjpjYXNlICJvbkRvdWJsZUNsaWNrIjpjYXNlICJvbkRvdWJsZUNsaWNrQ2FwdHVyZSI6Y2FzZSAib25Nb3VzZURvd24iOmNhc2UgIm9uTW91c2VEb3duQ2FwdHVyZSI6Y2FzZSAib25Nb3VzZU1vdmUiOmNhc2UgIm9uTW91c2VNb3ZlQ2FwdHVyZSI6Y2FzZSAib25Nb3VzZVVwIjpjYXNlICJvbk1vdXNlVXBDYXB0dXJlIjpjYXNlICJvbk1vdXNlRW50ZXIiOihkPSFkLmRpc2FibGVkKXx8KGE9YS50eXBlLGQ9ISgiYnV0dG9uIj09PWF8fCJpbnB1dCI9PT1hfHwic2VsZWN0Ij09PWF8fCJ0ZXh0YXJlYSI9PT1hKSk7YT0hZDticmVhayBhO2RlZmF1bHQ6YT0hMX1pZihhKXJldHVybiBudWxsO2lmKGMmJiJmdW5jdGlvbiIhPT10eXBlb2YgYyl0aHJvdyBFcnJvcihtKDIzMSxiLHR5cGVvZiBjKSk7cmV0dXJuIGN9ZnVuY3Rpb24gdGkoYSxiLGMsZCxlLA0KZixnLGgsayl7UWI9ITE7SWM9bnVsbDt1aS5hcHBseSh2aSxhcmd1bWVudHMpfWZ1bmN0aW9uIHdpKGEsYixjLGQsZSxmLGcsaCxrKXt0aS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7aWYoUWIpe2lmKFFiKXt2YXIgdj1JYztRYj0hMTtJYz1udWxsfWVsc2UgdGhyb3cgRXJyb3IobSgxOTgpKTtKY3x8KEpjPSEwLFpkPXYpfX1mdW5jdGlvbiBWYShhKXt2YXIgYj1hLGM9YTtpZihhLmFsdGVybmF0ZSlmb3IoO2IucmV0dXJuOyliPWIucmV0dXJuO2Vsc2V7YT1iO2RvIGI9YSwwIT09KGIuZmxhZ3MmMTAyNikmJihjPWIucmV0dXJuKSxhPWIucmV0dXJuO3doaWxlKGEpfXJldHVybiAzPT09Yi50YWc\/YzpudWxsfWZ1bmN0aW9uIFNmKGEpe2lmKDEzPT09YS50YWcpe3ZhciBiPWEubWVtb2l6ZWRTdGF0ZTtudWxsPT09YiYmKGE9YS5hbHRlcm5hdGUsbnVsbCE9PWEmJihiPWEubWVtb2l6ZWRTdGF0ZSkpO2lmKG51bGwhPT1iKXJldHVybiBiLmRlaHlkcmF0ZWR9cmV0dXJuIG51bGx9ZnVuY3Rpb24gVGYoYSl7aWYoVmEoYSkhPT0NCmEpdGhyb3cgRXJyb3IobSgxODgpKTt9ZnVuY3Rpb24geGkoYSl7dmFyIGI9YS5hbHRlcm5hdGU7aWYoIWIpe2I9VmEoYSk7aWYobnVsbD09PWIpdGhyb3cgRXJyb3IobSgxODgpKTtyZXR1cm4gYiE9PWE\/bnVsbDphfWZvcih2YXIgYz1hLGQ9Yjs7KXt2YXIgZT1jLnJldHVybjtpZihudWxsPT09ZSlicmVhazt2YXIgZj1lLmFsdGVybmF0ZTtpZihudWxsPT09Zil7ZD1lLnJldHVybjtpZihudWxsIT09ZCl7Yz1kO2NvbnRpbnVlfWJyZWFrfWlmKGUuY2hpbGQ9PT1mLmNoaWxkKXtmb3IoZj1lLmNoaWxkO2Y7KXtpZihmPT09YylyZXR1cm4gVGYoZSksYTtpZihmPT09ZClyZXR1cm4gVGYoZSksYjtmPWYuc2libGluZ310aHJvdyBFcnJvcihtKDE4OCkpO31pZihjLnJldHVybiE9PWQucmV0dXJuKWM9ZSxkPWY7ZWxzZXtmb3IodmFyIGc9ITEsaD1lLmNoaWxkO2g7KXtpZihoPT09Yyl7Zz0hMDtjPWU7ZD1mO2JyZWFrfWlmKGg9PT1kKXtnPSEwO2Q9ZTtjPWY7YnJlYWt9aD1oLnNpYmxpbmd9aWYoIWcpe2ZvcihoPQ0KZi5jaGlsZDtoOyl7aWYoaD09PWMpe2c9ITA7Yz1mO2Q9ZTticmVha31pZihoPT09ZCl7Zz0hMDtkPWY7Yz1lO2JyZWFrfWg9aC5zaWJsaW5nfWlmKCFnKXRocm93IEVycm9yKG0oMTg5KSk7fX1pZihjLmFsdGVybmF0ZSE9PWQpdGhyb3cgRXJyb3IobSgxOTApKTt9aWYoMyE9PWMudGFnKXRocm93IEVycm9yKG0oMTg4KSk7cmV0dXJuIGMuc3RhdGVOb2RlLmN1cnJlbnQ9PT1jP2E6Yn1mdW5jdGlvbiBVZihhKXthPXhpKGEpO2lmKCFhKXJldHVybiBudWxsO2Zvcih2YXIgYj1hOzspe2lmKDU9PT1iLnRhZ3x8Nj09PWIudGFnKXJldHVybiBiO2lmKGIuY2hpbGQpYi5jaGlsZC5yZXR1cm49YixiPWIuY2hpbGQ7ZWxzZXtpZihiPT09YSlicmVhaztmb3IoOyFiLnNpYmxpbmc7KXtpZighYi5yZXR1cm58fGIucmV0dXJuPT09YSlyZXR1cm4gbnVsbDtiPWIucmV0dXJufWIuc2libGluZy5yZXR1cm49Yi5yZXR1cm47Yj1iLnNpYmxpbmd9fXJldHVybiBudWxsfWZ1bmN0aW9uIFZmKGEsYil7Zm9yKHZhciBjPQ0KYS5hbHRlcm5hdGU7bnVsbCE9PWI7KXtpZihiPT09YXx8Yj09PWMpcmV0dXJuITA7Yj1iLnJldHVybn1yZXR1cm4hMX1mdW5jdGlvbiAkZChhLGIsYyxkLGUpe3JldHVybntibG9ja2VkT246YSxkb21FdmVudE5hbWU6YixldmVudFN5c3RlbUZsYWdzOmN8MTYsbmF0aXZlRXZlbnQ6ZSx0YXJnZXRDb250YWluZXJzOltkXX19ZnVuY3Rpb24gV2YoYSxiKXtzd2l0Y2goYSl7Y2FzZSAiZm9jdXNpbiI6Y2FzZSAiZm9jdXNvdXQiOnlhPW51bGw7YnJlYWs7Y2FzZSAiZHJhZ2VudGVyIjpjYXNlICJkcmFnbGVhdmUiOnphPW51bGw7YnJlYWs7Y2FzZSAibW91c2VvdmVyIjpjYXNlICJtb3VzZW91dCI6QWE9bnVsbDticmVhaztjYXNlICJwb2ludGVyb3ZlciI6Y2FzZSAicG9pbnRlcm91dCI6UmIuZGVsZXRlKGIucG9pbnRlcklkKTticmVhaztjYXNlICJnb3Rwb2ludGVyY2FwdHVyZSI6Y2FzZSAibG9zdHBvaW50ZXJjYXB0dXJlIjpTYi5kZWxldGUoYi5wb2ludGVySWQpfX1mdW5jdGlvbiBUYihhLA0KYixjLGQsZSxmKXtpZihudWxsPT09YXx8YS5uYXRpdmVFdmVudCE9PWYpcmV0dXJuIGE9JGQoYixjLGQsZSxmKSxudWxsIT09YiYmKGI9T2IoYiksbnVsbCE9PWImJlhmKGIpKSxhO2EuZXZlbnRTeXN0ZW1GbGFnc3w9ZDtiPWEudGFyZ2V0Q29udGFpbmVycztudWxsIT09ZSYmLTE9PT1iLmluZGV4T2YoZSkmJmIucHVzaChlKTtyZXR1cm4gYX1mdW5jdGlvbiB5aShhLGIsYyxkLGUpe3N3aXRjaChiKXtjYXNlICJmb2N1c2luIjpyZXR1cm4geWE9VGIoeWEsYSxiLGMsZCxlKSwhMDtjYXNlICJkcmFnZW50ZXIiOnJldHVybiB6YT1UYih6YSxhLGIsYyxkLGUpLCEwO2Nhc2UgIm1vdXNlb3ZlciI6cmV0dXJuIEFhPVRiKEFhLGEsYixjLGQsZSksITA7Y2FzZSAicG9pbnRlcm92ZXIiOnZhciBmPWUucG9pbnRlcklkO1JiLnNldChmLFRiKFJiLmdldChmKXx8bnVsbCxhLGIsYyxkLGUpKTtyZXR1cm4hMDtjYXNlICJnb3Rwb2ludGVyY2FwdHVyZSI6cmV0dXJuIGY9ZS5wb2ludGVySWQsU2Iuc2V0KGYsDQpUYihTYi5nZXQoZil8fG51bGwsYSxiLGMsZCxlKSksITB9cmV0dXJuITF9ZnVuY3Rpb24gemkoYSl7dmFyIGI9V2EoYS50YXJnZXQpO2lmKG51bGwhPT1iKXt2YXIgYz1WYShiKTtpZihudWxsIT09YylpZihiPWMudGFnLDEzPT09Yil7aWYoYj1TZihjKSxudWxsIT09Yil7YS5ibG9ja2VkT249YjtBaShhLmxhbmVQcmlvcml0eSxmdW5jdGlvbigpe2FlKGEucHJpb3JpdHksZnVuY3Rpb24oKXtCaShjKX0pfSk7cmV0dXJufX1lbHNlIGlmKDM9PT1iJiZjLnN0YXRlTm9kZS5oeWRyYXRlKXthLmJsb2NrZWRPbj0zPT09Yy50YWc\/Yy5zdGF0ZU5vZGUuY29udGFpbmVySW5mbzpudWxsO3JldHVybn19YS5ibG9ja2VkT249bnVsbH1mdW5jdGlvbiBLYyhhKXtpZihudWxsIT09YS5ibG9ja2VkT24pcmV0dXJuITE7Zm9yKHZhciBiPWEudGFyZ2V0Q29udGFpbmVyczswPGIubGVuZ3RoOyl7dmFyIGM9YmUoYS5kb21FdmVudE5hbWUsYS5ldmVudFN5c3RlbUZsYWdzLGJbMF0sYS5uYXRpdmVFdmVudCk7DQppZihudWxsIT09YylyZXR1cm4gYj1PYihjKSxudWxsIT09YiYmWGYoYiksYS5ibG9ja2VkT249YywhMTtiLnNoaWZ0KCl9cmV0dXJuITB9ZnVuY3Rpb24gWWYoYSxiLGMpe0tjKGEpJiZjLmRlbGV0ZShiKX1mdW5jdGlvbiBDaSgpe2ZvcihjZT0hMTswPGlhLmxlbmd0aDspe3ZhciBhPWlhWzBdO2lmKG51bGwhPT1hLmJsb2NrZWRPbil7YT1PYihhLmJsb2NrZWRPbik7bnVsbCE9PWEmJkRpKGEpO2JyZWFrfWZvcih2YXIgYj1hLnRhcmdldENvbnRhaW5lcnM7MDxiLmxlbmd0aDspe3ZhciBjPWJlKGEuZG9tRXZlbnROYW1lLGEuZXZlbnRTeXN0ZW1GbGFncyxiWzBdLGEubmF0aXZlRXZlbnQpO2lmKG51bGwhPT1jKXthLmJsb2NrZWRPbj1jO2JyZWFrfWIuc2hpZnQoKX1udWxsPT09YS5ibG9ja2VkT24mJmlhLnNoaWZ0KCl9bnVsbCE9PXlhJiZLYyh5YSkmJih5YT1udWxsKTtudWxsIT09emEmJktjKHphKSYmKHphPW51bGwpO251bGwhPT1BYSYmS2MoQWEpJiYoQWE9bnVsbCk7UmIuZm9yRWFjaChZZik7DQpTYi5mb3JFYWNoKFlmKX1mdW5jdGlvbiBVYihhLGIpe2EuYmxvY2tlZE9uPT09YiYmKGEuYmxvY2tlZE9uPW51bGwsY2V8fChjZT0hMCxaZigkZixDaSkpKX1mdW5jdGlvbiBhZyhhKXtpZigwPGlhLmxlbmd0aCl7VWIoaWFbMF0sYSk7Zm9yKHZhciBiPTE7YjxpYS5sZW5ndGg7YisrKXt2YXIgYz1pYVtiXTtjLmJsb2NrZWRPbj09PWEmJihjLmJsb2NrZWRPbj1udWxsKX19bnVsbCE9PXlhJiZVYih5YSxhKTtudWxsIT09emEmJlViKHphLGEpO251bGwhPT1BYSYmVWIoQWEsYSk7Yj1mdW5jdGlvbihiKXtyZXR1cm4gVWIoYixhKX07UmIuZm9yRWFjaChiKTtTYi5mb3JFYWNoKGIpO2ZvcihiPTA7YjxWYi5sZW5ndGg7YisrKWM9VmJbYl0sYy5ibG9ja2VkT249PT1hJiYoYy5ibG9ja2VkT249bnVsbCk7Zm9yKDswPFZiLmxlbmd0aCYmKGI9VmJbMF0sbnVsbD09PWIuYmxvY2tlZE9uKTspemkoYiksbnVsbD09PWIuYmxvY2tlZE9uJiZWYi5zaGlmdCgpfWZ1bmN0aW9uIExjKGEsYil7dmFyIGM9DQp7fTtjW2EudG9Mb3dlckNhc2UoKV09Yi50b0xvd2VyQ2FzZSgpO2NbIldlYmtpdCIrYV09IndlYmtpdCIrYjtjWyJNb3oiK2FdPSJtb3oiK2I7cmV0dXJuIGN9ZnVuY3Rpb24gTWMoYSl7aWYoZGVbYV0pcmV0dXJuIGRlW2FdO2lmKCFsYlthXSlyZXR1cm4gYTt2YXIgYj1sYlthXSxjO2ZvcihjIGluIGIpaWYoYi5oYXNPd25Qcm9wZXJ0eShjKSYmYyBpbiBiZylyZXR1cm4gZGVbYV09YltjXTtyZXR1cm4gYX1mdW5jdGlvbiBlZShhLGIpe2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7Yys9Mil7dmFyIGQ9YVtjXSxlPWFbYysxXTtlPSJvbiIrKGVbMF0udG9VcHBlckNhc2UoKStlLnNsaWNlKDEpKTtmZS5zZXQoZCxiKTtjZy5zZXQoZCxlKTtUYShlLFtkXSl9fWZ1bmN0aW9uIG1iKGEpe2lmKDAhPT0oMSZhKSlyZXR1cm4gdz0xNSwxO2lmKDAhPT0oMiZhKSlyZXR1cm4gdz0xNCwyO2lmKDAhPT0oNCZhKSlyZXR1cm4gdz0xMyw0O3ZhciBiPTI0JmE7aWYoMCE9PWIpcmV0dXJuIHc9MTIsYjsNCmlmKDAhPT0oYSYzMikpcmV0dXJuIHc9MTEsMzI7Yj0xOTImYTtpZigwIT09YilyZXR1cm4gdz0xMCxiO2lmKDAhPT0oYSYyNTYpKXJldHVybiB3PTksMjU2O2I9MzU4NCZhO2lmKDAhPT1iKXJldHVybiB3PTgsYjtpZigwIT09KGEmNDA5NikpcmV0dXJuIHc9Nyw0MDk2O2I9NDE4NjExMiZhO2lmKDAhPT1iKXJldHVybiB3PTYsYjtiPTYyOTE0NTYwJmE7aWYoMCE9PWIpcmV0dXJuIHc9NSxiO2lmKGEmNjcxMDg4NjQpcmV0dXJuIHc9NCw2NzEwODg2NDtpZigwIT09KGEmMTM0MjE3NzI4KSlyZXR1cm4gdz0zLDEzNDIxNzcyODtiPTgwNTMwNjM2OCZhO2lmKDAhPT1iKXJldHVybiB3PTIsYjtpZigwIT09KDEwNzM3NDE4MjQmYSkpcmV0dXJuIHc9MSwxMDczNzQxODI0O3c9ODtyZXR1cm4gYX1mdW5jdGlvbiBFaShhKXtzd2l0Y2goYSl7Y2FzZSA5OTpyZXR1cm4gMTU7Y2FzZSA5ODpyZXR1cm4gMTA7Y2FzZSA5NzpjYXNlIDk2OnJldHVybiA4O2Nhc2UgOTU6cmV0dXJuIDI7ZGVmYXVsdDpyZXR1cm4gMH19DQpmdW5jdGlvbiBGaShhKXtzd2l0Y2goYSl7Y2FzZSAxNTpjYXNlIDE0OnJldHVybiA5OTtjYXNlIDEzOmNhc2UgMTI6Y2FzZSAxMTpjYXNlIDEwOnJldHVybiA5ODtjYXNlIDk6Y2FzZSA4OmNhc2UgNzpjYXNlIDY6Y2FzZSA0OmNhc2UgNTpyZXR1cm4gOTc7Y2FzZSAzOmNhc2UgMjpjYXNlIDE6cmV0dXJuIDk1O2Nhc2UgMDpyZXR1cm4gOTA7ZGVmYXVsdDp0aHJvdyBFcnJvcihtKDM1OCxhKSk7fX1mdW5jdGlvbiBXYihhLGIpe3ZhciBjPWEucGVuZGluZ0xhbmVzO2lmKDA9PT1jKXJldHVybiB3PTA7dmFyIGQ9MCxlPTAsZj1hLmV4cGlyZWRMYW5lcyxnPWEuc3VzcGVuZGVkTGFuZXMsaD1hLnBpbmdlZExhbmVzO2lmKDAhPT1mKWQ9ZixlPXc9MTU7ZWxzZSBpZihmPWMmMTM0MjE3NzI3LDAhPT1mKXt2YXIgaz1mJn5nOzAhPT1rPyhkPW1iKGspLGU9dyk6KGgmPWYsMCE9PWgmJihkPW1iKGgpLGU9dykpfWVsc2UgZj1jJn5nLDAhPT1mPyhkPW1iKGYpLGU9dyk6MCE9PWgmJihkPW1iKGgpLA0KZT13KTtpZigwPT09ZClyZXR1cm4gMDtkPTMxLUJhKGQpO2Q9YyYoKDA+ZD8wOjE8PGQpPDwxKS0xO2lmKDAhPT1iJiZiIT09ZCYmMD09PShiJmcpKXttYihiKTtpZihlPD13KXJldHVybiBiO3c9ZX1iPWEuZW50YW5nbGVkTGFuZXM7aWYoMCE9PWIpZm9yKGE9YS5lbnRhbmdsZW1lbnRzLGImPWQ7MDxiOyljPTMxLUJhKGIpLGU9MTw8YyxkfD1hW2NdLGImPX5lO3JldHVybiBkfWZ1bmN0aW9uIGRnKGEpe2E9YS5wZW5kaW5nTGFuZXMmLTEwNzM3NDE4MjU7cmV0dXJuIDAhPT1hP2E6YSYxMDczNzQxODI0PzEwNzM3NDE4MjQ6MH1mdW5jdGlvbiBOYyhhLGIpe3N3aXRjaChhKXtjYXNlIDE1OnJldHVybiAxO2Nhc2UgMTQ6cmV0dXJuIDI7Y2FzZSAxMjpyZXR1cm4gYT1uYigyNCZ+YiksMD09PWE\/TmMoMTAsYik6YTtjYXNlIDEwOnJldHVybiBhPW5iKDE5MiZ+YiksMD09PWE\/TmMoOCxiKTphO2Nhc2UgODpyZXR1cm4gYT1uYigzNTg0Jn5iKSwwPT09YSYmKGE9bmIoNDE4NjExMiZ+YiksDQowPT09YSYmKGE9NTEyKSksYTtjYXNlIDI6cmV0dXJuIGI9bmIoODA1MzA2MzY4Jn5iKSwwPT09YiYmKGI9MjY4NDM1NDU2KSxifXRocm93IEVycm9yKG0oMzU4LGEpKTt9ZnVuY3Rpb24gbmIoYSl7cmV0dXJuIGEmLWF9ZnVuY3Rpb24gT2MoYSxiLGMpe2EucGVuZGluZ0xhbmVzfD1iO3ZhciBkPWItMTthLnN1c3BlbmRlZExhbmVzJj1kO2EucGluZ2VkTGFuZXMmPWQ7YT1hLmV2ZW50VGltZXM7Yj0zMS1CYShiKTthW2JdPWN9ZnVuY3Rpb24gR2koYSl7cmV0dXJuIDA9PT1hPzMyOjMxLShIaShhKS9JaXwwKXwwfWZ1bmN0aW9uIEppKGEsYixjLGQpe1hhfHxYZCgpO3ZhciBlPWdlLGY9WGE7WGE9ITA7dHJ5e2VnKGUsYSxiLGMsZCl9ZmluYWxseXsoWGE9Zil8fFdkKCl9fWZ1bmN0aW9uIEtpKGEsYixjLGQpe0xpKE1pLGdlLmJpbmQobnVsbCxhLGIsYyxkKSl9ZnVuY3Rpb24gZ2UoYSxiLGMsZCl7aWYoUGMpe3ZhciBlO2lmKChlPTA9PT0oYiY0KSkmJjA8aWEubGVuZ3RoJiYtMTxmZy5pbmRleE9mKGEpKWE9DQokZChudWxsLGEsYixjLGQpLGlhLnB1c2goYSk7ZWxzZXt2YXIgZj1iZShhLGIsYyxkKTtpZihudWxsPT09ZillJiZXZihhLGQpO2Vsc2V7aWYoZSl7aWYoLTE8ZmcuaW5kZXhPZihhKSl7YT0kZChmLGEsYixjLGQpO2lhLnB1c2goYSk7cmV0dXJufWlmKHlpKGYsYSxiLGMsZCkpcmV0dXJuO1dmKGEsZCl9Z2coYSxiLGQsbnVsbCxjKX19fX1mdW5jdGlvbiBiZShhLGIsYyxkKXt2YXIgZT1VZChkKTtlPVdhKGUpO2lmKG51bGwhPT1lKXt2YXIgZj1WYShlKTtpZihudWxsPT09ZillPW51bGw7ZWxzZXt2YXIgZz1mLnRhZztpZigxMz09PWcpe2U9U2YoZik7aWYobnVsbCE9PWUpcmV0dXJuIGU7ZT1udWxsfWVsc2UgaWYoMz09PWcpe2lmKGYuc3RhdGVOb2RlLmh5ZHJhdGUpcmV0dXJuIDM9PT1mLnRhZz9mLnN0YXRlTm9kZS5jb250YWluZXJJbmZvOm51bGw7ZT1udWxsfWVsc2UgZiE9PWUmJihlPW51bGwpfX1nZyhhLGIsZCxlLGMpO3JldHVybiBudWxsfWZ1bmN0aW9uIGhnKCl7aWYoUWMpcmV0dXJuIFFjOw0KdmFyIGEsYj1oZSxjPWIubGVuZ3RoLGQsZT0idmFsdWUiaW4gQ2E\/Q2EudmFsdWU6Q2EudGV4dENvbnRlbnQsZj1lLmxlbmd0aDtmb3IoYT0wO2E8YyYmYlthXT09PWVbYV07YSsrKTt2YXIgZz1jLWE7Zm9yKGQ9MTtkPD1nJiZiW2MtZF09PT1lW2YtZF07ZCsrKTtyZXR1cm4gUWM9ZS5zbGljZShhLDE8ZD8xLWQ6dm9pZCAwKX1mdW5jdGlvbiBSYyhhKXt2YXIgYj1hLmtleUNvZGU7ImNoYXJDb2RlImluIGE\/KGE9YS5jaGFyQ29kZSwwPT09YSYmMTM9PT1iJiYoYT0xMykpOmE9YjsxMD09PWEmJihhPTEzKTtyZXR1cm4gMzI8PWF8fDEzPT09YT9hOjB9ZnVuY3Rpb24gU2MoKXtyZXR1cm4hMH1mdW5jdGlvbiBpZygpe3JldHVybiExfWZ1bmN0aW9uIFYoYSl7ZnVuY3Rpb24gYihiLGQsZSxmLGcpe3RoaXMuX3JlYWN0TmFtZT1iO3RoaXMuX3RhcmdldEluc3Q9ZTt0aGlzLnR5cGU9ZDt0aGlzLm5hdGl2ZUV2ZW50PWY7dGhpcy50YXJnZXQ9Zzt0aGlzLmN1cnJlbnRUYXJnZXQ9bnVsbDtmb3IodmFyIGMgaW4gYSlhLmhhc093blByb3BlcnR5KGMpJiYNCihiPWFbY10sdGhpc1tjXT1iP2IoZik6ZltjXSk7dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9KG51bGwhPWYuZGVmYXVsdFByZXZlbnRlZD9mLmRlZmF1bHRQcmV2ZW50ZWQ6ITE9PT1mLnJldHVyblZhbHVlKT9TYzppZzt0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPWlnO3JldHVybiB0aGlzfUIoYi5wcm90b3R5cGUse3ByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dGhpcy5kZWZhdWx0UHJldmVudGVkPSEwO3ZhciBhPXRoaXMubmF0aXZlRXZlbnQ7YSYmKGEucHJldmVudERlZmF1bHQ\/YS5wcmV2ZW50RGVmYXVsdCgpOiJ1bmtub3duIiE9PXR5cGVvZiBhLnJldHVyblZhbHVlJiYoYS5yZXR1cm5WYWx1ZT0hMSksdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9U2MpfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm5hdGl2ZUV2ZW50O2EmJihhLnN0b3BQcm9wYWdhdGlvbj9hLnN0b3BQcm9wYWdhdGlvbigpOiJ1bmtub3duIiE9PXR5cGVvZiBhLmNhbmNlbEJ1YmJsZSYmDQooYS5jYW5jZWxCdWJibGU9ITApLHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9U2MpfSxwZXJzaXN0OmZ1bmN0aW9uKCl7fSxpc1BlcnNpc3RlbnQ6U2N9KTtyZXR1cm4gYn1mdW5jdGlvbiBOaShhKXt2YXIgYj10aGlzLm5hdGl2ZUV2ZW50O3JldHVybiBiLmdldE1vZGlmaWVyU3RhdGU\/Yi5nZXRNb2RpZmllclN0YXRlKGEpOihhPU9pW2FdKT8hIWJbYV06ITF9ZnVuY3Rpb24gaWUoYSl7cmV0dXJuIE5pfWZ1bmN0aW9uIGpnKGEsYil7c3dpdGNoKGEpe2Nhc2UgImtleXVwIjpyZXR1cm4tMSE9PVBpLmluZGV4T2YoYi5rZXlDb2RlKTtjYXNlICJrZXlkb3duIjpyZXR1cm4gMjI5IT09Yi5rZXlDb2RlO2Nhc2UgImtleXByZXNzIjpjYXNlICJtb3VzZWRvd24iOmNhc2UgImZvY3Vzb3V0IjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX1mdW5jdGlvbiBrZyhhKXthPWEuZGV0YWlsO3JldHVybiJvYmplY3QiPT09dHlwZW9mIGEmJiJkYXRhImluIGE\/YS5kYXRhOm51bGx9ZnVuY3Rpb24gUWkoYSwNCmIpe3N3aXRjaChhKXtjYXNlICJjb21wb3NpdGlvbmVuZCI6cmV0dXJuIGtnKGIpO2Nhc2UgImtleXByZXNzIjppZigzMiE9PWIud2hpY2gpcmV0dXJuIG51bGw7bGc9ITA7cmV0dXJuIG1nO2Nhc2UgInRleHRJbnB1dCI6cmV0dXJuIGE9Yi5kYXRhLGE9PT1tZyYmbGc\/bnVsbDphO2RlZmF1bHQ6cmV0dXJuIG51bGx9fWZ1bmN0aW9uIFJpKGEsYil7aWYob2IpcmV0dXJuImNvbXBvc2l0aW9uZW5kIj09PWF8fCFqZSYmamcoYSxiKT8oYT1oZygpLFFjPWhlPUNhPW51bGwsb2I9ITEsYSk6bnVsbDtzd2l0Y2goYSl7Y2FzZSAicGFzdGUiOnJldHVybiBudWxsO2Nhc2UgImtleXByZXNzIjppZighKGIuY3RybEtleXx8Yi5hbHRLZXl8fGIubWV0YUtleSl8fGIuY3RybEtleSYmYi5hbHRLZXkpe2lmKGIuY2hhciYmMTxiLmNoYXIubGVuZ3RoKXJldHVybiBiLmNoYXI7aWYoYi53aGljaClyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShiLndoaWNoKX1yZXR1cm4gbnVsbDtjYXNlICJjb21wb3NpdGlvbmVuZCI6cmV0dXJuIG5nJiYNCiJrbyIhPT1iLmxvY2FsZT9udWxsOmIuZGF0YTtkZWZhdWx0OnJldHVybiBudWxsfX1mdW5jdGlvbiBvZyhhKXt2YXIgYj1hJiZhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PWI\/ISFTaVthLnR5cGVdOiJ0ZXh0YXJlYSI9PT1iPyEwOiExfWZ1bmN0aW9uIFRpKGEpe2lmKCFvYSlyZXR1cm4hMTthPSJvbiIrYTt2YXIgYj1hIGluIGRvY3VtZW50O2J8fChiPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGIuc2V0QXR0cmlidXRlKGEsInJldHVybjsiKSxiPSJmdW5jdGlvbiI9PT10eXBlb2YgYlthXSk7cmV0dXJuIGJ9ZnVuY3Rpb24gcGcoYSxiLGMsZCl7UGYoZCk7Yj1UYyhiLCJvbkNoYW5nZSIpOzA8Yi5sZW5ndGgmJihjPW5ldyBrZSgib25DaGFuZ2UiLCJjaGFuZ2UiLG51bGwsYyxkKSxhLnB1c2goe2V2ZW50OmMsbGlzdGVuZXJzOmJ9KSl9ZnVuY3Rpb24gVWkoYSl7cWcoYSwwKX1mdW5jdGlvbiBVYyhhKXt2YXIgYj1wYihhKTsNCmlmKEVmKGIpKXJldHVybiBhfWZ1bmN0aW9uIFZpKGEsYil7aWYoImNoYW5nZSI9PT1hKXJldHVybiBifWZ1bmN0aW9uIHJnKCl7WGImJihYYi5kZXRhY2hFdmVudCgib25wcm9wZXJ0eWNoYW5nZSIsc2cpLFliPVhiPW51bGwpfWZ1bmN0aW9uIHNnKGEpe2lmKCJ2YWx1ZSI9PT1hLnByb3BlcnR5TmFtZSYmVWMoWWIpKXt2YXIgYj1bXTtwZyhiLFliLGEsVWQoYSkpO2E9VWk7aWYoWGEpYShiKTtlbHNle1hhPSEwO3RyeXtsZShhLGIpfWZpbmFsbHl7WGE9ITEsV2QoKX19fX1mdW5jdGlvbiBXaShhLGIsYyl7ImZvY3VzaW4iPT09YT8ocmcoKSxYYj1iLFliPWMsWGIuYXR0YWNoRXZlbnQoIm9ucHJvcGVydHljaGFuZ2UiLHNnKSk6ImZvY3Vzb3V0Ij09PWEmJnJnKCl9ZnVuY3Rpb24gWGkoYSxiKXtpZigic2VsZWN0aW9uY2hhbmdlIj09PWF8fCJrZXl1cCI9PT1hfHwia2V5ZG93biI9PT1hKXJldHVybiBVYyhZYil9ZnVuY3Rpb24gWWkoYSxiKXtpZigiY2xpY2siPT09YSlyZXR1cm4gVWMoYil9DQpmdW5jdGlvbiBaaShhLGIpe2lmKCJpbnB1dCI9PT1hfHwiY2hhbmdlIj09PWEpcmV0dXJuIFVjKGIpfWZ1bmN0aW9uICRpKGEsYil7cmV0dXJuIGE9PT1iJiYoMCE9PWF8fDEvYT09PTEvYil8fGEhPT1hJiZiIT09Yn1mdW5jdGlvbiBaYihhLGIpe2lmKFgoYSxiKSlyZXR1cm4hMDtpZigib2JqZWN0IiE9PXR5cGVvZiBhfHxudWxsPT09YXx8Im9iamVjdCIhPT10eXBlb2YgYnx8bnVsbD09PWIpcmV0dXJuITE7dmFyIGM9T2JqZWN0LmtleXMoYSksZD1PYmplY3Qua2V5cyhiKTtpZihjLmxlbmd0aCE9PWQubGVuZ3RoKXJldHVybiExO2ZvcihkPTA7ZDxjLmxlbmd0aDtkKyspaWYoIWFqLmNhbGwoYixjW2RdKXx8IVgoYVtjW2RdXSxiW2NbZF1dKSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiB0ZyhhKXtmb3IoO2EmJmEuZmlyc3RDaGlsZDspYT1hLmZpcnN0Q2hpbGQ7cmV0dXJuIGF9ZnVuY3Rpb24gdWcoYSxiKXt2YXIgYz10ZyhhKTthPTA7Zm9yKHZhciBkO2M7KXtpZigzPT09Yy5ub2RlVHlwZSl7ZD0NCmErYy50ZXh0Q29udGVudC5sZW5ndGg7aWYoYTw9YiYmZD49YilyZXR1cm57bm9kZTpjLG9mZnNldDpiLWF9O2E9ZH1hOntmb3IoO2M7KXtpZihjLm5leHRTaWJsaW5nKXtjPWMubmV4dFNpYmxpbmc7YnJlYWsgYX1jPWMucGFyZW50Tm9kZX1jPXZvaWQgMH1jPXRnKGMpfX1mdW5jdGlvbiB2ZyhhLGIpe3JldHVybiBhJiZiP2E9PT1iPyEwOmEmJjM9PT1hLm5vZGVUeXBlPyExOmImJjM9PT1iLm5vZGVUeXBlP3ZnKGEsYi5wYXJlbnROb2RlKToiY29udGFpbnMiaW4gYT9hLmNvbnRhaW5zKGIpOmEuY29tcGFyZURvY3VtZW50UG9zaXRpb24\/ISEoYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihiKSYxNik6ITE6ITF9ZnVuY3Rpb24gd2coKXtmb3IodmFyIGE9d2luZG93LGI9R2MoKTtiIGluc3RhbmNlb2YgYS5IVE1MSUZyYW1lRWxlbWVudDspe3RyeXt2YXIgYz0ic3RyaW5nIj09PXR5cGVvZiBiLmNvbnRlbnRXaW5kb3cubG9jYXRpb24uaHJlZn1jYXRjaChkKXtjPSExfWlmKGMpYT1iLmNvbnRlbnRXaW5kb3c7DQplbHNlIGJyZWFrO2I9R2MoYS5kb2N1bWVudCl9cmV0dXJuIGJ9ZnVuY3Rpb24gbWUoYSl7dmFyIGI9YSYmYS5ub2RlTmFtZSYmYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiBiJiYoImlucHV0Ij09PWImJigidGV4dCI9PT1hLnR5cGV8fCJzZWFyY2giPT09YS50eXBlfHwidGVsIj09PWEudHlwZXx8InVybCI9PT1hLnR5cGV8fCJwYXNzd29yZCI9PT1hLnR5cGUpfHwidGV4dGFyZWEiPT09Ynx8InRydWUiPT09YS5jb250ZW50RWRpdGFibGUpfWZ1bmN0aW9uIHhnKGEsYixjKXt2YXIgZD1jLndpbmRvdz09PWM\/Yy5kb2N1bWVudDo5PT09Yy5ub2RlVHlwZT9jOmMub3duZXJEb2N1bWVudDtuZXx8bnVsbD09cWJ8fHFiIT09R2MoZCl8fChkPXFiLCJzZWxlY3Rpb25TdGFydCJpbiBkJiZtZShkKT9kPXtzdGFydDpkLnNlbGVjdGlvblN0YXJ0LGVuZDpkLnNlbGVjdGlvbkVuZH06KGQ9KGQub3duZXJEb2N1bWVudCYmZC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHx3aW5kb3cpLmdldFNlbGVjdGlvbigpLA0KZD17YW5jaG9yTm9kZTpkLmFuY2hvck5vZGUsYW5jaG9yT2Zmc2V0OmQuYW5jaG9yT2Zmc2V0LGZvY3VzTm9kZTpkLmZvY3VzTm9kZSxmb2N1c09mZnNldDpkLmZvY3VzT2Zmc2V0fSksJGImJlpiKCRiLGQpfHwoJGI9ZCxkPVRjKG9lLCJvblNlbGVjdCIpLDA8ZC5sZW5ndGgmJihiPW5ldyBrZSgib25TZWxlY3QiLCJzZWxlY3QiLG51bGwsYixjKSxhLnB1c2goe2V2ZW50OmIsbGlzdGVuZXJzOmR9KSxiLnRhcmdldD1xYikpKX1mdW5jdGlvbiB5ZyhhLGIsYyl7dmFyIGQ9YS50eXBlfHwidW5rbm93bi1ldmVudCI7YS5jdXJyZW50VGFyZ2V0PWM7d2koZCxiLHZvaWQgMCxhKTthLmN1cnJlbnRUYXJnZXQ9bnVsbH1mdW5jdGlvbiBxZyhhLGIpe2I9MCE9PShiJjQpO2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7YysrKXt2YXIgZD1hW2NdLGU9ZC5ldmVudDtkPWQubGlzdGVuZXJzO2E6e3ZhciBmPXZvaWQgMDtpZihiKWZvcih2YXIgZz1kLmxlbmd0aC0xOzA8PWc7Zy0tKXt2YXIgaD1kW2ddLA0Kaz1oLmluc3RhbmNlLHY9aC5jdXJyZW50VGFyZ2V0O2g9aC5saXN0ZW5lcjtpZihrIT09ZiYmZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKWJyZWFrIGE7eWcoZSxoLHYpO2Y9a31lbHNlIGZvcihnPTA7ZzxkLmxlbmd0aDtnKyspe2g9ZFtnXTtrPWguaW5zdGFuY2U7dj1oLmN1cnJlbnRUYXJnZXQ7aD1oLmxpc3RlbmVyO2lmKGshPT1mJiZlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpYnJlYWsgYTt5ZyhlLGgsdik7Zj1rfX19aWYoSmMpdGhyb3cgYT1aZCxKYz0hMSxaZD1udWxsLGE7fWZ1bmN0aW9uIHooYSxiKXt2YXIgYz16ZyhiKSxkPWErIl9fYnViYmxlIjtjLmhhcyhkKXx8KEFnKGIsYSwyLCExKSxjLmFkZChkKSl9ZnVuY3Rpb24gQmcoYSl7YVtDZ118fChhW0NnXT0hMCx5Zi5mb3JFYWNoKGZ1bmN0aW9uKGIpe0RnLmhhcyhiKXx8RWcoYiwhMSxhLG51bGwpO0VnKGIsITAsYSxudWxsKX0pKX1mdW5jdGlvbiBFZyhhLGIsYyxkKXt2YXIgZT00PGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PQ0KYXJndW1lbnRzWzRdP2FyZ3VtZW50c1s0XTowLGY9Yzsic2VsZWN0aW9uY2hhbmdlIj09PWEmJjkhPT1jLm5vZGVUeXBlJiYoZj1jLm93bmVyRG9jdW1lbnQpO2lmKG51bGwhPT1kJiYhYiYmRGcuaGFzKGEpKXtpZigic2Nyb2xsIiE9PWEpcmV0dXJuO2V8PTI7Zj1kfXZhciBnPXpnKGYpLGg9YSsiX18iKyhiPyJjYXB0dXJlIjoiYnViYmxlIik7Zy5oYXMoaCl8fChiJiYoZXw9NCksQWcoZixhLGUsYiksZy5hZGQoaCkpfWZ1bmN0aW9uIEFnKGEsYixjLGQsZSl7ZT1mZS5nZXQoYik7c3dpdGNoKHZvaWQgMD09PWU\/MjplKXtjYXNlIDA6ZT1KaTticmVhaztjYXNlIDE6ZT1LaTticmVhaztkZWZhdWx0OmU9Z2V9Yz1lLmJpbmQobnVsbCxiLGMsYSk7ZT12b2lkIDA7IXBlfHwidG91Y2hzdGFydCIhPT1iJiYidG91Y2htb3ZlIiE9PWImJiJ3aGVlbCIhPT1ifHwoZT0hMCk7ZD92b2lkIDAhPT1lP2EuYWRkRXZlbnRMaXN0ZW5lcihiLGMse2NhcHR1cmU6ITAscGFzc2l2ZTplfSk6YS5hZGRFdmVudExpc3RlbmVyKGIsDQpjLCEwKTp2b2lkIDAhPT1lP2EuYWRkRXZlbnRMaXN0ZW5lcihiLGMse3Bhc3NpdmU6ZX0pOmEuYWRkRXZlbnRMaXN0ZW5lcihiLGMsITEpfWZ1bmN0aW9uIGdnKGEsYixjLGQsZSl7dmFyIGY9ZDtpZigwPT09KGImMSkmJjA9PT0oYiYyKSYmbnVsbCE9PWQpYTpmb3IoOzspe2lmKG51bGw9PT1kKXJldHVybjt2YXIgZz1kLnRhZztpZigzPT09Z3x8ND09PWcpe3ZhciBoPWQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm87aWYoaD09PWV8fDg9PT1oLm5vZGVUeXBlJiZoLnBhcmVudE5vZGU9PT1lKWJyZWFrO2lmKDQ9PT1nKWZvcihnPWQucmV0dXJuO251bGwhPT1nOyl7dmFyIGs9Zy50YWc7aWYoMz09PWt8fDQ9PT1rKWlmKGs9Zy5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyxrPT09ZXx8OD09PWsubm9kZVR5cGUmJmsucGFyZW50Tm9kZT09PWUpcmV0dXJuO2c9Zy5yZXR1cm59Zm9yKDtudWxsIT09aDspe2c9V2EoaCk7aWYobnVsbD09PWcpcmV0dXJuO2s9Zy50YWc7aWYoNT09PWt8fDY9PT0NCmspe2Q9Zj1nO2NvbnRpbnVlIGF9aD1oLnBhcmVudE5vZGV9fWQ9ZC5yZXR1cm59c2koZnVuY3Rpb24oKXt2YXIgZD1mLGU9VWQoYyksZz1bXTthOnt2YXIgaD1jZy5nZXQoYSk7aWYodm9pZCAwIT09aCl7dmFyIGs9a2UsbT1hO3N3aXRjaChhKXtjYXNlICJrZXlwcmVzcyI6aWYoMD09PVJjKGMpKWJyZWFrIGE7Y2FzZSAia2V5ZG93biI6Y2FzZSAia2V5dXAiOms9Ymo7YnJlYWs7Y2FzZSAiZm9jdXNpbiI6bT0iZm9jdXMiO2s9cWU7YnJlYWs7Y2FzZSAiZm9jdXNvdXQiOm09ImJsdXIiO2s9cWU7YnJlYWs7Y2FzZSAiYmVmb3JlYmx1ciI6Y2FzZSAiYWZ0ZXJibHVyIjprPXFlO2JyZWFrO2Nhc2UgImNsaWNrIjppZigyPT09Yy5idXR0b24pYnJlYWsgYTtjYXNlICJhdXhjbGljayI6Y2FzZSAiZGJsY2xpY2siOmNhc2UgIm1vdXNlZG93biI6Y2FzZSAibW91c2Vtb3ZlIjpjYXNlICJtb3VzZXVwIjpjYXNlICJtb3VzZW91dCI6Y2FzZSAibW91c2VvdmVyIjpjYXNlICJjb250ZXh0bWVudSI6az0NCkZnO2JyZWFrO2Nhc2UgImRyYWciOmNhc2UgImRyYWdlbmQiOmNhc2UgImRyYWdlbnRlciI6Y2FzZSAiZHJhZ2V4aXQiOmNhc2UgImRyYWdsZWF2ZSI6Y2FzZSAiZHJhZ292ZXIiOmNhc2UgImRyYWdzdGFydCI6Y2FzZSAiZHJvcCI6az1jajticmVhaztjYXNlICJ0b3VjaGNhbmNlbCI6Y2FzZSAidG91Y2hlbmQiOmNhc2UgInRvdWNobW92ZSI6Y2FzZSAidG91Y2hzdGFydCI6az1kajticmVhaztjYXNlIEdnOmNhc2UgSGc6Y2FzZSBJZzprPWVqO2JyZWFrO2Nhc2UgSmc6az1majticmVhaztjYXNlICJzY3JvbGwiOms9Z2o7YnJlYWs7Y2FzZSAid2hlZWwiOms9aGo7YnJlYWs7Y2FzZSAiY29weSI6Y2FzZSAiY3V0IjpjYXNlICJwYXN0ZSI6az1pajticmVhaztjYXNlICJnb3Rwb2ludGVyY2FwdHVyZSI6Y2FzZSAibG9zdHBvaW50ZXJjYXB0dXJlIjpjYXNlICJwb2ludGVyY2FuY2VsIjpjYXNlICJwb2ludGVyZG93biI6Y2FzZSAicG9pbnRlcm1vdmUiOmNhc2UgInBvaW50ZXJvdXQiOmNhc2UgInBvaW50ZXJvdmVyIjpjYXNlICJwb2ludGVydXAiOms9DQpLZ312YXIgbD0wIT09KGImNCksQz0hbCYmInNjcm9sbCI9PT1hLHg9bD9udWxsIT09aD9oKyJDYXB0dXJlIjpudWxsOmg7bD1bXTtmb3IodmFyIHA9ZCxxO251bGwhPT1wOyl7cT1wO3ZhciB1PXEuc3RhdGVOb2RlOzU9PT1xLnRhZyYmbnVsbCE9PXUmJihxPXUsbnVsbCE9PXgmJih1PVBiKHAseCksbnVsbCE9dSYmbC5wdXNoKGFjKHAsdSxxKSkpKTtpZihDKWJyZWFrO3A9cC5yZXR1cm59MDxsLmxlbmd0aCYmKGg9bmV3IGsoaCxtLG51bGwsYyxlKSxnLnB1c2goe2V2ZW50OmgsbGlzdGVuZXJzOmx9KSl9fWlmKDA9PT0oYiY3KSl7YTp7aD0ibW91c2VvdmVyIj09PWF8fCJwb2ludGVyb3ZlciI9PT1hO2s9Im1vdXNlb3V0Ij09PWF8fCJwb2ludGVyb3V0Ij09PWE7aWYoaCYmMD09PShiJjE2KSYmKG09Yy5yZWxhdGVkVGFyZ2V0fHxjLmZyb21FbGVtZW50KSYmKFdhKG0pfHxtW3JiXSkpYnJlYWsgYTtpZihrfHxoKXtoPWUud2luZG93PT09ZT9lOihoPWUub3duZXJEb2N1bWVudCk\/aC5kZWZhdWx0Vmlld3x8DQpoLnBhcmVudFdpbmRvdzp3aW5kb3c7aWYoayl7aWYobT1jLnJlbGF0ZWRUYXJnZXR8fGMudG9FbGVtZW50LGs9ZCxtPW0\/V2EobSk6bnVsbCxudWxsIT09bSYmKEM9VmEobSksbSE9PUN8fDUhPT1tLnRhZyYmNiE9PW0udGFnKSltPW51bGx9ZWxzZSBrPW51bGwsbT1kO2lmKGshPT1tKXtsPUZnO3U9Im9uTW91c2VMZWF2ZSI7eD0ib25Nb3VzZUVudGVyIjtwPSJtb3VzZSI7aWYoInBvaW50ZXJvdXQiPT09YXx8InBvaW50ZXJvdmVyIj09PWEpbD1LZyx1PSJvblBvaW50ZXJMZWF2ZSIseD0ib25Qb2ludGVyRW50ZXIiLHA9InBvaW50ZXIiO0M9bnVsbD09az9oOnBiKGspO3E9bnVsbD09bT9oOnBiKG0pO2g9bmV3IGwodSxwKyJsZWF2ZSIsayxjLGUpO2gudGFyZ2V0PUM7aC5yZWxhdGVkVGFyZ2V0PXE7dT1udWxsO1dhKGUpPT09ZCYmKGw9bmV3IGwoeCxwKyJlbnRlciIsbSxjLGUpLGwudGFyZ2V0PXEsbC5yZWxhdGVkVGFyZ2V0PUMsdT1sKTtDPXU7aWYoayYmbSliOntsPWs7eD1tO3A9DQowO2ZvcihxPWw7cTtxPXNiKHEpKXArKztxPTA7Zm9yKHU9eDt1O3U9c2IodSkpcSsrO2Zvcig7MDxwLXE7KWw9c2IobCkscC0tO2Zvcig7MDxxLXA7KXg9c2IoeCkscS0tO2Zvcig7cC0tOyl7aWYobD09PXh8fG51bGwhPT14JiZsPT09eC5hbHRlcm5hdGUpYnJlYWsgYjtsPXNiKGwpO3g9c2IoeCl9bD1udWxsfWVsc2UgbD1udWxsO251bGwhPT1rJiZMZyhnLGgsayxsLCExKTtudWxsIT09bSYmbnVsbCE9PUMmJkxnKGcsQyxtLGwsITApfX19YTp7aD1kP3BiKGQpOndpbmRvdztrPWgubm9kZU5hbWUmJmgubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtpZigic2VsZWN0Ij09PWt8fCJpbnB1dCI9PT1rJiYiZmlsZSI9PT1oLnR5cGUpdmFyIG49Vmk7ZWxzZSBpZihvZyhoKSlpZihNZyluPVppO2Vsc2V7bj1YaTt2YXIgZGE9V2l9ZWxzZShrPWgubm9kZU5hbWUpJiYiaW5wdXQiPT09ay50b0xvd2VyQ2FzZSgpJiYoImNoZWNrYm94Ij09PWgudHlwZXx8InJhZGlvIj09PWgudHlwZSkmJihuPVlpKTsNCmlmKG4mJihuPW4oYSxkKSkpe3BnKGcsbixjLGUpO2JyZWFrIGF9ZGEmJmRhKGEsaCxkKTsiZm9jdXNvdXQiPT09YSYmKGRhPWguX3dyYXBwZXJTdGF0ZSkmJmRhLmNvbnRyb2xsZWQmJiJudW1iZXIiPT09aC50eXBlJiZPZChoLCJudW1iZXIiLGgudmFsdWUpfWRhPWQ\/cGIoZCk6d2luZG93O3N3aXRjaChhKXtjYXNlICJmb2N1c2luIjppZihvZyhkYSl8fCJ0cnVlIj09PWRhLmNvbnRlbnRFZGl0YWJsZSlxYj1kYSxvZT1kLCRiPW51bGw7YnJlYWs7Y2FzZSAiZm9jdXNvdXQiOiRiPW9lPXFiPW51bGw7YnJlYWs7Y2FzZSAibW91c2Vkb3duIjpuZT0hMDticmVhaztjYXNlICJjb250ZXh0bWVudSI6Y2FzZSAibW91c2V1cCI6Y2FzZSAiZHJhZ2VuZCI6bmU9ITE7eGcoZyxjLGUpO2JyZWFrO2Nhc2UgInNlbGVjdGlvbmNoYW5nZSI6aWYoamopYnJlYWs7Y2FzZSAia2V5ZG93biI6Y2FzZSAia2V5dXAiOnhnKGcsYyxlKX12YXIgRWE7aWYoamUpYjp7c3dpdGNoKGEpe2Nhc2UgImNvbXBvc2l0aW9uc3RhcnQiOnZhciBGPQ0KIm9uQ29tcG9zaXRpb25TdGFydCI7YnJlYWsgYjtjYXNlICJjb21wb3NpdGlvbmVuZCI6Rj0ib25Db21wb3NpdGlvbkVuZCI7YnJlYWsgYjtjYXNlICJjb21wb3NpdGlvbnVwZGF0ZSI6Rj0ib25Db21wb3NpdGlvblVwZGF0ZSI7YnJlYWsgYn1GPXZvaWQgMH1lbHNlIG9iP2pnKGEsYykmJihGPSJvbkNvbXBvc2l0aW9uRW5kIik6ImtleWRvd24iPT09YSYmMjI5PT09Yy5rZXlDb2RlJiYoRj0ib25Db21wb3NpdGlvblN0YXJ0Iik7RiYmKG5nJiYia28iIT09Yy5sb2NhbGUmJihvYnx8Im9uQ29tcG9zaXRpb25TdGFydCIhPT1GPyJvbkNvbXBvc2l0aW9uRW5kIj09PUYmJm9iJiYoRWE9aGcoKSk6KENhPWUsaGU9InZhbHVlImluIENhP0NhLnZhbHVlOkNhLnRleHRDb250ZW50LG9iPSEwKSksZGE9VGMoZCxGKSwwPGRhLmxlbmd0aCYmKEY9bmV3IE5nKEYsYSxudWxsLGMsZSksZy5wdXNoKHtldmVudDpGLGxpc3RlbmVyczpkYX0pLEVhP0YuZGF0YT1FYTooRWE9a2coYyksbnVsbCE9PUVhJiYNCihGLmRhdGE9RWEpKSkpO2lmKEVhPWtqP1FpKGEsYyk6UmkoYSxjKSlkPVRjKGQsIm9uQmVmb3JlSW5wdXQiKSwwPGQubGVuZ3RoJiYoZT1uZXcgbGooIm9uQmVmb3JlSW5wdXQiLCJiZWZvcmVpbnB1dCIsbnVsbCxjLGUpLGcucHVzaCh7ZXZlbnQ6ZSxsaXN0ZW5lcnM6ZH0pLGUuZGF0YT1FYSl9cWcoZyxiKX0pfWZ1bmN0aW9uIGFjKGEsYixjKXtyZXR1cm57aW5zdGFuY2U6YSxsaXN0ZW5lcjpiLGN1cnJlbnRUYXJnZXQ6Y319ZnVuY3Rpb24gVGMoYSxiKXtmb3IodmFyIGM9YisiQ2FwdHVyZSIsZD1bXTtudWxsIT09YTspe3ZhciBlPWEsZj1lLnN0YXRlTm9kZTs1PT09ZS50YWcmJm51bGwhPT1mJiYoZT1mLGY9UGIoYSxjKSxudWxsIT1mJiZkLnVuc2hpZnQoYWMoYSxmLGUpKSxmPVBiKGEsYiksbnVsbCE9ZiYmZC5wdXNoKGFjKGEsZixlKSkpO2E9YS5yZXR1cm59cmV0dXJuIGR9ZnVuY3Rpb24gc2IoYSl7aWYobnVsbD09PWEpcmV0dXJuIG51bGw7ZG8gYT1hLnJldHVybjt3aGlsZShhJiYNCjUhPT1hLnRhZyk7cmV0dXJuIGE\/YTpudWxsfWZ1bmN0aW9uIExnKGEsYixjLGQsZSl7Zm9yKHZhciBmPWIuX3JlYWN0TmFtZSxnPVtdO251bGwhPT1jJiZjIT09ZDspe3ZhciBoPWMsaz1oLmFsdGVybmF0ZSx2PWguc3RhdGVOb2RlO2lmKG51bGwhPT1rJiZrPT09ZClicmVhazs1PT09aC50YWcmJm51bGwhPT12JiYoaD12LGU\/KGs9UGIoYyxmKSxudWxsIT1rJiZnLnVuc2hpZnQoYWMoYyxrLGgpKSk6ZXx8KGs9UGIoYyxmKSxudWxsIT1rJiZnLnB1c2goYWMoYyxrLGgpKSkpO2M9Yy5yZXR1cm59MCE9PWcubGVuZ3RoJiZhLnB1c2goe2V2ZW50OmIsbGlzdGVuZXJzOmd9KX1mdW5jdGlvbiBWYygpe31mdW5jdGlvbiBPZyhhLGIpe3N3aXRjaChhKXtjYXNlICJidXR0b24iOmNhc2UgImlucHV0IjpjYXNlICJzZWxlY3QiOmNhc2UgInRleHRhcmVhIjpyZXR1cm4hIWIuYXV0b0ZvY3VzfXJldHVybiExfWZ1bmN0aW9uIHJlKGEsYil7cmV0dXJuInRleHRhcmVhIj09PWF8fCJvcHRpb24iPT09DQphfHwibm9zY3JpcHQiPT09YXx8InN0cmluZyI9PT10eXBlb2YgYi5jaGlsZHJlbnx8Im51bWJlciI9PT10eXBlb2YgYi5jaGlsZHJlbnx8Im9iamVjdCI9PT10eXBlb2YgYi5kYW5nZXJvdXNseVNldElubmVySFRNTCYmbnVsbCE9PWIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwmJm51bGwhPWIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwuX19odG1sfWZ1bmN0aW9uIHNlKGEpezE9PT1hLm5vZGVUeXBlP2EudGV4dENvbnRlbnQ9IiI6OT09PWEubm9kZVR5cGUmJihhPWEuYm9keSxudWxsIT1hJiYoYS50ZXh0Q29udGVudD0iIikpfWZ1bmN0aW9uIHRiKGEpe2Zvcig7bnVsbCE9YTthPWEubmV4dFNpYmxpbmcpe3ZhciBiPWEubm9kZVR5cGU7aWYoMT09PWJ8fDM9PT1iKWJyZWFrfXJldHVybiBhfWZ1bmN0aW9uIFBnKGEpe2E9YS5wcmV2aW91c1NpYmxpbmc7Zm9yKHZhciBiPTA7YTspe2lmKDg9PT1hLm5vZGVUeXBlKXt2YXIgYz1hLmRhdGE7aWYoIiQiPT09Y3x8IiQhIj09PWN8fCIkPyI9PT0NCmMpe2lmKDA9PT1iKXJldHVybiBhO2ItLX1lbHNlIi8kIj09PWMmJmIrK31hPWEucHJldmlvdXNTaWJsaW5nfXJldHVybiBudWxsfWZ1bmN0aW9uIG1qKGEpe3JldHVybnskJHR5cGVvZjp0ZSx0b1N0cmluZzphLHZhbHVlT2Y6YX19ZnVuY3Rpb24gV2EoYSl7dmFyIGI9YVtGYV07aWYoYilyZXR1cm4gYjtmb3IodmFyIGM9YS5wYXJlbnROb2RlO2M7KXtpZihiPWNbcmJdfHxjW0ZhXSl7Yz1iLmFsdGVybmF0ZTtpZihudWxsIT09Yi5jaGlsZHx8bnVsbCE9PWMmJm51bGwhPT1jLmNoaWxkKWZvcihhPVBnKGEpO251bGwhPT1hOyl7aWYoYz1hW0ZhXSlyZXR1cm4gYzthPVBnKGEpfXJldHVybiBifWE9YztjPWEucGFyZW50Tm9kZX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBPYihhKXthPWFbRmFdfHxhW3JiXTtyZXR1cm4hYXx8NSE9PWEudGFnJiY2IT09YS50YWcmJjEzIT09YS50YWcmJjMhPT1hLnRhZz9udWxsOmF9ZnVuY3Rpb24gcGIoYSl7aWYoNT09PWEudGFnfHw2PT09YS50YWcpcmV0dXJuIGEuc3RhdGVOb2RlOw0KdGhyb3cgRXJyb3IobSgzMykpO31mdW5jdGlvbiBIYyhhKXtyZXR1cm4gYVtXY118fG51bGx9ZnVuY3Rpb24gemcoYSl7dmFyIGI9YVtRZ107dm9pZCAwPT09YiYmKGI9YVtRZ109bmV3IFNldCk7cmV0dXJuIGJ9ZnVuY3Rpb24gR2EoYSl7cmV0dXJue2N1cnJlbnQ6YX19ZnVuY3Rpb24gdChhLGIpezA+dWJ8fChhLmN1cnJlbnQ9dWVbdWJdLHVlW3ViXT1udWxsLHViLS0pfWZ1bmN0aW9uIEEoYSxiLGMpe3ViKys7dWVbdWJdPWEuY3VycmVudDthLmN1cnJlbnQ9Yn1mdW5jdGlvbiB2YihhLGIpe3ZhciBjPWEudHlwZS5jb250ZXh0VHlwZXM7aWYoIWMpcmV0dXJuIEhhO3ZhciBkPWEuc3RhdGVOb2RlO2lmKGQmJmQuX19yZWFjdEludGVybmFsTWVtb2l6ZWRVbm1hc2tlZENoaWxkQ29udGV4dD09PWIpcmV0dXJuIGQuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNYXNrZWRDaGlsZENvbnRleHQ7dmFyIGU9e30sZjtmb3IoZiBpbiBjKWVbZl09YltmXTtkJiYoYT1hLnN0YXRlTm9kZSxhLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkVW5tYXNrZWRDaGlsZENvbnRleHQ9DQpiLGEuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNYXNrZWRDaGlsZENvbnRleHQ9ZSk7cmV0dXJuIGV9ZnVuY3Rpb24gUyhhKXthPWEuY2hpbGRDb250ZXh0VHlwZXM7cmV0dXJuIG51bGwhPT1hJiZ2b2lkIDAhPT1hfWZ1bmN0aW9uIFJnKGEsYixjKXtpZihELmN1cnJlbnQhPT1IYSl0aHJvdyBFcnJvcihtKDE2OCkpO0EoRCxiKTtBKEosYyl9ZnVuY3Rpb24gU2coYSxiLGMpe3ZhciBkPWEuc3RhdGVOb2RlO2E9Yi5jaGlsZENvbnRleHRUeXBlcztpZigiZnVuY3Rpb24iIT09dHlwZW9mIGQuZ2V0Q2hpbGRDb250ZXh0KXJldHVybiBjO2Q9ZC5nZXRDaGlsZENvbnRleHQoKTtmb3IodmFyIGUgaW4gZClpZighKGUgaW4gYSkpdGhyb3cgRXJyb3IobSgxMDgsaGIoYil8fCJVbmtub3duIixlKSk7cmV0dXJuIEIoe30sYyxkKX1mdW5jdGlvbiBYYyhhKXthPShhPWEuc3RhdGVOb2RlKSYmYS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1lcmdlZENoaWxkQ29udGV4dHx8SGE7WWE9RC5jdXJyZW50Ow0KQShELGEpO0EoSixKLmN1cnJlbnQpO3JldHVybiEwfWZ1bmN0aW9uIFRnKGEsYixjKXt2YXIgZD1hLnN0YXRlTm9kZTtpZighZCl0aHJvdyBFcnJvcihtKDE2OSkpO2M\/KGE9U2coYSxiLFlhKSxkLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWVyZ2VkQ2hpbGRDb250ZXh0PWEsdChKKSx0KEQpLEEoRCxhKSk6dChKKTtBKEosYyl9ZnVuY3Rpb24gd2IoKXtzd2l0Y2gobmooKSl7Y2FzZSBZYzpyZXR1cm4gOTk7Y2FzZSBVZzpyZXR1cm4gOTg7Y2FzZSBWZzpyZXR1cm4gOTc7Y2FzZSBXZzpyZXR1cm4gOTY7Y2FzZSBYZzpyZXR1cm4gOTU7ZGVmYXVsdDp0aHJvdyBFcnJvcihtKDMzMikpO319ZnVuY3Rpb24gWWcoYSl7c3dpdGNoKGEpe2Nhc2UgOTk6cmV0dXJuIFljO2Nhc2UgOTg6cmV0dXJuIFVnO2Nhc2UgOTc6cmV0dXJuIFZnO2Nhc2UgOTY6cmV0dXJuIFdnO2Nhc2UgOTU6cmV0dXJuIFhnO2RlZmF1bHQ6dGhyb3cgRXJyb3IobSgzMzIpKTt9fWZ1bmN0aW9uIFphKGEsYil7YT1ZZyhhKTsNCnJldHVybiBvaihhLGIpfWZ1bmN0aW9uIGJjKGEsYixjKXthPVlnKGEpO3JldHVybiB2ZShhLGIsYyl9ZnVuY3Rpb24gamEoKXtpZihudWxsIT09WmMpe3ZhciBhPVpjO1pjPW51bGw7d2UoYSl9WmcoKX1mdW5jdGlvbiBaZygpe2lmKCF4ZSYmbnVsbCE9PXBhKXt4ZT0hMDt2YXIgYT0wO3RyeXt2YXIgYj1wYTtaYSg5OSxmdW5jdGlvbigpe2Zvcig7YTxiLmxlbmd0aDthKyspe3ZhciBjPWJbYV07ZG8gYz1jKCEwKTt3aGlsZShudWxsIT09Yyl9fSk7cGE9bnVsbH1jYXRjaChjKXt0aHJvdyBudWxsIT09cGEmJihwYT1wYS5zbGljZShhKzEpKSx2ZShZYyxqYSksYzt9ZmluYWxseXt4ZT0hMX19fWZ1bmN0aW9uIGVhKGEsYil7aWYoYSYmYS5kZWZhdWx0UHJvcHMpe2I9Qih7fSxiKTthPWEuZGVmYXVsdFByb3BzO2Zvcih2YXIgYyBpbiBhKXZvaWQgMD09PWJbY10mJihiW2NdPWFbY10pO3JldHVybiBifXJldHVybiBifWZ1bmN0aW9uIHllKCl7JGM9eGI9YWQ9bnVsbH1mdW5jdGlvbiB6ZShhKXt2YXIgYj0NCmJkLmN1cnJlbnQ7dChiZCk7YS50eXBlLl9jb250ZXh0Ll9jdXJyZW50VmFsdWU9Yn1mdW5jdGlvbiAkZyhhLGIpe2Zvcig7bnVsbCE9PWE7KXt2YXIgYz1hLmFsdGVybmF0ZTtpZigoYS5jaGlsZExhbmVzJmIpPT09YilpZihudWxsPT09Y3x8KGMuY2hpbGRMYW5lcyZiKT09PWIpYnJlYWs7ZWxzZSBjLmNoaWxkTGFuZXN8PWI7ZWxzZSBhLmNoaWxkTGFuZXN8PWIsbnVsbCE9PWMmJihjLmNoaWxkTGFuZXN8PWIpO2E9YS5yZXR1cm59fWZ1bmN0aW9uIHliKGEsYil7YWQ9YTskYz14Yj1udWxsO2E9YS5kZXBlbmRlbmNpZXM7bnVsbCE9PWEmJm51bGwhPT1hLmZpcnN0Q29udGV4dCYmKDAhPT0oYS5sYW5lcyZiKSYmKGZhPSEwKSxhLmZpcnN0Q29udGV4dD1udWxsKX1mdW5jdGlvbiBZKGEsYil7aWYoJGMhPT1hJiYhMSE9PWImJjAhPT1iKXtpZigibnVtYmVyIiE9PXR5cGVvZiBifHwxMDczNzQxODIzPT09YikkYz1hLGI9MTA3Mzc0MTgyMztiPXtjb250ZXh0OmEsb2JzZXJ2ZWRCaXRzOmIsDQpuZXh0Om51bGx9O2lmKG51bGw9PT14Yil7aWYobnVsbD09PWFkKXRocm93IEVycm9yKG0oMzA4KSk7eGI9YjthZC5kZXBlbmRlbmNpZXM9e2xhbmVzOjAsZmlyc3RDb250ZXh0OmIscmVzcG9uZGVyczpudWxsfX1lbHNlIHhiPXhiLm5leHQ9Yn1yZXR1cm4gYS5fY3VycmVudFZhbHVlfWZ1bmN0aW9uIEFlKGEpe2EudXBkYXRlUXVldWU9e2Jhc2VTdGF0ZTphLm1lbW9pemVkU3RhdGUsZmlyc3RCYXNlVXBkYXRlOm51bGwsbGFzdEJhc2VVcGRhdGU6bnVsbCxzaGFyZWQ6e3BlbmRpbmc6bnVsbH0sZWZmZWN0czpudWxsfX1mdW5jdGlvbiBhaChhLGIpe2E9YS51cGRhdGVRdWV1ZTtiLnVwZGF0ZVF1ZXVlPT09YSYmKGIudXBkYXRlUXVldWU9e2Jhc2VTdGF0ZTphLmJhc2VTdGF0ZSxmaXJzdEJhc2VVcGRhdGU6YS5maXJzdEJhc2VVcGRhdGUsbGFzdEJhc2VVcGRhdGU6YS5sYXN0QmFzZVVwZGF0ZSxzaGFyZWQ6YS5zaGFyZWQsZWZmZWN0czphLmVmZmVjdHN9KX1mdW5jdGlvbiBJYShhLGIpe3JldHVybntldmVudFRpbWU6YSwNCmxhbmU6Yix0YWc6MCxwYXlsb2FkOm51bGwsY2FsbGJhY2s6bnVsbCxuZXh0Om51bGx9fWZ1bmN0aW9uIEphKGEsYil7YT1hLnVwZGF0ZVF1ZXVlO2lmKG51bGwhPT1hKXthPWEuc2hhcmVkO3ZhciBjPWEucGVuZGluZztudWxsPT09Yz9iLm5leHQ9YjooYi5uZXh0PWMubmV4dCxjLm5leHQ9Yik7YS5wZW5kaW5nPWJ9fWZ1bmN0aW9uIGJoKGEsYil7dmFyIGM9YS51cGRhdGVRdWV1ZSxkPWEuYWx0ZXJuYXRlO2lmKG51bGwhPT1kJiYoZD1kLnVwZGF0ZVF1ZXVlLGM9PT1kKSl7dmFyIGU9bnVsbCxmPW51bGw7Yz1jLmZpcnN0QmFzZVVwZGF0ZTtpZihudWxsIT09Yyl7ZG97dmFyIGc9e2V2ZW50VGltZTpjLmV2ZW50VGltZSxsYW5lOmMubGFuZSx0YWc6Yy50YWcscGF5bG9hZDpjLnBheWxvYWQsY2FsbGJhY2s6Yy5jYWxsYmFjayxuZXh0Om51bGx9O251bGw9PT1mP2U9Zj1nOmY9Zi5uZXh0PWc7Yz1jLm5leHR9d2hpbGUobnVsbCE9PWMpO251bGw9PT1mP2U9Zj1iOmY9Zi5uZXh0PWJ9ZWxzZSBlPQ0KZj1iO2M9e2Jhc2VTdGF0ZTpkLmJhc2VTdGF0ZSxmaXJzdEJhc2VVcGRhdGU6ZSxsYXN0QmFzZVVwZGF0ZTpmLHNoYXJlZDpkLnNoYXJlZCxlZmZlY3RzOmQuZWZmZWN0c307YS51cGRhdGVRdWV1ZT1jO3JldHVybn1hPWMubGFzdEJhc2VVcGRhdGU7bnVsbD09PWE\/Yy5maXJzdEJhc2VVcGRhdGU9YjphLm5leHQ9YjtjLmxhc3RCYXNlVXBkYXRlPWJ9ZnVuY3Rpb24gY2MoYSxiLGMsZCl7dmFyIGU9YS51cGRhdGVRdWV1ZTtLYT0hMTt2YXIgZj1lLmZpcnN0QmFzZVVwZGF0ZSxnPWUubGFzdEJhc2VVcGRhdGUsaD1lLnNoYXJlZC5wZW5kaW5nO2lmKG51bGwhPT1oKXtlLnNoYXJlZC5wZW5kaW5nPW51bGw7dmFyIGs9aCx2PWsubmV4dDtrLm5leHQ9bnVsbDtudWxsPT09Zz9mPXY6Zy5uZXh0PXY7Zz1rO3ZhciBtPWEuYWx0ZXJuYXRlO2lmKG51bGwhPT1tKXttPW0udXBkYXRlUXVldWU7dmFyIGw9bS5sYXN0QmFzZVVwZGF0ZTtsIT09ZyYmKG51bGw9PT1sP20uZmlyc3RCYXNlVXBkYXRlPQ0KdjpsLm5leHQ9dixtLmxhc3RCYXNlVXBkYXRlPWspfX1pZihudWxsIT09Zil7bD1lLmJhc2VTdGF0ZTtnPTA7bT12PWs9bnVsbDtkb3toPWYubGFuZTt2YXIgcj1mLmV2ZW50VGltZTtpZigoZCZoKT09PWgpe251bGwhPT1tJiYobT1tLm5leHQ9e2V2ZW50VGltZTpyLGxhbmU6MCx0YWc6Zi50YWcscGF5bG9hZDpmLnBheWxvYWQsY2FsbGJhY2s6Zi5jYWxsYmFjayxuZXh0Om51bGx9KTthOnt2YXIgbj1hLHQ9ZjtoPWI7cj1jO3N3aXRjaCh0LnRhZyl7Y2FzZSAxOm49dC5wYXlsb2FkO2lmKCJmdW5jdGlvbiI9PT10eXBlb2Ygbil7bD1uLmNhbGwocixsLGgpO2JyZWFrIGF9bD1uO2JyZWFrIGE7Y2FzZSAzOm4uZmxhZ3M9bi5mbGFncyYtNDA5N3w2NDtjYXNlIDA6bj10LnBheWxvYWQ7aD0iZnVuY3Rpb24iPT09dHlwZW9mIG4\/bi5jYWxsKHIsbCxoKTpuO2lmKG51bGw9PT1ofHx2b2lkIDA9PT1oKWJyZWFrIGE7bD1CKHt9LGwsaCk7YnJlYWsgYTtjYXNlIDI6S2E9ITB9fW51bGwhPT1mLmNhbGxiYWNrJiYNCihhLmZsYWdzfD0zMixoPWUuZWZmZWN0cyxudWxsPT09aD9lLmVmZmVjdHM9W2ZdOmgucHVzaChmKSl9ZWxzZSByPXtldmVudFRpbWU6cixsYW5lOmgsdGFnOmYudGFnLHBheWxvYWQ6Zi5wYXlsb2FkLGNhbGxiYWNrOmYuY2FsbGJhY2ssbmV4dDpudWxsfSxudWxsPT09bT8odj1tPXIsaz1sKTptPW0ubmV4dD1yLGd8PWg7Zj1mLm5leHQ7aWYobnVsbD09PWYpaWYoaD1lLnNoYXJlZC5wZW5kaW5nLG51bGw9PT1oKWJyZWFrO2Vsc2UgZj1oLm5leHQsaC5uZXh0PW51bGwsZS5sYXN0QmFzZVVwZGF0ZT1oLGUuc2hhcmVkLnBlbmRpbmc9bnVsbH13aGlsZSgxKTtudWxsPT09bSYmKGs9bCk7ZS5iYXNlU3RhdGU9aztlLmZpcnN0QmFzZVVwZGF0ZT12O2UubGFzdEJhc2VVcGRhdGU9bTtMYXw9ZzthLmxhbmVzPWc7YS5tZW1vaXplZFN0YXRlPWx9fWZ1bmN0aW9uIGNoKGEsYixjKXthPWIuZWZmZWN0cztiLmVmZmVjdHM9bnVsbDtpZihudWxsIT09YSlmb3IoYj0wO2I8YS5sZW5ndGg7YisrKXt2YXIgZD0NCmFbYl0sZT1kLmNhbGxiYWNrO2lmKG51bGwhPT1lKXtkLmNhbGxiYWNrPW51bGw7ZD1jO2lmKCJmdW5jdGlvbiIhPT10eXBlb2YgZSl0aHJvdyBFcnJvcihtKDE5MSxlKSk7ZS5jYWxsKGQpfX19ZnVuY3Rpb24gY2QoYSxiLGMsZCl7Yj1hLm1lbW9pemVkU3RhdGU7Yz1jKGQsYik7Yz1udWxsPT09Y3x8dm9pZCAwPT09Yz9iOkIoe30sYixjKTthLm1lbW9pemVkU3RhdGU9YzswPT09YS5sYW5lcyYmKGEudXBkYXRlUXVldWUuYmFzZVN0YXRlPWMpfWZ1bmN0aW9uIGRoKGEsYixjLGQsZSxmLGcpe2E9YS5zdGF0ZU5vZGU7cmV0dXJuImZ1bmN0aW9uIj09PXR5cGVvZiBhLnNob3VsZENvbXBvbmVudFVwZGF0ZT9hLnNob3VsZENvbXBvbmVudFVwZGF0ZShkLGYsZyk6Yi5wcm90b3R5cGUmJmIucHJvdG90eXBlLmlzUHVyZVJlYWN0Q29tcG9uZW50PyFaYihjLGQpfHwhWmIoZSxmKTohMH1mdW5jdGlvbiBlaChhLGIsYyl7dmFyIGQ9ITEsZT1IYTt2YXIgZj1iLmNvbnRleHRUeXBlOyJvYmplY3QiPT09DQp0eXBlb2YgZiYmbnVsbCE9PWY\/Zj1ZKGYpOihlPVMoYik\/WWE6RC5jdXJyZW50LGQ9Yi5jb250ZXh0VHlwZXMsZj0oZD1udWxsIT09ZCYmdm9pZCAwIT09ZCk\/dmIoYSxlKTpIYSk7Yj1uZXcgYihjLGYpO2EubWVtb2l6ZWRTdGF0ZT1udWxsIT09Yi5zdGF0ZSYmdm9pZCAwIT09Yi5zdGF0ZT9iLnN0YXRlOm51bGw7Yi51cGRhdGVyPWRkO2Euc3RhdGVOb2RlPWI7Yi5fcmVhY3RJbnRlcm5hbHM9YTtkJiYoYT1hLnN0YXRlTm9kZSxhLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkVW5tYXNrZWRDaGlsZENvbnRleHQ9ZSxhLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWFza2VkQ2hpbGRDb250ZXh0PWYpO3JldHVybiBifWZ1bmN0aW9uIGZoKGEsYixjLGQpe2E9Yi5zdGF0ZTsiZnVuY3Rpb24iPT09dHlwZW9mIGIuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyYmYi5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKGMsZCk7ImZ1bmN0aW9uIj09PXR5cGVvZiBiLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiYNCmIuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMoYyxkKTtiLnN0YXRlIT09YSYmZGQuZW5xdWV1ZVJlcGxhY2VTdGF0ZShiLGIuc3RhdGUsbnVsbCl9ZnVuY3Rpb24gQmUoYSxiLGMsZCl7dmFyIGU9YS5zdGF0ZU5vZGU7ZS5wcm9wcz1jO2Uuc3RhdGU9YS5tZW1vaXplZFN0YXRlO2UucmVmcz1naDtBZShhKTt2YXIgZj1iLmNvbnRleHRUeXBlOyJvYmplY3QiPT09dHlwZW9mIGYmJm51bGwhPT1mP2UuY29udGV4dD1ZKGYpOihmPVMoYik\/WWE6RC5jdXJyZW50LGUuY29udGV4dD12YihhLGYpKTtjYyhhLGMsZSxkKTtlLnN0YXRlPWEubWVtb2l6ZWRTdGF0ZTtmPWIuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzOyJmdW5jdGlvbiI9PT10eXBlb2YgZiYmKGNkKGEsYixmLGMpLGUuc3RhdGU9YS5tZW1vaXplZFN0YXRlKTsiZnVuY3Rpb24iPT09dHlwZW9mIGIuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzfHwiZnVuY3Rpb24iPT09dHlwZW9mIGUuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGV8fA0KImZ1bmN0aW9uIiE9PXR5cGVvZiBlLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQmJiJmdW5jdGlvbiIhPT10eXBlb2YgZS5jb21wb25lbnRXaWxsTW91bnR8fChiPWUuc3RhdGUsImZ1bmN0aW9uIj09PXR5cGVvZiBlLmNvbXBvbmVudFdpbGxNb3VudCYmZS5jb21wb25lbnRXaWxsTW91bnQoKSwiZnVuY3Rpb24iPT09dHlwZW9mIGUuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmZS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50KCksYiE9PWUuc3RhdGUmJmRkLmVucXVldWVSZXBsYWNlU3RhdGUoZSxlLnN0YXRlLG51bGwpLGNjKGEsYyxlLGQpLGUuc3RhdGU9YS5tZW1vaXplZFN0YXRlKTsiZnVuY3Rpb24iPT09dHlwZW9mIGUuY29tcG9uZW50RGlkTW91bnQmJihhLmZsYWdzfD00KX1mdW5jdGlvbiBkYyhhLGIsYyl7YT1jLnJlZjtpZihudWxsIT09YSYmImZ1bmN0aW9uIiE9PXR5cGVvZiBhJiYib2JqZWN0IiE9PXR5cGVvZiBhKXtpZihjLl9vd25lcil7Yz1jLl9vd25lcjtpZihjKXtpZigxIT09DQpjLnRhZyl0aHJvdyBFcnJvcihtKDMwOSkpO3ZhciBkPWMuc3RhdGVOb2RlfWlmKCFkKXRocm93IEVycm9yKG0oMTQ3LGEpKTt2YXIgZT0iIithO2lmKG51bGwhPT1iJiZudWxsIT09Yi5yZWYmJiJmdW5jdGlvbiI9PT10eXBlb2YgYi5yZWYmJmIucmVmLl9zdHJpbmdSZWY9PT1lKXJldHVybiBiLnJlZjtiPWZ1bmN0aW9uKGEpe3ZhciBiPWQucmVmcztiPT09Z2gmJihiPWQucmVmcz17fSk7bnVsbD09PWE\/ZGVsZXRlIGJbZV06YltlXT1hfTtiLl9zdHJpbmdSZWY9ZTtyZXR1cm4gYn1pZigic3RyaW5nIiE9PXR5cGVvZiBhKXRocm93IEVycm9yKG0oMjg0KSk7aWYoIWMuX293bmVyKXRocm93IEVycm9yKG0oMjkwLGEpKTt9cmV0dXJuIGF9ZnVuY3Rpb24gZWQoYSxiKXtpZigidGV4dGFyZWEiIT09YS50eXBlKXRocm93IEVycm9yKG0oMzEsIltvYmplY3QgT2JqZWN0XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYik\/Im9iamVjdCB3aXRoIGtleXMgeyIrT2JqZWN0LmtleXMoYikuam9pbigiLCAiKSsNCiJ9IjpiKSk7fWZ1bmN0aW9uIGhoKGEpe2Z1bmN0aW9uIGIoYixjKXtpZihhKXt2YXIgZD1iLmxhc3RFZmZlY3Q7bnVsbCE9PWQ\/KGQubmV4dEVmZmVjdD1jLGIubGFzdEVmZmVjdD1jKTpiLmZpcnN0RWZmZWN0PWIubGFzdEVmZmVjdD1jO2MubmV4dEVmZmVjdD1udWxsO2MuZmxhZ3M9OH19ZnVuY3Rpb24gYyhjLGQpe2lmKCFhKXJldHVybiBudWxsO2Zvcig7bnVsbCE9PWQ7KWIoYyxkKSxkPWQuc2libGluZztyZXR1cm4gbnVsbH1mdW5jdGlvbiBkKGEsYil7Zm9yKGE9bmV3IE1hcDtudWxsIT09YjspbnVsbCE9PWIua2V5P2Euc2V0KGIua2V5LGIpOmEuc2V0KGIuaW5kZXgsYiksYj1iLnNpYmxpbmc7cmV0dXJuIGF9ZnVuY3Rpb24gZShhLGIpe2E9TWEoYSxiKTthLmluZGV4PTA7YS5zaWJsaW5nPW51bGw7cmV0dXJuIGF9ZnVuY3Rpb24gZihiLGMsZCl7Yi5pbmRleD1kO2lmKCFhKXJldHVybiBjO2Q9Yi5hbHRlcm5hdGU7aWYobnVsbCE9PWQpcmV0dXJuIGQ9ZC5pbmRleCxkPGM\/KGIuZmxhZ3M9DQoyLGMpOmQ7Yi5mbGFncz0yO3JldHVybiBjfWZ1bmN0aW9uIGcoYil7YSYmbnVsbD09PWIuYWx0ZXJuYXRlJiYoYi5mbGFncz0yKTtyZXR1cm4gYn1mdW5jdGlvbiBoKGEsYixjLGQpe2lmKG51bGw9PT1ifHw2IT09Yi50YWcpcmV0dXJuIGI9Q2UoYyxhLm1vZGUsZCksYi5yZXR1cm49YSxiO2I9ZShiLGMpO2IucmV0dXJuPWE7cmV0dXJuIGJ9ZnVuY3Rpb24gayhhLGIsYyxkKXtpZihudWxsIT09YiYmYi5lbGVtZW50VHlwZT09PWMudHlwZSlyZXR1cm4gZD1lKGIsYy5wcm9wcyksZC5yZWY9ZGMoYSxiLGMpLGQucmV0dXJuPWEsZDtkPWZkKGMudHlwZSxjLmtleSxjLnByb3BzLG51bGwsYS5tb2RlLGQpO2QucmVmPWRjKGEsYixjKTtkLnJldHVybj1hO3JldHVybiBkfWZ1bmN0aW9uIHYoYSxiLGMsZCl7aWYobnVsbD09PWJ8fDQhPT1iLnRhZ3x8Yi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyE9PWMuY29udGFpbmVySW5mb3x8Yi5zdGF0ZU5vZGUuaW1wbGVtZW50YXRpb24hPT1jLmltcGxlbWVudGF0aW9uKXJldHVybiBiPQ0KRGUoYyxhLm1vZGUsZCksYi5yZXR1cm49YSxiO2I9ZShiLGMuY2hpbGRyZW58fFtdKTtiLnJldHVybj1hO3JldHVybiBifWZ1bmN0aW9uIGwoYSxiLGMsZCxmKXtpZihudWxsPT09Ynx8NyE9PWIudGFnKXJldHVybiBiPXpiKGMsYS5tb2RlLGQsZiksYi5yZXR1cm49YSxiO2I9ZShiLGMpO2IucmV0dXJuPWE7cmV0dXJuIGJ9ZnVuY3Rpb24gbihhLGIsYyl7aWYoInN0cmluZyI9PT10eXBlb2YgYnx8Im51bWJlciI9PT10eXBlb2YgYilyZXR1cm4gYj1DZSgiIitiLGEubW9kZSxjKSxiLnJldHVybj1hLGI7aWYoIm9iamVjdCI9PT10eXBlb2YgYiYmbnVsbCE9PWIpe3N3aXRjaChiLiQkdHlwZW9mKXtjYXNlIGVjOnJldHVybiBjPWZkKGIudHlwZSxiLmtleSxiLnByb3BzLG51bGwsYS5tb2RlLGMpLGMucmVmPWRjKGEsbnVsbCxiKSxjLnJldHVybj1hLGM7Y2FzZSBVYTpyZXR1cm4gYj1EZShiLGEubW9kZSxjKSxiLnJldHVybj1hLGJ9aWYoZ2QoYil8fEpiKGIpKXJldHVybiBiPXpiKGIsDQphLm1vZGUsYyxudWxsKSxiLnJldHVybj1hLGI7ZWQoYSxiKX1yZXR1cm4gbnVsbH1mdW5jdGlvbiByKGEsYixjLGQpe3ZhciBlPW51bGwhPT1iP2Iua2V5Om51bGw7aWYoInN0cmluZyI9PT10eXBlb2YgY3x8Im51bWJlciI9PT10eXBlb2YgYylyZXR1cm4gbnVsbCE9PWU\/bnVsbDpoKGEsYiwiIitjLGQpO2lmKCJvYmplY3QiPT09dHlwZW9mIGMmJm51bGwhPT1jKXtzd2l0Y2goYy4kJHR5cGVvZil7Y2FzZSBlYzpyZXR1cm4gYy5rZXk9PT1lP2MudHlwZT09PXdhP2woYSxiLGMucHJvcHMuY2hpbGRyZW4sZCxlKTprKGEsYixjLGQpOm51bGw7Y2FzZSBVYTpyZXR1cm4gYy5rZXk9PT1lP3YoYSxiLGMsZCk6bnVsbH1pZihnZChjKXx8SmIoYykpcmV0dXJuIG51bGwhPT1lP251bGw6bChhLGIsYyxkLG51bGwpO2VkKGEsYyl9cmV0dXJuIG51bGx9ZnVuY3Rpb24gdChhLGIsYyxkLGUpe2lmKCJzdHJpbmciPT09dHlwZW9mIGR8fCJudW1iZXIiPT09dHlwZW9mIGQpcmV0dXJuIGE9YS5nZXQoYyl8fA0KbnVsbCxoKGIsYSwiIitkLGUpO2lmKCJvYmplY3QiPT09dHlwZW9mIGQmJm51bGwhPT1kKXtzd2l0Y2goZC4kJHR5cGVvZil7Y2FzZSBlYzpyZXR1cm4gYT1hLmdldChudWxsPT09ZC5rZXk\/YzpkLmtleSl8fG51bGwsZC50eXBlPT09d2E\/bChiLGEsZC5wcm9wcy5jaGlsZHJlbixlLGQua2V5KTprKGIsYSxkLGUpO2Nhc2UgVWE6cmV0dXJuIGE9YS5nZXQobnVsbD09PWQua2V5P2M6ZC5rZXkpfHxudWxsLHYoYixhLGQsZSl9aWYoZ2QoZCl8fEpiKGQpKXJldHVybiBhPWEuZ2V0KGMpfHxudWxsLGwoYixhLGQsZSxudWxsKTtlZChiLGQpfXJldHVybiBudWxsfWZ1bmN0aW9uIHcoZSxnLGgsayl7Zm9yKHZhciBtPW51bGwsdj1udWxsLGw9ZyxwPWc9MCx4PW51bGw7bnVsbCE9PWwmJnA8aC5sZW5ndGg7cCsrKXtsLmluZGV4PnA\/KHg9bCxsPW51bGwpOng9bC5zaWJsaW5nO3ZhciBDPXIoZSxsLGhbcF0sayk7aWYobnVsbD09PUMpe251bGw9PT1sJiYobD14KTticmVha31hJiZsJiZudWxsPT09DQpDLmFsdGVybmF0ZSYmYihlLGwpO2c9ZihDLGcscCk7bnVsbD09PXY\/bT1DOnYuc2libGluZz1DO3Y9QztsPXh9aWYocD09PWgubGVuZ3RoKXJldHVybiBjKGUsbCksbTtpZihudWxsPT09bCl7Zm9yKDtwPGgubGVuZ3RoO3ArKylsPW4oZSxoW3BdLGspLG51bGwhPT1sJiYoZz1mKGwsZyxwKSxudWxsPT09dj9tPWw6di5zaWJsaW5nPWwsdj1sKTtyZXR1cm4gbX1mb3IobD1kKGUsbCk7cDxoLmxlbmd0aDtwKyspeD10KGwsZSxwLGhbcF0sayksbnVsbCE9PXgmJihhJiZudWxsIT09eC5hbHRlcm5hdGUmJmwuZGVsZXRlKG51bGw9PT14LmtleT9wOngua2V5KSxnPWYoeCxnLHApLG51bGw9PT12P209eDp2LnNpYmxpbmc9eCx2PXgpO2EmJmwuZm9yRWFjaChmdW5jdGlvbihhKXtyZXR1cm4gYihlLGEpfSk7cmV0dXJuIG19ZnVuY3Rpb24geihlLGcsaCxrKXt2YXIgbD1KYihoKTtpZigiZnVuY3Rpb24iIT09dHlwZW9mIGwpdGhyb3cgRXJyb3IobSgxNTApKTtoPWwuY2FsbChoKTtpZihudWxsPT0NCmgpdGhyb3cgRXJyb3IobSgxNTEpKTtmb3IodmFyIHY9bD1udWxsLHA9Zyx4PWc9MCxDPW51bGwscT1oLm5leHQoKTtudWxsIT09cCYmIXEuZG9uZTt4KysscT1oLm5leHQoKSl7cC5pbmRleD54PyhDPXAscD1udWxsKTpDPXAuc2libGluZzt2YXIgRGE9cihlLHAscS52YWx1ZSxrKTtpZihudWxsPT09RGEpe251bGw9PT1wJiYocD1DKTticmVha31hJiZwJiZudWxsPT09RGEuYWx0ZXJuYXRlJiZiKGUscCk7Zz1mKERhLGcseCk7bnVsbD09PXY\/bD1EYTp2LnNpYmxpbmc9RGE7dj1EYTtwPUN9aWYocS5kb25lKXJldHVybiBjKGUscCksbDtpZihudWxsPT09cCl7Zm9yKDshcS5kb25lO3grKyxxPWgubmV4dCgpKXE9bihlLHEudmFsdWUsayksbnVsbCE9PXEmJihnPWYocSxnLHgpLG51bGw9PT12P2w9cTp2LnNpYmxpbmc9cSx2PXEpO3JldHVybiBsfWZvcihwPWQoZSxwKTshcS5kb25lO3grKyxxPWgubmV4dCgpKXE9dChwLGUseCxxLnZhbHVlLGspLG51bGwhPT1xJiYoYSYmbnVsbCE9PQ0KcS5hbHRlcm5hdGUmJnAuZGVsZXRlKG51bGw9PT1xLmtleT94OnEua2V5KSxnPWYocSxnLHgpLG51bGw9PT12P2w9cTp2LnNpYmxpbmc9cSx2PXEpO2EmJnAuZm9yRWFjaChmdW5jdGlvbihhKXtyZXR1cm4gYihlLGEpfSk7cmV0dXJuIGx9cmV0dXJuIGZ1bmN0aW9uKGEsZCxmLGgpe3ZhciBrPSJvYmplY3QiPT09dHlwZW9mIGYmJm51bGwhPT1mJiZmLnR5cGU9PT13YSYmbnVsbD09PWYua2V5O2smJihmPWYucHJvcHMuY2hpbGRyZW4pO3ZhciBsPSJvYmplY3QiPT09dHlwZW9mIGYmJm51bGwhPT1mO2lmKGwpc3dpdGNoKGYuJCR0eXBlb2Ype2Nhc2UgZWM6YTp7bD1mLmtleTtmb3Ioaz1kO251bGwhPT1rOyl7aWYoay5rZXk9PT1sKXtzd2l0Y2goay50YWcpe2Nhc2UgNzppZihmLnR5cGU9PT13YSl7YyhhLGsuc2libGluZyk7ZD1lKGssZi5wcm9wcy5jaGlsZHJlbik7ZC5yZXR1cm49YTthPWQ7YnJlYWsgYX1icmVhaztkZWZhdWx0OmlmKGsuZWxlbWVudFR5cGU9PT1mLnR5cGUpe2MoYSwNCmsuc2libGluZyk7ZD1lKGssZi5wcm9wcyk7ZC5yZWY9ZGMoYSxrLGYpO2QucmV0dXJuPWE7YT1kO2JyZWFrIGF9fWMoYSxrKTticmVha31lbHNlIGIoYSxrKTtrPWsuc2libGluZ31mLnR5cGU9PT13YT8oZD16YihmLnByb3BzLmNoaWxkcmVuLGEubW9kZSxoLGYua2V5KSxkLnJldHVybj1hLGE9ZCk6KGg9ZmQoZi50eXBlLGYua2V5LGYucHJvcHMsbnVsbCxhLm1vZGUsaCksaC5yZWY9ZGMoYSxkLGYpLGgucmV0dXJuPWEsYT1oKX1yZXR1cm4gZyhhKTtjYXNlIFVhOmE6e2ZvcihrPWYua2V5O251bGwhPT1kOyl7aWYoZC5rZXk9PT1rKWlmKDQ9PT1kLnRhZyYmZC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbz09PWYuY29udGFpbmVySW5mbyYmZC5zdGF0ZU5vZGUuaW1wbGVtZW50YXRpb249PT1mLmltcGxlbWVudGF0aW9uKXtjKGEsZC5zaWJsaW5nKTtkPWUoZCxmLmNoaWxkcmVufHxbXSk7ZC5yZXR1cm49YTthPWQ7YnJlYWsgYX1lbHNle2MoYSxkKTticmVha31lbHNlIGIoYSxkKTtkPQ0KZC5zaWJsaW5nfWQ9RGUoZixhLm1vZGUsaCk7ZC5yZXR1cm49YTthPWR9cmV0dXJuIGcoYSl9aWYoInN0cmluZyI9PT10eXBlb2YgZnx8Im51bWJlciI9PT10eXBlb2YgZilyZXR1cm4gZj0iIitmLG51bGwhPT1kJiY2PT09ZC50YWc\/KGMoYSxkLnNpYmxpbmcpLGQ9ZShkLGYpLGQucmV0dXJuPWEsYT1kKTooYyhhLGQpLGQ9Q2UoZixhLm1vZGUsaCksZC5yZXR1cm49YSxhPWQpLGcoYSk7aWYoZ2QoZikpcmV0dXJuIHcoYSxkLGYsaCk7aWYoSmIoZikpcmV0dXJuIHooYSxkLGYsaCk7bCYmZWQoYSxmKTtpZigidW5kZWZpbmVkIj09PXR5cGVvZiBmJiYhaylzd2l0Y2goYS50YWcpe2Nhc2UgMTpjYXNlIDIyOmNhc2UgMDpjYXNlIDExOmNhc2UgMTU6dGhyb3cgRXJyb3IobSgxNTIsaGIoYS50eXBlKXx8IkNvbXBvbmVudCIpKTt9cmV0dXJuIGMoYSxkKX19ZnVuY3Rpb24gJGEoYSl7aWYoYT09PWZjKXRocm93IEVycm9yKG0oMTc0KSk7cmV0dXJuIGF9ZnVuY3Rpb24gRWUoYSxiKXtBKGdjLA0KYik7QShoYyxhKTtBKGthLGZjKTthPWIubm9kZVR5cGU7c3dpdGNoKGEpe2Nhc2UgOTpjYXNlIDExOmI9KGI9Yi5kb2N1bWVudEVsZW1lbnQpP2IubmFtZXNwYWNlVVJJOlJkKG51bGwsIiIpO2JyZWFrO2RlZmF1bHQ6YT04PT09YT9iLnBhcmVudE5vZGU6YixiPWEubmFtZXNwYWNlVVJJfHxudWxsLGE9YS50YWdOYW1lLGI9UmQoYixhKX10KGthKTtBKGthLGIpfWZ1bmN0aW9uIEFiKGEpe3Qoa2EpO3QoaGMpO3QoZ2MpfWZ1bmN0aW9uIGloKGEpeyRhKGdjLmN1cnJlbnQpO3ZhciBiPSRhKGthLmN1cnJlbnQpO3ZhciBjPVJkKGIsYS50eXBlKTtiIT09YyYmKEEoaGMsYSksQShrYSxjKSl9ZnVuY3Rpb24gRmUoYSl7aGMuY3VycmVudD09PWEmJih0KGthKSx0KGhjKSl9ZnVuY3Rpb24gaGQoYSl7Zm9yKHZhciBiPWE7bnVsbCE9PWI7KXtpZigxMz09PWIudGFnKXt2YXIgYz1iLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWMmJihjPWMuZGVoeWRyYXRlZCxudWxsPT09Y3x8IiQ\/Ij09PWMuZGF0YXx8DQoiJCEiPT09Yy5kYXRhKSlyZXR1cm4gYn1lbHNlIGlmKDE5PT09Yi50YWcmJnZvaWQgMCE9PWIubWVtb2l6ZWRQcm9wcy5yZXZlYWxPcmRlcil7aWYoMCE9PShiLmZsYWdzJjY0KSlyZXR1cm4gYn1lbHNlIGlmKG51bGwhPT1iLmNoaWxkKXtiLmNoaWxkLnJldHVybj1iO2I9Yi5jaGlsZDtjb250aW51ZX1pZihiPT09YSlicmVhaztmb3IoO251bGw9PT1iLnNpYmxpbmc7KXtpZihudWxsPT09Yi5yZXR1cm58fGIucmV0dXJuPT09YSlyZXR1cm4gbnVsbDtiPWIucmV0dXJufWIuc2libGluZy5yZXR1cm49Yi5yZXR1cm47Yj1iLnNpYmxpbmd9cmV0dXJuIG51bGx9ZnVuY3Rpb24gamgoYSxiKXt2YXIgYz1aKDUsbnVsbCxudWxsLDApO2MuZWxlbWVudFR5cGU9IkRFTEVURUQiO2MudHlwZT0iREVMRVRFRCI7Yy5zdGF0ZU5vZGU9YjtjLnJldHVybj1hO2MuZmxhZ3M9ODtudWxsIT09YS5sYXN0RWZmZWN0PyhhLmxhc3RFZmZlY3QubmV4dEVmZmVjdD1jLGEubGFzdEVmZmVjdD1jKTphLmZpcnN0RWZmZWN0PQ0KYS5sYXN0RWZmZWN0PWN9ZnVuY3Rpb24ga2goYSxiKXtzd2l0Y2goYS50YWcpe2Nhc2UgNTp2YXIgYz1hLnR5cGU7Yj0xIT09Yi5ub2RlVHlwZXx8Yy50b0xvd2VyQ2FzZSgpIT09Yi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpP251bGw6YjtyZXR1cm4gbnVsbCE9PWI\/KGEuc3RhdGVOb2RlPWIsITApOiExO2Nhc2UgNjpyZXR1cm4gYj0iIj09PWEucGVuZGluZ1Byb3BzfHwzIT09Yi5ub2RlVHlwZT9udWxsOmIsbnVsbCE9PWI\/KGEuc3RhdGVOb2RlPWIsITApOiExO2Nhc2UgMTM6cmV0dXJuITE7ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24gR2UoYSl7aWYobGEpe3ZhciBiPU5hO2lmKGIpe3ZhciBjPWI7aWYoIWtoKGEsYikpe2I9dGIoYy5uZXh0U2libGluZyk7aWYoIWJ8fCFraChhLGIpKXthLmZsYWdzPWEuZmxhZ3MmLTEwMjV8MjtsYT0hMTtyYT1hO3JldHVybn1qaChyYSxjKX1yYT1hO05hPXRiKGIuZmlyc3RDaGlsZCl9ZWxzZSBhLmZsYWdzPWEuZmxhZ3MmLTEwMjV8MixsYT0hMSwNCnJhPWF9fWZ1bmN0aW9uIGxoKGEpe2ZvcihhPWEucmV0dXJuO251bGwhPT1hJiY1IT09YS50YWcmJjMhPT1hLnRhZyYmMTMhPT1hLnRhZzspYT1hLnJldHVybjtyYT1hfWZ1bmN0aW9uIGlkKGEpe2lmKGEhPT1yYSlyZXR1cm4hMTtpZighbGEpcmV0dXJuIGxoKGEpLGxhPSEwLCExO3ZhciBiPWEudHlwZTtpZig1IT09YS50YWd8fCJoZWFkIiE9PWImJiJib2R5IiE9PWImJiFyZShiLGEubWVtb2l6ZWRQcm9wcykpZm9yKGI9TmE7YjspamgoYSxiKSxiPXRiKGIubmV4dFNpYmxpbmcpO2xoKGEpO2lmKDEzPT09YS50YWcpe2E9YS5tZW1vaXplZFN0YXRlO2E9bnVsbCE9PWE\/YS5kZWh5ZHJhdGVkOm51bGw7aWYoIWEpdGhyb3cgRXJyb3IobSgzMTcpKTthOnthPWEubmV4dFNpYmxpbmc7Zm9yKGI9MDthOyl7aWYoOD09PWEubm9kZVR5cGUpe3ZhciBjPWEuZGF0YTtpZigiLyQiPT09Yyl7aWYoMD09PWIpe05hPXRiKGEubmV4dFNpYmxpbmcpO2JyZWFrIGF9Yi0tfWVsc2UiJCIhPT1jJiYiJCEiIT09DQpjJiYiJD8iIT09Y3x8YisrfWE9YS5uZXh0U2libGluZ31OYT1udWxsfX1lbHNlIE5hPXJhP3RiKGEuc3RhdGVOb2RlLm5leHRTaWJsaW5nKTpudWxsO3JldHVybiEwfWZ1bmN0aW9uIEhlKCl7TmE9cmE9bnVsbDtsYT0hMX1mdW5jdGlvbiBJZSgpe2Zvcih2YXIgYT0wO2E8QmIubGVuZ3RoO2ErKylCYlthXS5fd29ya0luUHJvZ3Jlc3NWZXJzaW9uUHJpbWFyeT1udWxsO0JiLmxlbmd0aD0wfWZ1bmN0aW9uIFQoKXt0aHJvdyBFcnJvcihtKDMyMSkpO31mdW5jdGlvbiBKZShhLGIpe2lmKG51bGw9PT1iKXJldHVybiExO2Zvcih2YXIgYz0wO2M8Yi5sZW5ndGgmJmM8YS5sZW5ndGg7YysrKWlmKCFYKGFbY10sYltjXSkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gS2UoYSxiLGMsZCxlLGYpe2ljPWY7eT1iO2IubWVtb2l6ZWRTdGF0ZT1udWxsO2IudXBkYXRlUXVldWU9bnVsbDtiLmxhbmVzPTA7amMuY3VycmVudD1udWxsPT09YXx8bnVsbD09PWEubWVtb2l6ZWRTdGF0ZT9wajpxajsNCmE9YyhkLGUpO2lmKGtjKXtmPTA7ZG97a2M9ITE7aWYoISgyNT5mKSl0aHJvdyBFcnJvcihtKDMwMSkpO2YrPTE7Sz1OPW51bGw7Yi51cGRhdGVRdWV1ZT1udWxsO2pjLmN1cnJlbnQ9cmo7YT1jKGQsZSl9d2hpbGUoa2MpfWpjLmN1cnJlbnQ9amQ7Yj1udWxsIT09TiYmbnVsbCE9PU4ubmV4dDtpYz0wO0s9Tj15PW51bGw7a2Q9ITE7aWYoYil0aHJvdyBFcnJvcihtKDMwMCkpO3JldHVybiBhfWZ1bmN0aW9uIGFiKCl7dmFyIGE9e21lbW9pemVkU3RhdGU6bnVsbCxiYXNlU3RhdGU6bnVsbCxiYXNlUXVldWU6bnVsbCxxdWV1ZTpudWxsLG5leHQ6bnVsbH07bnVsbD09PUs\/eS5tZW1vaXplZFN0YXRlPUs9YTpLPUsubmV4dD1hO3JldHVybiBLfWZ1bmN0aW9uIGJiKCl7aWYobnVsbD09PU4pe3ZhciBhPXkuYWx0ZXJuYXRlO2E9bnVsbCE9PWE\/YS5tZW1vaXplZFN0YXRlOm51bGx9ZWxzZSBhPU4ubmV4dDt2YXIgYj1udWxsPT09Sz95Lm1lbW9pemVkU3RhdGU6Sy5uZXh0O2lmKG51bGwhPT0NCmIpSz1iLE49YTtlbHNle2lmKG51bGw9PT1hKXRocm93IEVycm9yKG0oMzEwKSk7Tj1hO2E9e21lbW9pemVkU3RhdGU6Ti5tZW1vaXplZFN0YXRlLGJhc2VTdGF0ZTpOLmJhc2VTdGF0ZSxiYXNlUXVldWU6Ti5iYXNlUXVldWUscXVldWU6Ti5xdWV1ZSxuZXh0Om51bGx9O251bGw9PT1LP3kubWVtb2l6ZWRTdGF0ZT1LPWE6Sz1LLm5leHQ9YX1yZXR1cm4gS31mdW5jdGlvbiBtYShhLGIpe3JldHVybiJmdW5jdGlvbiI9PT10eXBlb2YgYj9iKGEpOmJ9ZnVuY3Rpb24gbGMoYSxiLGMpe2I9YmIoKTtjPWIucXVldWU7aWYobnVsbD09PWMpdGhyb3cgRXJyb3IobSgzMTEpKTtjLmxhc3RSZW5kZXJlZFJlZHVjZXI9YTt2YXIgZD1OLGU9ZC5iYXNlUXVldWUsZj1jLnBlbmRpbmc7aWYobnVsbCE9PWYpe2lmKG51bGwhPT1lKXt2YXIgZz1lLm5leHQ7ZS5uZXh0PWYubmV4dDtmLm5leHQ9Z31kLmJhc2VRdWV1ZT1lPWY7Yy5wZW5kaW5nPW51bGx9aWYobnVsbCE9PWUpe2U9ZS5uZXh0O2Q9ZC5iYXNlU3RhdGU7DQp2YXIgaD1nPWY9bnVsbCxrPWU7ZG97dmFyIGw9ay5sYW5lO2lmKChpYyZsKT09PWwpbnVsbCE9PWgmJihoPWgubmV4dD17bGFuZTowLGFjdGlvbjprLmFjdGlvbixlYWdlclJlZHVjZXI6ay5lYWdlclJlZHVjZXIsZWFnZXJTdGF0ZTprLmVhZ2VyU3RhdGUsbmV4dDpudWxsfSksZD1rLmVhZ2VyUmVkdWNlcj09PWE\/ay5lYWdlclN0YXRlOmEoZCxrLmFjdGlvbik7ZWxzZXt2YXIgbj17bGFuZTpsLGFjdGlvbjprLmFjdGlvbixlYWdlclJlZHVjZXI6ay5lYWdlclJlZHVjZXIsZWFnZXJTdGF0ZTprLmVhZ2VyU3RhdGUsbmV4dDpudWxsfTtudWxsPT09aD8oZz1oPW4sZj1kKTpoPWgubmV4dD1uO3kubGFuZXN8PWw7TGF8PWx9az1rLm5leHR9d2hpbGUobnVsbCE9PWsmJmshPT1lKTtudWxsPT09aD9mPWQ6aC5uZXh0PWc7WChkLGIubWVtb2l6ZWRTdGF0ZSl8fChmYT0hMCk7Yi5tZW1vaXplZFN0YXRlPWQ7Yi5iYXNlU3RhdGU9ZjtiLmJhc2VRdWV1ZT1oO2MubGFzdFJlbmRlcmVkU3RhdGU9DQpkfXJldHVybltiLm1lbW9pemVkU3RhdGUsYy5kaXNwYXRjaF19ZnVuY3Rpb24gbWMoYSxiLGMpe2I9YmIoKTtjPWIucXVldWU7aWYobnVsbD09PWMpdGhyb3cgRXJyb3IobSgzMTEpKTtjLmxhc3RSZW5kZXJlZFJlZHVjZXI9YTt2YXIgZD1jLmRpc3BhdGNoLGU9Yy5wZW5kaW5nLGY9Yi5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1lKXtjLnBlbmRpbmc9bnVsbDt2YXIgZz1lPWUubmV4dDtkbyBmPWEoZixnLmFjdGlvbiksZz1nLm5leHQ7d2hpbGUoZyE9PWUpO1goZixiLm1lbW9pemVkU3RhdGUpfHwoZmE9ITApO2IubWVtb2l6ZWRTdGF0ZT1mO251bGw9PT1iLmJhc2VRdWV1ZSYmKGIuYmFzZVN0YXRlPWYpO2MubGFzdFJlbmRlcmVkU3RhdGU9Zn1yZXR1cm5bZixkXX1mdW5jdGlvbiBtaChhLGIsYyl7dmFyIGQ9Yi5fZ2V0VmVyc2lvbjtkPWQoYi5fc291cmNlKTt2YXIgZT1iLl93b3JrSW5Qcm9ncmVzc1ZlcnNpb25QcmltYXJ5O2lmKG51bGwhPT1lKWE9ZT09PWQ7ZWxzZSBpZihhPWEubXV0YWJsZVJlYWRMYW5lcywNCmE9KGljJmEpPT09YSliLl93b3JrSW5Qcm9ncmVzc1ZlcnNpb25QcmltYXJ5PWQsQmIucHVzaChiKTtpZihhKXJldHVybiBjKGIuX3NvdXJjZSk7QmIucHVzaChiKTt0aHJvdyBFcnJvcihtKDM1MCkpO31mdW5jdGlvbiBuaChhLGIsYyxkKXt2YXIgZT1SO2lmKG51bGw9PT1lKXRocm93IEVycm9yKG0oMzQ5KSk7dmFyIGY9Yi5fZ2V0VmVyc2lvbixnPWYoYi5fc291cmNlKSxoPWpjLmN1cnJlbnQsaz1oLnVzZVN0YXRlKGZ1bmN0aW9uKCl7cmV0dXJuIG1oKGUsYixjKX0pLGw9a1sxXSxuPWtbMF07az1LO3ZhciB0PWEubWVtb2l6ZWRTdGF0ZSxyPXQucmVmcyx3PXIuZ2V0U25hcHNob3Qsej10LnNvdXJjZTt0PXQuc3Vic2NyaWJlO3ZhciBCPXk7YS5tZW1vaXplZFN0YXRlPXtyZWZzOnIsc291cmNlOmIsc3Vic2NyaWJlOmR9O2gudXNlRWZmZWN0KGZ1bmN0aW9uKCl7ci5nZXRTbmFwc2hvdD1jO3Iuc2V0U25hcHNob3Q9bDt2YXIgYT1mKGIuX3NvdXJjZSk7aWYoIVgoZyxhKSl7YT1jKGIuX3NvdXJjZSk7DQpYKG4sYSl8fChsKGEpLGE9T2EoQiksZS5tdXRhYmxlUmVhZExhbmVzfD1hJmUucGVuZGluZ0xhbmVzKTthPWUubXV0YWJsZVJlYWRMYW5lcztlLmVudGFuZ2xlZExhbmVzfD1hO2Zvcih2YXIgZD1lLmVudGFuZ2xlbWVudHMsaD1hOzA8aDspe3ZhciBrPTMxLUJhKGgpLG09MTw8aztkW2tdfD1hO2gmPX5tfX19LFtjLGIsZF0pO2gudXNlRWZmZWN0KGZ1bmN0aW9uKCl7cmV0dXJuIGQoYi5fc291cmNlLGZ1bmN0aW9uKCl7dmFyIGE9ci5nZXRTbmFwc2hvdCxjPXIuc2V0U25hcHNob3Q7dHJ5e2MoYShiLl9zb3VyY2UpKTt2YXIgZD1PYShCKTtlLm11dGFibGVSZWFkTGFuZXN8PWQmZS5wZW5kaW5nTGFuZXN9Y2F0Y2gocSl7YyhmdW5jdGlvbigpe3Rocm93IHE7fSl9fSl9LFtiLGRdKTtYKHcsYykmJlgoeixiKSYmWCh0LGQpfHwoYT17cGVuZGluZzpudWxsLGRpc3BhdGNoOm51bGwsbGFzdFJlbmRlcmVkUmVkdWNlcjptYSxsYXN0UmVuZGVyZWRTdGF0ZTpufSxhLmRpc3BhdGNoPWw9TGUuYmluZChudWxsLA0KeSxhKSxrLnF1ZXVlPWEsay5iYXNlUXVldWU9bnVsbCxuPW1oKGUsYixjKSxrLm1lbW9pemVkU3RhdGU9ay5iYXNlU3RhdGU9bik7cmV0dXJuIG59ZnVuY3Rpb24gb2goYSxiLGMpe3ZhciBkPWJiKCk7cmV0dXJuIG5oKGQsYSxiLGMpfWZ1bmN0aW9uIG5jKGEpe3ZhciBiPWFiKCk7ImZ1bmN0aW9uIj09PXR5cGVvZiBhJiYoYT1hKCkpO2IubWVtb2l6ZWRTdGF0ZT1iLmJhc2VTdGF0ZT1hO2E9Yi5xdWV1ZT17cGVuZGluZzpudWxsLGRpc3BhdGNoOm51bGwsbGFzdFJlbmRlcmVkUmVkdWNlcjptYSxsYXN0UmVuZGVyZWRTdGF0ZTphfTthPWEuZGlzcGF0Y2g9TGUuYmluZChudWxsLHksYSk7cmV0dXJuW2IubWVtb2l6ZWRTdGF0ZSxhXX1mdW5jdGlvbiBsZChhLGIsYyxkKXthPXt0YWc6YSxjcmVhdGU6YixkZXN0cm95OmMsZGVwczpkLG5leHQ6bnVsbH07Yj15LnVwZGF0ZVF1ZXVlO251bGw9PT1iPyhiPXtsYXN0RWZmZWN0Om51bGx9LHkudXBkYXRlUXVldWU9YixiLmxhc3RFZmZlY3Q9DQphLm5leHQ9YSk6KGM9Yi5sYXN0RWZmZWN0LG51bGw9PT1jP2IubGFzdEVmZmVjdD1hLm5leHQ9YTooZD1jLm5leHQsYy5uZXh0PWEsYS5uZXh0PWQsYi5sYXN0RWZmZWN0PWEpKTtyZXR1cm4gYX1mdW5jdGlvbiBwaChhKXt2YXIgYj1hYigpO2E9e2N1cnJlbnQ6YX07cmV0dXJuIGIubWVtb2l6ZWRTdGF0ZT1hfWZ1bmN0aW9uIG1kKGEpe3JldHVybiBiYigpLm1lbW9pemVkU3RhdGV9ZnVuY3Rpb24gTWUoYSxiLGMsZCl7dmFyIGU9YWIoKTt5LmZsYWdzfD1hO2UubWVtb2l6ZWRTdGF0ZT1sZCgxfGIsYyx2b2lkIDAsdm9pZCAwPT09ZD9udWxsOmQpfWZ1bmN0aW9uIE5lKGEsYixjLGQpe3ZhciBlPWJiKCk7ZD12b2lkIDA9PT1kP251bGw6ZDt2YXIgZj12b2lkIDA7aWYobnVsbCE9PU4pe3ZhciBnPU4ubWVtb2l6ZWRTdGF0ZTtmPWcuZGVzdHJveTtpZihudWxsIT09ZCYmSmUoZCxnLmRlcHMpKXtsZChiLGMsZixkKTtyZXR1cm59fXkuZmxhZ3N8PWE7ZS5tZW1vaXplZFN0YXRlPWxkKDF8DQpiLGMsZixkKX1mdW5jdGlvbiBxaChhLGIpe3JldHVybiBNZSg1MTYsNCxhLGIpfWZ1bmN0aW9uIG5kKGEsYil7cmV0dXJuIE5lKDUxNiw0LGEsYil9ZnVuY3Rpb24gcmgoYSxiKXtyZXR1cm4gTmUoNCwyLGEsYil9ZnVuY3Rpb24gc2goYSxiKXtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGIpcmV0dXJuIGE9YSgpLGIoYSksZnVuY3Rpb24oKXtiKG51bGwpfTtpZihudWxsIT09YiYmdm9pZCAwIT09YilyZXR1cm4gYT1hKCksYi5jdXJyZW50PWEsZnVuY3Rpb24oKXtiLmN1cnJlbnQ9bnVsbH19ZnVuY3Rpb24gdGgoYSxiLGMpe2M9bnVsbCE9PWMmJnZvaWQgMCE9PWM\/Yy5jb25jYXQoW2FdKTpudWxsO3JldHVybiBOZSg0LDIsc2guYmluZChudWxsLGIsYSksYyl9ZnVuY3Rpb24gT2UoYSxiKXt9ZnVuY3Rpb24gdWgoYSxiKXt2YXIgYz1iYigpO2I9dm9pZCAwPT09Yj9udWxsOmI7dmFyIGQ9Yy5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1kJiZudWxsIT09YiYmSmUoYixkWzFdKSlyZXR1cm4gZFswXTsNCmMubWVtb2l6ZWRTdGF0ZT1bYSxiXTtyZXR1cm4gYX1mdW5jdGlvbiB2aChhLGIpe3ZhciBjPWJiKCk7Yj12b2lkIDA9PT1iP251bGw6Yjt2YXIgZD1jLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWQmJm51bGwhPT1iJiZKZShiLGRbMV0pKXJldHVybiBkWzBdO2E9YSgpO2MubWVtb2l6ZWRTdGF0ZT1bYSxiXTtyZXR1cm4gYX1mdW5jdGlvbiBzaihhLGIpe3ZhciBjPXdiKCk7WmEoOTg+Yz85ODpjLGZ1bmN0aW9uKCl7YSghMCl9KTtaYSg5NzxjPzk3OmMsZnVuY3Rpb24oKXt2YXIgYz1hYS50cmFuc2l0aW9uO2FhLnRyYW5zaXRpb249MTt0cnl7YSghMSksYigpfWZpbmFsbHl7YWEudHJhbnNpdGlvbj1jfX0pfWZ1bmN0aW9uIExlKGEsYixjKXt2YXIgZD1XKCksZT1PYShhKSxmPXtsYW5lOmUsYWN0aW9uOmMsZWFnZXJSZWR1Y2VyOm51bGwsZWFnZXJTdGF0ZTpudWxsLG5leHQ6bnVsbH0sZz1iLnBlbmRpbmc7bnVsbD09PWc\/Zi5uZXh0PWY6KGYubmV4dD1nLm5leHQsZy5uZXh0PWYpOw0KYi5wZW5kaW5nPWY7Zz1hLmFsdGVybmF0ZTtpZihhPT09eXx8bnVsbCE9PWcmJmc9PT15KWtjPWtkPSEwO2Vsc2V7aWYoMD09PWEubGFuZXMmJihudWxsPT09Z3x8MD09PWcubGFuZXMpJiYoZz1iLmxhc3RSZW5kZXJlZFJlZHVjZXIsbnVsbCE9PWcpKXRyeXt2YXIgaD1iLmxhc3RSZW5kZXJlZFN0YXRlLGs9ZyhoLGMpO2YuZWFnZXJSZWR1Y2VyPWc7Zi5lYWdlclN0YXRlPWs7aWYoWChrLGgpKXJldHVybn1jYXRjaCh2KXt9ZmluYWxseXt9UGEoYSxlLGQpfX1mdW5jdGlvbiBVKGEsYixjLGQpe2IuY2hpbGQ9bnVsbD09PWE\/d2goYixudWxsLGMsZCk6b2QoYixhLmNoaWxkLGMsZCl9ZnVuY3Rpb24geGgoYSxiLGMsZCxlKXtjPWMucmVuZGVyO3ZhciBmPWIucmVmO3liKGIsZSk7ZD1LZShhLGIsYyxkLGYsZSk7aWYobnVsbCE9PWEmJiFmYSlyZXR1cm4gYi51cGRhdGVRdWV1ZT1hLnVwZGF0ZVF1ZXVlLGIuZmxhZ3MmPS01MTcsYS5sYW5lcyY9fmUsc2EoYSxiLGUpO2IuZmxhZ3N8PTE7DQpVKGEsYixkLGUpO3JldHVybiBiLmNoaWxkfWZ1bmN0aW9uIHloKGEsYixjLGQsZSxmKXtpZihudWxsPT09YSl7dmFyIGc9Yy50eXBlO2lmKCJmdW5jdGlvbiI9PT10eXBlb2YgZyYmIVBlKGcpJiZ2b2lkIDA9PT1nLmRlZmF1bHRQcm9wcyYmbnVsbD09PWMuY29tcGFyZSYmdm9pZCAwPT09Yy5kZWZhdWx0UHJvcHMpcmV0dXJuIGIudGFnPTE1LGIudHlwZT1nLHpoKGEsYixnLGQsZSxmKTthPWZkKGMudHlwZSxudWxsLGQsYixiLm1vZGUsZik7YS5yZWY9Yi5yZWY7YS5yZXR1cm49YjtyZXR1cm4gYi5jaGlsZD1hfWc9YS5jaGlsZDtpZigwPT09KGUmZikmJihlPWcubWVtb2l6ZWRQcm9wcyxjPWMuY29tcGFyZSxjPW51bGwhPT1jP2M6WmIsYyhlLGQpJiZhLnJlZj09PWIucmVmKSlyZXR1cm4gc2EoYSxiLGYpO2IuZmxhZ3N8PTE7YT1NYShnLGQpO2EucmVmPWIucmVmO2EucmV0dXJuPWI7cmV0dXJuIGIuY2hpbGQ9YX1mdW5jdGlvbiB6aChhLGIsYyxkLGUsZil7aWYobnVsbCE9PWEmJlpiKGEubWVtb2l6ZWRQcm9wcywNCmQpJiZhLnJlZj09PWIucmVmKWlmKGZhPSExLDAhPT0oZiZlKSkwIT09KGEuZmxhZ3MmMTYzODQpJiYoZmE9ITApO2Vsc2UgcmV0dXJuIGIubGFuZXM9YS5sYW5lcyxzYShhLGIsZik7cmV0dXJuIFFlKGEsYixjLGQsZil9ZnVuY3Rpb24gUmUoYSxiLGMpe3ZhciBkPWIucGVuZGluZ1Byb3BzLGU9ZC5jaGlsZHJlbixmPW51bGwhPT1hP2EubWVtb2l6ZWRTdGF0ZTpudWxsO2lmKCJoaWRkZW4iPT09ZC5tb2RlfHwidW5zdGFibGUtZGVmZXItd2l0aG91dC1oaWRpbmciPT09ZC5tb2RlKWlmKDA9PT0oYi5tb2RlJjQpKWIubWVtb2l6ZWRTdGF0ZT17YmFzZUxhbmVzOjB9LHBkKGIsYyk7ZWxzZSBpZigwIT09KGMmMTA3Mzc0MTgyNCkpYi5tZW1vaXplZFN0YXRlPXtiYXNlTGFuZXM6MH0scGQoYixudWxsIT09Zj9mLmJhc2VMYW5lczpjKTtlbHNlIHJldHVybiBhPW51bGwhPT1mP2YuYmFzZUxhbmVzfGM6YyxiLmxhbmVzPWIuY2hpbGRMYW5lcz0xMDczNzQxODI0LGIubWVtb2l6ZWRTdGF0ZT0NCntiYXNlTGFuZXM6YX0scGQoYixhKSxudWxsO2Vsc2UgbnVsbCE9PWY\/KGQ9Zi5iYXNlTGFuZXN8YyxiLm1lbW9pemVkU3RhdGU9bnVsbCk6ZD1jLHBkKGIsZCk7VShhLGIsZSxjKTtyZXR1cm4gYi5jaGlsZH1mdW5jdGlvbiBBaChhLGIpe3ZhciBjPWIucmVmO2lmKG51bGw9PT1hJiZudWxsIT09Y3x8bnVsbCE9PWEmJmEucmVmIT09YyliLmZsYWdzfD0xMjh9ZnVuY3Rpb24gUWUoYSxiLGMsZCxlKXt2YXIgZj1TKGMpP1lhOkQuY3VycmVudDtmPXZiKGIsZik7eWIoYixlKTtjPUtlKGEsYixjLGQsZixlKTtpZihudWxsIT09YSYmIWZhKXJldHVybiBiLnVwZGF0ZVF1ZXVlPWEudXBkYXRlUXVldWUsYi5mbGFncyY9LTUxNyxhLmxhbmVzJj1+ZSxzYShhLGIsZSk7Yi5mbGFnc3w9MTtVKGEsYixjLGUpO3JldHVybiBiLmNoaWxkfWZ1bmN0aW9uIEJoKGEsYixjLGQsZSl7aWYoUyhjKSl7dmFyIGY9ITA7WGMoYil9ZWxzZSBmPSExO3liKGIsZSk7aWYobnVsbD09PWIuc3RhdGVOb2RlKW51bGwhPT0NCmEmJihhLmFsdGVybmF0ZT1udWxsLGIuYWx0ZXJuYXRlPW51bGwsYi5mbGFnc3w9MiksZWgoYixjLGQpLEJlKGIsYyxkLGUpLGQ9ITA7ZWxzZSBpZihudWxsPT09YSl7dmFyIGc9Yi5zdGF0ZU5vZGUsaD1iLm1lbW9pemVkUHJvcHM7Zy5wcm9wcz1oO3ZhciBrPWcuY29udGV4dCxsPWMuY29udGV4dFR5cGU7Im9iamVjdCI9PT10eXBlb2YgbCYmbnVsbCE9PWw\/bD1ZKGwpOihsPVMoYyk\/WWE6RC5jdXJyZW50LGw9dmIoYixsKSk7dmFyIG09Yy5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMsbj0iZnVuY3Rpb24iPT09dHlwZW9mIG18fCJmdW5jdGlvbiI9PT10eXBlb2YgZy5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZTtufHwiZnVuY3Rpb24iIT09dHlwZW9mIGcuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJiJmdW5jdGlvbiIhPT10eXBlb2YgZy5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzfHwoaCE9PWR8fGshPT1sKSYmZmgoYixnLGQsbCk7S2E9ITE7dmFyIHI9Yi5tZW1vaXplZFN0YXRlOw0KZy5zdGF0ZT1yO2NjKGIsZCxnLGUpO2s9Yi5tZW1vaXplZFN0YXRlO2ghPT1kfHxyIT09a3x8Si5jdXJyZW50fHxLYT8oImZ1bmN0aW9uIj09PXR5cGVvZiBtJiYoY2QoYixjLG0sZCksaz1iLm1lbW9pemVkU3RhdGUpLChoPUthfHxkaChiLGMsaCxkLHIsayxsKSk\/KG58fCJmdW5jdGlvbiIhPT10eXBlb2YgZy5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50JiYiZnVuY3Rpb24iIT09dHlwZW9mIGcuY29tcG9uZW50V2lsbE1vdW50fHwoImZ1bmN0aW9uIj09PXR5cGVvZiBnLmNvbXBvbmVudFdpbGxNb3VudCYmZy5jb21wb25lbnRXaWxsTW91bnQoKSwiZnVuY3Rpb24iPT09dHlwZW9mIGcuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmZy5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50KCkpLCJmdW5jdGlvbiI9PT10eXBlb2YgZy5jb21wb25lbnREaWRNb3VudCYmKGIuZmxhZ3N8PTQpKTooImZ1bmN0aW9uIj09PXR5cGVvZiBnLmNvbXBvbmVudERpZE1vdW50JiYoYi5mbGFnc3w9NCksDQpiLm1lbW9pemVkUHJvcHM9ZCxiLm1lbW9pemVkU3RhdGU9ayksZy5wcm9wcz1kLGcuc3RhdGU9ayxnLmNvbnRleHQ9bCxkPWgpOigiZnVuY3Rpb24iPT09dHlwZW9mIGcuY29tcG9uZW50RGlkTW91bnQmJihiLmZsYWdzfD00KSxkPSExKX1lbHNle2c9Yi5zdGF0ZU5vZGU7YWgoYSxiKTtoPWIubWVtb2l6ZWRQcm9wcztsPWIudHlwZT09PWIuZWxlbWVudFR5cGU\/aDplYShiLnR5cGUsaCk7Zy5wcm9wcz1sO249Yi5wZW5kaW5nUHJvcHM7cj1nLmNvbnRleHQ7az1jLmNvbnRleHRUeXBlOyJvYmplY3QiPT09dHlwZW9mIGsmJm51bGwhPT1rP2s9WShrKTooaz1TKGMpP1lhOkQuY3VycmVudCxrPXZiKGIsaykpO3ZhciB0PWMuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzOyhtPSJmdW5jdGlvbiI9PT10eXBlb2YgdHx8ImZ1bmN0aW9uIj09PXR5cGVvZiBnLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlKXx8ImZ1bmN0aW9uIiE9PXR5cGVvZiBnLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiYNCiJmdW5jdGlvbiIhPT10eXBlb2YgZy5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzfHwoaCE9PW58fHIhPT1rKSYmZmgoYixnLGQsayk7S2E9ITE7cj1iLm1lbW9pemVkU3RhdGU7Zy5zdGF0ZT1yO2NjKGIsZCxnLGUpO3ZhciB3PWIubWVtb2l6ZWRTdGF0ZTtoIT09bnx8ciE9PXd8fEouY3VycmVudHx8S2E\/KCJmdW5jdGlvbiI9PT10eXBlb2YgdCYmKGNkKGIsYyx0LGQpLHc9Yi5tZW1vaXplZFN0YXRlKSwobD1LYXx8ZGgoYixjLGwsZCxyLHcsaykpPyhtfHwiZnVuY3Rpb24iIT09dHlwZW9mIGcuVU5TQUZFX2NvbXBvbmVudFdpbGxVcGRhdGUmJiJmdW5jdGlvbiIhPT10eXBlb2YgZy5jb21wb25lbnRXaWxsVXBkYXRlfHwoImZ1bmN0aW9uIj09PXR5cGVvZiBnLmNvbXBvbmVudFdpbGxVcGRhdGUmJmcuY29tcG9uZW50V2lsbFVwZGF0ZShkLHcsayksImZ1bmN0aW9uIj09PXR5cGVvZiBnLlVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlJiZnLlVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlKGQsDQp3LGspKSwiZnVuY3Rpb24iPT09dHlwZW9mIGcuY29tcG9uZW50RGlkVXBkYXRlJiYoYi5mbGFnc3w9NCksImZ1bmN0aW9uIj09PXR5cGVvZiBnLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlJiYoYi5mbGFnc3w9MjU2KSk6KCJmdW5jdGlvbiIhPT10eXBlb2YgZy5jb21wb25lbnREaWRVcGRhdGV8fGg9PT1hLm1lbW9pemVkUHJvcHMmJnI9PT1hLm1lbW9pemVkU3RhdGV8fChiLmZsYWdzfD00KSwiZnVuY3Rpb24iIT09dHlwZW9mIGcuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGV8fGg9PT1hLm1lbW9pemVkUHJvcHMmJnI9PT1hLm1lbW9pemVkU3RhdGV8fChiLmZsYWdzfD0yNTYpLGIubWVtb2l6ZWRQcm9wcz1kLGIubWVtb2l6ZWRTdGF0ZT13KSxnLnByb3BzPWQsZy5zdGF0ZT13LGcuY29udGV4dD1rLGQ9bCk6KCJmdW5jdGlvbiIhPT10eXBlb2YgZy5jb21wb25lbnREaWRVcGRhdGV8fGg9PT1hLm1lbW9pemVkUHJvcHMmJnI9PT1hLm1lbW9pemVkU3RhdGV8fChiLmZsYWdzfD00KSwiZnVuY3Rpb24iIT09DQp0eXBlb2YgZy5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZXx8aD09PWEubWVtb2l6ZWRQcm9wcyYmcj09PWEubWVtb2l6ZWRTdGF0ZXx8KGIuZmxhZ3N8PTI1NiksZD0hMSl9cmV0dXJuIFNlKGEsYixjLGQsZixlKX1mdW5jdGlvbiBTZShhLGIsYyxkLGUsZil7QWgoYSxiKTt2YXIgZz0wIT09KGIuZmxhZ3MmNjQpO2lmKCFkJiYhZylyZXR1cm4gZSYmVGcoYixjLCExKSxzYShhLGIsZik7ZD1iLnN0YXRlTm9kZTt0ai5jdXJyZW50PWI7dmFyIGg9ZyYmImZ1bmN0aW9uIiE9PXR5cGVvZiBjLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcj9udWxsOmQucmVuZGVyKCk7Yi5mbGFnc3w9MTtudWxsIT09YSYmZz8oYi5jaGlsZD1vZChiLGEuY2hpbGQsbnVsbCxmKSxiLmNoaWxkPW9kKGIsbnVsbCxoLGYpKTpVKGEsYixoLGYpO2IubWVtb2l6ZWRTdGF0ZT1kLnN0YXRlO2UmJlRnKGIsYywhMCk7cmV0dXJuIGIuY2hpbGR9ZnVuY3Rpb24gQ2goYSl7dmFyIGI9YS5zdGF0ZU5vZGU7Yi5wZW5kaW5nQ29udGV4dD8NClJnKGEsYi5wZW5kaW5nQ29udGV4dCxiLnBlbmRpbmdDb250ZXh0IT09Yi5jb250ZXh0KTpiLmNvbnRleHQmJlJnKGEsYi5jb250ZXh0LCExKTtFZShhLGIuY29udGFpbmVySW5mbyl9ZnVuY3Rpb24gRGgoYSxiLGMpe3ZhciBkPWIucGVuZGluZ1Byb3BzLGU9RS5jdXJyZW50LGY9ITEsZzsoZz0wIT09KGIuZmxhZ3MmNjQpKXx8KGc9bnVsbCE9PWEmJm51bGw9PT1hLm1lbW9pemVkU3RhdGU\/ITE6MCE9PShlJjIpKTtnPyhmPSEwLGIuZmxhZ3MmPS02NSk6bnVsbCE9PWEmJm51bGw9PT1hLm1lbW9pemVkU3RhdGV8fHZvaWQgMD09PWQuZmFsbGJhY2t8fCEwPT09ZC51bnN0YWJsZV9hdm9pZFRoaXNGYWxsYmFja3x8KGV8PTEpO0EoRSxlJjEpO2lmKG51bGw9PT1hKXt2b2lkIDAhPT1kLmZhbGxiYWNrJiZHZShiKTthPWQuY2hpbGRyZW47ZT1kLmZhbGxiYWNrO2lmKGYpcmV0dXJuIGE9RWgoYixhLGUsYyksYi5jaGlsZC5tZW1vaXplZFN0YXRlPXtiYXNlTGFuZXM6Y30sYi5tZW1vaXplZFN0YXRlPQ0KcWQsYTtpZigibnVtYmVyIj09PXR5cGVvZiBkLnVuc3RhYmxlX2V4cGVjdGVkTG9hZFRpbWUpcmV0dXJuIGE9RWgoYixhLGUsYyksYi5jaGlsZC5tZW1vaXplZFN0YXRlPXtiYXNlTGFuZXM6Y30sYi5tZW1vaXplZFN0YXRlPXFkLGIubGFuZXM9MzM1NTQ0MzIsYTtjPVRlKHttb2RlOiJ2aXNpYmxlIixjaGlsZHJlbjphfSxiLm1vZGUsYyxudWxsKTtjLnJldHVybj1iO3JldHVybiBiLmNoaWxkPWN9aWYobnVsbCE9PWEubWVtb2l6ZWRTdGF0ZSl7aWYoZilyZXR1cm4gZD1GaChhLGIsZC5jaGlsZHJlbixkLmZhbGxiYWNrLGMpLGY9Yi5jaGlsZCxlPWEuY2hpbGQubWVtb2l6ZWRTdGF0ZSxmLm1lbW9pemVkU3RhdGU9bnVsbD09PWU\/e2Jhc2VMYW5lczpjfTp7YmFzZUxhbmVzOmUuYmFzZUxhbmVzfGN9LGYuY2hpbGRMYW5lcz1hLmNoaWxkTGFuZXMmfmMsYi5tZW1vaXplZFN0YXRlPXFkLGQ7Yz1HaChhLGIsZC5jaGlsZHJlbixjKTtiLm1lbW9pemVkU3RhdGU9bnVsbDtyZXR1cm4gY31pZihmKXJldHVybiBkPQ0KRmgoYSxiLGQuY2hpbGRyZW4sZC5mYWxsYmFjayxjKSxmPWIuY2hpbGQsZT1hLmNoaWxkLm1lbW9pemVkU3RhdGUsZi5tZW1vaXplZFN0YXRlPW51bGw9PT1lP3tiYXNlTGFuZXM6Y306e2Jhc2VMYW5lczplLmJhc2VMYW5lc3xjfSxmLmNoaWxkTGFuZXM9YS5jaGlsZExhbmVzJn5jLGIubWVtb2l6ZWRTdGF0ZT1xZCxkO2M9R2goYSxiLGQuY2hpbGRyZW4sYyk7Yi5tZW1vaXplZFN0YXRlPW51bGw7cmV0dXJuIGN9ZnVuY3Rpb24gRWgoYSxiLGMsZCl7dmFyIGU9YS5tb2RlLGY9YS5jaGlsZDtiPXttb2RlOiJoaWRkZW4iLGNoaWxkcmVuOmJ9OzA9PT0oZSYyKSYmbnVsbCE9PWY\/KGYuY2hpbGRMYW5lcz0wLGYucGVuZGluZ1Byb3BzPWIpOmY9VGUoYixlLDAsbnVsbCk7Yz16YihjLGUsZCxudWxsKTtmLnJldHVybj1hO2MucmV0dXJuPWE7Zi5zaWJsaW5nPWM7YS5jaGlsZD1mO3JldHVybiBjfWZ1bmN0aW9uIEdoKGEsYixjLGQpe3ZhciBlPWEuY2hpbGQ7YT1lLnNpYmxpbmc7Yz1NYShlLA0Ke21vZGU6InZpc2libGUiLGNoaWxkcmVuOmN9KTswPT09KGIubW9kZSYyKSYmKGMubGFuZXM9ZCk7Yy5yZXR1cm49YjtjLnNpYmxpbmc9bnVsbDtudWxsIT09YSYmKGEubmV4dEVmZmVjdD1udWxsLGEuZmxhZ3M9OCxiLmZpcnN0RWZmZWN0PWIubGFzdEVmZmVjdD1hKTtyZXR1cm4gYi5jaGlsZD1jfWZ1bmN0aW9uIEZoKGEsYixjLGQsZSl7dmFyIGY9Yi5tb2RlLGc9YS5jaGlsZDthPWcuc2libGluZzt2YXIgaD17bW9kZToiaGlkZGVuIixjaGlsZHJlbjpjfTswPT09KGYmMikmJmIuY2hpbGQhPT1nPyhjPWIuY2hpbGQsYy5jaGlsZExhbmVzPTAsYy5wZW5kaW5nUHJvcHM9aCxnPWMubGFzdEVmZmVjdCxudWxsIT09Zz8oYi5maXJzdEVmZmVjdD1jLmZpcnN0RWZmZWN0LGIubGFzdEVmZmVjdD1nLGcubmV4dEVmZmVjdD1udWxsKTpiLmZpcnN0RWZmZWN0PWIubGFzdEVmZmVjdD1udWxsKTpjPU1hKGcsaCk7bnVsbCE9PWE\/ZD1NYShhLGQpOihkPXpiKGQsZixlLG51bGwpLGQuZmxhZ3N8PQ0KMik7ZC5yZXR1cm49YjtjLnJldHVybj1iO2Muc2libGluZz1kO2IuY2hpbGQ9YztyZXR1cm4gZH1mdW5jdGlvbiBIaChhLGIpe2EubGFuZXN8PWI7dmFyIGM9YS5hbHRlcm5hdGU7bnVsbCE9PWMmJihjLmxhbmVzfD1iKTskZyhhLnJldHVybixiKX1mdW5jdGlvbiBVZShhLGIsYyxkLGUsZil7dmFyIGc9YS5tZW1vaXplZFN0YXRlO251bGw9PT1nP2EubWVtb2l6ZWRTdGF0ZT17aXNCYWNrd2FyZHM6YixyZW5kZXJpbmc6bnVsbCxyZW5kZXJpbmdTdGFydFRpbWU6MCxsYXN0OmQsdGFpbDpjLHRhaWxNb2RlOmUsbGFzdEVmZmVjdDpmfTooZy5pc0JhY2t3YXJkcz1iLGcucmVuZGVyaW5nPW51bGwsZy5yZW5kZXJpbmdTdGFydFRpbWU9MCxnLmxhc3Q9ZCxnLnRhaWw9YyxnLnRhaWxNb2RlPWUsZy5sYXN0RWZmZWN0PWYpfWZ1bmN0aW9uIEloKGEsYixjKXt2YXIgZD1iLnBlbmRpbmdQcm9wcyxlPWQucmV2ZWFsT3JkZXIsZj1kLnRhaWw7VShhLGIsZC5jaGlsZHJlbixjKTtkPUUuY3VycmVudDsNCmlmKDAhPT0oZCYyKSlkPWQmMXwyLGIuZmxhZ3N8PTY0O2Vsc2V7aWYobnVsbCE9PWEmJjAhPT0oYS5mbGFncyY2NCkpYTpmb3IoYT1iLmNoaWxkO251bGwhPT1hOyl7aWYoMTM9PT1hLnRhZyludWxsIT09YS5tZW1vaXplZFN0YXRlJiZIaChhLGMpO2Vsc2UgaWYoMTk9PT1hLnRhZylIaChhLGMpO2Vsc2UgaWYobnVsbCE9PWEuY2hpbGQpe2EuY2hpbGQucmV0dXJuPWE7YT1hLmNoaWxkO2NvbnRpbnVlfWlmKGE9PT1iKWJyZWFrIGE7Zm9yKDtudWxsPT09YS5zaWJsaW5nOyl7aWYobnVsbD09PWEucmV0dXJufHxhLnJldHVybj09PWIpYnJlYWsgYTthPWEucmV0dXJufWEuc2libGluZy5yZXR1cm49YS5yZXR1cm47YT1hLnNpYmxpbmd9ZCY9MX1BKEUsZCk7aWYoMD09PShiLm1vZGUmMikpYi5tZW1vaXplZFN0YXRlPW51bGw7ZWxzZSBzd2l0Y2goZSl7Y2FzZSAiZm9yd2FyZHMiOmM9Yi5jaGlsZDtmb3IoZT1udWxsO251bGwhPT1jOylhPWMuYWx0ZXJuYXRlLG51bGwhPT1hJiZudWxsPT09DQpoZChhKSYmKGU9YyksYz1jLnNpYmxpbmc7Yz1lO251bGw9PT1jPyhlPWIuY2hpbGQsYi5jaGlsZD1udWxsKTooZT1jLnNpYmxpbmcsYy5zaWJsaW5nPW51bGwpO1VlKGIsITEsZSxjLGYsYi5sYXN0RWZmZWN0KTticmVhaztjYXNlICJiYWNrd2FyZHMiOmM9bnVsbDtlPWIuY2hpbGQ7Zm9yKGIuY2hpbGQ9bnVsbDtudWxsIT09ZTspe2E9ZS5hbHRlcm5hdGU7aWYobnVsbCE9PWEmJm51bGw9PT1oZChhKSl7Yi5jaGlsZD1lO2JyZWFrfWE9ZS5zaWJsaW5nO2Uuc2libGluZz1jO2M9ZTtlPWF9VWUoYiwhMCxjLG51bGwsZixiLmxhc3RFZmZlY3QpO2JyZWFrO2Nhc2UgInRvZ2V0aGVyIjpVZShiLCExLG51bGwsbnVsbCx2b2lkIDAsYi5sYXN0RWZmZWN0KTticmVhaztkZWZhdWx0OmIubWVtb2l6ZWRTdGF0ZT1udWxsfXJldHVybiBiLmNoaWxkfWZ1bmN0aW9uIHNhKGEsYixjKXtudWxsIT09YSYmKGIuZGVwZW5kZW5jaWVzPWEuZGVwZW5kZW5jaWVzKTtMYXw9Yi5sYW5lcztpZigwIT09KGMmDQpiLmNoaWxkTGFuZXMpKXtpZihudWxsIT09YSYmYi5jaGlsZCE9PWEuY2hpbGQpdGhyb3cgRXJyb3IobSgxNTMpKTtpZihudWxsIT09Yi5jaGlsZCl7YT1iLmNoaWxkO2M9TWEoYSxhLnBlbmRpbmdQcm9wcyk7Yi5jaGlsZD1jO2ZvcihjLnJldHVybj1iO251bGwhPT1hLnNpYmxpbmc7KWE9YS5zaWJsaW5nLGM9Yy5zaWJsaW5nPU1hKGEsYS5wZW5kaW5nUHJvcHMpLGMucmV0dXJuPWI7Yy5zaWJsaW5nPW51bGx9cmV0dXJuIGIuY2hpbGR9cmV0dXJuIG51bGx9ZnVuY3Rpb24gb2MoYSxiKXtpZighbGEpc3dpdGNoKGEudGFpbE1vZGUpe2Nhc2UgImhpZGRlbiI6Yj1hLnRhaWw7Zm9yKHZhciBjPW51bGw7bnVsbCE9PWI7KW51bGwhPT1iLmFsdGVybmF0ZSYmKGM9YiksYj1iLnNpYmxpbmc7bnVsbD09PWM\/YS50YWlsPW51bGw6Yy5zaWJsaW5nPW51bGw7YnJlYWs7Y2FzZSAiY29sbGFwc2VkIjpjPWEudGFpbDtmb3IodmFyIGQ9bnVsbDtudWxsIT09YzspbnVsbCE9PWMuYWx0ZXJuYXRlJiYNCihkPWMpLGM9Yy5zaWJsaW5nO251bGw9PT1kP2J8fG51bGw9PT1hLnRhaWw\/YS50YWlsPW51bGw6YS50YWlsLnNpYmxpbmc9bnVsbDpkLnNpYmxpbmc9bnVsbH19ZnVuY3Rpb24gdWooYSxiLGMpe3ZhciBkPWIucGVuZGluZ1Byb3BzO3N3aXRjaChiLnRhZyl7Y2FzZSAyOmNhc2UgMTY6Y2FzZSAxNTpjYXNlIDA6Y2FzZSAxMTpjYXNlIDc6Y2FzZSA4OmNhc2UgMTI6Y2FzZSA5OmNhc2UgMTQ6cmV0dXJuIG51bGw7Y2FzZSAxOnJldHVybiBTKGIudHlwZSkmJih0KEopLHQoRCkpLG51bGw7Y2FzZSAzOkFiKCk7dChKKTt0KEQpO0llKCk7ZD1iLnN0YXRlTm9kZTtkLnBlbmRpbmdDb250ZXh0JiYoZC5jb250ZXh0PWQucGVuZGluZ0NvbnRleHQsZC5wZW5kaW5nQ29udGV4dD1udWxsKTtpZihudWxsPT09YXx8bnVsbD09PWEuY2hpbGQpaWQoYik\/Yi5mbGFnc3w9NDpkLmh5ZHJhdGV8fChiLmZsYWdzfD0yNTYpO0poKGIpO3JldHVybiBudWxsO2Nhc2UgNTpGZShiKTt2YXIgZT0kYShnYy5jdXJyZW50KTsNCmM9Yi50eXBlO2lmKG51bGwhPT1hJiZudWxsIT1iLnN0YXRlTm9kZSl2aihhLGIsYyxkLGUpLGEucmVmIT09Yi5yZWYmJihiLmZsYWdzfD0xMjgpO2Vsc2V7aWYoIWQpe2lmKG51bGw9PT1iLnN0YXRlTm9kZSl0aHJvdyBFcnJvcihtKDE2NikpO3JldHVybiBudWxsfWE9JGEoa2EuY3VycmVudCk7aWYoaWQoYikpe2Q9Yi5zdGF0ZU5vZGU7Yz1iLnR5cGU7dmFyIGY9Yi5tZW1vaXplZFByb3BzO2RbRmFdPWI7ZFtXY109Zjtzd2l0Y2goYyl7Y2FzZSAiZGlhbG9nIjp6KCJjYW5jZWwiLGQpO3ooImNsb3NlIixkKTticmVhaztjYXNlICJpZnJhbWUiOmNhc2UgIm9iamVjdCI6Y2FzZSAiZW1iZWQiOnooImxvYWQiLGQpO2JyZWFrO2Nhc2UgInZpZGVvIjpjYXNlICJhdWRpbyI6Zm9yKGE9MDthPHBjLmxlbmd0aDthKyspeihwY1thXSxkKTticmVhaztjYXNlICJzb3VyY2UiOnooImVycm9yIixkKTticmVhaztjYXNlICJpbWciOmNhc2UgImltYWdlIjpjYXNlICJsaW5rIjp6KCJlcnJvciIsZCk7DQp6KCJsb2FkIixkKTticmVhaztjYXNlICJkZXRhaWxzIjp6KCJ0b2dnbGUiLGQpO2JyZWFrO2Nhc2UgImlucHV0IjpGZihkLGYpO3ooImludmFsaWQiLGQpO2JyZWFrO2Nhc2UgInNlbGVjdCI6ZC5fd3JhcHBlclN0YXRlPXt3YXNNdWx0aXBsZTohIWYubXVsdGlwbGV9O3ooImludmFsaWQiLGQpO2JyZWFrO2Nhc2UgInRleHRhcmVhIjpJZihkLGYpLHooImludmFsaWQiLGQpfVNkKGMsZik7YT1udWxsO2Zvcih2YXIgZyBpbiBmKWYuaGFzT3duUHJvcGVydHkoZykmJihlPWZbZ10sImNoaWxkcmVuIj09PWc\/InN0cmluZyI9PT10eXBlb2YgZT9kLnRleHRDb250ZW50IT09ZSYmKGE9WyJjaGlsZHJlbiIsZV0pOiJudW1iZXIiPT09dHlwZW9mIGUmJmQudGV4dENvbnRlbnQhPT0iIitlJiYoYT1bImNoaWxkcmVuIiwiIitlXSk6SWIuaGFzT3duUHJvcGVydHkoZykmJm51bGwhPWUmJiJvblNjcm9sbCI9PT1nJiZ6KCJzY3JvbGwiLGQpKTtzd2l0Y2goYyl7Y2FzZSAiaW5wdXQiOkZjKGQpO0hmKGQsDQpmLCEwKTticmVhaztjYXNlICJ0ZXh0YXJlYSI6RmMoZCk7S2YoZCk7YnJlYWs7Y2FzZSAic2VsZWN0IjpjYXNlICJvcHRpb24iOmJyZWFrO2RlZmF1bHQ6ImZ1bmN0aW9uIj09PXR5cGVvZiBmLm9uQ2xpY2smJihkLm9uY2xpY2s9VmMpfWQ9YTtiLnVwZGF0ZVF1ZXVlPWQ7bnVsbCE9PWQmJihiLmZsYWdzfD00KX1lbHNle2c9OT09PWUubm9kZVR5cGU\/ZTplLm93bmVyRG9jdW1lbnQ7Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPT09YSYmKGE9TGYoYykpOyJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj09PWE\/InNjcmlwdCI9PT1jPyhhPWcuY3JlYXRlRWxlbWVudCgiZGl2IiksYS5pbm5lckhUTUw9IjxzY3JpcHQ+XHgzYy9zY3JpcHQ+IixhPWEucmVtb3ZlQ2hpbGQoYS5maXJzdENoaWxkKSk6InN0cmluZyI9PT10eXBlb2YgZC5pcz9hPWcuY3JlYXRlRWxlbWVudChjLHtpczpkLmlzfSk6KGE9Zy5jcmVhdGVFbGVtZW50KGMpLCJzZWxlY3QiPT09YyYmKGc9YSxkLm11bHRpcGxlPw0KZy5tdWx0aXBsZT0hMDpkLnNpemUmJihnLnNpemU9ZC5zaXplKSkpOmE9Zy5jcmVhdGVFbGVtZW50TlMoYSxjKTthW0ZhXT1iO2FbV2NdPWQ7d2ooYSxiLCExLCExKTtiLnN0YXRlTm9kZT1hO2c9VGQoYyxkKTtzd2l0Y2goYyl7Y2FzZSAiZGlhbG9nIjp6KCJjYW5jZWwiLGEpO3ooImNsb3NlIixhKTtlPWQ7YnJlYWs7Y2FzZSAiaWZyYW1lIjpjYXNlICJvYmplY3QiOmNhc2UgImVtYmVkIjp6KCJsb2FkIixhKTtlPWQ7YnJlYWs7Y2FzZSAidmlkZW8iOmNhc2UgImF1ZGlvIjpmb3IoZT0wO2U8cGMubGVuZ3RoO2UrKyl6KHBjW2VdLGEpO2U9ZDticmVhaztjYXNlICJzb3VyY2UiOnooImVycm9yIixhKTtlPWQ7YnJlYWs7Y2FzZSAiaW1nIjpjYXNlICJpbWFnZSI6Y2FzZSAibGluayI6eigiZXJyb3IiLGEpO3ooImxvYWQiLGEpO2U9ZDticmVhaztjYXNlICJkZXRhaWxzIjp6KCJ0b2dnbGUiLGEpO2U9ZDticmVhaztjYXNlICJpbnB1dCI6RmYoYSxkKTtlPU1kKGEsZCk7eigiaW52YWxpZCIsDQphKTticmVhaztjYXNlICJvcHRpb24iOmU9UGQoYSxkKTticmVhaztjYXNlICJzZWxlY3QiOmEuX3dyYXBwZXJTdGF0ZT17d2FzTXVsdGlwbGU6ISFkLm11bHRpcGxlfTtlPUIoe30sZCx7dmFsdWU6dm9pZCAwfSk7eigiaW52YWxpZCIsYSk7YnJlYWs7Y2FzZSAidGV4dGFyZWEiOklmKGEsZCk7ZT1RZChhLGQpO3ooImludmFsaWQiLGEpO2JyZWFrO2RlZmF1bHQ6ZT1kfVNkKGMsZSk7dmFyIGg9ZTtmb3IoZiBpbiBoKWlmKGguaGFzT3duUHJvcGVydHkoZikpe3ZhciBrPWhbZl07InN0eWxlIj09PWY\/TmYoYSxrKToiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiPT09Zj8oaz1rP2suX19odG1sOnZvaWQgMCxudWxsIT1rJiZLaChhLGspKToiY2hpbGRyZW4iPT09Zj8ic3RyaW5nIj09PXR5cGVvZiBrPygidGV4dGFyZWEiIT09Y3x8IiIhPT1rKSYmcWMoYSxrKToibnVtYmVyIj09PXR5cGVvZiBrJiZxYyhhLCIiK2spOiJzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmciIT09ZiYmInN1cHByZXNzSHlkcmF0aW9uV2FybmluZyIhPT0NCmYmJiJhdXRvRm9jdXMiIT09ZiYmKEliLmhhc093blByb3BlcnR5KGYpP251bGwhPWsmJiJvblNjcm9sbCI9PT1mJiZ6KCJzY3JvbGwiLGEpOm51bGwhPWsmJkVkKGEsZixrLGcpKX1zd2l0Y2goYyl7Y2FzZSAiaW5wdXQiOkZjKGEpO0hmKGEsZCwhMSk7YnJlYWs7Y2FzZSAidGV4dGFyZWEiOkZjKGEpO0tmKGEpO2JyZWFrO2Nhc2UgIm9wdGlvbiI6bnVsbCE9ZC52YWx1ZSYmYS5zZXRBdHRyaWJ1dGUoInZhbHVlIiwiIit4YShkLnZhbHVlKSk7YnJlYWs7Y2FzZSAic2VsZWN0IjphLm11bHRpcGxlPSEhZC5tdWx0aXBsZTtmPWQudmFsdWU7bnVsbCE9Zj9pYihhLCEhZC5tdWx0aXBsZSxmLCExKTpudWxsIT1kLmRlZmF1bHRWYWx1ZSYmaWIoYSwhIWQubXVsdGlwbGUsZC5kZWZhdWx0VmFsdWUsITApO2JyZWFrO2RlZmF1bHQ6ImZ1bmN0aW9uIj09PXR5cGVvZiBlLm9uQ2xpY2smJihhLm9uY2xpY2s9VmMpfU9nKGMsZCkmJihiLmZsYWdzfD00KX1udWxsIT09Yi5yZWYmJihiLmZsYWdzfD0NCjEyOCl9cmV0dXJuIG51bGw7Y2FzZSA2OmlmKGEmJm51bGwhPWIuc3RhdGVOb2RlKXhqKGEsYixhLm1lbW9pemVkUHJvcHMsZCk7ZWxzZXtpZigic3RyaW5nIiE9PXR5cGVvZiBkJiZudWxsPT09Yi5zdGF0ZU5vZGUpdGhyb3cgRXJyb3IobSgxNjYpKTtjPSRhKGdjLmN1cnJlbnQpOyRhKGthLmN1cnJlbnQpO2lkKGIpPyhkPWIuc3RhdGVOb2RlLGM9Yi5tZW1vaXplZFByb3BzLGRbRmFdPWIsZC5ub2RlVmFsdWUhPT1jJiYoYi5mbGFnc3w9NCkpOihkPSg5PT09Yy5ub2RlVHlwZT9jOmMub3duZXJEb2N1bWVudCkuY3JlYXRlVGV4dE5vZGUoZCksZFtGYV09YixiLnN0YXRlTm9kZT1kKX1yZXR1cm4gbnVsbDtjYXNlIDEzOnQoRSk7ZD1iLm1lbW9pemVkU3RhdGU7aWYoMCE9PShiLmZsYWdzJjY0KSlyZXR1cm4gYi5sYW5lcz1jLGI7ZD1udWxsIT09ZDtjPSExO251bGw9PT1hP3ZvaWQgMCE9PWIubWVtb2l6ZWRQcm9wcy5mYWxsYmFjayYmaWQoYik6Yz1udWxsIT09YS5tZW1vaXplZFN0YXRlOw0KaWYoZCYmIWMmJjAhPT0oYi5tb2RlJjIpKWlmKG51bGw9PT1hJiYhMCE9PWIubWVtb2l6ZWRQcm9wcy51bnN0YWJsZV9hdm9pZFRoaXNGYWxsYmFja3x8MCE9PShFLmN1cnJlbnQmMSkpMD09PUwmJihMPTMpO2Vsc2V7aWYoMD09PUx8fDM9PT1MKUw9NDtudWxsPT09Unx8MD09PShMYSYxMzQyMTc3MjcpJiYwPT09KENiJjEzNDIxNzcyNyl8fERiKFIsTyl9aWYoZHx8YyliLmZsYWdzfD00O3JldHVybiBudWxsO2Nhc2UgNDpyZXR1cm4gQWIoKSxKaChiKSxudWxsPT09YSYmQmcoYi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyksbnVsbDtjYXNlIDEwOnJldHVybiB6ZShiKSxudWxsO2Nhc2UgMTc6cmV0dXJuIFMoYi50eXBlKSYmKHQoSiksdChEKSksbnVsbDtjYXNlIDE5OnQoRSk7ZD1iLm1lbW9pemVkU3RhdGU7aWYobnVsbD09PWQpcmV0dXJuIG51bGw7Zj0wIT09KGIuZmxhZ3MmNjQpO2c9ZC5yZW5kZXJpbmc7aWYobnVsbD09PWcpaWYoZilvYyhkLCExKTtlbHNle2lmKDAhPT1MfHxudWxsIT09DQphJiYwIT09KGEuZmxhZ3MmNjQpKWZvcihhPWIuY2hpbGQ7bnVsbCE9PWE7KXtnPWhkKGEpO2lmKG51bGwhPT1nKXtiLmZsYWdzfD02NDtvYyhkLCExKTtmPWcudXBkYXRlUXVldWU7bnVsbCE9PWYmJihiLnVwZGF0ZVF1ZXVlPWYsYi5mbGFnc3w9NCk7bnVsbD09PWQubGFzdEVmZmVjdCYmKGIuZmlyc3RFZmZlY3Q9bnVsbCk7Yi5sYXN0RWZmZWN0PWQubGFzdEVmZmVjdDtkPWM7Zm9yKGM9Yi5jaGlsZDtudWxsIT09YzspZj1jLGE9ZCxmLmZsYWdzJj0yLGYubmV4dEVmZmVjdD1udWxsLGYuZmlyc3RFZmZlY3Q9bnVsbCxmLmxhc3RFZmZlY3Q9bnVsbCxnPWYuYWx0ZXJuYXRlLG51bGw9PT1nPyhmLmNoaWxkTGFuZXM9MCxmLmxhbmVzPWEsZi5jaGlsZD1udWxsLGYubWVtb2l6ZWRQcm9wcz1udWxsLGYubWVtb2l6ZWRTdGF0ZT1udWxsLGYudXBkYXRlUXVldWU9bnVsbCxmLmRlcGVuZGVuY2llcz1udWxsLGYuc3RhdGVOb2RlPW51bGwpOihmLmNoaWxkTGFuZXM9Zy5jaGlsZExhbmVzLGYubGFuZXM9DQpnLmxhbmVzLGYuY2hpbGQ9Zy5jaGlsZCxmLm1lbW9pemVkUHJvcHM9Zy5tZW1vaXplZFByb3BzLGYubWVtb2l6ZWRTdGF0ZT1nLm1lbW9pemVkU3RhdGUsZi51cGRhdGVRdWV1ZT1nLnVwZGF0ZVF1ZXVlLGYudHlwZT1nLnR5cGUsYT1nLmRlcGVuZGVuY2llcyxmLmRlcGVuZGVuY2llcz1udWxsPT09YT9udWxsOntsYW5lczphLmxhbmVzLGZpcnN0Q29udGV4dDphLmZpcnN0Q29udGV4dH0pLGM9Yy5zaWJsaW5nO0EoRSxFLmN1cnJlbnQmMXwyKTtyZXR1cm4gYi5jaGlsZH1hPWEuc2libGluZ31udWxsIT09ZC50YWlsJiZQKCk+VmUmJihiLmZsYWdzfD02NCxmPSEwLG9jKGQsITEpLGIubGFuZXM9MzM1NTQ0MzIpfWVsc2V7aWYoIWYpaWYoYT1oZChnKSxudWxsIT09YSl7aWYoYi5mbGFnc3w9NjQsZj0hMCxjPWEudXBkYXRlUXVldWUsbnVsbCE9PWMmJihiLnVwZGF0ZVF1ZXVlPWMsYi5mbGFnc3w9NCksb2MoZCwhMCksbnVsbD09PWQudGFpbCYmImhpZGRlbiI9PT1kLnRhaWxNb2RlJiYNCiFnLmFsdGVybmF0ZSYmIWxhKXJldHVybiBiPWIubGFzdEVmZmVjdD1kLmxhc3RFZmZlY3QsbnVsbCE9PWImJihiLm5leHRFZmZlY3Q9bnVsbCksbnVsbH1lbHNlIDIqUCgpLWQucmVuZGVyaW5nU3RhcnRUaW1lPlZlJiYxMDczNzQxODI0IT09YyYmKGIuZmxhZ3N8PTY0LGY9ITAsb2MoZCwhMSksYi5sYW5lcz0zMzU1NDQzMik7ZC5pc0JhY2t3YXJkcz8oZy5zaWJsaW5nPWIuY2hpbGQsYi5jaGlsZD1nKTooYz1kLmxhc3QsbnVsbCE9PWM\/Yy5zaWJsaW5nPWc6Yi5jaGlsZD1nLGQubGFzdD1nKX1yZXR1cm4gbnVsbCE9PWQudGFpbD8oYz1kLnRhaWwsZC5yZW5kZXJpbmc9YyxkLnRhaWw9Yy5zaWJsaW5nLGQubGFzdEVmZmVjdD1iLmxhc3RFZmZlY3QsZC5yZW5kZXJpbmdTdGFydFRpbWU9UCgpLGMuc2libGluZz1udWxsLGI9RS5jdXJyZW50LEEoRSxmP2ImMXwyOmImMSksYyk6bnVsbDtjYXNlIDIzOmNhc2UgMjQ6cmV0dXJuIHRhPWNiLmN1cnJlbnQsdChjYiksbnVsbCE9PWEmJm51bGwhPT0NCmEubWVtb2l6ZWRTdGF0ZSE9PShudWxsIT09Yi5tZW1vaXplZFN0YXRlKSYmInVuc3RhYmxlLWRlZmVyLXdpdGhvdXQtaGlkaW5nIiE9PWQubW9kZSYmKGIuZmxhZ3N8PTQpLG51bGx9dGhyb3cgRXJyb3IobSgxNTYsYi50YWcpKTt9ZnVuY3Rpb24geWooYSxiKXtzd2l0Y2goYS50YWcpe2Nhc2UgMTpyZXR1cm4gUyhhLnR5cGUpJiYodChKKSx0KEQpKSxiPWEuZmxhZ3MsYiY0MDk2PyhhLmZsYWdzPWImLTQwOTd8NjQsYSk6bnVsbDtjYXNlIDM6QWIoKTt0KEopO3QoRCk7SWUoKTtiPWEuZmxhZ3M7aWYoMCE9PShiJjY0KSl0aHJvdyBFcnJvcihtKDI4NSkpO2EuZmxhZ3M9YiYtNDA5N3w2NDtyZXR1cm4gYTtjYXNlIDU6cmV0dXJuIEZlKGEpLG51bGw7Y2FzZSAxMzpyZXR1cm4gdChFKSxiPWEuZmxhZ3MsYiY0MDk2PyhhLmZsYWdzPWImLTQwOTd8NjQsYSk6bnVsbDtjYXNlIDE5OnJldHVybiB0KEUpLG51bGw7Y2FzZSA0OnJldHVybiBBYigpLG51bGw7Y2FzZSAxMDpyZXR1cm4gemUoYSksDQpudWxsO2Nhc2UgMjM6Y2FzZSAyNDpyZXR1cm4gdGE9Y2IuY3VycmVudCx0KGNiKSxudWxsO2RlZmF1bHQ6cmV0dXJuIG51bGx9fWZ1bmN0aW9uIFdlKGEsYil7dHJ5e3ZhciBjPSIiLGQ9YjtkbyBjKz1vaShkKSxkPWQucmV0dXJuO3doaWxlKGQpO3ZhciBlPWN9Y2F0Y2goZil7ZT0iXG5FcnJvciBnZW5lcmF0aW5nIHN0YWNrOiAiK2YubWVzc2FnZSsiXG4iK2Yuc3RhY2t9cmV0dXJue3ZhbHVlOmEsc291cmNlOmIsc3RhY2s6ZX19ZnVuY3Rpb24gWGUoYSxiKXt0cnl7Y29uc29sZS5lcnJvcihiLnZhbHVlKX1jYXRjaChjKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgYzt9KX19ZnVuY3Rpb24gTGgoYSxiLGMpe2M9SWEoLTEsYyk7Yy50YWc9MztjLnBheWxvYWQ9e2VsZW1lbnQ6bnVsbH07dmFyIGQ9Yi52YWx1ZTtjLmNhbGxiYWNrPWZ1bmN0aW9uKCl7cmR8fChyZD0hMCxZZT1kKTtYZShhLGIpfTtyZXR1cm4gY31mdW5jdGlvbiBNaChhLGIsYyl7Yz1JYSgtMSxjKTtjLnRhZz0NCjM7dmFyIGQ9YS50eXBlLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcjtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGQpe3ZhciBlPWIudmFsdWU7Yy5wYXlsb2FkPWZ1bmN0aW9uKCl7WGUoYSxiKTtyZXR1cm4gZChlKX19dmFyIGY9YS5zdGF0ZU5vZGU7bnVsbCE9PWYmJiJmdW5jdGlvbiI9PT10eXBlb2YgZi5jb21wb25lbnREaWRDYXRjaCYmKGMuY2FsbGJhY2s9ZnVuY3Rpb24oKXsiZnVuY3Rpb24iIT09dHlwZW9mIGQmJihudWxsPT09bmE\/bmE9bmV3IFNldChbdGhpc10pOm5hLmFkZCh0aGlzKSxYZShhLGIpKTt2YXIgYz1iLnN0YWNrO3RoaXMuY29tcG9uZW50RGlkQ2F0Y2goYi52YWx1ZSx7Y29tcG9uZW50U3RhY2s6bnVsbCE9PWM\/YzoiIn0pfSk7cmV0dXJuIGN9ZnVuY3Rpb24gTmgoYSl7dmFyIGI9YS5yZWY7aWYobnVsbCE9PWIpaWYoImZ1bmN0aW9uIj09PXR5cGVvZiBiKXRyeXtiKG51bGwpfWNhdGNoKGMpe1FhKGEsYyl9ZWxzZSBiLmN1cnJlbnQ9bnVsbH1mdW5jdGlvbiB6aihhLA0KYil7c3dpdGNoKGIudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OmNhc2UgMjI6cmV0dXJuO2Nhc2UgMTppZihiLmZsYWdzJjI1NiYmbnVsbCE9PWEpe3ZhciBjPWEubWVtb2l6ZWRQcm9wcyxkPWEubWVtb2l6ZWRTdGF0ZTthPWIuc3RhdGVOb2RlO2I9YS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZShiLmVsZW1lbnRUeXBlPT09Yi50eXBlP2M6ZWEoYi50eXBlLGMpLGQpO2EuX19yZWFjdEludGVybmFsU25hcHNob3RCZWZvcmVVcGRhdGU9Yn1yZXR1cm47Y2FzZSAzOmIuZmxhZ3MmMjU2JiZzZShiLnN0YXRlTm9kZS5jb250YWluZXJJbmZvKTtyZXR1cm47Y2FzZSA1OmNhc2UgNjpjYXNlIDQ6Y2FzZSAxNzpyZXR1cm59dGhyb3cgRXJyb3IobSgxNjMpKTt9ZnVuY3Rpb24gQWooYSxiLGMsZCl7c3dpdGNoKGMudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OmNhc2UgMjI6Yj1jLnVwZGF0ZVF1ZXVlO2I9bnVsbCE9PWI\/Yi5sYXN0RWZmZWN0Om51bGw7aWYobnVsbCE9PWIpe2E9Yj1iLm5leHQ7DQpkbyAzPT09KGEudGFnJjMpJiYoZD1hLmNyZWF0ZSxhLmRlc3Ryb3k9ZCgpKSxhPWEubmV4dDt3aGlsZShhIT09Yil9Yj1jLnVwZGF0ZVF1ZXVlO2I9bnVsbCE9PWI\/Yi5sYXN0RWZmZWN0Om51bGw7aWYobnVsbCE9PWIpe2E9Yj1iLm5leHQ7ZG97dmFyIGU9YTtkPWUubmV4dDtlPWUudGFnOzAhPT0oZSY0KSYmMCE9PShlJjEpJiYoT2goYyxhKSxCaihjLGEpKTthPWR9d2hpbGUoYSE9PWIpfXJldHVybjtjYXNlIDE6YT1jLnN0YXRlTm9kZTtjLmZsYWdzJjQmJihudWxsPT09Yj9hLmNvbXBvbmVudERpZE1vdW50KCk6KGQ9Yy5lbGVtZW50VHlwZT09PWMudHlwZT9iLm1lbW9pemVkUHJvcHM6ZWEoYy50eXBlLGIubWVtb2l6ZWRQcm9wcyksYS5jb21wb25lbnREaWRVcGRhdGUoZCxiLm1lbW9pemVkU3RhdGUsYS5fX3JlYWN0SW50ZXJuYWxTbmFwc2hvdEJlZm9yZVVwZGF0ZSkpKTtiPWMudXBkYXRlUXVldWU7bnVsbCE9PWImJmNoKGMsYixhKTtyZXR1cm47Y2FzZSAzOmI9Yy51cGRhdGVRdWV1ZTsNCmlmKG51bGwhPT1iKXthPW51bGw7aWYobnVsbCE9PWMuY2hpbGQpc3dpdGNoKGMuY2hpbGQudGFnKXtjYXNlIDU6YT1jLmNoaWxkLnN0YXRlTm9kZTticmVhaztjYXNlIDE6YT1jLmNoaWxkLnN0YXRlTm9kZX1jaChjLGIsYSl9cmV0dXJuO2Nhc2UgNTphPWMuc3RhdGVOb2RlO251bGw9PT1iJiZjLmZsYWdzJjQmJk9nKGMudHlwZSxjLm1lbW9pemVkUHJvcHMpJiZhLmZvY3VzKCk7cmV0dXJuO2Nhc2UgNjpyZXR1cm47Y2FzZSA0OnJldHVybjtjYXNlIDEyOnJldHVybjtjYXNlIDEzOm51bGw9PT1jLm1lbW9pemVkU3RhdGUmJihjPWMuYWx0ZXJuYXRlLG51bGwhPT1jJiYoYz1jLm1lbW9pemVkU3RhdGUsbnVsbCE9PWMmJihjPWMuZGVoeWRyYXRlZCxudWxsIT09YyYmYWcoYykpKSk7cmV0dXJuO2Nhc2UgMTk6Y2FzZSAxNzpjYXNlIDIwOmNhc2UgMjE6Y2FzZSAyMzpjYXNlIDI0OnJldHVybn10aHJvdyBFcnJvcihtKDE2MykpO31mdW5jdGlvbiBQaChhLGIpe2Zvcih2YXIgYz1hOzspe2lmKDU9PT0NCmMudGFnKXt2YXIgZD1jLnN0YXRlTm9kZTtpZihiKWQ9ZC5zdHlsZSwiZnVuY3Rpb24iPT09dHlwZW9mIGQuc2V0UHJvcGVydHk\/ZC5zZXRQcm9wZXJ0eSgiZGlzcGxheSIsIm5vbmUiLCJpbXBvcnRhbnQiKTpkLmRpc3BsYXk9Im5vbmUiO2Vsc2V7ZD1jLnN0YXRlTm9kZTt2YXIgZT1jLm1lbW9pemVkUHJvcHMuc3R5bGU7ZT12b2lkIDAhPT1lJiZudWxsIT09ZSYmZS5oYXNPd25Qcm9wZXJ0eSgiZGlzcGxheSIpP2UuZGlzcGxheTpudWxsO2Quc3R5bGUuZGlzcGxheT1NZigiZGlzcGxheSIsZSl9fWVsc2UgaWYoNj09PWMudGFnKWMuc3RhdGVOb2RlLm5vZGVWYWx1ZT1iPyIiOmMubWVtb2l6ZWRQcm9wcztlbHNlIGlmKCgyMyE9PWMudGFnJiYyNCE9PWMudGFnfHxudWxsPT09Yy5tZW1vaXplZFN0YXRlfHxjPT09YSkmJm51bGwhPT1jLmNoaWxkKXtjLmNoaWxkLnJldHVybj1jO2M9Yy5jaGlsZDtjb250aW51ZX1pZihjPT09YSlicmVhaztmb3IoO251bGw9PT1jLnNpYmxpbmc7KXtpZihudWxsPT09DQpjLnJldHVybnx8Yy5yZXR1cm49PT1hKXJldHVybjtjPWMucmV0dXJufWMuc2libGluZy5yZXR1cm49Yy5yZXR1cm47Yz1jLnNpYmxpbmd9fWZ1bmN0aW9uIFFoKGEsYixjKXtpZihkYiYmImZ1bmN0aW9uIj09PXR5cGVvZiBkYi5vbkNvbW1pdEZpYmVyVW5tb3VudCl0cnl7ZGIub25Db21taXRGaWJlclVubW91bnQoWmUsYil9Y2F0Y2goZil7fXN3aXRjaChiLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNDpjYXNlIDE1OmNhc2UgMjI6YT1iLnVwZGF0ZVF1ZXVlO2lmKG51bGwhPT1hJiYoYT1hLmxhc3RFZmZlY3QsbnVsbCE9PWEpKXtjPWE9YS5uZXh0O2Rve3ZhciBkPWMsZT1kLmRlc3Ryb3k7ZD1kLnRhZztpZih2b2lkIDAhPT1lKWlmKDAhPT0oZCY0KSlPaChiLGMpO2Vsc2V7ZD1iO3RyeXtlKCl9Y2F0Y2goZil7UWEoZCxmKX19Yz1jLm5leHR9d2hpbGUoYyE9PWEpfWJyZWFrO2Nhc2UgMTpOaChiKTthPWIuc3RhdGVOb2RlO2lmKCJmdW5jdGlvbiI9PT10eXBlb2YgYS5jb21wb25lbnRXaWxsVW5tb3VudCl0cnl7YS5wcm9wcz0NCmIubWVtb2l6ZWRQcm9wcyxhLnN0YXRlPWIubWVtb2l6ZWRTdGF0ZSxhLmNvbXBvbmVudFdpbGxVbm1vdW50KCl9Y2F0Y2goZil7UWEoYixmKX1icmVhaztjYXNlIDU6TmgoYik7YnJlYWs7Y2FzZSA0OlJoKGEsYil9fWZ1bmN0aW9uIFNoKGEpe2EuYWx0ZXJuYXRlPW51bGw7YS5jaGlsZD1udWxsO2EuZGVwZW5kZW5jaWVzPW51bGw7YS5maXJzdEVmZmVjdD1udWxsO2EubGFzdEVmZmVjdD1udWxsO2EubWVtb2l6ZWRQcm9wcz1udWxsO2EubWVtb2l6ZWRTdGF0ZT1udWxsO2EucGVuZGluZ1Byb3BzPW51bGw7YS5yZXR1cm49bnVsbDthLnVwZGF0ZVF1ZXVlPW51bGx9ZnVuY3Rpb24gVGgoYSl7cmV0dXJuIDU9PT1hLnRhZ3x8Mz09PWEudGFnfHw0PT09YS50YWd9ZnVuY3Rpb24gVWgoYSl7YTp7Zm9yKHZhciBiPWEucmV0dXJuO251bGwhPT1iOyl7aWYoVGgoYikpYnJlYWsgYTtiPWIucmV0dXJufXRocm93IEVycm9yKG0oMTYwKSk7fXZhciBjPWI7Yj1jLnN0YXRlTm9kZTtzd2l0Y2goYy50YWcpe2Nhc2UgNTp2YXIgZD0NCiExO2JyZWFrO2Nhc2UgMzpiPWIuY29udGFpbmVySW5mbztkPSEwO2JyZWFrO2Nhc2UgNDpiPWIuY29udGFpbmVySW5mbztkPSEwO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IobSgxNjEpKTt9Yy5mbGFncyYxNiYmKHFjKGIsIiIpLGMuZmxhZ3MmPS0xNyk7YTpiOmZvcihjPWE7Oyl7Zm9yKDtudWxsPT09Yy5zaWJsaW5nOyl7aWYobnVsbD09PWMucmV0dXJufHxUaChjLnJldHVybikpe2M9bnVsbDticmVhayBhfWM9Yy5yZXR1cm59Yy5zaWJsaW5nLnJldHVybj1jLnJldHVybjtmb3IoYz1jLnNpYmxpbmc7NSE9PWMudGFnJiY2IT09Yy50YWcmJjE4IT09Yy50YWc7KXtpZihjLmZsYWdzJjIpY29udGludWUgYjtpZihudWxsPT09Yy5jaGlsZHx8ND09PWMudGFnKWNvbnRpbnVlIGI7ZWxzZSBjLmNoaWxkLnJldHVybj1jLGM9Yy5jaGlsZH1pZighKGMuZmxhZ3MmMikpe2M9Yy5zdGF0ZU5vZGU7YnJlYWsgYX19ZD8kZShhLGMsYik6YWYoYSxjLGIpfWZ1bmN0aW9uICRlKGEsYixjKXt2YXIgZD0NCmEudGFnLGU9NT09PWR8fDY9PT1kO2lmKGUpYT1lP2Euc3RhdGVOb2RlOmEuc3RhdGVOb2RlLmluc3RhbmNlLGI\/OD09PWMubm9kZVR5cGU\/Yy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLGIpOmMuaW5zZXJ0QmVmb3JlKGEsYik6KDg9PT1jLm5vZGVUeXBlPyhiPWMucGFyZW50Tm9kZSxiLmluc2VydEJlZm9yZShhLGMpKTooYj1jLGIuYXBwZW5kQ2hpbGQoYSkpLGM9Yy5fcmVhY3RSb290Q29udGFpbmVyLG51bGwhPT1jJiZ2b2lkIDAhPT1jfHxudWxsIT09Yi5vbmNsaWNrfHwoYi5vbmNsaWNrPVZjKSk7ZWxzZSBpZig0IT09ZCYmKGE9YS5jaGlsZCxudWxsIT09YSkpZm9yKCRlKGEsYixjKSxhPWEuc2libGluZztudWxsIT09YTspJGUoYSxiLGMpLGE9YS5zaWJsaW5nfWZ1bmN0aW9uIGFmKGEsYixjKXt2YXIgZD1hLnRhZyxlPTU9PT1kfHw2PT09ZDtpZihlKWE9ZT9hLnN0YXRlTm9kZTphLnN0YXRlTm9kZS5pbnN0YW5jZSxiP2MuaW5zZXJ0QmVmb3JlKGEsYik6Yy5hcHBlbmRDaGlsZChhKTsNCmVsc2UgaWYoNCE9PWQmJihhPWEuY2hpbGQsbnVsbCE9PWEpKWZvcihhZihhLGIsYyksYT1hLnNpYmxpbmc7bnVsbCE9PWE7KWFmKGEsYixjKSxhPWEuc2libGluZ31mdW5jdGlvbiBSaChhLGIsYyl7Yz1iO2Zvcih2YXIgZD0hMSxlLGY7Oyl7aWYoIWQpe2U9Yy5yZXR1cm47YTpmb3IoOzspe2lmKG51bGw9PT1lKXRocm93IEVycm9yKG0oMTYwKSk7Zj1lLnN0YXRlTm9kZTtzd2l0Y2goZS50YWcpe2Nhc2UgNTplPWY7Zj0hMTticmVhayBhO2Nhc2UgMzplPWYuY29udGFpbmVySW5mbztmPSEwO2JyZWFrIGE7Y2FzZSA0OmU9Zi5jb250YWluZXJJbmZvO2Y9ITA7YnJlYWsgYX1lPWUucmV0dXJufWQ9ITB9aWYoNT09PWMudGFnfHw2PT09Yy50YWcpe2E6Zm9yKHZhciBnPWEsaD1jLGs9aDs7KWlmKFFoKGcsayksbnVsbCE9PWsuY2hpbGQmJjQhPT1rLnRhZylrLmNoaWxkLnJldHVybj1rLGs9ay5jaGlsZDtlbHNle2lmKGs9PT1oKWJyZWFrIGE7Zm9yKDtudWxsPT09ay5zaWJsaW5nOyl7aWYobnVsbD09PQ0Kay5yZXR1cm58fGsucmV0dXJuPT09aClicmVhayBhO2s9ay5yZXR1cm59ay5zaWJsaW5nLnJldHVybj1rLnJldHVybjtrPWsuc2libGluZ31mPyhnPWUsaD1jLnN0YXRlTm9kZSw4PT09Zy5ub2RlVHlwZT9nLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoaCk6Zy5yZW1vdmVDaGlsZChoKSk6ZS5yZW1vdmVDaGlsZChjLnN0YXRlTm9kZSl9ZWxzZSBpZig0PT09Yy50YWcpe2lmKG51bGwhPT1jLmNoaWxkKXtlPWMuc3RhdGVOb2RlLmNvbnRhaW5lckluZm87Zj0hMDtjLmNoaWxkLnJldHVybj1jO2M9Yy5jaGlsZDtjb250aW51ZX19ZWxzZSBpZihRaChhLGMpLG51bGwhPT1jLmNoaWxkKXtjLmNoaWxkLnJldHVybj1jO2M9Yy5jaGlsZDtjb250aW51ZX1pZihjPT09YilicmVhaztmb3IoO251bGw9PT1jLnNpYmxpbmc7KXtpZihudWxsPT09Yy5yZXR1cm58fGMucmV0dXJuPT09YilyZXR1cm47Yz1jLnJldHVybjs0PT09Yy50YWcmJihkPSExKX1jLnNpYmxpbmcucmV0dXJuPWMucmV0dXJuO2M9DQpjLnNpYmxpbmd9fWZ1bmN0aW9uIGJmKGEsYil7c3dpdGNoKGIudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE0OmNhc2UgMTU6Y2FzZSAyMjp2YXIgYz1iLnVwZGF0ZVF1ZXVlO2M9bnVsbCE9PWM\/Yy5sYXN0RWZmZWN0Om51bGw7aWYobnVsbCE9PWMpe3ZhciBkPWM9Yy5uZXh0O2RvIDM9PT0oZC50YWcmMykmJihhPWQuZGVzdHJveSxkLmRlc3Ryb3k9dm9pZCAwLHZvaWQgMCE9PWEmJmEoKSksZD1kLm5leHQ7d2hpbGUoZCE9PWMpfXJldHVybjtjYXNlIDE6cmV0dXJuO2Nhc2UgNTpjPWIuc3RhdGVOb2RlO2lmKG51bGwhPWMpe2Q9Yi5tZW1vaXplZFByb3BzO3ZhciBlPW51bGwhPT1hP2EubWVtb2l6ZWRQcm9wczpkO2E9Yi50eXBlO3ZhciBmPWIudXBkYXRlUXVldWU7Yi51cGRhdGVRdWV1ZT1udWxsO2lmKG51bGwhPT1mKXtjW1djXT1kOyJpbnB1dCI9PT1hJiYicmFkaW8iPT09ZC50eXBlJiZudWxsIT1kLm5hbWUmJkdmKGMsZCk7VGQoYSxlKTtiPVRkKGEsZCk7Zm9yKGU9MDtlPGYubGVuZ3RoO2UrPQ0KMil7dmFyIGc9ZltlXSxoPWZbZSsxXTsic3R5bGUiPT09Zz9OZihjLGgpOiJkYW5nZXJvdXNseVNldElubmVySFRNTCI9PT1nP0toKGMsaCk6ImNoaWxkcmVuIj09PWc\/cWMoYyxoKTpFZChjLGcsaCxiKX1zd2l0Y2goYSl7Y2FzZSAiaW5wdXQiOk5kKGMsZCk7YnJlYWs7Y2FzZSAidGV4dGFyZWEiOkpmKGMsZCk7YnJlYWs7Y2FzZSAic2VsZWN0IjphPWMuX3dyYXBwZXJTdGF0ZS53YXNNdWx0aXBsZSxjLl93cmFwcGVyU3RhdGUud2FzTXVsdGlwbGU9ISFkLm11bHRpcGxlLGY9ZC52YWx1ZSxudWxsIT1mP2liKGMsISFkLm11bHRpcGxlLGYsITEpOmEhPT0hIWQubXVsdGlwbGUmJihudWxsIT1kLmRlZmF1bHRWYWx1ZT9pYihjLCEhZC5tdWx0aXBsZSxkLmRlZmF1bHRWYWx1ZSwhMCk6aWIoYywhIWQubXVsdGlwbGUsZC5tdWx0aXBsZT9bXToiIiwhMSkpfX19cmV0dXJuO2Nhc2UgNjppZihudWxsPT09Yi5zdGF0ZU5vZGUpdGhyb3cgRXJyb3IobSgxNjIpKTtiLnN0YXRlTm9kZS5ub2RlVmFsdWU9DQpiLm1lbW9pemVkUHJvcHM7cmV0dXJuO2Nhc2UgMzpjPWIuc3RhdGVOb2RlO2MuaHlkcmF0ZSYmKGMuaHlkcmF0ZT0hMSxhZyhjLmNvbnRhaW5lckluZm8pKTtyZXR1cm47Y2FzZSAxMjpyZXR1cm47Y2FzZSAxMzpudWxsIT09Yi5tZW1vaXplZFN0YXRlJiYoY2Y9UCgpLFBoKGIuY2hpbGQsITApKTtWaChiKTtyZXR1cm47Y2FzZSAxOTpWaChiKTtyZXR1cm47Y2FzZSAxNzpyZXR1cm47Y2FzZSAyMzpjYXNlIDI0OlBoKGIsbnVsbCE9PWIubWVtb2l6ZWRTdGF0ZSk7cmV0dXJufXRocm93IEVycm9yKG0oMTYzKSk7fWZ1bmN0aW9uIFZoKGEpe3ZhciBiPWEudXBkYXRlUXVldWU7aWYobnVsbCE9PWIpe2EudXBkYXRlUXVldWU9bnVsbDt2YXIgYz1hLnN0YXRlTm9kZTtudWxsPT09YyYmKGM9YS5zdGF0ZU5vZGU9bmV3IENqKTtiLmZvckVhY2goZnVuY3Rpb24oYil7dmFyIGQ9RGouYmluZChudWxsLGEsYik7Yy5oYXMoYil8fChjLmFkZChiKSxiLnRoZW4oZCxkKSl9KX19ZnVuY3Rpb24gRWooYSwNCmIpe3JldHVybiBudWxsIT09YSYmKGE9YS5tZW1vaXplZFN0YXRlLG51bGw9PT1hfHxudWxsIT09YS5kZWh5ZHJhdGVkKT8oYj1iLm1lbW9pemVkU3RhdGUsbnVsbCE9PWImJm51bGw9PT1iLmRlaHlkcmF0ZWQpOiExfWZ1bmN0aW9uIEViKCl7VmU9UCgpKzUwMH1mdW5jdGlvbiBXKCl7cmV0dXJuIDAhPT0obiY0OCk\/UCgpOi0xIT09c2Q\/c2Q6c2Q9UCgpfWZ1bmN0aW9uIE9hKGEpe2E9YS5tb2RlO2lmKDA9PT0oYSYyKSlyZXR1cm4gMTtpZigwPT09KGEmNCkpcmV0dXJuIDk5PT09d2IoKT8xOjI7MD09PXVhJiYodWE9RmIpO2lmKDAhPT1Gai50cmFuc2l0aW9uKXswIT09dGQmJih0ZD1udWxsIT09ZGY\/ZGYucGVuZGluZ0xhbmVzOjApO2E9dWE7dmFyIGI9NDE4NjExMiZ+dGQ7YiY9LWI7MD09PWImJihhPTQxODYxMTImfmEsYj1hJi1hLDA9PT1iJiYoYj04MTkyKSk7cmV0dXJuIGJ9YT13YigpOzAhPT0obiY0KSYmOTg9PT1hP2E9TmMoMTIsdWEpOihhPUVpKGEpLGE9TmMoYSx1YSkpOw0KcmV0dXJuIGF9ZnVuY3Rpb24gUGEoYSxiLGMpe2lmKDUwPHJjKXRocm93IHJjPTAsZWY9bnVsbCxFcnJvcihtKDE4NSkpO2E9dWQoYSxiKTtpZihudWxsPT09YSlyZXR1cm4gbnVsbDtPYyhhLGIsYyk7YT09PVImJihDYnw9Yiw0PT09TCYmRGIoYSxPKSk7dmFyIGQ9d2IoKTsxPT09Yj8wIT09KG4mOCkmJjA9PT0obiY0OCk\/ZmYoYSk6KGJhKGEsYyksMD09PW4mJihFYigpLGphKCkpKTooMD09PShuJjQpfHw5OCE9PWQmJjk5IT09ZHx8KG51bGw9PT12YT92YT1uZXcgU2V0KFthXSk6dmEuYWRkKGEpKSxiYShhLGMpKTtkZj1hfWZ1bmN0aW9uIHVkKGEsYil7YS5sYW5lc3w9Yjt2YXIgYz1hLmFsdGVybmF0ZTtudWxsIT09YyYmKGMubGFuZXN8PWIpO2M9YTtmb3IoYT1hLnJldHVybjtudWxsIT09YTspYS5jaGlsZExhbmVzfD1iLGM9YS5hbHRlcm5hdGUsbnVsbCE9PWMmJihjLmNoaWxkTGFuZXN8PWIpLGM9YSxhPWEucmV0dXJuO3JldHVybiAzPT09Yy50YWc\/Yy5zdGF0ZU5vZGU6bnVsbH0NCmZ1bmN0aW9uIGJhKGEsYil7Zm9yKHZhciBjPWEuY2FsbGJhY2tOb2RlLGQ9YS5zdXNwZW5kZWRMYW5lcyxlPWEucGluZ2VkTGFuZXMsZj1hLmV4cGlyYXRpb25UaW1lcyxnPWEucGVuZGluZ0xhbmVzOzA8Zzspe3ZhciBoPTMxLUJhKGcpLGs9MTw8aCxsPWZbaF07aWYoLTE9PT1sKXtpZigwPT09KGsmZCl8fDAhPT0oayZlKSl7bD1iO21iKGspO3ZhciBtPXc7ZltoXT0xMDw9bT9sKzI1MDo2PD1tP2wrNUUzOi0xfX1lbHNlIGw8PWImJihhLmV4cGlyZWRMYW5lc3w9ayk7ZyY9fmt9ZD1XYihhLGE9PT1SP086MCk7Yj13O2lmKDA9PT1kKW51bGwhPT1jJiYoYyE9PWdmJiZ3ZShjKSxhLmNhbGxiYWNrTm9kZT1udWxsLGEuY2FsbGJhY2tQcmlvcml0eT0wKTtlbHNle2lmKG51bGwhPT1jKXtpZihhLmNhbGxiYWNrUHJpb3JpdHk9PT1iKXJldHVybjtjIT09Z2YmJndlKGMpfTE1PT09Yj8oYz1mZi5iaW5kKG51bGwsYSksbnVsbD09PXBhPyhwYT1bY10sWmM9dmUoWWMsWmcpKTpwYS5wdXNoKGMpLA0KYz1nZik6MTQ9PT1iP2M9YmMoOTksZmYuYmluZChudWxsLGEpKTooYz1GaShiKSxjPWJjKGMsV2guYmluZChudWxsLGEpKSk7YS5jYWxsYmFja1ByaW9yaXR5PWI7YS5jYWxsYmFja05vZGU9Y319ZnVuY3Rpb24gV2goYSl7c2Q9LTE7dGQ9dWE9MDtpZigwIT09KG4mNDgpKXRocm93IEVycm9yKG0oMzI3KSk7dmFyIGI9YS5jYWxsYmFja05vZGU7aWYoUmEoKSYmYS5jYWxsYmFja05vZGUhPT1iKXJldHVybiBudWxsO3ZhciBjPVdiKGEsYT09PVI\/TzowKTtpZigwPT09YylyZXR1cm4gbnVsbDt2YXIgZD1jO3ZhciBlPW47bnw9MTY7dmFyIGY9WGgoKTtpZihSIT09YXx8TyE9PWQpRWIoKSxHYihhLGQpO2RvIHRyeXtHaigpO2JyZWFrfWNhdGNoKGgpe1loKGEsaCl9d2hpbGUoMSk7eWUoKTt2ZC5jdXJyZW50PWY7bj1lO251bGwhPT1HP2Q9MDooUj1udWxsLE89MCxkPUwpO2lmKDAhPT0oRmImQ2IpKUdiKGEsMCk7ZWxzZSBpZigwIT09ZCl7Mj09PWQmJihufD02NCxhLmh5ZHJhdGUmJihhLmh5ZHJhdGU9DQohMSxzZShhLmNvbnRhaW5lckluZm8pKSxjPWRnKGEpLDAhPT1jJiYoZD1zYyhhLGMpKSk7aWYoMT09PWQpdGhyb3cgYj13ZCxHYihhLDApLERiKGEsYyksYmEoYSxQKCkpLGI7YS5maW5pc2hlZFdvcms9YS5jdXJyZW50LmFsdGVybmF0ZTthLmZpbmlzaGVkTGFuZXM9Yztzd2l0Y2goZCl7Y2FzZSAwOmNhc2UgMTp0aHJvdyBFcnJvcihtKDM0NSkpO2Nhc2UgMjplYihhKTticmVhaztjYXNlIDM6RGIoYSxjKTtpZigoYyY2MjkxNDU2MCk9PT1jJiYoZD1jZis1MDAtUCgpLDEwPGQpKXtpZigwIT09V2IoYSwwKSlicmVhaztlPWEuc3VzcGVuZGVkTGFuZXM7aWYoKGUmYykhPT1jKXtXKCk7YS5waW5nZWRMYW5lc3w9YS5zdXNwZW5kZWRMYW5lcyZlO2JyZWFrfWEudGltZW91dEhhbmRsZT1aaChlYi5iaW5kKG51bGwsYSksZCk7YnJlYWt9ZWIoYSk7YnJlYWs7Y2FzZSA0OkRiKGEsYyk7aWYoKGMmNDE4NjExMik9PT1jKWJyZWFrO2Q9YS5ldmVudFRpbWVzO2ZvcihlPS0xOzA8Yzspe3ZhciBnPQ0KMzEtQmEoYyk7Zj0xPDxnO2c9ZFtnXTtnPmUmJihlPWcpO2MmPX5mfWM9ZTtjPVAoKS1jO2M9KDEyMD5jPzEyMDo0ODA+Yz80ODA6MTA4MD5jPzEwODA6MTkyMD5jPzE5MjA6M0UzPmM\/M0UzOjQzMjA+Yz80MzIwOjE5NjAqSGooYy8xOTYwKSktYztpZigxMDxjKXthLnRpbWVvdXRIYW5kbGU9WmgoZWIuYmluZChudWxsLGEpLGMpO2JyZWFrfWViKGEpO2JyZWFrO2Nhc2UgNTplYihhKTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKG0oMzI5KSk7fX1iYShhLFAoKSk7cmV0dXJuIGEuY2FsbGJhY2tOb2RlPT09Yj9XaC5iaW5kKG51bGwsYSk6bnVsbH1mdW5jdGlvbiBEYihhLGIpe2ImPX5oZjtiJj1+Q2I7YS5zdXNwZW5kZWRMYW5lc3w9YjthLnBpbmdlZExhbmVzJj1+Yjtmb3IoYT1hLmV4cGlyYXRpb25UaW1lczswPGI7KXt2YXIgYz0zMS1CYShiKSxkPTE8PGM7YVtjXT0tMTtiJj1+ZH19ZnVuY3Rpb24gZmYoYSl7aWYoMCE9PShuJjQ4KSl0aHJvdyBFcnJvcihtKDMyNykpO1JhKCk7DQppZihhPT09UiYmMCE9PShhLmV4cGlyZWRMYW5lcyZPKSl7dmFyIGI9Tzt2YXIgYz1zYyhhLGIpOzAhPT0oRmImQ2IpJiYoYj1XYihhLGIpLGM9c2MoYSxiKSl9ZWxzZSBiPVdiKGEsMCksYz1zYyhhLGIpOzAhPT1hLnRhZyYmMj09PWMmJihufD02NCxhLmh5ZHJhdGUmJihhLmh5ZHJhdGU9ITEsc2UoYS5jb250YWluZXJJbmZvKSksYj1kZyhhKSwwIT09YiYmKGM9c2MoYSxiKSkpO2lmKDE9PT1jKXRocm93IGM9d2QsR2IoYSwwKSxEYihhLGIpLGJhKGEsUCgpKSxjO2EuZmluaXNoZWRXb3JrPWEuY3VycmVudC5hbHRlcm5hdGU7YS5maW5pc2hlZExhbmVzPWI7ZWIoYSk7YmEoYSxQKCkpO3JldHVybiBudWxsfWZ1bmN0aW9uIElqKCl7aWYobnVsbCE9PXZhKXt2YXIgYT12YTt2YT1udWxsO2EuZm9yRWFjaChmdW5jdGlvbihhKXthLmV4cGlyZWRMYW5lc3w9MjQmYS5wZW5kaW5nTGFuZXM7YmEoYSxQKCkpfSl9amEoKX1mdW5jdGlvbiAkaChhLGIpe3ZhciBjPW47bnw9MTt0cnl7cmV0dXJuIGEoYil9ZmluYWxseXtuPQ0KYywwPT09biYmKEViKCksamEoKSl9fWZ1bmN0aW9uIGFpKGEsYil7dmFyIGM9bjtuJj0tMjtufD04O3RyeXtyZXR1cm4gYShiKX1maW5hbGx5e249YywwPT09biYmKEViKCksamEoKSl9fWZ1bmN0aW9uIHBkKGEsYil7QShjYix0YSk7dGF8PWI7RmJ8PWJ9ZnVuY3Rpb24gR2IoYSxiKXthLmZpbmlzaGVkV29yaz1udWxsO2EuZmluaXNoZWRMYW5lcz0wO3ZhciBjPWEudGltZW91dEhhbmRsZTstMSE9PWMmJihhLnRpbWVvdXRIYW5kbGU9LTEsSmooYykpO2lmKG51bGwhPT1HKWZvcihjPUcucmV0dXJuO251bGwhPT1jOyl7dmFyIGQ9Yztzd2l0Y2goZC50YWcpe2Nhc2UgMTpkPWQudHlwZS5jaGlsZENvbnRleHRUeXBlcztudWxsIT09ZCYmdm9pZCAwIT09ZCYmKHQoSiksdChEKSk7YnJlYWs7Y2FzZSAzOkFiKCk7dChKKTt0KEQpO0llKCk7YnJlYWs7Y2FzZSA1OkZlKGQpO2JyZWFrO2Nhc2UgNDpBYigpO2JyZWFrO2Nhc2UgMTM6dChFKTticmVhaztjYXNlIDE5OnQoRSk7YnJlYWs7Y2FzZSAxMDp6ZShkKTsNCmJyZWFrO2Nhc2UgMjM6Y2FzZSAyNDp0YT1jYi5jdXJyZW50LHQoY2IpfWM9Yy5yZXR1cm59Uj1hO0c9TWEoYS5jdXJyZW50LG51bGwpO089dGE9RmI9YjtMPTA7d2Q9bnVsbDtoZj1DYj1MYT0wfWZ1bmN0aW9uIFloKGEsYil7ZG97dmFyIGM9Rzt0cnl7eWUoKTtqYy5jdXJyZW50PWpkO2lmKGtkKXtmb3IodmFyIGQ9eS5tZW1vaXplZFN0YXRlO251bGwhPT1kOyl7dmFyIGU9ZC5xdWV1ZTtudWxsIT09ZSYmKGUucGVuZGluZz1udWxsKTtkPWQubmV4dH1rZD0hMX1pYz0wO0s9Tj15PW51bGw7a2M9ITE7amYuY3VycmVudD1udWxsO2lmKG51bGw9PT1jfHxudWxsPT09Yy5yZXR1cm4pe0w9MTt3ZD1iO0c9bnVsbDticmVha31hOnt2YXIgZj1hLGc9Yy5yZXR1cm4saD1jLGs9YjtiPU87aC5mbGFnc3w9MjA0ODtoLmZpcnN0RWZmZWN0PWgubGFzdEVmZmVjdD1udWxsO2lmKG51bGwhPT1rJiYib2JqZWN0Ij09PXR5cGVvZiBrJiYiZnVuY3Rpb24iPT09dHlwZW9mIGsudGhlbil7dmFyIGw9azsNCmlmKDA9PT0oaC5tb2RlJjIpKXt2YXIgbT1oLmFsdGVybmF0ZTttPyhoLnVwZGF0ZVF1ZXVlPW0udXBkYXRlUXVldWUsaC5tZW1vaXplZFN0YXRlPW0ubWVtb2l6ZWRTdGF0ZSxoLmxhbmVzPW0ubGFuZXMpOihoLnVwZGF0ZVF1ZXVlPW51bGwsaC5tZW1vaXplZFN0YXRlPW51bGwpfXZhciBuPTAhPT0oRS5jdXJyZW50JjEpLHI9Zztkb3t2YXIgdDtpZih0PTEzPT09ci50YWcpe3ZhciB3PXIubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09dyl0PW51bGwhPT13LmRlaHlkcmF0ZWQ\/ITA6ITE7ZWxzZXt2YXIgej1yLm1lbW9pemVkUHJvcHM7dD12b2lkIDA9PT16LmZhbGxiYWNrPyExOiEwIT09ei51bnN0YWJsZV9hdm9pZFRoaXNGYWxsYmFjaz8hMDpuPyExOiEwfX1pZih0KXt2YXIgQz1yLnVwZGF0ZVF1ZXVlO2lmKG51bGw9PT1DKXt2YXIgeD1uZXcgU2V0O3guYWRkKGwpO3IudXBkYXRlUXVldWU9eH1lbHNlIEMuYWRkKGwpO2lmKDA9PT0oci5tb2RlJjIpKXtyLmZsYWdzfD02NDtoLmZsYWdzfD0NCjE2Mzg0O2guZmxhZ3MmPS0yOTgxO2lmKDE9PT1oLnRhZylpZihudWxsPT09aC5hbHRlcm5hdGUpaC50YWc9MTc7ZWxzZXt2YXIgcD1JYSgtMSwxKTtwLnRhZz0yO0phKGgscCl9aC5sYW5lc3w9MTticmVhayBhfWs9dm9pZCAwO2g9Yjt2YXIgcT1mLnBpbmdDYWNoZTtudWxsPT09cT8ocT1mLnBpbmdDYWNoZT1uZXcgS2osaz1uZXcgU2V0LHEuc2V0KGwsaykpOihrPXEuZ2V0KGwpLHZvaWQgMD09PWsmJihrPW5ldyBTZXQscS5zZXQobCxrKSkpO2lmKCFrLmhhcyhoKSl7ay5hZGQoaCk7dmFyIHU9TGouYmluZChudWxsLGYsbCxoKTtsLnRoZW4odSx1KX1yLmZsYWdzfD00MDk2O3IubGFuZXM9YjticmVhayBhfXI9ci5yZXR1cm59d2hpbGUobnVsbCE9PXIpO2s9RXJyb3IoKGhiKGgudHlwZSl8fCJBIFJlYWN0IGNvbXBvbmVudCIpKyIgc3VzcGVuZGVkIHdoaWxlIHJlbmRlcmluZywgYnV0IG5vIGZhbGxiYWNrIFVJIHdhcyBzcGVjaWZpZWQuXG5cbkFkZCBhIDxTdXNwZW5zZSBmYWxsYmFjaz0uLi4+IGNvbXBvbmVudCBoaWdoZXIgaW4gdGhlIHRyZWUgdG8gcHJvdmlkZSBhIGxvYWRpbmcgaW5kaWNhdG9yIG9yIHBsYWNlaG9sZGVyIHRvIGRpc3BsYXkuIil9NSE9PQ0KTCYmKEw9Mik7az1XZShrLGgpO3I9Zztkb3tzd2l0Y2goci50YWcpe2Nhc2UgMzpmPWs7ci5mbGFnc3w9NDA5NjtiJj0tYjtyLmxhbmVzfD1iO3ZhciBCPUxoKHIsZixiKTtiaChyLEIpO2JyZWFrIGE7Y2FzZSAxOmY9azt2YXIgQT1yLnR5cGUsRD1yLnN0YXRlTm9kZTtpZigwPT09KHIuZmxhZ3MmNjQpJiYoImZ1bmN0aW9uIj09PXR5cGVvZiBBLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcnx8bnVsbCE9PUQmJiJmdW5jdGlvbiI9PT10eXBlb2YgRC5jb21wb25lbnREaWRDYXRjaCYmKG51bGw9PT1uYXx8IW5hLmhhcyhEKSkpKXtyLmZsYWdzfD00MDk2O2ImPS1iO3IubGFuZXN8PWI7dmFyIEY9TWgocixmLGIpO2JoKHIsRik7YnJlYWsgYX19cj1yLnJldHVybn13aGlsZShudWxsIT09cil9YmkoYyl9Y2F0Y2gocWEpe2I9cWE7Rz09PWMmJm51bGwhPT1jJiYoRz1jPWMucmV0dXJuKTtjb250aW51ZX1icmVha313aGlsZSgxKX1mdW5jdGlvbiBYaCgpe3ZhciBhPXZkLmN1cnJlbnQ7dmQuY3VycmVudD0NCmpkO3JldHVybiBudWxsPT09YT9qZDphfWZ1bmN0aW9uIHNjKGEsYil7dmFyIGM9bjtufD0xNjt2YXIgZD1YaCgpO1I9PT1hJiZPPT09Ynx8R2IoYSxiKTtkbyB0cnl7TWooKTticmVha31jYXRjaChlKXtZaChhLGUpfXdoaWxlKDEpO3llKCk7bj1jO3ZkLmN1cnJlbnQ9ZDtpZihudWxsIT09Ryl0aHJvdyBFcnJvcihtKDI2MSkpO1I9bnVsbDtPPTA7cmV0dXJuIEx9ZnVuY3Rpb24gTWooKXtmb3IoO251bGwhPT1HOyljaShHKX1mdW5jdGlvbiBHaigpe2Zvcig7bnVsbCE9PUcmJiFOaigpOyljaShHKX1mdW5jdGlvbiBjaShhKXt2YXIgYj1PaihhLmFsdGVybmF0ZSxhLHRhKTthLm1lbW9pemVkUHJvcHM9YS5wZW5kaW5nUHJvcHM7bnVsbD09PWI\/YmkoYSk6Rz1iO2pmLmN1cnJlbnQ9bnVsbH1mdW5jdGlvbiBiaShhKXt2YXIgYj1hO2Rve3ZhciBjPWIuYWx0ZXJuYXRlO2E9Yi5yZXR1cm47aWYoMD09PShiLmZsYWdzJjIwNDgpKXtjPXVqKGMsYix0YSk7aWYobnVsbCE9PWMpe0c9YztyZXR1cm59Yz0NCmI7aWYoMjQhPT1jLnRhZyYmMjMhPT1jLnRhZ3x8bnVsbD09PWMubWVtb2l6ZWRTdGF0ZXx8MCE9PSh0YSYxMDczNzQxODI0KXx8MD09PShjLm1vZGUmNCkpe2Zvcih2YXIgZD0wLGU9Yy5jaGlsZDtudWxsIT09ZTspZHw9ZS5sYW5lc3xlLmNoaWxkTGFuZXMsZT1lLnNpYmxpbmc7Yy5jaGlsZExhbmVzPWR9bnVsbCE9PWEmJjA9PT0oYS5mbGFncyYyMDQ4KSYmKG51bGw9PT1hLmZpcnN0RWZmZWN0JiYoYS5maXJzdEVmZmVjdD1iLmZpcnN0RWZmZWN0KSxudWxsIT09Yi5sYXN0RWZmZWN0JiYobnVsbCE9PWEubGFzdEVmZmVjdCYmKGEubGFzdEVmZmVjdC5uZXh0RWZmZWN0PWIuZmlyc3RFZmZlY3QpLGEubGFzdEVmZmVjdD1iLmxhc3RFZmZlY3QpLDE8Yi5mbGFncyYmKG51bGwhPT1hLmxhc3RFZmZlY3Q\/YS5sYXN0RWZmZWN0Lm5leHRFZmZlY3Q9YjphLmZpcnN0RWZmZWN0PWIsYS5sYXN0RWZmZWN0PWIpKX1lbHNle2M9eWooYik7aWYobnVsbCE9PWMpe2MuZmxhZ3MmPTIwNDc7Rz1jOw0KcmV0dXJufW51bGwhPT1hJiYoYS5maXJzdEVmZmVjdD1hLmxhc3RFZmZlY3Q9bnVsbCxhLmZsYWdzfD0yMDQ4KX1iPWIuc2libGluZztpZihudWxsIT09Yil7Rz1iO3JldHVybn1HPWI9YX13aGlsZShudWxsIT09Yik7MD09PUwmJihMPTUpfWZ1bmN0aW9uIGViKGEpe3ZhciBiPXdiKCk7WmEoOTksUGouYmluZChudWxsLGEsYikpO3JldHVybiBudWxsfWZ1bmN0aW9uIFBqKGEsYil7ZG8gUmEoKTt3aGlsZShudWxsIT09dGMpO2lmKDAhPT0obiY0OCkpdGhyb3cgRXJyb3IobSgzMjcpKTt2YXIgYz1hLmZpbmlzaGVkV29yaztpZihudWxsPT09YylyZXR1cm4gbnVsbDthLmZpbmlzaGVkV29yaz1udWxsO2EuZmluaXNoZWRMYW5lcz0wO2lmKGM9PT1hLmN1cnJlbnQpdGhyb3cgRXJyb3IobSgxNzcpKTthLmNhbGxiYWNrTm9kZT1udWxsO3ZhciBkPWMubGFuZXN8Yy5jaGlsZExhbmVzLGU9ZCxmPWEucGVuZGluZ0xhbmVzJn5lO2EucGVuZGluZ0xhbmVzPWU7YS5zdXNwZW5kZWRMYW5lcz0wOw0KYS5waW5nZWRMYW5lcz0wO2EuZXhwaXJlZExhbmVzJj1lO2EubXV0YWJsZVJlYWRMYW5lcyY9ZTthLmVudGFuZ2xlZExhbmVzJj1lO2U9YS5lbnRhbmdsZW1lbnRzO2Zvcih2YXIgZz1hLmV2ZW50VGltZXMsaD1hLmV4cGlyYXRpb25UaW1lczswPGY7KXt2YXIgaz0zMS1CYShmKSx2PTE8PGs7ZVtrXT0wO2dba109LTE7aFtrXT0tMTtmJj1+dn1udWxsIT09dmEmJjA9PT0oZCYyNCkmJnZhLmhhcyhhKSYmdmEuZGVsZXRlKGEpO2E9PT1SJiYoRz1SPW51bGwsTz0wKTsxPGMuZmxhZ3M\/bnVsbCE9PWMubGFzdEVmZmVjdD8oYy5sYXN0RWZmZWN0Lm5leHRFZmZlY3Q9YyxkPWMuZmlyc3RFZmZlY3QpOmQ9YzpkPWMuZmlyc3RFZmZlY3Q7aWYobnVsbCE9PWQpe2U9bjtufD0zMjtqZi5jdXJyZW50PW51bGw7a2Y9UGM7Zz13ZygpO2lmKG1lKGcpKXtpZigic2VsZWN0aW9uU3RhcnQiaW4gZyloPXtzdGFydDpnLnNlbGVjdGlvblN0YXJ0LGVuZDpnLnNlbGVjdGlvbkVuZH07ZWxzZSBhOmlmKGg9DQooaD1nLm93bmVyRG9jdW1lbnQpJiZoLmRlZmF1bHRWaWV3fHx3aW5kb3csKHY9aC5nZXRTZWxlY3Rpb24mJmguZ2V0U2VsZWN0aW9uKCkpJiYwIT09di5yYW5nZUNvdW50KXtoPXYuYW5jaG9yTm9kZTtmPXYuYW5jaG9yT2Zmc2V0O2s9di5mb2N1c05vZGU7dj12LmZvY3VzT2Zmc2V0O3RyeXtoLm5vZGVUeXBlLGsubm9kZVR5cGV9Y2F0Y2gocWEpe2g9bnVsbDticmVhayBhfXZhciB0PTAsdz0tMSxyPS0xLHo9MCxCPTAseT1nLEM9bnVsbDtiOmZvcig7Oyl7Zm9yKHZhciB4Ozspe3khPT1ofHwwIT09ZiYmMyE9PXkubm9kZVR5cGV8fCh3PXQrZik7eSE9PWt8fDAhPT12JiYzIT09eS5ub2RlVHlwZXx8KHI9dCt2KTszPT09eS5ub2RlVHlwZSYmKHQrPXkubm9kZVZhbHVlLmxlbmd0aCk7aWYobnVsbD09PSh4PXkuZmlyc3RDaGlsZCkpYnJlYWs7Qz15O3k9eH1mb3IoOzspe2lmKHk9PT1nKWJyZWFrIGI7Qz09PWgmJisrej09PWYmJih3PXQpO0M9PT1rJiYrK0I9PT12JiYocj10KTtpZihudWxsIT09DQooeD15Lm5leHRTaWJsaW5nKSlicmVhazt5PUM7Qz15LnBhcmVudE5vZGV9eT14fWg9LTE9PT13fHwtMT09PXI\/bnVsbDp7c3RhcnQ6dyxlbmQ6cn19ZWxzZSBoPW51bGw7aD1ofHx7c3RhcnQ6MCxlbmQ6MH19ZWxzZSBoPW51bGw7bGY9e2ZvY3VzZWRFbGVtOmcsc2VsZWN0aW9uUmFuZ2U6aH07UGM9ITE7dWM9bnVsbDt4ZD0hMTtsPWQ7ZG8gdHJ5e1FqKCl9Y2F0Y2gocWEpe2lmKG51bGw9PT1sKXRocm93IEVycm9yKG0oMzMwKSk7UWEobCxxYSk7bD1sLm5leHRFZmZlY3R9d2hpbGUobnVsbCE9PWwpO3VjPW51bGw7bD1kO2RvIHRyeXtmb3IoZz1hO251bGwhPT1sOyl7dmFyIHA9bC5mbGFncztwJjE2JiZxYyhsLnN0YXRlTm9kZSwiIik7aWYocCYxMjgpe3ZhciBxPWwuYWx0ZXJuYXRlO2lmKG51bGwhPT1xKXt2YXIgdT1xLnJlZjtudWxsIT09dSYmKCJmdW5jdGlvbiI9PT10eXBlb2YgdT91KG51bGwpOnUuY3VycmVudD1udWxsKX19c3dpdGNoKHAmMTAzOCl7Y2FzZSAyOlVoKGwpO2wuZmxhZ3MmPQ0KLTM7YnJlYWs7Y2FzZSA2OlVoKGwpO2wuZmxhZ3MmPS0zO2JmKGwuYWx0ZXJuYXRlLGwpO2JyZWFrO2Nhc2UgMTAyNDpsLmZsYWdzJj0tMTAyNTticmVhaztjYXNlIDEwMjg6bC5mbGFncyY9LTEwMjU7YmYobC5hbHRlcm5hdGUsbCk7YnJlYWs7Y2FzZSA0OmJmKGwuYWx0ZXJuYXRlLGwpO2JyZWFrO2Nhc2UgODpoPWw7UmgoZyxoKTt2YXIgQT1oLmFsdGVybmF0ZTtTaChoKTtudWxsIT09QSYmU2goQSl9bD1sLm5leHRFZmZlY3R9fWNhdGNoKHFhKXtpZihudWxsPT09bCl0aHJvdyBFcnJvcihtKDMzMCkpO1FhKGwscWEpO2w9bC5uZXh0RWZmZWN0fXdoaWxlKG51bGwhPT1sKTt1PWxmO3E9d2coKTtwPXUuZm9jdXNlZEVsZW07Zz11LnNlbGVjdGlvblJhbmdlO2lmKHEhPT1wJiZwJiZwLm93bmVyRG9jdW1lbnQmJnZnKHAub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQscCkpe251bGwhPT1nJiZtZShwKSYmKHE9Zy5zdGFydCx1PWcuZW5kLHZvaWQgMD09PXUmJih1PXEpLCJzZWxlY3Rpb25TdGFydCJpbg0KcD8ocC5zZWxlY3Rpb25TdGFydD1xLHAuc2VsZWN0aW9uRW5kPU1hdGgubWluKHUscC52YWx1ZS5sZW5ndGgpKToodT0ocT1wLm93bmVyRG9jdW1lbnR8fGRvY3VtZW50KSYmcS5kZWZhdWx0Vmlld3x8d2luZG93LHUuZ2V0U2VsZWN0aW9uJiYodT11LmdldFNlbGVjdGlvbigpLGg9cC50ZXh0Q29udGVudC5sZW5ndGgsQT1NYXRoLm1pbihnLnN0YXJ0LGgpLGc9dm9pZCAwPT09Zy5lbmQ\/QTpNYXRoLm1pbihnLmVuZCxoKSwhdS5leHRlbmQmJkE+ZyYmKGg9ZyxnPUEsQT1oKSxoPXVnKHAsQSksZj11ZyhwLGcpLGgmJmYmJigxIT09dS5yYW5nZUNvdW50fHx1LmFuY2hvck5vZGUhPT1oLm5vZGV8fHUuYW5jaG9yT2Zmc2V0IT09aC5vZmZzZXR8fHUuZm9jdXNOb2RlIT09Zi5ub2RlfHx1LmZvY3VzT2Zmc2V0IT09Zi5vZmZzZXQpJiYocT1xLmNyZWF0ZVJhbmdlKCkscS5zZXRTdGFydChoLm5vZGUsaC5vZmZzZXQpLHUucmVtb3ZlQWxsUmFuZ2VzKCksQT5nPyh1LmFkZFJhbmdlKHEpLHUuZXh0ZW5kKGYubm9kZSwNCmYub2Zmc2V0KSk6KHEuc2V0RW5kKGYubm9kZSxmLm9mZnNldCksdS5hZGRSYW5nZShxKSkpKSkpO3E9W107Zm9yKHU9cDt1PXUucGFyZW50Tm9kZTspMT09PXUubm9kZVR5cGUmJnEucHVzaCh7ZWxlbWVudDp1LGxlZnQ6dS5zY3JvbGxMZWZ0LHRvcDp1LnNjcm9sbFRvcH0pOyJmdW5jdGlvbiI9PT10eXBlb2YgcC5mb2N1cyYmcC5mb2N1cygpO2ZvcihwPTA7cDxxLmxlbmd0aDtwKyspdT1xW3BdLHUuZWxlbWVudC5zY3JvbGxMZWZ0PXUubGVmdCx1LmVsZW1lbnQuc2Nyb2xsVG9wPXUudG9wfVBjPSEha2Y7bGY9a2Y9bnVsbDthLmN1cnJlbnQ9YztsPWQ7ZG8gdHJ5e2ZvcihwPWE7bnVsbCE9PWw7KXt2YXIgRD1sLmZsYWdzO0QmMzYmJkFqKHAsbC5hbHRlcm5hdGUsbCk7aWYoRCYxMjgpe3E9dm9pZCAwO3ZhciBFPWwucmVmO2lmKG51bGwhPT1FKXt2YXIgRj1sLnN0YXRlTm9kZTtzd2l0Y2gobC50YWcpe2Nhc2UgNTpxPUY7YnJlYWs7ZGVmYXVsdDpxPUZ9ImZ1bmN0aW9uIj09PXR5cGVvZiBFPw0KRShxKTpFLmN1cnJlbnQ9cX19bD1sLm5leHRFZmZlY3R9fWNhdGNoKHFhKXtpZihudWxsPT09bCl0aHJvdyBFcnJvcihtKDMzMCkpO1FhKGwscWEpO2w9bC5uZXh0RWZmZWN0fXdoaWxlKG51bGwhPT1sKTtsPW51bGw7UmooKTtuPWV9ZWxzZSBhLmN1cnJlbnQ9YztpZihTYSlTYT0hMSx0Yz1hLHZjPWI7ZWxzZSBmb3IobD1kO251bGwhPT1sOyliPWwubmV4dEVmZmVjdCxsLm5leHRFZmZlY3Q9bnVsbCxsLmZsYWdzJjgmJihEPWwsRC5zaWJsaW5nPW51bGwsRC5zdGF0ZU5vZGU9bnVsbCksbD1iO2Q9YS5wZW5kaW5nTGFuZXM7MD09PWQmJihuYT1udWxsKTsxPT09ZD9hPT09ZWY\/cmMrKzoocmM9MCxlZj1hKTpyYz0wO2M9Yy5zdGF0ZU5vZGU7aWYoZGImJiJmdW5jdGlvbiI9PT10eXBlb2YgZGIub25Db21taXRGaWJlclJvb3QpdHJ5e2RiLm9uQ29tbWl0RmliZXJSb290KFplLGMsdm9pZCAwLDY0PT09KGMuY3VycmVudC5mbGFncyY2NCkpfWNhdGNoKHFhKXt9YmEoYSxQKCkpO2lmKHJkKXRocm93IHJkPQ0KITEsYT1ZZSxZZT1udWxsLGE7aWYoMCE9PShuJjgpKXJldHVybiBudWxsO2phKCk7cmV0dXJuIG51bGx9ZnVuY3Rpb24gUWooKXtmb3IoO251bGwhPT1sOyl7dmFyIGE9bC5hbHRlcm5hdGU7eGR8fG51bGw9PT11Y3x8KDAhPT0obC5mbGFncyY4KT9WZihsLHVjKSYmKHhkPSEwKToxMz09PWwudGFnJiZFaihhLGwpJiZWZihsLHVjKSYmKHhkPSEwKSk7dmFyIGI9bC5mbGFnczswIT09KGImMjU2KSYmemooYSxsKTswPT09KGImNTEyKXx8U2F8fChTYT0hMCxiYyg5NyxmdW5jdGlvbigpe1JhKCk7cmV0dXJuIG51bGx9KSk7bD1sLm5leHRFZmZlY3R9fWZ1bmN0aW9uIFJhKCl7aWYoOTAhPT12Yyl7dmFyIGE9OTc8dmM\/OTc6dmM7dmM9OTA7cmV0dXJuIFphKGEsU2opfXJldHVybiExfWZ1bmN0aW9uIEJqKGEsYil7bWYucHVzaChiLGEpO1NhfHwoU2E9ITAsYmMoOTcsZnVuY3Rpb24oKXtSYSgpO3JldHVybiBudWxsfSkpfWZ1bmN0aW9uIE9oKGEsYil7bmYucHVzaChiLGEpO1NhfHwoU2E9DQohMCxiYyg5NyxmdW5jdGlvbigpe1JhKCk7cmV0dXJuIG51bGx9KSl9ZnVuY3Rpb24gU2ooKXtpZihudWxsPT09dGMpcmV0dXJuITE7dmFyIGE9dGM7dGM9bnVsbDtpZigwIT09KG4mNDgpKXRocm93IEVycm9yKG0oMzMxKSk7dmFyIGI9bjtufD0zMjt2YXIgYz1uZjtuZj1bXTtmb3IodmFyIGQ9MDtkPGMubGVuZ3RoO2QrPTIpe3ZhciBlPWNbZF0sZj1jW2QrMV0sZz1lLmRlc3Ryb3k7ZS5kZXN0cm95PXZvaWQgMDtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGcpdHJ5e2coKX1jYXRjaChrKXtpZihudWxsPT09Zil0aHJvdyBFcnJvcihtKDMzMCkpO1FhKGYsayl9fWM9bWY7bWY9W107Zm9yKGQ9MDtkPGMubGVuZ3RoO2QrPTIpe2U9Y1tkXTtmPWNbZCsxXTt0cnl7dmFyIGg9ZS5jcmVhdGU7ZS5kZXN0cm95PWgoKX1jYXRjaChrKXtpZihudWxsPT09Zil0aHJvdyBFcnJvcihtKDMzMCkpO1FhKGYsayl9fWZvcihoPWEuY3VycmVudC5maXJzdEVmZmVjdDtudWxsIT09aDspYT1oLm5leHRFZmZlY3QsDQpoLm5leHRFZmZlY3Q9bnVsbCxoLmZsYWdzJjgmJihoLnNpYmxpbmc9bnVsbCxoLnN0YXRlTm9kZT1udWxsKSxoPWE7bj1iO2phKCk7cmV0dXJuITB9ZnVuY3Rpb24gZGkoYSxiLGMpe2I9V2UoYyxiKTtiPUxoKGEsYiwxKTtKYShhLGIpO2I9VygpO2E9dWQoYSwxKTtudWxsIT09YSYmKE9jKGEsMSxiKSxiYShhLGIpKX1mdW5jdGlvbiBRYShhLGIpe2lmKDM9PT1hLnRhZylkaShhLGEsYik7ZWxzZSBmb3IodmFyIGM9YS5yZXR1cm47bnVsbCE9PWM7KXtpZigzPT09Yy50YWcpe2RpKGMsYSxiKTticmVha31lbHNlIGlmKDE9PT1jLnRhZyl7dmFyIGQ9Yy5zdGF0ZU5vZGU7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBjLnR5cGUuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yfHwiZnVuY3Rpb24iPT09dHlwZW9mIGQuY29tcG9uZW50RGlkQ2F0Y2gmJihudWxsPT09bmF8fCFuYS5oYXMoZCkpKXthPVdlKGIsYSk7dmFyIGU9TWgoYyxhLDEpO0phKGMsZSk7ZT1XKCk7Yz11ZChjLDEpO2lmKG51bGwhPT0NCmMpT2MoYywxLGUpLGJhKGMsZSk7ZWxzZSBpZigiZnVuY3Rpb24iPT09dHlwZW9mIGQuY29tcG9uZW50RGlkQ2F0Y2gmJihudWxsPT09bmF8fCFuYS5oYXMoZCkpKXRyeXtkLmNvbXBvbmVudERpZENhdGNoKGIsYSl9Y2F0Y2goZil7fWJyZWFrfX1jPWMucmV0dXJufX1mdW5jdGlvbiBMaihhLGIsYyl7dmFyIGQ9YS5waW5nQ2FjaGU7bnVsbCE9PWQmJmQuZGVsZXRlKGIpO2I9VygpO2EucGluZ2VkTGFuZXN8PWEuc3VzcGVuZGVkTGFuZXMmYztSPT09YSYmKE8mYyk9PT1jJiYoND09PUx8fDM9PT1MJiYoTyY2MjkxNDU2MCk9PT1PJiY1MDA+UCgpLWNmP0diKGEsMCk6aGZ8PWMpO2JhKGEsYil9ZnVuY3Rpb24gRGooYSxiKXt2YXIgYz1hLnN0YXRlTm9kZTtudWxsIT09YyYmYy5kZWxldGUoYik7Yj0wOzA9PT1iJiYoYj1hLm1vZGUsMD09PShiJjIpP2I9MTowPT09KGImNCk\/Yj05OT09PXdiKCk\/MToyOigwPT09dWEmJih1YT1GYiksYj1uYig2MjkxNDU2MCZ+dWEpLDA9PT1iJiYoYj00MTk0MzA0KSkpOw0KYz1XKCk7YT11ZChhLGIpO251bGwhPT1hJiYoT2MoYSxiLGMpLGJhKGEsYykpfWZ1bmN0aW9uIFRqKGEsYixjLGQpe3RoaXMudGFnPWE7dGhpcy5rZXk9Yzt0aGlzLnNpYmxpbmc9dGhpcy5jaGlsZD10aGlzLnJldHVybj10aGlzLnN0YXRlTm9kZT10aGlzLnR5cGU9dGhpcy5lbGVtZW50VHlwZT1udWxsO3RoaXMuaW5kZXg9MDt0aGlzLnJlZj1udWxsO3RoaXMucGVuZGluZ1Byb3BzPWI7dGhpcy5kZXBlbmRlbmNpZXM9dGhpcy5tZW1vaXplZFN0YXRlPXRoaXMudXBkYXRlUXVldWU9dGhpcy5tZW1vaXplZFByb3BzPW51bGw7dGhpcy5tb2RlPWQ7dGhpcy5mbGFncz0wO3RoaXMubGFzdEVmZmVjdD10aGlzLmZpcnN0RWZmZWN0PXRoaXMubmV4dEVmZmVjdD1udWxsO3RoaXMuY2hpbGRMYW5lcz10aGlzLmxhbmVzPTA7dGhpcy5hbHRlcm5hdGU9bnVsbH1mdW5jdGlvbiBQZShhKXthPWEucHJvdG90eXBlO3JldHVybiEoIWF8fCFhLmlzUmVhY3RDb21wb25lbnQpfWZ1bmN0aW9uIFVqKGEpe2lmKCJmdW5jdGlvbiI9PT0NCnR5cGVvZiBhKXJldHVybiBQZShhKT8xOjA7aWYodm9pZCAwIT09YSYmbnVsbCE9PWEpe2E9YS4kJHR5cGVvZjtpZihhPT09RGMpcmV0dXJuIDExO2lmKGE9PT1FYylyZXR1cm4gMTR9cmV0dXJuIDJ9ZnVuY3Rpb24gTWEoYSxiKXt2YXIgYz1hLmFsdGVybmF0ZTtudWxsPT09Yz8oYz1aKGEudGFnLGIsYS5rZXksYS5tb2RlKSxjLmVsZW1lbnRUeXBlPWEuZWxlbWVudFR5cGUsYy50eXBlPWEudHlwZSxjLnN0YXRlTm9kZT1hLnN0YXRlTm9kZSxjLmFsdGVybmF0ZT1hLGEuYWx0ZXJuYXRlPWMpOihjLnBlbmRpbmdQcm9wcz1iLGMudHlwZT1hLnR5cGUsYy5mbGFncz0wLGMubmV4dEVmZmVjdD1udWxsLGMuZmlyc3RFZmZlY3Q9bnVsbCxjLmxhc3RFZmZlY3Q9bnVsbCk7Yy5jaGlsZExhbmVzPWEuY2hpbGRMYW5lcztjLmxhbmVzPWEubGFuZXM7Yy5jaGlsZD1hLmNoaWxkO2MubWVtb2l6ZWRQcm9wcz1hLm1lbW9pemVkUHJvcHM7Yy5tZW1vaXplZFN0YXRlPWEubWVtb2l6ZWRTdGF0ZTtjLnVwZGF0ZVF1ZXVlPQ0KYS51cGRhdGVRdWV1ZTtiPWEuZGVwZW5kZW5jaWVzO2MuZGVwZW5kZW5jaWVzPW51bGw9PT1iP251bGw6e2xhbmVzOmIubGFuZXMsZmlyc3RDb250ZXh0OmIuZmlyc3RDb250ZXh0fTtjLnNpYmxpbmc9YS5zaWJsaW5nO2MuaW5kZXg9YS5pbmRleDtjLnJlZj1hLnJlZjtyZXR1cm4gY31mdW5jdGlvbiBmZChhLGIsYyxkLGUsZil7dmFyIGc9MjtkPWE7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBhKVBlKGEpJiYoZz0xKTtlbHNlIGlmKCJzdHJpbmciPT09dHlwZW9mIGEpZz01O2Vsc2UgYTpzd2l0Y2goYSl7Y2FzZSB3YTpyZXR1cm4gemIoYy5jaGlsZHJlbixlLGYsYik7Y2FzZSBlaTpnPTg7ZXw9MTY7YnJlYWs7Y2FzZSBIZDpnPTg7ZXw9MTticmVhaztjYXNlIExiOnJldHVybiBhPVooMTIsYyxiLGV8OCksYS5lbGVtZW50VHlwZT1MYixhLnR5cGU9TGIsYS5sYW5lcz1mLGE7Y2FzZSBNYjpyZXR1cm4gYT1aKDEzLGMsYixlKSxhLnR5cGU9TWIsYS5lbGVtZW50VHlwZT1NYixhLmxhbmVzPQ0KZixhO2Nhc2UgQ2M6cmV0dXJuIGE9WigxOSxjLGIsZSksYS5lbGVtZW50VHlwZT1DYyxhLmxhbmVzPWYsYTtjYXNlIG9mOnJldHVybiBUZShjLGUsZixiKTtjYXNlIHBmOnJldHVybiBhPVooMjQsYyxiLGUpLGEuZWxlbWVudFR5cGU9cGYsYS5sYW5lcz1mLGE7ZGVmYXVsdDppZigib2JqZWN0Ij09PXR5cGVvZiBhJiZudWxsIT09YSlzd2l0Y2goYS4kJHR5cGVvZil7Y2FzZSBKZDpnPTEwO2JyZWFrIGE7Y2FzZSBJZDpnPTk7YnJlYWsgYTtjYXNlIERjOmc9MTE7YnJlYWsgYTtjYXNlIEVjOmc9MTQ7YnJlYWsgYTtjYXNlIExkOmc9MTY7ZD1udWxsO2JyZWFrIGE7Y2FzZSBLZDpnPTIyO2JyZWFrIGF9dGhyb3cgRXJyb3IobSgxMzAsbnVsbD09YT9hOnR5cGVvZiBhLCIiKSk7fWI9WihnLGMsYixlKTtiLmVsZW1lbnRUeXBlPWE7Yi50eXBlPWQ7Yi5sYW5lcz1mO3JldHVybiBifWZ1bmN0aW9uIHpiKGEsYixjLGQpe2E9Wig3LGEsZCxiKTthLmxhbmVzPWM7cmV0dXJuIGF9ZnVuY3Rpb24gVGUoYSwNCmIsYyxkKXthPVooMjMsYSxkLGIpO2EuZWxlbWVudFR5cGU9b2Y7YS5sYW5lcz1jO3JldHVybiBhfWZ1bmN0aW9uIENlKGEsYixjKXthPVooNixhLG51bGwsYik7YS5sYW5lcz1jO3JldHVybiBhfWZ1bmN0aW9uIERlKGEsYixjKXtiPVooNCxudWxsIT09YS5jaGlsZHJlbj9hLmNoaWxkcmVuOltdLGEua2V5LGIpO2IubGFuZXM9YztiLnN0YXRlTm9kZT17Y29udGFpbmVySW5mbzphLmNvbnRhaW5lckluZm8scGVuZGluZ0NoaWxkcmVuOm51bGwsaW1wbGVtZW50YXRpb246YS5pbXBsZW1lbnRhdGlvbn07cmV0dXJuIGJ9ZnVuY3Rpb24gVmooYSxiLGMpe3RoaXMudGFnPWI7dGhpcy5jb250YWluZXJJbmZvPWE7dGhpcy5maW5pc2hlZFdvcms9dGhpcy5waW5nQ2FjaGU9dGhpcy5jdXJyZW50PXRoaXMucGVuZGluZ0NoaWxkcmVuPW51bGw7dGhpcy50aW1lb3V0SGFuZGxlPS0xO3RoaXMucGVuZGluZ0NvbnRleHQ9dGhpcy5jb250ZXh0PW51bGw7dGhpcy5oeWRyYXRlPWM7dGhpcy5jYWxsYmFja05vZGU9DQpudWxsO3RoaXMuY2FsbGJhY2tQcmlvcml0eT0wO3RoaXMuZXZlbnRUaW1lcz1BcnJheSgzMSkuZmlsbCgwKTt0aGlzLmV4cGlyYXRpb25UaW1lcz1BcnJheSgzMSkuZmlsbCgtMSk7dGhpcy5lbnRhbmdsZWRMYW5lcz10aGlzLmZpbmlzaGVkTGFuZXM9dGhpcy5tdXRhYmxlUmVhZExhbmVzPXRoaXMuZXhwaXJlZExhbmVzPXRoaXMucGluZ2VkTGFuZXM9dGhpcy5zdXNwZW5kZWRMYW5lcz10aGlzLnBlbmRpbmdMYW5lcz0wO3RoaXMuZW50YW5nbGVtZW50cz1BcnJheSgzMSkuZmlsbCgwKTt0aGlzLm11dGFibGVTb3VyY2VFYWdlckh5ZHJhdGlvbkRhdGE9bnVsbH1mdW5jdGlvbiBXaihhLGIsYyl7dmFyIGQ9Mzxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10\/YXJndW1lbnRzWzNdOm51bGw7cmV0dXJueyQkdHlwZW9mOlVhLGtleTpudWxsPT1kP251bGw6IiIrZCxjaGlsZHJlbjphLGNvbnRhaW5lckluZm86YixpbXBsZW1lbnRhdGlvbjpjfX1mdW5jdGlvbiB5ZChhLA0KYixjLGQpe3ZhciBlPWIuY3VycmVudCxmPVcoKSxnPU9hKGUpO2E6aWYoYyl7Yz1jLl9yZWFjdEludGVybmFscztiOntpZihWYShjKSE9PWN8fDEhPT1jLnRhZyl0aHJvdyBFcnJvcihtKDE3MCkpO3ZhciBoPWM7ZG97c3dpdGNoKGgudGFnKXtjYXNlIDM6aD1oLnN0YXRlTm9kZS5jb250ZXh0O2JyZWFrIGI7Y2FzZSAxOmlmKFMoaC50eXBlKSl7aD1oLnN0YXRlTm9kZS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1lcmdlZENoaWxkQ29udGV4dDticmVhayBifX1oPWgucmV0dXJufXdoaWxlKG51bGwhPT1oKTt0aHJvdyBFcnJvcihtKDE3MSkpO31pZigxPT09Yy50YWcpe3ZhciBrPWMudHlwZTtpZihTKGspKXtjPVNnKGMsayxoKTticmVhayBhfX1jPWh9ZWxzZSBjPUhhO251bGw9PT1iLmNvbnRleHQ\/Yi5jb250ZXh0PWM6Yi5wZW5kaW5nQ29udGV4dD1jO2I9SWEoZixnKTtiLnBheWxvYWQ9e2VsZW1lbnQ6YX07ZD12b2lkIDA9PT1kP251bGw6ZDtudWxsIT09ZCYmKGIuY2FsbGJhY2s9DQpkKTtKYShlLGIpO1BhKGUsZyxmKTtyZXR1cm4gZ31mdW5jdGlvbiBxZihhKXthPWEuY3VycmVudDtpZighYS5jaGlsZClyZXR1cm4gbnVsbDtzd2l0Y2goYS5jaGlsZC50YWcpe2Nhc2UgNTpyZXR1cm4gYS5jaGlsZC5zdGF0ZU5vZGU7ZGVmYXVsdDpyZXR1cm4gYS5jaGlsZC5zdGF0ZU5vZGV9fWZ1bmN0aW9uIGZpKGEsYil7YT1hLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWEmJm51bGwhPT1hLmRlaHlkcmF0ZWQpe3ZhciBjPWEucmV0cnlMYW5lO2EucmV0cnlMYW5lPTAhPT1jJiZjPGI\/YzpifX1mdW5jdGlvbiByZihhLGIpe2ZpKGEsYik7KGE9YS5hbHRlcm5hdGUpJiZmaShhLGIpfWZ1bmN0aW9uIFhqKGEpe2E9VWYoYSk7cmV0dXJuIG51bGw9PT1hP251bGw6YS5zdGF0ZU5vZGV9ZnVuY3Rpb24gWWooYSl7cmV0dXJuIG51bGx9ZnVuY3Rpb24gc2YoYSxiLGMpe3ZhciBkPW51bGwhPWMmJm51bGwhPWMuaHlkcmF0aW9uT3B0aW9ucyYmYy5oeWRyYXRpb25PcHRpb25zLm11dGFibGVTb3VyY2VzfHwNCm51bGw7Yz1uZXcgVmooYSxiLG51bGwhPWMmJiEwPT09Yy5oeWRyYXRlKTtiPVooMyxudWxsLG51bGwsMj09PWI\/NzoxPT09Yj8zOjApO2MuY3VycmVudD1iO2Iuc3RhdGVOb2RlPWM7QWUoYik7YVtyYl09Yy5jdXJyZW50O0JnKDg9PT1hLm5vZGVUeXBlP2EucGFyZW50Tm9kZTphKTtpZihkKWZvcihhPTA7YTxkLmxlbmd0aDthKyspe2I9ZFthXTt2YXIgZT1iLl9nZXRWZXJzaW9uO2U9ZShiLl9zb3VyY2UpO251bGw9PWMubXV0YWJsZVNvdXJjZUVhZ2VySHlkcmF0aW9uRGF0YT9jLm11dGFibGVTb3VyY2VFYWdlckh5ZHJhdGlvbkRhdGE9W2IsZV06Yy5tdXRhYmxlU291cmNlRWFnZXJIeWRyYXRpb25EYXRhLnB1c2goYixlKX10aGlzLl9pbnRlcm5hbFJvb3Q9Y31mdW5jdGlvbiB3YyhhKXtyZXR1cm4hKCFhfHwxIT09YS5ub2RlVHlwZSYmOSE9PWEubm9kZVR5cGUmJjExIT09YS5ub2RlVHlwZSYmKDghPT1hLm5vZGVUeXBlfHwiIHJlYWN0LW1vdW50LXBvaW50LXVuc3RhYmxlICIhPT0NCmEubm9kZVZhbHVlKSl9ZnVuY3Rpb24gWmooYSxiKXtifHwoYj1hPzk9PT1hLm5vZGVUeXBlP2EuZG9jdW1lbnRFbGVtZW50OmEuZmlyc3RDaGlsZDpudWxsLGI9ISghYnx8MSE9PWIubm9kZVR5cGV8fCFiLmhhc0F0dHJpYnV0ZSgiZGF0YS1yZWFjdHJvb3QiKSkpO2lmKCFiKWZvcih2YXIgYztjPWEubGFzdENoaWxkOylhLnJlbW92ZUNoaWxkKGMpO3JldHVybiBuZXcgc2YoYSwwLGI\/e2h5ZHJhdGU6ITB9OnZvaWQgMCl9ZnVuY3Rpb24gemQoYSxiLGMsZCxlKXt2YXIgZj1jLl9yZWFjdFJvb3RDb250YWluZXI7aWYoZil7dmFyIGc9Zi5faW50ZXJuYWxSb290O2lmKCJmdW5jdGlvbiI9PT10eXBlb2YgZSl7dmFyIGg9ZTtlPWZ1bmN0aW9uKCl7dmFyIGE9cWYoZyk7aC5jYWxsKGEpfX15ZChiLGcsYSxlKX1lbHNle2Y9Yy5fcmVhY3RSb290Q29udGFpbmVyPVpqKGMsZCk7Zz1mLl9pbnRlcm5hbFJvb3Q7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBlKXt2YXIgaz1lO2U9ZnVuY3Rpb24oKXt2YXIgYT0NCnFmKGcpO2suY2FsbChhKX19YWkoZnVuY3Rpb24oKXt5ZChiLGcsYSxlKX0pfXJldHVybiBxZihnKX1mdW5jdGlvbiBnaShhLGIpe3ZhciBjPTI8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpudWxsO2lmKCF3YyhiKSl0aHJvdyBFcnJvcihtKDIwMCkpO3JldHVybiBXaihhLGIsbnVsbCxjKX1pZighaGEpdGhyb3cgRXJyb3IobSgyMjcpKTt2YXIgeWY9bmV3IFNldCxJYj17fSxvYT0hKCJ1bmRlZmluZWQiPT09dHlwZW9mIHdpbmRvd3x8InVuZGVmaW5lZCI9PT10eXBlb2Ygd2luZG93LmRvY3VtZW50fHwidW5kZWZpbmVkIj09PXR5cGVvZiB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCksbGk9L15bOkEtWl9hLXpcdTAwQzAtXHUwMEQ2XHUwMEQ4LVx1MDBGNlx1MDBGOC1cdTAyRkZcdTAzNzAtXHUwMzdEXHUwMzdGLVx1MUZGRlx1MjAwQy1cdTIwMERcdTIwNzAtXHUyMThGXHUyQzAwLVx1MkZFRlx1MzAwMS1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZGRF1bOkEtWl9hLXpcdTAwQzAtXHUwMEQ2XHUwMEQ4LVx1MDBGNlx1MDBGOC1cdTAyRkZcdTAzNzAtXHUwMzdEXHUwMzdGLVx1MUZGRlx1MjAwQy1cdTIwMERcdTIwNzAtXHUyMThGXHUyQzAwLVx1MkZFRlx1MzAwMS1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZGRFwtLjAtOVx1MDBCN1x1MDMwMC1cdTAzNkZcdTIwM0YtXHUyMDQwXSokLywNCnpmPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksQmY9e30sQWY9e30sST17fTsiY2hpbGRyZW4gZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgZGVmYXVsdFZhbHVlIGRlZmF1bHRDaGVja2VkIGlubmVySFRNTCBzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmcgc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nIHN0eWxlIi5zcGxpdCgiICIpLmZvckVhY2goZnVuY3Rpb24oYSl7SVthXT1uZXcgUShhLDAsITEsYSxudWxsLCExLCExKX0pO1tbImFjY2VwdENoYXJzZXQiLCJhY2NlcHQtY2hhcnNldCJdLFsiY2xhc3NOYW1lIiwiY2xhc3MiXSxbImh0bWxGb3IiLCJmb3IiXSxbImh0dHBFcXVpdiIsImh0dHAtZXF1aXYiXV0uZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYj1hWzBdO0lbYl09bmV3IFEoYiwxLCExLGFbMV0sbnVsbCwhMSwhMSl9KTtbImNvbnRlbnRFZGl0YWJsZSIsImRyYWdnYWJsZSIsInNwZWxsQ2hlY2siLCJ2YWx1ZSJdLmZvckVhY2goZnVuY3Rpb24oYSl7SVthXT0NCm5ldyBRKGEsMiwhMSxhLnRvTG93ZXJDYXNlKCksbnVsbCwhMSwhMSl9KTtbImF1dG9SZXZlcnNlIiwiZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCIsImZvY3VzYWJsZSIsInByZXNlcnZlQWxwaGEiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe0lbYV09bmV3IFEoYSwyLCExLGEsbnVsbCwhMSwhMSl9KTsiYWxsb3dGdWxsU2NyZWVuIGFzeW5jIGF1dG9Gb2N1cyBhdXRvUGxheSBjb250cm9scyBkZWZhdWx0IGRlZmVyIGRpc2FibGVkIGRpc2FibGVQaWN0dXJlSW5QaWN0dXJlIGRpc2FibGVSZW1vdGVQbGF5YmFjayBmb3JtTm9WYWxpZGF0ZSBoaWRkZW4gbG9vcCBub01vZHVsZSBub1ZhbGlkYXRlIG9wZW4gcGxheXNJbmxpbmUgcmVhZE9ubHkgcmVxdWlyZWQgcmV2ZXJzZWQgc2NvcGVkIHNlYW1sZXNzIGl0ZW1TY29wZSIuc3BsaXQoIiAiKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe0lbYV09bmV3IFEoYSwzLCExLGEudG9Mb3dlckNhc2UoKSxudWxsLCExLCExKX0pO1siY2hlY2tlZCIsIm11bHRpcGxlIiwNCiJtdXRlZCIsInNlbGVjdGVkIl0uZm9yRWFjaChmdW5jdGlvbihhKXtJW2FdPW5ldyBRKGEsMywhMCxhLG51bGwsITEsITEpfSk7WyJjYXB0dXJlIiwiZG93bmxvYWQiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe0lbYV09bmV3IFEoYSw0LCExLGEsbnVsbCwhMSwhMSl9KTtbImNvbHMiLCJyb3dzIiwic2l6ZSIsInNwYW4iXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe0lbYV09bmV3IFEoYSw2LCExLGEsbnVsbCwhMSwhMSl9KTtbInJvd1NwYW4iLCJzdGFydCJdLmZvckVhY2goZnVuY3Rpb24oYSl7SVthXT1uZXcgUShhLDUsITEsYS50b0xvd2VyQ2FzZSgpLG51bGwsITEsITEpfSk7dmFyIHRmPS9bXC06XShbYS16XSkvZyx1Zj1mdW5jdGlvbihhKXtyZXR1cm4gYVsxXS50b1VwcGVyQ2FzZSgpfTsiYWNjZW50LWhlaWdodCBhbGlnbm1lbnQtYmFzZWxpbmUgYXJhYmljLWZvcm0gYmFzZWxpbmUtc2hpZnQgY2FwLWhlaWdodCBjbGlwLXBhdGggY2xpcC1ydWxlIGNvbG9yLWludGVycG9sYXRpb24gY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzIGNvbG9yLXByb2ZpbGUgY29sb3ItcmVuZGVyaW5nIGRvbWluYW50LWJhc2VsaW5lIGVuYWJsZS1iYWNrZ3JvdW5kIGZpbGwtb3BhY2l0eSBmaWxsLXJ1bGUgZmxvb2QtY29sb3IgZmxvb2Qtb3BhY2l0eSBmb250LWZhbWlseSBmb250LXNpemUgZm9udC1zaXplLWFkanVzdCBmb250LXN0cmV0Y2ggZm9udC1zdHlsZSBmb250LXZhcmlhbnQgZm9udC13ZWlnaHQgZ2x5cGgtbmFtZSBnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIGdseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsIGhvcml6LWFkdi14IGhvcml6LW9yaWdpbi14IGltYWdlLXJlbmRlcmluZyBsZXR0ZXItc3BhY2luZyBsaWdodGluZy1jb2xvciBtYXJrZXItZW5kIG1hcmtlci1taWQgbWFya2VyLXN0YXJ0IG92ZXJsaW5lLXBvc2l0aW9uIG92ZXJsaW5lLXRoaWNrbmVzcyBwYWludC1vcmRlciBwYW5vc2UtMSBwb2ludGVyLWV2ZW50cyByZW5kZXJpbmctaW50ZW50IHNoYXBlLXJlbmRlcmluZyBzdG9wLWNvbG9yIHN0b3Atb3BhY2l0eSBzdHJpa2V0aHJvdWdoLXBvc2l0aW9uIHN0cmlrZXRocm91Z2gtdGhpY2tuZXNzIHN0cm9rZS1kYXNoYXJyYXkgc3Ryb2tlLWRhc2hvZmZzZXQgc3Ryb2tlLWxpbmVjYXAgc3Ryb2tlLWxpbmVqb2luIHN0cm9rZS1taXRlcmxpbWl0IHN0cm9rZS1vcGFjaXR5IHN0cm9rZS13aWR0aCB0ZXh0LWFuY2hvciB0ZXh0LWRlY29yYXRpb24gdGV4dC1yZW5kZXJpbmcgdW5kZXJsaW5lLXBvc2l0aW9uIHVuZGVybGluZS10aGlja25lc3MgdW5pY29kZS1iaWRpIHVuaWNvZGUtcmFuZ2UgdW5pdHMtcGVyLWVtIHYtYWxwaGFiZXRpYyB2LWhhbmdpbmcgdi1pZGVvZ3JhcGhpYyB2LW1hdGhlbWF0aWNhbCB2ZWN0b3ItZWZmZWN0IHZlcnQtYWR2LXkgdmVydC1vcmlnaW4teCB2ZXJ0LW9yaWdpbi15IHdvcmQtc3BhY2luZyB3cml0aW5nLW1vZGUgeG1sbnM6eGxpbmsgeC1oZWlnaHQiLnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYj0NCmEucmVwbGFjZSh0Zix1Zik7SVtiXT1uZXcgUShiLDEsITEsYSxudWxsLCExLCExKX0pOyJ4bGluazphY3R1YXRlIHhsaW5rOmFyY3JvbGUgeGxpbms6cm9sZSB4bGluazpzaG93IHhsaW5rOnRpdGxlIHhsaW5rOnR5cGUiLnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYj1hLnJlcGxhY2UodGYsdWYpO0lbYl09bmV3IFEoYiwxLCExLGEsImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLCExLCExKX0pO1sieG1sOmJhc2UiLCJ4bWw6bGFuZyIsInhtbDpzcGFjZSJdLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGI9YS5yZXBsYWNlKHRmLHVmKTtJW2JdPW5ldyBRKGIsMSwhMSxhLCJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiLCExLCExKX0pO1sidGFiSW5kZXgiLCJjcm9zc09yaWdpbiJdLmZvckVhY2goZnVuY3Rpb24oYSl7SVthXT1uZXcgUShhLDEsITEsYS50b0xvd2VyQ2FzZSgpLG51bGwsITEsITEpfSk7SS54bGlua0hyZWY9bmV3IFEoInhsaW5rSHJlZiIsDQoxLCExLCJ4bGluazpocmVmIiwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIsITAsITEpO1sic3JjIiwiaHJlZiIsImFjdGlvbiIsImZvcm1BY3Rpb24iXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe0lbYV09bmV3IFEoYSwxLCExLGEudG9Mb3dlckNhc2UoKSxudWxsLCEwLCEwKX0pO3ZhciBCPWhhLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELmFzc2lnbixmYj1oYS5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCxlYz02MDEwMyxVYT02MDEwNix3YT02MDEwNyxIZD02MDEwOCxMYj02MDExNCxKZD02MDEwOSxJZD02MDExMCxEYz02MDExMixNYj02MDExMyxDYz02MDEyMCxFYz02MDExNSxMZD02MDExNixLZD02MDEyMSx0ZT02MDEyOCxlaT02MDEyOSxvZj02MDEzMCxwZj02MDEzMTtpZigiZnVuY3Rpb24iPT09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLmZvcil7dmFyIEg9U3ltYm9sLmZvcjtlYz0NCkgoInJlYWN0LmVsZW1lbnQiKTtVYT1IKCJyZWFjdC5wb3J0YWwiKTt3YT1IKCJyZWFjdC5mcmFnbWVudCIpO0hkPUgoInJlYWN0LnN0cmljdF9tb2RlIik7TGI9SCgicmVhY3QucHJvZmlsZXIiKTtKZD1IKCJyZWFjdC5wcm92aWRlciIpO0lkPUgoInJlYWN0LmNvbnRleHQiKTtEYz1IKCJyZWFjdC5mb3J3YXJkX3JlZiIpO01iPUgoInJlYWN0LnN1c3BlbnNlIik7Q2M9SCgicmVhY3Quc3VzcGVuc2VfbGlzdCIpO0VjPUgoInJlYWN0Lm1lbW8iKTtMZD1IKCJyZWFjdC5sYXp5Iik7S2Q9SCgicmVhY3QuYmxvY2siKTtIKCJyZWFjdC5zY29wZSIpO3RlPUgoInJlYWN0Lm9wYXF1ZS5pZCIpO2VpPUgoInJlYWN0LmRlYnVnX3RyYWNlX21vZGUiKTtvZj1IKCJyZWFjdC5vZmZzY3JlZW4iKTtwZj1IKCJyZWFjdC5sZWdhY3lfaGlkZGVuIil9dmFyIENmPSJmdW5jdGlvbiI9PT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3IsRmQsR2Q9ITEsQWQsS2g9ZnVuY3Rpb24oYSl7cmV0dXJuInVuZGVmaW5lZCIhPT0NCnR5cGVvZiBNU0FwcCYmTVNBcHAuZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24\/ZnVuY3Rpb24oYixjLGQsZSl7TVNBcHAuZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24oZnVuY3Rpb24oKXtyZXR1cm4gYShiLGMsZCxlKX0pfTphfShmdW5jdGlvbihhLGIpe2lmKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIhPT1hLm5hbWVzcGFjZVVSSXx8ImlubmVySFRNTCJpbiBhKWEuaW5uZXJIVE1MPWI7ZWxzZXtBZD1BZHx8ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7QWQuaW5uZXJIVE1MPSI8c3ZnPiIrYi52YWx1ZU9mKCkudG9TdHJpbmcoKSsiPC9zdmc+Ijtmb3IoYj1BZC5maXJzdENoaWxkO2EuZmlyc3RDaGlsZDspYS5yZW1vdmVDaGlsZChhLmZpcnN0Q2hpbGQpO2Zvcig7Yi5maXJzdENoaWxkOylhLmFwcGVuZENoaWxkKGIuZmlyc3RDaGlsZCl9fSkscWM9ZnVuY3Rpb24oYSxiKXtpZihiKXt2YXIgYz1hLmZpcnN0Q2hpbGQ7aWYoYyYmYz09PWEubGFzdENoaWxkJiYzPT09Yy5ub2RlVHlwZSl7Yy5ub2RlVmFsdWU9DQpiO3JldHVybn19YS50ZXh0Q29udGVudD1ifSxOYj17YW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6ITAsYm9yZGVySW1hZ2VPdXRzZXQ6ITAsYm9yZGVySW1hZ2VTbGljZTohMCxib3JkZXJJbWFnZVdpZHRoOiEwLGJveEZsZXg6ITAsYm94RmxleEdyb3VwOiEwLGJveE9yZGluYWxHcm91cDohMCxjb2x1bW5Db3VudDohMCxjb2x1bW5zOiEwLGZsZXg6ITAsZmxleEdyb3c6ITAsZmxleFBvc2l0aXZlOiEwLGZsZXhTaHJpbms6ITAsZmxleE5lZ2F0aXZlOiEwLGZsZXhPcmRlcjohMCxncmlkQXJlYTohMCxncmlkUm93OiEwLGdyaWRSb3dFbmQ6ITAsZ3JpZFJvd1NwYW46ITAsZ3JpZFJvd1N0YXJ0OiEwLGdyaWRDb2x1bW46ITAsZ3JpZENvbHVtbkVuZDohMCxncmlkQ29sdW1uU3BhbjohMCxncmlkQ29sdW1uU3RhcnQ6ITAsZm9udFdlaWdodDohMCxsaW5lQ2xhbXA6ITAsbGluZUhlaWdodDohMCxvcGFjaXR5OiEwLG9yZGVyOiEwLG9ycGhhbnM6ITAsdGFiU2l6ZTohMCx3aWRvd3M6ITAsekluZGV4OiEwLA0Kem9vbTohMCxmaWxsT3BhY2l0eTohMCxmbG9vZE9wYWNpdHk6ITAsc3RvcE9wYWNpdHk6ITAsc3Ryb2tlRGFzaGFycmF5OiEwLHN0cm9rZURhc2hvZmZzZXQ6ITAsc3Ryb2tlTWl0ZXJsaW1pdDohMCxzdHJva2VPcGFjaXR5OiEwLHN0cm9rZVdpZHRoOiEwfSxhaz1bIldlYmtpdCIsIm1zIiwiTW96IiwiTyJdO09iamVjdC5rZXlzKE5iKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2FrLmZvckVhY2goZnVuY3Rpb24oYil7Yj1iK2EuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrYS5zdWJzdHJpbmcoMSk7TmJbYl09TmJbYV19KX0pO3ZhciByaT1CKHttZW51aXRlbTohMH0se2FyZWE6ITAsYmFzZTohMCxicjohMCxjb2w6ITAsZW1iZWQ6ITAsaHI6ITAsaW1nOiEwLGlucHV0OiEwLGtleWdlbjohMCxsaW5rOiEwLG1ldGE6ITAscGFyYW06ITAsc291cmNlOiEwLHRyYWNrOiEwLHdicjohMH0pLFZkPW51bGwsamI9bnVsbCxrYj1udWxsLGxlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEoYil9LGVnPWZ1bmN0aW9uKGEsDQpiLGMsZCxlKXtyZXR1cm4gYShiLGMsZCxlKX0sWGQ9ZnVuY3Rpb24oKXt9LFJmPWxlLFhhPSExLFlkPSExLHBlPSExO2lmKG9hKXRyeXt2YXIgeGM9e307T2JqZWN0LmRlZmluZVByb3BlcnR5KHhjLCJwYXNzaXZlIix7Z2V0OmZ1bmN0aW9uKCl7cGU9ITB9fSk7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInRlc3QiLHhjLHhjKTt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigidGVzdCIseGMseGMpfWNhdGNoKGEpe3BlPSExfXZhciB1aT1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGgsayl7dmFyIGw9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDMpO3RyeXtiLmFwcGx5KGMsbCl9Y2F0Y2goRGEpe3RoaXMub25FcnJvcihEYSl9fSxRYj0hMSxJYz1udWxsLEpjPSExLFpkPW51bGwsdmk9e29uRXJyb3I6ZnVuY3Rpb24oYSl7UWI9ITA7SWM9YX19LGNhPWhhLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELlNjaGVkdWxlciwNCmJrPWNhLnVuc3RhYmxlX2NhbmNlbENhbGxiYWNrLEJkPWNhLnVuc3RhYmxlX25vdyxaZj1jYS51bnN0YWJsZV9zY2hlZHVsZUNhbGxiYWNrLGNrPWNhLnVuc3RhYmxlX3Nob3VsZFlpZWxkLGhpPWNhLnVuc3RhYmxlX3JlcXVlc3RQYWludCxhZT1jYS51bnN0YWJsZV9ydW5XaXRoUHJpb3JpdHksZGs9Y2EudW5zdGFibGVfZ2V0Q3VycmVudFByaW9yaXR5TGV2ZWwsZWs9Y2EudW5zdGFibGVfSW1tZWRpYXRlUHJpb3JpdHksaWk9Y2EudW5zdGFibGVfVXNlckJsb2NraW5nUHJpb3JpdHksJGY9Y2EudW5zdGFibGVfTm9ybWFsUHJpb3JpdHksZms9Y2EudW5zdGFibGVfTG93UHJpb3JpdHksZ2s9Y2EudW5zdGFibGVfSWRsZVByaW9yaXR5LGNlPSExLGlhPVtdLHlhPW51bGwsemE9bnVsbCxBYT1udWxsLFJiPW5ldyBNYXAsU2I9bmV3IE1hcCxWYj1bXSxmZz0ibW91c2Vkb3duIG1vdXNldXAgdG91Y2hjYW5jZWwgdG91Y2hlbmQgdG91Y2hzdGFydCBhdXhjbGljayBkYmxjbGljayBwb2ludGVyY2FuY2VsIHBvaW50ZXJkb3duIHBvaW50ZXJ1cCBkcmFnZW5kIGRyYWdzdGFydCBkcm9wIGNvbXBvc2l0aW9uZW5kIGNvbXBvc2l0aW9uc3RhcnQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBpbnB1dCB0ZXh0SW5wdXQgY29weSBjdXQgcGFzdGUgY2xpY2sgY2hhbmdlIGNvbnRleHRtZW51IHJlc2V0IHN1Ym1pdCIuc3BsaXQoIiAiKSwNCmxiPXthbmltYXRpb25lbmQ6TGMoIkFuaW1hdGlvbiIsIkFuaW1hdGlvbkVuZCIpLGFuaW1hdGlvbml0ZXJhdGlvbjpMYygiQW5pbWF0aW9uIiwiQW5pbWF0aW9uSXRlcmF0aW9uIiksYW5pbWF0aW9uc3RhcnQ6TGMoIkFuaW1hdGlvbiIsIkFuaW1hdGlvblN0YXJ0IiksdHJhbnNpdGlvbmVuZDpMYygiVHJhbnNpdGlvbiIsIlRyYW5zaXRpb25FbmQiKX0sZGU9e30sYmc9e307b2EmJihiZz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKS5zdHlsZSwiQW5pbWF0aW9uRXZlbnQiaW4gd2luZG93fHwoZGVsZXRlIGxiLmFuaW1hdGlvbmVuZC5hbmltYXRpb24sZGVsZXRlIGxiLmFuaW1hdGlvbml0ZXJhdGlvbi5hbmltYXRpb24sZGVsZXRlIGxiLmFuaW1hdGlvbnN0YXJ0LmFuaW1hdGlvbiksIlRyYW5zaXRpb25FdmVudCJpbiB3aW5kb3d8fGRlbGV0ZSBsYi50cmFuc2l0aW9uZW5kLnRyYW5zaXRpb24pO3ZhciBHZz1NYygiYW5pbWF0aW9uZW5kIiksSGc9TWMoImFuaW1hdGlvbml0ZXJhdGlvbiIpLA0KSWc9TWMoImFuaW1hdGlvbnN0YXJ0IiksSmc9TWMoInRyYW5zaXRpb25lbmQiKSxjZz1uZXcgTWFwLGZlPW5ldyBNYXAsaGs9WyJhYm9ydCIsImFib3J0IixHZywiYW5pbWF0aW9uRW5kIixIZywiYW5pbWF0aW9uSXRlcmF0aW9uIixJZywiYW5pbWF0aW9uU3RhcnQiLCJjYW5wbGF5IiwiY2FuUGxheSIsImNhbnBsYXl0aHJvdWdoIiwiY2FuUGxheVRocm91Z2giLCJkdXJhdGlvbmNoYW5nZSIsImR1cmF0aW9uQ2hhbmdlIiwiZW1wdGllZCIsImVtcHRpZWQiLCJlbmNyeXB0ZWQiLCJlbmNyeXB0ZWQiLCJlbmRlZCIsImVuZGVkIiwiZXJyb3IiLCJlcnJvciIsImdvdHBvaW50ZXJjYXB0dXJlIiwiZ290UG9pbnRlckNhcHR1cmUiLCJsb2FkIiwibG9hZCIsImxvYWRlZGRhdGEiLCJsb2FkZWREYXRhIiwibG9hZGVkbWV0YWRhdGEiLCJsb2FkZWRNZXRhZGF0YSIsImxvYWRzdGFydCIsImxvYWRTdGFydCIsImxvc3Rwb2ludGVyY2FwdHVyZSIsImxvc3RQb2ludGVyQ2FwdHVyZSIsInBsYXlpbmciLA0KInBsYXlpbmciLCJwcm9ncmVzcyIsInByb2dyZXNzIiwic2Vla2luZyIsInNlZWtpbmciLCJzdGFsbGVkIiwic3RhbGxlZCIsInN1c3BlbmQiLCJzdXNwZW5kIiwidGltZXVwZGF0ZSIsInRpbWVVcGRhdGUiLEpnLCJ0cmFuc2l0aW9uRW5kIiwid2FpdGluZyIsIndhaXRpbmciXTtCZCgpO3ZhciB3PTgsQmE9TWF0aC5jbHozMj9NYXRoLmNsejMyOkdpLEhpPU1hdGgubG9nLElpPU1hdGguTE4yLE1pPWlpLExpPWFlLFBjPSEwLENhPW51bGwsaGU9bnVsbCxRYz1udWxsLEhiPXtldmVudFBoYXNlOjAsYnViYmxlczowLGNhbmNlbGFibGU6MCx0aW1lU3RhbXA6ZnVuY3Rpb24oYSl7cmV0dXJuIGEudGltZVN0YW1wfHxEYXRlLm5vdygpfSxkZWZhdWx0UHJldmVudGVkOjAsaXNUcnVzdGVkOjB9LGtlPVYoSGIpLHljPUIoe30sSGIse3ZpZXc6MCxkZXRhaWw6MH0pLGdqPVYoeWMpLHZmLHdmLHpjLENkPUIoe30seWMse3NjcmVlblg6MCxzY3JlZW5ZOjAsY2xpZW50WDowLGNsaWVudFk6MCxwYWdlWDowLA0KcGFnZVk6MCxjdHJsS2V5OjAsc2hpZnRLZXk6MCxhbHRLZXk6MCxtZXRhS2V5OjAsZ2V0TW9kaWZpZXJTdGF0ZTppZSxidXR0b246MCxidXR0b25zOjAscmVsYXRlZFRhcmdldDpmdW5jdGlvbihhKXtyZXR1cm4gdm9pZCAwPT09YS5yZWxhdGVkVGFyZ2V0P2EuZnJvbUVsZW1lbnQ9PT1hLnNyY0VsZW1lbnQ\/YS50b0VsZW1lbnQ6YS5mcm9tRWxlbWVudDphLnJlbGF0ZWRUYXJnZXR9LG1vdmVtZW50WDpmdW5jdGlvbihhKXtpZigibW92ZW1lbnRYImluIGEpcmV0dXJuIGEubW92ZW1lbnRYO2EhPT16YyYmKHpjJiYibW91c2Vtb3ZlIj09PWEudHlwZT8odmY9YS5zY3JlZW5YLXpjLnNjcmVlblgsd2Y9YS5zY3JlZW5ZLXpjLnNjcmVlblkpOndmPXZmPTAsemM9YSk7cmV0dXJuIHZmfSxtb3ZlbWVudFk6ZnVuY3Rpb24oYSl7cmV0dXJuIm1vdmVtZW50WSJpbiBhP2EubW92ZW1lbnRZOndmfX0pLEZnPVYoQ2QpLGlrPUIoe30sQ2Qse2RhdGFUcmFuc2ZlcjowfSksY2o9Vihpayksams9Qih7fSwNCnljLHtyZWxhdGVkVGFyZ2V0OjB9KSxxZT1WKGprKSxraz1CKHt9LEhiLHthbmltYXRpb25OYW1lOjAsZWxhcHNlZFRpbWU6MCxwc2V1ZG9FbGVtZW50OjB9KSxlaj1WKGtrKSxsaz1CKHt9LEhiLHtjbGlwYm9hcmREYXRhOmZ1bmN0aW9uKGEpe3JldHVybiJjbGlwYm9hcmREYXRhImluIGE\/YS5jbGlwYm9hcmREYXRhOndpbmRvdy5jbGlwYm9hcmREYXRhfX0pLGlqPVYobGspLG1rPUIoe30sSGIse2RhdGE6MH0pLE5nPVYobWspLGxqPU5nLG5rPXtFc2M6IkVzY2FwZSIsU3BhY2ViYXI6IiAiLExlZnQ6IkFycm93TGVmdCIsVXA6IkFycm93VXAiLFJpZ2h0OiJBcnJvd1JpZ2h0IixEb3duOiJBcnJvd0Rvd24iLERlbDoiRGVsZXRlIixXaW46Ik9TIixNZW51OiJDb250ZXh0TWVudSIsQXBwczoiQ29udGV4dE1lbnUiLFNjcm9sbDoiU2Nyb2xsTG9jayIsTW96UHJpbnRhYmxlS2V5OiJVbmlkZW50aWZpZWQifSxvaz17ODoiQmFja3NwYWNlIiw5OiJUYWIiLDEyOiJDbGVhciIsMTM6IkVudGVyIiwNCjE2OiJTaGlmdCIsMTc6IkNvbnRyb2wiLDE4OiJBbHQiLDE5OiJQYXVzZSIsMjA6IkNhcHNMb2NrIiwyNzoiRXNjYXBlIiwzMjoiICIsMzM6IlBhZ2VVcCIsMzQ6IlBhZ2VEb3duIiwzNToiRW5kIiwzNjoiSG9tZSIsMzc6IkFycm93TGVmdCIsMzg6IkFycm93VXAiLDM5OiJBcnJvd1JpZ2h0Iiw0MDoiQXJyb3dEb3duIiw0NToiSW5zZXJ0Iiw0NjoiRGVsZXRlIiwxMTI6IkYxIiwxMTM6IkYyIiwxMTQ6IkYzIiwxMTU6IkY0IiwxMTY6IkY1IiwxMTc6IkY2IiwxMTg6IkY3IiwxMTk6IkY4IiwxMjA6IkY5IiwxMjE6IkYxMCIsMTIyOiJGMTEiLDEyMzoiRjEyIiwxNDQ6Ik51bUxvY2siLDE0NToiU2Nyb2xsTG9jayIsMjI0OiJNZXRhIn0sT2k9e0FsdDoiYWx0S2V5IixDb250cm9sOiJjdHJsS2V5IixNZXRhOiJtZXRhS2V5IixTaGlmdDoic2hpZnRLZXkifSxwaz1CKHt9LHljLHtrZXk6ZnVuY3Rpb24oYSl7aWYoYS5rZXkpe3ZhciBiPW5rW2Eua2V5XXx8YS5rZXk7aWYoIlVuaWRlbnRpZmllZCIhPT0NCmIpcmV0dXJuIGJ9cmV0dXJuImtleXByZXNzIj09PWEudHlwZT8oYT1SYyhhKSwxMz09PWE\/IkVudGVyIjpTdHJpbmcuZnJvbUNoYXJDb2RlKGEpKToia2V5ZG93biI9PT1hLnR5cGV8fCJrZXl1cCI9PT1hLnR5cGU\/b2tbYS5rZXlDb2RlXXx8IlVuaWRlbnRpZmllZCI6IiJ9LGNvZGU6MCxsb2NhdGlvbjowLGN0cmxLZXk6MCxzaGlmdEtleTowLGFsdEtleTowLG1ldGFLZXk6MCxyZXBlYXQ6MCxsb2NhbGU6MCxnZXRNb2RpZmllclN0YXRlOmllLGNoYXJDb2RlOmZ1bmN0aW9uKGEpe3JldHVybiJrZXlwcmVzcyI9PT1hLnR5cGU\/UmMoYSk6MH0sa2V5Q29kZTpmdW5jdGlvbihhKXtyZXR1cm4ia2V5ZG93biI9PT1hLnR5cGV8fCJrZXl1cCI9PT1hLnR5cGU\/YS5rZXlDb2RlOjB9LHdoaWNoOmZ1bmN0aW9uKGEpe3JldHVybiJrZXlwcmVzcyI9PT1hLnR5cGU\/UmMoYSk6ImtleWRvd24iPT09YS50eXBlfHwia2V5dXAiPT09YS50eXBlP2Eua2V5Q29kZTowfX0pLGJqPVYocGspLHFrPUIoe30sDQpDZCx7cG9pbnRlcklkOjAsd2lkdGg6MCxoZWlnaHQ6MCxwcmVzc3VyZTowLHRhbmdlbnRpYWxQcmVzc3VyZTowLHRpbHRYOjAsdGlsdFk6MCx0d2lzdDowLHBvaW50ZXJUeXBlOjAsaXNQcmltYXJ5OjB9KSxLZz1WKHFrKSxyaz1CKHt9LHljLHt0b3VjaGVzOjAsdGFyZ2V0VG91Y2hlczowLGNoYW5nZWRUb3VjaGVzOjAsYWx0S2V5OjAsbWV0YUtleTowLGN0cmxLZXk6MCxzaGlmdEtleTowLGdldE1vZGlmaWVyU3RhdGU6aWV9KSxkaj1WKHJrKSxzaz1CKHt9LEhiLHtwcm9wZXJ0eU5hbWU6MCxlbGFwc2VkVGltZTowLHBzZXVkb0VsZW1lbnQ6MH0pLGZqPVYoc2spLHRrPUIoe30sQ2Qse2RlbHRhWDpmdW5jdGlvbihhKXtyZXR1cm4iZGVsdGFYImluIGE\/YS5kZWx0YVg6IndoZWVsRGVsdGFYImluIGE\/LWEud2hlZWxEZWx0YVg6MH0sZGVsdGFZOmZ1bmN0aW9uKGEpe3JldHVybiJkZWx0YVkiaW4gYT9hLmRlbHRhWToid2hlZWxEZWx0YVkiaW4gYT8tYS53aGVlbERlbHRhWToid2hlZWxEZWx0YSJpbg0KYT8tYS53aGVlbERlbHRhOjB9LGRlbHRhWjowLGRlbHRhTW9kZTowfSksaGo9Vih0ayksUGk9WzksMTMsMjcsMzJdLGplPW9hJiYiQ29tcG9zaXRpb25FdmVudCJpbiB3aW5kb3csQWM9bnVsbDtvYSYmImRvY3VtZW50TW9kZSJpbiBkb2N1bWVudCYmKEFjPWRvY3VtZW50LmRvY3VtZW50TW9kZSk7dmFyIGtqPW9hJiYiVGV4dEV2ZW50ImluIHdpbmRvdyYmIUFjLG5nPW9hJiYoIWplfHxBYyYmODxBYyYmMTE+PUFjKSxtZz1TdHJpbmcuZnJvbUNoYXJDb2RlKDMyKSxsZz0hMSxvYj0hMSxTaT17Y29sb3I6ITAsZGF0ZTohMCxkYXRldGltZTohMCwiZGF0ZXRpbWUtbG9jYWwiOiEwLGVtYWlsOiEwLG1vbnRoOiEwLG51bWJlcjohMCxwYXNzd29yZDohMCxyYW5nZTohMCxzZWFyY2g6ITAsdGVsOiEwLHRleHQ6ITAsdGltZTohMCx1cmw6ITAsd2VlazohMH0sWGI9bnVsbCxZYj1udWxsLE1nPSExO29hJiYoTWc9VGkoImlucHV0IikmJighZG9jdW1lbnQuZG9jdW1lbnRNb2RlfHw5PGRvY3VtZW50LmRvY3VtZW50TW9kZSkpOw0KdmFyIFg9ImZ1bmN0aW9uIj09PXR5cGVvZiBPYmplY3QuaXM\/T2JqZWN0LmlzOiRpLGFqPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksamo9b2EmJiJkb2N1bWVudE1vZGUiaW4gZG9jdW1lbnQmJjExPj1kb2N1bWVudC5kb2N1bWVudE1vZGUscWI9bnVsbCxvZT1udWxsLCRiPW51bGwsbmU9ITE7ZWUoImNhbmNlbCBjYW5jZWwgY2xpY2sgY2xpY2sgY2xvc2UgY2xvc2UgY29udGV4dG1lbnUgY29udGV4dE1lbnUgY29weSBjb3B5IGN1dCBjdXQgYXV4Y2xpY2sgYXV4Q2xpY2sgZGJsY2xpY2sgZG91YmxlQ2xpY2sgZHJhZ2VuZCBkcmFnRW5kIGRyYWdzdGFydCBkcmFnU3RhcnQgZHJvcCBkcm9wIGZvY3VzaW4gZm9jdXMgZm9jdXNvdXQgYmx1ciBpbnB1dCBpbnB1dCBpbnZhbGlkIGludmFsaWQga2V5ZG93biBrZXlEb3duIGtleXByZXNzIGtleVByZXNzIGtleXVwIGtleVVwIG1vdXNlZG93biBtb3VzZURvd24gbW91c2V1cCBtb3VzZVVwIHBhc3RlIHBhc3RlIHBhdXNlIHBhdXNlIHBsYXkgcGxheSBwb2ludGVyY2FuY2VsIHBvaW50ZXJDYW5jZWwgcG9pbnRlcmRvd24gcG9pbnRlckRvd24gcG9pbnRlcnVwIHBvaW50ZXJVcCByYXRlY2hhbmdlIHJhdGVDaGFuZ2UgcmVzZXQgcmVzZXQgc2Vla2VkIHNlZWtlZCBzdWJtaXQgc3VibWl0IHRvdWNoY2FuY2VsIHRvdWNoQ2FuY2VsIHRvdWNoZW5kIHRvdWNoRW5kIHRvdWNoc3RhcnQgdG91Y2hTdGFydCB2b2x1bWVjaGFuZ2Ugdm9sdW1lQ2hhbmdlIi5zcGxpdCgiICIpLA0KMCk7ZWUoImRyYWcgZHJhZyBkcmFnZW50ZXIgZHJhZ0VudGVyIGRyYWdleGl0IGRyYWdFeGl0IGRyYWdsZWF2ZSBkcmFnTGVhdmUgZHJhZ292ZXIgZHJhZ092ZXIgbW91c2Vtb3ZlIG1vdXNlTW92ZSBtb3VzZW91dCBtb3VzZU91dCBtb3VzZW92ZXIgbW91c2VPdmVyIHBvaW50ZXJtb3ZlIHBvaW50ZXJNb3ZlIHBvaW50ZXJvdXQgcG9pbnRlck91dCBwb2ludGVyb3ZlciBwb2ludGVyT3ZlciBzY3JvbGwgc2Nyb2xsIHRvZ2dsZSB0b2dnbGUgdG91Y2htb3ZlIHRvdWNoTW92ZSB3aGVlbCB3aGVlbCIuc3BsaXQoIiAiKSwxKTtlZShoaywyKTsoZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKylmZS5zZXQoYVtjXSxiKX0pKCJjaGFuZ2Ugc2VsZWN0aW9uY2hhbmdlIHRleHRJbnB1dCBjb21wb3NpdGlvbnN0YXJ0IGNvbXBvc2l0aW9uZW5kIGNvbXBvc2l0aW9udXBkYXRlIi5zcGxpdCgiICIpLDApO2diKCJvbk1vdXNlRW50ZXIiLFsibW91c2VvdXQiLCJtb3VzZW92ZXIiXSk7DQpnYigib25Nb3VzZUxlYXZlIixbIm1vdXNlb3V0IiwibW91c2VvdmVyIl0pO2diKCJvblBvaW50ZXJFbnRlciIsWyJwb2ludGVyb3V0IiwicG9pbnRlcm92ZXIiXSk7Z2IoIm9uUG9pbnRlckxlYXZlIixbInBvaW50ZXJvdXQiLCJwb2ludGVyb3ZlciJdKTtUYSgib25DaGFuZ2UiLCJjaGFuZ2UgY2xpY2sgZm9jdXNpbiBmb2N1c291dCBpbnB1dCBrZXlkb3duIGtleXVwIHNlbGVjdGlvbmNoYW5nZSIuc3BsaXQoIiAiKSk7VGEoIm9uU2VsZWN0IiwiZm9jdXNvdXQgY29udGV4dG1lbnUgZHJhZ2VuZCBmb2N1c2luIGtleWRvd24ga2V5dXAgbW91c2Vkb3duIG1vdXNldXAgc2VsZWN0aW9uY2hhbmdlIi5zcGxpdCgiICIpKTtUYSgib25CZWZvcmVJbnB1dCIsWyJjb21wb3NpdGlvbmVuZCIsImtleXByZXNzIiwidGV4dElucHV0IiwicGFzdGUiXSk7VGEoIm9uQ29tcG9zaXRpb25FbmQiLCJjb21wb3NpdGlvbmVuZCBmb2N1c291dCBrZXlkb3duIGtleXByZXNzIGtleXVwIG1vdXNlZG93biIuc3BsaXQoIiAiKSk7DQpUYSgib25Db21wb3NpdGlvblN0YXJ0IiwiY29tcG9zaXRpb25zdGFydCBmb2N1c291dCBrZXlkb3duIGtleXByZXNzIGtleXVwIG1vdXNlZG93biIuc3BsaXQoIiAiKSk7VGEoIm9uQ29tcG9zaXRpb25VcGRhdGUiLCJjb21wb3NpdGlvbnVwZGF0ZSBmb2N1c291dCBrZXlkb3duIGtleXByZXNzIGtleXVwIG1vdXNlZG93biIuc3BsaXQoIiAiKSk7dmFyIHBjPSJhYm9ydCBjYW5wbGF5IGNhbnBsYXl0aHJvdWdoIGR1cmF0aW9uY2hhbmdlIGVtcHRpZWQgZW5jcnlwdGVkIGVuZGVkIGVycm9yIGxvYWRlZGRhdGEgbG9hZGVkbWV0YWRhdGEgbG9hZHN0YXJ0IHBhdXNlIHBsYXkgcGxheWluZyBwcm9ncmVzcyByYXRlY2hhbmdlIHNlZWtlZCBzZWVraW5nIHN0YWxsZWQgc3VzcGVuZCB0aW1ldXBkYXRlIHZvbHVtZWNoYW5nZSB3YWl0aW5nIi5zcGxpdCgiICIpLERnPW5ldyBTZXQoImNhbmNlbCBjbG9zZSBpbnZhbGlkIGxvYWQgc2Nyb2xsIHRvZ2dsZSIuc3BsaXQoIiAiKS5jb25jYXQocGMpKSwNCkNnPSJfcmVhY3RMaXN0ZW5pbmciK01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpLGtmPW51bGwsbGY9bnVsbCxaaD0iZnVuY3Rpb24iPT09dHlwZW9mIHNldFRpbWVvdXQ\/c2V0VGltZW91dDp2b2lkIDAsSmo9ImZ1bmN0aW9uIj09PXR5cGVvZiBjbGVhclRpbWVvdXQ\/Y2xlYXJUaW1lb3V0OnZvaWQgMCx4Zj0wLERkPU1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpLEZhPSJfX3JlYWN0RmliZXIkIitEZCxXYz0iX19yZWFjdFByb3BzJCIrRGQscmI9Il9fcmVhY3RDb250YWluZXIkIitEZCxRZz0iX19yZWFjdEV2ZW50cyQiK0RkLHVlPVtdLHViPS0xLEhhPXt9LEQ9R2EoSGEpLEo9R2EoITEpLFlhPUhhLFplPW51bGwsZGI9bnVsbCxvaj1hZSx2ZT1aZix3ZT1iayxuaj1kayxZYz1layxVZz1paSxWZz0kZixXZz1mayxYZz1nayxnZj17fSxOaj1jayxSaj12b2lkIDAhPT1oaT9oaTpmdW5jdGlvbigpe30scGE9bnVsbCxaYz1udWxsLHhlPSExLGppPUJkKCksDQpQPTFFND5qaT9CZDpmdW5jdGlvbigpe3JldHVybiBCZCgpLWppfSxGaj1mYi5SZWFjdEN1cnJlbnRCYXRjaENvbmZpZyxiZD1HYShudWxsKSxhZD1udWxsLHhiPW51bGwsJGM9bnVsbCxLYT0hMSxnaD0obmV3IGhhLkNvbXBvbmVudCkucmVmcyxkZD17aXNNb3VudGVkOmZ1bmN0aW9uKGEpe3JldHVybihhPWEuX3JlYWN0SW50ZXJuYWxzKT9WYShhKT09PWE6ITF9LGVucXVldWVTZXRTdGF0ZTpmdW5jdGlvbihhLGIsYyl7YT1hLl9yZWFjdEludGVybmFsczt2YXIgZD1XKCksZT1PYShhKSxmPUlhKGQsZSk7Zi5wYXlsb2FkPWI7dm9pZCAwIT09YyYmbnVsbCE9PWMmJihmLmNhbGxiYWNrPWMpO0phKGEsZik7UGEoYSxlLGQpfSxlbnF1ZXVlUmVwbGFjZVN0YXRlOmZ1bmN0aW9uKGEsYixjKXthPWEuX3JlYWN0SW50ZXJuYWxzO3ZhciBkPVcoKSxlPU9hKGEpLGY9SWEoZCxlKTtmLnRhZz0xO2YucGF5bG9hZD1iO3ZvaWQgMCE9PWMmJm51bGwhPT1jJiYoZi5jYWxsYmFjaz1jKTtKYShhLGYpOw0KUGEoYSxlLGQpfSxlbnF1ZXVlRm9yY2VVcGRhdGU6ZnVuY3Rpb24oYSxiKXthPWEuX3JlYWN0SW50ZXJuYWxzO3ZhciBjPVcoKSxkPU9hKGEpLGU9SWEoYyxkKTtlLnRhZz0yO3ZvaWQgMCE9PWImJm51bGwhPT1iJiYoZS5jYWxsYmFjaz1iKTtKYShhLGUpO1BhKGEsZCxjKX19LGdkPUFycmF5LmlzQXJyYXksb2Q9aGgoITApLHdoPWhoKCExKSxmYz17fSxrYT1HYShmYyksaGM9R2EoZmMpLGdjPUdhKGZjKSxFPUdhKDApLHJhPW51bGwsTmE9bnVsbCxsYT0hMSxCYj1bXSxqYz1mYi5SZWFjdEN1cnJlbnREaXNwYXRjaGVyLGFhPWZiLlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnLGljPTAseT1udWxsLE49bnVsbCxLPW51bGwsa2Q9ITEsa2M9ITEsamQ9e3JlYWRDb250ZXh0OlksdXNlQ2FsbGJhY2s6VCx1c2VDb250ZXh0OlQsdXNlRWZmZWN0OlQsdXNlSW1wZXJhdGl2ZUhhbmRsZTpULHVzZUxheW91dEVmZmVjdDpULHVzZU1lbW86VCx1c2VSZWR1Y2VyOlQsdXNlUmVmOlQsdXNlU3RhdGU6VCwNCnVzZURlYnVnVmFsdWU6VCx1c2VEZWZlcnJlZFZhbHVlOlQsdXNlVHJhbnNpdGlvbjpULHVzZU11dGFibGVTb3VyY2U6VCx1c2VPcGFxdWVJZGVudGlmaWVyOlQsdW5zdGFibGVfaXNOZXdSZWNvbmNpbGVyOiExfSxwaj17cmVhZENvbnRleHQ6WSx1c2VDYWxsYmFjazpmdW5jdGlvbihhLGIpe2FiKCkubWVtb2l6ZWRTdGF0ZT1bYSx2b2lkIDA9PT1iP251bGw6Yl07cmV0dXJuIGF9LHVzZUNvbnRleHQ6WSx1c2VFZmZlY3Q6cWgsdXNlSW1wZXJhdGl2ZUhhbmRsZTpmdW5jdGlvbihhLGIsYyl7Yz1udWxsIT09YyYmdm9pZCAwIT09Yz9jLmNvbmNhdChbYV0pOm51bGw7cmV0dXJuIE1lKDQsMixzaC5iaW5kKG51bGwsYixhKSxjKX0sdXNlTGF5b3V0RWZmZWN0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIE1lKDQsMixhLGIpfSx1c2VNZW1vOmZ1bmN0aW9uKGEsYil7dmFyIGM9YWIoKTtiPXZvaWQgMD09PWI\/bnVsbDpiO2E9YSgpO2MubWVtb2l6ZWRTdGF0ZT1bYSxiXTtyZXR1cm4gYX0sdXNlUmVkdWNlcjpmdW5jdGlvbihhLA0KYixjKXt2YXIgZD1hYigpO2I9dm9pZCAwIT09Yz9jKGIpOmI7ZC5tZW1vaXplZFN0YXRlPWQuYmFzZVN0YXRlPWI7YT1kLnF1ZXVlPXtwZW5kaW5nOm51bGwsZGlzcGF0Y2g6bnVsbCxsYXN0UmVuZGVyZWRSZWR1Y2VyOmEsbGFzdFJlbmRlcmVkU3RhdGU6Yn07YT1hLmRpc3BhdGNoPUxlLmJpbmQobnVsbCx5LGEpO3JldHVybltkLm1lbW9pemVkU3RhdGUsYV19LHVzZVJlZjpwaCx1c2VTdGF0ZTpuYyx1c2VEZWJ1Z1ZhbHVlOk9lLHVzZURlZmVycmVkVmFsdWU6ZnVuY3Rpb24oYSl7dmFyIGI9bmMoYSksYz1iWzBdLGQ9YlsxXTtxaChmdW5jdGlvbigpe3ZhciBiPWFhLnRyYW5zaXRpb247YWEudHJhbnNpdGlvbj0xO3RyeXtkKGEpfWZpbmFsbHl7YWEudHJhbnNpdGlvbj1ifX0sW2FdKTtyZXR1cm4gY30sdXNlVHJhbnNpdGlvbjpmdW5jdGlvbigpe3ZhciBhPW5jKCExKSxiPWFbMF07YT1zai5iaW5kKG51bGwsYVsxXSk7cGgoYSk7cmV0dXJuW2EsYl19LHVzZU11dGFibGVTb3VyY2U6ZnVuY3Rpb24oYSwNCmIsYyl7dmFyIGQ9YWIoKTtkLm1lbW9pemVkU3RhdGU9e3JlZnM6e2dldFNuYXBzaG90OmIsc2V0U25hcHNob3Q6bnVsbH0sc291cmNlOmEsc3Vic2NyaWJlOmN9O3JldHVybiBuaChkLGEsYixjKX0sdXNlT3BhcXVlSWRlbnRpZmllcjpmdW5jdGlvbigpe2lmKGxhKXt2YXIgYT0hMSxiPW1qKGZ1bmN0aW9uKCl7YXx8KGE9ITAsYygicjoiKyh4ZisrKS50b1N0cmluZygzNikpKTt0aHJvdyBFcnJvcihtKDM1NSkpO30pLGM9bmMoYilbMV07MD09PSh5Lm1vZGUmMikmJih5LmZsYWdzfD01MTYsbGQoNSxmdW5jdGlvbigpe2MoInI6IisoeGYrKykudG9TdHJpbmcoMzYpKX0sdm9pZCAwLG51bGwpKTtyZXR1cm4gYn1iPSJyOiIrKHhmKyspLnRvU3RyaW5nKDM2KTtuYyhiKTtyZXR1cm4gYn0sdW5zdGFibGVfaXNOZXdSZWNvbmNpbGVyOiExfSxxaj17cmVhZENvbnRleHQ6WSx1c2VDYWxsYmFjazp1aCx1c2VDb250ZXh0OlksdXNlRWZmZWN0Om5kLHVzZUltcGVyYXRpdmVIYW5kbGU6dGgsdXNlTGF5b3V0RWZmZWN0OnJoLA0KdXNlTWVtbzp2aCx1c2VSZWR1Y2VyOmxjLHVzZVJlZjptZCx1c2VTdGF0ZTpmdW5jdGlvbihhKXtyZXR1cm4gbGMobWEpfSx1c2VEZWJ1Z1ZhbHVlOk9lLHVzZURlZmVycmVkVmFsdWU6ZnVuY3Rpb24oYSl7dmFyIGI9bGMobWEpLGM9YlswXSxkPWJbMV07bmQoZnVuY3Rpb24oKXt2YXIgYj1hYS50cmFuc2l0aW9uO2FhLnRyYW5zaXRpb249MTt0cnl7ZChhKX1maW5hbGx5e2FhLnRyYW5zaXRpb249Yn19LFthXSk7cmV0dXJuIGN9LHVzZVRyYW5zaXRpb246ZnVuY3Rpb24oKXt2YXIgYT1sYyhtYSlbMF07cmV0dXJuW21kKCkuY3VycmVudCxhXX0sdXNlTXV0YWJsZVNvdXJjZTpvaCx1c2VPcGFxdWVJZGVudGlmaWVyOmZ1bmN0aW9uKCl7cmV0dXJuIGxjKG1hKVswXX0sdW5zdGFibGVfaXNOZXdSZWNvbmNpbGVyOiExfSxyaj17cmVhZENvbnRleHQ6WSx1c2VDYWxsYmFjazp1aCx1c2VDb250ZXh0OlksdXNlRWZmZWN0Om5kLHVzZUltcGVyYXRpdmVIYW5kbGU6dGgsdXNlTGF5b3V0RWZmZWN0OnJoLA0KdXNlTWVtbzp2aCx1c2VSZWR1Y2VyOm1jLHVzZVJlZjptZCx1c2VTdGF0ZTpmdW5jdGlvbihhKXtyZXR1cm4gbWMobWEpfSx1c2VEZWJ1Z1ZhbHVlOk9lLHVzZURlZmVycmVkVmFsdWU6ZnVuY3Rpb24oYSl7dmFyIGI9bWMobWEpLGM9YlswXSxkPWJbMV07bmQoZnVuY3Rpb24oKXt2YXIgYj1hYS50cmFuc2l0aW9uO2FhLnRyYW5zaXRpb249MTt0cnl7ZChhKX1maW5hbGx5e2FhLnRyYW5zaXRpb249Yn19LFthXSk7cmV0dXJuIGN9LHVzZVRyYW5zaXRpb246ZnVuY3Rpb24oKXt2YXIgYT1tYyhtYSlbMF07cmV0dXJuW21kKCkuY3VycmVudCxhXX0sdXNlTXV0YWJsZVNvdXJjZTpvaCx1c2VPcGFxdWVJZGVudGlmaWVyOmZ1bmN0aW9uKCl7cmV0dXJuIG1jKG1hKVswXX0sdW5zdGFibGVfaXNOZXdSZWNvbmNpbGVyOiExfSx0aj1mYi5SZWFjdEN1cnJlbnRPd25lcixmYT0hMSxxZD17ZGVoeWRyYXRlZDpudWxsLHJldHJ5TGFuZTowfTt2YXIgd2o9ZnVuY3Rpb24oYSxiLGMsZCl7Zm9yKGM9DQpiLmNoaWxkO251bGwhPT1jOyl7aWYoNT09PWMudGFnfHw2PT09Yy50YWcpYS5hcHBlbmRDaGlsZChjLnN0YXRlTm9kZSk7ZWxzZSBpZig0IT09Yy50YWcmJm51bGwhPT1jLmNoaWxkKXtjLmNoaWxkLnJldHVybj1jO2M9Yy5jaGlsZDtjb250aW51ZX1pZihjPT09YilicmVhaztmb3IoO251bGw9PT1jLnNpYmxpbmc7KXtpZihudWxsPT09Yy5yZXR1cm58fGMucmV0dXJuPT09YilyZXR1cm47Yz1jLnJldHVybn1jLnNpYmxpbmcucmV0dXJuPWMucmV0dXJuO2M9Yy5zaWJsaW5nfX07dmFyIEpoPWZ1bmN0aW9uKGEpe307dmFyIHZqPWZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9YS5tZW1vaXplZFByb3BzO2lmKGYhPT1kKXthPWIuc3RhdGVOb2RlOyRhKGthLmN1cnJlbnQpO2U9bnVsbDtzd2l0Y2goYyl7Y2FzZSAiaW5wdXQiOmY9TWQoYSxmKTtkPU1kKGEsZCk7ZT1bXTticmVhaztjYXNlICJvcHRpb24iOmY9UGQoYSxmKTtkPVBkKGEsZCk7ZT1bXTticmVhaztjYXNlICJzZWxlY3QiOmY9DQpCKHt9LGYse3ZhbHVlOnZvaWQgMH0pO2Q9Qih7fSxkLHt2YWx1ZTp2b2lkIDB9KTtlPVtdO2JyZWFrO2Nhc2UgInRleHRhcmVhIjpmPVFkKGEsZik7ZD1RZChhLGQpO2U9W107YnJlYWs7ZGVmYXVsdDoiZnVuY3Rpb24iIT09dHlwZW9mIGYub25DbGljayYmImZ1bmN0aW9uIj09PXR5cGVvZiBkLm9uQ2xpY2smJihhLm9uY2xpY2s9VmMpfVNkKGMsZCk7dmFyIGc7Yz1udWxsO2ZvcihsIGluIGYpaWYoIWQuaGFzT3duUHJvcGVydHkobCkmJmYuaGFzT3duUHJvcGVydHkobCkmJm51bGwhPWZbbF0paWYoInN0eWxlIj09PWwpe3ZhciBoPWZbbF07Zm9yKGcgaW4gaCloLmhhc093blByb3BlcnR5KGcpJiYoY3x8KGM9e30pLGNbZ109IiIpfWVsc2UiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiIT09bCYmImNoaWxkcmVuIiE9PWwmJiJzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmciIT09bCYmInN1cHByZXNzSHlkcmF0aW9uV2FybmluZyIhPT1sJiYiYXV0b0ZvY3VzIiE9PWwmJihJYi5oYXNPd25Qcm9wZXJ0eShsKT8NCmV8fChlPVtdKTooZT1lfHxbXSkucHVzaChsLG51bGwpKTtmb3IobCBpbiBkKXt2YXIgaz1kW2xdO2g9bnVsbCE9Zj9mW2xdOnZvaWQgMDtpZihkLmhhc093blByb3BlcnR5KGwpJiZrIT09aCYmKG51bGwhPWt8fG51bGwhPWgpKWlmKCJzdHlsZSI9PT1sKWlmKGgpe2ZvcihnIGluIGgpIWguaGFzT3duUHJvcGVydHkoZyl8fGsmJmsuaGFzT3duUHJvcGVydHkoZyl8fChjfHwoYz17fSksY1tnXT0iIik7Zm9yKGcgaW4gaylrLmhhc093blByb3BlcnR5KGcpJiZoW2ddIT09a1tnXSYmKGN8fChjPXt9KSxjW2ddPWtbZ10pfWVsc2UgY3x8KGV8fChlPVtdKSxlLnB1c2gobCxjKSksYz1rO2Vsc2UiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiPT09bD8oaz1rP2suX19odG1sOnZvaWQgMCxoPWg\/aC5fX2h0bWw6dm9pZCAwLG51bGwhPWsmJmghPT1rJiYoZT1lfHxbXSkucHVzaChsLGspKToiY2hpbGRyZW4iPT09bD8ic3RyaW5nIiE9PXR5cGVvZiBrJiYibnVtYmVyIiE9PXR5cGVvZiBrfHwoZT0NCmV8fFtdKS5wdXNoKGwsIiIrayk6InN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZyIhPT1sJiYic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nIiE9PWwmJihJYi5oYXNPd25Qcm9wZXJ0eShsKT8obnVsbCE9ayYmIm9uU2Nyb2xsIj09PWwmJnooInNjcm9sbCIsYSksZXx8aD09PWt8fChlPVtdKSk6Im9iamVjdCI9PT10eXBlb2YgayYmbnVsbCE9PWsmJmsuJCR0eXBlb2Y9PT10ZT9rLnRvU3RyaW5nKCk6KGU9ZXx8W10pLnB1c2gobCxrKSl9YyYmKGU9ZXx8W10pLnB1c2goInN0eWxlIixjKTt2YXIgbD1lO2lmKGIudXBkYXRlUXVldWU9bCliLmZsYWdzfD00fX07dmFyIHhqPWZ1bmN0aW9uKGEsYixjLGQpe2MhPT1kJiYoYi5mbGFnc3w9NCl9O3ZhciBLaj0iZnVuY3Rpb24iPT09dHlwZW9mIFdlYWtNYXA\/V2Vha01hcDpNYXAsQ2o9ImZ1bmN0aW9uIj09PXR5cGVvZiBXZWFrU2V0P1dlYWtTZXQ6U2V0LEhqPU1hdGguY2VpbCx2ZD1mYi5SZWFjdEN1cnJlbnREaXNwYXRjaGVyLGpmPQ0KZmIuUmVhY3RDdXJyZW50T3duZXIsbj0wLFI9bnVsbCxHPW51bGwsTz0wLHRhPTAsY2I9R2EoMCksTD0wLHdkPW51bGwsRmI9MCxMYT0wLENiPTAsaGY9MCxkZj1udWxsLGNmPTAsVmU9SW5maW5pdHksbD1udWxsLHJkPSExLFllPW51bGwsbmE9bnVsbCxTYT0hMSx0Yz1udWxsLHZjPTkwLG1mPVtdLG5mPVtdLHZhPW51bGwscmM9MCxlZj1udWxsLHNkPS0xLHVhPTAsdGQ9MCx1Yz1udWxsLHhkPSExO3ZhciBPaj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9Yi5sYW5lcztpZihudWxsIT09YSlpZihhLm1lbW9pemVkUHJvcHMhPT1iLnBlbmRpbmdQcm9wc3x8Si5jdXJyZW50KWZhPSEwO2Vsc2UgaWYoMCE9PShjJmQpKWZhPTAhPT0oYS5mbGFncyYxNjM4NCk\/ITA6ITE7ZWxzZXtmYT0hMTtzd2l0Y2goYi50YWcpe2Nhc2UgMzpDaChiKTtIZSgpO2JyZWFrO2Nhc2UgNTppaChiKTticmVhaztjYXNlIDE6UyhiLnR5cGUpJiZYYyhiKTticmVhaztjYXNlIDQ6RWUoYixiLnN0YXRlTm9kZS5jb250YWluZXJJbmZvKTsNCmJyZWFrO2Nhc2UgMTA6ZD1iLm1lbW9pemVkUHJvcHMudmFsdWU7dmFyIGU9Yi50eXBlLl9jb250ZXh0O0EoYmQsZS5fY3VycmVudFZhbHVlKTtlLl9jdXJyZW50VmFsdWU9ZDticmVhaztjYXNlIDEzOmlmKG51bGwhPT1iLm1lbW9pemVkU3RhdGUpe2lmKDAhPT0oYyZiLmNoaWxkLmNoaWxkTGFuZXMpKXJldHVybiBEaChhLGIsYyk7QShFLEUuY3VycmVudCYxKTtiPXNhKGEsYixjKTtyZXR1cm4gbnVsbCE9PWI\/Yi5zaWJsaW5nOm51bGx9QShFLEUuY3VycmVudCYxKTticmVhaztjYXNlIDE5OmQ9MCE9PShjJmIuY2hpbGRMYW5lcyk7aWYoMCE9PShhLmZsYWdzJjY0KSl7aWYoZClyZXR1cm4gSWgoYSxiLGMpO2IuZmxhZ3N8PTY0fWU9Yi5tZW1vaXplZFN0YXRlO251bGwhPT1lJiYoZS5yZW5kZXJpbmc9bnVsbCxlLnRhaWw9bnVsbCxlLmxhc3RFZmZlY3Q9bnVsbCk7QShFLEUuY3VycmVudCk7aWYoZClicmVhaztlbHNlIHJldHVybiBudWxsO2Nhc2UgMjM6Y2FzZSAyNDpyZXR1cm4gYi5sYW5lcz0NCjAsUmUoYSxiLGMpfXJldHVybiBzYShhLGIsYyl9ZWxzZSBmYT0hMTtiLmxhbmVzPTA7c3dpdGNoKGIudGFnKXtjYXNlIDI6ZD1iLnR5cGU7bnVsbCE9PWEmJihhLmFsdGVybmF0ZT1udWxsLGIuYWx0ZXJuYXRlPW51bGwsYi5mbGFnc3w9Mik7YT1iLnBlbmRpbmdQcm9wcztlPXZiKGIsRC5jdXJyZW50KTt5YihiLGMpO2U9S2UobnVsbCxiLGQsYSxlLGMpO2IuZmxhZ3N8PTE7aWYoIm9iamVjdCI9PT10eXBlb2YgZSYmbnVsbCE9PWUmJiJmdW5jdGlvbiI9PT10eXBlb2YgZS5yZW5kZXImJnZvaWQgMD09PWUuJCR0eXBlb2Ype2IudGFnPTE7Yi5tZW1vaXplZFN0YXRlPW51bGw7Yi51cGRhdGVRdWV1ZT1udWxsO2lmKFMoZCkpe3ZhciBmPSEwO1hjKGIpfWVsc2UgZj0hMTtiLm1lbW9pemVkU3RhdGU9bnVsbCE9PWUuc3RhdGUmJnZvaWQgMCE9PWUuc3RhdGU\/ZS5zdGF0ZTpudWxsO0FlKGIpO3ZhciBnPWQuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzOyJmdW5jdGlvbiI9PT10eXBlb2YgZyYmDQpjZChiLGQsZyxhKTtlLnVwZGF0ZXI9ZGQ7Yi5zdGF0ZU5vZGU9ZTtlLl9yZWFjdEludGVybmFscz1iO0JlKGIsZCxhLGMpO2I9U2UobnVsbCxiLGQsITAsZixjKX1lbHNlIGIudGFnPTAsVShudWxsLGIsZSxjKSxiPWIuY2hpbGQ7cmV0dXJuIGI7Y2FzZSAxNjplPWIuZWxlbWVudFR5cGU7YTp7bnVsbCE9PWEmJihhLmFsdGVybmF0ZT1udWxsLGIuYWx0ZXJuYXRlPW51bGwsYi5mbGFnc3w9Mik7YT1iLnBlbmRpbmdQcm9wcztmPWUuX2luaXQ7ZT1mKGUuX3BheWxvYWQpO2IudHlwZT1lO2Y9Yi50YWc9VWooZSk7YT1lYShlLGEpO3N3aXRjaChmKXtjYXNlIDA6Yj1RZShudWxsLGIsZSxhLGMpO2JyZWFrIGE7Y2FzZSAxOmI9QmgobnVsbCxiLGUsYSxjKTticmVhayBhO2Nhc2UgMTE6Yj14aChudWxsLGIsZSxhLGMpO2JyZWFrIGE7Y2FzZSAxNDpiPXloKG51bGwsYixlLGVhKGUudHlwZSxhKSxkLGMpO2JyZWFrIGF9dGhyb3cgRXJyb3IobSgzMDYsZSwiIikpO31yZXR1cm4gYjtjYXNlIDA6cmV0dXJuIGQ9DQpiLnR5cGUsZT1iLnBlbmRpbmdQcm9wcyxlPWIuZWxlbWVudFR5cGU9PT1kP2U6ZWEoZCxlKSxRZShhLGIsZCxlLGMpO2Nhc2UgMTpyZXR1cm4gZD1iLnR5cGUsZT1iLnBlbmRpbmdQcm9wcyxlPWIuZWxlbWVudFR5cGU9PT1kP2U6ZWEoZCxlKSxCaChhLGIsZCxlLGMpO2Nhc2UgMzpDaChiKTtkPWIudXBkYXRlUXVldWU7aWYobnVsbD09PWF8fG51bGw9PT1kKXRocm93IEVycm9yKG0oMjgyKSk7ZD1iLnBlbmRpbmdQcm9wcztlPWIubWVtb2l6ZWRTdGF0ZTtlPW51bGwhPT1lP2UuZWxlbWVudDpudWxsO2FoKGEsYik7Y2MoYixkLG51bGwsYyk7ZD1iLm1lbW9pemVkU3RhdGUuZWxlbWVudDtpZihkPT09ZSlIZSgpLGI9c2EoYSxiLGMpO2Vsc2V7ZT1iLnN0YXRlTm9kZTtpZihmPWUuaHlkcmF0ZSlOYT10YihiLnN0YXRlTm9kZS5jb250YWluZXJJbmZvLmZpcnN0Q2hpbGQpLHJhPWIsZj1sYT0hMDtpZihmKXthPWUubXV0YWJsZVNvdXJjZUVhZ2VySHlkcmF0aW9uRGF0YTtpZihudWxsIT0NCmEpZm9yKGU9MDtlPGEubGVuZ3RoO2UrPTIpZj1hW2VdLGYuX3dvcmtJblByb2dyZXNzVmVyc2lvblByaW1hcnk9YVtlKzFdLEJiLnB1c2goZik7Yz13aChiLG51bGwsZCxjKTtmb3IoYi5jaGlsZD1jO2M7KWMuZmxhZ3M9Yy5mbGFncyYtM3wxMDI0LGM9Yy5zaWJsaW5nfWVsc2UgVShhLGIsZCxjKSxIZSgpO2I9Yi5jaGlsZH1yZXR1cm4gYjtjYXNlIDU6cmV0dXJuIGloKGIpLG51bGw9PT1hJiZHZShiKSxkPWIudHlwZSxlPWIucGVuZGluZ1Byb3BzLGY9bnVsbCE9PWE\/YS5tZW1vaXplZFByb3BzOm51bGwsZz1lLmNoaWxkcmVuLHJlKGQsZSk\/Zz1udWxsOm51bGwhPT1mJiZyZShkLGYpJiYoYi5mbGFnc3w9MTYpLEFoKGEsYiksVShhLGIsZyxjKSxiLmNoaWxkO2Nhc2UgNjpyZXR1cm4gbnVsbD09PWEmJkdlKGIpLG51bGw7Y2FzZSAxMzpyZXR1cm4gRGgoYSxiLGMpO2Nhc2UgNDpyZXR1cm4gRWUoYixiLnN0YXRlTm9kZS5jb250YWluZXJJbmZvKSxkPWIucGVuZGluZ1Byb3BzLG51bGw9PT0NCmE\/Yi5jaGlsZD1vZChiLG51bGwsZCxjKTpVKGEsYixkLGMpLGIuY2hpbGQ7Y2FzZSAxMTpyZXR1cm4gZD1iLnR5cGUsZT1iLnBlbmRpbmdQcm9wcyxlPWIuZWxlbWVudFR5cGU9PT1kP2U6ZWEoZCxlKSx4aChhLGIsZCxlLGMpO2Nhc2UgNzpyZXR1cm4gVShhLGIsYi5wZW5kaW5nUHJvcHMsYyksYi5jaGlsZDtjYXNlIDg6cmV0dXJuIFUoYSxiLGIucGVuZGluZ1Byb3BzLmNoaWxkcmVuLGMpLGIuY2hpbGQ7Y2FzZSAxMjpyZXR1cm4gVShhLGIsYi5wZW5kaW5nUHJvcHMuY2hpbGRyZW4sYyksYi5jaGlsZDtjYXNlIDEwOmE6e2Q9Yi50eXBlLl9jb250ZXh0O2U9Yi5wZW5kaW5nUHJvcHM7Zz1iLm1lbW9pemVkUHJvcHM7Zj1lLnZhbHVlO3ZhciBoPWIudHlwZS5fY29udGV4dDtBKGJkLGguX2N1cnJlbnRWYWx1ZSk7aC5fY3VycmVudFZhbHVlPWY7aWYobnVsbCE9PWcpaWYoaD1nLnZhbHVlLGY9WChoLGYpPzA6KCJmdW5jdGlvbiI9PT10eXBlb2YgZC5fY2FsY3VsYXRlQ2hhbmdlZEJpdHM\/DQpkLl9jYWxjdWxhdGVDaGFuZ2VkQml0cyhoLGYpOjEwNzM3NDE4MjMpfDAsMD09PWYpe2lmKGcuY2hpbGRyZW49PT1lLmNoaWxkcmVuJiYhSi5jdXJyZW50KXtiPXNhKGEsYixjKTticmVhayBhfX1lbHNlIGZvcihoPWIuY2hpbGQsbnVsbCE9PWgmJihoLnJldHVybj1iKTtudWxsIT09aDspe3ZhciBrPWguZGVwZW5kZW5jaWVzO2lmKG51bGwhPT1rKXtnPWguY2hpbGQ7Zm9yKHZhciBsPWsuZmlyc3RDb250ZXh0O251bGwhPT1sOyl7aWYobC5jb250ZXh0PT09ZCYmMCE9PShsLm9ic2VydmVkQml0cyZmKSl7MT09PWgudGFnJiYobD1JYSgtMSxjJi1jKSxsLnRhZz0yLEphKGgsbCkpO2gubGFuZXN8PWM7bD1oLmFsdGVybmF0ZTtudWxsIT09bCYmKGwubGFuZXN8PWMpOyRnKGgucmV0dXJuLGMpO2subGFuZXN8PWM7YnJlYWt9bD1sLm5leHR9fWVsc2UgZz0xMD09PWgudGFnP2gudHlwZT09PWIudHlwZT9udWxsOmguY2hpbGQ6aC5jaGlsZDtpZihudWxsIT09ZylnLnJldHVybj1oO2Vsc2UgZm9yKGc9DQpoO251bGwhPT1nOyl7aWYoZz09PWIpe2c9bnVsbDticmVha31oPWcuc2libGluZztpZihudWxsIT09aCl7aC5yZXR1cm49Zy5yZXR1cm47Zz1oO2JyZWFrfWc9Zy5yZXR1cm59aD1nfVUoYSxiLGUuY2hpbGRyZW4sYyk7Yj1iLmNoaWxkfXJldHVybiBiO2Nhc2UgOTpyZXR1cm4gZT1iLnR5cGUsZj1iLnBlbmRpbmdQcm9wcyxkPWYuY2hpbGRyZW4seWIoYixjKSxlPVkoZSxmLnVuc3RhYmxlX29ic2VydmVkQml0cyksZD1kKGUpLGIuZmxhZ3N8PTEsVShhLGIsZCxjKSxiLmNoaWxkO2Nhc2UgMTQ6cmV0dXJuIGU9Yi50eXBlLGY9ZWEoZSxiLnBlbmRpbmdQcm9wcyksZj1lYShlLnR5cGUsZikseWgoYSxiLGUsZixkLGMpO2Nhc2UgMTU6cmV0dXJuIHpoKGEsYixiLnR5cGUsYi5wZW5kaW5nUHJvcHMsZCxjKTtjYXNlIDE3OnJldHVybiBkPWIudHlwZSxlPWIucGVuZGluZ1Byb3BzLGU9Yi5lbGVtZW50VHlwZT09PWQ\/ZTplYShkLGUpLG51bGwhPT1hJiYoYS5hbHRlcm5hdGU9bnVsbCxiLmFsdGVybmF0ZT0NCm51bGwsYi5mbGFnc3w9MiksYi50YWc9MSxTKGQpPyhhPSEwLFhjKGIpKTphPSExLHliKGIsYyksZWgoYixkLGUpLEJlKGIsZCxlLGMpLFNlKG51bGwsYixkLCEwLGEsYyk7Y2FzZSAxOTpyZXR1cm4gSWgoYSxiLGMpO2Nhc2UgMjM6cmV0dXJuIFJlKGEsYixjKTtjYXNlIDI0OnJldHVybiBSZShhLGIsYyl9dGhyb3cgRXJyb3IobSgxNTYsYi50YWcpKTt9O3ZhciBaPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBuZXcgVGooYSxiLGMsZCl9O3NmLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oYSl7eWQoYSx0aGlzLl9pbnRlcm5hbFJvb3QsbnVsbCxudWxsKX07c2YucHJvdG90eXBlLnVubW91bnQ9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl9pbnRlcm5hbFJvb3QsYj1hLmNvbnRhaW5lckluZm87eWQobnVsbCxhLG51bGwsZnVuY3Rpb24oKXtiW3JiXT1udWxsfSl9O3ZhciBEaT1mdW5jdGlvbihhKXtpZigxMz09PWEudGFnKXt2YXIgYj1XKCk7UGEoYSw0LGIpO3JmKGEsNCl9fTt2YXIgWGY9DQpmdW5jdGlvbihhKXtpZigxMz09PWEudGFnKXt2YXIgYj1XKCk7UGEoYSw2NzEwODg2NCxiKTtyZihhLDY3MTA4ODY0KX19O3ZhciBCaT1mdW5jdGlvbihhKXtpZigxMz09PWEudGFnKXt2YXIgYj1XKCksYz1PYShhKTtQYShhLGMsYik7cmYoYSxjKX19O3ZhciBBaT1mdW5jdGlvbihhLGIpe3JldHVybiBiKCl9O1ZkPWZ1bmN0aW9uKGEsYixjKXtzd2l0Y2goYil7Y2FzZSAiaW5wdXQiOk5kKGEsYyk7Yj1jLm5hbWU7aWYoInJhZGlvIj09PWMudHlwZSYmbnVsbCE9Yil7Zm9yKGM9YTtjLnBhcmVudE5vZGU7KWM9Yy5wYXJlbnROb2RlO2M9Yy5xdWVyeVNlbGVjdG9yQWxsKCJpbnB1dFtuYW1lPSIrSlNPTi5zdHJpbmdpZnkoIiIrYikrJ11bdHlwZT0icmFkaW8iXScpO2ZvcihiPTA7YjxjLmxlbmd0aDtiKyspe3ZhciBkPWNbYl07aWYoZCE9PWEmJmQuZm9ybT09PWEuZm9ybSl7dmFyIGU9SGMoZCk7aWYoIWUpdGhyb3cgRXJyb3IobSg5MCkpO0VmKGQpO05kKGQsZSl9fX1icmVhaztjYXNlICJ0ZXh0YXJlYSI6SmYoYSwNCmMpO2JyZWFrO2Nhc2UgInNlbGVjdCI6Yj1jLnZhbHVlLG51bGwhPWImJmliKGEsISFjLm11bHRpcGxlLGIsITEpfX07KGZ1bmN0aW9uKGEsYixjLGQpe2xlPWE7ZWc9YjtYZD1jO1JmPWR9KSgkaCxmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPW47bnw9NDt0cnl7cmV0dXJuIFphKDk4LGEuYmluZChudWxsLGIsYyxkLGUpKX1maW5hbGx5e249ZiwwPT09biYmKEViKCksamEoKSl9fSxmdW5jdGlvbigpezA9PT0obiY0OSkmJihJaigpLFJhKCkpfSxmdW5jdGlvbihhLGIpe3ZhciBjPW47bnw9Mjt0cnl7cmV0dXJuIGEoYil9ZmluYWxseXtuPWMsMD09PW4mJihFYigpLGphKCkpfX0pO3ZhciB1az17RXZlbnRzOltPYixwYixIYyxQZixRZixSYSx7Y3VycmVudDohMX1dfTsoZnVuY3Rpb24oYSl7YT17YnVuZGxlVHlwZTphLmJ1bmRsZVR5cGUsdmVyc2lvbjphLnZlcnNpb24scmVuZGVyZXJQYWNrYWdlTmFtZTphLnJlbmRlcmVyUGFja2FnZU5hbWUscmVuZGVyZXJDb25maWc6YS5yZW5kZXJlckNvbmZpZywNCm92ZXJyaWRlSG9va1N0YXRlOm51bGwsb3ZlcnJpZGVIb29rU3RhdGVEZWxldGVQYXRoOm51bGwsb3ZlcnJpZGVIb29rU3RhdGVSZW5hbWVQYXRoOm51bGwsb3ZlcnJpZGVQcm9wczpudWxsLG92ZXJyaWRlUHJvcHNEZWxldGVQYXRoOm51bGwsb3ZlcnJpZGVQcm9wc1JlbmFtZVBhdGg6bnVsbCxzZXRTdXNwZW5zZUhhbmRsZXI6bnVsbCxzY2hlZHVsZVVwZGF0ZTpudWxsLGN1cnJlbnREaXNwYXRjaGVyUmVmOmZiLlJlYWN0Q3VycmVudERpc3BhdGNoZXIsZmluZEhvc3RJbnN0YW5jZUJ5RmliZXI6WGosZmluZEZpYmVyQnlIb3N0SW5zdGFuY2U6YS5maW5kRmliZXJCeUhvc3RJbnN0YW5jZXx8WWosZmluZEhvc3RJbnN0YW5jZXNGb3JSZWZyZXNoOm51bGwsc2NoZWR1bGVSZWZyZXNoOm51bGwsc2NoZWR1bGVSb290Om51bGwsc2V0UmVmcmVzaEhhbmRsZXI6bnVsbCxnZXRDdXJyZW50RmliZXI6bnVsbH07aWYoInVuZGVmaW5lZCI9PT10eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fKWE9DQohMTtlbHNle3ZhciBiPV9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXztpZighYi5pc0Rpc2FibGVkJiZiLnN1cHBvcnRzRmliZXIpdHJ5e1plPWIuaW5qZWN0KGEpLGRiPWJ9Y2F0Y2goYyl7fWE9ITB9cmV0dXJuIGF9KSh7ZmluZEZpYmVyQnlIb3N0SW5zdGFuY2U6V2EsYnVuZGxlVHlwZTowLHZlcnNpb246IjE3LjAuMCIscmVuZGVyZXJQYWNrYWdlTmFtZToicmVhY3QtZG9tIn0pO00uX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ9dWs7TS5jcmVhdGVQb3J0YWw9Z2k7TS5maW5kRE9NTm9kZT1mdW5jdGlvbihhKXtpZihudWxsPT1hKXJldHVybiBudWxsO2lmKDE9PT1hLm5vZGVUeXBlKXJldHVybiBhO3ZhciBiPWEuX3JlYWN0SW50ZXJuYWxzO2lmKHZvaWQgMD09PWIpe2lmKCJmdW5jdGlvbiI9PT10eXBlb2YgYS5yZW5kZXIpdGhyb3cgRXJyb3IobSgxODgpKTt0aHJvdyBFcnJvcihtKDI2OCxPYmplY3Qua2V5cyhhKSkpOw0KfWE9VWYoYik7YT1udWxsPT09YT9udWxsOmEuc3RhdGVOb2RlO3JldHVybiBhfTtNLmZsdXNoU3luYz1mdW5jdGlvbihhLGIpe3ZhciBjPW47aWYoMCE9PShjJjQ4KSlyZXR1cm4gYShiKTtufD0xO3RyeXtpZihhKXJldHVybiBaYSg5OSxhLmJpbmQobnVsbCxiKSl9ZmluYWxseXtuPWMsamEoKX19O00uaHlkcmF0ZT1mdW5jdGlvbihhLGIsYyl7aWYoIXdjKGIpKXRocm93IEVycm9yKG0oMjAwKSk7cmV0dXJuIHpkKG51bGwsYSxiLCEwLGMpfTtNLnJlbmRlcj1mdW5jdGlvbihhLGIsYyl7aWYoIXdjKGIpKXRocm93IEVycm9yKG0oMjAwKSk7cmV0dXJuIHpkKG51bGwsYSxiLCExLGMpfTtNLnVubW91bnRDb21wb25lbnRBdE5vZGU9ZnVuY3Rpb24oYSl7aWYoIXdjKGEpKXRocm93IEVycm9yKG0oNDApKTtyZXR1cm4gYS5fcmVhY3RSb290Q29udGFpbmVyPyhhaShmdW5jdGlvbigpe3pkKG51bGwsbnVsbCxhLCExLGZ1bmN0aW9uKCl7YS5fcmVhY3RSb290Q29udGFpbmVyPW51bGw7YVtyYl09DQpudWxsfSl9KSwhMCk6ITF9O00udW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXM9JGg7TS51bnN0YWJsZV9jcmVhdGVQb3J0YWw9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZ2koYSxiLDI8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpudWxsKX07TS51bnN0YWJsZV9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcj1mdW5jdGlvbihhLGIsYyxkKXtpZighd2MoYykpdGhyb3cgRXJyb3IobSgyMDApKTtpZihudWxsPT1hfHx2b2lkIDA9PT1hLl9yZWFjdEludGVybmFscyl0aHJvdyBFcnJvcihtKDM4KSk7cmV0dXJuIHpkKGEsYixjLCExLGQpfTtNLnZlcnNpb249IjE3LjAuMCJ9KTsNCn0pKCk7DQo=\"><\/script><br \/>\n<script src=\"data:application\/javascript;base64,LyoqKioqKi8gKGZ1bmN0aW9uKG1vZHVsZXMpIHsgLy8gd2VicGFja0Jvb3RzdHJhcAovKioqKioqLyAJLy8gVGhlIG1vZHVsZSBjYWNoZQovKioqKioqLyAJdmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTsKLyoqKioqKi8KLyoqKioqKi8gCS8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uCi8qKioqKiovIAlmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7Ci8qKioqKiovCi8qKioqKiovIAkJLy8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlCi8qKioqKiovIAkJaWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHsKLyoqKioqKi8gCQkJcmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7Ci8qKioqKiovIAkJfQovKioqKioqLyAJCS8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpCi8qKioqKiovIAkJdmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0gewovKioqKioqLyAJCQlpOiBtb2R1bGVJZCwKLyoqKioqKi8gCQkJbDogZmFsc2UsCi8qKioqKiovIAkJCWV4cG9ydHM6IHt9Ci8qKioqKiovIAkJfTsKLyoqKioqKi8KLyoqKioqKi8gCQkvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb24KLyoqKioqKi8gCQltb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTsKLyoqKioqKi8KLyoqKioqKi8gCQkvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkCi8qKioqKiovIAkJbW9kdWxlLmwgPSB0cnVlOwovKioqKioqLwovKioqKioqLyAJCS8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlCi8qKioqKiovIAkJcmV0dXJuIG1vZHVsZS5leHBvcnRzOwovKioqKioqLyAJfQovKioqKioqLwovKioqKioqLwovKioqKioqLyAJLy8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXykKLyoqKioqKi8gCV9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7Ci8qKioqKiovCi8qKioqKiovIAkvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZQovKioqKioqLyAJX193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlczsKLyoqKioqKi8KLyoqKioqKi8gCS8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0cwovKioqKioqLyAJX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7Ci8qKioqKiovIAkJaWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkgewovKioqKioqLyAJCQlPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTsKLyoqKioqKi8gCQl9Ci8qKioqKiovIAl9OwovKioqKioqLwovKioqKioqLyAJLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0cwovKioqKioqLyAJX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykgewovKioqKioqLyAJCWlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykgewovKioqKioqLyAJCQlPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTsKLyoqKioqKi8gCQl9Ci8qKioqKiovIAkJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTsKLyoqKioqKi8gCX07Ci8qKioqKiovCi8qKioqKiovIAkvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3QKLyoqKioqKi8gCS8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdAovKioqKioqLyAJLy8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zCi8qKioqKiovIAkvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3QKLyoqKioqKi8gCS8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmUKLyoqKioqKi8gCV9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7Ci8qKioqKiovIAkJaWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7Ci8qKioqKiovIAkJaWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTsKLyoqKioqKi8gCQlpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlOwovKioqKioqLyAJCXZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7Ci8qKioqKiovIAkJX193ZWJwYWNrX3JlcXVpcmVfXy5yKG5zKTsKLyoqKioqKi8gCQlPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7Ci8qKioqKiovIAkJaWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpOwovKioqKioqLyAJCXJldHVybiBuczsKLyoqKioqKi8gCX07Ci8qKioqKiovCi8qKioqKiovIAkvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlcwovKioqKioqLyAJX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7Ci8qKioqKiovIAkJdmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA\/Ci8qKioqKiovIAkJCWZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6Ci8qKioqKiovIAkJCWZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07Ci8qKioqKiovIAkJX193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpOwovKioqKioqLyAJCXJldHVybiBnZXR0ZXI7Ci8qKioqKiovIAl9OwovKioqKioqLwovKioqKioqLyAJLy8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsCi8qKioqKiovIAlfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07Ci8qKioqKiovCi8qKioqKiovIAkvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfXwovKioqKioqLyAJX193ZWJwYWNrX3JlcXVpcmVfXy5wID0gIiI7Ci8qKioqKiovCi8qKioqKiovCi8qKioqKiovIAkvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHMKLyoqKioqKi8gCXJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9ICIuL3NyY2pzL3JlYWN0LXRvb2xzLmpzIik7Ci8qKioqKiovIH0pCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qKioqKiovICh7CgovKioqLyAiLi9zcmNqcy9pbnB1dC5qcyI6Ci8qISoqKioqKioqKioqKioqKioqKioqKioqKiEqXAogICEqKiogLi9zcmNqcy9pbnB1dC5qcyAqKiohCiAgXCoqKioqKioqKioqKioqKioqKioqKioqKi8KLyohIGV4cG9ydHMgcHJvdmlkZWQ6IHJlYWN0U2hpbnlJbnB1dCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7Cl9fd2VicGFja19yZXF1aXJlX18ucihfX3dlYnBhY2tfZXhwb3J0c19fKTsKLyogaGFybW9ueSBleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCAicmVhY3RTaGlueUlucHV0IiwgZnVuY3Rpb24oKSB7IHJldHVybiByZWFjdFNoaW55SW5wdXQ7IH0pOwovKiBoYXJtb255IGltcG9ydCAqLyB2YXIgcmVhY3RfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIHJlYWN0ICovICJyZWFjdCIpOwovKiBoYXJtb255IGltcG9ydCAqLyB2YXIgcmVhY3RfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX19kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihyZWFjdF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fKTsKLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIHJlYWN0X2RvbV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgcmVhY3QtZG9tICovICJyZWFjdC1kb20iKTsKLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIHJlYWN0X2RvbV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKHJlYWN0X2RvbV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fKTsKLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIHNoaW55X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBzaGlueSAqLyAic2hpbnkiKTsKLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIHNoaW55X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oc2hpbnlfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXyk7Ci8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBqcXVlcnlfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIGpxdWVyeSAqLyAianF1ZXJ5Iik7Ci8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBqcXVlcnlfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX19kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihqcXVlcnlfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXyk7CmZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7ICJAYmFiZWwvaGVscGVycyAtIHR5cGVvZiI7IGlmICh0eXBlb2YgU3ltYm9sID09PSAiZnVuY3Rpb24iICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09ICJzeW1ib2wiKSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfTsgfSBlbHNlIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gImZ1bmN0aW9uIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyAic3ltYm9sIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfQoKZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKTsgfSB9CgpmdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmICgidmFsdWUiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfQoKZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH0KCmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09ICJmdW5jdGlvbiIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7IH0KCmZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBvLl9fcHJvdG9fXyA9IHA7IHJldHVybiBvOyB9OyByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApOyB9CgpmdW5jdGlvbiBfY3JlYXRlU3VwZXIoRGVyaXZlZCkgeyB2YXIgaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTsgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkgeyB2YXIgU3VwZXIgPSBfZ2V0UHJvdG90eXBlT2YoRGVyaXZlZCksIHJlc3VsdDsgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHsgdmFyIE5ld1RhcmdldCA9IF9nZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjsgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTsgfSBlbHNlIHsgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfSByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTsgfTsgfQoKZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gIm9iamVjdCIgfHwgdHlwZW9mIGNhbGwgPT09ICJmdW5jdGlvbiIpKSB7IHJldHVybiBjYWxsOyB9IHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpOyB9CgpmdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpOyB9IHJldHVybiBzZWxmOyB9CgpmdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyBpZiAodHlwZW9mIFJlZmxlY3QgPT09ICJ1bmRlZmluZWQiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSAiZnVuY3Rpb24iKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH0KCmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA\/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7IH07IHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7IH0KCgoKCgovKg0KICogVGhpcyBkZWZhdWx0IHJlY2VpdmVNZXNzYWdlIGltcGxlbWVudGF0aW9uIGV4cGVjdHMgZGF0YSB0byBjb250YWluIHdob2xlDQogKiBjb25maWd1cmF0aW9uIGFuZCB2YWx1ZSBwcm9wZXJ0aWVzLiBJZiBlaXRoZXIgaXMgcHJlc2VudCwgaXQgd2lsbCBiZSBzZXQgYW5kDQogKiB0aGUgY29tcG9uZW50IHdpbGwgYmUgcmUtcmVuZGVyZWQuIEJlY2F1c2UgcmVjZWl2ZU1lc3NhZ2UgaXMgdHlwaWNhbGx5IHVzZWQNCiAqIGJ5IGlucHV0IGF1dGhvcnMgdG8gcGVyZm9ybSBpbmNyZW1lbnRhbCB1cGRhdGVzLCB0aGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24NCiAqIGNhbiBiZSBvdmVycmlkZW4gYnkgdGhlIHVzZXIgd2l0aCB0aGUgcmVjZWl2ZU1lc3NhZ2UgYXJndW1lbnRzIHRvDQogKiByZWFjdFNoaW55SW5wdXQuDQogKi8KCmZ1bmN0aW9uIGRlZmF1bHRSZWNlaXZlTWVzc2FnZShlbCwgX3JlZikgewogIHZhciBjb25maWd1cmF0aW9uID0gX3JlZi5jb25maWd1cmF0aW9uLAogICAgICB2YWx1ZSA9IF9yZWYudmFsdWU7CiAgdmFyIGRpcnR5ID0gZmFsc2U7CgogIGlmIChjb25maWd1cmF0aW9uICE9PSB1bmRlZmluZWQpIHsKICAgIHRoaXMuc2V0SW5wdXRDb25maWd1cmF0aW9uKGVsLCBjb25maWd1cmF0aW9uKTsKICAgIGRpcnR5ID0gdHJ1ZTsKICB9CgogIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7CiAgICB0aGlzLnNldElucHV0VmFsdWUoZWwsIHZhbHVlKTsKICAgIGRpcnR5ID0gdHJ1ZTsKICB9CgogIGlmIChkaXJ0eSkgewogICAgdGhpcy5nZXRDYWxsYmFjayhlbCkoKTsKICAgIHRoaXMucmVuZGVyKGVsKTsKICB9Cn0KCnZhciBkZWZhdWx0T3B0aW9ucyA9IHsKICByZWNlaXZlTWVzc2FnZTogZGVmYXVsdFJlY2VpdmVNZXNzYWdlLAogIHR5cGU6IGZhbHNlLAogIHJhdGVQb2xpY3k6IG51bGwKfTsKLyoqDQogKiBJbnN0YWxscyBhIG5ldyBTaGlueSBpbnB1dCBiaW5kaW5nIGJhc2VkIG9uIGEgUmVhY3QgY29tcG9uZW50Lg0KICoNCiAqIEBwYXJhbSB7c3RyaW5nfSBzZWxlY3RvciAtIGpRdWVyeSBzZWxlY3RvciB0aGF0IHNob3VsZCBpZGVudGlmeSB0aGUgc2V0IG9mDQogKiBjb250YWluZXIgZWxlbWVudHMgd2l0aGluIHRoZSBzY29wZSBhcmd1bWVudCBvZiBTaGlueS5JbnB1dEJpbmRpbmcuZmluZC4NCiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gQSBuYW1lIHN1Y2ggYXMgJ2FjbWUuRm9vSW5wdXQnIHRoYXQgc2hvdWxkIHVuaXF1ZWx5DQogKiBpZGVudGlmeSB0aGUgY29tcG9uZW50Lg0KICogQHBhcmFtIHtPYmplY3R9IGNvbXBvbmVudCAtIFJlYWN0IENvbXBvbmVudCwgZWl0aGVyIGNsYXNzIG9yIGZ1bmN0aW9uLg0KICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgLSBBZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gU3VwcG9ydGVkDQogKiBvcHRpb25zIGFyZToNCiAqIC0gcmVjZWl2ZU1lc3NhZ2U6IEltcGxlbWVudGF0aW9uIG9mIFNoaW55LklucHV0QmluZGluZyB0byB1c2UgaW4gcGxhY2Ugb2YNCiAqICAgdGhlIGRlZmF1bHQuIFR5cGljYWxseSBvdmVycmlkZGVuIGFzIGFuIG9wdGltaXphdGlvbiB0byBwZXJmb3JtDQogKiAgIGluY3JlbWVudGFsIHZhbHVlIHVwZGF0ZXMuDQogKiAtIHR5cGU6IGBmYWxzZWAsIGEgc3RyaW5nLCBvciBhIGZ1bmN0aW9uLg0KICogICAgIC0gYGZhbHNlYCAodGhlIGRlZmF1bHQpOiBkZW5vdGVzIHRoYXQgdGhlIHZhbHVlIHByb2R1Y2VkIGJ5IHRoaXMgaW5wdXQNCiAqICAgICAgIHNob3VsZCBub3QgYmUgaW50ZXJjZXB0ZWQgYnkgYW55IGhhbmRsZXJzIHJlZ2lzdGVyZWQgaW4gUiBvbiB0aGUNCiAqICAgICAgIHNlcnZlciB1c2luZyBzaGlueTo6cmVnaXN0ZXJJbnB1dEhhbmRsZXIoKS4NCiAqICAgICAtIHN0cmluZzogZGVub3RlcyB0aGUgaW5wdXQncyAqdHlwZSogYW5kIHNob3VsZCBjb3JyZXNwb25kIHRvIHRoZQ0KICogICAgICAgdHlwZSBwYXJhbWV0ZXIgb2Ygc2hpbnk6OnJlZ2lzdGVySW5wdXRIYW5kbGVyKCkuDQogKiAgICAgLSBmdW5jdGlvbjogQSBmdW5jdGlvbiBjYWxsZWQgd2l0aCBgdGhpc2AgYm91bmQgdG8gdGhlIElucHV0QmluZGluZw0KICogICAgICAgaW5zdGFuY2UgYW5kIHBhc3NlZCBhIHNpbmdsZSBhcmd1bWVudCwgdGhlIGlucHV0J3MgY29udGFpbmluZyBET00NCiAqICAgICAgIGVsZW1lbnQuIFRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIGVpdGhlciBgZmFsc2VgIG9yIGEgc3RyaW5nDQogKiAgICAgICBjb3JyZXNwb25kaW5nIHRvIHRoZSB0eXBlIHBhcmFtZXRlciBvZiBzaGlueTo6cmVnaXN0ZXJJbnB1dEhhbmRsZXIoKS4NCiAqIC0gcmF0ZVBvbGljeTogQSByYXRlIHBvbGljeSBvYmplY3QgYXMgZGVmaW5lZCBpbiB0aGUgZG9jdW1lbnRhdGlvbiBmb3INCiAqICAgICBnZXRSYXRlUG9saWN5KCk6IGh0dHBzOi8vc2hpbnkucnN0dWRpby5jb20vYXJ0aWNsZXMvYnVpbGRpbmctaW5wdXRzLmh0bWwNCiAqICAgICBBIHJhdGUgcG9saWN5IG9iamVjdCBoYXMgdHdvIG1lbWJlcnM6DQogKiAgICAgLSBgcG9saWN5YDogVmFsaWQgdmFsdWVzIGFyZSB0aGUgc3RyaW5ncyAiZGlyZWN0IiwgImRlYm91bmNlIiwgYW5kDQogKiAgICAgICAidGhyb3R0bGUiLiAiZGlyZWN0IiBtZWFucyB0aGF0IGFsbCBldmVudHMgYXJlIHNlbnQgaW1tZWRpYXRlbHkuDQogKiAgICAgLSBgZGVsYXlgOiBOdW1iZXIgaW5kaWNhdGluZyB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0aGF0IHNob3VsZCBiZQ0KICogICAgICAgdXNlZCB3aGVuIGRlYm91bmNpbmcgb3IgdGhyb3R0bGluZy4gSGFzIG5vIGVmZmVjdCBpZiB0aGUgcG9saWN5IGlzDQogKiAgICAgICBkaXJlY3QuDQogKiAgICAgVGhlIHNwZWNpZmllZCByYXRlIHBvbGljeSBpcyBvbmx5IGFwcGxpZWQgd2hlbiBgdHJ1ZWAgaXMgcGFzc2VkIGFzIHRoZQ0KICogICAgIHNlY29uZCBhcmd1bWVudCB0byB0aGUgYHNldFZhbHVlYCBmdW5jdGlvbiBwYXNzZWQgYXMgYSBwcm9wIHRvIHRoZQ0KICogICAgIGlucHV0IGNvbXBvbmVudC4NCiAqDQogKi8KCmZ1bmN0aW9uIHJlYWN0U2hpbnlJbnB1dChzZWxlY3RvciwgbmFtZSwgY29tcG9uZW50LCBvcHRpb25zKSB7CiAgb3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRPcHRpb25zLCBvcHRpb25zKTsKICBzaGlueV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fX2RlZmF1bHQuYS5pbnB1dEJpbmRpbmdzLnJlZ2lzdGVyKG5ldyAoIC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1NoaW55JElucHV0QmluZGluZykgewogICAgX2luaGVyaXRzKF9jbGFzcywgX1NoaW55JElucHV0QmluZGluZyk7CgogICAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihfY2xhc3MpOwoKICAgIGZ1bmN0aW9uIF9jbGFzcygpIHsKICAgICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIF9jbGFzcyk7CgogICAgICByZXR1cm4gX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICB9CgogICAgX2NyZWF0ZUNsYXNzKF9jbGFzcywgW3sKICAgICAga2V5OiAiZmluZCIsCgogICAgICAvKg0KICAgICAgICogTWV0aG9kcyBvdmVycmlkZSB0aG9zZSBpbiBTaGlueS5JbnB1dEJpbmRpbmcNCiAgICAgICAqLwogICAgICB2YWx1ZTogZnVuY3Rpb24gZmluZChzY29wZSkgewogICAgICAgIHJldHVybiBqcXVlcnlfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX19kZWZhdWx0KCkoc2NvcGUpLmZpbmQoc2VsZWN0b3IpOwogICAgICB9CiAgICB9LCB7CiAgICAgIGtleTogImdldFZhbHVlIiwKICAgICAgdmFsdWU6IGZ1bmN0aW9uIGdldFZhbHVlKGVsKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SW5wdXRWYWx1ZShlbCk7CiAgICAgIH0KICAgIH0sIHsKICAgICAga2V5OiAic2V0VmFsdWUiLAogICAgICB2YWx1ZTogZnVuY3Rpb24gc2V0VmFsdWUoZWwsIHZhbHVlKSB7CiAgICAgICAgdmFyIHJhdGVMaW1pdGVkID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiBmYWxzZTsKCiAgICAgICAgLyoNCiAgICAgICAgICogV2UgaGF2ZSB0byBjaGVjayB3aGV0aGVyICQoZWwpLmRhdGEoJ2NhbGxiYWNrJykgaXMgdW5kZWZpbmVkIGhlcmUNCiAgICAgICAgICogaW4gY2FzZSBzaGlueTo6cmVuZGVyVUkoKSBpcyBpbnZvbHZlZC4gSWYgYW4gaW5wdXQgaXMgY29udGFpbmVkIGluIGENCiAgICAgICAgICogc2hpbnk6OnVpT3V0cHV0KCksIHRoZSBmb2xsb3dpbmcgc3RyYW5nZSB0aGluZyBoYXBwZW5zIG9jY2FzaW9uYWxseToNCiAgICAgICAgICoNCiAgICAgICAgICogICAxLiBzZXRWYWx1ZSgpIGlzIGJvdW5kIHRvIGFuIGVsIGluIHRoaXMucmVuZGVyKCksIGJlbG93DQogICAgICAgICAqICAgMi4gQW4gZXZlbnQgdGhhdCB3aWxsIGNhbGwgc2V0VmFsdWUoKSBpcyBlbnF1ZXVlZA0KICAgICAgICAgKiAgIDMuIFdoaWxlIHRoZSBldmVudCBpcyBzdGlsbCBlbnF1ZXVlZCwgZWwgaXMgdW5ib3VuZCBhbmQgcmVtb3ZlZA0KICAgICAgICAgKiAgICAgIGZyb20gdGhlIERPTSBieSB0aGUgSlMgY29kZSBhc3NvY2lhdGVkIHdpdGggc2hpbnk6OnVpT3V0cHV0KCkNCiAgICAgICAgICogICAgICAtIFRoYXQgY29kZSB1c2VzIGpRdWVyeSAuaHRtbCgpIGluIG91dHB1dF9iaW5kaW5nX2h0bWwuanMNCiAgICAgICAgICogICAgICAtIC5odG1sKCkgcmVtb3ZlcyBlbCBmcm9tIHRoZSBET00gYW5kIGNsZWFycyBpc3QgZGF0YSBhbmQgZXZlbnRzDQogICAgICAgICAqICAgNC4gQnkgdGhlIHRpbWUgdGhlIHNldFZhbHVlKCkgYm91bmQgdG8gdGhlIG9yaWdpbmFsIGVsIGlzIGludm9rZWQsDQogICAgICAgICAqICAgICAgZWwgaGFzIGJlZW4gdW5ib3VuZCBhbmQgaXRzIGRhdGEgY2xlYXJlZC4NCiAgICAgICAgICoNCiAgICAgICAgICogIFNpbmNlIHRoZSBvcmlnaW5hbCBpbnB1dCBpcyBnb25lIGFsb25nIHdpdGggaXRzIGNhbGxiYWNrLCBpdA0KICAgICAgICAgKiAgc2VlbXMgdG8gbWFrZSB0aGUgbW9zdCBzZW5zZSB0byBkbyBub3RoaW5nLg0KICAgICAgICAgKi8KICAgICAgICBpZiAoanF1ZXJ5X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19fZGVmYXVsdCgpKGVsKS5kYXRhKCdjYWxsYmFjaycpICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgIHRoaXMuc2V0SW5wdXRWYWx1ZShlbCwgdmFsdWUpOwogICAgICAgICAgdGhpcy5nZXRDYWxsYmFjayhlbCkocmF0ZUxpbWl0ZWQpOwogICAgICAgICAgdGhpcy5yZW5kZXIoZWwpOwogICAgICAgIH0KICAgICAgfQogICAgfSwgewogICAgICBrZXk6ICJpbml0aWFsaXplIiwKICAgICAgdmFsdWU6IGZ1bmN0aW9uIGluaXRpYWxpemUoZWwpIHsKICAgICAgICBqcXVlcnlfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX19kZWZhdWx0KCkoZWwpLmRhdGEoJ3ZhbHVlJywgSlNPTi5wYXJzZShqcXVlcnlfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX19kZWZhdWx0KCkoZWwpLm5leHQoKS50ZXh0KCkpKTsKICAgICAgICBqcXVlcnlfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX19kZWZhdWx0KCkoZWwpLmRhdGEoJ2NvbmZpZ3VyYXRpb24nLCBKU09OLnBhcnNlKGpxdWVyeV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fX2RlZmF1bHQoKShlbCkubmV4dCgpLm5leHQoKS50ZXh0KCkpKTsKICAgICAgfQogICAgfSwgewogICAgICBrZXk6ICJzdWJzY3JpYmUiLAogICAgICB2YWx1ZTogZnVuY3Rpb24gc3Vic2NyaWJlKGVsLCBjYWxsYmFjaykgewogICAgICAgIGpxdWVyeV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fX2RlZmF1bHQoKShlbCkuZGF0YSgnY2FsbGJhY2snLCBjYWxsYmFjayk7CiAgICAgICAgdGhpcy5yZW5kZXIoZWwpOwogICAgICB9CiAgICB9LCB7CiAgICAgIGtleTogInVuc3Vic2NyaWJlIiwKICAgICAgdmFsdWU6IGZ1bmN0aW9uIHVuc3Vic2NyaWJlKGVsKSB7CiAgICAgICAgcmVhY3RfZG9tX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19fZGVmYXVsdC5hLnJlbmRlcihudWxsLCBlbCk7CiAgICAgIH0KICAgIH0sIHsKICAgICAga2V5OiAicmVjZWl2ZU1lc3NhZ2UiLAogICAgICB2YWx1ZTogZnVuY3Rpb24gcmVjZWl2ZU1lc3NhZ2UoZWwsIGRhdGEpIHsKICAgICAgICBvcHRpb25zLnJlY2VpdmVNZXNzYWdlLmNhbGwodGhpcywgZWwsIGRhdGEpOwogICAgICB9CiAgICB9LCB7CiAgICAgIGtleTogImdldFR5cGUiLAogICAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0VHlwZShlbCkgewogICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy50eXBlID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICByZXR1cm4gb3B0aW9ucy50eXBlLmNhbGwodGhpcywgZWwpOwogICAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy50eXBlID09PSBmYWxzZSB8fCB0eXBlb2Ygb3B0aW9ucy50eXBlID09PSAnc3RyaW5nJykgewogICAgICAgICAgcmV0dXJuIG9wdGlvbnMudHlwZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdvcHRpb25zLnR5cGUgbXVzdCBiZSBmYWxzZSwgYSBzdHJpbmcsIG9yIGEgZnVuY3Rpb24nKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0sIHsKICAgICAga2V5OiAiZ2V0UmF0ZVBvbGljeSIsCiAgICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRSYXRlUG9saWN5KCkgewogICAgICAgIHJldHVybiBvcHRpb25zLnJhdGVQb2xpY3k7CiAgICAgIH0KICAgICAgLyoNCiAgICAgICAqIE1ldGhvZHMgbm90IHByZXNlbnQgaW4gU2hpbnkuSW5wdXRCaW5kaW5nIGJ1dCBhY2Nlc3NpYmxlIHRvIHVzZXJzDQogICAgICAgKiB0aHJvdWdoIGB0aGlzYCBpbiByZWNlaXZlTWVzc2FnZQ0KICAgICAgICovCgogICAgfSwgewogICAgICBrZXk6ICJnZXRJbnB1dFZhbHVlIiwKICAgICAgdmFsdWU6IGZ1bmN0aW9uIGdldElucHV0VmFsdWUoZWwpIHsKICAgICAgICByZXR1cm4ganF1ZXJ5X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19fZGVmYXVsdCgpKGVsKS5kYXRhKCd2YWx1ZScpOwogICAgICB9CiAgICB9LCB7CiAgICAgIGtleTogInNldElucHV0VmFsdWUiLAogICAgICB2YWx1ZTogZnVuY3Rpb24gc2V0SW5wdXRWYWx1ZShlbCwgdmFsdWUpIHsKICAgICAgICBqcXVlcnlfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX19kZWZhdWx0KCkoZWwpLmRhdGEoJ3ZhbHVlJywgdmFsdWUpOwogICAgICB9CiAgICB9LCB7CiAgICAgIGtleTogImdldElucHV0Q29uZmlndXJhdGlvbiIsCiAgICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRJbnB1dENvbmZpZ3VyYXRpb24oZWwpIHsKICAgICAgICByZXR1cm4ganF1ZXJ5X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19fZGVmYXVsdCgpKGVsKS5kYXRhKCdjb25maWd1cmF0aW9uJyk7CiAgICAgIH0KICAgIH0sIHsKICAgICAga2V5OiAic2V0SW5wdXRDb25maWd1cmF0aW9uIiwKICAgICAgdmFsdWU6IGZ1bmN0aW9uIHNldElucHV0Q29uZmlndXJhdGlvbihlbCwgY29uZmlndXJhdGlvbikgewogICAgICAgIGpxdWVyeV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fX2RlZmF1bHQoKShlbCkuZGF0YSgnY29uZmlndXJhdGlvbicsIGNvbmZpZ3VyYXRpb24pOwogICAgICB9CiAgICB9LCB7CiAgICAgIGtleTogImdldENhbGxiYWNrIiwKICAgICAgdmFsdWU6IGZ1bmN0aW9uIGdldENhbGxiYWNrKGVsKSB7CiAgICAgICAgcmV0dXJuIGpxdWVyeV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fX2RlZmF1bHQoKShlbCkuZGF0YSgnY2FsbGJhY2snKTsKICAgICAgfQogICAgfSwgewogICAgICBrZXk6ICJyZW5kZXIiLAogICAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKGVsKSB7CiAgICAgICAgdmFyIGVsZW1lbnQgPSAvKiNfX1BVUkVfXyovcmVhY3RfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX19kZWZhdWx0LmEuY3JlYXRlRWxlbWVudChjb21wb25lbnQsIHsKICAgICAgICAgIGNvbmZpZ3VyYXRpb246IHRoaXMuZ2V0SW5wdXRDb25maWd1cmF0aW9uKGVsKSwKICAgICAgICAgIHZhbHVlOiB0aGlzLmdldFZhbHVlKGVsKSwKICAgICAgICAgIHNldFZhbHVlOiB0aGlzLnNldFZhbHVlLmJpbmQodGhpcywgZWwpLAogICAgICAgICAgZWw6IGVsCiAgICAgICAgfSk7CiAgICAgICAgcmVhY3RfZG9tX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19fZGVmYXVsdC5hLnJlbmRlcihlbGVtZW50LCBlbCk7CiAgICAgIH0KICAgIH1dKTsKCiAgICByZXR1cm4gX2NsYXNzOwogIH0oc2hpbnlfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX19kZWZhdWx0LmEuSW5wdXRCaW5kaW5nKSkoKSwgbmFtZSk7Cn0KCi8qKiovIH0pLAoKLyoqKi8gIi4vc3JjanMvcmVhY3QtdG9vbHMuanMiOgovKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlwKICAhKioqIC4vc3JjanMvcmVhY3QtdG9vbHMuanMgKioqIQogIFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qISBubyBleHBvcnRzIHByb3ZpZGVkICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKX193ZWJwYWNrX3JlcXVpcmVfXy5yKF9fd2VicGFja19leHBvcnRzX18pOwovKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX3dpZGdldF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi93aWRnZXQgKi8gIi4vc3JjanMvd2lkZ2V0LmpzIik7Ci8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfaW5wdXRfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vaW5wdXQgKi8gIi4vc3JjanMvaW5wdXQuanMiKTsKCgp3aW5kb3cucmVhY3RSID0gewogIHJlYWN0U2hpbnlJbnB1dDogX2lucHV0X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19bInJlYWN0U2hpbnlJbnB1dCJdLAogIHJlYWN0V2lkZ2V0OiBfd2lkZ2V0X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19bInJlYWN0V2lkZ2V0Il0sCiAgaHlkcmF0ZTogX3dpZGdldF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fWyJoeWRyYXRlIl0KfTsKCi8qKiovIH0pLAoKLyoqKi8gIi4vc3JjanMvd2lkZ2V0LmpzIjoKLyohKioqKioqKioqKioqKioqKioqKioqKioqKiEqXAogICEqKiogLi9zcmNqcy93aWRnZXQuanMgKioqIQogIFwqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiEgZXhwb3J0cyBwcm92aWRlZDogaHlkcmF0ZSwgZGVmYXVsdE9wdGlvbnMsIG1lcmdlT3B0aW9ucywgZm9ybWF0RGltZW5zaW9uLCBpc1RhZywgcmVhY3RXaWRnZXQgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKInVzZSBzdHJpY3QiOwpfX3dlYnBhY2tfcmVxdWlyZV9fLnIoX193ZWJwYWNrX2V4cG9ydHNfXyk7Ci8qIGhhcm1vbnkgZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgImh5ZHJhdGUiLCBmdW5jdGlvbigpIHsgcmV0dXJuIGh5ZHJhdGU7IH0pOwovKiBoYXJtb255IGV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sICJkZWZhdWx0T3B0aW9ucyIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gZGVmYXVsdE9wdGlvbnM7IH0pOwovKiBoYXJtb255IGV4cG9ydCAoYmluZGluZykgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sICJtZXJnZU9wdGlvbnMiLCBmdW5jdGlvbigpIHsgcmV0dXJuIG1lcmdlT3B0aW9uczsgfSk7Ci8qIGhhcm1vbnkgZXhwb3J0IChiaW5kaW5nKSAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywgImZvcm1hdERpbWVuc2lvbiIsIGZ1bmN0aW9uKCkgeyByZXR1cm4gZm9ybWF0RGltZW5zaW9uOyB9KTsKLyogaGFybW9ueSBleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCAiaXNUYWciLCBmdW5jdGlvbigpIHsgcmV0dXJuIGlzVGFnOyB9KTsKLyogaGFybW9ueSBleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCAicmVhY3RXaWRnZXQiLCBmdW5jdGlvbigpIHsgcmV0dXJuIHJlYWN0V2lkZ2V0OyB9KTsKZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mIjsgaWYgKHR5cGVvZiBTeW1ib2wgPT09ICJmdW5jdGlvbiIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gInN5bWJvbCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSAiZnVuY3Rpb24iICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA\/ICJzeW1ib2wiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9CgovKioNCiAqIFJlY3Vyc2l2ZWx5IHRyYW5zZm9ybXMgdGFnLCBhIEpTT04gcmVwcmVzZW50YXRpb24gb2YgYW4gaW5zdGFuY2Ugb2YgYQ0KICogUmVhY3QgY29tcG9uZW50IGFuZCBpdHMgY2hpbGRyZW4sIGludG8gYSBSZWFjdCBlbGVtZW50IHN1aXRhYmxlIGZvcg0KICogcGFzc2luZyB0byBSZWFjdERPTS5yZW5kZXIuDQogKiBAcGFyYW0ge09iamVjdH0gY29tcG9uZW50cw0KICogQHBhcmFtIHtPYmplY3R9IHRhZw0KICovCmZ1bmN0aW9uIGh5ZHJhdGUoY29tcG9uZW50cywgdGFnKSB7CiAgaWYgKHR5cGVvZiB0YWcgPT09ICdzdHJpbmcnKSByZXR1cm4gdGFnOwoKICBpZiAodGFnLm5hbWVbMF0gPT09IHRhZy5uYW1lWzBdLnRvVXBwZXJDYXNlKCkgJiYgIWNvbXBvbmVudHMuaGFzT3duUHJvcGVydHkodGFnLm5hbWUpKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gY29tcG9uZW50OiAiICsgdGFnLm5hbWUpOwogIH0KCiAgdmFyIGVsZW0gPSBjb21wb25lbnRzLmhhc093blByb3BlcnR5KHRhZy5uYW1lKSA\/IGNvbXBvbmVudHNbdGFnLm5hbWVdIDogdGFnLm5hbWUsCiAgICAgIGFyZ3MgPSBbZWxlbSwgdGFnLmF0dHJpYnNdOwoKICBmb3IgKHZhciBpID0gMDsgaSA8IHRhZy5jaGlsZHJlbi5sZW5ndGg7IGkrKykgewogICAgYXJncy5wdXNoKGh5ZHJhdGUoY29tcG9uZW50cywgdGFnLmNoaWxkcmVuW2ldKSk7CiAgfQoKICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudC5hcHBseShSZWFjdCwgYXJncyk7Cn0KdmFyIGRlZmF1bHRPcHRpb25zID0gewogIC8vIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSBvbiB0aGUgcm9vdCB0YWcgdG8gdXNlIGZvciB0aGUgd2lkdGgsIGlmCiAgLy8gaXQncyB1cGRhdGVkLgogIHdpZHRoUHJvcGVydHk6ICJ3aWR0aCIsCiAgLy8gVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IG9uIHRoZSByb290IHRhZyB0byB1c2UgZm9yIHRoZSBoZWlnaHQsIGlmCiAgLy8gaXQncyB1cGRhdGVkLgogIGhlaWdodFByb3BlcnR5OiAiaGVpZ2h0IiwKICAvLyBXaGV0aGVyIG9yIG5vdCB0byBhcHBlbmQgdGhlIHN0cmluZyAncHgnIHRvIHRoZSB3aWR0aCBhbmQgaGVpZ2h0CiAgLy8gcHJvcGVydGllcyB3aGVuIHRoZXkgY2hhbmdlLgogIGFwcGVuZFB4OiBmYWxzZSwKICAvLyBXaGV0aGVyIG9yIG5vdCB0byBkeW5hbWljYWxseSB1cGRhdGUgdGhlIHdpZHRoIGFuZCBoZWlnaHQgcHJvcGVydGllcwogIC8vIG9mIHRoZSBsYXN0IGtub3duIHRhZyB3aGVuIHRoZSBjb21wdXRlZCB3aWR0aCBhbmQgaGVpZ2h0IGNoYW5nZSBpbgogIC8vIHRoZSBicm93c2VyLgogIHJlbmRlck9uUmVzaXplOiBmYWxzZQp9OwpmdW5jdGlvbiBtZXJnZU9wdGlvbnMob3B0aW9ucykgewogIHZhciBtZXJnZWQgPSB7fTsKCiAgZm9yICh2YXIgayBpbiBkZWZhdWx0T3B0aW9ucykgewogICAgbWVyZ2VkW2tdID0gZGVmYXVsdE9wdGlvbnNba107CiAgfQoKICBmb3IgKHZhciBrIGluIG9wdGlvbnMpIHsKICAgIGlmICghZGVmYXVsdE9wdGlvbnMuaGFzT3duUHJvcGVydHkoaykpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgb3B0aW9uOiAiICsgayk7CiAgICB9CgogICAgbWVyZ2VkW2tdID0gb3B0aW9uc1trXTsKICB9CgogIHJldHVybiBtZXJnZWQ7Cn0KZnVuY3Rpb24gZm9ybWF0RGltZW5zaW9uKGRpbSwgb3B0aW9ucykgewogIGlmIChvcHRpb25zLmFwcGVuZFB4KSB7CiAgICByZXR1cm4gZGltICsgJ3B4JzsKICB9IGVsc2UgewogICAgcmV0dXJuIGRpbTsKICB9Cn0KZnVuY3Rpb24gaXNUYWcodmFsdWUpIHsKICByZXR1cm4gX3R5cGVvZih2YWx1ZSkgPT09ICdvYmplY3QnICYmIHZhbHVlLmhhc093blByb3BlcnR5KCduYW1lJykgJiYgdmFsdWUuaGFzT3duUHJvcGVydHkoJ2F0dHJpYnMnKSAmJiB2YWx1ZS5oYXNPd25Qcm9wZXJ0eSgnY2hpbGRyZW4nKTsKfQovKioNCiAqIENyZWF0ZXMgYW4gSFRNTFdpZGdldCB0aGF0IGlzIHVwZGF0ZWQgYnkgcmVuZGVyaW5nIGEgUmVhY3QgY29tcG9uZW50Lg0KICogUmVhY3QgY29tcG9uZW50IGNvbnN0cnVjdG9ycyBhcmUgbWFkZSBhdmFpbGFibGUgYnkgc3BlY2lmeWluZyB0aGVtIGJ5DQogKiBuYW1lIGluIHRoZSBjb21wb25lbnRzIG9iamVjdC4NCiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lDQogKiBAcGFyYW0ge3N0cmluZ30gdHlwZQ0KICogQHBhcmFtIHtPYmplY3R9IGNvbXBvbmVudHMNCiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zDQogKi8KCmZ1bmN0aW9uIHJlYWN0V2lkZ2V0KG5hbWUsIHR5cGUsIGNvbXBvbmVudHMsIG9wdGlvbnMpIHsKICB2YXIgYWN0dWFsT3B0aW9ucyA9IG1lcmdlT3B0aW9ucyhvcHRpb25zKTsKICB3aW5kb3cuSFRNTFdpZGdldHMud2lkZ2V0KHsKICAgIG5hbWU6IG5hbWUsCiAgICB0eXBlOiB0eXBlLAogICAgZmFjdG9yeTogZnVuY3Rpb24gZmFjdG9yeShlbCwgd2lkdGgsIGhlaWdodCkgewogICAgICB2YXIgbGFzdFZhbHVlLAogICAgICAgICAgaW5zdGFuY2UgPSB7fSwKICAgICAgICAgIHJlbmRlclZhbHVlID0gZnVuY3Rpb24gcmVuZGVyVmFsdWUodmFsdWUpIHsKICAgICAgICBpZiAoYWN0dWFsT3B0aW9ucy5yZW5kZXJPblJlc2l6ZSkgewogICAgICAgICAgLy8gdmFsdWUudGFnIG1pZ2h0IGJlIGEgcHJpbWl0aXZlIHN0cmluZywgaW4gd2hpY2gKICAgICAgICAgIC8vIGNhc2UgdGhlcmUgaXMgbm8gYXR0cmlicyBwcm9wZXJ0eS4KICAgICAgICAgIGlmIChfdHlwZW9mKHZhbHVlLnRhZykgPT09ICdvYmplY3QnKSB7CiAgICAgICAgICAgIHZhbHVlLnRhZy5hdHRyaWJzW2FjdHVhbE9wdGlvbnNbIndpZHRoUHJvcGVydHkiXV0gPSBmb3JtYXREaW1lbnNpb24od2lkdGgpOwogICAgICAgICAgICB2YWx1ZS50YWcuYXR0cmlic1thY3R1YWxPcHRpb25zWyJoZWlnaHRQcm9wZXJ0eSJdXSA9IGZvcm1hdERpbWVuc2lvbihoZWlnaHQpOwogICAgICAgICAgfQoKICAgICAgICAgIGxhc3RWYWx1ZSA9IHZhbHVlOwogICAgICAgIH0gLy8gd2l0aCBmdW5jdGlvbmFsIHN0YXRlbGVzcyBjb21wb25lbnRzIHRoaXMgd2lsbCBiZSBudWxsCiAgICAgICAgLy8gc2VlIGh0dHBzOi8vcmVhY3Rqcy5vcmcvZG9jcy9yZWFjdC1kb20uaHRtbCNyZW5kZXIgZm9yIG1vcmUgZGV0YWlscwoKCiAgICAgICAgdGhpcy5pbnN0YW5jZS5jb21wb25lbnQgPSBSZWFjdERPTS5yZW5kZXIoaHlkcmF0ZShjb21wb25lbnRzLCB2YWx1ZS50YWcpLCBlbCk7CiAgICAgIH07CgogICAgICByZXR1cm4gewogICAgICAgIGluc3RhbmNlOiBpbnN0YW5jZSwKICAgICAgICByZW5kZXJWYWx1ZTogcmVuZGVyVmFsdWUsCiAgICAgICAgcmVzaXplOiBmdW5jdGlvbiByZXNpemUobmV3V2lkdGgsIG5ld0hlaWdodCkgewogICAgICAgICAgaWYgKGFjdHVhbE9wdGlvbnMucmVuZGVyT25SZXNpemUpIHsKICAgICAgICAgICAgd2lkdGggPSBuZXdXaWR0aDsKICAgICAgICAgICAgaGVpZ2h0ID0gbmV3SGVpZ2h0OwogICAgICAgICAgICByZW5kZXJWYWx1ZShsYXN0VmFsdWUpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfTsKICAgIH0KICB9KTsKfQoKLyoqKi8gfSksCgovKioqLyAianF1ZXJ5IjoKLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlwKICAhKioqIGV4dGVybmFsICJ3aW5kb3cualF1ZXJ5IiAqKiohCiAgXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKbW9kdWxlLmV4cG9ydHMgPSB3aW5kb3cualF1ZXJ5OwoKLyoqKi8gfSksCgovKioqLyAicmVhY3QiOgovKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcCiAgISoqKiBleHRlcm5hbCAid2luZG93LlJlYWN0IiAqKiohCiAgXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7Cgptb2R1bGUuZXhwb3J0cyA9IHdpbmRvdy5SZWFjdDsKCi8qKiovIH0pLAoKLyoqKi8gInJlYWN0LWRvbSI6Ci8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlwKICAhKioqIGV4dGVybmFsICJ3aW5kb3cuUmVhY3RET00iICoqKiEKICBcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKCm1vZHVsZS5leHBvcnRzID0gd2luZG93LlJlYWN0RE9NOwoKLyoqKi8gfSksCgovKioqLyAic2hpbnkiOgovKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcCiAgISoqKiBleHRlcm5hbCAid2luZG93LlNoaW55IiAqKiohCiAgXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7Cgptb2R1bGUuZXhwb3J0cyA9IHdpbmRvdy5TaGlueTsKCi8qKiovIH0pCgovKioqKioqLyB9KTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVhY3QtdG9vbHMuanMubWFw\"><\/script><br \/>\n<script src=\"data:application\/javascript;base64,KGZ1bmN0aW9uKCkgewogIC8vIElmIHdpbmRvdy5IVE1MV2lkZ2V0cyBpcyBhbHJlYWR5IGRlZmluZWQsIHRoZW4gdXNlIGl0OyBvdGhlcndpc2UgY3JlYXRlIGEKICAvLyBuZXcgb2JqZWN0LiBUaGlzIGFsbG93cyBwcmVjZWRpbmcgY29kZSB0byBzZXQgb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUKICAvLyBpbml0aWFsaXphdGlvbiBwcm9jZXNzICh0aG91Z2ggbm9uZSBjdXJyZW50bHkgZXhpc3QpLgogIHdpbmRvdy5IVE1MV2lkZ2V0cyA9IHdpbmRvdy5IVE1MV2lkZ2V0cyB8fCB7fTsKCiAgLy8gU2VlIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gYSB2aWV3ZXIgcGFuZS4gSWYgbm90LCB3ZSdyZSBpbiBhIHdlYiBicm93c2VyLgogIHZhciB2aWV3ZXJNb2RlID0gd2luZG93LkhUTUxXaWRnZXRzLnZpZXdlck1vZGUgPQogICAgICAvXGJ2aWV3ZXJfcGFuZT0xXGIvLnRlc3Qod2luZG93LmxvY2F0aW9uKTsKCiAgLy8gU2VlIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gU2hpbnkgbW9kZS4gSWYgbm90LCBpdCdzIGEgc3RhdGljIGRvY3VtZW50LgogIC8vIE5vdGUgdGhhdCBzdGF0aWMgd2lkZ2V0cyBjYW4gYXBwZWFyIGluIGJvdGggU2hpbnkgYW5kIHN0YXRpYyBtb2RlcywgYnV0CiAgLy8gb2J2aW91c2x5LCBTaGlueSB3aWRnZXRzIGNhbiBvbmx5IGFwcGVhciBpbiBTaGlueSBhcHBzL2RvY3VtZW50cy4KICB2YXIgc2hpbnlNb2RlID0gd2luZG93LkhUTUxXaWRnZXRzLnNoaW55TW9kZSA9CiAgICAgIHR5cGVvZih3aW5kb3cuU2hpbnkpICE9PSAidW5kZWZpbmVkIiAmJiAhIXdpbmRvdy5TaGlueS5vdXRwdXRCaW5kaW5nczsKCiAgLy8gV2UgY2FuJ3QgY291bnQgb24galF1ZXJ5IGJlaW5nIGF2YWlsYWJsZSwgc28gd2UgaW1wbGVtZW50IG91ciBvd24KICAvLyB2ZXJzaW9uIGlmIG5lY2Vzc2FyeS4KICBmdW5jdGlvbiBxdWVyeVNlbGVjdG9yQWxsKHNjb3BlLCBzZWxlY3RvcikgewogICAgaWYgKHR5cGVvZihqUXVlcnkpICE9PSAidW5kZWZpbmVkIiAmJiBzY29wZSBpbnN0YW5jZW9mIGpRdWVyeSkgewogICAgICByZXR1cm4gc2NvcGUuZmluZChzZWxlY3Rvcik7CiAgICB9CiAgICBpZiAoc2NvcGUucXVlcnlTZWxlY3RvckFsbCkgewogICAgICByZXR1cm4gc2NvcGUucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBhc0FycmF5KHZhbHVlKSB7CiAgICBpZiAodmFsdWUgPT09IG51bGwpCiAgICAgIHJldHVybiBbXTsKICAgIGlmICgkLmlzQXJyYXkodmFsdWUpKQogICAgICByZXR1cm4gdmFsdWU7CiAgICByZXR1cm4gW3ZhbHVlXTsKICB9CgogIC8vIEltcGxlbWVudCBqUXVlcnkncyBleHRlbmQKICBmdW5jdGlvbiBleHRlbmQodGFyZ2V0IC8qLCAuLi4gKi8pIHsKICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDEpIHsKICAgICAgcmV0dXJuIHRhcmdldDsKICAgIH0KICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07CiAgICAgIGZvciAodmFyIHByb3AgaW4gc291cmNlKSB7CiAgICAgICAgaWYgKHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShwcm9wKSkgewogICAgICAgICAgdGFyZ2V0W3Byb3BdID0gc291cmNlW3Byb3BdOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgcmV0dXJuIHRhcmdldDsKICB9CgogIC8vIElFOCBkb2Vzbid0IHN1cHBvcnQgQXJyYXkuZm9yRWFjaC4KICBmdW5jdGlvbiBmb3JFYWNoKHZhbHVlcywgY2FsbGJhY2ssIHRoaXNBcmcpIHsKICAgIGlmICh2YWx1ZXMuZm9yRWFjaCkgewogICAgICB2YWx1ZXMuZm9yRWFjaChjYWxsYmFjaywgdGhpc0FyZyk7CiAgICB9IGVsc2UgewogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykgewogICAgICAgIGNhbGxiYWNrLmNhbGwodGhpc0FyZywgdmFsdWVzW2ldLCBpLCB2YWx1ZXMpOwogICAgICB9CiAgICB9CiAgfQoKICAvLyBSZXBsYWNlcyB0aGUgc3BlY2lmaWVkIG1ldGhvZCB3aXRoIHRoZSByZXR1cm4gdmFsdWUgb2YgZnVuY1NvdXJjZS4KICAvLwogIC8vIE5vdGUgdGhhdCBmdW5jU291cmNlIHNob3VsZCBub3QgQkUgdGhlIG5ldyBtZXRob2QsIGl0IHNob3VsZCBiZSBhIGZ1bmN0aW9uCiAgLy8gdGhhdCBSRVRVUk5TIHRoZSBuZXcgbWV0aG9kLiBmdW5jU291cmNlIHJlY2VpdmVzIGEgc2luZ2xlIGFyZ3VtZW50IHRoYXQgaXMKICAvLyB0aGUgb3ZlcnJpZGRlbiBtZXRob2QsIGl0IGNhbiBiZSBjYWxsZWQgZnJvbSB0aGUgbmV3IG1ldGhvZC4gVGhlIG92ZXJyaWRkZW4KICAvLyBtZXRob2QgY2FuIGJlIGNhbGxlZCBsaWtlIGEgcmVndWxhciBmdW5jdGlvbiwgaXQgaGFzIHRoZSB0YXJnZXQgcGVybWFuZW50bHkKICAvLyBib3VuZCB0byBpdCBzbyAidGhpcyIgd2lsbCB3b3JrIGNvcnJlY3RseS4KICBmdW5jdGlvbiBvdmVycmlkZU1ldGhvZCh0YXJnZXQsIG1ldGhvZE5hbWUsIGZ1bmNTb3VyY2UpIHsKICAgIHZhciBzdXBlckZ1bmMgPSB0YXJnZXRbbWV0aG9kTmFtZV0gfHwgZnVuY3Rpb24oKSB7fTsKICAgIHZhciBzdXBlckZ1bmNCb3VuZCA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gc3VwZXJGdW5jLmFwcGx5KHRhcmdldCwgYXJndW1lbnRzKTsKICAgIH07CiAgICB0YXJnZXRbbWV0aG9kTmFtZV0gPSBmdW5jU291cmNlKHN1cGVyRnVuY0JvdW5kKTsKICB9CgogIC8vIEFkZCBhIG1ldGhvZCB0byBkZWxlZ2F0b3IgdGhhdCwgd2hlbiBpbnZva2VkLCBjYWxscwogIC8vIGRlbGVnYXRlZS5tZXRob2ROYW1lLiBJZiB0aGVyZSBpcyBubyBzdWNoIG1ldGhvZCBvbgogIC8vIHRoZSBkZWxlZ2F0ZWUsIGJ1dCB0aGVyZSB3YXMgb25lIG9uIGRlbGVnYXRvciBiZWZvcmUKICAvLyBkZWxlZ2F0ZU1ldGhvZCB3YXMgY2FsbGVkLCB0aGVuIHRoZSBvcmlnaW5hbCB2ZXJzaW9uCiAgLy8gaXMgaW52b2tlZCBpbnN0ZWFkLgogIC8vIEZvciBleGFtcGxlOgogIC8vCiAgLy8gdmFyIGEgPSB7CiAgLy8gICBtZXRob2QxOiBmdW5jdGlvbigpIHsgY29uc29sZS5sb2coJ2ExJyk7IH0KICAvLyAgIG1ldGhvZDI6IGZ1bmN0aW9uKCkgeyBjb25zb2xlLmxvZygnYTInKTsgfQogIC8vIH07CiAgLy8gdmFyIGIgPSB7CiAgLy8gICBtZXRob2QxOiBmdW5jdGlvbigpIHsgY29uc29sZS5sb2coJ2IxJyk7IH0KICAvLyB9OwogIC8vIGRlbGVnYXRlTWV0aG9kKGEsIGIsICJtZXRob2QxIik7CiAgLy8gZGVsZWdhdGVNZXRob2QoYSwgYiwgIm1ldGhvZDIiKTsKICAvLyBhLm1ldGhvZDEoKTsKICAvLyBhLm1ldGhvZDIoKTsKICAvLwogIC8vIFRoZSBvdXRwdXQgd291bGQgYmUgImIxIiwgImEyIi4KICBmdW5jdGlvbiBkZWxlZ2F0ZU1ldGhvZChkZWxlZ2F0b3IsIGRlbGVnYXRlZSwgbWV0aG9kTmFtZSkgewogICAgdmFyIGluaGVyaXRlZCA9IGRlbGVnYXRvclttZXRob2ROYW1lXTsKICAgIGRlbGVnYXRvclttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKCkgewogICAgICB2YXIgdGFyZ2V0ID0gZGVsZWdhdGVlOwogICAgICB2YXIgbWV0aG9kID0gZGVsZWdhdGVlW21ldGhvZE5hbWVdOwoKICAgICAgLy8gVGhlIG1ldGhvZCBkb2Vzbid0IGV4aXN0IG9uIHRoZSBkZWxlZ2F0ZWUuIEluc3RlYWQsCiAgICAgIC8vIGNhbGwgdGhlIG1ldGhvZCBvbiB0aGUgZGVsZWdhdG9yLCBpZiBpdCBleGlzdHMuCiAgICAgIGlmICghbWV0aG9kKSB7CiAgICAgICAgdGFyZ2V0ID0gZGVsZWdhdG9yOwogICAgICAgIG1ldGhvZCA9IGluaGVyaXRlZDsKICAgICAgfQoKICAgICAgaWYgKG1ldGhvZCkgewogICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGFyZ2V0LCBhcmd1bWVudHMpOwogICAgICB9CiAgICB9OwogIH0KCiAgLy8gSW1wbGVtZW50IGEgdmFndWUgZmFjc2ltaWxpZSBvZiBqUXVlcnkncyBkYXRhIG1ldGhvZAogIGZ1bmN0aW9uIGVsZW1lbnREYXRhKGVsLCBuYW1lLCB2YWx1ZSkgewogICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMikgewogICAgICByZXR1cm4gZWxbImh0bWx3aWRnZXRfZGF0YV8iICsgbmFtZV07CiAgICB9IGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMykgewogICAgICBlbFsiaHRtbHdpZGdldF9kYXRhXyIgKyBuYW1lXSA9IHZhbHVlOwogICAgICByZXR1cm4gZWw7CiAgICB9IGVsc2UgewogICAgICB0aHJvdyBuZXcgRXJyb3IoIldyb25nIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIGVsZW1lbnREYXRhOiAiICsKICAgICAgICBhcmd1bWVudHMubGVuZ3RoKTsKICAgIH0KICB9CgogIC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzQ0NjE3MC9lc2NhcGUtc3RyaW5nLWZvci11c2UtaW4tamF2YXNjcmlwdC1yZWdleAogIGZ1bmN0aW9uIGVzY2FwZVJlZ0V4cChzdHIpIHsKICAgIHJldHVybiBzdHIucmVwbGFjZSgvW1wtXFtcXVwvXHtcfVwoXClcKlwrXD9cLlxcXF5cJFx8XS9nLCAiXFwkJiIpOwogIH0KCiAgZnVuY3Rpb24gaGFzQ2xhc3MoZWwsIGNsYXNzTmFtZSkgewogICAgdmFyIHJlID0gbmV3IFJlZ0V4cCgiXFxiIiArIGVzY2FwZVJlZ0V4cChjbGFzc05hbWUpICsgIlxcYiIpOwogICAgcmV0dXJuIHJlLnRlc3QoZWwuY2xhc3NOYW1lKTsKICB9CgogIC8vIGVsZW1lbnRzIC0gYXJyYXkgKG9yIGFycmF5LWxpa2Ugb2JqZWN0KSBvZiBIVE1MIGVsZW1lbnRzCiAgLy8gY2xhc3NOYW1lIC0gY2xhc3MgbmFtZSB0byB0ZXN0IGZvcgogIC8vIGluY2x1ZGUgLSBpZiB0cnVlLCBvbmx5IHJldHVybiBlbGVtZW50cyB3aXRoIGdpdmVuIGNsYXNzTmFtZTsKICAvLyAgIGlmIGZhbHNlLCBvbmx5IHJldHVybiBlbGVtZW50cyAqd2l0aG91dCogZ2l2ZW4gY2xhc3NOYW1lCiAgZnVuY3Rpb24gZmlsdGVyQnlDbGFzcyhlbGVtZW50cywgY2xhc3NOYW1lLCBpbmNsdWRlKSB7CiAgICB2YXIgcmVzdWx0cyA9IFtdOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7IGkrKykgewogICAgICBpZiAoaGFzQ2xhc3MoZWxlbWVudHNbaV0sIGNsYXNzTmFtZSkgPT0gaW5jbHVkZSkKICAgICAgICByZXN1bHRzLnB1c2goZWxlbWVudHNbaV0pOwogICAgfQogICAgcmV0dXJuIHJlc3VsdHM7CiAgfQoKICBmdW5jdGlvbiBvbihvYmosIGV2ZW50TmFtZSwgZnVuYykgewogICAgaWYgKG9iai5hZGRFdmVudExpc3RlbmVyKSB7CiAgICAgIG9iai5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgZnVuYywgZmFsc2UpOwogICAgfSBlbHNlIGlmIChvYmouYXR0YWNoRXZlbnQpIHsKICAgICAgb2JqLmF0dGFjaEV2ZW50KGV2ZW50TmFtZSwgZnVuYyk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBvZmYob2JqLCBldmVudE5hbWUsIGZ1bmMpIHsKICAgIGlmIChvYmoucmVtb3ZlRXZlbnRMaXN0ZW5lcikKICAgICAgb2JqLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBmdW5jLCBmYWxzZSk7CiAgICBlbHNlIGlmIChvYmouZGV0YWNoRXZlbnQpIHsKICAgICAgb2JqLmRldGFjaEV2ZW50KGV2ZW50TmFtZSwgZnVuYyk7CiAgICB9CiAgfQoKICAvLyBUcmFuc2xhdGUgYXJyYXkgb2YgdmFsdWVzIHRvIHRvcC9yaWdodC9ib3R0b20vbGVmdCwgYXMgdXN1YWwgd2l0aAogIC8vIHRoZSAicGFkZGluZyIgQ1NTIHByb3BlcnR5CiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3BhZGRpbmcKICBmdW5jdGlvbiB1bnBhY2tQYWRkaW5nKHZhbHVlKSB7CiAgICBpZiAodHlwZW9mKHZhbHVlKSA9PT0gIm51bWJlciIpCiAgICAgIHZhbHVlID0gW3ZhbHVlXTsKICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDEpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMF0sIGJvdHRvbTogdmFsdWVbMF0sIGxlZnQ6IHZhbHVlWzBdfTsKICAgIH0KICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDIpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMV0sIGJvdHRvbTogdmFsdWVbMF0sIGxlZnQ6IHZhbHVlWzFdfTsKICAgIH0KICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDMpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMV0sIGJvdHRvbTogdmFsdWVbMl0sIGxlZnQ6IHZhbHVlWzFdfTsKICAgIH0KICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDQpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMV0sIGJvdHRvbTogdmFsdWVbMl0sIGxlZnQ6IHZhbHVlWzNdfTsKICAgIH0KICB9CgogIC8vIENvbnZlcnQgYW4gdW5wYWNrZWQgcGFkZGluZyBvYmplY3QgdG8gYSBDU1MgdmFsdWUKICBmdW5jdGlvbiBwYWRkaW5nVG9Dc3MocGFkZGluZ09iaikgewogICAgcmV0dXJuIHBhZGRpbmdPYmoudG9wICsgInB4ICIgKyBwYWRkaW5nT2JqLnJpZ2h0ICsgInB4ICIgKyBwYWRkaW5nT2JqLmJvdHRvbSArICJweCAiICsgcGFkZGluZ09iai5sZWZ0ICsgInB4IjsKICB9CgogIC8vIE1ha2VzIGEgbnVtYmVyIHN1aXRhYmxlIGZvciBDU1MKICBmdW5jdGlvbiBweCh4KSB7CiAgICBpZiAodHlwZW9mKHgpID09PSAibnVtYmVyIikKICAgICAgcmV0dXJuIHggKyAicHgiOwogICAgZWxzZQogICAgICByZXR1cm4geDsKICB9CgogIC8vIFJldHJpZXZlcyBydW50aW1lIHdpZGdldCBzaXppbmcgaW5mb3JtYXRpb24gZm9yIGFuIGVsZW1lbnQuCiAgLy8gVGhlIHJldHVybiB2YWx1ZSBpcyBlaXRoZXIgbnVsbCwgb3IgYW4gb2JqZWN0IHdpdGggZmlsbCwgcGFkZGluZywKICAvLyBkZWZhdWx0V2lkdGgsIGRlZmF1bHRIZWlnaHQgZmllbGRzLgogIGZ1bmN0aW9uIHNpemluZ1BvbGljeShlbCkgewogICAgdmFyIHNpemluZ0VsID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic2NyaXB0W2RhdGEtZm9yPSciICsgZWwuaWQgKyAiJ11bdHlwZT0nYXBwbGljYXRpb24vaHRtbHdpZGdldC1zaXppbmcnXSIpOwogICAgaWYgKCFzaXppbmdFbCkKICAgICAgcmV0dXJuIG51bGw7CiAgICB2YXIgc3AgPSBKU09OLnBhcnNlKHNpemluZ0VsLnRleHRDb250ZW50IHx8IHNpemluZ0VsLnRleHQgfHwgInt9Iik7CiAgICBpZiAodmlld2VyTW9kZSkgewogICAgICByZXR1cm4gc3Audmlld2VyOwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIHNwLmJyb3dzZXI7CiAgICB9CiAgfQoKICAvLyBAcGFyYW0gdGFza3MgQXJyYXkgb2Ygc3RyaW5ncyAob3IgZmFsc3kgdmFsdWUsIGluIHdoaWNoIGNhc2Ugbm8tb3ApLgogIC8vICAgRWFjaCBlbGVtZW50IG11c3QgYmUgYSB2YWxpZCBKYXZhU2NyaXB0IGV4cHJlc3Npb24gdGhhdCB5aWVsZHMgYQogIC8vICAgZnVuY3Rpb24uIE9yLCBjYW4gYmUgYW4gYXJyYXkgb2Ygb2JqZWN0cyB3aXRoICJjb2RlIiBhbmQgImRhdGEiCiAgLy8gICBwcm9wZXJ0aWVzOyBpbiB0aGlzIGNhc2UsIHRoZSAiY29kZSIgcHJvcGVydHkgc2hvdWxkIGJlIGEgc3RyaW5nCiAgLy8gICBvZiBKUyB0aGF0J3MgYW4gZXhwciB0aGF0IHlpZWxkcyBhIGZ1bmN0aW9uLCBhbmQgImRhdGEiIHNob3VsZCBiZQogIC8vICAgYW4gb2JqZWN0IHRoYXQgd2lsbCBiZSBhZGRlZCBhcyBhbiBhZGRpdGlvbmFsIGFyZ3VtZW50IHdoZW4gdGhhdAogIC8vICAgZnVuY3Rpb24gaXMgY2FsbGVkLgogIC8vIEBwYXJhbSB0YXJnZXQgVGhlIG9iamVjdCB0aGF0IHdpbGwgYmUgInRoaXMiIGZvciBlYWNoIGZ1bmN0aW9uCiAgLy8gICBleGVjdXRpb24uCiAgLy8gQHBhcmFtIGFyZ3MgQXJyYXkgb2YgYXJndW1lbnRzIHRvIGJlIHBhc3NlZCB0byB0aGUgZnVuY3Rpb25zLiAoVGhlCiAgLy8gICBzYW1lIGFyZ3VtZW50cyB3aWxsIGJlIHBhc3NlZCB0byBhbGwgZnVuY3Rpb25zLikKICBmdW5jdGlvbiBldmFsQW5kUnVuKHRhc2tzLCB0YXJnZXQsIGFyZ3MpIHsKICAgIGlmICh0YXNrcykgewogICAgICBmb3JFYWNoKHRhc2tzLCBmdW5jdGlvbih0YXNrKSB7CiAgICAgICAgdmFyIHRoZXNlQXJncyA9IGFyZ3M7CiAgICAgICAgaWYgKHR5cGVvZih0YXNrKSA9PT0gIm9iamVjdCIpIHsKICAgICAgICAgIHRoZXNlQXJncyA9IHRoZXNlQXJncy5jb25jYXQoW3Rhc2suZGF0YV0pOwogICAgICAgICAgdGFzayA9IHRhc2suY29kZTsKICAgICAgICB9CiAgICAgICAgdmFyIHRhc2tGdW5jID0gdHJ5RXZhbCh0YXNrKTsKICAgICAgICBpZiAodHlwZW9mKHRhc2tGdW5jKSAhPT0gImZ1bmN0aW9uIikgewogICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJUYXNrIG11c3QgYmUgYSBmdW5jdGlvbiEgU291cmNlOlxuIiArIHRhc2spOwogICAgICAgIH0KICAgICAgICB0YXNrRnVuYy5hcHBseSh0YXJnZXQsIHRoZXNlQXJncyk7CiAgICAgIH0pOwogICAgfQogIH0KCiAgLy8gQXR0ZW1wdCBldmFsKCkgYm90aCB3aXRoIGFuZCB3aXRob3V0IGVuY2xvc2luZyBpbiBwYXJlbnRoZXNlcy4KICAvLyBOb3RlIHRoYXQgZW5jbG9zaW5nIGNvZXJjZXMgYSBmdW5jdGlvbiBkZWNsYXJhdGlvbiBpbnRvCiAgLy8gYW4gZXhwcmVzc2lvbiB0aGF0IGV2YWwoKSBjYW4gcGFyc2UKICAvLyAob3RoZXJ3aXNlLCBhIFN5bnRheEVycm9yIGlzIHRocm93bikKICBmdW5jdGlvbiB0cnlFdmFsKGNvZGUpIHsKICAgIHZhciByZXN1bHQgPSBudWxsOwogICAgdHJ5IHsKICAgICAgcmVzdWx0ID0gZXZhbCgiKCIgKyBjb2RlICsgIikiKTsKICAgIH0gY2F0Y2goZXJyb3IpIHsKICAgICAgaWYgKCFlcnJvciBpbnN0YW5jZW9mIFN5bnRheEVycm9yKSB7CiAgICAgICAgdGhyb3cgZXJyb3I7CiAgICAgIH0KICAgICAgdHJ5IHsKICAgICAgICByZXN1bHQgPSBldmFsKGNvZGUpOwogICAgICB9IGNhdGNoKGUpIHsKICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFN5bnRheEVycm9yKSB7CiAgICAgICAgICB0aHJvdyBlcnJvcjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdGhyb3cgZTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICAgIHJldHVybiByZXN1bHQ7CiAgfQoKICBmdW5jdGlvbiBpbml0U2l6aW5nKGVsKSB7CiAgICB2YXIgc2l6aW5nID0gc2l6aW5nUG9saWN5KGVsKTsKICAgIGlmICghc2l6aW5nKQogICAgICByZXR1cm47CgogICAgdmFyIGNlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJodG1sd2lkZ2V0X2NvbnRhaW5lciIpOwogICAgaWYgKCFjZWwpCiAgICAgIHJldHVybjsKCiAgICBpZiAodHlwZW9mKHNpemluZy5wYWRkaW5nKSAhPT0gInVuZGVmaW5lZCIpIHsKICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5tYXJnaW4gPSAiMCI7CiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUucGFkZGluZyA9IHBhZGRpbmdUb0Nzcyh1bnBhY2tQYWRkaW5nKHNpemluZy5wYWRkaW5nKSk7CiAgICB9CgogICAgaWYgKHNpemluZy5maWxsKSB7CiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAiaGlkZGVuIjsKICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS53aWR0aCA9ICIxMDAlIjsKICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5oZWlnaHQgPSAiMTAwJSI7CiAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS53aWR0aCA9ICIxMDAlIjsKICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLmhlaWdodCA9ICIxMDAlIjsKICAgICAgaWYgKGNlbCkgewogICAgICAgIGNlbC5zdHlsZS5wb3NpdGlvbiA9ICJhYnNvbHV0ZSI7CiAgICAgICAgdmFyIHBhZCA9IHVucGFja1BhZGRpbmcoc2l6aW5nLnBhZGRpbmcpOwogICAgICAgIGNlbC5zdHlsZS50b3AgPSBwYWQudG9wICsgInB4IjsKICAgICAgICBjZWwuc3R5bGUucmlnaHQgPSBwYWQucmlnaHQgKyAicHgiOwogICAgICAgIGNlbC5zdHlsZS5ib3R0b20gPSBwYWQuYm90dG9tICsgInB4IjsKICAgICAgICBjZWwuc3R5bGUubGVmdCA9IHBhZC5sZWZ0ICsgInB4IjsKICAgICAgICBlbC5zdHlsZS53aWR0aCA9ICIxMDAlIjsKICAgICAgICBlbC5zdHlsZS5oZWlnaHQgPSAiMTAwJSI7CiAgICAgIH0KCiAgICAgIHJldHVybiB7CiAgICAgICAgZ2V0V2lkdGg6IGZ1bmN0aW9uKCkgeyByZXR1cm4gY2VsLm9mZnNldFdpZHRoOyB9LAogICAgICAgIGdldEhlaWdodDogZnVuY3Rpb24oKSB7IHJldHVybiBjZWwub2Zmc2V0SGVpZ2h0OyB9CiAgICAgIH07CgogICAgfSBlbHNlIHsKICAgICAgZWwuc3R5bGUud2lkdGggPSBweChzaXppbmcud2lkdGgpOwogICAgICBlbC5zdHlsZS5oZWlnaHQgPSBweChzaXppbmcuaGVpZ2h0KTsKCiAgICAgIHJldHVybiB7CiAgICAgICAgZ2V0V2lkdGg6IGZ1bmN0aW9uKCkgeyByZXR1cm4gZWwub2Zmc2V0V2lkdGg7IH0sCiAgICAgICAgZ2V0SGVpZ2h0OiBmdW5jdGlvbigpIHsgcmV0dXJuIGVsLm9mZnNldEhlaWdodDsgfQogICAgICB9OwogICAgfQogIH0KCiAgLy8gRGVmYXVsdCBpbXBsZW1lbnRhdGlvbnMgZm9yIG1ldGhvZHMKICB2YXIgZGVmYXVsdHMgPSB7CiAgICBmaW5kOiBmdW5jdGlvbihzY29wZSkgewogICAgICByZXR1cm4gcXVlcnlTZWxlY3RvckFsbChzY29wZSwgIi4iICsgdGhpcy5uYW1lKTsKICAgIH0sCiAgICByZW5kZXJFcnJvcjogZnVuY3Rpb24oZWwsIGVycikgewogICAgICB2YXIgJGVsID0gJChlbCk7CgogICAgICB0aGlzLmNsZWFyRXJyb3IoZWwpOwoKICAgICAgLy8gQWRkIGFsbCB0aGVzZSBlcnJvciBjbGFzc2VzLCBhcyBTaGlueSBkb2VzCiAgICAgIHZhciBlcnJDbGFzcyA9ICJzaGlueS1vdXRwdXQtZXJyb3IiOwogICAgICBpZiAoZXJyLnR5cGUgIT09IG51bGwpIHsKICAgICAgICAvLyB1c2UgdGhlIGNsYXNzZXMgb2YgdGhlIGVycm9yIGNvbmRpdGlvbiBhcyBDU1MgY2xhc3MgbmFtZXMKICAgICAgICBlcnJDbGFzcyA9IGVyckNsYXNzICsgIiAiICsgJC5tYXAoYXNBcnJheShlcnIudHlwZSksIGZ1bmN0aW9uKHR5cGUpIHsKICAgICAgICAgIHJldHVybiBlcnJDbGFzcyArICItIiArIHR5cGU7CiAgICAgICAgfSkuam9pbigiICIpOwogICAgICB9CiAgICAgIGVyckNsYXNzID0gZXJyQ2xhc3MgKyAiIGh0bWx3aWRnZXRzLWVycm9yIjsKCiAgICAgIC8vIElzIGVsIGlubGluZSBvciBibG9jaz8gSWYgaW5saW5lIG9yIGlubGluZS1ibG9jaywganVzdCBkaXNwbGF5Om5vbmUgaXQKICAgICAgLy8gYW5kIGFkZCBhbiBpbmxpbmUgZXJyb3IuCiAgICAgIHZhciBkaXNwbGF5ID0gJGVsLmNzcygiZGlzcGxheSIpOwogICAgICAkZWwuZGF0YSgicmVzdG9yZS1kaXNwbGF5LW1vZGUiLCBkaXNwbGF5KTsKCiAgICAgIGlmIChkaXNwbGF5ID09PSAiaW5saW5lIiB8fCBkaXNwbGF5ID09PSAiaW5saW5lLWJsb2NrIikgewogICAgICAgICRlbC5oaWRlKCk7CiAgICAgICAgaWYgKGVyci5tZXNzYWdlICE9PSAiIikgewogICAgICAgICAgdmFyIGVycm9yU3BhbiA9ICQoIjxzcGFuPiIpLmFkZENsYXNzKGVyckNsYXNzKTsKICAgICAgICAgIGVycm9yU3Bhbi50ZXh0KGVyci5tZXNzYWdlKTsKICAgICAgICAgICRlbC5hZnRlcihlcnJvclNwYW4pOwogICAgICAgIH0KICAgICAgfSBlbHNlIGlmIChkaXNwbGF5ID09PSAiYmxvY2siKSB7CiAgICAgICAgLy8gSWYgYmxvY2ssIGFkZCBhbiBlcnJvciBqdXN0IGFmdGVyIHRoZSBlbCwgc2V0IHZpc2liaWxpdHk6bm9uZSBvbiB0aGUKICAgICAgICAvLyBlbCwgYW5kIHBvc2l0aW9uIHRoZSBlcnJvciB0byBiZSBvbiB0b3Agb2YgdGhlIGVsLgogICAgICAgIC8vIE1hcmsgaXQgd2l0aCBhIHVuaXF1ZSBJRCBhbmQgQ1NTIGNsYXNzIHNvIHdlIGNhbiByZW1vdmUgaXQgbGF0ZXIuCiAgICAgICAgJGVsLmNzcygidmlzaWJpbGl0eSIsICJoaWRkZW4iKTsKICAgICAgICBpZiAoZXJyLm1lc3NhZ2UgIT09ICIiKSB7CiAgICAgICAgICB2YXIgZXJyb3JEaXYgPSAkKCI8ZGl2PiIpLmFkZENsYXNzKGVyckNsYXNzKS5jc3MoInBvc2l0aW9uIiwgImFic29sdXRlIikKICAgICAgICAgICAgLmNzcygidG9wIiwgZWwub2Zmc2V0VG9wKQogICAgICAgICAgICAuY3NzKCJsZWZ0IiwgZWwub2Zmc2V0TGVmdCkKICAgICAgICAgICAgLy8gc2V0dGluZyB3aWR0aCBjYW4gcHVzaCBvdXQgdGhlIHBhZ2Ugc2l6ZSwgZm9yY2luZyBvdGhlcndpc2UKICAgICAgICAgICAgLy8gdW5uZWNlc3Nhcnkgc2Nyb2xsYmFycyB0byBhcHBlYXIgYW5kIG1ha2luZyBpdCBpbXBvc3NpYmxlIGZvcgogICAgICAgICAgICAvLyB0aGUgZWxlbWVudCB0byBzaHJpbms7IHNvIHVzZSBtYXgtd2lkdGggaW5zdGVhZAogICAgICAgICAgICAuY3NzKCJtYXhXaWR0aCIsIGVsLm9mZnNldFdpZHRoKQogICAgICAgICAgICAuY3NzKCJoZWlnaHQiLCBlbC5vZmZzZXRIZWlnaHQpOwogICAgICAgICAgZXJyb3JEaXYudGV4dChlcnIubWVzc2FnZSk7CiAgICAgICAgICAkZWwuYWZ0ZXIoZXJyb3JEaXYpOwoKICAgICAgICAgIC8vIFJlYWxseSBkdW1iIHdheSB0byBrZWVwIHRoZSBzaXplL3Bvc2l0aW9uIG9mIHRoZSBlcnJvciBpbiBzeW5jIHdpdGgKICAgICAgICAgIC8vIHRoZSBwYXJlbnQgZWxlbWVudCBhcyB0aGUgd2luZG93IGlzIHJlc2l6ZWQgb3Igd2hhdGV2ZXIuCiAgICAgICAgICB2YXIgaW50SWQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKICAgICAgICAgICAgaWYgKCFlcnJvckRpdlswXS5wYXJlbnRFbGVtZW50KSB7CiAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRJZCk7CiAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVycm9yRGl2CiAgICAgICAgICAgICAgLmNzcygidG9wIiwgZWwub2Zmc2V0VG9wKQogICAgICAgICAgICAgIC5jc3MoImxlZnQiLCBlbC5vZmZzZXRMZWZ0KQogICAgICAgICAgICAgIC5jc3MoIm1heFdpZHRoIiwgZWwub2Zmc2V0V2lkdGgpCiAgICAgICAgICAgICAgLmNzcygiaGVpZ2h0IiwgZWwub2Zmc2V0SGVpZ2h0KTsKICAgICAgICAgIH0sIDUwMCk7CiAgICAgICAgfQogICAgICB9CiAgICB9LAogICAgY2xlYXJFcnJvcjogZnVuY3Rpb24oZWwpIHsKICAgICAgdmFyICRlbCA9ICQoZWwpOwogICAgICB2YXIgZGlzcGxheSA9ICRlbC5kYXRhKCJyZXN0b3JlLWRpc3BsYXktbW9kZSIpOwogICAgICAkZWwuZGF0YSgicmVzdG9yZS1kaXNwbGF5LW1vZGUiLCBudWxsKTsKCiAgICAgIGlmIChkaXNwbGF5ID09PSAiaW5saW5lIiB8fCBkaXNwbGF5ID09PSAiaW5saW5lLWJsb2NrIikgewogICAgICAgIGlmIChkaXNwbGF5KQogICAgICAgICAgJGVsLmNzcygiZGlzcGxheSIsIGRpc3BsYXkpOwogICAgICAgICQoZWwubmV4dFNpYmxpbmcpLmZpbHRlcigiLmh0bWx3aWRnZXRzLWVycm9yIikucmVtb3ZlKCk7CiAgICAgIH0gZWxzZSBpZiAoZGlzcGxheSA9PT0gImJsb2NrIil7CiAgICAgICAgJGVsLmNzcygidmlzaWJpbGl0eSIsICJpbmhlcml0Iik7CiAgICAgICAgJChlbC5uZXh0U2libGluZykuZmlsdGVyKCIuaHRtbHdpZGdldHMtZXJyb3IiKS5yZW1vdmUoKTsKICAgICAgfQogICAgfSwKICAgIHNpemluZzoge30KICB9OwoKICAvLyBDYWxsZWQgYnkgd2lkZ2V0IGJpbmRpbmdzIHRvIHJlZ2lzdGVyIGEgbmV3IHR5cGUgb2Ygd2lkZ2V0LiBUaGUgZGVmaW5pdGlvbgogIC8vIG9iamVjdCBjYW4gY29udGFpbiB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6CiAgLy8gLSBuYW1lIChyZXF1aXJlZCkgLSBBIHN0cmluZyBpbmRpY2F0aW5nIHRoZSBiaW5kaW5nIG5hbWUsIHdoaWNoIHdpbGwgYmUKICAvLyAgIHVzZWQgYnkgZGVmYXVsdCBhcyB0aGUgQ1NTIGNsYXNzbmFtZSB0byBsb29rIGZvci4KICAvLyAtIGluaXRpYWxpemUgKG9wdGlvbmFsKSAtIEEgZnVuY3Rpb24oZWwpIHRoYXQgd2lsbCBiZSBjYWxsZWQgb25jZSBwZXIKICAvLyAgIHdpZGdldCBlbGVtZW50OyBpZiBhIHZhbHVlIGlzIHJldHVybmVkLCBpdCB3aWxsIGJlIHBhc3NlZCBhcyB0aGUgdGhpcmQKICAvLyAgIHZhbHVlIHRvIHJlbmRlclZhbHVlLgogIC8vIC0gcmVuZGVyVmFsdWUgKHJlcXVpcmVkKSAtIEEgZnVuY3Rpb24oZWwsIGRhdGEsIGluaXRWYWx1ZSkgdGhhdCB3aWxsIGJlCiAgLy8gICBjYWxsZWQgd2l0aCBkYXRhLiBTdGF0aWMgY29udGV4dHMgd2lsbCBjYXVzZSB0aGlzIHRvIGJlIGNhbGxlZCBvbmNlIHBlcgogIC8vICAgZWxlbWVudDsgU2hpbnkgYXBwcyB3aWxsIGNhdXNlIHRoaXMgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHBlcgogIC8vICAgZWxlbWVudCwgYXMgdGhlIGRhdGEgY2hhbmdlcy4KICB3aW5kb3cuSFRNTFdpZGdldHMud2lkZ2V0ID0gZnVuY3Rpb24oZGVmaW5pdGlvbikgewogICAgaWYgKCFkZWZpbml0aW9uLm5hbWUpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCJXaWRnZXQgbXVzdCBoYXZlIGEgbmFtZSIpOwogICAgfQogICAgaWYgKCFkZWZpbml0aW9uLnR5cGUpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCJXaWRnZXQgbXVzdCBoYXZlIGEgdHlwZSIpOwogICAgfQogICAgLy8gQ3VycmVudGx5IHdlIG9ubHkgc3VwcG9ydCBvdXRwdXQgd2lkZ2V0cwogICAgaWYgKGRlZmluaXRpb24udHlwZSAhPT0gIm91dHB1dCIpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCJVbnJlY29nbml6ZWQgd2lkZ2V0IHR5cGUgJyIgKyBkZWZpbml0aW9uLnR5cGUgKyAiJyIpOwogICAgfQogICAgLy8gVE9ETzogVmVyaWZ5IHRoYXQgLm5hbWUgaXMgYSB2YWxpZCBDU1MgY2xhc3NuYW1lCgogICAgLy8gU3VwcG9ydCBuZXctc3R5bGUgaW5zdGFuY2UtYm91bmQgZGVmaW5pdGlvbnMuIE9sZC1zdHlsZSBjbGFzcy1ib3VuZAogICAgLy8gZGVmaW5pdGlvbnMgaGF2ZSBvbmUgd2lkZ2V0ICJvYmplY3QiIHBlciB3aWRnZXQgcGVyIHR5cGUvY2xhc3Mgb2YKICAgIC8vIHdpZGdldDsgdGhlIHJlbmRlclZhbHVlIGFuZCByZXNpemUgbWV0aG9kcyBvbiBzdWNoIHdpZGdldCBvYmplY3RzCiAgICAvLyB0YWtlIGVsIGFuZCBpbnN0YW5jZSBhcmd1bWVudHMsIGJlY2F1c2UgdGhlIHdpZGdldCBvYmplY3QgY2FuJ3QKICAgIC8vIHN0b3JlIHRoZW0uIE5ldy1zdHlsZSBpbnN0YW5jZS1ib3VuZCBkZWZpbml0aW9ucyBoYXZlIG9uZSB3aWRnZXQKICAgIC8vIG9iamVjdCBwZXIgd2lkZ2V0IGluc3RhbmNlOyB0aGUgZGVmaW5pdGlvbiB0aGF0J3MgcGFzc2VkIGluIGRvZXNuJ3QKICAgIC8vIHByb3ZpZGUgcmVuZGVyVmFsdWUgb3IgcmVzaXplIG1ldGhvZHMgYXQgYWxsLCBqdXN0IHRoZSBzaW5nbGUgbWV0aG9kCiAgICAvLyAgIGZhY3RvcnkoZWwsIHdpZHRoLCBoZWlnaHQpCiAgICAvLyB3aGljaCByZXR1cm5zIGFuIG9iamVjdCB0aGF0IGhhcyByZW5kZXJWYWx1ZSh4KSBhbmQgcmVzaXplKHcsIGgpLgogICAgLy8gVGhpcyBlbmFibGVzIGEgZmFyIG1vcmUgbmF0dXJhbCBwcm9ncmFtbWluZyBzdHlsZSBmb3IgdGhlIHdpZGdldAogICAgLy8gYXV0aG9yLCB3aG8gY2FuIHN0b3JlIHBlci1pbnN0YW5jZSBzdGF0ZSB1c2luZyBlaXRoZXIgT08tc3R5bGUKICAgIC8vIGluc3RhbmNlIGZpZWxkcyBvciBmdW5jdGlvbmFsLXN0eWxlIGNsb3N1cmUgdmFyaWFibGVzIChJIGd1ZXNzIHRoaXMKICAgIC8vIGlzIGluIGNvbnRyYXN0IHRvIHdoYXQgY2FuIG9ubHkgYmUgY2FsbGVkIEMtc3R5bGUgcHNldWRvLU9PIHdoaWNoIGlzCiAgICAvLyB3aGF0IHdlIHJlcXVpcmVkIGJlZm9yZSkuCiAgICBpZiAoZGVmaW5pdGlvbi5mYWN0b3J5KSB7CiAgICAgIGRlZmluaXRpb24gPSBjcmVhdGVMZWdhY3lEZWZpbml0aW9uQWRhcHRlcihkZWZpbml0aW9uKTsKICAgIH0KCiAgICBpZiAoIWRlZmluaXRpb24ucmVuZGVyVmFsdWUpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCJXaWRnZXQgbXVzdCBoYXZlIGEgcmVuZGVyVmFsdWUgZnVuY3Rpb24iKTsKICAgIH0KCiAgICAvLyBGb3Igc3RhdGljIHJlbmRlcmluZyAobm9uLVNoaW55KSwgdXNlIGEgc2ltcGxlIHdpZGdldCByZWdpc3RyYXRpb24KICAgIC8vIHNjaGVtZS4gV2UgYWxzbyB1c2UgdGhpcyBzY2hlbWUgZm9yIFNoaW55IGFwcHMvZG9jdW1lbnRzIHRoYXQgYWxzbwogICAgLy8gY29udGFpbiBzdGF0aWMgd2lkZ2V0cy4KICAgIHdpbmRvdy5IVE1MV2lkZ2V0cy53aWRnZXRzID0gd2luZG93LkhUTUxXaWRnZXRzLndpZGdldHMgfHwgW107CiAgICAvLyBNZXJnZSBkZWZhdWx0cyBpbnRvIHRoZSBkZWZpbml0aW9uOyBkb24ndCBtdXRhdGUgdGhlIG9yaWdpbmFsIGRlZmluaXRpb24uCiAgICB2YXIgc3RhdGljQmluZGluZyA9IGV4dGVuZCh7fSwgZGVmYXVsdHMsIGRlZmluaXRpb24pOwogICAgb3ZlcnJpZGVNZXRob2Qoc3RhdGljQmluZGluZywgImZpbmQiLCBmdW5jdGlvbihzdXBlcmZ1bmMpIHsKICAgICAgcmV0dXJuIGZ1bmN0aW9uKHNjb3BlKSB7CiAgICAgICAgdmFyIHJlc3VsdHMgPSBzdXBlcmZ1bmMoc2NvcGUpOwogICAgICAgIC8vIEZpbHRlciBvdXQgU2hpbnkgb3V0cHV0cywgd2Ugb25seSB3YW50IHRoZSBzdGF0aWMga2luZAogICAgICAgIHJldHVybiBmaWx0ZXJCeUNsYXNzKHJlc3VsdHMsICJodG1sLXdpZGdldC1vdXRwdXQiLCBmYWxzZSk7CiAgICAgIH07CiAgICB9KTsKICAgIHdpbmRvdy5IVE1MV2lkZ2V0cy53aWRnZXRzLnB1c2goc3RhdGljQmluZGluZyk7CgogICAgaWYgKHNoaW55TW9kZSkgewogICAgICAvLyBTaGlueSBpcyBydW5uaW5nLiBSZWdpc3RlciB0aGUgZGVmaW5pdGlvbiB3aXRoIGFuIG91dHB1dCBiaW5kaW5nLgogICAgICAvLyBUaGUgZGVmaW5pdGlvbiBpdHNlbGYgd2lsbCBub3QgYmUgdGhlIG91dHB1dCBiaW5kaW5nLCBpbnN0ZWFkCiAgICAgIC8vIHdlIHdpbGwgbWFrZSBhbiBvdXRwdXQgYmluZGluZyBvYmplY3QgdGhhdCBkZWxlZ2F0ZXMgdG8gdGhlCiAgICAgIC8vIGRlZmluaXRpb24uIFRoaXMgaXMgYmVjYXVzZSB3ZSBmb29saXNobHkgdXNlZCB0aGUgc2FtZSBtZXRob2QKICAgICAgLy8gbmFtZSAocmVuZGVyVmFsdWUpIGZvciBodG1sd2lkZ2V0cyBkZWZpbml0aW9uIGFuZCBTaGlueSBiaW5kaW5ncwogICAgICAvLyBidXQgdGhleSBhY3R1YWxseSBoYXZlIHF1aXRlIGRpZmZlcmVudCBzZW1hbnRpY3MgKHRoZSBTaGlueQogICAgICAvLyBiaW5kaW5ncyByZWNlaXZlIGRhdGEgdGhhdCBpbmNsdWRlcyBsb3RzIG9mIG1ldGFkYXRhIHRoYXQgaXQKICAgICAgLy8gc3RyaXBzIG9mZiBiZWZvcmUgY2FsbGluZyBodG1sd2lkZ2V0cyByZW5kZXJWYWx1ZSkuIFdlIGNhbid0CiAgICAgIC8vIGp1c3QgaWdub3JlIHRoZSBkaWZmZXJlbmNlIGJlY2F1c2UgaW4gc29tZSB3aWRnZXRzIGl0J3MgaGVscGZ1bAogICAgICAvLyB0byBjYWxsIHRoaXMucmVuZGVyVmFsdWUoKSBmcm9tIGluc2lkZSBvZiByZXNpemUoKSwgYW5kIGlmCiAgICAgIC8vIHdlJ3JlIG5vdCBkZWxlZ2F0aW5nLCB0aGVuIHRoYXQgY2FsbCB3aWxsIGdvIHRvIHRoZSBTaGlueQogICAgICAvLyB2ZXJzaW9uIGluc3RlYWQgb2YgdGhlIGh0bWx3aWRnZXRzIHZlcnNpb24uCgogICAgICAvLyBNZXJnZSBkZWZhdWx0cyB3aXRoIGRlZmluaXRpb24sIHdpdGhvdXQgbXV0YXRpbmcgZWl0aGVyLgogICAgICB2YXIgYmluZGluZ0RlZiA9IGV4dGVuZCh7fSwgZGVmYXVsdHMsIGRlZmluaXRpb24pOwoKICAgICAgLy8gVGhpcyBvYmplY3Qgd2lsbCBiZSBvdXIgYWN0dWFsIFNoaW55IGJpbmRpbmcuCiAgICAgIHZhciBzaGlueUJpbmRpbmcgPSBuZXcgU2hpbnkuT3V0cHV0QmluZGluZygpOwoKICAgICAgLy8gV2l0aCBhIGZldyBleGNlcHRpb25zLCB3ZSdsbCB3YW50IHRvIHNpbXBseSB1c2UgdGhlIGJpbmRpbmdEZWYncwogICAgICAvLyB2ZXJzaW9uIG9mIG1ldGhvZHMgaWYgdGhleSBhcmUgYXZhaWxhYmxlLCBvdGhlcndpc2UgZmFsbCBiYWNrIHRvCiAgICAgIC8vIFNoaW55J3MgZGVmYXVsdHMuIE5PVEU6IElmIFNoaW55J3Mgb3V0cHV0IGJpbmRpbmdzIGdhaW4gYWRkaXRpb25hbAogICAgICAvLyBtZXRob2RzIGluIHRoZSBmdXR1cmUsIGFuZCB3ZSB3YW50IHRoZW0gdG8gYmUgb3ZlcnJpZGVhYmxlIGJ5CiAgICAgIC8vIEhUTUxXaWRnZXQgYmluZGluZyBkZWZpbml0aW9ucywgdGhlbiB3ZSdsbCBuZWVkIHRvIGFkZCB0aGVtIHRvIHRoaXMKICAgICAgLy8gbGlzdC4KICAgICAgZGVsZWdhdGVNZXRob2Qoc2hpbnlCaW5kaW5nLCBiaW5kaW5nRGVmLCAiZ2V0SWQiKTsKICAgICAgZGVsZWdhdGVNZXRob2Qoc2hpbnlCaW5kaW5nLCBiaW5kaW5nRGVmLCAib25WYWx1ZUNoYW5nZSIpOwogICAgICBkZWxlZ2F0ZU1ldGhvZChzaGlueUJpbmRpbmcsIGJpbmRpbmdEZWYsICJvblZhbHVlRXJyb3IiKTsKICAgICAgZGVsZWdhdGVNZXRob2Qoc2hpbnlCaW5kaW5nLCBiaW5kaW5nRGVmLCAicmVuZGVyRXJyb3IiKTsKICAgICAgZGVsZWdhdGVNZXRob2Qoc2hpbnlCaW5kaW5nLCBiaW5kaW5nRGVmLCAiY2xlYXJFcnJvciIpOwogICAgICBkZWxlZ2F0ZU1ldGhvZChzaGlueUJpbmRpbmcsIGJpbmRpbmdEZWYsICJzaG93UHJvZ3Jlc3MiKTsKCiAgICAgIC8vIFRoZSBmaW5kLCByZW5kZXJWYWx1ZSwgYW5kIHJlc2l6ZSBhcmUgaGFuZGxlZCBkaWZmZXJlbnRseSwgYmVjYXVzZSB3ZQogICAgICAvLyB3YW50IHRvIGFjdHVhbGx5IGRlY29yYXRlIHRoZSBiZWhhdmlvciBvZiB0aGUgYmluZGluZ0RlZiBtZXRob2RzLgoKICAgICAgc2hpbnlCaW5kaW5nLmZpbmQgPSBmdW5jdGlvbihzY29wZSkgewogICAgICAgIHZhciByZXN1bHRzID0gYmluZGluZ0RlZi5maW5kKHNjb3BlKTsKCiAgICAgICAgLy8gT25seSByZXR1cm4gZWxlbWVudHMgdGhhdCBhcmUgU2hpbnkgb3V0cHV0cywgbm90IHN0YXRpYyBvbmVzCiAgICAgICAgdmFyIGR5bmFtaWNSZXN1bHRzID0gcmVzdWx0cy5maWx0ZXIoIi5odG1sLXdpZGdldC1vdXRwdXQiKTsKCiAgICAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IHdoYXRldmVyIGNhdXNlZCBTaGlueSB0byB0aGluayB0aGVyZSBtaWdodCBiZQogICAgICAgIC8vIG5ldyBkeW5hbWljIG91dHB1dHMsIGFsc28gY2F1c2VkIHRoZXJlIHRvIGJlIG5ldyBzdGF0aWMgb3V0cHV0cy4KICAgICAgICAvLyBTaW5jZSB0aGVyZSBtaWdodCBiZSBsb3RzIG9mIGRpZmZlcmVudCBodG1sd2lkZ2V0cyBiaW5kaW5ncywgd2UKICAgICAgICAvLyBzY2hlZHVsZSBleGVjdXRpb24gZm9yIGxhdGVyLS1ubyBuZWVkIHRvIHN0YXRpY1JlbmRlciBtdWx0aXBsZQogICAgICAgIC8vIHRpbWVzLgogICAgICAgIGlmIChyZXN1bHRzLmxlbmd0aCAhPT0gZHluYW1pY1Jlc3VsdHMubGVuZ3RoKQogICAgICAgICAgc2NoZWR1bGVTdGF0aWNSZW5kZXIoKTsKCiAgICAgICAgcmV0dXJuIGR5bmFtaWNSZXN1bHRzOwogICAgICB9OwoKICAgICAgLy8gV3JhcCByZW5kZXJWYWx1ZSB0byBoYW5kbGUgaW5pdGlhbGl6YXRpb24sIHdoaWNoIHVuZm9ydHVuYXRlbHkgaXNuJ3QKICAgICAgLy8gc3VwcG9ydGVkIG5hdGl2ZWx5IGJ5IFNoaW55IGF0IHRoZSB0aW1lIG9mIHRoaXMgd3JpdGluZy4KCiAgICAgIHNoaW55QmluZGluZy5yZW5kZXJWYWx1ZSA9IGZ1bmN0aW9uKGVsLCBkYXRhKSB7CiAgICAgICAgU2hpbnkucmVuZGVyRGVwZW5kZW5jaWVzKGRhdGEuZGVwcyk7CiAgICAgICAgLy8gUmVzb2x2ZSBzdHJpbmdzIG1hcmtlZCBhcyBqYXZhc2NyaXB0IGxpdGVyYWxzIHRvIG9iamVjdHMKICAgICAgICBpZiAoIShkYXRhLmV2YWxzIGluc3RhbmNlb2YgQXJyYXkpKSBkYXRhLmV2YWxzID0gW2RhdGEuZXZhbHNdOwogICAgICAgIGZvciAodmFyIGkgPSAwOyBkYXRhLmV2YWxzICYmIGkgPCBkYXRhLmV2YWxzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICB3aW5kb3cuSFRNTFdpZGdldHMuZXZhbHVhdGVTdHJpbmdNZW1iZXIoZGF0YS54LCBkYXRhLmV2YWxzW2ldKTsKICAgICAgICB9CiAgICAgICAgaWYgKCFiaW5kaW5nRGVmLnJlbmRlck9uTnVsbFZhbHVlKSB7CiAgICAgICAgICBpZiAoZGF0YS54ID09PSBudWxsKSB7CiAgICAgICAgICAgIGVsLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZWwuc3R5bGUudmlzaWJpbGl0eSA9ICJpbmhlcml0IjsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCFlbGVtZW50RGF0YShlbCwgImluaXRpYWxpemVkIikpIHsKICAgICAgICAgIGluaXRTaXppbmcoZWwpOwoKICAgICAgICAgIGVsZW1lbnREYXRhKGVsLCAiaW5pdGlhbGl6ZWQiLCB0cnVlKTsKICAgICAgICAgIGlmIChiaW5kaW5nRGVmLmluaXRpYWxpemUpIHsKICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGJpbmRpbmdEZWYuaW5pdGlhbGl6ZShlbCwgZWwub2Zmc2V0V2lkdGgsCiAgICAgICAgICAgICAgZWwub2Zmc2V0SGVpZ2h0KTsKICAgICAgICAgICAgZWxlbWVudERhdGEoZWwsICJpbml0X3Jlc3VsdCIsIHJlc3VsdCk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGJpbmRpbmdEZWYucmVuZGVyVmFsdWUoZWwsIGRhdGEueCwgZWxlbWVudERhdGEoZWwsICJpbml0X3Jlc3VsdCIpKTsKICAgICAgICBldmFsQW5kUnVuKGRhdGEuanNIb29rcy5yZW5kZXIsIGVsZW1lbnREYXRhKGVsLCAiaW5pdF9yZXN1bHQiKSwgW2VsLCBkYXRhLnhdKTsKICAgICAgfTsKCiAgICAgIC8vIE9ubHkgb3ZlcnJpZGUgcmVzaXplIGlmIGJpbmRpbmdEZWYgaW1wbGVtZW50cyBpdAogICAgICBpZiAoYmluZGluZ0RlZi5yZXNpemUpIHsKICAgICAgICBzaGlueUJpbmRpbmcucmVzaXplID0gZnVuY3Rpb24oZWwsIHdpZHRoLCBoZWlnaHQpIHsKICAgICAgICAgIC8vIFNoaW55IGNhbiBjYWxsIHJlc2l6ZSBiZWZvcmUgaW5pdGlhbGl6ZS9yZW5kZXJWYWx1ZSBoYXZlIGJlZW4KICAgICAgICAgIC8vIGNhbGxlZCwgd2hpY2ggZG9lc24ndCBtYWtlIHNlbnNlIGZvciB3aWRnZXRzLgogICAgICAgICAgaWYgKGVsZW1lbnREYXRhKGVsLCAiaW5pdGlhbGl6ZWQiKSkgewogICAgICAgICAgICBiaW5kaW5nRGVmLnJlc2l6ZShlbCwgd2lkdGgsIGhlaWdodCwgZWxlbWVudERhdGEoZWwsICJpbml0X3Jlc3VsdCIpKTsKICAgICAgICAgIH0KICAgICAgICB9OwogICAgICB9CgogICAgICBTaGlueS5vdXRwdXRCaW5kaW5ncy5yZWdpc3RlcihzaGlueUJpbmRpbmcsIGJpbmRpbmdEZWYubmFtZSk7CiAgICB9CiAgfTsKCiAgdmFyIHNjaGVkdWxlU3RhdGljUmVuZGVyVGltZXJJZCA9IG51bGw7CiAgZnVuY3Rpb24gc2NoZWR1bGVTdGF0aWNSZW5kZXIoKSB7CiAgICBpZiAoIXNjaGVkdWxlU3RhdGljUmVuZGVyVGltZXJJZCkgewogICAgICBzY2hlZHVsZVN0YXRpY1JlbmRlclRpbWVySWQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgIHNjaGVkdWxlU3RhdGljUmVuZGVyVGltZXJJZCA9IG51bGw7CiAgICAgICAgd2luZG93LkhUTUxXaWRnZXRzLnN0YXRpY1JlbmRlcigpOwogICAgICB9LCAxKTsKICAgIH0KICB9CgogIC8vIFJlbmRlciBzdGF0aWMgd2lkZ2V0cyBhZnRlciB0aGUgZG9jdW1lbnQgZmluaXNoZXMgbG9hZGluZwogIC8vIFN0YXRpY2FsbHkgcmVuZGVyIGFsbCBlbGVtZW50cyB0aGF0IGFyZSBvZiB0aGlzIHdpZGdldCdzIGNsYXNzCiAgd2luZG93LkhUTUxXaWRnZXRzLnN0YXRpY1JlbmRlciA9IGZ1bmN0aW9uKCkgewogICAgdmFyIGJpbmRpbmdzID0gd2luZG93LkhUTUxXaWRnZXRzLndpZGdldHMgfHwgW107CiAgICBmb3JFYWNoKGJpbmRpbmdzLCBmdW5jdGlvbihiaW5kaW5nKSB7CiAgICAgIHZhciBtYXRjaGVzID0gYmluZGluZy5maW5kKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCk7CiAgICAgIGZvckVhY2gobWF0Y2hlcywgZnVuY3Rpb24oZWwpIHsKICAgICAgICB2YXIgc2l6ZU9iaiA9IGluaXRTaXppbmcoZWwsIGJpbmRpbmcpOwoKICAgICAgICBpZiAoaGFzQ2xhc3MoZWwsICJodG1sLXdpZGdldC1zdGF0aWMtYm91bmQiKSkKICAgICAgICAgIHJldHVybjsKICAgICAgICBlbC5jbGFzc05hbWUgPSBlbC5jbGFzc05hbWUgKyAiIGh0bWwtd2lkZ2V0LXN0YXRpYy1ib3VuZCI7CgogICAgICAgIHZhciBpbml0UmVzdWx0OwogICAgICAgIGlmIChiaW5kaW5nLmluaXRpYWxpemUpIHsKICAgICAgICAgIGluaXRSZXN1bHQgPSBiaW5kaW5nLmluaXRpYWxpemUoZWwsCiAgICAgICAgICAgIHNpemVPYmogPyBzaXplT2JqLmdldFdpZHRoKCkgOiBlbC5vZmZzZXRXaWR0aCwKICAgICAgICAgICAgc2l6ZU9iaiA\/IHNpemVPYmouZ2V0SGVpZ2h0KCkgOiBlbC5vZmZzZXRIZWlnaHQKICAgICAgICAgICk7CiAgICAgICAgICBlbGVtZW50RGF0YShlbCwgImluaXRfcmVzdWx0IiwgaW5pdFJlc3VsdCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoYmluZGluZy5yZXNpemUpIHsKICAgICAgICAgIHZhciBsYXN0U2l6ZSA9IHsKICAgICAgICAgICAgdzogc2l6ZU9iaiA\/IHNpemVPYmouZ2V0V2lkdGgoKSA6IGVsLm9mZnNldFdpZHRoLAogICAgICAgICAgICBoOiBzaXplT2JqID8gc2l6ZU9iai5nZXRIZWlnaHQoKSA6IGVsLm9mZnNldEhlaWdodAogICAgICAgICAgfTsKICAgICAgICAgIHZhciByZXNpemVIYW5kbGVyID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgc2l6ZSA9IHsKICAgICAgICAgICAgICB3OiBzaXplT2JqID8gc2l6ZU9iai5nZXRXaWR0aCgpIDogZWwub2Zmc2V0V2lkdGgsCiAgICAgICAgICAgICAgaDogc2l6ZU9iaiA\/IHNpemVPYmouZ2V0SGVpZ2h0KCkgOiBlbC5vZmZzZXRIZWlnaHQKICAgICAgICAgICAgfTsKICAgICAgICAgICAgaWYgKHNpemUudyA9PT0gMCAmJiBzaXplLmggPT09IDApCiAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICBpZiAoc2l6ZS53ID09PSBsYXN0U2l6ZS53ICYmIHNpemUuaCA9PT0gbGFzdFNpemUuaCkKICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIGxhc3RTaXplID0gc2l6ZTsKICAgICAgICAgICAgYmluZGluZy5yZXNpemUoZWwsIHNpemUudywgc2l6ZS5oLCBpbml0UmVzdWx0KTsKICAgICAgICAgIH07CgogICAgICAgICAgb24od2luZG93LCAicmVzaXplIiwgcmVzaXplSGFuZGxlcik7CgogICAgICAgICAgLy8gVGhpcyBpcyBuZWVkZWQgZm9yIGNhc2VzIHdoZXJlIHdlJ3JlIHJ1bm5pbmcgaW4gYSBTaGlueQogICAgICAgICAgLy8gYXBwLCBidXQgdGhlIHdpZGdldCBpdHNlbGYgaXMgbm90IGEgU2hpbnkgb3V0cHV0LCBidXQKICAgICAgICAgIC8vIHJhdGhlciBhIHNpbXBsZSBzdGF0aWMgd2lkZ2V0LiBPbmUgZXhhbXBsZSBvZiB0aGlzIGlzCiAgICAgICAgICAvLyBhbiBybWFya2Rvd24gZG9jdW1lbnQgdGhhdCBoYXMgcnVudGltZTpzaGlueSBhbmQgd2lkZ2V0CiAgICAgICAgICAvLyB0aGF0IGlzbid0IGluIGEgcmVuZGVyIGZ1bmN0aW9uLiBTaGlueSBvbmx5IGtub3dzIHRvCiAgICAgICAgICAvLyBjYWxsIHJlc2l6ZSBoYW5kbGVycyBmb3IgU2hpbnkgb3V0cHV0cywgbm90IGZvciBzdGF0aWMKICAgICAgICAgIC8vIHdpZGdldHMsIHNvIHdlIGRvIGl0IG91cnNlbHZlcy4KICAgICAgICAgIGlmICh3aW5kb3cualF1ZXJ5KSB7CiAgICAgICAgICAgIHdpbmRvdy5qUXVlcnkoZG9jdW1lbnQpLm9uKAogICAgICAgICAgICAgICJzaG93bi5odG1sd2lkZ2V0cyBzaG93bi5icy50YWIuaHRtbHdpZGdldHMgc2hvd24uYnMuY29sbGFwc2UuaHRtbHdpZGdldHMiLAogICAgICAgICAgICAgIHJlc2l6ZUhhbmRsZXIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgd2luZG93LmpRdWVyeShkb2N1bWVudCkub24oCiAgICAgICAgICAgICAgImhpZGRlbi5odG1sd2lkZ2V0cyBoaWRkZW4uYnMudGFiLmh0bWx3aWRnZXRzIGhpZGRlbi5icy5jb2xsYXBzZS5odG1sd2lkZ2V0cyIsCiAgICAgICAgICAgICAgcmVzaXplSGFuZGxlcgogICAgICAgICAgICApOwogICAgICAgICAgfQoKICAgICAgICAgIC8vIFRoaXMgaXMgbmVlZGVkIGZvciB0aGUgc3BlY2lmaWMgY2FzZSBvZiBpb3NsaWRlcywgd2hpY2gKICAgICAgICAgIC8vIGZsaXBzIHNsaWRlcyBiZXR3ZWVuIGRpc3BsYXk6bm9uZSBhbmQgZGlzcGxheTpibG9jay4KICAgICAgICAgIC8vIElkZWFsbHkgd2Ugd291bGQgbm90IGhhdmUgdG8gaGF2ZSBpb3NsaWRlLXNwZWNpZmljIGNvZGUKICAgICAgICAgIC8vIGhlcmUsIGJ1dCByYXRoZXIgaGF2ZSBpb3NsaWRlcyByYWlzZSBhIGdlbmVyaWMgZXZlbnQsCiAgICAgICAgICAvLyBidXQgdGhlIHJtYXJrZG93biBwYWNrYWdlIGp1c3Qgd2VudCB0byBDUkFOIHNvIHRoZQogICAgICAgICAgLy8gd2luZG93IHRvIGdldHRpbmcgdGhhdCBmaXhlZCBtYXkgYmUgbG9uZy4KICAgICAgICAgIGlmICh3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcikgewogICAgICAgICAgICAvLyBJdCdzIE9LIHRvIGxpbWl0IHRoaXMgdG8gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIKICAgICAgICAgICAgLy8gYnJvd3NlcnMgYmVjYXVzZSBpb3NsaWRlcyBpdHNlbGYgb25seSBzdXBwb3J0cwogICAgICAgICAgICAvLyBzdWNoIGJyb3dzZXJzLgogICAgICAgICAgICBvbihkb2N1bWVudCwgInNsaWRlZW50ZXIiLCByZXNpemVIYW5kbGVyKTsKICAgICAgICAgICAgb24oZG9jdW1lbnQsICJzbGlkZWxlYXZlIiwgcmVzaXplSGFuZGxlcik7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICB2YXIgc2NyaXB0RGF0YSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInNjcmlwdFtkYXRhLWZvcj0nIiArIGVsLmlkICsgIiddW3R5cGU9J2FwcGxpY2F0aW9uL2pzb24nXSIpOwogICAgICAgIGlmIChzY3JpcHREYXRhKSB7CiAgICAgICAgICB2YXIgZGF0YSA9IEpTT04ucGFyc2Uoc2NyaXB0RGF0YS50ZXh0Q29udGVudCB8fCBzY3JpcHREYXRhLnRleHQpOwogICAgICAgICAgLy8gUmVzb2x2ZSBzdHJpbmdzIG1hcmtlZCBhcyBqYXZhc2NyaXB0IGxpdGVyYWxzIHRvIG9iamVjdHMKICAgICAgICAgIGlmICghKGRhdGEuZXZhbHMgaW5zdGFuY2VvZiBBcnJheSkpIGRhdGEuZXZhbHMgPSBbZGF0YS5ldmFsc107CiAgICAgICAgICBmb3IgKHZhciBrID0gMDsgZGF0YS5ldmFscyAmJiBrIDwgZGF0YS5ldmFscy5sZW5ndGg7IGsrKykgewogICAgICAgICAgICB3aW5kb3cuSFRNTFdpZGdldHMuZXZhbHVhdGVTdHJpbmdNZW1iZXIoZGF0YS54LCBkYXRhLmV2YWxzW2tdKTsKICAgICAgICAgIH0KICAgICAgICAgIGJpbmRpbmcucmVuZGVyVmFsdWUoZWwsIGRhdGEueCwgaW5pdFJlc3VsdCk7CiAgICAgICAgICBldmFsQW5kUnVuKGRhdGEuanNIb29rcy5yZW5kZXIsIGluaXRSZXN1bHQsIFtlbCwgZGF0YS54XSk7CiAgICAgICAgfQogICAgICB9KTsKICAgIH0pOwoKICAgIGludm9rZVBvc3RSZW5kZXJIYW5kbGVycygpOwogIH0KCgogIGZ1bmN0aW9uIGhhc19qUXVlcnkzKCkgewogICAgaWYgKCF3aW5kb3cualF1ZXJ5KSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIHZhciAkdmVyc2lvbiA9IHdpbmRvdy5qUXVlcnkuZm4uanF1ZXJ5OwogICAgdmFyICRtYWpvcl92ZXJzaW9uID0gcGFyc2VJbnQoJHZlcnNpb24uc3BsaXQoIi4iKVswXSk7CiAgICByZXR1cm4gJG1ham9yX3ZlcnNpb24gPj0gMzsKICB9CgogIC8qCiAgLyBTaGlueSAxLjQgYnVtcGVkIGpRdWVyeSBmcm9tIDEueCB0byAzLnggd2hpY2ggbWVhbnMgalF1ZXJ5J3MKICAvIG9uLXJlYWR5IGhhbmRsZXIgKGkuZS4sICQoZm4pKSBpcyBub3cgYXN5bmNyb25vdXMgKGkuZS4sIGl0IG5vdwogIC8gcmVhbGx5IG1lYW5zICQoc2V0VGltZW91dChmbikpLgogIC8gaHR0cHM6Ly9qcXVlcnkuY29tL3VwZ3JhZGUtZ3VpZGUvMy4wLyNicmVha2luZy1jaGFuZ2UtZG9jdW1lbnQtcmVhZHktaGFuZGxlcnMtYXJlLW5vdy1hc3luY2hyb25vdXMKICAvCiAgLyBTaW5jZSBTaGlueSB1c2VzICQoKSB0byBzY2hlZHVsZSBpbml0U2hpbnksIHNoaW55Pj0xLjQgY2FsbHMgaW5pdFNoaW55CiAgLyBvbmUgdGljayBsYXRlciB0aGFuIGl0IGRpZCBiZWZvcmUsIHdoaWNoIG1lYW5zIHN0YXRpY1JlbmRlcigpIGlzCiAgLyBjYWxsZWQgcmVuZGVyVmFsdWUoKSBlYXJsaWVyIHRoYW4gKGFkdmFuY2VkKSB3aWRnZXQgYXV0aG9ycyBtaWdodCBiZSBleHBlY3RpbmcuCiAgLyBodHRwczovL2dpdGh1Yi5jb20vcnN0dWRpby9zaGlueS9pc3N1ZXMvMjYzMAogIC8KICAvIEZvciBhIGNvbmNyZXRlIGV4YW1wbGUsIGxlYWZsZXQgaGFzIHNvbWUgbWV0aG9kcyAoZS5nLiwgdXBkYXRlQm91bmRzKQogIC8gd2hpY2ggcmVmZXJlbmNlIFNoaW55IG1ldGhvZHMgcmVnaXN0ZXJlZCBpbiBpbml0U2hpbnkgKGUuZy4sIHNldElucHV0VmFsdWUpLgogIC8gU2luY2UgbGVhZmxldCBpcyBwcml2eSB0byB0aGlzIGxpZmUtY3ljbGUsIGl0IGtub3dzIHRvIHVzZSBzZXRUaW1lb3V0KCkgdG8KICAvIGRlbGF5IGV4ZWN1dGlvbiBvZiB0aG9zZSBtZXRob2RzICh1bnRpbCBTaGlueSBtZXRob2RzIGFyZSByZWFkeSkKICAvIGh0dHBzOi8vZ2l0aHViLmNvbS9yc3R1ZGlvL2xlYWZsZXQvYmxvYi8xOGVjOTgxL2phdmFzY3JpcHQvc3JjL2luZGV4LmpzI0wyNjYtTDI2OAogIC8KICAvIElkZWFsbHkgd2lkZ2V0IGF1dGhvcnMgd291bGRuJ3QgbmVlZCB0byB1c2UgdGhpcyBzZXRUaW1lb3V0KCkgaGFjayB0aGF0CiAgLyBsZWFmbGV0IHVzZXMgdG8gY2FsbCBTaGlueSBtZXRob2RzIG9uIGEgc3RhdGljUmVuZGVyKCkuIEluIHRoZSBsb25nIHJ1biwKICAvIHRoZSBsb2dpYyBpbml0U2hpbnkgc2hvdWxkIGJlIGJyb2tlbiB1cCBzbyB0aGF0IG1ldGhvZCByZWdpc3RyYXRpb24gaGFwcGVucwogIC8gcmlnaHQgYXdheSwgYnV0IGJpbmRpbmcgaGFwcGVucyBsYXRlci4KICAqLwogIGZ1bmN0aW9uIG1heWJlU3RhdGljUmVuZGVyTGF0ZXIoKSB7CiAgICBpZiAoc2hpbnlNb2RlICYmIGhhc19qUXVlcnkzKCkpIHsKICAgICAgd2luZG93LmpRdWVyeSh3aW5kb3cuSFRNTFdpZGdldHMuc3RhdGljUmVuZGVyKTsKICAgIH0gZWxzZSB7CiAgICAgIHdpbmRvdy5IVE1MV2lkZ2V0cy5zdGF0aWNSZW5kZXIoKTsKICAgIH0KICB9CgogIGlmIChkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKSB7CiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgZnVuY3Rpb24oKSB7CiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBhcmd1bWVudHMuY2FsbGVlLCBmYWxzZSk7CiAgICAgIG1heWJlU3RhdGljUmVuZGVyTGF0ZXIoKTsKICAgIH0sIGZhbHNlKTsKICB9IGVsc2UgaWYgKGRvY3VtZW50LmF0dGFjaEV2ZW50KSB7CiAgICBkb2N1bWVudC5hdHRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIiwgZnVuY3Rpb24oKSB7CiAgICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAiY29tcGxldGUiKSB7CiAgICAgICAgZG9jdW1lbnQuZGV0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsIGFyZ3VtZW50cy5jYWxsZWUpOwogICAgICAgIG1heWJlU3RhdGljUmVuZGVyTGF0ZXIoKTsKICAgICAgfQogICAgfSk7CiAgfQoKCiAgd2luZG93LkhUTUxXaWRnZXRzLmdldEF0dGFjaG1lbnRVcmwgPSBmdW5jdGlvbihkZXBuYW1lLCBrZXkpIHsKICAgIC8vIElmIG5vIGtleSwgZGVmYXVsdCB0byB0aGUgZmlyc3QgaXRlbQogICAgaWYgKHR5cGVvZihrZXkpID09PSAidW5kZWZpbmVkIikKICAgICAga2V5ID0gMTsKCiAgICB2YXIgbGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGRlcG5hbWUgKyAiLSIgKyBrZXkgKyAiLWF0dGFjaG1lbnQiKTsKICAgIGlmICghbGluaykgewogICAgICB0aHJvdyBuZXcgRXJyb3IoIkF0dGFjaG1lbnQgIiArIGRlcG5hbWUgKyAiLyIgKyBrZXkgKyAiIG5vdCBmb3VuZCBpbiBkb2N1bWVudCIpOwogICAgfQogICAgcmV0dXJuIGxpbmsuZ2V0QXR0cmlidXRlKCJocmVmIik7CiAgfTsKCiAgd2luZG93LkhUTUxXaWRnZXRzLmRhdGFmcmFtZVRvRDMgPSBmdW5jdGlvbihkZikgewogICAgdmFyIG5hbWVzID0gW107CiAgICB2YXIgbGVuZ3RoOwogICAgZm9yICh2YXIgbmFtZSBpbiBkZikgewogICAgICAgIGlmIChkZi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkKICAgICAgICAgICAgbmFtZXMucHVzaChuYW1lKTsKICAgICAgICBpZiAodHlwZW9mKGRmW25hbWVdKSAhPT0gIm9iamVjdCIgfHwgdHlwZW9mKGRmW25hbWVdLmxlbmd0aCkgPT09ICJ1bmRlZmluZWQiKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQWxsIGZpZWxkcyBtdXN0IGJlIGFycmF5cyIpOwogICAgICAgIH0gZWxzZSBpZiAodHlwZW9mKGxlbmd0aCkgIT09ICJ1bmRlZmluZWQiICYmIGxlbmd0aCAhPT0gZGZbbmFtZV0ubGVuZ3RoKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQWxsIGZpZWxkcyBtdXN0IGJlIGFycmF5cyBvZiB0aGUgc2FtZSBsZW5ndGgiKTsKICAgICAgICB9CiAgICAgICAgbGVuZ3RoID0gZGZbbmFtZV0ubGVuZ3RoOwogICAgfQogICAgdmFyIHJlc3VsdHMgPSBbXTsKICAgIHZhciBpdGVtOwogICAgZm9yICh2YXIgcm93ID0gMDsgcm93IDwgbGVuZ3RoOyByb3crKykgewogICAgICAgIGl0ZW0gPSB7fTsKICAgICAgICBmb3IgKHZhciBjb2wgPSAwOyBjb2wgPCBuYW1lcy5sZW5ndGg7IGNvbCsrKSB7CiAgICAgICAgICAgIGl0ZW1bbmFtZXNbY29sXV0gPSBkZltuYW1lc1tjb2xdXVtyb3ddOwogICAgICAgIH0KICAgICAgICByZXN1bHRzLnB1c2goaXRlbSk7CiAgICB9CiAgICByZXR1cm4gcmVzdWx0czsKICB9OwoKICB3aW5kb3cuSFRNTFdpZGdldHMudHJhbnNwb3NlQXJyYXkyRCA9IGZ1bmN0aW9uKGFycmF5KSB7CiAgICAgIGlmIChhcnJheS5sZW5ndGggPT09IDApIHJldHVybiBhcnJheTsKICAgICAgdmFyIG5ld0FycmF5ID0gYXJyYXlbMF0ubWFwKGZ1bmN0aW9uKGNvbCwgaSkgewogICAgICAgICAgcmV0dXJuIGFycmF5Lm1hcChmdW5jdGlvbihyb3cpIHsKICAgICAgICAgICAgICByZXR1cm4gcm93W2ldCiAgICAgICAgICB9KQogICAgICB9KTsKICAgICAgcmV0dXJuIG5ld0FycmF5OwogIH07CiAgLy8gU3BsaXQgdmFsdWUgYXQgc3BsaXRDaGFyLCBidXQgYWxsb3cgc3BsaXRDaGFyIHRvIGJlIGVzY2FwZWQKICAvLyB1c2luZyBlc2NhcGVDaGFyLiBBbnkgb3RoZXIgY2hhcmFjdGVycyBlc2NhcGVkIGJ5IGVzY2FwZUNoYXIKICAvLyB3aWxsIGJlIGluY2x1ZGVkIGFzIHVzdWFsIChpbmNsdWRpbmcgZXNjYXBlQ2hhciBpdHNlbGYpLgogIGZ1bmN0aW9uIHNwbGl0V2l0aEVzY2FwZSh2YWx1ZSwgc3BsaXRDaGFyLCBlc2NhcGVDaGFyKSB7CiAgICB2YXIgcmVzdWx0cyA9IFtdOwogICAgdmFyIGVzY2FwZU1vZGUgPSBmYWxzZTsKICAgIHZhciBjdXJyZW50UmVzdWx0ID0gIiI7CiAgICBmb3IgKHZhciBwb3MgPSAwOyBwb3MgPCB2YWx1ZS5sZW5ndGg7IHBvcysrKSB7CiAgICAgIGlmICghZXNjYXBlTW9kZSkgewogICAgICAgIGlmICh2YWx1ZVtwb3NdID09PSBzcGxpdENoYXIpIHsKICAgICAgICAgIHJlc3VsdHMucHVzaChjdXJyZW50UmVzdWx0KTsKICAgICAgICAgIGN1cnJlbnRSZXN1bHQgPSAiIjsKICAgICAgICB9IGVsc2UgaWYgKHZhbHVlW3Bvc10gPT09IGVzY2FwZUNoYXIpIHsKICAgICAgICAgIGVzY2FwZU1vZGUgPSB0cnVlOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBjdXJyZW50UmVzdWx0ICs9IHZhbHVlW3Bvc107CiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIGN1cnJlbnRSZXN1bHQgKz0gdmFsdWVbcG9zXTsKICAgICAgICBlc2NhcGVNb2RlID0gZmFsc2U7CiAgICAgIH0KICAgIH0KICAgIGlmIChjdXJyZW50UmVzdWx0ICE9PSAiIikgewogICAgICByZXN1bHRzLnB1c2goY3VycmVudFJlc3VsdCk7CiAgICB9CiAgICByZXR1cm4gcmVzdWx0czsKICB9CiAgLy8gRnVuY3Rpb24gYXV0aG9yZWQgYnkgWWlodWkvSkogQWxsYWlyZQogIHdpbmRvdy5IVE1MV2lkZ2V0cy5ldmFsdWF0ZVN0cmluZ01lbWJlciA9IGZ1bmN0aW9uKG8sIG1lbWJlcikgewogICAgdmFyIHBhcnRzID0gc3BsaXRXaXRoRXNjYXBlKG1lbWJlciwgJy4nLCAnXFwnKTsKICAgIGZvciAodmFyIGkgPSAwLCBsID0gcGFydHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CiAgICAgIHZhciBwYXJ0ID0gcGFydHNbaV07CiAgICAgIC8vIHBhcnQgbWF5IGJlIGEgY2hhcmFjdGVyIG9yICdudW1lcmljJyBtZW1iZXIgbmFtZQogICAgICBpZiAobyAhPT0gbnVsbCAmJiB0eXBlb2YgbyA9PT0gIm9iamVjdCIgJiYgcGFydCBpbiBvKSB7CiAgICAgICAgaWYgKGkgPT0gKGwgLSAxKSkgeyAvLyBpZiB3ZSBhcmUgYXQgdGhlIGVuZCBvZiB0aGUgbGluZSB0aGVuIGV2YWx1bGF0ZQogICAgICAgICAgaWYgKHR5cGVvZiBvW3BhcnRdID09PSAic3RyaW5nIikKICAgICAgICAgICAgb1twYXJ0XSA9IHRyeUV2YWwob1twYXJ0XSk7CiAgICAgICAgfSBlbHNlIHsgLy8gb3RoZXJ3aXNlIGNvbnRpbnVlIHRvIG5leHQgZW1iZWRkZWQgb2JqZWN0CiAgICAgICAgICBvID0gb1twYXJ0XTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9OwoKICAvLyBSZXRyaWV2ZSB0aGUgSFRNTFdpZGdldCBpbnN0YW5jZSAoaS5lLiB0aGUgcmV0dXJuIHZhbHVlIG9mIGFuCiAgLy8gSFRNTFdpZGdldCBiaW5kaW5nJ3MgaW5pdGlhbGl6ZSgpIG9yIGZhY3RvcnkoKSBmdW5jdGlvbikKICAvLyBhc3NvY2lhdGVkIHdpdGggYW4gZWxlbWVudCwgb3IgbnVsbCBpZiBub25lLgogIHdpbmRvdy5IVE1MV2lkZ2V0cy5nZXRJbnN0YW5jZSA9IGZ1bmN0aW9uKGVsKSB7CiAgICByZXR1cm4gZWxlbWVudERhdGEoZWwsICJpbml0X3Jlc3VsdCIpOwogIH07CgogIC8vIEZpbmRzIHRoZSBmaXJzdCBlbGVtZW50IGluIHRoZSBzY29wZSB0aGF0IG1hdGNoZXMgdGhlIHNlbGVjdG9yLAogIC8vIGFuZCByZXR1cm5zIHRoZSBIVE1MV2lkZ2V0IGluc3RhbmNlIChpLmUuIHRoZSByZXR1cm4gdmFsdWUgb2YKICAvLyBhbiBIVE1MV2lkZ2V0IGJpbmRpbmcncyBpbml0aWFsaXplKCkgb3IgZmFjdG9yeSgpIGZ1bmN0aW9uKQogIC8vIGFzc29jaWF0ZWQgd2l0aCB0aGF0IGVsZW1lbnQsIGlmIGFueS4gSWYgbm8gZWxlbWVudCBtYXRjaGVzIHRoZQogIC8vIHNlbGVjdG9yLCBvciB0aGUgZmlyc3QgbWF0Y2hpbmcgZWxlbWVudCBoYXMgbm8gSFRNTFdpZGdldAogIC8vIGluc3RhbmNlIGFzc29jaWF0ZWQgd2l0aCBpdCwgdGhlbiBudWxsIGlzIHJldHVybmVkLgogIC8vCiAgLy8gVGhlIHNjb3BlIGFyZ3VtZW50IGlzIG9wdGlvbmFsLCBhbmQgZGVmYXVsdHMgdG8gd2luZG93LmRvY3VtZW50LgogIHdpbmRvdy5IVE1MV2lkZ2V0cy5maW5kID0gZnVuY3Rpb24oc2NvcGUsIHNlbGVjdG9yKSB7CiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAxKSB7CiAgICAgIHNlbGVjdG9yID0gc2NvcGU7CiAgICAgIHNjb3BlID0gZG9jdW1lbnQ7CiAgICB9CgogICAgdmFyIGVsID0gc2NvcGUucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7CiAgICBpZiAoZWwgPT09IG51bGwpIHsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gd2luZG93LkhUTUxXaWRnZXRzLmdldEluc3RhbmNlKGVsKTsKICAgIH0KICB9OwoKICAvLyBGaW5kcyBhbGwgZWxlbWVudHMgaW4gdGhlIHNjb3BlIHRoYXQgbWF0Y2ggdGhlIHNlbGVjdG9yLCBhbmQKICAvLyByZXR1cm5zIHRoZSBIVE1MV2lkZ2V0IGluc3RhbmNlcyAoaS5lLiB0aGUgcmV0dXJuIHZhbHVlcyBvZgogIC8vIGFuIEhUTUxXaWRnZXQgYmluZGluZydzIGluaXRpYWxpemUoKSBvciBmYWN0b3J5KCkgZnVuY3Rpb24pCiAgLy8gYXNzb2NpYXRlZCB3aXRoIHRoZSBlbGVtZW50cywgaW4gYW4gYXJyYXkuIElmIGVsZW1lbnRzIHRoYXQKICAvLyBtYXRjaCB0aGUgc2VsZWN0b3IgZG9uJ3QgaGF2ZSBhbiBhc3NvY2lhdGVkIEhUTUxXaWRnZXQKICAvLyBpbnN0YW5jZSwgdGhlIHJldHVybmVkIGFycmF5IHdpbGwgY29udGFpbiBudWxscy4KICAvLwogIC8vIFRoZSBzY29wZSBhcmd1bWVudCBpcyBvcHRpb25hbCwgYW5kIGRlZmF1bHRzIHRvIHdpbmRvdy5kb2N1bWVudC4KICB3aW5kb3cuSFRNTFdpZGdldHMuZmluZEFsbCA9IGZ1bmN0aW9uKHNjb3BlLCBzZWxlY3RvcikgewogICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMSkgewogICAgICBzZWxlY3RvciA9IHNjb3BlOwogICAgICBzY29wZSA9IGRvY3VtZW50OwogICAgfQoKICAgIHZhciBub2RlcyA9IHNjb3BlLnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpOwogICAgdmFyIHJlc3VsdHMgPSBbXTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHsKICAgICAgcmVzdWx0cy5wdXNoKHdpbmRvdy5IVE1MV2lkZ2V0cy5nZXRJbnN0YW5jZShub2Rlc1tpXSkpOwogICAgfQogICAgcmV0dXJuIHJlc3VsdHM7CiAgfTsKCiAgdmFyIHBvc3RSZW5kZXJIYW5kbGVycyA9IFtdOwogIGZ1bmN0aW9uIGludm9rZVBvc3RSZW5kZXJIYW5kbGVycygpIHsKICAgIHdoaWxlIChwb3N0UmVuZGVySGFuZGxlcnMubGVuZ3RoKSB7CiAgICAgIHZhciBoYW5kbGVyID0gcG9zdFJlbmRlckhhbmRsZXJzLnNoaWZ0KCk7CiAgICAgIGlmIChoYW5kbGVyKSB7CiAgICAgICAgaGFuZGxlcigpOwogICAgICB9CiAgICB9CiAgfQoKICAvLyBSZWdpc3RlciB0aGUgZ2l2ZW4gY2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgaW52b2tlZCBhZnRlciB0aGUKICAvLyBuZXh0IHRpbWUgc3RhdGljIHdpZGdldHMgYXJlIHJlbmRlcmVkLgogIHdpbmRvdy5IVE1MV2lkZ2V0cy5hZGRQb3N0UmVuZGVySGFuZGxlciA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7CiAgICBwb3N0UmVuZGVySGFuZGxlcnMucHVzaChjYWxsYmFjayk7CiAgfTsKCiAgLy8gVGFrZXMgYSBuZXctc3R5bGUgaW5zdGFuY2UtYm91bmQgZGVmaW5pdGlvbiwgYW5kIHJldHVybnMgYW4KICAvLyBvbGQtc3R5bGUgY2xhc3MtYm91bmQgZGVmaW5pdGlvbi4gVGhpcyBzYXZlcyB1cyBmcm9tIGhhdmluZwogIC8vIHRvIHJld3JpdGUgYWxsIHRoZSBsb2dpYyBpbiB0aGlzIGZpbGUgdG8gYWNjb21vZGF0ZSBib3RoCiAgLy8gdHlwZXMgb2YgZGVmaW5pdGlvbnMuCiAgZnVuY3Rpb24gY3JlYXRlTGVnYWN5RGVmaW5pdGlvbkFkYXB0ZXIoZGVmbikgewogICAgdmFyIHJlc3VsdCA9IHsKICAgICAgbmFtZTogZGVmbi5uYW1lLAogICAgICB0eXBlOiBkZWZuLnR5cGUsCiAgICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGVsLCB3aWR0aCwgaGVpZ2h0KSB7CiAgICAgICAgcmV0dXJuIGRlZm4uZmFjdG9yeShlbCwgd2lkdGgsIGhlaWdodCk7CiAgICAgIH0sCiAgICAgIHJlbmRlclZhbHVlOiBmdW5jdGlvbihlbCwgeCwgaW5zdGFuY2UpIHsKICAgICAgICByZXR1cm4gaW5zdGFuY2UucmVuZGVyVmFsdWUoeCk7CiAgICAgIH0sCiAgICAgIHJlc2l6ZTogZnVuY3Rpb24oZWwsIHdpZHRoLCBoZWlnaHQsIGluc3RhbmNlKSB7CiAgICAgICAgcmV0dXJuIGluc3RhbmNlLnJlc2l6ZSh3aWR0aCwgaGVpZ2h0KTsKICAgICAgfQogICAgfTsKCiAgICBpZiAoZGVmbi5maW5kKQogICAgICByZXN1bHQuZmluZCA9IGRlZm4uZmluZDsKICAgIGlmIChkZWZuLnJlbmRlckVycm9yKQogICAgICByZXN1bHQucmVuZGVyRXJyb3IgPSBkZWZuLnJlbmRlckVycm9yOwogICAgaWYgKGRlZm4uY2xlYXJFcnJvcikKICAgICAgcmVzdWx0LmNsZWFyRXJyb3IgPSBkZWZuLmNsZWFyRXJyb3I7CgogICAgcmV0dXJuIHJlc3VsdDsKICB9Cn0pKCk7Cgo=\"><\/script><br \/>\n<script src=\"data:application\/javascript;base64,IWZ1bmN0aW9uKGUpe3ZhciB0PXt9O2Z1bmN0aW9uIHIobil7aWYodFtuXSlyZXR1cm4gdFtuXS5leHBvcnRzO3ZhciBhPXRbbl09e2k6bixsOiExLGV4cG9ydHM6e319O3JldHVybiBlW25dLmNhbGwoYS5leHBvcnRzLGEsYS5leHBvcnRzLHIpLGEubD0hMCxhLmV4cG9ydHN9ci5tPWUsci5jPXQsci5kPWZ1bmN0aW9uKGUsdCxuKXtyLm8oZSx0KXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7ZW51bWVyYWJsZTohMCxnZXQ6bn0pfSxyLnI9ZnVuY3Rpb24oZSl7InVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC50b1N0cmluZ1RhZyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0sci50PWZ1bmN0aW9uKGUsdCl7aWYoMSZ0JiYoZT1yKGUpKSw4JnQpcmV0dXJuIGU7aWYoNCZ0JiYib2JqZWN0Ij09dHlwZW9mIGUmJmUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgbj1PYmplY3QuY3JlYXRlKG51bGwpO2lmKHIucihuKSxPYmplY3QuZGVmaW5lUHJvcGVydHkobiwiZGVmYXVsdCIse2VudW1lcmFibGU6ITAsdmFsdWU6ZX0pLDImdCYmInN0cmluZyIhPXR5cGVvZiBlKWZvcih2YXIgYSBpbiBlKXIuZChuLGEsZnVuY3Rpb24odCl7cmV0dXJuIGVbdF19LmJpbmQobnVsbCxhKSk7cmV0dXJuIG59LHIubj1mdW5jdGlvbihlKXt2YXIgdD1lJiZlLl9fZXNNb2R1bGU\/ZnVuY3Rpb24oKXtyZXR1cm4gZS5kZWZhdWx0fTpmdW5jdGlvbigpe3JldHVybiBlfTtyZXR1cm4gci5kKHQsImEiLHQpLHR9LHIubz1mdW5jdGlvbihlLHQpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSx0KX0sci5wPSIiLHIoci5zPTIwKX0oW2Z1bmN0aW9uKGUsdCxyKXtlLmV4cG9ydHM9cigxMykoKX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9d2luZG93LlJlYWN0fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LlJlYWN0VGFibGVEZWZhdWx0cz12b2lkIDA7dmFyIG49ZnVuY3Rpb24oZSx0KXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlO2lmKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoZSkpcmV0dXJuIGZ1bmN0aW9uKGUsdCl7dmFyIHI9W10sbj0hMCxhPSExLG89dm9pZCAwO3RyeXtmb3IodmFyIGksbD1lW1N5bWJvbC5pdGVyYXRvcl0oKTshKG49KGk9bC5uZXh0KCkpLmRvbmUpJiYoci5wdXNoKGkudmFsdWUpLCF0fHxyLmxlbmd0aCE9PXQpO249ITApO31jYXRjaChlKXthPSEwLG89ZX1maW5hbGx5e3RyeXshbiYmbC5yZXR1cm4mJmwucmV0dXJuKCl9ZmluYWxseXtpZihhKXRocm93IG99fXJldHVybiByfShlLHQpO3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UiKX0sYT1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgcj1hcmd1bWVudHNbdF07Zm9yKHZhciBuIGluIHIpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHIsbikmJihlW25dPXJbbl0pfXJldHVybiBlfSxvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj10W3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbi5rZXksbil9fXJldHVybiBmdW5jdGlvbih0LHIsbil7cmV0dXJuIHImJmUodC5wcm90b3R5cGUsciksbiYmZSh0LG4pLHR9fSgpLGk9cigxKSxsPWcoaSkscz1nKHIoNCkpLHU9ZyhyKDUpKSxjPWcocig4KSksZj1nKHIoOSkpLGQ9ZyhyKDEwKSkscD1nKHIoMTIpKTtmdW5jdGlvbiBnKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU\/ZTp7ZGVmYXVsdDplfX10LlJlYWN0VGFibGVEZWZhdWx0cz1kLmRlZmF1bHQ7dmFyIGg9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlKXshZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyx0KTt2YXIgcj1mdW5jdGlvbihlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ\/ZTp0fSh0aGlzLCh0Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5jYWxsKHRoaXMpKTtyZXR1cm4gci5nZXRSZXNvbHZlZFN0YXRlPXIuZ2V0UmVzb2x2ZWRTdGF0ZS5iaW5kKHIpLHIuZ2V0RGF0YU1vZGVsPXIuZ2V0RGF0YU1vZGVsLmJpbmQociksci5nZXRTb3J0ZWREYXRhPXIuZ2V0U29ydGVkRGF0YS5iaW5kKHIpLHIuZmlyZUZldGNoRGF0YT1yLmZpcmVGZXRjaERhdGEuYmluZChyKSxyLmdldFByb3BPclN0YXRlPXIuZ2V0UHJvcE9yU3RhdGUuYmluZChyKSxyLmdldFN0YXRlT3JQcm9wPXIuZ2V0U3RhdGVPclByb3AuYmluZChyKSxyLmZpbHRlckRhdGE9ci5maWx0ZXJEYXRhLmJpbmQociksci5zb3J0RGF0YT1yLnNvcnREYXRhLmJpbmQociksci5nZXRNaW5Sb3dzPXIuZ2V0TWluUm93cy5iaW5kKHIpLHIub25QYWdlQ2hhbmdlPXIub25QYWdlQ2hhbmdlLmJpbmQociksci5vblBhZ2VTaXplQ2hhbmdlPXIub25QYWdlU2l6ZUNoYW5nZS5iaW5kKHIpLHIuc29ydENvbHVtbj1yLnNvcnRDb2x1bW4uYmluZChyKSxyLmZpbHRlckNvbHVtbj1yLmZpbHRlckNvbHVtbi5iaW5kKHIpLHIucmVzaXplQ29sdW1uU3RhcnQ9ci5yZXNpemVDb2x1bW5TdGFydC5iaW5kKHIpLHIucmVzaXplQ29sdW1uRW5kPXIucmVzaXplQ29sdW1uRW5kLmJpbmQociksci5yZXNpemVDb2x1bW5Nb3Zpbmc9ci5yZXNpemVDb2x1bW5Nb3ZpbmcuYmluZChyKSxyLnN0YXRlPXtwYWdlOjAscGFnZVNpemU6ZS5kZWZhdWx0UGFnZVNpemUsc29ydGVkOmUuZGVmYXVsdFNvcnRlZCxleHBhbmRlZDplLmRlZmF1bHRFeHBhbmRlZCxmaWx0ZXJlZDplLmRlZmF1bHRGaWx0ZXJlZCxyZXNpemVkOmUuZGVmYXVsdFJlc2l6ZWQsY3VycmVudGx5UmVzaXppbmc6ITEsc2tpcE5leHRTb3J0OiExfSxyfXJldHVybiBmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y\/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9KHQsZSksbyh0LFt7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMuZ2V0UmVzb2x2ZWRTdGF0ZSgpLHI9dC5jaGlsZHJlbixvPXQuY2xhc3NOYW1lLGk9dC5zdHlsZSxjPXQuZ2V0UHJvcHMsZj10LmdldFRhYmxlUHJvcHMscD10LmdldFRoZWFkR3JvdXBQcm9wcyxnPXQuZ2V0VGhlYWRHcm91cFRyUHJvcHMsaD10LmdldFRoZWFkR3JvdXBUaFByb3BzLG09dC5nZXRUaGVhZFByb3BzLGI9dC5nZXRUaGVhZFRyUHJvcHMseT10LmdldFRoZWFkVGhQcm9wcyx2PXQuZ2V0VGhlYWRGaWx0ZXJQcm9wcyx3PXQuZ2V0VGhlYWRGaWx0ZXJUclByb3BzLHg9dC5nZXRUaGVhZEZpbHRlclRoUHJvcHMsUz10LmdldFRib2R5UHJvcHMsUD10LmdldFRyR3JvdXBQcm9wcyxDPXQuZ2V0VHJQcm9wcyxPPXQuZ2V0VGRQcm9wcyxrPXQuZ2V0VGZvb3RQcm9wcyxUPXQuZ2V0VGZvb3RUclByb3BzLGo9dC5nZXRUZm9vdFRkUHJvcHMsRT10LmdldFBhZ2luYXRpb25Qcm9wcyxSPXQuZ2V0TG9hZGluZ1Byb3BzLE49dC5nZXROb0RhdGFQcm9wcyxBPXQuZ2V0UmVzaXplclByb3BzLEQ9dC5zaG93UGFnaW5hdGlvbix6PXQuc2hvd1BhZ2luYXRpb25Ub3AsXz10LnNob3dQYWdpbmF0aW9uQm90dG9tLEY9dC5tYW51YWwsTT10LmxvYWRpbmdUZXh0LEk9dC5ub0RhdGFUZXh0LEw9dC5zb3J0YWJsZSxXPXQucmVzaXphYmxlLEs9dC5maWx0ZXJhYmxlLEI9dC5waXZvdElES2V5LEg9dC5waXZvdFZhbEtleSxHPXQucGl2b3RCeSxVPXQuc3ViUm93c0tleSxWPXQuYWdncmVnYXRlZEtleSxKPXQub3JpZ2luYWxLZXksJD10LmluZGV4S2V5LHE9dC5ncm91cGVkQnlQaXZvdEtleSxYPXQubG9hZGluZyxZPXQucGFnZVNpemUsWj10LnBhZ2UsUT10LnNvcnRlZCxlZT10LmZpbHRlcmVkLHRlPXQucmVzaXplZCxyZT10LmV4cGFuZGVkLG5lPXQucGFnZXMsYWU9dC5vbkV4cGFuZGVkQ2hhbmdlLG9lPXQuVGFibGVDb21wb25lbnQsaWU9dC5UaGVhZENvbXBvbmVudCxsZT10LlRib2R5Q29tcG9uZW50LHNlPXQuVHJHcm91cENvbXBvbmVudCx1ZT10LlRyQ29tcG9uZW50LGNlPXQuVGhDb21wb25lbnQsZmU9dC5UZENvbXBvbmVudCxkZT10LlRmb290Q29tcG9uZW50LHBlPXQuUGFnaW5hdGlvbkNvbXBvbmVudCxnZT10LkxvYWRpbmdDb21wb25lbnQsaGU9dC5TdWJDb21wb25lbnQsbWU9dC5Ob0RhdGFDb21wb25lbnQsYmU9dC5SZXNpemVyQ29tcG9uZW50LHllPXQuRXhwYW5kZXJDb21wb25lbnQsdmU9dC5QaXZvdFZhbHVlQ29tcG9uZW50LHdlPXQuUGl2b3RDb21wb25lbnQseGU9dC5BZ2dyZWdhdGVkQ29tcG9uZW50LFNlPXQuRmlsdGVyQ29tcG9uZW50LFBlPXQuUGFkUm93Q29tcG9uZW50LENlPXQucmVzb2x2ZWREYXRhLE9lPXQuYWxsVmlzaWJsZUNvbHVtbnMsa2U9dC5oZWFkZXJHcm91cHMsVGU9dC5oYXNIZWFkZXJHcm91cHMsamU9dC5zb3J0ZWREYXRhLEVlPXQuY3VycmVudGx5UmVzaXppbmcsUmU9WSpaLE5lPVJlK1ksQWU9Rj9DZTpqZS5zbGljZShSZSxOZSksRGU9dGhpcy5nZXRNaW5Sb3dzKCksemU9dS5kZWZhdWx0LnJhbmdlKE1hdGgubWF4KERlLUFlLmxlbmd0aCwwKSksX2U9T2Uuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuRm9vdGVyfSkpLEZlPUt8fE9lLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmZpbHRlcmFibGV9KSksTWU9ZnVuY3Rpb24gZSh0KXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06W10sbz1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06LTE7cmV0dXJuW3QubWFwKChmdW5jdGlvbih0LGkpe28rKzt2YXIgbD1hKHt9LHQse192aWV3SW5kZXg6b30pLHM9ci5jb25jYXQoW2ldKTtpZihsW1VdJiZ1LmRlZmF1bHQuZ2V0KHJlLHMpKXt2YXIgYz1lKGxbVV0scyxvKSxmPW4oYywyKTtsW1VdPWZbMF0sbz1mWzFdfXJldHVybiBsfSkpLG9dfShBZSksSWU9bihNZSwxKTtBZT1JZVswXTt2YXIgTGU9Wj4wLFdlPVorMTxuZSxLZT11LmRlZmF1bHQuc3VtKE9lLm1hcCgoZnVuY3Rpb24oZSl7dmFyIHQ9dGUuZmluZCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuaWQ9PT1lLmlkfSkpfHx7fTtyZXR1cm4gdS5kZWZhdWx0LmdldEZpcnN0RGVmaW5lZCh0LnZhbHVlLGUud2lkdGgsZS5taW5XaWR0aCl9KSkpLEJlPS0xLEhlPWEoe30sdCx7c3RhcnRSb3c6UmUsZW5kUm93Ok5lLHBhZ2VSb3dzOkFlLG1pblJvd3M6RGUscGFkUm93czp6ZSxoYXNDb2x1bW5Gb290ZXI6X2UsY2FuUHJldmlvdXM6TGUsY2FuTmV4dDpXZSxyb3dNaW5XaWR0aDpLZX0pLEdlPWZ1bmN0aW9uKHQscil7dmFyIG49ZnVuY3Rpb24oZSl7cmV0dXJuKHRlLmZpbmQoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmlkPT09ZS5pZH0pKXx8e30pLnZhbHVlfSxvPXUuZGVmYXVsdC5zdW0odC5jb2x1bW5zLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUud2lkdGh8fG4oZSk\/MDplLm1pbldpZHRofSkpKSxpPXUuZGVmYXVsdC5zdW0odC5jb2x1bW5zLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHUuZGVmYXVsdC5nZXRGaXJzdERlZmluZWQobihlKSxlLndpZHRoLGUubWluV2lkdGgpfSkpKSxjPXUuZGVmYXVsdC5zdW0odC5jb2x1bW5zLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHUuZGVmYXVsdC5nZXRGaXJzdERlZmluZWQobihlKSxlLndpZHRoLGUubWF4V2lkdGgpfSkpKSxmPXUuZGVmYXVsdC5zcGxpdFByb3BzKGgoSGUsdm9pZCAwLHQsZSkpLGQ9dS5kZWZhdWx0LnNwbGl0UHJvcHModC5nZXRIZWFkZXJQcm9wcyhIZSx2b2lkIDAsdCxlKSkscD1bdC5oZWFkZXJDbGFzc05hbWUsZi5jbGFzc05hbWUsZC5jbGFzc05hbWVdLGc9YSh7fSx0LmhlYWRlclN0eWxlLGYuc3R5bGUsZC5zdHlsZSksbT1hKHt9LGYucmVzdCxkLnJlc3QpLGI9e2ZsZXg6bysiIDAgYXV0byIsd2lkdGg6dS5kZWZhdWx0LmFzUHgoaSksbWF4V2lkdGg6dS5kZWZhdWx0LmFzUHgoYyl9O3JldHVybiBsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChjZSxhKHtrZXk6cisiLSIrdC5pZCxjbGFzc05hbWU6KDAscy5kZWZhdWx0KShwKSxzdHlsZTphKHt9LGcsYil9LG0pLHUuZGVmYXVsdC5ub3JtYWxpemVDb21wb25lbnQodC5IZWFkZXIse2RhdGE6amUsY29sdW1uOnR9KSl9LFVlPWZ1bmN0aW9uKHQscil7dmFyIG49dGUuZmluZCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuaWQ9PT10LmlkfSkpfHx7fSxvPShRLmZpbmQoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmlkPT09dC5pZH0pKSwiZnVuY3Rpb24iPT10eXBlb2YgdC5zaG93P3Quc2hvdygpOnQuc2hvdyksaT11LmRlZmF1bHQuZ2V0Rmlyc3REZWZpbmVkKG4udmFsdWUsdC53aWR0aCx0Lm1pbldpZHRoKSxjPXUuZGVmYXVsdC5nZXRGaXJzdERlZmluZWQobi52YWx1ZSx0LndpZHRoLHQubWF4V2lkdGgpLGY9dS5kZWZhdWx0LnNwbGl0UHJvcHMoeShIZSx2b2lkIDAsdCxlKSksZD11LmRlZmF1bHQuc3BsaXRQcm9wcyh0LmdldEhlYWRlclByb3BzKEhlLHZvaWQgMCx0LGUpKSxwPVt0LmhlYWRlckNsYXNzTmFtZSxmLmNsYXNzTmFtZSxkLmNsYXNzTmFtZV0sZz1hKHt9LHQuaGVhZGVyU3R5bGUsZi5zdHlsZSxkLnN0eWxlKSxoPWEoe30sZi5yZXN0LGQucmVzdCksbT11LmRlZmF1bHQuZ2V0Rmlyc3REZWZpbmVkKHQucmVzaXphYmxlLFcsITEpLGI9bT9sLmRlZmF1bHQuY3JlYXRlRWxlbWVudChiZSxhKHtvbk1vdXNlRG93bjpmdW5jdGlvbihyKXtyZXR1cm4gZS5yZXNpemVDb2x1bW5TdGFydChyLHQsITEpfSxvblRvdWNoU3RhcnQ6ZnVuY3Rpb24ocil7cmV0dXJuIGUucmVzaXplQ29sdW1uU3RhcnQocix0LCEwKX19LHR0KSk6bnVsbCx2PXUuZGVmYXVsdC5nZXRGaXJzdERlZmluZWQodC5zb3J0YWJsZSxMLCExKSx3PXZvaWQgMDtyZXR1cm4gdz1tP2wuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6InJ0LXJlc2l6YWJsZS1oZWFkZXItY29udGVudCJ9LHUuZGVmYXVsdC5ub3JtYWxpemVDb21wb25lbnQodC5IZWFkZXIse2RhdGE6amUsY29sdW1uOnR9KSk6dS5kZWZhdWx0Lm5vcm1hbGl6ZUNvbXBvbmVudCh0LkhlYWRlcix7ZGF0YTpqZSxjb2x1bW46dH0pLGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KGNlLGEoe2tleTpyKyItIit0LmlkLGNsYXNzTmFtZTooMCxzLmRlZmF1bHQpKHAsbSYmInJ0LXJlc2l6YWJsZS1oZWFkZXIiLHYmJiItY3Vyc29yLXBvaW50ZXIiLCFvJiYiLWhpZGRlbiIsRyYmRy5zbGljZSgwLC0xKS5pbmNsdWRlcyh0LmlkKSYmInJ0LWhlYWRlci1waXZvdCIpLHN0eWxlOmEoe30sZyx7ZmxleDppKyIgMCBhdXRvIix3aWR0aDp1LmRlZmF1bHQuYXNQeChpKSxtYXhXaWR0aDp1LmRlZmF1bHQuYXNQeChjKX0pLHRvZ2dsZVNvcnQ6dj9mdW5jdGlvbihyKXtyZXR1cm4gZS5zb3J0Q29sdW1uKHQsci5zaGlmdEtleSl9OnZvaWQgMH0saCksdyxiKX0sVmU9ZnVuY3Rpb24odCxyKXt2YXIgbj10ZS5maW5kKChmdW5jdGlvbihlKXtyZXR1cm4gZS5pZD09PXQuaWR9KSl8fHt9LG89dS5kZWZhdWx0LmdldEZpcnN0RGVmaW5lZChuLnZhbHVlLHQud2lkdGgsdC5taW5XaWR0aCksaT11LmRlZmF1bHQuZ2V0Rmlyc3REZWZpbmVkKG4udmFsdWUsdC53aWR0aCx0Lm1heFdpZHRoKSxjPXUuZGVmYXVsdC5zcGxpdFByb3BzKHgoSGUsdm9pZCAwLHQsZSkpLGY9dS5kZWZhdWx0LnNwbGl0UHJvcHModC5nZXRIZWFkZXJQcm9wcyhIZSx2b2lkIDAsdCxlKSkscD1bdC5oZWFkZXJDbGFzc05hbWUsYy5jbGFzc05hbWUsZi5jbGFzc05hbWVdLGc9YSh7fSx0LmhlYWRlclN0eWxlLGMuc3R5bGUsZi5zdHlsZSksaD1hKHt9LGMucmVzdCxmLnJlc3QpLG09ZWUuZmluZCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuaWQ9PT10LmlkfSkpLGI9dC5GaWx0ZXJ8fFNlLHk9dS5kZWZhdWx0LmdldEZpcnN0RGVmaW5lZCh0LmZpbHRlcmFibGUsSywhMSk7cmV0dXJuIGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KGZlLGEoe2tleTpyKyItIit0LmlkLGNsYXNzTmFtZTooMCxzLmRlZmF1bHQpKHApLHN0eWxlOmEoe30sZyx7ZmxleDpvKyIgMCBhdXRvIix3aWR0aDp1LmRlZmF1bHQuYXNQeChvKSxtYXhXaWR0aDp1LmRlZmF1bHQuYXNQeChpKX0pfSxoKSx5P3UuZGVmYXVsdC5ub3JtYWxpemVDb21wb25lbnQoYix7Y29sdW1uOnQsZmlsdGVyOm0sb25DaGFuZ2U6ZnVuY3Rpb24ocil7cmV0dXJuIGUuZmlsdGVyQ29sdW1uKHQscil9fSxkLmRlZmF1bHQuY29sdW1uLkZpbHRlcik6bnVsbCl9LEplPWZ1bmN0aW9uKHQscil7dmFyIG49UChIZSx2b2lkIDAsdm9pZCAwLGUpLG89dS5kZWZhdWx0LnNwbGl0UHJvcHMoQyhIZSx2b2lkIDAsdm9pZCAwLGUpKTtyZXR1cm4gbC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoc2UsYSh7a2V5OnJ9LG4pLGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KHVlLHtjbGFzc05hbWU6KDAscy5kZWZhdWx0KSgiLXBhZFJvdyIsby5jbGFzc05hbWUpLHN0eWxlOm8uc3R5bGV8fHt9fSxPZS5tYXAoJGUpKSl9LCRlPWZ1bmN0aW9uKHQscil7dmFyIG49dGUuZmluZCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuaWQ9PT10LmlkfSkpfHx7fSxvPSJmdW5jdGlvbiI9PXR5cGVvZiB0LnNob3c\/dC5zaG93KCk6dC5zaG93LGk9dS5kZWZhdWx0LmdldEZpcnN0RGVmaW5lZChuLnZhbHVlLHQud2lkdGgsdC5taW5XaWR0aCksYz1pLGY9dS5kZWZhdWx0LmdldEZpcnN0RGVmaW5lZChuLnZhbHVlLHQud2lkdGgsdC5tYXhXaWR0aCksZD11LmRlZmF1bHQuc3BsaXRQcm9wcyhPKEhlLHZvaWQgMCx0LGUpKSxwPXUuZGVmYXVsdC5zcGxpdFByb3BzKHQuZ2V0UHJvcHMoSGUsdm9pZCAwLHQsZSkpLGc9W2QuY2xhc3NOYW1lLHQuY2xhc3NOYW1lLHAuY2xhc3NOYW1lXSxoPWEoe30sZC5zdHlsZSx0LnN0eWxlLHAuc3R5bGUpO3JldHVybiBsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChmZSxhKHtrZXk6cisiLSIrdC5pZCxjbGFzc05hbWU6KDAscy5kZWZhdWx0KShnLCFvJiYiaGlkZGVuIiksc3R5bGU6YSh7fSxoLHtmbGV4OmMrIiAwIGF1dG8iLHdpZHRoOnUuZGVmYXVsdC5hc1B4KGkpLG1heFdpZHRoOnUuZGVmYXVsdC5hc1B4KGYpfSl9LGQucmVzdCksdS5kZWZhdWx0Lm5vcm1hbGl6ZUNvbXBvbmVudChQZSkpfSxxZT1mdW5jdGlvbih0LHIpe3ZhciBuPXRlLmZpbmQoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmlkPT09dC5pZH0pKXx8e30sbz0iZnVuY3Rpb24iPT10eXBlb2YgdC5zaG93P3Quc2hvdygpOnQuc2hvdyxpPXUuZGVmYXVsdC5nZXRGaXJzdERlZmluZWQobi52YWx1ZSx0LndpZHRoLHQubWluV2lkdGgpLGM9dS5kZWZhdWx0LmdldEZpcnN0RGVmaW5lZChuLnZhbHVlLHQud2lkdGgsdC5tYXhXaWR0aCksZj11LmRlZmF1bHQuc3BsaXRQcm9wcyhqKEhlLHZvaWQgMCx2b2lkIDAsZSkpLGQ9dS5kZWZhdWx0LnNwbGl0UHJvcHModC5nZXRQcm9wcyhIZSx2b2lkIDAsdCxlKSkscD11LmRlZmF1bHQuc3BsaXRQcm9wcyh0LmdldEZvb3RlclByb3BzKEhlLHZvaWQgMCx0LGUpKSxnPVtmLmNsYXNzTmFtZSx0LmZvb3RlckNsYXNzTmFtZSxkLmZvb3RlckNsYXNzTmFtZSxwLmNsYXNzTmFtZV0saD1hKHt9LGYuc3R5bGUsdC5mb290ZXJTdHlsZSxkLmZvb3RlclN0eWxlLHAuc3R5bGUpO3JldHVybiBsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChmZSxhKHtrZXk6cisiLSIrdC5pZCxjbGFzc05hbWU6KDAscy5kZWZhdWx0KShnLCFvJiYiaGlkZGVuIiksc3R5bGU6YSh7fSxoLHtmbGV4OmkrIiAwIGF1dG8iLHdpZHRoOnUuZGVmYXVsdC5hc1B4KGkpLG1heFdpZHRoOnUuZGVmYXVsdC5hc1B4KGMpfSl9LGQucmVzdCxmLnJlc3QscC5yZXN0KSx1LmRlZmF1bHQubm9ybWFsaXplQ29tcG9uZW50KHQuRm9vdGVyLHtkYXRhOmplLGNvbHVtbjp0fSkpfSxYZT11LmRlZmF1bHQuc3BsaXRQcm9wcyhjKEhlLHZvaWQgMCx2b2lkIDAsdGhpcykpLFllPXUuZGVmYXVsdC5zcGxpdFByb3BzKGYoSGUsdm9pZCAwLHZvaWQgMCx0aGlzKSksWmU9dS5kZWZhdWx0LnNwbGl0UHJvcHMoUyhIZSx2b2lkIDAsdm9pZCAwLHRoaXMpKSxRZT1SKEhlLHZvaWQgMCx2b2lkIDAsdGhpcyksZXQ9TihIZSx2b2lkIDAsdm9pZCAwLHRoaXMpLHR0PUEoSGUsdm9pZCAwLHZvaWQgMCx0aGlzKSxydD1mdW5jdGlvbigpe3ZhciByLG4sYyxmLGQsaCx5LHgsUyxqPShyPXUuZGVmYXVsdC5zcGxpdFByb3BzKEUoSGUsdm9pZCAwLHZvaWQgMCxlKSksbC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQocGUsYSh7fSx0LHtwYWdlczpuZSxjYW5QcmV2aW91czpMZSxjYW5OZXh0OldlLG9uUGFnZUNoYW5nZTplLm9uUGFnZUNoYW5nZSxvblBhZ2VTaXplQ2hhbmdlOmUub25QYWdlU2l6ZUNoYW5nZSxjbGFzc05hbWU6ci5jbGFzc05hbWUsc3R5bGU6ci5zdHlsZX0sci5yZXN0KSkpO3JldHVybiBsLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgiZGl2IixhKHtjbGFzc05hbWU6KDAscy5kZWZhdWx0KSgiUmVhY3RUYWJsZSIsbyxYZS5jbGFzc05hbWUpLHN0eWxlOmEoe30saSxYZS5zdHlsZSl9LFhlLnJlc3QpLEQmJno\/bC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToicGFnaW5hdGlvbi10b3AifSxqKTpudWxsLGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KG9lLGEoe2NsYXNzTmFtZTooMCxzLmRlZmF1bHQpKFllLmNsYXNzTmFtZSxFZT8icnQtcmVzaXppbmciOiIiKSxzdHlsZTpZZS5zdHlsZX0sWWUucmVzdCksVGU\/KHg9dS5kZWZhdWx0LnNwbGl0UHJvcHMocChIZSx2b2lkIDAsdm9pZCAwLGUpKSxTPXUuZGVmYXVsdC5zcGxpdFByb3BzKGcoSGUsdm9pZCAwLHZvaWQgMCxlKSksbC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoaWUsYSh7Y2xhc3NOYW1lOigwLHMuZGVmYXVsdCkoIi1oZWFkZXJHcm91cHMiLHguY2xhc3NOYW1lKSxzdHlsZTphKHt9LHguc3R5bGUse21pbldpZHRoOktlKyJweCJ9KX0seC5yZXN0KSxsLmRlZmF1bHQuY3JlYXRlRWxlbWVudCh1ZSxhKHtjbGFzc05hbWU6Uy5jbGFzc05hbWUsc3R5bGU6Uy5zdHlsZX0sUy5yZXN0KSxrZS5tYXAoR2UpKSkpOm51bGwsKGg9dS5kZWZhdWx0LnNwbGl0UHJvcHMobShIZSx2b2lkIDAsdm9pZCAwLGUpKSx5PXUuZGVmYXVsdC5zcGxpdFByb3BzKGIoSGUsdm9pZCAwLHZvaWQgMCxlKSksbC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoaWUsYSh7Y2xhc3NOYW1lOigwLHMuZGVmYXVsdCkoIi1oZWFkZXIiLGguY2xhc3NOYW1lKSxzdHlsZTphKHt9LGguc3R5bGUse21pbldpZHRoOktlKyJweCJ9KX0saC5yZXN0KSxsLmRlZmF1bHQuY3JlYXRlRWxlbWVudCh1ZSxhKHtjbGFzc05hbWU6eS5jbGFzc05hbWUsc3R5bGU6eS5zdHlsZX0seS5yZXN0KSxPZS5tYXAoVWUpKSkpLEZlPyhmPXUuZGVmYXVsdC5zcGxpdFByb3BzKHYoSGUsdm9pZCAwLHZvaWQgMCxlKSksZD11LmRlZmF1bHQuc3BsaXRQcm9wcyh3KEhlLHZvaWQgMCx2b2lkIDAsZSkpLGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KGllLGEoe2NsYXNzTmFtZTooMCxzLmRlZmF1bHQpKCItZmlsdGVycyIsZi5jbGFzc05hbWUpLHN0eWxlOmEoe30sZi5zdHlsZSx7bWluV2lkdGg6S2UrInB4In0pfSxmLnJlc3QpLGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KHVlLGEoe2NsYXNzTmFtZTpkLmNsYXNzTmFtZSxzdHlsZTpkLnN0eWxlfSxkLnJlc3QpLE9lLm1hcChWZSkpKSk6bnVsbCxsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChsZSxhKHtjbGFzc05hbWU6KDAscy5kZWZhdWx0KShaZS5jbGFzc05hbWUpLHN0eWxlOmEoe30sWmUuc3R5bGUse21pbldpZHRoOktlKyJweCJ9KX0sWmUucmVzdCksQWUubWFwKChmdW5jdGlvbih0LHIpe3JldHVybiBmdW5jdGlvbiB0KHIsbil7dmFyIG89YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0\/YXJndW1lbnRzWzJdOltdLGk9e29yaWdpbmFsOnJbSl0scm93OnIsaW5kZXg6clskXSx2aWV3SW5kZXg6KytCZSxwYWdlU2l6ZTpZLHBhZ2U6WixsZXZlbDpvLmxlbmd0aCxuZXN0aW5nUGF0aDpvLmNvbmNhdChbbl0pLGFnZ3JlZ2F0ZWQ6cltWXSxncm91cGVkQnlQaXZvdDpyW3FdLHN1YlJvd3M6cltVXX0sYz11LmRlZmF1bHQuZ2V0KHJlLGkubmVzdGluZ1BhdGgpLGY9UChIZSxpLHZvaWQgMCxlKSxkPXUuZGVmYXVsdC5zcGxpdFByb3BzKEMoSGUsaSx2b2lkIDAsZSkpO3JldHVybiBsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChzZSxhKHtrZXk6aS5uZXN0aW5nUGF0aC5qb2luKCJfIil9LGYpLGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KHVlLGEoe2NsYXNzTmFtZTpkLmNsYXNzTmFtZSxzdHlsZTpkLnN0eWxlfSxkLnJlc3QpLE9lLm1hcCgoZnVuY3Rpb24odCxuKXt2YXIgbz10ZS5maW5kKChmdW5jdGlvbihlKXtyZXR1cm4gZS5pZD09PXQuaWR9KSl8fHt9LGY9ImZ1bmN0aW9uIj09dHlwZW9mIHQuc2hvdz90LnNob3coKTp0LnNob3csZD11LmRlZmF1bHQuZ2V0Rmlyc3REZWZpbmVkKG8udmFsdWUsdC53aWR0aCx0Lm1pbldpZHRoKSxwPXUuZGVmYXVsdC5nZXRGaXJzdERlZmluZWQoby52YWx1ZSx0LndpZHRoLHQubWF4V2lkdGgpLGc9dS5kZWZhdWx0LnNwbGl0UHJvcHMoTyhIZSxpLHQsZSkpLGg9dS5kZWZhdWx0LnNwbGl0UHJvcHModC5nZXRQcm9wcyhIZSxpLHQsZSkpLG09W2cuY2xhc3NOYW1lLHQuY2xhc3NOYW1lLGguY2xhc3NOYW1lXSxiPWEoe30sZy5zdHlsZSx0LnN0eWxlLGguc3R5bGUpLHk9YSh7fSxpLHtpc0V4cGFuZGVkOmMsY29sdW1uOmEoe30sdCksdmFsdWU6aS5yb3dbdC5pZF0scGl2b3RlZDp0LnBpdm90ZWQsZXhwYW5kZXI6dC5leHBhbmRlcixyZXNpemVkOnRlLHNob3c6Zix3aWR0aDpkLG1heFdpZHRoOnAsdGRQcm9wczpnLGNvbHVtblByb3BzOmgsY2xhc3NlczptLHN0eWxlczpifSksdj15LnZhbHVlLHc9dm9pZCAwLHg9dm9pZCAwLFM9dm9pZCAwLFA9dS5kZWZhdWx0Lm5vcm1hbGl6ZUNvbXBvbmVudCh0LkNlbGwseSx2KSxDPXQuQWdncmVnYXRlZHx8KHQuYWdncmVnYXRlP3QuQ2VsbDp4ZSksaz10LkV4cGFuZGVyfHx5ZSxUPXQuUGl2b3RWYWx1ZXx8dmUsaj13ZXx8ZnVuY3Rpb24oZSl7cmV0dXJuIGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLG51bGwsbC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoayxlKSxsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChULGUpKX0sRT10LlBpdm90fHxqOyh5LnBpdm90ZWR8fHkuZXhwYW5kZXIpJiYoeS5leHBhbmRhYmxlPSEwLHc9ITAseS5waXZvdGVkJiYheS5zdWJSb3dzJiYoeS5leHBhbmRhYmxlPSExLHc9ITEpKSx5LnBpdm90ZWQ\/KHg9aS5yb3dbQl09PT10LmlkJiZ5LnN1YlJvd3MsUz1HLmluZGV4T2YodC5pZCk+Ry5pbmRleE9mKGkucm93W0JdKSYmeS5zdWJSb3dzLFA9eD91LmRlZmF1bHQubm9ybWFsaXplQ29tcG9uZW50KEUsYSh7fSx5LHt2YWx1ZTpyW0hdfSkscltIXSk6Uz91LmRlZmF1bHQubm9ybWFsaXplQ29tcG9uZW50KEMseSx2KTpudWxsKTp5LmFnZ3JlZ2F0ZWQmJihQPXUuZGVmYXVsdC5ub3JtYWxpemVDb21wb25lbnQoQyx5LHYpKSx5LmV4cGFuZGVyJiYoUD11LmRlZmF1bHQubm9ybWFsaXplQ29tcG9uZW50KGsseSxyW0hdKSxHJiYoeS5ncm91cGVkQnlQaXZvdCYmKFA9bnVsbCkseS5zdWJSb3dzfHxoZXx8KFA9bnVsbCkpKTt2YXIgUj13P2Z1bmN0aW9uKHQpe3ZhciByPXUuZGVmYXVsdC5jbG9uZShyZSk7cmV0dXJuIHI9Yz91LmRlZmF1bHQuc2V0KHIseS5uZXN0aW5nUGF0aCwhMSk6dS5kZWZhdWx0LnNldChyLHkubmVzdGluZ1BhdGgse30pLGUuc2V0U3RhdGVXaXRoRGF0YSh7ZXhwYW5kZWQ6cn0sKGZ1bmN0aW9uKCl7YWUmJmFlKHIseS5uZXN0aW5nUGF0aCx0KX0pKX06dm9pZCAwLE49e29uQ2xpY2s6Un07cmV0dXJuIGcucmVzdC5vbkNsaWNrJiYoTi5vbkNsaWNrPWZ1bmN0aW9uKGUpe2cucmVzdC5vbkNsaWNrKGUsUj9mdW5jdGlvbigpe3JldHVybiBSKGUpfTp2b2lkIDApfSksaC5yZXN0Lm9uQ2xpY2smJihOLm9uQ2xpY2s9ZnVuY3Rpb24oZSl7aC5yZXN0Lm9uQ2xpY2soZSxSP2Z1bmN0aW9uKCl7cmV0dXJuIFIoZSl9OnZvaWQgMCl9KSxsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChmZSxhKHtrZXk6bisiLSIrdC5pZCxjbGFzc05hbWU6KDAscy5kZWZhdWx0KShtLCFmJiYiaGlkZGVuIix5LmV4cGFuZGFibGUmJiJydC1leHBhbmRhYmxlIiwoeHx8UykmJiJydC1waXZvdCIpLHN0eWxlOmEoe30sYix7ZmxleDpkKyIgMCBhdXRvIix3aWR0aDp1LmRlZmF1bHQuYXNQeChkKSxtYXhXaWR0aDp1LmRlZmF1bHQuYXNQeChwKX0pfSxnLnJlc3QsaC5yZXN0LE4pLFApfSkpKSxpLnN1YlJvd3MmJmMmJmkuc3ViUm93cy5tYXAoKGZ1bmN0aW9uKGUscil7cmV0dXJuIHQoZSxyLGkubmVzdGluZ1BhdGgpfSkpLGhlJiYhaS5zdWJSb3dzJiZjJiZoZShpKSl9KHQscil9KSksemUubWFwKEplKSksX2U\/KG49ayhIZSx2b2lkIDAsdm9pZCAwLGUpLGM9dS5kZWZhdWx0LnNwbGl0UHJvcHMoVChIZSx2b2lkIDAsdm9pZCAwLGUpKSxsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChkZSxhKHtjbGFzc05hbWU6bi5jbGFzc05hbWUsc3R5bGU6YSh7fSxuLnN0eWxlLHttaW5XaWR0aDpLZSsicHgifSl9LG4ucmVzdCksbC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQodWUsYSh7Y2xhc3NOYW1lOigwLHMuZGVmYXVsdCkoYy5jbGFzc05hbWUpLHN0eWxlOmMuc3R5bGV9LGMucmVzdCksT2UubWFwKHFlKSkpKTpudWxsKSxEJiZfP2wuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6InBhZ2luYXRpb24tYm90dG9tIn0saik6bnVsbCwhQWUubGVuZ3RoJiZsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChtZSxldCx1LmRlZmF1bHQubm9ybWFsaXplQ29tcG9uZW50KEkpKSxsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChnZSxhKHtsb2FkaW5nOlgsbG9hZGluZ1RleHQ6TX0sUWUpKSl9O3JldHVybiByP3IoSGUscnQsdGhpcyk6cnQoKX19XSksdH0oKDAsZi5kZWZhdWx0KSgoMCxjLmRlZmF1bHQpKGkuQ29tcG9uZW50KSkpO2gucHJvcFR5cGVzPXAuZGVmYXVsdCxoLmRlZmF1bHRQcm9wcz1kLmRlZmF1bHQsdC5kZWZhdWx0PWh9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPXdpbmRvdy5yZWFjdFJ9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbjsKLyohCiAgQ29weXJpZ2h0IChjKSAyMDE3IEplZCBXYXRzb24uCiAgTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlIChNSVQpLCBzZWUKICBodHRwOi8vamVkd2F0c29uLmdpdGh1Yi5pby9jbGFzc25hbWVzCiovIWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciByPXt9Lmhhc093blByb3BlcnR5O2Z1bmN0aW9uIGEoKXtmb3IodmFyIGU9W10sdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtpZihuKXt2YXIgbz10eXBlb2YgbjtpZigic3RyaW5nIj09PW98fCJudW1iZXIiPT09byllLnB1c2gobik7ZWxzZSBpZihBcnJheS5pc0FycmF5KG4pJiZuLmxlbmd0aCl7dmFyIGk9YS5hcHBseShudWxsLG4pO2kmJmUucHVzaChpKX1lbHNlIGlmKCJvYmplY3QiPT09bylmb3IodmFyIGwgaW4gbilyLmNhbGwobixsKSYmbltsXSYmZS5wdXNoKGwpfX1yZXR1cm4gZS5qb2luKCIgIil9ZS5leHBvcnRzPyhhLmRlZmF1bHQ9YSxlLmV4cG9ydHM9YSk6dm9pZCAwPT09KG49ZnVuY3Rpb24oKXtyZXR1cm4gYX0uYXBwbHkodCxbXSkpfHwoZS5leHBvcnRzPW4pfSgpfSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgcj1hcmd1bWVudHNbdF07Zm9yKHZhciBuIGluIHIpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHIsbikmJihlW25dPXJbbl0pfXJldHVybiBlfSxhPWkocigxKSksbz1pKHIoNCkpO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIGwoZSx0KXt2YXIgcj17fTtmb3IodmFyIG4gaW4gZSl0LmluZGV4T2Yobik+PTB8fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pJiYocltuXT1lW25dKTtyZXR1cm4gcn1mdW5jdGlvbiBzKGUpe3JldHVybiBBcnJheS5pc0FycmF5KGUpfWZ1bmN0aW9uIHUoZSl7cmV0dXJuIGZ1bmN0aW9uIGUodCl7dmFyIHI9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOltdO2lmKHModCkpZm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspZSh0W25dLHIpO2Vsc2Ugci5wdXNoKHQpO3JldHVybiByfShlKS5qb2luKCIuIikucmVwbGFjZSgvXFsvZywiLiIpLnJlcGxhY2UoL1xdL2csIiIpLnNwbGl0KCIuIil9dC5kZWZhdWx0PXtnZXQ6ZnVuY3Rpb24oZSx0LHIpe2lmKCF0KXJldHVybiBlO3ZhciBuPXUodCksYT12b2lkIDA7dHJ5e2E9bi5yZWR1Y2UoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGVbdF19KSxlKX1jYXRjaChlKXt9cmV0dXJuIHZvaWQgMCE9PWE\/YTpyfSxzZXQ6ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e30sdD1hcmd1bWVudHNbMV0scj1hcmd1bWVudHNbMl0sbj11KHQpLGE9dm9pZCAwLG89ZTtmb3IoOyhhPW4uc2hpZnQoKSkmJm4ubGVuZ3RoOylvW2FdfHwob1thXT17fSksbz1vW2FdO3JldHVybiBvW2FdPXIsZX0sdGFrZVJpZ2h0OmZ1bmN0aW9uKGUsdCl7dmFyIHI9dD5lLmxlbmd0aD8wOmUubGVuZ3RoLXQ7cmV0dXJuIGUuc2xpY2Uocil9LGxhc3Q6ZnVuY3Rpb24oZSl7cmV0dXJuIGVbZS5sZW5ndGgtMV19LG9yZGVyQnk6ZnVuY3Rpb24oZSx0LHIsbil7cmV0dXJuIGUuc29ydCgoZnVuY3Rpb24oZSxhKXtmb3IodmFyIG89MDtvPHQubGVuZ3RoO28rKyl7dmFyIGk9dFtvXSxsPSExPT09cltvXXx8ImRlc2MiPT09cltvXSxzPWkoZSxhKTtpZihzKXJldHVybiBsPy1zOnN9cmV0dXJuIHJbMF0\/ZVtuXS1hW25dOmFbbl0tZVtuXX0pKX0scmFuZ2U6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PVtdLHI9MDtyPGU7cisrKXQucHVzaChlKTtyZXR1cm4gdH0scmVtb3ZlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuZmlsdGVyKChmdW5jdGlvbihyLG4pe3JldHVybiEhdChyKSYmKGUuc3BsaWNlKG4sMSksITApfSkpfSxjbG9uZTpmdW5jdGlvbihlKXt0cnl7cmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZSwoZnVuY3Rpb24oZSx0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90LnRvU3RyaW5nKCk6dH0pKSl9Y2F0Y2godCl7cmV0dXJuIGV9fSxnZXRGaXJzdERlZmluZWQ6ZnVuY3Rpb24oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PUFycmF5KGUpLHI9MDtyPGU7cisrKXRbcl09YXJndW1lbnRzW3JdO2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKWlmKHZvaWQgMCE9PXRbbl0pcmV0dXJuIHRbbl19LHN1bTpmdW5jdGlvbihlKXtyZXR1cm4gZS5yZWR1Y2UoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUrdH0pLDApfSxtYWtlVGVtcGxhdGVDb21wb25lbnQ6ZnVuY3Rpb24oZSx0KXtpZighdCl0aHJvdyBuZXcgRXJyb3IoIk5vIGRpc3BsYXlOYW1lIGZvdW5kIGZvciB0ZW1wbGF0ZSBjb21wb25lbnQ6IixlKTt2YXIgcj1mdW5jdGlvbih0KXt2YXIgcj10LmNoaWxkcmVuLGk9dC5jbGFzc05hbWUscz1sKHQsWyJjaGlsZHJlbiIsImNsYXNzTmFtZSJdKTtyZXR1cm4gYS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImRpdiIsbih7Y2xhc3NOYW1lOigwLG8uZGVmYXVsdCkoZSxpKX0scykscil9O3JldHVybiByLmRpc3BsYXlOYW1lPXQscn0sZ3JvdXBCeTpmdW5jdGlvbihlLHQpe3JldHVybiBlLnJlZHVjZSgoZnVuY3Rpb24oZSxyLG4pe3ZhciBhPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3QocixuKTpyW3RdO3JldHVybiBlW2FdPXMoZVthXSk\/ZVthXTpbXSxlW2FdLnB1c2gociksZX0pLHt9KX0saXNBcnJheTpzLHNwbGl0UHJvcHM6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jbGFzc05hbWUscj1lLnN0eWxlLG49bChlLFsiY2xhc3NOYW1lIiwic3R5bGUiXSk7cmV0dXJue2NsYXNzTmFtZTp0LHN0eWxlOnIscmVzdDpufHx7fX19LGNvbXBhY3RPYmplY3Q6ZnVuY3Rpb24oZSl7dmFyIHQ9e307Zm9yKHZhciByIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShyKSYmdm9pZCAwIT09ZVtyXSYmdm9pZCAwIT09ZVtyXSYmKHRbcl09ZVtyXSk7cmV0dXJuIHR9LGlzU29ydGluZ0Rlc2M6ZnVuY3Rpb24oZSl7cmV0dXJuISgiZGVzYyIhPT1lLnNvcnQmJiEwIT09ZS5kZXNjJiYhMSE9PWUuYXNjKX0sbm9ybWFsaXplQ29tcG9uZW50OmZ1bmN0aW9uKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fSxyPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTplO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlP09iamVjdC5nZXRQcm90b3R5cGVPZihlKS5pc1JlYWN0Q29tcG9uZW50P2EuZGVmYXVsdC5jcmVhdGVFbGVtZW50KGUsdCk6ZSh0KTpyfSxhc1B4OmZ1bmN0aW9uKGUpe3JldHVybiBlPU51bWJlcihlKSxOdW1iZXIuaXNOYU4oZSk\/bnVsbDplKyJweCJ9fX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9W107cmV0dXJuIHQudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoKGZ1bmN0aW9uKHQpe3ZhciByPWZ1bmN0aW9uKGUsdCl7dmFyIHI9ZVsxXXx8IiIsbj1lWzNdO2lmKCFuKXJldHVybiByO2lmKHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBidG9hKXt2YXIgYT0oaT1uLCIvKiMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsIitidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShpKSkpKSsiICovIiksbz1uLnNvdXJjZXMubWFwKChmdW5jdGlvbihlKXtyZXR1cm4iLyojIHNvdXJjZVVSTD0iK24uc291cmNlUm9vdCtlKyIgKi8ifSkpO3JldHVybltyXS5jb25jYXQobykuY29uY2F0KFthXSkuam9pbigiXG4iKX12YXIgaTtyZXR1cm5bcl0uam9pbigiXG4iKX0odCxlKTtyZXR1cm4gdFsyXT8iQG1lZGlhICIrdFsyXSsieyIrcisifSI6cn0pKS5qb2luKCIiKX0sdC5pPWZ1bmN0aW9uKGUscil7InN0cmluZyI9PXR5cGVvZiBlJiYoZT1bW251bGwsZSwiIl1dKTtmb3IodmFyIG49e30sYT0wO2E8dGhpcy5sZW5ndGg7YSsrKXt2YXIgbz10aGlzW2FdWzBdO251bGwhPW8mJihuW29dPSEwKX1mb3IoYT0wO2E8ZS5sZW5ndGg7YSsrKXt2YXIgaT1lW2FdO251bGwhPWlbMF0mJm5baVswXV18fChyJiYhaVsyXT9pWzJdPXI6ciYmKGlbMl09IigiK2lbMl0rIikgYW5kICgiK3IrIikiKSx0LnB1c2goaSkpfX0sdH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbixhLG89e30saT0obj1mdW5jdGlvbigpe3JldHVybiB3aW5kb3cmJmRvY3VtZW50JiZkb2N1bWVudC5hbGwmJiF3aW5kb3cuYXRvYn0sZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwPT09YSYmKGE9bi5hcHBseSh0aGlzLGFyZ3VtZW50cykpLGF9KSxsPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ\/dC5xdWVyeVNlbGVjdG9yKGUpOmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoZSl9LHM9ZnVuY3Rpb24oZSl7dmFyIHQ9e307cmV0dXJuIGZ1bmN0aW9uKGUscil7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUpcmV0dXJuIGUoKTtpZih2b2lkIDA9PT10W2VdKXt2YXIgbj1sLmNhbGwodGhpcyxlLHIpO2lmKHdpbmRvdy5IVE1MSUZyYW1lRWxlbWVudCYmbiBpbnN0YW5jZW9mIHdpbmRvdy5IVE1MSUZyYW1lRWxlbWVudCl0cnl7bj1uLmNvbnRlbnREb2N1bWVudC5oZWFkfWNhdGNoKGUpe249bnVsbH10W2VdPW59cmV0dXJuIHRbZV19fSgpLHU9bnVsbCxjPTAsZj1bXSxkPXIoMTcpO2Z1bmN0aW9uIHAoZSx0KXtmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIG49ZVtyXSxhPW9bbi5pZF07aWYoYSl7YS5yZWZzKys7Zm9yKHZhciBpPTA7aTxhLnBhcnRzLmxlbmd0aDtpKyspYS5wYXJ0c1tpXShuLnBhcnRzW2ldKTtmb3IoO2k8bi5wYXJ0cy5sZW5ndGg7aSsrKWEucGFydHMucHVzaCh2KG4ucGFydHNbaV0sdCkpfWVsc2V7dmFyIGw9W107Zm9yKGk9MDtpPG4ucGFydHMubGVuZ3RoO2krKylsLnB1c2godihuLnBhcnRzW2ldLHQpKTtvW24uaWRdPXtpZDpuLmlkLHJlZnM6MSxwYXJ0czpsfX19fWZ1bmN0aW9uIGcoZSx0KXtmb3IodmFyIHI9W10sbj17fSxhPTA7YTxlLmxlbmd0aDthKyspe3ZhciBvPWVbYV0saT10LmJhc2U\/b1swXSt0LmJhc2U6b1swXSxsPXtjc3M6b1sxXSxtZWRpYTpvWzJdLHNvdXJjZU1hcDpvWzNdfTtuW2ldP25baV0ucGFydHMucHVzaChsKTpyLnB1c2gobltpXT17aWQ6aSxwYXJ0czpbbF19KX1yZXR1cm4gcn1mdW5jdGlvbiBoKGUsdCl7dmFyIHI9cyhlLmluc2VydEludG8pO2lmKCFyKXRocm93IG5ldyBFcnJvcigiQ291bGRuJ3QgZmluZCBhIHN0eWxlIHRhcmdldC4gVGhpcyBwcm9iYWJseSBtZWFucyB0aGF0IHRoZSB2YWx1ZSBmb3IgdGhlICdpbnNlcnRJbnRvJyBwYXJhbWV0ZXIgaXMgaW52YWxpZC4iKTt2YXIgbj1mW2YubGVuZ3RoLTFdO2lmKCJ0b3AiPT09ZS5pbnNlcnRBdCluP24ubmV4dFNpYmxpbmc\/ci5pbnNlcnRCZWZvcmUodCxuLm5leHRTaWJsaW5nKTpyLmFwcGVuZENoaWxkKHQpOnIuaW5zZXJ0QmVmb3JlKHQsci5maXJzdENoaWxkKSxmLnB1c2godCk7ZWxzZSBpZigiYm90dG9tIj09PWUuaW5zZXJ0QXQpci5hcHBlbmRDaGlsZCh0KTtlbHNle2lmKCJvYmplY3QiIT10eXBlb2YgZS5pbnNlcnRBdHx8IWUuaW5zZXJ0QXQuYmVmb3JlKXRocm93IG5ldyBFcnJvcigiW1N0eWxlIExvYWRlcl1cblxuIEludmFsaWQgdmFsdWUgZm9yIHBhcmFtZXRlciAnaW5zZXJ0QXQnICgnb3B0aW9ucy5pbnNlcnRBdCcpIGZvdW5kLlxuIE11c3QgYmUgJ3RvcCcsICdib3R0b20nLCBvciBPYmplY3QuXG4gKGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJwYWNrLWNvbnRyaWIvc3R5bGUtbG9hZGVyI2luc2VydGF0KVxuIik7dmFyIGE9cyhlLmluc2VydEF0LmJlZm9yZSxyKTtyLmluc2VydEJlZm9yZSh0LGEpfX1mdW5jdGlvbiBtKGUpe2lmKG51bGw9PT1lLnBhcmVudE5vZGUpcmV0dXJuITE7ZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGUpO3ZhciB0PWYuaW5kZXhPZihlKTt0Pj0wJiZmLnNwbGljZSh0LDEpfWZ1bmN0aW9uIGIoZSl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtpZih2b2lkIDA9PT1lLmF0dHJzLnR5cGUmJihlLmF0dHJzLnR5cGU9InRleHQvY3NzIiksdm9pZCAwPT09ZS5hdHRycy5ub25jZSl7dmFyIG49ZnVuY3Rpb24oKXswO3JldHVybiByLm5jfSgpO24mJihlLmF0dHJzLm5vbmNlPW4pfXJldHVybiB5KHQsZS5hdHRycyksaChlLHQpLHR9ZnVuY3Rpb24geShlLHQpe09iamVjdC5rZXlzKHQpLmZvckVhY2goKGZ1bmN0aW9uKHIpe2Uuc2V0QXR0cmlidXRlKHIsdFtyXSl9KSl9ZnVuY3Rpb24gdihlLHQpe3ZhciByLG4sYSxvO2lmKHQudHJhbnNmb3JtJiZlLmNzcyl7aWYoIShvPSJmdW5jdGlvbiI9PXR5cGVvZiB0LnRyYW5zZm9ybT90LnRyYW5zZm9ybShlLmNzcyk6dC50cmFuc2Zvcm0uZGVmYXVsdChlLmNzcykpKXJldHVybiBmdW5jdGlvbigpe307ZS5jc3M9b31pZih0LnNpbmdsZXRvbil7dmFyIGk9YysrO3I9dXx8KHU9Yih0KSksbj1TLmJpbmQobnVsbCxyLGksITEpLGE9Uy5iaW5kKG51bGwscixpLCEwKX1lbHNlIGUuc291cmNlTWFwJiYiZnVuY3Rpb24iPT10eXBlb2YgVVJMJiYiZnVuY3Rpb24iPT10eXBlb2YgVVJMLmNyZWF0ZU9iamVjdFVSTCYmImZ1bmN0aW9uIj09dHlwZW9mIFVSTC5yZXZva2VPYmplY3RVUkwmJiJmdW5jdGlvbiI9PXR5cGVvZiBCbG9iJiYiZnVuY3Rpb24iPT10eXBlb2YgYnRvYT8ocj1mdW5jdGlvbihlKXt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaW5rIik7cmV0dXJuIHZvaWQgMD09PWUuYXR0cnMudHlwZSYmKGUuYXR0cnMudHlwZT0idGV4dC9jc3MiKSxlLmF0dHJzLnJlbD0ic3R5bGVzaGVldCIseSh0LGUuYXR0cnMpLGgoZSx0KSx0fSh0KSxuPUMuYmluZChudWxsLHIsdCksYT1mdW5jdGlvbigpe20ociksci5ocmVmJiZVUkwucmV2b2tlT2JqZWN0VVJMKHIuaHJlZil9KToocj1iKHQpLG49UC5iaW5kKG51bGwsciksYT1mdW5jdGlvbigpe20ocil9KTtyZXR1cm4gbihlKSxmdW5jdGlvbih0KXtpZih0KXtpZih0LmNzcz09PWUuY3NzJiZ0Lm1lZGlhPT09ZS5tZWRpYSYmdC5zb3VyY2VNYXA9PT1lLnNvdXJjZU1hcClyZXR1cm47bihlPXQpfWVsc2UgYSgpfX1lLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIERFQlVHJiZERUJVRyYmIm9iamVjdCIhPXR5cGVvZiBkb2N1bWVudCl0aHJvdyBuZXcgRXJyb3IoIlRoZSBzdHlsZS1sb2FkZXIgY2Fubm90IGJlIHVzZWQgaW4gYSBub24tYnJvd3NlciBlbnZpcm9ubWVudCIpOyh0PXR8fHt9KS5hdHRycz0ib2JqZWN0Ij09dHlwZW9mIHQuYXR0cnM\/dC5hdHRyczp7fSx0LnNpbmdsZXRvbnx8ImJvb2xlYW4iPT10eXBlb2YgdC5zaW5nbGV0b258fCh0LnNpbmdsZXRvbj1pKCkpLHQuaW5zZXJ0SW50b3x8KHQuaW5zZXJ0SW50bz0iaGVhZCIpLHQuaW5zZXJ0QXR8fCh0Lmluc2VydEF0PSJib3R0b20iKTt2YXIgcj1nKGUsdCk7cmV0dXJuIHAocix0KSxmdW5jdGlvbihlKXtmb3IodmFyIG49W10sYT0wO2E8ci5sZW5ndGg7YSsrKXt2YXIgaT1yW2FdOyhsPW9baS5pZF0pLnJlZnMtLSxuLnB1c2gobCl9ZSYmcChnKGUsdCksdCk7Zm9yKGE9MDthPG4ubGVuZ3RoO2ErKyl7dmFyIGw7aWYoMD09PShsPW5bYV0pLnJlZnMpe2Zvcih2YXIgcz0wO3M8bC5wYXJ0cy5sZW5ndGg7cysrKWwucGFydHNbc10oKTtkZWxldGUgb1tsLmlkXX19fX07dmFyIHcseD0odz1bXSxmdW5jdGlvbihlLHQpe3JldHVybiB3W2VdPXQsdy5maWx0ZXIoQm9vbGVhbikuam9pbigiXG4iKX0pO2Z1bmN0aW9uIFMoZSx0LHIsbil7dmFyIGE9cj8iIjpuLmNzcztpZihlLnN0eWxlU2hlZXQpZS5zdHlsZVNoZWV0LmNzc1RleHQ9eCh0LGEpO2Vsc2V7dmFyIG89ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYSksaT1lLmNoaWxkTm9kZXM7aVt0XSYmZS5yZW1vdmVDaGlsZChpW3RdKSxpLmxlbmd0aD9lLmluc2VydEJlZm9yZShvLGlbdF0pOmUuYXBwZW5kQ2hpbGQobyl9fWZ1bmN0aW9uIFAoZSx0KXt2YXIgcj10LmNzcyxuPXQubWVkaWE7aWYobiYmZS5zZXRBdHRyaWJ1dGUoIm1lZGlhIixuKSxlLnN0eWxlU2hlZXQpZS5zdHlsZVNoZWV0LmNzc1RleHQ9cjtlbHNle2Zvcig7ZS5maXJzdENoaWxkOyllLnJlbW92ZUNoaWxkKGUuZmlyc3RDaGlsZCk7ZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShyKSl9fWZ1bmN0aW9uIEMoZSx0LHIpe3ZhciBuPXIuY3NzLGE9ci5zb3VyY2VNYXAsbz12b2lkIDA9PT10LmNvbnZlcnRUb0Fic29sdXRlVXJscyYmYTsodC5jb252ZXJ0VG9BYnNvbHV0ZVVybHN8fG8pJiYobj1kKG4pKSxhJiYobis9IlxuLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCwiK2J0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGEpKSkpKyIgKi8iKTt2YXIgaT1uZXcgQmxvYihbbl0se3R5cGU6InRleHQvY3NzIn0pLGw9ZS5ocmVmO2UuaHJlZj1VUkwuY3JlYXRlT2JqZWN0VVJMKGkpLGwmJlVSTC5yZXZva2VPYmplY3RVUkwobCl9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG49dFtyXTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHwhMSxuLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gbiYmKG4ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4ua2V5LG4pfX1yZXR1cm4gZnVuY3Rpb24odCxyLG4pe3JldHVybiByJiZlKHQucHJvdG90eXBlLHIpLG4mJmUodCxuKSx0fX0oKTtmdW5jdGlvbiBhKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gbyhlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ\/ZTp0fXQuZGVmYXVsdD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybiBhKHRoaXMsdCksbyh0aGlzLCh0Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfXJldHVybiBmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y\/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9KHQsZSksbih0LFt7a2V5OiJVTlNBRkVfY29tcG9uZW50V2lsbE1vdW50Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc2V0U3RhdGVXaXRoRGF0YSh0aGlzLmdldERhdGFNb2RlbCh0aGlzLmdldFJlc29sdmVkU3RhdGUoKSkpfX0se2tleToiY29tcG9uZW50RGlkTW91bnQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5maXJlRmV0Y2hEYXRhKCl9fSx7a2V5OiJVTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLmdldFJlc29sdmVkU3RhdGUoKSxuPXRoaXMuZ2V0UmVzb2x2ZWRTdGF0ZShlLHQpO1sic29ydGVkIiwiZmlsdGVyZWQiLCJyZXNpemVkIiwiZXhwYW5kZWQiXS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgdD0iZGVmYXVsdCIrKGUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrZS5zbGljZSgxKSk7SlNPTi5zdHJpbmdpZnkoclt0XSkhPT1KU09OLnN0cmluZ2lmeShuW3RdKSYmKG5bZV09blt0XSl9KSk7WyJzb3J0YWJsZSIsImZpbHRlcmFibGUiLCJyZXNpemFibGUiXS5mb3JFYWNoKChmdW5jdGlvbihlKXtpZihyW2VdIT09bltlXSl7dmFyIHQ9ZS5yZXBsYWNlKCJhYmxlIiwiIikrImVkIixhPSJkZWZhdWx0IisodC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSt0LnNsaWNlKDEpKTtuW3RdPW5bYV19fSkpLHIuZGF0YT09PW4uZGF0YSYmci5jb2x1bW5zPT09bi5jb2x1bW5zJiZyLnBpdm90Qnk9PT1uLnBpdm90QnkmJnIuc29ydGVkPT09bi5zb3J0ZWQmJnIuZmlsdGVyZWQ9PT1uLmZpbHRlcmVkfHx0aGlzLnNldFN0YXRlV2l0aERhdGEodGhpcy5nZXREYXRhTW9kZWwobikpfX0se2tleToic2V0U3RhdGVXaXRoRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLG49dGhpcy5nZXRSZXNvbHZlZFN0YXRlKCksYT10aGlzLmdldFJlc29sdmVkU3RhdGUoe30sZSksbz1hLmZyZWV6ZVdoZW5FeHBhbmRlZDtpZihhLmZyb3plbj0hMSxvKWZvcih2YXIgaT1PYmplY3Qua2V5cyhhLmV4cGFuZGVkKSxsPTA7bDxpLmxlbmd0aDtsKyspaWYoYS5leHBhbmRlZFtpW2xdXSl7YS5mcm96ZW49ITA7YnJlYWt9cmV0dXJuKG4uZnJvemVuJiYhYS5mcm96ZW58fG4uc29ydGVkIT09YS5zb3J0ZWR8fG4uZmlsdGVyZWQhPT1hLmZpbHRlcmVkfHxuLnNob3dGaWx0ZXJzIT09YS5zaG93RmlsdGVyc3x8IWEuZnJvemVuJiZuLnJlc29sdmVkRGF0YSE9PWEucmVzb2x2ZWREYXRhKSYmKChuLnNvcnRlZCE9PWEuc29ydGVkJiZ0aGlzLnByb3BzLmNvbGxhcHNlT25Tb3J0aW5nQ2hhbmdlfHxuLmZpbHRlcmVkIT09YS5maWx0ZXJlZHx8bi5zaG93RmlsdGVycyE9PWEuc2hvd0ZpbHRlcnN8fG4uc29ydGVkRGF0YSYmIWEuZnJvemVuJiZuLnJlc29sdmVkRGF0YSE9PWEucmVzb2x2ZWREYXRhJiZ0aGlzLnByb3BzLmNvbGxhcHNlT25EYXRhQ2hhbmdlKSYmKGEuZXhwYW5kZWQ9e30pLE9iamVjdC5hc3NpZ24oYSx0aGlzLmdldFNvcnRlZERhdGEoYSkpKSxuLmZpbHRlcmVkIT09YS5maWx0ZXJlZCYmKGEucGFnZT0wKSxhLnNvcnRlZERhdGEmJihhLnBhZ2VzPWEubWFudWFsP2EucGFnZXM6TWF0aC5jZWlsKGEuc29ydGVkRGF0YS5sZW5ndGgvYS5wYWdlU2l6ZSksYS5wYWdlPU1hdGgubWF4KGEucGFnZT49YS5wYWdlcz9hLnBhZ2VzLTE6YS5wYWdlLDApKSx0aGlzLnNldFN0YXRlKGEsKGZ1bmN0aW9uKCl7dCYmdCgpLG4ucGFnZT09PWEucGFnZSYmbi5wYWdlU2l6ZT09PWEucGFnZVNpemUmJm4uc29ydGVkPT09YS5zb3J0ZWQmJm4uZmlsdGVyZWQ9PT1hLmZpbHRlcmVkfHxyLmZpcmVGZXRjaERhdGEoKX0pKX19XSksdH0oZSl9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj1mdW5jdGlvbihlLHQpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGU7aWYoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChlKSlyZXR1cm4gZnVuY3Rpb24oZSx0KXt2YXIgcj1bXSxuPSEwLGE9ITEsbz12b2lkIDA7dHJ5e2Zvcih2YXIgaSxsPWVbU3ltYm9sLml0ZXJhdG9yXSgpOyEobj0oaT1sLm5leHQoKSkuZG9uZSkmJihyLnB1c2goaS52YWx1ZSksIXR8fHIubGVuZ3RoIT09dCk7bj0hMCk7fWNhdGNoKGUpe2E9ITAsbz1lfWZpbmFsbHl7dHJ5eyFuJiZsLnJldHVybiYmbC5yZXR1cm4oKX1maW5hbGx5e2lmKGEpdGhyb3cgb319cmV0dXJuIHJ9KGUsdCk7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZSIpfSxhPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxvPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciByPWFyZ3VtZW50c1t0XTtmb3IodmFyIG4gaW4gcilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocixuKSYmKGVbbl09cltuXSl9cmV0dXJuIGV9LGk9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBuPXRbcl07bi5lbnVtZXJhYmxlPW4uZW51bWVyYWJsZXx8ITEsbi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIG4mJihuLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLmtleSxuKX19cmV0dXJuIGZ1bmN0aW9uKHQscixuKXtyZXR1cm4gciYmZSh0LnByb3RvdHlwZSxyKSxuJiZlKHQsbiksdH19KCksbD11KHIoMSkpLHM9dShyKDUpKTtmdW5jdGlvbiB1KGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU\/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBjKGUsdCxyKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOnIsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPXIsZX1mdW5jdGlvbiBmKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpe2Zvcih2YXIgdD0wLHI9QXJyYXkoZS5sZW5ndGgpO3Q8ZS5sZW5ndGg7dCsrKXJbdF09ZVt0XTtyZXR1cm4gcn1yZXR1cm4gQXJyYXkuZnJvbShlKX1mdW5jdGlvbiBkKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gcChlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ\/ZTp0fXQuZGVmYXVsdD1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybiBkKHRoaXMsdCkscCh0aGlzLCh0Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfXJldHVybiBmdW5jdGlvbihlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y\/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9KHQsZSksaSh0LFt7a2V5OiJnZXRSZXNvbHZlZFN0YXRlIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBvKHt9LHMuZGVmYXVsdC5jb21wYWN0T2JqZWN0KHRoaXMuc3RhdGUpLHMuZGVmYXVsdC5jb21wYWN0T2JqZWN0KHRoaXMucHJvcHMpLHMuZGVmYXVsdC5jb21wYWN0T2JqZWN0KHQpLHMuZGVmYXVsdC5jb21wYWN0T2JqZWN0KGUpKX19LHtrZXk6ImdldERhdGFNb2RlbCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxyPWUuY29sdW1ucyxpPWUucGl2b3RCeSx1PXZvaWQgMD09PWk\/W106aSxkPWUuZGF0YSxwPWUucGl2b3RJREtleSxnPWUucGl2b3RWYWxLZXksaD1lLnN1YlJvd3NLZXksbT1lLmFnZ3JlZ2F0ZWRLZXksYj1lLm5lc3RpbmdMZXZlbEtleSx5PWUub3JpZ2luYWxLZXksdj1lLmluZGV4S2V5LHc9ZS5ncm91cGVkQnlQaXZvdEtleSx4PWUuU3ViQ29tcG9uZW50LFM9ITE7ci5mb3JFYWNoKChmdW5jdGlvbihlKXtlLmNvbHVtbnMmJihTPSEwKX0pKTt2YXIgUD1bXS5jb25jYXQoZihyKSksQz1yLmZpbmQoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmV4cGFuZGVyfHxlLmNvbHVtbnMmJmUuY29sdW1ucy5zb21lKChmdW5jdGlvbihlKXtyZXR1cm4gZS5leHBhbmRlcn0pKX0pKTtDJiYhQy5leHBhbmRlciYmKEM9Qy5jb2x1bW5zLmZpbmQoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmV4cGFuZGVyfSkpKSx4JiYhQyYmKFA9W0M9e2V4cGFuZGVyOiEwfV0uY29uY2F0KGYoUCkpKTt2YXIgTz1mdW5jdGlvbihlLHIpe3ZhciBuPWZ1bmN0aW9uKGUscil7dmFyIG49dm9pZCAwO2lmKChuPWUuZXhwYW5kZXI\/byh7fSx0LnByb3BzLmNvbHVtbix0LnByb3BzLmV4cGFuZGVyRGVmYXVsdHMsZSk6byh7fSx0LnByb3BzLmNvbHVtbixlKSkubWF4V2lkdGg8bi5taW5XaWR0aCYmKG4ubWluV2lkdGg9bi5tYXhXaWR0aCksciYmKG4ucGFyZW50Q29sdW1uPXIpLCJzdHJpbmciPT10eXBlb2Ygbi5hY2Nlc3Nvcil7dmFyIGk9ZnVuY3Rpb24oKXtuLmlkPW4uaWR8fG4uYWNjZXNzb3I7dmFyIGU9bi5hY2Nlc3NvcjtyZXR1cm4gbi5hY2Nlc3Nvcj1mdW5jdGlvbih0KXtyZXR1cm4gcy5kZWZhdWx0LmdldCh0LGUpfSx7djpufX0oKTtpZigib2JqZWN0Ij09PSh2b2lkIDA9PT1pPyJ1bmRlZmluZWQiOmEoaSkpKXJldHVybiBpLnZ9aWYobi5hY2Nlc3NvciYmIW4uaWQpdGhyb3cgY29uc29sZS53YXJuKG4pLG5ldyBFcnJvcigiQSBjb2x1bW4gaWQgaXMgcmVxdWlyZWQgaWYgdXNpbmcgYSBub24tc3RyaW5nIGFjY2Vzc29yIGZvciBjb2x1bW4gYWJvdmUuIik7cmV0dXJuIG4uYWNjZXNzb3J8fChuLmFjY2Vzc29yPWZ1bmN0aW9uKGUpe30pLG59KGUscik7cmV0dXJuIGsucHVzaChuKSxufSxrPVtdLFQ9UC5tYXAoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sdW1ucz9vKHt9LGUse2NvbHVtbnM6ZS5jb2x1bW5zLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIE8odCxlKX0pKX0pOk8oZSl9KSkuc2xpY2UoKSxqPVtdLEU9KFQ9KFQ9VC5tYXAoKGZ1bmN0aW9uKGUsdCl7aWYoZS5jb2x1bW5zKXt2YXIgcj1lLmNvbHVtbnMuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4hKHUuaW5kZXhPZihlLmlkKT4tMSkmJnMuZGVmYXVsdC5nZXRGaXJzdERlZmluZWQoZS5zaG93LCEwKX0pKTtyZXR1cm4gbyh7fSxlLHtjb2x1bW5zOnJ9KX1yZXR1cm4gZX0pKSkuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gZS5jb2x1bW5zP2UuY29sdW1ucy5sZW5ndGg6ISh1LmluZGV4T2YoZS5pZCk+LTEpJiZzLmRlZmF1bHQuZ2V0Rmlyc3REZWZpbmVkKGUuc2hvdywhMCl9KSkpLmZpbmRJbmRleCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUucGl2b3R9KSk7dS5sZW5ndGgmJmZ1bmN0aW9uKCl7dmFyIGU9W107dS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgcj1rLmZpbmQoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmlkPT09dH0pKTtyJiZlLnB1c2gocil9KSk7dmFyIHI9ZS5yZWR1Y2UoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUmJmU9PT10LnBhcmVudENvbHVtbiYmdC5wYXJlbnRDb2x1bW59KSxlWzBdLnBhcmVudENvbHVtbiksbj1TJiZyLkhlYWRlcixhPXtIZWFkZXI6bj1ufHxmdW5jdGlvbigpe3JldHVybiBsLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgic3Ryb25nIixudWxsLCJQaXZvdGVkIil9LGNvbHVtbnM6ZS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBvKHt9LHQucHJvcHMucGl2b3REZWZhdWx0cyxlLHtwaXZvdGVkOiEwfSl9KSl9O0U+PTA\/KGE9byh7fSxUW0VdLGEpLFQuc3BsaWNlKEUsMSxhKSk6VC51bnNoaWZ0KGEpfSgpO3ZhciBSPVtdLE49W10sQT1mdW5jdGlvbihlLHIpe1IucHVzaChvKHt9LHQucHJvcHMuY29sdW1uLHIse2NvbHVtbnM6ZX0pKSxOPVtdfTtULmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7aWYoZS5jb2x1bW5zKXJldHVybiBqPWouY29uY2F0KGUuY29sdW1ucyksTi5sZW5ndGg+MCYmQShOKSx2b2lkIEEoZS5jb2x1bW5zLGUpO2oucHVzaChlKSxOLnB1c2goZSl9KSksUyYmTi5sZW5ndGg+MCYmQShOKTt2YXIgRD1kLm1hcCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24gZSh0LHIpe3ZhciBuLGE9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0\/YXJndW1lbnRzWzJdOjAsbz0oYyhuPXt9LHksdCksYyhuLHYsciksYyhuLGgsdFtoXSksYyhuLGIsYSksbik7cmV0dXJuIGsuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS5leHBhbmRlcnx8KG9bZS5pZF09ZS5hY2Nlc3Nvcih0KSl9KSksb1toXSYmKG9baF09b1toXS5tYXAoKGZ1bmN0aW9uKHQscil7cmV0dXJuIGUodCxyLGErMSl9KSkpLG99KGUsdCl9KSksej1mdW5jdGlvbihlKXt2YXIgdD17fTtyZXR1cm4gXy5mb3JFYWNoKChmdW5jdGlvbihyKXt2YXIgbj1lLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGVbci5pZF19KSk7dFtyLmlkXT1yLmFnZ3JlZ2F0ZShuLGUpfSkpLHR9LF89ai5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiFlLmV4cGFuZGVyJiZlLmFnZ3JlZ2F0ZX0pKTtyZXR1cm4gdS5sZW5ndGgmJihEPWZ1bmN0aW9uIGUodCxyKXt2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06MDtpZihhPT09ci5sZW5ndGgpcmV0dXJuIHQ7dmFyIGk9T2JqZWN0LmVudHJpZXMocy5kZWZhdWx0Lmdyb3VwQnkodCxyW2FdKSkubWFwKChmdW5jdGlvbihlKXt2YXIgdCxvPW4oZSwyKSxpPW9bMF0sbD1vWzFdO3JldHVybiBjKHQ9e30scCxyW2FdKSxjKHQsZyxpKSxjKHQsclthXSxpKSxjKHQsaCxsKSxjKHQsYixhKSxjKHQsdywhMCksdH0pKTtyZXR1cm4gaT1pLm1hcCgoZnVuY3Rpb24odCl7dmFyIG4saT1lKHRbaF0scixhKzEpO3JldHVybiBvKHt9LHQsKGMobj17fSxoLGkpLGMobixtLCEwKSxuKSx6KGkpKX0pKX0oRCx1KSksbyh7fSxlLHtyZXNvbHZlZERhdGE6RCxhbGxWaXNpYmxlQ29sdW1uczpqLGhlYWRlckdyb3VwczpSLGFsbERlY29yYXRlZENvbHVtbnM6ayxoYXNIZWFkZXJHcm91cHM6U30pfX0se2tleToiZ2V0U29ydGVkRGF0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5tYW51YWwscj1lLnNvcnRlZCxuPWUuZmlsdGVyZWQsYT1lLmRlZmF1bHRGaWx0ZXJNZXRob2Qsbz1lLnJlc29sdmVkRGF0YSxpPWUuYWxsVmlzaWJsZUNvbHVtbnMsbD1lLmFsbERlY29yYXRlZENvbHVtbnMscz17fTtyZXR1cm4gbC5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnNvcnRNZXRob2R9KSkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7c1tlLmlkXT1lLnNvcnRNZXRob2R9KSkse3NvcnRlZERhdGE6dD9vOnRoaXMuc29ydERhdGEodGhpcy5maWx0ZXJEYXRhKG8sbixhLGkpLHIscyl9fX0se2tleToiZmlyZUZldGNoRGF0YSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnByb3BzLm9uRmV0Y2hEYXRhKHRoaXMuZ2V0UmVzb2x2ZWRTdGF0ZSgpLHRoaXMpfX0se2tleToiZ2V0UHJvcE9yU3RhdGUiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBzLmRlZmF1bHQuZ2V0Rmlyc3REZWZpbmVkKHRoaXMucHJvcHNbZV0sdGhpcy5zdGF0ZVtlXSl9fSx7a2V5OiJnZXRTdGF0ZU9yUHJvcCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHMuZGVmYXVsdC5nZXRGaXJzdERlZmluZWQodGhpcy5zdGF0ZVtlXSx0aGlzLnByb3BzW2VdKX19LHtrZXk6ImZpbHRlckRhdGEiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyLG4pe3ZhciBhPXRoaXMsaT1lO3JldHVybiB0Lmxlbmd0aCYmKGk9KGk9dC5yZWR1Y2UoKGZ1bmN0aW9uKGUsdCl7dmFyIGE9bi5maW5kKChmdW5jdGlvbihlKXtyZXR1cm4gZS5pZD09PXQuaWR9KSk7aWYoIWF8fCExPT09YS5maWx0ZXJhYmxlKXJldHVybiBlO3ZhciBvPWEuZmlsdGVyTWV0aG9kfHxyO3JldHVybiBhLmZpbHRlckFsbD9vKHQsZSxhKTplLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIG8odCxlLGEpfSkpfSksaSkpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGVbYS5wcm9wcy5zdWJSb3dzS2V5XT9vKHt9LGUsYyh7fSxhLnByb3BzLnN1YlJvd3NLZXksYS5maWx0ZXJEYXRhKGVbYS5wcm9wcy5zdWJSb3dzS2V5XSx0LHIsbikpKTplfSkpLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIWVbYS5wcm9wcy5zdWJSb3dzS2V5XXx8ZVthLnByb3BzLnN1YlJvd3NLZXldLmxlbmd0aD4wfSkpKSxpfX0se2tleToic29ydERhdGEiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcyxuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp7fTtpZighdC5sZW5ndGgpcmV0dXJuIGU7dmFyIGE9KHRoaXMucHJvcHMub3JkZXJCeU1ldGhvZHx8cy5kZWZhdWx0Lm9yZGVyQnkpKGUsdC5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBuW2UuaWRdP2Z1bmN0aW9uKHQscil7cmV0dXJuIG5bZS5pZF0odFtlLmlkXSxyW2UuaWRdLGUuZGVzYyl9OmZ1bmN0aW9uKHQsbil7cmV0dXJuIHIucHJvcHMuZGVmYXVsdFNvcnRNZXRob2QodFtlLmlkXSxuW2UuaWRdLGUuZGVzYyl9fSkpLHQubWFwKChmdW5jdGlvbihlKXtyZXR1cm4hZS5kZXNjfSkpLHRoaXMucHJvcHMuaW5kZXhLZXkpO3JldHVybiBhLmZvckVhY2goKGZ1bmN0aW9uKGUpe2Vbci5wcm9wcy5zdWJSb3dzS2V5XSYmKGVbci5wcm9wcy5zdWJSb3dzS2V5XT1yLnNvcnREYXRhKGVbci5wcm9wcy5zdWJSb3dzS2V5XSx0LG4pKX0pKSxhfX0se2tleToiZ2V0TWluUm93cyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gcy5kZWZhdWx0LmdldEZpcnN0RGVmaW5lZCh0aGlzLnByb3BzLm1pblJvd3MsdGhpcy5nZXRTdGF0ZU9yUHJvcCgicGFnZVNpemUiKSl9fSx7a2V5OiJvblBhZ2VDaGFuZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucHJvcHMscj10Lm9uUGFnZUNoYW5nZSxuPXQuY29sbGFwc2VPblBhZ2VDaGFuZ2UsYT17cGFnZTplfTtuJiYoYS5leHBhbmRlZD17fSksdGhpcy5zZXRTdGF0ZVdpdGhEYXRhKGEsKGZ1bmN0aW9uKCl7ciYmcihlKX0pKX19LHtrZXk6Im9uUGFnZVNpemVDaGFuZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucHJvcHMub25QYWdlU2l6ZUNoYW5nZSxyPXRoaXMuZ2V0UmVzb2x2ZWRTdGF0ZSgpLG49ci5wYWdlU2l6ZSpyLnBhZ2UsYT1NYXRoLmZsb29yKG4vZSk7dGhpcy5zZXRTdGF0ZVdpdGhEYXRhKHtwYWdlU2l6ZTplLHBhZ2U6YX0sKGZ1bmN0aW9uKCl7dCYmdChlLGEpfSkpfX0se2tleToic29ydENvbHVtbiIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLmdldFJlc29sdmVkU3RhdGUoKSxuPXIuc29ydGVkLGE9ci5za2lwTmV4dFNvcnQsbz1yLmRlZmF1bHRTb3J0RGVzYyxpPWUuaGFzT3duUHJvcGVydHkoImRlZmF1bHRTb3J0RGVzYyIpP2UuZGVmYXVsdFNvcnREZXNjOm8sbD0haTtpZihhKXRoaXMuc2V0U3RhdGVXaXRoRGF0YSh7c2tpcE5leHRTb3J0OiExfSk7ZWxzZXt2YXIgdT10aGlzLnByb3BzLm9uU29ydGVkQ2hhbmdlLGM9cy5kZWZhdWx0LmNsb25lKG58fFtdKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmRlc2M9cy5kZWZhdWx0LmlzU29ydGluZ0Rlc2MoZSksZX0pKTtpZihzLmRlZmF1bHQuaXNBcnJheShlKSkhZnVuY3Rpb24oKXt2YXIgcj1jLmZpbmRJbmRleCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuaWQ9PT1lWzBdLmlkfSkpO3I+LTE\/KGNbcl0uZGVzYz09PWw\/dD9jLnNwbGljZShyLGUubGVuZ3RoKTplLmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7Y1tyK3RdLmRlc2M9aX0pKTplLmZvckVhY2goKGZ1bmN0aW9uKGUsdCl7Y1tyK3RdLmRlc2M9bH0pKSx0fHwoYz1jLnNsaWNlKHIsZS5sZW5ndGgpKSk6Yz10P2MuY29uY2F0KGUubWFwKChmdW5jdGlvbihlKXtyZXR1cm57aWQ6ZS5pZCxkZXNjOml9fSkpKTplLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJue2lkOmUuaWQsZGVzYzppfX0pKX0oKTtlbHNle3ZhciBmPWMuZmluZEluZGV4KChmdW5jdGlvbih0KXtyZXR1cm4gdC5pZD09PWUuaWR9KSk7aWYoZj4tMSl7dmFyIGQ9Y1tmXTtkLmRlc2M9PT1sP3Q\/Yy5zcGxpY2UoZiwxKTooZC5kZXNjPWksYz1bZF0pOihkLmRlc2M9bCx0fHwoYz1bZF0pKX1lbHNlIHQ\/Yy5wdXNoKHtpZDplLmlkLGRlc2M6aX0pOmM9W3tpZDplLmlkLGRlc2M6aX1dfXRoaXMuc2V0U3RhdGVXaXRoRGF0YSh7cGFnZTohbi5sZW5ndGgmJmMubGVuZ3RofHwhdD8wOnRoaXMuc3RhdGUucGFnZSxzb3J0ZWQ6Y30sKGZ1bmN0aW9uKCl7dSYmdShjLGUsdCl9KSl9fX0se2tleToiZmlsdGVyQ29sdW1uIix2YWx1ZTpmdW5jdGlvbihlLHQpe3ZhciByPXRoaXMuZ2V0UmVzb2x2ZWRTdGF0ZSgpLmZpbHRlcmVkLG49dGhpcy5wcm9wcy5vbkZpbHRlcmVkQ2hhbmdlLGE9KHJ8fFtdKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe2lmKHQuaWQhPT1lLmlkKXJldHVybiEwfSkpOyIiIT09dCYmYS5wdXNoKHtpZDplLmlkLHZhbHVlOnR9KSx0aGlzLnNldFN0YXRlV2l0aERhdGEoe2ZpbHRlcmVkOmF9LChmdW5jdGlvbigpe24mJm4oYSxlLHQpfSkpfX0se2tleToicmVzaXplQ29sdW1uU3RhcnQiLHZhbHVlOmZ1bmN0aW9uKGUsdCxyKXt2YXIgbj10aGlzO2Uuc3RvcFByb3BhZ2F0aW9uKCk7dmFyIGE9ZS50YXJnZXQucGFyZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCxvPXZvaWQgMDtvPXI\/ZS5jaGFuZ2VkVG91Y2hlc1swXS5wYWdlWDplLnBhZ2VYLHRoaXMudHJhcEV2ZW50cz0hMCx0aGlzLnNldFN0YXRlV2l0aERhdGEoe2N1cnJlbnRseVJlc2l6aW5nOntpZDp0LmlkLHN0YXJ0WDpvLHBhcmVudFdpZHRoOmF9fSwoZnVuY3Rpb24oKXtyPyhkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLG4ucmVzaXplQ29sdW1uTW92aW5nKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGNhbmNlbCIsbi5yZXNpemVDb2x1bW5FbmQpLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIixuLnJlc2l6ZUNvbHVtbkVuZCkpOihkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLG4ucmVzaXplQ29sdW1uTW92aW5nKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIixuLnJlc2l6ZUNvbHVtbkVuZCksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VsZWF2ZSIsbi5yZXNpemVDb2x1bW5FbmQpKX0pKX19LHtrZXk6InJlc2l6ZUNvbHVtbk1vdmluZyIsdmFsdWU6ZnVuY3Rpb24oZSl7ZS5zdG9wUHJvcGFnYXRpb24oKTt2YXIgdD10aGlzLnByb3BzLm9uUmVzaXplZENoYW5nZSxyPXRoaXMuZ2V0UmVzb2x2ZWRTdGF0ZSgpLG49ci5yZXNpemVkLGE9ci5jdXJyZW50bHlSZXNpemluZyxvPW4uZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gZS5pZCE9PWEuaWR9KSksaT12b2lkIDA7InRvdWNobW92ZSI9PT1lLnR5cGU\/aT1lLmNoYW5nZWRUb3VjaGVzWzBdLnBhZ2VYOiJtb3VzZW1vdmUiPT09ZS50eXBlJiYoaT1lLnBhZ2VYKTt2YXIgbD1NYXRoLm1heChhLnBhcmVudFdpZHRoK2ktYS5zdGFydFgsMTEpO28ucHVzaCh7aWQ6YS5pZCx2YWx1ZTpsfSksdGhpcy5zZXRTdGF0ZVdpdGhEYXRhKHtyZXNpemVkOm99LChmdW5jdGlvbigpe3QmJnQobyxlKX0pKX19LHtrZXk6InJlc2l6ZUNvbHVtbkVuZCIsdmFsdWU6ZnVuY3Rpb24oZSl7ZS5zdG9wUHJvcGFnYXRpb24oKTt2YXIgdD0idG91Y2hlbmQiPT09ZS50eXBlfHwidG91Y2hjYW5jZWwiPT09ZS50eXBlO3QmJihkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLHRoaXMucmVzaXplQ29sdW1uTW92aW5nKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0b3VjaGNhbmNlbCIsdGhpcy5yZXNpemVDb2x1bW5FbmQpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIix0aGlzLnJlc2l6ZUNvbHVtbkVuZCkpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsdGhpcy5yZXNpemVDb2x1bW5Nb3ZpbmcpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLHRoaXMucmVzaXplQ29sdW1uRW5kKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZWxlYXZlIix0aGlzLnJlc2l6ZUNvbHVtbkVuZCksdHx8dGhpcy5zZXRTdGF0ZVdpdGhEYXRhKHtza2lwTmV4dFNvcnQ6ITAsY3VycmVudGx5UmVzaXppbmc6ITF9KX19XSksdH0oZSl9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgcj1hcmd1bWVudHNbdF07Zm9yKHZhciBuIGluIHIpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHIsbikmJihlW25dPXJbbl0pfXJldHVybiBlfSxhPXMocigxKSksbz1zKHIoNCkpLGk9cyhyKDUpKSxsPXMocigxMSkpO2Z1bmN0aW9uIHMoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIHUoZSx0KXt2YXIgcj17fTtmb3IodmFyIG4gaW4gZSl0LmluZGV4T2Yobik+PTB8fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pJiYocltuXT1lW25dKTtyZXR1cm4gcn12YXIgYz1mdW5jdGlvbigpe3JldHVybnt9fTt0LmRlZmF1bHQ9e2RhdGE6W10sbG9hZGluZzohMSxzaG93UGFnaW5hdGlvbjohMCxzaG93UGFnaW5hdGlvblRvcDohMSxzaG93UGFnaW5hdGlvbkJvdHRvbTohMCxzaG93UGFnZVNpemVPcHRpb25zOiEwLHBhZ2VTaXplT3B0aW9uczpbNSwxMCwyMCwyNSw1MCwxMDBdLGRlZmF1bHRQYWdlU2l6ZToyMCxzaG93UGFnZUp1bXA6ITAsY29sbGFwc2VPblNvcnRpbmdDaGFuZ2U6ITAsY29sbGFwc2VPblBhZ2VDaGFuZ2U6ITAsY29sbGFwc2VPbkRhdGFDaGFuZ2U6ITAsZnJlZXplV2hlbkV4cGFuZGVkOiExLHNvcnRhYmxlOiEwLHJlc2l6YWJsZTohMCxmaWx0ZXJhYmxlOiExLGRlZmF1bHRTb3J0RGVzYzohMSxkZWZhdWx0U29ydGVkOltdLGRlZmF1bHRGaWx0ZXJlZDpbXSxkZWZhdWx0UmVzaXplZDpbXSxkZWZhdWx0RXhwYW5kZWQ6e30sZGVmYXVsdEZpbHRlck1ldGhvZDpmdW5jdGlvbihlLHQscil7dmFyIG49ZS5waXZvdElkfHxlLmlkO3JldHVybiB2b2lkIDA9PT10W25dfHxTdHJpbmcodFtuXSkuc3RhcnRzV2l0aChlLnZhbHVlKX0sZGVmYXVsdFNvcnRNZXRob2Q6ZnVuY3Rpb24oZSx0LHIpe3JldHVybiB0PW51bGw9PXQ\/IiI6dCwoZT0ic3RyaW5nIj09dHlwZW9mKGU9bnVsbD09ZT8iIjplKT9lLnRvTG93ZXJDYXNlKCk6ZSk+KHQ9InN0cmluZyI9PXR5cGVvZiB0P3QudG9Mb3dlckNhc2UoKTp0KT8xOmU8dD8tMTowfSxvblBhZ2VDaGFuZ2U6dm9pZCAwLG9uUGFnZVNpemVDaGFuZ2U6dm9pZCAwLG9uU29ydGVkQ2hhbmdlOnZvaWQgMCxvbkZpbHRlcmVkQ2hhbmdlOnZvaWQgMCxvblJlc2l6ZWRDaGFuZ2U6dm9pZCAwLG9uRXhwYW5kZWRDaGFuZ2U6dm9pZCAwLHBpdm90Qnk6dm9pZCAwLHBpdm90VmFsS2V5OiJfcGl2b3RWYWwiLHBpdm90SURLZXk6Il9waXZvdElEIixzdWJSb3dzS2V5OiJfc3ViUm93cyIsYWdncmVnYXRlZEtleToiX2FnZ3JlZ2F0ZWQiLG5lc3RpbmdMZXZlbEtleToiX25lc3RpbmdMZXZlbCIsb3JpZ2luYWxLZXk6Il9vcmlnaW5hbCIsaW5kZXhLZXk6Il9pbmRleCIsZ3JvdXBlZEJ5UGl2b3RLZXk6Il9ncm91cGVkQnlQaXZvdCIsb25GZXRjaERhdGE6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH0sY2xhc3NOYW1lOiIiLHN0eWxlOnt9LGdldFByb3BzOmMsZ2V0VGFibGVQcm9wczpjLGdldFRoZWFkR3JvdXBQcm9wczpjLGdldFRoZWFkR3JvdXBUclByb3BzOmMsZ2V0VGhlYWRHcm91cFRoUHJvcHM6YyxnZXRUaGVhZFByb3BzOmMsZ2V0VGhlYWRUclByb3BzOmMsZ2V0VGhlYWRUaFByb3BzOmMsZ2V0VGhlYWRGaWx0ZXJQcm9wczpjLGdldFRoZWFkRmlsdGVyVHJQcm9wczpjLGdldFRoZWFkRmlsdGVyVGhQcm9wczpjLGdldFRib2R5UHJvcHM6YyxnZXRUckdyb3VwUHJvcHM6YyxnZXRUclByb3BzOmMsZ2V0VGRQcm9wczpjLGdldFRmb290UHJvcHM6YyxnZXRUZm9vdFRyUHJvcHM6YyxnZXRUZm9vdFRkUHJvcHM6YyxnZXRQYWdpbmF0aW9uUHJvcHM6YyxnZXRMb2FkaW5nUHJvcHM6YyxnZXROb0RhdGFQcm9wczpjLGdldFJlc2l6ZXJQcm9wczpjLGNvbHVtbjp7Q2VsbDp2b2lkIDAsSGVhZGVyOnZvaWQgMCxGb290ZXI6dm9pZCAwLEFnZ3JlZ2F0ZWQ6dm9pZCAwLFBpdm90OnZvaWQgMCxQaXZvdFZhbHVlOnZvaWQgMCxFeHBhbmRlcjp2b2lkIDAsRmlsdGVyOnZvaWQgMCxzb3J0YWJsZTp2b2lkIDAscmVzaXphYmxlOnZvaWQgMCxmaWx0ZXJhYmxlOnZvaWQgMCxzaG93OiEwLG1pbldpZHRoOjEwMCxjbGFzc05hbWU6IiIsc3R5bGU6e30sZ2V0UHJvcHM6YyxhZ2dyZWdhdGU6dm9pZCAwLGhlYWRlckNsYXNzTmFtZToiIixoZWFkZXJTdHlsZTp7fSxnZXRIZWFkZXJQcm9wczpjLGZvb3RlckNsYXNzTmFtZToiIixmb290ZXJTdHlsZTp7fSxnZXRGb290ZXJQcm9wczpjLGZpbHRlck1ldGhvZDp2b2lkIDAsZmlsdGVyQWxsOiExLHNvcnRNZXRob2Q6dm9pZCAwfSxleHBhbmRlckRlZmF1bHRzOntzb3J0YWJsZTohMSxyZXNpemFibGU6ITEsZmlsdGVyYWJsZTohMSx3aWR0aDozNX0scGl2b3REZWZhdWx0czp7fSxwcmV2aW91c1RleHQ6IlByZXZpb3VzIixuZXh0VGV4dDoiTmV4dCIsbG9hZGluZ1RleHQ6IkxvYWRpbmcuLi4iLG5vRGF0YVRleHQ6Ik5vIHJvd3MgZm91bmQiLHBhZ2VUZXh0OiJQYWdlIixvZlRleHQ6Im9mIixyb3dzVGV4dDoicm93cyIsVGFibGVDb21wb25lbnQ6aS5kZWZhdWx0Lm1ha2VUZW1wbGF0ZUNvbXBvbmVudCgicnQtdGFibGUiLCJUYWJsZSIpLFRoZWFkQ29tcG9uZW50OmkuZGVmYXVsdC5tYWtlVGVtcGxhdGVDb21wb25lbnQoInJ0LXRoZWFkIiwiVGhlYWQiKSxUYm9keUNvbXBvbmVudDppLmRlZmF1bHQubWFrZVRlbXBsYXRlQ29tcG9uZW50KCJydC10Ym9keSIsIlRib2R5IiksVHJHcm91cENvbXBvbmVudDppLmRlZmF1bHQubWFrZVRlbXBsYXRlQ29tcG9uZW50KCJydC10ci1ncm91cCIsIlRyR3JvdXAiKSxUckNvbXBvbmVudDppLmRlZmF1bHQubWFrZVRlbXBsYXRlQ29tcG9uZW50KCJydC10ciIsIlRyIiksVGhDb21wb25lbnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50b2dnbGVTb3J0LHI9ZS5jbGFzc05hbWUsaT1lLmNoaWxkcmVuLGw9dShlLFsidG9nZ2xlU29ydCIsImNsYXNzTmFtZSIsImNoaWxkcmVuIl0pO3JldHVybiBhLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgiZGl2IixuKHtjbGFzc05hbWU6KDAsby5kZWZhdWx0KShyLCJydC10aCIpLG9uQ2xpY2s6dD9mdW5jdGlvbihlKXtyZXR1cm4gdChlKX06dm9pZCAwfSxsKSxpKX0sVGRDb21wb25lbnQ6aS5kZWZhdWx0Lm1ha2VUZW1wbGF0ZUNvbXBvbmVudCgicnQtdGQiLCJUZCIpLFRmb290Q29tcG9uZW50OmkuZGVmYXVsdC5tYWtlVGVtcGxhdGVDb21wb25lbnQoInJ0LXRmb290IiwiVGZvb3QiKSxGaWx0ZXJDb21wb25lbnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5maWx0ZXIscj1lLm9uQ2hhbmdlO3JldHVybiBhLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgiaW5wdXQiLHt0eXBlOiJ0ZXh0IixzdHlsZTp7d2lkdGg6IjEwMCUifSx2YWx1ZTp0P3QudmFsdWU6IiIsb25DaGFuZ2U6ZnVuY3Rpb24oZSl7cmV0dXJuIHIoZS50YXJnZXQudmFsdWUpfX0pfSxFeHBhbmRlckNvbXBvbmVudDpmdW5jdGlvbihlKXt2YXIgdD1lLmlzRXhwYW5kZWQ7cmV0dXJuIGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6KDAsby5kZWZhdWx0KSgicnQtZXhwYW5kZXIiLHQmJiItb3BlbiIpfSwi4oCiIil9LFBpdm90VmFsdWVDb21wb25lbnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zdWJSb3dzLHI9ZS52YWx1ZTtyZXR1cm4gYS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoInNwYW4iLG51bGwsciwiICIsdCYmIigiK3QubGVuZ3RoKyIpIil9LEFnZ3JlZ2F0ZWRDb21wb25lbnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zdWJSb3dzLHI9ZS5jb2x1bW4sbj10LmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PWVbci5pZF19KSkubWFwKChmdW5jdGlvbihlLG4pe3JldHVybiBhLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgic3BhbiIse2tleTpufSxlW3IuaWRdLG48dC5sZW5ndGgtMT8iLCAiOiIiKX0pKTtyZXR1cm4gYS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoInNwYW4iLG51bGwsbil9LFBpdm90Q29tcG9uZW50OnZvaWQgMCxQYWdpbmF0aW9uQ29tcG9uZW50OmwuZGVmYXVsdCxQcmV2aW91c0NvbXBvbmVudDp2b2lkIDAsTmV4dENvbXBvbmVudDp2b2lkIDAsTG9hZGluZ0NvbXBvbmVudDpmdW5jdGlvbihlKXt2YXIgdD1lLmNsYXNzTmFtZSxyPWUubG9hZGluZyxpPWUubG9hZGluZ1RleHQsbD11KGUsWyJjbGFzc05hbWUiLCJsb2FkaW5nIiwibG9hZGluZ1RleHQiXSk7cmV0dXJuIGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLG4oe2NsYXNzTmFtZTooMCxvLmRlZmF1bHQpKCItbG9hZGluZyIseyItYWN0aXZlIjpyfSx0KX0sbCksYS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiLWxvYWRpbmctaW5uZXIifSxpKSl9LE5vRGF0YUNvbXBvbmVudDppLmRlZmF1bHQubWFrZVRlbXBsYXRlQ29tcG9uZW50KCJydC1ub0RhdGEiLCJOb0RhdGEiKSxSZXNpemVyQ29tcG9uZW50OmkuZGVmYXVsdC5tYWtlVGVtcGxhdGVDb21wb25lbnQoInJ0LXJlc2l6ZXIiLCJSZXNpemVyIiksUGFkUm93Q29tcG9uZW50OmZ1bmN0aW9uKCl7cmV0dXJuIGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJzcGFuIixudWxsLCLCoCIpfX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBuPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj10W3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbi5rZXksbil9fXJldHVybiBmdW5jdGlvbih0LHIsbil7cmV0dXJuIHImJmUodC5wcm90b3R5cGUsciksbiYmZSh0LG4pLHR9fSgpLGE9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIHI9YXJndW1lbnRzW3RdO2Zvcih2YXIgbiBpbiByKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyLG4pJiYoZVtuXT1yW25dKX1yZXR1cm4gZX0sbz1yKDEpLGk9cyhvKSxsPXMocig0KSk7ZnVuY3Rpb24gcyhlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19dmFyIHU9ZnVuY3Rpb24oZSl7cmV0dXJuIGkuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJidXR0b24iLGEoe3R5cGU6ImJ1dHRvbiJ9LGUse2NsYXNzTmFtZToiLWJ0biJ9KSxlLmNoaWxkcmVuKX0sYz1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpeyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLHQpO3ZhciByPWZ1bmN0aW9uKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9KHRoaXMsKHQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmNhbGwodGhpcykpO3JldHVybiByLmdldFNhZmVQYWdlPXIuZ2V0U2FmZVBhZ2UuYmluZChyKSxyLmNoYW5nZVBhZ2U9ci5jaGFuZ2VQYWdlLmJpbmQociksci5hcHBseVBhZ2U9ci5hcHBseVBhZ2UuYmluZChyKSxyLnN0YXRlPXtwYWdlOmUucGFnZX0scn1yZXR1cm4gZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiK3R5cGVvZiB0KTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfSh0LGUpLG4odCxbe2tleToiVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMiLHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuc2V0U3RhdGUoe3BhZ2U6ZS5wYWdlfSl9fSx7a2V5OiJnZXRTYWZlUGFnZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGlzTmFOKGUpJiYoZT10aGlzLnByb3BzLnBhZ2UpLE1hdGgubWluKE1hdGgubWF4KGUsMCksdGhpcy5wcm9wcy5wYWdlcy0xKX19LHtrZXk6ImNoYW5nZVBhZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe2U9dGhpcy5nZXRTYWZlUGFnZShlKSx0aGlzLnNldFN0YXRlKHtwYWdlOmV9KSx0aGlzLnByb3BzLnBhZ2UhPT1lJiZ0aGlzLnByb3BzLm9uUGFnZUNoYW5nZShlKX19LHtrZXk6ImFwcGx5UGFnZSIsdmFsdWU6ZnVuY3Rpb24oZSl7ZSYmZS5wcmV2ZW50RGVmYXVsdCgpO3ZhciB0PXRoaXMuc3RhdGUucGFnZTt0aGlzLmNoYW5nZVBhZ2UoIiI9PT10P3RoaXMucHJvcHMucGFnZTp0KX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy5wcm9wcyxyPXQucGFnZXMsbj10LnBhZ2UsYT10LnNob3dQYWdlU2l6ZU9wdGlvbnMsbz10LnBhZ2VTaXplT3B0aW9ucyxzPXQucGFnZVNpemUsYz10LnNob3dQYWdlSnVtcCxmPXQuY2FuUHJldmlvdXMsZD10LmNhbk5leHQscD10Lm9uUGFnZVNpemVDaGFuZ2UsZz10LmNsYXNzTmFtZSxoPXQuUHJldmlvdXNDb21wb25lbnQsbT12b2lkIDA9PT1oP3U6aCxiPXQuTmV4dENvbXBvbmVudCx5PXZvaWQgMD09PWI\/dTpiO3JldHVybiBpLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOigwLGwuZGVmYXVsdCkoZywiLXBhZ2luYXRpb24iKSxzdHlsZTp0aGlzLnByb3BzLnBhZ2luYXRpb25TdHlsZX0saS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiLXByZXZpb3VzIn0saS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQobSx7b25DbGljazpmdW5jdGlvbih0KXtmJiZlLmNoYW5nZVBhZ2Uobi0xKX0sZGlzYWJsZWQ6IWZ9LHRoaXMucHJvcHMucHJldmlvdXNUZXh0KSksaS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToiLWNlbnRlciJ9LGkuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJzcGFuIix7Y2xhc3NOYW1lOiItcGFnZUluZm8ifSx0aGlzLnByb3BzLnBhZ2VUZXh0LCIgIixjP2kuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6Ii1wYWdlSnVtcCJ9LGkuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJpbnB1dCIse3R5cGU6IiI9PT10aGlzLnN0YXRlLnBhZ2U\/InRleHQiOiJudW1iZXIiLG9uQ2hhbmdlOmZ1bmN0aW9uKHQpe3ZhciByPXQudGFyZ2V0LnZhbHVlLG49ci0xO2lmKCIiPT09cilyZXR1cm4gZS5zZXRTdGF0ZSh7cGFnZTpyfSk7ZS5zZXRTdGF0ZSh7cGFnZTplLmdldFNhZmVQYWdlKG4pfSl9LHZhbHVlOiIiPT09dGhpcy5zdGF0ZS5wYWdlPyIiOnRoaXMuc3RhdGUucGFnZSsxLG9uQmx1cjp0aGlzLmFwcGx5UGFnZSxvbktleVByZXNzOmZ1bmN0aW9uKHQpezEzIT09dC53aGljaCYmMTMhPT10LmtleUNvZGV8fGUuYXBwbHlQYWdlKCl9fSkpOmkuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJzcGFuIix7Y2xhc3NOYW1lOiItY3VycmVudFBhZ2UifSxuKzEpLCIgIix0aGlzLnByb3BzLm9mVGV4dCwiICIsaS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoInNwYW4iLHtjbGFzc05hbWU6Ii10b3RhbFBhZ2VzIn0scnx8MSkpLGEmJmkuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJzcGFuIix7Y2xhc3NOYW1lOiJzZWxlY3Qtd3JhcCAtcGFnZVNpemVPcHRpb25zIn0saS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIse29uQ2hhbmdlOmZ1bmN0aW9uKGUpe3JldHVybiBwKE51bWJlcihlLnRhcmdldC52YWx1ZSkpfSx2YWx1ZTpzfSxvLm1hcCgoZnVuY3Rpb24odCxyKXtyZXR1cm4gaS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIse2tleTpyLHZhbHVlOnR9LHQsIiAiLGUucHJvcHMucm93c1RleHQpfSkpKSkpLGkuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6Ii1uZXh0In0saS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoeSx7b25DbGljazpmdW5jdGlvbih0KXtkJiZlLmNoYW5nZVBhZ2UobisxKX0sZGlzYWJsZWQ6IWR9LHRoaXMucHJvcHMubmV4dFRleHQpKSl9fV0pLHR9KG8uQ29tcG9uZW50KTt0LmRlZmF1bHQ9Y30sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG4sYT1yKDApLG89KG49YSkmJm4uX19lc01vZHVsZT9uOntkZWZhdWx0Om59O3QuZGVmYXVsdD17ZGF0YTpvLmRlZmF1bHQuYXJyYXksbG9hZGluZzpvLmRlZmF1bHQuYm9vbCxzaG93UGFnaW5hdGlvbjpvLmRlZmF1bHQuYm9vbCxzaG93UGFnaW5hdGlvblRvcDpvLmRlZmF1bHQuYm9vbCxzaG93UGFnaW5hdGlvbkJvdHRvbTpvLmRlZmF1bHQuYm9vbCxzaG93UGFnZVNpemVPcHRpb25zOm8uZGVmYXVsdC5ib29sLHBhZ2VTaXplT3B0aW9uczpvLmRlZmF1bHQuYXJyYXksZGVmYXVsdFBhZ2VTaXplOm8uZGVmYXVsdC5udW1iZXIsc2hvd1BhZ2VKdW1wOm8uZGVmYXVsdC5ib29sLGNvbGxhcHNlT25Tb3J0aW5nQ2hhbmdlOm8uZGVmYXVsdC5ib29sLGNvbGxhcHNlT25QYWdlQ2hhbmdlOm8uZGVmYXVsdC5ib29sLGNvbGxhcHNlT25EYXRhQ2hhbmdlOm8uZGVmYXVsdC5ib29sLGZyZWV6ZVdoZW5FeHBhbmRlZDpvLmRlZmF1bHQuYm9vbCxzb3J0YWJsZTpvLmRlZmF1bHQuYm9vbCxyZXNpemFibGU6by5kZWZhdWx0LmJvb2wsZmlsdGVyYWJsZTpvLmRlZmF1bHQuYm9vbCxkZWZhdWx0U29ydERlc2M6by5kZWZhdWx0LmJvb2wsZGVmYXVsdFNvcnRlZDpvLmRlZmF1bHQuYXJyYXksZGVmYXVsdEZpbHRlcmVkOm8uZGVmYXVsdC5hcnJheSxkZWZhdWx0UmVzaXplZDpvLmRlZmF1bHQuYXJyYXksZGVmYXVsdEV4cGFuZGVkOm8uZGVmYXVsdC5vYmplY3QsZGVmYXVsdEZpbHRlck1ldGhvZDpvLmRlZmF1bHQuZnVuYyxkZWZhdWx0U29ydE1ldGhvZDpvLmRlZmF1bHQuZnVuYyxvblBhZ2VDaGFuZ2U6by5kZWZhdWx0LmZ1bmMsb25QYWdlU2l6ZUNoYW5nZTpvLmRlZmF1bHQuZnVuYyxvblNvcnRlZENoYW5nZTpvLmRlZmF1bHQuZnVuYyxvbkZpbHRlcmVkQ2hhbmdlOm8uZGVmYXVsdC5mdW5jLG9uUmVzaXplZENoYW5nZTpvLmRlZmF1bHQuZnVuYyxvbkV4cGFuZGVkQ2hhbmdlOm8uZGVmYXVsdC5mdW5jLHBpdm90Qnk6by5kZWZhdWx0LmFycmF5LHBpdm90VmFsS2V5Om8uZGVmYXVsdC5zdHJpbmcscGl2b3RJREtleTpvLmRlZmF1bHQuc3RyaW5nLHN1YlJvd3NLZXk6by5kZWZhdWx0LnN0cmluZyxhZ2dyZWdhdGVkS2V5Om8uZGVmYXVsdC5zdHJpbmcsbmVzdGluZ0xldmVsS2V5Om8uZGVmYXVsdC5zdHJpbmcsb3JpZ2luYWxLZXk6by5kZWZhdWx0LnN0cmluZyxpbmRleEtleTpvLmRlZmF1bHQuc3RyaW5nLGdyb3VwZWRCeVBpdm90S2V5Om8uZGVmYXVsdC5zdHJpbmcsb25GZXRjaERhdGE6by5kZWZhdWx0LmZ1bmMsY2xhc3NOYW1lOm8uZGVmYXVsdC5zdHJpbmcsc3R5bGU6by5kZWZhdWx0Lm9iamVjdCxnZXRQcm9wczpvLmRlZmF1bHQub2JqZWN0LGdldFRhYmxlUHJvcHM6by5kZWZhdWx0Lm9iamVjdCxnZXRUaGVhZEdyb3VwUHJvcHM6by5kZWZhdWx0Lm9iamVjdCxnZXRUaGVhZEdyb3VwVHJQcm9wczpvLmRlZmF1bHQub2JqZWN0LGdldFRoZWFkR3JvdXBUaFByb3BzOm8uZGVmYXVsdC5vYmplY3QsZ2V0VGhlYWRQcm9wczpvLmRlZmF1bHQub2JqZWN0LGdldFRoZWFkVHJQcm9wczpvLmRlZmF1bHQub2JqZWN0LGdldFRoZWFkVGhQcm9wczpvLmRlZmF1bHQub2JqZWN0LGdldFRoZWFkRmlsdGVyUHJvcHM6by5kZWZhdWx0Lm9iamVjdCxnZXRUaGVhZEZpbHRlclRyUHJvcHM6by5kZWZhdWx0Lm9iamVjdCxnZXRUaGVhZEZpbHRlclRoUHJvcHM6by5kZWZhdWx0Lm9iamVjdCxnZXRUYm9keVByb3BzOm8uZGVmYXVsdC5vYmplY3QsZ2V0VHJHcm91cFByb3BzOm8uZGVmYXVsdC5vYmplY3QsZ2V0VHJQcm9wczpvLmRlZmF1bHQub2JqZWN0LGdldFRkUHJvcHM6by5kZWZhdWx0Lm9iamVjdCxnZXRUZm9vdFByb3BzOm8uZGVmYXVsdC5vYmplY3QsZ2V0VGZvb3RUclByb3BzOm8uZGVmYXVsdC5vYmplY3QsZ2V0VGZvb3RUZFByb3BzOm8uZGVmYXVsdC5vYmplY3QsZ2V0UGFnaW5hdGlvblByb3BzOm8uZGVmYXVsdC5vYmplY3QsZ2V0TG9hZGluZ1Byb3BzOm8uZGVmYXVsdC5vYmplY3QsZ2V0Tm9EYXRhUHJvcHM6by5kZWZhdWx0Lm9iamVjdCxnZXRSZXNpemVyUHJvcHM6by5kZWZhdWx0Lm9iamVjdCxjb2x1bW5zOm8uZGVmYXVsdC5zaGFwZSh7Q2VsbDpvLmRlZmF1bHQub25lT2ZUeXBlKFtvLmRlZmF1bHQuZWxlbWVudCxvLmRlZmF1bHQuc3RyaW5nLG8uZGVmYXVsdC5mdW5jXSksSGVhZGVyOm8uZGVmYXVsdC5vbmVPZlR5cGUoW28uZGVmYXVsdC5lbGVtZW50LG8uZGVmYXVsdC5zdHJpbmcsby5kZWZhdWx0LmZ1bmNdKSxGb290ZXI6by5kZWZhdWx0Lm9uZU9mVHlwZShbby5kZWZhdWx0LmVsZW1lbnQsby5kZWZhdWx0LnN0cmluZyxvLmRlZmF1bHQuZnVuY10pLEFnZ3JlZ2F0ZWQ6by5kZWZhdWx0Lm9uZU9mVHlwZShbby5kZWZhdWx0LmVsZW1lbnQsby5kZWZhdWx0LnN0cmluZyxvLmRlZmF1bHQuZnVuY10pLFBpdm90Om8uZGVmYXVsdC5vbmVPZlR5cGUoW28uZGVmYXVsdC5lbGVtZW50LG8uZGVmYXVsdC5zdHJpbmcsby5kZWZhdWx0LmZ1bmNdKSxQaXZvdFZhbHVlOm8uZGVmYXVsdC5vbmVPZlR5cGUoW28uZGVmYXVsdC5lbGVtZW50LG8uZGVmYXVsdC5zdHJpbmcsby5kZWZhdWx0LmZ1bmNdKSxFeHBhbmRlcjpvLmRlZmF1bHQub25lT2ZUeXBlKFtvLmRlZmF1bHQuZWxlbWVudCxvLmRlZmF1bHQuc3RyaW5nLG8uZGVmYXVsdC5mdW5jXSksRmlsdGVyOm8uZGVmYXVsdC5vbmVPZlR5cGUoW28uZGVmYXVsdC5lbGVtZW50LG8uZGVmYXVsdC5mdW5jXSksc29ydGFibGU6by5kZWZhdWx0LmJvb2wscmVzaXphYmxlOm8uZGVmYXVsdC5ib29sLGZpbHRlcmFibGU6by5kZWZhdWx0LmJvb2wsc2hvdzpvLmRlZmF1bHQuYm9vbCxtaW5XaWR0aDpvLmRlZmF1bHQubnVtYmVyLGNsYXNzTmFtZTpvLmRlZmF1bHQuc3RyaW5nLHN0eWxlOm8uZGVmYXVsdC5vYmplY3QsZ2V0UHJvcHM6by5kZWZhdWx0Lm9iamVjdCxhZ2dyZWdhdGU6by5kZWZhdWx0LmZ1bmMsaGVhZGVyQ2xhc3NOYW1lOm8uZGVmYXVsdC5zdHJpbmcsaGVhZGVyU3R5bGU6by5kZWZhdWx0Lm9iamVjdCxnZXRIZWFkZXJQcm9wczpvLmRlZmF1bHQub2JqZWN0LGZvb3RlckNsYXNzTmFtZTpvLmRlZmF1bHQuc3RyaW5nLGZvb3RlclN0eWxlOm8uZGVmYXVsdC5vYmplY3QsZ2V0Rm9vdGVyUHJvcHM6by5kZWZhdWx0Lm9iamVjdCxmaWx0ZXJNZXRob2Q6by5kZWZhdWx0LmZ1bmMsZmlsdGVyQWxsOm8uZGVmYXVsdC5ib29sLHNvcnRNZXRob2Q6by5kZWZhdWx0LmZ1bmN9KSxleHBhbmRlckRlZmF1bHRzOm8uZGVmYXVsdC5zaGFwZSh7c29ydGFibGU6by5kZWZhdWx0LmJvb2wscmVzaXphYmxlOm8uZGVmYXVsdC5ib29sLGZpbHRlcmFibGU6by5kZWZhdWx0LmJvb2wsd2lkdGg6by5kZWZhdWx0Lm51bWJlcn0pLHBpdm90RGVmYXVsdHM6by5kZWZhdWx0Lm9iamVjdCxwcmV2aW91c1RleHQ6by5kZWZhdWx0LnN0cmluZyxuZXh0VGV4dDpvLmRlZmF1bHQuc3RyaW5nLGxvYWRpbmdUZXh0Om8uZGVmYXVsdC5zdHJpbmcsbm9EYXRhVGV4dDpvLmRlZmF1bHQuc3RyaW5nLHBhZ2VUZXh0Om8uZGVmYXVsdC5zdHJpbmcsb2ZUZXh0Om8uZGVmYXVsdC5zdHJpbmcscm93c1RleHQ6by5kZWZhdWx0LnN0cmluZyxUYWJsZUNvbXBvbmVudDpvLmRlZmF1bHQuZWxlbWVudCxUaGVhZENvbXBvbmVudDpvLmRlZmF1bHQuZWxlbWVudCxUYm9keUNvbXBvbmVudDpvLmRlZmF1bHQuZWxlbWVudCxUckdyb3VwQ29tcG9uZW50Om8uZGVmYXVsdC5lbGVtZW50LFRyQ29tcG9uZW50Om8uZGVmYXVsdC5lbGVtZW50LFRoQ29tcG9uZW50Om8uZGVmYXVsdC5lbGVtZW50LFRkQ29tcG9uZW50Om8uZGVmYXVsdC5lbGVtZW50LFRmb290Q29tcG9uZW50Om8uZGVmYXVsdC5lbGVtZW50LEZpbHRlckNvbXBvbmVudDpvLmRlZmF1bHQuZWxlbWVudCxFeHBhbmRlckNvbXBvbmVudDpvLmRlZmF1bHQuZWxlbWVudCxQaXZvdFZhbHVlQ29tcG9uZW50Om8uZGVmYXVsdC5lbGVtZW50LEFnZ3JlZ2F0ZWRDb21wb25lbnQ6by5kZWZhdWx0LmVsZW1lbnQsUGl2b3RDb21wb25lbnQ6by5kZWZhdWx0LmVsZW1lbnQsUGFnaW5hdGlvbkNvbXBvbmVudDpvLmRlZmF1bHQuZWxlbWVudCxQcmV2aW91c0NvbXBvbmVudDpvLmRlZmF1bHQuZWxlbWVudCxOZXh0Q29tcG9uZW50Om8uZGVmYXVsdC5lbGVtZW50LExvYWRpbmdDb21wb25lbnQ6by5kZWZhdWx0LmVsZW1lbnQsTm9EYXRhQ29tcG9uZW50Om8uZGVmYXVsdC5lbGVtZW50LFJlc2l6ZXJDb21wb25lbnQ6by5kZWZhdWx0LmVsZW1lbnQsUGFkUm93Q29tcG9uZW50Om8uZGVmYXVsdC5lbGVtZW50fX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDE0KTtmdW5jdGlvbiBhKCl7fWZ1bmN0aW9uIG8oKXt9by5yZXNldFdhcm5pbmdDYWNoZT1hLGUuZXhwb3J0cz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0LHIsYSxvLGkpe2lmKGkhPT1uKXt2YXIgbD1uZXcgRXJyb3IoIkNhbGxpbmcgUHJvcFR5cGVzIHZhbGlkYXRvcnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UuIFVzZSBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKSB0byBjYWxsIHRoZW0uIFJlYWQgbW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNoZWNrLXByb3AtdHlwZXMiKTt0aHJvdyBsLm5hbWU9IkludmFyaWFudCBWaW9sYXRpb24iLGx9fWZ1bmN0aW9uIHQoKXtyZXR1cm4gZX1lLmlzUmVxdWlyZWQ9ZTt2YXIgcj17YXJyYXk6ZSxib29sOmUsZnVuYzplLG51bWJlcjplLG9iamVjdDplLHN0cmluZzplLHN5bWJvbDplLGFueTplLGFycmF5T2Y6dCxlbGVtZW50OmUsZWxlbWVudFR5cGU6ZSxpbnN0YW5jZU9mOnQsbm9kZTplLG9iamVjdE9mOnQsb25lT2Y6dCxvbmVPZlR5cGU6dCxzaGFwZTp0LGV4YWN0OnQsY2hlY2tQcm9wVHlwZXM6byxyZXNldFdhcm5pbmdDYWNoZTphfTtyZXR1cm4gci5Qcm9wVHlwZXM9cixyfX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9IlNFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEIn0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTYpOyJzdHJpbmciPT10eXBlb2YgbiYmKG49W1tlLmksbiwiIl1dKTt2YXIgYT17aG1yOiEwLHRyYW5zZm9ybTp2b2lkIDAsaW5zZXJ0SW50bzp2b2lkIDB9O3IoNykobixhKTtuLmxvY2FscyYmKGUuZXhwb3J0cz1uLmxvY2Fscyl9LGZ1bmN0aW9uKGUsdCxyKXsoZS5leHBvcnRzPXIoNikoITEpKS5wdXNoKFtlLmksIi5SZWFjdFRhYmxle3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtb3JpZW50OnZlcnRpY2FsOy13ZWJraXQtYm94LWRpcmVjdGlvbjpub3JtYWw7LW1zLWZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmbGV4LWRpcmVjdGlvbjpjb2x1bW59LlJlYWN0VGFibGUgKnstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDtib3gtc2l6aW5nOmJvcmRlci1ib3h9LlJlYWN0VGFibGUgLnJ0LXRhYmxley13ZWJraXQtYm94LWZsZXg6MTstbXMtZmxleDphdXRvIDE7ZmxleDphdXRvIDE7ZmxleC1kaXJlY3Rpb246Y29sdW1uOy13ZWJraXQtYm94LWFsaWduOnN0cmV0Y2g7LW1zLWZsZXgtYWxpZ246c3RyZXRjaDthbGlnbi1pdGVtczpzdHJldGNoO3dpZHRoOjEwMCU7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlO292ZXJmbG93OmF1dG99LlJlYWN0VGFibGUgLnJ0LXRhYmxlLC5SZWFjdFRhYmxlIC5ydC10aGVhZHtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDstd2Via2l0LWJveC1kaXJlY3Rpb246bm9ybWFsOy1tcy1mbGV4LWRpcmVjdGlvbjpjb2x1bW59LlJlYWN0VGFibGUgLnJ0LXRoZWFke2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uUmVhY3RUYWJsZSAucnQtdGhlYWQgLnJ0LXRye3RleHQtYWxpZ246Y2VudGVyfS5SZWFjdFRhYmxlIC5ydC10aGVhZCAucnQtdGQsLlJlYWN0VGFibGUgLnJ0LXRoZWFkIC5ydC10aHtsaW5lLWhlaWdodDpub3JtYWw7cG9zaXRpb246cmVsYXRpdmV9LlJlYWN0VGFibGUgLnJ0LXRoZWFkIC5ydC10ZC4tY3Vyc29yLXBvaW50ZXIsLlJlYWN0VGFibGUgLnJ0LXRoZWFkIC5ydC10aC4tY3Vyc29yLXBvaW50ZXJ7Y3Vyc29yOnBvaW50ZXJ9LlJlYWN0VGFibGUgLnJ0LXRoZWFkIC5ydC1yZXNpemFibGUtaGVhZGVye292ZXJmbG93OnZpc2libGV9LlJlYWN0VGFibGUgLnJ0LXRoZWFkIC5ydC1yZXNpemFibGUtaGVhZGVyOmxhc3QtY2hpbGR7b3ZlcmZsb3c6aGlkZGVufS5SZWFjdFRhYmxlIC5ydC10aGVhZCAucnQtcmVzaXphYmxlLWhlYWRlci1jb250ZW50e292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS5SZWFjdFRhYmxlIC5ydC10Ym9keXtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDstd2Via2l0LWJveC1kaXJlY3Rpb246bm9ybWFsOy1tcy1mbGV4LWRpcmVjdGlvbjpjb2x1bW47ZmxleC1kaXJlY3Rpb246Y29sdW1uO292ZXJmbG93OmF1dG99LlJlYWN0VGFibGUgLnJ0LXRib2R5IC5ydC1leHBhbmRhYmxle2N1cnNvcjpwb2ludGVyfS5SZWFjdFRhYmxlIC5ydC10ci1ncm91cHstd2Via2l0LWJveC1mbGV4OjE7LW1zLWZsZXg6MSAwIGF1dG87ZmxleDoxIDAgYXV0bztkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDstd2Via2l0LWJveC1kaXJlY3Rpb246bm9ybWFsOy1tcy1mbGV4LWRpcmVjdGlvbjpjb2x1bW47ZmxleC1kaXJlY3Rpb246Y29sdW1uOy13ZWJraXQtYm94LWFsaWduOnN0cmV0Y2g7LW1zLWZsZXgtYWxpZ246c3RyZXRjaDthbGlnbi1pdGVtczpzdHJldGNofS5SZWFjdFRhYmxlIC5ydC10cnstd2Via2l0LWJveC1mbGV4OjE7LW1zLWZsZXg6MSAwIGF1dG87ZmxleDoxIDAgYXV0bztkaXNwbGF5Oi13ZWJraXQtaW5saW5lLWJveDtkaXNwbGF5Oi1tcy1pbmxpbmUtZmxleGJveDtkaXNwbGF5OmlubGluZS1mbGV4fS5SZWFjdFRhYmxlIC5ydC10ZCwuUmVhY3RUYWJsZSAucnQtdGh7LXdlYmtpdC1ib3gtZmxleDoxOy1tcy1mbGV4OjEgMCAwcHg7ZmxleDoxIDAgMDtvdmVyZmxvdzpoaWRkZW59LlJlYWN0VGFibGUgLnJ0LXRkLi1oaWRkZW4sLlJlYWN0VGFibGUgLnJ0LXRoLi1oaWRkZW57d2lkdGg6MCFpbXBvcnRhbnQ7bWluLXdpZHRoOjAhaW1wb3J0YW50O3BhZGRpbmc6MCFpbXBvcnRhbnQ7Ym9yZGVyOjAhaW1wb3J0YW50O29wYWNpdHk6MCFpbXBvcnRhbnR9LlJlYWN0VGFibGUgLnJ0LXJlc2l6ZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MzZweDt0b3A6MDtib3R0b206MDtyaWdodDotMThweDtjdXJzb3I6Y29sLXJlc2l6ZTt6LWluZGV4OjEwfS5SZWFjdFRhYmxlIC5ydC10Zm9vdHtkaXNwbGF5Oi13ZWJraXQtYm94O2Rpc3BsYXk6LW1zLWZsZXhib3g7ZGlzcGxheTpmbGV4Oy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDstd2Via2l0LWJveC1kaXJlY3Rpb246bm9ybWFsOy1tcy1mbGV4LWRpcmVjdGlvbjpjb2x1bW47ZmxleC1kaXJlY3Rpb246Y29sdW1ufS5SZWFjdFRhYmxlIC4tbG9hZGluZ3tkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6MDtyaWdodDowO3RvcDowO2JvdHRvbTowO2JhY2tncm91bmQ6aHNsYSgwLDAlLDEwMCUsLjgpOy13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjNzIGVhc2U7dHJhbnNpdGlvbjphbGwgLjNzIGVhc2U7ei1pbmRleDotMTtvcGFjaXR5OjA7cG9pbnRlci1ldmVudHM6bm9uZX0uUmVhY3RUYWJsZSAuLWxvYWRpbmc+ZGl2e3Bvc2l0aW9uOmFic29sdXRlO2Rpc3BsYXk6YmxvY2s7dGV4dC1hbGlnbjpjZW50ZXI7d2lkdGg6MTAwJTt0b3A6NTAlO2xlZnQ6MDtmb250LXNpemU6MTVweDtjb2xvcjpyZ2JhKDAsMCwwLC42KTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVZKC01MiUpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MiUpOy13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjNzIGN1YmljLWJlemllciguMjUsLjQ2LC40NSwuOTQpO3RyYW5zaXRpb246YWxsIC4zcyBjdWJpYy1iZXppZXIoLjI1LC40NiwuNDUsLjk0KX0uUmVhY3RUYWJsZSAuLWxvYWRpbmcuLWFjdGl2ZXtvcGFjaXR5OjE7ei1pbmRleDoyO3BvaW50ZXItZXZlbnRzOmFsbH0uUmVhY3RUYWJsZSAuLWxvYWRpbmcuLWFjdGl2ZT5kaXZ7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWSg1MCUpO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDUwJSl9LlJlYWN0VGFibGUgLnJ0LXJlc2l6aW5nIC5ydC10ZCwuUmVhY3RUYWJsZSAucnQtcmVzaXppbmcgLnJ0LXRoey13ZWJraXQtdHJhbnNpdGlvbjpub25lIWltcG9ydGFudDt0cmFuc2l0aW9uOm5vbmUhaW1wb3J0YW50O2N1cnNvcjpjb2wtcmVzaXplOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZX0iLCIiXSl9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cubG9jYXRpb247aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJmaXhVcmxzIHJlcXVpcmVzIHdpbmRvdy5sb2NhdGlvbiIpO2lmKCFlfHwic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuIGU7dmFyIHI9dC5wcm90b2NvbCsiLy8iK3QuaG9zdCxuPXIrdC5wYXRobmFtZS5yZXBsYWNlKC9cL1teXC9dKiQvLCIvIik7cmV0dXJuIGUucmVwbGFjZSgvdXJsXHMqXCgoKD86W14pKF18XCgoPzpbXikoXSt8XChbXikoXSpcKSkqXCkpKilcKS9naSwoZnVuY3Rpb24oZSx0KXt2YXIgYSxvPXQudHJpbSgpLnJlcGxhY2UoL14iKC4qKSIkLywoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdH0pKS5yZXBsYWNlKC9eJyguKiknJC8sKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR9KSk7cmV0dXJuL14oI3xkYXRhOnxodHRwOlwvXC98aHR0cHM6XC9cL3xmaWxlOlwvXC9cL3xccyokKS9pLnRlc3Qobyk\/ZTooYT0wPT09by5pbmRleE9mKCIvLyIpP286MD09PW8uaW5kZXhPZigiLyIpP3IrbzpuK28ucmVwbGFjZSgvXlwuXC8vLCIiKSwidXJsKCIrSlNPTi5zdHJpbmdpZnkoYSkrIikiKX0pKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5KTsic3RyaW5nIj09dHlwZW9mIG4mJihuPVtbZS5pLG4sIiJdXSk7dmFyIGE9e2htcjohMCx0cmFuc2Zvcm06dm9pZCAwLGluc2VydEludG86dm9pZCAwfTtyKDcpKG4sYSk7bi5sb2NhbHMmJihlLmV4cG9ydHM9bi5sb2NhbHMpfSxmdW5jdGlvbihlLHQscil7KGUuZXhwb3J0cz1yKDYpKCExKSkucHVzaChbZS5pLCcuUmVhY3RUYWJsZXtoZWlnaHQ6MTAwJTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9LnJ0LWlubGluZXtkaXNwbGF5Oi13ZWJraXQtaW5saW5lLWJveDtkaXNwbGF5Oi1tcy1pbmxpbmUtZmxleGJveDtkaXNwbGF5OmlubGluZS1mbGV4fS5ydC10aHtmb250LXdlaWdodDo2MDB9LnJ0LXRkLC5ydC10aHtwYWRkaW5nOjdweCA4cHg7b3ZlcmZsb3ctd3JhcDpicmVhay13b3JkO21heC13aWR0aDoxMDAlO3dvcmQtd3JhcDpicmVhay13b3JkfS5ydC1jb21wYWN0IC5ydC10ZCwucnQtY29tcGFjdCAucnQtdGh7cGFkZGluZzo0cHggNnB4fS5ydC1ub3dyYXAgLnJ0LXRkLC5ydC1ub3dyYXAgLnJ0LXRoe3doaXRlLXNwYWNlOm5vd3JhcDt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS5ydC10aC1jb250ZW50e292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzfS5ydC10ZC1zZWxlY3R7LXdlYmtpdC1ib3gtYWxpZ246YmFzZWxpbmU7LW1zLWZsZXgtYWxpZ246YmFzZWxpbmU7YWxpZ24taXRlbXM6YmFzZWxpbmU7LXdlYmtpdC1ib3gtcGFjazpjZW50ZXI7LW1zLWZsZXgtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn0ucnQtc2VsZWN0LC5ydC10ZC1zZWxlY3R7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleH0ucnQtc2VsZWN0ey13ZWJraXQtYm94LWFsaWduOmNlbnRlcjstbXMtZmxleC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyfWlucHV0W3R5cGU9Y2hlY2tib3hdLnJ0LXNlbGVjdC1pbnB1dCxpbnB1dFt0eXBlPXJhZGlvXS5ydC1zZWxlY3QtaW5wdXR7ZGlzcGxheTpibG9jazttYXJnaW46MH0ucnQtYWxpZ24tbGVmdHt0ZXh0LWFsaWduOmxlZnR9LnJ0LWFsaWduLXJpZ2h0e3RleHQtYWxpZ246cmlnaHR9LnJ0LWFsaWduLWNlbnRlcnt0ZXh0LWFsaWduOmNlbnRlcn0ucnQtdGFibGV7Ym9yZGVyLXdpZHRoOjFweDtib3JkZXItY29sb3I6I2U2ZTZlNn0ucnQtYm9yZGVyZWQgLnJ0LXRhYmxlLC5ydC1vdXRsaW5lZCAucnQtdGFibGV7Ym9yZGVyLXN0eWxlOnNvbGlkfS5ydC10aHtib3JkZXItYm90dG9tOjJweCBzb2xpZCAjZTZlNmU2O2JvcmRlci1sZWZ0LXdpZHRoOjFweDtib3JkZXItbGVmdC1jb2xvcjpyZ2JhKDAsMCwwLC4wNSl9LnJ0LWJvcmRlcmVkIC5ydC10aCwucnQtb3V0bGluZWQgLnJ0LXRoe2JvcmRlci1ib3R0b20td2lkdGg6MXB4fS5ydC10ZHtib3JkZXItdG9wOjFweCBzb2xpZCAjZjJmMmYyO2JvcmRlci1sZWZ0LXdpZHRoOjFweDtib3JkZXItbGVmdC1jb2xvcjpyZ2JhKDAsMCwwLC4wNSl9LnJ0LWJvcmRlcmxlc3MgLnJ0LXRkLC5ydC10ci1ncm91cDpmaXJzdC1jaGlsZD4ucnQtdHI6Zmlyc3QtY2hpbGQgLnJ0LXRke2JvcmRlci10b3A6bm9uZX0ucnQtYm9yZGVyZWQgLnJ0LXRkLC5ydC1ib3JkZXJlZCAucnQtdGh7Ym9yZGVyLWxlZnQtc3R5bGU6c29saWR9LnJ0LWJvcmRlcmVkIC5ydC10ZDpmaXJzdC1jaGlsZCwucnQtYm9yZGVyZWQgLnJ0LXRoOmZpcnN0LWNoaWxke2JvcmRlci1sZWZ0Om5vbmV9LnJ0LXRoLWdyb3VwLC5ydC10aC1ncm91cC1ub25le2JvcmRlci1ib3R0b20tc3R5bGU6bm9uZX0ucnQtdGgtZ3JvdXA6YWZ0ZXJ7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTttYXJnaW46YXV0bztsZWZ0OjhweDtyaWdodDo4cHg7Ym90dG9tOjA7d2lkdGg6MTAwJTtoZWlnaHQ6MXB4O2JhY2tncm91bmQtY29sb3I6I2U2ZTZlNn0ucnQtYm9yZGVyZWQgLnJ0LXRoLWdyb3VwOmFmdGVyLC5ydC1vdXRsaW5lZCAucnQtdGgtZ3JvdXA6YWZ0ZXJ7bGVmdDowO3JpZ2h0OjB9LnJ0LWJvcmRlcmVkIC5ydC10aC1ncm91cC1ub25le2JvcmRlci1ib3R0b20tc3R5bGU6c29saWR9LnJ0LXRyLXN0cmlwZWR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wMyl9LnJ0LXRyLWhpZ2hsaWdodDpob3ZlciwucnQtdHItc3RyaXBlZC5ydC10ci1oaWdobGlnaHQ6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC4wNSl9LnJ0LXRyLi1wYWRSb3d7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lfS5SZWFjdFRhYmxlIC5ydC10Ym9keSwuUmVhY3RUYWJsZSAucnQtdGZvb3QsLlJlYWN0VGFibGUgLnJ0LXRoZWFkLi1oZWFkZXJ7LW1zLWZsZXgtbmVnYXRpdmU6MDtmbGV4LXNocmluazowfUBzdXBwb3J0cyAoKHBvc2l0aW9uOi13ZWJraXQtc3RpY2t5KSBvciAocG9zaXRpb246c3RpY2t5KSl7LlJlYWN0VGFibGUgLnJ0LXRhYmxle2JhY2tncm91bmQ6aW5oZXJpdH0uUmVhY3RUYWJsZSAucnQtdGJvZHl7b3ZlcmZsb3c6dmlzaWJsZX0uUmVhY3RUYWJsZSAucnQtdGhlYWQuLWhlYWRlcnt0b3A6MH0uUmVhY3RUYWJsZSAucnQtdGZvb3QsLlJlYWN0VGFibGUgLnJ0LXRoZWFkLi1oZWFkZXJ7cG9zaXRpb246LXdlYmtpdC1zdGlja3k7cG9zaXRpb246c3RpY2t5O2JhY2tncm91bmQ6aW5oZXJpdDt6LWluZGV4OjJ9LlJlYWN0VGFibGUgLnJ0LXRmb290e2JvdHRvbTowfX1AbWVkaWEgc2NyZWVuIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6YWN0aXZlKSxzY3JlZW4gYW5kICgtbXMtaGlnaC1jb250cmFzdDpub25lKXsuUmVhY3RUYWJsZSAucnQtdGJvZHl7b3ZlcmZsb3c6YXV0bzstbXMtb3ZlcmZsb3ctc3R5bGU6LW1zLWF1dG9oaWRpbmctc2Nyb2xsYmFyfX0ucnQtdGQtZmlsdGVye2JvcmRlci10b3A6MDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZjJmMmYyfS5ydC1ib3JkZXJsZXNzIC5ydC10ZC1maWx0ZXJ7Ym9yZGVyLWJvdHRvbTowfS5ydC1maWx0ZXJ7cGFkZGluZzo1cHggN3B4O2NvbG9yOmluaGVyaXQ7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgcmdiYSgwLDAsMCwuMSk7Ym9yZGVyLXJhZGl1czozcHg7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdDtmb250LXdlaWdodDo0MDA7b3V0bGluZS13aWR0aDowO291dGxpbmUtc3R5bGU6c29saWR9LnJ0LWZpbHRlcjpmb2N1c3tib3JkZXI6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjI1KX0ucnQtc29ydC1oZWFkZXJ7ZGlzcGxheTotd2Via2l0LWJveDtkaXNwbGF5Oi1tcy1mbGV4Ym94O2Rpc3BsYXk6ZmxleH0ucnQtYWxpZ24tY2VudGVyIC5ydC1zb3J0LWhlYWRlcnstd2Via2l0LWJveC1wYWNrOmNlbnRlcjstbXMtZmxleC1wYWNrOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5ydC1hbGlnbi1yaWdodCAucnQtc29ydC1oZWFkZXJ7LXdlYmtpdC1ib3gtcGFjazplbmQ7LW1zLWZsZXgtcGFjazplbmQ7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5ydC10aHtvdXRsaW5lLXdpZHRoOjA7b3V0bGluZS1zdHlsZTpzb2xpZH0ucnQtdGhbYXJpYS1zb3J0XSAucnQtc29ydC1sZWZ0OmFmdGVye3BhZGRpbmctcmlnaHQ6NXB4O2xpbmUtaGVpZ2h0OjB9LnJ0LXRoW2FyaWEtc29ydF0gLnJ0LXNvcnQtcmlnaHQ6YWZ0ZXJ7cGFkZGluZy1sZWZ0OjVweDtsaW5lLWhlaWdodDowfS5ydC10aFthcmlhLXNvcnQ9YXNjZW5kaW5nXSAucnQtc29ydC1sZWZ0OmFmdGVyLC5ydC10aFthcmlhLXNvcnQ9YXNjZW5kaW5nXSAucnQtc29ydC1yaWdodDphZnRlcntjb250ZW50OiJcXDIxOTEifS5ydC10aFthcmlhLXNvcnQ9ZGVzY2VuZGluZ10gLnJ0LXNvcnQtbGVmdDphZnRlciwucnQtdGhbYXJpYS1zb3J0PWRlc2NlbmRpbmddIC5ydC1zb3J0LXJpZ2h0OmFmdGVye2NvbnRlbnQ6IlxcMjE5MyJ9LnJ0LXRoW2FyaWEtc29ydD1ub25lXSAucnQtc29ydDphZnRlcntjb250ZW50OiJcXDIxOTUiO29wYWNpdHk6LjR9LnJ0LXRoW2RhdGEtc29ydC1oaW50PWFzY2VuZGluZ10gLnJ0LXNvcnQtbGVmdDphZnRlciwucnQtdGhbZGF0YS1zb3J0LWhpbnQ9YXNjZW5kaW5nXSAucnQtc29ydC1yaWdodDphZnRlcntjb250ZW50OiJcXDIxOTEiO29wYWNpdHk6LjR9LnJ0LXRoW2RhdGEtc29ydC1oaW50PWRlc2NlbmRpbmddIC5ydC1zb3J0LWxlZnQ6YWZ0ZXIsLnJ0LXRoW2RhdGEtc29ydC1oaW50PWRlc2NlbmRpbmddIC5ydC1zb3J0LXJpZ2h0OmFmdGVye2NvbnRlbnQ6IlxcMjE5MyI7b3BhY2l0eTouNH0ucnQtZXhwYW5kZXItYnV0dG9ue21hcmdpbjowIDJweDtwYWRkaW5nOjA7YmFja2dyb3VuZDpub25lO2JvcmRlcjpub25lO2N1cnNvcjpwb2ludGVyfS5ydC1leHBhbmRlcntkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTtwYWRkaW5nOjAgOHB4O2NvbG9yOnRyYW5zcGFyZW50O291dGxpbmUtd2lkdGg6MDtvdXRsaW5lLXN0eWxlOnNvbGlkfS5ydC1leHBhbmRlcjphZnRlcntjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjA7aGVpZ2h0OjA7dG9wOjUwJTtsZWZ0OjUwJTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKSByb3RhdGUoLTkwZGVnKTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSkgcm90YXRlKC05MGRlZyk7Ym9yZGVyLWxlZnQ6NS4wNHB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yaWdodDo1LjA0cHggc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLXRvcDo3cHggc29saWQgcmdiYSgwLDAsMCwuOCk7LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuM3MgY3ViaWMtYmV6aWVyKC4xNzUsLjg4NSwuMzIsMS4yNzUpO3RyYW5zaXRpb246YWxsIC4zcyBjdWJpYy1iZXppZXIoLjE3NSwuODg1LC4zMiwxLjI3NSk7Y3Vyc29yOnBvaW50ZXJ9LnJ0LWV4cGFuZGVyLi1vcGVuOmFmdGVyey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZSgtNTAlLC01MCUpIHJvdGF0ZSgwKTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSkgcm90YXRlKDApfS5ydC1wYWdpbmF0aW9ue2Rpc3BsYXk6LXdlYmtpdC1ib3g7ZGlzcGxheTotbXMtZmxleGJveDtkaXNwbGF5OmZsZXg7LXdlYmtpdC1ib3gtcGFjazpqdXN0aWZ5Oy1tcy1mbGV4LXBhY2s6anVzdGlmeTtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbjstd2Via2l0LWJveC1hbGlnbjpiYXNlbGluZTstbXMtZmxleC1hbGlnbjpiYXNlbGluZTthbGlnbi1pdGVtczpiYXNlbGluZTstbXMtZmxleC13cmFwOndyYXA7ZmxleC13cmFwOndyYXA7cGFkZGluZzo2cHggNHB4O2JvcmRlci10b3A6MXB4IHNvbGlkICNmMmYyZjJ9LnJ0LWJvcmRlcmVkIC5ydC1wYWdpbmF0aW9uLC5ydC1vdXRsaW5lZCAucnQtcGFnaW5hdGlvbntib3JkZXItdG9wOm5vbmV9LnJ0LXBhZ2luYXRpb24taW5mbyA6bm90KDpsYXN0LWNoaWxkKXttYXJnaW4tcmlnaHQ6MTZweH0ucnQtcGFnZS1pbmZve2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbjo2cHggOHB4O29wYWNpdHk6Ljl9LnJ0LXBhZ2Utc2l6ZXtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW46MCA4cHh9LnJ0LXBhZ2Utc2l6ZS1zZWxlY3R7bWFyZ2luOjAgMnB4fS5ydC1wYWdlLWJ1dHRvbiwucnQtcGFnZS1qdW1wLC5ydC1wYWdlLXNpemUtc2VsZWN0e2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOmluaGVyaXQ7Y29sb3I6aW5oZXJpdDtsaW5lLWhlaWdodDppbmhlcml0fS5ydC1wYWdlLWp1bXAsLnJ0LXBhZ2Utc2l6ZS1zZWxlY3R7YmFja2dyb3VuZC1jb2xvcjojZmZmO3BhZGRpbmc6M3B4O2JvcmRlci1yYWRpdXM6M3B4O2JvcmRlcjoxcHggc29saWQgcmdiYSgwLDAsMCwuMDUpfUBzdXBwb3J0cyAoLW1vei1hcHBlYXJhbmNlOm5vbmUpey5ydC1wYWdlLXNpemUtc2VsZWN0ey1tb3otYXBwZWFyYW5jZTpub25lO3BhZGRpbmctcmlnaHQ6MTJweDtiYWNrZ3JvdW5kLWltYWdlOnVybChcJ2RhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PVVTLUFTQ0lJLDxzdmcgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGZpbGw9IiUyMzMzMyIgZD0iTTI0IDEuNWwtMTIgMjEtMTItMjFoMjR6Ii8+PC9zdmc+XCcpO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5kLXBvc2l0aW9uOnJpZ2h0IDZweCBjZW50ZXI7YmFja2dyb3VuZC1zaXplOjZweH19LnJ0LXBhZ2UtYnV0dG9ue3BhZGRpbmc6NnB4IDEycHg7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXI6bm9uZTtib3JkZXItcmFkaXVzOjNweDtvdXRsaW5lLXdpZHRoOjA7b3V0bGluZS1zdHlsZTpzb2xpZDtjdXJzb3I6cG9pbnRlcn0ucnQtcGFnZS1idXR0b246Oi1tb3otZm9jdXMtaW5uZXJ7cGFkZGluZzowO2JvcmRlci1zdHlsZTpub25lfS5ydC1wYWdlLWJ1dHRvbjpkaXNhYmxlZHtvcGFjaXR5Oi42O2N1cnNvcjpkZWZhdWx0fS5ydC1wYWdlLWJ1dHRvbjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjA0KX0ucnQtcGFnZS1idXR0b246YWN0aXZle2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDgpfS5ydC1rZXlib2FyZC1hY3RpdmUgLnJ0LXBhZ2UtYnV0dG9uOmZvY3Vze2JhY2tncm91bmQtY29sb3I6cmdiYSgwLDAsMCwuMDQpfS5ydC1wYWdlLWJ1dHRvbjpkaXNhYmxlZDpmb2N1cywucnQtcGFnZS1idXR0b246ZGlzYWJsZWQ6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudH0ucnQtcGFnZS1idXR0b24tY3VycmVudHtmb250LXdlaWdodDo3MDB9LnJ0LXBhZ2UtZWxsaXBzaXN7bWFyZ2luOjAgNHB4O3BvaW50ZXItZXZlbnRzOm5vbmV9LnJ0LXBhZ2UtbnVtYmVyc3tkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW46MCA4cHg7d2hpdGUtc3BhY2U6bm93cmFwfS5ydC1wYWdlLWp1bXB7d2lkdGg6NzBweDt0ZXh0LWFsaWduOmNlbnRlcn0ucnQtdGJvZHktbm9EYXRhe3Bvc2l0aW9uOnJlbGF0aXZlfS5ydC10Ym9keS1ub0RhdGEgLnJ0LXRke2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudH0ucnQtbm9EYXRhe2Rpc3BsYXk6YmxvY2s7cG9zaXRpb246YWJzb2x1dGU7bGVmdDo1MCU7dG9wOjUwJTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSk7bGluZS1oZWlnaHQ6MDt6LWluZGV4OjF9LnJ0LXNlYXJjaHtkaXNwbGF5OmJsb2NrOy1tcy1mbGV4LWl0ZW0tYWxpZ246ZW5kO2FsaWduLXNlbGY6ZmxleC1lbmQ7bWFyZ2luLWJvdHRvbTo4cHg7cGFkZGluZzo1cHggN3B4O2NvbG9yOmluaGVyaXQ7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgcmdiYSgwLDAsMCwuMSk7Ym9yZGVyLXJhZGl1czozcHg7b3V0bGluZS13aWR0aDowO291dGxpbmUtc3R5bGU6c29saWQ7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6aW5oZXJpdH0ucnQtc2VhcmNoOmFjdGl2ZSwucnQtc2VhcmNoOmZvY3Vze2JvcmRlcjoxcHggc29saWQgcmdiYSgwLDAsMCwuMjUpfScsIiJdKX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtyLnIodCk7dmFyIG49cigzKSxhPXIoMSksbz1yLm4oYSksaT1yKDIpLGw9ci5uKGkpLHM9cigwKSx1PXIubihzKTtmdW5jdGlvbiBjKGUsdCl7dmFyIHI9T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG49T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYobj1uLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxyLnB1c2guYXBwbHkocixuKX1yZXR1cm4gcn1mdW5jdGlvbiBmKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciByPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP2MoT2JqZWN0KHIpLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtkKGUsdCxyW3RdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHIpKTpjKE9iamVjdChyKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIsdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIGQoZSx0LHIpe3JldHVybiB0IGluIGU\/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6cixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09cixlfXZhciBwPWYoZih7fSxsLmEucHJvcFR5cGVzKSx7fSx7ZGF0YTp1LmEuYW55LGxvYWRpbmc6dS5hLmJvb2wsc2hvd1BhZ2luYXRpb246dS5hLmJvb2wsc2hvd1BhZ2luYXRpb25Ub3A6dS5hLmJvb2wsc2hvd1BhZ2luYXRpb25Cb3R0b206dS5hLmJvb2wsc2hvd1BhZ2VTaXplT3B0aW9uczp1LmEuYm9vbCxwYWdlU2l6ZU9wdGlvbnM6dS5hLmFycmF5LGRlZmF1bHRQYWdlU2l6ZTp1LmEubnVtYmVyLHNob3dQYWdlSnVtcDp1LmEuYm9vbCxjb2xsYXBzZU9uU29ydGluZ0NoYW5nZTp1LmEuYm9vbCxjb2xsYXBzZU9uUGFnZUNoYW5nZTp1LmEuYm9vbCxjb2xsYXBzZU9uRGF0YUNoYW5nZTp1LmEuYm9vbCxmcmVlemVXaGVuRXhwYW5kZWQ6dS5hLmJvb2wsc29ydGFibGU6dS5hLmJvb2wscmVzaXphYmxlOnUuYS5ib29sLGZpbHRlcmFibGU6dS5hLmJvb2wsZGVmYXVsdFNvcnREZXNjOnUuYS5ib29sLGRlZmF1bHRTb3J0ZWQ6dS5hLmFycmF5LGRlZmF1bHRGaWx0ZXJlZDp1LmEuYXJyYXksZGVmYXVsdFJlc2l6ZWQ6dS5hLmFycmF5LGRlZmF1bHRFeHBhbmRlZDp1LmEub2JqZWN0LGRlZmF1bHRGaWx0ZXJNZXRob2Q6dS5hLmZ1bmMsZGVmYXVsdFNvcnRNZXRob2Q6dS5hLmZ1bmMsb25QYWdlQ2hhbmdlOnUuYS5mdW5jLG9uUGFnZVNpemVDaGFuZ2U6dS5hLmZ1bmMsb25Tb3J0ZWRDaGFuZ2U6dS5hLmZ1bmMsb25GaWx0ZXJlZENoYW5nZTp1LmEuZnVuYyxvblJlc2l6ZWRDaGFuZ2U6dS5hLmZ1bmMsb25FeHBhbmRlZENoYW5nZTp1LmEuZnVuYyxwaXZvdEJ5OnUuYS5hcnJheSxwaXZvdFZhbEtleTp1LmEuc3RyaW5nLHBpdm90SURLZXk6dS5hLnN0cmluZyxzdWJSb3dzS2V5OnUuYS5zdHJpbmcsYWdncmVnYXRlZEtleTp1LmEuc3RyaW5nLG5lc3RpbmdMZXZlbEtleTp1LmEuc3RyaW5nLG9yaWdpbmFsS2V5OnUuYS5zdHJpbmcsaW5kZXhLZXk6dS5hLnN0cmluZyxncm91cGVkQnlQaXZvdEtleTp1LmEuc3RyaW5nLG9uRmV0Y2hEYXRhOnUuYS5mdW5jLGNsYXNzTmFtZTp1LmEuc3RyaW5nLHN0eWxlOnUuYS5vYmplY3QsZ2V0UHJvcHM6dS5hLmZ1bmMsZ2V0VGFibGVQcm9wczp1LmEuZnVuYyxnZXRUaGVhZEdyb3VwUHJvcHM6dS5hLmZ1bmMsZ2V0VGhlYWRHcm91cFRyUHJvcHM6dS5hLmZ1bmMsZ2V0VGhlYWRHcm91cFRoUHJvcHM6dS5hLmZ1bmMsZ2V0VGhlYWRQcm9wczp1LmEuZnVuYyxnZXRUaGVhZFRyUHJvcHM6dS5hLmZ1bmMsZ2V0VGhlYWRUaFByb3BzOnUuYS5mdW5jLGdldFRoZWFkRmlsdGVyUHJvcHM6dS5hLmZ1bmMsZ2V0VGhlYWRGaWx0ZXJUclByb3BzOnUuYS5mdW5jLGdldFRoZWFkRmlsdGVyVGhQcm9wczp1LmEuZnVuYyxnZXRUYm9keVByb3BzOnUuYS5mdW5jLGdldFRyR3JvdXBQcm9wczp1LmEuZnVuYyxnZXRUclByb3BzOnUuYS5mdW5jLGdldFRkUHJvcHM6dS5hLmZ1bmMsZ2V0VGZvb3RQcm9wczp1LmEuZnVuYyxnZXRUZm9vdFRyUHJvcHM6dS5hLmZ1bmMsZ2V0VGZvb3RUZFByb3BzOnUuYS5mdW5jLGdldFBhZ2luYXRpb25Qcm9wczp1LmEuZnVuYyxnZXRMb2FkaW5nUHJvcHM6dS5hLmZ1bmMsZ2V0Tm9EYXRhUHJvcHM6dS5hLmZ1bmMsZ2V0UmVzaXplclByb3BzOnUuYS5mdW5jLGNvbHVtbnM6dS5hLmFycmF5T2YodS5hLnNoYXBlKHtDZWxsOnUuYS5vbmVPZlR5cGUoW3UuYS5lbGVtZW50LHUuYS5zdHJpbmcsdS5hLmZ1bmNdKSxIZWFkZXI6dS5hLm9uZU9mVHlwZShbdS5hLmVsZW1lbnQsdS5hLnN0cmluZyx1LmEuZnVuY10pLEZvb3Rlcjp1LmEub25lT2ZUeXBlKFt1LmEuZWxlbWVudCx1LmEuc3RyaW5nLHUuYS5mdW5jXSksQWdncmVnYXRlZDp1LmEub25lT2ZUeXBlKFt1LmEuZWxlbWVudCx1LmEuc3RyaW5nLHUuYS5mdW5jXSksUGl2b3Q6dS5hLm9uZU9mVHlwZShbdS5hLmVsZW1lbnQsdS5hLnN0cmluZyx1LmEuZnVuY10pLFBpdm90VmFsdWU6dS5hLm9uZU9mVHlwZShbdS5hLmVsZW1lbnQsdS5hLnN0cmluZyx1LmEuZnVuY10pLEV4cGFuZGVyOnUuYS5vbmVPZlR5cGUoW3UuYS5lbGVtZW50LHUuYS5zdHJpbmcsdS5hLmZ1bmNdKSxGaWx0ZXI6dS5hLm9uZU9mVHlwZShbdS5hLmVsZW1lbnQsdS5hLmZ1bmNdKSxzb3J0YWJsZTp1LmEuYm9vbCxyZXNpemFibGU6dS5hLmJvb2wsZmlsdGVyYWJsZTp1LmEuYm9vbCxzaG93OnUuYS5ib29sLG1pbldpZHRoOnUuYS5udW1iZXIsbWluUmVzaXplV2lkdGg6dS5hLm51bWJlcixjbGFzc05hbWU6dS5hLnN0cmluZyxzdHlsZTp1LmEub2JqZWN0LGdldFByb3BzOnUuYS5mdW5jLGFnZ3JlZ2F0ZTp1LmEuZnVuYyxoZWFkZXJDbGFzc05hbWU6dS5hLnN0cmluZyxoZWFkZXJTdHlsZTp1LmEub2JqZWN0LGdldEhlYWRlclByb3BzOnUuYS5mdW5jLGZvb3RlckNsYXNzTmFtZTp1LmEuc3RyaW5nLGZvb3RlclN0eWxlOnUuYS5vYmplY3QsZ2V0Rm9vdGVyUHJvcHM6dS5hLmZ1bmMsZmlsdGVyTWV0aG9kOnUuYS5mdW5jLGZpbHRlckFsbDp1LmEuYm9vbCxzb3J0TWV0aG9kOnUuYS5mdW5jfSkpLGV4cGFuZGVyRGVmYXVsdHM6dS5hLnNoYXBlKHtzb3J0YWJsZTp1LmEuYm9vbCxyZXNpemFibGU6dS5hLmJvb2wsZmlsdGVyYWJsZTp1LmEuYm9vbCx3aWR0aDp1LmEubnVtYmVyfSkscGl2b3REZWZhdWx0czp1LmEub2JqZWN0LHByZXZpb3VzVGV4dDp1LmEubm9kZSxuZXh0VGV4dDp1LmEubm9kZSxsb2FkaW5nVGV4dDp1LmEubm9kZSxub0RhdGFUZXh0OnUuYS5ub2RlLHBhZ2VUZXh0OnUuYS5ub2RlLG9mVGV4dDp1LmEubm9kZSxyb3dzVGV4dDp1LmEubm9kZSxwYWdlSnVtcFRleHQ6dS5hLm5vZGUscm93c1NlbGVjdG9yVGV4dDp1LmEubm9kZSxUYWJsZUNvbXBvbmVudDp1LmEub25lT2ZUeXBlKFt1LmEuZnVuYyx1LmEuZWxlbWVudF0pLFRoZWFkQ29tcG9uZW50OnUuYS5vbmVPZlR5cGUoW3UuYS5mdW5jLHUuYS5lbGVtZW50XSksVGJvZHlDb21wb25lbnQ6dS5hLm9uZU9mVHlwZShbdS5hLmZ1bmMsdS5hLmVsZW1lbnRdKSxUckdyb3VwQ29tcG9uZW50OnUuYS5vbmVPZlR5cGUoW3UuYS5mdW5jLHUuYS5lbGVtZW50XSksVHJDb21wb25lbnQ6dS5hLm9uZU9mVHlwZShbdS5hLmZ1bmMsdS5hLmVsZW1lbnRdKSxUaENvbXBvbmVudDp1LmEub25lT2ZUeXBlKFt1LmEuZnVuYyx1LmEuZWxlbWVudF0pLFRkQ29tcG9uZW50OnUuYS5vbmVPZlR5cGUoW3UuYS5mdW5jLHUuYS5lbGVtZW50XSksVGZvb3RDb21wb25lbnQ6dS5hLm9uZU9mVHlwZShbdS5hLmZ1bmMsdS5hLmVsZW1lbnRdKSxGaWx0ZXJDb21wb25lbnQ6dS5hLm9uZU9mVHlwZShbdS5hLmZ1bmMsdS5hLmVsZW1lbnRdKSxFeHBhbmRlckNvbXBvbmVudDp1LmEub25lT2ZUeXBlKFt1LmEuZnVuYyx1LmEuZWxlbWVudF0pLFBpdm90VmFsdWVDb21wb25lbnQ6dS5hLm9uZU9mVHlwZShbdS5hLmZ1bmMsdS5hLmVsZW1lbnRdKSxBZ2dyZWdhdGVkQ29tcG9uZW50OnUuYS5vbmVPZlR5cGUoW3UuYS5mdW5jLHUuYS5lbGVtZW50XSksUGl2b3RDb21wb25lbnQ6dS5hLm9uZU9mVHlwZShbdS5hLmZ1bmMsdS5hLmVsZW1lbnRdKSxQYWdpbmF0aW9uQ29tcG9uZW50OnUuYS5vbmVPZlR5cGUoW3UuYS5mdW5jLHUuYS5lbGVtZW50XSksUHJldmlvdXNDb21wb25lbnQ6dS5hLm9uZU9mVHlwZShbdS5hLmZ1bmMsdS5hLmVsZW1lbnRdKSxOZXh0Q29tcG9uZW50OnUuYS5vbmVPZlR5cGUoW3UuYS5mdW5jLHUuYS5lbGVtZW50XSksTG9hZGluZ0NvbXBvbmVudDp1LmEub25lT2ZUeXBlKFt1LmEuZnVuYyx1LmEuZWxlbWVudF0pLE5vRGF0YUNvbXBvbmVudDp1LmEub25lT2ZUeXBlKFt1LmEuZnVuYyx1LmEuZWxlbWVudF0pLFJlc2l6ZXJDb21wb25lbnQ6dS5hLm9uZU9mVHlwZShbdS5hLmZ1bmMsdS5hLmVsZW1lbnRdKSxQYWRSb3dDb21wb25lbnQ6dS5hLm9uZU9mVHlwZShbdS5hLmZ1bmMsdS5hLmVsZW1lbnRdKX0pO3ZhciBnPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt0aGlzLmlzU3BlZWR5PXZvaWQgMD09PWUuc3BlZWR5fHxlLnNwZWVkeSx0aGlzLnRhZ3M9W10sdGhpcy5jdHI9MCx0aGlzLm5vbmNlPWUubm9uY2UsdGhpcy5rZXk9ZS5rZXksdGhpcy5jb250YWluZXI9ZS5jb250YWluZXIsdGhpcy5iZWZvcmU9bnVsbH12YXIgdD1lLnByb3RvdHlwZTtyZXR1cm4gdC5pbnNlcnQ9ZnVuY3Rpb24oZSl7aWYodGhpcy5jdHIlKHRoaXMuaXNTcGVlZHk\/NjVlMzoxKT09MCl7dmFyIHQscj1mdW5jdGlvbihlKXt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO3JldHVybiB0LnNldEF0dHJpYnV0ZSgiZGF0YS1lbW90aW9uIixlLmtleSksdm9pZCAwIT09ZS5ub25jZSYmdC5zZXRBdHRyaWJ1dGUoIm5vbmNlIixlLm5vbmNlKSx0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIiKSksdH0odGhpcyk7dD0wPT09dGhpcy50YWdzLmxlbmd0aD90aGlzLmJlZm9yZTp0aGlzLnRhZ3NbdGhpcy50YWdzLmxlbmd0aC0xXS5uZXh0U2libGluZyx0aGlzLmNvbnRhaW5lci5pbnNlcnRCZWZvcmUocix0KSx0aGlzLnRhZ3MucHVzaChyKX12YXIgbj10aGlzLnRhZ3NbdGhpcy50YWdzLmxlbmd0aC0xXTtpZih0aGlzLmlzU3BlZWR5KXt2YXIgYT1mdW5jdGlvbihlKXtpZihlLnNoZWV0KXJldHVybiBlLnNoZWV0O2Zvcih2YXIgdD0wO3Q8ZG9jdW1lbnQuc3R5bGVTaGVldHMubGVuZ3RoO3QrKylpZihkb2N1bWVudC5zdHlsZVNoZWV0c1t0XS5vd25lck5vZGU9PT1lKXJldHVybiBkb2N1bWVudC5zdHlsZVNoZWV0c1t0XX0obik7dHJ5e3ZhciBvPTEwNT09PWUuY2hhckNvZGVBdCgxKSYmNjQ9PT1lLmNoYXJDb2RlQXQoMCk7YS5pbnNlcnRSdWxlKGUsbz8wOmEuY3NzUnVsZXMubGVuZ3RoKX1jYXRjaChlKXswfX1lbHNlIG4uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZSkpO3RoaXMuY3RyKyt9LHQuZmx1c2g9ZnVuY3Rpb24oKXt0aGlzLnRhZ3MuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKX0pKSx0aGlzLnRhZ3M9W10sdGhpcy5jdHI9MH0sZX0oKTt2YXIgaD1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUsdCxuKXt2YXIgYT10LnRyaW0oKS5zcGxpdChnKTt0PWE7dmFyIG89YS5sZW5ndGgsaT1lLmxlbmd0aDtzd2l0Y2goaSl7Y2FzZSAwOmNhc2UgMTp2YXIgbD0wO2ZvcihlPTA9PT1pPyIiOmVbMF0rIiAiO2w8bzsrK2wpdFtsXT1yKGUsdFtsXSxuKS50cmltKCk7YnJlYWs7ZGVmYXVsdDp2YXIgcz1sPTA7Zm9yKHQ9W107bDxvOysrbClmb3IodmFyIHU9MDt1PGk7Kyt1KXRbcysrXT1yKGVbdV0rIiAiLGFbbF0sbikudHJpbSgpfXJldHVybiB0fWZ1bmN0aW9uIHIoZSx0LHIpe3ZhciBuPXQuY2hhckNvZGVBdCgwKTtzd2l0Y2goMzM+biYmKG49KHQ9dC50cmltKCkpLmNoYXJDb2RlQXQoMCkpLG4pe2Nhc2UgMzg6cmV0dXJuIHQucmVwbGFjZShoLCIkMSIrZS50cmltKCkpO2Nhc2UgNTg6cmV0dXJuIGUudHJpbSgpK3QucmVwbGFjZShoLCIkMSIrZS50cmltKCkpO2RlZmF1bHQ6aWYoMDwxKnImJjA8dC5pbmRleE9mKCJcZiIpKXJldHVybiB0LnJlcGxhY2UoaCwoNTg9PT1lLmNoYXJDb2RlQXQoMCk\/IiI6IiQxIikrZS50cmltKCkpfXJldHVybiBlK3R9ZnVuY3Rpb24gbihlLHQscixvKXt2YXIgaT1lKyI7IixsPTIqdCszKnIrNCpvO2lmKDk0ND09PWwpe2U9aS5pbmRleE9mKCI6Iiw5KSsxO3ZhciBzPWkuc3Vic3RyaW5nKGUsaS5sZW5ndGgtMSkudHJpbSgpO3JldHVybiBzPWkuc3Vic3RyaW5nKDAsZSkudHJpbSgpK3MrIjsiLDE9PT1FfHwyPT09RSYmYShzLDEpPyItd2Via2l0LSIrcytzOnN9aWYoMD09PUV8fDI9PT1FJiYhYShpLDEpKXJldHVybiBpO3N3aXRjaChsKXtjYXNlIDEwMTU6cmV0dXJuIDk3PT09aS5jaGFyQ29kZUF0KDEwKT8iLXdlYmtpdC0iK2kraTppO2Nhc2UgOTUxOnJldHVybiAxMTY9PT1pLmNoYXJDb2RlQXQoMyk\/Ii13ZWJraXQtIitpK2k6aTtjYXNlIDk2MzpyZXR1cm4gMTEwPT09aS5jaGFyQ29kZUF0KDUpPyItd2Via2l0LSIraStpOmk7Y2FzZSAxMDA5OmlmKDEwMCE9PWkuY2hhckNvZGVBdCg0KSlicmVhaztjYXNlIDk2OTpjYXNlIDk0MjpyZXR1cm4iLXdlYmtpdC0iK2kraTtjYXNlIDk3ODpyZXR1cm4iLXdlYmtpdC0iK2krIi1tb3otIitpK2k7Y2FzZSAxMDE5OmNhc2UgOTgzOnJldHVybiItd2Via2l0LSIraSsiLW1vei0iK2krIi1tcy0iK2kraTtjYXNlIDg4MzppZig0NT09PWkuY2hhckNvZGVBdCg4KSlyZXR1cm4iLXdlYmtpdC0iK2kraTtpZigwPGkuaW5kZXhPZigiaW1hZ2Utc2V0KCIsMTEpKXJldHVybiBpLnJlcGxhY2UoTywiJDEtd2Via2l0LSQyIikraTticmVhaztjYXNlIDkzMjppZig0NT09PWkuY2hhckNvZGVBdCg0KSlzd2l0Y2goaS5jaGFyQ29kZUF0KDUpKXtjYXNlIDEwMzpyZXR1cm4iLXdlYmtpdC1ib3gtIitpLnJlcGxhY2UoIi1ncm93IiwiIikrIi13ZWJraXQtIitpKyItbXMtIitpLnJlcGxhY2UoImdyb3ciLCJwb3NpdGl2ZSIpK2k7Y2FzZSAxMTU6cmV0dXJuIi13ZWJraXQtIitpKyItbXMtIitpLnJlcGxhY2UoInNocmluayIsIm5lZ2F0aXZlIikraTtjYXNlIDk4OnJldHVybiItd2Via2l0LSIraSsiLW1zLSIraS5yZXBsYWNlKCJiYXNpcyIsInByZWZlcnJlZC1zaXplIikraX1yZXR1cm4iLXdlYmtpdC0iK2krIi1tcy0iK2kraTtjYXNlIDk2NDpyZXR1cm4iLXdlYmtpdC0iK2krIi1tcy1mbGV4LSIraStpO2Nhc2UgMTAyMzppZig5OSE9PWkuY2hhckNvZGVBdCg4KSlicmVhaztyZXR1cm4iLXdlYmtpdC1ib3gtcGFjayIrKHM9aS5zdWJzdHJpbmcoaS5pbmRleE9mKCI6IiwxNSkpLnJlcGxhY2UoImZsZXgtIiwiIikucmVwbGFjZSgic3BhY2UtYmV0d2VlbiIsImp1c3RpZnkiKSkrIi13ZWJraXQtIitpKyItbXMtZmxleC1wYWNrIitzK2k7Y2FzZSAxMDA1OnJldHVybiBkLnRlc3QoaSk\/aS5yZXBsYWNlKGYsIjotd2Via2l0LSIpK2kucmVwbGFjZShmLCI6LW1vei0iKStpOmk7Y2FzZSAxZTM6c3dpdGNoKHQ9KHM9aS5zdWJzdHJpbmcoMTMpLnRyaW0oKSkuaW5kZXhPZigiLSIpKzEscy5jaGFyQ29kZUF0KDApK3MuY2hhckNvZGVBdCh0KSl7Y2FzZSAyMjY6cz1pLnJlcGxhY2UodiwidGIiKTticmVhaztjYXNlIDIzMjpzPWkucmVwbGFjZSh2LCJ0Yi1ybCIpO2JyZWFrO2Nhc2UgMjIwOnM9aS5yZXBsYWNlKHYsImxyIik7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gaX1yZXR1cm4iLXdlYmtpdC0iK2krIi1tcy0iK3MraTtjYXNlIDEwMTc6aWYoLTE9PT1pLmluZGV4T2YoInN0aWNreSIsOSkpYnJlYWs7Y2FzZSA5NzU6c3dpdGNoKHQ9KGk9ZSkubGVuZ3RoLTEwLGw9KHM9KDMzPT09aS5jaGFyQ29kZUF0KHQpP2kuc3Vic3RyaW5nKDAsdCk6aSkuc3Vic3RyaW5nKGUuaW5kZXhPZigiOiIsNykrMSkudHJpbSgpKS5jaGFyQ29kZUF0KDApKygwfHMuY2hhckNvZGVBdCg3KSkpe2Nhc2UgMjAzOmlmKDExMT5zLmNoYXJDb2RlQXQoOCkpYnJlYWs7Y2FzZSAxMTU6aT1pLnJlcGxhY2UocywiLXdlYmtpdC0iK3MpKyI7IitpO2JyZWFrO2Nhc2UgMjA3OmNhc2UgMTAyOmk9aS5yZXBsYWNlKHMsIi13ZWJraXQtIisoMTAyPGw\/ImlubGluZS0iOiIiKSsiYm94IikrIjsiK2kucmVwbGFjZShzLCItd2Via2l0LSIrcykrIjsiK2kucmVwbGFjZShzLCItbXMtIitzKyJib3giKSsiOyIraX1yZXR1cm4gaSsiOyI7Y2FzZSA5Mzg6aWYoNDU9PT1pLmNoYXJDb2RlQXQoNSkpc3dpdGNoKGkuY2hhckNvZGVBdCg2KSl7Y2FzZSAxMDU6cmV0dXJuIHM9aS5yZXBsYWNlKCItaXRlbXMiLCIiKSwiLXdlYmtpdC0iK2krIi13ZWJraXQtYm94LSIrcysiLW1zLWZsZXgtIitzK2k7Y2FzZSAxMTU6cmV0dXJuIi13ZWJraXQtIitpKyItbXMtZmxleC1pdGVtLSIraS5yZXBsYWNlKFMsIiIpK2k7ZGVmYXVsdDpyZXR1cm4iLXdlYmtpdC0iK2krIi1tcy1mbGV4LWxpbmUtcGFjayIraS5yZXBsYWNlKCJhbGlnbi1jb250ZW50IiwiIikucmVwbGFjZShTLCIiKStpfWJyZWFrO2Nhc2UgOTczOmNhc2UgOTg5OmlmKDQ1IT09aS5jaGFyQ29kZUF0KDMpfHwxMjI9PT1pLmNoYXJDb2RlQXQoNCkpYnJlYWs7Y2FzZSA5MzE6Y2FzZSA5NTM6aWYoITA9PT1DLnRlc3QoZSkpcmV0dXJuIDExNT09PShzPWUuc3Vic3RyaW5nKGUuaW5kZXhPZigiOiIpKzEpKS5jaGFyQ29kZUF0KDApP24oZS5yZXBsYWNlKCJzdHJldGNoIiwiZmlsbC1hdmFpbGFibGUiKSx0LHIsbykucmVwbGFjZSgiOmZpbGwtYXZhaWxhYmxlIiwiOnN0cmV0Y2giKTppLnJlcGxhY2UocywiLXdlYmtpdC0iK3MpK2kucmVwbGFjZShzLCItbW96LSIrcy5yZXBsYWNlKCJmaWxsLSIsIiIpKStpO2JyZWFrO2Nhc2UgOTYyOmlmKGk9Ii13ZWJraXQtIitpKygxMDI9PT1pLmNoYXJDb2RlQXQoNSk\/Ii1tcy0iK2k6IiIpK2ksMjExPT09citvJiYxMDU9PT1pLmNoYXJDb2RlQXQoMTMpJiYwPGkuaW5kZXhPZigidHJhbnNmb3JtIiwxMCkpcmV0dXJuIGkuc3Vic3RyaW5nKDAsaS5pbmRleE9mKCI7IiwyNykrMSkucmVwbGFjZShwLCIkMS13ZWJraXQtJDIiKStpfXJldHVybiBpfWZ1bmN0aW9uIGEoZSx0KXt2YXIgcj1lLmluZGV4T2YoMT09PXQ\/IjoiOiJ7Iiksbj1lLnN1YnN0cmluZygwLDMhPT10P3I6MTApO3JldHVybiByPWUuc3Vic3RyaW5nKHIrMSxlLmxlbmd0aC0xKSxEKDIhPT10P246bi5yZXBsYWNlKFAsIiQxIikscix0KX1mdW5jdGlvbiBvKGUsdCl7dmFyIHI9bih0LHQuY2hhckNvZGVBdCgwKSx0LmNoYXJDb2RlQXQoMSksdC5jaGFyQ29kZUF0KDIpKTtyZXR1cm4gciE9PXQrIjsiP3IucmVwbGFjZSh4LCIgb3IgKCQxKSIpLnN1YnN0cmluZyg0KToiKCIrdCsiKSJ9ZnVuY3Rpb24gaShlLHQscixuLGEsbyxpLGwsdSxjKXtmb3IodmFyIGYsZD0wLHA9dDtkPEE7KytkKXN3aXRjaChmPU5bZF0uY2FsbChzLGUscCxyLG4sYSxvLGksbCx1LGMpKXtjYXNlIHZvaWQgMDpjYXNlITE6Y2FzZSEwOmNhc2UgbnVsbDpicmVhaztkZWZhdWx0OnA9Zn1pZihwIT09dClyZXR1cm4gcH1mdW5jdGlvbiBsKGUpe3JldHVybiB2b2lkIDAhPT0oZT1lLnByZWZpeCkmJihEPW51bGwsZT8iZnVuY3Rpb24iIT10eXBlb2YgZT9FPTE6KEU9MixEPWUpOkU9MCksbH1mdW5jdGlvbiBzKGUscil7dmFyIGw9ZTtpZigzMz5sLmNoYXJDb2RlQXQoMCkmJihsPWwudHJpbSgpKSxsPVtsXSwwPEEpe3ZhciBzPWkoLTEscixsLGwsVCxrLDAsMCwwLDApO3ZvaWQgMCE9PXMmJiJzdHJpbmciPT10eXBlb2YgcyYmKHI9cyl9dmFyIGY9ZnVuY3Rpb24gZShyLGwscyxmLGQpe2Zvcih2YXIgcCxnLGgsdix4LFM9MCxQPTAsQz0wLE89MCxOPTAsRD0wLF89aD1wPTAsRj0wLE09MCxJPTAsTD0wLFc9cy5sZW5ndGgsSz1XLTEsQj0iIixIPSIiLEc9IiIsVT0iIjtGPFc7KXtpZihnPXMuY2hhckNvZGVBdChGKSxGPT09SyYmMCE9PVArTytDK1MmJigwIT09UCYmKGc9NDc9PT1QPzEwOjQ3KSxPPUM9Uz0wLFcrKyxLKyspLDA9PT1QK08rQytTKXtpZihGPT09SyYmKDA8TSYmKEI9Qi5yZXBsYWNlKGMsIiIpKSwwPEIudHJpbSgpLmxlbmd0aCkpe3N3aXRjaChnKXtjYXNlIDMyOmNhc2UgOTpjYXNlIDU5OmNhc2UgMTM6Y2FzZSAxMDpicmVhaztkZWZhdWx0OkIrPXMuY2hhckF0KEYpfWc9NTl9c3dpdGNoKGcpe2Nhc2UgMTIzOmZvcihwPShCPUIudHJpbSgpKS5jaGFyQ29kZUF0KDApLGg9MSxMPSsrRjtGPFc7KXtzd2l0Y2goZz1zLmNoYXJDb2RlQXQoRikpe2Nhc2UgMTIzOmgrKzticmVhaztjYXNlIDEyNTpoLS07YnJlYWs7Y2FzZSA0Nzpzd2l0Y2goZz1zLmNoYXJDb2RlQXQoRisxKSl7Y2FzZSA0MjpjYXNlIDQ3OmU6e2ZvcihfPUYrMTtfPEs7KytfKXN3aXRjaChzLmNoYXJDb2RlQXQoXykpe2Nhc2UgNDc6aWYoNDI9PT1nJiY0Mj09PXMuY2hhckNvZGVBdChfLTEpJiZGKzIhPT1fKXtGPV8rMTticmVhayBlfWJyZWFrO2Nhc2UgMTA6aWYoNDc9PT1nKXtGPV8rMTticmVhayBlfX1GPV99fWJyZWFrO2Nhc2UgOTE6ZysrO2Nhc2UgNDA6ZysrO2Nhc2UgMzQ6Y2FzZSAzOTpmb3IoO0YrKzxLJiZzLmNoYXJDb2RlQXQoRikhPT1nOyk7fWlmKDA9PT1oKWJyZWFrO0YrK31zd2l0Y2goaD1zLnN1YnN0cmluZyhMLEYpLDA9PT1wJiYocD0oQj1CLnJlcGxhY2UodSwiIikudHJpbSgpKS5jaGFyQ29kZUF0KDApKSxwKXtjYXNlIDY0OnN3aXRjaCgwPE0mJihCPUIucmVwbGFjZShjLCIiKSksZz1CLmNoYXJDb2RlQXQoMSkpe2Nhc2UgMTAwOmNhc2UgMTA5OmNhc2UgMTE1OmNhc2UgNDU6TT1sO2JyZWFrO2RlZmF1bHQ6TT1SfWlmKEw9KGg9ZShsLE0saCxnLGQrMSkpLmxlbmd0aCwwPEEmJih4PWkoMyxoLE09dChSLEIsSSksbCxULGssTCxnLGQsZiksQj1NLmpvaW4oIiIpLHZvaWQgMCE9PXgmJjA9PT0oTD0oaD14LnRyaW0oKSkubGVuZ3RoKSYmKGc9MCxoPSIiKSksMDxMKXN3aXRjaChnKXtjYXNlIDExNTpCPUIucmVwbGFjZSh3LG8pO2Nhc2UgMTAwOmNhc2UgMTA5OmNhc2UgNDU6aD1CKyJ7IitoKyJ9IjticmVhaztjYXNlIDEwNzpoPShCPUIucmVwbGFjZShtLCIkMSAkMiIpKSsieyIraCsifSIsaD0xPT09RXx8Mj09PUUmJmEoIkAiK2gsMyk\/IkAtd2Via2l0LSIraCsiQCIraDoiQCIraDticmVhaztkZWZhdWx0Omg9QitoLDExMj09PWYmJihIKz1oLGg9IiIpfWVsc2UgaD0iIjticmVhaztkZWZhdWx0Omg9ZShsLHQobCxCLEkpLGgsZixkKzEpfUcrPWgsaD1JPU09Xz1wPTAsQj0iIixnPXMuY2hhckNvZGVBdCgrK0YpO2JyZWFrO2Nhc2UgMTI1OmNhc2UgNTk6aWYoMTwoTD0oQj0oMDxNP0IucmVwbGFjZShjLCIiKTpCKS50cmltKCkpLmxlbmd0aCkpc3dpdGNoKDA9PT1fJiYocD1CLmNoYXJDb2RlQXQoMCksNDU9PT1wfHw5NjxwJiYxMjM+cCkmJihMPShCPUIucmVwbGFjZSgiICIsIjoiKSkubGVuZ3RoKSwwPEEmJnZvaWQgMCE9PSh4PWkoMSxCLGwscixULGssSC5sZW5ndGgsZixkLGYpKSYmMD09PShMPShCPXgudHJpbSgpKS5sZW5ndGgpJiYoQj0iXDBcMCIpLHA9Qi5jaGFyQ29kZUF0KDApLGc9Qi5jaGFyQ29kZUF0KDEpLHApe2Nhc2UgMDpicmVhaztjYXNlIDY0OmlmKDEwNT09PWd8fDk5PT09Zyl7VSs9QitzLmNoYXJBdChGKTticmVha31kZWZhdWx0OjU4IT09Qi5jaGFyQ29kZUF0KEwtMSkmJihIKz1uKEIscCxnLEIuY2hhckNvZGVBdCgyKSkpfUk9TT1fPXA9MCxCPSIiLGc9cy5jaGFyQ29kZUF0KCsrRil9fXN3aXRjaChnKXtjYXNlIDEzOmNhc2UgMTA6NDc9PT1QP1A9MDowPT09MStwJiYxMDchPT1mJiYwPEIubGVuZ3RoJiYoTT0xLEIrPSJcMCIpLDA8QSp6JiZpKDAsQixsLHIsVCxrLEgubGVuZ3RoLGYsZCxmKSxrPTEsVCsrO2JyZWFrO2Nhc2UgNTk6Y2FzZSAxMjU6aWYoMD09PVArTytDK1Mpe2srKzticmVha31kZWZhdWx0OnN3aXRjaChrKyssdj1zLmNoYXJBdChGKSxnKXtjYXNlIDk6Y2FzZSAzMjppZigwPT09TytTK1Apc3dpdGNoKE4pe2Nhc2UgNDQ6Y2FzZSA1ODpjYXNlIDk6Y2FzZSAzMjp2PSIiO2JyZWFrO2RlZmF1bHQ6MzIhPT1nJiYodj0iICIpfWJyZWFrO2Nhc2UgMDp2PSJcXDAiO2JyZWFrO2Nhc2UgMTI6dj0iXFxmIjticmVhaztjYXNlIDExOnY9IlxcdiI7YnJlYWs7Y2FzZSAzODowPT09TytQK1MmJihNPUk9MSx2PSJcZiIrdik7YnJlYWs7Y2FzZSAxMDg6aWYoMD09PU8rUCtTK2omJjA8Xylzd2l0Y2goRi1fKXtjYXNlIDI6MTEyPT09TiYmNTg9PT1zLmNoYXJDb2RlQXQoRi0zKSYmKGo9Tik7Y2FzZSA4OjExMT09PUQmJihqPUQpfWJyZWFrO2Nhc2UgNTg6MD09PU8rUCtTJiYoXz1GKTticmVhaztjYXNlIDQ0OjA9PT1QK0MrTytTJiYoTT0xLHYrPSJcciIpO2JyZWFrO2Nhc2UgMzQ6Y2FzZSAzOTowPT09UCYmKE89Tz09PWc\/MDowPT09Tz9nOk8pO2JyZWFrO2Nhc2UgOTE6MD09PU8rUCtDJiZTKys7YnJlYWs7Y2FzZSA5MzowPT09TytQK0MmJlMtLTticmVhaztjYXNlIDQxOjA9PT1PK1ArUyYmQy0tO2JyZWFrO2Nhc2UgNDA6aWYoMD09PU8rUCtTKXtpZigwPT09cClzd2l0Y2goMipOKzMqRCl7Y2FzZSA1MzM6YnJlYWs7ZGVmYXVsdDpwPTF9QysrfWJyZWFrO2Nhc2UgNjQ6MD09PVArQytPK1MrXytoJiYoaD0xKTticmVhaztjYXNlIDQyOmNhc2UgNDc6aWYoISgwPE8rUytDKSlzd2l0Y2goUCl7Y2FzZSAwOnN3aXRjaCgyKmcrMypzLmNoYXJDb2RlQXQoRisxKSl7Y2FzZSAyMzU6UD00NzticmVhaztjYXNlIDIyMDpMPUYsUD00Mn1icmVhaztjYXNlIDQyOjQ3PT09ZyYmNDI9PT1OJiZMKzIhPT1GJiYoMzM9PT1zLmNoYXJDb2RlQXQoTCsyKSYmKEgrPXMuc3Vic3RyaW5nKEwsRisxKSksdj0iIixQPTApfX0wPT09UCYmKEIrPXYpfUQ9TixOPWcsRisrfWlmKDA8KEw9SC5sZW5ndGgpKXtpZihNPWwsMDxBJiYodm9pZCAwIT09KHg9aSgyLEgsTSxyLFQsayxMLGYsZCxmKSkmJjA9PT0oSD14KS5sZW5ndGgpKXJldHVybiBVK0grRztpZihIPU0uam9pbigiLCIpKyJ7IitIKyJ9IiwwIT1FKmope3N3aXRjaCgyIT09RXx8YShILDIpfHwoaj0wKSxqKXtjYXNlIDExMTpIPUgucmVwbGFjZSh5LCI6LW1vei0kMSIpK0g7YnJlYWs7Y2FzZSAxMTI6SD1ILnJlcGxhY2UoYiwiOjotd2Via2l0LWlucHV0LSQxIikrSC5yZXBsYWNlKGIsIjo6LW1vei0kMSIpK0gucmVwbGFjZShiLCI6LW1zLWlucHV0LSQxIikrSH1qPTB9fXJldHVybiBVK0grR30oUixsLHIsMCwwKTtyZXR1cm4gMDxBJiYodm9pZCAwIT09KHM9aSgtMixmLGwsbCxULGssZi5sZW5ndGgsMCwwLDApKSYmKGY9cykpLCIiLGo9MCxrPVQ9MSxmfXZhciB1PS9eXDArL2csYz0vW1wwXHJcZl0vZyxmPS86ICovZyxkPS96b298Z3JhLyxwPS8oWyw6IF0pKHRyYW5zZm9ybSkvZyxnPS8sXHIrPy9nLGg9LyhbXHRcclxuIF0pKlxmPyYvZyxtPS9AKGtcdyspXHMqKFxTKilccyovLGI9Lzo6KHBsYWNlKS9nLHk9LzoocmVhZC1vbmx5KS9nLHY9L1tzdmhdXHcrLVt0YmxyXXsyfS8sdz0vXChccyooLiopXHMqXCkvZyx4PS8oW1xzXFNdKj8pOy9nLFM9Ly1zZWxmfGZsZXgtL2csUD0vW15dKj8oOltycF1bZWxdYVtcdy1dKylbXl0qLyxDPS9zdHJldGNofDpccypcdytcLSg\/OmNvbnRlfGF2YWlsKS8sTz0vKFteLV0pKGltYWdlLXNldFwoKS8saz0xLFQ9MSxqPTAsRT0xLFI9W10sTj1bXSxBPTAsRD1udWxsLHo9MDtyZXR1cm4gcy51c2U9ZnVuY3Rpb24gZSh0KXtzd2l0Y2godCl7Y2FzZSB2b2lkIDA6Y2FzZSBudWxsOkE9Ti5sZW5ndGg9MDticmVhaztkZWZhdWx0OmlmKCJmdW5jdGlvbiI9PXR5cGVvZiB0KU5bQSsrXT10O2Vsc2UgaWYoIm9iamVjdCI9PXR5cGVvZiB0KWZvcih2YXIgcj0wLG49dC5sZW5ndGg7cjxuOysrcillKHRbcl0pO2Vsc2Ugej0wfCEhdH1yZXR1cm4gZX0scy5zZXQ9bCx2b2lkIDAhPT1lJiZsKGUpLHN9O2Z1bmN0aW9uIG0oZSl7ZSYmYi5jdXJyZW50Lmluc2VydChlKyJ9Iil9dmFyIGI9e2N1cnJlbnQ6bnVsbH0seT1mdW5jdGlvbihlLHQscixuLGEsbyxpLGwscyx1KXtzd2l0Y2goZSl7Y2FzZSAxOnN3aXRjaCh0LmNoYXJDb2RlQXQoMCkpe2Nhc2UgNjQ6cmV0dXJuIGIuY3VycmVudC5pbnNlcnQodCsiOyIpLCIiO2Nhc2UgMTA4OmlmKDk4PT09dC5jaGFyQ29kZUF0KDIpKXJldHVybiIifWJyZWFrO2Nhc2UgMjppZigwPT09bClyZXR1cm4gdCsiLyp8Ki8iO2JyZWFrO2Nhc2UgMzpzd2l0Y2gobCl7Y2FzZSAxMDI6Y2FzZSAxMTI6cmV0dXJuIGIuY3VycmVudC5pbnNlcnQoclswXSt0KSwiIjtkZWZhdWx0OnJldHVybiB0KygwPT09dT8iLyp8Ki8iOiIiKX1jYXNlLTI6dC5zcGxpdCgiLyp8Ki99IikuZm9yRWFjaChtKX19LHY9ZnVuY3Rpb24oZSl7dm9pZCAwPT09ZSYmKGU9e30pO3ZhciB0LHI9ZS5rZXl8fCJjc3MiO3ZvaWQgMCE9PWUucHJlZml4JiYodD17cHJlZml4OmUucHJlZml4fSk7dmFyIG49bmV3IGgodCk7dmFyIGEsbz17fTthPWUuY29udGFpbmVyfHxkb2N1bWVudC5oZWFkO3ZhciBpLGw9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgic3R5bGVbZGF0YS1lbW90aW9uLSIrcisiXSIpO0FycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwobCwoZnVuY3Rpb24oZSl7ZS5nZXRBdHRyaWJ1dGUoImRhdGEtZW1vdGlvbi0iK3IpLnNwbGl0KCIgIikuZm9yRWFjaCgoZnVuY3Rpb24oZSl7b1tlXT0hMH0pKSxlLnBhcmVudE5vZGUhPT1hJiZhLmFwcGVuZENoaWxkKGUpfSkpLG4udXNlKGUuc3R5bGlzUGx1Z2lucykoeSksaT1mdW5jdGlvbihlLHQscixhKXt2YXIgbz10Lm5hbWU7Yi5jdXJyZW50PXIsbihlLHQuc3R5bGVzKSxhJiYocy5pbnNlcnRlZFtvXT0hMCl9O3ZhciBzPXtrZXk6cixzaGVldDpuZXcgZyh7a2V5OnIsY29udGFpbmVyOmEsbm9uY2U6ZS5ub25jZSxzcGVlZHk6ZS5zcGVlZHl9KSxub25jZTplLm5vbmNlLGluc2VydGVkOm8scmVnaXN0ZXJlZDp7fSxpbnNlcnQ6aX07cmV0dXJuIHN9O3ZhciB3PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxyPTAsbj0wLGE9ZS5sZW5ndGg7YT49NDsrK24sYS09NCl0PTE1NDA0ODM0NzcqKDY1NTM1Jih0PTI1NSZlLmNoYXJDb2RlQXQobil8KDI1NSZlLmNoYXJDb2RlQXQoKytuKSk8PDh8KDI1NSZlLmNoYXJDb2RlQXQoKytuKSk8PDE2fCgyNTUmZS5jaGFyQ29kZUF0KCsrbikpPDwyNCkpKyg1OTc5NyoodD4+PjE2KTw8MTYpLHI9MTU0MDQ4MzQ3NyooNjU1MzUmKHRePXQ+Pj4yNCkpKyg1OTc5NyoodD4+PjE2KTw8MTYpXjE1NDA0ODM0NzcqKDY1NTM1JnIpKyg1OTc5Nyoocj4+PjE2KTw8MTYpO3N3aXRjaChhKXtjYXNlIDM6cl49KDI1NSZlLmNoYXJDb2RlQXQobisyKSk8PDE2O2Nhc2UgMjpyXj0oMjU1JmUuY2hhckNvZGVBdChuKzEpKTw8ODtjYXNlIDE6cj0xNTQwNDgzNDc3Kig2NTUzNSYocl49MjU1JmUuY2hhckNvZGVBdChuKSkpKyg1OTc5Nyoocj4+PjE2KTw8MTYpfXJldHVybigoKHI9MTU0MDQ4MzQ3NyooNjU1MzUmKHJePXI+Pj4xMykpKyg1OTc5Nyoocj4+PjE2KTw8MTYpKV5yPj4+MTUpPj4+MCkudG9TdHJpbmcoMzYpfSx4PXthbmltYXRpb25JdGVyYXRpb25Db3VudDoxLGJvcmRlckltYWdlT3V0c2V0OjEsYm9yZGVySW1hZ2VTbGljZToxLGJvcmRlckltYWdlV2lkdGg6MSxib3hGbGV4OjEsYm94RmxleEdyb3VwOjEsYm94T3JkaW5hbEdyb3VwOjEsY29sdW1uQ291bnQ6MSxjb2x1bW5zOjEsZmxleDoxLGZsZXhHcm93OjEsZmxleFBvc2l0aXZlOjEsZmxleFNocmluazoxLGZsZXhOZWdhdGl2ZToxLGZsZXhPcmRlcjoxLGdyaWRSb3c6MSxncmlkUm93RW5kOjEsZ3JpZFJvd1NwYW46MSxncmlkUm93U3RhcnQ6MSxncmlkQ29sdW1uOjEsZ3JpZENvbHVtbkVuZDoxLGdyaWRDb2x1bW5TcGFuOjEsZ3JpZENvbHVtblN0YXJ0OjEsbXNHcmlkUm93OjEsbXNHcmlkUm93U3BhbjoxLG1zR3JpZENvbHVtbjoxLG1zR3JpZENvbHVtblNwYW46MSxmb250V2VpZ2h0OjEsbGluZUhlaWdodDoxLG9wYWNpdHk6MSxvcmRlcjoxLG9ycGhhbnM6MSx0YWJTaXplOjEsd2lkb3dzOjEsekluZGV4OjEsem9vbToxLFdlYmtpdExpbmVDbGFtcDoxLGZpbGxPcGFjaXR5OjEsZmxvb2RPcGFjaXR5OjEsc3RvcE9wYWNpdHk6MSxzdHJva2VEYXNoYXJyYXk6MSxzdHJva2VEYXNob2Zmc2V0OjEsc3Ryb2tlTWl0ZXJsaW1pdDoxLHN0cm9rZU9wYWNpdHk6MSxzdHJva2VXaWR0aDoxfTt2YXIgUz0vW0EtWl18Xm1zL2csUD0vX0VNT18oW15fXSs\/KV8oW15dKj8pX0VNT18vZyxDPWZ1bmN0aW9uKGUpe3JldHVybiA0NT09PWUuY2hhckNvZGVBdCgxKX0sTz1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZSYmImJvb2xlYW4iIT10eXBlb2YgZX0saz1mdW5jdGlvbihlKXt2YXIgdD17fTtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIHZvaWQgMD09PXRbcl0mJih0W3JdPWUocikpLHRbcl19fSgoZnVuY3Rpb24oZSl7cmV0dXJuIEMoZSk\/ZTplLnJlcGxhY2UoUywiLSQmIikudG9Mb3dlckNhc2UoKX0pKSxUPWZ1bmN0aW9uKGUsdCl7c3dpdGNoKGUpe2Nhc2UiYW5pbWF0aW9uIjpjYXNlImFuaW1hdGlvbk5hbWUiOmlmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gdC5yZXBsYWNlKFAsKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gRT17bmFtZTp0LHN0eWxlczpyLG5leHQ6RX0sdH0pKX1yZXR1cm4gMT09PXhbZV18fEMoZSl8fCJudW1iZXIiIT10eXBlb2YgdHx8MD09PXQ\/dDp0KyJweCJ9O2Z1bmN0aW9uIGooZSx0LHIsbil7aWYobnVsbD09cilyZXR1cm4iIjtpZih2b2lkIDAhPT1yLl9fZW1vdGlvbl9zdHlsZXMpcmV0dXJuIHI7c3dpdGNoKHR5cGVvZiByKXtjYXNlImJvb2xlYW4iOnJldHVybiIiO2Nhc2Uib2JqZWN0IjppZigxPT09ci5hbmltKXJldHVybiBFPXtuYW1lOnIubmFtZSxzdHlsZXM6ci5zdHlsZXMsbmV4dDpFfSxyLm5hbWU7aWYodm9pZCAwIT09ci5zdHlsZXMpe3ZhciBhPXIubmV4dDtpZih2b2lkIDAhPT1hKWZvcig7dm9pZCAwIT09YTspRT17bmFtZTphLm5hbWUsc3R5bGVzOmEuc3R5bGVzLG5leHQ6RX0sYT1hLm5leHQ7cmV0dXJuIHIuc3R5bGVzKyI7In1yZXR1cm4gZnVuY3Rpb24oZSx0LHIpe3ZhciBuPSIiO2lmKEFycmF5LmlzQXJyYXkocikpZm9yKHZhciBhPTA7YTxyLmxlbmd0aDthKyspbis9aihlLHQsclthXSwhMSk7ZWxzZSBmb3IodmFyIG8gaW4gcil7dmFyIGk9cltvXTtpZigib2JqZWN0IiE9dHlwZW9mIGkpbnVsbCE9dCYmdm9pZCAwIT09dFtpXT9uKz1vKyJ7Iit0W2ldKyJ9IjpPKGkpJiYobis9ayhvKSsiOiIrVChvLGkpKyI7Iik7ZWxzZSBpZighQXJyYXkuaXNBcnJheShpKXx8InN0cmluZyIhPXR5cGVvZiBpWzBdfHxudWxsIT10JiZ2b2lkIDAhPT10W2lbMF1dKXt2YXIgbD1qKGUsdCxpLCExKTtzd2l0Y2gobyl7Y2FzZSJhbmltYXRpb24iOmNhc2UiYW5pbWF0aW9uTmFtZSI6bis9ayhvKSsiOiIrbCsiOyI7YnJlYWs7ZGVmYXVsdDpuKz1vKyJ7IitsKyJ9In19ZWxzZSBmb3IodmFyIHM9MDtzPGkubGVuZ3RoO3MrKylPKGlbc10pJiYobis9ayhvKSsiOiIrVChvLGlbc10pKyI7Iil9cmV0dXJuIG59KGUsdCxyKTtjYXNlImZ1bmN0aW9uIjppZih2b2lkIDAhPT1lKXt2YXIgbz1FLGk9cihlKTtyZXR1cm4gRT1vLGooZSx0LGksbil9YnJlYWs7Y2FzZSJzdHJpbmciOn1pZihudWxsPT10KXJldHVybiByO3ZhciBsPXRbcl07cmV0dXJuIHZvaWQgMD09PWx8fG4\/cjpsfXZhciBFLFI9L2xhYmVsOlxzKihbXlxzO1xue10rKVxzKjsvZzt2YXIgTj1mdW5jdGlvbihlLHQscil7aWYoMT09PWUubGVuZ3RoJiYib2JqZWN0Ij09dHlwZW9mIGVbMF0mJm51bGwhPT1lWzBdJiZ2b2lkIDAhPT1lWzBdLnN0eWxlcylyZXR1cm4gZVswXTt2YXIgbj0hMCxhPSIiO0U9dm9pZCAwO3ZhciBvPWVbMF07bnVsbD09b3x8dm9pZCAwPT09by5yYXc\/KG49ITEsYSs9aihyLHQsbywhMSkpOmErPW9bMF07Zm9yKHZhciBpPTE7aTxlLmxlbmd0aDtpKyspYSs9aihyLHQsZVtpXSw0Nj09PWEuY2hhckNvZGVBdChhLmxlbmd0aC0xKSksbiYmKGErPW9baV0pO1IubGFzdEluZGV4PTA7Zm9yKHZhciBsLHM9IiI7bnVsbCE9PShsPVIuZXhlYyhhKSk7KXMrPSItIitsWzFdO3JldHVybntuYW1lOncoYSkrcyxzdHlsZXM6YSxuZXh0OkV9fTtmdW5jdGlvbiBBKGUsdCxyKXt2YXIgbj0iIjtyZXR1cm4gci5zcGxpdCgiICIpLmZvckVhY2goKGZ1bmN0aW9uKHIpe3ZvaWQgMCE9PWVbcl0\/dC5wdXNoKGVbcl0pOm4rPXIrIiAifSkpLG59dmFyIEQ9ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPWUua2V5KyItIit0Lm5hbWU7aWYoITE9PT1yJiZ2b2lkIDA9PT1lLnJlZ2lzdGVyZWRbbl0mJihlLnJlZ2lzdGVyZWRbbl09dC5zdHlsZXMpLHZvaWQgMD09PWUuaW5zZXJ0ZWRbdC5uYW1lXSl7dmFyIGE9dDtkb3tlLmluc2VydCgiLiIrbixhLGUuc2hlZXQsITApO2E9YS5uZXh0fXdoaWxlKHZvaWQgMCE9PWEpfX07ZnVuY3Rpb24geihlLHQpe2lmKHZvaWQgMD09PWUuaW5zZXJ0ZWRbdC5uYW1lXSlyZXR1cm4gZS5pbnNlcnQoIiIsdCxlLnNoZWV0LCEwKX1mdW5jdGlvbiBfKGUsdCxyKXt2YXIgbj1bXSxhPUEoZSxuLHIpO3JldHVybiBuLmxlbmd0aDwyP3I6YSt0KG4pfXZhciBGPWZ1bmN0aW9uIGUodCl7Zm9yKHZhciByPSIiLG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIGE9dFtuXTtpZihudWxsIT1hKXt2YXIgbz12b2lkIDA7c3dpdGNoKHR5cGVvZiBhKXtjYXNlImJvb2xlYW4iOmJyZWFrO2Nhc2Uib2JqZWN0IjppZihBcnJheS5pc0FycmF5KGEpKW89ZShhKTtlbHNlIGZvcih2YXIgaSBpbiBvPSIiLGEpYVtpXSYmaSYmKG8mJihvKz0iICIpLG8rPWkpO2JyZWFrO2RlZmF1bHQ6bz1hfW8mJihyJiYocis9IiAiKSxyKz1vKX19cmV0dXJuIHJ9LE09ZnVuY3Rpb24oZSl7dmFyIHQ9dihlKTt0LnNoZWV0LnNwZWVkeT1mdW5jdGlvbihlKXt0aGlzLmlzU3BlZWR5PWV9LHQuY29tcGF0PSEwO3ZhciByPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgscj1uZXcgQXJyYXkoZSksbj0wO248ZTtuKyspcltuXT1hcmd1bWVudHNbbl07dmFyIGE9TihyLHQucmVnaXN0ZXJlZCx2b2lkIDApO3JldHVybiBEKHQsYSwhMSksdC5rZXkrIi0iK2EubmFtZX07cmV0dXJue2NzczpyLGN4OmZ1bmN0aW9uKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsbj1uZXcgQXJyYXkoZSksYT0wO2E8ZTthKyspblthXT1hcmd1bWVudHNbYV07cmV0dXJuIF8odC5yZWdpc3RlcmVkLHIsRihuKSl9LGluamVjdEdsb2JhbDpmdW5jdGlvbigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KGUpLG49MDtuPGU7bisrKXJbbl09YXJndW1lbnRzW25dO3ZhciBhPU4ocix0LnJlZ2lzdGVyZWQpO3oodCxhKX0sa2V5ZnJhbWVzOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgscj1uZXcgQXJyYXkoZSksbj0wO248ZTtuKyspcltuXT1hcmd1bWVudHNbbl07dmFyIGE9TihyLHQucmVnaXN0ZXJlZCksbz0iYW5pbWF0aW9uLSIrYS5uYW1lO3JldHVybiB6KHQse25hbWU6YS5uYW1lLHN0eWxlczoiQGtleWZyYW1lcyAiK28rInsiK2Euc3R5bGVzKyJ9In0pLG99LGh5ZHJhdGU6ZnVuY3Rpb24oZSl7ZS5mb3JFYWNoKChmdW5jdGlvbihlKXt0Lmluc2VydGVkW2VdPSEwfSkpfSxmbHVzaDpmdW5jdGlvbigpe3QucmVnaXN0ZXJlZD17fSx0Lmluc2VydGVkPXt9LHQuc2hlZXQuZmx1c2goKX0sc2hlZXQ6dC5zaGVldCxjYWNoZTp0LGdldFJlZ2lzdGVyZWRTdHlsZXM6QS5iaW5kKG51bGwsdC5yZWdpc3RlcmVkKSxtZXJnZTpfLmJpbmQobnVsbCx0LnJlZ2lzdGVyZWQscil9fSgpLEk9KE0uZmx1c2gsTS5oeWRyYXRlLE0uY3gsTS5tZXJnZSxNLmdldFJlZ2lzdGVyZWRTdHlsZXMsTS5pbmplY3RHbG9iYWwsTS5rZXlmcmFtZXMsTS5jc3MpO00uc2hlZXQsTS5jYWNoZTtmdW5jdGlvbiBMKGUpe3JldHVybihMPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSkoZSl9ZnVuY3Rpb24gVyhlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFN5bWJvbHx8IShTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGUpKSlyZXR1cm47dmFyIHI9W10sbj0hMCxhPSExLG89dm9pZCAwO3RyeXtmb3IodmFyIGksbD1lW1N5bWJvbC5pdGVyYXRvcl0oKTshKG49KGk9bC5uZXh0KCkpLmRvbmUpJiYoci5wdXNoKGkudmFsdWUpLCF0fHxyLmxlbmd0aCE9PXQpO249ITApO31jYXRjaChlKXthPSEwLG89ZX1maW5hbGx5e3RyeXtufHxudWxsPT1sLnJldHVybnx8bC5yZXR1cm4oKX1maW5hbGx5e2lmKGEpdGhyb3cgb319cmV0dXJuIHJ9KGUsdCl8fGZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuO2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gSyhlLHQpO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTsiT2JqZWN0Ij09PXImJmUuY29uc3RydWN0b3ImJihyPWUuY29uc3RydWN0b3IubmFtZSk7aWYoIk1hcCI9PT1yfHwiU2V0Ij09PXIpcmV0dXJuIEFycmF5LmZyb20oZSk7aWYoIkFyZ3VtZW50cyI9PT1yfHwvXig\/OlVpfEkpbnQoPzo4fDE2fDMyKSg\/OkNsYW1wZWQpP0FycmF5JC8udGVzdChyKSlyZXR1cm4gSyhlLHQpfShlLHQpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9KCl9ZnVuY3Rpb24gSyhlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgcj0wLG49bmV3IEFycmF5KHQpO3I8dDtyKyspbltyXT1lW3JdO3JldHVybiBufWZ1bmN0aW9uIEIoZSx0KXt2YXIgcj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihuPW4uZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLHIucHVzaC5hcHBseShyLG4pfXJldHVybiByfWZ1bmN0aW9uIEgoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIHI9bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI\/QihPYmplY3QociksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe0coZSx0LHJbdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMocikpOkIoT2JqZWN0KHIpKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iocix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gRyhlLHQscil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpyLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1yLGV9ZnVuY3Rpb24gVShlKXtpZighZSlyZXR1cm4gbnVsbDt2YXIgdD1lLmNvbG9yLHI9ZS5iYWNrZ3JvdW5kQ29sb3Isbj1lLmJvcmRlckNvbG9yLGE9ZS5ib3JkZXJXaWR0aCxvPWUuc3RyaXBlZENvbG9yLGk9ZS5oaWdobGlnaHRDb2xvcixsPWUuY2VsbFBhZGRpbmcscz1lLnN0eWxlLHU9ZS50YWJsZUJvcmRlckNvbG9yLGM9dm9pZCAwPT09dT9uOnUsZj1lLnRhYmxlQm9yZGVyV2lkdGgsZD12b2lkIDA9PT1mP2E6ZixwPWUudGFibGVTdHlsZSxnPWUuaGVhZGVyQm9yZGVyQ29sb3IsaD12b2lkIDA9PT1nP246ZyxtPWUuaGVhZGVyQm9yZGVyV2lkdGgsYj12b2lkIDA9PT1tP2E6bSx5PWUuaGVhZGVyU3R5bGUsdj1lLmdyb3VwSGVhZGVyQm9yZGVyQ29sb3Isdz12b2lkIDA9PT12P246dix4PWUuZ3JvdXBIZWFkZXJCb3JkZXJXaWR0aCxTPXZvaWQgMD09PXg\/YTp4LFA9ZS5ncm91cEhlYWRlclN0eWxlLEM9ZS50YWJsZUJvZHlTdHlsZSxPPWUucm93R3JvdXBTdHlsZSxrPWUucm93U3R5bGUsVD1lLnJvd1N0cmlwZWRTdHlsZSxqPWUucm93SGlnaGxpZ2h0U3R5bGUsRT1lLnJvd1NlbGVjdGVkU3R5bGUsUj1lLmNlbGxCb3JkZXJDb2xvcixOPXZvaWQgMD09PVI\/bjpSLEE9ZS5jZWxsQm9yZGVyV2lkdGgsRD12b2lkIDA9PT1BP2E6QSx6PWUuY2VsbFN0eWxlLF89ZS5mb290ZXJCb3JkZXJDb2xvcixGPXZvaWQgMD09PV8\/bjpfLE09ZS5mb290ZXJCb3JkZXJXaWR0aCxJPXZvaWQgMD09PU0\/YTpNLEs9ZS5mb290ZXJTdHlsZSxCPWUuaW5wdXRTdHlsZSxHPWUuZmlsdGVySW5wdXRTdHlsZSxVPWUuc2VhcmNoSW5wdXRTdHlsZSxKPWUuc2VsZWN0U3R5bGUsJD1lLnBhZ2luYXRpb25TdHlsZSxxPWUucGFnZUJ1dHRvblN0eWxlLFg9ZS5wYWdlQnV0dG9uSG92ZXJTdHlsZSxZPWUucGFnZUJ1dHRvbkFjdGl2ZVN0eWxlLFo9ZS5wYWdlQnV0dG9uQ3VycmVudFN0eWxlLFE9VihbeixrLEMscCxzXSwiY29sb3IiLHQpLGVlPVYoW0osc10sImNvbG9yIix0KTtiPVYoW3ldLCJib3JkZXJXaWR0aCIsYik7dmFyIHRlLHJlPXtzdHlsZTpIKHtjb2xvcjp0LGJhY2tncm91bmRDb2xvcjpyfSxzKSx0YWJsZVN0eWxlOkgoe2JvcmRlckNvbG9yOmMsYm9yZGVyV2lkdGg6ZH0scCksaGVhZGVyU3R5bGU6SChIKHtib3JkZXJDb2xvcjpoLGJvcmRlcldpZHRoOmIscGFkZGluZzpsfSx5KSx7fSx7Ii5ydC1ib3JkZXJlZCAmLCAucnQtb3V0bGluZWQgJiI6e2JvcmRlcldpZHRoOmJ9fSksZ3JvdXBIZWFkZXJTdHlsZTpIKEgoe2JvcmRlckNvbG9yOncsYm9yZGVyV2lkdGg6U30sUCkse30seyImOjphZnRlciI6e2JhY2tncm91bmRDb2xvcjp3LGhlaWdodDpTfSwiLnJ0LWJvcmRlcmVkICYiOntib3JkZXJXaWR0aDpTfX0pLHRhYmxlQm9keVN0eWxlOkMsY2VsbFN0eWxlOkgoe2JvcmRlckNvbG9yOk4sYm9yZGVyV2lkdGg6RCxwYWRkaW5nOmx9LHopLGZvb3RlclN0eWxlOkgoe2JvcmRlckNvbG9yOkYsYm9yZGVyV2lkdGg6SSxwYWRkaW5nOmx9LEspLHJvd0dyb3VwU3R5bGU6Tyxyb3dTdHlsZTpIKEgoe30saykse30seyImLnJ0LXRyLXN0cmlwZWQiOkgoe2JhY2tncm91bmRDb2xvcjpvfSxUKSwiJi5ydC10ci1oaWdobGlnaHQ6aG92ZXIiOkgoe2JhY2tncm91bmRDb2xvcjppfSxqKSwiJi5ydC10ci1zZWxlY3RlZCI6SCh7fSxFKX0pLGZpbHRlckNlbGxTdHlsZTpIKHtib3JkZXJDb2xvcjpOLGJvcmRlcldpZHRoOkQscGFkZGluZzpsfSx6KSxleHBhbmRlclN0eWxlOnsiJjo6YWZ0ZXIiOntib3JkZXJUb3BDb2xvcjpRfX0sZmlsdGVySW5wdXRTdHlsZTpIKEgoe30sQiksRyksc2VhcmNoSW5wdXRTdHlsZTpIKEgoe30sQiksVSkscGFnaW5hdGlvblN0eWxlOkgoSCh7Ym9yZGVyVG9wQ29sb3I6Tixib3JkZXJUb3BXaWR0aDpEfSwkKSx7fSx7Ii5ydC1wYWdlLWp1bXAiOkgoe30sQiksIi5ydC1wYWdlLXNpemUtc2VsZWN0IjpIKEgoe30sSikse30seyJAc3VwcG9ydHMgKC1tb3otYXBwZWFyYW5jZTogbm9uZSkiOntiYWNrZ3JvdW5kSW1hZ2U6ZWUmJid1cmwoXCdkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD1VUy1BU0NJSSw8c3ZnIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4nKyc8cGF0aCBmaWxsPSInLmNvbmNhdCgodGU9ZWUsZW5jb2RlVVJJQ29tcG9uZW50KHRlKS5yZXBsYWNlKCIoIiwiJTI4IikucmVwbGFjZSgiKSIsIiUyOSIpKSwnIiBkPSJNMjQgMS41bC0xMiAyMS0xMi0yMWgyNHoiLz48L3N2Zz5cJyknKX19KSwiLnJ0LXBhZ2UtYnV0dG9uIjpIKHt9LHEpLCIucnQtcGFnZS1idXR0b246bm90KDpkaXNhYmxlZCk6aG92ZXIiOkgoe30sWCksIi5ydC1wYWdlLWJ1dHRvbjpub3QoOmRpc2FibGVkKTphY3RpdmUiOkgoe30sWSksIi5ydC1rZXlib2FyZC1hY3RpdmUgJiAucnQtcGFnZS1idXR0b246bm90KDpkaXNhYmxlZCk6Zm9jdXMiOkgoe30sWCksIi5ydC1wYWdlLWJ1dHRvbi1jdXJyZW50IjpIKHt9LFopfSl9O3JldHVybiBmdW5jdGlvbiBlKHQpe2Zvcih2YXIgcj0wLG49T2JqZWN0LmVudHJpZXModCk7cjxuLmxlbmd0aDtyKyspe3ZhciBhPVcobltyXSwyKSxvPWFbMF0saT1hWzFdOyJvYmplY3QiPT09TChpKT8oZShpKSwwPT09T2JqZWN0LmtleXMoaSkubGVuZ3RoJiZkZWxldGUgdFtvXSk6bnVsbD09aSYmZGVsZXRlIHRbb119fShyZSkscmV9ZnVuY3Rpb24gVihlLHQscil7dmFyIG49ZS5maW5kKChmdW5jdGlvbihlKXtyZXR1cm4gZSYmbnVsbCE9ZVt0XX0pKTtyZXR1cm4gbj9uW3RdOnJ9ZnVuY3Rpb24gSigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHQ9bmV3IEFycmF5KGUpLHI9MDtyPGU7cisrKXRbcl09YXJndW1lbnRzW3JdO3JldHVybih0PXQuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZX0pKSkubGVuZ3RoP0kodCk6bnVsbH1mdW5jdGlvbiAkKGUpe3JldHVybigkPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSkoZSl9dmFyIHE9e3NvcnRMYWJlbDoiU29ydCB7bmFtZX0iLGZpbHRlclBsYWNlaG9sZGVyOiIiLGZpbHRlckxhYmVsOiJGaWx0ZXIge25hbWV9IixzZWFyY2hQbGFjZWhvbGRlcjoiU2VhcmNoIixzZWFyY2hMYWJlbDoiU2VhcmNoIixub0RhdGE6Ik5vIHJvd3MgZm91bmQiLHBhZ2VOZXh0OiJOZXh0IixwYWdlUHJldmlvdXM6IlByZXZpb3VzIixwYWdlTnVtYmVyczoie3BhZ2V9IG9mIHtwYWdlc30iLHBhZ2VJbmZvOiJ7cm93U3RhcnR9Ii5jb25jYXQoU3RyaW5nLmZyb21DaGFyQ29kZSg4MjExKSwie3Jvd0VuZH0gb2Yge3Jvd3N9IHJvd3MiKSxwYWdlU2l6ZU9wdGlvbnM6IlNob3cge3Jvd3N9IixwYWdlTmV4dExhYmVsOiJOZXh0IHBhZ2UiLHBhZ2VQcmV2aW91c0xhYmVsOiJQcmV2aW91cyBwYWdlIixwYWdlTnVtYmVyTGFiZWw6IlBhZ2Uge3BhZ2V9IixwYWdlSnVtcExhYmVsOiJHbyB0byBwYWdlIixwYWdlU2l6ZU9wdGlvbnNMYWJlbDoiUm93cyBwZXIgcGFnZSIsZGVmYXVsdEdyb3VwSGVhZGVyOiJHcm91cGVkIixkZXRhaWxzRXhwYW5kTGFiZWw6IkV4cGFuZCBkZXRhaWxzIixkZXRhaWxzQ29sbGFwc2VMYWJlbDoiQ29sbGFwc2UgZGV0YWlscyIsc2VsZWN0QWxsUm93c0xhYmVsOiJTZWxlY3QgYWxsIHJvd3MiLGRlc2VsZWN0QWxsUm93c0xhYmVsOiJEZXNlbGVjdCBhbGwgcm93cyIsc2VsZWN0QWxsU3ViUm93c0xhYmVsOiJTZWxlY3QgYWxsIHJvd3MgaW4gZ3JvdXAiLGRlc2VsZWN0QWxsU3ViUm93c0xhYmVsOiJEZXNlbGVjdCBhbGwgcm93cyBpbiBncm91cCIsc2VsZWN0Um93TGFiZWw6IlNlbGVjdCByb3ciLGRlc2VsZWN0Um93TGFiZWw6IkRlc2VsZWN0IHJvdyJ9O2Z1bmN0aW9uIFgoZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0\/YXJndW1lbnRzWzFdOnt9O2lmKCFlfHwhdClyZXR1cm4gZTt2YXIgcj1PYmplY3Qua2V5cyh0KSxuPSIoIityLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuInsiLmNvbmNhdChlLCJ9Iil9KSkuam9pbigifCIpKyIpIixhPWUuc3BsaXQobmV3IFJlZ0V4cChuKSksbz1yLnJlZHVjZSgoZnVuY3Rpb24oZSxyKXtyZXR1cm4gZVsieyIuY29uY2F0KHIsIn0iKV09dFtyXSxlfSkse30pLGk9YS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT1vW2VdP29bZV06ZX0pKTtyZXR1cm4gaS5zb21lKChmdW5jdGlvbihlKXtyZXR1cm4ib2JqZWN0Ij09PSQoZSl9KSk\/aTppLmpvaW4oIiIpfWZ1bmN0aW9uIFkoZSl7cmV0dXJuKFk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I\/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU\/InN5bWJvbCI6dHlwZW9mIGV9KShlKX1mdW5jdGlvbiBaKGUsdCl7dmFyIHI9T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG49T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYobj1uLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSx0KS5lbnVtZXJhYmxlfSkpKSxyLnB1c2guYXBwbHkocixuKX1yZXR1cm4gcn1mdW5jdGlvbiBRKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciByPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP1ooT2JqZWN0KHIpLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtlZShlLHQsclt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM\/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhyKSk6WihPYmplY3QocikpLmZvckVhY2goKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLHQpKX0pKX1yZXR1cm4gZX1mdW5jdGlvbiBlZShlLHQscil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpyLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1yLGV9ZnVuY3Rpb24gdGUoKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PW5ldyBBcnJheShlKSxyPTA7cjxlO3IrKyl0W3JdPWFyZ3VtZW50c1tyXTtyZXR1cm4gdC5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlfSkpLmpvaW4oIiAiKX1mdW5jdGlvbiByZSgpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHQ9bmV3IEFycmF5KGUpLHI9MDtyPGU7cisrKXRbcl09YXJndW1lbnRzW3JdO3JldHVybiB0LmZpbmQoKGZ1bmN0aW9uKGUpe3JldHVybiBudWxsIT1lfSkpfWZ1bmN0aW9uIG5lKGUsdCl7cmV0dXJuIHQucmVkdWNlKChmdW5jdGlvbihlLHQpe2lmKGUgaW5zdGFuY2VvZiBPYmplY3QmJnZvaWQgMCE9PWUpcmV0dXJuIGVbdF19KSxlKX1mdW5jdGlvbiBhZShlLHQscil7dmFyIG49USh7fSxlKSxhPW47cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24oZSxuKXtuPT09dC5sZW5ndGgtMT92b2lkIDA9PT1yP2RlbGV0ZSBhW2VdOmFbZV09cjooIm9iamVjdCI9PT1ZKGFbZV0pP2FbZV09USh7fSxhW2VdKTphW2VdPXt9LGE9YVtlXSl9KSksbn1mdW5jdGlvbiBvZShlKXtyZXR1cm4gZS5yZXBsYWNlKC9bLiorP14ke30oKXxbXF1cXF0vZywiXFwkJiIpfWZ1bmN0aW9uIGllKGUpe3JldHVybihpZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0pKGUpfWZ1bmN0aW9uIGxlKGUsdCl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBuPXRbcl07bi5lbnVtZXJhYmxlPW4uZW51bWVyYWJsZXx8ITEsbi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIG4mJihuLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLmtleSxuKX19ZnVuY3Rpb24gc2UoZSx0KXtyZXR1cm4oc2U9T2JqZWN0LnNldFByb3RvdHlwZU9mfHxmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9KShlLHQpfWZ1bmN0aW9uIHVlKGUpe3ZhciB0PWZ1bmN0aW9uKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3QpcmV0dXJuITE7aWYoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFJlZmxlY3QuY29uc3RydWN0KERhdGUsW10sKGZ1bmN0aW9uKCl7fSkpKSwhMH1jYXRjaChlKXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHIsbj1kZShlKTtpZih0KXt2YXIgYT1kZSh0aGlzKS5jb25zdHJ1Y3RvcjtyPVJlZmxlY3QuY29uc3RydWN0KG4sYXJndW1lbnRzLGEpfWVsc2Ugcj1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gY2UodGhpcyxyKX19ZnVuY3Rpb24gY2UoZSx0KXtyZXR1cm4hdHx8Im9iamVjdCIhPT1pZSh0KSYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ\/ZmUoZSk6dH1mdW5jdGlvbiBmZShlKXtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGV9ZnVuY3Rpb24gZGUoZSl7cmV0dXJuKGRlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9KShlKX1mdW5jdGlvbiBwZShlKXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZ2UoZSl9KGUpfHxmdW5jdGlvbihlKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChlKSlyZXR1cm4gQXJyYXkuZnJvbShlKX0oZSl8fGZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuO2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gZ2UoZSx0KTt2YXIgcj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7Ik9iamVjdCI9PT1yJiZlLmNvbnN0cnVjdG9yJiYocj1lLmNvbnN0cnVjdG9yLm5hbWUpO2lmKCJNYXAiPT09cnx8IlNldCI9PT1yKXJldHVybiBBcnJheS5mcm9tKGUpO2lmKCJBcmd1bWVudHMiPT09cnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QocikpcmV0dXJuIGdlKGUsdCl9KGUpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIGdlKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciByPTAsbj1uZXcgQXJyYXkodCk7cjx0O3IrKyluW3JdPWVbcl07cmV0dXJuIG59ZnVuY3Rpb24gaGUoKXtyZXR1cm4oaGU9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIHI9YXJndW1lbnRzW3RdO2Zvcih2YXIgbiBpbiByKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyLG4pJiYoZVtuXT1yW25dKX1yZXR1cm4gZX0pLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiBtZShlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIHIsbixhPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgcixuLGE9e30sbz1PYmplY3Qua2V5cyhlKTtmb3Iobj0wO248by5sZW5ndGg7bisrKXI9b1tuXSx0LmluZGV4T2Yocik+PTB8fChhW3JdPWVbcl0pO3JldHVybiBhfShlLHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKG49MDtuPG8ubGVuZ3RoO24rKylyPW9bbl0sdC5pbmRleE9mKHIpPj0wfHxPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxyKSYmKGFbcl09ZVtyXSl9cmV0dXJuIGF9dmFyIGJlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuaXNDdXJyZW50LHI9ZS5jbGFzc05hbWUsbj1tZShlLFsiaXNDdXJyZW50IiwiY2xhc3NOYW1lIl0pO3JldHVybiByPXRlKHIsInJ0LXBhZ2UtYnV0dG9uIix0PyIgcnQtcGFnZS1idXR0b24tY3VycmVudCI6bnVsbCksby5hLmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIsaGUoe3R5cGU6ImJ1dHRvbiIsY2xhc3NOYW1lOnJ9LG4pLG4uY2hpbGRyZW4pfTt2YXIgeWU9ZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJnNlKGUsdCl9KGksZSk7dmFyIHQscixuLGE9dWUoaSk7ZnVuY3Rpb24gaShlKXt2YXIgdDtyZXR1cm4gZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxpKSwodD1hLmNhbGwodGhpcyxlKSkuY2hhbmdlUGFnZT10LmNoYW5nZVBhZ2UuYmluZChmZSh0KSksdC5hcHBseVBhZ2U9dC5hcHBseVBhZ2UuYmluZChmZSh0KSksdC5zdGF0ZT17cGFnZUp1bXBWYWx1ZTplLnBhZ2UrMSxwcmV2UGFnZTplLnBhZ2V9LHR9cmV0dXJuIHQ9aSxuPVt7a2V5OiJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUucGFnZSE9PXQucHJldlBhZ2U\/e3BhZ2VKdW1wVmFsdWU6ZS5wYWdlKzEscHJldlBhZ2U6ZS5wYWdlfTpudWxsfX1dLChyPVt7a2V5OiJjaGFuZ2VQYWdlIix2YWx1ZTpmdW5jdGlvbihlKXtlIT09dGhpcy5wcm9wcy5wYWdlKzEmJnRoaXMucHJvcHMub25QYWdlQ2hhbmdlKGUtMSl9fSx7a2V5OiJhcHBseVBhZ2UiLHZhbHVlOmZ1bmN0aW9uKGUpe2UmJmUucHJldmVudERlZmF1bHQoKTt2YXIgdD10aGlzLnN0YXRlLnBhZ2VKdW1wVmFsdWU7aWYoIiIhPT10KXRoaXMuY2hhbmdlUGFnZSh0KTtlbHNle3ZhciByPXRoaXMucHJvcHMucGFnZSsxO3RoaXMuc2V0U3RhdGUoe3BhZ2VKdW1wVmFsdWU6cn0pfX19LHtrZXk6InJlbmRlclBhZ2VJbmZvIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1lLnBhZ2Uscj1lLnBhZ2VTaXplLG49ZS5zb3J0ZWREYXRhLGE9ZS5sYW5ndWFnZSxpPW4ubGVuZ3RoLGw9TWF0aC5taW4odCpyKzEsbi5sZW5ndGgpLHM9TWF0aC5taW4odCpyK3Isbi5sZW5ndGgpLHU9WChhLnBhZ2VJbmZvLHtyb3dTdGFydDpsLHJvd0VuZDpzLHJvd3M6aX0pO3JldHVybiBvLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJydC1wYWdlLWluZm8ifSx1KX19LHtrZXk6InJlbmRlclBhZ2VTaXplT3B0aW9ucyIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wYWdlU2l6ZSxyPWUucGFnZVNpemVPcHRpb25zLG49ZS5vblBhZ2VTaXplQ2hhbmdlLGE9ZS5sYW5ndWFnZSxpPW8uYS5jcmVhdGVFbGVtZW50KCJzZWxlY3QiLHtrZXk6InBhZ2Utc2l6ZS1zZWxlY3QiLGNsYXNzTmFtZToicnQtcGFnZS1zaXplLXNlbGVjdCIsImFyaWEtbGFiZWwiOmEucGFnZVNpemVPcHRpb25zTGFiZWwsb25DaGFuZ2U6ZnVuY3Rpb24oZSl7cmV0dXJuIG4oTnVtYmVyKGUudGFyZ2V0LnZhbHVlKSl9LHZhbHVlOnR9LHIubWFwKChmdW5jdGlvbihlLHQpe3JldHVybiBvLmEuY3JlYXRlRWxlbWVudCgib3B0aW9uIix7a2V5OnQsdmFsdWU6ZX0sZSl9KSkpLGw9WChhLnBhZ2VTaXplT3B0aW9ucyx7cm93czppfSk7cmV0dXJuIG8uYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6InJ0LXBhZ2Utc2l6ZSJ9LGwpfX0se2tleToicmVuZGVyUGFnZUp1bXAiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWUub25DaGFuZ2Uscj1lLnZhbHVlLG49ZS5vbkJsdXIsYT1lLm9uS2V5UHJlc3MsaT1lLmlucHV0VHlwZSxsPWUubGFuZ3VhZ2U7cmV0dXJuIG8uYS5jcmVhdGVFbGVtZW50KCJpbnB1dCIse2tleToicGFnZS1qdW1wIixjbGFzc05hbWU6InJ0LXBhZ2UtanVtcCIsImFyaWEtbGFiZWwiOmwucGFnZUp1bXBMYWJlbCx0eXBlOmksb25DaGFuZ2U6dCx2YWx1ZTpyLG9uQmx1cjpuLG9uS2V5UHJlc3M6YX0pfX0se2tleToiZ2V0UGFnZUp1bXBQcm9wZXJ0aWVzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJue29uS2V5UHJlc3M6ZnVuY3Rpb24odCl7MTMhPT10LndoaWNoJiYxMyE9PXQua2V5Q29kZXx8ZS5hcHBseVBhZ2UoKX0sb25CbHVyOnRoaXMuYXBwbHlQYWdlLHZhbHVlOnRoaXMuc3RhdGUucGFnZUp1bXBWYWx1ZSxvbkNoYW5nZTpmdW5jdGlvbih0KXt2YXIgcj10LnRhcmdldC52YWx1ZTtpZigiIiE9PXIpe3ZhciBuPU51bWJlcihyKTtpZighTnVtYmVyLmlzTmFOKG4pKXt2YXIgYT1NYXRoLm1pbihNYXRoLm1heChuLDEpLE1hdGgubWF4KGUucHJvcHMucGFnZXMsMSkpO2Uuc2V0U3RhdGUoe3BhZ2VKdW1wVmFsdWU6YX0pfX1lbHNlIGUuc2V0U3RhdGUoe3BhZ2VKdW1wVmFsdWU6cn0pfSxpbnB1dFR5cGU6Im51bWJlciIsbGFuZ3VhZ2U6dGhpcy5wcm9wcy5sYW5ndWFnZX19fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMucHJvcHMscj10LmF1dG9IaWRlUGFnaW5hdGlvbixuPXQucGFnaW5hdGlvblR5cGUsYT10LnNob3dQYWdlU2l6ZU9wdGlvbnMsaT10LnNob3dQYWdlSW5mbyxsPXQucGFnZSxzPXQucGFnZXMsdT10LmNhblByZXZpb3VzLGM9dC5jYW5OZXh0LGY9dC5jbGFzc05hbWUsZD10LnN0eWxlLHA9dC50aGVtZSxnPXQubGFuZ3VhZ2U7aWYocil7dmFyIGg9dGhpcy5wcm9wcyxtPWguZGVmYXVsdFBhZ2VTaXplLGI9aC5wYWdlU2l6ZU9wdGlvbnMseT1oLnJlc29sdmVkRGF0YSx2PWE\/TWF0aC5taW4uYXBwbHkoTWF0aCxbbV0uY29uY2F0KHBlKGIpKSk6bTtpZih5Lmxlbmd0aDw9dilyZXR1cm4gbnVsbH12YXIgdyx4PWk\/dGhpcy5yZW5kZXJQYWdlSW5mbyh0aGlzLnByb3BzKTpudWxsLFM9YT90aGlzLnJlbmRlclBhZ2VTaXplT3B0aW9ucyh0aGlzLnByb3BzKTpudWxsLFA9bCsxLEM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdDw9Nj9wZShBcnJheSh0KSkubWFwKChmdW5jdGlvbihlLHQpe3JldHVybiB0KzF9KSk6ZTw9ND9bMSwyLDMsNCw1LHRdOnQtZTwzP1sxLHQtMyx0LTIsdC0xLHRdOlsxLGUtMSxlLGUrMSx0XX0oUCxzKTtpZigibnVtYmVycyI9PT1uKXt2YXIgTz1bXTtDLmZvckVhY2goKGZ1bmN0aW9uKHQscil7dmFyIG49UD09PXQsYT1vLmEuY3JlYXRlRWxlbWVudChiZSx7a2V5OnQsaXNDdXJyZW50Om4sb25DbGljazplLmNoYW5nZVBhZ2UuYmluZChudWxsLHQpLCJhcmlhLWxhYmVsIjpYKGcucGFnZU51bWJlckxhYmVsLHtwYWdlOnR9KSsobj8iICI6IiIpLCJhcmlhLWN1cnJlbnQiOm4\/InBhZ2UiOm51bGx9LHQpO3QtQ1tyLTFdPjEmJk8ucHVzaChvLmEuY3JlYXRlRWxlbWVudCgic3BhbiIse2NsYXNzTmFtZToicnQtcGFnZS1lbGxpcHNpcyIsa2V5OiJlbGxpcHNpcy0iLmNvbmNhdCh0KSxyb2xlOiJzZXBhcmF0b3IifSwiLi4uIikpLE8ucHVzaChhKX0pKSx3PU99ZWxzZXt2YXIgaz0ianVtcCI9PT1uP3RoaXMucmVuZGVyUGFnZUp1bXAodGhpcy5nZXRQYWdlSnVtcFByb3BlcnRpZXMoKSk6UCxUPU1hdGgubWF4KHMsMSk7dz1vLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJydC1wYWdlLW51bWJlcnMifSxYKGcucGFnZU51bWJlcnMse3BhZ2U6ayxwYWdlczpUfSkpfXZhciBqPW8uYS5jcmVhdGVFbGVtZW50KGJlLHtjbGFzc05hbWU6InJ0LXByZXYtYnV0dG9uIixvbkNsaWNrOmZ1bmN0aW9uKCl7dSYmZS5jaGFuZ2VQYWdlKFAtMSl9LGRpc2FibGVkOiF1LCJhcmlhLWRpc2FibGVkIjp1P251bGw6InRydWUiLCJhcmlhLWxhYmVsIjpnLnBhZ2VQcmV2aW91c0xhYmVsfSxnLnBhZ2VQcmV2aW91cyksRT1vLmEuY3JlYXRlRWxlbWVudChiZSx7Y2xhc3NOYW1lOiJydC1uZXh0LWJ1dHRvbiIsb25DbGljazpmdW5jdGlvbigpe2MmJmUuY2hhbmdlUGFnZShQKzEpfSxkaXNhYmxlZDohYywiYXJpYS1kaXNhYmxlZCI6Yz9udWxsOiJ0cnVlIiwiYXJpYS1sYWJlbCI6Zy5wYWdlTmV4dExhYmVsfSxnLnBhZ2VOZXh0KTtyZXR1cm4gby5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZTp0ZShmLCJydC1wYWdpbmF0aW9uIixKKHAucGFnaW5hdGlvblN0eWxlKSksc3R5bGU6ZH0sby5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToicnQtcGFnaW5hdGlvbi1pbmZvIn0seCxTKSxvLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJydC1wYWdpbmF0aW9uLW5hdiJ9LGosdyxFKSl9fV0pJiZsZSh0LnByb3RvdHlwZSxyKSxuJiZsZSh0LG4pLGl9KG8uYS5Db21wb25lbnQpO2Z1bmN0aW9uIHZlKGUpe3JldHVybih2ZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0pKGUpfWZ1bmN0aW9uIHdlKCl7cmV0dXJuKHdlPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciByPWFyZ3VtZW50c1t0XTtmb3IodmFyIG4gaW4gcilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocixuKSYmKGVbbl09cltuXSl9cmV0dXJuIGV9KS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24geGUoZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIFRlKGUpfShlKXx8ZnVuY3Rpb24oZSl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoZSkpcmV0dXJuIEFycmF5LmZyb20oZSl9KGUpfHxrZShlKXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBTZShlLHQpe3ZhciByPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7dCYmKG49bi5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSksci5wdXNoLmFwcGx5KHIsbil9cmV0dXJuIHJ9ZnVuY3Rpb24gUGUoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIHI9bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fTt0JTI\/U2UoT2JqZWN0KHIpLCEwKS5mb3JFYWNoKChmdW5jdGlvbih0KXtDZShlLHQsclt0XSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM\/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhyKSk6U2UoT2JqZWN0KHIpKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iocix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gQ2UoZSx0LHIpe3JldHVybiB0IGluIGU\/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6cixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09cixlfWZ1bmN0aW9uIE9lKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgU3ltYm9sfHwhKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoZSkpKXJldHVybjt2YXIgcj1bXSxuPSEwLGE9ITEsbz12b2lkIDA7dHJ5e2Zvcih2YXIgaSxsPWVbU3ltYm9sLml0ZXJhdG9yXSgpOyEobj0oaT1sLm5leHQoKSkuZG9uZSkmJihyLnB1c2goaS52YWx1ZSksIXR8fHIubGVuZ3RoIT09dCk7bj0hMCk7fWNhdGNoKGUpe2E9ITAsbz1lfWZpbmFsbHl7dHJ5e258fG51bGw9PWwucmV0dXJufHxsLnJldHVybigpfWZpbmFsbHl7aWYoYSl0aHJvdyBvfX1yZXR1cm4gcn0oZSx0KXx8a2UoZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIGtlKGUsdCl7aWYoZSl7aWYoInN0cmluZyI9PXR5cGVvZiBlKXJldHVybiBUZShlLHQpO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PXImJmUuY29uc3RydWN0b3ImJihyPWUuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1yfHwiU2V0Ij09PXI\/QXJyYXkuZnJvbShlKToiQXJndW1lbnRzIj09PXJ8fC9eKD86VWl8SSludCg\/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk\/QXJyYXkkLy50ZXN0KHIpP1RlKGUsdCk6dm9pZCAwfX1mdW5jdGlvbiBUZShlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgcj0wLG49bmV3IEFycmF5KHQpO3I8dDtyKyspbltyXT1lW3JdO3JldHVybiBufWZ1bmN0aW9uIGplKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgcixuLGE9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciByLG4sYT17fSxvPU9iamVjdC5rZXlzKGUpO2ZvcihuPTA7bjxvLmxlbmd0aDtuKyspcj1vW25dLHQuaW5kZXhPZihyKT49MHx8KGFbcl09ZVtyXSk7cmV0dXJuIGF9KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iobj0wO248by5sZW5ndGg7bisrKXI9b1tuXSx0LmluZGV4T2Yocik+PTB8fE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHIpJiYoYVtyXT1lW3JdKX1yZXR1cm4gYX1mdW5jdGlvbiBFZShlLHQpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbj10W3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbi5rZXksbil9fWZ1bmN0aW9uIFJlKGUsdCl7cmV0dXJuKFJlPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5fX3Byb3RvX189dCxlfSkoZSx0KX1mdW5jdGlvbiBOZShlKXt2YXIgdD1mdW5jdGlvbigpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0KXJldHVybiExO2lmKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLFtdLChmdW5jdGlvbigpe30pKSksITB9Y2F0Y2goZSl7cmV0dXJuITF9fSgpO3JldHVybiBmdW5jdGlvbigpe3ZhciByLG49RGUoZSk7aWYodCl7dmFyIGE9RGUodGhpcykuY29uc3RydWN0b3I7cj1SZWZsZWN0LmNvbnN0cnVjdChuLGFyZ3VtZW50cyxhKX1lbHNlIHI9bi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIEFlKHRoaXMscil9fWZ1bmN0aW9uIEFlKGUsdCl7cmV0dXJuIXR8fCJvYmplY3QiIT09dmUodCkmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2Z1bmN0aW9uKGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZX0oZSk6dH1mdW5jdGlvbiBEZShlKXtyZXR1cm4oRGU9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0pKGUpfXllLmRlZmF1bHRQcm9wcz17cGFnaW5hdGlvblR5cGU6Im51bWJlcnMiLGF1dG9IaWRlUGFnaW5hdGlvbjohMCxzaG93UGFnZUluZm86ITAsbGFuZ3VhZ2U6cX07dmFyIHplPWZ1bmN0aW9uKGUpe3ZhciB0PWUuc2VsZWN0VHlwZSxyPWUuY2hlY2tlZCxuPWUubGFiZWwsYT1lLnJvd3MsaT1lLnJvdyxsPWUub25DbGljaztyZXR1cm4gby5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToicnQtc2VsZWN0In0sby5hLmNyZWF0ZUVsZW1lbnQoImlucHV0Iix7dHlwZTp0fHwiY2hlY2tib3giLGNsYXNzTmFtZToicnQtc2VsZWN0LWlucHV0IiwiYXJpYS1sYWJlbCI6bixjaGVja2VkOnIsb25DbGljazpmdW5jdGlvbihlKXtpZihlLnN0b3BQcm9wYWdhdGlvbigpLGEpe3ZhciB0PWEubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZS5faW5kZXh9KSk7bCh0LCFyKX1lbHNlIGlmKGkpe3ZhciBuPWkuX2luZGV4O2wobil9fSxvbkNoYW5nZTpmdW5jdGlvbigpe319KSwi4oCLIil9O2Z1bmN0aW9uIF9lKGUpe3JldHVybihfZT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0pKGUpfWZ1bmN0aW9uIEZlKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gTWUoZSx0KXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIG49dFtyXTtuLmVudW1lcmFibGU9bi5lbnVtZXJhYmxlfHwhMSxuLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gbiYmKG4ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4ua2V5LG4pfX1mdW5jdGlvbiBJZShlLHQpe3JldHVybihJZT1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuX19wcm90b19fPXQsZX0pKGUsdCl9ZnVuY3Rpb24gTGUoZSl7dmFyIHQ9ZnVuY3Rpb24oKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSxbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKGUpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcixuPUtlKGUpO2lmKHQpe3ZhciBhPUtlKHRoaXMpLmNvbnN0cnVjdG9yO3I9UmVmbGVjdC5jb25zdHJ1Y3Qobixhcmd1bWVudHMsYSl9ZWxzZSByPW4uYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBXZSh0aGlzLHIpfX1mdW5jdGlvbiBXZShlLHQpe3JldHVybiF0fHwib2JqZWN0IiE9PV9lKHQpJiYiZnVuY3Rpb24iIT10eXBlb2YgdD9mdW5jdGlvbihlKXtpZih2b2lkIDA9PT1lKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIGV9KGUpOnR9ZnVuY3Rpb24gS2UoZSl7cmV0dXJuKEtlPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9KShlKX12YXIgQmU9ZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJkllKGUsdCl9KG8sZSk7dmFyIHQscixuLGE9TGUobyk7ZnVuY3Rpb24gbygpe3JldHVybiBGZSh0aGlzLG8pLGEuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiB0PW8sKHI9W3trZXk6ImNvbXBvbmVudERpZE1vdW50Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc3RhdGljUmVuZGVyKCl9fSx7a2V5OiJzdGF0aWNSZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7d2luZG93LkhUTUxXaWRnZXRzJiYoby50aHJvdHRsZWQ\/by5sYXN0Q2FsbD0hMDood2luZG93LkhUTUxXaWRnZXRzLnN0YXRpY1JlbmRlcigpLG8udGhyb3R0bGVkPSEwLHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7by5sYXN0Q2FsbCYmd2luZG93LkhUTUxXaWRnZXRzLnN0YXRpY1JlbmRlcigpLG8udGhyb3R0bGVkPSExLG8ubGFzdENhbGw9ITF9KSkpKX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcm9wcy5jaGlsZHJlbn19XSkmJk1lKHQucHJvdG90eXBlLHIpLG4mJk1lKHQsbiksb30oby5hLkNvbXBvbmVudCk7ZnVuY3Rpb24gSGUoZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIEdlKGUpfShlKXx8ZnVuY3Rpb24oZSl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoZSkpcmV0dXJuIEFycmF5LmZyb20oZSl9KGUpfHxmdW5jdGlvbihlLHQpe2lmKCFlKXJldHVybjtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIEdlKGUsdCk7dmFyIHI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpOyJPYmplY3QiPT09ciYmZS5jb25zdHJ1Y3RvciYmKHI9ZS5jb25zdHJ1Y3Rvci5uYW1lKTtpZigiTWFwIj09PXJ8fCJTZXQiPT09cilyZXR1cm4gQXJyYXkuZnJvbShlKTtpZigiQXJndW1lbnRzIj09PXJ8fC9eKD86VWl8SSludCg\/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk\/QXJyYXkkLy50ZXN0KHIpKXJldHVybiBHZShlLHQpfShlKXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBHZShlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgcj0wLG49bmV3IEFycmF5KHQpO3I8dDtyKyspbltyXT1lW3JdO3JldHVybiBufWZ1bmN0aW9uIFVlKGUpe3JldHVybiAwPT09KGU9cWUoZSkpLmxlbmd0aD8iIjokZShlLnJlZHVjZSgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSt0fSksMCksMTIpfWZ1bmN0aW9uIFZlKGUpe3JldHVybiAwPT09KGU9cWUoZSkpLmxlbmd0aD8iIjokZShVZShlKS9lLmxlbmd0aCwxMil9dmFyIEplPXttZWFuOlZlLHN1bTpVZSxtYXg6ZnVuY3Rpb24oZSl7cmV0dXJuIDA9PT0oZT1xZShlKSkubGVuZ3RoPyIiOk1hdGgubWF4LmFwcGx5KG51bGwsZSl9LG1pbjpmdW5jdGlvbihlKXtyZXR1cm4gMD09PShlPXFlKGUpKS5sZW5ndGg\/IiI6TWF0aC5taW4uYXBwbHkobnVsbCxlKX0sbWVkaWFuOmZ1bmN0aW9uKGUpe3JldHVybiAwPT09KGU9cWUoZSkpLmxlbmd0aD8iIjooZS5zb3J0KChmdW5jdGlvbihlLHQpe3JldHVybiBlLXR9KSksZS5sZW5ndGglMj09MT9lWyhlLmxlbmd0aC0xKS8yXTpWZShlLnNsaWNlKGUubGVuZ3RoLzItMSxlLmxlbmd0aC8yKzEpKSl9LGNvdW50OmZ1bmN0aW9uKGUpe3JldHVybiBlLmxlbmd0aH0sdW5pcXVlOmZ1bmN0aW9uKGUpe3JldHVybiBIZShuZXcgU2V0KGUpKS5qb2luKCIsICIpfSxmcmVxdWVuY3k6ZnVuY3Rpb24oZSl7dmFyIHQ9e307cmV0dXJuIGUuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dFtlXT10W2VdfHwwLHRbZV0rPTF9KSksT2JqZWN0LmtleXModCkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZSsodFtlXT4xPyIgKCIuY29uY2F0KHRbZV0sIikiKToiIil9KSkuam9pbigiLCAiKX19O2Z1bmN0aW9uICRlKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTozO2lmKCFOdW1iZXIuaXNGaW5pdGUoZSkpcmV0dXJuIGU7dD10PjA\/dDowO3ZhciByPU1hdGgucG93KDEwLHQpO3JldHVybiBNYXRoLnNpZ24oZSkqTWF0aC5yb3VuZChNYXRoLmFicyhlKSpyKS9yfWZ1bmN0aW9uIHFlKGUpe3JldHVybiBlLm1hcChYZSkuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGV9KSl9ZnVuY3Rpb24gWGUoZSl7cmV0dXJuKG51bGw9PWV8fHZvaWQgMD09PWV8fFllKGUpKSYmKGU9bnVsbCksIkluZiI9PT1lJiYoZT0xLzApLCItSW5mIj09PWUmJihlPS0xLzApLCJzdHJpbmciPT10eXBlb2YgZSYmKGU9TnVtYmVyKGUpKSxlfWZ1bmN0aW9uIFllKGUpe3JldHVybiJOQSI9PT1lfHwiTmFOIj09PWV9ZnVuY3Rpb24gWmUoZSx0KXt2YXIgcj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihuPW4uZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLHIucHVzaC5hcHBseShyLG4pfXJldHVybiByfWZ1bmN0aW9uIFFlKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciByPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP1plKE9iamVjdChyKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZXQoZSx0LHJbdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMocikpOlplKE9iamVjdChyKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIsdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIGV0KGUsdCxyKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOnIsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPXIsZX1mdW5jdGlvbiB0dChlLHQpe3ZhciByO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgU3ltYm9sfHxudWxsPT1lW1N5bWJvbC5pdGVyYXRvcl0pe2lmKEFycmF5LmlzQXJyYXkoZSl8fChyPWZ1bmN0aW9uKGUsdCl7aWYoIWUpcmV0dXJuO2lmKCJzdHJpbmciPT10eXBlb2YgZSlyZXR1cm4gcnQoZSx0KTt2YXIgcj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7Ik9iamVjdCI9PT1yJiZlLmNvbnN0cnVjdG9yJiYocj1lLmNvbnN0cnVjdG9yLm5hbWUpO2lmKCJNYXAiPT09cnx8IlNldCI9PT1yKXJldHVybiBBcnJheS5mcm9tKGUpO2lmKCJBcmd1bWVudHMiPT09cnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QocikpcmV0dXJuIHJ0KGUsdCl9KGUpKXx8dCYmZSYmIm51bWJlciI9PXR5cGVvZiBlLmxlbmd0aCl7ciYmKGU9cik7dmFyIG49MCxhPWZ1bmN0aW9uKCl7fTtyZXR1cm57czphLG46ZnVuY3Rpb24oKXtyZXR1cm4gbj49ZS5sZW5ndGg\/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOmVbbisrXX19LGU6ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZjphfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIG8saT0hMCxsPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1lW1N5bWJvbC5pdGVyYXRvcl0oKX0sbjpmdW5jdGlvbigpe3ZhciBlPXIubmV4dCgpO3JldHVybiBpPWUuZG9uZSxlfSxlOmZ1bmN0aW9uKGUpe2w9ITAsbz1lfSxmOmZ1bmN0aW9uKCl7dHJ5e2l8fG51bGw9PXIucmV0dXJufHxyLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyBvfX19fWZ1bmN0aW9uIHJ0KGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciByPTAsbj1uZXcgQXJyYXkodCk7cjx0O3IrKyluW3JdPWVbcl07cmV0dXJuIG59ZnVuY3Rpb24gbnQoZSx0KXt0LmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciByPSh0PVFlKHt9LHQpKS5jb2x1bW5zO3QuY29sdW1ucz1bXSxlPWUucmVkdWNlKChmdW5jdGlvbihlLG4pe3JldHVybiBuLmlkPT09clswXT8oZS5wdXNoKHQpLHQuY29sdW1ucy5wdXNoKG4pKTpyLmluY2x1ZGVzKG4uaWQpP3QuY29sdW1ucy5wdXNoKG4pOmUucHVzaChuKSxlfSksW10pfSkpO3ZhciByLG49W107cmV0dXJuIGUuZm9yRWFjaCgoZnVuY3Rpb24oZSl7ZS5jb2x1bW5zPyhuLnB1c2goZSkscj1udWxsKToocnx8KHI9e2NvbHVtbnM6W119LG4ucHVzaChyKSksci5jb2x1bW5zLnB1c2goZSkpfSkpLGU9bn1mdW5jdGlvbiBhdCgpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSx0PWUudHlwZSxyPWUubmFMYXN0O3JldHVybiBmdW5jdGlvbihlLG4sYSl7cmV0dXJuIm51bWVyaWMiPT09dD8oZT1YZShlKSxuPVhlKG4pKTooZT0ic3RyaW5nIj09dHlwZW9mIGU\/ZS50b0xvd2VyQ2FzZSgpOmUsbj0ic3RyaW5nIj09dHlwZW9mIG4\/bi50b0xvd2VyQ2FzZSgpOm4pLGU9PT1uPzA6bnVsbD09ZT9yP2E\/LTE6MTotMTpudWxsPT1uP3I\/YT8xOi0xOjE6ZT5uPzE6ZTxuPy0xOjB9fWZ1bmN0aW9uIG90KGUsdCl7dmFyIHI9dC5wcmVmaXgsbj10LnN1ZmZpeCxhPXQuZGlnaXRzLG89dC5zZXBhcmF0b3JzLGk9dC5wZXJjZW50LGw9dC5jdXJyZW5jeSxzPXQuZGF0ZXRpbWUsdT10LmRhdGUsYz10LnRpbWUsZj10LmhvdXIxMixkPXQubG9jYWxlcztpZigibnVtYmVyIj09dHlwZW9mIGUmJihvfHxpfHxsfHxudWxsIT1hfHxkKSl7dmFyIHA9e3VzZUdyb3VwaW5nOiEhb307aSYmKHAuc3R5bGU9InBlcmNlbnQiKSxsPyhwLnN0eWxlPSJjdXJyZW5jeSIscC5jdXJyZW5jeT1sKTpudWxsIT1hPyhwLm1pbmltdW1GcmFjdGlvbkRpZ2l0cz1NYXRoLm1pbihhLDE4KSxwLm1heGltdW1GcmFjdGlvbkRpZ2l0cz1NYXRoLm1pbihhLDE4KSk6cC5tYXhpbXVtRnJhY3Rpb25EaWdpdHM9MTgsZT1lLnRvTG9jYWxlU3RyaW5nKGR8fHZvaWQgMCxwKX1pZihzfHx1fHxjKXtkPWR8fHZvaWQgMDt2YXIgZz17fTtudWxsIT1mJiYoZy5ob3VyMTI9Zikscz9lPW5ldyBEYXRlKGUpLnRvTG9jYWxlU3RyaW5nKGQsZyk6dT8oIWUuaW5jbHVkZXMoIi0iKXx8ZS5pbmNsdWRlcygiVCIpfHxlLmluY2x1ZGVzKCJaIil8fChlPWUucmVwbGFjZSgvLS9nLCIvIikpLGU9bmV3IERhdGUoZSkudG9Mb2NhbGVEYXRlU3RyaW5nKGQsZykpOmMmJihlPW5ldyBEYXRlKGUpLnRvTG9jYWxlVGltZVN0cmluZyhkLGcpKX1yZXR1cm4gbnVsbCE9ciYmKGU9bnVsbCE9ZT9lOiIiLGU9U3RyaW5nKHIpK2UpLG51bGwhPW4mJihlPW51bGwhPWU\/ZToiIixlKz1TdHJpbmcobikpLGV9ZnVuY3Rpb24gaXQoZSl7dmFyIHQ9bmV3IFJlZ0V4cCgiXiIrb2UoZSksImkiKTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQudGVzdChlKX19ZnVuY3Rpb24gbHQoZSl7dmFyIHQ9bmV3IFJlZ0V4cChvZShlKSwiaSIpO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gdC50ZXN0KGUpfX1yKDE1KSxyKDE4KTtmdW5jdGlvbiBzdChlKXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gY3QoZSl9KGUpfHxmdW5jdGlvbihlKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChlKSlyZXR1cm4gQXJyYXkuZnJvbShlKX0oZSl8fHV0KGUpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfSgpfWZ1bmN0aW9uIHV0KGUsdCl7aWYoZSl7aWYoInN0cmluZyI9PXR5cGVvZiBlKXJldHVybiBjdChlLHQpO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PXImJmUuY29uc3RydWN0b3ImJihyPWUuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1yfHwiU2V0Ij09PXI\/QXJyYXkuZnJvbShlKToiQXJndW1lbnRzIj09PXJ8fC9eKD86VWl8SSludCg\/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk\/QXJyYXkkLy50ZXN0KHIpP2N0KGUsdCk6dm9pZCAwfX1mdW5jdGlvbiBjdChlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgcj0wLG49bmV3IEFycmF5KHQpO3I8dDtyKyspbltyXT1lW3JdO3JldHVybiBufWZ1bmN0aW9uIGZ0KGUpe3JldHVybihmdD0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0pKGUpfWZ1bmN0aW9uIGR0KGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgcixuLGE9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciByLG4sYT17fSxvPU9iamVjdC5rZXlzKGUpO2ZvcihuPTA7bjxvLmxlbmd0aDtuKyspcj1vW25dLHQuaW5kZXhPZihyKT49MHx8KGFbcl09ZVtyXSk7cmV0dXJuIGF9KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iobj0wO248by5sZW5ndGg7bisrKXI9b1tuXSx0LmluZGV4T2Yocik+PTB8fE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLHIpJiYoYVtyXT1lW3JdKX1yZXR1cm4gYX1mdW5jdGlvbiBwdChlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGd0KGUsdCl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBuPXRbcl07bi5lbnVtZXJhYmxlPW4uZW51bWVyYWJsZXx8ITEsbi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIG4mJihuLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLmtleSxuKX19ZnVuY3Rpb24gaHQoZSx0LHIpe3JldHVybiB0JiZndChlLnByb3RvdHlwZSx0KSxyJiZndChlLHIpLGV9ZnVuY3Rpb24gbXQoZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmYnQoZSx0KX1mdW5jdGlvbiBidChlLHQpe3JldHVybihidD1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuX19wcm90b19fPXQsZX0pKGUsdCl9ZnVuY3Rpb24geXQoZSl7dmFyIHQ9ZnVuY3Rpb24oKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSxbXSwoZnVuY3Rpb24oKXt9KSkpLCEwfWNhdGNoKGUpe3JldHVybiExfX0oKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcixuPXh0KGUpO2lmKHQpe3ZhciBhPXh0KHRoaXMpLmNvbnN0cnVjdG9yO3I9UmVmbGVjdC5jb25zdHJ1Y3Qobixhcmd1bWVudHMsYSl9ZWxzZSByPW4uYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiB2dCh0aGlzLHIpfX1mdW5jdGlvbiB2dChlLHQpe3JldHVybiF0fHwib2JqZWN0IiE9PWZ0KHQpJiYiZnVuY3Rpb24iIT10eXBlb2YgdD93dChlKTp0fWZ1bmN0aW9uIHd0KGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gZX1mdW5jdGlvbiB4dChlKXtyZXR1cm4oeHQ9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbihlKXtyZXR1cm4gZS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKX0pKGUpfWZ1bmN0aW9uIFN0KCl7cmV0dXJuKFN0PU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciByPWFyZ3VtZW50c1t0XTtmb3IodmFyIG4gaW4gcilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocixuKSYmKGVbbl09cltuXSl9cmV0dXJuIGV9KS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZnVuY3Rpb24gUHQoZSx0KXt2YXIgcj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihuPW4uZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSkpLHIucHVzaC5hcHBseShyLG4pfXJldHVybiByfWZ1bmN0aW9uIEN0KGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciByPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e307dCUyP1B0KE9iamVjdChyKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T3QoZSx0LHJbdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMocikpOlB0KE9iamVjdChyKSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIsdCkpfSkpfXJldHVybiBlfWZ1bmN0aW9uIE90KGUsdCxyKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOnIsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPXIsZX12YXIga3Q9ZnVuY3Rpb24oZSl7cmV0dXJue3JvbGU6InRhYmxlIixjbGFzc05hbWU6SihlLnRoZW1lLnRhYmxlU3R5bGUpfX0sVHQ9ZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXt9O24ucm9sZT1yLnNlbGVjdGFibGU\/ImNlbGwiOiJjb2x1bW5oZWFkZXIiLG4uY2xhc3NOYW1lPUooZS50aGVtZS5oZWFkZXJTdHlsZSk7dmFyIGE9cmUoci5zb3J0YWJsZSxlLnNvcnRhYmxlKTtpZihhKXt2YXIgbz1lLnNvcnRlZC5maW5kKChmdW5jdGlvbihlKXtyZXR1cm4gZS5pZD09PXIuaWR9KSksaT1vP28uZGVzYz8iZGVzY2VuZGluZyI6ImFzY2VuZGluZyI6Im5vbmUiLGw9cmUoci5kZWZhdWx0U29ydERlc2MsZS5kZWZhdWx0U29ydERlc2MpPyJkZXNjZW5kaW5nIjoiYXNjZW5kaW5nIixzPWUuY3VycmVudGx5UmVzaXppbmcmJmUuY3VycmVudGx5UmVzaXppbmcuaWQ9PT1yLmlkO249Q3QoQ3Qoe30sbikse30seyJhcmlhLWxhYmVsIjpYKGUubGFuZ3VhZ2Uuc29ydExhYmVsLHtuYW1lOnIubmFtZX0pLCJhcmlhLXNvcnQiOmksZGVmYXVsdFNvcnRPcmRlcjpsLGlzU29ydGFibGU6YSxpc1NvcnRlZDohIW8saXNSZXNpemluZzpzfSl9cmV0dXJuIG59LGp0PWZ1bmN0aW9uKGUsdCxyKXt2YXIgbj17fTtpZihyLmNvbHVtbnMuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuIGUucGl2b3RlZH0pKSl7dmFyIGE9ci5jb2x1bW5zO2EucmVkdWNlKChmdW5jdGlvbihlLHQpe3JldHVybiBlJiZlPT09dC5wYXJlbnRDb2x1bW4mJnQucGFyZW50Q29sdW1ufSksYVswXS5wYXJlbnRDb2x1bW4pLkhlYWRlcnx8KG4uSGVhZGVyUGl2b3RlZD1lLmxhbmd1YWdlLmRlZmF1bHRHcm91cEhlYWRlcil9cmV0dXJuIHIuSGVhZGVyP249Q3QoQ3Qoe30sbikse30seyJhcmlhLWNvbHNwYW4iOnIuY29sdW1ucy5sZW5ndGgscm9sZToiY29sdW1uaGVhZGVyIixjbGFzc05hbWU6dGUoInJ0LXRoLWdyb3VwIixyLmNsYXNzTmFtZSxKKGUudGhlbWUuZ3JvdXBIZWFkZXJTdHlsZSkpfSk6bi5jbGFzc05hbWU9dGUoInJ0LXRoLWdyb3VwLW5vbmUiLEooZS50aGVtZS5ncm91cEhlYWRlclN0eWxlKSksbn0sRXQ9ZnVuY3Rpb24oKXtyZXR1cm57cm9sZToicm93In19LFJ0PWZ1bmN0aW9uKCl7cmV0dXJue3JvbGU6InJvdyJ9fSxOdD1mdW5jdGlvbihlKXtyZXR1cm57cm9sZToicm93IixjbGFzc05hbWU6dGUoSihlLnRoZW1lLnJvd1N0eWxlKSl9fSxBdD1mdW5jdGlvbihlKXtyZXR1cm57cm9sZToiY2VsbCIsY2xhc3NOYW1lOnRlKCJydC10ZC1maWx0ZXIiLEooZS50aGVtZS5maWx0ZXJDZWxsU3R5bGUpKX19LER0PWZ1bmN0aW9uKGUsdCl7dmFyIHI9e307cmV0dXJuIHIuY2xhc3NOYW1lPUooZS50aGVtZS5yb3dHcm91cFN0eWxlKSx0fHwoclsiYXJpYS1oaWRkZW4iXT0idHJ1ZSIpLHJ9LHp0PWZ1bmN0aW9uKGUsdCl7dmFyIHI9e307cmV0dXJuIHIuY2xhc3NOYW1lPUooZS50aGVtZS5yb3dTdHlsZSksdD8oci5yb2xlPSJyb3ciLHIpOnJ9LF90PWZ1bmN0aW9uKGUsdCl7dmFyIHI9e307cmV0dXJuIHIuY2xhc3NOYW1lPUooZS50aGVtZS5jZWxsU3R5bGUpLHQ\/KHIucm9sZT0iY2VsbCIscik6cn0sRnQ9ZnVuY3Rpb24oKXtyZXR1cm57cm9sZToicm93In19LE10PWZ1bmN0aW9uKGUpe3JldHVybntyb2xlOiJjZWxsIixjbGFzc05hbWU6dGUoInJ0LXRmb290LXRkIixKKGUudGhlbWUuZm9vdGVyU3R5bGUpKX19LEl0PWkuUmVhY3RUYWJsZURlZmF1bHRzLlRoZWFkQ29tcG9uZW50LEx0PWkuUmVhY3RUYWJsZURlZmF1bHRzLlRmb290Q29tcG9uZW50O09iamVjdC5hc3NpZ24oaS5SZWFjdFRhYmxlRGVmYXVsdHMse1RoZWFkQ29tcG9uZW50OmZ1bmN0aW9uKGUpe3JldHVybiBvLmEuY3JlYXRlRWxlbWVudChJdCxTdCh7cm9sZToicm93Z3JvdXAifSxlKSl9LFRmb290Q29tcG9uZW50OmZ1bmN0aW9uKGUpe3JldHVybiBvLmEuY3JlYXRlRWxlbWVudChMdCxTdCh7cm9sZToicm93Z3JvdXAifSxlKSl9fSk7dmFyIFd0PWkuUmVhY3RUYWJsZURlZmF1bHRzLlRoQ29tcG9uZW50LEt0PWZ1bmN0aW9uKGUpe210KHIsZSk7dmFyIHQ9eXQocik7ZnVuY3Rpb24gcihlKXt2YXIgbjtyZXR1cm4gcHQodGhpcyxyKSwobj10LmNhbGwodGhpcyxlKSkuc3RhdGU9e3Nob3dGb2N1czohMSxjbGlja2VkOiExfSxufXJldHVybiBodChyLFt7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMucHJvcHMscj10LkhlYWRlclBpdm90ZWQsbj10LmRlZmF1bHRTb3J0T3JkZXIsYT10LmlzU29ydGFibGUsbz10LmlzU29ydGVkLGk9dC5pc1Jlc2l6aW5nLGw9ZHQodCxbIkhlYWRlclBpdm90ZWQiLCJkZWZhdWx0U29ydE9yZGVyIiwiaXNTb3J0YWJsZSIsImlzU29ydGVkIiwiaXNSZXNpemluZyJdKTtpZihyJiYobC5jaGlsZHJlbj1yKSxhKXt2YXIgcz1sLnRvZ2dsZVNvcnQsdT1mdW5jdGlvbih0KXtzJiZzKHQpLGUuc2V0U3RhdGUoe3Nob3dGb2N1czohMX0pfTtsPUN0KEN0KHt9LGwpLHt9LHt0b2dnbGVTb3J0OnUsb25LZXlQcmVzczpmdW5jdGlvbihlKXt2YXIgdD1lLndoaWNofHxlLmtleUNvZGU7MTMhPT10JiYzMiE9PXR8fHUoZSl9LG9uTW91c2VEb3duOmZ1bmN0aW9uKHQpeyh0LmRldGFpbD4xfHx0LnNoaWZ0S2V5KSYmdC5wcmV2ZW50RGVmYXVsdCgpLGUuc2V0U3RhdGUoe2NsaWNrZWQ6ITB9KX0sb25Gb2N1czpmdW5jdGlvbigpe2Uuc3RhdGUuY2xpY2tlZHx8b3x8aXx8ZS5zZXRTdGF0ZSh7c2hvd0ZvY3VzOiEwfSl9LG9uQmx1cjpmdW5jdGlvbigpe2Uuc2V0U3RhdGUoe3Nob3dGb2N1czohMSxjbGlja2VkOiExfSl9LHRhYkluZGV4OiIwIiwiZGF0YS1zb3J0LWhpbnQiOnRoaXMuc3RhdGUuc2hvd0ZvY3VzP246dm9pZCAwfSl9cmV0dXJuIFd0KGwpfX1dKSxyfShvLmEuQ29tcG9uZW50KTtPYmplY3QuYXNzaWduKGkuUmVhY3RUYWJsZURlZmF1bHRzLHtUaENvbXBvbmVudDpLdH0pO3ZhciBCdD1mdW5jdGlvbihlKXtyZXR1cm57c3RhdGU6ZX19LEh0PWkuUmVhY3RUYWJsZURlZmF1bHRzLlRib2R5Q29tcG9uZW50LEd0PWkuUmVhY3RUYWJsZURlZmF1bHRzLk5vRGF0YUNvbXBvbmVudDtPYmplY3QuYXNzaWduKGkuUmVhY3RUYWJsZURlZmF1bHRzLHtUYm9keUNvbXBvbmVudDpmdW5jdGlvbihlKXt2YXIgdD1lLnN0YXRlLHI9ZS5jbGFzc05hbWUsbj1lLmNoaWxkcmVuLGE9ZHQoZSxbInN0YXRlIiwiY2xhc3NOYW1lIiwiY2hpbGRyZW4iXSksaT10LnBhZ2VSb3dzLGw9dC50aGVtZSxzPXQubGFuZ3VhZ2UsdT0haS5sZW5ndGgmJm8uYS5jcmVhdGVFbGVtZW50KEd0LG51bGwscy5ub0RhdGEpO3JldHVybiByPXU\/dGUociwicnQtdGJvZHktbm9EYXRhIik6cixyPXRlKHIsSihsLnRhYmxlQm9keVN0eWxlKSksby5hLmNyZWF0ZUVsZW1lbnQoSHQsU3Qoe3JvbGU6InJvd2dyb3VwIixjbGFzc05hbWU6cn0sYSksbix1KX0sTm9EYXRhQ29tcG9uZW50OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9fSksT2JqZWN0LmFzc2lnbihpLlJlYWN0VGFibGVEZWZhdWx0cyx7RmlsdGVyQ29tcG9uZW50OmZ1bmN0aW9uKGUpe3ZhciB0PWUuY29sdW1uLHI9ZS5maWx0ZXIsbj1lLm9uQ2hhbmdlLGE9dC5uYW1lLGk9dC50aGVtZSxsPXQubGFuZ3VhZ2U7cmV0dXJuIG8uYS5jcmVhdGVFbGVtZW50KCJpbnB1dCIse3R5cGU6InRleHQiLGNsYXNzTmFtZTp0ZSgicnQtZmlsdGVyIixKKGkuZmlsdGVySW5wdXRTdHlsZSkpLHN0eWxlOnt3aWR0aDoiMTAwJSJ9LHZhbHVlOnI\/ci52YWx1ZToiIixvbkNoYW5nZTpmdW5jdGlvbihlKXtyZXR1cm4gbihlLnRhcmdldC52YWx1ZSl9LHBsYWNlaG9sZGVyOmwuZmlsdGVyUGxhY2Vob2xkZXIsImFyaWEtbGFiZWwiOlgobC5maWx0ZXJMYWJlbCx7bmFtZTphfSl9KX19KSxPYmplY3QuYXNzaWduKGkuUmVhY3RUYWJsZURlZmF1bHRzLHtFeHBhbmRlckNvbXBvbmVudDpmdW5jdGlvbihlKXt2YXIgdD1lLmlzRXhwYW5kZWQscj1lLmNvbHVtbixuPXIudGhlbWUsYT1yLmxhbmd1YWdlLGk9dD9hLmRldGFpbHNDb2xsYXBzZUxhYmVsOmEuZGV0YWlsc0V4cGFuZExhYmVsO3JldHVybiBvLmEuY3JlYXRlRWxlbWVudCgiYnV0dG9uIix7Y2xhc3NOYW1lOiJydC1leHBhbmRlci1idXR0b24iLCJhcmlhLWxhYmVsIjppfSxvLmEuY3JlYXRlRWxlbWVudCgic3BhbiIse2NsYXNzTmFtZTp0ZSgicnQtZXhwYW5kZXIiLHQmJiItb3BlbiIsSihuLmV4cGFuZGVyU3R5bGUpKSx0YWJJbmRleDoiLTEiLCJhcmlhLWhpZGRlbiI6InRydWUifSwi4oCiIikpfX0pO3ZhciBVdD1pLlJlYWN0VGFibGVEZWZhdWx0cy5Mb2FkaW5nQ29tcG9uZW50O09iamVjdC5hc3NpZ24oaS5SZWFjdFRhYmxlRGVmYXVsdHMse0xvYWRpbmdDb21wb25lbnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5sb2FkaW5nLHI9ZHQoZSxbImxvYWRpbmciXSk7cmV0dXJuIHQ\/VXQoQ3Qoe2xvYWRpbmc6dH0scikpOm51bGx9fSksbC5hLnByb3BUeXBlcz1wLGwuYS5wcm90b3R5cGUub2xkQ29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcz1sLmEucHJvdG90eXBlLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzLGwuYS5wcm90b3R5cGUuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHM9ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzO2U9Q3Qoe30sZSksdGhpcy5wcm9wcy5kYXRhS2V5JiZ0aGlzLnByb3BzLmRhdGFLZXk9PT1lLmRhdGFLZXkmJihlLmRhdGE9dGhpcy5wcm9wcy5kYXRhLGUuY29sdW1ucz10aGlzLnByb3BzLmNvbHVtbnMpO3JldHVyblsicGl2b3RCeSIsInNvcnRlZCIsImZpbHRlcmVkIl0uZm9yRWFjaCgoZnVuY3Rpb24odCl7SlNPTi5zdHJpbmdpZnkoci5wcm9wc1t0XSk9PT1KU09OLnN0cmluZ2lmeShlW3RdKSYmKGVbdF09ci5wcm9wc1t0XSl9KSksdGhpcy5wcm9wcy5zZWFyY2hhYmxlIT09ZS5zZWFyY2hhYmxlJiYoZS5maWx0ZXJlZD10aGlzLnN0YXRlLmZpbHRlcmVkLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIGUuaWQhPT1yLnByb3BzLnNlYXJjaEtleX0pKSksdGhpcy5vbGRDb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKGUsdCl9LGwuYS5wcm90b3R5cGUub2xkRmlsdGVyRGF0YT1sLmEucHJvdG90eXBlLmZpbHRlckRhdGEsbC5hLnByb3RvdHlwZS5maWx0ZXJEYXRhPWZ1bmN0aW9uKGUsdCxyLG4pe3ZhciBhPW47aWYodGhpcy5wcm9wcy5zZWFyY2hhYmxlKXt2YXIgbz1uLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIGUuY3JlYXRlTWF0Y2hlcn0pKSxpPXtpZDp0aGlzLnByb3BzLnNlYXJjaEtleSxmaWx0ZXJBbGw6ITAsZmlsdGVyYWJsZTohMCxmaWx0ZXJNZXRob2Q6ZnVuY3Rpb24oZSx0KXtpZighZS52YWx1ZSlyZXR1cm4gdDt2YXIgcj1vLnJlZHVjZSgoZnVuY3Rpb24odCxyKXtyZXR1cm4gdFtyLmlkXT1yLmNyZWF0ZU1hdGNoZXIoZS52YWx1ZSksdH0pLHt9KTtyZXR1cm4gdD10LmZpbHRlcigoZnVuY3Rpb24oZSl7aWYoZS5fc3ViUm93cylyZXR1cm4hMDt2YXIgdCxuPWZ1bmN0aW9uKGUsdCl7dmFyIHI7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBTeW1ib2x8fG51bGw9PWVbU3ltYm9sLml0ZXJhdG9yXSl7aWYoQXJyYXkuaXNBcnJheShlKXx8KHI9dXQoZSkpfHx0JiZlJiYibnVtYmVyIj09dHlwZW9mIGUubGVuZ3RoKXtyJiYoZT1yKTt2YXIgbj0wLGE9ZnVuY3Rpb24oKXt9O3JldHVybntzOmEsbjpmdW5jdGlvbigpe3JldHVybiBuPj1lLmxlbmd0aD97ZG9uZTohMH06e2RvbmU6ITEsdmFsdWU6ZVtuKytdfX0sZTpmdW5jdGlvbihlKXt0aHJvdyBlfSxmOmF9fXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBpdGVyYXRlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX12YXIgbyxpPSEwLGw9ITE7cmV0dXJue3M6ZnVuY3Rpb24oKXtyPWVbU3ltYm9sLml0ZXJhdG9yXSgpfSxuOmZ1bmN0aW9uKCl7dmFyIGU9ci5uZXh0KCk7cmV0dXJuIGk9ZS5kb25lLGV9LGU6ZnVuY3Rpb24oZSl7bD0hMCxvPWV9LGY6ZnVuY3Rpb24oKXt0cnl7aXx8bnVsbD09ci5yZXR1cm58fHIucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IG99fX19KG8pO3RyeXtmb3Iobi5zKCk7ISh0PW4ubigpKS5kb25lOyl7dmFyIGE9dC52YWx1ZSxpPWUuX29yaWdpbmFsW2EuaWRdO2lmKHJbYS5pZF0oaSkpcmV0dXJuITB9fWNhdGNoKGUpe24uZShlKX1maW5hbGx5e24uZigpfX0pKX19O2E9YS5jb25jYXQoaSl9aWYodGhpcy5wcm9wcy5jcm9zc3RhbGtHcm91cCl7dmFyIGw9e2lkOnRoaXMucHJvcHMuY3Jvc3N0YWxrSWQsZmlsdGVyQWxsOiEwLGZpbHRlcmFibGU6ITAsZmlsdGVyTWV0aG9kOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUudmFsdWU\/dD10LmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuISF0Ll9zdWJSb3dzfHwoISFlLnZhbHVlLmluY2x1ZGVzKHQuX2luZGV4KXx8dm9pZCAwKX0pKTp0fX07YT1hLmNvbmNhdChsKX1yZXR1cm4gdGhpcy5vbGRGaWx0ZXJEYXRhKGUsdCxyLGEpfTt2YXIgVnQsSnQsJHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zZWFyY2hWYWx1ZSxyPWUub25TZWFyY2hDaGFuZ2Usbj1lLnNlYXJjaFBsYWNlaG9sZGVyLGw9ZS5zZWFyY2hMYWJlbCxzPWUuc2VhcmNoQ2xhc3NOYW1lLHU9ZHQoZSxbInNlYXJjaFZhbHVlIiwib25TZWFyY2hDaGFuZ2UiLCJzZWFyY2hQbGFjZWhvbGRlciIsInNlYXJjaExhYmVsIiwic2VhcmNoQ2xhc3NOYW1lIl0pLGM9by5hLmNyZWF0ZUVsZW1lbnQoImlucHV0Iix7dHlwZToidGV4dCIsdmFsdWU6dCxvbkNoYW5nZTpyLGNsYXNzTmFtZTp0ZSgicnQtc2VhcmNoIixzKSxwbGFjZWhvbGRlcjpuLCJhcmlhLWxhYmVsIjpsfSk7cmV0dXJuIG8uYS5jcmVhdGVFbGVtZW50KGEuRnJhZ21lbnQsbnVsbCxjLG8uYS5jcmVhdGVFbGVtZW50KGkuUmVhY3RUYWJsZURlZmF1bHRzLlRhYmxlQ29tcG9uZW50LHUpKX0scXQ9KFZ0PWwuYSwoSnQ9ZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uIik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJlJlKGUsdCl9KGksZSk7dmFyIHQscixuLGE9TmUoaSk7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxpKSxhLmNhbGwodGhpcyxlKX1yZXR1cm4gdD1pLChyPVt7a2V5OiJyb3dTZWxlY3RvciIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5wcm9wcyxyPXQuaXNTZWxlY3RlZCxuPXQudG9nZ2xlU2VsZWN0aW9uLGE9dC5zZWxlY3RUeXBlLGk9dC5TZWxlY3RJbnB1dENvbXBvbmVudCxsPXQubGFuZ3VhZ2Uscz1yKGUuaW5kZXgpLHU9e2NoZWNrZWQ6cyxvbkNsaWNrOm4sc2VsZWN0VHlwZTphLHJvdzplLnJvdyxsYWJlbDpzP2wuZGVzZWxlY3RSb3dMYWJlbDpsLnNlbGVjdFJvd0xhYmVsfTtyZXR1cm4gby5hLmNyZWF0ZUVsZW1lbnQoaSx1KX19LHtrZXk6InN1YlJvd1NlbGVjdG9yIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnByb3BzLHI9dC5pc1NlbGVjdGVkLG49dC50b2dnbGVBbGwsYT10LnNlbGVjdFR5cGUsaT10LlNlbGVjdElucHV0Q29tcG9uZW50LGw9dC5sYW5ndWFnZTtpZigicmFkaW8iPT09YSlyZXR1cm4gbnVsbDt2YXIgcz1lLnN1YlJvd3M7aWYoIXN8fHMuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuX2FnZ3JlZ2F0ZWR9KSkpcmV0dXJuIG51bGw7dmFyIHU9cy5ldmVyeSgoZnVuY3Rpb24oZSl7cmV0dXJuIHIoZS5faW5kZXgpfSkpLGM9e2NoZWNrZWQ6dSxvbkNsaWNrOm4sc2VsZWN0VHlwZTphLHJvd3M6cyxsYWJlbDp1P2wuZGVzZWxlY3RBbGxTdWJSb3dzTGFiZWw6bC5zZWxlY3RBbGxTdWJSb3dzTGFiZWx9O3JldHVybiBvLmEuY3JlYXRlRWxlbWVudChpLGMpfX0se2tleToiaGVhZFNlbGVjdG9yIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnByb3BzLHI9dC5pc1NlbGVjdGVkLG49dC5zZWxlY3RUeXBlLGE9dC50b2dnbGVBbGwsaT10LlNlbGVjdEFsbElucHV0Q29tcG9uZW50LGw9dC5sYW5ndWFnZTtpZigicmFkaW8iPT09bilyZXR1cm4gbnVsbDt2YXIgcz1lLmRhdGE7aWYoMD09PXMubGVuZ3RofHxzLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVybiBlLl9hZ2dyZWdhdGVkfSkpKXJldHVybiBudWxsO3ZhciB1PXMuZXZlcnkoKGZ1bmN0aW9uKGUpe3JldHVybiByKGUuX2luZGV4KX0pKSxjPXtjaGVja2VkOnUsb25DbGljazphLHNlbGVjdFR5cGU6bixyb3dzOnMsbGFiZWw6dT9sLmRlc2VsZWN0QWxsUm93c0xhYmVsOmwuc2VsZWN0QWxsUm93c0xhYmVsfTtyZXR1cm4gby5hLmNyZWF0ZUVsZW1lbnQoaSxjKX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy5wcm9wcyxyPXQuY29sdW1ucyxuPXQuc2VsZWN0V2lkdGgsYT10LmZvcndhcmRlZFJlZixpPWplKHQsWyJjb2x1bW5zIiwic2VsZWN0V2lkdGgiLCJmb3J3YXJkZWRSZWYiXSksbD10aGlzLnByb3BzLHM9bC5pc1NlbGVjdGVkLHU9bC5zZWxlY3RUeXBlLGM9bC50b2dnbGVBbGwsZj1sLnRvZ2dsZVNlbGVjdGlvbixkPWwuc2VsZWN0SWQscD17fSxnPWZ1bmN0aW9uIGUodCl7dmFyIHIsbj1mdW5jdGlvbihlLHQpe3ZhciByO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgU3ltYm9sfHxudWxsPT1lW1N5bWJvbC5pdGVyYXRvcl0pe2lmKEFycmF5LmlzQXJyYXkoZSl8fChyPWtlKGUpKXx8dCYmZSYmIm51bWJlciI9PXR5cGVvZiBlLmxlbmd0aCl7ciYmKGU9cik7dmFyIG49MCxhPWZ1bmN0aW9uKCl7fTtyZXR1cm57czphLG46ZnVuY3Rpb24oKXtyZXR1cm4gbj49ZS5sZW5ndGg\/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOmVbbisrXX19LGU6ZnVuY3Rpb24oZSl7dGhyb3cgZX0sZjphfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIG8saT0hMCxsPSExO3JldHVybntzOmZ1bmN0aW9uKCl7cj1lW1N5bWJvbC5pdGVyYXRvcl0oKX0sbjpmdW5jdGlvbigpe3ZhciBlPXIubmV4dCgpO3JldHVybiBpPWUuZG9uZSxlfSxlOmZ1bmN0aW9uKGUpe2w9ITAsbz1lfSxmOmZ1bmN0aW9uKCl7dHJ5e2l8fG51bGw9PXIucmV0dXJufHxyLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyBvfX19fSh0LmVudHJpZXMoKSk7dHJ5e2ZvcihuLnMoKTshKHI9bi5uKCkpLmRvbmU7KXt2YXIgYT1PZShyLnZhbHVlLDIpLG89YVswXSxpPWFbMV07aWYoaS5pZD09PWQpcmV0dXJuIHA9aSx0W29dPVBlKHt9LGkpLHRbb107aWYoaS5jb2x1bW5zKXt2YXIgbD1lKGkuY29sdW1ucyk7aWYobClyZXR1cm4gbH19fWNhdGNoKGUpe24uZShlKX1maW5hbGx5e24uZigpfXJldHVybiBudWxsfShyKTtyZXR1cm4gZ3x8KHI9W2c9e31dLmNvbmNhdCh4ZShyKSkpLE9iamVjdC5hc3NpZ24oZyx7aWQ6ZCxhY2Nlc3NvcjpmdW5jdGlvbigpe3JldHVybiIifSxIZWFkZXI6ZnVuY3Rpb24odCl7cmV0dXJuIGUuaGVhZFNlbGVjdG9yLmJpbmQoZSkodCl9LENlbGw6ZnVuY3Rpb24odCl7cmV0dXJuIGUucm93U2VsZWN0b3IuYmluZChlKSh0KX0sQWdncmVnYXRlZDpmdW5jdGlvbih0KXtyZXR1cm4gZS5zdWJSb3dTZWxlY3Rvci5iaW5kKGUpKHQpfSxnZXRQcm9wczpmdW5jdGlvbihlLHQscil7dmFyIG49cC5nZXRQcm9wcz9wLmdldFByb3BzKGUsdCxyKTp7fTtpZighdClyZXR1cm4gbjtpZihyLnBpdm90ZWQmJnQuYWdncmVnYXRlZClyZXR1cm4gbjtpZih0LmFnZ3JlZ2F0ZWQpe2lmKCJyYWRpbyI9PT11KXJldHVybiBuO3ZhciBhPXQuc3ViUm93cztpZighYXx8YS5zb21lKChmdW5jdGlvbihlKXtyZXR1cm4gZS5fYWdncmVnYXRlZH0pKSlyZXR1cm4gbjtuLm9uQ2xpY2s9ZnVuY3Rpb24oKXt2YXIgZT1hLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuX2luZGV4fSkpLHQ9ZS5ldmVyeSgoZnVuY3Rpb24oZSl7cmV0dXJuIHMoZSl9KSk7YyhlLCF0KX19ZWxzZSBuLm9uQ2xpY2s9ZnVuY3Rpb24oKXtmKHQuaW5kZXgpfTtyZXR1cm4gbn0sZ2V0SGVhZGVyUHJvcHM6ZnVuY3Rpb24oZSl7dmFyIHQ9e307aWYoInJhZGlvIj09PXUpcmV0dXJuIHQ7dmFyIHI9ZS5zb3J0ZWREYXRhO3JldHVybiFyfHxyLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVybiBlLl9hZ2dyZWdhdGVkfSkpfHwodC5vbkNsaWNrPWZ1bmN0aW9uKCl7dmFyIGU9ci5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLl9pbmRleH0pKSx0PWUuZXZlcnkoKGZ1bmN0aW9uKGUpe3JldHVybiBzKGUpfSkpO2MoZSwhdCl9KSx0fSxzZWxlY3RhYmxlOiEwLGZpbHRlcmFibGU6ITEsc29ydGFibGU6ITEscmVzaXphYmxlOiExLGNsYXNzTmFtZTp0ZSgicnQtdGQtc2VsZWN0IixwLmNsYXNzTmFtZSksaGVhZGVyQ2xhc3NOYW1lOnRlKCJydC10ZC1zZWxlY3QiLHAuaGVhZGVyQ2xhc3NOYW1lKSx3aWR0aDpwLndpZHRofHxufSksby5hLmNyZWF0ZUVsZW1lbnQoVnQsd2Uoe3JlZjphfSxpLHtjb2x1bW5zOnJ9KSl9fV0pJiZFZSh0LnByb3RvdHlwZSxyKSxuJiZFZSh0LG4pLGl9KG8uYS5Db21wb25lbnQpKS5kaXNwbGF5TmFtZT0iUlRTZWxlY3RUYWJsZSIsSnQuZGVmYXVsdFByb3BzPXtzZWxlY3RUeXBlOiJjaGVja2JveCIsc2VsZWN0V2lkdGg6MzYsc2VsZWN0SWQ6Ii5zZWxlY3Rpb24iLFNlbGVjdElucHV0Q29tcG9uZW50OnplLFNlbGVjdEFsbElucHV0Q29tcG9uZW50OnplLGxhbmd1YWdlOnF9LG8uYS5mb3J3YXJkUmVmKChmdW5jdGlvbihlLHQpe3JldHVybiBvLmEuY3JlYXRlRWxlbWVudChKdCx3ZSh7fSxlLHtmb3J3YXJkZWRSZWY6dH0pKX0pKSksWHQ9ZnVuY3Rpb24oZSl7bXQocixlKTt2YXIgdD15dChyKTtmdW5jdGlvbiByKCl7cmV0dXJuIHB0KHRoaXMsciksdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIGh0KHIsW3trZXk6ImNvbXBvbmVudERpZE1vdW50Iix2YWx1ZTpmdW5jdGlvbigpe3dpbmRvdy5TaGlueSYmd2luZG93LlNoaW55LmJpbmRBbGwodGhpcy5lbCl9fSx7a2V5OiJjb21wb25lbnRXaWxsVW5tb3VudCIsdmFsdWU6ZnVuY3Rpb24oKXt3aW5kb3cuU2hpbnkmJndpbmRvdy5TaGlueS51bmJpbmRBbGwodGhpcy5lbCl9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMucHJvcHMscj10LmNoaWxkcmVuLG49dC5odG1sLGE9e3JlZjpmdW5jdGlvbih0KXtyZXR1cm4gZS5lbD10fX07cmV0dXJuIGE9Q3QoQ3Qoe30sYSkse30sbj97ZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6e19faHRtbDpufX06e2NoaWxkcmVuOnJ9KSxvLmEuY3JlYXRlRWxlbWVudCgiZGl2IixhKX19XSkscn0oby5hLkNvbXBvbmVudCksWXQ9ZnVuY3Rpb24oZSl7bXQocixlKTt2YXIgdD15dChyKTtmdW5jdGlvbiByKGUpe3ZhciBuO3JldHVybiBwdCh0aGlzLHIpLChuPXQuY2FsbCh0aGlzLGUpKS5zdGF0ZT17c2VsZWN0ZWQ6bmV3IFNldChlLmRlZmF1bHRTZWxlY3RlZCksZXhwYW5kZWQ6ZS5kZWZhdWx0RXhwYW5kZWR8fHt9LGRhdGE6bnVsbCxkYXRhS2V5Om51bGx9LG4uaXNTZWxlY3RlZD1uLmlzU2VsZWN0ZWQuYmluZCh3dChuKSksbi50b2dnbGVTZWxlY3Rpb249bi50b2dnbGVTZWxlY3Rpb24uYmluZCh3dChuKSksbi50b2dnbGVTZWxlY3Rpb25BbGw9bi50b2dnbGVTZWxlY3Rpb25BbGwuYmluZCh3dChuKSksbi5zZXRTZWxlY3Rpb249bi5zZXRTZWxlY3Rpb24uYmluZCh3dChuKSksbi50b2dnbGVFeHBhbmQ9bi50b2dnbGVFeHBhbmQuYmluZCh3dChuKSksbi50b2dnbGVFeHBhbmRBbGw9bi50b2dnbGVFeHBhbmRBbGwuYmluZCh3dChuKSksbi50b2dnbGVDb2xsYXBzZUFsbD1uLnRvZ2dsZUNvbGxhcHNlQWxsLmJpbmQod3QobikpLG4uaXNFeHBhbmRlZD1uLmlzRXhwYW5kZWQuYmluZCh3dChuKSksbi50YWJsZUluc3RhbmNlPW8uYS5jcmVhdGVSZWYoKSxuLnRhYmxlRWxlbWVudD1vLmEuY3JlYXRlUmVmKCksbn1yZXR1cm4gaHQocixbe2tleToiaXNTZWxlY3RlZCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc3RhdGUuc2VsZWN0ZWQuaGFzKGUpfX0se2tleToidG9nZ2xlU2VsZWN0aW9uIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1uZXcgU2V0KHRoaXMuc3RhdGUuc2VsZWN0ZWQpO3RoaXMuc3RhdGUuc2VsZWN0ZWQuaGFzKGUpP3QuZGVsZXRlKGUpOigic2luZ2xlIj09PXRoaXMucHJvcHMuc2VsZWN0aW9uJiZ0LmNsZWFyKCksdC5hZGQoZSkpLHRoaXMuc2V0U3RhdGUoe3NlbGVjdGVkOnR9LHRoaXMub25TZWxlY3RlZENoYW5nZSl9fSx7a2V5OiJ0b2dnbGVTZWxlY3Rpb25BbGwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIHI9bmV3IFNldCh0aGlzLnN0YXRlLnNlbGVjdGVkKTt0P2UuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIHIuYWRkKGUpfSkpOmUuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIHIuZGVsZXRlKGUpfSkpLHRoaXMuc2V0U3RhdGUoe3NlbGVjdGVkOnJ9LHRoaXMub25TZWxlY3RlZENoYW5nZSl9fSx7a2V5OiJzZXRTZWxlY3Rpb24iLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMscj0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdO3RoaXMuc2V0U3RhdGUoe3NlbGVjdGVkOm5ldyBTZXQoZSl9LChmdW5jdGlvbigpe3JldHVybiB0Lm9uU2VsZWN0ZWRDaGFuZ2Uocil9KSl9fSx7a2V5OiJvblNlbGVjdGVkQ2hhbmdlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPSEoYXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0pfHxhcmd1bWVudHNbMF0sdD10aGlzLnByb3BzLHI9dC5zZWxlY3Rpb24sbj10LnNlbGVjdGlvbklkO2lmKHImJm4mJndpbmRvdy5TaGlueSl7dmFyIGE9c3QodGhpcy5zdGF0ZS5zZWxlY3RlZCkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZSsxfSkpO3dpbmRvdy5TaGlueS5vbklucHV0Q2hhbmdlKG4sYSl9ZSYmdGhpcy51cGRhdGVDcm9zc3RhbGtTZWxlY3Rpb24oKX19LHtrZXk6InVwZGF0ZUNyb3NzdGFsa1NlbGVjdGlvbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2lmKHRoaXMuY3RTZWxlY3Rpb24pe3ZhciB0PXN0KHRoaXMuc3RhdGUuc2VsZWN0ZWQpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIGUucHJvcHMuY3Jvc3N0YWxrS2V5W3RdfSkpO3RoaXMuY3RTZWxlY3Rpb24uc2V0KHQpfX19LHtrZXk6InRvZ2dsZUV4cGFuZCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgcj1DdCh7fSx0aGlzLnN0YXRlLmV4cGFuZGVkKTtpZih0KXt2YXIgbj1uZShyLGUubmVzdGluZ1BhdGgpO3I9biYmbj09PXQuaWQ\/YWUocixlLm5lc3RpbmdQYXRoLHZvaWQgMCk6YWUocixlLm5lc3RpbmdQYXRoLHQuaWQpfWVsc2V7dmFyIGE9bmUocixlLm5lc3RpbmdQYXRoKTtyPWFlKHIsZS5uZXN0aW5nUGF0aCxhP3ZvaWQgMDp7fSl9dGhpcy5zZXRTdGF0ZSh7ZXhwYW5kZWQ6cn0pfX0se2tleToiaXNFeHBhbmRlZCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9bmUodGhpcy5zdGF0ZS5leHBhbmRlZCxlLm5lc3RpbmdQYXRoKTtyZXR1cm4gdCYmdD09PWUuY29sdW1uLmlkfX0se2tleToidG9nZ2xlRXhwYW5kQWxsIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMudGFibGVJbnN0YW5jZS5jdXJyZW50LnN0YXRlLHQ9ZS5jb2x1bW5zLHI9ZS5zb3J0ZWREYXRhLG49dC5maW5kKChmdW5jdGlvbihlKXtyZXR1cm4gZS5kZXRhaWxzfSkpLGE9ZnVuY3Rpb24gZSh0KXtyZXR1cm4gdC5yZWR1Y2UoKGZ1bmN0aW9uKHQscixhKXtyZXR1cm4gci5fc3ViUm93cz90W2FdPWUoci5fc3ViUm93cyk6dFthXT1uP24uaWQ6e30sdH0pLHt9KX0ocik7dGhpcy5zZXRTdGF0ZSh7ZXhwYW5kZWQ6YX0pfX0se2tleToidG9nZ2xlQ29sbGFwc2VBbGwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5zZXRTdGF0ZSh7ZXhwYW5kZWQ6e319KX19LHtrZXk6ImdldFJvd0luZm8iLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7cmV0dXJuIGUmJnRoaXMucHJvcHMuc2VsZWN0aW9uP0N0KHtzZWxlY3RlZDplLnN1YlJvd3MmJiJtdWx0aXBsZSI9PT10aGlzLnByb3BzLnNlbGVjdGlvbj9lLnN1YlJvd3MuZXZlcnkoKGZ1bmN0aW9uKGUpe3JldHVybiB0LmlzU2VsZWN0ZWQoZS5faW5kZXgpfSkpOnRoaXMuaXNTZWxlY3RlZChlLmluZGV4KX0sZSk6ZX19LHtrZXk6Im9uVGFibGVVcGRhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7aWYod2luZG93LlNoaW55JiZ3aW5kb3cuU2hpbnkub25JbnB1dENoYW5nZSYmIXRoaXMucHJvcHMubmVzdGVkKXt2YXIgZT10aGlzLnRhYmxlRWxlbWVudC5jdXJyZW50LHQ9dGhpcy50YWJsZUluc3RhbmNlLmN1cnJlbnQ7aWYoIWV8fCF0KXJldHVybjt2YXIgcj1lLnBhcmVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCJkYXRhLXJlYWN0YWJsZS1vdXRwdXQiKTtpZighcilyZXR1cm47dmFyIG49e3BhZ2U6dC5zdGF0ZS5wYWdlKzEscGFnZVNpemU6dC5zdGF0ZS5wYWdlU2l6ZSxwYWdlczp0LnN0YXRlLnBhZ2VzLHNlbGVjdGVkOnN0KHRoaXMuc3RhdGUuc2VsZWN0ZWQpLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUrMX0pKX07T2JqZWN0LmtleXMobikuZm9yRWFjaCgoZnVuY3Rpb24oZSl7d2luZG93LlNoaW55Lm9uSW5wdXRDaGFuZ2UoIiIuY29uY2F0KHIsIl9fcmVhY3RhYmxlX18iKS5jb25jYXQoZSksbltlXSl9KSl9fX0se2tleToiY29tcG9uZW50RGlkTW91bnQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztpZih0aGlzLnN0YXRlLnNlbGVjdGVkLnNpemU+MCYmdGhpcy5vblNlbGVjdGVkQ2hhbmdlKCksITA9PT10aGlzLnN0YXRlLmV4cGFuZGVkJiZ0aGlzLnRvZ2dsZUV4cGFuZEFsbCgpLHdpbmRvdy5TaGlueSYmIXRoaXMucHJvcHMubmVzdGVkKXt2YXIgdD10aGlzLnRhYmxlRWxlbWVudC5jdXJyZW50LnBhcmVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKCJkYXRhLXJlYWN0YWJsZS1vdXRwdXQiKTtpZih0KXt3aW5kb3cuU2hpbnkuYWRkQ3VzdG9tTWVzc2FnZUhhbmRsZXIoIl9fcmVhY3RhYmxlX18iLmNvbmNhdCh0KSwoZnVuY3Rpb24odCl7bnVsbCE9dC5kYXRhJiZlLnNldFN0YXRlKHtkYXRhOnQuZGF0YSxkYXRhS2V5OnQuZGF0YUtleX0pLG51bGwhPXQuc2VsZWN0ZWQmJmUuc2V0U2VsZWN0aW9uKHQuc2VsZWN0ZWQpLG51bGwhPXQucGFnZSYmZS50YWJsZUluc3RhbmNlLmN1cnJlbnQub25QYWdlQ2hhbmdlKHQucGFnZSksbnVsbCE9dC5leHBhbmRlZCYmKHQuZXhwYW5kZWQ\/ZS50b2dnbGVFeHBhbmRBbGwoKTplLnRvZ2dsZUNvbGxhcHNlQWxsKCkpfSkpfX10aGlzLm9uVGFibGVVcGRhdGUoKTt2YXIgcj10aGlzLnByb3BzLmNyb3NzdGFsa0dyb3VwO2lmKHImJndpbmRvdy5jcm9zc3RhbGspe3RoaXMuY3RTZWxlY3Rpb249bmV3IHdpbmRvdy5jcm9zc3RhbGsuU2VsZWN0aW9uSGFuZGxlKHIpLHRoaXMuY3RGaWx0ZXI9bmV3IHdpbmRvdy5jcm9zc3RhbGsuRmlsdGVySGFuZGxlKHIpLHRoaXMuY3RTZWxlY3RlZD10aGlzLmN0U2VsZWN0aW9uLnZhbHVlLHRoaXMuY3RGaWx0ZXJlZD10aGlzLmN0RmlsdGVyLmZpbHRlcmVkS2V5czt2YXIgbj0odGhpcy5wcm9wcy5jcm9zc3RhbGtLZXl8fFtdKS5yZWR1Y2UoKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZVt0XT1yLGV9KSx7fSksYT10aGlzLnRhYmxlSW5zdGFuY2UuY3VycmVudCxvPXtpZDphLnByb3BzLmNyb3NzdGFsa0lkfSxpPWZ1bmN0aW9uKCl7dmFyIHQscj1lLmN0U2VsZWN0ZWQmJmUuY3RTZWxlY3RlZC5sZW5ndGg+MD9lLmN0U2VsZWN0ZWQ6bnVsbCxpPWUuY3RGaWx0ZXJlZCxsPSh0PXJ8fGk\/cj9pP3IuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gaS5pbmNsdWRlcyhlKX0pKTpyOmk6bnVsbCk\/dC5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBuW2VdfSkpOm51bGw7YS5maWx0ZXJDb2x1bW4obyxsKX0sbD1mdW5jdGlvbih0KXtlLmN0U2VsZWN0ZWQhPT10JiYoZS5jdFNlbGVjdGVkPXQsaSgpKX07dGhpcy5jdFNlbGVjdGlvbi5vbigiY2hhbmdlIiwoZnVuY3Rpb24odCl7dC5zZW5kZXIhPT1lLmN0U2VsZWN0aW9uPyhsKHQudmFsdWUpLGUuc2V0U2VsZWN0aW9uKFtdLCExKSk6bChudWxsKX0pKSx0aGlzLmN0RmlsdGVyLm9uKCJjaGFuZ2UiLChmdW5jdGlvbih0KXt2YXIgcjt0LnNlbmRlciE9PWUuY3RGaWx0ZXImJihyPXQudmFsdWUsZS5jdEZpbHRlcmVkIT09ciYmKGUuY3RGaWx0ZXJlZD1yLGkoKSkpfSkpLGkoKSx0aGlzLnByb3BzLmRlZmF1bHRTZWxlY3RlZCYmdGhpcy51cGRhdGVDcm9zc3RhbGtTZWxlY3Rpb24oKX19fSx7a2V5OiJjb21wb25lbnREaWRVcGRhdGUiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucHJvcHMscj10LmRlZmF1bHRTZWxlY3RlZCxuPXQuZGVmYXVsdEV4cGFuZGVkO2lmKGUuZGVmYXVsdFNlbGVjdGVkIT09ciYmdGhpcy5zZXRTZWxlY3Rpb24ociksZS5kZWZhdWx0RXhwYW5kZWQhPT1uKWlmKCEwPT09bil0aGlzLnRvZ2dsZUV4cGFuZEFsbCgpO2Vsc2V7dmFyIGE9bnx8e307dGhpcy5zZXRTdGF0ZSh7ZXhwYW5kZWQ6YX0pfX19LHtrZXk6ImNvbXBvbmVudFdpbGxVbm1vdW50Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuY3RTZWxlY3Rpb24mJnRoaXMuY3RTZWxlY3Rpb24uY2xvc2UoKSx0aGlzLmN0RmlsdGVyJiZ0aGlzLmN0RmlsdGVyLmNsb3NlKCl9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMucHJvcHMscz10LmRhdGEsdT10LmNvbHVtbnMsYz10LmNvbHVtbkdyb3VwcyxmPXQucGl2b3RCeSxkPXQuc29ydGFibGUscD10LnJlc2l6YWJsZSxnPXQuZmlsdGVyYWJsZSxoPXQuc2VhcmNoYWJsZSxtPXQuZGVmYXVsdFNvcnREZXNjLGI9dC5kZWZhdWx0U29ydGVkLHk9dC5kZWZhdWx0UGFnZVNpemUsdj10LnBhZ2VTaXplT3B0aW9ucyx3PXQucGFnaW5hdGlvblR5cGUseD10LnNob3dQYWdpbmF0aW9uLFM9dC5zaG93UGFnZVNpemVPcHRpb25zLFA9dC5zaG93UGFnZUluZm8sQz10Lm1pblJvd3MsTz10LnNlbGVjdGlvbixrPXQub25DbGljayxUPXQub3V0bGluZWQsaj10LmJvcmRlcmVkLEU9dC5ib3JkZXJsZXNzLFI9dC5zdHJpcGVkLE49dC5oaWdobGlnaHQsQT10LmNvbXBhY3QsRD10Lm5vd3JhcCx6PXQuc2hvd1NvcnRJY29uLF89dC5zaG93U29ydGFibGUsRj10LmNsYXNzTmFtZSxNPXQuc3R5bGUsST10LnJvd0NsYXNzTmFtZSxMPXQucm93U3R5bGUsVz10LmlubGluZSxLPXQud2lkdGgsQj10LmhlaWdodCxIPXQubGFuZ3VhZ2UsRz10LmNyb3NzdGFsa0dyb3VwLFY9dC5jcm9zc3RhbGtLZXksJD10LmRhdGFLZXksWD10LnRoZW1lO2Zvcih2YXIgWSBpbiBGPXRlKEYsSigoWD1VKFgpfHx7fSkuc3R5bGUpKSxIPUN0KEN0KHt9LHEpLEgpKUhbWV09SFtZXXx8bnVsbDtzPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1PYmplY3Qua2V5cyhlKSxyPW5ldyBBcnJheShlW3RbMF1dLmxlbmd0aCksbj0wO248ci5sZW5ndGg7bisrKXtyW25dPXt9O3ZhciBhLG89dHQodCk7dHJ5e2ZvcihvLnMoKTshKGE9by5uKCkpLmRvbmU7KXt2YXIgaT1hLnZhbHVlO3Jbbl1baV09ZVtpXVtuXX19Y2F0Y2goZSl7by5lKGUpfWZpbmFsbHl7by5mKCl9fXJldHVybiByfSh0aGlzLnN0YXRlLmRhdGF8fHMpLHU9ZnVuY3Rpb24oZSx0KXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06e30sbD1yLnNvcnRhYmxlLHM9ci5zaG93U29ydEljb24sdT1yLnNob3dTb3J0YWJsZSxjPXIuaXNFeHBhbmRlZCxmPXIub25FeHBhbmRlckNsaWNrLGQ9ci50aGVtZSxwPXIubGFuZ3VhZ2U7cmV0dXJuIGU9ZS5tYXAoKGZ1bmN0aW9uKGUpe3ZhciB0PVFlKHt9LGUpO2lmKHQuaWQ9dC5hY2Nlc3Nvcix0LmFjY2Vzc29yLmluY2x1ZGVzKCIuIikmJih0LmFjY2Vzc29yPWZ1bmN0aW9uKGUpe3JldHVybiBlW3QuaWRdfSksInN0cmluZyI9PXR5cGVvZiB0LmFnZ3JlZ2F0ZSYmSmVbdC5hZ2dyZWdhdGVdKXt2YXIgcj10LmFnZ3JlZ2F0ZTt0LmFnZ3JlZ2F0ZT1KZVtyXX10LnNvcnRNZXRob2Q9YXQoe3R5cGU6dC50eXBlLG5hTGFzdDp0LnNvcnROQUxhc3R9KSx0LmZpbHRlckFsbD0hMCwibnVtZXJpYyI9PT10LnR5cGU\/dC5jcmVhdGVNYXRjaGVyPWl0OnQuY3JlYXRlTWF0Y2hlcj1sdCx0LmZpbHRlck1ldGhvZD1mdW5jdGlvbihlLHIpe3ZhciBuPWUuaWQsYT10LmNyZWF0ZU1hdGNoZXIoZS52YWx1ZSk7cmV0dXJuIHIuZmlsdGVyKChmdW5jdGlvbihlKXt2YXIgdD1lW25dO3JldHVybiB2b2lkIDA9PT10fHwoISFlLl9zdWJSb3dzfHxhKHQpKX0pKX0sIm51bWVyaWMiPT09dC50eXBlP3QuYWxpZ249dC5hbGlnbnx8InJpZ2h0Ijp0LmFsaWduPXQuYWxpZ258fCJsZWZ0Iix0LkNlbGw9ZnVuY3Rpb24oZSl7dmFyIHIsbCxzPWUudmFsdWUsdT1udWxsPT1zfHwibnVtZXJpYyI9PT10LnR5cGUmJlllKHMpO3JldHVybiB1JiYocz10Lm5hKSwhdSYmdC5mb3JtYXQmJnQuZm9ybWF0LmNlbGwmJihzPW90KHMsdC5mb3JtYXQuY2VsbCkpLHQuY2VsbCYmKCJmdW5jdGlvbiI9PXR5cGVvZiB0LmNlbGwmJihzPXQuY2VsbChRZShRZSh7fSxlKSx7fSx7dmFsdWU6c30pKSksdC5jZWxsIGluc3RhbmNlb2YgQXJyYXkmJiFlLmFnZ3JlZ2F0ZWQmJihzPXQuY2VsbFtlLmluZGV4XSkmJihzPU9iamVjdChuLmh5ZHJhdGUpKHtGcmFnbWVudDphLkZyYWdtZW50LFdpZGdldENvbnRhaW5lcjpCZX0sdC5jZWxsW2UuaW5kZXhdKSkpLG51bGwhPXMmJiIiIT09c3x8KHM9IuKAiyIpLHI9by5hLmlzVmFsaWRFbGVtZW50KHMpP3M6dC5odG1sP28uYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtzdHlsZTp7ZGlzcGxheToiaW5saW5lIn0sZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6e19faHRtbDpzfX0pOlN0cmluZyhzKSx0LmRldGFpbHMmJih0LmRldGFpbHMgaW5zdGFuY2VvZiBBcnJheSYmbnVsbD09dC5kZXRhaWxzW2UuaW5kZXhdfHwobD1pLlJlYWN0VGFibGVEZWZhdWx0cy5FeHBhbmRlckNvbXBvbmVudChRZShRZSh7fSxlKSx7fSx7aXNFeHBhbmRlZDpjKGUpfSkpKSksbD9vLmEuY3JlYXRlRWxlbWVudChvLmEuRnJhZ21lbnQsbnVsbCxsLHIpOnJ9LHQuUGl2b3RWYWx1ZT1mdW5jdGlvbihlKXt2YXIgcj10LkNlbGwoZSk7cmV0dXJuIG8uYS5jcmVhdGVFbGVtZW50KCJzcGFuIixudWxsLHIsIiAiLGUuc3ViUm93cyYmIigiLmNvbmNhdChlLnN1YlJvd3MubGVuZ3RoLCIpIikpfSx0LkFnZ3JlZ2F0ZWQ9ZnVuY3Rpb24oZSl7dmFyIHI9bnVsbCE9ZS52YWx1ZT9lLnZhbHVlOiIiO3JldHVybiB0LmZvcm1hdCYmdC5mb3JtYXQuYWdncmVnYXRlZCYmKHI9b3Qocix0LmZvcm1hdC5hZ2dyZWdhdGVkKSksdC5hZ2dyZWdhdGVkJiYocj10LmFnZ3JlZ2F0ZWQoUWUoUWUoe30sZSkse30se3ZhbHVlOnJ9KSkpLHQuaHRtbD9vLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7ZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6e19faHRtbDpyfX0pOnJ9LHQuSGVhZGVyPWZ1bmN0aW9uKGUpe3ZhciByLGk9dC5uYW1lO2lmKHQuaGVhZGVyJiYoaT0iZnVuY3Rpb24iPT10eXBlb2YgdC5oZWFkZXI\/dC5oZWFkZXIoZSk6T2JqZWN0KG4uaHlkcmF0ZSkoe0ZyYWdtZW50OmEuRnJhZ21lbnQsV2lkZ2V0Q29udGFpbmVyOkJlfSx0LmhlYWRlcikpLHI9by5hLmlzVmFsaWRFbGVtZW50KGkpP28uYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6InJ0LXRoLWNvbnRlbnQifSxpKTp0Lmh0bWw\/by5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToicnQtdGgtY29udGVudCIsZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6e19faHRtbDppfX0pOm8uYS5jcmVhdGVFbGVtZW50KCJzcGFuIix7Y2xhc3NOYW1lOiJydC10aC1jb250ZW50In0sbnVsbCE9aT9TdHJpbmcoaSk6IiIpLHJlKHQuc29ydGFibGUsbCkmJnMpe3ZhciBjPXU\/InJ0LXNvcnQiOiIiO3JldHVybiJyaWdodCI9PT10LmFsaWduP28uYS5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6InJ0LXNvcnQtaGVhZGVyIn0sby5hLmNyZWF0ZUVsZW1lbnQoInNwYW4iLHtjbGFzc05hbWU6dGUoYywicnQtc29ydC1sZWZ0IiksImFyaWEtaGlkZGVuIjoidHJ1ZSJ9KSxyKTpvLmEuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJydC1zb3J0LWhlYWRlciJ9LHIsby5hLmNyZWF0ZUVsZW1lbnQoInNwYW4iLHtjbGFzc05hbWU6dGUoYywicnQtc29ydC1yaWdodCIpLCJhcmlhLWhpZGRlbiI6InRydWUifSkpfXJldHVybiByfSx0LmZvb3RlciYmKHQuRm9vdGVyPWZ1bmN0aW9uKGUpe3ZhciByO3JldHVybiByPSJmdW5jdGlvbiI9PXR5cGVvZiB0LmZvb3Rlcj90LmZvb3RlcihlKTpPYmplY3Qobi5oeWRyYXRlKSh7RnJhZ21lbnQ6YS5GcmFnbWVudCxXaWRnZXRDb250YWluZXI6QmV9LHQuZm9vdGVyKSxvLmEuaXNWYWxpZEVsZW1lbnQocik\/cjp0Lmh0bWw\/by5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2Rhbmdlcm91c2x5U2V0SW5uZXJIVE1MOntfX2h0bWw6cn19KTpudWxsIT1yP1N0cmluZyhyKToiIn0pO3ZhciBnPSJydC1hbGlnbi0iLmNvbmNhdCh0LmFsaWduKTt0LmhlYWRlckNsYXNzTmFtZT10ZShnLHQuaGVhZGVyQ2xhc3NOYW1lKSx0LmZvb3RlckNsYXNzTmFtZT10ZShnLHQuZm9vdGVyQ2xhc3NOYW1lKTt2YXIgaD10LmNsYXNzTmFtZSxtPXQuc3R5bGU7cmV0dXJuIHQuY2xhc3NOYW1lPXZvaWQgMCx0LnN0eWxlPXZvaWQgMCx0LmdldFByb3BzPWZ1bmN0aW9uKGUsdCxyKXt2YXIgbixhLG89e307aWYoIXQpcmV0dXJuIG87KG49ImZ1bmN0aW9uIj09dHlwZW9mIGg\/aCh0LHIsZSk6aCBpbnN0YW5jZW9mIEFycmF5P2hbdC5pbmRleF06aCxvLmNsYXNzTmFtZT10ZShnLG4pLG0pJiYoKGE9ImZ1bmN0aW9uIj09dHlwZW9mIG0\/bSh0LHIsZSk6bSBpbnN0YW5jZW9mIEFycmF5P21bdC5pbmRleF06bSkmJihvLnN0eWxlPWEpKTtyZXR1cm4gci5kZXRhaWxzJiYoci5kZXRhaWxzIGluc3RhbmNlb2YgQXJyYXkmJm51bGw9PXIuZGV0YWlsc1t0LmluZGV4XXx8dC5hZ2dyZWdhdGVkfHwoby5jbGFzc05hbWU9dGUoInJ0LWV4cGFuZGFibGUiLG8uY2xhc3NOYW1lKSxudWxsPT10LnJvd1tyLmlkXSYmKG8uc3R5bGU9UWUoUWUoe30sby5zdHlsZSkse30se3RleHRPdmVyZmxvdzoiaW5oZXJpdCJ9KSksby5vbkNsaWNrPWZ1bmN0aW9uKGUsbil7Zih0LHIpLG4mJm4oKX0pKSxvfSx0LnRoZW1lPWQsdC5sYW5ndWFnZT1wLHR9KSksdCYmKGU9bnQoZSx0KSkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7KG51bGwhPWUubmFtZXx8ZS5oZWFkZXIpJiYoZS5IZWFkZXI9ZnVuY3Rpb24odCl7dmFyIHI9ZS5uYW1lO3JldHVybiBlLmhlYWRlciYmKHI9ImZ1bmN0aW9uIj09dHlwZW9mIGUuaGVhZGVyP2UuaGVhZGVyKHQpOk9iamVjdChuLmh5ZHJhdGUpKHtGcmFnbWVudDphLkZyYWdtZW50LFdpZGdldENvbnRhaW5lcjpCZX0sZS5oZWFkZXIpKSxvLmEuaXNWYWxpZEVsZW1lbnQocik\/cjplLmh0bWw\/by5hLmNyZWF0ZUVsZW1lbnQoImRpdiIse2Rhbmdlcm91c2x5U2V0SW5uZXJIVE1MOntfX2h0bWw6cn19KTpudWxsIT1yP1N0cmluZyhyKToiIn0pLGUuYWxpZ249ZS5hbGlnbnx8ImNlbnRlciIsZS5oZWFkZXJDbGFzc05hbWU9dGUoInJ0LWFsaWduLSIuY29uY2F0KGUuYWxpZ24pLGUuaGVhZGVyQ2xhc3NOYW1lKX0pKSxlfSh1LGMse3NvcnRhYmxlOmQsc2hvd1NvcnRJY29uOnosc2hvd1NvcnRhYmxlOl8saXNFeHBhbmRlZDp0aGlzLmlzRXhwYW5kZWQsb25FeHBhbmRlckNsaWNrOnRoaXMudG9nZ2xlRXhwYW5kLHRoZW1lOlgsbGFuZ3VhZ2U6SH0pLG51bGwhPUMmJihDPU1hdGgubWF4KEMsMSkpLEY9dGUoRixUPyJydC1vdXRsaW5lZCI6IiIsaj8icnQtYm9yZGVyZWQiOiIiLEU\/InJ0LWJvcmRlcmxlc3MiOiIiLEE\/InJ0LWNvbXBhY3QiOiIiLFc\/IiBydC1pbmxpbmUiOiIiLEQ\/InJ0LW5vd3JhcCI6IiIpLE09Q3Qoe3dpZHRoOkssaGVpZ2h0OkJ9LE0pO3ZhciBaPWwuYSxRPXt9O08mJihaPXF0LFE9e2lzU2VsZWN0ZWQ6dGhpcy5pc1NlbGVjdGVkLHRvZ2dsZVNlbGVjdGlvbjp0aGlzLnRvZ2dsZVNlbGVjdGlvbix0b2dnbGVBbGw6dGhpcy50b2dnbGVTZWxlY3Rpb25BbGwsc2VsZWN0VHlwZToibXVsdGlwbGUiPT09Tz8iY2hlY2tib3giOiJyYWRpbyJ9KTt2YXIgZWU9bnVsbD09eCxhZT16dDsoUnx8Tnx8T3x8SXx8TCkmJihhZT1mdW5jdGlvbih0LHIpe3I9ZS5nZXRSb3dJbmZvKHIpO3ZhciBuLGE9enQodCxyKTsoUiYmciYmKGEuY2xhc3NOYW1lPXRlKGEuY2xhc3NOYW1lLHIudmlld0luZGV4JTI\/bnVsbDoicnQtdHItc3RyaXBlZCIpKSxOJiZyJiYoYS5jbGFzc05hbWU9dGUoYS5jbGFzc05hbWUsInJ0LXRyLWhpZ2hsaWdodCIpKSxyJiZyLnNlbGVjdGVkJiYoYS5jbGFzc05hbWU9dGUoYS5jbGFzc05hbWUsInJ0LXRyLXNlbGVjdGVkIikpLEkpJiYobj0iZnVuY3Rpb24iPT10eXBlb2YgST9JKHIsdCk6SSBpbnN0YW5jZW9mIEFycmF5P3ImJklbci5pbmRleF06SSxhLmNsYXNzTmFtZT10ZShhLmNsYXNzTmFtZSxuKSk7cmV0dXJuIEwmJihhLnN0eWxlPSJmdW5jdGlvbiI9PXR5cGVvZiBMP0wocix0KTpMIGluc3RhbmNlb2YgQXJyYXk\/ciYmTFtyLmluZGV4XTpMKSxhfSk7dmFyIG9lLGllPXUucmVkdWNlKChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbmNhdCh0LmNvbHVtbnM\/dC5jb2x1bW5zOnQpfSksW10pO2llLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmRldGFpbHN9KSk\/KG9lPWZ1bmN0aW9uKHQpe3ZhciBpPW5lKGUuc3RhdGUuZXhwYW5kZWQsdC5uZXN0aW5nUGF0aCksbD1pZS5maW5kKChmdW5jdGlvbihlKXtyZXR1cm4gZS5pZD09PWl9KSk7aWYoIWwpcmV0dXJuIG51bGw7dmFyIHM9bC5kZXRhaWxzLHU9bC5odG1sLGM9e307aWYoImZ1bmN0aW9uIj09dHlwZW9mIHMpe3ZhciBmPXMoZS5nZXRSb3dJbmZvKHQpKTt1JiYoYy5odG1sPWYpLGMuY2hpbGRyZW49Zn1lbHNlIGlmKHMgaW5zdGFuY2VvZiBBcnJheSl7dmFyIGQ9c1t0LmluZGV4XTtpZihudWxsPT1kKXJldHVybiBudWxsO3UmJihjLmh0bWw9ZCksYy5jaGlsZHJlbj1PYmplY3Qobi5oeWRyYXRlKSh7UmVhY3RhYmxlOnIsRnJhZ21lbnQ6YS5GcmFnbWVudCxXaWRnZXRDb250YWluZXI6QmV9LGQpfXJldHVybiBvLmEuY3JlYXRlRWxlbWVudChYdCxTdCh7a2V5OiIiLmNvbmNhdChpLCItIikuY29uY2F0KHQuaW5kZXgpfSxjKSl9LHU9W3tleHBhbmRlcjohMCxzaG93OiExfV0uY29uY2F0KHN0KHUpKSk6b2U9bnVsbDt2YXIgbGUsc2U9ZnVuY3Rpb24oKXtPYmplY3Qua2V5cyhlLnN0YXRlLmV4cGFuZGVkKS5sZW5ndGg+MCYmZS5zZXRTdGF0ZSh7ZXhwYW5kZWQ6e319KX0sdWU9X3Q7ayYmKCJzZWxlY3QiPT09az9rPWZ1bmN0aW9uKHQscil7aWYodCYmKCFyLnBpdm90ZWR8fCF0LmFnZ3JlZ2F0ZWQpKWlmKHQuYWdncmVnYXRlZCl7aWYoInNpbmdsZSI9PT1PKXJldHVybjt2YXIgbj10LnN1YlJvd3M7aWYoIW58fG4uc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuX2FnZ3JlZ2F0ZWR9KSkpcmV0dXJuIG51bGw7dmFyIGE9bi5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlLl9pbmRleH0pKSxvPWEuZXZlcnkoKGZ1bmN0aW9uKHQpe3JldHVybiBlLmlzU2VsZWN0ZWQodCl9KSk7ZS50b2dnbGVTZWxlY3Rpb25BbGwoYSwhbyl9ZWxzZSBlLnRvZ2dsZVNlbGVjdGlvbih0LmluZGV4KX06ImV4cGFuZCI9PT1rJiYoaz1mdW5jdGlvbih0LHIpe2lmKHQpe3ZhciBuPWllLmZpbmQoKGZ1bmN0aW9uKGUpe3JldHVybiBlLmRldGFpbHN9KSk7aWYodC5hZ2dyZWdhdGVkKXIucGl2b3RlZHx8ZS50b2dnbGVFeHBhbmQodCk7ZWxzZSBpZihuKXt2YXIgYT1uLmRldGFpbHM7aWYoYSBpbnN0YW5jZW9mIEFycmF5JiZudWxsPT1hW3QuaW5kZXhdKXJldHVybjtlLnRvZ2dsZUV4cGFuZCh0LG4pfX19KSx1ZT1mdW5jdGlvbihlLHQscil7cmV0dXJuIEN0KEN0KHt9LF90KGUsdCkpLHt9LHtvbkNsaWNrOmZ1bmN0aW9uKG4sYSl7ayh0LHIsZSksYSYmYSgpfX0pfSk7dmFyIGNlPWt0O3JldHVybiBoJiYobGU9JHQsY2U9ZnVuY3Rpb24oZSx0LHIsbil7dmFyIGE9ZS5maWx0ZXJlZC5maW5kKChmdW5jdGlvbih0KXtyZXR1cm4gdC5pZD09PWUuc2VhcmNoS2V5fSkpLG89YT9hLnZhbHVlOiIiO3JldHVybiBDdChDdCh7fSxrdChlKSkse30se3NlYXJjaFZhbHVlOm8sb25TZWFyY2hDaGFuZ2U6ZnVuY3Rpb24odCl7bi5maWx0ZXJDb2x1bW4oe2lkOmUuc2VhcmNoS2V5fSx0LnRhcmdldC52YWx1ZSl9LHNlYXJjaFBsYWNlaG9sZGVyOmUubGFuZ3VhZ2Uuc2VhcmNoUGxhY2Vob2xkZXIsc2VhcmNoTGFiZWw6ZS5sYW5ndWFnZS5zZWFyY2hMYWJlbCxzZWFyY2hDbGFzc05hbWU6SihlLnRoZW1lLnNlYXJjaElucHV0U3R5bGUpfSl9KSxvLmEuY3JlYXRlRWxlbWVudChaLFN0KHtkYXRhOnMsY29sdW1uczp1LHBpdm90Qnk6Znx8W10sc29ydGFibGU6ZCxyZXNpemFibGU6cCxmaWx0ZXJhYmxlOmcsc2VhcmNoYWJsZTpoLHNlYXJjaEtleToiX19zZWFyY2hfXyIsZGVmYXVsdFNvcnREZXNjOm0sZGVmYXVsdFNvcnRlZDpiLGRlZmF1bHRQYWdlU2l6ZTp5LHBhZ2VTaXplT3B0aW9uczp2LHNob3dQYWdpbmF0aW9uOngsc2hvd1BhZ2VTaXplT3B0aW9uczpTLFBhZ2luYXRpb25Db21wb25lbnQ6eWUscGFnaW5hdGlvblR5cGU6dyxhdXRvSGlkZVBhZ2luYXRpb246ZWUsc2hvd1BhZ2VJbmZvOlAsbWluUm93czpDLGNvbGxhcHNlT25Tb3J0aW5nQ2hhbmdlOiEwLGNvbGxhcHNlT25QYWdlQ2hhbmdlOiEwLGNvbGxhcHNlT25EYXRhQ2hhbmdlOiExLGNsYXNzTmFtZTpGLHN0eWxlOk0sZXhwYW5kZWQ6dGhpcy5zdGF0ZS5leHBhbmRlZCxvbkV4cGFuZGVkQ2hhbmdlOmZ1bmN0aW9uKHQpe2Uuc2V0U3RhdGUoe2V4cGFuZGVkOnR9KX0sb25QYWdlQ2hhbmdlOnNlLG9uU29ydGVkQ2hhbmdlOnNlLGdldFRhYmxlUHJvcHM6Y2UsZ2V0VGhlYWRHcm91cFRyUHJvcHM6RXQsZ2V0VGhlYWRHcm91cFRoUHJvcHM6anQsZ2V0VGhlYWRUclByb3BzOlJ0LGdldFRoZWFkVGhQcm9wczpUdCxnZXRUaGVhZEZpbHRlclRyUHJvcHM6TnQsZ2V0VGhlYWRGaWx0ZXJUaFByb3BzOkF0LGdldFRib2R5UHJvcHM6QnQsZ2V0VHJHcm91cFByb3BzOkR0LGdldFRyUHJvcHM6YWUsZ2V0VGRQcm9wczp1ZSxnZXRUZm9vdFRyUHJvcHM6RnQsZ2V0VGZvb3RUZFByb3BzOk10LFRhYmxlQ29tcG9uZW50OmxlLFN1YkNvbXBvbmVudDpvZX0sUSx7dGhlbWU6WCxsYW5ndWFnZTpILGNyb3NzdGFsa0dyb3VwOkcsY3Jvc3N0YWxrS2V5OlYsY3Jvc3N0YWxrSWQ6Il9fY3Jvc3N0YWxrX18iLGtleToiIi5jb25jYXQoeSksZGF0YUtleTp0aGlzLnN0YXRlLmRhdGFLZXl8fCQscmVmOnRoaXMudGFibGVJbnN0YW5jZSxnZXRQcm9wczpmdW5jdGlvbigpe3JldHVybiBlLm9uVGFibGVVcGRhdGUoKSx7cmVmOmUudGFibGVFbGVtZW50LG9uTW91c2VEb3duOmZ1bmN0aW9uKCl7ZS50YWJsZUVsZW1lbnQuY3VycmVudC5jbGFzc0xpc3QucmVtb3ZlKCJydC1rZXlib2FyZC1hY3RpdmUiKX0sb25LZXlEb3duOmZ1bmN0aW9uKCl7ZS50YWJsZUVsZW1lbnQuY3VycmVudC5jbGFzc0xpc3QuYWRkKCJydC1rZXlib2FyZC1hY3RpdmUiKX0sb25LZXlVcDpmdW5jdGlvbih0KXs5PT09KHQud2hpY2h8fHQua2V5Q29kZSkmJmUudGFibGVFbGVtZW50LmN1cnJlbnQuY2xhc3NMaXN0LmFkZCgicnQta2V5Ym9hcmQtYWN0aXZlIil9fX19KSl9fV0pLHJ9KG8uYS5Db21wb25lbnQpO1l0LmRlZmF1bHRQcm9wcz17c29ydGFibGU6ITAscmVzaXphYmxlOiExLHNob3dQYWdlU2l6ZU9wdGlvbnM6ITEsc2hvd1NvcnRJY29uOiEwfTt2YXIgWnQ9WXQ7T2JqZWN0KG4ucmVhY3RXaWRnZXQpKCJyZWFjdGFibGUiLCJvdXRwdXQiLHtSZWFjdGFibGU6WnR9KX1dKTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVhY3RhYmxlLmpzLm1hcA==\"><\/script><\/p>\n<style type=\"text\/css\">\n  code{white-space: pre-wrap;}<br \/>\n  span.smallcaps{font-variant: small-caps;}<br \/>\n  span.underline{text-decoration: underline;}<br \/>\n  div.column{display: inline-block; vertical-align: top; width: 50%;}<br \/>\n  div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}<br \/>\n  ul.task-list{list-style: none;}<br \/>\n    <\/style>\n<style type=\"text\/css\">code{white-space: pre;}<\/style>\n<p><script type=\"text\/javascript\">\nif (window.hljs) {\n  hljs.configure({languages: []});\n  hljs.initHighlightingOnLoad();\n  if (document.readyState && document.readyState === \"complete\") {\n    window.setTimeout(function() { hljs.initHighlighting(); }, 0);\n  }\n}\n<\/script><\/p>\n<style type=\"text\/css\">\n.main-container {<br \/>\n  max-width: 940px;<br \/>\n  margin-left: auto;<br \/>\n  margin-right: auto;<br \/>\n}<br \/>\nimg {<br \/>\n  max-width:100%;<br \/>\n}<br \/>\n.tabbed-pane {<br \/>\n  padding-top: 12px;<br \/>\n}<br \/>\n.html-widget {<br \/>\n  margin-bottom: 20px;<br \/>\n}<br \/>\nbutton.code-folding-btn:focus {<br \/>\n  outline: none;<br \/>\n}<br \/>\nsummary {<br \/>\n  display: list-item;<br \/>\n}<br \/>\npre code {<br \/>\n  padding: 0;<br \/>\n}<br \/>\n<\/style>\n<p><!-- tabsets --><\/p>\n<style type=\"text\/css\">\n.tabset-dropdown > .nav-tabs {<br \/>\n  display: inline-table;<br \/>\n  max-height: 500px;<br \/>\n  min-height: 44px;<br \/>\n  overflow-y: auto;<br \/>\n  border: 1px solid #ddd;<br \/>\n  border-radius: 4px;<br \/>\n}<\/p>\n<p>.tabset-dropdown > .nav-tabs > li.active:before {<br \/>\n  content: \"\ue259\";<br \/>\n  font-family: 'Glyphicons Halflings';<br \/>\n  display: inline-block;<br \/>\n  padding: 10px;<br \/>\n  border-right: 1px solid #ddd;<br \/>\n}<\/p>\n<p>.tabset-dropdown > .nav-tabs.nav-tabs-open > li.active:before {<br \/>\n  content: \"\ue258\";<br \/>\n  border: none;<br \/>\n}<\/p>\n<p>.tabset-dropdown > .nav-tabs.nav-tabs-open:before {<br \/>\n  content: \"\ue259\";<br \/>\n  font-family: 'Glyphicons Halflings';<br \/>\n  display: inline-block;<br \/>\n  padding: 10px;<br \/>\n  border-right: 1px solid #ddd;<br \/>\n}<\/p>\n<p>.tabset-dropdown > .nav-tabs > li.active {<br \/>\n  display: block;<br \/>\n}<\/p>\n<p>.tabset-dropdown > .nav-tabs > li > a,<br \/>\n.tabset-dropdown > .nav-tabs > li > a:focus,<br \/>\n.tabset-dropdown > .nav-tabs > li > a:hover {<br \/>\n  border: none;<br \/>\n  display: inline-block;<br \/>\n  border-radius: 4px;<br \/>\n  background-color: transparent;<br \/>\n}<\/p>\n<p>.tabset-dropdown > .nav-tabs.nav-tabs-open > li {<br \/>\n  display: block;<br \/>\n  float: none;<br \/>\n}<\/p>\n<p>.tabset-dropdown > .nav-tabs > li {<br \/>\n  display: none;<br \/>\n}<br \/>\n<\/style>\n<p><!-- code folding --><\/p>\n<p>The Federal Centers for Disease Control (CDC) and the Wisconsin Department of Health Services (DHS) both independently collect COVID-19 vaccination statistics. Their statistics for the state of Wisconsin vary. Statewide, the CDC counts 3,469,836 fully vaccinated individuals (as of 2021-12-01), while the DHS counts 3,268,304 (as of 2021-12-02). This gap of 201,532 is too large to be explained by small differences in the reporting period.<\/p>\n<div class=\"container-fluid main-container\">\n<p>Proportionally, the differences are even larger at the county level. For instance, according to the CDC, 76% of Bayfield County residents are vaccinated, but the DHS places this figure at 66.4%. The opposite pattern is shown in neighboring Douglas County, where the CDC vaccination rate is 39.9%, and the DHS rate is 58.9%.<\/p>\n<p>The DHS acknowledges differences between their data and the CDC, saying \u201cData on this page may differ from data reported on the CDC COVID Data Tracker due to the fact that data may be updated on different schedules and reflect data \u2018as of\u2019 different dates or times of day. There may also be a delay between the time a vaccination record appears in the the state system and when it is received by CDC.\u201d<a id=\"fnref1\" class=\"footnote-ref\" href=\"#fn1\"><sup>1<\/sup><\/a> Likewise, the CDC website states, \u201cData presented here use standard metrics across all United States counties. However, data on this page may differ from data on state and local websites. This can be due to differences in how data were reported or how the metrics are calculated. <em>For the most accurate and up-to-date data for a specific county or state, visit the relevant state or lcal health department website.<\/em>\u201d<a id=\"fnref2\" class=\"footnote-ref\" href=\"#fn2\"><sup>2<\/sup><\/a> However, simply deferring to the DHS isn\u2019t the best option in Wisconsin, because the CDC receives reports from some agencies which don\u2019t share records with the state government.<\/p>\n<p>There isn\u2019t consensus about which set of numbers is best to use. The <a href=\"https:\/\/projects.jsonline.com\/topics\/coronavirus\/tracking\/covid-19-cases-testing-and-deaths-in-wisconsin.html\"><em>Milwaukee Journal Sentinel<\/em><\/a> uses the DHS statistics in their vaccine tracker, while the <a href=\"https:\/\/www.nytimes.com\/interactive\/2020\/us\/covid-19-vaccine-doses.html\"><em>New York Times<\/em><\/a> uses the CDC numbers. As I dug into the details of each dataset is tabulated, I discovered that each has strengths and limitations. The two datasets need to be combined to create the most accurate picture of vaccinations at the county level in Wisconsin.<\/p>\n<div id=\"county-level-discrepancies\" class=\"section level2 tabset\">\n<h2 class=\"tabset\">County level discrepancies<\/h2>\n<p>The map and table below show the differences between county-level CDC and DHS estimates downloaded on 2021-12-02.<\/p>\n<p>In most counties, the CDC vaccination count is slightly higher than the DHS count. In a few counties, the CDC count is significantly higher. And in a handful of counties, the DHS count actually exceeds the CDC. All of these latter counties have something specific in common. They all border Minnesota.<\/p>\n<p>I believe there are at least two reasons for this set of discrepancies. The CDC counts more vaccinations overall because they receive vaccination reports from more agencies than the DHS. However, the DHS does a better job of matching vaccine recipients to their home county. Each of these sources of error affect particular counties differently.<\/p>\n<div id=\"map\" class=\"section level3\">\n<h3>map<\/h3>\n<div class=\"figure\"><img decoding=\"async\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAABgAAAAPACAYAAADzPrJ4AAAEDmlDQ1BrQ0dDb2xvclNwYWNlR2VuZXJpY1JHQgAAOI2NVV1oHFUUPpu5syskzoPUpqaSDv41lLRsUtGE2uj+ZbNt3CyTbLRBkMns3Z1pJjPj\/KRpKT4UQRDBqOCT4P9bwSchaqvtiy2itFCiBIMo+ND6R6HSFwnruTOzu5O4a73L3PnmnO9+595z7t4LkLgsW5beJQIsGq4t5dPis8fmxMQ6dMF90A190C0rjpUqlSYBG+PCv9rt7yDG3tf2t\/f\/Z+uuUEcBiN2F2Kw4yiLiZQD+FcWyXYAEQfvICddi+AnEO2ycIOISw7UAVxieD\/Cyz5mRMohfRSwoqoz+xNuIB+cj9loEB3Pw2448NaitKSLLRck2q5pOI9O9g\/t\/tkXda8Tbg0+PszB9FN8DuPaXKnKW4YcQn1Xk3HSIry5ps8UQ\/2W5aQnxIwBdu7yFcgrxPsRjVXu8HOh0qao30cArp9SZZxDfg3h1wTzKxu5E\/LUxX5wKdX5SnAzmDx4A4OIqLbB69yMesE1pKojLjVdoNsfyiPi45hZmAn3uLWdpOtfQOaVmikEs7ovj8hFWpz7EV6mel0L9Xy23FMYlPYZenAx0yDB1\/PX6dledmQjikjkXCxqMJS9WtfFCyH9XtSekEF+2dH+P4tzITduTygGfv58a5VCTH5PtXD7EFZiNyUDBhHnsFTBgE0SQIA9pfFtgo6cKGuhooeilaKH41eDs38Ip+f4At1Rq\/sjr6NEwQqb\/I\/DQqsLvaFUjvAx+eWirddAJZnAj1DFJL0mSg\/gcIpPkMBkhoyCSJ8lTZIxk0TpKDjXHliJzZPO50dR5ASNSnzeLvIvod0HG\/mdkmOC0z8VKnzcQ2M\/Yz2vKldduXjp9bleLu0ZWn7vWc+l0JGcaai10yNrUnXLP\/8Jf59ewX+c3Wgz+B34Df+vbVrc16zTMVgp9um9bxEfzPU5kPqUtVWxhs6OiWTVW+gIfywB9uXi7CGcGW\/zk98k\/kmvJ95IfJn\/j3uQ+4c5zn3Kfcd+AyF3gLnJfcl9xH3OfR2rUee80a+6vo7EK5mmXUdyfQlrYLTwoZIU9wsPCZEtP6BWGhAlhL3p2N6sTjRdduwbHsG9kq32sgBepc+xurLPW4T9URpYGJ3ym4+8zA05u44QjST8ZIoVtu3qE7fWmdn5LPdqvgcZz8Ww8BWJ8X3w0PhQ\/wnCDGd+LvlHs8dRy6bLLDuKMaZ20tZrqisPJ5ONiCq8yKhYM5cCgKOu66Lsc0aYOtZdo5QCwezI4wm9J\/v0X23mlZXOfBjj8Jzv3WrY5D+CsA9D7aMs2gGfjve8ArD6mePZSeCfEYt8CONWDw8FXTxrPqx\/r9Vt4biXeANh8vV7\/+\/16ffMD1N8AuKD\/A\/8leAvFY9bLAAAAOGVYSWZNTQAqAAAACAABh2kABAAAAAEAAAAaAAAAAAACoAIABAAAAAEAAAYAoAMABAAAAAEAAAPAAAAAAAHRe8cAAEAASURBVHgB7N0FfFXlG8DxZ8lGj2Z0d4eA0p2KpJICKi0giiIl\/BFBRELSRhEQpENASklpFKS7u2HAtv953nkv640xFne\/9\/8ZO\/ec95zznu\/d37u98TxO\/lYRCgIIIIAAAggggAACCCCAAAIIIIAAAggggAACCDiUgLNDPQ0PgwACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAkaAAQB+EBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQcEABBgAc8E3lkRBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQYACAnwEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBxQgAEAB3xTeSQEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBgA4GcAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEHFGAAwAHfVB4JAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEGAPgZQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEDAAQUYAHDAN5VHQgABBBBAAAEEEEAAAQQQQAABBBBAAAEEEECAAQB+BhBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQcEABBgAc8E3lkRBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQYACAnwEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBxQgAEAB3xTeSQEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBgA4GcAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEHFGAAwAHfVB4JAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEGAPgZQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEDAAQUYAHDAN5VHQgABBBBAAAEEEEAAAQQQQAABBBBAAAEEEECAAQB+BhBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQcEABBgAc8E3lkRBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQYACAnwEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBxQgAEAB3xTeSQEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBgA4GcAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEHFGAAwAHfVB4JAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEGAPgZQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEDAAQUYAHDAN5VHQgABBBBAAAEEEEAAAQQQQAABBBBAAAEEEECAAQB+BhBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQcEABBgAc8E3lkRBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQYACAnwEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBxQgAEAB3xTeSQEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBgA4GcAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEHFGAAwAHfVB4JAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEGAPgZQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEDAAQUYAHDAN5VHQgABBBBAAAEEEEAAAQQQQAABBBBAAAEEEECAAQB+BhBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQcEABBgAc8E3lkRBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQYACAnwEEEEAAAQQQQAABI3D27FlZuXKl+Pv7I4IAAggggAACCCCAAAIIIOAAAk7WH3j8hecAbySPgAACCCCAAAIIPIvA48ePJUuWLHLhwgVp1aqV\/PTTT89yOfHz85P58+dLiRIlJGfOnM90rcAnnzp1SpYvX24GKrS92bJlk02bNknlypWle\/fugauyjQACCCCAAAIIIIAAAggkeAEGABL8jwAACCCAAAIIIICAyKVLlyR9+vR2Cu1UL1++vP31026MHTtWevfubQYVDh06JB4eHk97iSD17927J+3atZO5c+cG2R\/4xblz5yRjxoyBd7GNAAIIIIAAAggggAACCCRoAUIAJei3n4dHAAEEEEAAAQQCBNKmTSuenp52ju3bt9u3o7Kxfv16c9rp06dlz549UbmE\/ZybN29K9erVTed\/Ys\/EUq9WfRkx+FN5qXxFKZCvoDg5OZm6uoqBggACCCCAAAIIIIAAAggg8ETA9ckmWwgggAACCCCAAAIJVUA70TWkjs7W1xJ4MCAqJtrxbyteXl62zSh9Hz9+vGzZskWyZMoiM7+ZLblz5jbXeaNVB\/O9WqOqsv\/APjl\/\/rx5hijdhJMQQAABBBBAAAEEEEAAAQcUYAWAA76pPBICCCCAAAIIIBAVgT59+pjTNBRQgwYNwr2EdsgvWrRIHj58GGq9NGnSmP0a\/z937oAO+1ArRmLn7NmzTa1RQz+zd\/7bTtNcA2fOBgw2ZM2a1bab7wgggAACCCCAAAIIIIAAApYAAwD8GCCAAAIIIIAAAggYgbffflsOHz4sOns\/Q4YMoarcv3\/fhOPR\/AAvv\/yyTJo0KdR6vXr1MvUWL14szs5R\/5Xz4MGDsm\/fPvFK6SUVy1cKca+f58yQW7dvSebMmSVdunQhjrMDAQQQQAABBBBAAAEEEEjIAoQASsjvPs+OAAIIIIAAAggEEwhttr52ws+YMUN8fHxk6dKlpkPedlpYiYLr1Kkj+vWsZefOneYS5ctWEFfXkL+6\/rn5D3N84MCBzzTQ8Kzt5HwEEEAAAQQQQAABBBBAIC4KhPwrKi62kjYhgAACCCCAAAIIxIrA0aNHpWjRoiFC\/WjOAO38\/\/777yVXrlxiC\/kTWiP1GhMnTpTixYtL27ZtQ6sS5j5bTgJb3P\/AFW\/fuS2b\/tpsdpUqVSrwIbYRQAABBBBAAAEEEEAAAQQsAQYA+DFAAAEEEEAAAQQSqMCKFSvkzJkz8sYbb4Q5e\/67774znf9lS70gp8+ckvMXz0vFihVF8wTMnTtXNm3aZBIHr169OlRFXT3wwgsvyM2bN83xRo0aScqUKUOtG9rOR48emd2eiTxDHF60bKFcvnJJypYtKyVLlgxxnB0IIIAAAggggAACCCCAQEIXiHpA1oQux\/MjgAACCCCAAALxVODq1atStWpVE6KnU6dOMmrUqDCfZPv27ebYG606yN17d832u+++azr\/bSddunTJthniu4bmsXX+58iRQ5InTx6iTng7UqdObQ5fvX41RLUrV6+YfTogoSsSKAgggAACCCCAAAIIIIAAAkEFGAAI6sErBBBAAAEEEEDAoQV8fX3lrbfeknXr1knKFAEz8bWTvmnTpqE+tw4WaFny22KTbLdcuXJSpEiRIHULFy4c5HXgFy4uLvaX169fF1118DQlbdq0pvrVayEHAHLlzGWO6SoDCgIIIIAAAggggAACCCCAQEgBBgBCmrAHAQQQQAABBBBwWIGtW7fKvHnzzPP9On2etHutvTx+\/Fh+\/fVX2bVrV4jndnNzM\/uWrlxivg8aNEhy5swp\/fv3t9etUaOGfTv4xoABA8TTMyB8z40bN6RevXry+eefB68W5usUKVKYYzdv3QhRRwcUtDx48CDEMXYggAACCCCAAAIIIIAAAgiIMADATwECCCCAAAIIIJCABDRevi0MT7p06WXkx6OkYZ1GRqBPnz4hJBo3bhwkP4At1v7w4cNly5YtsnHjRunYsWOI82w7ChUqJLZZ\/DrYoKVv374ye\/Zssx3RP5qjQEuGdBnsVf39\/WXX3l0yfuo4sy+8+9tPYgMBBBBAIN4J6Cq0NWvWyO+\/\/y6XL1+ON+3XgfXjx4+b1Xbz58+XHTt22MPhxbWH0MF0nQCwcOFC46zt1tWCFAQQQAABxxFgAMBx3kueBAEEEEAAAQQQiFDA1dVVPDw8TL07d26b70M+\/Nh83717d5DztQMgQ4YMMnXqVOnevbvJFaDJf21Fk\/tWqFDBvNTZ\/b\/88ovMmDFDzp49a6tivus1tDR7pZk0b9zCbIeXN8BU+O8fXbGgJXu2HP\/tERk1bqTUbVpbTp89bZL\/NmvWzH6MDQQQQACBJwK6QktzpIT25ezsLIkTJzaDtKVKlRIdBA7+3+8nV3qydejQIfv12rdv\/+RABFujR4+2n6ed4mEV7fDXhPFZsmSRNGnSSPXq1aVmzZqSLl068fb2lrp164omqNfB4LhW9u3bJ7169RL9rNTVcppv59VXX5XSpUtLypQpTQg9\/az08\/MLs+kbNmywO4X2vrm7u4uujtO8Omqhq\/qe1kJXzk2fPl0qVaokqVKlMp+lr7zyinHWdidJkkS6du0qp0+fDrOdHEAAAQQQiD8CDADEn\/eKliKAAAIIIIBAAhPQsDwrV66M9pl41apVM5LfzfhOLl+5JMNGBQwAFCtWLIhwixYtpG3btvLmm2\/Kl19+KRMmTJBTp04FqaMvjh07JjrTX+u3bt1aChYsKDogYCvZs2c3mwePHJLr16+Z7cADCbZ6wb\/v379ffvzxR9E8AvVrNTCH9\/yzR778aoLZ1nstWLDAHA9+Lq8RQAABBMIX0E7j+\/fvy5UrV2Tnzp3yxRdfSK5cuUzH7\/nz58M\/OQpHI9NJ3aNHD9Phv3jxYrGtAAt8K23Xb7\/9Jh06dBBNAH\/r1q3Ah2NtWzv0hw4dKkWLFpVx48bJtWsBn3XBG\/TPP\/+Yz0pdjWfLsRO8TkSvHz16ZJ77xIkTxqJJkybmvnPmzInoVHP8wIEDZkCiXbt28ueff4Z6jo+Pj0yePFly585tJgGEWomdCCCAAALxRsA13rSUhiKAAAIIIIAAAglIQMMd2BLz9u7dW8aMGRNtT1+\/fn2ZNWuWTPt+qnz\/83fy8OFDSZYsmYwfP95+Dw3RowMQKZKnkLIly8q\/h\/41MwF1kEATCAceLOjcubOcO3dO8ufJLw+sToMTp46bjqSPPw4YWNAZhjrj8ctp4+X4yeMmpJDONo2ofPbZZ2aWZJ5ceeSzCaPEw91Dlq1aKtr5oZ1Egdsb0bU4jgACCCR0gcGDB4vOHrcV7bS+c+eOGbDVEDDbt28XW8fvqlWrTIg3nXUfU0Xzw+hgsxad4a6fLbqCIXPmzKL5aHQAetOmTTJ27FgzaKEh6HR2vX5exmbR1XIvv\/yyLF261DQjUaJEoisjmjdvblYBeHl5ycmTJ+WPP\/4wK+l0Vr2GBKpdu7YJb2QLyxfaM+ggR506dYIc0vfo9u3b5pq6WkBX1OnAgt5Pf1fQ3xnCKmqlof30fdeig\/e68qNEiRKig\/W6X1d4TJs2TXRAQX8\/6NKli1kRoIPuFAQQQACBeCpgjcJTEEAAAQQQQAABBOKIgPWHvb81G9P\/3Xff1dgG5itPnjyhts6aHelvhe0J9Vh4O63OCn+rg8C\/ePHi9nu8\/fbbQU6xZieaY58NHe1\/4dAl\/66dutnrfvXVV0HqWh395ljdmvX8mzRqarb1+rZihUSwn6vPZHXy2A6F+93KNxDkPJtHgwYN\/NWJggACCCAQvoAVPsf+39G7d++GW3nbtm3+1gx2e\/3y5cv7W4MEIc45ePCgvY41izzE8bB2jBo1yn6eFbYmSDVtW+rUqc1xa9DB34pDH+R44BdWzHp\/\/Vy0fSZYHe+BD8f4tu0zUNuTL18+f6uzP8w23Lt3z\/+ll16yt91aZReirjUr3378vffeC3E88A4rlI\/\/oEGD\/K1wTuYcK2SQ\/7JlywJXsW9bAwX+1uo7+7X1\/Qjt\/bWdYIVp8rdW4Jn6VvhAf33fKQgggAAC8VOAEEDWpzQFAQQQQAABBBCITQGdGagzMzWmvs7E15jHOhNSi6uLqxw+fFjmzp0bpIk6497qADGz9pYvXy4av\/\/ixYtB6oT1QuM+6yxBnfGpy\/91dr7VEWCvrtf666+\/JGWKlNK4watWiKChMunriSbUjtbTmY2ByxtvvGFeLl+1TH5dFNBOnfVvKxoSqE2bNpI1a1azMiC0ZMO2uoG\/axJFLfnz5zehFbTNmzdvFg0NEXgWa+Bz2EYAAQQQiJqAxqlfvXq1ZMuWzVxA\/3sb\/LMnaleO+CxdfWALiaMx9G2h40I7U2Ppaw4AW9FY9rFV9PNy2LBh5vaas2D9+vXmsy6s9nh6esqiRYtMfh2tM3PmzGeKs6+rDXS13ciRI80trW4pef\/990PNMaAz+W2\/JwwfPlyswQWTayCstmpOgP\/973\/msH4ea4goCgIIIIBA\/BRgACB+vm+0GgEEEEAAAQQcRGDLli0mxq7GDtZOd11u7+bqLqmSp5W6ZRtL8iRe5km1UyFw0T\/iNXaz\/rFfr149MxCQKVMmExM\/cL3A2zdv3rQv+7ftt2YiiibRDRyCYO\/eveZw6lSppX23djLx6y9N2B5N8KsdBppIWIs1Y1M04aE1a1P69+9v9mnYBg0vpB0HgYt20OhAh3bsRLZonGfNA\/Dvv\/\/KwIEDTViDcuXKRfZ06iGAAAIIPKWADkAH7lwfMWLEU14hatU1D4GtaEd6REUT0GtbtVirBSKq\/tyOT5kyRWyD1dZMfJP8N6KbaUggDWOnRcMwaS6bZy19+\/Y1CX31OhoOaMmSJUEuqcmdbYmXdXBFP8sjU7Sd2l4tOtlAkwdTEEAAAQTinwADAPHvPaPFCCCAAAIIIOBAAitWrDCdB7kz5ZfeTQfJlz1nyMR3fpaRb06RfSf2yLVbl80AQb9+\/YI8tcbrDTzLXg9qHOKtW7cGqacvtIOhcuXKorMmNZayxlAOr1ghDEwn\/9HjR2XD5j9FZxjqrFBN8qtFO\/61wz9jxoxSuHBhM0NfZ\/Vb4QHk8uXL9nrh3SMyx\/T6BQoUiExV6iCAAAIIRJNA1apVTTJgvZyuFLtw4UI0XTnsy2iseyt8jamg+WciKlpXY9VrPPzQPvciOj86juuAvS3xrq7eC746Lrx7dO3aVVauXGnyL9gGA8KrH5ljnTp1slfTzvrARQfm9XcBLZpbQXMqRKYkSZLEDCZo4uATVtJhDw+PyJxGHQQQQACBOCbAAEAce0NoDgIIIIAAAggkLAHtvNDi6Z5YvJKlsRLdeoqzk7PpCPmvL0QmT55sOu6Dy6xZs0Z+\/PFHezgcDYvTs2fP4NVEZwZq8kEtugrg22+\/DVEn8A4NRaQJCnXmpy7\/106KKlWqmCo601ETAeoxTUKoqwE0oaGuGsibN2+kOxUC349tBBBAAIG4JWBLQq+tWrt27XNvXNq0acWWHF5nxDds2FCsnATh3ldnpsdmODgdeLh27Zppow5W21bHhdvo\/w7qgHzNmjUladKkkakeqTpNmjQxq\/W0sv5+ELhYeQHsL608D\/btyGzoagudGEBBAAEEEIi\/AgHrt+Nv+2k5AggggAACCCAQrwW0k0M70\/8+vlMOn90vw96YYA0EpDbPlC9LETl58Zj5Q75GjRohntNKzmc64zNkyGBi+muHjc6aD1z27NkTJG6vdjZo7N+IinYQBO8kuHXrltSqVcvMtvT08JTvJ\/8g7w96X06ePmGfuRnRdfW4hi7SAQkrmbBoqIePPvrIHsohMudTBwEEEEDg+QrY8gDoXXTmd1jlyJEj8v3334d1OMh+jfMfXpk0aZJYSd7FSlZrZp1rGBsNbaefO9pZrgPRwT\/jwrve8z525swZ+y00101sl8SJE5vPUvUL\/p7FtbbGthX3RwABBBKaAAMACe0d53kRQAABBBBAIE4JlC9fXgYMGCCzZ882yX6nLv5cbt+\/KRlSZZJb926atmqYg7CK5gbQWPm5c+c2CYQ1J4AtjIKeoyF\/dGaixtHXoqGA0qdPb7Zt\/6xbt066d+8umg9AVxsEPt9WR7\/ragCd8ZjZO7PUrFpLevbrIRcvXTShIkqWLBm4aqjbuvpAEw5rOKPr16\/b6+jMxK+\/\/lo0BAQFAQQQQCD2BQJ\/TgSOzx+8ZRs3bhT9io5SpkwZ0bw4devWNSHl9Joau15zEtjyEuhMdD3+2muvSdmyZaPjtlG+xrlz5+znxpVwdfq+6QCAhifSVXoamkiLOmrRkD5Zs2Y12\/yDAAIIIJBwBBgASDjvNU+KAAIIIIAAAnFUYNiwYSaRry6zP3LugGnlxevn7a3VjvngRTtkNNFu4I6XCRMmmHj8Gr9Zk+bqTElN0KvheTSUgv7Rr7MpA5eZM2dKmzZtTP4ATeirM\/M1IbCG89EZ+hr\/X4vGgZ46darZ\/qD3h9K7fy959OiRFCtWTObOnRskibBW0s4HzW+gcYc1nJDGkNYBAFspmL+Q1K5WW35b\/Zv8e3C\/VKtWzeQZCJ7XwFaf7wgggAACMScQODTNvXv3YuzGOXLkkN27d4vmAfjpp59EB7l11ZitaK4Z\/Ro7dqxZFTBx4kTJkyeP7XCMfr9x44b9foEHTOw7Y2Ej+PumAwCaH0hz92jRUEthDfLHQnO5JQIIIIBADAkwABBD0NwGAQQQQAABBBAIT0BXAmhnvM6w19mNV69eFQ3xozGOtXM8eFm0aJHp\/E\/qmUwqFa1lcges3bVcNFGffi1evNh0\/Ov5GpdYrx+8aB1b53\/jBq\/K6vW\/21cKaDt0RuOHH35oTuvVq5doCKBE7olk0CcDTee\/JgXWDv7ARWf26zm6P3CHv9Zxd3OXksVLSpsWbaVJo6bmtHe69JJGLRvI3n17zUACAwCBNdlGAAEEYkcgcAiZ8GaMN2vWzHTGR6aVusJMV5JFVDTRbKtWrczXgwcPZMOGDSYUnuYi0MFs7dDWsmrVKtGcNTpIUKRIkYguG+3H06VLZ79meCv17JViYMP2vqmhrX36u0SqVKlMvgLN2aOmJPONgTeDWyCAAAJxSIABgDj0ZtAUBBBAAAEEEHBMAf2D\/M8\/\/zTx+sObedeyZUvRr\/CKLuNfuHChjBo1ylSrXfplqfvCq2a7ZqmGcuLiEfl59ddy+sxxE27n7bffDvVy2h7NGaAdKT07vyP9+3wkPg99ZP+B\/bJ+wzr5dOwIMwNTw\/U4OzubcAu6OkDr6FedOnVMuCC9uM7215ADmm9AQwnZOiAKFSgsr9R\/RWpUriEZM3hLyhQpQ7Tl5zkzTOe\/3iOiZw9xMjsQQAABBJ6LwNGjR+3X1Vn5YRWNO+\/t7R3W4SD7dXXZ0xbtqNYcOLY8OJp0V1cGaOg8DXGjg846CLF\/\/357Atzw7qED0+HF68+ZM6f5vA7vGrZjmn\/HVnQFXWwXXalx\/nzA6kHN4RD49w1tq9rpZ75OEihevHhsN5f7I4AAAgjEoIBzDN6LWyGAAAIIIIAAAglSoHr16tK2bVvTaREWgIbs0Y6OcuXK2WfhB677+PFjef\/99yV79uzSrVs3OXnypGTPkFsqFatlr+bm6iZ5MhWQojkC4vHbOgLsFQJtaMx97bivX6uB6fzXQzq7v0TREtKp7ZuSMX1GE7qnf\/\/+5iwdSNDkjJpTYP78+aJx+1OkSGE6YXSWoSbz1ePa+V+8SHFZv+xPWb1wjfR4q6cUyFcw1M7\/k6dPyuARg8z1f\/jhB9EQSBQEEEAAgdgXCDwAoJ3icaXoTPaePXuKdrjbZv1rSCBdDRCZ4ufnJxq7P6wvHcyObMmfP7+9qg5APG3ZvHmzWVn3tOeFVf\/YsWP2Q8Hfs2dpq048UG\/NMURBAAEEEIifAgwAxM\/3jVYjgAACCCCAQDwR0M4GW4eCLsMPrWhiXA2L4OPjY0IAFS1aVPRr+vTpppNezxk6dKh89tln4vvYV0rkfkE61bNm7b8+QpJ4JA1xyRt3AxLs6qxMHQTQ2fqaF2DOnDn2urVr1zbba\/5YLRu2bLDv1w2NIfzFiLEmBNHIkSNl8ODBZiahhgzS8AGae0BnFn777bcyfPhwE+onfbr0kjdXXhnywceyaOYSyZc7X5BrhvZiwdL5JpSQJnNs3bp1aFXYhwACCCAQwwI64Ky5W7To59bzjrF\/8eJF0UTyOsCsq8giU3TQuUuXLvaqf\/\/9t307vA03Nzdp2LBhmF\/6WRnZogMQOtNeiw6YaGidyJbLly+LhrzTAQ39jI6OogmUbSVwh7\/u0wF6W3na1Qr6u0fhwoVF8xzo4D8FAQQQQCD+CRACKP69Z7QYAQQQQAABBOKRgIa20Xj9f\/31l2jM\/OBFZ9RpEmAtTSu1lXNXT8umfWtFOzPatWsnGoKnYsWK9j+6ezUdKIWyh790P3GiJOZ6n3\/+uQkVZJvJuW7dOtOZP2TIEBNuR5P06iDDtO+nykvlgiYarvJSVZk6dpq83est077OnTubpMLmwtY\/Gnbhgw8+MC\/Hj5wgzRuHfDZb3cDfL166KF3f7Sy7\/9ktumJBS\/369QNXYRsBBBBAIBYFNLGuLZSbhtfRXDLPs6RJk8aE8NFB8NmzZ8u4cePMwENE99ROaVux5QWwvQ7ruw5w62dydJVGjRrJhAkTRAf7Z8yYIR07dozUpfU5daBFS6FChSJ1TniVNMmvfrZr0QH6N99802zb\/tEBAP19RNup99aBfXd3d9vhML+rqy3Xj+YBKlu2bJh1OYAAAgggEHcFWAEQd98bWoYAAggggAACDiKgMwq1Iz+0FQAaTueff\/4Rr2SppUap+tKhbg\/5sucM8z1zmmxy4cIFM3Nf\/7jP7Z0\/ws5\/JatRqoGkS5lRNCmhdv7rdVpW7SBO1v90pYEOLmhHgIZR0LJh85+iKwGClwa1G0rNqrXMsn9tZ+CiIYs0UXGFshUi3fmv5389\/SvZuHWj6PPcuHnDrDaoVetJGKPA92AbAQQQQCBmBa5cuWLvSNY762fX8y762fjSSwGD0Hr\/uXPnRuqWuirNVjRpfWwU\/Ry1daR\/9NFHJs5+RO3QlXS2gX+tG1aunoiuE\/j4iBEjREP1aHn55ZcluEfatGnNpAI9rr8XjB49WjcjLPpZrys0tDRp0kR0sIaCAAIIIBD\/BBgAiH\/vGS1GAAEEEEAAAQcROHLkiD2EQd2yjcXVJWBGvIe7p1QoVFWGtP9CBrUZLR2tcD99m38s77\/2v0g9eerkaWVIuzHyzqsD5LVqHaVvi6FmUKBK8TomAeDYsWPNdTQJoM7uvHf\/nvT68B25fed2iOtXr1Td7AscWmDDhg0yadIkM6AxfNAI+zn3H9yXsZO+MAmEz54P6IhYsHSBVK5XUXKVyCHtu7aTlWtWmPo6U3LTpk2iMYu1Y4KCAAIIIBC7AroqTMPS3LhxwzREO5JjKlnse++9Z3\/4Vq1aiYafCy\/mvCYCnjJlijknU6ZM0RZGx96ISG7kzp1b+vTpY2prR7kOZNhWT4R2CQ3Lp2H0bKEBX3\/9dcmbN29oVSO1T1fjvfPOO8ZLT3B1dRVb7p7gF\/j0009N7h7dr0mU9XV4ZerUqaIDC1o8PT1NHqLw6nMMAQQQQCDuChACKO6+N7QMAQQQQAABBBxQQDs0dNbivHnzZPXq1aYToGC2YlKpaOiz4LOmzyn69bTF3S2RFMkZkAzYdm7FojVk7e7l8ueff5pdOutSQwGcOXNGNBnhkE8HS6UKleXUmZMmrv+t27fkxKkTpm7g5IILFiwwHTONG7wqBfI+mXU5evxnMvHrL039ZSuWSqUXK8m3P31rQg7ozt9+X26O6T8ahqF8+fL212wggAACCDxfAY3lrjHwbUU\/j+7cuSMaj3779u2yZ88e2yHTka2d7DFVNC9Np06dRBPUa9gZDTGnn5MaAk\/zA2iYHF0Rp\/HrNZydbfa\/hrvRQW3bLPyYam\/g+2hn+saNG81n67\/\/\/mvi5bdp00Y0v43mT9BOeVuiYg3NpyvgtGji+2+++SbwpUJs6+D7J598EmT\/w4cPTfLgw4cPiw7I2wZs9D4zZ86UMmXKBKlve5EuXTpzP23Xo0eP5MMPPxTNQaR5F8qVK2dyMGhyZDUeM2aMGaTXc3XF4M8\/\/yzFihWzXYrvCCCAAALxTIABgHj2htFcBBBAAAEEEIi\/AvqHvMbl1ZA\/tqJhfbq93M+a\/f\/8fy3TlQVaNFGhdqSkTp3adAbpbP5SpUrJjF9+Ml+2tgX+rh0wtlKjRg3RTgzt0D924phkzJBRlq9aJrPnzzZVkiVLJoeOHjJfukM7crRjR8MH2DqYOnToIDrbVO9LQQABBBB4\/gJDhgyJ8CY6MNy0aVPTEa8DtTFZdEa\/dujrIIAOTmjuHP0Kq3h4eJjOf21vbJYkSZLIypUrTYe\/DpBrB78+i22FQmht04ENDa2nzxBe0QF726B9ePU0GbEOhOjqgvCKfg5rIt9XX31Vbt++Lbt27Qo3b4F+nn\/xxRcRXje8e3IMAQQQQCD2BZ7\/X5qx\/4y0AAEEEEAAAQQQiHUBTarYu3dvM+tO4\/1XK1FPMqTKJEVzlhIXZ5cYaV8yz+RW4l130fjDGTNmNGEH1q5da0I86DJ\/TQicJUsWKVq0qEn6mCJFCkmcOLFkzZpVqlSpYm9jnTp1TAeRxmmu06SW6GzEBz4PzPEXX3zRJEL84YcfzIxMneGoISW0aMeEbQBA8wfojEgGAAwN\/yCAAAKxIqAJfjNnziwaRqd06dLy1ltvmc+B2GiMDj5MmzbNxKrXTudVq1aZme7B25IyZUrR5Lsan15D8MSFoh352qH\/+++\/m6TAS5Yssa9+s7VPBzc0pNLQoUNFk\/JGtegqDm9vb\/Oeacd\/ixYtzPXULzJFB\/E1D4Ba6yCFrgIMXnRQQwfuNa8BYfqC6\/AaAQQQiH8CTtbIun\/8azYtRgABBBBAAAEE4o\/A5MmTpWvXrqbBNUo2kKaV29jj\/cf0U\/x1YIOs2LZQLlw7Kz6PHphEgevXr3\/qP\/A1bIR2wOgAghYN59O2bVtp3759mDMaNdSAOuggg3YsdOvWLVKPf+rUKTl+\/LhUrlw5UvWphAACCCAQ\/wU0TI0OFGuIIh001k5pHbzWcECBQxnFxSe9d++eGWzXzvVbt25Jzpw5TTggHVSPS0W7gzR3gU4M0LbqwL\/mJNABIR2woCCAAAIIOIYAAwCO8T7yFAgggAACCCAQhwWqVatmOso1IW\/1kvXjREvv3L8to2cPkjNXTorOBtSZlmEV7XzXOMV79+6VevXqSefOne1VDx06ZEIJaTih6C46Q1GTGy5dutRcWhMW9uvXL7pvw\/UQQAABBBBAAAEEEEAAAYcVIASQw761PBgCCCCAAAIIxAWBx48fm6X22pa8WQrFhSaZNiT1TCa9mw2Wgd\/2MCELNDRP8AR\/ly5dMkkCNZyPJmXUookXdVZmjx49zGudKRidRWcjbtu2zSQgnDNnTpAQCpqkkoIAAggggAACCCCAAAIIIBB5AQYAIm9FTQQQQAABBBBIAAInT540MZA1id+wYcOkatWqkXpqnSX\/999\/m\/A3OuPf1dXVLPvX2LwawiZtivTinTpLpK4VE5X+2LtKHj7ykSQeSeWez10TXiHwfTV8QYkSJeTcuXOicYVfbdhETp4+KTt2bzdJAwPXjY5tvV+XLl1EEyhquITgRcMSvPfee8F38xoBBBBAAAEEEEAAAQQQQCAcAQYAwsHhEAIIIIAAAggkLAFNZtu8eXP566+\/zIOvWLEiUgMAq1evllq1atlnq+fLl0+aNGkiM2fONLHrk1rJd99q0CfGkv1G9K5t\/GeNTF852V4te\/bsIZLxXr9+3XT+a6VqFavJhi1\/yqXLl0xMYI3fH51l586dZtBlx44d5rLp06WXlMlTysEjB81rzS+gyRXTp08fnbflWggggAACCCCAAAIIIICAwws4O\/wT8oAIIIAAAggggEAkBTS+vK3zX0+pWbNmkDM1TI7Go9fZ6oHLtGnTTOd\/jgy5JV3KDCZp4SeffGI6\/73TZJWPWo2UHBnzBD4lVrfv+wS0Xzv++\/fvLxs3bjSz\/DVJr4b48fPzMwkAu3fvbtq5at0q0\/mfI0cOmThxolSoUCFE+7UT\/9133zWz9GfMmCEa+igyZcKECVK6dGnRzv+M6TPK2iXrZfKYqeJsrTrQUrRoUfn111\/p\/I8MJnUQQAABBBBAAAEEEEAAgWACrAAIBsJLBBBAAAEEEEh4Ajrzf8yYMTJ27Fjz8J6enqYzu3r16naMtWvXSu3atU38e02Ea0tMqxVOnz5t6jWr0l6yp88lS7fMFV8\/X8mftYgUzFZUnJ0DOrPtF4vljQvXzpoWvP766zJ8+HA5f\/686YQ\/eDBgxn3Xrl1NR\/\/48eOlbt26snv3bsmdO7dZ1aDhgIIXjdX\/2muv2fME6PFly5aJDgREVE6cOCEa91\/L+YvnpUmbxnLt+jXz2t3d3eQnSJs2rXnNPwgggAACCCCAAAIIIIAAAk8n4GT9wRXwF9fTnUdtBBBAAAEEEEAg3gto6B6dAa\/JZXXWu61MnTrVhKSxvdbvGuJn1apVZle2bNlEO65tJWvWrGYQYESnyZI2ZdwOU3P73k3pN+1tefj4oezdu9d07FeqVMkY5MmVR06cOmEGOTZt2iQaeieiMm\/ePBM2SZMEv96slWTLkk3GTRlnrZK4K99884106NAh3Evor6JLliyRn376yaw+uH\/\/vujKBB1QaN26tRQsWDDc8zmIAAIIIIAAAggggAACCCAQtgArAMK24QgCCCCAAAIIOLDA9OnT5Y033jAd\/05OzuLq4iqPfR+Ldu63adMmyJNfu3ZNdLDAVtKlSyeHDx8WHx8fWb9+vZw9GzCj3itZKluVOPt9xbaFpvO\/YcOGUqRIEROyRwdAslod9wt\/Xiwdu78hm7dtFk2GHNEAwKVLl6Rjx45m5n\/vrn2kX68PzHNnyphJur\/XTTSEULly5cLtxHdychJti35paCV11bA\/up+CAAIIIIAAAggggAACCCDwbAKsAHg2P85GAAEEEEAAgXgocOTIEdPJrLPN65drKvVfaCITF46UfSd2S+fOnWXy5IAEuceOHZMWLVqYmP63b98Wz0SJxRY\/P\/hjl8n\/krxtJfqNy+XQmf3y+S+DTXgizXWgM+11wEMdfvt1pRkMqdesjiRKlMisaIgo9I7O0NcwP1WtJMEzv5kV5NF79ushv8yfbWL3z5o1S6pUqRLkOC8QQAABBBBAAAEEEEAAAQSevwArAJ6\/MXdAAAEEEEAAgTgkoKF+2rdvbzq9XyhQSRq\/9LppXc1SDc0AwJQpU0wIHE3iqyFsdHa8lvRe3qaD\/9KNC7Ll3z\/k5IWj4uHuIems\/eWs65TJ\/6KpF5f\/mbXmW9P536tXLylTpowMGDDAONSqWkuKFS4m9ZvXM83XZL4Rdf4PHTrUdP57JPKQTwd\/GuKxR1j7zl04Jxs2\/ylVq1aVZs2aiSYZpiCAAAIIIIAAAggggAACCMScACsAYs6aOyGAAAIIIIBAHBAYPXq0CXuTIomXDH1jnCTxSGpv1aZ9a+XHldYAgO8j0UTASZIkkStXrkiTSm2kbtnG9nrxdWPAtz1EEwDr7H8dAChZsqTs2rVL5vzwq+zau1M++Xy4ZMiQwYThSZr0iUvw5x05cqR88MEHVnJjZ5k27itpULth8CrmtSZXftVK6rt91zbzWvMm6IoDCgIIIIAAAggggAACCCCAQMwIsAIgZpy5CwIIIIAAAgjEAYFly5bJRx99ZFrSvna3IJ3\/urNCoaqSNV1Omb\/hZ9lzdJuZHe\/m6i4l87wQB1r\/bE3QZLuuLm7mIitWrJBChQqZJMAuLi5y7fo1GTHmE3Psq6++krA6\/zUXgsb8X7Bggak7ZvgX9s7\/+w\/uy+x5s2T33t1y+eoluXzlsly8fFEuXrpo6up5miyZggACCCCAAAIIIIAAAgggEHMCrACIOWvuhAACCCCAAAIxJHDnzh05d+6cDB8+XK5fv27i0O\/evdsezqdGyQbSslqHcFtz9dZl8Xn4QLySpTax\/8OtHA8Ortm1TH5e\/bVZ1aAWZ86cMaF53N3cxc\/fTx4\/fizDhg0zYYGCP46vr6\/MnDnTzPrXhMfJkyWXMZ8EdP7fvXtHvp3xrUz9dopcuXYl+KmSKlUq0XBB3bp1C3GMHQgggAACCCCAAAIIIIAAAs9XgBUAz9eXqyOAAAIIIIBADAps3LhRxo8fL\/Pnzzdx\/IPfWpP41i79skn8G\/xY8Nepk6cNvitevz567pBpf\/\/+\/SV37tyyatUq8\/rho4fme9++fe2rI2wPqvkStONfBwYOHjxodpcqXlomj5lizfC\/JJ+NHyXfz\/hOrl6\/ao5pWKEOHTpI5syZzaBL+vTpxdvbW1xd+ZXTZsp3BBBAAAEEEEAAAQQQQCAmBfhrLCa1uRcCCCCAAAIIPBeBAwcOmNnpCxcuNNd3cnKWVFYHfuJESaRaibri6\/vYStabUXJ755dEVuLehFau374qOw5tFicnJ2nevLl5\/LZt24quBLhx44a8+eabUqNGDTuLhguydfyrrZZsWbJLp7ZvWlv+8nqnlnLk2BGzX\/958cUXZfDgwVKzZk37PjYQQAABBBBAAAEEEEAAAQRiX4AQQLH\/HtACBBBAAAEEEIiigIam6dOnj0ycONHq5PeVRG4eUqNUA6lSrLYJ3RPFyzrUabfv3ZRRswfK+atn5JVXXjGrI8J7wFu3bknr1q1l8eLFplrWLNmkd9feUq1idanWsIp9tr\/O8n\/55ZfNFx3\/4YlyDAEEEIhdgRWTN8dYA2p3KR9j9+JGCCCAAAIIIBA5AVYARM6JWggggAACCCAQxwQ0PE27du1kxowZ4mzN+K9crJY0qtBSUiRJGcdaGnvN8fXzlTFzPjad\/4ULFxZN8BteuX\/\/vtStW1c2bdokKVOklEH9hkjzV5qbED4z5swwnf\/58uUzuRW085\/QPuFpcgwBBBBAAAEEEEAAAQQQiH0BBgBi\/z2gBQgggAACCCAQBYEuXbqYzn8PK6RP76aDJZd3vihcxXFPuXP\/tvyy7ns5ffmEicm\/evVqSZMmTbgP\/Nlnn5nO\/0wZM8m8H+dLtqzZ7fUPHw3IIaCrA5o0aWLfzwYCCCCAAAIIIIAAAggggEDcFWAAIO6+N7QMAQQQQAABBMIQmDt3rkybNk3cXd2l56sD6PwPxWnigk\/l8Nl\/zRGN958uXbpQaj3Z9eDBA9P5r3v69nwvSOe\/7suSKYt+kw0bNsiOHTskV65ckjIlqy0MCv8ggAACcVjA1d0lDreOpiGAAAIIIIDA8xZwft434PoIIIAAAggggEBUBDQR7aFDh0TD0gQumri2a9euZlfzKm9I3swFAx9m2xK4fOOC6fxPkSKF\/PXXXyZkT2gwGzdulNq1a4u3t7do3RUrVoinh6e8+MJLIarXq1lfkiRJYuqULl1a0qZNa1ZghKjIDgQQQAABBBBAAAEEEEAAgTgjwAqAOPNW0BAEEEAAAQQQCCzQtGlTmTdvnmTNmlXeeust2blzp5w9e1a2bdsmGv+\/YLZiJu5\/4HMS8raG\/Dl8Zr9Jfrx48y+GQuP5lylTJgjL7du3zQz+33\/\/XT799FOTPNlWoWihovJuj\/cka+astl327xkzZJRRH38mQ0d9LL6PfeXKtSvyww8\/SKtWrex12EAAAQQQQAABBBBAAAEEEIhbAgwAxK33g9YggAACCCCQ4AV8fHykZcuWsmDBAmNx6tQpGTBggN3FxdlFqhavK82rtBcnJyf7\/oS8cfPuDRnwbXe573PPzpA8eXIZOXKk\/bVu9O\/fX0aNGhWk079rp27SoXVHSZk8pSRNmtTUX79xnVy8dFGKFykheXPnNfX37tsr+w9YAwwpvOTEqROmniYWpiCAAAIIxG0Bt3gUAujNN980A\/1hiY4bN04qV64c1mH2I4AAAggggEAoAgwAhILCLgQQQAABBBCIHYHp06fLd999J+vWrRNN7tuoQktxd0sk566ckqzpckrq5GklZ8a8ksg6Rnki8N1vE0znf8aMGcXLy8vE++\/Xr59ZPWGrpeF+RowYIc7OzlKiaAnJnye\/NGvcQiqUrWCrYlZW9B3QR36e+7N9X95ceeXUmVPywOeBfZ9uVKxYUYYMGRJkHy8QQAABBBB4FoGFCxfK5cuXw7zEzZs3wzzGAQQQQAABBBAIXYABgNBd2IsAAggggAACMSigs\/x1tvqkSZPMXV2cXaVP0yGS0ztvDLYift7q9r1b8s\/xXabxS5culRIlSoT6IGnSpDH7XVxc5H8DPpFSxUuFqPfZ+FGm89\/T01Pq1Klj4v0fOnrI1MudO7fZ17x5cylatKjJGRDiAuxAAAEEEIhzAh6J3eNcm0Jr0Llz50znv64u+\/PPP0OrYnLRhHqAnQgggAACCCAQpgADAGHScAABBBBAAAEEnpfAlStX5MCBA7J69WpZsmSJbN++3dxKQ\/o0rdRWSuerYGb7P6\/7O9J1kyVOblZHnLp0zCRNDmsAIF++fNKrVy8ZO3asjBgzXOZOnxeEYdnKpfLFpDFmhcCiRYukRo0acuPGDTl27JjkyJHDrCwIcgIvEEAAAQQQiEaB3bt3m6tp7pqUKVNG45W5FAIIIIAAAglbgAGAhP3+8\/QIIIAAAgjEmMDFixeldevWJrZv8CX87q7uUiJPOaleoh6z\/p\/yHbllxf+\/ceeqOStbtmzhnm0bANi5N2DFgFa+cPGCtO\/aVnb\/HdDxoisxtPNfi3bAlCxZ0mzzDwIIIIAAAs9TYNeugM+mUqVCrlB7nvfl2ggggAACCDi6AAMAjv4O83wIIIAAAgg8Z4FHjx6Jm5tbuHdZuXKl9O7dW\/bv32\/qebonlnReGSVHxjxSNGcpKZC1iLhZgwCUyAs8evxQ\/vz7d1m06Re5c\/+WlC9fXsqVKxfuBT755BNzXOP\/a3n8+LH0HdjHdP5r2J833nhD+vbta47xDwIIIICAYwjElyTAthUAxYsXl7lz55oJA76+vlKsWDF5+eWXRZPbUxBAAAEEEEDg6QUYAHh6M85AAAEEEEAgwQto+J558+bJH3\/8IatWrTJ\/lGfNmtXE7s2TJ4\/5Y\/3ChQty+PBh83X37l1jljF1ZunVZCDhfZ7xJ8jf318+nzNEjpw9YK5UtWpV+fnnnyO8qnaoaOnaqaus27BWxk0eK5u3bZakSZPKwYMHxdvbO8JrUAEBBBBAAIHnIWAbAGjVqpWcPHkyyC30d4zp06dL5cqVg+znBQIIIIAAAghELOBk\/QHpH3E1aiCAAAIIIJCwBK5fvy7Lli0zHdo6w93Pz0\/y5s0rjRs3TlgQwZ5Wl+frLPJff\/1VnuZXCK9kqaWaFd6navE64uHuGeyqvHxagZt3r8u7kztK4sSJTYdIkyZNInWJsmXLmhmVgSunT59e5s+fb1YQBN7PNgIIIICAYwjsWhyw+i4mnqZEw4JRus3t27dNcnn93UJz2bzzzjuin1mnT5+W0aNH2ycb7Nu3TzJnzhyle3ASAggggAACCVWAFQAJ9Z3nuRFAAAEEQhXQPzy\/++47ef\/99+Xq1YC46oErjhgxQj744IPAuxLE9p49e2TgwIGyePHigOd1EnFO4yFOydzE2csK3WNNJ\/C78kB8T9+VxB5JpVH55pLUSk6bPmVGSe\/lbe1LkiCcYuohEydKIq4urnL\/\/n2pUqVKpG\/7+uuvy7Vr10RDKqRLl07q1q0r3bt3lzRp0kT6GlREAAEEEIhfAp5JEsX5Bvv4+MhHH30kmiNo+PDhkixZMtPmAgUKSK1atczn1W+\/\/Sb9+vWTGTNmxPnnoYEIIIAAAgjEJQFWAMSld4O2IIAAAgjEqsDx48dFl51v3rzZtMMpqas4JbFi21ud3eLnL36XHpj9n3\/+ufTp0ydW2xpTNz906JAMGjRIZs+eHXBLZydxTuchLhk8xcndJUgzfK9aAwBHb0uqZGlk1NvTghzjRfQLjP11mPxzfJeMHz9eevToEf034IoIIIAAAg4hcGDN0Rh7jvzVcoV6r02bNokmog9edLb\/1KlTg+8O8XrDhg1SsWJF0WT3J06cCHGcHQgggAACCCAQtgArAMK24QgCCCCAQAIS0JnUDRs2FF1aLm7O4pI1ibik9ggi4GsNBvgevy3vvvuuSXrrqJ2uDx8+lN9\/\/11mzpxp4spr+CMdBHFO5yku3onFyfKhxL7AS4WrmwGAb775JsIBAA1ppYmaNdY\/BQEEEEAgYQnEhSTAOrN\/27ZtIeA9PIL+rhWiwn87dCWAllOnTomGZtTPNAoCCCCAAAIIRE6AAYDIOVELAQQQQMDBBbZs2RLQ+e\/uLG6FvcTJNWQnt0ta649UK0SQ74k70rNnT3F3d5e3337bIWTu3Lkjy5cvN4l9lyxZIvraFO34t57bJZPV8R9sxr9DPHg8fojiuctIUs\/kouGZtm\/fLqVLlw71aX788Udp27atOaZJFG2xlTVxMAUBBBBAAIGYEHjppZfEluQ38P2SJAkIEahJf3USRtq0aaVMmTKBq5htDV+nRUPW0flvKPgHAQQQQACBSAswABBpKioigAACCCQEAScXp1A7\/23P7mLNgtd4974n70jnzp3NH6EdOnSwHY5X3+\/evWuS+c6dO1dWrlwpGn\/XVpwSu5rY\/ibOf6KgoX5sdfgeuwKuLm5SvmBlWbVjsXz99ddhDgDs2LHD3lCdOalfOsij57Rv395+jA0EEEAAAQSel4DG9C9WrFiYl1+zZo3o71NZsmSRo0ePhujkX7dunTlXB7EpCCCAAAIIIPB0AuQAeDovaiOAAAIIxHOBe\/fuiSaR8\/Lykl27dsmCBQukSZMmUqRIEalevbqIq5O4l4w4IarvhXvie+quODk5yQ8\/\/CBt2rSJFzKa5Fj\/iNY2z5kzR9TDVjTngbNXInFOlUicotDpTw4Am2TMfT939YwM+q6n6AzKY8eOmcS+we+uYRc0nJPmtti4caPpWNE6rq6uojGZQ5tpGfwavEYAAQQQiL8Cp\/46HWONz1o2S5Tude7cOcmZM6eZjKAD1B07drRfR1cHvPDCC3Lx4kXzO0zlypXtx9hAAAEEEEAAgYgFGACI2IgaCCCAAAIOJFC7dm0z2z2sR3JO7ymu2SIXJ933nDUIcOauODs7y4wZM6Rly5ZhXTbW9x85ckSmT59uvvQPaVtxSuomzmmsTn+r4\/9ZY\/szAGBTjdnvE+aPkD1Ht5mwVOPGjQv35joANGzYMBk8eLCplydPHhOSIXHixOGex0EEEEAAgfgrEB8GAFR3ypQp0qVLFzO5olKlSmaCxpkzZ2TatGly48YNee+992TUqFHx942g5QgggAACCMSSAAMAsQTPbRFAAAEEYl5AY8+WKlVK\/Pz9RDu+xQr345zCXfyuPhD\/O4\/N7H+3AinFyTPyEfJ8z94V37P3xMXFRT7\/\/HNp166dXLhwQTJnzhwnEq4uXrzY\/LG8YcOGJ+BWngMN7eNifTl5uDzZ\/4xbvlceiO+x25IqWRoZ9fa0Z7wap0dW4OzlkzLkhz7i6uYqhw8flmzZskV4ateuXWXy5MmmnoYB+vbbb02HS4QnUgEBBBBAIN4JxJcBAIXV1Ynvv\/++nDhxwu6s+WuGDx8urVu3tu9jAwEEEEAAAQQiL8AAQOStqIkAAgggEI8FtCNcQ\/08evTIzHh3zZk8yNP4+1mB\/a2EtxrS52nLY2sVgJ+1GkCLDgT4+vqKh4eHWRXw6quvPu3loqX+0qVLZciQISY5rLmgszXYkcrddPw7JXOL0nNG1DDbAEDq5Gll5FtTI6rO8WgU+HrZONmyf70ZgPr+++8jvPLVq1dNnOX79++but26dZMvv\/wywvOogAACCCAQ\/wTO7j0fY43OVDRjtNzr7NmzoisWc+fOHWp4u2i5CRdBAAEEEEAggQg4J5Dn5DERQAABBBK4gC4Z185\/TW7rkjGxmA7\/QCZOVgd5VDr\/9RKumZOIa+7k1sqBgM5\/sa714MEDadasmXz11VeB7vL8N7Xjv2zZstKgQYOAzn83Z3HJmkTcSqQWHfRwTu4e5ed8\/q3nDlEVeLlCS3FxdjEhnjTcU0QlderUMmvWLEnBMK6MAABAAElEQVSePGAgbOLEidKrV6+ITuM4AggggAACMSKQKVMmqVChAp3\/MaLNTRBAAAEEHF0g8jEOHF2C50MAAQQQcGiBdOnSmefzv\/dYHv19XcQaAnfNZXWIW7Hvo6OYxLle7uJ\/39cMBOiKAA0N9NZbb4nOYhswYIBJuvo097p27ZocP37cJHfVpfDaaVuuXDnJnz+\/PHz4UHT29qFDh+Svv\/6SrVu3ypYtW+wJXsXNyQx0OKfzFB3coDi2QNqU6SWndz45fGa\/HDx40MyYjOiJGzVqZH529Lv+HGn+AE0MPHr06IhO5TgCCCCAAAIIIIAAAggggEA8EWAAIJ68UTQTAQQQQODZBDSxXI4cOWT9+vUmRr8mlXt85Ja4FU\/9zMlvbS3TFQS6wkCLS6YkItbse98Td+Tjjz+W+fPnmxArFStWtFUP8V0HClatWmW+Vq9eLRcvXgxRJ8Idrv91\/FvJjGOv458Bhwjfp2iusGnfWtP5rz+DhQsXjvTV8+XLZwaPqlatapIBax6Lu3fviq4I0OTWFAQQQAABBBBAAAEEEEAAgfgtQA6A+P3+0XoEEEAAgSgI+Pn5SZ48eczMeteCKcVZEwI\/p+J386E8Pn5b5KGfuUOVKlWkZcuWJhmxzrbet2+fCdWjHf+6HaRoWKJEVieslajXyd1K1vvIT\/zuPAq4lvax63Eroa9TEiumf1JX67v1ZQ1ARDWUUZB7R+HFkxwA6awcAFOicAVOiYrAyYtHZfhP\/Uxya53F37Nnz6e+zOnTp6V8+fJmtYqe3Lx5c\/nxxx\/F3d39qa\/FCQgggAACcUsgPuYAiFuCtAYBBBBAAIH4LcAAQPx+\/2g9AggggMBTCsydO1d69+4tugJAXJwCVgBY359n0XwDfuetkEAXrISrvlay4bCKdugndzNx+p1TWJ36nvFroR4DAGG9sc9vv878X7Rptly5eUl69Ogh48ePj\/LNjh49KjpAZf6\/YV2lVq1aMm\/ePEmSxFrNQkEAAQQQiLcCFw9fjrG2p8+TNsbuxY0QQAABBBBAIHICDABEzolaCCCAAAIOIKBhdWrWrCn+\/lYnvDVz3jVnMtPZHlOP5u9rzeC\/6iP+tx5ZuQIeW+0Qky\/AWWftWx3\/ZiZ\/PI7XbxsASJM8nXzKCoDn\/mO1YttCmbP+B3OfUqVKybp16yRp0qRRuq\/mmjh16pQJ+9OqVSvRFQFaNOeEJpZOlSpVlK7LSQgggAACsS\/AAEDsvwe0AAEEEEAAgdgUiF9TC2NTinsjgAACCMQpgU2bNkmfPn2kcePG0q9fvwjbtn\/\/fhPWRDv\/nTN6imuWqHWURnijcCo4uTiLi5WUV\/TLgUtshSByYFL7o92+d1PW7Vkhx88flr+P7TT7x44dK507d5ZEiaKW0Pp\/\/\/ufDBw40H4PDU1lK5pYulKlSrJy5Urx9va27eY7AggggAACCCCAAAIIIIBAPBF48hdePGkwzUQAAQQQQEAFvvnmG5O8dOvWrdKrV68IOz8HDBgg165dE6eU7uKSmZAmz+WnSJc0aLES0VKiX2Drv3\/K9ysmyqPHD+0X1wGwd955x\/76aTfatWsn06dPt5+WyD2R+Dz0sb\/WDc1NUaFCBVmyZMlTJRgOchFeIIAAAgjEmoCLK5\/LsYbPjRFAAAEEEIgDAlZmQQoCCCCAAALxT8DH50knZcaMGWXixIlSv359SZMmjWzYsCHEA9lmLzslshLq0kEdwid6dvzXwWAbCIiei3IVS+Cez12ZueYb0\/lfr149mTNnjgnNM2PGjCj7HD58OEjnv16odInSsnX1Nhk\/coJ06dhVls9dYe0rIydPnjSDALoSgIIAAggggAACCCCAAAIIIBB\/BFgBEH\/eK1qKAAIIIBBIwNn5yRj29evXpXv37vajmrz0iy++MB2kOntZBwYuXLhgjvs\/8LXXY+P5CJgcC8\/n0gn2qhry5879W1KkSBFZtGiRuLi4PLNFnjx5ZNCgQWZlzG+\/\/SZHjhyRjVs3Sto0aaV54xb268+d\/qu806+HLFy2UHTwQQfb3n77bftxNhBAAAEEEIiKwKNHj+Tx48fi6enYoRGjYsM5CCCAAAIIRKfAk96T6Lwq10IAAQQQQOA5C7i5uZk7uGS3Yvkn+u\/jzJqA7uTlLvfv3zcx0RcvXizHjh2TCRMmyK+\/\/ipiJdh1seL\/U56vACssnp+vrnaJjs5\/Wws1fJbG+dfOfw3\/06trb0nsmdh22Hz3SOQhU76YJu906SW+vr7m\/1t9+\/YVPz+\/IPV4gQACCCAQNwWc3Jwlpr4iI7BixQopU6aMJE6cWJInTy5ly5aVMWPGROZU6iCAAAIIIIBAFARYARAFNE5BAAEEEIh9gcCdoG55U4jfNR9xSu4mTkndxPfsPfG\/\/UickriKs1ci8bv8wBoZEHHJ4ClOnnz0Pfd3jxBL0U7s88j6GbZKdHa6X758WXS1zO7duyV71hwy54e5kiVTllDbroM6H\/buLzmz5ZS+A9+Vzz\/\/XI4ePSoagkg7cCgIIIAAAghERmDXrl3SoEED0YTzjRo1kmTJksny5cvl3XfflePHj8v48eMJ1RgZSOoggAACCCDwFAL0gjwFFlURQAABBOKOgH0AwMo7q536LpmefKS5Bkvy65wsYLVA3Gm9o7YkIAmwk462UKJVYOW2ReZ61apVi5braue9drzs379fcuXIJXN\/mCcZM2SM8NotXm0pma1Bgg7d2suCBQukUqVKoittdGUCBQEEEEAgbgq4ej572LjoeDIN99OxY0ezku3333+XF1980Vz24sWLUr16dfnyyy\/NZ1PNmjWj43ZcAwEEEEAAAQT+EyAEED8KCCCAAALxUsA+ABAvW++gjQ7o\/2fm3nN4e4+dP2SuGjjXRVRuoysIJk+eLMWKFTOd\/\/nzFpAFPy+KVOe\/7X4vvvCiLJvzm1k1sGPHDhO6Ye\/evbbDfEcAAQQQQCBUgSlTpoiuAGjYsKG9818rpk+fXj7++GNzjuaZoSCAAAIIIIBA9AowABC9nlwNAQQQQCCGBOwDAP7\/9TrH0H25TcQCzk78ehGxUuRrXLx+Xvz8\/SRJkiQmVELkz3xS88aNGzJ37lzTWd+1a1e5e\/euvNKgsSy0Ov\/Tpk77pGIkt3TVwLI5y6VsqRfkzJkzpiNHQzhQEEAAAQQQCEtAY\/9rad26dYgq9evXN59xS5YskVu3boU4zg4EEEAAAQQQiLoAf6FH3Y4zEUAAAQRiUcDZmY+wWOQP\/da+AYMx7m6JQj\/O3igJLNg405zXvHnzpzr\/6tWr8r\/\/\/c90zqdOnVqaNWsmOmPfO4O3fDPhW5kyZqqkSJ7iqa4ZuHIqr1Qmb8CrDZvInTt3TExnzQ1AQQABBBCIWwLOrs4SU1\/hPbl+BmkpUKBAiGoeHh6SI0cOk2xew9NREEAAAQQQQCD6BJ4ETI6+a3IlBBBAAAEEEEiIAn4BAwBuruRciK63\/+i5g7Lz0BbRAa9hw4ZF6rL+1qqYWbNmSd++feXcuXPmHE22WK50OalZtZa0e729JPaMnsS9idwTyaTPJ0vO7Dll9ITPzD01qfBXX30l2plDQQABBBBAwCZw5coVs6mD0qGVVKlSmd3nz58P7TD7EEAAAQQQQCCKAgwARBGO0xBAAAEEEEAgdAFCAIXu8rR7H\/s+kq+WjhVfv8fSpUsXyZQpU4SX0PAKH3zwgWgnvBYN0dOtUzd5qdxLVgihpBGeH9UKfXu8JwXzFZTu73eXn376SQ4cOGCSBEemzVG9J+chgAACCMQfgfv378ujR4\/MgLaXl1eoDbcNAGiYOgoCCCCAAAIIRJ8AAwDRZ8mVEEAAAQQQSNACtnQMhGd69h+DyzcuyjfLx8mVmxelcOHCMmHChDAvqh0lGzZskE8\/\/VTWrVtn6mmYn74935cWjVuIPV9GmFeIngP1atWXpdZKgHZd2sr27dulVKlSMm\/ePKlQoUL03ICrIIAAAghEScDFzSVK50XnSbbfDfQzybYd\/Pox9XkV\/L68RgABBBBAwNEFCKDs6O8wz4cAAgg4qICGOaHETQEnkgA\/8xszceFIOXL2gGTMmFG+\/\/77UDvxDx8+LJUrV5akSZNKnTp1TOd\/yhQpZXC\/IbJp1RZ5venroZ73zI0L5wIF8haQFb+ulIoVKsnFixelSpUqMmnSpHDO4BACCCCAQEIQSJQokegMf10FcPv27VAf+dq1a2Z\/8uTJQz3OTgQQQAABBBCImgADAFFz4ywEEEAAgVgWYAAglt+A0G7\/36AMIYBCw3m6fX7+fuaEmTNnmpn0wc\/WGPtFixaVP\/74wxwqmL+QvP9OP\/lrzXbp0rGreCSKvfj7Xim9ZNY3s+XNdm+Zjp5u3bpJrVq15PTp08Efg9cIIIAAAjEg4ON3T2LqK7zH8fb2NodtHf3B69r2hxUiKHh9XiOAAAIIIIBA5AQYAIicE7UQQAABBBBAAIEYE8iYKiDe\/5gxY2TPnj32+967d0\/atWsnb731ljx48ECaWyF+\/t68T9YsWit9ur0ryZPFjVmTGsZh2Ef\/k68nfCOpvFLJqlWrpFChQvLdd9\/Zn0U3NHyR5gxo0qSJ1K1bV6ZMmSIM7gUh4gUCCCDgMAK2AYATJ06EeCY\/Pz8zUOzk5GQGuENUYAcCCCCAAAIIRFmAAYAo03EiAggggEBsCjzpJHSKzWZw71AEnIT3JBSWp9qVI0MeU3\/RokVSvHhx0XAIQ4cOlZo1a8r06dMlsWdimTh6kowfOUHSpk77VNeOycoNajeU9cv+lLo165mQDx06dDDJjN977z355ZdfJHfu3NKmTRuTK+C3334zyY6rV68uoXUOxWS7uRcCCCCAQPQL6ECvljlz5oS4+Nq1a+XKlStSrFgxSZEiRYjj7EAAAQQQQACBqAs4WR0oBFGOuh9nIoAAAgjEkkCPHj3kyy+\/FJdsScUlvWcstYLbBhZ4fOqO+F24L4VzlJBeTQYGPsT2Uwror2fbDmyQI+cOyh97V8lj30dBrrBy\/u9StFDRIPvi+otfF82V\/kM\/lJu3bgZpaqG8haVJ3WZW2CJP+fyrkXL1+lWT10BXP7z55ptB6vICAQQQQODpBS7fvvD0J0XxjLTJMoR55p07dyRLliwmCfDmzZslb968pq6Pj4\/Ur19fVq9ebb6qVasW5jU4gAACCCCAAAJPL+D69KdwBgIIIIAAAgggELYAOQDCtonsEQ2BULZARfO1\/+QeuXDtrFSvXEPSp01nJditHO86\/\/W5mzRqKr6+ftKzX3dxd3MXrxSppGOLN6XVK21MZ5DWqVKuinw8brCsWL\/chDmaO3eufPHFF1KwYEE9TEEAAQQQiMcCmrT+\/fffl\/79+0vFihXNIG\/q1KlF891s27ZNOnXqJHT+x+M3mKYjgAACCMRZAQYA4uxbQ8MQQAABBMITYAFbeDqxfYwQQNH5Dth+1ju27ijVKlePzkvH+LWcnQN+NvJkzytzpywIcX8dFBg7aIIsW7tEho0fIitXrpQiRYpI+\/bt5eOPP5bMmTPbz7l69aoJjeTm5mbfxwYCCCCAQNwW+PDDDyVt2rSioeCGDx9uGquD3q1bt5bRo0fH7cbTOgQQQAABBOKpAAMA8fSNo9kIIIAAAgjEVQH9Q54SfQK2AQAXV5fou2gsXcnXSvJoSgQ\/IvWqNpAXipeXST9OkF+WzJJvv\/1WZsyYIW3btjUhI+bNmycaPqJcuXKyadMm4Wcult5QbosAAvFCwMf\/Xpxqp87079ixoxw9elR0MDdPnjySKlWqONVGGoMAAggggIAjCTAA4EjvJs+CAAIIJCABW6doAnrkuP+o\/2UVojM2et8qf\/+ATnMXl\/g\/AOD\/3wBAZH5GUnulloE9h0i7pm\/I2G\/GyPJ1S+Wrr74KgrtlyxbZv3+\/FCpUKMh+XiCAAAIIxG0B\/RzQRPD6RUEAAQQQQACB5yvg\/Hwvz9URQAABBBBAIMEI\/Der29f3cbx\/5MfWM1y6cUEePLwf758lLj2A31MMANjandU7m4wZOE6Wfb9S3mjWSRpUbyRfDBpvrRAoZ6rUqVNHrl27Zqse4vuCBQukQYMG5mvJkiUhjrMDAQQQQAABBBBAAAEEEHBkAVYAOPK7y7MhgAACDizACoA4+Ob+NwDg99+M9ehq4aDve8m5K6fsl3NxdpX0Xhkld6b80rxKe\/Fw97Qfi46NzfvWyfRVU+TR44dSrUQ92bx\/ndQr+6rUfeHVSF3+q6Vj5eqtS\/LBa5+EWX\/qkjFy+95N6dv84zDr2A7YZsvbOs9t++Pj94ePHppmO0kEMYBCebgcWXLK+50\/sB\/JkjGrdOrXXs6cOSMbN26Uhg0b2o\/ZNv744w9p3Lix7aUsXbpUZs+eLc2bN7fvYwMBBBBAAAEEEEAAAQQQcGQBBgAc+d3l2RBAAAEHFmAAIO6+uVHp3I3oabKlzym1Sr9squms\/Gu3LsuqnUvk3NXT4Xa0R3Td0I4v2TJHsqfPJW1rdZFkiVOI\/qxlSpsttKoxss\/2s+7sHP8Xbvr6+hoz26DGswAWyltYmtdvKdNmTjGxpHUQQONIP3r0SNasWWNWBSxbtsx+C\/XTQZQWLVqI5hCYNWuW\/RgbCCCAAAIIIIAAAggggICjCjAA4KjvLM+FAAIIIICAAwl4JUsjLxSoGOSJvJKnkZ9WTZXLNy5K2pTpgxx7lhe37t6UCoWqSsbUmc1lWtV481kux7mBBGzz\/qNjAEAv+9brnWXd1rVy6NhBGTx4sAnzM2DAADl+\/Higu4p0aN5Jypd6UcZ89Zn8e2S\/zJ07V1asWCG1a9cOUo8XCCCAgCMK3PW744iPxTMhgAACCCCAQCQFGACIJBTVEEAAAQTiloBtVnQUIonErQehNVEWSOaZ3JwbeGa8DgbMWf+9nLh4TO7ev22FCvKWWmUaSbkClURDE42Z87EUzl5C6pR9xX5fDfXz2exBVqd\/Ffnz79\/lwaMHsm73Ctl5eIsVomeofLlghHWsmrxYuKo5x+fhA+seP8jfx3eKj1U3t3d+ea16J0mdPK39moE39L5LNs+V7Yc2yX2fu\/JS4WrWqoKAxL6B64W17S8B2ZWdneN\/EuCwnjGq+5MkTipD+wyXlt2bysyZM82XXkv3ay4K\/e9EjRdrSvd274inh6eUKFhC2vZpJfsP75P169czABBVeM5DAAEEEEAAAQQQQACBeCMQ\/9eSxxtqGooAAggggICDCwT0U8vzGJTRjlxNzKtf933uycmLR2Xpll+lYLZi9o533T\/sx75y8+4NaVS+uckP4OriKl9bMfnPWjkEnJ2cJU2KdLJ29\/Igb8TeYzvlxIUjUiBrURPzX8\/R\/AIa\/9\/VxU1OXTout+5eN+doOz6fM8R05uugQusab8udB7flfz+9L3cfhD7DctnWebL8r3mm479FlTdE77f7yF9B2hDeC9tgV+CBjvDqx+VjLq7RP\/dEQwF5p89kHls7\/l+p\/ar89sPvsmPJXvM1esBY0\/mvFfR4Gq80pm6aNAHf9YWPj4\/cvn3b7OcfBBBAAAEEEEAAAQQQQMCRBKL\/rzBH0uFZEEAAAQTirICtUzTONpCGRavAnqPbpPMXQRO3Jrfi8\/dt8SSJ7pGzB8QzUWJ5q35vSW119GvJn7WwfPRNdzl67qBkSpPVrATY8PdqOX7+sOTImMfU2XZggxTMXkzSp\/I2XzPXfCPZM+SyZvxXM8cD\/7P94CY5dv6Q9GzcX4rmKm0OFclZSnpPbCcrty2UxhVbBa5uJfq9JQs3zpIWVrLiGqUamGMFshWV96a+aWanB6kcxgvbuIoOYDhOsQUDevYn0gGbuZPny5GTR6RIvqLikcgjzIteu3HVhADSCkWKFJFBgwZJ9uzZ5dNPP5VLly6Z3AElS5YM83wOIIAAAvFR4LH\/4\/jYbNqMAAIIIIAAAtEkwABANEFyGQQQQACBmBVgACBmvZ\/mbs8jCbB23lcsUsM0Q1cBXLt9RbYd3CgjZ35kOuO1w79IzpIy8q2ppo6G9blw7awctTrrtT0PH\/mY\/XmzFBKvpKmtczeZAQAN57Pn2HaT8Dcyz3jozH7xdE8sSa3BhxMXjtpPyZoupxw5d8D+2rZx9spJE+6nZJ5ytl2SxCOpFYaouLVi4K59X7gb1qoDLc7O0ddpHu79nuPBx4+fTyeUV4pUUqZo2QhbvmztErl87bKp17JlS5MoOPBJ7733nqxevTrwLrYRQAABBBBAAAEEEEAAgXgtwABAvH77aDwCCCCAAAIJQyBtygz2GfS2J65T5hX54KvOsuGf1fLyi6+Z3ev2rJA1O5fJeavzX2fM58iQ24qgH\/A\/raD7yhZ4SXQmf\/Mq7WS3tbJAu9VL5I6481jPv3Lrktx\/eE8+mdFPXwYpoeUAuHD9nKmTPEnKIHVTWoMQkR0AsOUAcHKO\/ysAoiv5bxDMp3iRI0sue+1r166JtidjOm85d\/Gs2f\/w4UP7cd24deuW7NixQypVqiQuLuRgCILDCwQQQAABBBBAAAEEEIgXAgwAxIu3iUYigAACCAQXYAVAcJG48zqmOnlTJU8j3tbKgIOn95mH37xvnfy0aqpUKVZbXqvWUXJ65zOd+13HvRYk3E65gpVlhRWuR+P+77AS8xazOv893D0jBZg4URKTc2Bo+3FWroOgM\/KDvgq4XCqro1\/LPSs\/QOBBAE0eHOnyXwwgVwdIAhxTPxth2b5Y+iX5euT3psM\/T468ktU7q6RKmVo+m\/qpfPvL17JhwwYZPny4CQt0\/vx5mTRpkhw\/flyGDh0qAwcODOuy7EcAAQTitICvPJ\/VV1F5aB1U7dixY5in5s+fX2bNmhXmcQ4ggAACCCCAwNMLMADw9GacgQACCCAQBwQYAIgDb0IYTbgX2dA2YZwf2d16n8s3LkjpfBXMKbuObBXv1Fmkdc237Zc4ZsX61+Lv72fflyVtdjNwsPPwVtl3Yo+8aeUMiGzR62\/99w85d\/W0PYeA\/ixOXznZ5Biwxfm3XS9Luhxm8\/DZf6VU3vJmW+trDoJkVhihyBS\/\/9r+x6Y\/pFiR4pE5Jc7W8fX1\/a9ttswGMd9UHQQIXorkL2rfNWDAAPu2bUNzBfzyyy+yePFiMzhg2893BBBAAIGnE9i6davs2bMnzJMcIeF9mA\/HAQQQQAABBGJJIP6vJY8lOG6LAAIIIBC7AvZQHQ4QFz12JaPv7k4eASFSLt04H30X\/e9K162Y\/1usjnfztX+9\/L5jiYyaPVA01n+lojVNrdyZCshFK+SOJvzVTvNTl47LN8vGmmM+j4KGdilfoJKs3rlUNIFs4RwlIt3eysVqia4C0ETB+07sljv3b8uiTbNFEwvnzpQ\/xHW8kqWWsvlfkjnrp8upi8fk6q3LZrBABxAiW2yhhVasWRHZU+JsvZQpvUzbDh4LmS8hNhtd+YWq0ubVdpI9c3Zxc3WTahVqSPP6LeXlmo3tzfrnn39k1KhR9tdsIIAAAvFFwOexj8TUV0Qmu3fvNlV++un\/7J0FeBVHF4Y\/4p6QBLcAwQMEd3faQilerBT3ClKkQKGlLVYcChQohVK0UCha3O3H3YI7RIEo\/87c7CUKCbm5+g3PZndnR868s\/eGnDNzzhI8f\/480bF79+53NcHnJEACJEACJEACqSTAHQCpBMbiJEACJEACxkEgPFwT1FX6eDEOkSxeigy26beu4KaiPJ\/\/r0aZL4L6Cnc6YjX+gOYjkF9x9SNSFb\/aEEF6J64YJVf8O9m7oHn1DnLF\/o0Hmp0A6iSVL1INq\/cuQcUi9aURQM1\/19nF0RVftRyN37fMxC+rxsjiIgBwu3rd4aPEG0gqdW7YF79tmoYflw2TBgvf7IUh3BAFhj5LqniivJL5y+K6EszYHFKjOo3kMCIjI41qOI4OjhjWR3HxoxyRUZHSCCAEFLs12jZth6DgIPQY1gXLly\/HhAkT4OzsbFTyUxgSIAESMBUCqgGgWrVq8PDwMBWxKScJkAAJkAAJmDQBGgBMevooPAmQAAlYLoGYGI1LF0P7FLfcGXjbyJPyhv+28m9\/NuYzjeL\/7aUAZwcX9P34G4RHhisBdkPg6eotq1Txq5W4qqLYFYaESsVqJno2o\/\/SeHnT+y2Jd++TNT9GdZqs9BGKqOhIuDtrVrWrhbp98IV6Kc+2Nnbo+dFARChyiQDCCcvHK5zEjQhcLFJcN0ZJFDOJLNWdkTF\/bsUOADUJOUsW8Ze3Ls4uEIGDN2\/ejObNm6tFeCYBEiABEkghAeEG7syZM\/D29kbu3LlTWIvFSIAESIAESIAE0kqABoC0EmR9EiABEiABgxBgDACDYDeJTu1t7SGOpJIwDsTERGPt\/r+kz\/6k3PYkVS+pPGFwSE2yU2QSR2pThlgDgGr0Sm19Yyr\/GrG+\/xMEUDYmGZOTpWvr7piyYLIMBkwDQHKUmE8CJGCMBEKjQo1CrIsXL+LVq1eoUaOGDLC+evVqXL9+HXnz5pV55cuXNwo5KQQJkAAJkAAJmBsBGgDMbUY5HhIgARKwEALmoAy1kKkyqmEKX\/3LdsxX3P7YYnCb741KtuSEiY6Jko+srTQxFpIrZwr5MdGxO3dMQdgEMrZt2h7TFk3BlStX8M8\/\/6BJkyYJSvCWBEiABEjgbQRU9z9iF0ChQoWQ0B1cjx498Msvv8DR0fFtzfAZCZAACZAACZBAKgmkn7PeVArC4iRAAiRAAiSQGgLaHQC69TaTGhFYNhkCxry4WwTk7aO4Cfqp22zky1YgmREYV7bYtSCSs5Pp+51XP7fG7AIoudl3c3FD6w\/bIioqCk2bNsWoUaOSK8p8EiABEiCBJAioBoCHDx\/iq6++ggj4e+LECUyePBmurq749ddfMXz48CRqMosESIAESIAESCAtBLgDIC30WJcESIAESMBgBFRFosEEYMeJCcR6d4HiW99Yk6uTG0r5mpaLARFnQCRbOztjxZpiuaKiNbsZUlzByAqO6DcKDvaOWLhyPsaMGYP27dujQAHTMCQZGUqKQwIkoEcCkdEReuwt+a4qV66MPn36oE6dOmjWrJm2oL+\/PypWrIgqVapg6tSp6N69OwoXLqx9zgsSIAESIAESIIG0EeAOgLTxY20SIAESIAEDEaABwEDgU9Ct8ar\/UyC8URYxP6KmuANAvBpWVlYonF+jlLJTDDL\/\/fcfwsM1OzSM8tWhUCRAAiRgRASE0n\/GjBnxlP+qeJUqVULt2rWVOD0xOHTokJrNMwmQAAmQAAmQgA4I0ACgA4hsggRIgARIQP8E0tsA0KdVV4QffqQ9Xh58gLtbLuDgom1o37g1rK0N44\/9o+oNpUxZPDPrHzp7NBAB7dYKA\/Wvu27V2B2magAQJEr7lVGCOdshIiICvXv3xujRo3UHiC2RAAmQQDoQiIiJhL6OtIhfpEgRWf3q1atpaYZ1SYAESIAESIAEEhCgC6AEQHhLAiRAAiRAAnEJ9PlpIILDQpSgsTbImTk7KpesgN9GTUe5YqUwYMI3cYvyOnah+muYj8LaOCbVfHYAvFZWdoqUwYjdRL1rznNmy4VZ38\/F+F9\/xOXrl\/Ds2bN3VeFzEiABErB4AsIAvHfvXjx69AgfffQRHBwcEjFRv0+zZ8+e6BkzSIAESIAESIAE3p8ADQDvz441SYAESIAEDEggvXcAqENbu\/NfPAl8qt7K8\/gBY9C\/bQ+s27URO47uifeMN8Br6v\/5GiRDQPtuGHOk6GRkj5tdpWxVdH7WBUN\/HowDBw7g9u3byJUrV9wivCYBEiABEohDQLhQ69ixI27duoXZs2ejZ8+ecZ5C7qoS36cilSpVKt4z3pAACZAACZAACaSNAF0ApY0fa5MACZAACRiIgNYAYIDF0UOmjcL9Jw\/RtVlH7ejFH7b92nTHyb\/24enO69i\/cAua1misfV6tVCXpPsjTLaM2T1yIcs3rNNHm5VFWF88eNhkB\/57B\/\/7cjRZ1m2Lh6Jn4vGl7bZm4F7Y2thjbeziOL92F57sDcHblIUz88ns4KoFK1VSmiD\/+m7NOynXp72OY9+1UeLi6q495JgG9EYh5HbsDwMQNAAKYjfLZE+ns2bMoVqwYgoOD5T1\/kAAJkICxEQiLCoW+jreNvUkTzf93JkyYIBX+ccuOGjUKAQEBqFWrFkQ8ACYSIAESIAESIAHdEeAOAN2xZEskQAIkQAJ6JKA1AOixT7Ur0fee\/+2HX36Nr1qR\/223wRjcsT\/GL56G4+dPoHHV+lgxfhG6fNcPSzYulwr30kVKQijs46bShUvC28NLZolnf\/24AA729hj4ywgIY8G0wT\/DSVHmX719PW417bUwDtQqVw2\/LJmF63cD0KBSHWmICAwJwvfzJ8DJwQn\/TFmG4xdOoscPXyJzxkwY0nkAMisxBJp+2Vbbjm4vuAVAtzw1rZmy33yVh\/q5NQP9P\/LmzAtbJRZAZGQEQkJCsHLlSnTp0kUdKs8kQAIkQAIJCPzwww\/YsmULrly5ghw5cqBdu3bIly8fNmzYgG3btiF37tyYNWtWglq8JQESIAESIAESSCsBGgDSSpD1SYAESIAEDEJAVSQapHOl00fPnsC3Zj7ZfY7M2TCoYz+Mmfczfl40VeZt2LsFzo5O+KHvCPy1ZXWKxBSr\/IWRwL9NNVy4cUnWufXgNtb9sizJ+mKVf9F8hTBm7nj8unqhLLNmx3qULlwClUqUk\/fiuTAwjJj5A05fOSvzHjx9iCr+FZNsUxeZVP\/rgmLcNsyHqDYIsAnHAFBnplhBP+xcthd\/rf8TM36firVr19IAoMLhmQRIgASSIODm5oY9e\/Zg6NChWLx4MaZO1fyfScQDEHEBFixYAG9v7yRqMosESIAESIAESCAtBGgASAs91iUBEiABEjAYgTcGAAP4AFJG7eLkDNWdSckCfnJl\/9KNK+PxWPLvCrRp0Bz5c\/rEy0\/uRuwGuPf4gVb5L8ptPrAdwaEhSVZ5Gf4SpT+toX3mkz03hCzCHZEwPoh04cZlvHj1Ast+nI\/5fy\/Ghj2bIYwE4tB5MsxU6HwYbJAEUkrAK6MX6im7fYQBQKxeff78OTJmjO\/mK6VtsRwJkAAJpBeBiOjI9Go61e1mzZoVCxculCv9xU4A8f854UbNxoaqiVTDZAUSIAESIAESSCEBxgBIISgWIwESIAESMC4C6kpiQy0kFr76b96\/I6H4ZM8j\/4C99+RBPEh3Ht2T99kzZYuXn9xN4bwFcOjM0USP7ysr9pNLwr\/\/hqnL8WzXDQj\/\/t\/3\/VZxN+QB1V1M2MswfNC\/NSIUNyU\/9R+Ns6sOydgC9SrUSq7JNOe\/Mc6kuSk2oBCwsdYoRSIiIkyeh\/q5Vd9Pkx+QMoACeQtCGALCw8Oxd+9ecxgSx0ACJEAC6U7A0dERJUqUQMmSJan8T3fa7IAESIAESMDSCdAAYOlvAMdPAiRAAiZKQFUkGkJ8sfq\/VKESOHPlnOz+adAzqXD3cIkfWNfLXbMS+Ma9m9JAIArbxlnh5ubsKlfrq2N4EvgsyeC83h6eapF45yyKH\/+N01fC1dlF+vfP09gPxVtWwsnLZ+KVO3DqMEq1rY4SrSpj6PTvpN\/ydb\/8idxZc8Yrl\/YbdQuA+bisSTuTtLdgZ+sgG3nx8kXaGzNwC+rn1pwMAGIspYqVlmSfPn1qYMLsngRIgAQSE4iMiYC+jsS9M4cESIAESIAESMDQBGgAMPQMsH8SIAESIAGTIzDksy\/gqSj356xeIGUXbnZEqlGmijyrP8R96ItQBNy7hbBY5a2n+xtlfmFl5XDcdOTsMZRXFIkerm8MCWKFv1ecOnHLVytdSZbtqQT3XbltLR48fSQNEcLvv7WVtSxa3q8M\/p60VJa7dPMqJi+ZiY7f9oC1tTX8CxWP25zOrpXd\/Ew6JKA1q5gBWHPfHSKCATORAAmQAAmQAAmQAAmQAAmQgDERoAHAmGaDspAACZAACRgdgY9rfYDW9T\/Bp41aKoF++8uAvIM7DcCif\/7E\/pOHpbwiuO6Wg9ulix2hcLeztcOH1Rrgi097Y+6a32WZc9cvIjIqEt92GwThPqhs0VKYPXSSzFMHPWfVQoQrrnp2zt2Atg1bKPV7YfXEP9THic5Hzh6HWFHdvE5T2NvZI6tXZqXNyciXwwdODo6y\/NmrF5S+\/PFz\/+9kv6JMxw\/aIDo6WnE3dCxRm2nKUDXVoAUgTRwTVLaKNeZER0cleGJ6t+a08j8u\/QqxQbXHjh0bN5vXJEACJEACJEACJEACJEACJGBwAjQAGHwKKAAJkAAJkIAxE5j5zUQsHjsHC0bNwIBPeyor6d3Q+8ev0XPcl\/HE7jyqD45fOInd8\/5F8N7bmD1sMn5ds1C63BEFHz17jAETvkGd8tVxee1xbJ6xGjOWz8O1OwHadoJCg1Ht80a4q8QOmDLwR3Ru2h7fTBuNkLBQvAx\/pS2nXtx6cAdj543H50q5Jzuu4cq6\/+FVxCsMnjISBXLnl6v+RQDgPj8NRME8+XF+1WHc3HgWTWo0xsdftZMyqW3xbLwErBQXMyLFmMEOAJipcaiVYlQTRrgnT56gWbNmxvsyUTISIAGLJBAREwl9HRYJmIMmARIgARIgASMnkEHZis1lekY+SRSPBEiABEggMYG6deti+\/btsCnkDit3u8QFDJTjYO8gV+ILtz9JJSsrK+l7XyjvVX\/oajmxct\/KKgOu3r6hZsHR3lEG+O02dgCWbFyuzU944ZM9N+48vIeot6wSF7ECnB2cpKughPV1cR8TFIGoS0FwsnfGtH7J71zQRV+W1MaWo+uwcvfvKOFXElvXbDPpoV8PuI7K9SvCXXFzdUgxhJlTWr5+GUZP+VaJsWErDQFubm7mNDyOhQRIwIQJzLkwRW\/S9yzyhd76YkckQAIkQAIkQAIpI8AdACnjxFIkQAIkQAIkkCICr5SV+skp\/0UDQukvnidU\/otn1ctUxunlB6R7IHEvXAmN6\/stwiPCsfv4PpGVbBJtvk35LyqKnQQiTkC6pVgXQOaxUj3dKKW6YdVtzmvl3WEyXgItGreCT868iIyMxOTJk41XUEpGAiRAAiRAAiRAAiRAAiRgUQRsLGq0HCwJkAAJkAAJGDGBPzetQuMq9ZUYAOuloj5zRm+p1G8+qCNuP7xrxJLHFy3WY038TN69NwGtAYCbNt+boT4qisDaXdt0x4iJQzFhwgSUKlUKTZs21UfX7IMESIAE3krgeVjwW5\/zIQmQAAmQAAmQgHkToAHAvOeXoyMBEiABEjAhAhFKAOBWQz5TAvg6oaoSVPTR88c4c\/W8DNhrQsNABuUfk+4IqDzNw2ujeXuebK4EC99\/bB827foX\/fv3pwFAdx8DtkQCJEACJEACJEACJEACJPCeBGgAeE9wrEYCJEACJGBYAlplqBnqmkXg3q2HdhgW8Pv0rup2uQXgfeglW8ecdgComxjUMSU7aBN+ULNiLWkA8PLyMuFRUHQSIAFzIiBcCRpzevDgATw8PODg4PBOMYODg8EYK+\/ExAIkQAIkQAIkEI8AYwDEw8EbEiABEiABEiCBNBNQtbxpbogNaAhorFxaoxexGDWBnNlySflOnDiBRYsWGbWsFI4ESIAEDE1g9uzZyJYtG9auXZusKIGBgfjiiy8gDKvu7u6yfIsWLXDt2rVk6\/ABCZAACZAACZDAGwI0ALxhwSsSIAESIAESIIG0EDDD3RhpwaGruq9fa4L\/Wlnxv226Ypqe7ZT2K4MurbvJLnr06IGAgID07I5tkwAJkIDJEti9e7d0l\/auAXTt2hVTp05F1qxZIb5XCxYsiNWrV6Nq1ao4e\/bsu6rzOQmQAAmQAAlYPAG6ALL4V4AASIAESIAESEC3BFRPQLpt1XJbew0NUXNwmxMTozFmwMzjRAzsPgRnL53B4ZOHpLJqy5YtlvsCc+QkQAIGJ\/Ay0rhcAIkdbWLl\/5AhQxAVFfVWPkLRL45mzZph+fLlsLW1leVnzJiBfv36ye\/Y\/fv3v7UNPiQBEiABEiABSyfApWSW\/gZw\/CRAAiRgogToDsWYJ44mAF3Ojvqum8MOAHUsuuRjrG0N6\/OtFG3btm0ICwszVjEpFwmQAAnolcDVq1dRo0YN9OnTR\/ZbqFChZPsXxoG+ffvK52PHjtUq\/0WGyPfz88OBAwdw8uTJZNvgAxIgARIgARIgAYAGAL4FJEACJEACJEACOiXAEAA6xQmt0twMgiub026Gd83yX+v\/lEWE4cYcjDfvGi+fkwAJkEBKCMycORN79+5FhQoVIGKlVKpUKdlqp06dgggQ7O\/vj2LFiiUq17ZtW5m3dOnSRM+YQQIkQAIkQAIk8IYADQBvWPCKBEiABEiABEggLQS0MQC4AyAtGN+37tQ5U5C1YGaMHT\/mvZrwLZUPM+fNSLbu5v82yfYfPX6YbJl3PdAaM95R8OvvB+Czr9u\/o5RxPz594ZQUsHr16nB0dDRuYSkdCZCAWRMIehEKfR3vAilW7a9btw4HDx6Er6\/vW4sfP35cPi9SpEiS5dT8M2fOJPmcmSRAAiRAAiRAAhoCNADwTSABEiABEiABEtARAa0FQEftsZnUEFi5dgX8ivhh+d\/L3+lTOTXt6rJsSg0AuuzTUG1VLlNFdn306FFMmDABYiWrJY3fUNzZLwmQgHET6NKlC5o0aYKUxLV58uSJHIyXl1eSg\/L09JT59+\/fT\/I5M0mABEiABEiABDQEaADgm0ACJEACJGCSBKhIM95p49zof25OnD6Bq9ev4qfRP+PpsyfYusM4g86qCh8z8Gb0zkkuWrAYrK2tERoaisGDB0sXFtmyZUOHDh2wePFiUGH1ToQsQAIkoCMC4RHh0NehI5FlM0FBQfLs7e2dZLOqAYBxVpLEw0wSIAESIAES0BKw0V7xggRIgARIgARIgARIwCQJiNX\/+XzyoWypcqhUrhKWrlyCxvU\/iDcWYST47udROH3uDLwyeqJyhSr4bugYeLh7aMsJBdHQ777Bv1s3wMHBEU0aNsHwgSOSXam5adtGzPptFi5fvQQ7O3sUL+qntDkWBfIXkG1OnjkJr8JfoXCBwpg5fyYCbgXI\/JiYGG2f4nr2kpnYsnsjQsJC8UnD5oiJMX03Ug1rNEYF\/0o4+L\/9OHB8P\/Yf24cHD+9jyZIl8hAAihcvjvr168tDuApycHDQcuEFCZAACVg6ATV+io1N0moLYWRlIgESIAESIAESeDeBpH+TvrseS5AACZAACZAACZAACeiBQExMtOzFJhlFR2RkJNb++zc++7SzLNfsw08wZPRg3HtwD9mzZpd5YS\/C0K5bW5T088fkH37Bk6ePMXXOVDx+8gh\/zv9LO4ops35BpfKVMeSLodh\/aB9mzJuOzJkyo\/tnPbRl1IsNW9aja78u6NCmI3p07oHzF89j8V+L0aVvZ+zZtE8Wu3P3Nrbv2Q5rK2u0ad4WIaEhmPf7XIQq8qhp7p+zMW\/ZHAz4\/Ctky5wN8\/+ai8s3LqN0sdJqEZM9Z3TPiMa1PpSHGMT1W9ekIWD\/sb04cuowhN9qcUyaNAn29vYQRgDVIFCiRAmTHTcFJwESIAFdEMieXfM77NmzZ0k2p+a7ubkl+ZyZJEACJEACJEACGgI0APBNIAESIAESMEkCdnZ2GrlNf6GwSfKn0PojEBEVITtzsE96dfgORcH+7PkzCMW\/SB82\/AhDx3yDv1Yvw1d9vpZ5l65ckmWGfz0cfkWLy7wsmbPg8LFD0i+96pqnoG9BLJm7FLa2tmjXsh2OnzyOI8ePJGkAOHT0IGpXr40JYybK9j5s8BHslV0AP\/4yDkHBQXB3c5f5j588xr7NB+QOhX2H9koDQFRUJIJDgxEdHYXpv0\/FN72Go8MnnWT5SqWroFabqjDHj3a+3PkhDjHWiMgInDz3v1iDwD6cu3IW27Ztk8egQYOQNWtW1KtXTxoExDlLliySD3+QAAmQQGoJhMf+HkltPUOXT6kBIGPGjIYWlf2TAAmQAAmQgFEToAHAqKeHwpEACZAACSRHgH7mkyPDfHMjEKkaABSXPEmlFX+vQDEl+K\/qdiejR0bUqloLy1b9iS97fyXd9xRSFPuOSv2u\/buio7Jiv0GdhvhIce8jjripouI+SCj\/1VSxXEVcvHxBvY13\/n7EOO29MEAII8P1m9dl3suXL7UGALELQbgnEknsRFBTqOLu5\/a9m4q7nxjUrVpPzYa7qzuqlq2GIMVAYM7JztYO5f0ryuPLrgPxPOiZ4irogGIQ2CtdBj148AB\/\/PGHPASHkiVLancHVK1ale6CzPnl4NhIgAQkAdUAEBAQkCQRNV98PzKRAAmQAAmQAAkkT4AGgOTZ8AkJkAAJkAAJkAAJGJxAzGuNv\/ykfB0HBgVi286tEGUKlM6vlTU8PFyuMN9zYDdqVKkJZ2cX\/LVgOQaPHIQx47+Th\/DLP+qb0ahVrba2XtYsWbXX4kKs6I+K1rggivdAuRGr\/MdN+gGb\/tuIR48fyVgCObLnlMXiGug8lXgDarpz9656qSj+oxFwJ0Dee3tm0uaLi8zeWc3eABBvwMpNRndPfFD7Q3mIZ1cDrmh2Bxzfi6OnjuDUqVPymDBhglT+x3UXJGIJMJEACZCAuREoXbq03P20d+9ePHz4MNFOqJUrV8oh16hRw9yGzvGQAAmQAAmQgE4J0ACgU5xsjARIgARIQF8E4ioY9dUn+yEBQxCIiAyX3To6Jt4BsG7jWqnoHzv8B0XJ7xxPvBHfD8fSFUukAUA8qFC2InZv3Isr165g644tMlBwu26f4vD2o8iVI5esmwEZ4rXxtpu+A3vjyP+OYGC\/QaiiBBQuUqgoVq1biX6D+8arproXEpl37t2K9yxLJo3BITgkWAlM7KV99uLlm50C2kwLu\/D1KQBxdGrRWc7xibPHYw0C+3D+yjls3bpVHgKLiB9QtmxZdO\/eHZUrV4avr6+F0eJwSYAE3kYgOM7uq7eVM7Zn4rutb9+++PbbbzF27FjMmDFDK6JwmbZ\/\/37UrFkTTZrE382mLcQLEiABEiABEiABSYAGAL4IJEACJEACJkkgKipKI3fK9ZUmOU4KTQJBYYESQrYs2RLBEO5\/SpUohW6duiV6Jvz7r1m\/Gk+fPUXArRv4ZdZkzJgwS7oKEu6Cqlaqhgaf1MPZ82e0BoBEjSSTERERgR17d0gXQ906ddeWOn\/pvLyOUnz7J5WCguO79SmSv4gsdvzMUdSv3lBeC+PemYun4RnHIJBUW5aUJ9wFVShVSR5fdRuEZ4FPceB\/GndBOw\/sQFBIoFSECWWYSHny5EGDBg2ky6DatWuD\/rEt6W3hWEnAvAj06tULs2fPxsyZMyFc\/jRu3BiXLl3Cr7\/+KndDzZs3T7q6M69RczQkQAIkQAIkoFsCVrptjq2RAAmQAAmQgH4IvDEA0AKgH+LsxVAEngQ\/kl2LFfZx0w3F3\/7xk8e0wX\/jPhPXrZq1RmRkpFyVX7hgEZw8fRLf\/TQKt+7cwsNHD7F8zV+wsrJC2VJlE1Z9570Iwl3Szx+79u1S3P88xIuXL7D6n1UywK+o\/OrVqyTbEPLETWIHwAe1PsSEuT\/LVe33Ht7DyMnDcfXmlbjFeJ2AgKeHFz6s\/RF+HDweXdtoDDA5suVAw9qNFMOJJ27evIm5c+eiRYsW8Pb2RqVKlTBq1ChpJNB+dyZok7ckQAIkYIwEvLy8cPz4cdSpUwebNm1Cnz59MG3aNOkOaNmyZdzxZIyTRplIgARIgASMjgANAEY3JRSIBEiABEggJQRE4FAmErAEAk+DNAaA0iVLxxvuyrUr5arHJo2axstXbyqXr4ycik9+4QbI2ckZE8ZOxNUb11CpXgWUrFocm7ZtxJK5S5HJO7NaJVXnoV8NQ1RUpNJWCRQqWwCL\/lyEFYtWSaPC\/04dT7ItUT5h+mHwz\/ArWByf9m+FOp9Wx7WbV9Gk7sepcEaUsMWk76cvmoIidXxhbu7DhBFHJJ9cPpj\/y284tfMMNv21GUP6fYNKZSvB2soahw4dwpgxYyCCB3t6eqJZs2aYM2cOrl\/XBG1OmhhzSYAEzIVARHgk9HWkltnChQvl93KbNm2SrZo1a1b8999\/CAoKwsGDB+UOgGvXrqFp06R\/\/yXbEB+QAAmQAAmQgIUSyKD8EfTaQsfOYZMACZAACZgwAbGiVSi1bIp6wMrF1oRHYj6ix4REIupCIOxtHTBzwJ\/mMzADj6TbpBaKciQG108GwMnJKc3ShISG4MWLF8iSOUua2xINiB0Ajo5OcHVxfWd7Xfp+jn+3bkC7jztiRL+R8cq\/Cn+FkLAQZEoQEDheoTTcCAPArD9m4Px\/V8zKXcSilb\/h5zk\/onK5ylgxf1UiQmKuDxw7gD0Hd2O3EhT6WsDVeGXy588vXQXVr18fwl2Qm5tbvOe8IQESMH0C9ed\/oLdBbO36r976YkckQAIkQAIkQAIpI8AYACnjxFIkQAIkQAJGRoA7AIxsQihOuhFwsndC2KtQPHh0H\/l88qe5H6GoT4myPqUdZc6UckNCZOwOAFubxP8FdbB3gDiYUkfASlnhL1Jy34nCaFS3el15iHL3HtyVhoDdB3Zh3+F9EKtohX9tcVhbW0t3QcIYIA4RWFjkMZEACZg2gciIpOOymPaoKD0JkAAJkAAJkEBKCST+6yulNVmOBEiABEiABAxIgBvYDAifXeuVgKO9s8YA8OCBTgwAehU+QWdqDACbJAwACYqm++2M36dKpXlEZATWbF6NTxo2x8DuQ\/Dk2RNMmj8e+4\/tkzEUShUrjaG9hyNX9txSppPnT2DczLGYMGwyxk4djVMXTyJ7lhzo23EA6lWrn+5yJ+xA7A4RKUOGlMVDyZ41B9p+8qk8hNHg1LlT2t0Bx08fw759++QxcuRIGTxY+N2uW1cxICiH2C3ARAIkQAIkQAIkQAIkQAIkYFoEGAPAtOaL0pIACZAACcQSiI6O1lylTOdFbvogEDsXNM7oFrabk7ts8NLVS7pt2ACtRUdpVqFaWxt+DcrdB3ewevMqbNi+HpXLVIGHW0aIHQqfD+qAwycOYkDnL\/Ft\/1F49OQhmvdsikdPNbEYQhU3RWcunkbXIZ3hldEbg3sMhb2dPfqP7o0792\/rnepLxXWSSPb29qnuW8QPKFW8FAZ0\/wJrFv2Nc3svYMHUhejYqpOMKfD8+XOsWrUKPXv2lIE28+bNi27dumHFihV48uRJqvtjBRIgARIgARIgARIgARIgAf0TMPxfX\/ofM3skARIgARIwAwJUMhvhJGqNMQwvpMvZyeyRFdfvX8aJMyfQWZcNG6At1QWQjREYAMTwhXL\/34VbkC+3ZmX70rV\/4KoShFjk5c2VTxKqUaEm6rariZmLp+G7L7\/XUmv1QRt0a9tD3lctVw2121bHgeP70erD5ANZaivr8MIqg2Y9T3S0ZidAWpp2cXZB\/ZoN5CHauXXnFvYc2oN94jiyHwEBAZg\/f748xPNSpUppdwdUq1ZNiQXhKLKZSIAEjIxAWGi4kUlEcUiABEiABEiABPRJgAYAfdJmXyRAAiRAAjojoPV3nUK3FzrrmA2RgJ4JZM6YTfYYcOuGnnvWfXfq51asPDeG5K2s4FeV\/0IesbK\/eKESWuW\/yHN2ckGdKvVw4tz\/xK02VfCvqL3Oljk77GztEPYiVJunrwvVnVJMTOyuKB12nDtnbrRv0V4eYu7OXTqLvYf2yuPoiSM4ceKEPCZMmAA7OztUqVJFaxAQ8QOMZZ51iIRNkQAJkAAJkAAJkAAJkIDJEaABwOSmjAKTAAmQAAkIAqoikTSMjwDX\/+t6TjRbK9SV3rpuXZ\/txbzWvB1WRmK4y5pZY1xRGdy+fwtZMmVVb7XnLN5Z8PDxA+29uPD08Ix3b6sYAKIVJbm+k7qbQusWLZ0EEMr84kVKyKN35z4IjwiHMAJoDAJ7OP2kuwAAQABJREFUcObCGezcuVMew4cPh7e3Nxo2bIjGjRujQYMG8PSMzyudxGSzJEACJEACJEACJEACJEACCQjQAJAACG9JgARIgARMgwANAKYxT5Qy7QTUld3W1tZpb8zALahjEYF0f1+1UAauFcFrEx14k6dcQhg\/tGWUDCtrK1QqXQWZvTKnaUTWVvGZijgAwSFBidoMUvJyZdMEAVYfpjTorlo+vc7qe6Fv44OIe1C1QjV5DB0wDIHBgdh\/eD\/2Ht6DPQd249bdW1iyZIk8BKty5crJ3QEiqLDYKfA+MQvSiyHbJQFzJ\/AiVBMrxNzHyfGRAAmQAAmQAAkkTYAGgKS5MJcESIAESMDICagxAIxkIbGR06J4pkzgNWJXzRuJ25y0sLSKVbjvPrwL4khLEm55ZoyZnZYmEtX1zeOLZf8shQj06+LsKp+L75ojpw6jWEG\/ROWNIcMm1jBkaKOoh5sHPqj3gTwEl+sB1\/Df3u3YoRxH\/ncYR44ckce4cePg4OAAETOgbt268vD396e7IGN4mSgDCZAACZAACZAACZCAWRKgAcAsp5WDIgESIAHzJ6CuvhUeRbSxZ81\/2CYxQs6HbqdJWQsvG1SNXrptXb+tfT\/8ewwbOxQREREQ44l3KKLIMar5iuFDfL5fv46JzVeulX+BQYF4HvgcL16G6Vz49p90wpK\/F2PYhG8wot8oONo7Ys7Smbh5JwDf9h+t8\/7MucF8PvnRXRwduuPlyxc4rBgB9h7WxA84f+kctm3bJg\/BQLgHql27ttYgkD+\/JiizOfPh2EiABN4QePDgATw8PKRx8E0ur0iABEiABEiABHRFgAYAXZFkOyRAAiRAAnoloBoA9NopO3s7Ac1CdaUMTQBvB2W5T0sW98e\/KzalCcCMudPx\/cSxaWojucqZPDNh3s8LMWLiUNRoVVm6Hcqf2xfTv5uNciXKJ1fNoPmhLzSGEAd7B4PK8bbOHR2dULNKLXmIcs+eP8X+I4q7IBFQWHEZdPvubaxatUoe4rmPj4\/WXZDYJSDiCTCRAAmYJ4HZs2ejd+\/eWLZsGdq0aZPkILt164ajR48m+UxkTp06FTVq1Ej2OR+QAAmQAAmQgKUToAHA0t8Ajp8ESIAESIAESIAETIiAuhMitUbAfp99AXGo6cchE9TLeOfSfmWwcdFWPAt8KvM9PbziPa9arjoubL8aL0\/cHFt\/MlGePjLCVAOA4lbHVJJnRi981KCJPITMN+\/clMaAfYf2YJ9iGAgICMD8+fPlIea5QoUKMpiwCChcunRpaZgxlbFSThIggeQJ7N69G\/3790++QOyTdevW4fHjx8mWCwpKHLsl2cJ8QAIkQAIkQAIWSIAGAAucdA6ZBEiABMyBgKoENIexmN0YuAFAp1OqxrngO6\/BGqO4BBJJdY2kydX9z4SKf933oJsWo6OjZEMJAxrrpnX9tJInZx7kaZEH7Vu0l+6ezl08K90F7Tm4B4ePH8KhQ5pj5MiRyJo1Kxo0aID69evLXQKZM6ctELR+RsheSMCwBF6EhRtWgAS9i99nYuX\/kCFDEBWl+Q5LUER7e+\/ePan89\/Pzw969e7X5cS+cnZ3j3vKaBEiABEiABEggAQEaABIA4S0JkAAJkIBpEFCVoapy1DSktgwpqf+3jHnmKI2DgLoTQv1ONA6p3l8KMR6\/IsXl0euz3jJ+wL7D+7B9nwgovAP3HtzF77\/\/Lg\/RiwggLIwB9erVQ9WqVelD\/P3RsyYJ6IXA1atX8fnnn0tlvouLCwoVKoRLly4l2\/fJk5rdVeXKlZNxApItyAckQAIkQAIkQALJEqABIFk0fEACJEACJGDMBMxF2WXMjCkbCRgjAe1nn9Y\/OT1WVtbyrO6MMMY5S4tMIn5AvZqKgl85RLp09RJ2H9iF3Qd3y8DCQjkojvHjx0vlf\/Xq1bUGgRIlSsg6\/EECJGA8BGbOnCmV\/8K115IlS\/DDDz+81QBw4sQJKXyZMmWMZxCUhARIgARIgARMjAANACY2YRSXBEiABEhAQyAmRuMGhDyMkQD3AOh2VjQ8tYpv3TbO1kycgLoDQPGdY+IjSZn4hXwLQRzdO\/ZAeEQ4jp44AuEqSBgEhOugrVu3ykO0JtwFiSDCqrugbNmypawTliIBMyMQFRFtNCMSrnyET\/+PPvooRfE81B0AYrePCBYuggFHR0ejZMmSaNq0Kdzc3IxmbBSEBEiABEiABIyVAA0AxjozlIsESIAESOCtBKgMfSsewzy0DP2jYdiyVy2B17HGP63iW\/vEMi9U3\/+W+J1ob2ePqhWqyWPYF8Px9NlT7Du8VxoD9ipGgfsP7ssVxmKVsUjFixdHnTp1ULNmTdSoUYPuRCzzI8NRG5hAly5dUiWBagBo164dbt68Ga9u7ty5sXjxYvl5jveANyRAAiRAAiRAAvEI0AAQDwdvSIAESIAETIWAVtnFxeamMmWUkwRIIB0IqJ6QzNUFUGqQeXl6oWmjj+Uh6l25fkUxBuyCMAYcOHYAZ86ckceUKVNgZWUF4YJE7A4QQYXLly8Pa2uNO6XU9MmyJGAKBCLCIkxBzEQyhoSE4Nq1azLf09MT3333nfys3r59GxMnTsS2bdvQpEkTnDt3Djlz5kxUnxkkQAIkQAIkQAIaAjQA8E0gARIgARIwSQJaAwBoATC2CeTKbN3OiMrzzTuv2\/ZNrbWY2J0mquLb1OTXtbwZFEW2SBbiAShV+ArkKwBxdG3XDRGRETh+6jgOHN2Pg0cPyOuDBw9CHEKp6O7uLncHCGOAMAr4+Pikqi8WJgES0D2B8PBwDB8+HEFBQTJWgKurq+ykSJEi8nPaqFEjbN68GUOGDMHSpUt1LwBbJAESIAESIAEzIUADgJlMJIdBAiRAApZGgMpQS5txjpcESCApAlYZNAYAxkVJis6bPDtbO1QqW0ke6AW8ePFC7gqQAYUP7Mb1m9ewZs0aeYhaBQsWlApGYQyoVasWXFxc3jTGKxIgAb0Q8Pb2xtixY5PtSxgHhAFg\/\/79yZbhAxIgARIgARIgAYAGAL4FJEACJEACJkmABgCTnDYKTQJpJvD6tSYAeAbu\/pEshSsbkfidKDGk+IeTkxPqVq8rD1Hpzr070l3QHsUYsO\/wPly+fFkeM2bMgI2NDapUqSINAiKocNmyZaULoRR3xoIkYGACMZGa700Di6Hz7sVOAJFu3bqFyMhI2Nra6rwPNkgCJEACJEAC5kCABgBzmEWOgQRIgAQskICq9LLAoRvxkBkFOH0mR+PmigpeDV2Vg+oaKX2Ym06r6nehahgxHcmNS9Kc2XOiXfP28oiOjsbJcyexe\/8uGVD4xJn\/Yffu3fIQK44zZswodwXUq1cPwiDg6+trXIOhNCRgJgRE0F\/h3z9TpkwoV65colE9e\/ZM5omdAlT+J8LDDBIgARIgARLQEqABQIuCFyRAAiRAAqZE4I3yj0pno5k37VQwLoPRzAkFMXsCVrHBEFTDiNkPWA8DFMGAy5QoI4+ven2N4JBguStgzyFld8ChvQi4HRDPXVCePHkgjAHiEC6DPDw89CAluyAB8yewY8cOfP7558iVK5cMBpxQyb9r1y4JoVSpUuYPgyMkARIgARIggTQQoAEgDfBYlQRIgARIwHAExFZvkWICIwDbqDeCaJXQb7LedZXBKo7COs4lRL5sT\/khzuIkIm2Ka5FkXuyNrBdbOW4bb4vMKarGrSfbjG0v9iSytEnmJfEgiSxtndRexJU9lXVfh0fLGpFREfhj2xyER4bD0c4Jbs7ucHF0g8gPj3iFiOgIZdgZYG1lrSC2QgblsFJYi\/sMGaxhLXyavyXCq52NnYJe+aew1RwxiJHzooBQ6kmFqHJ+8SoMwS8CEfIyWJazUdq3trJBdEwUIhRZIqMileKafq2tbaQsooyVovwT5YQ8oi8nBxe4OLgq4\/CAq5M73JWzu3K2UZ4x6Z+AnGul2zdGQP3LYEw9WinvqUiMAZB+s+Lm6obGdRvLQ\/Ry++5t7D28B3sVY4BwFyRWKc+fP18ewngg3AU1a9ZM7g7w8\/NLP8HYMgmkkICpugASQbnt7e1x+\/ZtLF68GF26dNGOWHzuvv32W3k\/bNgwbT4vSIAESIAESIAEEhOgASAxE+aQAAmQAAmYAIEHDx5IKaNvhZmAtJYlolCw7z611bIGneRoY73Ua40q6n1c7\/XKtXiu2C5iFN\/22lXcSp4oJZTcqsI7NDQ0yV4sLVN1dXPqwil8PqijYtBRuClHdEw0IiIj8OLlC3lER0cphiVhzFGMTMohDU7KWbjMkVyVOsP7jkSVslVNGqFqwNS+OyY9GtMQPleOXPj0k3byENzPXTyLPYf2YNf+nThy4gj27NkjDzGazJkza90FNWzYEDly5DCNQVJKEjACAtmzZ8eUKVPQq1cvdOvWDX\/88QeaN2+OO3fuYO7cuQgMDMSgQYNQo0YNI5CWIpAACZAACZCA8RKgAcB454aSkQAJkAAJvIWAp6cn7t27hyyZs8gAjXFVqoreVKa4K4TjPo+bL5Q3ERERckW5qKQq0cQ5KipKKgqFwlA95Cr12NXqjx4\/wstXL+GR0QNenl6a1eiipRi5Pl0qcEXwyOSSUNyJssLftEhCLitrpS+xKl55Ju7lP6EMFtfKEVtQ+0yMVc1Xz5pCqf+Z1hXEjx4+gjDMeHp4ombVWnBQVu2FvQhDUHCQPIut+\/Z2DsphJ5Xdor\/oaKH0VlbwxypwxTlGYaJkJjsAsXJfJJWJVOhqQMh6gr5IDvYOcHdTVuy7e0jlb5RST9S1UVb7ixWFdnb2mn4VRXFUVLRyHS3nPEqZD6E8FvMi3o3QsFCEvlCOsDCEiWvlEON6N69YSbRDSXgvxUz6h0AgxqGtC2VHw4uky1pYbvYs2eWInwc9w8H\/HUjT6A+fOGjyBoDw8HDJwMaGwS\/T9DK8Z2XxPeRXpLg8enfug5DQEGzf+580Buw\/vB\/3H93H8uXL5SG6EDsChCFArGyuVq2a\/C56z65ZjQRSTCD6heb3ZoorGFHBnj17wsvLC4MHD9bG4hDi5c6dG9OnT0f79u2NSFqKQgIkQAIkQALGSSB5rYRxykupSIAESIAESEAScHd3lwaANUvWoKBvQYNQadWpFXbu3YnOnT\/D6DGjDSKDMXU6d85cDBo4GAXyFcCMn2cYk2jpIotwQyVWnQtDgDDkiBX8GgOGci\/+xRo44uUrhg21jJovygkloqOjo2K0cJSGpChplBCGiSjM+2MuFi1bhCyZsqTLOEyt0Y5tO8HBwRH3HtyVxhxhZBNuV4Rhx9HJSRqghLLI3tZeGnyEMSdCmSthABIGJzFvI8eNQMCtAMVAZPq+2sMU45RI4v1hMjwBVxdXfNyomTyENNcDrmH\/kf3YqewO2H9kH86ePSuPiRMnyjkTK5dr1qwpdwmUKVNGvsuGHwUlIAH9EVi4cCHE8bbUsmVLiOPu3bvS5ZYIvC121zCRAAmQAAmQAAmkjAANACnjxFIkQAIkQAIkkIiAUP6K9LZV\/okqmXGG1hVJ3GXrZjxesaNB\/EvvlFHZUSGS2OnApCHQqlmrNKEY\/eNIWd\/d1T1N7RhDZeHySCSx44XJ+Ajk88kPcXRo1VEan46ePIrdB3ZJg8D5S+ewefNmeQjJXV1dUbt2bYwYMQJly5Y1vsFQIhIwMAHhQotutAw8CeyeBEiABEjAJAnwL0mTnDYKTQIkQAIkoLq7UV32GIKI6rpHrD5mgnbl6rtd45BWagio77j6zqemLssmTUC4eRLJztb0Aznbxo5B7BZhMm4CwmhYuVxlDB0wDFtXbMOJHacw86dZaNe8PfLmyYeQkBCsW7cO5cqVU3aWdZYu1Yx7RJSOBEiABEiABEiABEjAFAjQAGAKs0QZSYAESIAEEhFQlaGqcjRRAT1kRCt+40WyogFAw0GJXSCSIedECmBmP1SDiogNwaQbAupuCtWIp5tWDdOKcDkjkroTwDBSsNf3IZDJKxOaNvoYP48cj73\/7MPRrcch4ggIw9SiRYsg3Jz89NNPUOM8vE8frEMCJEACJEACJEACJEAC\/EuS7wAJkAAJkAAJvCcBugCKD07rAugtAXzj1+BdigjE8lSNXimqw0JvJWCtBNsWSf0Mv7WwkT90cXSREr569crIJaV47yKQLUs2DPtiOHb8vQsNajVUgo6HYejQoShatCj+\/vvvd1XncxIgARIgARIgARIgARJIkgBjACSJhZkkQAIkQALGTkBVhhpytbkI1CqSqkw0dmbpLZ+6Ql0Et2XSHQERUFgmJVAwk24IWFtp3HaZww4AreFNfU90g4itGJCATy4f\/DZlAfYd3ovR40fh4tWL+OSTT2Sg4ClTpqBEiRIGlI5dmyKB5\/\/cNEWxKTMJkAAJkAAJkICOCHAHgI5AshkSIAESIAH9EjAGA4Cqb1Nl0S8B4+tNdYXEDQDpMzd8z3THVX1XVSOe7lrWf0vqe2FIY6j+R20ZPVatUA1blFgB44b9CA\/3jNi5cydKlSqFXr164cmTJ5YBgaMkARIgARIgARIgARJIMwEaANKMkA2QAAmQAAkYgoCq7FKVX4aQgX3GJ6D6VVfnJv5T3r0vAfJ8X3LJ17O20vwXWI2vkHxJ439iFbubwRzGYvy09S+hCDLfsXUn7NuwH10+7QrxO2\/OnDkyPoDYDRAZGal\/odgjCZAACZAACZAACZCASRGgAcCkpovCkgAJkAAJqARU1x1COWKopCpmaYTQzIDqikSJAmyoKTHLfvme6X5a1e8Nc9gBYKW6huLnTvcvihG16OHmge+GjMH21TtQs0pNBAUF4csvv0Tx4sWxadMmI5KUopAACZAACZAACZAACRgbARoAjG1GKA8JkAAJkECKCKgGAHXVeYoqsVC6ElBjIXAlsm4xO9g7yAZfvXqp24YtuDXVAKB+j5gyCtXwpo0VYcqDoezvJOCbtwCWzPoTv8\/4A\/ny5MelS5fQuHFjeVy8ePGd9VmABEiABEiABEiABEjA8gjQAGB5c84RkwAJkIBZEFCVzIY0AKgKtwxgcFbxUqlBgFUuZvGiGcEgnJycpBQvaADQ2WzY2drJtsIjwnXWpqEasoLmv\/PqThFDycF+9UugTrU6cjfAyIGj4eriKncB+Pn5YcCAAXj+\/Ll+hWFvJEACJEACJEACJEACRk2ABgCjnh4KRwIkQAIkkBwBdeWuupI3uXLM1x+BDLF+1amI1C1z1bOL1tWLbpu3yNa8vTLJcT8Pemby49fuAFBfFJMfEQeQUgK2trbo3qE79q0\/gPYtOyje115j2rRpyJ8\/P2bMmIGoqKiUNsVyJEACJEACJEACJEACZkyABgAznlwOjQRIgATMmYDWABAbANMQY1UV3YwBoKFvw2Ck6fIaGsNul3QZmAEbzZI5q+z96fOnBpRCN11rd97QAKAboCbYipenF34a8TO2rNiGKuWryh0A\/fr1Q8mSJbFlyxYTHBFFJgESIAESIAESIAES0CUBGgB0SZNtkQAJkAAJ6IWAUIiqKxsNugMgNtYtDQCaaedK5PR5\/aNjomXDGTLwv226IpwzR07Z1DNz2AEQGwTYmPX\/rbq2QIWG5eQK9aTm8MKVC8hZMjvW\/Lsaew7ultc379yURfsN7Ytmn32cVDXmJSBQpEARLJ+3AgumLoRPLh+cP38eDRs2RKNGjXDgwIEEpXlLAiRAAiRAAiRAAiRgKQT4l6SlzDTHSQIkQAImTiAiIgK\/\/\/476tevD3t7e9y7d0+OyMbGxsRHZj7icyVy+szla8XgJZKVFWNN6Ipwnpy5ZVPPzGAHgGqAVHck6YqRLttp2aQV7t6\/i\/+d+V+Szf797xo4OzmjUe1GyJo5G1o1bQ0XJ5ckyzLz3QTq12yAHX\/vwogvv5VcN2\/ejCpVqsj4AIGBge9ugCVIgARIgARIgARIgATMigANAGY1nRwMCZAACZgnga1bt6JAgQL47LPPsG3bNrn6P7N3ZnzV5ytk8tb48jbkyI1Z8aZPLtoYAPrs1AL60roA4g4Anc123jx5ZVvPgkzfBZDWAIDYLUk6o6S7hhrX\/QCOjo5Yv\/mfRI2K78+1m9biowZNlDJOKJi\/ICaP+QXCrQ3T+xMQga57ftYL+zYckOxFSyI+gK+vL2bNmgXVjd7798CaJEACJEACJEACJEACpkKABgBTmSnKSQIkQAIWSuDKlSto0qQJbt26hSKFimDyuMm4cuIKzh05h6FfDzUKKqoCziiEMaAQ6gp1GkR0OwlR0RoXQNztojuuQtEskjkoQa2tNbug1J0iuqOku5bE6v7GdRpjw7b1UA1aautHThzGvQd30bJJS5n1v9P\/Q6M2DXH\/4X21SLzzrTu30O2rLtKlUMGKvmjYugH+3rgmXpnfly9CtSZV4VshP+q3rIv5S+fFe25JN5mUgNe2NrZyyD5ZffH06VP06dNHxgcQBnUmEiABEiABEiABEiAB8ydAA4D5zzFHSAIkQAImTWD69OkIDw\/HJ00+we6Nu9GhTQd4uHsYxZhUn\/eqj3ajEIpCkAAJvJNAWFiYLCNWSZt6Ug1Dxv49JNwAPXj0AEdOHImH\/O+NfyNPzjyoULqizA8NC8GZC6cRERkRr5y4CQkNUYwDDfDoyWN82eMrjBw4Gna2thBxAi5dvSTL\/7d7G4aPG4YPlF0HM3+aqQTFrYLR40dhxbrlidqzlAzVKNv\/k2HopxyZPbLi3Llz0qXeRx99hMuXL1sKCo6TBEiABEiABEiABCySAB0nW+S0c9AkQAIkYDoEtmzZIoXt1qkbjG2lvao8jIiINB2g6ShpTIzGBYmxzVM6DlkvTdtYW8t+1MDXeunUzDt5+eqFHKGqPDfl4QoFuEgRkcb9PVS5XBVkU\/z7\/7N5HSqW0Sj7IxWZN2zdgK7tuqZoCo6ePApXV1dFsT8LObNrAjlXLlcZ1ZXV\/sdOHUUh30I4ePwg8ubOi2\/6a3aINajVEGKXhJWV5nOUoo7MrJBqABDfzWULVYK\/b1lsPfoP1u1fjg0bNkDECOjbty9GjhyJjBkzmtnoORwSIAESIAESIAESIAHuAOA7QAIkQAIkYLQExKpEcTgp7jr8i\/sbnZx2dprVwxHKDgUmRQEZoeGgKqzJRDcEbGLdd9AAoBueohWVqeJ+3uSTaog0ZhdAArKVlRWaf9QC\/\/63Qet6afeBXQgMeo4WH2nc\/7xrMmpXrY1Dm45I5f+r8Fc4d+kc9h\/ZL43DL1+9lNVLFi2JG7duoGOf9tI1UGBwIEZ89a3SR4t3NW+2z+MaAMQgbaxt0bhic0zoORc1\/RvI+ZgyZYqMDzBz5kwZZ8dsYXBgJEACJEACJEACJGCBBGgAsMBJ55BJgARIwFQITJ06VYravElzRWFnfJvW1JXuqnLFVLiml5wRERqXHTaxPsnTqx9La1d999VYAJY2\/vQYr+oTPTo6Kj2a12ubUdExsj81CLdeO09lZ0IJ\/\/TZUxw8dkDWXKP47hcr+NXV\/Clp7o+Vf6D2JzUh\/P9\/+GljrN6wCuI7WP0ebtKwKYYOGIbjp45L10AlaxZH5\/6f4eHjhylp3izLxLzWvCPWCXZBuDl7oHOjvhjz+VQUyVMCz549kzsB\/P39ce3aNbNkwUGRAAmQAAmQAAmQgCUSoAHAEmedYyYBEiABEyEQGhoqJS3tX9ooJRaxCUSys7c3Svn0LVR4rAHA2sZyXW2kB3OtASDKuF28pMfY06tNO3vN7h2zMKrEKnczIEN64dJZu755C8Dfz19xA\/QPXrx4ga27tirBf1unuP1V61dh6PdDUEFxIfTnnGU4v+8Clv36l6wfdzdHn8\/74uTO0\/hr7gp0av0Z9h3Zi+5fd0txP+ZWUMtGcQGUVMqdWXGZ9OkP6N\/8TXyAtm3b4tWrV\/GKiwDOs2bNgggevH37dmkwiFeANyRAAiRAAiRAAiRAAkZJwPiWUxolJgpFAiRAAiSgSwL37t3DzZs3pS9nPz+\/ZJv28NAE+w0ODk62jCEfWMf6ZhdKESYgOipaYrDKwPUFunwf1FW7fM90R9XeTmO0M4cdANHRsZ87q6SVu7qjppuWRDDgX+ZMRvVK1WGlKKRFsN6Upi07N6Fg\/oL4cfhP2ionzpyQ1zGxHOb+MRf3H97DKCVAcNUKVeXhYO+A+UvmQXyGhCsii0uxFgCrdxiJyhSshAI5imDY\/L44evQoihQpgubNm+OLL75Azpw5MWTIEEycOFGLT\/yOvnHjBtTf1S9fvsSxY8eQK1cu5M6d2zJZa+nwggRIgARIgARIgASMh4AF\/g\/YeOBTEhIgARKwNAKXLl3Cxx9\/jBw5cqBy5cooXry4VC7cv38\/EQrhimDTpk0yP69P3kTPjSFDdTmhugIyBpkMKUN0lMadimoYMaQs5tR3dIyq4OV\/23Q1r7axgXOjzcB4F2Vi74dw0RMUHITJcybhg3ofwsnJKcXTWs6\/PK7fvI7jp49LZf65i2fRf3g\/WV+NAZDfJz\/mKUaA1RtWIyQ0BKLMrv07UaZkGYtVSGt\/V6XA+CHcAvVqOhBODi4ICAjApEmTpEJ\/wIABWLVqVby5CgwMhI+PD8aMGYNRo0bBy8sL1atXR968eVG4cGFpDIhXIR1uxE4S1QiWDs2zSRIgARIgARIgARIwCwL8S9IsppGDIAESIAHjJ7Bx40aUKFEC69atg1h9W8a\/DJydnbFmzRq5ynDw4MHxlAUzZszAlStXUKhAIdSsVtMoB6h4nTZKuQwlVGSsixqrBH6mDSWPufSrrlJXA9eay7gMOQ51l4qqGDWkLGntWx2DqRgiM7pnRN0adXH52mXF\/U+rVA2\/1cetUadaXbTu2hK+5fOhfe926N+1v7KboAZOntXsBKhTrQ56fdZb2WUwCUWqFELDNg3g7uaO6T\/OTFVf5lRY3T1knQIDgBh3MR9\/TOw1D8M7\/CxjA4i8adOmSYOAuI6bgoKCpPJfGAHEDgBHe41BR\/z+btCgATZv3ozvv\/8eK1eulEabuHXfdv306VP89ttvOHfuXLxi6lhE5qFDh+Dp6Qk7OzsULFgQJUuWlLsUIiPpLi0eNN6QAAmQAAmQAAlYPAG6ALL4V4AASIAESCD9CQiXPy1atIAIEtuqWSuMHjoambwz4e69uxg8cjC27tiKCRMmyKNs2bIoU6YMduzYIQXr9GknODo4pr+Q79NDrP7fVBRv7zPE1NSJjg1GamUirkhSMzZDlo2M1OysUGMBGFIWc+n7xcswORS72J0Apjwu1fWNatQwhbHMm\/xbsmIKZf6dU\/e0z6f\/OEN77eHmgd+mLFAUzS\/wPDgQ2bNkl88SGhKGfzkC4rinuALycPVI1S4DbWdmdPHGWJ3ytV\/Oyg6AgjmLytgA3y8ejJuPriNXJh+ULVQZjwMfYMcJzQ49FZODnSN6fPQVShesiAdP72LI3J4yRkCjRo3UInBxcZHugqZPny53A2ofJLgQRq1atWrhzJkzcu7+++8\/qej\/\/PPPpWsi4WKoWLFiOH\/+PNRYPMLgINLp06fl7oPOnTsnaJW3JEACJEACJEACJGC5BGgAsNy558hJgARIQG8E\/vnnH7kysE6NOpg56c0qzBzZc2Dp\/KU4cvwI1v27DsvXLJe7AIQPYZGyZc2GujXr6k3O9+2IBgANuajYVZeqz\/r35cl68Qmork0cGGw6Ppg03D168ljWtouNBZCGpgxeVXURlSGFq7sNLrAOBHB0dII43pVUA8G7ypn7c3WXyPvGPxjRcTxEG+rvuuCwQFy4dQaBoc\/QsmYnlMxfFsIA4OLoKlFm9cqBUgXK48SVI\/I+X7YCeBr8BEGhzxEaGopmzZph9+7d0l1QUuzF\/xmE8l8k4eJHxCAQ7ogePXok865fvw5xiJQjSy58020k3FzcseSfhdh2YBOuXbsmn\/EHCZAACZAACZAACZCAhgANAHwTSIAESIAE0p3A8uXLZR\/VKldLsq\/yZcpDHMMHDcfBIwdxI+CGdNnwYaMPjXf1vzISVamS5KAsMDMqNggnYwDodvJDQjVBsN1c3XXbsAW39vixRpEoVpSbelJdoqjKWVMfD+XXPQH1d1XK1\/8nliHu+yXiBPzUfXY8o0DCGl0\/+AL7Tv8HO1t71C7dGOERrzDit354pOweEEm4FBLxAhImsaJfBBsWqXC+Yrh4\/RyOHNEYEnxzF8SovuPw5PljXAm4hEyemVGxZFVF+e8my1fyryoNAEuXLpVuh0SmaO\/y5csyVoGrq8ZAIQvzBwmQAAmQAAmQAAlYEAEaACxosjlUEiABEjAEAeH3d9euXcjokRHtW7d\/qwhOyopOsUsANd5azOgexlWMGJ1wehRIDcRoSSuR9YE3NCxUduPuTgOArnirq8fNwVe4agAwJRdAuppHtpMyAtp3xEq3f\/q97Xef2A3QsEIzrYD2dg6wsbbV3osdAGJ1f8Ig0CKmwKVLl2S57weMx6SFP+KCYgSoWa4O+ncYJGMI5cvpi\/LFK2nbUi\/qVW6E6Usmyd0Cv\/76K9q2bYtq1apJt0AiToCISTBnzhxkz65xHaXW45kESIAESIAESIAEzJ1AWhaCmDsbjo8ESIAESEAHBNTV\/wP7D5Sr+nXQpNE0oSoPbW11q1QxmgGmUpDoKI2v+pQGmkxl8xZbPDAoUI7d29PLYhnoeuBOsXFFomLfWV23r8\/2VBdAjL2hT+qm2df7ugDS1WijYzS\/I0R7T548wQ8\/\/JCo6fXr18s8D9eMyJYpByYOnoF\/5+zEoC4jpPI\/UYU4GWJ8wggg0rhx49CrVy+p\/Bf3IgaRaHvgwIE4deqUyEoyBQcHQ+wgELGLmEiABEiABEiABEjAXAjQAGAuM8lxkAAJkIAREpgxQ\/nD\/d9\/pWR+Rf2MUMK0iRQVHRuc1ZoGAEFS3QFgaCVT2mbV+GpnQAbjE8rEJQpUAsiKZA5xFdTV3W9bjW3i00XxzYSA+jvT1kazE2D8+PEoV64cWrZsia+\/\/loG\/lXd\/+TL5fteo25Q9QO4Orvi1q1b+PPPP2UbVUpXR7\/2X8vrZcuWwd\/fHw0bNkRYmCYYeNyOihQpgvbt28sgw1u2bIn7iNckQAIkQAIkQAIkYLIEqLEw2amj4CRAAiRgOALCp+7YsWOxZMkS2NjYoEmTJmjRogUqV66sFerOnTvo37+\/9BHc6dNOqFz+zTNtIRO\/UBXe4374EdOnzUCPXt3xxZdfmPio3l\/8iNggwKfOnsLM32aiT5c+798Ya2oJODu7yOutO7YiODQEr2Ney8\/V69cxMj9GCc4pfHyrfr7V60T3MZrySklZVtRTLpQ7TTwL0a5Isn5sGe29Ui48\/BVE8NxsWbJBNfKofciKcX4kzE94r7arKq3FOe61aF8oCe0Vtx1W1tYIUcatprjltHmxRhL1mcjPYPXGcKLmq+eAmzdk1UdPH2HA6D4CA2JiohGjMBWyqkyFcl1wlnkKH\/FcFI5XTpSRFFVpEp\/fZcQJCgmS7bonEZMg9EWo7F\/ILg7p6keeNfeBwc9lh3QBlJi7ueScuXAaS1ctUYysMfLdi2v0Ud9p7Vn5LGiv5TtjPBTU3SqRUZFSKLED59ixY\/JIKGX+3AUSZqXovnC+opg9ahFWbFqqxB0IR+7sPmjRoI0SpNhBiSdwHsfPHcHz4GcQyv38+fNLI0GBAgVknIGnT59qV\/4HBgZKI4EwBojFDHTBliL8LEQCJEACJEACJGCkBDIof9Bo\/tozUgEpFgmQAAmQgHERENvjhR\/dQ4cOJRKsfPny6NOnD4oWLQo3NzcUKlRIKgoPbT+EvHnyJipv6hmf9\/kc6zdp3BWIsZQtVxbbd\/5n6sN6b\/l\/X\/Q7+vcdoK1\/7fh1ow7irBXUyC9GjBuOBUsXGLmUFM\/QBKqUr4rl81YYWgz2nw4Eeg\/phX82r0tzywuHrNMa79Lc2Hs0MGh2N20Q4JKFS+OzZt3wPOgZTl06gRPnj6Ja2dooUdBfkTEDKpSsAmsr6\/fo5d1V9h3fjQm\/fY8ngY\/l\/1VCQhTDapw\/iRtW+xAvX73AwZP7EBEZAR8fH2koqFQpcdyBd\/fGEiRAAiRAAiRAAiRgeALcAWD4OaAEJEACJGBSBHr06CGV\/zmz58SsybPkDoD1m9dj9drVcgXdkSNH5Hi8vb3l2dnZ2ex8\/6sTtmDmAlwPuI4Vf6\/ApOmT4ikQ1DKWdO70WSfkzJkTn3zcXA5bXVFuSQzSY6yfte2Mly9fytWsmvY1K3wTrvLV3seuANbey1XAymp45SySUluuEH7zXDyKs2o4wXNRTzzfsXcHrl6\/ggJ5C6Fy6SratuRFgh9q22p2wntNZUWeWKWbUL6pCjixmj5GWW0fFR0JsUJYrMB3dHBSqgj53+xSEG1o66jtxFmJrz4T5dTshCv1JQtF2Sj+iV0HKgexml5eK3lWsePPEJsn7uUOCHFW8tTnsp9kfsSTJYkyUxdNlrmD+gyGtbLjIW5yUXaA2Ci7IV4rOw3EzgPNroQ3uxDE50zk1aleN241XpsRgZjoaDma7F65kC97QakYV98pcVbfa3kV+1kQFeSz2PsieYobVPkv5Pmy1Ugs3jIHF26ehnfGTNpAvsJtjz5T1TI14FegBJoPaAyxqEEk\/yJl5GesZvm6+KReK\/mZu\/PgFoZM+kIJKnxduidauHChDCysT1nZFwmQAAmQAAmQAAnoggANALqgyDZIgARIwEIIiNX9f\/31F5ydnLHqj1XInze\/HHm50uXwzZffYP7v83H85HHsO7hPBvjL7J0Zv079FZ4ZPc2WUD6ffMidM7dmfHEUL2Y74HcMrE7dOtoStrYaP8\/aDF68FwHfvL6YNFajIH6vBnRU6cHD+9IAUNavHL7uOkRHrbIZQUA1AHTv2IO7ZvhKJEugeL7S+LRu12SfG\/sDYcDI6plDGgAM7bLKwy0jZnw7H7+vnS+NAe0\/6pwIX86subHghz8xccE4bNzzDz799FOIGALC\/aHY5chEAiRAAiRAAiRAAqZCgAYAU5kpykkCJEACRkBg+fLlUoqZk2Zqlf+qWE6OTujfs7+8Fat2A24FIFeOXLC3t1eLmO1ZVWSoKzLNdqCpHBgNAKkEZuTFIyIipISODo5GLqnpisddM6Y7d5Q8ZQTU2CVqHJGU1UqfUkXyFcNPX\/3y1sbtldgBg7qMwNVbl3E54CLWr1+PLFmyyEDCYkFEnjx5EtU\/e\/YsmjVrhhs3bqBmzZrYunWrwXdfJBKSGSRAAiRAAiRAAhZFwMqiRsvBkgAJkAAJpImACIonUr1a9d7ajggM7JvP1yKU\/wKEGmyUBoC3vhZ8aOIEXilBgEVyVIx9TOlDQA2Smj6ts1USMDwBNYCxajg3vETvlsDO1g4Lx\/2FH76YJAu\/evVKukL08fFBy5YtcfHiRaxZswajR4+WgYNLliyJq1evKkGbo7F9+3Y8f64J1P3unliCBEiABEiABEiABNKHAHcApA9XtkoCJEACZkXg9OnT+OOPP+QKNvEHbXh4OOzs7MxqjGkZjKrIEH7LmUjAXAm8VJReIjk7OpvrEA0+LlU5anBBKAAJpBMBNV6BMewASO0QHz97qK1SWNk9cE3ZFbBq1SqsXr1aG49EFLCxtkEF\/8o4fOqAjNsRFBQEV1dX+X8ncd6zZw9at24NBwcHfPnllxDuFRPG\/tB2xAsSIAESIAESIAES0AEBGgB0AJFNkAAJkIA5EggNDZWr2ebOnYuQkBDtEIsWLir\/kNVm8II7APgOWAQBdQeAi5OLRYxXv4PUBDgWQX6ZSCARASXgtEiq8jzRcxPKUN9xa6v4wa5NYQhN67RA6ItQ2NvZ49MPO+Hh0wcYMWUgzl87Cwd7RzSt3Rz5cvmiqK8f8uX0xcDxfXHw5D4UKlRI7ogUOwe8vb3x7NkzREZGyiEPGDAA06ZNw6ZNm1CgQAFTwEAZSYAESIAESIAETJAADQAmOGkUmQRIgATSi4D441T8IXr06FG5vf3OnTuyK7Firc0nbVC2dFlUrVg1vbo32XbVlYx0AWSyU0jBU0AgPNYFkDMNACmglboiQr8rYojHRNMAkDpyLG1qBNTfkxmsTM8TrXAF1PmT7lrkWbyyYvzAadh\/Yg\/KFCuHbJlyaJ+Ji2E9vsPkRT9hz9EdCAsLQwblg\/7woWYXQdH8fmhUvQkWr5uPa9euoV27dqhXr57cGVCiRIl47fCGBEiABEiABEiABNJKgAaAtBJkfRIgARIwYQKnTp3C5cuX4ezsDHH9559\/QgSvU1NJv5KY\/ONklCjGP0ZVJkmdxR\/1IqmKjaTKMI8ETJ2AugPA1dnV1IditPKrq6ONVkAKRgJpJKC6ubI2QQNAUkPP6O6JD2t+nNQjeLp74fsBExAcGozIqAg4KAGFwyPD5W4BJwdNLJX6VRqh9ZdN5MILsfhiwoQJcHd3x+TJk9GhQ4ck22UmCZAACZAACZAACaSWAA0AqSXG8iRAAiRgJgREgLoyZcrIIHVxhySC937d92v45PFBqRKl6Jc2LpxkrrU7ABQHDUwkYK4EMoCGrvSbW8H2NVTlaPr1w5ZJwLAEXse6ubLKYHougN6XnJuLm7aqM+K7UHNxcsXEITPw26o5uPvwFm7dv4knT55g0KBByJw5Mxo0aKCtywsSIAESIAESIAESeF8CNAC8LznWIwESIAETJSCC0S1fvlyu9BcBfUVydnJG8ybN4eHhgQE9B8DN7c0fqyY6TL2K\/SYIMN136BU8O9MrAWsbzX8bIyIj9NqvJXSmdQEUw+8QS5hvSx6julPOykpjULRkFurYiygBhScOni5v7z68g+FTvsaVm5fQsGFDlCtXDmvXrkXGjBllHAF1wYFal2cSIAESIAESIAESSAkB03O+mJJRsQwJkAAJkECSBC5cuAB\/f3\/06NED06dr\/tjM7J0ZAWcDMGncJHw7+Fsq\/5Mkl3TmmvVrkClfJty5d0cWUFfvBgQEwN3FAzmy5tQG+lNb+GPxH\/LZrVu31Kw0nfv27oea1Wq+tY3ePfugdo3aby2THg8jIqgoTg+uhmrTlgaAdEcfE6MxyqZ7R+yABAxEQN0BYG3FdWhJTUGOLDkxa9RC9GjdD86OLtI1UL58+eDk5CSPn3\/+OalqzCMBEiABEiABEiCBtxLg\/7zeiocPSYAESMB8CBw+fFiuJgsMDITw7V+5YmVYW1mjdnX9K4bNhWqVilXkUK4HXJdn1QCwa+cuZMqcCY8fPcbRI0dRuUpl7ZAPHjiEvHl9kDt3bm2euV6IleJ2dnbmOjyLG5eNtea\/jZGRkRY39vQesOpeKSaGbsTSm7Uptm9OcWbUOBdW1lyHlty7KOIDdGzaBeERr7Do73kIDw+HrY2tPH\/zzTfw9vZGly5dkqvOfBIgARIgARIgARJIRIAGgERImEECJEAC5kfg0aNHqF+\/PoKDg9G4fmPMmTIHjg6O5jdQPY8oS6YsKJC\/AK5dvyZ7Vg0AO3fsQqNGjXDkyBHs2L4jngHg0KFDqFGzpp4l1W93Qlkl3DwY0lXM\/Yf34eToBHc3d\/0O3ox7s7bR+OwWwSyZdEwg1huKqhzVcetszsQJmJcBQGPkUl3nmfjUpKv43Vr2QYOqH+JV+EvkyJwTHb9phQdP7mHjxo00AKQreTZOAiRAAiRAAuZHgEsvzG9OOSISIAESiEdAuGEZP368VP5nz5YdC2YuoPI\/HqG03VStVBVXrl2RjbxW\/HcLI8DuXbsUJX8N1KxVEzt27NR2IHYEXLt6TT5TMzes34D6dRsgT04fFMhXEM2btcDlS5fVx3LeevXoDd98BWSZDxp9iGNHj2mfqxfL\/1qBiuUrwSeXD1q3bIP79++rj7Tnub\/OU3Z\/+KOQb2EM6PcFXrx4oX1Wp1ZdrF61RnsvLr4b9Z0sp2YKOTf+uxGirH9xf2zbug0\/\/zQeY0aPwYrlK1G1UjXkzpFHKv9FHX27ABL9DR07FIUrFkKZ2qVRpFJheZ61YJY6BJ7TQEC7AyCKOwDSgDHJquoOADUuS5KFmGmxBNT3Q\/Wfb8og1DFYKTsQmd5NIHe2PCjoUxgrt\/wplf8+Pj4YPHjwuyuyBAmQAAmQAAmQAAnEIcAdAHFg8JIESIAEzI3A+fPn0b59e5w4cUIOrVG9RrC25h\/dupznqhWrYuGShbJJ4b7j5MlTeP48EDVqVIezsxPmzpkr7zNm9IBY\/S9S9erV5Hnd2nXo2L4TOn\/+Gfr07Y1zZ89hwYKFaN+uA44cOyzLDPp6MPbu2YvBQwbDy8sLC35bgEYNGuPSlYvw9PKUZc6dO4+x341Fr949pcHg1zm\/okO7jvhvxzb5XPw4deo0njx5ihEjRyiK\/zCMHjkat5U4BGvWaZT+pxS5Hz9+rC0vLm7evImHDx9p804rbXz1xdfInSc3fAsUQJasWZQ2bktDgHiv2ndoJ2NIDB82QltHnxe9BvXC\/sP70K1DN1QuXxkhoaHYvmc7vp80Fs+eK2P\/+lt9imN2fVnHugAKZ2wH3c9t7A6AC5cvIDgkWLavKkrfnGMQFR0l44pEKG6YhLFRGB1fK\/\/Etfj+kTsIlN038v61xiCp3GrKau81K7BFJ6KuPItCShIn0Z80ZsYpr+5MeK30IZ+LMuKfOCtHUivURb6mTc1ZXsf2p57iPo\/bjmhPHCLgqXqtKsHVe1tbW22\/Ik9NajlxH6HsVhHuU4RxUByvFJcq4hweEQ47Wzt5hISFKN8VwQhTDKIvX76U10HKHGjywtCjY08M\/\/L9vtOePnuKWYtmwt3VHbly5EJBxcibSYm74+bqBgd7B1XkVJzfsExFJaMq+iYGANehpWZidh3ZLovPnj0bFSpUSE1VliUBEiABEiABEiAB0ADAl4AESIAEzJCA8PcvAv2eOnVKjs4ntw\/Gjx2PWtVqmeFoDTukyhXe+PcXSjfh\/79osaIyBkCVqlWkcHt270bTj5sqBoDD8PPzg3cmb5m\/f\/8B1K1XF1OmTZH3ooydvb1U5otYDR4eHti\/bz\/atG2N7j26yTKVq1RSlPff\/Z+9swCM6mji+B+ihCSQBA8uwd3dWlyKS5EPL1a8aKE4JVDcXQsU1yLFtbg7FHcIFg98O3vZ4y4CkZfk7jLbHu+9fbuzs793uUtmdmeEYf6Z3gFABq216\/9Cjpw5ZBsyeE2dMk0aCslIRiUwMBBz5s1GyVIl5TXFEP6xWQucOnUaRYoUlnUR+Yf6\/b1rhzTMqfYUYurUmZPIkjWLrBoy+FdpFPwgDPBIoVrF7PHDxw\/YvX8XenfujZ4\/9dIPVqViFZmkedWG1RjUa7CR3vpGfBIhAtYcAihCnKLSSBmtO\/XV\/ZxHRQb3iRkCZy+eibLgzTs3Yc6S2WH2txZJtR0dHJE0SVJ5P6TDhBwsVKj+lXBgqnN5Ysb\/KGcSL0aI3EN89+Gt7KC+0yPXm1szASbABJgAE2AC8Z0AOwDi+zuA588EmIDFEbh48SIqVaokw7vY2dqhSf0mGD54OBwTO1rcXE1hQsnckiFDugy49+AeKHzHPhHyh8L\/UHF2dkbBQgVBhn4y7h87egzlK+ru0f3xnr\/TQZbXr17j6tWrMkQQVdBKVHIAFChYANOnzYC3uK5Zs4Y04JMh37CkTJlSb\/yneko6POmPyXj06BEyZswomzo5OaFosaLynP6pIWSRAerkiX8j5QAgBwStyjUs7u7ueuO\/Yf0Hb+EAiKVCRjJywJAjIGQZMXAErl6\/InMSqFW3O\/7ZgdmLZuHG7RsyUXGeHHnxW\/\/fRBimbFi2eik2\/b0Jaxet04saOvZXXLlxxahuyJjB4ufKCWfOn0aFMhXRpW0XfXtfP180\/F8DdO\/wM6pWqip\/HkdMGIG9h\/6R50ULFsXIQaOQNk1a2efE6RNyp0Lfbv3Qa3BPZEyfCQumLIBLUhe9zLg+USGAAjkJsOaPwsnRGa+9Xsn3ojKMKqcAghe30zX97NF9OqqfQ7UiXsZUF23pqOqor7qm9vr64BkYrpynKnVtKJ\/6G42VkDQR\/9Gqe\/pfHJXxWvWXsuhmcFH1IY+G90mmodFb7WKQsoUtXI1BbWgnQoBBKCp1j+QZnlPiVFs7W9jZ2MFOOFfpRflv6EiOUvo5pTwhbq5uSJIkCZzFc0iRPAXoM3Xnnp2YNmeafu5K18gcrcX4VGi3AX1XvHz1UupNOpJT1uudl3xFVKZjIueINjXZdur5qPeUySpqYopVKV0DyzYvxJIlS1C5cmUT047VYQJMgAkwASbABEydADsATP0JsX5MgAkwgUgQeP\/+PRo0aCANjPVr18f0CdOh9WqxstXK4tqNa3qtSH7mjJlRvHBxk3M0nDp7ShpZShQtIfUlg9KSlUvQrFGzKIZf0E\/b6KRgvoLSAUAGnePHjqNb9676+xWEM+DQocPSoE9hdgYM7K+\/R6v8KX7+1i3b5Ip+ChOUNm06eV8ZSabNmIbuXbtjzqw5mDVjFlxcXdCxYwcMGDRAb5hKnTq1XiadkHGLSlBgkDzSP8WE8Z8M\/qqQ8SV58uR4\/Dh0rgDVJqyje1r3UNUUmiisEpvxzJ0cnfB9+e8xe\/FsPHvxHLWr1kaZ4mXg4OCALBmzyJfScduurejQqwNaNG6Jjq06CsP+VSxbsxTte7bHgc0HZGLno\/8exY1b1+GRNbs0KK7dshZeb71w6+4tZM2UVb6v1mxcgxEDRuLFy+dY\/OciIwfAXhF66Pzl8yhSoLDs37hdI\/x3\/z85Zp4cuTF\/+XxUb1INh7YeliuA3394j7MXz6Lv0L4g5wAZJk3J+E\/sVAigAPE+56ItgaTOSaUDYMH0Baj2XTVthbO0KBH49+S\/sl8C4QCJaqFE5FTIoXDmoPFOAsrB8vjpYzx5qvsMTiAcK6oo47h06ojKtl3bis+ZF0jlFvrzV\/Uxl6PaAZAwAYcjjMwzK5iriHQAPH36NDLduC0TYAJMgAkwASbABCSBL5YABsIEmAATYAJmT2DYsGG4efMm8uTMg8m\/T9bc+K8A5c+TH53bd5aXHz9+lCFW5iycg+vCYLp1zVbVLE6PZIyv3qA6po6fCuUA2LhtI34Z+gsa12+sqW6FCxYGyaYVpWT0phX4qtBugBnTZ+K0CLVDRn3Dex3bd8IJERaInAJlRV6A3HlyY\/Wq1ejU4SfVHeQUWL5yGV6\/foPdO3dh7dp1MvEu7Q7oIvIGUKGFuN8qgUKvkIUcEClTfonREyBCCRmWN2JM5YhQ9WoVuLqmY0TGN2wfU+ezJs6WBvT1W9dhnTDYk3OqWKFiaNm4FepUq6Mf9vip46hYphLGDxsv62pWqSVXXv8+ZRzevnsrjPZFQQ6FwyeOSAfAFbF7gIx1KUTsblqpTw6AU+dPyd0GlctVlrG9\/1z\/J84JA36BvAWlzI07NqFcyfJiZXEybP57M85cOIOlM5fhu\/LfyfuVRL+8ZfJIh8WAHgNkHTmofmzY3CiEkbxhIv\/oQwAFBZiIRpajBn1eUVHOO8uZmfnOJOiT7jNTGeOjMhOHRIlkNwrTFrKQczJr5qzyFfJeyGvatcAlfhNwcdbl\/Dl06JB03hONiRMnolWrVvEbDM+eCTABJsAEmAATiBABdgBECBM3YgJMgAmYPoFr165h2rRpMhzDVM+pMsxBTGmdJnUaNKjTwEi8e2p39B3SV66Ep5A4cV1CGq5JHwobEROlQN4CUqyPrw8Ki3j6FG5HleIliksj+vJlK1CkaBE4OupCMZFBaM\/uPejXvx86d9U5U6jPpYuXZVcyCPr6+qJr566o36A+ataqiSYiF0Djpo2lkfnMGePVpGq88I4XRD6IABG6Re0IOXPmrNyVkFPkK6Di6JhYJCt+o+9OxuibN2\/JhL\/6ShM\/ofA+03+fjqF9h+IfEWpn\/+F92CdeR050wulzp0SIn+Hy54NC76jy2uu1XEqY16QAAEAASURBVOl\/994dWUXPkEKClCtVXiYUbvtjWxz59wgK5iskQ3iQ8+DHhj\/iwJEDyJ+ngEjomVyGD0mdMrUw9G+Rz4acBXv274bncE8p8\/ipY9Kh4ObihgtiV4Aq5Kg7efZfdSmPJYt+cR4Z3TCBC7UDINAg9IoJqGURKqhwNmQU5mIaBJQDwMoq6jsAlOE+LAeAaczSNLUY8EcvHDq1L1zl9i4+jhMXjmGgaLd55h64JU0WbltLuZEtQ3aULFAWx84dkr8b0Lxat26NXbt2YdmyZfK7zVLmyvNgAkyACTABJsAEtCcQ9d9otdeFJTIBJsAEmEA0CPTo0UOGJWnVrBXy5sobDUlR6+rqoludZpVQt63\/iFg9\/V2d7\/D6zWsjgd\/\/8D02bd8k646fPC5X6e8\/tB95S+ZF3aZ18cbrDeo0qYN9h\/ZhwG8DkK9UPvkaOmaoNGArYR+9P6Lfr\/1QqGwhZC+cHS07tsTDRw\/lbW8fb1Srrwuj4TnFE137dMXfe\/7GmIlj5P3ajWtjzYY1SlS0j2rufr5+oJA\/hsXe3h7kBFi\/br3RPVtbW5kfYO8\/e2X4HzIar161BrNmzpLdfX18QX1tRR6H34YNx78iVj8l1d22dRvu3buHEiV1yXwNx\/ra+Zs3XujWpTtevXyFO3fuotfPvVBQ5BeoVKmi7JYvf34RW3gpTp08JeX36dUH5hpqgGJ4N6vfDHP+mItz+8+jYZ1GmLdsHi5duyTnSqv8B4wYgALl8yNP6dxo+3NbXL6mc7wox1HlspVxTBjuyRFyVDgAShYtiRKFS4gdAMeljP1H9ouQQ7rV\/LRC+IcaP2Drri3y3s59O6Uxplql6vL6waMHoBA\/NZvVQLXG1fSvk2dPgu4ZFnfhXDPV8kHMgUpikbiUi7YE\/AN0K8RVyBhtpbO0qBBQIcxUGJ6oyFDPUzl4oiIjvvZJ7poCv3UbG+ZL5VaIT2wof8aEX6bhr8nbsHHGLlQs\/r2c\/ooVK\/Dwoe53n\/jEg+fKBJgAE2ACTIAJRI4AOwAix4tbMwEmwARMkgCtBqdVYM5OzhjUZ1CM60hGUVpNTi\/KO3D+0nlMnjkZ5cuUR1p3XVLTd+\/eyfqQho\/zF8\/j1atXUsd379+JBKpn0GtgL5lDwNHJUcY9v3j1Inr074ELly6gV5deMmzKrPmzMHfxXNmPjLQNWjTA5u2b0fCHhvAc6SkdB+RcoDjtlHCxTYs2sm250uVQp0YdGde9QtkKsq5189aaOkkMQ0RUqKgbQw4U\/A+FAaLwQCo5sLo3dNivoISq2bPmQHr3DFgwfwE2bdkoY\/ufOnVKNhs0ZCCyZ8+OhvUbwT1VWrRv2wE\/9\/gZbdvp5qdkfetYuXIl6UDIIsLXUM4Ch8QOWP7ncv2qwbHjxohwQy6oXPE7uYr97du36NK1i\/7+t+SHdV8l\/AzrntZ1ZOAvXKmQkZOIxqAV1SMHjpTD\/Xtat9q++4Bu2LRjI7q274Y96\/\/B5SNX0Kl1JyOVKpWtJN9Ll8R7kVb9lxIr80sVKyXDXdH7k1byq3A+1LFB7Yby3vlL54QjYCuqVKyCxIkTS5m0o4CS\/d46eRu3Thm\/Dmw5aDRuwmAHmlGliVw8e\/FMapI5XRYT0chy1KDPUirKYGw5MzPfmXwK+iSVp\/BplKz30ZOHuHDlAvYc3IO\/Nv8lHX4Hjx2QuTtu3rmJx88egxzThiVRcAggFeLJ8F6UzsV3X3wpjg4ir0up6mG+1EKD+MLCcJ5pUrjj6JmD+h0SLVq0QLp0utxBhu34nAkwASbABJgAE2AChgSsDS\/4nAkwASbABMyTwIkTJ6Ti1b+vDrUaPSZnsvOfnUiT3XilMoVC2bBiQ6SHJWdCi6Yt0KdbH6O+FG9921\/b9AZoWqG99+BedO3QVe4gOH3uNFbMX4EqlarIft8Jw3WOwjkwc\/5M6QRpUr+JzrFQpDiqVq4q25ABd+mfS6XTILGDzjhrNGgUL5ShmxL0li5TOpSUvv36gF4hCzkE9h3cJ3cAkKHI2dlZNnnz7suuCfrDnnIA0GrUBw8eIH369Prkv9R4+sxpIcVKR8PbD176+pmzZ+jPX796LUMSuSVz09fRCeUfOHXmpEgK\/FjqoUIVGTZ6+iJ0wuCwxice5KShsFCxVfLnzo8nz55g4\/YNaFTXOMfDvYf3pBrZRUJfCsVBYYF6duqJDi076NW7cv2qPA8K0sVip10EeXPmFcl6F0CGdipQWCaOdk3qCs9p45HcLblwIuXT98+VPZdw5GTHjj07cPDoAcwYP1N\/zyNLdqzfuh43bl\/X5wggPv2G9UUOj5xo36K9vq0pn6jwUYqRKetqbropR6mWn0vmxsDU9FW7gcjIn6dsrgirlzplGuTMlkPE9s8mws7pnAhqN0GEhYRsmCBkBV+HReD8tbOYs2Yabt67DoqZX6FoZXRo3BU21jay+YK1s0BJiMnhtu3AJtQsXxddmveUn\/EzVv4hwuscgY+fN\/J5FEDP1v2RKllq2W\/R+rnwD\/BDprRZsHLrEjx58Ri5s+bFL+2GIFXyL78LXb1zGSu3LMGZqyeRyT0LKpWogh8qN9R\/Z995cAtTl03AtbuX4eyYFJXEKv72DTsjMjsaaLfQjJWTESi+q+i7tkmTJmGh4DomwASYABNgAkyACRgRYAeAEQ6+YAJMgAmYJwFK5krFJalLrEwgZ\/acaNGkhRyLDKqPHj+SSXBrNakljfLp3CO3Gq108dBG89IlSuuN\/zRQ5kyZcfvubTnmsX9FTHURZz+ZSLBKOwpUyZs7L06c0jlDVF1sHNUOgKjmGEiZMuU31bSyskLGjBm\/2e5bDVzddKGawmuXJs0XY0Z4bUyxvnD+wihRpCR6Du4pQv1cRpniZaQz7Io495zhCY8sHjIhMIVeImfBAWGkp+TA5Oggo\/385fPktHxE3gVVKFHv9PnTUCR\/EX1OjZLCibRNrPCnEEPK8aPa0y6AKXN0ybcrlqmoqsU4LTFr0Uz8OvZX9OnaF\/ly58PCFQtBiYO3r9qub2fqJ8oB4C3yJHDRloByAHAOAG25Rkdareq1MHvhbGkcJmcAfc7T5wc5aRwTOwqDsL\/Mo+Ln7yfD75GRnxzaT8ROAHrtPbxXPzzVc4lZAjf+u4ZuI9uhRIHSGPLTCDx9+QTzhcH\/zsPbMnQOjU6G+5OXTojPbqBo3hJi12QS6azuMaYjHj57II31FGt\/zd8r0G5Ic\/w5YZMw1DsLWY9xXDgH6D1Qs0JdJE7khEXr52DwlH5YMGqFnNiTF4\/Q9\/duyJE5F\/q3+xXX\/7uKyUvHw1GETKtSugbuPborZP6IjO6Z0O3HPvL9M3fNdKknhTqKSKHPiXHzhuOjzwcUKFAAGzZs0OT3goiMzW2YABNgAkyACTAB8ybADgDzfn6sPRNgAkxAEjh79qw85smVJ1aIZEyfER3\/19ForG4du6Fw+cJYuWYl+vfqb3TvWxfuaUKvFE\/mZpzUjxK8KiPKg4ciproIPVS1vm5lv6H8yDofDPtG9dzaSvd1qlaMRlWOpfRThnHNwl5EAAw5SFbPX40RnsOxdecWzFuqCxfl5OgECucz\/jdPabwjUQN6DMToSaNRsGIBsfLSGgVEMl\/q26htI5y9cAbZxMpdKpWFA4AM+iVE\/H9VKBQQOQAqB8f\/V\/V0pDwAY4TcFsLgr4zlVE+OOZLfZ2gfNO\/YjKrk7oJxv46TiYRlhRn8Y2djJ7X09fviJDEDtc1CRZVYmQzLXEyDAOXSuXf5XqSUoc+8Q8cO4cDhA7gqdhVRThsKdUfh8aJTEkBYrONZIYN5tQ7lQs166uC58MiYI1T9lGWeyJrBA+P7TtU7Z1Mnd5eJgk9f\/heFcxeTfV6+eY6VnhuQQRjiqfxzfCcu37oIz35TUaqgbrySBcqgRqeKWLV9KTo27ibbvX77CisnbEC61BnkNfAZ01f8gfcf38EpsTPmrJ4ujk5CzjTpKChXtBLevHuDdbtWSwfA3L9mwE7k9Jn92xJ5JCEuzi4YIpwIzWu1DnNOwQPpD79NH4j9\/+6Roe0mT57Mxn89GT5hAkyACTABJsAEvkWAHQDfIsT3mQATYAImTuDgwYPYsWOH1JJiu8dVISN+DhH24OiJo1IFvRE4QBdShSopL0BYRvKw4vmq\/mHNh0LlkKH\/0M5D+j\/0Vbuv9VNttD6qJJFhzU3rscxBnnoGKq55bOlMRveRg0bJFyX6pXwQ6dOmD\/UeKVOiDHas3oHnL56DQi+Rk4DKw4uPjFQtUqAIHl82DnvUpnkb0Cvs8lmO1UgkHQ5Z8oldB7vX7ZE60a4ZCjFkWCifQMixDO+bwrlyavixA0DTx6FW\/5NQtZtI0wFYWKwRIIdixbIV5SsmBo0\/GQAgVt4nQZ1K9UNhJKN5yELfvVdvX0aHRl2NPu\/LFako8mokxoXr5\/QOANckbnrjP8k5d\/WMWNHviKROLrh254peNDkZqJ8qyd1SGhj\/gXSpdI6Ajz4fpQOAwg6VL1bZ6Ge4X9vBen3OXT2NAjkL467YkaAKhSmi78tLN85\/0wFAjgoy\/tPuR\/q9j3YAcGECTIAJMAEmwASYQEQJsAMgoqS4HRNgAkzAxAiQEfGXX37BlClTpGb1atWDR1aPONOSDK7\/3f9PJtwlJVQyy9der6FW+N+4fUMT\/cjRsG7TOty4eQMF8+ucHmQA6D2oNyg8Ee1OUEZotWtADhy8iDKqoXrCUz5BQp1go7HCaxwP6pURM0CEyIirQol36fW1EtII\/7W2X7vn7eMtczSMn+YpnWBFCxYNt3nSJEnDvWfqN2iXBRXOAaDtkzJ0AGgrmaUxAfMl4JLEFZ2adI\/QBGh1vp+\/L5K7GjtWqXNylxR4\/lqXwJyuU7ilooO+UFggCqnTYWhLfZ06SZXsS0i8pE7Gn93KIUrf+\/R68OQekiVNrrrKo\/o9xNfPB17v38jEvYdO7TNqQxcUruhrZdmmhTK3AbXx9PRk4\/\/XYPE9JsAEmAATYAJMIEwC7AAIEwtXMgEmwARMmwAZu+vVq4ft27fLECad23VGvx79Yk3px08eSwM8DUi6kJGfQv9QaJCWTXV\/ROfwyCF1Gz95PEYPHY2XL19KAz2tkIxuad28NabPnY5BIwbhl56\/iDAq+TF\/yXysWLMCuzbskuJpHIrXfOT4EeTPmx95cuaRsXjp5tadW1G2ZFm9YyK6+ijDKLHgAr3zJUCEw4gPZdX6VRgyZrAM67B+SeQTYccHRjzH8AkEioSkVOJjmJfwqfAdJhBxAhSChwqF4wlZ3n14C\/cUX8IMWok4\/oaFwvaQoX\/5+HXiu8vwzpfvMqr92s8nOb0T2Tvgg\/cHIwG6\/BABcheCrY0t6n3XWIQU6mrUhi5UGMFQN0TFwnVzsGDdLPm92qdPH3TsaBx+Maw+XMcEmAATYAJMgAkwgZAEjH8DCnmXr5kAE2ACTMAkCVDIHzL+u7q4YsfaHRjaf6g+SWlsKHz+0nn81Osn+erSpwumzpoKNzc3rFq4CkUL6VY\/0+rq34f\/joNHDqJwucKo37I+OrTuAMofEN1CMdXXLVsHX5GwtXHrxsheODt2\/rMTniPFyrh8X7bFt\/mxDdZvWY+GLRvKIUsUKyEdAd37dcfUOVOjq4a+v1rxzg4AHRLFQ8U114Oy0JO6Nepi4bRFOLbzOOIyDFdM41Xv7wQhDGgxPa6ly9fvAAhhfLT0efP8mIBWBMi47p4yHc5eOWkkksLtvHn3GlnSh787MlPaLDLJ73+PbsPeLpF82dnaywS+m\/euN5L3tYsMaTKKXAIXjJqs2bECjXvXFgl\/\/ZAhTSYcPLVXPwaN9crrFYZO6w9KYBxW2bJvgzT+0yKDFStWYMKECXoHe1jtuY4JMAEmwASYABNgAuERiP4yzPAkcz0TYAJMgAnEGIGnT59K2bSK3dDgHWMDGgg+9Pchg6uvn7Zq1go\/Nv4RDx8\/RNo0aUF\/xKodAtSzSqUqeHHnRSghdy\/cDVU3aewkozpa1b9v2z4ZU51W2aVMntLoPl2M+nUUBvcbrE8eTCFhqA+FK0rskDhU+6hWKIO3MpBGVY6l9FM84ssOADcXN1SrVM1SHh\/PI5YJKAeAChcSy8PzcOZEgHeZhfu0Wtdth7HzhqPA7jWoUa62CPvzHKPnDEPmdFmRz+PLwoCQAn6o3BArty6WBv+2DX5Cjky5sHbnn9i6fyPmjVwesnm41z\/W\/h8GTeqDmX9OQaNqzXD\/8X9Yt3sVmtdsLXaH2aOV0O\/Xqb9gwqIxaFqjJYLEDjnPhaOlgyKspMa7j+7AODEfKpTwt1kzXQL5cBXgG0yACTABJsAEmAAT+AoBdgB8BQ7fYgJMgAmYKoFy5cpJ1fYf3g8\/Pz\/Y2dmZqqrS6J8hXYYY0+9bMdUT2ScKNfa3YsOH6vCNCitrXWx0zgGgA\/XFAaALbfINfHzbTAgoBxcbqrV9YCpZtvq50VY6S7MEAvwz9+2nWKN8Xbz7+B6z\/pyMicLITrsCCuQojPF9pwiHv2O4AijZ8OSBc6Sxvfe4LrIdGeT7thmEnJlzh9sv5I3yRSujZ+v+mLt6GlZsWSRvlxVJiOt\/30SeVypRReQB8MLcNdOwQTgpbG3sZGLiXzuPEuESbUKKw5KN82Xd77\/\/jm7duoW6zxVMgAkwASbABJgAE4gMAXYARIYWt2UCTIAJmAiBrFmzolChQjhz5gw2bN2Apg2amohm8VONhAl0EfWUgTR+Uvgya5UTITAgfuQA+DJzPmMCkSfw6fMn2elrMcYjL5V7MAHzJTCut\/GOv7BmUk4Y14+sPKe\/RU6SZjVbokn1H2VS3WQuyaUTQN9AnAzpPNLwUn+eI3MuLB67Gu8+vENAoD\/ckibT36OTgR1\/M7qmi+L5ShmNT3WNqjZDA2Hwp8TCzo7OULkJ6B6V+t83FnkAGuHZq6dwcXaROwN0d0L\/6+jgJCsTJ9Zut2LoUbiGCTABJsAEmAATiC8EOAdAfHnSPE8mwAQsjkCbNm3knI6eOGpxc+MJmTcB5QjhVavm\/RxZ+9ghoBxm6ucmdkblUZiAZRKgnTRpRNJf2gEQ2UJG+5DG\/8jKoPHdU6YNZfxXcuh7MVWy1F81\/lPbxtWayy69evXCTz\/9hEuXLkHtFlKy+MgEmAATYAJMgAkwgYgSYAdARElxOybABJiACREIFLFjT58+LTUy5fA\/JoSMVYlFAvT+pGJvbx+Lo\/JQMU1AOXTYUK0taauEuhBin\/FZW8EszeII8HvE4h5puBOqWPx7GT6Ivk\/nzJmDvHnzomTJklDfr+F25BtMgAkwASbABJgAEwiDADsAwoDCVUyACTABUybg7++P6tWrY\/HixSJurDVaNG5hyuqybvGYgAqNFI8RWNTUVYz6oE9BFjWvuJ4M7wCI6ydg+uMr55vpa8oaakWAnnmfNgOxfPw6kDOAcgbQwo+DBw9GaghfX18sW7YM3bt3x9q1ayPVlxszASbABJgAE2AClkOAHQCW8yx5JkyACcQTApQQbs+ePUiRLAXWLluL\/Hnzx5OZm+40VexuXhmte0bKWBUYxDkATPddGwXNhEGKCr\/Po8DuK130OwA+8w6Ar2DiW4KARfzsBb\/N1fcEP9ivE8jonhmjenjKhMHUcuvWreF2uH37NiZMmIDp06ejXr16cheek5MTWrVqJesaNWqEffv2hdufbzABJsAEmAATYAKWS4CTAFvus+WZMQEmYIEEKP4r\/XFHZd70eShVrJQFztL8psSGDONn9umTLqmptRX\/mmFMxryv1I6OT0G652veszEd7dUOANPRiDVhAkzA1AjULF8Hx84dwqRJk\/Ds2TO4urqiYcOGKF++vFQ1KCgILVq0wPHjx0Opni93PqRKmRq79u7E7NmzUbFixVBtuIIJMAEmwASYABOwbAL8l7llP1+eHRNgAhZG4MiRI3j37h1yeORg478JPVsKxURFGb5NSLU4UUVxsLbhXzPi5AHE0KDBGwBEpHpeqa4l4oQqBwDvANASq0XJYiezRT3OKE2GwgD1bz8Uv88fgZUrV0oZ8+bNQ506dXD48GGZG+DFixey\/oda9ZA5Q2a0atoaSZIkQSL7RHj05BF279uFjRs34sOHD3B0dIySHtyJCTABJsAEmAATME8C\/Je5eT431poJMIF4SuDSpUty5sWLFI+nBExz2jY2NlIxWoHH5YsjxMZax4WZWAYBlQPgE+cA0PSBWlvpkgBrKpSFWRQB5QBg55tFPdZIT6ZOpfrwyJgDpy6fwKUb53Ho9H789ddfejluLm7o3L4LunXorq9TJ7Qjz801GV6+eiFzCaidA+o+H5kAE2ACTIAJMAHLJsAOAMt+vjw7JsAELIzAzZs35Ywyps9oYTMz7+lwCA\/j56fiVKudEcZ3+cpcCSgj5Cdeqa7pI1Q7ADQVysKYgIkSUE4M5VA0UTVNVq0cmXOBXvQ9e\/LScRw\/dwSrdyyHk6MTTu4\/DYdEDmHq\/r8uraTxn246OITdJsyOXMkEmAATYAJMgAlYBAFOAmwRj5EnwQSYQHwhcPDgQTnVAnkLxJcpm908Vfgbs1NcQ4X1DgDOAaAh1bgX9SUHAO900fJpsANRS5qWKUs539Rnq2XOkmcVGQL0niiWtySK5Sspu9FOxPCM\/9QgWxYPvXjKATBs2DAOW6gnwidMgAkwASbABCyfAO8AsPxnzDNkAkzAQghQ4rdz587JP\/CKFCpiIbOyvGmQA4BXNuqeK3OwrPc3GyFj5nlaBecAiBnpLJUJMAFLJqBCsikHbXhz9Rw5ATk9cmL1+lW4dvMaRowYgVevXqFEiRJIliwZzpw5gz179qBQoUKgz3pvb280adIE5cqVC08k1zMBJsAEmAATYAJmRIAdAGb0sFhVJsAE4i+BGTNmoHfv3hKA5yhP2NvZx18YJj5z3gHw5QHxatUvLCzhLEFC3cZRfo9r+zQNHWXsQNSWLUszQQIcQkzTh\/Lpky4pu3LQhifcztYOndt1ka\/p86ZhlOdI0O+W9DIs+\/bt018uWLAAnTp1wtOnT0E5jgYPHoyCBQvq7\/MJE2ACTIAJMAEmYD4E2AFgPs+KNWUCTCCeEpgzZw66desmZz\/ut3FoXK9xPCVhHtM2NOaZh8YxpyU7AGKObVxIVgYmzgGgPX3aBRAkkiv7+\/vD3p4dvNoTNm+J6mfPEj5T9TkAEnAkWi3elWoHQIKECSIsrm2Ldnj67Anu3b8HHz9feHm9QZ6ceZE8WXIcOnYQPj4+ePbiGbzeemHq1Kl6uUeOHJEOg\/r16+vr+IQJMAEmwASYABMwDwLsADCP58RaMgEmEE8J7NixQ664oumPHjoa7Vq1i6ckzGfalmCg0Yo2s9CKpGnIUUZIQLfi1DS0sgwtKA8AOQB8\/X3ZAWAZj1TTWdDqayqW4GBWGwC+fJ5oiireCQsSYQepfCsEkCEYyhUwasgYw6pQ5\/cf3he7BEYIp0AK5M6ZB7MWzMDN2zfRsmVLJE6cGFWrVg3VhyuYABNgAkyACTAB0yXADgDTfTasGRNgAvGYwMePH9GmTRv89ddfksL3Fb9Hh9Yd4jER85k6G73FswpeiKhWeprP02NNv0bAx8db3k7s4Pi1ZnwvCgRUHoAA\/4Ao9OYu8YVAAvXhGl8mzPP8JoFPn2PGOZQ+bXrMnTJfP37DOg3RpE0jHDt5DLQ4hR0AejR8wgSYABNgAkzALAjw3kuzeEysJBNgAvGJwPr16\/H9999L47+TkxMG9x2MxbMWy6Rs8YmDuc6V46OT\/V\/nAWBniLm+i8PW28fXR95wSuwUdgOujTIB2gFAxd\/PP8oyTKnj0+dP8eHjB1NSyax1UavlLcOpGrGY9Wb9wGJR+c8RzAEQXZVsbW2RJElSKSZz5szRFcf9mQATYAJMgAkwgVgmwDsAYhk4D8cEmAATCI\/AokWLMHv2bPz777+yiZurG7au2YqsmbOG1yVO6\/\/X+X84eeakDElAq1cTWiWEPIpEoTY2NqAt5tbW1vKckhbb2dkhkX0i3TFRInnu4OAAWxtbfTs6pzbWNtYIDAiEf4A\/AgIDEBAQgMDAQPmi+Ni0\/dwxsaNsq\/74JRifPuu2wtM5bYe3sraSjhPSi+LjWltZGx8TWkv96V7qVKmRMnlK6hqtwkbvL\/iYxRcWlnCmVqnTzyIXbQkkFJ9RVPwDzdcB8O7dOwwdMxQ7du\/A6zevQU6NgvkKomK5iujVpZf8LtCS2v5D+9GodSOc3H8SGdNnDFP01r+3ok2XNrh++jpcXVzDbGMOlXoHgIqfYw5Kh6Oj+l5IwDkAwiEUuWoKHUYlNsJDVatcDX\/v2YExY8bIUEAuLi6RU5ZbMwEmwASYABNgAnFGgB0AcYaeB2YCTIAJ6Ajcvn0bK1aswIgRI0BxfhM7JEbXjl3RsG5DZMqQyWQxbd+5XUQCt6xY4Hu37kXeXHmjxZx3AHzBpww9X2r4zJwJqFXqAUEcpkbr56gMvOb6+fHo8SNUb1hdJjHu37M\/ihUphtevX+OfA\/9g6qypuHvvLmZOnKnpTjZy2jZr2Ew6g7V+HqYmz5J2VanfGpZtXoDNe9fJ94R6\/xsascmJr6sXsxebyuicfkcy\/L1DcVHPS8lR1\/p4dKJCJ0Mnk8ahtjZWNsiVNQ8cHZzkAgFaJGAlFi58FnH1ybBOP49Woo4WJ9hY24ijne5cLHKQ51Rnayfu2YprXZ3hueF8vuik7Zn6zIiNsZrUb4qVa1fi39Mn4OHhIUMBFSlSRNsJsTQmwASYABNgAkwgRgiwAyBGsLJQJsAEmEDECFy5cgUlSpTA+\/fvZQda7b\/tr21msVJR\/RE+atYwubKT\/jAPCgySq\/QDxOp9nw\/eunP\/QPj5+YnQFgHipTv6iTAXAeJFR+qj+tKRYmAHBdEf3boV\/GR0lC+xmp\/+wKX71M\/f10\/sDAiUf9Qr2oZ\/\/JPx+ZPYGk9H+mOeFk7SH8q6a1097Rig+lfPXkkdbt+9HW0HgNIlPh\/1z4HgcrEYAmrF7ifxc8qFCRgSGD5uOLy9vXFk9xGjnVTlSpdDvjz58FPPn5DOPR0G9Rlk2C1a59mzZcfU8VOjJYM7xz4BO2FEp\/LyzQv5in0NjEc8eem4cYWGV7RrSjoPhAPBVjgJ7MUOR52zQfxeI+7Z2YrdkcKBkMjeAUmckiKpfLnAydEZiRM5ildieXQQ9x3EtdxZKRwShuVTLO4AoO\/2aeOno1PPDjh38RwqV66MhQsXon79+tKhYqgXnzMBJsAEmAATYAKmRcD4NwjT0o21YQJMgAlYPIEpU6ZI43+FMhVQr3Y9VK1c1SyM\/4YPpmL1cnB0Nu+koLUKN8CDuw\/hkpS3sxs+2+ie8w6A6BLk\/vGFgPpZiY1VvFozvXXnFjZs3YBhA4YZGf\/VOA3qNMDOPTuxat0qvQOgTpM66NWtF3b+sxPbd22XTX+o9QN+7ferUaigFWtWYMHSBbjz3x1ky5oNfbv1RdXvqsr2p8+dRv+h\/bFs7jIZwo0qd+3dhflL5uPshbMoXqQ4KpevLNsa\/kPjzZg3A9dvXpfG17y582LkkJHIliWbYTOTOlcOd71z1aS0i5wyrat2wcW7Z6RDHrSen5z0JEIeg6+l81hXr\/vZEA59USfD+ekTIRs7mI2vSFyoGinjs3T8f8a1exdx9f5FEVLQEVkzZdGHGaSV\/8SZVv5biUUHgbQwgcIRBocipLCEgXLhQqBu8ULwTgFaYECLDtQ8aEoky8fPR77oWotCOw+kY0AkYyfHgLevLjl7bL03MqTLgK2rt6NLn5+wecdmNGzYEM7OzmjVqhXKlCkjr9VuMS3myzKYABNgAkyACTABbQiwA0AbjiyFCTABJhAlAiqWdo0qNdC8UfMoyYjrTiH\/xI5rfaIyvq+Pr+yWxDlJVLpzn3AIWMJ7I5ypcTUT0JiA7qfFHB0AV65dkSzKlCgTLpPCBQtLJ8HzF8+RInkKXLx6ET3690DaNGllfoCLly9i1vxZ0oHQtUNXKWfmvJkY\/vtw1KleB7279cbRE0fRomMLLJ61GDWr1pTO8\/OXzsPP30+2v3T1Etp2aYu6NevKnQF79u3BkFFDjHTasmML2nZti1bNWuGntj+BdF\/y5xJQTpsju44YtTWlC8qNQ8XXX5eI25R0i6wuKVxSobJLjch207z9BuEgIAdAPhH2b8OKTZrLJ4G+vr549\/6tTIj94eNHvHwpdj28fiUdCr5iR+SHj+\/x4cMHvH33Fs9fPsfLVy\/h9fYNPordNNTXX7y3yeEgd0oGr\/T3DxA7KcXrzbvXRjonDU7Qa1QZQxeU32nO5HnCyVYCsxbMxMPHDzF9+nT5ql27NjZu3BgrOQliaHoslgkwASbABJiARRJgB4BFPlaeFBNgAuZC4P79+1JV9zTu5qJyKD0taaUXxRyObomtVXjR1TMm+ysGoVdgxuSoLNuSCKzYtBS\/zx5tNCUKleGa1A2VS32Pn5p3hbNT+A674VOG4MrNy1g9fYORDFO9UD8rWnwGxfYcKb4\/lXRp04U7dO4cueU9ChtSpVIVeZ4iWQoZ8k59Xly+dhl7D+4FOQAoofCE6RPQ6IdGmD5humxfq1otPHvxDCN+HyEdACEHGzZmGArkK4AZE2fIW9W\/ry6Nqn\/v+Vvf9Ni\/x+SugImjJ8q62tVrixjuthgzcYw0wpqqE9jG1kbqGxjECbj1D1OjE\/X+00ickRh7e3sR9sdeOL1SGtVH5+KVcCA8e\/4UL169wAtyKAinATkM2rZoGx2xke5L3Nq1bC9flOvj8rVLmD53GrZs2YLt27ejVq1akZbJHZgAE2ACTIAJMIGYI8AOgJhjy5KZABNgAt8kQDkAqGTOmPmbbU21QcKEIjufmZcEYps\/FcoJwEU7AsqoqZ1ElhTfCPzafbhIjK4LMebn54sbd69j5eZluPXfDcwduzhcHAVyFUYKN+2MbuEOxDf0oVYo1nl4RTmK1ZHalS5R2ihueOZMmUF5WKjQDgHKjVMwX0Gcv3he1tE\/2bNmx+btm0FG0JDl0pVL6NG5h1E1hdYzdACMGTZGf\/\/1m9e4dvOaDC9ElT4+PjBVB4BeaT7RjID6vje3XTdurm6glykVCrWVN1ce\/D55nFTL8OfclPRkXZgAE2ACTIAJxGcC7ACIz0+f584EmECcEqCEt\/7+\/lKHN15v4lSX6Axubn88hzVXsZBNFtpmH90Sk6sJo6tbbPdnB0BsE7e88SqXqiJW\/bsaTczezh4L1szF42ePkCZl2Lun6n5fz6iPqV+onxVz3AFQKH8hiffu\/bvIlztfmKjvP7wv68mgr0oyt2TqVB7puVIcdSoPHj6QxwG\/DZDHkP+o+6qevkPJoJ8yxErr1ClTqybySKFWRnmOwo5dO+RuAgqbQmGIqKhnIC8s8B\/aPdBufPg\/F\/mzFEHvxsPidOZklN939m+UzfedTJobo8oEx6jj72xtKDs5OYtE3+nxn\/gc8PT0RK5cuZAhQwZthLMUJsAEmAATYAJMINoE2AEQbYQsgAkwASYQNQKbNm0S8WBfImP6jFAGlKhJitteavV83GoRvdGVAUCtCIyeNO6t5xlszGMiTEBLAtkz55Di7j++Jx0Arfo0Q5tG7bFg9Ry8fvsaAzv\/iqu3ruDuwzsY289TtvX2+Yipiyfh6JkjInFnIKqUrYamtVsgZTLdLgFKpPnH\/PE4fPKgTKpZMFchDOg8BKlTpNFS9XBlBadBRQIz3FFVIG8BOa\/d+3aH6wCgVfiUPNTV5YszR31OhAVFxTPfsnoL8uUJ7VQgZ8HBIwf1XWnlvkMiBxE\/3UtfRyfeProEqaqyS+8uOHHqBPr16AfKWZArRy78tfEvdO2jyzug2pnaUTknvsYsojoXyV4K9ApZXJy+PJuQ92Lr+t+rh7F05yyUyVMpxoekZMBUzNHpFuNwojAA5amYP3U+mrZtgn379iF37tyYNWsWWrZsGQVp3IUJMAEmwASYABPQmkBCrQWyPCbABJgAE4gYgQsXLsiG9WvXhzlvl7aIEEDQbQHQwgGghYEmYu8g02+ljJqmrylraE4E\/jm6R6qbPo1udem121cwevpvIumkFTKmzYTkrinw5Pkj3Ll3S7ajVeX9f++Df47uQlvhKGjXuCN2HfobY2YMl\/fJuNpx4P9kXc1KtTGk22\/weu+FZj83kAk8Y4ONUEEWc9xR5ezsjKYNmmLanGli9e9\/oXAdOnoIW\/\/eiqYNm4a6F15FtizZ5C1yHJBhX702bduEvoP7iiSqAUZdiVvunLlx\/ORxo\/rTZ0\/rr2nHHcUq79imIzq16STb0+f15auXZZv4El8\/XYqMKJm7fKhXjvR59azi6kQZ5WNjfP33k9oCGBuDWvgYeURC5f3bD6J2tTr4KJIet2rVCn\/\/\/SUHh4VPn6fHBJgAE2ACTMCkCfAOAJN+PKwcE2AClkzg9evXcnpubqYVyzWyzM3RYBVyjmoOFJaJS\/QJKCeIWrUafYkswRQIKONcbO762XtsDxwdEsvpfxSr+C9cO4\/dh\/9GpVLfGYX\/cUniisWeK4QTIPTalv3H\/8GBE\/uwatp65MqqS0brniotfv6ts9wlcOPONSl3+vA5KFesghyrbNHyKN+0BJasX4jurXuZAn6T1uGPMX\/gwaMHqFy7Mgb2HogSxUrA19cXew\/sxaSZk9CySUv07d43wnPIkikL6tSog5V\/rUT6tOlRv059nLtwDgOHD0T7Vu1hZ2cXSlaX9l3Qvnt7rFizAnWq18GaDWswe9FsfTtK9ku7FfYf2o\/WzVvDydEJ23dux9zFc2Ub0peLjsCNB5ex9sAy3Ht2B86Jk6KIR0k0KN8C1la6ZMQbDq2UOXMCAwNw6MIeGbKnSaU28PP3xaq9C3Hhzmn4ivNsaXOi5fcd4ZYkhRTs4+eN5bvn4sLt0wj8FID0KTKhcYX\/IYt7dpy5cUKMuVy2G7W8P6oVrYvSeWNuJ4D6fgrrM4PfB1EnkMw1GeaJnQCUD2DSzD+wYMECVKtWLeoCuScTYAJMgAkwASagCQF2AGiCkYUwASbABCJP4MWLF7KTm4t5OwCUsTfyBEyoR3AOABV\/2oQ0M29V1LJm854Fax9MIDAwUJ7ZWOuMgLEBZsTUX42GcUnigia1muPnEEb5QnmKhGn8p87XhYE\/rTD4K+M\/1RUvUBLHN5yVSWj\/3LRcOBkcQU6EKzcv0W1ZcmTJhbOXz6jLGD0qY6Q5hgAiMDY2NlgyewkmzZgkDfBkqCfDKoXv6dWlF\/p07xNpfuRUGDR8EAaNGIT+w\/rL+P71a9UPV1atarUwYvAIjP1jLHoO6AmXpC74udPPGD1htH7swX0HY8T4EchbIi+sra1lkuG1y9ai\/o\/1cfrcaaidB\/oOpnISvEMk+KsqRrW69\/Q2xqwYhHxZCqNDrV549fY51h9agUcv7+tzBLx4+wxX7p6D+AFC7kwFxc+Ps8yh8PufQ\/DszRNULFgN6VNmxq6TmzFscW\/83nE2EidyxLJds3H13kXULdMETomcsffsDjHWAEzptgRpkqVDXiFr37m\/Zf8MqbLE6Dz1P3O8A0BTzvce3MPM+TNw4vQJKdfb2zgMl6aDsTAmwASYABNgAkwgwgTYARBhVNyQCTABJqAtgVu3dOEp0qdLr63gWJCmwi\/wyrnQsC3CIRJ6WpGqUQyCgnQxliPVmRubLIHA4B0ytja2sabjXzM2IYlTUjmes1ix7ZBItxsgpAKpkhsnezW8f+fBHSQTYYFCFvU+ffTsIT54f8CPPRuFbII0KcJOMhyqYXQrgp1l5hyPnOLw\/zbwN0ni5auXoPcJhQcKq9y9cDdU9aSxk4zqSN6MiTNA9U+ePZE7AdQzo4YVylbAizs6R7rq2PF\/HdGhdQc8fPwQ7qndpROiZ5ee6jbKliqL3Rt3ywTADvYOcHJykvee3Xqmb2PpJ1uPrZWGecN50gr9kW2nyKoVe+bLlfm9Gv4qHWRUmTxpSkxZNxpX\/juPXBnzy3ZvPrzG2I4zkcYtnbw+cfUQbj++jl6NhqJA1qKyLr9wInSb3AI7\/t2AhuVb4tr9SyidpyK+K1xL3vdIlxt\/7V8Cr49vkDZ5BmRPn1s6AErnrgg7W3vZJqb+USGA+PcYbQifu3gO+w7uxbLVS\/H46WMplMJb1q9fX5sBWAoTYAJMgAkwASYQLQLsAIgWPu7MBJgAE4gaAS8vL1y8eFF2zpo5a9SExGGvLw6A2FiPGPMTVUalz5+Cl1lGY0i1qjAaIsy+q+KpRU4Fs4dhQROg5LlUYnMHAMXzd0367eSkViL+f3jFKbEjbt97H+r2a6\/XYtW\/iwgF4ywN\/evnbBXZQIw\/09R7OVRnjSsszRiZzC2ZZoQodA8lEI5ooWeWzl1nlA6vT8rkuuTP4d235PpMqbIiuzC8GxYHe0d5Sd9fd5\/cRINyP+qN\/3SjkEcJ2Nsmws2HV\/UOgCQiNJAy\/lOb6\/cvI5GdcKo4JBEydAscqD6D2Alw8+EVOkVGMfbf\/26EX6AfCmUrAY90udCxdm95L7b\/Ud\/VsfUzHtvzi63xfHx9UL1hNVy7cVU\/ZIkSJTBmzBgULlw4XCegvjGfMAEmwASYABNgArFCgB0AsYKZB2ECTIAJGBNYs2YN\/Pz8UKFMBRmmwPiu6V+pZImxGQs8JqkoA4AWBmvOIxCTT4plxyUBfQigWNwBoMV8M6bNjM17NsLr3RskdXaRIu89+g+121fFzJHzkDVDNmzft0UmDc6TPZ+8T8bB4VN+RbZMHvixbist1PiqDOV44DBkX8UUb28qY7WIuRNtBrkzFcAPZZqFKeftRy\/4C+O8i1Po0IRU9\/r9S30\/V+fk+nM6eSnCAlGM\/xFLQod7ShacA6BdjZ+xYPtU7D61Ve5CSJzICd8VqokfyjZDbO9+UUx5B4DRY4z0xfPnz\/TG\/86dO6NYsWJo0qQJEiVKFGlZ3IEJMAEmwASYABOIOQLsAIg5tiyZCTABJhAugePHj8t71b+vHm4bU76hjNz8h3Pop8QGPMEk2EalDCyhKXGNORJQP\/e2sZgDQAtO9ao2xLxVs9FvbC90a9UDrkncMGmhJ3J75EWZIuWQVxj9F6+dj3GzR6NLi+7IlS03Vm5ejg271mLl5L+0UOGbMhJa6ZIXq91V3+zADZhADBBIHLwT4KPvh1DSP\/p8EKGAUunrQxrsHewTgwz9Y9rP0H8HqMbKwUV5AH5uMAgffN7j\/O1TOHHlIDYdWQUat2qxuqp5rBzVrhu1ACBWBrXAQd5\/0O2ucnNzw8yZMy1whjwlJsAEmAATYAKWQYAdAJbxHHkWTIAJmBmBU6dOSY137N6BC5cvyDjFZEynMBZW1uIljvJaxE+lo7WVNchARPFUZRtxnxIYUh0ljUwo\/lMlZBLJkH+kq\/tUT+dSHo0jrq1trMU2f3vY2dnBPpG92M6fSJ7TdSJ73Tnp9+GDzjiQUPS3pKKF8V4LGebOVBl72AFg7k\/SWH+188fGzHYAOCV2wiyx0v\/XPwaiZe+mclLp02TAuF8myHPKMTB3zCIMmzwYPw1pJ+tyigTAQ7r9Jp0ExhRi5oo+h6kEBAbEzAAslQlEgACF90rhkhpXRaz+SoVq6HtQAuB33l5IlyKjvi7kiXuyDDh2+YBMFpw5jYe8Td8Bi3ZMl\/H9K4jEwAu2TUHxnGVlSCHKBVAqdwX0m90Bd0TYIV3R\/U6hxW68kPqFug7Ou8EOgFBkIlXx9v072T5ZsmR49uwZUqaMv+G1IgWOGzMBJsAEmAATiGUC7ACIZeA8HBNgAkzA29tbH\/9\/\/+H9Zg3E0kIA9R\/aX8QD1yWFVMbrUEfo8gSo+pAPcPDAIbC3txOOHGsZK93W1gY2IoZ1UGCgrCMnDjlvrITzhhw7dJ3QoI4cPsogoY5qLHWkenqpttLgHqJOtQ3viGDjh1oFSe2shfGHdCfZSk+qsxGOITWmmq+\/v7+ot4Gdvb2875DIQeojGkI5QSgpoK+vr+yiDDrqqPItqLafP+sSBqv6oE+f4OfvBx8fb\/iKcFlkGA0I8BfnvtIBRfc\/fQoCJRqmI8mhl65eHEW8+i+yxSzVfMXxy\/xspM428nlYi\/mLZxP8TBIIhxgV0suwr67uMz4JObRa+6P3RzmWIR\/qa3ydwEjGF3nBcxayqO5LvfF7TN2j5\/3lpXMOyrno63V15JhLSM5EVS\/eX2RgprYJxYuK1PGL31A6AOm+7p466pyEVEf9nr14Lu\/Tc4\/pQmF3Ihp659+N50OpM6zHKKM6Cu2zYc42UNx\/\/wA\/pEyWSvJQjXJlywNKOPzu\/Vtx318kDTYOb6LaxdRRvd9UmKWYGoflmicB9TmtfkZjcha1SzbCwu3T8E\/6PCiTtxLevHuF+VsnSyO+R9pc4Q5dURj4t59Yh+V75qGeCDFEuQZ2n96Kg+d3Y9j\/JsLW2lZ8vtpgjUj66yzyBKQVzoTL\/53DS6\/nqF5clyiWFiBQOX39GHJmzAe3EGGGwh2cb8QZAY+sHnB2csb169dRqlQpHDx4EO7usZQ8Pc5mzQMzASbABJgAEzA\/AuwAML9nxhozASZg5gRohRQVWm1fq3F1aaQko6c0YApj4ydp0BR\/7gcbND\/RvSBh4CQDoawLbivb6YyT4lZw0Z\/Ia2VQ1N\/90jDY4CgMnEImtVPjkAEqMIBeQcLoqs7FUZxLPYQ+QYFkeA1CoZIFlGiLON69dzfa81i2dFm0ZViKgGG\/D7WUqfA8DAiQgdxcy7cSCjs7JYmTqSnDbsjP7DhRhgeN1wTK5vsO3iIE0Jp9i7F05yzYCKN9duEM6Fm7l0zyGx4cRxHP\/5emo4TzYComrB4mm2VImQWtqnVGptTZ5HX9ss2xYs98TFwzHN5+H4VTwE4Y\/+uBnAdUPERy4vQpMmHetsmoLHIDtKr6k6yPiX\/Ub0tqx1pMjBEfZCZ3S46d63ehc++fQE7\/Tp06YevWrfFh6jxHJsAEmAATYAJmRYAdAGb1uFhZJsAELIFAqlTBMXSF0X34tCGWMCWzn0Pwwmf873\/\/Q\/bs2fUrg5VR7mtHde\/Bgwe4f\/++ZEFGPFodTi9aKU8vWvVPThPpSBFOFzrSteGLnEDUVxkB1ZGE0jhqLNXG8Eht6FqteqdrKqpPyKPurvF90ol0VnJJltKP2lO9KrRDgO5TH6qnoyokgwq91x0cghMBhlpdrlaZh3+kcBS2dmLVKO2mEKvO6WgtxnVInFjuoFCr4WknCoWwUtd0pB0WdKRiyI7OSV\/ds\/jCX7ebQLejgO6puYbs+0WecOIJfexFaCzaOaDQUD\/DF7Wn65D8Q8olPGG1+TKebmcFMZfOOnlUzjvd7gfarUD3abyQ7VQ93VM6GZ4HV+rv6dvod7wAx48dlzs6kjjGjZFcKsf\/MIF4SEAZqdXPbFQQ0O6mJQO3fLMrfQ5VE0b5KiIm\/6u3z5HU0U3uZjPs2LFWL8NL\/Xmm1Fkxst1UUL6AgKAA0VeXdFs1cBM5AigHAH3evnr3AnRtGKaQcgHI\/sIBYW8b\/N2hOvPRZAlkypAZy+etROFyBbF9+3bcuXMHmTNnNll9WTEmwASYABNgAvGRADsA4uNT5zkzASYQpwTu3bsnx0\/pznFS4\/RBGA4ebJyuW7cuqlSpYniHz6NAgLb\/e3l5Yc682ahQsUIUJHAXUySQL3d+0OdXbIQAMsX5s05MIK4IKOegcCfGmgpkmDdM+huZgSnZ79cKhSj7mmyVjPhrMvieaRFI5poMP9Sqh9XrV+GHH36QoYCSJk1qWkqyNkyACTABJsAE4jEBg+iv8ZgCT50JMAEmEIsEaNUwFVplzIUJWCIBZayilepcLIeA+syinRlctCWgcjMY7qTRdgSWZgkE+BNVu6eodlOo7yvtJMdfSYN6D0bWzFllnqsJE3RJ1uMvDZ45E2ACTIAJMAHTIsAOANN6HqwNE2AC8YAAbYtOkiQJnj58hmsXb8SDGfMU4xsBZVBRCX\/j2\/wtdb4URogKJfLkwgSYQCwS0EVKk+G9YnFUCx9K505JIJKmc9GGQMoUKfFLjwFS2OjRo5E7d27s3LlTG+EshQkwASbABJgAE4gWAXYARAsfd2YCTIAJRJ4AxSVv1aqV7Lhn897IC+Ae2hMIjouuveD4KVE5ACjBNBfLIaB2AFB+BS7aEhCZI6RAlbdCW+kszdwJqM9Uc58H62\/5BKpVroZmDZrB3s4eV65cQe\/evS1\/0jxDJsAEmAATYAJmQID\/gjODh8QqMgEmYHkEVJgHG1teSWt5T5dnpIxVKsQCE7EMAkEicScVaw4BpPkDVT5IdgBojtYiBKokwLGZA8AiwPEkYp2Ara0tJo2dgqsnr8PO1k46AVTuq1hXhgdkAkyACTABJsAE9ATYAaBHwSdMgAkwgdgjcPjwYTlYyQrFYm9QHil8AsFJgMNvwHciQ0A5AFTImMj05bamS0A9TyuRwJOLtgSUs0z97GgrnaWZOwH1vlCOInOfjynor1gqtqagkyXpkMg+ETyyesgprVu3zpKmxnNhAkyACTABJmCWBNgBYJaPjZVmAkzA3AncvXtXTiGjR0Zzn4pl6K8sAZYxmzifhTKoKINxnCvECmhC4FOQLqQTJwHWBKeREOUA4B0ARlj4IpiA+kxVoaIYDBMwBwJpUrtLNVOkSGEO6rKOTIAJMAEmwAQsmgA7ACz68fLkmAATMFUCadOmlaqdPX7eVFVkvZhAlAkoYxU7AKKM0CQ7qhwA7ACIicfDOQBigqqlyFSfqSILsKVMiecRDwj8d0+32IWSAXNhAkyACTABJsAE4pYAOwDilj+PzgSYQDwlUKFCBTnzh\/89iqcETGzaHAJI0weiVjErg7GmwllYnBFQDh0rKw4BpPVD0O8ASMC\/mmvN1hLkKQcA7wCwhKcZP+YwZNRgXL91XU7W2dk5fkyaZ8kEmAATYAJMwIQJ8F8ZJvxwWDUmwAQsl8DTp0\/l5FKkTm65k+SZxVsCygHw6ROvVrWkN4GNjS5pua+fryVNyyTmwg4Ak3gMJquEPgkwf6Rq9oyUM0U5VzQTzIJw684tzF86D\/SdMWfOHGTJkoWpMAEmwASYABNgAnFMgB0AcfwAeHgmwATiJwFl7Lly7mr8BGBqs+awCpo+EWVQ4R0AmmJlYRZMQP3MfPqsy7NgwVPlqUWDgDJaR0MEd2UCMU7Ax9dHjkGhfzp27Bjj4\/EATIAJMAEmwASYwLcJWH+7CbdgAkyACTABrQm0a9cOmzZtwsLJS3HtwnVkzp4ZTkkckcTFGUVKF0a2XKFXS504cBJbVm\/Ho3uPpTotOjdD5VoVtFaN5TGBaBNQIWLYARBtlCYlQD1PzgGg\/WNRDgA28GrP1hIkqveHJcyF52A5BLx9vPHzL93h9fYNihUujkrlKqFQ\/sJ49fqlnGTSpEktZ7I8EybABJgAE2ACZk6AHQBm\/gBZfSbABMyTQO3atbF+\/Xq0bNkSR\/eekC\/DmRQpXQjlqpZBUtckeP7kBQ7sPIyLpy4ZNsGZY+fw89AuaNeztVE9X0SegNoAoELXRF4C9wiTgAIb5k2uNDcCygFgHRwKyNz0N219E0j11O4w09aVtYttAsoBwO+P2CbP432NwNETR7F15xbZ5PDxw\/hjxkTkzpkHzo5Oss7d3f1r3fkeE2ACTIAJMAEmEIsE2AEQi7B5KCbABJiAIYF69erh0qVL2Lt3L7y8vOTr4cOHWLNmDU4dOSNfhu1dXV3Rq1cvlC1bFqdPn0a\/fv0wdcRMkEGgdbcWItYqf6Qb8orMOSc3jQytb7dVPBNysthvwzKjFsoBwDsAYuKh6YK7r9u0DsmT63LDfBY5NNRuGhrRMDwQ3TMsdI\/q9Ed8wqegL3V0Lu+J7ws6qmvZRtQFfQqS3yXqGZNscoiS4VmvMXLhAABAAElEQVQZnw3HU+f0\/RMQECBf8ude58dQt4FgNZXhmsamoq5DHukezdkqoUg0LWQlFEmREyTUCSU96JpKIvtEep3pWulJ90lva2trZMyQEQ3rNqTbZl94Z0gMPELx3qWSULyvuESNwKUrF2XHzJkzo1y5cti4cSMuX9UtVqH4\/506dYqaYO7FBJgAE2ACTIAJaE6ArUWaI2WBTIAJMIGIE8iYMSPatm1r1GHSpEnYtm0bDhw4AD8\/P5Dhv0SJEqhRowYcHR1l2\/Lly8tz+uNq2shZ2LxyKyYsHguP3NmMZPFFxAgoI5ShsS1iPblVWASUA4B5hkXHfOuUcZiMq1y0JfDB+6MUOPaPsdoKjufS6DOoXq16Zk9BnwTY7GfCE7AkAmVLlcOE6Z64c+cOnJ2d5YKW+\/fv4+XLl3KxioeHhyVNl+fCBJgAE2ACTMCsCfBfcGb9+Fh5JsAELJFAkiRJ0Lx5c\/n62vwosRptr+7bty+uXbuG1tU7wnPBaJT5vtTXuvG9sAgEr1LlEEBhwYl8nXIAJAxeuRt5CdzDFAkoB4Ctta0pqmfWOn0OXhmfP19+GO6wUM5JmpzhSnzDc8N7hqv21ap4OoasV9dyhX3wfbniXqyep6LGlUfjzQbyvv4fsXiaHELWVtZyDNVP3Vd6RvRI\/enzg15KFh2NzsW2Aj9fPyS00u1QoLHkfaEnHanviVMn5K66p0+fKlXM+8iL1M37+Vmo9oULFMafC1aj18AeOHfuHOrWrSsXr2TKlMlCZ8zTYgJMgAkwASZgvgTYAWC+z441ZwJMgAmgZs2a+O6770BJhVesWIHuzfrg1z8GoH6rukwnMgSCjSvKcB2Zrtw2fALK6Bd+C75jTgSUEdacdDYXXWmFN4V5WbV0FVKlTGUuapusnrUb1Mbho4eNwiaZrLKsWJwS4O+p6OEvW7Isdq7fjQYt6+HazWuoXLkyrly5Ant7++gJ5t5MgAkwASbABJiApgR0y3w0FcnCmAATYAJMIDYJ2NnZYfny5Rg6dKhc+Ti67+94++ZtbKpg9mMpAwAbOM3+UfIEYoEA75SJOcj8GaQNW4o\/ToXyE1hC4e8o7Z\/i1za2aD+aZUt0c3XD5lVb4ZHFA3fv3sWcOXMse8I8OybABJgAE2ACZkiAHQBm+NBYZSbABJhAWASGDx+ONGnSIDAwSDgA3oXVhOvCIRAkmFHhmPXhAIpktTJiKqNVJLtzcxMloGL\/+\/r6mKiGZqxW8C4k9bNjxjMxCdVVGCU\/fz+T0IeVMF0CnF9Bm2fj7OSMWtVqS2HkBODCBJgAE2ACTIAJmBYBdgCY1vNgbZgAE2ACUSbw5MkTPH78GI7OiZEuU9ooy4mPHYNEzGgqtJuCCxNgAmETsLXVxf738fcNuwHXRpsAhyGLNkIpwNpGF+XU399fG4EshQkwgW8S8Al2DqdLl+6bbbkBE2ACTIAJMAEmELsE2AEQu7x5NCbABJhAjBG4evWqlJ0tVzajZJExNqAlCRaJI6nwDgBtHyrvANCWZ1xLUzsA2KgaE09CtwWAdwBow9bWRues4veqNjwtUkrw975Fzi2OJuWY2FGO\/ObNmzjSgIdlAkyACTABJsAEwiPADoDwyHA9E2ACTMDMCLDxOuoPLCiIQwBFnR73jC8ErKyt5FT9AzisitbPPDgCENgBoA1ZlQOAHQDa8LRkKQkS8p\/DWj3fzBkyS1FqQYpWclkOE2ACTIAJMAEmEH0C\/BtP9BmyBCbABJiASRDImDGj1OPaxeu4ck63G8AkFDMDJT5\/0u0AUEYjM1DZpFVURkzeAWDSjynSyul3AARwWJVIw4tgB\/WzE8Hm3CwcAvxeDQcMVzOBGCSQOlUaKZ3CUXJhAkyACTABJsAETIsAOwBM63mwNkyACTCBKBPIkCEDmjZtCp+PPmhXpwsunr4cZVnxraPaAaCMRvFt\/jxfJhARAtZWHFc9Ipyi1IaTAEcJW3idKCEplVevX4XXhOvjOQGb4DBRH70\/xnMS2k3fI6sH6PeokydPYtmyZdoJZklMgAkwASbABJhAtAmwAyDaCFkAE2ACTMB0CNAfXM2bN4f3B2\/0btUf796+Nx3lTFiTT7wDQNOno1YxJzTB0AqvX71GEsekoV7p3TOgXOnyGDNqDLROxEqyJ\/0xWVPGcSFMOcgCAnkHgPb8OQeAlkxTpUolxT19\/lRLsSzLgggkTKD7MzgwMNCCZhW3U3F1cUWN72uAFlW0bdsWAQEBcasQj84EmAATYAJMgAnoCbADQI+CT5gAE2AC5k+ADHRLlixB6dKl8fzJC4wf+If5TyoWZqAMAA4ODrEwmuUPoXZU2NjqEnGa4ozbtW+LTVs26l+jxoxE+gzp8fu48Rg0cLApqhznOtknspc6vH3\/Ns51sTQFVA4ArZ1PlsYpovNJnDixbOrr6xvRLibdToVT+wxduDqTVtZMlFNMzURds1GzT\/d+Ulf6vYodAGbz2FhRJsAEmAATiAcE2AEQDx4yT5EJMIH4RYCcAIsWLYK9vT22rNqO00fPxi8AUZhtYIBuBWCiRImi0Ju7hCRgyjsAlK5Zs2ZFhYoV9K9WrVth+cplKF6iONavXa+a8dGAgKurq7x68pzjOxtg0eaUQwBpwzFYikMinTPXUhwAmsJhYZJAYJDue982OBQQY9GGwOwFM6WgZs2agRdVaMOUpTABJsAEmAAT0IIAOwC0oMgymAATYAImRiBbtmwYNGiQ1Gr2+Pmaardizmrkdy1u9CqWphyq5auL8YMm4Z3XuwiPt2\/7ASnn5TNdnObhPcegSYVWEe6vVUPlAOA\/VrUhqncABIdY0EZq7EjJmzcPyGiodoVUrvgd1oVwCAwfNhw9uvfUK3T69BlUr1oDaVK6I2+ufOjcqQvevPHS3w95MnXKVFQqXwnnzp0Lecukr9VztUpoZdJ6mqdyHAJIy+dGDnAq\/pywWkusFiVL7wCwtbGoecX1ZN681X331a5dO65V4fGZABNgAkyACTABAwK6bG4GFXzKBJgAE2AClkHg559\/xsSJE\/HvwVO4cu4qchXIqenEhkzsD0cnFWbBDzcu38Kfc9fg1tXbmLthuqZjxbQwZdhUMc5jejxLl694JkyoApuYx4wvXryIjRs34Yd6P8hEhqT1+XPn8eLFC6MJ3Lt3D8+ePZd1Hz9+RMP6DVGoYEFMmzFNtp3oORHPnz\/Hug1rjfrRxeJFizF0yDDMmDUdBQoUCHXflCuCgmNl29iwwUzr56R+UjgEkDZk1W4uf3\/OV6ENUcuTEqR2ANjaWd7k4mhG6zavxd97dsjR8+XLF0da8LBMgAkwASbABJhAWATYARAWFa5jAkyACVgAgSRJkqB9+\/bSCbBwyjJMWDRG01lVrl0RrslcjGQmEjHCF0xegscPniBNutRG90z1QhmrTVU\/c9RLMTXlGMtzZs\/F5s1bJF4yuj55\/AQPHjxAmjRp0KVr5whjv3r1Giix8LARw6AMHqlSpcTRo8dAHAwZbBLOhV49emPCHxPwY4sfIzyGqTRUOR18\/SwjrrqpcDXUQ\/3sGNbxeeQJJLLXhXNTO3kiL4F7WDqBoE8qBBA7NLV61uOnjJeixo8fj9y5c2slluUwASbABJgAE2ACGhBgB4AGEFkEE2ACTMBUCXTu3BkzZ87E7k3\/YNPKrajbvFaMquqRJ5uU\/+DOQ+kAoGSwtCtg7ZKNeProGTJ7ZES7Xv9D5VoVIqTH1fPXMLL3OFSt9z1ad4sZgykb3CL0KCLVSDFNmNB0Iw2Sg8zdPY1IUhiIE8dPiBX9zzB6zCi0btMajo6OEZ5vjhzZQauNW7dojTbt2qBGjRpyBwHtIjAshw8ewphRY9CgYX2079DO8BafMwEIT5GkwEletXkzqM+ej94f0bVPV7x+8xpeIjTJu\/fvQLt2vH28ZYJScv7R59Wnz5+QQPxH\/ehlZWUFCnWV0Ep3nVCEM6N6cuglEDubbKxtZJ4dW5HoXN1zcnQCJR\/28\/MDOcmCAoNke5Jhb2cPamsnVpvLo50d7MSL6unzxtXFFW4ubkieLDmSJkkKFxcXec270rR5P4QpJfhn7pN4\/lyiT+Dtu7fi50uXIL5w4cLRF8gSmAATYAJMgAkwAU0JsANAU5wsjAkwASZgWgSyZMmC2bNno3Xr1pj823R45M6KnPlzxJiSe7ftl7LTZU4rj7PGzcPCyUvRtmcr5CmUCwd2HkbvVv0xcsZQ1GlW86t63Lt9H50b9kCB4vnx409Nvto2Ojc55EZ06IXd1xwcAE2bNUGXbl3kBD58+IA6NevA03MCatWpFSkHABnvNmxaj549euHXwUPlK2eunBglnAnffVdZD2jPnn+QzSMbtm3djvv37yN9+vT6e+Zyop6r4a4Gc9Hd1PVUIYAUY1PX19T1U+9RCgG0ZsMaU1f3q\/qR40G9Lw6d343r9y9JpwPFsA8ICgCFsqHzwE8B+naqfUjTtp2NHbrVG4C0yTN8dcz4cDORrW6XCDmFuESPwBuvNxjw2y+gY6FChVC6dOnoCeTeTIAJMAEmwASYgOYE2AGgOVIWyASYABMwLQKtWrXCwoULceDAATSt2Bq5C+ZEi87NUL1BFaPwJJHVet+2A0gcnAPA+4M3Lpy6JHYa7EWlmuXl6v9nYsX\/oilL0WVgB7Tv3UaKr1C9HHy8fTB5+HRUb1g13CGfPX6OTvW6i7wFOeC5cLQ+Hnu4HaJxgxf\/RQNeOF2V8YkMV+ZQyIi\/aOkilChaUq7k3\/XPLrlKV+keECKO+JvXb\/SGNmpTslRJnDh5HDeu38COHTuwZPFSNKrfCOcvndMb+ps2awrPieNRpGBRGQYorPwAajxTPSpnGa2O5hIzBNTPTsxIjz9SlQOAVuo3rt8YSZyTyJX1tLqedv\/Q0TGxo1zJb2WtW+1PuwAC\/AMQECheAQEygTAd6X1Pu9nk8ZM4Bn2S92gnASUZpnoKNfTh4wf4+PiAcmTQyn6SS8+T2vv4+uhlUltyTKgxvL29ZV\/qr3YnkBzqI\/sL+aq8+fAa9IpOufXoGjsABEA7G12iaGLOJeoE9h78B6MmjMKVa5elkEmTJsndLVGXyD2ZABNgAkyACTCBmCDADoCYoMoymQATYAImRmDjxo0YMWIEFi9ejMtnr2Jgx6HYsmobZq2dGmVNR\/Qaa9TXxS0pmrRrgO5DdPHTr126KYwiQajVuIZRu9pNamLH2l14ePehUb26+Pj+o1j5\/zM+vPuACYvHwcY2ZuPzWonwDFy0JaCMmObiAKDZZ8iQAb8OHYKBAwZh6pRp6Nuvj4Ti6JgYb9680QMiY9\/Nm7eQPoNuBf\/Jf09i\/O+emDt\/Ljyye8hXufLlUaFsBVw4f0HvAMiRMwecnZ0xbvw4tGndBn+tWYtGjRvq5ZrDiXquFCqFi9YEgkMAsUdSE7DKAUDhuSaPm6yJzLgQQqGEvLy88Or1K5w6e0qGJCLHQFBAkAxB5ODgAMp3QPOkl7WV7k87ClNEhcITqdKhewc8evIoWo5\/JcsSjir0jzl9T5ka98PHD6N5+2ZSLXt7e7njtFy5cqamJuvDBJgAE2ACTIAJCALsAOC3ARNgAkwgHhBImjQp\/vjjD4wZMwYrVqxAnz59cHTvCVCM\/aiGBFpzcBmSuiSR9JySOMHB0cGI5KN7j+V18tTJjOpTpkkhr58\/eWFUry4eCMdAhqzp8V44ALas3o4mbRuoWzFypD\/+yVhExk1amalFzOWiRYviypUren1pRWjWrFlRsmRJjB07NlIhZvRCzOhEGYoTmtlK8U6dO2HVn6vhKQz6DRs1QMaMGZEvf34sWbIUNWrWQPIUyTH5j8l4+vSp3gGQK3cunDlzBkMGDcEvA\/rJlY8rl6+Q8cKLFSsW6qnVb1APy5cuw4D+A1BZhAhydTVOpB2qgwlVqOeawEx2dpgQum+qEhyO3GhnyTc7cQOLJ0A7CVKlTCVfuXNGL6kq5R6gYugUsHiAX5ngJ7Gbg4oW3\/lfGcZib02cPgHzlsyV86tdu7bMN5U2rS78o8VOmifGBJgAE2ACTMCMCXxZFmLGk2DVmQATYAJMIGIEaIVWu3bt0LJlS9lh58Y9EesYRqvkqZIjpXtK+Qpp\/KfmSV11zoH3bz8Y9X77Rpckzj1jGqN6dZE8VTIs37VA5giYMnwGwnMUqPZaHJVhU0tDQMGCBbFo0SL5IucL\/YG8atUq\/PCDcXJYLfQ3NRmKp7mFiiF9J02dJJN49u3dT2IdO26MTMhZueJ3KJC3IN6+fYsuXbvoV9FS0s8pUyeLXQE3UTBfIWTPmgNbt2zDmnVrkCKlztkV8vlMmDRROLjeS6dByHsmfR28Oj2hslabtLLmqdznTyGjtpvnPOJaa7UDQH0WxbU+pjA+hSuiYm0Vs7vqTGGuEdEhSDkAgndNRKQPt4EMeTVn0Wx4Th0vE2uXKVMGS5cuBRv\/+d3BBJgAE2ACTMC0CfAOANN+PqwdE2ACTCBGCDRs2BDTp0\/H4d3H0HNYtxgZI3P2TFLuycOn8X2dSvox6DpR4kRwT58GNy\/f0terE7cUbnBO6ozeI37G\/h2HMPYXT0xaNl7d1vxIq\/5jori7u6Nx48ZGoukP5J9\/\/hn\/\/fefXF1udNOCLpTRzRTDK7m6ueLtB69waRcuXAhe77+E\/MmdJzdOnTmJx48fyxA+lC8gZKlVuxbo9e7dO1A871SpUhk1uf\/ontF15syZ8PzVM6M6c7ig8EdUOGSG9k9LhVVSPzvajxC\/JCoHQPya9ddnSzkHqNhY63YCfL215d9VDgDaoccl4gRo5T+9qAwaNAijR4+OeGduyQSYABNgAkyACcQZAd4BEGfoeWAmwASYQNwRoJ0AVBIGxwmOCU1y5PVA6col8MevU3Hh5EX4+\/kLg\/5BLJ2xEo3b1NevoA5vbMop0Gt4N+wVyYb\/2bo\/vGbRrqcEjbFV3Nzc5FCGK+PJGdCsWTPkyJEDKVKkQOnSpbF69Wq9SvTH9ciRIzFkyBAZp56OR48eRcWKFfHPP\/\/I0EJVq1bF69evZaJKcuwUKlRIyipbtiw2b96sl0UnVapUwZ49e9C7d29ky5ZNvgYOHCgTUho1jMaFMmJaUqiJNGnSfDN0E8X4D2n8jwZGk+uqwtNb0nM1Gci6kO1yda3J6GTGiigHwGfwjgr1GJWzmxIjc6GV7LoQQOwAiPi74er1K5g+d5rsMHfuXIwaNSrinbklE2ACTIAJMAEmEKcE2AEQp\/h5cCbABJhA3BCgmOVUPHJni1EFRs8ejlwFc6JVtQ4omroshvcYg8Zt68vV\/REZuF6LOihQPJ\/cBUBJgWOiKEOR1rJptTStuKQXrQw\/e\/YsPD09UalSJaRLl04OR\/Vk8H\/27BnICD9unEh6LFYjtm3bVp9D4N69eyIG\/RLpFKC+rq5iBbsIQ3Pq1Cl07dpV5hVwcnKS9eQsoBV5FGaIwg\/lF\/HrybmwfPly\/fQuXLiAzp0749y5c\/jll19AzoOpU6dixowZ+jb\/Z+86AKI4uvCnKGLDjmIB7IqoiL33bow19h67xsQWazRqYu+9xlgT\/e0Fe++iKPau2GLvigj475tjljs44YA7uPImWXd2dubNm2\/2lrtXY1uRCgBtRUdsafL4+EdA7qtMMBr\/HFkPB\/I9FPI17hSS1oNexJVIPFn+H4ZNULDG2409ADSYBIWE4sEeAGEPSRS1m3du4nPgZ7i7u6Nz585RGnJEQY5v2wgCPXr0EEYrlH+MjF64MAKMACPACMQPAhwCKH5w51kZAUaAEYhXBPz9\/cX8brldos1Hq67NQIchhaz4Jy8di4BPAXj+9AWyumbRGVa5TkWcf3lSbRsxbYhapwoJcf72XqjTZvQLE8Uz3759Oyj5snYhC39ql+X48eMirMzSpUvh4qLZiwoVKgjB\/YkTJ8SPbOr7+PFjkWg2b968Yqi3t7ewFG7fvj0GDRok2h4+fIjJkycLTwES7FOpW7cuPnz4gN9++w3NmjUTygVqz5gxo\/AekEKyCxcuCK+An3\/+mW7HukhBMSsAYg2lWRGQ+5oAbD9iqo2RGJuKvq3Qle82W1mvIesMDtJYvNtzDgABV3CoQiRJaHJkQzC09T65c+YREMhwcLaOhy2t\/+bNm6DvrA0bNozSG1Ibl8OHD2Pu3Lmi6cCBA8Kghc4eHh7a3bjOCDACjAAjEAcI8C+4OACZp2AEGAFGwNwQePHihWApdVpdAbWp+HRI6hBB+G+quaJL10TyfxQoUEBY\/JPVP7nJd+vWDSTcq169OqQChqzvr1y5IoT\/AQEBIOv8gwcPCsXHp0+f1KWQwF4K\/9VGpULKAlnOnz8PCvHQsmVL2STOdE0eBrdv31bbaZy2gCxXrlzCS0HtYKQKKwCMBKSZkJFCH95X428I5wAwLqby\/cYKlTBc1Zj3nANAgCIVAPb2ScJA4lqkCKRLmw70\/r969SrIcICLbSBA3yFLly6Ntm3bRshtFRUCyZIlE10yZsiISuUqgX5\/cN6IqFDj+4wAI8AImAYBVgCYBlemyggwAoyAWSMgLdNPHjpt1nzGBXNSUGTsubJnzw5ye6bjl19+Edb5R44cET+cly1bpk63ePFiFCtWDBkyZBAC\/VWrVglFgbbgihIK6yuUVFgWChVExdnZWTaJsxxLSWxlSZ8+vayKM+WEkMJdnRsxvJC8J0jIXzNiCKFZDpPx1E31mTHLRccxU\/KzE8fT8nQ2gEBwcGjMe1YAiN0OCU1qYpfQzgZ23zhLzJAuA2pUqSmIkfchv6+Mg6u5UyEv0ufPnws2yQOVDFeovH\/\/Xhi0kGcrhaik75IUHqp58+biuy71SZEiBZ1ACsiJYyaKOvWXSclFA\/\/DCDACjAAjECcI8C\/zOIGZJ2EEGAFGwLwQoESwVB7eCxMKmxeHccdNXAozSWBPP47IJZoKCft\/+uknkQeAkvWSkH7r1q3invYP629ZXGu3U24AKq9fvxZn+Q8lB6ZCCglZ4mrNcTWPXBefTYuAfCZ5X02Hs8TYdDPYBuWEocpHqbSyjVVHvkqp5OUkwBqcQr6aJgnw7bu3kSmPkzh279+td1OWrFgs7tdpWkvv\/eg09hvWF9UbVI3OEIP6njnng5M+J9S+L16+wD\/rVmPwL0OQJnUaEc7w1KlT6n2uWC8C8nupR35N2J7WrVuDjEvIO9XV1VWEm9y\/fz8+f\/4slAP\/\/vsvqlWrBvqtQd6wVEhZ0LxDc9C7mfJfSaMV60WNV8YIMAKMgPkhwAoA89sT5ogRYAQYAZMjsHfvXjGHu2c+k89l7hMEB4fEGYsknKdQPFIYv2XLFuTPnx\/Tp08XCdLIVfrSpUuCH2mtaShz+fJp9lIqF+S4Q4cOIXny5OJHmmyLqzMLM+MK6biZR+5nwgT89dHoiJsqFpnRGbUMgqqS6qtl8BsXXIYpADjkDeH9JeiLgN0hiWnwIEGn9+5terd2644tettj0ljCqwRqVo29IkF7bgonWPeHOrhz747aPOC3\/tjsvQnp06VHFmeNVyLlJ+Ji3QhcvHhRGKdQCJ\/8efOLxZ49e1a0ffz4UTwPOdxyYOTgkbh86jL2btmLUsVLgfJS7d6tUYCRsUrA5wDcunNLeJvSddKkSa0bOF4dI8AIMAJmiAAnATbDTWGWGAFGgBEwJQJ79uwRluc0R7GyRU05lU3Tph8\/ZAVFhQSnZIlPoX8o1n+HDh1EO8VUJVdosqKjMEAUU7dTp07iHv2wik4pXLiwyC8wePBgZM6cWSQSpr2eMWMGfvzxR52Y\/9Ghy30ZAYmAFCByyAyJiPHOCUJJSSWL8SjbJiU1pwJYAyCfAPlsJXNILpts+ixzACRNqolRbmwwShcvjR17d2CiEnpJ21vv2YtnOKFY1hcqUMgoUzZr1NwodLSJyGdFu03z\/k+AWo1rwP+BPxInTsyJXLUBstL6zp07xcoqlquI67euq6sc8NMAtGvVDqQY0C4Z0mfAioUrMGvBLGR3zY4UyVOgU69OsFeSba9duxZ37txB8eLFhQeB9jiuMwKMACPACJgeAVYAmB5jnoERYAQYAbNBYNKkSRgwYIDgJ1UaR7AHgOm2xtfXFx07dhQTkDUquUqTtf+GDRtQsmRJ0d6mTRscPXoUtWvXFlZRadKkwahRo7BmzRqcOXMm2swtWrQIffr0EbFY6Qc85RXo3LkzRo8eHW1aPIARCI+AFAolSCjF1eF78HWMEQj1AJAYx5gODxQIyBBALP\/XPBCvXr8SlcR2iWHPOQAEFl+CNR4AyUykAKhdvQ6OnjyKk2dOokyJMpqNUP7dsdsbhT0KwzlTZvz3JMyCPjAwEBNnTMDuA7txz\/8uMmXMhKoVq2FIv6GQPH7XvB56de6F6fOmg0Ly\/PnbWFy45Icbt29g9qQ5oLA9w8YMxZzJczFo5CCcPX8GWbNkw4DeA1CnRl2Vhw8fP2DU+N+x79BeUL244kXwx\/A\/kTVzVnz89BHft\/hO9J08a5JYg2NKRxxT1kJKgPcf3ot7FMKQcg5RniOKC08hXsqWLSuMDlxcXNS5DK18+PBB0KHvQZUrVxahYgwdy\/1MhwAZklCpXL4yChcsDL+LfkifNj1+bPcj0qbRhJ4MP3sqx1QY2n+osPqvUKuCuD18+HDUr18\/fFe+ZgQYAUaAEYhDBFgBEIdg81SMACPACMQnAuSKS8J\/Ekb3HNIVrbo1R7Lk7IIbrLi6G7ucPn3aIJL0Q5e8BMja\/9WrV6pFFMVXlWXBggWyqp5JYUA\/lsMXSu67cuVKfPr0CU+ePIGbm1v4Lvjvv\/8itM2ePTtCmzEaWJhpDBTNh4bcz4Shwmrz4cx6OJEYW8+K4mclagig+Jne7Gb9+EHjUWZnxz\/95OYESQWAEnrPFIXC5BQpVATbd23VUQBsUcL\/1Kv5Hc4ownnt0ntgTxw+fhjdO\/WAm4sb9h3ci0XLFoKEqQN+Gii6Xrx8Ab+OHIhsWVyQK0dOxfraCdsf3cf1m9fE\/bfv3sLXzxfNOjYDhQYaOeh3rFizHB17dcDJvafhms1VeCQ2bdcEd\/3voE3ztqC47gv\/XohajWrgyM5jwmK7fauO6Df0F5QvXR61FEVGEsV6+5SiyCD6FB6IwrnkzZtXxHm\/efMmunbtCk9PTxHOkKy7r169Cvp+Y2ghIXPLli3x7NkzMaRFixZYsmSJSCprKA3uZ3wEKKb\/wYMHBWHyACDr\/sb1GwvlDOWBiKr8vepvEUbKw8MDv\/76a1Td+T4jwAgwAoyAiRHgb4EmBpjJMwKMACNgDgh8+fJFJJslXkj437lfB3Ngyyx4CA7SJAKMT2Yo9j8dxioUW1Wf8N9Y9JlO3CJAlpV79+wVghsKJZEoUSIkUsIvJFbOFIaBXOu1r6luZ5dQKPtIEKp9EOdSOBqhHWF9ZT\/RN1TgL5Vlr9+9wfOXz5BAiXFN4YASKUJFUgokTGSHhMp\/xJ9qgR0LqMjaNCDgEz5+\/iTOAYEBQvAUoFyTYIKEUJ8DP4ceyj3lfpDyrgtUYnvbJ0qMD58+4FPAR3xS+n1SrFppHNXlmEBlbOCXQASHhL0DvoZ8RcjXEAXrEMXaVUkhq3jS0LVSCa1rzsq\/4lpgGLpG4pf6koAsKDhI3Ne3fB38QzGn\/lRor7nEHgGJMe0TF6jC2MAvn3H3v5v01NGLQPNuCH0GCSfN8xzWLvqIdnqfiB70j3i2Bbb0uRDXymeGasr\/4vMi+4j71E6fI9ETr969xJPXj5EoofL+Ut4dpJQQ7xHlM5tI8VBInJDeX\/SeU66VPqJN1pUz9afPN91LoLx\/YhqSTOYASOpgOkOIujXr4a8VSzBm2J8EG16+eqlY1B\/BxFETdRQAZHV\/7cY1IejvoAjfqXxXqz7OK9b9p8\/qGhSkU6yvN63aHOk7tk2zNujd5SdBp5JiuV20YhEcOnpQCPw3e28WngHL569E9crVRR\/yNChQMj\/mLpkjkvz+0OAHoQAoUbQkalSuIfr0H9YP9x\/eF3VK7nrlyhWcOHEClCC2bl2Nd0GdOnWE5+HkyZMxZswY0Teqfw4cOCDGkwcEeUZcvX4Vq1evxvHjx0GelKlTp46KBN83EQIUnpIMSgrkKyCE\/zRNurTpDJ5t5ZqVoi89C\/RdhQsjwAgwAoxA\/CLACoD4xZ9nZwQYAUYgThCgsDNkkeWaMxva9w6zLo+Tyc18kmBFaMeFETBnBCaMm4jp06abDYtDJ2msUY3PEEkYSUho3UVa+cuz9mpv37mtfcn1GCIgFQA28DgZhBApCamQcH7EX78YNMY6OwnVh6Lp0CgxaI1dfu4sFA4aJYRGeSmUrIqSwZ4UrULJmkTUU6ZIqVFMkBKWDkUZQRbR2uF1tHGrq4TdGTNxNM5dOAfPgp4iJ4B7Xne4urhpdxMhfg5sOyTa6L1AMfYvXbkoQu6QckC7lCpWKlLhP\/UtW7KcOoQ8EZLYJ1FD95w4fRy0DhLknr94Xu3n4V4Qp8+cUq+1K36KIoKE\/\/S5GjlyJAYOHIj+\/fsjVapUQuCvHbKwSJEiIrSh9nh9dVonhUEkr0UqDeo1xNzJ87BjjzcGDO+Pu3fv4u+\/\/xZhDfWN5zbTI+Dg4CAmCf8MGjLz7bu3ceXaFTg6OoIUQ1wYAUaAEWAE4h8BVgDE\/x4wB4wAI8AImBQBsihduHChmKNa\/apIbM9WODqAC6tEnRa+iCUCqvAtlnR4uAaBt2\/fiAr9GE+dKrWwWA9WEkuSxbk8C+tz5VpasNMAHQEzGeFGIQ3V6a+ZOsK\/CRMkBHmYEC3qr86r1LWvIww0qCGi8J+Eb0IAl5i8HBTLX+VM1zp1RRBHAk7RTkI55SCvJ+KTMCMLX4ekoWe61mpP4kCCPY1wlFgkzwWyPk6oeFCQQFC9VtrD1+ma1i9xo3mJB5qT4nfTuzYxWSor7bRP5BlA3gbkdSS9BESbct2xS0ecO3cuyj0yCEbupO4JQ6FBgJ5BsuIloRwV8S6Q7wR51twIewa\/1a7003gQ0ABN0X7ny7rso32mzwp57tBnrETxEurngD4T8jNC3jBUl58T+szQ5yQkWPGuCb0nPjeh70DJg2FnsXICQC1iLoVWTMseitl\/UWMZH55GdtccyJcnP7bv3iYUAFt3bEa9Wpr4+uH7UuiecVPHKhb\/p0Qc\/hxuOYT1dfJkyXW6ZlZyB0RVwltp03tJejrdf+iPd+\/foU7TWhHIZMuSLUIbNSRJkkS00\/6RtT+940hA\/+bNGzWnkfZANzc37Uu99bFjxwrhfzJlfV3bd8VP3foIBQPlTrh09RImzZyIn3\/+GWSFPn\/+fKRIkUIvHW40HQJeXl7IlCmTCOPje94XRQoXMWiye\/fvoc+vfUTfRo0aib+LBg3kTowAI8AIMAImRYAVACaFl4kzAowAIxC\/CFy4cAE\/\/PCDsP5PmswBlWqFWYXFL2fmMzuFMeFiIgQUYQEX4yHwXd3vsHC+RplnPKqmpSQF5NpnqTQggRQpFMgqmRQXJFwiwbsq5FeElrZSyJKYiinDkdgKlrROqZSRwmhbWvu31npg+4Fv3Yqz9pu3b6J0tdLCctx7q7fR5qX9lu+V8GcS+Yv3D4X3UhR22gcpFL4EftGEBQv4LKzkSSEQEKAJN\/ZZaROhxpTzJyUc2bt37zSKPKXP8+fPseqfVYJeZAupp4QB2rR9o5K8t7eI8S\/DAWmPefrsCZp1aIrcOfNg8h9TRc6AjE4Z0bZra7xQwgZpF1LmRFUie+4dU6ZScghkA3kchO8X\/prmIWz\/t3GtOiUJ5IsWLSpC85Cg\/+LFiwbRUQkolR07dmDYsGGiaf7UBWooItmnv5K0OH269CJRMSUbzpAhA6ZNmyZv8zmOECBFHeVjmDp1KtYqz4AhCoBjp46hXdd2eP3mteCye\/fuccQtT8MIMAKMACMQFQJRf4OIigLfZwQYAUaAETBLBOhHWbly5fD27Vvkcs+JSUv+RPY8bmbJa3wyFRJq+afvh2988sVzMwLhEZBCzfDt5nxNVvJUSJDA5dsIPHr0SNzMkyvPtzsZcOfa9WsoVbEUFsxegKaNmuodsf\/gfjRq3gi+J3zh5uqmt48pGp1cnDB6xGh07dTVFOR1aFriZ0VnAVZ6QZb7VOR7wVjLpL\/f9I6Jy\/fMlatXhAIgQUIKXfbtQmGAyJqdEvrmypEbZNkfvhw7dVwk2J3y51TkzZVX3CZFxVUluW+6NGnDd4\/Vdd7cebF+yzolcfB1kaSYiNHnpd+wvsifxx2d23VWBfqUt2Hu4jmYuWCGOiclc23Xrh0KFCggLPgvX74MSvwr6XTp0gUFCxZU806pA0MrL168QNu2bcWclNxY5iEI3699yw5wTOmIHv26CyVD+Pt8HTcI5MiheV59zvkYNOGwUcOE8J88RehZKFGihEHjuBMjwAgwAoyA6RFgs0fTY8wzMAKMACMQLwh07NhRCP+r1quElbuXsPD\/G7tAiT65MALmjAArp8x5d2LPGwn6nj57Kgi5u7vHnmAUFJwzOaNls5ZIkdx6Q2qoCoDIZbNRIMW3jY2ADENjbAWAsfk0hB6FGaNCXkyRlfxKzP\/srtkxY950JbGv\/vA\/RT2LCqH75u2bhMfBk6dP0F8RyPsroVQoCasxS9vm7ZDKMRWGjRmKA0f2i8TEpKBY\/b9VKO6lEeSTlwF5Yh07eVQoALTnJy8If39\/dO3aVSSX7tGjB8hKn0KY\/fbbb1i8eDFevXqFTZs2iWTtciwl+aW+efLkwbNnz1CyWEn07dlP3tZ7lqGMHj58yAnS9SJk2kZKxNy7d28xCSluDCnS8n\/ixImoX7++IUO4DyPACDACjEAcIRD5N5Y4YoKnYQQYAUaAETA+An5+foLo8KmDRfxr489gHRSlB4B1rMa8VqEK4cyLLeaGETArBB4+eijCipBQlHI8mLrky5sPs6fNRvr06U09VbzR53dPvEEf6cSq0NwKQu8FfdF4M0TlAUCA1K1RTwj2v6ulXyBKIXnIGn7l2hXI7ZUTxSp7KXH3HTBy0O+4dfeWGk4lUnANvJkmdRqsWfo\/wU\/zjs3gXjIfdu3bifEjJ4g8BZJMu5btsWHrejx\/+Vw2qeeWLVuKRL+tW7eGj48PWrVqBUr+O2bMGGHZP3LkSDRo0EB4Cbi4uCBfvnzo1KkT5s6di5cvX4qY8CT8j0q57ZG\/oFBUXr16VcyhMsCVOEHgxIkT6jxVKlZR69+qHDxyUCSLJk+cZMmSfasbtzMCjAAjwAjEEwKsAIgn4HlaRoARYARMjYCnp6eY4sKZi6aeyqLpKx7uokT1Q9SiF8nMMwKMgNkiQIk0qVDC4LgoPmd9UKlmJTx6rAk7NGHKBIweOxpr169F+Wrl4ZrXFU1aNlGsj\/112PE954sOXTogt0du1GtUD4uXLtaJf3785HHUbVgXLrld4FXaCyNGjwBZ\/eorp8+cRtXaVXH7zm0Rjsg1jyvKVSmHrdu36use7bbQVK+aZLXRHs0DTIUAJfalQgm2Lb18CQr1AAi3Fgrx89\/1p6BktrIMGzBctOXOmVs2Ycmsv7B97Q71mgTivofO48iOY7h97i7GjhiHbh274\/6lh6pi8I7fPXTt0E0dQ5XJY6Zg98a9oq1y+SpiHpesLjp9bvreFjkIZGNhj8LYu2kfrp6+Dr+jF8T4ti3aydviPHroGNC4Yf1\/E4nMnTI4YfiA35DEPgl8fX1ByV3J8l8WSq5OhbwdmnzfFMTDrVu3cP\/+fVy7dg0rVqwQ93v82BPXz9xExbKVxHVk\/5AHwKyJs0WXkydPRtaV75kAAalIbdKgifI8jo1yhlt3bok+zZo1g6ura5T9uQMjwAgwAoxA3CLAOQDiFm+ejRFgBBiBOEOgdu3aoB9Mx\/edRIUanPz3W8BT+A0ujAAjwAjEFwKUp4WKvb19nLBAITzO+51XhfP3H9zHnn17RPz0Vs1bibjbpBRo36U99nnvEzyRMqBp66YiCeS0idNw\/sJ5DBo+CI6OjiLXgN8FP6EUqF6lOuZMnwOiOXbiWFy9dhX\/rvg3wrpozWfPnRXC\/1IlSoncAH+v+BttOrXBuZPn4OoSO+GRFFwpGgAuZoRAUIhpcgDExxKlN4OdEb0ZyBDBNVvsnv3oYBGVxxElJe\/ZuSe6tO8i8jaQZTcJ98vVKoN379+BwsKQwJ+UGXmU3AWUVJkUBFQoFMz+w\/vhns8dV65dwakzJ1EgvweaNWwmFAqG8llIUVZQkfkjDB3H\/WKPgAzV9eHDh2\/u2Y1bN3Dp6iXUURRengU1hkfkFcKFEWAEGAFGwPwQYAWA+e0Jc8QIMAKMgFEQKFSokKDz0P+xUehZKxFVUGStC4zHdTG28Qg+T20xCMgY34kTx40HgD5gKAfBqcOnkDNHTnGbPrvDRw0HeSekSpVKeAiQsPDf5f8KQWDd2nXx7PkzLPprkVAADBkxBB4FPLB62Wo1rAeF\/mjdoTUOHTmECuUq6JsW7du0x8+9fhb3qlSqgoLFCoKSFFN7bIp89yRgDUBsYDT62OBgjQeAFCwafYI4JCgF0gmiyAEQhyyZbCrtd1NGp4xK8mAvHDp2EA3qNsCoIaPhlCGjmFs7CTO9LxrWayjaKbEx9Y1J+WfdajHM2dk5JsN5TCwQqFatGhwcHOC92xsdenQQCZspFFAmp0yCas9+PbFmwxpRp\/wR3Tt1F\/XXr1\/HYlYeyggwAowAI2AqBFgBYCpkmS4jwAgwAvGMwP79+wUHzlk1X9TjmR3znV7GADJfDpkzRoARYARMikCWzFlU4T9NlDOnRhHw9t1boQC4cOkCvqvznRD+S0amjJ8ihP0kbCdr\/qEDh6rCf+pTt1ZdpEyREidOnfimAqB82fKSHLJmyarEPU9ilGSfUgGgEueKWSAgreYNiZtvFgxHwoRUANjZ2V5E3ZULVykW\/q+QIb1TJAjF\/taeA3swe9EsQWj8+PGxJ8gUooWAh4cH\/vrrL5F\/YeuOraDDMaUj1q9Yjw+fPgjhP4V+SpEiBU6fPS0OmqBs2bLRmoc7MwKMACPACMQNArb3jSVucOVZGAFGgBGIVwRu376NhQsXCh6atNdYYMUrQzw5I8AIMAKMgNkikDZtWh3eZBgPCpFGx81bN5Exo8bKV3aUeVPIe4C8GPRZ6FKbzDUgx2mf06fTTURsn9gewSEaK3HtftGtSwWA5DG647m\/aRBQcwAooWQsvUhlhjXkM4juXpBHgKmF\/\/Te6dGvGyj8DCUZrlMnLKdCdPnl\/jFHoHnz5rhx4wamTZuG8uXLg5TCE6ZPwNIVSwXR\/v3748qVK+jXrx\/SpEmDxo0bY\/78+TGfkEcyAowAI8AImAwB9gAwGbRMmBFgBBiB+EHg2bNnaNiwIQICAlCnSU3kdtdYcsYPNzyrLSMghXC2jIEx1x7yNcSY5JgWI6AiEJmgnMK1JE+eHDJXgRxEf2MCvwSqCUr1hX149eoV3Fzd5JAI58jmjdA5Gg387okGWHHYVSp3rCEEkJoE2AqUGXH4CBg81cePH4WwmQb8\/fffBo\/jjsZHIEeOHOjTpw9atmyJrFmzYte+XSJnDM3UuXNnpEuXDpMmTRKH8WdniowAI8AIMALGQoA9AIyFJNNhBBgBRsAMEHj06BEqVqwIPz8\/uOZyweAJ\/c2AK\/NmIYERE\/iZ90qZO0tFwFRCUkvFg\/mOewTy5MoDn7O6iR3nLpyLoqWLCg+B7G7ZceTYER3GKAEw5QkokL+ATjtf2C4Cag4AK4ibH\/RFk9DYFkMAxcUT3Kl3RzGNp6enKmyOi3l5jjAEyOrf1dUVw4cPx4MHD5AhQwYMHDhQdJCf5atXr4YN4BojwAgwAoyAWSPAHgBmvT3MHCPACDAChiNAlv\/knkvhf3K758L8DTPhmNrRcAI22tMaLBFtdOt42YwAI\/ANBE6dPhXhDimSmjRsEqHdkIY+PfugTac2GDlmJLr+2FWEBKIEwL179AbFgO7Xpx969+2NsqXLosUPLUTYn54\/94R7PneULFHSkCmM2kf1AEhgVLJMLJYIyLA51vB3V67Fzo5\/TsfysYgw\/K+VS3Dw6AE4Ojpi5cqVEe5zg+kRoBBMv\/\/+O8iza8yYMThx4gR2796NIUOG4Nq1a1i7dq1gombNmiIEUN68eU3PFM\/ACDACjAAjECsE+BtLrODjwYwAI8AImAcCJOz48ccfhfDf3TMf5q9n4b+hO6PIxERRBUaGDuR+jAAjwAiYKQKLli4CHeFLTBUA9erUw7gx4zBm7BhMnz1dkK1Tqw46te8k6i2btRSCIlIQ9B\/cXyTzLVOqDFYvWy2SRobnw9TX8n2eAKwBMDXW0aEvQwDZWUHYHBkCKJEVrCU6e2jqvt67t2Pw74PENJ06dYK7u7upp2T6ehAgJR1Z\/MvQbnv37gVZ++fLlw9r1qxB9+7dMW\/ePNC7dtu2bWAFgB4QuYkRYAQYATNDgBUAZrYhzA4jwAgwAtFFgBKkUQzOzZs3I6VjCkxZNp4t\/6MBYkjIV9Gbw6xEAzQDu1qDkMfApXI3RsAsEMibJy9ePX4VKS+VK1bW6TNzyswI\/atUqqLThzp07dQVnTt0hv99f6RJnQapUqVSx9H7s2e3nujepTvuP7iPTBkzCSWA2kGpPPV\/ql5WrVw1An266X\/DX+3DFetDQIYNsQYPgLAQQPxz2lhP6rWb19C9bzdBjhL\/kgU6l9ghQLlaKJTPzp07sWjRIuTMqckLRp\/Fnj174vDhwxg9ejQOHDgg8rx07doVRYsWhb29PX755Rf06NFDMECCfgoDRAoAKvXr1xcKAKpzGCBCgQsjwAgwAuaPAH9jMf89Yg4ZAUaAEdCLALnn\/vPPP\/jjjz9w+fJlJE2eFJOXjYNz1kx6+3OjfgSkpaj+u9waEwSkkGfBgoUiORwpAihOsl1COtshIR2KdRlhL\/APPdMzHRQchKCgYBANukf9wg7FnlcRNCZU4kdLAZKkIc7Q0NO0QaVP11R0+oa2hSjzBAVp5qT7mrmUOULnpfn0jdOHC\/Wlg0qEs0KPflBTkfS069Qmr5UOap3az\/icVa9Fhf+xKgTks6I8vWa\/LvpcRJbUl+67urjG+zrk5yneGWEGdBAICdYkMqfnxNJLWAggO0tfitnwv2rtSgR8DsD3338vhNUODg5mw5ulMkJeFKtWrRLskyJg5kyNwpcSK8+fP1+0N27cWF0etZMC4ODBg8LKv0CBApgzZw7evHmDMmXKqP0eP36s1uVnQW3gCiPACDACjIBZIsAKALPcFmaKEWAEGIGoEejbty+mT9eEYsiRNzum\/D0O2fO4RT2Qe+ggIIVvOo18ESsESJBPZd6cebGiw4N1EUjEsaZ1AeErRuAbCEgFQGzf7+VrlUd21+xYNn\/ZN2aKu2bv3d5o27UtLp68iIwZMsZ44i4\/dcGzF8+wYeWGGNOI6UAZNidBQssPzUTKaiocAiimT4PuuHfv32GL92bRSJbnLPzXxScmV\/Qe3LAh7HNOHgAk0N+0aRMuXbokSObMnhP3H95Hrhy54FnQE7v378aZM2eE9f+CBQtQoUIFcYSfv2HDhjh06BD8\/PxECNLw9\/maEWAEGAFGwPwQYAWA+e0Jc8QIMAKMgEEIyARcfUf9hB86NkbSZGwpZRBw4TpJAZEUGIW7zZcxQICs\/MmCv6hXUSROnFjUSSlAber5a4gSnVtjMU97IA5FKERCbo3HgJ1oo\/50kHX0VyVck3odaiVPIb4j0JGW+Fr3aBnqPPK+0kZzJUqkmZPuizkU3rTn0TdOHyz0DMnnKPyZ1i6t5CQ9yZM8y3Y6a7f5nPHBx48fUcSziGjnfxgBRiByBOTnT36WIu\/Nd+MKATUHgOINZuklMDBQLCFxYo1nl6WvJ775nzRzIh799wiFChVC+fLl45sdq5j\/1atX+PTpk8jDUtyrOPYe3Cus+rUX17Z5W\/TorAnzQ+3XblxDpbqVhAdGnz59hMJAu7+sp0mTBkuXLpWXfGYEGAFGgBGwAARYAWABm8QsMgKMACOgD4G0adPi0aNHKFbWi4X\/+gAysC2hEpqGi3ERkEK3xQsXRxouxLizWi+1UmVL4eq1qxFiqlvvinlljEDsEJAKgNhR4dHGRoAUoVSsKQQQKZC5xA4B+rz+tWKJIEKJZa3h+YgdIsYZ\/eTJE0EoXdp0GDN8jDDIuHXnFhp+1xCUw+LDxw9o37q9zmR5c+dF88bNseLfFcJ7gDwGuDACjAAjwAhYBwIs9bCOfeRVMAKMgA0iUKpUKbHqlfP+scHVG2\/J\/EPTeFhKSlL4JhUBsp3PMUNAxoZnPGOGH4+yPQTIg4dKXHxmyBJ89ITRqFC7AlzcXVCySkkMHTUUHz99FDz4+PqgRsMauH33Npq2bYochXOgYp2K2LZzm7gv\/\/F\/4I9fBv8Cj5IeoNBDG7ZuUBKidseyf\/SHH4pqXqJLOEycMVHQK1y2MMZPHS\/a5JzyvHLNSlSpVwVuHm6o3qA6du7ZKW8Z9WxNCgDpAWCveLlxiR0CDx49QOCXQBH2x8vLK3bEeLSKgI+Pj6iTUJ9C\/CxfsBzHdh\/DgJ8GYHC\/wUIpkCxpMrW\/rLx7905UKT8SF0aAEWAEGAHrQYAVANazl7wSRoARsDEEBg4ciKRJk2Lb2h3wOapJEmpjEBhluaHRVoxCi4loEJAKAAqvwyX2CFBYIiqsrIo9lkzBNhCQ76C4UAD07NdTWMs2+b4JZk2ahVLFS2HB0gWYNX+WAPvtu7fwPe+LH9r9gAzpM+D3wb8Lb5723dvj3v17og8Jkzv26IjTZ09j9PDR6Ni6I3797Vds9d6KJ081Vrzhdy6qean\/tDnTMGPuDLRo0gKjho7C7gO74b3HW4fUnIVz0HdIX1AscOK\/eJHiaN2ldQQFhc6gGF7IEEDW8C4jgTUVDgEUw4dBa9ipMyfFFX1nSJIkidYdrsYGAUroS6VMybDkvVHRm\/\/XfGzavkl4C3Tu3Dmq7nyfEWAEGAFGwIIQYJ9FC9osZpURYAQYAW0EcufODfpyPmPGDPidvihCAWnf5zojEN8IcNJa4+xAiJKTgIo1JM40DiJMhRGIHAHVA4CShJiwkJX\/1RtX8evPv6Jjm45ipvp16uP8hfM4dfaUzsxtW7TFT91+Em1VKlSBZzlPHDxyENRO4TbOXzyPwzsOI1+efKJP1ixZ0bJTSx0a8sKQeV+8fIHx08Zj9LDR6NK+ixhasWxFFC5TWM1V8vbtW0yaNQlNGzQVwn\/qVK9WPTx59gSjxo9C3Zp15ZRGOYcEa95l1qAAoBAqVOztOQdAbB6O129eo88gzeeiefPmsSHFYxUELl++DAoRSu\/AvXv3giz8WzbV\/x4JDxi9t4aNHiaaKQFwlixZwnfha0aAEWAEGAELRoAVABa8ecw6I8AIMAJXrlwRICRNzgmA+WkwHwSk9S3HRjbOnrAHgHFwZCq2g4B8B5lY\/i+EayS0p0JzUhifi5cvgpR2lLhbu5QrVU69zJI5C5LYJ8H79+9FGwn\/MzplVIX\/1Fi9cnWkSJFCHaNdIaFeVPNeuXZFCAHr1ggT4qdOlRqVK1QGCV2pXLhyARTuo0ihIkJpIefImysvNm\/fDFIiUPxwYxXrDAHECoDYPB8z5k8HhZopWbKkSDwbG1q2PPbZs2eoUaMGzp07J0IpDRo0SMBBnzn5uYsKn+s3r4sujRo1Qvv27aPqzvcZAUaAEWAELAwBVgBY2IYxu4wAI8AISARWrVqF3bt3I3nK5KjTpKZs5nM0EYiLEBHRZMlqujO2xtlK6QFgDVazxkHEuqionxNNpCfrWlw8rUb1AIiDGG8U3ufPyX\/i1JlTIu4\/hdIhC\/3kyZLrrD5dOl1BemL7xJAhcUjwVtyruE5\/usiYIWOENtkQ1byU7JOKUwYnOUScnTM6qwqAoEJ22QAAQABJREFU+w\/ui7ZBIzXCQp2OygXdN6YCQPUASGD5UWjV97Kd5a8l\/L7H5fXzF8\/FdDKvVVzObU1zrVmzRgj\/U6ZMKZR6I0eOFMv7HPgZZ86dEQrFqNYrFY4yB0BU\/fk+I8AIMAKMgGUhwN9YLGu\/mFtGgBFgBFQEvL01cXy7\/\/ojUqVJpbZzJXoIqJai0RvGvQ1AwFCrMwNI2XQXKcy0S8g5FWz6QeDFG4yAFM6qyhWDR0avI4XKadK2Cd5\/eI+p46biwokLOLH3BAoWKBiBUGS8UMiON2\/fRBjz8tXLCG3UYMi8zpmcxVhp7S8Jffj4QVZBHgFUtvy7Bfcu3YtwFPIopPY1RkUqPDicmTHQtA4aMsdF8eIRFWDWscK4WcXjx4\/FRJ3adMLf8\/5G2VJlQV6YBd0LolzpMO+jyLjJnze\/uH3kyBF06tQJnz59iqw732MEGAFGgBGwMARYAWBhG8bsMgKMACMgEUifPr2oBgZ+kU18jgECkQllYkCOhzACRkeAQwAZHVImaOUISMWuqd\/vx04eAyX5nTZuGhp91wiZnDKJsDvXrl9TrfsNgbqYZzGcPXdWtcynMWTh\/+r1K73DDZmXBH9UTpw+odIgXM6eP6te586ZW9R37NkhwhlRaCE6Nm3bhP5D++PLF+N+v5AKAPZmUrfApisU+ufFS40HQIYMGWwai9gs\/v79+5g1S5N0vLBHYdSpUQcbV22E\/yV\/7Nm8B0kdkhpE3s3FTSgMSPC\/ZMkSnD9\/3qBx3IkRYAQYAUbAMhBgBYBl7BNzyQgwAoxABAQ8PDxE2+2rdyLc4wZGwBwQsLNji3Vj7IO0ZjYnoVmPXj2QOn3qSI+Zs2caY\/nYtn2bmOfJkydGoWduRKSQ+is4BpCx9kZ6zUhsY0P30eNHWLdpXYTj4aOHKFakGGgOEpgHfA7Af0\/\/Q98hfXHv\/r1oWc9SAmFKJlu3aV2s3bAWcxbOQZsubb7JtiHzkgcAKSV+H\/c7\/C754cHDB4K3azeuqXQpXBElLV61dhWWLF8iFBAHDh\/A4N8HI7NzZiRJkkTta4yK9Aozp3eZMdbFNKKPACmjevbvjotXLorBmTJlij4RHiEQWLduHd68eQNKLk5JvGVJnDgxvvVZo8\/i58+fZVdxPnT0EC5cviDq2bJlQ4ECBXTu8wUjwAgwAoyAZSPACgDL3j\/mnhFgBGwYAekB8P5dmDu\/DcPBSzdDBFgBYJxNkdbM3\/ohb5xZokelQ\/sOWDR\/kXo4OTmhqFdR9Zru1azOuUmihyr3NhoCRtSlUILebr90i3CQJX22LNkw8OeBWP7vcuQolANe5b2E0Pz3Ib+DYvCHD7\/zrfWlckyFHet3IHOmzKB4\/ERv5OCRSJ48uV7rXUPnnT5hOjwLeqJuk7ooUr4IKNdA0wZNhdJC8jLlzykiPviQUUOQu0hu9OrfC43qNUK\/3v1kF6Od1RwACfknqNFAtVBC85bMxabtm0TC2p9++gkFC0YMm2WhS4tzti9e1ChRKHG4IWX4mOHI5p4NebzyYMW\/K4TXEo07dfaUGF6oUCH4+vqC8glwYQQYAUaAEbAeBDgJsPXsJa+EEWAEbAyBZMmSiRW\/fK4\/RrCNwcHLNSMEpMCaFQDG2RSJpzGsmY3DEVC8WHFxSHpjJ4wFWQw2adxENvHZQASkYkeGejJwGHeLBAHpAZAwlslmD+84HMksmlv9e\/dHv1794P\/AXwjwyeqWSo8fe4gzWeU+u\/1M1LX\/ueMX5r13594d0Od87bK1ahdKJNyjXw+kT5detNWuXluHTlTz0iCHJA5YNGsRPgV8EqGK9CUVJuXD7MmzMXXsVDx+8hguWV10FAQqQ0aoqPvCCgAjoGnZJKQnSvny5TF9+nTLXkw8c3\/w4EHBgYe7xjM4MnbOXziPeUvmiS4U4uuXwb9g5ZqVImRQqWKlQO8vPz8\/nDhxAnXr1o2MFN9jBBgBRoARsDAE2PzCwjaM2WUEGAFGQCJQqlQpYWl4wecSbl29LZv5zAiYDQKUgI6L8RAwJwVAdFZ1995dtGnXBgU9CyKLaxZUrFIRa\/+nEXSSQPD7Rt9j+kxdAVBAQACq1ayG7d7b9U51\/MRx1PmuDrK5ZUOR4kUw4vcRCAwMVPvWrFNTjCUansU8sXvPbvWeuVXk50SGejI3\/iyRHylojqtks\/TZdM3mKoRnMcHr6ImjKFO9jMgDQOMpNMeo8aOQxD4JypX6dgJPQ+elGOD6hP\/avFIIIlqDKd8znANAG3HbrrvncxcAcKLZ2D0HZP1\/8+ZNOKV3QnGvqBMpZ3fNLsIC0d+dBQsWwNnZGT6+Pli7ca1IFlyqeCnB0MOHD2PHGI9mBBgBRoARMDsEWAFgdlvCDDECjAAjYBgC5JrboEEDYTV4bF9Ykj\/DRnOv8AhIK+vw7XwdcwSkYDPmFHikNgKW+IxSgtRKVSrhydMnGDhgIP4Y9YcQknbu1hlXrl4RggiXbC5YvGSx9lKxa88u+J7zRYniJXTa6eK833nUrV9XhCeYM3sOOnfqjCV\/LUHrdq3Vvn4X\/NBvQD+QF0ruXLmRMWNG9Z65VaTFuAyPYm78WSI\/UpmSAAksgn0Ky1Ozak3Ua1YPnuU8kbNwTvzzv3+wfMFyZM2S1SLWYAiTag6AWHpmGDIX9zFvBOb\/pbFC79Kli3kzGk3u4vrvtFSgUM4PQ7wuHR0dkcU5CygBc8WKFfHbb7+JFc5ZNEeEMDt+6ri4rlatWjRXzt0ZAUaAEWAEzB0BNs0z9x1i\/hgBRoAR+AYC169fx\/btGuvYJdOWYfXCtaAQEvTjg6wf6aypK2e6VuiIHyZKOxV5T1yE\/4fGajqFpaVU2hIqwrREie2EAM8ukZ34sZEwoSJioR\/zipyFLAfDDiKguaY+yg2NKEbto5k0utaGYg2aoeq\/koY4K\/SVxanrk2sW6w\/FR0ODcPoKKZAgYp6eniChNf2IIgyJHoXnkGdqp4PaZJ3Gp0iRQtCRvNGZDhr3rYPG01zatKhORdIRF1r\/aPNBQkMKA0V9iVftPachdC0L8UgHzalNQ9\/1u3fvRF8SmEoe6UwHzZk0aVIxL53poDayHKVC\/NCPS1lYASCRiN2Z9oyK9p7GjmLcjT558qR4JhYtWAQS9FMpX648ipYsipOnTiJ\/vvxo2qQplq9cjrNnz8LLy0v0Wb9+PSpXqgyZ60Q0hv4zZNgQFPQoiH9W\/iOeZ2p2dXFFq7atcPDQQVSsUFH0pLHeW73FZyx0qFmeEtlpvo5LobVZMmlhTMnPjKWwTcl2l81fhg8fP+DE6RMi7E+BfAXE3whLWYMhfMp3mPxbZ8gY7mOdCHwJ+iIWVq7ctz1cLGnl9GwPHToUEyZMQIcOSo6cRYvihP00adKIeQzJN0LfF6t\/Xx33H94XY8jTqFixYqJ+49YNlV8S\/ru5uanXXGEEGAFGgBGwDgRYAWAd+8irYAQYARtDgOJ2VqlSBSSspfLy+SuADi6xQuDGjbAfQLEixINVxQdDEXsEpDDzW4qh2M9gOgrVq1WHn6+fmIDC+ty4eQM+Pj7i+ZCWi+XKlkNm58zYsGmDUAB8+PABO3btwPQpumGBiAhhcNb3LIYOHqoK\/6m9bh3FIyBFSqFUkAqA0qVKm73wn3gnZSoVS9xfwbgZ\/hOqblYU2BqFtxmyqJel5MmSo2rFqnrvWUNjUHCQWMbxk8fR+IfG4vMpldLk1UgeQpRQ3JIKe+5Eb7cCPgeg94BeePrsqRiobYQRPUrx35us6A8dOoQSJUpg2bJlGDdunGCKFNjz588XhhOm5pI+L\/QZevTfI7x9+1bHCEPf3FLQ37VrV7i7uwse27Rpg127doEE\/z169ACFGGUlnT70uI0RYAQYActGgBUAlr1\/zD0jwAjYKAL0g4Pic6bImALujQqA4hyLgwyFlR8CYddhdWmhrzHD11jrJ0wU0eJcChsVMoIWQSzjKAcHBiMkSLEmV87BXxSvArKoDyZvA+qlCLCU67CzUqf\/xaGpU4Poq1yKm\/SvqNO1YUXwFa6rSkOlqzBP\/1NncaYBYXXZTm2f333GhX\/8hDX7xIkTQcoVsuSiPiSQo7o8pCW9PMt+79+\/F5bwYdgpuIeOJxr6DkmDzpI+nano++GlTYPGULxzOmge6k9neRANqstC98mCn+iHX1P4a\/oRSHRJeEoW\/TSX7EN1shgjjKgPWfAF0\/OgtFMJ\/BKIgE8B+Bz4GaVKauLISh74bLsI\/LX0L8xfOB\/Xb1wXz6FXES\/1M0Go0PNJyYM3btqI0b+PhvcOb\/H8klA\/fHn69ClIcUAKg\/CFYhk\/evRIbc6SJYtaN+eK9JSR709z5tVSeJOCf+WtaCks2wSfzk7OYp30Od67b2+ENZPXT8vmLSO0m3PDtl1bkSmPRghLSafF32H6TkZ\/k5X\/EtolBOVgSJ48BVKldESa1GmQWjnsE9sLD49c2XOhd9efzHmJRuXtj0ljsGXHZvH9Yvjw4ciVK5dR6ccVsdOnT2Pq1KlYvXo1ChYsCPoeKIv0ipTXpjyT12WhQoVw\/vx53L57G56FPL85HT2T+fLkw9nzZ9G6dWtVQUHKCy6MACPACDAC1o8AKwCsf495hYwAI2CFCFBYDSqZi2ZGzqo5rXCFcbek90\/eCwUAhWAgt21bLzly5MCTJ08wcdxEeHh42Doc5rH+UCWZtlLHPBiLmot\/\/v0Hv\/T\/BR07dMS4P8eJmP60DudszkIJICn80PQHzJg1A76+vti0eRNq16otQmvJ+\/KcOnVqUX39+rVsUs+vXr+Cm6ubei0F62qDmVY4BJDxN0YqUy3xM2N8NMyHYu9uvZEuXTr89\/Q\/8fmXCuYFfy0A5QuxS6jxhjEfjr\/NSYXyFYTS8s2bN0IpTory4K8aZThCT3I0KS1fvnqJ+7Ih3Dlv7nyoUaVGuFbrvNywZb1Y2M6dO2HJ4X\/q1KmD58+fi7VcuHBBnMmDh8J4VapUSRWum2oXSeBP7znyXJXKB5lPJrI5KWQlFTkmsr58jxFgBBgBRsC6EGAFgHXtJ6+GEWAEbAQBiv9PJbWrJvanjSyblxkHCJAQg4o+L4Q4mJ6n0IOAas2s5dWhp5tZNm3bvg358ubDlIlTVP7OnD0j6tJzhC48CniIfABbtm3B\/oP7sXDeQrW\/doUUddmzZ8fho4eFUkHeu3rtKp49e4YCBQrIJj7bMAKsADDfzW\/ZNKKF\/+q1q4UCwBABprmsrH69+qCDCoU3o\/Ar5P1GXnHkJUfhjug5FML\/ly\/x4uULvFTOdLx5+wZBX4JA77sXL17g2Ytn5rIsk\/Ph6uKG5y+f4\/bt2xatAMifPz8OHz6Mti3aCodWpwxO8HD3QPvu7aFPQW0sYOnvHHkejB07NgJJ+vsYVfG\/7y+6ZMuWLaqufJ8RYAQYAUbAyhBgBYCVbSgvhxFgBGwDAW3BmW2smFcZVwhIBUBczcfzRI2A3BNLtGYuWbIkvHd647TPaRT1KoqLly6iS\/cuYtEyB4BEoFnTZpg0dZIIi1GtajXZHOHc75d+6N2nN8qVKYcWzVuIsD89evWAe3530HyWVmS4CLnPlsa\/OfIr\/0ayItMcdyciT3K\/EiW2zJ+mDg4OoCO6xfecr1AAOCSJ\/tjozmUu\/cuUKIMz53xw8eJFc2EpRnxQGCsqDeo2QPky5UV9i\/cWcU6ePLk4x\/Sf+\/fvg0LaaXuxffz4ER07dsSaNWtU77m0adIiW9ZsOH\/hPPLkyoNsWSIX6lPehbv+d0XIyzx58sSUPR7HCDACjAAjYKEIaII\/WyjzzDYjwAgwAraKgJeXl1g6xa5\/9\/itrcJglHXLuNuWKFw1CgDfIMKCs28Aw83RQqB1y9aoWaMmvmvwHTJlzYQmzZqABPgU61t6AkiCjRs3FmEJGnzfQOTUkO3hz61atBK5AkaMGoHMLplRtmJZpEqVChvXbYSjEmPb0kpi+8SCZWm1bmn8myO\/Ekt+r5vj7kTkKThEEzMncSLNZyFiD+tseff+nVgYCXJtpRTIrwkt6OenSQ5viesmr41r164hWdJkKF2itLqE9x80eQBkmB31RrgKvZ9GjBghFNYUclG7rFy5Ei4uLiIZ9t27d9VblGD433\/\/FX8bSTHgnMkZB7YdwJ5Ne3DuyDkc8j6EqDwATvpowoeWKVMm0r+x6qRcYQQYAUaAEbAqBCzTzMKqtoAXwwgwAoxA9BHo3r07Nm\/ejAMHDmDviL2oMbYmkqVLFn1CPILSEgsUWFCkeRikFbJM\/MyPiPkgYM7P6JmTmrA+4dGimP0rl60EWS9SjP4smTWJefUl+qRnj9bYolkLHTKUDPj187CY\/9SnV49e6NGtByicAQlCwgs+Ht9\/rEPDnC8sKe65OeOozZt8j7EiUxsV861LDwBLCgFkDDTpvUglrZIU2FaKZ8HCYqmU78VSCymc7ezs8PGTYpXfsyNGDh6JHG45sO\/gPrGkvHnzRrq05s2bY+3ataLP8uXL0b9\/fyxYsAB\/\/fUXrly5ItpfvXoFCvfp5uYG8jaYMkUTRm\/d8nXIlSMXUqZIqf7dk39XI51UuXn81HHRpUKFClF15fuMACPACDACVogAewBY4abykhgBRsD6ESBX823btokfBp9efsLTS7oWRNaPgBFXGBrz3ogULZqUtJyViUktejHWwnxoEmAksNwFJUuWTBX+h18FCcEoAeifY\/\/UhPEpYVgYHxLuUtLf8ML\/8PTN\/ZoESVSk0Nrc+bUE\/uR7zJyVZpaAY1zxKD0AtEOexNXc8TlPgtCXeogNfQ+Rod9IqE2JdKUSJD73Ibpz03M6bdo0UKgf793eKFezHH778zfce3BPkCpcWKPk0EeXEgZL4T95ChQvXhy9evVC165dceLECVBS6Zw5c6Jhw4aoWLGiILFr1y58+PABFD6pVPFSSJ8ufYz+7t2+e1vQK1KkiD7WuI0RYAQYAUbAyhFgBYCVbzAvjxFgBKwXAXJB9vf3R8JECeFUIKP1LtTEK\/saopmABUUaHKTgzNYEMSZ+zGJFXgqGrfUZXbFqBVyyu2DDpg2YMW1GrLCyxMFSAWCJvJsrz9KinD0AzHWHdPkKCdb8IbY1D4DAL4ECiKRJk+oCYsVX+fO6o1fn3kidKjW8vb0xcOBAi1wtCe1v3rwp4vIHBQVh7qK58D2v8WoYP378N9d0\/LjGCp86kPV\/+fLlMXfuXJ3+t27dwtGjR1G1alWsW7dOhASiDh8DNB4jOp2jcSGV5aRk4MIIMAKMACNgewiwAsD29pxXzAgwAlaCwNmzZ0HC2owFM3L4n9jsaajlHQuKNCBKBUBCO\/6KEJvHyphjrT1MVeOGjUWYoHM+50SiYGNiZwm05GdNKnosgWdz51G+x6xVaWbu+EeXP7lfMiF2dMdbav8vgV8E6ymTp7TUJcSI72EDhmPlwtUiye3s2bORL18++Pj4xIhWfA7KlCkTFi9eDPo+XqlSJZWVw4cPC+G+2qBVcXQMy1NDa37\/\/j3IQ45KhbIVUFgJkURh7chDgpQAXbp0QcaMGiMfSuIbm5I3tyY00ZEjR2JDhscyAowAI8AIWCgC\/OveQjeO2WYEGAFGQLpRJ05qW0nzjL3zISGcA0AbUymI4RBA2qjEb12GibBWAXG6dOlAcf6dnZ3jF+h4mp1zABgfePkeY8Wu8bE1BUW5X7aWBFh6AEgBsCmwNVeaRT2LYtGMxciUMZNIqEsW9SdPapLUmivP3+LL09MT+\/fvx\/r160X4HupHyXz1laJFi6rN5KlEyZBJCeCU3glLZi8RSX39jvnhxN4TIIH9y5cvMWnSJDGG6tTX0PLlyxcMGjkIDVs1FKGKAj4HiKFbt24VHsSG0uF+jAAjwAgwAtaBACsArGMfeRWMACNggwhky5ZNrPrVnVc2uHojLjk0vjpbimowlYIYDgFkxGfMSKSsVQFgJHgslgyHADL+1oWExnZjBYDxsTUFRblfiRInMgV5s6X5+fNnwVvyZMnNlkdTMlarWm3s+N8upFGSIJPwv1SpUqhcuTIoxKUlForbf\/nyZSxduhRTp07Vu4TcuXOLez\/\/\/DO6d+8ulAbUsW6tukjlmEodkzN7TgwfOFxcL1q0SJzpO0B0PiMjx47E4mWLceT4EXTq1QmuWV1RrEgxPHz4UIQXevz4sTofVxgBRoARYASsHwFWAFj\/HvMKGQFGwEoRoB9KZDH77vE7PLv6zEpXGQfLYgWADshSyJwgoQVnnNVZkeVfsHLK8vcwshWwAiAydGJ2zz6xvRhIFrBczB8BqXi2pRwAZP0t\/97aWugj7SeSPAC2r\/VGqx9aI33a9Dhw4ABq164NS\/3s0l62a9cO+fPn116mTp2E\/6QgcHFxwbNnmu\/vRQpFTMxbs2pNDBswTCQbdsnqgiljp8AhiYMOrW9dnPM7hwVLF4gwS82bNxd4zlowCysWrkDWzFlF\/gLpWfAtGtzOCDACjAAjYF0IsALAuvaTV8MIMAI2hAAJjdq2bStWfHv\/bRtauXGXKi0PjUvVcqnJ5JkcAsiM9lDqYkKVVWbEGbNiBATY28YIIH6DBCvPvgGMmTVLQbgthQAKDNQkADazrYgXdrK75sDkMVOwd\/N+kKD79OnTmDlzZrzwEteTZs2aVUx5+67+7\/F9uvfBTd+bOHPoDH5o+IPB7Hnv9hZ9v\/\/+eyxYsACkmHjw6AFa\/dhKnMk7qlmzZgbT446MACPACDAClo8AKwAsfw95BYwAI2DDCLRo0UKs\/smFJzaMQiyXHqIZz6EiNDhIQQwLJWP5XPFwRsBABNgDwECgotFNvseiMYS7xiMCcr+iE94kHtk1ytSfAzXhf4xCzEqIZHTKiJGDfherGTZsGAICNDHrrWR5EZZByYM3bdok2p89\/7Ynb0y+j9WrXU\/Q3blzp0gyPGHCBHF95twZcabkyyVKlBB1\/ocRYAQYAUbANhBgBYBt7DOvkhFgBKwUgQIFCgirng9P3+PLJw51EJNtDgnSaABYCKdBTwpiWCESk6fJtGPk3ph2FqYeHwhIS\/WgoKD4mN7q5pQhZSSuVrdAK1uQfLfZkgfAl0DNdzZ+RnUf5tRKPgAq8jOse9d6rsjbsmXLlrhy5YpYVJ6ceYy6uILuBZElcxaRNJhyDaRPnx79+vVD3bp1sXnzZnTr1s2o8zExRoARYAQYAfNHwLYyLZn\/fjCHjAAjwAhECwGyCqI4o+fPnwclA3Zyd4rWeO4MBH8JFjC8fPkSXbp0EQqVNm3aoGTJkjYJjxRAtuvYDlUqV0H3rt1tEgdzXLQUkpkjb7bE0\/4D+3Hh4gWQ4I4OUpbJQ2kRbYSHFOzJfhIj2a50VWnIe8tXLUeSJEnkpd6zOl65q13X7qyvPXwb8Uxt8kiYQHNNdOSz9hWauFN0HX48rVWWCPcUutpF3qfcInJeOZ+8lnzIM43XV5dtEnOiI2mIszLHo8ePxPQfP37EvoP7YJfIDqTkpdBmxEOihInUNruESrvyt5QKjZeF5pFFu127Tvdpfirp0qYTlrbigv+JFgJfQzTPmYODYfHNo0XcTDtLDwDt58xMWY1TtigWfrYs2XD\/4X3s27cPderUidP542qyVatW4dq1a3DO5IzWSv6DTm07GX3q5o2aY\/KsyVi4cKE4mjZtiq1btxp9HibICDACjAAjYBkIJFC+0HNEWcvYK+aSEWAEGAG9CPTt21ckE0vlkgq1J9URwg29HblRLwKkONkxQBMrVXagBHT\/+9\/\/5KVNnVOnTq2TfO+R\/yMWasXzE+BeyB2PHj1Ck8ZNsGj+onjmxranJwVZpqyZIBVlto0Gr14bARLkHtt9DLly5NJujrN6s\/bNsP\/wflV5oz1xVEJmbWWOll5Hm4ROXfQP04+o91Q64e5F2q70lfHw3fO7gxIBC0VRqGKHFDekdJEHKWzoPq1J3hPn0P4J7RSFjPLr9lPAJ2FFPmL4CHgU8FB5NJfKnTt3UKR4EaGUenBFo7AyF97im4\/x08Zh6pwpSJMmDY4cOQJ3d\/f4Zsno81evXh179uzBtHHTlATIrYxOXxI8fuo46JgyawpI6eTj44OiRYvK23xmBBgBRoARsCEE2APAhjabl8oIMALWicCAAQMwffp0vPF\/g0+vPiFZumTWuVATrSpN9jQo1rk4Xt19hZc3XwhPCpkI10RTmjVZskqjuLQUL5ZwoBi8yZLxMxWfm1amVBn8b\/3\/8OQJ5\/qIz32guekzIYX\/hdwLCWFriGK9\/PVrCEIUm5qvIaFJRZS+2tbzoYb0gv2wdmlp\/xVv379ThJXBcEzhKPrIf\/TZ6cjxocRkV52zTp\/QO+FNfohnTZvSm3gP30EZF5ngWF9\/yUT4e5I0zUmFsKLJZT\/BLzURUOHPSn+1n3JPdAhto\/awe2I0ddbQUfqkS5MeZFVO+0IhRSjpu2a\/aFxoW2i7oCzoUy1sztALcYrQTv2U\/94p+0d8XLxyMd4UAL5+vioWKrOhFYlR+HZ5HYqc5lILA3k\/rs6Xr1w2+lSehT3NUgEgPQCCgoPgXjKfoviwR2LFE4WStdrbJxFnB8UbyMHeAakVQfjY38YJLxOjA2SGBHt16Q16ng8c2Q\/KdUWC8gwZMpghpzFjiT6PJ06cEIOrVa4WMyIGjipdojToeP32NeYumot58+YJbwADh3M3RoARYAQYAStCgBUAVrSZvBRGgBGwPQQovEH\/\/v2FYCO1a2oW\/sfwEchdM7cY6fevn1AAhA\/xEEOyFjmM3O3pmDJlihB22jIW5rKBBT0KCgUAWb5yiV8EtD8P21fviF9meHazQaBG02q4fN34wuvoLFAqaxbPXIIqFatqFB6hig9SXJHyQ0cRoAghZdFul826bZq+QrUS2oHuy4PoiP7yHqlFZF0ZGlbXbhfUxL33H94rCs7\/hHItSOGV+BXKtuAvoXVS1oS2KV44wUqdaJIyLpjWGKqYC\/lKCrpgRXGVENt2bsHDxw91wjrJ9ZrD2dHRUXgw0DpfvnoZJUt2ihfE3Cnzo+xnDR2SJ0uOxbOWwKOUO\/z8\/ODk5ISqVasiRYoUyJ49O\/78808kTZrUYpf65s0bEZs\/ZcqUyJghY5yso17NekIBcOaMJglwnEzKkzACjAAjwAiYFQKsADCr7WBmGAFGgBEwHIH\/\/vsPNWvWFD+O7OztUKJbCcMHc0\/9CITKQ6QgRX8n22iVAhttgadtrNz8VkmCO1HChdUwP06tnyN+N1j\/HsdohaH5AuR7M0Y0YjlIPptJkjggqYPlCkdjCYM63NfvrFAAUEghcyyZnTPjzMkz8L\/vj8+fP4uQRZ8Dwp2V9m3e23Du3DklTJImabA5rsUUPJESoGbVmti4baMgv3fvXnWaRYsWoUOHDuIoUqSI2m4plU+fPglWkznEnXflnXt3xJykcOLCCDACjAAjYJsIsALANvedV80IMAIWjsD9+\/dRpUoV3Lx5Eykzp0S5fuVBHgBcYolAqMViLKlYxXAKl0FFJsc0xqIonNDTZ09Bgg9j0jUGb+ZMQwoVpYDPnHm1dt54D6x9h2O2PvlcyPdmzKjEbpTkQb4vYkfN8kcHBWkE5ub8t8bNzQ10RFYePnooFABJlNBAtlbmTV2AyX9MxYNHD3Dn7m28evNKsWKfg+u3rmPmzJniyJkzJyi57cCBA0XOAFvDSN96379\/jw1bN6BAvgLw8vQSXU6c1oQcKleunL4h3MYIMAKMACNgAwgoWZK4MAKMACPACFgSAs+fPxeW\/yT8T5szLar\/UYOF\/0bawK9KLG8qbPUeFrLBGFjMmjMLterWgksOFxQqUgjO2ZzRu09vvH7zWt25vfv2InX61Ljnf09tC1\/Zf2C\/6HP37t3wt6z6WgoVpYDPqhdr5ovjPTDzDYon9mSS2\/gUvstnU\/UYiicszGVamavDXD0ADMUp6EuQ6JrYBhUAtHDyBMibKy9qVauNFo1b4pD3EezfcgDtW3ZAhvROuHXrFsaNU5IGT51qKKRm088U7wsKJ1WiSgn0HdIXtRrXwvot68V6ixTWeErMnz8fFIKICyPACDACjIDtIcAKANvbc14xI8AIWDACPj4+KF68OK5cuSKE\/pV\/q4IkKZNY8IrMi3X5Y0wKUsyLu7jlRgqdY2s9OXL0SIz+YzQKFCiA5UuXY9+ufej7c19s2rwJg4cMjtainJ2d0apFKxEHOFoDLbwzP5fms4H8bjCfvTAnTuRzIZXI8cGb5EEJjh8f05vdnNaiAAj8EiiwTaIkBuaiQSB\/XneMGzkeZw\/6on7t+qJxxowZePr0qUVAJPmkPBDGLstWL8Oz58+QKVMmkSej7+C+GDNxDIb+PlRMRSGAkijJpbkwAowAI8AI2B4CHALI9vacV8wIMAIWisDixYvRo0cPJQ5sINLmSocKv1aAfXLbcwk35fZJuYkqSDHlZGZOWwqdY+MBsPTvpZg2fRrGjx2Prp27qiv28vJSLPcyoP+v\/dG4UWNUq1pNvRdZJV\/efJg9c3ZkXazynhQq8nMZ\/9vLexD\/e2COHISmABCJduObP6m8jW8+4nv+oOBQy\/lE5pkDwFB8vnzRhDKyt1EPgG\/h9PbdW7Tp2gonfU6KLmTVvnHjRnTp0uVbQ8yi\/e3bt1i6dKngpaB7QaPzdNf\/rqBZokQJXLhwAXfu3MH0udNFW\/r06VGrVi04ODgYfV4myAgwAowAI2D+CLAHgPnvEXPICDACjABOnTqFzp07C+F\/7lp5UG10NSRNw0n+jP5ohGoAYiP0NjpPFkxwy7YtKOpVFF1+jPiDvGOHjvhj9B9wcnLSWSG58zdo1AAu2V1QtUZVeO\/wVu\/7nPFBpaqV8OjxI9FW57s62LptK37s+iOy584uwgytXL1S7U8VQ\/pQv+Url6NC5QrI4poFlatX1pm3XYd2mDRlEnUThRL4UR\/ttg8fPoi2I0ePiD7EV806NeGW0w153POgSbMmuH79eiiF6J1kSA8WPkcPN+7NCMQVAvKzKZV1cTWv9jwJE2h+1rECQIOK9ABIlNiy7d2+hCb\/ZQ8A7acd6NmvuxD+Z8iQAfLz179\/f7x8+VK3oxldzZkzR+QpmDZtmuC5a8cwwwhjsVmsSDFBavPmzXj16pXwvqSGZMmS4fLly1i+fLmxpmI6jAAjwAgwAhaGACsALGzDmF1GgBGwPQTI+qtjx47ClTdf\/fwo9mMx2CW2sz0g4mLFoWac5CJt60X+oI6NMMn3nC+KFyuu\/jjXxpSULD2790ShgoW0m9G6XWvxg3XkbyNBz367ju2EBRt1evfuHc6dP4fAz5qQCGTd1rN3T9B+LftrGSpWqChyC+zYuUOlaUifmbNnos8vfUDJBOfOnosSxUqgResWIAUGlQxOGbD2f2tVmidPnYSvry82bNygtpHg38\/PDx4eHti0ZZNYR\/78+TF92nS0b9se5\/3Oo037Nmr\/6FSkN4bck+iM5b6MACNgegTkZ1Mq60w\/o54ZEmjavoJDABESQaF\/x+0TW7anpAwBZM9hW9SH\/ubtm9h9YDeSJ08uDGRGjx4t7tF3hJ07d6r9zK1CfNJ3qnRp02HSH5NQ1LOoUVg8deYU2ndvjyLlimDtxrWoX6c+UqdKjdevXwsjizZt2mDdunUgZQkXRoARYAQYAdtFwLJNImx333jljAAjYEMI\/PPPP7h06RJSOqdEoea6wlJjwfDxxUckckhk1JBCH559EPkJiK6lFBnGwVL4NSWfJNAiwXNMFQD+9\/2FJV6unLmixWaf3n3w64BfxZiiRYuiYpWKQuifPXt2vXSyZMmCJQuXCCVD+XLl8fDhQwwcNBC1atZS+0fW583bN5g4aSKaNW0mhP80qH69+njy5AlG\/D4C39X9DjWq1cCixYtEfGHyWDh85DBcsrng0uVL4gd26tSpQUmMS5UsJX50Hzt2TIQ1mjZ5muDh++++FzF3KRcCJT6mH+bRKXIPpJAxOmO5LyPACJgeAfnZlMo6088YcYYwDwBWABA6wTIEUGLrCAHkwAoA9aFfv2WdqDdr1gxubm4YMmQI7t27h9WrVyNr1qxqP3OqkHfjf\/\/9J4T\/V32uGo21h48e4of2P4C8EKk8ePQADkkc8HPPnzFuyjjhcbBs2TKjzceEGAFGgBFgBCwXAfYAsNy9Y84ZAUbARhC4ePGiWGn2StlhZ288y\/\/gL8E4vfA0\/td2LTZ13Yh17f6HjV024MqmyzrIUkiDGzuvIzgwaqv4p5ee4PCEQ1jXYR02d9+Eta3XYPfQXXh+\/bkOzZheEK+XN+jyF1NaPC5yBKRASwqfI+8d8W5SB02Iqg8fNT9KI\/bQ30JW\/LKQdwBZ+N3zvyebIpybNm6q42FQr249kPKBLN9kiawPeQhQLGGvIl44d+6ceuTNmxe3b9\/GixcvQIoFiplLgn8qdO78Y2ckVgRLJ06eEG179+9Fjeo1RJ1yHvzv3\/+JOoUjOHrsKOjHP5VPHz+Jc3T+kUJFuSfRGct9GQFGwPQIJIDG\/D5ePQBClynfF6ZftXnPEBwcIhi09BBAMpQRhwAKe97Wb1kvLlq1aiXO9LdxwYIFwkuwfPnyYR311Pbt2wfyzqOQOOPHj9fTwzRN9P2CSpFCRYw6we27t4XwP3fu3MJYKE+ePAj4HAAKVUjl8+fPRp2PiTECjAAjwAhYLgKWY5ZpuRgz54wAI8AIxAoBsi6m8u7xu1jRCT\/42LSjeHLhCfLWy4eMBZzw5dMXPDr7COeWn8Pnt5\/h2UbzI8X\/2D34LPRB9oo5wpPQuX525SkO\/HEAGfI7wbNVYaTLkx7Prz3HzV03cGTiYdSZVjfWHgZuFdyQ2jWVzrzGvOAkwGFoSmFzTBUA5GpO1vI3btwIIxqu9vz5c1BSOu2SKVMm9ZJ4ICF7ZCGZMmfOrPanilMGTU6BW7dvifwD1BZZH1IWUBkwaIA4h\/\/H398fRYoUQbmy5XDo8CHhWXDW9yymTZmG7d7bcez4Mbi7uwsBv\/Q6ICv\/UWNGYdv2bcKTgD7D2bJmE6RjEp5DCvTknoTnka8ZAUYgnhFQ3lVU4jMHQIKEoUoIJcQIFyAkNARQ4iiSAL9\/\/14Ijp2dnc0SNqkASGzhoYyMBe7Z82dx1\/+O+LteqVKlaJNdu3Ytrl7VWOAPHjwYDRo0ACn8TVX27t2LNWvWgJLyUiGBvTGLTPpL8f7pu0iKFCkE+RnzZohzQECAMadjWowAI8AIMAIWjAB7AFjw5jHrjAAjYBsINGnSBBQv\/e6hu3jtH2bVHJvVk7D\/oc9DUE6Bgj8UhFOBjMhSLCuKdykB5yLOuL3\/tirIkELxyOZ7\/\/Q9Dvx5AGlzpUOloZWQs1oupHZJjVzVc6H8wAoI\/BAI37\/PRkbCoHvFfiyOzF5ZDOrLnWKHgBQ2x1QBQLN7FPAQ4XukAFubo48fP6JUuVJo1LSRdrOONb\/OjW9ckPBGu7x6\/UpcUogeWSLrI8PxeG\/1xiP\/RxGOwoULCzJk3X\/w8EFQ\/H9HR0fkz5dfKAXIup8sCt1c3ZA3j0aI0LV7V6xfvx4\/\/\/Qzjhw8gjs37oh8B5Kf6J7lHsg9ie547s8IMAKmRUB+NuPTA0B6ISix20y7WAuhHhyi8VokJbK+svTvpfAs5omsblmRv2B+UadcMOT5FR+F3vOLlyxGeIGtVADY2+tfR3zwGp9zrt+i8a5r3ry5+G4cXV7GjRuHmTNnCi8A+m5CXn6mKrt27ULNmjWFd8Iff\/whpgkM1OQwMtac9x\/eF6QoHBIVUmjIUqpUKfTr109e8pkRYAQYAUbAxhFgBYCNPwC8fEaAETB\/BMitt0uXLkIgf\/DPA3h9zwhKAJIPKEeQoggIX7w6FEWxzsUREhSCB6cfwG\/1edFlz\/DduHPwTvju4po8CYI+BaF079KQVoiyY\/IMyVHm5zI6gnsKC0S0dw3eiS09NwvPA+pPXgQ0z9o2a7Cl12bFG8EXFKpIlr0j9gjlBF37LDot+pIyQ5aLay9g97DdigdDDC2eQuUmUpgj6driWWIghc8xwaBtm7a4eOkips+YHmH4gkULQB4AMmxOhA4GNpzyOaXTkyzyyfNAO9ldZH2k0N57h7cICUBhAejYsGkDfun\/i0hETBNQHoC7d+9izdo1KFu6rJpzgJISb966WV0H\/bjfs3cPunXthu5duwslCGFJ+QKoSGGOuOB\/GAFGwCoQkO9Ls\/AA+BpiFZjGdhFqCKBEER3e23VoJ97v9F7ftnkbDh84jE4dOuHo8aNo0LgBHj9+HNvpoz2eksr3G9gvgsdbkJrLwLKTGUcbED0D6PvIxm2bxB0Z\/kdPt0ibUqVKhV69eoHCa1JM\/jJlykTaPzY3KfGu9GC8c0fz\/TlTxjAvx9jQDj9Wek8OHz5cPL+k2Dh+\/Dhq164dvitfMwKMACPACNgoAqwAsNGN52UzAoyAZSEwZcoUlCtXDh+ff8SOgd64svlKrBaQOFliZC6aGVe3XMXxGccUb4AHCAoIEjQdMzvCpbSLyDeQKqsjMhXWuMWTNX+a7Gn0zvvy1ks4pHYACfv1lawlsiFbKU0IFLr\/6s4rJazQaaEsSKnMlzRNUry8\/RJ7R+wF8VaqV2nkrpUHN0LDB0maNC7gtUa4n7tmHry48QIX\/vETtynPwIU1F5CtZDYkcXSQQ6J5DtUARHOUNXaXAq3YKAAa1G8ghOCj\/xyNYb8Nw8FDB8XRu09vjJ84HsWLFUeHdh1iBd+69eswYdIEkPv7rt27MH\/hfPTv21+HZmR9cubMCeJz+crlItEv5Q7Yf2A\/fh38KzI7ZxbJe4mYm5sbcuXKhbXr1orPIrWVKF4CdnZ22Ld\/H2rWqElNsLe3RxHPIqKNEgmTpwMpDebOnyvuB3yKvnJKelDIPRGE+B9GgBEwGwTkZzM+PQDCkgCzAoAejJBveACQwnbTlk2YO2suJoybgLJlyqKgR0H07tkbm9ZvEvHTG\/\/QOM5jp3\/rb21wkMYIIonyt8XWy\/sP7\/H8xTMR5sbLyytWcJBnbcaMGWNF41uD6ftI\/fr1heU\/9enZuSdcs7kio1NGdO3Y9VvDYtR+\/eZ1MY6+e8hCyoA0afR\/X5d9+MwIMAKMACNgewhENImwPQx4xYwAI8AImD0CSZMmxc6dOzFgwADMmTMH55b5auL0t\/aMMe9lfymHU\/NO4u7huyK8UMJECZEhXwbkVAT9rmVdBd2Uzo5wcnfCrd034VYhOxI56P+z8fLWC5AgPzoliWMSVBtdXfUY2PPbHiW+f2pUGFRRDQOTwimFSCr834X\/kKmgrtVUqmyp4NHUAxf+vQDX8m44MeuEyD+Qt17e6LCht68U5ui9aSONEoNvCSUMhWHUyFHix\/qBgwcwb8E8YQFPIRlat2qN4UOGqwJ2Q+mF71f\/u\/pYsXIF\/hz3J9KmTSsUDl1+7KLTLao+06ZOw6DBg\/DrkF\/R\/9f+QijQuGFjDOw\/UIcOWYvOmTdHhP6hG5QYmJQYvud81TZqHz50OEaOHol8HvmQSLE+pQTDG9dtRP2G9eFz1geUpC86RQoVHzx4gL+X\/y0sCsmqkI4QJdGlOCuWkRTyQrYTfak40J6L9pWUFnQmAYg4J0ioqSsxxEmIKL145DMg+xEdqmsX7T7Urn0tQpIoYcmlYFI924XRkHPRWElb9hP0QuOai\/sKb7JQgkNKME0KlY+fPoLCPH348AEkICKlCx0USuNTwCd8Dvgs6uSdQceXL19AeRlcXFxUfiXf2mftuuBFwYwLI6APARl+Jz49ACRf+j738p4tneXfrvAhgMZPGC\/eyc2bNY8AR5bMWTB54mS0adcG5\/3OCyUvdfL19cX0WdNx5OgR5MubDw2\/b4gO7Tuo76zjJ45j9B+jQUnl02dIj\/r16mPo4KFCIUzjSUlN7yMKHTdj1gxQbplixYph6uSpoHB1lE9mzJ9jqCtq16uNHt16gPh7+vQp7vnfE+0DhvfHhq0bMHrIaLi6uIk2W\/tH7qW5e9KtWLECW7ZsEfs\/YtAIdGnfBSMHjzT6dvn4+mDbzm3Ca7FRI91wikafjAkyAowAI8AIWDwC+iU5Fr8sXgAjwAgwAtaHAIUlmT17NipVqgRyfb6y8TIcszgiR+UcMVqsnb0dSv9URiT7peS\/\/51\/jEe+j\/Dk4hO8UKzpi7T3UoVjUU1AtII\/azwIouor7zspyYKl8I8EFi9vvkChFoV05sxaIisSJU2E51efRVAAEJ38Ddzhf9wf+0buFWQrDaukM17OFd0zC1DChLEkUI5NoR\/sJAihgwS0ZBVPglcSjGuXqlWq4vXziOGt7t68q3arXKlyhD6FCxXGkoVLcP\/BfZDwRgqR1UFKJao+\/2fvKgCiTL74T0EQwcACVBQVULHF7u7u7jr\/6tmdZ3d3nu2pd6eedcbp2YHdenYrIjYC+p83yywLrEgs7C68p8s333wzb978vs2XVAdg4fyFmD1zNp48fSKUK5n0Po\/Gjx0PeugSpY8ITWVKl8E\/e\/+Re7VJYoNkSTXGsdcvXoceGqFzlY6CFFKUo5op+gi88hYFyv+7HWVGSuEbZQY8MU4h8OLVc7mfoWOGYsS4ESLDXqhoMnEapk\/MiMxnjTJIKeCkoUzYpMigpUver1\/pnmL5mmUY8stgFMhbADs37Q5xzVRP3D1d0aNLT\/To3DPKImoNADpFgElxfP3GdXTv1v27fAt5FpLXyLBLUV6kgG\/YtKGM7Jo5baY0DJCxmGrBNGrYSJ7XqF0DlSpWwvx58\/Hw4UNMmDgB165fw2\/rf5O8qG\/v\/r2wSGiBFs1byLmTp0xGm\/Zt5GcFpaIrV64cqC4BRcXlyZNH3tc69evIz01i0rpZWxw5\/i8q1auIw7uOSm9yyTwe\/bEKKoRs6Dz6hobw5MmTkuXPXX+Wyn9D81f8XvtovlOUKFFCRiiqfj4yAowAI8AIMAL6EAj561vfCO5jBBgBRoARMCkEGjVqJL1d27dvL9PfZC6bWa+yMqJCU\/qdrBWyygelATotUvPc2HEDLmUyI2WWlBFiY+9ijzsHv184j\/L0JxRev2QoUJQkdRLVlGl9Ar8EwiZlcJ+6mET0ffT+pE5DHIlnjjoeOD7rmIhQcAFFDESPNB6+kVHKRG89051NXuJEhvS0s7W1RZYsUTNY\/Qgp5wzOPxqCH42hEHoq5msoMlR6AVWomI6UhoiMHGEeQZ77qp\/2EFphSH303CbFGB3Vg3SVFGWgzumoxqpj6D45QPwJ3a97rm0HKUPVOZ2qtjqqdb7HN\/R1ule6D4qSoogMm8TiaJMYSWyShDinfhpDkQO9+vYCKfD7dx8gsAjaq1ZGTfoU2R+Eg4rAULLSsVihmMsbrTDgo\/kgoBRx9NpSiueYll7E++hd4npQShB18a\/d21XTbI4NajdEDnePaMmrXreWiYJ\/7pIinoza4X0WUPoUiiY7f\/68XJ88+yliiJT59P5as0ZNvHz1EkuWLZEGgCHDhsgUQhvWbtC+55IRuUXrFjLlHRmEicib\/\/Tx06C0c0T0PjJ85HC88X0j+6i2DBkAGjdqDPqsXLJ0iTRWpE+fHhT9tWbjKlhbWcvvfyWqFoeTyCVPCnH5PiiOia0Tw8raGomEwcPC0gKW4jPcSoyn90W6pnlYw5reC+lcHG2FgTpx4iRIKdLFFMyvMXxI4Uz0j4peo9cY3Uf1PcWUxH3y5AnWr18vnRxqVKkRo6KdOH1C8vfwiN5rJUaFZOaMACPACDACJoNA8DcikxGJBWEEGAFGgBH4EQIUAUCFgT96f5TFdylvfmToxo7ruLb1GmrPrwNK\/aOIUvx4tvfEvUN38VJ43UfUAJBCGACoCPDbJ29BNQRCk9dyLzw4eh+15tWW+f7pegLxQ1qRlZ0md+mX919Ul\/ZIfXYO+hX7ZDS4svmy5Hn\/yH1ZNyC1e2rt3Mg2VIYRpeiL7Py4NJ4UHURfAsLek7i0T3PYCxUtJCpatChIycQUdQQePX4kJ1P0Uc9OHE0RdSR5ZggEgrJDDe40Cjldc5P1TfM8E0f5T5wGG+REj04\/jdWMSSANcVq+QQYo7blo6HZ98ffDw+cPMHh6b2TP4oHbD24Jg60\/AnQiAl6KfOknzpxAnpx5dNmYfHvCyInRllGlYyIFuSL12W5lHdynrukeKUJNKZcprU+tmrVCRJfNmDpD3kPid\/bcWRnhFnx\/gRrVayCpXVKcPHUSygBAEWpK+U9ruWZ1lUu+e\/cOysirK4PXWS+Zqog+i8kA8PbdW+3l9+\/f4ZZ4GJKaNmiGmRNmGZJljPAio4ffFz+Zzo2MuqZGv\/76qzQCkvI\/Z46cMSYePff+\/OtPyb9evXoxtg4zZgQYAUaAEYg7CLABIO7cS94JI8AIxCME9u3bJz2zKQ9+ZJX\/BFPKrKnw6fUn3D9yD5nLhvTIfv\/8vUSSeOuS+uGs26faVFCYigCfmHNc5vXXNSq8e\/pWGhRSCcU8RRvoI4tEFrBztMOLK8\/hVsVNO8T3oS8++36WtQG0nTqNi6IA8IeXH1B9Rg1ZzJjqAFSbWi1EpIHOcG5GAgFlAPgaoPGIjsTUWBv69+6\/kSZ1mnDXi8iYcBmYwEWVLim66ZhMYCtGF0FFtOgq64wuFAtg9giouhWp7dPA2SlT7O0nyNBQuXh1XL8zVa7rL4wAinbv3YW8ufLCyTEdnj1\/qrrlcd3mdVi+einu3L8L96xu6P2\/vqhSvoq85nX+DIaNHYr50xZg0KhBOHvBCxnSO6N\/j\/6oXjnYq\/nlqxcYO3UsDh75R6asIS9y3Rz1xGf4uGGYIRTLxO\/i5QtCnnyYMmYqfN\/6YuT44bh15zZqV6st0\/04OTrJ9eu3rIsm9ZvKR0RluXbzmuA3Ahcun4d9ipRQOJBHvKLPfp+lZ3b\/gf0xY9YMWQB+yKAhULnlaRzVDyFvfardQp7mlCrMUXjb65J6\/6BxFFVEBeNDk5OTE8gbXFGqVKlUUx6thbc+0ffe1+\/dvyfT2s2aMQsXL12URYlJ\/k2bNmHfgX0YP2a8LFjs56dRhlONAVXjRNWD+eIn6p74i4c6BtVAkXNEv\/8Xfzx99hTe3t64J54H5kBk0DFFAwDh37dvX1D+f6LmjZrHGJxU82b1xtV4+PghMmXKhNKlS8fYWsyYEWAEGAFGIO4gwAaAuHMveSeMACMQjxDYsEHjBZypZNQUDancUiGNKO57Yt4J+NzzgUMuR1BR3jeiTUV1SflPBYGJEokc\/EQPTzyEQ24H2Ka2lee6f2xS2KBEn5IyF\/+\/Ew\/J9EHJMyTH4zOPcOefO0iYKCEKdiyoOyVMO2f9nDi54CTS7rkpjRIU3UDyJc8YLIvupFeiTsH17deQv3V+GSFQ+Kci2N1vFy5uuCD6CugOjXBb\/agPz9gRYWZmPlAZAJTC1BS3QwUVf0QRGfMjHsa+zgYAw92BwABN2hT1WjccZ+YUnxFQzydjfXakTeWIFMns8eatT4jbsF2k\/6lZpRa8hAJflxYsm48xU35Braq10LtbHxw\/fQxturbC8rkrpIKfvM3PXTyHJu2boHCBwhg1aDTW\/LYa7bu3w8n9p5HJOZNU+Ddq0xDvhCf6wF6DZdqt+UvnhshRr\/g0bdcYjeo1RpkSZbBg6XzJ560wAFStWE2sVxMTZoyHna0dhvQdKsW8fO0yygnjApHiEZ4st\/67hWoNqsBNGDJGClm\/CA\/xQaMGyvkqBdDNmzdRvlJ5mSaM8vd369IN4yaOk\/Vjli5aKsfSn917NHUSChQoIL3+Sa63b4O972mMVLYLBTqlBiJ68yZs\/RqfNz4hU8oFRYnICRH4Q2mIKD2QvUjPo6IIaNrhw4dBNQOoCLEhaNyEcZgybUqYujyG4G1oHvT6IiMIkTKgGHqNqPLbsmUL5s+fL6dXqVAF5UuXjyqr786jovZTZ0\/FouWLpBGEBlI6UPX+892JfCcNieQAAEAASURBVIERYAQYAUaAERAIsAGAnwaMACPACJgZAuSRtmPHDil1xuIZoyQ95c4vP6I8zq06iwfHHuDGXzckH4omcMqfDoW7FAZ55ROlEcV6U7ikwEmhjHer6iYU+frzxKYVBoUSfUrgrkgfdGbpGfh\/0KSOSZ0tNUr0LgGqExAeZRbFjL+IOedXn8eZJWek0YB4Fh1UOkyUA6X+OTH3uExR5F49m2RLBgcPYUS4vOkSnIs4I3W28D3D9coS5E1pLCWOXpmM1KkMAN\/zTjSSWPFyWeXB+jXQdKMxzOXGBARqipWzwsRc7ph5yKmeTyrvvDGkdkqdThoA1PsF1SU4evIIpvwyJYQBgBTq0+dNQ8M6jTB70hwpao0qNfFceLOTUUDXw79Vk1baQrxlS5WDZ5n8+PfoIbRq2lp4IK\/Cjds3ZEFa1yyukk\/FMhVRqLwnps6dItbVRCTQ5ymN7yMiDIh8fHwwTxgKSNnfs4smDdejJ6JI7sG9WgOAHBjqT3iyTJo5Uea6375xh8x1T1MHjx4k8+zfvn0bGZ0zghTdlA+fir23addGKk1nTp+Jtu3bomf3nsiTO49U5I+dMFa2c+XMJSVwc3PD6TOnQ0izYOECzFs4D5fOXULmzJlx+OhhtG\/XXjuGCg2\/fPkSOXNGPAWM9jkkvuMRkZJ\/+Yrl0gCiCskTlkePHUW+vPm0a0W3oYpIJxKpdUydXokC1yQvRVPQvTQlUoV\/e3XrhaH9NIYsQ8vXvENzUQj6iHzulilTBo0bN0aHDh0MvQzzYwQYAUaAEYijCLABII7eWN4WI8AIxF0Ebty4gdevX4OK6CZ1CptvP6I7pzQ9nu0Lygcp3inXvm1a2zCeRFa2ViKtTnWpnKcaAeGRc9GMoAfl3n3\/\/J1IC2QjIgiCw+\/V3Mbrmqim9kg\/frPXyoFsNbLLtD42KW20Rgg1qOGqRqqJmrNraduqkbtxbtAjqpTQUuOix0rvqCLI82ICAa0x5qv+op8xsWZc5akiWlTKlri6T95X7CIQWnkbu6trVkubygHX7lzR5orfvX83PLJ5IFNGlxDikHc9ee3ny51PpMu5oL3m7uqO7bu3wfu1t7avRJGS2nZ6p\/SaIrQfNGkCKUIgf578UMp\/GmhnZ4dqwqv\/9NmQCvOihYpp+eTIponcImOBIicHJ9y9d0ed6j2GJ8vxU8dAa9y4pXFmIAbKkE\/pc8qXK48jx46gRPESyJghI\/730\/\/Qb2A\/VKtaTa61bfs2XLl6BeMnjEciq0TY8tsWrUf8zz1\/Rqs2rTDql1Ho0qkLbt2+JQsA9\/hfD1lYvG\/vvujxcw+ULF4SzZo2k2l\/unXvBo8cHihSpIjevejrpMK\/RNt3bEfpUqXRtXNXLF66GN17dMfkiZNhIwr2Tps+Df\/d+Q9TJk3RxyJKfWQQIkouoiJMnZ49fyZFpMLIpkReXl5YuXKlFKlsqbIxItqefXuk8j916tTSCahw4cIxsg4zZQQYAUaAEYi7CISvyYm7++adMQKMACNgtggoZaDy0DfERkjJT4\/w6EfXdedSgc2oGido7veK\/uquERPthEFRD8ojLibWMBeepqDQMhesYlpO8uQlIuUaU\/QQoAgqJkYgLiKQ2EpTY+fpsydye38JZX5NkeInND189EB2DfllcOhL8pzyiitKlTJk3nrKlU\/55YnuP7wPJ4ewue8dhTL\/6TNNlKLi46STQ98ioSa60Fko4hWpgrvqXN\/xe7J8\/PQR3j7e2L1vl3yEnkt5+imvP+W537Fzh3yoMbt275LNqdOnwjmDM0qVLIWBAwYiTZrgCMJaNWph0oRJGDNuDGbOninHU5Hfju07ynaLZi1k5MDIX0ai74C+MjVN8WLFZcF25bmv1gvvWKxYMeTOlRtkPOjYoSOmTpoqDRE9evVA9lzZpXMGRQWs+XWNNGSExysy13x9feXwrTu34q89fwnLCf0X\/0S0gfgv1gXIYOqZzxPurtlE31dRrFpcEKSMLLrH0G26t\/SwFrn7+3TvhzSpgrGVTCLx52lQHQtTMgBQeqhq1aqBijnXr1UfJYqUiMSOIj502eplcvCQIUPAyv+I48YjGQFGgBFgBIIRYANAMBbcYgQYAUbALBCgHz6knH3\/4j0C\/QPDeMmbxSZMVEhWepvojWGxJALq+clwRB0BZQBgLKOOIc\/Ug4AmeEyrENUzIsa7lGKeFPjk1X34+GGMHTY+zLopkmvy1m9dtw25c+YJcz2xdWIcOnpQ9of3OrFPYS8K+YbNfU9566lGgC5ZWET\/J+f3ZLFJbCMjE9o0b4tBvYONGlnyukgRRg4fCSocSznjO7TrgGFDhumKJovrkhLcxUUzPsTFoBPy\/O\/UoRMePHiAFPYpoDCkyyRX927d0a1rNzx4+EAUXHYKk59+zixNqiVd3hSV8OZVMH7E8\/DBwzLvP9UdICpapChOHz+NV69eyXPy\/jY0pU+n8aYnxb2KkNJdg3T9QuWPk14n5UP3WmTbN2\/fxJbVf0R2mna8Mm6ZkgFg6tSpMt1TYc\/CmDdtnlZWQzaoUPPBIwfl87ht27aGZM28GAFGgBFgBOIRAtH\/NhaPwOKtMgKMACNgCghQ3lMqCkpe6t8CxS+zsBl2TEFMs5QhoQWnAFI3TilblMJU9fMx9hEgBRfRly+auhqxL0HcWZGLAMede2laOwmyABhRKFXfwlcU1126aolIzeOGLC5ZwkjkltVd9u05sAdFChbVXt+wZT2OnDiCaeOma\/vCa2QT3uAr162Q6YSS2iWVQ0mJfEyk48mbK294Uw16jT6rXEXxX4oA+GXIGMlbN4rv8pXL8CwgvNfd3KX3\/\/ixwUaRe\/fuYdDQQejft3+4BgBiStGXLuEYCeT1TC5y\/ej80TUuKD4xofhXvEePHI0O7TuAaszQ\/SM8LSw1XvuWwnBDRXfnzZ8njD2aSIEEEP\/EGCJ9R90+alNKxQsXL+DS5UuicG30PsNUBECGDBmU+EY90vejpUuXShmGDxiuTRtlSKHoc\/+nPj\/Je1O3bl1ZFNqQ\/JkXI8AIMAKMQPxBgA0A8ede804ZAUYgjiBAYcb045YK9v4oJ38c2XKsbSOBKI5MxErvWIOcF4oAAtaJreUoXaVWBKbxED0IKCWpSqWmZwh3MQKRR4DcpAUp5WfkGUR\/hvrcSp4sOWYvnIWeXTUFdkNzJqNAraq1sX7zOjind0a9mvVFLYDzGDp2CDq07Ci96UPP0XfesXVHLF29FL0G\/YzxIybIfPgzF8yQufwnjJiob0qM9f3ctRc6\/9wRg0YNRNf2XWU6FrUYFfclolz9bTu0lWl6uv\/UXX6P6tO\/j\/TeVmPkwHj2h56zmTKGjNgIDQHVIIgOUfokMgAkCTJm6+P1+OljPHz0UBi6\/aShIFAUbM\/mlg0UDUHe72fOncH+Q\/vkVFOJADh69CiePn0q60oULRRsTNO3v6j2bfpzE46eOAonJydMnBi7r6uoyszzGAFGgBFgBEwTATYAmOZ9YakYAUaAEfguAkmTajztAj4HyGK7lDOfyTAIJAzCUilSIst1\/vz56N+\/v3Ya\/bBOmTIlMmbMiK5du6Jp06Yx4iGmXdCADaXI+iry\/TIZFwEbG44AMNQdUCkuEoic1kyMQFxCQL1nZ86UGecvnZdK\/u\/tb+rYaRg2dqh8DB49CGnTpEXdGvXQ+399vjclTH\/aNA7YsGwD+gztjbwlc0vjh7uILlg+byWKFS4WZnxMdtSuVhuvfSZhwvTxMiqB0v0QUeofqltAVLdOXUzzniZz+S9bvgwUTUnFdhfNX6QdIwfyH4MjQHnyiexEpMiHjx9w\/eZ1XLtxFVfl4wquXr+qLV4denF6Xqu6Auqah4eHasbosVSpUjhy5Ih2DXo+UX2IggULgnLxb9q0SV6rXb22doyhGyvWrpAsx4wZg8yZMxuaPfNjBBgBRoARiEcIsAEgHt1s3iojwAjEDQQo\/Q8plCkX7ZUtl5GrUe64sTFT2IX4oUkUVQOA2sLs2bNBhhpSNj5+\/BjHjx9Hly5dcObMGcycOVMN4yMjECEElDKLIwAiBFe4g5QBQBn7wh3MFxkBE0fA2TEjDq06I6Xce0xT0JbS+uze8ncIyZfP1SgRVSdFCcyZPBfTxk4HpVXJKAryKgMCjSlXqjye3XyhhmuPt8\/d0bapUdizCI7sPoZXr4Ny1KcMmaNeH596olAqPXSpU5vOoIeim163VTPCsrRt3g5tmrUFeZJ\/FYWKC5cvFEaxT6lu2rdrj0ePHyF1qtQyakG7EDdiBIErV6\/g1OlTkvfBI\/8gaz79SmxSrLu7u8t7Qp95pPSn70xUxDlLlizSiYIU\/+nSpUP+\/PljRFZ9THPkyIHhw4fLSx8+fMD9+\/exYcMGFClSBKlSaYpk16leR9\/UaPcdPXkUFy5dgKOjI5o3bx5tfsyAEWAEGAFGIH4jwAaA+H3\/efeMACNgpggMGjQI3bp1w6WNl5AsQ3JkLJbRTHdiWmIntNQYAChnbXSodu3a0ktM8aAfsnTP5s6dC7pWvnx5dYmPjMAPEbBOpPFmVelrfjiBB3wXAfXa5hRA34WIL0QBgdAeylFgYZQp5NEcumBvVARJHUrxHxUehphDRowM6TKACiETUQ770ERjnDM4h+7mcwMi8N9\/\/2HLH1uw5fctuHHzhpbzx08fpVGGFPl58uQJ8SAld2hSRgAXF5cQ36lCj4vJcwcHBzRr1izEEj169EDJkiVx69YtpHdKj3x58oW4bqgTFTlRqFAhNlYZClTmwwgwAoxAPEaA45\/j8c3nrTMCjID5IvDTTz9pPcmv\/nHVfDdiYpInEEX+iKIbARB6W6RwmDBhgvTiWrZsmbx8+PBh+QPS29s7xHAKOf\/9999l36lTp1C6dGnQj2kyHFAOWPI627Ztm3ZORMZoB0eh8e2rJrd1FKbyFAMhkDCoNgXfi+gDqo0A4BRA0QeTOYRBQNeLPsxF7og1BPz9NcVm1XtnrC0cjxei7zKz5sxCmfJl4FnEE+MnjpfKf\/KSJwX6gAEDcOnSJZAX\/fnz57Fq1Sr069cPlStXlt+N9EFHrydSflN0gClR2rRpkTu3Jvo2l0curWgvXr5Aj\/49kKtoLmTzzIaWnVri3oN72uvUOHH6BGo3qY3MeTKjcLnCGD1xtKh7oHm+0vXJMydj4vSJsr97\/+7UJetUyAb\/YQQYAUaAEWAEooEAGwCiAR5PZQQYAUbAmAhQShl7e3v43HmN98\/fG1OUOLO2qqcQE96c5HFMynzyGCPy9fXFuXPnZCFCXQCp79UrTToFGuPl5SWV\/\/SDc\/z48aDQePoxfe\/ePTktImN0+XPb\/BCIyeel+aHBEjMCpouAMQ0AFgktJDD+\/gGmC1AsSeYnCskSUcpEpphH4NjxY1LpP3L0SFy4eAHJkiVDmzZtsGvXLjx79gzr1q3DpEmTkCtXrjBpmWJeOsOvQN\/Rdu\/eLRk7OTrJI6Xoa9CqAQ4fP4zBfQZj4uiJePb8GSrUqoBnL57JMRevXESdZnVkisi5U+aifav2ombFSrT9qa28Tn8ePHqAtZvWYsu2LShcoLDsV5EA2kHcYAQYAUaAEWAEooAAfyuKAmg8hRFgBBgBU0CACtgVLVpU\/sDyufsadg52piCWWcuQwMIwKYC+BwJ5sd2+fTtMQbvvjVf97du3R9++feVppUqVkC1bNhw4cADUrygiY9RYPpoXAv5f\/KXAFpYaBZ95SW9a0irjnjEVtaaFCEtjSAQMHT0WGdmsElnJ4bf+u4Ede\/5CYGAAAr9+FUZmcRRp7Sgvvn+Av6xNQ\/1JRHHxhMJoYGFhIVLlWMBKFMtV42kcjQ+gueKoXjdfRTq7b2IuHcUAzVGsmkikEiJKKDy2iQrk84RnXk\/ZNsafL+o9U+yLKeYRGDBoAN68eYMKFSqA0uNUrVpVOivE\/MrGWYGMGR8\/foS1lTXef9A44Kxavwo3bt3Asb3H4JrFVQpWqWwlFChdAFNmTcG0cdMwfMxw5MqRC2uWrNHW3KAUXK27tMbhY4dRqngpOY8MB8SH1th3cJ90GHn+\/DkoHRETI8AIMAKMACMQVQTYABBV5HgeI8AIMAImgAAVQiMPK5+7PnAuynUAontLVGHQmFLiUOg7RQJEVvlYpkwZ7dYyZMggf1i\/e\/dO20eNiIwJMSGCJ8r7PILDeVgMIPDZ77PkmsgyUQxwj18slSIzfu2adxvTCET2PT0m5ElsnViyJQ9kehib7py\/hyRJkhhFDJUCSF8NAKMIFIcXXblqJS5fuSxTFO7cuRNUVyIu09OnT2U9J9ojRZioyJuzF84if578WuU\/Xbezs0P1ytVx+uxpaUQ7d\/EcBvUZFOI7YLVK1eS4k14ntQaAtKnTwi2rmzQuuGR0kWmEqBjx0aNHQUcmRoARYAQYAUYgKgiwASAqqPEcRoARYARMBIHMmTNLST75fDIRicxbjARBudZVoVBD7+b+\/fvImDHyhprUqVOHEIV+YIeWMSJjQjDhE7NBQN1rLlxrNreMBY1nCCgDwNdvX42281Ke5XDx5nlZwyahqHFBMimDs\/T0F8ZnOso+JJDRAGTs\/iZkJrnpfYauyUcCGkfzLSQftb8EYp62LfirtnqPEvEBuHzzgowaePvurdEMACqnOkU3MMUcApTLf+jwoXKBGTNmxHnlP6X5oRSMnz9\/RuXylfH3gb\/hnF5TUPr+w\/tI55QuDNhODk548vQJXrx6gU+fP0GlDNIdSGPIsKAoXToNHztbO\/y57k\/0GNBDRghQzYQdO3aoYXxkBBgBRoARYAQihQAbACIFFw9mBBgBRsC0EHjw4IEUyDqZxvPPtKQzP2mUt3tMeAmTxz79WKYQeSKlOFFFSamP8vnrW1uNpTHfo4iM+d5cff2kBCJSuZT1jeG+2EFAPScMfY9jR3rTWoVqaBDpvu5MS0KWxhwRMIVS6QVzFcGKcRuMDl+tbhXw9r0vPn76YDRZAkT6IyIuAhxzt+Du3buoUaeGLOrbvHlzNGnSJOYWMxHO69evx6FDh+Do4IjqlapLA0DOHDmldPYp7PHG900YSX18fUBe\/CmSpZDX6HteaKJ5mTJm0narqALqSJ8uPRbOWIicRXJi79690lDHhi0tVNxgBBgBRoARiAQCXAQ4EmDxUEaAEWAETA0BUigT2We2NzXRWJ5QCEyZMgU+Pj7o3LmzvKJSI3h7e2tH3rhxQ9s2diORyAdN9MXvi7FFiffrq0KWrLSO\/lMhadKkkskXf35eRx9N5qAQoHz7RCoPv+rno3EQCAgIlAsrQ7ZxpIjbqy5YtEAq\/2vXro2VK1fG7c0G7W758uWy1ed\/fbBg+QLpzV+1YlXZl80tGy5evgjd9IxkvD928hhyZMshUzdmzpQZR08cDYEV1Q14+eolPLJ7hOinE+rv0L0DchfLLa85OjpqnUfCDOYORoARYAQYAUbgBwiwAeAHAPFlRoARYARMGQE2ABj27nwL1KRviK531bZt27Bx40asW7cOU6dORb169TBt2jS0bt0aJUqUkEJ7eHjI\/LHjxo0DpQY6c+YMunfvLvsMu6uocVOKE5XaIWpceJYhEFC5vZVXqyF4xlceKj+1MVO1RBb7yo0rIUPedOg17Ge9Uym1hHO+9HLMk2eP9Y4xZCeljVm18Veo2hTEO3txdyxYOd+Qy5gVr29fNTEAlHonvpOqoWNhYbxAc2Us1fWkju\/3xdD7371nt2Q5cuRIKIcBQ69hCvyo+C59l6PHtWvXpEiTZk7Cf3f\/w5Rfpmi\/s3Vq20l65\/cc2BPPXjzD27dvMXriaNy5ewfNGjWT83p164WtO7dixZoVIkLmI27fuS3T+5CBoIhnkRDb3bV3F0pVLYVtO7fJtF7Ozs5Yu3atTNEVYiCfMAKMACPACDACEUTAeN\/MIiggD2MEGAFGgBHQj8Dr16\/x8OFDWFhbIKmjxqtV\/0jujSgCgf4aA4DyuI7ovNDjevbsqe2i3PxZsmTBnDlz0LZtW22\/g4MDKGfuwIEDQcYAKhY3ceJEzJ49WzuGG4wAI2BYBLQGAKHENicig9y+Q3tl6qLQ70+79+\/Smzospva3fc82DBk\/GA1rNYqpJcyOL+W+J0rABgCZ\/5+wsLbSpNuidmxTQIC\/XDK6xvzYltuc1vN+rYleVLWozEn2yMhKSv8WLVqEmEKe\/KOHjEZhz8Lafoc0Dti4ciN6DeqF3EVzS099d1d3rFy4EsULF5fjmjVsJtMEjZ40GgNGDJCvkWKFi2HN4jVQ0Wk08NnzZ2jdpbWcU7FiRSxbtgxkAOA0gBIS\/sMIMAKMACMQRQTYABBF4HgaI8AIMALGRoA8xolSZLKHyl1vbJnMff2vAdGLAOjWrRvoEVFq37492rRpIw059OOOlBXt2rXTTq9UqZIMsdd2BDWePXum7YrIGO3gSDTUD03lzRmJqTyUETBZBFSKFuWxbbKChhKscP7COOF1QjyOo2SRUiGu7tj3F\/J45MHFqxdD9MfUiTlFT8QUBt\/jK+riMom0J0RURNhYxAaAmEfeJZMLrly9gqtXr2ojG2N+1dhd4fDhw9oFS5YsiaNHj6Jj646YMGqCtl+3UaRgERzfdxyvvF\/J7tSpUutelgr8bh27oWv7rnj4+CEc0zrK1EC6g8ggsPH3jXIsRY726tWLFf+6AHGbEWAEGAFGIMoIcJxqlKHjiYwAI8AIGA8BKkTWrJkmpNghl4PxBIljK38Nyhscm16DtJaLi4tU\/psSnMoAYG6KUlPCkGUxPQSsrK2kUOamxHZM64QCeTyxc9\/OEKCSFy4ZBmpUqhmin052H9iFum3qIGfJHMhfPi9adWuB23dvacdNWzAVU+ZNxrgZY5GnbC55pIsPHj1Apz4dUKRqIbgXdUXVJlXwx87f5by\/D+7B5LmTZLteu7rYvH2zbNMfPz8\/DB0\/BAUq5EPx6kUxfua4EJEJL71fovfwXvCsmB+5y+RCu55tcf\/Rfe18r4teqNmiOu4+uIvmXZshR4lsqNSwAnbtD7ln7QQTamgLdcN4Sm9TgeNrkAHAmCmAAoMifNTnmKlgE5fkKF2qtNzO6tWr49K2vruXCxcuyGs\/dfzpu2PUBVL8h1b+q2t0pIiuTM6Zwij\/6dr4qePpgMWLF6N3796s\/Jdo8B9GgBFgBBgBQyDABgBDoMg8GAFGgBGIRQR+\/fVXNG\/eHJQCyCmfE3LUyRGLq8ftpb4GaDwXQ6fYiNu71r87pTgxN0Wp\/t1wLyOgQSCRpaa4tVLYmhMuNSrWwJ5\/dodQqu\/+ZxdyZssJ53TOIbayY+8OdOzdAdlds2HyyKlo0bAlLl27JBT7HbXjyAN1458b8OfOP1C6aBnYp7DHu\/fvUK1pFbwQxSd7d+mDEf1GicK2idBjcHfcuH0DrpndUKZYGcmjZcNWyJU9l5bf7CWzpPK+\/\/8GwDNvQcxfMQ9L1y6R1\/39\/dG0c2McPXUUdH3c4HEyTzat9fzlcznm3bu3OH\/5PFoI5X8aoUAb3neEVJCRzGSUYDIPBL59C4qks7QwusDqc8zogsRBAVq1bCUdFxYtWoQDBw7EwR2G3BKlaSSq1aQWzpw7E\/Kigc583viI994XSJ48OTp2DH6vNhB7ZsMIMAKMACMQzxFgA0A8fwLw9hkBRsD8EPj777+l0B71c6LssHKwstV4tJrfTkxPYpUCiA0AlMta48nKKYCM\/zxVhUXNUWltfPTijgTVKlSXyvKzl85qN0WK\/pqVa2nPVePk2RMoV6IcJg6fLKIDaqBft\/5o36IDbt25Bd+3vmqYVMKvX7wBcyfOQ7d2\/8Pp86dlLup5E+ejab1maCkMBzPHaeqSnLlwGlkyZRHFKovK+Q1qNEB2t+xaXm5Z3fHrnFVoVr855kyYi0wZMglF2Wl5fe2WNbj5302sX7Re8q1dtQ42LdssPGEtMGPhNC0PapCxYta4OWhevwUWT9MYEP498W+IMaZ6ot43TVW+2JBLvU+pQvKxsWboNZQMofv53HAIeOTwwMD+AyXDli1b6k1XaLjVYpcTRTPNnDkT06dPx5s3b+Ti\/\/77L4oWLYonT5\/I\/PyqBoIhJXv\/4b1k9\/nzZ9y4ccOQrJkXI8AIMAKMACMANgDwk4ARYAQYATND4MuXL1LipE5JzUxy0xf3a6DGc5ENAKZ\/r+KThNoaH5oAlfi0dYPvVRm0EphhqpaMGTLCQ3j7U9FfIh9fHxw7fRTVRWRAaPpl4Bisnr9Wdvu8eS3TBN29f1eef\/r8STs8Tao00qtfdZQvWR4ndp1ChnQZ8NnvM67cuCK99kmxrTtPjdc9Fi1QFIlEtICiwgWK4OGTh\/L0\/OVzyJcrH7K6uKrLsLO1Q9XyVXHmfEhv2uKFSmjHpHNMLwtlfghSjGkvmFgjKOsNWU5NTLLYF0elALJMaLxSc+p+sEEmZu9\/3959QUWAnz59Ci8vr5hdLBa5V6lSRabf6du3L1xdXbFixQq4ubnhyJEjKFeuHF6KCKlhY4cZXCLn9M6oX6u+TKf2v\/\/9z+D8mSEjwAgwAoxA\/EaADQDx+\/7z7hkBRsAMEShdWpN39e7BO2YovWmLrGoAsAEgOAKAawAY\/zmrlFjs1Rr9e+Ef4C+ZKEyjzzF2OVAaIMrtT\/T3P3uQzTU7XJxd5LnuH\/LyHzxukMzHT\/n2O\/ZqL5X5NEb3eZTOMZ3uNNlevWk1ytcvK\/P\/12xeHVv+2izn6M4LM0l0OKR1CNFtbW2NgMBA2XdfpPBxcnAKcZ1OqAjm0+dPQ\/Snsk8V4pyMCoFfNXxCXDCpE7bOqdvxLSj\/vjE\/R7+B74e6HzF5\/PDxA548eSIjBklBbu4UEBCAGTNm4NChQ9qteHt7o3379tLIQTWblizRRCXt3LMTgUHvb9rBBmhQgeHkyZJj\/\/790uBgAJbMghFgBBgBRoARkAiwAYCfCIwAI8AImBkCbdq0kSkaXlx5gRdXNLmTzWwLJisuew0G3xqlIP0KTVRE8BVuxTYCKgLgRwrY2JbLHNcL8A+QYqvnt7ntgdIAUZFcyse\/c98Omd5H3x56Du2Bbbu2olv7\/+HvTftw6d8r6NyqS5ihFiIFjy5RUd\/BYwfKND\/rFq7H1SPXRNqeDXKIen\/UHa\/bDg9T++T2IVIPqXlvfN8go0gVpEvh8dEdZ4ptc4wsMTSOqm6MUQ0AXATY0Lc1DD9KU1Onfh3prV6mTBk4OYU18IWZZMIdZMgoWLAg+vTpE0ZKZ2dnqBoAadOmldcDAjWfJWEGR7MjpX1K5MuTT3J59epVNLnxdEaAEWAEGAFGIBgBNgAEY8EtRoARYATMAoFkyZJh4MCBUtbLmy+bhcxmI2SQhsucFVCGwlphwBEAhkI06nxULm2VvibqnHjmF39NCjVlVDE3RNxFnv0smbLKwr1HTh5BzYo1w2yB9njw6D\/o0KIjOrboBA93D+mhe+3WVTk2PK\/VPaKoMK0xYehElCxSCjY2SXD91nU572uQt6t6b1CK3jAC6OkgnlSEmIoMKyKD1okzx0PUEVDXzPXIGYCC75x63wruib2WSkNkhpm+Yg+kaKxEr919+\/fh3LlzksuoUaOiwS12pvr6+mLs2LFYvXp1iCgoWp28\/CtWrIgLFy4gk3MmTBkzBaVLlEbWzFmlcM+fP8fDh5p0ZteuXZN9rllcZRFkeWLAP1t3bsXTZ5qoqPPnzxuQM7NiBBgBRoARiO8IsAEgvj8DeP+MACNglgjky6fxDvJ762eW8puq0N+CnN2VgstU5YwNuRQGrHSODbTDX0Mp0jgCIHycInJVKb\/V8zsic0xtDKUBWrJmMTJnzIwsLhoFla6MVomskNcjLw4dP4QXr17g06eP+H3HFixbu1QO++z3SXd4iHahfIVx5\/4deF30Ar32r1y\/DIomIFI1AGxtbOX5rv078eTZY9n+0Z\/2zTuA0mv0HdlbFjJ+++4txs0YK6MZmtRt+qPpJn9dvTbN+XllCJAVDobgFR0eKhIjvt+P6GAY3twJkyagZZuWckj16tVBEQCmTj\/\/\/DOGDx+O1q1bo0aNGnj3TmOM\/PjxozwnxX6ObDmwb9s+tG3RFltWb8GJ\/SfQonELUO0tlZNffSfy99ekkzPUvolfnaZ10LF7R9y8fROUQq1ChQqGYs98GAFGgBFgBBgBGK86E4PPCDACjAAjEGUExowZI+cG+n\/FyfknQF7aoR9fA0UO3CCPdhqnSHko0iXZ1tYsFD+ZqS3PQ7ZDz1XnQezVqTwG86BTxUeziFpbDQxxLjuBhJYJkcgmERIl0TwsEyeCZWJL2WdpI46ibSmua\/vEeUILQ9mzBSiCWGkQdDP4YBIIqDQtpqJcMwlQoiiEUt4oBWEU2Rh1WrWK1TFn2WyR\/ies978SbECPQZgwaxw8K+aHpYUl8ooCvOsXbUSTTo1w7tK5EIV\/1Rw6Nq7bBCfPnkSTjo2kAYByUQ\/pNRR\/7PwDVMiXiIr7UjHi3sN7oU2Tthg3ZLzsD+9P2tRpsXbBOvQb1U\/KRO+xblncsGTGMhT1LBreVDO7pv1ANTO5DSNuZKJCDLOifi6mIod+6cy718fHB7PmzJKb6N27N8aNG2cWG3J0dNTKuWvXLlBaH\/L4J8PAyZMnRSqyjPjt19+QInkK7Thq\/DLkF5BX\/sGDB3Hq1Cm4uLjI6z5vfOTREH\/ev3+PwaMH49ipY0iRIgV69eoljRKUkoiJEWAEGAFGgBEwFAIJxI9JjbbDUByZDyPACDACjECMI0BFEcmbkkmDgIWVhTQISGOBtYU0IpAhQaWvUcYRSvsR+mNPKfsTCCPCx1cf8fnNJ5BH26ZNm+I1vIUKFcLVq1fRuFFjuLu5g7zT6EEKVHrukSe1PIrinIEBmjZdo2Kd8prItU6pSKhPYaywJ4926pMPYSSigo00jh40hvrVmIQJNGPVzSD+iieNIeW44kXGK9VWR8WHFL7Up2SgNRVv6o8oKR7ER8obSnbqE12StGsFfdWic\/kQA1Q7vHWVXE+fPsW58+eQI3sOHD9yPLwpfO0HCFy6fAmlypaS3pX\/nbr7g9Hmf5kiAGwS2yCpXdJIbYaiBnzevkE6h7BFghUjKjRsm8QWkc317v3aW7JIlTJksV\/F1xyP7kVd8VFgNm\/4cuRyy2OOWzCIzPSZUKG9xqBTMH8h8T6neU8PzVy9t+n2S6OcfO9PII1WZLhKKIqu0vOLiq\/SeaJE1BZOAEF9CcV4KjStPgvIGcBCfGbcunMbh4\/\/CwcHBzRv2lyOT2QpHAfkfAtYWVnJB3lZU8SMlbWVXIO+W9FnCvEjovPEiRPLB72OrBKLsZZWsLW1RZIkSSL93Nfdr7m2KfVPwyYNUbJkSRw+fNjkt3H9+nWMGDECpUuXxpUrV7Bw4UKtzP3798eUKVNkfv+9f+4FpfXRR\/2H98fKtSuRMmVKHD9+HNmyZZO1uO5cuKNveIT76D1j5ZqVmL1oNuh9kZ6XK1euRLNmzSLMgwcyAowAI8AIMAIRRYAjACKKFI9jBBgBRsCEEEiXLh0ePHiAzEVcYJ0ssfjhKn46k1JVKL1V20K0hYZTSp3IOpFW+UmKTyL6sS3bInqASKOjFD2kv6QuUlbS2KDrwWOopSF9elOaG6z4FONkh2a8pj9oPbmOph3ETh4C\/QPx+d1nfHn\/BX6fviDgk1A8+wmF8xehWBbX6PE1UCgVgqIeaJK8Jq4bKiWSPuWErozxoa0w+G3Tb\/Fhu2axR\/W6MgthTVRIaaARskllo4nKaEixyPM+KkS5\/+kRHlF0QFQoLin+Q+9fvW+G7o8v52RkTygU6F+FofbMudNG3zblbp8xa0asyEH3XvdBBmYySDSo3wDzZs+LFRliY5H1G9fLZUqUKBEby0VoDfpspPz+8+fPl8YZ8qJPkyaNTKHz+PFj6dCxe\/duaQgggw4VMCYi5T9R1YpVv6v8p+sjB47EuYvncOHSBfz999\/SYEAphJ69eAbHtMGRBTQ2IkTyLli2AHMXz8XLVy\/llOLFi2Px4sXImTNnRFjwGEaAEWAEGAFGINIIsAEg0pDxBEaAEWAEjI+Am5ubNADkqpkLWYpmNr5ARpbg89vP+PD6Az74fIL\/Rz9hMBAe6Z\/9hVFEGEDEg4wi9EOcnLODbCJaiaV9Q1g9KE3S7cO3ce\/Ufe21+Nwgj0uiLJmzIE3aNNITkrwu5UN4YFpYWoA8Kmmc8qwkjMlLk8ZIz0lrYZwS40ITefFD3AtK00A\/hElpIj03gzwvSUmrxtBRRXIQH+It76WYS4Yg8jglHuoheZJxSPSpudTWXYv4kHJG9zr1RYSIFxF5iJIcSsmjIhEID6UEDH2UEQfiCSj3K9bHjzJXCYyIbgtv1q1bt8o9aXr4b1QRUPcvqvN5HiOgDwH1Wo\/vzy96Hxz381TcfnBDvM9p3h+FtS0shbX9S4cD+V4t3v\/JgEDvz4H0WRAYIKOtNJ8LwhlA9lEkmPhsEJwtxHsxXaO58j1d5\/1ew0fDTzNfw0\/yFpEDwUfxOSI+N75+I75Bzg+CN80JEOtrot5obTUnAP4B\/iHek2n9MPdfpInfsXNHnDEAbPtrG7b8vkV+vquc+GFvbuz20D1q2rSp3qhNUvpTNCMRKezJ458oV45cyJcnH7zOe8E5gzPGDhsr+7\/3x87ODj91+Alde3XFwIEDQXUD7FPYwz65\/femhNvfa1AvrNu0To4h+UaNGiUjT8OdxBcZAUaAEWAEGIFoIsAGgGgCyNMZAUaAETAGAnny5MH+\/fvhfdebDQDiBiQWURD0SOUSvbvh+8RXGgDC\/IiPHluznK1SIAwePBhNGjcxyz3EFaHJ45AMAJzX2gB3NEjxqBS2BuDILBgBrdGPUt7EdyqevxToER+IlM9kCAgIFA9hjFbGAn9xfubyScz4dWKcSBNE34mOHT+GmbNmyttKef8ph74xibCnXP5z584FKfqTJk2KBdMWIKNzRlSuWxmf\/TRe\/qdPayJRWjZpicTCKYHS+PTo0kO2IyN\/lfJVpOGflP9ENarUkKnkIsODxm7+c7NU\/lMKqbVr16Ju3bqRZcHjGQFGgBFgBBiBKCHABoAowcaTGAFGgBEwLgLZs2eXApDCmsmACATlNGIDgMbDnZAlpQaTkREI8qDl52X07wN58BKxASD6WDKHsAgIPSlTPEKADOXWVtagf6Hpvwc3ZRdFyJkzPX7yGJ27dsbRY0flNmjP7dq1M+qWvL29UaVKFXh5eUk56B6smLcCZUqWwcHDB6XyP1OmTChTpgxWrVqFEkVLYNq4adraDlERnqIACuQtIFJbnZHT1TGyvJatXianzJgxg5X\/kQWPxzMCjAAjwAhEC4EfBZ9HizlPZgQYAUaAEYgZBP7991\/J2CqJVcwsEE+56qtpEE+h0P5QpoK+TMZFgNIeEZHHI1P0EKBC1kRsAIgejjxbPwL8GaIfl\/jY6\/fFT26bCruaK5HXf5nyZaTynwoq16lTRxapTZ06tVG3RAYIUv6nc0qHEQNHwOuwl1T+k1D7Du6TslGh3i9fvsh26eKltd9pZEcU\/4wfMV478\/rN67h245r2PCINMqaQ4cDGxgYtWrSIyBQewwgwAowAI8AIGAwBjgAwGJTMiBFgBBiB2EHg7NmzMmzY0toSuWvljp1FeZV4h4CqAaAUpvEOABPasFJWcwRA9G+Kej6r53f0OTIHRiC48D3lvWdiBAiBL\/4a5XMiK\/OMAJg5eyZG\/TJK3szKlSvL753GVvyTMNu3b5cP8sjfvWU3nBydpIzqz7GTx2STUucpKpi\/oGpG65g\/b35ZP+DytctwTu8s0w1FhuGRE0fk8EqVKslixZGZy2MZAUaAEWAEGIHoIsDfUqOLIM9nBBgBRiCWEbh69apcMVPBjLDPkCKWV4\/jy3GqFe0NVgpSTgGkhcRoDRUBoFsM2WjCmPnCfn4ar1wqVs3ECBgKAWWcU7VTDMWX+ZgvAn5fNDnoKT2NORIV+yXq1asXdu7cCVNQ\/j9\/\/hyq+PDAXgPDKP9J3lGDR2nz+1P0xZola1C6RGm6ZBBavXg1Fs5ciB2bdsA2iW2keFLRYaLixYtHah4PZgQYAUaAEWAEDIEA\/\/oxBIrMgxFgBBiBWERg5cqVcrXkTsljcdX4sZRK36CUOfFj1\/p3yQYA\/bgYo5cjAAyHukpppTA1HGfmFJ8RUJ8ZpvC8evn6hVCA2iCpbdL4fEuMvncVAWBtbX4GgCtXr+DS5UsyVc2oUaOgvg8YE9R3796hWrVqePjwITzzeaJTm056xSFl\/9I5S3Hh8gU0qNMAWTNn1Tsuqp0Z0mcAPSJL5Exx2ktTkLhw4cKRnc7jGQFGgBFgBBiBaCPABoBoQ8gMGAFGgBGIPQT+\/PNP7N+\/H4mTJUbBZp6xt3A8WUkpb5QyJ55sW+82lSerUpjqHcSdsYKA8lbnGgDRh1s9n9XzO\/ocmQMjEIxAQiOlAPIP8MfctdOw7\/huvP\/4XgqUxj4tGlRuimY1WmsFnLR0DP57eBOLR6\/W9nEjZhBQNQASJ04cMwvEINeNv22U3CnXfvLkpuFs0q9fP5w7dw5ZXLJg7dK14RolqlSsAnqYCu39Zy\/6DOmDZ8+fgVIXsQHAVO4My8EIMAKMQPxCgA0A8et+824ZAUbAzBFQOU09GxWATTIbM9+N6YmfIKEmMx4rWqEtmBf4lYsAG\/uZmiChJjcVG6aifycCAgMkEzYARB9L5hCMgHptKiNy8JXYaf0yfwjOXj2NhlWaI392T3z4\/AEnLhzFwo2z4fvuDbo27Rk7gvAqWgT8\/DXpxszNAEDffzZv2Sz30bJlS+1+jNl4+fIlfv31V1m8nVLwpEqZypjiRGrtCdMmYPq86XKOh4cHZs6cyfn\/I4UgD2YEGAFGgBEwFAJsADAUksyHEWAEGIFYQODJkydylRSc+z9G0E5oqVG0sgEA8oc2gcx552PkqRYpphwBECm4wh2sXtvGUtSGKxxfNFsEvuGblN0YhqWPnz7g6LnDaFu3I1rX6ajFsET+0nj+6il2Ht6Gzo27a4262gHciFEEvgTVALCxMS9njeUrluPJ0ydwc3NDsWLFYhSjiDJfsGABqH5LlQpV4O7qHtFpRh+3bec2qfyn94Xx48djwIAB2u9WRheOBWAEGAFGgBGIdwiwASDe3XLeMCPACJgzApT7lMg2ZRJz3obJyh7gp\/F2T5QokcnKGFuCKQXp129fY2tJXuc7CCilovIy\/s4w7o4IAho9LSthIoIVj4k4AtrnlSaKLOIToz+SjA\/fhNf2x08fwzDr0aKvSPlzC5QiSLcY7d5ju7B2+0q8evMSud3yom+7IUhtn0bOp7HLf1+EE+eP4PGLR0gj+ovmLYFOjbrL4qoj5gyEa0Z3YWzoIMdTsdue4zqjRIEy2r5Pfp\/Qa3wX\/NT0Z+TL4YmnLx9j\/vqZuHH3Gt6+90UGx0xoUq0lKhWvKnn8+udSfBEe8y7ps2LDzlV49uoJPLLmlnI5pnbS7uvijfNYsnkebt+\/Cftk9ihdsDw6NPwJiSxN7zNbpQBKYmM+39fIQDpi9AiJNymrTYEOHDiAiRMnSlG6tu9qCiJFSAbK+b9s9TI5tkWLFhg4cGCE5vEgRoARYAQYAUYgphCI\/W+pMbUT5ssIMAKMQBxHgLz\/z58\/j4QWCZEqs\/mEP5vTbQnw06QHsbKyMiexY0RWrQEgkA0AMQJwJJiqAoxsjIkEaN8ZykaU7wDD3dFCQEUAqELy0WIWycm2NnYolr8UNu5ag3GLRohogH9BCngiZ6dMKFu4Ygjl\/52Ht7Fk0zxUL1MbDSo1waVbFzBiTrCyl3jsOPgnKgrl\/JDOo5AnW35s\/nsD1u\/4VfK0T5ZS1hqQJ+LPpZsXcP3uVfxzaq\/qwvlrXrh1\/wayCkPBh0\/v0XF4S3i\/8Uabup3QrXlvobC3xNiFw3D30X9yzjMRqbDr8HYs+m2OMCSUlpEMV25fwkhhbFB08951\/Dy+M2xtbDFYyFWvYmNsPbAFw2b1V0NM6qhSACWxNR8DwN27d\/Hx40c4OzujY8fgaBJjAbtnzx5Ur14dnz59QssmLVGyWEljiRLpdRevWIxjJ48hTZo0GDp0aKTn8wRGgBFgBBgBRsDQCHAEgKERZX6MACPACMQAAv7+\/mjbti3IO8uttCusbFhBHQMwI4EFpwBSuGoNABwBoCAx2pEjAAwHvTIAqOe34Tgzp\/iMQAKoOh3GQWFkt\/GYsnwsyLP\/76M7QWnDcrvnQ+3yDVC+SKUQQpGH\/+R+s4W3fRbZ\/0Wcb9y5GuSxTDUy7j26g3b1uwgFeyN5nQwI5Ll\/+dZFeU7RAH\/u34TXvt5ImTwVzl\/3Annpk2Hh3Ye3SGqbDKcuHUcu97yinVTWIrBLYocR3cbJccQkf46CaDmgvuSZOUNWydfH9zVWTdoMZ8eM8vybiKpYsGGm4PlO8pm7bro0KEzoPUMbweOUJh2Gzuon6x8U8Cgk55nKHxUBYJvE1lRE+qEcW7dvlWMKFTINLMkIQal\/2rZoi8m\/TP6h\/KYy4OWrlxgzZYwUZ9GiRciWLZupiMZyMAKMACPACMRjBDgCIB7ffN46I8AImA8C\/fr1w969e5EkhQ1KdjEfDyjzQVhJqpQ4QfkcVHc8PGqVzl8ZC2PffgtLCymCyl9vbHnMeX2l+FeGAHPeC8tuggiQ1toIROl9hnUdgy2zdmFAh+Eo5VlWKu1HzxuMOWunQff5njJ5aq3yn0TNIwwFVOz9pc9zmeJn5YSNUvlPcyh1z79n\/pHzVVRBAY+CsEpkjXPXzsidnr16RoxvIo0OFA1ARAaAYnk131XIYLBx+nap\/Cel+O0HN3FOFCym1+LnoDz5NCdNyrRa5T+dOztpDAFU44BkuX7nqkwZpF7DNKak2GeSxLYyCoHOTYm0BgBb8zAAkKPJ4qWLJYRduxo\/1Y6vry8ePXoESsk4afQkrdHHlO7x92Q5eeakNKhVrlwZ9erV+94w7mcEGAFGgBFgBGIVAY4AiFW4eTFGgBFgBCKPwPXr1zFnzhyZ+qf22FpIljZp5JnwjAgioFHe6CoYIjgxzg1TCqMECTVGkTi3QTPaUMIEGn8NdU\/MSHSTE5Vf2yZ3S+KGQEFvkyoVkLE2lSpFatQoU0c+SGE\/Y+VEbN6zHlVK1IC7S3YpVmr71CHEU7UBAgI1NXCu3bmCpZsX4PLN81JBn0F45Pv5fYZNYk0xW2urxMKD31N63RcXhYYp\/U+\/9kNw9OxBXLhxFlmcXfHo2QMUy1dKu842kapny96NePDknixGnD1LTo1RQsdgkjxpCu14alhZaiIdv34LlNEGVGsgjX3aEGPoJE3KNHj5+nmYfmN3kLxEdnZ2xhYlQuvvP7Afz549Q+7cuVGpUsiokQgxMOCgt2\/fonHjxpKjZz5PsytgnSK55rn84sULA6LCrBgBRoARYAQYgeghwBEA0cOPZzMCjAAjEOMILF26VP5QzlElBxyyOcT4erwAI0AIKGWzUj4zKsZDgCMADIi9UtTqKB4NyJ1ZMQKxjsAmoeBv+HN16XGsu7iNtQ16tOwnuy4JZb6i8Ixg3m9eod\/k\/+HT5w8Y0HE4fp+9G2sn\/w63TCFTmJBXP3n+XxYe\/3aiBkFmUbw3n0jrc+H6Oen975QmvYgyyCyX3HNkB6atnIC82Qpg6oC52LHwIKYPnCev6RpMwpOL0goRUYqh0PT2\/Vs4pU0futvo51TUmChpUvNw2ti4aaOU19ge6xSJUKdOHfz9999IlTIVZkyYIeUypz+ZM2me+8+fm55hypxwZFkZAUaAEWAEDIsAGwAMiydzYwQYAUbA4Aj88ccfkmeuqh4G580MQyJgmUiTaoV+gMZ3UgaA8JQy8R2j+LD\/Bw8f4MOHD\/Fhq7xHRiDKCKgaAMZI05U9cw6RvucF9p3YHUZ+SuFDpPLshxkQquPC9bN4\/\/G9TCNUoWgVUEQB7enu4zsiTVBwQXgyADx58UjWHMibPb9Mz0J5\/W\/euyZSBh0Q3v\/BqQqPiMgAqjfQp+0geOYsLNMMUb0AoojiZZXICunTZsA5UW9Al+4JuXzevkZWZzfdbpNof\/H\/IuWwszX9CIDBQwfjjz\/\/gLW1NTp16mRU\/Hr06IGDBw\/CIa0D9vyxB65ZXI0qT1QW\/33773Jazpw5ozKd5zACjAAjwAgwAjGCABsAYgRWZsoIMAKMgGEQ+Pz5M+7evSvT\/6R1Dxv6bphVmItCIFFQcWXCPb6TUsxYWGiMIvEdD2Pu\/2ugRvEWW8aYI0ePoGXrlsjingV58udB+kzpUblaZZzx0uT8VlikcUqDRUsWqdMoHf85+A9SpE6Be\/fuRWk+T2IE4jsCHq65kTd7AUxcMhpz107HsXOHceX2JVDanQFTe0rlOxUEjggRL3qf+efkXlAOe4oImLJ8nKwFQGmAFKUTynhnx0zYd3w38mX3lN05xVyqHXP60glt\/n+6kMstLx6KlEAkE32u3Lp\/A2MXjZBzPuvwlB3h\/GlZuz0OntonChBvBs17+PQ+Jog9Z8ngKgoe5w1npnEuqagFMqKaMl24eAELFi2QIg4fPhwZMmQwmribN28GFc2ltFSrF61GJudMRpMlqgu\/8n6F6fOmy+n9+\/ePKhuexwgwAowAI8AIGBwBrgFgcEiZISPACDAChkPgwYMHMhUL5f1PaME2W8Mhq59TIptE8gIbAIJTAMWVGgD0WkqVKhVszaQgo+4zlAp0EqnCzLrXDN0+fuI4GjVthGJFi2Hk8JEoVLAQTp06heUrl6Nlm5Y4cfQEVH5jQ68dK\/yCarTGljElVvbEixgdAfV8UpFTsSmQRUILTB8wH\/PXz5QK8k171snlbUVqniJ5isv8\/IksNZ9tP5LLMbUT2tXrgm3\/bMGa7Svk8Jpl66Fbs15Y\/NtcmYJHKbYpCoDWotQ\/RKS0JQPCDVGsN5+oEaCoeunauHjjPHpN6Cq+z3wFze\/SuAf2CuMB1RuIKFUrVUuuv3DjbMz4daIoRGyFPCKt0NDe00F7NTUiLIlu3rxpaqJp5fE664VmLZvJc\/ps7NdPkzJKOyAWGx8\/ftSuP2bYGOTPmz8WVzfcUpNmTsL79+9Ro0YNUBFgJkaAEWAEGAFGwFQQYAOAqdwJloMRYAQYAT0I0I8IIv9P\/vB77wdrO2s9o7jLUAgkDEoBFBAQYCiWZstHKbISInKGJ583PsjkEr7X3oH9B1DQU6M0ikmAjhw5gvkL5+PYsWN4\/fq1XKpI4SIYP368VGyrtVOlSYVxY8eha5euqivcY4+fe+D8+fM4fOhwuOMMdfHbV43WWikZDcU3NJ\/7D+6jcdPGKJC\/ADZv3Kw1OHjk8ED58uVRpHgRDBs+DHNnzw091WzOlSFVRbiYjeAsqFkgoN43Y1tYS0tL9GzVTz7efXgnFOW+oDz8od8zBoq8\/qGpgEchHFoVHN3Tpm5HtK7TAc9ePRFFdx1AvImaVGsZYmr3Fn1AD12aPWSx7qlsk8J\/XK+p0mv\/rZArbUpNLaOqpWpqx+qTq1DuoiHkor2QDI2qNMdz76ciPVEaaQTQMjGxhkMqjQHg3v17JiaZRhxS\/tetXxfv3r9DhQoVNJ73IgWQsWjcuHG4f\/8+8uTMgzbN2xhLjGit+9\/d\/7Bq\/SpQ5OTUqVOjxYsnMwKMACPACDAChkaADQCGRpT5MQKMACNgQARy5MiB7Nmz4\/r169g\/8x9UHlARllax99b9wfsDljZdHmJH5BFOhoh0udKhUDNPOGZ3lNf3zTiAFzdfoPmCpiHGm9OJUnUbS4ljSlgpDKIaAdC4UWNUqVJF75YyZ9YUyNN70UCdx48fR4NGDVC8WHGMHjkahQoVwslTJ7Fs+TK0aNkCp06cQooUKaK0WtEiRZHOKV2U5kZlklJWh1aTs1zVAABAAElEQVTmRYVXeHP+PfyvVAYtmLdAq\/xX4zM6Z8SShUvwVXjwfo9I0TV8xHCcv3Aer31ewzWrK7p3645GDRvJKRMmTZApQL58+YI169agZfOWKFumbAh25AXauWtnqbhctGARkiRJEuJ6dE8Uhur5HV1+PJ8R0EVAt6itbn9stpPaJhVe9tErPEuvEzIgGJISWyeW+f+jy5MioQwtW3Rl0jc\/TUpN2sZXr17pu2zUvstXLqN+w\/ry\/b5p06ZYs2aNVFobS6gbN25gypQpcvnJYyaH+fwxllyRXXfP\/j3yM65Vq1byu3tk5\/N4RoARYAQYAUYgJhGIPS1STO6CeTMCjAAjEEcRsLGxwdKlS6V31q1Dt+Dz0AcV+pSHYzaNB11sbTtH5RzI5Oksl\/sa+A0f33zE2U3n8MegrVLhn9wpOdLldIJdKtvYEilm1hHGDSJWDgYXZ4xqDYC8efNqFb8xc7O+z5W8CBs2bogCBQpgy+YtWmWCh4cHKpSvgEJFCmHosKGYN3fe95mEc6VF8xbhXDX8pdgyAJw7fw4ODg4gZb8+qlkj2GM39PW3796ibPmycHd3x4D+AxAYECiV\/J26dkKuXLmQI3sOUBqmg4cOSuV+ubLlYG9vH4INRd60ad8Gly5fwq7tuwyu\/KfFEibQmPn4NR4Cej6JJgLKsCQ+PKLJiafHFQTsk6WUW3n79q1JbYlSHFKNF9+3vmjQoAFWr15tVOU\/gUOFf\/39\/dGqSSt45gtOH2VSwEVAmIePHspRBQvGfIRjBMThIYwAI8AIMAKMQAgElLNjiE4+YQQYAUaAETAdBEqUKIGTJ09KxdqrO6+wsftv2DZsO54Lb\/vYIodsaZGtfDb5yFEpOzwbFUCd8bXx5cMX3D78nxTDQxgJirYuElsixcg6CYRnIRErB4MxUArTGAFcMP3rr79QqUolZHTJCFd3VzRo2CBEzuQKFStgy+9bQiw\/avQo9OzVM0Sf7smhfw\/h3bt3IA\/y0HnzM2bMiGVLlqFKZf3RCcSHCtK2aNUCOXPnhFN6J5QqUwq\/bfpNu8SUqVPQqXMn7TnJv2PnDpCsefPlxd97\/5bXrl69ijp168i95cufDyQ3KTkiS+F53UeWV3jjyQBAXvtRIXqPSpYsGZYuXopWLVqhbZu2WDRfUyCYIi8UPX32FH9u+RNLFy1Fr569VLf0mvyp+084e+4stv6+FTEVJaIUtabgqa3dPDfiDAKs\/o8ztzLaG7FPpjFwfvj4Idq8DMlgybIloGitPHnyYO3atdoUT4ZcIzK8du7cib1798LOzg7DBgyLzFSTG\/vg0QMpk6OjJjLW5ARkgRgBRoARYATiNQIcARCvbz9vnhFgBMwFAfKmPnPmjMxdPmfOHNw9eU8+Cjb1RIkOxY2yjZQZU8rCxG+e+Mr1T609LSMUqgwKLnp2ZfdVXPjzAt489kXKjPYo3LIwshQLTv\/yW6\/NKNi4AE5vOINPbz6hbPcycCnsguc3nsNr01k8uvBYzEsJ97JuyF0jF1Q6mld3vXF44WFpBEmcLDHcSruiaJsisLC0iBYWQQEAbAAQKCojiFKYRgvY70zeunUrWrVphXZt28lUMZSWYPmK5VL5fvrkaTmL0sm8fPkyBAfy8H\/+4nmIPt2Tc+eCPNmFsl8f1awZjie78NYsXbY0srlnw8ABAxEYKDzZRXqEjp06Ineu3KC0XA8ePsD1G9e1rC9evIg+ffuAjAtubm5wdHCURoyy5csiW7ZsGDtmLCjtzZgxY\/Dw4UMsW7pMO9eUGjaJbfDx08coiVSpYiVcPHdRziUP01u3b8n3LHr+fPr0Scszbdq00pip7QhqDB81XBpR1vy6RmIf+rqhzpVBiB21DYUo89FFQL1v6vZxO34iYJ88ldz4F78vJgXA4iWLpTyTJk2CtRFz\/pMQpPhXn8c1KtdASntN1IRJARYJYc6cOyNHU8pBJkaAEWAEGAFGwNQQYAOAqd0RlocRYAQYge8gkDRpUkyYMAF9+vSRuVJnzJiBMxu88PTqM+SrlxeuJbN+Z2bMdN87eRdfA78iRbrkcoG3L97B+76m0Cp1kAL\/6NJjcC3lisItCuHRxSfYPuIv1BhZXSvry9svcWD2QSRzTAZ7Z3vYprTF22dvsXXoNqR1d0CFXuXw4tZLHJr3L6xsrZBdRCG8fvAaG7pvlIaBUl1KItA\/EMdWHMc7sX7Vwd\/36o4QCpoMQFrld4TmxNFBKu1MVFMAjRg5AqN\/GR0GHU9PT+zZtUf2Hz12FKQ4njVzljyvU6eOVEj8MuYXvHnzJso5+skA4OoaNU\/2EydPSE92UtKTQp+oVKlSKOBZQEbikAFAH6VOnVruSymYybBBCvW9e\/YiceLEckrqVKnRum1r\/NzzZ+l9qY+PMfty5cyF9RvWf1cEiqpIlCiRdj+hB65YuQKLlizCzVs3ZUoJKiZMClFdpWj69PrzilNqIKqrsHjpYoSXaij0mpE91xq02AIQWeh4fDgIqOeV7nM9nOF8KR4goCIAAr8GmsxuKZKN0tRQtFalSpWMKpefnx+aN28uPx9+6vATRgwcYVR5orv47Tu3Ze0bJyenGItgi66MPJ8RYAQYAUYgfiPABoD4ff9594wAI2CGCKRJkwaTJ0+WdQEaNWqExxcfy4djDgdRJLgy7DNErbBpeFBQcd+bB2\/KIYH+X+H71BeXtl+SSnmPKmEVon4f\/EARAdkrZBMyaX5kkiHg4+sPwihwVGsAIIY2KWzQaHoDrXf\/7gl7RJHhxKgztpbsy1oiq6g58AkXt16UBoDjK0\/A0toSjWc11BZEtklug51jdsnURGlc04S3lXCvJbDQpABSyu9wB8fxi0qRpaIuIrtdyrVfvHjY6BTd0PjJkyZr2Xq\/9sb1a9fx33+alFLkNR7VIr2JbRLj08dgr3PtIhFoVK5UGZcvXpYjpSf7rVs4fea0zFsfnnc8FRtWyn+afOTIERQvURzXrl\/TrkqvXVIUUkocSr9gakS5+t+9f4fbt2\/rNaAMGjIIW\/7YggteF2StAF35N2zcgN79eqN9u\/aYOH4iChcqLPfq5OwUwgBgkVB\/lM6yxcskfo2bNdYWCNblb6i2ukfq+W0ovsyHEdAgwEmA+JmgQcDaKjFsrG3wye8THj95jPTp9Bs\/YwsvqrEyYNAAudy0adOMnvefPuupQHLGDBkxesho+XkRW1jExDrHTx2XbPV974mJ9ZgnI8AIMAKMACMQWQTYABBZxHg8I8AIMAImgkCVKlVw584drF+\/HuPGjcOza8+xqfdm1JtYB2myRl0Jrm97V\/dcAz0UWSa2hGN2R5TpVgqkfA9NL2+\/kvUBHESxYt1aBSkzpcStf2\/jk+8n7bz0udJplf\/Eh6ICXEtlDdFX\/uey2h+HZPBInzs9vO8FRxskEUYECO\/9J1efIloGAKGcJWLlYDAGyrNVAhOJP2XKlEGP7j3CnUFe\/hQl8NeOv\/D8+XPYp7BHBucMck507gGl6lm3ft131\/6RJzulIVq4aKFM40MREFRMmOQJTyZdz\/aPHz\/C29sbO3bskI\/QglAKIVOkqpWrglL0dP1fV+z6a5f09ldykrJm\/cb1UrFPhYJDE9VAyJ4tO6ZPma695HXWS7YpjdKPiOa6uLigds3aGDZiGKpUqgIymBia1POZawAYGtn4zo8\/O+L7M0Df\/ikN0KcXj3Dzxk2jGwAePXqEN75vkCFDBnTs2FGfuLHaZ2trK9ejGgnqfTlWBTDwYus3a6LnqlatamDOzI4RYAQYAUaAETAMAmwAMAyOzIURYAQYAaMgQGlHevTogXbt2qFhw4bYs2cPtvT9QxbodfIwXBGyYm2LIoco8ktkkcgCUuEezo7fPn8rrx6ce0jvKErzowwHSdPaacd8+\/oNPo\/eiFRASbR91FA\/Dv0\/+wvjwWfcOXZHPkIMEifvnr8L3RWp8yD9f7iK3kgxNOPBKgoiqimAIrL1zl06g1LuDBo4CKVLlUbOnDlBnuRdunYJMZ3y5+uSj49PuPeIDACk5Kc89G6ubrpTZXvgoIHYvGUzLl24FMaTnVLg9OrdCx3ad8DkiZNRuLDGk93BySHcNS0tg79S2djYyFRGHTt0xPBhw8OsT2l0okLqdRCVuRGZQ8r\/FUtXoHa92mjaoimaNm4qaxjs2r1LGlQoldGUSVP0sipSpAh27dkloyU8C3iC6jl0\/qmzHKtbA0DvZJ3OiRNE9ECxwhg0dBAoKsDQpCIAwI7ahoY2XvML\/uyI1zDw5kMhQGmAnggDwJ17d1BO\/DMmUeFfoqxZYzddpFxUz59MmTJJg\/OLFy9w78E9uGR00TPKPLpOnjmJ02dPy6hFSmvExAgwAowAI8AImCICwb9WTVE6lokRYAQYAUYgQgjY2dlh27ZtMp\/qli1b8MfAP1BjVA1k8tRfBDVCTHUGWSe1RtI0wYp6nUt6m4ntrGV\/wxkNkFZPSh5Lq+CPH5V2hyZQuplENong9yGkwjfgS4DI9f8VVkkSSQNEnlq5Uaxd0TBrJ7TUpPAJcyGiHQk188Pz9I4oK3MfpzDQKkwNvCFS6u\/dtxcD+g9At5+6ablfuXJFtildAZGdrR1I4a+IDBOk2Ff5+VW\/7pE88KQne9eu2L1rdwhP9tv\/3ZbKbFLs6\/Nkp2iE7NmzY8b0GVqWZ7w0hf0i4slOk0hR7+7uLiMbJoyfoOVz995dDBo0CP3790dBz4LaflNqlCheAsuXLsfG3zai\/8D+0mOU5CtSuIjsJ+OKPmrZvCWOnziOWnVrge4RpW8aNWIUNm3eBBUJoG9e6D6qAzBk0BAMGTZEGiCoRoQhSRlR1PPbkLyZFyPACDACuggkt9OkZHzy5Ilut1HaKvKMFO+mQrlz58b+\/ftBxglzNgAsXrlYQvrzzz8jSZKQDiymgjXLwQgwAowAI8AIBGtgGAtGgBFgBBgBs0bAysoKGzdulKHdK1eulIV0y\/Uoi9w1csX6vuwzppRr3jl2F5TiR9HVPVfx8PwjVOhdQeTv158LPGVGe5HO6JmaIo\/nfj+Pc1vOo\/2atrAX1\/8TEQClfyqlHUM1CQ7N\/1cWG6bURFGlIP2\/VGBGlUdcmacUpEphGtl9XbhwAVRwUB+REpmK6VKR2AMHDsi88VTkevtf2zF\/wXw5hfLvE+XJmwe\/rvoV1atXR9o0aTFj5gw8e\/YsXAMAKf9\/XfEratauiSZNm6Bp06YyPc3OXTuxdt1aWcR22pRpkn\/oP0WLFMWuXbtw6vQpqaS\/fFl4sneOvCd7v7790KZtG\/Tp2wfdu3dHgH8AevXphZcvXyJvnryhlzWp8zq16oAepMi\/e\/euNKbQ\/QlNL5++1HaRwn\/tqrWg9Ec+b3y06S6aN22uHbNg3gJtWzXKlS2HN6\/eqFN57Na1G+gRE6Sez5wCKCbQjc88g1IAcWhJfH4ShNl7EhtNmhtKd2ds+hr41dgihFlf1fnxfecb5pq5dJw9fxY79uyQNWzat29vLmKznIwAI8AIMALxEIFoukrGQ8R4y4wAI8AImDAClK5l+fLlGDx4ML4FfsOBmf\/goijWG9tEhYjdSrvi6u6ruLDtIj6\/+4z7Xg9wcN6\/sEtt913lP8np2dgT907dxxFRLPj9q\/fSYEAFgD0b5ZfFfws3KwhKIfTP7IN488QXrx+8xt6p++Er2tHJ\/09ra5WDIt97fCdtCiBL\/YaaH+FDyv+OnTrqfVC+eKIRw0fA398f7tnd4ZzJGUuXLcW2P7fJH9JUeJeICsra29ujQsUKyJs\/L3x9fdGtWzftvZKD9PwpUaIEVi5fCStrK\/Tr3w8lS5fE+AnjQUWI\/9r+F8jzUB+1bNkSVF+jZq2aSOuYFvUb1kffvn1Rvlx5eHl56Zuit69e3XqYPm26TDWUL38+ub5tElssXrQ4RESC3skm0knRH5QuQp\/y\/3sikvejsYtdfk826ufXeHjo8LWoIqBSAIk8YVFlwfPiIAK2NprISTKKGptUQXoPDw9jiyLXp8\/+c+fOyXbqVKlNQqaoCDF49GBQdGCvXr3CdUyICm+ewwgwAowAI8AIGBIBjgAwJJrMixFgBBgBE0CAFFzjx4+Hi4sLunTpIj3jkzkmg0uh2A37rtC7vFT4HxJK\/4NzDiGJyOvvXs4dRVoWDhcl15JZUeZ\/pXFs+XF4bTwrx2YpngV5auWRbbcybij39rO8TsYNCxFJ4JzfGaW6VIZFFJXVoQWinLQDBw4EGVRICaqOhK3ug\/rpQX1qDP0QVH3El+bTddWmozpXXvZK2R76XPGk8YqPOqqxuvyorY9oTmhSMqh+3TF07dWrV\/JSwgRh56o5+o5UyPftG00NCH3XdfuoUPDBfw7KAsCUNz9ZsmTy8pvXwd6SVBfA67QXKIUCXad0VxGlOnWEJ7t4EL537t6BQ1oHvcps75feWpYk\/\/q16zWe7CL1kCru26J5C+2YObPmaNvUeP70eYhzdUI1AKiWABVfpHodtEcm4yKgnudUeLJh+\/pSGPVaoqgA1aYLWl1uUEP3Gl1PIF\/b1NIQvW7oH1Ho15dmRMi\/xO\/rt6\/w8\/MT4xOK17h4ndPRQjz+z95VAESVdeHPQAUVsLAQW8HAwG7X7sR17Vxr7W5dWzHW\/O1YXTvW7m5RUezuFgtp3f+dO3MfMwhIDDDDnKNv3n03zj33e29mmHPOPUc5i\/e\/cqZ55GdBooT0maT5HCJuujKp8v5QH6yUpv4+vl9BHrcZ7ZQE7CSz9pDSKZd6FNpaiA\/NJ9agvL8IO3qfqdfaOvo8pDWS9zGdvynn\/7RnZbToT2MlLyporok5lDHURvJrzlQSfZS6xIktYKnkpaD3FXlak4EtuaWVCMFhmUxz1tRbKaHEqD2lCCmWUgkrRkatTOkzg3bOGZI0shqSI\/MyZQSslOeQ6POniH0nxuRar3peFewLFy4ck9NEmPe0adPw4MED5MiWA6WK\/RjSMcKM4rDjidMncOnKJfGZM378+DiUhKdmBBgBRoARYAR+jkAC5Q9V8bf0z7tyD0aAEWAEGAFTQ2DAgAGYPn264nGfGI2mNEAmnXA8sbWWb4HfhCc\/GSFCUySFJQclBKZkwslSJkNSbU4B3b709fXlrTesbCzFzgDdtqiWbx2+jX2T9kd1eLwcR6FyOnfuHC\/XZiqL8rjigQoVK4jdC7eu3TIVsY1SzpOnTqJug7pGKRsLFfsIkMGGDMdJLJKo30\/03RLad5VuHfWhgwwzRF+8NQnoc2TJhZTJrYUBh\/pLQw4ZbqhvokSJQWXNfLrGVc3PMTJQJUqo9KG+2jHCCEtGGmUe4qk5yEhEhmGNAZrGyfnIgCIMSaJO049klD\/4\/lOMM9+Ug0hhIcZ9V75vqYfkQfzEoTVAUd9EOrJRPyL1rDV8CYZKfWJlnXI8nWkt1IXkojF0TQYc6keHBke5NsEaQd+CkCFtJkgluqbWdF5vP7yJhRvm4OL180iTOg16dO+Bfn36xegCKHcOHWSMk2VhhFOua9SpgUePHoHC8zk7axwqYlSYcJh7enqiePHiwvi5ZfUWlC8THNIxnGFG1UQ7GMrVKCcSPE+YMAHDhg0zKvlYGEaAEWAEGAFGICQCvAMgJCJ8zQgwAoxAPELAzc0N3t7eWLhwIXaO2Y3m85rBOr3Gyzq2lpnIIhFsMtpEejpKCBzeOFIiWNv9GJc80hPpDEiaXJO82Cq5FSpVqyB+RJNihBQmUuGjOZMTqtbjVdsmPVVJ2SE9YYk19VNexCzak6ZOO6+qQNHoU4RGhurkOM1wrfercqGZX19BJfpq+YV2CrVdaoO0A3T7UPnOrbvw8\/UDYcEUtwgIBaAigu49iluJTHd2iSF5fndt2U0sJPg9qK\/UFBpLpUfIdrl6ep8rd0Vequ9NqpDzqI2hFIgvfV4kTZpMM1bhR4pZ4vv9O3nO\/ydCSwiPed16pUyfC0QKC5WknJr64AaN6ljTjfpsP\/Av3rx\/gzLFysIpp5NoIKUxEckdUnY5l+ig8yJ3IkgFNa2FZhVnRdFLZ42Smsra3VTURzlIAUyyC9mUAsklDqqRZWrXKozVOrUdCAgMUHYz+MLXzwdffX3gS4efL\/wC\/IRikdr9A\/wRoBx0Vg9lxwX1IaU9rVUqSnWWFuXig6f3ojyWB\/6IgGOO\/Fg4ZuWPDSZQM2XJn7j\/9K6Q9L3Xe\/w5\/k+UKV1G7ELx+uAFOiikHeUHePnyJZ6\/eC52w71\/\/x6fPn\/C169fEeAfIHbOEJOQ78uoQnDgwIE4NQDcvXsXLi4uIvwfrcG1rav6nlcNV7QbSvs5IT5H6LNEe9BngTQkic8F7c4p9TOC2pW+RFRHRNeyna7l51zIv9U0n+nB7eFh7ufvhzdv38DR0RGDBg0itkyMACPACDACjIBRI8AGAKO+PSwcI8AIMALRR2DevHl4\/Pgx9u7dix0jd6LZX66wsLSIPuN4yIFCbxDZpU+HeStmx8MVRnxJdSo0wI2rNxUvTf5TIeKoxUxPqcyQyomYmcU8uEqFTrIkydCrQx\/zWHSIVZ6\/cl4YAOpWqYdmdX8N0Wo+l\/R++uz9GR8\/fcDHzx+FwYVWT4pC+ZzIs0BFxxKSkEK\/KZVkVCDqNKiDMD507tQZObLnEIYb6XkdGBAojBXkMUxHQAAZLnzUOWi8VFRKY4Q4K4nDyQuewieRHOIfnZWDZKdDzkFlWU+8RJtiRKKddFTWnYPa5c4FyVfXyEh1augm4it2ByjhmLTzyTbBVGuIItmIaCyRDPkk5qcQUFoZRLvSRcpHZzpkvS4fwuD1u5eCnym+yDVnsc+C129ei\/tes07NGF0K3Vup7KazOBQjGj1vkp4+fSqLsX4mg0fDhg1V5T8JQM+TKRPF\/ue\/k0z5DrLsjAAjwAiYDwL8q9587jWvlBFgBMwUAfqhv27dOpQqVQq3bt3C3sn7UXdMbVXhYKawhLps5XeyIKnECLWTmVRKhZSZLNeolykNAEYtpIkIx+9twEIJvULko+RBMGei95Wtta04oosDYarsRUDd2nVRsULF6LIz+\/E3btxAmQplTBoHmV9icP8hOHj4APbs3yPee5QonY7g3BVWsFVyz6RLlw7p09khXVo72NnROR3slGvqKz3jRX4Q5bmlHTT0\/NLfdz\/7fqCdBaUqlhQGKgL03LlzcYZr+\/btQfc2b5682LB6AywsLIQxgIw9ZBwjg1eQYvgKDNIYy9R6Cm2kNYYJo5HWqERlaQSjz3bdQxqW5Fm0aQ1VtPNIGksIPyrLa\/m3j7wODax79+\/BbZabyBFEubaYGAFGgBFgBBgBU0CADQCmcJdYRkaAEWAEoomAjY0Ntm\/fjhIlSuDB6QfYP\/UAqvT5xWCx86MpnvEMV34EErGS0HhuCUsCEaKEcPiZooex+jkC8r0tlTw\/HxH\/eiRWlIZEGr\/w+Le+OFkRf3cYFHZSBhOZ8mceKbGJBgztj7kz5mHJ\/KXiOrZf5i2cJ5T\/SZMmFaGxzp49KxLT29vbx6ooXl5e+Pfff4XSn5T\/DlkcYnV+Q062eu1qwa5QoUKGZMu8GAFGgBFgBBiBGEVAN\/tUjE7EzBkBRoARYATiFoHcuXNj69atwpvs1sHbWNluFa7tuS626setZMY0u8YAYEwSsSyMgAyRIMN0MCJRR0AaABR3z6gzMfGRlFuAiJK6MhkGAfN9mgyDX0gugd+0BgC5LS9kBxO4pmTQRH5+flizfk2cSXzx8kUxd\/\/+\/VUZVqxYoZZjq3Dnzh0R7snJ0cmklf+E1\/JVywVsrq6usQUfz8MIMAKMACPACEQbAf7LP9oQMgNGgBFgBEwHgUqVKuHMmTMoWrQovN99xaEZh7H693\/w1OOZ6SwiBiWVOkGNeiwGJ2LWjEAkEKAQBkTm7LUeCbi4608QCNJ6JidNokl6\/pPu3MwIxDoC8WEHwOjuE1GuaCWBnQwHFOtAKhM+f6H5+65du3aQcmzbti3WRdmyZYuYM1vWbLE+tyEn3H9wPy55XEKaNGnw66\/mm0PFkJgyL0aAEWAEGIHYQYANALGDM8\/CCDACjIDRIODs7Ax3d3esXbsWOXPmxIcnH5TkwDvw4ekHo5ExrgSRBoC4mt8Y51U9po1RODORiWIfE5lyOAxjuVXSiGLOz7XcAcDPkwGfSg4BZEAwAUqcTJQokelGq01jmxZpU6UV67BMlkyc4+IlgXYXBYUA6tmzJ1xcXDB48OBYFWXgwIGYNm2amLPvH31jdW5DTkY5CYaNHiZYDh8+XORxMCR\/5sUIMAKMACPACMQkAqb7V1VMosK8GQFGgBGI5wiQEqx58+Zo0qQJ2rZtK4wBu8fvRfO5zZDIQhMfOp5DEPrytHEczFk5KIGRilJ5zee4Q+Bb0DcxOStso38PVAy1YXCiz9H0OMgdJQnZ4ml6N89MJPb39xcrpWS3pkwB2lwGyZLGjQHgzr07ePnqBZIpBgjyWHdzc4tROL29vbF\/\/36RY+D9+\/eg49q1azh27JiYt3WL1ihcqHCMyhCTzM+eP4v7D+4jR44cwpgSk3Mxb0aAEWAEGAFGwNAIsAHA0IgyP0aAEWAETAgBCwsLLFq0CBcuXMC9e\/dEguDcFXOb0ApYVEYg\/iPw\/T8OAWSouywNAOZs5JNrT6RNBmwobM2Zj8wBILE1ZywMsfaAgADBxtSf0cAgzTqSxtEOgH+0uQco\/E\/y5MkNcWvC5HHw4EEREoeS\/YZFZUuXDavJJOpnzZ0l5KxTpw4SJ2Y1ikncNBaSEWAEGAFGQEWAv7lUKLjACDACjIB5IpAiRQq0atUKY8aMwZt7b2HOBgC5Vf4\/bcx183wieNXGhoBMApwgoVQzGpuEpiOP3Nliznk+JAbfv5szCqbzzJqjpKoBwOR3AGgMAJbJLOPkNn7+\/FnMW7hwzHrdz5o1C5RkmHYXFS3sgiKFiyBNqtRIrRx2dnYYO3EsHj95HONGiJgEecu\/W3DoyCHY2tpi5MiRMTkV82YEGAFGgBFgBGIEATYAxAiszJQRYAQYAdNC4Pnz50JgC0sL0xLcwNJqQ+WCvTgNDCyzixYC0gAgvdejxczMB6sYmnEIIInBt++a0FJm\/kjw8o0QgYDAeLIDQLsOKyurOEE5i30WMS\/lferSpYvBZfDx8UGPHj2wYsUKwbtfr\/4YOmDoDwnrx08eL9qTW8XsLgSDL1BhSH8PTpw6ETNmzxDsp06dinTp0sXEVMyTEWAEGAFGgBGIUQQ4CXCMwsvMGQFGgBEwDQT27t0rBM1eKrtpCBxTUnIix5hClvlGAwEZs116bkeDldkPlcrv\/2C+3u9yHwkbOs3+7WC0AARqY+cnNPEdADKBe9IkSeME65rVaol5t2\/fLrzzoysEfWZMmjQJBQoUgKurK5ydnYXy38rSCksXLMOwgcN+UP7TnP4BmpwOlpZxsxMiOuue7DYZbrM0uRP69euHzp07R4cdj2UEGAFGgBFgBOIMAd4BEGfQ88SMACPACBgPAkFBQUKYh2ce4snFJ8iYLyMy5c9oPALGliScFFNFOgE0akIZf15t4EKsI\/D9myYHgFRex7oA8WhCiaE5K78lBnJnSTy6vbyUeIJAfAkBJA0ASZImifU7QxgOHjlIzPvmzRuMHz8eo0aNipYcY8eOBR1E169fF+d8jvmwcM4iODk6ievQXqRBJ652QoQmU0Tqbt6+iaUrl4quW7duRf369SMyjPswAowAI8AIMAJGiQAbAIzytrBQjAAjwAjELgIdOnTAhAkTcGbFWXXiYs1dULpdKXGdMJF5bBi7d+yuWO\/L56+Q3TaPKCdNlhRp06VB9brV0HvwH7CxtVExMkTBOasLuvXtgm59fjcEO+YRDxGQSqSEMkZVPFxjbC2Jd1EoSPNOp9h63HieKCKgGgBMPFG1DLOVxCL2DQDv3r\/F6bOn1TswevRoODk5Cc99tTISBX9\/fyxbtkyMmDbRDSlTpISNjQ0qlquIJEnCX58M6WRKIYB27dmFTt07wc\/PD6VLl2blfySeFe7KCDACjAAjYJwIsAHAOO8LS8UIMAKMQKwiMG7cODg4OODcuXNIpPzgph957usu4uHZh3j\/yAvpcqZFzaE1kDpr6liVK9Yn08bGSGmdEuNnjBHT+\/n649b1W1i58G\/cuXkXq7etMKhYDV3rwzFfHoPyZGbxC4FvQZpY7ay8jv59lUYUc94BIHf3mDMG0X+S9DlILOXuCv1WvoosAnJXYiJTDwGk3V2ZNGnshwCytv7RWaFt27bIkSMHXFxcInVLZs+eLTz\/vby8kCljJrRr1S7UUD9hMQ0MCBRNprID4PrN62j3ezvQc9i+fXvMmTMnrKVxPSPACDACjAAjYDIIsAHAZG4VC8oIMAKMQMwhQIrF33\/\/XRw0S4UKFdC6dWuh\/Kfrt\/ffYefY3Wjxv+ZInCQef3Vow4InS5YM9ZvWo6WrlEyJXbtg5kI8e\/Ic9g6Z1fqwCvt27Bd9hdJW63EbWoShbDmz4eH9x3i4YGUwK0pQqnROpOy8kAolUjBJJRN1lMpg3bpgBqGXqO\/37wqf799FPGCKLU985CHm0gr57u07weTI4SP4\/OmzkIP6UR9xVrzR5bgECTU81DZtH2rXzPldnGW7HEcTyLI4K2GH9K61sglBtMYZUQ75osBFHob0Y51CDQQFKuegQFEW10o9ySEPWrcsS\/l0WZIMksjr8bLHZdGfjGOkkBLnxIkQ0quTeEnSLVMYJXmty1vySpw4scBVevonSpAIhCnhRceTp08EWyozRQ8BiaG8H9HjZpqj\/1OeRyKJhWmuwsik1n5mmPNzZcg7Qp+xRKYegu7bN014xbjIASDnpO+c3r17Y9asWfD19UWjRo1w7969n3rty\/tJHvBDhgwRY50LOMNt0nTxPS3bI3I2tR0AGzdvFH9PkMFE7nqIyDq5DyPACDACjAAjYMwIxGMtjjHDzrIxAowAI2DcCLRo0QIHDx7EoUOHMGbMGMyYMQM3btzAub\/Po2zHMsYtfDSkk3rf0BKEOhV0FJwfP3isGgA2\/L0JKxf\/jUeKAj9Xnpzo+EcHfP3ijfOnL2Dbhu3RkMR4hq7fsB50MDEC8QEBMqyYO8mk0mwAMNyTIJ8qNgAA9+\/fx9NnTwW40qBLF7rGT1kOeZb9njzRGD2\/eH\/GpRsXhAGVjAEao2licU6cSDmTUVY5RDmh5pqe66QWSZV6jWGVdv3QPFQvDu21EDCGX6RRN5kSSjC2yfO6p5gya9asInHvlStXcOTIETx9+hQ7d+5E48aNIyQSxb0nw0FWh6w4vOdIhMaE7CR3dJBzhSnQhYsXhJi1a9c2BXFZRkaAEWAEGAFGIEIIsAEgQjBxJ0aAEWAEzAsB+pG8YsUKddEFCxZEyZIlcXmzBwrWKQDrDNZqm7kU9u84IJaaNUdWcV48Zykmj56G2g1qoueA7ji07yh6d+yrB4cwKCgvSawskNQ6GQJ9AuH70RfW6a2RJLkmZu77R+9haWsJq1RW+PLmi+hD+XeTpkgqvMB9P\/gioUVC2GbSbudXrRQab3OpQNFc6U0ffEGe6co4oaTSeuuLceRQTgOVQxg9hJe8ZhjJGugfCEtFbuorFVv\/0Q4C6kJjiK86Vudaqf8W+A0+Xj5ibBYHe5WHZogYrIzXjtEwEXw1PDVzyLJ2Oo1gobzSuhIpXvS0Y4KUPokU73xSCCW2UM6JLYSCKKHOugUSyproOae1Kf\/FWbKWa6Xr65438OnTJ5QsURJlSpcROycoeSodtMuASIusKItrYqhDmjk0dbq8SRFLMaIpyS+VZa4NgbECDtXRQTsATp46qd4DHdZcjCQC0rNY9z5EkoXJd1fedoLEZ4DJr8Y4FiCxNPfEyp8+f0Lp8qUhY\/hH9+48eHYPfSd3iy6bH8aru68SWSjfEcp3BX1v0HeG9iDvectkVkiaJBmSKN8hFkoMfwvlTO3irJRpB1gSxdCQ3DK56GuZ1FLnbIlkyrWfv6+Y+8HDB9h3cB8+fvoIHx8fJa68r4gt76fsMHNt7IpcOXL9IGN0K44ePyJYVKlSBaR4X7VqFbJkySLqjh8\/HiEDwNy5c3HgwAHx\/bh0gSb+f2TloveE\/Lz9Wa6AyPKOif6XLl8SuRNSpkyJGjVqxMQUzJMRYAQYAUaAEYgTBNgAECew86SMACPACJgWAiVKlECbNm3ED8iTS06h9ohaprWACEqr6LYFBSg\/ynds2SXKX798xWV3D+z+d69IBEzhfz5\/+oI50+ah0a8N4LZgiui3b6fGQEAXmZ0zwbmBMw5NP4SUirK\/5cLfVAXzAbeDeOrxTNRR3wUNF6JIo8KgpMsHlf439t9E6yWtkMrelppxceMlnFx0Cq4zmwqjgKg0gZdXt19j\/R8bkMwyGdw9z5uAxKGL6NrgVxw7chxly5TFqBGjQu8Uw7U7du0QBoAYnsYs2FN4KCKpsDWLRYdYZCLF8EVk7srqELBE61I+T1LRGS1mJjzY29tbVf7b2tiqil9aUmjYhKyTu++onsKvkbKdlMaELx3SKCrOFFpN+dKWIdZoDNXLuULyFg3aFzK80iFD0+i2xUR5ktukMNk+fPQAi+YuDrM9qg0+itc+EYXBI7K3t0eZMmVw+vRp5M2bV9SF9XL79m0MHjwY\/\/77r+gycsgoFHYuHFb3cOtN7XNmyYolYj3du3cXSY7DXRw3MgKMACPACDACJoQAGwBM6GaxqIwAI8AIxCUCEyZMwIYNG3D32D187eGD5IrH+odnH\/D1\/VdF4Z05fijUtBYAUvD36hDszZ86TSq07tQSA0Zq6m543sSXz95wLloQnh7XxG05fvikenvqjKoNSxtLYQDI+0sePWxylsuJG\/tuwu+LH5Kl\/HE7fIq0KVTlPzFMZZ9K8PX3CTApA4DqAy\/djVV0uBBZBEjJRSSVjJEdz\/0ZAV0EEmoTq0plqW4bl6OGgHxvMqYa\/Gh31d3Ld6MGZiyMorj2vooXPoW2obOfvx\/8fJU6xWOfDA\/kqU8H7Wigemqnev8A5dCeaZeDj68Pvnz5ouGh8KR+VE9Kd5mHhgwRlsmUXX5WVrCyVHYVKAmBkyVNhrfv3+LV61dCBkMtmeae5DYRGzZvwOs3rwXbhg0bquzXrFmD9evXC4cOtTJE4ebNmyhevDi+fv0qvnMWzlmExg0iFi4oBCtxaUoGAHr\/0k4NIkr+y8QIMAKMACPACMQnBNgAEJ\/uJq+FEWAEGIEYRCBDhgywVBLh0g\/nD08+4MC0g3h84bGYMXupbKjYvQJsMmrD1MSgHDHJWnoM2mWww7ZDm8RU1jYpkTxFcr1pnz15Jq5HD\/xTr15efH71WRgA6JoU+rpEoX6IPj7\/iAyOGXSbRNnSRt8okEgJY0P0nxImhin2EZDPhFTwxb4EwZ7apFRjih4CapglRSlnriSfoyBtCCtzxcGw6\/4xxJdh+TM3QyJAIXHoSGWrMbAbkndEeU2dNRXTZk9TPfQjOi68fgOGDcA\/69eoXcaNGyeS\/sqKbNmyCc9+eR3a2d3dXSj\/qY2+\/8gQEB0ypUTOHlc84OXlhVy5cv10l0R0MOGxjAAjwAgwAoxAXCDABoC4QJ3nZAQYAUbABBH4+PEjPnz4QAHPsWPUTgQoHukUI5UUow\/PPhKHg0sWpT5Q7AzIXjIbCtTOj0z5M4lY9qawZKnspRjyGTP\/qJyXa7Cx1Rg6Nuz5BwUK5ce8Gf\/DPLcFSJEuBdosa4XESYK\/XgN9Ndvv5Vj\/z36iSHkAQiUFz3hB8WUdRnAzKFQFUVwaIYwABoOIoOYAEBknDMLS5JioBgAlNjeTYRBIqP284x0AhsHTHLjIhOTy747orvneg3tC+U+GjR07diCbouwnRXZkqXXr1iJcUIcOHfDo0SPIRMaR5SP7fzehz5kFixcIsatXry7F5zMjwAgwAowAIxBvEGBXsnhzK3khjAAjwAjELAJp06ZFy5YtFZcwCOV\/o0aNcO\/ePVy5cgXt2rUT29qfXHyKVzdfwf+LP24dvI1N\/bZgcbMl8Nh2RRWOFOKPlJ0Dnjs98dj9Cb56BXuXUVgcSor79sE7ESJHHRRbBa1TsFTmhDVtrrw5RdPBPYeVxK2JsPJ\/q8R1pgKZcPivI\/gWFOyt\/\/LGSz02z6+9EAl\/5U4AvcZ4dCH1\/zKmczxaWqwvhZIEE0nFbawLEI8mVI0o5rsBQH2OvmsNS\/Ho9sbdUqQBQIlLz8QIRAQBGRrHUJ\/rVsoOTSILCwu8f\/8+Ssp\/KTft9iTlP4UuqlurrqyO0vm7TK4UpdGxN8jzmic2bd0kck5Q\/gMmRoARYAQYAUYgviEQ7KIY31bG62EEGAFGgBEwOAKrV69Gnz59kDhxYhQuHJwQbvny5ZgxYwa2bNkiDAEuLi4iYfDGjRtx\/\/59HJt3HE8UZT\/tCDg06wh8PvjoyZYwcULh3fwtUN8jlTzqs7o4IH+t\/MiYL2yPfD1m0biQP1Sll3BYrLLnzIbaDWtiw9+bkCqNLby9NUaMh2cfopCS\/DdxEk3YHhp\/58hd2Ga2RaH6znipGEc8tl5BmQ6lw2LN9YzADwhIA4D0GP2hA1cwApFAIGECjf9PdD17IzFlvO8q920Zyps73gPGC4T8XP\/Z3xsRhSpdWjukTpUaXh+80Lx5c5w9exYzZ86M6HC9fkOGDBHXXTt3Q7q06fTaInthKjvYxkwYI5bWs2dPODg4RHaZ3J8RYAQYAUaAETB6BNgAYPS3iAVkBBgBRsC4EChWrFioAqVKlQodO3ZU2yZNmgQ6Nm\/ejE6dOuHhOSVMkHIQFSpUCEWLFhU7CK5du6YJLaTUW1tbI1OmTMLAQIYD77feuL73hjhyKclzq\/avErOJcNVkqz\/fIDdp1niMHTIebn8G\/8B2UIwVJVuVEGuUL7nK5xTyn115Dsmsk6FI48Io3LCQbOazkSMgFXqq53gcyBv0PUjMKhW3cSBCvJkyLu+jsYCYMKFGXS0NnsYilynLkUCbn4NDAJnyXYxd2aVi3FA7AMjz\/\/CeI1ixegXmL5qHWbNmgXI3RdabfdeuXTh27JjIj9CrW89og2IK74kTp07g8NHD4m\/QYcOGRXvNzIARYAQYAUaAETBGBNgAYIx3hWViBBgBRiAeIdCkSROULFkSnTt3xv79+0HeVdOnT4eu1xslFqYfiVZWmgS5tHy6vnHjBmjXwbx583Dv5H2ROLfhlIZIrk2ka2iYsil5C67tvg4LnRj+Yc1hbWuN6f+bikmzx6NI9uLw+eqLCt3KI3FS\/a9Wu9zpUGt4TXx+8wUplYTAIb24u23rok5BBo6QlLWYA3ofiP6P8JB8Y+3ajEOtGApjQ4eKMJRczMc0EUig3QFgCoo5U0FY7gAw49QS4lZJg6mp3Le4lDP4cz14x2B05bHPbI8Rg0egYP6C6NS9I8iTP3369CJMY0R4v3v3Dv369RNd+\/fur+R5CiNXUUSYafvIdSagBFJGSitXrxSSDRgwAKlTpzZSKVksRoARYAQYAUYgegjoaymix4tHMwKMACPACDACoSJgb2+PPXv2wN\/fX4QICtmJktaFJPKKK1CgACZPnoxu3bqhVq1auHnzJla2WSV2ASRIlECJv59QcyghhERZOSeispLEN6HSrsQV0vzkpDP99lQ8X8U\/OitO\/uQNLDyCRdcE+KIo6Yki45H37s17ofyncSlSJ6dTqGRtlzLUeq40bgSkkjQyz4ShVyQVKHEpg6HXxPziDgG5C+I\/jlcfdzeBZzZ7BGLyc71B3QZ4+\/YNhowaInZgHjx4UPwNRTsuy5Qpg3r16oWK\/6+\/\/oo7d+7AydEJHdoE7+icNnMqpsyYgpcPXokcA3IwOW\/81rY5zrmfw8rFq1Dtl2qyST2rSYDpbzAjJLoPBw4fEJK1atXKCCVkkRgBRoARYAQYAcMgwAYAw+DIXBgBRoARYAQigEDSpEkj0OvHLlmzZhVb0jNmzIhAv0Bx\/NjLcDVJkiaJMLMlc5eKvikU737KZcCkRUBYXEwfDRkmJS6V79KrVipuTR9VXkFcIiCfI\/lcxaUs8WVudaOTkSo54wvO8WkdMgeHDMll6LV1at8Zb9+\/w\/S\/3LBmzRpxyDkuXrwowjDKazovWLAAhw8fFqF\/Nq3ZLJLh6raHLAcEBKBt5zZC+b9qyd+oWrlqyC7iOkhRsBPJzx1xYUQvt+7cwufPn5EzZ05kz57diCRjURgBRoARYAQYAcMiwAYAw+LJ3BgBRoARYARiCIF06dKhe\/fumDNnDspWKoOmLRojMEAxBgQph3IOCgxCQKAsK9dB36BRcP0nzv8pGhry5qY6cVbi\/cuyrpc3hSaqXif0H7Ihl+bz1Qdrlq8T1RW6lw\/ZjGZ\/ucLSNjis0Q8duMLoEZBK0rhUXsSkp6jR3wAW0OAI0C4oou\/0ochkGAS0WMbl54RhFsJc4hMCQwcMReP6jbB7327MnKPJV+Tj64O2bduiRo0ayJYtm\/K3UhC2bdsmnCxo7YP6DkJ6u\/ThwkBjOvXohBOnTyA85T8xCVT+LiMy1vfGp0+fhHyUf4qJEWAEGAFGgBGIzwiwASA+311eGyPACDAC8QyBhg0bCgPAi6cv0MC1Xpz\/oHxw9yEC\/AOE53\/u8rl+QDtNtjQ\/1HGFaSGgaxyKK8mlDMaqQIkrXKIyr8RQMf9FZXi8GKNiwCGA4sX9NKZFGIPB1JjwCE8W+T4Mr48h2vLmcQQdfXv2w8YtGzFs9FBQKCA6dCl1qtQYPWw0WjYPPwwOfR9179MNB5WwOWEp\/9esW40lK5bgwcMHcHBw0J1G2TXQVuQoGNBngKj39fVFncZ1ULtGbci6rz5fUa9JPfw58k+UK1MOj588xoixI3Dl6hV4eXkJb\/0\/uv4B18augseEKRPw+s1rzJ4+W53r+MnjGDVuFLat3wZbW1tMnTFVhKF0zOuI2fNn48nTJyjuUhzOBZzFGCkn4UJ5ENzd3ZEmTRq4urpi7NixeqGPli1bhrlz5+Lu3btwcnLCyJEjwwyrpArEBUaAEWAEGAFGII4RYANAHN8Anp4RYAQYAUYg4ghUqFABFA7o4f1H+HvJGrTpHP4P1YhzjlpP+6yZlYTBFmIHwrOrz2DvbB81RjzKeBEwAs9eVqoZ7+NhipJJxaN8rkxxDcYms8RSYmts8sWWPBKH2JrPlOeRz0psYkYK8\/p16uPQ0UO4e\/8unj17quRNSoysWRzwm2sLoSgPD1OStc+gPtjy7xasXbku1LA\/8xbOw9iJY8Q8lEh49749uHnrpth5Sbzt0tph09ZNqrL\/3IVzuOxxWThTSAPAydMncdXzqjAUfP7yGRWrV0Te3HkxqN8gsWNhzbo1+L3H7yiQvwCc8joJA8FTZS26RJ79ZDCg3QpE1H7w8EHQLs+WzVvCWklwTEaB02dOi3ZS9N+6dQslSpQQSn03NzdhMBgxYgQeP36shlCaPn06Bg8ejKZNm4Lajh07hgYNGmDz5s1o1KiR4MUvjAAjwAgwAoyAMSLABgBjvCssEyPACDACjECoCCRWfqjSjy\/64bVk3vI4NwDYprLFLzUqY9+O\/bh96DYbAEK9a6ZdKT3FpbImLlbznxKuiiguZYiLdfOcMYOATM\/xTfHkJW\/euMxvETMrjH2ucj+Jub9H5W6l2L8DpjdjwgSanEGxHYmLcjGRt31UaMjIwVi74R8x9M7dOz8k\/aVY+m5\/TVM885th3sx5ol8+x\/zYsHm9agCoVqWa2B3wRklSbJfODqTsz2KfBddvXsfHjx+FEeLwkcMoVaIUbGxscODQAaGsXzx\/MRwUQwVR+bLlUaxsMZy\/cF4YAERlBF5ozvMnziNnjpyiN+0amLNgDqytrUWS5JYtW8LS0hKnTp1CsmTJRB8KP0nGgYEDB4ocAePGjQMlC16xYoVob9y4MV6+fCmMAmwAEJDwCyPACDACjICRIsAGACO9MSwWI8AIMAKMQOgIVK1aVTR8eO8VeodYrpXKtO\/fpAoolgXg6WIUAemdGZeKvW\/fNUkUb9y8gRatW4j16sojY7rLOnmmjrJMZzJY\/TnmT6FMiVHQjJi5VFBKzIxY1BgTTSocF\/+zEHREheh5mjBoEprV\/TUqw3lMPEWAjZXx9MZql7VaCe2zfOFyrNu4DhOmjscvFX+Bk6OTumjP65748uULihQqAo+rHqL+xcsXavv79++F8p6U6ydOnUCThk3E+fcOv+PPSX\/i7IWzqFmtptih0KZlGzGODAZXL1wVZT8\/P7Fzwf2iu\/huo3wGkaHMmTKryn8aJ2WrXbu2SHpM3vy00\/T69esqWzs7O2EkPX36NGhXAR3FixcHJVKWlC9fPmzcuBHv3r1D2rRpZTWfGQFGgBFgBBgBo0KADQBGdTtYGEaAEWAEGIGfIeDv7y+6JEmS5GddY7z93dv3OLj7sJjHqbpjjM\/HE8Q+AlKBLg0BsS8BIJMTUuzj3Xt2R0uEShUroWH9htHiYcqDZUJleV9NeS1Rld2loAuOnT2KoG9B2kTpkedE7wfiwQYAiZ12l442wbKsNbezNLCZ27qjs964\/G6JrNxzZsxF3Vr1lNj5JVC2Shl07dUFB3YeFMpz4vX02RPBknYKhEYUd79I4SIirj\/F6K9ZvSYueVzCzGkzRaJiCseTzzEf7j+4jxpVa6gslq9ajkVLF+HOvTsihE\/RwkU1n12R9LtInTq1ypMKtCOAiBT6Pj4+ePv2rUiITEmRQxKFAUqePLmo\/uOPP0I2i+tHjx6xASBUZLiSEWAEGAFGwBgQYAOAMdwFloERYAQYAUYgwghIBYP0Yo3wwBjouH3TThFf1iqVFYf\/CYmvMdygkDJF4VoamsjzMK6oSaMm8Pb2xpMnT9QwCrpKI1n+rk3qKq9JXumRu\/LvlYLHtyDNboK4WgvPG\/cIdG7RBXToEj0zeoc2SbKskzmTKSTWxLnj8c+2NbrD8Wt3V1z0dNerS5E8JbLZZ0Xz+r8ph2bnil6HSF54ffTCkdOH0aR200iOjIXuWkWkORuWYgHleDWF\/LxOmDCByayrcf3GQtb0dukxcewkdO\/dDZPcJirJg8eIehsbW3HeuXkXnAtqkuuS0r9clbLCi76QcyHRTl79CxYtwLnz50T4HYrjT8l+Dx89jBzZcyCrQ1YlcXFe0Zd2G\/Qb3A8d2nbA5PGTReJeep9lypFJz4AZGBgo+suXDx8\/yKJ6Dvn+lH9PUnhJCv1DOxO6deuG8ePHq2NkwcLCAnv27BGXJ06cQNGiRWWTepZhg9QKLjACjAAjwAgwAkaEABsAjOhmsCiMACPACDACP0cgffr0oOP169c4efQUylUq+\/NBMdTD\/axG4ZW9VLYYmiEesDUd3UaoYMsf9AEBAaG2x1Zl29ZtozXVtu3bhAEgpAIkWkx5cLxBgJ6LiD4biRNbaNYdwsiXM2tO\/NG2l2gjQ8EX7y\/Yc3Q3RkwbLuqiawQYMW0Y\/Pz9jNMAoH0S6HMiXcZ06NG9B8aMHKOt1ZwqVa0EDw8PrF29FrVq1lLbPn3+hGw5s2HMqDHo3bO3Wm+KhYg+Q6a4NkPLLA21popZMyXO\/\/ad\/2Lu\/+YquQCqo0ypMsiTO4+Aae+BPSKGP11YJrMUdbReUtJTDoLqVapj8PDB2LhloxhHGFBc\/xmzZ4i4\/7re\/7v27oJjHkdMnzxd8KGXi5c14Xfkji7yzA+p8L9997baP6wC7aojIuU\/yeDo6Ch2AMyYMUMd8uDBA\/Tp00ck\/HVy0oQ72r59O8qVK6f2oXwAhw8fxuLFi8X61AYuMAKMACPACDACRoSAJvuQEQnEojACjAAjwAgwAuEhQD\/S6McY0fRxs\/Q8wMIbZ+g2LyUHwdEDxwXbXBVyGZq9yfOTnuemHmudvP6IQnoXmvwN4gUwAgZGIG2qtKhXrb446ldrgJaNWmHVzNXIlMvDdQAAQABJREFUliU71u9YH+3Z\/lN2uBirslQmCyflZvFixeHurr8bghSNV65cAcUTpwSnunThwgXxPVaxQkXdapMsG+v9MUYw1e9I5W8aUyW3SdOFB3+Pvt2V2P+fkTN7TtSv0wBr1q3B0pVLRVLfc0pcf0n0\/iDKljUbcuXMJQwA5PlPVNyluAjvQ7sAqletLuropVTxUrj34B4uXLwgdsB5XvNElz80O5hkDgDnAs548PABFi5dCErsu2HzBqxavUrlEVqB3pM3b98UTaVKlRLnYcOG4eHDh+jRowfu37+PW7duoWPHjqJcpEgR5M6dWyQEXrZsGebPn48PHz7gwIED6NWrF+zt7Vn5HxrQXMcIMAKMACNgNAiwAcBobgULwggwAowAIxBRBCj+KsVF97h4BX8v0Q9FEVEe0e135sQ5+Pr4ImnyJMhWLGt02cW78dqIGCa\/Losk8cMAYOrepoZ6kCQOhuJnjnykUU8qvcPDIGHChMibIy8eP3+kdnvn9RaDJg5AmYYlUbxuUXQZ0hlPXjxR292vXoBr18Y4eeEEyjYqhRY9m2P41KE4e\/ksLl51R8NO9fDmnSZ29\/7j+9Gse1MUrV0IpRoUR4cB7XD\/8X2VFxUobBDVU582fVvhvMc5wePZy2dqvzsPbqNt39aiT5XmleC2cCoCg\/RDiqidQynIzRCkAC9XthwuXb4E6Z1M3Y+fOA4baxu0b9seR44d0eNw5uwZ2NraqiFT9Br5ghEwYgQypM+ASX9OVmL\/P8WQUUOFpDOnzEQ1xcN\/2OihyFUwJ0aNGyXqQxqHKAwQvUekAYB225ERwMrSSq2jgS2btxQGgfpN6yNj9oxo2qIp+vXqh8oVK4v3GfVp7tocjeo3wpARQ+BYyBHTZk7DnJlzqClMunXnltqWIkUKUXZ1dRWK\/bVr1yJXrlwizA\/tLli1ahWkM8CiRYtQp04d9O7dG5RToG3btmjevDlGjhyp8uMCI8AIMAKMACNgjAiwAcAY7wrLxAgwAowAIxAuAvRjbfbs2aLP+GGTcPmCR7j9Y6LxwmmNh2fqrPpJ5WJiLpPmabrOjQJ2+aM\/MspAk75fLHyEENh5cAdylc+O63eu6\/V\/+uKpqC9UvcAPCuSNuzaItuevghXPeoMNdLHv2F4xz4dPP8bANtAUEWbj6+eLk+dPKLkAsosx9D5q3acVzlw8g76d+2N037F4\/e4VGnSsqyr1KXTQlZtXMGzKULgULIYUVilQq3JtOGRyQOaM9mjduC2SWyXH3qN70H14F+TJnhcTB00WeQbofvQY0VWV78bdG8p1N6S2TY0pQ6chV9Zc6DiwPa7dvibCCVFHMhg06twAHz9\/wNAew9Hh105Y++8\/GDRhgMrn54Vgk2f5cuVFQtHrN4KfjaPHjgrDQOVKlXHv3j2hMJU8z547iwrlKogY6VT36PEjtG7bGgULF0TmrJlR8ZeK2Lhpo+yOk6dOolKVSpDhS2RD5WqVse1fTfLSC+4XRJ\/Lly+jWs1qyJ47O9p3ao8rV6\/I7uL8s7moE\/Fo17EdcjnmQt0GdbF02VI1Fwm179y1EzVq1xBhjKrWrEpVau4RccEvJo\/AwL6D8O7pe1UJrrsgCgVEbfNmzhPVNjY2mD9rPp7eeYaLpy5h3\/b9oj6kAWDi2In48PID8jvlV9nt3LITzx881\/OkJ+PYmuVrcP\/6fVw6cwm3r95Gi19bYMu6LVi\/WrOziEL4LFu4DE\/uPsH1S9dx4eQFNKzXUPBPmzat4D9nxhwc2RtsfKPcBES\/\/fYbsmfXfD7RNeUAeP\/+PSjpL5137twJFxcXahJE8qxcuRJfv34FhQd6\/vw5yChAMjAxAowAI8AIMALGjAAbAIz57rBsjAAjwAgwAmEi0KRJE7HtmkKzdGj2Ozw9roXZNyYarl72FGxzlssZE+xNn6fWJVZ6C5vqghIl0vypJMM1mOo6WG7DIlCyiCZkxOVrl\/QYn3I\/iTRKKJyvvl\/hcf2yXht5tgsldgZ7vXpTu5BJS799D1Z60xref1SUZYd2aA7FQLJi4zLFq76VwKK9awexzHXb1+Leo7tYOXMVXOs0Q90q9bB69lokSpgIs5f\/pUJByTl\/rfcrZv85F4umLEG54uWRKX0mZEiXQeQAIAPA+SvnUaFkRYwfOAE1K9VCn4590bZpO4X\/PXxWwpEQTZj9JxwyO8BtxAxUK18do\/qMEcYEdSKlMHPJdCRLmgwb5m8WMlHoovEDJ2LHwe0gA0JkiJScJYqXEApMCu0j6cjRI6AQPy5FXUAexXRNRN9fFy9dFG10TXJX+qWSCGMyaOAgTPhzglC6du7aGTdvacKVfPr0CR5XPH4IS0b5Bd69e0ds8PnzZ9HH9TdXNKjfACuWrgCNa9GqhQhbIvpEYK7HTx6jafOmIn\/IrOmzULpUaQweNhibt2wW8\/y741+0atsKFBv9r1l\/oUnjJqL+23dONi6ACOdFJgHWVYxPmzkVabOk0TucSxREs9au8Lyu+ZsjHJZG1ZQkSRKRzFd3fdER0MrKCpkzZQ6XRcoUKZEpY6Zw+8hGiWeOHDlklXommR0cHMJV6tP6yHBgqPWpk3OBEWAEGAFGgBGIIQQSxxBfZssIMAKMACPACMQ4AtOnT8ejR49ACdma1WqB6QumonbDmjE+L03w\/u17MU9qh1SxMp\/JTSJ1gya+A8DkcP+JwOaurJAhgKKLQ7o06UBJbz1uXEarxq1V1MkAUKVsFZBh4ITi+V68UAm17aLnRZQpFndJy1VBollImEBjFPseQslLivc+YzRJgGkKCv+TRfHanzZ8usgLQHVXb1yBs1Mh5HAINpyShz8p5y9d0yT2pH5E0siiufrxdVTv0Wol7Xa4+\/AOHj17KOp8\/X1BykDaEdCktqvajwr1qtbHlj0aBTZdU0igEoVL4O6jO3QpKE2qNEKxd0m5Z\/ly55PVYZ7lc0VrpjjnZAQ4734eHTt0FDHFSZFeqWIlocwvU7qMyAPQplUb4ZHv5+enGgDOnTsnYqovWbQEDlkcxHy0o8ClpAvOnT8HJ0dNEtIwBQnR0LljZ\/zR\/Q9RW7JESRQoXACzZs\/C2NFjEZG5xk0YJ8ITbVi7QdzPunXq4u27t1i8dDFcm7ri9OnTqFqlKsg4QFTIuRAWLV4kypTcmMIeMUUegXmKB33iRIkVI0+Agvc7bNiyHnUb18FhxYOd4uwzRR+BDZs2CCb16tWLPjPmwAgwAowAI8AImAACbAAwgZvEIjICjAAjwAiEjkDixImxadMmsWV76dKl6NGuF35t44pBo\/sjdZqYDc1DcxP5e\/uHLhzXxgsEEmiVnVLBFy8WxYswCAKlipYW4W0kM\/JaP+1+CmP7jYNlMiuQMaCfEuaG6P2Hd3j09CH6duonu4N2BExf5Iabipc5KZyrV6wp2pNYJIlUH4pxv2rzSlxVwuYUcy4uvOJVBjFQSKAouYn+U9arS0XyF1E89jVhQEgRnsY2DeTnpOxHsf7Jiz8kpVfqXh3fq1ed0S6j3nXIC\/KWd1s0FQdO7Mfb929hk9JG7BKgfvR+ff3uNbx9vFGkQBG9oelSp1OvKUSR10cvhccBcagN2sLz189DVoV6rZsDgDqQ0n7dhnWiL3n7Z8yQUSQQpQraCTBn3hzRRuF\/yGOZ4o0TVataDVcvXxVlMgzcvXdXJBQmg5Wvr6+oj8xLs6bN1O4UY73qL1VFMmKqjMhcnp6eqFe3nhqeiMbNdJupej1PmTSFqgRRSKJLl4J3xJC8bACQ6ETu3Lh+Y71wOxTyxrFwXuzaswu9ugcb2SLHNW56R9fYGhNS37p9C+\/ea3bL5Mv3cwNfTMjAPBkBRoARYAQYgdhGQPMXfGzPyvMxAowAI8AIMAIGQoBitC9ZsgS0G4DK61dtxC8uNXD25HkDzfAjm0vnL+PBPY2nqYOLxkvzx15cEx8QIEUmESl3TZp4R4a4fYY05JQqUlpJbvtYKJCJ+fU71\/DpyyeUdimtePqXgeetq+Ka2sj7n4jGEJFnOiW3TZE8BaYOd1N2EbTB2m1rlJj2wfHrI9Ln5j0lxv3IbkirhB2aPHQqaGfChDnjxBwx9ZJI+574FuI9QYYLUtrTkT5t+h+U\/yRPKptUKia68n36\/FGER9KtS6iEBQqP+o\/vK8INdWnZFTuX74b7rssifr8ck8paszvL++sXWSXOH5S5JFHoHwrl0b5ZB3geuPHDIQ04sn\/YZ80bTCo7KREwxQenGOIU\/5+U\/pIqlK+A169f48XLFzh79qxeG\/VZvmI5SpUthUwOmfBLtV+EIYGe26g8u5ky6YdDsbOzw\/0H96Uo4c5Fn3n37t8DJXrVJblGqvv46SP6DeyHvPnzIkeeHOjTv4\/aNSryqoO5oIcAfU7Qcyq\/j6ixdqNa2LN\/D2rUr4Fi5Vxw8MhBMebs+bOo17QusjllQ\/HyxTB24hgEBASIthWrV6BhswaiLF+GjR72Q92QUUMwcdpEuF+6gGr1quHBwwdo2rIpsufLhgrVyiuGiJ1yuEme\/7fkf0JuMrwRrkyMACPACDACjIA5IMAGAHO4y7xGRoARYATMAIF+\/frh2rVrqFatGj59\/ITfW3TF00dPY2Tlm\/7ZIvimd0wPK1urGJnD1JmqHrEmvhCp7DJ1ZZaUX67HxG+LUYhfonBJIYeM9X9K8f7PkyOvyAEg285cPC36XLzqDsecTsLTnypISe+UywmLJi9B9Qo1hAJ62ojpOHrmiJIgVzMmIn0mzZuIgnmdQWMpjA7Frqe4+DFJiZTQJETfvgVFeppc2XIJQ8kXHaU8PZvnlDA8hF34lEBRgmsMcQFKaJTj546hXdP2aKfkF3BUsKRn+\/b9W4IFyUaheAjjY2eP6rHVvaYxOZVwRLSLwDKZpXq89XqL3qN74oZiqIkIqfY1hR9RMZdiIn74ZY\/LOHHqBCpWDL4nBQsUROrUqUVy3QsXL+gZANatX4e+A\/qiTJky2LJxCx7ff4xtmzWJfUO+h3UTk1O4HdmuK6+3t7fupYj\/nyVLFlH3s7lI2UyKZ8onoEu0M0HmWOjSrQu2bNmCPr364OSxkzhx9IRuVy5HEQG6t5QfgrB+9vwZRo0fJZ6nurXqqhw9r3li4PCBoDw1uXLkQnq79Lh67Srqu9YT4a\/mzZiLjm07YvnfK9C2cxsxLk+uPDh55iRu39G8T+iZofBCVHf3\/l3RJygoCOs2rkM2h6zKvf+Cyx6X4NqqKezSpsOfI8YhqbKTpO3vbUFhrSJCoT2XERkXk32OnTgm2I8bp6xH+ZxgYgQYAUaAEWAEzAEBNgCYw13mNTICjAAjYCYI5MmTB\/v27QMlCP7y2Ru9lHAb\/n6GDdFDP473bt8vEHVpVtRMkI3KMrUqMa1CLCocjGGMVJgboxIjMvgo\/sOiu1xPZMZy39ARoLA9ubPnweXrmrAnJy+cQBmXMqJzyuQpUdDRWSSqpQp3T3exK4DK9CxRuJ761RqqoVSonhT4FA\/\/otI3In1oDIUPIgOCLlFiXWOltorC\/tu3bxgyaRDevHuDL96fMWXBZBG7v2mIWP0h10CJf+89uo8LSvJf8k4vmLcgCHMK\/0OhfP7dv01JPLxcDPPz13zu92jbU4T2oZ0VpPgfOnkwVmr7SP7d2vTAs5fPMHrGSLGj4\/7j+xiqyPfkxWPky5Nfdgv\/rLV4yvcXeRWXLF4SmzZvEkp33R0A1KdCuQrYuWun2Amg27Zr9y445nXEjGkzRM4ASnx646YmETHhRkR1RBRyR9KdO3dkUe98\/kLwTjh6ps6cOwMyQBBFZK7cuXPjgntwMmMat+B\/C1C0eFGRVPjgoYPo2qUrunXphgL5C+h5qAdFwUBE\/JkAhzxZkDFHBtjnzozCpQph6YolmDtjHrJlzaYHT9rUabBz8y6sW7UeBfMXxIixw1EgXwGsWf4P6ijGgq6dumG+kk\/gwOEDOH7qOEoUK4GUKVMKoxQxun7zOnx8fITxgMJREZFRytv7ixIuqpq4ppc2Ldti\/l8L0LpFa6xYuELUHz1xVJx\/9mJs350UmurR40dix6irq35+kJ+thdsZAUaAEWAEGAFTRoANAKZ891h2RoARYAQYgR8QIOXKokWLQF6OHu5XUK9SI5w7FawE+WFAJCtOHT2ND14fkDBxQuQur4nbHEkWZtFdqw+Dxh\/WdJcsFXrGpsSINKKqPcbU70ikV64\/QIuDfmXUr0oreQAuX78MP38\/UMLYssXKqczIGHBNCQNEbddvX1OMA5oEwO+83om69OnSq31lgepevX2FiPT5qISyoeS3FPZHl0Ljq9sel2WSdbnbSpGwt0yjkihauzCOKbseFkxYqCTi1eyoCEu+RjUbK57nn\/DbH7\/iyg0P9P99IAIVg6zgU6sQ1mxbjZUz\/xZK6CtKcmaimpVqYeaov\/BUyT3Qa9Qf4jyk+1DRZql4MhPVrlxH5G3YcXA7qjSvhPod6ije1lZwGzEDFoktRJ+ovJQvXx5b\/90qYv9TnH9dIqX\/lm1bRFvGjBnVppIlS4qwO6R0JyPHVc+r+L3b76Jd5gDI55RPhFeaPHWy8MK+eOkievftHWrIpaHDh+LfHf8Kj\/2x48bi7Zu36NShk+AXkbl69+qNAwcPYMyfY\/Dy5UscP3FcJADu2aMnbGxsUKRwEZHQmEIakSKZjAqSyHud6NWbV\/D+qr8TQfbhc+gIjBs1DhPHTsSEMRPQq1svFC3sgq49u2DH7u16A0qVLK0aXeg7inacNG3kqmdYrF2jNlIoCbHPXzgnnpFK5Svj+GnNTo2TytmliItiGCipGIdOC95Hjh9BkUJFYJfOTp2rfOngz7XMmTILr\/mQu0vUziEKMnye\/C4N0Rzrl0+ePhFzZsuWTdk9EX6YsVgXjidkBBgBRoARYARiEAHNHt4YnIBZMwKMACPACDACsY0AhVfYu3cvGjVqhDu37qB5nVYoUDg\/6jaqjToNa8E+q32URdq4erMYm7mAvkInygzj60BpATBxE4BUWpi6AeC7NnRKQm1S4\/j62MX2uigR8Ja9W4TX\/rfv31C8cAlVBFL4L1u\/VCiraQdG8UKaNuuU1qKPDKOiDlAKH5VQLlkyZUGE+qSwFiFrKO+ALvlEIVms7viflaXSTHqkU\/\/18zf+bJja7uJcDPvXHFISI78XdbSTQpcql\/kF90481K0SZTKuXN6ryatga20r6rYu\/lfsAKAEt7TrgujOseAY97TTolyJ8qhXrb5oo5etyv0istXmCKByy0at0KJhS7x88wKpleTFlBsgMiTtSvLzgsZSIuBxE8bphfiRPMkA4K\/sUtD1\/qe2Vi1a4czZM6jXsJ4wANja2mLMqDHYuGkjSNFPRHH83aa4YdjIYShUtJCi3E2BCeMmYO78uaJd96VWzVr4vevvYq68efJi5fKVajLiiMxVr049UKJfWses2bME6zq166hGhJHDR2LMuDFwLOAolMu0C0BS\/2H9cfvebXh98BKK1iLORVC5QmX07d5XL8Gt7B\/e+b3Xe+w\/vB+\/Nf0tvG5G00be8a5tXXHh6AUllE62UOX677vmqdGN6y87dmrXWQ8jeq81at4QE6dORL3awc9y5oyZ5RC8eftG7IShhNMhieoo5wRRNSURNIUUIsX8ydMnUaZUWdBOgvmL54v2I8cOo3qV6qIsX9KkSSuL4myh5PvQff\/rNYa4MLbvTvqcJuLY\/yFuFF8yAowAI8AIxHsE2AAQ728xL5ARYAQYAfNEIF++fLh69SqmTp2KGTNm4JrHdXFMHj0NToqyonL1SspREUWKF46wF9je7fuwa9seAWjpDqXNE9gIrloqxExc\/694V2o85mUInQgu32i76SoojVZIExKMvNYpyey2vVtRyElRxiohfCQVLeCiqP3\/w6bdm1AoX2FQCBuipEmSImvmrDh3+axQOsv+dx\/eVZTi70SugIj0IcUhxbh3v3IBrZUkwpI8tN7v8trQ57CSAEd2npCK\/4iMp+dXKv9l\/5A7IGQ9nWcumSEwXTN7rRIX3VrZWfEW81bNRUnlvsn7IfsT70zpgxWqsj6q5xLFS+Dju4+hDs+RI0eobaTwX7NqjfCm\/\/DxA8jbmqhF8xZ6fNq1bYfWrVrj6bOnyGKfRXyHtW3dVq8PXVB4HjIgkAI95C6EiM7VpXMXdO7YGU+ePIFtKlvY2miML8SfDBhHDhwRoYwsrSzx5csX5HfWhE26c\/8OBvcZLMLOULiiQ8cOYfaC2Xj4+CHmT5+v56VOvMKj\/sP7i3j4pmIAIIU7yUo5FMIimcPhZ8muaTwZ3ch4MmHqBLx99xbplHj8RIkTB3uwy\/tCiZlD0kflWcqqDR9UpXJV9BrQS+QLOK14\/f\/esYtiAEiLoaOHijqPqx6YNtFNj0V0vjeM7btTGsHlDhW9hfIFI8AIMAKMACMQjxFgA0A8vrm8NEaAEWAEzB0BSu42cuRIDBo0SOwI2LBhA7Zv346b126JY\/6M\/yGldQoUKVYYuRxzIWeeHMjjmBsFCxdQEt39mBhuzbK1AtLspbIjo1MGc4c33PVLhYGxef+FK3Q8bgzP2zS+LJs8Wul5o4O8qwMCAsTZP0Ap+ytl5Xzz9k3tcg0TComU0ZTcd9eRnej8Wxc9KOnzh4wAuw7vEEnJdRu7te6BoVMU5aiiiG5cq4kSJuUlBk8aKBLhFi3oIrpGpE\/H5p3Ra\/Qf2Lhrgwh3s23fVizfsEx3KoOXE2h3kciEvAafwIAMB3YdjH5\/9kaxukUV5X4mJQTQU+TLnQ9zxmm8nQ04lUFZUZx\/Ges\/LMakFA4ZEz60vvQchlT+6\/aLyFxkbKKQKWFR+vSacFa6YWGO7TkG3XBUFcpWgHMBZ3Tt0xVZMmfBsP7DwmL3Qz29t+V3yg+NRliRN3dezJ46O1zJKJ8QUeLEEfs5fllRzFMonzSKt35oRPc5e7bsOKUk9G3fur3ahRL+ktEgv5PGMEPJguk+LFq2CBRWqnjR4qAdNKlTpcZkt0ki9E+hgoXU8dEtGFsIoPPumpCQzs7O0V0aj2cEGAFGgBFgBEwKgYj9xWFSS2JhGQFGgBFgBBgBfQToh3GDBg3EQUrB48ePY9euXdi9ezcoeeLxwyfFIUclSWIBl1IuGD5uCPIXyier8eDeQ1Eu1IB\/OKqghFFQPee1YQ7C6Gb01VLpZOqGDOmF2W9AP4waM0oo02ht8qAbIdcqy3StG56CMNDtE9GbpzuGlEGk+KKzOJTQRMSXymSkEOcQ8+iOpzL1CQjUKPfp\/UxHYGBgRMUR\/RQ2BqNSRUvh1v2bSvz\/sj\/wpDBAZy+dUZMDyw5NajcFhe6ZqiTApeSzFI6iRKGSWDR5sRrKJiJ9alSsiWE9hmPm4ukiwS0ZJLq07Irpi6bJqQx+ls9EREOAGFyASDAkZf\/evw\/gxesXuHH3utgxkTlD1EPAhTm18swS6T6rYfaNxw0PH2q+IwkHXeW\/XHKT+k2w7+A+rNu8TjUATJo+SSSEnjlppuyGE0ps+rGTx2LT35swZeYUnDp7ChTGrGr9qli9ZDUy2GXA46ePMXriaFzxvALaLZEze05079QdTRo0UflQ2KBlfy+D+2V3kFK7f8\/+IvzNsvnL4GDvIPrt3r8b8xbPw+27t8XuHEqmO27EOOTOmVu0u81xE58xFMrnf8v+J5Iv11US7E4aPUnwXrxysVDit2zWEt06dhNjLnpcxOBRg\/H3or8hQ\/Ks2bAGS1ctxYNHD5A7V24kt9TsCJI7alShlcKW7VuQKKHGu99fySFy7OQx7N67Cz279dT7TNYdQ+W+f\/RF74G9RVif5q7NRdifP\/r3hJOjE0oqCYAlUYLfv+bNQnGX4kq+C0tRXVaJ8085Blo2b2XQ59jYvjsPHjko1lu9un6YI4kNnxkBRoARYAQYgfiKABsA4uud5XUxAowAI8AIhIoAKdqqVq0qjpkzZ+LZs2e4dOkSbt26JQ4qU+igM8fP4rf6rZUY3otQTDEGENk72OPFs5d4evkpshbTKA9CnYQrARk6R6sYM1VIvmsNGKau2EuXLh3evXunxoE21fsRGbnpnsmDlNZ0kPGAjAV2aewiwyrcviN6jQIdoVH3Nj1AR0giuTo274T2zTrg+avnsEtrJ5SPuv0i0of6t3VtjzZN2ylK7ufIaJdJrLNb6+66rAxaTqLE\/yaiBLymQuT9T4e5UMkSJXHq+KlwPf9jAou7d+\/+lC0lnd26c6uIWU+JZh8\/e4xnz5\/pjfuk5MK4cu2KMBbWqFID5y+eR9C3IHRs01GE1aFQQ1XqVUGeXHkwoNcAEY\/+n43\/oGvfrsLT3TGPIzxveKJ99\/ZoULsB5kybg+OnjuO39r\/Bx9dHhBOiCXfs2YEOPTqgzW9t0LVDV9y4dQMr165Eu27tcGr\/KSETyXbg8AGkTJkSndp0EruISJF\/594d8XnarmU73Ll7B6MmjEI5RYleMF9BEQqJ5KddR0QUX3\/slLGoX6s++v3RDxR6hwwHRDKnhrjQvvToE\/z+tba2hn0me4wZPhZdO3XV7fZD+bdmLfDx0yf8OXEsBg0fKJL1li5ZBmuWrVHkt1b7V1MMADNmTxeGAllZtnRZYQCorrQZlKRxzAjiAX78+BH7DuwT3wt169Y16DKZGSPACDACjAAjYOwIsAHA2O8Qy8cIMAKMACMQowjY29uDjvr1gxPr0Y\/Ejh07YsuWLXCt+RsyZEqPClXK44anDB8SoyLFC+YGdLCOUzyCgjQJA6U3ZpwKE43Jjx06hlOnTsE\/UKOQkt725FUrwwPJRME0jWhX2r5p1091CRSjjuxL1xElXQ\/QhIkSCkU3Kb0SKfGrCVdSzNN14kSJkTCxoqhXQsyElEXORfNTH\/KepeSnFL6EFHNUjggtWrIIg4YMQjoDGgAiMm9YfWjtlPQ3PIpIHzIWxIhneyiCyZAl3xSFLJMGAY3\/v\/GgQe+H\/Pk0IV9iU6rHTx7\/dLr8jhq5PDw9UP2Xn3thVypfCctWLxOGO5kD4ODRgyJR9sK\/FopwQjRpWSWZbakqpXD+0nmQAWDEuBEiAe\/8GZpwT7Wq1VLydXiL3QdSyDPnz6BKxSqYPmG6qKpXq57YjTNx+kSQEcLG2kbUv3n3Blv\/2SoMDlRx9ORRsUvh\/JHzyJ41u+hz6PghkaiYDAC69PnzZ7jNdYNrQ1fMddMkaq5bsy527tuJl69e6hkABvYdBDoiQk\/v6htNaAx9DnT\/vbswFFB+iAzpMwgjQEh+5Pn\/7ul7vepO7TqBDl36pdIvP\/Sj9kc3H+l2C7csjehGoP\/H9l3bxW6OGjVqiL\/7whWcGxkBRoARYAQYgXiGABsA4tkN5eUwAowAI8AIRB8BSo64du1ajBgxAitXrsSrF6+xQQlFIMkujx0enH6AVFlSiUPWG9PZ39sfdCRPm1woWkm2L2++aJSnqTWhB2JSXmNTiEV1rVLJKZWeUeUT1+No50vlypXjWow4nz8oUKO0Di3sRpwLZyICWCS2EJKSRzaTFgGtlzMZa8yZdI19YeEgPd7lOax+4dVXrVQVl05cEl38lBA59x7cw8XLF4UCnOLakxxXr19Fi6b6yZMb12+sZwCYOHqiOo3XBy\/cuntLhOihSuIjDQBp06RVlf\/U5pTXCRYWFqryn+oyps+IBw8fUFGPPG96ih0BRZyLiHBFslEmoY5s+DI5PrwzPYdZHbKG1yXW2uQzoezHirU5w5roxs0boqlaNQPvcghrQq5nBBgBRoARYASMCAE2ABjRzWBRGAFGgBFgBIwHAVKYTp06VRyenp74559\/MGXKFKFY2DN+ryqoUzVHVBtYVSge1MpIFlZ3XoP3j7zUUeThbJvZFpnyZ0T5ruWQxFITckPtEE6BfmzvmbAXd4\/dE72azmiMlOmtsanvZmEAsEplhc4bOobDQdO0d9I+0d91ZtOf9g2tQ9z\/1A9NqsjXyUSN5LnOZPoIBAZpcgUkVHYcMEUNAWkMM4UcAFFbYeRHSSWnuRsAChbU934PDcknz56IalKIR4dW\/rNShNG5e\/+u8KInfnQf6Hj1+hUoIXGxosX0pqBQW7pEXv7jp43Hnv178Prta9ja2IpwO9RH3lMqk3Jfl8h4QYmMdSksgwZ54hMNGTNEt7ta\/urzVS1zIWYRuHzlspjAyckpZidi7owAI8AIMAKMgBEiwAYAI7wpLBIjwAgwAoyAcSFASo1JkyahS5cuWLhwIW7cuCFiEx89ehQ3D9xCKodUKN5cX9EQ2RXY5U6Hok01CpEA30ChfL+8xQNeT7wQGSX8u4fvhfK\/RKviyFfdCSnSpcC5v8\/j6\/uvIGOATUZNSIPIyhfp\/koogvhA0gAglZ7xYU3mvAaptDb1kE5xeQ\/leyHomyY8VlzKYixzyx1PFILFnKlA\/gI\/Xf7eg3uRNUtWpE6VWu0b0guekvqGRxu2bsCAEQNA8fcnjpooFP2EvUM+B6G4T5UqlRhOuQJ0KSTf7v2645z7OQzsPRDlSpVDPsd82LhtI3r018\/bER0DMBkViHas3wHnAs6qOO26tsORE0dEmB61Mh4WVENKHL81KLSj+yV3sXOjQoUK8RBpXhIjwAgwAowAIxA+AmwACB8fbmUEGAFGgBFgBFQEsmXLJgwBsmLv3r2oVasWTi87A0trSxSorYltLNsjc06RLiXy\/pJXb0hKRXl\/+K+j+PRSiUUcQcW9zwcfwcOpqqM6xuejL1JnS43MBTPr8eeLnyMgY+CzwvjnWJlCDxkCyNw9taNzryhXA9H372wAiA6O8XEs5eMgIqXvoyePRAx+3XWeOH0CO\/fuxOC+g9VqCoXz8dNH9ZoK5NWvS6TcpwTeknbv3428ufNi2rhpsgqXPDQhgahfsqTJUMCpAChXACX4lUTXkgICAnDo2CGRlLdL+y6yGtdvXhdlQ4W4yp0zt+BHho9SxUup87x49UItx+eCsifDKJZ34eIF8QyVK1cuwjljjEJwFoIRYAQYAUaAETAQAmwAMBCQzIYRYAQYAUbA\/BCoWbMmpk2bhoEDB+LQzMO4e+IeKnQphzTZ0hgEjGQ2loJPAm34mWdXnuPEwhNoOLmBMDjISdb1WA+XZkXh+9kPlzdrtrjvHLtbhBAig8BzzxcI8g\/C2u7rUOy3YshdPhfun7qPixsvw+uxFxJZJEK6XOlQQQk3lNoh2CtT8qfzV4XPqSWn8eTiE3wL\/IaMSniiit3Kq0YG3b5Ulo6wxvLjP6R8Eb2WOwDCCu8QUT7czzgQkCGA+H5G\/X5I7HQVslHnFk9GKgpvInPfAaB6eytYVKlXBUP7DUWpEqXg5+eHw8cOY+b8mWj9a2sM6DlA4EUvzvmdsWrtKhHOp37t+jhx6gRWrVultlOBjARXr10FJe0t7FwYJVxKYN+hfXC\/7I6ihYri+q3r6N6\/uxjj46sxgvf7ox869OiAdt3aodWvrYThgXYOSKIwf4ULFsbRE0fRtkVbpEyRErv37caiFYtEF5LZEJQze07Quv7Z+A8c7B1AeQg8rnqIvAXEP0mSpIaYhnn8BIGkSTU4y8+vn3TnZkaAEWAEGAFGIN4hwAFt490t5QUxAowAI8AIxCYCAwYMwOLFi2FjY4Mn7k+wpstabOq\/GWdWnhVJeCMqCylOyNucDv+vAXhz9w0u\/OMOh6JZYG2n8ar0\/+qv1L\/F96BgT0ji\/1rp6\/PJFxmcMiBH6RxiSspNkLNMDjgqOwFSZ00Niv1fqIEz0irGCTJU7ByzWxgqqvT7BQXq5MdbhccuxWgQGpFMWwdtxTOPpyjdrhQq96yIr++88U+3dSK0UGhj4kudDBkjw57El3WZ6zpUg05CzgEQ1WdA7ob5rlV6R5VPfBonDZ3mvrNEGgDIENK6eWus2bAGletURh3XOjhw9AD6du+LaeODvfbpGWjWuBka1mmIYWOHoUDJAnCb44a\/pvyl93j82vhXfPz8EfWb18elK5fQwrUFqlWuhkYtGiFLvixo3q45+nTvg0rlKkHGea9Xqx7+N+t\/ePzkMTr17CR2JIwZOkbwtbTUGNeHDxgOMgoWLFUQuQrnwvI1y7Hp702g+3jR46KeDNG5mDFxhpB32J\/DkLtIbvwx4A+kS5suOixNZqz6TMRxEmDrlNYCs0+fPpkMdiwoI8AIMAKMACNgSAR4B4Ah0WRejAAjwAgwAmaJQKdOndCoUSOMGTMGCxYswPOrL8Rx58gdNJzUIEwveV2wHp55iLm15utWwcrWEk3cGunVhXdhp3jx+yrhfi5tuozcFXLBWkn+S\/To\/CN8C\/iGfDXyiesr2z2RtXhWVOlTWVzTjgDaBXBmucZokTSFvkfitV3X8V7ZKdBmaSukyqKJrZytRDYsb7USZ5X8ApKPYBbPXqQBIDoxoOMZJCa9HBnWw9wVtdG5iRI73gEQHRTj91gyAEhl+7v375DEIgmsrTXfRyFXbpnMEovnLMbMSTPxxfsLMmbQJNxt8KCB2rViuYp4cOWBCBWUylbzHbRq4SqQtz\/Fds+UMZPo27xJc3UMGQIql6+MJvWbqHVyB4DkUb5MeRzYdkAkALZKZgUZwuj1vdfqmFmTZ6llWVj5v5WyqJ53bdylliuVr4S3D96q1zbWNpg3fZ5Y48vXL8VOgKZtmopkxWonLsQoAr5+voK\/NP7E6GTMnBFgBBgBRoARMEIE2ABghDeFRWIEGAFGgBEwPQTSpEmDOXPmCCPA2bNnMXz4cFy5cgVrfl+LQg2dRWidHKWzI6RyXa40TfY0KFBLo6CnEDtf3njjzrG72Nh3M+qPq6sq82X\/6Jwr9aigDvf97AuvR174+FzjFRfoF\/iDjK9uvUb6vOlV5T8NTmKVBDnL5sDLGy9VXrqFBAk1Gf\/++24c8X91ZYtMWSo5EybgTZORwc1Y+6o5HRLxDoCo3iNpAPjvP\/2dSFHlF5\/GmXsIoNDuZdo0aUOr\/qEuRYoU4cZmJ2yl4l4OtrK0Ah2h0aQZk0DGh23\/bBPGhzdv32DG3BkoU7IMUiRPoTckfbr0etcxdUFhhygBsjmR3AEQxxsAcP2GJreDvb29OcHPa2UEGAFGgBFgBFQE2ACgQsEFRoARYAQYAUYg+giQIaBOnTooW7YsunbtivXr18N9nSaUQJLkSfBLr0o\/JPulWSnJb+FGhfUEoLj+y1uvxPW9N1C6bXDyQL1OUbjw9\/bHqWWnlTwAD+Dj5YOkKZMipTbMUGjsPr\/6hJRp9RUm1C952uTwPukd2hBIj3kZGiPUTiZQqRoAlJAQTKaPgAwBJJXYpr+i2F+BNIapir3YF8HoZpRYmLsBQE2ybQQG05GDR6Jrn67I45IH9pns8fjpYxTMVxDL5i0ziufHXJ4Zuc64BJ1kWL9pvRChVq1acSkKz80IMAKMACPACMQZAmwAiDPoeWJGgBFgBBiB+IyAra0t1q1bhx49emD79u24ePEijhw5gr2T9uPLW28U+9Xlp8snpTwlFH5+9bnoq\/Gph14OAMoLgEg62e+bvB8vrr9EydYlYF\/YHmmV3Qe3Dt7G\/qkHQpUpWcpk8FOMBiHJ\/4u\/YrgIPayD\/NGfIK7d\/kIKHclrNgBEEjAj767eTyNQUBo5VGGKJ5XcnAIgTIjMtiEwMFCsXe4Ai0sgSNl\/av8pPH\/xHJ43PJHfKT+yZM4SlyLx3HGEwNoNa+F+yR12dnYiXGMcicHTMgKMACPACDACcYoAu7PFKfw8OSPACDACjEB8R6B8+fKYNm0aDh8+jHnz5oGUZ6eWnMZjJWHwz4g89T+9+KTmEEiczEIM8fvspw71evxBLUekQOGFHl14rOw2KIQijQsjXY60QqZ3D9+J4d+\/\/RjWg5IIU1JiSk4siRT8zxTDRJrsoYd3iC\/KwW9aPBJxyBh56\/ls5ggEGwAiaXk0A9wkNmaw1FCXSAl1iYwJh8yZMqNm1Zqs\/A\/1jsV8ZVw7A5BRarLbZLHQ6dOnh5mLIuaR4BkYAUaAEWAEGIG4RYANAHGLP8\/OCDACjAAjYEYIdO\/eHePHjxcrPjTzEIL8g9TVe7\/9gluHb2uOQ7fhsdUDm\/pvQVBAEArUzi\/6UZ4ACq1zdtU5fH71Ga9uvcKhWYfVcDsqs3AKlOw3fV47PLn4BF+9voJi\/t+i+bZcEaN0ZZJsyFjw37f\/cNDtIL6+\/6oYAvxxcvFpfHz2EflrOMlu+mdpAZDbFvRbTeZK9RjnEEAmc8\/CE1RVRimGOKaoIWBMyt2orSDmRpk7NnIHAIfYirlnzNQ4y+\/QuNoM+O\/Of\/H02VM4OTmhZcuWpgYfy8sIMAKMACPACBgMATYAGAxKZsQIMAKMACPACPwcgSFDhqBw4cIiye\/R+cfVAW\/uvsU+JTyQOKbsxwUlb4CljSUaTKyPjPkyin7JU1mhUs+KeHL5qcgNsGXQNhRuWAg2mWxUPhEplGlfWoQRWtJ8Gf7XaBGu7vBEoykNQWEbKOFvSEqeOjkaTqqP94+9IMc8Ov8IdcfURmbnzCG7i+tg\/b9pK1plotOYVmgtWrIItmlt8X\/2zgMuiuOL47+oFHuJDVTEgqIoYsOu2HvvGrtGxI6KPfYY9W\/DHls0tkRj7xUb9oIVUewVGwKKYvvvm2PWO0QEBO6Oe5PP3u7OTnnznbvFvDfzXkBAQKQ8Y5PZt39fVKpSKTZVuQ4TYAIxIMCGJQ0sNcYGu9iKwbcncRf99OmjGKCMHZLQoz3ifUR02bVrV4PamZLQHLg\/JsAEmAATYAIcA4C\/A0yACTABJsAEEpAAKZKXLVsGZ2dnXN5+GR+VFf6kfCcle3RS4bqF4FCroGJACBaBe2lHgNwhQPVzlrBB3z29dZqq5l5V5z5H0RxoNael2AGQzMIMFkpwYkp9dvVSy9UaWlO9pgvrQtZov+QXvAkMFfkp0iXXef7VzRcLwFePOIMJMAEmkBgJGHvMkx+dE94BEH2CUiGurpCPflWjKind6Olrd4zsNzAw0Ki4sbBMgAkwASbABOKaAO8AiGui3B4TYAJMgAkwge8QcHR0xJIlS2BhYSGC7\/7deSWe3tT44P9OVfGYlP5prdLGyPVPZO2S0UEq\/yN7HlkeKf6\/q\/xXKn7R\/xv7DgCNn3OpRIiMCecZDwGpbOP5NJ45Y0mNhwAbAKI\/V3JX2edPX8fdiX4rhl9S7grRR2DoR48fYd36dQJSmTJlDB8WS8gEmAATYAJMIB4J8A6AeITLTTMBJsAEmAAT+BaBNm3agP6H1NXVFbt371Z86h9F44kNv1U83vLn1JunE4sgso46reyINJlTR\/bo23nSAvDtEgbzJNvPNhg9YRS6uXb5SqbPn8INAHpwYLx121bMmjML165dg7mFORwLO+L3cb8jX758qpznzp3DzNkzceToEdjnt0fjho3RqWMnSOWSWlC5OO9zHv0H9keTRk3Qu2dvBAUHYcjQIdizbw\/eh71HoUKFMPq30ShRvIRa7djxYxg3YRwuXryIjJkyokG9Bhg+dDjMzTW7RurUr4OB7gOxY+cObNu+TdRr0rgJRo0cBTMzTdBqtTEDuGBXLXE5CRwEWNKUrztTNyxJZW9k7x\/Jis+6BD59NmwDwN4De3HwsJcQWn6\/6axzrfx9FHnKDkc60\/zTQeb\/ew\/ui7pv3rxBoxaNxDW9h7UPyiTjrPZBeUop+hBl6V72S2dRX+u5fLfLcnQOeBaAkNchaNiwIWrXrk1ZnJgAE2ACTIAJmCwBNgCY7NTzwJkAE2ACTEDfBHLlyoU1a9Yge\/bsuHv6Lp7deoaMuTImqFjVB1aDXIEYpLgV8l58DBT0N6t9FlWO5Gks1evoXqiqQePeAIBP4Zq9hF69uGnLJnTo1AEdO3SEWw83XL58GUuXLUW7ju1wwvuEmIY7d++gWatmKOpUFDOmzoDPBR8MHjYYadKkQfNmzXWmyt\/fH01bNEXpUqXRo3sP8cxjsAcOHzkMjwEe+Pnnn7HkryUghb7vJV9kyJBBtFe3QV1Ur1Ydc+fMxb179zDxj4m46nsV\/67+V7RBhoFefXqJ7\/CA\/gNw4eIFzJ47G5kzZ0afXn10ZDCEmy87AHgTbOznw8h\/1LEfeBQ1NW88UkyacpI7AJImTWrKGKI19vsPNYrxVClTRau8vgoNHDoA98OV+D8iw8ePHxVDwsEfaSLWdatW1XWDGOuGuCITYAJMgAkwASMmwAYAI548Fp0JMAEmwASMn0D69OlBwek8PT1FMN4qfSon6KDyudip\/T31fyoMAOTv365iXjU\/VhdSca6HlfOxkvdbleQ4Elix5+3tjWpVqwnFPonWsH5D4TKKVuMHvgpEurTpxMr8dOnSCWU8rbasV7cenj57ioWLF+oYAB4+eohGTRvBqYgTli5aimTJNP\/8O+p9FC1btES3rt3E6MuULoMx48bgScATYQAYNmIYChcqjDUr16irPXPa5ETb9m1x8NBBVKpYSdQjZf+u7bvUMpcuX8L+\/fsN0gDwUQakVAJec2ICcU7AxL9Wb9+9FUjlOybO+SaiBuVuCausVgY9qrCwMCFfWeeySJVKMVbQinz6L\/xvo\/ZKfjKw0jO5kl+51FzjE+xy2yFzpsyiLYqVob2an\/6ZIHYNKMGj1d0D4X9zZTmqSH2JPpSzzFfPWv\/WIBlC34Zi0vRJIGNUly5f7+4TgvAHE2ACTIAJMAETIsAGABOabB4qE2ACTIAJGCaBbt26CQPAjcP+qNzbRVWkGpK0Dy49xJE\/j6J0h1LYM2Uv0mVLi3qj6sJS2R1weecV+Gz0QeCDV8hgkx7OvzircQJI4VqrSh3MnDsdwz1Gwuf8BTgVLYL\/zZyCV0pQvpFDR+OG33U0aFwffdx7w8paowxpUKsxXHv9is0btuDAPi\/F7Y0d2rRvg9a\/tNTBsmr5aiz6cwlu+d+EXf58GODRHzXr1FDLkPJi8oQp2LNrL27fuoOs1llRrUZVDB81FClSpFDLaV9cveKL34aOwvlzPggN1QQ9livHZbnvuecZ\/\/t4BAQEwHOGp6wilOajxozCxv82ghT3UaVJEyepj1+8eCFW3dMqfkqhb0KFAYBW39evV18oTGTh6f+brvP9ITc\/TZo1QVBQEJYvXa667qHyZBCYM2+OGGOd2nVABoD5c+eLpkjRcvbcWeHuhxQsMtWtUxepU6XGiZMnVANAhfIVdPrMkycPbty4IasY1FnOowzAaVDCGYkw8uugWfNuJELHs5hSGar9W4nnLg2yeXIlRokNAN+fHvmdIYW3IScp58TRE1HQvqAhi6oj2+s3r4UBwNLS8pt\/63Uq8A0TYAJMgAkwgUROwLD\/xZHI4fPwmAATYAJMgAkQAfK9Ti5YQgND8erhK4OEEvb6HZ5ce4J90\/bDupAVzFOYC+X\/mbVnsW\/6fqTLnh41PKoha0ErbPltK+6df6AZh6IlPHfmPFo0ao2ixYsKJf+lC5fRqW1ndPqlCwoXKYR+A\/sqq8z\/wZI\/l6pjv3TxEvr06AdyG7Dk70Wo4FIB\/Xu5Y\/eOPWqZuZ7z4N5nIPLkzY1ZCzxRwrk42rXqgG1btqtlev7aGyuWrULTlk2VMjNRumwpLJy3CLNnzFXLaF9cV4wRNV1q48WLlxgzfhQyZcokHm\/YuEEtRu55funwCwoUKICZM2aiY\/uOwl0OueeRidzz+F33k7fi\/CrolfDDL1d+6jyMcEOr\/N0HuSO\/Q37kzpdbrLq\/eOmiKCVXWN7wv4GsWbLq1IyogLx16xY+fPwA6nvNP2t0ys6aOQs1qtXAgoULUL9RfdgVsMPvf\/wuVliS8YKMH9ZW1jp16MbKygoPHz5U8+m7q50sLSwV10mG6ddajekgtdjagvM1E\/hBAoauzP3B4X23uny3JU3CLoC+B0vGSAl5\/fp7RfX6XBpNjc2oQ3+HKL19q9mVoleI3DkTYAJMgAkwAQMgwDsADGASWAQmwASYABMwbQKrV6\/G8+fPYZHSHKkyGq4\/YFKeFqpTEM5tncWEvVOMAidXnoJ91fyK8r+6yMtbIS\/evHituDO6oE4qrSBs3+kXDBjsLvJePn+B2TPnYvjoYeirrPqndO\/efbFKn\/JkypbNGn8unS9Wl5erUBYPHjzA0EHDUKN2dQS9CsLUydPRXPGBP2v+TFGlnuKvPuBxAMb+Nh51FV\/2FHTw2tVr8Bg+EJ27dRJlGiiK7gvnLuDUiVOyG53zH+MmwzK5Jbbt2QxaObh44VI8uP9A+LYn\/\/YUiDc67nl0Go1wE6jsfPhr+V9o3ao1sllnE0\/fvXsnzilTphTn7j2648SJExjsMRi0wt6hoAP++fcfuPZ0Fc9J0Ui+o2llv3YiZUfY+zCkSZ1GZGfNmhV7d+4FufMZPXY0aKU\/KfAp0S6Ev5f9jZcvX2L3nt34b8N\/mPy\/ySK\/SyeNywSSNWJ6GfgStjlt1eyIRgf1gQFeSGWWqStqDXBqEoVIxvRbiA\/gX1xs8Rqz7\/HNkS0Hrvtfx737d79XVK\/PjfWdSa5\/LMwt8C7sHYKDg5E6dWq9cuTOmQATYAJMgAnomwD\/60zfM8D9MwEmwASYgEkTeK2s\/uvXr59gUMG1ApJZGLZtPluR7Op8Pb3xDGGvw5AlfxY88QtQjww5MyDkaYimXLj3mDLlSqv1CjgUENfkikcmK6usuOl\/S96Kc5MWTXRcy9StVwf37t5H4MtA0A6B4KBgOBVzgo\/iqkce+ezzKe6AbgmDCrn4OXTCSyj\/yQhx5\/ZdsTuAFBpkHIgseR85hjJlSwvDAbVJ7nYokWLv5MmT4prc86z7Z524Jvc85Etf2z2PeBDFB\/nJJhdBZ86eUUs9evQIWbJkARkAyG3R3n174drdVQTsLeRQSPR\/+cplUV6usrWzs8Op07qGjHnz56FYyWKq66IsmbMIhf64MeOQNFlSDBo8SLRBhoIuv3bBtu3bQHEoKBbAP6v+EYp9cv1jYWEBClJ9+OhhVUa68L3mi6dPn8LBwUEn31hupDLL1BW1PzJfKjvlN8VJQ4B25VBS2WiyTe6TdmxRYgPb96deGmmlm7nv19BPCfndNsbAzvnt8gto5C6PExNgAkyACTABUydg2FoGU58dHj8TYAJMgAkkegI7duwQvuKz5MsMh1qG7183daYvOxSCnmhWn3vNPvjNeZLe47OGrzqnglKRYGOTQ60n89QM5cI6PB6AzMuUOaO4JEPB3Tv3xPXQgV92DMhydL6nPCfXNOfOnMPEcZNw8vhJRekfityKuyBS6qdMpVlpr12HjAK0E2PHtp3i0H5GBoR79zV9knuesePHCuX5kydPhII9R3bNWKSyRLtuxGsKhEjK9Yl\/TAS5yiCF\/\/IVy1Wf+ubm5ijqVBT7D+xHpw6dxMpFijkwb8E80dTbUI1Lg759+qJdh3ZiZX\/3bt1x\/cZ1EQC4d8\/eSJ48uU63xGLs6LHo068Ptmzbgvp164vVkRT0l9wcFSxQEF4HvUCui6g+pQH9B6B3394oX7a82K1Abn\/cermJsqVKldJp31hupGsiU1fUGst8GY2c4bYQU\/9esQEg+t9Y6VJHGnSjXzNhS0qjabKkxqc2cCjggAuXL+D8+fMoW7ZswoLj3pgAE2ACTIAJGBgB3gFgYBPC4jABJsAEmIBpEZCK2ndvwvDi7guDH\/xPWgELLVNZCHmbTW8Kty2uOkfjSQ3Dx6IxAUhlR0wGGBISvosgvNJLZeU\/pRw5cwilO11v3rURtx\/7f3U4OjniyZMANG\/UCtTO9NnTcNHvPI6fPSriDlDdiInmgla+d+\/5q9oexSigNHL4SIwYNkJck3ue9evXo1+ffjhy8AhuXb+Fnj16imfaH+\/fawJiyjxytUOJVsfOnTUXr169Er79O3frjMKFCmOO5xxZVPT3\/sN72BeyR848ObF46WIRPJjqnj57WpQjJT7tRli0ZBEKFC6gBFJugKJFi\/vqy1cAAEAASURBVKJr565qO9oX7dq2QynnUmIXAAUHHjpkKPLny4\/mLZsju212dHPthj69+qBTx06iWtvWbUE7B0aNHQVrG2uUq1QOadOmFXLI1ava7RvD9aePmtgEHATYGGbL+GQ0dQOA+vvS+jthfLOYMBJLxbqh75b4pLj+oxSZkT5hSMW+lxLFSojKGzdujH0jXJMJMAEmwASYQCIhYHym\/EQCnofBBJgAE2ACTIAIVK9eHba2trh9+zb+7roSdhXzokqfyiLArqETSm+TQYh40\/sWshX6Eiz2yq4ruOZ1XSO+3AIQi8GcPnkGnbp2VGse9z6BzJkzKSvWMyJffjuRv2v7LpQu82U1+uoV\/+DIoSOYNut\/OKa486FYAdNnT0V++\/yiPCldKC5Ahp81squNKxekvLPLlxc7tu7AuIljxCOp9Ph37b9wqeQiFPXknmfQgEHCPY+sH9E9D7nyIV\/52snPz0+9LVO6DC75XMLde3eRIUMG1We\/LFCpYiUc2HNAMWI8QfIUydXnLwJ0jUS08r9bl264e\/cu0qVPh3Rp08kmMHO6JjaCzKDxES+ZSIlPMQBo1S7tbrDJYaPjuoPK93LrBTdXNyGnVVYrYSCR9el877ZmV4R2nucMT+1bg7pWfZQr\/qE5xY6AVHKzA6Av\/GiHECXJ5ssT07qSOwDke9O0Rh+z0VKsFkrJzMxiVjGBS39W\/mZSMnRDRWRYGtZpiKGjh2Lv3r24f\/8+smf\/4sIwsvKcxwSYABNgAkwgMRPgHQCJeXZ5bEyACTABJmDwBMjdy5EjR+Dq6ipcslw\/eAP\/9l+Ht8EaNy+GPID02dMJg8WVnVfgs\/mCkPnOmbvwmnMIydNaCtF\/QuwtABvWbcTUSdPw8sVL7N21FwvnL0K\/QZp4CeTKhwL6rvp7DZYogXopLoDX\/oMY5jFcuA6ilfzFFV\/4pJDbtH4LyOf9k8dP4N57oIgFIH37R+Tbb2Bf4V5osPtQ3Lp5G+\/eaoLzkq9\/CgCs7Z6HlPPkNoiMAxHd8xQpXAQ3b97EgoULhBKfyiz7e5lOd6RQoWC6Ua2mp7gAUT2nBkU7trY6yn+djr5zQ8o6kuNbCh4pJzE19qSuulW+F5yYQFwTMHkDwKfwGAA\/8f9ifu+7Ra7fKJkbugEg3LhljEadtGnSona12iAD3V9\/\/SV48wcTYAJMgAkwAVMlwP86M9WZ53EzASbABJiAwRDIli0b5s2bB1ohXqhQIby8+xLn1p83GPmiEqRq\/yqwLWWLg4rSf0GThdg9eQ\/yVc6HgtU1gX5\/QP+Peg3rKgr+1chvWxC9uvdFd7df0bV7Z1WcqZ5TUL1mNQz3GIl8OQsoZfqgcdNGcB\/cX5TJocQY8Bg2ECuWrUSebPlQzKEkLC0tMGbCKPjfuCmMBmpj4RcNGitudaZNxPp1G1DKqQx8ld0ClBo3agyzcEUNuQP6nnueVi1biTqDhw5Gfof8mDx1MmbPnB3eC5\/0RUCuUP6WsUNfcnG\/iYPAjxg8EwMB+fsyRmVxQvN\/905jXDY3N2zDqoybYqzvzPat24upnTt3roi3k9DzzP0xASbABJgAEzAUAuwCyFBmguVgAkyACTABkydgY2ODLl26oH\/\/\/ngXrFEOJCSUTHkyoe8eTQDYiP3mKpUr0mcWShyAmoOro5p7FYQ8C0GarGnEqvv7Pg9EE+T7PyDokU5zTZo3Bh3a6Ve3bqBDOzkWccSfS+fj\/r37sM5m\/dUK9bTp0mL2Ak\/h7ufRw8ewUWIDRFyBO2CwO9w9+otV\/dbZrFQlfo\/ermpXD57fVa\/pgtwOdezSAQ\/uP0Dndl1x\/qwPrK2+uDiKjnseiiewdNFSeE73RHBIsFo\/sGGgTl98k7AEvuwA4DUwCUs+cfcmg38bq5I0rmZHGgBMnUN0eMoYMYa+A0COxVjntGK5inCwd8Bl38tYs2YN2rfXGATkuPjMBJgAE2ACTMBUCPD\/\/ZjKTPM4mQATYAJMwCgIBAUFCTllMEWjEFoRMqlZUqS1SqulgA\/3if0jWwDCB589R\/avlP\/aXMgtT05bG62+tZ9q\/HLTc7mCX\/dp5HdkSKB+ZfBi6eNbu3R03POkTp1aVf5r1+Vr\/RCQBgDtYNb6kYR7TVQEwgMimPrKd\/l3K0lS\/l\/M732\/34WF7wBIBK7VvjdWfT937aIx+E+bNk3fonD\/TIAJMAEmwAT0RoD\/daY39NwxE2ACTIAJMIGvCdSqVUsosi9tv4xHV3RXzn9d2ghyjNzVutxRIFf4GgFxFjEKAp8\/aTS1STgGQBSUon6kGlGYoQpKvh9MXfEtg2wnTcJBttUvxzcuyI0cJXMz82+UMIxsafz+KYnx\/jFvUr8JMmfMDB8fH5w8edIwwLIUTIAJMAEmwAQSmAC7AEpg4NwdE2ACTIAJMIGoCDg7O8PDwwOTJk3C6X\/Oov6YulEVN9hnUtEqFegxFXT73q3ImOnnmFaL8\/LSpzcFAX4V9AoUVJCT8RKQCkr\/O\/7YuncLSKmVRAlYSu4t6LtKh7hWdq68CX2DkDfBIoBkZCOm2JikHBMHws+aTHz89ElU0bSp7EKhnTDhbWv60\/QlnoQr0jWKNtnOl7alD+7PSpukaJb9Uts0HsqX\/VEbHz9+EDLJ8cg+aFxJaZzinFQZtzJWJQA0yZNUWbGdLKmZ2PFCu15IKZksaTJxb6Zcmyl5dE\/Xdx\/cFWOjfh8\/faw8M9McSowMupa7ZiJjlljzaE4oGaubFI30P\/4pXQCxAeD7LFUXQMoONk7xS4B2CTas2xALly3Exo0bQf\/O4sQEmAATYAJMwNQIsAHA1Gacx8sEmAATYAIGT6BGjRrCAPA2+K3ByxqZgC\/uvMCuSXvEo9i6xLAvkD+yphM8zzK5pehz9tzZWPrXUvgo8QAyZsyY4HJwh3FDgJTilPYe2SOOuGnVNFt5FfwK5ZuUiXTwwiigGgTMFIPCF+OAxqBghqfPA\/A69LVifEgmjBA0N\/S+IAOCmTA26BoWqFwy5bl6VowNSSOsSpYGOyGU0p6cb2kM+Ukxdsj0STGeUKJnScJXrMvmNPU03xWq8\/kzlaX2NIYiMp5o6iURRhHZ1rTp05AqdSpFrqTiOY2HytFZGH4UQ4vGEKOskFeap7yISZRVytFZXCsGG0oamb6UlsYGIYfSjmzr\/cf3ihHoI2inhqxPZZIlSaYxeIXLoDH8JEXKlClhZWX1VftUX7ZDvZJ7nw+KcYkU13SEhYXhw4cPoh96Tn34XvOlSwQGBWLn3p3iOqoPmi\/6Dnz88FEJ0K5514a8DhFVNAaxr2vLfDJ+UT2SSZWTjHLhxriva2qMapT\/9t1bIS8xsLSwVAx9IfC56KNjOJP8aS6JNSmRyY0cfbeTJlO+p\/R9DDeMJTMLN5qR8czCXMw\/lSNDmpm5GZJbJhf9pEiRQowzRfIUeP3mtRDRFA1mkc1NfOfVqVFHNQD8\/vvv8d0dt88EmAATYAJMwOAIsAHA4KaEBWICTIAJMAFTJ+Dl5SUQZLDJYJQo\/I\/dxOvnGuVGgYL2RjkGKXSDxvXhfeSYUHSRwubR40dsAJBwjPA8aOAgHD9xHKGhoWI3R8oUKcUoaJU9KRa1DwtzC5DC7luJFJ7aB5UT94pSkxSGdK3dnlzJT4pV6UZHKjNlH1RHbUerfcojZaV2f1SXXM5QX1L5S+Wu+19HUHAQslllg3UW63AZFAWuMkZSVH9S3CCpZ0WxTYrdT+E7B0iRKhWqpGClZ+IcLrNQCivXH8Ldl2iPkfqWidybSBcnMs8UzkuXLTWFYX53jL5+vmj3a7vvluMCwMChAzBo2MBwA4O5MJaR8UH7t67cKL9xzfuGmGm\/J+S9zJPvFPleEO8i5R2RTDFaSGOGzKP3RhLaBRX+vhJnskwpiQwplN6908Qq0H7HiAdG9lG6ZGmkS5sOV69ehZ+fH\/Lly2dkI2BxmQATYAJMgAn8GAE2APwYP67NBJgAE2ACTCDOCWzatEm0madsrjhvOz4bJGXhlZ1X4H\/kpuiGFBJrN\/0Tn13Ge9vtO7UDHTmz5BZK4w\/vP8R7n9xB\/BEoW7osihUthqPeRzGo7yB079Q9\/jrTU8tdenXB5u2bUbpYaUwfOzPBpSAjwZu3b\/DmzRvlN6McymprMriQS6V3Ycr121DleAv3Uf2EbCv\/XgkLSwthFHkf9l4p804oHWmFOSkf6aAV57TaXB7CUKG1+lwOUio\/6Z6u5aF9L8uSslPmRzTIaK8ipzaorE5bihGF7qmeWBGvGDxIJpkoX5TXKifLi7OWwUnWkWeqKw9ypUblKcmzLCfv6SwPekaySgWyKke4rDQu7bz79+8jMDBQ1Im4El0ooBVlsFQsi\/twZbFYHa+sjJf9UL8kA80PGUppVwGtkI9OolX11A7Nt6LaVlbIW4T3qVFER2xD+bMikhwn7d6gnSHkziuizF\/X1VSm1fwkLxnDwt6\/w7Vr18SugIoVKsKxsKN4Jo1hVE5cK+9+8f2TOw7IOKbMORnIIvteyvq0S4HGJoxiyvdb7J54H4bXIa9FnyQj9SG\/6xFlNoR7hSxo14IxJ\/p+V69cHWs3rhVugMjVIicmwASYABNgAqZEIHr\/MjMlIjxWJsAEmAATYAJ6JnDx4kUhQTbHbHqWJGbdX9l1FftmHFArNW\/VLNH4A5cBEGl1NCcmYKgEyH1KSIjGhcpWJY6GPgwApJhNlSKVOKLiJA0A5SuUR\/p06aMqys\/iiYBbTzesWLkCrZq1gufUWfHUi+E361KzEi5duYRaNWvBzdUtwQUmAwL9bsl48ub1G2EkEEYgMhQpRgravUN\/e2RsHXpGSe4qovxde3bBc5Yn7HLbYcqEKarLJipLxoi3itFNuE0io4U8yI1S+DW1Qc\/JGEFJNfwohhXnYs6J4m85uQFiA4CYXv5gAkyACTABEyTABgATnHQeMhNgAkyACRg2gbx58+L69eu4eewW8lc27G3qFKfg2c1nCLjxFOfWnRNgs+fIhjr162D8H2MNG3QMpCOlJiVavcnJuAlIxZZUdBn3aHSlX79lPfYf2i8yaUUxKf2kb3Xdkvq\/o3mgOZDKTP1LZHoSSMNmYvwtxGQ2yQUWJdqJoI9Eq9PTpUsnjtj2f8P\/hqiaOnVqlCtVLrbNJOp6lStWFuM7efJkoh4nD44JMAEmwASYQGQE2AAQGRXOYwJMgAkwASagRwL9+\/eHm5sbDs45hOxO2ZEyveFtvQ96EgTfvb44tuyE4r9AC5biYWGX105kypS4AuVK\/8dsANCaa740KALbdm3Dqn9XqTJVr1TDYJX\/qpDKhVzVrJ3H1wlDQBrDPoavKE+YXg2vl8\/h45fvecOT8PsSSSOONFZ\/v4bplaCYL+T+SboXs7CwMD0IPGImwASYABMwWQKa5WwmO3weOBNgAkyACTABwyPQvXt3uLi4IPRVKLxmeRmcgM9uPcffXVbi2F+6yv\/UaVJj9dqViU75TxMgFWW8Wtngvo4skEJgr9dedOzREWfOnxE8XMq6YPG0JUbBhlyQcNIPAakslspj\/Uih\/17ldzBiHAT9SxZ9CeQY5JxGv6ZplUxumVwMmGKUcGICTIAJMAEmYEoEeAeAKc02j5UJMAEmwASMggD9D\/zy5cuRP39+3Djsj6DHQUiTNY1ByE6BfjcN34wP7zS+8Ekx3qJ1c5QsVQJNmjdGqlSpDELOuBYiaVLNmgmpZInr9rk9JvAjBCjoLyUK1kk+wOdOmv8jzSVIXXYBlCCYo+yEvi+UTN2wSb7vKSUJf8+LGyP7oL\/NlKSx2sjETzBxLS0s8Ur5jwKTp0\/PsUcSDDx3xASYABNgAnonwDsA9D4FLAATYAJMgAkwga8J5MiRA2XKlBEPXt4P\/LqAnnKe+j9DyNMQkJHixHlvPHp5H7Pmz0T7Tu0SrfKfUP+kjJcSGwAEBqP+kAqyxOR6pnH9xmJOPiv+uPxu+qFSowpGM0emrnzW50TJ1eKflSCzppzke93MzMxoMahGjJ\/4f++\/NYmhb0Px7MUz8e8XirnAiQkwASbABJiAKRHgfyGY0mzzWJkAE2ACTMCoCKRJo1n1f3nnFZDPfX2nj+8\/YuOwTUKMnLY2yJU7l\/gfaX3LlRD9KxsdRDJ1VxkJwZr7iDkBp8JOKF+mvFrx6fOnBr+qWxpipPJVFZ4vEoyAnANTN8LI8SdNop8gwHEx4XIMck7jos3E1saFSxeEEd\/R0REpUhhebKXExpvHwwSYABNgAoZFgA0AhjUfLA0TYAJMgAkwAZVAmzZthIL9+sHrWNl9Ne6cvqs+08fFT0l+gkUKc9H182cv8PbtW32Ioac+NRYANgDoCT93GyWB7n2748ixI2qZ5MlTGLxxTrqf+fBR405MFZ4vEoyA3AEg3cckWMcG1pF8rxuz8lw1ACh\/pzlFTuDMOU2MlFKlSkVegHOZABNgAkyACSRiAmwASMSTy0NjAkyACTAB4ybQvHlzXLx4EfXr10fY6zDhe99n0wW9DYr8I9f9rQ6SJEuCoKAgbNu0TW+yJHTHvAMgoYlzfzEhcP7ieZ3ioaFvsOK\/v3XyDO4mXE\/JOwD0NzNS4S0V4PqTRL89JwYO8nckjTr6JWqYvR84fEAIJt0rGqaULBUTYAJMgAkwgfghwAaA+OHKrTIBJsAEmAATiBMCBQsWxKZNmzB8+HCQz3Kv2QexeeQWPLv1LE7aj2kjmfJmgq2zrai2ft3GmFY34vK8A8CIJ09HdKns+5SI\/J6PGjIKeXLlga2NLezz2YvxLlm1WGfcBnfzWSNR0qTG63bF4JjGUCCpLE5Mv4UYIkg8xcN\/T\/L9lngGFjcjefzkMQ55H4K5uTkaNGgQN41yK0yACTABJsAEjIgAGwCMaLJYVCbABJgAEzBNAvQ\/9OPHj8eKFSuE39pbx29jlesaXNl9NcGB3Dx+C7dP3hb9pkjJPnQTfAK4QyYQCYGSxUoiZ46cyGeXD\/ny5hMlDF2pSwGLKSXhoKWCgz4+pLKYdwBo\/pfY0H8zUX1HOAhwVHSApSuWirgopPxPnz591IX5KRNgAkyACTCBREiADQCJcFJ5SEyACTABJpA4CbRt2xa3bt2Cm5ubZjfArIMIeRaSYIO9tOMytvy2FZ8+fELGjD9jqueUBOtb3x2xokzfM8D9R0Vg\/JTx2H9oP3bv243N2zeLom2btI2qit6fSaUz7wDQ31TI95oxK77jgl6ScL\/50o9+XLTJbRgOgbPnz2Lm\/JlCoD59+hiOYCwJE2ACTIAJMIEEJMAGgASEzV0xASbABJgAE\/hRApkzZ8acOXPQuHFjvH\/7HocXfAn8+aNtf6\/+vbP3QIt2zczNsOfgLqRJk+Z7VRLdc7lqOdENjAdkFAQ2bd+EfkP6YeW\/K\/H23Zcg3KlTpRbym5tbIG8uO\/Tu0gfdfuluFGOSbmiMQlgWMlESUA0hnz4Z7fjkGPhvlO4UhrwOgWt\/V1CMBHd3d1SoUEG3AN8xASbABJgAEzARAslMZJw8TCbABJgAE2ACiYrA9OnTsX37dvh5XUeW\/FlQrFnReB9fZrtMor\/3Ye9R1KEEnEs7Y\/PODWAFXryj\/6EOaKU1HbS6lY4PHz7gw8cP4priSshnOmfFPz6V1c6TZUmRQiuGZXvintr++AnkhoLyKU\/mUxvah5RBlAsvT3XVelptUJ+iLSVPtkkwyPhEbhzSp1MOOitHurTphIus6MIimYwpEZ9eA3oJxT8ZAIaMGgILCwuULlkaXdt3xb8b\/kXSJEmwf90B4xhWOH5+f+hvuuRvgN0w6W8O4qpnOYdyTuOqXWNvZ9iYYbh15xacnJwwceJEYx8Oy88EmAATYAJMINYE2AAQa3RckQkwASbABJiA\/gjkzJkTf\/zxB\/r37y92Adw+eQeV+1RC+uzx59u2aNOiSvDh5\/Dde00M\/OTxk+j8S1f8tWqJ\/kAkcM\/6VK4EBwdj5KiR2Lp9K8LehalKeJKJlMPaZ3mdwHj03h0FeJSGgXTp0qnXwkBA94rB4MmTJ3qXMzYC0ApfUvjTyn9SmtOZjl37dongv9SmpWXy2DStlzpypTK7ANILfu5UiwC9PykZ9XdRE6de\/B3QGppJX06dPRWr161W3ouWWLVqlQgAbNJAePBMgAkwASZg0gTYAGDS08+DZwJMgAkwAWMm0K9fP9jY2KBr1664d+4e\/u6yEnnL50GRxkWQrZB1nA8tSdIkqDm4Bqr0qYx1A\/5DwPWn2L51BzKnsYJdfjscPuGVaHcDhOtW9KZcuX79Opq2aIq79+7G6bz+BGVkcnDhLUtXEnSr\/Vxe656VO9EEnb8+5KpU+Uy0qZQjBTbl0fOfFP\/b4hyerz5TylA+3WuOpBoFnWLwILcOIaGv8fZtKN6FhSm7Gt4LI0iYck0K\/ugo+R8\/eRw+YuM4Ea+sWbLiVdAreI6fjaKFi+IXtza4de8Wlq1aJgaRNVMW4xiMlpQ0t5z0Q0Cy\/xiuANePFPrvlXYaUZLvK\/1LFHMJpOz6NFLHXOr4qUG7xTx+88Dy1cvF35k\/\/\/wTBQoUiJ\/OuFUmwASYABNgAkZCgA0ARjJRLCYTYAJMgAkwgcgINGnSBBUrVsSQIUOwbNkyXD90QxxZ7LOg7m91kDpTqsiq\/VCeWXIzVOpZCdtGb8ObwFDR1vVr11HSsTSOnT2SOFfZKcpXSgmlXDlx8gTGTRgnlBe2OW1x6PAhofxPrqzwnjp6KooWKo5kyUghnkworWjlKinSk4Xfk2IvWTLlmYkpV4NCgnDv\/l3cf\/wAjx4\/xONnT\/D8xTM8f\/kcga9eIig4CHfu31GMBu+QIV0GMafG9BEYGCjEtcmeAzmsc8C1Qw8MHu8hdgLQg1w5cxvTcISs9L3lpB8C8v0gV8DrRwruNS4IyN+Rqc8ljb9H\/x7YsHWDWPm\/evVqNGrUKC4QcxtMgAkwASbABIyaABsAjHr6WHgmwASYABNgAkDGjBmxaNEijB07FvPmzcP8+fPxxPcJ1vZbi3pj6iFz3kxxjsnawQrd1nZFwI2nOL78BG6fuI17d++hU9suWLn27zjvT98NJgk3AFAQ5PhOfy3\/CxMnTVRXsR8+clh0aaEEeD229QQypDc+xXV8M5Ptp0mVBg72hcQh8yKeW7m2hPepo0iqGFCMKb0MfIknTzXuiyjQL6XWjdvg0ZOH2LRrM4opOwKm\/DbVeIYU\/luinQ2c9EOAlcb64R4XvU6dPlUYidOkTgN\/P\/8v7ou0\/kY1bNUQ3ie9MWboGLh1c4uLbkUb7kPd4XPJB\/u27BP3z188x+79u9G6Wes46yOmDb1\/\/x7rt6yH53xP+N3wQ+rUqbF7926ULl06pk1xeSbABJgAE2ACiZIA77lNlNPKg2ICTIAJMAFTJGBtbY1x48aB3MWUK1cOwQEhWNt3HU7\/cwYPLj5Q7oMhXR3EFR8yLjQYWw\/V3KuIJs+cPhtXTRtUOwmhKHv37h369u+L\/gP6q8r\/LJmyoqZLLdSv0QBe6w+x8j8OvhXSmJNQuzniQGTRxFW\/q+JMu0BSpfiys8fddSAObjiE6WNnil0fcdVffLcjYwBI1yXR6a9tu7Yo4lTkq6IzZsxAmnRp8Gv3X7961qRpE7hUdvkqPz4zsuXIhhkzZ8RnF3HStmRv6qvGla1Wgqf8TsYJ3ARqJDgkWOwQk4Y0+V4LeBqA46ePx4sUziWcUbNaTbXtAcMHYNO2Tep9Ql68fvMaC5YuQAmXEug1sJdQ\/pNrxO3bt7PyPyEngvtiAkyACTABgyfAOwAMfopYQCbABJgAE2ACMSNAwU\/379+PXr16YeHChTi6yFttwDylOQpUs0epds5InjbuAoZmsc8q+njx\/AX+++c\/NG3ZVO0zMVxEVK7E9ZjINc2U\/03Bsr+XiaZTpUyF9Us2wj6vfVx3ZfLtqW5PPmsCfxoDkFVrV2H8lPFC1J8z\/GwMIkdbRvnbik6FihUqYsuWLXj27JnY+STr7Pfaj8yZM2P\/gf0yS5xJsU3utLp26aqTzzcaAvK38NnEYwAY6\/eBXL+VLFESW7ZugYODgxjGp\/D32vbd21HYoTB8LvrE+fBaNW2l0yb9zmLyO9apHMsbMnQsWr4IU2ZOAe2OolSwYEEMHjwYrVu3hpmZWSxb5mpMgAkwASbABBInAd4BkDjnlUfFBJgAE2ACJk7A3NwcFPiOlGVt2rRBmTJlYGVlhbDXYfDZdAEbhmzCx\/cf44xSBpv0sCmWQ7Q3dtSEOGvXcBrSrBCNr5WyPXr2wKw5s8RwHfI7wHvLMVb+x\/Pky5Wy8dzNDzX\/9NlTtOzYEkNGDQFdUypWuPgPtWlolWOiOCQDAKWTp06qw3j79i2OHTsG9\/7uCAgIwOXLl9VndB0cHAwXFxc1jy++EJAGgPh6r33pybCvpBcqY3gnRCTZoH4DbNuxTc2WY9i8YzMa1G6g5suLO\/fuoGOPjihavihsC9miav2q+G\/Tf\/IxTp87jRqNa+Dm7Zto3r45chfJjUp1lJg\/u770MW32NPRw7yHqDB09FEePHxW7Dao1qIbHAZrg6sdPHUeDlg2QyzEXnCs7Y8wfY0BB2ilR0PJGbXT98g8fO\/yrPGp74tSJog4F9p2\/ZD7KVi8LGwcb5HbMjWFjhgnlf9myZbF582YcP34cZ86cgaOjI+zs7DBs2DA8ePBA1OcPJsAEmAATYAKmToANAKb+DeDxMwEmwASYQKImUK9ePaxcuRLe3t54+PAhLly4gNy5c+Op4rvfe+mxOBs7KfEqummUc48ePsLTp8\/irG1DaEi6AJLKlbiWiYL3ytSgZkOkS5te3vI5jgn89JPmn79x7Q4rLsUkZVf\/of3hVN4J+w\/tR+hbTbBt6kMq0eKyP322JZXQ0ZHB3t4eP\/\/8M06e\/GIAOHb8GEiB3bFDR2TNmhX79mv8klN7x08cF0HJS5fS+AEndqNGj0LpsqWRxSoLihYrisFDBuPNmzdq91WrKQrR9V8UovRg9JjR6NOvj1rmzNkzqFWnFqyyWaGQYyH0cOuhrkKWhcil14CBA2CX3w6OTo74bfRvOkHEb9++DXJp5FDYQbRToVIF\/Lv2X1ldGDWqVa8mdjXkL5AftevWxouXL8T8f28MaiPfuZDsTd0AoCwmFykmxqjvoE2wx\/Xq1lP+3j4VQeKpU5pL8snvfcIb9WvX15GDjGGk8Cf3QAP7DMTY4WPFSnnX\/q7w9fMVZWk32jmfc2jRoQUyZcwk4gdYWFgIowEZDyjdf3Afftf9xHXNqjVha2MLm+w26NK+C2j32oXLF9CwdUPhh3\/2lNno3K4z\/lr1l2iDKtnltRNGg2vXr4k26O\/qvxv+FXk3bt4QeR8+fMCa9WuQ0yanuJ88YzJGTxyNAvkLiN9RyOsQkd+7d28cPXoUdevWRdu2bbF+\/Xp4eHhgyJAhWLt2LXr27CnK8QcTYAJMgAkwAVMnwAYAU\/8G8PiZABNgAkzApAgULlwYq1atEtv1z2\/wwfu37+Ns\/AF+mgCltPsgU6aMcdauITQk\/cbHl6Js8h+TVZcFazasNoQhJ1oZjEHJR+47VvyzQih76fckDUTk8mNQT49ENTcxmQ8qW6FCBZw6fUplQG5\/nJ2dkSJFClSqWEm4P5MPaWdAqVKlkDy5xt0ZxQhYtnwZWrZoiQXzFoBWDs+bP0\/HX\/95n\/NCoSrboPOdO3dw44ZGMfn69Ws0bdYUKZKnwOxZs9GrZy\/s2bsHXbvquhkil17+\/v4YOXwknEs6g+IUzJ03VzQbFBSEii4VEfAkAIM9BuP3Cb\/D3MwcXbt1xdWrmlgPr4Je4fSZ0+jdpzfIgEHBXikAeHTGoC17VNfSABBfhs2o+jakZ8a8A8Amhw2cijjh4sWLAinNJb0\/ChUohJw5NMpzyfrEmRPie7Rg5gK0bdEW7Vu3x5ypc8Tjk2e\/GNUog57NnTYX7Vq1w9I5S0WZg0cOirP2h0sFF2SzzgbrrNYiCDAZAEaOGyn6X7FwBerWrAvXzq6YO3Uu9hzYg8Peh+FczFkYB+ia0mXfy3gT+gZZMmXBsZOahQmnzp5CSEgIqrlUw8NHD+G5wBPU15YdW0C7fpo0aSIOUvJTAGDaAUA7Hjdt2oROnTqhS5cuWLBgAfbu3Ytr1zSGBm25+ZoJMAEmwASYgKkR+LLczNRGzuNlAkyACTABJmCiBEghRr5yyT3Gy3svkdkuc5yQyKQEBKZEq2z9rvkhX\/58cdKuITQilZTxFSSSdmeQEoNShxYdDGHIiVYGOZfSV7YhDvTZc80OmkwZMuHMnnPiN+V74yoK2ReGVNoaotyxkUnOR3Trkhugkb+NBO2SIIPIgQMHUL+eZqVzpUqV4D7AXSgILS0txQ6ATh07iaZplf9V36sYPmw4unXtJvIaNWqEc+fP4cSJE9HtXrTx4sULjB41WrgaoYpZs2SF9zFvsTJZjod2K6z9d60w7LVv3x6nTp0S8vR06ynOadKkweJFi0EBSymRYaNY8WJClgIFCog8Mjh2aN8BHoM0Rp+4GoNoXPmQshryb0HKGp9n+h5RCg0NFSvpra2sjSqgNrkBmjNXo8inudy6c+tXq\/9pfKRMP3v4LF3i7bu3oNX2Z86dEd8DGrt2Kl+6vHpLCn4LcwuhkFczv3FBBohzF85hiPsQ9ftFRWtXr41UqVKBjBAVylaAS3kXHD52GF07dMWRY0dQvEhxEdeDDABkdPA67AUnRydkzpQZu\/btAu0I2Oel2d0zceJEscJ\/165dYsU\/Gdp8fHzE7sZixYqpklWpUkW4AJPfc\/UBXzABJsAEmAATMEECvAPABCedh8wEmAATYAJMIFu2bALCm5dv4gxGxlwZkS5bWtGeR\/8hQmkZZ43ruSHpNia+dgBIF0OWFpbo3EZ3JbGeh87d64FAxXIVxYrwpy+eYv7yecKNjWPBIolO+U9oY6qcIwMArcInA+bz58+FWzPp49+lkotQ\/p87dw73798XBxkFKNEOgRPHTgjlPykpyQUPrRim37S2CyBROIoP+\/z2YkdB+w7tMdNzJq7fuA4yJEyeNFlnLOXKllN39VBztNvg7p27ouUa1Wvg0oVLQvlPq5lp9fahQ4dEfVoJrZ0qlK+g3sbVGGSDkr2p7wAIfBUokHgM8YBjUUdY5bBC7769IfMlr++du7l2Q626tb5XLM6f169bX7j9oYbJkHzI+5BQsq9e9\/VuMvK\/X75meeR0yIkajWoI1zs0\/xG\/A+RqSzuZmZvh46eP2lmRXgc8CxAuy6yyWn313CqLFR49eiTyyRhBboro90cGgLKlyqKMcxlQ7ABK+w\/vR40qNcT1mv\/WiDMZP8mlIbn3oZQ9e3ZxJj\/\/tHOG4hxFTPI7HjGf75kAE2ACTIAJmBoBNgCY2ozzeJkAE2ACTIAJKARSp04tOByYdRBXdl2B\/1F\/hL3RBOj7EUB5yucR1b2PHEOv7l98Zv9Im4ZQN75dRMhV3fG1w8AQGBqKDFLRZaiKoSdPn2Dk+JFitSwxO3X+i7sbQ2GoTzny5cuHzJkzCzdAXge9BKfixTSBkUkhmCd3Hpw9d1assqf3XLGiX1YEk+\/+Ro0bCZ\/75JeffOkHBgZ+pfyMany0innj+o0wtzAXOxGKlyiOUmVKYe++vTrVIipAyY\/6h48f1DJLli6Bc2lnZLXOCpcqLli9ZrWQQ34\/ZUFprJX3cTEG2Zbsy1B\/C1LO+DyPmzhWMSS9EF10\/7U79u\/eD\/d+7ti0eROGDhsan13HWdsU8FZ+38h1lL2dPTzne2Lz9s06fZCf\/YEjBgpF+9pla3Hj\/A2s+3udKCO\/C7JCbL8T6dKkE028evVKNqWeyaAiffpXdakqDCwXL18Ubn\/KlS6HcqXK4d6DeyKGgM9FH9SoXEOs4N+1d5doY9asWWjTpo3aHhkAKVFco7Rp0yKyPik+QsSxqQ3wBRNgAkyACTABEyLABgATmmweKhNgAkyACTABSYC20Ds5OSHocRD2\/G8fto5WfI53WyXuZZnYnMt1KYu8FTRGgM0bt8SmCYOs85Oy8pBSfO0AkC4olIWYnBKIwE\/4KYF6in43LwNfon6L+sJXNgV8JcNQr069o9+AiZSkXQCk5KdV8+XLlddx10Ir\/mkHALnc0X725MkTofwnv+Lku9\/P1w9nz5xFEcciX1GLGGj55cuXOkrEMmXK4OTxkzh98jTGjhmL92Hv0ax5M9y9e\/dLW1F8vUjZ369\/P9AuATIm3LtzD5s3apS1EZWV8t1ADcdkDF8E+faV7Cu2yt5vt2wcT5atXIaZc2ciXTrNzrWiRYqCXMgMHTwUv434Dav\/Wf2VYcdQRyZd35ASnIL\/0t+qiPNKsQHy2+XHlHFTQLuMKI4FucWi9CN\/26gfWZ8MXbly5hIBfbVZUcDfp8+eoqB9QZFN\/v4dHRzx519\/ih0DJYqVEAF+Kc7FpOmTkDljZjgWcsSGrRvw\/oPGPV6WLFm0m4SXl8YAaGtrC3K5RXE6pFGACl6\/fh1Uh1wFcWICTIAJMAEmYOoE2ABg6t8AHj8TYAJMgAmYJAFaMUgKsjlz5qB+\/fpwcHBAcEAw1g1Yj6AnQbFmQoqAAjXC\/Vd\/\/CTcccS6MT1UvHLFF33d+sMmcy7M+J8nxowch6mTp6uSSIWZmhFHF3IHgKJljKMWuZlvEZBzKN0ufaucPvLXbVqHW3duKS5\/LPCb+yj47LuIooWL6kMUg+6T\/OWTz+\/jJ45DuviRAtP92bNncfr0aZ1nR44eESuESfnfrGkzZM2aVSgtSQFK8QRkoiCmpPCXiRSb5OZHppOnTqJ5i+YgYw3tRujXtx8WL14s2rpw4YIsFuV567atQmE5fdp0uLi4CPdEl69cFnW0ZYnYSHTHELFe23ZtUcTpa0MHBUmmpD0+WbdFu+aoXq+auM3tkEsoyuWzhDr3HtAb1etXj7futim+8os5FQfNOSX5bqDrzp06Y8K4CWK3Cd1TonmrWacmbPPYIl\/BfGjWshn8\/Pw0DyP5rFazGtZvWK\/zZMy4Mejn3k\/kUTDrqjWqwveaLxo1aSTabdS0EW7fuQ0KRl23QV3YFbDDoMGDRCBc7YYodgV9V7LlzIbK1SurO4aCQ4Jx3f+6UMAfP61xpxMUovmb7lzcGf63\/HH63Gnxfb145SLcBriJZiO6ntLu63vXKVOkhN8NP7GSP\/RtKPq59cOm7ZuwdMVSEdyXYg309ugtFPylipdSmyM3QP9t\/g\/FlTlIbplcGCxoJ8Du\/btRrXI1cX\/j1g1Rnn5rAwcOxPHjx\/Hu3TsR9Hfq1KlwdXUV5Tp37oyUKVOiZcuWoO81xQUYPHgwSpQogVq1Et4tkzpIvmACTIAJMAEmYCAE2ABgIBPBYjABJsAEmAATSGgCyZIlg5ubm\/gfafofZlrVSkaAjUM34+OHLwqxmMp1du05USWvXV5QIE5jSbt27IZL6cpYvWKNMFz8PnYi5syci0njJ+PRA43f4vgaizQAsAug+CJsHO3euXtHCFqxdEV0bdsNadOkNQ7BE1hKMgBcuXIFvr6+qOxSWad32h1w89ZNoUClmAAylSxRUigKSSFLfvcfP34s\/LxTLABt5adjEUcsW75MuBi6c+eOCCpMZWVyKOgAcsMzYsQI0HN6Rn7J6Tfs7Owsi0V5Ll2qtFitTMYEMjCQ4eDXX38VdSIGY9VuKLpj0K5D18Tk1u1bePZME1xaPqc8ShF93ZNMJxXlNK0Sp9S8cXN15bbISCQfpGSnledJkyYTI9L2cU\/z2bNHTzgWdhTPNm3ZhF86\/AIK0Dxzxkx0bN8RPhd80K5ju2\/SoOe06l070W\/8hr9GqR0UFCR2sjRp1kTsPCBj0sVLF9GuQzu079he9D2g\/wCsWrMKCxctVJuZNWcWtm3fJr7P8+bMg3MJZ\/zz7z\/iubmZOVo2aQlbG1vYZNcEmKYAvpTaNG+D6pWro3GbxshRMAdadWwllPUUkPecj+bvtigYww\/qLzAoEA1aNcBZn7No3aw1Rg8djTGTxohYAy51XJA2dVqsW75OdT9IXZCSn4wYZZ3Lqj2SGyBKJCcl+q1SqlixolDmlytXTsTg6NatG3r06IEpU6aI5+QCaMeOHeL3SPE28ubNi0uXLolFDqIAfzABJsAEmAATMHECmn\/tmDgEHj4TYAJMgAkwAVMnQL6yd+7cieLFiwvF1N0zd5GrVK4YY3kTGIqHlx6KesvXLI1xfX1WuOmvUYZFJoNUymmvDI6sXGzzkvwUvibjc2xb4HrRJSCNLBHdY0S3fnyWo5W0lB4\/iV+DU3yOISHazpsnLzJlyoQPHz4Ihax2nxS8lHY0kWK+YEGNuxF6bmNjg2FDh4F870+dNlVU6dihIyaMn4DRY0aLFf3p06XHH7\/\/IZSvVatVFUr9xo0aC0PpmTNnRB1aZew5wxMzZ82EUzEnocC0trbG2n\/X6qwWF4W\/8fHLL7\/A+5g36tWvJwwA6dKlw5jRY7B27VrIfiKrGt0xRKxLBgBKZHCoU7uOuCbFKgVKpkSBY69cvYKCBTS8rvheQYiykrxieU09MoImtnTv\/j2Qmy2KGZEkyU9ieNKNTWRj9fb2RrWq1TBj6gzxuGH9hiB3N+MmjBMGlHRpNb7vI6sbVR7tOqDvocdAD1GM\/sbQd2vUiFHo36+\/yLt37x5279mNUSNHgXz8T\/nfFLRq0Qqk\/KfUoJ6ieFdcYtGOAhqPSwUXLFmxRBMQeMchUYY+SMblC5YLgxfFvrC2shbPWjVtpZapUrEKnt7UNVrQw1sXvvx9nDZxmlqeLiqVr4SbPjcFB\/oNUXLr6gbXzq7Cp3\/WzFkFK\/FA66NksZJf9dWlfRfQQen1m9dYs26NuO7atStKlSoF+ltMv+1cub7+90nJkiWF0p\/8\/tP3m2KCGOJ7XgyIP5gAE2ACTIAJJDABNgAkMHDujgkwASbABJiAoRJIkyYNaBv9sGHDcHHb5VgZAHz3+eLzJ40W+9yZ86BdAIaQSFH459yFqFazKvLlz\/eVSLQSc9mS5SI\/m3U2bFq7SfhGJsPIyjUrcejIITwJeCJcjtCqY1IUiePzJzFeCu75Kfya8mlVI3GgPKlUklzI9YyZmZkIImqezFxcP36iWWFMZX1v+CIs7B3evQ\/DB0UxF6Yc5AOZrvPkygu7XHZfyc8ZMSAQ7mZJNbrEoGp8Fy1bqiymzZkG\/7s347sro2\/\/2tVr3xzD0cNHI3022GMwPAZ5iJX7FFyXfoeUevf6EmeBjAdnTp3Bw4cPQe9ECvobMdWrVw900HvjzZs3wp2QdpkH9x5o34rrGdM1imO6ISXp6pWrRV1S+MpAv23btFXr1apZC0GBX7tji84Y1EbCL8g\/OhlGTp78YgA4dvyY6vLG3NwcBw4dUA0AJ06dUNxQmSsryzXuWho2b4DWLVqjVfPWOH32FIaOGoYFngvgMcIDZxR3Mjmy5cBg98GoW7ue6PF\/M6bgreKmxT6fPWbPn4W79++KlfZTFcVxjuw5VPHI\/dKIsSNw\/sI5kO\/3BnUbYsiAIeq8yIKL\/lqEeQvnCtcvNarWwPjRE4T\/enpO8RomTf1DuI2h3RwUDLdaleoYMWSEWobeq9M8p2LL9i1iRX6Deg1VOWj+EB4PZN\/+fZjpORMPHj4Q7p0oGHD9uvWFGJMmThJn+njx4oX4+0BuZiiFvgkVynVxE4uPsmW+rICXRpjq1aurLVlZWcH\/pqavixcvIig4SAS3Pn\/+vFqGlN1kAAhT\/m58L5HvfzriMpGiXSr\/Zbu0iyJnjpzyNsZnmgdyKUTuf0j5Tyl58uSRKv+1GyfjICcmwASYABNgAkxAlwAbAHR58B0TYAJMgAkwAZMmQAaA0aNH49axWzi\/4TycGjtFm8fH9x9x5E+N4i3DzxlQu16taNeNz4L3795H3er18ejRY+HTv2GTBvhz6XydLkcPH4ubNzRK16aNmopVlLSSklKlCpXQb1A\/LFuxDDt37RSHTuU4vCEXFDVaVouyxbN7ziNjhoxRluGHxkng2g2NUtsy3GWHcY7CsKUmRaWtre13haRV\/d9LZCCgI7YpRQpFEascMU3RHYNsl8qT2yRSEMu0\/8B+0BhpFwApbskA0LN7T\/H4xKnjIH\/xpGylRL7iqzytKq6DgoJx7vxZNP+lGUopBoKxI8Zh+erl6PBrB5w5ehY5bXIqq77vY9+BvWIHRZuWbZEmdRpMmTEZnV07Yc\/WvaId8hlfvX415MubT2ljLN4pivzfp0zA\/Qf3sGDWn6IMfVy8dEEJ7PoMwwYNFyvXx04cI1aVr12xTpRx69dDGGh7uvZSgs\/aYu+BffhzyQKQSxgySlAi5f+MOTMU48JQ2OTIoRgT5iludVYqrn+SCn\/5cgfAxk0bQUr\/YkWLYdfuXcIVz9zZc9GmVRuxun3s+LHC9Q4FY6ZdG9KYIXcVic5i8SFX4lNVGfSZdnvIJPPo\/u69uyJ70JBB8rHOmQJSJ5ZEbgopBQcHJ5Yh8TiYABNgAkyACeiNABsA9IaeO2YCTIAJMAEmYHgEsmTJgunTp6Nnz544OO8wHl19ArsKeZC3Qt7vCntglpdY9U7KJt9bmoCW360UxwVopX+ZYuVwT1H6kxGibv3a2LJxm1ixSV2Ru4WN\/21Cnfp1lKCLDUTvcz3nYcWyleKa3DqMGTlGXGt\/uFR0wc7dO8XKfsqnMWoftNJR+57KaOfJOnQmGWiHgPZBOwjonuqYJTMDKT7ooHs6kwKI\/EbTStaAZwFsACCQsUwy0CfNl6EluSr35auXOH\/5HJwcEn8AYDkfhjYXiU0ecgM08reR4j1D75MDBw4gh6IMFwYAZfX98ZPHhNsUittCOwA6tO0QJYL2yvO+bn1FmSouVVCklCO8Dnup9QKeBuCY13Fl15LGkErzPGr8byIQMynnJ06ZKGLEbN+wQ40Vk1HZpdDZtTN6ufZGYYfCom16p8+dMQ+lnUuL+58z\/IwO3dorLm\/OKIGUC8DXzxeDlV0DXTpo3MbQLgKfC+eVGAYnRXnauTV5+mQM6DtQabeXyKMdAsXKKL8t5RVAZakPSrVr1caIYSPENcWPWPPvGhGwt3nT5ujeoztOnDgB2oFRoXwFUCwI8rvv2tNVlP\/WB+1Q0E604yPidz5psqTaRaK8lq6GdmzdgSKORdSye\/btQYdOHb7aPaEWMMKL3La5RRyUR48eKQb8R6CdEJyYABNgAkyACTCB2BFgA0DsuHEtJsAEmAATYAKJlgAFBg4ICMCYMWPgd8BPHJV6VoRToy\/KhoiDf+IXgMs7rojsPu4aJUvEMglx\/0uL9rhzW7NC8tnTZ4pbn79Ft+TGY8n8Jfh79d\/Ysm0LRniMwOq\/V+PunXvq6kKHAg4YP2p8pGI2qt8IdOgz5SqQC+S3OVl4wEp9ymLMfUvlmyG6AGrWqBmWr1kuAnLu2LvdJAwAxvxdMibZyQDw+vVrXL58WbgcosDDLZq3wDHlv4w\/Z4TvtauKK57zYlU7uV6R\/v+\/NcYKZcqrj8htGvnDDwkJUfNoVbtU\/lOm3FEVrMQWIAOA9\/GjIJdXpMCXKePPmYQhlZT30gCQKlVq4T5Ilqldo7Ywip5SXBEVK1ocR\/Zqdp3R75pWx1+6fFG4Xnuj+I+ndOnyJWE4rVyxsmxCuL+pWb0WDhzcj8tXL6uBaYsXK66W+XPRn8LlEGX4+flh7769GDRgEHp076GWuXxFY+iWBgT1QfgFxYvQjhtDBtwbN26IeBQRy0b3Pn++\/KLojp07UKZ0GbUaGScoUR+UyMApr0WGkX6QQYriHsj3tpEOg8VmAkyACTABJqB3AmwA0PsUsABMgAkwASbABAyPwKhRo5TVlfZixeOMGTNwcK7iA\/\/aExRrVhSZ8mT6SuBnN5+JPHKHMVzxD62P5HfND\/v3HhBd0yp+cjvx14q\/QO4apk6aiupVqwvF1979exUDx1ME7PPSEbNalWrIni27Tp4h3lAMAU6xJyAVSYbI0dLCEpkyan5fb5U4EJyYQFwRID\/qmTNnFm6Art+4LmIbSF\/p5IaIVluTL\/6Hjx4qz1LDyTHq3Sc\/K0YD7WRmZi52F8g8WqmvnSyUmAKUaKfTm9A3eP7iObbv2i4O7XJ0TW6AZCpZvIRQ+Mt72hWVUfmNPHqsCZR9VnFH9PuU35UAxydEu2R0eKMEipUBta\/7+wlleDGnYrIJcc6SOYtQ\/Hev44oFizUu4ehvxcFDB7Huv3VYt34dCjkUEgaEp8+eoqhTUZDbpE4dOol6W7dtxbwFmiC8b0Pf6rQtb2iF\/vIVy0XgZWI9w3OGEuD78Q8ZAPLkyYNGDRrh75V\/K+6MbNCsaTPFJdM5LPlriehW7myi8V9Q3CcdU3Z2ODk6Ibmlxp2TlM0YzhScmozelH7E1ZYxjJVlZAJMgAkwASYQ3wSSxHcH3D4TYAJMgAkwASZgfARIidCqVSvhDmjq1KlImiQpfPdew2q3f3BqzWmdAb248wL7pu8XeenSp9V5llA3pNDv0LqT6K64siq0d4\/e6NiuI7x2eeHq+auoU7OOeFbQviB2bdmFDr90QLPGzdRV\/bQCdmD\/gQkl7g\/1Y4gr139oQFxZh0ARB81Om9M+ur8znUJ8wwRiQYB2AZw9dxaHDh1C+XLl1VXVyRSXQLTin3YAnD57GuVKl9VRukfWlVQ0R\/aM8qJ6Tspo2jHg2rUH7vrd++ogf\/8yffzwUV6q51eKUjhzpiwiMHuztk2VnQfBmDFlJi6dvowTh07CsZDGfRBVyKAYIsjop707gfJfKAYISqOHj1YDPS9cvBANmzQUrn9atWyF4UM1ctja2mLk8JEiGLt9IXvkzJMTi5cuVtzJbRRu2ohZZOn38b8jffr0SvD5aihaoqhwf+Tm6hYlm8jaiZhHAaVrVq+JwcMGwzavrXBDRG6JKMlV\/y2btERgUCAatGqAsz5nIzZhFPdr\/lujxIZ4h4IFC6pzZBSCs5BMgAkwASbABAyQAO8AMMBJYZGYABNgAkyACRgSAXd3dzRu3FgYA2bPng3vxceQPls6NS6A9P1PK\/T+WqlZhZiQ8j988AjFC5cEKYpodeiQgUOiVLCQa4kZU2aoInY83BG0GjRVylRqniFeSIUaGwB+bHY+h1eXPH+stbivTYpRSqT44sQE4pIABQJevGQxaGV1+3aKu7Q7d0Tz9N6sUK4ifp88QQlumx5NGjaOy26\/aot+e3Z57JTV\/9t03K7dvnMbw0cPw4A+A4R7H6p44fIFIa+ZmZlo55zPOYS+DUWB\/PaKGyFvBAUFYaai\/M+fz148JwU4uRUixT8lufJ\/n9c+UIB3SrQLgeIV0G+N2s2UMbMwEJBLJI8BHmKFPsVemTRlEsiNDwU2ts1piwN7DogdZclTJBc7zKitFwEv6CTSwvkL5aU4U5yAU8dOiV0VtCONXNFpp6pVqiLwmWaFu8ynFf10aCdyO6TteojiAMyfOx+eMzxF2yTf4SOHsWfvHtWoU6l8Jdz0uSmCF1OQZ2NLNIfDx2oMMEOHDjU28VleJsAEmAATYAIGR4B3ABjclLBATIAJMAEmwAQMj0CuXLng6ekJcgdE6ahiBPj8SaNKfez7ROQtW70UhRwLieuE\/HDr1lMo\/6nPtSvXglz5xCRVqlAJ9ooyydCTXNlp6HIaunzSBZChGlJKl9QEO\/Xzv4a\/1iw1dJwsnxERIAPAlStX4Ovri8ouldXV4vRbKF+2PG7duaW4jfFBxXKV4n1U\/Xu7C5\/9HsMH4dbtW\/C74Ye+A\/soMtxG4UKOav\/kAqbvoL7CZRCVGzh0gHBp46L49C9RrIQw9m7cukkEMCb3Ov0H98edu3cQqrgZopQ3d140btAYA4cNwATFwLFtx1bUa1oXZGyQRkAZfHvXrl2iHzIQbN+xHbPnzEbnjp3VctRelixZVOU\/3UcgIAghAABAAElEQVQnUTyEiMr\/6NT7Xhlzxa0SGSZoHPJ9Jt9vVJfyjVH5Ty6iOvfsLAw9nTp1wi+\/\/PI9FPycCTABJsAEmAAT+A4BNgB8BxA\/ZgJMgAkwASbABL4QoADBuXPnRuCDQBz767gwApgl16zM7NCmE3yvXvtSOAGuNqzbAO8jx9SekiquLBJ7SsIxAH5oiqWCzBBjANDASpUohY5tO4ox\/jZlJI6d9hbXifVDzkdiHZ8hjStvnrwgX\/QZM2ZEgQIFVMU2zQH57CcXabS6vIB9gXgXu2G9hpg8YQr+2\/QfSlYogSq1K4NiEcydMVesypcCVK5UGSGvQ2DvlF+UozLLFi4XsufIngOD3QeL4O65CtqiaBknWCqr+seOHAf\/m\/6q\/\/jZ0+agVbPWWLv+XwxQDAi0C4x2A0i\/+PKdap3NGjVq10CWbFnQp38fdOncBePGjJOiGPQ5STLN\/9YnBkPx9DnTcd3\/OhwcHEC7DjkxASbABJgAE2ACP06AXQD9OENugQkwASbABJiAyRAgtwj\/+9\/\/0KxZM5xafRq3Tt5GWqs0CA0MRdCrIFQqXRnX7\/kmWMC+m\/63BHty39PbrbfixkLjBzkxTohUlBqq4joxMtfXmCaNmST8m+\/YswNjpo7BztW79CUK95vICFzTMtLKFfCfodnN5bXrYKSjvXlZ856lh1VcquDZPY3\/fO3Ct6\/eVm\/JJU\/EVLnS1\/U6t++MTu064cHDB8IAkTy5bqDaWVNnqc28ePlCuLeJGFx4YL9BGNB3oNhNQCvtpasgt1\/dRN1gJT4ABT0eO3IsJo6dqLbXtlMb0SdlJEmqUZ63atEKXTt3Fb89WllvTClZUs3\/1n\/6\/MmYxP5KVgpCPXfRXJG\/ePFiYRT6qhBnMAEmwASYABNgAjEmwAaAGCPjCkyACTABJsAETJsAxQPYunUrXF1dcdf\/rg4MUlJ3adcNufPkRurUqWCmuCgoUNAeRYoWQU5bG52ycXETGvpWNEO7EjzcPeKiSYNtQ1XWhbteMlhBDVww1ZCiuMcw1EQ+2fu79QcZAK76XcHdB3dgky2noYrLchkpAfWdory39ZVIhuzZsn+3+wzpM3yzDLVBfvAjS58+fkLNBjXQt2c\/DB04FLRLbL\/Xfuzetxt\/jJskqkj3ObR6nowQxqb8p0FII4ax7wBYsmIJwsLC0LJlS5QqVSqyKeU8JsAEmAATYAJMIBYE2AAQC2hchQkwASbABJiAqROoXbu28CO9ceNGPHv2DNeuXcN\/\/\/0nAiQePHAIdERMxUoUxZwFs5DHLk\/ER7G+37Z5m6hbtEjRWLdhLBWle6OwD++NRWSDlFM1ABi4KyX6TufJlQf+t\/xx9ORR2DSOXMFpkJBZKKMgYAgGgPgGlTZtWhFoeOrMqVi8bJHiIsgSz54\/w6+du6NLhy6iezK4UZJxbcSNkX0kTaJxfyffb0YmvhCXjBcr\/10prvv27WuMQ2CZmQATYAJMgAkYLAE2ABjs1LBgTIAJMAEmwAQMmwCtlGzdurUqJPnqffz4MQ4fPiwMASEhIaDj3LlzOHbsGM6ePodaVetigEd\/tGnXGq9evVKev0Z++3yQChi1sWheSBdA53zORbOG8RaTCp7379kA8COz+DncRYbk+SNtxWfdtRvWCuU\/9VGxdKX47IrbNlEC0gBg7G5jvjd93bu4olunX+Fz0Uf5uxOIYk7FddzU\/aQEQaZkzBykgdiYjRjnL5wXxhna0VemTJnvTSs\/ZwJMgAkwASbABGJAgA0AMYDFRZkAE2ACTIAJMIGoCWTNmhXNmzf\/qlBwcDDat28P2jHw27DRGDV8jPDnTAXJAOAxfBBq160FijEQk1SuQlkcOXQUly5fwtu3b2FpaRmT6kZVVhpJPvAOgB+aN7lCVrr9+KHG4rHyin9WiNbTpUln1IrJeETETf8gAWkA0KMHoB8cQfSr0\/vzWzvFZBBgY3afkxhiAOw7tE9MaK1ataI\/sVySCTABJsAEmAATiBYBzXKHaBXlQkyACTABJsAEmAATiB2B1KlTY\/369di8eTOqVKkilP+ZMmWCtbU1rvn6ibgBTvbF4Dl9NmKihPn7n2UgJRbVGTRskGpUiJ2Uhl1LGkc+Kj6tOcWegDQAGHow5QL2BcQgA4MCUb5+WXTs0x5vQt\/EfuBckwlEIPDFAKC\/GAARRNLLrTSuxuRvj14EjaLTpMk0LoCMeQz7D+4XI2QDQBQTzY+YABNgAkyACcSSABsAYgmOqzEBJsAEmAATYAIxI0DKpvr162Pfvn0IDQ1FQEAA\/P394enpCQcHB+X+qeKreQJ6dO0Z7YZTpkyJgYPdRfkVq1fg+Mnj0a5rbAWlkuo97wD4oamTSs8faiQBKk8YOQGz\/zcb5UqXw2flv\/1H96NwZQfs8tqVAL1zF6ZAQP4WpFHMFMYc2Rjlu9WYlefSpZmxjuFl4Euc9TkLMzMzsUggsnniPCbABJgAE2ACTCD2BNgAEHt2XJMJMAEmwASYABOIJQHpqofOvXv3xqVLl7Bt2zbQToEN6zZi+9Yd0W550LCBYhcAVTh3PvHGApBKKo4BEO2vRpQFDd1XNvn0btmkJTau2oh\/l\/0rAgLT3P86sCuOnfb+amyzl8yCTfHs+H3mhK+efSuj51A3tHJt+a3HCZJv6srnBIH8jU4ke2kI+EaxRJ8t3YEZq\/KcJkiNAWCk\/py8jniJnXwVK1YEGfY5MQEmwASYABNgAnFLIGaOduO2b26NCTABJsAEmAATYAIqgTp16mDcuHHo16+fiBFw5OARxfe5svb5k3LQWQneSmdygaO5l\/mfRewAUo6OGDMCLZq2QMaMGdV2E8uFdAEU9j4ssQxJL+OQyk5jCvhZuUJleG33Qvtf2+PA4QMYPM4DhzYd0eH337Z1cMjvgHVb18Kj5+AYx9PQaSyR3ZBiV867VHpHfIdI5a+FhUW0R0\/vnI8fPwrFJZ0\/flKulfeTbEs2RH2L51RGHkpZuhZJ8cCjLRflSfkiuxZ1lA9qV7uevKZ8+YxkUu5EFTIi0kHKYnr+\/Plz2ZRJn6VxNeK8GROUJMk06\/qMdQxHjx8VuGvWrGlM2FlWJsAEmAATYAJGQ4ANAEYzVSwoE2ACTIAJMIHET6B169bCAHDn1h0sWrAkxgMmBVjI65BEaQAwS2YmeLx9FxpjLlzhCwFSfFIy9B0AXyTWXFlaWOKPMX+gVJVSuH3\/NsLCwmBubi4e+lw+D\/\/b\/tiwdBOadG6EvYf2oFaV2hGbMMj7\/AXyC2W0nBd5JmGl4lrmkfsrUrprK8dFuXBFuFSA05kUocaqDE3oiXqquGMz5STjgcjvjzGyMPYgwPcf3BfYCxTQxD4xxjlgmZkAE2ACTIAJGDIBNgAY8uywbEyACTABJsAETIxA5syZ4ezsjJMnT4qRlytTDlZZrVQFISkCozrs8tjBNqdtoqRmbqFR9r59+y5Rji\/hBqUxACjq4YTrMo56ym2bW\/weHj1+hPOK0t+5qLNoed3WdchlkwvFHYujVLHSWL1x9VcGAFKGey6aia17tyI4JAgtGrRUFOm6DGh3ybT5U7HvyD7cUYwMWTNZoUr5KhjccwiSJ08u+mrWtSl6d+6NnQd2YvfBXfg5fUb06tIb1StUx\/A\/huLA0QMo4uCEX3\/5FWVLlhN1gkOCMfp\/v4lnpMAvkK+gSiQ4OFi9NvYLaajQHoe2UplWmsv3F5XRLq99Let\/L4\/ajqyMrB+xDyovD3r24cMHYSSxDJ9b7XqmdC0NTdpzZWzjl26MjHUMj588Fsitra2NDT3LywSYABNgAkzAKAiwAcAopomFZAJMgAkwASZgOgS8vLxQrVo1eHt7C+XWwrkLTWfwUYzU3CzcABCLHQCzFntiytzJSJ0qNc7vvSACLUbsqnm3Zjhx9jhG9BuJX9t1j\/g40dyr7j4UVy3GmFKm0PjHDnmtUZyTQn3z7k1o37yDGE7DWg0xfOIwPHryEFZZvijTZi+djTl\/zcEgNw9YK\/nzl82F7w1flHAqqWLoP7Ivjpw6gu7tXJEze06hsF+yejHSpE4D9+4DRLkrfpcxYIw7ihQsAnfXAfhn0z8YMNodhe0LKeXSivZXrV+JweMH43C4m6LfJo+E9+mj6Nu1H9Knz4AV6\/5W+\/Q+cAwpkqdQd2Ror9rXdtNE18mVmCGWlsmFGxup8JRl6F7OLZ3JZRYdMk\/tMIEv9uzfg9YdWsEurx3OnD6TwL1H3d2IkSPgOcsTqVKlirpgIn8qXTFJP\/rGOFzpIs7YdjZJ1o8DNAaAbNmyySw+MwEmwASYABNgAnFIgA0AcQiTm2ICTIAJMAEmwAR+nACtNN68eTPy5s2L\/7N3FnBVLF8c\/9ldz+4OVMAObFEsBAu7C1vBbrE7\/tYznt2YT8XuRBHFfLZit4Cd\/z1zmeVeSvoGZ95n787OTpz57t6L75yZc06ePgkPTw+UKlEq8h0beQ8JEkgXQF8iPBNyj3T6\/ClUsaqq08erN69w\/pJm14XODRO8kCumjVVRJhXa35XV25SOnD6Cd+\/fwb5WA3Fdz7oeRk4ZgU3\/bkLfLv1E2dt3b5WV\/dMxynk0OrboJMoqlq2IsnVKqz7kP3\/+jJv3bqG\/4wC0baoxJtSrYYsrN67ggpeHaCM\/0qdNj0XTlggFu7mZBWxb18WXr1+wddl2UcUsvxns29vh3sN7yJMzD85eOIPG9ZqgXbP24j7tXChTW\/OdzpQhE1KmTCm7NrmzfN8McWJSNmNdNR5VTH\/81HyXpBI9qvqNyX6M2Y0RuTN78\/aNiE2RPn36mMTGYzEBJsAEmAATiDUENNGCYs10eaJMgAkwASbABJiAMRBImzYtOnToIES1bWSLydMnBwTMNIYJRIOM0gDw9VvEXADR6tZSlqWw58ieINKRO5eiBYsGKTfFgrj+MQAoOKoxJqmkJL\/\/lLYo7n8KKy518uXOJ65Tp0qDKuWrKCvzN6jK\/f\/u3BCuXmpXC4gLkDplaqVeVdGGPsjwdnDTIaH8J4Ww9xNv7D28RwnE\/QufPn9S61GmpPIeSTkK5Ssk7lWzqqbWyZg+k8jf974nzmQkWLJmMVxmjMEZj9NIp7gNksnUlc\/SYGOQ89R4w1LfE\/lMYtv5xw\/Nb4Ex7wCIFzeeeGzaO2iM5Tme9zwvRM2fP7\/ed+wYCzOWkwkwASbABJhAeAmwASC8xLg+E2ACTIAJMAEmECMEXFxc0KpVK3z9+hVTZkxBg6YN4OPjEyNjG+IgMuArrbSOaKpTvS72H90XJDiqm+IXvm6NekG6pZ0B\/cc4oXStkrC0Nkcnpw6Kb\/iHar05S2Zj6vwp2L5nG2q3sEHRKoXRpldrPH72WK0zc9EMTF84DRPnTEAxawtxppt\/6pvqkOJ5+KShsLItJ8bv7NwRT549oVsRTuqq51+\/I9yHPhs2bdhUDL9wxQLFzc8zHDpxELeUlftFqpipx4mzJ8QzOOF+QtS956+Ip5X72olW32snMiq07tkShSoWQEU7K0yaOxE+vj5BFMSZ\/BX81FYqHrNnzaF2FViROnXUNFSrUB3LNyxDM8emKGFTTK1rkIpxVTrTzqjfBcXgE5vTL39joAyka4ws5HdOifJgdOIvXrFYyOzg4GB0srPATIAJMAEmwASMhQAbAIzlSbGcTIAJMAEmwARiGYEUKVJgzZo1oJgAmTJlEu6AHHs5BlFGxhYsATEAIrYDgDjVrl4Hr9++xoXLAb7IyT3MWcX3f13FdYx2It\/yLbo3xynFZdCAHgMxbvAEPH\/1HPVa1cGLVy9EVVL0uyquZkhRXLOKDfooLmc8r1xAt0EBMQQeP30k\/MRv37sdlcpVRprUaRCWvkkxTONT0NqGdRpi4tBJeOfzDrZt6uK973ttUcOVlyuyg9sBYNfMDnQYcureqTuyZ80Okn\/W4hmgwL0Ut4Hc+8hjwtCJwq\/+hu3rxFQyZ8gszj5+uga0j58+qlN9+folWvVoCXITNW3UdJzfewHHtp1QdoYUUevITHgVpbTbYPH0JUr8CS\/MHjcHJcxLyq7EDgP1wgQzhqxkN4Xgt1HxykgXQPHia1bRR0WfMd2H\/F0zNoPaOtd1cNvvhqRJk6J79+4xjY3HYwJMgAkwASYQawhwDIBY86h5okyACTABJsAEjJNAlSpVcPbsWRQvXhz7Du7DnPlz0K9XP+OcTCSkTpBQEwPgm7IjIqIpW+ZsMDczV1y7uKG0f\/DXfUf3ChcyObRWcFP\/FMj1trKy\/PDmo8ibK68YsrqyituqfjnMXjwLk4ZPFmWv3r7CkS1HkTtHHnGtWGgwfvY4kLI5lRIUltILxXBA\/Ug3NSs3rvhj37sO7MLFK55YPnsFrCvVEP1Ur2ANyxrmWLJ6EQb2HCzKwv3h7wJIBo8Nd3s9NyBFn1zte\/6SByyLFFP9+muLdu6iu7IzYzvIwFPEX4lPZdLQQ4pCWvGf9i+NOx4yAvl+8MVURflfIE8B0RW5E6HdBWlS\/6XddbjytGNlgEt\/1LexQ62qtdCobmPFoNMIOUtlF\/0Ym8IyXJNXKstgxYY4T2mcoO9sbE4\/\/V0ASbdWxsjCGA0AL1+9xNAxQwXuOXPmIHNmjaHSGPmzzEyACTABJsAEDJ0AGwAM\/QmxfEyACTABJsAEmABy5swpdgPUq1cPYyeORe6cuWFf3z5WkZE7AL5+i7gLIAJGboDWb1uHkcqKcUpuh9xUpbAo8P+4pCiHSbkslf9UnDxZckWJWxselwOCwtLqclX5r9TJrQR9pfThwwfVAECuZ6Tyn+6FpW\/3i2eRInkKpE2TFpdvXKZmIlGsgvOBgtLKe2E5S4Xsr5+\/wlLdIOu8ev1KyHX3wR2x6j84IZvYOsB1pyu2uG1Gl1ZdYVfLXrhfypE1J9IocQLmLJ0tlPvl\/Q0AJcxLgBTCuw7sRI\/2PYXrH3LdRLEAEidOEtwQYSpLnCgxEiVMiClzJyGdMhbFDDjp75qIOjBExXiYJhbGStJYY4jzlAYAQ5QtjHijpJp0q7Z85XIcPnJY+KEn11Zx48UVefrNIOMAKdnF4V8e3OBUlwLyiv+U7xPVJ850EGc6pJ9+ca247KGA5GSQTBA\/AZydnJE9m8Y4Flz\/fyozpme5dNVS4ebN3t4enTt3\/tPU+D4TYAJMgAkwASYQCQJsAIgEPG7KBJgAE2ACTIAJxByBunXrYurUqRg0aBC69+0Oq\/JWSJ9O16d5VErz5csX0ArFLJmzqAFPo7L\/8PYVEAT4W3ib6tQnAwD57b928xqyZs6quPg5qbj3GadThy68nzyEdB2jfZP8xj8\/\/Ewt+iuN7upwaajQdrGTOWMWtT5lwtL346eP4ffBD3bt6uu0pQvayRDRJFfKassXUl+1G9WGY0dHNLRtqFYZP2083r17hxkTZ4gychnk1MsJ+w7tE64sqLCBbQOMHDgS8plR2dpNa\/HPqn9w78E95M+XHwN6DUCtGrXolkgPHz3E6Imj4XXFC+\/ev0Pe3HnRo3MPNLZvLO6fcj+F0RNGY9PKTf4tIJSKrrtckUkxwtjWtFXLKVOuZHlkzZQVG7atFwaA6aNnwHl0PzTs2ECJq\/FFBISm1fjk1okSMXV27I81W9Zg\/rJ5oqxFo5YY4TRKKO\/J7RK58olIcnYcIAIAt+vdRuwySJw4sdqNMSksVaHDkZHvmyHuOGEDgOZBvn37VmRu3boFOvSZvC574fCBw+EWQb5n4W6oxwZ7D+4Vo\/frF\/t29OkROw\/NBJgAE2ACsZQAGwBi6YPnaTMBJsAEmAATMEYCtra2wgDw+fNnnD5zOlp2Acz\/ez527dkFz0ue+Pbtm1DiNmvSDONHj0eqVBqXNvpgJ4MAf\/0WcRdAJDet6M+fOz\/2HtmDnNlyCncvubLnVlelyrnRKvHAPuPp3nuf98iRLSDgq\/QjLtsFd5aroOW9sPSdMkVKoZQ+6HpYrKaVbemsLKaNcJJtadXtn9Lla5fx+s1rnWrej7zVGAh048qNK+g7uC+yZckGpx5OuHLtChYuXYiM6TOiZ5eeou2CJQvgMsUFdnXs4NzLGafdT6N119ZYsXAF6tWqBz8\/P1jXt0aBfAUwoM8A\/Pz5E+Qbu5tTNxQxK4JCBQrB19cXXle98P3Hd1iVtcKBIwdQoXRFYcB5++6Njox0QcrdM7vd1XJaib9g8t\/48uWzooT3Q4Z0GdR7MtNXieHQp3NfPFLiNpDxRxowurbuKqvg+vH\/1Dxl6Nl6X3isU0Zz1y4jQxPFAKB5PXn+RDzX3GVy6qyG1unAhC6kYtbUDR3G\/MjIiEmusipXqAzzwuZiNb5Yla+4wKLV+mS8oXdXrtQXZUp5cEms6vdf6U8BeeW1iM2r\/G7J3QDUVu4SoLLbd2\/D08sTnz59Cq7bP5YZ23v248cPMWeaWJkyZf44P67ABJgAE2ACTIAJRI4AGwAix49bMwEmwASYABNgAnoicOPmjSg3ALhMcMHCJQvRukVr9OvdD+S6Zv+h\/Vi4eKFQAC2Ys0BPswXkynoySkQ21bGui4PHDyhK6+yoW0N35bjsO7\/iB3616yqxCp9c8VAiZRb5irdQ4ghEJoWlb\/JDv33PNhErgFwRUaLxB48fJNzIdGzRKUIiqC6AQlDgRaRTUqbvdt0tlHvU\/tp\/13D4+GFhACDF\/fR50+HQwAHzpmtW1tvWthVGhLFTxgoDgPsFd5DBY9GcRSLAL\/VRoVwFlLMuh3Oe54QBgMooffzwEfXr1BcGgFv3bmoKw\/FJ7nxCc+lDysjA8SDC0X2oVclYIPsm5adUkIbayMhvSuOXdPti5NMxSfHljhSb6jZw7BAQwDwmJ7t05VJhAJCK\/PCOLQ3ExvKePfB+ADIC5MqVSwQADu98uT4TYAJMgAkwASYQPgJxw1edazMBJsAEmAATYAJMwDAIrFm\/RigQokqaFatXYPa82XAZ6YLpk6YL9ywlipfAkAFDMHLoSKzftB4HDx+MquHC3Y8MAvz9exQYABQ3QOQC6OipI6hnXS9YWTo074gfP3+IAK4vXr2Ar58vJv5vAh5430dTu2bBtglrYVj6bt24tYghMHraKBw7c0y4xZm1eCY27tiAkpalwjpUjNQjZT0pzmXKkzuPMJzQNe0QoBX+xS2KC\/c+5OKHjoL5Cgp3QG\/evkGNqjXgecJTKP\/JH\/nVG1dx8sxJ0SftdvmsrNr\/e9nfovuy1mXRb4jGZQbt4DDa5I+LjDqmnBIovuMp0QpyToZJIF78eEIwGQxYH1JKF1ERNQDoQ+bIjHnh0gXR3NLSMjLdcFsmwASYABNgAkwgjATYABBGUFyNCTABJsAEmAATMBwCmTNnxpOnT1Crfi3IgKja0j30fog2ndrAorQFsuXNhio2VeC61VW7SpA8uf0pWbwkunYMcHciK3Vs1xETxkxAxgwZRdEZ9zOwsbXBkWNHULh4Ydg2shV+4UnJR7sFylYuK8atXqc6drntkt2I89LlS1GqQilkyZMFlawriR0H2hVCuk8BIimRMnj4pKGwsi0HS2tzdHbuiCfPnmh38cd8kYJFxErsnNlz6QT51W5Iq9pXz1urBIq9idK1S8K8WhEcOXlYuHIpW6KcdtVw58PSd2rFBdHahetBCvE2vVqJudKuhQlDJ8KysGEpjdKlTafDgNztyJW4jx4\/EveGjBmCGvY11GPa\/6aJcnl\/5bqVqFirInIWyQmbBjbYtG2T6j5k0sxJwm2QHIT6Jv\/+S6b\/I4uM92ziBoAUKVOKZ\/P1S+Rcd0XnAzZ1I8yf2MWPpzHSkMFTX0n+XsQWA4D3Y2+BumjRovpCzuMyASbABJgAE4hVBNgFUKx63DxZJsAEmAATYAKmQaBLly5Yvny58NPvNMgJa5atUSdGK9VJ4V8wf0EMch4kdgms3bAWXXt2RdEiRWFW0Eytq5256HURTRs11VnJLe+TUqaHYw95KVbDX7h4AX0H9EXZ0mUVv+pfkCZNGkyYMgGz5s6CU28nFC9WHPsO7BOGiPmz56Nls5bYe2AvBg4bKO6XLFESp86cwrBRw5AqZao\/3o\/vv5LY6\/plXL99Ha0btUZhRZG\/bP0\/sG1TF0e2HgsxSGvvTn1Ah3Y6+e9p7UvQHLX9ttPN0sVK48iWY3jj72M+bZq0Om2mjZquc00XVcpX0elnpsvsIHWo4E99Ux0LMwvsXb8fFICWXB8F57ee6kUkPXvxDOSbv0eXgOdK8RUCBzX+\/u27TvcUoFf489Yq1V79r1UssqlTpRbnnRt3wqKoReDbIGMBKfsHjBiA9q3aY+KoiShVopR4D3MUziGMAB6eHmo7em6pUqQS7wy968auvP1l4gYA6dM9YaKE6jM0lAy7J9I8CcmBXNLoK\/36qYkpEFsMAO4emvgkZmbB\/z3W13PgcZkAE2ACTIAJmCoBNgCY6pPleTEBJsAEmAATMGECBQsWxNmzZ5EzZ07s2bcHz188R6aMmcSM3c9p\/KkvWbAEObJrgtVWqlBJrLo\/d\/5csAYACuz69u1b5M2TN8zUaMVmm5ZtMNBpoGhDOxLIhdDQgUPRv29\/UVa3Vl0R1JFiCzg0chAKf3IPM2rYKHG\/Xu16oNWnUulDBoGQ7ksl84ePflg+ewWsK9UQfVSvYA3LGuZYsnoRBvYcLMqi+iOw4j8q+w9L36lTapToUTGuVJg\/e\/4M23dtR6e2nZAoUSLRNRkFShYrqQ6TLGkyvPNRFP7+iZ75nXt3dIIgy3shnfPnzS9u7T24F+VKB+ycWL95PU6cPoFZk2bBbb+bMFhNG6fZFUANKAg1JRozb+68OO95Xlz7KQF8pR\/9O\/dvizJj\/pDPw5jnEJrs9LtCKWmSpKFV08s9+bsj3c\/oRQgDGFQaV\/W6A0AJNExJPpPwYpHGC\/l3IrztY7r+4yePxZAlSwb83sa0DDweE2ACTIAJMIHYRIANALHpafNcmQATYAJMgAmYEIEsWbLA3t4eW7Zswehxo\/G\/Gf8Titya1jVx+fxlMVNamX\/77m14XPAQK6o\/ff4ULIEkSZKI8pDuB9tIKaxoVVG9deXaFbHboFkTXf\/4zR2aY\/O2zbj\/4D6KWxbHvIXz0LR1U2EQqFm9JsaOGqv2Edr9iVMninq0WpWU5pdvaOZIhUULFsV5r4BV4mqHnAlCQK44z5YlG459PYa+Q\/qibYu2OHD4AMgooG0AMC9ijjUb16B2jdpIny49\/vf3\/0Tw3hzZNIalIJ0HU0DKe7u6dljnuk4YDhrZNcKly5cw1GUoOrftLN7ZMiXLYN+hffC46IESliVEEOEe\/TU7E+idbNeyHTZs2SB6Hz9rHKaOmoY3b19j8ITBkMrLYIY26CIKAkzJ1A0AHz58EPNMlFhjZBIXBvIhlcXkRm2n205QgOw4ceMoRsl4iJ8ggfjNlEGztRXTsp0sozOV6V5rJqnpU+N1Vrse5eV4EgeVJYyfEPETxheG0QSKDBT8nALcRud7Ll0A6TMGgIwRETdexDz0SvbG8H2i3zRpACB3fpyYABNgAkyACTCB6CfABoDoZ8wjMAEmwASYABNgAtFEYOzYsdixYwc2bdkEcpOybsU6FCxQEMtXLcfifxbj1p1bIIV5iWIlNIrGEOKNknI3Q\/oMuHX7VoiSvn79GunS6fp6z5olq1qf4g5QypxJV6FBhgpKpFxuZN8ItNuAdgocOHRAyGZjbYOZU2eKHQyh3ZeKHVIU2bWrL\/rU\/siWOZv2JedDICBj9dKOkWH9h2HqnKnYsmOLWKHd27E3Gts3VluOHzEenXp1Qu1GtYVy076uPRw7OMLTS7M6X634h8zMiTMxzGUYho0dhsGjByNj+oxoZNsI\/Xtrdoq0dGiJs+fPomHLhqDV2LTjYeTgkUIuck3Vr3s\/sQvg7v27OHX+JCrULw\/anTDKeTQWr1n0h9EN9HZsCQKcSBO7Q67QNqSnceXqFSHO7Tu30cGxvSGJ9kdZyOAgjEj+71HgBuK+\/5ddY7BQait1Zbl6VnqhOCOU9LkDQBoAbt26BbuGduLvFe3+od99eZZ\/A+RZMy\/NnGQZzWPSjEk6c5H16B71RfMkYwedxXup\/F1MnDgx3Rb3yZhAfzeFkcY\/Hy+u5poMROpYSjvKq30qf5sorx7Kbxn1T3Ojg\/JkyHn77i3I3VqxYsWQKlUqMS5\/MAEmwASYABNgAtFLgA0A0cuXe2cCTIAJMAEmwASikUDhwoVx+PBhdO\/eHdeuXUOdBnXg3McZI11GggL3Th4\/GaVLlhZKHwq6qyougpGJ4gN4XfYSdbQVJlSV\/HiXr1oeFuYW2LJ+i9pa+o6mAuk73sfHB3\/99ZdaR7oAyZUzlyjr16sfejr2BAUSdtvrhtXrVqNd53bYt3NfqPflboNECRPB6\/AVjfJLHYWUQFoXnA2RACmyKJGSyqmnE7p16oanz54iZ\/acQVYZFy5UGGcOnhHGmxQpUiB5suRB+r1\/+X6QMnLro50oxsP8GfOFux9yM0Q7CLTfMYoTsGrRKtDK2Pfv3yNLZo3RqHnj5mo329dvF8GByZDUoE4DzHKZI5R0LRq2VOsYYya076QxziewzDJ4t\/TxHvi+Pq8\/+Gl2J6T9K60wgNKzkApd+n7Ia5JR+znJvPZZ1PUPjiHySl+ynaxHt2U9WUe95z+GUBb\/+onfv35rFMdKnsq066n9ig7FMFHyQRz0laQbJl9fXxw\/cTxSYsycPzNS7WOqcdasAQb0mBqTx2ECTIAJMAEmEFsJsAEgtj55njcTYAJMgAkwARMhUKlSJXh4eKBhw4bYu3cv5v09D4UKFMKMyTPUGVLAXkqkSAoptW3ZFu27tsec+XNASnrttGT5Erx+8xrkXiikRGNSOnn6JOxs7dRqdE2rtSkewYJFC\/Dk2RNMGDMBlStWFgetvFy4ZKFQSP+95O8Q75cro\/EfTysnb9+7BcsixcQYpBgbPH4QCuUrhI4tOqnjciZ4AnGUFa2U5GrfJImTiNX1wdfWlAbe1RFa3dDukSsTMjSElMhPfEi+4jNlyIShzkPRZ1Af7Nq\/CzPHzA6pGy43IALShU5gBbYhiCjdzbRq2gojB400BJFClIH4ff\/+Hd9\/fBcrySn\/kwwF\/oYG0VAxMEjDBSnU6fdeXY2uGDTktWjnb2CQ9WhlenGL4iGOH903pGGSfmtaNmslDIRxaZeDctBKfDpLo6E8y7nTmY679+4KYyXJKlwmSauwFiP6\/aN7CZQjnjhrXD19VoyPYgzFtExMfijsJK9f2nnlnhyfdmBQXuwYoP6UXQPiUMYQuwcUl1LxEyjunOInUMf7\/v0bXLe6imc4dOjQ6MbK\/TMBJsAEmAATYAL+BNgAwK8CE2ACTIAJMAEmYHQETp8+HURmOzs7HDt2DC9evMCbN29w\/sJ5lCxeEteuX4NjL0dRPzQf\/\/b17dGtSzeMnzxeKPvJNQ8lUlZs2b5F7CTo0KaDKAvuw7yoOayrWWOEywiQX2OLohY4dPQQ5v89Hx3adRCKknx582H4mOHiXp1adfDw4UMcOnJI9E0Kk9DuyxWi5K969LRRcHLsDwszCyzfuAwbd2zAv6t2BScWlwUiIBWyoRmDAjUxmMumDZui35B+wnhx\/9F95M+tCTBsMAKyIGK3UPN2zYSbE1KQfvz0UVCRylpDQiS\/C6QkN\/REimYyoNFhiknuJqPdP0MHmK5inGLhrN+0HhkzZoSVlZUpPkqeExNgAkyACTABgyTABgCDfCwsFBNgAkyACTABJhAagfnz54MO7UQKonr16mHXrl0gdz52TezE6k9yrzJ6+GgRiNfzYui+28eOHIsUyVPg6PGjWLR0kVilSIEoW7dojRGDR4iArdpjBs4vmrsIzkOcUat+LbEiM13adMIV0ZgRY0RVmxo26NOjD6bMmIJuvbsJo4BVOSssWbDkj\/fnLpwr6pS0LAW\/D75o06uVuC5aqCgmDJ0Iy8KW4po\/QidAhhZKxqD0DDwTUhKSmxIK2vrxk8Z9S+A6fK1fAqvXr8bps0ENlImTaHys61c63dGN+bugOxPjv5IGAGM0TIaH\/tevX0X1tGnTqjsJwtOe6zIBJsAEmAATYAIRI8AGgIhx41ZMgAkwASbABJiAHgiYmZnpunwIJIOLi4swAJQvWx67t+7Gu\/fvIAP1tmz2Z1\/ppOwfNkgJ1qoctHKXdhOQ6x7hTkFrrFo1auHds3daJZosKTVWLlmJz58\/4+Wrl8iZI6i7F5eRLqDjydMnSJ06tXAPpN1RSPcpaCOlv1L\/Bdclm\/He9z2+ffuGDOkyaDfn\/B8ISK8YckfFH6ob1G0yWpDyn1KOLEHfLYMSNozCSHciYaxu8NXIRQ0l2s3TrVs3Vd4KVhXUvKFkKKArJUPcnWAojGJKjthijCEXR\/Sdv3PnDr58+aIGH44pzjwOE2ACTIAJMIHYSkCzBCq2zp7nzQSYABNgAkyACZgUgcqVK4v5LFm2RLgAksr\/iEyS\/PbnyZ0niPI\/LH0lSZIkWOW\/dluSjcYIKQW+L1esx\/NfwZ46ZWpW\/ocEL5RycstCyRiVnsJNVJ58Qv4Rk4eJs9F+KP7aKUnFp+bK+D+lW53MWTKja5eu6lGkSBGDm5xkb4zfBYODGUmBAnYAGL47pshMNVWqVChiVkQYr93d3SPTFbdlAkyACTABJsAEwkGADQDhgMVVmQATYAJMgAkwAcMmUK1aNQwcOFC47qGAvg+9Hxq2wOGQTq5YN7UV0+FAEDVV\/bcA\/FaCgBpj6t+rvxB718FdmDp\/ijFOQUdmU1M+G9Oqevkd4N8UnVdSLxcyCPAvJbCxqSercprdMBSzhxMTYAJMgAkwASYQMwTYABAznHkUJsAEmAATYAJMIIYITJkyBTY2Nnj\/\/j3KVy2PI8eOxNDI0TuMVJTG8d8BEL2jmW7vUtkpDSrGNtMmDZrAqaeTEHvesrmo2qiycKVhbPOQ7zO53TKlJHcAyPkZ8txUGTWbYgxZVJOXTe4AkDu9THnCVuXKi+kdP37clKfJc2MCTIAJMAEmYFAE2ABgUI+DhWECTIAJMAEmwAQiS4AUvBs2bICDg4Pwxd+uczt4P\/KObLd6by+VdVKBrXeBjFQA1e2Jke4AIOzD+g\/D8AHDkShhItx7eA+2besZXVBjaYBJnMjwguMa6asdbrHV3xR\/t1jh7oAbRBmBuPE0\/1v+MxbsADArVFhwe\/DgQZTx446YABNgAkyACTCB0AmwASB0PnyXCTABJsAEmAATMEICadKkwcaNG1G\/fn34ffDDkuVLjHAWuiLLlaFxZRRb3dt8FUYCMgaAVECHsZnBVevXox9cV7mKGBW37t5EiZrF8OLVc4OSs3YLG+QomQ3Oo\/uFKFd+i3xIlz2tCIodYiUDu0HfxWWrlunsvPDwPI+z586KAKckrlSuG5joOuJIGdmoqINFLxcBLoBMOwYAwU2YIKFg\/P27JmC2XoDzoEyACTABJsAEYhkBNgDEsgfO02UCTIAJMAEmEFsIkFJr5MiRYrqL\/1mMl69eGvXUpbJOrmA36snoUXip7JQ89ShKpIcuX6Y8Nq3YhNSpUuPt+7ewb28X6T6jugN6Xw8cPyjicgTXtzE+h+07t2PQ8IGQq7V\/\/PiB2va1cf\/BPUgDnTHMS8oovxPBPR8uixkCsckFkK+fr4BKAYE5MQEmwASYABNgAjFDgA0AMcOZR2ECTIAJMAEmwAT0QKB06dKoWLEivn37hv9u\/qcHCaJuSLkDIE4c\/udbZKiamtKzklUl7N++X7gDevr8Kc5dPBcZPFHetnSxMvDxfY+znmeD7du8iHmw5fou\/Pr1Kx4\/eRzsSn75XZQyyndKXhvL+Tc0gbDZAKD\/JxabdgBQfB5KtFOPExNgAkyACTABJhAzBPj\/IGOGM4\/CBJgAE2ACTIAJ6IlAzpw5xchPnj7RkwRRM6xUMvIOgMjxlEpPGaw1cr0ZRuvcOXOjepXqQphdB3YahlD+UmTKkAklzEtgz2G3YOWqbVMnSPnuvbtRt2Ed5C2aB4VLmKFZm6a4deeWWm\/KzCmYNH0SXCaOQUHLAuJMN+k73tOpJ8yKF0K12lVx6MghtOvSDjt27RBtT505Beu61fH23Vu1L8rUtK0h6pDSf9yksahsUxnZ8mdFsXKWyJAzPUpYFcedu3dEmz3792DitAkib9uoHlavX41adjbieuqsqdi0dZPI0\/f1+vXrsG9gjxy5cqBY8WIY4zIG0eX25ObNm0iZOiU2uWrGF0L84UP+pmgbAJyHOsO6vvUfWvLtqCYgf9flM4nq\/g2pP+l+Tc7ZkGRjWZgAE2ACTIAJmCoBNgCY6pPleTEBJsAEmAATYAKCQK5cucT5xn83jJqIVAxpK+uMekIsfJQSyJEth+jvvve9KO03Kjqra10P+4\/sC3Y1fbYs2XSG2On2r6K0bwuzgmaYPXU22rZqh8tXL6N91\/ZqPQrqvXbjWmzetgVVK1dFmtR\/gZT37bu2w\/Ub1zB35jx06dAFvZx74ujxI3j95rVo6+PrA68rXkGU8JcuXxIuwhx7O2LxssW4dfsm8uTKg2EDh6FF05ZiJ0DFGhVw++5tFMhfANUqVxP9tWvdHsUsiqFj247iunLFKuKaLj59\/ISq1asKY8P4cePRq1cvLF++HN26dxN1DeGDf1MM4Sn4yxBHc5bPxIAki3JRUqZIKfp8+1bXEBflA3GHTIAJMAEmwASYgEogvprjDBNgAkyACTABJsAETJBAjRo1MGHCBBxRFIHGnKRiiA0AkXuK0n1LnLj+GrfIdWcwrUsUKyFkOXbmGGo1t8Gmxa5IldIwfGzXrl4H42ePw8UrnihhUVKHWdx4uuuRTp89A+uq1pgxeaaoV7+uneLeKCEmTJ0AHx8fSL\/hz58\/w+kjZ1AgXwFRb42yEp8MBZ6nLyJrlqyiLHHiJOjaq4vOeCFd7Nz9Lzy9PFFOiatw6fJFHNt\/HIkTJxbVK5S3Qs9+PTFhynisWLwS5ctaYeXalXBo5IBkSZOhUIFC6DeoH8qVLosfP3+INlevXUXKlClxYN8BtZ90adOhbfu26NunLywsLEISJcbKf\/9iF0AxBvsPA8nV8PJ3\/g\/Vjfp2nly5kSBBAly9ehVv3rxB2rRpjXo+LDwTYAJMgAkwAWMgoPsvbmOQmGVkAkyACTABJsAEmEA4CJQsqVE43rp9Cx8+fghHS8OsygaAyD2X379+iQ5k0M3I9WY4rRvaNkTThk2FQDduX0fTrg4GI1yOrDlQuEBh7D2yV8j03uedKls8JUiwdpo0dhI2rta4sSFXPafPnsbd+5pdDZ8+f1KrZkifQVX+U+GV61dB8QSk8p\/K7G3tET\/+n9c7kdLV4+IFdGjTAVcUI4KVouD\/79Z\/iiHgkjiyK\/JTSp48hTjLjxlzpgv3Q0VLFZFFwG+NYYkMTR8+fEDpsqVRpVoVDBoyCOnTpwd9f7fv2B6qa6ApU6fAZayLcOdToVIFZM+ZHY0aN4K3t3fAOBHMPXjwAK3atEIR8yI4dvyY6OWmsuMhpOR11Qs1G9TEgiUL1Co3bt5Ak7ZNkK9YPpSpVgbjp40PsqtCrcwZJhCIQAplB0AuxW0ZfUeeP38e6C5fMgEmwASYABNgAtFBQPdf3NExAvfJBJgAE2ACTIAJMAE9EkiRIgUqVaokAgHv2bdHj5Lw0IZA4Jei7KUkg24agkxRIQMplufPmI8dGzT+7skIQMGvDSWRGyBpANh\/bL8qllz5LAtolf\/AYQNQpGRhFLDIj7Zd2uDqtSua2\/7Pji60Ff10TT76ySigncjIE7hM+752\/tu3r7Awt8Sbt2\/gts8NNepZq4edQ31RNX26dNpNsHHzRuGGqHLFyqKcDAlLVyxR6\/z48QMPHz7ExYsX8ffff6NOvTrCDdKs2bNCdQ0kXBytW4vRY0ajbp26GDRwEM6dP4e27dqqfUck4+vri8pVK+Pli5cYPGgw8ubNK7rZc2CPMHgE7vPu\/bto1r4ZMmfMjK4duorb5AbJpoEN3r17B5dhLujeqTtWrluJXgN7BW7O1+EgIA27sWEHAGFJ57\/q39PTMxyUuCoTYAJMgAkwASYQUQJsAIgoOW7HBJgAE2ACTIAJGA2BFi1aCFnnL5pvNDKzoNFDQLoACqx4jp7RYr5XqzJWyJ83vxh4xJThMS9ACCOSG6AHj+7j5t2bcDvkptYK\/By69+2Grf9uRZ8efYQbntuX76B71x5qfZmJGzeezIozKRTfvQ\/YWSBvfvz0UWbF6nu6IMW8TKQUl6mYYgBIlCgRunXuDu9bj3D2mDsO7zmCQ26HxdGkoYNO2xcvX2DL+i1YMHuh6OKi10VcU2IQFDHT2hHg33myZMnw\/Olz2NazBRklyTVQ2zZt0blTZ8yZPQeum11x+fJlKQpevnyJnf\/uxPBhw9G7V29hBPC86In379+rdcKbOet+Vrgl+mfpP2LsrFk1rpKon3Oe53S6e6a4WGrSpgksi1pi6dyl6k6KSTMnCZdGuzfvRqumrdChdQfMmDBDPLMr1\/0NNTo98QUTCEqgaaNmonDp0qVBb3IJE2ACTIAJMAEmEOUE2AAQ5Ui5QybABJgAE2ACTMDQCLRv314ovrwue+HV61eGJl645IktK0TDBSUclX\/9\/iVqm5oLIG0EvR17i8sN29ejebdm0Hado10vJvMF8hRAnpx5sGPvdpw6d1IdOk6cgP8doR0Lh44egmNHRzh26iYU6bQymgL7Uvrx86faLnCmiFlRpd51ESdA3qPV6rSjQKakSZOKLLkWkunWnQD3N5+\/fBHGE7d9u5E0SVIMHDoA1etUg3Xd6uKoYqOsnn\/1QjUkpEuXXrghkqu3aTxS7s+aMgsZM2QS8QHGDHcRQ33\/\/h1kMNi\/fz+KFCkCCkp+8dJFcUjXQO7n3KVYIOV8vrz51Ot8+TR5Pz8\/tSy8GZuaNrh6+Spy5MiBL8pcP34MMI58\/vxZ7c7vgx8c2jnA188XyxYsQ0IlBoNMp91Po7wSJ+HmrZsioDIFVU6n7IwgBucvnJfV+BxOAvIdCmczo63e0L6h+H4cP34ct2\/fNtp5sOBMgAkwASbABIyFQMC\/uI1FYpaTCTABJsAEmAATYALhJJAkSRKYm5uLVv\/u+jecrQ2jemxTEEUXdRkDIPDK8+gaTx\/9tmjSAj06a1bNnz5\/CsVrWOL2ff0r2cgN0JK1S5Azey6BJfAzIEVzMYviImA3KcvJcOG61RWL\/lkk6n\/+EqCkDsy1Q5v2QlHdd2BfvH7zWsQO6N6nm041s4JmYiX71JlTQG52PBW\/\/06DnSCNQeT\/36m3s7g3aPhAdGrXSQQjLlywMFKnTqP2Rav5KSVVfleePH0i+iTZ7967C1LQ29jZKMr+56DdB2MmjBZ1addBt+7d8O37N5w6dQpVqlZRD+kaiGSSKXBgVNqZQOlnKEYQ2Ta087Lly1CmXBlkypIJHh4ealVtw+L9h\/fFTgcyAGzaukmtQ8+DXCSRy6Aa9jXUw765vXBt9OjJI7UuZ8JHIA40sSO0n0P4ejCu2smTJUcDu4ZCaHKPxYkJMAEmwASYABOIXgJsAIhevtw7E2ACTIAJMAEmYCAEevbsKSQZ4TICFMTSWFNsURBF1\/NRXQBprTyPrrH02S\/5Z9++bjtyZMsBUpzXbmGDi1cu6lMkkBugr1+\/oGblmkIOqXjXFmr44OFC+UyBdfMWyYPlq5dhy7qtIGMBKexDShRYdMv6rcrK9P9QqFhBNGzeABWtKqqr9akdxQOYMn4qjp04hhJWxdGoRSPFt70jcisBSUnB7u5xTgQOnjphGrbs2IL2ju0xfMwwsRq\/S4cu6tC0Aj51qtTCUPC\/BXNEeYc2HfH8xXMh58Ob3sKF0PjRE0CKTkr03qVQggiToaBnj57CHRC5BNI+Ro0YJerSh1QIqwVRkFm\/YT36OfVDBasK2L51O6pVrab2qv27kjFDRuzduhfNGzfH2KljxbyoYpLESZAooeIiqWM3PLz2MMgxrP8wtT\/OhI+A\/C7I36fwtTbO2mRgo7R48eJIubYyztmz1EyACTABJsAEYpYAGwBiljePxgSYABNgAkyACeiJAMUB6Nixo3B90aFrB3z69ElPkkRsWLkDQFtRF7GeuBURkDxNmUaFchWwZ8seFCpQCOSCpnXPlkIRHVNz3rt+P+ZOmKcOZ2FmAe8Lj9G5lUaZHj9efDRUVgG\/fvRGDepbuUJlHNh1EFc9ruGW1y24bduDCuUr4OXDV2ju4B\/LY9Z87Pt3n9qvzFgUtcCZo2dx5dwV3Lt+H9L9jrxP53at2uH+jQe4cMoTd6\/dQ5uWbYSv\/45tO2LdxrVYs341KH\/nyl1cOusFikGwfuUGHd\/\/qVKlQq2atZXdCsUwYcxE0f2EMRMwyGmQ4EvucciFULfO3bBvpybgMe1C2uy6GQULFsSu3btA7ojkQbsdOnTsAHJRFp2Jxi1UqBBmzZyFqlWrqn79aUxtxXPG9BmFgWPM0DGgZzR49GC0dWyLDHkz4KsSLPnvZX8jZ5GcOkfHnh1xRQZrjqZJ0Pgr1q4IsXfbprZInye9emQpmAXm5c3RpmsbeF6KfLDZW3duib7JOBTViThT0n4OUT2GofVH39cqlariw4cPwghgaPKxPEyACTABJsAETIkAGwBM6WnyXJgAE2ACTIAJMIFQCcydOxeFCxcW\/qvHTR4Xal2+aZoEfuO3mFhsMADQRGnVu+sqV6RPmx5+H\/0wb9n\/9P5gydc\/JbnqOTiBaBU6reqPSMqcOYvwLx5SWxo3Z46cOuOPHTlOGBichzij36C+cN3mKtz7rNu0Dg2a2mPW3JkoX7a8EkskldptPEVpGz++RnFLhZ3bdwEZB4aNHoojxw6DYg0sX7VM1JcK3gH9B+Dhw4dw7u+Me\/fv4datW+jZq6fIW1pYqn1HNOPu7o5Nrpt0DgowTKlc2XK4c+cOzp0\/JxTN2vEEgosTkfavtBg9ZDTc9ruJ+AWZM2VGF2WOlKpUqIJxI8aBjAQUdJrcF5kX0bhZExX09EGy\/D37b3FMcZmClk1a4ubtm6jVqBZOnjmpJ6n+PGy8+PFEpdhkAKAJd+3YVcx73bp14swfTIAJMAEmwASYQPQQCPgXa\/T0z70yASbABJgAE2ACTMBgCNCK25EjR4J2A0T3atuonrRUWPMOgKgma\/r9ZVIC0nbt0BUTpk\/A9IXTkTljFjjUb6q3iX9TVpFTkkpPvQmiNTB9v\/43\/X\/Ikyu3iEFAsQe+fv0qXPYULlQYS+YvFbsVtJoo\/v59UcWmCvw++KJo4aLIkzuPCF5MuwgcWjuIqpkyZhJnOdeGDRrizYw3GDtuLJb+sxSJEydGlcpVMGHRBCRIkEC7+wjllyxdAjoCJ4cmDmjdujVOnzkN2\/q2OivNs2XNhotewbuHatW0FdZvXi8C\/pLRZOKoicifJ794l46dOobEiRKjklUlDO43OErkDyx3eK\/TK4GZG9s11mnWuV1nNGvfDL0H9saJvSeQPLnGLZNOJT1fyHgYse33vVrlakp8jdTw8vLC5s2b0aRJEz0\/CR6eCTABJsAEmIBpEuAdAKb5XHlWTIAJMAEmwASYQAgEzp49K+5YlbMKoYZhFrMBwDCfi7FIRUGBbaxthLgLVy7Uq9gUCJdSvLiaVc\/RKcyxfceDKO5DGo+UsM59+mPn5l24f\/0Bzh0\/D++bj3Bw96EgfTRv0hx37t3BtRtXxep3t31umPf3PFCA4afPnqpDUFwAStqK3c6dOuPh\/Ye4duWaOLtuckXxYsXVNvPnzsexo8fUa8pYV7eG73tf5MqVS6dcXpBrIbof0kH10iiBjNevXY8H9x7A66IXaljXEM1ta9li3T+aFdgzJ83EoZ2HZLfCVdZu192oXqW6iG9ANzq07oDbF2\/j4omLuHXxlmhraa7ZvfDyksCrwQAAQABJREFU1UuhaC9arigKliyI1l1a44H3A7U\/j4sesGlog3sP7sGhrQPyWOZBlbpVsHvfbrUOZSigcJ9BfVC4TGFY17fG0RNHde6H54KMAhNGTcDjp49x6LhmbpNmTILTUCedbk6cPoEadjXw3ue9Tnl4Lx4+eoj23dujeMXiyFU0l5A\/sNugDx8\/YJjLMJSvUR5lqpXBhs0bxDDa70l4xzXG+hQTY+iAYUJ0BwcHncDUxjgflpkJMAEmwASYgKES4B0AhvpkWC4mwASYABNgAkwgWgi4ubmJfmta14yW\/qOrU2kAiK7+uV\/TJkCKtt5de2P\/of24c\/82jpw6gmoVAoLAxuTsfyoBcSnJVc\/ROXZhs8IR6p540Yr+kJLLxDFiFX3KlCnhMsYF5HrHx8dHuA1KmCAhkiVPhvPnzws\/\/0WLFkWxYsV0uqLvc\/bs2XXKYupCxh6QvykRcTtDbWnngHaiOBON2zRWdkT4YajzUDH3+YvnCwX4qQOnQDtRfJVdE7TboGm7pihTsgxchrpg9cbVQmHuccwDObPnBLmI6tCjg9iBMXH0RLx6\/QqO\/Rx1jCja44YlX650ObFD4fbd26L6w8cP8fjJY52mPr4+8LrqpRPvQadCGC7IrRIZLArkK4ABfQbg58+fWOe6Dt2cuqGIWRERj4N403woZsIQpyHiPZoya4roXbooC8NQJlMlsRKAWyaKB8CJCTABJsAEmAATiHoCbACIeqbcIxNgAkyACTABJmCgBMj\/9e3bt4XLgVIlShmolKGL9fu3Rnkaei2+ywSCEiAlqE11G+w\/vB8LVy7QmwEgbhzj34RMgXspUTDdTh07iSMoccMuiRtP8xzCuuqcguDmL54\/yKS2rt0K88LmWLV+lfC3f\/rAaeTLk0\/Uq1m1JkpULoFpc6ZhxoQZatu2LdqiT7c+4rp65eooVrEYjp08BirfsGUDrl6\/igvHLqjBodOkSoPuzt3V9uHNkMGCYhrcvX83vE3DVd\/9gjtSKrErFs1ZhOxZNQYeCsZdzrocznmeEwaAvQf3CkPcwX8PwrKoZucEGY\/GTB6Dnz9+hms8U6i876AmoLelpaX4PpnCnHgOTIAJMAEmwAQMjQAbAAztibA8TIAJMAEmwASYQLQRkKv\/rata6wQAjbYBo7BjuVo3rMq6KBzapLqKgzhiPrGVY9lSZYUB4OOnj3p7rr\/8jVjyndabIJEYWK6ab+bQLBK96LepNMSE9btALoTaNG8TROh0f6UTZZ5enihuUVxV\/lMh+duva1MX5z3P67SrWK6iep01S1YkSpgIcvX3letXUMy8mKr8p4r29ezRo38PtU1EMvTOR7fbqRpVa8DzhKcQ78vXL8JN1IWLF4Qrpc+fP4vys+fPCuOAVP5ToXShFBO7YoQQBvSRPJkmJsPLly8NSCoWhQkwASbABJiAaRFgA4BpPU+eDRNgAkyACTABJhAKgQMHDoi7xub+h4SWytKwKutCwcC3YjGBdGk1yloKYKuvZArvsJyDXEWvL5ZRMW5Y3c6QL\/3hA4aHOCT5vs+SOUuQ+5kzZtaJi0AV0qZNq1MvQcIE+PlLs\/qdVunTWNqJAiTLd1e7PKx58utP7nnkqvywtotIvZXrVmLJyiUgd0Px4sUTRhF6X\/51+xdTZ08VbpCoXwsrC3Rt3xW9uvZSf98\/ff6EGvWsRdyJiIwt2+QsmAODnAejp2NPWWSQ5ydPn4B2RFBauXKlQcrIQjEBJsAEmAATMAUCxr\/\/1hSeAs+BCTABJsAEmAATiBECHz9qVj1nzpQ5RsaLjkF+KYokThEnENsNKbSKm5I+dwBI5bl8FhF\/mvprSb7dKZGC11hTVPOndyu4ALrvfN4hV45cOphCGztLpizw9Q1qoPr06ZNOH+G5OO1+WlQnP\/wyUcwC7fTu\/TvtywjlN23bhAEjBqB8mfJwXemKO5fuYPPqzaIvii\/g2NFRuOHKliWbOLtMdgEd\/huTIhXnIEIC67nR7r27xLOuUaMGatY0rrg8ekbHwzMBJsAEmAATCBcB3gEQLlxcmQkwASbABJgAEzBmAokTJxbif\/nyxeimYSyuIc57nVcCaV4SitF48eLDvpY9UqVMFWO83757i\/ve9\/HwyQM8ff4UdO3j5wNSQtL5v1s3hCyBlX8xJqCeB8qYPqOQgHjoK\/32DwIcmhJYX7KFdVxpxIgf33j\/d0ryl3MJ69xDqlcwf0EsX7NcrLRPkSKFqEZ9k\/Jd291NSO1ledHCReF2wE24BCIXQpRu3r4ZYaMVueKZOGMiyPBbu0Zt0V+ypMmCGCtkgGBRIYIfbvvdQBymjZum9nDyzEmRtyprhUF9B2HhPwtFvINh\/YeJQMTrN6+HWUEzUSeqnoU6uIFnHjx8KCSsXVvzXAxcXBaPCTABJsAEmIDREjDef7EaLXIWnAkwASbABJgAE9AXgcuXL4uht+\/cDq8rXsLtAinB6CAFu5pXgpTKMvL1\/ePnD9CK3wTxEyBhooTCXzWt\/KUjsGKe2snVwcHNkxQ81CcdVE\/ktQL7aiuAtPPXb1wX3Z29cAYd+7VXu9auo51XK\/hnyO863Zd16Pzr12\/hdiNAlp+a65+KbCTjb0U+JU9t5fmHIrMyRZD\/cA2zuIpfbU2erv+785\/O0JPnTkShfIUQh+r4c5VyCNcj\/nJINyRCPn85qYxklInGpfRJ8aX98dMHkCHn67evIGU+PSM5N02t0D+fv3oeegUTvVvMohgypMuAl69fYu\/hPahdvU6Mz1R5E8WY9F0x1iTjGBjzDoCoZt+lfRcsXbkUfQb3waQxk5A0cVLMnD8T9+7fw2SXyWEerlH9RliwdAGchzmLdtf\/u47RE0eHqf2r16+wZccWUZfc6ZCLmS3\/bsHjp4+xYsEKSIONRRELEbSYXPXY1bXDiVMnsGrDqjCNQcF8gyTlVW5s1xhlSpbBvkP74HHRAyUsS+Daf9fEPKi+3IHWyqEVZs2fhc69O6NNszaguAHkNoiSjMvgutUVcxbMxvMXz0FxO6ZPmiEMGKKS8rF2wxosXbFUsC2QvwD69x2A2jV1legfP35A9z7dcODIAdG2awdHtGkZEMOB\/v4sWb4YK9euwlOFE\/XTr2c\/1KtjK\/4uNWnZGNWqVEfv7r3lsOI3176pPfr16oc6NnXg\/cgbM+fOwIFDB5AmTRr07zMA+5WgvuXLWaFty7ai3UPvhxg1bpTyN\/cS3r17h7x58qJH155o0rCJ+vdzzpw5sLe3R8+ePeHu7o6cOXNizJgxaNiwoTo2Z5gAE2ACTIAJMIGIE2ADQMTZcUsmwASYABNgAkzAiAiQ8v\/JkydC4vWb1huR5Lqivnj1AnQYcqKdFvnz5ceVq1fwQVFCeXh5xJi4NPZfaf5C+vTphUKKdh\/QKuJUqVKJY8vWLbh1+xayZ8keYzIZ0kBkpKlWuRo2bt2IFZtW6MUA8FMx1lCKoxiEOOmPgDTAhMdwFpq0tLtk44qN6DekH8zLmQsjaoF8BbDi7xWwKmMVWlOdexnSZ8DqxavhPNQZBUsWFIbW3o69w\/S7R6v4uzl1E\/2Rsj9jhozCB\/\/8GfOFcl4O1LRRU9DK\/GEuw8SRN3dezJkyB517dZZVQjwvW70MdAROZABo6dASFOS3YcuGwnCaOmVqjBw8EmMmjcG5C+fQw7kH7OvaY8XCFRg0ahC69u0qulHd0imGBDJ4TJg6Ho6dHJV4AX5CSd\/BsT327tgn6s5fNB8uE8fArp6dovjvj1NnTqN1x1ZYuXilUN5LuWbOnQmbGrUwd8Y8pc4pOA3uJ4y3rVtojABTZk7BnPmz0VdR+he3LC4U9+26tsO8mfPQ3KEFsmfPgWWr\/tExABxUjAmXLl9E6ZKl8e3bN5BctMNi\/OgJIBdKg4YPxOcvn5Endx4hBsUaqV63Gug9GNhvoGKo\/Yl1G9ehWx9H0E6PrFk0MSMePXqEWrVqoUKFCpg+fTqWLFmCxo0b4+7du8idO7ecEp+ZABNgAkyACTCBCBJgA0AEwXEzJsAEmAATYAJMwLgITJw4UQicPVt2ZMuWTV0Nr65Gl6vOxYr0gNXypCQjRRIpTn\/8+CGUHrTiXF01r7V6XwygLG6mNnHiKpocSgEL2MUl3dOsnFfO8QJWxYubyodUytF14DwFwixZoiQSJUokqmvfD1xfVND6oDHJz7QimdqWyuQuBjrHV1z2kEyUF0dc\/10OWmVUhxIF7FR3MNCOAUWxQ2XEpUTxEuJYvWa1UAqJXQ60o0A5iDfJLQ\/JQs6F5BN5ktWflRhQ+ZCKyuTJNAr91KlTC6V+yhQpIfOSjWwT+OxxwUMYAASPwDdjyXXThk2FAeCMx2lFqfocGdNnitGZ\/\/zxS4wXV35HYnR0HiwiBFYtWhWmZrRa\/czBM3j95rWoHzhwb\/XK1fHq3qsgfd2\/fF+njFwGHdp5CC9fvRQGvKRJkoYagJga79q0S6eP0C6SJE6CJXOXYNakWfD74Keurre\/Zx9iM1JiBye7doPUqVKDWNHug\/fv36tBkRvYNoDTUCds3rEZrttdQb\/lxMpRWZVPTCjwceM2jUVXpFjfuGojChYopLn++hXzFs0TO50+K7ufps+ZBgfFgDF\/1nxx37ZOfbx4+UIxCrjoGACIPRkF6HeUVuu\/Unb9zPjfDJAB4OmzJ\/jfgjkY0n8InHo7i36oDsk9dtJYNG7QRKzQp50Gnpc8UaJYCVFn645tqFqpqgjI\/M\/Kf8ROupMHT6FQQY2s9Pe1Rbvmoi59uHucA\/0+L563BHSPUkWriihbuYwwiBQtYi7K6KNr164YPHiwuCZjQI4cOXDgwAFRrlbiDBNgAkyACTABJhAhAmwAiBA2bsQEmAATYAJMgAkYE4GTJ09i48aNSJo0KXbu2IlcOXMZk\/hGK2uH9h0MTnbV0BCLlc+VK1SGpbmlUN657nRFr44BLj5i4oGRoYhSbDbCxARnfY4RWPEfUVloN0B0JtodJOMMROU4ZLCgQ6bEiRJj4cyFGDN0DA4eOYgjx4\/g0PFDYhcCGQFqVtMEwCUDKO1akMp\/al+ubHnFHdAcRWn\/VMQM8FN2BdCK\/UuXL8nulfoF8e\/uHXjz9g3S\/pVWlFeuWEVjTPWvRa6OtmzfItwKXbl2VRi0mzZupvZBmWaNm4s69x\/eR4VyFRTDSBbs2LVdGAAocPh+xb3RzCmzRBtyo5cpYyZV+U+FNavXVHimEPfpo0a1Grh4RiMnuWy7c+8OPDw9hFyfFWNDudLlhEH7q2LkKFIkIEBz9uzZQbu5aK6cmAATYAJMgAkwgcgTYANA5BlyD0yACTABJsAEmICBE9i3T+M6oVOHTqz8N\/BnFd3iyV0E0hAQ3eMZav\/kkoUUeOu3rY95A4C\/CyBjNgDI94d2tXBiAmElQG6SWjVtJQ5SqA8aOQiLli8CuSASSdn5REp17SR3NVGck0ePvcWtISM1K+W161GefPJLA4CVYjjQThkUwwIlMiR4K375KQUeK0tmjUueZ8+fCbc9jRs0UgwAO+AyYiz27t8rdpDVrVVXtL2lBGYuVaK0yGt\/ZPIfR5atWLNCuDG6fee22FlGxgu58452QuTPmx9Xr1\/F69eaXSOyXcKECUONpyPr8ZkJMAEmwASYABP4MwFlLzgnJsAEmAATYAJMgAmYNgGp9CU\/8JxiNwH5Lshgm7GVRud2ncXUHz31FiuBY5KDDOwslegxOXZUjUUrtSkZswFAfheM+TlE1fOMzn5IwW9hZSFc+GiPkyxpMkwcrXFNd+PWDfVWaM8jleJiiNKuLbvhfetRkIN29shE\/va103uf9+KSdhikUeKkUPLx9RFn+fH23VuRzZUjlziTq6FHjx\/hotdFZYfBv6htUxvkgo0SGRp8A7WnctqFINPGLRsxYGh\/WJW1guvazbh77R62rNsqbsv3j9y3UaIAwZyYABNgAkyACTCB6CHABoDo4cq9MgEmwASYABNgAgZEgFwJUCL\/yZxiNwGpdFJjNMRSHDmy5UDO7DnF7NduXRujFH5Ds2o+NEVnjAoUgcGk7PJ9ikAXem8iZZdz0btAJipAMfNioBX1W3dqFN\/a03zg\/UBcZs+q8Y+vfS+4fIH8BUTx3gN7hIsh6Wpox87tGDCkv46RgZT22un02VMiZgoFHCaXQZROKYGQtRNdk2EihxIAmFIRsyLCxc\/uvbtx7MRRERtA1i9VohQuXLwgYh3IMooXQMGAZXLb6ybGmjZxOqooLolI3htKkGNKP5XYMZTk32X5d1oU8gcTYAJMgAkwASYQpQTYABClOLkzJsAEmAATYAJMwBAJSAUDBbblFLsJsNIz4Pk3ttMEHZ25aEZAIefCREAqzY15BwC5lKEU23fDhOmBR6JSqeKlQC63eg\/sjZHjR2Kf4kff46IHVq5biRYdW6Bg\/oLiCMsQ5CrIrp491m5YCwrCS4GGjyrxBIaOGorMivse6S6I+trguh4bN28QCvY9+\/fgnxX\/oE+PviL2hrkSfLd61eoYNW6U4pP\/PMgHP9WZv3gB2rdprxM7gHYBLF2+BPETxId1VWtVzI5tO4Hc9NRtVBebtm7C\/EXz0aZTa\/U+ZcqWLou79+6KMei7cuXaFXTv213UoRgAlN77aHYhpE+fXlzzBxNgAkyACTABJhD1BNgAEPVMuUcmwASYABNgAkzAwAhcuXJFSFTYrLCBScbixDQBaQBgpSfg2NERKZSAne\/ev8W8ZXNj7FFIpbl0oxNjA\/NAOgTkc2DDqA6WKL8gvptXb0bntp2xw20HWndpjTqN68BligsqlquIPZv3IGGChGEed5YShLemtQ2GjR6KfOZ50dOpJxraNcSAvgN0+ujdvQ8mz5iM7AWyoYNje3Rs1xE9u\/ZU6yyc8zeKWRRHnQZ1kDVfFjgN6oeObToIf\/9qJSXT2L4xPnz8AHvF8EA++2Uil3r7\/t0PihtAMQnWrF+NMcNdhIugxImTiGotm7aEjSJrg2YNkC1\/VjRr0xROvZ1QtXI10G4BSmn93RE9ffpUXPMHE2ACTIAJMAEmEPUEOAhw1DPlHpkAE2ACTIAJMAEDI+Dl5SUkKlqkqIFJxuLENAFpAJAruGN6fEMa7y9F8ebU0wljp4zFwpULYiwY8O\/fGgr8DPT7Nvzyd8ES291hxcRTIMU5+fung\/zuk5sccsElvwPSCJMkSRIc3H1IR6TKFSrj9aMAv\/qkeF8wewFmT50tXAuRux7Zj2z48Ka3yI4YPEL48M+QPoPO7gC6ST78ly9aLnYIvHz1EjlzaFyCyT7kmX4zqf9mTZrLInG+\/+A+fiv\/bVZ8+8v0SVnV36Nfd6RPl04UkX\/\/VUtXg8rfK3POkjmrKG\/u0EI2UWMGFC9eXC2jjI\/\/zgCdQr5gAkyACTABJsAEIkSAdwBECBs3YgJMgAkwASbABIyFAAUW9Pb2BilW8uTJYyxis5zRRcBf+cw7ADSA27dsj9RKYFG\/D36wb2+HZy+eRRd5tV9phFELOKMXAnIHAH8XYhZ\/qpSpQEF2tZX2ceNp\/rf89y\/\/H6gwiETud0hpr91PcM2yZ8seRPmvXY\/+Ngan\/CelvZ+fLyZNnwSzgmYoU6qMdjMRP6B81XLwVOIAUCI3Qi4TXcRYFa0q6dQl3\/9S+a9946QSc+Du\/bsg9z9WVlbatzjPBJgAE2ACTIAJRCEBNgBEIUzuigkwASbABJgAEzA8Ai9fvhRCZc2aVfg+NjwJWaKYJPDrt38A2rhxYnJYgx0rRYoUGD9yvJDv4hVPlK1bGs6jnaJVXmkA+JPiMlqFiGTnpjAH+V2IG5f\/lzCSr0Okm0sjjHyvIt1hFHSwTokzkLtwbuzYtV3sNgjcJcUGqF2zNuo1rgfLshbIUyQ3NmxajzX\/rEG2rNkCVw\/2evqsaaK8T58+kLsggq3IhUyACTABJsAEmECkCLALoEjh48ZMgAkwASbABJiAoROQAYCT+PskNnR5Wb7oJSAVbPHickBoSbpZo2bCHcmkmZNw2v00Nu9yRbe23VEgbwFZJUrPUvFszAaAKAWip87UHQBsANDTEwgYViq\/5e9TwB395RraN0KWLFlR3LI4MmfKHEQQCjhM7n0+fvqIs+5nkU5x+1PErAjixw+biuHsubOgHQDk0ogMAJyYABNgAkyACTCB6CMQtr\/O0Tc+98wEmAATYAJMgAkwgWglkDRpUtE\/BTHkxASkgo39nuu+C+VKl8OO9TtQtGxRvHj1Ap++fNStwFcmR+Dnz59iTmwM0\/+jlQaAXzJAhv5FEjEC6taq+0dJkiVNButq1n+sF7jC1FlTRZGTkxNSpkwZ+DZfMwEmwASYABNgAlFIgPd7RiFM7ooJMAEmwASYABMwPAIZM2YUQr169crwhGOJYpyAuurZ3+d2jAtg4AOSSyBKdxS\/3NGVpBFGcV4eXUNwv2EgoH4XeAdAGGhFbxXpAggGZACIzhmf8ziH4yePCcV\/3759o3Mo7psJMAEmwASYABNQCLABgF8DJsAEmAATYAJMwKQJkHuBTJky4cOHDxg5eqRJz5Un92cCqvL5z1VjZY3sWbOLed\/3vhdt8\/\/9yz8OgwkYAIzZjZE0APBumGh71cPcsYzD8BthDwIc5s4NsOK02ZrV\/6T8T506tQFKyCIxASbABJgAEzAtAuwCyLSeJ8+GCTABJsAEmAATCIbAsmXLYG9vj7nz56Jv777CV3Ew1bgoFhCQCtsnT5\/g0uVL+PnrJ378+IEfP3\/g5w8lr5zpOmGChPj+4zu+f\/+Ob9+\/4cf3HyBFKbnqIJcp3759w8fPH\/H7128RXJrKqW9S5IlzHOWs1Ke8Wg6tvH853aOk3KEP0Z76EP0oBWpe6YtWCcu+qJzkoDO5cpHlsg\/q8\/u375p+qC31qbSX\/VEbmrsso\/pfvnwRPrkp\/\/rta8xbNhc+fj7w9fNVDGh++KD4+iZ\/35+\/fMbXr1+UxcoaZaUcO64iTzwaR9ldQXmNvMq0xFw1slP+nc87GgKPHnujUfOGQn7JPXGixEF8iMtx6Cw5U167nPoTylNFJFkuypR6NKbM01kyoHM8xV95\/PgaWT8r8\/+ouAr7pTzT30qwaFKQi3GoZxpPlFMeeO\/zXvS5ePFi7Nq9S9zXHkPN+8tDfRFzOtNB71T8ePExYsQI5M+XX\/QV0x+\/fmoMMcSBk34JSCOM9rurX4mib\/QLFz1w5NgRJE+eHOT+hxMTYAJMgAkwASYQ\/QTYABD9jHkEJsAEmAATYAJMQM8E6tSpgxIlSsDd3R03b91kA4Cen4c+hyfFPqUFSxaIQ5+yGPLY67eti3bxKED38VPHo32c6Bxg\/4H9kerezMwMQwYPiVQfEW1MhghKZKjhpF8C0ggTGwwAU2dqVv9T4N80adLoFzyPzgSYABNgAkwglhBgA0AsedA8TSbABJgAE2ACsZkArby9d0\/j0iRjBk1MgNjMIzbPnVanU4qvrPxOkCCBZpW6XCFPq9f9D3pnaIV9PGV1OK06p9Xav+SqcGUlePwE8UGr1WnlLq2kJmWqsjZca5X4b1FfKdKU07Jx\/9Xg2qvK5bMQij+5WlwZRyoCRV1afe5\/aPcnywKvcBdtlb5oriKvDCLryva044Bkl3WlHLTrQSqGzQqaIU+ePEieLLlYrZs0SVJQUG0K+kln7XFpN4FY4a6wUPPExF9uwYcYKEnmqT3dF7sqiLHyTD5+DBp8WI5DZxqD2lBeu5z6Dela1qc6lGh8ecjdH1ROz5iCkcp3gM6CkzKWyCtn2mFB4\/j4+uDmzZsiL3clUB9UTyYpI52pnPqnZ0Lv1Y7dO\/DixQtcunQJy5YvU5nQ\/MSuE2WHCe3I+KLstPj65as4044OyY7GuH7jOnx9fEWfYkwFL82H+pDPluYu2wTO+\/j4iGazF87GkpVLguVH8xfJf97yWrAWOJRnSC+VTEqWxhH\/KWdxS3ZB\/JSk9qG8f4KN1s4U4kSHeCdoFwnx8v\/+ET\/xfVTK6V2R7412fclc8Ba7O5QdHko7+r6KM33v4ycQ\/YjfgHgJkCChcii\/BbWr10bWrFnlTGL0LJnE6KB6GOzYyWM4dPSQ+D1xdnbWgwQ8JBNgAkyACTCB2EmADQCx87nzrJkAE2ACTIAJxCoChw4dAgUBLpC\/APLlyxer5s6TDZ7AkEFDMMB5QPA3Y3lptlzZRMwM86LmWDRvUSynET3Tv3z1sjAAuO1xAx36TLQTg47YnibNmIQ7l+7oBQMZLCiR8cRUExmmRrqMENMbPnw40qZNa6pT5XkxASbABJgAEzA4AmwAMLhHwgIxASbABJgAE2ACUU3g8OHDosv6tvWjumvuz8gI0KphSrRSmlNQArQinQJmU8qRPUfQClwSJQRGDhmJ\/kP7a1brKyvjtVfC02p1clWVMGFCJEmSBIkTJ0aSxEnENb2\/VNfX1xfb\/t0G2pUxedxkdfV+fGV1O61mp1X\/VC+esoKelMtx\/FfZU3u61sR+0Iz7U9m1QTs\/xMp9Wr3vfyiZgJX8yqw15fIcUI\/GkUnMQ4yn2SlB11KpHXDW9CF3YYidNYpymBTEPxW5xVlc026GX\/67GjSxOX7IehSzQ+Tlbg5NfAUpO\/Ut6\/7yj\/NBfYndKf67JDT5n\/BT4j5cvOSJT58\/yWnE+JnkpaTNMsaFiOYB12xYg+v\/XUfu3LnZ9380s+bumQATYAJMgAkEJsAGgMBE+JoJMAEmwASYABMwOQJydWu6dOn0Prf6DerjwYMHuHzxcrDKnmvXr6FC5QpYvHAxmjo01bu8piYAKUcpff361dSmFiXzyZUrFxIlTISv375i+arlGOQ8SCiUo6Rz7kQlYFXeCmeOnlGvw5u5e++uMAAkSpQILZu1Cm9zrq9F4Pbd2yhftZxWCWejmoCfEkh80rSJotspU6aA3ltOTIAJMAEmwASYQMwRCHBSGXNj8khMgAkwASbABJgAE4hRAnJ1JfnS1ndq0bwFHj1+BI8LHsGK4rrZVfhHtq1nG+x9LowcAfIDTumb4mOdU1ACqVOnxro1mgDA5OdefneC1uQSfRKQq+n1KYOpjG0I7ndor4Upp1lzZ+H1m9eoWLEiHBwcTHmqPDcmwASYABNgAgZJgA0ABvlYWCgmwASYABNgAkwgKgmQ0oHSshXL8OmT\/tw8kAx2tnYigOrWbVvpUieRUm\/zls1oaN9Q1NG5yRdRQoDcq1CiQKucgieQIkUKcYPcJE2aNgkrVq\/A\/Qf3g6\/MpXohIA0zpuwyJqbAkjskfSdTfp4PvR\/i73\/+FohnzZqlb9Q8PhNgAkyACTCBWElA\/\/\/aiZXYedJMgAkwASbABJhATBKgFYfFihWD9yNvtO3QVvVxHpMyyLGSJ08OikWwfcf2IKurz5w9g8dPHoN2Ccj08eNHOA90hkVxC+QpkAct27QUOwjk\/UlTJmHCpAkY7TIaeQvmFefzHudRvWZ13Lt3Dw2bNESO3DmEW6Gdu3fKZuL88uVL9OjVA4WKFhJ9t2jdQrgnkpXC2o+sbwzn+PHZAPCn51SmdBl0aNdBVJszfw6cBjmheu3quOR1SZTduXtHfJf+1A\/fjz4Cpqwwjj5qwfesGlH0uAj\/9y\/N4KoswYtqlKUTpo4XO67atm2LUqVKGeUcWGgmwASYABNgAsZOgA0Axv4EWX4mwASYABNgAkzgjwTIxcO6devw119\/4eChg2jaoim+fPnyx3bRVaFFsxZ49vwZSOGvnVy3uIJ8sJN\/cEq0I8C+kb0wFjg0ccDM6TPx9u1bVKtRDe\/fvxd1vL29sWbtGpDroGpVqyFNmjQiQKjnRU80cmiEDBkyYNzYccLncpt2bfDg4QPRjlbAU9\/HTxzH8KHDMX3KdDx79gxVqlfB8+fPRR0KNPqnfkRFI\/qIF1cTBJgCiHIKmcCsGbNQpXIVtcJ7n\/ewrmuNTLkyoXTF0ihWthg2bdmk3udMzBKQLoBMUWEcsyQhgiLTmPp0w6MadBAQUDmmOUTHeNduXMPWHVtFAOvx48dHxxDcJxNgAkyACTABJhAGAmwACAMkrsIEmAATYAJMgAkYPwEzMzO4u7sja9asOH3mNNp3ag9ycaKPVLlSZWTJnAVbtwe4ASKFPO0KaNm8pSoSXVOsgIXzFmLk8JFoYNcAW123gnYFzJ0\/V61HxoTtW7Zj6aKl6Nenn1revm17LFqwCO3atMOqFatE+dGjR8V5xcoV+O\/mf9i2eRvatGqDRg0bYef2nYgbLy4mT5us9kGZ0PrRqWgEF\/HiaQwAP37q59kbASJVxB1bd+D189d4cOcBzIuaix0rMngyKaAPHz2s1uVMzBL4+UtjwGIDQOS5GwLDX79\/aSYSx7QMAOMnjxPz6tmzJ7Jnzx75h8U9MAEmwASYABNgAhEiwAaACGHjRkyACTABJsAEmIAxEsiXLx8OHDggdgLs3bcXw0YM08s0aEdCs6bNsOPfHZAr0Q8dPoR3796hebPmqkynzpxCyhQpkS5dOly6dEkct27dgoW5BdzPuav1aJV\/gQIF1GuZqVSpkswiW9ZsYheA3wc\/UXbB8wJKFC+B\/Pnzq3XI97ttXVucO3dOLaNMaP3oVDSCC9UAoCfjjxEg0hGRXCZRYOATR0\/g2uVr2LRuk7pi2rqatU5dvoh5AoagvI75WUftiIbAUN0BYEL6f\/fz7jhw+IAIaj9smH7+1kbtm8K9MQEmwASYABMwXgJsADDeZ8eSMwEmwASYABNgAhEgQDsB3NzchEuCxUsX46z72Qj0Evkm5Abo9evXOHHyhOhs0+ZNqFSxEnJkz6F2Tu59fP18YW1jjao1qqoHKf\/pnky0qyG4lDZtWp3ihAkSqgYHcgWUNUvQdpkzZ8bTp0912oXWj05FI7iIE1ejYfv103\/FrRHIbCgi+vn5oWXblmInQIXyFdCkYRNDES3WyRGgMDYhjbGenqI0AEi3SvoQ4\/sPTVByKYs+ZIjqMcdP0az+79+\/vzBiR3X\/3B8TYAJMgAkwASYQdgJsAAg7K67JBJgAE2ACTIAJmAiBsmXLomvXrmI2Z87o+uGPqSnSin1agb9t+zbh0mfP3j1o2SLA\/Q\/JkSpVKmEQePLwCZ56P9U53E8H7ACQfu0Dyx6aMoniIZBf98CJdiFQHALtFFo\/2vWMIS+DAOvL\/ZMxMApJxu49uwu3WbQDZe2KtTCl9yKkORtquSkHjY1p5obkdSeOicQAOHbyGM64nwEZj8kAwIkJMAEmwASYABPQLwE2AOiXP4\/OBJgAE2ACTIAJ6IkABcul9O37Nz1JAOHv322vGw4cPCDcqtjZ2unIYlbIDN6PvHHz5k0kTZpUHEmSJMGQYUOwcvVKnbrhvShYoCC8vLzEDgPZllbAnjp9CoXNCssikztLY4n0oW5yE4zGCX348EH0bmluicdPHkPGA5BDvnj5Av\/u+hfb\/t2G23duy2I+RwMB1Wd8NPQd27o0BKW73H1gKka1f1YsFa+Rs7MzyLUcJybABJgAE2ACTEC\/BNgAoF\/+PDoTYAJMgAkwASagJwLkfofSX2n+0pMEQONGjfH+\/XtMnjoZ9vXtkSxZMh1ZOrTrgNSpUmPwsME4fOQw3r59K+quXrsaZUuX1akb3otuXbuBAuH26t0Lz58\/h4+vD0a7jMbde3fRqmWr8HZnNPXlDgAKuswpfATatm4rGqxetxoVq1dEtnzZYFnGEvUb10cVmyooZFkI7bq0Q0fHjihTqQwcezlil9su3Ll7B6fPnsaifxZh6KihWLlmZRDjQfgk4drSBZCyDYNhRJaAATA0pR0dz549xd4De0G\/tZ07d47s0+H2TIAJMAEmwASYQBQQiB8FfXAXTIAJMAEmwASYABMwOgKXL18WMmfMlFFvstMuhNo2tbFz905MmzItiBx0f\/uW7ejdrzcaOTQS9y0tLDFz2kwUL148SP3wFGTMmBFbNm0RfRcqWki4c6FdAWtWrkEFqwrh6er\/7J0FeBRJE4Y\/NEhwCx7c3R0Cwd3dD3fXw931kAMOucMP5+COH3eCJLi7uxMB\/qna9LIxCMn6VvPszkxPd3X1u7MLVHVX2VTbKFGjsL6+PuIA+NkPrmuXrnj+4jlWr1mNZ8+fgZwotEOFXqpQyI8okaPg0eNHWLN+Db\/UPcPjvIXzsGndJiROlNiwWs5DSUC\/YtxOQsaEctomaaZfdf\/VJOJDJVQ5dPS6hKqXdTZatW4V5wmpV68eKEG9FCEgBISAEBACQsDyBCJo\/3i04D91LA9ANBACQkAICAEhIAQcj8DKlSvRuHFjxIkdB15nvPho7RRopwCFXCHDvbGL2g2RMGHC74p+\/\/49bt66qY\/9rv4ZSUdluFLHwIIM61U\/avP582dQQl4KyUNx+cmoTEeqjxQpEl9znbZbgYxk3Jb60PlX7UVH\/xetotWf+\/8Tl8Y1fJGzhXZTuCRxQckSJUG60EuNT4xpPJKjzkkfrRVPyc9XO9fat2rZCu3a6vJIBJ6ro1w\/ffoUXme9+BU7dmzUqF4DCRPonqG9+\/ZiyrQpOHvuLCh0kFNUJ7i4uCCNaxrsO7CPGZcuWRobVm9wFFxGnedxj+OoUK0CkiVNBq\/jZ40q29GEPXn6BFnzZuHfiSfXn1hk+nsP7EW9FvUQL248XD17zSI6GGvQpq2b8A6A1atXo379+sYSK3KEgBAQAkJACAiBcBCQHQDhgCddhYAQEAJCQAgIAdsjQIbdoUOHsuKjRo6yCeM\/KRs3blyTwf6R4V8NXKd+HRw9dlRd2vSRV6ivWxPmOYwdN9bhHQCJEiVCWbey\/AoMsnSp0qBXcIUSX7dq24rzCAR3X+p+TIAcKlTIUSbF9gmonA6GjlJbndWlK5dY9Rw5ctjqFERvISAEhIAQEAJ2R0AcAHb3kcqEhIAQEAJCQAgIge8RuHTpEq5fv46kLknRtHHT7zWVe4EI3L9\/n2uiRInCSYvVbTJaGa7qV\/WhORquzo8YISIiRorIK\/+pnpw1tAuAXhEjave0F9VTIt8IEXUr+6mP\/tz\/PrfTQqPQqn3WS1u8zyv4\/Y8kj4xTlFiZEoCSTOpDMatpbnSkl5OTk\/6a2lC5efMmFv6+UCcvNBOUNkEIEFcq9DlICRuBSJF17ML6vQvbqPbZi777VIjlmg1roH5TqJ5f9LtkcG74exP4vpKjjurzUUeqD654nvXkatptdOjIIf5uRNY+44jab536DaTfPfW5ByeD67Q5fNF2QtF4QXdIqV1TX3U7rbRdVbSjiXLB+NHOK82ZRONToXnRb57u5X9N4ab8fyu\/3dO1oT7qN\/LJE90uCtrxI0UICAEhIASEgBCwDgLiALCOz0G0EAJCQAgIASEgBMxEQBk4KGQJGTmkhJ5A5Ci6fzquXbMWbmXcQt\/Rjlru3buXHQDK2GVHUzPbVNR3kAyaUsJGQP12\/ciwHDbpjturc+\/OFp38m7dvUKN+dYvqYKzBPTw84O7ubixxIkcICAEhIASEgBAIBwFxAIQDnnQVAkJACAgBISAEbI9A2rRpES1aNFy+chkHDh5AieIlbG8SFtKYkrtS8fH2sZAGlh+WdxJoatDOASlhI+Drp0vATLs9pISNgHKe0C4ZKeEjYBhGKVWK1NrqeVopT6vov2gvbWeAxli3op4uvq2up1Gp3vBFdQGdg7rfCf8NRHQ72EIyPnz8wAm0afeRbvW+0iHoGMEJodwlVOh3mncp+K\/YJw3Uin26T+e8c0FzgOt2U+mOkbTvo6FjiXSi8m1+fKW7pj1Q2k4DVVRbun75+iW3SZcunbotRyEgBISAEBACQsDCBMQBYOEPQIYXAkJACAgBISAEzEvA2dkZQ4YM4deIUSOwa+cu8ypgw6ORYYqKt4+3Dc9CVLc0AV9vnaFSPU+W1scWx48aJSqrTcmrpYSPgDKckzH8+O4T4RNmwd6psqeAj48Pdqz+F5nSZ7KIJuSQcs2Xih0AKVOmtIgOMqgQEAJCQAgIASEQlIAsuwnKRGqEgBAQAkJACAgBOyfQq1cv3gXgcdIDjx49svPZGm96ymDryDsAKD44FcMVr8Yj7BiSfD\/rHABqFbtjzNq4s3SO5cwCHfm7aFyidiDNf0F+wB0I5p3X67evOXdLvHjxOH+KeUeX0YSAEBACQkAICIGQCIgDICQyUi8EhIAQEAJCQAjYLYHo0aOjYsWKPL8GjRtwUmC7nawRJ6YSUPr4Om4IIEqYSYVCbEgJGwFfH38HgCQBDhtArRclq6YiOwAYg7xpBLSgPMzBkg4Ab2\/d7jD6O1aKEBACQkAICAEhYD0ExAFgPZ+FaCIEhIAQEAJCQAiYkcDUqVNB+QA8vTxRtUZVPHv2zIyj2+ZQkSPpQgBRmAlHLYqBYfxrR2UR1nkrB5LaURJWOY7cTz2HkgPAkZ8C65u7JZ0P1kdDNBICQkAICAEhYD0ExAFgPZ+FaCIEhIAQEAJCQAiYkUCaNGlw5swZFCxYEA8fPcTWbVvNOLptDqVWHX\/6+Mk2J2AErVWSTErSKSVsBNQqYXEAhI0f9Yoa1T8HwGfJARB2ivbZ80cJh005a+UAEMeUKSmLbCEgBISAEBACP09AHAA\/z0x6CAEhIASEgBAQAnZCIFasWMiWLRvPRoW3sZOpmWQayuj48dNHk8i3BaGR\/MPWSA6AsH9aKumqOADCzlCxE0Nr2BmqnpEi6v5LrELoqHpbPSojvCX0V05iR94lZgnuMqYQEAJCQAgIgR8REAfAjwjJfSEgBISAEBACQsCuCagV3WLQ\/fHH7OTkxI0+fPjw48b23sI\/4aa9T9MU8\/vyWbd7Qn33TDGGvcs0ZPdZdgGE6+OO7J9Pweb\/DlBJgGG5\/CROUXR\/R6hdPuH6YKSzEBACQkAICAEhYDQC4gAwGkoRJASEgBAQAkJACNgigXfv3rHaMaLHsEX1zapzjBg6Rm\/evjHruNY0mFpday+rhS3BViVQ\/pHB9c7dO3j\/4b0lVLSpMf38dImpbUppUdboBKzhN4mS\/9Lr\/fv3ePnypdHnKAKFgBAQAkJACAiBsBEQB0DYuEkvISAEhIAQEAJCwE4IODs780xev35tJzMy3TSUk+Ttm7emG8TKJSsHgJWradXqqQTKwbE8ePggmrZuinTZ0iFXwVxIkS4FKlSrAI9THj81p207tiFe0nh4\/OTxT\/X72cade3RG2Uplv9ute5\/uKFW+1HfbhOemCksVHhnS144IWDAJAH2n48aKyzDv379vR1BlKkJACAgBISAEbJuAOABs+\/MT7YWAEBACQkAICIFwEsidOzdLOO5xPJyS7L97tOjReJIOHQLIctE17OYB+\/xFl7g2YoSA\/xU5cuwI6jetj48fP2LYoGE4tOcQpk2cBso50ax1M9iqk65QgUKoVL6SyT6\/H+2kMNnAItgqCQTnWDOXomfOncHDJw\/h4uKCLFmymGtYGUcICAEhIASEgBD4AYHIP7gvt4WAEBACQkAICAEhYNcEokXTGbVVYlK7nmw4Jxc9WnSWQAZaRy3KuCZG17A\/ASpmvWEcewr306BpA+TNnRdr\/1wLdS9r5qxwK+2GwqUKY\/DwwZg9bXbYB7ZQz8YNGltoZBk2NATs5ruscgBYcAfAui1rGXnjxo0hO1NC8\/RJGyEgBISAEBAC5iEQcNmNecaUUYSAEBACQkAICAEhYDUEtmzZwrqUKFbCanSyVkWUs4RWZDtqUQ4AR52\/MeatDK6GLPcf3I+3795i7oy5euO\/GitVylRYOGchKpSroKrw5OkTdOreCVlyZ+FwQY1bNMat27f09wOfjJkwBt16dwtQTWOWrlAar1694voqtargf3v+h579eiJTzkwo7lYcf2\/6G7TjhcbKkD0DOykOHDoQQA5dLFyyELkL5WZ9evTtwX1Uo8nTJ6N9l\/bqEj4+PhgxZgSKlSmGZGmTIV\/RfBg4dGCAPvrGcmJyAup5hAWT55p8kmYYgBx7G\/\/ZyCM1b97cDCPKEEJACAgBISAEhEBoCcgOgNCSknZCQAgIASEgBISA3RGgGMU7duwAGSIrV6psd\/Mz9oSUA+DTx0\/GFm0z8vRGa\/\/VtjajuBUpqnYAqGTApNppz9NIkjgJyNgfXKlSqYq+mnbr1KxXkx0Gg\/sPBiWnnjl3JsfZP7b\/GFySuOjbqpPbd27j7r276pKPFFLI08sTKonu2XNnQTH9aRfCwL4DsWLlCr7OlSMX4sSOgyEDhuCPFX+AYvqfOnJKL8vrnBeePX\/G98lZMHzMcB5r\/cr13IbGvXTlkr59h64dsO\/gPnTt2BVpUqfBf7v\/w7zf5yFOnDgY0GeAvl1oT74ZsEPbQ9oZEvjy5QtfWnDhvKE64T7X\/0aFW9LPCbh64ypevX6JNGnSIFeuXD\/XWVoLASEgBISAEBACJiUgDgCT4hXhQkAICAEhIASEgLUSIONftWrVeDVurZq1kCRJEmtV1Wr0cnJyYl1oBbOjFmVc+wrxAIT1GVA5ABRLkkMOgPTp0odKJBnhyaBOxv4M6TNwH\/ey7pw0eMKUCZw3IFSCgmmUOHFiLFu0DJEjR0bunLlRpmIZzkGwY\/MObp0taza4V3HHtevX9PqSA2HerHkoUqgIt0mYICEnMj55+iTy5ckXYBRyEFy6fAkD+wxE21Zt+V6NajXYEXHsxLEAbUN7IQ6A0JIKod1X+\/ouW+p5OHX2JAPOnz9\/CKClWggIASEgBISAELAUAXEAWIq8jCsEhIAQEAJCQAhYlMCoUaNw+vRppE2bFqNGjLKoLrYyuDLYqhWztqK3tev54OEDXsUeN05ca1fVKPopA6WK809CKb\/Eh48fQiX\/1OlTvEpfGf+pUyznWKhSsQqOnwhfMu9C+Qux8Z9kZs2SlQ5wd3PnI72p3QXXb17XOwBo7AL5CujbVKpQiWVQYvHADgDarXB472FuSxwo9wHtPKDvVFiTayueegXk5KcI2I0zzz9BuSWeh\/cf3mP6\/OnM3d392\/flpz4IaSwEhIAQEAJCQAiYjIDkADAZWhEsBISAEBACQkAIWDMBT09PVm\/MyDFIkTyFNasqulkRAWMZ12gXRe9+vZE6bWpkzZEVrulc+Thj1gyTzLZ7z+4o5VbKJLJ\/VuiXz7qQK4YOgOxZs+PatWshiqL8AJ8+feL7FOs\/WbJkQdomS5oM9x\/eD1L\/MxVJkybVN1dJTFOnSq2vo50BgUuB\/AX0TgO6R\/NKlDARHj58GLgpX5MDo3bD2kiRLgXnDaCQQa9ev0JYny21oyLYwaTyhwS+fJEdAD+E9IMGS1YuxoNH90Gr\/1u3bv2D1nJbCAgBISAEhIAQMDcBcQCYm7iMJwSEgBAQAkJACFgFAVr5TyW8K4atYjJmUkLtADDTcFY9TIRwJgxt80sbrFu3Dh07dMTWTVuxcsVKVKhQAcNGDOOXVU8+nMqpHSSGDLNny84x\/Sm0TnBlwJABSJMlDR4\/eYz48eLrE\/catn358iVcU7saVgU4p9wBhuXlq5eGl3wenIE\/SKNAFSqHgGE1GfQpp0HgQvrXalgL7969w8ypM3HxzEV4HPJAzuw5AzcN9fUXLfmqlLATUI4Xm\/998\/djGDrWwk4l9D0fPH6ABcvnc4euXbtCOc5CL0FaCgEhIASEgBAQAqYmIA4AUxMW+UJACAgBISAEhIBVEmjVqhXrNW\/BPI7JbZVKWplSykBmNyEzLMT37du3+GfnP+jSuQsG9BuA4sWKo1LFSpg2eRrKlS2HFX+t4JAwFlLP5MMqB4ChobKCewUkTpQYHbt1RGBD\/fUb17Fq7SqOyU9G9UwZM8HzrCfevH2j15WMuIeOHELWzLqwPfob\/icxY8ZEYIP\/5auXAzcL0zUlATbU+fSZ0\/j48SOyZM4SRB7p+ObNG8ycMhN1atbhkELE4+Lli1DJkYN0CqFCfR\/9\/MLvAKhSuzISpkygfyVN64LsBbKjWZumOKXlMjBWSZQqIZYsX2IscUaRo55HowizoBD1uxwxgnn\/iz9+xli8ePkCpUqVQu3atS1IQIYWAkJACAgBISAEQiJg3n8dhKSF1AsBISAEhIAQEAJCwMwEChcujJYtW7KhrkWrFmGOv21mtWU4OyBAhjoyOtIq8MBl\/JjxmDJpCienVve2btuKCpUrcJigjFkzom6Durhy5Yq6jdFjR6Nbj276azrZt38fSpctHexKebp\/xvMMyriXwaw5s+jSrEUZXA0dAGT8Xzx\/MScDbtSiEdb+vZZj41NSXwqXE80pGiaOnch6tm\/bHp81o3eXnl3w6PEjvH7zGsNGDQPF5W\/SsEmwc6EV9jdu3sD8RfN5F8Ga9WuwbMWyYNv+bOWrV6\/QrXc3PH\/+HDdv3UTP\/j2RO5eWQLhUmSCi8ufNDzLcb9yykUMakf7d+3TH7Tu3+bcoSIdQVBgrBFCG9Bkxf9YCfk0cPQmN6zfmZMvlq5fHgcMHQqGJbTbR7wAI564ea5m94ffK1Dp5nvfE39v+BiWIX7p0KZydnU09pMgXAkJACAgBISAEwkBAHABhgCZdhIAQEAJCQAgIAfsgMGfOHGTNmhWXr1xGn3597GNSJpyFWnFswiEcQnTsWLFRsUJFNr6379Qe\/+z4B+\/fv+e5p0+fHjWr10S0aNH4etOWTWjaoimyZMmCGdNnoGXzlvD08kSzls30rMh4fOXqN4cA3SCjOBn5gwtPc\/36ddSpXwcUM79j+456OeY60RtcNUO4YSlWpBgWz1sMp6hO6DuoL0q6l8T4yeOR1CUpNq\/fjBzZcnBz2gWwbuU63rmTJXcWpMmcBv\/97z8sX7QcJCO40rBeQ9SqXgsUSihzrsyYNG0SZk0zjvPDrbQbhy\/KkCMD8hbJi5gxYrIuwX1fUqVMhQF9BmDZn8uQKmMq5CyQk50bo4eNxrUb10J02AQ3JxVC6Wd3DgQni+oSa3kLaFcCvZo1boZBfQdh+4Z\/mHvXXl14jiH1teV65ZCydfu\/+l5FjGSe\/+LTb8vA0f35o+\/ZsydSp\/6WK8OWnwfRXQgIASEgBISAPRIImsXKHmcpcxICQkAICAEhIASEQDAEYsSIgTVr1nDiwr9W\/YV8efPBrYwbJ+MkY4p6UVc+11ZuKyOLukfGIz9fP\/j4+gQI26LaqWHVNbWnc3WkczKk0MvXTxejXBkOlYGPZKg6dW54rcYwPKrxaDUoxTWnFxmVo0aJiihRoyBq1Ki8Av3Bwwd48vgJd6UwKTGdY8I5pjOiR4\/O7RMlSoQE8RMEWLGuZBuO5yjn+rkHtF3\/9PQXL1yMbj27Yc3aNVi9ZjWiRImCIoWLoFWLVqhVs5Ze3uHDhzks0PQp07muRrUavNp21JhRnDg2bpy4+rahOaHPu2admrxCfcnvSwIkrw1Nf2O0Uc+unqWB0OpVq4Ne9P2g1fSJEydGLOdYBi10p4ULFsbxA8fx7NkzrkiYMGGANlUqVsHLh99i\/NPzTDsMZkyZAQrBRM4PKjUf1tT3u3P1jv6cTiiWuaEMqnNJ4hKgbs70OVTN5cWLF\/zdTpAggari44zJARM79+vVD3179sWdu3dYD\/rsqXTu0JmPoX6jZ1CL+27KHACUzHjsiHGoVrcqdu\/djRpVa7B6T54+wchxI7F3\/x7erVIwf0GMHjYmQA6Gu\/fuYuK0idi1+z924vw68NcgUyMGU2dNYQdOvHjx0LtbH\/y7a6f2XSiK5o2bc\/uLly5iyMghOON1mvM\/VK9SAwN6D+DvTBCBYahQoXPC0NUqu3zVvjvmKDMXzoDXBS+4urpi8ODB5hhSxhACQkAICAEhIATCSEAcAGEEJ92EgBAQAkJACAgB+yCQLVs2zJ07F61bt0bvfr3tY1ImnoW5Y0ybeDoWEU\/OmAW\/LcCo4aM0g+e\/+N\/u\/+F\/\/\/sf9h\/Yz4mpx44ey06fCeMm6PUjAzMZQ2kFP5WPHz7iZxwAFDO\/dt3aHIN+2ZJl7FEE7HMAAEAASURBVATSC7fASXAOAKUGOa7SpU2nLkM8Bjb8h9jQ\/wY5E4JzKPyoX2jux48fPzTNuA05QVKnCt+KaeVI+Wxigy85W8hJcfWabpcJ5Tuo3agWO1IG9hmIGNqOh9nzZsGtchkc3n2EnSQ+Pj5o1b4lPnl\/wriR4\/FUcxi069JO70AlCIZtyHlAORr6De6Lj58+Im2atMzpijame7VyyKiFJxo5ZCS8NbljJ43Bvft3OVQRNwrnGzmbqCie4RRn8e7mmMfZi16YsVDnlPzjjz8k9I\/FP3VRQAgIASEgBITA9wmIA+D7fOSuEBACQkAICAEh4AAEKCHwsGHDcPfuXTYC0cpfKrwCP8BKb92FYeQSMraQsZJePzK8kDxuo4mho7pW\/dW4wRlGA9cFvg78MSldyLj15esXTjBKcdPpmmKGf\/nyVVv9HYmNoWREjhAxAj59\/MQGOzLM0W4E2pVA58pApsZIl+7HhlnVVo7fJ5AkSRI0a9KMXxQGqHff3vht\/m9o2KAhcuXMxav8R44eiW3bt+Hx48eIGzcuUqZIyUJ\/duXyzZs3QSGGKDzQqtWr0KZ1m+8rZ6K76tk0kXiHE2usEEAhgaPPK0GChKBkzFSW\/rmUw6Yd3nMEGdJl4LpybuW08Ed5tNBKEzFl\/FSsXLsSZ8+fxanDp5E8WXJuEzduPHTs3oHP6W35yuWczPngrkPInCkz19Oz3ahFQ32bcZPG8U4kCkWkwmIl1HZYtO7QGl06dNWHhdJ3CMPJj35LwyDSIl3U94p+201ZvH280W1QV\/47hUL\/UPJfKUJACAgBISAEhIB1ExAHgHV\/PqKdEBACQkAICAEhYCYCU6ZMQf369Tlx55rla800qm0N01AzzFE4j5QpdQZo29LeerQlA\/+s2bPgecozQBgTCsE0ftx4rFqzCkePHWUHQPuO7XHs2DH079cfJYqXQLas2ThkUIfO3wypNDNalW1YXr78Fv5G1bu4uGDXjl0YNGQQho8cjsqVKiNp0qTqthxtjIAy+JraAUBY3r9\/h4j+jtFTZ04hT668euM\/3addFZW1sEvHTx6nS5zTjP+5c+bRG\/+prma1mujU41vOCc+znrxbQBn\/qY27m7u2mvxbyKfDRw+haKGinIyY7lNJmCARO1CPexw3jgNA7QDQXLLWUOjzvP\/wPlIkS8GO5dDqRA5lKn6f\/ULbJUztJs6egKs3riJz5swYO3ZsmGRIJyEgBISAEBACQsC8BMyTIci8c5LRhIAQEAJCQAgIASHw0wTIOErl3bt3P91XOjgOAWOsFs6TOw8oFv+6v9cFAXfr1i2uI6Mo7b7Y9b9d6NC+AyfrzZ4tOxs+z184z21ohwYVchxQ+BTDcuVKwKTAdI+S59IOglEjRiGStvujb\/++hl3Mdq4M12Yb0E4HUhxpR48py6tXrzjcj9p5cvvOLX0OBcNxKVkzPddUaLdAYi1\/iGGhMEIJtZ0Eqly5ehn58xZQl\/qji\/acUvnw8QOev3iO7Tu3o1yVsvpX9XrVOJQQhQEyRtGvmLew\/d\/rvBeqN6qGtLlcUdAtPzIXyIgWHZtj+7\/bQjVN9TwYKydEvxF9UbFBhQBjnzh9HAuWzef8GMuWLdPvygjQSC6EgBAQAkJACAgBqyMgDgCr+0hEISEgBISAEBACQsASBJIl0yUFvaMlrpQSAgEtYbFhqVq9KmLHjR3glTBxQuTLnw9NmzflkDWq\/e49u7kdJXYNTUmeMjmmz9DFmA6pfYJECTBv\/ryQbhutfvPmzaw7GSONUQrkL4BiRYuhU5dOvBp\/x84dOOFxAkv+WIJ6DetxOBRKCEyJmslZQOwo\/M+HDx84aTDtIKBCIZuo5MqRCzdu3MD8hfO5HSUWXrp8Kd8L7o2S1I4cPhJbt2\/Flm1bgmsidTZAQBl8KbSXKcshbRU+leza7hMq8ePFx+vXr\/jc8I2cUK6pXLkqqZZkmUJNBS70DKtCycXfBNNGfc+iR4vOCa87tO2IO1fuBnkN6mucxLPKqadW0Cv9zHlcv3kdKteryOHW5k9fgAP\/HMK4YePZ0dGma2ts27n1x+r4OzBMlROCQsENHjeYdRo4cCAKFAjqvPmxktJCCAgBISAEhIAQsAQBcQBYgrqMKQSEgBAQAkJACFgdgbRp0yJOnDh49Oghnj1\/ZnX6WYNCevO\/wUrZTJkyYfPGzfrXkkVLULp0aRzYfwBl3ctyHgHSPZlmEGzapKnJErBaA5\/Q6kC5Hjau34h2bdth46aNaNikIdwrumPYiGEc5uffHf\/qE\/QOHTyU8zFkzp4ZqdOlxqIli7gv5Y3wOOXBQ1K+gFo1a6H\/wP7IlC0TJk6ZiNkzZn9XHco7UKhgId4FQMmBpdgeAb0DwIQ7AD59+sRJd5O6JENF90oMKWOGTPA856ntCvj23JARncL1ZMmcldvk0HarUA6At+\/e6sFevnIJ7z+811\/nz5sfJ0+fBO0wUIXCC6ndLDQ\/yjGwfec2xIgeQ\/968uQJfunUFmfPealu4TpSjhQuBr9r4RL4k53JUTJk9GCULVUOm1duQcVylXjedarXxdLflqGyexV07NUBpzxPfVey\/nnQQgiZoqzZtBoXLp9HqlSpMHiwcZwvptBTZAoBISAEhIAQEAJBCYgDICgTqRECQkAICAEhIAQckAAZT1QS3sBJbx0QR6inTAmEyeCvXtWqVcOUyVPQv39\/3LlzBx4eOiM1xYueO2cuEib8FgIk1INYUUO1Wji8KlE4lAnjJuDC2Qu4df0Wznicwe0bt7F44WLEjhVbL75UyVLY898eXDp3CdevXMfO7TtRvFhxvHjyAo0bNuZ20aNHx5Lfl+Duzbssz+OoB2rWqIlXz17pec+YNgP7du\/Ty6XnnWSRXMPx9A1MeKJi1qvvmwmHsmvRESPo\/iunQkGFd7JPnj3Fug3r+LX8r+UYN3kcipcrxuF8Jo2dpCUN16WPa9e6HWjXQdfe3fDo8SNtFf8bjBg7HDdu3kDj+rpnsnaNOnCOGQu9+vfEi5cvcODwAS0B8Lf4\/6Rr6+Zt2NFVuXZlrPl7DebMn4NmbZoGmEbPrr1w5+4d9BvcF7R76Mq1K+jepxtu3r6F9JpzIGlaF4waNzJAH7qgkEEJUybAjv92BLhHuiZKlRCzfpulr1e\/92HZAbDnwG64ZEyMO\/fu6OUFPtl3aC+3odBJwZXFyxfxbokRA0cEiflP39NZk2YjStQo2LhtA3cnZ0H5WuXgVr0M8pfJx+d0rfKAUEgo0ueXXm1QqGIBZCycnkP5bNj+t374Ix5HUKlhRc3Z8kJfRydVGlfC1n+D3xW0eOViblu0aFF96J9z586hfPnyiB8\/PjJkyIBBgwbp9VCCQ9NGtZWjEBACQkAICAEhYBoCun81mka2SBUCQkAICAEhIASEgM0QOH\/+PF68eMExqhMnSmwzelurojmy52DV1OpyCnFTsnRJPHigixFON\/\/44w9UqlIJrmld8Uu7X3Dw4MEA0\/H29kbvPr2RIVMG5MydE78O\/5XDTwRoZHBB8fObNGuCbDmyIWnypChRqgSHzFFNJkycgBEjR3BdsRLFkDJ1StSuU5sdFaoNHSkkT63atZDaNTUaNmqIJ0+fGN7mc7XaNsiNMFSQE8XV1ZXj+4fUPUmSJD801MeKFSvY2OwhybRUPe1eoKIcAZbSw9bHjRBRt2T9s38uiPDO56pmXO\/QrT2\/+g7ug1VrV2phf3Jg81ptVbp7Rb14yiWxZsVa0Ir+7PmzIV32tPhPSw6+dOEyFC1clNvRb+iKxSvYeZAxZwbUbVwHbqXLctJfJYh2XO3c\/C8\/swOG9seKlcsxfPAIzXHgrBmYo3OzGlVrYOKYSVi\/aT0KlMgPt0plECNGDMydPhexY8fWcgjk1++EUXLJ4UAJhkmHPfv3qGo+njh5gn9DShYvqa9Xz6Exv9N64dqJS5KkaFi7EWI6OxtW688vXL7ACX9dU6XR1xme0O6HrJmyabsuznB1iaIlUb9WA+38K2JonOrWqIer16\/qu7x990Yz7lcAOXR6tu+FX\/sMR1TN4dh1YBdcvnaZ2715+xpnL3ppu4sCJgz2uuCF5y+DhjojHS9dvch9mzVrxsdLly6hYMGCeP78OSZPnoxevXph\/vz5aNmyJd+nt9C00TeWEyEgBISAEBACQsBkBHTLOEwmXgQLASEgBISAEBACQsA2CCxcuJAVrVqpqm0obAEt1er3J4+DGsQN1Xn\/\/j2mTZ\/Gq0Ldyrjxrbdv3+LMmTPw9vHm6xV\/rkDP3j3Rs0dPdOrQCX\/+9ScaNGoAL08vUGxwKpMmT+LV7hQGZ\/+B\/Zg+fTonsu3cqTPfN3yjlb3kYMiUMRP69+vPxuUVK1ag7S9tQc6ILFmy8Eri\/\/77j3d6UDgiMiCSU6B5i+bYu2cvizt79iyaNW+G2rVq846Fnf\/txICBA74NpY+D9K1Kzn6OwOvXutjwyvD6c72ltSIQKWIkPvXWkkWHt2z7e\/tPiShUoBCO7D2qD5dmmNxXCaLcFLv\/2cMONGfN+E2G7CH9h6jbvKL\/q2bEXvfnOn0dJf7t1KMjEhnsFGrdvDVaNWuF+w\/u828D7XhRpViR4pir7RygZ0ntKDlw6AB\/t1s0bYkNm76teqc+R08c5UTYObLpHJRU91WLbc9F50\/RnRvxPVP6TJg+fkaIEm\/evsEOgBAbaDeyZsqKtZvWco6ACm66xLwHjx7UVtv7aKGBToKYUCgjcpqeu3gO5AycM36uXm7RAkVRsnpxeHieAOnzM+Xh44eo2aI6j027QNKk0Tkqhg4dyuMeOnRIvyMgkZb4uV69eujbty9y586N0LT5GV2krRAQAkJACAgBIRA2AuIACBs36SUEhIAQEAJCQAjYEQFKTLl69WqeUfMmLexoZsadSsoUKVngvv379ILPXziPCpV0BimqpHjeN2\/e5Nj\/FApIhQ3Rd9BOKGRJr9690K1rN\/w69Fe+5e7ujjz58oCM9t27dec6Chu0ds1aULic5s2b48SJEzh67CiCcwBQPRn0F\/2+iGNUk4ASJUogb768OHbsGDsAqI7ih3uc8NDCh6SnS14NPGToENY7bty4GDx0MPLkyYP58+bz\/SpVqnCf7dt\/zkDKneUtCIF+A\/phzbo1XJ8lc5Yg96Ui9ATIeE6FQr5YqgRn+A+sS0g7qg4dOYheA3phx8YdyJsnHxuvR4wdwYl\/ixctEUAMrc5PkTxFgDq6KF60OCZPn4QLly5AGfX3HdgLcgyULlEak6ZNxL379\/R9j2kOgOJFSuhD7dy+c1sLXzSC5X78+BHuNcuiY5tOqF2tjn6sJX8uxsKlC\/BQyw+TxjUtGtVphF9atNPfp5Mbt66j95BeOON1muP3d+\/YE8pQf\/LMSQwc0V+L578cSV2SYuqcKfjk\/QmZM2TGnN\/n4KK2uj5u7Li4e\/8uUibX\/cZSWKLpv03DVi3571NtJX+iBAk1J4cf2vf4BQtnLsLgUYNw+NghUI4GH80JsGDG7+gxkH43vbF28xq80pI0N2xXH+6lyqNm5ZrwunCWdxjt+N8O5vHJR5dAnJwC+XPnx\/ghE\/XOAsOJvXv\/Fo3aNwQ5ZqiQsZ+cqVT27duHkiVLgnbPqZI4cWJme\/jwYXYAhKaN6itHISAEhIAQEAJCwHQEJASQ6diKZCEgBISAEBACQsAGCNDKUTI+P3r0CK6pXZEze04b0NoyKjZv3JwHVjGz6SJq1KhIniw5h\/H49PETLl68iLJly+KUxym0atkqWEWvXbvGhitKXKtKtGjRcOHcBb3xn+qLFS3Gxn\/VhmJP37l9R10GOJZ3L49zXufY+E9GMVrJv3\/\/fjZ6KeMVdUiePLne+E\/X6dPrHAG0Q4GKl5cXqlWtxufqrW6duuoUKuyK2g2hvyEn3yWwZ88eZMuZDQt+X8DtWjZrid7de3+3j9wMmcBvC3\/Du3fvuIHaCRBya+u8U692fQ4tVKVOFeQqlBNps6XBqjUrsWLRCr3B\/keaF8hbgB0GFNpHlb2aA6BksZLImzsvYsaIib3+YYAoRj4lGVbhf9ZvXI98xfJqhvTD3DVqVCft9yYqOvXuqIW7ucR1\/+75VzPeD0DVCtXw29R5KF64OIaOGYJV61eq4fjYunMrXqU\/pO9Q+Gg7Mn7p2ga37tzke2RE9zrvpdXrdj\/d0wz9q\/9ehdGTRrGTIE\/OPHj5+iV+6dZGL5OM\/zPnzUBdLRHw2F\/H4v7D+xxbX4X6Ke9WHvHixmPjf4pkKbD1n83w1n73qETXwgLVrFSTEy4vXLEAVZtUwfqt69jZ+erNS6zZvBrrNq\/ltu2atcdJbQdB+z6\/8HXgt1t3b2mJnHXJntOmTcshf6gNOc2fPn2KjRs3In\/+\/PpXqVKleKfA7du3Q9Um8HhyLQSEgBAQAkJACJiGgOwAMA1XkSoEhIAQEAJCQAjYCAEy+NJqRWfnWFi5dJWNaG0ZNVWMbEPjd4b0GbB40WK9QmPHjcX4CeNRqaIW29\/VVV9veHL58mW+dHFxMawOEgOfVssaFicnJ\/hpq2BDKouXLMa8+fNw5coVDgeSN29eNnoZ6psggS68kJJBMqmQI4hih1MeCIq3b1iSJU2mv1Tx6\/0XX+vr5QR4\/Pgx\/lz5J3+ObVq14XwPU2dMxT87\/oFysFCoktHDRqN1i9aCLBwEKN8FlQzpMyJXzlx8bmtv9N1b9vtyNlTTDh5KEJ4tS7Zgdw2FNDeSQU4AD80BQKGCKFEwJQ0uVaIUOw+LFCrCeQCaNmoGr3Oe7HhUDoBNWzeyWPX7kCZ1GsyeNAdFyxfW8gqc4BX6R44fBtUP6j2Y21YsV4n1U+GGlF6df+mC3l368GXeXPl4J4HnOS+EFNefVvUf3HEYabUdBSm0Vf8nNcfEmbNnOBmwt7Y7YPKsSejZqRc6te3Mq\/nJ6eqkOSiUrslckuOeFhKJyr0H9\/jFF9pbsUIlMGPBNDSr3xyJEybGlLmT0a1tdzTv0pSbPH3+FKMHjsWgMQPQsFZDdpKMmjqSZSj5SlaSRElQskhJbVfBWty\/f5+\/08mSJePQP+S07dixI0aPHq2a64+0a4t2f\/2ojb6DnAgBISAEhIAQEAImJSA7AEyKV4QLASEgBISAEBAC1k4gXbp0nFTy3bu3+KIZgaWETEA5AEJuAQwcMJBD71DyXlqFH1yJHSc2V1PcfsPy8tVLXuWqr4ugP\/vhycpVK9GjZw\/eNbDx7424e\/suNm\/czP0MjVoRELJQSsZLCUYpjJFhef\/hvf5SGf4o3raUbwQo7FPWnFkxcvRIjBg1AqnSpkLh4oU54TIZ\/yn+e7PGzXBs\/zEx\/n\/DFuYz5QjLqeW3ILa2XGiVftkyZUE5A4ILGfajuVEYII9THtyMVv+7aI7DDOky8HXJ4qVw9PhRPj924rgWgicZ0qfV7fpJrq2cp+JWsiyO7TqBuZPn4uCRA+zA+vjpI9\/LlT03bt6+iSa\/NMLfW9azMf7XfsNQr2Z9vq\/eSmhhhVTJniW79jsSUwvpE\/xuJWqXTNODjP9UKFRQgvjx+ZyckBTDnwz+pYuX5rpxU8fy72KpYqX4+vWb12jRsRkb4blCe6tavho7PUsVKaUl+r2IjOkyYtzg8ZwEmJIq79yzg5t++foVSbWkxGk1pwYV+s1Nm1qnx7lLQX+vEyVIrO2G0DlsabdXly5duB\/9XUAh2mgHAP1mqhftpGvYsCFOnz7NHH\/UhoXJmxAQAkJACAgBIWByAuIAMDliGUAICAEhIASEgBCwZgIUN75ly5as4oLFuvAk1qyvJXVTDgBDg3pgfajNzBkzubpTl068sj5wG9o1QOWEx7ewHXRdrXo1NuLT+c+Wrdu2skFq2tRpKF26NBukKD8BldAmm6XV\/ZQwmHaEGBbKPaAKrcKl8uWzOAAUEzJWlq1QljmnTpUaOXPowmiRYbqcWznMmT4Hl89exswpM6HySKi+cgwbAcqjQcVWw\/+EbdbB96J4\/zdu3cDzF8+x74AWl14L\/6NKiWIl8PjJYzx8+IATAKvV\/3RfOfGOnzyGIuULoWLdCpxol37f1G9czSo1MbjPEHic9uDQQNkKZ0HzDs1YphqDjkkSf9vNRL+BUbUV8J\/9QnYox4+nM\/hTX0p6PrDnIDpF6y6tsHn7Jj5\/qTkiaawVa5Zz3P\/MmXSx9zv0bI9Hjx9pyXwzcjt6K6GFJqLfuWqaI6BgnkK4oSUWPul1kh0J8eLEw+adOpmkU\/y4CbS+mdnZMuW3KXj99jXLGTt9bBAHzFd80RwAF9mYP27cOGzYsIFf1GHQoEGc76Vz5864fv06Ll26hDZt2vA55VEJbRtuKG9CQAgIASEgBISASQmIA8CkeEW4EBACQkAICAEhYAsEunbtymquWLUCVWpXRs9+PbDjvx16I5AtzMGadEyXNh369e0HT09PLPx9YRDVUqRIgTq162DkqJFY8ecKNtzN\/W0uzp07h169egVpH5qKwoUKg3ILHNdW+ZJBmkI7tWunS9RJyT1DW7p26YpNmzdh2fJloB0KCxYuAOmmilqhrAyEqt6Rjx06deDQSWTU3Pr3Vuz7dx+e33+Ou9fuYu2fa9G4QWPQKmQpxiNAzziViJEiGU+ojUrKpyUQprj3ZzzPgBILlyr+zQGQPWt20HN52usMTmq7BAwdAFevXuEZJ9AS7K5evAaXPa5izR+62PiG3++u7brh3JELWLt0PVo1acW7BNp0bR2AlnKOBqj8zkXg9irBcZpUrtj+ny7heMde7TWjvh8Wz14C9zLu\/B0jvfYc2M1JeSm5sCr9R\/bn09PnzqB+zQYoW6IcGrSth\/QF0+Lew3taGJ9S\/Hr+8rlmzIeWVDgRhwE6cGw\/egzRJV2vX6M+UqdwVSL56O3tDV8\/X3audurUCcWKFeNdAPTbWK9ePcydOxcrV67kXCoUci1mzJhYtmyZPndLaNoEGFAuhIAQEAJCQAgIAZMQEAeASbCKUCEgBISAEBACQsCWCFCYgqFDh\/IKymMnjmH5yuVo2roJ6jSqjXv379nSVEyqq4p\/b2gcC2nA7t26I0OGDBg1ehQnWA7cburUqShapCi6dO2CNGnTYMTIERg7ZizIeRCW0rRpU1SoUAFVq1VFYpfEqF23Nnr37g23Mm44efKboexHsqtXr856jB4zGilSpcDYsWPRs0dPfTdK8ElFsdDfcNCTy1cuY+16ndF0yoQp+uStxEcYme6h0DsANM6OXig0TYH8BbF+03oOaWO4A4AM7cWLlsC2Hdt41b7hvdt3bjO6PDlyo0TRkhxK6eLli1yndg3NXzIPw8b9ygZtCvMzeshYtG7ahvMJqM\/AmPyHDRiBf9btZJEThk\/EnwtXokLZivx3075D+3gl\/qMrT0CvSu6VtYBmupBmB7YcgmtKV7zREvbGjR0Xi6Yvxtl957B8zgp2ZDeo2RB\/zVuJUkV1YYRogKZ1m+LSoSuYNmo6j1e9Qg3s27QfLRq05OuJwyZhcI8hfJ4mTRoe++DBg5wLgHbOUaEcAM+fPwcl\/aXj1q1bkS9fPr6n3kLTRrWVoxAQAkJACAgBIWAaApIE2DRcRaoQEAJCQAgIASFgYwRGjhwJCmVw\/vx5HD9+HGSg3n9oPwqVKoi2LduiR+eeiBcvno3NyrTqbt28NcQByCh38sQ3wzsl\/H3z6o2+fby48bBk8RLMnTMXD7TwHBQahvqocv+uLsGluqbj9Gk6Q5Wqe\/70uToFyVv550p8+PABL1++RPLkyflek8ZN9G3mzJqjP1cnZd3KBtCL6jt26IgO7Tvg7t27oN0KZMju3as3dyFDF5UIEXWGN75w4Dda\/U8OIQr1U7NaTQcmYd6pqxBAEeU5ZPAltDwAk2dM5tj\/SQ2SdtNNWvU\/ePgg3T2DxOJJEifB7bu38UwLHUTG\/AuXzqNL304sT+UASJcmPTsAcmTNwYb423duYbe2Aj9\/nvwmc3ClS5MOFHpo4MgBuHrzKnJly4W5i+Zqut7ixMSsoPZGuRO0YEV86evrg65tu6HP8N4okq8I6lWvh4ePH2LczLHIrIX7KZC7gOoW4Eg5TShRcEiFZFCh38GQCjlZUqVKFdJtrg9Nm+8KkJtCQAgIASEgBIRAuAjIkpFw4ZPOQkAICAEhIASEgD0RSJIkCdzc3DBgwAAOR9OoUSNQCIQ58+cgZ8Ec6N63O85ooSQctagV3aHZARBaRtGjR+dV\/4bG\/9D2Da4dJaNUxv\/g7oe2Thms1JxVP9kBoEgAjx8\/xukzp7licL\/B327ImckJqNXnkgNAh5pW+dNvtWGIH\/Uh0Kr\/4O6pXCSHj2mr53OkQqO2jdC9Qw+UKlZaCxl0iruXK10Ondt2weRZmnMhbzq41yqnrbCPg7lT5inxJjnOmDALDWo30HY1rEO\/X\/uCEgvXqlob0aJF049X3yAR8cWrl1C\/RgMM7fUrxkwfjQyF08O9XjnEjhUHKxesRiznWPp+P3Py7MUzbk5\/N0oRAkJACAgBISAEbJdABO0\/cLplA7Y7B9FcCAgBISAEhIAQEAImI3D69GkMGTIE27fr4jLTQBXdK2LyuClwSfIt8aPJFLAiwRTupVjZokiQIAFuXr9pRZqZTxVKEFyxckXEihULd2\/eNd\/AVjYSGaBLlimJc+fPoWjhoti2YZuVaWjf6vzS6Res27AOLZq0wJTxU+17siaaXf8h\/bBo6SJUKl8ZY7TQPslckn13pAePHiCOZvynlfemLO\/evcPVG1fZ6B9FSyasSvP2TfH5y2cOC6TqkmVy4WTGR\/85jhTJdKv06bt578E9LTFxEqik5ar9zx6HjBuMP1YtwYwZM9CtW7ef7S7thYAQEAJCQAgIASshIDsArOSDEDWEgBAQAkJACAgB6ySQJ08ebNu2DVeuXOGY8s7OzpwguHw1d1y4eME6lTaRVrQq3tFLxEi6fz478hqaV69eIVvObGz8pxAiQwcOdfTHwuzzVzHqA+9QMbsiNjyg+g5HjhT5h8Z\/miY5CExt\/KdxyMhfuV5FTJo1kWP\/Ux0l\/v1v738oV9qdLr8V\/59kw1BQ9EykSpEq3MZ\/GuTV61c8Fjl9pQgBISAEhIAQEAK2S0AcALb72YnmQkAICAEhIASEgBkJUELbyZMn4+rVqyhWrBjHra9cqxI2bd1kRi0sO5TfZz9WwJEdAWTwpqJCsPCFg72Vr1weDx89BCUCXbVsFQoXLOxgBCw\/XfVdjBRZUrqF9dNQ3+FIVpZImXYZjBw0CitWL0fmAhmRvUg2NNbCE7Vt\/gtaNWkd\/HRN5JxVIYAk\/03w2KVWCAgBISAEhICtEJB\/MdrKJyV6CgEhIASEgBAQAlZBgJLZ\/u9\/\/0ObNm3w559\/ok3H1njxcjJaNWtlFfqZUglfHx8WH9mBjY5RIutCcqjVw6bkbY2yPT09eTcMOUIo7E\/2rNmtUU2710nF\/v+qhXuREjYCygEQMYL1rYn7pUU7tGnWFl7nvfD6zSvkyZlXi+cfO2wTDUevsxe8uHfOnDnDIUW6CgEhIASEgBAQApYmYH3\/2rE0ERlfCAgBISAEhIAQEAI\/IODk5IQVK1Zg2rRp3HLIiMG4fOXSD3rZ\/m2\/z595EmoVvO3PSGbwswQ2b93MXUqVKCXG\/5+FZ8T2KvSPMmIbUbTDiPryVec8iei\/q8faJk6fce4cuTkpsSWM\/680x8Prt695p0+KFLr8AtbGSPQRAkJACAgBISAEQkdAHACh4ySthIAQEAJCQAgIASEQhECPHj14J4C3tzfad20PH\/8V8kEa2kmFMjY6cgggH1\/dLghlgLWTjzbU0zh77iy3TZUyVaj7SEPjE1DPn\/pOGn8E+5f45ctXnqRiacszNsUuBo\/TJxhJ5syZbRmN6C4EhIAQEAJCQAhoBCQEkDwGQkAICAEhIASEgBAIB4Hp06dj7969OHfhHMZNHothg4aHQ5p1d1XGRkd2AChjoaOGAHrw8AE\/pJSE9vGTx3wemIXhteE5PTeG13ROctSRzvmlJUH98vmL\/lxfr92nZ1Bd0\/lX7Q8VJVcduVJ7ozEpXA4dAz+3SZMmRdbMWVVTmzqq51B9J21KeStRVrGz5R1N2leIi3oejIl23dZ1LK5mzZrGFCuyhIAQEAJCQAgIAQsQEAeABaDLkEJACAgBISAEhID9EHB2duZwQJQYePa82ajoXgmFChSynwkazEQZVwMbUg2a2P2pngEi2P1cg5tgn1590LJ1Syz\/azm\/gmtjK3X0HJ\/1OIvkyZLbisp6PZXB94uyAOvvyEloCegdAFaWBDi0+uva6TwAKifEz\/UNufXT50+xY\/c\/IOdIixYtQm4od4SAEBACQkAICAGbICAOAJv4mERJISAEhIAQEAJCwJoJFC5cGAMHDsSYMWMwafokrPtTt3LSmnUOi25+fn7czZEdALT6nEqEiI7pAKhZvSZSp06N27dv658FbW09n+vfAl3q64M5Uc8SHfmP\/0p9vg5yHhERNe50j0KecF\/\/sfQ6BB5bs49yrHftqHYLkBovX73kXQN0DI8DgBxC9EyQMVn\/0mLL0\/lXLcQM3TesJ0MtGe8jRtLpT23oe\/VZ2\/XAR39ZdM6vz9rR1w8fP33E27dv8e79Oz5euXqFaSqHVDBopeoHBFQC5YjaZ2Lrhb4XxiyrNqzk569WrVpIliyZMUWLLCEgBISAEBACQsACBMQBYAHoMqQQEAJCQAgIASFgfwT69OkDDge0fw+8znkhZ\/acdjdJZWw0RbxpW4H12U\/nAHBkBvv+tw+u6V35Izv8zxGkTpnaVj4+vZ5p8rjC28cbrdq1QowYMdhQT8Z4Nub7G\/CVYZ+OgQ39nz59woePH7i9XqgFTsi5ICVsBFQS4EiaM8ZWi\/432chOjL+3rWck7du3t1U0orcQEAJCQAgIASFgQEAcAAYw5FQICAEhIASEgBAQAmElEDduXHTs2BGTJ0\/GiLEjsP4vnQElrPKssZ8yNvLKa2tU0Aw6CQMgduzYHBqEDOOv3742A3XjDxErVix4P\/fGtevXjC\/cQGJI3xVluKWmqg0deSeDtpibz9VOB211N+0ccIrqBCcnJ0SPFh0vXr3Aq9ev2DFhMJyc\/gQBxd0ewiipkFA\/Mf0Qm755+wZXb1zlZ83NzS3EdnJDCAgBISAEhIAQsB0C4gCwnc9KNBUCQkAICAEhIASshACt\/n38+DGSJ0+OyJG\/\/XNq0KBBWLhwIfYd2IszXmeQO2duk2v8+vVrvH7zGkldkiJKlCgmHU+tmFWGM5MOZqXCyehNxVFDANHcR4wawSvfkydNjuyZs1OVzZUDWw\/i4LGD8PX15fA7tKOD4p1HiRxFM7ZHRGTtu6S\/1ur155F1bZxjOiNBvASIFi2aRebe59fe+Gv9XxYZ214GVaF\/PvuHNrPleRkzB4DXBU9GkSdPHpP\/nWLLzEV3ISAEhIAQEAK2RODb\/1htSWvRVQgIASEgBISAEBACFiAwdepUbNiwASdOnIC3tzeiRo2KZs2a8ap\/2gEQL148VKpUCatWrcKFi+dN6gCgFcRtO7XBpq2bmMSWdVtRpFARo1H5pXNbPHv2DBtWb9TL9PX14XOKX+6ohWK1U3FUJ8iWbVswc\/ZMZtCxVSeOZ88XNvYWJ3YcVHGvYmNaf1NXPX+GOwm+3ZWz0BBQzltfO3AAGNMhefrsacZXsGDB0GCUNkJACAgBISAEhIANEHDc\/73ZwIcjKgoBISAEhIAQEALWQ4CS\/A4ePBg5c+bE+vXrcfz4cU78u27dOvTo0UOv6IMHD\/h80dJFWPv3Wn29sU8uXLrAxv8+Pfri5KFTyJ83v7GHCCLv3fv3XEdhSBy1OHoIoDlz53DYmbSp06Jlo5aO+hhYfN4q5ItKZGtxhWxQAdrpQUXt6rHBKehVph0qxipnzp1hUQUKFDCWSJEjBISAEBACQkAIWJiA7ACw8AcgwwsBISAEhIAQEALWT2DBggUYP348Zs6cia5du+oVJgNJ4sSJ0blzZzRs2BAVK1ZEuXLlsH\/\/fnie9USnHh15VX6K5Cn0fYx18vTpExZVv3Z9pE5lniSsFC6Filo5yxcO9qbmTgljHbGcOn2Kp128cAmbXf1vD5+bfgcAHPM5NMZnqL7Lfn663zVjyLSUDGOGAPI8r3MAyA4AS32aMq4QEAJCQAgIAeMTkB0AxmcqEoWAEBACQkAICAE7I0BhfwoVKoQuXboEmVmHDh1AoYFcXFz4XpkyZXiXQNKkSXmldNPWTfDy5Uv4+Phg1LiRKOFeHCkzpEDBEgUwaNggfPj4Abdu30LZym44edpDL3\/nrp1B6nb8twNValfG73\/8jn6D+3HbFu2ao8\/A3nz+RHMKdOnVBdnzZ0PGnBlAY5NsVY4eP4qKNSpg7\/49yF4gO6rXq8a60ar2SdMmoni5YshZMAfGTxkPtdJd9aWjrzYHKsY0NrFAG3qL5qSL+e5rB0bD0GLfsHEDatSugfSZ0vNzHDtWbPza99fQdpd2QsAqCUT0XzXv55\/XwyqVDKVSakdIKJuH2OzRk0egF4W0y5AhQ4jt5IYQEAJCQAgIASFgWwRkB4BtfV6irRAQAkJACAgBIWABAh4eHmjSpEmwcd\/J8NKzZ0+9VpSU99y5c3oDepLESTg3AMXr339wPzp36II0qV2xa8\/\/sGDxfMSJEwf9evbDg4cPuC5fHl0on52asZ92EezdvxeqbvO2zaDkowXzF8Sdu7cxd8FcNKzbCFkyZeFkprUb1cLbt28xsM9AxIgRE7PnzYJb5TI4vPsIXJK44M3bNzh15hR69OuBQpoMSmZMeQumzpyCGXNnYFDfwUieLDlm\/TYTFGKoUP5C+nnRiTKUqZWzAW46yMWr1694ppT\/wd7L9evXebdHq7at9FOlJLlD+\/yKGNFj6OvkxPwE9DsAtFwgUsJGgBI\/U\/ny+UvYBFi4l6GTVj0P4VXpxasXLCJFihTB\/n0XXvnSXwgIASEgBISAELAMAXEAWIa7jCoEhIAQEAJCQAjYCIHbt29zMtyMGTOGWmNlmHF3c8fKpat4lf+lK5fQv\/cAtGnRhuVUr1IDnl5ncNzjOBtaypYph4OHD6B\/r\/58\/+Dhg0iZIiUOHzsC3fp+YN+BvejZtRdyZs+J58+fsQOgepXq3I52BVy+chmH9xxBhnS6lZvl3Mohb5E8vLp\/yvipLJd0a9aoGXp378PXz1885xX\/o4eNRrvW7bmuVPFSvBMgcILRwNfc2MHeFANjxty2NEKvs15o1aYVnmnPVEzNcUTOjefPn+Ptu7d61ZK5JEPd6vXQqHYjpE5pnpBT+sHlRAiYgIBaNf\/lq206APz8kxereRgDUfy48VkMJYCXIgSEgBAQAkJACNgPAXEA2M9nKTMRAkJACAgBISAETEAgevToLPW9fwLcHw3x999\/cxMyEA\/qN5jPabX0wV2H+JwMyHfu3sG582dBhqcPH3SJdclZ0KFbe3YWvH71Cjdu3cC4EeMwesJokKHn8tXLePzkMcqXLR+sCrSyP0+uvHrjPzWK5RwLlStWwfGTxwP0KVakuP6aVvqTU6BKxar6Ogr\/UKaUG177r3ZXN4y1ylTJk6PlCTx8+BBu7m78jJE2tINFFXqG6dkomKcgJg6fqD1boXeCKRlyNBWBCKYS7DByI0bUMVQOW1ubuI+v8UOyJYiXgDE8ffqUfxMcebeXrT0Poq8QEAJCQAgIge8REAfA9+jIPSEgBISAEBACQsDhCVCSX4rvf+nSpRBZkLEkUaJE2LdvH5YsWcLtxg4fixzZcuj7kIF+7KSxOH7iGBv506VJpx0\/8opralS6RGk2ttL9p9rqS1rFX71qDQwcNhBe57xw6MghZMqYCalSptLLNDy5fecWkiVNZljF50ldknJ4IcMbFOZHles3rvNp4kSJVRUfKYdBYAdAgAZyYRcEevTuwYa+bJmzcWifl69ewtv7E5w151H+XPmRKGEiCQVihZ90BH\/7v9qRYoUqWr1KauW8rToATAE4SpQoyKg5+q5cv4IdO3agatVvjmFTjCcyhYAQEAJCQAgIAfMQEAeAeTjLKEJACAgBISAEhIANE8iVKxdOnjzJSX0Dr4L\/8OEDsmfPzgkTz58\/z21oqpUqVNLPmFbu121SBxnTZ8T0STNQtHBRjsnfpFVjUAgeKpQLgGL7H9BC\/zx\/8QzFihQD5Q8gRwAl792jJe6tULaCXmbgk\/jx4gdrsCeDrmsq1wDNI0XSxb6mSuU0oNj2ZOxVJbgdDxH9rY5idFSUbPtIoX927drFk+jduQ9KFilp2xNyKO1lB0B4P25bdwCoHAZf8TW8KAL0r1utHsZOH4M\/\/vhDHAAByMiFEBACQkAICAHbJfDtf3+2OwfRXAgIASEgBISAEBACJiXQtm1beHp6YuLEiUHGmT17Np48eYKzZ8\/ilRa6J39eXRJfw4aHjx7GmzdvMEMz\/teuUZuN\/7TqlPICfNaOqlAegAOHDuDosaOak6AYV5MjYNeeXZoT4AjcQwj\/Qw0zZsgEz3OeWhLgN0ocOyMOHz2ELJmz6usCn+TImp2rSL4qZOA\/deakupSjAQHl\/AjsCDJoYhOn5LiqULmC9vx9Rs5suVC+dPChpWxiMg6opHr+1PPogAjCPWVlQLfVHQAqPI+x9a9dpQ4n\/96wYcN3d76F+wMQAUJACAgBISAEhIDZCIgDwGyoZSAhIASEgBAQAkLAVgnUrVsXPXr0wJAhQ9CnTx\/s3r2bX+QYGDZsGJycnNjAX6JoCXTt2C3INMkpQAa7jVs34dOnT3j0+BF69u+J23du4+PHD\/r2lAfgjNdpXLtxjXcA0I3imsz9B\/eBchHQDoGQSrvW7fDZ7zO69u7G8snhMGLscNy4eQON6zcOqRuSamGDyCkxfMxwDjV07\/49TbcenFA4xE7huEHJZTdt2oSLFy+GQ0roupJx1NjGMSMvtg3dREzQqnrt6tqz9xEpk6fEXwv+gloNbYKhRKQJCKgQQCYQ7TAiI0TU\/Vf4q4ET1pYmbyoHgEtiFzSs1Yh\/O0eOHGlLSERXISAEhIAQEAJCIAQCEgIoBDBSLQSEgBAQAkJACAgBQwK0+j9WrFgcMmXmzJnw9fUFxUuOESMGJ07Nlyc\/li9eAVrtH7ikTJES\/Xv1xx9\/LsX02dP4dvPGzTFy6CiMGj+Sdw5Q4t1sWbJpYX9ctLwAMTj8DzWkHQBUypYuC0rKGlKhcEFrVqxFj77dkT1\/NnY4ZMyQEUsXLuOQQyH1o\/qZk2ehc89OqFyrEjsoyNFQv3Z9PHz0MEC3L5pBncrPrjqmRLMUQumYlt9g0e+L8O79O15hWr1adaROnRrXrl\/DtWvXtJ0KWVCtWjWkSpUKefPk\/e58Ayjmf0F6eZz0wKFDh+Dl5YXde3bjxYsXfJccKGXKlEHaNGkRM2ZMXL16lVe\/N2\/WHO7l3IMTF2yd0R0KwY5i2srpM6fDw8OD+c4cNwvx48Y37YAiXQhYIQHl9KJk7LZYlP6kO\/32qV0hxphL++YdsGLtcuzZs8cY4kSGEBACQkAICAEhYGEC4gCw8AcgwwsBISAEhIAQEAK2QYCM\/bQakl4UH592AfTs2RPXr19Hdi2Mzprla+Ac0xnltTA9z+7q4vobzqxPj77o3b0P7ty9w3H3SR6VTu06GTbD2RNnA1xTXP7g5JUp5RakvlCBQjiy9yiePX\/GMhImSBhAVki6RYsWDYt+W8wrwt9oIYTImRBc+ZlVx+QgWbBwAX6b9xvu3LkTQJxTVCd4+3jj7w1\/B6inXQGqLkWKFMiXLx\/Sp0vPSWoTJEiA6tWrs0H\/xo0beHD\/AVKmSskr1\/fs3YPLly\/zZ0HhmIIrtNp9+\/btQW7RboQVy1aw7CA3g6n4WedHMCIsWnXw0EEMHzmcdejStisK5StkUX1k8LAS0OUAsPXnMayzN0Y\/ZUC3B6fe58+f2alqDC4kw5jOBGPpJHKEgBAQAkJACAiBsBMQB0DY2UlPISAEhIAQEAJCwEEJ3L59Gw0aNGCDec7sOXnlPSXx\/VEho0rqVKl\/1Czc9wMb\/kMrkFbJ0yu8xc\/PD40aN8K\/\/\/2rFxUzhjNSJEmJKqVqok75BjjqeQi7j+zE\/Sf3kThBEhTIURg7DmzFrfs38OrNS9y7d49fegHaya\/DfjW8DPacdkmkT58e+fLmQ1m3sqhVoxY7CSiHw\/zf54NCEL18qSVGdnXlXQenTp\/CgEEDWBbtGKB7FO4pT+48wcpXBldzGMgop8SWbVtw69YtxI4dG7+0+YV3nASrWDCVtMuBVvtTgufCBQtj9drVOHf+nL5l1fJV9edyYlsEKJQYFdpxVKdxHVAYGzJk02p2MgbTOT2j6jk1PNJ55MhRuA\/JoFA4796947YRI0bg7wsZxyNFjPRNhr8snUydgViTrpdP3wv68+ULrUQHomjyo2qOvmjRnLSdUlERWftekkx6kQzSkfJP0Bgcykaro5j8dE\/XBvq2XK\/1I6dpVO1FukeJElkLvRaNr+k7T31oYEMZaiyekyY7UmStT9So3M\/JKSqePtU5C8lZSbxYBgGxwUIsI2t\/jFXevtPlkkmSJHhnsLHGETlCQAgIASEgBISAeQgY718J5tFXRhECQkAICAEhIASEgMUJTJ48mY3\/1SpXx5zpcxAjegyL62QOBcjgR0UZwYMbk+61atOKjf9kzGtarRXa1e8SxLhWOFcx0MuwVC5ZnS\/JgbD76L\/wunIatx\/cZiPftTtX8eLVMzZwUiMy8pMxn0r2bNlRoXwFDqFEYX6CK7ly5cLcWXMD3CKjX4IkCdjR0LR5U\/297f9sx7Sp09CwQUOjrqrVDxCKkw6dO2D1mtUBWNPK\/fjx43POiWdPnyFa9GjIlpXCRiVBzZo1UbliZc3oGhWPHz9mp8bGzRv1\/bdt3xaKUaWJrRB48Ur37D\/RjNj0khJ2AsdPHUeyzC7sYKDdSfSKrDkYlHMiIjspIvE1ORHImUGFEriTI4OcL\/S7R84X9dtIv31U6EhyIpKTgs61o3JgRI6kySJnhiaT5JLTJFLkSLoj99E5RKg\/ySHZ\/IfGojG1lyo9hnTX6aA5Aj5\/1vTSjsopRH2Us4bkkMOHHCXk8GDHDOtG18r5ojmE3r9l0ZTc\/uDBgyhevLgaSo5CQAgIASEgBISADRIQB4ANfmiishAQAkJACAgBIWBZAhRfnkrn9p0cxvhP842gGYhCKmSQevToEWbPmc1JfsngNLjDSFQqUS2kLiHW04rg8sUr8ytwI\/fWRfHh0wfMnjEbhQsVDnz7p67JAEZG\/lWrV2lOhqgoUbwErl6\/Ctrh0alzJw5htHnjZlB+BlWUYU9dG\/t4\/vx51KxbU1ud\/JRFUx6HtGnTgsIeXbl6Re\/0oJs+vj44cvQItyNjPxUyMJJRUhWaU+LEieF11gs5sudAj2494F7RHd7e3npjpWorR9shkChBIlY2W+ZsqFWtFn\/uOkOzZtQlg7L2HHzVVuNTYcO0OgcZjr9yrg+VRJael7hx4vL3m1fm+6\/O\/+yr7STwN2pTH3WujqqOxtCt0tcZu8n47OPtg4+fPvI4n7w\/cRgv+o1gw7VmwCb91LNKY5JMw\/vBndPzTs5BXz9f+Pn64dadW3j77i1iOcdCvLjxNM8kzVV7IwO59vqqyaTCxnnWXzOOa4nS\/T778XeEVv6TLFX4WqujHCW2Vrbs3GwSlelz6NChA86d+7ZzyCQDiVAhIASEgBAQAkLApATEAWBSvCJcCAgBISAEhIAQsDcCFPP\/zJkzbLxKncrV3qb33fmoHQCqERmHKFTPuvXrMH\/BfFCyX1XaN+waJuO\/6h\/SURngaWxjlN9m\/wZ6qUJyu\/fqjr9W\/sWfc916dbFp4yZOHExt1PiqvTGPS5YuQa8+vdhgSSGlpkycgrp16uqHuHX7Fk6dOsXXlDz5\/oP7nOyYuFP4okePH7Fhk3QsWKAgOnXshBrVauj7qxM1B1oZLMU2CfhohmoqFIKse8futjmJcGrdrF0z7Ni1Ay0atMSAbgPDKQ14o4W9ofwu5AD4pDkv\/DTngLePzkng4+sNH\/9zchRQiaKt1qcV\/LxCn1fV61b40z1yaFAhJ4mvv9Pi82dfXp1PzjfKgUKfoQ8dfXy0Nj7+8nXHz5qTwo9W8WuODHJa0JG+t\/zyX6kfSVvFv2bzGh6nUe0miK7lcqFdBJE1vSJpuwto5wI5Weh3W7dzgJwstHtAFyKKHC\/kUCGHCNXRjoYv2u4B0p0cOlo3rN+6DuSUvHTpEjJnzsxjyZsQEAJCQAgIASFgewTEAWB7n5loLASEgBAQAkJACFiQwIgRI9jI2qRhU1CCXkcpZBg3NBcfO34M3bp3AyXuVYWMU9GiRkP9Sk3RrHprVW3ko24XgrEcAIGVo10Bs6bPQsvmLVG+UnkcP3Ec9RvWx18r\/oJhnofAzpDAcn72muYzaMggNvSV1XIXzJw+E8mTJQ8gxjW1K+ilCuU5qF5VFzaJ6iguPDkBYseKzaGCVLvAR6U7GRWl2CYBX201PBUy+Dpq+fDxA0+dnndjlNjOsUEvWyrrNAM9\/XaMGTiGw38ZW3dvbffG+q3rOYG6OACMTVfkCQEhIASEgBAwHwHNtS9FCAgBISAEhIAQEAJCIDQEdu3ahRUrVnCs6D7d+4Smi8232bZjG3IVyokkronRZ2Bvns\/lK5dRuUplvfE\/ZvSY6NCwGw7+eRq7lhzRYv53NuG8zWO0JuP6+jXrOU72gQMHkDtvboyfMB4UzoSKMVfPU7LenHlycl6JBAkSYMXSFUGM\/6EBGk1bAUwOAsoT8N2iIjmJA+C7mKz5plqFTrHqHbVQ4mIqFL7IEQs9A8oRSrk\/TFHcipdlsdu3bzeFeJEpBISAEBACQkAImImA4\/6L0UyAZRghIASEgBAQAkLAfggMHTqUV2j36NITKVOktJ+JhTCTnbt2osUvzfV3KWQElbdvdQkiM7pmxqwhv8M5hrO+jblOVBgbU45XulRpbNm0BfUb1OfY+2PHjeWQGjymvx+CjPeUsPf6jevsLKBdAvHjxUetmrXQpVOXH6o3a\/Ys\/DriV36uojlFw5LflyB69Og\/7GeMBrIDwBgULSNDhQBy5B0AyhkXO1Ycy3wIFh6VciyYuuTOkYeHUKHHTD2eyBcCQkAICAEhIARMQ0AcAKbhKlKFgBAQAkJACAgBOyPw5MkTHD16FLTKulvHbnY2u+CnQ0ZtKgnjJcL6Gf\/gmNdhHPDYi08+H1E0d4lgk\/QGL8l4tWrRujkcAKR1sSLFcP\/OfUyfOR0TJk7gxKZU\/+TpE\/Tu2xsUt1+twqX6Fy9e4ObNmzh56iRGjx2NDOkzwCmaE8f5vnLlCjsJOrbviKGDh1JzTJ0+lY3\/JUuUxLTJ05AuXTquN8ebOADMQdk0Y1DseCpRojhuCCAKeUWFkgA7YqFky1RUSC9TMDh8\/BCLLVSokCnEi0whIASEgBAQAkLATATEAWAm0DKMEBACQkAICAEhYNsEjh8\/zhPInye\/2VZoW5LYkWNHMGXGZFYhTfJ0WmLJyCiWtyS\/LKmXCr1DsfrNWXp06wF6zZ47GxMmTeBdEIuWLGIVChcqjF49evH54yePcePGDaz4awWePn2Ks+fOBlFzyrQpcHV1RbMmzbREoLpY7h3adTCr8Z+UMjfDICCkIswEKIksFaeoTmGWYesd9TsAYpp\/B5I1sKOEvVxUSC8TKLVuy1qWWr9+fRNIF5FCQAgIASEgBISAuQiIA8BcpGUcISAEhIAQEAJCwKYJzJ8\/n\/XPn6+ATc\/jR8q\/\/\/Aew0b9ij9W\/MFN48aKi6GdRv+om9nvm2sHQOCJUVifGtVrwL2CO56\/eI7OHTtjyKAh7CAxbNunVx8cPnIY58+f5xX+X75+AeUV2Lq3SQiRAABAAElEQVR9K35f9Du6du+Kf\/\/7F+\/fv0fMGDFRpHARw+5yLgS+S8DHR+c4MlXs9+8ObiU31Q4ARw0BpHYAmOrjuHnnJo6dOoYYMWKgXr16phpG5AoBISAEhIAQEAJmICAOADNAliGEgBAQAkJACAgB2yYwe\/ZsbN26FbFixULblm1tezLf0Z6M\/81aN8X+Q\/u5VaY0WTB36GIt7JF5YtJ\/R7UgtyzlACBFKP\/DmZNnWCcKCRVciRkzJtzLufPL8D4Z+p8+eYpNWzZhy9YtfCt27NiIFy+eYTM5FwLfJaB2jjg5Oe4OAG9v3S6IWLFif5eVvd5UOVlM9Vu4fO0yRtegQQM4OzvmLgt7fXZkXkJACAgBIeB4BMy7d9rx+MqMhYAQEAJCQAgIARsm8Pr1a4wbNw69eunCu8yYNAMuSVxseEbfV33i1Als\/CeD0vAu47B4zErrM\/77JwEwldHr+4S+3SXDf0jG\/2+tgp6RwXbpkqVo07qN\/ma5suX053IiBEJDwNfXl5s58g4A5QShFeqOWPQOAC0LgLEL7W5SDoAuXX6czNzY44s8ISAEhIAQEAJCwLgEZAeAcXmKNCEgBISAEBACQsBOCOzduxd16tThpK40pe6de6B6lRp2Mrug07h+8zrmzJ\/DN3q2GAD3opWCNrKiGks7AMKLYsrEKahSqQoiRYqEEsVLhFec9HcwAsoB4Kg5ACiBtWLgHMMxV6d\/\/PSRn\/qIkYy\/pm\/RX7\/j48ePqFatGvLmzetg3y6ZrhAQAkJACAgB+yMgDgD7+0xlRkJACAgBISAEhEA4CXz58gXNmjVj43\/hgoXRu1tvlCnlFk6p1t19x787WMEkCVxQp3wDq1X2q79mtu4AoGm4lbHvZ8pqHyI7UMzXz49n4ag7APz8528HH2WYp\/DJW+cAiBQxUphlhNTxxGld0vsOHTqE1ETqhYAQEAJCQAgIARsiIA4AG\/qwRFUhIASEgBAQAkLAPASuX7+Oe\/fuwcUlKbas2wp7MDaHRO7GzRv4599\/MHXWFG5SIr+VG6VVCCAThL0IiZHUCwFrI+DnpwsBFCVKFGtTzSz6qATAZhnMSgf58PEDaxY5svH\/Sx8lSlSWHTGi8XcXWClOUUsICAEhIASEgF0TMP6\/Fuwal0xOCAgBISAEhIAQcAQC796942kmiBff7o3\/lWtVwrPnz3i+zjFioWeLflb9EdvTDgBLg6YwKlJsk4BaAe+oIYD8Put2QNizc\/ZHT6YKgWSKHQCpUqTi4Y8fP46KFSv+SBW5LwSEgBAQAkJACFg5AXHpW\/kHJOoJASEgBISAEBAC5icQJ04cHvT1m9fmH9yEI5LB99Tpkxg8fDCq16uGslXc2PjvFDUaMqTOhPkjlppwdOOKdmTDn3FJijRbJKASwDrqDgDlALHFz87oOhs\/BzAql63Mas6aNQtv3741usoiUAgIASEgBISAEDAvAdkBYF7eMpoQEAJCQAgIASFgAwSSJ0\/OWj589BCUD8DWwyC8\/\/Aeo8ePxp+rVkCFjVAfQ\/w4CbB4zEokip9YVVn1Udm66HOREj4C4kQJHz9L9vbx9eHhY8aIaUk1LDa2cgA48jPs66vbBWGKHQAli5RCgTwFQbkAWrdujbVr11rss5aBhYAQEAJCQAgIgfATkB0A4WcoEoSAEBACQkAICAE7I+Dk5KTF\/3cBrbJ99PihTc\/u9evXqFq7ChYuWcDGf3JmZEqTBR0bdse4XlOx5bf\/2Yzxnz4IZfD78lUcAGF9MFXonwgS3zusCC3eT+0AcNQkwL7+ORDU74HFPxALKKDyQESMZJr\/0k8ZPgWxnGNh3bp1GDNmjAVmKEMKASEgBISAEBACxiIgOwCMRVLkCAEhIASEgBAQAnZFIEmSJHj06BGePnuGZEl1OwJscYITpk7A2fNnETlSZAzrMg5uhdxtcRp6nZXBTxlA9Tfk5KcJRJBEyj\/NzFo6qF1JKha+tehlLj3U99+Rn2FfP9PtAKDPMa1rOswePxctuzbHkCFDkDdvXlSqVMlcH7GMIwSEgBAQAkJACBiRgGmWCxhRQRElBISAEBACQkAICAFLEHj\/\/j0PGzOm7YbY2Lt\/D9b+vYbn0aRaK5s3\/vNEIuiCAEkIoHB8K\/xz\/ypnSjgkSVcLEVAOgM9+ny2kgWWH1TsA\/H8PLKvN\/9k7C4Aqli6O\/1XSbpEwUAywAxWxE7sbxW7F7uTZ+ux+n93d3d2FnYjdCjaK3565zHpRUOJyuXDPfN9ld2dnzsz8di8Pz5lzTvSMHhioefbyXYiKWZQpVga9OmoSw3t5eUXFECyTCTABJsAEmAAT0AMBNgDoATIPwQSYABNgAkyACcQ8Am\/fvhWTTpJYkxA4Jq3gxcsXOHT0EBp5NMKbt2+QNFEyNKnWPCYtIdS5yh2\/bAAIFdFfb\/yAxgJgqAaA\/5b8B2untOrHJoc1chR1QsW6FbBqw0rI+O9\/XWgsbiCfndF7ABixAeCnESRq\/0nfqnFrmJuZ48SJE3j27Fks\/lbx0pgAE2ACTIAJxF4CHAIo9j5bXhkTYAJMgAkwASYQCQIUO59KTDIAkEKodsNaOHL8iLpy2zTpsHzChhifyFguSCo+pfJL1vMxHASCPACicudwOGYTatMxg8cgoRKD\/Pv3b3isJOQ+de4UPAd44rz3BYwaNCrUfsZwQz47Y\/0eqAZAmRXcGB76L2v8rgcPABoyfvz4cC1cDHsP7cG2bdvQvHnsMCb\/gpMvmQATYAJMgAnEagJsAIjVj5cXxwSYABNgAkyACUSEAIX\/CQgIgIWFBWJKks1Hjx9h8fLFqvI\/btx4cMzkhAl9ZsQa5T89S2kAUBWAEXnARt7H0D0A5OOpVK4SUiRPKS9ByYuHjh2KuYvmwK2sG4oXKa7eM7YT1QBgpCGA5PdfegQZ2\/On9UrjTzw9JPN2yuokDAB37twxRtS8ZibABJgAE2ACMZ5A1PoLxng8vAAmwASYABNgAkzAGAl8\/fpVLNtQlf\/knTBjzgxUr1sNTVs3Ra0GNVHANT\/GTxon5l3BtTIOLzmL2cMWIWH8hLHqEUoDACmDuRgXAXr2Q3oNQZpUabB41WJ18fR9HTlxBErXKIVM+e1R1M0Fg0cNwsdPH0WbsxfPolIDN9y7fw8NWzdA1kJZUKZmaWzbs02VQScfP35E3+F94VyuoAg51LyTBx4+fhisjaFcxFMMfFSMNgRQ0O53+fvAUJ6LPuchQ2HFi6d5F6Jy7OwO2YX4OXPmwMfHJyqHYtlMgAkwASbABJhAFBBgD4AogMoimQATYAJMgAkwgZhNQO5yTJwocbQv5M69O0idMhUSKXMhhWabjq2xY\/eOEOeVJGFS5MmeHwPbxd5kjXLHr9z9GiIIrgwTgZgYPYV2vrs4u+DazWvqGrv064wjJ46gXfP2yGCXHvsO7wPlEUis5O\/o2bEn\/Pz9cEEJG9SwTQMUzOuMwYoRYemaJWjVtSVO7DyJdLbphHdBvZZ14ePrgyb13JEjm5OQ4Va\/Ig5vOYKkSZKq4xnSibEawgK\/B4rHYNQGACXkGxVpDBIXUfSjYmk3JFLCcb148QKnT59GhgwZomgkFssEmAATYAJMgAlEBQE2AEQFVZbJBJgAE2ACTIAJxGgC9+\/fF\/O3z2Afbeu453MPHm2a4cq1KyLsTb48+fHgoS+ev3gu5pQwfiJUKl4Vb\/zeIEXSlKhSogYy2mWKtvnqa2Cp8JMhQPQ1Lo9jOARSKmGBaDc\/Kb8\/ff6EG7dvoGennvBoqIlNXqVCVVy6eglnzp8ONukmdd3RqVUnUVeyaEkULFsAh44dFAr\/zTs349ylc1g0YzHKligr2pQuXgY5XXNg1oJZ6Nu1bzBZ0X0h338TE+P855yMfy9\/H0T384iO8QP1lAOA1rZo1UL4v\/dXjGqJUbhw4ehYLo\/JBJgAE2ACTIAJRIKAcf7FGAlg3JUJMAEmwASYABOI\/QSyZs0qFvlESTwaHYUUm+27ttMo\/xFHKDrPnj8jpmJmao7R3SeiUG6X6JhatI8pFX5SARrtE+IJ6J3Ah48fRF4LehfiW8bH\/o0HxBzoe\/Pg0QNcvn4Z9H7IEEBygkWdi8pT2KS1gbmZOd5\/eC\/qTpw5LnY4p0iWApeuXFTb5cieA6fPn1KvDeUk8IdmB7zMBWAo89LXPGT4G2NdP3GWXlBxojgHgM8DH\/zzr8arbP78+bCzs9PXY+ZxmAATYAJMgAkwAR0RYAOAjkCyGCbABJgAE2ACTCD2ELCyshKLef5Ss9te3yvbvms7zpw7I3b+r5uyAyYmptiwdzXSJE+DyiVr6Hs6BjWeVPhJBaBBTY4noxcCpOS3sbZVx7rgfR5jpozBKUVR\/+nTJ9intxeeAQniJ1Db0EmK5CmCXZuamuK7YiigQjJph3PlhpWCtaELW62xfrsZTRU\/AjU5MPQR\/z2alvjHYWXuA2kQ\/GPjWHpThn+KqxjCoqocOn4Q\/f7pi4BvAWjYsCFq1aoVVUOxXCbABJgAE2ACTCAKCbABIArhsmgmwASYABNgAkwgZhJIkSIFzM3NQcl2SaFoaWmp14UsWrpQjOeavyRSp0gjzlvUaqvXORjqYCbxTMXUvnz5YqhT5HlFIQHase99zRslXEqIUSgkVgMlsa+DvQMmDP8XRQoWEUmCm3VsitdvXgebyZ+UxUmUfAGk6D+w8SAUp5tg5U\/9gjXU44X0gDGJp5t\/zr3zewf6pE2TFmQYCQgIEAmQU6VIhYQJDS+RuMwBEDdOXD1SN6yhfkBjBIqq95M8DDr374RXr18hXbp0mDVrlmEB4NkwASbABJgAE2ACYSZgvH8xhRkRN2QCTIAJMAEmwASMjQApVNKmTSuW\/fTZU70uf\/mqZdizf48Ys2NDT72OHRMGixNXo52VCtCYMGeeo+4ITJkzGW\/fvUWzhh5C6HEldA8l+Z0wfAJqVKohlP\/0blBeABknPiyjZ8mUVSi8b965IcIKUWghSwtLDB41SEkYvDQsIvTaRoYA0vYA+G\/hf0hln0rNExKWCdEu8ladWiFznszIXzy\/kjfhDFatXwX7XPZwLuWMEeNHhEVMlLfxaO+BgiULquNID4CvAV9hm9saXQd0Vu\/JkyYdGqFyIzd5qZOjo2s2TJ83TSeyQhOSzSULZi6YEdpttV56APxmsVJbRO5k\/PRxQvlPUho0aCDi\/0dOIvdmAkyACTABJsAEoosAGwCiizyPywSYABNgAkyACRg0AWtrazE\/feYB6NC1PTr30CiyihcoDbu06Q2aUXRMLk7Q9mwZ\/zo65sBj6ofAtt3bsG7LOqzZtBpT505F47aNMe2\/aWhQswEK59ckIs2fO58IlbVJSeL7+ctnPHvxDL2G9ISvkjCbvHfCWtzruYO8AAYpCv8DRw\/g9dvXmDBjApavW46CeQqEVYze2knlb9x4kfvn3NXrV7Fx20b07NwTZw6eQYG8BfDvtH+RJ1ceHNt9DL09e+ttTX8ayLWwK3x8ffDy1UvRTIYAoyN5KRw6fihYdzICnblwBq6FigWr54uwEfj48SNmLtQYIWxtbdGmTZuwdeRWTIAJMAEmwASYgEESiNxfjAa5JJ4UE2ACTIAJMAEmwAQiT0AmAr50+WdC0MhLDVmCn58f2nRqjVXrVokGZV0qYlT3f0NubOS1MtyF3AFt5DgitnxN5BChOI+YAP306jO8Dzr16Ygu\/bpg9sLZyk7\/dxg7ZCzGK7v9ZbG1tkPPjj2xTNmln7VQFjiXKyjCdw3pNQR3798V3gKy7Z+OyZImw8r\/VgojQqM2DZGjqBN279+F0YNGI3eOPH\/qGi33pAdMZEMAvXj5Qsy\/bs26SG+XXoT\/odwnpYuXhkMmBxAXQyiuRVzFNM6ePyuO0gBIsek7tuyEF69e4Nqta+pU6ZzCRbkW0vRTb0TDyZT\/JgsvhexFs4rQSiFNoU6LWqLN7IWaMDv07pJnw\/2H90Xzzv06oaZH8PwvMg+E9IoKSW5E667fvg5pZNmzZw8yZcqEZMmSYcyYMREVyf2YABNgAkyACTCBaCSgm6CR0bgAHpoJMAEmwASYABNgAlFBoFixYpg\/fz6OnzyBdq3a63wICi20ZdtmXL52GXv27YEMNVTfrQm6uPfU+XixRaBMeCkVoLFlXbyOnwRaNWkF+oS1dGvfHZ7tuolEvjKGPfVt69FOiCjlWgqPrzz5TdzNU7eC1eVyyo3da\/cIo8HXr1+ROlXqYPcN6UJ6AGiHAAppftduXMOgEYNw4dIFJE+WHNUqVUMfzz5C0T9\/yXzMmqdROFOInWwO2XDX5y4+fPiA+UvnY+vOrVi\/dD0SJUqEP8mhcSvXrYzObTtj0oxJImzMqKGjUCh\/IfQf3h97D+4F8XTK7oTBfQYjf5786lRPnD6BkeNHirwOtJO\/coXK6Ne9H8zMzESb8VPHg\/J9ZHXIClpri04tQN4AFcpWUGU0rtUYM+fPwKFjB5HdIbuoP3PhNMxMzVAgz8+wQTv2bccsRcF+685NIT9HthwY0msoMmd0EH2qNamivHetUa1idVX26Cmj8ObtG4wZPFat0z6ZtWAmtuzejFEDRyNn9lzi1or1yzF\/xXzcU5T4lJsiU8bMop4MEkdPHUHSJMngNWGYWDM9k7w58+HkuZPaYmFuZq7MKzOqu1cVIanMzS2Eh4psRB4uKzeuFJdXr19BxfoV0LZZW9SspJskvY+ePJRD4dWrV+o5nzABJsAEmAATYAIxkwB7AMTM58azZgJMgAkwASbABKKYgKurZufoqTPBFTO6GJaUcYVLFkLfwX2xZPkSofy3NLfE1AH\/sfL\/b4CV\/AxUpAL0b80jcv\/qtatImjIp1q1fF5HuBt9HTR4aN\/b8U4A8Q9LZphOK7cg+gKRJkhq08p\/WJw1glLA3tHLrzi2Ur1Eeb968wbD+w9C+ZXssXLYQnXp1El3y582vKtIb1GqAKm5V0LJpS6E4J+W9OFcU8X+TQ8K8r3ij16BeQkmf2T4z0qROg75D+ypK+UPo0akHxv0zToxZrUE1NTnzpSuXUL1hdWFgmDZuGlq4t8CCZQtAxghZHj56iOVrlsNrrJeiSM8EaytrnD5\/GjPmasLTkKLcUsnXUNS5KA4ePyi74dS5U4ryv4DI40CVW3dvRatuLZEtc1bFi2Q8GtdpIhTwrbv\/NDRRcumXrzUhhqQg30e+iifJHXkZ7Lh07RKMmPQPmtZrpir\/aQd\/7+G9YJ\/eHpP+mYL8uQsoYazWIq7yXSNjxGYlVJV7xyYisfz4oRPQxr0t9h\/Zh4QJgidaXrZ2qbJWG\/Tp3FfIuHX3pghvRRPwf+8PtwYVFA8HfzEf67Q2yjMzBXkJUO4LXZSPnz4KMbTrv2DBn0YUXchmGUyACTABJsAEmID+CcSev\/r1z45HZAJMgAkwASbABGIxAQcHB6RJkwYUIoMUYLoqpLgbNHwg3r9\/j4TxE6FQLhe0rd8JO+YeRj4nw4s1rqt160qORv2vK2kshwnETAIyBJapSegGgFH\/joKFhQW2rtmKxvUao3mT5pgwYgLWbVoH76veyOWUC6WKlRIAqlaqimpu1dCwTkOYmJqIHAB0bm5ujr\/JkQRTJk+JzSs3Y\/m85cjpmBPHTh5DvZr1hCGhZpWamD1pNmpUrqEmKR7kNQg5sufAkrlLxM7\/di3aYcaEGUropd04fOywFCt+B69bsg6tmrYS5907dsf9B\/fFfUrWTIVi\/Z9SdtFTHggqpxUPAO34\/yfPnUCpoqWUkE5jUblcZfTs0AstGrfErbu38M7vnegTnh9kUOj3T1+M6DcS9arXF10pGfWkORNRq3JtzBw7C5XKVsLwPl7Iqhgd6Pc+Xe\/Yv13xKHiNfl36C0+DFo1awiatLbIqSai1i621rTCUlFTmPHXUNCSIn0Ao\/CkkECn\/6blUKV9VdLFQjCDvP34Q52cunhbH3Qd2iZBBMowPeT\/UaFYdTq7Zkbd0brh3aIzb937+d23stDHoNfSn5xkZWqiQ9wX9tyqkMn78eBQqVAjnzp1Tb8+bNw\/58uUTRh1nZ2ds3rxZvSdPwtJGtuUjE2ACTIAJMAEmoBsCbADQDUeWwgSYABNgAkyACcRCAqVLlxarOnjogE5W9+7dO7Rs31IJK3RcxF9fMGoF\/u07A02rt4KJiYlOxoj9QjQmgKj0AIj9DDUrlPkUjGW9sWmd8v3\/UwggUsAXcS6CGzdv4KL3RfFJmTKl+N1z+qxGURwWJmGVU7hgYbHTXcrMnTM3Zv43EwO9BuLoiaNImSIlpk+YjmxZsgkPnvOXzqN29drBclG4lXNDwoQJcfLsT88rUkbT7n\/KA\/BBUXRrez3Ejy8NAK5C+X\/pykU8fvpIfIpqxf8nRfziGUvF1EgBf+LsCSVEzz1x\/elz2JNFU4fjZ44pu+07olqF6mhav5mQQT+u3LgidufnUXJGXLp6Sf2kUAwjVIrkdxHGBgpv1LZnG1D4oHOXzgpF\/KQRU0Qb+SNLpiy4fN0bXwO+iqoUyVIoyvivSGeTTuQ2IA+GhPE1XgOv3r7CzTuanf9yLVv3bFHuJxD\/XQmL98ODRw9w2+e2HB4FFM8FUyWEEiUDvnv3rlovT+bOnYs+ffqgffv2QuFP9RMmKB4NSrLgLFmyYOHChShSpAiqV6+O9evXy25haqM25hMmwASYABNgAkxAZwT4X5o6Q8mCmAATYAJMgAkwgdhGoHz58li+fDn2HdyHVs1bR2h55y+eF\/G3X79+hQVLFuLJ08dCTus6HZE2lU2EZBp1pyAXAKkA1RcLSjo6e+5sLFi4AI8ePxJKru6e3VG1clX4+PjAo6UHxo8djwL5NV4cO3buwOixo4PVbd+xHZOnTsaWjVuEYm7L1i2YOn0qbty4ATNzM+TKmQsjvUYK2VG5LsmODQBRSTmKZQclcqbQMiEVCuHySvmds333dvH5tQ0pfMNSwiPHxjr477NJoyfBs68n5i6ci9nzZ4uEwi3dW6JX114iaS8pq9Napf1tGpTH4cmTnzkbUiRPIdpQUuLUKVPDx9dH7WNpYSnOKVxOxnQZcfHqRTx59kSE1MntmFttR7v8R08dhZ37doCSHCdNnBQUOoeK\/D6ojf9ycuDoAWTKkBk7D+zAw8cPQbv1qTx8rGE6cNSAECV8D\/wuQgVlSJdBCdVzHf9M9BLtaDc\/5QvQLsmUPAHahQw9FLqLvrOlXEtj\/dZ18HvvJ5pQjgIyKlCeBbmWQ8cPoUvrruK+tvcDVZAHBLUfO3WMMEgkSZxEtNP+QWGVnLI64cLl83Bzcwu2y3\/t2rVC8T9t2jR4eHiIbmTc9vLyQpMmTbBgwQJRV6tWLfEcyVBQs2ZNhKWN6Mg\/mAATYAJMgAkwAZ0TYAOAzpGyQCbABJgAE2ACTCC2EChXrpxYytHjRxEQEICAbwHYtGUjfB\/4IvDHD6EIptAOKZInR09FqZU4cWJ16aSIadKiMXbu2anW0Ym5qTkmKLv+82b\/mQgzWAO++COBuHE0Cs\/A74F\/bKfrm6PGjMLEyRPRrWs35MubDzt37YR7M3fMmDYDDes3FO\/C7j27gxkALly8gP0H9qt1GzdtFLubydtj4+aNaNa8GTyaeaBD+w64cuUK5i+cD3cPd5w89nP3s67XoS0vDoKsKdqVfB4jCMgQQBSijGLuUyEFMJUECRKI2PcUH5\/C\/vTr0U\/Ua\/\/4U+gg7XakYA+rnF+9ESiXwoKZC0QS3T3792D9lvWgpL5JkiRB88bNxTCkFP61vH33FunTpf9ZrfWakhfA3Xs\/leXaBhDa8U95BZInTY7CBYoE86rqMqAzzii5AyhhtEvBoiJZ8FolNr\/nwC4\/x1HO6Pe8dqG5SKW6rK9TtQ68+o5AierFlDBAfVTPAqlIXzd\/vaLozymbY8aCGZg8Z5KoozBAy9YtxfFtJ8XO\/xZdm+ONMkazzk3V9uJEUfSHVigckM8DHyVpc3Y1n0KfTn3h9e9wkKHy6s2rwshRplhZIYK8H2Qh74cbShJkbe8HOW\/ZRh5dFZ5kAHjx4oUwhFP9gQMHMGTIENSvX18YAWTbCxcuCAU\/5Qs4e\/asrIajoyNWr16Nly9fit9x9Lz\/1IY8VLgwASbABJgAE2ACuifABgDdM2WJTIAJMAEmwASYQCwhYGNjg+zZs+PatWuYO38ulq9ehmvXr4W4ulVrV6Ffr\/7w9\/eHU3ZHRWkEVflPO\/1J4eZWvAqaVG0RLExGiMK40qAI0I7\/SVMmoX\/f\/ujRrYeYWyW3SiIcydDhQ1G3dl2UK1MOh48cRr8+GmXroSOHkM4uHY4eO4pePXqJPvsP7kfPbj3F+bFjx1C2TFlMmjBJXFevWl3E9fYa4QVSOpLyNKoLewBENeGoky+fHcXypzA\/VGjne5pUaUS8eLqmHfPbdm2D18CfCmDaPT\/AawB6dOyBfHnyUbM\/FhonInIoFn\/X3l1Ro0oNUFifujXrok6NOihYsiAo9A\/F+8+YPqMIDeTR2EOdw41bN0Scf8dsjmqd9knRwkUxdfZUtUpbOe\/q7IoxSiz7ZMru\/mpu1dU2FEbnwNH96NraE60at1brr926Ks5JaU6FFOv03ZOFjLt3lLA4dtZ2skocHeyzIFHCRBjWezja926HDdvXo4ZbTWTO6CDu71Li7zvnK6T2uX7rujAikAE5vV16kPfFiTPHlVBI2UFJhmeNmy0SFKsd\/nJCXgdU0tumx\/Vb18S8Hew1Yz9+8hgHjx0AhRCys9HMO6LeD7m0PChu39aEB9qxYweyZcuGjRs34v79+0ifXmOoIS8oKp06aRJMiwutH3Q\/LG3YAKAFjU+ZABNgAkyACeiQQMg+ozocgEUxASbABJgAE2ACTCAmE6hQoYKY\/mAlYSUp\/03imSB31rzInS0fiuYrgWIFSsHS3BIvX71Ej77dMXTEENRtUhf13OuKfrZW6bBm8lYsn7BBxPrX3rEak7lE19wpDAYVqQDVxzy8vb1ByTTr19Mk+5Rj0s7\/58+f4969eyhfrjxOnzktYmaTEo7iZnfs0FHUUd\/LVy7j2bNnoLBSVMaMGoM1K9eI89evXwtDwZ07d8T1p4\/hi0kuOkXghz4ZRmB63CUMBP636H8ixM+GrRuweOXiYEp9z46e8H3oi96De4sd35TMvGufrvC574OcTj93qP9tmIjIsTC3EGFmvMZ64fS50yJuPYUjovkULlBYDOnZwRMbt23E\/CXzQaGGbt+9jc69OyN71uwolP+nAl17fmQAIBlq0fw6EJcuBV2U5MA+8L7mDVfnYmoTMyWWPYUDOnj8oNgZ\/0kZa93Wtfjf0v9Em89fNN83p2w5sGz9UiUu\/zmhpO8\/sp+asFgVpnVStUI1lHApiSFjByu7+N\/APr09qpSrghUbVmDhygV46\/cWh5Qx9x7aI3qRJ0XZYuUQL2480Wfl+hWKEcQeR04eCZdRmNZJ3jsy7j\/t4B8ybogY4879O4oB4CDKFi+nzpS8HzZt34gOLTpi1+o98D50BW3c26r35ck3xUChXd76vRGX9N+8OXPm4PPnz2jatClOnjwpvN0o\/r8syZJpQhYdPnwYHz58+O1DiYHD0kbK4yMTYAJMgAkwASagWwJsANAtT5bGBJgAE2ACTIAJxDIC6dKlU1eUyc5BUeZvw4wh8zFj8DyM7TkZo7tPxLa5B1G6UDlYpbKGdWpbmClhfihUDbWndlx0SEAq\/EKPkKHDwTSi7vveFye\/xiu3trYW9aTwL1myJGjH8MlTJ3HkyBE4ODigRrUaQhF26dIl7N23F9myZlNDm9BO4+69uiOrU1bYZ7FH46aN4X3ZW8iTRg7N6FHwM4ghGwCigK2eRMrwTf7v\/dG0bVO06dIGOR1zYsrYn8lkq1eqjrHDx2LdpnVwLuWM0lVKi93iMybMCJZI929TjqicPp59kCVzFjRo3gAZc2ZEO8926Ni6I5o1aiaGbFinIYb2G4phY4YhvVN6lKxUEkkSJcGaRWuQKFGiEKdFyYBDC1mTXEmUS2Fx6H42h2zB+vfu3Fcx4gUgf9m8cHTNjkWrFmH57JVC8X7e+7xoO7T3MCU3QDJUc6+ColWKwM\/fD62atP6jsXFE\/5F4\/\/49vCYMFzLGDB6nKN\/LYPCYQchRzFEJMdRV7PSX3zVKWuxW1g13fe+JHAC3lHA8lJdgwZSFweb7p4t6NeqLsE\/3FBlUKAxUl1ZdQLkTLik5EE6dO4kyyhyoSO+Hlo1bCe8HxyyOYj2\/ez\/ED+b9QH1v3b1FB\/Tq1FscyQBw9epVEWJq0qRJ2L59uxoaiDzlqGzatAm0RvlZtWoV2rVrJ0IrhaWNEMI\/mAATYAJMgAkwAZ0T4BBAOkfKApkAE2ACTIAJMIHYREAqLWzTpMOiMatDXJqZiRm8uo4L8R5X6paAVI5LhZpupYcsLXmy5OIGxa9OruR7kIV27lPJkCGDCNlTyLkQDh0+hFevXsG1qCvSpEkjDAHHThzD\/v37UbFCRdkVbdu3FTtp+\/Tug2KuxeDk6ISVq1aiXcd2apuoOokOhlG1FmOVK5\/hphWbhDKf4t6HpDSnHAAUYofCWKVIkULkBtBmVqpYKby4+0K7CvcuaRTL2pV\/k+N7VWtXflBHWxtbkQOAQuxQ2BoKSaPtAUXf4Q6tOohwQBQWxyq1lQiDpT0uJRL+tdw8dxOLli9CjwE9RGJc7fu7Vu3WvlTPKZ791mXbhQcA5TWgED5UfM9rwunQeXbFeHBw4yERSilxosRqKCW6J8vVI9flqThmsMuAO6d\/8iLjw6R\/pmDskPF4+uypWPPU\/03BleuX1X6dW3bBll1bFEOxGVbMWaGECyosjIeywfVjN4XnwPJ1y2QV8uTIi4dPNHOlBMbTx8xE+bplxf3aSk6CutXqgbwuKCQRGVEK5C4o7ml7PzSp645ECRJi+77tIXg\/5MSSNUswb9n\/UKV8VcUr4TCWrV0qZDSo0VAJXZQB7Xq2wZkzZ9C5c2fMmDED8+bNg6enJ8hLjgyedevWFXX0+7Bhw4aibZcuXURYIEp0HJY26oL5hAkwASbABJgAE9ApAfYA0ClOFsYEmAATYAJMgAnENgIysa+ZmVlsW1rMXA8lV1CKPg0AWbNmFWMePnpYHOWPI0ePiN2wMmEp5QEgAwAp\/F1dXEUzMgTs2bNH1FGYICqUrHXP3j1o17Yd2rdtjxxOOcR6rly9Iu5TyCB9FO346foYj8fQIQHN10AkuqW48iEp\/+Vo9F0hZTwpviNTIiqHkgPTHLWV\/9rzoHq6T0riMJc4mpZBvw7C3C11ytSq8j+0TrSTnvIBRKaQ4j2dbboQf09RqKF0NulEDgRS\/kek0E5+yStFkIGySAEXIapk0VLQTsgcFu8HSmxMIY3IcyFfmTyYNHsSJgz7V50ahTaKrzAhuTNnzsSiRYswffp0+Pn5oWdPTV4TChNUuXJldO3aVRhKmzVrhgYNGmDQoEGqnLC0URvzCRNgAkyACTABJqAzAnGUP\/yD\/nzUmUwWxASYABNgAkyACTCBWEOA4hnb2dnhzZs3+EfZ5V9KCfXDJfoINOheHQ+e3sfkiZPRzL1ZlEzk6rWrcCnmgnlz56FWzVpijNr1auPWrVv439z\/IVfOXCKkD+3i92jmAa9hmiSrFOe\/eKniYjfvjSs3hAfA+g3r0bxVc+EhcOfmHVUxV7ZCWaEQXbxgsVDebtm6BR06dxC5Bk4dO4UsWbJEydpIaIo0KUC7sk\/uOqUmCo2ywVhwlBCwy2UrnuHZQ2eFojlKBjFgoYtWKB4A\/XsgU4bMYte+AU81yqbm3qEx9ivJjbu374Hu7TTJyf802POXz4URSHo\/hNT2\/Yf3oLBSZAQJqazauBLdB3cTv7Nu3rwJKyur35qRgfPRo0cgT4DQDLVhafObYK5gAkyACTABJsAEIkyAPQAijI47MgEmwASYABNgAsZAIEGCBBg1apRY6rx1s41hyQa9RmUzc7SUOTPnIG+evCjvVh5pbNKgS7cuaNmipar8p0nRTn6rNFbInDmzUP5THXkAUClTpoyq\/KfrQQMGIUCJSZ4th5IXIFN6\/G\/+\/7Bh7QZhFDhz7gw14cIEQicQtIWLco0YY\/kRqAEQN7p+IRgA9IAgTyEK\/ROWEhbvh4RKiKDQlP80Rr3q9VHatTT8\/f2xYMGCEIclb7mMGTOGqvynTmFpE6JwrmQCTIAJMAEmwAQiRIBzAEQIG3diAkyACTABJsAEjIlAixYtRBiDuw9u4+FTX9ha\/UwMbEwcDGOtGgtAVDqxOmZ3xNuXb4Mtl+KnL5y\/EJ8+fcKz58+QIX2GYPflxVXvq\/JUHFOlSvWbLLpRongJ7N+9H8+ePYNlfEtQzHEqr59r8gqIC\/7BBEIhIHMAhBZWJ5RusaY6ICBArCWuEpLGWMv375pQYaYmpnpF0LS+B\/Yd2ScSAPft21evY\/NgTIAJMAEmwASYQMQIGOeWkYix4l5MgAkwASbABJiAkRIwNTWFTAb85MVjI6VgGMtWQ0pEUxBLS0vLUJX\/ESFEiYKl8j8i\/bmPcRMwVgPA98Dv4sGbGLEB4JsSxouKiYl+9\/Q5ZskuxpVJ0MUF\/2ACTIAJMAEmwAQMmgAbAAz68fDkmAATYAJMgAkwAUMgEBgYiMuXL4up2FrZGcKUjHcOavLPaLIAxCLyRhw9JcY\/RekBEyduNMXEimaC9DuZimoQjOb5RMfw8h2IF1e\/XhCWlvFFqLKnT5\/i3bt30bF0HpMJMAEmwASYABMIJwE2AIQTGDdnAkyACTABJsAEjI\/AlStXQLsdrVJaI20qG+MDYEArljHPpQLQgKbGU2ECeicgvw96HziaB5TKb2M2AMjfgfH07AWRLEkypLNJJxKWP3\/+PJrfBB6eCTABJsAEmAATCAsBNgCEhRK3YQJMgAkwASbABIyagI+Pj1h\/eusMRs3BEBYvFZ4yBIghzCmmzuEHO1HE1EfH8w56d43ZAPDjR5AXRDR4gXz4+EG8gxYWYUtAzC8sE2ACTIAJMAEmEL0E2AAQvfx5dCbABJgAE2ACTCAGEMiQIYOY5a37NyB3nsaAacfKKcqY59+D4l\/HykVG8aKk0lTuII7i4Vg8E2ACUUBA\/rdI3yGA\/N\/748WrF4gfPz5sbW2jYGUskgkwASbABJgAE9A1ATYA6Jooy2MCTIAJMAEmwARiHYGcOXOCjACv373C9btXYt36YtKCpAHg27dvMWnaBjlX9qIwyMcSrknJ70O4OsWCxj+gugDEgtVEbAnSABAnjn7\/Sf\/oySMxYTs7O6POwRCxp8a9mAATYAJMgAlEDwH9\/rUQPWvkUZkAE2ACTIAJMAEmEGkC5cqVEzIu3\/aOtCwWEHECcrcrewBEnCF7AEScnaH1NFYDgPReiQPjTIJM72FgoMYIou8cAGlSpRZfA0oCzIUJMAEmwASYABOIGQTYABAznhPPkgkwASbABJgAE4hmAqlSpRIz8Hv\/LppnYtzDS4WnVAAaN42IrV41AHAYpYgBNIBecve3\/D4YwJSiZQryXY6WwaN50MCgHADx4ur3n\/TJkiZHkkRJ8O7dO1y9ejWaKfDwTIAJMAEmwASYQFgI6PevhbDMiNswASbABJgAE2ACTMAACZw7d07MKqONvQHOznimFDdOPLFY9gCI+DOXu6a\/B2qSiEZcEveMbgIyKXZ0z0Pf40sDSBzjdQDQN\/Jg41WtWE1c\/+9\/\/wtWzxdMgAkwASbABJiAYRJgA4BhPheeFRNgAkyACTABJmBgBGS4A6uUaQ1sZsY1HbnjmQ0AkXjurDSNBDzuaggEfhoA+GWOjudhbmouhrW0tIyO4XlMJsAEmAATYAJMIJwE2AAQTmDcnAkwASbABJgAEzBOAg4ODmLhnf5pjdkrp+LDx\/fGCSKaVx03rsYDgJMAR\/5BcBilyDNkCdFDQDUAGHEOAEn+B\/TryfPW7y2Wrlsqhq9SpYqcBh+ZABNgAkyACTABAybABgADfjg8NSbABJgAE2ACTMBwCAwZMgQFChTAl6+fsWjj\/1C3WxWs3bXCcCb4h5m89XuDd\/5v\/9Ai5tyS8a5ZeR3xZybjpssY4hGXxD2ZABOILgIylJe+xz9++hg+f\/6E4sWLo3DhwvoensdjAkyACTABJsAEIkDAJAJ9uAsTYAJMgAkwASbABIyOgJOTE06fPo2TJ0+id+\/eOHToEP5dMBpfA76iYeWmBsfj3sM7WLp5AbxvXcTDp75ifsmTpED5opXQtn5nmJma6WXOl29dAoXryZ0tr07GYwNA5DFKA8APzgEQeZjRLEE+y2ieBg9vRAQeP30sVmtjY2NEq+alMgEmwASYABOI2QTYAyBmPz+ePRNgAkyACTABJqBnAoUKFcLBgwexYMECMfK0pf9i5fYlep7Fn4d78uIRPEe2w\/V7V9GiVlssGr0a\/3ktQb2KjbFu90p0HdnmzwJ0dPfb929oO6QpHj7TGCB0Ijau5s9X9gCIPE0ZRiXyklgCE2AC+ibwAz\/EkHGg33\/S21rbinGXL18OmRtH32vn8ZgAE2ACTIAJMIHwEWAPgPDx4tZMgAkwASbABJgAExAEmjVrhjdv3qBbt26Ysng8MqfLgvxOztFO58OnD4qCvx2s09hgcv85wXb6Z8+UA5nSZUavcV1w2vsECuaM4vANPzQKKl1C4ZSfuqTJsmI6ATbixPQnGPPmb5U6rTrpePE0OVnUCj5hAkyACTABJsAEDJKAfrcLGCQCnhQTYAJMgAkwASbABCJGwNPTE3369BGdD57eFzEhOu516cZ5PHr2AJ0a9wim\/JfDuOQtjua12iBJoqSi6uL182KX\/inv46jesTw6erWE3\/t3CPgWgJkrJsO9Tx2U9iiM+t2rYdKisfj85ZMUhQ7DW+DkpWMiFFKNTuVBn6lLJuCb0pfatR7sLtrOWzsbXjMHqv34xDAIcPgYw3gOPAsmEJMIpEiWQkw3ceLESJkyZUyaOs+VCTABJsAEmIDREmADgNE+el44E2ACTIAJMAEmoAsCJUqUEGJ8H\/voQlykZVy9cxnx4pkga4ZsocpqVacDsgTd\/\/DJH1dvX8boucORK0seJLBMgMQJk8BrxgBs3r8eFZScAYPaeyF31rxYvWOZyCsgBd+6fwOj5gzFjXvX0LR6KxTJ7YoV2xZjldLOxMQUtcrVF00L5HBG6ULlZTc+GgqBOOxPYSiPIqLzMFYPABMTjSP7d85jEdFXJ8L9KASQVWor+Pn54ebNmxGWwx2ZABNgAkyACTAB\/RHgEED6Y80jMQEmwASYABNgArGQACW4pUIKb0Mo1+5cQXrrDMHmQ\/HyHzy5L6Yn40abm5kjbSpNEsfAH4GoVqomPGpqcgPQ7v27ShLhVrXbo1Z5jRK\/VKFyQtHvffNisGVSYuFZQxdA7ia\/7XtTeAU0qtIMbsWqKIaFYcilGA+K5iserB9fRB8BqTSWzyz6ZsIjR5ZA3KCcGJGVE9P6y9Az5G3ERf8E8uXKh217tmH9+vXo27ev\/ifAIzIBJsAEmAATYALhIsAGgHDh4sZMgAkwASbABJgAEwhOICBAo4CKG9cwdlP\/UJT5X75+CTbJ9x\/90ahXzWB1TplzYs7wxWpd3uwF1XMLc0ssGbtWXJOy+MmLx7h1\/zrIUPBJKwQQNcjnWFBV\/tO1nVV6+D7VGBvoWtdFKq2lElvX8o1B3o9ATW4G3we+sFAMQVTiBCmSpUKZjEbfAr7hW+A3fP\/2XYSEImMXve\/fA7+DzuMo73zcOBqHYjrSs5H96fsQR6mT3ws6N1WMZPShNvHixYWFhSXIEGVurnyUo5mZmdrfGJ6DLtZIz8AYi3yH5ftmlAyCcqzI75g+GTSo2UgYACgRMBsA9Emex2ICTIAJMAEmEDECbACIGDfuxQSYABNgAkyACTABQSBLliziSDvvSTEaL270JkV0VBT7Jy4exYeP75EgfkIxt\/gW8TG+9zT1if23ZqZ6Lk\/SpEgjT8XxmhJKaM6q6bh087wSz\/+zothPh89fP4NkaZekiZNpXwol7o8oDcuhUXiyASAY9nBdUH4HKq27tQpXv+hsrJgTFCvFzxlIQ9DPGs2ZaEen2m21LsiIBcX+EVcxQMybMh9lS5T9VUSMupY74WPUpHUwWXp+VL5\/V56nkZbAaPQ+cy3kCktLS1y6dAmPHj2CjY3Gm8xIHwUvmwkwASbABJiAwRNgA4DBPyKeIBNgAkyACTABJmDIBJycnJAtWzZcv34dm\/atQ82ydaN1urSzn4r3rYsonLuoOKfwREXyuIpz+rF210ol0e9b9ZpO4moZLl69fQnPUe2RwSYj+rUeijzZ8yNlslToPb4L3vkH76cqXINJi7oLLb1u1A0SyyVL5XnSpEmVnfgag5U0qMgjtSFjFu2w1uzYjyd2+FN7WSfb0lF+CJ08l\/dlHXkN0IfqSREvvAkU74Jv3xVPg2+Kp0GQQjMk\/CJ0lcZxQdzWlh1S+7\/VBX4LxK79O\/VmAKC1keGF1knrFusN8qQgrx1SZEvPCgWQwkf5KIY0+kheQQsX13J993zuIXGixIo3hYX4WCpeFcawK95EyXNChZgZaxHGLGXx0WF0NjM1Q+mipbF1z1ZMnz4dI0eONNbHwOtmAkyACTABJhAjCLABIEY8Jp4kE2ACTIAJMAEmYMgE2rVrB09PT1y6cT7aDQAUbz+9dUb8M3OQiM1vq+zc1y4fP3\/Eq7cvRCgW7Xrt8\/PXzoLCBvVtPQQZbTOJW6SIvKfkBUiSKPiOf+1+v50HJZmNrLL2N7lcESkCpMQnhfS2DduQPWv2SMnSdWealzQGkHKXDBFCEa4oyOlIdeJaOZeF3i\/tD9XLd+7XelNTU\/Qf0h+bt27GrgO7cdO9Or4GfEVgkAJeo5hXxlEU9VLBGrI8KPPQGDTEnJT+ZMiguZGxQoyrhFqSxg05V10fi7sV\/00krZEMAqSkDamQ8px20FM4pvjx4yueQgmQIIHyCTomTJBQnMe3jK\/kEjGBhbnGuEChmoShQbmmc5JP66NnJP5Hx18+YnzFahdSG7qn3V5ca3lrSJ70HCjkj3zuVH\/zjib57LMXTzF++jixHgozFY\/CS5HRShiq4gkDF4XIiafc0y5kYImrzPW7IjtQkU3vHT1P2lVP96j86l2QQGFFTCjskqXC19TEDIkU4wtxpKKGwwoKy0TzIeOOkK+E0vqmGH78P36An\/87+L9\/j69KqLZvyniyiLbKexTw7avyHdAYjOjdpELrF+9U0LtFdU+ePaED5q+Yh237ton79B5TUd97+S6q35FAhbkmXBe1I+OBBYXgUtZD3l2WyvoslWtioDH2xRPvgJmyRlPleVOYLnq\/4iuGpjw58wkDwJQpU0QYoMSJE5NILkyACTABJsAEmIABEmADgAE+FJ4SE2ACTIAJMAEmELMIPH78WEyY4t9HdyElzpQBc9BhWHN0+qeVkoi3KvJkyy+UktfvXsWGvavx+u0rtKjdNtSp5lC8CEgxt+\/ELjSp1gL+H\/wwd\/V0PH7+SInVbhFqv19vkKKRlGPnrp5G1ozZ4ZA+669Nwn+tzIsKKQO5RI6Avr03wjJbUjrSJyoL7ZKn8vzFM\/GJyrFCky3Yk2JcKrxJcU6N5ZHuaCrUem1ZpARXtLxCmSsU5IqiWRbyMKCPMZQ3b99g0pyJxrDUUNd45OSRUO\/p48aHDx9ARoCBAwfqYzgegwkwASbABJgAE4gAATYARAAad2ECTIAJMAEmwASYgDYBb29vcZkpXWbt6mg7p3A9ZARYtGkeDp3Zj0Ub\/yfmkjhhEuTOlg9t63VSd\/aHNEmrVNZoWbu9YixYo\/atVro2OjXugVkrJivhg\/yQOGHYdnvWLFtPCTm0AicvHsPW2ftDGi5cdTLcBRsAwoUteOOgUDpk5DHGIt8dB7vsKJ6nrDBSmcQzhYmyGzqesruZjnStHRZL7u4mXhRiR0l3rOyMVtrFNVEMFiaivUxwLBMi07tqouwSN1M++gzL8\/HzB3z4pOwwD\/j82+Olnd3fFeMBJXem3eX+H97h\/Sd\/+CufD0Ef8hL6+OWDSCb+nXauK6GLKHxRwHcldJHyof5v378Ru8zJa4B2hVOhXechHYPVKaZI+r8sah9ZKe8pr6ZgrhzJNKLtKUD15MFAhqKM6TOKEEgkR3oIkEFEngvPAeVajiPHJXlUR0fxvJRd+zK0VZApRn1msu3nz58FM+pHu+8fP3kskldbpbESYuUY2kc5b5JN8xVeFEEeFeRBoW3sEnMJakf1ZEA1MdX8c\/1XBtrrkP1EG9X7IDgzMY8gjur8FObk+fD161fxrL98+QL60HtBslSOQd4t0jOHjsJrRjHC+vv74\/nL57h165acEh+ZABNgAkyACTABAyQQR\/kDQP6ZZYDT4ykxASbABJgAE2ACTMDwCRQuXBgnT55E5nRZUCiXC9o26BwtcZlDI+X3\/p1I5Jv6l0S\/obWX9fRn4pMXj5E6eWpFkakJcyHvhef4RUkeTGEw5M7r8PT9te2AST1x4NQetG7ZGuPGjPv1Nl+HgUCqtKnEDvGTh04ii0OWMPSIXU3adGyD1etWo7xzVbSq3iV2LU5Pq+k0oSmev36CaeOnoX6t+noa1XCGmT1\/NgZ6DYSLsws2rthoOBPT80zOXjiLirUqioTAFy9ehIODg55nwMMxASbABJgAE2ACYSEQPBhiWHpwGybABJgAE2ACTIAJMIFgBKpUqSKub\/vexNItC7Dn2I5g96P7gnb+h1f5T3OmXaPWqW0ipfwnORQ2SBfKf5JF8b2p0O5ULpEjQM+XCxOICIEfQSG4pEdORGTE5D4yxFI8xQvEmEv+PPlRt0ZdfPr0Ce7u7sKjwJh58NqZABNgAkyACRgqATYAGOqT4XkxASbABJgAE2ACMYYAxT4+evQoSpYsKeZMSUG5RA0BGZaFQldwiRwBNgBEjp8x95ZO5BSKxxiLTM5LYXqMvYweOho21jbCC65fv37GjoPXzwSYABNgAkzAIAnwXywG+Vh4UkyACTABJsAEmEBMI+Di4gJbW1sxbRG7OqYtIIbMl2KYU9m2fRuuXbsGMrZQnG8yCJBXAO3M\/RbwTVzTPVGv7FYOVOJY0znV0bmIER4UK5yUmSSDjiRDKjd\/hiX\/PWKmiKmt7KAX\/6OjEntbKtQp3reJiYmQI2J8U3dlsz2dy1jwMjY5zYP6UXt6b2TcbZqDHEPED1fiycs44jL+ebD3LGgzv5wDzUsWGkNwUWK3y3O6p65TNuQjEwgjAemBox3DPoxdY0Uz6QFA31tjL4kTJ8bMf2eiVpNaGDduHPLkyYNGjRoZOxZePxNgAkyACTABgyLAf7EY1OPgyTABJsAEmAATYAIxmUDSpEnF9P0\/+sfkZRj03F+9eSHm9\/z5c9CHS8QJPH32FA6ZOWZ3xAkab09pPDLWEEDfv2k8kKRBz3jfBM3KizgXwcjBI9F7cG+0bNkS2bJlQ758+YwdC6+fCTABJsAEmIDBEGADgME8Cp4IE2ACTIAJMAEmENMJSAMAJd3lEjUErFKmFYKdsjrBrUxlkRNA7pCnXfhmJmYwMzMTu+1pdzKF6KCwQabKTt14yoeOlNBYXCv3KKcA1ZsobUmZGU+pM1HiesdRduNTkbvw1XNlZ73iK4Bv3zS76YWXgXL+XdllT+e08z4g4KtIukx9v379iriKbFKY0jm1oUJzpjFFSCPl3helT6DioUBtaU50X+OloHglKPXflN375MFAx2+K8vG7ciSZ9D8qUiGrVKlF1sVVuFAeBrFGZa1Dxw3Gy9cv1T5qByM5kV4Skp2RLFuny\/wRlIPDaD0AvgUInsa6\/pBepuZNmsP7ijcWr1wMNzc3bN++nY0AIYHiOibABJgAE2AC0UCADQDRAJ2HZAJMgAkwASbABGInAXt7MPZaiQAAQABJREFUe7GwB0\/ux84FGsCqzM3MxSyyZsqGLi27GMCMYt4Uxk0fIwwAMW\/mPGNDISBDcRmrApwMgFSMdf2hvYejh43Gg0cPcODIARQvXhxr1qxBxYoVQ2vO9UyACTABJsAEmICeCBhn1iY9weVhmAATYAJMgAkwAeMi4OTkJBZ858Et41q4HlerJgEO2kmvx6Fj3VAcviTWPVK9LUh6ABhrDHzyxKFirCGQQnvRyPtq2f+WoV7Nevjw4QOqVKmCyZMnG623UWicuJ4JMAEmwASYgL4JsAFA38R5PCbABJgAE2ACTCDWEsiVKxcsLCxw98FtvPF7HWvXGZ0Lo9A9VCgEDhcmwASihwCFp6JiqoTTMsai5gCIx\/+c\/vX5m5qaYvqE6fDs4CnClnl6eqJjx46\/NuNrJsAEmAATYAJMQI8E+C8WPcLmoZgAE2ACTIAJMIHYTYCU\/xT2gMrF6+dj92KjaXUm8TQKR4qDzyViBNTcAEF5DiImhXsZM4FAmQNAyZdhjEV6AFCOES4hExjQcwAWzFyg5B8xx8yZMzFv3ryQG3ItE2ACTIAJMAEmEOUE2AAQ5Yh5ACbABJgAE2ACTMCYCOTMmVMs9+EzX2Natt7WKmNuB3IIIL0xj20DqUmAg5TYsW19+liPNCIZqwcA5wAI21tWqXwlFHEuIhpPnz49bJ24FRNgAkyACTABJqBzAmwA0DlSFsgEmAATYAJMgAkYM4FEiRKJ5X\/89NGYMUTZ2n8qb39E2RixXbBU3saJGye2L5XXF0UE1BwARroD\/vt3jQeSNEj+CfOCpQuQyj7Vb59cLrlQrX417Du070\/dw33vwOEDYiwfX59w99V1h2Gjh4mEwCS3Vq1auhbP8pgAE2ACTIAJMIEwEmCfxTCC4mZMgAkwASbABJgAEwgLATs7O9Hs8q2LYWnObcJJIE5Q2BqpxA5nd26uEJDx26UxhaEwgfASkN8\/E1Pj\/OekNACEJ5H2nClzkCJZCoH6u+LBdP7ieWzcthGNWjbCuqXr4OLsEt7HEGL7tFZp0bBOQyRMkDDE+\/qq3H94P6bPnQ5KFL1hwwZUrlxZX0PzOEyACTABJsAEmMAvBIzzL7ZfIPAlE2ACTIAJMAEmwAR0RaBixYpIkiQJzl45hf\/WzECrOh10JZrlKATknvUfYA+AiL4Q5ubmouv79+8jKiJG95NKW2kIidGLiabJB\/7QfP+MNQSQNACExQNAPqLCBQqDlPOylCpWCvVr1Ue+4vmwZfsWnRkAsjpkxZSxU+Qw0XacNmeaGHv48OGs\/I+2p8ADMwEmwASYABPQEOAQQPwmMAEmwASYABNgAkxAhwSsra3RokULIXHNzhU6lMyitAkE6R+1q\/g8jATMTIMMAB+M0wBAO5KpyESuYcTGzbQISAOcZKl1yyhO5bsTL27kkiDbWNsgebLkeK\/1Xbz\/4D482nsgr2teZMiRAWWqlsHajWuDcaX2\/Yf1R5GyReBcyhn\/jPsHT54+EW3OXjiLstXKqtfjp47HiPEjhIxSlUshU+5MqO9RHw8ePQgm89qNa6jTtA4y58msygwICAjWJqwXnz5\/wpHjR0AGkg4d2AgeVm7cjgkwASbABJhAVBFgD4CoIstymQATYAJMgAkwAaMlcPToUbH2bBkdjZZBVC1chgCKKvnGIFeG\/pFhXIxhzdprlEprCsPCJYIEgixw4dkBH8GRDLpbYCQTSc9ZMAcvX71Eraqa+Pj+\/v5C4Z8lcxb07NIT5GmwbPUytOvWDk7ZnZAtSzYRwqutZ1t4X\/FG3259xfWUWVNw49YNLJ6zGCTj4uWL+PL1i2D38NFD7DmwRyjjG9VpBMpTQ0aBFh1bYPeG3aLNrTu3UL5GedC4w\/oPw9evXzFywkhhJJg9aXa4n8GVa1fEvHLmzCk84sItgDswASbABJgAE2ACOiXABgCd4mRhTIAJMAEmwASYABMAbG1tcerUKZy+fALnrp5GPseCjEVHBGTiWmNVXusCY9yg5L8yjIkuZMYkGXLXNhsAIv\/UjDWMkqWFpYBHivKwlmbtm8HcTON9Q8r5+7738frNa5QrVQ7FXIoJMSfPnkTiRIkxe\/Js2Nlo8skULVwUhcsUxqlzp4QBYMeeHdi1dxf2bNqD3Dlyi37p7dKjSesmuH33dojTefHyBY7tPoZMGTNp7isRnIaMGoJ3fu+QJHESjPp3FCwsLLB1zVZYmFuINimSp0DLTi3RqU0n5HTMGaLc0Cqv37wubuXJkye0JlzPBJgAE2ACTIAJ6JEAGwD0CJuHYgJMgAkwASbABIyDwLRp02BpaYmlS5di9Y7lSJo4GWzTpIOZqZlxAIjCVao5ADgGUIQpyxj4RmsAUMKSUDFW5XWEXxytjtKLxFjfIdWLRNmhH9ZildoKZDjw8\/cDhelJmSIl1i9dD9cirqqIsiXL4tzhc+L685fPQqF\/9vxZEO9Pnz6J+svXLoMU\/lL5T5VkQPC57CPa0Y7\/X4u1lfVP5b9yUxoCyFuADADHTh5DEeciuHHzhto1ZcqUQt7ps6fDbQCQ74Wxe4ioMPmECTABJsAEmEA0E2ADQDQ\/AB6eCTABJsAEmAATiH0E0qZNi8aNGwsDwKEz+0AfMgKM6zkFjpnDt5My9tHRzYrYAyDiHGUYJamki7ikmNnzpxdJYMxcgAHMWhoAvn37ZgCz0f8UpGI7PN+hMcPGqEmAz104h5qNa2L63OmgHf6SJ61k4bKFmLtwLigsD42TN1de0O87+Tvv1u1bSJM6zW+L1pbx603aza9dzMw1xmjygvn46SNevX6F7bu3i492Ozr\/NVfAr\/dDupbGiW3btoV0m+uYABNgAkyACTABPRPgJMB6Bs7DMQEmwASYABNgAsZBoGTJksidWxOeIVmyZHjr9waj5w43jsVH4Sql8joKh4j1otkDIMgDIJLx22P9i\/KHBcaBxhdHJsP9Q9NYeUsaACKaAyBfnnwY0neIiM3\/7\/R\/VUar1q9Cz4E9xW781QtX4\/aF21izeI24Lw0AFCKIvAh+LZRLQLb59V7Q4\/qtmirIK4FCE7Vr0Q73r9z\/7dO\/R\/8Q+\/2pMk+uPCK58fPnz\/H48eM\/NeV7TIAJMAEmwASYgB4IsAFAD5B5CCbABJgAE2ACTMD4CFAIoLNnz8LX1xePHj0SOzzvPbwjDAHGR0N3K5a7XJX9sLoTamSS4irhRKiEZ\/dybELEOQAi\/zTl9\/D7t7CHwIn8qIYjQTUAfI+4F0nzJs3hnN8Z46eMFwl8aXXbdm1DVoesGOc1DsWLFkd8y\/i4dv2aWLgMWZU5U2bc87kn8gdIInfu3UH2gtmx79A+WRXmIz1Lh0wOYmwaT36ev3iO1l1ai2TDYRam1dAknibYwJcvmmTEWrf4lAkwASbABJgAE9AzATYA6Bk4D8cEmAATYAJMgAkYDwFSEtnZ2Yl8AKVKlQLtFm3Wrz4mLhyDjXvXgJOQhv9dkDuPla2u4e\/MPQQB1QNACf9hjEVV3gZGXHlrjNy01yw9cYzVAyAiOQC0+dE5Kd4njJggqnsN7CV275NBgJT5Z86fETkqvK96o0OPDqINheqh0rhuY8SPHx+tOrfC6XOnce\/+PQwfMxy0675MiTKiTXh\/eHb0hO9DX\/Qe3FvIo\/BDXft0hc99H+R0iljYOkowTMXKyiq80+H2TIAJMAEmwASYgI4JsAFAx0BZHBNgAkyACTABJsAEQiKwePFiuLi44OWb51izcznG\/u8ftBzQCPcf+4TUnOtCIRCH\/3oNhUzYq1UDQDgSmIZduuG3ZANA5J+R9AAw2hwAcTVhpCJrAMmWJRs6tOqA46ePY8XaFWhUtxHKlSqHmo1qws7RDg08GsCzgydKupbE+YvnxYNLnDgxVs5fCdqhX6lOJTiXcsb1m9cxdtjYCD\/Y6pWqY+zwsVi3aZ2QV7pKaSSInwAzJsyAqalpuOVevHwRX75qdv5\/\/fo13P25AxNgAkyACTABJqBbApwEWLc8WRoTYAJMgAkwASbABEIkYG1tjUOHDmHBggV48OABFi1ahFv3bqDDsOaYPvh\/yGBjH2I\/rvyVgCZ8Taixrn9tzte\/EZC7tyMTAujBwwdInSo1zM3Nf5Nv6BWqAeCHcXpA6OL5SANAZN4hXcwjumQkSZJEDP3+w\/u\/TsGjsQfoE1oZ1HsQ6CPLotmLRGLet2\/fwjqttahuULuBvC2OeXPnxZGdR0Bx\/ynEDrWTz6RksZJ4cfeF2n7S6EnquTwpVaxUsDZUTyGJaJ6PHj9CihQpRG4A2T68xyvXrogulStXhmQVXhncngkwASbABJgAE9AdAd5DpTuWLIkJMAEmwASYABNgAn8kQIrHli1bYujQofD29oabmxve+r\/BwMm9ENmdpH8cOBbdjBvkAsAGgIg\/VOkBIGOKh1XSmvVr0MC9Aewd7ZGrYC5Y21vDuZgztmzbElYRBtEuous3iMkbyCTk9zDgW4CBzEi\/05B5JKJqVIrDL5X\/fxojZYqUsLG2UZX\/f2oblntkRLC1sY2U8p\/G8X3gK4bLnTt3WIblNkyACTABJsAEmEAUE2ADQBQDZvFMgAkwASbABJgAEwiJQIIECbB27VpkypQJlByYwgJx+TsBucuVDQB\/ZxVai4gkAV65ZiVad2iNpEmTYuaUmThz9AxWL10t4oO7t3THrP9mhTacwdX\/9ADgHAARfTjSiGKsIYDk76GI8ovN\/eid2Lxjs1hiwYIFY\/NSeW1MgAkwASbABGIMAQ4BFGMeFU+UCTABJsAEmAATiG0ELC0tMXnyZFSpUgUzlk\/GTZ\/rqFKyBvI5stIktj1rQ1qPVN6GNXzLoSOH0NGzI4YNGoYuHbqoS8lknwmlS5aGmZkZJk6ZiObuzWNESCC5\/qgyIvl\/9EPLEbVVTvIkvkUCpEmeFvmzFkad0u6Q85D3I3P08KqBGsUboEaJ4KFiIiPzT311EUbqT\/L5XswlsHv\/bty8fRMpU6ZE6dKlY+5CeOZMgAkwASbABGIRAfYAiEUPk5fCBJgAE2ACTIAJxDwCFCN50KBB+P79G3Ye2YrO\/7TGxAWj1QSKMW9FUTtjqTT9EbXDBJMeEBAAnwc+CEu872AdDfQiTlzNPwECv4dtBzzt\/qdwJB3bdgxxRd27dEeblm3w+fNncf\/4yeMoX6U89h\/cD8e8jqhSqwrevHkj7i1ZvgTFyxWHbSZblHYrje27tgeT+eHjB\/To20OEGMrklAmNPRqD8g3IcvrsaZRxK4O79+6iVoNaSJ8lPVxLu4YrDJFJPM0eqMDAqM0BUN65Kga1GKN+mrq1RaqkVlizfwkWbZ8tlxQjjx8\/fxDzpu+Gdpk6eypS2adCh+4dtKvFeX2P+ihXo9xv9aFVWGe1xtyFc0O7HSX1FBZr\/pL5+PxF8y7vO7RPrMf3oW+w8aQXSViNaME6x+IL+h3Zd2hfscK+ffuCEhZzYQJMgAkwASbABKKfABsAov8Z8AyYABNgAkyACTABIycwfPhw3Lx5UxgCTE1NsWbXCtT1rIyRs4dgwKSeqNq+DNoOaYpDp\/cZOamfy\/\/b7u2y9cqgVY+WPztE8Gzt1jVwLJEdxWu4Yuz0MRGUEv5ur9+8xqpNq9SOpJhctHqRqphUb0TgRMYvD2v89nPnzyFf3nyQSs9fh3TI7IAeXXuoyT79\/P1w9vxZdO3ZFYUKFkKihImQLFkyTJs5TdRlts8swgg553dGo2aNVOU9PdMadWtgw+YNqFe7Hv4d\/S+IQ+mKpUEJUan4+fnh3IVzQvlPSYi9hngJrwMKQ3Tf9\/6vUwvx2sREYwD4rjCNypI2pQ1yZsqnfkoXcEPPxkOQNZ0TjnkfiMqho1y2mamZGOPVm1fBxjpw5ABSp0yNg0cOBqun9\/fUuVMo7lI8WL2hXWzYugG9B\/dWDLJ\/Ng6R9xaVr1+\/GtoSonU+u\/btwuMnj5E3b154enpG61x4cCbABJgAE2ACTOAnAQ4B9JMFnzEBJsAEmAATYAJMINoIODg4gAwBNWrUQPPmzXHp0iVsPbhRnc\/rd6\/Qb2J3VChaGT2a90OC+AnVe3wSdQSm\/DcZuR1zYfSAsUiZPEXUDfSL5L4j+ghlf71q9cSdLbs3Y+Do\/qhTpc4vLcN\/GS\/IAyAsiadpR++NWzdQs3rNYAO9e\/cOz54\/E3XSGEMKeVL0UyGFr3sjd\/Tq1ktcv\/N7h3ETx6F+nfqYMXmGqKtauSqePn+KIf8MQZVKVYTi\/8y5M1ixeAUqlK0g2pQrUw6Zc2TGtFnTMLDvQFFHPzzcPeDZSaNgpDBEOQvkFB4HVP+3EjdekAdEFHsAhDaP9Gnt8eC5j1AyS6PKdZ\/LWL57Hnye3EGSBEnh7OSKBmU9YGJiqorZc3orjlzYJ\/rmcSiIMgXd4Jgx5CSrmw6vwonLh9CqWlfY2zioMnR1YmFqgQ+f3otQL1Im7Zo\/efokBvUZhIFeA3H1+lU4ZnMUt6\/euIr3798bvAHgR2DYfIsSJ9TsbP\/y5YtcPh8VAivWrBAc3N3dQzUYMigmwASYABNgAkxA\/wTYA0D\/zHlEJsAEmAATYAJMgAmESiBfvny4ePEizpw5g+nTp2PRokW4cuUKpkyZgvjx42Pn0a2o3dUNUxaPx6Ub5\/HtW\/AQHKEKjiU3ZPJNqXSO6mW9fP0SJYqUROaMmZE0iUa5HdVjkvzAH4GQaxXXOtyt\/gMaJWfcOH\/\/p4DkLMP7yLWv27gOhYoXEp\/CJQqDPstXBU9k7eriKpvD+7I3yDMgb568uHDxgvrJliWbCOfz6tUrHDt+DIkTJUbKFCnV+zdv3USuHLlw4tQJVRadFCtaTL22tbEVXgCkYA5LkR4Qcm1h6aOrNqTgP3H5MIrkKKEqSO89vo2h\/\/WApXl8dKzdCxUKV8PuU1swftkwddgDZ3fiv01TkC1DDrSt0Q2fvnzEmMWDQfkGfi1kKFi68z9QCKKoUP7TeOZmFmLYO\/fuqMOT8p\/eW\/cG7kiTOg0OHD6g3jt15pTIFeFcwFnU0c55r7FeKO5WHOkc06FQ6UIYMHwAPn76qPaRJz6+PihbrSzOXjgrq7Bz787f6\/bsRJV6VZTfid+EcWXWvFlwKeeCDDkyiNBDW3duVfvTSeW6lbFjzw5UrFURBUsWxOiJozFywkjRpmq9qli1\/qcHDq2ztntt2Oe2R4WaFXD91nXR7msAewAIEMqPS1cuYf\/h\/UiYMCGaNWsmq\/nIBJgAE2ACTIAJGAAB9gAwgIfAU2ACTIAJMAEmwASYwK8E8ufPD\/rI4ujoiAoVKqBVq1Y4fPgwVm5fIj6W5pbIkz0\/yrm4oaRzGVUxJ\/vFtmMcxNHZknwf+eKfiV7wvnYJb969gX16e7Rp0hY13Grinu9ddOrfERSTfvGaxdixfztWzFolwtns3L8DsxfPwq27t4RS0ylrDgzuPkQYCab+bwpOnj+JJdOWBpvnP5O8RLiQ4b29RP3KjSuwYOV8ZZx7Sj8HdG3tiXLFy4l7g8cOwokzx4UytXITNzSr1xyT504U92q3rIlWjVujdmWNJ8Cf5ASbgNZFYNAuZ5lPQevWb6cUvierQ1Zcunwp2D3amb9qiUZBSsrcJi2aBLtPFzbWNmqd7wNfcd67f2+1TvuE7tOHjARlK5XVviXO7WztgtWRkUC7UEia72Hc0S\/X\/QNRGwJo+\/ENOHnliJgmGRte+73Ey3fPkTxxSlQuWkud\/sKtM0FeAX3cvVSjT+pkaTFu6RBcvnMe2TPkEsr\/aq710KBcc9EvTxZndJ3ogf1nd6BasXqqLDIu\/LdxClpW7YyS+TVeFOpNHZ6YxDMV0nzu+6hSKfxPwbwFEd8yPoq5FBPK4A6tO4j7J8+cRMF8BWFpoQmd07FHRxw6piSXbt0RGdJlwN6DezFnwRwkSZwEvT2DvyPp7dLj8dPH2HtgL\/Ln0fxO3LV3Fy5evggaU9Zt2r4JCRMkVLwmTDBqwihMnjUZXdt1Rd7ceUHtPdp7YOq4qWhQu4GYk\/cVb\/Qa1AvpbNOBwlLlzpEbL16+wKLli9CsUTPkdMyJJ8+eiLYe7TxEXdWKVcX9Gf\/NEPW\/5kAQlWH8QTkRbty+oXhzJYAMKUS2OfKeoQ8Z6uQ5hSQibxwybtCHPEfoQ+8VGQrF\/5Qj\/Xqka\/mO01S0DYniWut3KLUjXvJIxjG6Jtl0lB\/6flF4Ojqam5sr\/50xh4WFhaiT8i94XxArb9KkCZInTy7O+QcTYAJMgAkwASZgGATYAGAYz4FnwQSYABNgAkyACTCBvxLIkiULDh06hPPnz2PBggXYs2cPrl69iuMXjojP+HkjUCBHYThmyoEsGbIhh0OuWBcqSCqbIrt72\/+9Pyo3dhNKe8823UDhcCjmfpeBnZE9iyPSpEojFO8DlLA7BXMXQAmXUkLZv23vVrTr3RaNazURivhrt65h6dolaNurNfau2Y9c2XNh3IyxuHjlAnI75RHP9PPnT1iiGBEGdR8srucsno2RU0agcpnK6NKqK06cPYGW3Zpjzri5qFjaDWUVQ8CZi6cVRd93MQenrE4oXrgElq5bgsa1myCHYnCg8jc5olEIP0ipSEWGnwmhSbCq\/PnyY8fuHSLJLyn9qNCue\/pQ+fTpkzj++kNbftKkScXtbRu2IXfO38PWkNwkSZKAFP3HDx4XCk1tefK5y7pfr2V9WI5SORrZd+hvYyWwTIgUSVKJBN83fK\/i7fvXcFcSAZctUAkWiuGOCs3h9qMbItyP9poKOroIj4Dr968gaaLk+PrtKwrnKK4OSYrYGb2WBlPuXr13Eav2LoJLzpIoX6iq2jYqTqQXxcNHD9VQRhT3v1KFSmI4ivXfe1BvEcbKwtwCJ8+eRNMGTcU92uVPO+j7ePZBC\/cWoq5apWq46H1R5An4db7EpUyJMjhy\/IhqHDhy4gjsbJR35dRxtTmN361jNxGDfsrsKUI+XVOpWLaiErLoA7zGeKF2tdpCcU31KZOnxOaVm1WF+cePH4WCv06NOkIxLw0Andp2Qq8umnBW+fLkQ5mqZai7UNCLk3D+IG8VSjAcG4u9vX1sXBaviQkwASbABJhAjCbABoAY\/fh48kyACTABJsAEmIAxEqAEi\/Sh8vTpU2zcuFEYBE6cOIFDZ\/aJD90jxVkmOwfkzJoHubPmFZ4CqZKlpltGX0jBTrvbp46cDtu0GkW2SwEXlKhZHGcvnkGjWo1B8feHjh+MXI65xTlBO3nuJEoqxoBRA0YLhpUUJT4pY0np\/87\/HVwLFRNKxS17tqgGgD2H94J2CpPCn3a4T\/5vEmpVqoV\/h00SMtxKV8Lzl88Vo8BIYQAoXri4kvB3oegjcwAUyldIGABqVaotdliHRY4QroMfDeo2wKq1q9C8TXMsnrdY7ArWFnv77m3tyxDPyYuAyvad21GkUBG1zbKVy3DoyCFMHj8Z2bJmw+p1q3Hjxg2RdJgakYKckgk7ZndEu1bt1H6ROZEGgEBFdlSW4nnKKjv9a4shPn\/5hOHzemHd\/qVwdiyqGgDevX+DrwFfhFfAr3MhT4HXfi\/w8LmvuJVMMQRoF22DAdVfuHUG1intcPraMbx48wypkqXRbq7Tc0mOQuBQfH9rK2t4X\/XGmOFjxDhkAKCcABcuXRCK+kePH6F4UY0BgzwEDu84LNrR8\/V96IvLVy8LjxdSwIdUypYqi\/bd2osQQZR\/4q7PXYwcMhIjxo0QO+IpT8WzF89QrnQ5MQ\/aJV+vZr1gourXqo91m9aBQgo5ZHIQ9woXLKwq\/4M1\/uVCO3kxeQbQLniK\/29mpkmG\/Evzv15qG59mjZoL\/\/fvRJ+4yg78OEpoLhMlTwUZWeIqO\/Hp2lzZfZ8sWQpYKKGXaPd9gMI94HsAKIwXhV2i3AXk2aP4DijngYpBUyuJsXJfu2i\/9+RZEKCwoudIMimk3Ffld5XmOgBfqE75fFbW+vnrF8WL6TM+KQZNep8pLBjdV76kos+xs0fFf3PatGmjPRyfMwEmwASYABNgAgZAgA0ABvAQeApMgAkwASbABJgAE4goASsrK7Rt21Z8Hjx4gL1794ocAqdOncLp06dx2\/em+KzfrQnXktEmE9LbZEB2xUvAJW8x2NtmjujQ0dJPxq+P7OClipbGsS0nhBhSVN69fwfnvM8JBRYpuEIrw3oNV2+9efsGN+\/egM+De6KO+iVJlATVKlTH1t1bMKDrQFG\/edcmxWhQUuQQOHH2uKLs81cSC+fBJSX0kCwO9g7YqhgNXr95jeTJgit6ZRvt49WbVyIsRzIMSw4AGpNi+c+fPR\/NWjdD9brVUcWtiojlT7u\/j504hsXLFouY7xTfP7SSyT4TqletjiUrliCdXTrUqVkH5y+eR58BfdC6RWuhUG3u3hxTZkxB30F90bdnX+TJlQdz5s3BkuVLsHfb3tBEh7teGgC0lbDhFhLODrTj37PBQPSY3Br\/LvfCP20mKYYUU5CXAJX3n\/x\/k\/j+ox8oFFB8iwTi3scvH5AMKdR21MfCzFJRFmv+SVc8b1m0qNIJnpNaYO6myejfTBPPXu2gy5Mg4wmF3Dl7\/ixuJ7mNBAkSIG8uzTtA4Z\/sM9iDwsJQ+B6KC58np8YjhqZBz57i7Z86e0oo9TNlzCSOFA4npFLStaTYbU+5BF6+eilC9pDXQP9h\/UGhfI6ePCpCVVE4H8oPQMUqjVUwUWSkoPLk6RPVAKAdpipY418utGWR4UV6t5AyPiJF23hT1rVsREQYVJ8Dx\/eDDACFChUSnjwGNTmeDBNgAkyACTABJgA2APBLwASYABNgAkyACTCBWELAzs4OHh4e6mpohyYlEz5y5Ij47N+\/H\/ce3RGfA6f2YubyychomwnF8pcUxoDs9k5CKakKMMATXeYAWLJ2MRasmI\/bPrfFbtvcTrnFjvM\/KYZpl\/\/YaaOx88BOsWs\/SeKksAlSLNJOWCo1ld3985b\/Dxcun4eDfRbsO7oPE4b+K+49ePxQHAeN1RgHxIXWjwdPHoTJABApOUHzjBM37PkUKrtVxtIFS4UyfuLUiSJWOk07fbr06Ni2I3p49hAeFVpL+e108rjJGuW+ouDv1b+XMBrUqlELvbppQqskS5YMG1ZuQOcenVG7oWbnfK6cuTBh9ARhcPhNYAQrtJWvERQRoW6pk1kpMfw9sHDbLGw6shq1SjaCqYkZrJJbg8L3aIftefj8Pt59eIv0VvbKrn6Nh8qtB9dhkyqdOvbw\/\/VCRuvMaF+rp6izTZVeGAs8KrfHpBUjcOTiPrjmLq221+WJNCJJJT8pxIsWKhrMO4TyAJABIIWyc92lkIt6j3bq12laB1kyZ8HE0RPFPavUVmjcujFev34d4jQpN4BzPmdQ6J9Xr1+haOGiIkwXxe4\/fvq4yDdQvnR50Td5Uo0B7Z3fu2DfpddvNbLpnZVFKvLl9f\/buw\/4qoq0gcMvpBEEEWkWSmCRJi2iSFOqUhZE7AUURNTFRURABURkaYIIKHZBcdFVURRWpIMCgqCoSC9qFEWqSyifIKF8887N3NyEJCTh5uYk+Z\/93Zw2Z2bOc26yOO+ZmbTWaX1n9A16FrGN\/+rQsqVvaCRMEEAAAQQQQMBbAgQAvPU8qA0CCCCAAAIIIBA0AR1XvUmTJvajmWpAYMOGDbJp0yb5\/PPPZfr06RL3mwkImM+\/Z062EwjHmgmFWzVsI60atTGNkxFBq4vXMpr+6YcycOQA6XJTF3nKvNVfr1Y98\/a\/SJXGl9jJN9Oq78ODH5LVa1aLzhvQ6IpGUq1ydflo9nTp8+TD\/kvqmCGDKpavKLMXzZaaZqLhMDPR5rWJE\/xqQ6YuH076SGpVq+W\/xm3o0CIZWc4mH\/8cAGaIkcwsrVu1Fv3oohP2aoO9DqOUctE0+3fuT3nYvhn88vMv2+F+9C1s7QmQsmG1bp26smzhMomPj5e\/zJAjZUonH8amZfOWqea9fZtvmJzTCk3lgCvzVIqhUVJJGvRDbRteL0vXLLRDATWp3VxKn3+hdGp2u7zy8TipseoTaRp7jfxhJgt+afozUr5MRala4VLbqK\/j+r+34A073Eq96g1lmclj+644eeT2wafVUdN+9s08mWImF657yeVSpPC5p6U52wMuEFcxpqKdIDrBDB1z5y13JstWAwA6Ge95xc6TTh06+c+tWLXCDoU14ekJ9q19PaHfyS1bt6Q7eWzLZi1l9vzZog37bqJgDQToBMIrv14p\/Xr5AiFVLqliy1q+crl0aJs0F4Luaw8D7SWQ5pIYE9MhddJb3P3r8DssJgCweoVlaNUq9\/dm4HkigAACCCCQFwUK5sWb4p4QQAABBBBAAAEEThfQgEC9evWkc+fOMmnSJNmzZ4+dSPihhx6SGjVqmAbXo7Ly++Uy\/JXB0uXRG+WbDV+dnkkeOTLvs3lSxbydP2LAKGlSv4lER0fL5h8227s7eSL1Rj0dF\/vzFZ\/LPbd3l+533CvVL6lhG7B1ImBdAsfd7tT2Blm0bKEs\/mKxtGneVgoV8k36eknFyjbtgqXzbZlarn4+WfCJDBj5uBmPO8Ge10Zq11CvB1yjtTuW0XxsZil+uDHAM\/r2c4rL7a423qfW+J9a2pTHdNx0fQvb3VPK87qvkwanbPxPLV1WjuXEEECunjrGe4+OD9vx2yd\/8oI93Oyy1tKlzX3y9tzXpcvQDtJ\/4n2m0b+IPHHPaP\/wP\/d2fEiqVahlAwXdR9wo\/5n\/htzV7n65oMTFLutk6+4deskRM2TQv+e8lux4sHbcs4spHyObtm4SHYO\/aeOmybJv0qCJxP0SJ2s3rJXAMfQvj73cPvuZn8608wTs2rNLHhn4iPzy6y9pTiitGbdq1sr2KPgx7kfbA0CPNWnYRJYuXyrR5verfr36ekh0jP4WV7eQISOHyOrvVtux+ucunCsvTXpJ7r7j7nS\/d0UK+4ZkmjVvlui8BWda3O\/jmdKddj7jnW9Ou9RrB3RS5y0\/bbY9PBo2TJrfw2v1pD4IIIAAAgjkZwF6AOTnp8+9I4AAAggggEC+FogwE0vqkA1u2Ia9e\/fKjBkzZPz48baXwMOjHpDRfSeY4YGu9oyTG3okIxXauft3mTHn49OS1o+9Ui6ve4UsXLZAvl37jdStGSvaiN\/bvN2vS1pzAOhkvzoh8NKVS+TOGztL0XOKytzP5tjhfvQ67WHhluvbdpJxrz4rO3btkFfGvOoOm54BleTvrdrL+zPfk3IXlpPr2nSUtRvXypBnBkvXW7vZCT418TnR58j6TevspMN1atSWwoljo89ZPEcaX9E4w\/n4Cw7YcI2WYeGZ6wEQkEWu3nSN16arR7YsRc0b99NGLEgz78plq8r7w+f7z2t92je5Sdo1ukH2xe+W4ueWsEMD+ROYjSLRRc0cAoPMZKv9zMTA+6RksdLJhuuaMnhGYHITGLhI3hk6O9mxYO44Qx1up2SJkqJD4VSrUi1ZESXOLyE1qtawk\/NWr1rdf67cxeXsG\/xv\/ectmfCybyLsLrd1kaEDh8rwZ4ZL\/IF422vAf0HixqXVL7VBIZ1EuEwpX88QHXZIl5ZNW\/rH5df9l8a9JP0H95d2N7Wzw3ppHbvd2U2efOxJPZ3m0qB+A6lZvab06t9L7ulyj7Ru6evxktYF7ncprfP54fimHzZZ49q1a9u5PPLDPXOPCCCAAAII5DYBAgC57YlRXwQQQAABBBBAIJsESpUqJT169LDzCAwcOFDGjh0rz775tKcCAK7Bzb3FnR7FOtOA\/tATvU5Log3yt1x3i3z13Sq59YFb5ZQZfkSH1Hm810CZOfdjWbNhzWnXuAOP9nxURk0cJVe0qWcnX9V5A\/7z0rtym8nnOzPmf+XEN\/xjysVIbK3LZPtvv5geBle5y+366SdGy1PPDJEhY5+UJ0YPktIlS9uJg3vf29uf7sb2N8n8JfPk5h43yrTXPpD6sfWlRpUa0vepPnLXLXfL8MdGSEby8WcYsOEMz6YHQEB2uW7TNV5nJpgUipvU77QOCZTeEhkRleZb\/+ldF+xzBQr4OpLrEDjrvlyXZvafffpZqud0uJ6+\/+xrfj+2i07Oq8FIXXre29Of\/vctv\/u33cbaFUkTZ+uxUiVLyd6f9rrT\/rUGH9548Q0bzNuzd49UKFfBf85tbN94+rBR+ndA66zDDOlwQeHh4anmP\/nFyXJbt9ts4MPll5m1+w5m5hqvpt21d6etWqVKlbxaReqFAAIIIIBAvhcgAJDvvwIAIIAAAggggAACyQW0MW7MmDEydepU2WXeov9t969Stky55IlyeO9MDWgLpy06Yw0nPTvZDjkSf3C\/XFjmIpv+5g43J7tu41LfsEDuYGMzXNCsqZ\/aCYB12BE3DM7PX5\/emKjXaE8AbUQMXIoVLSbj\/zVBRg8eIzr8SbmLyp02LMlVV14lG5ZsMg2R+jZ0cXv53Hfni05CrL0DdMlIPjZhih8nT56wR\/JrAMAFj7wWAEjxmDy9637\/XDApK5XVPFJrmM9KXmldo7+jWSnDzbGRVr5uDoD0JgxP69q8dnzfH74ATJkyyefryGv3yf0ggAACCCCQmwV8r27k5jug7ggggAACCCCAAAJBF9DGuQYNGth8Z312+jA6QS8wkxkGq+FNx993jf+ZqYK+te8a\/wOvO378uOiY2LMWzJLv1n0rd97QOfB0sm0dUqj8xadPhOsS6TNwjf\/umDb6pwwonCkfd61bu0bbsExOAuyuzzPrbBoCKM\/4pHMjwQgApJO950+54JFzyGyFs3pdZssJRfp9+\/fZYi644IJQFEcZCCCAAAIIIJAFgeSvI2UhAy5BAAEEEEAAAQQQyJsCOgzQzJkz5f0570jn67pJkcJFc\/xGw8N8\/3zVMce9uOw\/sF\/qXRtrq9ar+0P+IYG8VNfwcN9wK2nNdeClumZHXegBcPaqrgE7WIG4s69RaHNwPQD2\/bFPnhj2hB0KSIdD0r9L1sQEl3Rt\/6dr89FzGnw7YXrgJCT4JvsOba2zpzT9m6dLyZIls6cAckUAAQQQQACBsxYgAHDWhGSAAAIIIIAAAgjkTYH69etLixYtZPHixfLlmi\/kmkZtc\/xGC5hx0nU5ZRrbvLiUKlFKpjz3lpQqUVpqVa\/lxSr6exC4ngCerGQ2Vso1XmfXJMDZWHXPZO0awPNrAODQ4UP2WehcAa++mTTJd2YfUMHEuRQye52X0ruhxPLr3xMvPQvqggACCCCAQFoCBADSkuE4AggggAACCCCAgLRt29YGAFavX+WJAIBrtPU34nrwGbVo0tKDtUqqUn5ttHUCrtHVDePijrNGIKMCOsmwLoWiCplJvq+WMBOY1J4lYaaH0raftsgW8+nQ6jq7r3+r9Lz+3i37epns+99eadaguVQoW0GaXtnM5pPTP5auWiL39Osqn09bJmUvLJup6px\/ns9i1apV0rNn0iTOmcqExAgggAACCCCQrQIEALKVl8wRQAABBBBAAIHcLdC8eXN7A2u3rvHEjSS9+V\/AE\/WhErlPwD8EkGmQZUEgKwJuHo4SxUvIKyOT9wCY+OZzNgAwZtBYiUgcbutYwjF5YMB9Em+Gy3l99GRp2qBZVor15DXtW3YQvWftKcaCAAIIIIAAAt4UYBJgbz4XaoUAAggggAACCHhCoHz58rYe\/4v\/w77BmtOVcm+ve7kHQE4bUX76AgXDvD2MVPq198ZZ13siv\/4euiDSyZNnDiLpxOC9h\/SSld9+KS+bYEFeavzXb2OFiyvY3g87duyQ3bt3e+MLSi0QQAABBBBAIJkAAYBkHOwggAACCCCAAAIIBAqUKlVKYmJi5PCfh2TRyvmBp9hGIFcK+McspwdArnx+Xqi0m4w8qUdS6rXScfH7jXhElqz8PM3G\/w8+nSbX3fN3qX3tpdKpR0dZtHyhP7PvNnwnN9x3vfz828\/S9ZG7pG6b2vL3rm1l\/tJ5\/jS6ocMKPTqynzS6\/kq5ov1lcv\/jPWT779uTpXn7o6nS6o4WUrNVdWnftZ1M+eCNZOd1J+7Xn+SuPp1tOTfe3ylZXfT8\/KXz5ZaeN8ll7epIg45X2GGDftnxi1xlhkHS4Ozll19uJzrWtCwIIIAAAggg4B0BAgDeeRbUBAEEEEAAAQQQ8KTAoEGDbL1em\/aC\/HXsqCfrSKUQyKhA0lvrZ357O6N5ki5\/CfiDSKaBP61FG8QHjn5cZi38RF4a8Uqqb\/5Peu91GTRmgFQsV0meGfSsxNb0Nd67Bv5Dhw\/K2k3fS7e+d0nJ80vKgAcHSlRklPQc9ID8+vuvtuiE4wnS5eHO8uU3X0qfHn1lSJ+hsnvfLunYvb3s2bfHplm8fJE8Nf5JadO0jYwf8pw0rNdQhj8\/TKbP\/jBZ9TXfan+rJo8+8JgkmGGLeg1+ULSBX5e5n88x5d4vVSpWlZGPPi23XXeHbNi6QR584gFp3rCFTbN\/\/345ceKE3eYHAggggAACCHhHgDkAvPMsqAkCCCCAAAIIIOBJgW7dusmECRNkw4YN0nvkAzL+8ZclulC0J+tKpRA4k0BYwTCbxA0ndab0nEcgpUBYuO87dPJU2gGAf014SqbP8TWw\/\/DLD9KsoW8+FZeXNu6\/MGWidLy2k2n8H2sPtzYN9Hv\/2COjX35arr26tUtqGttvl\/vv\/Ifd17ftr76psSxfvcw2wr\/333flh5+3yby3F0il8n+zabSsZjdfJc+bsfmH9x8hX61ZZSYdjpF+9z9qz19z1bV2gmI3lJEr6L477pde3Xrb3To16togwvot6+wwP199\/5VcfWVTm58maNOsrURGRMq418fK4hWL7DWjRo2SiIgIu80PBBBAAAEEEPCOAD0AvPMsqAkCCCCAAAIIIOBJAX3bdfr06aLzAawzkwEPGNdH9K1TFgRyo0BSD4DcWHtv1Tm\/BlHcEEDpzQEwbdb78sKwl6Rl41Yy7rWxsvWnLcke3sZtG+Xw\/x2S2tVrizayu0\/lmEvkl99+lv\/F\/8+fvkFsQ\/\/2RWUuksjISDMs2\/\/ZY2s3fm\/yqONv\/NeDRQoXEW3k\/3b9NzZNzWq1bJ7d+3eT\/y6YKQcOHZDHew6QTm1usOfdj0b1GrtNqXFJDSkcXVh27PzNHnuy9xB5Y+wUu73fTGasQYWff4uz+ydP+AIhFSpUsPv8QAABBBBAAAFvCdADwFvPg9oggAACCCCAAAKeFKhataosWrRIGjduLF+vXykfLXhfbm3bOeR1dZOPhrxgCswzAu6t5\/zaeB2MB+ns3FA4wcgzN+Xh7ju9OQBGD3hG9I3+y2rWkzZdrpFH\/tVHPnp9hn1rXu91xy5fw\/rQ8UNSvXV3Xk+ef16JZGkiwyPlZOJQOzrW\/wWlLkh2XnfKmGO7ls61x9u37GDLe\/WdV+x8BFr\/Zg2ay7B+I6R0ydL+a0uXLOPf1kBZRHiEHE8s5+ChgzL2tTGyYNl800thrxQrWkw0GKFLVFSkXR85csSu+YEAAggggAAC3hKgB4C3nge1QQABBBBAAAEEPCtQuXJl0SEedNnww7ocqadOqqmLa8TNkUpQaK4WcN8d14idq28mhyrvfg9dQ3gOVSPHig0P971H5xxSq0j7Vh3s4VIlSslg8\/b85h83yfhJ4\/xJzzUN6Lq89+I0Wbdg42mfS6vU9KdNr9dK8WLF7Rv9\/sSJGwcOxkv5i8r7D+sQQqv+u1qmTnhH7uzURVZ8s1z+Odg3rJBLlF45fYf3kVmLPjFDET0gs96cLas\/\/U7uufVee2mBAr5mBcb\/d5KsEUAAAQQQ8JYAAQBvPQ9qgwACCCCAAAIIeFqgdu3atn4bTQAgJxtQ02uo8jQglctxAX8AQJgEOKsPw4197yyzmk9uvc7dt3M4031c37qTHQpo0ruv2aFzNH3lCpXtZQu\/WGjnVNF5VfQze\/GnMnjsoAwPs1Y5prKZjHe9HDLDCblF\/zavMkP0VKlU1R564\/3JMvKF4faN\/ob1GokO59PlxrvNsEPrJb0ghsvvmJkQeOmqJdL1pm7S9eZ7pFrl6qJ\/g7f8uNkmcR4EAJwYawQQQAABBLwlQADAW8+D2iCAAAIIIIAAAp4WiI2NlZiYGNm593dZ+KVveIlQVtg1VhUIZaGUlacECB6d\/eN0wT\/X8Hv2OeauHMIL+noAnDqZ8SCSDrdTtEhR6T+ir22sjylXUdo2bycffjpN3v5oqn2L\/4uvl4lOHqxD+kRFRmUI5W7TKK8N74+PelT27NsjOrmwTiKs4\/Pf1O5mm0el8pVEgwAz5n1sy9b5B5auXCKxl8ZmqDeVTvZbq2ot0frp8D9Hjh6RmfNnyJQP3rT5u9+pY8eOZajOJEIAAQQQQACB0AoQAAitN6UhgAACCCCAAAK5WkCH\/OjXr5+9hxGvPClfrfsypPfj3rjNrw2PIcXOo4W5xkrXiJ1HbzNbb8sF4PKrYVhEmPV1f48ygq1j7T\/Z+ykzFv8O08g\/1F4yov8oad6whQx7fqjUa1fXBgd06KB\/dn0oI1naNDrE0Jtj35JtcVulUacr5TKTz5IvP5OXR7wq9eteadM0a9hcetxxv0x88zmJbVNbOnZvb8bwP1fGDXkuw+X0va+\/6ZVw3FdG2zryzoy35a3xU20AYfe+3Taf\/DokVIYRSYgAAggggEAOCfheXcihwikWAQQQQAABBBBAIPcJ9OzZU7Zs2SITJ06UV99\/QerXahiymziVOAeAa8QNWcEUlGcECB7lmUeZYzcSHub7z2jXIymwIr269Rb9pLboUED6ccu5phH+mSeelRGPjZLde3dL2QvL2qF13Pmrr2wqPyyLc7v+9Zp5yedgqVf7cpn\/ziL5Y\/8fNk2J4sknDdaDj\/3jcfvZuWenncC3cHRhf35plfPN7DX+NDp00Mevz7Q9AAoVKiRFzylqz21d8qPc9uAtdlt7h7EggAACCCCAgPcE6AHgvWdCjRBAAAEEEEAAAU8LaOP76NGjRd\/23Bq3Sf469lfI6uveuHWTToasYArKMwL+4JEZJ50liwLmb4Au+bUHQHhEYgDglG9S8iwq+i\/TIXbKXVQuWeO\/\/2QmNrThP7XG\/8AsLix9oQQ2\/geey8i29jhwjf8ufbj5\/wJdUguIuDSsEUAAAQQQQCDnBAgA5Jw9JSOAAAIIIIAAArlWIDo6WqpVqybaIB\/3248hu4+TiY22\/kbckJVMQXlFwPUAoPk\/rzzR0N9HwQK+\/4zOzBwAoa9l6EosHH2OLezw4cOhK5SSEEAAAQQQQCDDAgQAMkxFQgQQQAABBBBAAIFAgbp169rd9du+DzycrdtuCCDXiJuthZF5nhRw351TQgggqw\/YzQGQXwndEED5tQdEyu+NTm6sS3x8fMpT7COAAAIIIICABwQIAHjgIVAFBBBAAAEEEEAgNwq0bt3aVnv5t0tDVv2kHgAhK5KC8piAv\/cI7f957MmG7nbCw4M7BFDoap49JRUvVtxmvG\/fvuwpgFwRQAABBBBA4KwECACcFR8XI4AAAggggAAC+VegcePG9ubjdoRwCKCTJ2yZbgiO\/KvPnWdVwH136AGQVUHxj1WfXw39AYDEScmzLpk3rryozMX2RrZt25Y3boi7QAABBBBAII8J+F5dyGM3xe0ggAACCCCAAAIIZL\/AsGHDbCHxB\/fLP4Z2lfCwCAkrGGYnB9ZhVvzbBcLE7puJIo8fTzDzBpzy7Zu0gUNouG2dXDgszPfP1DCTT0HN03w0Dzfc0La4H2TMi6NtQ6Rep5NP2o+Zk0CHCSpg0upayzpx4oScMIED3T\/h0iUGElyZJ06ctHWLiooyeRaUBFNPvU7z1LVbTprrEo4fN8eO+9fHzb7WTT96rd02k6TafT1ujulb538e+dNep3nqPUaYiT918s\/IiAiJjIyUiHCzbdZah+hC0WY\/QgpFFRKdbyEq0qzNMd+nkL3Wd3+++9b6aRn+j5hBWgL3dTsxzf74\/fZ24n6OkxUrV9hr3PW61rrZupsrXAOvc9J7sfen91rQd4+6b+8p8dlr46i9j8goiYzy3aPP1T9wjC0\/p374ewDkVAUoN9cL6HeeJUmg7qWxdmfevHlJB9lCAAEEEEAAAc8IEADwzKOgIggggAACCCCAQO4S+P5739j\/2li+dsuakFb+51\/j5IU3Joa0zLxW2OQpk0U\/oVpsYMAEPAoXLiyFChWyQQLdLhxd2AY5NLgRVcgEDUyaCBMU0aCB3Y6MsMEQPabBCc3HfkyQKDzCfHTtjiWuNWCkeek5X0ApzB8c+SnuJ3vLGrTYsXe7DVzZPDQfDWJpGWbtxnkPlQ\/l5E4B\/R7l94BA3Rp1pUTxkhIXFyfr1q2TWrVq5c6HSa0RQAABBBDIowIEAPLog+W2EEAAAQQQQACB7BZYtmyZbN26VY4dOyYJCQl2rW\/L6xvx9q37VLZdI647H\/g2ttvW6\/Wji0vn8tRyVq1aJZUqVZJzzz3Xvnnu3kgPXLtGOfc2e2prV56u9VptRD569KjNUxuoXcNxYOOebRw26fQ+9OManrW8M320sTvw\/v\/66y9rlnL9559\/2nroPev24cOH7b5uu486BN6vWulb+hn57N69W\/bu3StVqlSxebhrNA9d1FzvRY8HGum5tO5R66LntM7uu6D3FXhves7ek+kJ4YXl+IkE6TOhe7pV8QUGEgMQ2kPDfLSnhj53ddL7ViN\/7xfXW0WDCAXDzXkNJoT5er2Y3hOuJ4tbm24aNrgRGRElESbo4Hq76HntYaHPwD\/RrulA4XqT2J4mplxTuMmhgM033PQY0fpqz5GIMF8dtV5aZz3nO67f2YBjJp1+pzO7aLV0sfXzbZ7xp34v9Ptw9K+j9nuva\/f9OJZwzF7vvm+647Z9fVeS9pOdUwN7IHFl9u3vRUBPFfeMfCnS\/pnyXtx+amt3THPb\/ONm4296HBkU7XF06PBBOXDooBz+85CcND2LtBeNnvN99O+Er8eSXht4ziRI3E9ytdeYo\/rc9TsXYT6Bz9n9\/dFnq\/fp+97oOqlHktvW75bPxhiZZ65p9dmnl6d7BlrX9BbN97KasbJg2QL795kAQHpanEMAAQQQQCD0AgXMPyqY\/ir07pSIAAIIIIAAAggggEC+EnCBARfQ0MZfF9Bwa9cg7NYaXHIBJr3eBRHcOuWxwH0N5rgAUmDgQo9t3rzZ9kIoUqSIzd+V4cpz+\/nhAWkjrwY1NAChDck2WGC3fYEDG0BIPGeDCCbt99tWy+Ejh6Rm9ZoSUyHGF6AygR01P3L0iH995MgRf6N\/frDMa\/eoDfs28GCevy\/YoN8R1+NGA01J27\/+vl3iD8ZL586dZerUqXmNgvtBAAEEEEAgVwvQAyBXPz4qjwACCCCAAAIIIIBA7hBwvSbOOeecXFFhfU9KAwoajNCGbbfWbT2ub09rGg0oaMBAgxKBAYjAbW1k13SaJnCt12t+Ln8X2NC1Bi3cG9i61rSBgQzd1mP60fRaPxc4Cdx2ebtjgfu6beufYHqjmE9ml\/Wb1ot+MrLo89eeNTq0k64Dt3XOCLfo\/eiS1jq9c3pNSiO3bzNN50egtSY70\/7OnTttHcuWLWtz1fTaYK49k4oXLy7FihWz3xE97j72DXz\/2\/m+3gvuXMq1q4Me13sI\/I7pdyvlR5+jfjStWwduu2OBa5eHfn\/cduDalWvCcPYeM\/LjwIEDGUlGGgQQQAABBBAIoQA9AEKITVEIIIAAAggggAACCCCAgJcEtEHYBQfcOjBI4I65tZ7TN\/s3btwoderUsfM36PBWOll1yrUes5NYm0Z\/bfxmyV0C+t0IDAicaVvT63dCgyAsCCCAAAIIIOAdAQIA3nkW1AQBBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAgaAJ8BpG0CjJCAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAAB7wgQAPDOs6AmCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAvsFfKcAAASMSURBVAgETYAAQNAoyQgBBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAe8IEADwzrOgJggggAACCCCAAAIIIIAAAggggAACCCCAAAIIBE2AAEDQKMkIAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAHvCBAA8M6zoCYIIIAAAggggAACCCCAAAIIIIAAAggggAACCARNgABA0CjJCAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAAB7wgQAPDOs6AmCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggETYAAQNAoyQgBBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAe8IEADwzrOgJggggAACCCCAAAIIIIAAAggggAACCCCAAAIIBE2AAEDQKMkIAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAHvCBAA8M6zoCYIIIAAAggggAACCCCAAAIIIIAAAggggAACCARNgABA0CjJCAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAAB7wgQAPDOs6AmCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggETYAAQNAoyQgBBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAe8IEADwzrOgJggggAACCCCAAAIIIIAAAggggAACCCCAAAIIBE2AAEDQKMkIAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAHvCBAA8M6zoCYIIIAAAggggAACCCCAAAIIIIAAAggggAACCARNgABA0CjJCAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAAB7wgQAPDOs6AmCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggETYAAQNAoyQgBBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAe8IEADwzrOgJggggAACCCCAAAIIIIAAAggggAACCCCAAAIIBE2AAEDQKMkIAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAHvCBAA8M6zoCYIIIAAAggggAACCCCAAAIIIIAAAggggAACCARNgABA0CjJCAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAAB7wgQAPDOs6AmCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggETYAAQNAoyQgBBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAe8IEADwzrOgJggggAACCCCAAAIIIIAAAggggAACCCCAAAIIBE2AAEDQKMkIAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAHvCBAA8M6zoCYIIIAAAggggAACCCCAAAIIIIAAAggggAACCARNgABA0CjJCAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAAB7wgQAPDOs6AmCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggETYAAQNAoyQgBBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAe8IEADwzrOgJggggAACCCCAAAIIIIAAAggggAACCCCAAAIIBE2AAEDQKMkIAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAHvCPw\/WE0\/uQk0i44AAAAASUVORK5CYII=\" alt=\"Difference between DHS &amp; CDC vaccination rates\" width=\"768\" \/><\/p>\n<p class=\"caption\">Difference between DHS &amp; CDC vaccination rates<\/p>\n<\/div>\n<\/div>\n<div id=\"table\" class=\"section level3\">\n<h3>table<\/h3>\n<div id=\"htmlwidget-dc9dd4a2a422fb4b28bb\" class=\"reactable html-widget\" style=\"width: auto; height: auto;\"><\/div>\n<p><script type=\"application\/json\" data-for=\"htmlwidget-dc9dd4a2a422fb4b28bb\">{\"x\":{\"tag\":{\"name\":\"Reactable\",\"attribs\":{\"data\":{\"county\":[\"Calumet\",\"Clark\",\"Sawyer\",\"Washington\",\"Grant\",\"Waukesha\",\"Rusk\",\"Trempealeau\",\"Ashland\",\"Adams\",\"Langlade\",\"Columbia\",\"Manitowoc\",\"Outagamie\",\"Marinette\",\"Jefferson\",\"Bayfield\",\"Kenosha\",\"Polk\",\"Vilas\",\"Vernon\",\"Rock\",\"Buffalo\",\"Milwaukee\",\"Juneau\",\"Shawano\",\"Winnebago\",\"Barron\",\"Forest\",\"St Croix\",\"Sauk\",\"Dane\",\"Florence\",\"Chippewa\",\"Portage\",\"Richland\",\"Crawford\",\"Green Lake\",\"Burnett\",\"Menominee\",\"Pierce\",\"Ozaukee\",\"Dunn\",\"Waupaca\",\"Lincoln\",\"Iowa\",\"Oneida\",\"Taylor\",\"Price\",\"Green\",\"Waushara\",\"Washburn\",\"Jackson\",\"Pepin\",\"Lafayette\",\"Walworth\",\"La Crosse\",\"Marquette\",\"Eau Claire\",\"Door\",\"Wood\",\"Racine\",\"Douglas\",\"Dodge\",\"Fond Du Lac\",\"Brown\",\"Sheboygan\",\"Marathon\",\"Kewaunee\",\"Oconto\",\"Iron\",\"Monroe\"],\"DHS rate\":[51.1,34,52.4,51,45.2,60.9,38.3,61.6,61.7,49.1,48.7,60.1,53.9,56.7,47.2,50.9,66.4,50.1,50.8,59.2,50.2,54.9,56.3,54.6,46.5,42.9,54.7,49.8,46.8,55.8,57.4,72.6,47,52.2,52.7,54.1,52.4,51.1,50.5,69,49.7,62.6,44.9,49.7,50.3,62.8,59.7,32.2,52.8,57.6,41.2,59.8,45.6,48.6,52,47.4,61.7,48.3,56.5,71,52.9,53.3,58.9,46.3,49.3,57.5,55.2,52.1,47.3,48.3,58.1,45.5],\"CDC rate\":[51.6,34.6,55.1,53.3,51.1,64.2,38.1,60.4,64.1,52.5,50.6,61.4,55.9,58.6,49.5,52.6,76,54,47.1,62.2,51.1,63.2,46.8,57.7,48.5,49.2,56.2,49.8,55.7,45.2,58.2,75.2,52.9,52.7,57.1,54.5,53.8,51.4,52.6,71.2,40.4,65.7,45,50.2,51.5,63.8,61.5,32.8,57.8,58.7,41.6,59.4,46.2,46.3,55.5,49.5,62.9,49.7,56.7,72.8,56.8,55.1,39.9,47.7,51.1,59,56.6,55.1,48.4,49.3,62.6,48.9],\"difference\":[-0.5,-0.6,-2.7,-2.3,-5.9,-3.3,0.2,1.2,-2.4,-3.4,-1.9,-1.3,-2,-1.9,-2.3,-1.7,-9.6,-3.9,3.7,-3,-0.9,-8.3,9.5,-3.1,-2,-6.3,-1.5,0,-8.9,10.6,-0.8,-2.6,-5.9,-0.5,-4.4,-0.4,-1.4,-0.3,-2.1,-2.2,9.3,-3.1,-0.1,-0.5,-1.2,-1,-1.8,-0.6,-5,-1.1,-0.4,0.4,-0.6,2.3,-3.5,-2.1,-1.2,-1.4,-0.2,-1.8,-3.9,-1.8,19,-1.4,-1.8,-1.5,-1.4,-3,-1.1,-1,-4.5,-3.4]},\"columns\":[{\"accessor\":\"county\",\"name\":\"county\",\"type\":\"character\"},{\"accessor\":\"DHS rate\",\"name\":\"DHS rate\",\"type\":\"numeric\"},{\"accessor\":\"CDC rate\",\"name\":\"CDC rate\",\"type\":\"numeric\"},{\"accessor\":\"difference\",\"name\":\"difference\",\"type\":\"numeric\"}],\"searchable\":true,\"defaultPageSize\":10,\"showPageSizeOptions\":true,\"pageSizeOptions\":[10,25,50,100],\"paginationType\":\"numbers\",\"showPageInfo\":true,\"minRows\":1,\"striped\":true,\"inline\":true,\"dataKey\":\"4839ec664aebb1aa10d91357927b765a\",\"key\":\"4839ec664aebb1aa10d91357927b765a\"},\"children\":[]},\"class\":\"reactR_markup\"},\"evals\":[],\"jsHooks\":[]}<\/script><\/p>\n<\/div>\n<\/div>\n<div id=\"data-collection-procedures\" class=\"section level2\">\n<h2>Data collection procedures<\/h2>\n<p>Calculating vaccination rates requires not just counting the number of vaccine courses distributed, but also figuring out where the receiving arms reside. People may receive their vaccine dose(s) in a different jurisdiction than the one they live in.<\/p>\n<p>The CDC and DHS perform both steps differently. The CDC casts a wider net, collecting vaccine statistics from more providers than the DHS. But the DHS is better at figuring out the actual residence of vaccine recipients. These two limitations cause significant under-counts in different places.<\/p>\n<p>The DHS collects its vaccine data from the Wisconsin Immunization Registry (WIR). After providing any vaccination (not just COVID), the medical provider updates that patient\u2019s record in the WIR. The WIR also includes the patient\u2019s current address. To calculate county-level vaccination rates, the DHS simply geocodes the address on file.<a id=\"fnref3\" class=\"footnote-ref\" href=\"#fn3\"><sup>3<\/sup><\/a><\/p>\n<p>However, the DHS clarified in an email that \u201cveteran and tribal vaccinations aren\u2019t reported to the state, but they are reported federally.\u201d<a id=\"fnref4\" class=\"footnote-ref\" href=\"#fn4\"><sup>4<\/sup><\/a><\/p>\n<p>The CDC <a href=\"https:\/\/www.cdc.gov\/coronavirus\/2019-ncov\/vaccines\/distributing\/reporting-counties.html\">describes its process here<\/a>. They receive data on doses administered from a wide range of sources, including typical providers like clinics and pharmacies but also FEMA, \u201cdialysis centers participating in the Federal Dialysis Center Program, \u2026. [and] federal entity facilities (e.g., Department of Defense, Veterans Health Administration, Indian Health Service, and Bureau of Prisons).\u201d Perhaps the V.A. isn\u2019t the only federal agency whose vaccinations aren\u2019t reported to the DHS.<\/p>\n<p>With this data, \u201cCDC makes every effort to determine the county of residence for all administered and reported doses; however, . . . CDC has excluded from county-level summary measures vaccination records missing county of residence.\u201d<\/p>\n<p>If the CDC can\u2019t match a vaccine recipient to their county of residence, they count it toward the state\u2019s vaccination total, but don\u2019t allocate it to a county. As of 2021-12-01, the CDC included 109,658 fully vaccinated inviduals in Wisconsin\u2019s total which they couldn\u2019t match to any particular county. The DHS performs much better on this metric. They left only 22,887 vaccinated individuals unassigned.<\/p>\n<\/div>\n<div id=\"sources-of-undercount\" class=\"section level2\">\n<h2>Sources of undercount<\/h2>\n<p>The DHS doesn\u2019t count vaccinations by tribal governments, while the CDC does. This explains large under-counts in the DHS data for Bayfield, Forest, and Shawano counties. Bayfield County is home to the Red Cliff Band, who conducted their own vaccination campaign. Ten percent of Bayfield County identified as Native American in the 2020 Census. The CDC\u2019s vaccination rate is 10 percentage points higher than that of DHS.<\/p>\n<p>Likewise, 8% of Shawano County (home to the Stockbridge-Munsee nation) is Native American. The CDC\u2019s vaccination rate is 6 points higher than that of DHS. And the CDC rate is 9 percentage points higher in Forest County, where two tribal governments are located and 13% of the population is Native American.<\/p>\n<p>In most counties, the CDC counts only slightly more fully vaccinated residents than the DHS. I suspect these smaller differences are due to vaccines distributed by other federal agencies (like the V.A.) and only counted by the CDC.<\/p>\n<p>What about Douglas and the other counties bordering Minnesota where the DHS counts a much <em>higher<\/em> number of vaccine recipients than the CDC? Here is where the Wisconsin Immunization Registry (WIR) shines. WIR has a reciprocal data sharing agreement with the state of Minnesota.<a id=\"fnref5\" class=\"footnote-ref\" href=\"#fn5\"><sup>5<\/sup><\/a> Recall that the DHS counts 58.9% of Douglas county\u2019s population as fully vaccinated, while the CDC thinks only 39.9% is. It\u2019s entirely believable to me that 19% of Superior, Wisconsin\u2019s population gets medical care in their much larger neighbor of Duluth, Minnesota. A similar pattern likely repeats itself in the Wisconsin exurbs of the Twin Cities.<\/p>\n<p>Thanks to the data-sharing agreement, all these Wisconsinites getting vaccinated in Minnesota have their medical records properly updated in WIR, and consequently correctly counted by the DHS. Because the CDC counts so many fewer vaccinated individuals in these counties, I suspect they are failing to identify the Wisconsin county of residence for those receiving vaccines in Minnesota. I don\u2019t know if these individuals are counted toward the state totals for Minnesota or Wisconsin.<\/p>\n<p>I remain confused by a couple of counties where the CDC counts significantly more vaccinated individuals, but there isn\u2019t a tribal government or large Native American population to explain the gap. Most notably, these include Rock, Florence, and Grant Counties. Perhaps there are large federal vaccination programs in these counties I\u2019m not aware of.<\/p>\n<\/div>\n<div id=\"implications-for-accurate-county-statistics\" class=\"section level2\">\n<h2>Implications for accurate county statistics<\/h2>\n<p>Ideally, either the DHS would start collecting statistics from the tribes and federal agencies. But since the WIR has been around for 20 years, that kind of change seems unlikely. More plausibly, the CDC could change their methodology to incorporate the address-matching already being done by the WIR.<\/p>\n<p>Both the CDC and DHS statistics have geographically-specific issues. Because the DHS doesn\u2019t include tribal vaccinations, it at least seems best to use the CDC\u2019s numbers for Bayfield, Forest, and Shawano counties. On the other hand, the pattern of counties on Minnesota\u2019s border being undercounted in the CDC data seems too obvious to ignore.<\/p>\n<p>At minimum, I recommend using CDC data for the three counties mentioned above and DHS data for counties where the DHS total exceeds that of the CDC. For the remaining counties, I think the CDC is a better source as it incorporates vaccines distributed by federal agencies.<\/p>\n<p>In reality, this kind of ad hoc adjustment isn\u2019t practical for daily trackers like those maintained by the <em>Milwaukee Journal Sentinel<\/em> or the <em>New York Times<\/em>. The MJS makes good use of the more granular geographies (tract zip code) provided by the DHS but not the CDC. The NYT tracker covers the entire country, so they need a consistent, national dataset. They are unlikely to incorporate data from individual states using manual judgment calls. Still, analysts studying and modeling vaccination rates at the county level would likely benefit from considering these data accuracy improvements.<\/p>\n<p>Another way to improve the county-level dataset is to use 2020 census counts as the denominator for calculating total-population vaccination rates. Currently, the CDC and DHS both use the Census Bureau\u2019s 2019 population estimate. This is because the Census Bureau hasn\u2019t yet released detailed age tables from the 2020 census, and the DHS\/CDC need consistent population counts across their various age-specific statistics.<\/p>\n<p>Most of the differences between the 2019 estimate and the 2020 count are small, but some of them are substantial. Sawyer and Door Counties grew by 9%, Bayfield and Iron by 8%. Menominee County shrank by 7%.<\/p>\n<p>Adding all these steps together makes changes that matter. It must concern Douglas County greatly whether they are among the worst vaccine laggards or are in fact better than average. When we substitute the more recent census count into the denominator, suddenly Menominee County has the highest vaccination rate in the state at 76.1%. Wisconsin\u2019s smallest, poorest, and least white county\u2013essentially coterminous with the Menominee Nation\u2013has a higher vaccination rate than even Dane County. That is a significant fact, but it\u2019s currently obscured by less accurate statistics.<\/p>\n<div id=\"comparison-of-total-population-vaccination-rates-from-the-cdc-and-wi-dhs-based-on-either-the-2019-population-estimate-or-the-2020-census-count\" class=\"section level4\">\n<h4>Comparison of total population vaccination rates from the CDC and WI DHS, based on either the 2019 population estimate or the 2020 census count<\/h4>\n<div id=\"htmlwidget-30fefe02838b18043c0b\" class=\"reactable html-widget\" style=\"width: auto; height: auto;\"><\/div>\n<p><script type=\"application\/json\" data-for=\"htmlwidget-30fefe02838b18043c0b\">{\"x\":{\"tag\":{\"name\":\"Reactable\",\"attribs\":{\"data\":{\"name\":[\"Calumet\",\"Clark\",\"Sawyer\",\"Washington\",\"Grant\",\"Waukesha\",\"Rusk\",\"Trempealeau\",\"Ashland\",\"Adams\",\"Langlade\",\"Columbia\",\"Manitowoc\",\"Outagamie\",\"Marinette\",\"Jefferson\",\"Bayfield\",\"Kenosha\",\"Polk\",\"Vilas\",\"Vernon\",\"Rock\",\"Buffalo\",\"Milwaukee\",\"Juneau\",\"Shawano\",\"Winnebago\",\"Barron\",\"Forest\",\"St Croix\",\"Sauk\",\"Dane\",\"Florence\",\"Chippewa\",\"Portage\",\"Richland\",\"Crawford\",\"Green Lake\",\"Burnett\",\"Menominee\",\"Pierce\",\"Ozaukee\",\"Dunn\",\"Waupaca\",\"Lincoln\",\"Iowa\",\"Oneida\",\"Taylor\",\"Price\",\"Green\",\"Waushara\",\"Washburn\",\"Jackson\",\"Pepin\",\"Lafayette\",\"Walworth\",\"La Crosse\",\"Marquette\",\"Eau Claire\",\"Door\",\"Wood\",\"Racine\",\"Douglas\",\"Dodge\",\"Fond Du Lac\",\"Brown\",\"Sheboygan\",\"Marathon\",\"Kewaunee\",\"Oconto\",\"Iron\",\"Monroe\"],\"dhs_2019\":[51.1,34,52.4,51,45.2,60.9,38.3,61.6,61.7,49.1,48.7,60.1,53.9,56.7,47.2,50.9,66.4,50.1,50.8,59.2,50.2,54.9,56.3,54.6,46.5,42.9,54.7,49.8,46.8,55.8,57.4,72.6,47,52.2,52.7,54.1,52.4,51.1,50.5,69,49.7,62.6,44.9,49.7,50.3,62.8,59.7,32.2,52.8,57.6,41.2,59.8,45.6,48.6,52,47.4,61.7,48.3,56.5,71,52.9,53.3,58.9,46.3,49.3,57.5,55.2,52.1,47.3,48.3,58.1,45.5],\"cdc_2019\":[51.6,34.6,55.1,53.3,51.1,64.2,38.1,60.4,64.1,52.5,50.6,61.4,55.9,58.6,49.5,52.6,76,54,47.1,62.2,51.1,63.2,46.8,57.7,48.5,49.2,56.2,49.8,55.7,45.2,58.2,75.2,52.9,52.7,57.1,54.5,53.8,51.4,52.6,71.2,40.4,65.7,45,50.2,51.5,63.8,61.5,32.8,57.8,58.7,41.6,59.4,46.2,46.3,55.5,49.5,62.9,49.7,56.7,72.8,56.8,55.1,39.9,47.7,51.1,59,56.6,55.1,48.4,49.3,62.6,48.9],\"reconciled_2019\":[51.6,34.6,55.1,53.3,51.1,64.2,38.3,61.6,64.1,52.5,50.6,61.4,55.9,58.6,49.5,52.6,76,54,50.8,62.2,51.1,63.2,56.3,57.7,48.5,49.2,56.2,49.8,55.7,55.8,58.2,75.2,52.9,52.7,57.1,54.5,53.8,51.4,52.6,71.2,49.7,65.7,45,50.2,51.5,63.8,61.5,32.8,57.8,58.7,41.6,59.8,46.2,48.6,55.5,49.5,62.9,49.7,56.7,72.8,56.8,55.1,58.9,47.7,51.1,59,56.6,55.1,48.4,49.3,62.6,48.9],\"dhs_2020\":[48.8,34.1,48,50.7,44.8,60.5,38.3,59.4,59.9,48.1,47.9,59.1,52.3,55.9,45.5,50.8,61.6,50.2,49.5,57,50.4,54.8,55.1,55,46.4,42.9,54.8,48.2,45.9,54.1,56.2,70.7,44.3,50.9,53,53.9,52.5,50.8,47.1,73.9,50.3,61,44.8,48.9,48.8,62.7,56.2,32.9,50.2,57.4,41.1,56.6,44.5,48.4,52.2,46.2,60.3,48.2,55.9,65.3,52,52.9,57.4,45.5,48.9,56.6,53.9,51.2,47,47,53.8,45.5],\"cdc_2020\":[49.3,34.7,50.5,53,50.6,63.8,38.1,58.2,62.2,51.4,49.8,60.4,54.3,57.7,47.7,52.5,70.5,54.1,45.8,59.9,51.3,63.1,45.8,58.1,48.4,49.2,56.3,48.2,54.6,43.8,57,73.2,49.8,51.4,57.4,54.3,53.9,51.1,49.1,76.2,40.9,64.1,44.9,49.4,50,63.7,57.8,33.5,54.9,58.5,41.5,56.2,45.1,46.1,55.7,48.3,61.5,49.6,56.1,67,55.9,54.7,38.9,46.9,50.7,58.1,55.3,54.2,48.1,48,58,48.9],\"reconciled_2020\":[49.3,34.7,50.5,53,50.6,63.8,38.3,59.4,62.2,51.4,49.8,60.4,54.3,57.7,47.7,52.5,70.5,54.1,49.5,59.9,51.3,63.1,55.1,58.1,48.4,49.2,56.3,48.2,54.6,54.1,57,73.2,49.8,51.4,57.4,54.3,53.9,51.1,49.1,76.2,50.3,64.1,44.9,49.4,50,63.7,57.8,33.5,54.9,58.5,41.5,56.6,45.1,48.4,55.7,48.3,61.5,49.6,56.1,67,55.9,54.7,57.4,46.9,50.7,58.1,55.3,54.2,48.1,48,58,48.9]},\"columns\":[{\"accessor\":\"name\",\"name\":\"county\",\"type\":\"character\"},{\"accessor\":\"dhs_2019\",\"name\":\"DHS\",\"type\":\"numeric\"},{\"accessor\":\"cdc_2019\",\"name\":\"CDC\",\"type\":\"numeric\"},{\"accessor\":\"reconciled_2019\",\"name\":\"Reconciled\",\"type\":\"numeric\"},{\"accessor\":\"dhs_2020\",\"name\":\"DHS\",\"type\":\"numeric\"},{\"accessor\":\"cdc_2020\",\"name\":\"CDC\",\"type\":\"numeric\"},{\"accessor\":\"reconciled_2020\",\"name\":\"Reconciled\",\"type\":\"numeric\"}],\"columnGroups\":[{\"name\":\"2019 estimate as denominator\",\"columns\":[\"dhs_2019\",\"cdc_2019\",\"reconciled_2019\"]},{\"name\":\"2020 count as denominator\",\"columns\":[\"dhs_2020\",\"cdc_2020\",\"reconciled_2020\"]}],\"searchable\":true,\"defaultPageSize\":10,\"paginationType\":\"numbers\",\"showPageInfo\":true,\"minRows\":1,\"striped\":true,\"inline\":true,\"dataKey\":\"6358be58608462211388c8d9ebabf854\",\"key\":\"6358be58608462211388c8d9ebabf854\"},\"children\":[]},\"class\":\"reactR_markup\"},\"evals\":[],\"jsHooks\":[]}<\/script><\/p>\n<\/div>\n<\/div>\n<div class=\"footnotes\">\n<hr \/>\n<ol>\n<li id=\"fn1\"><a class=\"uri\" href=\"https:\/\/www.dhs.wisconsin.gov\/covid-19\/vaccine-data.htm\">https:\/\/www.dhs.wisconsin.gov\/covid-19\/vaccine-data.htm<\/a><a class=\"footnote-back\" href=\"#fnref1\">&#x21a9;\ufe0e<\/a><\/li>\n<li id=\"fn2\"><a class=\"uri\" href=\"https:\/\/www.cdc.gov\/coronavirus\/2019-ncov\/vaccines\/distributing\/reporting-counties.html\">https:\/\/www.cdc.gov\/coronavirus\/2019-ncov\/vaccines\/distributing\/reporting-counties.html<\/a><a class=\"footnote-back\" href=\"#fnref2\">&#x21a9;\ufe0e<\/a><\/li>\n<li id=\"fn3\"><a class=\"uri\" href=\"https:\/\/data.dhsgis.wi.gov\/datasets\/covid-19-vaccination-data-by-county\/about\">https:\/\/data.dhsgis.wi.gov\/datasets\/covid-19-vaccination-data-by-county\/about<\/a><a class=\"footnote-back\" href=\"#fnref3\">&#x21a9;\ufe0e<\/a><\/li>\n<li id=\"fn4\">from an email with Daphne Chen of the <em>MJS<\/em><a class=\"footnote-back\" href=\"#fnref4\">&#x21a9;\ufe0e<\/a><\/li>\n<li id=\"fn5\"><a class=\"uri\" href=\"https:\/\/journals.lww.com\/jphmp\/fulltext\/2015\/05000\/completeness_and_accuracy_of_the_wisconsin.7.aspx\">https:\/\/journals.lww.com\/jphmp\/fulltext\/2015\/05000\/completeness_and_accuracy_of_the_wisconsin.7.aspx<\/a><a class=\"footnote-back\" href=\"#fnref5\">&#x21a9;\ufe0e<\/a><\/li>\n<\/ol>\n<\/div>\n<\/div>\n<p><script><\/p>\n<p>\/\/ add bootstrap table styles to pandoc tables\nfunction bootstrapStylePandocTables() {\n  $('tr.odd').parent('tbody').parent('table').addClass('table table-condensed');\n}\n$(document).ready(function () {\n  bootstrapStylePandocTables();\n});<\/p>\n<p><\/script><\/p>\n<p><!-- tabsets --><\/p>\n<p><script>\n$(document).ready(function () {\n  window.buildTabsets(\"TOC\");\n});<\/p>\n<p>$(document).ready(function () {\n  $('.tabset-dropdown > .nav-tabs > li').click(function () {\n    $(this).parent().toggleClass('nav-tabs-open');\n  });\n});\n<\/script><\/p>\n<p><!-- code folding --><\/p>\n<p><!-- dynamically load mathjax for compatibility with self-contained --><br \/>\n<script>\n  (function () {\n    var script = document.createElement(\"script\");\n    script.type = \"text\/javascript\";\n    script.src  = \"https:\/\/mathjax.rstudio.com\/latest\/MathJax.js?config=TeX-AMS-MML_HTMLorMML\";\n    document.getElementsByTagName(\"head\")[0].appendChild(script);\n  })();\n<\/script><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The Federal Centers for Disease Control (CDC) and the Wisconsin Department of Health Services (DHS) both independently collect COVID-19 vaccination statistics. Their statistics for the state of Wisconsin vary. Statewide, the CDC counts 3,469,836 fully vaccinated individuals (as of 2021-12-01), while the DHS counts 3,268,304 (as of 2021-12-02). This gap of 201,532 is too large [&hellip;]<\/p>\n","protected":false},"author":207,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"ocean_post_layout":"","ocean_both_sidebars_style":"","ocean_both_sidebars_content_width":0,"ocean_both_sidebars_sidebars_width":0,"ocean_sidebar":"","ocean_second_sidebar":"","ocean_disable_margins":"enable","ocean_add_body_class":"","ocean_shortcode_before_top_bar":"","ocean_shortcode_after_top_bar":"","ocean_shortcode_before_header":"","ocean_shortcode_after_header":"","ocean_has_shortcode":"","ocean_shortcode_after_title":"","ocean_shortcode_before_footer_widgets":"","ocean_shortcode_after_footer_widgets":"","ocean_shortcode_before_footer_bottom":"","ocean_shortcode_after_footer_bottom":"","ocean_display_top_bar":"default","ocean_display_header":"default","ocean_header_style":"","ocean_center_header_left_menu":"","ocean_custom_header_template":"","ocean_custom_logo":0,"ocean_custom_retina_logo":0,"ocean_custom_logo_max_width":0,"ocean_custom_logo_tablet_max_width":0,"ocean_custom_logo_mobile_max_width":0,"ocean_custom_logo_max_height":0,"ocean_custom_logo_tablet_max_height":0,"ocean_custom_logo_mobile_max_height":0,"ocean_header_custom_menu":"","ocean_menu_typo_font_family":"","ocean_menu_typo_font_subset":"","ocean_menu_typo_font_size":0,"ocean_menu_typo_font_size_tablet":0,"ocean_menu_typo_font_size_mobile":0,"ocean_menu_typo_font_size_unit":"px","ocean_menu_typo_font_weight":"","ocean_menu_typo_font_weight_tablet":"","ocean_menu_typo_font_weight_mobile":"","ocean_menu_typo_transform":"","ocean_menu_typo_transform_tablet":"","ocean_menu_typo_transform_mobile":"","ocean_menu_typo_line_height":0,"ocean_menu_typo_line_height_tablet":0,"ocean_menu_typo_line_height_mobile":0,"ocean_menu_typo_line_height_unit":"","ocean_menu_typo_spacing":0,"ocean_menu_typo_spacing_tablet":0,"ocean_menu_typo_spacing_mobile":0,"ocean_menu_typo_spacing_unit":"","ocean_menu_link_color":"","ocean_menu_link_color_hover":"","ocean_menu_link_color_active":"","ocean_menu_link_background":"","ocean_menu_link_hover_background":"","ocean_menu_link_active_background":"","ocean_menu_social_links_bg":"","ocean_menu_social_hover_links_bg":"","ocean_menu_social_links_color":"","ocean_menu_social_hover_links_color":"","ocean_disable_title":"default","ocean_disable_heading":"default","ocean_post_title":"","ocean_post_subheading":"","ocean_post_title_style":"","ocean_post_title_background_color":"","ocean_post_title_background":0,"ocean_post_title_bg_image_position":"","ocean_post_title_bg_image_attachment":"","ocean_post_title_bg_image_repeat":"","ocean_post_title_bg_image_size":"","ocean_post_title_height":0,"ocean_post_title_bg_overlay":0.5,"ocean_post_title_bg_overlay_color":"","ocean_disable_breadcrumbs":"default","ocean_breadcrumbs_color":"","ocean_breadcrumbs_separator_color":"","ocean_breadcrumbs_links_color":"","ocean_breadcrumbs_links_hover_color":"","ocean_display_footer_widgets":"default","ocean_display_footer_bottom":"default","ocean_custom_footer_template":"","ocean_post_oembed":"","ocean_post_self_hosted_media":"","ocean_post_video_embed":"","ocean_link_format":"","ocean_link_format_target":"self","ocean_quote_format":"","ocean_quote_format_link":"post","ocean_gallery_link_images":"on","ocean_gallery_id":[],"footnotes":""},"categories":[349,122],"tags":[],"class_list":["post-29844","post","type-post","status-publish","format-standard","hentry","category-lubar-center","category-public","entry"],"_links":{"self":[{"href":"https:\/\/law.marquette.edu\/facultyblog\/wp-json\/wp\/v2\/posts\/29844","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/law.marquette.edu\/facultyblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/law.marquette.edu\/facultyblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/law.marquette.edu\/facultyblog\/wp-json\/wp\/v2\/users\/207"}],"replies":[{"embeddable":true,"href":"https:\/\/law.marquette.edu\/facultyblog\/wp-json\/wp\/v2\/comments?post=29844"}],"version-history":[{"count":11,"href":"https:\/\/law.marquette.edu\/facultyblog\/wp-json\/wp\/v2\/posts\/29844\/revisions"}],"predecessor-version":[{"id":29855,"href":"https:\/\/law.marquette.edu\/facultyblog\/wp-json\/wp\/v2\/posts\/29844\/revisions\/29855"}],"wp:attachment":[{"href":"https:\/\/law.marquette.edu\/facultyblog\/wp-json\/wp\/v2\/media?parent=29844"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/law.marquette.edu\/facultyblog\/wp-json\/wp\/v2\/categories?post=29844"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/law.marquette.edu\/facultyblog\/wp-json\/wp\/v2\/tags?post=29844"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}